LinuxでSATAデバイスに関連するドライバ(モジュール)を見つける方法は?

LinuxでSATAデバイスに関連するドライバ(モジュール)を見つける方法は?

私のアプリケーションの1つについては、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ハードドライブ用のシステムにロードされている実際のデバイスドライバを確認する方法を提案してください。

ベストアンサー1

udevadm info上記のリンクの他の回答に記載されているように使用してください。以下は、/sysツリーを後ろに移動しながら出力を減らすためにさまざまなgrepバリアントを使用する例です。

$ 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デバイスにマップされたマイシステムがPCIデバイス(ホストアダプタ)0:0:0:0に接続されていることがわかります。ata10:00:1f.2

ドライバはsdブロックデバイスの処理を担当し、ドライバはahciSATAホストアダプタの処理を担当します。

おすすめ記事