Linux에서 장치와 관련된 드라이버 (모듈)를 찾는 방법은 무엇입니까?

토터

Linux에서는 다음이 제공됩니다.

  • 예를 들어 /dev/sda, 장치 ,
  • 예를 들어 주 번호와 부 번호 8, 0,

어떤 모듈 / 드라이버가 "구동"하는지 어떻게 알 수 있습니까?

그것을 파헤 치 /sys거나 /proc발견 할 수 있습니까?

Graeme

sysfs장치 파일에 대해이 정보를 얻으려면 먼저의 출력을보고 주 / 부 번호를 확인합니다 ls -l. 예 :

 $ ls -l /dev/sda
 brw-rw---- 1 root disk 8, 0 Apr 17 12:26 /dev/sda

8, 0주 번호는 것을 우리에게 알려줍니다 8그리고 미성년자입니다 0. b목록의 시작은 또한 블록 디바이스 것을 우리에게 알려줍니다. 다른 장치는 c처음에 for character 장치를 가질 수 있습니다 .

그런 다음 아래를 보면 /sys/dev두 개의 디렉토리가 있음을 알 수 있습니다. 하나는 전화 block했고 다른 하나는 char. 여기서 당연한 사실은 이들이 각각 블록 및 문자 장치 용이라는 것입니다. 그러면 각 장치는이 디렉토리에있는 주 / 부 번호로 액세스 할 수 있습니다. 장치에 사용할 수있는 드라이버가있는 driver경우이 또는 device하위 디렉토리 에서 링크 대상을 읽어서 찾을 수 있습니다 . 예를 들어, /dev/sda나는 간단히 할 수 있습니다.

$ readlink /sys/dev/block/8\:0/device/driver
../../../../../../../bus/scsi/drivers/sd

이것은 sd드라이버가 장치에 사용됨을 나타냅니다 . 장치가 블록 또는 문자 장치인지 확실하지 않은 경우 셸에서이 부분을 *. 이것은 잘 작동합니다.

$ readlink /sys/dev/*/8\:0/device/driver
../../../../../../../bus/scsi/drivers/sd

블록 디바이스는 또한 중 하나를 통해 자신의 이름을 통해 직접 액세스 할 수 있습니다 /sys/block또는 /sys/class/block. 예 :

$ readlink /sys/block/sda/device/driver
../../../../../../../bus/scsi/drivers/sd

다양한 디렉토리의 존재 /sys는 커널 구성에 따라 변경 될 수 있습니다. 또한 모든 장치에 device하위 폴더 가있는 것은 아닙니다 . 예를 들어, /dev/sda1. 여기에서 전체 디스크에 대한 장치에 액세스해야합니다 (불행히도 이에 대한 sys링크 가 없습니다 ).

유용한 마지막 작업은 사용 가능한 모든 장치의 드라이버를 나열하는 것입니다. 이를 위해 glob을 사용하여 드라이버 링크가있는 모든 디렉토리를 선택할 수 있습니다. 예 :

$ ls -l /sys/dev/*/*/device/driver && ls -l /sys/dev/*/*/driver 
lrwxrwxrwx 1 root root 0 Apr 17 12:27 /sys/dev/block/11:0/device/driver -> ../../../../../../../bus/scsi/drivers/sr
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/block/8:0/device/driver -> ../../../../../../../bus/scsi/drivers/sd
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/block/8:16/device/driver -> ../../../../../../../bus/scsi/drivers/sd
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/block/8:32/device/driver -> ../../../../../../../../../bus/scsi/drivers/sd
lrwxrwxrwx 1 root root 0 Apr 17 20:38 /sys/dev/char/189:0/driver -> ../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 20:38 /sys/dev/char/189:1024/driver -> ../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 20:38 /sys/dev/char/189:128/driver -> ../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 20:38 /sys/dev/char/189:256/driver -> ../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 20:38 /sys/dev/char/189:384/driver -> ../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/189:512/driver -> ../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/189:513/driver -> ../../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/189:514/driver -> ../../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/189:640/driver -> ../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/189:643/driver -> ../../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 20:38 /sys/dev/char/189:768/driver -> ../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 20:38 /sys/dev/char/189:896/driver -> ../../../../bus/usb/drivers/usb
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/21:0/device/driver -> ../../../../../../../bus/scsi/drivers/sd
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/21:1/device/driver -> ../../../../../../../bus/scsi/drivers/sd
lrwxrwxrwx 1 root root 0 Apr 17 12:27 /sys/dev/char/21:2/device/driver -> ../../../../../../../bus/scsi/drivers/sr
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/21:3/device/driver -> ../../../../../../../../../bus/scsi/drivers/sd
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/250:0/device/driver -> ../../../../../../../bus/hid/drivers/hid-generic
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/250:1/device/driver -> ../../../../../../../bus/hid/drivers/hid-generic
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/250:2/device/driver -> ../../../../../../../bus/hid/drivers/hid-generic
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/252:0/device/driver -> ../../../../../../../bus/scsi/drivers/sd
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/252:1/device/driver -> ../../../../../../../bus/scsi/drivers/sd
lrwxrwxrwx 1 root root 0 Apr 17 12:27 /sys/dev/char/252:2/device/driver -> ../../../../../../../bus/scsi/drivers/sr
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/252:3/device/driver -> ../../../../../../../../../bus/scsi/drivers/sd
lrwxrwxrwx 1 root root 0 Apr 17 19:53 /sys/dev/char/254:0/device/driver -> ../../../bus/pnp/drivers/rtc_cmos
lrwxrwxrwx 1 root root 0 Apr 17 19:53 /sys/dev/char/29:0/device/driver -> ../../../bus/platform/drivers/simple-framebuffer
lrwxrwxrwx 1 root root 0 Apr 17 19:53 /sys/dev/char/4:64/device/driver -> ../../../bus/pnp/drivers/serial
lrwxrwxrwx 1 root root 0 Apr 17 19:53 /sys/dev/char/4:65/device/driver -> ../../../bus/platform/drivers/serial8250
lrwxrwxrwx 1 root root 0 Apr 17 19:53 /sys/dev/char/4:66/device/driver -> ../../../bus/platform/drivers/serial8250
lrwxrwxrwx 1 root root 0 Apr 17 19:53 /sys/dev/char/4:67/device/driver -> ../../../bus/platform/drivers/serial8250
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/6:0/device/driver -> ../../../bus/pnp/drivers/parport_pc
lrwxrwxrwx 1 root root 0 Apr 17 12:26 /sys/dev/char/99:0/device/driver -> ../../../bus/pnp/drivers/parport_pc

