Sistema operativo familia
LINUX
Definición de Sistema Operativo
Un sistema operativo es un programa (o una colección de programas)
que permite administrar los recursos de una computadora: Memoria,
CPU, dispositivos de E/S (Unidades de Discos, monitor, teclado, etc).
También proporciona un entorno para escribir programas de
DESARROLLO DE LINUX
¿Que cosa es UNIX y porque es tan importe a la hora de hablar de
GNU/Linux?
LINUX es un sistema operativo, compatible Unix. Dos características muy peculiares lo diferencian del resto de los sistemas que podemos encontrar en el mercado, la primera, es que es libre, esto significa que no tenemos que pagar ningún tipo de licencia a ninguna casa desarrolladora de software por el uso del mismo, la segunda, es que el sistema viene acompañado del código fuente.
struct sockaddr {
unsigned short sa_family; char sa_data[14]; };
struct in_addr {
unsigned long s_addr; };
GNU/Linux es un clon del sistema operativo Unix, escrito
desde cero por el Flandes Linus Torvalds con la asistencia de un pequeño grupo de hackers esparcidos por la red. Entre sus principales características se encuentra la implantación del estándar POSIX.
POSIX
:
Sigla un tanto forzada de Portable
Operating
System
Interface (Interfaz portable de sistema operativo).
Conjunto de estándares que crecieron a partir del
sistema operativo UNIX.
Estrictamente, GNU/Linux se refiere al núcleo o kernel.
En un sentido mas amplio, comprende el núcleo del sistema
operativo mas un conjunto de programas que permiten
compilar lenguajes de programación, editar texto, interpretar
comandos, manejar archivos y discos, acceder a otras
maquinas, establecer comunicaciones telefónicas, enviar y
recibir correo electrónico, manejar las colas de impresión y un
sinfín de tareas mas. Algunos de estos programas pueden
haber sido desarrollados por los propios usuarios.
LINUX hace su aparición a principios de la década de
los noventa, era el año 1991, por aquel entonces un
estudiante de informática de la Universidad de
Helsinki, llamado Linus Torvalds empezó,como una
afición y sin poderse imaginar a lo que llegaría este
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
Andy Tanenbaum
. Las primeras
discusiones sobre Linux fueron en el grupo de noticias
composminix, en estas discusiones se hablaba sobre todo del
desarrollo de un pequeño sistema Unix para usuarios de Minix
que querían mas.
Linus nunca anuncio 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.
El 5 de octubre de 1991, Linus
anuncio
la primera versión .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 mas funcionaba. En este estado de desarrollo ni se pensaba en los términos soporte,documentación, distribución y desarrollo.
Después de la versión 0.03, Linus salto en la numeración hasta la 0.10, mas y mas programadores a lo largo y ancho de
Internet empezaron a trabajar en el proyecto y después de sucesivas revisiones, Linus incremento el número de versión hasta la 0.95 (Marzo 1992). Mas de un año después (diciembre 1993) el núcleo del sistema estaba en la versión 0.99 y
Desde entonces no se ha parado de desarrollar, la versión
actual del núcleo es la 2.6.X y sigue avanzando día a día con la meta de perfeccionar y mejorar el sistema.
Objetivos de GNU/Linux
GNU/Linux fue diseñado teniendo en mente los siguientes
objetivos:
•Crear un sistema interactivo de tiempo compartido diseñado por
programadores y para programadores, destinado a usuarios
calificados.
•Que fuera sencillo, elegante, escueto y consistente.
•Que permitiera resolver problemas complejos combinando un
numero reducido de comandos básicos.
Filosof
Filosof
í
í
a
a
del sistema GNU/Linux
del sistema GNU/Linux
Los objetivos con que se creo determinaron
una filosofía. caracterizada por:
comandos cortos, simples, específicos y muy
eficientes, que hacen una sola cosa pero la
hacen muy bien.
Entrada y salida estandarizadas que permiten
la interconexión de comandos. Esto se llama
entubamiento (pipelining): la salida de un
comando es tomada por el siguiente como
entrada.
Como ya mencionamos, GNI/Linux es solo el núcleo del sistema operativo, pero necesita aplicaciones y programas para hacer algo. Muchos han sido portados a Linux, otros han sido creados
específicamente para GNU/Linux, todos ellos se encuentran en Internet dispuestos a que cualquiera los baje y los instale en su sistema.
Como esto es una ardua tarea no tardan en surgir compañías dedicadas a reunir todos esos programas facilitando la tarea de crear un sistema Linux funcional. En la actualidad existe un sin numero de estas compañias pero solo se mencionaran las mas importantes dentro del contexto mundial.
Slackware
Una de las primeras distribuciones que surge fue Slackware
(http://www.slackware.com), diseñada por Patrick Volkerding a partir de SLS Linux . Esta tuvo una gran aceptación al principio hasta llegar a ser la distribución mas popular del mercado. Actualmente ha perdido terreno a favor de distribuciones mas modernas, siendo relegada a aplicaciones especializadas.
Una de las debilidades de Slackware se encuentra en el sistema de instalación de paquetes, el cual no tiene control de versiones ni
dependencias. Las nuevas distribuciones han implementado y adoptado dos sistemas de instalación de archivos RPM (RedHat Package Manager) y DEB (Debian Package Manager).
Debian
Debian (http://www.debian.org) es una distribución bastante
popular que no esta desarrollada por ninguna compañía comercial sino que es fruto del trabajo de diversos voluntarios en toda la
comunidad de Internet. Es, por lo tanto, una distribución
completamente gratis, sin restricción de licencias en donde todo el software es GNU/GPL5 y no incluye software comercial.
Además es bastante completa y estable gracias a su sistema de instalación de paquetes DEB. Sin embargo, tal vez sea algo difícil para alguien que empieza por primera vez con Linux.
SuSE
SuSE
(http://www.suse.de) es una distribución de una
compañia alemana la cual combina el sistema de paquetes de
Red Hat (RPM) con una organización derivada de Slackware.
Esta distribución es la mas popular en Europa y tiene un gran
soporte para diferentes lenguas incluido el Español. Es una de
las mas fáciles de instalar y configurar, además viene con una
gran cantidad de paquetes.
Mandriva
Mandriva Linux(http://www.mandriva.com/community/) antes
Mandrake Linux es una distribucion Linux que hizo su aparición en julio de 1998 propiedad de Mandriva, enfocada a principiantes o usuarios medios.
Red Hat
Red Hat (http://www.redhat.com) es la distribución mas popular
del mercado hoy en día, siendo emulada por muchas otras. Muy
sencilla de instalar, excelente auto-detección de dispositivos,
instalador grafico y un excelente conjunto de aplicaciones
comerciales en su distribución oficial.
Kernel / Núcleo
¿Qué es el kernel/núcleo?
El kernel o núcleo de linux se podría definir como el corazón de este sistema operativo. Es el encargado de que el software y el hardware de tu ordenador puedan trabajar juntos.
Las funciones más importantes del mismo, aunque no las únicas, son:
•Administración de la memoria, para todos los programas en ejecución.
•Administración del tiempo de procesador, que estos programas en ejecución utilizan.
•Es el encargado de que podamos acceder a los periféricos/elementos de nuestro ordenador de una manera cómoda
Existen dos versiones del Linux kernel:
Versi
Versióón de produccin de produccióón:n: La versión de producción, es la versión estable hasta el momento. Esta versión es el resultado final de las versiones de desarrollo o experimentales. Cuando el equipo de desarrollo del núcleo experimental, decide que ha conseguido un
núcleo estable y con la suficiente calidad, se lanza una nueva versión de producción o estable. Esta versión es la que se debería utilizar para un uso normal del sistema, ya que son las versiones consideradas más estables y libres de fallos en el momento de su lanzamiento.
Versión de desarrollo: Esta versión es experimental y es la que utilizan los desarrolladores para programar, comprobar
y verificar nuevas características, correcciones, etc. Estos núcleos suelen ser inestables y no se deberian
Cómo interpretar los números de las versiones: Las versiones del núcleo se numeran con 3 números, de la siguiente
forma: XX.YY.ZZ
XX: Indica la serie principal del núcleo. Hasta el momento solo existen la 1 y 2. Este numero cambia cuando la manera de funcionamiento del núcleo ha sufrido un cambio muy
importante.
YY: Indica si la versión es de desarrollo o de producción. Un número impar, significa que es de desarrollo, uno par, que es de producción.
ZZ: Indica nuevas versiones dentro de una versión, en las que lo unico que se ha modificado, son fallos de
Unos ejemplos nos ayudarán a entenderlo mejor:
ej1: versión del núcleo 2.0.0: Núcleo de la serie 2 (XX=2), versión de producción 0 (YY=0 par), primeraversión de 2.0 (ZZ=0)
ej2: versión del núcleo 2.0.1: Núcleo de la serie 2, version 0, en el que se han corregido errores de programación presentes en la versión 2.0.0 (ZZ=1)
ej3: version del nucleo 2.1.100: version 100 del nucleo de desarrollo 2.1.
Sistemas de archivos en
GNU/Linux
Sistemas de archivos
/binbin Binarios de comandos esencialesBinarios de comandos esenciales /
/bootboot Archivos estArchivos estááticos de cargador de ticos de cargador de arranque(bootarranque(boot--loaderloader) ) /
/devdev Archivos de dispositivos Archivos de dispositivos /
/etcetc ConfiguraciConfiguracióón del sistema localn del sistema local--mmááquina quina /
/homehome Directorios Directorios homehome de los usuarios de los usuarios /
/
/
mnt
mnt
Punto de montaje de particiones temporales
Punto de montaje de particiones temporales
/
/
root
root
Directorio hogar del usuario
Directorio hogar del usuario
root
root
/
/
sbin
sbin
Binarios del sistema esenciales
Binarios del sistema esenciales
/
/
tmp
tmp
Archivos temporales
Archivos temporales
/
/
usr
usr
Segunda jerarqu
Segunda jerarqu
í
í
a mayor
a mayor
/
/
var
var
Informaci
Informaci
ó
ó
n variable
n variable
/
/proc
proc
Sistema de archivos virtual de
Sistema de archivos virtual de
informacion
informacion
de procesos y
de procesos y
del kernel
/
bin Binarios de comandos esenciales de usuarios (disponibles
para todos los usuarios).
/bin contiene comandos que pueden ser utilizados por ambos los usuarios y el administrador del sistema, pero que son requeridos en el modo /mono-usuario (single-user mode) puede también contener comandos que son /utilizados indirectamente por algunos scripts
/boot: Archivos estáticos del cargador de arranque (boot
loader).
Este directorio contiene todo para arrancar excepto los archivos de
configuración y el instalador de mapas. En su sentido más sencillo /boot es para cualquier cosa que se utiliza antes de que el kernel ejecute /sbin/init.
/dev Archivos de dispositivos.
Éste es el directorio de los dispositivos. Contendría un archivo por cada dispositivo que el kernel de Linux puede soportar
/etc Configuración del sistema local a la máquina.
/etc contiene archivos y directorios que son locales al sistema actual.
Ningún binario debe ir directamente dentro de /etc. Los binarios que en el pasado se encontraban en /etc, irán en /sbin ó /usr/sbin
/home: Directorios hogar de los usuarios (opcional)
home es un concepto algo estándar, pero es claramente un sistema de /archivos específico de un site. El arreglo diferirá de máquina a máquina.
/lib Librerías compartidas y módulos de kernel escenciales
El directorio /lib contiene aquellas imágenes de las librerías compartidas que se necesitan para arrancar el sistema y ejecutar los comandos en el sistema de archivos raíz.
/mnt Punto de montaje para sistemas de archivos montados temporalmente.
Este directorio se ha provisto para que el administrador pueda montar temporalmente sistemas de archivos cuando lo necesite. El contenido de este directorio es un asunto local y no debe afectar la manera en la cual se ejecuta ningún programa
/proc: Sistema de archivos virtual de informacion de procesos y del kernel.
El sistema de archivos proc se está convirtiendo en el estándar de facto para el manejo de información de procesos y de sistema en vez de /dev/kmem y otros métodos similares.
/sbin: Binarios del Sistema (Alguna vez mantenidos en /etc)
Los útiles usados por la administración del sistema ( y otros comandos que sólo root utiliza ) están almacenados en /sbin, /usr/sbin, y /usr/local/sbin. /sbin típicamente contiene binarios escenciales para arrancar el sistema ademas de los binarios en /bin. Cualquier cosa que se ejecuta después de que se sabe que /usr se ha montado (cuando no hay problemas) debería estar en /usr/sbin. Los binarios de administración de sistema sólo-locales deben estar localizados en /usr/local/sbin
/tmp:Archivos temporales.