A cosa serve la firma dell'intestazione GPT?


13

Secondo questo articolo di Wikipedia , il secondo indirizzo di blocco logico di una tabella delle partizioni GUID (LBA 1) è l'intestazione GPT primaria. Indica quindi nella sezione relativa all'intestazione che i primi 8 byte dell'intestazione sono per una "Firma".

Che cos'è questa firma dell'intestazione GPT e qual è la sua rilevanza per la funzione / operazione della tabella GPT / dispositivo di archiviazione?

Ho cercato sul Web, ma ho trovato pochissime informazioni su cosa serve questa firma di intestazione.

Modificare:

Ho posto queste domande successive nei commenti alla risposta di Deltik , che hanno ampliato utilmente per affrontare:

  • Se la firma fosse vuota, la tabella GPT non verrebbe riconosciuta?
  • Attualmente sto ispezionando un GPT di Chrome OS, dove la firma sembra essere stata impostata su "IGNOREME". Che effetto avrebbe?
  • Sono disponibili altre firme GPT valide? (a parte la "PARTE EFI" predefinita)

Risposte:


23

La firma EFI PART( 0x45 0x46 0x49 0x20 0x50 0x41 0x52 0x54) dice semplicemente "Questa è una tabella delle partizioni GUID". È il modo in cui il software sa che il dispositivo a blocchi è formattato nel layout GPT.

Puoi vederlo da questo frammento di un 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  |................|
*

Le firme non sono esclusive di GPT. I file hanno anche firme che il software può utilizzare per identificare quali sono i file. Questo è il meccanismo di funzionamento del filecomando. ( Esempi difile )


Risposte a domande di follow-up

Quindi, se questa firma fosse vuota, la tabella delle partizioni GPT non verrebbe riconosciuta?

Almeno, gdisknon lo riconoscerei più. Dai un'occhiata a questa demo:

  1. Crea un file (che funge da dispositivo a blocchi) per la demo:

    root@demo [/tmp]# truncate -s 1M gpt-demo
    
  2. Formatta il file con 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. Controlla i dati binari della tabella delle partizioni:

    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. Esamina come gdisklegge la tabella delle partizioni:

    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. Cambia la firma GPT:

    root@demo [/tmp]# sed -i 's/EFI PART/IGNOREME/g' gpt-demo
    
  6. Verifica che la firma sia stata cancellata:

    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. Si noti che la tabella delle partizioni GUID (GPT) non è più riconosciuta da 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
    

Attualmente sto ispezionando un GPT di Chrome OS, dove la firma sembra essere stata impostata su "IGNOREME". Sai quale effetto avrebbe?

Per quanto ne so dalla demo sopra, se la firma è diversa da EFI PART, GPT non viene riconosciuto.

La IGNOREME"firma" è una firma speciale creata da Chromium. Questa è la documentazione che ho trovato perIGNOREME :

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>

Hai controllato il GPT secondario alla fine del dispositivo disco / blocco?

Sono disponibili altre firme GPT valide?

No, non ci sono firme se non EFI PARTquella che è l'unica firma nella specifica UEFI (vedi pagina 123). ( Copia di archivio della specifica UEFI versione 2.7 (Errata A) )


Questo è interessante, grazie. Quindi, se questa firma fosse vuota, la tabella delle partizioni GPT non verrebbe riconosciuta? Attualmente sto ispezionando un GPT di Chrome OS, dove la firma sembra essere stata impostata su "IGNOREME". Sai quale effetto avrebbe? Sono disponibili altre firme GPT valide?
Time4Tea,

3
@ Time4Tea: ho risposto alle tue domande di follow-up in una modifica alla mia risposta sopra.
Deltik,

1
Ottima modifica. Grazie per una risposta così dettagliata!
Time4Tea,

Quindi, "IGNOREME" potrebbe significare qualcosa per Chromium / Chrome OS, ma se dovessi collegare il dispositivo a un sistema Linux "normale", probabilmente non lo riconoscerebbe?
Time4Tea,

2
@ Time4Tea: corretto. Nella mia risposta puoi vedere dalla mia risposta che Linux non è più in grado di riconoscere il layout GPT dopo aver cambiato la firma in IGNOREME.
Deltik,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.