Migrando a GRUB 2

Otavio Salvador propuso en la lista de Debian-Release pasar a utilizar GRUB2 en la próxima release (Debian Lenny) y comenzó un interesante thread al respecto.

Para el que no lo conoce, GRUB es el mnemónico de GRand Unified Bootloader. Un boot loader, o cargador de arranque, es el primer programa que se ejecuta cuando la computadora arranca (salvando la secuencia de arranque en ROM). El boot loader es responsable de cargar y transferir el control al núcleo, o kernel, del sistema operativo. El kernel, luego, incializa el resto del sistema operativo.

GRUB es, para aquellos que tenemos Linux, el “menú que aparece en la pantalla” y que nos permite seleccionar el sistema operativo, o la versión de kernel, que vamos a iniciar. Otro gestor conocido y que muchos hemos utilizado alguna vez, es LILO.

La versión 1 de GRUB, ahora denominada GRUB Legacy, es la que utiliza la mayoría de las distribuciones de GNU/Linux actuales y ya no está siendo desarrollada activamente por la comunidad; no se están añadiendo nuevas funcionalidades y sólo se están aplicando los parches necesarios para mantenerlo al día mientras la versión 2 se estabiliza. De ahí la solicitud de Otavio en la lista de mails.

Los objetivos de esta nueva versión son, entre otros:

  • Permitir scripting, condicionales, bucles, variables y funciones.
  • Interfaz gráfica.
  • Extensibilidad mediante carga dinámica de módulos.
  • Portabilidad a distintas arquitecturas.
  • Internacionalización. Soporte para caracteres fuera del conjunto ascii, mensajes localizados, etc.
  • Mejor administración de memoria.
  • Marco de trabajo modular, jerárquico y orientado a objetos para sistemas de archivo, archivos, dispositivos, unidades, terminales, comandos, tablas de partición y cargadores de SO.
  • Instalación multiplataforma.
  • Modo de rescate para casos en los cuales es imposible iniciar.
  • Corregir errores de diseño de la versión anterior de GRUB, que no pueden resolverse debido a compatibilidad inversa, por ejemplo el numerado de las particiones (he he he …).

Hay que advertir que, sin embargo, algunos sistemas de archivo todavía no están soportados (faltan reiser3 y reiser4, por ejemplo). Parte del estado de la transición en Debian está documentado en las páginas Grub2 y GrubTransition de la Debian wiki.

Con el objeto de comenzar a testear esta nueva versión, decidí instalarla en una instalación de Debian Lenny local. Para ello, en primer lugar hay que descargar e instalar el metapaquete grub2, que se encargará de efectuar la migración del archivo de configuración anterior al nuevo formato e instalar el nuevo cargador de arranque en modo chainloading, manteniendo la versión de GRUB anterior para permitir la recuperación en caso de una falla.

# aptitude install grub2

El paso siguiente, por cierto bastante evidente, es reiniciar el equipo para verificar el funcionamiento del nuevo cargador de arranque. Verán en la pantalla de selección que la primer opcion de GRUB es iniciar el nuevo cargador de arranque (“Chainload into GRUB 2”).

Al ingresar en GRUB2 notarán el cambio en el despliegue de la imagen de fondo (debian-blueish-wallpaper en mi caso, y muy agradable por cierto) y el menú desde el cual podrán seleccionar el sistema operativo a iniciar.

Si ocurrió alguna falla durante el inicio, pueden volver a iniciar cualquiera de los sistemas operativos instalados mediante el primer menú de GRUB (Legacy).

Si todo salió bien, ya pueden sobreescribir el cargador de arranque antiguo con el nuevo. Para ello hay que ejecutar como root:

# upgrade-from-grub-legacy

La configuración en la versión Legacy se almacenaba generalmente en el archivo menu.lst dentro del directorio /boot/grub (o donde tengan instalado el cargador). En GRUB2, la configuración se almacena en el archivo grub.cfg, que es generado automáticamente en Debian por update-grub siguiendo las plantillas almacenadas en /etc/grub.d y el archivo /etc/default/grub

Actualización (29/04/2008): Ya no es necesario incorporar las entradas de los sistemas operativos a mano en la configuración del gestor de arranque. La versión de grub en Debian Lenny puede incorporar automáticamente al menú de arranque los sistemas operativos existentes en el equipo gracias a la detección realizada por el paquete os-prober. De todas formas, dejo tal cual el procedimiento que sigue pues puede servir ante un fallo.

Para añadir una nueva entrada de sistema operativo en el menú hay que crear un nuevo archivo en /etc/grub.d. Por ejemplo, para añadir una entrada de arranque a Windows XP podemos seguir los pasos indicados en este thread y crear un archivo 20_windows_xp en /etc/grub.d con las siguientes líneas

#! /bin/sh -e

cat << EOF
menuentry "Microsoft Windows XP Professional" {
    set root=(hd0,1)
    chainloader +1
}
EOF

Donde (hd0,1) será lo que tenían definido en menu.lst sólo que con un número más. Vale decir, si era (hd0,0) ahora será (hd0,1). Este cambio viene de larga data y a petición de varios pues, como recordarán, las particiones en GRUB Legacy se numeraban desde el 0, con lo cual siempre eran un número menor a las indicadas por fdisk en Linux, y eso nos ha traído dolores de cabeza a más de uno.

Finalmente queda dar los permisos de ejecución al script y volver a generar la configuración en base a estas plantillas con:

# chmod +x /etc/grub.d/20_windows_xp
# update-grub

Y reiniciar para probar nuevamente…

Si la imagen de fondo de GRUB2 no les agrada, pueden obtener más imágenes instalando el paquete grub2-splashimages o crear una utilizando GIMP o su editor favorito.

Bien eso es todo. Mucha suerte y en el caso de que no tengan éxito, siempre tengan a mano un CD o DVD de Debian de la arquitectura que están utilizando, para iniciar en modo rescate, jeje…

Saludos!

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress