Tuesday 8 November 2016

Consejos y trucos, artículos básicos sobre configuraciones que ayudan a un mejor desempeño de nuestros SO's. Cada proceso ha sido personalmente comprobado.



En esta oportunidad les traigo este Blog que es una traducción de fossboss.org en el que daremos una mirada a una pregunta muy importante que probablemente muchos nos hemos hecho, pero nunca hemos profundizado al respecto; ¿Cuáles son los componentes de una distribución Linux?

Es muy probable que nos hayamos hecho esta pregunta, si usamos muchas distros o cuando cambiamos por primera vez a Linux, pero muchos no sabemos como  funciona todo el sistema, ni los componentes de este.

Hay una gran cantidad de componentes dentro de una distribución Linux, cientos y en realidad miles de software que se combinan con el fin de proporcionarle un funcionamiento y hacerlo un sistema operativo utilizable. Cada distro Linux tiene su propio conjunto de componentes, pueden ser muy similar o pueden ser muy diferentes a otras distribuciones de Linux.

Estos componentes no están desarrollados por un solo proveedor, por ejemplo el kernel Linux es desarrollado por Linus Torvalds, la comunidad del kernel y sus compañias, las herramientas GNU son desarrolladas por el proyecto de desarrolladores de GNU y la fundación de Software Libre, el entorno de escritorio KDE es desarrollado por el proyecto KDE, el navegador web Firefox es desarrollado por Mozilla, el servidor de visualización X es desarrollado por la fundación X, etc.

Lo que las distros Linux hacen es obtener el código fuente de todas estas aplicaciones y construirlas; convirtiéndolas en paquetes que pueden ser instalados en las computadoras de los usuarios y ponerlos en un repositorio que contenga todos esos paquetes, luego, los creadores de la distribución construyen archivos ISO de su código fuente para que podamos descargarlos e instalarlos en nuestra PC. Las distribuciones Linux son en realidad solo envios de estos programas en un formato específico para los usuarios finales, y difieren entre si por el conjunto predeterminado de componentes y el programa y las características que ofrece.

Cada componentes es compilado por un lenguaje de programación diferente, por ejemplo no puedes decir que Ubuntu es desarrollado en lenguaje C, porque contiene muchas aplicaciones que son desarrolladas en otros lenguajes de programación como Python, Ruby, C++, Perl, etc.

Aquí les muestro los principales componentes de una distribución Linux:


                                   Kernel Linux       

El corazón de cualquier sistema operativo; el kernel. En 1991 Linus Torvalds anunció la disponibilidad de su primer lanzamiento público del Kernel Linux. Desde ese entonces a evolucionado mucho y hoy en día hay miles de voluntarios, compañias y desarrolladores de programas que están trabajando en el mantenimiento del Kernel Linux. Está presente en la mayoría de dispositivos que puedes ver a tu alrededor, desde servidores a teléfonos Android, automóviles y los dispositivos de la "Internet of things" y muchas cosas más. Linux está prácticamente en todas partes.

El Kernel Linux es la parte responsable de enlazar el software con el hardware y distribuir los recursos entre las aplicaciones, también corren los procesos I/O (entrada y salida) y los ejecuta pasándolos al CPU, además es responsable de encender partes del hardware como el GPU, las tarjetas de sonido, las tarjetas de internet, la RAM, el disco duro, etc. El kernel es el corazón de cualquier sistema operativo y no puede funcionar sin el. En la actualidad, hay 19 millones de líneas de código en el Kernel Linux.


                                    Herramientas GNU
GNU es un proyecto iniciado en los 80's por Richard Stallman quien también fundó la "Free Software Foundation". El objetivo de GNU era crear un sistema operativo completamente Libre que pudiera ser una alternativa a UNIX. Los desarrolladores de GNU crearon todas las herramientas y programas que conformarían el sistema operativo, como el "boot loader" y el "bash shell" y el compilador GCC, crearon Hurd como núcleo para GNU, con el cual no lograron los resultados esperados, así que lo que en realidad sucedió en 1991 fue que Linus Torvalds creó Linux y uso el software y las herramientas GNU para crear un sistema operativo funcional.

