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
-
Cree la partición de destino que va a contener el clon de arranque.
- Determine el tamaño de la
Macintosh HD
partición a través de
diskutil info source_disk_id
. - Determine el tamaño de la
Recovery HD
de la misma manera ejecutando diskutil info; normalmente otros 650 MB. - Estimamos el tamaño de la partición de destino para que ésta pueda contener el contenido del
Recovery HD
así como la delMacintosh HD
incluyendo el espacio libre. Esto es más o menos una precaución para evitarasr 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 ejecutandodiskutil resizeVolume
. - 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 eldiskutil 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.
- Determine el tamaño de la
-
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í comoRecovery HD
. -
De vuelta al modo normal, ejecuta
diskutil rename
para asignar nombres más significativos a las dos particiones recién "hechas" porasr 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
-
Comprobar y reparar las particiones
Al comprobar la nueva partición de iniciodiskutil 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 quediskutil 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.
-
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 deasr restore
la partición de inicio y la partición de recuperación asociada parecen estar clonadas correctamente, al menosdiskutil 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>]
-
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. -
Empezar por lo "lógico"
Macintosh HD
Volumen
Como aprendimos de @klanomath, ver más abajo, en nuestro caso donde elMacintosh HD
es un volumen CoreStorage, debemos tomar el volumen lógico correspondiente como argumento paraasr 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 ejecutandodiskutil unmount
y volver a ejecutarasr restore
con la misma configuración de parámetros que antes. -
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.