viernes, 25 de marzo de 2011

Instalar Plymouth como arranque gráfico en Arch Linux

Arch Linux
Los que usamos Arch Linux estamos acostumbrados a ver mientras se inicia nuestro sistema una serie de mensajes con los servicios que se van iniciando. Si queremos darle un toque más atractivo al inicio de nuestro sistema hay varias opciones, principalmente Usplash que utilizaba ubuntu hasta hace poco y desde hace un tiempo Plymouth, desarrollado por RedHat como reemplazo de su RHGB (Red Hat Graphical Boot). Plymouth proporciona una animación gráfica atractiva mientras se inicia el sistema y sin parpadeos producidos por cambios de resolución de la pantalla lo que tambien contribuye a iniciar el sistema más rápido. Para hacer uso de Plymouth se necesita Kernel Mode Setting (que es lo que evita los parpadedos, cambios de resolución de la pantalla, entre otras cosas) siendo el kernel en que ajusta la resolución de la pantalla al inicio del sistema. A día de hoy no todos los controladores gráficos soportan KMS (principalmente los privativos de nvidia) pero Plymouth también puede ser usado con el framebuffer.

Mensajes de inicio en Arch Linux

La instalación y configuración de Plymouth no es complicada pero se hace «a la manera Arch». Todo esto lo he probado dentro de una máquina virtual en VirtuaBox pero debería funcionar perfectamente en un máquina real. Antes de empezar deberemos tener instalado yaourt para poder instalar paquetes del repositorio AUR de Arch Linux, consulta la Wiki Arch si es necesario.

Primeramente instalaremos el paquete de plymouth con:

$ yaourt -S plymouth-git

El siguiente paso será añadir plymouth a los HOOKS que se ejecutan cuando se construye la imagen del kernel.

# nano /etc/mkinitcpio.conf

HOOKS="base udev autodetect plymouth ..."

Ahora que tenemos en los hooks del kernel plymouth haremos una reconstrucción del mismo con:

# mkinitcpio -p kernel26

Si alguna vez nos cansamos de plymouth bastará con eliminar el HOOK añadido, volver a hacer un mkinitcpio y eliminar el paquete plymouth-git. Ahora deberemos modificar unos parámetros de grub:

/* Para Grub2 */
# nano /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=" splash"

Y regeneramos el archivo de grub:

# grub-mkconfig -o /boot/grub/grub.cfg

Hacemos que una vez arrancado el sistema plymouth se deje de ejecutar:

# nano /etc/rc.local

/bin/plymouth quit --retain-splash

Cuando instalamos el paquete de plymouth podemos elegir entre varios temas (fade-in, glow, solar, spinfinity, script, text) y podemos cambiar de uno a otro en cualquier momento. Cada vez que queramos cambiar de tema tendremos que ejecutar:

/* para listar los temas disponibles */
# plymouth-set-default-theme -l 
# plymouth-set-default-theme solar
# mkinitcpio -p kernel26

También podemos probar el tema sin tener que reiniciar el sistema:

# plymouthd
# plymouth --show-splash

Para detener la previsualización debemos cambiar de terminal tty (ALT+F2, inicar sesión si es necesario) y ejecutar:

# plymouth --quit

Si hay alguna vez que queremos ver los mensajes de inicio de Arch Linux en vez de la animación de Plymouth solo debemos pulsar la tecla Escape o si queremos ver los mensajes más tarde los tenemos en el archivo /var/log/boot.log. Y si de los temas por defecto no nos gusta ninguno podemos desarrollar uno nuevo para lo nos servirá de mucha ayuda la siguiente docmentación de como crearlos. Pero no hace falta que desarrollemos uno desde cero lo más aconsejable es partir de uno ya hecho, los temas por defecto se encuentran en /usr/share/plymouth/themes deberemos copiar uno, cambiarle de nombre, modificar las imágenes y tal vez hacer un script que controle la animación.

Las siguientes imágenes son de los temas que he podido probar correctamente, el tema text me ha dado el error "unexpedtedly disconectend from boot status daemon" y no he podido probarlo.

Plymouth tema fade-inPlymouth tema script

Plymouth tema solarPlymouth tema spinfinity

¿Alguien se anima a hacer un theme bonito para plymouth?

Referencia:
https://wiki.archlinux.org/index.php/Plymouth
http://es.wikipedia.org/wiki/Plymouth_(software)
http://en.wikipedia.org/wiki/Mode-setting
http://es.wikipedia.org/wiki/Framebuffer
https://wiki.archlinux.org/index.php/Yaourt
https://wiki.ubuntu.com/Artwork/Documentation/Plymouth
http://www.freedesktop.org/wiki/Software/Plymouth/Scripts