로드 가능한 모든 커널 모듈을 나열하는 방법은 무엇입니까?

로드 가능한 모든 커널 모듈을 나열하는 방법은 무엇입니까?

i2c-dev로드 할 커널 모듈을 찾고 있는데 i2c-bcm2708명령 modprobe이 반환됩니다.

sudo modprobe i2c-dev
modprobe: module i2c-dev not found in modules.dep

시스템에서 사용 가능한 모든 모듈을 나열하는 방법은 무엇입니까? 어느 디렉토리에 있습니까?

답변1

  • 기본적으로 모듈은 이 디렉터리에 있는 커널 하위 디렉터리 modprobe에서 로드됩니다. /lib/modules/$(uname -r)일반적으로 모든 파일에는 확장자가 있으므로 .ko다음을 사용하여 나열할 수 있습니다.

    find /lib/modules/$(uname -r) -type f -name '*.ko'
    

    또는 파일 압축을 고려해보세요.

    find /lib/modules/$(uname -r) -type f -name '*.ko*'
    
  • /lib/modules/$(uname -r)/modules.alias( 및 ) 에 저장된 별칭을 참조하여 각 모듈을 로드할 수도 있습니다 modules.alias.bin.

  • 그러나 모듈을 성공적으로 로드하려면 해당 종속성 (및 해당 바이너리 버전 )이 modprobe파일에 나열되어야 합니다 . 모듈이 시스템에 있지만 목록에 없으면 해당 종속성을 생성하고 자동으로 모듈을 into 및 out 에 포함시키는 명령을 실행해야 합니다 ./lib/modules/$(uname -r)/modules.depmodules.dep.bindepmodmodules.depmodules.dep.bin

  • 또한 모듈이 성공적으로 로드되면 파일에 나열됩니다 /proc/modules(명령을 통해 액세스할 수도 있음 lsmod).

답변2

Enter를 누르고 modprobeTab을 누르면 자동 완성 목록에 로드 가능한 모든 모듈이 포함되어야 합니다.

답변3

lsmod패키지 명령이 있습니다kmod아키텍처Linux.modinformmod modprobe

도착하다다음은 입력할 수 있는 패키지에서 제공하는 모든 바이너리입니다.

pacman -Ql kmod | grep /bin/ --color=always

, 확인할 수도 있습니다pacman -Qo lsmod.wner가 포함된 바이너리 패키지


Q스위치는로컬에 설치된 패키지 쿼리 S(에스동기화, 즉 원격 검사).

답변4

자동 완성이 어떻게 작동하는지 확인할 수 있습니다.

$ complete -p modprobe
complete -F _modprobe modprobe
declare -f _modprobe
_modprobe () 
{ 
...

해당 함수에는 내부_installed_modules

$ declare -f _installed_modules
_installed_modules () 
{ 
    COMPREPLY=($(compgen -W "$(PATH="$PATH:/sbin" lsmod |
        awk '{if (NR != 1) print $1}')" -- "$1"))
}

그러면 lsmod | awk '{if (NR != 1) print $1}'모듈 목록이 표시되어야 합니다.

관련 정보