CÓMO COMPILAR E INSTALAR UN KERNEL PERSONALIZADO PARA DEEPIN OS

KERNEL PERSONALIZADO
COMPILAR E INSTALAR UN KERNEL PERSONALIZADO PARA DEEPIN

ADVERTENCIA

NO INTENTES ESTE TUTORIAL HASTA NO HABERLO LEÍDO EN SU TOTALIDAD

Compilar un kernel personalizado es una de las experiencias más gratificantes para los entusiastas de GNU/Linux y los administradores de sistemas. Si bien el kernel predeterminado de Deepin funciona bien para la mayoría de los usuarios, existen razones convincentes para crear nuestro kernel propio. Esta guía completa le guiará a través de todo el proceso, desde la descarga del código fuente hasta el arranque en su kernel personalizado.

¿QUÉ ES EL KERNEL DE LINUX?

El kernel de Linux es el componente central del sistema operativo Linux, que actúa como interfaz entre el hardware y el software de la computadora. Administra los recursos del sistema, los procesos, la memoria y los controladores de dispositivos, lo que permite que el sistema operativo funcione de manera eficiente.

¿POR QUÉ COMPILAR UN KERNEL PERSONALIZADO?
  1. Optimización del desempeño: Habilitar optimizaciones específicas para su arquitectura, eliminar hardware no específico para la arquitectura para reducir el tamaño del kernel, optimizar el uso de la memoria.
  2. Soporte para Hardware específico: Habilitar drivers para hardware nuevo, agregar soporte a sistemas de archivos experimentales, agregar soporte a procesadores de hardware GPU o CPU.
  3. Refuerzo de la seguridad (Hardening): Habilitar módulos de seguridad, eliminar capas de ataque innecesarias deshabilitando las funciones no utilizadas, aplicar parches de seguridad personalizados, reforzar la seguridad del kernel.
  4. Aprendizaje y desarrollo: Entender como funciona Linux a un nivel más profundo, probar parches del kernel, desarrollar y depurar módulos del kernel, contribuir al desarrollo del kernel.
¿POR QUÉ NO COMPILAR UN KERNEL PERSONALIZADO?
  1. Desinformación: Se tiende a pensar (erróneamente) que cambiar de kernel aportara soluciones mágicas a múltiples problemas que seguramente tengan otro origen.
  2. Desconocimiento: Tú no usas Linux; El Kernel es solo un pequeño componente del sistema operativo que se encarga de traducir instrucciones de otras capas del mismo, al hardware; por lo que la eficiencia a veces está más relacionada a la interacción y cohesión de estos que son los que realmente interactúan con el kernel..
  3. Incompatibilidades: El cambio del núcleo puede generar inestabilidad, pérdida de rendimiento y hasta el colapso completo del sistema al punto de impedir su arranque.
  4. Aprendizaje: Copiar y pegar algunos comandos jamas te transformara en «Usuario Pro» mito muy extendido entre las comunidades. Lo cierto es que para operar entre las casi 34.000 opciones de configuración de un kernel y poder garantizar que su alteración, no repercutirá negativamente en el sistema o las aplicaciones, se requiere de un profesional altamente capacitado y hasta un equipo de ellos.

P U B L I C I D A D

Nuestros anuncios no son intrusivos y nos ayudan a permanecer en línea. Por favor apóyanos por medio de no bloquear los anuncios

REQUERIMIENTOS:
  • Espacio en Disco: Al menos 30 GB libres de espacio.
  • RAM: Al menos 4GB de RAM, recomendado 8 GB +.
  • Tiempo: Dependiendo del Hardware puede llevar desde 30 min. Hasta varias horas.
  • Deepin instalado con acceso a root.
