Compilando el kernel 3.0 de Linux
La nueva versión 3.0 del kernel salió hace 3 días (22/07/2011) y decidí compilarla e instalarla en mis notebooks y publicar aquí el resultado. Lo hice primero en un Ubuntu 11.04 y después en Arch Linux, pero el proceso es similar para cualquier distribución de Linux.
Nota: En Arch Linux también existe la posibilidad de compilar el kernel usando el sistema ABS + Pacman. Pero por ahora, solo comentaré el método tradicional.
¡ATENCIÓN! Esta es una versión nueva y con varios bugs; realicé la instalación solo con fines educativos. Recomiendo esperar unas semanas por el paquete que ofrecerá tu distribución, que te ahorrará algunas horas de compilación y posibles cuelgues.
Este tutorial también es útil para quien necesita modificar algún módulo o aplicar algún parche para activar nuevas características o soportar nuevo hardware. Las etapas son bastante simples y, si algo sale mal, probablemente podrás volver con el kernel anterior, pero de todos modos, actúa con cuidado y haz copias de seguridad de tus archivos importantes; no me responsabilizo por posibles problemas resultantes de la instalación del nuevo kernel.
Procedimientos:
Instala todas las herramientas de desarrollo utilizadas para la compilación
En Ubuntu:
$ sudo apt-get install gccEn Arch:
$ sudo pacman -S gccDescarga el paquete del kernel. Aquí usaré el disponible en http://www.kernel.org, pues aún es el único v3.0 disponible. En breve saldrán versiones personalizadas para otras distribuciones
$ wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.bz2Descomprime el paquete en alguna carpeta (usé
~/srcaquí)$ tar jxvf linux-3.0.tar.bz2 -C ~/srcEs recomendable (no obligatorio) copiar la configuración actual y solo modificar lo necesario.
cp /usr/src/linux-headers-2.6.38-8-generic-pae/.config ~/src/linux-3.0En el .config de Ubuntu vi que VARIOS ítems pueden removerse. Elimina TODOS los drivers de red, inalámbrico, vídeo y de otros dispositivos que no tengas o no vayas a necesitar. Esto reducirá bastante el tiempo de compilación y de carga del kernel.
Ve a la carpeta que acabas de extraer (
cd ~/src/linux-3.0) para iniciar la configuración.Tenemos las siguientes opciones de herramientas:
$ make config-> En modo texto puro. Contiene varias preguntas para responder.$ make menuconfig-> Interfaz ncurses$ make xconfig-> GUI en QT$ make gconfig-> GUI en GTK
Aquí usaré
menuconfig, por no necesitar X, pero para principiantes con QT, me gustó bastantexconfig, pues da un acceso más fácil a la ayuda.Ve navegando por los menús y eligiendo lo que deba modificarse.
Y-> Hace que el ítem sea embebido en el kernelM-> Hace que el ítem se compile como un módulo cargableN-> Desactiva el ítem?-> Ayuda relativa al ítem/-> Búsqueda-> La barra espaciadora alterna entre opcionesESC-> Sube un nivel o sale de la configuración
Guarda la configuración.
Empieza a compilar el kernel y ve a hacer otra cosa. Aquí tardó más de una hora.
$ make -j2En procesadores de dos núcleos es mejor usar “make -j3”, en quadcore es mejor
make -j5y así sucesivamente (make -jX; dondeX = núcleos+1).Tras la compilación, necesitas instalar el kernel y los módulos
$ make modules $ sudo make modules_install $ sudo make installVerifica si tu
/boot/grub/grub.cfgfue alterado. Si no lo fue, añade el nuevo kernel. Aquí añadió las siguientes líneas automáticamente:menuentry 'Ubuntu, with Linux 3.0.0Julio' --class ubuntu --class gnu-linux --class gnu --class os { recordfail set gfxpayload=$linux_gfx_mode insmod part_msdos insmod ext2 set root='(/dev/sda,msdos6)' search --no-floppy --fs-uuid --set=root 6d6b6bce-af80-450f-943f-23c0a2bed958 linux /vmlinuz-3.0.0Julio root=/dev/sda7 ro quiet splash vt.handoff=7 }Reinicia el equipo y arranca el kernel nuevo.
$ sudo rebootSi ocurre un
kernel panic, puedes arrancar con el kernel antiguo e intentar corregir el error.