Les liens sous / dev / disk / by-id sont créés par udev. Dans /etc/udev/rules.d/50-udev.rules, ces lignes peuvent être trouvées:
KERNEL=="sd*[!0-9]|sr*", SYSFS{ieee1394_id}=="*", ENV{ID_SERIAL}="$sysfs{ieee1394_id}", ENV{ID_BUS}="ieee1394"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}=="", IMPORT{program}="/lib/udev/usb_id -x"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}=="", IMPORT{program}="/lib/udev/scsi_id -g -x -s %p -d $tempnode"
KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}=="", IMPORT{program}="/lib/udev/scsi_id -g -x -a -s %p -d $tempnode"
KERNEL=="nst[0-9]*|st*|sd*[!0-9]|sr*|dasd*[!0-9]|cciss?c", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
Malheureusement, il n'est pas trivial de trouver ce by-id
lien symbolique à partir du nom de l'appareil. Mais il y a au moins une voie directe:
$ udevinfo -q path -n /dev/sda
/block/sda
$ udevinfo -q symlink -p /block/sda
disk/by-id/scsi-SATA_KINGSTON_SVP100_31JY100MY5SK disk/by-path/pci-0000:00:11.0-scsi-0:0:0:0
Une liste séparée par des espaces est renvoyée. Ainsi, le by-id
chemin peut être trouvé.
Ou vous pouvez directement obtenir le numéro de série "composite":
$ udevinfo -q env -p /block/sda
ID_VENDOR=ATA
ID_MODEL=KINGSTON_SVP100S
ID_REVISION=CJR1
ID_SERIAL=SATA_KINGSTON_SVP100_31JY100MY5SK
ID_TYPE=disk
ID_BUS=scsi
ID_PATH=pci-0000:00:11.0-scsi-0:0:0:0
Dans le ID_SERIAL
après le dernier trait de soulignement Vous pouvez obtenir le numéro de série.
Comme je le vois, un numéro de série peut contenir des caractères alphanumériques et «-» (j'ai de tels disques durs SCSI). Quelqu'un connaît-il une limitation du numéro de série? Si elle peut contenir «_», cette méthode n'est pas à l'épreuve des balles.
La ID_MODEL
clé pourrait être utilisée pour localiser plus précisément le début du numéro de série, car (il me semble) ses 15 premiers caractères sont ajoutés aux ID_SERIAL
(espaces remplacés par '_').
udisks --show-info
.__ Mais__ il faut noter que lorsqu'il est utilisé en mode batch ou généralement dans des scripts,udisks
est beaucoup plus lent queudevadm
.