You are on page 1of 19

L i n u x : I n t r o d u c c i n |1

Linux: Introduccin

1. Qu es el software libre ?
El Software Libre (ntense las maysculas) es un concepto que no es nuevo. La idea principal que subyace detrs de estas palabras es la libertad de compartir la informacin. Actualmente, existen varias modalidades de desarrollo y distribucin de software, que son: Software propietario: estos programas y aplicaciones suelen estar desarrollados por empresas que licencian el cdigo fuente del programa y no permiten su redistribucin. Cuando una persona adquiere un sistema propietario, generalmente slo obtiene una versin precompilada de ese cdigo fuente, con permiso para ser usada en n cantidad de computadoras. Si se quiere utilizarlo en un nmero mayor de computadoras se debe pagar por cada licencia un precio fijado por la empresa. Adems, al no obtener el cdigo fuente, el usuario est imposibilitado de modificar el programa o ver cmo funciona internamente. De ms est decir que es ilegal copiar un programa de este tipo.

Shareware: sta es una modalidad de desarrollo y distribucin que tuvo mucho xito a finales de los 80 y en los 90. La idea que hay detrs del shareware es la de probar antes de comprar. Generalmente estos programas no dejan de ser propietarios, pero se distribuye una versin reducida 1 (o con lmite de uso temporal) por los BBS y CDs de revistas para que la gente pueda probarlos. Si le gusta, puede pagar un precio por la versin completa, la cual tampoco incluye el cdigo fuente (generalmente). La versin shareware es de libre distribucin, la versin completa, no. Los desarrolladores de shareware poseen su propia asociacin, la Asociacin de Profesionales del Shareware (www.asp-shareware.org).

Un Bulletin Board System o BBS (Sistema de Tabln de Anuncios) es un software para redes de computadoras que permite a los usuarios conectarse al sistema (a travs de internet o a travs de una lnea telefnica) y utilizando un programa terminal (o telnet si es a travs de internet), realizar funciones tales como descargar software y datos, leer noticias, intercambiar mensajes con otros usuarios, disfrutar de juegos en lnea, leer los boletines, etc.

L n u x : I n t r o d u c c i n |2

Freeware: Se desarroll conjuntamente con el shareware. En este caso encontramos ms ventajas para el usuario final, ya que un programa que es freeware es un programa que est completo y puede ser utilizado y distribuido libremente. El problema es que estos programas generalmente no tienen la calidad de uno propietario y de Software Libre. En los programas freeware tampoco se incluye el cdigo fuente, por lo que stos sufren tambin las limitaciones mencionadas en las otras modalidades. Software Libre: El punto mximo de libertad tanto para el desarrollador como para el usuario lo representa el Software Libre. Para que un programa sea Software Libre debe cumplir con cuatro requisitos bsicos. El primero de ellos es que el programa pueda ser utilizado sin ningn tipo de limitacin. El segundo requisito es que pueda ser distribuido libremente y copiado a cuantas computadoras sea necesario. El tercero es muy sencillo: el programa siempre debe estar acompaado del cdigo fuente (o de una carta al usuario en donde se ofrezca un acceso a l). Este requisito es muy importante, ya que al disponer del cdigo fuente los usuarios pueden hacerle modificaciones y as adecuarlo mejor a sus necesidades. El ltimo punto, en realidad, no es un requisito: un programa que es Software Libre se puede vender. Incluso se puede vender una versin modificada de un programa de Software Libre, siempre y cuando se respeten los nombres de los autores originales y los tres puntos anteriores (no hay ninguna restriccin para hacer algo de dinero con un programa de Software Libre).

Software Propietario Shareware

Software
Freeware

Software Libre

Ahora bien, como sabemos, los programas se rigen por licencias de uso y distribucin. La licencia ms utilizada por el Software Libre es la Licencia Pblica General (GPL), la cual se encarga de proteger los derechos del autor y de los usuarios. Cuando se distribuye un programa de Software Libre bajo la GPL siempre se incluye un archivo con el texto de la licencia. La Licencia Pblica General est desarrollada y soportada por la Fundacin del Software Libre.

L i n u x : I n t r o d u c c i n |3

2. Qu es GNU/Linux?
GNU/Linux es el primer Sistema Operativo basado en UNIX que es 100% Software Libre. Si bien anteriormente haba otros sistemas operativos de libre distribucin (como MINIX), stos no eran totalmente Software Libre, ya que eran regidos por licencias ms restrictivas. GNU/Linux es un proyecto que ya lleva ms de 20 aos en desarrollo, y lo estar por muchos ms, ya que se asienta sobre una base de cientos de programadores de todas partes del mundo. Muchas gente se pregunta si no es posible que el que hace Linux un da se vuelva rebelde y quiera hacer que su sistema sea propietario. La respuesta es, obviamente, negativa. No existe una persona que hace Linux. GNU/Linux es un conjunto de componentes desarrollados por muchas personas que trabajan en muchos proyectos. No es un nico paquete (aunque muchos de ustedes lo hayan instalado como tal). Es prcticamente imposible parar un proyecto de estas magnitudes. Hablando tcnicamente, GNU/Linux es un Sistema Operativo de Software Libre basado en UNIX, que 2 cumple las normas POSIX . Su base es un ncleo monoltico llamado Linux (a secas), desarrollado originalmente por Linus B. Torvalds a principios de la dcadade los noventa. Su estructura general es la tpica de cualquier sistema UNIX (ncleo intrprete de comandos aplicaciones). Cuenta con una 3 interfaz grfica llamada Xfree86 (versin libre del sistema de ventanas Xwindow original del MIT ) y con muchas aplicaciones para realizar las ms diversas tareas, desde procesamiento de textos hasta montaje de servidores de red, pasando por aplicaciones multimedia y juegos.
La FREE SOFTWARE FOUNDATION o FSF (Fundacin del Software Libre) es una fundacin sin fines de lucro que se mantiene con las donaciones que hacen los usuarios y empresas de forma directa. Posee su sitio oficial en Internet (www.gnu.org). All, encontrarn muchsima documentacin acerca del sistema operativo GNU/Linux y todos los proyectos que estn relacionados con l.

