systemd-modules-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-modules-load 서비스를 사용하는 것을 선호합니다.

시스템 사양 : ARMv7, Debian, Linux Kernel v4.9.37, Systemd v241-7 ~ deb10u2; 참고 : depmod는 busybox에 대한 simlink입니다.

답변

TekuConcept Sep 02 2020 at 23:13

libkmod 내에서 자세히 살펴본 결과 .NET Framework에 modules.dep.bin대한 참조 소스 파일로 사용되고 있음을 발견했습니다 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가 " 모듈을 찾지 못했습니다 ."