Capítulo 8. Arranque y configuración de un sistema Linux

Tabla de contenidos

8.1. Proceso de arranque de Linux
8.2. Proceso init
8.3. Configuración del sistema mediante /etc/sysconfig

Resumen

El arranque de un sistema Linux incluye diferentes componentes. Este capítulo describe los principios subyacentes y destaca los componentes incluidos. En este capítulo también se describen el concepto de niveles de ejecución y la configuración del sistema SUSE mediante sysconfig.


8.1. Proceso de arranque de Linux

El proceso de arranque de Linux consta de varios pasos cada uno de ellos representado por otro componente. La siguiente lista resume el proceso de arranque y las funciones de los principales componentes relacionados.

  1. BIOS.  Después de haber encendido el equipo, la BIOS inicializa la pantalla y el teclado y comprueba la memoria principal. Hasta aquí, la máquina no tiene acceso a ningún medio de almacenamiento masivo. A continuación, la información de la fecha y hora actuales y de los principales periféricos se carga a partir de los valores CMOS. Una vez reconocido el disco duro principal y su geometría, el control de sistema pasa de la BIOS al cargador de arranque.

  2. Cargador de arranque.  El primer sector de datos de 512 bytes físicos se carga en la memoria principal y el cargador de arranque ubicado al inicio de este sector prevalece. Los comandos ejecutados por el cargador de arranque determinan la parte restante del proceso de arranque. Por lo tanto, los primeros 512 bytes del primer disco duro se consideran como Registro de inicio principal (MBR). A continuación, el cargador de arranque traslada el control al sistema operativo en sí, en este caso, el núcleo Linux. Puede encontrar más información acerca de GRUB, el cargador de arranque de Linux, en el Capítulo 9, Cargador de arranque.

  3. Núcleo y initramfs.  Para pasar el control de sistema, el cargador de arranque carga en la memoria el núcleo y un sistema inicial de archivos basado en RAM (initramfs). El núcleo puede utilizar directamente el contenido del ramfs inicial. El ramfs inicial contiene un pequeño ejecutable denominado init que gestiona el montaje del sistema real de archivos raíz. En las primeras versiones de SUSE Linux, initrd y linuxrc gestionaban respectivamente estas tareas. Para obtener más información acerca de initramfs, consulte la Sección 8.1.1, “initramfs”.

  4. init en initramfs.  Este programa realiza todas las acciones necesarias para el montaje del sistema de archivos raíz correcto, como proporcionar la función de núcleo para el sistema de archivos necesario y los controladores de dispositivos para los controladores de almacenamiento masivo con udev. Una vez encontrado el sistema de archivos raíz, se comprueban los errores y se realiza el montaje. Si este paso se ha realizado correctamente, initramfs se limpia y el programa init se ejecuta en el sistema de archivos raíz. Para obtener más información acerca de init, consulte la Sección 8.1.2, “init en initramfs”. Para obtener más información acerca de udev, consulte el Capítulo 12, Gestión dinámica de dispositivos de núcleo con udev.

  5. init.  init gestiona el arranque actual del sistema mediante diferentes niveles que proporcionan varias funciones. init se describe en la Sección 8.2, “Proceso init”.

8.1.1. initramfs

initramfs es un pequeño archivo de reserva de cpio que el núcleo puede cargar en un disco RAM. Proporciona un entorno Linux mínimo que habilita la ejecución de programas antes de que se monte el sistema de archivos raíz. El entorno Linux mínimo se carga en la memoria mediante las rutinas de la BIOS y no necesita requisitos específicos de hardware, únicamente una memoria suficiente. initramfs siempre debe proporcionar un ejecutable denominado init que ejecuta el programa init actual en el sistema de archivos raíz para que se lleve a cabo el proceso de arranque.

Antes de que el actual sistema de archivos raíz se pueda montar y de que el actual sistema operativo se pueda iniciar, el núcleo necesita los controladores correspondientes para acceder al dispositivo en el que se ubica el sistema de archivos raíz. Estos controladores pueden incluir controladores especiales para algunos tipos de unidades de disco duro o controladores de red para acceder al sistema de archivos en red. Los módulos necesarios para el sistema de archivos raíz se pueden cargar con init o initramfs. Una vez que se cargan los módulos, udev proporciona a initramfs los dispositivos necesarios. initramfs está disponible durante todo el proceso de arranque, lo que hace posible la gestión de todos los eventos de dispositivo generados durante el arranque.

