Skip to content
Compila tu propio kernel Linux en ArchLinux y añádelo a GRUB
Linux Par Adrien

Compila tu propio kernel Linux en ArchLinux y añádelo a GRUB

Los núcleos Linux suministrados por las distribuciones están diseñados para funcionar en todas partes, desde una distribución Linux para un viejo portátil hasta la última máquina de producción. Este enfoque universal tiene un precio: montones de controladores, sistemas de archivos y subsistemas que nunca utilizarás. Un núcleo más grande y complejo y una superficie de ataque innecesariamente grande. Compilar un kernel minimalista, adaptado a tu hardware y a tus necesidades, no sólo reduce esta complejidad, sino que también mejora la estabilidad, la seguridad y el rendimiento de un servidor de alto rendimiento.

¿Qué es un núcleo minimalista?

Un kernel minimalista es un kernel Linux recompilado que sólo conserva los elementos estrictamente necesarios para el funcionamiento de la máquina de destino. Sólo se integran los controladores correspondientes al hardware realmente presente (tarjeta de red, controlador de almacenamiento, procesador, etc.) y los sistemas de archivos utilizados (ext4, xfs, btrfs, según proceda). Todo lo demás (módulos no utilizados, controladores, subsistemas irrelevantes) se desactiva.

Las distribuciones de consumo o servidor ofrecen un kernel universal capaz de arrancar en casi cualquier hardware. Por ello, incluye miles de controladores y opciones para cubrir el mayor número de casos posible. Un kernel personalizado, en cambio, sólo se dirige a un entorno bien definido, y es más ligero, compacto y predecible.

Un kernel minimalista puede ser útil en un servidor dedicado que solo necesite su tarjeta de red y almacenamiento NVMe, un dispositivo de red optimizado para enrutar o filtrar tráfico de muy alta velocidad, o una máquina virtual especializada en la que sepas de antemano qué periféricos se presentarán al hipervisor. En todos estos escenarios, un kernel minimalista ofrece mayor estabilidad, seguridad y rendimiento.

¿Cómo se compila un núcleo Linux personalizado?

En primer lugar, hay que instalar las herramientas necesarias para la compilación. Estos paquetes incluyen el compilador, las bibliotecas esenciales y utilidades :

sudo pacman -S --needed base-devel git bc cpio ncurses libelf pahole llvm clang

Puede descargar el código fuente oficial directamente desde el repositorio Git de Linus Torvalds:

git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

En lugar de partir de cero, utilizamos la configuración del núcleo que ya está en uso en su sistema. Esto te permite partir de una base estable y adaptada a tu hardware:

cd linux
zcat /proc/config.gz > .config 2>/dev/null || cp /usr/lib/modules/$(uname -r)/build/.config .config

El kernel evoluciona rápidamente, algunas opciones aparecen, otras desaparecen. El siguiente comando ajusta automáticamente el archivo .config a la versión que acabamos de descargar:

make olddefconfig

En este caso, vamos a pedir al sistema que conserve sólo los controladores realmente utilizados por la máquina. El kernel generado de esta forma será más ligero, pero no podrá ejecutarse en otra máquina.

make localmodconfig

Ejecutamos la compilación, utilizando todos los núcleos disponibles.

make -j"$(nproc)"

A continuación lanzamos la compilación. La opción -j»$(nproc)» permite utilizar todos los núcleos disponibles del procesador para acelerar el proceso:

sudo make modules_install

Copie el binario del kernel con un nombre personalizado (vmlinuz-archeasy).

sudo make install

Para evitar confusiones con el núcleo genérico proporcionado por la distribución, renombramos el núcleo compilado a vmlinuz-archeasy:

sudo cp /boot/vmlinuz /boot/vmlinuz-archeasy

El siguiente paso es crear un mkinitcpio preset, es decir, un archivo de configuración que genere automáticamente el initramfs asociado a nuestro kernel personalizado:

sudo tee /etc/mkinitcpio.d/archeasy.preset >/dev/null << 'EOF'
ALL_config="/etc/mkinitcpio.conf"
ALL_kver="/boot/vmlinuz-archeasy"

PRESETS=('default' 'fallback')

default_image="/boot/initramfs-archeasy.img"
default_options="-S detección automática"

fallback_image="/boot/initramfs-archeasy-fallback.img"
fallback_options=""
EOF

Ahora generaremos el initramfs correspondiente a este preset:

sudo mkinitcpio -p archeasy

Para que el nuevo kernel sea reconocido en el arranque, la configuración de GRUB debe ser regenerada:

sudo grub-mkconfig -o /boot/grub/grub.cfg

Cuando reinicie, vaya a Opciones Avanzadas en el menú de GRUB. Allí encontrará su kernel compilado bajo el título :

Arch Linux, con Linux archeasy.

Ahora puedes probar este kernel minimalista mientras mantienes el kernel genérico como copia de seguridad.

¿Por qué compilar un núcleo minimalista?

Compilar un kernel minimalista bajo ArchLinux no es sólo un ejercicio técnico, es una forma de recuperar el control sobre tu sistema. Al eliminar todo lo innecesario, obtienes un núcleo que es más rápido de arrancar, más predecible en su comportamiento y, sobre todo, más seguro, porque cada línea de código que eliminas representa un fallo potencial menos.

Este tipo de optimización se adapta perfectamente a entornos exigentes: servidores de alto rendimiento, dispositivos de red o sistemas desplegados en contextos sensibles. En estas situaciones, la ligereza y la fiabilidad se anteponen a la polivalencia. Como dice el refrán: «Menos código significa menos errores y, por tanto, menos vulnerabilidades».

Les autres lecteurs ont aussi consulté :

Ads Blocker Detected

Bloqueador de anuncios detectado

Para acceder a todo nuestro contenido, por favor, desactiva tu bloqueador. Lo entendemos, los anuncios pueden ser molestos. Pero aquí, nos permiten pagar los servidores y remunerar a los expertos que escriben nuestros artículos.