29 enero 2008

Compilando tu propio Kernel serie 2.6

Compilar nuestro propio kernel nos puede traer bastantes ventajas, y no es necesario esperar a que aparezca una versión precompilada.

Procedo al mini-howto partiendo de la configuración de nuestro kernel previo, siempre podemos configurarlo a nuestro gusto y a nuestras necesidades pero no es el cometido de este manual.

Descargamos el codigo completo de la versión del kernel a compilar, en este caso 2.6.24, y lo descomprimimos.

wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.24.tar.bz2
tar xvf linux-2.6.24.tar.bz2


Pasamos nuestra la carpeta del codigo fuente del kernel a /usr/src

mv linux-2.6.24 /usr/src/linux-2.6.24

Vamos hasta el directorio y copiamos la configuración de nuestro kernel previo (2.6.23.8 en mi caso)

cd /usr/src
cp linux-2.6.23.8/.config /usr/src/linux-2.6.24
cd linux-2.6.24


Ahora podemos comprobar los modulos que se cargarán en el kernel, y marcar o desmarcar los que se nos antoje mediante make menuconfig o make xconfig.

y despues compilamos el código e instalamos los modulos

make && make modules && make modules_install

Copiamos la imagen del kernel a nuestro directorio /boot y preparamos una nueva entrada en el lilo.conf para arrancar con él.

cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.24

Añadimos al /etc/lilo.conf

image = /boot/vmlinuz-2.6.24
root = /dev/sda2 #La particion que corresponda
label = 2.6.24
read-only

Reescribimos el mbr

/sbin/lilo -v

Y al reiniciar tendremos disponible nuestra nueva entrada para cargar el nuevo kernel.

4 comentarios:

Rubiño dijo...

En este contexto el comando make equivale a hacer makebzimage (compilar el kernel) y make modules (compilar los módulos).
Saludos.

hba dijo...

Debe ser:
cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.24

Además falto copiar el System.map y el .config
cp System.map /boot/System.map-2.6.24
cp .config /boot/config-2.6.24

Saludos

Rubiño dijo...

No es necesario copiar el Systemap y el config. El primero contiene un conjunto de símbolos que representan diferentes direcciones de memoria; por ello, solo es útil cuando se desea interpretar el volcado del kernel. El segundo, es solo un fichero que puedes usar como base para compilar nuevos núcleos.
En cuando a donde se aloja el bzimage, solo decir que en los kernels que me toco compilar siempre hubo una copia en "..arch/i386..", pero es posible que esto haya cambiado desde la versión 2.6.24.
Saludos.

Anónimo dijo...

Reunificación de las fuentes de x86-32 y x86-64: Ya no hay arch/i386 y arch/x86_64, hay un solo directorio arch/x86 (aunque se conservan algunos enlaces simbólicos en los directorios antiguos, por compatibilidad).