Wofür ist die GPT-Headersignatur?

13

Gemäß diesem Wikipedia-Artikel ist die zweite logische Blockadresse einer GUID-Partitionstabelle (LBA 1) der primäre GPT-Header. In dem Abschnitt über den Header wird dann angegeben, dass die ersten 8 Bytes des Headers für eine 'Signatur' sind.

Was ist diese GPT-Headersignatur und welche Bedeutung hat sie für die Funktion / den Betrieb der GPT-Tabelle / des Speichergeräts?

Ich habe im Internet gesucht, aber nur sehr wenige Informationen darüber gefunden, wofür diese Headersignatur gedacht ist.

Bearbeiten:

Ich habe diese folgenden Fragen in den Kommentaren zu Deltiks Antwort gestellt , die sehr hilfreich erweitert wurden, um Folgendes zu adressieren:

  • Wenn die Signatur leer wäre, würde die GPT-Tabelle dann nicht erkannt werden?
  • Ich überprüfe derzeit ein Chrome OS GPT, bei dem die Signatur auf "IGNOREME" gesetzt zu sein scheint. Welchen Effekt hätte das?
  • Gibt es andere gültige GPT-Signaturen? (abgesehen von der Standardeinstellung 'EFI PART')
Time4Tea
quelle

Antworten:

23

Die Signatur EFI PART( 0x45 0x46 0x49 0x20 0x50 0x41 0x52 0x54) sagt einfach "Dies ist eine GUID-Partitionstabelle". So weiß die Software, dass das Blockgerät im GPT-Layout formatiert ist.

Sie können es aus diesem Ausschnitt eines Hexdumps sehen:

*
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  |................|
*

Signaturen sind nicht GPT-spezifisch. Dateien haben auch Signaturen , anhand derer die Software erkennen kann, um welche Dateien es sich handelt. Dies ist der Funktionsmechanismus des fileBefehls. ( Beispiele vonfile )


Antworten auf nachfolgende Fragen

Wenn diese Signatur leer wäre, würde die GPT-Partitionstabelle nicht erkannt werden?

Zumindest gdiskwürde es nicht mehr erkennen. Schauen Sie sich diese Demo an:

  1. Erstellen Sie eine Datei (die als Blockgerät fungiert) für die Demo:

    root@demo [/tmp]# truncate -s 1M gpt-demo
    
  2. Formatieren Sie die Datei mit 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. Überprüfen Sie die Binärdaten der Partitionstabelle:

    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. Untersuchen Sie, wie gdiskdie Partitionstabelle gelesen wird:

    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. Ändern Sie die GPT-Signatur:

    root@demo [/tmp]# sed -i 's/EFI PART/IGNOREME/g' gpt-demo
    
  6. Stellen Sie sicher, dass die Signatur mit einem Nuk versehen wurde:

    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. Beachten Sie, dass die GUID-Partitionstabelle (GPT) nicht mehr erkannt wird von 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
    

Ich überprüfe derzeit ein Chrome OS GPT, bei dem die Signatur auf "IGNOREME" gesetzt zu sein scheint. Wissen Sie, was das bewirken würde?

Soweit ich aus der obigen Demo EFI PARTersehen kann, wird GPT nicht erkannt , wenn sich die Signatur von unterscheidet .

Die IGNOREME"Signatur" ist eine von Chromium erstellte Spezialsignatur. Dies ist die Dokumentation, fürIGNOREME die ich gefunden habe :

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 <[email protected]>
Reviewed-on: https://chromium-review.googlesource.com/340072
Reviewed-by: Nam Nguyen <[email protected]>

Haben Sie die sekundäre GPT am Ende des Festplatten- / Blockiergeräts überprüft?

Gibt es andere gültige GPT-Signaturen?

Nein, es gibt keine anderen Signaturen als die, EFI PARTda dies die einzige Signatur in der UEFI-Spezifikation ist (siehe Seite 123). ( Archivkopie der UEFI-Spezifikation Version 2.7 (Errata A) )

Deltik
quelle
Das ist interessant, danke. Wenn diese Signatur leer wäre, würde die GPT-Partitionstabelle nicht erkannt werden? Ich überprüfe derzeit ein Chrome OS GPT, bei dem die Signatur auf "IGNOREME" gesetzt zu sein scheint. Wissen Sie, was das bewirken würde? Gibt es andere gültige GPT-Signaturen?
Time4Tea
3
@ Time4Tea: Ich habe Ihre Anschlussfragen in einer Bearbeitung zu meiner Antwort oben beantwortet.
Deltik
1
Großartige Bearbeitung. Vielen Dank für eine so ausführliche Antwort!
Time4Tea
"IGNOREME" könnte also etwas für Chromium / Chrome OS bedeuten, aber wenn ich das Gerät an ein "normales" Linux-System anschließen würde, würde es es wahrscheinlich nicht erkennen?
Time4Tea
2
@ Time4Tea: Richtig. Sie können der Demo in meiner Antwort entnehmen, dass Linux das GPT-Layout nach dem Ändern der Signatur in nicht mehr erkennen kann IGNOREME.
Deltik