HFS+ número no válido de bloques de asignación

De acuerdo, hace unos días quería instalar Ubuntu GNOME sobre Ubuntu normal y me dio la opción de sobrescribir automáticamente mi instalación de Ubuntu (que tenía en una partición separada de mi OS X Yosemite). Sin embargo, después de instalar GNOME de esta manera, parecía que el instalador también eliminó mi partición OS X.

Desde entonces, he intentado varias cosas para recuperar mi partición Mac, he usado TestDisk para encontrar los sectores y gdisk para recrear la tabla de particiones (y las particiones). El problema es que no puedo montar estas nuevas particiones. Probé fsck.hfsplus para reparar la partición, pero me da el siguiente error (arrancado desde el USB de prueba de GNOME):

ubuntu-gnome@ubuntu-gnome:~$ sudo fsck.hfsplus /dev/sda2
** /dev/sda2
** Checking HFS Plus volume.
   Invalid number of allocation blocks
(4294967295, 0)
** Volume check failed.

Aquí están los resultados de mi disco de prueba:

Resultados del disco de pruebaAquí están las particiones que hice en gdisk:

Number  Start (sector)    End (sector)  Size       Code  Name
   1              34          409633   200.0 MiB   EF00  EFI System Partition
   2          411648      1164570455   555.1 GiB   AF00  Apple HFS/HFS+
   3      1165256704      1166528119   620.8 MiB   AF00  Apple HFS/HFS+
   4      1166528512      1182543855   7.6 GiB     8200  Linux swap
   5      1182543872      1465147391   134.8 GiB   8300  Linux filesystem

Aquí están las diferentes salidas después de iniciar el modo de recuperación de Internet:

diskutil list:

-bash-3.2# diskutil list /dev/disk0
   #:                        TYPE NAME                    SIZE        IDENTIFIER
   0:       GUID_partition_scheme                         *750.2 GB   disk0
   1:                         EFI                          209.7 MB   disk0s1
   2:                   Apple_HFS                          596.0 GB   disk0s2
   3:                   Apple_HFS                          651.0 MB   disk0s3
   4:                  Linux Swap                          8.2 GB     disk0s4
   5: 0FC63DAF-8483-4772-8E79-3D69D8477DE4                 144.7 GB   disk0s5
/dev/disk1
   #:                        TYPE NAME                    SIZE        IDENTIFIER
   0:      Apple_partition_scheme                         *1.2 GB     disk1
   1:         Apple_partition_map                          30.7 KB    disk1s1
   2:                   Apple_HFS Mac OS X Base System     1.2 GB     disk1s2

/dev/disk2-disk12 are part of the recovery system and irrelevant here

diskutil cs list:

No CoreStorage logical volume groups found

gpt -r -vv show /dev/disk0:

-bash-3.2# gpt -r -vv show /dev/disk0
gpt show: /dev/disk0: mediasize=750156374016; sectorsize=512; blocks=1465149168
gpt show: /dev/disk0: PMBR at sector 0
gpt show: /dev/disk0: Pri GPT at sector 1
gpt show: /dev/disk0: Sec GPT at sector 1465149167
       start        size index contents
           0           1       PMBR
           1           1       Pri GPT header
           2          32       Pri GPT table
          34      409600     1 GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
      409634        2014                                                     
      411648  1164158808     2 GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  1164570456      686248
  1165256704     1271416     3 GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  1166528120         392
  1166528512    16015344     4 GPT part - 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
  1182543856          16
  1182543872   282603520     5 GPT part - 0FC63DAF-8483-4772-8E79-3D69D8477DE4
  1465147392        1743
  1465149135          32       Sec GPT table
  1465149167           1       Sec GPT header
