Archive for December 11th, 2007

Recompilando el kernel (Ubuntu Gutsy)

Tuesday, December 11th, 2007

A pesar de lo que mucha gente cree, recompilar el kernel hoy en día no es excesivamente complicado. Además de esto en ciertas ocasiones puede ser necesario, por ejemplo, para poder instalar un módulo que necesitamos y que no viene incluido en el kernel (véase artículo relacionado).

Bueno, comenzamos, como siempre, instalando todos los paquetes necesarios para la compilación del kernel.

sudo apt-get install linux-kernel-devel linux-source build-essential pkg-config ncurses-dev qt3-apps-dev qt3-assistant qt3-designer qt3-dev-tools qt3-doc qt3-qtconfig

acto seguido descomprimimos el kernel en el directorio /usr/src

cd /usr/src
sudo tar xjf linux-source-2.6.22.tar.bz2

Y ahora tenemos que configurarlo (esto lo vamos a hacer de una forma realmente sencilla) : tecleamos

cd linux-source-2.6.22
make xconfig

y nos aparecerá un menú parecido a:

qconf

Abrimos (File>load) el fichero de configuración que se encuentra en /boot/config-2.6.22-14-generic y acto seguido lo guardamos como “.config

a continuación ejecutamos en este orden.

sudo su
make ; make modules ; make modules_install ; exit

estos tres pasos suelen tomarse bastante tiempo aunque no necesitan ninguna atención, a no ser que algo haya ido mal.

Una vez terminado, copiamos el kernel recien compilado al directorio /boot

sudo cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.22

creamos su correspondiente fichero initrd

sudo mkdir /lib/firmware/2.6.22.9
sudo mkinitramfs -o /boot/initrd.img-2.6.22 2.6.22.9

Y por último sólo nos queda añadir en el fichero de configuración del grub el nuevo kernel.

sudo gedit /boot/grub/menu.lst

Nos vamos a la linea donde aparece por primera vez

title Ubuntu 7.10, kernel 2.6.22-14-generic
root (hd0,?)
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=???????-????-????-????-?????????????? ro quiet splash
initrd /boot/initrd.img-2.6.22-14-generic
quiet

y añadimos justo antes:

title Ubuntu 7.10, kernel 2.6.22
root (hd0,?)
kernel /boot/vmlinuz-2.6.22 root=UUID=???????-????-????-????-?????????????? ro quiet splash
initrd /boot/initrd.img-2.6.22
quiet

(Notar que los caracteres marcados como ? son diferentes dependiendo de la instalación de cada uno, así que hay que copiar y pegarlo sin modificarlos)

Una vez finalizado todo esto ya podemos reiniciar el ordenador con el kernel nuevo. Recordar que ahora probablemente necesitemos recompilar para el nuevo kernel todos los módulos que teníamos antes.