GPT에서 ID_PART_ENTRY_UUID를 계산하는 방법은 무엇입니까?

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

그러나 불행하게도 나에게는 작동하지 않는 udevadmparted의 방법을 사용해야 합니다.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

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 규칙).

관련 정보