Grub2 en Debian
1. Introducción
1.1. ¿Qué es GRUB?
1.2. Desarrollo
1.3. GRUB2
2. Instalación
2.1. Importar configuración desde grub-legacy
3. Configuración
3.1. Configuración básica y opciones de arranque
3.2. Imagen de fondo y colores de texto
3.3. Tipo y tamaño de fuentes
4. Reinstalación
5. Referencias
1. Introducción
1.1. ¿Qué es GRUB?
Para quien no lo conozca, 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.
1.2. Desarrollo
El nombre de la versión más utilizada de GRUB es denominada "GRUB Legacy". Esta versión es sobre la cual se solucionan los errores, pero no se añaden nuevas características. Los desarrolladores de GRUB han cambiado su enfoque a GRUB 2, una completa reescritura, cuyos objetivos incluyen la puesta a un GNU GRUB más limpio, más seguro, más sólido, más portátil y mucho más poderoso. GRUB 2 comenzó con el nombre de PUPA. PUPA fue apoyada por la Information-technology Promotion Agency (IPA) en Japón. PUPA se integró en el desarrollo de GRUB 2 alrededor del 2002, cuando la versión 0.9x de GRUB fue renombrada a GRUB Legacy. En febrero de 2008, GRUB 2 todavía sigue en desarrollo, no está listo para su uso en sectores de producción, y no está documentado.
Algunos de los objetivos del proyecto incluyen el apoyo a plataformas no-x86, la internacionalización/localización, caracteres no ASCII, módulos dinámicos, gestión de memoria, un mini-lenguaje de scripting, la migración de plataforma específica (x86) de código a la plataforma de módulos específicos, y una marco orientado a objetos.
1.3. GRUB2
GRUB (GRUB 2, por ahora). Se han basado en un proyecto llamado PUPA cuya meta era desarrollar un GRUB más “limpio”, seguro, robusto y potente así como más portable y con soporte para diferentes idiomas.
Sin embargo Grub2 es un paquete nuevo que permite:
- 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
2. Instalación
Basta con instalar el paquete grub-pc y sus dependencias los cuales están en los repositorios de Squeeze y Sid. Se instala junto con el sistema base, en otro caso, es posible usar aptitude u otro gestor de paquetes para la instalación.
Para Lenny estos paquetes están disponibles desde los backports, los cuales podemos activar durante la instalación con lo que podremos elegir entre instalar grub-legacy o grub-pc. O bien hacer la instalación manualmente.
2.1. Importar configuración desde grub-legacy
Después de verificar que grub-pc y sus dependencias han sido correctamente instalados y haber reiniciado el sistema para comprobar su funcionamiento pasamos a actualizar con los datos desde nuestra versión anterior:
# upgrade-from-grub-legacySi tenemos otros sistemas operativos instalados en la máquina será necesario instalar os-prober
# aptitude install os-proberY lo ejecutamos
# os-proberAhora actualizamos el grub
# update-grubY es todo, al reiniciar se verán los cambios. Alternativamente podemos instalar los paquetes:
- startupmanager <-------- Para editar las opciones con una interfaz gráfica
- grub2-splashimages <-- Una colección de imágenes
3. Configuración
3.1. Configuración básica y opciones de arranque
El archivo /boot/grub/grub.cfg reemplaza el antiguo /boot/grub/menu.lst pero a diferencia de este último el archivo de configuración para la nueva versión es generado automáticamente a partir del archivo /etc/default/grub y los scripts ubicados en /etc/grub.d que son, si no hemos agregado alguno:
- 00_header <-- Carga las opciones del archivo /etc/default/grub
- 05_debian_theme <-- Configuración del tema: imagen de fondo y color de texto
- 10_hurd <-- Para kernels Hurd
- 10_linux <-- Para kernels Linux
- 30_os-prober <-- Genera entradas para otros sistemas operativos instalados
- 40_custom <-- Para agregar entradas a mano cuando os-prober no encuentra algún SO intalado
Para ver las resoluciones soportadas hay que entrar al menú durante el arranque de grub2 oprimiendo la tecla 'c' y luego
vbeinfoQue nos mostrará el listado de resoluciones posibles, para salir del menú y regresar al grub:
exitEl archivo /etc/default/grub contiene información importada de /boot/grub/menu.lst para generar las entradas del nuevo grub.cfg. De entre las opciones de este archivo, las que más nos puede interesar editar son las que marcamos con negritas en lo que resta de esta sección:
GRUB_CMDLINE_LINUX Si existe, agrega esta variable al final de la línea del kernel para todas las entradas del grub. Es símilar a "altoptions" en menu.lst.
GRUB_GFXMODE Cambia la resolución del grub.
Ejemplos de configuración con estas opciones:
GRUB_CMDLINE_LINUX="vga=792"
GRUB_GFXMODE=1024x768Con lo que la resolución de la TTY para todas las entradas será de 1024x768 a 32 bits y la resolución del grub de 1024x768.
Las opciones que controlan el tiempo que se mostrará la pantalla del grub son:
GRUB_HIDDEN_TIMEOUT=5
GRUB_HIDDEN_TIMEOUT_QUIET=falseGRUB_HIDDEN_TIMEOUT determina el número de segundos que se mostrara el grub en espera de que el usuario elija una entrada.
GRUB_HIDDEN_TIMEOUT_QUIET Toma uno de los valores true o false.
- true No se mostrará la cuenta regresiva.
- false Muestra la cuenta regresiva a partir del valor de GRUB_HIDDEN_TIMEOUT.
Así que para, por ejemplo, ocultar el grub basta con darle a GRUB_HIDDEN_TIMEOUT el valor de 0.
Por otro lado, para cambiar la entrada que cargará por default hay que cambiar el valor de GRUB_DEFAULT, para lo que hay tres opciones:
- Asignar el número de la entrada correspondiente (comenzando a contar desde cero)
- Asignar el contenido de la etiqueta menuentry correspondiente en el archivo grub.cfg, por ejemplo:
- También puede tomar el valor saved con lo que utilizará la entrada utilizada en el anterior arranque.
GRUB_DEFAULT=0GRUB_DEFAULT="Windows XP Professional (on /dev/sda1)"GRUB_DEFAULT=savedPara finalizar haremos un
# update-grub3.2. Imagen de fondo y colores de texto
Primero, escogemos cualquier imagen y la convertimos a .png con un editor de imágenes, Gimp por ejemplo, luego la escalamos a la resolución que hemos definido en el archivo /etc/default/grub en la opción GRUB_GFXMODE que por default es 640x480. Una vez convertida la imagen la movemos al directorio que querramos, /usr/share/images/desktop-base/ (directorio que habría que crear) ó el mismo /etc/grub.d/ por ejemplo.
El script 05_debian_theme es el que se ocupa del tema de configuración, el que nos interesa. Al principio del archivo veremos las siguientes lineas:
# this allows desktop-base to override our settings
f=/usr/share/desktop-base/grub_background.sh
if test -e ${f} ; then
source ${f}
else
# A partir de aquí están las líneas que nos interesa editar
WALLPAPER="/usr/share/images/desktop-base/moreblue-orbit-grub.png"
COLOR_NORMAL="black/black"
COLOR_HIGHLIGHT="magenta/black"
fiSólo basta editar la línea: WALLPAPER con la ruta a la imagen que hemos editado.
La configuración predeterminada de todo el texto del Grub2, para el caso de un grub2 con imagen de fondo, es en un color negro, mientras que para el texto seleccionado el color es en un color magenta. Si usted desea utilizar otros colores, ya sea por gusto o para poder distinguir el texto del grub2 sobre la imagen de fondo, bastará con editar las líneas: COLOR_NORMAL y COLOR_HIGHLIGHT, por ejemplo, para conseguir un texto color verde y un texto seleccionado de color rojo sería así:
COLOR_NORMAL="green/black"
COLOR_HIGHLIGHT="red/black"El color después de la diagonal es para el fondo, el negro funciona en este caso como transparencia, así que para, por ejemplo, un color de texto rojo y un texto seleccionado negro con resaltado amarillo:
COLOR_NORMAL="red/black"
COLOR_HIGHLIGHT="black/yellow"La misma configuración que podemos ver en la siguiente imagen:

