Como Compilar un kernel Linux en 10 pasos

Licencia de Creative Commons
Autor: Sergio Belkin. Este obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 4.0 Internacional.

Advertencia

El kernel que viene con las distribuciones es suficiente para la mayoría de los casos. Usar un kernel compilado a mano puede dejar el sistema inusable sino se realiza correctamente. No debería usarse en sistemas en producción salvo que se sepa exactamente qué, por qué y para qué se hace. Hay distribuciones que limitan o no proveen el soporte en sistemas Linux con kernels compilados a mano. Siempre es recomendable hacer un backup tanto del directorio /boot como del directorio /lib/modules.

Motivación

Si no has leído la Advertencia por favor no sigas. Leela detenidamente y seguimos. ¿Ya está? ¡OK! ¿Por qué compilar un kernel hoy en 2020? Un razón es que al compilar se puede aprender que funcionalidades proporciona el kernel, deshabilitar funciones que sabemos no vamos a usar, probar nuevas características ausentes en la versión del kernel de la distribución y también para entender más cómo trabaja el sistema operativo. Este how-to ha sido probado tanto en Debian 10 como en CentOS 8. En una máquina con 2GB y un único procesador llevaría menos de una hora hacerlo (obviamente cuantos más sean los módulos o componentes agregados más va a tardar). Recordar que se puede compilar como un ususuario común y luego pedir privilegios de root para instalar. Basta de palabras y manos a la obra.

1. Instalar los pre-requisitos

yum groupinstall "Development Tools" && yum install ncurses-devel zlib-devel binutils-devel elfutils-libelf-devel libkcapi-hmaccalc openssl-devel

En Debian, deberíamos instalar:

apt -y install build-essential libncurses-dev

2. Bajar las fuentes del kernel

Recomendable bajar o la rama Longterm o bien la Stable, por ejemplo:

curl -L -O https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.8.15.tar.xz

3. Desempaquetar las fuentes

tar avxf linux-5.8.15.tar.xz

4. Entrar en el directorio de las fuentes

cd linux-5.8.15

5. Tomar como referencia el kernel que estamos usando

cp /boot/config-$(uname -r) .config

6. Tomar como base los módulos del kernel que están en uso actualmente 😉 😉

make localmodconfig

(Le damos Enter hasta que termine)

7. Configuramos nuestro kernel a medida

make menuconfig

Esta parte es la más importante. Podemos dejar todo como está pero probablemente haya algo que no estamos usando que no se va a compilar y necesitaremos después. Entonces es importante recorrer algunas secciones para revisar si falta algo, en especial lo que tiene que ver con Netfilter, File Systems, etc . Por ejemplo: tomar los recaudos suficientes si el sistema está virtualizado o si usa containers.

Una vez hecho los ajustes necesarios, guardamos y salimos.

8. Compilamos el kernel

make

9. Instalamos los módulos del kernel con privilegios de root

sudo make modules_install

10. Instalamos el kernel con privilegios de root

sudo make install

¡Listo! Podemos reiniciar y comenzar a usar el kernel compilado por nosotros mismos.

Comentarios

Comments powered by Disqus