3. Historia de GNU/Linux
A principios de la dcada de los 80, un cientfico del rea de inteligencia artificial del Instituto de Tecnologa de Massachussets (MIT3), llamado Richard Stallman (RMS, para los amigos), decidi comenzar a desarrollar un sistema operativo libre, ya que en esa poca la nica opcin que tenan los usuarios de computadoras era adquirir un software propietario. El nombre de este sistema es GNU, acrnimo de las palabras GNU No es Unix!. La idea principal era que el sistema mantuviera un grado de similitud con el ya conocido UNIX sin compartir una sola lnea de cdigo fuente. Idea que, obviamente, fue hecha realidad en algunos aos.

POSIX es el acrnimo de Portable Operating System Interface; la X viene de UNIX como sea de identidad de la API. El trmino fue sugerido por Richard Stallman en respuesta a la demanda de la IEEE, que buscaba un nombre fcil de recordar. Una traduccin aproximada del acrnimo podra ser "Interfaz para Sistemas Operativos migrables basados en UNIX".
3

Massachusetts Institute of Technology.

L n u x : I n t r o d u c c i n |4

Para finales de los 80 el sistema estaba prcticamente completo. Dispona de editores de texto, de intrpretes de comandos, de compiladores, de debuggers, etc. Slo faltaba un componente: el ncleo (kernel). Casualmente, en el otro lado del mundo (Finlandia), un estudiante llamado Linus B. Torvalds desarroll un ncleo compatible con UNIX, sin saber que iba a formar parte del sistema operativo ms revolucionario del mundo de la informtica. As fue como apareci Linux, el ncleo del sistema GNU. Y es as como hoy tenemos un sistema completo a nuestra disposicin, el sistema GNU/Linux. Paralelamente con el desarrollo de este sistema operativo, surgi la Fundacin del Software Libre, la cual fomenta, entre otras cosas, la utilizacin de herramientas de Software Libre en las computadoras de todo el mundo. GNU es uno de los proyectos ms grandes de Software Libre. En l participan miles de personas de todo el mundo colaborando con el desarrollo de aplicaciones para el sistema, documentacin, mantenimiento del servidor web y muchsimo ms. Cuando hablamos de Libertad, en el mundo del Software Libre lo hacemos en el sentido ms filosfico de la palabra. Hablamos de la libertad de tener un programa completo (incluido su cdigo fuente), de la libertad de usarlo, copiarlo, modificarlo, venderlo, de la libertad de compartirlo con los dems. se es el espritu del sistema GNU/Linux.
GNU General Public License (GPL) La Licencia Pblica General de GNU o ms conocida por su nombre en ingls GNU General Public License o simplemente su acrnimo del ingls GNU GPL, es una licencia creada por la Free Software Foundation en 1989 (la primera versin), y est orientada principalmente a proteger la libre distribucin, modificacin y uso de software. Su propsito es declarar que el software cubierto por esta licencia es software libre y protegerlo de intentos de apropiacin que restrinjan esas libertades a los usuarios. La GPL versin 3 fue publicada el da 29 de junio de 2007 y se puede consultar en el Portal de GNU. La nueva versin contempla los siguientes aspectos: Las diversas formas en que alguna persona podra quitar libertades a los usuarios. - Prohibir el uso de software libre en sistemas que utilizan la llamada Gestin de derechos digitales o DRM, sistema criticado por la comunidad del software libre. - Resolver ambigedades y aumentar la compatibilidad de GPLv3 con otras licencias. - Facilitar su adaptacin a otros pases. - Incluir clusulas que defiendan a la comunidad de software libre del uso indebido de las patentes de software. La GPL permite vender copias del programa a cambio de dinero. El derecho de vender copias es parte de la definicin de software libre. Excepto en una situacin particular, no existe un lmite al precio que puede ponerseles. (Esa excepcin es la oferta escrita de proporcionar el cdigo fuente, que ha de acompaar a los binarios obligatoriamente cuando estos no se distribuyen junto a su cdigo fuente). No es necesario que se ponga a disposicin tambin gratuitamente. La GPL permite establecer una tarifa por bajar un programa de un sitio. Se puede establecer la tarifa que se desee por distribuir copias del programa. Si se distribuye binarios para descargar, se ha de facilitar un acceso equivalente para descargar los fuente. Por tanto, la tarifa para descargar los fuente no puede ser mayor que la tarifa para bajar los binarios. Si alguien abona alguna cantidad y obtiene una copia, la GPL le concede la libertad de hacerlo pblico por un precio o no. Por ejemplo, alguien podra pagar el precio y despus colgar una copia en su sitio web para el pblico en general.
L i n u x : I n t r o d u c c i n |5

La nica variante de Linux completamente GNU es GNU con el ncleo GNU Hurd, que es distribuida como Debian GNU/Hurd y otros, aunque no hay ninguna versin oficial hasta el momento. No obstante Linux es el ncleo ms usado con GNU, aunque Linux en s no es parte de GNU. GNU tambin es utilizado con otros ncleos, por ejemplo en Debian GNU/kFreeBSD, Debian GNU/NetBSD, Nexenta OS o GNU-Darwin. Algunos programas desarrollados por el proyecto GNU: Bash - intrprete de comandos BFD - archivos de bibliotecas Binutils - Ensamblador GNU, linkador GNU, y herramientas relacionadas Classpath - bibliotecas para Java DotGNU - substituto de .NET Emacs - editor de texto extensible y autodocumentado GCC - compilador optimizado para varios lenguajes, particularmente C GDB - depurador de aplicaciones GNU Ghostscript - Aplicaciones para PostScript y PDF GIMP - programa de edicin fotogrfica Glibc - biblioteca para lenguaje C GNOME shell grfico GNUnet - red descentralizada de comunicaciones personales, diseada para resistir interferencias no autorizadas GNUstep - implementacin del conjunto de bibliotecas OpenStep, as como herramientas para programar aplicaciones grficas Gzip - Aplicaciones y bibliotecas para compresin de datos Hurd - un microncleo y un conjunto de servidores que funcionan del mismo modo que el ncleo UNIX Texinfo - sistema de documentacin

