Linux comenzó como un proyecto creado desde cero como pasatiempo por Linus Torvalds en 1991. Hizo el código fuente disponible libremente y otros se unieron para formar este sistema operativo de vanguardia. Linux ha sido escrito solamente en C, que es un lenguaje que comparte historia con el UNIX original.

Si quires aprender todo, en video, totalmente práctico para desarrollarte en el ambiente profesional y aprobar el examen de la Certificación LPIC-1 te recomendamos iniciar por este curso: Aprende Linux desde 0 y prepara la Certificación LPIC-1. Inicia desde 0 en Linux. Prepara la Certificación LPIC-1 con todo el contenido Teórico, practica y modelos de Examen.

¿Te gustaría enterarte de cuando lanzamos descuentos al Máximo o Nuevos Cursos?

La Evolución de Linux

La definición de la palabra Linux depende del contexto en el que se utiliza. Linux se refiere al kernel. Es el controlador central de todo lo que pasa en el equipo. Pero quienes dicen que su equipo “se ejecuta con Linux” generalmente se refiere al kernel y el conjunto de herramientas que vienen con él (llamados distribución). Si tienes “Experiencia con Linux”, probablemente te refieres a los propios programas, aunque dependiendo del contexto, podrías hablar sobre tu capacidad de ajustar con precisión el kernel.

UNIX

era originalmente un sistema operativo desarrollado en los laboratorios de Bell AT&T en la década de 1970. Éste fue modificado y bifurcado. En la actualidad hay muchas variantes de UNIX. Sin embargo, UNIX es ahora una marca registrada y una especificación, propiedad de un consorcio industrial llamado Open Group. Sólo el software que ha sido certificado por el Open Group puede llamarse UNIX. A pesar de la adopción de todos los requisitos de la especificación de UNIX, Linux no ha sido certificado. ¡Eso significa que Linux realmente no es un UNIX! Es sólo… como UNIX.

Arquitectura de Linux

Actualmente Linux es un núcleo monolítico híbrido. Los controladores de dispositivos y las extensiones del núcleo normalmente se ejecutan en un espacio privilegiado conocido como anillo 0 (ring 0), con acceso irrestricto al hardware, aunque algunos se ejecutan en espacio de usuario. A diferencia de los núcleos monolíticos tradicionales, los controladores de dispositivos y las extensiones al núcleo se pueden cargar y descargar fácilmente como módulos, mientras el sistema continúa funcionando sin interrupciones. A diferencia de los núcleos monolíticos tradicionales, los controladores también pueden ser pre-volcados (detenidos momentáneamente por actividades más importantes) bajo ciertas condiciones. Esta habilidad fue agregada para gestionar correctamente interrupciones de hardware y para mejorar el soporte de multiprocesamiento simétrico.

El hecho de que Linux no fuera desarrollado siguiendo el diseño de un micronúcleo (diseño que, en aquella época, era considerado el más apropiado para un núcleo por muchos teóricos informáticos), fue motivo de una famosa y acalorada discusión entre Linus Torvalds y Andrew S. Tanenbaum

Los Procesos en Linux

Linux se organiza en procesos, que son tareas independientes que se ejecutan de forma simultánea mientras el sistema está en funcionamiento. Los procesos cuelgan unos de otros en una dependencia padre/hijo. Inicialmente al arrancar el sistema sólo existe un proceso, llamado init. Init lee los ficheros de configuración de arranque y va creando procesos hijos.

Estos a su vez tendrán sus propios hijos formando un árbol de descendientes. Los procesos en ejecución se encuentran alojados en la RAM del sistema. Cuando se habla de ejecutar o lanzar o arrancar un proceso, nos estamos refiriendo al proceso de leer un archivo almacenado en el disco duro que contiene las instrucciones del programa, colocando las mismas en la memoria RAM y a continuación empezando a ejecutar las instrucciones del programa que ya se encuentra en la RAM.

Usuarios en Linux

Linux está diseñado para ser utilizado por varios usuarios simultáneamente. Aun cuando el sistema sólo vaya a ser utilizado por un único usuario internamente Linux utilizará varios usuarios “robots” para organizar mejor y de forma más segura el sistema. Linux siempre tiene un superusuario llamado “root” (Raíz). Cada uno de los procesos pertenece a un usuario y en función del usuario asociado, dicho proceso tendrá unos permisos u otros.

