Cómo compilar el kernel Linux Real Time 5.10 para MX Linux 23, Debian 12 (crear los deb)

Cómo compilar el kernel Linux Real Time 5.10 para MX Linux 23 (crear los deb)

Este Kernel “Real Time” yo lo uso para hacer música, vea la siguiente entrada:

Cómo instalar y usar Jack Audio Connection Kit (JACK) + Ardour y sus plugins con un Kernel de Tiempo Real en MX Linux 21 (basado en Debian 11)
https://facilitarelsoftwarelibre.blogspot.com/2020/10/instalar-realtime-kernel-en-mx-linux.html

Requisitos de compilación

  • 40 GB de espacio en Disco
  • Linux basados en Debian, MX Linux, antiX, Ubuntu, Linux Mint, etc, que usen la paquetería .deb

Aplicación del las actualizaciones del sistema

Actualice los repositorios:

sudo apt update

Actualice los paquetes:

sudo apt upgrade

Instalando las dependencias

Instalar:

sudo apt-get install gcc build-essential libncurses5-dev fakeroot wget xz-utils \
    flex bison libssl-dev autoconf automake cmake dwarves openssl libelf-dev \
    libudev-dev libpci-dev libiberty-dev bc python3-sphinx lzop lzma \
    lzma-dev libmpc-dev u-boot-tools gettext rsync libncurses-dev \
    libelf-dev libudev-dev pkg-config

Ver un Kernel antiguo pero actualizado

Necesito descargar un Kernel ni tan antiguo ni tan nuevo

Longterm release kernels
https://www.kernel.org/category/releases.html

Kernel 5.10

Nota: Estos pasos usted los puede modificar para compilar otra versión de Kernel.

