Como compilar el Kernel 2.6.36.2 en Ubuntu con el parche de 200 lineas

A muchos de ustedes al parecer les ha dado algún problema la instalación del Kernel precompilado con el parche de 200 lineas en sus maquinas, esto es de esperarse, por lo que siempre es mejor tener un Kernel directamente compilado en nuestra maquina que en una maquina ajena, para que este tome correctamente la arquitectura de nuestra maquina y la configuración general del hardware.

Por esto, aquí enseño a los mas osados, como compilar su propio Kernel (2.6.36.2) en Ubuntu (probado en Ubuntu 10.10) con el parche de 200 lineas incluido en el. Recuerda que este proceso debes hacerlo bajo tu propio riesgo, requiere una gran cantidad de paquetes por descargar y un tiempo de compilación bastante prolongado.

Para comenzar, lo primero que debemos hacer es instalar las dependencias necesarias para la compilación del Kernel ejecutando la siguiente linea en la terminal:

sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge kernel-package

Ahora ejecutemos la siguiente linea en la terminal, la cual es necesaria para compilar el Kernel (desde Intrepid)

sudo apt-get build-dep linux

Terminamos este primer paso con la instalación de otros paquetes necesarios para la compilación

sudo apt-get install libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev

Para continuar con el proceso de instalación del Kernel, debemos descargar las fuente del ultimo Kernel estable (2.6.36.2) y el parche de Mike Galbraith y ubicarlos dentro de nuestro directorio personal.
Creemos un directorio para la compilación del Kernel, nos ubicamos en el y descargamos las fuentes del Kernel desde kernel.org:

mkdir kernel-2.6.36.2
cd kernel-2.6.36.2
wget http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.2.tar.gz

Ahora creamos un archivo de texto nuevo y copiaremos el código que encontraremos en el post de Mike Galbraith o podemos descargarlo desde MediaFire, guardamos y cerramos el archivo:

gedit ~/autogroup.patch

Post oficial de Mike Galbraith
Mike Galbraith Patch desde MediaFire

Ahora vamos a descomprimir el Kernel que acabamos de descargar desde kernel.org:

tar xzvf linux-2.6.36.2.tar.gz
cd linux-2.6.36.2
patch -p1 < ~/autogroup.patch

En este punto todo debe salir bien y sin errores, en caso de tener algún error es necesario reiniciar el proceso.
A continuación cargaremos la configuración actual del Kernel, esto para que el nuevo Kernel tome la configuración directamente desde nuestro sistema y no tengamos problema alguno al momento de compilarlo. Aun así, si tienes conocimientos suficientes puedes personalizar la configuración del Kernel para obtener un sistema mas a la medida de tus necesidades, puedes hacerlo.

Si no sabes que estas haciendo, mejor no modifiques manualmente la configuración del Kernel.

Copiamos la configuración ejecutando el siguiente comando en la terminal y posteriormente ejecutamos

lsmod

para que se ejecuten todos los módulos cargados en nuestro sistema y nos aseguremos de que todo nuestro hardware sea reconocido.

cp -vi /boot/config-`uname -r` .config
make localmodconfig

En este punto el proceso de compilación te preguntara varias cosas acerca de los módulos, continua aceptando todas las preguntas que se te hacen presionando Enter hasta que finalice el proceso de configuración.
Continuamos la compilación del Kernel ejecutando la siguiente linea en la terminal para abrir el menu de configuración del Kernel:

cp /boot/config-$(uname -r) .config && yes "" | make oldconfig
make menuconfig

Ahora podemos elegir los parches que deseamos habilitar en nuestro Kernel, ya que estamos interesados en el parche de 200 lineas.
Para hacer esto, navegamos por el menú de configuración del kernel que nos aparece, hasta

General Setup

y buscamos la linea con nombre

Automatic process group scheduling

, lo habilitamos presionando la barra espaciadora de nuestro teclado, nos posicionamos sobre la opción

Exit

usando las flechas de dirección del teclado y presionamos la tecla Enter de nuestro teclado para salir del menú

General Setup

.

Linux Kernel Configuration - General Setup

Linux Kernel Configuration - Automatic Process Group Scheluding

Ahora navegamos hasta el menú

Kernel hacking

y entramos presionando la tecla Enter, buscamos la opción

Compile the kernel with debug info

y la desseleccionamos presionando la barra espaciadora de nuestro teclado, de nuevo nos dirigimos a la opción

Exit

y presionamos Enter para salir del menú principal.

Linux Kernel Configuration - Kernel hacking

Linux Kernel Configuration - No Compile the kernel with debug info

Ya terminamos la configuración del Kernel, por lo que solo nos queda dirigirnos de nuevo a

Exit

en el menú principal y presionamos Enter para terminar la configuración del Kernel. Aceptamos cuando nos pregunte si deseamos guardar los cambios hechos a la configuración del Kernel presionando Enter sobre la opción Yes.

Ahora si, vamos a compilar el Kernel ejecutando la siguiente linea en la terminal:

fakeroot make-kpkg --initrd --append-to-version=-20101209 kernel-image kernel-headers

Ten en cuenta que el proceso de compilación puede variar dependiendo de tu hardware

