GPT 헤더 서명은 무엇입니까?


13

Wikipedia article 에 따르면 GUID 파티션 테이블 (LBA 1)의 두 번째 논리 블록 주소는 기본 GPT 헤더입니다. 그런 다음 헤더의 첫 8 바이트가 '서명'에 대한 것임을 헤더에 대해 설명합니다.

이 GPT 헤더 서명은 무엇이며 GPT 테이블 / 스토리지 장치의 기능 / 작동과 관련이 있습니까?

웹에서 검색했지만이 헤더 서명의 내용에 대한 정보는 거의 없습니다.

편집하다:

Deltik의 답변 에 대한 의견에서 다음과 같은 질문을했습니다 .

  • 서명이 비어 있으면 GPT 테이블이 인식되지 않습니까?
  • 현재 서명이 'IGNOREME'로 설정된 것으로 보이는 Chrome OS GPT를 검사하고 있습니다. 어떤 영향을 미칩니 까?
  • 유효한 다른 유효한 GPT 서명이 있습니까? (기본 'EFI PART'는 제외)

답변:


23

서명 EFI PART( 0x45 0x46 0x49 0x20 0x50 0x41 0x52 0x54)은 단순히 "이것은 GUID 파티션 테이블"입니다. 소프트웨어가 블록 장치가 GPT 레이아웃으로 포맷되어 있음을 알고있는 방법입니다.

이 hexdump의 스 니펫에서 볼 수 있습니다.

*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200  45 46 49 20 50 41 52 54  00 00 01 00 5c 00 00 00  |EFI PART....\...|
00000210  ea b5 99 a4 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00000220  af 12 9e 3b 00 00 00 00  22 00 00 00 00 00 00 00  |...;....".......|
00000230  8e 12 9e 3b 00 00 00 00  7f 8c d6 05 c8 e8 01 4a  |...;...........J|
00000240  b8 74 6b 37 30 7c bf 15  02 00 00 00 00 00 00 00  |.tk70|..........|
00000250  80 00 00 00 80 00 00 00  10 d3 0e 29 00 00 00 00  |...........)....|
00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*

서명은 GPT에 고유하지 않습니다. 파일에는 소프트웨어가 파일을 식별하는 데 사용할 수 있는 서명 도 있습니다 . 이것이 file명령 의 작동 메커니즘입니다 . (의 file )


후속 질문에 대한 답변

따라서이 서명이 비어 있으면 GPT 파티션 테이블이 인식되지 않습니까?

