Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

DesarrolloEmuladoresInternetJuegosMultimediaSistema

Instalar The Regex Coach con WineOptimización RAM - RAMDefrag

Instalar un Kernel en GNU/Linux




Instalar un Kernel en GNU/Linux




Copyright

Copyright © José Luis Lara Carrascal  2007-2021   http://manualinux.eu



Sumario

Introducción
Instalación
Configuración del Kernel
Configuración de CacULE
Configuración de Project C
Los módulos
Enlaces




Introducción  

Hacer un manual genérico de la instalación de un kernel en GNU/Linux resulta bastante complicado, con lo que en este documento voy a explicar de forma clara y concisa cómo actualizo las versiones del kernel en mi sistema. Salvando las distancias posibles con el mundo Debian mucha de la información aquí expuesta debería de resultar válida para todos los usuarios de todas las distribuciones. En ningún momento pretendo crear un manual genérico, sino más bien una radiografía documentada de un proceso que suelo acometer cuando salen las nuevas versiones enteras (sin punto) del kernel de GNU/Linux.

Desde el 14-04-2019 se incluye una versión personal con los parches del planificador de CPU, MuQSS de Con Kolivas y el deduplicador de memoria, UKSM de Nai Xia, una alternativa más rápida que KSM, que impide que se utilice más de un proceso de una misma librería compartida cuando hay varias aplicaciones en ejecución dependientes de esa librería, produciendo un significativo ahorro de memoria a costa de un ligerísimo incremento del uso de la CPU. Este último lo tenemos que activar en la configuración del kernel, en Memory Management options >> Enable KSM for page merging >> Choose UKSM/KSM strategy >> Ultra-KSM for page merging.

Espero en próximas actualizaciones del manual, ampliar la información relativa a estos dos nuevos elementos que se incorporan a este documento. La actualización de este manual se hará siempre que esté disponible y funcional el parche de Con Kolivas, es decir, que ya no se actualizará en función de la nueva versión del kernel que aparezca. Por otro lado, la actualización siempre incluirá la última versión del kernel (con punto), cosa que antes no sucedía.

A partir del 01-01-2020 también se ha añadido soporte para el sistema de archivos Reiser4. Para activarlo como módulo nos vamos a File systems >> Reiser4 (EXPERIMENTAL), y hacemos clic dos veces para que se muestre un guión en la casilla. Si tenemos pensando pasar nuestra partición raíz del sistema a este sistema de archivos, volvemos a hacer clic dos veces para que se compile integrado en el kernel. Para más información sobre el montaje de este sistema de archivos me remito a la sección correspondiente de la wiki de la distribución Arch Linux.

Desde el 24-03-2020, se añaden al manual, las optimizaciones de CPU y adicionales incluidas en la mayoría de manuales de la web, además de incluir soporte de instalación con Clang. Reseñar también que el nivel de optimización por defecto pasa a ser el '-O3'. Si el usuario quiere utilizar el -O2, basta con ejecutar el siguiente comando en el directorio raíz del kernel:

# sed -i 's:-O3:-O2:' Makefile

También, a partir de esta fecha, se incluye otra versión personal, con el parche del planificador de CPU, Project C de Alfred Chen, de características similares a MuQSS, pero diferente desempeño y aplicación (no activa por defecto que el kernel sea preemptible y tampoco modifica la frecuencia del temporizador) al que se le añaden el resto de parches incluidos en la versión que incluye el parche de Con Kolivas

Desde el 19-08-2020, se incluye también una versión modificada del controlador de sensores IT87, cuyo código fuente podemos encontrar en este enlace, para poder visualizar correctamente la información de los sensores de placas base como la ASUS TUF B450-PLUS GAMING. Para poder cargar el controlador al inicio del sistema, ejecutamos el siguiente comando como root.

# echo it87 > /etc/modprobe.preload.d/it87

Desde el 01-09-2021, se incluye el soporte del controlador NTFS3 proporcionado por la compañía Paragon Software, para poder leer y escribir en particiones NTFS, que será incluido en la rama principal del kernel, a partir de la versión 5.15. El parche original lo podemos encontrar en este enlace. Para activarlo como módulo nos vamos a File systems >> NTFS Read-Write file system support, y hacemos clic dos veces para que se muestre un guión en la casilla.

