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:
Tabla de contenidos
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 🙂
Pingback: Bitacoras.com /
Pingback: BlogESfera.com /
Gracias por el guia !! Y tambien gracias por hacer este blog,lo encontre hace unos dias y desde entontes lo sigo con mucho interes !
@Nikoi
Gracias a ti. Personas como tú me hacéis seguir publicando por aquí !
Muchas gracias por el tuto, está muy bien explicado