จะค้นหาไดรเวอร์ (โมดูล) ที่เกี่ยวข้องกับอุปกรณ์บน Linux ได้อย่างไร


48

บน Linux ได้รับ:

  • อุปกรณ์เช่น/dev/sda,
  • และตัวเลขหลักและรองของตนตัวอย่างเช่น8, 0,

ฉันจะรู้ได้อย่างไรว่าโมดูล / ไดรเวอร์ใดที่ "ขับ" หรือไม่

ฉันสามารถขุด/sysหรือ/procค้นพบสิ่งนั้นได้หรือไม่?


การรวมกันของบางlsmod, /proc/modulesและmodinfo?

4
stackoverflow.com/questions/2911050ดูเหมือนกับคำถามนี้
Michael Tomkins

ที่นี่ยังstackoverflow.com/questions/17878843/...
Unx

โตโต้ฉันเพิ่มเงินรางวัลเพราะผู้ใช้คนอื่นโพสต์คำถามเดียวกันเพราะเขารู้สึกว่าสิ่งนี้ไม่ได้รับความสนใจเพียงพอ ฉันขอให้เขาลบคำถามของเขาและเสนอเงินรางวัลนี้เพื่อรับคำตอบเพิ่มเติม โปรดอย่าลืมตอบหนึ่งในคำตอบด้านล่างหากพวกเขาตอบคำถามของคุณ
terdon

@terdon ขอบคุณสำหรับความโปรดปรานมันสร้างคำตอบที่ดี ฉันยังไม่ได้ทดสอบทุกอย่างอย่างรอบคอบ แต่จะยอมรับคำตอบของแกรมในขณะเดียวกัน
Totor

คำตอบ:


56

ในการรับข้อมูลนี้จากsysfsไฟล์อุปกรณ์ก่อนอื่นให้ตรวจสอบหมายเลขหลัก / รองโดยดูที่ผลลัพธ์ของls -lเช่น

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

8, 0บอกเราว่าที่สำคัญคือจำนวนและรายย่อยเป็น8 ที่เริ่มต้นของรายการยังบอกเราว่ามันเป็นอุปกรณ์ป้องกันที่ อุปกรณ์อื่น ๆ อาจมีสำหรับอุปกรณ์ตัวอักษรเมื่อเริ่มต้น0bc

หากคุณดูด้านล่าง/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ลิงก์สำหรับสิ่งนี้)

สิ่งสุดท้ายที่จะเป็นประโยชน์ในการทำคือการแสดงรายการไดรเวอร์สำหรับอุปกรณ์ทั้งหมดที่มี สำหรับสิ่งนี้คุณสามารถใช้ globs เพื่อเลือกไดเรกทอรีทั้งหมดที่มีลิงค์ไดรเวอร์อยู่ เช่น:

$ ls -l /sys/dev/*/*/device/driver ls -l /sys/dev/*/*/driver 
ls: cannot access ls: No such file or directory
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

ท้ายที่สุดเพื่อแยกออกจากคำถามเล็กน้อยฉันจะเพิ่ม/sysเคล็ดลับ glob อื่นเพื่อให้ได้มุมมองที่กว้างขึ้นเกี่ยวกับการใช้ไดรเวอร์โดยอุปกรณ์ใด ๆ (แม้ว่าไม่จำเป็นต้องเป็นไฟล์อุปกรณ์):

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

ปรับปรุง

มองอย่างใกล้ชิดที่ผลลัพธ์ของudevadmมันจะทำงานโดยการค้นหา/sysไดเรกทอรีcanonical (ตามที่คุณจะได้รับถ้าคุณ dereferenced ไดเรกทอรีหลัก / รายย่อยข้างต้น) จากนั้นทำงานถึงต้นไม้ไดเรกทอรีพิมพ์ข้อมูลใด ๆ ที่พบ วิธีนี้คุณจะได้รับข้อมูลเกี่ยวกับอุปกรณ์หลักและไดรเวอร์ใด ๆ ที่ใช้เช่นกัน

ในการทดลองสิ่งนี้ฉันเขียนสคริปต์ด้านล่างเพื่อเดินทรีไดเรกทอรีและแสดงข้อมูลในแต่ละระดับที่เกี่ยวข้อง ดูเหมือนว่าจะมองหาไฟล์ที่สามารถอ่านได้ในแต่ละระดับมีชื่อและเนื้อหาของพวกเขาได้รับการจัดตั้งขึ้นใน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

มีวิธีการตรวจสอบไดรเวอร์ทั้งหมดที่ใช้หรือไม่ เหมือนเช่นudevadmคำตอบที่จะทำให้คุณและsd ahciมีวิธีการตรวจสอบว่าahciมีการใช้เช่นกันหรือไม่?
แพทริค

@ แพทริกใช่อัปเดตแล้ว
แกรม

คำตอบที่ดีขอบคุณ! เพียงเพื่อให้ทราบว่าในกรณีของฉันเชื่อมโยงอยู่ในdevice/device/ดังนั้นฉันสั่งดูเหมือนreadlink readlink /sys/dev/char/XX\:Y/device/device/driver
Harry Cutts