Para sustituir las particiones que tengamos montadas con el vetusto y lento controlador, ntfs-3g, por éste, basta editar las entradas del archivo de configuración /etc/fstab y dejarlas así, un ejemplo.

/dev/sdb7 /mnt/win_o ntfs3 noatime,umask=000 0 0

Todas las opciones de montaje las podemos encontrar en este enlace, además de las opciones nativas del comando mount. Los usuarios que tengan montadas las particiones NTFS en locales que no estén en UTF-8, tendrán que añadir lo siguiente:

/dev/sdb7 /mnt/win_o ntfs3 noatime,umask=000,nls=iso8859-15 0 0

A partir del 23-09-2021, y, tras el abandono de Con Kolivas, del desarrollo de los parches del planificador de CPU, MuQSS, la versión del kernel incluida en este manual relativa a este proyecto se sustituye por una que incluye de forma experimental, el planificador de CPU, CacULE, cuyo desarrollo también ha sido abandonado, pero que, de momento, tiene alguien que lo mantiene.



Instalación  

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado el Kernel para la elaboración de este documento.

* GCC - (11.2.0) o Clang - (12.0.1)
* Gawk - (5.1.0)
* Make - (4.3)
* Bison - (3.8.2)
* Flex - (2.6.4)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 1.20.13)
* Freetype2 - (2.11.0)
* GTK+ - (2.24.33) - (si vamos a usar la interfaz gráfica GTK+ con make gconfig)
* Qt5 - (5.15.2) - (si vamos a usar la interfaz gráfica Qt con make xconfig)
* Ncurses - (6.2) - (si vamos a usar la interfaz gráfica Ncurses (en consola) con make menuconfig)

Aplicaciones

* Binutils - (2.37)
* E2fsprog - (1.46.4)
* Kmod - (29)
* Mkinitrd - (6.0.93)
* Procps-ng - (3.3.16)
* Reiser4progs - (1.2.1)
* Udev - (173)
* Util-linux - (2.37.2)
* Xfsprogs - (5.13.0)
* XZ Utils - (5.2.5)



Descarga

linux-5.14.8-cac.tar.xz  |  linux-5.14.8-prjc.tar.xz

Firma Digital Clave pública PGP

linux-5.14.8-cac.tar.xz.asc  |  linux-5.14.8-prjc.tar.xz.asc

Verificar la firma digital del paquete

$ gpg --import manualinux.asc
$ gpg --verify linux-5.14.8-cac.tar.xz.asc linux-5.14.8-cac.tar.xz

Optimizaciones

# export CFLAGS='-march=znver2 -mtune=znver2'

Donde pone znver2 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
Nota informativa sobre las optimizaciones para GCC
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Nota informativa sobre las optimizaciones para Clang
* La opción '-mtune=' está soportada a partir de la versión 3.4 de Clang.

* Los valores de color azul no son compatibles con Clang.

* Las filas con el fondo de color amarillo son valores exclusivos de Clang y, por lo tanto, no son aplicables con GCC.
Valores CPU
Genéricos
Intel
AMD

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
# export CFLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
# export CFLAGS+=' -fipa-pta'
Clang
New Pass Manager
# export {C,CXX}FLAGS+=' -fexperimental-new-pass-manager'
Esta optimización no es combinable con Polly en Clang 10 y superiores, al producirse un error de compilación.
Polly
# export CFLAGS+=' -mllvm -polly -mllvm -polly-vectorizer=stripmine'

Parámetros adicionales

Establecer el uso de enlazador dinámico para GNU ld
# export LD='ld.bfd'
Desde la versión 5.3 del kernel, éste no es compatible con GNU gold (versiones de Binutils 2.33 o superiores). Si lo tenemos como enlazador dinámico predefinido de nuestro sistema, estableceremos la variable de entorno correspondiente para que sea GNU ld el utilizado en el proceso de compilación.

Establecer el uso de enlazador dinámico para LLD
Clang
# export LD='ld.lld'