No debe confundirse Linux con GNU/Linux. ste es el conjunto de herramientas, bsicas o no, del S.O. y de usuario que se desarrollan bajo el proyecto GNU mientras que el primero es solamente el ncleo o kernel sobre el que funciona todo el conjunto. El proyecto GNU trabaja en el desarrollo de su propio ncleo (Hurd). El software libre presenta una innumerable cantidad de ventajas para el desarrollador frente a otos sistemas desarrollados bajo modelos cerrados. La primera y principal ventaja es que el desarrollador obtendr ayuda de parte de personas que quiz ni siquiera conoce, gracias a la gran Red de redes. La segunda ventaja es que su proyecto crecer mucho ms rpido que antes gracias a la cantidad de colaboradores que quieran sumarse a la causa (siempre que sta sea buena). Ahora bien: cmo se mantiene un proyecto basado en la colaboracin? No es muy difcil. Para mantener el proyecto de desarrollo funcionando se necesitan principalmente dos cosas: una buena organizacin y capital. Vayamos por partes. Recordemos que los proyectos de Software Libre generalmente se basan en la participacin de miles de personas de alrededor del mundo que poseen una sola cosa en comn: el espritu de colaboracin. Despus de este nivel, casi no hay estructura jerrquica.

L n u x : I n t r o d u c c i n |6

Este tipo de proyectos posee un lder, que es el encargado de seleccionar el material proveniente de las colaboraciones y mantener el proyecto a flote. Para esto, los lderes deben tener una personalidad muy especial. Deben saber decir no cuando algo no sirve y deben saber encaminar el proyecto en el rumbo adecuado. Existen muchas organizaciones con grandes estructuras que comenzaron como pequeos proyectos de Software Libre. Ejemplos de ellas son GNOME, KDE, Samba, etc. Cuando el proyecto se inicia, la necesidad de invertir capital en l es prcticamente nula. Los proyectos de Software Libre comienzan como un pasatiempo para un desarrollador y, si van por el buen camino, terminan convirtindose en proyectos masivos que mueven grandes cantidades de capital. Pero de dnde proviene el capital si la gente no pagar por el programa? sa es la pregunta que mucha gente se hace sin conocer a fondo el sistema del Software Libre. Como mencionamos al principio, el Software Libre nos da la libertad de comprarlo y venderlo. Vender un software es parte de la libertad! Ahora bien, cuando se vende un producto de Software Libre, no se debe limitar al cliente dndole un binario ejecutable y un contrato que le impida copiarlo a sus amigos. Si es Software Libre, debe ir provisto del cdigo fuente y se le debe dar la posibilidad al cliente de copiarlo sin problemas, haciendo uso de alguna de las licencias de software que hoy disponemos (GPL es una de ellas). Otra forma de obtener capital para invertir en un proyecto de Software Libre es distribuyendo el software en un medio fsico y otorgando servicios extra para los que lo adquieran. Un buen ejemplo de esto son las distribuciones de GNU/Linux que actualmente existen en el mercado. El sistema operativo GNU/Linux est compuesto por muchos componentes (programas, libreras y documentacin). Cuando uno compra una distribucin, adquiere un paquete armado por una empresa que se ha tomado el trabajo de seleccionar los mejores paquetes para un requerimiento dado. Retomando, tomemos como ejemplo la distribucin SuSe. Linux SuSe es una distribucin que se vende en varias modalidades: una versin estndar y gratuita (openSuSe, se descarga de la pgina web) y una Enterprises no gratuita. Entonces, cul es el beneficio de adquirir alguna de las versiones no gratuitas de SuSe? La respuesta es simple: cuando se adquieren estas distribuciones, se obtienen los CDs principales de la distribucin, CDs extra con miles de aplicaciones, manuales impresos y, lo ms importante de todo, el servicio tcnico al usuario. Este ltimo servicio slo es provisto a los usuarios que adquieran cualquiera de las versiones Enterprises de SuSe, y representa una ventaja para el usuario final, ya que, cuando tenga un problema, podr llamar al servicio tcnico y ste intentar orientarlo en el buen camino para que solucione su problema. Podemos extrapolar este caso a Red Hat, Mandrake, etc. Otra modalidad de conseguir capital para solventar un proyecto de Software Libre son las inversiones de las grandes empresas. Existen compaas como IBM, Hewlett-Packard y Sun Systems que apoyan muy fuertemente los desarrollos de Software Libre realizando inversiones millonarias en los proyectos. Por qu hacen esto? Porque saben que las herramientas son realmente de buena calidad (est ms que probada la eficiencia y estabilidad de los servidores basados en Linux, por ejemplo).

L i n u x : I n t r o d u c c i n |7

4. Qu es el Open Source?
El Open Source es una organizacin que se encarga de fomentar el uso de sistemas de cdigo abierto, concepto significativamente diferente al de Software Libre. Un sistema de cdigo abierto no necesariamente tiene que estar regido bajo la Licencia Pblica General, sino que puede estar regido por alguna de las tantas licencias de la Iniciativa Open Source (www.opensource.org). Uno de los fundadores de esta iniciativa es Eric Raymond, famoso hacker del mundo de GNU/Linux. Obviamente, aunque siempre hay discusiones entre los fanticos del Open Source y del Free Software, la verdad siempre la tiene el desarrollador, que es quien decide usar alguna de estas dos modalidades para el desarrollo de su programa, segn cules sean sus requerimientos.

5. Origen y evolucin de Linux.


