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.
- Los subdirectorios no se separan con el
carácter '', como en DOS, sino con el carácter
'/'. 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 particion 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.
- Ninguna
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.
BIBLIOGRAFÍA
- http://ns.intertux.com.mx/linux.html
- http://www.marqueze.net/linux/explica.htm
- http://www.fut.es/~sblanco/linux.html
- http://www.internet.ve/asic/qlinux.html
- http://www.nyx.net/~sgjoen/disk.html
- http://linux-es.uio.no/docs/HOWTO/mini/Partition.
- http://metalab.unc.edu/LDP/
- ftp://ftp.kernel.org/pub/linux/kernel/
- ftp://ftp.cs.helsinki.fi/pub/Software/Linux/Kernel/
- ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/
- ftp://sunsite.unc.edu/pub/Linux/kernel/
- ftp://tsx-11.mit.edu/pub/linux/sources/system/
Autor: