Guia Como Compilar el kernel

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.

No Comments