Una guía básica para las diferentes etapas del proceso de arranque de Linux


Como prometimos en nuestra publicación anterior, en esta publicación vamos a revisar el proceso de arranque en el sistema operativo Linux. Cómo pasa el sistema operativo por las diferentes etapas de los estados de arranque. Este artículo está escrito para aquellos lectores que solo tienen pasos en el mundo de Linux. Comprender cómo se inicia Linux es muy importante en términos de resolución de problemas de manera efectiva en caso de falla del sistema. Cuando un sistema se enciende y después de unos momentos, aparece un mensaje de inicio de sesión. ¿Hemos tratado de averiguar qué ha pasado por todas las etapas de la secuencia de arranque y qué sucedió detrás de escena durante el arranque del sistema?

Encendido

  1. BIOS (Basic Input Output System) is a software program comes pre-built in a motherboard chipset.
  2. BIOS loads and scans for devices such as Hard Disk, CD-ROM, RAM, etc.
  3. BIOS searches for MBR (Master Boot Record: 1st sector) of the primary hard drive, it scans for 1st stage loader (In our case boot loader is (GRUB LILO) and hands over the responsibility to MBR.
  4. Boot PROM/FLASH/BIOS is proficient of loading the MBR into RAM and executing it.

MBR (registro de arranque maestro)

  • 512 bytes of space –> MBR
  • MBR contains the information of loader of most operating system e.g UNIX, Linux and WINDOWS
  • MBR holds the small binary information of 1st stage of loader
  • MBR consist physical sector of the first disk drive (i.e 512 bytes) and it’s not part of any partition.
  • Placed on the prime disk drive, in the prime sector of the first cylinder of track is 0 and head is 0 (this whole path is generally booked for boot programs)
  • MBR involve a mini executable programs and a table specify the primary partitions.
Boot Code (GRUB) 446 bytes
partition 1: 16 bytes
partition 2: 16 bytes
partition 3: 16 bytes
partition 4: 16 bytes
magic Number: 2 bytes
  1. MBR also document which primary partition is ACTIVE.
  2. The BIOS surrender rights to the first stage boot loader, which then scans partition table and finds second stage boot loader on the partition configured as bootable.

Cargador de arranque

  1. The boot loader termed from 1st stage loader and loads itself into RAM. All this go on in milliseconds.
  2. The default stage 2 boot loader is a GRUB (Grand Unified Boot Loader) or LILO (Linux Loader)
  3. Once GRUB is loaded into RAM, then it’s search for the location of Kernel.
  4. GRUB will scrutinize the map file to find the kernel image, that is located under (/boot) and load it.
  5. GRUB loads the kernel (vmlinuz-version) from /boot partition

GRUB organiza RAMDISK para initrd -> (RAMDISK es espacio reservado de RAM). Además, lleva initrd a la RAM para preparar el kernel para que se cargue en la memoria y los módulos dependientes para que pueda dejar el sistema en el proceso de "inicialización".

En Linux, la mayoría de los controladores están preconstruidos como módulos, estos serían la unidad ram inicial (initrd.img) donde puede guardar toda la información de los módulos adicionales. Entonces, cuando el kernel arranca, crea ramdrive, carga el initrd.img y sus módulos dependientes.

GRUB lee /boot/grub/grub.conf y nos muestra una interfaz limpia para seleccionar el sistema operativo

Una vez que Kernel carga sus módulos dependientes y luego pasa al proceso "init". La imagen del núcleo tiene un pequeño programa descomprimido que descomprime el núcleo y lo ejecuta.

LILO necesitaba indicar MBR para ubicar los sistemas operativos en el disco duro. Cualquier modificación realizada a /etc/lilo.conf, que debe actualizarse en MBR, pero en el caso de GRUB no es necesario actualizar, se lee directamente del archivo /boot/grub/grub.conf.

Después de realizar cambios en /etc/lilo.conf, tendremos que actualizar el MBR manualmente

# /sbin/lilo -v

El cargador de segunda etapa de GRUB reside dentro del MBR y dentro de la partición/boot. Una vez que GRUB se carga en la memoria, se convierte en cargador de segunda etapa.

El directorio/initrd no debe eliminarse, es un marcador de posición temporal para que el kernel tenga acceso rápido a los módulos que necesita para iniciar los módulos del sistema, incluidos los controladores de dispositivo.

Los aspectos más destacados de la inicialización del kernel incluyen:

  1. initialize CPU components, eg, MMU
  2. initialize the scheduler (PID 0)
  3. mount the root filesystem in rw mode
  4. fork off the init process (PID 1)

En esencia, la inicialización del kernel hace dos cosas:

  1. Start the core system of shared resource managers (RAM, processor and mass storage).
  2. Starts a single process, /sbin/init.

El proceso de inicialización (sbin/init) es el primer proceso que carga todos los demonios y monta todas las particiones que se enumeran en/etc/fstab.

Acerca de / etc / fstab

  1. The /sbin/init reads /etc/inittab file
  2. Set default runlevel ( the telinit command allows administrators to tell the init process to change its current runlevel)
  3. Calls /etc/rc.d/rc.sysinit and /etc/rc.d/rc x (where ‘x‘ is a runlevel)
  4. In /etc/rc.d/rc5.d directory files starting with letter K –> kill scripts and files starting with letter S –> Startup scripts.
  5. Start up the tty processes and xdm ( X display manager)
  6. Starts User’s login screen