GPTでID_PART_ENTRY_UUIDを計算する方法は?

GPTでID_PART_ENTRY_UUIDを計算する方法は?

ラベルはどのようにID_PART_ENTRY_UUID計算されますか?から始めることができますかID_PART_TABLE_UUIDID_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_UUIDMBRパーティションテーブルにパーティションのシリアル番号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

GPTに関連しない場合、これはID_PART_TABLE_UUIDGPTヘッダー(for)とGPTパーティションエントリ(for)のID_PART_ENTRY_UUID一意のUUID(または実際にはlibblkidからUUIDに変換されたGUID)です。ID_PART_TABLE_UUIDID_PART_ENTRY_UUID

UDevには親と子の関係に関する基本的な知識があり、パーティションの場合、親(ディスク)の一部の基本情報がパーティションデータに追加されるため、この情報のみがあります(参照:60-永続-storage.rules UDevルール)。

関連情報