2 votos

¿Cómo arreglar/restaurar una partición borrada de MacOS?

Tengo un Macbook Pro con MacOS X Catalina con una unidad SSD de 500G.

Instalé Bootcamp en él, y en un esfuerzo por expandir la partición de bootcamp, reduje la partición principal de MacOS en 64G. luego arranqué en Windows para expandir la partición de bootcamp usando MiniTool Partition Wizard.

En lugar de borrar sólo la partición recién creada de 64G, también borré por error la partición principal de OSX (usando el administrador de particiones, y luego haciendo clic con el botón derecho en la partición principal de MacOS, y seleccionando borrar).

Mi HD solía tener este aspecto:

1

2

3

4

EFI

Partición de Mac OS

Espacio no asignado (64G)

BOOTCAMP (64G)

pero ahora es como lo siguiente

1

2

3

EFI

Espacio no asignado

BOOTCAMP (64G)

Ya no puedo arrancar en modo MacOS. pero puedo arrancar en Windows 10.

Cuando arranco en modo Recovery, esta es la salida que obtengo al ejecutar los siguientes comandos:

# diskutil list
/dev/disk0 (disk image):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        +2.1 GB     disk0
   1:                 Apple_HFS OS X Base System         2.0 GB     disk0s1

/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE         IDENTIFIER
   0:      GUID_partition_scheme                        *500.3 GB     disk1
   1:                        EFI EFI                     209.7 MB     disk1s1
   2:       Microsoft Basic Data BOOTCAMP                64.1 GB      disk1s2

y

# gpt -r show disk1
    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  851564504
851974144  125130752      2  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
977104896        131
977105027         32         Sec GPT table
977105059          1         Sec GPT header

Como puedes ver en el último comando, la partición sigue ahí pero no es reconocida...

Estoy seguro de que todos los datos siguen ahí, ya que no escribí en el disco. Hay alguna manera de restaurar mi partición borrada de MacOS sin perder ningún dato? es posible utilizando el modo de recuperación o incluso Windows 10 que está instalado en la partición bootcamp?

Cualquier ayuda es muy apreciada.

EDIT: Según el comentario de @David Anderson:

# export LC_CTYPE="ASCII";dd if=/dev/disk1 count=1 bs=16 skip=13108482 | vis -cw;echo
1+0 records in
1+0 records out
16 bytes transferred in 0.001788 secs(8948 bytes/sec)
NXSB\0\^P\0\0\M-S\M-Oi\^E\0\0\0\0

Usando MacOS, la salida anterior se puede convertir a hexadecimal mediante el siguiente comando.

echo -n "NXSB\0\^P\0\0\M-S\M-Oi\^E\0\0\0\0" | unvis | hexdump -Cv

Al hacerlo, se obtiene el siguiente resultado.

00000000  4e 58 53 42 00 10 00 00  d3 cf 69 05 00 00 00 00  |NXSB......i.....|
00000010

Según klanomath de la respuesta de esta pregunta se puede determinar lo siguiente

  • 4e 58 53 42 : cadena mágica de un contenedor APFS
  • 00 10 00 00 : Tamaño de bloque APFS: 4096
  • d3 cf 69 05 00 00 00 00 Tamaño del contenedor APFS en bloques APFS: 90820563 (=726564504 bloques de 512)

2voto

Jean_JD Puntos 136

Supongo que tu Catalina estaba en un contenedor APFS.

Desde el modo de recuperación de la terminal, puede intentar recrear el contenedor APFS :

diskutil umountdisk disk1

Entonces

gpt add -b 409640 -i 3 -s 851564504 -t 7C3457EF-0000-11AA-AA11-00306543ECAC disk1

Luego se dan los resultados de :

gpt -r show disk1

y

diskutil list internal

Si tiene 64 Go de espacio libre después del contenedor, puede que el valor de su tamaño sea 726433752 (851564504 - 125130752) en lugar de 851564504.

Pero puedes probar con el comando anterior.

Editar 2 :

Con sus nuevas informaciones el buen mando es :

gpt add -b 409640 -i 3 -s 726564504 -t 7C3457EF-0000-11AA-AA11-00306543ECAC

Sin embargo, hice una prueba borrando un contenedor APFS, y 2 particiones JHFS + que le seguían.

Luego volví a crear vía gpt el contenedor APFS y le asigné todo el espacio liberado y le di un número de partición # del que tenía. Este contenedor contiene un CCC Big Sur Clone de arranque.

