Está en la página 1de 21

Compilacin del kernel de linux

Pasos a seguir

Conceptos bsicos
Cuando se habla de "Linux" con frecuencia se refiere al sistema operativo y sus aplicaciones y no al ncleo del sistema. La realidad es que Linux es solamente el ncleo del sistema (tambin denominado kernel): componente de gran importancia que hace operar nuestra computadora.

Conceptos bsicos
Entre las funciones ms importantes del kernel:
Administracin de la memoria del computador. Establecimiento de la comunicacin entre aplicaciones y dispositivos de hardware. Administracin de procesos (o tareas).

Aunque no son las nicas, si son las de ms relevancia.

Cundo compilar un kernel?


Solamente se compila una nueva versin de kernel cuando tenemos dispositivos de hardware muy recientes y nos vemos forzados a migrar hacia una versin que incluya mdulos para el soporte de ste. Otra razn se basa en que poseemos una versin muy antigua y optamos por actualizarlo para tener mejoras en la administracin de memoria, procesos, recursos, etc

Ejemplo prctico:
Suponer que en nuestro centro de trabajo se gestiona informacin de gran relevancia, por lo que no se desea que los usuarios puedan hacer uso de pendrives ni dispositivos extrables para trasladar dicha informacin. Asimismo la organizacin decide migrar hacia tecnologa inalmbrica, ejemplo: se debe configurar el kernel para adicionar el soporte del chipset de la tarjeta inalmbrica; esto porque se tuvo la mala suerte de que por defecto Linux no lo inclua. Bsicamente lo que se debe hacer es crear un paquete) con el kernel optimizado: deshabilitando los puertos USB y agregando el mdulo que ofrece soporte a la tarjeta inalmbrica.

Ejemplo prctico:
El problema radica en que la organizacin tiene 1200 usuarios (cada uno con su mquina), sera poco prctico y absurdo enviar el grupo de soporte a realizar el proceso de compilacin mquina por mquina. Pero al ser un buen administrador de red: se pone un servidor mirror de linux personalizado; donde se sube paquetes desarrollados o modificados por el grupo de administracin/soporte de sistemas. Por lo que se requiere compilar el kernel y subirlo al mirror.

Descargando y desempaquetando el kernel:


Para compilar un kernel es evidente que debes descargar el cdigo fuente del mismo. Para eso ingresamos en la pgina oficial del proyecto donde se encuentran todos los kernel oficiales de Linux, desde la primera versin hasta la ltima. (www.kernek.org) Cuando los descarguemos vendr empaquetado y comprimido en alguno de los siguientes formatos: .tar.bz2 o .tar.gz .

Descargando y desempaquetando el kernel:


Lo tradicional es descomprimir el kernel en el directorio /usr/src, sin embargo se tiene la libertad de hacerlo en donde se desee.

Para quienes descargaron el .tar.gz :


Para quienes descargaron el .tar.bz2:
tar xvzf linux-2.6.15.tar.gz tar xvjf linux-2.6.15.tar.bz2

Notar la j para el de extensin .tar.bz2 Luego necesitamos ingresar al directorio donde se descomprimi y desempaquet el kernel para poder configurarlo y compilarlo, ingresamos al directorio:
cd linux-X.X.X (nmero de versin)

Para empezar:
Recordar que:
la mayora de los pasos necesitan ser realizados como usuario root. debemos tener instalados algunos paquetes de desarrollo: gcc, libc6-dev, make

Instrucciones para compilar, paso a paso


1. 2. Descargar las fuentes del kernel. Por ejemplo Kernel 2.6.0. Una vez que ya tenemos las fuentes de nuestro kernel lo descompactamos en "/usr/src/", como el kernel esta empaquetado con dos diferentes metodos, mostraremos los dos: linux-2.6.x.tar.bz2
# tar -xjvf linux-2.6.x.tar.bz2 # bzip2 -d linux-2.6.x.tar.bz2 | tar -xvf

linux-2.6.x.tar.gz

# tar -xzvf linux-2.6.x.tar.gz # gzip -d linux-2.6.x.tar.gz | tar -xvf

Instrucciones para compilar, paso a paso


3. Esto nos generara una carpeta en donde se encuentran las fuentes del kernel algo asi como "/usr/src/linux-2.6.x/", podemos crear un enlace simbolico para nuestra carpeta, llamandolo "linux" (/usr/src/linux), esto porque muchos programas se referiran a las fuentes por /usr/src/linux/. De esta manera no tendremos que cambiar el nombre del directorio. Lo haremos de la siguiente manera: #ln -s /usr/src/linux-2.6.x/ /usr/src/linux

