Está en la página 1de 177

Introduccin a LINUX

OBJETIVOS Brindar los conocimientos bsicos para la utilizacin del sistema operativo LINUX y preparar al alumno para el examen de certificacin LPI 101 Linux Certified Assistance. AUDIENCIA Estudiantes y profesionales de sistemas, administradores y desarrolladores de sistemas REQUISITOS Conocimientos bsicos de algn sistema operativo DURACION 27 hs TEMARIO 1.0 Instalacin de LINUX 1.1 - Historia de LINUX y GNU 1.2 - Distribuciones de LINUX 1.3 - Conociendo el Hardware 1.4 - Instalacin de Linux 1.5 - Esquemas de particionamiento 1.6 - Boot Managers 2.0 Introduccin al Shell 2.1 - Uso de la lnea de comandos 2.2 - Variables de entorno 2.3 - Administracin de procesos. Prioridades

3.0 Instalacin de Software 3.1 - Red Hat Package Manager 3.2 - Debian Package Manager 3.3 - Instalacin de software a partir del cdigo fuente

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

4.0 Procesamiento de texto 4.1 Redireccionamiento y tuberas 4.2 - Modificacin de textos con filtros 4.3 - Bsquedas usando expresiones regulares 5.0 Sistemas de Archivos 5.1 - Visin general del sistema de archivos de LINUX 5.2 - Creacin de particiones y de sistemas de archivos 5.3 - Inspeccin y verificacin del sistema de archivos 5.4 - Montaje y desmontaje de sistemas de archivos 6.0 Administracin de archivos 6.1 - Comandos para administracin de archivos 6.2 - Jerarqua del sistema de archivos 6.3 - Localizacin de archivos 6.4 - Enlaces 6.5 Permisos, usuarios y grupos 6.6 - Herramientas de compresin 6.7 - Administracin de cotas 7.0 Uso de la Documentacin 7.1 - Comando man 7.2 - Uso de la documentacin de /usr/doc 7.3 - Documentacin en Internet 8.0 Proceso de Arranque 8.1 - Uso de LILO y GRUB 8.2 - INIT. Niveles de ejecucin 8.3 - Configuracin del proceso de arranque 9.0 El Sistema X Window 9.1 - El lanzamiento X11R6.8 9.2 - Entornos de escritorio y gestores de ventanas 9.3 - Archivos de configuracin del servidor X 9.4 - Fuentes 9.5 - Niveles de ejecucin y X 9.6 - Recursos adicionales

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

1. Instalacin de LINUX
1.1 - Historia de LINUX y GNU

El autor primario de Linux es Linus Torvalds. A partir de la version original, ha sido mejorado por incontables personas de todo el mundo. Se trata de un clon del sistema operativo Unix, escrito desde cero. Ni USL, ni la Universidad de California, Berkeley, tuvieron participacion en la escritura de Linux. Una de las cosas mas interesantes de Linux es que el desarrollo ocurre simultaneamente alrededor del mundo. La gente ha contribudo desde Australia a Finlandia y esperamos que lo siga haciendo. Linux comenzo como un proyecto para explorar el chip 386. Uno de los primeros proyectos de Linus fue un programa que pueda alternar entre la impresion de AAAA y BBBB . Esto luego evoluciono hacia Linux. Linux ha sido registrado bajo los terminos de la Licencia Publica General GNU (GNU General Public License) o GPL. Esta licencia, escrita por la Free Software Foundation (FSF), esta diseada para evitar que alguna persona restrinja la distribucion de software. En pocas palabras, dice que aunque Ud. cobre a alguien por entregarle una copia, no podra impedir que ese alguien la regale. Tambien significa que debe estar disponible el codigo fuente4 . Esto es util para los programadores. Cualquiera puede modicar Linux y aun distribuir sus modicaciones, siempre que mantenga el codigo bajo la misma licencia. En Linux puede correr la mayora del software popular en Unix, incluyendo el Sistema de Ventanas X. X se desarrollo en el Instituto Tecnologico Massachusetts, para permitir a los sistemas Unix la creacion de ventanas gracas, y la comoda interaccion con las mismas. En la actualidad, el sistema X se usa en todas las versiones disponibles de Unix. Ademas de las dos variaciones de Unix, System V y BSD, existe un conjunto de documentos de estandarizacion publicados por la IEEE denominados POSIX . Linux antes que nada satisface los documentos POSIX-1 y POSIX-2. Su apariencia se asemeja mucho a la de BSD en ciertas partes, mientras que es parecido a System V en otras. Es una combinacion (y para la mayora de las personas, una buena) de los tres estandares. Algunas de las utilidades includas con las distribuciones de Linux proceden de la Free Software Foundation y son parte del proyecto GNU. El proyecto GNU es un esfuerzo para escribir un avanzado sistema operativo portable con el estilo de Unix. \Portable" signica que pueda correr en una variedad de maquinas distintas, no solo en PCs Intel, Macintoshes, o lo que sea. El sistema operativo del Proyecto GNU se llama Hurd. La principal diferencia entre el Linux y el GNU Hurd no se encuentra en la interfaz del usuario, sino en la del programador |el Hurd es un sistema operativo moderno, mientras que Linux es mas parecido al dise~no original de Unix. La historia precedente de Linux olvida mencionar otra persona mas alla de Linus Torvalds. Por ejemplo, H. J. Lu se ha ocupado de mantener gcc y la biblioteca C de Linux (dos elementos necesarios para todos los programas en Linux) casi desde el principio de la vida del sistema operativo. Ud. puede encontrar una lista de personas que merecen reconocimiento por su trabajo en cada sistema Linux, en el archivo /usr/src/linux/CREDITS .

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

1.2 - Distribuciones de LINUX

QU ES UNA DISTRIBUCIN DE LINUX? Como se dijo antes, en realidad Linux es solo un kernel, es decir, el ncleo del sistema operativo. Para que este ncleo sea de utilidad como un sistema operativo, el kernel se utiliza con otros programas que permiten poder interactuar con la mquina. Si se quiere ver de esta forma, esto es el equivalente de lo que se distribuye con "el disco de Windows". Pero en Linux se va un paso ms all: no solo se distribuye un sistema mnimo, con el cual usualmente "no se puede hacer nada", sino que adicionalmente se "empacan" otros programas de utilidades, aplicaciones, juegos, etc, para conformar lo que se conoce como una distribucin de Linux. As existe una cantidad bastante grande de distribuciones de Linux. Las diferencias entre una distribucin y otra son muy variadas pero derivan principalmente de los objetivos buscados y la forma en la que se implementan estos objetivos: facilidad de instalacin, optimizadas para usuarios caseros, diseadas para funcionar como firewalls, etc. y los paquetes (aplicaciones) incluidas. Entre las distribuciones ms usadas en Costa Rica, segn las estadsticas pasadas de boca en boca, se encuentran: Debian GNU/Linux. Cuenta con ms de 9000 paquetes, cada uno para para 11 arquitecturas distintas, y es desarrollada por casi un millar de programadores en todo el mundo, los cuales se mantienen en contacto por medio de Internet. Su objetivo es desarrollar un sistema operativo que se distinga por su excelencia tcnica, y que est basado en software libre. El proyecto Debian, dentro del cual se desarrolla esta distribucin, fue donde se originaron los lineamientos de Software Libre de Debian, los cuales son la base de la definicin de Cdigo Abierto (OSD). Debido a que Debian no es una compaa, el soporte tcnico (pagado) es provisto por terceros. Mandrake Linux. Es la distribucin basada en RedHat que ms xito ha tenido. Su desarrollo se origin a partir de opiniones divergentes respecto a qu hacer con KDE (en trminos de su integracin en RedHat), optimizaciones especficas para procesadores Pentium, el proceso de instalacin y otros temas. RedHat Linux. Es una distribucin comercial, y fue en gran parte la responsable de introducir Linux en el mundo corporativo. Se orienta ms que todo hacia la produccin de una distribucin que sea fcil de instalar y administrar, para lo cual han fundado el desarrollo de varios proyectos orientados a este fin. Adems brinda soporte tcnico (pagado) en forma directa.

Slackware Linux. Es una de las distribuciones ms antiguas y respetadas. En un inicio fue desarrollada completamente por una persona, Patrick Volkerding, y actualmente esto es bsicamente an as. La opinin generalizada es que Slackware es algo difcil de instalar y algo difcil de utilizar, pero eso es con certeza una exageracin: Slackware puede ser tan difcil como uno guste... y a todo esto, qu quiere decir Slackware? Es posible que el nombre est relacionado con la acepcin corriente de slack (eliminar tensin), pero es ms probable que sea una referencia a la teologa de la Iglesia del SubGenio (Church of the SubGenius), que dice que slack es la materia prima de la que se origina la felicidad humana

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

1.3 - Conociendo el Hardware

Conoce tu hardware ! Uno de los puntos fuertes de GNU/Linux es su versatilidad, pudiendo instalarse sobre gran variedad de plataformas distintas, reconociendo gran variedad de hardware. Esta labor de reconocimiento de hardware se debe a los programadores encargados de mantener el kernel, que van aadiendo parches segun aparecen nuevos dispositivos, muchas veces sin la colaboracin del fabricante. En la prctica esto quiere decir que posiblemente podrs instalar linux sin ningun problema, incluso sobre ordenadores antiguos; la posibilidad de dificultades aumenta si se trata de dispositivos de ltima generacin, por una mera cuestin de tiempo. Ningun fabricante en su sano juicio lanzara al mercado un dispositivo sin contar con soporte previo para Windows, pero desgraciadamente el soporte para GNU/Linux suele ser descuidado, asi que estos novisimos dispositivos pueden no ser reconocidos automticamente durante la instalacin. Normalmente ser un problema temporal, hasta que los desarrolladores del kernel tengan oportunidad de figurarse como dar soporte. El caso winmodem Un winmodem es un modem controlado por software, designado para trabajar unicamente en sistemas operativos windows. Si tienes una cosa de esas en tu ordenador, es prcticamente imposible que puedas conectarlo a internet bajo GNU/Linux. Como saber si te han vendido un winmodem en lugar de un modem autntico? fcil. Si tu modem es interno, prcticamente seguro que es un winmodem. Si por el contrario es externo, se tratar de un modem hardware que posiblemente podrs conectar. Con diferencia la forma mas sencilla de conectar tu ordenador a internet es mediante una tarjeta ethernet y un router externo. El caso SATA Durante muchos aos los discos duros han funcionado con controladoras ATA (IDE), si bien ltimamente cada vez mas ordenadores van incorporando controladoras SATA, o Serial ATA. GNU/Linux soporta variantes de SATA desde siempre, si bien por el problema indicado anteriormente, algunos nuevos controladores no son reconocidos. Si es tu caso, la solucin pasa por usar tu nuevo disco SATA en modo ATA, o bien parchear el kernel con el driver apropiado a la controladora SATA requerida en tu caso ... o esperar a que los parches vayan aterrizando en el kernel y apareciendo en las nuevas distribuciones linux SATA AHCI Uno de los casos comentados es la nueva controladora AHCI ("Advanced Host Controller Interface") de 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

intel, que puedes encontrar, por ejemplo, en las series DELL 8400, que vienen con discos SATA y controladoras SATA AHCI (ICH6). La Arquitectura AHCI es abierta, y ha recibido elogios de los desarrolladores del kernel, por lo que es de esperar que prximamente sea incorporada al kernel. Mientras tanto, la opcin mas sencilla es instalar tu HD como ATA: 1. 2. 3. 4. Reinicia el ordenador y entra en la BIOS (F2) En el menu de la BIOS selecciona "Drives" -> "SATA Operation" Posiblemente veas seleccionada la opcin AHCI. Selecciona en su lugar "RAID Autodetect/ATA" Graba los cambios y continua con el arranque del ordenador

Por supuesto, si tienes en tu sistema doble arranque, para GNU/Linux y windows, cada vez que quieras reiniciar con otro sistema operativo debers pasar por la BIOS y deshacer los cambios, de forma que Windows use el controlador AHCI y Linux ATA. Se trata de una solucin temporal hasta que exista soporte AHCI disponible.

1.4 - Instalacin de Linux


http://www.gentoo.org/doc/es/index.xml http://www.es.debian.org/releases/stable/i386/index.html.es http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/es/ http://www.guia-ubuntu.org/index.php?title=Instalaci%C3%B3n_est%C3%A1ndar http://www.slackware-es.com/slackbook/book.html

1.5 - Esquemas de particionamiento

Dispositivos de Bloque Examinaremos de forma detallada los aspectos de Gentoo Linux as como Linux en general que tengan que ver con discos, sistemas de ficheros de Linux, particiones y dispositivos de bloque. Una vez est familiarizado con las entraas de los discos y sistemas de ficheros, le guiaremos a travs del proceso de creacin de particiones y sistemas de ficheros de tu instalacin Gentoo Linux. Para empezar, explicaremos el trmino dispositivos de bloque. Quizs el dispositivo de bloque ms conocido es el que representa la primera unidad de disco llamada /dev/sda. Las unidades SCSI y Serial ATA son etiquetadas mediante /dev/sd*; incluso las unidades IDE son conocidas como /dev/sd* con el nuevo framework libata del kernel. Si est utilizando el antigo framework de unidades, entonces la primera unidad IDE ser /dev/hda. Los dispositivos de bloque mencionados anteriormente representan una interfaz abstracta de disco. Las aplicaciones pueden hacer uso de estas interfaces para interactuar con el disco duro de la mquina sin importar el tipo de unidad que tienes: IDE, SCSI, o cualquier otra. La aplicacin puede simplemente 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

dirigirse al almacenamiento en el disco como a una serie de bloques de acceso aleatorio de 512-bytes situados de forma contigua.

Particiones Aunque tericamente es posible utilizar el disco duro completo para albergar la instalacin Linux, esto casi nunca se hace. En su lugar, los dispositivos de bloque enteros se dividen en partes ms manejables y pequeas. En los sistemas stas se llaman particiones. Particiones se dividen en tres tipos: primarias, extendidas y lgicas. La particin primaria es aquella que almacena su informacin en el MBR (registro principal de arranque). Ya que el MBR puede almacenar hasta 512 bytes, slo pueden definirse cuatro particiones primarias (por ejemplo, desde /dev/sda1 hasta /dev/sda4). Una particin extendida es una particin primaria especial (entendemos que la particin extendida debe ser una de las cuatro posibles particiones primarias) la cual contiene ms particiones. Al principio no exista este tipo de particin, pero como cuatro primarias eran muy pocas, se dise para extender el esquema de particionamiento sin perder la compatibilidad inversa. Una particin lgica es aquella que est dentro de la particin extendida. En otras palabras, estas particiones no se definen dentro del MBR, sino que se declaran dentro de la particin extendida.

Diseando un Esquema de Particionamiento Esquema de Particionamiento por Defecto Si no est interesado en disear un esquema de particionamiento particular para tu sistema, puede hacer uso del esquema que utilizaremos en este manual: Particin /dev/sda1 /dev/sda2 /dev/sda3 Sistema de Ficheros ext2 (swap) ext3 Tamao 32M 512M El resto del disco Descripcin Particin de arranque Particin de intercambio Particin de raz

Cuntas? y de qu tamao? El nmero de particiones que necesita depende mucho de su entorno particular. Por ejemplo, si la mquina tiene muchos usuarios, lo ms probable es que desee tener /home en una particin separada para facilitar las tareas de copia de respaldo y aumentar la seguridad. Si est instalando Gentoo para funcionar como servidor de correo, debe tener /var sobre una particin separada ya que es all dnde se 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

almacena todo el correo. Asimismo, una buena eleccin de sistema de ficheros optimizar el rendimiento del equipo. Las estaciones de juegos deben disponer de una particin /opt ya que la mayora de juegos se instalan en ese directorio. Las razones para todas estas recomendaciones son similares a aquellas que hemos mencionado para el caso de /home: seguridad y salvaguarda de datos. Muy recomendable mantener /usr con un tamao considerable: no salemente contiene la mayor parte de las aplicaciones sino que adems el propio rbol de Portage ocupa sobre unos 500 Mbytes sin contar las fuentes que guarda dentro de l. Como puede ver, todo depende de lo que quiera conseguir. Tener particiones o volmenes separados tiene las siguientes ventajas: Puede elegir el mejor sistema de ficheros para cada particin o volumen El equipo en su totalidad no puede quedar sin espacio si una herramienta o aplicacin est escribiendo datos de forma continua al volumen o particin Si es el caso, el tiempo dedicado a las comprobaciones de integridad de sistemas de fichero se reduce ya que las comprobaciones pueden ser llevadas acabo en paralelo (sin embargo esta ventaja es mayor con mltiples discos que con mltiples particiones) La seguridad puede ser aumentada montando algunas de las particiones en modo slo lectura, nosuid (los setuid bits se ignoran), noexec (los bits de ejecucin se ignoran), etc. Pero, tener mltiples particiones tiene una gran desventaja: si la configuracin no es la adecuada, puede acabar teniendo mucho espacio libre en una de las particiones y quedarse sin espacio en otras. Adems, existe un lmite de 15 particiones para SCSI y SATA. Como ejemplo de un esquema de particionamiento utilizaremos un disco duro de 20 Gb de un porttil para fines de demostracin (incluye servidor web, servidor de correo, gnome, etc.): Ejemplo de particionamiento $ df -h Filesystem Type Size Used Avail Use% /dev/sda5 ext3 509M 132M 351M 28% /dev/sda2 ext3 5.0G 3.0G 1.8G 63% /dev/sda7 ext3 7.9G 6.2G 1.3G 83% /dev/sda8 ext3 1011M 483M 477M 51% /dev/sda9 ext3 2.0G 607M 1.3G 32% /dev/sda1 ext2 51M 17M 31M 36% /dev/sda6 swap 516M 12M 504M 2% (Espacio sin particionar para uso futuro: 2

Mounted on / /home /usr /opt /var /boot <not mounted> Gb)

/usr parece estar bastante llena (83%), pero una vez que todo el software est instalado no tiende a llenarse ms. Aunque asignar unos cuantos gigabytes de espacio a /var puede parecer excesivo, recuerde que Portgae utiliza esta particin por defecto para compilar paquetes. Si se quiere mantener /var de un tamao razonable, cmo 1 GB, necesitar modificar su variable PORTAGE_TMPDIR en /etc/make.conf para que apunte a una particin con espacio libre suficiente para compilar paquetes muy grandes como OpenOffice. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Utilizando fdisk para particionar su disco Las siguientes instrucciones explican como particionar el disco duro segn el esquema descrito anteriormente: Particin Descripcin /dev/sda1 Particin de arranque (boot) /dev/sda2 Particin de intercambio (swap) /dev/sda3 Particin de raz (root) Cambie el esquema de particionamiento segn su propio criterio. Examinando el Esquema de Particionamiento Actual fdisk es una herramienta potente y bastante popular que permite dividir el disco en particiones. Arranca fdisk sobre tu unidad de disco (en nuestro ejemplo usamos el dispositivo de disco /dev/sda):: Ejecutar fdisk # fdisk /dev/sda Una vez que fdisk est en ejecucin, el programa ofrecer el siguiente smbolo de comandos: Smbolo de espera de rdenes de fdisk Command (m for help): Teclee p para mostrar el esquema de particionamiento actual: Un ejemplo sobre configuracin de particiones Command (m for help): p Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders Units = cylinders of 15120 * 512 bytes Device Boot /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4 /dev/sda5 /dev/sda6 /dev/sda7 /dev/sda8 /dev/sda9 Start 1 15 50 71 71 210 349 627 905 End 14 49 70 2184 209 348 626 904 2184 Blocks Id 105808+ 264600 158760 15981840 1050808+ 1050808+ 2101648+ 2101648+ 9676768+ System 83 Linux 82 Linux swap 83 Linux 5 Extended 83 Linux 83 Linux 83 Linux 83 Linux 83 Linux Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

25 de Mayo 445 Piso 2 (1002) Bs.As.

Command (m for help):

Este disco en particular est configurado para albergar siete sistemas de ficheros Linux, cada uno con su correspondiente particin con la etiqueta "Linux", as como una particin de intercambio (swap) que aparece con la etiqueta "Linux swap". Eliminacin de todas las Particiones Primero eliminaremos todas las particiones existentes en el disco. Teclee d para eliminar una particin, seguido por intro. Por ejemplo, para borrar una particin existente en /dev/sda1: Eliminar una particin > Command (m for help): d Partition number (1-4): 1 La particin ha sido marcada para su borrado. Ya no aparecer si teclea p, pero no ser eliminada hasta que guarde los cambios realizados. Si comete una equivocacin y desea abortar los cambios realizados, teclee q inmediatamente y pulse intro; las particiones no sern eliminadas. Ahora, asumiendo que intenta eliminar todas las particiones existentes del disco duro, debe teclear p en forma repetida para ver el listado de particiones y pulsar d junto con el nmero de la particin para borrarlas. Finalmente, acabar teniendo una tabla de particiones vaca: Una tabla de particiones vaca Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot Start End Blocks Id System

Command (m for help): Ahora que la tabla de particiones en memoria del sistema est vaca, estamos preparados para crear nuevas particiones. Utilizaremos el esquema por defecto, tal como hemos acordado anteriormente. Claro est, que no debe seguir estas instrucciones al pe de la letra si no desea tener una tabla de particiones exactamente igual que la nuestra!

Creacin de una Particin de Arranque En primer lugar debemos crear una pequea particin de arranque. Teclee n para crear esta nueva 25 de Mayo 445 Piso 2 Tel 43132484 /2486/2475 (1002) Bs.As. opensource@osi-sistemas.com.ar

particin, y luego p para seleccionar una particin primaria, siguiendo por 1 para elegirla como primera particin primaria. Cuando el sistema solicite introducir el primer cilindro, pulse intro y cuando pida definir el valor del ltimo cilindro, teclee +32M para crear una particin de tamao 32 Mb.:: Crear una particin de arranque Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-3876, default 1): (Hit Enter) Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M Si ahora teclea p, debe ver la siguiente particin en la tabla: Una particin creada Command (m for help): p Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot /dev/sda1 Start 1 End 14 Blocks 105808+ Id 83 System Linux

Necesitamos hacer que esta particin sea arrancable. Teclee a para marcar esta particin como arrancable. Si introduce p de nuevo, ver que el * ha aparecido en la columna "Boot".

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Creacin de una Particin de Intercambio Vamos a crear ahora la particin de intercambio. Para hacerlo, teclee n para crear una nueva particin, y luego p para comunicar a fdisk que debe ser una particin primaria. Entonces teclee 2 para crear la segunda particin primaria, /dev/sda2 en nuestro caso. Cuando el sistema solicite introducir el valor del primer cilindro, pulse intro y cuando solicite introducir el valor del ltimo, teclee +512M para crear una particin de 512 Mb. Cuando lo haya hecho, teclee t para establecer el tipo de particin, 2 para seleccionar la particin que acaba de crear y entonces 82 para fijar el tipo "Linux Swap". Una vez completados estos pasos la introduccin de p visualizar la tabla de particiones que debe ser similar a sta. Listado de particiones despus de la creacin de la particin de intercambio Command (m for help): p Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot /dev/sda1 * /dev/sda2 Start 1 15 End 14 81 Blocks 105808+ 506520 Id 83 82 System Linux Linux swap

Creacin de la Particin de Raz En el ltimo lugar, creamos la particin de raz. Introduzca n para crear la nueva particin, p para marcarla como particin primaria. A continuacin teclee 3 para crear la tercera particin primaria, /dev/sda3, segn nuestro ejemplo. Al solicitar la introduccin del valor del primer cilindro de la particin pulsamos intro, mientras que cuando el sistema solicite que introduzcamos el valor del ltimo cilindro, tambin le damos a intro para crear una particin que ocupe todo el espacio restante en el disco. Tras completar todos estos pasos, introducimos p para ver la tabla de particiones que debe parecer mucho a la siguiente: Listado de particiones despus de crear la particin de raz Command (m for help): p Disk /dev/sda: 30.0 GB, 30005821440 bytes 240 heads, 63 sectors/track, 3876 cylinders Units = cylinders of 15120 * 512 = 7741440 bytes Device Boot /dev/sda1 * /dev/sda2 /dev/sda3 Start 1 15 82 End 14 81 3876 Blocks 105808+ 506520 28690200 Id 83 82 83 System Linux Linux swap Linux Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

25 de Mayo 445 Piso 2 (1002) Bs.As.

Almacenamiento de la Tabla de Particiones Para guardar el esquema de particionamiento y salir del fdisk tecleamos w. Listado de Cdigo 3.10: Guardado y salida del fdisk Command (m for help): w Ahora que las particiones estn creadas, puede proseguir con la Creacin de Sistemas de Ficheros. Creacin de Sistemas de Ficheros Introduccin Ahora que ya tiene creadas las particiones, debe formatearlas para poder tener un sistema de ficheros. Si no le importa el tipo de sistema de ficheros que desee utilizar y est conforme con nuestra eleccin por defecto. Sistemas de ficheros El kernel de Linux soporta varios sistemas de ficheros. Explicaremos ext2, ext3, ResiserFS, XFS y JFS por ser los ms utilizados en sistemas Linux. ext2 es un sistema de ficheros Linux probado, pero no dispone de soporte para transacciones, lo que significa que las comprobaciones rutinarias al arrancar pueden tardar bastante tiempo. Ahora, hay muchas opciones alternativas, sistemas de ficheros de nueva generacin con soporte para transacciones cuya integridad puede ser verificada con mayor rapidez, por lo que gozan de mayor popularidad. Los sistemas de ficheros transaccionales previenen retrasos durante el reinicio del equipo, incluso cuando el sistema de ficheros est en un estado inconsistente. ext3 es la versin transaccional de ext2, que proporciona soporte para una rpida recuperacin adems de otros modos mejorados de funcionamiento como registro completo y ordenado de datos. Utiliza un rbol HTree como ndice que permite un alto rendimiento en casi todas las situaciones. En resumen, ext3 es un buen y fiable sistema de ficheros. JFS de IBM es un sistema de ficheros de alto rendimiento con soporte transaccional. JFS es un sistema de ficheros ligero, rpido y fiable, basado en un rbol B+ con un buen rendimiento bajo varias condiciones. ReiserFS es un sistema de ficheros B+ (basado en rboles balanceados) que tiene un gran rendimiento, especialmente cuando trata con mucho ficheros pequeos a costa de emplear ms ciclos de CPU. ReiserFS parece tener menos mantenimiento que otros sistemas de ficheros. XFS es un sistema de ficheros transaccional el cual viene con un juego de caractersticas robustas y est optimizado para ser escalable. XFS parece ser menos robusto ante fallos hardware. Creacin de Sistema de Ficheros en una Particin 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Para crear un sistema de ficheros en una particin o volumen existen herramientas especficas para cada sistema de ficheros: Sistema de Ficheros Comando de Creacin ext2 mke2fs ext3 mke2fs -j reiserfs mkreiserfs xfs mkfs.xfs jfs mkfs.jfs Por ejemplo, para formatear la particin de arranque (/dev/sda1 segn el ejemplo) en formato ext2 y la particin de raz (/dev/sda3 segn el ejemplo) en formato ext3, utilizara los siguientes comandos: Creacin de un sistema de ficheros en una particin # mke2fs /dev/sda1 # mke2fs -j /dev/sda3 Y ahora, puede crear sistemas de fichero sobre sus particiones o volmenes lgicos recin creados. Activando la Particin de Intercambio mkswap es el comando usado para inicializar particiones swap: Inicializacin de una particin de intercambio # mkswap /dev/sda2 Para activar la particin, usa el comando swapon: Activacin de una particin de intercambio # swapon /dev/sda2 Crea y activa tu particin de intercambio con los comandos mencionados arriba.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Introduccin

1.6 - Boot Managers

Ahora que su kernel est configurado y compilado y los archivos de configuracin necesarios han sido llenados correctamente, ha llegado la hora de instalar el programa que iniciar el kernel cuando arranque el sistema. Este programa es conocido como gestor de arranque. Para x86, disponemos de GRUB y LILO Pero antes de instalar un gestor de arranque, le informaremos sobre como configurar la memoria de imagen (framebuffer), siempre que usted quiera, claro. Con la memoria de imagen puede ejecutar la lnea de comandos de Linux con algunas caractersticas grficas (limitadas) como, por ejemplo, el empleo de un bonita imagen de Gentoo durante el inicio (bootsplash). Opcional: Memoria de imagen (Framebuffer) Si ha configurado su kernel con soporte framebuffer (o ha utilizado la configuracin predeterminada de genkernel) puede activarlo aadiendo el parmetro vga y/o video al archivo de configuracin del gestor de inicio. Lo primero que necesita es conocer que tipo de dispositivo de framebuffer est utilizando. Si est utilizando un kernel parcheado por Gentoo (como puede ser gentoo-sources) tiene la posibilidad de seleccionar uvesafb como tipo de controlador para vesa (VESA driver), Si este es el caso, est utilizando uvesafb y no necesita el parmetro vga. El parmetro vga controla la resolucin y la profundidad de color de su framebuffer utilizando vesafb. Como se indica en /usr/src/linux/Documentation/fb/vesafb.txt (el cual se instala cuando instalas un paquete con las fuentes del kernel) necesita pasar el nmero VESA correspondiente con la resolucin y profundidad de color que quiera. La siguiente lista muestra las resoluciones y profundidad de color disponibles y su correspondiente valor para el parmetro vga. 640x480 0x301 0x310 0x311 0x312 800x600 0x303 0x313 0x314 0x315 1024x768 0x305 0x316 0x317 0x318 1280x1024 0x307 0x319 0x31A 0x31B

256 32k 64k 16M

El parmetro video controla las opciones de visualizacin. Necesita que se le indique el controlador de framebuffer (vesafb para kernels 2.6, o vesa para kernels 2.4) seguido de los parmetro de control que quiera activar. Todas las variables se pueden encontrar en /usr/src/linux/Documentation/fb/vesafb.txt, pero aqu le informamos sobre las ms utilizadas: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Control Descripcin Asume que su tarjeta grfica puede volver sobre su memoria. (ej. continuar al principio cuando ywrap se aproxima al final) Configura los registros MTRR. n puede ser: 0 - desactivados 1 - no almacenables en cach mtrr:n 2 - write-back 3 - write-combining 4 - write-through (solamente uvesafb) Configura la resolucin, la profundidad de color y la tasa de refresco. Por ejemplo, mode 1024x768-32@85 para una resolucin de 1024x768, profundidad de color 32 bit y una tasa de refresco de 85 Hz.

El resultado de estas dos configuraciones podra ser algo como: vga=0x318 video=vesafb:mtrr:3,ywrap o video=uvesafb:mtrr:3,ywrap,1024x768-32@85. Recuerde (o anote) sta configuracin. La necesitar dentro de poco.

Usando GRUB Comprendiendo la terminologa de GRUB La parte ms crtica para la comprensin de GRUB, es el habituarse a la manera en que GRUB se refiere a los discos duros y las particiones. Su particin Linux /dev/sda1 es denominada (hd0,0) por GRUB. Note los parntesis alrededor de hd0,0, que son obligatorios. La numeracin de los discos duros comienza con un cero, en lugar de utilizar una "a" y las particiones empiezan con cero en lugar de con un uno. Advertimos tambin que entre los dispositivos hd, slo se cuentan los discos duros y no los dispositivos atapi-ide como cdroms y grabadoras. Adems, la especificacin es igual para dispositivos SCSI. (Usualmente son asignados nmeros mayores, excepto cuando el bios est configurada para arrancar desde los dispositivos scsi). Cuando se le indica la BIOS que arranque desde un disco duro diferente (por ejemplo, el esclavo primario), ese disco duro se ver como hd0. Asumiendo que tiene un disco duro en /dev/sda y dos ms en /dev/sdb y /dev/sdc, la particin /dev/sdd7 que descrita como (hd1,6). A lo mejor puede sonar raro y bien podra serlo, pero como veremos, GRUB ofrece un mecanismo de terminacin por tabulador que es de gran ayuda para los que tienen una gran cantidad de discos duros y que andan algo perdidos con este esquema de numeracin.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Aunque GRUB est instalado, todava necesitamos crear un archivo de configuracin para l e instalar GRUB en nuestro MBR para que pueda arrancar automticamente nuestro kernel recin creado. Cree el archivo /boot/grub/grub.conf con nano, o cualquier otro editor: Creando / modificando el archivo /boot/grub/grub.conf # vi -w /boot/grub/grub.conf Ahora vamos a escribir el grub.conf. A continuacin encontrar dos posibles archivos grub.conf para el ejemplo de particiones que manejamos en esta gua. Slo hemos comentado exhaustivamente el primer grub.conf. Asegrese de utilizar el nombre de su archivo de imagen del kernel y, si es necesario, el nombre de su imagen initrd. El primer grub.conf es para quienes no hayan usado genkernel para construir su kernel El segundo grub.conf es para quienes hayan utilizado genkernel para construir su kernel. Nota: Si su sistema de fichero para root es JFS, deber aadir " ro" a la lnea del kernel ya que JFS necesita leer su log antes de permitir montajes de lectura-escritura.

grub.conf para quienes no hayan usado genkernel # Cual ttulo arrancar por defecto. 0 es el primero, 1 el segundo, etc. default 0 # Cuantos segundos esperar antes de arrancar el ttulo por defecto. timeout 30 # Una bella, hermosa imagen para ensalzar las cosas un poco :) # Comntela si no tiene una tarjeta grfica instalada splashimage=(hd0,0)/boot/grub/splash.xpm.gz title Gentoo Linux 2.6.24-r5 # Particin donde se encuentra la imagen del kernel (o sistema operativo) root (hd0,0) kernel /boot/kernel-2.6.24-gentoo-r5 root=/dev/sda3 title Gentoo Linux 2.6.24-r5 (rescate) # Particin donde se encuentra la imagen del kernel (o sistema operativo) root (hd0,0) kernel /boot/kernel-2.6.24-gentoo-r5 root=/dev/sda3 init=/bin/bb

# Las siguientes cuatro lneas slo se usan en caso de arranque dual con un sistema W # En este caso, Windows reside en la particin /dev/sda6. title Windows XP rootnoverify (hd0,5) makeactive chainloader +1 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Nota: El parmetro udev que se menciona al final de la lnea del kernel es necesario para que funcione debido a algunos bugs en algunas versiones de genkernel si se utiliza udev en primera posicin (lo cual, viene definido por defecto).

Si se utiliza un esquema de particiones y/o imagen de kernel distinta, haga los ajustes respectivos. Sin embargo, asegrese que cualquier cosa que siga un dispositivo GRUB (tal como (hd0,0)) sea relativa al punto de montaje y no de la raz. En otras palabras, (hd0,0)/grub/splash.xpm.gz es en realidad /boot/grub/splash.xpm.gz ya que (hd0,0) es /boot. Adems, si se eligi utilizar un esquema de particionamiento diferente y no coloc /boot en una particin separada, el prefijo /boot empleado en los ejemplos anteriores, es realmente necesario. Si ha seguido el plan de particionamiento sugerido, el prefijo /boot no es obligatorio, un enlace simblico /bootlo hace funcionar. En resumen, los ejemplos anteriores deberan funcionar si ha definido una particin separada para /boot o no. Si necesita pasar algn parmetro adicional al kernel, sencillamente agrguelo al final de la lnea de comando del kernel. Ya estamos pasando una opcin (root=/dev/sda3 o real_root=/dev/sda3), pero se pueden pasar otras tambin, como los parmetros video y/o vga de los que hablamos previamente. Si est utilizando un kernel 2.6.7 o superior y ha puenteado su disco duro porque la BIOS no puede manejar discos duros grandes, necesitar aadir sda=stroke. Los usuarios de genkernel deben saber que sus kernels usan las mismas opciones de arranque que el CD de instalacin. Por ejemplo, si tiene dispositivos scsi, debera agregar el parmetro doscsi al kernel. Ahora grabe el archivo grub.conf y salga. An necesita instalar GRUB en el MBR (Master Boot Record) para que GRUB se ejecute automticamente cuando arranque su sistema. Los desarrolladores de GRUB recomiendan utilizar grub-install. Sin embargo, si por alguna razn grubinstall no funciona correctamente todava tiene la opcin de instalar GRUB manualmente.

Configurando GRUB utilizando grub-install Para instalar GRUB necesita ejecutar el comando grub-install. Sin embargo grub-install no funcionar tal cual se instala, ya que estamos dentro de un entorno chroot. Antes de seguir, necesitar actualizar /etc/mtab, el cual contiene la informacin relativa a todos los sistemas de archivos montados. Afortunadamente hay una manera sencilla de realizar esto, simplemente copie /proc/mounts a /etc/mtab, excluyendo la lnea rootfs si no ha creado una particin separada para boot. El siguiente comando fucionar en ambos casos: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Crear /etc/mtab # grep -v rootfs /proc/mounts > /etc/mtab Ahora podemos instalar GRUB utilizando grub-install: Ejecutar grub-install # grub-install --no-floppy /dev/sda

Alternativa: Configurando GRUB a mano, utilizando instrucciones Para comenzar a configurar GRUB, debe ejecutar los comandos dentro de grub. Se le presentar el intrprete de comandos propio de grub grub>. Ahora necesita ejecutar los comandos necesarios para instalar el registro de arranque de GRUB en su disco duro. Iniciando el intrprete de comandos de GRUB # grub --no-floppy Nota: Si su sistema no tiene ningn dispositivo de disquetes, aada la opcin --no-floppy al comando anterior para evitar que grub pruebe los dispositivos (no existentes) de disquetes. En el ejemplo de configuracin queremos instalar GRUB para que lea la informacin de la particin de arranque /dev/sda1, e instala el registro de arranque de GRUB en el MBR (Master boot Record) de su disco duro para que lo primero que veamos aparecer al encender el ordenador sea GRUB. Por supuesto, si no ha seguido el ejemplo de configuracin durante la instalacin, cambie los comandos de acuerdo a su modelo: El mecanismo de completar comandos por tabulacin de GRUB puede utilizarse dentro de GRUB. Por ejemplo, si escribe "root (" seguido de una tabulacin, notar que se le presenta una lista de dispositivos (como pueda ser hd0). Si tecleamos "root (hd0," seguido de una tabulacin recibiremos una lista de particiones disponibles para elegir (como pueda ser hd0,0). Utilizando este mecanismo de completar por tabulacin, configurar GRUB no debera resultar tan duro. Ahora vamos a por ello, configuremos GRUB!. Instalando GRUB en el MBR grub> root (hd0,0) grub> setup (hd0) grub> quit (Especifique donde tiene su particin /boot) (Instalamos GRUB en el MBR) (Salimos del intrprete de comandos de GRUB)

Nota: Si quiere instalar GRUB en una particin concreta en lugar del MBR, debe modificar el comando 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

setup para que apunte a la particin correcta. Por ejemplo, si quiere que GRUB se instale en /dev/sda3, el comando adecuado sera setup (hd0,2). Sin embargo, pocos usuarios querrn hacer esto.

Alternativa: Utilizando LILO Instalando LILO LILO, representa LInuxLOader, y es el caballito de batalla probado y comprobado de los gestores de inicio de Linux. Sin embargo, carece de algunas caractersticas de GRUB (razn por la cual GRUB actualmente est ganando popularidad). La razn por la cual LILO sigue en uso es que en algunos sistemas, GRUB no funciona mientras que LILO s. Por supuesto tambin se usa porque hay muchos que lo conocen y prefieren seguir con este gestor. De cualquier manera, Gentoo soporta ambos gestores y por lo visto, ha elegido usar LILO. Instalar LILO es fcil, sencillamente se instala Instalando LILO # rpm -i lilo o dpkg -i lilo Configurando LILO Para configurar LILO, debe crear el archivo /etc/lilo.conf. Use su editor de textos preferido (en el manual usamos nano para ser consistentes) y creemos este archivo. Creando /etc/lilo.conf # vi -w /etc/lilo.conf Algunas secciones atrs, le pedimos que se acordara del nombre de la imagen del kernel creado. En el siguiente ejemplo de lilo.conf haremos uso del esquema ejemplo de particionamiento. Hay dos partes separadas: Para los que no hayan usado genkernel para construir su kernel Para los que hayan usado un genkernel para construir su kernel Asegrese de utilizar el nombre de su archivo de imagen del kernel y, si es necesario, el nombre de su imagen initrd. Nota: Si su sistema de ficheros para root es JFS, deber aadir la lnea append="ro" despus de cada 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

elemento de arranque, ya que JFS necesita leer su log antes de permitir montajes de lectura-escritura.

Ejemplo de /etc/lilo.conf boot=/dev/sda prompt timeout=50 default=gentoo

# Instalar LILO en el MBR # Darle al usuario una oportunidad de seleccionar otra opc # Esperar 5 (cinco) segundos antes de arrancar la opcin po # Al transcurrir el plazo de espera, arrancar la opcin "gent

# Para los que no usaron genkernel image=/boot/kernel-2.6.24-gentoo-r5 label=gentoo # El nombre de la seccin read-only # Comience con la raz solo lectura. No modifique! root=/dev/sda3 # Ubicacin del sistema raz de archivos image=/boot/kernel-2.6.24-gentoo-r5 label=gentoo.rescue # El nombre de la seccin read-only # Comience con la raz solo lectura. No modifique! root=/dev/sda3 # Ubicacin del sistema raz de archivos append="init=/bin/bb" # Lanzar la shell esttica de rescate de Gentoo # Para usuarios de genkernel image=/boot/kernel-genkernel-x86-2.6.24-gentoo-r5 label=gentoo read-only root=/dev/ram0 append="init=/linuxrc ramdisk=8192 real_root=/dev/sda3 udev" initrd=/boot/initramfs-genkernel-x86-2.6.24-gentoo-r5 # La siguientes dos lnea solo corresponden si hace arranque dual con un sistema Windows. # En este caso, Windows se encuentra en /dev/sda6. other=/dev/sda6 label=windows Nota: El parmetro udev que se menciona al final de la lnea del kernel es necesario para que funcione debido a algunos bugs en algunas versiones de genkernel si se utiliza udev en primera posicin (lo cual, viene definido por defecto). Nota: Si usa un esquema de particionamiento o imagen de kernel distinta, haga los ajustes correspondientes. Si hace falta pasar alguna opcin adicional al kernel, incluya un enunciado append a la seccin. A modo de ejemplo, agregamos un enunciado video para activar framebuffer: Utilizar append para agregar opciones al kernel 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

image=/boot/kernel-2.6.24-gentoo-r5 label=gentoo read-only root=/dev/sda3 append="video=vesafb:mtrr,ywrap,1024x768-32@85" Si est utilizando un kernel 2.6.7 o superior y ha puenteado su disco duro porque la BIOS no puede manejar discos duros grandes, necesitar aadir sda=stroke. Usuarios de genkernel deben saber que sus kernel usan las mismas opciones de arranque que el CD de instalacin. Por ejemplo, si tiene dispositivos SCSI, debe agregar doscsi como opcin del kernel. Ahora, salve el archivo y salga del editor. Para terminar, debe ejecutar el comando /sbin/lilo para poder aplicar /etc/lilo.conf a su sistema (que se instale en el disco). Acurdese de que debe volver a ejecutar /sbin/lilo cada vez que instale un nuevo kernel o haga cambios en el men. Terminando la instalacin de LILO # /sbin/lilo

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

2. Introduccin al Shell
2.1 - Uso de la lnea de comandos

La consola En Linux es frecuente el uso de la linea de comandos. Esto es as en primer lugar porque el sistema operativo tiene centenares de utilidades a las que no podrs llegar desde el entorno grfico. Y porque la lnea de comandos permite ejecutar programas con mas opciones (y rapidez) de la que tendriamos usando la interfaz grfica. Linux ha sido el sistema de linea de comandos por excelencia, y de hecho hasta hace pocos aos, el arranque del ordenador por defecto era modo consola, arrancando el servidor X (para el entrono grfico) solo cuando necesitabas utilizar un programa que lo requera, con el comando startx. Hoy en dia ocurre justo al revs. Por defecto tu sistema linux arrancar con Gnome o KDE, y para acceder a la linea de comandos debers lanzar desde el men de aplicaciones un emulador de terminal. El prompt del sistema El prompt del sistema es el conjunto de carcteres que te indican la lnea donde debes teclear tus rdenes. Altamente configurable, por defecto es posible que te encuentres con algo parecido a ignacio@localhost:~$ donde te informa que estas logeado en el sistema como usuario ignacio, en la mquina localhost Moviendose por el sistema de archivos El comando pwd nos devuelve la ruta en la que estamos en ese momento. Para cambiar de directorio usamos cd, que tiene varias opciones: cd /path/deseado/ nos lleva a /path/deseado cd. directorio actual cd.. directorio padre cd (sin parametros) lleva al home de tu usuario cd ~ nombreusuario te lleva al home de nombreusuario, si tienes permisos para ello. cd ~ te lleva al home de tu usuario. cd / te lleva al home de tu usuario. cd - te lleva al ultimo directorio en que hallas estado Creando/borrando directorios Para crear nuevos directorios, la opcin es mkdir. Para borrar archivos o rm -r carpeta, usando la opcin -r para borrar cualquier subcarpeta directorios, rm:

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Moviendo, renombrando, copiando Usamos cp /ruta/archivo/original /ruta/para/copia para copiar archivos. mv ruta/archivo nueva/ruta/archivo sirve tanto para mover un archivo o carpeta como para renombrarlo listando archivos El comando ls muestra una lista de los archivos de un directorio. ls [opciones] [archivo|directorio] [archivo|directorio...]

ls (sin parametros) lista archivos del directorio actual. ls -a muestra todos los archivos, incluido ocultos ls -A igual que -a menos los archivos "." y ".." ls -R listado recursivo ls -l muestra permisos de cada fichero y ultimo acceso ls -s muestra el tamao de cada fichero listado dot slash ./

Y ya que esto es una breve introduccin a la consola, hhay que recordar que en linux las rutas a los archivos siempre se separan con la barra /, no la invertida propia de windows. Y otra diferencia con windows que a veces pasa desapercibida. Cuando intentamos ejecutar un comando en windows, este siempre busca el ejecutable en primer lugar en el archivo desde el cual se ejecuta la orden, y luego en cualquier otro directorio incluido en el path. Por el contrario linux no buscar el ejecutable en el directorio actual, salvo claro est que dicho directorio est en el path. Por tanto la forma de asegurarnos la correcta ejecucin de cualquier ejecutable, si estamos en el directorio donde se encuentra, es usar un punto y barra para indicar que busque en nuestro directorio: por ejemplo, root@localhost: ignacio/home # ./miscript.sh servira para ejecutar miscript.sh solo si este se encuentra en ignacio/home Y ya que hablamos del path, si quieres ver que rutas tienes en esta variable, simplemente escribe echo $PATH A algunos les resulta de inters que linux busque siempre ejecutables en el directorio actual. Si es tu caso, simplemente ponlo en el path, aadiendo a la variable $PATH un punto: busca en el directorio raiz de tu usuario un archivo oculto .profile y aadele: PATH=$PATH:$HOME/bin:. incluido el punto al final de la linea, claro. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

SU Siempre se ha dicho que la buena prctica en linux es acceder al sistema como usuario con derechos limitados, y ganar los privilegios de root solo cuando nos sea necesario, y ello para evitar ejecutar por error algun comando que se cargue el sistema (y porque linux es un sistema multiusuario, presumiendo que varias personas haran uso de el, y no todas ellas sern administradores). Pues bien, desde tu linea de comandos, logueado como usuario, puedes ganar privilegios de root con el comando su. Por ejemplo, tras la orden [ignacio@localhost] ~ $ sudo kedit /etc/fstab el sistema te preguntar por la contrasea de root, y si es correcta, editar el archivo /etc/fstab con el programa kedit, con permisos de root. sudo permite ejecutar como root solamente la instruccion de la lnea donde se ejecuta. Como alternativa puedes simplemente escribir su, introducir la contrasea y ganar privilegios de root para esa sesion de consola. Fijate como el promt te identifica como root, no solo por el nombre del usuario, sino tambin por el signo # que reemplaza el signo $ Ejecutando tareas en segundo plano Si quieres ejecutar un comando o programa que prevees que va a tardar tiempo en completarse, y no deseas cambiar de terminal, puedes ordenar que se ejecute en segundo plano simplemente aadiendo un carcter & al final de la orden, antes de ejecutarla. Para regresar a cualquier proceso que has dejado en segundo plano, generalmente se utilizan los comandos fg o exit. Comodines prcticamente todas las utilidades que emplean la linea de comandos admiten comodines * ? el comodin ? representa cualquier caracter. Por ejemplo, ls diari?.log te mostraria la existencia tanto de diario.log como de diaria.log Y * coincide con cualquier secuencia de caracteres. ls foto.* te indicaria la existencia de foto.jpg, foto.gif etc

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

2.2 - Variables de entorno

Variables de Entorno? Qu son? Una variable de entorno es un objeto designado para contener informacin usada por una o ms aplicaciones. Algunos usuarios (especialmente aquellos nuevos en Linux) encuentran esto un poco extrao o inmanejable. Sin embargo esto no es cierto: usando variables de entorno hace que cualquiera pueda cambiar una opcin de configuracin para una o ms aplicaciones fcilmente. Ejemplos Importantes La siguiente tabla muestra un listado de variables de entorno usado por un sistema Linux y describe su uso. Los valores de ejemplo se encuentran despus de la tabla. Variable Descripcin Esta variable contiene una lista de directorios separados por ":" en la cual el sistema buscar los archivos ejecutables. Al introducir el nombre de un ejecutable (como ls, rcPATH update o emerge) que no se encuentre en un de los directorios listados, el sistema no lo encontrar, (a menos que se introduzca la ruta completa, por ejemplo: /bin/ls). Esta variable tiene la misma funcin que PATH, pero nicamente contiene los ROOTPATH directorios que el sistema debe revisar cuando el usuario root introduce un comando. Esta variable contiene una lista de directorios separados por ":" en la cual el enlazador LDPATH dinmico busca para encontrar una librera. Esta variable contiene una lista de directorios separados por ":" en la cual el comando MANPATH man busca las pginas de manual. Esta variable contiene una lista de directorios separados por ":" en la cual el comando INFODIR info busca las pginas info. Esta variable contiene la ruta hacia el programa utilizado para mostrar el contenido de PAGER los ficheros (como less o more). Esta variable contiene la ruta hacia el programa utilizado para modificar el contenido de EDITOR los archivos (como nano o vi). Esta variable contiene una lista de directorios separados por ":" los cuales contienen KDEDIRS material especfico de KDE. CONFIG_PROT Esta variable una lista de directorios separados por espacio los cuales deben ser ECT protegidos por Portage durante las actualizaciones. CONFIG_PROT Esta variable una lista de directorios separados por espacio los cuales no deben ser ECT_MASK protegidos por Portage durante las actualizaciones.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

A continuacin puedes encontrar ejemplos de definiciones para todas estas variables: Definiciones de ejemplo PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin" ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin" LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3" MANPATH="/usr/share/man:/usr/local/share/man" INFODIR="/usr/share/info:/usr/local/share/info" PAGER="/usr/bin/less" EDITOR="/usr/bin/vim" KDEDIRS="/usr" CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \ /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \ /usr/share/texmf/tex/platex/config/ /usr/share/config" CONFIG_PROTECT_MASK="/etc/gconf" Definiendo variables globalmente El directorio /etc/env.d Para centralizar la definicin de estas variables, Gentoo introduce el directorio /etc/env.d. Dentro de este directorio se encuentran varios ficheros como por ejemplo 00basic, 05gcc, etc. los cuales contienen las variables necesarias para la aplicacin de la cual llevan el nombre. Por ejemplo, al instalar gcc, un fichero llamado 05gcc que contiene la definicin de las siguientes variables, fue creado por el ebuild: /etc/env.d/05gcc PATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" ROOTPATH="/usr/i686-pc-linux-gnu/gcc-bin/3.2" MANPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/man" INFOPATH="/usr/share/gcc-data/i686-pc-linux-gnu/3.2/info" CC="gcc" CXX="g++" LDPATH="/usr/lib/gcc-lib/i686-pc-linux-gnu/3.2.3" Otras distribuciones le piden modificar o aadir definiciones de variables de entorno semejantes en /etc/profile o en otros sitios. Por otro lado, Gentoo nos hace (y a Portage) ms fcil mantener y manejar las variables de entorno sin tener que prestar atencin a los numerosos ficheros que pueden contenerlas. Por ejemplo, cuando gcc es actualizado, tambin es actualizado el fichero /etc/env.d/05gcc sin ser necesaria ninguna interaccin por parte del usuario.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Esto no solo beneficia a Portage, sino tambin al usuario. En ocasiones se podr pedir establecer cierta variable de entorno para todo el sistema. Como ejemplo, tomamos la variable http_proxy. En lugar de perder el tiempo con /etc/profile, puedes crear el fichero (/etc/env.d/99local) y introducir la(s) definicin(es) en l: /etc/env.d/99local http_proxy="proxy.server.com:8080" Usando el mismo fichero para todas las variables, se obtiene una visin rpida de las variables que definidas por uno mismo. El script env-update Varios archivos de /etc/env.d definen la variable PATH. esto no es un error: cuando ejecute env-update, este concatenar las mltiples definiciones antes de actualizar las variables de entorno, haciendo ms fcil a los paquetes (o usuarios) aadir sus propias opciones en las variables de entorno sin interferir con los valores ya existentes. El script env-update concatenar los valores alfabticamente ordenados por el nombre de los ficheros de /etc/env.d. Los nombres de fichero deben comenzar con dos digitos decimales. Update order used by env-update 00basic 99kde-env 99local +-------------+----------------+-------------+ PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin" La concatenacin de variables no siempre funciona, slo con las siguientes variables: KDEDIRS, PATH, LDPATH, MANPATH, INFODIR, INFOPATH, ROOTPATH, CONFIG_PROTECT, CONFIG_PROTECT_MASK, PRELINK_PATH y PRELINK_PATH_MASK. Para el resto de variables (archivos en orden alfabtico en /etc/env.d)se utilizar el ltimo valor definido Cuando ejecute env-update, el script crear todas las variables de entorno y las colocar en /etc/profile.env (el cual es usado por /etc/profile). Adems, tambin extraer la informacin de la variable LDPATH y la usar para crear /etc/ld.so.conf. Despus de esto, ejecutar ldconfig para recrear el archivo usado por el enlazador dinmico: /etc/ld.so.cache. Si quiere observar el efecto de env-update inmediatamente despus de ejecutarlo, ejecute el siguiente comando para actualizar su entorno. Posiblemente, los usuarios que instalaron Gentoo ellos mismos, recordarn estas instrucciones de la instalacin: Actualizar el entorno # env-update && source /etc/profile Nota: El comando anterior, solamente actualiza las variables en la termanal actual y las nuevas 25 de Mayo 445 Piso 2 Tel 43132484 /2486/2475 (1002) Bs.As. opensource@osi-sistemas.com.ar

consolas. Conociendo esto, si se esta trabajando en X11, necesitara ejecutar source /etc/profile en cada nueva terminal que abra o reiniciar las X para que todas las nuevas terminales cogan las nuevas variables. Si esta utilizando un gestor de inicio, conviertase en root y ejecute /etc/init.d/xdm restart. Si no, necesitar salir de la sesin y volver a entrar para las X generen hijos con las nuevas variables. Importante: No se pueden utilizar las variables del terminal para definir otras variables. Esto implica que cosas como FOO="$BAR" (donde $BAR es otra variable) estn prohibidas.

Definiendo variables locales Especficas de usuario No siempre queremos definir variables de entorno globales. Por ejemplo, podramos querer aadir /home/my_user/bin y el directorio de trabajo actual (en el cual nos encontramos), a la variable PATH, pero no queremos que todos los usuarios de nuestro sistema lo tengan en su PATH. Si queremos definir una variable localmente, debemos usar ~/.bashrc o ~/.bash_profile: Ampliar el PATH para uso local en: ~/.bashrc (Dos puntos sin incluir despus un directorio son tratados como el directorio de trabajo actual) PATH="${PATH}:/home/my_user/bin:" Cuando vuelva a iniciar la sesin, su variable PATH ser actualizada. Especficas de sesin En ocasiones, se requieren definiciones an ms estrictas. Puede querer usar binarios de un directorio temporal que ha creado sin tener que usar la trayectoria completa a los binarios o sin editar ~/.bashrc. Para estos momentos necesitar esto. En este caso, puede definir la variable PATH en su sesin activa usando el comando export. Mientra no cierre la sesin, la variable PATH usar los valores temporales. Definir una variable especfica a la sesin # export PATH="${PATH}:/home/my_user/tmp/usr/bin"

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

2.3 - Administracin de procesos. Prioridades

La ms simple definicin de un proceso podra ser que es una instancia de un programa en ejecucin (corriendo). A los procesos frecuentemente se les refiere como tareas. El contexto de un programa que esta en ejecucin es lo que se llama un proceso. Este contexto puede ser mas procesos hijos que se hayan generado del principal (proceso padre), los recursos del sistema que este consumiendo, sus atributos de seguridad (tales como su propietario y permisos de archivos asi como roles y dems de SELinux), etc. Linux, como se sabe, es un sistema operativo multitarea y multiusuario. Esto quiere decir que mltiples procesos pueden operar simultneamente sin interferirse unos con los otros. Cada proceso tiene la "ilusin" que es el nico proceso en el sistema y que tiene acceso exclusivo a todos los servicios del sistema operativo. Programas y procesos son entidades distintas. En un sistema operativo multitarea, mltiples instancias de un programa pueden ejecutarse sumultneamente. Cada instancia es un proceso separado. Por ejemplo, si cinco usuarios desde equipos diferentes, ejecutan el mismo programa al mismo tiempo, habra cinco instancias del mismo programa, es decir, cinco procesos distintos. Cada proceso que se inicia es referenciado con un nmero de identificacin nico conocido como Process ID PID, que es siempre un entero positivo. Prcticamente todo lo que se est ejecutando en el sistema en cualquier momento es un proceso, incluyendo el shell, el ambiente grfico que puede tener mltiples procesos, etc. La excepcin a lo anterior es el kernel en si, el cual es un conjunto de rutinas que residen en memoria y a los cuales los procesos a travs de llamadas al sistema pueden tener acceso.

ps El comando ps es el que permite informar sobre el estado de los procesos. ps esta basado en el sistema de archivos /proc, es decir, lee directamente la informacin de los archivos que se encuentran en este directorio. Tiene una gran cantidad de opciones, incluso estas opciones varan dependiendo del estilo en que se use el comando. Estas variaciones sobre el uso de ps son las siguientes: Estilo UNIX, donde las opciones van precedidas por un guin Estilo BSD, donde las opciones no llevan guin Estilo GNU, donde se utilizan nombres de opciones largas y van precedidas por doble guin --

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Sea cual sea el estilo utilizado, dependiendo de las opciones indicadas, varias columnas se mostrarn en el listado de procesos que resulte, estas columnas pueden ser entre muchas otras, las siguientes (y principales): p o PID P o PPID U o UID t o TT o TTY T o TIME c o CMD RSS SZ o SIZE NI C o PCPU STIME S o STAT Process ID, nmero nico o de identificacin del proceso. Parent Process ID, padre del proceso User ID, usuario propietario del proceso Terminal asociada al proceso, si no hay terminal aparece entonces un '?' Tiempo de uso de cpu acumulado por el proceso El nombre del programa o camndo que inici el proceso Resident Sise, tamao de la parte residente en memoria en kilobytes Tamao virtual de la imagen del proceso Nice, valor nice (prioridad) del proceso, un nmero positivo significa menos tiempo de procesador y negativo ms tiempo (-19 a 19) Porcentaje de cpu utilizado por el proceso Starting Time, hora de inicio del proceso Status del proceso, estos pueden ser los siguientes R runnable, en ejecucin, corriendo o ejecutndose S sleeping, proceso en ejecucin pero sin actividad por el momento, o esperando por algn evento para continuar T sTopped, proceso detenido totalmente, pero puede ser reiniciado Z zombie, difunto, proceso que por alguna razn no termin de manera correcta, no debe haber procesos zombies D uninterruptible sleep, son procesos generalmente asociados a acciones de IO del sistema X dead, muerto, proceso terminado pero que sigue apareciendo, igual que los Z no deberan verse nunca

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Las opciones completas de ps las encuentras en las pginas del manual (man ps), o escribiendo en la terminal ps L, y para ver un resumen de sus opciones ms comunes usa ps --help: #> ps --help ********* simple selection ********* ********* selection by list ********* -A all processes -C by command name -N negate selection -G by real group ID (supports names) -a all w/ tty except session leaders -U by real user ID (supports names) -d all except session leaders -g by session OR by effective group name -e all processes -p by process ID T all processes on this terminal -s processes in the sessions given a all w/ tty, including other users -t by tty g OBSOLETE -- DO NOT USE -u by effective user ID (supports names) r only running processes U processes for specified users x processes w/o controlling ttys t by tty *********** output format ********** *********** long options *********** -o,o user-defined -f full --Group --User --pid --cols --ppid -j,j job control s signal --group --user --sid --rows --info -O,O preloaded -o v virtual memory --cumulative --format --deselect -l,l long u user-oriented --sort --tty --forest --version -F extra full X registers --heading --no-heading --context ********* misc options ********* -V,V show version L list format codes f ASCII art forest -m,m,-L,-T,H threads S children in sum -y change -l format -M,Z security data c true command name -c scheduling class -w,w wide output n numeric WCHAN,UID -H process hierarchy A continuacin algunos cuantos ejemplos de ps con la salida recortada. ># ps PID 1 2 3 4 -e TTY ? ? ? ? (-e muestra TIME 00:00:01 00:00:00 00:00:00 00:00:00 todos los procesos) CMD init kthreadd migration/0 ksoftirqd/0 CMD init [5] [kthreadd] su -bash kio_file [kdeinit] ps -ef Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

#> ps -ef (-f muestra opciones completas) UID PID PPID C STIME TTY TIME root 1 0 0 10:12 ? 00:00:01 root 2 0 0 10:12 ? 00:00:00 ... root 6130 5662 0 10:24 pts/0 00:00:00 root 6134 6130 0 10:24 pts/0 00:00:00 sergon 6343 5604 0 10:28 ? 00:00:00 file /home/sergon/tmp/ksocket-sergon/kl root 6475 6134 0 10:38 pts/0 00:00:00 25 de Mayo 445 Piso 2 (1002) Bs.As.

#> ps -eF (-F muestra opciones completas extra) UID PID PPID C SZ RSS PSR STIME TTY TIME CMD root 1 0 0 412 556 1 16:59 ? 00:00:01 init [5] root 2 0 0 0 0 1 16:59 ? 00:00:00 [kthreadd] sergon 8326 8321 0 902 1272 0 17:07 ? 00:00:00 /bin/sh /usr/lib/firefox-2.0.0.8/run-mozilla.sh /usr/lib/f sergon 8331 8326 4 53856 62604 0 17:07 ? 00:00:50 /usr/lib/firefox-2.0.0.8/mozilla-firefox-bin sergon 8570 7726 2 15211 37948 0 17:17 ? 00:00:10 quanta #> ps PID 1 2 3 4 ax TTY ? ? ? ? (formato STAT Ss S< S< S< BSD sin guin, a muestra todos, x sin mostrar tty) TIME COMMAND 0:01 init [5] 0:00 [kthreadd] 0:00 [migration/0] 0:00 [ksoftirqd/0] muestra usuarios y dems columnas) TTY STAT START TIME COMMAND ? Ss 16:59 0:01 init [5] ? S< 16:59 0:00 [kthreadd] ? S< 16:59 0:00 ? ? S< S< 16:59 16:59 0:00 0:00

#> ps aux (formato BSD sin guin, u USER PID %CPU %MEM VSZ RSS root 1 0.0 0.0 1648 556 root 2 0.0 0.0 0 0 root 3 0.0 0.0 0 0 [migration/0] root 4 0.0 0.0 0 0 [ksoftirqd/0] root 5 0.0 0.0 0 0 [migration/1] #> ps -eo separados USER root root sergon root #> ps #> ps #> ps real) #> ps #> ps -eH axf -ec -el L

user,pid,tty (-o output personalizado, se indican los campos por coma, ver ps --help o ps L) PID TT 1 ? 2 ? 8570 tty 1 8876 pts/1 (muestra rbol de procesos) (lo mismo en formato BSD) (el comando que se esta ejecutando, sin la ruta, solo el nombre (muestra formato largo de varias columnas, muy prctico) (No muestra procesos, lista todos los cdigos de formatos)

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

pstree Muestra los procesos en forma de rbol, pstree --help te da las opciones ms comunes. Recomiendo uses lo uses con la opcin -A y -G para que te un rbol con lneas con lneas estilo ASCII y de terminal VT100 respectivamente, puedes aadir tambin -u para mostrar entre parntesis al usuario propietario del proceso: #> pstree -AGu init---acpid |-atd(daemon) |-automount----2*[{automount}] |-avahi-daemon(avahi) |-beagled(sergon)----7*[{beagled}] |-beagled-helper(sergio)----3*[{beagled-helper}] |-compiz(sergon)----kde-window-deco |-console-kit-dae----61*[{console-kit-dae}] |-crond |-dbus-daemon(messagebus) |-dbus-daemon(sergio) |-dbus-launch(sergio) |-dcopserver(sergio) |-dhclient |-gam_server(sergio) |-gconfd-2(sergio) |-hald(haldaemon)----hald-runner(root)----hald-addon-acpi(haldaemon) | |-hald-addon-cpuf | |-hald-addon-inpu | |-hald-addon-stor |-httpd---8*[httpd(apache)] |-2*[ifplugd] |-ipw3945d |-kaccess(sergio) ...

kill El comando kill, que literalmente quiere decir matar, sirve no solo para matar o terminar procesos sino principalmente para enviar seales (signals) a los procesos. La seal por default (cuando no se indica 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

ninguna es terminar o matar el proceso), y la sintaxis es kill PID, siendo PID el nmero de ID del proceso. Asi por ejemplo, es posible enviar una seal de STOP al proceso y se detendr su ejecucin, despus cuando se quiera mandar una seal de CONTinuar y el proceso continuara desde donde se quedo. #> kill -l (lista todas las proceso) 1) SIGHUP 2) SIGINT 5) SIGTRAP 6) SIGABRT 9) SIGKILL 10) SIGUSR1 13) SIGPIPE 14) SIGALRM 17) SIGCHLD 18) SIGCONT 21) SIGTTIN 22) SIGTTOU 25) SIGXFSZ 26) SIGVTALRM 29) SIGIO 30) SIGPWR 35) SIGRTMIN+1 36) SIGRTMIN+2 39) SIGRTMIN+5 40) SIGRTMIN+6 43) SIGRTMIN+9 44) SIGRTMIN+10 47) SIGRTMIN+13 48) SIGRTMIN+14 51) SIGRTMAX-13 52) SIGRTMAX-12 55) SIGRTMAX-9 56) SIGRTMAX-8 59) SIGRTMAX-5 60) SIGRTMAX-4 63) SIGRTMAX-1 64) SIGRTMAX posibles seales que pueden enviarse a un 3) 7) 11) 15) 19) 23) 27) 31) 37) 41) 45) 49) 53) 57) 61) SIGQUIT SIGBUS SIGSEGV SIGTERM SIGSTOP SIGURG SIGPROF SIGSYS SIGRTMIN+3 SIGRTMIN+7 SIGRTMIN+11 SIGRTMIN+15 SIGRTMAX-11 SIGRTMAX-7 SIGRTMAX-3 4) 8) 12) 16) 20) 24) 28) 34) 38) 42) 46) 50) 54) 58) 62) SIGILL SIGFPE SIGUSR2 SIGSTKFLT SIGTSTP SIGXCPU SIGWINCH SIGRTMIN SIGRTMIN+4 SIGRTMIN+8 SIGRTMIN+12 SIGRTMAX-14 SIGRTMAX-10 SIGRTMAX-6 SIGRTMAX-2

La lista previa presenta una lista de todas las posibles seales que pueden mandarse a un proceso y estas pueden ser invocadas a travs del nmero de la seal o de su cdigo, por ejemplo: #> kill -9 11428 #> kill -SIGKILL 11428 (termina, mata un proceso completamente) (Lo mismo que lo anterior)

Las seales ms comunes son la 19 y 20 que detienen momentneamente la ejecucin de un proceso o programa, 18 la continua, 1 que es la seal de hang up que obliga al proceso a releer sus archivos de configuracin estando en ejecucin y 9 que termina rotundamente un proceso.

killall El comando killall, que funciona de manera similar a kill, pero con la diferencia de en vez de indicar un PID se indica el nombre del programa, lo que afectar a todos los procesos que tengan ese nombre. Asi por ejemplo si se tienen varias instancias ejecutndose del proxy server squid, con killall squid eliminar todos los procesos que se esten ejecutando con el nombre 'squid' #> killall -l #> killall -HUP httpd archivos de configuracin #> killall -KILL -i squid pero pide confirmacin en 25 de Mayo 445 Piso 2 (1002) Bs.As. (lista de posibles seales) (manda una seal de "colgar", detenerse releer sus y reiniciar) (manda seal de matar a todos los procesos squid cada uno) Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

nice Permite cambiar la prioridad de un proceso. Por defecto, todos los procesos tienen una prioridad igual ante el CPU que es de 0. Con nice es posible iniciar un programa (proceso) con la prioridad modificada, ms alta o ms baja segn se requiera. Las prioridades van de -20 (la ms alta) a 19 la ms baja. Solo root o el superusuario puede establecer prioridades negativas que son ms altas. Con la opcin -l de ps es posible observar la columna NI que muestra este valor. #> nice (sin argumentos, devuelve la prioridad por defecto ) 0 #> nice -n -5 comando (inicia comando con una prioridad de -5, lo que le da ms tiempo de cpu)

renice Asi como nice establece la prioridad de un proceso cuando se incia su ejecucin, renice permite alterarla en tiempo real, sin necesidad de detener el proceso. #> nice -n -5 yes (se ejecuta el programa 'yes' con prioridad -5) (dejar ejecutando 'yes' y en otra terminal se analiza con C PRI 4 75 NI ADDR SZ WCHAN TTY -5 708 write_ pts/2 TIME CMD 00:00:00 yes

'ps') #> ps -el F S UID PID PPID 4 S 0 12826 12208

#> renice 7 12826 12826: prioridad antigua -5, nueva prioridad 7 #> ps -el F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY 4 S 0 12826 12208 4 87 7 708 write_ pts/2

TIME CMD 00:00:15 yes

(obsrvese el campo NI en el primer caso en -5, y en el segundo con renice qued en 7, en tiempo real) nohup y & Cuando se trata ejecutar procesos en background (segundo plano) se utiliza el comando nohup o el operador &. Aunque realizan una funcin similar, no son lo mismo. Si se desea liberar la terminal de un programa que se espera durar un tiempo considerable ejecutndose, entonces se usa . Esto funciona mejor cuando el resultado del proceso no es necesario mandarlo a la salida estndar (stdin), como por ejemplo cuando se ejecuta un respaldo o se abre un programa Xwindow desde la consola o terminal. Para lograr esto basta con escribir el comando en cuestin y agregar al final el smbolo & (ampersand). 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

$> yes > /dev/null & $> tar czf respaldo /documentos/* > /dev/null/ & $> konqueror & (con estos ejemplos se ejecuta el comando y se libera la terminal regresando el prompt) Sin embargo lo anterior produce que el padre del proceso PPID que se invoc con sea el proceso de la terminal en si, por lo que si cerramos la terminal o salimos de la sesin tambin se terminaran los procesos hijos que dependan de la terminal, no muy conveniente si se desea que el proceso continu en ejecucin. Para solucionar lo anterior, entonces se usa el comando nohup que permite al igual que '&' mandar el proceso y background y que este quede inmune a los hangups (de ah su nombre nohup) que es cuando se cuelga o termina la terminal o consola de la cual se ejecut el proceso. $> nohup yes > /dev/null & $> nohup czf respaldo /documentos/* > /dev/null/ $> nohup konqueror Asi se evita que el proceso se "cuelgue" al cerrar la consola. jobs Si por ejemplo, se tiene acceso a una nica consola o terminal, y se tienen que ejecutar varios comandos que se ejecutarn por largo tiempo, se pueden entonces como ya se vi previamente con nohup y el operador '&' mandarlos a segundo plano o background con el objeto de liberar la terminal y continuar trabajando. Pero si solo se est en una terminal esto puede ser difcil de controlar, y para eos tenemos el comando jobs que lista los procesos actuales en ejecucin: #> yes > /dev/null & [1] 26837 #> ls -laR > archivos.txt & [2] 26854 #> jobs [1]- Running [2]+ Running

yes >/dev/null & ls --color=tty -laR / >archivos.txt &

En el ejemplo previo, se ejecut el comando yes y se envi a background (&) y el sistema devolvi [1] 26837, indicando asi que se trata del trabajo o de la tarea [1] y su PID, lo mismo con la segunda tarea que es un listado recursivo desde la raz y enviado a un archivo, esta es la segunda tarea. Con los comandos fg (foreground) y bg background es posible manipular procesos que esten suspendidos temporalmente, ya sea porque se les envi una seal de suspensin como STOP (20) o porque al estarlos ejecutando se presion ctrl-Z. Entonces para reanudar su ejecucin en primer plano usaramos fg: #> jobs 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

[1]- Stopped [2]+ Stopped #> fg %1 #> jobs [1]+ Running [2]- Stopped

yes >/dev/null & ls --color=tty -laR / >archivos.txt & yes >/dev/null & ls --color=tty -laR / >archivos.txt &

Obsrvese como al traer en primer plano al 'job' o proceso 1, este adquiri el smbolo [+] que indica que esta al frente. Lo mismo sera con bg que volvera a reinicar el proceso pero en segundo plano. Y tambin es posible matar los procesos con kill indicando el nmero que devuelve jobs: kill %1, terminara con el proceso en jobs nmero 1.

top Una utilera muy usada y muy til para el monitoreo en tiempo real del estado de los procesos y de otras variantes del sistema es el programa llamado top, se ejecuta desde la lnea de comandos, es interactivo y por defecto se actualiza cada 3 segundos. $> top top - 13:07:30 up 8 days, 6:44, 4 users, load average: 0.11, 0.08, 0.08 Tasks: 133 total, 1 running, 131 sleeping, 0 stopped, 1 zombie Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 497356k total, 472352k used, 25004k free, 21500k buffers Swap: 1156640k total, 257088k used, 899552k free, 60420k cached PID 26156 1 2 3 4 5 ... USER sergon root root root root root PR 15 15 RT 34 RT RT NI 0 0 0 19 0 0 VIRT RES 2160 1016 2012 616 0 0 0 0 0 0 0 0 SHR 784 584 0 0 0 0 S %CPU %MEM R 1 0.2 S 0 0.1 S 0 0.0 S 0 0.0 S 0 0.0 S 0 0.0 TIME+ 0:00.93 0:00.98 0:00.29 0:00.00 0:00.00 0:00.38 COMMAND top init migration/0 ksoftirqd/0 watchdog/0 migration/1

Estando adentro de la apliacin, presionando 'h' muestra una ayuda de los posibles comandos que permiten configurar top, por ejemplo, al presionar 's' pregunta por el tiempo en segundos de actualizacin, etc.

Archivos: Tipos La base del sistema de archivos de Linux, es obviamente el archivo, que no es otra cosa que la estructura empleada por el sistema operativo para almacenar informacin en un dispositivo fsico como un disco duro, un disquete, un CD-ROM o un DVD. Como es natural un archivo puede contener cualquier tipo de informacin, desde una imagen en formato PNG o JPEG a un texto o una pgina WEB 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

en formato HTML, El sistema de archivos es la estructura que permite que Linux maneje los archivos que contiene. Todos los archivos de Linux tienen un nombre, el cual debe cumplir unas ciertas reglas: Un nombre de archivo puede tener entre 1 y 255 caracteres. Se puede utilizar cualquier carcter excepto la barra inclinada / y no es recomendable emplear los caracteres con significado especial en Linux, que son los siguientes: = ^ ~ ' " ` * ; - ? [ ] ( ) ! & ~ < >. Para emplear ficheros con estos caracteres o espacios hay que introducir el nombre del fichero entre comillas. Se pueden utilizar nmeros exclusivamente si as se desea. Las letras maysculas y minsculas se consideran diferentes, y por lo tanto no es lo mismo carta.txt que Carta.txt carta.Txt Como en Windows, se puede emplear un cierto criterio de "tipo" para marcar las distintas clases de ficheros empleando una serie de caracteres al final del nombre que indiquen el tipo de fichero del que se trata. As, los ficheros de texto, HTML, las imgenes PNG o JPEG tienen extensiones .txt, .htm (o .html), .png y .jpg (o .jpeg) respectivamente. Pese a esto Linux slo distingue tres tipos de archivos: Archivos o ficheros ordinarios, son los mencionados anteriormente. Directorios (o carpetas), es un archivo especial que agrupa otros ficheros de una forma estructurada. Archivos especiales, son la base sobre la que se asienta Linux, puesto que representan los dispositivos conectados a un ordenador, como puede ser una impresora. De esta forma introducir informacin en ese archivo equivale a enviar informacin a la impresora. Para el usuario estos dispositivos tienen el mismo aspecto y uso que los archivos ordinarios. Enlaces Los enlaces son un tipo de archivo ordinario cuyo objetivo es crear un nuevo nombre para un archivo determinado. Una vez creado el enlace simblico ste permite acceder al fichero que enlaza de igual modo que si se hubiera copiado el contenido del mismo a otro fichero, con la ventaja de que este realmente no se ha copiado. Los enlaces simblicos son especialmente tiles cuando se quiere que un grupo de personas trabajen sobre un mismo fichero, puesto que permiten compartir el fichero pero centralizan las modificaciones. Como ejemplo se puede suponer la existencia de un fichero llamado balance.1999.txt, al que se crea un enlace simblico balance.txt. Cualquier acceso a balance.txt es traducido por el sistema de forma que se accede al contenido de balance.1999.txt. El camino o Path 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

En cualquier sistema operativo moderno la estructura de archivos es jerrquica y depende de los directorios. En general la estructura del sistema de archivos se asemeja a una estructura de rbol, estando compuesto cada nudo por un directorio o carpeta, que contiene otros directorios o archivos. En Windows cada unidad de disco se identifica como una carpeta bsica que sirve de raz a otras, y cuyo nombre es especial a:, c:, d: etc. En los sistemas Unix, y por lo tanto en Linux, existe una nica raz llamada / de la que cuelgan todos los ficheros y directorios, y que es independiente de qu dispositivos estn conectados al ordenador. El camino o path de un fichero o directorio es la secuencia de directorios que se ha de recorrer para acceder a un determinado fichero separados por /. Supongamos la estructura de archivos de la Figura 2.

Existen dos formas del path o camino: el camino absoluto que muestra toda la ruta a un fichero, /home/luis/Carta.txt. el path relativo a un determinado directorio, por ejemplo si no encontramos en el directorio /home, el path relativo al fichero Carta.txt es luis/Carta.txt Para complicar aun ms las cosas, todos los directorios contienen dos directorios especiales: Figura 2 =El directorio actual, representado por el punto . =El directorio padre representado por dos puntos .. Estando en el directorio /home/pedro se puede acceder a Carta.txt con /home/luis/Carta.txt (path absoluto) o bien ../luis/Carta.txt (path relativo). En luis como ./Carta.txt o simplemente Carta.txt. Estructura del sistema de archivos de Linux El sistema de archivo de Linux sigue todas las convenciones de Unix, lo cual significa que tiene una estructura determinada, compatible y homognea con el resto de los sistemas Unix. Al contrario que en Windows o MS-DOS el sistema de archivos en cualquier sistema Unix no est ligado de una forma directa con la estructura del hardware, esto es, no depende de si un determinado ordenador tiene 1, 2 o 7 discos duros para crear las unidades c:, d: o m:. Todos el sistema de archivos de Unix tiene un origen nico la raz o root representada por /. Bajo este directorio se encuentran todos los ficheros a los que puede acceder el sistema operativo. Estos ficheros se organizan en distintos directorios cuya misin y nombre son estndar para todos los sistema Unix. / Raz del sistema de archivos. /dev Contiene ficheros del sistema representando los dispositivos que estn fsicamente instalados en el ordenador. /etc Este directorio esta reservado para los ficheros de configuracin del sistema. En este directorio no debe aparecer ningn fichero binario (programas). Bajo este deben aparecer otros dos subdirectorios: Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

25 de Mayo 445 Piso 2 (1002) Bs.As.

/etc/X11 Ficheros de configuracin de X Window /etc/skel Ficheros de configuracin bsica que son copiados al directorio del usuario cuando se crea uno nuevo. /lib Contiene las libreras necesarias para que se ejecuten los programas que residen en /bin (no las libreras de los programas de los usuarios). /proc Contiene ficheros especiales que o bien reciben o envan informacin al kernel del sistema (Se recomienda no modificar el contenido de este directorio y sus ficheros). /sbin Contiene programas que son nicamente accesibles al superusuario o root. /usr Este es uno de los directorios ms importantes del sistema puesto que contiene los programas de uso comn para todos los usuarios. Su estructura suele ser similar a la siguiente: /usr/X11R6 Contiene los programas para ejecutar X Window. /usr/bin Programas de uso general, lo que incluye el compilador de C/C++. /usr/doc Documentacin general del sistema.

/usr/etc Ficheros de configuracin generales. /usr/include Ficheros de cabecera de C/C++ (.h). /usr/info Ficheros de informacin de GNU. /usr/lib Libreras generales de los programas. /usr/man Manuales accesibles con el comando man (ver ms adelante). /usr/sbin Programas de administracin del sistema. /usr/src Cdigo fuente de programas.

Existen adems de los anteriores otros directorios que se suelen localizar en el directorio /usr, como por ejemplo las carpetas de los programas que se instalen en el sistema. /var Este directorio contiene informacin temporal de los programas (lo cual no implica que se pueda borrar su contenido, de hecho, no se debe hacer!)

Acceso a los diferentes sistemas de archivos Como se ha visto anteriormente el sistema de archivos de Linux slo tiene una raz y su estructura es independiente de los dispositivos de almacenamiento existentes. Esto implica que el procedimiento a emplear para acceder a la informacin almacenada en los distintos sistemas de almacenamiento de un ordenador no es tan sencilla como en Windows, y requiere un proceso llamado montado, que se ver ms adelante. Cuando se ha terminado de trabajar con un determinado dispositivo hay que desmontarlo (No fsicamente!). Por ejemplo el proceso para leer un disquete sera el siguiente: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

1. Introducir el disquete en la disquetera. 2. Montar el sistema de archivos del mismo. 3. Leer, grabar, y manipular el contenido del disquete. 4. Desmontar el sistema de archivos del disquete. 5. Extraer el disquete de la disquetera. El proceso puede parecer complejo pero es el precio a pagar por la seguridad, puesto que de esta forma se garantiza que no exista ninguna aplicacin que est usando el disquete cuando se extraiga. (En el caso de los CD-ROM Linux impide su extraccin hasta que se desmonta). Para complicar ms las cosas slo el administrador o root tiene permiso para montar y desmontar un sistema de archivos (por motivos de seguridad), aunque esto puede ser arreglado. Permisos Linux, al igual que todos los sistemas Unix, mantiene un sistema de permisos de acceso a los ficheros muy estricto, a fin de controlar qu es lo que se puede hacer con ellos, y quien lo puede hacer. Estos permisos se identifican con letras y son: r permiso de lectura el fichero w permiso de escritura en el fichero x permiso de ejecucin del fichero s permiso para cambiar el propietario del fichero Al contrario que en Windows o MS-DOS los programas ejecutables de Linux no estn marcados por una determinada extensin (.exe) sino por un atributo, el permiso de ejecucin x. Si se elimina este atributo a un programa, Linux no ser capaz de ejecutarlo. A su vez cada uno de estos permisos se aplica: al dueo del fichero (u), al grupo de usuarios al que pertenece el dueo (g), al resto de usuarios (a). As un fichero determinado puede tener permiso para ser ledo, escrito y ejecutado por su dueo, ledo y ejecutado por el grupo al que pertenece y no tener ningn tipo de acceso para los dems usuarios. Como se puede entender este tipo de mecanismo es especialmente til cuando se trabaja en grupo en un determinado proyecto.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Instalacin de Software
Antes de continuar, es indispensable se conozca primero el uso y el porque de cada mtodo existente para el manejo del software. De esto se depender en adelante para mantener un saludable estado de cualquier sistema Linux. Indistintamente del mtodo, todos se deber de realizar desde la cuenta de root, as que proceda con cuidado.

3.1 - Red Hat Package Manager

Manejo de paquetes a partir de archivos RPM

El formato RPM es el ms utilizado en la actualidad. Tiene como ventaja principal el encargarse de verificar las posibles dependencias o requisitos para la instalacin o actualizacin de un paquete en particular, as como tambin el verificar si el paquete que se proceder a desinstalar es requerido por otros paquetes presentes en el sistema. Analizaremos entonces el uso del comando rpm. Existen dos aplicaciones en el entorno grfico que utilizan rpm en el trasfondo y que son de muy fcil utilizacin, son gnorpm y kpackage. Sin embargo es importante que el usuario novicio se familiarice con este comando para poder entender el funcionamiento de las mencionadas aplicaciones en el entorno grfico. Sintxis rpm -[opciones] paquete.rpm Nos limitaremos a abordar solo las opciones ms comnes que un nuevo usuario de Linux podra necesitar. Si desea ver una descripcin completa de las posibles opciones del comando rpm, consulte el manual escribiendo man rpm en cualquier terminal o consola. Instalacin binarios contenidos en paquetes con formato RPM. Los paquetes de este tipo son programas previamente compilados, almacenados y listos para ser instalados en el sistema. Estos paquetes pueden tener las extensiones .i386.rpm para PC compatible con al menos un microprocesador 80386, es decir, cualquier PC de arquitectura Intel o compatible, .i486.rpm para PC compatible un microprocesador 80486, .i586.rpm para PC compatible con microprocesador 80586, .i686.rpm para PC compatible con microprocesador 80686, .ppc.rpm para Machintosh PowerPC o .noarch.rpm que puede utilizarse en cualquier arquitectura. En la prctica, no se preocupe por encontrar paquetes i686 para su PC con microprocesador Intel Pentium III, puede instalar con total seguridad los paquetes para i386. Los paquetes noarch generalmente contiene archivos de texto -guiones para diversas funciones, archivos de configuracin o documentacin-, imagenes, sonidos, etc., es decir, archivos que trabajan indistintamente en uno u otro sistema. La sintxis que se sugiere utilizar en la mayora de los casos para instalar o actualizar paquetera es la siguiente: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

rpm -Uvh paquete.i386.rpm El utilizar la opcin U, que significa Update, a fin de conseguir un proceso limpio, hace que primero se consulte la base de datos de la paquetera instalada, procediendo a desinstalar a continuacin la versin anterior e instalando la nueva. Aunque tambin puede utilizarse la opcin i, que significa install, esta no continuar el proceso si existiese en el sistema una versin anterior de dicho paquete.
Desinstalacin binarios contenidos en paquetes con formato RPM.

rpm -e paquete No requiere especficar el nmero de versin ni la extensin ya que consulta directamente la base de datos de la paquetera instalada en le sistema y proceder a desinstalar el paquete que lleve dicho nombre.
Instalacin a partir de cdigo fuente contenido en paquetes con formato RPM.

Este procedimiento se aplica a los paquetes denominados SRPM, sobre los cuales seguramente ha ledo en los foros y grupos d discusin, y requiere que se encuentren instalados en el sistema los paquetes de desarrollo -los paquetes contenidos en el CDROM de instalacin que llevan "-devel-" en el nombre-, ya que el procedimiento implica que se realizar la compilacin de programas. La ventaja que tiene la construccin e instalacin paquetera a partir de archivos SRPM es que los paquetes resultantes quedan compilados de forma especial para el sistema Linux que tengamos instalado. Es de particular ayuda cuando se actualiza, por citar un ejemplo, de LinuxPPP 5.x a LinuxPPP 6.x y el usuario se topa con que alguna de sus aplicaciones favoritas simplemente ya no funcionan. Esto se debe a que la diferencia entre las versiones de las bibliotecas compartidas entre una y otra versin de LinuxPPP puede ser demasiada. Las distribuciones basadas sobre RedHat Linux 5.x utilizan, entre otras cosas, libc5, en tanto que las versiones basadas cobre 6.x hacen uso de Glibc, tambin conocido como libc6. Estos paquetes SRPM tienen la extensin .src.rpm y se procede sobre estos del siguiente modo: rpm --rebuild --clean paquete.src.rpm Esta ltima lnea de comando coloca un paquete comprimido, normalmeente un archivo con extencin .tar.gz o tar.bz2, en /usr/src/redhat/SOURCES y un archivo, conocido como spec, con las especificaciones del paquete en /usr/src/redhat/SPECS. A continuacin se descomprime el archivo .tar.gz o tar.bz2 y se inicia la compilacin y construccin del paquete RPM con las especificaciones del spec. Si al terminar el proceso en la ltima lnea se obtiene + exit 0, solo restar instalar o actualizar con el paquete RPM que ahora encontraremos, dependiendo de la arquitectura para la que se compil, en alguno de los subdirectorios de /usr/src/redhat/RPMS. rpm -Uvh /usr/src/redhat/RPMS/i386/paquete.i386.rpm
Confirmacin de la existencia de paquetera en particular en el sistema.

En ocasiones es posible que se encuentre en uns situacin como esta: usted encuentra en algn sitio de Internet un paquete RPM del cual se hablan maravillas en la descripcin, pero deconoce si ya lo tendr 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

instalado, o si ya tiene una versin ms reciente; podra averiguarlo descargando dicho paquete, que quiz tenga varios Megabytes en tamao, utilizando una lenta conexin de modem y provando con la lnea de comando rpm -Uvh. Si result un paquete ms reciete que el que usted tena, habrn valido la pena los 10-15 minutos invertidos en descargar dicho paquete, pero si ya lo tena instalado o bien se trataba de una versin anterior, usted deseara haber sabido que poda utilizar la siguiente lnea de comando: rpm -q nombre_del_paquete_sin_nmero_de_versin La correspondiente salida de esto nos dir si el paquete se encuentra o no instalado y el nmero de versin. Si nos interesa examinar la informacin sobre algn paquete instalado en el sistema, utilizamos la siguiente lnea de comando: rpm -qi nombre_del_paquete_sin_nmero_de_versin Lo anterior devuelve los detalles informativos respecto al paquete instalado. Si queremos examinar dicha informacin pero en un paqeute no instalado en el sistema, solo hace flata aadir p, que implica que nos referiremos a un paquete, en las opciones del comando del modo siguiente: rpm -qpi --clean cualquier_paquete_que_haya_descargado.i386.rpm
Verificacin de firmas de paquetes RPM.

Por cuestiones de seguridad, si usted descarga un paquete RPM desde un sitio web o servidor FTP distinto al oficial de la distribucin o conjunto de paquetes que utilice, lo ms saludable ser verificar dicho paquete. JAMS descargue e instale paquetes de binarios desde sitios web dedicados a actividades ilegales o de dudosa reputacin. Por si acaso, utilice la siguiente lnea de comando para verificar las firmas includas en paquetes antes de proceder a instalarlos:rpm -Kv paquete.i386.rpm Esto debe darle la siguiente salida, donde las x corresponden a la firma PGP de la persona que construy el paquete: paquete.i386.rpm: MD5 sum OK: xxxxxxxxxxxxxxxxxxxxx Compare la firma PGP con la del empaquetador, misma que debe corresponder con la que este proporcione en el sitio web desde donde descargue dicho paquete.

3.2 - Debian Package Manager

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Qu son? .deb es la extensin del formato de paquetes de software de Debian, y el nombre ms usado para dichos paquetes. Como usarlos? El programa predeterminado para manejar estos paquetes es dpkg, generalmente via el sistema APT. Los paquetes deb tambin pueden ser convertidos a otros formatos de paquetes usando la aplicacin Alien, asi como otros pueden ser convertidos a deb. Estructura Interna Estos paquetes contienen tres archivos:

debian-binary - nmero de versin del formato debcontrol.tar.gz - toda la metainformacin del paquete data.tar.gz - los archivos que se instalan.

Para instalar primero nos situamos en donde este la carpeta con el .deb, si fuese necesario usamos el comando "cd" para desplazarnos a dicha carpeta. Luego escribimos escribimos esto: Cdigo: # dpkg -i nombredelpaquete.deb Deben cambiar nombre del paquete por el nombre del archivo .deb Y es importante estar logeado como root para poder instalarlo. NOTA: Posiblemente deban usar comillas ("") en el nombre del paquete. Con eso ya debe ser suficiente, ahora podemos ejecutar el programa escribiendo su nombre en la consola o buscandolo junto a los otros programas. Y para desinstalar.... Cdigo: dpkg -r nombredelpaquete

3.3 - Instalacin de software a partir del cdigo fuente

Instalacin de paquetes a partir de paquetes .tar.gz o .tar.bz2. Este el el mtodo universal para todas las distribuciones de Linux ya que funciona tando en distribuciones basadas sobre RedHat, como Debian, Stampede o Slackware. Debido a que no se guarda un registro sobre lo que se tiene instalado y lo que no, conviene, en le caso de distribuciones basadas sobre RedHat Linux, dejar las carpetas resultantes con el cdigo fuente en /usr/src/redhat/BUILD para tener una referencia y evitar romper las posibles dependencias entre los disitntos paquetes. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

La mayora de estos paquetes, denominados tarballs, vienen con extensin .tar.gz o tar.bz2. Lo primero ser coparlos en la carpeta /usr/src/redhat/SOURCES y lo siguiente consiste en decomprimir estos con la siguiente lnea de comando: tar -zxvf /usr/src/redhat/SOURCES/paquete.tar.gz /usr/src/redhat/BUILD/ Despus acceda al interior de la carpeta resultante: cd /usr/src/redhat/BUILD/paquete Es necesario que lea la documentacin que acompaa a dicho paquete y seguir las instrucciones proporcionadas por el autor. Por lo general son necesarios al menos tres pasos: ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var make make install make clean Algunos paquetes de binarios propietarios, como StarOffice, incluyen documentacin y un instructivo que detalla la instalacin. StarOffice requiere se ejecute el binario setup, con la opcin /net si va ser utilizado por varios usuarios, contenido en la subcarpeta bin. cd /usr/src/redhat/BUILD/so51inst/office51 ./setup /net En la mayora de los casos, como ocurre con los programas con licencia GPL que se distribuyen como cdigos fuentes, necesitar ejecutar algunos comandos como se muestra a continuacin: Compilacin desde cdigo fuente. ./configure Este prepara el Makefile y configura las opciones de compilacin, mismas que en algunos casos pueden resultar demasiado complejas para un usuario novicio. Adems de verifica si el sistema posee las bibliotecas de desarrollo necesarias para la compilacin. make Este es el que realiza la compilacin del cdigo fuente. El procesos puede durar varios minutos. make install Este se encarga de realizar la instalacin del los binarios y mdulos compilados en los lugares correctos. make clean Opcionalmente podemos utilizar este comando para limpiar los remanentes que se originaron por la compilacin a fin de recuperar espacio en el disco duro.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

4. Procesamiento de texto 4.1 - Redireccionamiento y Tuberas

Herramientas importantes

Un sistema Linux cuenta con gran cantidad de herramientas, cada una de las cuales realiza una labor muy especfica pero rpidamente y bien; les presentamos unas cuantas tpicamente usadas para procesar texto plano. Junto con cada herramienta presentamos algunas de sus opciones y ejemplos de su uso (la documentacin completa de cada herramienta puede consultarse en la pgina del manual o en la documentacin info). stas complementan algunas de las ya vistas anteriormente.

Ejecucin de programas en Linux La ejecucin de programas (archivos) en Linux es solo una cuestin de permisos, por lo que podremos ejecutar cualquiera que tenga activado el bit de ejecucin, por lo menos, en el usuario (si es un archivo nuestro). Para eso haremos uso del comando chmod a+x archivo, si por ejemplo queremos que sea ejecutable para todos. Una vez que ya es ejecutable, podemos solo escribir su nombre, precedido de la ruta al mismo para que se ejecute. Si estamos en el mismo directorio que el archivo ser: $ ./archivo

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Control de procesos Esto es algo muy interesante de manejar bien, puesto que son los trucos que nos hacen la vida ms fcil desde la consola de comandos. Se trata de los atajos de teclado. Atajo ^d ^c ^z ^l Accin que realiza Enva un EOF al shell que causa una salida del modo edicin. Tambin sirve como atajo del comando exit, que permite salir de la sesin actual. Termina el proceso que est en ejecucin abruptamente. Pone el proceso en ejecucin a dormir (como una pausa). No lo termina. Realiza un clear pero manteniendo la linea en la que fue pulsada esta combinacin de teclas. El bash entra en el modo 'reverse-i-search', que se utiliza para buscar comandos que fueron ejecutados anteriormente. En este modo el usuario puede ir escribiendo parte de la linea de comandos que esta buscando, y el bash va mostrando la lnea de comandos que el cree la ms adecuada. Una vez has encontrado la que buscabas, enter. Intercambia dos letras contiguas. Por ejemplo, si se escribe aptgte, solo hay que colocarse despus o en la 'e' y aplicarlo. Resultado: apt-get Bloquea el shell. Desbloquea el shell. Tambin sirve para salir del man, info y top, como ejemplos.

^r

^t ^s ^q

top Cdigos de estado de procesos D Dormido en forma ininterrumpible R Corriendo o en cola S Dormido a la espera de un evento T Parado momentaneamente a la espera de uan seal de control W Paginado X Muerto (nunca debera aparecer uno de estos) Z Proceso "zombi"

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

nl, head, tail Permiten ver uno o ms archivo o parte de uno o ms archivos. Complementan el uso de cat, more y less que ya vimos antes. En el caso de nl, nos muestra un cat, pero con los nmeros de lnea a la izquierda de cada lnea. Esto nos puede servir para identificar alguna parte de un texto que queramos tratar luego. $ nl archivo.txt 1 una lnea 2 otra 3 y otra ms $ cat archivo.txt una lnea otra y otra ms En el caso de head y tail, nos muestran las primeras o las ltimas 10 lneas de uno o ms archivos, respectivamente. Veamos el ejemplo en un mismo archivo: $ cat archivo.txt La criptografa es la disciplina de la computacin que trata de la transmisin y almacenamiento de datos de manera que no puedan ser comprendidos ni modificados por terceros. La criptografa cuntica es una de las primeras aplicaciones de la computacin cuntica cercana a una fase de produccin masiva. La criptografa cuntica garantiza absoluta confidencialidad de la informacin transmitida por fibras pticas, almacenando informacin en el elemento constituyente de la luz, el fotn. $ head archivo.txt La criptografa es la disciplina de la computacin 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

que trata de la transmisin y almacenamiento de datos de manera que no puedan ser comprendidos ni modificados por terceros. La criptografa cuntica es una de las $ tail archivo.txt La criptografa cuntica garantiza absoluta confidencialidad de la informacin transmitida por fibras pticas, almacenando informacin en el elemento constituyente de la luz, el fotn.

split Divide un archivo empleando como criterio el tamao del mismo. Acepta como opciones (-b) bytes o (-l) lneas. Por ejemplo, para dividir un archivo grande en partes de 100000 bytes: $ split -b 100000 grande Las partes quedarn en archivos con nombres como xaa, xab, etc. Sin desechar el archivo original! Con el ejemplo anterior, se vera as: $ split -l 4 archivo.txt $ ls archivo.txt xaa xab xac xad xae xaf $ cat xaf almacenando informacin en el elemento constituyente de la luz, el fotn. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

sort Por defecto, ordena las lneas de un archivo, con la opcin -m mezcla dos archivos ordenados y con la opcin -c verifica que un archivo est ordenado. Al ordenar puede considerar las lneas completas, considerarlas nmeros enteros (-n) o flotantes (-g), considerarlas meses (-M) o dividirlas en campos y emplear algunos campos como llaves de ordenamiento (opcin -k para especificar llaves y -t para cambiar separador de campos). En las comparaciones puede ignorar diferencias entre maysculas y minsculas con la opcin -f, puede ordenar de mayor a menor con la opcin -r (por defecto ordena de menor a mayor) y puede eliminar lneas repetidas con la opcin -u.Por ejemplo para ordenar por lneas el archivo nombres.txt: $ sort nombres.txt Acua Rolando Gomez Claudio Perez Jos Rivero Jacinto si cada lnea del archivo nombres.txt tiene el apellido y despus el nombre de una persona separados por espacios, puede ordenarse por nombre con: $ sort -k 2 nombres.txt Gomez Claudio Rivero Jacinto Perez Jos Acua Rolando Es importante entender que sort no guarda el ordenamiento, solo muestra por la stdout la lista ordenada.

wc Cuenta cantidad de palabras, lneas y caracteres en uno o ms archivos. Por defecto presenta los tres datos por cada archivo que reciba y despus presenta las sumas. Con la opcin -c presenta la cuenta de palabras, con -l la cuenta de lneas, con -w la cuenta de palabras y con L la longitud de la lnea ms larga.

Para los archivos de ejemplo anteriores: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

$ wc nombres.txt 4 8 54 nombres.txt $ wc archivo.txt 25 72 513 archivo.txt Siempre el orden de la salida es: Lneas Palabras Bytes Nombre_de_archivo

Tuberias

Podramos representar cada programa como una caja negra que tiene una entrada y una salida que se pueden unir entre ellos. Debido a que la entrada por defecto es el teclado y la salida por defecto es terminal, graficaremos cuando sea necesario ambos. El ejemplo que utilizamos se encuentra esquematizado en la figura

Siendo la entrada estndar el teclado y la salida estndar el terminal o por simplicidad la pantalla. Vamos a suponer un caso ficticio donde necesitamos todas las definiciones de cada palabra en un texto. Primero las ordenamos alfabticamente, luego utilizamos un comando ficticio llamado diccionario que toma palabras de la entrada estndar y las reescribe junto a su significado en la salida estndar. Su esquema se ve en la figura

En este caso nombramos por separado las entradas y salidas estndares de los dos programas, pero la unin entre ambos programas se puede considerar como un slo tubo. En ese tubo, el flujo est en un estado intermedio, donde est ordenado, pero no tiene las definiciones de diccionario. En la lnea de comandos esto se escribe de la siguiente manera:

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

$ sort | dicccionario Donde el caracter " | " representa la conexin entre la salida estndar de un programa y la entrada estndar de otro. Con este fuerte y simple concepto se pueden concatenar gran cantidad de programas como si fuera una lnea de produccin en serie para generar resultados complejos. Para mejorar nuestro ejemplo sacaremos las palabras repetidas, antes de mostrarlas con definiciones. Suponiendo que exista un programa llamado sacar-repetidas, la lnea de comando sera: $ sort | sacar-repetidas | diccionario Simple, utilizando herramientas sencillas logramos algo un poco ms complicado. El inconveniente que tenemos en este ejemplo es que hay que escribir aquello a procesar. Normalmente queremos utilizar archivos como entrada de nuestros datos. Es necesario un comando que enve a la salida estndar un archivo, as se procesa como la entrada estndar del sort y contina el proceso normalmente. Este comando es cat. La sintaxis es simple cat nombre-de-archivo Quedando nuestro ejemplo: $ cat archivo.txt | sort | sacar-repetidas | diccionario ... esto crea un glosario de las palabras que se encuentren en archivo.txt La combinacin de comandos es incalculable y brinda posibilidades enormes. Veamos algunos ejemplos. En el caso que se quieran buscar procesos con el string http: $ ps ax | grep http 3343 ? S 3344 ? S 3975 ? S 12342 pts/6 S

0:00 httpd 0:00 httpd 0:00 httpd 0:00 grep

-DPERLPROXIED -DHAV -DPERLPROXIED -DHAV -DPERLPROXIED -DHAV http

Si queremos eliminar la ultima linea podemos volver a usar grep con la opcion -v $ ps 3343 3344 3975 ax | grep http | grep -v grep ? S 0:00 httpd -DPERLPROXIED -DHAV ? S 0:00 httpd -DPERLPROXIED -DHAV ? S 0:00 httpd -DPERLPROXIED -DHAV

Se pueden filtrar las lneas que contengan la palabra linux del archivo arch1.txt y luego mostrarlas en un paginador como less. 25 de Mayo 445 Piso 2 Tel 43132484 /2486/2475 (1002) Bs.As. opensource@osi-sistemas.com.ar

$ cat arch1.txt | grep linux | less Podemos enviar los resultados por correo a un amigo, con un asunto que diga "Tu archivo". $ cat arch1.txt | grep linux | mail -s 'Tu archivo' amigo@email.com

Redireccin

En repetidas ocaciones en la vida de un sistema es mejor tener todo en archivos, ya sea para guardar algn historial o para automatizar ciertas funciones dentro de scripts. Para almacenar o sacar informacin de archivos y vincularlas con entradas o salidas estndares se utilizan las Redirecciones. La redireccin se expresa con los smbolos "Mayor" > y "Menor" <. Y se pueden utilizar en forma simple o doble. Utilizando el comando cat se puede hacer una copia de arch1.txt a arch2.txt utilizando redireccin. $ cat arch1.txt > arch2.txt O se puede redireccionar un archivo para visualizarlo con el comando less. $ less < arch1.txt Redireccin de escritura Para escribir un archivo se utiliza >. Hay que tener mucho cuidado de no borrar un archivo sobreescribindolo. Cuando se utilizan redirecciones, debido a su utilidad en los scripts, "no se realizan confirmaciones". Si el archivo a escribir ya existe desde antes, el redireccionador > lo sobreescribe con flujo de texto nuevo. En cambio el operador >> realiza un agregado de texto en el flujo existente. No hay nada mejor que un ejemplo clarificador: $ escribe-en-salida-estandar > archivo.txt El (falso) comando escribe-en-salida-estndar justamente hace eso, escribe unas cuantas cosas en salida estndar.

Puede ser un comando ls, un comando cal (calendario) o cualquier comando antes visto, as como 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

tambin una combinacin de comandos por tuberas. En este punto, el contenido de archivo.txt es lo mismo que saldra en pantalla. Si ejecutamos otro comando redireccionado a archivo.txt (nuevamente), ste pierde su contenido y el resultado de la operacin pasa a estar en el mismo. Cuando se necesita tener una lista de acontecimientos, no se quiere que un acontecimiento nuevo borre a todos los anteriores. Para lograr esto agregamos en vez de sobreescribir. $ echo Este es el acontecimiento Nro. 1 > bitacora.log $ echo Este es el segundo acontecimiento >> bitacora.log Va a escribir dos lneas en el archivo bitacora.log sin eliminar nada. Ejemplo: Si queremos combinar el ejemplo de las tuberas con lo aprendido recientemente podramos escribir: $ cat archivo.txt | sort | sacar-repetidas | diccionario >> glosario.txt Redireccin de lectura Para la lectura es el smbolo menor < y se utiliza de la siguiente manera: $ comando-que-acepta-stdin < archivo-de-entrada.txt Como por ejemplo: $ mail usuario1@micolegio.edu.ar usuario2@micolegio.edu.ar < correo.txt Dnde correo.txt podra ser un archivo que se genere automticamente... as como su contenido. Otra facilidad para redireccionar entrada estndar es <<, que despus de un comando, permite ingresar, por teclado, un texto que se constituir en la entrada estndar. A continuacin de << debe ponerse una palabra, que indicar fin de entrada (en nuestro ejemplo, chau). La entrada estndar constar de las lneas que se digiten a continuacin hasta la primera que contenga slo la palabra que indicaba fin de entrada. Por ejemplo: $ sort <<chau > Per > Argentina > Brasil > chau Argentina Brasil Per 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

ordenar las palabras dadas (excepto chau que indica el fin de la entrada). As, << es equivalente a editar un archivo y despus redireccionarlo a la entrada estndar de un programa. Combinaciones de teclas [Ctrl]+[Alt]+[Del] Shutdown. Apaga el sistema de forma organizada desde una terminal texto. [Ctrl]+[Alt]+[F1] Cambia a la primera terminal de texto. [Ctrl]+[Alt]+[Fn] Cambia a la terminal de texto numero n (n=1,...,6) [Ctrl]+[Alt]+[F7] Cambia a la primera terminal X (si se esta usando alguna) [Ctrl]+[Alt]+[Fn] Cambia a la terminal X numero n (n=7,...,12) [Tab] Auto-completa el nombre de un mandato, archivo, directorio, programa. Cuando trabajamos en una terminal texto. [ArrowUp] (Flecha arriba) Va editando la historia de mandatos que hemos escrito anteriormente en terminal texto. [Shift][PgUp] Scroll la salida de la terminal hacia arriba, en terminal texto. [Shift][PgDown]: Scroll la salida de la terminal hacia abajo, en terminal texto. [Ctrl]+c Termina el proceso actual. Si no esta corriendo de fondo 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

[Ctrl]+d Termina la terminal actual. Tambin es la combinacin para el comando exit. [Ctrl]+s Para la transferencia a la terminal. [Ctrl]+z Manda el proceso actual a correr de fondo.
Ejercicios

Enunciado 1 Con los comandos aprendidos, mostrar de un directorio de varios archivos, los primeros 10. Resolucin $ ls | head

Enunciado 2 Modificar el ejercicio anterior, para mostrar los 10 archivos de mayor tamao, ordenados alfabticamente. Resolucin $ ls -l --sort=size | head o $ ls -lS | head

Enunciado 3 En un directorio con varios archivos, mostrar slo los que tienen una determinada terminacin. Como por ejemplo .txt utilizando grep y find. Resolucin $ ls | grep *.txt o $ find ~ -name *.txt 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

4.1 - Modificacin de textos, filtros

Aprendiendo vi - el mtodo de la Hoja de Trucos ( by IBM developerWoks )

1. Empezando

Introduccin sta guia te ensear a usar vi, un potente editor visual. Utilizando un mtodo especial basado en una hoja de trucos, este tutorial se ha escrito para hacer de ti un buen usuario de vi sin que tengas que perder mucho el tiempo. En este tutorial, aprenders como moverte, editar texto, usar el modo insertar, copiar y pegar texto as como usar extensiones tiles de vim como el modo visual y la edicin multiventana. Si desconoces o no te sientes cmodo usando vi, quizs quieras leer este tutorial y alcanzar la velocidad de la luz con uno de los ms populares y poderosos editores visuales para Linux/UNIX Sobre esta gua... Hay una caracterstica de vi que hace difcil aprender su funcionamiento... vi tiene muchos comandos. Para usar vi de una forma efectiva, vas a tener que memorizar unos cuantos. sto puede llevarte tiempo, y uno de los objetivos de este tutorial es no quitarte demasiado tiempo. As que, desde el principio, tengo un reto -- como lo hago para ayudarte a memorizar un montn de comandos en poco tiempo? Para superar el reto, conforme vayamos avanzando en este tutorial, vamos a ir haciendo gradualmente una hoja de trucos para vi. Esta hoja va a contener todos los comandos vi importantes. Una vez hayas completado este tutorial, podrs acudir a tu hoja de trucos si te has olvidado de un comando en particular. Conforme pase el tiempo, irs memorizando los comandos, y cada vez dependers menos de la hoja. Vas a aprender a usar vi de la forma ms rpida nunca conocida! El proceso de aprendizaje En sta guia voy a usar varias tcnicas para ayudarte a aprender. Primero, voy a describirte como funcionan ciertos comandos en particular, como era de esperar. Despus, voy a pedirte que pruebes esos comandos directamente en vi (para que practiques), entonces te dir que apuntes esos comandos en tu hoja de trucos (para que puedas consultarlo ms tarde). Si quieres aprender vi rpidamente, es muy importante que sigas todos esos pasos. Probar un comando y transcribirlo despus a tu hoja de trucos te ayudar a memorizar ese comando. Introduciendo a vim Existen muchas versiones de vi, yo os voy a ensear como usar una versin de vi llamada vim. vim es muy popular y tiene un montn de extensiones que hacen a vi mucho ms ameno (si en algn momento, enseo un comando especfico de vim, lo indicar.) Si quieres instalar vim, puedes obtenerlo de www.vim.org. Adems de una linea de comandos vi mejorada, vim tambin viene con gvim, un editor amigable en modo grfico que puede ser configurado para usar las excelentes libreras para GUIs GTK +. A continuacin puedes ver una captura de pantalla de gvim en mi sistema: Si eres un novato, prueba de ejecutar gvim en tu sistema. Usar vi desde un GUI puede hacer la vida ms fcil a los principiantes. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

2. Primeros pasos

Escoje un archivo Antes de usar vi para editar archivos, necesitas saber como usar vi para moverte por un archivo. vi tiene muchos comandos de desplazamiento, y vamos a ver unos cuantos de ellos. Para esta parte del tutorial, busca un archivo de texto no importante y brelo en vi escribiendo: Cargar un archivo en vi $ vi myfile.txt Si tienes instalado vim, escribe vim myfile.txt. Si prefieres usar gvim, teclea gvim myfile.txt. myfile.txt debe ser el nombre de un archivo de texto en tu sistema. Dentro de vi Despus de que vi cargue, deberas ver una parte del archivo de texto que cargaste en tu pantalla. Felicidades -- ests en vi! A diferencia de muchos otros editores, cuando vi arranca, est en un modo especial llamado modo comando. Esto significa que si presionas l en el teclado, en vez de introducir una l en la posicin actual del cursor, el cursor se va a mover un carcter a la derecha. En el modo comando, los caracteres en tu teclado se usan para enviar comandos a vi, ms que para introducir caracteres literales en el texto. Uno de los tipos de comando ms esenciales son los comandos de movimiento; vamos a echarle un vistazo a alguno.

3. Movindote

Movindote en vi, primera parte Cuando ests en modo comando, puedes usar las teclas h,j,k y l para mover el cursor izquierda, abajo, arriba y derecha respectivamente. Si estas usando una versin moderna de vi, tambin puedes usar las teclas de cursor. Las teclas h,j,k y l son prcticas porque, una vez te hayas acostumbrado a ellas, sers capaz de moverte por el archivo sin tener que mover tus dedos de la misma linea del teclado. Intenta usar h,j,k y l y las teclas de cursor para moverte por el archivo de texto. Intenta ahora apretar h hasta llegar al principio de una lnea. Observa que vi no te sita a la cola de la lnea anterior presionando h. De la misma forma, no puedes situarte al principio de la siguiente linea llegando al final de la linea actual presionando l. Movindote en vi, segunda parte vi posee atajos especiales para ir al principio o al final de la linea actual. Puedes usar 0 (cero) para saltar al primer carcter de una linea, y $ para saltar al ltimo carcter. Prubalos y observa como funcionan. La gran cantidad de comandos de movimiento que posee vi lo convierten en un gran "pager" (como los comandos more o less.) Usar vi como pager tambin te ayudar a aprender todos los comandos de movimiento ms rpidamente. Tambin puedes usar <CTR>F y <CTR>B para moverte una pgina adelante o atrs. Las versiones modernas de vi (como vim) permiten tambin usar las teclas PGUP y PGDOWN para este fin.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Movindote entre palabras, parte 1 vi tambin te permite moverte una palabra a la derecha o a la izquierda. Para situar el cursor en el primer carcter de la siguiente palabra, pulsa w. Para moverte al ltimo carcter de la siguiente palabra, pulsa e. Para moverte al primer carcter de la palabra anterior, pulsa b. Juega con esto. Movindote entre palabras, parte 2 Despus de jugar un poco con los comandos de movimiento entre palabras, te habrs dado cuenta de que vi considera palabras tipo foo-bar-oni, como cinco palabras separadas! sto es as por defecto: vi delimita las palabras por espacios o signos de puntuacin. foo-bar-oni es, por lo tanto, considerada como cinco palabras: foo, -, bar, - y oni. A veces, este comportamiento es el que queremos. Otras no. Afortunadamente, vi tambin entiende el concepto de "palabra grande". vi delimita las "palabras grandes" mediante espacios o saltos de linea solamente. sto significa que foo-bar-oni es considerada como cinco palabras vi, y a su vez, se considera una nica "palabra grande" vi. Movindote entre palabras, parte 3 Para saltar hacia la siguiente "palabra grande" o hacia la anterior, usa los comandos de movimiento entre palabras en maysculas. Usa W para saltar hacia el primer carcter de la siguiente "palabra grande", E para saltar al ltimo carcter de la siguiente "palabra grande", y B para saltar al primer carcter de la "palabra grande" anterior. Prueba todos stos comandos y compara los resultados de los comandos de movimiento entre palabras con los de movimiento entre "palabras grandes" hasta que entiendas las diferencias. Movimientos mayores Nos quedan pocos comandos por ver antes de empezar a ponerlos juntos en nuestra hoja de trucos... Puedes usar los caracteres ( y ) para moverte hacia el principio de la siguiente o anterior frase. Tambin puedes usar { o } para saltar al principio del prrafo actual o al del siguiente. Prubalo.

4. Saliendo

Ya hemos descubierto los comandos bsicos de movimiento, pero todava hay otro montn de comandos que necesitas saber. Escribiendo :q saldrs de vi. Si no funciona, seguramente se deber a que, de alguna forma, has modificado el archivo accidentalmente. Para decirle a vi que queremos salir y descartar todos los cambios, escribiremos :q!. En estos momentos deberas estar en la lnea de comandos. En vi, se conoce a cualquier comando que empiece por : como comando ex-mode. sto es as porque vi tiene un editor no-visual integrado llamado ex. Puede usarse de una forma muy parecida a sed para hacer operaciones de modificacin desde linea. Adems, puede usarse para salir, como ya hemos visto. Si alguna vez presionas la tecla Q estando en modo comando, sers llevado al modo ex. Si te ocurre esto alguna vez, te enfrentars cara a cara con un prompt :, apretar enter desplazar la pantalla entera hacia arriba. Para volver al modo normal de vi, simplemente teclea vi y pulsa enter.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

5. La Hoja de Trucos

El principio de la hoja de trucos Hemos visto un montn de comandos, y ha llegado el momento de pasarlos a nuestra hoja de trucos. Para la hoja de trucos necesitars una hoja tipo folio US o A4 (piensa que vamos a poner una gran cantidad de informacin en ella!) A continuacin puedes ver una foto de mi hoja de trucos despus de haber transcrito todos los comandos que hemos cubierto hasta ahora. Intenta imitar mi diseo si es posible de forma que podamos poner todo en una sola hoja. Hoja de trucos

vi miscelneo Sigamos con nuestro aprendizaje rpido de comandos. En modo comando, puedes saltar a una linea en concreto tecleando G. Para saltar a la primera linea de un fichero, teclea 1G. Observa que G est en maysculas. Si quieres saltar a la siguiente aparicin de una cadena de texto en particular, teclea /<regexp> y presiona enter. Substituye <regexp> por la expresin regular que ests buscando. Si no sabes como usar expresiones regulares, no te preocupes -- escribir /foo te llevar a la siguiente ocurrencia de foo. Slo tendrs que tener cuidado cuando necesites referenciar literalmente los caracteres ^, ., $ o \. Para estos caracteres debers poner una contra barra (\) como prefijo, y listo. Por ejemplo, /foo\.gif buscar la siguiente ocurrencia de "foo.gif". 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Para repetir la bsqueda hacia adelante, presiona n. Para repetir la bsqueda hacia atrs, teclea N. Como siempre, prueba estos comandos en tu propio editor vi. Tambin puedes teclear // para repetir la ltima bsqueda.
6. Guardando y Editando

Hemos aprendido como usar el comando ex :q para salir de vi. Si quieres salvar los cambios, teclea :w. Si lo que quieres es guardar los cambios en otro archivo, escribe :w nombrearchivo.txt para guardarlo como nombrearchivo.txt. Si quieres guardar y salir, teclea :x o :wq. En vim (al igual que en otros editores vi avanzados, como elvis), puedes tener mltiples buffers abiertos a la vez. Para abrir un archivo en un una ventana nueva, escribe :sp filename.txt. filename.txt aparecer abierto para edicin en una nueva ventana dividida. Para cambiar de una ventana a la otra, teclea <CTR>w<CTR>w (control-w dos veces). Cualquier comando :q, :q!, :w y :x que uses solo se aplicar a la ventana actualmente activa. Edicin simple Y lleg el momento de comenzar a aprender algunos de los comandos bsicos de edicin. Los comandos que vamos a cubrir en esta seccin se consideran simples porque te mantienen en modo comando. Los comandos "complejos" te ponen automticamente en modo insertar -- un modo que te permite entrar datos directamente desde el teclado. Lo veremos en breve. Por el momento, sitate por encima de algn carcter y presiona x varias veces. Vers que x elimina el carcter situado justo debajo del cursor. Ahora, muvete al medio de un prrafo dentro de tu archivo de texto, y pulsa J (en maysculas). Vers que el comando J indica a vi que junte la siguiente linea con el final de la linea actual. Ahora, situate encima de un carcter y presiona r, luego escribe un nuevo carcter; vers que el carcter original ha sido reemplazado. Para acabar, situate en una linea cualquiera del archivo y escribe dd. Observars que dd elimina la linea de texto actual. Repitiendo y borrando Puedes repetir cualquier comando de edicin pulsando la tecla .. Si experimentas un poco, vers que tecleando dd... eliminas 4 lineas, y J...... junta 4 lineas. Como siempre, vi nos proporciona otro atajo til :) Para borrar texto, puedes usar el comando d combinado con cualquier comando de movimiento. Por ejemplo, dw eliminar el texto desde la posicin actual hasta el comienzo de la siguiente palabra; d) eliminar hasta el final de la siguiente frase, y d} eliminar lo que queda de prrafo. Experimenta un poco con el comando d y el resto de comandos de edicin hasta que te sientas cmodo con ellos. Deshacer Ahora que ya hemos experimentado con el borrado, seria bueno aprender como deshacer cualquier cambio. Presionando u, la versin original de vi permita deshacer el ltimo cambio. Las versiones ms actuales de vi, como vim, te permiten presionar u repetidamente para ir deshaciendo los cambios que hayas podido hacer. Prueba de combinar algunos comandos d y u alternativamente. Actualizando la hoja de trucos Hora de actualizar la hoja de trucos! Despus de aadir los comandos que hemos aprendido hasta ahora, tu hoja de trucos debera parecerse a sta:

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Hoja de trucos con comandos de edicin

7. Modo Insertar

Hasta ahora, has aprendido cmo moverte dentro de vi, realizar e/s de archivos y algunas operaciones bsicas de edicin. De todas formas, todava no te he enseado como introducir texto libremente! Lo he hecho intencionadamente, porque el modo insertar de vi es un poco complicado al principio. De todas formas, una vez te acostumbres al modo insertar, su complejidad (y flexibilidad) se convertirn en una ventaja. Dentro del modo insertar de vi, podrs introducir texto directamente en la pantalla de la misma forma que lo haces con otros editores visuales. Una vez hayas introducido tus modificaciones, puedes presionar escape para volver al modo comando. Para entrar en modo insertar, presiona i o a. Al presionar i, tu texto ser insertado delante del carcter actual, y si pulsas a, tu texto sera aadido justo despus del carcter actual. Recuerda, debes presionar <ESC> para volver al modo comando. Ventajas del modo Insertar Ves probando los comandos a y i. Pulsa tanto a como i, escribe algo de texto, y luego pulsa escape para volver al modo comando. Despus de pulsar a o i, prueba de darle a <ENTER>, y mira que ocurre. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Prueba tambin a usar las teclas cursor (flechas) y <DEL> para deducir el uso del modo insertar. Usando las teclas cursor y <DEL>, puedes realizar bastantes tareas de edicin sin tener que cambiar varias veces de modo comando a modo insertar y viceversa. Opciones de Insertar Aqu tienes otras formas prcticas de acceder al modo Insertar. Presiona A (en maysculas) para empezar a aadir texto al final de la lnea actual, independientemente de tu posicin actual en sa lnea. De la misma forma, pulsa I (mayscula) para empezar a introducir texto al principio de la lnea actual. Pulsa o para crear una nueva linea por debajo de la lnea actual, en la cual podrs introducir texto, y pulsa O (mayscula) para crear una linea nueva por encima de la actual. Para reemplazar totalmente la linea actual con una nueva, teclea cc. Para reemplazar todo desde la posicin actual hasta el final de la linea, teclea c$. Para reemplazar todo desde la posicin actual hasta el principio de la lnea, teclea c0. Adems de realizar una operacin especial, cada uno de estos comandos te pondr en Modo Insertar. Despus de introducir tu texto, pulsa <ESC> para volver al modo comando. Cambiando texto Hemos usado el comando c (cambiar) por encima cuando hemos tecleado cc, c0 y c$. cc es una forma especial de comando de cambio, similar a dd. Los comandos c0 y c$ son ejemplos de como usar el comando cambiar en combinacin con los comandos de desplazamiento. De la misma forma, c funciona de una forma parecida a d, exceptuando que ste te deja en Modo Insertar para que puedas entrar texto de reemplazo en la regin recin eliminada. Prueba a usar varios comandos de desplazamiento con c y prubalos con tu archivo (pista: cW, ce, c( .)
8. Comandos Combinados

vi se vuelve realmente potente cuando comienzas a usar comandos combinados (comandos "combo"), como por ejemplo, d{ y cw. A parte de estos comandos, tambin puedes combinar un nmero con cualquier comando de movimiento, as por ejemplo 3w indicar a vi que salte tres palabras a la derecha. A continuacin te muestro algunos ejemplos ms de comandos "combo": 12b, 4j. vi, adems de permitir combinaciones del tipo (nmero)(comando de movimiento), tambin permite combinar d o c con un nmero o con un comando de movimiento. As, d3w eliminar las 3 palabras siguientes, d2j eliminar la siguiente lnea y las dos siguientes, etc. Prueba a combinar varios combos con c y d para ver lo potente y gil que puede ser la edicin con vi. Una vez asimiles estos comandos, sers capaz de editar archivos a una velocidad increble.

Actualizando la hoja de trucos Hora de actualizar de nuevo la hoja de trucos. Ms o menos debera parecerse a esto:

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Hoja de trucos con comandos combinados

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Caractersticas de productividad Hasta ahora, hemos visto como movernos, salvar y salir, realizar ediciones y borrados simples y usar el modo insertar. Con todo sto en la hoja, deberas ser capaz de usar vi para realizar casi cualquier tarea. Pese a sto, vi tiene ms comandos tiles. En sta seccin aprenders como cortar, copiar, pegar, buscar, reemplazar y usar autoindentacin. Todas stas posibilidades ayudarn a hacer a vi un poco ms divertido y productivo. Modo Visual La mejor forma para cortar y pegar es usar el modo visual, un modo especial que ha sido aadido en versiones modernas de vi, como vim y elvis. Puedes considerar el modo visual como un modo de "resaltado de texto". Una vez que el texto queda resaltado, puede ser copiado o eliminado, para ser pegado despus. Si estas usando gvim, puedes resaltar el texto simplemente arrastrando el ratn con el botn izquierdo presionado sobre una regin de texto determinada:

VIM con texto resaltado

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Puedes entrar en modo visual pulsando v (que es la nica opcin que tendrs si usas vi desde la consola.) Entonces mueve el cursor usando los comandos de movimiento (o ms tpicamente, las teclas de desplazamiento), vers que puedes resaltar una regin de texto. Cuando la regin de texto que quieras est resaltada, estar lista para ser cortada o copiada. Si quieres copiar el texto, pulsa y (que proviene del trmino ingls "yank"). Si ests cortando el texto, pulsa d. Volvers entonces al modo comando. Ahora situate en la posicin donde quieres insertar el texto copiado o cortado, y pulsa P para insertar el texto antes del cursor, o p para insertarlo despus. Voil! El copiado/cortado est completo! Prubalo varias veces antes de avanzar a la siguiente seccin. Reemplazando texto Para reemplazar patrones de texto, usamos el modo ex. Si quieres reemplazar el primer patrn que aparece en la lnea actual, escribe :s/<regexp>/<reemplazo>/ y presiona <ENTER>, substituye <regexp> por el texto que quieres substituir y <reemplazo> por la cadena con el que lo quieres substituir. Para reemplazar todas las coincidencias en la lnea actual, teclea :s/<regexp>/<reemplazo>/g y pulsa enter. Para reemplazar todas las ocurrencias de un patrn en tu archivo (que normalmente es lo que quieres), escribe :%s/<regexp>/<reemplazo>/g. Si quieres realizar un reemplazo global, pero haciendo que vi te confirme cada vez cada cambio, teclea :%s/<regexp>/<reemplazo>/gc (la c viene del ingls, "change", cambiar) y pulsa <ENTER>. Indentacin vi incluye soporte para autoindentacin, ideal para editar cdigo fuente. La mayora de las versiones modernas de vi (p.e. vim) activarn automticamente el modo autoindentado cuando edites un archivo de cdigo fuente (cmo por ejemplo un archivo .c). Cuando el autoindentado est activo, puedes usar <CTR>d (control-d) para indentar un nivel hacia la izquierda y <CTR>t (control-t) para indentar a la derecha un nivel. Si el autoindentado no se activa automticamente, puedes hacerlo de forma manual con el comando ex :set autoindent. Puedes tambin indicar a vi el tamao de cada tabulacin a tu gusto mediante el comando :set tabstop; :set tabstop=4 es bastante popular.

La hoja de trucos definitiva Y bien, ya hemos llegado al final de ste tutorial de vi! Una vez aadas todos los comandos de edicin avanzada a tu hoja de trucos, debera quedar como la siguiente:

Hoja final de trucos 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Ten tu hoja de trucos a mano, y empieza a usar vi para editar archivos y escribir correos electrnicos. Usa la hoja de trucos cuando la necesites; vers que en una semana te sabrs casi todos los comandos de memoria y tu productividad con vi llegar a su mximo. Si quieres usar vi como tu editor por defecto haz el siguiente cambio en /etc/rc.conf: Usar vi como editor por defecto (Establece EDITOR a tu editor preferido.) #EDITOR="/bin/nano" EDITOR="/usr/bin/vim" #EDITOR="/usr/bin/emacs"

Recursos

A continuacin tienes unos cuantos recursos que pueden resultarte tiles para aprender ms sobre vi: La pgina de los amantes de vi : http://www.thomer.com/thomer/vi/vi.html Un recurso excelente para todo aquello relacionado con vi. La pgina de vim : http://www.vim.org/ El lugar a acudir para todo aquello relacionado con vim Acerca de ste documento La versin original de este artculo fue publicada por primera vez en IBM developerWoks, y es propiedad de Westtech Information Services. Este documento es una versin actualizada del artculo original, y contiene varias mejoras realizadas por el Equipo de Documentacin de Gentoo.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

4.2 - Redireccionamiento y Tuberias

Introduccin

En ste captulo se ver como usar expresiones regulares para usar y filtrar ficheros y cadenas de texto. Se crearn construcciones simples con varios elementos de notacin as como herramientas para las expresiones regulares que permitirn realizar bsquedas en el sistema de ficheros o en contenidos de ficheros. Los comandos que se vern en este tema son: grep regexp (Expresiones regulares) sed En este captulo no se harn ejercicios, ya que hay suficientes ejemplos para trabajar con el tema y crear o modificar los existentes para hacer pruebas. Este tema tiene un peso (importancia) de 3 de cara al examen final de la certificacin LPI 101. El total de la suma de pesos de todos los temas es de 106. Utilizando las Expresiones Regulares Anteriormente se describi el filename globbing con comodines, lo que nos permite listar o encontrar ficheros con elementos comunes (p.e., nombres de fichero o extensiones) con una sola expresin. Los file globs utilizan caracteres especiales como *, que tienen un significado especial en el contexto de la lnea de comandos. La shell bash interpreta varios comodines, los suficientes como para manejar el problema relativamente simple del filename globbing. Otros problemas no son tan simples, y extender el concepto de glob para cualquier forma genrica de texto (ficheros, streams de texto, variables de cadenas de programas, etc.) puede ofrecer un amplio abanico de posibilidades. Esto se consigue con la utilizacin de las Expresiones Regulares. Dos utilidades importantes para los exmenes LPIC Nivel 1 que utilizan estas expresiones regulares son grep y sed. Estas utilidades son prcticas para las bsquedas de texto. Hay muchas otras herramientas que hacen uso de las expresiones regulares incluyendo awk, los lenguajes Perl y Python y otras utilidades pero, de momento, no es necesario preocuparse de ellas para los exmenes LPIC de Nivel 1. Utilizando grep Hace mucho tiempo, cuando la idea de las expresiones regulares comenzaba a calar, el editor de lneas ed inclua un comando para visualizar las lneas del fichero en edicin que coincidiesen con una expresin regular determinada. El comando era: g/expresin regular/p Esto es, "de forma global, imprime la lnea actual cuando se encuentre una 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

coincidencia con la expresin regular, o de forma ms simple y en ingls, "global Expresin Regular print." Esta funcin era tan prctica que pronto se convirti en una utilidad independiente a la que se le llam, apropiadamente, grep. Ms adelante se expandi la gramtica de las expresiones regulares de grep en un nuevo comando llamado egrep (por "extended grep"). Se pueden encontrar ambos comandos en cualquier sistema GNU/Linux actual, existiendo ligeras diferencias en la forma de interpretar las expresiones regulares. Para la preparacin del examen 101 se usar grep que tambin puede utilizar las expresiones regulares extendidas si se incluye la opcin -E. Sintaxis grep [opciones] regexp [ficheros] Descripcin Busca en ficheros o en la entrada estndar lneas que contengan alguna coincidencia con la expresin regular regexp. Por defecto, solo se listarn las lneas coincidentes. Cuando se especifiquen varios ficheros en la bsqueda, grep incluir el nombre del fichero como prefijo en las lneas listadas. En la tabla 7-1 se pueden observar algunas opciones del comando. Tabla 7-1 Opciones utilizadas frecuentemente Opcin -c -h -i -n -v Uso Muestra solo un contador de las lneas coincidentes pero no las lneas en si mismas. Muestra las lneas coincidentes pero no los nombres de ficheros en bsquedas de mltiples ficheros. Ignora las maysculas y minsculas de tal forma que abc coincidira tanto con abc como con ABC. Muestra las lneas coincidentes precedidas por su nmero de lnea. Cuando se utiliza con varios ficheros se incluye tanto el nombre del fichero como el nmero de lnea. Imprime todas las lneas que no coinciden con regexp. Esta es una opcin til e importante, a veces se quiere utilizar expresiones regulares no solo para seleccionar informacin, sino para eliminar informacin. La utilizacin de -v invierte la salida de sta forma.

Ejemplos: Como las expresiones regulares pueden contener tanto metacaracteres como literales, podemos utilizar grep con una expresin regular totalmente literal. Por ejemplo, para encontrar todas las lneas en fichero1 que contengan tanto Linux como linux se podra utilizar grep de la siguiente manera: $ grep -i linux fichero1 En este ejemplo, la expresin regular es, simplemente, "linux.". La L mayscula en "Linux" es coincidente gracias a la opcin -i (ignorar maysculas/minsculas). sto est bien para expresiones literales comunes. No obstante, en situaciones en las cuales regexp incluya metacaracteres que tambin sean caracteres especiales de la shell (como $ o *), regexp debe estar entrecomillada para evitar la expansin de la shell y poder pasar estos metacaracteres a grep. Como un ejemplo simplista de sto ltimo, suponiendo que se tiene en el directorio local unos ficheros llamados abc, abc1, y abc2. Cuando se usa el comando echo de bash con la expresin comodn abc* se 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

listarn todos los ficheros que comiencen por abc, como se muestra a continuacin: $ echo abc* Ahora suponiendo que estos ficheros contienen lneas con las cadenas abc, abcc, abccc y similares y que se quiere emplear grep para encontrarlas. Se puede utilizar la expresin comodn abc* para que se expanda para todos los ficheros abc como se mostr con echo ms arriba, y tambin se podra utilizar una expresin regular idntica abc* para encontrar todas las lneas que contengan abc, abcc, abccc, etc. Si no se utiliza las comillas para evitar la expansin de la shell, el comando sera: $ grep abc* abc* Despus de la expansin de la shell quedara: $ grep abc abc1 abc2 abc abc1 abc2 # incorrecto! Esto no es lo que se pretenda! grep buscar solo la expresin literal abc, porque es lo que encuentra como primer argumento. Para evitar sto, se encierra la expresin regular con comillas simples o dobles para protegerla de la expansin de la shell: $ grep 'abc*' abc* o: $ grep "abc*" abc* Despus de la expansin, ambos ejemplos obtienen los mismos resultados: $ grep abc* abc abc1 abc2 sto era lo que se pretenda. La expresin regular abc* se buscar en los tres ficheros abc, abc1, y abc2. Es una buena prctica habituarse a entrecomillar las expresiones regulares en la lnea de comandos para evitar problemas similares, stos no son, ni mucho menos, obvios ya que la expansin de la shell es invisible a no ser que se utilice el comando echo. En el examen: Es usual la aparicin de preguntas sobre la utilizacin de grep y sus opciones. Se debera estar familiarizado con lo que hace cada opcin as como con el concepto de utilizar la salida de otros comandos como entrada de grep mediante pipes ( | ) para buscar coincidencias. Utilizando sed Anteriormente se present sed, el editor de streams, se coment como sed utiliza direcciones para localizar el texto sobre el que operar. Entre los mecanismos de direccionamiento mencionados estaba la utilizacin de expresiones regulares delimitadas entre barras inclinadas. La sintaxis que se vi de sed era: sed [opciones] 'comando1' [ficheros] sed [opciones] -e 'comando1' [-e 'comando2'] [ficheros] sed [opciones] -f script [ficheros] Descripcin Se observa que comando1 est escrito entre comillas simples, esto se ha hecho 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

por las mismas razones que se hizo anteriormente con grep, el texto en comando1 debe ser protegido de la posible expansin y evaluacin de la shell. La parte de direccin de un comando sed puede contener expresiones regulares encerradas entre barras inclinadas. Por ejemplo, para mostrar el contenido de fichero1 exceptuando las lneas en blanco se podra utilizar la opcin eliminar de sed (d) de la siguiente forma: $ sed '/^$/ d' fichero1 En este caso, la expresin regular ^$ (^ indica principio de lnea, $ indica final de lnea; as por tanto, ^$ busca una lnea en la que el principio y el final coinciden, es decir, una lnea en blanco) coincide con las lneas en blanco y la opcin d elimina esas lneas coincidentes de la salida de sed. Entre comillas Como se mostr en los ejemplos de grep y sed es necesario entrecomillar los metacarcteres de las expresiones regulares si se quiere preservar sus funciones especiales. Si no se hace sto, se pueden producir resultados inesperados cuando la shell interprete los metacaracteres como caracteres de file globbing. Hay tres maneras de entrecomillado que pueden utilizarse para preservar los caracteres especiales:

\ (una barra invertida sin comillas) Si se pone una barra invertida antes de un carcter especial, ste no ser interpretado por la shell, sino que pasar sin alteracin hacia el comando que se est introduciendo. Por ejemplo, el metacaracter * podra utilizarse en una expresin regular de esta forma:

$ grep abc\* abc abc1 abc2 Aqu se buscar en los ficheros abc, abc1, y abc2 la expresin regular abc*. Comillas simples Encerrar los metacarcteres con comillas simples tambin los protege de la interpretacin de la shell. Se asume el valor literal de todos los caracteres entre comillas simples. Comillas dobles Encerrar los metacarcteres con comillas dobles tiene el mismo efecto que con comillas simples con la excepcin de los caracteres $, ' (comilla simple), y \ (barra invertida). Tanto $ como ' mantienen sus significados especiales dentro de las comillas dobles. La barra invertida mantiene su significado especial cuando va seguida de $, ', otra barra invertida, o un carcter de nueva lnea. En general, las comillas simples son ms seguras a la hora de preservar las expresiones regulares. En el examen: se ha de prestar atencin especial a los mtodos de entrecomillado utilizados para preservar los carcteres especiales porque las distintas formas de entrecomillar no tienen por que producir los mismos resultados.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Expresiones Regulares GNU/Linux ofrece muchas herramientas de procesamiento de texto para los administradores de sistemas. Muchas, como sed y los lenguajes awk y Perl, son capaces de editar automticamente varios ficheros proporcionando una amplia gama de posibilidades para el procesamiento de textos. Para aprovechar estas prestaciones se necesita ser capaz de definir y delimitar segmentos de texto especficos dentro de ficheros, desde streams de texto y variables de cadena. Una vez identificado el texto que se busca se puede utilizar una de esas herramientas o lenguajes para hacer lo que se necesite con el texto seleccionado. En conjunto, a ste lenguaje y a las secuencias en s mismas, se les llama expresiones regulares (a menudo se abrevia como regexp o regex). Aunque las expresiones regulares son conceptualmente similares a los file globs, existen muchos ms carcteres especiales para las expresiones regulares extendiendo la utilidad y las prestaciones de las herramientas que las interpretan. Hay libros completos sobre las expresiones regulares (como el excelente y muy legible Mastering Regular Expresions de Jeffrey E. F. Friedl (ISBN: 1-56592-257-3), publicado por O'Reilly & Associates). El examen 101 requiere del uso de expresiones regulares y de las herramientas relacionadas especficamente para realizar bsquedas desde fuentes de texto. Esta seccin cubre solo lo bsico de las expresiones regulares, sera muy recomendable profundizar en este tema cuando se tenga ocasin. Sintaxis de las Expresiones Regulares Sera razonable asumir que hay alguna especificacin que define como se construyen las expresiones regulares. Desafortunadamente no hay ninguna. Las expresiones regulares han sido tradicionalmente incorporadas como una prestacin en diferentes herramientas con diferentes grados de consistencia e integridad. El resultado ha sido un caso similar al del carro delante del caballo, en el que las utilidades y lenguajes han ido definiendo su propio tipo de sintaxis para las expresiones regulares, cada uno con sus propias extensiones e idiosincrasias. La definicin formal de la sintaxis de las expresiones regulares vino despus, as como los esfuerzos para hacerla ms consistente. Las expresiones regulares estn formadas por cadenas estructuradas de texto o secuencias. Estas secuencias estn compuestas por dos tipos de caracteres: Metacarcteres Al igual que los caracteres de file globbing, los metacarcteres de las expresiones regulares toman un significado especial en el contexto de la herramienta en la que estn siendo utilizados. Hay unos pocos metacaracteres que generalmente se consideran como parte del "conjunto extendido" de metacarcteres, especficamente aquellos introducidos en egrep despus de la creacin de grep. Ahora la mayora de esos pueden ser manejados por grep utilizando la opcin -E. Ejemplos de metacaracteres seran el smbolo ^, que significa "el principio de una lnea" y el signo $, que significa "el final de una lnea". En las tablas 7-2, 7-3 y 7-4 se puede ver una lista completa de metacaracteres.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Literales Todo lo que no es un metacarcter es, simplemente, texto plano o texto literal. A menudo es de ayuda considerar las expresiones regulares como un lenguaje en s mismo donde el texto literal actuara como palabras y frases. La "gramtica" del lenguaje estara definida mediante el uso de los metacarcteres. Los dos se combinaran de acuerdo a unas reglas especficas (las cuales, como se mencion antes, podran diferir ligeramente entre las diferentes herramientas) para comunicar ideas y hacer algn trabajo real. Cuando se construyen expresiones regulares se utilizan metacarcteres y literales para especificar tres ideas bsicas sobre el texto de entrada:

Referencia de posicin Se utiliza una referencia de posicin para especificar la posicin de uno o ms conjuntos de caracteres en relacin a la lnea de texto completa (como, por ejemplo, el principio de una lnea).

Conjuntos de caracteres Un conjunto de caracteres busca coincidencias en el texto. Podra ser una serie de literales, metacaracteres que coincidan con uno o varios caracteres, o combinaciones de ambos. Modificadores cuantitativos Los modificadores cuantitativos siguen a un conjunto de caracteres e indican el nmero de veces que el conjunto ha de ser repetido. Estos caracteres "dan elasticidad" a una expresin regular permitiendo que las coincidencias tengan longitud variable. La prxima seccin lista los metacaracteres ms comunes. Los ejemplos dados con los metacaracteres son muy simples y solo pretenden demostrar el uso de ese metacaracter en cuestin. Ms adelante se vern expresiones regulares ms complejas. Ejemplos de Expresiones Regulares Una vez dejados los detalles desagradables, se ponen ejemplos de uso prcticos de expresiones regulares que podran resultar tiles. Anclajes Las referencias de posicin se utilizan para describir informacin sobre posiciones. La tabla 7-2 lista los caracteres de anclaje. Tabla 7-2. Anclajes de Posicin de Expresiones Regulares Expresin Descripcin Regular ^ $ Coincide con el principio de lnea. Esta interpretacin slo tiene sentido cuando el carcter ^ est en el lado izquierdo de la expresin regular. Coincide con el fin de lnea. Esta interpretacin slo tiene sentido cuando el carcter $ est en el lado derecho de la expresin regular.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Ejemplo 1 Muestra todas las lneas de fichero1 en las cuales aparezca la cadena "Linux" en el principio de la lnea, o sea, que comiencen por dicha cadena: $ grep '^Linux' fichero1 Ejemplo 2 Muestra las lneas en fichero1 donde el ltimo carcter es una "x": $ grep 'x$' fichero1 Muestra el nmero de lneas vacas en fichero1 encontrando lneas con nada entre el principio y el final: $ grep -c '^$' fichero1 Muestra todas las lneas de fichero1 que contengan slo la palabra "nulo": $ grep '^nulo$' fichero1 Grupos y rangos Pueden situarse caracteres en grupos y rangos para hacer expresiones regulares ms eficientes, como se muestra en la tabla 7-3. Tabla 7-3. Conjuntos de caracteres de las expresiones regulares Expresin Regular Descripcin [abc] [a-z] Grupos y rangos de caracteres independientes. En la primera forma se hace coincidir cualquier carcter independiente de entre los caracteres a, b, o c. En la segunda forma, se hace coincidir cualquier carcter independiente de entre el rango acotado por los caracteres a y z. Los corchetes son slo para agrupar y no hacen coincidencia por si mismos. Coincidencia inversa. Se hace coincidir cualquier carcter independiente que no est entre a, b, o c o en el rango a-z. Se ha de tener cuidado con confundir esta inversin con el carcter de anclaje ^ que se describi anteriormente. Coincidencia de palabras. Las palabras son esencialmente conjuntos de caracteres rodeados de espacios en blanco o situados junto al inicio o fin de la lnea o un signo de puntuacin. Las barras invertidas son imprescindibles para que se interpreten de esta forma < y >. Coincide con cualquier carcter (slo uno), excepto el de fin de lnea. Como se mencion en la seccin de entrecomillado, desconecta (escape) el significado especial de carcter que le sigue convirtiendo metacaracteres en literales.

[^abc] [^a-z] \<palabra\>

. (un punto) \

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Ejemplo 1 Muestra todas las lneas de fichero1 que contengan "Linux", "linux", "TurboLinux" y similares: $ grep '[Ll]inux' fichero1 Ejemplo 2 Muestra todas las lneas de fichero1 que contengan tres dgitos numricos consecutivos: $ grep '[0-9][0-9][0-9]' fichero1 Ejemplo 3 Muestra todas las lneas de fichero1 que comiencen por cualquier carcter que no sea un dgito numrico: $ grep '^[^0-9]' fichero1 Ejemplo 4 Muestra todas las lneas de fichero1 que contengan la palabra completa "Linux" o "linux" pero no "LinuxOS" o "TurboLinux": $ grep '\<[Ll]inux\>' fichero1 Ejemplo 5 Muestra todas las lneas de fichero1 con cinco o ms caracteres en una lnea (excluyendo el carcter de nueva lnea): $ grep '.....' fichero1 Ejemplo 6 Muestra todas las lneas no vacas de fichero1 (aquellas que tienen al menos un carcter): $ grep '.' fichero1 Ejemplo 7 Muestra todas las lneas de fichero1 que contienen un punto (como . es un metacarcter, se ha de usar el codigo de escape): $ grep '\.' fichero1

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Modificadores de Expresiones Regulares Expresin Descripcin Regular * ? Coincide con un nmero indeterminado (cero o ms) del carcter (o expresin regular) que lo precede. Coincide con cero o una instancia de la expresin regular que lo precede. ste modificador es una funcin "extendida" y solo se dispone en grep cuando se utiliza la opcin -E. Coincide con una o ms instancias de la expresin regular que lo precede. Este modificador es una funcin "extendida" y solo se dispone en grep cuando se utiliza la opcin -E. Coincide con un rango de ocurrencias del carcter o la expresin regular que precede sta construccin. \{n\} coincide con n ocurrencias,\{n,\} coincide con al menos n ocurrencias, y \{n,m\} coincide con cualquier nmero de ocurrencias entre n y m inclusive. Las barras invertidas son imprescindibles y permiten la interpretacin de{ y }. Alternancia. Coincide tanto con la expresin regular especificada antes o despus de la barra vertical. Este modificador es una funcin "extendida" y solo se dispone en grep cuando se utiliza la opcin -E.

\{n,m\}

Ejemplo 1 Muestra todas las lneas de fichero1 que contengan "ab", "abc", "abcc", "abccc", y similares: $ grep 'abc*' fichero1 Ejemplo 2 Muestra todas las lneas de fichero1 que contengan "abc", "abcc", "abccc", y similares, pero no "ab": $ grep 'abcc*' fichero1 Ejemplo 3 Muestra todas las lneas de fichero1 que contengan dos o ms dgitos numricos consecutivos: $ grep '[0-9][0-9][0-9]*' fichero1 Ejemplo 4 Muestra lneas de fichero1 que contengan "fichero" (porque ? puede hacer coincidir cero ocurrencias), fichero1, o fichero2: $ grep -E 'fichero[12]?' fichero1 Ejemplo 5 Muestra todas las lneas de fichero1 que contengan al menos un dgito numrico: $ grep -E '[0-9]+' fichero1

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Ejemplo 6 Muestra todas las lneas de fichero1 que contengan "111," "1111," o "11111" en una lnea y nada ms: $ grep '^1\{3,5\}$' fichero1 Ejemplo 7 Muestra todas las lneas de fichero1 que contengan cualquier nmero de tres, cuatro o cinco dgitos: $ grep '\<[0-9]\{3,5\}\>' fichero1 Ejemplo 8 Muestra todas las lneas de fichero1 que contengan "Happy", "happy", "Sad", "sad", "Angry", o "angry": $ grep -E '[Hh]appy|[Ss]ad|[Aa]ngry' fichero1
Secuencias bsicas de las Expresiones Regulares

Ejemplo 1 Coincide con cualquier letra: [A-Za-z] Ejemplo 2 Coincide con cualquier signo (no letra o nmero): [^0-9A-Za-z] Ejemplo 3 Coincide con una letra mayscula seguida de cero o ms letras minsculas: [A-Z][a-z]* Ejemplo 4 Coincide con un nmero de la Seguridad Social de USA (123-45-6789) especificando grupos de tres, dos y cuatro dgitos separados por guiones: [0-9]\{3\}-[0-9]\{2\}-[0-9]\{4\} Ejemplo 5 Coincide con un importe en dlares utilizando un signo de dlar escapado, cero o ms espacios o dgitos numricos, un punto escapado y dos dgitos ms: \$[ 0-9]*\.[0-9]\{2\} Ejemplo 6 Coincide con el mes de mayo y su abreviatura, may. La interrogacin marca cero o una instancia del carcter o : mayo? 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Utilizando Expresiones Regulares como direcciones en sed Estos ejemplos son comandos que se proporcionaran a sed. Por ejemplo, los comandos podran situarse en lugar de comando1 en esta norma de uso: $ sed [opciones] 'comando1' [ficheros] Comandos que podran aparecer en un script independiente de sed. Ejemplo 1 Elimina lneas en blanco: /^$/d Ejemplo 2 Elimina cualquier lnea que no contenga #noborrar: /#noborrar/!d Ejemplo 3 Elimina lneas que contengan slo espacios en blanco (espacios o tabulaciones). En ste ejemplo tab significa el carcter tab y va precedido por un espacio: /^[ tab]*$/d Ejemplo 4 Elimina lneas que comiencen por puntos o signos #: /^[.#]/d Ejemplo 5 Sustituye cualquier nmero de espacios por un slo espacio donde quiera que aparezca en la lnea: s/ */ /g

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

5. Sistemas de Archivos 5.1 - Visin general del sistema de archivos de LINUX

Archivos: Tipos La base del sistema de archivos de Linux, es obviamente el archivo, que no es otra cosa que la estructura empleada por el sistema operativo para almacenar informacin en un dispositivo fsico como un disco duro, un disquete, un CD-ROM o un DVD. Como es natural un archivo puede contener cualquier tipo de informacin, desde una imagen en formato PNG o JPEG a un texto o una pgina WEB en formato HTML, El sistema de archivos es la estructura que permite que Linux maneje los archivos que contiene. Todos los archivos de Linux tienen un nombre, el cual debe cumplir unas ciertas reglas: Un nombre de archivo puede tener entre 1 y 255 caracteres. Se puede utilizar cualquier carcter excepto la barra inclinada / y no es recomendable emplear los caracteres con significado especial en Linux, que son los siguientes: = ^ ~ ' " ` * ; - ? [ ] ( ) ! & ~ < >. Para emplear ficheros con estos caracteres o espacios hay que introducir el nombre del fichero entre comillas. Se pueden utilizar nmeros exclusivamente si as se desea. Las letras maysculas y minsculas se consideran diferentes, y por lo tanto no es lo mismo carta.txt que Carta.txt carta.Txt Como en Windows, se puede emplear un cierto criterio de "tipo" para marcar las distintas clases de ficheros empleando una serie de caracteres al final del nombre que indiquen el tipo de fichero del que se trata. As, los ficheros de texto, HTML, las imgenes PNG o JPEG tienen extensiones .txt, .htm (o .html), .png y .jpg (o .jpeg) respectivamente. Pese a esto Linux slo distingue tres tipos de archivos: Archivos o ficheros ordinarios, son los mencionados anteriormente. Directorios (o carpetas), es un archivo especial que agrupa otros ficheros de una forma estructurada. Archivos especiales, son la base sobre la que se asienta Linux, puesto que representan los dispositivos conectados a un ordenador, como puede ser una impresora. De esta forma introducir informacin en ese archivo equivale a enviar informacin a la impresora. Para el usuario estos dispositivos tienen el mismo aspecto y uso que los archivos ordinarios. Enlaces 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Los enlaces son un tipo de archivo ordinario cuyo objetivo es crear un nuevo nombre para un archivo determinado. Una vez creado el enlace simblico ste permite acceder al fichero que enlaza de igual modo que si se hubiera copiado el contenido del mismo a otro fichero, con la ventaja de que este realmente no se ha copiado. Los enlaces simblicos son especialmente tiles cuando se quiere que un grupo de personas trabajen sobre un mismo fichero, puesto que permiten compartir el fichero pero centralizan las modificaciones. Como ejemplo se puede suponer la existencia de un fichero llamado balance.1999.txt, al que se crea un enlace simblico balance.txt. Cualquier acceso a balance.txt es traducido por el sistema de forma que se accede al contenido de balance.1999.txt. El camino o Path En cualquier sistema operativo moderno la estructura de archivos es jerrquica y depende de los directorios. En general la estructura del sistema de archivos se asemeja a una estructura de rbol, estando compuesto cada nudo por un directorio o carpeta, que contiene otros directorios o archivos. En Windows cada unidad de disco se identifica como una carpeta bsica que sirve de raz a otras, y cuyo nombre es especial a:, c:, d: etc. En los sistemas Unix, y por lo tanto en Linux, existe una nica raz llamada / de la que cuelgan todos los ficheros y directorios, y que es independiente de qu dispositivos estn conectados al ordenador. El camino o path de un fichero o directorio es la secuencia de directorios que se ha de recorrer para acceder a un determinado fichero separados por /. Supongamos la estructura de archivos de la Figura 2.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Existen dos formas del path o camino: el camino absoluto que muestra toda la ruta a un fichero, /home/luis/Carta.txt. el path relativo a un determinado directorio, por ejemplo si no encontramos en el directorio /home, el path relativo al fichero Carta.txt es luis/Carta.txt Para complicar aun ms las cosas, todos los directorios contienen dos directorios especiales: Figura 2 =El directorio actual, representado por el punto . =El directorio padre representado por dos puntos .. Estando en el directorio /home/pedro se puede acceder a Carta.txt con /home/luis/Carta.txt (path absoluto) o bien ../luis/Carta.txt (path relativo). En luis como ./Carta.txt o simplemente Carta.txt.

Estructura del sistema de archivos de Linux El sistema de archivo de Linux sigue todas las convenciones de Unix, lo cual significa que tiene una estructura determinada, compatible y homognea con el resto de los sistemas Unix. Al contrario que en Windows o MS-DOS el sistema de archivos en cualquier sistema Unix no est ligado de una forma directa con la estructura del hardware, esto es, no depende de si un determinado ordenador tiene 1, 2 o 7 discos duros para crear las unidades c:, d: o m:. Todos el sistema de archivos de Unix tiene un origen nico la raz o root representada por /. Bajo este directorio se encuentran todos los ficheros a los que puede acceder el sistema operativo. Estos ficheros se organizan en distintos directorios cuya misin y nombre son estndar para todos los sistema Unix. / Raz del sistema de archivos. /dev Contiene ficheros del sistema representando los dispositivos que estn fsicamente instalados en el ordenador. /etc Este directorio esta reservado para los ficheros de configuracin del sistema. En este directorio no debe aparecer ningn fichero binario (programas). Bajo este deben aparecer otros dos subdirectorios:

/etc/X11 Ficheros de configuracin de X Window /etc/skel Ficheros de configuracin bsica que son copiados al directorio del usuario cuando se crea uno nuevo. /lib Contiene las libreras necesarias para que se ejecuten los programas que residen en /bin (no las libreras de los programas de los usuarios). /proc Contiene ficheros especiales que o bien reciben o envan informacin al kernel del sistema (Se recomienda no modificar el contenido de este directorio y sus ficheros). /sbin Contiene programas que son nicamente accesibles al superusuario o root. 25 de Mayo 445 Piso 2 Tel 43132484 /2486/2475 (1002) Bs.As. opensource@osi-sistemas.com.ar

/usr Este es uno de los directorios ms importantes del sistema puesto que contiene los programas de uso comn para todos los usuarios. Su estructura suele ser similar a la siguiente: /usr/X11R6 Contiene los programas para ejecutar X Window. /usr/bin Programas de uso general, lo que incluye el compilador de C/C++. /usr/doc Documentacin general del sistema.

/usr/etc Ficheros de configuracin generales. /usr/include Ficheros de cabecera de C/C++ (.h). /usr/info Ficheros de informacin de GNU. /usr/lib Libreras generales de los programas. /usr/man Manuales accesibles con el comando man (ver ms adelante). /usr/sbin Programas de administracin del sistema. /usr/src Cdigo fuente de programas.

Existen adems de los anteriores otros directorios que se suelen localizar en el directorio /usr, como por ejemplo las carpetas de los programas que se instalen en el sistema. /var Este directorio contiene informacin temporal de los programas (lo cual no implica que se pueda borrar su contenido, de hecho, no se debe hacer!)

Acceso a los diferentes sistemas de archivos Como se ha visto anteriormente el sistema de archivos de Linux slo tiene una raz y su estructura es independiente de los dispositivos de almacenamiento existentes. Esto implica que el procedimiento a emplear para acceder a la informacin almacenada en los distintos sistemas de almacenamiento de un ordenador no es tan sencilla como en Windows, y requiere un proceso llamado montado, que se ver ms adelante. Cuando se ha terminado de trabajar con un determinado dispositivo hay que desmontarlo (No fsicamente!). Por ejemplo el proceso para leer un disquete sera el siguiente: 1. Introducir el disquete en la disquetera. 2. Montar el sistema de archivos del mismo. 3. Leer, grabar, y manipular el contenido del disquete. 4. Desmontar el sistema de archivos del disquete. 5. Extraer el disquete de la disquetera. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

El proceso puede parecer complejo pero es el precio a pagar por la seguridad, puesto que de esta forma se garantiza que no exista ninguna aplicacin que est usando el disquete cuando se extraiga. (En el caso de los CD-ROM Linux impide su extraccin hasta que se desmonta). Para complicar ms las cosas slo el administrador o root tiene permiso para montar y desmontar un sistema de archivos (por motivos de seguridad), aunque esto puede ser arreglado. Permisos Linux, al igual que todos los sistemas Unix, mantiene un sistema de permisos de acceso a los ficheros muy estricto, a fin de controlar qu es lo que se puede hacer con ellos, y quien lo puede hacer. Estos permisos se identifican con letras y son: r permiso de lectura el fichero w permiso de escritura en el fichero x permiso de ejecucin del fichero s permiso para cambiar el propietario del fichero Al contrario que en Windows o MS-DOS los programas ejecutables de Linux no estn marcados por una determinada extensin (.exe) sino por un atributo, el permiso de ejecucin x. Si se elimina este atributo a un programa, Linux no ser capaz de ejecutarlo. A su vez cada uno de estos permisos se aplica: al dueo del fichero (u), al grupo de usuarios al que pertenece el dueo (g), al resto de usuarios (a). As un fichero determinado puede tener permiso para ser ledo, escrito y ejecutado por su dueo, ledo y ejecutado por el grupo al que pertenece y no tener ningn tipo de acceso para los dems usuarios. Como se puede entender este tipo de mecanismo es especialmente til cuando se trabaja en grupo en un determinado proyecto.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar


Introduccin

5.2 - Creacin de particiones y de sistemas de archivos

En este tema se ver como crear y formatear particiones con las herramientas que ofrece GNU/Linux. Los comandos que se vern en este tema son: fdisk mkfs En este captulo no se harn ejercicios, ya que hay suficientes ejemplos para trabajar con el tema y crear o modificar los existentes para hacer pruebas. Este tema tiene un peso (importancia) de 3 de cara al examen final de la certificacin LPI 101. El total de la suma de pesos de todos los temas es de 106. Creando particiones y sistemas de ficheros Hay muchas herramientas para crear particiones y sistemas de archivos en sistemas Linux. La utilidad fdisk se usa para trabajar con particiones en discos duros. La utilidad fips se utiliza para redimensionar particiones, y los sistemas de archivos se crean utilizando la utilidad mkfs. Se pueden utilizar estas herramientas conjuntamente para preparar un disco duro para usar sistema Linux. En el mundo real: muchas distribuciones Linux incluyen herremientas que crean automticamente las particiones y el sistema de archivos Linux durante la instalacin. Mucha gente no necesitar nunca usar utilidades como fdisk o mkfs. Sin embargo, los usuarios avanzados y los administradores de sistemas deben estar familiarizados con el uso de estas herramientas. Fdisk La herramienta principal usada para crear particiones de disco es fdisk. La utilitdad fdisk divide el disco en particiones y escribe la tabla de particiones en el sector 0 (conocido como superblock). Cuando se utiliza sin parmetros, fdisk presenta un men de opciones con las que se puede interactuar. Se puede evitar el men y ejecutar fdisk con las siguientes opciones: -l: lista las tablas de particiones. -v: Nos da nicamente la versin de fdisk. Si no se utiliza ninguna de esas opciones, fdisk comprueba si el nmero de cilindros del dispositivo por defecto (hda1) es mayor de 1024 y avisa de ello si es as. Entonces espera una instruccin. Se puede iniciar fdisk con un dispositivo distinto al de defecto especificndolo en la lnea de comandos. Por ejemplo, para arrancar fdisk con el tercer driver IDE, se debe poner: $ fdisk /dev/hdc

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Una vez la utilidad est iniciada, entrando m se presenta una ayuda en forma de men, algunas de las cuales se listan en la tabla 1-1 Tabla 1-1 Algunas de las opciones del fdisk Opcin Funcin p d n q w m v a Muestra informacin sobre la particin. Borra una particin. Crea una particin. Sale de la aplicacin sin guardar los cambios. Guarda los cambios y sale de la aplicacin. Muestra los comandos disponibles. Verifica la tabla de particiones. Cambia el indicador de estado de arranque de la particin.

Los siguientes ejemplos ilustran que se puede hacer con esta utilidad, empezando por acciones simples y acabando con algunas ms complicadas. En primer lugar, para ver la tabla de particiones, se debe introducir el comando p. El resultado se debe parecer a: Disk /dev/hda: 16 head, 63 sectors, 16383 cylinders Units = cylinders of 1008 + 512 bytes Device /dev/hda1 /dev/hda2 /dev/hda3 Boot + Start 1 4064 4317 End 4063 4316 16383 Blocks Id 2047720+ 127512 82 6081768 System 83 Linux Linux swap 83 Linux

Se muestra tres particiones (de 1 a 3) en un nico disco IDE (hda). La primera particin es de arranque (marcada como boot) , la segunda de swap, y la tercera es el resto del disco. Para modificar el sistema de ficheros, vamos a cambiar la tercera particin en dos de menor tamao. Primero entramos el comando d para borrar la particin. El prompt preguntar que particin (1 a 4). Se entra 3, y ya est. Para crear una nueva particin, se entrar el comando n. El prompt que muestra ser: eextendida pparticin primaria (1-4) Si ya se han creado algunas particiones, el prompt puede no aparecer. Por ejemplo, si ya se tiene una particin extendida, no se puede crear otra ya que sta ya existe. Si se entra p para una primaria, seguidamente se pedir el nmero (1-4) para crearla; si se da un nmero ya usado, el comando falla ya que primero se debera haber borrado la particin antes de volverla a aadir. En este caso, suponiendo que se quiere crear dos particiones iguales en el espacio que antes ocupaba la tercera particin, por lo tanto despus de entrar p la secuencia ser la siguiente (valores entrados en cursiva) 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Nmero de particion (1-4): 3 Primer cilindro (4317-16383, defecto 4317): (aceptar) Usando el valor de defecto 4317 ltimo cilindro o +size o +sizeM o +sizeK _ (4317-16383, defecto 16383): 10350 Command (m para ayuda): p Disco /dev/had: 16 head, 63 sectors, 16383 cylinders Units = cylinders of 1008 + 512 bytes Device /dev/hda1 /dev/hda2 /dev/hda3 Boot + Start 1 4064 4317 End 4063 4316 10350 Blocks Id 2047720+ 127512 82 3041136 System 83 Linux Linux swap 83 Linux

Command (m para ayuda): n Command action e extended p primary partition (1-4) p Nmero de particin (1-4): 4 Primer cilindro (10531-16383, default 10351): (aceptar) Usando el valor de defecto 10351 ltimo cilindro o +size o +sizeM o +sizeK _ (10351-16383, defecto 16383): (aceptar) Usando el valor de defecto 16383 Command (m para ayuda): p Disco /dev/had: 16 head, 63 sectors, 16383 cylinders Units = cylinders of 1008 + 512 bytes Device /dev/hda1 /dev/hda2 /dev/hda3 /dev/hda4 Boot + Start 1 4064 4317 10351 End 4063 4316 10350 16383 Blocks Id 2047720+ 127512 82 3041136 3040632 System 83 Linux Linux swap 83 Linux 83 Linux

Para cambiar la tercera particin a sistema de ficheros swap (particin de swap) la secuencia es: Command (m para ayuda): t Nmero de particin (1-4): 3 Hex code ( L para la lista de cdigos): 82 Cambiado tipo de sistema de la particin 3 a 82 (Linux swap) Entonces, para cambiar la particin existente de swap (la 2) a una particin Linux, se debe hacer lo mismo que se ha hecho, pero como cdigo hex el 83. Poniendo L cuando se pida el hex code se mostrarn todos los sistemas de ficheros posibles (igual que poniendo I en el men principal de fdisk). 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Despus de efectuar todos los cambios, se puede salir de fdisk y formatear las particiones que lo necesiten. Si se guardan los cambios, aparecer una alerta indicando que la tabla de particiones ha sido alterada y el disco ser sincronizado. Se deber reiniciar el sistema para asegurarse de que la tabla est actualizada adecuadamente. Se pueden hacer muchos cambios con fdisk y deshecharlos si se usa la opcin q. Si se desea grabar los cambios realizados, se deben salvar con w. mkfs Una vez se ha creado la particin, el sistema de ficheros debe ser aadido para que Linux pueda hacer uso de este espacio. La utilidad mkfs se usa para crear sistemas de ficheros en particiones vacas. La utilidad mkfs se utiliza con muchas opciones distintas, las cuales se pueden ver en la tabla 1-2. En la tabla 1-3 se pueden ver algunas de las utilidades prcticas de mkfs. Tabla 1-2 Opciones usadas con mkfs Opcin Uso -t fstype fs -options -c -l fichero -v Especifica el tipo de sistema de ficheros a crear. Por defecto se usa ext2. Opciones especficas de sistema de ficheros para ser pasados al sistema real de ficheros que vamos a crear. Comprueba el dispositivo en busca de bloques defectuosos antes de crear el sistema de ficheros. Lee los bloques defectuosos del fichero. Produce una salida con ms informacin, incluyendo todas las rdenes especficas del sistema de ficheros concreto que se ejecutan. sto es realmente slo til para comprobaciones.

Las opciones usadas por mkfs estn seguidas por un argumento especificando la particin que debe ser formateada. Despus de la ejecucin del comando, el cdigo de salida de 0 (cero) indicar que se ha llevado a cabo con xito mientras que el cdigo de salida 1 (uno) indicar fallo. Ejemplo de la sintaxis usada: mkfs -opciones argumentos Cuando se crea un sistema de ficheros con mkfs, se pueden utilizar muchos comandos para especificar el tipo de sistema de ficheros. Estos comandos son accesibles slo para el usuario root.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Utilidades para la creacin de Sistemas de Ficheros Comando Uso mkfs.ext2 o mke2fs mkfs.ext3 mkfs.msdos o mkdosfs mkswap Crea un sistema de ficheros ext2 Crea un sistema de ficheros ext3 Crea un sistema de ficheros MS-DOS Crea un sistema de ficheros de Linux swap

Para obtener ms detalles de las opciones al crear cada tipo de sistemas de ficheros, se puede hacer uso de las pginas man de Linux. Para crear un sistema de ficheros debe ser usada la herramienta correcta especificada en la tabla 1-3. Por ejemplo, un uso apropiado de estas utilidades es crear un particin ext2 usando mkfs.ext2: # mkfs.ext3 /dev/hda3

5.3 - Inspeccin y verificacin del sistema de archivos

Introduccin Este captulo se ver como verificar la integridad del disco duro, monitorizar el espacio libre y reparar problemas con el sistema de ficheros. Los comandos que se vern en este tema son: du df fsck e2fsck mke2fs debugfs dumpe2fs tune2fs Este tema tiene un peso (importancia) de 3 de cara al examen final de la certificacin LPI 101. El total de la suma de pesos de todos los temas es de 106.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Manteniendo la Integridad de los Filesystems (Sistemas de Ficheros) Con el trascurso del tiempo los filesystems activos pueden terminar presentando problemas como los siguientes: Un filesystem se llena hasta el lmite de su capacidad, causando que los programas o, quizs, el sistema entero dejen de funcionar. Un filesystem se corrompe, seguramente por un corte de alimentacin o por una cada del sistema. Un filesystem se queda sin inodos libres de tal forma que no se pueden crear nuevos objetos en el mismo. Monitorizar y comprobar cuidadosa y regularmente los filesystems de Linux nos ayudar a prevenir o corregir estos problemas. Monitorizando el espacio y los inodos libres del disco Un sistema de lectura/escritura no sirve de mucho si crece hasta el punto en que no pueda admitir nuevos ficheros. Esto podra ocurrir si el filesystem se llena o si se queda sin inodos libres. Los inodos son las estructuras de datos dentro del filesystem que describen los ficheros en el disco. Cada filesystem contiene un nmero finito de inodos que se establece en el momento de creacin del filesystem. Este nmero es, a su vez, el mximo nmero de ficheros que un filesystem puede acomodar. Como los filesystems se crean con un nmero de inodos enorme, probablemente nunca crears tantos ficheros como para agotar este nmero. No obstante, es posible quedarse sin inodos libres en particiones que contengan muchos ficheros pequeos. Es muy importante prevenir la escasez de inodos libres en las particiones del sistema. El comando df proporciona informacin necesaria tanto sobre la uso del espacio en disco como de los inodos libres. Sintaxis df [opciones] [directorios] Descripcin Muestra informacin general sobre el uso del disco en los filesystems montados en directorios. Normalmente, en directorios indicamos ficheros de dispositivos de particiones como /dev/hda1, pero si indicamos otro tipo de nombre de fichero o directorio obtendremos informacin sobre la particin donde est ubicado dicho fichero o directorio. Si omitimos directorios, se mostrar la informacin relativa a los filesystems montados en los dispositivos incluidos en /etc/fstab. Tabla 2-1 Opciones frecuentemente del comando df Opcin Uso -h Muestra los resultados en un formato legible para las personas, incluyendo sufijos como M(megabytes) y G (gigabytes). Muestra informacin sobre los inodos libres en lugar de la informacin por defecto sobre el espacio libre en disco.

-i

Ejemplo 1 Revisar el uso del espacio en disco en todos los filesystems: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

# df -h Filesystem /dev/sda1 /dev/sda5 /dev/sda9 /dev/sda6 /dev/sda10 /dev/sda8 /dev/sda7

Size Used Avail Use% Mounted on 387M 56M 311M 15% / 296M 5.2M 276M 2% /boot 1.9G 406M 1.4G 22% /home 53M 12M 39M 23% /root 99M 104k 93M 0% /tmp 972M 507M 414M 55% /usr 296M 9.3M 272M 3% /var

En este ejemplo se observa que en ninguno de los siete filesystems montados por defecto, el espacio utilizado excede del 55 por ciento de su capacidad. Ejemplo 2 Revisar el uso de inodos en los mismos filesystems: # df -i Filesystem /dev/sda1 /dev/sda5 /dev/sda9 /dev/sda6 /dev/sda10 /dev/sda8 /dev/sda7 Inodes IUsed IFree IUse% Mounted on 102800 7062 95738 7% / 78312 29 78283 0% /boot 514000 934 513066 0% /home 14056 641 13415 5% /root 26104 60 26044 0% /tmp 257040 36700 220340 14% /usr 78312 269 78043 0% /var

Entre estas particiones el mayor consumo de inodos es slo de un 14 por ciento. Est claro que ninguno de stos filesystems se est acercando en su consumo al mximo disponible. Observa que la particin /usr (con el 14 por ciento de los inodos utilizados) ha consumido el 55 por ciento del espacio en disco. Con sta tnica de utilizacin, lo ms probable es que el volumen /usr agote su capacidad en disco antes de agotar los inodos libres. Ejemplo 3 Determina rpidamente en que particin est situado el directorio de trabajo actual (puede representarse, simplemente, por un punto): # df . /dev/sda1 102800 7062 95738 7% /

Cuando un filesystem est prximo a agotar su capacidad podemos, simplemente, eliminar ficheros para obtener ms espacio libre. Sin embargo en el caso improbable de una escasez de inodos, deberamos volver a crear el filesystem con un nmero mayor de inodos a menos que podamos borrar una muy buena cantidad de ficheros.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Monitorizando el Uso del Espacio en Disco Te has preguntado alguna vez A donde va todo el espacio consumido en el disco?. En algunos sistemas operativos es bastante complicado obtener la respuesta a esta pregunta con las herramientas nativas. En Linux, el comando du nos puede ayudar, mostrndonos directorio por directorio el uso del espacio en disco, a responder a esta pregunta. El comando du examina los directorios recursivamente y muestra informacin detallada o resumida sobre el espacio en disco consumido. Sintaxis du [opciones] [directorios] Descripcin Muestra informacin sobre el uso del disco en los directorios. Si se omiten los directorios se buscar en el directorio de trabajo actual. Tabla 2-2 Opciones frecuentemente utilizadas por du Opcin Uso -a -c -h -s -S Muestra todos los ficheros, no solo los directorios. Genera un gran total de todos los elementos listados. Muestra los resultados en un formato legible para las personas, incluyendo sufijos como M (megabytes) y G (gigabytes). Visualiza un sumario para cada uno de los directorios especificados, en lugar de los totales encontrados recursivamente en cada subdirectorio. Excluye los subdirectorios de las sumas y los totales, limitndose a totalizar los directorios.

Ejemplo 1 Examinar el uso del disco en /etc/rc.d: # du /etc/rc.d 882 /etc/rc.d/init.d 1 /etc/rc.d/rc0.d 1 /etc/rc.d/rc1.d 1 /etc/rc.d/rc2.d 1 /etc/rc.d/rc3.d 1 /etc/rc.d/rc4.d 1 /etc/rc.d/rc5.d 1 /etc/rc.d/rc6.d 904 /etc/rc.d Ejemplo 2 Muestra el espacio en disco utilizado por ficheros, incluyendo los subdirectorios interiores, en /etc: # du -s /etc 13002 /etc Ejemplo 3 Muestra el espacio en disco utilizado por ficheros, excluyendo los subdirectorios interiores, en /etc: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

# du -Ss /etc 1732 /etc Ejemplo 4 Muestra un sumario de todos los subdirectorios bajo /home, con una salida legible por las personas: # du -csh /home/* 42k /home/bsmith 1.5M /home/httpd 9.5M /home/jdean 42k /home/jdoe 12k /home/lost+found 1.0k /home/samba 11M total Este resultado muestra que se han utilizado 11 MB del espacio total del disco. Ejemplo 5 Muestra el mismo sumario, pero ordenando los resultados de mayor a menor utilizacin: # du -cs /home/* | sort -nr 11386 total 9772 jdean 1517 httpd 42 jdoe 42 bsmith 12 lost+found 1 samba Este resultado muestra que el usuario jdean est consumiendo la mayor cantidad de espacio. Ten en cuenta que el formato legible por las personas no ordenara de esta forma ya que sort no interpreta dicho formato. Comprobando la Integridad del Filesystem Independientemente de lo estables que sean, los ordenadores terminan fallando, incluso por algo tan simple como un cable de alimentacin desconectado por accidente. Desafortunadamente una interrupcin de este tipo puede provocar daos en un filesystem. Si se abortase una operacin de escritura en disco antes de completarse, los datos implicados se perderan y las partes del disco que se reservaron para ellos quedaran marcadas como en uso. Adems, las escrituras en el filesystem no suelen ser directas, sino que suelen pasar previamente por una cache de memoria, un corte de corriente o una cada del sistema impedira al kernel sincronizar sta cache con el disco. Cualquiera de estos casos provocara que nos encontrsemos con inconsistencias en el filesystem que debern ser corregidas para asegurar un funcionamiento fiable del mismo. Los filesystems se comprueban con fsck. Al igual que mkfs, fsck es una utilidad especfica al tipo de filesystem instalado esto incluye fsck.ext2, que es un link al programa e2fsck (mira en las pginas man para ms informacin). Una parte de la informacin almacenada en el disco para describir un filesystem es la conocida como 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

superbloque que se encuentra en el bloque 1 de la particin. Si ste rea se corrompiese el filesystem quedara inaccesible. Debido a la importancia del superbloque, se realizan copias del mismo en intervalos regulares del filesystem, por defecto cada 8192. La primera copia del superbloque se encuentra en el bloque 8193, la segunda en el bloque 16385, y as sucesivamente. Como vers, fsck puede utilizar la informacin en las copias del superbloque para restaurar el superbloque principal Sintaxis fsck [opciones] [-t tipo] [opciones-fs] filesystems Descripcin Comprueba si los filesystems tienen errores y, opcionalmente, los corrige. Por defecto, fsck asume el tipo de filesystem ext2 y funciona de modo interactivo interrumpiendo la ejecucin para pedir permiso antes de aplicar las correcciones. Durante la comprobacin del sistema de fsck se hace lo siguiente: 1. Comprobar inodos, bloques y tamaos. 2. Comprobar la estructura de directorios. 3. Comprobar la conectividad de directorios. 4.Comprobar las referencias. 5. Comprobar el total de la informacin. Tabla 2-3 Opciones frecuentemente utilizadas en fsck Opcin Uso -A Ejecuta comprobaciones en todos los filesystems incluidos en /etc/fstab. Esta opcin est pensada para utilizarse en tiempo de carga del sistema, antes de montar los filesystems. No se ejecuta, pero muestra lo que debera hacerse. Especifica el tipo de filesystem a comprobar; por defecto se asume ext2. El valor de tipo determina que verificador especfico para el filesystem es utilizado. Utiliza una copia del superbloque alternativa. En el modo interactivo, e2fsck utiliza automticamente superbloques alternativos. Normalmente, para restaurar un superbloque defectuoso, utilizars -b 8193 en el modo no interactivo. Comprobar bloques defectuosos. Fuerza una comprobacin, incluso si el filesystem parece limpio. Repara automticamente el filesystem sin hacer preguntas. Responde automticamente "yes" a todas las preguntas interactivas permitiendo la utilizacin no interactiva de e2fsck.

-N -t tipo -b superbloque

-c -f -p -y

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Ejemplo 1 Comprueba el filesystem del tipo ext2 en /dev/hda5 que, en este momento, no est montado: # fsck /dev/hda5 [/sbin/fsck.ext2 -- ] fsck.ext2 /dev/hda5 Parallelizing fsck version 1.14 (9-Jan-1999) e2fsck 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 /dev/hda5: clean, 1011/34136 files, 4360/136521 blocks La particin estaba marcada como limpia, por tanto fsck no lleg a verificarla. Ejemplo 2 Fuerza una comprobacin: # fsck -f /dev/hda5 Parallelizing fsck version 1.14 (9-Jan-1999) e2fsck 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/hda5: 1011/34136 files (0.1% non-contiguous), 4360/136521 blocks Ejemplo 3 Fuerza otra comprobacin, en este caso con salida de mensajes explcita: # fsck -fv /dev/hda5 Parallelizing fsck version 1.14 (9-Jan-1999) e2fsck 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information 1011 inodes used (2%) 1 non-contiguous inodes (0.1%) # of inodes with ind/dind/tind blocks: 0/0/0 4360 blocks used (3%) 0 bad blocks 1000 regular files 2 directorios 0 character device files 0 block device files 0 fifos 0 links 0 symbolic links (0 fast symbolic links) 0 sockets -------1002 files 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Ejemplo 4 Permite que fsck realice automticamente todas las reparaciones en un filesystem daado especificando la opcin -y: [root@smp /mnt]# fsck -y /dev/hda5 Parallelizing fsck version 1.14 (9-Jan-1999) e2fsck 1.14, 9-Jan-1999 for EXT2 FS 0.5b, 95/08/09 Couldn't find ext2 superblock, trying backup blocks... /dev/hda5 was not cleanly unmounted, check forced. Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information Block bitmap differences: +1 +2 +3 +4 Fix? yes Inode bitmap differences: +1 +2 +3 +4 +5 +6 Fix? yes /dev/hda5: ***** FILE SYSTEM WAS MODIFIED ***** /dev/hda5: 1011/34136 files (0.1% non-contiguous), 4360/136521 blocks Cuando Linux carga, el kernel realiza una comprobacin de todos los filesystems incluidos en /etc/fstab utilizando la opcin -A. Se comprobar cualquier filesystem que no hubiese sido desmontado limpiamente (A menos que la entrada en /etc/fstab incluya la opcin noauto) Si dicha comprobacin encontrase algn error significativo, el sistema se pondra en modo monousuario de tal forma que se pueda ejecutar fsck de forma manual. Algunos de los errores que pueden causar esto son: Bloques solicitados por mltiples ficheros. Bloques solicitados fuera del sistema de ficheros. Detectados pocos enlaces. Bloques no detectados. Directorios que corresponden a inodos no localizados. Errores de formato.

En los casos dnde el directorio padre de un fichero no pueda ser determinado, el fichero ser ubicado en /lost+found. Los ficheros entonces se renombran con su nmero de inodo. Es til examinar el contenido de este directorio despus de haber perdido ficheros a consecuencia de un error del sistema. La informacin (cdigos) de finalizacin que nos da la utilidad fsck es til para determinar el resultado de la operacin. Cada cdigo representa un tipo de condicin de finalizacin. El cdigo que nos retorna es la suma de las condiciones de salida. Los cdigos de salida se muestran en la lnea de comandos cuando el comando finaliza su operacin. Estos cdigos se muestran en la Tabla 2-4.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Cdigos de Finalizacin de fsck Cdigo Significado 0 1 2 4 8 16 128 Sin error. Errores del sistema de ficheros corregidos. El sistema debera ser reiniciado. Errores del sistema de ficheros sin corregir. Error operacional. Errores de sintaxis o uso. Error en la librera compartida.

Desafortunadamente, a menos que tengas un conocimiento muy detallado del funcionamiento interno del filesystem, podrs hacer muy poco aparte de permitir que fsck realice todas las reparaciones. Por todo esto, lo ms normal es utilizar la opcin -y y confiar en la suerte. Creando un sistema de ficheros Para crear un sistema de ficheros debe ser utilizada la herramienta correcta de las especificadas en la tabla 2-5. Un ejemplo de uso correcto de esas utilidades es crear una particin ext2 utilizando mkfs.ext2 tal como podemos ver: # mke2fs /dev/hda3 Tabla 2-5 Utilidades para la creacin de filesystems Comando Tipo de filesystem creado mkfs.ext2 o mke2fs mkfs.msdos o mkdosfs mkswap mkraid mkfs.mimix mkfs.bfs ext2 MD-DOS swap Raid mimix SCO BFS

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Algunas utilidades de los filesystems Comando debugfs Depurador de filesystems (sistemas de ficheros) ext2. Sintaxis: debugfs [ -b tamao_bloque ] [ -s superbloque ] [ -f fichero_comandos ] [ -R peticion ] [ -V ] [ [ -w ] [ c ] [ -i ] [ dispositivo ] ] Descripcin El programa debugfs es un depurador interactivo de filesystems. Puede utilizarse para examinar y cambiar el estado de un filesystem del tipo ext2. Dispositivo indica el fichero especial correspondiente al dispositivo que contiene el filesystem ext2 (p.ej. /dev/hdXX). Comando dumpe2fs volcado de la informacin de un filesystem Sintaxis: dumpe2fs [ -bfhixV ] [ -ob superbloque ] [ -oB tamao_bloque ] dispositivo Descripcin: dumpe2fs muestra la informacin de grupo del superbloque y los dems bloques del filesystem existente en dispositivo. Comando tune2fs - ajusta los parmetros configurables en un filesystem ext2. Sintaxis: tune2fs [ -l ] [ -c contador-max-montajes ] [ -e comportamiento-errores ] [ -f ] [ -i intervalo-entrecomprobaciones ] [ -j ] [ -J opciones-de-diario ] [ -m porcentaje-bloques-reservados ] [ -o [^]opcionesde-montaje[,...] ] [ -r contador-bloques-reservados ] [ -s sparse-super-flag ] [ -u usuario ] [ -g grupo ] [ -C contador-montajes ] [ -L nombre-volumen ] [ -M directorio-ultimo-montaje ] [ -O [^]caracteristica[,...] ] [ -T hora-ultima-comprobacion ] [ -U UUID ]dispositivo Descripcin: tune2fs ajusta los parmetros configurables en un filesystem ext2.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

5.4 - Montaje y desmontaje de sistemas de archivos

Instroduccion En este captulo se ver como montar y desmontar sistemas de ficheros para poder trabajar con ellos de forma normal. Hoy en da existen herramientas que automatizan este proceso y esconden en cierta forma el trabajo del montado/desmontado. Tambin se ver la estructura del fichero /etc/fstab en el que se guardan las particiones del disco duro, su formato, permisos, etc. Los comandos que se vern en este tema son: mount umount Y la estructura y funcionalidad de /etc/fstab

Controlando el montaje / desmontaje de los Filesystems Como ya se vi anteriormente, la estructura de los sistemas de ficheros en GNU/Linux estn generalmente divididos en particiones, unidas todas ellas en el punto de montaje raiz (/). Los filesystems de los dispositivos removibles, tales como CD-ROM, diskettes, discos ZIP, etc, se unen a la raiz del sistema de la misma manera, como directorios (o puntos de montaje). En principio estos directorios destinados a los dispositivos estn vacos, a la espera de su montaje, puede darse el caso de que el directorio destinado a este fin contenga subdirectorios o archivos, en cuyo caso quedarn ocultos hasta que el dispositivo se desmonte. Administrando la tabla de filesystems Para que las diferentes particiones estn disponibles desde un primer momento es necesario montarlas durante el inicio del sistema, los dispositivos removibles tambin se usan frecuentemente y es aconsejable tenerlos preparados para usar los comandos de montaje. Toda este informacin se guarda en el fichero /etc/fstab . Los filesystems definidos en este fichero son revisados y montados durante el arranque del sistema. Sus entradas se consultan como fuente de informacin por defecto cuando los usuarios quieren montar dispositivos removibles. En el siguiente ejemplo de /etc/fstab se puede ver que se trata de un fichero de texto con 6 campos en cada linea: Device Mount point F. type /dev/sda1 / /dev/sda5 /boot /dev/sda9 /home /dev/sda10 /tmp /dev/sda11 swap /dev/fd0/mnt/floppy ext2 /dev/hdc /mnt/cdrom 25 de Mayo 445 Piso 2 (1002) Bs.As. M. Options DF ext2 defaults 1 ext2 defaults 1 ext2 defaults 1 ext2 defaults 1 swap defaults 0 noauto,users 0 iso966 noauto,ro,users 0 PN 1 2 2 2 0 0 0 Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Device: Este campo especifica la particin del filesystem, por ejemplo /dev/hda1. Este campo no puede contenter el dispositivo entero (/dev/hda) Mount point: Aqu se introduce el directorio donde se quiere que el dispositivo sea montado. Por ejemplo si la particin /dev/hda1 tiene el filesystem root, donde est el sistema se montar en / Filesystem type: En este campo se indica que tipo de particin se trata, ext2, reiserfs, swap, iso9660 (CD-ROMS) etc etc Mount options: Se explican ms adelante, se separan por comas. Dump frecuency: El programa dump (para hacer backups) consulta la entra del /etc/fstab para ver cada cuanto tiempo debe hacer el backup. Normalmente tiene el valor 1 para filesystems basados en ext2 y 0 para los dems. Pass number para el fsck: Este campo es usado por la utilidad fsck cuando la opcin -A se especifica, normalmente en tiempo de arranque. Tiene valores: 0 - No chequear el sistema 1 - Debe ponerse para el filesystem root (/) y ordena al fsck a chequearlo primero 2 - Hace el chequeo de la unidad, despus del chequeo de los marcados con un 1 En el ejemplo se tiene un disco duro SCSI (dev/sda) La primera particin /dev/sda1 tiene el directorio root (/), la quinta contiene las imgenes del kernel para el arranque, la 9 para el directorio de los usuarios, la particin 10 es la temporal, la particion 11 para el sistema de swap. Luego se tiene la /dev/fd0 para diskettes y la /dev/hdc para el CD-ROM Se pueden aadir/modificar estas entradas en cada caso y segn las necesidades de cada uno. Las opciones de este fichero son importantes de cara al examen. Montando filesystems Los filesystems son montados con el comando mount. Durante el arranque, los filesystems que no contienen un 0 en el pass number son chequeados y luego montados. Despus del arranque se pueden aadir ms sistemas de ficheros manualmente con el comando mount. Sintaxis mount [opciones] device mount [opciones] directorio mount [opciones] device directorio Descripcin: Se usa para montar (y as poder usar) filesystems dentro de la estructura del rbol del sistema. La primera y segunda entrada consultan al fichero /etc/fstab para montar los dispositivos y as tomar las opciones que se le especifiquen en el /etc/fstab. La tercera opcin es independiente del fichero /etc/fstab y monta el filesystem (device) en el directorio (directorio) El comando mount admite dos tipos de opciones, unos para el comando en si, y otros para especificar opciones del sistema de ficheros. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Opciones del comando mount Opcin Funcin -a -h -o -r -t fstype -v -w Monta todos los fileystems especificados en el /etc/fstab menos los que tengan la opcin noauto Ayuda del comando mount Especifica las opciones del mount en la linea de comandos Monta filesystems en modo de solo lectura Especifica un tipo de fileystem Salida interactiva Monta fileystems de lectura/escritura

Opciones del mount Estas opciones se especifican en el fichero /etc/fstab o bien en la linea de comandos con la opcin -o. Estas opciones modifican el modo de montaje del comando mount, algunas de las opciones son: Tabla 3-2 Opciones del mount sobre el sistema de ficheros Opcin Funcin async auto defaults dev exec noauto noexec Toda la E/S al sistema de ficheros debera hacerse asncronamente. Puede montarse con la opcin -a Establece las opciones: rw, suid, dev, exec, auto, nouser y async. Es la opcion por defecto en sistemas ext2 Interpretar dispositivos especiales de caracteres o bloques en el sistema de ficheros Permitir la ejecucin de binarios Slo puede montarse explcitamente (esto es, la opcin -a no har que el sistema de ficheros se monte) No permitir la ejecucin de ningn binario en el sistema de ficheros montado. Esta opcin puede ser til para un servidor que tiene sistemas de ficheros que contienen binarios para otras arquitecturas distintas de la suya. No permitir el efecto de los bits SUID ni SGID Prohibir a un usuario ordinario (esto es, distinto de root) montar el sistema de ficheros. Esto es lo predeterminado Montar el sistema de ficheros en modo de slo lectura. Montar el sistema de ficheros de lectura y escritura Permitir el efecto de los bits SUID y SGID Toda la E/S al sistema de ficheros debera hacerse sncronamente. Permitir a un usuario ordinario montar el sistema de ficheros Permite a cualquier usuario el montaje/desmontaje de el sistema de ficheros Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

nosuid nouser ro rw suid sync user users

25 de Mayo 445 Piso 2 (1002) Bs.As.

Ejemplo 1: Para mostrar los filesystems actualmente montados en el sistema $ mount Ejemplo 2: Montar un CD-ROM situado en /dev/hdc en el directorio existente /cdrom de slo lectura: $ mount -rt iso9660 /dev/hdc /cdrom Si se monta sin la opcin -r, se mostrar un aviso de que el CD-ROM est protegido contra escritura y se montar como slo lectura, sera el caso del comando: $ mount -t iso9660 /dev/hdc /cdrom

Ejemplo 3: Montar un diskette (/dev/fd0) con sistema MS-DOS en el directorio /floppy $ mount -t msdos /dev/fd0 /floppy Ejemplo 4: Si da el caso de que la particin /home y /swap fueron desactivadas por algn motivo se podran volver a montar con la opcin -a $ mount -av De este modo montamos los filesystems que no lo estn y nos muestra la accin del comando conforme se va ejecutando (opcin -v) Desmontando filesystems Los filesystems pueden ser desmontados usando el comando umount. Cuando un filesystem es desmontado, los contenidos del rbol principal se actualizan, no pudiendose usar (el umount) si el sistema de ficheros que se quiere desmontar est en uso. Si el sistema de ficheros est en uso el comando umount dar un error. Esto puede ocurrir por ejemplo cuando tenemos abierto un fichero de un CD-ROM o un proceso est haciendo uso del mismo. Otros errores pueden surgir si quitamos dispositivos removibles sin antes desmontarlos: perdida de datos, corrupcin de los mismos etc etc Sintaxis: umount [opciones] device umount [opciones] directorios Descripcin: Desmonta un filesystem de un dispositivo o un directorio.

Tabla 3-3 Opciones del comando umount 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Opcin -a

Uso Desmonta todos los filesystems descritos en /etc/mtab. Este fichero est mantenido por los comando mount y umount en tiempo real, se usa normalmente cuando se apaga/reinicia el PC. Desmonta slo los filesystems del tipo especificado

-t fstype

Ejemplo 1: Desmontar el cdrom (/dev/hdc) montado en /cdrom $ umount /cdrom o bien $ umount /dev/hdc Ejemplo 2: Desmontar todos los sistemas de ficheros NFS: $ umount -at nfs

6. Administracin de archivos
6.1 - Comandos para administracin de archivos

Aunque cada tipo de sistema de archivos tiene caractersticas propias, Linux puede manejar varios representndolos en un mdelo de sistema de archivos propio del kernel (virtual file system). Por ejemplo los tipos vfat y msdos no permiten manejar permisos ni propietarios, pero al montarlos el kernel suple la carencia con valores por defecto [82]. El sistema de archivos del kernel se organiza a partir del rbol de directorios, en este rbol se encuentran nombres de archivos y directorios. Junto con cada nombre hay un nmero que identifica de forma nica la informacin y que permite ubicarla en algn dispositivo de almacenamiento ---estos nmeros pueden examinarse con ls -i. Por este diseo pueden montarse y desmontarse diversos sistemas de archivos sobre el mismo arbol de directorios, cada proceso puede tener su propio directorio raz (chroot) y puede haber directorios y archivos que no corresponden a informacin almacenada en dispositivo alguno e.g el directorio /proc. Cada entrada del rbol de directorios es de uno de los siguientes tipos: regular Se trata de infomacin que est almacenada fisicamente en algn dipositivo montado, es decir programas o datos. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Enlace simblico Vinculo al nombre de otro archivo en el arbol de directorios (este es un enlace suave, a diferencia de un enlace duro que referencia el nodo-i). Se crean con el programa ln y la opcin -s. La desventaja de los enlaces suaves es que hacen el acceso a la informacin un poco ms ineficiente que los enlaces duros, entre sus ventajas estn: si se borra el archivo enlazado el enlace simblico ya no funciona, pueden hacerse enlaces simblicos a directorios (no pueden hacerse enlaces duros a directorios). Directorio Subdirectorio. Se manejan con mkdir, rm -f. Cada proceso tiene un directorio de trabajo que puede administrarse con pwd y cd. Dispositivo por caracteres No es informacin almacenada en dispositivo alguno, representa un dispositivo fsico que se controla enviando de a un caracter (e.g una lnea serial, un modem, una terminal). Se crean con mknod [-m modo] nombre num_mayor num_menor Donde el modo puede especificarse con nmeros o letras al igual que con chmod (ver Lectura Archivos y permisos), num_mayor y num_menor son nmeros que en Linux identifican de forma nica el dispositivo [83]. Algunos nmeros de dispositivos se presenta en el siguiente captulo, la lista completa est en las fuentes del kernel en include/linux/major.h y estn documentados en Documentation/devices.txt o en Internet la documentacin ms reciente (que corresponde al kernel ms nuevo) en: http://www.kernel.org/pub/linux/docs/devicelist/devices.txt. Por ejemplo all se documenta que el dispositivo de caracteres con nmero mayor 4 es un dispositivo tty (por ejemplo una de las consolas virtuales), el nmero menor indica de que consola virtual se trata (si es un entero entre 1 y 63), para crear una entrada en el directorio de trabajo que se refiera a la primera consola virtual con el nombre cons1: mknod cons1 c 4 1 Dispositivo por bloques Representa un dispositivo al que se le pueden enviar bloques de informacin (e.g tarjeta de video, disco duro). Para crearlo se usa mknod de la forma como se present para dispositivos de caracteres pero con b despus del nombre en lugar de c. Pipes y sockets No es informacin almacenada en dispositivo alguno, son canales de comunicacin entre programas. Desde el intrprete de comandos pueden crearse pipes con mkfifo o con mknod seguido del nombre del pipe y la letra 'p'. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Adems de los permisos presentados en la seccin para usuarios (ver Archivos y permisos) en Linux pueden especificarse los siguientes: setuid bit: empleado con archivos ejecutables cambia la identificacin del usuario por la del dueo del archivo. Con chmod se modifica empleando u y s. por ejemplo: chmod u+s cvs indica que cuando el programa cvs se ejecute, debe cambiarse la identificacin por la del dueo de ese programa. Este permiso puede ser til para que usuarios normales ejecuten programas que requieren ser ejecutados por root y por lo mismo debe usarse con precaucin. setgid bit: tamben empleado con archivos ejecutables, indica que cuando se ejecute el programa debe cambiarse al grupo del archivo. Se establece con g y s. sticky bit: se establece con t, no tiene efecto sobre archivos [84], con un directorio evita que un usuario que no sea el dueo del directorio pero que tenga permiso de escritura, pueda borrar o renombrar archivos que no le pertenecen. Ejecucin condicionada: se establece con X en el caso de directorios es equivalente a x, en el caso de archivos tambin es equivalente a x slo si el archivo al que se modifica el permiso ya tena permiso de ejecucin para algn usuario. Es til por ejemplo: chmod a+X * que da permiso de ejecucin a todos los usuarios a los archivos ejecutables y a los directorios. El administrador puede cambiar los permisos de todos los archivos del sistema y puede fijar una poltica inicial para la mascara de permisos que todos los usuarios tendrn. Adems de chmod [85] se emplean los siguientes programas para realizar estas labores: chgrp grupo archivos Cambia el grupo de el o los archivos especificados. Por ejemplo chgrp profesores notas* quiz* cambiar todos los archivos con prefijos "notas" y "quiz" al grupo profesores. Cmo opcin puede recibir -R para aplicar el cambio recursivamente en un directorio (es decir a subdirectorios tambin). Este programa puede ser usado por cualquier usuario para cambiar el grupo de sus archivos a otro grupo al que el mismo usuario pertenezca. chown usuario[:grupo] archivos 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Cambia el usuario (y opcionalmente el grupo) de los archivos especificados. Al igual que chgrp con la opcin -R efectua el cambio recursivamente en subdirectorios. Por ejemplo chown -R pablo:administra nomina/ Pondr al usuario pablo como dueo de todos los archivos y subdirectorios del directorio nomina, todos quedarn con el grupo administra. Tambin puede usarse para cambiar el grupo de un archivo (si no se especifica el nombre del usuario). umask Este es un comando del intrprete de comandos [86] , para establecer permisos por defecto en archivos nuevos. En bash pueden especificarse los permisos como con chmod por ejemplo: umask u=rw,g=,o= har que por defecto grupo y otros usuarios no tengan permiso de lectura ni escritura, slo el propietario del archivo los tiene [87] . Los permisos de un archivo recin creado se establecen de acuerdo al programa que lo crea y a la mscara. Puede esperar que los programas no restrinjan seguridad y creen nuevos archivos y directorios con permisos de lectura y escritura para propietario, grupo y usuarios; este comportamiento hace que umask sea una buena alternativa.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

6.2 - Jerarqua del sistema de archivos

Para leer o escribir en un medio de almacenamiento es necesario montarlo antes en la jerarqua de directorios. Aunque antes de poderlo montar ya debe estar formateado a bajo nivel y debe contar con un sistema de archivos. Formatear un medio de almacenamiento significa prepararlo para que el hardware pueda leerlo y escribirlo, al dotarlo de un sistema de archivos se prepara para que el sistema operativo pueda organizar, leer y escribir datos. Ubicacin de archivos y directorios Los directorios y archivos de un sistema Debian tiene una estructura estndar, algunos de los directorios son:

/boot Mantiene el kernel e informacin indispensable para el arranque del sistema. /bin Mantiene unos pocos programas que estarn disponibles incluso en los modos de ejecucin ms restringidos (e.g. bash, cat, ls, login, ps). /sbin Mantiene programas disponibles slo para el administrador incluso en los modos de ejecucin ms restringidos (e.g fsck, getty, halt). /usr Programas accequibles a usuarios finales y datos de estos programas que no requieren ser modificados (datos de slo lectura). Algunos de sus subdirectorios son: bin, games Programas disponibles para todos los usuarios. sbin Herramientas para el administrador. dict Diccionarios --usados por ejemplo por ispell y look.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

share Datos de diversos programas, entre sus subdirectorios estn: doc, man y info que contienen documentacin; locale, i18n que mantiene informacin sobre internacionalizacin (locale); zoneinfo que mantiene informacin sobre zonas horarias. doc, info, man Enlaces o complementos a la documentacin disponible en /usr/share/doc, /usr/share/info y /usr/share/man. lib Libreras de funciones comunes a varios programas (algunas como libc indispensables para todos). include, src Encabezados de algunos componentes del sistema y fuentes de algunos programas. X11R6 Programas y datos de X-Window. local Otros programas y datos compilados por el administrador i.e no provienen de paquetes Debian. En algunos sistemas otros programas se ubican en /opt. /floppy, /cdrom, /mnt Directorios para montar disquettes, CD-ROMs y otros sistemas de archivos o dispositivos. /proc Diversos canales de comunicacin con algunos programas (por ejemplo con el kernel). /lib Libreras indispensables y mdulos (especialmente requeridas durante el arranque del sistema). /etc Archivos de configuracin de diversos programas. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

/dev Abstracciones a los dispositivos conectados (o que podran conectarse) al computador. /home Mantiene informacin de los usuarios del sistema. /root Mantiene informacin del administrador del sistema. /tmp Archivos temporales creados por algunos programas, que sern borrados por el sistema operativo durante el arranque. /var En este directorio los programas que lo requieran pueden mantener archivos que deban modificarse frecuentemente. Algunos de sus subdirectorios son: mail donde se mantienen colas de correo de cada usuario, log que mantiene bitcoras, run con archivos que mantienen los nmeros de los procesos iniciados al arrancar el sistema, spool colas de impresin y de otros programas, tmp archivos temporales (ms persistente que /tmp). /proc Este directorio es "virtual", no est presente en el disco, es creado por el sistema para intercambiar informacin con ms facilidad. El rigor de esta jerarqua hace que memorizandola sea fcil emplear diversos sistemas Unix, aunque puede no ser la ms apropiada en algunas circunstancias. Para simular jerarquas diferentes cada proceso iniciado por el usuario root puede tener un directorio raz diferente al directorio raz real del sistema. Para establecerlo se emplea el programa chroot, que recibe como primer parmetro el nuevo directorio raz y como segundo parmetro el programa por ejecutar. La ruta del programa se especifica con respecto al nuevo directorio raz y para que el programa pueda ejecutarse, deben ubicarse las ibreras que este requiera en la "nueva" jerarqua (por ejemplo en el nuevo directorio /lib). Esta jerarqua de directorios en Linux no necesariamente est en un disco, sino slo en memoria RAM, por eso pueden tenerse directorios como /proc y pueden montarse diversos sistemas de archivos sobre la misma jerarqua como se presenta en la siguiente seccin.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

6.3 - Localizacin de archivos

En ocasiones se oye decir que linux es un sistema operativo ms complicado de utilizar que Windows Bueno, lo humanos tendemos a intentar simplificar para no volvernos locos y cuando algo no se parece a lo que estamos acostumbrados a utilizar, decimos que es ms dificil. Sin embargo, no estamos siendo objetivos. Cada comando de linux es un programa con multitud de opciones, modificadores, acciones, etc. y la versatilidad que ofrece al usuario es casi ilimitada. Es cierto que quiz esa versatilidad sacrifica una cierta claridad en el uso de estas herramientas, pero linux posee un excelente interfaz de ayuda: el man. Man nos permite obtener informacin inmediata sobre cada comando, simplemente anteponiendo la palabra man al comando de referencia. Cuando llevas un tiempo trabajando con linux esta herramienta se hace indispensable y se convierte en tu verdadera fuente de referencia y aprendizaje. Encontrar un fichero que ha sido modificado entre el 7 y el 9 de octubre, que contiene la palabra factura, que pertenece al usuario contable1, que tiene entre 1 y 2 Megabytes y que ha sido accedido entre la 12:30 pm y la 13:30 pm del 12 de Octubre es mucho ms fcil en linux que en windows, slo hay que saber que tornillo apretar, y esa informacin est en el man. Para centrarnos en la bsqueda de ficheros en Debian vamos a comenzar por el comando find. Toda la informacin que ofrezco aqu est en el man, pero yo voy a intentar sintetizarla y ofreceros las opciones y comandos que a mi me resultan ms tiles, aunque tus necesidades y las mias seguro que son distintas y quiz encuentres otros modificadores de mayor utilidad en el man que en mi texto. Adems si conoceis otros modificadores o trucos interesantes, dejadme un comentario y lo incluyo en el texto. El comando find: Este comando nos permite buscar archivos indicando un punto de inicio de la bsqueda (path) y una expresin a buscar. Es uno de los comandos ms utilizados. Por ejemplo si queremos buscar cualquier archivo que empiece por syslog en todo el rbol de directorios lo procesaramos de la siguiente manera: find / -name syslog* *nota: si no ejecutas este comando como root, recibirs un mensaje de error cada vez que find intente acceder a un directorio para el que no tengas permiso. En este caso es recomendable dirigir los errores al dispositivo null, es decir, purgarlos: find / -name syslog* 2>/dev/null Algunos otros modificadores tiles de find son: -size +/-n[bkMG] donde n es el nmero de unidades de espacio que sern especificadas por b,k,M o G, es decir, bytes, kilobytes, Megabytes o Gigabytes respectivamente (hay ms opciones). Veamos un ejemplo: find /var/log/ -size +1M -size -20M buscar todos los archivos dentro de /var/log/ que tengan entre 1 y 20 Megabytes.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Para buscar a partir del directorio actual usaremos por ejemplo: find . -name nombrearchivo el punto despus de find indica que queremos buscar a partir de la ruta en la que nos encontramos.Aqu podemos usar otras opciones, incluso utilizar variables del sistema, como por ejemplo $HOME que corresponde a la ruta del directorio del usuario actual. find $HOME -name nombrearchivo Find busca de forma recursiva por defecto. Si queremos limitar la bsqueda al nivel de direcorio actual podemos usar el modificador -maxdepth 1, si quisieramos descender un nivel ms en la estructura de directorios -maxdepth 2 y as sucesivamente. Tambin podemos especificar determinados tipos y as ignorar otros que no nos interesan; imaginemos que slo necestamos buscar directorios: find / -name log* -type d En type podemos especificar varias opciones. las ms comunes: d (directorios) , f (archivos normales) o l (links simblicos). Con -perm podemos encontrar archivos que tengan unos permisos determinados, bastante til para securizar nuestro linux. Si lo combinamos con -user podemos localizar archivos que puedan ser modificados por un usuario determinado: find /var/log/ -perm /222 -user usuario1 Si el resultado es muy amplio lo podemos redireccionar a un archivo para su anlisis y aadir el modificador -ls, que nos listar ademas informacin ampliada sobre cada archivo: find /var/log/ -perm /222 -user usuario1 -ls >> datos.txt Otro modificador muy til es el modificador por tiempo de acceso o modificacin: -mtime n Encontrar los ficheros que hayan sido modificados hace n*24 horas. Ignora las fracciones as que su uso no es tan evidente como el de -mmin. Si indicamos -mtime +1 buscar archivos modificados hace al menos 48 horas. Incluyo algunos ejemplos de uso ms abajo, sino queda muy claro, consultad el man find. -mmin n Encontrar los ficheros que hayan sido modificados hace n minutos. Para ver los accesos slo tenemos que cambiar la primera m por una a , es decir: -atime n y -amin n Por ejemplo

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

find / -mmin 1 encontrar todos los archivos que han sido modificados en el ltimo minuto. Muy til cuando queremos saber donde hemos dejado ese archivo que estbamos modificando hace un rato y que ahora no encontramos o qu archivos ha modificado alguna herramienta que hemos utilizado. find . -atime 0 encontrar archivos que han sido accedidos en las ltimas 24 horas. find . -mtime 1 encontrar archivos que han sido modificados entre las ltimas 24 y 48 horas. find . -mtime +1 encontrar archivos que han sido modificados hace ms de 48 horas. find . -mtime +2 -mtime -5 encontrar archivos que han sido modificados hace ms de 48 horas y menos de 5 dias. Con la opcin printf podemos dar formato al resultado que obtenemos, por ejemplo para redirigirlo a un archivo.Veamos el siguiente ejemplo: find . -maxdepth 1 -name [!.]* -printf Nombre: %f\n Tamao: %s bytes\n Permisos: %M\n Grupo: %g \n Usuario: %u\n\n Analizamos el comando: con find . -maxdepth 1 [!.]* le pido que busque a partir del directorio actual pero sin buscar dentro de subdirectorios todos los archivos que no estn precedidos por un punto, (en linux el punto inicial indica que estos archivos son ocultos). El operador ! es la negacin de lo que viene a continuacin. Con -printf comienzo a formatear el resultado. Primero escribo Nombre y imprimo el nombre del fichero, esto lo hacemos con la variable %f. Despus hago un salto de lnea /n. Hago lo propio para el tamao, permisos, grupo y usuario propietario del archivo, utilizando las variables %s, %M, %g y %u respectivamentey por ltimo pongo dos saltos de lnea. La cosa quedara tal que as: Nombre: Tamao: Permisos: Grupo: Usuario: carranz Nombre: Tamao: Permisos: Grupo: Usuario: carranz Nombre: Tamao: Permisos: Grupo: Usuario: root Desktop 4096 drwxr-xr-x root

mkchroot.sh 4542 -rwxrr root

tightvnc-1.2.9_javabin.zip 127646 -rw-rr root

Esto es muy interesante ya que podra dirigir toda esta informacin a un archivo html automticamente en el servidor web por ejemplo, si ya tuviesemos un archivo llamado tabla.html que contuviese las cabeceras html y una tabla con los nombres de los campos, podramos rellenar la tabla as: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

find . -maxdepth 1 -name [!.]* -printf <tr><td> %f</td><td> %s</td><td>%M</td><td> %g</td><td>%u</td></tr>>>/var/www/tabla.html Despus slo nos quedara enviar un echo con el cierre de la tabla, el body y el html: echo </table></body></html> >> /var/www/tabla.html *nota recoduerda que al redirigir con >> aado al un fichero las lneas que quiero, no lo sobreescribo. Si lo redirigiese con una sola >, lo sobrescribira. Esto nos dejara el listado de un determinado directorio convertido en html en nuestro servidor web que podramos consultar o integrar con alguna aplicacin web. Por supuesto que hay otras maneras de hacer esto pero no busco el fin, sino un ejemplo de la utilizacin de find con -printf. Otro elemento potentsimo es la utilizacin de pipes con xargs. Por medio de este comando podemos filtrar la salida de find y ejecutar sobre aquellos archivos encontrados por find algnprograma como grep, tar o gzip. til en este ltimo caso para hacer backups por ejemplo de logs: find /var/log/ -name syslog* -type f -mtime 0 | xargs tar -rf logs_backup_diario.tar Con esto comprimo en logs_backup_diario los archivos syslog que han sido modificados en las ltimas 24 horas. Una de las fomras ms tiles de combinar find con xargs: Necesito encontrar un texto dentro de varios archivos, primero necesito encontrar estos archivos y depus encontrar un texto dentro: find /var/log/ -name syslog* -type f -mtime 0 | xargs grep failed Con esto primero encuentro todos los archivos syslog y despus encuentro todas las lneas de estos archivos que contienen la palabra failed. til verdad? Otra poderosa arma es el operador -o. Ya hemos visto que find concatena modificadores por defecto, si ponemos -mtime 0 -name prueba nos buscar archivos que se llamen prueba Y que haya sido modificados en las ltimas 24 horas. Sin embargo podemos querer encontrar archivos que se llamen prueba O que hayan sido modificados en las ltimas 24 horas. para ello empleamos -o: find . -name prueba -o -mtime 0 En definitiva find es un comando muy potente que merece ser estudiado detenidamente, consultad el man find para conocer otras muchas posibilidades. Otra comando para buscar ficheros es locate, aunque lo detallar ms adelante en futuros artculos.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

grep
Este comando busca texto que coincida con el patrn pedido. Sus posibles opciones son muchsimas, pero las esenciales puede que sean stas que veremos: -nmero muestra nmero lneas de texto antes y despus de las coincidencias. Variantes: -A nmero (After, despus) y -B nmero (Before, antes) -f archivo se ejecuta sobre ese archivo -i no diferencia entre maysculas o minsculas Usemos grep entonces. Para empezar, un ejemplo fcil: [rogelio@Edhellond rogelio]$ grep -n -e Mariner docs/rime10.txt 1:The Project Gutenberg Etext of The Rime of the Ancient Mariner 20:The Rime of the Ancient Mariner 29:**The Rime of the Ancient Mariner by Samuel Taylor Coleridge** 267:It is an ancient Mariner, 285:The Mariner hath his will. 290:The bright-eyed Mariner. 315:The bright-eyed Mariner. 364:"God save thee, ancient Mariner! 556:"I fear thee, ancient Mariner! 709:"I fear thee, ancient Mariner!" 829:When the Mariner's trance is abated. 1067:The Mariner, whose eye is bright, [rogelio@Edhellond rogelio]$ busca todas las lneas que contengan la cadena de texto "Mariner" en el archivo rime10.txt, y les agrega el nmero de lnea. Si hubisemos usado la opcin -i la lista sera ms larga. (encontrara, por ejemplo, "MARINER" y "mariner", e incluso "mariners". Si quisiramos encontrar una palabra exacta, usaramos la opcin -w: [rogelio@Edhellond rogelio]$ grep -w "Sun's" docs/rime10.txt -n 520:The Sun's rim dips; the stars rush out: [rogelio@Edhellond rogelio]$ Note que, si no hubisemos usado las comillas dobles alrededor de "Sun's", el resultado no habra sido el buscado. Ahondando un poco en el uso de grep, veamos algo ms sobre expresiones regulares. Estas bestias son herramientas poderossimas para usar grep (y tambin en edicin avanzada de textos). Bsicamente, una expresin regular es un patrn de bsqueda ms o menos complejo. Por ejemplo: grep [1-9] usa una expresin regular, que en este caso busca cualquier nmero entre 1 y 9. Si agrego un '^' al principio de la expresin, se buscan todos los carcteres salvo esos. Hay abreviaturas como [:alnum:], que busca cualquier carcter alfanumrico. El comando sera grep [[:alnum:]], con dobles corchetes. Esto es una caracterstica de las expresiones regulares, llamada clase. Una clase define un grupo de caracteres, en este caso los alfanumricos. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

[rogelio@Edhellond rogelio]$ grep [3-6] docs/rime10.txt -n 23:July, 1994 [Etext #151] 36:people, on about 250 million computers currently in existence: 37:then we will have given about 15.1 billion Etexts away when the 66:Files by the December 31, 2001. [10,000 x 100,000,000=Trillion] 82:Champaign, IL 61825 101:or cd etext93 [for new books] [now also in cd etext/etext93] 131:sending a request within 30 days of receiving it to the person 195:or addition to the etext, or [3] any Defect. 234:[3] Pay a trademark license fee to the Project of 20% of the 239: Benedictine College" within the 60 days following each 251:Internet (72600.2026@compuserve.com); TEL: (212-254-5093) 252:*END*THE SMALL PRINT! FOR PUBLIC DOMAIN ETEXTS*Ver.04.29.93*END* [rogelio@Edhellond rogelio]$ grep tambin puede usarse para buscar archivos, usando las opciones -l y -r: grep -l 'main' *.c busca todos los archivos que contengan la cadena main y terminen en .c; grep -r 'hola' /home busca recursivamente (bajando por los subdirectorios) desde /home, la cadena hola. Para estos usos conviene en realidad usar una combinacin de grep y find. Cundo usar uno u otro Normalmente, find se usa para encontrar nombres de archivo buscando en los directorios. grep es para buscar cadenas de texto en archivos o en la consola (puede hacerse un grep de lo que un comando devuelve como resultados. Por ejemplo, podra hacerse grep del resultado del comando ls. Ahora, como un directorio en Linux tambin es tcnicamente un archivo, es posible hacer muchas cosas que en principio a uno no se le ocurren. El uso depende entonces de lo que quiera y sepa hacer. De todos modos, info comando o man comando le darn la ayuda que est buscando. Un ltimo truco: info ``Finding Files'' (note el uso de acentos graves al principio de la cadena y apstrofes al final). Combinacin de comandos Supongamos que queremos archivar una bsqueda, o verla ms cmodamente (el desplazamiento por la pantalla de terminal no es eterno). Tenemos dos opciones: una es correr find archivo buscado > archivo lo que guarda en el archivo el resultado de la bsqueda. La segunda opcin es combinar un comando antes de find: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

less `find /usr/include -name '*.h' | xargs grep -l mode_t` es una combinacin algo extensa: hace que combinemos (con el comando xargs) los comandos grep (de bsqueda de cadenas en archivos) con find (de bsqueda de archivos); luego pasamos el resultado al comando less, que los presenta en pantalla. Si en lugar de ste usamos vi o algn otro editor de texto, podremos editar la bsqueda inmediatamente para darle el formato que deseemos.

6.4 - Enlaces

Enlaces de archivos En ocasiones es necesario dar a un mismo archivo distintos nombres o, para mantener la integridad de los datos, se hace necesario que un mismo archivo que va a ser modificado por varias personas pueda estar representado por un nombre distinto con distintos permisos cada uno. Dada la representacin que GNU/Linux le da a los archivos es posible que dos o ms nombres apunten al mismo contenido en el disco rgido. Recordemos que los archivos se representan por el nmero de inodo en el disco y es el nico identificador que el sistema tiene del archivo. Si se quiere ver el inodo que representa un archivo basta solo con agregar el modificador -i al comando ls. Existen dos tipos de enlaces: los duros y los simblicos. Enlaces simblicos o symbolic links A diferencia con los enlaces duros, estos enlaces solo dan otro nombre a un archivo pero no hacen un enlace al nivel de inodo. Se puede hacer una comparacin con los "Accesos directos" de Windows95. La orden ln -s genera un enlace simblico. [shrek@pantano:~]$ [shrek@pantano:~]$ total 2 14438 -r-------14446 lrwxrwxrwx [shrek@pantano:~]$ ln -s hola saludos ls -il 1 shrek 1 shrek user user 64 Apr 29 14:04 hola 4 May 7 08:33 saludos -> hola

Como se ve, el enlace nos muestra a que archivo esta apuntando. Existen diferencias entre este tipo de enlaces y los duros como que ya no estn apuntando al mismo inodo. Adems los bit de permisos aparecen todos encendidos dado que no son usados. Los permisos que se utilizan son los del archivo al que se esta apuntando. Si nos fijamos bien, en la primera posicin de los permisos veremos una letra l. Esto nos indica que es un enlace simblico. Otra particularidad es que se pueden crear enlaces simblicos de archivos que no existen; pero lo mismo no es cierto para los enlaces duros. Con los enlaces simblicos se puede saber a que archivo estn apuntando, no as con los duros. Los enlaces simblicos son ampliamente usados para las libreras compartidas.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Enlaces duros o hard links Para crear enlaces entre los archivos se utiliza el comando ln. Para dar un ejemplo, si se quisiera hacer un enlace del archivo hola el comando es [shrek@pantano:~]$ ln hola saludo Si ahora hacemos un listado mostrando los inodos [shrek@pantano:~]$ ls -il total 2 14438 -r-------- 2 shrek 14438 -r-------- 2 shrek

user user

64 Apr 29 14:04 hola 64 Apr 29 14:04 saludo

Como se ve el nmero de nombres que los archivos tienen ahora es 2 dado que hemos creado otro nombre que es un enlace al contenido que tena el archivo hola en el disco. Esto puede verse dado que el primer nmero del listado, 14438, es el nmero del inodo donde comienza el contenido del archivo hola. Aunque parezca que el contenido se a duplicado, esto no es as. Ambos archivos apuntan al mismo sitio. Por esto, un archivo no se borra hasta que se haya borrado el ltimo de sus nombres. De esta forma tambin podemos decir que un directorio no es ms que un archivo que contiene informacin sobre la translacin enlace a inodo. Tambin que cada directorio tiene dos enlaces duros en l: . (un enlace apuntando a si mismo) y .. (un enlace apuntando a su directorio padre). En el directorio raz / el enlace .. siempre apunta a /.

6.5 - Permisos, usuarios y grupos

Permisos de archivos, sus dueos y grupos


Para entender mejor el concepto de permisos se tendr que tener en cuenta que cada usuario puede pertenecer a uno o ms grupos. Cada usuario pertenece por lo menos a un grupo, que es establecido en el momento en que el usuario se crea. El administrador del sistema puede agregar al usuario a otros grupos. Estos grupos son necesarios para poder establecer una poltica de acceso ms organizada dado que en cualquier momento se podra dar a un archivo el acceso a personas de un grupo determinado. Lo nico que se tendra que hacer es agregar a los usuarios que se quieran dar permisos a ese grupo. Para cada objeto (archivo) que se encuentre en el sistema, GNU/Linux guarda informacin administrativa en la tabla de inodos, tema que abarcaremos en mayor detalle ms adelante. Entre los datos que se guardan en esta tabla se encuentran la fecha de creacin del archivo, modificacin del archivo y la fecha en que se cambio el inodo. Pero adems contiene los datos en los que se centra toda la seguridad en Un*x. Estos son

El dueo de archivo El grupo del archivo Los bits de modo o tambin llamados permisos de archivo Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

25 de Mayo 445 Piso 2 (1002) Bs.As.

En este tramo nos centraremos en primer medida en entender los permisos y en establecer la forma en que pueden trabajar con ellos. Conceptos Al ser Un*x y GNU/Linux sistemas operativos multiusuario, para que se puedan proteger los archivos se estableci un mecanismo por el cual se otorgan permisos a un determinado usuario y/o grupo. Esto permite, por ejemplo, que si existe un archivo creado por un usuario en particular, este ser propiedad del usuario y tambin tendr el grupo del usuario. Se permite que los archivos sean compartidos entre usuarios y grupos de usuarios. Por ejemplo si shrek quisiera puede prohibir los accesos a un archivo determinado que le pertenezca a todos los usuarios que no pertenezcan a su grupo de usuarios. Los permisos estn divididos en tres tipos: lectura, escritura y ejecucin (rwx). Estos permisos pueden estar fijados para tres clases de usuario: el propietario del archivo, el grupo al que pertenece el archivo y para todo el resto de los usuarios. El permiso de lectura permite a un usuario leer el contenido del archivo o en el caso de que el archivo sea un directorio, la posibilidad de ver el contenido del mismo. El permiso de escritura permite al usuario modificar y escribir el archivo. En el caso de un directorio permite la crear nuevos archivos en l o borrar archivos existentes. El permiso de ejecucin permite al usuario ejecutar el archivo, si tiene algo para ejecutarse. Para los directorios permite al usuario cambiarse a l con el comando cd. Como se interpretan los permisos Para poder interpretar los permisos de archivos nada mejor que utilizar el comando ls -la. Con esto vemos un listado largo de un directorio. [shrek@pantano:~]$ ls -la total 13 drwxr-sr-x 2 shrek user drwxrwsr-x 4 root staff -rw------1 shrek user -rw-r--r-1 shrek user -rw-r--r-1 shrek user -rwxrwxr-x 1 shrek user -rwxrwxr-x 1 shrek user -r-------1 shrek user -rwxrw-r-1 shrek user -rw-rw-r-1 shrek user -rw-rw-r-1 shrek user -rwxrwxr-x 1 shrek user -rwxrwxr-x 1 shrek user

1024 1024 2541 164 55 0 40 64 337 40 0 175 56

May Apr May Apr Apr Apr Apr Apr Apr Apr May Apr Apr

2 17 2 23 23 14 30 29 29 30 2 30 23

09:04 21:08 22:04 14:57 14:44 19:29 12:14 14:04 13:57 12:31 09:04 12:30 15:08

. .. .bash_history .bash_profile .bashrc a.out hello.pl hola lista listador null prue.pl que.sh

Como se puede apreciar en este listado, tambin estn el directorio actual, representado por un punto . y el directorio padre representado por dos puntos .. . Ellos tambin poseen permisos y atributos que son mostrados. Para ir entendiendo un poco ms vamos a explicar que significan los primeros 10 dgitos.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Tomemos como ejemplo el siguiente archivo -rw-r--r-1 shrek user 337 Apr 29 13:57 lista

Para esclarecer un poco mas que significa cada uno de estos caracteres al inicio, utilizaremos unas tablas. Primero veamos aquellos caracteres que podran aparecer en el primer lugar, que en el ejemplo anterior es un solo guin. Esto nos indica que es un archivo comn. La tabla siguiente explica el significado del primer smbolo de acuerdo al tipo de archivo. Tipos de archivo Contenido d c b l s p Significado Archivo comn Directorio Dispositivo de caracteres (tty o impresora) Dispositivo de Bloque (usualmente disco rgido o CD-ROM) Enlace simblico Socket Pipe

Los siguientes 9 smbolos se toman en grupos de tres y cada grupo pertenece a una clase de permisos, y se muestran a continuacin Tipos de permisos 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Permiso Significado r w x Permiso de lectura Permiso de escritura Permiso de ejecucin

Grupos de permisos Columnas 2,3,4 5,6,7 8,9,10 Se aplica a owner group other Significado Establece los permisos para el dueo del archivo Establece los permisos para el grupo del archivo Establece los permisos para los usuarios que no entran en las categoras anteriores

De esta forma podremos interpretar el listado generado a partir de ls -la de mejor manera. Como ya dijimos, el primer smbolo nos esta indicando que el archivo es un archivo comn. El primer grupo de tres smbolos representa los permisos para el dueo del archivo (owner) que en este caso posee permisos de lectura, escritura y ejecucin. El segundo grupo de tres smbolos representa los permisos para el grupo al cual pertenece el archivo (group), que en este caso tienen permisos de lectura y escritura. El tercer grupo de tres smbolos representa los permisos para todo el resto de los usuarios (other) en este caso es solo de lectura. El nmero que sigue (1) representa el nmero de nombres que el archivo posee. Esto indica la cantidad de enlaces que existen a este archivo y lo veremos ms adelante cuando tratemos el tema de enlaces simblicos y duros. A continuacin esta el nombre del dueo del archivo y del grupo al cual pertenece el archivo. El "337" representa el tamao del archivo expresado en bytes. Lo siguiente es la fecha y hora de modificacin del archivo e inmediatamente despus esta el nombre del mismo.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Dependencias Los permisos de los archivos tambin dependen del directorio donde estn guardados. En un ejemplo comn podramos dar el caso de un archivo que posea todos los permisos, tanto para el usuario, grupo y otros pero no se podr acceder a l si no se cuenta con permisos de lectura y ejecucin en el directorio que los contiene. Esto funciona en el caso que se quiera restringir el acceso a un directorio determinado y a todos los archivos que este contiene. En lugar de cambiar los permisos uno por uno solo tenemos que sacarle los permisos necesarios para que se prohba el acceso mismo al directorio y con esto no podrn ingresar para usarlos. Esto tambin esta dado para toda la ruta del archivo. Es decir que no solo el ltimo directorio, el cual lo contiene, tiene que tener los permisos necesarios, sino que todos los directorios que lo preceden tambin. Cambiando permisos El comando chmod se emplea utilizando smbolos como a,u,g,o que representan a todos (a "all"), al usuario (u), al grupo (g) y a todos los dems (o). Existen smbolos para agregar (+) quitar (-) o dejar invariantes los permisos (=). Adems tendrn que usarse los smbolos caractersticos para cada tipo de permiso. Para el permiso de lectura (r), para el permiso de escritura (w) y para el permiso de ejecucin (x). Solo el dueo del archivo puede cambiarlo con l; excepcin del root que tambin lo puede hacer. Para ejemplificar un cambio de permisos usaremos el archivo lista. [shrek@pantano:~]$ ls -l lista total 1 -rwxrw-r-1 shrek user [shrek@pantano:~]$ chmod a-r lista [shrek@pantano:~]$ ls -l lista total 1 --wx-w---1 shrek user

337 Apr 29 13:57 lista

337 Apr 29 13:57 lista

De esta forma se le ha sacado a todos los grupos y usuarios los permisos de lectura. Algunos ejemplos ms [shrek@pantano:~]$ chmod u+r lista [shrek@pantano:~]$ ls -l lista total 1 -rwx-w---1 shrek user [shrek@pantano:~]$ chmod o+w lista [shrek@pantano:~]$ ls -l lista total 1 -rwx-w-w-1 shrek user [shrek@pantano:~]$ chmod og-w lista [shrek@pantano:~]$ ls -l lista total 1 -rwx-----1 shrek user

337 Apr 29 13:57 lista

337 Apr 29 13:57 lista

337 Apr 29 13:57 lista

Ahora bien, esta es la forma simblica. Pero existe una forma un poco ms sistemtica que es la forma 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

de representacin octal. El comando chmod permite establecer los permisos de un archivo por medio de un nmero octal. Comnmente nosotros usamos para contar una representacin decimal (0,1,2,3,4,5,6,7,8,9) pero en una representacin octal solo se usan 8 nmeros (0,1,2,3,4,5,6,7). Para establecer el permiso habr que sumar los dgitos octales de acuerdo a una tabla que se dar a continuacin. Dado que no se realiza acarreo, la suma ser trivial. Permisos en notacin octal Nmero octal Permiso 4000 2000 1000 0400 0200 0100 0040 0020 0010 0004 0002 0001 Establece el nmero de identificacin de usuario al ejecutarse SUID [a] Establece el nmero de identificacin de grupo al ejecutarse SGID[a] Establece el bit adhesivo[a] Lectura por parte del dueo Escritura por parte del dueo Ejecucin por parte del dueo Lectura por parte del grupo Escritura por parte del grupo Ejecucin por parte del grupo Lectura por parte de los otros Escritura por parte de los otros Ejecucin por parte de los otros

Notas: a. Se ver al finalizar el tema

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Para dar un ejemplo de la suma que se tendr que realizar, tomemos un archivo con los permisos expresados en forma simblica y realicemos la conversin. Para representar -rwxr-x--+ 0400 Lectura por parte del dueo + 0200 Escritura por parte del dueo + 0100 Ejecucin por parte del dueo + 0040 Lectura por parte del grupo + 0010 Ejecucin por parte del grupo ----------------------------------------0750 Resultado De esta forma si lo que quisiramos es cambiar los permisos de un archivo, solo se tendra que efectuar la suma necesaria y establecerlo con el comando chmod. Si quisiramos cambiar los permisos para que el dueo tenga permisos de lectura y escritura y que el grupo y otros solo tengan permisos de lectura, la sintaxis es [shrek@pantano:~]$ chmod 0644 lista [shrek@pantano:~]$ ls -l lista total 1 -rw-r--r-1 shrek user

337 Apr 29 13:57 lista

Con la prctica se sabrn cuales son las sumas mas utilizadas y podrn ver que es mucho ms sencillo el establecer de esta forma los permisos de archivos. Cambiando grupos y usuarios Lo que nos queda por ver es el caso en que se quisiera cambiar el usuario o el grupo del archivo. Para esto se usa el comando chown y su sintaxis es similar a la de chmod pero con la variante que se dan los nombres del usuario y del grupo. Si quisiramos cambiar el nombre de usuario del archivo lista tendremos [root@pantano:/home/shrek]# ls -l lista total 1 -rw-r--r-1 shrek user 337 Apr 29 13:57 lista [root@pantano:/home/shrek]# chown fiona lista [root@pantano:/home/shrek]# ls -l lista total 1 -rw-r--r-1 fiona user 337 Apr 29 13:57 lista Si se quisiera cambiar tambin el nombre del grupo, se tendra que poner un punto entre el nombre de usuario y el grupo [root@pantano]# ls -l lista total 1 -rw-r--r-1 shrek user 337 Apr 29 13:57 lista [root@pantano]# chown fiona.ventas lista [root@pantano]# ls -l lista 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

total 1 -rw-r--r--

1 fiona

ventas

337 Apr 29 13:57 lista

Por supuesto que tanto el usuario como el grupo al que se hacen referencia tendrn que existir en el sistema, sino se producir un error. En el caso que solo se quiera cambiar el grupo y no el usuario, se tendr que poner un punto delante del nombre del grupo, omitiendo poner el nombre del algn usuario. O si se quiere, se podr poner el nombre de usuario que estaba anteriormente. [root@pantano]# ls -l lista total 1 -rw-r--r-1 shrek user [root@pantano]# chown .ventas lista [root@pantano]# ls -l lista total 1 -rw-r--r-1 shrek ventas

337 Apr 29 13:57 lista

337 Apr 29 13:57 lista

umask Esta es la abreviatura de user file-creation mode mask o mscara del modo de creacin de archivos de usuario y es un nmero octal de cuatro dgitos que se utilizan para fijar los permisos de los archivos recin creados. Esto puede ocasionar confusin pero en realidad es una utilidad que permite el uso del sistema por mltiples usuarios sin que peligre la privacidad. En la mayora de los Un*x los archivos que son creados por el usuario, poseen permisos 0666 que dan permiso de lectura y escritura a cualquier usuario. En relacin con los programas, estos se crean con 0777 donde cualquier usuario puede leer, escribir y ejecutar el programa. Normalmente el administrador del sistema aplica una mscara al usuario en el archivo .bash_profile y esta es usada para la creacin de archivos haciendo una operacin simple "AND" bit por bit con el complemento del valor umask bit por bit. La funcin umask esta integrada al intrprete de comandos. Para ejemplificar el proceso tomemos un archivo creado por el usuario. 0666 Modo predeterminado de creacin de archivos - 0022 Umask ------------------------------------------------------0644 Modo resultante El modo resultante es que el dueo tiene permisos de lectura y escritura y los dems y el grupo solo de lectura. 0666 Modo predeterminado de creacin de archivos - 0077 Umask ------------------------------------------------------0600 Modo resultante El modo resultante es que el dueo tiene permisos de lectura y escritura y los dems y el grupo no tienen ningn permiso. Una forma de darse cuenta de la forma en que funciona el umask es tener en cuenta que el valor 2 inhabilita el permiso de escritura mientras que el valor 7 inhabilita los permisos de lectura escritura y ejecucin. A continuacin daremos una tabla con los valores comnmente usados para el umask. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Valores usuales de la variable umask Umask Accesos del usuario 0000 0002 0007 0022 0027 0077 Todos Todos Todos Todos Todos Todos Accesos del grupo Todos Todos Todos Lectura y ejecucin Lectura y ejecucin Ninguno Accesos de los otros Todos Lectura y ejecucin Ninguno Lectura y ejecucin Ninguno Ninguno

Bits SUID, SGID y de persitencia (sticky bit) An hay otro tipo de permisos que hay que considerar. Se trata del bit de permisos SUID (Set User ID), el bit de permisos SGID (Set Group ID) y el bit de permisos de persistencia (sticky bit). Para entender los dos primeros el SUID y el SGID veamos los permisos para un comando de uso comn a todos los usuarios, que es el comando passwd, que como se sabe sirve para cambiar la contrasea del usuario, y puede ser invocado por cualquier usuario para cambiar su propia contrasea, si vemos sus permisos observaremos un nuevo tipo de permiso:

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

SUID
En vez de la 'x' en el grupo del usuario encontramos ahora una 's' (suid). passwd es un comando propiedad de root, pero sin embargo debe de poder ser ejecutado por otros usuarios, no solo por root. Es aqui donde interviene el bit SUID, donde al activarlo obliga al archivo ejecutable binario a ejecutarse como si lo hubiera lanzado el usuario propietario y no realmente quien lo lanz o ejecut. Es decir, es poder invocar un comando propiedad de otro usuario (generalmente de root) como si uno fuera el propietario.

SGID
El bit SGID funciona exactamente igual que el anterior solo que aplica al grupo del archivo. Es decir si el usuario pertenece al grupo 'ventas' y existe un binario llamado 'reporte' que su grupo es 'ventas' y tiene el bit SGID activado, entonces el usuario que pertenezca al grupo 'ventas' podr ejecutarlo. Tambin se muestra como una 's' en vez del bit 'x' en los permisos del grupo.

STICKY BIT (Bit de persistencia)


Este bit se aplica para directorios como en el caso de /tmp y se indica con una 't': #> ls -ld /tmp drwxrwxrwt 24 root root 4096 sep 25 18:14 /tmp Puede apreciarse la 't' en vez de la 'x' en los permisos de otros. Lo que hace el bit de persistencia en directorios compartidos por varios usuarios, es que el slo el propietario del archivo pueda eliminarlo del directorio. Es decir cualquier otro usuario va a poder leer el contenido de un archivo o ejecutarlo si fuera un binario, pero slo el propietario original podr eliminarlo o modificarlo. Si no se tuviera el sticky bit activado, entonces en estas carpetas pblicas, cualquiera podra eliminar o modificar los archivos de cualquier otro usuario.

Estableciendo los permisos especiales


Para cambiar este tipo de bit se utiliza el mismo comando chmod pero agregando un nmero octal (1 al 7) extra al principio de los permisos, ejemplo: #> ls -l /usr/prog -r-x--x--x 24 root root 4096 sep 25 18:14 prog #>chmod 4511 /usr/prog #> ls -l /usr/prog -r-s--x--x 24 root root 4096 sep 25 18:14 prog Ntese que el valor extra es el '4' y los dems permisos se dejan como se quieran los permisos para el archivo. Es decir, los permisos originales en este ejemplo eran 511 (r-x--x--x), y al cambiarlos a 4511, se cambi el bit SUID reemplazando el bit 'x' del usuario por 's'.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Los posibles valores seran los siguientes: ----------------t = 0 Predeterminado, sin permisos especiales. No se requiere indicar. = 1 Bit de persistencia, sticky bit

- - - - - s - - - = 2 Bit sgid de grupo - - - - - s - - t = 3 Bit sgid y sticky - - s - - - - - - = 4 Bit suid - - s - - - - - t = 5 Bit suid y sticky - - s - - s - - - = 6 Bit suid y sgid - - s - - s - - t = 7 Bit suid, sgid y sticky

MUY IMPORTANTE: Algo sumamente delicado y que se tiene que tomar muy en cuenta es lo que decidas establecer con permisos de bit SUID y SGID, ya que recuerda que al establecerlos de esta manera, cualquier usuario podr ejecutarlos como si fueran el propietario original de ese programa. Y esto puede tener consecuencias de seguridad severas en tu sistema. Siempre considera y reconsidera si conviene que un usuario normal ejecute aplicaciones propias de root a travs del cambio de bits SUID o SGID. Mejores alternativas pueden ser los comandos sudo y su.

6.6 - Herramientas de compresin

Los archivos comprimidos utilizan menos espacio en el disco y se descargan ms rpido que los archivos no comprimidos. Puede comprimir archivos en Red Hat Linux con las herramientas gzip, bzip2, o zip. Se recomienda usar la herramienta de compresin bzip2 porque da la mejor compresin de todas y se encuentra en todos los sistemas operativos del tipo UNIX. La herramienta de compresin gzip tambin se encuentra en la mayora de los sistemas tipo UNIX. Si necesita pasar archivos de Linux a otros sistemas operativos como MS Windows, debera usar zip porque es la herramienta ms compatible con estos tipos de sistemas operativos. Herramienta de compresin gzip bzip2 zip Extensin .gz .bz2 .zip Herramienta de descompresin gunzip bunzip2 unzip

En general, a los archivos comprimidos con gzip se les da la extensin .gz, a los comprimidos con bzip2 se les da la extensin .bz2, y a los archivos comprimidos con zip la extensin .zip. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Los archivos comprimidos con gzip se descomprimen con gunzip, los archivos comprimidos con bzip2 se descomprimen con bunzip2, y los comprimidos con zip se descomprimen con unzip. Bzip2 y Bunzip2 Para comprimir un archivo usando bzip2, escriba el siguiente comando en el intrprete de comandos: bzip2 filename El archivo ser comprimido y guardado como filename.bz2. Para expandir un archivo comprimido, teclee: bunzip2 filename.bz2 El filename.bz2 se borra y se reemplaza por filename. Puede usar bzip2 para comprimir mltiples archivos y directorios al mismo tiempo colocndolos en una lista separados con espacios entre ellos: bzip2 filename.bz2 file1 file2 file3 /usr/work/school El comando anterior comprime los archivos file1, file2, file3, y los contenidos del directorio /usr/work/school (asumiendo que este directorio existe) y los mete en un archivo llamado filename.bz2. Gzip y Gunzip Para usar gzip para comprimir un archivo, escriba el siguiente comando en el intrprete del shell: gzip filename El archivo se comprimir y guardar como filename.gz. Para expandir el archivo comprimido, escriba el comando: gunzip filename.gz El filename.gz es luego borrado y reemplazado por filename. Puede usar gzip para comprimir mltiples archivos y directorios al mismo tiempo listndolos con un espacio de por medio: gzip -r filename.gz file1 file2 file3 /usr/work/school El comando de arriba comprime file1, file2, 25 de Mayo 445 Piso 2 (1002) Bs.As. file3, y los contenidos del directorio Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

/usr/work/school (asumiendo que existe) y los coloca en un archivo llamado filename.gz. Zip y Unzip Para comprimir un archivo con zip, escriba el siguiente comando: zip -r filename.zip filesdir En este ejemplo, filename.zip representa el archivo que est creando y filesdir el directorio en el que quiere meter el nuevo fichero comprimido con zip. La opcin -r especifica que quiere incluir todos los archivos contenidos en el directorio filesdir recursivamente. Para extraer los contenidos de un archivo zip, escriba el comando siguiente: unzip filename.zip Puede usar zip para comprimir mltiples archivos y directorios al mismo tiempo listndolos con un espacio en blanco entre ellos: zip -r filename.zip file1 file2 file3 /usr/work/school El comando de arriba comprime file1, file2, file3, y los contenidos del directorio /usr/work/school (asumiendo que existe) y los coloca en un archivo llamado filename.zip. Tar Un archivo tar es una coleccin de muchos archivos y/o directorios en un mismo archivo. Esta es una forma muy conveniente de hacer copias de seguridad (respaldos). Algunas de las opciones que se usan con el comando tar son: -c crea un nuevo archivo. -f cuando se usa con la opcin -c, usa el nombre del archivo especificado para la creacin del archivo tar; cuando se usa con la opcin -x, retira del archivo el archivo especfico. -t muestra la lista de archivos en el archivo tar. -v muestra el progreso de los archivos que estn siendo archivados. -x extrae los archivos desde un fichero. -z comprime el archivo tar con gzip. -j comprime el archivo tar con bzip2. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Para crear un archivo tar, escriba: tar -cvf filename.tar directory/file En este ejemplo, filename.tar representa el archivo que est creando y directory/file representa el directorio o archivos que quiere introducir en el nuevo archivo. Puede hacer tar a mltiples archivos y directorios al mismo tiempo listndolos dejando un espacio en blanco entre cada uno: tar -cvf filename.tar /home/mine/work /home/mine/school El comando de arriba coloca todos los archivos de los subdirectorios work y school de /home/mine en un nuevo archivo llamado filename.tar del directorio actual. Para listar los contenidos de un archivo tar, escriba: tar -tvf filename.tar Para extraer los contenidos de un archivo tar, escriba: tar -xvf filename.tar Este comando no remueve el archivo tar, pero coloca copias de los contenidos no archivados en el directorio actual, preservando la estructura del directorio que el archivo usa. Por ejemplo, si el archivo tar contiene un archivo llamado bar.txt dentro de un directorio de nombre foo/, entonces al extraer el archivo se crear un directorio foo/ en su directorio actual con el archivo bar.txt dentro de l. Recuerde, el comando tar no comprime los archivos por defecto. Para crear un archivo tar comprimido con bzip, use la opcin -j: tar -cjvf filename.tbz file A los archivos tar comprimidos con bzip2 se les da la extensin .tbz; sin embargo, algunas veces los usuarios archivan usando la extensin tar.bz2. El comando de arriba crea un archivo y luego lo comprime como filename.tbz. Si extrae este archivo filename.tbz con el comando bunzip2, el archivo filename.tbz es eliminado y reemplazado con filename.tar.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Puede adems expandir y eliminar el archivo archivado con tar y comprimido con bzip con un nico comando: tar -xjvf filename.tbz Para crear un archivo archivado con tar y comprimido con gzip, use la opcin -z: tar -czvf filename.tgz file A los archivos tar comprimidos con gzip se les da la extensin .tgz. Este comando crea un archivo filename.tar y luego lo comprime como filename.tgz. (El archivo filename.tar no se salva.) Si descomprime el archivo filename.tgz con el comando gunzip, el archivo filename.tgz es eliminado y reemplazado con filename.tar. Puede expandir un archivo comprimido con gzip y empaquetado con tar con un slo comando: tar -xzvf filename.tgz

6.7 - Administracin de cotas

Sistemas Linux con gran cantidad de usuarios, como servidores de correo, servidores samba, etc., tarde o temprano tienen el problema de usuarios que almacenan demasiada informacin en sus directorios de trabajo, pudiendo incluso en casos extremos llenar completamente discos duros haciendo el sistema inservible. Con el uso de cuotas de disco (disk quotas) es posible limitar la cantidad de espacio disponible para cada usuario o de manera global para todos. En este manual de LinuxTotal.com.mx conocers a fondo como implementar y administrar cuotas de disco para control de los usuarios.

Tipos de cuota Por Bloques (blocks): Un bloque corresponde a 1 kb y una cuota por bloques correspondera al total de bloques que un usuario puede utilizar en el sistema. Recuerda que los archivos se guardan en bloques de disco. Asi un archivo de 100 bytes, ocupar un un bloque de 1kb en el disco duro.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Por Inodos (inodes): Un inodo o inode en ingls (Index Node) es un nmero que actua como apuntador para el sistema de archivos de Linux y le indica en que bloques especficos del disco duro se encuentran los datos de un archivo. Tambin el inodo en su referencia guarda informacin sobre permisos, propietario, atributos, etc. Se podra ver en una analoga simple que un inodo es como un nmero de serie nico para cada archivo del sistema y a travs de este nmero el sistema recupera sus datos (bloques) y sus atributos (permisos, propietario, fechas, etc.). En el caso de las cutoas, una cuota por inodos indicara el total de indos a los que el usuario tiene derecho, casi representara el total de archivos que el usuario puede crear y digo "casi" porque los usuarios podemos crear enlaces simblicos (ln -s) sobre archivos ya existentes que no aumentan las cantidad de inodos. Pero por simplicidad puedes verlo como un 1 inodo = 1 archivo.

Lmites Tanto las cuotas por bloques o por inodos, tienen lmites de uso y son de dos tipos: HARD: (Duro) Cuando se establece (para bloques o inodos), es el lmite absoluto. El usuario no podr exceder este lmite. SOFT: (Suave) Este lmite (para bloques o inodos) que es siempre menor al HARD, puede ser excedido por el usuario, pero ser constantemente advertido que el lmite de uso para bloques o inodos ya ha sido excedido. Podra verse como un lmite de advertencia que le estar indicando al usuario que su lmite ya se excedi y tome medidas. Cuando se usa el lmite SOFT, dos situaciones pueden ocurrir. La primera es que NO se tenga establecido un tiempo de gracia, y entonces el usuario podr seguir usando bloques o inodos hasta llegar al lmite HARD que ser su lmite absoluto de uso. La segunda situacin es que SI se tenga establecido el tiempo de gracia, que puede ser en das, horas, minutos o segundos. En este caso, el usuario podr seguir usando bloques o inodos hasta que termine el tiempo de graca o llegue al lmite HARD, cualquiera que ocurra primero. El tiempo de gracias se puede establecer por usuario o globalmente y ms adelante veremos como establecerlo.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Donde se implementan? Las cuotas se establecen por filesystem o sistema de archivos, es decir, debes de decidir en donde es ms conveniente instalar un sistema de cuotas, pero no hay ningn problema si se instala en todos. Las cuotas pueden establecerse por usuario, por grupos o ambos. En el siguiente ejemplo: #> mount /dev/sda1 on /boot type ext3 (rw,noatime) /dev/sda2 on / type ext3 (rw,noatime) /dev/sda3 on /home type ext3 (rw,noatime) none on /proc type proc (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) Lo anterior es un ejemplo tpico de un equipo Linux con varios sistemas de archivos (/boot, / y /home). Como se sabe en /home es donde los usuarios tienen sus directorios de trabajo (HOME), asi que solo en este sistema de archivos crearemos cuotas, en los otros dos no tiene caso.

Configuracin Todo debe hacerse como root, y lo primero que haremos es editar el archivo "/etc/fstab" y aadiremos "usrquota" o "grpquota", dependiendo si se desea cuotas por usuario o grupos, o incluso ambas. #> vi /etc/fstab /dev/sda2 / /dev/sda1 /boot /dev/sda3 /home ....

ext3 ext3 ext3

noatime noatime noatime

1 1 1

1 2 2

(Aadimos en la cuarta columna el tipo de cuotas que deseamos) /dev/sda2 / ext3 noatime 1 1 /dev/sda1 /boot ext3 noatime 1 2 /dev/sda3 /home ext3 noatime,usrquota,grpquota ...

Algo similar a lo anterior deber tener tu archivo de configuracin, y como ya se indic solo agregamos el soporte para cuotas en el sistema de archivos que nos interese. Lo anterior por si solo, es obvio que no hace nada, habra que reiniciar el sistema para que se apliquen los cambios pero realmente no es necesario, lo siguiente re-monta el sistema de archivos "/home": #> mount -o remount /home #> mount /dev/sda1 on /boot type ext3 (rw,noatime) 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

/dev/sda2 on / type ext3 (rw,noatime) /dev/sda3 on /home type ext3 (rw,noatime,usrquota,grpquota) none on /proc type proc (rw) El sistema de archivos "/home" esta listo ahora para soportar cuotas de disco. El siguiente paso es verificar con el comando quotacheck por sistemas de archivos que soporten cuotas. Este comando crea, verifica o repara el control de cuotas en los sistemas que lo soporten, en este caso creara el soporte: #> quotacheck -augmv quotacheck: Scanning /dev/sda3 [/home] done quotacheck: Cannot stat old user quota file: No existe el fichero o el directorio quotacheck: Cannot stat old group quota file: No existe el fichero o el directorio quotacheck: Cannot stat old user quota file: No existe el fichero o el directorio quotacheck: Cannot stat old group quota file: No existe el fichero o el directorio quotacheck: Checked 2539 directories and 35556 files quotacheck: Old file not found. quotacheck: Old file not found. Los errores que enva es precisamente porque no exista un sistema de cuotas previo, es normal que los enve. Cuando las cuotas esten en pleno uso, es conveniente ejecutar quotacheck peridicamente para que verifique inconsistencias y se corrijan a tiempo. En cuanto a las opciones estas indican lo siguiente: a - all, es decir verifica todos los sistemas de archivos por cuotas. u - user, verifica por soporte de cuotas para usuarios. g - group, verifica por soporte de cuotas para grupos. m - no-remount, evita que el sistema se remonte como de solo lectura. v - verboso, reporta lo que hace conforme progresa, son los mensajes que salen a la terminal.

Como ves, la opcin -a en este caso no era necesario puesto que solo tenemos "/home" con cuotas, asi que el comando anterior tambin pudiera ser invocado de esta manera: #> quotacheck -ugmv /home Pues el sistema esta listo para manipular cuotas de usuario, esto lo podemos comprobar porque en la raz del sistema de archivos soportado con cuotas deben existir los archivos "aquota.user" y "aquota.group" que son binarios, no trates de modificarlos o manipularlos: #> cd /home #> ls -l total 72 -rw------- 1 root 25 de Mayo 445 Piso 2 (1002) Bs.As.

root

8192 2008-05-17 21:38 aquota.group Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

-rw------drwx--x--x drwx--x--x drwx--x--x drwx--x--x

1 4 4 3 3

root user1 user2 user3 user4

root user1 user2 user3 user4

8192 4096 4096 4096 4096

2008-05-17 2008-05-12 2008-05-12 2008-05-05 2008-05-05

21:38 16:13 16:13 12:01 12:01

aquota.user user1/ user2/ user3/ user4/

(obsrvese los dos archivos de control de cuotas, para usuarios y grupos)

Si se tuvieran ms sistemas de archivos con soporte para cuotas en la raz de cada uno estaran estos archivos, o solo uno dependiendo lo que se pidi, usuarios, grupos o ambos. Por cierto, en sistemas con kernel 2.2 o anterior se usaba la versin 1 de cuotas y sus archivos de control se nombraban "quota.user" y "quota.group", del kernel 2.4 y posteriores con la versin 2 y 3, se utiliza los mostrados anteriormente. Ahora bien, lo anterior deja listo el sistema para el soporte de cuotas pero ests siguen sin ser activadas se requiere activar el soporte de cuotas, para lo cual invocamos el comando quotaon: #> quotaon -ugv /home /dev/sda3 [/home]: group quotas turned on /dev/sda3 [/home]: user quotas turned on Activamos para "/home" cuotas de usuario y grupos. Cuando por alguna razn sea necesario desactivar las cuotas, entonces utiliza la contraparte, que es el comando quotaoff: #> quotaoff -v /home /dev/sda3 [/home]: group quotas turned off /dev/sda3 [/home]: user quotas turned off Muy bien, hasta aqui ya tienes el sistema de archivos "/home" o el que hayas elegido (o todos) para trabajar con soporte de cuotas para los usuarios y grupos, ahora veremos como aplicar estas cuotas con los usuarios.

Aplicando la cuota a usuarios Ahara hay que aplicar la cuota por usuario, aunque el sistema de archivos ya soporta cuotas y estn habilitadas, por defecto ningn usuario tiene establecidas cuotas. Asi que para iniciar habr que administrar cada usuario a travs del comando edquota, que abrir el editor de texto que se tenga por defecto y mostrar lo siguiente: #> edquota -u user1 Disk quotas for user user1 (uid 502): Filesystem blocks soft hard 25 de Mayo 445 Piso 2 (1002) Bs.As.

soft

hard

inodes

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

/dev/sda3 0

56

14

Las columnas "blocks" e "inodes" son informativas, es decir nos indican la cantidad de bloques o inodos utilizados actualmente por el usuario, y las que podemos editar son las columnas "soft" y "hard" de cada caso. Como ya se explic en la primera parte de este artculo, se puede indicar libremente cualquiera de los cuatro valores, es perfectamente posible establecer valores por bloques, por inodos o ambos, solo recuerda que el lmite soft debe ser menor al hard. Si se establece solo el hard, no habr advertencias previas y el usuario ya no podr guardar archivos cuando se llegue al valor. Si se establece soft y hard, avisar cuando se rebase el lmite soft y entrar en juego el periodo de gracia. Si se acaba el tiempo de gracias o se llega al har (lo que sea primero) ya no se podrn crear ms archivos hasta que no se eliminen algunos de los que se tengan actualmente. Para modificar cuotas a nivel grupo, se usa el mismo comando pero con la opcin -g (edquota -g ventas). En el ejemplo previo se modifica la cuota del usuario "user1" en el sistema de archivos "/home" que es el que se ha usado de ejemplo en este artculo de LinuxTotal.com.mx, el comportamiento por default es modificar cuotas para ese usuario en todos los sistemas de archivos que tengan activo el control de cuotas (quotaon). Si se desea control de cuotas para un filesystem en especfico entonces se agrega la opcin -f: #> edquota -u user1 -f /home (solo aplica la cuota en el sistema de archivos indicado)

Verificando el uso de las cuotas Como usuario administrador 'root' puedes ver el uso de cuotas de cualquier usuario, ya sea individualmente o por medio de un reporte global. Por usuario o individualmente se usa el comando quota, estando como "root": #> quota -u user1 Disk quotas for user user1 (uid 502): Filesystem blocks quota limit grace /dev/sda3 56 70 100

grace

files 14

quota 0

limit 0

Con usuarios que manejan cantidades muy grandes de cuota, es un poco dificil calcular en trminos de megas o gigas el espacio usuado y los lmites de cuotas: #> quota -u sergio Disk quotas for user sergio (uid 500): Filesystem blocks quota limit grace 25 de Mayo 445 Piso 2 (1002) Bs.As.

grace

files

quota

limit

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

/dev/sda3 42578888 Usando la opcin -s se mejora el informe:

0 50000000

34895

#> quota -s -u sergon Disk quotas for user sergon (uid 500): Filesystem blocks quota limit grace /dev/sda3 41582M 0 48829M

grace

files 34905

quota 0

limit 0

Como usuario individual del sistema, puedes observar tus cuotas con el mismo comando quota, sin argumentos. Ahora bien, si se desea un reporte global de las cuotas de todos los usuarios o por grupos, siendo "root" utiliza el comando repquota: #> repquota /home *** Report for user quotas on device /dev/sda3 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------root -- 184280 0 0 11 0 0 sergio -- 42579852 0 50000000 34902 0 0 user1 -56 70 100 14 0 0 user2 -52 0 0 13 0 0 user3 -28 0 0 7 0 0 user4 -28 0 0 7 0 0 Con repquota es tambin posible utilizar la opcin -s para observar los tamaos en formato legible. Si se usa la opcin -a (all) en vez del sistema de archivos "/home", el reporte ser para todos los sistemas de archivos en el equipo que soporten cuotas. Asi mismo este reporte por defecto es por usuarios, si se requiere que repquota reporte por grupos, aade entonces la opcin -g.

Obsrvese en la segunda lnea del reporte el tiempo de gracia (grace time), que es de 7 das tanto para cuotas por bloque como para cuotas por archivos o inodos. Esto aplica para todos los usuarios en global, como se aprecia en el listado que ninguno tiene establecido un tiempo de gracia diferente al global.

Estableciendo el tiempo de gracia A nivel global, un periodo de gracia para todos, utiliza la opcin -t del comando edquota, como en el siguiente ejemplo, recuerda que debes ser "root": 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

#> edquota -t Grace period before enforcing soft limits for users: Time units may be: days, hours, minutes, or seconds Filesystem Block grace period Inode grace period /dev/sda3 7days 7days 7 das es el periodo por defecto, si lo cambias a digamos 12 horas, sera "12hours". El tiempo de gracia puede ser distinto para el lmite soft por bloques o por inodos.

Por usuario especfico se realiza con la opcin -T del mismo comando e indicando el usuario: #> edquota -u user1 -T Times to enforce softlimit for user user1 (uid 502): Time units may be: days, hours, minutes, or seconds Filesystem block grace /dev/sda3 unset

inode grace unset

Lo nico que hay que considerar es que los tiempos de gracias por usuario deben ser menores al global. Y que este empieza a correr una vez que se ha llegado al lmite soft. Cuando esto suceda, si entras a editar de nuevo el tiempo de gracia del usuario (edquota -u user -T) se reflejara en segundos el tiempo que le queda, pudindolo aumentar de nuevo si eres "root". O dejarlo en cero y entonces el global ser el que se utilice.

Fijar cuotas de manera global a todos los usuarios En sistemas Linux con pocos usuarios, establecer las cuotas usuario por usuario no representa ningn problema. Pero si hablamos por ejemplo de una universidad donde pudieran existir miles de cuentas entonces si es un problema establecer cuentas individualmente. Realmente no existe una manera "oficial" de establecer cuotas masivamente, sin embargo, no hay problema, usaremos un pequeo script que te permitira realizarlo. Establece la cuota que deseas globalmente en un solo usuario: #> edquota -u user1 Disk quotas for user user1 (uid 502): Filesystem blocks soft hard /dev/sda3 68 0 0 :wq

soft 300

hard 400

inodes 17

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Veamos el reporte de cuotas con repquota: [root@segolap ~]# repquota /home *** Report for user quotas on device /dev/sda3 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------user1 -68 300 400 17 0 0 user2 -352 0 0 13 0 0 user3 -28 0 0 7 0 0 user4 -28 0 0 7 0 0

Solo el usuario "user1" tiene cuotas, las columnas de "grace" tendrn valores una vez que se llegue al lmite soft o suave. Usaremos entonces la opcin -p (protptype) para hacer duplicados a partir del ya establecido. #> edquota -p user1 user2 Con lo anterior "copias" la informacin de lmites de cuotas del "user1" al "user2", no hay lmite de cuantos usuarios puedes colocar como argumentos asi que lo siguiente es vlido: #> edquota -p user1 user2 user3 user4 Prctico para unos cuantos usuarios pero intil si necesitamos duplicarlo en cientos de usuarios, asi que hagamos un comando compuesto que nos extraiga los nombres de los usuarios, se puede usar por ejemplo gawk para realizar lo anterior: #> gawk -F: '$3 > 499 {print $1}' /etc/passwd user1 user2 user3 user4 Usamos el separador ":" de campos (-F), e indicamos como accin que en el campo 3 ($3) busquemos todos los UID mayores a 499 y que los imprima ({print $1}). Ahora solo tenemos que usar este comando junto con edquota -p: #> edquota -p user1 `gawk -F: '$3 > 499 {print $1}' /etc/passwd` (importante: nota el uso de acento grave que abarca al comando gawk, esto para que el shell lo ejecute primero y el resultado sern los argumentos, uno o cientos de usuarios cuyo UID es mayor a 499) Haciendo uso de repquota de nuevo veamos que pas: 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

#> repquota /home *** Report for user quotas on device /dev/sda3 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------user1 -68 300 400 17 0 0 user2 -352 300 400 7days 13 0 0 user3 -28 300 400 7 0 0 user4 -28 300 400 7 0 0 Primero, todos los usuarios tienen las mismas cuotas que el "user1" que fue el prototipo para los dems y segundo se observa que el "usuario" que tiene 352 bloques utilizados al pasar el lmite suave entro al periodo de gracia automticamente que el global es de 7 das. A partir del instante que el lmite cambi de 0 a 300, comenz el periodo de gracia. Ahora solo podr crear ms archivos durante 7 das o cuando llegue a 400, lo primero que ocurra, claro, asumiendo que no borre archivos primeros para recuperar espacio. Avisos de cuotas excedidas (warnquota) Cuando un usuario llega al lmite suave o soft al crear o modificar un documento, algo como lo siguiente aaprecer: user2> ls -l > directorio.txt sda3: warning, user block quota exceeded. En este instante como el "user2" no ha llegado al lmite "hard" ni ha expirado el tiempo de gracia, el sistema permite crear el archivo pero se le notifica con un warning. Pero si lo que deseamos es notificar inmediatamente y via correo electrnico que un usuario llego a su lmite, por ejemplo, un server de correo electrnico, un usuario que ha recibido spam y esta saturando su cuenta, puede ser notificado que su couta esta llegando al lmite. Para lo anterior usaremos el comando warnquota. Este comando simplemente invcalo desde la lnea de comandos, sin argumentos, revisar los sistemas de archivos con cuotas activadas (quotaon) y revisar todos los usuarios buscando quien ha excedido el lmite soft tanto por bloques como por inodos, y a aquellos que lo hayan excedido les enviar un correo notifcandoles de lo anterior. Puedes agrgar en cron una lnea como la siguiente para que warnquota haga su trabajo cada 12 horas: #> vi /etc/crontab ... 0 0,12 * * * root /usr/sbin/warnquota ... warnquota viene con los mensajes en ingls por defecto, el archivo de configuracin es "/etc/warnquota.conf", es muy intuitivo y fcil de cambiar, personalzalo con los mensajes a espaol para que sea ms fcil entender a tus usuarios que han excedido sus cuotas. 25 de Mayo 445 Piso 2 Tel 43132484 /2486/2475 (1002) Bs.As. opensource@osi-sistemas.com.ar

7. Uso de la Documentacin
7.1 - Comando man 7.2 - Uso de la documentacin de /usr/doc

La documentacin en GNU/Linux

La documentacin de todo software es un tema muy preocupante. Las distintas distribuciones comerciales de GNU/Linux poseen documentacin en formato impreso. Pero el mismo no cubre la totalidad de funcionalidades y programas del SO, sino solamente lo que corresponde a su implementacin particular, quedando en manos de los usuarios el adquirir documentacin ms especfica. Sin embargo, existe tanto en la misma distribucin como en Internet infinidad de documentacin que puede ser consultada. El mayor problema al instalar un SO nuevo o un programa, es que los usuarios y administradores no se toman el tiempo necesario para leer la documentacin y es por ello que la mayora de las llamadas a servicio tcnico se deben ms a problemas que estn en la documentacin que a los inesperados. Si se tomara el tiempo necesario para leer la documentacin, el costo de servicio tcnico se reducira notablemente y esto en una empresa se tiene que tener en cuenta tratando que los usuarios y administradores puedan tener el material necesario para informarse de todos los aspectos del sistema. Uno de las formas de documentacin ms populares y simples de acceder es el uso de las man-pages. Estas pginas de manual vienen en todas las distribuciones y cubren con notable detalle el uso de comandos o programas. Adems los programas nuevos que se instalen traern en su mayora manpages que se podrn acceder de igual manera que a las propias del sistema.Se accede a ellas con el comando shrek@pantano$ man <comando> Existen varias opciones que se pueden utilizar y se pueden buscar tecleando 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

shrek@pantano$ man man con lo que aparecern las pginas de manual del comando man. Muchas veces las pginas de manual indican un nmero luego del comando Ej. ls(1). Esto indica que la informacin del comando ls puede encontrarse en la seccin 1. Esta forma se remonta a cuando las man-pages de los sistemas Un*x venan en libros impresos que se dividan en secciones donde se abordaba el tema de un comando de acuerdo a su aplicacin. Tambin se puede contar con las pginas de INFO de cada comando, utilizando el comando shrek@pantano$ info <comando> donde se encontrara informacin menos detallada que en las man-pages pero de pronta utilizacin. Un lugar donde buscar cuando se instale un nuevo programa es los archivos README. Estos explican todo el proceso de instalacin as como tambin los requerimientos necesarios. Adems cada programa cuenta con documentacin propia que se podr encontrar en los directorios /usr/doc y /usr/share/doc, pudiendo haber otros segn el programa y/o la distribucin. Los fuentes del kernel tambin poseen una gran cantidad de informacin sobre aspectos generales del SO y su funcionamiento, siendo una muy buena fuente de informacin al momento de meter mano al sistema, abundando los comentarios tcnicos y los jocosos, dirigidos por los distintos desarrolladores a sus pares. Existen adems muchsimas guas que cubren aspectos muy importantes y de alta complejidad del SO y sus aplicaciones. Cabe destacar que mucha de esta informacin se encuentra en espaol pero existe un nmero mucho mayor que esta en ingls. Proyectos como LuCAS tratan de que se revierta esto, aportando con su trabajo un aporte invaluable para toda la comunidad hispanoparlante. Por todo lo expuesto hasta aqu, puede decirse que GNU/Linux es uno de los sistemas con mayor cantidad de documentacin que existe, tanto libremente como en forma de libros impresos por editoriales de renombre en el campo tcnico. No quedan excusas para no informarse.

7.3 - Documentacin en Internet

Desde sus inicios los desarrolladores se han preocupado por mantener todo lo que se hizo en este sistema operativo bien documentado. Por esto existen numerosos proyectos que sirven para documentar cada aspecto del sistema y sus aplicaciones. Uno de los proyectos ms conocidos es el LDP (Proyecto de Documentacin de Linux), http://www.tldp.org/ que se alza como una entidad centralizadora de documentacin. Esto es bueno para tener un solo lugar en donde buscar toda la informacin necesaria. GNU/Linux cuenta con gran cantidad de documentacin en varios formatos y uno de los desarrollados por el LDP son los HOWTO que estn disponibles muchas veces con la misma distribucin o a travs de Internet. En muchos casos estos HOWTO fueron escritos por los mismos autores que los programas y en otros por personas que se han visto en un problema real en una empresa, universidad u otra institucin. Tambin existen lo que se denomina MINI-HOWTO, que son guas rpidas para la pronta 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

implementacin de un servicio o un programa, sin detenerse en aspectos que no se utilizarn o se utilizarn rara vez. Se pueden encontrar, tanto los HOWTO como los MINI-HOWTO, en distintos formatos como en ASCII, PDF, PS, HTML, DocBook, etc. En nuestro pas existe un mirror de documentacin del proyecto: LUCAS (LinUx en CAStellano), http://es.tldp.org/ en el cual se podrn encontrar la mayora de ellos.

8. Proceso de Arranque

Una de las caractersticas ms importantes y poderosas de GNU Linux es el mtodo abierto y configurable para el inicio del sistema operativo. Los usuarios son libres de configurar muchos aspectos del proceso de arranque, incluyendo qu programas se lanzarn al momento de arranque. De forma parecida, el cierre del sistema finaliza los procesos de forma organizada y configurable, aunque la personalizacin de este proceso casi nunca es necesaria. Entender el funcionamiento del proceso de arranque y cierre no slo le permitir personalizar, sino que tambin le facilitar resolver problemas relacionados con el inicio y el cierre del sistema. Proceso de arranque A continuacin obtendr las etapas bsicas del proceso de arranque para un sistema x86: 1. La BIOS del sistema comprueba y lanza la primera etapa del gestor de arranque del MBR del disco duro primario. 2. La primera etapa del gestor de arranque se autocarga en memoria y lanza la segunda etapa del gestor de arranque desde la particin /boot/. 3. La segunda etapa del gestor de arranque carga el kernel en memoria, lo cual en su momento carga los mdulos necesarios y monta la particin root para slo-lectura. 4. El kernel transfiere el control del proceso de arranque al programa /sbin/init. 5. El programa /sbin/init carga todos los servicios y herramientas de espacio del usuario y monta todas las particiones listadas en /etc/fstab. 6. Se le presenta al usuario una pantalla de inicio de conexin para el sistema Linux recien iniciado.

Vista detallada del proceso de arranque

El inicio del proceso de arranque vara dependiendo de la plataforma de hardware usada. Sin embargo, una vez que se encuentra el kernel y se carga por el gestor de arranque, el proceso de arranque por defecto es idntico a travs de todas las arquitecturas. Este captulo se basa principalmente en la arquitectura x86. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

La BIOS Cuando un ordenador x86 se carga, el procesador busca al final de la memoria del sistema por Basic Input/Output System o el programa BIOS y lo ejecuta. La BIOS controla no slo el primer paso del proceso de arranque, sino que tambin proporciona una interfaz de bajo nivel para dispositivos perifricos. Por este motivo se escribe tan slo en modo lectura, memoria permanente y est siempre disponible para el uso. Otras plataformas usan programas diferentes para ejecutar tareas a bajo nivel equivalentes a aquellas de la BIOS en el sistema x86. Por ejemplo, los ordenadores basados en Itanium usan el Shell Interfaz de Firmware extendible (Extensible Firmware Interface, EFI). Una vez que se haya cargado, la BIOS chequea los perifricos y localiza un dispositivo con el que arrancar el sistema. Habitualmente, en primer lugar comprueba cualquier disquete y unidades de CDROM presente por los medios de arranque, y a continuacin si esto falla, echa un vistazo a las unidades de disco duro del sistema. En la mayora de los casos, el orden de bsqueda de las unidades para arrancar es controlado por una configuracin de la BIOS y busca por el dispositivo maestro IDE en el bus IDE primario. La BIOS carga en memoria cualquier programa que resida en el primer sector de este dispositivo, llamado Registro de arranque principal o Master Boot Record (MBR). La MBR slo tiene 512 bytes de tamao y contiene las instrucciones de cdigo de mquina para el arranque del equipo, llamado un gestor de arranque, as como tambin la tabla de particiones. Una vez que la BIOS haya encontrado y cargado el gestor de arranque en memoria, le deja el control del proceso de arranque a ste. El gestor de arranque Esta seccin revisa los gestores de arranque para la plataforma x86, GRUB. Dependiendo de la arquitectura del sistema, el proceso de arranque diferir ligeramente. Un gestor de arranque para la plataforma x86 se divide en al menos dos etapas. La primera es un cdigo binario de mquina pequea en el MBR. Su nica funcin es la de localizar el gestor de arranque de la segunda etapa y cargar la primera parte de ste en memoria. GRUB tiene la ventaja de ser capaz de leer particiones ext2 y ext3 y cargar su archivo de configuracin /boot/grub/grub.conf al momento de arranque. Una vez que la segunda etapa del gestor de arranque est en memoria, presenta al usuario con una pantalla grfica mostrando los diferentes sistemas operativos o kernels que para los que ha sido configurado para arrancar. En esta pantalla el usuario puede usar las flechas direccionales para escoger el sistema operativo o kernel con el que desea arrancar y presione la tecla . Si no se presiona ninguna tecla, el gestor de arranque carga la seleccin predeterminada luego de un perodo de tiempo de espera (tambin configurable). Una vez que el gestor de arranque de la segunda etapa haya determinado qu kernel arrancar, localizar el binario del kernel correspondiente en el directorio /boot/. El kernel binario es llamado usando el siguiente formato /boot/vmlinuz-<kernel-version> (donde <kernel-version> corresponde a la versin del kernel especificada en las configuraciones del gestor de arranque). Para instrucciones sobre el uso del gestor de arranque para suministrar argumentos de lnea de comandos al kernel, consulte el Captulo 2. Para informacin sobre el cambio del nivel de ejecucin en la lnea de comandos del gestor de arranque, vea la Seccin 2.8. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

El gestor de arranque luego coloca una o ms de las imgenes apropiadas de initramfs en la memoria. Luego, el kernel descomprime estas imgenes desde la memoria a /boot/, un sistema de archivos virtual basado en RAM, a travs de cpio. El initrd es usado por el kernel para cargar controladores y mdulos necesarios para arrancar el sistema. Esto es muy importante si posee unidades de disco duro SCSI o si est el sistema utiliza el sistema de archivos ext3. Una vez que el kernel y la imagen initramfs se cargan en memoria, el gestor de arranque pasa el control del proceso de arranque al kernel. Para una descripcin ms detallada sobre el gestor de arranque GRUB, consulte el Captulo 2. Gestores de arranque para otras arquitecturas Una vez que se carga el kernel y pasa el proceso de arranque al comando init, los mismos acontecimientos suceden en cada arquitectura. La nica diferencia entre el proceso de arranque de cada arquitectura est en la aplicacin que se usa para encontrar y cargar el kernel. Por ejemplo, la arquitectura Itanium utiliza el gestor de arranque ELILO, las arquitecturas eServer pSeries de IBM utilizan YABOOT y los sistemas IBM eServer zSeries e IBM S/390 usan el gestor de arranque z/IPL. El kernel Cuando se carga el kernel, ste inicializa y configura la memoria del ordenador y los diferentes hardware conectado al sistema, incluyendo todos los procesadores, subsistemas de entrada/salida y dispositivos de almacenamiento. A continuacin buscar la imagen comprimida de initramfs en una ubicacin predeterminada en memoria, la descomprimir directamente a /sysroot/ y cargar todos los controladores necesarios. A continuacin inicializa los dispositivos virtuales relacionados con el sistema de ficheros, tal como LVM o software RAID antes de completar los procesos initramfs y de liberar toda la memoria que la imagen del disco ocup anteriormente. El kernel luego crea un dispositivo root, monta la particin root como slo lectura y libera cualquier memoria no utilizada. Llegados a este punto, el kernel est cargado en memoria y operativo. Sin embargo, como no hay aplicaciones de usuario que permitan la entrada significativa de datos al sistema, no se puede hacer mucho ms. Para configurar el entorno de usuario, el kernel inicia el programa /sbin/init. Programa /sbin/init El programa /sbin/init (tambin llamado init) coordina el resto del proceso de arranque y configura el ambiente del usuario. Cuando el comando init arranca, se vuelve el padre o abuelo de todos los procesos que comienzan automticamente en el sistema. Primero, ejecuta el script /etc/rc.d/rc.sysinit, que establece la ruta del entorno, activa el swap, verifica los sistemas de archivos y se encarga de todo lo que el sistema necesita tener hecho al momento de la inicializacin. Por ejemplo, la mayora de los sistemas usan un reloj, por lo tanto, el rc.sysinit lee el archivo de configuracin para iniciar el hardware del reloj. Otro 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

ejemplo es si hay procesos especiales en los puertos seriales que deben ser inicializados, rc.sysinit ejecutar el archivo /etc/rc.serial. El comando init luego ejecuta el script /etc/inittab, el cual describe cmo se debera configurar el sistema en cada nivel de ejecucin SysV init. Los niveles de ejecucin son un estado, o modo, definido por los servicios listados en el SysV directorio /etc/rc.d/rc<x>.d/, donde <x> es el nmero de nivel de ejecucin. Para ms informacin sobre los niveles de ejecucin SysV init, consulte la Seccin 1.4. A continuacin, el comando init configura la biblioteca de funciones fuente, /etc/rc.d/init.d/functions, para el sistema, que establece el modo en cmo iniciar o matar un programa y cmo determinar el PID del programa. El programa init inicia todos los procesos de fondo buscando en el directorio apropiado rc para el nivel de ejecucin especificado por defecto en /etc/inittab. Los directorios rc estn numerados para corresponder al nivel de ejecucin que representan. Por ejemplo, /etc/rc.d/rc5.d/ es el directorio para el nivel de ejecucin 5. Cuando se arranca el nivel de ejecucin 5, el programa init consulta el directorio /etc/rc.d/rc5.d/ para determinar qu procesos iniciar o parar. Ninguno de los scripts que inician y cierran los servicios estn localizados en el directorio /etc/rc.d/rc5.d/. Casi todos los ficheros en /etc/rc.d/rc5.d/ son enlaces simblicos apuntando a los scripts localizados en el directorio /etc/rc.d/init.d/. Los enlaces simblicos se usan en cada uno de los directorios rc de manera que los niveles de ejecucin puedan ser reconfigurados al crear, modificar y eliminar los enlaces simblicos sin que afecte a los scripts actuales a los que se refiere. El nombre de cada enlace simblico comienza con K o S. Los enlaces K son procesos eliminados en ese nivel de ejecucin, mientras que aquellos que inician por S son procesos a iniciar. El comando init en primer lugar detiene todos los enlaces simblicos de K en el directorio mediante la ejecucin del comando /etc/rc.d/init.d/<command> stop, en el que <command> es el proceso a matar. A continuacin inicia todos los enlaces simblicos S al ejecutar root@shrek:~# /etc/rc.d/init.d/<command>. start.

Cada uno de los enlaces simblicos se numera para dictaminar el orden de inicio. Usted puede cambiar el orden en el que los servicios inician o paran al cambiar este nmero. Mientras ms bajo es el nmero, ms rpido se arrancar. Los enlaces simblicos con el mismo nmero se inician de modo alfabtico.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Despus que el comando init ha progresado a travs del directorio adecuado rc para el nivel de ejecucin, el script /etc/inittab bifurca un proceso /sbin/mingetty para cada consola virtual (prompt de inicio de sesin) del nivel de ejecucin. Los niveles de ejecucin del 2 al 5 tienen seis consolas virtuales, mientras que el nivel de ejecucin 1 (modo usuario nico) tiene tan slo uno y lo niveles de ejecucin del 0 al 6 no tienen ninguno. El proceso /sbin/mingetty abre las rutas de la comunicacin para los dispositivostty[2], establece sus modos, imprime el indicador de inicio de sesin, toma el nombre y contrasea del usuario, e inicia el proceso de inicio de sesin. En el nivel de ejecucin 5, /etc/inittab ejecuta un script llamado /etc/X11/prefdm. El script prefdm ejecuta su gestor de pantalla de X preferido[3] gdm, kdm, o xdm, dependiendo de los contenidos del archivo /etc/sysconfig/desktop. Una vez que haya terminado, el sistema operar en el nivel de ejecucin 5 y mostrar la pantalla de inicio de sesin.

Ejecutar programas adicionales en el momento de arranque

El script /etc/rc.d/rc.local lo ejecuta el comando init en tiempo de arranque, o cuando se cambien niveles de ejecucin. El agregar comandos al final de este script es una forma fcil de realizar tareas necesarias como arrancar servicios especiales o inicializar dispositivos sin tener que escribir scripts complejos de inicializacin en el directorio /etc/rc.d/init.d/ y creando enlaces simblicos. Se usa el script /etc/rc.serial si se deben configurar puertos seriales en el momento de arranque. Este script ejecuta los comandos setserial para configurar los puertos seriales del sistema. Consulte la pgina man de setserial para ms informacin.

8.1 - LiLo y GRUB

Gestores de arranque y arquitectura del sistema

Cada arquitectura de sistemas que pueda ejecutar GNU Linux usa un gestor de arranque diferente. La lista siguiente muestra los gestores de arranque disponibles para cada arquitectura. Arquitectura AMD AMD64 IBM eServer iSeries IBM eServer pSeries IBM S/390 IBM eServer zSeries Intel Itanium x86 25 de Mayo 445 Piso 2 (1002) Bs.As. Gestores de arranque GRUB OS/400 YABOOT z/IPL z/IPL ELILO GRUB Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Gestores de arranque por arquitectura


GRUB

GNU GRand Unified Boot loader o GRUB es un programa que habilita al usuario a seleccionar qu sistema operativo instalado o kernel cargar en el momento de arranque del sistema. Permite tambin que el usuario transmita argumentos al kernel. Proceso de arranque en un sistema x86 y GRUB Esta seccin explica con ms detalle el papel especfico que desempea GRUB al arrancar un sistema x86. Para hacerse una idea del proceso de arranque, vea la Seccin 1.2. GRUB se carga asmismo en la memoria en las diferentes etapas: 1. La etapa 1 o cargador de arranque primario se lee en la memoria por el BIOS desde el MBR[1]. El gestor de arranque primario existe en menos de 512 bytes de espacio en disco dentro del MBR y es capaz de cargar bien sea la etapa 1.5 o la etapa 2 del gestor de arranque. 2. La Etapa 1 del gestor de arranque se lee en la memoria por el gestor de arranque de la Etapa 1, si es necesario. Determinados hardware requieren un paso intermedio para pasar a la Etapa 2 del gestor de arranque. Esto sucede a menudo cuando la particin /boot/ est por encima del cilindro 1024 del disco duro o cuando se usa el modo LBA. La Etapa 1.5del gestor de arranque se encuentra en la particin /boot/ o en una pequea parte del MBR y la particin /boot/. 3. La Etapa 2 o el gestor de arranque secundario se lee en la memoria. El gestor de arranque secundario visualiza el men GRUB y el entorno de comandos. Esta interfaz le permite seleccionar qu sistema operativo o kernel arrancar, pasar argumentos al kernel o ver los parmetros del sistema. 4. El gestor de arranque secundario lee el sistema operativo o el kernel as como tambin los contenidos de /boot/sysroot/ en memoria. Una vez que GRUB determina qu sistema operativo iniciar, ste lo carga en la memoria y transfiere el control de la mquina a dicho sistema operativo. El mtodo usado para arrancar GNU Linux se conoce como mtodo de carga directa porque el gestor de arranque carga el sistema operativo directamente. No existe un intermediario entre el gestor de arranque y el kernel. El proceso de arranque usado por otros sistemas operativos puede variar. Por ejemplo, los sistemas operativos de Microsoft Windows, as como otros sistemas operativos, se cargan mediante un mtodo de arranque de carga encadenada. Bajo este mtodo, el MBR seala el primer sector de la particin que tiene el sistema operativo. All encuentra los archivos necesarios para arrancar el sistema operativo. GRUB soporta ambos mtodos de arranque, directo y de carga encadenada, permitiendo arrancar desde casi cualquier sistema operativo.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Instalacin de GRUB Si no instal GRUB durante el proceso de instalacin, se puede hacer despus. Una vez instalado, se convierte en el gestor de arranque por defecto. Antes de instalar GRUB, debera asegurarse de que cuenta con el ltimo paquete disponible de GRUB desde los CD-ROMs de instalacin. Una vez que el paquete GRUB est instalado, abra un intrprete de comandos de la shell y ejecute el comando /sbin/grub-install <ubicacion>, donde <ubicacion> es la ubicacin en la que la Etapa 1 de GRUB debera ser instalado. Por ejemplo, el comando siguiente instala GRUB al MBR del dispositivo maestro IDE en el bus IDE primario: /sbin/grub-install /dev/hda La prxima vez que arranque el sistema, el men del gestor de arranque grfico GRUB aparecer antes del que el kernel se cargue en memoria.
Terminologa de GRUB

Una de las cuestiones ms importantes que deben entenderse antes de utilizar GRUB es cmo el programa hace referencia a los dispositivos, por ejemplo, a los discos duros y a las particiones. Esta informacin es muy importante si desea configurar GRUB para arrancar varios sistemas operativos. Nombres de dispositivos Cuando se refiera a un dispositivo especfico con GRUB, haga esto usando el formato siguiente (observe que los parntesis y las comas son muy importantes en la sintaxis): (<tipo-de-dispositivo><numero-dispositivo-bios>,<numero-particion>) El <tipo-de-dispositivo> especifica el tipo de dispositivo desde el cual inicia GRUB. Las dos opciones ms comunes son hd para un disco duro o fd para un disquete de 3.5. Un tipo de dispositivo menos usado tambin est disponible, llamado nd para un disco de la red.Las instrucciones sobre la configuracin de GRUB para arrancar desde la red estn disponibles en http://www.gnu.org/software/grub/manual/. El <numero-dispositivo-bios> es el nmero del dispositivo BIOS. El disco duro IDE primario se numera 0 y un disco duro IDE secundario se numera 1. La sintaxis es equivalente a aquella utilizada para los dispositivos por el kernel. Por ejemplo, a en hda para el kernel es anlogo a 0 en hd0 para GRUB, b en hdb es anlogo a 1 en hd1, y as sucesivamente. El <numero-particion> hace referencia al nmero de una particin concreta en un dispositivo. Al igual que en el caso de <nmero-dispositivo-bios>, la mayora de los tipos de particiones son numeradas comenzando por 0. Aunque la mayora de las particiones se especifican con nmeros, si el sistema usa particiones BSD a stas se har referencia con letras, con a correspondiendo a 0, b correspondiendo a 1 y as sucesivamente. Para dar un ejemplo, si un sistema tiene ms de un disco duro, GRUB se refiere al primer disco duro 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

como (hd0) y al segundo como (hd1). De la misma forma, GRUB se refiere a la primera particin en la primera unidad como (hd0,0) y a la tercera particin en el segundo disco duro como (hd1,2).

En general, GRUB usa las reglas siguientes para denominar los dispositivos y las particiones: No es relevante si los discos duros que utiliza son IDE o SCSI. Todos los discos duros empiezan con las letras hd. Se utilizan las letras fd para especificar las unidades de disquete. Para especificar todo un dispositivo sin respetar sus particiones, simplemente debe suprimir la coma y el nmero de particin. Esto es importante para indicarle a GRUB que configure el registro MBR para un disco concreto. Por ejemplo, (hd0) especifica la MBR en el primer dispositivo y (hd3) especifica la MBR en el cuarto dispositivo. Si un sistema tiene varios dispositivos de discos, es muy importante saber el orden de arranque configurado en la BIOS. Esto es muy sencillo si slo tiene discos IDE o SCSI, pero si tiene una combinacin de ambos, se vuelve crtico que se acceda primero el tipo de unidad con la particin de arranque.

El Sistema de archivos raz y GRUB Algunos usuarios se confunden con el uso del trmino sistema de archivos raz tiene un significado diferente con relacin a GRUB. Es importante recordar que el sistema de archivos raz de GRUB no tiene nada que ver con el sistema de archivos raz de Linux. El sistema de archivos raz de GRUB es el nivel superior del dispositivo especificado. Por ejemplo, el archivo imagen (hd0,0)/grub/splash.xpm.gz est ubicado dentro del directorio /grub/ en el nivel superior (o raz) de la particin (hd0,0) (la cual es en verdad la particin /boot/ para el sistema). Luego, se ejecuta el comando kernel con la ubicacin del archivo del kernel como una opcin. Una vez que el kernel de Linux inicia, establece el sistema de archivos raz con el cual los usuarios de Linux estn familiarizados. El sistema de archivos raz de GRUB original y sus montajes se olvidan; la nica finalidad de su existencia era arrancar el archivo del kernel. Interfaces de GRUB GRUB dispone de tres interfaces eficaces que proporcionan distintos niveles de funcionalidad. Cada una de estas interfaces permite a los usuarios arrancar el kernel de Linux u otros sistemas operativos. Las interfaces son como sigue: Interfaz de men Esta es la interfaz por defecto cuando se configura GRUB por el programa de instalacin. En esta interfaz hay un men de sistemas operativos o kernels preconfigurados en forma de lista ordenada por nombres. Puede utilizar las teclas de flecha para seleccionar una opcin diferente a la seleccin por defecto y pulsar la tecla 25 de Mayo 445 Piso 2 Tel 43132484 /2486/2475 (1002) Bs.As. opensource@osi-sistemas.com.ar

para iniciarla. Como alternativa, existe un perodo de espera, despus del cual GRUB iniciar la carga de la opcin por defecto. Presione la tecla para entrar en la interfaz del editor o la tecla para cargar la interfaz de lnea de comandos.

Interfaz del editor de men de entrada Para tener acceso al editor de entradas del men, presione la tecla desde el men del gestor de arranque. Los comandos de GRUB de dicha entrada se muestran aqu y puede alterar estas lneas de comandos antes de arrancar el sistema operativo agregando una lnea de comandos ( inserta una nueva lnea despus de la lnea actual y inserta una nueva lnea antes de ella), modificandola (), o borrando una (). Una vez realizados los cambios, la tecla ejecuta los comandos y arranca el sistema operativo. Con la tecla se omiten los cambios y el usuario vuelve a la interfaz de men estndar. Con la tecla se carga la interfaz de lnea de comandos. Interfaz de lnea de comandos La interfaz de lnea de comandos es la ms bsica de GRUB, pero tambin la que proporciona un mayor control. En esta interfaz de lnea de comandos puede escribir cualquier comando de GRUB seguido de la tecla para ejecutarlo. Esta interfaz cuenta con algunas funciones similares a las de shell avanzadas, incluyendo el uso de para autocompletar y las combinaciones de teclas con al escribir comandos, tales como para moverse al comienzo de la lnea y - para moverse al final. Adems, las teclas de flecha, , , y funcionan de forma similar al indicador de comandos bash. Orden de carga de las interfaces Cuando GRUB carga la segunda etapa de su gestor de arranque, primero busca por su archivo de configuracin. Cuando lo encuentra, muestra la pantalla de men de GRUB. Si se presiona una tecla dentro de tres segundos, GRUB crea una lista de men y la despliega. Si no se presiona ninguna tecla, se utiliza la entrada predeterminada de GRUB. Si no puede encontrar el archivo de configuracin o si ste no se puede leer, GRUB carga la interfaz de lnea de comandos para permitirle al usuario escribir manualmente los comandos necesarios para completar el proceso de arranque. En el caso de que el archivo de configuracin no sea vlido, GRUB imprimir el error y solicitar la introduccin de valores. Esto puede ser muy til, porque podr ver con exactitud donde est el problema y corregirlo en el archivo. Si pulsa cualquier tecla se volver a cargar la interfaz de men, donde podr modificar la opcin de men y corregir el problema segn el error que GRUB haya notificado. Si la correccin falla, GRUB informa del error y puede empezar de nuevo.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Comandos de GRUB GRUB permite varios comandos en su lnea de comandos. Algunos de los comandos aceptan opciones despus del nombre y estas opciones deben ir separadas del comando por comas y de otras opciones de esa lnea por carcteres de espacio. En la lista siguiente se indican algunos comandos tiles: boot Arranca el sistema operativo o gestor de encadenamiento que se ha cargado. chainloader </ruta/a/archivo> Carga el archivo especificado como gestor de encadenamiento. Si el archivo est ubicado en el primer sector de la particin especificada, puede utilizar la notacin de lista de bloques, +1, en vez del nombre del archivo. Lo siguiente es un ejemplo del comando chainloader: chainloader +1 displaymem Muestra el uso actual de memoria, en funcin de la informacin de la BIOS. Esto es til si no est seguro de la cantidad de RAM que tiene un sistema y todava tiene que arrancarlo. initrd </ruta/a/initrd> Le permite especificar un disco RAM inicial para utilizarlo al arrancar. Es necesario un initrd cuando el kernel necesita ciertos mdulos para poder arrancar adecuadamente, tales como cuando la particin se formatea con el sistema de archivos ext3. A continuacin se muestra un ejemplo del comando initrd: initrd /initrd-2.6.8-1.523.img install <etapa-1> <disco-instalacion> <etapa-2> p <archivo-configuracion> Instala GRUB en la MBR del sistema. <etapa-1> Significa un dispositivo, particin y archivo donde el primer gestor de arranque puede ser encontrado, tal como (hd0,0)/grub/stage1. <disco-instalacion> Especifica el disco donde la etapa 1 del gestor de arranque debera ser instalado, tal como (hd0). <etapa-2> Pasa la ubicacin de la etapa 2 del gestor de arranque a la etapa 1, tal como (hd0,0)/grub/stage2. p <archivo-configuracion> Esta opcin le indica al comando install que busque por el archivo de configuracin de men especificado por <config-file>, tal como (hd0,0)/grub/grub.conf. 25 de Mayo 445 Piso 2 Tel 43132484 /2486/2475 (1002) Bs.As. opensource@osi-sistemas.com.ar

kernel </ruta/a/kernel><opcion-1> <opcion-N> ... Especifica el archivo del kernel a cargar cuando se cargue el sistema operativo. Reemplace </ruta/a/kernel> con una ruta absoluta desde la particin especificada por el comando root. Reemplace <opcion-1> con las opciones para el kernel de Linux, tales como root=/dev/hda5 para especificar el dispositivo en el que se ubica la particin root para el sistema. Se pueden pasar mltiples opciones al kernel en una lista separada por comas. Lo siguiente es un ejemplo para el comando kernel: kernel /vmlinuz-2.4.21 root=/dev/hda5 La opcin en el ejemplo anterior especifica que el sistema de archivos raz para Linux est ubicado en la particin hda5. root (<tipo-dispositivo><numero-dispositivo>,<particion>) Configura la particin raz para GRUB, tal como (hd0,0) y monta la particin. A continuacin se presenta un ejemplo para el comando root: root (hd0,0) rootnoverify (<tipo-dispositivo><numero-dispositivo>,<particion>) Configura la particin raz para GRUB, tal como el comando root pero no monta la particin. Tambin estn disponibles otros comandos; escriba help --all para una lista completa de comandos. Para una descripcin de todos los comandos GRUB, consulte la documentacin disponible en lnea en http://www.gnu.org/software/grub/manual/.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Archivo de configuracin de men de GRUB

El archivo de configuracin (/boot/grub/grub.conf), usado para crear la lista en la interfaz de men de GRUB de los sistemas operativos para el arranque, bsicamente permite al usuario seleccionar un grupo predefinido de comandos para su ejecucin. Pueden utilizarse los comandos que se indican en la Seccin 2.6, as como algunos comandos especiales disponibles tan slo en el archivo de configuracin. Estructura del archivo de configuracin El archivo de configuracin de la interfaz de men de GRUB es /boot/grub/grub.conf. Los comandos para configurar las preferencias globales para la interfaz de men estn ubicados al inicio del archivo, seguido de las diferentes estrofas para cada sistema operativo o kernels listados en el men. El siguiente es un ejemplo de archivo de configuracin de men de GRUB muy bsico diseado para arrancar bien sea GNU Linux o Microsoft Windows 2000: default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux AS (2.6.8-1.523) root (hd0,0) kernel /vmlinuz-2.6.8-1.523 ro root=/dev/VolGroup00/LogVol00 rhgb quiet initrd /initrd-2.6.8-1.523.img # section to load Windows title Windows rootnoverify (hd0,0) chainloader +1 Este archivo indicar a GRUB que cree un men con GNU Linux como el sistema operativo predeterminado y que establezca un arranque automtico despus de 10 segundos. Se proporcionan dos secciones, una para cada entrada de sistema, con comandos especficos para la tabla de particin del sistema.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

8.2 - INIT. Niveles de ejecucin

Niveles de ejecucin de SysV Init

El sistema de niveles de ejecucin SysV init provee de un proceso estndar para controlar cules programas init lanza o detiene cuando se inicializa un nivel de ejecucin. SysV init fu escogido porque es ms fcil de usar y ms flexible que el proceso tradicional init estilo BSD. Los ficheros de configuracin para SysV init estn en el directorio /etc/rc.d/. Dentro de este directorio, se encuentran los scripts rc, rc.local, rc.sysinit, y, opcionalmente, los scripts rc.serial as como los siguientes directorios: init.d/ rc0.d/ rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ El directorio init.d/ contiene los scripts usados por el comando /sbin/init cuando se controlan los servicios. Cada uno de los directorios numerados representan los seis niveles de ejecucin predeterminados configurados por defecto bajo GNU Linux. Niveles de ejecucin La idea detrs de los niveles de ejecucin de SysV init gira alrededor del hecho que sistemas diferentes se pueden usar de formas diferentes. Por ejemplo, un servidor corre de forma ms eficiente sin el consumo de recursos del sistema excesivo creado por el sistema X. Otras veces, el administrador del sistema puede necesitar operar el sistema en un nivel ms bajo de ejecucin para realizar tareas de diagnstico, como reparar corrupcin del disco duro en el nivel de ejecucin 1. Las caractersticas de un nivel de ejecucin dado determinan qu servicios son detenidos o iniciados por init. Por ejemplo, el nivel de ejecucin 1 (modo usuario nico) detiene cualquier servicio de red, mientras que el nivel 3 arranca estos servicios. Asignando servicios especficos a ser detenidos o iniciados en un nivel dado, init puede fcilmente cambiar el modo de la mquina sin que el usuario tenga que manualmente arrancar o detener servicios. Los siguientes niveles de ejecucin estn definidos de forma predeterminada para GNU Linux:

0 Parar 1 Modo texto usuario nico 2 Sin usar (usuario-definible) 3 Modo texto multiusuario completo Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

25 de Mayo 445 Piso 2 (1002) Bs.As.

4 Sin usar (usuario-definible) 5 Modo grfico multiusuario completo (con una pantalla de inicio de sesin basada en X) 6 Rearrancar

Generalmente, los usuarios utilizan GNU Linux al nivel de ejecucin 3 o nivel de ejecucin 5 ambos modos multiusuario. Ya que los niveles de ejecucin 2 y 4 no son usados, los usuarios a veces personalizan estos niveles para cubrir necesidades especficas. El nivel de ejecucin por defecto para el sistema est listado en /etc/inittab. Para saber el nivel de ejecucin por defecto de un sistema, busque por la lnea similar a la que se muestra abajo cerca de la parte superior de /etc/inittab: id:5:initdefault: El nivel de ejecucin predeterminado en este ejemplo es cinco, como indica el nmero despus del punto y coma. Para cambiarlo, modifique /etc/inittab como usuario root.

8.3 - Configuracin del proceso de arranque

Cambiar los niveles de ejecucin en el tiempo de arranque

Bajo GNU Linux, es posible cambiar el nivel de ejecucin predeterminado en el momento de arranque. Para cambiar el nivel de ejecucin de una sesin de arranque, utilice las instrucciones siguientes: Cuando la pantalla de men de GRUB aparece durante el arranque, presione cualquier tecla para entrar al men de GRUB (dentro de los primeros tres segundos). Presione la tecla para aadir al comando kernel. Aada <espacio><nivel-de-ejecucion> al final de la lnea de opciones de arranque para iniciar en el nivel de ejecucin deseado. Por ejemplo, la entrada siguiente iniciar un proceso de arranque en el nivel 3. grub append> ro root=/dev/VolGroup00/LogVol00 rhgb quiet 3

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

9. El Sistema X Window

Mientras que el corazn de GNU Linux es el kernel, para muchos usuarios, la cara del sistema operativo es el entorno grfico proporcionando por el Sistema X Window, tambin llamado simplemente X. En el mundo UNIX, los entornos de ventanas han existido desde hace dcadas, siendo stos precursores de muchos de los utilizados en los sistemas operativos actuales. A travs de los aos X se ha convertido en el entorno grfico (GUI) predominante para sistemas operativos del tipo UNIX. El entorno grfico para GNU Linux es suministrado por la Fundacin X.Org, una implementacin de cdigo abierto creada para manejar el desarrollo y la estrategia para el sistema X y sus tecnologas asociadas. X.Org es un proyecto de gran escala que se apoya en un gran nmero de desarrolladores en todo el mundo. Presenta una amplia gama de soporte para diferentes dispositivos de hardware y arquitecturas, as como la posibilidad de ejecutarse en diferentes sistemas operativos y plataformas. Este lanzamiento de GNU Linux incluye especficamente el lanzamiento X11R6.8 del sistema X Window. El sistema X Window utiliza una arquitectura cliente-servidor. El servidor de X (el binario Xorg) escucha por conexiones desde las aplicaciones cliente X a travs de la red o una interfaz local de loopback. El servidor gestiona la comunicacin con el hardware, que puede ser una tarjeta grfica, un monitor, un teclado o un ratn. Las aplicaciones cliente de X existen en el espacio del usuario, creando una interfaz grfica del usuario (GUI) y pasando peticiones al servidor de X.

9.1 - El lanzamiento X11R6.8

Las ultimas versiones de GNU Linux utilizan la versin X11R6.8 como la base del sistema X Window, la cual incluye muchas mejoras de tecnologa de punta para X.Org tales como soporte para la aceleracin de hardware 3D, la extensin XRender para fuentes anti-alias, un diseo modular basado en controladores y soporte para hardware de vdeo y dispositivos de entrada modernos. Los archivos relacionados a X11R6.8 residen principalmente en dos ubicaciones: /usr/X11R6/ Contiene el servidor X y algunas aplicaciones cliente as como tambin archivos de cabecera X, bibliotecas, mdulos y documentacin. /etc/X11/ Contiene archivos de configuracin para aplicaciones cliente y servidor de X. Esto incluye archivos de configuracin para el servidor X mismo, el servidor de fuentes fs, los manejadores de display de X y muchos otros componentes base. Es importante resaltar que el archivo de configuracin para la nueva arquitectura de fuentes basado en Fontconfig es /etc/fonts/fonts.conf (que deja obsoleto al archivo /etc/X11/XftConfig). Debido a que el servidor X realiza tareas avanzadas en una amplia variedad de formaciones de hardware, requiere una configuracin detallada. El programa de instalacin instala y configura X automticamente, a menos que los paquetes X11R6.8 no se seleccionen para la instalacin. Sin 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

embargo, si la tarjeta de vdeo o el monitor cambian, X necesitar ser reconfigurado. La mejor forma de hacer esto es usando la Herramienta de configuracin de X. Para comenzar la Herramienta de configuracin de X mientras se est en una sesin activa de X, vaya al Botn de men principal (en el Panel) => Configuracin del sistema => Visualizacin. Despus de usar la Herramienta de configuracin de X durante una sesin de X, los cambios tendrn efecto despus que cierre la sesin y luego la vuelva a iniciar. En algunas situaciones, la reconfiguracin del servidor X puede requerir la edicin manual de su archivo de configuracin, /etc/X11/xorg.conf.

9.2 - Entornos de escritorio y gestores de ventanas

Una vez que un servidor X se est ejecutando, las aplicaciones cliente X pueden conectarlo y crear una GUI para el usuario. Un rango de GUIs estn disponibles con GNU Linux, desde el rudimentario Administrador de pestaas de ventanas hasta un entorno de escritorio altamente desarrollado, interactivo como GNOME, con el que la mayora de los usuarios de GNU Linux estn familiarizados. Para crear lo ltimo, una GUI ms avanzada, se deben conectar dos clases principales de aplicaciones clientes X al servidor X: un entorno de escritorio y un gestor de ventanas. 9.2.1. Entornos de escritorio Un entorno de escritorio une diferentes clientes de X, los cuales cuando se usan juntos crean un ambiente de usuario grfico comn y una plataforma de desarrollo. Los entornos de escritorio tienen caractersticas avanzadas las cuales permiten a los clientes X y a otros procesos en ejecucin, comunicarse unos con otros a la vez que se permite a todas las aplicaciones escritas para funcionar en ese ambiente a que realicen tareas avanzadas, tales como operaciones de arrastrar y soltar. GNU Linux proporciona dos entornos de escritorio: GNOME Es el entorno de escritorio por defecto en Red Hat Enterprise Linux basado en el conjunto de herramientas grficas GTK+ 2. KDE Un entorno de escritorio alternativo basado en el conjunto de herramientas grficas Qt 3. Ambos entornos GNOME y KDE tienen aplicaciones de productividad avanzadas, tales como procesadores de palabras, hojas de clculo y navegadores Web as como herramientas para personalizar la apariencia de la GUI. Adicionalmente, si ambas bibliotecas estan presentes, la GTK+ 2 y la Qt, las aplicaciones KDE pueden ejecutarse en GNOME y viceversa. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

9.2.2. Gestores de ventanas Los gestores de ventanas son programas clientes de X que son o parte del entorno de escritorio o, en algunos casos, independientes. Su propsito principal es controlar la forma en que las ventanas grficas son posicionadas, redimensionadas o movidas. Los manejadores de ventanas controlan las barras de ttulos, el comportamiento del foco, los vnculos del botn del ratn y teclas especificadas por el usuario. Se incluyen cuatro gestores de ventanas con GNU Linux: kwin El gestor de ventanas KWin es el manejador por defecto para el entorno KDE. Es un manejador de ventanas eficiente que soporta temas personalizados. metacity El gestor de ventanas Metacity es el manejador de ventanas por defecto del entorno GNOME. Es un manejador de ventanas simple y eficiente que tambin soporta temas personalizados. mwm El gestor de ventanas Motif, es un gestor bsico independiente. Puesto que est diseado para ser un gestor que se ejecuta de forma independiente, no se debera utilizar en conjunto con los entornos de escritorios GNOME o KDE. twm El minimalista Administrador de pestaas de ventanas, el cual proporciona el conjunto de herramientas ms bsicas de cualquier gestor de ventanas y puede ser usado bien sea de forma independiente o con un entorno de escritorio. Es instalado como parte de la versin X11R6.8. Estos gestores de ventanas pueden ejecutarse sin los entornos de escritorio para obtener una mejor impresin de sus diferencias. Para hacer esto, teclee el comando xinit -e <ruta-algestordeventanas>, donde <ruta-al-gestordeventanas> es la ubicacin del archivo binario de gestor de ventanas. El archivo binario puede ser encontrado escribiendo which <nombre-degestordeventanas>, donde <nombre-de-gestordeventanas> es el nombre del gestor de ventanas sobre el cual est preguntando.

9.3 - Archivos de configuracin del servidor X

El servidor X es un binario ejecutable (/usr/X11R6/bin/Xorg) que carga dinmicamente cualquier mdulo de servidor X necesario en el momento de ejecucin desde el directorio /usr/X11R6/lib/modules/. Algunos de estos mdulos son cargados automticamente por el servidor, mientras que otros son opcionales y deben ser especificados en el archivo de configuracin del servidor X. El servidor X y los archivos de configuracin asociados son almacenados en el directorio /etc/X11/. El archivo de configuracin para el servidor X es /etc/X11/xorg.conf. Cuando se instala GNU Linux, los archivos de configuracin para X son creados usando la informacin reunida sobre el hardware del sistema durante el proceso de instalacin.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

9.3.1. xorg.conf Mientras que casi nunca se necesita editar manualmente el /etc/X11/xorg.conf, es muy til conocer sobre las diferentes secciones y los parmetros opcionales disponibles, especialmente cuando se estn solucionando problemas. 9.3.1.1. La estructura de XFree86 El archivo /etc/X11/xorg.conf est formado de muchas secciones diferentes las cuales hacen referencia a aspectos especficos del hardware del sistema. Cada seccin comienza con una lnea Section "<nombre-de-seccion>" (donde <nombre-deseccion> es el ttulo para la seccin) y termina con una lnea EndSection. Dentro de cada seccin, hay lneas conteniendo nombres de opciones y al menos un valor de opcin, ocasionalmente entre comillas ("). Las lneas que comienzan con un smbolo de almohadilla (#) no son ledas por el servidor X y son usadas como comentarios legibles. Algunas opciones dentro del archivo /etc/X11/xorg.conf aceptan un interruptor boleano el cual activa o desactiva la caracterstica. Los valores boleanos aceptados son: 1, on, true, o yes Activa la opcin. 0, off, false, o no Desactiva la opcin. Lo siguiente son algunas de las secciones ms importantes ordenadas como aparecen en un archivo /etc/X11/xorg.conf tpico. Se puede encontrar ms informacin detallada sobre el archivo de configuracin del servidor X en la pgina man de xorg.conf. 9.3.1.2. ServerFlags La seccin opcional ServerFlags contiene varios parmetros globales del servidor X. Cualquier parmetro en esta seccin puede ser sobreescrito por las opciones colocadas en la seccin ServerLayout (refirase a Seccin 9.3.1.3 para ms detalles). Cada entrada dentro de la seccin ServerFlags estn en sus propias lneas y comienzan con el trmino Option seguido por una opcin encerrada en dobles comillas . A continuacin un ejemplo de la seccin ServerFlags: Section "ServerFlags" Option "DontZap" "true" EndSection 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

La siguiente es una lista de las opciones ms tiles: "DontZap" "<boleano>" Cuando el valor de <boleano> est configurado a verdadero, esta configuracin previene el uso de la combinacin de teclas -- para terminar inmediatamente el servidor X. "DontZoom" "<boleano>" Cuando el valor de <boleano> est colocado a verdadero, esta configuracin previene moverse a lo largo de las resoluciones de vdeo configuradas usando las combinaciones de teclas -- y --. 9.3.1.3. ServerLayout La seccin ServerLayout vincula los dispositivos de entrada y salida controlados por el servidor X. Como mnimo, esta seccin debe especificar un dispositivo de salida y al menos dos dispositivos de entrada (un teclado y un ratn). El ejemplo siguiente ilustra una seccin ServerLayout tpica: Section "ServerLayout" Identifier "Default Layout" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection Las entradas siguientes son usadas a menudo en la seccin ServerLayout: Identifier Especifica un nombre nico para esta seccin ServerLayout. Screen Especifica el nombre de la seccin Screen a ser usado con el servidor X. Pueden estar presentes ms de una opcin Screen. Lo siguiente es un ejemplo de una entrada Screen tpica: Screen 0 "Screen0" 0 0

El primer nmero en esta entrada de ejemplo Screen (0) indica que el primer conector del monitor o head en la tarjeta de vdeo usa la configuracin especificada en la seccin Screen con el identificador "Screen0". Si la tarjeta de vdeo tiene ms de una cabeza, ser necesaria otra entrada Screen con un nmero diferente y un identificador de seccin Screen. Los nmeros a la derecha de "Screen0" proporcionan las coordenadas absolutas X y Y para la esquina superior izquierda de la pantalla (0 0 por defecto). 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

InputDevice Especifica el nombre de una seccin InputDevice a ser usada con el servidor X. Al menos deben haber dos entradas InputDevice: una para el ratn por defecto y una para el teclado por defecto. Las opciones CorePointer y CoreKeyboard indican que estos son el ratn y el teclado principales. Option "<nombre-opcion>" Una entrada opcional que especifica parmetros extra para esta seccin. Cualquier seccin listada aqu sobreescriben aquellas listadas en la seccin ServerFlags. Reemplace <nombre-opcion> con una opcin vlida listada para esta seccin en la pgina man de xorg.conf. Es posible crear ms de una seccin ServerLayout. Sin embargo, el servidor slo leer la primera seccin que aparezca a menos que se especifique una seccin ServerLayout alterna como un argumento de lnea de comando. 9.3.1.4. Files La seccin Files configura las rutas para servicios vitales al servidor X, tal como la ruta de las fuentes tipogrficas. El siguiente ejemplo ilustra una seccin Files: Section "Files" RgbPath FontPath EndSection

"/usr/X11R6/lib/X11/rgb" "unix/:7100"

Las siguientes entradas son usadas comnmente en la seccin Files: RgbPath Especifica la ubicacin de la base de datos de colores RGB. Esta base de datos define todos los esquemas de color en X y los junta para valores RGB especificos. FontPath Especifica dnde el servidor X debe ser conectado para obtener las fuentes tipogrficas desde el servidor de fuentes xfs. Por defecto, la FontPath es unix/:7100. Esto le dice al servidor X que obtenga informacin de fuentes usando sockets de dominio UNIX para la comunicacin entre procesos (IPC) en el puerto 7100. Vea la Seccin 7.4 para ms informacin sobre X y fuentes tipogrficas. ModulePath Un parmetro opcional el cual especifica directorios alternativos que almacenan 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

mdulos de servidor X. 9.3.1.5. Module La seccin Module especifica cuales mdulos del directorio /usr/X11R6/lib/modules/ cargar el servidor X. Los mdulos aaden funcionalidad adicional al servidor X. El ejemplo siguiente ilustra una seccin Module tpica: Section "Module" Load "dbe" Load "extmod" Load "fbdevhw" Load "glx" Load "record" Load "freetype" Load "type1" Load "dri" EndSection 9.3.1.6. InputDevice Cada seccin InputDevice configura un dispositivo de entrada para el servidor X. Los sistemas tpicamente tienen al menos dos secciones InputDevice, un teclado y un ratn. El ejemplo siguiente ilustra una seccin InputDevice tpica para un ratn: Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "IMPS/2" Option "Device" "/dev/input/mice" Option "Emulate3Buttons" "no" EndSection Las entradas siguientes son comnmente usadas en la seccin InputDevice: Identifier Especifica un nombre nico para esta seccin InputDevice. Esto es una entrada requerida. Driver Especifica el nombre del controlador del dispositivo que X debe cargar para el dispositivo. Option Especifica las opciones necesarias pertinentes al dispositivo. Para un ratn, estas opciones incluyen: 25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Protocol Indica el protocolo usado por el ratn, tal como IMPS/2. Device Indica la ubicacin del dispositivo fsico. Emulate3Buttons Especifica si se va a permitir a un ratn de dos botones a que se comporte como uno de tres cuando se presionen ambos botones simultneamente. Consulte la pgina man de xorg.conf para una lista de las opciones vlidas para esta seccin. Por defecto, la seccin InputDevice tiene comentarios para permitir a los usuarios configurar opciones adicionales. 9.3.1.7. Monitor Cada seccin Monitor configura un tipo de monitor usado por el sistema. Mientras una seccin Monitor es lo mnimo, pueden ocurrir varias instancias para cada tipo de monitor en uso con la mquina. La mejor forma de configurar un monitor es configurando X durante la instalacin o usando la Herramienta de configuracin de X. Este ejemplo muestra una seccin de Monitor tpica:

Section "Monitor" Identifier VendorName ModelName DisplaySize HorizSync VertRefresh EndSection

"Monitor0" "Monitor Vendor" "DDC Probed Monitor - ViewSonic G773-2" 320 240 30.0 - 70.0 50.0 - 180.0

A continuacin se muestran entradas comunes usadas en la seccin Monitor: Identifier Proporciona un nombre nico para esta seccin Monitor. Esta es una entrada requerida. VendorName Parmetro opcional que muestra el nombre del fabricante del monitor. ModelName Parmetro opcional que muestra el nombre del modelo del monitor. DisplaySize Un parmetro opcional que especifica, en milmetros, el tamao fsico del rea de dibujo del monitor. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

HorizSync Especifica el rango de la frecuencia de sincronizacin horizontal compatible con el monitor, en kHz. Estos valores ayudan al servidor X a determinar la validez de las entradas Modeline especificadas o incorporadas para el monitor. VertRefresh Especifica los rangos de frecuencias de actualizacin verticales soportados por el monitor, en Hz. Estos valores ayudan a que el servidor X determine la validez de las entradas incorporadas o especificadas en Modeline para este monitor. Modeline Un parmetro opcional el cual especifica los modos de vdeo adicionales para el monitor en resoluciones particulares, con ciertas resoluciones de refrescamiento vertical y sincronizacin horizontal. Vea la pgina man de xorg.conf para una explicacin ms detallada de las entradas Modeline. Option "<nombre-opcion>" Una entrada opcional que especifica parmetros extra para la seccin. Reemplace <nombre-opcion> con una opcin vlida listada para esta seccin en la pgina man de xorg.conf. 9.3.1.8. Device Cada seccin Device configura una tarjeta de vdeo en el sistema. Aunque una seccin Device es lo mnimo, tambin se pueden tener instancias adicionales para cada tarjeta de vdeo instalada en la mquina. La mejor forma de configurar una tarjeta de vdeo es configurando X durante el proceso de instalacin o usando la Herramienta de configuracin de X. El siguiente ejemplo ilustra una seccin Device tpica para una tarjeta de vdeo: Section "Device" Identifier Driver VendorName BoardName VideoRam Option EndSection

"Videocard0" "mga" "Videocard vendor" "Matrox Millennium G200" 8192 "dpms"

Las siguientes entradas son usadas comnmente en la seccin Device: Identifier Especifica un nombre nico para esta seccin Device. Esta es una entrada requerida. Driver Especifica cul controlador debe cargar el servidor X para poder utilizar la tarjeta de vdeo. Se puede encontrar una lista de los controladores en /usr/X11R6/lib/X11/Cards, el cual es instalado con el paquete hwdata. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

VendorName Un parmetro opcional el cual especifica el fabricante de la tarjeta de vdeo. BoardName Un parmetro opcional el cual especifica el nombre de la tarjeta de vdeo. VideoRam Un parmetro opcional el cual especifica la cantidad de RAM disponible en la tarjeta de vdeo en kilobytes. Este valor slo es necesario para tarjetas de vdeo que el servidor X no puede probar para detectar la cantidad de RAM. BusID Una entrada opcional la cual especifica la ubicacin del bus de la tarjeta de vdeo. Esta opcin es necesaria solamente para sistemas con mltiples tarjetas. Screen Una entrada opcional la cual especifica que conector de monitor o cabezal en la tarjeta de vdeo configura la seccin Device. Esta opcin es til solamente para tarjetas de vdeo con mltiples cabezales. Si mltiples monitores son conectados a diferentes cabezales en la misma tarjeta de vdeo, deben existir secciones Device separadas y cada una de estas secciones debe tener un valor Screen diferente. Los valores para la entrada Screen deben ser enteros. El primer cabezal en la tarjeta de vdeo tiene un valor de 0. El valor para cada cabezal adicional incrementa este valor en uno. Option "<nombre-opcion>" Una entrada opcional que especifica parmetros extra para la seccin. Reemplace <nombre-opcion> con una opcin vlida listada para esta seccin en la pgina man de xorg.conf. Una de las opciones ms comunes es "dpms", la cual activa la configuracin de conformidad de energa Service Star para el monitor. 9.3.1.9. Screen Cada seccin Screen vincula una tarjeta de vdeo (o cabezal) a un monitor referenciando la seccin Device y la seccin Monitor para cada uno. Mientras que una seccin Screen es lo mnimo, pueden ocurrir instancias adicionales para cada combinacin de tarjeta de vdeo y monitor presente en la mquina. El ejemplo siguiente ilustra una seccin Screen tpica: Section "Screen" Identifier "Screen0" Device "Videocard0" Monitor "Monitor0" DefaultDepth 16 SubSection "Display" Depth 24 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Modes "1280x1024" "1280x960" "1152x864" "1024x768" "800x600" "640x EndSubSection SubSection "Display" Depth 16 Modes "1152x864" "1024x768" "800x600" "640x480" EndSubSection EndSection Las siguientes entradas son usadas a menudo en la seccin Screen: Identifier Especifica un nombre nico para esta seccin Screen. Esta es una entrada requerida. Device Especifica el nombre nico de una seccin Device. Esta es una entrada requerida. Monitor Especifica el nombre nico de una seccin Monitor. Esta es una entrada requerida. DefaultDepth Especifica la profundidad del color por defecto en bits. En el ejemplo anterior, el valor por defecto es 16, lo que proporciona miles de colores. Mltiples entradas de DefaultDepth son permitidas, pero al menos una debe estar presente. SubSection "Display" Especifica los modos de la pantalla disponibles en una profundidad de color particular. Una seccin Screen puede tener mltiples subsecciones Display, pero debe haber al menos una para la profundidad de color especificada en la entrada DefaultDepth. Option "<nombre-opcion>" Una entrada opcional que especifica parmetros extra para la seccin. Reemplace <nombre-opcion> con una opcin vlida listada para esta seccin en la pgina man de xorg.conf. 9.3.1.10. DRI La seccin opcional DRI especifica parmetros para Direct Rendering Infrastructure (DRI). DRI es una interfaz que permite a las aplicaciones de software 3D sacar provecho de las capacidades de aceleracin de hardware 3D incorporadas en la mayora del hardware moderno de vdeo. Adems, DRI puede mejorar el rendimiento de 2D a travs de la aceleracin de hardware, si es soportado por el controlador de la tarjeta. Esta seccin es ignorada a menos que DRI est activada en la seccin Module. El ejemplo siguiente muestra una seccin DRI tpica: Section "DRI" Group 25 de Mayo 445 Piso 2 (1002) Bs.As.

0 Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Mode EndSection

0666

Puesto que tarjetas de vdeo diferentes utilizan DRI de formas diferentes, no modifique estos valores para esta seccin sin primero referirse al http://dri.sourceforge.net/.

9.4 Fuentes

GNU Linux utiliza dos mtodos para manejar y mostrar fuentes tipogrficas bajo X. El subsistema de fuentes ms nuevo Fontconfig simplifica la gestin de fuentes y proporciona caractersticas de visualizacin avanzadas, tales como anti-aliasing. Este sistema es usado automticamente para aplicaciones programadas usando el conjunto de herramientas grficas Qt 3 o GTK+ 2. Por compatibilidad, GNU Linux incluye el subsistema de fuentes original, llamado el subsistema de fuentes tipogrficas base de X. Este sistema, el cual tiene ms de 15 aos, est basado en el Servidor de fuentes tipogrficas de X (X Font Server, xfs). Esta seccin discute cmo configurar fuentes para X usando ambos sistemas.

9.4.1. Fontconfig El subsistema de fuentes Fontconfig permite a las aplicaciones accesar directamente fuentes en el sistema y usar Xft u otros mecanismos de traduccin de fuentes para interpretar fuentes Fontconfig con anti-aliasing avanzados. Las aplicaciones grficas pueden usar la librera Xft con Fontconfig para dibujar texto a la pantalla. Con el tiempo, el subsistema de fuentes Fontconfig/Xft reemplazar el subsistema de fuentes base de X. Es importante resaltar que Fontconfig utiliza el archivo de configuracin /etc/fonts/fonts.conf el cual no se debera modificar manualmente.
Sugerencia

Debido a la transicin al nuevo sistema de fuentes, las aplicaciones GTK+ 1.2 no son afectadas por ningn cambio realizado a travs del dilogo Preferencias de tipografa (accesado al seleccionar Botn de men principal [en el Panel] => Preferencias => Fuentes). Para estas aplicaciones, se puede configurar una fuente aadiendo las lneas siguientes al archivo ~/.gtkrc.mine: style "user-font" { fontset = "<font-specification>" } widget_class "*" style "user-font" Sustituya <font-specification> con una especificacin de fuente en el estilo utilizado por las aplicaciones X tradicionales, tales como -adobe-helvetica-medium-r-normal--*-120-*-*-*25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

*-*-*. Se puede obtener una lista completa de las fuentes base ejecutando xlsfonts o crendolas interactivamente usando el comando xfontsel. 9.4.1.1. Aadir fuentes a Fontconfig Aadir fuentes al subsistema Fontconfig es un proceso bastante directo. 1. Para aadir fuentes tipogrficas globales al sistema, copie las fuentes al directorio /usr/share/fonts/. Es una buena idea crear un nuevo subdirectorio, tal como local/ o similar, para ayudar a distinguir entre las fuentes del usuario y las instaladas por defecto. Para aadir fuentes para un usuario individual, copie las nuevas fuentes en el directorio .fonts/ en el directorio principal del usuario. 2. Utilice el comando fc-cache para actualizar la informacin cach de la fuente, como en el ejemplo siguiente: fc-cache <path-to-font-directory> En este comando, sustituya <path-to-font-directory> con el directorio conteniendo las nuevas fuentes (bien sea /usr/share/fonts/local/ o /home/<user>/.fonts/). 9.4.2. Sistema de fuentes base de X Por compatibilidad, GNU Linux proporciona el subsistema de fuentes tipogrficas base de X, el cual utiliza el servidor de fuentes X (xfs) para proporcionar fuentes tipogrficas a las aplicaciones clientes X. El servidor X busca por un servidor de fuentes tipogrficas especificado en la directiva FontPath bajo la seccin Files del archivo de configuracin /etc/X11/xorg.conf. Refirase a la Seccin 7.3.1.4 para ms informacin sobre la entrada FontPath. El servidor X se conecta al servidor xfs en un puerto especificado para adquirir la informacin sobre las fuentes tipogrficas. Por esta razn, el servicio xfs debe estar ejecutndose para que X pueda arrancar. 9.4.2.1. Configuracin de xfs El script /etc/rc.d/init.d/xfs inicia el servidor xfs. Se pueden configurar muchas opciones dentro del archivo /etc/X11/fs/config. La siguiente es una lista de algunas opciones comunes: alternate-servers Configura una lista de servidores alternativos de fuentes tipogrficas que podrn ser utilizados en el caso de que el servidor actual no est disponible. Los diferentes servidores debern estar separados por comas. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

catalogue Lista ordenada de rutas que contienen las fuentes tipogrficas a utilizar. Cada ruta hacia las fuentes deber estar separada por una coma en la lista. Puede utilizar la cadena :unscaled inmediatamente despus de la ruta hacia las fuentes para hacer que las fuentes no escalables se carguen primero. Entonces, podr especificar la ruta completa de nuevo de tal forma que las otras fuentes que sean escalables puedan ser cargadas tambin. client-limit Configura el nmero mximo de clientes que el servidor de fuentes podr servir. El nmero por defecto es 10. clone-self Permite al servidor de fuentes clonar una nueva versin de s mismo si se llega al lmite definido por el parmetro client-limit. Por defecto, esta opcin est configurada como on. default-point-size Configura el tamao de punto por defecto para cualquier fuente que no especifique este valor. El valor de esta opcin est estimado en dcimas de puntos. El valor por defecto de 120 se corresponde a fuentes de 12 puntos. default-resolutions Especifica una lista de las resoluciones soportadas por el servidor X. Cada resolucin de la lista debe estar separada por una coma. deferglyphs Especifica si retrasar la carga de glyphs (el grfico usado para visualmente representar una fuente). Para desactivar esta caracterstica utilice none, para activarla para todas las fuentes utilice all, o para activar esta caracterstica solamente para fuentes de 16-bit use 16. error-file Le permite especificar la ruta y el nombre de archivo donde se almacenarn los informes de error de xfs. no-listen Dice a xfs que no escuche determinados protocolos. Por defecto, esta opcin est configurada con tcp para evitar que xfs escuche utilizando puertos TCP, por motivos de seguridad. Sugerencia Si est utilizando xfs para servir fuentes sobre la red, elimine esta lnea.

port Especifica el puerto TCP en el cual xfs escuchar si no-listen no existe o est entre comentarios. use-syslog Especifica si utilizar el registro de errores del sistema.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

9.4.2.2. Aadir fuentes a xfs Para aadir fuentes al subsistema base de fuentes de X (xfs), siga los pasos siguientes: 1. Si an no existe, cree un directorio llamado /usr/share/fonts/local/ usando el comando siguiente como usuario root: mkdir /usr/share/fonts/local/ Si es necesario la creacin del directorio /usr/share/fonts/local/, se debe aadir a la ruta xfs usando el comando siguiente como root: chkfontpath --add /usr/share/fonts/local/ 2. Copie el nuevo archivo de fuente en el directorio /usr/share/fonts/local/ 3. Actualice la informacin de la fuente emitiendo el siguiente comando como root: ttmkfdir -d /usr/share/fonts/local/ -o /usr/share/fonts/local/fonts.scale 4. Vuelva a cargar el archivo de configuracin del servidor de fuentes xfs, utilizando el comando siguiente como root: service xfs reload

9.5 - Niveles de ejecucin y X

En la mayora de los casos, la instalacin por defecto de GNU Linux configura una mquina para arrancar en un entorno de conexin grfico, conocido como nivel de ejecucin 5. Es posible, sin embargo, arrancar en el modo multiusuario de slo texto llamado nivel de ejecucin 3 y comenzar una sesin X desde all. Para ms informacin sobre los niveles de ejecucin, consulte la Seccin 1.4. Las siguientes subsecciones revisan cmo inicia X en los niveles de ejecucin 3 y 5. 9.5.1. Nivel de ejecucin 3 Cuando estamos en el nivel de ejecucin 3, la forma habitual de iniciar una sesin X es escribiendo el comando startx. El comando startx es una interfaz del programa xinit el cual lanza el servidor X (Xorg) y conecta aplicaciones clientes X al mismo. Puesto que el usuario ya est conectado al sistema en el nivel de ejecucin 3, startx no lanzar un gestor de visualizacin o autenticar al usuario. Refirase a la Seccin 9.5.2 para ms informacin sobre los gestores de visualizacin. 25 de Mayo 445 Piso 2 (1002) Bs.As. Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Cuando startx comienza, busca un archivo .xinitrc en el directorio principal del usuario para definir el entorno de escritorio y posiblemente otras aplicaciones clientes X a ejecutar. Si este archivo .xinitrc no se encuentra, se utilizar el archivo por defecto /etc/X11/xinit/xinitrc. El script por defecto xinitrc luego buscar por los archivos definidos por el usuario y archivos de sistema por defecto, incluyendo .Xresources, .Xmodmap y .Xkbmap en el directorio principal del usuario y Xresources, Xmodmap y Xkbmap en el directorio /etc/X11/. Si existen los archivos Xmodmap y Xkbmap, estos son usados por la utilidad xmodmap para configurar el teclado. El archivo Xresources es ledo para asignar valores de preferencia especficos a las aplicaciones. Despus de configurar estas opciones, el script xinitrc ejecuta todos los scripts localizados en el directorio /etc/X11/xinit/xinitrc.d/. Un script muy importante en este directorio es xinput, el cual configura los parmetros tales como el idioma por defecto. Luego, el script xinitrc intenta ejecutar .Xclients en el directorio principal del usuario y cambia a /etc/X11/xinit/Xclients si no lo puede encontrar. El propsito del archivo Xclients es arrancar el entorno de escritorio o posiblemente, slo un gestor de ventanas bsico. El script .Xclients en el directorio principal del usuario inicia el entorno de escritorio especificado por el usuario en el archivo .Xclients-default. Si .Xclients no existe en el directorio principal del usuario, el script estndar /etc/X11/init/Xclients intenta iniciar otro entorno de escritorio, intentando primero con GNOME y luego con KDE seguido por twm. El usuario es devuelto a una sesin de modo texto despus de desconectarse de X del nivel de ejecucin 3. 9.5.2. Nivel de ejecucin 5 Cuando el sistema arranca en el nivel de ejecucin 5, se lanza una aplicacin cliente de X especial, llamada un gestor de visualizacin. El usuario debe autenticarse usando el gestor de visualizacin antes de que se inicien cualquier entorno de escritorio o gestores de ventanas. Dependiendo de los entornos de escritorio instalados en su mquina, estn disponibles tres gestores de visualizacin diferentes para manejar la autenticacin de los usuarios.

GNOME Es por lo general el gestor de visualizacin por defecto para GNU Linux y permite que el usuario configure los parmetros de idioma, cierre del sistema, reinicio o conexin al sistema. KDE El gestor de visualizacin de KDE que permite a los usuarios apagar, reiniciar o conectarse al sistema. xdm Este es un gestor de visualizacin muy bsico que slo permite que el usuario se conecte al sistema.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

Cuando arranque en el nivel de ejecucin 5, el script prefdm determina el preferido haciendo referencia al archivo /etc/sysconfig/desktop. /usr/share/doc/initscripts-<version-number>/sysconfig.txt number> es el nmero de la versin del paquete initscripts) para ver un disponibles para este archivo.

gestor de visualizacin Refirase al archivo (donde <versionlistado de las opciones

Cada uno de los gestores de visualizacin hace referencia al archivo /etc/X11/xdm/Xsetup_0 para configurar la pantalla de conexin. Una vez que el usuario se conecte al sistema, el script /etc/X11/xdm/GiveConsole corre para asignar la propiedad de la consola al usuario. Luego, el script /etc/X11/xdm/Xsession se ejecuta para llevar a cabo muchas de las tareas que son normalmente realizadas por el script xinitrc cuando arranca X desde el nivel de ejecucin 3, incluyendo la configuracin del sistema y los recursos del usuario, as como tambin ejecutar los scripts en el directorio /etc/X11/xinit/xinitrc.d/. El usuario puede especificar cul entorno de escritorio desea utilizar cuando se autentican usando los gestores de visualizacin GNOME o KDE, seleccionndolo desde el men Sesiones (accesado al seleccionar Botn de men principal [en el Panel] => Preferencias => Ms Preferencias => Sesiones). Si el entorno de escritorio no es especificado en el gestor de visualizacin, el script /etc/X11/xdm/Xsession verificar los archivos .xsession y .Xclients en el directorio principal del usuario para decidir cul entorno de escritorio cargar. Como ltimo recurso, se utiliza el archivo /etc/X11/xinit/Xclients para seleccionar un entorno de escritorio o gestor de ventanas para usarse de la misma forma que en el nivel de ejecucin 3. Cuando el usuario termina una sesin X en la visualizacin por defecto (:0) y se desconecta, el script /etc/X11/xdm/TakeConsole se ejecuta y vuelve a asignar la propiedad de la consola al usuario root. El gestor de visualizacin original, que contina ejecutndose despus que el usuario se conecta, toma el control liberando un nuevo gestor de visualizacin. Esto reinicia el servidor X, despliega una nueva ventana de conexin y reinicia el proceso completo otra vez. El usuario es devuelto al gestor de visualizacin despus de desconectarse de X desde el nivel de ejecucin 5. Para ms informacin sobre cmo los gestores de visualizacin controlan la autenticacin de los usuarios, consulte /usr/share/doc/gdm-<version-number>/README (donde <version-number> es el nmero de la versin para el paquete gdm instalado) y la pgina man de xdm.

9.6 - Recursos adicionales

Se podra decir mucho ms sobre el servidor X, los clientes que se conectan a l y la variada gama de entornos de escritorio y gestores de ventanas. 9.6.1. Documentacin instalada

/usr/X11R6/lib/X11/doc/README Describe brevemente la arquitectura de XFree86 y cmo obtener informacin adicional sobre el proyecto XFree86 como nuevo usuario.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

/usr/X11R6/lib/X11/doc/RELNOTES Para usuarios avanzados que deseen leer ms sobre las ltimas caractersticas presentes en XFree86. man xorg.conf Contiene informacin sobre los archivos de configuracin xorg.conf incluyendo el significado y la sintaxis para las diversas secciones dentro de los archivos. man X.Org La pgina man principal para informacin sobre la Fundacin X.Org. man Xorg Describe el servidor de pantallas X11R6.8. 9.6.2. Sitios Web tiles

http://www.X.org/ Pgina principal de la Fundacin X.Org, que produce el lanzamiento X11R6.8 del sistema X Window. El lanzamiento X11R6.8 se proporciona junto con GNU Linux para controlar el hardware necesario y proporcionar un entorno GUI. http://xorg.freedesktop.org/ Pgina principal para el lanzamiento XR116.8, proporcionando binarios y documentacin para el sistema X Window. http://dri.sourceforge.net/ Pgina principal del proyecto DRI (Direct Rendering Infrastructure). DRI es el corazn del componente de aceleracin 3D de X. http://www.gnome.org/ Pgina principal del proyecto GNOME. http://www.kde.org/ Pgina principal del entorno de escritorio KDE. http://nexp.cs.pdx.edu/fontconfig/ Pgina principal del subsistema de fuentes Fontconfig para X. 9.6.3. Libros relacionados

The Concise Guide to XFree86 for Linux por Aron Hsiao; Que Proporciona un punto de vista experto sobre la operacin de XFree86 en sistemas Linux. The New XFree86 por Bill Ball; Prima Publishing Discute XFree86 y su relacin con los entornos de escritorio ms populares, como GNOME y KDE. Beginning GTK+ and GNOME por Peter Wright; Wrox Press, Inc. Introduce a los programadores la arquitectura de GNOME, mostrando cmo iniciarse con GTK+. GTK+/GNOME Application Development por Havoc Pennington; New Riders Publishing Una visin avanzada del corazn de la programacin en GTK+, centrndose en cdigo de ejemplo a travs de una visin de las APIs disponibles.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

KDE 2.0 Development por David Sweet y Matthias Ettrich; Sams Publishing Instruye a los programadores principiantes y avanzados sobre cmo sacarle partido a las diferentes pautas de entorno necesarias para construir aplicaciones QT para KDE.

Copyrleft 2008-2009 OSI-Sistemas. Usted est autorizado a copiar, modificar y/o distribuir esta documentacin siempre y cuando cite a los autores de estas pginas.

Los documentos publicados en estas pginas son propiedad de sus respectivos autores, y su distribucin o reproduccin en cualquier forma y por cualquier medio est restringida a los trminos de la licencia GNU GPL http://es.tldp.org/htmls/gpl.html salvo indicacin expresa que afirme lo contrario.

25 de Mayo 445 Piso 2 (1002) Bs.As.

Tel 43132484 /2486/2475 opensource@osi-sistemas.com.ar

También podría gustarte