He probado a arrancar en él y funciona.

El único problema es una incoherencia entre el tamaño del contenedor de disco (100 GB) y el del contenedor lógico (80 GB). Pero esto no es muy importante y se puede arreglar después con un clon.

Aquí está el enlace Pastebin de mis operaciones de terminal : https://pastebin.com/zQjyfcKq

En mi caso, sudo era necesario porque no estaba en modo Recovery (modo Root).

Editar 3 :

He encontrado cómo redimensionar el Contenedor "recreado" en su tamaño máximo (100g)

  1. Redimensionar el contenedor mediante la contracción a 80g creando una partición temporal jhfs

     diskutil ap resizecontainer diskx 80g jhfs+ ToKill 0b

Entonces suprime esta partición :

diskutil erasevolume free space diskxsy

Y redimensionar el contenedor haciéndolo crecer

diskutil ap resizecontainer diskx 0b

1voto

David Anderson Puntos 2189

Respuesta original

Arranque en el mismo modo de recuperación utilizado en su pregunta. Introduzca lo siguiente.

diskutil unmountdisk disk1
gpt remove -i 2 disk1
diskutil unmountdisk disk1
gpt add -b 851974144 -i 3 -s 125130752 -t EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 disk1
diskutil unmountdisk disk1
gpt add -b 409640 -i 2 -s 726564504 -t 7C3457EF-0000-11AA-AA11-00306543ECAC disk1

Esto coloca las particiones en orden ascendente en la GPT.

Nota: Dado que MacOS puede intentar montar volúmenes después de completar un comando, los comandos anteriores incluyen un diskutil unmountdisk disk1 antes de cada gpt comando.

Respuesta alternativa

Nota: Esta respuesta alternativa está inspirada en Jean_JD 's responder .

Mi respuesta original requería el uso de MacOS para ejecutar el unvis y hexdump comandos. Esta respuesta alternativa no requiere estos comandos. Los pasos se dan a continuación.

  1. Arranque en el mismo modo de recuperación utilizado en su pregunta.

  2. Introduzca los comandos indicados a continuación.

    diskutil unmountdisk disk1
    gpt remove -i 2 disk1
    diskutil unmountdisk disk1
    gpt add -b 851974144 -i 3 -s 125130752 -t EBD0A0A2-B9E5-4433-87C0-68B6B72699C7 disk1
    diskutil unmountdisk disk1
    gpt add -b 409640 -i 2 -t 7C3457EF-0000-11AA-AA11-00306543ECAC disk1
    diskutil list internal

    Si los comandos anteriores se ejecutan con éxito, entonces el nombre del volumen APFS que contiene MacOS aparecerá en la salida del comando diskutil list internal . Si no es así, arranca con MacOS e introduce el siguiente comando en una ventana de la aplicación Terminal.

    diskutil list internal
  3. Introduzca los siguientes comandos. Cuando introduzca los comandos, utilice la salida de los comandos introducidos anteriormente diskutil list internal para reemplazar diskXsV con el identificador del APFS Volume que contiene MacOS y sustituye diskYsC con el identificador del Apple_APFS Container que figura como el Physical Store para el APFS Volume .

    diskutil info diskXsV | grep "Disk Size"
    diskutil info diskYsC | grep "Disk Size"

    Si los resultados de ambos comandos coinciden, entonces ha terminado. ( Para el OP, la salida no coincidirá. ) En caso contrario, proceda. Si arranca con MacOS, primero registre el tamaño del disco en 512-Byte-Units para el APFS Volume que contiene MacOS, y luego reiniciar al mismo Modo de Recuperación utilizado en su pregunta.

  4. Introduzca los siguientes comandos. Cuando introduzca los comandos, utilice la salida de los comandos introducidos anteriormente diskutil info diskXsV | grep "Disk Size" para reemplazar SizeInBlocks con el tamaño del disco en 512-Byte-Units para el APFS Volume que contiene MacOS. ( Para el OP, ya se sabe que el valor es 726564504 . )

    Nota: Si ha arrancado en MacOS en el paso 3, el uso de la diskutil list internal para verificar disk1 sigue siendo la unidad física interna del Mac. Si no es así, entonces haga las sustituciones apropiadas para disk1 al introducir los siguientes comandos.

    diskutil unmountdisk disk1
    gpt remove -i 2 disk1
    diskutil unmountdisk disk1
    gpt add -i 2 -b 409640 -s SizeInBlocks -t apfs disk1

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