Unix es uno de los sistemas operativos ms populares del mundo debido a su extenso soporte y distribucin. Originalmente fue desarrollado como sistema multitarea con tiempo compartido para miniordenadores y mainframes a mediados de los 70 y desde entonces se ha convertido en uno de los sistemas ms utilizados a pesar de su, ocasionalmente, confusa interfaz con el usuario y el problema de su estandarizacin. Cul es la verdadera razn de la popularidad de Unix? Muchos hackers consideran que Unix es el autntico y nico sistema operativo. El desarrollo de Linux parte de un grupo en expansin de hackers de Unix que quisieron hacer su sistema con sus propias manos. Existen numerosas versiones de Unix para muchos sistemas, desde ordenadores personales hasta 4 supercomputadores como el Cray Y-MP . La mayora de las versiones de Unix para ordenadores personales son muy caras. En 1994 una copia para una mquina 386 del Unix System V de AT&T costaba unos 1.500 dlares estadounidenses. Linux es una versin de Unix de libre distribucin, inicialmente desarrollada por Linus Torvalds en la Universidad de Helsinki, en Finlandia. Fue desarrollado con la ayuda de muchos programadores y expertos de Unix a lo largo y ancho del mundo, gracias a la presencia de Internet. Cualquier persona puede acceder a Linux y desarrollar nuevos mdulos o cambiarlo a su antojo. El ncleo de Linux no utiliza ni una sola lnea del cdigo de AT&T o de cualquier otra fuente de propiedad comercial, y buena 5 parte del software para Linux se desarrolla bajo las reglas del proyecto de GNU de la Free Software Foundation (Cambridge, Massachusetts), como hemos visto.

Superordenador creado por Cray Research en 1988.

GNU es un acrnimo recursivo que significa GNU No es Unix (GNU is Not Unix). Recordemos que el proyecto GNU fue iniciado por Richard Stallman con el objetivo de crear un sistema operativo completamente libre: el sistema GNU. El 27 de septiembre de 1983 se anunci pblicamente el proyecto por primera vez en el grupo de noticias net.unix-wizards. En el manifiesto GNU, L n u x : I n t r o d u c c i n |8

Inicialmente, slo fue un proyecto de aficionado de Linus Torvalds. Se inspiraba en Minix, un pequeo Unix desarrollado por Andy Tanenbaum, y las primeras discusiones sobre Linux surgieron en el grupo de News comp.os.Minix. Estas discusiones giraban en torno al desarrollo de un pequeo sistema Unix de carcter acadmico dirigido a aquellos usuarios de Minix que queran algo ms. El desarrollo inicial de Linux ya aprovechaba las caractersticas de conmutacin de tareas en modo protegido del 386, y se escribi todo en ensamblador. Linus dijo:
"Comenc a utilizar el C tras escribir algunos drivers, y ciertamente se aceler el desarrollo. En este punto sent que mi idea de hacer un Minix mejor que Minix se haca ms seria. Esperaba que algn da pudiese recompilar el gcc bajo Linux... Dos meses de trabajo, hasta que tuve un driver de discos (con numerosos bugs, pero que pareca funcionar en mi PC) y un pequeo sistema de ficheros. Aqu tena ya la versin 0.01 (al final de Agosto de 1991): no era muy agradable de usar sin el driver de disquetes, y no haca gran cosa. No pens que alguien compilara esa versin."

No se anunci nada sobre esa versin, puesto que las fuentes del 0.01 jams fueron ejecutables: contenan slo rudimentos de lo que sera el ncleo, y se asuma que se tena acceso a un Minix para poderlo compilar y jugar con l. El 5 de Octubre de 1991, Linus anunci la primera versin "oficial" de Linux, la 0.02. Ya poda ejecutar bash (el shell de GNU) y gcc (el compilador de C de GNU), pero no haca mucho ms. La intencin era ser un juguete para hackers. No haba nada sobre soporte a usuarios, distribuciones, documentacin ni nada parecido. Hoy, la comunidad de Linux an trata estos asuntos de forma secundaria. Lo primero sigue siendo el desarrollo del kernel. Linus escriba en comp.os.minix,
"Suspiris al recordar aquellos das de Minix-1.1, cuando los hombres eran hombres y escriban sus propios drivers? Os sents sin ningn proyecto interesante y os gustara tener un verdadero S.O. que pudierais modificar a placer? Os resulta frustrante el tener slo a Minix? Entonces, este artculo es para vosotros. Como dije hace un mes, estoy trabajando en una versin gratuita de algo parecido a Minix para ordenadores AT-386. He alcanzado la etapa en la que puede ser utilizable y voy a poner las fuentes para su distribucin. Es solo la versin 0.02. pero he conseguido ejecutar en l bash, gcc, gnu-make, gnu-sed, compress, etc."

Tras la versin 0.03, Linus salt a la versin 0.10, al tiempo que ms gente empezaba a participar en su desarrollo. Tras numerosas revisiones, se alcanz la versin 0.95, reflejando la esperanza de tener lista muy pronto una versin "oficial" (generalmente la versin 1.0 de los programas se corresponde con la primera tericamente completa y sin errores). Esto suceda en Marzo de 1992. Ao y medio despus, en Diciembre del 93, el ncleo estaba en la revisin 0.99.pl14, en una aproximacin asinttica al 1.0. Actualmente, el ncleo se encuentra en la 2.6.39 (2011).

Stallman destaca "volver al espritu de cooperacin que prevaleci en los tiempos iniciales de la comunidad de usuarios de computadoras".

L i n u x : I n t r o d u c c i n |9

