Как найти драйвер (модуль), связанный с устройством SATA в Linux?

Для одного из моих приложений я должен понимать поток драйверов устройства SATA. По моему мнению, драйвер устройства SATA должен находиться в дереве ядра Linux. Я рассказал, как найти модуль драйвера, связанный с устройством в Linux, чтобы найти драйвер устройства для устройства SATA.

$ readlink /sys/block/sda/device/driver ../../../../../../../bus/scsi/d 

Я перешел в указанное выше место, но не нашел файл драйвера устройства.

 usr@usr:/sys/bus/scsi/drivers/sd$ ll total 0 drwxr-xr-x 2 root root 0 Dec 9 17:00 ./ drwxr-xr-x 4 root root 0 Dec 9 17:00 ../ lrwxrwxrwx 1 root root 0 Dec 9 17:47 2:0:1:0 -> ../../../../devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:1/2:0:1:0/ --w------- 1 root root 4096 Dec 9 17:47 bind --w------- 1 root root 4096 Dec 9 17:47 uevent --w------- 1 root root 4096 Dec 9 17:47 unbind usr@usr:/sys/bus/scsi/drivers/sd$ 

Пожалуйста, предложите, как я могу видеть драйвер устройства, который фактически загружался для жесткого диска SATA в моей системе.

2 Solutions collect form web for “Как найти драйвер (модуль), связанный с устройством SATA в Linux?”

Используйте udevadm info как описано в другом ответе на указанную вами ссылку. Вот пример с другим grep-вариантом, чтобы уменьшить результат, идя по дереву /sys назад:

 $ udevadm info -a -n /dev/sda | egrep 'looking|DRIVER' looking at device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda': DRIVER=="" looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0': DRIVERS=="sd" looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0': DRIVERS=="" looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1/host0': DRIVERS=="" looking at parent device '/devices/pci0000:00/0000:00:1f.2/ata1': DRIVERS=="" looking at parent device '/devices/pci0000:00/0000:00:1f.2': DRIVERS=="ahci" looking at parent device '/devices/pci0000:00': DRIVERS=="" 

Таким образом, вы можете видеть, что в моей системе /dev/sda отображает SCSI-устройство 0:0:0:0 , которое прикрепляется к ata1 на устройстве PCI 0:00:1f.2 (который является 0:00:1f.2 адаптером)

Драйвер sd отвечает за обработку блочного устройства, а драйвер ahci отвечает за обработку хост-адаптера SATA.

Это только пытается ответить на часть вопроса, а именно, как найти код драйвера ядра. Я бы добавил это как комментарий, но это слишком долго для одного.

Сначала установите пакет исходных файлов ядра Debian.

 apt-get install linux-source-3.16 

или независимо от соответствующей версии вашего ядра. Затем источник устанавливается в /usr/src/linux-source-3.16.tar.xz .

Теперь создайте каталог /usr/local/src/linux и скопируйте его там. А именно:

 mkdir /usr/local/src/linux 

с последующим

 cp -ar /usr/src/linux-source-3.16.tar.xz /usr/local/src/linux 

Теперь вы можете распаковать его с помощью tar.

 tar xvf linux-source-3.16.tar.xz cd linux-source-3.16 

Затем запустите find нужного драйвера устройства, скажем:

 /usr/local/src/linux/linux-source-3.16$ find . -name 'sg.c' ./drivers/scsi/sg.c 

Поэтому водитель, о котором идет речь, находится в

 /usr/local/src/linux/linux-source-3.16/drivers/scsi/sg.c 

Все модули, перечисленные в lsmod должны находиться в исходном дереве в форме modname.c , где modname – это имя, которое отображается в списке lsmod .

  • «Un-select» поведение в kconfig
  • Роль драйвера состояния Intel P
  • Какой был бы лучший способ обойти эту проблему glibc?
  • Найти модуль ядра за виртуальным сетевым интерфейсом по информации из sysfs / procfs
  • Подходит ли Linux к соглашениям System V по умолчанию, заканчивающимся на SIGIO?
  • Ядро Linux 3.2 syscalls
  • udev управляет официальными документами
  • Вызов блокировки памяти в ядрах Linux 2.6.35 и за ее пределами
  • Есть ли патч ядра для предотвращения загрузки файлов в RAM для LiveCD?
  • Почему файловая система в Linux не классифицируется как драйвер устройства?
  • Подавление автоматической загрузки модулей ядра Linux
  • Мониторинг, когда чтение / запись по метаданным или mmaped-файлы попадают на диск
  • Linux и Unix - лучшая ОС в мире.