MODULO UNO SEMANA UNO 1. CONCEPTOS PREVIOS Antes de instalar y aprender a usar un potente Sistema Operativo (S.O) como lo es Linux se deben tener claros conceptos técnicos que ayudarán a entender mejor lo que se está haciendo y permitirán seguir el curso de una manera más eficiente. 1.1 ¿Qué es un Sistema Operativo? Existe un desconocimiento generalizado por parte de estudiantes y profesionales de la existencia de Sistemas Operativos diferentes a Windows en el mercado. Y es desconocido, también, que muchos de estos son libres y se pueden descargar gratis desde Internet. Linux es un S.O. diferente a MSWindows, como lo son también BSD, Solaris y MacOS, entre otros. Pueden existir cerca de 300 S.O. diferentes, pero sólo haremos mención de ellos a modo de comparación. El por qué todos conocen a Windows, es quizás por la facilidad de interactuar con el usuario final de la que tanto se habla. Sin embargo no se puede asegurar que Windows sea más fácil ó mejor. Existen ciertas características que ponen a otros sistemas operativos por delante del S.O. Windows, por ejemplo cuando se habla de estabilidad y rendimiento en procesos complejos. No hace falta decir más, muchos de nosotros por no decir todos, hemos sufrido alguna vez la pérdida de información vital en un momento inoportuno, porque quisimos escuchar un CD de música y al mismo tiempo tratar de escribir algo en un procesador de texto. En fin, la idea no es discutir en cuanto a cual S.O. es mejor o más estable, la idea es concluir que existen muchos S.O. mejores ó regulares, más costosos ó más económicos, mas ó menos amigables, etc. Cada uno de estos con diferentes características que los hace competir en un mercado tan importante como es el mundo del Software. Ahora que se entiende esto, veamos una definición de lo que significa ese Sistema Operativo: Un sistema de cómputo esta conformado por una parte física que es el Hardware ó los dispositivos electrónicos, mecánicos u ópticos y otra parte lógica que son los programas o aplicaciones que existen en el sistema. La mayoría de estos programas necesitan algo que funcione como intermediario con los dispositivos físicos, que les diga cuándo y cómo operar. Esta es la función principal de los Sistemas Operativos. 1 1.3 Sistema de archivos Sin un S.O. instalado en nuestro computador no podríamos ejecutar las tareas diarias que realizamos. (Multimedia, Ofimática, juegos, Internet, etc.) Más información: http://www.itver.edu.mx/so1/sistemas _operativos.htm http://es.wikipedia.org/wiki/Sistema_o perativo 1.2 Arquitectura de computadores Todos los computadores están conformados por varios módulos o partes que unidos entre sí forman un todo que es el sistema de cómputo completo. En esta sección no vamos adéntranos es este aspecto que es bastante amplio y complejo. Lo que nos interesa saber es que en el mercado se consiguen diferentes arquitecturas de computadores y que hay Sistemas Operativos para cada una de estas arquitecturas. La arquitectura más común para nosotros es la i386 que tienen procesadores Intel ó Athlon. Otras arquitecturas son: Alpha (Para sistemas Unix) PPC (Sistemas Mac) Sparc (Sistemas Sun, Solaris) ¿Quiere saber más? http://es.wikipedia.org/wiki/Arquitectur a_de_computadoras Un Sistema de archivos se refiere a los archivos y directorios almacenados en un computador. Un sistema de archivos puede tener formatos diferentes llamados tipos de sistemas de archivos. Estos formatos determinan cómo se almacenará la información como archivos y directorios. Algunos tipos de sistemas de archivos almacenan copias redundantes de datos, mientras que otros tipos de sistemas de archivos hacen el acceso al disco duro más rápido. Existen diferentes sistemas de archivos para los diferentes Sistemas Operativos existentes. Entre los más comunes tenemos: FAT, FAT16, FAT32 Windows 95,98,Me. NTFS Windows NT, 2000, XP. EXT2, EXT3, REISERF Linux y derivados. Si queremos instalar un S.O. determinado, en nuestro caso un S.O. Linux, tendremos que formatear las particiones a usar con algún tipo de los sistemas de archivo soportados por Linux. Más información: http://es.wikipedia.org/wiki/Sistema_d e_archivos 1.4 Módulos y Dispositivos 2 Existe una relación estrecha entre lo que es un módulo y un dispositivo, los módulos se asemejan a los drivers que encontramos en otros Sistemas Operativos. El driver es el que hace la interfaz entre el software y el hardware de un computador. Por ejemplo, para que su unidad de CDROM (Dispositivo de CDROM) funcione correctamente una vez conectada, necesita disponer de un software o programa que le indique cómo funcionar, el directamente encargado de hacer esta tarea es un módulo, driver o controlador como se le llama en el habla hispana. Los módulos son trozos de código que se cargan en un kernel (Linux) en ejecución para implementar nueva características ó para proporcionar un controlador para un dispositivo de hardware específico. Se pueden encontrar en un sistema Linux de dos formas: Incorporados en el kernel mismo ó como módulos cargables. Los módulos que vienen incorporados en el núcleo (kernel, Linux) están precompilados por defecto, esto quiere decir que antes de ser instalados ya estaban dentro de Linux. Existen módulos que necesariamente deben ser de este tipo, como los que controlan los dispositivos básicos del sistema, por ejemplo el disco duro, ratón, teclado, las unidades de 3 ½”, CDROM, DVD, etc. Los módulos cargables son controladores que están en el sistema y aparecen como archivos con extensión ".o" (punto o). Estos módulos no se encontraran activos una vez entremos al sistema Linux. Para que uno de estos módulos se cargue ó funcione, debe existir un dispositivo que solicite su funcionamiento. Por ejemplo el MODEM de nuestro computador, el módulo correspondiente al MODEM sólo se activará cuando intentemos conectarnos a través de éste. Cuando no existían los módulos cargables en Linux, todas las características de los dispositivos se incluían como parte del kernel en tiempo de compilación. Si durante ese proceso se olvidaba darle soporte a algún dispositivo, era necesario recompilar el kernel para que el dispositivo faltante funcionara. El sistema de módulos actual en Linux permite generar trozos de código que se cargan en tiempo de ejecución y por lo tanto el consumo de memoria del sistema es menor, puesto que sólo se activan ó cargan los módulos requeridos en un momento determinado. Otra ventaja que tienen los módulos cargables es que se pueden tener programas que automaticen las tareas de carga y descarga de estos 3 en el sistema, asegurando que siempre se tendrá la máxima cantidad de memoria disponible para ejecutar las aplicaciones. Más información: http://structio.sourceforge.net/guias/A A_Linux_colegio/dispositivos-yLinux.html 1.5 Particiones del Disco Duro El concepto de partición es sencillo de entender, existe un dispositivo llamado el Disco Duro (D.D) del computador. Éste tiene un tamaño establecido de fábrica. Por ejemplo: asumamos que el D.D de un computador tiene 40 Gigas, algo normal hoy en día. Actualmente se consiguen discos duros de hasta 120 Gigas. La notación para este valor es de GB (Giga Bytes). Ahora supongamos que queremos instalar 2 sistemas operativos en el D.D, en uno tendremos Windows y en el otro Red Hat Linux, lo que debemos hacer antes de iniciar el proceso de instalación es dividir este disco en 2 partes, a estas partes las llamaremos particiones del D.D. Nuestro disco quedará con dos particiones y podremos iniciar el proceso de instalación de forma segura. ¡Se recomienda siempre instalar primero todos los S.O. que no sean Linux y dejar éste para lo último ya que maneja gestores de arranque que pueden manipular el arranque de muchos más Sistemas Operativos. En pocas palabras se puede decir: Las particiones son las divisiones lógicas que tiene el Disco Duro de un computador. Más información: http://www.saulo.net/pub/ddypart/ http://users.servicios.retecal.es/tomas 21/arti/parti.html 1.6 Gestores de Arranque El concepto de gestor de arranque quizás no se escucha muy a menudo en otros ambientes donde no se usa un Sistema Operativo diferente al Windows. Un gestor de arranque es un programa ó una aplicación encargada de seleccionar el Sistema Operativo con el que queremos arrancar nuestro computador. Entiéndase arrancar como el proceso de inicio del Sistema, Los pasos necesarios que se deben realizar (de forma transparente para el usuario) antes de que el computador pueda desplegar información en pantalla. ¡El procedimiento normal es que prendamos el computador y éste arranque inmediatamente con el 4 Sistema Operativo que trae instalado!, Pero que sucede si tenemos varios sistemas operativos? En Linux el gestor de arranque más difundido es conocido con el nombre de 'LILO'. Sigla que viene de la expresión Linux Loader (Cargador de Linux). Este programa nos permite arrancar muchos Sistemas Operativos diferentes entre sí. Lo instalaremos más adelante para que nos permita elegir una vez prendido el computador si queremos iniciar con Windows ó Linux Red Hat. Para las nuevas versiones de Red hat se ha empleado también el GNU GRand Unified Boot loader o GRUB es un programa que habilita al usuario a seleccionar qué sistema operativo instalado o kernel descargar en el momento de arranque del sistema. Permite también que el usuario transmita argumentos al kernel. Más información: http://es.wikipedia.org/wiki/Lilo http://www.gnu.org/software/grub/gru b.html http://www.Linuxario.com.ar/listado.ph p?letra=L 5 2. FILOSOFIA E HISTORIA 2.1 Qué es Software Libre? Los Software Libres son programas ó aplicaciones que funcionan igual que cualquier otro programa ó aplicación comercial, pero que mantienen una diferencia más filosófica que económica en cuanto a la forma de desarrollarse. El software libre es de uso libre, entiéndase por libre, un software que permite que cualquier persona pueda usarlo, sin necesidad de pagar una licencia o sin el temor que éste caduque en una fecha determinada. El software libre permite que los usuarios adapten los programas a sus necesidades y les permiten redistribuirlo sin necesidad de pagar por hacerlo. El software libre permite que los usuarios se beneficien económicamente de éste si así lo desean sin temor a ser llamados "piratas". Como se menciona antes, el software libre se diferencia con el software propietario en su filosofía. Está desarrollado por personas de todo el mundo, trabajando en un esfuerzo comunitario y sin ningún tipo de interés económico. Esta forma de trabajo puede no ser entendida por mucha personas que trabajan ó desarrollan en otras plataformas ó con otro tipo de filosofía, sin embargo la Comunidad de Software Libre, que es como se denomina este conjunto de personas que desarrollan en el ámbito mundial, lleva mas de 20 años de existencia y hoy en día se ha fortalecido mucho más con el surgimiento y posicionamiento de aplicaciones libres para el Sistema operativo GNU/Linux, el cual es nuestro tema de interés. Más información: http://www.gnu.org/philosophy/freesw.es.html 2.2 Qué es GNU? La sigla GNU, será muy usada durante todo el curso y por esto es importante que entienda qué significa y dónde radica su importancia dentro de todo el tema de Linux. GNU (Gnu is Not Unix) ó !GNU No es Unix!, es el proyecto iniciado por el señor Richard Stallman en 1984, que busca desarrollar un Sistema Operativo totalmente Libre. Su sigla hace referencia a los Sistemas Operativos Unix usados en aquellas épocas, que se consideraban los más estables y eficientes pero su origen era propietario. Las compañías y centros de investigación pagaban altas sumas de dinero para poder usarlos. 6 Con este acrónimo recursivo se quiere dar a entender entonces que el proyecto seria un Sistema Operativo tan eficiente y estable como lo era Unix, y sin embargo, no sería Unix, por el tipo de filosofía Libre con el que estaba siendo concebido y debido a que se desarrollaría basado en códigos de otros sistemas operativos de libre distribución, no Unix. Entiéndase por esto que se busca crear un núcleo que sea estable, rápido y fácilmente mantenible, se busca crear un conjunto de aplicaciones, muchas de las cuales hoy ya existen, que sean totalmente libres, para que cualquier persona en Internet se pueda beneficiar de ellas. En el proyecto GNU colaboran personas de diferentes partes del mundo y son estos mismos los que integran la Comunidad de software Libre. Se puede resumir que GNU es el proyecto más grande de Software Libre creado y el que lleva más tiempo desarrollándose. Más información: GNU: http://www.fsf.org/home.es.html http://es.gnu.org/ Richard Stallman : http://es.wikipedia.org/wiki/Richard_St allman http://www.stallman.org/ 2.3 Licencia GPL Estamos acostumbrados a comprar ó quizás piratear software que trae un tipo de licenciamiento por tiempo limitado o con funciones deshabilitadas hasta que se compre la licencia obligatoria. Este tipo de licenciamiento es usado en la mayoría de aplicaciones que usted conoce hoy en día, cuando termine este curso habrá aprendido las ventajas que trae conocer el Software Libre y su licencia pública más conocida, la GPL. Y bueno qué es la GPL entonces? GPL es la GNU Public License (Licencia Pública GNU), es un tipo de licenciamiento que aclara que un software que ésta cobije, será Software Libre!. En resumen se puede decir que la licencia GPL permite las 4 libertades siguientes para cualquier tipo de software que este licenciado bajo esta: · La libertad de usar el programa, con cualquier propósito. (Libertad 0). · La libertad de estudiar cómo funciona el programa, y adaptarlo a 7 sus necesidades. (Libertad 1). El acceso al código fuente es una condición previa para esto. · La libertad de distribuir copias, con lo que puede ayudar a su vecino. (libertad 2). · La libertad de mejorar el programa y hacer públicas las mejoras a los demás, de modo que toda la comunidad se beneficie. (libertad 3). El acceso al código fuente es un requisito previo para esto. Más información: http://es.wikipedia.org/wiki/GPL http://es.gnu.org/Licencias/gples.html http://www.es.gnu.org/licencias/index. html 2.4 ¿Qué es GNU/Linux? El proyecto Linux al igual que cualquier proyecto libre en Internet, tiene una historia. Linux nace de las manos de un joven Finlandés llamado Linus Torvalds en el año 1991, estudiante de informática de la Universidad de Helsinki, quien como tesis de grado desarrolló lo que se llamó en ese momento un pequeño núcleo independiente que funcionaba en arquitecturas i386. En un inicio su desarrollo estaba basado en un Sistema Operativo tipo Unix existente para ambientes académicos llamado 'minix', este sistema fue desarrollado por el profesor Andrew Tanenbaum, hombre reconocido en informática. el mundo de la La primera versión del núcleo Linux, no salió al público por considerarse no funcional. El 5 de octubre de 1991, Linus anunció a Internet la primera versión "Oficial" de su núcleo Linux (versión 0.02). Para ese entonces el núcleo tenía un compilador libre (gcc) y un interprete de comandos funcional (GNU Bourne Again Shell) más conocido como BASH. El proceso de desarrollo continuó hasta que programadores de todas partes del mundo a través de Internet empezaron a trabajar en el proyecto y después de sucesiva revisiones, Linus incrementó el número de versión hasta la 0.95 en Marzo de 1992. Más de un año después, en diciembre de 1993, el núcleo del sistema estaba en la versión 0.99 y la versión 1.0 no llegó hasta el 14 de marzo de 1994. En este momento el sistema operativo se consideraba usable, fue entonces cuando se logró la unión de los proyectos más importantes de esta cultura del Software Libre. Todo el software desarrollado por el proyecto GNU desde 1984, que hasta la fecha no estaba siendo usado masivamente, y al ver que el proyecto GNU no desarrollaba aun su propio 8 núcleo (con nombre código HURD), se unió con el núcleo de Linus Torvalds conformando el proyecto GNU/Linux, un sistema Operativo totalmente GPL. El Sistema Operativo GNU/Linux es mal llamado hoy en día "Linux". Mal llamado porque el nombre real del proyecto es GNU/Linux y ya habrán identificado la importancia del proyecto GNU dentro de esta unión. Las personas que siguen trabajando en el desarrollo de aplicaciones para GNU/Linux saben muy bien que este es un conjunto de proyectos y saben diferenciar lo que es Linux y lo que es el proyecto GNU. El proyecto GNU ha sido de vital importancia para Linux, sin las aplicaciones ofimáticas, de Internet, multimedia, que tiene éste, el proyecto Linux en solitario no tendría la popularidad que maneja actualmente. Un núcleo sin aplicaciones no me permitiría realizar realmente nada, se distribuiría un Sistema Operativo que no tendría nada que controlar ó procesar en las computadoras. Como la palabra se ha hecho tan popular, durante este curso haremos referencia simplemente al nombre LINUX. También usaremos las palabras NUCLEO ó KERNEL indistintamente para referirnos a él mismo. Esta es pues una pequeña aproximación al nacimiento de Linux y la importancia de los demás proyectos libres popularización. para su Más información en: http://es.wikipedia.org/wiki/Linux http://es.wikipedia.org/wiki/GNU/Linux http://es.wikipedia.org/wiki/Linux_(n% FAcleo) 2.5 Linux en la actualidad. Linux se ha convertido en un Sistema Operativo realmente importante dentro del mercado del software, a pesar de manejar un tipo diferente de comercialización, que más que por su costo real, es ganada por los servicios, productos y proyectos que se crean con base en éste. Linux es considerado como el mejor Sistema Operativo en el ámbito de redes, ya que desde su concepción estaba pensado como un Sistema Operativo capaz de interactuar con todo tipo arquitecturas y con la capacidad de soportar innumerables protocolos. Se puede decir entonces que Linux ha logrado posicionarse en el ámbito mundial y que el camino hasta la fecha ha sido y seguirá siendo ascendente. Linux también ha hecho un esfuerzo por llegar a los usuarios finales y es por eso que encontraremos distribuciones orientadas a todas las personas que lo quieren tener en la casa u oficina. 9 La versión actual de Linux es la 2.4.23 en la rama del 2.4 y la 2.6.2 en la rama del 2.6 La historia con estas "ramas" de Linux es que hay desarrolladores del S.O. encaminados a ofrecer soporte a nuevos dispositivos como lo son todos aquellos que programan en la rama 2.6 dirigida por Linux Torvalds. La rama 2.4 busca ser más estable y tratar de portar aplicaciones nuevas y mantener un estándar entre los programas actuales en todas distribuciones de Linux. Existe una rama de desarrollo llamada la "rama 2.2", esta se puede considerar obsoleta ya que lleva demasiado tiempo desarrollándose y busca mantener compatibilidad con software y hardware antiguo. Este curso es una introducción a este Sistema Operativo, se espera que sea de su agrado, y que sirva como base para seguir ampliando el conocimiento en lo referente al mundo del Software Libre. 10