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 supportLogo 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