RPMを使用してLinuxカーネルのバージョンに依存しないカスタムLinuxカーネルモジュールをロードする方法

RPMを使用してLinuxカーネルのバージョンに依存しないカスタムLinuxカーネルモジュールをロードする方法

module.koカーネルモジュール()を提供し、起動時に自動的にロードする必要があるサードパーティのライブラリがあります。ただし、module.ko特定のバージョンのLinuxカーネルに依存せず、複数のバージョンで動作します。module.koそのソースはプリコンパイルされていません。

このサードパーティのライブラリ用のRPMパッケージを作成しているため、SPECファイルが作成されます。

私の最初のアプローチは、を使用しlib/modprobe.dlib/modules-load.d起動時にlib/modules/$(uname -r)自動的にロードすることでしたmodule.ko。これはうまく機能しますが、Linuxカーネルをアップグレードするたびにパッケージを再インストールしたくありません。これは、SPECファイルから現在のカーネルバージョンにmodule.koコピーされているためです。lib/modules/$(uname -r)$(uname -r)

2番目のアプローチは、ブート時にカーネルをロードするサービスを作成することですinsmod。カーネルを 。modprobemodprobelib/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

おすすめ記事