VERSIONES DEL KERNEL:
  • Prepatch: Los kernels Prepatch o «RC» son versiones preliminares del kernel principal que están dirigidas principalmente a otros desarrolladores de kernel y entusiastas de Linux. Deben compilarse desde el código fuente y, por lo general, contienen nuevas características que deben probarse antes de que puedan publicarse en una versión estable. Linus Torvalds mantiene y libera los kernels de prepatch.
  • Mainline: Se les conoce como kernel de Línea Principal (Mainline). El árbol principal es mantenido por Linus Torvalds. Es el árbol donde se introducen todas las características nuevas y donde ocurren todos los desarrollos nuevos y emocionantes. Se lanzan nuevos núcleos principales cada 9-10 semanas.
  • Stable: Después de que se lanza cada kernel de la línea principal, se considera «estable».Cualquier corrección de errores para un kernel estable se realiza desde el árbol principal y es aplicada por un mantenedor de kernel estable designado. Por lo general, solo hay unas pocas versiones de kernel con correcciones de errores hasta que el próximo kernel de la línea principal esté disponible, a menos que se designe un «kernel de mantenimiento a largo plazo». Las actualizaciones estables del kernel se lanzan según sea necesario, generalmente una vez a la semana .
  • Longterm: Soporte a largo Plazo (Long Term Support – LTS). Por lo general, se proporcionan varias versiones del kernel de «mantenimiento a largo plazo» con el propósito de respaldar correcciones de errores para árboles de kernel más antiguos. Solo se aplican correcciones de errores importantes a dichos núcleos y, por lo general, no se ven lanzamientos muy frecuentes, especialmente para árboles más viejos. Este es el más común utilizado por las distros que buscan estabilidad.
INSTALANDO DEPENDENCIAS PARA COMPILACIÓN
  • build-essential: Compilador GCC, make y otras herramientas de compilación
  • libncurses-dev: Requerido para la interfaz menuconfig
  • bison, flex: Parseadores necesarios para la compilación del kernel
  • libssl-dev: Bibliotecas SSL para firma de módulos
  • libelf-dev: Biblioteca ELF para el manejo binario del kernel
sudo apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev
INSTALAR HERRAMIENTAS ÚTILES ADICIONALES
  • bc: Calculadora utilizada en los scripts de compilación del kernel
  • dwarves: Soporte de utilidades DWARF para BTF (Formato de tipo BPF)
  • zstd: Herramienta de compresión para la compresión del kernel
  • git: Control de versiones (útil para obtener código fuente del kernel)
sudo apt install -y bc dwarves zstd git
INSTALAR HERRAMIENTAS PARA CREAR PAQUETES DEB (MÉTODO RECOMENDADO)
  • fakeroot: Simula privilegios de root para la creación de paquetes
  • dpkg-dev: Herramientas de desarrollo de paquetes Debian
sudo apt install -y fakeroot dpkg-dev
INSTALAR HERRAMIENTAS OPCIONALES
  • ccache: Almacena en caché los resultados de compilación para recompilaciones posteriores más rápidas
sudo apt install -y ccache
  • exuberant-ctags: Es una herramienta estándar en el desarrollo del kernel de Linux que se utiliza para generar un índice de entidades de código fuente (funciones, variables, clases). Si bien Exuberant Ctags se usa ampliamente para la navegación general, cscope a menudo se recomienda junto con él para el desarrollo del kernel de Linux porque puede rastrear el uso de símbolos y sus relaciones, lo que ctags por sí solo no puede hacer
  • xz-utils: Herramientas de compresión y descompresión de archivos xz
  • debhelper: Una colección de programas que se pueden usar para automatizar tareas comunes relacionadas con la creación de paquetes Debian
  • console-setup: Este paquete proporciona a la consola el mismo esquema de configuración de teclado que el sistema X
  • libdw-dev: Biblioteca que proporciona acceso a información de depuración DWARF almacenada dentro de archivos ELF. Este paquete contiene bibliotecas de desarrollo y archivos de encabezado para libdw1
sudo apt install -y exuberant-ctags xz-utils debhelper console-setup libdw-dev
DESCARGAR, COMPILAR E INSTALAR EL KERNEL

A continuación vamos a generar la siguiente estructura de directorios para tener organizados nuestros kernels. Esta estructura nos permitirá tener separadas fuentes de archivos compilados. De manera que podamos realizar varias versiones del mismo kernel con diferentes módulos si lo deseamos.

cd && mkdir kernel && cd kernel && mkdir src && cd src

Esto creará la siguiente estructura en el home de nuestro sistema (usuario):
~/kernel/
→ src

Y nos dejará posicionados en el directorio ~/kernel/src donde trabajaremos a continuación.

Descargar el archivo tarball seleccionado de la versión estable, longterm o mainline de código fuente del kernel de https://kernel.org

wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.18.28.tar.xz
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.18.28.tar.sign

Las firmas “.sign”son para asegurar la autenticidad de los archivos descargados. Contienen datos criptográficos utilizados para verificar la autenticidad e integridad de un archivo sin alterar el archivo original. Esto significa que la firma se almacena por separado del documento principal. Cuando se combina con su archivo asociado, la firma ayuda a verificar si el archivo se ha modificado después de la firma.

Para comprobar que el archivo no ha sido modificado, vamos a importar las firmas de los desarrolladores principales de las distintas versiones de kernel.

