Está en la página 1de 21

TALLER DE LINUX BASICO

17-08-2021 John Anaya Veramendi


0 Introducción a UNIX

• Unix (registrado oficialmente como UNIX®) es un sistema


operativo portable, multitarea y multiusuario; desarrollado, en
principio, en 1969, por un grupo de empleados de los laboratorios
Bell de AT&T, entre los que figuran Ken Thompson, Dennis
Ritchie y Douglas McIlroy.
• El sistema, junto con todos los derechos fueron vendidos por
AT&T a Novell, Inc. Esta vendió posteriormente el software
a Santa Cruz Operation en 1995, y esta, a su vez, lo revendió
a Caldera Software en 2001, empresa que después se convirtió
en el grupo SCO. Sin embargo, Novell siempre argumentó que
solo vendió los derechos de uso del software, pero que retuvo
el copyright sobre "UNIX®". En 2010, y tras una larga batalla
legal, ésta ha pasado nuevamente a ser propiedad de Novell.
• Solo los sistemas totalmente compatibles y que se encuentran
certificados por la especificación Single UNIX
Specification pueden ser denominados "UNIX®" (otros reciben la
denominación "similar a un sistema Unix" o "similar a Unix"). En
ocasiones, suele usarse el término "Unix tradicional" para
referirse a Unix o a un sistema operativo que cuenta con las
características de UNIX Versión 7 o UNIX System V.
0 Introducción a UNIX

• Unix es un sistema operativo multiusuario y de tiempo compartido


muy popular.
• Su ámbito de aplicación se extiende desde los computadores
personales hasta los grandes sistemas.
• La primera versión fue escrita en ensamblador por una persona
(Ken Thompson) en los laboratorios Bell a finales de los 60 como
reacción a MULTICS. Versión monousuario para PDP-7.
Posteriormente se adaptó a la familia de computadores PDP-11.
El código fuente era público y alcanzó una gran difusión entre la
comunidad científica.
• Dos líneas comerciales:
 System V (desarrollada por AT&T)
 BSD (Berkeley Software Distribution)
• Intentos de estandarización:
POSIX: Portable Operationg System Interface
OSF: Open Software Fundation
UI: Unix International
0 Introducción a UNIX
NUCLEO BASICO
0 Introducción a UNIX
PRINCIPIOS DE DISEÑO
• UNIX fue diseñado para ser un SO interactivo,
multiusuario y multitarea:

• Interactivo quiere decir que el sistema acepta


órdenes, las ejecuta y se dispone a esperar otras
nuevas.
• Multitarea significa que puede realizar varios
trabajos, denominados procesos, al mismo tiempo.
• Multiusuario significa que más de una persona
puede usar el sistema al mismo tiempo.

• UNIX fue diseñado por programadores para ser usado


por programadores en un entorno en que los usuarios
son relativamente expertos y participan en el
desarrollo de proyectos de software.

UNIX ➔ No user friendly


0 Introducción a UNIX
HISTORIA

• 1960: General Electric + MIT + Bell Labs (AT&T) desarrollan MULTICS – SO multi-usuario y multitarea
en ordenadores centrales (cajas grandes) – MULTICS: MULTiplexed Information and Computing System

• 1969: Ken Thompson (Bell Labs) – Crea un SO basado en MULTICS pero más sencillo en una PDP-7
(mini PC 1965) – UNICS: UNiplexed Information and Computing System – Poca memoria y potencia
llevan a utilizar comandos cortos: ls, cp, mv… – El lenguaje de programación en que fue escrito UNICS
se llamaba B

• 1971: Se une Dennis Ritchie – Crea el primer compilador de C y se reescribe el núcleo de UNIX en C

• 1973: Mejora de la portabilidad – Se lanza la quinta versión de UNIX a las Universidades en 1974
(GRATIS)

• 1978: Se separan dos grandes ramas: SYSV (AT&T y otras empresas) y BSD (Berkeley Software
Distribution de la UCB) Incompatibles!
0 Introducción a UNIX
PRINCIPIOS DE DISEÑO
0 Historia y llegada de Linux al mercado

• Linux comienza en 1991 como un proyecto


