Kernel Linux, descubre cómo es el corazón de este sistema operativo

Normalmente, cuando hablamos de Linux, solemos hacerlo en relación a distribuciones como Ubuntu, Debian, Mint, etc. Sin embargo, estas distribuciones no son sistemas operativos como tal, sino más bien son «adaptaciones» de un sistema operativo de código abierto: Linux. Y, por lo tanto, a pesar de las peculiaridades de cada una, todas ellas comparten una misma base, lo que conocemos como Kernel Linux.

Linux, como indica su propia documentación, nació como un clon de otro sistema operativo llamado Unix. Concretamente como un sistema alternativo inspirado en Minix (que, a su vez, clonaba los conceptos de Unix). Por sus propiedades, Linux es un sistema operativo real, aunque nadie lo utiliza como tal, sino que recurre a las distribuciones ya que, con ellas, se vuelve mucho más útil y sencillo de utilizar.

Por ello, no se suele decir «voy a instalar Linux» refiriéndonos a un sistema operativo concreto, sino que lo que instalamos son versiones, o distribuciones, de este núcleo, creadas por empresas o por la comunidad, que comparten una misma base: el Kernel.

Qué es el Kernel y para qué sirve

El Kernel Linux es el núcleo del sistema operativo. Esta es la parte de software más importante de cualquier sistema operativo. Windows tiene su propio núcleo privado, Apple tiene el suyo (basado en Unix, por cierto), y Linux es el Kernel que utilizan todas las distribuciones. Y su principal función es encargarse de controlar el hardware del ordenador.

Concretamente, este núcleo es el responsable de gestionar la memoria del sistema y el tiempo del procesos, gestionar todos los procesos, controlar las llamadas del sistema y las conexiones entre procesos y permitir a todo el software tener acceso al hardware, especialmente a los periféricos conectados al ordenador.

Es tal la importancia del Kernel a la hora de controlar el hardware que, de sus más de 28 millones de líneas de código, la mayor parte de él son drivers. Y esto, aunque es bueno para la compatibilidad, empieza a ser un problema para el rendimiento.

Kernel Linux

En condiciones normales, los usuarios en ningún momento interactúan con este. Mientras que los usuarios tienen un acceso limitado al hardware, el núcleo tiene acceso y control total sobre el mismo. Es el responsable de que todo funcione bien, que lo haga de forma segura, y de que no haya errores. Si ocurre un fallo con un proceso en el espacio de usuario, Linux sigue funcionando. E incluso puede intentar recuperar el sistema al tener control sobre el PC. Sin embargo, si ocurre un error en el espacio del Kernel, entonces todo el sistema deja de funcionar. Es lo que conocemos como el «Kernel Panic«, el equivalente al pantallazo azul en Linux.

Kernel panic

Versiones

Es cierto que las versiones actuales del Kernel no tienen nada que ver con las primeras de 1991. Sin embargo, este núcleo están en constante desarrollo. Y cada pocas semanas solemos ver nuevos lanzamientos. Pero no todos son igual de importantes, ya que depende en gran medida de su numeración.

Las versiones del Kernel Linux pueden tener 4 números que indican la versión: a.b.c.d

  • a indica la versión. Este número es el que menos cambia, ya que solo se suele dar el salto cuando hay cambios extremadamente grandes en el sistema. En toda su historia, solo ha cambiado 5 veces, en 2004, para la versión 1.0, en 2006, para la versión 2.0, en 2011, para la versión 3.0, en 2015, para la versión 4.0, y en 2019 para dar lugar a la versión actual, la 5.0.
  • b indica la subversión. Cuando se lanzan nuevas versiones, pero realmente son actualizaciones menores (nuevos drivers, optimizaciones, correcciones, etc), entonces en lugar de cambiar la versión, se cambia el número de la subversión.
  • c indica el nivel de revisión. Se suele cambiar este número, por ejemplo, cuando se introducen cambios menores, como parches de seguridad, correcciones de errores, etc.
  • d es el último subnivel de la versión. Apenas se utiliza, pero está reservado para que, si se lanza una versión con un fallo muy grave, se lance la nueva versión con este subnivel incluyendo exclusivamente la corrección de dicho fallo grave.