Establecer las variables de entorno para el uso de la optimización LTO/ThinLTO con Clang
# export LLVM=1 LLVM_IAS=1
Si se establecen estas variables no es necesario establecer la variable de entorno para LLD y la de uso de compilador para Clang. En cambio, si que es necesario establecer la de uso de Ccache con Clang.

Establecer la variable de entorno de uso de compilador para Clang
# export CC=clang
Si utilizamos Clang con Ccache, establecemos la variable de entorno correspondiente de uso de compilador.
# export CC="ccache clang"



Configuración del Kernel

1) Interfaz Gráfica - Qt

# tar Jxvf linux-5.14.8-cac.tar.xz
# cd linux-5.14.8-cac
# make xconfig

Parámetros de configuración opcionales

Cuando guardemos el archivo de configuración, ejecutamos los siguentes comandos en función de la optimización que vayamos a utilizar (solo hay que hacerlo la primera vez que vayamos a utilizar estas optimizaciones, en las posteriores se cargará la configuración que tengamos del kernel anterior, que ya las incluirá por defecto):

scripts/config -e LTO_CLANG : Activa el uso de la optimización LTO de Clang a partir de la versión 5.12 del kernel.

scripts/config -e LTO_CLANG_THIN : Activa el uso de la optimización ThinLTO de Clang a partir de la versión 5.12 del kernel.

Interfaz Gráfica - Qt


2) Interfaz Gráfica - GTK+

# tar Jxvf linux-5.14.8-cac.tar.xz
# cd linux-5.14.8-cac
# make gconfig


Parámetros de configuración opcionales

Cuando guardemos el archivo de configuración, ejecutamos los siguentes comandos en función de la optimización que vayamos a utilizar (solo hay que hacerlo la primera vez que vayamos a utilizar estas optimizaciones, en las posteriores se cargará la configuración que tengamos del kernel anterior, que ya las incluirá por defecto):

scripts/config -e LTO_CLANG : Activa el uso de la optimización LTO de Clang a partir de la versión 5.12 del kernel.

scripts/config -e LTO_CLANG_THIN : Activa el uso de la optimización ThinLTO de Clang a partir de la versión 5.12 del kernel.

Interfaz Gráfica - GTK2+


3) Interfaz Ncurses - Consola

# tar Jxvf linux-5.14.8-cac.tar.xz
# cd linux-5.14.8-cac
# make menuconfig


Parámetros de configuración opcionales

Cuando guardemos el archivo de configuración, ejecutamos los siguentes comandos en función de la optimización que vayamos a utilizar (solo hay que hacerlo la primera vez que vayamos a utilizar estas optimizaciones, en las posteriores se cargará la configuración que tengamos del kernel anterior, que ya las incluirá por defecto):

scripts/config -e LTO_CLANG : Activa el uso de la optimización LTO de Clang a partir de la versión 5.12 del kernel.

scripts/config -e LTO_CLANG_THIN : Activa el uso de la optimización ThinLTO de Clang a partir de la versión 5.12 del kernel.

Interfaz Gráfica - Ncurses



En la configuración del kernel la cosa ha mejorado mucho respecto a los de la serie 2.4, por la sencilla razón que, cuando ejecutamos la configuración, éste carga por defecto la que tengamos del kernel que estemos usando en nuestro directorio /boot/config-5.x.x. Lo que tendremos que hacer en primer lugar y quizá en último para muchos usuarios nóveles que no quieran complicarse la vida es seleccionar nuestro procesador en Processor type and features >> Processor family (NEW).

Como se puede ver en la captura de pantalla, la variedad de procesadores soportados para compilar el paquete es ridículo, de ahí que se haya incluido en el manual la información necesaria para que el usuario utilice la definición de procesador que le venga en gana, para compilar el paquete. Alternativamente a esto, si no se desea compilar el kernel como se explica en este manual, en este enlace podemos encontrar un parche actualizado a GCC 9 que recoge todos los procesadores compatibles, cuya definición podremos seleccionar desde esta misma ventana. Eso sí, las optimizaciones adiciones como Graphite, IPA o Polly según compilador tendremos que añadirlas de la misma forma que explico en el manual.


