Vamos a explicar cómo compilar un kernel para Debian:
- Lo primero que debemos hacer es instalar los paquetes necesarios para poder llevar a cabo nuestra
tarea. Si tenemos Debian instalado, esto es muy fácil, dado que Debian cuenta con una herramienta llamada apt-get, que permite bajar e instalar automáticamente cualquier paquete. Suponiendo que tenemos el fichero sources.list (que se encuentra en /etc/apt) correctamente configurado, hemos de actualizar la lista de paquetes disponibles (si no lo hemos hecho antes):
|| apt-get update ||
Ahora hemos de descargar los paquetes necesarios para realizar la compilación de nuestro kernel, paraello, haremos:
|| apt-get install kernel-package
apt-get install libqt3-mt-dev
||
- Una vez instalados los paquetes necesarios, hemos de bajar las fuentes del kernel que deseemos (es bastante recomendable bajarse el último kernel disponible, sobre todo si tenemos un hardware relativamente nuevo. Si tenemos una tarjeta gráfica ATI, y deseamos instalar los drivers de ATI, recomiendo descargar dichas fuentes con la herramienta apt-get, de la siguiente forma:
|| apt-get install kernel-source-2.6.10
||
(en vez de 2.6.10 podemos poner otra cualquiera, actualmente el 2.6.10 es la más moderna disponible)
esto nos dejará en el directorio /usr/src un archivo comprimido que descomprimiremos con la siguiente orden:
|| cd /usr/src
tar -jxvf kernel-source-2.6.10.tar.bz2
||
una vez descomprimido, tendremos un directorio llamado kernel-source-2.6.10 en /usr/src, y ahora
es aconsejable realizar un enlace simbólico a este directorio (si anteriormente ya tenemos otro
enlace simbólico hemos de borrarlo con la orden rm linux)
|| ln -sf /usr/src/kernel-source-2.6.10 linux
||
Llegados a este punto, conviene comentar que también podemos bajarnos las fuentes del kernel de
www.kernel.org (en este momento el último estable es el 2.6.11.2), para ellobajaremos el fichero linux-2.6.11.2.tar.bz y lo descomprimiremos exactamente igual que
antes:
|| tar -jvxf linux-2.6.11.2.tar.bz2 -C /usr/src
||
y ahora haremos el enlace simbólico igual que hicimos antes:
|| cd /usr/src
ln -sf /usr/src/linux-2.6.11.2 linux
||
NOTA IMPORTANTE: Para instalar los drivers de ATI es muy recomendable bajarse lasfuentes del kernel con el gestor de paquetes apt-get y no directamente desde
www.kernel.org
- Ahora viene la parte más pesada, configurar el kernel para nuestro hardware, lo que nos permitirá optimizar el kernel para dicho hardware. Para ello, suponiendo que ya estamos en el directorio /usr/src, haremos:
|| cd linux
||
entrando en el enlace simbólico linux anteriormente creado. Ahora hemos de copiar laconfiguración de nuestro actual kernel, que se suele encontrar en el directorio /boot, para ello haremos:
|| cp /boot/config* .config
||
(dónde pone un *, deberemos pulsar el tabulador para que se complete automáticamente el nombre)
Y ahora debemos adaptar la configuración de nuestro kernel actual a la del nuevo kernel,para ello ejecutaremos la orden:
|| make oldconfig
||
que nos irá preguntando acerca de las nuevas características del nuevo kernel que el anteriorno tenía, aquí si desconocemos lo que nos pregunta, podemos darle a enter y él mismo seencargará de poner la opción por defecto (yo le doy a enter en todas las opciones y loconfiguroluego en el menú gráfico).
Una vez realizado esto, se pasará a la configuración del kernel, para ello tendremos queejecutar la siguiente orden para que nos abra un menú gráfico:
|| make xconfig &
||
Aquí podremos seleccionar un montón de cosas, desde nuestro tipo de procesador, hasta los sistemas de ficheros que vamos a utilizar en nuestro sistema linux. Suele haber tres opciones para cada casilla: activado dentro del kernel (marca V), activado cómo módulo (marcado conun punto) o desmarcado. Las casillas correspondientes al chipset y sistema de ficheros esaconsejable no variarlas (si estan dentro del kernel no cambiarlas a módulos), ya que estopuede hacer que nuestro nuevo kernel no arranque. En caso de querer instalar posteriormentelos drivers de la tarjeta gráfica ATI, deberemos configurar ciertas cosas tal y como se indicaen el apéndice 1
Cuando finalicemos de configurar nuestro nuevo kernel (lleva su tiempo hacerlo bien), guardaremos la configuración y pasaremos a compilarlo. Para compilarlo existen varias opciones, pero nosotros vamos a crear un paquete .deb que nos permitirá volver a instalarloposteriormente en otro sistema Debian(ojo: el hardware ha de ser prácticamente igual) o volvera instalarlo en nuestro sistema cuando formateemos nuestro disco duro (lógicamente para ellohemos de salvarlo). Para compilarlo, ejecutaremos la siguiente orden:
|| make-kpkg append-to-version -XXXX --initrd kernel_image
||
(en donde pone XXXX podemos poner cualquier cosa que se nos ocurra, esto identificaráposteriormente a nuestro kernel)
Una vez hecho esto el sistema nos informará que es posible que nuestro nuevo kernel noarranque (si has sido cuidadoso esto no pasará), y nos preguntará si deseamos abortar el proceso, lógicamente responderemos N y el proceso continuará. El proceso de compilación lleva
bastante tiempo (10-15 minutos en un AMD64 3200+ y hasta 4 horas en un Intel Pentium II de333 Mhz)
- Una vez finalizado el proceso, el comando make-kpkg nos ha dejado un paquete .deb en el directorio /usr/src, ahora sólo quedará instalarlo, para ello:
|| cd /usr/src
dpkg -i kernel-image*
||
Si tenemos instalado grub como selector de arranque, el proceso ya estará finalizado, en caso de tener instalado lilo, tendremos que actualizar el fichero /etc/lilo.conf, añadiendo un nuevopárrafo para el nuevo kernel que acabamos de instalar. Hemos de añadir una entrada para elvmlinuz y para el initrd.img que acabamos de crear (se encuentran en el directorio /boot y los distinguiremos por lo que pusimos a continuación del append-to-version). Una vez hecho esto, deberemos actualizar la configuración de LILO, ejecutando la siguiente orden:
|| /sbin/lilo
||