19

คุณสามารถใช้udevadmเครื่องมือเพื่อค้นพบสิ่งนี้
คำสั่งจะเป็นudevadm info -a -n /dev/sdaแล้วดูDRIVER==พารามิเตอร์

# udevadm info -a -n /dev/sda | grep -oP 'DRIVERS?=="\K[^"]+'  
sd
ahci

นี้แสดงให้เห็นว่ามีจริง 2 คนขับรถมีส่วนร่วมในการให้บริการอุปกรณ์นี้และsd ahciคนแรกsdรับผิดชอบโดยตรงกับ/dev/sdaอุปกรณ์ แต่จะใช้ahciไดรเวอร์ภายใต้

 

เอาต์พุตของudevadmคำสั่งมีลักษณะเช่นนี้และมีคำอธิบายวิธีการใช้งาน

# udevadm info -a -n /dev/sda      

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:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda':
    KERNEL=="sda"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{ro}=="0"
    ATTR{size}=="500118192"
    ATTR{stat}=="   84786     1420  3091333    40215   966488    12528 14804028  2357668        0  1146934  2396653"
    ATTR{range}=="16"
    ATTR{discard_alignment}=="0"
    ATTR{events}==""
    ATTR{ext_range}=="256"
    ATTR{events_poll_msecs}=="-1"
    ATTR{alignment_offset}=="0"
    ATTR{inflight}=="       0        0"
    ATTR{removable}=="0"
    ATTR{capability}=="50"
    ATTR{events_async}==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0':
    KERNELS=="0:0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS=="sd"
    ATTRS{rev}=="VZJ4"
    ATTRS{type}=="0"
    ATTRS{scsi_level}=="6"
    ATTRS{model}=="LITEONIT LMT-256"
    ATTRS{state}=="running"
    ATTRS{queue_type}=="simple"
    ATTRS{iodone_cnt}=="0x10daad"
    ATTRS{iorequest_cnt}=="0x10ead1"
    ATTRS{queue_ramp_up_period}=="120000"
    ATTRS{device_busy}=="0"
    ATTRS{evt_capacity_change_reported}=="0"
    ATTRS{timeout}=="30"
    ATTRS{evt_media_change}=="0"
    ATTRS{ioerr_cnt}=="0x2"
    ATTRS{queue_depth}=="31"
    ATTRS{vendor}=="ATA     "
    ATTRS{evt_soft_threshold_reached}=="0"
    ATTRS{device_blocked}=="0"
    ATTRS{evt_mode_parameter_change_reported}=="0"
    ATTRS{evt_lun_change_reported}=="0"
    ATTRS{evt_inquiry_change_reported}=="0"
    ATTRS{iocounterbits}=="32"
    ATTRS{eh_timeout}=="10"

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0':
    KERNELS=="target0:0:0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0':
    KERNELS=="host0"
    SUBSYSTEMS=="scsi"
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1':
    KERNELS=="ata1"
    SUBSYSTEMS==""
    DRIVERS==""

  looking at parent device '/devices/pci0000:00/0000:00:1f.2':
    KERNELS=="0000:00:1f.2"
    SUBSYSTEMS=="pci"
    DRIVERS=="ahci"
    ATTRS{irq}=="41"
    ATTRS{subsystem_vendor}=="0x144d"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x010601"
    ATTRS{enabled}=="1"
    ATTRS{consistent_dma_mask_bits}=="64"
    ATTRS{dma_mask_bits}=="64"
    ATTRS{local_cpus}=="0f"
    ATTRS{device}=="0x1e03"
    ATTRS{msi_bus}==""
    ATTRS{local_cpulist}=="0-3"
    ATTRS{vendor}=="0x8086"
    ATTRS{subsystem_device}=="0xc0d3"
    ATTRS{numa_node}=="-1"
    ATTRS{d3cold_allowed}=="1"

  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

1
@ECarterYoung คุณเห็นว่าudevadmมีการนำออกที่ไหน(หรือแม้แต่แนะนำ)? ฉันไม่สามารถหาอะไรแม้แต่จะให้คำใบ้ในเรื่องนั้น
Patrick

1
@ เศรษฐกิจฉันรู้สึกว่าฉันไม่เห็นอะไรเลย
แพทริค

ฉันเข้าใจผิดว่าไม่มี UEVENT_HELPER ในเคอร์เนล บนระบบที่รัน systemd รายการนี้จะว่างเปล่า แต่ helpr ยังคงปรากฏอยู่บนระบบ
eyoung100

4

ใช้คำสั่ง hwinfoและโมเดลเอาต์พุตและไดรเวอร์ หากไม่มีไดรเวอร์จะไม่ปรากฏขึ้น ตัวอย่างเช่นดิสก์:

