Grub 2: Personaliza el menú de arranque de tu equipo con Molinux
¿Qué es GRUB 2?
GRUB 2 es el cargador de arranque por defecto en Ubuntu desde la
versión 9.10 (karmic Koala). Cuando el ordenador arranca, nos muestra un
menú dando a elegir al usuario que sistema operativo quiere arrancar de
los instalados en la máquina. GRUB 2 ha sido totalmente reescrito desde
su anterior versión y es software libre.
En esta guía esta realizada con la versión 1.98. Para poder
averiguar que versión tenemos instalada podemos poner el siguiente
comando en la consola.
user@comp-user:~$ grub-install -v
Estructura de Archivos
GRUB 2 incorpora un directorio totalmente revisado y una jerarquía de archivos. El fichero menu.lst ya no existe.
Los cambios de configuración mas comunes se hacen sobre le
fichero “/etc/default/grub” y los ficheros localizados en “/etc/grub.d”
que son scripts que acaban formando el fichero “/boot/grub/grub.cfg”, el
cual no debería ser editado por el usuario. A continuación vamos a ver
los principales directorios y archivos usados por GRUB 2.
i. /boot/grub/grub.cfg
Este fichero es el mas parecido a menu.lst de la versión
anterior. Contiene información del menú, pero a diferencia de la versión
antigua este archivo no esta destinado a ser editado manualmente ya que
se forma a partir de una serie de scripts como dijimos anteriormente.
Cada sección empieza con “##BEGIN” y referencia a los diferentes scripts situados en “/etc/grub.d”.
Este fichero es actualizado cada vez que ejecutamos la orden
“update-grub”, también con la instalación o desinstalación de Kernels es
nuevamente generado.
En las primeras versiones este fichero era de solo lectura.
ii. /etc/default/grub
Este archivo de configuración contiene información que veremos en las siguientes secciones.
Puede ser editado por el usuario con permisos de administrador,
los cambios producidos serán añadidos al fichero “grub.cfg” cuando se
actualice.
iii. /etc/grub.d (directory)
Los archivos (scripts) de este directorio son leídos durante la
ejecución de “update-grub” o actualizaciones del kernel y el resultado
de sus instrucciones son incorporadas a “grub.cfg”. Cada archivo tiene
su sección dentro de “grub.cfg”
La colocación de los elementos en “grub.cfg” es determinada por
el orden en el cual se ejecutan los ficheros en este directorio. Los
archivos que empiezan con un número se ejecutan primero, empezando por
el más bajo y después, si los archivos con nombres alfabéticos existen
se ejecutan.
Las entradas personalizadas del menú pueden ser añadidas en el fichero
“40_custom”, o en uno creado nuevamente por el usuario.
Los ficheros existentes por defecto en este directorio son:
- 00_header → Podemos configurar acciones como el timeout, la
selección por defecto. Estas configuraciones son importadas del fichero
/etc/default/grub, con lo cual deberemos de ir a este ultimo fichero y
no deberíamos de tocar 00_header para estos fines.
Como vamos a ver en el siguiente apartado, esta opción no es necesario modificarla aquí, sino en el fichero /etc/default/grub.
- 05_debian_theme → En este archivo podemos configurar la imagen de
fondo de nuestro GRUB 2, colores del texto, la línea de selección y los
temas.
- 10_linux → Identifica los Kernels usados por el sistema operativo y crea las entradas para el menú.
- 30_os-prober → Este script es usado para la búsqueda e introducción de sistemas operativos en el menú.
El archivo esta dividido en cuatro secciones, representando los
diferentes tipos de sistemas operativos, Windows, Linux, OSX y Hurd.
Las variables de este archivo determina el formato del nombre en “/boot/grub/grub.cfg” y en el menú GRUB 2.
- 40_custom → Una plantilla para añadir entradas de menú
personalizadas, las cuales serán añadidas con la actualización del
fichero “grub.cfg”.
Configurando GRUB 2
Los cambios en la configuración son normalmente hechos en
“/etc/default/grub” y en los archivos de configuración personalizados
localizados dentro de /etc/grub.d. Cualquier cambio hecho directamente
en “/boot/grub/grub.cfg” será sobrescrito cuando ejecutemos la orden
“update-grub” y perderemos los cambios realizados, este es uno de los
motivos por el que no debemos editar este archivo.
Después de haber editado /etc/default/grub o los scripts
contenidos en /etc/grub.d, debemos de ejecutar “update-grub” para
incorporar los cambios a “grub.cfg”.
Algunos de los cambios mas comunes, como el SO que debería de
arrancar por defecto, o el timeout, pueden ser editados con una
aplicación con interfaz gráfica, estos programas son Grub Customizer o
StartUp-Manager.
/etc/default/grub (file)
Archivo de configuración principal para cambiar las
configuraciones por defecto. Las siguientes lineas están disponibles
para que el usuario, las modifique.
- GRUB_DEFAULT. Indica la entrada seleccionada por defecto, es
decir si arrancamos y no tocamos nada, tras pasar uno segundos GRUB 2
arrancará este SO.
GRUB_DEFAULT=0. Con el número nos referimos a las entradas según son mostradas en el menú del grub al arrancar. La primera entrada se corresponde con el número 0, el número 1 con la segunda entrada y así sucesivamente.
- GRUB_SAVEDEFAULT= true/false. Si es true guardará el ultimo SO
arrancado, para que en la siguiente vez que arranquemos nos mantenga
este por defecto.
- GRUB_HIDDEN_TIMEOUT = x. Su valor determina cuanto tiempo se
mostrará una pantalla sin el GRUB 2, mientras la pantalla este en blanco
el usuario podrá pulsar cualquier tecla para mostrarlo.
El comportamiento por defecto es ocultar el grub si solo hay un
SO instalado y arrancarlo directamente. Si los usuario con un sistema
operativo desean ver el menu del grub solo deben comentar esta linea.
Para comentar una linea debemos poner delante de la misma el símbolo #.
GRUB_HIDDEN_TIMEOUT = 0. Por defecto en ordenadores con un solo Sistema Operativo. El menú no es mostrado, el SO es arrancado inmediatamente. En este caso durante el arranque pulsando la tecla SHIFT podemos ver el menú.
GRUB_HIDDENTIMEOUT = x. El proceso de arranque es detenido durante x segundos. Tras pasar estos segundos si no pulsamos cualquier tecla no aparecerá el menú del GRUB arrancando el SO por defecto. En cambio si pulsamos cualquier tecla veremos nuestro menú del grub.
GRUB_HIDDEN_TIMEOUT = x. Si no tenemos ningún valor, el menú del grub será mostrado por un número de segundos igual al indicado en GRUB_TIMEOUT.
- GRUB_HIDDEN_TIMEOUT_QUIET = true/false. Con el valor false, si
tenemos activada la opción anterior, cuando se muestra la pantalla
blanca veremos un contador con los segundos restantes. En cambio con
true no veríamos ningún contador con los segundos restantes.
- GRUB_TIMEOUT= x. Una vez que el menú es mostrado este debe
mantenerse x segundos antes de arrancar el SO por defecto. En cuanto
tocamos una tecla desaparece el contador y debemos seleccionar que SO
arrancar. Si no queremos tener ninguna restricción de tiempo debemos
introducir un -1 en este campo.
- GRUB_CMDLINE_LINUX_DEFAULT = “quiet splash”. Para ver una pantalla
negra con los procesos de arranque debemos quitar “quiet splash”.
- GRUB_DISABLE_OS_PROBER= true/false. Habilita/Deshabilita la
comprobación ejecución del script os_prober para la detección de otros
Sistemas Operativos en otras particiones.
- GRUB_GFXMODE=640x480. Podemos descomentar esta linea para
hacerla activa y así poder elegir la resolución del grub. Un ejemplo es
1280x1024x32, donde el ultimo numero hace referencia a los bits de
colores.
Las resoluciones disponibles en el GRUB 2 pueden mostrarse
ejecutando el comando “vbeinfo” en la linea de comandos del GRUB 2, para
acceder a ella debemos pulsar la tecla “c” cuando la pantalla principal
del grub es mostrada. Si la resolución no esta disponible o la linea
esta comentada GRUB 2 usará la resolución por defecto.
Si usamos una imagen de fondo la resolución elegida y la de la imagen deben ser la misma para unos mejores resultados.
- GRUB_DISABLE_LINUX_RECOVERY = true/false. Esta linea viene
comentada si deseamos eliminar las entradas de recuperación de los menús
debemos quitar la #, es decir descomentarla.
- GRUB_BACKGROUND. Nos permite poner una imagen de fondo debemos indicarle la ruta completa.
3.1 Cambiar el nombre de las entradas de nuestro menú
Para cambiar de nombre nuestras entradas de los menús tenemos que
distinguir dos casos. El primero el de nuestra instalación Linux y
segundo el resto de sistemas operativos instalados en el resto de
particiones.
3.2 Cambiar el nombre de Molinux
Modificamos el archivo /etc/grub.d/10_linux:
user@comp-user:~$ sudo gedit /etc/grub.d/10_linux
Podemos, por ejemplo, hacer que el nombre de Ubuntu sea del tipo "Ubuntu, Karmic 2.6.31-15-generic", añadimos la línea:
codename="`lsb_release -cs`"
al final de:
linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
De esta forma añadimos una nueva variable con el nombre de la distro
al archivo, que podremos usar después en la siguiente Linea:
linux_entry “${OS}, Linux ${version}”
La línea anterior la podemos modificar a nuestro antojo, ahora mostramos algunos ejemplos:
linux_entry "${OS}, ${codename} ${version}" → de esta forma mostrará "Ubuntu, Karmic 2.6.31-15-generic"
linux_entry "${OS} ${codename}" → de esta forma mostrará "Ubuntu Karmic"
linux_entry "${OS} Texto que quieras" → de esta forma mostrará "Ubuntu Texto que quieras"
3.3 Cambiar el nombre de otros Sistemas Operativos
Para cambiar el nombre de otros sistemas operativos debemos de
dirigirnos al fichero “/etc/grub.d/30_os-prober”, que mencionamos
anteriormente. Este script detecta otros sistemas operativos en otras
particiones y los configura.
Vamos a ver un ejemplo con una partición Windows. Buscamos la sección del archivo que corresponda.
for OS in ${OSPROBED} ; do
DEVICE="`echo ${OS} | cut -d ':' -f 1`"
LONGNAME="`echo ${OS} | cut -d ':' -f 2 | tr '^' ' '`"
LABEL="`echo ${OS} | cut -d ':' -f 3 | tr '^' ' '`"
BOOT="`echo ${OS} | cut -d ':' -f 4`"
Y cambiamos:
if [ -z "${LONGNAME}" ] ; then
LONGNAME="${LABEL}"
fi
Por:
if [ "${LONGNAME}" = "Titulo literal que aparece en el menu grub" ] ; then
LONGNAME="Nuevo título que quieres"
elif [ -z "${LONGNAME}" ] ; then
LONGNAME="${LABEL}"
fi
Por ejemplo, si en el menú grub aparece "Windows 7 (loader) (on
/dev/sda1)" y queremos que diga "Seven (on /dev/sda1)", entonces
escribiremos:
if [ "${LONGNAME}" = "Windows 7 (loader)" ] ; then
LONGNAME="Seven"
elif [ -z "${LONGNAME}" ] ; then
LONGNAME="${LABEL}"
fi
Ver que "Título literal que aparece en el menu grub" no debe
incluir el texto que indica en que partición está instalado el sistema
operativo en referencia, en este caso (on/dev/sda1), esto se edita como se indica más adelante.
Guardamos el archivo y ejecutamos:
user@comp-user:~$ sudo update-grub2
Entradas de Menú Personalizadas
GRUB 2 permite a los usuarios crear selecciones de menú
personalizadas que automáticamente serán añadidas al menú de grub con la
ejecución de “sudo update-grub”. El archivo “/etc/grub.d/40_custom”,
nos sirve de ejemplo de como crear otros menús.
El nombre del archivo determina el orden en que serán añadidas
dentro de “grub.cfg” y por tanto el orden en el cual serán mostradas.
Los archivos que comienzan con números son ejecutados primero siguiendo
el orden de los mismos. Entonces las entradas que añadamos en este
fichero aparecerán la ultimas en el menú. Si queremos que las nuevas
entradas aparezcan arriba debemos crear un fichero “06_xxx” (en xxx
podemos poner el nombre que queramos) e introducir aquí las nuevas
entradas estas quedarán en la parte superior del menú, en este último
caso debemos darle permisos de ejecución a nuestro nuevo fichero:
user@comp-user:~$ sudo chmod +x /etc/grub.d/06_xxx
Los contenidos de este archivo son añadidos a grub.cfg con la ejecuciones de update-grub.
4.1 Reglas para la construcción de una entrada
Esta es la solución si el grub no detecta la partición o si la
detecta pero no la arranca correctamente. Es el equivalente a insertar
una entrada manualmente en el antiguo menu.lst. En este ejemplo
insertamos una partición de MacOS.
Abrimos el archivo /etc/grub.d/40_custom:
user@comp-user:~$ sudo gedit /etc/grub.d/40_custom
En la última línea del archivo pegamos las siguientes líneas (importante cambiar hd0,1 por la partición que corresponda):
menuentry "MacOS X (en hd0,1)" {
insmod hfsplus
set root=(hd0,1)
multiboot /boot}
Escribimos el comando:
user@comp-user:~$ sudo update-grub2
Si en el menú del grub aparecen 2 entradas para mac (la que
creamos nosotros y otra que aparece automáticamente) debemos abrir el
archivo 30_os-prober, ir a la sección mac y comentar las lineas
dedicadas a este sistema operativo (si no se ha modificado este archivo
las lineas son desde la 158 hasta la 207. ambas incluidas):
- macosx)
- OSXUUID="`grub-probe --target=fs_uuid --device ${DEVICE} 2> /dev/null`"
- cat << EOF
. . .
- xnu_splash /Extra/splash.tga
- fi
- fi
- }
- EOF
Eliminar kernels
Para eliminar un Kernel, podemos mover los archivos de ese kernel de
la carpeta /boot a una carpeta creada por nosotros. Primero creamos la
carpeta:
user@comp-user:~$ sudo mkdir /boot/kernels
A continuación movemos la imagen del Kernel (xx-xx hace referencia a la versión del kernel que tengamos instalada):
user@comp-user:~$ sudo mv /boot/vmlinuz-2.6.xx-xx-generic-pae /boot/kernels
También podemos mover la imagen que se utiliza para entrar en el modo recuperación:
user@comp-user:~$ sudo mv /boot/initrd.img-2.6.xx-xx-generic-pae /boot/kernels
Y el paso final como siempre que cambiamos algo relacionado con el grub es actualizarlo, para ello:
user@comp-user:~$ sudo update-grub2
Cambiar fondo
Cambiar la imagen de fondo del grub es bastante sencillo. Una vez que
tenemos la imagen que queremos, debemos seguir los siguientes pasos.
1. Si cambiamos la resolución en /etc/default/grub con la opción
que vimos en el apartado “configurando grub 2”, debemos abrir gimp y
darle la misma resolución.
2. Copiarla en /usr/share/images/grub
3. Este paso consiste en abrir el fichero /etc/grub.d/05_debian_theme. Para ello teclear en la consola:
user@comp-user:~$ sudo gedit /etc/grub.d/05_debian_theme
4. Ahora buscamos la linea que dice: WALLPAPER=”....” e
introducir la nueva ruta de la imagen que elegimos que estará en el
directorio /usr/share/images/grub.
5. Por ultimo actualizar el grub:
user@comp-user:~$ sudo update-grub2
========================================================================
Entrada copiada integramente del siguiente enlace:
.
http://comunidad.molinux.info/index.php/Grub_2:_Personaliza_el_men%C3%BA_de_arranque_de_tu_equipo_con_Molinux
========================================================================