udev 规则匹配分区标志

udev 规则匹配分区标志

我正在尝试在 VirtualBox 中运行 Windows 分区,并且我想创建一个 udev 规则来识别 Windows 分区并将组更改为vbox用户。目前,我已将 udev 设置为通过 UUID 匹配分区,但我想让它们更加通用。

这是我目前的规则:

# Rules to give VirtualBox raw access to Windows partitions

# Microsoft Reserved partition
SUBSYSTEM=="block", ATTRS{transport}=="pcie", ENV{ID_PART_ENTRY_UUID}=="df9bb75d-81b8-41cc-9faa-067f21b7089c", RUN+="/bin/chgrp vboxusers /dev/$name"

# Windows partition
SUBSYSTEM=="block", ATTRS{transport}=="pcie", ENV{ID_PART_ENTRY_UUID}=="8bad4d16-593c-4d50-a315-c8b33555888f", RUN+="/bin/chgrp vboxusers /dev/$name"

而不是使用ID_PART_ENTRY_UUID,我希望这些规则能够匹配msftresmsftdata分区标志。这可能吗?

我尝试使用 列出属性和变量udevadm info -n /dev/???,但没有看到与分区标志相关的任何内容。

答案1

对于 GPT 磁盘,UUID 已分配给各个分区类型。对于连接到系统的磁盘,这是一个不同的参数,请使用lsblk -o +PARTTYPE

udev 规则现在如下所示:

# Rules to give VirtualBox users raw access to Windows partitions

# Microsoft Reserved partitions (msftres)
SUBSYSTEM=="block", ENV{ID_PART_ENTRY_TYPE}=="e3c9e316-0b5c-4db8-817d-f92df00215ae", GROUP="vboxusers"

# Windows basic data partitions (msftdata)
SUBSYSTEM=="block", ENV{ID_PART_ENTRY_TYPE}=="ebd0a0a2-b9e5-4433-87c0-68b6b72699c7", GROUP="vboxusers"

请注意,这仅适用于使用 GPT 分区的磁盘。为了检测 MBR 磁盘上的 Windows 分区,需要采用不同的技术。


UUID环境变量

由于 udev 可以访问各种 UUID 环境变量,因此我在这里列出了它们。

  • ID_PART_TABLE_UUID:对于特定的分区表是唯一的,大多数情况下可以用来唯一标识一个磁盘
  • ID_PART_ENTRY_TYPE:对于特定类型的分区是唯一的。 GPT 分区类型列表可在维基百科
  • ID_PART_ENTRY_UUID:唯一标识一个GPT分区
  • ID_FS_UUID:唯一标识一个文件系统
    • 如果重新格式化分区,则会发生变化
    • 如果特定文件系统不支持 UUID,则使用较短的标识符。

相关内容