Tabla de contenidos
Resumen
El arranque e inicio de un sistema UNIX es un proceso complejo, ya que están
involucrados varios componentes que necesitan interactuar de forma
fluida. Este capítulo ofrece una breve introducción al concepto de arranque de
SUSE LINUX. También se describe el concepto de niveles de ejecución y la
configuración del sistema mediante el empleo de sysconfig.
El proceso de arranque en Linux consiste en varias etapas, cada una de las cuales está representada por otro componente. La siguiente relación ofrece un breve resumen acerca de cómo se produce el arranque y una descripción sobre los componentes más importantes.
BIOS
Después de encender el ordenador, la BIOS (Basic Input Output System) inicia la pantalla y el teclado y comprueba la memoria RAM. Hasta este momento el ordenador aún no utiliza ningún medio de almacenamiento (disquete, disco duro). A continuación se lee la hora, la fecha y los datos de los periféricos más importantes de los valores que están en la CMOS (CMOS setup). Una vez que se conoce el primer disco duro y su geometría, la BIOS traspasa el control del sistema al cargador de arranque.
Cargador de arranque
Durante este proceso se carga en la memoria el primer sector físico de datos de 512 bytes del primer disco duro y el cargador de arranque (bootloader) asume el control al principio de este sector. El orden de las instrucciones ejecutadas a través del cargador de arranque determina el proceso de arranque posterior. Estos primeros 512 bytes en el primer disco duro se denominan en inglés Master Boot Record (MBR). El cargador de arranque cede el control sobre el sistema al auténtico sistema operativo, en esta caso, el kernel de Linux. Puede encontrar más información acerca de GRUB, el cargador de arranque de Linux, en el Capítulo 8, El cargador de arranque.
Kernel e initrd
El cargador de arranque almacena tanto el kernel como un disco RAM inicial (initial RAM disk o initrd) en memoria a fin de poder traspasar el control al sistema. El kernel de Linux incluye una opción para poder guardar un sistema de archivos reducido en un disco RAM, pudiendo ejecutar así programas antes de montar el sistema de archivos real. El kernel descomprime a continuación initrd y monta un sistema de archivos raíz temporal. El contenido de initrd es un sistema Linux mínimo que contiene un ejecutable llamado linuxrc. linuxrc carga unos módulos especiales del kernel que permiten acceder al sistema de archivos raíz real. El kernel libera la memoria ocupada por initrd y arranca init después de que linuxrc haya finalizado correctamente, Puede encontrar más información acerca de initrd en la Sección 7.1.1, “initrd”.
linuxrc
Este programa ejecuta todas las acciones necesarias para montar el sistema de archivos raíz. Tan pronto como el sistema de archivos raíz real ha sido montado con éxito, linuxrc se detiene y el kernel inicia el programa init. Puede encontrar más información a este respecto en la Sección 7.1.2, “linuxrc”.
init
init gestiona el arranque en sí del sistema a través de diferentes niveles de funcionalidad. init está descrito en la Sección 7.2, “El programa init”.
initrd consiste en un sistema de archivos reducido (normalmente comprimido) que carga el kernel en un disco RAM inicial y que posteriormente es montado como un sistema de archivos raíz temporal. Proporciona un entorno Linux mínimo que permite la ejecución de programas antes de que el sistema de archivos raíz real pueda ser montado. Este entorno mínimo de Linux es cargado en la memoria por rutinas BIOS y su único requisito de hardware es contar con suficiente memoria. initrd siempre tiene que proporcionar un ejecutable llamado linuxrc que debe procesarse sin errores.
Antes de que el sistema de archivos raíz real sea montado y que el sistema operativo en sí pueda ser iniciado, el kernel necesita conocer los controladores que se requieren para acceder al dispositivo que alberga el sistema de archivos raíz. Estos controladores pueden ser especiales para un tipo específico de disco duro o incluso de red para permitir el acceso a un sistema de archivos de red (consulte Gestionar la configuración de red). El kernel ha de contener también el código necesario para leer el sistema de archivos de initrd. linuxrc puede cargar los módulos necesarios para el sistema de archivos raíz.
Cree un initrd mediante el script
mkinitrd. En
SUSE LINUX, los módulos que han de cargarse están especificados por la variable INITRD_MODULES ubicada en
/etc/sysconfig/kernel.
Tras la instalación, esta variable adquiere automáticamente el
valor correcto (el linuxrc de la instalación guarda qué modulos han sido
cargados). Los módulos son cargados en el mismo orden que se indica en
INITRD_MODULES. Este hecho es especialmente importante
si se emplean varios controladores SCSI, ya que de otro modo los nombres de los
discos duros podrían cambiar. En sentido estricto, debería ser suficiente con
cargar simplemente los controladores necesarios para acceder al sistema de
archivos raíz. Sin embargo, initrd lee todos los controladores SCSI requeridos
para la instalación ya que sería problemático realizar este proceso
posteriormente.
![]() | Actualización de initrd |
|---|---|
El cargador de arranque lee initrd del mismo modo que el kernel. No es necesario reinstalar GRUB tras una actualización de initrd ya que GRUB busca el archivo correcto en el directorio durante el arranque. | |
El fin principal de linuxrc es preparar el montaje de y el acceso al sistema de archivos raíz real. Dependiendo de la configuración del sistema, linuxrc es responsable de las siguientes tareas.
Según la configuración del hardware, es necesario disponer de controladores especiales para acceder a ciertos componentes de hardware presentes en el equipo (principalmente, el disco duro). Para poder acceder al sistema de archivos raíz final, el kernel necesita cargar los controladores de sistema de archivo apropiados.
Si ha establecido que el equipo albergue el sistema de archivos raíz bajo RAID o LVM, linuxrc configura LVM o RAID para permitir el acceso posterior al sistema de archivos raíz. Puede encontrar información adicional acerca de RAID en la Sección 3.7, “La configuración de soft RAID”. Para LVM, consulte la Sección 3.6, “Configuración de LVM”.
Si ha configurado el sistema para utilizar un sistema de archivos raíz montado en red (a través de NFS), linuxrc debe asegurarse de que se encuentren cargados los controladores de red y de que éstos permiten el acceso al sistema de archivos raíz.
Cuando linuxrc es ejecutado durante el arranque inicial como parte del proceso de instalación, sus tareas difieren de las mencionadas anteriormente:
En el momento de iniciar el proceso de instalación, el equipo carga un kernel especial desde el medio de instalación y un initrd especial con el instalador de YaST. El instalador de YaST, que se ejecuta en el sistema de archivos del disco RAM, necesita conocer la ubicación real del medio de instalación a fin de poder acceder a él e instalar el sistema operativo.
Como se ha mencionado en la Sección 7.1.1, “initrd”, el proceso
de arranque comienza con un conjunto mínimo de controladores que pueden ser
empleados con la mayoría de configuraciones de hardware. linuxrc ejecuta la
identificación inicial del hardware a fin de determinar qué controladores son
necesarios para acceder al hardware de su sistema. Esta información es
guardada posteriormente en INITRD_MODULES ubicado en
/etc/sysconfig/kernel a fin de permitir los arranques de
sistema posteriores. Durante el proceso de instalación, linuxrc carga este
conjunto de módulos.
Tan pronto como el hardware ha sido correctamente reconocido y los controladores correspondientes han sido cargados, linuxrc ejecuta el sistema de instalación, el cual contiene el verdadero instalador YaST o el sistema de rescate.
Finalmente, linuxrc inicia YaST, el cual ejecuta la instalación de paquetes y la configuración del sistema.