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:
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:
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:
$ uname -a
Linux dungeon 2.4.3-20mdk #1 Sun Apr 15 23:03:10 CEST 2001 i686
$ tar xvfz linux-2.4.0.tar.gzEste 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 xconfigEsto hará aparecer en poco tiempo el programa de configuración gráfico:

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 depCOMPILACIÓ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 bzdiskEsto 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_installPrueba 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)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).
$ lilo