systemd-module-load modülleri bulamıyor

Sep 01 2020

Bir çekirdek modülü olan my-module.ko verildiğinde, modülü önyükleme sırasında denemek ve otomatik olarak yüklemek için aşağıdaki adımları attım:

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

Hangi varyasyonu denediğim önemli değil, hata her zaman aynı:

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

Özellikle " Modül bulunamadı ." Çalıştırabilirim modprobe my-moduleve modül keşfedildi ve çok iyi yüklendi. Systemd ve libkmod için kaynakları gözden geçirdim ve varsayılan modül dizini /lib/modules/$(uname -r)beklendiği gibi. Ayrıca adı çeşitli dosyalar karşılaştırılır modules.dep, modules.aliasvb hizmeti teknik olarak bulmak mümkün olmalıdır böylece.

Bunu çalıştırmak için daha ne yapabilirim? Neredeyse aynı şeyi yapan kendi hizmetimi yazmak yerine systemd-module-load hizmetini kullanmayı tercih ederim.

Sistem Özellikleri: ARMv7, Debian, Linux Kernel v4.9.37, Systemd v241-7 ~ deb10u2; Not: depmod, busybox'a bir simlinktir

Yanıtlar

TekuConcept Sep 02 2020 at 23:13

Libkmod içinde daha yakından incelendiğinde, modules.dep.binbunun atıfta bulunulduğu gibi referans kaynak dosyası olarak kullanıldığını keşfettim modules.dep.

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

İşleri değiştirmek:

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

Şimdi her şey güzel çalışıyor! Depmod'un busybox sürümünün module.dep.bindosyayı düzgün şekilde güncellemediği ortaya çıktı - bu nedenle systemd " Modül bulunamadı "