Hoy Linux es ya un clnico de Unix completo, capaz de ejecutar X-Window, TCP/IP, Emacs, UUCP y software de correo y News. Mucho software de libre distribucin ha sido ya portado a Linux y estn empezando a aparecer aplicaciones comerciales. El hardware soportado es mucho mayor que en las primeras versiones del ncleo. Mucha gente ha ejecutado tests de rendimiento en sus sistemas Intel y se han encontrado que son comparables a las estaciones de trabajo de Sun Microsystems y Digital. Quin iba a imaginar que este "pequeo" clnico de Unix iba a convertirse en un estndar mundial para los ordenadores personales? El 14 de marzo de 1994, se lanz Linux 1.0.0. En marzo de 1995 se lanz Linux 1.2.0. En mayo de 1996 Torvalds decidi adoptar al pingino Tux como mascota para Linux. La versin 2 de Linux se lanz el 9 de junio de 1996 y fue un gran xito. El 18 de diciembre de 1999 se publicaron parches de IBM Mainframe para 2.2.13, permitiendo de esta forma que Linux fuera usado en ordenadores corporativos. Al final del ao 2003 la versin 2.6 del ncleo Linux es publicada. La ultima versin estable del kernel, la 3, acaba de ser publicada. A pesar del cambio de numeracin no es ms que una actualizacin de la versin 2.6.39. Actualmente Linux es el tercer sistema operativo ms utilizado en el entorno de escritorio ( Desktop) y el ms utilizado en el entorno de servidores. Segn algunas fuentes Linux posee una cuota de mercado del 5,32 % a nivel mundial, que se reduce a poco ms del 1% si contamos slo los usuarios que se conectan a Internet mediante este Sistema Operativo. No obstante, la medicin de la "cuota de mercado" puede resultar inservible ya que es un concepto basado en ventas comerciales (unidades materiales vendidas). Por otro lado Linux es utilizado frecuentemente en servidores con acceso pblico desde Internet por lo que la cuota de mercado es extremadamente inferior a la cuota de uso. Baste notar, por ejemplo, que Facebook, Gmail, LinkedIn o Yahoo funcionan sobre servidores GNU/Linux, de forma que aun cuando estemos accediendo desde un navegador ejecutndose en Windows/Mac, la aplicacin real se est ejecutando en servidores Linux y los datos estn almacenndose igualmente en dichos servidores. Las versiones del ncleo anteriores a la 2.6, se numeraban con 3 nmeros, de la siguiente forma: AA.BB.CC AA: Indicaba la serie/versin principal del ncleo. Solo han existido la 1 y 2. Este nmero cambiaba cuando la manera de funcionamiento del kernel habia sufrido un cambio muy importante. BB: Indicaba si la versin era de desarrollo de produccin. Un nmero impar, significaba que era de desarrollo, uno par, que era de produccin. CC: Indicaba nuevas revisiones dentro de una versin, en las que lo nico que se habia modificado eran fallos de programacin.

Con la serie 2.6 del ncleo, el sistema de numeracin as como el modelo de desarrollo han cambiado. Las versiones han pasado a numerarse con 4 cifras y no existen versiones de produccin y desarrollo:

L n u x : I n t r o d u c c i n | 10

AA.BB.CC.DD AA: Indica la serie/versin principal del ncleo. BB: Indica la revisin principal del ncleo. Nmeros pares e impares no tienen ningn significado hoy en da. CC: Indica nuevas revisiones menores del ncleo. Cambia cuando nuevas caractersticas y drivers son soportados. DD: Este digito cambia cuando se corrigen fallos de programacin o fallos de seguridad dentro de una revisin.

6. Caractersticas del sistema Linux.


Actualmente Linux es un ncleo monoltico hbrido. Los controladores de dispositivos y las extensiones del ncleo normalmente se ejecutan en un espacio privilegiado 6 conocido como anillo 0 (ring 0) , con acceso ilimitado al hardware, aunque algunos se ejecutan en espacio de usuario. A diferencia de los ncleos monolticos tradicionales, los controladores de dispositivos y las extensiones al ncleo se pueden cargar y descargar fcilmente como mdulos mientras el sistema contina funcionando sin interrupciones. Tambin, a diferencia de los ncleos monolticos tradicionales, los controladores pueden ser detenidos momentneamente por actividades ms importantes bajo ciertas condiciones. Esta habilidad fue agregada para gestionar correctamente interrupciones de hardware y para mejorar el soporte de multiprocesamiento simtrico. La versin oficial del ncleo Linux contiene firmware de cdigo cerrado, por ello, el Proyecto Linux-libre, auspiciado por la FSF publica y mantiene versiones modificadas del ncleo Linux a las que se les ha quitado todo el software no libre. El ncleo Linux ha sido criticado con frecuencia por falta controladores para cierto hardware de computadoras de escritorio. Sin embargo, el progresivo incremento en la adopcin de Linux en el escritorio ha mejorado el soporte de hardware por parte de terceros o de los propios fabricantes, provocando que, en los ltimos aos, los problemas de compatibilidad se reduzcan.

En modo protegido, hay cuatro niveles de privilegio o anillos, numerados de 0 a 3. El cdigo del ncleo (kernel) del sistema operativo, que necesita usar instrucciones privilegiadas se ejecuta en el anillo 0, y las aplicaciones del usuario se ejecutan normalmente en el anillo 3.

L i n u x : I n t r o d u c c i n | 11

Linux implementa la mayor parte de las caractersticas que se encuentran en otras implementaciones de Unix, ms algunas otras que no son habituales. Linux es un sistema operativo completo con multitarea y multiusuario (como cualquier otra versin de Unix). Esto significa que pueden trabajar varios usuarios simultneamente en l, y que cada uno de ellos puede tener varios programas en ejecucin. El sistema Linux es compatible con ciertos estndares de Unix a nivel de cdigo fuente, incluyendo System V y BSD (Berkeley Software Distribution). Fue desarrollado buscando la portabilidad del cdigo fuente: casi todo el software gratuito desarrollado para Unix se compila en Linux sin problemas. Y todo lo que se hace para Linux (cdigo del ncleo, drivers, libreras y programas de usuario) es de libre distribucin. En Linux tambin se implementan pseudoterminales (dispositivos pty), y teclados nacionales mediante manejadores de teclado que se cargan dinmicamente. Adems soporta consolas virtuales lo que permite tener ms de una sesin abierta en la consola de texto y conmutar entre ellas fcilmente. Linux soporta diversos sistemas de ficheros para almacenar los datos. Algunos de ellos, como el ext2, ext3 o ext4 han sido desarrollados especficamente para Linux. Otros sistemas de ficheros, como el Minix-1 o el de Xenix tambin estn soportados aunque en desuso. Tambin se podr acceder desde Linux a los disquetes y particiones en discos duros formateados con el sistema FAT o NTFS. Adems, tambin soporta el ISO-9660, que es el estndar seguido en el formato de los dispositivos pticos. Linux implementa todo lo necesario para trabajar en red con TCP/IP. Desde manejadores para las tarjetas de red ms populares hasta SLIP/PPP que permiten acceder a una red TCP/IP por el puerto serie. Tambin se implementan PLIP (para comunicarse por el puerto de la impresora) y NFS (para acceso remoto a ficheros). Y tambin se han portado los clientes de TCP/IP, como FTP, telnet, NNTP y SMTP. El ncleo soporta ejecutables con paginacin por demanda. Esto significa que slo los segmentos del programa que se necesitan se cargan en memoria desde el disco. Las pginas de los ejecutables son compartidas mediante la tcnica copy-on-write, contribuyendo todo ello a reducir la cantidad de memoria requerida para las aplicaciones. Con el fin de incrementar la memoria disponible, Linux implementa una gestin de Memoria Virtual paginada: puede tener ms de 256 megabytes de espacio de intercambio o swap en el disco duro. Cuando el sistema necesita ms memoria, expulsar pginas inactivas al disco, permitiendo la ejecucin de programas ms grandes o aumentando el nmero de usuarios que puede atender a la vez. La memoria dedicada a los programas y a la cach de disco est unificada. Por ello, si en cierto momento hay mucha memoria libre, el tamao de la cach de disco aumentar acelerando as los accesos.

