systemd-modules-load kann keine Module finden

Sep 01 2020

Bei einem Kernelmodul, my-module.ko, habe ich die folgenden Schritte ausgeführt, um zu versuchen, das Modul beim Booten automatisch zu laden:

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

Egal welche Variation ich versuche, der Fehler ist immer der gleiche:

● 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.

Insbesondere " Modul konnte nicht gefunden werden ." Ich kann laufen modprobe my-moduleund das Modul wird entdeckt und gut geladen. Ich habe die Quellen für systemd und libkmod beschönigt, und das Standardmodulverzeichnis ist /lib/modules/$(uname -r)wie erwartet. Auch wird der Name im Vergleich gegen die verschiedenen Dateien modules.dep, modules.aliasetc. so dass der Dienst sollte technisch in der Lage sein , es zu finden.

Was kann ich noch versuchen, um dies zum Laufen zu bringen? Ich würde es vorziehen, den Dienst systemd-modules-load zu verwenden, anstatt meinen eigenen Dienst zu schreiben, der praktisch dasselbe tut.

Systemspezifikationen: ARMv7, Debian, Linux Kernel v4.9.37, Systemd v241-7 ~ deb10u2; Hinweis: depmod ist ein Simlink zur Busybox

Antworten

TekuConcept Sep 02 2020 at 23:13

Bei näherer Betrachtung aus libkmod heraus stellte ich fest, dass modules.dep.bindiese als Referenzquelldatei verwendet wurde modules.dep.

ls -al /sbin | grep depmod gab nach depmod -> /bin/busybox

Dinge ändern:

rm /sbin/depmod
apt install kmod
ln -s /usr/bin/kmod /sbin/depmod
depmod

Jetzt funktioniert alles wunderbar! Es stellte sich heraus, dass die Busybox-Version von depmod die module.dep.binDatei nicht ordnungsgemäß aktualisiert hat - daher hat systemd " Modul konnte nicht gefunden werden ".