Cómo construir e instalar un kernel personalizado en Ubuntu

La idea de compilar tus propios kernels infunde miedo en los corazones de los nuevos usuarios de Linux. Suena aterrador, construir la parte más crucial de tu sistema desde cero. La verdad es que, sin embargo, construir el kernel de Linux en Ubuntu es realmente fácil.
Construir kernels de Linux no requiere programación. Algunos de los mejores programadores del mundo ya han escrito todo el código. Solo tienes que elegir las características que deseas y juntar todo. Aquí te mostraremos cómo construir e instalar un kernel personalizado en Ubuntu.
Tabla de Contenidos
- Obtener las dependencias
- Obtener la fuente del kernel para Ubuntu
- Configurando tu construcción
- Configurando el kernel de Ubuntu
- Construyendo paquetes del kernel para Ubuntu
- Instalando el kernel
- Instalando kernels binarios personalizados
- Instalando Mainline en Ubuntu
- Usando Mainline
También lee: Cómo degradar el kernel en Linux
Obtener las dependencias
Antes de que toques un kernel, necesitas las herramientas adecuadas para construirlo. Usa el comando a continuación para descargarlas de los repositorios de Ubuntu.
sudo apt install wget build-essential bison flex libncurses-dev libssl-dev libelf-devObtener la fuente del kernel para Ubuntu
Ahora puedes obtener la fuente que deseas construir. Todos los kernels están disponibles en los repositorios oficiales de Linux. Puedes echar un vistazo a las últimas versiones en su repositorio cdn. En el momento de este artículo, la última es 5.16. Puedes descargar usando los comandos:
cd /home/$USER/
mkdir kernelbuild
cd kernelbuild
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.16.19.tar.xz
Tomará un tiempo descargar el kernel, así que ten paciencia.
Configurando tu construcción
Comienza tu configuración descomprimiendo el archivo tar del kernel. Luego, copia la configuración de tu kernel existente en él.
tar xavf linux-5.16.19.tar.xz && cd ./linux-5.16.19
cp /boot/config-`uname -r` .configAhora tienes que adaptar la configuración antigua al nuevo kernel.
make oldconfigEste script te preguntará qué hacer con cada nueva característica. Si deseas usar los valores predeterminados, usa make olddefconfig en su lugar.
También lee: Cómo construir una nueva PC para Linux
Configurando el kernel de Ubuntu
Puedes dejar tu configuración tal como está, y probablemente estarías bien. Sin embargo, no tiene sentido construir un kernel personalizado si no lo vas a personalizar.
Para personalizar tu configuración, ejecuta
make menuconfig
Se abrirá un menú azul con una lista de categorías. Esas categorías contienen características que puedes seleccionar para construir en tu kernel.

Por ejemplo, si realmente deseas construir soporte para el sistema de archivos BTRFS directamente en el kernel y habilitar otras características, irías a “Sistemas de archivos ->”. Luego, desplázate hacia abajo hasta donde veas “Soporte para el sistema de archivos Btrfs.” Selecciona la opción que deseas y presiona la barra espaciadora. La barra espaciadora alterna entre “M”, “*” y vacío.
- “M” significa que la característica se construirá como un módulo que se cargará si es necesario cuando Ubuntu arranque.
- “*” significa que la característica se construirá en el kernel y siempre se cargará.
El script no incluye opciones en blanco en el producto final. Cuando termines de configurar las cosas, limpia el directorio.
make cleanAhora tu kernel está listo para ser construido.
Construyendo paquetes del kernel para Ubuntu
Hay un método en Ubuntu para construir sus kernels, pero te obliga a usar scripts escritos para versiones anteriores. A veces eso está bien; otras veces se rompe horrible. Por lo tanto, generalmente es mejor usar el método más genérico de Linux con GNU make.
make -j `getconf _NPROCESSORS_ONLN`
make deb-pkg LOCALVERSION=-customTodo lo que hace esa línea es compilar el kernel en paquetes .deb usando la cantidad de núcleos de CPU en tu sistema más uno. También agrega “custom” al final de la versión del paquete para diferenciar tu kernel personalizado de otros.
Nota: Puede tomar hora(s) compilar un kernel. Ten paciencia.
Instalando el kernel
Encontrarás tus nuevos paquetes del kernel un directorio arriba. Serán fácilmente identificables por su número de versión. Puedes usar dpkg para instalarlos.
cd ./../
sudo dpkg -i linux-firmware-image-5.16.19-custom_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-libc-dev_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-headers-5.16.19-custom_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-image-5.16.19-custom-dbg_5.16.19-custom-1_amd64.deb
sudo dpkg -i linux-image-5.16.19-custom_5.16.19-custom-1_amd64.debCuando la instalación termine, reinicia tu computadora. Ubuntu arrancará automáticamente en tu nuevo kernel. Puedes verificar que lo hizo ejecutando uname -r en una terminal cuando arranque.
Instalando kernels binarios personalizados
Otra forma de usar kernels de Linux personalizados en Ubuntu es instalando una versión binaria precompilada de él. A diferencia de la versión basada en fuente, estas son copias del kernel que ya han sido compiladas para el sistema y la arquitectura que estás ejecutando.

