splashy - Arranque gráfico
Necesitamos un kernel 2.6.X con soporte framebuffer y el driver vesafb compilados dentro del kernel, a ser posible. Si tu tarjeta no es compatible VESA, usa el driver framebuffer adecuado a tu tarjeta en vez del vesafb. Splashy suele distribuirse compilado estáticamente, así que en principio sólo necesitamos tener glibc. Suponiendo que vayamos a compilar o así, splashy usa las librerías: directfb 0.9.22, glib2, libmagic, libjpeg y/o libpng. Esta última es opcional, y para compilar necesitaremos los paquetes -dev correspondientes a estas librerías (un suponer). El kernel de GISA (a partir de 2.6.17.6) tiene activado el soporte framebuffer y vesafb dentro del kernel, tal como se recomienda.
Necesitamos los paquetes splashy y splashy-themes, que están en Alliot (experimental) Podemos usarlos en sarge añadiendo esta línea a /etc/apt/sources.list:
deb http://splashy.alioth.debian.org/debian stable main
y esta otra es la línea para etch/sid
deb http://splashy.alioth.debian.org/debian unstable main
y acto seguido actualizamos la lista de paquetes e instalamos con los habituales:
aptitude update
aptitude install splashy splashy-themes
Acto seguido hay que ocuparse de los bugs: si un script de arranque llama a una función unicode_*, mientras splashy está trabajando, el arranque puede bloquearse. Esto ocurre sólo cuando hemos cargado splashy en el initramfs, ya que en ese caso splashy está ejecutándose cuando se hacen las llamada a unicode_*. El objetivo de meter splashy en el initramfs es precisamente lograr que se ejecute desde el principio del arranque. Si no lo metemos en el initramfs, veremos aún unos pocos mensajes del kernel durante el arranque. Eso se puede minimizar usando la opción "quiet", pero de todas maneras el efecto logrado es mejor si se carga splashy en el initramfs.
Los scripts afectados son típicamente /etc/init.d/keymap.sh y /etc/init.d/console-screen.sh, pero para asegurarnos, hacemos:
cd /etc/init.d/
grep -i unicode_ /etc/init.d/* -m1 | cut -f1 -d:
Lo cual nos dará una lista de los módulos de arranque que llaman a una función unicode_*. En la lista saldrá tambien splashy-init, pero de este no hay que preocuparse. Recuerda, sólo es necesario hacer todas estas modificaciones si vamos a cargar splashy en el initramfs. Si no es así, puedes pasar directamente a ocuparte del menú de grub (ver más abajo).
Editamos keymap.sh
vi /etc/init.d/keymap.sh
y buscamos la línea:
unicode_start_stop() {
y añadimos la línea que nos interesa, tal que así
unicode_start_stop() {
pidof splashy > /dev/null && return
Guardamos los cambios y vamos a por console-screen.sh. Este archivo no usa start|stop, por tanto basta con añadir nuestra al principio del script:
#!/bin/sh
pidof splashy > /dev/null && exit 0
# esto es lo que añadimos.
Con estas líneas impedimos que los scripts de arranque en cuestion se ejecuten mientras splashy está trabajando. Pero claro, esto haría que nuestra consola y mapa de teclado sean incorrectos. La solución es modificar la configuración de splashy para que los ejecute cuando ya no estorben. Además, en ese mismo archivo (/etc/default/splashy) ajustamos la opción que mete a splashy en el initramfs, con lo que aparece ya desde el inicio del arranque.
vi /etc/default/splashy
Buscamos la línea
ENABLE_INITRAMFS=0
y la ponemos como
ENABLE_INITRAMFS=1
y además añadimos esta otra línea:
POST_EXEC_SERVICES="keymap.sh console-screen.sh"
Para mostrar la barra de progreso, splashy utiliza un fifo. El que viene indicado por defecto nos vale si no usamos splashy en el initramfs (o si no usamos initramfs ;)), pero como nosotros sí lo queremos, hemos de editar otro archivo: /etc/splashy/config.xml
vi /etc/splashy/config.xml
Buscamos la línea <fifo>
y la dejamos tal que así:
<fifo>/dev/.initramfs/splashy.fifo</fifo>
Ahora ya podemos meter splashy en el initramfs, debemos hacer esto cada vez que cambiemos la configuración:
update-initramfs -u -t -k `uname -r`
Ahora hay que editar el menú de grub
vi /boot/grub/menu.lst
Buscamos la línea #kopt y añadimos vga=0x317
# kopt=root=/dev/sda6 ro vga=0x317
Y en la linea # defoptions= añadimos vga=791 quiet
# defoptions=vga=791 quiet
Guardamos los cambios y acto seguido actualizamos grub
update-grub
Para ver los temas que tenemos instalados, usamos
splashy_config --info
Ajustamos el tema que queremos usar con:
splashy_config -s <nombre_tema>
Podemos descargar temas nuevos e instalarlos con:
splashy_config -i <theme>
Para crear nuestro propio tema, ejecutamos
splashy_config -c
y respondemos a las preguntas que se nos hagan.
Reiniciamos y ya deberíamos tener arranque gráfico.