¿Qué sucede en el proceso de arranque de Mac OS X?

¿Alguna vez se ha preguntado qué sucede durante el proceso de arranque y arranque de Mac OS X? Con Mac OS X es un poco más complicado de lo que solía ser y los tiempos de los Mac OS Clásicos (Sistema 9, 8, 7, 6) ya pasaron, donde ver nuestras Mac comenzó con una serie de extensiones y paneles de control que podríamos Identifíquese siempre solo por su icono, luego busque en la carpeta Extensiones para ajustar fácilmente lo que se carga y le sucede al arranque de Mac. Hoy, con la base Unix de Mac OS X, muchos usuarios no están completamente al tanto de lo que está sucediendo entre bastidores.
Entonces, ¿qué sucede exactamente durante el proceso de arranque de Mac OS X? Siempre puede obtener una mejor vista iniciando una Mac en modo Verbose, pero eso no explica necesariamente todo lo que ve. Afortunadamente, hay una excelente explicación disponible a través del segmento KernelThread, que enumera cuidadosamente la secuencia de eventos de arranque de Mac OS X de principio a fin. Es bastante completo y vale la pena leerlo, que se repite a continuación para los usuarios curiosos de Mac.
Nota: Como señaló un lector, PPC usa OF (Openfirmware), i386 usa EFI (Interfaz de firmware extensible)
Entonces, ¿qué sucede durante el proceso de arranque de Mac OS X? Enciende tu Mac y sucede:
- Encendido.
- Se ejecuta el código OF o EFI.
- Se recopila información de hardware y se inicializa el hardware.
- Se selecciona algo (generalmente el sistema operativo, pero también cosas como la prueba de hardware de Apple, etc.) para comenzar. Se le puede pedir al usuario que seleccione qué comenzar.
- El control cambia a
/System/Library/CoreServices/BootX, el cargador de carga. BootX carga el kernel y también elimina las insignias del sistema operativo, si las hubiera. - BootX intenta cargar una lista en caché de controladores de dispositivo (creado / actualizado por
/usr/sbin/kextcache). Tal caché es del tipomkexty contiene diccionarios de información y binarios para múltiples extensiones del kernel. Tenga en cuenta que si el caché mkext está dañado o falta, BootX buscará en/System/Library/Extensionspara las extensiones que se requieren en el escenario actual (determinado por el valorOSBundleRequiredpropiedad enInfo.plistarchivo de paquete de extensión. -
initse ejecuta la rutina del kernel. Se determina el dispositivo raíz del sistema de arranque. El firmware ya no es accesible en este momento. - El kernel inicializa varias estructuras de datos Mach / BSD.
- Se inicializa el kit de E / S.
- El núcleo comienza
/sbin/mach_init, el demonio de arranque del servicio Mach.mach_initmantiene asignaciones entre los nombres de los servicios y los puertos Mach que proporcionan acceso a estos servicios.
A partir de ahora, la puesta en marcha pasa a ser de nivel de usuario:
mach_inittu empiezas/sbin/init, el proceso de iniciación tradicional de BSD. init determina el nivel de ejecución y se ejecuta/etc/rc.boot, que configura suficiente equipo para ejecutar un solo usuario.
Durante su ejecución, rc.boot y el otro rc fuente de escrituras /etc/rc.common, un script de shell que contiene funciones de utilidad como CheckForNetwork() (compruebe si la red está activa), GetPID(), purgedir() (elimine solo el contenido del directorio, no la estructura), etc.
rc.bootcalcula el tipo de arranque (multiusuario, seguro, CD-ROM, red, etc.). En el caso de una puesta en marcha de la red (sysctlvariablekern.netbootse establecerá en1en cuyo caso), ejecute/etc/rc.netbootconstartargumento.
/etc/rc.netboot gestiona varios aspectos de la creación de redes. Por ejemplo, realice instalaciones de red y (si las hay) locales. Además, llame /usr/bin/nbst para asociar un archivo de sombra con la imagen de disco utilizada como dispositivo raíz. La idea es redirigir las escrituras al archivo de sombra, que esperamos esté en el espacio de almacenamiento local.
rc.bootaverigüe si es necesaria una comprobación de la coherencia del sistema de archivos. Los arranques de usuario único y desde CD-ROM no ejecutan fsck. SafeBoot siempre ejecuta fsck.rc.boottambién gestiona el estado de retorno de fsck.- Si
rc.bootsale con éxito,/etc/rc, se ejecuta la secuencia de comandos de inicio multiusuario. Si arranca desde un CD-ROM, la secuencia de comandos se mueve a/etc/rc.cdrom(instalación). /etc/rcinstala sistemas de archivos locales (HFS +, HFS, UFS,/dev/fd,/.vol), asegura que el director/private/var/tmpexiste y corre/etc/rc.installer_cleanup, si hay uno (dejado por un instalador antes de reiniciar)./etc/rc.cleanupse ejecuta. «Limpia» varios directorios / archivos específicos de Unix y Mac.- BootCache está activado.
- Variado
sysctlse establecen variables (como para el número máximo de vnodes, System V IPC, etc.). Si/etc/sysctl.confhay (más/etc/sysctl-macosxserver.confen Mac OS X Server), también se leesysctlse establecen las variables contenidas. syslogdestá comenzando.- Se crea el archivo de símbolo Mach.
/etc/rctu empiezaskextd, el proceso demonio que carga la extensión del kernel bajo demanda desde el kernel o los procesos del cliente./usr/libexec/register_mach_bootstrap_serversse ejecuta para cargar varios servicios Mach basados en bootstrap contenidos en/etc/mach_init.dportmapynetinfose inician.- Si
/System/Library/Extensions.mkextes más viejo que/System/Library/Extensions,/etc/rcelimine el mkext existente y cree uno nuevo. Además, cree uno si no existe. /etc/rctu empiezas/usr/sbin/update, el demonio que limpia las cachés internas del sistema de archivos en el disco con frecuencia./etc/rcinicia el sistema de memoria virtual./private/var/vmestá configurado como directorio de intercambio./sbin/dynamic_pagercomienza con los argumentos apropiados (plantilla de ruta de nombre de archivo de intercambio, tamaño de los archivos de intercambio creados, activadores de alerta de nivel alto y bajo que especifican cuándo crear intercambios adicionales o eliminar los existentes)./etc/rctu empiezas/usr/libexec/fix_prebindingpara corregir incorrectamente binarios preenlazados./etc/rccorriendo/etc/rc.cleanuppara limpiar y restablecer archivos y dispositivos./etc/rcse lanza finalmente/sbin/SystemStarterpara administrar elementos iniciales en ubicaciones como/System/Library/StartupItemsy/Library/StartupItems. Un StartupItem es un programa, generalmente un script de shell, cuyo nombre coincide con el nombre de la carpeta. La carpeta contiene un archivo de lista de propiedades que contiene pares clave-valor, comoDescription,Provides,Requires,OrderPreference, activar / desactivar mensajes, etc. Tu puedes correrSystemStarter -n -Dcomo root para que el programa imprima la resolución de problemas y la información de dependencia (sin ejecutar nada).-
CoreGraphicsstarter inicia el demonio de Apple Type Services (ATSServer) así como Windows Server (WindowServer).
¡Y luego tu Mac se enciende!
Puede ver parte de esta actividad suya con el modo Verbose (que puede comenzar en modo Verbose por arranque, o incluso puede configurar una Mac para que siempre se inicie en modo Verbose si desea ver siempre el arranque estilo Unix), pero esta es una explicación bastante detallada.
Apple también tiene parte de la documentación disponible en el proceso de inicio de Mac disponible aquí en su biblioteca de documentación para desarrolladores Aquí.
Tenga en cuenta que la URL original que proporciona la información anterior ya no está activa, por lo que la publicación se incluyó anteriormente para la posteridad mediante el almacenamiento en caché. La fuente original era un hilo. KernelThread en la siguiente URL: http://www.kernelthread.com/mac/osx/arch_startup.html que actualmente está fuera de línea y no redirige a una nueva ubicación.
Si tiene algo que agregar u otros complementos a la secuencia de inicio de Mac OS X, ¡comparta sus comentarios!