sysfs フォルダシンボリックリンクの動作

sysfs フォルダシンボリックリンクの動作

説明できないこの動作が発生しました。 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

関連情報