마지막으로, 질문에서 조금 벗어나기 위해 다른 /sysglob 트릭을 추가 하여 어떤 장치에서 어떤 드라이버를 사용하고 있는지에 대해 훨씬 더 넓은 관점을 얻을 것입니다 (장치 파일이있는 것은 아니지만).

find /sys/bus/*/drivers/* -maxdepth 1 -lname '*devices*' -ls

최신 정보

의 출력을 더 자세히 살펴보면 udevadm표준 /sys디렉토리 를 찾은 다음 (위의 주 / 부 디렉토리를 역 참조하면 얻을 수있는 것처럼), 디렉토리 트리 위로 올라가서 찾은 정보를 인쇄 하여 작동하는 것처럼 보입니다 . 이렇게하면 상위 장치와 이들이 사용하는 모든 드라이버에 대한 정보를 얻을 수 있습니다.

이를 실험하기 위해 아래 스크립트를 작성하여 디렉토리 트리를 살펴보고 각 관련 수준에서 정보를 표시했습니다. udev각 수준에서 읽을 수있는 파일을 찾는 것처럼 보이며 이름과 내용이 ATTRS. 이 작업을 수행하는 대신 uevent각 수준에서 파일 의 내용을 표시합니다 (이의 존재는 단순한 하위 디렉터리가 아닌 고유 한 수준을 정의하는 것처럼 보입니다). 또한 내가 찾은 모든 하위 시스템 링크의 기본 이름과 장치가이 계층 구조에 어떻게 맞는지 보여줍니다. udevadm동일한 정보를 표시하지 않으므로 이것은 훌륭한 보완 도구입니다. 상위 장치 정보 (예 : PCI정보)는 lshw상위 수준 장치 와 같은 다른 도구의 출력을 일치시키려는 경우에도 유용 합니다.

#!/bin/bash

dev=$(readlink -m $1)

# test for block/character device
if [ -b "$dev" ]; then
  mode=block
elif [ -c "$dev" ]; then
  mode=char
else
  echo "$dev is not a device file" >&2
  exit 1
fi

# stat outputs major/minor in hex, convert to decimal
data=( $(stat -c '%t %T' $dev) ) || exit 2
major=$(( 0x${data[0]} ))
minor=$(( 0x${data[1]} ))

echo -e "Given device:     $1"
echo -e "Canonical device: $dev"
echo -e "Major: $major"
echo -e "Minor: $minor\n"

# sometimes nodes have been created for devices that are not present
dir=$(readlink -f /sys/dev/$mode/$major\:$minor)
if ! [ -e "$dir" ]; then
  echo "No /sys entry for $dev" >&2
  exit 3
fi

# walk up the /sys hierarchy one directory at a time
# stop when there are three levels left 
while [[ $dir == /*/*/* ]]; do

  # it seems the directory is only of interest if there is a 'uevent' file
  if [ -e "$dir/uevent" ]; then
    echo "$dir:"
    echo "  Uevent:"
    sed 's/^/    /' "$dir/uevent"

    # check for subsystem link
    if [ -d "$dir/subsystem" ]; then
        subsystem=$(readlink -f "$dir/subsystem")
        echo -e "\n  Subsystem:\n    ${subsystem##*/}"
    fi

    echo
  fi

  # strip a subdirectory
  dir=${dir%/*}
done

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Linux에서 SATA 장치와 관련된 드라이버 (모듈)를 찾는 방법은 무엇입니까?

분류에서Dev

Windows에서 Ruby와 관련된 openssl 모듈을 업데이트하는 방법은 무엇입니까?

분류에서Dev

Linux에서 마운트 된 USB 드라이브와 관련된 장치를 찾는 방법

분류에서Dev

내 PC에 설치된 모든 드라이버 패키지를 찾는 방법은 무엇입니까?

분류에서Dev

JQuery, 형제와 관련된 위치에 따라 요소를 선택하는 방법은 무엇입니까?

분류에서Dev

Linux : 장치에 사용되는 장치 드라이버를 찾는 방법은 무엇입니까?

분류에서Dev

Django에서 사용자와 관련된 모든 관련 개체를 얻는 방법은 무엇입니까?

분류에서Dev

파이썬에서 sys.argv []와 관련된 오류를 처리하는 방법은 무엇입니까?

분류에서Dev

Linux 커널 모듈에서 문자 장치의 모드를 설정하는 방법은 무엇입니까?

분류에서Dev

데이터 세트에서 상위 5 개 숫자와 이와 관련된 데이터를 찾는 방법은 무엇입니까?

분류에서Dev

Django Rest Framework로 요청 메서드와 관련된 함수를 실행하는 방법은 무엇입니까?

분류에서Dev

사각형 위치와 관련된 Pygame에서 숫자를 표시하는 방법은 무엇입니까?

분류에서Dev

연결된 USB 장치에 사용자 지정 드라이버 모듈을로드하는 방법은 무엇입니까?

분류에서Dev

PCI 장치와 관련된 버스 번호 목록을 얻는 방법은 무엇입니까?

분류에서Dev

명명 된 Unity 리소스와 관련된이 단위 테스트에 대한 모의를 설정하는 올바른 방법은 무엇입니까?

분류에서Dev

Ember 2.7 모델 상속-부모와 관련된 모델에서 가져온 템플릿의 데이터에 액세스하는 방법은 무엇입니까?

분류에서Dev

Linux에서 WiFi 및 Bluetooth 드라이버를 설치하는 방법은 무엇입니까?

분류에서Dev

클릭시 각 링크와 관련된 JSON 데이터를로드하는 방법은 무엇입니까?

분류에서Dev

레이아웃 뷰와 관련된 대량 복사 코드를 피하는 방법은 무엇입니까?

분류에서Dev

내 Linux OS에 설치된 서비스 관리자를 찾는 방법은 무엇입니까?

분류에서Dev

Ubuntu에 AMD 드라이버를 설치하는 방법은 무엇입니까?

분류에서Dev

jquery의 테이블 내에서 클릭 한 버튼과 관련된 <tr> 데이터를 찾는 방법은 무엇입니까?

분류에서Dev

Windows 커널 드라이버에서 장치 인스턴스 경로를 얻는 방법은 무엇입니까?

분류에서Dev

OPENCV에서 특정 기능과 관련된 소스 코드를 추출하는 방법은 무엇입니까?

분류에서Dev

컨트롤러 방법이 작동하지 않음 : 관련 모델에서 관련 레코드를 찾는 방법은 무엇입니까?

분류에서Dev

USB 장치와 관련된 모든 드라이버 파일을 완전히 제거하는 방법

분류에서Dev

Linux에서 장치에 바인딩하지 못하는 드라이버를 디버깅하는 방법은 무엇입니까?

분류에서Dev

Mac에 Python 2.7 및 3.6이 설치되어 있습니다. Python3과 관련된 pip 버전을 찾는 방법은 무엇입니까?

분류에서Dev

Linux PC에서 내부 마이크의 드라이버를 찾는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    Linux에서 SATA 장치와 관련된 드라이버 (모듈)를 찾는 방법은 무엇입니까?

  2. 2

    Windows에서 Ruby와 관련된 openssl 모듈을 업데이트하는 방법은 무엇입니까?

  3. 3

    Linux에서 마운트 된 USB 드라이브와 관련된 장치를 찾는 방법

  4. 4

    내 PC에 설치된 모든 드라이버 패키지를 찾는 방법은 무엇입니까?

  5. 5

    JQuery, 형제와 관련된 위치에 따라 요소를 선택하는 방법은 무엇입니까?

  6. 6

    Linux : 장치에 사용되는 장치 드라이버를 찾는 방법은 무엇입니까?

  7. 7

    Django에서 사용자와 관련된 모든 관련 개체를 얻는 방법은 무엇입니까?

  8. 8

    파이썬에서 sys.argv []와 관련된 오류를 처리하는 방법은 무엇입니까?

  9. 9

    Linux 커널 모듈에서 문자 장치의 모드를 설정하는 방법은 무엇입니까?

  10. 10

    데이터 세트에서 상위 5 개 숫자와 이와 관련된 데이터를 찾는 방법은 무엇입니까?

  11. 11

    Django Rest Framework로 요청 메서드와 관련된 함수를 실행하는 방법은 무엇입니까?

  12. 12

    사각형 위치와 관련된 Pygame에서 숫자를 표시하는 방법은 무엇입니까?

  13. 13

    연결된 USB 장치에 사용자 지정 드라이버 모듈을로드하는 방법은 무엇입니까?

  14. 14

    PCI 장치와 관련된 버스 번호 목록을 얻는 방법은 무엇입니까?

  15. 15

    명명 된 Unity 리소스와 관련된이 단위 테스트에 대한 모의를 설정하는 올바른 방법은 무엇입니까?

  16. 16

    Ember 2.7 모델 상속-부모와 관련된 모델에서 가져온 템플릿의 데이터에 액세스하는 방법은 무엇입니까?

  17. 17

    Linux에서 WiFi 및 Bluetooth 드라이버를 설치하는 방법은 무엇입니까?

  18. 18

    클릭시 각 링크와 관련된 JSON 데이터를로드하는 방법은 무엇입니까?

  19. 19

    레이아웃 뷰와 관련된 대량 복사 코드를 피하는 방법은 무엇입니까?

  20. 20

    내 Linux OS에 설치된 서비스 관리자를 찾는 방법은 무엇입니까?

  21. 21

    Ubuntu에 AMD 드라이버를 설치하는 방법은 무엇입니까?

  22. 22

    jquery의 테이블 내에서 클릭 한 버튼과 관련된 <tr> 데이터를 찾는 방법은 무엇입니까?

  23. 23

    Windows 커널 드라이버에서 장치 인스턴스 경로를 얻는 방법은 무엇입니까?

  24. 24

    OPENCV에서 특정 기능과 관련된 소스 코드를 추출하는 방법은 무엇입니까?

  25. 25

    컨트롤러 방법이 작동하지 않음 : 관련 모델에서 관련 레코드를 찾는 방법은 무엇입니까?

  26. 26

    USB 장치와 관련된 모든 드라이버 파일을 완전히 제거하는 방법

  27. 27

    Linux에서 장치에 바인딩하지 못하는 드라이버를 디버깅하는 방법은 무엇입니까?

  28. 28

    Mac에 Python 2.7 및 3.6이 설치되어 있습니다. Python3과 관련된 pip 버전을 찾는 방법은 무엇입니까?

  29. 29

    Linux PC에서 내부 마이크의 드라이버를 찾는 방법은 무엇입니까?

뜨겁다태그

보관