Cómo instalar la última versión del kernel - ya pre-compilada - en un sistema operativo Linux distribución CentOS versión 7, paso a paso, desde un repositorio third-party.
Cuando instalamos CentOS 7 desde una imagen oficial, el sistema se instala con el Kernel 3.10, el cual está algo anticuado a día de hoy (el Kernel de Linux ya va por la rama 4), por lo que es recomendable instalar una versión superior del mismo en el sistema. Idealmente, se debería instalar la última versión liberada del Kernel, la cual podemos conocer accediendo a https://www.kernel.org.
Como decía, una opción para instalar un nuevo kernel es descargar su código fuente desde kernel.org y compilarlo, pero es una tarea larga y compleja. Para simplificar las cosas, podemos instalar un kernel pre-compilado desde un repositorio third-party como por ejemplo "ELRepo".
Para activar el repositorio "ELRepo" en CentOS 7:
Una vez instalado el repositorio, podemos buscar todos los kernels disponibles en él con:
Ahora toca instalar la última versión estable:
Cuando acabe la instalación, reiniciamos la máquina. Durante el inicio, en el menú de GRUB, deberíamos ver el nuevo kernel instalado. Lo seleccionamos y arrancamos el sistema:
Una vez en la consola, podemos configurar GRUB para que arranque el sistema con el nuevo kernel por defecto. Para hacer esto, editamos el archivo /etc/default/grub y configuramos el parámetro GRUB_DEFAULT cambiando el valor 1 por 0:
Esto hará que el primer kernel de la lista de GRUB sea el kernel con el que el sistema arranque por defecto. Guardamos los cambios de configuración de arranque con el comando grub2-mkconfig:
Reiniciamos la máquina y verificamos que el sistema arranque con el nuevo kernel por defecto. Lo podemos comprobar con el comando uname una vez lleguemos a la consola:
Si detectamos que algo no funciona como debería, siempre podemos arrancar el sistema con el antiguo kernel eligiéndolo en la lista de GRUB.
Cuando instalamos CentOS 7 desde una imagen oficial, el sistema se instala con el Kernel 3.10, el cual está algo anticuado a día de hoy (el Kernel de Linux ya va por la rama 4), por lo que es recomendable instalar una versión superior del mismo en el sistema. Idealmente, se debería instalar la última versión liberada del Kernel, la cual podemos conocer accediendo a https://www.kernel.org.
Como decía, una opción para instalar un nuevo kernel es descargar su código fuente desde kernel.org y compilarlo, pero es una tarea larga y compleja. Para simplificar las cosas, podemos instalar un kernel pre-compilado desde un repositorio third-party como por ejemplo "ELRepo".
Para activar el repositorio "ELRepo" en CentOS 7:
[root@host ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@host ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
Una vez instalado el repositorio, podemos buscar todos los kernels disponibles en él con:
[root@host ~]# yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Complementos cargados:fastestmirror
Loading mirror speeds from cached hostfile
* elrepo-kernel: www.jules.fm
Paquetes disponibles
kernel-lt.x86_64 4.4.158-1.el7.elrepo elrepo-kernel
kernel-lt-devel.x86_64 4.4.158-1.el7.elrepo elrepo-kernel
kernel-lt-doc.noarch 4.4.158-1.el7.elrepo elrepo-kernel
kernel-lt-headers.x86_64 4.4.158-1.el7.elrepo elrepo-kernel
kernel-lt-tools.x86_64 4.4.158-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 4.4.158-1.el7.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 4.4.158-1.el7.elrepo elrepo-kernel
kernel-ml-devel.x86_64 4.18.10-1.el7.elrepo elrepo-kernel
kernel-ml-doc.noarch 4.18.10-1.el7.elrepo elrepo-kernel
kernel-ml-headers.x86_64 4.18.10-1.el7.elrepo elrepo-kernel
kernel-ml-tools.x86_64 4.18.10-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 4.18.10-1.el7.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 4.18.10-1.el7.elrepo elrepo-kernel
perf.x86_64 4.18.10-1.el7.elrepo elrepo-kernel
python-perf.x86_64
Ahora toca instalar la última versión estable:
[root@host ~]# yum --enablerepo=elrepo-kernel install kernel-ml
Cuando acabe la instalación, reiniciamos la máquina. Durante el inicio, en el menú de GRUB, deberíamos ver el nuevo kernel instalado. Lo seleccionamos y arrancamos el sistema:
Una vez en la consola, podemos configurar GRUB para que arranque el sistema con el nuevo kernel por defecto. Para hacer esto, editamos el archivo /etc/default/grub y configuramos el parámetro GRUB_DEFAULT cambiando el valor 1 por 0:
[root@host ~]# vi /etc/default/grub
GRUB_DEFAULT=0
Esto hará que el primer kernel de la lista de GRUB sea el kernel con el que el sistema arranque por defecto. Guardamos los cambios de configuración de arranque con el comando grub2-mkconfig:
[root@host ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.18.10-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.18.10-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-862.14.4.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.14.4.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-862.11.6.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.11.6.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-d114c821418141b4989f03970795ddeb
Found initrd image: /boot/initramfs-0-rescue-d114c821418141b4989f03970795ddeb.img
done
Reiniciamos la máquina y verificamos que el sistema arranque con el nuevo kernel por defecto. Lo podemos comprobar con el comando uname una vez lleguemos a la consola:
[root@host ~]# uname -a
Linux host 4.18.10-1.el7.elrepo.x86_64 #1 SMP Wed Sep 26 16:20:39 EDT 2018 x86_64 x86_64 x86_64 GNU/Linux
Si detectamos que algo no funciona como debería, siempre podemos arrancar el sistema con el antiguo kernel eligiéndolo en la lista de GRUB.