Además, los kernels binarios personalizados también pueden proporcionarte la flexibilidad de poder saltar entre versiones de kernel para tu instalación de Ubuntu. Esto puede ser especialmente útil si estás ejecutando una máquina con problemas de compatibilidad de hardware y no deseas lidiar con compilar tu propio kernel.
Sabiendo eso, la forma más popular de instalar kernels binarios personalizados es a través de Mainline. Este es un programa GUI desarrollado por bkw777 que tiene como objetivo simplificar el proceso de instalación de un kernel de Linux.

En eso, este programa combina todos los pasos que necesitas seguir para descargar y configurar correctamente el kernel. Por ejemplo, Mainline te permite seleccionar fácilmente un binario de kernel y un encabezado que deseas instalar. Luego, mantendrá esta versión en una caché desde donde puedes cargar fácilmente siempre que la necesites.
También lee: 5 herramientas para crear fácilmente una distribución de Linux personalizada
Instalando Mainline en Ubuntu
Con eso, instalar Mainline es relativamente fácil. Primero, necesitas decirle a apt que incluya el repositorio de paquetes de Mainline. Para hacer eso, puedes ejecutar el siguiente comando desde tu Terminal:
sudo add-apt-repository ppa:cappelikan/ppa
Desde aquí, necesitas actualizar el directorio de paquetes de Ubuntu. Esto permitirá que apt lea desde el repositorio que acabas de agregar y, a su vez, te permitirá descargar Mainline a través de él:
sudo apt updateCon eso, lo único que queda por hacer es instalar Mainline en sí:
sudo apt install mainline
Usando Mainline
Una vez hecho esto, ahora puedes cargar Mainline yendo a tu menú de aplicaciones y buscándolo. El programa Mainline se cargará y mostrará todos los paquetes de kernel que puedes instalar para tu sistema.

Desde allí, puedes seleccionar e instalar la versión del kernel que deseas usar para tu sistema. Por ejemplo, puedo seleccionar “Linux 5.16.19” y hacer clic en Instalar en la barra lateral derecha para cargar completamente esta versión del kernel en mi máquina.

Por otro lado, también puedo usar Mainline para eliminar los kernels que ya no deseo usar. Por ejemplo, puedo seleccionar “Linux 5.15” y hacer clic en Eliminar en la misma barra lateral derecha para eliminar este kernel de mi sistema.

Hacerlo de esta manera te permite agregar o eliminar de manera limpia cualquier archivo y binarios que estén vinculados con esa versión del kernel. Esto se debe a que un binario de kernel también incluye las bibliotecas, encabezados y firmware que, a su vez, le permiten funcionar correctamente.
También lee: Cómo solucionar el error de verificación de seguridad del kernel en Windows 10
Preguntas Frecuentes
¿Cuáles son los problemas de ejecutar un kernel personalizado?
Uno de los mayores problemas de ejecutar un kernel personalizado es que estás sacando una pieza vital de tu sistema de las actualizaciones regulares. Esto significa que necesitas instalar manualmente todas las actualizaciones del kernel a partir de este momento. Estas incluyen características de hardware adicionales, así como actualizaciones de seguridad críticas.
Esto puede ser un problema si necesitas un sistema que funcione y se mantenga solo con una intervención mínima del usuario. Como tal, ejecutar un kernel personalizado no solo requiere que sepas qué características del kernel deseas, sino también estar al tanto de las actualizaciones críticas.
¿Hay desventajas en usar un binario de kernel?
Sí. Una de las principales desventajas de usar un binario de kernel es que no tienes control sobre sus características integradas. Esto significa que, a diferencia de un kernel basado en fuente, un binario de kernel no contendrá ninguna optimización y soporte específico de hardware.
Esto significa que si tienes la intención de usar piezas de hardware exóticas con Ubuntu. Necesitarás compilar tu kernel desde cero.
¿Es mejor compilar una característica del kernel como un módulo o como integrado?
Esto depende en gran medida de lo que deseas usar tu kernel. Por ejemplo, compilar una característica como integrada asegurará que se cargue inmediatamente una vez que el kernel se cargue en la memoria. Sin embargo, hacerlo de esta manera aumentará el tamaño total del kernel final.
Mientras tanto, compilar una característica como un módulo la eliminará del kernel base. En su lugar, este módulo se carga una vez que el kernel ya está en memoria. Esto reduce el tamaño del archivo del kernel final, lo que a su vez lo hace rápido y seguro.
Sabiendo eso, es una buena práctica compilar características del kernel como integradas, ya que reduce las posibilidades de cualquier problema de compatibilidad en tu sistema. Sin embargo, también debes tener cuidado de no incluir demasiadas características, ya que hacerlo aumentará significativamente el tamaño total de tu kernel.