Un proceso en ejecución puede cambiar su usuario asociado si tiene los permisos suficientes para hacerlo. Sólo tendrá permisos para cambiar de usuario cuando el usuario actual asociado al proceso sea ‘root’. El proceso inicial Init se ejecuta con el usuario asociado ‘root’ lo cual le confiere permisos totales sobre la máquina. Cuando Init ejecute sus procesos hijos lo hará asociándolos a usuarios distintos cuyos permisos se reduzcan a los esenciales para ejecutar la tarea para la cual están diseñado.

Si ejecutamos un cliente de correo con un agujero de seguridad y descargamos un correo con virus, dicho virus ‘engañará’ al cliente de correo para que lo ejecute y entonces tendremos un nuevo proceso ‘virus’ colgando del cliente de correo y asociado al usuario que inició la sesión. Sin embargo puesto que este usuario no tiene permisos de administración el virus no podrá modificar ficheros claves del sistema, solamente los ficheros propios del  usuario. Al reiniciar el equipo el virus habrá desaparecido. Esto complica enormemente la creación de virus para Linux.

Archivos en Linux

Los procesos acceden al hardware y a otros recursos como la conexión de red a internet o los datos almacenados en disco a través de un sistema de archivos. Todas las entradas y salidas de datos desde/hacia procesos se realizan a través de archivos. Mientras que para acceder a un documento de texto almacenado en su disco duro lo hará accediendo a otro archivo con una ubicación diferente y con permisos diferentes. En general un mismo proceso puede acceder  simultáneamente a varios archivos y a su vez un mismo archivo puede ser accedido simultáneamente por varios procesos.

El Kernel de Linux

Determina que programa obtiene que pedazos de memoria, arranca y mata a los programas, y se encarga de mostrar texto en un monitor. Cuando una aplicación necesita escribir en disco, debe pedir al sistema operativo que lo haga. Si dos aplicaciones piden el mismo recurso, el kernel decide cuál de las dos lo recibe y en algunos casos, mata a una de las aplicaciones para salvar el resto del sistema. También se encarga de cambiar entre aplicaciones.

Se encarga de descargar una tarea y cargar una nueva si hay más tareas que CPUs. Cuando la tarea actual se ha ejecutado una cantidad suficiente de tiempo, la CPU detiene la tarea para que otra pueda ejecutarse. Esto se llama multitarea preferente. Multitarea significa que la computadora realiza varias tareas a la vez, preferente significa que el kernel decide cuándo cambia el enfoque entre las tareas. Con las tareas de conmutación rápida, parece que el equipo está haciendo muchas cosas a la vez.

Cada aplicación puede pensar que tiene un bloque grande de memoria en el sistema, pero es el kernel que mantiene esta ilusión, reasignando bloques más pequeños de memoria, intercambiando bloques de memoria con otras aplicaciones, o incluso sacando al disco bloques que aún no se hayan tocado.

El primer proceso en ejecutarse es el Kernel. El kernel hace de frontera entre el  software y el hardware. Para nuestra CPU, el kernel es un programa de software como cualquier otro, pero para el resto de procesos, init incluido, el kernel se comporta como si fuese hardware. Cuando un proceso quiere acceder al hardware no lo hace directamente, sino que se lo pide al kernel. El kernel hace de interlocutor entre procesos y hardware.

El gestor de arranque de Linux

debe cargar el kernel y arrancarlo. Si estás más familiarizado con sistemas operativos como Windows y macOS, probablemente nunca ves al gestor de arranque, pero en el ambiente de UNIX es generalmente visible por lo que puedes modificar la manera en la que tu equipo arranque. El gestor de arranque carga el kernel de Linux y luego transfiere el control. Linux continúa con el funcionamiento de los programas necesarios para hacer que el equipo sea útil, tales como conexión a la red o abrir un servidor web. 

Es el software que administra el proceso de arranque del dispositivo. Para la mayoría de los usuarios se trata de una pantalla de arranque que muestra el progreso con alguna animación, pero en Linux es muy común  configurar y modificar el programa de arranque o incluso elegir cual usar.

Daemons

Son servicios que corren en segundo plano que arrancan durante el inicio del sistema operativo, cuando un usuario se conecta o se pueden iniciar manualmente.

El Shell de Linux

Seguramente hayan oído hablar de la línea de comando de Linux. El Shell es un proceso que permite administrar el sistema operativo mediante una interface de texto interactivo. Los shell´s son entornos programables, esto quiere decir que tienen variables a las que se le pueden asignar valores, se pueden realizar operaciones complejas y se pueden escribir programas comúnmente llamados Shell scripts. En Linux existen varios shell´s que el usuario puede elegir y cada uno tiene sus particularidades.

Entorno Gráfico en Linux

