systemd-module-load ไม่พบโมดูล

Sep 01 2020

ด้วยโมดูลเคอร์เนล my-module.ko ฉันได้ทำตามขั้นตอนต่อไปนี้เพื่อลองโหลดโมดูลโดยอัตโนมัติเมื่อบูต:

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

ไม่ว่าฉันจะลองรูปแบบใดข้อผิดพลาดจะเหมือนเดิมเสมอ:

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

" ไม่พบโมดูล " โดยเฉพาะ ฉันสามารถเรียกใช้modprobe my-moduleและโมดูลถูกค้นพบและโหลดได้ดี ฉันตรวจสอบแหล่งที่มาของ systemd และ libkmod และไดเร็กทอรีโมดูลเริ่มต้นเป็นไป/lib/modules/$(uname -r)ตามที่คาดไว้ นอกจากนี้ยังมีชื่อถูกเมื่อเทียบกับไฟล์ต่างๆmodules.dep, modules.aliasฯลฯ เพื่อให้บริการทางเทคนิคควรจะสามารถที่จะหาได้

ฉันจะพยายามทำอะไรได้อีก ฉันต้องการใช้บริการโหลด systemd-module-load มากกว่าที่จะเขียนบริการของตัวเองซึ่งแทบจะเหมือนกัน

ข้อมูลจำเพาะของระบบ: ARMv7, Debian, Linux Kernel v4.9.37, Systemd v241-7 ~ deb10u2; หมายเหตุ: depmod เป็นซิมลิงค์ไปยัง busybox

คำตอบ

TekuConcept Sep 02 2020 at 23:13

เมื่อตรวจสอบอย่างใกล้ชิดจากภายใน libkmod ผมค้นพบว่าmodules.dep.binถูกนำมาใช้เป็นแฟ้มแหล่งที่มาอ้างอิง apposed modules.depเป็นไป

ls -al /sbin | grep depmod ให้ผล depmod -> /bin/busybox

การเปลี่ยนแปลงสิ่งต่างๆ:

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

ตอนนี้ทุกอย่างทำงานได้อย่างสวยงาม! ปรากฎว่า depmod เวอร์ชัน busybox อัปเดตmodule.dep.binไฟล์ไม่ถูกต้องด้วยเหตุนี้ systemd จึง " ไม่พบโมดูล "