0 votos

Cómo reconstruir una partición Mac que muestra un tamaño de tabla GPT inesperado

Estoy intentando reconstruir una partición Mac para un hdd Hitachi externo de 3TB que recientemente falló al montarse. Aparte de un tamaño de tabla GPT inesperado que voy a mostrar más adelante, este problema unidad parece similar a Cómo arreglar la partición del disco duro de Mac que muestra como Fdisk_partition_scheme .

He aquí algunos antecedentes e información sobre la unidad que he recopilado:

Como la carcasa de la unidad parecía tener una conexión suelta, se le cambió la carcasa. Como precaución y para tener una copia de trabajo, se utilizó dd para crear una imagen de toda la unidad de 3 TB. Para cualquier paso que requiera un dispositivo como entrada, adjunto la imagen usando hdiutil attach -nomount path/to/file.dmg .

La unidad se formateó originalmente con una sola partición utilizando Mac OS X Snow Leopard. Encontré el GUID del tipo de partición HFS+ mientras escaneaba los datos en el editor hexadecimal, Hex Fiend: 53746F72-6167-11AA-AA11-00306543ECAC (contenedor de volumen Apple Core Storage Container HFS+ FileVault). Esto fue seguido por la 1 ª parte EFI entrada está en el offset 4096: HFS GUID, EFI part

La 1ª partición del sistema EFI está en el offset 8192: EFI/GPT

He intentado extraer la información de las particiones GPT/EFI y HFS de la imagen anterior:

06 00 00 00 00 00 00 00 = 6 (inicio de EFI).

05 C8 00 00 00 00 00 00 = 51205 (fin de EFI).

06 C8 00 00 00 00 00 00 = 51206 (inicio de HFS).

6F 94 A9 2B 00 00 00 00 = 732533871 (fin de HFS).

La partición secundaria del sistema EFI en el offset 3000592957440 parecía contener los mismos valores de inicio y fin, y la entrada secundaria de la parte EFI estaba en el offset 3000592973824.

La 1ª entrada HFSJ se encontró en el offset 209740800: HFSJ

El número total de bytes viene dado por diskutil info es 3000592982016: diskutil info

Si el tamaño del volumen principal HFS es 732533871 - 51205 = 732482666 bloques, entonces el tamaño del bloque lógico debería ser 4096 (lo que da un total de # bloques en disco = 732566646). Aunque diskutil info dio un tamaño de bloque de 512 bytes (imagen superior).

Desafortunadamente gdisk no pudo leer los datos GPT:

GPT fdisk (gdisk) version 1.0.4 
Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: not present

Esto es lo que he utilizado como un intento de empezar a reconstruir la tabla de particiones GPT (siguiendo Cómo arreglar la partición del disco duro de Mac que muestra como Fdisk_partition_scheme ):

sudo dd if=/dev/zero of=/dev/disk2 bs=512 count=40
sudo gpt create /dev/disk2

Luego corrí sudo gpt -r show /dev/disk2 que dio un tamaño de tabla GPT inesperado:

  start   size  index  contents
  0      1         PMBR
  1      1         Pri GPT header
  2     18         Pri GPT table
 20      1
 21     18         Sec GPT table
 39      1         Sec GPT header

Después de los resultados anteriores de la utilidad GPT, no estaba seguro de qué tamaño de bloque lógico utilizar para reconstruir las tablas de particiones EFI y HFS.

Gracias por su ayuda.

1/31/2020 Actualización

Terminé usando rsync para hacer otra copia de imagen de disco de 3 TB (he estado guardando la imagen de disco original que se creó a través de dd como copia de seguridad).

Creo que localicé la 3ª partición en el offset 3000458738688 bytes (era la 1ª cadena de datos tras el final del volumen principal HFS). Parece que termina en el offset 3000582143352 o 3000582143360 (se agradece cualquier opinión al respecto): Mac boot partition

A diferencia de EFI/GPT y HFS, no parecía haber direcciones de inicio o fin en ninguna cabecera que pudiera extraer para esta 3ª partición de arranque. Tenga en cuenta que he añadido imágenes de partición más grandes para mostrar esto. Así que intentaré usar los bytes estimados arriba (convirtiendo a sectores/bloques) como entrada para la 3ª partición de arranque. gpt add paso.

Gracias de nuevo por sus comentarios.

0 votos

¿Está seguro de haber ejecutado los comandos sudo dd if=/dev/zero of=/dev/disk2 bs=512 count=40 y sudo gpt create /dev/disk2 ? Lo pregunto porque para recrear los resultados que has publicado, tendría que ejecutar los comandos sudo dd if=/dev/zero of=path/to/file.dmg bs=512 count=40 y sudo gpt create path/to/file.dmg .

0 votos

@DavidAnderson, Gracias por tu respuesta. Lo probaré en cuanto vuelva a crear el archivo de imagen de disco completo (tardaré un par de días en hacer otra copia de mi original para trabajar con ella). Tienes razón en que en realidad ejecuté esos comandos en la imagen en lugar de en el dispositivo. Me aseguraré de ejecutarlos en el dispositivo la próxima vez siguiendo tus instrucciones. ¿Seguiría funcionando 'gpt destroy disk2' si la utilidad GPT no puede detectar las cabeceras GPT (cuando ejecuté 'gpt recover', dio 'no primary or secondary GPT headers, can't recover')?

0 votos

Cuando estaba probando los pasos que publicaste en tu pregunta, el comando sudo dd if=/dev/zero of=/dev/disk2 bs=512 count=40 no era suficiente para poder ejecutar sudo gpt create /dev/disk2 . Supongo que la razón de esto era que todavía existía un GPT secundario al final de la unidad. El sudo gpt destroy /dev/disk2 era necesario. Utilización de gpt destroy antes de gpt create puede no ser siempre necesario, pero introducir el comando no debería hacer daño.

0voto

David Anderson Puntos 2189

Sobre la base de la última información publicada en la pregunta, esto es lo que hay que introducir. Se supone que los valores publicados son correctos. La unidad utiliza un tamaño de sector de 4096. Dado que los archivos de imagen tienen un tamaño de sector de 512 bytes, todos los valores deben multiplicarse por 8.

Nota: Es posible que aparezca un mensaje de error al introducir el comando para destruir la GPT. Debe ignorar este mensaje.

sudo chown $USER:staff path/to/file.dmg
hdiutil attach -nomount path/to/file.dmg
gpt destroy disk2
gpt create disk2
gpt add -i 1 -b $((6*8)) -s $(((51205-6+1)*8)) -t efi disk2
gpt add -i 2 -b $((51206*8)) -s $(((732533871-51206+1)*8)) -t hfs disk2
diskutil mount disk3

La GPT que planteó tiene un GUID de tipo de partición para Core Storage, pero el encabezado que publicó para esta partición indica que el GUID de tipo de partición debería ser para una partición Hierarchical File System Plus (HFS+). Mi respuesta asumió que el encabezado es correcto.

Referencias

El requisito de tamaño de 16.384 bytes para la matriz de entrada de partición GPT se define en la sección 5.3.1 "Visión general de GPT" en la página 117 del Especificación de la interfaz de firmware extensible unificada (UEFI) versión 2.8, marzo de 2019.

Nota técnica TN1150: Formato de volumen HFS Plus

Tabla de partición GUID

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X