Tipo de Procesador



Configuración de CacULE  

Dado el poco tiempo que llevo utilizando este planificador, no puedo recomendar ningún tipo de configuración específica. Sí tengo que decir que, con los valores predefinidos, no he tenido ninguna pérdida de rendimiento, y respecto a BMQ, pierde en monohilo y gana en multihilo. El temporizador lo tengo configurado en 1000 HZ. pero en la documentación del planificador original, ULE de FreeBSD, recomiendan 100 HZ. para el kernel de FreeBSD.

1) Opciones que se pueden establecer en tiempo de ejecución y hacer permanentes editando /etc/sysctl.conf

Opciones adicionales que se pueden establecer en tiempo de ejecución y hacer permanentes editando /etc/sysctl.conf
Parámetro Descripción
kernel.sched_interactivity_factor = 32768 Establece el cálculo de puntuación de interactividad del kernel en milisegundos, entre un valor de 1 a 65536. El valor por defecto es 32768. Podemos encontrar más información de cómo funciona este parámetro en el documento que describe el planificador de CPU, ULE de FreeBSD, que es en el que está basado CacULE.
kernel.sched_max_lifetime_ms = 22000 Establece el tiempo máximo de vida de una tarea en milisegundos. El valor por defecto es 22 segundos (22000 ms.). 

Para establecerlas al vuelo, basta ejecutar el siguiente comando como root, un ejemplo:

# sysctl -w kernel.sched_interactivity_factor=50

Para hacerlas permanentes, editamos el archivo /etc/sysctl.conf como root y las añadimos al mismo. Un ejemplo:

# Kernel sysctl configuration file for Mandriva Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

kernel.sched_interactivity_factor = 50
kernel.sched_max_lifetime_ms = 60000



Configuración de Project C  

Project C se compone de dos planificadores de CPU: BMQ (el predefinido) y PDS, cuyo uso podemos seleccionar en General Setup >> Scheduler features >> Alternative CPU schedulers de la configuración gráfica del kernel. Mi experiencia personal con PDS (derivado de MUQSS) se remonta a cuando tenía el anterior procesador (AMD Phenom X4 965), y era frustrante ver cómo estando compilando un paquete, abría el navegador web y los núcleos de la CPU descendían en velocidad al mínimo, dejando muerto el proceso de compilación. Con el actual procesador que tengo (AMD Ryzen 3 3100) no lo he probado, pero el escaso tiempo que llevo usando BMQ, noto una ligera ganancia de rendimiento en monohilo y una ligera bajada en multihilo (habrá que esperar a Liquorix). El temporizador lo tengo configurado en 300 Hz. (valor recomendable para estos planificadores), el kernel es preemptible y la opción sched_timeslice está en 2, que es el valor recomendable para este tipo de kernel.

1) Opciones a pasarle al cargador de inicio del kernel

Opciones a pasarle al cargador de inicio del kernel
Parámetro Descripción
sched_timeslice=4 Establece el intervalo de tiempo en milisegundos que tardará el planificador de CPU, en dar prioridad de un proceso a otro. En sistemas PREEMPTIBLES el valor recomendable es 2 (2 ms.). El valor por defecto es 4 (4 ms.).

2) Opciones adicionales que se pueden establecer en tiempo de ejecución y hacer permanentes editando /etc/sysctl.conf

Opciones adicionales que se pueden establecer en tiempo de ejecución y hacer permanentes editando /etc/sysctl.conf
Parámetro Descripción
kernel.yield_type = 1 Establece el tipo de llamada que se realizará a sched_yield. Puede ser:

0 : Ninguna.
1 : Desimpulsa la tarea y la pone en cola de ejecución (valor por defecto).
2 : Establece la tarea de omisión de la cola de ejecución.



Los módulos  

Los kernel que traen las distribuciones de serie vienen atestados de infinidad de módulos que nunca vamos a usar, así que lo primero que deberíamos de hacer es tomar nota de los dispositivos que tenemos en nuestro sistema (si no lo tenemos claro dejarlo todo como está y sólo configurar lo antes comentado respecto al tipo de procesador) y conocer de antemano qué módulos están relacionados con los mismos, bastaría ejecutar un lsmod como root para comprobar esto.

