Este Kernel "Real Time" yo lo uso para hacer música, vea:
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 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
y
Aplicación del las actualizaciones del sistema
sudo apt update
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
Buscando un Kernel antiguo pero actualizado
Necesito descargar un Kernel si tan antiguo ni tan nuevo
Longterm release kernels
https://www.kernel.org/category/releases.html
Nota: Estos pasos usted los puede modificar para compilar otra versión de Kernel.
Por qué descargar un Kernel algo antiguo para compilarlo?
- 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
- 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.
- 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 instalon 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.
Buscando un parche Real Time
Me voy a descargar un parche "Real Time" desde:
https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/
debo saber si hay uno 5.10:
Si usted es curioso y desea saber cómo obtuve este enlace pues es desde:
ese link es este:
pero al dar clic ese enlace se convierte en:
https://mirrors.edge.kernel.org/pub/
y allí clic a:
y allí clic a Kernel:
y allí clic a projects:
y allí clic a rt (Real Time):
y clic a al 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/
y copio el enlace del parche:
https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.10/patch-5.10.218-rt110.patch.xzNota: 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
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.xzDESCARGA DE AMBOS
Recomiendo que lo descarguen 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
Extracción y parchado del Kernel
Se puede descomprimir el Kernel con clic derecho y 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í:
debo entrar allí en una terminal con:
cd linux-5.10.220
si lo descomprimió desde la terminal y con clic derecho abrir terminal aquí, como sea que lo haya hecho hay que poner lo siguiente:
xzcat ../patch-5.10.218-rt110.patch.xz | patch -p1
Nota: Este comando usted para otro kernel lo debe de editar (cambiar toda la ruta hasta la extensión del nombre 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í:
echo $DEBEMAIL
echo $DEBFULLNAME
y poner:
make menuconfig
Nota: La ventana de la terminal hágala más larga para que aparezcan bien las opciones
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:
1. Navegación por el menú
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 teclaEnter
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:
-
<Y> (Yes, Sí):
La característica se incluye directamente en el kernel como parte del núcleo.
Representado como[ * ]
. -
<N> (No):
La característica se excluye por completo del kernel.
Representado como[ ]
. -
<M> (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>:
PresionaEsc
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:
- Busca "EXT4" presionando
/
y escribe "ext4". - 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).
- Presionar
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
# Enabled CONFIG_HIGH_RES_TIMERS
# Enabled CCONFIG_NO_HZ_IDLE
aparece así:
# Enabled 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.
# Enabled CONFIG_HZ_1000
está por defecto en 250 Hz (en este Kernel), debe quedar en 1000
# Enabled CPU_FREQ_DEFAULT_GOV_PERFORMANCE
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):# OPCIONAL
Configura el kernel para habilitar PAE para Sistemas Operativos Linux de 32 bit
Deshabilitar las características de soporte para máquinas virtuales "Linux Guest Support" y "Virtualization"
Dar ESC hasta ir al inicio.
"Do you wish to save your new configuration? │
│ (Press <ESC><ESC> to continue kernel configuration.)"
que traducido es:
"¿Desea guardar su nueva configuración? │
│ (Presione <ESC><ESC> 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=
make menuconfig
Verificando que las opciones estén bien
$ 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'.
.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
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
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
sudo apto install gcc dkms
pues sino no se podrá instalar
luego reiniciar
Eligiendo el Kernel RT
Al iniciar el Sistema Operativo de clic en la opción Avanzada del Grub 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
https://wiki.linuxaudio.org/wiki/system_configuration#do_i_really_need_a_real-time_kernel
Comentarios
Publicar un comentario