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 v4.9.37, Systemd v241-7 ~ deb10u2; Примечание: depmod - это ссылка на busybox
Ответы
При более внимательном рассмотрении из 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
Теперь все прекрасно работает! Оказалось, что версия depmod для busybox не обновляла module.dep.binфайл должным образом, поэтому systemd « Не удалось найти модуль ».