Historia y filosofía de desarrollo
El sistema operativo Linux nació en el año 1991 a partir de una idea original del finlandés Linus Benedict Torvalds1.1, un estudiante de la Universidad de Helsinki que por aquellos días contaba con tan solo 21 años. Linus necesitaba un sistema operativo que aprovechara bien las potencialidades de su PC con procesador Intel 386. Primeramente pensó en Unix, el sistema en esa fecha de mayor distribución y utilización en el mundo empresarial, pero era imposible con sus escasos recursos conseguir una versión del mismo pues los precios para adquirirlo eran muy elevados para su alcance. La segunda opción era Minix, original de Andrew Tanenbaum1.2, todo un experto en Sistemas Operativos que creó a Minix basado en Unix y con fines fundamentalmente académicos. Pero Minix no satisfacía del todo las necesidades de Linus y por ello decidió finalmente hacer su propio sistema operativo al cual bautizaría con el nombre de Linux haciendo alusión a su nombre y tomando la ``x'' final de Unix.
La primera versión del kernel1.3 de Linux, identificada como 0.01, fue programada completamente en ensamblador. Esta carecía de mucha utilidad pues sólo contenía los códigos básicos de un kernel rudimentario que dependía de Minix para su funcionamiento. Dos meses después, el día 5 de octubre de 1991, Linus hizo el primer anuncio oficial de su sistema operativo. A esta segunda versión la identificó como 0.02. Ya ofrecía la posibilidad de ejecutar gcc (el compilador de C de GNU (proyecto para la protección del software libre de la Free Software Foundation1.4) además de bash (Bourne Again Shell de GNU también). El anuncio oficial de esta versión lo hizo en la lista de noticias comp.os.minix, donde posteriormante se sucitaron los primeros debates acerca de Linux. He aquí un fragmento de lo que escribió:
``Do you pine for the nice days of Minix-1.1, when men were men and wrote their own device drivers? Are you without a nice project and just dying to cut your teeth on a OS you can try to modify for your needs? Are you finding it frustrating when everything works on Minix? No more all-nighters to get a nifty program working? Then this post might be just for you.
As I mentioned a month ago, I'm working on a free version of a Minix-lookalike for AT-386 computers. It has finally reached the stage where it's even usable (though may not be depending on what you want), and I am willing to put out the sources for wider distribution. It is just version 0.02...but I've successfully run bash, gcc, gnu-make, gnu-sed, compress, etc. under it.''
Después de esta versión, Linus pasó a la 0.03 y luego a la 0.10 dando un salto cualitativo en cuanto al nivel de programación pues comenzó a emplear el lenguaje C dejando atrás al primitivo ensamblador. En este punto se unieron al proyecto más colaboradores que trabajaban tanto en la programación y corrección de errores como en la detección de los mismos. En marzo de 1992, luego de numerosas revisiones, el kernel de Linux llegó a su versión 0.95, y en diciembre de 1993 ya se contaba con la 0.99.pl141.5, aproximándose cada vez más a la 1.0, que es el número que se le da generalmente a la primera versión libre de errores de un software. La versión 1.0 finalmente se alcanzó el 13 de marzo de 1994. Para ver toda la historia de las versiones del kernel de Linux se puede consultar la dirección: Debido al contenido fuera de tema del link aqui expuesto, se tomo la iniciativa de eliminarlo. Disculpen las molestias ocacionadas. .
Actualmente existe un equipo de alrededor de 100 personas que se encargan de mejorar y corregir el kernel de Linux. Un grupo muy reducido de ellas lidereadas por Linus Torvalds y que son conocidos como ``key players'', se ocupan de decidir que adaptación o cambio se le hace a cada nuevo kernel. Las distintas versiones del kernel son identificadas utilizando tres números: el primero indica el número principal de la versión, el segundo indica, en caso de que sea impar, que estamos en presencia de un kernel en fase de prueba (no estable aún), por el contrario un número par representa una versión estabilizada. El tercer número indica los parches sucesivos que se le aplican a cada versión sea estable o no. También se utiliza un cuarto número para indicar el release de acuerdo a la distribución (Ver sección ). Un kernel estable puede ser el 2.2.16-22 o el 2.0.3-6. Actualmente el kernel de Linux se encuentra en su versión 2.4.
Un aspecto muy importante que ha garantizado el acelerado avance de Linux es la forma en que este se concibió en un principio y la que se asumió posteriormente para su desarrollo. Durante la concepción de Linux, Torvalds manifestó siempre su deseo de que este fuera un sistema operativo libre en cuanto a su distribución y mantenimiento y que nadie pudiera obtener dinero por su venta. Posteriormente las versiones oficiales del kernel de Linux han sido distribuidas bajo la licencia pública general GPL (General Plublic License)1.6 de GNU que es menos restrictiva. Esta licencia establece que el sistema se distribuye de forma libre ya que todo aquel que lo posea tendrá la posibilidad de ver el código fuente, modificarlo y redistribuirlo, teniendo como única restricción el mantenimiento de la licencia. La redistribuición podrá cobrarse si se desea pero no se podrá restringir los derechos que da la licencia GPL al comprador. De esta forma se garantiza el desarrollo y perfeccionamiento contínuo del sistema, así como su disponibilidad para cualquier adaptación o mejora por parte de los que lo usen. Este es uno de los aspectos más atractivos de Linux y el que lo ha convertido en uno de los sistemas de más rápido desarrollo en la actualidad. Aunque está basado en Unix, todo su código fuente ha sido reescrito desde cero con una marcada eficiencia y robustez.
------------------------------------------------------------------------------------------
Distribuciones
Linux es un nombre genérico que se le da a todos los sistemas operativos que empleen un kernel Linux. Pero de nada nos serviría un kernel si no contamos con un conjunto de aplicaciones que permitan interactuar con el sistema más amigablemente. Las aplicaciones para Linux se han desarrollado a la par del kernel por numerosos programadores interrelacionados a través de Internet. De acuerdo a esto se generan varias distribuciones de Linux, cada una con sus características particulares.
Básicamente una distribución no es más que la agrupación de un kernel, varias aplicaciones, algunas utilidades y un programa de instalación. Existen decenas de distribuciones de Linux1.7. Algunas son conocidas como mayoritarias pues poseen un desarrollo sostenido e independiente, otras son basadas en las anteriores tomando de estas una parte de sus características agradables y modificando otras. También existen micro-distribuciones que pueden almacenarse en uno o dos disquetes. Entre las distribuciones más conocidas y utilizadas pueden citarse a:
Red Hat Linux1.8
Mandrake Linux1.9
Caldera OpenLinux1.10
Debian/GNU Linux1.11
SuSE Linux1.12
Slackware1.13
Todas ellas ofrecen sus ventajas y desventajas particulares. Para más información se puede consultar los siguientes enlaces:
http://www.linux.org/dist/
http://www.linux.about.com/compute/l...istributions5/
En este entrenamiento utilizaremos la distribución Red Hat en su versión 7.1 (conocida como Seawolf). Esta es una de las más desarrolladas y está muy bien soportada por la compañía comercial del mismo nombre. Red Hat se caracteriza por ser una distribución fácil en su instalación, configuración y mantenimiento. Se perfecciona contínuamente. La mayoría de las aplicaciones Linux están portadas para Red Hat. Es la distibución de Linux de más popularidad en América. Posee como principal inconveniente, en mi criterio, la poca flexibilidad de su programa de instalación nombrado Anaconda, aunque este ha mejorado en comparación con su versiones anteriores. A continuación se listan las últimas versiones de la distribución Red Hat Linux y la fecha aproximada en que fueron liberadas:
Red Hat Linux 7.3 (Valhalla) - Mayo 2002
Red Hat Linux 7.2 (Enigma) - Septiembre 2001
Red Hat Linux 7.1 (Seawolf) - Abril 2001
Red Hat Linux 7.0 (Guinness) - Septiembre 2000
Red Hat Linux 6.2 (Zoot) - Febrero 2000
Red Hat Linux 6.1 (Cartman) - Octubre 1999
Red Hat Linux 6.0 (Hedwig) - Abril 1999
Red Hat Linux 5.2 (Apollo) - Noviembre 1998
Red Hat Linux 5.1 (Manhattan) - Mayo 1998
Red Hat Linux 5.0 (Hurricane) - Noviembre 1997
Red Hat Linux 4.2 (Biltmore) - Mayo 1997
Red Hat Linux 4.1 (Vanderbilt) - Febrero 1997
Red Hat Linux 4.0 (Colgate) - Noviembre 1996
--------------------------------------------------------------------------------------------
Características generales de Linux
De forma general el sistema operativo Linux presenta las siguientes características:
Es un sistema operativo multitarea y multiusuario, similar a Unix en muchos aspectos pero completamente independiente de este.
Surgió como respuesta a las necesidades personales de Linus Torvalds quien lo puso a disposición de todos para su utilización y perfeccionamiento. De ahí que su desarrollo actual se deba a la cooperación de miles de programadores en Internet que se han dedicado tanto al mejoramiento del kernel como al desarrollo y mantenimiento de numerosas aplicaciones conformando decenas de distribuciones.
Se distribuye bajo la licencia GPL de GNU, lo cual le ha permitido desarrollarse y distribuirse con rapidez, además de ser un sistema fácilmente ajustable a las necesidades personales de sus usuarios o administradores.
Está portado para numerosas plataformas computacionales. Ejemplos: Intel, Macintosh, Alpha y SPARC.
Se caracteriza por tener un código muy eficiente que lo convierte en un sistema robusto y estable con un futuro prometedor.
Posee soporte para gran cantidad de hardware.
Linux está especialmente orientado al trabajo en redes pues existen numerosas aplicaciones, nativas o portadas para él, que implementan casi todos los protocolos utilizados para la comunicación, tanto el lado cliente como el servidor. Ejemplo de ello son: FTP, HTTP, TCP/IP, PPP, UUCP, SMTP, SNMP, gopher, wais, news, IPX, SMB/CIFS, POP, IMAP, etc. Gracias a esto una máquina Linux puede proveer servicios de correo electrónico, resolución de nombres, news, Web, acceso remoto, compartir recursos a través de la red, etc.
Las versiones actuales del kernel soportan numerosos sistemas de ficheros como FAT16/32, NTFS (sólo lectura) e iso9660 (para discos compactos). Posee un file system propio denominado ext2 y se desarrollan ext3 y reiserfs con mejoras considerables.
Ofrece numerosas posibilidades para la programación en diversos lenguajes, tanto interpretados como compilados. Ejemplo de ello son: C, C++, Java, Pascal, SmallTalk, FORTRAN, LISP, Perl, Tcl/Tk y Python. También en Linux se dispone de varios shells como bash, csh, ksh y otros. Todos permiten, además de una interacción más o menos amigable con el sistema, la programación de shells scripts.
Sobre Linux se implementan diversos ambientes conocidos como interfaces X que son interfaces gráficas cuya funcionalidad y belleza pueden compararse con las de cualquier sistema comercial. Existe una implementación completa del servidor X Window de Unix portada para Linux conocida como XFree86. Entre los ambientes gráficos se destacan KDE, GNOME y WindowMaker. El sistema operativo en sí es completamente independiente de estas aplicaciones para funcionar correctamente.
Las máquinas Linux se pueden interconectar y relacionar fácilmente con otras con sistemas operativos diferentes como OS/2, Apple Machintosh, Windows 9x y NT.
En una misma computadora se puede instalar Linux junto a otros sistemas operativos y ejecutarlos luego, indistintamente.
No requiere necesariamente de grandes recursos de hardware. Sin interfaz gráfica puede ejecutarse correctamente en máquinas con 16 MB de RAM o menos contando además con espacio Swap1.14 en el disco duro. Los requerimientos de espacio en disco pueden hacerse despreciables pues se han logrado micro-distribuciones que caben en un disquete1.15.
Existen actualmente herramientas que permiten la ejecución de aplicaciones MS-DOS (DOSEMU1.16) y Windows sobre Linux (WINE1.17). También existe una poderosa herramienta conocida como VMWARE1.18 que provee la facilidad de tener varias máquinas virtuales con distintos sistemas operativos ejecutándose a la vez en una misma computadora. Vale aclarar que este último es un producto comercial, por lo que para utilizarlo por tiempo indefinido hay que pagar una licencia.
-------------------------------------------------------------------------------------------
Instalación
Para instalar Linux en una máquina es conveniente conocer de antemano algunas características de su hardware, aunque muchas veces estos aspectos son detectados automáticamente por los programas de instalación. De todos modos siempre es útil tener a mano las características de los siguientes dispositivos:
Tarjeta de red (si se va a trabajar en red).
Tarjeta de vídeo (si se va a instalar alguna interfaz gráfica X Window).
Monitor (si se va a instalar alguna interfaz gráfica X Window). Sólo es necesario conocer la Frecuencia Vertical o de Refrescamiento (FV) y la Frecuencia Horizontal o de Sincronización (FH).
Mouse (es conveniente tanto para las interfaces gráficas como para la texto).
Discos duros disponibles y espacio libre en ellos.
Si existen o no dispositivos SCSI.
Todos estos aspectos se pueden reconfigurar una vez instalado el sistema, además de que en dependencia de cuan amigable sea el programa de instalación se brindarán sugerencias u opciones posibles a tomar. Los programas de instalación y de configuración de hardware de las distribuciones actuales casi siempre detectan el tipo de los dispositivos presentes en la computadora, pero si no es así no hay porque atormentarse pues las soluciones aparecen siempre y rápidamente. Muchas veces cuando se hace el release de alguna nueva versión de cualquier distribución, enseguida aparecen las actualizaciones (updates) de algunos programas corrigiendo errores detectados en las versiones originales. Este es el caso de la distribución que utilizaremos.
En cuanto al software, para instalar una máquina Linux, no se necesita conocer de antemano que servicios esta va a brindar en el futuro, pues cualquier programa se puede instalar, desinstalar o configurar con posterioridad. No obstante la posibilidad de hacerlo desde la instalación permite una mayor rapidez en la configuración de la máquina y su puesta a punto.
---------------------------------------------------------------------------------------------
Particionado de discos
Antes de adentrarse propiamente en los detalles de la instalación de Linux es necesario abordar el tema relacionado con el particionado de los discos duros, ya que en este sistema, es muy útil y casi siempre imprescindible dominar en que consiste y para que sirve este proceso. También es importante conocer acerca del particionado cuando se desea tener, en el mismo disco, además de Linux, otros sistmas operativos.
El particionado de un disco duro (u otro dispositivo similar) consiste en dividir dicho disco en varias partes o porciones, cada una independiente de la otra en su contenido y manipulación por parte del sistema operativo. De esta forma, cada partición puede poseer un sistema de ficheros propio totalmente limitado al espacio que le corresponde, sin afectar el contenido y/o formato del resto de las particiones con las que convive en el mismo disco.
Podemos afirmar que el particionado permite, además de una mayor organización, otros dos aspectos muy importantes:
Separar la información de acuerdo a las distintas fuentes generadoras en el sistema. De esta forma si es necesario afectar la información en una de las particiones (``formatear'') no se perjudicaría el resto de las particiones ni la información contenida en ellas. Por ejemplo se podrían separar los datos de los usuarios en una partición, el sistema operativo en otra, y las aplicaciones de terceros instalarlas1.19 en una tercera partición.
Restringir el espacio disponible para una acción determinada en el sistema. Por ejemplo: crear una partición para guardar las trazas del sistema operativo permitirá que dichas trazas al aumentar no llenen el disco duro correspondiente.
El inconveniente mayor del particionado es que en muchas ocasiones se puede derrochar el espacio en una partición y ser necesario en otra. Para resolver este problema sin afectar los datos se pueden utilizar herramientas muy potentes, no obstante siempre existe el riesgo de perder información al realizar los ajustes.
Como ya se ha afirmado en Linux es necesario particionar el disco aunque sea de forma muy básica. Existen varias sugerencias de como realizar el proceso de acuerdo a diversos criterios tales como: los servicios que va a brindar la máquina Linux, la cantidad de usuarios que van a utilizarla y para qué, la memoria RAM de que se dispone, y por supuesto del espacio libre en disco (sin particionar) que se pueda utilizar.
En Linux se pueden crear particiones conocidas como Swap, que se utilizan para facilitar la implementación del mecanismo de memoria virtual del sistema operativo. No obstante también se pueden emplear uno o varios ficheros para dicha función, como hacen los sistemas operativos de Microsoft.
En los sistemas operativos de Microsoft cualquier dispositivo que posea algún sistema de ficheros soportado, se asocia con una letra del alfabeto, por ejemplo para la primera partición se emplea la denominación ``C'', si existieran otras podrían llamarse ``D'', ``E'', etc. Utilizando esta forma se establece de forma lógica un sistema de ficheros de múltiples raíces con ciertas limitantes para los usuarios. En el caso de Linux el sistema de ficheros desde el punto de vista lógico, consiste en una estructura jerárquica pero de una sola raíz que se representa mediante el caracter /. Cualquier partición que se cree se asociará a un directorio descendiente de dicha raíz. La acción de asociar una partición (u otro dispositivo) a un determinado directorio se conoce como ``montar''. En Linux existen además amplias posibilidades de configurar dónde, cómo y quienes pueden montar y desmontar cada dispositivo en el sistema.
Una forma básica de particionar el disco al instalar Linux consta de las siguientes particiones:
Una partición para Swap: se recomienda que su tamaño sea mayor que la memoria RAM disponible en la máquina, no excediendo el doble de esta, salvo en algunos casos donde puede recomendarse el triplo de la RAM.
Una partición raíz: es donde estará todo el sistema (kernel, aplicaciones, datos, etc.) si no se crean particiones más específicas. Se monta en el directorio raíz /. Su tamaño dependerá de todos los aspectos antes mencionados.
También se pueden crear particiones para las siguientes funcionalidades:
Guardar los datos de los usuarios del sistema. Se monta en el directorio /home
Guardar las trazas del sistema. Se monta en /var/log
Guardar las aplicaciones (fuentes, librerías, binarios, documentación). Se monta en /usr
Guardar los ficheros temporales. Se monta en /tmp
Guardar los buzones de los usuarios si se trata de una máquina servidora de correo electrónico. Se monta en /var/spool/mail
Otros directorios comunes en el sistema de ficheros de Linux son:
/etc - almacena numerosos ficheros de configuración del sistema y de los servicios que este puede brindar, también contiene algunos programas scripts para manipular los servicios. No puede constituir una partición.
/bin - contiene los ejecutables de numerosos comandos básicos del sistema. Existen además /sbin, /usr/bin y /usr/sbin que también contienen scripts y ejecutables. No puede constituir una partición.
/boot - contiene los ficheros de inicio y el kernel del sistema compilado. Puede constituir una partición y en ocasiones es necesario que lo sea.
/var - contiene un conjunto de directorios y ficheros por lo general en constante transformación y con múltiples propósitos. Puede constituir por si mismo una partición, y/o contener directorios que también lo sean como /var/log o /var/spool/mail
/usr/local - se puede emplear para instalar en él las aplicaciones de terceros, o sea, aquellas que están en un formato diferente al que emplea la distribución de Linux para manejar sus programas. Puede constituir una partición.
En Linux, al igual que en Unix, los dispositivos del hardware tiene un tratamiento peculiar pues cada uno se representa a través de un fichero con una sintaxis particular. Estos ficheros son especiales y se crean automáticamente en el directorio /dev una vez instalado el sistema. El sistema los utiliza para copiar y leer en los distintos dispositivos físicos. A estos ficheros se les conoce como dispositivos especiales de caracteres o de bloques.
Ejemplos:
Los discos duros con controlador IDE se identifican como hda, hdb, hdc, ..., hdh. A su vez las particiones en el primer disco se representan por hda1, hda2, hda3, ..., hda16
Los discos SCSI se llaman sda, sdaa, sdab..., sdb, ..., sdz (un total de 128) y las particiones del primer disco, sda1, sda2, sda3, ..., sda15.
El disquete y la cinta magnética para backup (tape backup) pueden ser fd0 y fd1 respectivamente.
Las impresoras conectadas localmente se denominan lp0, lp1 y lp2.
En las computadoras personales actuales con discos IDE existen dos cintas controladoras, cada una con la posibilidad de conectar dos discos, para un total de cuatro discos, incluyendo a la torre de CD-ROM, si esta fuese IDE también. Por tanto en el sistema Linux se identifica al disco master de la primera cinta controladora IDE como hda, al disco esclavo de esa misma cinta como hdb, el master de la segunda cinta IDE es hdc y el esclavo, hdd. El CD-ROM podrá ser cualquiera de los cuatro mencionados en dependencia de como esté conectado a la motherboard. No obstante, en el sistema puede que exista además otro fichero nombrado cdrom en el directorio /dev con el cual se referencia a dicho dispositivo de forma independiente a como esté conectado.
-----------------------------------------------------------------------------------------




</nombre>
</nombre>
</ficheros>