Los proyectos GNU en realidad incluyen muchas cosas, como el "bash shell" como ya lo mencionaba, el compilador C GNU, el Grub boot loader, GTK+, Gzip, nano y mucho más programas. La mayoría de ellos están presentes en nuestra distribución Linux.

Uno de los principales proyectos para GNU es el GRUB boot loader:
Este es el primer programa que inicia al encender nuestro ordenador por medio de la BIOS, el boot loader carga desde la partición MBR (GPT) de nuestro disco duro. El trabajo del boot loader es cargar el kernel del SO y los otros componentes que necesite para ser usado, casi el 99% de las distribuciones Linux usan el boot loader llamado "GRUB". Hay otros boot loaders como Lilo, Burg, pero no son muy comunes y casi no se usan.

También tenemos el "bash shell" y sus utilidades, que en realidad es una interfaz de la línea de comandos donde ingresamos los comandos que queremos ejecutar directamente en el sistema, es básicamente el  espíritu de cualquier distro Linux.



         Servidor de visualización o sistema de ventanas
El servidor de visualización es el software responsable de dibujar la interfaz gráfica del usuario en la pantalla, desde iconos a ventanas y menús, cada parte gráfica que ves en tu pantalla es hecho por un servidor de visualización (también conocido como sistema de ventanas). Sin un servidor de visualización lo único que veríamos seria la interfaz de línea comandos negra en toda la pantalla.

Hay muchos servidores de visualización, por ejemplo para los sistemas Unix-Like y las distribuciones Linux el más famoso es el servidor de visualización X,  fue lanzado en 1987 incluso antes del núcleo Linux y aun es usado en la actualidad.

Como podemos ver el servidor X tiene mas de 30 años, está lleno de bugs y de problemas de seguridad, algunos desarrolladores respaldados por compañías como Red Hat e Intel comenzaron a trabajar en un nuevo servidor de visualización llamado Wayland, o Canonical con Mir; Wayland aún está bajo desarrollo pero disponible para probarlo en su última versión estable que es la 1.12.0.



                                 Gestor de pantalla
Los gestores de pantalla son usados para mostrar la pantalla de bienvenida después del GRUB, acá es donde introducimos nuestro usuario y contraseña para comenzar la sesión en el escritorio  y establecer una conexión con el servidor de visualización X. Si estamos usando un entorno como por ejemplo GNOME, entonces el gestor de pantalla por defecto debería de ser GDM (GNOME Display Manager), si usas un entorno KDE entonces tu gestor de pantalla por defecto debería de ser KDM (KDE Display Manager).
Podemos usar el gestor de pantalla que mas nos guste incluso si usamos un entorno de escritorio diferente al que trae por defecto. Para esto, necesitamos buscar las configuraciones y personalización para cada gestor de pantalla, porque son diferentes uno del otro. No podemos utilizar mas de uno a la vez porque el servidor X no permite que se corran múltiples sesiones gráficas al mismo tiempo.



                                          Demonios
Un nombre extraño que nos recuerda a Harry Potter ¿Verdad? Los demonios son programas que corren en el fondo del sistema operativo en vez de ser aplicaciones normales con ventanas en la interfaz del usuario. Estos ejeutan trabajos específicos y procesos que el SO necesita, como el demonio del gestor de redes que te permite conectar a la red automáticamente cuando entras a tu sistema.

El demonio mas famoso es systemd, el cual es el principal encargado de controlar todo el sistema operativo; es el primer proceso en ejecutarse después de cargar el kernel Linux, su trabajo es simplemente controlar a otros demonios y correrlos cuando se necesiten a la hora de iniciar el sistema o cuando sea necesario, controla a la vez todos los servicios disponibles en el sistema operativo y puede encenderlos apagarlos o modificarlos cuando lo necesite. En el pasado SysVinit era el encargado de este trabajo, Canonical que introdujo upStart pero que también fue destronado por el ya famoso controversial y conocido  systemd creado por Red Hat, el cual hoy en día está en casi todas las distros Linux.



                                     Gestor de paquetes
En Linux, el software se conoce como paquetes, si queremos instalar una aplicación, una librería, un juego o lo que sea en nuestro sistema Linux y hacer que sea reconocido, debemos usar paquetes y un gestor de estos. En Linux no nos vamos a internet a tratar de buscar aplicaciones buenas para descargar e instalar en la PC, casi nunca vamos a necesitar hacer eso en Linux, no es Windows.

