Arranque con logo personalizado

Este pequeño modd al kernel(en este caso para los de la rama 2.6.x) es para visualizar en el momento del arranque de GNU/Linux una imágen en la esquina superior izquierda de la pantalla al estilo del Knoppix(digo Knoppix porque, fue a la primera distribución que le vi ese detalle:D, y me habia quedado con las ganas de verlo en Debian por defecto, hasta ahora. Pero es obvio porque no lo traen las imágenes del kernel para mi distribución favorita, pues simplemente no aporta nada, es pura estética).

Primeros pasos:

Lo primero que hice fue escoger una imágen a utilizar, para esto me decidí por esta(la imágen debe tener una resolución máxima de 80×80 píxeles, y menos de 224 colores, además, la he convertido a formato png. Estas propiedades se pueden modificar con el Gimp).

Luego procedemos a convertir nuestro logo a formato ppm, pero para eso necesitamos del paquete netpbm, el cual nos provee un toolkit para manipulacion de este tipo de imágenes.

$ sudo apt-get install netpbm

y convertimos:

$ pngtopnm logo_debian.png | pnmtoplainpnm > logo_linux_clut224.ppm

Debo indicar que para este caso estoy trabajando con Debian Testing(Lenny), y aunque existen fuentes del kernel empaquetadas para esta distribucion relativamente muy nuevas(2.6.21), opté por bajarme la última versión del kernel estable disponible en el sitio oficial:

Obtención de las fuentes del kernel:

$ cd /usr/src

# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.22.1.tar.bz2

Desempaquetamos:

# tar -jxvf linux-2.6.22.1.tar.bz2

Configuración del kernel:

Y creamos un enlace símbolico:

# ln -sf linux-2.6.22.1 linux

Ahora, copiamos el fichero de configuración del kernel que utilizamos actualmente para utilizarlo como plantilla.

# cd /boot

# cp config-2.6.18-4-686 /usr/src/linux/.config

También copiamos la imágen que servirá como logo a /usr/src/linux/drivers/video/logo/.

$ cd /directorio/donde/tengo/el_nuevo_logo

# cp logo_linux_clut224.ppm /usr/src/linux/drivers/video/logo/

Antes de configurar el kernel deberemos de tener ciertos paquetes instalados para poder trabajar.

$ cd /usr/src/linux

Para configurarlo con menuconfig:

# apt-get install yaird build-essential g++ kernel-package libncurses5-dev

# make menuconfig

o

Para usar xconfig:

# apt-get install yaird build-essential g++ kernel-package libqt3-mt-dev

# make xconfig

y habilitamos las opciones:

Device Drivers ->
Graphics Support ->
[*] Support for frame buffer devices
[*] VESA VGA graphics support
VESA driver type ->

Console display driver support ->
[*] Video mode selection support
< *> Framebuffer Console support

Logo configuration->
[*]Bootup logo
[*] Standard 224-color Linux logo  

Compilación del kernel:

Y por fin, compilamos, y empaquetamos a la debian.

# make-kpkg clean

# make-kpkg –revision=radamanthys.0.1 kernel_image kernel_headers

Con el parametro kernel_headers, ademas de la imagen(kernel_image) obtenendremos un paquete con los archivos de cabecera.

Instalación del nuevo kernel:

Para finalmente instalar.

$ cd /usr/src

# dpkg -i linux-image-2.6.22.1-10.00_i386.deb

Seleccionando el paquete linux-image-2.6.22.1 previamente no seleccionado.

(Leyendo la base de datos …

98084 ficheros y directorios instalados actualmente.)

Desempaquetando linux-image-2.6.22.1 (de linux-image-2.6.22.1_radamanthys.0.1_i386.deb) …

Done.

Configurando linux-image-2.6.22.1 (radamanthys.0.1) …

Running depmod.

Running postinst hook script update-grub.

Searching for GRUB installation directory … found: /boot/grub

Testing for an existing GRUB menu.list file … found: /boot/grub/menu.lst

Searching for splash image … none found, skipping …

Found kernel: /boot/vmlinuz-2.6.22.1

Found kernel: /boot/vmlinuz-2.6.18-4-686

Updating /boot/grub/menu.lst … done

Ultimos detalles:

# mkinitrd.yaird -o /boot/initrd.img-2.6.22.1 2.6.22.1

# update-grub

Ahora, hay que asegurarse que, en el fichero de configuración de grub cambie la resolución de la pantalla. Esto es, agregando un modo que difiere tanto en la resolucion como en el nivel de profundidad de color.

Dejo una tabla de equivalencias, asi como sus correspondientes macros, que tambien pueden encontrar en la documentacion que viene con las fuentes del kernel:

| 640×480 800×600 1024×768 1280×1024
————+————————————–
256 ( 8 bit)| 769 771 773 775
32k (15 bit)| 784 787 790 793
65k (16 bit)| 785 788 791 794
16M (24 bit)| 786 789 792 795 

vim /usr/src/linux/Documentation/fb/vesafb.txt

| 640×480 800×600 1024×768 1280×1024
————+————————————–
256 ( 8 bit)| 0x301 0x303 0x305 0x307
32k (15 bit)| 0x310 0x313 0x316 0x319
64k (16 bit)| 0x311 0x314 0x317 0x31A
16M (24 bit)| 0x312 0x315 0x318 0x31B

En mi caso utilizo un nivel de profundidad de color de 16 bits, con una resolución de 1024×768.

$ sudo vim /boot/grub/menu.lst

title Debian GNU/Linux, kernel 2.6.22.1
root (hd0,0)
kernel /boot/vmlinuz-2.6.22.1 root=/dev/hda1 ro vga=0×317
initrd /boot/initrd.img-2.6.22.1
boot

Listos para reinciar con el nuevo kernel.

Mas Informacion: http://gentoo-wiki.com

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.