Instrucciones para compilar, paso a paso


4. En este momento, tenemos lo necesario para empezar con la configuracion de nuestro kernel, asi que dentro de la carpeta que contiene las fuentes ejecutaremos el comando "make" con la variable "config","menuconfig" o "xconfig".

#make config #make menuconfig #make xconfig

Instrucciones para compilar, paso a paso


Cualquiera de las tres opciones son para configurar el kernel, y van de mas complicado a mas sencillo. Con "make config" se nos haran preguntas sobre las opciones, todas y cada una de ellas acerca de la configuracion del modulo (Nada recomendable, es un proceso mas tardado de lo que imaginas) este proceso es en modo texto. "make menuconfig" tambien es un proceso en modo texto, con la diferencia de que aqui apreciaremos todo en un menu. Con "make xconfig" realizaremos la configuracion del kernel en modo grafico --Solo si contamos con X--, de todas esta es la opcion mas recomendada, pues es mas sencilla y organizada.

Instrucciones para compilar, paso a paso


En caso de que tu kernel no funcione a la primera (Es normal que a la primera no nos quede el kernel como lo queremos), debe haber sido porque en alguna de las opciones la marcaste con "m"(modulo) o como "n"(no incluir ni en el kernel ni como modulo). Recuerda siempre guardar el archivo de configuracin del kernel, pues en caso de tener que reconfigurarlo, no se tendr que partir desde cero.

Instrucciones para compilar, paso a paso


5. Ya que tenemos configurado nuestro kernel, lo siguientes es realizar la compilacion del mismo, es un proceso sencillo, para ello ejecutaremos "make dep" para generar las dependencias, "make clean" para limpiar de anteriores binarios, y "make bzImage" para generar la imagen comprimida del kernel. Para ahorrarnos tiempo, marquemoslo todo en la misma linea de comando:
#[make dep;]make clean; make bzImage

La compilacin tarda un rato. Nota: En los kernels 2.6.x no es necesario hacer el "make dep" esto solo es necesario para kernels inferiores o iguales a la verison 2.4.x

Instrucciones para compilar, paso a paso


6. Una vez compilado el kernel tendremos que compilar todo lo que hayamos marcado como mdulos. Este proceso es quiz el mas tardado de todos, pues habr una buena cantidad de mdulos que compilar (a menos que sepas bien lo que necesitas y que hayas quitado todos los innecesarios). Esto lo haremos con
#make modules

Una vez compilados los mdulos, no se nos debe olvidar instalarlos en la carpeta de mdulos correspondiente a nuestro kernel, lo marcaremos con :
#make modules_install

Instrucciones para compilar, paso a paso


7. Realizando esto, ya tenemos todo lo que necesitamos en binarios, no mas compilaciones (si todo sali bien). La imagen comprimida de nuestro kernel se encuentra en la carpeta "/usr/src/linux2.6.0/arch/i386/boot/" (si fue compilado para i386). Lo que haremos ser copiar el archivo bzImage a /boot/. Por seguridad cambiemos el nombre.
#cp bzImage /boot/2.6.x

Instrucciones para compilar, paso a paso


8. Ya en este lugar, lo que tendremos que hacer es una imagen de booteo (initrd). Como genero una imagen initrd?? Entra en /boot mkinitrd -c -k 2.6.7 -m jbd:ext3 -f ext3 -r /dev/hdb3 Esto funcionar para crear una imagen initrd en /boot para el kernel 2.6.7 con sistema de ficheros ext3, es necesario que esta en /dev/hdb3. Nota que es necesario tener ambos mdulos (jbd y ext3) para poder utilizarlo.

Instrucciones para compilar, paso a paso


9. Por ltimo actualizaremos si es necesario el fichero de configuracin de nuestro gestor de arranque (/etc/lilo.conf si es LILO y /boot/grub/menu.lst si es GRUB). Es conveniente aadir una entrada para nuestro kernel anterior, como medida de precaucin por si hubiera algn problema con el nuevo ncleo.

Instrucciones para compilar, paso a paso


10. Ya podemos reiniciar nuestra mquina (shutdown -r now), que deber arrancar con el nuevo ncleo, como podemos comprobar con la orden uname -sr.

Nota:
Para los que instalaron CentOS, consultar la siguiente pgina: pueden
Cmo compilar el ncleo (kernel) de GNU/Linux en CentOS. http://www.alcancelibre.org/staticpages/index.ph p/como-compilar-kernel-centos

Configuracin y compilacin del kernel de GNU/Linux. Mdulos:


http://recursostic.educacion.es/observatorio/web /ca/software/software-general/533-luis-garcia