Tema
1, introducción:
Un sistema abierto es aquel que
proporciona alguna combinación de interporalidad, portabilidad y uso de
estándares abiertos.
Un sistema abierto es aquel que es capaz
de hacer que todos los componentes del sistema de computación sean compatibles
en cualquier ambiente sin importar la compañía que lo haya producido, que posea
un ambiente estándar de aplicaciones disponibles por proveedores por usuarios y
la industria.
Orígenes.
La tendencia de recursos a sistemas
abiertos ha sido a largo plazo. No fue sino hasta el 1899 cuando se le dio
carácter al concepto de sistemas abiertos, no existiendo todavía estándares
para los equipos de computación. Con la aparición de las computadoras
personales surgió la portabilidad de software, así los usuarios y los fabricantes
demandaban las mismas facilidades en grandes equipos independientemente del
fabricante.
La idea de sistemas abiertos surge de la
necesidad de un sistema operativo estándar mundial.
Y estos estándares deberían ofrecer los
siguientes elementos:
· Interoperabilidad
entre computadores de cualquier fabricante.
· Portabilidad
de software en distintos hardware.
· Compatibilidad
del software en diferentes plataformas de hardware.
En el año 1977,
para solucionar el problema de arquitectura propia entre equipos, la
organización internacional de
Estandarización
(ISO) creo el subcomité SC16, el cual desarrollo el modelo de arquitectura
llamado ´´modelo de referencia para la intercomunicación de sistemas abiertos´´
(OSI).este modelo se estructuro en 7 niveles de los cuales los tres inferiores
constituyen un estándar muy difundido que se conoce con el nombre de x.25.
En el año 1980 se estableció un
organismo para el desarrollo de estándares de la confección de sistemas
abiertos, así surge el llamado USR/GROUP, conocido hoy como UNIFORUM.
No fue sino hasta el 1987 cuando este
organismo público un documento sobre especificaciones en la construcción de
sistemas abiertos.
El estándar POSIX.1 fue el resultado de
los trabajos comenzados por el comité USR/GROUP. El primer sistema en cumplir
todos los estándares del POSIX fue el CTOS, diseñados para el manejo de tareas
de transacciones intensivas en redes dispersas geográficamente.
En agosto de 1989 fue publicada una
nueva versión del estándar POSIX, dando origen a las familias de estándares
disponibles para la fabricación de sistemas abiertos.
Software
libre.
Es la denominación del software que
respeta la libertad de todos los usuarios que adquirieron el producto y, por
tanto, una vez obtenido puede ser usado, copiado, estudiado, modificado y
distribuido libremente.
Un programa informático es software
libre si otorga a los usuarios todas estas libertades de manera adecuada.
Orígenes
de GNU/LINUX.
GNU/LINUX
es uno delos términos empleados para referirse a la combinación del núcleo o
kernel libre similar a UNIX denominado Linux con el sistema GNU.
Su desarrollo es uno de los ejemplos más
promitentes de software libre.
A pesar de que Linux se denomina en la
jerga cotidiana al sistema operativo 23, este es en realidad solo el kernel del
sistema. La verdadera denominación del sistema operativo es GNU/LINUX debido a
que el resto del sistema se maneja con las herramientas del proyecto GNU.
Distribución Linux.
Localmente llamada (distro) 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.
Además del núcleo Linux, las
distribuciones incluyen habitualmente las bibliotecas y herramientas del
proyecto GNU y el sistema de ventanas x Windows sistema.
En el caso de incluir herramientas de
GNU, se denomina GNU/LINUX.
Existen distribuciones que están
soportadas comercialmente, como fedora (Read Hat), openSUSE (novell), Ubuntu
(canonical ltd) y mandriva.
Distribuciones mantenidas por la
comunidad, como Debian y Gentoo.
Distribuciones que no están relacionadas
con ninguna empresa o comunidad, como es el caso de Slackware.
Filosofía
Unix.
Es un conjunto de ´´pensamientos´´ o
proposiciones que alguien podría catalogar como reglas, las que son aplicables
al desarrollo de software en el ámbito Unix.
La filosofía Unix supone crear programas
rápidos, simples con poca intervención por parte del usuario, o en caso de
necesitarla, esta se produzca al principio o lo más mínima posible.
Estas se acopla perfectamente a las
necesidades de computación delos laboratorios científicos, puesto que Unix fue
originalmente desarrollado en uno de estos.
GNU.
Es un sistema operativo de tipo Unix
desarrollado por y para el proyecto GNU
y auspiciado por la free software fundación.
Está formado en su totalidad por
software libre, mayoritariamente bajo términos de copyleft.
GNU es un acrónimo recursivo de ´´ GNU´s
Not Unix.
Licencia GNU.
La licencia publica general de GNU o más
conocida por su nombre GNU general publicó licencia (GNU GPL) es la licencia más
ampliamente usada en el mundo del software y garantiza a los usuarios la
libertad de usar, estudiar, compartir y modificar el software.
Esta licencia fue creada por Richard
Stallman fundador de la free software foundation (FSF) para el proyecto GNU.
La licencia GPL puede ser usada por
cualquiera, ya que su finalidad es proteger los derechos de los usuarios. Esta
es la primera licencia copyleft para uso general, lo que significa que los
trabajos derivados solo pueden distribuidos bajo los términos de la misma
licencia.
El software bajo licencia GPL puede ser
aplicado bajo todos los propósitos, incluidos los propósitos comerciales e
incluso como herramienta de creación de software.
Libertades del software libre.
Se ha
definido que un programa es software libre si respeta las libertades del
usuario y de la comunidad. Si no existen esas libertades no estamos hablando de
software libre si no de software privado. El software privativo es aquel al
cual no tenemos la posibilidad de compartirlo sin romper la licencia ni de
conocer ni modificar el código fuente que contiene.
Las 4 libertades esenciales.
Libertad
0. Libertad de ejecutar el programa como desees.
Libertad
1. Libertad de estudiar el código fuente del programa y realizar los cambios
que desee el programador.
Libertad
2. Libertad de ayudar a tu programa. Crear copias exactas del programa y
distribuirlas bien gratuitamente o con la libertad de vender tu desarrollo.
Estas dos opciones están permitidas por la comunidad.
Libertad
3. Libertad para contribuir a tu comunidad. Hacer copias de tus versiones
modificadas y distribuirlas entre los demás.
Tema 2,
Ambiente sistema Linux.
Gestor
de arranque (bootloader).
Usted puede
iniciar su sistema GNU/Linux con simplemente presionar el botón de encendido,
utilizando un cargador de sistema (bootloader), o iniciar desde un disquete. Al
encender su
PC, algunas tare
as son ejecutadas durante la fase de arranque. Esta e tapa son referidas como
el POST (Power On Selftest) cual es la prueba de encendido. Después de ocurrido
esto, el sistema operativo es cargado. Un bootloader es un programa así como
LILO y GRUB que son los administradores de cargar el kernel. LILO lo cubrimos en
este Capítulo y GRUB e n el Apéndice Hall final del libro.
El método de
iniciar GNU/Linux depende de cómo usted Configure su sistema. No importa
Como usted
inicie su sistema, los pasos que se toman son básicamente muy similares para
iniciar el sistema.
Particiones.
Las particiones
se utilizan para dividir discos duro en secciones. Un disco duro debe tener por
lo menos una partición y puede tener no más de cuatro. Después de crear una
partición, es necesario darle formato, lo que en esencia es crearle un sistema
de archivos que su sistema operativo puede usar para almacenar su data.
Existen
dos tipos de particiones para almacenar data, primaria y extendida. Una
partición primaria es formateada y entonces se puede utilizar para almacenar
archivos. Además, un computador sólo puede ser arrancado desde una partición
primaria.
Una
partición extendida, por otro lado, no puede ser utilizada para almacenar data directamente.
Es sólo un contenedor para otra estructura lógica llamada Unidades Lógicas
(lógica drive). Una partición extendida se divide e n uno o más drive s
lógicos. Cada drive lógico entonces debe ser dado formato y sólo así podrá ser
usado para almacenar. Los drive s lógicos pueden existir sólo en particiones
extendidas. No se puede utilizar una partición extendida directamente. Usted debe
usar los drive s lógicos que contienen la partición extendida.
Un
disco duro puede tener hasta cuatro particiones primarias. También puede ser
dividida en tres primarias más una partición extendida.
Swap.
La
partición swap es usada como memoria virtual.
Memoria
Virtual se refiere a la combinación del monto de memoria RAM física en su
computador agregado al monto de espacio swap que usted le configuró. El sistema
operativo utiliza el espacio swap para funcionar con más eficiencia.
Si su
sistema tiene 128MB de memoria física, una partición swap le puede dar al
sistema operativo más memoria, lo cual puede tornar su sistema más rápido. Si
usted crea una partición swap de 200MB, su sistema tendrá un total de 328MB de
memoria para su uso.
Su
partición swap de be ser dos veces el monto de memoria RAM física instalada en
su sistema. Linux soporta hasta 16 particiones swaps por separado. El tamaño
mínimo recomendado es el doble de la memoria RAM física, y cuando la memoria es
baja es re comendado utilizar el swap para el mejor funcionamiento del sistema.
Aunque
las particiones swap son más eficientes, puede usar un archivo swap si no tiene
espacio suficiente e n disco para crear una partición swap.
Este
archivo e s relativamente fácil de crear. GNU/Linux direcciona páginas de memoria
sin uso desde el RAM hacia la partición swap, así permite a más aplicaciones
ejecutarse simultáneamente e n su sistema.
Sabe m
os que el uso del swap es más lento que utilizar memoria RAM física.
Sistema de archivos GNU/Linux.
El
sistema de archivos GNU/Linux organiza los archivos y directorios e n una
estructura jerárquica. Un sistema de archivos provee una forma de almacenar
archivos que luego podrán ser acezados al azar, incluyendo discos duro,
disquetes, y CDROMs. Como cintas (tape drive s) son acezadas secuencialmente,
no contienen un sistema de archivos real.
Entre los sistemas de archivos más comunes
podemos encontrar:
Extended File
System Ext. (Han sido reemplazados por EXT2, luego por EXT3)
Fast File system ffs (Amiga)
H PFS File
System hpfs (usado por el Sistema Operativo O S/2; suportado
Solo en modo real)
ISO 9660 File system iso9 660 (CD ROM)
Linux Swap File system swap (memoria virtual)
Minix File
System Minix (Minix; Primer sistema de archivos utilizado por
GNU/Linux)
MS DOS File system FAT16 MS dos (DO S).
Jerarquía y estructuras de directorios.
GNU/Linux
está organizado en una forma jerárquica. GNU/Linux considera cada archivo, directorio,
dispositivo, y vínculo como un archivo colocado en esta estructura.
Directorios
de Linux y su Contenido:
Directorio
Contenido
/ El principio o el
árbol de directorio
/bin Los comandos binarios
/dev Los archivos de los
dispositivos periféricos
/etc Archivos de configuración
del sistema
/home Los directorio home de los
usuarios
/lib Librerías compartidas
/mnt Partición temporal utilizada
para montar sistemas de archivos
/proc Sistema de archivos Virtual
contiene información del kernel y procesos
/tmp Archivos temporarios de las Aplicaciones
/usr Subdirectorios que
contienen los comando disponible a los usuarios, documentación, y otra
información del sistema que no cambia
/var Archivos Log y otros
archivos que cambian durante la ejecución del sistema
Kernel de Linux.
El
kernel se encuentra o en el diskette de inicio o en el directorio /boot del
disco duro. El kernel comprimido se le llama usualmente vm linuz-núm ero-de
-versión. Pero, el nombre y donde lo almacenes no es importante -solamente que
el kernel pueda ser localizado durante el arranque .
Primero,
el kernel se carga a memoria. La mayoría de las veces, su kernel estará
comprimido; no obstante , la codificación para descomprimirlo no necesariamente
de be estar comprimida.
Puede
utilizar la utilidad gunzip para descomprimir el kernel.
Mientras
el kernel carga, imprime mensajes a pantalla y los almacena al archivo
/var/log/messages Usted puede revisarlos este archivo en un visor de texto como
less o more , un editor o con el comando dmesg. El comando dmesg no ne ce sita
argumentos e imprime el último mensaje generado por el kernel y almacenado en
su buffer de mensaje . Estos mensajes incluyen:
1.Tipo
de consola y fuentes
2.Detección
del bus PCI y cualquier presencia de tarjeta PCI
3.Un
estimado de la velocidad del procesador
4.Cantidad
disponible de memoria e n el sistema
5.Tipo
de CPU
6.El
número de la versión del kernel
7.Módulos
de dispositivos cargados por el kernel
8.Cantidad
de espacio utilizado como memoria swap
9
.Adaptadores de Red (Network ) y sus configuraciones
Lo
último que hace el kernel es invocar al daemon init, quien permanece activo
hasta que el computador es apagado.
Rumlevel.
Un
runlevel define un conjunto de procesos que se inician cuando el sistema
arranca. Esto puede ser desde una mínima configuración de procesos utilizada
para administrar el sistema hasta una configuración para dar apoyo a todos los
dispositivos soportados.
Shell gráficos y de textos.
Shells
de texto (CLI)
·
BOURNE SHELL
·
ALMQUIST SHELL
·
BASH
·
KORM SHELL
·
ZSH
·
EMACS
·
SIMBOLO DEL SISTEMA DE WINDOWS.
Shells gráficos
(GUI)
·
GNOME
·
KDE
·
XFCE
·
LXDE
·
ESCRITORIO DE MS WINDOWS
Tema 3.
Directorio home.
De
acuerdo con la estructura de directorios de los sistemas Linux, los archivos y
directorios que crean los usuarios se almacenan en el directorio home. En este
directorio hay un subdirectorio para cada usuario.
Comando ls.
El
listado de archivos se puede obtener de varias maneras utilizando comandos diferentes;
el comando más útil para esto es el comando ls. Este comando tiene un gran
número de opciones que alteran su comportamiento. Si usted utiliza el shell bash
(Bourne Again Sh ell), puede adquirir un listado de los archivos del directorio
actual (pwd) con uno de los comandos ls o dir. La sintaxis es como sigue :
Ls
[opciones] [nombre]
Dir
[opciones] [nombre]
Commandos basicos:
Comando
Propósito
Cd Cambiar de posición en el sistema de
archivos
Ls Despliega el contenido del directorio
File Determina el tipo de archivo
Cat Despliega el contenido del archivo
More Despliega el contenido de un archivo una
pantalla a la ve z
Less Despliega el contenido de un archivo una
pantalla a la ve z
Wc Muestra el conteo de carácter, Word, y
cuenta líneas
Head Despliega las primeras líneas de un archivo
Tail Despliega las últimas líneas de un
archivo
Touch Cambia la fecha de acceso o timestamp;
crea un archivo vacío
Cp Copia un archivo
Dd Copia un archivo desde un dispositivo
a otro
M v Cambia el nombre de un archivo o su
colocación dentro del sistema de archivos.
Rm Borra un archivo
Mk dir Crea directorios
Rm dir Borra directorios
Tema 4, ambiente de Shell.
Shell.
Es un intérprete
de comandos, un intermediario que se encarga de traducir los comandos del
usuario a instrucciones que solo el sistema operativo entiende.
Características.
Características
de algunas de los Shells más Comunes.
Shell Comandos Internos Opciones línea Comandos
Ash (más pequeña) 24 10
Bash (Bourne Again Shell) 48 12
K sh
(Korn Shell de dominio público) 42
20
Tcsh (emula el shell csh) 53 18
Zsh
(una de las más grande s) 84 50
Escribir en la línea de Comandos.
El
sistema operativo GNU/Linux, no el shell, observa lo que se escribe en la línea
de comandos. Si usted borra una palabra o un carácter, el sistema operativo no
envía estas correcciones al shell. En el momento que usted presiona la tecla
Enter, el sistema operativo envía la línea completa al intérprete del shell.
Múltiples
comandos pueden ser ingre sados e n línea se parados por punto y comas (;).
Estos comandos son ejecutados secuencialmente y el shell espera que termine
cada comando antes de proceder a ejecutar el próximo.
Variables del usuario y variables del
ambiente.
Existe
n dos tipos de variable s, de ambiente y del usuario. Una Variable de Usuario
es una que el usuario puede nombrar y asignarle un valor. Una Variable de Ambiente
ya está nombrada aunque puede cambiarle su valor.
Variables de Usuario
Las
variables del usuario son usadas mayormente e n los scripts. Ellas proveen mucho
pode r.
Un tipo
de variable de usuario que seguro vas a usar regularmente son los alias.
Alias.
Los alias
son variable s de usuarios que son usada para modificar y controlar el ambiente
. Se usan comúnmente para acortar nombres de comandos largos. A menudo el valor
También contiene argumentos para ser enviados al comando. Un alias puede
acortar el número de teclas que tiene que presionar para digitar un comando.
Path.
Directorios
para buscar comandos de ejecución.
Uno de las
variables s de ambiente más importantes es el PATH . Esta variable le dice al
sistema operativo donde buscar los archivos y comandos.
Prompt.
El
prompt es lo que ve impreso en el shell al principio de cada línea de comando.
Es un indicador que el Shell está listo para recibir nueva entrada de comandos.
El prompt e s controlado por una variable de entorno llamada PS1. El valor de
esta variable PS1 es examinada justamente antes de presentarle cada prompt al
usuario. Siempre y cuando la variable tenga un valor, el valor puede ser
ejecutado como si fue se escrito e n la línea de comando.
Sustitución de comandos.
Sustituir
Comandos se refiere a reemplazar un comando con su salida. Al escribir pwd en
la línea de comando el shell despliega su directorio de trabajo actual.
Pudiésemos lograr resultados similares utilizando substitución de comandos.
Dos
ejemplos son:
Echo
$(pwd)
/home /Miguel
Echo `pwd`
/home /Miguel
El
primer ejemplo utiliza la sintaxis más actual del shell bash .
El
segundo muestra el estilo de sintaxis anterior del Shell Bourne usando el
apostrofe invertido. Ambos métodos de ejecución de comando arrojan el mismo
resultado de salida del pwd. Ambos funcionan con el shell bash .
Procesos.
Un
shell es un intérprete de comandos y un lenguaje de programación. Los comando
pueden ser ejecutados de dos maneras uno a la ve s conocido como sincronizados
(synch ronously) o más de uno a la ve s conocido como no sincronizado (asynch
ronously).
Procesos en backgraund yforegraund.
Al ejecutar
comandos sincronizados el shell espera que el comando termine ante s de aceptar
entradas adicionales. A esto se le refiere como ejecutar procesos en el primer
plano (fore ground).
Un
comando asincrónico se ejecuta a la misma vez que el shell ejecuta otros comandos.
Este
Proceso
es conocido como ejecutar procesos en el segundo plano (back ground).
Al
ejecutar un comando, el shell crea un proceso hijo y el proceso padre (el
shell) se duerme hasta que este proceso se complete . La excepción ha esto es
cuando usamos los comandos conocidos como built-in, los cuales no crean
procesos hijos. Por defecto, cada vez que ejecuta un comando él se ejecuta en
el primer plano (fore ground). Lo puedes ejecutar en el segundo plano(back
ground) con sólo usar el carácter de & al final del comando. Por ejemplo: update
db &
Causa
que el proceso (update db) se ejecute e n el back ground. El shell bash , la
combinación de teclas Ctrl+ z suspenden un programa en ejecución y lo colocan e
n el back ground. Use el comando fg para traer un programa al fore ground desde
el back ground y puedes usar la combinación de teclas Ctrl+ c para matar el
proceso si es necesario.
Jobs.
Un job
es una serie de uno o más comandos ejecutándose . Al ejecutar un comando
GNU/Linux, aun este compuesto de múltiples comandos conectados por una o más
tuberías (pipe s), usted está creando un nuevo trabajo (job). El shell provee
la capacidad para controlar estos jobs y le asigna un número a cada trabajo.
Signal.
Una
señal (signal) es un mensaje enviado a un proceso. Puede ser una señal
deinterrupt, o de instrucción ilegal, o cualquier otra condición. Puede
utilizar el comando kill para enviar estas señales a los procesos. A menudo
estas señales son usadas para detener un proceso.