4 votos

Problema al clonar el disco de inicio de un MacBook Pro con OS X 10.11.6 El Capitan

Antes de exponer mi pregunta en detalle, vea Problema de la sección, me gustaría esbozar el contexto en el que aparece.

Hardware-Software-Environment

MacBook Pro Early 2015 con OS X 10.11.6 El Capitan.
El disco duro interno es en realidad un SSD de 250 GB con particiones EFI , Macintosh HD y Recovery HD .
Disco duro externo de 2 TB conectado a través de un bus USB 3.0; más tarde llamado disco de destino.

Tarea

Crear un clon de arranque de la partición de inicio y, además, de la partición de recuperación asociada. Proporcionar un sistema robusto y simple basado en la línea de comandos procedimiento.

Procedimiento básico

Terminología
source_disk_id
       identificador de disco del Macintosh HD partición

nodo_device_fuente
       nodo del dispositivo correspondiente al Macintosh HD partición

target_disk_id
       identificador de disco de la partición de destino en el disco duro externo

nodo_device_de_destino
       nodo del dispositivo correspondiente a la partición de destino

tamaño_de_partición_de_objetivo
       tamaño de la partición de destino
       Nota: Se utiliza en la invocación de un comando, tenga cuidado de utilizar un especificador de tamaño adecuado.

Pasos de procesamiento

  1. Cree la partición de destino que va a contener el clon de arranque.

    1. Determine el tamaño de la Macintosh HD partición a través de
      diskutil info source_disk_id .
    2. Determine el tamaño de la Recovery HD de la misma manera ejecutando diskutil info; normalmente otros 650 MB.
    3. Estimamos el tamaño de la partición de destino para que ésta pueda contener el contenido del Recovery HD así como la del Macintosh HD incluyendo el espacio libre. Esto es más o menos una precaución para evitar asr restore , más tarde utilizado, de quejarse de la falta de espacio.
      Cuando la operación de clonación se lleve a cabo, el tamaño de la partición de destino puede reducirse ejecutando diskutil resizeVolume .
    4. Ahora estamos listos para crear la partición de destino:
      diskutil resizeVolume target_disk_id target_partition_size JHFS+ FreePartition 0
      Nota: Esto me funciona porque el disco de destino se mantiene de manera que hay una "partición restante" con respecto al orden en el disco. Ejecutando el diskutil resizeVolume simplemente corta un trozo de espacio de disco del extremo superior de la partición restante que ahora se utilizará como partición de destino.
  2. Cambia al modo de recuperación y ejecuta
    asr restore --source source_device_node --target target_device_node --erase
    Invocada de esta manera, asr restore restaurará(clon) y verificar ambas particiones, Macintosh HD así como Recovery HD .

  3. De vuelta al modo normal, ejecuta diskutil rename para asignar nombres más significativos a las dos particiones recién "hechas" por asr restore algo así como "my_mbp2015_macintosh_hd_osx10.11.6_yymmdd" y "my_mbp2015_recovery_hd_osx10.11.6_yymmdd" respectivamente.

Problema

Con el disco duro externo conectado, invoque el gestor de inicio manteniendo pulsada la tecla ⌥ Option al arrancar o reiniciar la máquina.

El gestor de arranque muestra los iconos de volumen de las particiones del disco duro que considera arrancables. Seleccione el icono correspondiente a la partición de arranque recién creada e inicie el proceso de arranque haciendo doble clic.

Ahora, sin ninguna palabra de consuelo, el sistema arranca desde el Macintosh HD . Obviamente, el sistema no reconoce la partición de inicio recién creada como de arranque.

Pregunta: ¿Qué hay de malo en el procedimiento anterior al intentar crear un clon de arranque? Todos los consejos y sugerencias son bienvenidos.