personal del estudiante finlandés Linus Torvalds:
crear un nuevo núcleo de sistema operativo libre.
El núcleo Linux resultante ha estado marcado
por un crecimiento constante a lo largo de su
historia. Desde el lanzamiento inicial de
su código fuente en 1991, ha crecido de una
pequeña cantidad de archivos C bajo una
licencia que prohíbe la distribución comercial, a
la versión 5.6 en 2020 con más de 33,14
millones de líneas de código fuente, bajo la GNU
General Public License
0 La Licencia Pública GNU
GNU, son las siglas de la frase inglesa General Public License o
simplemente, Licencia Pública General. Este tipo de licencia fue creada
por la Free Software Foundation en el año 1989 y asegura que todo el
material licenciado bajo la misma, esté disponible de forma libre para
todos los usuarios de la aplicación o del software que cuente con este
tipo de licencia.
Todos los programas informáticos que cuentan con licencia GNU,
pueden ser libremente copiados, distribuidos, vendidos y hasta
modificados por cualquier usuario, siempre y cuando mantengan el
material informático bajo los mismos términos de la licencia GNU.
Si el software GNU es vendido en una cantidad superior a las 100
unidades, debe distribuirse en un formato que garantice ediciones
posteriores por parte del desarrollador o de los usuarios del software, así
como también, debe incluir el código fuente original de la aplicación o
software con la distribución del ejemplar.
0 La Licencia Pública GNU
1983 Richard Stallman inició el ambicioso Proyecto GNU, con el propósito de crear
un sistema operativo similar y compatible con UNIX y los estándares POSIX. Dos años
más tarde.
1985, creó la Fundación del Software Libre (FSF) y desarrolló la Licencia pública general
de GNU (GNU GPL), para tener un marco legal que permitiera difundir libremente el
software. De este modo el software de GNU fue desarrollado muy rápidamente, y por
muchas personas. A corto plazo, se desarrolló una multiplicidad de programas, de modo
que a principios de los años 1990 había casi bastante software disponible como para
crear un sistema operativo completo. Sin embargo, todavía le faltaba un núcleo.
Esto debía ser desarrollado en el proyecto GNU Hurd, pero Hurd demostró desarrollarse
muy inactivamente, porque encontrar y reparar errores (eliminación de
fallos, debugging en inglés) era muy difícil, debido a las características técnicas del diseño
del micronúcleo.
Otro proyecto de sistema operativo software libre, en los años 1980 fue BSD. Este fue
desarrollado en la Universidad de Berkeley desde la 6.ª edición de Unix de AT&T. Puesto
que el código de AT&T Unix estaba contenido en BSD, AT&T presentó una demanda a
principios de los años 1990 contra la Universidad de Berkeley, la cual limitó el desarrollo
de BSD y redujo el desarrollo. Así a principios de los años 1990 no produjo ningún sistema
completo libre.
El futuro de BSD era incierto debido al pleito y detuvo el desarrollo. Además, el Proyecto
GNU gradualmente se desarrollaba pero, este carecía de un bien formado núcleo UNIX.
Esto dejó un nicho crítico abierto, que Linux llenaría muy pronto
0 Arquitectura de un sistema GNU/Linux

La arquitectura de un sistema GNU/Linux involucra diferentes


componentes. Como se describe en Yaghmoun [2] la
arquitectura, desde un punto de vista genérico, de un sistema
GNU/Linux se puede describir mediante diferentes capas que
van desde el hardware hasta las aplicaciones. En la siguiente
figura observamos estos niveles de abstracción.

Inmediatamente sobre el hardware se sitúa el kernel. El kernel


es el componente central del sistema operativo. Su funciones
son principalmente administrar el hardware de manera
coherente y justa mientras se le otorga un nivel de abstracción
familiar, a través de las APIs, a las aplicaciones de nivel de
usuario.
Entre otras tareas relevantes de un sistema operativo, el
kernel Linux maneja dispositivos, administra los acceso de E/S,
controla los procesos y administra el uso compartido de
memoria.
0 Arquitectura de un sistema GNU/Linux

Dentro del kernel, la interfaz de bajo nivel es específica para cada configuración de hardware, sobre la
cual, el kernel ejecuta y provee control directo de los recursos hardware. Típicamente, los servicios de
bajo nivel manejan operaciones específicas de la CPU (del ingles Central Unit Process), operaciones de
memoria específicas a la arquitectura, y provee interfaces básicas para dispositivos.
Los capa de alto nivel provee abstracciones comunes a todos los sistemas Unix, incluyendo procesos,
archivos, sockets y señales. Este nivel de abstracción se mantiene constante aunque difiera el hardware.
Entre estos dos niveles de abstracción, el kernel necesita lo que se denomina componentes de
interpretación

para comprender e interactuar con datos estructurados provenientes de, o hacia ciertos dispositivos.
Los diferentes tipos de sistemas de archivos y los protocolos de red son ejemplos de fuentes de datos
estructurados. El kernel necesita interpretarlos e interactuar a fin de proveer acceso a los datos
provenientes desde estas fuentes o hacia las mismas.
Los servicios brindados por el kernel no son soporte suficiente para cargar y ejecutar las aplicaciones. Es
necesario contar con librerías, éstas proveen APIs familiares y abstracciones de servicios que interactúan
con el kernel en nombre de las aplicaciones para obtener la funcionalidad deseada.
La librería principal, utilizada en la mayoría de las aplicaciones Linux, es la librería C GNU (glibc).
Típicamente las librerías son enlazadas dinámicamente en el momento en el que se ejecutan las
aplicaciones. Esto es, no son parte de las aplicaciones binarias, sino que se cargan dentro del espacio de
memoria de las aplicaciones durante el inicio de las mismas. Esto permite a varias aplicaciones utilizar
una misma instancia de una librería en vez de realizar una copia en memoria por cada aplicación que se
ejecuta.