@klanomath gracias por tu respuesta. He editado mi pregunta (lo siento, tomó un tiempo)
Lo intenté también en realidad. La razón por la que los sectores en las particiones que hice son ligeramente diferentes es porque reparé el volumen usando la utilidad de disco. Cuando trato de reparar las particiones individuales, también obtengo errores. Iniciaré la recuperación nuevamente y editaré este comentario con esos errores.
Gracias. Probaré tu respuesta. ¿Qué posibilidades tengo de recuperar la partición que crees? No tiene que ser de arranque, solo necesito un par de archivos (hfsprescue no es una opción en este momento porque tendría que restaurar todo y no tengo una unidad flash de 700 gb). Reinstalar OS X no es un problema.
@klanomath De acuerdo, la Utilidad de disco en la recuperación dio los mismos errores. Instalaré Yosemite en la unidad flash de GNOME y probaré DiskWarrior y wxHexEditor. A Stack no le gustan los comentarios extensos, así que también moveré esto a un chat.

Respuestas (1)

En mi opinión, "TestDisk" lavó su GPT.

Compare el resultado de TestDisk con mis discos. Los discos de mi ejemplo tienen el mismo tamaño, disk0 contiene una partición CoreStorage y disk2 una partición JHFS+ de estilo antiguo. Estoy usando dos discos separados porque no se sabe (al menos para mí) qué tipo de formato (CS o JHFS+) se usó originalmente.

El PMBR/GPT y las primeras tres particiones (EFI/Macintosh HD/Recovery HD) deberían verse así, si anteriormente tenía una partición CoreStorage:

    root# gpt -r -vv show disk0
gpt show: disk0: mediasize=68719476736; sectorsize=512; blocks=134217728
gpt show: disk0: PMBR at sector 0
gpt show: disk0: Pri GPT at sector 1
gpt show: disk0: Sec GPT at sector 134217727
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  132538512      2  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
  132948152    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC

o así, si anteriormente tenía un volumen JHFS+ clásico:

root# gpt -r -vv show disk2
gpt show: disk2: mediasize=68719476736; sectorsize=512; blocks=134217728
gpt show: disk2: PMBR at sector 0
gpt show: disk2: Pri GPT at sector 1
gpt show: disk2: Sec GPT at sector 134217727
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  132538512      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  132948152    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC

(Tenga en cuenta que el tamaño del medio, los bloques, el sector del GPT secundario, el tamaño del segundo volumen y el bloque de inicio del tercer volumen son diferentes a los suyos, porque aquí uso discos de ejemplo más pequeños).

Su problema debería resolverse reescribiendo el GPT una vez más.

Preparación:

Instale un sistema de vainilla completo (Mavericks o Yosemite deberían funcionar) en una memoria USB (o una unidad externa). Un sistema de recuperación no funcionará. Inicie en la memoria USB, descargue e instale wxHexEditor . Habilite el usuario root e inicie sesión como root.

Sugerencia: mientras trabaja con wxHexEditor, no use copiar y pegar. ¡Ingrese todo manualmente! Puede escribir accidentalmente directamente en su disco.

¿Partición JHFS+ o CoreStorage?

Primero debe determinar si tenía una partición JHFS+ o CoreStorage en el número de índice 2.

Abre la Calculadora. Abra wxHexEditor. Comprueba que trabajas en modo de solo lectura ("Opciones" -> "Modo de archivo" -> "Solo lectura"). En la barra de menú, vaya a "Dispositivos" -> "Abrir dispositivo de disco" -> elija el número de disco apropiado. Probablemente sea disk0. El disco debe tener más particiones (disk0s1 - disk0s5). Intente organizar la ventana de wxHexEditor como en los ejemplos a continuación con líneas rojas rectas.

Luego presione el botón "Ir a compensación" (marcado con el círculo verde) e ingrese 409640 exactamente como en la imagen a continuación. A veces tienes que hacer eso dos veces para saltar al sector correcto. Vuelva a verificar el sector correcto ingresando el desplazamiento (marcado en rojo) en la Calculadora y divídalo entre 512.

Los primeros 3 sectores de una partición CoreStorage se ven así:

cs

Los primeros 3 sectores de un JHFS+ se ven así:

jhfs+

Si obtiene una imagen fundamentalmente diferente, deténgase aquí.

¿Dónde comienza la partición EFI?

Presione el botón "Ir a compensación" e ingrese 40 exactamente como en la imagen a continuación:

efi

Si ve las mismas entradas que en la imagen de arriba (XEBSD 4.4...EFI...FAT32), este es el sector de inicio de su partición EFI. Si solo hay ceros, esto también podría ser válido.

