Compilando el kernel 3.0 de Linux

jul. 25, 2011·
Julio Batista Silva
Julio Batista Silva
· 3 min de lectura
blog Linux
¡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

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! 🙂

comments powered by Disqus