Lo que hacemos es simplemente abrir el gestor de paquetes gráfico o tienda de Software para encontrar e instalar las aplicaciones que necesitemos, podemos buscar su nombre e instalarla con un clic, si no sabemos lo que buscamos, podemos leer las descripciones de los paquetes en línea en sitios web como "Ubuntu packages" y "Fedora packages" para encontrar el nombre de la app o programa y después instalarlo.

El asunto principal aquí es el sistema de paquetes, la familia Red Hat y muchas otras familias de las distribuciones Linux usan el sistema de paquetes "RPM", en este sistema, los paquetes vienen en formato .rpm (como .exe en Windows), pero en la familia Debian, el sistema usa el sistema de paquetes "dpkg" el cual envia sus paquetes con el formato .deb. No puedes instalar archivos .deb en una distribución Linux que utiliza el sistema de paquetes RPM, no funcionará, puedes intentar convertirlo de .deb a .rpm usando un programa llamado "Alien" pero puede que tampoco funcione, debes tomar los paquetes de los repositorios oficiales de tu sistema.

Recuerda: El sistema de paquetes es el núcleo del sistema para gestionar el software en Linux, lo puedes usar para crear paquetes o instalarlos localmente entre otras cosas, pero usualmente no lidiamos con el a diario, usamos un gestor de paquetes el cual es la interfaz para manejar el software en Linux.

Hay muchos gestores de paquetes en el escritorio Linux, y difieren de una distribución a otra, por ejemplo, Ubuntu usa el gestor de paquetes apt mientras que Fedora usa dnf, Open suse usa "zypper" mientras que Arch usa "pacman".

Para aclarar las cosas, si quieres por ejemplo instalar Firefox en tu sistema debes correr el siguiente comando en:

Ubuntu

Fedora

Opensuse

Arch
Y así sucesivamente... como podemos ver son muy similares, pero en el fondo son muy diferentes; desde la forma en que trabajan, la velocidad, la seguridad, etc, RPM es el sistema de paquetes estándar para el escritorio Linux (elegido por la fundación Linux) pero los paquetes deb son mas en números que los paquetes .rpm, por lo tanto es nuestra decisión elegir.



                                Entorno de escritorio
Un entorno de escritorio es un grupo de programas y librerías que se combinan para proveer aplicaciones básicas al usuario. Proveen el núcleo de muchas librerías, servicios, programas para usuarios finales y mucho mas. Los entornos de escritorio mas famosos en el mundo Linux son GNOME y KDE (por cierto son mis favoritos).

Por ejemplo GNOME utiliza la librería GTK+ para dibujar el GUI (Interfaz Gráfica del Usuario) de sus aplicaciones mientras que KDE usa la librería QT. GNOME viene con una interfaz de escritorio llamada GNOME Shell mientras que KDE viene con KDE Plasma; los entornos de escritorio también proveen otras aplicaciones como el gestor de pantallas, navegador de archivos, gestor de sesiones, navegador web, el set de herramientas GUI, el gestor de configuraciones y muchos más.



                              Aplicaciones del usuario
Finalmente tenemos las aplicaciones normales que utilizamos a diario; Chromium, Libreoffice, Emulador de la terminal, el reproductor multimedia VLC, Pidgin, Spotify. etc. Estas apps están  en el espacio del usuario y pueden ser completamente diferentes de una distribución a otra.

Estas aplicaciones o cualquier otro paquete que descargamos para nuestra distro, están en  un repositorio, que es el lugar donde se almacenan los archivos de los paquetes y su metadata y así poder distribuirla a los usuarios, para que estos puedan instalar cualquier aplicación cuando quieran.



                                   Conclusión
Hay muchos componentes que forman una distribución Linux, estos pueden cambiar de una distribución a otra y pueden ser completamente diferentes pero esto es algo bueno ya que por eso el código esta abierto para que puedas hacer con el lo que quieras en tu sistema operativo. Espero que todos tengan una mejor perspectiva acerca de estas cosas después de leer este blog.

Esto ha sido todo con respecto a los componentes que forman una distro Linux, espero les sirva. 
Saludos especiales a tod@s,  si este blog les fue útil compartan y comenten.





No comments:

Post a Comment