systemd-modules-load ne trouve pas de modules

Sep 01 2020

Étant donné un module du noyau, my-module.ko, j'ai suivi les étapes suivantes pour essayer de charger automatiquement le module au démarrage:

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

Quelle que soit la variante que j'essaie, l'erreur est toujours la même:

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

Plus précisément « Impossible de trouver le module ». Je peux courir modprobe my-moduleet le module est découvert et chargé très bien. J'ai passé sous silence les sources de systemd et libkmod, et le répertoire du module par défaut est /lib/modules/$(uname -r)comme prévu. Le nom est également comparé aux différents fichiers modules.dep, modules.aliasetc., de sorte que le service devrait techniquement être en mesure de le trouver.

Que puis-je essayer de plus pour que cela fonctionne? Je préférerais utiliser le service systemd-modules-load plutôt que d'écrire mon propre service qui fait pratiquement la même chose.

Spécifications du système: ARMv7, Debian, noyau Linux v4.9.37, Systemd v241-7 ~ deb10u2; Remarque: depmod est un lien vers busybox

Réponses

TekuConcept Sep 02 2020 at 23:13

En y regardant de plus près depuis libkmod, j'ai découvert qu'il modules.dep.binétait utilisé comme fichier source de référence comme joint à modules.dep.

ls -al /sbin | grep depmod a abouti depmod -> /bin/busybox

Changer les choses:

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

Maintenant, tout fonctionne à merveille! Il s'avère que la version busybox de depmod ne mettait pas à jour correctement le module.dep.binfichier - d'où la raison pour laquelle systemd « Impossible de trouver le module ».