sábado, julio 22, 2006

Configurar el Kernel.

Hay mucha gente que piensa que el kernel es algo del más allá, pero con este tutorial vamos a dejar bien clarito unos cuantos conceptos:
  1. El kernel no es más que un recopilatorio de drivers para nuestro hardware.
  2. Con su compilación conseguiremos que no se carguen drivers innecesarios que no vamos a utilizar.
  3. Su compilación no es tan compleja si se sabe exactamente el hardware del que se dispone.
Después de estas aclaraciones ya estamos en condiciones de continuar, lo primero será averiguar que HW tenemos instalado en nuestra máquina, comandos útiles para este fin pueden ser:
dmesg --> imprime por pantalla todos los mensaje de arranque del sistema.
lspci --> nos muestra información referente a los dispositivos conectados a los puertos PCI.

El comando dmesg suele proporcionar bastante información, esta aparecerá de golpe en pantalla, una buena idea es hacer que la salida de este comando sea la entrada de less:
dmesg | less

Con esto podremos analizar la salida de dmesg con mas calma y cundo terminemos presionamos 'q'.

Ahora nos bajaremos el kernel de http://www.kernel.org/, la última versión en estos momentos es la 2.6.30.4

Para este kernel la ruta a seguir sería:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.4.tar.bz2

Movemos las fuentes del kernel a /usr/src/:
mv "kernel".tar.bz2 /usr/src/

Descomprimimos las fuentes con la siguiente orden:
cd /usr/src

bzip2 -dc "kernel".tar.bz2 | tar -xv

Ahora creamos un enlace simbólico a nuestro kernel:
ln -s /usr/src/"nuestro kernel" linux
cd linux

Este es el momento en el que vamos a iniciar el configurador del kernel para especificarle nuestro HW.
NOTA(en Debian suelen hacer falta algunas librerías las libdev5-ncurses)
apt-get install libdev5-ncurses

Ahora vamos a arrancar el asistente de configuración:
make menuconfig
Si aparece algún error serán librerías que necesita que no están instaladas, se resuelve instalándolas con:
apt-get install "librerías"

Si todo ha ido bien tendremos ante nosotros todo un mundo de posibilidades.
Ahora llega la parte crítica, es la hora de la verdad, ya no vale echarse atrás, teniendo bien claro nuestro HW vamos a ir configurando todas las opciones del kernel, las opciones que no tengamos muy claras si instalarlas o no, podemos optar por dos opciones:
  1. Meterla en el kernel incrementando su tamaño.
  2. Leer el help y decidir si realmente nos es necesaria o no.
Yo recomiendo para los principiantes meter todo lo que no se sepa y luego ir depurándolo y optimizándolo.

NOTA:Una cosilla a tener en cuenta es que las opciones se pueden o compilar en el propio kernel o como módulo, se suele compilar como módulo todos aquellos drivers que utilicemos sólo de forma esporádica, en mi caso el driver de la tarjeta de TV y alguna cosilla más.

IMPORTANTE:
Nunca, pero nunca poner como módulo drivers que le hagan falta al sistema para arrancar como por ejemplo el sistema de ficheros de la partición raíz del sistema o el driver IDE, SATA.............

Si estamos cansados y decidimos continuar más tarde con la configuración, se saldrá y cuando pregunte si guardar se contestará que sí.
Cuando se tenga todo listo se procederá a salir y guardar los cambios y acto seguido se escribirá:
make && make modules_install && cp arch/i386/boot/bzImage /boot/kernel_nuevo

Para 64Bits:
make && make modules_install && cp arch/x86_64/boot/bzImage /boot/kernel_nuevo

Para que nos aparezca el nuevo kernel en el GRUB o el LILO(son los cargadores del sistema, es el programa que nos da a elegir si cargar Windows, Linux o cualquier otro sistema operativo), hay que modificar unos archivos.

NOTA: Solo voy a explicar el proceso con GRUB ya que es mas actual que LILO y el mas utilizado.

vi /boot/grub/menu.lst
Añadiremos un entrada parecida a esta:
(Nunca hay que modificar las entadas existentes porque en caso de que no funcione nuestro kernel tener la opción de arrancar el antiguo que si que nos permitía arrancar).

title=Kernel-2.6.17
root (hd0,4)
kernel /boot/kernel-2.6.17 root=/dev/hda8

Cambiando la línea de root(hd0,4) por la apropiada, en mi caso tengo Linux en el disco duro 1º en la 3º partición, también hay que modificar la línea kernel /boot/kernel-2.6.17 root=/dev/hda8 cambiando kernel-2.6.17 por kernel_nuevo y root=/dev/hda8 por root=/dev/"partición donde se tenga el directorio boot(normalmente suele ser la misma que la de Linux)".

Reiniciamos y nos aparecerá una entrada nueva en el menú de arranque, seleccionamos esta y ya lo tenemos.

ACTUALIZACIÓN:
Si estamos empleando Grub2 sseguir los pasos descritos en este artículo.

Conclusión:
La primera vez que se compile el kernel es normal que no funcione todo o incluso que no arranque la máquina, toqueteando al final todo llega a funcionar.

PD: El conocimienro humano pertenece al mundo ;)

No hay comentarios: