Tutorial

Estructura del sistema Linux: Kernel, Distribuciones, Boot, Shell…

Las diferentes distribuciones de Linux existentes no son solo el kernel de Linux, propiamente dicho. Todas ellas están constituidas por elementos que forman la estructura de los sistemas Linux.

Son elementos fundamentales para el funcionamiento del sistema operativo, entre ellos: el shell, el bootloader, el software GNU, el servidor gráfico, el entorno de escritorio y mucho más. Por lo tanto, veremos todos los elementos que componen la estructura de los sistemas Linux.

El kernel y otros elementos de Linux

Mucho se habla del «sistema Linux». Sin embargo, Linux no es todo lo que compone el sistema operativo. Para muchos, Linux, por sí mismo, es capaz de ofrecer recursos y funciones completas para el equipo. El sistema operativo hace la abstracción del hardware de nuestro equipo para brindar funcionalidades virtual a los usuarios que lo utilizan.

Sin embargo, Linux representa solamente el kernel (núcleo) del sistema operativo. Todo sistema operativo (como Linux, Windows y Mac, por ejemplo) tienen un núcleo. En el caso de las distribuciones de Linux, el kernel es Linux, libre y siendo desarrollado por colaboradores de todo el mundo.

Kernel

El kernel de un sistema es el componente central que sirve para dar vida al hardware. Es la capa responsable de asegurar que todos los programas y procesos tengan acceso a los recursos que necesitan de la máquina (memoria RAM, acceso a disco y el control de la CPU, por ejemplo) al mismo tiempo, de modo que haya un recurso compartido de estos. En otras palabras, es el cerebro del sistema operativo; el responsable de coordinar el acceso al hardware y los datos entre los diferentes componentes del sistema. Constituye en torno al 10% de código de programación total del sistema.

El kernel proporciona acceso al hardware de los distintos programas instalados. Además es el encargado de gestionar los recursos a través de servicios de llamada al sistema. Linux es el kernel de este sistema operativo libre GNU/Linux y está escrito prácticamente en su totalidad en código C, un lenguaje de programación de alto nivel, pero bastante cercano al código máquina.

Linux continúa liberando nuevas versiones del kernel del sistema, con modificaciones que implementan las compañías o los propios usuarios, ya que, debemos recordar que el kernel es accesible por todos los usuarios. Para distinguir cual es una distribución «estable» del kernel, debemos fijarnos en los números de versión que contienen. El segundo número que acompaña al normal del kernel nos dirá si es una versión estable, cuando tenemos números pares: 2.6.. Y será una versión inestable o en desarrollo cuando tenemos números impares.

Existen gran cantidad de distribuciones de Linux que tienen sus propias versiones del núcleo, implementando controladores que no están incluido en la versión original u otras utilidades. Estas distribuciones también respetan esta numeración para identificar una versión estable de una inestable.

Para ver la versión de compilación del kernel de nuestro sistema operativo, tendremos que colocar el siguiente comando:

uname -a

Proporciona toda la información acerca del kernel

umane -r

Para solamente ver que versión es la que tenemos.

Actualmente Ubuntu dispone de la versión 4.18.0 del kernel, por lo que sabremos que es una versión estable.

Shell y programas

En la siguiente capa en comunicación directa con el kernel, tenemos el caparazón el shell. La shell actúa como un intérprete de comandos. En un sistema operativo existen distintos shell para recoger los comandos y acciones que introduce un usuario. De esta forma el sistema operativo realizará una serie de acciones en respuesta por ejemplo a un comando que escribamos en el terminal, o un clic de ratón.

Este programa siempre estará en funcionamiento en nuestro sistema registra todas las órdenes para decodificarlas y pasárselas al núcleo para realizar las acciones solicitadas. Prácticamente todas las órdenes que enviamos a la shell son programas ejecutables que están dentro del sistema de ficheros del sistema operativo.

La shell principal de nuestro sistema, recibe el nombre de Bash, (Bourne-again shell) es un programa intérprete de comandos de Unix.

La otra capa de un sistema operativo está constituida por elementos que ofrecen recursos capaces de garantizar la interacción con el usuario y popularmente conocida como la capa de software. Esta capa permite que las aplicaciones de usuario se ejecuten.

Te recomendamos la lectura:  Cómo administrar servicios de almacenamiento en la nube

En otras palabras, al núcleo del sistema no se puede acceder directamente por el usuario o administrador del sistema; esto solo puede ser posible a través de programas de utilidad del sistema, así como la terminal de línea de comandos (CLI), software para la recopilación, software de gestión de disco/memoria o el control de los procesos del sistema.

