2012-07-03 1 views
0

일반적인 GNU 시스템 대신 busybox가있는 내장 장치의 경우 rpm으로 패키징됩니다. busybox와 함께 설치하면 모듈을 설치하지만 scriplets를 실행하지 않습니다. 정상적인 시스템에서는 실행하고 실패합니다 (ofc, 다른 커널 버전).Busybox rpm scriplets

질문 : 어디서 잘못되었고 어떻게 해결할 수 있습니까?

# The kernel version you are building for 
%define kernel 3.4.0-rc6-01292-g9b8149d 

# The name of the module you are supplying 
%define modname ktgrabber 
# The path to the module, after it is installed 
%define modpath /lib/modules/%{kernel}/kernel/net/ipv4 

# Which revision are we on 
%define pkgrelease 1.SL 

# Is this a new module, or are we replacing an existing module 
# 1 - new module 
# 0 - replacing an existing module 
%define newmodule 1 

# Optional - what Architecture we are building for 
#%define thisarch ia32e 

Name: kernel-module-%{modname}-%{kernel} 
Summary: Kernel Module %{modname} for the %{kernel} kernel 
Version: 0.99 
Release: 1 
Epoch: 0 
License: GPLv2+ 
Packager: Troy Dawson <[email protected]> 
Group: System Environment/Kernel 
BuildRoot: %{_tmppath}/%{name}-%{version}-root 
#Requires: /boot/vmlinux-%{kernel}, modutils 
Provides: kernel-module-%{modname} = %{epoch}:%{version} 
Source0: %{modname}.ko.%{kernel} 

%description 
This package provides a %{modname} kernel module for 
kernel %{kernel}. 

%install 
mkdir -p $RPM_BUILD_ROOT/%{modpath} 

%if %{newmodule} 
    install -m 644 %{SOURCE0} $RPM_BUILD_ROOT/%{modpath}/%{modname}.ko 
%else 
    install -m 644 %{SOURCE0} $RPM_BUILD_ROOT/%{modpath}/%{modname}.%{version}.%{pkgrelease}.o 

%endif 
%pre 
touch /root/bar 
mkdir /alice 
%post 
touch /bar 
/bin/echo %{modname} >> /etc/modules 
depmod 
mkdir /foo 
depmod -ae %{kernel} >/dev/null 2>&1 
modprobe %{modname} 

%postun 
sed -i 's/^%{modname}$//g' /etc/modules 
%if %{newmodule} 
    depmod -ae %{kernel} >/dev/null 2>&1 || : 
%else 
    if [ "" = "0" ] ; then 
     if ! [ -f %{modpath}/%{modname}.original.o ] ; then 
      mv %{modpath}/%{modname}.o %{modpath}/%{modname}.original.o 
     fi 
     cp -f %{modpath}/%{modname}.%{version}.%{pkgrelease}.o %{modpath}/%{modname}.o 
     depmod -ae %{kernel} >/dev/null 2>&1 || : 
    fi 
%endif 


%files 
%if %{newmodule} 
    %{modpath}/%{modname}.ko 
%else 
    %{modpath}/%{modname}.%{version}.%{pkgrelease}.ko 
%endif 

답변