LPIC 102.2 Instalando un Boot Manager

Introducción:

Cuando arrancamos linux desde el disco duro lo primero que ocurre es que la BIOS indica en que disco y en que partición esta el sistema desde donde arrancará. Después una vez ya en el disco existen dos fases: Cuando arranca el boot loader, que no es más que un programita en donde elegimos que kernel queremos arrancar y con que opciones de arranque y una vez seleccionado ya lanzará el kernel seleccionado y arrancará los procesos. Cuando comienza este punto el trabajo del boot loader habrá terminado, por tanto, lo que estudiaremos en esta lección será el primer punto del arranque, el que es responsabilidad del boot loader.

Todos los sistemas linux necesitan algún tipo de boot loader los más conocidos son LILO y GRUB que son los dos que estudiaremos a continuación:

LILO

Lilo es un boot loader que gozó de una grandísima popularidad hace unos años teniendo prácticamente el monopolio en los boot loaders. No obstante hoy en día practicamente ha desaparecido dejando paso a GRUB que estudiaremos después de este. No obstante sobre todo en sistemas antiguos aun nos lo encontramos por lo que es necesario conocer su funcionamiento. Y bueno en el examen normalmente suele caer al menos alguna pregunta de LILO así que razón más que de sobra para estudiarlo no? 😉

The boot loader

El boot loader en si consta de dos partes por un lado en el sector de arranque se aloja una llamada al programa en si, ya que dicho sector es demasiado pequeño para alojar todo el programa en si. Es en esta segunda etapa cuando de una forma interactiva se lanza el LILO propiamente dicho que esta alojado en el disco duro. En este punto se nos ofrece un prompt que nos permite elegir la imagen del kernel que queremos iniciar así como pasarle opciones al kernel en boot time.

El prompt que se nos muestra aquí es:

LILO:

y en el podremos indicarle el kernel del que queremos arrancar así como los parametros mediante la tecla de tab podremos ir moviéndonos entre los kernels que tenemos instalados. El kernel por defecto tendrá al lado un asterisco, indicando precisamente eso que es el kernel que se iniciará por defecto.

Normalmente no es necesario elegir ningún kernel, ya que el arranque normal es hacerlo desde el kernel marcado por defecto. Pero en caso de querer usar cualquier otro kernel por cualquier razón puede cambiarse aquí para arrancar el que tu quieras.

The LILO command:

Es conocido también como map installer y es el comando que se usa para instalar y configurar LILO boot loader. El comando lee la configuración de un fichero y en el se indica donde estan las imagenes del kernel, la configuración del vídeo, el arranque por defecto y demás. Esto es por tanto un comando de nuestro sistema linux y como tal tiene su entrada en el man. Parametros interesantes son:

  • -C confg_file carga una nueva configuración desde el fichero que se le indica.
  • -m map_file crea un nuevo map_file donde se le indica
  • -q muestra la configuración actual.
  • -v el clásico verbose mode.

El fichero de configuración tiene esta pinta:

boot = ruta del dispositivo de donde de boot
timeout = tiempo que pasa hasta que arranca ese kernel
prompt si existe esta línea muestra el prompt al usuario
read-only el filesystem de root se monta en modo lectura en el arranque posteriormente puede montarse como se quiera
map = ruta del map_file
install = ruta del boot

image = ruta del kernel
label = nombre del kernel que se mostrará en lilo
root= ruta de la partición de arranque

La localización de LILO

Al instalar lilo puede se puede elegir si situar el kernel en el boot sector o en la partición de root. Si el sistema es solo para linux esta decisión es irrelevante si vas a correr más sistemas debes situarlo en el boot sector. No obstante para esta certificación se consideran instalaciones de linux sin convivir con otros sistemas operativos.

GRUB

GRUB es en la actualidad prácticamente un standard de facto y presenta la principal ventaja frente a lilo de ser mucho más flexible y tener un soporte mucho más completo a kernels y configuraciones más inusuales. Otra ventaja es que los cambios que realizamos tienen efecto inmediato, no siendo necesario andar ejecutando el comando para que tengan efecto.