Indicar para finalizar lo referente a la configuración que el sistema de archivos que vayamos a usar por defecto debe de estar siempre soportado directamente por el kernel y que en la interfaz GTK+ los módulos se activan con el guión en el cuadrado y el soporte directo del kernel con el otro símbolo como se puede ver en la imagen de abajo, donde XFS está soportado directamente por el kernel y ReiserFS está configurado para ser compilado como módulo.


Módulos

Una vez lo tenemos claro respecto a la configuración pulsamos en File >> Save y esta quedará guardada, ya sólo nos queda salirnos de la interfaz gráfica de configuración y compilar el kernel.



Compilación

# make -j$(getconf _NPROCESSORS_ONLN) cflags-y="${CFLAGS}"

Explicación de los comandos

-j$(getconf _NPROCESSORS_ONLN) : Establece el número de procesos de compilación en paralelo, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

cflags-y="${CFLAGS}" : Sincroniza la variable de entorno CFLAGS establecida en el manual, con la variable específica que utiliza el paquete, para añadir optimizaciones adicionales. Si se añaden optimizaciones de CPU, este parámetro sobreescribirá las que se hayan establecido en la interfaz de configuración del kernel, de eso se trata precisamente.

Instalación de los módulos

# make modules_install

Instalación del Kernel  Bloc de Notas Información general sobre el uso de los comandos

Sustituir cac por prjc si estamos compilando la versión que contiene el planificador de CPU, Project C. Esto es aplicable a todos los comandos de este manual que contengan el sufijo cac.

# cp arch/x86/boot/bzImage /boot/vmlinuz-5.14.8-cac
# cp .config /boot/config-5.14.8-cac
# cp System.map /boot/System.map-5.14.8-cac
# mkinitrd /boot/initrd-5.14.8-cac.img 5.14.8-cac

Explicación de los comandos

cp arch/x86/boot/bzImage /boot/vmlinuz-5.14.8-cac : Copiamos la imagen del kernel comprimida al directorio /boot, y la renombramos a vmlinuz-5.14.8-cac.

cp .config /boot/config-5.14.8-cac
: Copiamos el archivo de configuración del kernel que hemos compilado al directorio /boot, renombrándolo a config-5.14.8-cac, y que servirá de referencia para futuras compilaciones del kernel.

cp System.map /boot/System.map-5.14.8-cac
: Copiamos el archivo System.map al directorio /boot, renombrándolo a System.map-5.14.8-cac, este archivo contiene toda la información requerida para la carga de los módulos.

mkinitrd /boot/initrd-5.14.8-cac.img 5.14.8-cac
: Creamos la imagen de carga del kernel tomando como referencia el directorio de los módulos instalados (no es necesario indicar la ruta completa del mismo).



Configuración e Instalación de Lilo

Abrimos el archivo /etc/lilo.conf con un editor de texto y añadimos el kernel nuevo (con y sin el framebuffer activado) dejando el actual como segunda opción de arranque, un ejemplo,

# File generated by DrakX/drakboot
# WARNING: do not forget to run lilo after modifying this file

default="Linux"
boot=/dev/disk/by-id/ata-ST1000DM010-2EP102_ZN1EH4Q3
map=/boot/map
keytable=/boot/es-latin1.klt
menu-scheme=wb:bw:wb:bw
prompt
nowarn
timeout=100
message=/boot/message
image=/boot/vmlinuz
    label="Linux"
    root="UUID=2e9b242e-4cb0-4688-8d5d-7d153b3f0e49"
    initrd=/boot/initrd.img
    append="video=vesafb:ywrap,mtrr:3 nouveau.config=NvBoost=1 iommu=memaper zswap.enabled=1 zswap.zpool=z3fold zswap.compressor=lz4"
    vga=791
    read-only
image=/boot/vmlinuz-5.14.7-cac
    label="Linux-5.14.7"
    root="UUID=2e9b242e-4cb0-4688-8d5d-7d153b3f0e49"
    initrd=/boot/initrd-5.14.7-cac.img
    append="video=vesafb:ywrap,mtrr:3 nouveau.config=NvBoost=1 iommu=memaper zswap.enabled=1 zswap.zpool=z3fold zswap.compressor=lz4 rqshare=llc"
    vga=791
    read-only
