OSX/IOS

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

Icono de buscador

¿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 tipo mkext y 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/Extensions para las extensiones que se requieren en el escenario actual (determinado por el valor OSBundleRequired propiedad en Info.plist archivo de paquete de extensión.
  • init se 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_init mantiene 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_init tu 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.boot calcula el tipo de arranque (multiusuario, seguro, CD-ROM, red, etc.). En el caso de una puesta en marcha de la red ( sysctl variable kern.netboot se establecerá en 1 en cuyo caso), ejecute /etc/rc.netboot con start argumento.

/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.boot averigü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.boot también gestiona el estado de retorno de fsck.
  • Si rc.boot sale 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/rc instala sistemas de archivos locales (HFS +, HFS, UFS, /dev/fd, /.vol), asegura que el director /private/var/tmp existe y corre /etc/rc.installer_cleanup, si hay uno (dejado por un instalador antes de reiniciar).
  • /etc/rc.cleanup se ejecuta. «Limpia» varios directorios / archivos específicos de Unix y Mac.
  • BootCache está activado.
  • Variado sysctl se establecen variables (como para el número máximo de vnodes, System V IPC, etc.). Si /etc/sysctl.conf hay (más /etc/sysctl-macosxserver.conf en Mac OS X Server), también se lee sysctl se establecen las variables contenidas.
  • syslogd está comenzando.
  • Se crea el archivo de símbolo Mach.
  • /etc/rc tu empiezas kextd, 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_servers se ejecuta para cargar varios servicios Mach basados ​​en bootstrap contenidos en /etc/mach_init.d
  • portmap y netinfo se inician.
  • Si /System/Library/Extensions.mkext es más viejo que /System/Library/Extensions, /etc/rc elimine el mkext existente y cree uno nuevo. Además, cree uno si no existe.
  • /etc/rc tu empiezas /usr/sbin/update, el demonio que limpia las cachés internas del sistema de archivos en el disco con frecuencia.
  • /etc/rc inicia el sistema de memoria virtual. /private/var/vm está configurado como directorio de intercambio. /sbin/dynamic_pager comienza 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/rc tu empiezas /usr/libexec/fix_prebinding para corregir incorrectamente binarios preenlazados.
  • /etc/rc corriendo /etc/rc.cleanup para limpiar y restablecer archivos y dispositivos.
  • /etc/rc se lanza finalmente /sbin/SystemStarter para administrar elementos iniciales en ubicaciones como /System/Library/StartupItems y /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, como Description, Provides, Requires, OrderPreference, activar / desactivar mensajes, etc. Tu puedes correr SystemStarter -n -D como root para que el programa imprima la resolución de problemas y la información de dependencia (sin ejecutar nada).
  • CoreGraphics starter 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!

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar