Una mirada más cercana al proceso de inicio

Puede iniciar su sistema Linux desde un disco duro o disquete. La sección de instalación de la Guía GNU/Linux: Instalación y Primeros Pasos, se explica cómo instalar el sistema operativo para arrancar de un modo u otro.

Al encender una PC, el BIOS efectúa varias pruebas al hardware para asegurarse de que no existan problemas[24] , y luego empieza realmente el proceso de inicio del sistema operativo. El BIOS selecciona una unidad de disco y lee su primer sector. Típicamente, la unidad de disco seleccionada es la unidad de disquetes (y funciona si existe un disquete insertado booteable), de no ser así selecciona el primer disco duro, si existe un disco en la computadora (de todas maneras el orden de selección de unidad de discos es configurable en la mayoría de las PC's). Al primer sector de un disco se le llama sector de arranque, en inglés boot sector o master boot sector (MBR o sector de arranque maestro). Si el disco contiene varias particiones, cada una de ellas tiene su propio sector de arranque (primer sector de cada partición).

El sector de arranque (boot sector) contiene un pequeño programa lo suficientemente pequeño para que quepa en un único sector, cuya responsabilidad es leer el sistema operativo desde el disco, cargarlo en memoria y ponerlo en ejecución. Cuando se inicia Linux desde un disquete, el sector de arranque contiene un código que solamente lee los primeros cientos de bloques (dependiendo del tamaño del kernel por supuesto) y los coloca en una ubicación predeterminada en la memoria. En un disquete de inicio de Linux no existe un sistema de archivos, el kernel está simplemente almacenado en sectores consecutivos, lo que simplifica el proceso de arranque. Sin embargo es posible también arrancar desde un disquete con un sistema de archivos utilizando LILO, el cargador de Linux.

Al arrancar desde un disco duro, el código contenido en el sector de arranque maestro (MBR o Master Boot Record), examina la tabla de particiones del disco duro (esta tabla también se almacena en el MBR), identifica la partición activa (aquella partición que ha sido designada como de inicio), lee el cargador contenido en el sector de arranque (boot sector) a una localización en memoria y lo ejecuta.

El código almacenado en el sector de arranque de la partición del disco duro hace lo mismo que el contenido en el sector de arranque del diskette: lee el kernel desde la partición del disco duro, lo coloca en memoria e inicia su ejecución. Sin embargo, existen diferencias. No es muy útil mantener una partición exclusiva para almacenar la imagen del kernel, por lo tanto el cargador no se limita a leer de manera secuencial los sectores del disco, como lo hace en el caso de un floppy, sino que en el caso de un disco duro debe encontrar en qué lugar del sistema de archivos ha sido almacenado el kernel. Existen varias maneras de resolver este problema, pero la más común es utilizando LILO (consulte la documentación de LILO si desea conocer mayores detalles de cómo LILO realiza esta tarea).

LILO normalmente lee, coloca en memoria y comienza la ejecución del kernel Linux predeterminado. Es posible configurar LILO para que sea capaz de iniciar una de varias imágenes del kernel diferentes, o de otros sistemas operativos. De esta manera, también es posible que el usuario seleccione con cuál de ellos trabajar al momento de iniciar el sistema. Se puede configurar LILO, para que no inicie la carga del kernel predeterminado de manera inmediata y consulte cuál kernel o sistema operativo debe iniciarse (esta configuración necesita que se mantengan presionadas la teclas de alt, shift, or ctrl cuando LILO comienza su ejecución). Otra opción consiste en configurarlo de manera que siempre consulte desde qué imagen o sistema se va a iniciar, y que transcurrido cierto tiempo de no recibir ninguna indicación, arranque desde el kernel predeterminado.

Con LILO es posible "pasarle" al kernel información a través de argumentos en la línea de comandos (kernel command line argument), tecleando los argumentos después del nombre del kernel o del sistema operativo que se desea utilizar.

Iniciar el sistema desde un disquete o desde un disco duro tienen ventajas diferentes, aunque generalmente iniciar desde el disco duro es mas agradable, ya que evita la incomodidad de lidiar con diskettes. También es más rápido. Sin embargo, en un principio puede ser complejo para algunos usuarios instalar el sistema para que arranque desde un disco duro. Por lo que, a veces se instala de manera que inicie desde un disquete y después cuando el sistema está instalado de manera adecuada y todo funciona correctamente se instala el LILO para arrancar desde el disco duro.

Después de que el kernel ha sido leído del disco, cargado en la memoria y puesto en ejecución, pasa lo siguiente:



[24] El nombre de este chequeo es power on self test, or POST for short.