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)
2番目のアプローチは、ブート時にカーネルをロードするサービスを作成することですinsmod
。カーネルを 。modprobe
modprobe
lib/modules/$(uname -r)
私の質問は、2番目のアプローチがこれを達成する唯一の方法か、より良い方法があるかです。
ベストアンサー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