viernes, 7 de mayo de 2010

Grub-pc (grub 2) nociones básicas en kubuntu 10.04

ACTUALIZADO:Sabado 8 de mayo 2010 0:20: Se han corregido algunos fallos en el fichero /etc/default/grub y en el método para arreglar el tema plymouth en kubuntu. Ahora si funciona.

Grub 2 o grub-pc o grub 1.98 es la versión nueva del cargador de arranque (bootloader) GNU\Linux k/ubuntu desde karmic. Vamos a ver unas nociones básicas de como funciona, ya que antes editábamos /boot/grub/menu.lst y listo, pero ahora no es así.

Lo primero es que los archivos de configuración que podemos modificar no están en /boot sino en /etc/grub.d/ o /etc/default/grub.

Las particiones, que antes se numeraban como (hd0,0) para la primera partición (0) del primer disco (hd0) ahora comienzan con 1, es decir, ahora sería (hd0,1) la primera partición del primer disco.

El fichero que carga la configuración de grub está en /boot/grub/grub.cfg. Se generan de forma automática mediante un script y no hay que modificarlo manualmente nunca, esto es importante.

En /etc/grub.d/ hay una serie de ficheros que se cargan por orden según el nombre que tengan, empezando por 00-nombre y en orden 01..., 10..., 30..., NN-nombre, nombre. Estos ficheros tienen configuraciones que solo serán incluidas en el fichero /boot/grub/grub.cfg si tienen permiso de ejecución. Si les quitamos el permiso de ejecución serán saltados al generar el fichero.

$ ls -lah /etc/grub.d/
total 56K
drwxr-xr-x   2 root root 4,0K 2010-05-07 13:32 .
drwxr-xr-x 148 root root  12K 2010-05-07 13:00 ..
-rwxr-xr-x   1 root root 4,4K 2010-05-07 11:32 00_header
-rwxr-xr-x   1 root root 1,4K 2010-04-13 15:40 05_debian_theme
-rwxr-xr-x   1 root root 4,5K 2010-04-13 15:59 10_linux
-rwxr-xr-x   1 root root  918 2010-03-23 10:37 20_memtest86+
-rwxr-xr-x   1 root root 6,5K 2010-04-13 15:59 30_os-prober
-rwxr-xr-x   1 root root  214 2010-04-13 15:59 40_custom
-rw-r--r--   1 root root  483 2010-04-13 15:59 README

Cuando hagamos cambios en los ficheros de configuración debemos ejecutar la orden siguiente para generar de nuevo el fichero grub.cfg actualizado. Los cambios serán cargados en el próximo reinicio.

$ sudo update-grub
Generating grub.cfg ...

/etc/default/grub

La mayoría de cosas que necesitarán tocarse alguna vez se encuentran en este fichero. Podemos cambiarlo a mano o con algunos comandos.

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.

# Indica la entrada de menu que se arrancará por defecto empezando
# por la cero. Si ponemos "saved" en vez de un numero, activamos
# los comandos para gestionar este apartado, pero no se podrá
# seleccionar el sistema desde el menu grub, solo usando comandos.
GRUB_DEFAULT=0

# Con esta opción a true, se cambia a entrada por defecto la última
# elección de entrada del menú que hicimos la última vez.
#GRUB_SAVEDEFAULT=true

# Muestra una pantalla en blanco (o imagen splash) en vez del menú
# grub durante el número de segundos que le pongamos. Durante este 
# tiempo podemos pulsar una tecla (Mayusculas) para ver el menú de 
# grub siempre que el tiempo sea mayor a 0sg. Si hay más de un 
# sistema operativo detectado, estos valores cambian dinámicamente
# debido a los scripts de /etc/grub.d/
GRUB_HIDDEN_TIMEOUT=0

# Si es true, oculta el contador cuando la pantalla esta en blanco o
# imagen splash
GRUB_HIDDEN_TIMEOUT_QUIET=true

# Indica que se iniciará el sistema de la entrada del menú por defecto
# sin esperar (0) o cuando pase el número de segundos que pongamos.
# si esta activo que se oculte el menú, solo funcionara si mostramos el
# menú. Si ponemos -1 esperará indefinidamente a que seleccionemos una
# opción del menú.
GRUB_TIMEOUT=10

# Muestra al distribuidor (i), de forma corta (s) en este caso Ubuntu
# o si no muestra Debian en las entradas de menu.
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

# Opciones que le pasamos a grub. Antes eran las opciones que le
# pasabamos a la linea "kernel" de menu.lst. La diferencia entre
# las dos es que default solo se aplica al kernel normal y sin
# default se aplican al kernel normal y al kernel en modo de 
# recuperación a la vez.
# quiet: no muestra texto en el arranque.
# splash: muestra la imagen splash, con o sin texto, dependiendo de quiet.

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
# Indica la resolución de la terminal gráfica y profundidad de color.
# Se pueden poner varios valores y se iran seleccionando de principio a fin
# hasta que uno sea correcto y pueda usarla la tarjeta gráfica.
# widescreen 16:10
#GRUB_GFXMODE=1440x900x24,1280x800x16,800x600x24,640x480x24,640x480
# screen 4:3
GRUB_GFXMODE=1280x1024x24,1280x1024x16,1024x768x24,800x600x24,640x480x24,640x480