Intentos de prueba y reparación

  1. Comprobar y reparar las particiones
    Al comprobar la nueva partición de inicio diskutil verifyvolume informados:

    Checking volume information
    Invalid volume free block count
    (It should be 25379769 instead of 23010379)
    Volume header needs minor repair
    The volume my_mbp2015_macintosh_hd_osx10.11.6_200106 was found corrupt and needs to be repaired
    File system check exit code is 8
    Error: -69845: File system verify or repair failed
    Underlying error: 8: POSIX reports: Exec format error

    Sin embargo, la partición de recuperación asociada se considera correcta.

    La posterior "reparación" de la partición de inicio mediante diskutil repairVolume parece tener éxito, al menos en el sentido de que diskutil verifyVolume ya no se queja.

    Desgraciadamente, este intento de reparación finalmente no tuvo éxito porque el sistema sigue sin reconocer la partición de inicio "reparada" como arrancable.

  2. Restauración de la Utilidad de Discos
    Cuando empleamos la función "Restaurar" de la Utilidad de Discos de la GUI con el paso de procesamiento #2 anterior en lugar de asr restore la partición de inicio y la partición de recuperación asociada parecen estar clonadas correctamente, al menos diskutil verifyvolume no se queja y en el siguiente arranque o reinicio, el sistema arranca desde la partición de inicio recién creada si así se le indica.

    Estoy bastante seguro de que con la Utilidad de Discos "Restaurar" el comando asr restore será invocado bajo el capó para hacer el trabajo. La pregunta entonces es qué más puede ocurrir. Supongo que algún atributo adicional podría establecerse utilizando la opción algo opaca de "ajustar" documentada así:
    asr adjust --target <partition> [--settype <partType>]

  3. HD externo
    El propio disco duro externo de destino no se considera sospechoso porque existen varias particiones de arranque en el disco desde las que el sistema arranca sin problemas.

  4. Empezar por lo "lógico" Macintosh HD Volumen
    Como aprendimos de @klanomath, ver más abajo, en nuestro caso donde el Macintosh HD es un volumen CoreStorage, debemos tomar el volumen lógico correspondiente como argumento para asr restore --source .

    Así que corremos en modo de recuperación:

    asr restore --source /dev/disk2 --target /dev/disk16s6 --erase
        Validating target...done
        Validating source...done
        Erase contents of /dev/disk16s6 
    (/Volumes/my_mbp2015_macintosh_hd_osx10.11.6_200106)? [ny]: y
    
    Source volume is read-write and cannot be unmounted, so it can't be block copied.

    En estos casos, algún otro proceso puede mantener el volumen Macintosh HD volumen ocupado. Para tratar de solucionar el problema, desmonte el volumen ejecutando diskutil unmount y volver a ejecutar asr restore con la misma configuración de parámetros que antes.

  5. Viaje de ida y vuelta: Cómo calcular el volumen lógico de arranque Una forma fiable, aunque no "scriptable": Inmediatamente después de entrar en una cuenta, inicie la GUI Utilidad de Disco. Encontrará el volumen de inicio resaltado. Introduzca ⌘I para ver la misma información sobre el volumen que muestra el diskutil info comando.

    En este caso particular en el que el volumen de inicio es en realidad una partición (montada) de CoreStorage, podemos determinar el volumen lógico correspondiente desde el diskutil coreStorage list de salida:

    CoreStorage logical volume groups (1 found)
    |
    +-- Logical Volume Group 9344A028-DD9F-454C-89C0-8E2866E5FBB6
    =========================================================
    Name:         Macintosh HD
    Status:       Online
    Size:         250140434432 B (250.1 GB)
    Free Space:   8921088 B (8.9 MB)
    |
    +-< Physical Volume EC0BB005-738C-4F32-8B27-BA8801EBC34D
    |   ----------------------------------------------------
    |   Index:    0
    |   Disk:     disk0s2
    |   Status:   Online
    |   Size:     250140434432 B (250.1 GB)
    |
    +-> Logical Volume Family A20BC6DA-C477-44B4-82C9-C88B2CB41658
        ----------------------------------------------------------
        Encryption Type:         None
        |
        +-> Logical Volume 73C52081-F8CF-4C86-93F9-4BBA68602854
            ---------------------------------------------------
            Disk:                  disk1
            Status:                Online
            Size (Total):          249779191808 B (249.8 GB)
            Revertible:            Yes (no decryption required)
            LV Name:               Macintosh HD
            Volume Name:           Macintosh HD
            Content Hint:          Apple_HFS  

    Sorprendentemente, el método más obvio falló: bless --getBoot --verbose (la opción --verbose se acaba de añadir para tener algo más de información)

    EFI found at IODeviceTree:/efi
    Current EFI boot device string is: '<array><dict><key>IOMatch</key><dict><key>IOProviderClass</key><string>IOMedia</string><key>IOPropertyMatch</key><dict><key>UUID</key><string>56173D2D-142D-4425-AA07-DC6762337E8C</string></dict></dict><key>BLLastBSDName</key><string>disk10s3</string></dict></array>'
    Boot option is 8BE4DF61-93CA-11D2-AA0D-00E098032B8C:Boot0080
    Processing boot option 'Mac OS X'
    Boot device path incorrect
    Boot option does not match XML representation
    XML representation doesn't match true boot preference

    El restablecimiento de la NVRAM solucionó el problema. Método de reinicio utilizado: Mantener pulsado ⌥ Option ⌘ Command P R al arrancar la máquina. Ahora el bless devuelve el nodo de dispositivo de los volúmenes de arranque como se esperaba:

    bless --getBoot
    /dev/disk1

    En aras de la exhaustividad, bless --info /Volumes/Macintosh\ HD grabada:

    finderinfo[0]: 1430821 => Blessed System Folder is /System/Library/CoreServices
    finderinfo[1]: 2587775 => Blessed System File is /System/Library/CoreServices/boot.efi
    finderinfo[2]:      0 => Open-folder linked list empty
    finderinfo[3]:      0 => No alternate OS blessed file/folder
    finderinfo[4]:      0 => Unused field unset
    finderinfo[5]: 1430821 => OS X blessed folder is /System/Library/CoreServices
    64-bit VSDB volume id:  0x839BA1DBB460E54F

