Cómo instalar o actualizar a Kernel 5.0 en CentOS 7


Aunque algunas personas usan la palabra Linux para representar el sistema operativo como un todo, es importante notar que, estrictamente hablando, Linux es solo el núcleo. Por otro lado, una distribución es un sistema completamente funcional construido sobre el kernel con una amplia variedad de herramientas de aplicación y bibliotecas.

Durante las operaciones normales, el kernel es responsable de realizar dos tareas importantes:

  1. Actuar como una interfaz entre el hardware y el software que se ejecuta en el sistema.
  2. Administrar los recursos del sistema de la manera más eficiente posible.

Para ello, el kernel se comunica con el hardware a través de los controladores que están integrados en él o los que se pueden instalar posteriormente como módulo.

Por ejemplo, cuando una aplicación que se ejecuta en su máquina quiere conectarse a una red inalámbrica, envía esa solicitud al kernel, que a su vez usa el controlador correcto para conectarse a la red.

Con la aparición periódica de nuevos dispositivos y tecnología, es importante mantener nuestro kernel actualizado si queremos aprovecharlos al máximo. Además, la actualización de nuestro kernel nos ayudará a aprovechar las nuevas funciones del kernel y a protegernos de las vulnerabilidades que se han descubierto en versiones anteriores.

¿Listo para actualizar su kernel en CentOS 7 o uno de sus derivados como RHEL 7 y Fedora? Si es así, ¡sigue leyendo!

Paso 1: Verificación de la versión del kernel instalada

Cuando instalamos una distribución, incluye una determinada versión del kernel de Linux. Para mostrar la versión actual instalada en nuestro sistema podemos hacer:

# uname -sr

La siguiente imagen muestra el resultado del comando anterior en un servidor CentOS 7:

Si ahora vamos a https://www.kernel.org/, veremos que la última versión del kernel es 5.0 en el momento de escribir este artículo (hay otras versiones disponibles en el mismo sitio).

Esta nueva versión del Kernel 5.0 es una versión a largo plazo y tendrá soporte durante 6 años, antes todas las versiones del Kernel de Linux solo fueron compatibles durante 2 años.

Una cosa importante a considerar es el ciclo de vida de una versión del kernel: si la versión que está utilizando actualmente se acerca al final de su vida útil, no se proporcionarán más correcciones de errores después de esa fecha. Para obtener más información, consulte la página de versiones del kernel.

Paso 2: Actualización del Kernel en CentOS 7

La mayoría de las distribuciones modernas proporcionan una forma de actualizar el kernel utilizando un sistema de administración de paquetes como yum y un repositorio con soporte oficial.

Importante: si desea ejecutar un Kernel compilado personalizado, debe leer nuestro artículo que explica Cómo compilar el kernel de Linux en CentOS 7 a partir de las fuentes.

Sin embargo, esto solo realizará la actualización a la versión más reciente disponible en los repositorios de la distribución, no la última disponible en https://www.kernel.org/. Desafortunadamente, Red Hat solo permite actualizar el kernel usando la primera opción.

A diferencia de Red Hat, CentOS permite el uso de ELRepo, un repositorio de terceros que convierte la actualización a una versión reciente en un kernel.

Para habilitar el repositorio ELRepo en CentOS 7, haga:

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 

Una vez que se ha habilitado el repositorio, puede usar el siguiente comando para listar los paquetes relacionados con kernel disponibles:

# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * elrepo-kernel: mirror-hk.koddos.net
Available Packages
kernel-lt.x86_64                        4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-devel.x86_64                  4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-doc.noarch                    4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-headers.x86_64                4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-tools.x86_64                  4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-tools-libs.x86_64             4.4.176-1.el7.elrepo        elrepo-kernel
kernel-lt-tools-libs-devel.x86_64       4.4.176-1.el7.elrepo        elrepo-kernel
kernel-ml.x86_64                        5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-devel.x86_64                  5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-doc.noarch                    5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-headers.x86_64                5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools.x86_64                  5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools-libs.x86_64             5.0.0-1.el7.elrepo          elrepo-kernel
kernel-ml-tools-libs-devel.x86_64       5.0.0-1.el7.elrepo          elrepo-kernel
perf.x86_64                             5.0.0-1.el7.elrepo          elrepo-kernel
python-perf.x86_64                      5.0.0-1.el7.elrepo          elrepo-kernel

A continuación, instale el último kernel estable de la línea principal:

# yum --enablerepo=elrepo-kernel install kernel-ml
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.mirror.net.in
 * elrepo: mirror-hk.koddos.net
 * elrepo-kernel: mirror-hk.koddos.net
 * epel: repos.del.extreme-ix.org
 * extras: centos.mirror.net.in
 * updates: centos.mirror.net.in
Resolving Dependencies
--> Running transaction check
---> Package kernel-ml.x86_64 0:5.0.0-1.el7.elrepo will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================
 Package                Arch        Version                 Repository        Size
====================================================================================
Installing:
 kernel-ml              x86_64      5.0.0-1.el7.elrepo      elrepo-kernel     47 M

Transaction Summary
====================================================================================
Install  1 Package

Total download size: 47 M
Installed size: 215 M
Is this ok [y/d/N]: y
Downloading packages:
kernel-ml-5.0.0-1.el7.elrepo.x86_64.rpm                           |  47 MB  00:01:21     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : kernel-ml-5.0.0-1.el7.elrepo.x86_64                1/1 
  Verifying  : kernel-ml-5.0.0-1.el7.elrepo.x86_64                1/1 

Installed:
  kernel-ml.x86_64 0:5.0.0-1.el7.elrepo                                                                                                                                                                            

Complete!

Finalmente, reinicie su máquina para aplicar el último kernel, y luego seleccione el último kernel del menú como se muestra.

Inicie sesión como root y ejecute el siguiente comando para verificar la versión del kernel:

# uname -sr

Paso 3: establecer la versión predeterminada del kernel en GRUB

Para que la versión recién instalada sea la opción de arranque predeterminada, deberá modificar la configuración de GRUB de la siguiente manera:

Abra y edite el archivo/etc/default/grub y configure GRUB_DEFAULT u003d 0 . Esto significa que el primer kernel de la pantalla inicial de GRUB se utilizará por defecto.

GRUB_TIMEOUT=5
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/root rd.lvm.lv=centos/swap crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

A continuación, ejecute el siguiente comando para recrear la configuración del kernel.

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.0.0-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.0.0-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-4.20.0-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.20.0-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-4.19.11-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.19.11-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-4.19.0-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.19.0-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-957.1.3.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.1.3.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-1e2b46dbc0c04b05b592c837c366bb76
Found initrd image: /boot/initramfs-0-rescue-1e2b46dbc0c04b05b592c837c366bb76.img
done

Reinicie y verifique que el último kernel se esté utilizando de forma predeterminada.

¡Felicidades! ¡Ha actualizado su kernel en CentOS 7!

En este artículo hemos explicado cómo actualizar fácilmente el kernel de Linux en su sistema. Hay otro método que no hemos cubierto ya que implica compilar el kernel desde el código fuente, lo que merecería un libro completo y no se recomienda en sistemas de producción.

Aunque representa una de las mejores experiencias de aprendizaje y permite una configuración detallada del kernel, es posible que inutilice su sistema y tenga que reinstalarlo desde cero.

Si todavía está interesado en construir el kernel como una experiencia de aprendizaje, encontrará instrucciones sobre cómo hacerlo en la página Kernel Newbies.

Como siempre, no dude en utilizar el formulario a continuación si tiene alguna pregunta o comentario sobre este artículo.