Debian
systemd-modules-load 找不到模組
給定一個核心模組 my-module.ko,我採取了以下步驟來嘗試在啟動時自動載入模組:
cp my-module.ko /lib/modules/$(uname -r)/my-module.ko echo my-module >> /etc/modules-load.d/my-module.conf # alt: echo my-module >> /etc/modules echo my-module.ko: >> /lib/modules/$(uname -r)/modules.dep # alt: depmod systemctl restart systemd-modules-load # alt: reboot the machine
無論我嘗試什麼變化,錯誤總是一樣的:
● systemd-modules-load.service - Load Kernel Modules Loaded: loaded (/lib/systemd/system/systemd-modules-load.service; static; vendor preset: enabled) Active: failed (Result: exit-code) since <date>; 9s ago Docs: man:systemd-modules-load.service(8) man:modules-load.d(5) Process: 318 ExecStart=/lib/systemd/systemd-modules-load (code=exited, status=1/FAILURE) Main PID: 318 (code=exited, status=1/FAILURE) Feb 14 03:19:58 localhost systemd[1]: Starting Load Kernel Modules... Feb 14 03:19:58 localhost systemd-modules-load[318]: Failed to find module 'my-module' Feb 14 03:19:58 localhost systemd[1]: systemd-modules-load.service: Main process exited, code=exited, status=1/FAILURE Feb 14 03:19:58 localhost systemd[1]: systemd-modules-load.service: Failed with result 'exit-code'. Feb 14 03:19:58 localhost systemd[1]: Failed to start Load Kernel Modules.
特別是“找不到模組”。我可以執行
modprobe my-module
並且模組被發現並載入得很好。我忽略了 systemd 和 libkmod 的原始碼,預設的模組目錄/lib/modules/$(uname -r)
與預期的一樣。還將名稱與各種文件modules.dep
、modules.alias
等進行比較,因此從技術上講,服務應該能夠找到它。我還能嘗試什麼來使它正常工作?我更喜歡使用 systemd-modules-load 服務,而不是編寫自己的服務來做幾乎相同的事情。
系統規格:ARMv7、Debian、Linux Kernel v4.9.37、Systemd v241-7~deb10u2;注意:depmod 是busybox 的simlink
在從 libkmod 內部仔細檢查後,我發現它
modules.dep.bin
被用作參考源文件,與modules.dep
.
ls -al /sbin | grep depmod
產生depmod -> /bin/busybox
改變事情:
rm /sbin/depmod apt install kmod ln -s /usr/bin/kmod /sbin/depmod depmod
現在一切都很順利!原來,busybox 版本的 depmod 沒有正確更新
module.dep.bin
文件——因此為什麼 systemd “找不到模組”。