Iniciación a la compilación del núcleo
Autor: Felipe González Hernandez 2001 v 1.0

Introducción
Para los usuarios que vienen de sistemas operativos comerciales la idea de compilar el núcleo, que en definitiva es compilar el código del sistema operativo para obtener de nuevo otro nuevo núcleo, es que debe ser algo solo apto para programadores expertos. Nada más lejos de la realidad.Para poder compilar el núcleo hay que cumplir una serie de requisitos:

Quizás te preguntes que utilidad tiene compilar el núcleo, podríamos vernos obligados a compilar el núcleo en infinidad de situaciones pero resumiendo:


Instalación de los fuentes
Primero debemos saber que versión del sistema operativo(del núcleo) tenemos en nuestro sistema para ello usaremos en cualquier shell:

 
$ uname -a
Linux dungeon 2.4.3-20mdk #1 Sun Apr 15 23:03:10 CEST 2001 i686
En el ejemplo se trata de la versión 2.4.3, al final podemos ver para que cpu se encuentra compilada en este caso para un i686. Es posible que al instalar la distribución instalaramos los ficheros fuentes del núcleo. Pero por si no se acuerda para saber si tenemos las fuentes instaladas podemos seguir los siguientes pasos:
  1. Posicionarnos en el directorio /usr/src usando cd o mediante una utilidad gráfica.
  2. Hacer un listado (ls) y ver si hay un directorio del tipo linux-2.x.x y posicionarnos en el. (generalmente hay un enlace hacia él con el nombre de linux a secas)
  3. Con otro listado observar que hay una serie de directorios como drivers o kernel y varios archivos entre ellos un Makefile.  Si es así  aquí se encuentran todos el código del sistema operativo por ejemplo en  drivers/cdrom/cdrom.c esta el driver de las unidades de cdrom. Ojea por los diferentes directorios y mira el código que quieras pero no borres ni modifiques ningún archivo.
Si no se ha encontrado el directorio apropiado es que no se tiene instalado los ficheros fuentes, para ello debemos usar el gestor de paquetes de tu distribución y instalarlo desde el cd.  También lo podemos encontrar como un fichero tar comprimido por ejemplo linux-2.4.0.tar.gz. En este caso lo copiamos al directorio /usr/src y desde alli usamos:
$ tar xvfz linux-2.4.0.tar.gz
Este comando crea los directorios y los ficheros necesarios de los que ya se han mencionado antes. Se puede conseguir la última versión del kernel desde Internet ( Núcleo Kérnel )  o en los cd de regalo de las revistas que traten de Linux.
 

Ya tengo el núcleo ¿y ahora qué?
Antes de ponerse a compilar como un loco hay que tener claro algunas cosas. En Linux es en el kernel donde se encuentran todos los drivers del sistema tanto si son usados como no. Por ello surgieron los módulos. Un módulo no es en este caso un archivo de música sino un driver o parte del kernel que se compila de manera que no resida en él, sino que sea cargado cuando el usuario lo necesite (vamos como los drivers de Ms-Dos para entendernos). El uso del módulos nos permite ahorrar la memoria que ocupa el núcleo, ya que de no haber módulos el núcleo sería demasiado grande y no podría ser cargado al inicio. Por ello antes de compilar hay que configurar como va a ser la compilación seleccionando cpu, drivers y drivers en módulos, y que cosas inútiles para nosotros no va ha tener el núcleo. Para comenzar la configuración, entramos al sistema como root y desde el directorio de las fuentes /usr/src/linux-2.x.x tecleamos desde un emulador de terminal del modo gráfico (vale cualquiera rxvt, terminal Gnome...):

$ make xconfig
Esto hará aparecer en poco tiempo el programa de configuración gráfico:
 
 

Imagen del programa de configuración

Como podemos ver en la figura hay muchos apartados de configuración, y en cada versión aparecen más, hay que ir uno por uno para no dejarnos ningún apartado por configurar. Cada apartado tiene tres o dos opciones,  y(selecciona el driver y lo incluye dentro del núcleo),  m(selecciona el driver pero lo utiliza como un módulo) y n(no lo selecciona). Si tienes el dispositivo pon m(esto reduce espacio, pero hay drivers que no pueden  estar en módulos) si estas seguro de que no te hace falta le das a n. La descripción de cada driver  se escapa del objetivo de este documeto, pero comento los puntos más conflictivos:



Solo he intentando guiar un poco al lector, la configuración del núcleo no debe ser tomada a la ligera, tomate tu tiempo navegando por todos los apartados ya que si has cargado demasiado el núcleo no habrá espacio para poder cargarlo al principio. Lee todos los help que puedas.  Cuando termines de configurar guarda tu configuración para poder modificarla en el futuro mediante el botón de Store configuration. Esto permite cargarla para modificarla si hemos cometido errores. Y antes de salir pulsar Save and exit, de lo contrario no se actualiza la configuración.
 

Compilar y ... rezar
Empieza lo duro, dependiendo de la CPU puede ser un proceso largo o no durar más de 15 minutos. Paso a paso hay que ir haciendo:

CREACIÓN DE LAS DEPENDENCIAS: en este paso se crean las dependencias necesarias para la compilación con la configuración que hemos elegido. Para hacer esto hay que hacer desde un terminal (como usuario root por supuesto):
 

$ make dep
COMPILACIÓN: pues eso a compilar, para ello utilizaremos una forma para que el núcleo quede comprimido. Pon un disco en blanco en la disquetera y usa:
$ make bzdisk
Esto compila el nuevo núcleo y lo copia en /usr/src/linux/arch/i386/boot/ con el nombre de bzImage o zImage si todo ha ido bien, además copiará el nuevo núcleo al disquete que esta en A: (debe ser de alta densidad) que se convertirá en disco de arranque. Esto nos permitirá probar el nuevo núcleo para ver si funciona primero, y para probar los drivers que le hemos añadido después antes de borrar el kernel anterior. Pasamos a compilar todos los drivers que seleccionamos como modulos y que son externos al núcleo para ello:
$ make modules ; make modules_install
Prueba a arrancar el ordenador con el disco de arranque para ver si todo a ido bien. Si ves algo que quieras modificar o hay dispositivos que no funcionan bien, saca el disco entra como root y vuelve a cambiar la configuración. Por último y si todo ha ido bien solo falta modificar el LILO para que arranque con el nuevo núcleo:
$ cp /usr/src/linux/arch/i386/boot/zImage   /vmlinuz      (puede que en vez de zImage sea bzImage)
$ lilo
Reinicia el sistema y observa como arranca tu ordenador con tu flamante nuevo núcleo. Puedes saltarte lo del disco de arranque pero puede tener consecuencias desastrosas. El fallo más común es sobrecargar el núcleo, lo que hará que no aparezca el fichero bzImage o que si aparezca no funcione bien (por eso lo del disco de arranque).
alojamiento web gratis
Otros servicios ofrecidos por HispaVista:
Inmobiliaria y Dominios
Consigue una página web gratis o un
alojamiento web profesional con Galeón