Sistemas Operativos Inf−169 El trabajo a desglosar contiene de manera breve una pequeña exposición acerca de un sistema operativo que en estos tiempos entra como una nueva alternativa para los usuarios de sistemas de información. Nos referimos a Linux una fuerte competencia actualmente para Windows, aunque ambos poseen gran similitud. Esta pequeña exposición tratará aspectos tanto prácticos como teóricos del sistema operativo en cuestión. Desde una breve histórica hasta las pautas necesarias para utilizar algunas de las diferentes herramientas de este sistema. Dentro de los temas que aquí se presentan se encuentran: Pequeña historia e introducción a Linux, instalación de Linux, manejo del sistema, comandos, entre otros puntos importantes que sirven de guía para iniciarse como un usuario de Linux. Además su instalación permite introducirse a el aprendizaje de Unix. Linux es una nueva alternativa para usuarios que deseen usar un sistema operativo más flexible. Aún cuando Linux resulta más difícil de emplear sus fabricantes trabajan buscando la manera de facilitar su uso. Pese a todo, la flexibilidad y gran estabilidad de Linux han hecho una opción muy interesante a tener en cuenta por aquellos usuarios que se dediquen a trabajar a través de redes, naveguen por Internet o se dediquen a la programación. Además el futuro de Linux es brillante y cada vez más gente y más empresas están apoyando este proyecto, con lo que el sistema será cada día más sencillo de emplear y los programas serán cada vez mejores. Breve historia de Linux Unix es uno de los sistemas operativos más populares del mundo debido a su extenso soporte y distribución. Originalmente fue desarrollado como sistema multitarea con tiempo compartido para mini ordenadores y mainframes a mediados de los `70, y desde entonces se ha convertido en uno de los sistemas más utilizados a pesar de su, ocasionalmente, confusa interfaz con el usuario y el problema de su estandarización. ¿Cuál es la verdadera razón de la popularidad de Unix? Muchos hackers consideran que Unix es el auténtico y único sistema operativo. El desarrollo de Linux parte de un grupo en expansión 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 supercomputadores como el Cray Y−MP. La mayoría de las versiones de Unix para ordenadores personales son muy caras. Linux es una versión de Unix de libre distribución, 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 habitante del planeta puede acceder a Linux y desarrollar nuevos módulos o cambiarlo a su gusto. Inicialmente, sólo fue un proyecto de Linus Torvalds. Se inspiraba en Minix, un pequeño 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 pequeño sistema Unix de carácter académico dirigido a aquellos usuarios de Minix que querían algo más. 1 El desarrollo inicial de Linux ya aprovechaba las características de conmutación de tareas en modo protegido del 386, y se escribió todo en ensamblador. Linus dice, "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 hacía más seria. Esperaba que algún día pudiese recompilar el gcc bajo Linux... Dos meses de trabajo, hasta que tuve un driver de discos (con numerosos bugs, pero que parecía funcionar en mi PC) y un pequeño sistema de ficheros. Aquí tenía ya la versión 0.01 (al final de Agosto de 1991) no era muy agradable de usar sin el driver de disquetes, y no hacía gran cosa. No pensé que alguien compilaría esa versión." No se anunció nada sobre esa versión, puesto que las fuentes del 0.01 jamás fueron ejecutables: contenían solo rudimentos de lo que sería el núcleo, y se asumía que se tenía acceso a un Minix para poderlo compilar y jugar con él. El 5 de Octubre de 1991, Linus anunció la primera versión "oficial" de Linux, la 0.02. Ya podía ejecutar bash (el shell de GNU) y gcc (el compilador de C de GNU), pero no hacía mucho más. La intención era ser un juguete para hackers. No había nada sobre soporte a usuarios, distribuciones, documentación ni nada parecido. Hoy, la comunidad de Linux aún trata estos asuntos de forma secundaria. Lo primero sigue siendo el desarrollo del kernel. Linus saltó a la versión 0.10 al tiempo que más gente empezaba a participar en su desarrollo. Tras numerosas revisiones, se alcanzó la versión 0.95, reflejando la esperanza de tener lista muy pronto una versión "oficial". (Generalmente, la versión 1.0 de los programas se corresponde con la primera teóricamente completa y sin errores). Esto sucedía en Marzo de 1992. Año y medio después, en Diciembre del 93, el núcleo estaba en la revisión 0.99.pl14, en una aproximación asintótica al 1.0. Actualmente, el núcleo se encuentra en la versión 1.1 parche 52, y se acerca la 1.2.2. Hoy Linux es ya un clónico de Unix completo, capaz de ejecutar X Windows, TCP/IP, Emacs, UUCP y software de correo y News. Mucho software de libre distribución ha sido ya portado a Linux, y están empezando a aparecer aplicaciones comerciales. El hardware soportado es mucho mayor que en las primeras versiones del núcleo. Mucha gente ha ejecutado tests de rendimiento en sus sistemas Linux 486 y se han encontrado que son comparables a las estaciones de trabajo de gama media de Sun Microsystems y Digital. ¿Quién iba a imaginar que este "pequeño" clónico de Unix iba a convertirse en un estándar mundial para los ordenadores personales? ¿Qué es Linux? Linux es un sistema operativo y de libre distribución inspirado en el sistema UNIX, cuya característica principal es que es fácilmente portable a diferentes tipos de ordenadores. Lo contrario de otros sistemas operativos por ejemplo MacOs, aunque no esta pensado para ser fácil de emplear sino para ser sumamente flexible. Linux tiene una mascota oficial, el pingüino de Linux, que fue seleccionado por Linus Torvalds para representar la imagen que según él se asocia al sistema operativo que él creó. 2 Aunque existen muchas variaciones de la palabra Linux, es lo más a menudo posible pronunciada con un cortocircuito " i " y con la primera sílaba tensionada, como en LIH−nucks. Básicamente podemos decir que hoy Linux es un sistema muy completo. El proyecto de Linus Torvalds aún no ha terminado, y se piensa que nunca se terminará por ésta continua evolución de la Informática. ¿Qué son las distribuciones de Linux? Las distribuciones: una distribución es un agrupamiento del núcleo del sistema operativo Linux (la parte desarrollada por Linux Tolvalds) y otra serie de aplicaciones de uso general o no tan general. En principio las empresas que desarrollan las distribuciones de Linux están en su derecho de cobrar cierta cantidad por el software que ofrecen, aunque en la mayor parte de los casos se pueden conseguirse estas distribuciones desde Internet, revistas o de amigos, siendo estas formas gratuitas y legales. Las distribuciones más conocidas son Redhat, Debian, Slackware, SuSe y Corel Linux, todas ellas incluyen el software más reciente y empleado lo cual incluye compiladores de C/CC++, editores de texto, juegos, programas para el acceso a Internet, así como el sistema de inhalación del sistema operativo. Características del sistema Linux implementa la mayor parte de las características que se encuentran en otras implementaciones de UNIX, más algunas otras que no son habituales. En esta sección nos daremos una vuelta por todo ello. Linux es un sistema operativo completo con multitarea y multiusuario (como cualquier otra versión de UNIX), esto significa que pueden trabajar varios usuarios simultáneamente en él, y que cada uno de ellos puede tener varios programas en ejecución. El sistema Linux es compatible con ciertos estándares de UNIX a nivel de código fuente, incluyendo el IEEE POSIX.1, System V y BSD. Fue desarrollado buscando la portabilidad de las fuentes: encontrará que casi todo el software gratuito desarrollado para UNIX se compila en Linux sin problemas. Y todo lo que se hace para Linux (código del núcleo, drivers, librerías y programas de usuario) es de libre distribución. LINUX soporta consolas virtuales, lo que permite tener más de una sesión abierta en la consola de texto y conmutar entre ellas fácilmente. A los usuarios del programa "screen" les resultará familiar esto. El núcleo es capaz de emular por su cuenta las instrucciones del coprocesador 387, con lo que en cualquier 386 con coprocesador o sin él se podrán ejecutar aplicaciones que lo requieran. Linux soporta diversos sistemas de ficheros para guardar los datos. Algunos de ellos, como el ext2fs, han sido desarrollados específicamente para Linux. Otros sistemas de ficheros, como el Minix−1 o el de Xenix también están soportados. Y con el de MS−DOS se podrán acceder desde Linux a los disquetes y particiones en discos duros formateados con MS−DOS. Además, también soporta el ISO−9660, que es el estándar en el formato de los CD−ROMs. Linux implementa todo lo necesario para trabajar en red con TCP/IP. Desde administradores para las tarjetas de red más populares hasta SLIP/PPP, que permiten acceder a una red TCP/IP por el puerto serie. También se implementan PLIP (para comunicarse por el puerto de la impresora) y NFS (para acceso remoto a ficheros). Y también se han portado los clientes de TCP/IP, como FTP, telnet, NNTP y SMTP. El núcleo de Linux ha sido desarrollado para utilizar las características del modo protegido de los microprocesadores 80386 y 80486. En concreto, hace uso de la gestión de memoria avanzada del modo protegido y otras características avanzadas. Cualquiera que conozca la programación del 386 en el modo protegido sabrá que este modo fue diseñado para su uso en Unix (o tal vez Multics). Linux hace uso de esta 3 funcionalidad precisamente. El núcleo soporta ejecutables con paginación por demanda. Esto significa que sólo los segmentos del programa que se necesitan se cargan en memoria desde el disco. Las páginas de los ejecutables son compartidas mediante la técnica 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 la paginación con el disco: puede tener hasta 256 megabytes de espacio de intercambio o "swap" en el disco duro. Cuando el sistema necesita más memoria, expulsará páginas inactivas al disco, permitiendo la ejecución de programas más grandes o aumentando el número de usuarios que puede atender a la vez. Sin embargo, el espacio de intercambio no puede suplir totalmente a la memoria RAM, ya que el primero es mucho más lento que ésta. 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 tamaño de la caché de disco aumentará acelerando así los accesos. Los ejecutables hacen uso de las librerías de enlace dinámico. Esto significa que los ejecutables comparten el código común de las librerías en un único fichero, como sucede en SunOS. Así, los ejecutables serán más cortos a la hora de guardarlos en el disco, incluyendo aquellos que hagan uso de muchas funciones de librería. También pueden enlazarse estáticamente cuando se deseen ejecutables que no requieran la presencia de las librerías dinámicas en el sistema. El enlace dinámico se hace en tiempo de ejecución, con lo que el programador puede cambiar las librerías sin necesidad de recopilación de los ejecutables. La gran popularidad de Linux incluye los siguientes puntos: • Se distribuye su código fuente, lo cual permite a cualquier persona que así lo desee hacer todos los cambios necesarios para resolver problemas que se puedan presentar, así como también agregar funcionalidad. El único requisito que esto conlleva es poner los cambios realizados a disposición del público. • Es desarrollado en forma abierta por cientos de usuarios distribuidos por todo el mundo, los cuales la red Internet como medio de comunicación y colaboración. Esto permite un rápido y eficiente ciclo de desarrollo. • Cuenta con un amplio y robusto soporte para comunicaciones y redes, lo cual hace que sea una opción atractiva tanto para empresas como para usuarios individuales. • Da soporte a una amplia variedad de hardware y se puede correr en una multitud de plataformas: PCs convencionales, computadoras Macintosh y Amiga, así como costosas estaciones de trabajo Multitarea La palabra multitarea describe la capacidad de ejecutar muchos programas al mismo tiempo sin detener la ejecución de cada aplicación. Se le denomina multitarea prioritaria porque cada programa tiene garantizada la oportunidad de ejecutarse, y se ejecuta hasta que el sistema operativo da prioridad a otro programa para que se ejecute. Este tipo de multitarea es exactamente lo que hace Linux. MS−DOS y Windows 3.1 no admiten la multitarea prioritaria; admiten una forma de multitarea denominada multitarea cooperativa. Con ésta, los programas se ejecutan hasta que permiten voluntariamente que se ejecuten otros programas o no tienen nada más que hacer por el momento. Para comprender mejor la capacidad multitarea de Linux, examínelo desde otro punto de vista. El microprocesador sólo es capaz de hacer una tarea a la vez, pero las realiza en tiempos tan cortos que se escapan a nuestra comprensión es por eso que en sus "ratos libres" se dedica a ejecutar otras tareas que se le hayan pedido. 4 Es fácil ver las ventajas de disponer de multitarea prioritaria. Además de reducir el tiempo muerto (tiempo en el que no puede seguir trabajando en una aplicación porque un proceso aún no ha finalizado), la flexibilidad de no tener que cerrar las ventanas de las aplicaciones antes de abrir y trabajar con otras es infinitamente mucho más cómoda. Linux y otros sistemas operativos multitarea prioritaria consiguen el proceso de prioridad supervisando los procesos que esperan para ejecutarse, así como los que se están ejecutando. El sistema programa entonces cada proceso para que disponga de las mismas oportunidades de acceso al microprocesador. El resultado es que las aplicaciones abiertas parecen estar ejecutándose al mismo tiempo (en realidad, hay una demora de billonésimas de segundo entre el momento en que el procesador ejecuta una serie de instrucciones de una aplicación y el momento programado por Linux para volver a dedicar tiempo a dicho proceso). Es esta capacidad de asignar tiempo a las aplicaciones que se están ejecutando desde una sistema operativo de acceso gratuito, lo que destaca a Linux de otros sistemas operativos y entornos disponibles en la actualidad. Multiusuario La idea de que varios usuarios pudieran acceder a las aplicaciones o la capacidad de proceso de un único PC era una utopía hace relativamente pocos años. UNIX y Windows NT ayudaron a convertir ese sueño en realidad. La capacidad de Linux para asignar el tiempo de microprocesador simultáneamente a varias aplicaciones ha derivado en la posibilidad de ofrecer servicio a diversos usuarios a la vez, ejecutando cada uno de ellos una o más aplicaciones. La característica que más resalta de Linux es que un grupo de personas puede trabajar con la misma versión de la misma aplicación al mismo tiempo, desde el mismo terminal o desde terminales distintos. No se debe confundir esto con el hecho de que varios usuarios puedan actualizar el mismo archivo simultáneamente, característica que es potencialmente confusa, peligrosa y decididamente indeseable. Seguro. El concepto de seguridad en redes de ordenadores es siempre relativo. Un sistema puede ser seguro para un determinado tipo de actividades e inseguro para otras. Por ejemplo, no sería recomendable guardar secretos de estado en un sistema Linux al que pudiera acceder mucha gente y careciese de un administrador dedicado absolutamente a la tarea, ya que según todos los hackers, no hay sistema cuya seguridad sea perfecta. El sistema de contraseñas que protege el acceso al sistema se basa en el algoritmo DES, el más probado de los algoritmos de seguridad. Pero claro, por muy bueno que sea el algoritmos, si después permitimos a sus usuarios poner como contraseña su nombre de usuario, de nada servirá la contraseña y todos sus esfuerzos. Si se quiere que el sistema sea seguro, se debe administrar de tal forma que se tengan controlados a los usuarios en todo momento, para poder aconsejarles e incluso regañarles, en caso de que cometan alguna imprudencia, todo ello con el fin de mantener la propia seguridad de sus datos y de los nuestros. Para ayudarse a mantener la seguridad surgen nuevas herramientas constantemente, tanto para detectar intrusos como para encontrar fallos en el sistema y evitar así ataques desde el exterior. 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. Comunicación en Linux 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 5 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 Red Hat, 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). Shells de Linux Cada usuario de un sistema Linux tiene su propia interfaz de usuario o Shell. Los usuarios pueden personalizar sus shells adecuándolos a sus propias necesidades específicas. En este sentido, el Shell de un usuario funciona más como un entorno operativo que el usuario puede controlar. Linux permite la utilización de distintos tipos de shell programables. Para aquellos que se pregunten qué es un shell es como el command.com de MS−DOS, es decir, un intérprete de comandos. Es básicamente la interfaz, el modo de comunicación, entre el usuario y el sistema. Cada shell tiene sus características propias. La principal diferencia que existe entre los distintos tipos de shell radica en la sintáxis de la línea de comandos. No es necesario aprender a programar con todos los tipos de shell ya que sabiendo uno los conocemos todos, así que es mucho más sencillo de lo que parece. Concluyendo podemos decir que 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. Diferencias entre Linux y otros sistemas operativos. Es importante entender las diferencias entre Linux y otros sistemas operativos, tales como MS−DOS, OS/2, y otras implementaciones de UNIX para ordenador personal. Primeramente, conviene aclarar que Linux puede convivir felizmente con otros sistemas operativos en la misma máquina: es decir, Ud. puede correr MS−DOS y OS/2 en compañía de Linux sobre el mismo sistema sin problemas. ◊ ¿Por qué usar Linux en lugar de un sistema operativo comercial conocido, bien probado, y bien documentado? Podríamos darle miles de razones. Una de las más importantes es que Linux es una excelente elección para trabajar con Unix a nivel personal. Si Ud. es un desarrollador de software Unix, Linux le permitirá desarrollar y probar el software Unix en su PC, incluyendo aplicaciones de bases de datos y X Windows. Si es Ud. estudiante, la oportunidad está en que los sistemas de su universidad correrán Unix. Con Linux, podrá correr su propio sistema Unix y adaptarlo a sus necesidades. La instalación y uso de Linux es también una excelente manera de aprender Unix si no tiene acceso a otras máquinas Unix. Pero no perdamos la vista. Linux no es sólo 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. Las universidades encuentran a Linux perfecto para dar cursos de diseño 6 de sistemas operativos. Grandes vendedores de software comercial se están dando cuenta de las oportunidades que puede brindar un sistema operativo gratuito. Se señalan 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 • Los subdirectorios no se separan con el carácter '\', como en DOS, sino con el carácter '/'. • 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. Estructura general del sistema operativo UNIX. Se puede dividir en tres componentes: • Núcleo o Kernel: Comprende de un 5 −10% del código total. • Caparazón o Shell: Actúa como interprete de comandos. • Programa de utilidad. KERNEL. Es el núcleo del S.O. Unix. Tiene diversas tareas asignadas: • Planificar, coordinar y gestionar la ejecución de los procesos. Para ello, hace uso de las prioridades asignadas a cada proceso y utiliza algoritmos específicos para repartir el tiempo entre los diversos procesos que compiten por él. • Dar servicios del sistema, como entrada / salida gestión de ficheros. • Manejar las operaciones dependientes del hardware, es decir las funciones de mas bajo nivel de manera se oculten al usuario. Un Kernell puede constar de 20.000 líneas de código de las cuales un 70/80% esta escrita en C y el resto depende de la maquina. SHELL. 7 Al contrario de otros sistemas operativos, por defecto el trabajo en Linux no se realiza de una forma gráfica, sino introduciendo comandos de forma manual. Linux dispone de varios programas que, desde el punto de vista del usuario actúa como un interprete de comandos que introduce el usuario y realiza las acciones oportunas en respuesta. Estos programas denominados shell son el modo de trabajo en los sistemas Unix incluido Linux. Es un programa que siempre esta en ejecución. El shell lee las ordenes suministradas, las decodifica y lo comunica al núcleo para realizar la acción especificada. No obstante, casi todas las distribuciones recientes incluyen el sistema X Window (no X Windows), el cual es el encargado de controlar y manejar la interfaz del usuario. X Window es mucho más poderoso y que otros entornos similares como Microsoft Windows, puesto que permite que el usuario tenga un control absoluto de los elementos gráficos. El shell puede constar, en total, de unas 200.000 líneas en código C. Los componentes del sistema operativo pueden verse de forma jerárquica en la figura siguiente: Algunos comandos básicos del usuario en Linux: Date: muestra la fecha del sistema. Date −u: mddhhhhaa cambia la fecha del sistema, ej. 1202120095 es igual a mes 12, día 02, hora 12:00 y año 1995. Logout, login y^D: salen 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 ami: lista tu nombre. who you are: lista tu nombre. mail nombre: envía correo, se finaliza escribiendo un punto en una línea sola. whereis: permite encontrar el lugar donde se encuentra algún programa. whatis: informa brevemente para que sirve un programa. mail: visualiza tu correo. ls: lista directorios y ficheros. 8 cp file : copia ficheros. rm file: borra ficheros. mv file: mueve o cambia de nombre. mkdir: crea un directorio. pwd: muestra el directorio actual. cd: cambia de directorio. rmdir: borra un directorio. reboot: reinicia el computador. vi: permite invocar un procesador de textos . clear: este comando limpia la consola. man: imprime la pagina del comando deseado. emacs: permite crear un texto. exit: permite terminar el trabajo como un usuario en particular. mount: se emplea para tener acceso a unidades. unmount: cuando el usuario a terminado de utilizar el disco (en Linux las unidades de disco deben ser desmontadas antes de ser extraídas de la unidad). Startx: lanza el gestor de ventanas de X Window. Clasificación de los usuarios en UNIX. Unix es un sistema operativo multitarea y multiusuario, por lo que se deben establecer ciertos mecanismos de tal manera que, simultáneamente, se protejan los datos de un usuario frente a otros y estos puedan ser compartidos en caso necesario. Unix posee un mecanismo de permisos asociados a cada fichero. Este mecanismo permite que los ficheros y directorios pertenezcan a un usuario en particular. Unix también permite que los ficheros sean compartidos entre usuarios en particular. El comportamiento por defecto en la mayoría es que todos los usuarios pueden leer los ficheros de otro usuario pero no pueden modificarlos o borrarlos. Los grupos de usuarios se definen normalmente en función al tipo de usuario. Cada usuario (perteneciente a un grupo) tiene asociado un nombre, una palabra clave o password, un directorio y un proceso de arranque: • Nombre: identificación del usuario cuando entra en la máquina (login). • Clave: palabra oculta que solo conoce el usuario. • UDI, GID: números de identificación de usuarios de grupos, respectivamente. • Directorio: directorio inicial donde se situara el usuario al entrar en el sistema. • Proceso: primer proceso que se arranca una vez dentro del sistema. 9 ♦ Diferentes categorías de usuarios en función de sus privilegios (lo que puede y no puede hacer): • Superusuario o root: es el administrador del sistema. Tiene todos los privilegios. • Usuarios normales: el resto de usuarios que pertenecen a distintos grupos, los cuales pueden tener una serie de propiedades comunes. • Usuarios especiales: asignados a tareas específicas por el sistema, generalmente de información o manejo de aplicaciones ya instaladas de uso común a usuarios externos o internos. Por ejemplo: mail (se encarga de recoger el correo y repartirlo a los diferentes usuarios), lp (se encarga de aceptar trabajos de impresión y mandarlos a la impresora), bin, admin. Desde el punto de vista del usuario el carácter u significa el propio usuario, significa el conjunto de usuarios que pertenecen a su mismo grupo, o significa el resto de usuarios. Estos caracteres serán reconocidos por ciertos comandos u órdenes. Al contrario de lo que ocurre en Microsoft Windows la instalación de Linux no es un proceso sencillo, puesto que Linux permite el control y la personalización de una cantidad mayor de parámetros y opciones. Pese a todo se están realizando una serie de trabajos buscando que la instalación de Linux sea un proceso lo menos traumático posible, dependiendo la sencillez de la distribución que se emplee. Antes de proceder a instalar Linux es necesario tener en cuenta una serie de aspectos fundamentales. El primero de ellos es leer la información del CD de instalación, esta puede aparecer en dos formas distintas, los llamados HOWTO o en forma de manuales desarrollados para la distribución. Uno de los conceptos principales que se debe tener en cuenta antes de la instalación es el de partición. Cada S.O. organiza la información utilizando cada uno su propio sistema de archivos, como se muestra a continuación: Sistema Operativo Sistema de archivos MS−DOS FAT MS Windows 95 VFAT MS Windows 98 FAT32 MS Windows NT NTFS IBM OS/2 Warp HPFS Linux Ext2 Esto en general impide que se puedan instalar varios sistemas operativos mezclados en un mismo disco duro. Para solucionar este problema existen las llamadas particiones con las que se divide un determinado disco duro de forma que pueda contener ambos sistemas de archivos. A todos los efectos una partición equivale a que el disco se divida en dos (aunque por supuesto no se divide en forma física). Los problemas fundamentales al instalar Linux es que el usuario desea conservar Windows y todos los programas para este sistema. Aunque en la actualidad existen varias distribuciones que permiten la instalación de Linux en un sistema de archivos de Windows lo más recomendable es instalar ambos sistemas en particiones diferentes. Hasta épocas recientes esto suponía la perdida total e inevitable de toda la información que contuviese el disco duro. En la actualidad las distribuciones de Linux incluyen una pequeña utilidad 10 llamada fips que permite dividir el disco sin perder información. Tras emplear fips habrá reducido el tamaño de la partición de Windows y se habrá creado una nueva para ser utilizada en Linux. Durante el proceso de instalación de Linux habrá que borrar la partición creada por fips y sustituirla por las particiones que va a emplear Linux. Otro de los puntos a tener en cuenta es como se quiere arrancar Linux si existe Windows, la forma más sencilla es instalar LILO, un programa que se encarga de arrancar ambos sistemas operativos según lo que indique el usuario al arrancar le PC. Los problemas surgen si hay que reinstalar Windows de nuevo, puesto que el sistema el sistema operativo asume el control del PC y el sistema de arranque eliminando LILO (e impidiendo arrancar Linux). Otra forma muy sencilla es emplear el disquete de arranque que se crea durante la instalación. Por ultimo existe otro concepto fundamental a la hora de instalar y usar Linux que es el de Súper Usuario o usuario Root. Este usuario es el administrador del sistema y se crea durante la instalación. Como administrador tiene acceso a toda la información del sistema, por lo que hay que evitar en la medida de lo posible trabajar como root... Detalles de instalación de Linux (Red Hat) Lo primero que hay que configurar es el modo de arranque del computador para que arranque directamente desde el CD. Para ello ingresamos al programa de configuración del computador (setup) presionando al momento de arranque la tecla <del> o <supr>. Luego escogemos el tipo de instalación que deseemos siempre es más recomendable una instalación en modo texto ya que al instalarlo de forma grafica podría no iniciase en caso de que la tarjeta de video no sea reconocida por el sistema. Elegimos el tipo de distribución que corresponda al teclado de nuestra maquina, luego el tipo de instalación (para los nuevos en este tipo de trabajos siempre es recomendable la custom <personalizada>), lo siguiente es el paso mas importante la creación de particiones del disco. En Linux es necesario crear particiones, las diferentes particiones en Linux no se denominan C:, D:, E:, etc existe un denominación propia. • Particiones en Linux. Los discos duros de IDE se identifican por hd (hard disk), y de acuerdo con la posición en las correas de IDE tienen las siguiente identificación: • /dev/hda: disco duro que corresponde al maestro primario (IDE1). • /dev/hdb: disco duro correspondiente al esclavo primario (IDE1). • /dev/hdc: disco duro que corresponde al maestro secundario (IDE2). • /dev/hdd: disco duro correspondiente al esclavo secundario (IDE2). La particiones que se hagan dentro de cada uno de estos dispositivos se enumera en la siguiente forma: • del 1 al 4 para particiones primarias (en Linux pueden existir hasta 4 particiones primarias) dejando uno de ellos para partición extendida si se desea. • del 5 en adelante para las unidades lógicas de la partición extendida. 11 Una partición primaria o una unidad logica no esta en capacidad de almacenar información hasta que hasta que no se definido para ella el tipo de sistema de archivos, como se menciono anteriormente en Linux se llama ext2. En Linux necesitamos crear al menos dos particiones, una para el sistema y otra para Swap. Usualmente se suelen tener tres, una para el sistema /, otra para los datos /home y otra para Swap. ¿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. Creando Swap. Para tal fin empleamos Fdisk o en caso de Red Hat tomamos una llamada Disk Druid. La primera partición que crearemos será la de tipo Swap con el fin de luego crear la Root. La Swap no requiere de ningún tipo de montaje ya que es solamente accedida por la RAM, nosotros no necesitamos acceder a dicha información. El tamaño de esta partición debe ser igual al doble de RAM que posea nuestro PC (en computadores con más de 128 mb este tamaño puede ser igual al tamaño puede ser igual a la cantidad de RAM del equipo). Creando Root. El procedimiento para esta partición es prácticamente el mismo que para la Swap. A esta partición le asignaremos el tamaño total del disco y el punto de montaje será /. Esta partición debe ser activada. Si el disco no ha sido formateado es necesario formatear la recién/ creada partición /, lo mas aconsejable es hacerlo ya que de esa forma aseguramos la integridad de garantizar la integridad de los datos. Iniciación a Linux Existen tres formas de acceder a un sistema Linux: • A través de una consola de texto, el usuario se conecta directamente al ordenador que tiene instalado Linux y accede mediante un sistema no gráfico. • Desde un gestor de sesiones gráfico (X window), el usuario se conecta directamente al ordenador que tiene instalado Linux y accede al sistema mediante un programa gráfico. • Desde un ordenador remoto mediante telnet o secure shell. En cualquiera de estos casos en pantalla aparecerá (más o menos) lo siguiente: Login: (se teclea el nombre de usuario) Password: ( se teclea la contraseña) La estructura del sistema de archivos en Linux es jerárquica como se muestra: El directorio /dev. Contiene la representación, por medio de archivos, de los dispositivos que se encuentran conectados al sistema: discos duros, unidades de floppy disk, puertos seriales y puertos paralelos, entre otros. Estos archivos 12 son esenciales para el correcto funcionamiento del computador. El directorio /etc. Contiene los archivos de configuración del sistema, es decir, aquellos que definen, por ejemplo, el funcionamiento del servidor de correo, del monitor y de la tarjeta de video, entre otros. El directorio /lib. El estándar dice que este directorio debe contener estrictamente aquellas librerías necesarias para el funcionamiento de los binarios que se encuentran en los directorios /bin y /sbin. Se llama binario en Linux a un programa que ya ha sido compilado y en espera de que se le ejecute. El directorio /proc. Contiene algunos archivos especiales que se comunican con el Kernell, enviando información hacia este y extrae información del mismo. El directorio /sbin. En el se almacenan los programas que solamente pueden ser empleados por el administrador del sistema (root). El directorio /usr. Este directorio puede tener su propia partición (la cual hay que crear al momento de la instalación de Linux por medio de fdisk o disk druid). El directorio /var. Aquí se almacenan algunos archivos de tipo temporal, o que informan sobre actividades administrativas o solo la carga del sistema y sus programas. El directorio /home. En este directorio se almacenan las casa de los usuarios del sistema (a excepción de root); además también pueden estar aquí los archivos correspondientes a la publicación en el web: /home/http; la transferencia de archivos: /home/ftp. El directorio /root. Es la casa del administrador del sistema, en la cual sólo él define qué debe guardar. A llegado el momento de conocer la otra cara de Linux, una cara más amigable y que nos ayudará a incrementar nuestra productividad y a sacar el máximo de este sistema operativo. Unix emplea una herramienta grafica de mucha utilidad llamada X Window, como se menciono anteriormente. Este sistema se instala como una opción más o se instala automáticamente. Xfree86 es la versión de X Window disponible en Linux. Es una colección de servidores para sistemas operativos similares a Unix que funciona con procesadores 386 en adelante. Gestores de ventana y escritorios 13 Un gestor de ventanas es el programa encargado de generar y manejar las ventanas y demás recursos gráficos que configuran la IGU(Interfase Grafica del Usuario);la forma en que lo depende de la filosofía con la cual se halla diseñado. Cuando introducimos startx lo primero que hace es determinar el gestor de ventanas que quiere utilizar, para luego lanzarlo, cuado se encuentra activo, las ventanas aparecen en la forma en que nos gusta verlas. Además de los gestores existen los escritorios. La diferencia es que el primero se encarga de la creación y manipulación de la IGU y el segundo proporciona al usuario una serie de aplicaciones de utilidad para el trabajo diario el usuario. Las diferencias entre estos dos escritorios son muy simples. Cada uno tiene sus fortalezas y debilidades y cada uno también tiene su historia de desarrollo bastante larga (en caso de KDE es un proyecto que lleva más de 6 años). Entorno gráfico KDE Entorno gráfico Gnome Consejos para novatos en UNIX Instalar y utilizar su propio sistema Linux no requiere grandes conocimientos de UNIX. De hecho, muchos novatos de UNIX instalan con éxito sus sistemas. Es una experiencia de la que se aprende, pero de la que se pueden generar fustraciones. Si tiene suerte, podrá instalar y usar Linux sin conocimiento alguno de UNIX. Sin embargo, cuando quiera introducirse en tareas más complejas (instalar nuevo software, recompilar el núcleo, etc.) el conocimiento de UNIX empieza a ser necesario. Por suerte, ejecutando su propio sistema Linux podrá aprender las cosas esenciales de UNIX para llevar a cabo esas tareas. Quizás le parezca interesante leer esos capítulos antes de instalar Linux. En este caso, se ahorrará algunos problemas. Nadie puede esperar hacerse experto administrador de la noche a la mañana. No hay implementación alguna que esté libre de mantenimiento. Por lo tanto, prepárese si es novato, pero no se desespere ante los problemas. Linux es una excelente elección para trabajar con UNIX a nivel personal. El mismo permite desarrollar y probar el software dicho software en nuestra 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 este es también una excelente manera de aprender UNIX si no se tiene acceso a otras máquinas con este sistema. 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 este sistema operativo 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. 19 14 Procesos Caparazón o Shell Núcleo o Kernel Hardware 15