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.