Descargar Kernel Linux 5.8

Todas las versiones del Kernel Linux son públicas y de código abierto. Podemos encontrarlas en este enlace. Pero no están compiladas, sino que son los propios usuarios quienes tienen que compilarlas para poder usarlas en su distribución. Y esta no es una tarea precisamente sencilla. Por suerte, las comunidades responsables del desarrollo de las distintas distribuciones suelen traernos versiones del Kernel compiladas, y optimizadas, que podemos instalar como un parche cualquiera.

Qué versión de Linux elegir

Cuando hablamos de software, siempre recomendamos tener la última versión de todo. Esta es la mejor forma de asegurarnos de que, por un fallo de seguridad, nuestro PC se pone en peligro. Con el núcleo de Linux es lo mismo, siempre se recomienda tener la última versión. Sin embargo, siempre hay que hacerlo con cuidado.

Ubuntu 20.04

Una de las razones por las que el Kernel es tan grande es porque no elimina nada. Por viejo que sea. Gracias a ello es posible seguir usando las últimas versiones de Linux en los primeros ordenadores donde se puso en funcionamiento por primera vez en 1991. Cada actualización lo que suele hacer es añadir controladores y cambiar funciones para optimizar el funcionamiento general del PC.

Pero puede ocurrir que una versión traiga un fallo que haga que nuestro PC no funcione correctamente, e incluso que el rendimiento no sea el esperado. En ese caso, simplemente con volver a instalar una versión anterior el sistema operativo debería volver a funcionar con normalidad. Aunque perderemos soporte para los componentes de hardware más nuevos.

Lo mejor, y más fácil para la mayoría, es ir actualizando el Kernel a medida que vamos actualizando la distribución desde sus repositorios. Así evitaremos estos problemas por «estar siempre a la última».

Cómo saber qué versión del Kernel tengo

Poniendo que usemos una distribución común, como, por ejemplo, Ubuntu, podemos comprobar qué versión del núcleo usamos muy fácilmente con un solo comando. Para ello, no tenemos más que abrir una terminal con el atajo de teclado «Ctrl + Alt + T» y ejecutar uno de estos comandos:

Uname

Podemos ejecutar el comando «uname -a» para obtener la información de nuestra distro. Este comando nos mostrará toda la información relacionada con nuestro sistema operativo, entre ella, la versión del Kernel Linux que usamos. Pero si queremos ser mucho más específicos, podemos centrarnos solo en la versión del núcleo podemos hacerlo con:

uname -srm

Uname Ubuntu Kernel

Neofetch

Neofetch es un programa muy sencillo y utilizado por los usuarios de Linux que nos permite ver detalladamente la información de nuestro sistema instalado. Para poder usarlo, lo primero tenemos que instalar esta herramienta ejecutando el comando:

sudo apt install neofetch

Y, una vez instalada, ejecutarla con «neofetch» para poder ver toda la información relacionada con este comando.

neofetch

Hostnamectl

Hostnamectl es una herramienta que forma parte de systemd gracias a la cual podemos conocer los detalles sobre nuestro sistema operativo. Entre otras muchas funciones, podemos usarlo para conocer la información técnica sobre el núcleo que estamos usando. Para ello, no tenemos más que ejecutar el siguiente comando:

hostnamectl status | grep "Kernel:"

Si queremos algo más de información, también podemos conseguirla con «hostnamectl status».

/proc/version

Este es otro de los comandos de Linux diseñado para permitirnos conocer toda la información posible sobre nuestro sistema. Como nos muestra información de todo tipo, hay que filtrar la información que nos interesa con el comando «cat» de la siguiente forma:

cat /proc/version

Cómo actualizar el núcleo

