0 votos

¿Cómo puedo cambiar el tamaño de una imagen creada con dd que contiene una copia bloque a bloque de mi disco Mac?

He creado una copia de una unidad de disco giratorio de 1TB que funciona (pero tiene algunos errores de disco) utilizando dd . Puedo montar la imagen ( hdiutil attach o simplemente hacer doble clic en Finder) sin problemas y ver los archivos en el volumen HFS+ principal. Sin embargo, no veo las otras particiones que sé que están ahí (EFI, Recovery HD). Sé que están ahí porque si restauro la imagen directamente a una unidad física, están ahí.

Sin embargo, me gustaría restaurar esta imagen en un SSD de 480 GB (más pequeño), por lo que necesito reducir la partición HFS+ principal/grande de la imagen. Hay mucho espacio libre en la partición (700GB), así que debería ser factible.

He intentado convertir la imagen en una imagen de lectura-escritura ( hdiutil convert -format UDRW ) o un haz disperso ( hdiutil convert -format UDSB - resulta en un archivo de 200 GB).

La imagen de lectura-escritura no cambia de tamaño:
hdiutil: resize request is below minimum size allowed.

Corriendo hdiutil compact en el paquete disperso no lo reducirá:
Reclaimed 0 bytes out of 796.9 GB possible.

¿Cuál es la forma correcta de cambiar el tamaño de la partición principal/grande HFS+ en la imagen de disco completa?

1voto

klanomath Puntos 19587

En mi opinión esto puede ser posible pero no es efectivo porque para lograrlo habría que extraer y reducir una parte de la imagen dd raw y luego volver a montar las tres partes. Además hay que manipular la tabla de particiones gpt dentro de la imagen dd raw reensamblada editándola hexagonalmente. Luego hay que dd la imagen.

En su lugar, haga lo siguiente, que consume mucho menos tiempo y probablemente es menos propenso a errores:

  • Particione su nuevo disco con 3 particiones: EFI, volumen principal del sistema y una partición Recovery HD
  • Como la EFI y la partición de recuperación tienen tamaños fijos y bloques de inicio definidos, puedes simplemente dd el EFI y el Recovery HD en su imagen dd raw a las respectivas particiones de su nuevo SSD
  • Para copiar el contenido del antiguo volumen principal, monta la imagen dd raw y rsync el contenido al nuevo volumen principal.

Aquí asumo que tienes un disco externo con un OS X completo (El Capitan) para preparar el SSD. Todos los nombres/identificadores o tamaños de los dispositivos son sólo ejemplos y pueden diferir de su entorno/resultados reales.

Preparando su nuevo SSD:

  • Abra la Utilidad de Discos y borre el nuevo disco (Nombre: SSD/Formato: OS X Extended (Journaled)/Esquema: Tabla de particiones GUID)

  • Abra el Terminal e introduzca diskutil list . El resultado debería ser (los tamaños pueden diferir ligeramente de los suyos):

    /dev/disk0 (internal, physical):
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        *480.0 GB   disk0
       1:                        EFI EFI                     209.7 MB   disk0s1
       2:                  Apple_HFS SSD                     479.6 GB   disk0s2
    /dev/disk1...
  • En la terminal, introduzca sudo gpt -r show disk0 . El resultado debería ser (los tamaños pueden diferir ligeramente de los suyos):

          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  936755120      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
      937164760     262151         
      937426911         32         Sec GPT table
      937426943          1         Sec GPT header
  • Ahora desmonta el disco0 y elimina la segunda partición:

    diskutil umountDisk disk0
    sudo gpt remove -i 2 disk0
  • Añade la partición de recuperación. La partición de recuperación siempre tiene el tamaño de 1269536 bloques y comienza con el tamaño total del disco en bloques - 1269576 bloques (en mi ejemplo es: 937426944 - 1269576 = 936157368)

    sudo gpt add -i 3 -b 936157368 -s 1269536 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk0
  • Entre en sudo gpt -r show disk0 de nuevo para mostrar la nueva partición:

          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  935747728         
      936157368    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
      937426904          7         
      937426911         32         Sec GPT table
      937426943          1         Sec GPT header
  • En el espacio vacío entre la partición i=1 y la i=3 añada una nueva partición. El bloque inicial y el tamaño vienen dados por los datos encontrados anteriormente:

    sudo gpt add -i 2 -b 409640 -s 935747728 -t 48465300-0000-11AA-AA11-00306543ECAC disk0
  • Desmonte el disco0 y formatee el nuevo volumen:

    diskutil umountDisk disk0
    sudo newfs_hfs -J -v "SSD" /dev/disk0s2

Restauración de los datos:

  • Monte su imagen de disco sin procesar haciendo doble clic en ella.

  • Entre en diskutil list . Debería ver una nueva entrada similar a esta:

    /dev/disk0 (internal, physical):
    ...
    /dev/disk3 (disk image):
       #:                       TYPE NAME                    SIZE       IDENTIFIER
       0:      GUID_partition_scheme                        +1.0 TB     disk3
       1:                        EFI EFI                     209.7 MB   disk3s1
       2:                  Apple_HFS Macintosh HD            1.0 TB     disk3s2
       3:                 Apple_Boot Recovery HD             650.0 MB   disk3s3
  • dd la EFI y el Recovery HD de la imagen al SSD:

    sudo dd if=/dev/disk3s1 of=/dev/disk0s1 bs=4096
    diskutil umountDisk disk0
    sudo dd if=/dev/disk3s3 of=/dev/disk0s3 bs=4096
  • montar el volumen principal del SSD:

    diskutil mount disk0s2
  • rsync el contenido del volumen principal de la imagen de disco (que debería ser visible en su escritorio al contrario que las particiones EFI/Recovery HD) al volumen principal del SSD:

    sudo rsync -a /Volumes/Volume_name_of_Diskimage/ /Volumes/SSD

Este es un ejemplo de comando rsync muy básico. Puede refinar el comando rsync (opciones/exclusiones) según este o este vinculado scripts.


Por favor, compruebe todos los nombres de los dispositivos en los distintos comandos que contienen dd o gpt a fondo o eliminará o sobrescribirá particiones/datos importantes de forma no deseada.

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