적어도 gdisk더 이상 인식하지 못합니다. 이 데모를 확인하십시오.

  1. 데모 용 파일 (블록 장치로 작동)을 작성하십시오.

    root@demo [/tmp]# truncate -s 1M gpt-demo
    
  2. GPT로 파일을 포맷하십시오 :

    root@demo [/tmp]# sgdisk --clear gpt-demo
    Creating new GPT entries.
    Warning: The kernel is still using the old partition table.
    The new table will be used at the next reboot or after you
    run partprobe(8) or kpartx(8)
    The operation has completed successfully.
    
  3. 파티션 테이블의 이진 데이터를 확인하십시오.

    root@demo [/tmp]# hexdump -C gpt-demo
    00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001c0  02 00 ee 20 20 00 01 00  00 00 ff 07 00 00 00 00  |...  ...........|
    000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
    00000200  45 46 49 20 50 41 52 54  00 00 01 00 5c 00 00 00  |EFI PART....\...|
    00000210  13 14 6d 6a 00 00 00 00  01 00 00 00 00 00 00 00  |..mj............|
    00000220  ff 07 00 00 00 00 00 00  22 00 00 00 00 00 00 00  |........".......|
    00000230  de 07 00 00 00 00 00 00  be 2c cb 6e 58 d4 e3 46  |.........,.nX..F|
    00000240  84 84 3c 83 52 59 5b 58  02 00 00 00 00 00 00 00  |..<.RY[X........|
    00000250  80 00 00 00 80 00 00 00  86 d2 54 ab 00 00 00 00  |..........T.....|
    00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000ffe00  45 46 49 20 50 41 52 54  00 00 01 00 5c 00 00 00  |EFI PART....\...|
    000ffe10  18 3a 1f d9 00 00 00 00  ff 07 00 00 00 00 00 00  |.:..............|
    000ffe20  01 00 00 00 00 00 00 00  22 00 00 00 00 00 00 00  |........".......|
    000ffe30  de 07 00 00 00 00 00 00  be 2c cb 6e 58 d4 e3 46  |.........,.nX..F|
    000ffe40  84 84 3c 83 52 59 5b 58  df 07 00 00 00 00 00 00  |..<.RY[X........|
    000ffe50  80 00 00 00 80 00 00 00  86 d2 54 ab 00 00 00 00  |..........T.....|
    000ffe60  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00100000
    
  4. gdisk파티션 테이블을 읽는 방법을 검사하십시오 .

    root@demo [/tmp]# gdisk gpt-demo
    GPT fdisk (gdisk) version 1.0.3
    
    Partition table scan:
      MBR: protective
      BSD: not present
      APM: not present
      GPT: present
    
    Found valid GPT with protective MBR; using GPT.
    
    Command (? for help): q
    
  5. GPT 서명을 변경하십시오.

    root@demo [/tmp]# sed -i 's/EFI PART/IGNOREME/g' gpt-demo
    
  6. 서명이 nuk되었는지 확인하십시오.

    root@demo [/tmp]# hexdump -C gpt-demo
    00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001c0  02 00 ee 20 20 00 01 00  00 00 ff 07 00 00 00 00  |...  ...........|
    000001d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
    00000200  49 47 4e 4f 52 45 4d 45  00 00 01 00 5c 00 00 00  |IGNOREME....\...|
    00000210  13 14 6d 6a 00 00 00 00  01 00 00 00 00 00 00 00  |..mj............|
    00000220  ff 07 00 00 00 00 00 00  22 00 00 00 00 00 00 00  |........".......|
    00000230  de 07 00 00 00 00 00 00  be 2c cb 6e 58 d4 e3 46  |.........,.nX..F|
    00000240  84 84 3c 83 52 59 5b 58  02 00 00 00 00 00 00 00  |..<.RY[X........|
    00000250  80 00 00 00 80 00 00 00  86 d2 54 ab 00 00 00 00  |..........T.....|
    00000260  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000ffe00  49 47 4e 4f 52 45 4d 45  00 00 01 00 5c 00 00 00  |IGNOREME....\...|
    000ffe10  18 3a 1f d9 00 00 00 00  ff 07 00 00 00 00 00 00  |.:..............|
    000ffe20  01 00 00 00 00 00 00 00  22 00 00 00 00 00 00 00  |........".......|
    000ffe30  de 07 00 00 00 00 00 00  be 2c cb 6e 58 d4 e3 46  |.........,.nX..F|
    000ffe40  84 84 3c 83 52 59 5b 58  df 07 00 00 00 00 00 00  |..<.RY[X........|
    000ffe50  80 00 00 00 80 00 00 00  86 d2 54 ab 00 00 00 00  |..........T.....|
    000ffe60  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    00100000
    
  7. GUID 파티션 테이블 (GPT)은 더 이상 다음으로 인식되지 않습니다 gdisk.

    root@demo [/tmp]# gdisk gpt-demo
    GPT fdisk (gdisk) version 1.0.3
    
    Partition table scan:
      MBR: protective
      BSD: not present
      APM: not present
      GPT: not present
    
    Creating new GPT entries.
    
    Command (? for help): q
    

현재 서명이 'IGNOREME'로 설정된 것으로 보이는 Chrome OS GPT를 검사하고 있습니다. 어떤 영향을 줄지 알고 있습니까?

위의 데모에서 알 수 있듯이 서명이와 다르면 EFI PARTGPT가 인식되지 않습니다.

IGNOREME"서명"크롬에 의해 만들어진 특별한 서명입니다. 이것은 내가 찾은 문서입니다IGNOREME .

cgptlib: Add support for IGNOREME GPT signature

This patch makes cgpt aware of a special "IGNOREME" GPT header signature
string that may appear in either the primary or the secondary GPT and
cause cgpt (and other cgptlib clients) to completely ignore that GPT. It
will continue to function correctly for all other purposes (using the
data from the non-ignored GPT), but never write any data back to the
ignored GPT.

BRANCH=None
BUG=chrome-os-partner:52595
TEST=unit tests

Change-Id: I7e53542385ae9d8d24dc25b75e91f4ff4917f66f
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/340072
Reviewed-by: Nam Nguyen <namnguyen@google.com>

디스크 / 블록 장치 끝에서 보조 GPT를 확인 했습니까?

유효한 다른 유효한 GPT 서명이 있습니까?

아니요, UEFI 사양EFI PART 의 유일한 서명이기 때문에 이외의 서명은 없습니다 (123 페이지 참조). ( UEFI 사양 버전 2.7 (Errata A)의 아카이브 사본 )


감사합니다. 따라서이 서명이 비어 있으면 GPT 파티션 테이블이 인식되지 않습니까? 현재 서명이 'IGNOREME'로 설정된 Chrome OS GPT를 검사하고 있습니다. 어떤 영향을 줄지 알고 있습니까? 유효한 다른 유효한 GPT 서명이 있습니까?
Time4Tea

3
@ Time4Tea : 위의 답변을 수정하여 후속 질문에 답변했습니다.
Deltik

1
훌륭한 편집. 자세한 답변을 주셔서 감사합니다!
Time4Tea

따라서 'IGNOREME'는 Chromium / Chrome OS에 의미가있을 수 있지만 장치를 '일반적인'Linux 시스템에 연결하면 인식하지 못할 수 있습니까?
Time4Tea

2
@ Time4Tea : 맞습니다. 내 대답의 데모에서 서명을로 변경 한 후 Linux에서 더 이상 GPT 레이아웃을 인식 할 수 없음을 알 수 있습니다 IGNOREME.
Deltik
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.