El Kernel es el elemento más importante del sistema, por lo que tenerlo actualizado a la última versión es vital. Con cada actualización no solo se corrigen posibles fallos de seguridad y errores de funcionamiento, sino que se mejoran los controladores para poder funcionar mejor y ser compatible con el último hardware. Hay varias formas de actualizar el núcleo de nuestro sistema.

Mediante las actualizaciones de la distro

La forma más rápida, y recomendable, de actualizar el núcleo de nuestro Linux es hacerlo mediante las actualizaciones propias del sistema. Cada vez que se lanza un parche, los desarrolladores de las principales distros lo revisan e implementan dentro de los repositorios de software de manera que podamos actualizar el sistema con un simple comando o desde el actualizador incluido.

Instalar nueva versión de Ubuntu

Hay dos tipos de actualizaciones. Por un lado tenemos el que nos ofrece Ubuntu, que solo nos brinda correcciones menores del Kernel pero nunca nuevas versiones (solo con cada nueva versión de Ubuntu se actualiza el Kernel), y luego las distros Rolling Release que sí nos permiten tener el Kernel siempre a la última.

Usar software como Ukku o Mainline

Un punto intermedio entre las actualizaciones de la distro y compilar e instalar el Kernel a mano es usar un software especializado en esta labor, como es el caso de Ukku o Mainline. Estos programas cuentan con una base de datos con todas las versiones del núcleo y nos permiten bajar e instalar la que nosotros queramos sin tener que preocuparnos por nada más. Cada vez que se lance una nueva versión podremos bajarla e instalarla (si queremos) desde este mismo programa.

Mainline Kernel Ubuntu

Actualizar el Kernel manualmente

Actualizar el núcleo a mano es una tarea complicada reservada solo a usuarios avanzados. Todas las versiones son de código abierto, y se distribuyen tal cual desde la web del Kernel. Por tanto, cualquiera puede bajar la última versión a mano y usar el compilador gcc para compilar el núcleo en su sistema y poder utilizarlo.

Además, Canonical tiene su propio repositorio de Kernels desde donde podemos bajar las versiones ya compiladas y empaquetadas en un paquete DEB. Así podemos instalar en Ubuntu la versión del núcleo que queramos haciendo solo doble clic, como en cualquier otro programa.

¿El Kernel es el sistema operativo?

El Kernel es una de las partes más importantes del sistema operativo. Pero no es la única necesaria para poder denominar a Linux, hoy en día, un sistema operativo como tal. Como hemos explicado, este núcleo tiene todos los controladores y todo lo necesario para poder controlar el software y permisos al usuario acceder a él. Pero, para que sea realmente útil, debe tener otros componentes por encima de él antes de llegar al usuario.

  • Controlador de demonios. Ya sea Init.d, Systemd, o cualquier otro software similar, es necesario tener un subsistema por encima del núcleo que se encargue de arrancar todos los procesos (daemons) necesarios para que el Kernel empiece a funcionar. Sin él no tenemos más que muchas líneas de código que no se ejecutan.
  • Los procesos. Los daemons, demonios, o más conocidos como procesos, son todos los componentes que se quedan cargados en la memoria del sistema (controlados por el kernel) y que permiten a Linux funcionar. El servidor gráfico, por ejemplo, es el demonio que controlará el escritorio.
  • Servidor gráfico. Conocido como X, es el encargado de poder ver los gráficos en la pantalla. Si vamos a usar Linux en modo texto, desde terminal, no es necesario. Pero si lo vamos a usar con escritorio, es necesario tener un x-server funcionando.
  • Escritorio. Como su nombre indica, el escritorio del ordenador, donde tendremos todos nuestros programas y donde se abrirán las ventanas. Hay muchos escritorios para Linux, como GNOME, KDE o LXDE. Cada uno con unas características, ventajas e inconvenientes propios.
  • Programas. Todo lo que ejecutemos desde el escritorio. Ya es la capa más elevada, y el punto a través del cual interactuamos con el ordenador.

systemd

Cuando el Kernel, y todo lo demás, funciona en concordancia, es cuando podemos hablar de sistema operativo. O lo que es lo mismo, de distribución Linux.

¡Sé el primero en comentar!