Publi

Instalando el parche milagroso para linux [ SCHED_AUTOGROUP ]

Hace unos días se publicó la noticia de un parche milagroso que aumentaba el rendimiento de Linux en el escritorio en varios medios. Este parche mejoraba el planificador de tareas haciendo que nuestra experiencia de usuario sea más fluida, especialmente cuando estamos ejecutando muchas cosas al mismo tiempo.

Bien, he querido hacer una pequeña guía de instalación del parche. Aunque está hecha en Arch Linux es fácilmente adaptable a cualquier distribución:

Descargar y preparar un kernel actualizado

El parche está pensado para la versión 2.6.36 y aunque seguro que es posible instalarlo en una versión más antigua (en mi ordenador principal tengo una 2.6.25 y hay que liarla, ya que el parche necesita muchas características  de versiones más nuevas)

Lo primero es crear en nuestro home (~) un directorio para hacer todo el proceso, por ejemplo linuxplay (muchos prefieren descargar y compilar en kernel en /usr/src (y también es la Gentoo way), pero vamos a intentar pasar el mayor tiempo posible como usuario y el menor tiempo como root:

~$ mkdir linuxplay

Para descargar la última versión (Noviembre 2010), la 2.6.36:

~$ cd linuxplay

~/linuxplay $ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.36.tar.bz2

Cuando terminemos de descargarlo, lo descomprimimos:

~/linuxplay $ tar xvjf  linux-2.6.36.tar.bz2

Ya tenemos el código fuente de Linux descomprimido y ahora tenemos que crear una configuración similar a la que tenemos, pero en el nuevo kernel:

# Entramos en el directorio donde se ha descomprimido el kernel

~/linuxplay $ cd linux-2.6.36

# Hacemos limpieza de configuraciones anteriores, si acabamos de descargar el kernel no hace

# falta, pero más vale prevenir.

~/linuxplay/linux-2.6.36 $ make mrpropper

# Copiamos la configuración anterior del kernel… puede que algunas distribuciones no nos

# dejen hacer esto, debemos mirar en el manual, o buscar el archivo de configuración, tal vez en /boot/

~/linuxplay/linux-2.6.36 $ zcat /proc/config.gz > .config

Descargar, adaptar y parchear el kernel

Primero bajamos el parche desde aquí: Versión 3 Nov 2010 y lo copiamos en ~/linuxplay/linux-2.6.36/ (el archivo se llama RFC-RFT-v3-sched-automated-per-tty-task-groups.patch).

Esto depende del kernel y además es optativo. El parche debe modificar el archivo drivers/tty/tty_io.c y, por ejemplo, yo lo tengo en drivers/char/tty_io.c por lo que, aunque al aplicar el parche nos iba a preguntar dónde está el archivo, podemos, con sed, decírselo desde ahora.

~/linuxplay/linux-2.6.36 $ sed -i ‘s/drivers\/tty\/tty_io/drivers\/char\/tty_io/p’ RFC-RFT-v3-sched-automated-per-tty-task-groups.patch

Ok, vamos a aplicar el parche:

~/linuxplay/linux-2.6.36 $ patch -p1 < RFC-RFT-v3-sched-automated-per-tty-task-groups.patch

Configurar el nuevo kernel

~/linuxplay/linux-2.6.36/ $ make localmodconfig

Esta línea configurará el nuevo kernel como el que ya tenemos, y nos preguntará por novedades optativas que podemos instalar, cuando veamos SCHED_AUTOGROUP decimos que sí, o Y.

También podemos hacerlo de forma más artesana:

~/linuxplay/linux-2.6.36/ $ make oldconfig

~/linuxplay/linux-2.6.36/ $ make menuconfig

Pero de esta forma, tendremos que buscar las novedades a mano, SCHED_AUTOGROUP estará en General.

Compilar el kernel

~/linuxplay/linux-2.6.36/ $ make

# y como root (en Ubuntu o derivadas, podemos usar sudo)

~/linuxplay/linux-2.6.36/ $ make modules_install

Instalar el kernel

Para instalarlo podemos hacerlo de varias maneras, a veces con make install nos vale, pero si queremos controlar el proceso, lo hacemos a mano como dice a continuación (los nombres de archivos pueden variar)

# Donde pone x86 lo mismo puede ser x86_64 dependiendo de vuestra arquitectura

~/linuxplay/linux-2.6.36/ $ cp arch/x86/boot/bzImage /boot/vmlinuz-2.6.36

~/linuxplay/linux-2.6.36/ $ cp System.map /boot/System.map-2.6.36

# Donde pone 2.6.36-ARCH es la versión de vuestro kernel, depende también de la distribución.

# pero una forma fácil de sacarla es hacer: ls /lib/modules/

~/linuxplay/linux-2.6.36/ $ mkinitcpio -k 2.6.36-ARCH -g /boot/kernel26-2.6.36.img

Ok, sólo falta hacer una entrada en vuestro gestor de arranque, aquí muestro un ejemplo para Grub 0.97:

# Como root (o con sudo), y con vuestro editor favorito: nano, emacs, gedit, vi…

~/linuxplay/linux-2.6.36/ $ nano /boot/grub/menu.lst

Necesitamos añadir estar líneas, antes del primer title que encontramos, pero lo mejor que podemos hacer es copiar exactamente las líneas de un kernel que funcione ahora mismo, por ejemplo:

# For booting GNU/Linux
title  GNU/Linux (2.6.35)
root (hd0,0)
kernel /boot/vmlinuz-2.6.35 root=/dev/disk/by-uuid/12345678-9abc-def0-1234-56789abc123456 ro
initrd /kernel26-2.6.35.img

Bien, tenemos que añadir un bloque parecido, y cambiar los datos que vienen por los nuevos; manteniendo el anterior en una línea más abajo podemos cargar el kernel antiguo si algo va mal.

# For booting GNU/Linux
title  GNU/Linux (2.6.36) Parche SCHED_AUTOGROUP
root (hd0,0)
kernel /boot/vmlinuz-2.6.36 root=/dev/disk/by-uuid/12345678-9abc-def0-1234-56789abc123456 ro
initrd /kernel26-2.6.36.img

Guardamos los cambios, reiniciamos y a correr… a reproducir  películas y compilar programas al mismo tiempo que movemos las ventanas sin sentido 🙂

También podría interesarte...

There are 5 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. Pingback: BlogESfera.com /

  3. Nikoi /
    Usando Google Chrome Google Chrome 7.0.517.44 en Windows Windows XP

    Gracias por el guia !! Y tambien gracias por hacer este blog,lo encontre hace unos dias y desde entontes lo sigo con mucho interes !

  4. admin / Post Author
    Usando Mozilla Firefox Mozilla Firefox 3.6 en Linux Linux

    @Nikoi
    Gracias a ti. Personas como tú me hacéis seguir publicando por aquí !

  5. kenkeiras /
    Usando Mozilla Firefox Mozilla Firefox 3.6.3 en Windows Windows Vista

    Muchas gracias por el tuto, está muy bien explicado

Leave a Reply