Es un subsistema que se encarga de la administración de los gráficos en el monitor así como también de dispositivos periféricos como el mouse y teclado. Comúnmente se lo denomina X Server o simplemente X. El entorno gráfico estándar de Linux es un proceso más llamado X. Cuando se arrancan las X todos los programas gráficos (que son a su vez procesos) cuelgan de él y se ejecutarán generalmente con los permisos del usuario que se ha logeado con su nombre y password al inicio de la sesión. Las aplicaciones que solemos manejar frecuentemente como el navegador web o el reproductor de vídeo no son más que procesos hijo del proceso X.

El entorno gráfico X es un proceso más, sin ningún privilegio sobre cualquier otro. Esto significa que podemos prescindir del mismo si no nos hace falta. En general, cuando Linux se utiliza como servidor de Internet es normal no iniciar el entorno gráfico ya que consume mucha memoria y puede ralentizar el sistema.

Esto ha hecho que Linux se popularice y desplace a Windows en el entorno profesional, ya que por ejemplo permite contratar servicios de hospedaje virtual a precios mucho más reducidos que sus equivalentes en Windows. También, al no depender de un entorno gráfico, puede administrarse remotamente de forma mucho más cómoda mediante líneas de comandos, mientras que Windows requiere transmitir el entorno gráfico a través de Internet (mucho más lento, costoso e inseguro).

Existen muchos entornos gráficos en Linux y se puede tener varios instalados en la misma instancia de Sistema operativo para usar uno u otro. Los más utilizados son GNOME, KDE pero existen muchos otros como XFCE, Enlightment, Unity, Fluxbox, etc….

Distribuciones de Linux

Toma las herramientas de GNU y Linux, añade algunas aplicaciones para el usuario y obtienes un sistema Linux completo. La distribución se encarga de configurar el almacenamiento de información, instalar el kernel e instalar el resto del software. Las distribuciones recomendadas completas también incluyen herramientas para administrar el sistema y un administrador de paquetes para añadir y eliminar el software después de la instalación.

Los principales actores en el mercado se remontan a Red Hat o Debian. La diferencia más visible es el administrador de paquetes, aunque encontrarás otras diferencias en todo, desde ubicaciones de archivos a filosofías de políticas.

Las distribuciones de Linux que son Corporativas, como es el caso de Red Hat Linux, una de las más antiguas y reconocidas. Pero siendo esta una distribución corporativa se puede descargar gratuitamente pero se debe obtener una licencia y soporte corporativo el cual es pago. Aun así existen distribuciones “hermanas” como CentOS y Fedora que son prácticamente lo mismo y son 100% gratuitas.

Son  proyectos de comunidades libres de los cuales se nutre Red Hat y a partir de los cuales desarrolla sus productos. Se trata de un ecosistema auto-regulado y que se retroalimenta ya que muchos de los programadores que trabajan para Red Hat aportan a los proyectos libres y a su vez Red Hat dona mucho dinero a estos proyectos que luego adopta y desarrolla como productos.

Las Distros Linux más populares:

Red Hat Introdujo el Administrador de Paquetes Red Hat. El desarrollador eventualmente formó una compañía alrededor de éste. Con el tiempo, Red Hat comenzó a centrarse más en las aplicaciones de servidor web y servicios de archivos, y lanzó Red Hat Enterprise Linux, que era un servicio de pago en un ciclo de liberación largo.

SUSE: Derivado de Slackware, aun incorpora muchos aspectos de Red Hat. Mientras que Open SUSE se basa en escritorio y es disponible al público en general, SUSE Linux Enterprise contiene código propietario y se vende como un producto de servidor.

DEBIAN: Desarrolló su propio sistema de administración de paquetes basado en el formato del archivo .deb. Mientras que Red Hat deja sin soporte las plataformas Intel y AMD para proyectos derivados, Debian es compatible con muchas de estas plataformas directamente.

Ubuntu Derivada de Debian. Es la creación de Canonical, una empresa que apoyó el crecimiento de Ubuntu ganando dinero proporcionando soporte.

Linux Mint se inició como una bifurcación de Ubuntu Linux mientras sigue dependiendo sobre los repositorios de Ubuntu. Linux Mint ha superado a Ubuntu como solución de Linux escritorio más popular del mundo.

Android Patrocinado por Google, es la distribución Linux más popular del mundo. Android utiliza la máquina virtual Dalvik con Linux, proporcionando una sólida plataforma para dispositivos móviles. Carece de los paquetes tradicionales que se distribuyen a menudo con Linux (como GNU y Xorg), por lo que Android es generalmente incompatible con distribuciones Linux de escritorio. 