¿Dónde comienza la partición Recovery HD?

Esa es probablemente la parte más difícil porque tienes que encontrar una cadena que no sea muy específica. Salta casi hasta el final de tu segunda partición (en tu caso ~400 MB/781250 sectores menos que 1164570456 = 1163789206)

Luego ingrese "HFSJ" como en la imagen a continuación, busque esta cadena dos veces y tome notas de las diferentes compensaciones:

rhh

Puede obtener dos resultados realmente diferentes según el tipo de partición:

  1. Calcular el número de sector del primer hallazgo. En mi ejemplo (ver imagen arriba) es 68069452800/512=132948150. Continúe buscando y calcule el sector del segundo hallazgo. En mi caso fue 68069454848/512=132948154 (sin foto).
    La diferencia entre los dos hallazgos es de 4 bloques (=2 KB).

    Esto es típico para el límite entre una partición JHFS+ y Recovery HD. El Recovery HD comienza entonces en el sector del segundo hallazgo - 2 (en mi ejemplo 132948154-2=132948152).

  2. Calcular el número de sector del primer hallazgo. En mi ejemplo, fue 67733904384/512=132292782 (sin imagen). Continúe buscando y calcule el sector del segundo hallazgo. En mi caso fue 68069454848/512=132948154 (sin foto). La diferencia entre los dos resultados es 655372 (~336 MB)

    Esto es típico para el límite entre una partición CoreStorage y Recovery HD. El Recovery HD comienza entonces en el sector del segundo hallazgo - 2 (en mi ejemplo 132948154-2=132948152).

Con esos resultados, debería poder restaurar su GPT correctamente. Salga de wxHexEditor. Si se le pide que guarde los cambios, ¡ no los guarde! .

Reconstruir un GPT adecuado

Aquí asumo que el identificador de su disco principal es disk0. Primero tienes que desmontar tu disco principal:

diskutil umountDisk disk0

Verifique el diseño de la partición y luego elimine las primeras tres particiones:

gpt -r -vv show /dev/disk0

gpt remove -i 3 disk0
gpt remove -i 2 disk0
gpt remove -i 1 disk0

Dado que EFI y Recovery HD suelen tener tamaños fijos, podemos calcular el bloque inicial y final de su volumen principal.

Primero reconstruimos el EFI con:

gpt add -b 40 -i 1 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk0

Luego calculamos el tamaño del volumen principal: el bloque de inicio es 409640. El bloque final se ha encontrado en la sección "¿Dónde comienza la partición de Recovery HD?": 1 menos que el bloque de inicio de Recovery HD. El tamaño es entonces StartBlockOfRecoveryHD-409640.

Si ha encontrado un JHFS+ clásico anteriormente, el siguiente comando debería corregir la partición 2:

gpt add -b 409640 -i 2 -s StartBlockOfRecoveryHD-409640 -t 48465300-0000-11AA-AA11-00306543ECAC disk0

Si ha encontrado una partición CoreStorage anteriormente, el siguiente comando debería reparar la partición 2:

gpt add -b 409640 -i 2 -s StartBlockOfRecoveryHD-409640 -t 53746F72-6167-11AA-AA11-00306543ECAC disk0

Para reconstruir el disco duro de recuperación, ingrese:

gpt add -b StartBlockOfRecoveryHD -i 3 -s 1269536 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk0

Vuelva a montar disk0 con:

diskutil mountDisk disk0

Salga de Terminal, inicie la Utilidad de Discos y verifique su volumen principal (probablemente Macintosh HD) en busca de errores e intente repararlos si es necesario.
Si encontraste una partición de CoreStorage anteriormente, es posible que tengas que reiniciar en tu memoria USB antes de reparar los volúmenes con la Utilidad de disco, porque es posible que el volumen lógico de CoreStorage no se reconozca o no se monte correctamente. En su configuración, 1 disco principal y la memoria USB, el volumen lógico debe ser disk2.

Espero que esto resuelva tus problemas.

Si tiene problemas (por ejemplo, no puede encontrar el sector de inicio correcto de su HD de recuperación), tiene dudas o preguntas, deténgase inmediatamente y contácteme con un comentario @klanomath.