# hwinfo --block | grep -Ei "ไดรเวอร์ \: | model \:"
  รุ่น: "ฟลอปปี้ดิสก์"
  รุ่น: "FUJITSU MHZ2080B"
  ไดร์เวอร์: "ahci", "sd"
  รุ่น: "Partition"
  รุ่น: "Partition"
  รุ่น: "Partition"
  รุ่น: "Generic Multi-Card"
  ไดร์เวอร์: "ums-realtek", "sd"
  รุ่น: "Realtek USB2.0-CRW"
  ไดร์เวอร์: "ums-realtek"

สำหรับการ์ดเครือข่าย:

# hwinfo --netcard | grep -Ei "ไดรเวอร์ \: | model \:"
  รุ่น: "Broadcom NetXtreme BCM5764M Gigabit Ethernet PCIe"
  ไดร์เวอร์: "tg3"
  รุ่น: "Intel Wireless WiFi Link 5100"
  ไดร์เวอร์: "iwlwifi"

สำหรับอุปกรณ์ USB:

# hwinfo --usb | grep -Ei "ไดรเวอร์ \: | model \:"
  แบบ: "Linux 3.11.10-7-desktop uhci_hcd UHCI Host Controller"
  ไดร์เวอร์: "ฮับ"
  แบบ: "Linux 3.11.10-7-desktop uhci_hcd UHCI Host Controller"
  ไดร์เวอร์: "ฮับ"
  รุ่น: "IDEACOM IDC 6680"
  ไดร์เวอร์: "usbhid"
  [ ... ]

ใช้ hwinfo - ช่วยเพื่อค้นหาว่ามีอุปกรณ์ประเภทใดที่คุณสามารถสืบค้นได้ hwinfo ถูกติดตั้งโดยค่าเริ่มต้นเช่นบน SUSE Linux


ในการเชื่อมโยงสิ่งนี้กับไฟล์อุปกรณ์โดยเฉพาะวิธีหนึ่งคือการเพิ่ม--onlyตัวเลือก hwinfo --block --only /dev/sda | grep ...เช่น
แกรม

3

lshwเป็นเครื่องมือที่ยอดเยี่ยมในการแสดงรายการฮาร์ดแวร์ที่พบในเครื่องของคุณ คุณจะต้องติดตั้งก่อนใช้งาน

$ yum install lshw
$ apt-get install lshw

ใช้yumหรือapt-getขึ้นอยู่กับระบบที่คุณใช้ จากนั้นระบุรายการฮาร์ดแวร์จัดเก็บข้อมูลโดยเฉพาะ:

# lshw -class storage 
*-storage               
   description: SATA controller
   product: 5 Series/3400 Series Chipset 4 port SATA AHCI Controller
   vendor: Intel Corporation
   physical id: 1f.2
   bus info: pci@0000:00:1f.2
   version: 06
   width: 32 bits
   clock: 66MHz
   capabilities: storage msi pm ahci_1.0 bus_master cap_list
   configuration: driver=ahci latency=0
   resources: irq:41 ioport:1830(size=8) ioport:1824(size=4) ioport:1828(size=8) ioport:1820(size=4) ioport:1800(size=32) memory:f0305000-f03057ff

คุณอาจต้องการเรียกใช้rootเพื่อรับข้อมูลทั้งหมดกลับคืน

มิฉะนั้นlspciสามารถให้ข้อมูลเกี่ยวกับฮาร์ดแวร์ของคุณ:

$ lspci -vv
00:1f.2 SATA controller: Intel Corporation 5 Series/3400 Series Chipset 4 port SATA AHCI Controller (rev 06) (prog-if 01 [AHCI 1.0])
    Subsystem: Dell Device 0434
    Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
    Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
    Latency: 0
    Interrupt: pin B routed to IRQ 41
    Region 0: I/O ports at 1830 [size=8]
    Region 1: I/O ports at 1824 [size=4]
    Region 2: I/O ports at 1828 [size=8]
    Region 3: I/O ports at 1820 [size=4]
    Region 4: I/O ports at 1800 [size=32]
    Region 5: Memory at f0305000 (32-bit, non-prefetchable) [size=2K]
    Capabilities: <access denied>
    Kernel driver in use: ahci

หากต้องการค้นหาอุปกรณ์หลักและรองเพียงแค่รันlsบนอุปกรณ์

$ ls -l /dev/sda
brw-rw----. 1 root disk 8, 0 13 avril 10:54 /dev/sda

ในเอาต์พุตนี้, bin brw-rw----.หมายความว่านี่เป็นอุปกรณ์บล็อก ตัวเลข8และ0เป็นลำดับของอุปกรณ์หลักและรอง


1
คำถามของฉันเกี่ยวกับการค้นหาลิงก์ระหว่างอุปกรณ์หนึ่งตัวกับโมดูล / ไดรเวอร์ คุณตอบว่าที่ไหน
Totor

1
@Totor ในการแสดงผลทั้งสองlshwและlspciคุณสามารถเห็นโมดูลที่ใช้โดยอุปกรณ์: การกำหนดค่า: ไดรเวอร์ = แฝง AHCI = 0และคนขับเป็นโปรแกรมในการใช้งาน: AHCI
Spack
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.