説明できないこの動作が発生しました。 sysfsにはシンボリックリンクがありますが、私には不可能に見えます。
me@test:/sys/block/sde$ ll
...
lrwxrwxrwx 1 root root 0 Oct 1 2019 device -> ../../../8:0:0:0
...
me@test:/sys/block/sde$ cd ../../../8:0:0:0
me@test:/sys/devices/pci0000:00/0000:00:17.0/usb2/2-1/2-1:1.3/host8/target8:0:0/8:0:0:0$
しかし、レベル3ではルートフォルダに移動できるようですが、どのようにこれが起こりますか?
me@test:/sys/block/sde$ cd ../../../
me@test:/$
答え1
同じ問題があります。シンボリックリンクは、それ自体がシンボリックリンクであるため、/sys/block/sda/device
相対的です。例:/sys/devices
/sys/block/sda
USBに接続されたSATAドライブ - > SATAアダプタ
# ls -l /sys/block/sda
/sys/block/sda -> ../devices/pci0000:00/0000:00:08.1/0000:06:00.3/usb5/5-2/5-2.2/5-2.2:1.0/host0/target0:0:0/0:0:0:0/block/sda/
# readlink /sys/block/sda/device
../../../0:0:0:0
# readlink -e /sys/block/sda/device
/sys/devices/pci0000:00/0000:00:08.1/0000:06:00.3/usb5/5-2/5-2.2/5-2.2:1.0/host0/target0:0:0/0:0:0:0
/sys/block/sda
はそのデバイスへのシンボリックリンクなので、そのフルパスを/sys/devices
適用すると、シンボリックリンクサフィックスが参照するディレクトリがある場所../../..../
に移動されます。/sys/devices/pci0000:00/0000:00:08.1/0000:06:00.3/usb5/5-2/5-2.2/5-2.2:1.0/host0/target0:0:0/
0:0:0:0
/sys/block/sda/device
注:/sys/devices
デバイスから始まるUDEVパスは、次のようにして取得できますudevadm
。
# udevadm info --query=path /sys/block/sda
/devices/pci0000:00/0000:00:08.1/0000:06:00.3/usb5/5-2/5-2.2/5-2.2:1.0/host0/target0:0:0/0:0:0:0/block/sda
今回は、NVMEドライブがフラット(マザーボード)NVMeポートに接続されているもう1つの例です。
# ls -l /sys/block/nv*
/sys/block/nvme0n1 -> ../devices/pci0000:00/0000:00:02.1/0000:01:00.0/nvme/nvme0/nvme0n1/
# readlink /sys/block/nvme0n1/device
../../nvme0
# readlink -e /sys/block/nvme0n1/device
/sys/devices/pci0000:00/0000:00:02.1/0000:01:00.0/nvme/nvme0
# udevadm info --query=path /sys/block/nvme0n1
/devices/pci0000:00/0000:00:02.1/0000:01:00.0/nvme/nvme0/nvme0n1