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
변경 사항이 중단될 수 있으므로 다시 적용해야 합니다)
인용하다: