Compilando el kernel 3.0 de Linux

jul. 25, 2011·
Julio Batista Silva
Julio Batista Silva
· 3 min de lectura
¡ARTÍCULO INCOMPLETO!

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:

  1. Instala todas las herramientas de desarrollo utilizadas para la compilación

    En Ubuntu:

    $ sudo apt-get install gcc
    

    En Arch:

    $ sudo pacman -S gcc
    
  2. Descarga 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.bz2
    
  3. Descomprime el paquete en alguna carpeta (usé ~/src aquí)

    $ tar jxvf linux-3.0.tar.bz2 -C ~/src
    
  4. Es 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.0
    

    En 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.

  5. 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ó bastante xconfig, 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 kernel
    • M -> Hace que el ítem se compile como un módulo cargable
    • N -> Desactiva el ítem
    • ? -> Ayuda relativa al ítem
    • / -> Búsqueda
    • -> La barra espaciadora alterna entre opciones
    • ESC -> Sube un nivel o sale de la configuración

    Guarda la configuración.

  6. Empieza a compilar el kernel y ve a hacer otra cosa. Aquí tardó más de una hora.

    $ make -j2
    

    En procesadores de dos núcleos es mejor usar “make -j3”, en quadcore es mejor make -j5 y así sucesivamente (make -jX; donde X = núcleos+1).

  7. Tras la compilación, necesitas instalar el kernel y los módulos

    $ make modules
    $ sudo make modules_install
    $ sudo make install
    
  8. Verifica si tu /boot/grub/grub.cfg fue 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
    }
    
  9. Reinicia el equipo y arranca el kernel nuevo.

    $ sudo reboot
    

    Si ocurre un kernel panic, puedes arrancar con el kernel antiguo e intentar corregir el error.


Enlaces

Julio Batista Silva
Autores
Senior Cloud Developer
comments powered by Disqus