7. Diseo y filosofa de Linux.


En versiones comerciales de Unix, el sistema es desarrollado siguiendo una rigurosa poltica de mantenimiento de la calidad, con sistemas de control de revisiones para las fuentes y documentacin, etc. Los desarrolladores no pueden aadir cosas nuevas por su cuenta: cualquier cambio ser en

L n u x : I n t r o d u c c i n | 12

respuesta a un informe de bug detectado, y ser cuidadosamente registrado en el sistema de control de versiones, de manera que podr volverse atrs sin problemas. Cada desarrollador tiene asignada una o ms partes del cdigo y solo ese desarrollador puede alterar esas secciones del cdigo.

Internamente, el departamento de calidad realiza conjuntos de tests para cada versin del sistema operativo e informa de los posibles errores. Es responsabilidad de los desarrolladores corregir esos errores. Se utiliza un complicado sistema de anlisis estadstico para asegurarse de que cierto porcentaje de los errores son corregidos antes de la prxima versin. Como vemos, el proceso seguido por los desarrolladores de Unix comercial para mantenerlo y darle soporte es muy complicado, pero razonable. La compaa debe tener cierta seguridad de que la prxima revisin del sistema ya est lista para ser comercializada, a travs de las pruebas que hemos comentado. Esto supone un gran trabajo que involucra a cientos (si no miles) de programadores, betatesters, redactores de documentacin y personal administrativo. Por supuesto, no todos los fabricantes de Unix trabajan as, pero esto da una idea de la panormica habitual. Con Linux, hay que olvidarse del concepto de desarrollo organizado, sistemas de control de versiones, informacin de errores estructurada o anlisis estadsticos. Linux es un sistema operativo hecho por hackers7. Linux ha sido desarrollado principalmente por un grupo de programadores de todo el mundo unidos por Internet. A travs de Internet, cualquiera tiene la oportunidad de unirse al grupo y ayudar al desarrollo y depuracin del ncleo, portar nuevo software, escribir documentacin o ayudar a los nuevos usuarios. La comunidad de Linux se comunica principalmente mediante diversas listas de correo y grupos de USENET. Existen algunos acuerdos en el desarrollo, como que cualquiera que desee que su cdigo sea incluido en la versin "oficial" del ncleo deber ponerse en contacto con Linux Torvalds, quien comprobar el cdigo y lo incluir en el ncleo. Por lo general, estar encantado en hacerlo, siempre que no estropee otras cosas. El sistema se ha diseado siguiendo una filosofa abierta y de crecimiento. Por regla general hay una nueva versin del ncleo cada dos meses (a veces cada menos tiempo). Esto depende del nmero de errores a corregir y de la cantidad de informacin recibida de los usuarios. Por lo tanto, es difcil decir que todos los errores hayan sido corregidos en cierta fecha. Pero conforme el sistema va apareciendo libre de errores crticos o manifiestos, se considera "estable" y se lanzan nuevas revisiones. Hay que recordar que no se pretende realizar un sistema perfecto, sin errores. Simplemente, se pretende desarrollar una implementacin gratuita de Unix. Linux est hecho para desarrolladores, ms que para otro tipo de personas. Si alguien desarrolla una aplicacin o nueva caracterstica para el ncleo, se aade inicialmente en una etapa "alfa", es decir, pensada para ser probada por usuarios atrevidos que aceptan los fallos que tenga. Dado que la comunidad de Linux se basa sobre todo en Internet, el software "alfa" es enviado, normalmente, a servidores FTP dedicados a Linux y anunciado mediante un mensaje puesto en un

Por hacker queremos referirnos a programadores fervientemente dedicados, por hobby, a explotar sus ordenadores al mximo, con resultados tiles para otras personas. Este concepto es contrario al habitualmente aceptado, que dice que un hacker es un pirata informtico.

L i n u x : I n t r o d u c c i n | 13

grupo USENET dedicado a Linux. Los usuarios que se llevan el software lo prueban e informan sobre errores o sugerencias al autor por correo electrnico. Una vez que se corrigen los problemas iniciales, el cdigo pasa a una etapa "beta", en la que se considera estable pero incompleto (o sea, funciona, pero no incluye todas las funcionalidades previstas). Tambin se puede pasar a una etapa "final" en la que el software se considera terminado. Para el cdigo del ncleo, una vez que se ha terminado, el desarrollador puede pedir a Linus que lo incluya en el ncleo estndar, o bien que lo ponga como cdigo optativo. Recordar que lo anterior son slo convenciones, y no leyes. Algunos programas pueden no necesitar fases "alpha". Es el desarrollador quien tomar las decisiones al respecto. Puede sorprender que un grupo de programadores y aficionados voluntarios, relativamente desorganizados, hayan podido hacer algo. Sin embargo, este grupo constituye uno de los ms eficientes y motivados. Todo el ncleo de Linux ha sido escrito de la nada, sin emplear ningn cdigo de fuentes propietarias. Todo el software, libreras, sistemas de ficheros y drivers han sido desarrollados o portados desde otros sistemas; y se han programado drivers para los dispositivos ms populares. Normalmente, Linux es distribuido junto con otro software en lo que se conoce como distribucin, que es un paquete de software que permite poner a punto un sistema completo. Dado que es difcil para los usuarios noveles el crear un sistema Unix partiendo del ncleo y programas de diversas fuentes, se crearon las distribuciones con el fin de facilitar esta tarea: con la distribucin, solo tienes que coger el CD-ROM o los disquetes e instalar para tener un sistema completo con programas de aplicacin incluidos. Como es de esperar, no hay ninguna distribucin "estndar". Hay muchas, cada una con sus ventajas y desventajas.

