Udev
使用 UUID 引用整個磁碟 (/dev/sda)
在我的系統 (Debian) 上,我可以看到
UUID
我所有磁碟分區的標識符(即/dev/sda1
,dev/sda2
, ..)ls /dev/disk/by-uuid/
但是,我沒有看到它本身的
UUID
標識符。/dev/sda
是否可以使用 引用整個磁碟UUID
?我需要這個,因為我想引用一個特定的磁碟,我不能相信它會被呼叫
/dev/sda
。編輯
@don_crissti 建議的解決方案很棒。但是,我希望同一型號/製造商的所有硬碟的 UUID 相同,而不是序列號唯一。
使用
udevadm
,我可以看到磁碟屬性:udevadm info -n /dev/sda -a ATTRS{model}=="Samsung SSD 840 " ATTRS{vendor}=="0x8086" ATTRS{class}=="0x010700" ATTRS{device}=="0x1d6b" ....
如何
UUID
從這些屬性中生成一個,以便相同的模型/製造商磁碟具有相同的UUID
?
下面的符號連結由基於文件系統UUID
/dev/disk/by-uuid/
的規則創建。如果您查看,您會發現以下條目:udev``/usr/lib/udev/rules.d/60-persistent-storage.rules
...... ENV{ID_FS_UUID_ENC}=="?*", SYMLINK+="disk/by-uuid/$env{ID_FS_UUID_ENC}"
要引用磁碟,您可以使用磁碟序列號和
ENV{ID_SERIAL_SHORT}
密鑰。以下
udev
規則匹配具有序列號的驅動器。0000000013100925DB96
並在下面創建一個同名的符號連結/dev/disk/by-uuid/
:KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL_SHORT}=="0000000013100925DB96", SYMLINK+="disk/by-uuid/$env{ID_SERIAL_SHORT}"
至於您的其他問題…當然,您始終可以使用
ENV{ID_MODEL}
而不是ENV{ID_SERIAL_SHORT}
使用自定義字元串作為符號連結名稱。以下規則與
ID_MODEL
=匹配任何驅動器並在 下M4-CT128M4SSD2
創建符號連結:M4-SSD-1234567890``/dev/disk/by-uuid/
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_MODEL}=="M4-CT128M4SSD2", SYMLINK+="disk/by-uuid/M4-SSD-1234567890"
請注意,只要只有一個與
ID_MODEL
. 如果有多個相同型號的驅動器,則對每個驅動器再次應用該規則,並且符號連結將指向最後檢測/添加的驅動器。