Kernel-Modules
如何使用 RPM 載入不依賴於 Linux 核心版本的自定義 Linux 核心模組
我有一個第 3 方庫,它提供了一個核心模組 (
module.ko
),並且需要在啟動時自動載入。但是,module.ko
它不依賴於特定版本的 Linux 核心,並且可以跨多個版本工作。注意我沒有module.ko
; 它是預編譯的。我正在為這個第 3 方庫創建一個 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)
.我的問題是第二種方法是否是實現這一目標的唯一方法,或者是否有更好的方法?
insmod
您可以提供一條/lib/modprobe.d/mymodule.conf
線路,而不是提供服務install mymodule insmod /path/to/mymodule.ko
slip
我試過這個,它在 Fedora 22 上執行良好,以現有模組為例。$ 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