domingo, 29 de abril de 2012

Grub 2: Personaliza el menú de arranque

Grub 2: Personaliza el menú de arranque de tu equipo con Molinux

Tabla de contenidos

[ocultar]

¿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.

Imagen:Grub1.png

- 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.

Imagen:Grub2.png

- 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):
  1. macosx)
  2. OSXUUID="`grub-probe --target=fs_uuid --device ${DEVICE} 2> /dev/null`"
  3. cat << EOF
. . .
  1. xnu_splash /Extra/splash.tga
  2. fi
  3. fi
  4. }
  5. 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


========================================================================




No hay comentarios: