20 de febr. 2009

Todo sobre el kernel del linux

http://www.linuca.org/body.phtml?nIdNoticia=198

¿ Que es el kernel ?
Bueno un kernel es el el nucleo del sistema, el encargado de controlar todas las operaciones que se realizan en nuestro sistema.Por decirlo de forma simbólica es tanto el Cerebro como el Corazón.
Decir que este articulo esta basado en el kernel Linux , kernel que fue creado por /dios/ Linus Torvalds /dios/.

Como conseguir un kernel.
Yo recomiendo dos formas de hacerlo, la forma debianita y la forma estandar:

- La forma debianita consiste en hacerse de la sources del kernel mediante

apt-get install kernel-source-2.X.X , donde X son las versiones deseadas.

-La forma estándar consiste en irte a kernel.org y bajarte de su pagina la versión mas reciente, por ejemplo:

ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.bz2

Bueno, pues ahora que sabéis conseguir un kernel , os diré mas o menos cual es la diferencia entre ambas. Poner un kernel personalizado pro tu distribución , ya sea Debian , Gentoo u otra significa que es un kernel preparado y personalizado para esa distribución , con el fin de sacar mejor partido de las peculiaridades de esta. Bajar un kernel estándar significa que ese kernel te va a funcionar en cualquier distribución y que lo que te bajas solamente es linux en su estado puro :-P .

Hay otras formas , por ejemplo en debian , de instalar un kernel. Por ejemplo bajándote directamente una imagen, que consistiría en el resultado de compilar las sources. Yo no lo recomiendo , por que además de no estar personalizado para tu pc, es menos didáctico .-P.

Situando el Source.
Bueno, pues na vez tengamos el kernel la idea es llevarla a /usr/src.
allí la descomprimiremos , dependiendo de la compresión que tenga:
tar.bz2 -> tar -vxjf archivo.tar.bz2
tar.gz -> tar -vxzf archivo.tar.gz
Una vez tengamos descomprimido nuestro kernel, recomiendo hacer un link relativo des la siguiente forma:
ln -s kernel-descomprimido linux
Con esto tenemos la posibilidad de referirnos a nuestro kernel como /usr/src/linux

Kernel Patches.
Muy bien ya tenemos el kernel y sabemos donde lo tenemos , pues antes de compilar os comentare un poco sobre los distintos patches que podéis aplicar a vuestro kernel.
Un Patch es un código fuente que se aplica antes de compilar un kernel con el fin de conseguir mejoras, tapar agujeros de seguridad y diversos resultados.
Los distintos patches que podemos encontrar , entre otros , son:
xfs
Permite utilizar el Sistema de Ficheros XFS.
lowlatency
Aplica un reducción en el tiempo de E/S a los dispositivos de nuestro sistema.
preempt
Aplica una reducción de tiempos de espera del kernel.
debianlogo
Si usas Framebuffer, sustituye el pingüino que aparece en la parte superior de la pantalla durante el arranque por un logotipo de Debian.
lpp
Si usas Framebuffer, podrás tener un arranque gráfico parecido al de otras distribuciones, en este caso tendrías una barra de progreso de carga del sistema al arrancar.
Si alguien conoce mas patches que los comente por favor, así aprendemos todos un poco mas :-P
Para aplicar un patch deberemos hacer un cd /usr/src/linux y allí hacer por ejemplo:

bzip2 -d xfs-2.4.20-all-i386.bz2 | patch -p1

También para los debianitas tenéis la posibilidad de apt-getear los patches y aplicarlos de una manera distinta. Se os creara un directorio llamado /usr/src/kernel-patches/all allí en la carpeta apply hay unos binarios por cada patch que hallamos instalado, copiaros ese binario a /usr/src/linux y allí ejecutarlo.

Compilando el Kernel.
Bueno lo primero decir que en linuca también tenéis un articulo de como hacerlo aquí
Mis recomendaciones son las siguientes.
cd /usr/src/linux
make mrproper -> Para borrar archivos de antiguas compilaciones.
make menuconfig -> Me gusta mas la configuración basada en ncurses.
make dep -> Creamos las dependencias
make clean -> limpiamos archivos temporales
make bzImage -> creamos la imagen del kernel
make modules -> compilamos los modulos.
make modules_install -> instalamos los módulos.
make install -> instalamos la imagen.

Cuando todo haya acamado nos preguntara si deseamos ejecutar lilo, le decimos que si , y ya tenemos el kernel listo.

Configurando el arranque.
Bueno ahora toca a Lilo decirle que arranque ese kernel, si habéis seguido todos los pasos anteriores tendremos la imagen del kernel en /boot.
Editamos el archivo /etc/lilo.conf y añadimos o modificamos una entrada tal que así:
image=/boot/vmlinuz
label=Debian_2.4.21

Después de añadir eso , es muy importante definir esa entrada como default si queremos que se arranque predetermidamente así:
default=Debian_2.4.21

Ahora , y muy importante , ejecutamos lilo y ya esta, reiniciamos y ya estamos andando con nuestro nuevo kernel.

Trucos y recomendaciones.
Podéis usar alias para no tener que escribir siempre todo a la hora de compilar un kernel, editar el .bashrc del root y añadir:
alias compikernel = 'make dep; make clean; make bzImage; make modules; make modules_install; make install'
Con esto tenemos la ventaja de no tener que recordar todos los pasos para compilar el kernel, una vez configurado el kernel , ejecutamos compikernel y hasta que acabe.

Acordaros de que cuando estéis configurando el kernel podéis hacer uso de guardar y cargar configuración , cosa muy útil que nos ahorrara de configurar el todo el kernel siempre que necesitemos compilarlo.

En esta sección me gustaría hacer un llamamiento a los que conozcáis mas trucos y recomendaciones para crear un articulo vivo y que vaya creciendo con vuestra participación.


Saludos y espero que a alguien le sirva de ayuda, y resaltar que son pasos recomendaciones personales, seguramente no sean las idóneas pero a mi me tiene contento :-P