Requerimiento importante:
Necesita 40 GB de espacio libre en disco
Compilados exitosamente
El siguiente Kernel lo pude compilar correctamente:
https://github.com/wachin/linux-avl/releases/tag/v5.6.10-rt5-avl1
este no se me ha colgado:
para instalar guardelos en alguna carpeta y abra una terminal allí y ponga:
sudo dpkg -i *.deb
Después de instalado reinicie el ordenador e ingrese en el grub con ese Kernel buscandolo en las configuraciones avanzadas del Kernel
Lo estoy probando y hasta el momento me funciona bien, los siguientes son los pasos que hice para compilarlo:
Este Kernel de AV Linux trabaja muy bien con bajas latencias y no me da xruns (ruidos al grabar en las condiciones que yo lo uso), para mi es mejor que el Kernel de Ubuntu Studio, y sobre esto puede leer la siguiente entrada:
xruns en Ubuntu Studio 18.04 con qjackctl a 44100 de frecuencia de muestreo, a 128 cuadros por periodo para estereo mix
https://facilitarelsoftwarelibre.blogspot.com/2022/04/xruns-en-ubuntustudio-con-qjackctl-a-44100-y-freq-muestreo-a-128-cuadros-por-periodo.html
Nota: A la fecha 2022 me enteré que encontraron un problema en los Kernel de Linux versiones del 5.10-rc1 al 5.14.15 y por eso ha sido descontinuado el desarrollo del Kernel original de AV Linux desarrollado por Trulan debido a la dificultad de mantenimiento, puede leerlo aquí:
Se ha descontinuado el Repositorio del Kernel de AV Linux (debido a vulnerabilidad encontrada y dificultades de mantenimiento)
https://facilitarelsoftwarelibre.blogspot.com/2022/04/se-ha-descontinuado-el-repositorio-del-kernel-de-avlinux.html
¿Cuál es la razón de compilar el Kernel de AV Linux?
Para mi es porque no hay en 32 bits y ese kernel es muy bueno trabajando en bajas latencias pues no me da xrun (no produce ruidos en muy bajas latencias), así que estos son los pasos que hice y que le podrían servir para compilarlo en algún otro Sistema Operativo basado en Debian o Ubuntu y usarlo a ver cómo le va
Nota: También se puede compilar en 64 bit.
Cuando vaya a compilar el Kernel entre en el Kernel Original del Sistema Operativo
Escribo este título pues puede que haya la posibilidad de que usted haya ya compilado algún Kernel y lo esté usando, o usando algún otro de algún otro lado, pero no, deben usar siempre el Kernel que vino en su Sistema Operativo. Si usted no haya instalado en su Sistema Operativo Linux algún Kernel de algún otro lado omitan esto.
Dependencias
Ahora si continuemos, debemos instalar las siguientes dependencias para poder compilarlo:
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
¿Cuál Código fuente del Kernel en Tiempo Real (RT) descargar?
Como noción previa para poder buscar el código fuente en la dirección de GitHub donde están los códigos fuentes del Kernel Real Time de AV Linux debemos saber que las palabras kernel-rt y preempt-rt significan lo mismo, podemos leerlo en una publicación de Red Hat:
Working with the real-time kernel for Red Hat Enterprise Linux | Enable Sysadmin
https://www.redhat.com/sysadmin/real-time-kernel
a la cual traduciendola:
Un kernel en tiempo real no es necesariamente superior o mejor que un kernel estándar. En cambio, cumple con diferentes requisitos comerciales o del sistema. Es un kernel optimizado diseñado para mantener baja latencia, tiempo de respuesta consistente y determinismo. A modo de comparación, un kernel RHEL estándar se centra en las operaciones orientadas al rendimiento y la programación justa de tareas. El kernel en tiempo real también se conoce como kernel-rt o preempt-rt.
La forma más sencilla de identificar un kernel en tiempo real es ejecutar el comando uname -r en la terminal y luego buscar la palabra clave rt en la versión del kernel. Si falta rt, entonces el sistema usa el kernel estándar.
El siguiente resultado es un ejemplo:
#uname -r
3.10.0-1127.10.1.rt56.1106.el7
Descarga
Descargar el código fuente desde (allí buscar alguna versión de las tantas que la cual queramos instalar):
https://github.com/musical-chairs/linux/tags
En este tutorial usé yo el siguiente código fuente v5.0.21-rt16-avl4 el cual lo compilé en MX Linux 19 (que está basado en Debian 10 Buster):
https://github.com/musical-chairs/linux/releases/tag/v5.0.21-rt16-avl4
y la versión de MX Linux 19 la descargué desde:
https://sourceforge.net/projects/mx-linux/files/Old/
y exactamente la versión MX Linux 19.4 que yo me descargue vino con el Kernel 4.19 así que pienso que la versión del Kernel a compilar debería ser una versión lo más cercana a esta para esta version de Sistema Operativo, como también podría ser:Nota: También he compilado con estas mismas instrucciones a la versión del Kernel AV Linux v4.16.12-rt5-avl1:
https://github.com/musical-chairs/linux/releases/tag/v4.16.12-rt5-avl1
después de descargado hay que descomprimirlo:
y abrir una terminal dentro del código fuente
Nota: He compilado varios de esos Kernel y un par de ellos no tenían soporte para particiones exFAT (y yo hago el uso de dos particiones así), pero estos kernel indicados si tienen soporte para exFAT.
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í:
Copiar la configuración del Kernel de AV Linux a nuestra Compilación
Para lo siguiente debe estar ubicado en una terminal en el lugar donde está el código fuente de la carpeta descomprimida del kernel. Necesitamos poner el archivo .config desde el sistema operativo de AV Linux y para esto he copiado archivos importantes de AV Linux y creado un repositorio en Github y uno de ellos es el archivo de configuración para el Kernel. Ponga en la terminal lo siguiente:
wget -c https://github.com/wachin/AV-Linux-archivos-importantes/raw/master/AVL-MXE-2021.05.22-xfce4-openbox-i386.iso/usr/src/linux-headers-5.9.1-rt19avl1/.config
aquí una imagen:
y si activamos el ver los archivos ocultos, ejemplo en Thunar con Ctrl + H vemos ahora el archivo:
make menuconfig
aparece así:
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 ----).Nota: Una de las cosas importantes que dice es que para entrar en alguna opción que tenga sub opciones dar Enter, y para salir Esc dos veces.
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
El consejo que les doy es que no usen la tecla "Espacio" pues esa es para cambiar las opciones, y usted podría sin querer cambiar algo del Kernel y luego no sabría que cambió. Exepto que sepa lo que estuviera haciendo.
Verificar las configuraciones del Kernel
Verifiquemos si está todo correcto pues habremos cargado la configuración del Kernel de AV Linux:
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 |
Nota: Es posible que alguna de estas opciones en algunas versiones de los Kernel no aparezcan o no aparezcan con el mismo nombre.
Verificar el soporte exFAT, y añadirlo si no tiene
Podemos verificar si tiene o no soporte para el Sistema de
Archivos exFAT que en mi caso yo uso particiones con ese formato para
compartir archivos entre Widnows y Linux pues tengo dual boot
Como ejemplo en el siguiente Kernel:
v4.16.12-rt5-avl1
https://github.com/musical-chairs/linux/releases/tag/v4.16.12-rt5-avl1
Verifiquemos así (los pasos para llegar aquí están indicados arriba) damos Enter en:
File systems
y buscamos bastante abajo, debería de decir:
DOS/FAT/EXFAT/NT Filesystems
pero no dice eso sino que dice:
DOS/FAT/NT Filesystems
en este caso ese Kernel no tiene soporte para exFAT
Añadiendo soporte exFAT a un Kernel 5.0
Añadiendo el soporte del sistema de archivos exFAT a un Kernel 5.0.x
git clone https://github.com/arter97/exfat-linux exfat
menu "DOS/FAT/NT Filesystems"
source "fs/ntfs/Kconfig"
y modificar el archivo:
obj-$(CONFIG_FAT_FS) += fat/
obj-$(CONFIG_BFS_FS) += bfs/
obj-$(CONFIG_BFS_FS) += bfs/
así como muestra la siguiente captura de pantalla:
make menuconfig
Sigamos con el tutorial
Ahora si, seguimos con el Kernel 5.0.21 (si estaba usando otro siga con el de usted), presionaremos la tecla Tab o con la flecha derecha para ubicarnos en el menú Load:
y aparece así y dar Enter:
Ahora con Tab o flecha derecha llegar hasta Exit:
y dar Enter y repetir varias veces hasta que aparezca:
Nota: También se puede más rapido con Esc varias veces
y ahora aparece así en la terminal:
ELEGIR LA VELOCIDAD DE COMPILACIÓN (OPCIONAL)
Este paso es opcional, podemos exportar el nivel de concurrencia para la compilación *(Concurrencia es la acción de concurrir distintos sucesos o cosas en un mismo lugar o tiempo)*, para esto existen las siguientes opciones dependiendo de la cantidad de procesadores que usted tenga, para esto hay una regla la de agregar el número uno al número de núcleos que tenga su procesador, ejemplo:
Si usted tenga 2 núcleos debe poner
export CONCURRENCY_LEVEL=3
Si usted tenga 4 núcleos debe poner
export CONCURRENCY_LEVEL=5
Así mi laptop es una Dell Inspiron 1750 y tiene dos núcleos así yo debo de poner así:
export CONCURRENCY_LEVEL=3
ejemplo me quedó así:
esto es para que la compilación no se demore mucho
Compinado el Kernel etiquetandolo
Es posible Compilar el Kernel y ponerle una etiqueta como descripción. En el siguiente ejemplo en LOCALVERSION= está la etiqueta avlinux:
make deb-pkg LOCALVERSION=-avlinux 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.
Pero yo quiero que aparezca mi Nick Name o apodo, para eso pondré así:
make deb-pkg LOCALVERSION=-wachin KDEB_PKGVERSION=$(make kernelversion)-1
Debe ser sin ningún espacio.
ahora pongo una imagen de lo que sale al poner el comando:
Bueno ya se compiló, quizá se demoró unas 5 horas en compilar
ya fueron generados automáticamente los deb, y para instalarlos sugiero hacer lo siguiente
INSTALACIÓN DE LOS DEB DEL KERNEL
Fueron generados cuatro deb, y para la instalación sólo necesitamos dos así que lo mejor es que cojamos esos dos y los pongamos a parte
En el administrador de archivos, en este caso estoy usando Thunar irme atrás (pues estaba dentro de la carpeta del código fuente):
allí seleccionar los tres siguientes deb y cortarlos:
Nota: Hay un error en la explicación de la imagen de arriba, no son tres, sino son dos
así:
y pegarlos dentro de otra carpeta
así:
y allí con clic derecho abrir una terminal e instalarlos:
sudo dpkg -i *.deb
en la instalación aparecen unos mensajes, al menos aquí en MX Linux 19 pero no pasa nada
Requerimientos en MX Linux 21 recién instalado
sudo apto install gcc
para poder instalar el Kernel desde los deb que ha sido compilado, pues sino no se podrá instalar
Actualizar el Grub
Ahora es necesario actualizar el Grub porque si no lo hace no aparecerá disponible el Kernel al iniciar el ordenador
sudo update-grub
luego reiniciar
Eligiendo el Kernel RT
A la entrada seleccionar el Kernel, para eso elija la Opción Avanzada:
allí está el Kernel compilado:
además abajo se ve el otro que compilé e instalé:
quería probar los dos puesto que mi laptop Dell Inspiron 1750 tiene una tarjeta lectora de Memorias SD y saben en ambos Kernel 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)
Informe de Kernel compilados
En MX Linux 21
No pude compilar a:
https://github.com/musical-chairs/linux/releases/tag/v4.16.12-rt5-avl1
https://github.com/musical-chairs/linux/releases/tag/v5.0.7-rt5avl1
https://github.com/musical-chairs/linux/releases/tag/v5.0.10-rt7avl2
Compilados exitosamente
El siguiente Kernel lo pude compilar correctamente:
https://github.com/wachin/linux-avl/releases/tag/v5.6.10-rt5-avl1
este me va mejor, no se me ha colgado:
guardelos en alguna carpeta y abra una terminal allí y ponga:
sudo dpkg -i *.deb
Después de instalado reinicie el ordenador e ingrese en el grub con ese Kernel buscandolo en las configuraciones avanzadas del Kernel
Lo estoy probando y hasta el momento me funciona bien
Dios les bendiga
BASADO EN:
8.10. Compiling a Kernel
https://debian-handbook.info/browse/stable/sect.kernel-compilation.htm
Linux Kernel compilation – Phoenix
https://nongin.wordpress.com/tag/linux-kernel-compilation/
module - How to fix: fatal error: openssl/opensslv.h: No such file or directory in RedHat 7 - Stack Overflow
https://stackoverflow.com/questions/46008624/how-to-fix-fatal-error-openssl-opensslv-h-no-such-file-or-directory-in-redhat
"Error fatal: openssl / opensslv.h: no existe tal archivo o directorio" compilando mitmproxy
https://qastack.mx/ubuntu/797351/fatal-error-openssl-opensslv-h-no-such-file-or-directory-compiling-mitmproxy
Compiling the kernel 5.11.11 - Ask Ubuntu
https://askubuntu.com/questions/1329538/compiling-the-kernel-5-11-11
https://askubuntu.com/a/1329625/145772
eso era para evitar el error:
Guide for Debian Maintainers
https://www.debian.org/doc/manuals/debmake-doc/index.en.html
Chapter 3. Tool Setups
https://www.debian.org/doc/manuals/debmake-doc/ch03.en.html#email-setup
3.1. Email address
Various Debian maintenance tools recognize your email address and name to use by the shell environment variables $DEBEMAIL and $DEBFULLNAME.
Let’s setup these packages by adding the following lines to ~/.bashrc [7].
Add to the ~/.bashrc file.
DEBEMAIL="your.email.address@example.org"
DEBFULLNAME="Firstname Lastname"
export DEBEMAIL DEBFULLNAME}
BuildYourOwnKernel
https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel
Comentarios
Publicar un comentario