gpg --locate-keys [email protected] [email protected]

Una vez importadas las firmas de los desarrolladores, tenemos que verificar contra el archivo tar sin la compresión adicional que fue proporcionada con la extensión “.xz”, que redujo hasta en un 70% los archivos descargados originalmente.

Antes de continuar, procedemos a evitaremos un error de permisos para la carpeta .gnupg que resolveremos de la siguiente manera.

Permisos de carpeta .gnupg de lectura, escritura y ejecución solo para el usuario dueño

find ~/.gnupg -type d -exec chmod 700 {} \;

Permisos de carpeta .gnupg de lectura, escritura y ejecución solo para el usuario dueño

find ~/.gnupg -type f -exec chmod 600 {} \;

Procederemos a verificar la firma “.sign”.

xz -cd linux-6.18.28.tar.xz | gpg --verify linux-6.18.28.tar.sign -

Esto nos arrojará el resultado:

gpg: Signature made sáb 11 abr 2026 06:31:06 CST
gpg: using RSA key 647F28654894E3BD457199BE38DBBDC86092693E
gpg: Good signature from "Greg Kroah-Hartman [email protected]" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 647F 2865 4894 E3BD 4571 99BE 38DB BDC8 6092 693E

El mensaje de advertencia (WARNING) indica que la clave GPG que está utilizando no ha sido verificada por un tercero. Esto significa que, si bien la clave puede ser válida, no hay garantía de que realmente pertenezca a la persona o entidad que dice representar. Pero indica que, en efecto, la firma fue generada con el kernel descargado y el desarrollador de kernel.org referenciado.

Procederemos a extraer el contenido del archivo comprimido “.tar.xz” como usuario sin privilegios, que es en sí el código fuente del kernel con el que estaremos trabajando, compilando y usando en nuestro sistema.

tar -xf linux-6.18.28.tar.xz

Una vez descomprimido el archivo ingresamos al directorio con el código fuente utilizando:

cd linux-6.18.28

Ejecutaremos el siguiente comando para eliminar la configuración actual y todos los archivos generados anteriormente, por si tenemos archivos generados de compilaciones anteriores. Al ejecutar make mrproper, no es necesario ejecutar make clean. Este último no borra el archivo de configuración si este existe.

make mrproper

Copiaremos el archivo que contiene la configuración actual de nuestro kernel que está ejecutándose actualmente en el subdirectorio donde quedarán los archivos compilados. Esto es muy importante ya que usaremos la misma configuración para evitar inconvenientes. Aquí necesitamos usar sudo para poder acceder al archivo.

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

Ahora generaremos la configuración:

El siguiente paso es generar la configuración del kernel con el archivo que copiamos y vamos a configurar las nuevas opciones o símbolos del kernel con su valor por omisión sin preguntar de forma interactiva:

make olddefconfig

Si queremos responder de forma interactiva a cada una de las nuevas opciones o símbolos del kernel, usaremos oldconfig. Si en su lugar queremos generar una nueva configuración predeterminada con la arquitectura de nuestro sistema, usaremos defconfig. Esta última opción borrará nuestra configuración actual. La opción localmodconfig actualiza nuestra configuración deshabilitando todos los módulos que no han sido cargados.

Finalmente si queremos entrar al menú para habilitar específicamente algún módulo, opción o símbolo ejecutaremos make menuconfig lo cual nos dará un menú de opciones donde podemos buscar los módulos o opciones que requerimos y habilitarlas o en su defecto deshabilitarlas.

Ahora si la tenemos, preparemos una base con ventiladores para nuestro equipo, o lo que sea necesario para enfriar el equipo ya que usaremos todos los procesadores de nuestro equipo para compilar el kernel utilizando nproc. El comando nproc nos da el número de procesadores del equipo. La siguiente instrucción compila el kernel utilizando todos los procesadores de nuestro equipo. Si el equipo se calienta demasiado, se puede apagar o congelar. Esto no afecta en absoluto a nuestro kernel actual. Ninguna de las dos opciones requiere actualizar grub. Pues lo hace en automático al instalar el kernel. Solo en el caso de eliminar el kernel es necesario actualizar grub.

TENEMOS DOS OPCIONES:

  1. Generar los archivos .deb para instalar el Kernel desde estos archivos
  2. Instalar directamente el kernel sin generar los archivos .deb

OPCIÓN 1:

make bindeb-pkg -j$(nproc)

