Introducción
Soy usuario de Debian desde hace varios meses y estoy muy satisfecho del rendimiento del equipo con kerneles normales de Debian, pero por culpa de mi tarjeta gráfica me he visto obligado a compilar el kernel para darle soporte. Aclarar que no lo he conseguido pero me he quedado muy cerca. Ya de paso y más curiosidad que otra cosa he metido el bootsplash algo que mi equipo ha agradecido porque ahora el arranque es digno de ver.
En este tutorial intentaré explicar de manera clara como compilar un kernel a «la Debian» previamente aplicando los parches que necesitamos para obtener un bonito arranque con bootsplash (arranque gráfico con barra de progreso).
Mi equipo es un Acer Aspire 1355LM, y mi sistema es Debian Sarge con los repositorios típicos de Debian Testing añadiendo otros para el xfce42, mplayer y un backport de java. Este es mi sources.list:
deb http://ftp.rediris.es/debian testing main contrib non-free
#xfce42
deb http://www.os-cillation.de/debian/ binary/
#mplayer
deb ftp://ftp.nerim.net/debian-marillat/ testing main
#via unichrome
deb http://www.physik.fu-berlin.de/~glaweh/debian/ unichrome/
#bootsplash
deb http://www.bootsplash.de/files/debian/ unstable main
#java backport
deb http://jrfonseca.dyndns.org/debian/ ./
Obtención de las fuentes y parches.
Vamos a compilar un kernel de Debian por lo que usaremos el código fuente de los kernel de Debian que ya traen algunos parches bastante interesantes como el de cramfs.
Necesitaremos las siguientes herramientas para compilar un kernel (apt-get install xxx para instalar cada una):
binutils 2.12
e2fsprogs 1.29
tune2fs
gcc (GNU C Compiler) 2.95.3
gcc –version
make (GNU make) 3.78
make –version
module-init-tools 0.9.10
depmod -V
procps 3.1.13
ps –version
util-linux 2.10o
fdformat –version
kernel-package
initrd-tools
libncurses-dev
*Tabla obtenida de: http://www.desktop-linux.net/debkernel.htm
# apt-get install
kernel-source-2.6.8
Con esto lo que hacemos es que se descargue el archivo kernel-source-2.6.8.tar.bz2 en /usr/src/. Debemos descomprimirlo con:
# tar -jxf kernel-source-2.6.8.tar.bz2
Con el comando anterior se crea el directorio: /usr/src/kernel-source-2.6.8/. A continuación crearemos el enlace simbólico /usr/src/linux que apunte al directorio recientemente creado:
# cd /usr/src/
# rm linux
# ln -s /usr/src/kernel-source-2.6.8 ./linux
Ahora es cuando debemos buscar los parches que necesitemos:
- bootsplash:
http://www.bootsplash.de/files/
(para nuestro kernel el
archivo será: bootsplash-3.1.4-sp3-2.6.8.1.diff) - Para mi portátil (Acer Aspire 1355LM) necesito el parche epia para la aceleración gráfica:
http://www.epiawiki.org/wiki/tiki-index.html - Si necesitamos más parches sólo debemos de descargarlos…
Una vez descargados todos los parches tendremos una serie de archivos .diff que guardaremos en el directorio /usr/src/, si los descargamos comprimidos hay que descomprimirlos con gunzip xxx.gz ó bunzip2 xxx.bz2
bootsplash-3.1.4-sp3-2.6.8.1.diff (86 Kb)
patch-2.6.8.1-epia1 (863 Kb)
Configuración del kernel.
Llegados a este punto tenemos que parchear las fuentes del kernel y configurarlo para que se adapte a nuestras necesidades.
# cd /usr/src/linux
# patch -p1
# patch -p1
Con esto ya tenemos nuestras fuentes con los parches aplicados y listas para configurarse. En este punto tenemos dos vías, la primera sería optimizar nuestro kernel al hardware de nuestro equipo, o bien basándonos en la configuración de algún equipo parecido o bien haciéndolo nosotros mismos a mano, y segunda opción hacer una imagen de un kernel de Debian con todo como módulos para que ese kernel funcione en cualquier equipo.
La primera opción nos dará como resultado un kernel muy potente y rápido (si lo hacemos bien) y tardará sobre unos 10 o 15 minutos (en mi equipo), la segunda opción nos dará un kernel de Debian parcheado que funcionará en cualquier equipo pero el tiempo de compilación puede llegar a más de una hora.
- Configuración
personalizada:
Para mi equipo (Acer Aspire 1355LM) he cogido la configuración del kernel de gorrister (Acer 1353XC) y la he modificado para añadir soporte para bootsplash y los drivers de la gráfica (VIA KM 400). El resultado es espectacular ya que funciona casi todo (infrarrojos no los he probado y la gráfica no acabo de conseguirlo) El soporte para AMD Mobile es perfecto, acpi y usb funcionan correctamente, pendrive usb, impresora usb, escaner paralelo, etc…
NOTA: Me he dado cuenta que con esta configuración no funcionan los netfilter por lo que
tampoco va iptables, te recomiendo que uses la otra configuración si vas a usar el cortafuegos.El archivo de configuración lo puedes descargar desde aquí: config-2.6.8-mario-241204-bootsplash
(33Kb), a continuación lo tienes que copiar al directorio de las fuentes:# cp config-2.6.8-mario-241204-bootsplash /usr/src/linux/.config
- Configuración universal. Esta forma es aplicable a cualquier equipo ya que nos basamos en la configuración del los kernel de Debian. Para ello copiamos la configuración del kernel actual (en la instalación de Sarge se puede instalar el kernel 2.6.8-1-386) cuya configuración está en el directorio /boot/. Con esta
configuración funciona correctamente todo (iptables incluido), la he optimizado para AMD K7, si tienes otra arquitectura antes de compilar cámbialo en Processor type… La puedes descargar desde aquí# cp /boot/config-2.6.8-2005-01-02 /usr/src/linux/.config
Empecemos con la configuración:
# make menuconfig
Con el menuconfig nos saldrá el configurador del kernel, lo primero que tenemos que hacer es en la penúltima opción indicar que cargue la configuración que por defecto será .config en el directorio de las fuentes.
Es muy importante una buena configuración para que todo funcione a la primera.
No voy a explicar todas las opciones ya que muchas estan comentadas y existen muchísimas guias para compilar kernel (con o sin Debian)
Como opinión personal prefiero que mi kernel no tenga la imagen de arranque initrd.img, pero en Debian esto se usa para precargar un sistema que monte el sistema de archivos y así poder tener por ejemplo ext3 como módulo. Más tarde veremos que el bootsplash la necesita.
Recomiendo que dentro del apartado de sistema de archivos el tipo de partición del equipo se use incluido en el kernel (*) y no módulo (M) para ext2 y ext3. Si se hace esto se debe incluir en el kernel también las opciones de dispositivos IDE o
SATA…
Para la primera opción (kernel personalizado) no es necesario modificar nada ya que a mi me funciona todo (menos la gráfica).
Para la opción de un kernel Debian modifica el tipo de procesador en el menú Processor type and features —> y selecciona tu modelo de procesador y familia.
En los portátiles simpre es recomendable ahorrar energía (batería) así que en el menú: Power management
options (ACPI, APM) —> selecciona ACPI e incluye los módulos de ac, battery, button, thermal, etc…
En CPU Frequency scaling es recomendable activar el escalado de frecuencia para que nuestro procesador trabaje a más velocidad cuando se necesite y a menos cuando no este en uso (menor temperatura y mayor
duracción de la batería).
En el menú:
Device Drivers–>
Block devices —>
hay que activar:
Loopback device support
RAM disk support
(4096) Default RAM disk size (kbytes)
[*] Initial RAM disk (initrd) support
[*] Support for Large Block Devices
En el menú:
Device Drivers–>
Input device support —>
[*] Provide legacy /dev/psaux device
(1024) Horizontal screen resolution
(768) Vertical screen resolution
[*] Enable /dev/psaux device by default
[*] Mice
PS/2 mouse
[*]
Misc
PC Speaker support
User level driver support
En el menú:
Device Drivers–>
Character devices —>
[*]
Legacy (BSD) PTY support
(256) Maximum number of legacy PTY in use
Parallel printer support
Intel/AMD/VIA HW Random Number Generator support
/dev/nvram support
Enhanced Real Time Clock Support
Generic /dev/rtc emulation
DirectFB CLE266 Support
/dev/agpgart (AGP Support)
VIA chipset support
[*] Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
Via unichrome video cards
En el menú:
Graphics support
—>
VGA 16-color graphics support
VESA VGA graphics support
VIA CLE266 support (EXPERIMENTAL)
Virtual Frame Buffer support (ONLY FOR
TESTING!)
Console display driver support–>
— VGA text console
[*] Video mode
selection support
Framebuffer Console
support
Bootsplash configuration —>
[*] Bootup splash screen
Dentro del apartado de sonido usaremos alsa con el driver PCI:
VIA 82C686A/B, 8233 South Bridge
Y en los usb activaremos el que esta marcado como VIA.
Creo que no es necesario que explique más configuraciones ya que se escapa del alcance de este pequeño tutorial.
A continuación le damos a salir y nos preguntará si queremos guardar los cambios en .config, le decimos que
sí.
Creación del paquete deb.
Usaremos la herramienta make-kpkg de Debian para crear un paquete deb con nuestro kernel, incluso con las fuentes parcheadas y las cabeceras. Añadiremos una versión a nuestro kernel para que sea personalizado y no use la configuración de otros kernel. Para el kernel genérico (2005-01-02) es necesario crear una imagen initrd.img.
# fakeroot make-kpkg –initrd -append-to-version .241204 binary
Este objetivo produce los cuatro paquetes del núcleo de Debian ejecutando los objetivos kernel_source, kernel_headers, kernel_doc y kernel_image. (extraido del man make-kpkg)
Si sólo queremos el kernel-image la órden es ésta:
# fakeroot make-kpkg –initrd -append-to-version.241204 kernel_image
Estamos añadiendo a la versión del kernel la coletilla «.241204», que es la fecha en la que YO compile mi kernel, es una buena idea poner la fecha ya que así sabremos cual es más nuevo si tenemos varios. Cámbiala por la fecha en la que hagas el paquete.
Despues de un rato, 15 minutos para un kernel personalizado y hasta más de una hora para uno a lo Debian tendremos en /usr/src/ nuestro kernel listo para ser instalado: kernel-image-2.6.8.241204_10.00.Custom_i386.deb
Durante la instalación modificará las entradas de grub o lilo, según el caso para añadir el nuevo kernel. Es aconsejable hacer una copia antes del archivo /boot/grub/menu.lst o /etc/lilo.conf por si acaso algo no sale bien.
# dpkg -i /usr/src/kernel-image-2.6.8.241204_10.00.Custom_i386.deb
Si no ha dado errores antes de reiniciar instalaremos el bootsplash.
Para la configuración genérica antes es mejor comprobar que nuestro kernel arranca con el initrd creado. Si no arrancase creamos la imagen a mano:
# cd /boot/
# mkinitrd -o /boot/initrd.img-2.6.8-2005-01-02 2.6.8-2005-01-02
Instalación del bootsplash.
Para ello editaremos /etc/apt/sources.list y añadiremos la siguiente línea:
deb http://www.bootsplash.de/files/debian/ unstable main
Después actualizamos e instalamos lo que necesitamos:
# apt-get update
# apt-get install bootsplash sysv-rc-bootsplash bootsplash-theme-tuxinfo-debian
Nos saldrá una advertencia sobre el parcheado de los archivos /etc/rc y /etc/rcS que son los que arrancan los servicios de Debian y que después de parchear son los que hacen avanzar a la barra de progreso.
Saldrá una ventana de configuración que es para crear la imagen initrd necesaria para el bootsplash. Hay que elegir none para que la imagen se cree sin basarse en ninguna. Para el kernel genérico hay que
seleccionar la imagen initrd.img-2.6.8-2005-01-02, para que bootsplash la aplique el parche. Ese archivo recien creado será /boot/initrd.splash, que tenemos que añadir al arranque de lilo o grub. Para grub
la entrada correcta para que funcione el bootsplash es:
title
Debian kernel 2.6.8 bootsplash
root
(hd0,4)
kernel
/boot/vmlinuz-2.6.8.241204 root=/dev/hda5 ro vga=791 splash=silent
initrd
/boot/initrd.splash
savedefault
boot
Donde tendrás que poner el número de disco duro y partición correcta para tu sistema:
(hd0,4)
root=/dev/hda5
Reiniciamos y deberíamos tener un bonito arranque gráfico, pulsando F2 veremos los mensajes del kernel
según arranca y si el equipo es como el mío debería funcionar todo.
Eso es todo. Si piensas que me he dejado algo en el tintero o hay algún error, hazmelo saber.
Enlaces útiles:
http://www.bootsplash.de/
http://www.bootsplash.org/
http://www.desktop-linux.net/bootsplash.htm
http://gorrister.no-ip.org/aspire-1353xc-howto.html
Licencia del documentoEste artículo es liberado bajo una licencia Creative Commons.
Fecha de Creación: 27 de diciembre de 2.004.
Última actualización: 3 de enero de 2005
Autor: MarioDebian (mario_er)
You crafted some first rate points truth be told there. I looked using the web for the case and noticed most those people will get along with with your internet-site.