8. Distribuciones de Linux.
Es imprescindible seleccionar una distribucin que se adapte a las necesidades de cada uno para poder instalar, configurar y administrar un sistema Linux con xito. Hace aos, cuando Linux empez a distribuirse por Internet, instalar Linux consista en bajarse de Internet todos los archivos necesarios a unos disquetes. En esos tiempos la instalacin poda llegar a ser un laborioso proceso, haciendo que muchos usuarios frustrados acabasen por rendirse. Por ello, programadores de todo el mundo se unieron para crear distribuciones que incorporasen el sistema operativo y programas que facilitaran la instalacin, adems de los paquetes conteniendo programas de todo tipo. De esta forma la instalacin se reduca a seguir unos pasos, dando la posibilidad a los usuarios con pocos conocimientos de poder instalar un sistema operativo de este tipo con un menor esfuerzo. En este momento hay un buen nmero de distribuciones en las que poder elegir, pero cada una de ellas tiene sus pros y sus contras. Cada una de estas distribuciones tiene un gran nmero de usuarios y cada usuario de Linux opina que su distribucin es la mejor. Normalmente este tipo de opiniones se debe a que los usuarios tienden a favorecer la distribucin con la que han instalado Linux con xito. No se debe prestar mucha atencin a
L n u x : I n t r o d u c c i n | 14

las opiniones de otros usuarios, ya que a cada uno le puede parecer ms fcil una distribucin que otra. Lo que se debe hacer es conocer las ventajas e inconvenientes de cada una y decidir cul se adapta mejor a lo que se est buscando.

Las distribuciones que ms xito han tenido han sido Ubuntu, Red Hat, Slackware, Debian, Knoppix, Mandriva y SuSe. Para aquellas personas interesadas en una mayor informacin recopilamos las direcciones de Internet de estas ltimas.

Ubuntu www.ubuntu.com

open SuSe
SuSe Linux Enterprises ($)

Fedora Linux
Red Hat Linux ($) www.fedoraproject.org

www.opensuse.org.es

Canonical Ltd

Novell

Red Hat

Knoppix www.knoppix.net

Debian Linux www.debian.org

Mandriva Linux
Enterprises Server ($)

www.mandriva.com

Knoppix

Debian

Mandriva

9. Requerimientos de Hardware.
Antes de instalar el software, hay que asegurarse de los requerimientos y limitaciones de hardware de Linux.Se debe tener en cuenta que Linux fue desarrollado por sus usuarios. Esto significa, en la mayora de las ocasiones, que el hardware soportado por Linux es nicamente aqul al que usuarios y desarrolladores tienen realmente acceso. Segn van apareciendo, se van soportando la mayor parte del hardware y los perifricos populares para sistemas x86 (de hecho, Linux soporta ms hardware que algunas implementaciones comerciales de Unix). Sin embargo, an no son reconocidos algunos de los perifricos ms oscuros y esotricos. Segn pasa el tiempo aumenta el hardware soportado por Linux, de manera que si sus perifricos favoritos no son soportados por Linux hay gran probabilidad de que sean soportados prximamente. Otro inconveniente en el soporte de hardware bajo Linux es que muchas compaas han decidido conservar las especificaciones del interfaz de su hardware como propietario. Como consecuencia de esto, los desarrolladores voluntarios de Linux simplemente no pueden escribir controladores (drivers)
L i n u x : I n t r o d u c c i n | 15

para esos perifricos (y si pudieran, tales controladores seran propiedad de la compaa duea del interfaz, lo cual violara el GPL). Las compaas que mantienen interfaces propietarios escriben sus propios controladores para sistemas operativos Microsoft Windows; el usuario final no necesita saber nada del interfaz. Desafortunadamente, esto impide a los desarrolladores de Linux escribir controladores para esos perifricos. Hay muy poco que hacer en esta tesitura. En algunos casos, los programadores han intentado escribir controladores "clonados" basndose en asunciones acerca del interfaz. En otras ocasiones, los desarrolladores trabajarn con la compaa en cuestin e intentarn obtener informacin del interfaz del perifrico con un nivel de xito que puede variar. En general podremos saber que hardware puede soportar Linux en la actualidad buscando en Internet o en la documentacin de la distribucin que vayamos a instalar.

10. Arranque de Linux


El arranque del sistema se lleva a cabo en 4 etapas reconocidas por el cdigo que en ese momento tiene control sobre la CPU; al inicio solo el BIOS tiene control, despus ser el cargador de arranque (no es imprescindible) quien tenga en control, ms adelante el control pasa al propio kernel Linux, y en la ltima etapa ser cuando tengamos en memoria los programas de usuario conviviendo junto con el propio Sistema Operativo y sern ellos quienes ocupen el tiempo de la CPU. Un cargador de arranque (boot loader en ingls) es un programa diseado exclusivamente para cargar un sistema operativo en memoria. La etapa del cargador de arranque es diferente de una plataforma a otra. Como en la mayora de arquitecturas, este programa se encuentra en el MBR (Master Boot Record), el cual es de 512 bytes, insuficiente para cargar en su totalidad un sistema operativo. Por eso, el cargador de arranque consta de varias etapas. Para las plataformas x86, el BIOS carga la primera etapa del cargador de arranque (tpicamente una parte de LILO o GRUB). El cdigo de esta primera etapa se encuentra en el sector de arranque (o MBR). La primera etapa del cargador de arranque carga el resto del cargador de arranque. Los cargadores de arranque modernos tpicamente preguntan al usuario qu Sistema Operativo (o tipo de sesin) desea inicializar. Algunos son: GRUB Se carga y se ejecuta en 4 etapas: 1. La primera etapa del cargador la lee el BIOS desde el MBR. 2. La primera etapa carga el resto del cargador (segunda etapa). Si la segunda etapa est en un dispositivo grande, se carga una etapa intermedia (llamada etapa 1.5), la cual contiene cdigo extra que permite leer cilindros mayores que 1024 o dispositivos tipo LBA.

