모듈 자동 로딩을 위한 Linux 모듈 종속성 생성

모듈 자동 로딩을 위한 Linux 모듈 종속성 생성

Linux 커널 모듈 종속성을 수동으로 생성하는 방법은 무엇입니까?

예를 들어 특정 시점에 vboxdrv 모듈이 자동으로 로드됩니다. 그러나 이런 일이 발생하면 vfat 모듈도 자동으로 로드하고 싶습니다(예를 들어).

그렇다면 모듈 1이 로드될 때 모듈 2의 자동 로드를 트리거하는 종속성을 어떻게 생성합니까?

부팅 시 모듈을 로드하기 위해 initramfs를 사용할 필요는 없습니다. 말하자면 1이 로드되면 2도 로드되는 이러한 종속성을 원할 뿐입니다. 무슨 말인지 아시겠죠 ;-)

감사해요

답변1

/etc/modprobe.d/vboxdrv-includes-vfat.conf"소프트 종속성" 명령을 사용하여 구성 파일을 추가할 수 있습니다.

softdep vboxdrv post: vfat

매뉴얼 페이지modprobe.d(5)레코드 구문:

Softdep 모듈 이름 이전: module... 이후: module...

Softdep 명령을 사용하면 소프트 또는 선택적 모듈 종속성을 지정할 수 있습니다. modulename은 이러한 선택적 모듈을 설치하지 않고도 사용할 수 있지만 일반적으로 일부 기능이 누락됩니다. 예를 들어, 스토리지 HBA용 드라이버는 관리 기능을 사용하기 위해 다른 모듈을 로드해야 할 수도 있습니다.

pre-dep 및 post-deps 모듈은 modprobe가 modulename 매개변수에 지정된 기본 모듈 전후에 순서대로 설치(또는 제거)를 시도하는 다른 모듈의 이름 및/또는 별칭 목록입니다.

또는 softdep예상대로 작동하지 않는 경우(예: modprobe가 너무 오래되어 소프트 종속성을 이해할 수 없는 경우) 동일한 디렉터리에 있는 파일에 install 명령을 사용하여 모듈 삽입을 스크립트로 작성할 수 있습니다.

모듈 이름 명령 설치...

이 명령은 modprobe에게 평소처럼 모듈을 커널에 삽입하는 대신 명령을 실행하도록 지시합니다. 명령은 어떤 쉘 명령이라도 될 수 있습니다. 이를 통해 원하는 모든 종류의 복잡한 처리를 수행할 수 있습니다. 예를 들어, "fred" 모듈이 설치된 모듈 "barney"와 더 잘 작동하는 경우(하지만 이에 의존하지 않으므로 modprobe가 자동으로 로드하지 않음) "install fred /sbin/modprobe barney"라고 말할 수 있습니다. / sbin/modprobe --ignore-install fred", 이것이 원하는 작업을 수행합니다. --ignore-install은 두 번째 modprobe가 동일한 설치 명령을 다시 실행하는 것을 방지합니다. 아래 제거도 참조하세요.

추가 기능 모듈 종속성 제공 문제에 대한 솔루션으로서 이 명령의 장기적인 미래는 불확실하며, 향후 릴리스의 어느 시점에서 최종 제거 또는 더 이상 사용되지 않는다는 경고로 이 명령을 대체할 예정입니다.

답변2

다음과 같이 종속성을 정의하기 위해 줄을 추가할 수 있습니다.modules.dep

echo "${module1}: ${module2}" >> "/lib/modules/$(uname -r)/modules.dep"

(참고: 나중에 실행하면 depmod변경 사항이 중단될 수 있으므로 다시 적용해야 합니다)

인용하다:

https://linux.die.net/man/5/modules.dep

관련 정보