systemd-module-load modülleri bulamıyor
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
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ı "