Uno de los elementos más fundamentales en cualquier distribución de Linux es el kernel y aunque hemos escuchado hablar de él, en muchas ocasiones no sabemos con certeza que papel cumple en el sistema.
El kernel de Linux es básicamente el componente central del sistema operativo GNU/Linux, y su función está ligada en manejar los recursos de hardware del equipo tales como la CPU, la memoria y los discos duros, y de este modo ofrecer el mejor uso de estos recursos, y del mismo modo con el kernel se proporcionan controladores para los dispositivos que están conectados a distintos buses del sistema como USB, PCI, SATA o IDE.
Por temas de administración o de control en algunos casos puntuales podemos recurrir a algún kernel de Linux compilado de forma personalizada con el fin de habilitar o deshabilitar funciones específicas de dicho Kernel, las cuales no están disponibles por defecto en el kernel de la distribución. Para ello, Solvetic explicará en detalle cómo compilar y usar el kernel de Linux más reciente tomado de las fuentes en CentOS 7.
1. Cómo instalar los paquetes necesarios para compilar Kernel Linux CentOS 7
En primer lugar, vamos a actualizar los repositorios de los paquetes de software, proceder a instalar las herramientas de desarrollo necesarias para compilar un kernel, e instalar la biblioteca ncurses con el comando yum de la siguiente forma:
yum update yum install -y ncurses-devel make gcc bc bison flex elfutils-libelf-devel openssl-devel grub2
2. Cómo compilación e instalar Kernel de Linux CentOS 7
El siguiente paso a dar consiste en descargar las últimas fuentes de Kernel 4.17 haciendo uso del comando wget en el directorio /usr/src/ o de forma alterna descargar el último núcleo visitando el siguiente enlace:
En primer lugar, accedemos al directorio indicado:
cd /usr/src/Luego descargamos el kernel ejecutando:
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.17.11.tar.xz
Procedemos a extraer los archivos comprimidos y modificar los directorios haciendo uso de siguientes comandos:
tar -xvf linux-4.17.11.tar.xz
Ahora accedemos al directorio del kernel de la siguiente forma:
cd linux-4.17.11/
3. Cómo configurar Kernel Linux en CentOS 7
El Kernel para CentOS 7 debe estar configurado de forma correcta con las siguientes opciones de configuración que son requeridas dentro del entorno del sistema:
CONFIG_KVM_GUEST=y CONFIG_VIRTIO_PCI=y CONFIG_VIRTIO_PCI_LEGACY=y CONFIG_BLK_DEV_SD CONFIG_SCSI_VIRTIO=y CONFIG_VIRTIO_NET=y CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=yAhora vamos a copiar la configuración de Kernel en ejecución (.config) desde el directorio /boot al nuevo kernel Linux-4.17.11 de la siguiente forma:
cp -v /boot/config-3.10.0-693.5.2.el7.x86_64 /usr/src/linux-4.17.11/.configAhora vamos a ejecutar el comando make menuconfig con el fin de configurar el kernel de Linux, y tan pronto sea ejecutado el comando, se desplegará una ventana emergente con todos los menús del kernel, allí será posible habilitar o deshabilitar ciertas características del kernel y si deseamos salir basta con pulsar la tecla ESC para salir del asistente.
Se desplegará el siguiente asistente, allí definiremos los parámetros según consideremos necesario.
Cuando hagamos los cambios deseados seleccionamos la opción Save para aplicar estos cambios y veremos lo siguiente. Seleccionamos "Ok" para finalizar el proceso.
Sera desplegado lo siguiente, pulsamos en "Exit" para salir del asistente.
4. Cómo compilar el kernel en CentOS 7 (Linux)
Antes de iniciar el proceso debemos validar el espacio libre en el sistema de archivos, para ello ejecutamos lo siguiente:
df -h
Ahora vamos a compilar e instalar el kernel y los módulos con los siguientes comandos, esto puede tardar un tiempo considerable, el proceso de compilación asigna los archivos en el directorio /boot y crea una nueva entrada al kernel en el archivo grub.conf:
make bzImage make modules make make install make modules_install
Una vez que este proceso finalice, vamos a reiniciar el sistema y verificamos el nuevo kernel ejecutando lo siguiente:
uname -sr
De esta forma hemos aprendido a compilar el kernel de Linux en CentOS 7.