Debian

systemd-modules-load 找不到模組

  • September 2, 2020

給定一個核心模組 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.depmodules.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 “找不到模組”。

引用自:https://unix.stackexchange.com/questions/607435