Сравните:
root@home:~# hdparm -I /dev/sdb | grep Serial
Serial Number: WCJ025C8
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0
root@home:~#
кому:
root@home:~# udevadm info -a -p $(udevadm info -q path -n /dev/sdb) | grep -i serial
ATTRS{serial}=="0123456789ABCDEF"
ATTRS{serial}=="0000:00:14.0"
root@home:~#
я вижу это 0123456789ABCDEF
много с udev, но это подделка, тогда как hdparm
вывод точно соответствует физическому номеру на диске.
В результате я не могу создать правила udev, которые будут соответствовать моим 4 USB-накопителям по серийному номеру.
Я использую ubuntu 16.04 LTE.
Предложения очень признательны.
В конце концов, я пошел с этим, что немного похоже на взлом:
KERNEL=="sd?", SUBSYSTEM=="block", PROGRAM="/root/get_disk_serial.sh %k", SYMLINK+="disk/by-serial/%c"
а затем быстрый сценарий вроде этого:
#!/bin/bash
/sbin/hdparm -I /dev/$1 | grep 'Serial Number' | awk '{print $3}'
Некрасиво, но работает ...