노트북에 외장 하드 드라이브를 연결했습니다. 나는 정보를 찾으려고 노력한다.
$ udevadm info -a -n /dev/sdb
Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.
looking at device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host10/target10:0:0/10:0:0:0/block/sdb':
KERNEL=="sdb"
SUBSYSTEM=="block"
DRIVER==""
ATTR{range}=="16"
ATTR{ext_range}=="256"
ATTR{removable}=="0"
ATTR{ro}=="0"
ATTR{size}=="312581808"
ATTR{alignment_offset}=="0"
ATTR{discard_alignment}=="0"
ATTR{capability}=="50"
ATTR{stat}==" 322 11207 13259 2196 2 0 16 0 0 1524 2196"
ATTR{inflight}==" 0 0"
ATTR{events}==""
ATTR{events_async}==""
ATTR{events_poll_msecs}=="-1"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host10/target10:0:0/10:0:0:0':
KERNELS=="10:0:0:0"
SUBSYSTEMS=="scsi"
DRIVERS=="sd"
ATTRS{device_blocked}=="0"
ATTRS{type}=="0"
ATTRS{scsi_level}=="0"
ATTRS{vendor}=="USB 2.0 "
ATTRS{model}=="Storage Device "
ATTRS{rev}=="0100"
ATTRS{state}=="running"
ATTRS{timeout}=="30"
ATTRS{iocounterbits}=="32"
ATTRS{iorequest_cnt}=="0x165"
ATTRS{iodone_cnt}=="0x165"
ATTRS{ioerr_cnt}=="0x2"
ATTRS{evt_media_change}=="0"
ATTRS{dh_state}=="detached"
ATTRS{queue_depth}=="1"
ATTRS{queue_type}=="none"
ATTRS{max_sectors}=="240"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host10/target10:0:0':
KERNELS=="target10:0:0"
SUBSYSTEMS=="scsi"
DRIVERS==""
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0/host10':
KERNELS=="host10"
SUBSYSTEMS=="scsi"
DRIVERS==""
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1/2-1:1.0':
KERNELS=="2-1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="usb-storage"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bNumEndpoints}=="02"
ATTRS{bInterfaceClass}=="08"
ATTRS{bInterfaceSubClass}=="06"
ATTRS{bInterfaceProtocol}=="50"
ATTRS{supports_autosuspend}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2/2-1':
KERNELS=="2-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="c0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="1076"
ATTRS{idVendor}=="0402"
ATTRS{idProduct}=="5621"
ATTRS{bcdDevice}=="0103"
ATTRS{bDeviceClass}=="00"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="2"
ATTRS{devnum}=="8"
ATTRS{devpath}=="1"
ATTRS{product}=="USB 2.0 Storage Device"
ATTRS{serial}=="00042222200000064007"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb2':
KERNELS=="usb2"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{configuration}==""
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bmAttributes}=="e0"
ATTRS{bMaxPower}==" 0mA"
ATTRS{urbnum}=="382"
ATTRS{idVendor}=="1d6b"
ATTRS{idProduct}=="0002"
ATTRS{bcdDevice}=="0302"
ATTRS{bDeviceClass}=="09"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{bNumConfigurations}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{speed}=="480"
ATTRS{busnum}=="2"
ATTRS{devnum}=="1"
ATTRS{devpath}=="0"
ATTRS{version}==" 2.00"
ATTRS{maxchild}=="6"
ATTRS{quirks}=="0x0"
ATTRS{avoid_reset_quirk}=="0"
ATTRS{authorized}=="1"
ATTRS{manufacturer}=="Linux 3.2.0-27-generic-pae ehci_hcd"
ATTRS{product}=="EHCI Host Controller"
ATTRS{serial}=="0000:00:1d.7"
ATTRS{authorized_default}=="1"
looking at parent device '/devices/pci0000:00/0000:00:1d.7':
KERNELS=="0000:00:1d.7"
SUBSYSTEMS=="pci"
DRIVERS=="ehci_hcd"
ATTRS{vendor}=="0x8086"
ATTRS{device}=="0x293a"
ATTRS{subsystem_vendor}=="0x17aa"
ATTRS{subsystem_device}=="0x20f1"
ATTRS{class}=="0x0c0320"
ATTRS{irq}=="19"
ATTRS{local_cpus}=="ff"
ATTRS{local_cpulist}=="0-7"
ATTRS{dma_mask_bits}=="32"
ATTRS{consistent_dma_mask_bits}=="32"
ATTRS{broken_parity_status}=="0"
ATTRS{msi_bus}==""
ATTRS{companion}==""
ATTRS{uframe_periodic_max}=="100"
looking at parent device '/devices/pci0000:00':
KERNELS=="pci0000:00"
SUBSYSTEMS==""
DRIVERS==""
출력이 의미하는 "상위 장치 체인"이 무엇인지 궁금합니다. looking at (parent) device
다음 각각의 의미를 잘 이해하지 못합니다 . 예를 들어,
첫 번째는 내 외장 하드 드라이브인가요? 나머지는 무엇입니까?
마지막 두 개를 제외한 모든 "..."에 "usb"가 포함되어 있는 이유는 무엇입니까?
마지막 PCI 슬롯 옆에 있는 슬롯인가요?
pci
이름에 들어 있는데 마지막에 비어 있는 것은 무엇입니까?
"walk up"은 외장 하드 드라이브에서 CPU로 가는 것을 의미합니까?
감사해요!
답변1
장치를 처리하는 다양한 소프트웨어 구성 요소(드라이버)를 반복합니다. 이는 기본적으로 장치 연결과 관련된 하드웨어 장치 및 버스에 해당합니다. 이 중 대부분은 장치의 물리적 배열과 관련이 없습니다. 어쨌든 대부분은 동일한 칩 안에 있습니다.
이 예를 위에서부터 살펴보세요.
- 먼저 블록 장치(디스크와 유사한 장치)가 있습니다. 이것은 실제 장치이므로 키에 엔딩 ( 등 )
이 없습니다 . 마지막 항목 ( 등 )은 작성할 수 있는 내용과 일치하도록 출력의 조상 키 에 추가됩니다.S
KERNEL
ATTR
S
KERNELS
ATTRS
udevadm
우데브규칙. - 첫 번째 부모는소형 컴퓨터 시스템 인터페이스
sd
(SCSI 디스크) 드라이버에 의해 처리되는 디스크입니다 . 이는 반드시 물리적 SCSI일 필요는 없는 SCSI 프로토콜을 통해 연결된 디스크입니다. 대부분의 최신 스토리지 링크(ATA, SCSI, USB, iSCSI)는 다른 물리적 통신 프로토콜을 통해 SCSI 프로토콜을 사용합니다. - SCSI 주소 지정은 계층적입니다. 즉, SCSI 장치는 대상에 연결되고, 대상은 다시 대상에 연결됩니다.주인.
- SCSI 호스트는USB 저장소컨트롤러,
usb-storage
드라이버가 처리합니다. - USB 저장소 컨트롤러에 연결됨USB제어 장치. USB 장치는 트리 방식으로 연결됩니다(SCSI와 유사하지만 SCSI에는 고정된 수의 분기점이 있는 반면 USB는 허브를 연결하여 트리의 깊이를 늘릴 수 있습니다). USB 단계를 자세히 설명할 만큼 USB에 대해 아는 바가 없습니다.
- 마지막으로 USB 호스트 컨트롤러에 도착합니다
ATTRS{product}=="EHCI Host Controller"
.유럽 휴먼 머신 인터페이스USB 2.0 컨트롤러를 나타냅니다. - USB 컨트롤러 통과PCI버스.
0000:00:1d.7
USB 컨트롤러에 연결된 버스 주소입니다.
PCI 확장 카드는 이 레이어에 연결됩니다. USB 컨트롤러가 포함된 칩은 그다지 큰 것에 연결되지 않으며 연결은 실리콘 내부 깊숙이 있습니다. - 마지막 항목은 PCI 버스 자체입니다. 이 버스의 끝점이 CPU이기 때문에 이것이 마지막 항목입니다.