Si necesita cambiar el hardware (discos duros) en un sistema instalado y este hardware requiere controladores diferentes en el núcleo durante el arranque, deberá actualizar initramfs. Esto se realiza de la misma manera que con el predecesor de initramfs, initrd, es decir, llamando a mkinitrd. Al llamar a mkinitrd sin ningún argumento se crea un initramfs. Al llamar mkinitrd -R se crea un initrd. En SUSE Linux, los módulos para cargar se especifican mediante la variable INITRD_MODULES en /etc/sysconfig/kernel. Después de la instalación, esta variable se establece en su valor correcto. Los módulos se cargan exactamente en el mismo orden en el que aparecen en INITRD_MODULES. Esto es especialmente importante si se utilizan varios controladores SCSI, porque, si no, los nombres de los discos duros cambiarían. Estrictamente hablando, sería suficiente cargar sólo los controladores necesarios para acceder al sistema de archivos raíz. Sin embargo, todos los controladores SCSI necesarios para la instalación se cargan mediante initramfs o initrd porque si no, después, la carga podría generar problemas.

[Important]Actualización de initramfs o initrd

El cargador de arranque carga initramfs o initrd de la misma manera que el núcleo. No es necesario volver a instalar GRUB después de actualizar initramfs o initrd, puesto que, al arrancar, GRUB busca en el directorio el archivo correcto.

8.1.2. init en initramfs

El propósito principal de init en initramfs es preparar el montaje y el acceso al sistema de archivos raíz real. En función de la configuración del sistema actual, init es responsable de las tareas siguientes.

Carga de módulos de núcleo

En función de la configuración de hardware, se necesitarán controladores especiales para acceder a los componentes de hardware de su equipo (el componente más importante es la unidad de disco duro). Para acceder al sistema de archivos raíz final, el núcleo necesita cargar los controladores del sistema de archivos correctos.

Provisión de archivos de bloque especiales

Para cada módulo cargado, el núcleo genera eventos de dispositivo. udev gestiona estos eventos y genera los archivos especiales de dispositivo en un sistema de archivos RAM en /dev. Sin esos archivos especiales, no se podría acceder al sistema de archivos.

Gestión de las configuraciones RAID y LVM

Si configura el sistema para almacenar el sistema de archivos raíz en RAID o LVM, init configura LVM o RAID para habilitar el posterior acceso al sistema de archivos raíz. Se puede encontrar información acerca de RAID en la Sección 2.2, “Configuración de RAID de software”. Se puede encontrar información acerca de LVM en la Sección 2.1, “Configuración de LVM”.

Gestión de la configuración de red

Si ha configurado el sistema para utilizar un sistema de archivos raíz montado en red (montado mediante NFS), init debe comprobar que los controladores de red adecuados estén cargados y configurados para permitir el acceso al sistema de archivos raíz.

Cuando se llama a init durante el arranque inicial como parte del proceso de instalación, sus tareas son diferentes de las mencionadas anteriormente:

Búsqueda del medio de instalación

Al iniciar el proceso de instalación, la máquina carga un núcleo de instalación y un initrd especial mediante el instalador YaST y a partir del medio de instalación. El instalador YaST, que se ejecuta en un sistema de archivos RAM, necesita información acerca de la ubicación actual del medio de instalación para acceder a él e instalar el sistema operativo.

Inicio del reconocimiento de hardware y carga de los módulos de núcleo adecuados

Tal y como se ha mencionado en la Sección 8.1.1, “initramfs”, el proceso de arranque se inicia con un conjunto mínimo de controladores que se pueden utilizar con casi todas las configuraciones de hardware. init inicia un proceso de escaneo de hardware inicial que determina el conjunto de controladores adecuado para la configuración del hardware. Estos valores se escriben después en INITRD_MODULES, incluido en /etc/sysconfig/kernel, con el fin de habilitar cualquier proceso de arranque posterior para que use un initrd personalizado, o en un archivo /etc/sysconfig/hardware/hwconfig-* si el dispositivo no es necesario durante el proceso de arranque. Durante el proceso de instalación, init carga este conjunto de módulos.

Carga del sistema de instalación o del sistema de rescate

En cuanto se haya reconocido correctamente el hardware, se hayan cargado los controladores adecuados y udev haya creado los archivos especiales de dispositivo, init inicia el sistema de instalación, que contiene el instalador YaST en sí, o el sistema de rescate.

Inicio de YaST

Por último, init inicia YaST, que inicia la instalación del paquete y la configuración del sistema.