私のアプリケーションの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
に接続されていることがわかります。ata1
0:00:1f.2
ドライバはsd
ブロックデバイスの処理を担当し、ドライバはahci
SATAホストアダプタの処理を担当します。