Fuentes y notas a pie de página

¿Imagen de disco del sistema operativo + partición de recuperación?
Contiene una referencia al asr utilidad: Restaurará tanto la partición del sistema como la partición de recuperación asociada también.

https://derflounder.wordpress.com/2013/04/30/asrs-hidden-documentation/
Revela que hay una documentación oculta para el asr utilidad.

https://bombich.com/kb/ccc4/help-my-clone-wont-boot
Hoja de trucos muy instructiva de Bombich Software que trata de los problemas de arranque. Aunque este texto se refiere a su producto CCC, contiene muchos consejos útiles en general.

¿Qué hace que un volumen sea booteable?
Otro texto útil de la base de conocimientos de Bombich Software que trata sobre el proceso de arranque de un Mac y sobre cómo "bendecir" un volumen de arranque.

Restablecimiento y configuración de la NVRAM
Algunas palabras sobre el nvram comando.

5voto

klanomath Puntos 19587

El tipo de partición del sistema de los SSDs se ha convertido por defecto en CoreStorage en 10.11 (El Capitan).

La partición CoreStorage (normalmente disco0s2) es un contenedor que puede almacenar uno o más volúmenes. Sólo los objetos más internos (volúmenes lógicos) se exportan a nodos de dispositivos adicionales. Más información: CoreStorage .

Si usted asr --source ... una partición CS (en tu caso disk0s2) a una partición de destino, no obtendrás un sistema de archivos de arranque adecuado (por ejemplo, un volumen HFS+ de arranque). La razón es simple: una partición CS no tiene un sistema de archivos tradicional y una estructura interna diferente en comparación con un volumen de arranque HFS+.

Solución:

  1. En lugar de asr --sourcing una porción de disco, simplemente utilice el volumen lógico exportado.

    No hay una forma fácil de obtener el nodo de dispositivo del volumen lógico montado del SSD de forma automática (es decir, utilizarlo en un shell script). diskutil list o diskutil cs list listarlo, pero es difícil extraer el nodo del dispositivo con las herramientas disponibles en el modo de recuperación (con awk ... o sed ... ) - al menos para mí, con una capacidad limitada de scripting de shell. Lo mejor que he encontrado es bless --getBoot . El volumen de arranque por defecto tiene que ser el SSD interno antes de arrancar en el Modo de Recuperación (con la tecla option o cmd-R) - ¡comprometido! También puede establecer el volumen de inicio en el SSD interno en el Modo de Recuperación.

    En la línea de comandos (en modo de recuperación) el comando asr se vería así entonces:

    CSB=$(bless --getBoot); asr restore --source $CSB --target target_device_node --erase

    Si se produce el error Source volume is read-write and cannot be unmounted después de ejecutar el asr ... intente desmontar $CSB después de definir la variable CSB: diskutil umount $CSB .

    Obtendrá un volumen HFS+ de arranque en una partición de tipo HFS+ en el disco de destino finalmente.

  2. Si el método 1 falla, también puede utilizar el punto de montaje del volumen del sistema del SSD (por ejemplo, el HD de Macintosh):

    asr restore --source /Volumes/Macintosh\ HD --target target_device_node --erase

Intenté asr blockcopy la partición de origen de CoreStorage (disk0s2) a una partición de destino con el mismo tamaño utilizando diferentes métodos pero todos fallan con un error de suma de comprobación. Estos métodos requieren modificar el tipo de partición de la partición destino con gpt después.