Esta incompatibilidad significa que un usuario de RedHat o Ubuntu no puede descargar software de la tienda de Google Play. Un terminal emulador en Android carece de muchos de los comandos de sus contrapartes de Linux. Es posible utilizar BusyBox con Android para habilitar el funcionamiento de la mayoría de los comandos.

Distros Linux populares:

CentOS, una distribución creada a partir del mismo código del sistema Red Hat pero mantenida por una comunidad de desarrolladores voluntarios.

Fedora, una distribución lanzada por Red Hat para la comunidad.

Slackware, una de las primeras distribuciones Linux y la más antigua en funcionamiento. Fue fundada en 1993 y desde entonces ha sido mantenida activamente por Patrick J. Volkerding.

Arch Linux, una distribución basada en el principio KISS, con un sistema de desarrollo continuo entre cada versión (no es necesario volver a instalar todo el sistema para actualizarlo).

Kali Linux, distribución basada en Debian y especializada en seguridad de red.

Parrot Security, muy parecido a la distribución Kali pero con otro formato.

WiFiSlax, distribución basada en Slackware y especializada en seguridad de red. Son cientos de distribuciones de todo tipo, dedicadas a distintos ámbitos, por ejemplo, educación, medicina, electrónica, etc.

OpenMandriva, es mantenida por la compañía francesa del mismo nombre, es un sistema popular en Francia y Brasil. Está basada en Red Hat.

Mageia, creada por ex trabajadores de Mandriva, muy parecida a su precursor.

PCLinuxOS, derivada de Mandriva, pasó de ser un pequeño proyecto a una popular distribución con una gran comunidad de desarrolladores.

Kubuntu, la versión en KDE(entorno gráfico) de Ubuntu.

Slax, es un sistema Linux pequeño, moderno, rápido y portable orientado a la modularidad. Está basado en Slackware.

Gentoo, una distribución orientada a usuarios avanzados, conocida por la similitud en su sistema de paquetes con el FreeBSD Ports, un sistema que automatiza la compilación de aplicaciones desde su código fuente.

Puppy Linux, versión para equipos antiguos o con pocos recursos que pesa unos 130 MiB.

Zorin OS, distribución basada en Ubuntu y orientada a los usuarios de Windows que quieren pasar a Linux de la forma más fácil y sencilla posible.

Distribuciones Linux especializadas:

64 Studio, una distribución basada en Debian diseñada para la edición multimedia.

ABC GNU/Linux, distribución para la construcción de clusters Beowulf desarrollado por Iker Castaños Chavarri, Universidad del País Vasco.

Wifiway, distribuciónbasada en Ubuntu y especializada en seguridad de red.

Debian Med, orientada a la práctica médica y a la investigación bio-médica.

Edubuntu, un sistema del proyecto Ubuntu diseñado para entornos educativos.

Fedora Electronic Lab, distribución basada en Fedora y especializada en el desarrollo electrónico.

GeeXbox, distribución rápida y ligera orientada a los centros multimedia.

ICABIAN, en formato Live USB está pensada para usuarios técnicos ya que contiene una gran variedad de programas para la ciencia e ingeniería.

Lubuntu, distribución ligera y rápida basada en Ubuntu y orientada al uso en notebooks.

Musix, una distribución de Argentina destinada a los músicos.

MythTV, orientada para equipos multimedia o grabadores de vídeo digital.

OpenWrt, diseñada para ser empotrada en dispositivos enrutadores.

Scientific Linux, distribución para desarrollo científico basada en Red Hat.

UberStudent, distribución dedicada a la educación y basada en Ubuntu.

Hay miles forks más que están disponibles. Es importante entender que si bien hay muchas diferentes distribuciones de Linux, muchos de los programas y comandos siguen siendo los mismos o muy similares. Además de teléfonos y computadoras existen muchos dispositivos de consumo que llevan Linux. Los enrutadores inalámbricos normalmente funcionan con Linux porque tiene un gran conjunto de características de red.

Aprende Linux desde 0

Si quires aprender todo, en video, totalmente práctico para desarrollarte en el ambiente profesional y aprobar el examen de la Certificación LPIC-1 te recomendamos iniciar por este curso: Aprende Linux desde 0 y prepara la Certificación LPIC-1. Inicia desde 0 en Linux. Prepara la Certificación LPIC-1 con todo el contenido Teórico, practica y modelos de Examen.

¿Te gustaría enterarte de cuando lanzamos descuentos al Máximo o Nuevos Cursos?