Guía rápida para compilar el kernel de Linux

Fernando José Pereda Garcimartín

Resumen

Este documento pretende ser una guía rápida para que los usuarios nóveles de Linux puedan compilarse sus propios kernels sin sudar mucho :-)

El autor supone que sabemos movernos a través del BASH, ejecutar comandos y que tenemos acceso a la máquina con el superusuario root


Tabla de contenidos

1. Preparándonos
¿Qué vamos a necesitar?
Comenzando
2. Configurando el kernel
Consejos útiles
Momentos en los que tenemos que tener cuidado
Las Grabadoras
3. Empieza la parte "pesada"
Ya tengo mi kernel configurado, ¿ y ahora ?
Preparando realmente la compilación
Compilando el kernel propiamente
Compilando e instalando los módulos del kernel
4. La hora de la verdad
Poniendo las cosas en su sitio
Preparando las cosas para el momento final
¿Y a partir de aquí?
A. Notas sobre el autor
B. ZonaSiete.ORG

Capítulo 1. Preparándonos

¿Qué vamos a necesitar?

Voy a poner una lista de lo que podemos necesitar para compilar nuestro nuevo kernel de Linux:

  • Las fuentes del último kernel estable. Las podemos conseguir en http://www.kernel.org

  • Un compilador de C, el gcc nos servirá. Normalmente Linus recomienda una versión específica en el kernel, pero no es necesario que sea estríctamente esa.

  • Necesitaremos, tiempo y mucha paciencia. Compilar el kernel no es difícil, no obstante se puede hacer muy largo las primeras veces, así que revista, café, televisión o radio en mano no estaría de más :-)

Comenzando

Una vez tengamos descargadas las fuentes del kernel, las copiamos a /usr/src, y allí las descomprimimos:

posidon:/usr/src# tar zxf linux-2.4.18.tar.gz
posidon:/usr/src#
                        

Una vez hecho esto nos disponemos a una de las partes más críticas ( y por desgracia más interactivas ) de todo el proceso. La configuración del nuevo kernel. Para hacer esta tarea disponemos de tres métodos distintos:

  • Ejecutar make config No recomendado

  • Ejecutar make menuconfig

  • Ejecutar make xconfig

Personalmente recomiendo la opción make menuconfig que cargará una interfaz NCurses que nos permitirá configurar nuestro kernel

Capítulo 2. Configurando el kernel

Consejos útiles

Una buena máxima a seguir es poner como nativo sólo lo esencial, y como módulo todo aquello que podamos. Solo hay que prestar un poco de atención a algunas opciones que tenemos que cargar como nativas para que nuestro kernel arranque.

Otra buena pauta pasa por incluir lo estríctamente necesario, si en otro momento lo necesitamos, ya recompilaremos el kernel.

En caso de dudar, lo mejor es usar la ayuda que nos ofrece el programa de configuración que hayamos elegido.

No perder la paciencia nunca ;-)

Momentos en los que tenemos que tener cuidado

No podemos intentar que el kernel haga milagros, es decir, si nosotros pretendemos arrancar de un disco SCSI, el soporte para SCSI tiene que ser nativo en el kernel. Puesto que si lo cargamos como módulo ese módulo estará en el disco al que no puede acceder puesto que no ha cargado el módulo ( ¿ suena redundante ?, lo es :-) )

Otro punto a tener en cuenta ( y por lo mismo que el anterior ) es el sistema de ficheros de nuestro directorio /, el soporte para ese sistema de ficheros tiene que estár como nativo en el kernel. Por ejemplo, una buena pauta es poner SIEMPRE el Second Extended Filesystem como nativo, y si luego por ejemplo vamos a querer que nuestra partición / sea en ReiserFS, deberíamos añadir el soporte para ReiserFS de forma nativa y no como módulo. Si luego vamos a querer montar ciertos tipos de particiones, pues añadiremos estos sistemas de ficheros como módulos del kernel que cargaremos sólo cuando los necesitemos. Estos pueden ser módulos como el iso9660 o el módulo vfat que nos permitirán montar CDROMs y particiones Windows respectivamente.

Las Grabadoras

Un punto un poco especial son las grabadoras. Tanto si tenemos una grabadora IDE como si nuestra grabadora es SCSI deberemos activar los módulos sg y si tenemos grabadora o CD-Rom IDE activaremos también el soporte para la emulación IDE-SCSI con el módulo ide-scsi. Sería conveniente leer también el Grabadoras-COMO que se encuentra aquí http://www.insflug.org/COMOs/Grabadoras-Como/Grabadoras-Como.html

Capítulo 3. Empieza la parte "pesada"

Ya tengo mi kernel configurado, ¿ y ahora ?

Ahora tendremos que hacer varios pasos:

  • make mrproper

  • make dep

  • make clean

  • make bzImage

  • make modules

  • make modules_install

Preparando realmente la compilación