# Se usa para el framebuffer.
GRUB_GFXPAYLOAD_LINUX=keep

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
# Se puede descomentar para que no se usen los UUID de los dispositivos.
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
# Se puede descomentar para deshabilitar la generación de entradas
# de modo recuperación de cada kernel en el menú.
#GRUB_DISABLE_LINUX_RECOVERY="true"

# Uncomment to get a beep at grub start
# Se puede descomentar para oir un sonido al iniciar grub. (accesibilidad)
#GRUB_INIT_TUNE="480 440 1"

Una vez que hemos guardado, ejecutamos

$ sudo update-grub

y los cambios se habrán guardado generando el fichero grub.cfg.

Añadir una entrada de menú propia

Podemos añadir una entrada en el menú de grub generando un fichero nuestro en /etc/grub.d/ y dándole permisos de ejecución. El mismo efecto si añadimos la entrada al fichero 40-custom, añadir la entrada sin tocar lo que hay. Voy a hacerlo creando un fichero.

$ sudo touch /etc/grub.d/50-misentradas && sudo chmod u+x /etc/grub.d/50-misentradas
$ ls /etc/grub.d/
00_header  05_debian_theme  10_linux  20_memtest86+  30_os-prober  40_custom  50-misentradas  README
$ sudo vim /etc/grub.d/50-misentradas

#!/bin/sh
exec tail -n +3 $0

# Las dos lineas anteriores siempre debemos ponerlas en un fichero que
# creemos nosotros

# Añadimos la entrada, la he copiado de /boot/grub/grub.cfg, para ver como es.

menuentry 'Ubuntu, con Linux 2.6.32-22-generic-pae' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod ext2
        set root='(hd0,1)'
        search --no-floppy --fs-uuid --set dcb6724a-d70b-4477-8adc-170e96e8205a
        linux   /boot/vmlinuz-2.6.32-22-generic-pae root=UUID=dcb6724a-d70b-4477-8adc-170e96e8205a ro   quiet splash
        initrd  /boot/initrd.img-2.6.32-22-generic-pae
}

  • menuentry equivale al antiguo Title.
  • set root equivale al antiguo root y hay que tener en cuenta que las particiones empiezan por 1 ahora.
  • linux equivale al antiguo kernel
  • initrd se queda igual.
No olvidarnos de actualizar grub con update-grub cuando acabemos de editar.

Herramienta gráfica

Por último, podemos usar la herramienta gráfica startupmanager para cambiar algunas opciones de forma más amigable.

$ sudo aptitude install startupmanager
$ sudo startupmanager

Problema del tema plymouth en kubuntu y los drivers gráficos propietarios

Hay un problema con la resolución en kubuntu y el tema que usa por defecto. Al instalarlo inicialmente no hay problema, se muestra todo bien debido a los drivers que lleva por defecto, pero al instalar los drivers de NVIDIA o ATI propietarios esto cambia. En la versión original final de Lucid se veia una imagen horrorosa, después se saco un parche, pero no se soluciona correctamente. Hay un procedimiento que parece que a algunos les funciona.

En /etc/default/grub ponemos las lineas GFX_MODE y GFX_PAYLOAD_LINUX que indicamos más arriba y guardamos.

Editamos /etc/grub.d/00_header y ponemos lo siguiente

if loadfont `make_system_path_relative_to_its_root ${GRUB_FONT_PATH}` ; then
set gfxmode=${GRUB_GFXMODE}

Las lineas ya deberían existir, en mi caso la segunda linea no estaba así, si no que ponía set gfxmode=1024x768, así que la he cambiado para que coja el parámetro correctamente. Si vosotros las tenéis igual que en el cuadro verde de código no las toquéis.

Ejecutamos el siguiente comando

echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash

Y, por último, actualizamos grub e initramfs para que cojan los cambios

$ sudo update-grub && sudo update-initramfs -u
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-22-generic-pae
Found initrd image: /boot/initrd.img-2.6.32-22-generic-pae
Found linux image: /boot/vmlinuz-2.6.32-21-generic-pae
Found initrd image: /boot/initrd.img-2.6.32-21-generic-pae
Found memtest86+ image: /boot/memtest86+.bin
done
update-initramfs: Generating /boot/initrd.img-2.6.32-22-generic-pae

y si tenéis suerte os mostrará el tema plymouth bien. Al parecer son los drivers propietarios los que dan este problema. En mi caso ha funcionado en el sobremesa pero en el portatil no. Ambos con nvidia.
Related Posts with Thumbnails