RECOMPILACIÓN DEL NUCLEO

mayo 19, 2007 a las 5:28 pm | Publicado en Linux | Deja un comentario

(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
savedefault

title           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
savedefault

title           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
savedefault

title           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 !!!!!!

Dejar un comentario »

RSS feed for comments on this post. TrackBack URI

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Crea un blog o un sitio web gratuitos con WordPress.com.
Entries y comentarios feeds.

A %d blogueros les gusta esto: