2010-06-27

Modificar Cosas en el GRUB2

Con el nuevo Ubuntu 10.04 ya viene el grub2 y este es un poco diferente de manejar, dentro de mi NetBook tengo tres sistemas operativos por lo que es fundamental para mi cuadrar bien el grub, para evitar una lista eterna e inmanejable de ingresos a sistemas, para que el tiempo de selección sea óptimo y sobretodo por personalizarlo.

Lo primero que uno tiene que aprender sobre este paquete es que ya no se maneja en /boot/grub, sino en /etc/grub.d/ donde por defecto vemos los siguientes archivos

root@localhost:~# ll /etc/grub.d/
total 40
-rwxr-xr-x 1 root root 4444 2010-06-27 21:41 00_header*
-rwxr-xr-x 1 root root 1472 2010-06-27 21:37 05_debian_theme*
-rwxr-xr-x 1 root root 4594 2010-06-27 20:23 10_linux*
-rwxr-xr-x 1 root root  918 2010-03-23 04:37 20_memtest86+*
-rwxr-xr-x 1 root root 6605 2010-04-13 08:59 30_os-prober*
-rwxr-xr-x 1 root root  214 2010-04-13 08:59 40_custom*
-rw-r--r-- 1 root root  483 2010-04-13 08:59 README

Estos nos permiten manejar las diferentes funciones, básicamente lo que realizaron fue  seccionar el menu.lst en varios archivos donde cada uno maneja una característica así

00_header : Contiene las características para cargar datos como tiempo de espera, entrada por defecto de carga, tamaño del gráfico y seriales de arranque entre otros.

05_debian_theme : Se definen colores de uso y la imagen de fondo, el nombre del archivo puede variar según la distribución o que el manejador se cambie.

10_linux : Es el script que revisa las entradas que se pueden generar de la distribución instalada como principal, obviamente el toma como principal la debian.

20_memtest86+ : Permite cargar las entradas usadas para hacer pruebas a la memoria.

30_os-prober : Script que realiza un análisis al disco para poder incluir las entradas de los otros sistemas operativos  que se encuentren en el sistema.

40_custom : Sección que se deja para que el usuario pueda incluir las entradas que desee.

Básicamente usando estos script puedes modificar y adaptar las diferentes características que te permite el grub, realmente no lo dominio muy bien hasta ahora estoy aprendiendo a cuadrarle algunas cosas, pero lo principal para mi es eliminar los kernel viejos de ubuntu que tras probar los nuevos y todo este bien ya no los voy a usar y lo otro es modificar el fondo para personalizarlo.
Entonces lo primero es eliminar los kernel que ya no uso para esto mas que manejar alguno de los script es retirar lo que no quiero que se vea, entonces lo primero es auto remover el sistema 

root@localhost:~# apt-get autoremove

Una vez hecho eso entonces borro los archivos del kernel que están en /boot/ con el siguiente comado

root@localhost:~#rm -f  *-2.6.32-21-generic

Para este caso solo tenia que eliminar uno, pero así eliminas los kernels que ya no te sirven, esto no solo limpia tu maquina de archivos innecesarios sino que cuando se eliminas estos el script 10_linux ya no coloca las entradas que no usamos.
Ahora, para modificar la imagen de fondo hacemos una copia de la imagen que deseamos en el directorio /usr/share/images/desktop-base/ de la siguiente forma

root@localhost:~# cp /ubicacion/imagen.png /usr/share/images/desktop-base

La imagen que puedes cargar es de las extensiones png, jpg, jpeg y tga, una vez tengas la imagen en ese directorio debes editar el archivo /etc/grub.d/10_linux, y modificar las siguientes lineas

......
if test -e ${f} ; then
  source ${f}
else
  #WALLPAPER="/usr/share/images/desktop-base/moreblue-orbit-grub.png"
  WALLPAPER="/usr/share/images/desktop-base/villa.jpg"
  COLOR_NORMAL="black/black"
  COLOR_HIGHLIGHT="magenta/black"
fi
.....

Ya con los cambios hechos tienes que ejecutar el comando de actualización del grub, esto es por que aunque tu modificas todo en /etc realmente el archivo que permite el arranque pero que NUNCA debes modificar manualmente esta en /boot/grub/grub.cfg, entonces el comando que nos permite actualizar es

root@localhost:~# update-grub

El muestra algo parecido ha esta salida

Generating grub.cfg ...
Found background image: villa.jpg
Found linux image: /boot/vmlinuz-2.6.32-22-generic
Found initrd image: /boot/initrd.img-2.6.32-22-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Microsoft Windows XP Home Edition on /dev/sda1
Found Ubuntu 8.10 (8.10) on /dev/sda7
done

Y gráficamente se ve lo siguiente


Listo eso era lo que quería :D