image=/boot/vmlinuz
    label="Linux-nofb"
    root="UUID=2e9b242e-4cb0-4688-8d5d-7d153b3f0e49"
    initrd=/boot/initrd.img
    append="noapic nouveau.config=NvBoost=1 iommu=memaper zswap.enabled=1 
zswap.zpool=z3fold zswap.compressor=lz4"
    read-only
other=/dev/sda2
    label="Windows-10"
    table=/dev/sda


Lo guardamos y ejecutamos la instalación del cargador de arranque,

# lilo

Para terminar, es recomendable tener siempre las fuentes completas del kernel con éste compilado, aunque esto en sistemas con poco espacio en disco resulte complicado, pues hagan lo que hacía yo antes de comprarme el nuevo disco duro, comprimir el directorio y guardarlo en un cd, cuando haga falta su uso volver a descomprimirlo en su sitio correspondiente.

Desinstalación del Kernel  

Siguiendo el mismo sistema que he instaurado en los manuales de la web, incluyo los scripts de desinstalación, copia de respaldo y restauración de copia de los binarios creados del kernel (módulos incluidos) y los archivos de configuración ubicados en el directorio /boot. Queda excluido de estos el directorio de las fuentes. 

kernel-5.14.8-cac-scripts.tar.gz  |  kernel-5.14.8-prjc-scripts.tar.gz

$ su
# tar zxvf kernel-5.14.8-cac-scripts.tar.gz
# cd kernel-5.14.8-cac-scripts
# ./Desinstalar_kernel-5.14.8-cac

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su
# tar zxvf kernel-5.14.8-cac-scripts.tar.gz
# cd kernel-5.14.8-cac-scripts
# ./Respaldar_kernel-5.14.8-cac

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_kernel-5.14.8-cac



Enlaces  


http://www.kernel.org >> La web del Kernel.

http://www.users.on.net/~ckolivas/kernel >> La web de Con Kolivas.

https://github.com/dolohow/uksm >> Enlace al proyecto en GitHub de UKSM.

https://cchalpha.blogspot.com >> El blog de Alfred Chen, mantenedor del planificador de CPU, Project C, de características similares a MuQSS.

https://reiser4.wiki.kernel.org/index.php/Main_Page >> Enlace a la página principal dedicada a Reiser4 en la web del kernel.

https://wiki.archlinux.org/index.php/Reiser4 >> Enlace a la sección dedicada a Reiser4 en la wiki de la distribución Arch Linux.

https://marc.info/?l=reiserfs-devel&m=157780043509663&w=2 >> Enlace al anuncio de lo que será la próxima versión 5 de Reiser4 y cuyos parches experimentales ya están disponibles en SourceForge.

https://www.phoronix.com/scan.php?page=search&q=Reiser4 >> Información relacionada con Reiser4 en la web de Phoronix.

https://github.com/hamadmarri/cacule-cpu-scheduler >> Enlace al proyecto archivado de CacULE en GitHub.

https://github.com/CachyOS/cacule-cpu-scheduler >> Enlace al continuador del proyecto de CacULE en GitHub.

https://xanmod.org >> Enlace a la web de XanMod, un kernel personalizado que contiene el planificador de CPU, CacULE, además de otras optimizaciones incluidas.

https://github.com/zen-kernel/zen-kernel >> Enlace al proyecto de Zen Kernel en GitHub, un kernel personalizado cuyas características podemos encontrar en este enlace.

https://gitlab.com/post-factum/pf-kernel >> Enlace al proyecto de pf-kernel en GitLab, un kernel personalizado cuyas características podemos encontrar en este enlace.

https://browser.geekbench.com/user/340208 >> Enlace a la cuenta de Manualinux en Geekbench, un medidor de rendimiento de nuestro sistema, en línea.


Foro Galería Blog


Actualizado el 26-09-2021

Instalar un Kernel en GNU/Linux

Instalar The Regex Coach con WineOptimización RAM - RAMDefrag