Esto generará dos paquetes .deb dentro del directorio kernel-2.6.36.2, los cuales utilizaremos para instalar el nuevo Kernel en nuestro Ubuntu permitiendo que sean rastreables por Synaptic y fácilmente desinstalables.

Llegamos a la parte final de este tutorial, donde vamos a instalar y a probar el buen funcionamiento del nuevo Kernel que acabamos de instalar.

Para instalar los dos paquetes .deb que acabamos de generar debemos ejecutar los siguientes comando en la terminal:

cd ..
sudo dpkg -i *.deb

Si todo salio bien, reiniciamos nuestra maquina y en la lista de Grub, seleccionamos el nuevo Kernel (2.6.36.2) y presionamos Enter para iniciar el sistema.
Una vez estemos de nuevo en el escritorio, verificaremos que el parche de 200 lineas este correctamente aplicado y funcionando ejecutando la siguiente linea en una terminal:

cat /usr/src/linux-headers-2.6.36.2-20101219/.config | grep -i AUTOGROUP

Y tiene que devolvernos una linea como esta:

CONFIG_SCHED_AUTOGROUP=y

Si así fue, tenemos nuestro sistema corriendo con el Kernel 2.36.6.2 y el “Automatic process group scheduling” activado.
Ubuntu 10.10 Maverick Meerkat con Kernel 2.6.36.2 y Automatic process group scheduling

Ya podemos estresar Ubuntu al maximo…

Este manual llega a ustedes gracias al esfuerzo de FRANCOBEP.


Categorías

Linux, Ubuntu

David Gómez

Técnico de sistemas, experto en soporte a SOs (Linux, Windows, Mac OS X), administración de redes de datos y servidores. Blogguer dedicado, fundador de "el mundo según Linux" y redactor de 120% linux, Ubuntizando el planeta y Ubunlog en temas relacionados con el software libre.

10 comentarios

  1.   horacio dijo

    hola david

    mi pregunata es:

    yo suelo utilizar los kernel del ppa de ubuntu (https://launchpad.net/~kernel-ppa/+archive/ppa)

    estos ya no vienen con el parche de 200 lineas incluido?

    gracias

    1.    David Gómez dijo

      Mira, aun estoy averiguando si el Kernel del PPA de Ubuntu tiene el parche incluido, pero esto es fácil de averiguar por ti mismo, simplemente ejecuta el comando cat /usr/src/[versión del último kernel]/.config | grep -i AUTOGROUP, donde cambiarías el texto dentro de los corchetes por la versión del ultimo Kernel de tu maquina.

      Si recibes un mensaje de respuesta como este CONFIG_SCHED_AUTOGROUP=y, entonces tienes el parche instalado.

      Nota: para conocer la versión de todos los Kernel instalados en tu equipo, solo tienes que ejecutar el comando ls /usr/src/ en la terminal.

    2.    David Gómez dijo

      Horacio, el Kernel del PPA de Ubuntu cuenta actualmente con la V4 del parche de Mike Glabraith en palabras del mismísimo Tim Gardner (desarrollador de Canonical).

      We’re carrying V4 of Mike Galbraith’s auto-cgroup patch since 2.6.37-6.16, but I expect that to change in favour of upstream tip as we move forward into the 2.6.38 merge window.

      sched: automated per session task groups V4

      rtg


      Tim Gardner

  2.   Kanito dijo

    pues ya lo compilé y está instalado, …. por lo menos no se murió el sistema ahora a trabajar a ver que tal funciona

  3.   Irving dijo

    Excelente tutorial. Seguí los pasos al pie de la letra y todo funcionó perfecto. Tengo mi nuevo Kernel.

    Nota: solo hice un cambio que me sonó por lógica y fue aquí:

    cp -vi /boot/config-`uname -r` .config
    make localmodconfig

    lo hice así:

    cp -vi /boot/config-`uname -r` .config
    lsmod
    make localmodconfig

  4.   Kanito dijo

    ahora me doy cuenta que cometí un pequeño error asi que volveré a instalarlo … y agregaré la modificación de irving :mrgreen:

  5.   sergio dijo

    Me quedo al inicio un:
    init: unread main process (362) terminated with status 5
    pues parece funcionar bien, que proda ser???’

  6.   brian dijo

    Bueno muy bueno el manual, tambien lo postearon por taringa, en este momento esta compilando el kernel espero que haya salido bien solo le cambie el tipo de procesador en el menuconfig espero que haya elegido bien al optar por Intel core/newer xeon ya que tengo un procesador intel core i3, saludos y gracias por el aporte

  7.   Thedemon007 dijo

    Hola bueno a mi me parece mejor el comando

    cp /boot/config-`uname –kernel-release` ./.config

    ya que usa la configuración del kernel mas reciente instalado

  8.   Darkwolf22 dijo

    Hola que tal, solo tengo una minima duda… en el archivo del kernel viene tanto la versión de 32 bits como la de 64 bits? o para conseguir la versión amd64 necesito descargar uno diferente?… por deducción deberian venir ambas versiones en el mismo cierto?… muy buena explicacion!

    Gracias!

Escribe un comentario