Esto compilará y depositará los archivos .deb en la carpeta atrás a donde compilamos. Una vez terminado el proceso instalamos y reiniciamos ejecutando:

sudo apt install -y ./linux-headers-6.18.28-amd64-desktop-rolling_6.18.28_amd64.deb ./linux-image-6.18.28-amd64-desktop-rolling_6.18.28_amd64.debesktop-rolling_6.18.28_amd64.deb
systemctl reboot -i

OPCIÓN 2:

make -j$(nproc)

Cuando termine, compilaremos los módulos del kernel utilizando el siguiente comando:

make INSTALL_MOD_STRIP=1 modules_install -j$(nproc)

El parámetro INSTALL_MOD_STRIP=1 nos permitirá reducir el tamaño de los módulos del kernel al eliminar los símbolos de depuración. De lo contrario, la imagen del kernel será demasiado grande, lo que hace que muchos equipos no puedan iniciar.

Instalamos los headers, el kernel y reiniciamos. Nota: Cerrar y guardar todo antes de reiniciar.

sudo make headers_install -j$(nproc)
sudo make install -j$(nproc)
systemctl reboot -i

Finalmente, y para verificar que el nuevo kernel está instalado y funcionando, ejecuta en un terminal.

uname -r
DESINSTALAR EL KERNEL

Si instalamos usando la opción 1 ejecutamos:

sudo apt remove --purge linux-headers-6.18.28-amd64-desktop-rolling linux-image-6.18.28-amd64-desktop-rolling

Si instalamos usando la opción 2, ejecutamos:

sudo rm -v /boot/{config-,initrd.img-,System.map-,vmlinuz-}6.18.28-amd64-desktop-rolling
sudo rm -rf /lib/modules/6.18.28-amd64-desktop-rolling
sudo rm -rf /usr/src/linux-headers-6.18.28-amd64-desktop-rolling
sudo update-grub
systemctl reboot -i

Finalmente, y para verificar que has retornado el sistema al kernel anterior , ejecuta el siguiente comando para ver cuál es la versión presente.

uname -r
CONSIDERACIONES FINALES

Por lo expresado anteriormente, creemos que realmente se justifica la compilación de un kernel, cuando se requiera agregar módulos o drivers específicos que no estén presentes en la versión existente en el sistema; Lo que nos da pie a un futuro artículo donde explicaremos cómo llevar a cabo esta tarea para intentar que algún componente de nuestro hardware cambie a un estado funcional.

Ten en cuenta que las versiones del kernel utilizadas en los comandos refieren a una versión específica utilizada para el tutorial . Por lo que deberás modificarlas a tu conveniencia; además, por razones de seguridad, hemos omitido el uso del comando sudo y el parámetro –no-same-permissions al momento de la descompresión del núcleo.

Si eres de los que sostienen que alguna de las razones aquí emitidas para no instalar un kernel es exagerada, les daremos un ejemplo puntual; no intentes compilar e instalar un kernel 6.19.x en estos momentos porque deepin-anything, la biblioteca que utiliza un módulo personalizado para acelerar la búsqueda de archivos en deepin, no cargará y, si hablamos de un kernel 7.x, directamente romperá el sistema. Obligando a arrancar con el kernel anterior y desinstalar el nuevo.

Finalmente aclarar que los kernel más actuales, en líneas generales, no están orientados a dar mejoras y soporte a hardware antiguo por lo que no siempre será la mejor opción, si este es tu caso. Así que aplicar el viejo refrán nunca está de más… SI FUNCIONA, NO LO TOQUES.

Fuentes: https://www.it-talent.mx/

5 17 votos
Califica el Artículo

7 Reacciones
Más antiguos
Más nuevos Más populares
Car
Car(@car)
Redactores
1 mes atrás

Alex Excelente guia, gracias por compartirla.

Luis Serrano
Luis Serrano(@luis-serrano)
Deepineros
30 días atrás

Genial, muy bien explicado, existe muy poca información sobre como hacer este proceso.

Lion Darias
Lion Darias(@liondarias)
Deepineros
29 días atrás

Un buen material de estudio.

Juaquin Luna
Juaquin Luna(@juaquin-luna)
Deepineros
29 días atrás

Todo muy bien explicado, excelente información.

Isaías Gätjens M
Isaías Gätjens M(@igatjens)
28 días atrás

Está bien interesante, buen trabajo

Ericko
Ericko(@ericko22)
Deepineros
14 días atrás

Excelente información muchachos.

7
0
Nos gustaría saber lo que piensas, Únete a la discusión.x