Módulo2 - Unidad 1 - Introducción - Linux
Módulo2 - Unidad 1 - Introducción - Linux
Módulo2 - Unidad 1 - Introducción - Linux
Introducción Linux
Presentación
En esta primera unidad adicional, se enseñará a conocer las distintas distribuciones y sus
características principales.
Objetivos
Que los participantes logren…
Bloques temáticos
1. Introducción a Linux.
Introducción a Linux
¿Qué es Linux?
Al igual que Windows XP, Windows 7, Windows 10 y Mac OS , Linux es un Sistema
operativo, es decir un conjunto de software que administra el hardware y los recursos asociados
en una computadora de escritorio, notebook, Smart phone, etc...
En un sistema GNU/Linux, Linux es el núcleo. El resto del sistema consiste en otros programas,
muchos de los cuales fueron escritos por o para el proyecto GNU. Dado que el núcleo de Linux
en sí mismo no forma un sistema operativo funcional, preferimos utilizar el término
“GNU/Linux” para referirnos a los sistemas que la mayor parte de las personas llaman de
manera informal “Linux”.
Linux está modelado como un sistema operativo tipo Unix. Desde sus comienzos, Linux se
diseñó para que fuera un sistema multi tarea y multi usuario. Estos hechos son suficientes para
diferenciar a Linux de otros sistemas operativos más conocidos. Sin embargo, Linux es más
diferente de lo que puedan imaginar. Nadie es dueño de Linux, a diferencia de otros sistemas
operativos. Gran parte de su desarrollo lo realizan voluntarios de forma altruista.
Aunque hay muchos grupos e individuos que han contribuido a GNU/Linux, la Free Software
Foundation ha sido quien más ha contribuido. No sólo creó la mayor parte de las herramientas
que utilizan en GNU/Linux sino también la filosofía y comunidad que hizo que Linux fuera
posible.
Los usuarios de Linux tienen una gran libertad al elegir sus programas. Por ejemplo, un usuario
de Linux puede elegir entre docenas de distintos intérpretes de línea de órdenes y entre distintos
entornos de escritorio. Tantas opciones confunden a veces a los usuarios de otros sistemas
operativos que no están acostumbrados a poder modificar el intérprete de línea de órdenes o el
entorno de escritorio.
Las principales ventajas de Linux son : es menos probable que un sistema Linux se “cuelgue”,
además tiene mejor capacidad para ejecutar múltiples programas al mismo tiempo (multitasking)
y es más seguro que muchos otros sistemas operativos. Debido a estas ventajas, Linux es el
sistema operativo que ha experimentado mayor crecimiento en el mercado de los servidores
(veremos este tema en mayor profundidad más adelante). Últimamente, Linux está empezando a
ser popular entre los usuarios domésticos y hasta en empresas y organismos de gubernamentales.
Un Poco de historia:
Linux hace su aparición a principios de la década de los noventa, era el año 1991 y por aquel
entonces un estudiante de informática de la Universidad de Helsinki, llamado Linus Torvalds,
empezó como una afición y sin imaginarse a lo que llegaría ese proyecto, a programar las
primeras líneas de código de este sistema operativo llamado Linux.
Este comienzo estuvo inspirado en MINIX, un pequeño sistema Unix desarrollado por Andrew
Tanenbaum. Las primeras discusiones sobre Linux fueron en el grupo de noticias
comp.os.minix, en estas discusiones se hablaba sobre todo del desarrollo de un pequeño sistema
Unix para usuarios de Minix que quisieran más.
El 5 de octubre de 1991, Linus anuncio la primera version "Oficial" de Linux versión 0.02. Con
esta versión Linus pudo ejecutar Bash (GNU Bourne Again Shell) y gcc (El compilador GNU de
C) pero no mucho más funcionaba.
Linus nunca anunció la versión 0.01 de Linux (Agosto 1991), esta versión no era ni siquiera
ejecutable, solamente incluía los principios del núcleo del sistema, estaba escrita en lenguaje
ensamblador y asumía que uno tenía acceso a un sistema Minix para su compilación.
Linus Torvalds sigue coordinando el trabajo de varios cientos de desarrolladores con la ayuda de
cierto número de responsables de subsistemas. Existe una página oficial del núcleo Linux. Se
puede encontrar un excelente resumen semanal de las discusiones en la lista de correo linux-
kernel en Kernel Traffic.
Existen un gran número de versiones de GNU/Linux diferentes que han sido adaptadas o
enlatadas utilizando diferentes componentes, módulos y/o sub-módulos como para complacer el
gusto de cualquier usuario. Desde Linux orientados a usuarios ”hard core”, pasando por Linux
diseñados específicamente para servidores, para utilidades científicas como así también para
usuarios novatos o para algún hardware específico.
Prácticamente todas las distribuciones de Linux pueden ser obtenidas de forma gratuita. Existen
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.
CentOS, una distribución creada a partir del mismo código del sistema
Red Hat pero mantenida por una comunidad de desarrolladores
voluntarios.
Son cientos de distribuciones de todo tipo, dedicadas a distintos ámbitos, por ejemplo,
educación, medicina, electrónica, etc.
• 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 especializadas:
• 64 Studio, una distribución basada en Debian diseñada para la edición 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.
• mkLinux, Yellow Dog Linux o Black Lab Linux, orientadas a usuarios de Macintosh y
de la plataforma PowerPC.
El sitio web DistroWatch ofrece una lista de las distribuciones más populares; la lista está
basada principalmente en el número de visitas a los links, por lo que no ofrece resultados muy
confiables acerca de la popularidad de las distribuciones, pero es un buen lugar para ver las
nuevas distribuciones que van emergiendo.
Como podrán ver el número de distribuciones es enorme y son todas diferentes, pero no se
desesperen.
Se podría decir que existen 3 grandes distros (Red Hat, Debian y Slackware) de las cuales se
desprenden la gran mayoría del resto.
Gran parte de los usuarios de GNU/Linux suele inclinarse por alguna de ellas. En este link
podrán ver un mapa temporal de la evolución.
¿Porqué utilizar Linux?
¿Por qué utilizar un sistema operativo diferente del que viene pre- instalado en mi computadora o
notebook? ¿Porque perder tiempo en aprender a utilizar un sistema operativo diferente al que
utiliza el común de la gente?
O simplemente podríamos hacernos la pregunta: lo utilizo ¿sólo porque vino instalado en mi pc?
Si tienen problemas para responder las preguntas anteriores y quieren deshacerse de la pesadilla
de tener que hacer la reinstalación anual del sistema operativo de la PC/notebook.
Del dolor de cabeza de las pantallas azules, de estar pagando un anti-virus y/o un paquete
ofimático con altísimos costos de licencia, lo que deberían hacer es probar migrar a Linux.
Linux ha evolucionado a ser uno de los sistemas operativos más utilizados del planeta.
Pero cómo ¿? Si todas las PC´s y Notebooks se venden con Windows ¿? Se preguntarán…
Hoy el sistema operativo más utilizado en el mundo es Android, gracias a los Smart phones y se
trata de un “sabor” de Linux desarrollado por Google.
A su vez cada día más empresas comienzan a vender dispositivos con alguna modificación o
versión de GNU/Linux dentro ellas , no solo notebooks o celulares , sino dispositivos como
cámaras ip, routers wifi, cámaras de fotos, etc..
Linux combina altísima estabilidad, alta seguridad, muchísimo software para todo tipo de tareas
(inclusive juegos ¡!) y todo a costo cero!
Así es, Linux es un sistema operativo de código libre y gratuito, esto quiere decir que la licencia
permite su utilización para muchas aplicaciones sin ningún tipo de costo, incluyendo usos
profesionales.
En el mercado de servidores ha crecido de forma consistente en los últimos 15 años, según la
consultora w3tech el 47,8% de servidores en el mundo poseen algún sistema operativo derivado
de UNIX, de los cuales 35,9% son algún sabor de Linux.
Sitio excelente para ver estadísticas de uso de sistemas operativos entre otros procesos en el
mundo: https://gs.statcounter.com
Hoy en día existen numerosos casos de éxito en los cuales empresas como IBM o el banco
BBVA que han migrado casi el 100% de sus computadoras de escritorio a sistemas operativos
libres, así como también muchos organismos estatales en diferentes países.
La licencia puede llegar a 1200 U$D anuales sin sumarle el costo de la licencia de otros
softwares que se utilizarían como base de datos o servidor WEB.
Con un servidor Linux podemos instalar el sistema operativo con una base de datos a elección,
un servidor WEB a elección y el costo sería únicamente el hardware.
Linux está distribuido bajo licencias open source, esto significa que cumple con la siguiente
“filosofía”:
Código libre, gratuito y disponible abiertamente que puede ser utilizado para estudio y/o
modificación del mismo.
Estos puntos son clave para entender la comunidad mundial de Linux. Se trata de millones de
personas que dedican tiempo a la programación de software de forma gratuita y libre, que
aportan a las comunidades código que se reutiliza, modifica y mejora continuamente llevando a
que el mismo sea de altísima calidad ya que se depura naturalmente.
Esta filosofía es la que lleva a que cada día más y más gente utilice sistemas operativos Linux, la
libertad de elegir, compartir y modificar.
Arquitectura de GNU/Linux:
La arquitectura interna de Linux es compleja pero se puede resumir las partes importantes de
forma breve y fácil de entender.
Procesos:
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:
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, como es el caso corriente hoy en día, en
general internamente Linux utilizará varios usuarios “robots” para organizar mejor y de forma
más segura el sistema.
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.
En general 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.
Por ejemplo, Init puede arrancar un proceso 'servidor de correo' asociado al usuario 'mail'.
Este usuario tendrá los permisos justos y necesarios para poder enviar y recibir correo y
almacenarlo. El proceso 'servicio de correo' puede a su vez arrancar procesos hijos pero estos
estarán automáticamente asociados a su usuario 'mail', nunca a 'root'. Este simple sistema de
permisos provee a Linux de un sistema de seguridad muy sólido.
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.
Archivos:
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.
El Kernel
Comentaba anteriormente que el primer proceso en ejecutarse el init.
En realidad esto no ha sido más que una mentira con fines pedagógicos. 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.
Si varios procesos quieren acceder al disco duro o a Internet, el kernel asignará un tiempo a cada
uno de ellos, copiará los datos que cada proceso quiere enviar y los enviará al disco duro o a la
red.
Para un ser humano da la impresión de que todas las tareas se están ejecutando de forma
simultánea. Este sistema de asignación de la CPU es clave y está extremadamente estudiado y
optimizado.
Por ejemplo, Linux es lo suficientemente inteligente como para saber qué procesos están a la
espera de recibir un dato de internet y, mientras este dato no llegue, no le asignará el valioso
tiempo de CPU.
Desde hace unos años a esta parte, los procesadores han desarrollado sistemas de ahorro de
energía permitiendo disminuir la frecuencia, potencia o ciclo de trabajo de la CPU cuando no hay
tareas que hacer. Linux está al tanto de este hecho y si observa que no hay aplicaciones
demandando la CPU automáticamente le indica al procesador que disminuya el consumo de
energía.
Si antes nombrábamos que los procesos están asociados a usuarios y gestionan archivos, en
realidad estos usuarios y archivos son gestionados por el kernel.
Cuando un proceso quiere acceder a un fichero, en realidad le pide al kernel que acceda al
archivo y será el kernel quien le devuelva los datos que haya leido.
Antes de ello el kernel comprueba el usuario y grupo asociado al proceso, comprueba a su vez
los usuarios o grupos que pueden acceder a dicho archivo. Si no concuerdan, en vez de devolver
el dato, devolverá un error o excepción al proceso llamante indicándole el "porque".
Otro trabajo del kernel es abstraer a los procesos del hardware real de la máquina.
Un proceso 'visor de fotos' que quiera acceder a un archivo no tiene que preocuparse si dicho
archivo está en un disco duro, una memoria SSD o debe ser accedido a través de la red local ya
que se encuentra en otra pc o servidor.
El kernel mediante un sistema llamado "montaje" mapea rutas lógicas de directorios, El proceso
'visor de fotos' no se tiene que preocupar de dónde está físicamente el archivo, solamente de su
ruta simbólica.
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:
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.
Servidor Gráfico:
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.
Desktop Environment:
Es el entorno gráfico.
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….
Aplicaciones:
Al igual que en Windows o Mac, el Sistema operativo Linux ofrece miles de aplicaciones que
pueden ser utilizadas y son compatibles.
La mayoría de los Linux ofrecen un App-Store en la cual se pueden buscar y descargar e instalar.
Por supuesto que se pueden instalar de otras formas pero es recomendable utilizar las app-stores
inicialmente.