Acabo de recuperar un Macbook (OS X 10.5.2, Leopard) que no se pudo iniciar porque se atascó eternamente en una pantalla gris con el logotipo de Apple y una rueda giratoria.
El culpable fue un archivo de configuración dañado ( /etc/authorization
), y a continuación describiré cómo encontré y resolví el problema.
Primero, verifiqué si el hardware estaba bien, reiniciando y presionando D para ejecutar los diagnósticos de hardware. El hardware estaba bien, así que seguí buscando mensajes de error.
Después de arrancar en modo detallado ( Comando (⌘) + V ), vi que securityd se bloqueó y que se escribió un registro de fallos en /Library/Logs/CrashReporter/securityd_2015-06-23-120634_localhost.crash
. Así que una vez más, reinicié para obtener un shell en modo de usuario único ( Comando (⌘) + S ). El registro mostró que el bloqueo se debió a una llamada a CFDictionaryContainsKey
(lo que provocó un error EXC_BAD_ACCESS
). Esto alimentó mi sospecha de que el bloqueo se debió a un archivo de configuración incorrecto.
Finalmente encontré esta publicación de blog , que sugiere usar fs_usage
para monitorear y registrar la actividad del archivo:
mount -uw /
fs_usage > /var/log/fs-usage.log &
exit
Después de reiniciar, busqué en /var/log/fs-usage.log
y encontré que securityd
accedió a private/etc/authorization
antes de fallar. Luego vi el contenido de /etc/authorization
, y de hecho se rompió más allá de la reparación.
Para recuperar este archivo, busqué la versión original del archivo en la fuente del securityd
package (referenciado en código fuente de OS X 10.5.2 ). Finalmente encontré etc/authorization.plist
, que tenía algunas similitudes con el /etc/authorization
corrupto.
Para completar la recuperación, puse el nuevo etc/authorization.plist
en una memoria USB, lo enchufé en el Macbook (aún en modo de usuario único) y monté la unidad como sigue :
mount -uw /
launchctl load /System/Library/LaunchDaemons/com.apple.kextd.plist
# Wait about 20 seconds
mkdir /Volumes/usb
mount -t msdos -v -o ro /dev/disk1s1 /Volumes/usb
Luego copié el archivo a su destino, desmonté la memoria USB, sincronicé y reinicié con éxito:
cp /Volumes/usb/authorization.plist /etc/authorization
umount /Volumes/usb
sync
reboot