Como compilar el Kernel en Linux 

Documento de Referencia, para kernel 2.6.2x 

Por Marcelo Opazo Vivallos 

 

El presente documento describe la forma de proceder para la compilacion de un kernel sobre una maquina local Linux. La distribucion en cuestion es Debian Etch, aunque la manera de proceder se aplica a cualquier distribucion. Se Obviara comentarios triviales y estara dirigido solo a lo medular del proceso.

Es recomendable que se utilicen las normas estandares y establecidas por kernel.org para compilarlo y no utilizar las herramientas que traen las distribuciones en particular. Esto debido a que nos facilita la tarea para la emigracion a otras distribuciones en el caso de ser necesario.

Una vez satisfecha todas las dependencias, lo verficamos mediante:

#make mrproper && make clean

Esto ademas limpia y vuelve por defecto los valores asignados en la configuracion del kernel.

Lo siguiente es configurar las variables asociadas. Es recomendable menuconfig frente a otras interfaces, debido a que nos ofrece la posibilidad de activar/desactivar las opciones a traves de una interfaz en ncurses (texto), ya que el entorno grafico no siempre lo tendremos disponible

#make menuconfig

Un alcance es, saber que opciones manipular y que opciones dejar como modulos y cuales incluidas en la imagen del kernel. La diferencia radica en que la primera es capaz de insertarse en el kernel como modulo y en caliente <M> (insmod y delmod). La otra se incluye como parte del kernel y por ende es aconsejable dejar solo lo necesario como parte del kernel (*) para que no quede un nucleo muy pesado.

Las opciones que recomiendo verificar son las que identifican nuestro procesador. Aca podremos sacar el maximo de provecho. En mi caso, con mi antiguo kernel algunos procesos en instantes dados llegaban al %100 al ser ocupados por "procesos de E/S", caso que despues de actualizar y configurar la variable correspondiente se soluciono.

Una vez cumplida la etapa anterior, realizamos la compilacion propiamente tal:

#make

Instalamos el nuevo kernel

#make install

Fijarse en los ultimos mensajes donde deja el nuevo kernel, generalmente en /boot/vmlinuz-2.6.2x . Este luego lo tienes que agregar en tu gestor de arranque. Los archivos que copia son:

  • System.map-2.6.x
  • config-2.6.x
  • vmlinuz-2.6.x

  • Por otra parte, si instalamos nuevos modulos o si activamos RamFS o initrd (suspender o hibernar), debemos indicarlo con la siguiente instruccion:

    #make modules

    #make modules_install

    Esto nos creara la entrada que aplicamos con la instrucion mkinitrd en /lib/modules/2.6.x
          • #cd /boot && mkinitramfs -o initrd.img-2.6.x 2.6.x
          • Por lo cual deberas deberas agregar la entrada correspondiente en tu Gestor de arranque. En Grub es como la siguiente:

[...]

title Debian GNU/Linux, kernel 2.6.24

root (hd0,2)

kernel /boot/vmlinuz-2.6.x root=/dev/sdax ro quiet

initrd /boot/initramfs-2.6.x

savedefault

[...]

Tomamos la precaucion de no borrar ninguno de las entradas anteriores en caso de alguna falla.

Reiniciamos, verificamos que todo ande bien en los logs, dmesg, message, etc. De ser asi, ya tenemos nuestro kernel andando. Lo puedes verificar con uname -a