L n u x : I n t r o d u c c i n | 16

3. La segunda etapa ejecuta el cargador y muestra el men de inicio de GRUB. Aqu se permite elegir un sistema operativo junto con parmetros del sistema. 4. Cuando se elige un sistema operativo, se carga en memoria y se pasa el control. GRUB soporta mtodos de arranque directo, arranque chain-loading, LBA, ext2 y hasta "un presistema operativo totalmente basado en comandos". Tiene tres interfaces: un men de seleccin, un editor de configuracin y una consola de lnea de comandos. Dado que GRUB entiende los sistemas de archivos ext2 y ext3 y adems provee una interfaz de lnea de comandos, es ms fcil rectificar o modificar cuando se malconfigura o se corrompe. La nueva versin 2 de GRUB, soporta sistema de archivos ext4.

LILO LILO es ms antiguo. Es casi idntico a GRUB en su proceso, excepto que no contiene una interfaz de lnea de comandos. Por lo tanto todos los cambios en su configuracin deben ser escritos en el MBR, y reiniciar el sistema. Un error en la configuracin puede arruinar el proceso de arranque lo que supone que sea necesario usar otro dispositivo que contenga un programa que sea capaz de arreglar ese defecto. De forma adicional, LILO no entiende sistema de archivos, por lo tanto no hay archivos y todo se almacena en el MBR directamente. Cuando el usuario selecciona una opcin del men de carga de LILO, dependiendo de la respuesta, carga los 512 bytes del MBR para sistemas como Microsoft Windows, o la imagen del kernel Linux.

11. El Kernel
El kernel o ncleo de Linux se encarga de las funciones principales del Sistema Operativo, como el manejo de memoria, el planificador de tareas, la gestin de las entradas y salidas, la comunicacin interprocesos y dems sistemas de control. El proceso del kernel se lleva en dos etapas: la etapa de carga y la etapa de ejecucin. El kernel generalmente se almacena en un archivo comprimido con zlib. Este archivo comprimido se carga y se descomprime en memoria, tambin se cargan los drivers necesarios por medio de un disco virtual en RAM temporal (initrd). Una vez que el kernel se ha cargado en memoria y est listo, se lleva a cabo su ejecucin. Esto se realiza llamando a la funcin startup del kernel (en los procesadores x86, se encuentra en la funcin startup_32() del archivo /arch/i386/boot/head), esta funcin establece el manejo de memoria (tablas de paginacin y paginacin de memoria), detecta el tipo del CPU y aade funcionalidad adicional como

L i n u x : I n t r o d u c c i n | 17

capacidades de coma flotante. Despus cambia a funcionalidades que no dependen del hardware por medio de la llamada a la funcin start_kernel(). El proceso de arranque en Linux monta el disco RAM que fue cargado anteriormente como un sistema de archivos temporal. Esto permite que los mdulos que contienen drivers puedan ser cargados sin depender de otros drivers de dispositivos fsicos, y adems mantiene el kernel ms pequeo.

Se inicializan dispositivos virtuales con la intencin de ser usados para crear sistemas de archivos, como LVM o software RAID antes de desmontar la imagen initrd. El sistema de archivos es cambiado por medio de la funcin pivot_root() la cual desmonta el sistema de archivos temporal y lo reemplaza con el real, el cual ms tarde estar totalmente disponible liberando la memoria que ocupaba el temporal. Una vez listo el manejador de excepciones, el planificador de tareas y dems, por fin el sistema se considera totalmente operacional a nivel de procesos, por lo tanto se ejecuta el proceso init (el primer proceso en espacio de usuario), y luego inicia una tarea de inactividad por medio de cpu_idle(), una funcin que es llamada cuando la CPU no tiene nada que hacer y que, entre otras cosas permite suspender la CPU para que no consuma energa (muy til sobre todo si trabajamos con un porttil).

12. El Proceso init


El proceso init establece el entorno de usuario. Para ello verifica y monta los sistemas de archivos, inicia los servicios de usuario necesarios y cambia a un entorno basado en usuario cuando el proceso de inicio termina. En un sistema Linux estndar, init se ejecuta con un parmetro, conocido como runlevel, que toma un valor de 0 a 6, y que determina cuales subsistemas sern operacionales. Cada runlevel tiene sus propios scripts los cuales involucran un conjunto de programas. Estos scripts se guardan en directorios con nombres como "/etc/rc...". El archivo de configuracin de init es /etc/inittab. Cuando el sistema se arranca, se verifica si existe un runlevel predeterminado en el archivo /etc/inittab, si no, se debe introducir por medio de la consola del sistema. Despus se procede a ejecutar todos los scripts relativos al runlevel especificado. Volveremos a hablar del proceso init en temas posteriores. Una vez ha arrancado el sistema aparece el smbolo de peticin de orden primaria o prompt del sistema. Sea cual sea, en la totalidad de sistemas Linux este prompt acabar en el smbolo # para el administrador del sistema y en el smbolo $ (o cualquier otro como >) para un usuario normal. Ejemplo prompt usuario normal: gandalf@LOTR:$ Ejemplo prompt administrador: root@LOTR:/root#

L n u x : I n t r o d u c c i n | 18

13. Informacin y documentacin


Documentacin libre, manuales y cursos en espaol: http://es.tldp.org/ http://ditec.um.es/~piernas/manpages-es/ http://www.somoslibres.org/modules.php?name=News&file=article&sid=126 http://www.somoslibres.org/modules.php?name=News&file=article&sid=2598 http://ditec.um.es/~aflores/dile/dile.html Hispalinux: http://www.linux.es/ El rincn de Linux: http://www.linux-es.org/ Foro en espaol: http://www.linuxespanol.com/ Comunidad: http://www.espaciolinux.com/ Guadalinex: http://www.guadalinex.org/ Ubuntu: www.ubuntu-es.org/ https://help.ubuntu.com/

L i n u x : I n t r o d u c c i n | 19

You might also like