systemd-modules-load non riesce a trovare i moduli

Sep 01 2020

Dato un modulo del kernel, my-module.ko, ho seguito i seguenti passaggi per provare a caricare automaticamente il modulo all'avvio:

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

Non importa quale variante provo, l'errore è sempre lo stesso:

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

In particolare " Impossibile trovare il modulo ". Posso eseguire modprobe my-modulee il modulo viene scoperto e caricato correttamente . Ho sorvolato sui sorgenti per systemd e libkmod e la directory dei moduli predefinita è /lib/modules/$(uname -r)come previsto. Anche il nome viene confrontato con i vari file modules.dep, modules.aliase così via in modo che il servizio di vista tecnico dovrebbe essere in grado di trovarlo.

Cos'altro posso provare per farlo funzionare? Preferirei usare il servizio systemd-modules-load piuttosto che scrivere il mio servizio che fa praticamente la stessa cosa.

Specifiche di sistema: ARMv7, Debian, Linux Kernel v4.9.37, Systemd v241-7 ~ deb10u2; Nota: depmod è un collegamento simulato a busybox

Risposte

TekuConcept Sep 02 2020 at 23:13

Dopo un'ispezione più attenta dall'interno di libkmod, ho scoperto che modules.dep.binveniva utilizzato come file sorgente di riferimento come previsto modules.dep.

ls -al /sbin | grep depmod ceduto depmod -> /bin/busybox

Cambiare le cose:

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

Ora tutto funziona magnificamente! Si scopre che la versione busybox di depmod non aggiornava correttamente il module.dep.binfile, ecco perché systemd " Impossibile trovare il modulo ".