¿Para qué sirve la firma de encabezado GPT?

13

Según este artículo de Wikipedia , la segunda dirección de bloque lógico de una tabla de particiones GUID (LBA 1) es el encabezado GPT principal. Luego establece en la sección sobre el encabezado que los primeros 8 bytes del encabezado son para una 'Firma'.

¿Cuál es esta firma de encabezado GPT y cuál es su relevancia para la función / operación de la tabla GPT / dispositivo de almacenamiento?

He buscado en la web, pero encontré muy poca información sobre para qué sirve esta firma de encabezado.

Editar:

Hice estas preguntas de seguimiento en los comentarios a la respuesta de Deltik , que ampliaron muy útilmente para abordar:

  • Si la firma estaba en blanco, ¿no se reconocería la tabla GPT?
  • Actualmente estoy inspeccionando un GPT de Chrome OS, donde la firma parece haberse configurado en 'IGNOREME'. ¿Qué efecto tendría eso?
  • ¿Hay otras firmas GPT válidas disponibles? (aparte de la 'PARTE EFI' predeterminada)
Time4Tea
fuente

Respuestas:

23

La firma EFI PART( 0x45 0x46 0x49 0x20 0x50 0x41 0x52 0x54) simplemente dice "Esta es una tabla de particiones GUID". Así es como el software sabe que el dispositivo de bloque está formateado en el diseño GPT.

Puedes verlo desde este fragmento de 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  |................|
*

Las firmas no son exclusivas de GPT. Los archivos también tienen firmas que el software puede usar para identificar cuáles son los archivos. Este es el mecanismo de operación del filecomando. ( Ejemplos defile )


Respuestas a las preguntas de seguimiento

Entonces, si esta firma estaba en blanco, ¿no se reconocería la tabla de particiones GPT?

Al menos, gdiskya no lo reconocería. Mira esta demostración:

  1. Cree un archivo (que actúe como un dispositivo de bloque) para la demostración:

    root@demo [/tmp]# truncate -s 1M gpt-demo
    
  2. Formatee el archivo 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. Verifique los datos binarios de la tabla de particiones:

    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. Examina cómo se gdisklee la tabla de particiones:

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

    root@demo [/tmp]# sed -i 's/EFI PART/IGNOREME/g' gpt-demo
    
  6. Verifique que la firma fue insertada:

    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. Observe que la tabla de particiones GUID (GPT) ya no es reconocida por 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
    

Actualmente estoy inspeccionando un GPT de Chrome OS, donde la firma parece haberse configurado en 'IGNOREME'. ¿Sabes qué efecto tendría eso?

Por lo que puedo ver en la demostración anterior, si la firma es diferente EFI PART, GPT no se reconoce.

La IGNOREME"firma" es una firma especial creada por Chromium. Esta es la documentación que encontré paraIGNOREME :

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]>

¿Verificó el GPT secundario al final del dispositivo de disco / bloque?

¿Hay otras firmas GPT válidas disponibles?

No, no hay firmas más que EFI PARTporque esa es la única firma en la Especificación UEFI (consulte la página 123). ( Copia de archivo de la especificación UEFI Versión 2.7 (Errata A) )

Deltik
fuente
Esto es interesante, gracias. Entonces, si esta firma estaba en blanco, ¿no se reconocería la tabla de particiones GPT? Actualmente estoy inspeccionando un GPT de Chrome OS, donde la firma parece haberse configurado en 'IGNOREME'. ¿Sabes qué efecto tendría eso? ¿Hay otras firmas GPT válidas disponibles?
Time4Tea
3
@ Time4Tea: he respondido sus preguntas de seguimiento en una edición de mi respuesta anterior.
Deltik
1
Gran edición ¡Gracias por una respuesta tan detallada!
Time4Tea
Entonces, 'IGNOREME' podría significar algo para Chromium / Chrome OS, pero si tuviera que conectar el dispositivo a un sistema Linux 'normal', ¿probablemente no lo reconocería?
Time4Tea
2
@ Time4Tea: Correcto. Puede ver en la demostración en mi respuesta que Linux ya no puede reconocer el diseño GPT después de cambiar la firma a IGNOREME.
Deltik