Compilar el kernel Linux 3.0

La nueva versión 3.0 del kernel salió hace 3 días (22/07/2011) y decidí compilarla e instalarla en mis portátiles y publicar aquí el resultado. Lo hice primero en un Ubuntu 11.04 y luego en Arch Linux, pero el proceso es parecido en cualquier distribución de Linux.
Nota: en Arch Linux también se puede compilar el kernel con el sistema ABS + Pacman. Pero de momento solo comentaré el método tradicional.
¡ATENCIÓN! Es una versión nueva y con varios fallos; hice la instalación solo con fines educativos. Recomiendo esperar unas semanas al paquete que publique tu distribución, que te ahorrará algunas horas de compilación y posibles cuelgues.
Este tutorial también sirve a quien necesita modificar algún módulo o aplicar un parche para activar funciones nuevas o dar soporte a hardware nuevo. Los pasos son bastante sencillos y, si algo sale mal, seguramente puedas volver al kernel anterior; aun así, ve con cuidado y haz copia de tus archivos importantes: no me hago responsable de los problemas que pueda causar instalar el nuevo kernel.
Pasos:
Instala todas las herramientas de desarrollo necesarias para compilar
En Ubuntu:
$ sudo apt-get install gccEn Arch:
$ sudo pacman -S gccDescarga el paquete del kernel. Aquí usaré el de http://www.kernel.org, porque todavía es el único v3.0 disponible. Pronto saldrán versiones adaptadas para otras distribuciones
$ wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.bz2Descomprime el paquete en alguna carpeta (yo usé
~/src)$ tar jxvf linux-3.0.tar.bz2 -C ~/srcEs recomendable (no imprescindible) copiar la configuración actual y cambiar solo lo necesario.
cp /usr/src/linux-headers-2.6.38-8-generic-pae/.config ~/src/linux-3.0En el .config de Ubuntu vi que se pueden quitar MUCHÍSIMAS cosas. Quita TODOS los controladores de red, wifi, vídeo y de otros dispositivos que no tengas o no vayas a necesitar. Eso reducirá bastante el tiempo de compilación y de carga del kernel.
Ve a la carpeta recién extraída (
cd ~/src/linux-3.0) para empezar la configuración.Tenemos estas herramientas:
$ make config-> en modo texto puro. Hace un montón de preguntas.$ make menuconfig-> Interface ncurses$ make xconfig-> interfaz gráfica en QT.$ make gconfig-> interfaz gráfica en GTK
Aquí usaré
menuconfig, porque no necesita X; pero a quien empieza y tiene QT,xconfigme gustó bastante, porque da acceso más fácil a la ayuda.Ve navegando por los menús y eligiendo qué cambiar.
Y-> incluye el elemento dentro del kernelM-> compila el elemento como módulo cargableN-> desactiva el elemento?-> ayuda sobre el elemento/-> búsqueda-> el espacio alterna entre opcionesESC-> sube un nivel o sale de la configuración
Guarda la configuración.
Empieza a compilar el kernel y vete a hacer otra cosa. Aquí tardó más de una hora.
$ make -j2En procesadores de dos núcleos conviene usar “make -j3”, en los de cuatro
make -j5y así sucesivamente (make -jX, dondeX = núcleos+1).Tras compilar hay que instalar el kernel y los módulos
$ make modules $ sudo make modules_install $ sudo make installComprueba si tu
/boot/grub/grub.cfgha cambiado. Si no, añade el nuevo kernel. En mi caso añadió estas 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 ordenador y arranca con el kernel nuevo.
$ sudo rebootSi ocurre un
kernel panic, puedes arrancar con el kernel antiguo e intentar corregir el fallo.
Links
- https://wiki.archlinux.org/index.php/Kernel_Compilation_from_Source
- https://wiki.archlinuhttps://wiki.archlinux.org/index.php/Kernel_Compilation_from_Sourcex.org/index.php/Kernel_Compilation_from_Source_for_New_Users
- https://wiki.archlinux.org/index.php/Kernel_Panics
- https://wiki.archlinux.org/index.php/Kernel_Compilation

Soy un ingeniero informático brasileño radicado en Alemania, apasionado por la tecnología, la ciencia, la fotografía y los idiomas.
Llevo programando cerca de dos décadas, explorando desde apps móviles y desarrollo web hasta aprendizaje automático. Hoy me enfoco en SRE en la nube e ingeniería de datos.
Soy voluntario en las comunidades de open source y Python, ayudando a organizar PyCon DE y PyData Berlin, dando mentorías y contribuyendo con código y traducciones.
En mi blog comparto consejos de Linux, guías de configuración y notas personales que escribí como referencia futura. Espero que también sean útiles para otras personas. El contenido está disponible en varios idiomas.
Visita mi galería para ver algunas de mis fotografías.
Fuera del teclado, me encontrarás en conciertos, tocando el clarinete, en bicicleta, buceando o explorando nuevos lugares, culturas y cocinas.
¡Siempre feliz de conectar! 🙂