Así, debe quedar claro por qué de Linux se popularizara tanto el aspecto técnico. Entre otros aspectos, a través de estas aplicaciones, Linux puede ser fácilmente accedido y controlado por el usuario, que tiene dominio y condiciones para ello. Además, puede ser estudiado y distribuido libremente.

Elementos de Linux

Por último, hecha la analogía de que el kernel es el cerebro del sistema, hay que dejar en claro que el kernel por sí solo, así como el cerebro humano, no puede realizar todas las tareas llevadas a cabo por el sistema operativo solo. La unión de estos otros elementos con el kernel forman la estructura del sistema Linux.

Estructura del sistema operativo Linux

Sabiendo ya que Linux es solo el núcleo del sistema, te puedes estar preguntando entonces qué hace funcionar completamente al sistema Linux desde el inicio de la carga del entorno gráfico disponible para el usuario.

Incluso con todos los subsistemas del kernel (Gestión de Procesos, Gestión de Memoria, Gestión de Redes, Sistema de Archivos y otros), existen elementos que deben componer esta estructura mantenida en el núcleo del sistema operativo para que funcione completamente. Entre ellos se destacan el bootloader, el shell, el software GNU, el servidor gráfico, el entorno de escritorio y mucho más.

Todos estos elementos son desarrollados y mantenidos por diferentes grupos de desarrolladores. Todos independientes del desarrollo del kernel de Linux, que es coordinado por Linus Torvalds (creador) y mantenido por la comunidad mundial. Así, «uniendo» todos estos elementos con el kernel de Linux, un sistema operativo completo es creado y así surgen las distribuciones de Linux.

Distribuciones Linux

La expresión «distribución Linux» significa que los distintos sistemas se crean a partir del núcleo de Linux. O sea, quien usa Ubuntu está usando Linux; sin embargo, el kernel es de Linux y los elementos son creados por la comunidad de Ubuntu. De ahí también surge la expresión «basado en». La distribución Debian es «madre» de muchas otras porque dio «base» a otras distribuciones de Linux, como Ubuntu, por ejemplo.

Elementos de Linux

Bootloader

Un bootloader (cargador de arranque), también llamado gestor de arranque (boot), es un sutil software cuya tarea es cargar el sistema operativo de un ordenador en la memoria.

Cuando un equipo se conecta, la BIOS o UEFI realiza algunas pruebas iniciales de las actividades básicas para el correcto funcionamiento de todos los recursos de la máquina; y entonces transfiere el control al Registro de Arranque Maestro (MBR – Master Boot Record), donde el bootloader se encuentra.

En sistemas Linux, por lo general, el gestor de arranque que se utiliza es Grub. Con este instalado, además de gestionar el proceso de arranque del sistema, es posible tener varios sistemas operativos instalados y elegir cuál debe ser iniciado. Grub proporciona un menú que te permite elegir entre las opciones de los sistemas disponibles. Este recurso es comúnmente llamado «dual-boot«.

Si no dispones de diversos sistemas instalados en el equipo (solo una distribución de Linux), Grub puede arrancar el sistema Linux casi al instante. Aunque no lo veas, todavía está allí.

En resumen, Grub, por el hecho de ser un gestor de arranque, es el responsable del proceso de arranque de Linux. Sin Grub, una distribución de Linux no se inicializaría.

Shell

Primero, el shell (o intérprete de línea de comandos) es un módulo que actúa como capa externa entre el usuario y el sistema operativo. Existen varios tipos de shell. El primero de ellos fue Bourne Shell (sh) que ofrecía diversos comandos internos que permitían al usuario solicitar llamadas al sistema operativo. A partir de ahí han habido avances notables del shell.

Actualmente, la mayoría de los sistemas Linux usan, por defecto, una evolución de Bourne Shell llamado Bash (Bourne Again Shell). Bash, además de las funcionalidades de las versiones anteriores, también implementa un lenguaje simple de programación que permite el desarrollo de pequeños programas (los famosos shell scripts).

Te recomendamos la lectura:  Cómo instalar Java de Oracle en Ubuntu

En resumen, el shell es un programa independiente del usuario, ejecutado fuera del kernel, que proporciona una interfaz para la interpretación de comandos. Permite la interacción con el sistema mediante la ejecución de comandos en una interfaz de texto (CLI).

