8.4. Hacer el sistema LFS arrancable

Tu nuevo y brillante sistema LFS está casi completo. Una de las últimas cosas por hacer es asegurarse de que puede ser arrancado. Las siguientes instrucciones sólo son aplicables en ordenadores de arquitectura IA-32, o sea PCs. La información sobre “cargadores de arranque” para otras arquitecturas debería estar disponible en las localizaciones usuales de recursos específicos para esas arquitecturas.

El arranque puede ser una tarea compleja. Primero, unas palabras de advertencia. Familiarízate con tu actual gestor de arranque y con cualquier otro sistema operativo presente en tu(s) disco(s) duro(s) que desees mantener arrancable. Asegúrate de que tienes preparado un disco de arranque de emergencia para poder “rescatar” el ordenador si este quedase inutilizable (no arrancable).

Anteriormente compilamos e instalamos el gestor de arranque GRUB en preparación para este paso. El proceso consiste en escribir ciertos ficheros especiales de GRUB a su localización específica en el disco duro. Antes de hacer esto te recomendamos encarecidamente que crees un disquete de arranque de GRUB como respaldo. Inserta un disquete en blanco y ejecuta los siguientes comandos:

dd if=/boot/grub/stage1 of=/dev/fd0 bs=512 count=1
dd if=/boot/grub/stage2 of=/dev/fd0 bs=512 seek=1

Saca el disquete y guárdalo en lugar seguro. Ahora inicia el intérprete de comandos de grub:

grub

GRUB utiliza su propia estructura de nombres para los discos de la forma (hdn,m), donde n es el número del disco duro y m es el número de la partición, comenzando ambos desde 0. Por ejemplo, la partición hda1 es (hd0,0) para GRUB, y hdb3 es (hd1,2). Al contrario que Linux, GRUB no considera los dispositivos CD-ROM como discos duros. Por ejemplo, si tienes un CD en hdb y un segundo disco duro en hdc, este segundo disco duro seguiría siendo (hd1).

Usando la información anterior, determina la denominación apropiada para tu partición raíz (o partición de arranque, si usas una separada). Para los siguientes ejemplos asumiremos que tu partición raíz (o la de arranque) es hda4

Indícale a GRUB dónde debe buscar sus ficheros stage{1,2}. Puedes utilizar el tabulador para que GRUB te muestre las alternativas:

root (hd0,3)
[Aviso]

Aviso

El siguiente comando sobreescribirá tu actual gestor de arranque. No ejecutes el comando si esto no es lo que quieres. Por ejemplo, si utilizas otro gestor de arranque para administrar tu MBR (Master Boot Record, Registro Maestro de Arranque). En este escenario, posiblemente tenga más sentido instalar GRUB en el “sector de arranque” de la partición LFS, en cuyo caso dicho comando sería setup (hd0,3).

Indícale a GRUB que se instale en el MBR de hda:

setup (hd0)

Si todo está bien, GRUB informará que ha encontrado sus ficheros en /boot/grub. Esto es todo para activarlo. Cierra el intérprete de comandos de grub:

quit

Crea un fichero de “lista de menú” para definir el menú de arranque de GRUB:

cat > /boot/grub/menu.lst << "EOF"
# Begin /boot/grub/menu.lst

# By default boot the first menu entry.
default 0

# Allow 30 seconds before booting the default.
timeout 30

# Use prettier colors.
color green/black light-green/black

# The first entry is for LFS.
title LFS SVN-20070916
root (hd0,3)
kernel /boot/lfskernel-2.6.22.6 root=/dev/hda4
EOF

Si lo desas, añade una entrada para la distribución anfitriona. Tendrá un aspecto similar a este:

cat >> /boot/grub/menu.lst << "EOF"
title Red Hat
root (hd0,2)
kernel /boot/kernel-2.6.5 root=/dev/hda3
initrd /boot/initrd-2.6.5
EOF

Si necesitas un arranque dual a Windows, la siguiente entrada debería permitirte iniciarlo:

cat >> /boot/grub/menu.lst << "EOF"
title Windows
rootnoverify (hd0,0)
chainloader +1
EOF

Si info grub no te dice todo lo que quieres saber, puedes encontrar más información sobre GRUB en su sitio web, localizado en: http://www.gnu.org/software/grub/.

El estándar FHS estipula que el fichero menu.lst debe tener un enlace simbólico a /etc/grub/menu.lst. Para satisfacer este requisito, ejecuta el siguiente comando:

mkdir -v /etc/grub
ln -sv /boot/grub/menu.lst /etc/grub