Guia Como Compilar el kernel
|Algunas personas cuando se les menciona el tema de la compilacion del kernel, se asustan, expresan que es algo complicado y que solo los grandes Linuxeros , sin embargo, con esta guia quiero demostrarle a muchos usuarios medios que este proceso no es del otro mundo, si, efectivamente se necesita tener algun cuidado y saber lo que se esta haciendo, para no llevarse una sopresa despues de compilado el kernel. Antes de comenzar, debemos tener claro que es el kernel, cito la wiki:
En informática, el núcleo (también conocido en español con el anglicismo kernel, de raíces germánicas como kern) es la parte fundamental de un sistema operativo. Es el software responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma más básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, el núcleo también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso para el programador.
Creo que esta definicion tiene mucha relacion con la figura que se encuentra en la parte posterior, y ayuda a entender un poco el concepto del kernel y su funcion.
Procedimiento
Teniendo esto claro vamos a empezar, ¿y por donde comenzamos?, primero debemos descargar las fuentes del kernel desde aca, estando en este sitio procedemos a descargar el ultimo kernel estable, en este caso es el 2.6.28-7 y lo descargamos en la parte derecha en la letra F , y lo guardamos en /usr/src (La F nos descarga las fuentes completas).
Ya teniendo nuestras fuentes en /usr/src, el siguiente paso es descomprimir el archivo descargado, lo hacemos de esta forma:
tar jxvf linux-2.6.28-7.tar.bz2
Una vez descomprimido el archivo, tendremos un directorio con este nombre linux-2.6.28-7 y tendremos que crear un enlace simbolico asi:
ln -s linux-2.6.28-7 linux
Antes de continuar debemos asegurarnos de que tenemos algunas herramientas y dependencias necesarias para el proceso de compilacion, asi que comprobamos que estos paquetes se encuentren instalado en nuestro sistema: ( si no estan solo bastara un apt-get install nombredelpaquete).
- binutils
- make
- automake
- autoconf
- libncurses5
- libncurses5-dev
- gcc
- kernel-package
- build-essential
Despues de cerciorarnos que tenemos todos los paquetes instalados, estamos listos para la configuracion del kernel.
make menuconfig
Si todo ha salido bien y no ha devuelto ningun error, nos aparecera en la pantalla un menu, alli se encuentran todas las caracteristicas de esta version del kernel, para entrar a cada una de ellas presionamos enter. Debemos tener clara la siguiente simbologia:
[ * ] Indica que la opción sera compilada como parte del kernel.
[ ] Indica que la opción no esta incluida.
[M] Indica que la opción esta como modulo.
Existe una diferencia entre poner una opcion como parte del kernel y ponerla como modulo, esta diferencia radica en que si la opcion va implementada en el núcleo, se cargara de manera automática con el nucleo y lo que vaya como modulo se cargara una vez terminada la carga del kernel. Por ello, lo más lógico, es poner, aparte del menor numero de opciones implementadas en núcleo, es decir, poner las imprescindibles para que nuestro sistema operativo pueda arrancar, y dejar como modulo, todo aquello que no sea vital para que nuestro Sistema funcione.
Para poner una opcion como parte del kernel presionamos Y
Para quitar una opcion presionamos N
Para poner una opcion como modulo presionamos M
En este punto ya es decision de ustedes decidir que ira en el nucleo que ira como modulo y que quitaran del nucleo, no puedo espeficcar cada cosa por que tranquilamente se podria redactar un libro, es un tema muy amplio. Igualmente en esta etapa del proceso se debe Tener mucho cuidado por que si quitas una opcion equivocada tu kernel despues de compilarlo producira un kernel panic, asi que es recomendable estar seguro de lo que se esta haciendo.
Ya teniendo la configuracion le damos exit, el nos preguntara si deseamos guardar, le decimos que si , ahora solo basta ejecutar un par de comandos y esperar un buen rato mas o menos 1 hora se demora el proceso de compilacion:
make-kpkg clean
make-kpkg –append-to-version=.<fechadecompilacion> –initrd kernel_image kernel_headers
No se asustan por el parametro append-to-version simplemente este parametro nos permite agregarle un nombre al kernel para poder distinguirlo de otros que ya tengamos instalados.
Despues de una larga espera, el proceso nos creara un archivo.deb el cual tendra el kernel compilado por nosotros con las opciones que nosotros le asignamos. Por ultimo solo basta instalar este paquete .deb asi:
cd usr/src
dpkg -i linux-image-<version>.deb linux-headers-<version>.deb
Listo!!! reiniciamos y cruzamos los dedos, para que no aparezca el temido «kernel panic». Espero que haya sido una guia facil de seguir, y cualquier cosa estare esperando los comentarios para colaborarles en lo que se pueda.