Como ya mencionamos, para el caso del color de fondo del texto, el negro (black), sirve como transparencia, además de este únicamente se pueden utilizar los siguientes colores:
- rojo: red
- verde: green
- azul: blue
- amarillo: yellow
- cian: cyan
- magenta: magenta
- blanco: white
Una vez hechos los cambios deseados debemos ejecutar:
# update-grubpara que se genere nuevamente el /boot/grub/grub.cfg y así lograr que los cambios sean permanentes.
3.3. Tipo y tamaño de fuentes
Es posible cambiar el tipo y tamaño de fuente predeterminado con el siguiente procedimiento:
1° Elegir el tipo y tamaño de fuente a usar. En el ejemplo DejaVuSansMono
2° Convertir la fuente a formato grub2
# grub-mkfont --output=/boot/grub/DejaVuSansMono.pf2 --size=18 /usr/share/fonts/truetype/DejaVuSansMono.ttf3° Editar el archivo de opciones de grub2
# nano /etc/default/grubAgregar una nueva variable con la ruta hacia la fuente
GRUB_FONT=/boot/grub/DejaVuSansMono.pf2Finalmente bastará con actualizar los cambios:
# update-grub4. Reinstalación
En el caso de instalar o reinstalar un sistema operativo distinto a Debian (por ejemplo, Windows), el MBR (Master Boot Record) es reescrito por el del último sistema instalado, borrándose el GRUB2. Estos son los pasos que debemos seguir para recuperarlo.
Debemos utilizar una distribución en modo LiveCD para instalar nuevamente el GRUB, para lo cual usaremos un LiveCD de una distribución que use GRUB2 como gestor de arranque.
Lo primero que debemos hacer es arrancar el live-cd y abrir una terminal. Despues escribimos lo siguiente para ver las particiones de los distintos discos duros:
# fdisk -lDespues vemos cual es la partición en donde tenemos Debian y la montamos en /mnt (en la mayoría de los casos esta partición será sda1, el ejemplo lo haré con esa partición pero mira cual es tu partición con el comando fdisk):
# mount /dev/sda1 /mntSólo si tienes la partición /boot de forma independiente a la raiz, después de montar el sistema de archivos en /mnt, debes montar también la partición boot con el siguiente comando:
# mount /dev/sda2 /mnt/bootA continuación montamos el resto de los dispositivos:
# mount --bind /dev /mnt/devY ejecutamos el comando chroot de forma que accedemos como root al sistema de archivos de nuestro Debian:
# chroot /mntPor último cargamos el GRUB2 en el MBR ejecutando el siguiente comando:
# grub-install --recheck /dev/sda(sda lo debemos substituir por el disco duro que utilizamos para arrancar los sistemas operativos, casi siempre es sda. Ojo!! no poner el número de partición, solo sda)
Reiniciamos y cuando vuelva a arrancar Debian, podremos ajustar el menú del grub de forma manual, para que nos aparezca en el menú de arranque el sistema operativo que nos borró el MBR, o bien dejar que lo haga él automáticamente con el siguiente comando:
# update-grub5. Referencias
http://www.nongnu.org/pupa/
http://es.wikipedia.org/wiki/GNU_GRUB#Desarrollo
http://meneame.net/story/grub-2-nueva-version-gestor-arranque
http://www.muylinux.com/2009/01/05/nuevo-grub-a-la-vista/
http://www.guia-ubuntu.org/index.php?title=Recuperar_GRUB#Grub_2
http://wiki.archlinux.org/index.php/GRUB2#Hidden_menu
https://help.ubuntu.com/community/Grub2