在 GPT 中如何計算 ID_PART_ENTRY_UUID?
標籤
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
而不是 CLIblkid
,但我想這沒關係。
對於 GPT
ID_PART_TABLE_UUID
並且ID_PART_ENTRY_UUID
不相關,這些只是來自 GPT 標頭 (forID_PART_TABLE_UUID
) 和 GPT 分區條目 (for ) 的唯一 UUID(或者實際上是在 libblkid 中轉換為 UUID 的 GUIDID_PART_ENTRY_UUID
)。UDev 擁有這些資訊僅僅是因為它具有基本的父子關係知識,並且對於分區,來自父(磁碟)的一些基本資訊被添加到分區數據中(參見60-persistent-storage.rules UDev 規則)。