标签ID_PART_ENTRY_UUID
是如何计算的?我可以从 出发ID_PART_TABLE_UUID
吗ID_PART_ENTRY_UUID
?
GPT
我有一个带有分区表和一些分区的磁盘。
我需要确定哪些分区与我的磁盘相关。磁盘中的所有分区都引用该磁盘中的分区表。我可以找到这个分区表 ID udevadm
:
$ sudo udevadm info /dev/loop18p1 | grep ID_PART_TABLE_UUID
E: ID_PART_TABLE_UUID=75e3b937-1ff1-4166-a51f-524b98278e6e
然而,不幸的是udevadm
(以及parted
等等)不适合我,我必须使用blkid
我可以从磁盘找到分区表 ID:
$ sudo blkid -po udev /dev/loop18 | grep ID_PART_TABLE_UUID
ID_PART_TABLE_UUID=75e3b937-1ff1-4166-a51f-524b98278e6e
但ID_PART_TABLE_UUID
分区中不存在:
$ sudo blkid -po udev /dev/loop18p1
ID_PART_ENTRY_SCHEME=gpt
ID_PART_ENTRY_NAME=primary
ID_PART_ENTRY_UUID=bcf5e461-90db-4625-a471-6c1d61126773
ID_PART_ENTRY_TYPE=0fc63daf-8483-4772-8e79-3d69d8477de4
ID_PART_ENTRY_NUMBER=1
ID_PART_ENTRY_OFFSET=34
ID_PART_ENTRY_SIZE=195279
ID_PART_ENTRY_DISK=7:18
只有ID_PART_ENTRY_UUID
。在MBR
分区表中,ID_PART_ENTRY_UUID
只是ID_PART_TABLE_UUID
加上分区的序号,所以我可以轻松处理它。但GPT
表中ID_PART_ENTRY_UUID
是一个棘手的哈希值。我想这个哈希值ID_PART_TABLE_UUID
与我可以用它来识别磁盘分区相关。
那么,这个哈希值ID_PART_ENTRY_UUID
是如何计算的呢?我可以ID_PART_TABLE_UUID
从出发吗ID_PART_ENTRY_UUID
?
我想这是可能的,因为udevadm
可以做到。
更新:实际上我使用绑定来liblkid
代替 CLI blkid
,但我认为这并不重要。
答案1
对于 GPTID_PART_TABLE_UUID
和不相关,这些只是来自 GPT 标头(对于)和 GPT 分区条目(对于)ID_PART_ENTRY_UUID
的唯一 UUID(或者实际上是在 libblkid 中转换为 UUID 的 GUID)。ID_PART_TABLE_UUID
ID_PART_ENTRY_UUID
UDev 拥有这些信息只是因为它具有基本的父子关系知识,并且对于分区,来自父级(磁盘)的一些基本信息被添加到分区数据中(请参阅60-persistent-storage.rules UDev 规则)。