Ahora es el momento en el prepararemos las dependencias de lo que vamos a compilar y limpiaremos alguna posible compilación previa, make hará el trabajo por nosotros.

Si es la primera vez que compilamos el kernel, o si queremos hacer una compilación absolutamente desde 0, deberíamos ejecutar el siguiente comando:

posidon:/usr/src/linux-2.4.18# make mrproper
( ... mucha información ... )
posidon:/usr/src/linux-2.4.18# make dep
( ... mucha información que no nos es relevante ... )
			

En caso de no recibir ningún error seguiremos con la limpieza de alguna previa compilación

posidon:/usr/src/linux-2.4.18# make clean
( ... mucha información que no nos es relevante ... )
                        

Compilando el kernel propiamente

Una vez tenemos todo preparadito nos disponemos a compilar el kernel en una imágen comprimida del mismo:

posidon:/usr/src/linux-2.4.18# make bzImage
( ... mucha información sobre la compilación ... )
                        

Si todo ha ido bien, tendremos nuestra imagen del kernel bajo el directorio /usr/src/linux-2.4.18/arch/i386/boot llamada bzImage

Compilando e instalando los módulos del kernel

Una vez ha terminado el kernel de compilarse y contando con que no haya dado ningún problema. ( Si lo configuramos bien no tiene porqué darlos ;) ) Nos disponemos a compilar e instalar los módulos de nuestro nuevo kernel.( Si no elegimos NADA como módulo nos podemos saltar esta sección ).

posidon:/usr/src/linux-2.4.18# make modules
( ... información sobre la compilación ... )
                        

Si los módulos se han compilado bien, seguiremos con su instalación

posidon:/usr/src/linux-2.4.18# make modules_install
( ... información sobre la instalación ... )
                        

Capítulo 4. La hora de la verdad

Poniendo las cosas en su sitio

Ya tenemos nuestro nuevo kernel, ahora vamos a poner las cosas donde las pueda encontrar nuestro gestor de arranque ( aquí trataremos GRUB y LiLO ).

posidon:/usr/src/linux-2.4.18# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.18
posidon:/usr/src/linux-2.4.18# cp System.map /boot/System.map-2.4.18
                        

Preparando las cosas para el momento final

Ahora nos falta configurar muestro gestor de arranque, para LiLO añadiremos algo como al fichero /etc/lilo.conf:

image=/boot/vmlinuz-2.4.18
	label=GNU/Linux(nuevo)
                        

Una vez hecho esto comprobamos que nuestro fichero de LiLO está bien con la siguiente orden:

posidon:/usr/src/linux-2.4.18# lilo -t

Added Linux
Added Linux-2.4.18 *
Added FreeBSD
The boot sector and the map file have *NOT* been altered.

                        

Si no observamos ningún error, entonces ejecutamos lilo para que se instale como gestor de arranque:

posidon_/usr/src/linux-2.4.18# lilo

Added Linux
Added Linux-2.4.18 *
Added FreeBSD

                        

Y para GRUB poner nuestra partición en donde pone root (hd0,4):

title GNU/Linux (nuevo)
root (hd0,4)
kernel /boot/vmlinuz-2.4.18 root=/dev/hda5
                        

Ahora cruzamos los dedos y reotamos nuestra máquina

¿Y a partir de aquí?

Lo único que nos queda hacer es ejecutar el comando depmod -a la primera vez que iniciemos nuestro nuevo kernel para que las dependencias se ajusten.

Apéndice A. Notas sobre el autor

Ferdy es estudiante de 1º de Bachillerato en el I.E.S Diego Velázquez. Conoció Linux hace un tiempo, pero no se metió de lleno con él hasta el año pasado desde entonces dejó cualquier otro SO de lado para dedicarse a fondo en Linux. El autor conoce a fondo PHP y MySQL y se dedica a ayudar a los principiantes en el canal #php del IRC-Hispano. Podeis encontrarle en www.ferdyx.org

Apéndice B. ZonaSiete.ORG

En ZonaSiete.ORG tomamos parte un grupo de usuarios de Linux de habla hispana. Pretendemos crear un site con un manual y diversa información de un modo "eminentemente práctico" y en castellano. Intentamos recopilar información sobre la mayor diversidad de partes de Linux posible, pero tampoco pretendemos profundizar demasiado en ninguno de los temas. La documentación que nosotros escribimos busca agrupar información para formar usuarios, que sepan hacer cualquier cosa con su sistema Linux, sin necesidad de saber en la mayoría de los casos "por qué esto se hace así".Simplemente pretendemos que se sepa "esto se hace ASÍ para conseguir esto otro", que es lo que a la mayoría de usuarios de este sistema puede interesar.

Que los usuarios hagan de sus sistemas Linux un mundo de posibilidades, eso es lo que buscamos con nuestro esfuerzo (y con el tuyo si quieres colaborar), esperamos llevarlos por el camino correcto.