Javier Barber
Senior Sysadmin Freelancer
RECOMPILACIÓN DEL NUCLEO
(Suponemos que xxxx es la version del nucleo, que podria ser por ejemplo 2.6.18 ó 2.6.18-4-686,…)
1.- Crear el .config que quedará en /usr/src/linux-xxxx/.config. Esto lo haremos con make xconfig (con kdesu en caso de debian ya que root por defecto no puede usar el display), make menuconfig o make config. También podemos usar una configuración que haya por defecto para empezar. En debian se localiza un link en /boot llamado config que apunta a un fichero tambien localizado en ese directorio que es la configuracion del nucleo (config-2.6.18-4-686 en el caso actual). Lo copiaríamos como .config al directorio /usr/src/linux-xxx/ si la quisieramos reutilizar. Importante la opción de tipo de procesador ya que uno erróneo provocaria un panic al arranque.
2.- make dep – Con este comando se preparan las dependencias necesarias para la compilación del nucleo. Se crea el fichero .depend que contiene las instrucciones para las herramientas de compilación. Se supone que tras este tendriamos que hacer un make clean para eliminar ficheros y objetos de anteriores versiones aunque yo nunca lo he hecho y no ha sucedido nada.
3.- make bzImage – Crea una imagen comprimida del kernel que se guardara en /usr/src/linux-xxxx/arch/i386/boot y se llama bzImage.
4.- make modules – Compilamos los modulos del kernel
5.- make modules_install – Instalamos los modulos en su lugar correspondiente, en /lib/modules. Se creará un directorio dentro con el numero de la versión del kernel que estemos compilando. (Hacer copia de seguridad si vamos a recompilar un kernel ya compilado antes).
Una vez seguidos estos pasos hay que hacer los siguiente en el directorio /boot:
1.- Copiamos la bzImage creada de /usr/src/linux-xxxx/arch/i386/boot/bzImage a /boot/vmlinuz-xxxxx
2.- Creamos una imagen initrd para el kernel recien compilado. En Debian se hace con: mkinitrd -o /boot/initrd.img-xxxxx xxxxxx (Por ejemplo para el caso actual es mkinitrd -o /boot/initrd.img-2.6.18 2.6.18). Es decir, mkinitrd -o fichero de salida version_del_kernel. En opensuse, sólo con ejecutar mkinitrd se creaban automaticamente las imagenes initrd que fuesen necesarias.
3.- Aunque no es totalmente necesario, debemos copiar el fichero system.map que se encontrará en /usr/src/linux-xxxx/ a /boot con la siguiente sintaxis: System.map-xxxx.
4.- También, aunque no es necesario, deberíamos tener la configuración del nucleo (/usr/src/linux-xxxx/.config) en el directorio /boot con la siguiente sintaxis: config-xxxx
5.- Por último, aunque no es obligatorio, es bueno crear un enlace simbólico para cada uno de los ficheros anteriores, exceptuando la imagen initrd, de la siguiente forma:
/boot/vmlinuz -> vmlinuz-xxxx
/boot/System.map -> System.map-xxxx
/boot/config -> config-xxxx
El último paso de la recompilación es configurar el grub para que arranque como queremos. En el caso de Debian no hay mas que modificar el fichero /boot/grub/menu.lst e incluir entradas como las siguientes pertenecientes al caso actual en su sitio correspondiente del fichero:
…….
title Debian GNU/Linux, kernel 2.6.18-4-686
root (hd0,1)
kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/sda2 ro
initrd /boot/initrd.img-2.6.18-4-686
savedefaulttitle Debian GNU/Linux, kernel 2.6.18-4-686 (single-user mode)
root (hd0,1)
kernel /boot/vmlinuz-2.6.18-4-686 root=/dev/sda2 ro single
initrd /boot/initrd.img-2.6.18-4-686
savedefaulttitle Debian GNU/Linux, kernel 2.6.18
root (hd0,1)
kernel /boot/vmlinuz-2.6.18 root=/dev/sda2 ro
initrd /boot/initrd.img-2.6.18
savedefaulttitle Debian GNU/Linux, kernel 2.6.17
root (hd0,1)
kernel /boot/vmlinuz-2.6.17 root=/dev/sda2 ro
initrd /boot/initrd.img-2.6.17
savedefault### END DEBIAN AUTOMAGIC KERNELS LIST
# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda1
title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1……….
Importante antes de iniciar cualquier compilación, hacer copia de los directorios /boot y /lib/modules !!!!!!