Según lo expuesto anteriormente es lógico pensar la conveniencia de enlazar dinámicamente las librerías,
sin embargo, en los sistemas embebidos esto no es del todo cierto. El motivo radica en que las
aplicaciones no utilizan la librería C en forma completa, sino que dependiendo de la aplicación puede
utilizar partes de la librería y no otras. De este modo, en algunas aplicaciones parte de la librería se
encuentra en la misma aplicación binaria. Este es el fundamento por el cual es preferible utilizar
un enlazamiento estático, sin embargo nos encontramos con un inconveniente, para sistemas Linux
embebidos la librería glibc consume demasiados recursos de la memoria RAM del sistema, por este
motivo, reemplazar esta  librería puede significar un ahorro de espacio en memoria. Usualmente se la
reemplaza por librerías alternativas diseñadas para sistemas embebidos.
0 Kernel Linux

El kernel es solo un componente de una gran estructura organizada funcional y


jerárquicamente que es el sistema operativo. Si bien solo es un componente,
es el componente central y de su comportamiento depende la robustez y
flexibilidad del sistema operativo.

Para comprender esto de mejor manera veamos algunas definiciones sobre


sistemas operativos.

Tanenbaum desarrolla el concepto de sistema operativo desde dos ópticas:


•El sistema operativo como máquina extendida
•El sistema operativo como administrador de recursos

En la primer definición hace referencia al sistema operativo como intermediario


entre el hardware y las aplicaciones, facilitando el acceso de lectura y escritura
a los diferentes recursos (memoria RAM, procesador, impresoras). Actuando
como una capa de abstracción de alto nivel, más fácil de programar que el
hardware subyacente.

Desde el segundo punto de vista, la función del sistema operativo es la de


administrar todos los componentes de un sistema complejo (memorias,
procesadores, discos, mouse, interfaces con redes, etc). Aquí la misión es
asegurar un reparto ordenado de los recursos, atender solicitudes, contabilizar
la utilización y mediar entre solicitudes en conflicto provenientes de diferentes
programas y usuarios.
0 Kernel Linux

Corbet describe de modo más específico el rol que lleva


a cabo el kernel Linux

•Administración de procesos
•Administración de memoria
•Sistemas de archivos
•Control de dispositivos
•Redes
0 Distribuciones Linux
Una distribución GNU/Linux (coloquialmente llamada distro) y correctamente escrito y hablado, es una distribución de
software basada en el núcleo Linux que incluye determinados paquetes de software para satisfacer las necesidades de un
grupo específico de usuarios, dando así origen a ediciones domésticas, empresariales y para servidores. Por lo general están
compuestas, total o mayoritariamente, de software libre, aunque a menudo incorporan aplicaciones o
controladores propietarios.
Además del núcleo Linux, las distribuciones incluyen habitualmente las bibliotecas y herramientas del proyecto GNU y el
sistema de ventanas X Window System. Dependiendo del tipo de usuarios a los que la distribución esté dirigida se incluye
también otro tipo de software como procesadores de texto, hoja de cálculo, reproductores multimedia, herramientas
administrativas, etc. En el caso de incluir paquetes de código del proyecto GNU, se denomina distribución GNU/Linux.
Existen distribuciones que están soportadas comercialmente, como Fedora (Red Hat), openSUSE (Novell) y Ubuntu
 (Canonical Ltd.); distribuciones mantenidas por la comunidad, como Debian y Gentoo; y distribuciones que no están
relacionadas con ninguna empresa o comunidad, como es el caso de Slackware.
Distribuciones
0 Distribuciones Linux
Distribuciones
0 Distribuciones Linux
Distribuciones
0 PROCESO INSTALACIÓN
PROCESO INSTALACIÓN DEBIAN SOBRE
VIRTUALBOX
Puede instalar cualquier sistema operativo Linux con este método, pero
usaremos Debian para este taller.

1. Descargue la ISO para Debian


2. Descarga VirtualBox
3. Configure VirtualBox para Debian
4. Comience la instalación de Debian
5. Listo para usar Debian
0 PARTICIONAMIENTO DE DISCO

PARTICIONAMIENTO RECOMENDADO

Partición primaria:
 /boot = 1 GB
Particiones extendidas:
 swap = El doble de la memoria RAM
 /home = ~2 GB para los usuarios de nuestro Ubuntu
 / = 10 GB
El particionamiento no es una ciencia exacta, y mucho menos con las miles de combinaciones que hay, pero os
aseguramos que separar el punto de montaje /home del resto nos ahorrará muchos problemas, sobre todo en
actualizaciones, donde no perderemos ni un solo dato
Componentes

FIN DE SESION N° 01

GRACIAS

También podría gustarte