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:
Aquí 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
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í:
Los primeros 3 sectores de un JHFS+ se ven así:
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:
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:
Puede obtener dos resultados realmente diferentes según el tipo de partición:
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).
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.
Roemer
Roemer
Roemer
Roemer
Roemer