viernes, 26 de septiembre de 2008

Personalizando el kernel

Cuando instalamos una distribución linux en nuestro equipo por lo general lleva una versión del kernel la cual esta configurada de manera muy generalizada, incluyendo por ejemplo: drivers para dispositivo bluetooth, tengamos o no dicho dispositivo en nuestro equipo, se configura para un determinado procesador, quizás no específicamente el nuestro, se instalan otras opciones para notebook de algunas determinadas marcas y así sucesivamente, en si, se tiene un kernel configurado para que funcione en la mayoría de los equipos, siendo por consecuencia no optimizado para algún equipo en especial.

Pero tratándose de linux pues existe la opción de que personalicemos el kernel para que tengamos uno a nuestra medida, que cumpla únicamente con lo que necesitamos, haciendo el desempeño de nuestra máquina más eficiente. A continuación mostrare los pasos necesarios para llevar acabo dicha tarea.

1.- Necesitamos descargar el código fuente del kernel que tengamos instalado, este se puede encontrar en: http://www.kernel.org

NOTA: También si lo deseamos podemos descargar un kernel mas nuevo con el fin de actualizar o en busca de soporte para nuevas tecnologías.

2.- Una vez que hayamos descargado el kernel, lo descomprimimos y estando en una consola como root, nos colocamos en el directorio que se descomprimió.

3.- Para comenzar en base a la configuración que nuestro kernel ya tiene, hacemos lo siguiente: copiamos el archivo llamado config-2.6.xxxxxx que se encuentra en /boot a la carpeta donde se encuentran los fuentes del kernel que descomprimimos cambiándole el nombre a .config

Ejemplo:
cp /boot/config-2.6.xxxx /usr/src/linux-2.6.16.xxx/.config

Se puede configurar el kernel omitiendo este paso, pero es recomendable que se inicie la configuración en base a una, que de antemano sabemos que funciona.

4.- Existen varias formas de configurar el kernel, pero la más común es mediante el comando make menuconfig, los diferentes comandos son:

1.- make config (para una configuración sin la ayuda de un entorno gráfico).

2.- make menuconfig (para un entorno gráfico tipo consola)

3.- make xconfig (para una forma gráfica)

En esta ocasión elegiremos la segunda opción ya que es una forma fácil de hacer esta tarea, una vez que hayamos tecleado el comando, notaras que te has sumergido en un mar de parámetros para configurar donde la mayoría son confusos, te tocara investigar para que los entiendas, algunos los puedes intuir pero otros requieren de más conocimiento.

Cada parámetro tiene tres opciones de configuración, una es incluirlo en el kernel que esta simbolizada con un (*), la segunda es compilarlo como módulo (M) y la tercera excluirlo del kernel, en saber elegir alguna de estas opciones para cada parámetro consiste una buena configuración.

Para elegir que un parámetro se compile incluido en el kernel debemos tomar en cuenta a todos aquellos que forman parte imprescindible del funcionamiento de nuestra máquina como los que tienen que ver con los drivers de los diferentes dispositivos.

Para el caso de compilar como módulo hay que elegir a todos los que se refieren a cuestiones que casi no se utilizan, por ejemplo: soporte para el sistema de archivos NTFS.

En el caso de excluir parámetros, seleccionamos a los que tienen que ver con dispositivos con los que no cuenta nuestro equipo o con soporte para aspectos que nunca ocuparemos.

Una vez que terminemos de configurar, guardamos los cambios y salimos.

NOTA: Para poder ver el menú de configuración ocuparas tener instalada una librería llamada ncurses, la cual se puede instalar con la ayuda de algún administrador de paquetes o descargándola de algún sitio de internet, por ejemplo en Debian, puedes hacerlo de la siguiente forma:

:#apt-get install ncurses


5.- Tecleamos:
make //Comienza a compilar (Tarda aprox. 30 min para que pienses en tener cerca un libro o alguna revista)
make install //Instala la imagen del kernel
make modules_install
mkinitrd -o /boot/initrd-2.6.x.img 2.6.x //Crea una imagen que ocuparemos cuando configuremos el gestor de arranque (GRUB, LILO).


6.- Configuramos GRUB:
Dentro del directorio /boot/grub existe un archivo de configuración del gestor de arranque (menu.lst), donde agregaremos una nueva entrada que corresponderá al nuevo kernel que configuramos. Ejemplo:

title kernel personalizado, kernel 2.6.x.x
//El titulo únicamente es el nombre que queremos aparezca en el GRUB

root (hd0,1)
//hd0 se refiere al disco duro

kernel /boot/vmlinuz-2.6.x.x root=/dev/hda2 ro
//Se establece la dirección donde se encuentra la vmlinuz nueva y donde se montara //el sistema, en este caso /dev/hda2, (ro) se refiere a que el sistema se cargue en //modo de solo lectura.

initrd /boot/initrd.img-2.6.x.x
//Dirección de la imagen que creamos

savedefault

7.- Una vez que hayamos configurado el grub, reiniciamos y esperamos a que todo salga bien.


RESUMEN:

1.- Descargar los fuente del kernel ( http://www.kernel.org )
2.- Descomprimir el kernel.
3.- Si se utilizara make menuconfig instalar ncurses.
4.- Teclear make menuconfig
5.- Configurar
6.- Teclear make
7.- Teclear make install
8.- Teclear make modules_install
9.- Crear imagen: mkinitrd -o /boot/initrd-2.6.x.img 2.6.x
10.- Modificar el gestor de arranque
11.- Reiniciar la PC
12.- Esperar que todo salga bien.