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-2019   http://manualinux.eu



Sumario

Introducción
Instalación
Configuración del Kernel
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.



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 - (8.3.0)
* Gawk - (5.0.0)
* Make - (4.2.1)
* Bison - (3.3.2)
* Flex - (2.6.4)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 1.20.4)
* Freetype2 - (2.8)
* GTK+ - (2.24.32) - (si vamos a usar la interfaz gráfica GTK+ con make gconfig)
* Qt - (3.3.8b) - (si vamos a usar la interfaz gráfica Qt con make xconfig)
* Ncurses - (6.1) - (si vamos a usar la interfaz gráfica Ncurses (en consola) con make menuconfig)

Aplicaciones

* E2fsprog - (1.45.0)
* Xfsprogs - (4.20.0)
* Mkinitrd - (6.0.93)
* Procps-ng - (3.3.15)
* Udev - (173)
* Binutils - (2.32)
* Util-linux - (2.33.2)
* Module-init-tools - (3.15)
* XZ Utils - (5.2.4)



Descarga

linux-5.0.9-ck1.tar.xz

Firma Digital  Clave pública PGP

linux-5.0.9-ck1.tar.xz.asc

Verificar la firma digital del paquete

$ gpg --import manualinux.asc
$ gpg --verify linux-5.0.9-ck1.tar.xz.asc linux-5.0.9-ck1.tar.xz



Configuración del Kernel

1) Interfaz Gráfica - Qt


# tar Jxvf linux-5.0.9-ck1.tar.xz
# cd linux-5.0.9-ck1
# make xconfig

Interfaz Gráfica - Qt


2) Interfaz Gráfica - GTK+

# tar Jxvf linux-5.0.9-ck1.tar.xz
# cd linux-5.0.9-ck1
# make gconfig


Interfaz Gráfica - GTK2+


3) Interfaz Ncurses - Consola

# tar Jxvf linux-5.0.9-ck1.tar.xz
# cd linux-5.0.9-ck1
# make menuconfig


Interfaz Gráfica - Ncurses



Siempre utilizo la interfaz GTK+, en cuanto a 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)


Tipo de Procesador



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, pero posiblemente a los usuarios nóveles este tema les asuste un poco y para no complicar el manual cualquier consulta respecto a este tema mejor plantearla en Manualinux - Foro.

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

Parámetros de compilación opcionales

-j2 : Si tenemos un procesador de doble núcleo (dual-core), y el kernel que estamos utilizando actualmente, está optimizado para el mismo y es SMP, con este parámetro aumentaremos el número de procesos de compilación simultáneos a un nivel de 2 y aceleraremos el tiempo de compilación del nuevo kernel de forma considerable.

-j4 : Lo mismo que arriba pero con procesadores de 4 núcleos (quad-core).

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

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

Explicación de los comandos

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

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

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

mkinitrd /boot/initrd-5.0.9-ck1.img 5.0.9-ck1
: 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/sda
map=/boot/map
keytable=/boot/es-latin1.klt
menu-scheme=wb:bw:wb:bw
prompt
nowarn
timeout=100
message=/boot/message
image=/boot/vmlinuz-5.0.9-ck1
    label="Linux"
    root=/dev/sda2
    initrd=/boot/initrd-5.0.9-ck1.img
    append="quiet noapic acpi=off splash=verbose"
    vga=791
    read-only
other=/dev/sda1
    label="Windows"
    table=/dev/sda
image=/boot/vmlinuz-5.0.9-ck1
    label="Linux-nofb"
    root=/dev/sda2
    initrd=/boot/initrd-5.0.9-ck1.img
    append="noapic acpi=off splash=verbose"
    read-only
image=/boot/vmlinuz-5.0.8-ck1
    label="Linux-5.0.8"
    root=/dev/sda2
    initrd=/boot/initrd-5.0.8-ck1.img
    append="quiet noapic acpi=off splash=verbose"
    vga=791
other=/dev/fd0
    label="Disquete"
    unsafe

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.0.9-ck1-scripts.tar.gz

$ su
# tar zxvf kernel-5.0.9-ck1-scripts.tar.gz
# cd kernel-5.0.9-ck1-scripts
# ./Desinstalar_kernel-5.0.9-ck1

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.0.9-ck1-scripts.tar.gz
# cd kernel-5.0.9-ck1-scripts
# ./Respaldar_kernel-5.0.9-ck1

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.0.9-ck1



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://github.com/sirlucjan/kernel-patches/tree/master/5.0 >> Enlace a los parches actualizados de UKSM.

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


Foro Galería Blog


Actualizado el 20-04-2019

Instalar un Kernel en GNU/Linux

Instalar The Regex Coach con WineOptimización RAM - RAMDefrag