Grub device naming

Una peculiaridad de grub es que cambia el nombre de los dispositivos lo cual si me preguntais a mi me parece un jaleo bastante interesante, pero seguro que tendrá s razón de ser. Grub se refiere a los dispositivos de la siguiente forma :

(xdn[,m])

la x varía en caso de ser disco duro (hd) o diskete (fd) y la n se refiere al número de disco según lo veo la BIOS, comenzando desde cero. La m de ,m se refiere a la partición dentro del disco de nuevo empezando desde cero. El uso de esto último es opcional y se usará solo cuando nos refiramos a particiones. Así pues (hd0) es el primer disco duro instalado y (hd0,1) es la segunda partición dentro del primer disco duro.

Installing grub

Para instalar grub lo más sencillo es ejecutar el script grub-install que irá seguido del disco donde queremos instalarlo. Lo que hace dicho script es mirar el map fil (/boot/grub/device.map por defecto) y lo mapea desde la bios por lo que arranca directamente desde ese fichero. Para editar la configuración modificaremos /boot/grub/device.map y ejecutaremos de nuevo grub-install. Pero esto solo en caso de querer remapear el map file con la bios. El map file tiene este formato:

(disk) /dev/device

Esta es la forma más comoda de instalarlo pero también se podría hacer a mano con el comando grub. Para ellos ejecutamos el comando grub y optendremos un prompt donde pondríamos por ejemplo:

root (hd0,0)
setup (hd0)

Esto hará que el arranque sea desde el primer disco y concretamente arranque la primera partición.

Booting grub

Si no hay fichero de configuración lo que obtendremos será simplemente un prompt. Para arrancarlo a mano tendriamos que hacer lo siguiente:

  1. root device
  2. kernel ruta_del_kernel [opciones]
  3. initrd fichero (esto es opcional solo si es necesario un ramdisk)
  4. boot

The grub configuration file

Aunque podemos hacer el arranque manual lo normal y lo conveniente es tener un fichero de configuración con el arranque ya precargado. Para ello editaremos el fichero /boot/grub/menu.lst o /boot/grub/grub.conf (redhat). Aunque esto último puede variar en función de tu distribución en mi debian esta en: /boot/grub/grub.cfg

El fichero de configuración tiene varias cosas, pero la parte importante del arranque es la siguiente:

default=0
timeout=3
title Linux
root (hd0,0)
kernel /vmlinuz-2.4…. root=/dev/hda2
initrd /initrd-2.4…img

Esta es una pequeña parte de las opciones en realidad todo lo que se puede hacer con GRUB es realmente abrumador. Estas opciones básicas son en realidad muy parecidas a las de LILO y creo que podréis imaginaroslas. Lo que quizá pueda parece más complejo es el tema de vmlinuz y de initrd, pero de momento por lo que he visto no es algo que exijan en esta certificación de LPIC. Si os interesa yo os recomiendo que busquéis manuales de como compilar el kernel compileis un par de kernels los configureis en GRUB para arrancar desde ahí y trastéis un poco. De esta forma es como yo en mis tiempos mozos aprendi todas estas cosas, todo sea dicho de paso a costa de cargarme mi máquinas unas cuantas veces (y no fueron ni dos ni tres esas veces 😉 )

7 comentarios en “LPIC 102.2 Instalando un Boot Manager

    1. Muchísimas gracias! Más allá de la donación que me hace mucha ilusión me agrada que de verdad te sirva 🙂 Lo cierto es que estoy sacando el tiempo para el curso de mis horas de sueño y se agradecen estas palabras de verdad 🙂

  1. El razonamiento sobre seguir hablando de LILI me ha convencido, a mí sólo me venía a la cabeza that’s from the past… ¿no se habla nada sobre GRUB2?

Los comentarios están cerrados.