Incluso si estás usando solo el entorno gráfico, y nunca has precisado utilizar o ejecutar ningún comando de Linux, el shell está en constante ejecución. Cuando abras la terminal de línea de comandos, verás el shell en pleno funcionamiento.

Software GNU

El shell proporciona algunos de los comandos básicos integrados, pero la mayoría de los comandos que se pueden ejecutar en el shell de Linux no son ofrecidos por este. Por ejemplo, el comando cp (para copiar un archivo), el comando ls (para listar los archivos de un directorio) y rm (para borrar archivos) son parte del paquete de utilidades básicas de GNU («coreutils»). No todas las utilidades y programas de línea de comandos son desarrollados por el proyecto GNU. Algunos comandos y programas de terminales tienen su propio proyecto independiente.

Elementos de Linux

Se puede ver que los comandos enumerados son fundamentales para el funcionamiento del sistema Linux. Además de ellos, hay software de utilidades esenciales para el funcionamiento del sistema, como las herramientas de compilación y el gestor de arranque Grub; también desarrollado y mantenido por el proyecto GNU. Así, los sistemas Linux no van a funcionar sin estas utilidades tan importantes. Tan importantes, que, en realidad, el shell Bash, propiamente dicho, forma parte del proyecto GNU.

Servidor gráfico

El modo gráfico en Linux es generado por el servidor gráfico X (X Window System), que no es parte del núcleo de Linux. Entre otras funciones, es responsable de la activación de la tarjeta de vídeo, ratón y teclado, lo que permite al usuario el uso de interfaces gráficas que son llamadas de Gestores de Ventanas y Entornos de Escritorio. Los Entornos de Escritorio disponen de interfaz completa para el usuario (GUI), así como: barra de herramientas, botones, iconos, wallpapers y bibliotecas gráficas. Los Administradores de Ventanas dan base para los Entornos de Escritorio.

Existen varios Entornos de Escritorio diferentes. Y esa es una de las características más fascinantes del mundo Linux. La posibilidad de poder personalizar el sistema. Por ejemplo, si no te gusta un Entorno de Escritorio, puedes fácilmente cambiarlo por otro que se adapte a tus necesidades.

Actualmente, el servidor gráfico más popular es X.org. Sin embargo, ya hay en marcha otros servidores gráficos destacados, que en este caso son Wayland y Mir (desarrollado por Canonical – Ubuntu). Ambos con el propósito de ser sustitutos de X Window System.

En resumen, el servidor gráfico interactúa con tu tarjeta de vídeo, monitor, ratón y otros dispositivos que preparan el entorno para los Gestores de Ventanas y Entornos Gráficos. Un servidor gráfico no proporciona un Entorno de Escritorio completo, solo un sistema gráfico para que los Entornos de Escritorio y herramientas puedan trabajar sobre este.

Elementos de Linux

Entornos de escritorio

Si estás utilizando una distribución de Linux ahora, lo que realmente estás viendo y con lo que interactúas es un Entorno de Escritorio para Linux. Por ejemplo, Ubuntu ofrece el Entorno de Escritorio Unity, Fedora ofrece GNOME y Linux Mint, por lo general, incluye Cinnamon o MATE. Estos Entornos de Escritorio proporcionan el fondo de la pantalla, los paneles, las barras de título de las ventanas y mucho más.

Además de diversas características, los Entornos de Escritorio incluyen sus propias utilidades. Por ejemplo, GNOME y Unity incluyen el administrador de archivos llamado Nautilus, desarrollado como parte de GNOME. KDE incluye el administrador de archivos llamado Dolphin, desarrollado como parte del proyecto KDE.

En resumen, todos estos Entornos de Escritorio citados se desarrollan independientemente del desarrollo del kernel de Linux.

Así, diversos proyectos acaban surgiendo para aumentar el abanico de opciones disponibles para que el usuario elegir cuál usar. Y es en estos Entornos de Escritorio donde la mayoría de los usuarios resuelven cambiar el tema, el color de los iconos y otros cambios en la apariencia.

Publicaciones relacionadas

Deja una respuesta

Los datos de carácter personal que nos facilite mediante este formulario quedarán registrados en un fichero de Miguel Ángel Navas Carrera, con la finalidad de gestionar los comentarios que realizas en este blog. La legitimación se realiza a través del consentimiento del interesado. Si no se acepta no podrás comentar en este blog. Puedes consultar mi política de privacidad. Puede ejercitar los derechos de acceso, rectificación, cancelación y oposición en [email protected].

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Acepto la política de privacidad *

Botón volver arriba