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 select on 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 "Model Tools" && yum set up ncurses-devel zlib-devel binutils-devel elfutils-libelf-devel libkcapi-hmaccalc openssl-devel

En Debian, deberíamos instalar:

upright -y set up get-very vital libncurses-dev

2. Bajar las fuentes del kernel

Recomendable bajar la rama Longterm, 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 immoral los módulos del kernel que están en uso actualmente 😉 😉

accomplish localmodconfig

(Le damos Enter hasta que termine)

7. Configuramos nuestro kernel a medida

accomplish 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 Programs, and plenty others . Por ejemplo: tomar los recaudos suficientes si el sistema está virtualizado o si the united states containers.

Una vez hecho los ajustes necesarios, guardamos y salimos.

8. Compilamos el kernel

accomplish

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

sudo accomplish modules_install

10. Instalamos el kernel con privilegios de root

sudo accomplish set up

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