module.ko
커널 모듈( )을 제공하고 부팅 시 자동으로 로드되어야 하는 타사 라이브러리가 있습니다 . 그러나 module.ko
특정 버전의 Linux 커널에 종속되지 않으며 여러 버전에서 작동합니다. module.ko
해당 소스는 미리 컴파일되어 있지 않습니다 .
이 타사 라이브러리에 대한 RPM 패키지를 만들고 있으므로 SPEC 파일이 만들어집니다.
나의 첫 번째 접근 방식은 를 사용 lib/modprobe.d
하고 lib/modules-load.d
시작 시 lib/modules/$(uname -r)
자동으로 로드하는 것이었습니다 module.ko
. 이것은 훌륭하게 작동하지만 Linux 커널을 업그레이드할 때마다 패키지를 다시 설치하고 싶지 않습니다. 이는 SPEC 파일에서 가 현재 커널 버전인 에 module.ko
복사되기 때문입니다.lib/modules/$(uname -r)
$(uname -r)
두 번째 접근 방식 은 를 사용하여 부팅 시 커널을 로드하는 서비스를 만드는 것입니다 insmod
. 커널을 .modprobe
modprobe
lib/modules/$(uname -r)
내 질문은 두 번째 접근 방식이 이를 달성하는 유일한 방법인지 아니면 더 좋은 방법이 있는지입니다.
답변1
insmod
/lib/modprobe.d/mymodule.conf
서비스를 제공하는 대신 회선을 제공할 수 있습니다.
install mymodule insmod /path/to/mymodule.ko
나는 이것을 시도했고 기존 모듈을 예로 사용하여 fedora 22에서 잘 작동합니다 slip
.
$ cd /lib/modules/4.2.8-200.fc22.x86_64/extra/drivers/net/slip/
$ lsmod|grep slip
$ sudo modprobe slip
$ lsmod|grep slip
slip 20480 0
slhc 20480 1 slip
$ sudo rmmod slip
$ lsmod|grep slip
$ sudo mv slip.ko.xz ~
$ sudo modprobe slip
modprobe: ERROR: could not insert 'slip': Unknown symbol in module, or unknown parameter
$ sudo sh -c 'echo install slip insmod /home/meuh/slip.ko.xz >/lib/modprobe.d/mymodule.conf'
$ sudo modprobe slip
$ lsmod|grep slip
slip 20480 0
slhc 20480 1 slip