Por qué descargar un Kernel algo antiguo para compilarlo?

  1. Porque puede que tengan un ordenador antiguo y quiera que rinda mejor, ejemplo tengo un ordenador que fue comprado en el año 2008 y quiero usar MX Linux 23 a esta fecha que hago este tutorial Junio del 2024, entonces necesito un Kernel lo más antiguo que se pueda instalar en este MX Linux 23 porque debe saber usted que un Kernel lo que tiene de importante es que funcionen el hardware de su ordenador y que sea seguro (esté actualizado). Nota: Los Kernel tienen una fecha en que ya no se les dará más soporte, pero viejo no quiere decir que no sirva sino que no estará actualizado para alguna vulnerabilidad que se pueda encontrar en el futuro.

  2. Si alguna vez tenga usted algún hardware que solo funcione con una versión vieja de Kernel Linux, deberá buscar un Linux antiguo que funcione aunque ya no le den actualizaciones pero que se pueda usar y descargar sus paquetes y allí compilar un Kernel viejo que se pueda compilar allí, para que aquel hardware viejo funcione, aunque no tenga mucha seguridad ese Kernel, pero yo lo veo de esta forma, mientras una persona no navegue en paginas malas estará seguro así sea que use un Kernel sin las ultimas actualizaciones (recomiendo en ese caso cuando se termine el soporte es posible que yo lo siga usando y usaré: https://www.mywot.com/download u otro semejante) ademas que no hay que andar instalando cosas que no estemos seguros que sean seguras o no.

  3. Otra razón de compilar este Kernel, es porque a veces podría pasar (ha pasado, una vez enviaron uno así en las actualizaciones) que no compilan bien el Kernel y no funciona bien, entonces lo mejor es uno mismo compilarlo.

¿Consideraciones a tener en cuenta?

Es posible que los deb del Kernel generado luego después de un tiempo no funcionen en la misma máquina o en otra, esto debido a que con el paso del tiempo pueden hacer algún cambio grande en el sistema y el Kernel de la manera que fue creado puede que no encaje en esas modificaciones de los paquetes que luego se instalaron por las actualizaciones que enviaron, por lo que deberá buscar en kernel.org algún otro Kernel más actual que si coincida con todo el entorno de su Linux. O sea, si usted compila un Kernel, debe estar usted a la vanguardia, debe compilarlo con alguna frecuencia, es como si usted fuera los que mantienen el sistema que en algún momento envian algún Kernel nuevo, y de usted depende verificar que todo funcione bien con el kernel.

Antes del descargar el Kernel primero buscar un parche Real Time

Primero es necesario saber si existe el parche pues sino de nada servirá descargar el Kernel. Me voy a buscar y descargar un parche “Real Time” desde:

https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/

debo saber si hay uno 5.10:

parche 5.10

Si usted es curioso y desea saber cómo obtuve este enlace pues es desde:

https://www.kernel.org/

ese link es este:

https://www.kernel.org/pub/

pero al dar clic ese enlace se convierte en:

https://mirrors.edge.kernel.org/pub/

y allí clic a:

enlace a kernel linux

y allí clic a Kernel:

y allí clic a projects:

y allí clic a rt (Real Time):

y clic a la versión 5.10 y veo que si hay uno y entro allí:

https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.10/

Nota: En el repositorio de parches RT para Linux, el archivo patch contiene todos los cambios en un único parche, ideal para aplicar rápidamente y compilar el kernel con soporte real-time. En cambio, patches es un paquete con varios parches individuales, útil si se quiere revisar o aplicar cambios de forma selectiva. Para una compilación estándar, lo más práctico es usar el patch único.

y copio el enlace del parche:

https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.10/patch-5.10.218-rt110.patch.xz

Nota: Este enlace con el paso del tiempo es muy posible que ya no esté porque o lo habrán actualizado o habrá salido del soporte.

Entonces como sé que existe el parche Real Time, entonces ahora si busco el Kernel correspondiente, pues es obvio que si hay un parche para ese Kernel entonces habrá el Kernel (por eso no hago la busqueda de primero el Kernel y luego del parque, porque es posible que el parche no haya para alguna versión de Kernel entonces por gusto perdería el tiempo)

Buscando el Kernel 5.10

Como ya tengo el enlace del Kernel, entro en:

https://mirrors.edge.kernel.org/pub/linux/kernel/

busco allí uno 5x

y voy a buscar el Kernel con las siguientes palabras: linux-5.10. con Crtl + F buscaré el más actual:

y copio aquí el nombre y la descripción:

linux-5.10.220.tar.xz 21-Jun-2024 13:03 115M

Nota: la versión 220 es la más actualizada con la fecha 24 de junio 2024 entonces esa la utilizaré, copio el enlace:

https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.10.220.tar.xz

Descarga de ambos desde la terminal (Opcional)

Sea como sea que descarguen los archivos recomiendo que los tengan dentro de una carpeta, para este caso con algun nombre que la identifique, en mi caso yo lo hago en la ruta que he creado: /home/wachin/Dev/kernel5.10/, allí dentro pongo en la terminal:

wget -c https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.10/patch-5.10.218-rt110.patch.xz
wget -c https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.10.220.tar.xz

para descargarlos:

Extracción y parchado del Kernel

Se puede descomprimir el Kernel con clic derecho y extraer aquí:

extraer aquí

o también desde la terminal con:

tar xJvf linux-5.10.220.tar.xz

como sea que usted descomprima el archivo debe que darle así:

si desea puede entrar desde una terminal con ejemplo:

cd linux-5.10.220

o tambén se puede con clic derecho y abrir terminal aquí

si lo descomprimió desde la terminal y con clic derecho abrir terminal aquí, o como sea que lo haya hecho, hay que poner lo siguiente:

xzcat ../patch-5.10.218-rt110.patch.xz | patch -p1

Este comando para otro kernel lo debe de editar, debe poner el nombre correcto del parche

De Enter y se parchará

Añadir el nombre del Mantenedor o Responsable a su Sistema para que se compile con ese nombre (Opcional)

Esto es totalmente opcional, no es necesario para compilar el Kernel, para hacer esto ponga en una terminal lo siguiente (teniendo instalado Gedit u otro editor pero debe cambiar el nombre en la terminal):

gedit ~/.bashrc

allí debe llegar hasta abajo y con enter hacerse un espacio:

y allí debe de poner lo siguiente:

DEBEMAIL="your.email.address@example.org"
DEBFULLNAME="Firstname Lastname"
export DEBEMAIL DEBFULLNAME

y cambiar con sus datos, a mi me queda así:

ahora cierro el editor de texto y:

Salir (cerrar) sesión

y vuelvo a entrar. Para confirmar sus datos ponga en una terminal:

echo $DEBEMAIL
echo $DEBFULLNAME

y le deben salir sus datos. Con esto una vez instalado el Kernel al revisarlo en Synaptic se verá allí su nombre y su correo en los paquetes.

Antes de continuar haga grande el tamaño de la terminal

Sino hace más grande el tamaño de la terminal se saldrá el error:

HOSTLD  scripts/kconfig/mconf
#
# using defaults found in /boot/config-6.1.0-37-686-pae
#
/boot/config-6.1.0-37-686-pae:5594:warning: symbol value 'm' invalid for RADIO_ADAPTERS
/boot/config-6.1.0-37-686-pae:6216:warning: symbol value 'm' invalid for DRM_GEM_SHMEM_HELPER
/boot/config-6.1.0-37-686-pae:6860:warning: symbol value 'm' invalid for SND_SOC_SOF_DEBUG_PROBES
/boot/config-6.1.0-37-686-pae:6897:warning: symbol value 'm' invalid for SND_SOC_SOF_HDA_PROBES
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.
make[1]: *** [scripts/kconfig/Makefile:29: menuconfig] Error 1
make: *** [Makefile:614: menuconfig] Error 2

este error significa:

Error principal:

Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.

Esto es claro y directo: tu terminal no tiene suficientes filas (líneas) o columnas para que menuconfig pueda mostrarse correctamente. Para solucionarlo simplemente Aumenta el tamaño de tu terminal, y luego allí si

poner:

make menuconfig

para que se abra el menú:

y aparecerá el menú:

Nota: En la imagen de arriba ya hice la ventana más grade, pero si tiene un ordenador con una buena pantalla hagala más grande de alto.

Explicación de la ayuda.- Allí dice en inglés:

Arrow keys navigate the menu.  <Enter> selects submenus ---> (or empty submenus ----).  
Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, <M> modularizes features.  
Press <Esc><Esc> to exit, <?> for Help, </> for Search.  Legend: [*] built-in  [ ] excluded  
<M> module  < > module capable

Cuya traducción significa:

Las teclas de flecha se usan para navegar por el menú. <Enter> selecciona submenús ---> (o submenús vacíos ----).  
Las letras resaltadas son teclas de acceso rápido. Presionar <Y> incluye, <N> excluye, <M> modulariza características.  
Presione <Esc><Esc> para salir, <?> para Ayuda, </> para Buscar. Leyenda: [*] incorporado [ ] excluido  
<M> módulo < > compatible con módulo

Explicación:

La herramienta menuconfig presenta una interfaz basada en texto para configurar las opciones del kernel. Aquí están las instrucciones clave sobre cómo navegar:

  • Teclas de flecha:
    • Usa las teclas de flecha arriba y abajo para moverte por las opciones del menú.
    • Usa las teclas de flecha izquierda y derecha para moverte entre acciones (como “Salir” o “Guardar”).
  • Enter:
    Presionar la tecla Enter en una opción:
    • Si es un submenú, te lleva a un nivel más profundo del menú para configurar opciones relacionadas. Ejemplo: “Controladores de red”.
    • Si es una opción que no tiene submenú, puedes cambiar su estado (activado, desactivado o modular, dependiendo de lo que soporte). Tenga siempre mucho cuidado en cuantas veces da Enter

2. Configuración de opciones

Cada opción del kernel puede estar en uno de los siguientes estados:

  • (Yes, Sí):
    La característica se incluye directamente en el kernel como parte del núcleo.
    Representado como [ * ].

  • (No):
    La característica se excluye por completo del kernel.
    Representado como [ ].

  • (Module, Módulo):
    La característica se compila como un módulo externo que puede cargarse o descargarse dinámicamente en el sistema.
    Representado como <M>.

  • < > (Compatible con módulo):
    Algunas opciones tienen el indicador < > para mostrar que pueden configurarse como módulos. Si seleccionas “modular”, aparecerá <M>.

3. Accesos rápidos

La interfaz tiene accesos rápidos para facilitar la configuración:

  • Teclas resaltadas:
    Cada opción tiene letras resaltadas (normalmente en mayúsculas). Puedes presionar esa letra para seleccionar rápidamente esa opción.

  • Esc Esc:
    Presiona Esc dos veces seguidas para salir del menú o de un submenú.

  • <?>:
    Presiona ? para ver información de ayuda sobre la opción que tengas seleccionada. Esto es útil si no sabes qué hace una característica o cómo afectará a tu sistema.

  • </>:
    Presiona / para buscar una opción específica por nombre. Por ejemplo, si buscas “EXT4”, puedes encontrar rápidamente las opciones relacionadas con este sistema de archivos.

4. Leyenda

La leyenda explica los símbolos que ves en el menú y su significado:

  • [ * ]: La opción está habilitada e incluida como parte del kernel.
  • [ ]: La opción está deshabilitada y no estará en el kernel.
  • <M>: La opción está habilitada como un módulo y se compilará por separado.
  • < >: La opción es compatible con módulos, pero no está habilitada actualmente.

Ejemplo práctico

Supongamos que estás configurando el soporte para el sistema de archivos EXT4:

  1. Busca “EXT4” presionando / y escribe “ext4”.
  2. Verás las opciones relacionadas con EXT4. Puedes:
    • Presionar <Y> para incluir el soporte directamente en el kernel (se cargará siempre).
    • Presionar <M> para que se compile como módulo (puedes cargarlo/desactivarlo más tarde).
    • Presionar <N> para excluirlo si no lo necesitas.

Nota: Cuando cierres menuconfig si algo salió mal en la terminal aparecerán unas informaciones, debes de leer o traducir para entender qué es lo que dice, pues allí dirá si alguna configuración de módulo, o si al caracteristica fue incluida directamente en el kernel no sea soportada (pero esto es en el caso de que alguien haga alguna configuración de ese tipo, bueno yo no hago esas configuraciones, pero por un caso algún error).

Entonces

menuconfig es una herramienta poderosa pero requiere cuidado. Recuerda que incluir demasiadas cosas en el núcleo () puede hacerlo pesado, mientras que usar módulos () te da más flexibilidad. Siempre lee la ayuda (?) si no estás seguro de qué hace una opción.

Consejos

El consejo que les doy es que la tecla “Espacio” la usen con mucho cuidado, no la presionen por gusto pues esa es para cambiar las opciones, y usted podría sin querer cambiar algo del Kernel y luego no sabría que cambió.

CONFIGURAR EL TIEMPO REAL

Verificar las configuraciones Real Time según el tutorial:

Debe ver si están las siguientes marcadas para convertirlo en un Kernel Real Time, las siguientes son todas las instrucciones en texto, más abajo están las mismas a las cuales les he puesto unas capturas de pantalla para que vean con imágenes:

# Habilitado CCONFIG_NO_HZ_IDLE
 -> General setup
  -> Timers subsystem
   -> Timer tick handling (Full dynticks system (tickless))
    (X) Idle dynticks system (tickless idle)

# Habilitado CONFIG_HIGH_RES_TIMERS
 -> General setup
  -> Timers subsystem
   [*] High Resolution Timer Support

# Habilitado CONFIG_PREEMPT_RT
 -> General setup
  -> Preemption Model (Fully Preemptible Kernel (Real-Time))
   (X) Fully Preemptible Kernel (Real-Time)

# Habilitado CONFIG_HZ_1000 
 -> Processor type and features
  -> Timer frequency (1000 HZ)
   (X) 1000 HZ

# Habilitado CPU_FREQ_DEFAULT_GOV_PERFORMANCE
 ->  Power management and ACPI options
  -> CPU Frequency scaling
    -> Default CPUFreq governor
     (X) performance

# Verificar el soporte para particiones exFAT, NTFS
 -> File systems
   -> DOS/FAT/EXFAT/NT Filesystems

Nota: Los nombres pueden variar por la versión del Kernel

Sobre estas configuraciones la siguientes una tabla con información:

Configuración en .config Descripción
CONFIG_NO_HZ_IDLE Esta opción habilita un sistema inactivo sin señales: las interrupciones del temporizador solo se activarán según sea necesario cuando el sistema esté inactivo. Esto suele ser interesante para el ahorro de energía.
CONFIG_HIGH_RES_TIMERS Esta opción habilita la compatibilidad con el temporizador de alta resolución. Si su hardware no es compatible, esta opción solo aumenta el tamaño de la imagen del kernel.
CONFIG_PREEMPT_RT El conjunto de parches CONFIG_PREEMPT_RT lo mantiene un pequeño grupo de desarrolladores principales encabezado por Ingo Molnar. Este parche permite adelantarse a casi todo el kernel, con la excepción de unas pocas regiones de código muy pequeñas (“regiones críticas raw_spinlock”). Esto se hace reemplazando la mayoría de los spinlocks del kernel con mutexes que admiten la herencia de prioridad, así como también moviendo todas las interrupciones y las interrupciones de software a los subprocesos del kernel.

Puede encontrar un RT_PREEMPT_HOWTO detallado en esta página.

Paul McKenney ha escrito una buena descripción general de CONFIG_PREEMPT_RT que es una buena introducción a los cambios introducidos en el kernel por el parche CONFIG_PREEMPT_RT.

Aquí se encuentra disponible una descripción general de los diversos componentes del parche CONFIG_PREEMPT_RT y su estado de fusión en el núcleo de la línea principal.
CONFIG_HZ_1000 1000 Hz es la opción preferida para sistemas de escritorio y otros sistemas que requieren respuestas interactivas rápidas a eventos.
CPU_FREQ_DEFAULT_GOV_PERFORMANCE Esto establece la frecuencia de forma estática a la frecuencia más alta admitida por la CPU

Ese archivo .config es el que tiene las configuraciones, es un archivo que se lo puede ver con Ctrl + H pues cuando ha sido creado estará oculto en la carpeta principal del kernel.

Ahora si, de aquí para abajo para facilidad de entender qué es lo que se hace les pongo unas capturas de pantalla, pero algunas capturas son de otros de mis tutoriales, digo por un caso:

# Habilitado CONFIG_HIGH_RES_TIMERS

Temporizadores de alta resolución son esenciales para garantizar que las tareas de audio en tiempo real se gestionen correctamente, ya que permiten una mayor precisión en la ejecución de procesos, es crucial para lograr un sistema de audio de baja latencia:

–> General setup

Imagen 101: General setup

–> Timers subsystem - [*] High Resolution Timer Support

Imagen 102: High Resolution Timer Support

# Habilitado CCONFIG_NO_HZ_IDLE

El “sistema tickless” ayuda a reducir las interrupciones cuando el sistema está inactivo. Esto es útil para evitar que el kernel desperdicie ciclos de CPU en tiempos de inactividad y, de este modo, se mejora la latencia general. Dado que tu sistema se usará para producción de audio, el sistema tickless es altamente recomendable:

–> General setup –> Timers subsystem

Imagen 104: Timers subsystem

y de Enter en:

– Timer tick handling (Idle dynticks system (tickless idle)) —>

Imagen 106: Timer tick handling

aparece así:

Imagen 107: Idle dynticks system

y doy flecha abajo y aplasto la barra espaciadora para poner:

– (X) Idle dynticks system (tickless idle)

y se sale automáticamente a la ventana anterior pero si se aplicó el cambio, si usted lo que ver, ingrese otra vez allí y verá que ya está marcado:

Imagen 107: Idle dynticks system marcado

Nota: El nombre podría variar algo en otros Kernel pero el sentido debe ser algo semejante.

# Habilitado CONFIG_PREEMPT_RT

La opción CONFIG_PREEMPT_RT (habilitada por el parche RT) es esencial para la producción de audio. Estas opciones aseguran que las tareas del kernel pueden interrumpir otras tareas de manera agresiva, lo que es crucial cuando necesitas baja latencia y preempción en tiempo real.

–> General setup –> Preemption Model (Voluntary Kernel Preemption (Desktop)) —>

Imagen 108: Preemption Model

al entrar con Enter está en Voluntary Kernel Preemption o en alguna opción semejante si usa otra versión de Kernel:

Imagen 109: Voluntary Kernel Preemption

debe dejarla en:

– (X) Fully Preemptible Kernel (Real-Time)

Imagen 110: Fully Preemptible Kernel

y como automáticamente se pone la opción anterior, al volver a entrar se puede ver que ya está activa esa opción

# Habilitado CONFIG_HZ_1000

El valor 1000 Hz es ideal para la producción de audio, ya que garantiza una frecuencia de temporización más alta y, por lo tanto, una mayor precisión en el manejo de las interrupciones. Esto reduce la latencia del sistema y permite que los procesos de audio se ejecuten más rápidamente:

–> Processor type and features –> Timer frequency

Imagen 110: Timer frequency

está por defecto en 250 Hz (en este Kernel), debe quedar en 1000

–> Timer frequency (1000 HZ)

entre y con la flecla abajo marquela y dé barra espaciadora

salga

y así queda:

Imagen 112: Timer frequency (1000 HZ) habilitada

# Habilitado CPU_FREQ_DEFAULT_GOV_PERFORMANCE

El escalado de frecuencia de CPU (CONFIG_SCHED_CPUFREQ) puede causar fluctuaciones en la frecuencia de la CPU, lo que puede llevar a latencias impredecibles. En un sistema de producción de audio, es crucial que la frecuencia de la CPU no fluctúe, por lo que necesitas forzar el “governor” de la CPU a rendimiento máximo (performance):

–> Power management and ACPI options –> CPU Frequency scaling –> Default CPUFreq governor

Imagen 113: Default CPUFreq governor

dejarlo en:

– (X) performance

OPCIONAL

Configura el kernel para habilitar PAE para Sistemas Operativos Linux de 32 bit

Si usted tiene un ordenador que sólo soporta 32 bits, o si solo quiera usar 32 bit aunque soporte 64 bit porque se ponga muy lenta, si usted tuviera un ordenador con 4GB de RAM lo más seguro es que sólo le esté reconociendo 3.44 GiB de los 4 GB de RAM si no usa un Kernel PAE, este es un comportamiento esperado en sistemas operativos de 32 bits debido a las limitaciones inherentes a esta arquitectura. Esto ocurre porque los sistemas de 32 bits pueden direccionar un máximo de 4 GB de espacio de memoria total, lo que incluye tanto la memoria RAM como otros recursos de hardware, como la memoria dedicada a la tarjeta gráfica y otros dispositivos de E/S (“Entrada/Salida” en inglés: I/O, Input/Output. En informática, se refiere a la comunicación entre un sistema informático y el mundo exterior, que puede ser con dispositivos de hardware “dispositivos periféricos” o con otros sistemas.). Por lo tanto, una parte de la memoria no se puede utilizar para RAM. La solución es Habilitar PAE (Physical Address Extension) que es una tecnología que permite a los sistemas operativos de 32 bits acceder a más de 4 GB de RAM (hasta 64 GB). Debian 12 tiene soporte para PAE, pero debes asegurarte de estar usando un kernel PAE

Navega a la sección:

–> Processor type and features

y habilita la opción (puede que ya esté habilitada por defecto):

– [*] PAE (Physical Address Extension) Support

Deshabilitar las características de soporte para máquinas virtuales “Linux Guest Support” y “Virtualization”

Si deseas deshabilitar las características de soporte para máquinas virtuales al compilar el kernel de Linux, puedes hacerlo al configurar el kernel antes de la compilación. Para esto, debes seguir estos pasos busca las opciones relacionadas con la virtualización, yo he desabilitado:

–> Processor type and features -> [ ] Linux Guest Support — –> [ ] Virtualization —

Antes allí estaban unos asteriscos * pero los desmarqué con la tecla de tabulación

Porque no voy a instalar ninguna máquina virtual, ni voy a crear un Sistema Operativo Linux el cual luego lo voy a instalar dentro de una máquina virtual (Guest Support)

Dar ESC hasta ir al inicio.

Si usted al estar realizando este tutorial sin querer llegue hasta salirse de la ventana por dar varios ESC:

Imagen 201

allí dice:

“Do you wish to save your new configuration?
(Press to continue kernel configuration.)”

que traducido es:

“¿Desea guardar su nueva configuración? (Presione para continuar con la configuración del kernel).”

darle Enter pues allí dice YES

y me dice que las configuraciones han sido escritas al archivo:

.config

verificar CONFIG_SYSTEM_TRUSTED_KEYS

Abra el archivo .config (está oculto, para verlo Ctrl + C) con algún editor de texto y busque lo siguiente (puede usar el atajo Ctrl + F o en las opciones del menú):

CONFIG_SYSTEM_TRUSTED_KEYS=

debe estar terminando al final del igual con dos comillas, y si no debe dejarlo así:

CONFIG_SYSTEM_TRUSTED_KEYS=""

es porque si tiene algunos textos entre las comillas no lo podrá compilar. Si lo tuvo que editar y dejarlo como le explico, guarde y cierre el archivo, y siga.

En caso de que deseara revisar algo debe poner el comando:

make menuconfig

Nota: Además si algún kernel no tenga soporte exFAT, en el siguiente tutorial búsque la parte de cómo añadí el soporte exFAT en códigos fuentes de Kernel que no tienen.

Verificando que las opciones estén bien

Cuando salga de menuconfig después de haber hecho las modificaciones, deberá ver en la terminal algo como esto:

$ make menuconfig
  HOSTCC  scripts/kconfig/mconf.o
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
  HOSTCC  scripts/kconfig/lxdialog/inputbox.o
  HOSTCC  scripts/kconfig/lxdialog/menubox.o
  HOSTCC  scripts/kconfig/lxdialog/textbox.o
  HOSTCC  scripts/kconfig/lxdialog/util.o
  HOSTCC  scripts/kconfig/lxdialog/yesno.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/menu.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/mconf
*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

allí no hay ningún mensaje de error al final, pero podría haberlo, ejemplo diciendo en inglés:

.config:5593:warning: symbol value 'm' invalid for RADIO_ADAPTERS
.config:6215:warning: symbol value 'm' invalid for DRM_GEM_SHMEM_HELPER
.config:6859:warning: symbol value 'm' invalid for SND_SOC_SOF_DEBUG_PROBES
.config:6896:warning: symbol value 'm' invalid for SND_SOC_SOF_HDA_PROBES

este tipo de error se debe a que en el archivo de configuración .config hay valores inválidos para algunas opciones que has seleccionado, específicamente la opción ‘m’ (que indica que el módulo debería compilarse como módulo, en lugar de ser compilado directamente en el kernel). Este tipo de advertencias pueden ocurrir cuando se seleccionan opciones que no son compatibles con el valor que has configurado (por ejemplo, módulos que no deberían ser módulos o que tienen dependencias que deben resolverse), eso solo podría pasar si sin querer usted mivió algo, por lo que de ser así, lo mejor es que borre la carpeta del kernel y la descomprima otra vez para empezar de cero.

Compinado el Kernel etiquetandolo para crear los .deb

Es posible Compilar el Kernel y ponerle una etiqueta como descripción en los deb generados. En el siguiente ejemplo en LOCALVERSION= está la etiqueta debian12:

make deb-pkg LOCALVERSION=-debian12 KDEB_PKGVERSION=$(make kernelversion)-1

si se pone eso en la terminal con esa etiqueta será compilado el Kernel y eso aparecerá en el deb

yo le voy a poner así **(debe ser sin ningún espacio y no se deben usar mayúsculas, ni caracteres extraños, ni este caracter “_“)** para saber que fue compilado en Debian 12 y sobre que es un Kernel Real Time no me preocupo pues eso automáticamente le pone la compilación.

Nota: Si habilitan PAE esto también se añadirá automáticamente a la compilación. Pero si desabilitan la virtualización sería bueno poner así: “debian12-novm” para saber que tiene desabilitada la virtualización, esto como ejemplos, ustedes pueden además si desean escribir algo más en la etiqueta como puede ser escribir pae: “debian12-novm-pae”, puede ser su nickname u otro

y dar ENTER

y ahora si a esperar un buen rato hasta que termine la compilación, pueden ser horas

cuando ya fueron generados automáticamente los deb estarán en el directorio anterior de donde lo compilamos:

y para instalarlos sugiero hacer lo siguiente:

INSTALACIÓN DE LOS DEB DEL KERNEL

Sólo necesitamos dos los que tienen en el nombre headers e image, menos el archivo que contiene dbg y el que contiene libc-dev, así que lo mejor es que cojamos esos dos y los pongamos dentro de otra carpeta y cuando los tengamos allí instalarlos con:

sudo dpkg -i *.deb

Requerimientos para instalar en otro Linux recién instalado

Si estos deb los quiere instalar en otro Linux debe instalar el paquete gcc:

sudo apt install gcc dkms

pues sino no se podrá instalar

luego reiniciar

Eligiendo el Kernel RT al iniciar el equipo

Al iniciar el Sistema Operativo cuando aparece el GRUB de flecha abajo en la opción Avanzada y allí elija el kernel que hemos compilado

Probando si coge mi tarjeta SD

Quería probar los dos puesto que mi laptop Dell Inspiron 1750 tiene una tarjeta lectora de Memorias SD y funciona bien, que bueno (es que a veces esa tarjetal lectora no funciona en algún Kernel y sin ella no puedo usarla y para mi es imprescindible)

Lo estoy probando y hasta el momento me funciona bien. Pero si en algún momento no funciona no quedará más que comprar un buen lector de tarjetas (yo tuve que comprar dos pues el primero no era muy rapido, el segundo si funciona bien)

Dios les bendiga

CONSULTAS

No se puede montar partición exFAT en algún tipo de Linux porque el Kernel u otro no tiene soporte
https://facilitarelsoftwarelibre.blogspot.com/2023/02/no-se-puede-montar-particion-exfat-en-kernel-linux.html

Compilando Kernel de AV Linux en MX Linux 21 de (32 bits y 64 bits)
https://facilitarelsoftwarelibre.blogspot.com/2022/04/compilando-kernel-de-av-linux-en-mx.html

Debian build fail due debian/certs/debian-uefi-certs.pem #54
https://github.com/Frogging-Family/linux-tkg/issues/54

What is Kernel-PAE in Linux ?
https://www.golinuxhub.com/2014/02/understanding-kernel-pae-in-linux/

PuppyLinux : PAE
https://www.wikka.puppylinux.com/PAE

System configuration [Linux-Sound]
https://wiki.linuxaudio.org/wiki/system_configuration#do_i_really_need_a_real-time_kernel

Comentarios