Sistema
Operativo Linux
Introducción
En una era de cambios en el ambiente computacional, de
una amplia oferta en sistemas operativos e interfaces gráficas y
sobre todo, del costo que representa contar con un sistema operativo
que interactue con el software sin problemas, surge con fuerza
inusitada: 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. El sistema lo forman el núcleo del sistema (kernel) mas un
gran numero de programas / librerías que hacen posible su
utilización.
LINUX se distribuye bajo la GNU Public
License: Ingles , por lo tanto, el código fuente tiene que estar
siempre accesible.
El sistema ha sido diseñado y programado por multitud
de programadores alrededor del mundo. El núcleo del sistema sigue en
continuo desarrollo bajo la coordinación de Linus Torvalds, la
persona de la que partió la idea de este proyecto, a principios de
la década de los noventa.
Día a día,
más y más programas / aplicaciones están disponibles para este
sistema, y la calidad de los mismos aumenta de versión a versión.
La gran mayoría de los mismos vienen acompañados del código fuente
y se distribuyen gratuitamente bajo los términos de licencia de la
GNU Public License.
En los últimos tiempos, ciertas casas de software
comercial han empezado a distribuir sus productos para Linux y la
presencia del mismo en empresas aumenta rápidamente por la excelente
relación calidad - precio que se consigue con Linux.
Las
plataformas en las que en un principio se puede utilizar Linux son
386-, 486-. Pentium, Pentium Pro, Pentium II, Amiga y Atari, también
existen versiones para su utilización en otras plataformas, como
Alpha, ARM, MIPS, PowerPC y SPARC.
Reseña
Historia del Linux: Linux fue creado
originalmente por Linus Torvald en la Universidad de Helsinki en
Finlandia, siendo él estudiante de informática. Pero ha continuado
su desarrollado con la ayuda de muchos otros programadores a través
de Internet.
Linux
originalmente inicio el desarrollo del núcleo como su proyecto
favorito, inspirado por su interés en Minix, un pequeño sistema
Unix desarrollado por Andy Tannenbaum. Él se propuso a crear lo que
en sus propias palabras seria un "mejor Minix que el Minix".
El 5 de octubre de 1991, Linux anuncio
su primera versión "oficial" de Linux, versión 0.02.
Desde entonces , muchos programadores han respondido a su llamada, y
han ayudado a construir Linux como el sistema operativo completamente
funcional que es hoy.
¿QUÉ ES LINUX?
Linux es un sistema operativo diseñado por cientos de
programadores de todo el planeta, aunque el principal responsable del
proyecto es Linus Tovalds. Su objetivo inicial es propulsar el
software de libre distribución junto con su código fuente para que
pueda ser modificado por cualquier persona, dando rienda suelta a la
creatividad. El hecho de que el sistema operativo incluya su propio
código fuente expande enormemente las posibilidades de este sistema.
Este método también es aplicado en numerosas ocasiones a los
programas que corren en el sistema, lo que hace que podamos encontrar
muchisimos programas útiles totalmente gratuitos y con su código
fuente. Y la cuestión es que, señores y señoras, Linux
es un sistema operativo totalmente gratuito.
Mi
máquina corre Linux, y puedo asegurar que es uno de los sistemas que
más aprovecha mi computadora, es decir, con el consigo ejecutar
tareas mucho más rápido que con otros sistemas operativos
comerciales. Y es que Linux no requiere grandes prestaciones para
funcionar.
Las funciones
principales de este magnífico sistema operativo son:
Sistema
multitarea En Linux es posible ejecutar varios programas a
la vez sin necesidad de tener que parar la ejecución de cada
aplicación.
Sistema multiusuario Varios usuarios
pueden acceder a las aplicaciones y recursos del sistema Linux al
mismo tiempo. Y, por supuesto, cada uno de ellos puede ejecutar
varios programas a la vez (multitarea).
Shells programables Un shell conecta las
ordenes de un usuario con el Kernel de Linux (el núcleo del
sistema), y al ser programables se puede modificar para adaptarlo a
tus necesidades. Por ejemplo, es muy útil para realizar procesos en
segundo plano.
Independencia de dispositivos Linux
admite cualquier tipo de dispositivo (módems, impresoras) gracias a
que cada una vez instalado uno nuevo, se añade al Kernel el enlace
o controlador necesario con el dispositivo, haciendo que el Kernel y
el enlace se fusionen. Linux posee una gran adaptabilidad y no se
encuentra limitado como otros sistemas operativos.
Comunicaciones Linux es el sistema más
flexible para poder conectarse a cualquier ordenador del mundo.
Internet se creó y desarrollo dentro del mundo de Unix, y por lo
tanto Linux tiene las mayores capacidades para navegar, ya que Unix
y Linux son sistemas prácticamente idénticos. Con linux podrá
montar un servidor en su propia casa sin tener que pagar las enormes
cantidades de dinero que piden otros sistemas.
Linux no sacrifica en ningún momento
la creatividad, tal y como lo hacen algunas compañías informáticas.
Linux es una ventana abierta por la que es posible huir hacia un
mundo donde la verdadera informática puede ser disfrutada sin
limites ni monopolios.
Linux es distribuido mediante una serie de
distribuciones como RedHat, Slackware, Debían ... las cuales se
diferencian por su método de instalación y por los paquetes
(software) que viene incluido. Es posible que encuentre a la venta
versiones de Linux y piense: "si, si.... decían que era
gratis..." No se asuste, todo el software de Linux esta regido
por la licencia de GNU, con la cual cualquier persona puede modificar
un programa y venderlo según el desee, con la condición que la
persona que compra ese producto puede realizar la misma acción o
simplemente hacer copias para todos aquellos que lo quieran sin tener
que pagar más (por lo tanto no se extrañe si encuentra distribución
comerciales). Esta licencia es la garantía que afirma la absoluta
libertad de este sistema operativo. Si no desea ni siquiera pagar esa
mísera cantidad puede descargárselo de Internet totalmente gratis
(bueno, sólo tendrá que pagar la factura de teléfono ).
Características de
Linux
multitarea:
varios programas (realmente procesos) ejecutándose al mismo tiempo.
multiusuario:
varios usuarios en la misma máquina al mismo tiempo (y sin
licencias para todos).
multiplataforma:
corre en muchas CPUs distintas, no sólo Intel.
funciona
en modo protegido 386.
tiene protección de la memoria entre procesos, de
manera que uno de ellos no pueda colgar el sistema.
carga de ejecutables por demanda: Linux sólo lee de
disco aquellas partes de un programa que están siendo usadas
actualmente.
política de copia en escritura para la compartición
de páginas entre ejecutables: esto significa que varios procesos
pueden usar la misma zona de memoria para ejecutarse. Cuando alguno
intenta escribir en esa memoria, la página (4Kb de memoria) se
copia a otro lugar. Esta política de copia en escritura tiene dos
beneficios: aumenta la velocidad y reduce el uso de memoria.
memoria virtual usando paginación (sin intercambio de
procesos completos) a disco: una partición o un archivo en el
sistema de archivos, o ambos, con la posibilidad de añadir más
áreas de intercambio sobre la marcha (se sigue denominando
intercambio, es en realidad un intercambio de páginas). Un total de
16 zonas de intercambio de 128Mb de tamaño máximo pueden ser
usadas en un momento dado con un límite teórico de 2Gb para
intercambio.
la
memoria se gestiona como un recurso unificado para los programas de
usuario y para el caché de disco, de tal forma que toda la memoria
libre puede ser usada para caché y éste puede a su vez ser
reducido cuando se ejecuten grandes programas.
librerías compartidas de carga dinámica (DLL's) y
librerías estáticas también, por supuesto.
se realizan volcados de estado (core dumps) para
posibilitar los análisis post-mortem, permitiendo el uso de
depuradores sobre los programas no sólo en ejecución sino también
tras abortar éstos por cualquier motivo.
casi
totalmente compatible con POSIX, System V y BSD a nivel fuente.
mediante
un módulo de emulación de iBCS2, casi completamente compatible con
SCO, SVR3 y SVR4 a nivel binario.
todo el código fuente está disponible, incluyendo el
núcleo completo y todos los drivers, las herramientas de desarrollo
y todos los programas de usuario; además todo ello se puede
distribuir libremente. Hay algunos programas comerciales que están
siendo ofrecidos para Linux actualmente sin código fuente, pero
todo lo que ha sido gratuito sigue siendo gratuito.
control
de tareas POSIX.
pseudo-terminales
(pty's).
emulación de 387 en el núcleo, de tal forma que los
programas no tengan que hacer su propia emulación matemática.
Cualquier máquina que ejecute Linux parecerá dotada de
coprocesador matemático. Por supuesto, si tu ordenador ya tiene una
FPU (unidad de coma flotante), será usada en lugar de la emulación,
pudiendo incluso compilar tu propio kernel sin la emulación
matemática y conseguir un pequeño ahorro de memoria.
soporte
para muchos teclados nacionales o adaptados y es bastante fácil
añadir nuevos dinámicamente.
consolas virtuales múltiples: varias sesiones de login
a través de la consola entre las que se puede cambiar con las
combinaciones adecuadas de teclas (totalmente independiente del
hardware de video). Se crean dinámicamente y puedes tener hasta 64.
soporte
para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y
todos los sistemas de archivo típicos de System V, y tiene un
avanzado sistema de archivos propio con una capacidad de hasta 4 Tb
y nombres de archivos de hasta 255 caracteres de longitud.
acceso transparente a particiones MS-DOS (o a
particiones OS/2 FAT) mediante un sistema de archivos especial: no
necesitas ningún comando especial para usar la partición MS-DOS,
parece un sistema de archivos normal de Unix (excepto por algunas
graciosas restricciones en los nombres de archivo, permisos, y esas
cosas). Las particiones comprimidas de MS-DOS 6 no son accesibles en
este momento, y no se espera que lo sean en el futuro. El soporte
para VFAT (WNT, Windows 95) ha sido añadido al núcleo de
desarrollo y estará en la próxima versión estable.
un
sistema de archivos especial llamado UMSDOS que permite que Linux
sea instalado en un sistema de archivos DOS.
soporte en sólo lectura de HPFS-2 del OS/2 2.1
sistema de archivos de CD-ROM que lee todos los
formatos estándar de CD-ROM.
TCP/IP, incluyendo ftp, telnet, NFS, etc.
Appletalk
disponible en el actual núcleo de desarrollo.
software
cliente y servidor Netware disponible en los núcleos de desarrollo.
LINUX -
COMANDOS BÁSICOS
date muestra
la fecha del sistema.
date –u mmddhhhhaa cambia la fecha
del sistema, ej. 1202120095 es igual a mes 12, día 02, hora 12:00 y
año 1995.
logout sale de la actual sesión.
login sale de la actual sesión.
^D sale de la actual sesión.
Alt+F1 inicia una consola virtual
(varias a la vez: F1,F2,F3...)
passwd cambia el password del actual
usuario.
^C aborta programa en ejecución.
^S paraliza la pantalla.
^Q anula la paralización de la
pantalla.
who lista los usuarios conectados.
who am i lista tu nombre.
who you are lista tu nombre.
mail nombre envía correo, se finaliza
escribiendo un punto en una línea sola.
mail visualiza tu correo, teclea ? para
ayuda.
ls lista directorios y ficheros.
ls –i lista directorios y ficheros
con sus i-números.
ls –a lista directorios y ficheros en
orden alfabético.
ls –s lista directorios y ficheros
con su tamaño en bloque (1 bloque= 512 bytes)
ls –r lista directorios y ficheros en
orden inverso.
ls –u lista directorios y ficheros
según último acceso.
ls –l lista todos los directorios y
ficheros en formato largo.
Head –nº lines selecciona la primera
línea (ej. ls|head –1 lines)
cat file file ... visualiza
seguidamente los ficheros indicados.
cat file file > file graba los dos
archivos en uno.
ln file link crea un enlace a un
archivo, los dos contienen el mismo fichero físico, si cambias uno,
cambia el otro. Pero si borras uno todavía queda el otro.
cp file file copia ficheros.
rm file borra ficheros.
mv file file mueve o cambia de nombre.
pwd muestra el directorio actual.
cd cambia de directorio.
mkdir directorio crea un directorio.
rmdir directorio borra un directorio.
comando &
hace que el proceso sea desatendido en 2º plano (background).
ps [nº] muestra los procesos
desatendidos.
ps alx muestra los procesos
desatendidos asociados a la terminal (a), los no asociados (x) y hace
una lista larga (l).
Elementos de
la lista larga: STA (Estado del proceso) O (Inexistente) S
(Durmiendo) W (Esperando) I (Intermedio) R (Ejecutándose) Z
(Terminado) Z (Parado) UID (Nº de Identificación del propietario)
PID (Nº de Identificación del proceso) PPID (Nº de Identificación
del proceso padre) PRI (Prioridad, nº altos=baja prioridad) WCHAN
(Suceso al que espera) NICE (Nº para calcular la pri.) TTY
(Terminal) STTY (Tiempo de ejecución)
kill nº detiene la ejecución de
un proceso en background.
at hora o fecha <<EOF ejecuta
algo a una hora establecida (para salir escribir EOF)
Posibilidades
para hora o fecha: 8am, 2130, 12N fri week (siguiente semana), 2PM
apr 3, now +1minute, now +1 hour, 4PM +2 days, 1PM tomorrow,...
comando ; comando se pueden escribir
varios comandos a la vez.
comando > file redirecciona la
salida a un archivo.
(comando ; comando) > file
redirecciona toda la salida del conjunto a un archivo.
comando >> file redirecciona la
salida a un archivo, pero lo añade al final de este.
comando < file > file
redirecciona de forma contraria para acabar llevando el resultado a
un archivo.
comando | comando tubo (pipeline) la
salida del 1º la envía hacia el 2º.
*, ?, [...], ... caracteres de
sustitución.
echo * lista directorios y ficheros.
echo –n "Hoy
es `date`, hola $variable" hace eco sin carro de retorno (-n) de
la frase Hoy es, ejecuta el comando date (entre acentos), hace eco de
hola y imprime el contenido de la variable. Para eliminar los valores
especiales de algunos caracteres deberemos escribir / antes, ejemplo
"Hola /"Pepe/"".
mesg y permite que te escriban los
usuarios del sistema.
mesg n prohibe que te escriban a los
usuarios del sistema.
mesg muestra
el estado actual (escribir o no).
tty muestra tu número (archivo) de
terminal.
write nombre
[tty] para comunicarse con un usuario conectado al sistema. Para
salir ^D, para indicar al otro el fin del mensaje –oo-, y el fin de
la comunicación –oo-. Si el usuario pertenece a otra terminal, se
debe indicar. Si el usuario tiene el mesg en no o esta realizando una
tarea específica no podremos comunicarnos.
cmp file file comprueba si son
idénticos, si lo son no aparece ninguna salida.
comm [-nº] file file lista las
palabras comunes de los dos archivos, en el número se indica la
columna a comparar: 0,1,2,3.
diff file file lista las palabras
diferentes de los dos archivos.
find . –file ... –mtime 1 –size
+10 –type f busca en el directorio actual los ficheros con dicho
nombre, que hayan sido modificados hace 1 día, con un tamaño mayor
a 10 bloques y del tipo fichero.
find / -name ... –atime 1 –size –20
–type d busca en el directorio actual los directorios con dicho
nombre, que hayan tenido acceso hace 1 día, con tamaño menor que 20
bloques y del tipo directorio.
find . –name –ok rm {} ; busca en
el directorio actual y borra los ficheros encontrados que cumplan los
requisitos.
lpr file imprime el archivo.
pr file imprime el archivo junto a un
encabezamiento, la fecha, hora, ...
tail nº file
muestra la cola de un archivo, en nº se debe especificar: +2l (a
partir de la segunda línea por arriba), -10l (a partir de la décima
línea por abajo). Si en lugar de l (línea) podemos escribir b
(bloque) ó c (carácter).
tr caracteres caracteres cambia los
caracteres por los indicados a continuación. (Ejemplo: tr abc ABC).
tee file
muestra los datos en un punto intermedio.
du muestra el tamaño por bloques de
cada archivo y directorio.
du –s muestra el tamaño total por
bloques.
file file
indica el tipo de archivo que es (empty cannot open directory
English text ascii text data).
stty
información sobre nuestro terminal.
stty [-] raw lee carácter a carácter.
Se anula añadiendo el signo – al comando.
stty [-] cooked lee línea a línea. Se
anula añadiendo el signo – al comando.
stty [-] cbreak mezcla de los dos
anteriores. Se anula añadiendo el signo – al comando.
stty [-] nl no retorna el carro hasta
el principio (se anula con ^J).
stty [-] echo no se ven las pulsaciones
en pantalla. Se anula añadiendo el signo – al comando.
sort file muestra en pantalla el
archivo ordenado por la 1ª columna (para indicar la segunda columna
añadir +1 y así sucesivamente).
sort file –u muestra en pantalla el
archivo ordenado por la 1ª columna sin las líneas duplicadas.
sort file –b muestra en pantalla el
archivo ordenado por la 1ª columna ignorando espacios en blanco.
sort file –f muestra en pantalla el
archivo ordenado por la 1ª columna distinguiendo entre minúsculas y
mayúsculas.
sort file –r muestra en pantalla el
archivo ordenado por la 1ª columna en orden inverso.
sort file –c comprueba si el archivo
ya esta ordenado.
grep palabra file busca unos caracteres
determinados en un fichero.
grep –v palabra file busca las
líneas que no contienen dicha palabra.
grep –c palabra file
muestra el número de líneas que contienen la palabra.
grep –y
palabra file busca la palabra en el fichero sin distinguir entre
minúsculas y mayúsculas.
grep –n palabra file busca la palabra
y muestra su línea con el número de
esta.
uniq file muestra el archivo sin las
líneas que estén repetidas.
wc file muestra el número de líneas,
palabras y caracteres (en este orden) del archivo.
wc –l file muestra el número de
líneas del archivo.
wc –w muestra el número de palabras
del archivo.
wc –c muestra el número de
caracteres del archivo.
cal [nº mes] nº año imprime un
calendario del mes y/o año indicado. Mes: 1-12, año 1-9999.
newgrp grupo
cambia de grupo.
sum file suma las palabras de un
archivo.
expr nº + nº suma +, resta -,
multiplica *, divide /,... una expresión.
wall mensaje manda un mensaje a todos
los usuarios. (Solo lo recibirán los usuarios que tengan su sistema
configurado para poder recibir estos mensajes)
id muestra nuestro UserId y el GroupId.
chmod nºnºnº file cambia los
permisos de un archivo. 1: Permiso de ejecución (x), 2: Permiso de
escritura (w), 3: Permiso de lectura ( r). Se deben sumar para poner
más de uno. El primer número corresponde al creador del archivo, el
segundo al grupo del creador, y el tercero al resto de usuarios. Ej.
666 : todo el mundo tiene permiso de todo.
chown nombre file cambia el propietario
de un archivo.
chgrp grupo file cambia el grupo del
propietario de un archivo.
umask muestra los permisos por defecto
de los archivos creados. Ej. 022 entonces 666-022=644, es decir
usuario permiso de w, r, grupo permiso de r y lo otros permiso de r.
umask nº cambia los permisos por
defecto de los archivos creados. Ej. umask 000: todo el mundo tiene
todos los permisos al ser creado un archivo.
Archivos especiales:
/etc/passwd Contiene todos los logins y
passwords
/etc/motd Mensaje del día
/etc/profile Se ejecuta al introducir
al entrar en el sistema
Versiones
El desarrollo
inicial Linux ya aprovechaba las características de conmutación de
tareas en modo protegido del 386, y se escribió todo en ensamblador.
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 tenia acceso a un sistema Minix para su compilación.
El 5 de
octubre de 1991, Linus anunció 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.
Después de la versión 0.03, Linus
salto en la numeración hasta la 0.10, más y más programadores a lo
largo y ancho de internet empezaron a trabajar en el proyecto y
después de sucesivas revisiones, Linus incremento el numero 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
la versión 1.0 no llego hasta el 14 de marzo de 1994.
La versión
actual del núcleo es la 2.2 y sigue avanzando día a día con la
meta de perfeccionar y mejorar el sistema.
La ultima versión estable es la versión 2.2, que
soporta muchos más periféricos, desde procesadores hasta joysticks,
sintonizadores de televisión, CD ROMs no ATAPI y reconoce buena
cantidad de tarjetas de sonido. Incluye también soporte para tipos
de archivos para Macintosh HFS, Unix UFS y en modo de lectura, HPFS
de OS/2 y NTFS, de NT.
Otras Versiones:
Linux 2.0
Linux 2.2
Linux 2.3
Comparación
Se señala las diferencias de Linux con
el DOS y no con otro S.O. porque la mayoría provienen del DOS.
No existe el concepto de unidad de disco. Todas las
unidades en Linux se 'montan' como si fueran un subdirectorio más.
No existe el concepto de extensión
del nombre de un fichero. Los ficheros pueden tener nombres de hasta
256 caracteres. Los puntos están permitidos en el nombre de un
fichero. Así, un fichero se podrá llamar:
DOSEMU-HOWTO.español.tar.gz
por poner un ejemplo.
/usr/src/linux-1.2.13/Makefile
Existe
diferencia entre mayúsculas y minúsculas. Por ejemplo, no es lo
mismo 'dir' que 'DIR' que 'Dir'...
Adiós
a los atributos de los ficheros, tal y como los conoce el DOS. Cada
fichero tendrá ahora 10 'atributos'.
Entre
un comando y sus parámetros deberemos dejar obligatoriamente un
espacio en blanco. Por ejemplo 'cd..' no funcionará mientras que
'cd ..' sí.
IMPORTANTE: Un
sistema Linux NUNCA se puede apagar por las buenas.
Antes le hemos de advertir al S.O. de que vamos a apagarlo (o
reiniciarlo). La razón de que esto deba ser así es para que al
sistema le dé tiempo de escribir en disco todos los datos que
tuviera pendientes de escribir, salir ordenadamente de todas las
aplicaciones que tuviera arrancadas y desmontar todas las unidades
que tuviera montadas.
Existen muchas
otras diferencias (gestión de memoria plana, ...), pero las
mencionadas son las que más nos pueden influir en la forma de
trabajar, al menos en principio.
¿Qué es el kernel?
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 mas 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ón
de producció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
kernel experimental, decide que ha conseguido un kernel 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 mas
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
deberían usar, a no ser que sepas lo que haces.
Como interpretar los números de las
versiones:
Las
versiones del kernel se numeran con 3 números, de la siguiente
forma: XX.YY.ZZ
XX: Indica la serie principal del kernel. Hasta
el momento solo existen la 1 y 2. Este numero cambia cuando la
manera de funcionamiento del kernel ha sufrido un cambio muy
importante.
YY:
Indica si la versión es de desarrollo o de producción. Un numero
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 único que se ha modificado, son fallos de
programación /bugs.
Unos ejemplos nos ayudaran a entenderlo
mejor:
ej1:
versión del kernel 2.0.0: Kernel de la serie 2 (XX=2), versión de
producción 0 (YY=0 par), primera versión de 2.0 (ZZ=0)
ej2:
versión del kernel 2.0.1: Kernel de la serie 2, versión 0, en el
que se han corregido errores de programación presentes en la
versión 2.0.0 (ZZ=1)
ej3: versión del kernel 2.1.100:
versión 100 del kernel de desarrollo 2.1.
Sistemas de Archivos
Sistema de ficheros linux (I)
Bueno como
sabrás el DOS funciona con FAT, File Allocation Table, o sea una
tabla a principio del disco duro donde se almacena, la información
de cada bloque del disco, de manera que tenemos una lista enlazada
para cada fichero.
--------- | 2| 0 FICHERO A bloques 0 2
6 --------- | 3| 1 FICHERO B bloques 1 3 4 --------- | 6| 2 ---------
| 4| 3 --------- | fin| 4 --------- | | 5 --------- | fin| 6
---------
Para leer un fichero A leemos en la fat
el bloque 0, vemos donde continua y leemos la fat en el bloque 2,
leemos el bloque del disco, y volvemos a leer el bloque de la fat
donde esta el bloque 6. Esto parece rápido, y lo es i la FAT esta en
memoria, pero si calculamos lo que puede ocupar una FAT de un disco
duro de 1Giga donde el disco esta dividido en bloques de pongamos
4024Kb y pongamos 20 bytes por descriptor, tenemos una FAT de 5
megas, (no recuerdo de cuanto era el tamaño de bloque/descriptor en
MSDOS), lo cual no se puede tener en memoria y si hay que leer cada
vez de disco es muy lento. Cuando MSDOS funcionaba en disquete no era
demasiado problema tener en memoria unos Ks de FAT, pero con los
disco de ahora de Giga ya es un problema.
¿Como lo
hace UNIX? ¿Y por supuesto ext2 de Linux? Con otra estructura de
datos llamada i-nodes, que para cada fichero tiene un array, con las
posiciones del disco donde se encuentra este. De esta manera cuando
queremos leer un fichero, leemos solo un trozo de disco contiguo,
donde encontramos todas las referencias a ése y no toda la FAT que
puede ser de mas de un mega. Con los nodos-i (o inodes) no ahorramos
espacio de disco (con respecto a FAT), la información de en que
bloques esta cada fichero la tenemos igual pero mejor organizada.
Las tablas de i-nodes tienen un tamaño
limitado, pero en caso de que se llenen con indirecciones se accede a
otras tablas de i-nodes, con lo que el limite del tamaño de los
ficheros es grande. (bueno esto lo he explicado un poco por encima se
podría explicar extensamente).
IN> Me imagino que el ext2 es mejor
que el msdos, pero realmente que IN> diferencias hay entre ellos
(menos lo de los permisos y la lon- IN> gitud del nombre de los
ficheros).
Pues como has visto es mas rapido y
eficiente, aparte de no tener las limitaciones de usuario, permisos,
nombres largos, etc.
El
tamaño de bloque de disco, en MS DOS es fijo en función del tamaño
de la partición, en linux en el momento en que formateas la
partición con mkfs (o mk2efs no recuerdo) puedes elegir el tamaño
del bloque según vayas a tener mas ficheros pequeños, o mas
ficheros grandes.
Sistema de ficheros linux (II)
El ext2 tiene un tamaño de i-nodo fijo
entre 1 y 4K, independientemente del tamaño de la partición. El
tamaño del i-nodo se selecciona al crear el sistema de archivos y es
seleccionable por el usuario.
El ext2 tiene una unidad similar al
cluster, llamada bloque, y que es, por lo general de 1K,
especificable por el usuario e independiente del tamaño de la
partición, lo cual asegura un buen aprovechamiento del espacio libre
con archivos pequeños.
El ext2 no
usa una FAT, sino una tabla de i-nodos distribuidos en un número
determinable de grupos a través de la superficie, lo cual permite
balancear la distribución de los bloques de archivos en la
superficie a través de dichos grupos para asegurar la mínima
fragmentación.
El ext2 tiene un límite máximo de 4GB
de archivo, pero no limita el tamaño máximo de la partición a 4GB,
como es el caso de la FAT.
El ext2 tiene soporte para detección
de un sistema de archivos desmontado incorrectamente cuando el
sistema se apaga de forma errónea, y capacidad para autorecuperarlo
en caso de fallo accidental.
El ext2
mantiene información de la última vez que se montó y se accedió
al volumen (sistema de archivos), así como del número de veces que
se ha montado dicho volumen desde la última comprobación
automática, así como la fecha en la que se comprobó su integridad
por última vez.
El ext2 permite asignar un porcentaje
del disco duro que se reserva para el uso de usuarios con un "uid"
y "gid" específicos.
El ext2 es un
sistema de archivos mucho más avanzado que el MS-DOS, con soporte de
corrección y detección de errores, compresión de archivos (todavía
por implementar), mayor tolerancia a la fragmentación de archivos y
con unos tiempos de respuesta muy superiores, aunque a un coste
superior de utilización de memoria.
¿Qué es la Swap?
La
swap es un espacio reservado en tu disco duro para poder usarse como
una extensión de memoria virtual de tu sistema. Es una técnica
utilizada desde hace tiempo para hacer creer a los programas que
existe mas memoria RAM de la que en realidad existe. Es el propio
sistema operativo el que se encarga de pasar datos a la swap cuando
necesita mas espacio libre en la RAM y viceversa.
En Linux, la
memoria total disponible por el sistema estará formada por la
cantidad de memoria RAM instalada + la swap disponible. El acceso a
la swap (disco duro) es mas lento que el acceso a la memoria RAM, por
lo que si nuestro ordenador esta muy cargado de trabajo y hace un uso
intensivo de la swap, la velocidad del sistema disminuirá. Un uso
muy intensivo y continuado de la swap es un indicativo de que
necesitamos mas memoria en nuestro sistema para que funcione
desahogado con el uso que le estamos dando.
En linux generalmente se usa como
mínimo una partición dedicada a swap (aunque también se puede
tener un fichero swap).
¿Cuanta Swap
necesito?
Esta es otra pregunta que es difícil
de contestar: Todo dependerá del uso que se le vaya a dar al sistema
y del espacio libre que tengamos.
Si vas a utilizar muchos programas a la
vez y tienes poca memoria RAM, necesitaras mas swap, si tienes mucha
RAM, no necesitaras tanta swap. Hay que recordar que un uso no
intensivo de la swap es normal y no afectara mucho a la velocidad del
sistema, pero como hemos dicho antes, un uso muy intensivo y
continuado es un indicativo de que necesitamos mas memoria RAM.
No existe una
formula mágica para saber cuanto espacio deberíamos reservar para
swap. Hay que recordar que la memoria total disponible en Linux es
RAM + Swap. Como datos orientativos podríamos decir que como mínimo,
esta combinación debería ser de 32MB para sistemas que se utilicen
en modo texto y de 64MB en adelante para sistemas que se utilicen en
modo gráfico.
Aquí tienes una serie de consejos
sobre la swap:
Es
recomendable el tener siempre algo de swap configurada, incluso en
sistemas con mucha memoria.
En
linux no se puede tener mas de 128MB en una partición swap, si
necesitas mas de 128MB de swap, puedes tener mas de una partición
dedicada a swap, por ejemplo, dos de 128MB
Si
tienes mas de un disco, instala la swap en el que trabaje mas
rápido.
Si tienes mas de un disco que se
puedan acceder simultáneamente (por ej. dos SCSI, o dos IDE en
diferentes canales IDE), se puede ganar algo de velocidad teniendo
una particion swap en cada uno de estos discos.
Para un uso privado "normal-alto"
del sistema, aquí tienes unos ejemplos orientativos de la cantidad
de swap recomendable:
16MB
RAM + 64MB Swap
32MB
RAM + 96MB Swap
64MB
RAM + 64MB Swap
128MB
RAM + 128MB Swap
256MB RAM + 128MB Swap
Como dato
anecdótico, decir que existen servidores, en donde la cantidad de
swap llega a ser de 256MB y hasta 512MB aunque yo tengo ordenadores
con 16MB de RAM y 16MB de Swap como servidores de impresión que
funcionan sin ningún problema.
En fin, cada uno debe de saber el uso
que le va a dar a su sistema y analizar la cantidad de memoria
necesaria, aunque si tienes espacio de sobra en el disco, mas vale
tener mas Swap disponible que la necesaria, por lo que pueda ocurrir
en un futuro, como dice el dicho, mas vale que sobre que no que
falte.
Manejo de memoria
¿Qué es una
partición? ¿Cómo creo una partición?
Particionar el disco duro es una manera
de dividir el disco físico en varios discos lógicos. O lo que es lo
mismo, al particionar un disco, dividimos el disco en varias
particiones independientes unas de otras, creando la ilusión de que
tenemos diferentes discos, cuando en realidad lo que tenemos es un
solo disco físico dividido en partes. Una partición es una de estas
partes (divisiones) del disco.
Existen dos clases de particiones:
primarias y extendidas. En un disco solo podrás tener como máximo 4
particiones primaria y 1 extendida. En la partición extendida se
podrán definir todas (bueno también existe un limite, pero es alto)
las unidades lógicas que queramos. Con este sistema podemos tener
una gran cantidad de particiones en nuestro disco.
Cualquier disco que tengamos en nuestro
ordenador tiene al menos una partición primaria, que en la mayoría
de los casos tiene un tamaño equivalente al total del disco.
Unos ejemplos aclararan las cosas:
Un
disco de 1Gb con una sola partición, tendrá una partición
primaria de 1Gb (total del disco).
Ese mismo disco podría tener 4 particiones primarias
de 0.25Gb cada una, dando la ilusión de que tenemos 4 discos duros
de 0.25Gb en vez de un solo disco de 1Gb.
Otra combinación posible podría
ser 4 particiones primarias de 0.10Gb y 1 extendida con 6 unidades
lógicas de 0.10Gb, en este caso parecería que tenemos 10 discos
duros de 0.10Gb cada uno.
Las combinaciones son múltiples y
variadas y dependerán de nuestros gustos y de lo que necesitemos.
Casi todos los sistemas operativos
traen un programa con el que podemos crear, modificar, borrar las
particiones de nuestro disco. En Ms-Dos/Windows de llama FDISK, este
programa solo puede trabajar con particiones de Ms-Dos/Windows. En
Linux también se llama FDISK (/sbin/fdisk), pero es un programa mas
potente, capaz de trabajar y crear particiones tanto para Linux como
otros sistemas operativos. Si vas a trabajar con Linux, es
recomendable el uso del FDISK que viene con tu distribución, para
evitar problemas.
Al contrario que Ms-Dos, Windows, OS/2,
las diferentes particiones en linux no se denominan C:, D:, E:, ....,
etc, existe una denominación propia:
Si los discos son IDE:
/dev/hda:
Disco duro IDE como master en el canal IDE 1.
/dev/hda1:
Partición primaria 1 en /dev/hda
/dev/hda2:
Partición primaria 2 en /dev/hda
/dev/hda3:
Partición primaria 3 en /dev/hda
/dev/hda4:
Partición primaria 4 en /dev/hda
/dev/hda5:
Partición extendida 1 en /dev/hda
/dev/hda6:
Partición extendida 2 en /dev/hda
.....
.....
/dev/hda16:
Partición extendida 16 en /dev/hda
/dev/hdb:
Disco duro IDE como esclavo en el canal IDE 1.
/dev/hdb1:
Partición primaria 1 en /dev/hdb
........
........
/dev/hdc:
Disco duro IDE como master en el canal IDE 2.
/dev/hdc1:
Partición primaria 1 en /dev/hdc
........
........
/dev/hdd:
Disco duro IDE como esclavo en el canal IDE 2.
/dev/hdd1:
Partición primaria 1 en /dev/hdd
........
........
Si los discos son SCSI:
/dev/sda:
Disco duro SCSI nr.1.
/dev/sda1:
Partición primaria 1 en /dev/sda
........
........
/dev/sdb:
Disco duro SCSI nr.2.
/dev/sdb1:
Partición primaria 1 en /dev/sdb
........
........
IMPORTANTE:
Es muy importante saber lo que se esta haciendo cuando trabajas con
programas que modifican la tabla de particiones de un disco. Al
cambiar la tabla de particiones de vuestro disco, se pierden los
datos contenidos en las particiones afectadas. Realizar copias de
seguridad de los datos que quieras mantener antes de usar FDISK.
Particiones
de disco
Con el fin de instalar Linux, debes
tener espacio disponible para el. Este espacio de disco necesita
estar separado del espacio de disco usado por otros sistemas
operativos que puedas tener instalados en tu ordenador, tal que
Windows, OS/2, o incluso una versión diferente de Linux.
Un disco puede dividirse en diferentes
particiones. Se
puede acceder cada partición como si fuera un disco separado. Además
cada partición tiene un tipo
que se usa para indicar como esta almacenada la información en la
partición. Por ejemplo, hay distintos tipos de particiones usados
por DOS, OS/2, y Linux.
Aun si vas a instalar Linux en su
propio disco duro, o en un ordenador que no contiene ningún otro
sistema operativo, seguirás necesitando crear particiones para que
las use Linux. En este caso es muy sencillo, ya que no hay otras
particiones en el disco duro de las que preocuparse.
Por otra parte, puede querer instalar
Linux en un disco que ya contiene software o datos de un sistema
operativo diferente. Las cosas pueden ser algo mas delicadas en esta
situación, ya que un error puede destruir tus particiones actuales,
por no mencionar los datos que contengan.
Durante el
proceso de instalación, tendrás la oportunidad de crear particiones
para Linux. Llegado este punto, tu mayor preocupación será estar
seguro de tener suficiente espacio disponible para las particiones
Linux. Déjame repasar las diferentes formas de liberar espacio para
las particiones Linux.
Estrategias
para cambiar particiones
Hay tres posibles escenarios a los que
puedes hacer frente cuando intentas cambiar las particiones de tu
disco duro:
Hay
espacio libre disponible y no particionado.
Hay una
partición no usado disponible.
Hay espacio libre disponible en
una partición usada actualmente.
Veamos cada escenario en orden.
Usando espacio libre no particionado
Todo el espacio no forma parte de
ninguna partición definida.
En este caso, puedes crear simplemente
las particiones necesarias a partir del espacio libre.
Usando una partición no usada
El año pasado reemplazaste tu pequeño
disco duro de 105MB en tu sistema Windows por un mounstro de 1.2GB.
Lo particionaste en dos partes iguales, pensando en que usarías el
``dispositivo'' C: (en realidad la primera partición del
dispositivo) para Windows, y el ``dispositivo'' D: (en realidad ls
segunda partición del dispositivo) para tu colección de programa de
libre distribución que copiaste de Internet. Bien, has estado tan
acostumbrado a usar C: que nunca has puesto nada importante en D:.
Si te encuentras en esta situación,
puedes usar el espacio asignado a la partición en desuso. Tendrás
que borra la partición, y crear las apropiadas particiones Linux en
su lugar.
Usando espacio libre de una partición
activa
Esta es la
situación mas común. Es además, desafortunadamente, la mas difícil
de tratar. El principal problema es que tenemos el espacio
suficiente, pero esta actualmente asignada a una partición en uso.
Si compras un ordenador con software preinstalado, el disco duro
tendrá seguramente una gran partición conteniendo el sistema
operativo y los datos.
Además de añadir un nuevo disco duro
en tu sistema, tienes otras dos opciones:
Cambio de particiones destructivo
-- Básicamente, borras la única partición grande, y creas varias
mas pequeñas. Como puedes imaginar, cualquier dato que tengas en
esta partición será destruido. Esto quiere decir que es necesario
hacer una copia de seguridad completa. Por tu propio interés, haz
dos copias de seguridad, usa la verificación (si esta disponible en
tu software de backup), e intenta leer los datos de la copia de
seguridad antes de
borrar la partición. Ten también en cuenta que si hay un sistema
operativo de algún tipo instalado en la partición, será necesario
instalarlo de nuevo también.
Después de crear una partición mas
pequeña para tu software actual, puedes instalar de nuevo cualquier
software, restaurar tus datos, y continuar con la instalación de
Linux. Cambio de particiones no destructivo -- En este caso,
ejecutas un programa que hace lo que parece imposible; hace una
partición grande mas pequeña sin perder ninguno de los ficheros
almacenados en la partición. Mucha gente ha encontrado este método
seguro y libre de problemas; sin embargo, recomendamos que hagas una
copia de seguridad de la partición a la que vayamos a cambiar el
tamaño, por si acaso.
Hardware requerido
El
Linux funciona correctamente en un 386 SX con 4 Mb de memoria. Pero
se deberá tener en cuenta que aquellas aplicaciones con fuerte
requerimiento de memoria y carga de la CPU (por ejemplo, las X
Windows) irán sumamente lentas.
Una
configuración mucho más 'usable' sería la siguiente: 486 DX 33 MHz
o superior, con 8 Mb de memoria RAM y con tarjeta de video VGA o
superior.
Unidad de CD-ROM es altamente
recomendable. Casi mejor habría que decir que imprescindible, dado
que las distribuciones vienen en ese formato. En la actualidad, la
mayoría de ellas están soportadas por el Linux. Asimismo tiene
soporte para módem y tarjeta de sonido.
De
todas formas, los propietarios de máquinas inferiores a la descrita
(¿todavía queda alguno? };-) que no se desanimen. Simplemente
deberán tener más paciencia. Y es mi obligación puntualizar que
muchas veces se obtienen mejores resultados con más memoria que con
más potencia de CPU.
Debo puntualizar que en 286 no
funcionará el Linux. El kernel está hecho para 386. Hay, sin
embargo, un grupo de gente que está trabajando en una versión de
Linux para procesadores 8086, pero aún está en fase de proyecto.
En cuanto al espacio en disco duro,
dependerá en gran medida de lo que se pretenda hacer desde Linux.
Según el 'Linux installation and getting started', con 10 Mb de
partición se puede hacer una instalación mínima pero usable
(personalmente me parece bastante optimista). Yo creo que alrededor
de 100 Mb resulta espacio suficiente para un Linux completo,
incluidas las X Windows. A partir de ahí, lo que cada uno
considere...
Al hacer cálculos del espacio en disco
duro necesario, deberemos tener en cuenta que se necesita hacer una
partición de swap. El tamaño de la misma dependerá de la cantidad
de memoria RAM disponible: a más memoria, menos swap necesitaremos.
¿Dónde instalo
Linux?
Linux se puede instalar en cualquier
disco que tengas en tu sistema y en cualquier partición del disco
duro (Primaria o extendida).
No podrás tener Linux en una partición
compartida con otro sistema operativo, Linux necesita su propia
particion/es para funcionar.
¿Cuantas particiones
necesito para Linux?
La respuesta rápida y fácil es:
recomendable al menos dos, una para el sistema/datos y otra para
Swap. Usualmente se suelen tener tres, una para el sistema/programas
(/), otra para los datos (/home) y otra para swap.
La respuesta larga y no tan fácil es
mas complicada de explicar: Todo dependerá muchisimo del uso que se
le vaya a dar al sistema.
Para sistemas que se utilicen de forma
particular y por uno o pocos usuarios bastara con las dos/tres
particiones antes mencionadas, esto evitara los problemas de saber
que cantidad de espacio necesitan las diferentes particiones y el
quedarnos sin espacio en alguna particion vital, mientras que nos
sobra en otras.
Para sistemas
servidores, con gran cantidad de servicios y usuarios es muy
recomendable tener varias particiones/discos. Existe un documento
(HOWTO: Multi Disk System Tuning) muy bueno y quizás complicado para
el principiante que explica cuantas particiones y discos y que tamaño
deberían tener en función del uso que se le vaya a dar al sistema,
o en cualquier servidor con documentación Howto.
¿Porque necesito
diferentes particiones?
El particionar el disco, es simplemente
una manera de organizar tu disco duro. Podrás organizarlo con una
sola partición o en varias. Es el usuario el que deberá decidir
cuantas particiones tendrá su disco, y el tamaño de las mismas, hay
que recordar, que al menos hay que tener una partición primaria.
Desventajas de tener vuestro disco
dividido en diferentes particiones.
Ventajas en tener vuestro disco
particionado en varias particiones:
Si
tienes un error/problema en una de ellas, las demás no se verán
afectadas.
Poder
tener diferentes sistemas operativos en vuestra maquina, totalmente
independientes unos de otros.
Poder
tener vuestros archivos de datos en particiones totalmente
independientes.
Poder borrar/cambiar el contenido
de una partición, sin que esto afecte a las demás.
ANEXO
CONCLUSIÓN
Una
de las más importantes es que Linux es una excelente elección para
trabajar con UNIX a nivel personal. Linux permite desarrollar y
probar el software UNIX en su PC, incluyendo aplicaciones de bases de
datos y X Windows. Con Linux, se puede correr un sistema UNIX y
adaptarlo a las necesidades. La instalación y uso de Linux es
también una excelente manera de aprender UNIX si no se tiene acceso
a otras máquinas UNIX.
Linux no es
solo para los usuarios personales de UNIX. Es robusto y
suficientemente completo para manejar grandes tareas, así como
necesidades de cómputo distribuidas. Muchos negocios especialmente
los pequeños se están cambiando a Linux en lugar de otros entornos
de estación de trabajo basados en UNIX. Grandes vendedores de
software comercial se están dando cuenta de las oportunidades que
puede brindar un sistema operativo gratuito.
Linux es, propiamente, el núcleo de un
sistema operativo. Es decir, el conjunto de programas que controla
los aspectos más básicos del funcionamiento de un ordenador. Su
desarrollo lo inició en 1991 Linus Tovalds, entonces estudiante en
la Universidad de Helsinki, en Finlandia, y se completó con miles de
aportaciones a través de Internet.