Linux es un sistema operativo tipo Unix, compuesto por software libre y de código abierto. Pero probablemente, si estás leyendo estas líneas, eso ya lo sabes. Lo que puede que no tengas tan claro es cómo utilizarlo y sacarle el máximo partido.
A lo largo de los siguientes días discutiremos los aspectos esenciales de Linux, para que puedas utilizarlo sin miedo y exprimir sus funcionalidades. Este curso te interesa especialmente si eres desarrollador, ya que muchos sistemas (y la mayoría de los servidores web) utilizan este sistema operativo.
Para aprender a utilizarlo, lo primero que debemos hacer es contar con una instalación del sistema operativo. Pero existen diferentes distribuciones (cientos, en realidad), por lo que antes de instalarlo conviene elegir con cuál vamos a trabajar.
Estas distribuciones se suelen categorizar en “familias”. Aunque existen otras, estas son las tres más utilizadas:
- Red Hat, donde destacan CentOS y Fedora.
- SUSE, donde destaca openSUSE.
- Debian, donde destacan Ubuntu y Linux Mint.
Vamos a empezar presentando el sistema operativo y las características de cada una de estas familias.
¿Qué es Linux?
Linux es un sistema operativo. Como tal, se encarga de comunicarse con el hardware para encargarle tareas, que nos permiten ejecutar programas.
Una de sus características principales, y su principal punto fuerte, es su comunidad. Hay tal cantidad de desarrolladores participando en el proyecto que se liberan decenas de parches al día y nuevas versiones cada pocos meses.
Esto implica una evolución constante que, por tanto, hace que partes de este curso puedan quedar rápidamente actualizadas. En consecuencia, es importante que si lo vas a seguir vayas contrastando con fuentes oficiales (que te intentaré proporcionar) y con recursos externos.
También implica la aparición de conflictos en la comunidad, ya que al existir diferentes familias y distribuciones (en breves entraremos a analizarlas) hay partidarios de diferentes paquetes o software para realizar cada tarea.
¿Cómo puedes elegir el mejor software en un entorno constantemente cambiante, donde además existen evangelizadores de opciones contradictorias? Lo mejor que puedes hacer es probar y mantenerte actualizado.
La historia de Linux
Linux se define como un sistema operativo de código abierto. Aunque se inventó para utilizarse en ordenadores personales, cada vez son más los dispositivos que lo utilizan.
En 1991, Linus Torvalds empezó a escribir el kernel de su sistema operativo, montando a su alrededor todo el software necesario para crear Linux. Un año más tarde se licenciaría bajo GPL, abriéndose a la colaboración de una comunidad mundial. Esta es la principal razón por la que existen cientos de distribuciones del sistema.
Sin embargo, que el proyecto esté abierto a la colaboración de cualquiera no implica que no cuente con apoyo de grandes corporaciones. De hecho, parte de su explosivo desarrollo tuvo lugar a mediados de los 90, con el apoyo de compañías como Oracle o IBM.
Actualmente, se estima que Linux es el sistema utilizado por la mitad de los servidores web del mundo, la mayoría de los smartphones (ten en cuenta que Android funciona sobre Linux) y la mayoría de servicios cloud y supercomputadoras.
La visión de Linux
Uno de los puntos a destacar sobre Linux es la filosofía adoptada por su comunidad. Recordemos que nació como una alternativa a UNIX levantada sobre la idea de libertad creativa y de uso.
Habitualmente se destacan tres pilares que definen cómo entiende la comunidad la libertad asociada a Linux:
- Libertad para utilizar el software.
- Libertad para cambiarlo y adaptarlo a tus necesidades.
- Libertad para compartir tanto el software como los cambios que hayas hecho sobre el mismo.
Y, pese a que uno de los objetivos del proyecto siempre fue ofrecer software libre, grandes compañías lo respaldaron desde momentos tempranos. Esto conllevó su integración en sistemas de escala masiva, como Android, Apache Web Server, Google…
Conceptos básicos de Linux
A lo largo del curso vamos a utilizar algunos conceptos con los que conviene que te familiarices:
- Kernel. Es el núcleo del sistema operativo, y permite que el hardware interactúe con las aplicaciones.
- Distribución o “distro”. Combina el kernel de Linux con una colección de aplicaciones.
- Boot Loader. Es el programa que arranca el sistema operativo. Destacan GRUB y ISOLINUX.
- Servicio. Son programas que ejecutan procesos en segundo plano, como los servidores HTTP, DHCP o FTP.
- Filesystem. Es el sistema de archivos, donde estos se almacenan y organizan. Algunos ejemplos son FAT, XFS o ext3 y ext4.
- X Window System. Ofrece herramientas y protocolos para construir la interfaz gráfica. Esta ofrece un entorno de escritorio, destacando GNOME y KDE.
- Command Line Interface (CLI). Ofrece una interfaz para introducir comandos en el sistema operativo mediante texto.
- Shell. Es el intérprete del CLI, que comunica sus instrucciones al sistema operativo. Destacan bash, zsh y tcsh.
¿Por qué existen diferentes familias y distribuciones?
Ten en cuenta que una de las características clave de Linux es que es de código abierto. Esto atrae numerosas contribuciones, y las diferentes comunidades de desarrolladores que participan en su evolución, tienen diferentes perspectivas sobre cómo orientar el crecimiento del sistema operativo.
Recuerda que una distribución no solo contiene el kernel de Linux, que es su núcleo. También incluye un conjunto de software, que es el que diferencia cada una de las distribuciones.
Las “familias” o “sabores” (flavours) hacen referencia precisamente a ese conjunto de software, para el que están construidas sus distribuciones. Es decir, el conjunto de paquetes que caracterizan a la distribución.
Las tres principales “familias” y sus distribuciones más conocidas
Como ya hemos anticipado, las principales familias son Red Hat (RHEL), SUSE y Debian. Dentro de cada una de ellas, podemos destacar por su extendido uso las siguientes distribuciones:
- RHEL:
- CentOS.
- Fedora.
- SUSE:
- SLES.
- openSUSE.
- Debian:
- Ubuntu.
- Linux Mint.
La familia Red Hat
La familia Red Hat Enterprise Linux comprende las distribuciones CentOS, CentOS Stream, Fedora y Oracle Linux. Se trata de distribuciones ampliamente utilizadas en el sector empresarial, ya que prioriza la estabilidad y la robustez de sus aplicaciones.
Algunas de las características de este “flavour” son:
- Soporte por medio de suscripción.
- Herramientas de seguridad y automatización.
- Software centrado en la migración e instalación de herramientas.
- Solidez y robustez del software.
Dentro de la familia Red Hat, CentOS es muy similar a RHEL, que es el más popular para uso empresarial. Sus actualizaciones son previas a RHEL. También destaca CentOS Stream, que recibe las actualizaciones previamente a RHEL, por lo que le sirve de campo de pruebas.
Características de las distribuciones Red Hat
- Se trata de distribuciones orientadas al uso empresarial.
- CentOS es un clon de RHEL.
- Utilizan dnf como gestor de paquetes.
La familia SUSE
Del mismo modo que RHEL y CentOS o Fedora están relacionados, también lo están SUSE o SLES (SUSE Linux Enterprise Server) y OpenSUSE.
Características de las distribuciones SUSE
- Se trata de distribuciones orientadas a sectores como el retail.
- Utilizan RPB como gestor de paquetes.
- Incluyen la aplicación YaST (Yet Another Setup Tool) para administrar el sistema.
La familia Debian
Se trata de una de las familias más populares, tanto para uso en ordenadores como en servidores. Sus prioridades son la estabilidad y la funcionalidad, ofreciendo el repositorio de software más completo de todas las distribuciones.
A lo largo de esta introducción a Linux utilizaremos Ubuntu LTS, ya que se trata de una de las distribuciones más populares y se enfoca en la facilidad de uso.
Características de las distribuciones Debian
- Ubuntu es una de las distribuciones más utilizadas, tanto a nivel personal como a nivel de servidor y cloud.
- Utiliza APT como gestor de paquetes, basado en DPKG.
¿Cómo elegir mi distribución Linux?
La distribución a utilizar va a depender de nuestras necesidades. Aquí vamos a utilizar Ubuntu, porque muchos servidores y servicios en la nube la utilizan y porque pretende ser una de las distribuciones con menos dificultades para introducirse.
Ten en cuenta que Linux en sí es tan solo el kernel. Es decir, el núcleo de tu sistema operativo. El resto del software dependerá de la distribución elegida.
Como ya hemos visto, esto supone el uso de diferentes gestores de paquetes. También la elección de un gestor de escritorio (habitualmente GNOME o KDE) y las aplicaciones incluidas en el sistema.
Cada distribución integra todos estos paquetes del modo que considera más útil para su público objetivo. A su vez, cada familia se caracteriza principalmente por su forma de empaquetar el software y de instalarlo y actualizarlo.
Algunas recomendaciones
El entorno donde vayamos a ejecutar nuestro SO va a determinar qué distribuciones podemos elegir. Por ejemplo, sería recomendable:
- Para servidores, las distribuciones CentOS, Ubuntu Server, openSUSE o Debian.
- En el caso de ordenadores, Ubuntu, Fedora, Debian o ArchLinux.
- Para el caso de aplicaciones embebidas, Open Embedded, Android o Yocto.
Es importante tener en cuenta qué tipo de programas o paquetes serán necesarios para la aplicación, así como su ciclo de release y la necesidad de personalizar el kernel. Un factor primordial será si se busca la estabilidad a largo plazo (LTS) o podemos asumir versiones más volátiles pero modernas.
Probablemente, otro de los factores principales a la hora de elegir una distribución será la suite de software incorporada. Por ejemplo, la mayoría de usuarios que busquen un enfoque generalista encajarán con Ubuntu, mientras que los que quieran especializar el sistema en tareas de seguridad y pentesting optarán por distos como Kali.
Siguientes pasos
Para continuar con este curso convendría que empezaras instalando un sistema Linux. Ten en cuenta que existen diferentes formas de instalarlo:
- Full Install vs. Live Media. La mayoría de distribuciones de Linux ofrecen la posibilidad de utilizar el sistema operativo sin tener que instalarlo. Esto es lo que conocemos como Live Media, y aunque puede ser útil para probar diferentes distribuciones, tiene algunas desventajas a nivel de eficiencia.
- Hipervisor o máquina virtual. Las máquinas virtuales, como Oracle Virtual Box o VMware nos permiten virtualizar o emular un nuevo sistema operativo sobre un hipervisor. Se trata de un programa que se ejecuta en un sistema operativo previo, por lo que no tenemos que desinstalar nuestro OS para utilizar uno nuevo. A cambio, la máquina estará ejecutando simultáneamente dos sistemas operativos, por lo que tendremos un peor rendimiento.
- Instalación nativa. Al instalar de forma nativa Linux en nuestra máquina podemos sacarle el máximo rendimiento. A cambio, sobreescribiremos el sistema operativo previo salvo que creemos una partición en el disco. Recuerda que puedes utilizar sistemas “multi-boot” para poder elegir qué sistema operativo quieres utilizar en caso de querer conservar ambos.
Cada distribución cuenta con una página oficial desde la que se puede descargar su software. Además, incluye instrucciones de instalación. Por ejemplo, esta es la página de descarga de Ubuntu, que es la distribución que utilizaré durante el curso: https://ubuntu.com/download.
En la siguiente lección estudiaremos el proceso de arrancado de un sistema Linux, así como la composición de su filesystem y todos los procesos implicados. Siendo un tema técnico, puede que te interese solo echarle un vistazo y revisitarlo cuando tengas más familiaridad con el sistema operativo. Pero te recomiendo que al menos le des una oportunidad, porque te ayudará a entender mejor cómo funciona Linux.