La mayoría de gente piensa que la compilación del kernel es un proceso complicado y duro de llevar a cabo, pero si tenemos ciertos conceptos claros nos resultará mucho mas fácil, el kernel no es más que un recopilatorio de drivers para nuestro hardware. Con su compilación conseguiremos un menor footprint en cuanto a consumo de RAM ya que no cargaremos drivers de hardware del que no disponemos.
Después de estas aclaraciones ya estamos en condiciones de continuar, lo primero será averiguar que HW tenemos instalado en nuestra máquina, comandos útiles para este fin pueden ser:
- dmesg –> imprime por pantalla todos los mensaje de arranque del sistema.
- lspci –> nos muestra información referente a los dispositivos conectados a los puertos PCI.
Las fuente del kernel se pueden obtener de diferentes modos:
- Sources de la distro:
emerge -av gentoo-sources - Vanilla sources:
http://www.kernel.org
Descomprimimos las fuentes y generamos un enlace simbólico a estas:
ln -s /usr/src/KERNEL linux
Procedemos con la configuración:
make menuconfig
Habrá opciones que no sepamos para que sirven, podemos leernos el help pero yo recomiendo meter en una primera compilación todo lo que no se sepa y luego ir depurándolo.
Las opciones se pueden compilar de dos formas distintas :
- En el propio kernel –> Drivers necesarios para el arranque del SO
- Como módulo –> Drivers que utilicemos sólo de forma esporádica
NOTA: Si sufres de paranoia extrema puedes decidir compilarlo todo dentro del kernel y deshabilitar la posibilidad de carga de módulos, de este modo ya no será posible la utilización de la mayoría de rootkis en nuestro sistema.
IMPORTANTE: Nunca, pero nunca poner como módulo drivers que le hagan falta al sistema para arrancar como por ejemplo el sistema de ficheros de la partición raíz del sistema o el driver IDE, SATA………….
Cuando se tenga todo listo se procederá a salir y guardar los cambios.
Compilamos e instalamos la imagen del kernel y los módulos:
Configuramos GRUB para poder arrancar el kernel nuevo:
Si es grub 1.97:
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Gentoo Linux 3.4.9
root (hd0,0)
kernel /boot/kernel-3.4.9-gentoo root=/dev/sda3
Cambiando las líneas:
- root() –> Partición donde se tenga boot
- root= –> Partición donde se tenga raíz
grub-install --no-floppy /dev/sda
Si es grub2:
grub2-mkconfig -o /boot/grub/grub.cfg
NOTA: Si es una máquina virtual con disco virtio:
(fd0) /dev/fd0
(hd0) /dev/vda
Reiniciamos y nos aparecerá una entrada nueva en el menú de arranque, seleccionamos esta y ya lo tenemos.
PD: El conocimienro humano pertenece al mundo ;)