2voto

Johnmager Puntos 33

Aquí acabo de poner una versión reelaborada de la Procedimiento básico en la pregunta original. Siguiendo el camino esbozado a continuación se solucionó mi problema. Puedes considerar esto como una especie de ejercicio preliminar para una solución basada en script. Fama a @klanomath si te resulta útil, vergüenza a mí si te parece un galimatías.

Procedimiento básico

Terminología
source_disk_id
identificador de disco del Macintosh HD partición

nodo_dispositivo_fuente
nodo del dispositivo correspondiente al Macintosh HD partición

target_disk_id
identificador de disco de la partición de destino en el disco duro externo

nodo_dispositivo_destino
nodo de dispositivo correspondiente a la partición de destino

tamaño_particion_objetivo
tamaño de la partición de destino
Nota: Utilizado en la invocación de un comando, tenga cuidado de utilizar un especificador de tamaño apropiado.

Pasos del proceso

  1. Cree la partición de destino que contendrá el clon de arranque.

    1. Determinar el tamaño del Macintosh HD partición mediante
      diskutil info source_disk_id .
    2. Determinar el tamaño del Recovery HD de la misma manera ejecutando diskutil info; normalmente otros 650 MB.
    3. Estimamos el tamaño de la partición de destino para que pueda contener el contenido del Recovery HD así como la del Macintosh HD incluido el espacio libre. Esto es más o menos una precaución para prevenir asr restore , más tarde utilizado, de quejarse de la falta de espacio.
      Cuando se realice la operación de clonación, el tamaño de la partición de destino puede reducirse ejecutando diskutil resizeVolume .
    4. Ahora estamos listos para crear la partición de destino:
      diskutil resizeVolume target_disk_id target_partition_size JHFS+ FreePartition 0
      Nota: Esto funciona para mí porque el disco de destino se mantiene de tal manera que hay una "partición restante" con respecto al orden en el disco. Ejecutando el diskutil resizeVolume simplemente corta un trozo de espacio en disco del extremo superior de la partición restante que ahora se utilizará como partición de destino.
  2. Cambiar al modo de recuperación

    1. Determinar el nodo_dispositivo_fuente
      Cuando echamos un vistazo al grupo de volúmenes lógicos de CoreStorage al que pertenece el Macintosh HD pertenece, tenemos que seleccionar el identificador de disco del Volumen Lógico asociado - en contraste con el Volumen Físico.
      Nota: El tipo de partición del Volumen Físico es Apple_CoreStorage mientras que el tipo de partición del Volumen Lógico es Apple_HFS equipado con un sistema de archivos JHFS+.

      CoreStorage logical volume groups (1 found)
      |
      +-- Logical Volume Group 9344A028-DD9F-454C-89C0-8E2866E5FBB6
      -   ---------------------------------------------------------
      Name:         Macintosh HD
      Status:       Online
      Size:         250140434432 B (250.1 GB)
      Free Space:   8921088 B (8.9 MB)
      |
      +-< Physical Volume EC0BB005-738C-4F32-8B27-BA8801EBC34D
      |   ----------------------------------------------------
      |   Index:    0
      |   Disk:     disk0s2
      |   Status:   Online
      |   Size:     250140434432 B (250.1 GB)
      |
      +-> Logical Volume Family A20BC6DA-C477-44B4-82C9-C88B2CB41658
      ----------------------------------------------------------
      Encryption Type:         None
      |
      +-> Logical Volume 73C52081-F8CF-4C86-93F9-4BBA68602854
          ---------------------------------------------------
          Disk:                  disk2
          Status:                Online
          Size (Total):          249779191808 B (249.8 GB)
          Revertible:            Yes (no decryption required)
          LV Name:               Macintosh HD
          Volume Name:           Macintosh HD
          Content Hint:          Apple_HFS

      Una forma algo más directa de determinar el nodo de dispositivo del volumen de arranque es simplemente invocar bless --getBoot siempre que funcione en su entorno.

      1. Ahora corre

        asr restore --source source_device_node --target target_device_node --erase

      Invocada de esta manera, asr restore restaurará(clon) y verifica ambas particiones, Macintosh HD así como Recovery HD .

  3. De vuelta al Modo Normal, ejecute diskutil rename asignar nombres más significativos a las dos particiones recién "hechas" por asr restore algo así como "my_mbp2015_macintosh_hd_osx10.11.6_yymmdd" y "my_mbp2015_recovery_hd_osx10.11.6_yymmdd" resp.

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