Presione el botón de encendido de su sistema y, después de unos momentos, verá el indicador de inicio de sesión de Linux.
¿Alguna vez se ha preguntado qué sucede detrás de escena desde el momento en que presiona el botón de encendido hasta que aparece el indicador de inicio de sesión de Linux?
Las siguientes son las 6 etapas de alto nivel de un proceso típico de arranque de Linux.
1. BIOS
- BIOS significa Sistema básico de entrada/salida
- Realiza algunas comprobaciones de integridad del sistema
- Busca, carga y ejecuta el programa del cargador de arranque.
- Busca el gestor de arranque en disquete, CD-ROM o disco duro. Puede presionar una tecla (generalmente F12 o F2, pero depende de su sistema) durante el inicio del BIOS para cambiar la secuencia de inicio.
- Una vez que el programa del cargador de arranque se detecta y se carga en la memoria, el BIOS le otorga el control.
- Entonces, en términos simples, el BIOS carga y ejecuta el cargador de arranque MBR.
2. MBR
- MBR significa Master Boot Record.
- Está ubicado en el primer sector del disco de arranque. Por lo general, /dev/hda o /dev/sda
- MBR tiene menos de 512 bytes de tamaño. Esto tiene tres componentes 1) información del cargador de arranque principal en los primeros 446 bytes 2) información de la tabla de particiones en los siguientes 64 bytes 3) comprobación de validación de mbr en los últimos 2 bytes.
- Contiene información sobre GRUB (o LILO en sistemas antiguos).
- Entonces, en términos simples, MBR carga y ejecuta el cargador de arranque GRUB.
3. GRUB
- GRUB significa Grand Unified Bootloader.
- Si tiene varias imágenes del kernel instaladas en su sistema, puede elegir cuál ejecutar.
- GRUB muestra una pantalla de inicio, espera unos segundos, si no ingresa nada, carga la imagen del kernel predeterminada como se especifica en el archivo de configuración de grub.
- GRUB tiene el conocimiento del sistema de archivos (el antiguo cargador de Linux LILO no entendía el sistema de archivos).
- El archivo de configuración de Grub es /boot/grub/grub.conf (/etc/grub.conf es un enlace a esto). El siguiente es un ejemplo de grub.conf de CentOS.
#boot=/dev/sda default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz hiddenmenu title CentOS (2.6.18-194.el5PAE) root (hd0,0) kernel /boot/vmlinuz-2.6.18-194.el5PAE ro root=LABEL=/ initrd /boot/initrd-2.6.18-194.el5PAE.img
4. Núcleo
- Monta el sistema de archivos raíz como se especifica en "root=" en grub.conf
- Kernel ejecuta el programa /sbin/init
- Dado que init fue el primer programa ejecutado por Linux Kernel, tiene el ID de proceso (PID) de 1. Haga un 'ps -ef | grep init' y verifique el pid.
- initrd significa disco RAM inicial.
- Initrd es utilizado por el núcleo como sistema de archivos raíz temporal hasta que se inicia el núcleo y se monta el sistema de archivos raíz real. También contiene los controladores necesarios compilados en su interior, lo que le ayuda a acceder a las particiones del disco duro y otro hardware.
5. Inicial
- Mira el archivo /etc/inittab para decidir el nivel de ejecución de Linux.
- Los siguientes son los niveles de ejecución disponibles
- 0 – detener
- 1 – Modo de usuario único
- 2:multiusuario, sin NFS
- 3 – Modo multiusuario completo
- 4:sin usar
- 5 – X11
- 6 – reiniciar
- Init identifica el nivel de inicio predeterminado de /etc/inittab y lo usa para cargar todos los programas apropiados.
- Ejecute 'grep initdefault /etc/inittab' en su sistema para identificar el nivel de ejecución predeterminado
- Si quiere meterse en problemas, puede establecer el nivel de ejecución predeterminado en 0 o 6. Ya que sabe lo que significan 0 y 6, probablemente no lo haga.
- Por lo general, establecería el nivel de ejecución predeterminado en 3 o 5.
6. Programas de nivel de ejecución
- Cuando el sistema Linux se está iniciando, es posible que vea que se inician varios servicios. Por ejemplo, podría decir “empezando sendmail…. OK". Esos son los programas de nivel de ejecución, ejecutados desde el directorio de nivel de ejecución definido por su nivel de ejecución.
- Según la configuración de nivel de inicio predeterminada, el sistema ejecutará los programas desde uno de los siguientes directorios.
- Ejecutar nivel 0 – /etc/rc.d/rc0.d/
- Ejecute el nivel 1:/etc/rc.d/rc1.d/
- Ejecute el nivel 2:/etc/rc.d/rc2.d/
- Ejecute el nivel 3:/etc/rc.d/rc3.d/
- Ejecute el nivel 4:/etc/rc.d/rc4.d/
- Ejecute el nivel 5:/etc/rc.d/rc5.d/
- Ejecute el nivel 6:/etc/rc.d/rc6.d/
- Tenga en cuenta que también hay enlaces simbólicos disponibles para estos directorios directamente en /etc. Entonces, /etc/rc0.d está vinculado a /etc/rc.d/rc0.d.
- Bajo los directorios /etc/rc.d/rc*.d/, verá programas que comienzan con S y K.
- Los programas que comienzan con S se utilizan durante el inicio. S para el inicio.
- Los programas que comienzan con K se usan durante el apagado. K por matar.
- Hay números justo al lado de S y K en los nombres de los programas. Esos son el número de secuencia en el que los programas deben iniciarse o eliminarse.
- Por ejemplo, S12syslog es para iniciar el deamon syslog, que tiene el número de secuencia de 12. S80sendmail es para iniciar el demonio de sendmail, que tiene el número de secuencia de 80. Por lo tanto, el programa syslog se iniciará antes de sendmail.
Ahí tienes. Eso es lo que sucede durante el proceso de arranque de Linux.