You are on page 1of 130

Gu de Referencia a

Mandrakelinux 10.1

http://www.mandrakesoft.com

Gu de Referencia: Mandrakelinux 10.1 a Publicado 2004-09-30 Copyright 2004 Mandrakesoft SA por Camille Bgnis, Christian Roy, Fabian Mandelbaum, Roberto Rosselli del Turco, Marco De Vitis, Alice Lafox, John Rye, Wolfgang Bornath, Funda Wang, Patricia Pichardo Bgnis, Debora Rejnharc Mandelbaum, Mickael Scherer, Jean-Michel Dault, Lunas Moon, Cline Harrand, Fred Lepied, Pascal Rigaux, Thierry Vignaud, Giuseppe Ghib, Stew Benedict, Francine Suzon, Indrek Madedog Triipus, Nicolas Berdugo, Thorsten Kamp, Fabrice Facorat, Xiao Ming, y Snature

Nota legal
Este manual (exceptuando las partes que se listan en la tabla de abajo) est protegido bajo los derechos de la propiedad intelectual de Mandrakesoft. Al reproducir, duplicar o distribuir este manual en todo o en parte, Usted da su consentimiento explcito que seguir los trminos y condiciones de este acuerdo de licencia. Este manual (exceptuando los captulos que se listan en la tabla de abajo) puede ser libremente reproducido, duplicado o distribuido ya sea como tal, o como parte de un paquete en formato electrnico y/o impreso, siempre y cuando se satisfagan las condiciones siguientes:

Que esta nota de copyright aparezca claramente y de manera distinguible en todas las copias reproducidas, duplicadas y distribuidas. Que los Textos de Tapa que se mencionan ms adelante, Acerca de Mandrakelinux, pgina 1 y la seccin que nombra los autores y contribuyentes se adjunten sin cambio alguno a la versin reproducida, duplicada o distribuida. Que este manual, en especial para el formato impreso, se reproduce y/o distribuye exclusivamente sin nes comerciales.

Se debe obtener la autorizacin expresa de Mandrakesoft SA antes de cualquier otro uso de cualquier manual o parte del mismo. Mandrake, Mandrakesoft, DrakX y Linux-Mandrake son marcas registradas en los Estados Unidos de Amrica y/o en otros pases. Tambin est registrado el Logo de la estrella relacionado. Todos los derechos reservados. Cualquier otro copyright incluido en este documento permanece la propiedad de sus respectivos dueos.

Textos de Tapa Mandrakesoft Septiembre 2004 http://www.mandrakesoft.com/ Copyright 1999-2004 por Mandrakesoft S.A. y Mandrakesoft Inc.

Los cap tulos que se listan en la tabla siguiente estn protegidos a por una licencia diferente. Consulte la tabla y los v nculos para ms a detalles acerca de estas licencias.

Copyright original Compilando e instalando software libre, pgina por Benjamin Drieu 79 (http://www.april.org/)

Licencia , APRIL Licencia Pblica General GNU, GPL (http: //www.gnu.org/copyleft/gpl.html)

Las herramientas usadas en la elaboracin de este manual


Este manual se escribi en DocBook XML. Borges (http://www.mandrakelinux.com/en/doc/project/Borges/) se utiliz para administrar el conjunto de archivos involucrados. Los archivos fuente XML se procesaron con xsltproc, openjade y jadetex usando las hojas de estilo de Norman Walsh personalizadas. Las instantneas de pantallas se tomaron con xwd o GIMP y se convirtieron con convert (del paquete ImageMagick). Todas estas piezas de software son libres y estn disponibles en su distribucin Mandrakelinux.

Tabla de contenidos
Prefacio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1. Acerca de Mandrakelinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1. Contactando a la comunidad Mandrakelinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. nase al Club . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3. Suscrbase a Mandrakeonline. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1 1.4. Comprando productos Mandrakesoft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.5. Contribuya con Mandrakelinux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3. Palabras del traductor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4. Convenciones usadas en este libro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4.1. Convenciones tipogrcas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 4.2. Convenciones generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 I. El sistema Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1. Conceptos bsicos de un Sistema UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.1. Usuarios y grupos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 1.2. Nociones bsicas sobre los archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.3. Los procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4. Breve introduccin a la lnea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2. Discos y particiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1. Estructura de una unidad de disco rgido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2. Convenciones para nombrar los discos y las particiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3. Introduccin a la Lnea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1. Utilitarios de manipulacin de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2. Manipulacin de los atributos de los archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3. Patrones de englobamiento del shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.4. Redirecciones y tuberas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5. El completado de la lnea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.6. Inicio y manipulacin de procesos en segundo plano: el control de los jobs. . . . . . . . . . . . . . . . . .28 3.7. Palabras nales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4. La edicin de texto: Emacs y VI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31 4.1. Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.2. VI: el ancestro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.3. Una ltima palabra... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5. Los utilitarios de la lnea de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.1. Operaciones y ltrado de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.2. nd: Busca archivos en funcin de ciertos criterios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.3. Programar la ejecucin de comandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.4. Archivado y compresin de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 5.5. Mucho, mucho ms... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 6. Control de procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.1. Un poco ms sobre los procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.2. Informacin sobre los procesos: ps y pstree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 6.3. Envo de seales a los procesos: kill, killall y top . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 6.4. Ajustando la prioridad de los procesos: nice, renice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 II. Linux en profundidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7. Organizacin del rbol de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.1. Datos compartibles y no compartibles, estticos y no estticos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.2. El directorio raz: / . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.3. /usr: el grandote . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7.4. /var: datos modicables durante el uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7.5. /etc: los archivos de conguracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 8. Sistemas de archivos y puntos de montaje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 8.1. Principios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 8.2. Particionar un disco rgido, formatear una particin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 8.3. Los comandos mount y umount . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 9. El sistema de archivos de Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 9.1. Comparacin de algunos sistemas de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 9.2. Todo es un archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 iii

9.3. Los vnculos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 9.4. Tuberas annimas y tuberas nombradas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 9.5. Los archivos especiales: modo bloque y caracter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 9.6. Los vnculos simblicos y la limitacin de los vnculos duros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 9.7. Los atributos de los archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 10. El sistema de archivos /proc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 10.1. Informacin sobre los procesos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 10.2. Informacin sobre el hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 10.3. El subdirectorio /proc/sys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 11. Los archivos de arranque: init SYSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 11.1. Al comienzo estaba init . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 11.2. Los niveles de ejecucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 III. Usos avanzados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 12. Compilando e instalando software libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 12.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 12.2. Descompresin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 12.3. Conguracin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 12.4. Compilacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 12.5. Instalacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 12.6. Soporte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 12.7. Agradecimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 13. Compilando e instalando ncleos nuevos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 13.1. Actualizando un ncleo usando los paquetes binarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 13.2. Desde los fuentes del ncleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 13.3. Extrayendo los fuentes, corrigiendo el ncleo (si es necesario) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 13.4. Congurando el ncleo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 13.5. Guardando y volviendo a usar los archivos de conguracin de su ncleo . . . . . . . . . . . . . . . . . 98 13.6. Compilar el ncleo y los mdulos, instalar La Bestia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 13.7. Instalando el ncleo nuevo manualmente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 A. Glosario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 ndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

iv

Lista de tablas
9-1. Caractersticas de los sistemas de archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

Lista de guras
1-1. Conexin en modo grco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1-2. El icono de la terminal en el panel de KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2-1. Primer ejemplo de nombres de las particiones bajo GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 2-2. Segundo ejemplo de nombres de las particiones bajo GNU/Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4-1. Editando dos archivos a la vez . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4-2. Emacs antes de copiar el bloque de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4-3. Copiando texto con Emacs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4-4. Situacin inicial en VIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4-5. VIM, antes de copiar el bloque de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4-6. VIM, despus de copiar un bloque de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 6-1. Ejemplo de ejecucin de top . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 8-1. Un sistema de archivos todava no montado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 8-2. Ahora el sistema de archivos est montado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

vi

Prefacio
1. Acerca de Mandrakelinux
Mandrakelinux es una distribucin GNU/Linux soportada por Mandrakesoft S.A. que naci en la Internet en 1998. Su propsito principal era y todava es brindar un sistema GNU/Linux fcil de usar y amigable. Los dos pilares de Mandrakesoft son el cdigo abierto y el trabajo colaborativo.

1.1. Contactando a la comunidad Mandrakelinux


A continuacin tiene varios vnculos con la Internet que lo llevan a varias fuentes relacionadas con Mandrakelinux. Tambin puede echar un vistazo al sitio web de la distribucin Mandrakelinux (http://www. mandrakelinux.com) y todos sus derivados. Mandrakeexpert (http://www.mandrakeexpert.com) es la plataforma de soporte de Mandrakesoft. Ofrece una experiencia nueva basada en la conanza y el placer de premiar a otros por sus contribuciones. Tambin lo invitamos a participar en las distintas listas de distribucin de correo (http://www.mandrakelinux. com/es/flists.php3), donde toda la comunidad de Mandrakelinux demuestra su vivacidad y bondad. Por favor, recuerde tambin conectarse a Mandrakesecure (http://www.mandrakesoft.com/security). Este sitio reune todo el material relacionado con la seguridad sobre las distribuciones Mandrakelinux. All encontrar avisos de seguridad y errores, as como tambin artculos relacionados con la seguridad y la privacidad. Un sitio obligatorio para cualquier administrador de servidores o usuario al que le concierne la seguridad.

1.2. Unase al Club


Mandrakesoft ofrece un amplio rango de ventajas por medio del Club de Usuarios de Mandrakelinux (http: //www.mandrakeclub.com) Usted puede:

descargar software comercial normalmente slo disponible en los paquetes de venta al pblico, tales como controladores de dispositivos especiales, aplicaciones comerciales, versiones de demostracin y freeware; votar y proponer software nuevo por medio de un sistema de votacin de RPMs mantenido y provisto por voluntarios; acceder a ms de 50.000 paquetes RPM para todas las distribuciones Mandrakelinux; obtener descuentos para los productos y servicios de Mandrakestore (http://www.mandrakestore.com); acceder a una lista de sitios de rplica mejores, exclusiva para los miembros del Club; leer foros y artculos en mltiples idiomas.

Al nanciar a Mandrakesoft por medio de Mandrakeclub, Usted mejorar la distribucin Mandrakelinux directamente, y nos ayudar a brindar a nuestros usuarios el mejor sistema GNU/Linux de escritorio posible.

1.3. Suscr base a Mandrakeonline


Mandrakesoft ofrece una manera muy conveniente de mantener actualizado su sistema de forma automtica, manteniendo lejos a los bugs y los problemas de seguridad. Visite el sitio web de Mandrakeonline (https: //www.mandrakeonline.net/) para aprender ms acerca de este servicio.

1.4. Comprando productos Mandrakesoft


Los usuarios de Mandrakelinux pueden comprar productos en lnea a travs de Mandrakestore (http: //www.mandrakestore.com). Usted encontrar no slo software Mandrakelinux, sistemas operativos y CDs de arranque vivos (como Move), sino tambin ofertas especiales de suscripcin, soporte, software de terceros y licencias, documentacin, libros relacionados con GNU/Linux, as como tambin otros goodies relacionados con Mandrakesoft.

Prefacio

1.5. Contribuya con Mandrakelinux


Las habilidades de las personas muy talentosas que usan Mandrakelinux pueden resultar de suma utilidad en la realizacin del sistema Mandrakelinux:

Empaquetado. Un sistema GNU/Linux est compuesto principalmente por programas recogidos de la Internet. Estos programas tienen que empaquetarse de forma tal que puedan funcionar juntos. Programacin. Hay muchsimos proyectos que Mandrakesoft soporta directamente: encuentre el que ms le atraiga, y ofrezca su ayuda a los desarrolladores principales. Internacionalizacin. La traduccin de las pginas web, los programas, y la documentacin respectiva de los mismos. Documentacin. Por ltimo, pero no menos importante, el manual que Usted est leyendo en este momento necesita de mucho trabajo para mantenerse actualizado con respecto a la evolucin rpida del sistema.

Consulte los proyectos de desarrollo (http://www.mandrakesoft.com/labs/) para saber ms acerca de la forma en la que Usted puede contribuir a la evolucin de Mandrakelinux.

2. Introduccin o
Esta Gua de Referencia est orientada a las personas que desean comprender mejor su sistema Mandrakelinux, y que desean explotar las enormes posibilidades del mismo. Luego de leerla, esperamos que se sienta cmodo con la administracin da a da de una mquina GNU/Linux. Aqu tiene las tres partes que la componen, junto con una breve descripcin del contenido de cada captulo:

En el primer captulo (Conceptos bsicos de un Sistema UNIX, pgina 7) presentamos el paradigma UNIX y se habla ms especcamente de GNU/Linux. Expone los utilitarios estndar para manipular archivos as como tambin algunas caractersticas tiles que brinda el shell. Luego hay un captulo complementario (Discos y particiones, pgina 15) que discute la manera en que se administran los discos bajo GNU/Linux, as como tambin el concepto de particin. Es muy importante que Usted comprenda por completo los conceptos que se abordan en estos captulos antes de continuar con Introduccin a la Lnea de comandos, pgina 21. El captulo siguiente cubre la edicin de texto (La edicin de texto: Emacs y VI, pgina 31). Debido a que la mayora de los archivos de conguracin de UNIX son archivos de texto, eventualmente querr o necesitar editarlos en un editor de texto. Aprender como usar dos de los editores de texto ms famosos en los mundos de UNIX y GNU/Linux: el potente Emacs y el antiguo y querido Vi, escrito en 1976 por Bill Joy. Luego debera poder realizar tareas de mantenimiento bsicas en su sistema. Los dos captulos siguientes presentan usos prcticos de la lnea de comandos (Los utilitarios de la lnea de comandos, pgina 39), y el control de los procesos (Control de procesos, pgina 49) en general. En Linux en profundidad, tratamos acerca del ncleo Linux y la arquitectura del sistema de archivos. Exploramos la organizacin del rbol de archivos en Organizacin del rbol de archivos, pgina 53. Los sistemas UNIX tienden a crecer mucho, pero cada archivo tiene su lugar en un directorio especco. Luego de leer este captulo, sabr donde buscar archivos de acuerdo al rol que cumplen en el sistema. Luego, cubrimos los temas sistema de archivos y punto de montaje (Sistemas de archivos y puntos de montaje, pgina 57). Denimos ambos trminos y los explicamos con ejemplos prcticos. El sistema de archivos de Linux, pgina 61 est dedicado a los sistemas de archivos de GNU/Linux. Luego de presentar los disponibles, discutimos sobre los tipos de archivo y algunos conceptos y utilitarios adicionales como los i-nodos y las tuberas. El sistema de archivos /proc, pgina 71 presentar a /proc, un sistema de archivos especial de GNU/Linux. Los archivos de arranque: init SYSV, pgina 77 presenta el procedimiento de arranque de Mandrakelinux, y cmo utilizarlo de manera eciente.

En El sistema Linux, le presentamos la lnea de comandos y los distintos usos de la misma. Tambin discutimos lo bsico sobre la edicin de textos, que es esencial bajo GNU/Linux.

Prefacio

En Usos avanzados, concluimos con temas que slo desearan poner en prctica los usuarios valientes o muy talentosos. Compilando e instalando software libre, pgina 79 lo guiar a travs de los pasos necesarios para construir e instalar software libre a partir de los fuentes. La lectura de este captulo debera animarlo a realizar la prueba, incluso si al principio puede parecer intimidante. Finalmente, la informacin provista en el ltimo captulo (Compilando e instalando ncleos nuevos, pgina 95) lo ayudar a adquirir una autonoma total con GNU/Linux. Luego de leer y aplicar la teora que se explica en este captulo, comience a convertir usuarios de Windows a GNU/Linux (si es que todava no comenz!).

3. Palabras del traductor


Siguiendo la losofa del Cdigo Abierto (Open Source), las contribuciones siempre son bienvenidas! Actualizar la documentacin de Mandrakelinux es toda una tarea. Usted puede proporcionar ayuda de muchas maneras diferentes. De hecho, el equipo de documentacin est constantemente buscando voluntarios talentosos para ayudarnos a realizar las tareas siguientes:

escribir o actualizar; traducir; editar; programacin XML/XSLT.

Si tiene un montn de tiempo, puede escribir un captulo completo; si habla una lengua extranjera, puede ayudarnos a traducir nuestros manuales; si tiene ideas acerca de como mejorar el contenido, hganoslo saber Incluso nos puede avisar si encuentra errores de tecleo u ortografa! Soy de Argentina y los trminos de informtica que utilizamos aqu pueden no ser los mismos que los empleados en otros pases de habla hispana (mouse en vez de ratn, archivo en vez de chero, etc.), sin embargo he tratado de utilizar trminos que puedan ser comprendidos por todos. Espero que la eleccin haya sido adecuada. Para cualquier informacin acerca del proyecto de documentacin de Mandrakelinux, por favor contacte al coordinador de la documentacin (mailto:documentation@mandrakesoft.com) o visite la pgina web del Proyecto de Documentacin de Mandrakelinux (http://www.mandrakelinux.com/en/doc/project/).

4. Convenciones usadas en este libro


4.1. Convenciones tipogrcas a
Para poder diferenciar con claridad algunas palabras especiales del ujo del texto, el equipo de documentacin las representa de maneras diferentes. La tabla siguiente muestra un ejemplo de cada palabra o grupo de palabras especiales con su representacin real y lo que esto signica. Ejemplo formateado i-nodo ls -lta ls(1)
$ ls *.pid

Signicado Se usa para enfatizar un trmino tcnico explicado en el Glosario, pgina 105. Indica comandos, o argumentos a un comando. Se aplica a los comandos, las opciones y los nombres de archivos (ver Sinopsis de comandos, pgina 4). Referencia a una pgina Man. Para leer la pgina, simplemente teclee man 1 ls, en una lnea de comandos. Formateado usado para instantneas de los textos que Usted puede ver en su pantalla incluyendo las interacciones con la computadora, los listados de programa, etc. Dato literal que por lo general no encaja en alguna de las categoras denidas previamente. Por ejemplo, una palabra clave tomada de un archivo de conguracin.

localhost

Prefacio Ejemplo formateado Konqueror Signicado Dene nombres de las aplicaciones. Dependiendo del contexto, el nombre del comando y de la aplicacin pueden ser el mismo pero estar formateados de manera diferente. Por ejemplo, la mayora de los comandos se escriben en minsculas, mientras que los nombres de las aplicaciones por lo general comienzan con mayscula. Indica las entradas de men o las etiquetas de las interfaces grcas. La letra subrayada indica la tecla del atajo, que se accede presionando la tecla Alt y luego la letra en cuestin. denota una parte de una computadora o una computadora en s misma. Indica que estas palabras pertenecen a una lengua extranjera. Reservado para las advertencias especiales con el n de enfatizar la importancia de las palabras. Lalo en voz alta :-)

Congurar

Bus-SCSI Le petit chaperon rouge Atencin!

Resalta una nota. Generalmente, es un comentario que brinda informacin adicional acerca de un contexto espec o co.

Representa un consejo. Puede ser una gu general sobre como a realizar una accin espec o ca, o pistas acerca de caracter sticas interesantes que pueden simplicarle la vida, tales como atajos.

Tenga sumo cuidado cuando vea este icono. Siempre signica que se tratar con informacin sumamente importante acerca de un tema a o en particular.

4.2. Convenciones generales


4.2.1. Sinopsis de comandos
El ejemplo que sigue le muestra los signos que encontrar en este manual cuando el autor describe los argumentos de un comando:
comando <argumento no textual> [--opcin={arg1,arg2,arg3}] o [argumento opcional ...]

Estas convenciones son tpicas y las encontrar en otros lugares, por ejemplo las pginas Man. Los signos < (menor que) y > (mayor que) denotan un argumento obligatorio que no debe ser copiado textualmente, sino que debe reemplazarse de acuerdo con sus necesidades. Por ejemplo, <archivo> se reere al nombre real de un archivo. Si dicho nombre es pepe.txt,Usted debera teclear pepe.txt, y no <pepe.txt> o <archivo>. Los corchetes ([ ]) denotan argumentos opcionales, los cuales puede o no incluir en el comando. Los puntos suspensivos (...) signican que en ese lugar se puede incluir un nmero arbitrario de elementos. Las llaves ({ }) contienen los argumentos permitidos en este lugar. Uno de ellos debe ser puesto aqu.

Prefacio

4.2.2. Notaciones especiales


De vez en cuando se le indicar que presione las teclas Ctrl-R. Eso signica que Usted debe presionar y mantener presionada la tecla Ctrl mientras presiona la tecla R tambin. Lo mismo aparece y vale para las teclas Alt y Maysculas (abreviada como Mays). Tambin, acerca de los mens, ir a la opcin del men ArchivoResumir (Ctrl-R) signica: hacer clic sobre el texto Archivo mostrado en el men (generalmente ubicado en la parte superior izquierda de la ventana). Luego en el men desplegable, hacer clic sobre la opcin Resumir. Adicionalmente, se le informa que puede usar la combinacin de teclas Ctrl-R (como se describi anteriormente) para lograr el mismo resultado.

4.2.3. Usuarios genricos del sistema e


Siempre que ha sido posible, hemos utilizado dos usuarios genricos en nuestros ejemplos: Reina Pingusa Peter Pingus Este es nuestro usuario predeterminado, utilizado en la mayora de los ejemplos en este libro. Este usuario puede ser creado luego por el administrador del sistema, y a veces se utiliza para variar los ejemplos.

Prefacio

Cap tulo 1. Conceptos bsicos de un Sistema UNIX a


El nombre UNIX puede resultar familiar para algunos. Incluso hasta puede ser que Usted utilice un sistema UNIX en el trabajo, en cuyo caso este captulo puede resultarle poco interesante. Para aquellos de Ustedes que nunca usaron un sistema UNIX, la lectura de este captulo es absolutamente necesaria. El conocimiento de los conceptos que se presentarn aqu contesta una cantidad sorprendentemente alta de preguntas formuladas con frecuencia por los principiantes en el mundo de GNU/Linux. Similarmente, es probable que algunos de estos conceptos puedan darle pistas para ayudarle a resolver los problemas que puede encontrar en el futuro.

1.1. Usuarios y grupos


Debido a que tienen una inuencia directa en todos los dems conceptos, este captulo presentar los conceptos de usuarios y grupos, los cuales son extremadamente importantes. Linux es un sistema multiusuario verdadero, y para poder usar su sistema GNU/Linux debe poseer una cuenta en el mismo. Cuando cre un usuario durante la instalacin, en realidad cre una cuenta. En caso que no lo recuerde, se le pidieron los elementos siguientes:

el nombre verdadero del usuario (de hecho, cualquier nombre que desee); un nombre de conexin (o login); y una contrasea.

Aqu los dos parmetros importantes son el nombre de conexin (comnmente abreviado login) y la contrasea. Estos son absolutamente necesarios para poder acceder al sistema. Cuando crea un usuario tambin se crea un grupo predeterminado. Ms adelante veremos que los grupos son tiles cuando varias personas tienen que compartir archivos. Un grupo puede contener tantos usuarios como Usted desee, y es muy comn ver tal separacin en sistemas grandes. En una universidad, por ejemplo, Usted puede tener un grupo por cada departamento, otro grupo para los profesores, y as sucesivamente. La inversa tambin vale: un usuario puede ser miembro de uno o ms grupos. Por ejemplo, un profesor de matemticas puede ser miembro del grupo de profesores y tambin ser miembro del grupo de sus queridos estudiantes de matemticas. Sin embargo todo esto no le dice como conectarse. Aqu viene. Si la interfaz grca (X) se inicia automticamente al arrancar, su pantalla de conexin se parecer a la de Figura 1-1.

Figura 1-1. Conexin en modo grco Para poder conectarse primero debe seleccionar su cuenta en la lista. Se muestra un nuevo dilogo que le pide su contrasea. Note que tendr que ingresar su contrasea a ciegas ya que los caracteres se muestran como estrellas (*), en vez de los caracteres reales tecleados en el campo de contrasea. Tambin puede elegir su tipo de sesin de acuerdo con su preferencia. Luego presione el botn Conectar. Si est en modo consola, se le presentar algo similar a lo siguiente:

Captulo 1. Conceptos bsicos de un Sistema UNIX


Mandrakelinux Release 10.1 (NombreClave) for i586 Kernel 2.6.8.1-10mdk on an i686 / tty1 [nombre_de_mquina] login: a

Para conectarse, ingrese su nombre de conexin en la invitacin denominada login: y presione Intro. Entonces aparecer el programa de conexin (denominado login) que mostrar la invitacin denominada password: y esperar a que Usted ingrese su contrasea. Al igual que en la conexin de modo grco, la conexin en la consola no har eco en la pantalla de los caracteres que Usted teclea. Note que se puede conectar varias veces usando la misma cuenta en consolas adicionales y bajo X. Cada sesin que abra es independiente de las otras, e incluso es posible tener varias sesiones X abiertas concurrentemente. De manera predeterminada, Mandrakelinux tiene seis consolas virtuales adems de la reservada para la interfaz grca. Puede cambiarse a cualquiera de ellas ingresando la secuencia de teclas Ctrl-Alt-<n>, donde <n> es el nmero de consola a la cual desea cambiarse. Predeterminadamente, la interfaz grca est sobre la consola nmero 7. Entonces, para cambiar a la segunda consola Usted debera presionar simultneamente las teclas Ctrl, Alt y F2. Durante la instalacin DrakX tambin le pidi la contrasea de un usuario muy especial: root. Este es el administrador del sistema, que probablemente sea Usted. Es muy importante para la seguridad de su sistema que la cuenta de root siempre est protegida por una buena contrasea, difcil de adivinar! Si se conecta como root regularmente, es muy fcil cometer un error que puede hacer que su sistema quede intil; slo hace falta un error para que esto ocurra. En particular, si no ha proporcionado una contrasea para la cuenta root, entonces cualquier usuario puede alterar cualquier parte de su sistema (incluso de otros sistemas operativos presentes en su mquina!). Obviamente, esto no es una idea muy buena. Vale la pena mencionar que internamente el sistema no lo identica con su nombre de conexin sino con un nmero nico asignado a este nombre de conexin: el UID (User ID, Identicador del usuario). Similarmente, cada grupo se identica no por su nombre sino por su GID o Group ID, (Identicador del grupo)

1.2. Nociones bsicas sobre los archivos a

Los archivos son otro tema donde GNU/Linux diere bastante de Windows y muchos otros sistemas operativos. Aqu cubriremos las diferencias ms obvias. Para ms informacin, por favor consulte El sistema de archivos de Linux, pgina 61. Las diferencias mayores son consecuencia directa del hecho que Linux es un sistema multiusuario verdadero: cada archivo es de la exclusiva propiedad de un usuario y un grupo. Una de las cosas que no mencionamos acerca de los usuarios y grupos es que cada uno de ellos posee un directorio propio (denominado su directorio personal, o home en ingls). El usuario es el dueo de este directorio, y de los archivos que va a crear en dicho directorio. Sin embargo, esto no sera muy til si slo estuviera la nocin de propiedad de archivos. Pero hay ms: como dueo del archivo, un usuario puede congurar permisos sobre sus archivos. Estos permisos distinguen tres categoras de usuarios: el dueo del archivo, todos los usuarios que son miembros del grupo asociado al archivo (denominado tambin grupo dueo) pero no son el usuario dueo, y los otros, que son todos los usuarios que no son ni el dueo ni miembros del grupo dueo. Hay tres permisos diferentes: 1. Permiso de Lectura (r por Read, Leer): permite que un usuario lea los contenidos de un archivo. Para un directorio, el usuario puede listar el contenido del mismo (es decir, los archivos en este directorio). 2. Permiso de Escritura (w por Write, Escribir): permite la modicacin del contenido de un archivo. Para un directorio, permite que un usuario agregue o quite archivos de este directorio, incluso si no es el dueo de esos archivos. 3. Permiso de Ejecucin (x por eXecute, Ejecutar): permite ejecutar un archivo (normalmente slo los archivos ejecutables tienen activo este permiso). Para un directorio, permite que un usuario lo recorra, lo que signica poder ingresar a, o pasar por, ese directorio. Note que esto es diferente del acceso de lectura: bien puede ser que Usted pueda recorrer un directorio, pero no leer el contenido del mismo! Todas las combinaciones de estos permisos son posibles. Por ejemplo, puede autorizar la lectura de un archivo slo a Usted mismo y prohibirla a todos los dems usuarios. Como dueo del archivo, tambin puede cambiar el grupo propietario (solamente si Usted es miembro del grupo nuevo).

Captulo 1. Conceptos bsicos de un Sistema UNIX Tomemos el ejemplo de un archivo y un directorio. Abajo se muestra el resultado de ingresar el comando ls -l desde una lnea de comandos:
$ ls -l total 1 -rw-r----drwxr-xr-$

1 reina 2 peter

users users

0 Jul 1024 Jul

8 14:11 un_archivo 8 14:11 un_directorio/

Los diferentes campos de salida del comando ls -l son los siguientes (de izquierda a derecha):

Los primeros diez caracteres representan el tipo de archivo y los permisos asociados al mismo. El primer caracter es el tipo del archivo: contiene un guin (-) si es un archivo regular. Contiene una d si es un directorio. Hay otros tipos de archivos, de los que hablaremos ms adelante. Los nueve caracteres que siguen representan los permisos asociados con ese archivo. En realidad los nueve caracteres son tres grupos de tres permisos. El primer grupo representa los derechos asociados con el dueo del archivo; los siguientes tres se aplican a todos los usuarios que pertenecen al grupo dueo pero que no son el dueo; y los ltimos tres se aplican al resto de los usuarios. Un guin (-) signica que el permiso no est activo. Luego viene el nmero de vnculos del archivo. Ms adelante veremos que los archivos no slo se identican por su nombre, sino por un nmero (el nmero de i-nodo), y por lo tanto es posible que un archivo en disco tenga varios nombres. Para un directorio el nmero de vnculos tiene un signicado especial, que tambin discutiremos un poco ms adelante. Luego viene el nombre del dueo del archivo y el nombre del grupo dueo. Finalmente, se muestra el tamao del archivo (en bytes) y la fecha de su ltima modicacin, seguido por ltimo por el nombre del archivo o directorio propiamente dicho.

Ahora observemos en detalle los permisos asociados con cada uno de estos archivos: antes que nada, debemos quitar el caracter que representa al tipo, y para el archivo un_archivo obtenemos los derechos siguientes: rwr-----. La interpretacin de los mismos es la siguiente:

Los primeros tres (rw-) son los derechos del usuario dueo del archivo, en este caso reina. Por lo tanto, el usuario reina, tiene el derecho de leer el archivo (r), de modicarlo (w) pero no de ejecutarlo (-). Los tres siguientes (r--) se aplican a todo usuario que no es reina pero que es miembro del grupo users. Dichos usuarios podrn leer el archivo (r), pero no podrn modicarlo ni ejecutarlo (--). Los tres restantes (---) se aplican a todo usuario que no es reina ni es miembro del grupo users: simplemente no tendr derecho alguno sobre el archivo.

Para el directorio un_directorio, los derechos son rwxr-xr--, entonces:

peter, como dueo del directorio, puede listar los archivos que contiene (r), agregar o quitar archivos del mismo (w), y recorrerlo (x). Cada usuario que no es peter pero es miembro del grupo users, podr listar los archivos de ese directorio (r), pero no podr quitar ni agregar archivos (-), y lo podr recorrer (x). Cualquier otro usuario slo podr listar el contenido de este directorio (r--), y nada ms. Incluso no podr ingresar al directorio.

Hay una excepcin a estas reglas: root. El usuario root puede cambiar los atributos (permisos, dueo, y grupo dueo) de todos los archivos, incluso si no es el propietario de los mismos, y por lo tanto puede garantizarse la propiedad del archivo! root puede leer archivos sobre los que no tiene permisos, recorrer directorios a los que normalmente no tendra acceso, y as sucesivamente. Y si le falta un permiso, slo tiene que aadrselo. root tiene control total sobre el sistema, lo cual implica cierto nivel de conanza en la persona que tenga la contrasea de root. Para nalizar, vale la pena mencionar otra diferencia entre los nombres de los archivos en el mundo de UNIX y en el mundo de Windows. UNIX permite mayor exibilidad y tiene menos limitaciones:

Un nombre de archivo puede contener cualquier caracter, incluso los no imprimibles, excepto el caracter ASCII 0, que es el n de una cadena de caracteres, y una barra (/) que es el separador de directorio. Es ms,

Captulo 1. Conceptos bsicos de un Sistema UNIX debido a que UNIX distingue entre maysculas y minsculas, los archivos leame y Leame son dos archivos diferentes, porque l y L son dos caracteres diferentes bajo sistemas basados en UNIX.

Como debe haber notado, un nombre de archivo no contiene extensin alguna a menos que Usted preera nombrar as a sus archivos. Bajo GNU/Linux las extensiones de los nombres de archivo no identican al contenido del archivo, y tampoco lo hacen bajo otros sistemas operativos. No obstante, las as llamadas extensiones del archivo siempre son bastante convenientes. El caracter del punto (.) bajo UNIX es simplemente un caracter entre otros, pero tambin tiene un sentido especial. Bajo UNIX los nombres de archivo que comienzan con un punto son archivos ocultos1, lo cual tambin incluye a los directorios cuyo nombre comienza con un punto.

No obstante, vale la pena notar que muchas aplicaciones grcas a (administradores de archivos, aplicaciones de ocina, etc.) en realidad utilizan las extensiones de archivo para reconocer a los archivos. Por lo tanto, es buena idea usar extensiones en los nombres de archivos para dichas aplicaciones que las soportan.

1.3. Los procesos


Un proceso dene una instancia de un programa en ejecucin y su entorno. Al igual que con los archivos, aqu slo mencionamos las diferencias ms importantes entre GNU/Linux y Windows (por favor, consulte Control de procesos, pgina 49 para ms informacin). La diferencia ms importante est directamente relacionada al concepto de usuario: cada proceso se ejecuta con los derechos del usuario que lo inici. Internamente, el sistema identica a los procesos con un nmero nico, que se denomina el PID (Process ID, ID del Proceso). A partir de este PID, el sistema sabe quien (es decir, que usuario) ha lanzado el proceso y cierta otra informacin, y el sistema slo debe vericar la validez del proceso. Por lo tanto, si tomamos nuestro ejemplo del archivo un_archivo, un proceso lanzado por el usuario peter slo podr abrir este archivo en modo de slo lectura, pero no en el modo de lectura-escritura, ya que los permisos asociados al archivo lo prohiben. Una vez ms, root es la excepcin a esta regla. Gracias a esto, GNU/Linux es virtualmente inmune a los virus. Un virus necesita infectar archivos ejecutables para poder operar. Como usuario regular, Usted no tiene derecho de escritura sobre los archivos vulnerables del sistema, razn por la cual el riesgo se reduce notablemente. En general, los virus son muy raros en el mundo de UNIX. Solo hay unos pocos virus conocidos para Linux, y son completamente inofensivos cuando los ejecuta un usuario no privilegiado. Slo un usuario puede daar un sistema activando estos virus: root. Sin embargo, y curiosamente, existe software antivirus para GNU/Linux, pero mayormente para los archivos de DOS/Windows! Por qu hay programas antivirus corriendo en GNU/Linux, los cuales se enfocan en DOS/Windows? Cada vez ms seguido, Usted ver sistemas GNU/Linux actuando como servidores de archivos para las mquinas Windows con la ayuda del paquete de software Samba (consulte Compartiendo archivos e impresoras en la Gua de Administracin del Servidor). Linux hace que sea fcil controlar a los procesos. Una forma de controlarlos es por medio de seales, las cuales permiten que Usted suspenda o termine un proceso enviando la seal correspondiente al mismo. Sin embargo, est limitado a enviar seales a sus propios procesos. A excepcin de root, UNIX no permite que Usted enve seales a procesos que inici otro usuario. En Control de procesos, pgina 49, Usted aprender como obtener el PID de un proceso y enviarle seales.

1.4. Breve introduccin a la l o nea de comandos


La lnea de comandos es la manera ms directa de enviar comandos a su mquina. Si usa la lnea de comandos de GNU/Linux, rpidamente ver que es mucho ms potente y tiene ms capacidades que las invitaciones (prompts) que puede haber usado con anterioridad. La razn de esto es que tiene un acceso directo, no slo a todas las aplicaciones X, sino tambin a los miles de utilitarios en modo consola (en oposicin al modo grco)
1. De manera predeterminada, los archivos ocultos no se mostrarn en un administrador de archivos, a menos que Usted lo ordene. En una terminal, debe teclear el comando ls -a para ver todos los archivos ocultos. Esencialmente, los mismos contienen informacin de conguracin. Eche un vistazo a .mozilla o .openoffice en su directorio personal, para ver un ejemplo.

10

Captulo 1. Conceptos bsicos de un Sistema UNIX que no tienen equivalente grco, o que no sera fcil acceder a todas las opciones y combinaciones posibles por medio de mens y botones. Pero, admitmoslo, muchas personas necesitan un poquito de ayuda para poder empezar. La primera cosa a hacer, si est en el modo grco y todava no est trabajando en modo consola, es iniciar un emulador de terminal. Acceda al men principal de KDE, GNOME o cualquier otro administrador de ventanas que est usando y encontrar una cantidad de emuladores de terminal en el submen Sistema+Terminales. Elija el que desea, por ejemplo Konsole o RXvt. Dependiendo de su interfaz de usuario, tambin puede tener un icono que lo identica claramente en el panel (ver Figura 1-2).

Figura 1-2. El icono de la terminal en el panel de KDE Lo que obtiene en realidad al iniciar este emulador de terminal es un shell. Este es el nombre del programa con el cual Usted interacta. Se encontrar frente a la invitacin:
[reina@localhost reina]$

Esto supone que su nombre de usuario es reina y que el nombre de su mquina es localhost (este es el caso si su mquina no es parte de una red existente). Todo lo que aparece despus de la invitacin es lo que tiene que teclear. Note que cuando Usted es root el signo $ de la invitacin cambia por un signo # (esto slo es vlido con la conguracin predeterminada, ya que puede personalizar todos estos detalles en GNU/Linux). El comando para volverse root cuando inici un shell como usuario no privilegiado es su:
# Ingrese la contrase~a de root; (No aparecer en la pantalla) n a [reina@localhost reina]$ su Password: # exit (o Ctrl-D) lo devolver a su cuenta de usuario no privilegiado a [root@localhost reina]# exit [reina@localhost reina]$

En el libro, en general la invitacin ser representada simblicamente con un signo $, sea Usted un usuario no privilegiado o root. Cuando tenga que ser root para ejecutar un comando se le avisar, as que no se olvide del comando su que mostramos antes. Cuando Usted lanza el shell por primera vez normalmente se encontrar en su directorio personal. Para mostrar el directorio en donde se encuentra en este momento, ingrese el comando pwd (que signica Print Working Directory, Imprimir el directorio de trabajo):
$ pwd /home/reina

Hay unos comandos bsicos que veremos ahora, y pronto se dar cuenta que no podr vivir sin ellos!

1.4.1. cd: Cambiar de directorio (Change Directory)


El comando cd es exactamente el mismo que en DOS, con algunos extra. Hace justo lo que su acrnimo indica, cambiar el directorio de trabajo. Puede usar . y .., que signican respectivamente el directorio corriente y el directorio padre. Si ingresa cd solo, regresar a a su directorio personal. Si ingresa cd - ser llevado al ltimo directorio en el cual estuvo. Y, nalmente, puede especicar el directorio personal del usuario peter ingresando cd ~peter (~ slo o seguido de / signica el directorio personal suyo). Note que como usuario no privilegiado normalmente no puede ingresar a los directorios personales de otros usuarios (a menos que esos usuarios lo hayan autorizado explcitamente o esa sea la conguracin predeterminada del sistema), excepto si Usted es root, entonces sea root y practique:
$ pwd /root $ cd /usr/share/doc/HOWTO $ pwd /usr/share/doc/HOWTO $ cd ../FAQ-Linux

11

Captulo 1. Conceptos bsicos de un Sistema UNIX


$ pwd /usr/share/doc/FAQ-Linux $ cd ../../../lib $ pwd /usr/lib $ cd ~peter $ pwd /home/peter $ cd $ pwd /root

Ahora, vuelva a ser un usuario no privilegiado ingresando el comando exit (o presionando las teclas Ctrl-D).

1.4.2. Algunas variables de entorno y el comando echo


Todos los procesos tienen sus variables de entorno y el shell le permite verlas directamente con el comando echo. Algunas variables interesantes son: 1. HOME: esta variable de entorno contiene una cadena de caracteres que representa su directorio personal. 2. PATH: esta variable contiene la lista de todos los directorios en los cuales el shell busca los ejecutables cuando Usted ingresa un comando. Note que predeterminadamente, a diferencia de DOS, el shell no buscar los comandos en el directorio corriente! 3. USERNAME: esta variable contiene una cadena que representa su nombre de conexin. 4. UID Contiene su identicador de usuario (UID). 5. PS1: determina cmo se mostrar la invitacin, y generalmente es una combinacin de secuencias especiales. Puede leer la pgina de manual de bash(1) (pgina Man) para ms informacin tecleando man bash en una terminal. Para hacer que el shell muestre el valor de una variable, debe anteponer al nombre de la misma un $. Aqu, el comando echo lo ayudar:
$ echo Hola Hola $ echo $HOME /home/reina $ echo $USERNAME reina $ echo Hola $USERNAME Hola reina $ cd /usr $ pwd /usr $ cd $HOME $ pwd /home/reina

Como puede ver, el shell substituye el valor de la variable antes de ejecutar el comando. De no ser as nuestro ejemplo cd $HOME no hubiese funcionado. De hecho, el shell primero ha reemplazado $HOME por su valor, /home/reina, por lo que la lnea se convirti en cd /home/reina, que es lo que queramos. Lo mismo ocurri con el ejemplo echo $USERNAME.

Si una de sus variables de entorno no existe, la puede crear temporalmente tecleando export NOMBRE_VARIABLE_ENTORNO=valor. Una vez que hizo esto, puede vericar que ha sido creada:
$ export USERNAME=reina $ echo $USERNAME reina

12

Captulo 1. Conceptos bsicos de un Sistema UNIX

1.4.3. cat: mostrar el contenido de uno o ms archivos en la pantalla a


No hay mucho ms que decir, este comando simplemente hace eso: mostrar el contenido de uno o ms archivos en la salida estndar, normalmente la pantalla:
$ cat /etc/fstab /dev/hda5 / ext2 defaults 1 1 /dev/hda6 /home ext2 defaults 1 2 /dev/hda7 swap swap defaults 0 0 /dev/hda8 /usr ext2 defaults 1 2 /dev/fd0 /mnt/floppy auto sync,user,noauto,nosuid,nodev 0 0 none /proc proc defaults 0 0 none /dev/pts devpts mode=0620 0 0 /dev/cdrom /mnt/cdrom auto user,noauto,nosuid,exec,nodev,ro 0 0 $ cd /etc $ cat modules.conf shells alias parport_lowlevel parport_pc pre-install plip modprobe parport_pc ; echo 7 > /proc/parport/0/irq #pre-install pcmcia_core /etc/rc.d/init.d/pcmcia start #alias char-major-14 sound alias sound esssolo1 keep /bin/zsh /bin/bash /bin/sh /bin/tcsh /bin/csh /bin/ash /bin/bsh /usr/bin/zsh

1.4.4. less: un paginador

Su nombre es un juego de palabras relacionado al primer paginador existente bajo UNIX, que se denominaba more2. Un paginador es un programa que permite al usuario ver archivos largos pgina por pgina (o, ms precisamente, pantalla por pantalla). Hablamos ms de less que de more porque su uso es mucho ms intuitivo. Utilice el comando less para ver archivos grandes que no entran en una pantalla. Por ejemplo:
less /etc/termcap

Para navegar por el archivo, use las teclas de las echas para arriba y para abajo. Utilice Q (por quit, salir) para salir del programa. En realidad, less puede hacer mucho ms que eso. De hecho, simplemente presione H para la ayuda (en ingls) acerca de las varias opciones disponibles.

1.4.5. ls: listar archivos


El comando ls (LiSt, LiStar) es equivalente a dir de DOS, pero puede hacer mucho ms. De hecho, esto se debe en gran parte al hecho de que los archivos tambin pueden hacer ms. La sintaxis del comando ls es la siguiente:
ls [opciones] [archivo|directorio] [archivo|directorio...]

Si no se especica archivo o directorio alguno en la lnea de comandos, ls mostrar la lista de los archivos del directorio corriente. Sus opciones son muchas y slo citaremos unas pocas: 1. -a: lista todos los archivos, incluyendo los archivos ocultos (en UNIX los archivos ocultos son aquellos cuyo nombre comienza con un .); la opcin -A lista casi todos los archivos, lo que signica que se mostrarn todos los archivos que mostrara la opcin -a excepto . y ..
2. less signica menos, y more signica ms

13

Captulo 1. Conceptos bsicos de un Sistema UNIX 2. -R: lista recursivamente, es decir, todos los archivos y subdirectorios del directorio que se menciona en la lnea de comandos. 3. -s: muestra el tamao en kilobytes junto a cada archivo. 4. -l: muestra informacin adicional sobre los archivos tales como los permisos asociados al mismo, el dueo y el grupo dueo, el tamao del archivo y la fecha de ltimo acceso. 5. -i: muestra el nmero de i-nodo (el nmero nico del archivo en el sistema de archivos, consulte El sistema de archivos de Linux, pgina 61) junto a cada archivo. 6. -d: trata a los directorios de la lnea de comandos como si fueran archivos normales en vez de listar su contenido. Algunos ejemplos:

ls -R: lista recursivamente el contenido del directorio corriente; ls -is images/ ..: lista los archivos en el directorio images/ y en el directorio padre del corriente, e imprime, para cada archivo, su nmero de i-nodo y su tamao en kilobytes. ls -l images/*.png: lista todos los archivos del directorio images/ cuyo nombre termina con .png, incluyendo al archivo .png si es que existe.

1.4.6. Atajos de teclado utiles


Hay una cantidad de atajos de teclado disponibles, cuya principal ventaja es que Usted ahorrar muchsimo tiempo de tecleo. Esta seccin asume que est utilizando el shell predeterminado provisto con Mandrakelinux: bash, pero estas secuencias de tecleo tambin deberan funcionar con otros shells. Primero: las teclas de las echas. bash mantiene un historial de los comandos que ingres previamente, el cual puede verse con las teclas de las echas para arriba y para abajo. Se puede remontar hasta un nmero de lneas denido en la variable de entorno HISTSIZE. Es ms, el histrico es persistente de una sesin a otra, por lo que no va a perder los comandos que ingres en una sesin previa. Las teclas de las echas izquierda y derecha mueven el cursor hacia la izquierda y hacia la derecha en la lnea corriente, por lo que puede editar sus comandos. Pero hay ms en materia de edicin que simplemente moverse un caracter a la vez: Ctrl-A y Ctrl-E, por ejemplo, lo llevarn al comienzo y al nal, respectivamente, de la lnea corriente. Las teclas Retroceso3 y Supr funcionan como se espera. Un equivalente de Retroceso es Ctrl-H y un equivalente de Supr es Ctrl-D. Ctrl-K borrar toda la lnea desde la posicin del cursor hasta el nal de la misma, y Ctrl-W borrar la palabra delante del cursor (al igual que Alt-Retroceso). Ingresar Ctrl-D en una lnea en blanco le permitir cerrar la sesin corriente, lo cual es mucho ms corto que tener que ingresar exit. Ctrl-C interrumpir el comando en curso de ejecucin, excepto si se encuentra en el proceso de editar su lnea de comandos, en cuyo caso interrumpir la edicin y lo devolver a la invitacin. Ctrl-L borra la pantalla. Ctrl-Z detiene temporalmente una tarea, la suspende. Este atajo es muy til cuando Usted se olvida de teclear el caracter & luego de teclear un comando. Por ejemplo:
$ xpdf MiDocumento.pdf

Por lo tanto no puede utilizar ms el shell ya que la tarea en primer plano se asigna al proceso xpdf. Para poner esa tarea en segundo plano y restaurar su shell, simplemente teclee bg luego de haber presionado las teclas Ctrl-Z. Finalmente, estn Ctrl-S y Ctrl-Q: estas secuencias de teclas sirven, respectivamente, para suspender y reanudar el ujo de caracteres sobre una terminal. No son muy usadas, pero sin embargo, puede ocurrir que teclee Ctrl-S por error (despus de todo, S y D estn muy cerca una de la otra en el teclado...). Entonces, si presiona las teclas pero no ve aparecer caracter alguno en la terminal, primero intente Ctrl-Q y preste atencin: aparecern en la pantalla todos los caracteres juntos que ingres entre el Ctrl-S no deseado y Ctrl-Q.

3.

Retroceso es la ltima tecla de la la que contiene las teclas de los nmeros.

14

Cap tulo 2. Discos y particiones


Este captulo contiene informacin para aquellos que simplemente desean saber ms acerca de los detalles tcnicos de sus sistemas. Proporcionar una descripcin completa del esquema de particin de la PC. Por lo tanto, ser de mayor utilidad si pretende congurar las particiones de su disco rgido manualmente. Debido a que el programa de instalacin puede particionar su disco automticamente, no es crtico entender todo si pretende realizar una instalacin estndar.

2.1. Estructura de una unidad de disco r gido


Un disco est dividido fsicamente en sectores. Una secuencia de sectores puede formar una particin. Sin ser muy precisos podemos decir que Usted puede crear tantas particiones como desee, hasta 67 (3 particiones primarias y una particin secundaria conteniendo hasta 64 particiones lgicas): cada una de las cuales se conoce como una sola unidad de disco rgido.

2.1.1. Sectores
Para simplicar, una unidad de disco rgido es meramente una secuencia de sectores, que son la unidad de datos ms pequea en un disco rgido. El tamao tpico de un sector es 512 bytes. Los sectores de un disco rgido de n sectores se numeran de 0 a n-1.

2.1.2. Particiones
El uso de particiones mltiples permite crear muchas unidades de discos virtuales dentro de su disco fsico real. Esto tiene muchas ventajas:

Los diferentes sistemas operativos usan estructuras de discos diferentes (denominadas sistema de archivos): este es el caso para Windows y GNU/Linux. El tener mltiples particiones en un disco rgido le permite instalar varios sistemas operativos en el mismo disco fsico. Por razones de desempeo, un sistema operativo puede preferir unidades diferentes que contengan sistemas de archivos distintos debido a que estas pueden usarse para cosas completamente diferentes. Un ejemplo es GNU/Linux el cual necesita una segunda particin denominada de intercambio (o swap). El administrador de memoria virtual utiliza a esta ltima como memoria virtual. Incluso si todas sus particiones usan el mismo sistema de archivos, puede resultar til separar las distintas partes de su sistema operativo en particiones diferentes. Un ejemplo de conguracin simple sera separar sus archivos en dos particiones: una para sus datos personales, y la otra para los programas. Esto le permite actualizar su sistema operativo, borrando por completo la particin de los programas a la vez que mantiene segura a la particin de datos. Los errores fsicos en un disco rgido generalmente se ubican en sectores adyacentes, no estn desparramados por todo el disco. Al distribuir sus archivos en particiones diferentes se limitarn las prdidas de datos en caso que su disco rgido sufra dao fsico.

Normalmente el tipo de particin especica el sistema de archivos que se supone que va a contener la particin. Cada sistema operativo puede reconocer algunos de ellos, pero no otros. Por favor, consulte Sistemas de archivos y puntos de montaje, pgina 57, y El sistema de archivos de Linux, pgina 61 para ms informacin.

15

Captulo 2. Discos y particiones

2.1.3. Denir la estructura de su disco


2.1.3.1. La manera ms simple a
Este escenario implicara slo dos particiones: una para el espacio de memoria virtual, y la otra para los archivos1.

Una regla general es ajustar el tamao de la particin de intercambio n o al doble del tamao que su memoria RAM (ej.: si tiene 128 MB de n memoria RAM, el tamao de la particin de intercambio deber ser n o a de 256 MB). Sin embargo, para conguraciones de mucha memoria (ms de 512 MB), esta regla no es cr a tica, y se aceptan tamaos n menores. Por favor, tenga presente que el tamao de la particin n o de intercambio est limitado de acuerdo a la plataforma que est a e utilizando. Por ejemplo, est limitado a 2 GB en x86, PowerPC y a MC680x0; est limitado a 512MB en MIPS; est limitado a 128GB a a en Alpha y a 3TB en UltraSPARC.

2.1.3.2. Otro esquema comn u


Separar los datos de los programas. Para ser incluso ms eciente, usualmente uno dene una tercera particin, denominada la particin raz (o root) y etiquetada como /. La misma va a contener los programas necesarios para arrancar su sistema y para realizar tareas bsicas de mantenimiento. Por lo tanto, podramos denir cuatro particiones: Intercambio Una particin de tipo swap, cuyo tamao es aproximadamente equivalente al tamao de la memoria RAM fsica. Raz: / La particin ms importante. No solo contiene los datos y programas ms importantes para el sistema, sino que tambin ociar de punto de montaje para otras particiones (consulte Sistemas de archivos y puntos de montaje, pgina 57). Las necesidades para la particin raz en trminos de tamao son muy limitadas, 400MB es suciente por lo general. Sin embargo, si planea instalar aplicaciones comerciales, que generalmente residen en el directorio /opt, deber incrementar el tamao de la particin raz. Otra opcin es crear una particin separada para /opt.

Datos estticos: /usr La mayora de los paquetes instalan la mayor parte de sus archivos ejecutables y de datos bajo /usr. La ventaja de tenerlos en una particin separada es que Usted la puede compartir fcilmente con otras mquinas sobre una red. El tamao recomendado depende de los paquetes que desea instalar, y puede variar desde 100MB para una instalacin muy liviana hasta varios GB para una instalacin completa. Un compromiso de dos o tres GB (dependiendo del tamao de su disco) por lo general es suciente.

1.

el sistema de archivos que usa Mandrakelinux corrientemente se denomina ext3.

16

Captulo 2. Discos y particiones Directorios personales: /home Este directorio contiene los directorios personales para todos los usuarios que alberga su mquina. el tamao de la particin depende de la cantidad de usuarios que se alberguen y de las necesidades de los mismos. Otra solucin es no crear una particin separada para los archivos de /usr: /usr podra ser simplemente un directorio dentro de la particin raz (/), sin embargo Usted debera aumentar el tamao de su particin raz (/) de manera adecuada. Finalmente, tambin puede crear slo las particiones de intercambio y raz (/), en caso que no est seguro acerca de lo que desea hacer con su computadora. En ese caso, su directorio personal estara ubicado en la particin raz, al igual que los directorios /usr y /var.

2.1.3.3. Conguraciones exticas o


Cuando congura a su mquina para usos especcos tales como un servidor web o un cortafuegos las necesidades son radicalmente distintas que para una mquina de escritorio tpica. Por ejemplo, un servidor FTP probablemente necesitar una particin grande separada para /var/ftp, mientras que /usr ser relativamente pequea. Para tales situaciones, le aconsejamos pensar cuidadosamente en sus necesidades, incluso antes de comenzar la instalacin.

Si despus de un per e odo de tiempo que est usando su sistema, a Usted nota que deber haber escogido tamaos y particiones a n diferentes, es posible cambiar el tamao a la mayor de las n a particiones sin necesidad de volver a instalar su sistema, incluso esto es (por lo general) seguro para los datos. Consulte Administrar sus particiones en la Gu de comienzo . a Con un poco de prctica, incluso podr mover una particin a a o poblada a otro disco r gido completamente nuevo.

2.2. Convenciones para nombrar los discos y las particiones


GNU/Linux usa un mtodo lgico para nombrar las particiones. En primer lugar, al nombrar las particiones no tiene en cuenta el tipo de particiones que Usted pudiera tener, y en segundo lugar nombra las particiones de acuerdo al disco en el cual estn ubicadas. As es como se nombran los discos:

Los dispositivos IDE maestro y esclavo primarios (ya sean discos rgidos, unidades de CD-ROM o cualquier otra cosa) se denominan /dev/hda y /dev/hdb respectivamente. En la interfaz secundaria, el maestro se denomina /dev/hdc y el esclavo se denomina /dev/hdd. Si su computadora contiene otras interfaces IDE (por ejemplo, la interfaz IDE presente en algunas tarjetas SoundBlaster), los dispositivos se denominarn /dev/hde, /dev/hdf, etc. Tambin puede que tenga interfaces IDE adicionales si tiene controladoras RAID. los discos SCSI se denominan /dev/sda, /dev/sdb, etc. en el orden en que aparezcan en la cadena SCSI (dependiendo de los ID incrementalmente). Los CD-ROM SCSI se denominan /dev/scd0, /dev/scd1, siempre en el orden de aparicin de los mismos en la cadena SCSI.

Si tiene discos IDE SATA, se aplica el esquema de nombrado SCSI.

Las particiones se nombran en base al disco en el cual se encuentran, de la siguiente manera (en el ejemplo, usamos el caso de particiones en un disco IDE maestro primario):

Las particiones primarias (o extendidas) se denominan /dev/hda1 a /dev/hda4 cuando estn presentes.

17

Captulo 2. Discos y particiones

Las particiones lgicas , si existen, se denominan /dev/hda5, /dev/hda6, etc. en el orden de aparicin de las mismas en la tabla de particiones lgicas.

Entonces GNU/Linux nombrar las particiones de la manera siguiente:

Figura 2-1. Primer ejemplo de nombres de las particiones bajo GNU/Linux

Figura 2-2. Segundo ejemplo de nombres de las particiones bajo GNU/Linux As que ahora podr citar el nombre de las distintas particiones y discos rgidos cuando los necesite manipular. Tambin ver que GNU/Linux nombra las particiones aun si no sabe como manejarlas a priori (ignora el hecho de que no son particiones GNU/Linux nativas).

18

Captulo 2. Discos y particiones

Mandrakelinux ahora usa udev (consulte las FAQ de udev (http://www.kernel.org/pub/linux/utils/kernel/hotplug/ udev-FAQ) para ms informacin). Este garantiza una compatibilia o dad completa con el esquema descrito arriba y con estndares como a el Linux Standards Base Project (http://www.linuxbase.org/). Cada dispositivo se agrega al sistema dinmicamente tan pronto a como est disponible o se necesite. e

19

Captulo 2. Discos y particiones

20

Cap tulo 3. Introduccin a la L o nea de comandos


En Conceptos bsicos de un Sistema UNIX, pgina 7 le hemos mostrado como lanzar un shell. En este captulo, le mostraremos como trabajar con el mismo. La ventaja principal del shell es el nmero de utilitarios existentes: hay miles de ellos, y cada uno est dedicado a una tarea en particular. Aqu slo veremos una cantidad (muy) pequea de ellos. Una de las ventajas principales de UNIX es la capacidad de combinar estos utilitarios, como veremos ms adelante.

3.1. Utilitarios de manipulacin de archivos o


En este contexto, la manipulacin de archivos signica copiar, mover y borrar archivos. Ms adelante, veremos formas de cambiar los atributos de los mismos (dueo, permisos asociados).

3.1.1. mkdir, touch (tocar): creacin de directorios y archivos vac o os


mkdir (MaKe DIRectory, Crear directorio) se usa para crear directorios. Su sintaxis es simple:
mkdir [opciones] <directorio> [directorio ...]

Slo la opcin -p es digna de inters. La misma hace dos cosas: 1. crear los directorios padre si es que an no existan. Si no se especica esta opcin y los directorios padre no existen, mkdir simplemente fallar, quejndose que dichos directorios padre no existen; 2. retornar silenciosamente si el directorio que desea crear ya existe. Similarmente, si no especic la opcin -p, mkdir retornar un mensaje de error, quejndose que el directorio ya existe. Aqu tiene algunos ejemplos:

mkdir pepe crea un directorio denominado pepe en el directorio corriente; mkdir -p imagenes/misc docs crea un directorio misc en el directorio imagenes creando primero el ltimo si es que no existe (-p); tambin crea un directorio denominado docs en el directorio corriente.

Inicialmente, el comando touch no est orientado a la creacin de archivos sino a la actualizacin de la fecha de acceso y modicacin de los archivos1. Sin embargo, touch crear los archivos mencionados como archivos vacos si es que no existan. La sintaxis es:
touch [opciones] archivo [archivo ...]

Entonces, ejecutar el comando:


touch archivo1 imagenes/archivo2

crear un archivo vaco denominado archivo1 en el directorio corriente y un archivo vaco denominado archivo2 en el directorio imagenes, si dichos archivos no existan.

3.1.2. rm : borrar archivos o directorios


El comando rm (ReMove, Quitar) reemplaza a los comandos del y deltree de DOS, y agrega ms opciones. Su sintaxis es la siguiente:
rm [opciones] <archivo|directorio> [archivo|directorio ...]

Las opciones incluyen:

1. Hay tres etiquetas de tiempo distintas para cada archivo en UNIX : la ltima fecha de acceso al mismo (atime), es decir, la fecha cuando se abri para lectura o escritura; la ltima fecha cuando se modicaron los atributos del i-nodo (mtime); y nalmente, la ltima fecha cuando se modic el contenido del archivo (ctime).

21

Captulo 3. Introduccin a la Lnea de comandos

-r, o -R: borrar recursivamente. Esta opcin es obligatoria para borrar un directorio, vaco o no. Sin embargo, tambin puede usar el comando rmdir para borrar directorios vacos. -i: pedir conrmacin antes de cada supresin. Note que predeterminadamente en Mandrakelinux, por razones de seguridad, rm es un alias a rm -i (existen alias similares para los comandos cp y mv). Estos alias pueden ser ms o menos tiles de acuerdo a la experiencia que Usted tenga. Si desea quitarlos, puede editar su archivo ~/.bashrc y agregar esta lnea: unalias rm cp mv. -f: la opuesta de -i, fuerza la supresin de los archivos o directorios, incluso si el usuario no tiene derecho de escritura sobre los archivos2.

Algunos ejemplos:

rm -i imagenes/*.jpg archivo1: borra todos los archivos cuyo nombre termina en .jpg en el directorio imagenes y borra el archivo archivo1 en el directorio corriente, pidiendo conrmacin para cada uno de los archivos. Responda y para conrmar la supresin, n para cancelarla. rm -Rf imagenes/misc/ archivo*: borra todo el directorio misc/ del directorio imagenes/ junto con todos los archivos del directorio corriente cuyos nombres comiencen con archivo sin pedir conrmacin alguna.

Un archivo borrado utilizando rm se borra irrevocablemente No hay forma alguna de recuperarlo! (Bueno, en realidad hay varias maneras de hacerlo, pero ninguna es trivial). No dude en usar la opcin -i para asegurarse de que no borra algo por error. o

3.1.3. mv : mover o renombrar archivos


La sintaxis del comando mv (MoVe, mover) es la siguiente:
mv [opciones] <archivo|directorio> [archivo|directorio ...] <destino>

Algunas opciones:

-f: fuerza la operacin no hay advertencia alguna en caso de que la operacin sobre-escriba un archivo que ya existe. -i: lo contrario pedir conrmacin al usuario antes de sobre-escribir un archivo existente. -v: modo verboso, reportar todos los cambios y la actividad.

Algunos ejemplos:

mv -i /tmp/pics/*.png .: mover todos los archivos del directorio /tmp/pics/ cuyos nombres terminan en .png al directorio corriente (.), pidiendo conrmacin antes de sobre-escribir cualquier archivo. mv pepe pupu: cambiar el nombre del archivo pepe por pupu. Si ya hubiera un directorio pupu, el efecto de este comando sera mover todo el directorio pepe (el directorio en s mismo ms todos los archivos y directorios que contenga, recursivamente) dentro del directorio pupu. mv -vf archivo* imagenes/ tacho/: mover, sin pedir conrmacin, todos los archivos del directorio corriente cuyos nombres comiencen con archivo junto con todo el directorio imagenes/ al directorio tacho/, y mostrar cada operacin llevada a cabo.

2. Es suciente que un usuario no privilegiado tenga derecho de escritura sobre un directorio para que pueda borrar los archivos que se encuentran en el mismo, incluso si dicho usuario no es el dueo de los archivos.

22

Captulo 3. Introduccin a la Lnea de comandos

3.1.4. cp : copiar archivos y directorios


cp (CoPy, Copiar) reemplaza a los comandos copy, xcopy de DOS, y agrega ms opciones. Su sintaxis es la siguiente:
cp [opciones] <archivo|directorio> [archivo|directorio ...] <destino>

cp tiene un montn de opciones. Estas son las ms comunes:


-R: copiar recursivamente; obligatoria para copiar un directorio, incluso si est vaco. -i: pedir conrmacin antes de sobre-escribir cualquier archivo que pudiera sobre-escribirse. -f: lo opuesto de -i, reemplazar cualquier archivo existente sin pedir conrmacin alguna. -v: modo verboso, reporta todas las acciones que realiza cp.

Algunos ejemplos:

cp -i /tmp/imagenes/* imagenes/: copia todos los archivos del directorio /tmp/imagenes al directorio imagenes/ ubicado en el directorio corriente. Si se va a sobreescribir un archivo se pide conrmacin. cp -vR docs/ /shared/mp3s/* miscosas/: copia todo el directorio docs al directorio actual ms todos los archivos del directorio /shared/mp3s al directorio miscosas ubicado en el directorio corriente. cp pepe pupu: hace una copia del archivo pepe bajo el nombre pupu en el directorio corriente.

3.2. Manipulacin de los atributos de los archivos o


La serie de comandos que se presentan aqu se usan para cambiar el dueo o el grupo dueo de un archivo o sus permisos. Vimos los diferentes permisos en Conceptos bsicos de un Sistema UNIX.

3.2.1. chown, chgrp : cambiar el dueo y el grupo propietario de uno o ms archivos n a


La sintaxis del comando chown (CHange OWNer, Cambiar el dueo) es la siguiente:
chown [opciones] <usuario[:grupo]> <archivo|directorio> [archivo|directorio ...]

Las opciones incluyen:


-R: recursivo; para cambiar el dueo de todos los archivos y subdirectorios en un directorio dado. -v: modo verboso; muestra todas las acciones efectuadas por chown; reporta cuales archivos cambiaron de dueo como resultado del comando y cuales no han cambiado. -c: como -v, pero slo reporta cuales archivos cambiaron.

Algunos ejemplos:

chown nobody /shared/libro.tex cambiar el dueo del archivo /shared/libro.tex a nobody. chown -Rc reina.musica *.mid conciertos/: atribuye todos los archivos en el directorio actual cuyos nombres terminan con .mid y todos los archivos y subdirectorios del directorio conciertos/ al usuario reina y al grupo musica, reportando slo los archivos afectados por el comando.

El comando chgrp (CHange GRouP, Cambiar el grupo) le permite cambiar el grupo propietario de un archivo o un grupo de archivos; su sintaxis es muy similar a la del comando chown:
chgrp [opciones] <grupo> <archivo|directorio> [archivo|directorio ...]

Las opciones de este comando son las mismas que las de chown, y se usa de manera muy similar. Por lo tanto, el comando:
chgrp disk /dev/hd*

le atribuye al grupo disk todos los archivos en el directorio /dev/ cuyos nombres comiencen con hd.

23

Captulo 3. Introduccin a la Lnea de comandos

3.2.2. chmod : cambiar los permisos sobre los archivos y directorios


El comando chmod (CHange MODe, Cambiar el modo) tiene una sintaxis bien particular. La sintaxis general es:
chmod [opciones] <modo> <archivo|directorio> [archivo|directorio ...]

pero lo que lo distingue son las diferentes formas que puede tomar el cambio de modo. Este se puede especicar de dos maneras: 1. en octal; entonces los derechos del usuario dueo se corresponden con nmeros de la forma <x>00, donde <x> corresponde al permiso asignado: 4 para permiso de lectura, 2 para permiso de escritura, y 1 para permiso de ejecucin; similarmente, los derechos del grupo propietario toman la forma <x>0 y los permisos para los otros la forma <x>. Por lo tanto, todo lo que Usted necesita hacer es sumar los permisos asignados para obtener el modo correcto. Por lo tanto, los permisos rwxr-xr-- corresponden a 400+200+100 (permisos del dueo, rwx) +40+10 (permisos del grupo propietario, r-x) +4 (permisos de los otros, r--) = 754; de esta forma, los permisos se expresan en trminos absolutos. Esto signica que los permisos previos se reemplazan incondicionalmente; 2. con expresiones: aqu los permisos se expresan con una secuencia de expresiones separadas por comas. Por lo tanto, una expresin toma la forma [categora]<+|-|=><permisos>. La categora puede ser una o ms de:

u (User. Usuario, permisos para el dueo); g (Group. Grupo, permisos para el grupo propietario); o (Others. Otros, permisos para los otros).

Si no se especica categora alguna, los cambios se aplicarn para todas las categoras. Un + garantiza un permiso, un - lo niega y un = lo garantiza. Finalmente, el permiso es uno o ms de:

r (Read, lectura); w (Write, escritura) o; x (eXecute, ejecucin).

Las opciones principales son bastante similares a las de chown o chgrp:


-R: cambiar los permisos recursivamente. -v: modo verboso, muestra las acciones efectuadas para cada archivo. -c: como -v pero solo muestra los archivos afectados por el comando.

Ejemplos:

chmod -R o-w /shared/docs: quitar recursivamente el permiso de escritura para los otros sobre todos los archivos y subdirectorios del directorio /shared/docs/. chmod -R og-w,o-x privado/: quitar recursivamente el permiso de escritura para el grupo y para los otros sobre todo el directorio privado/, y quitar el permiso de ejecucin para los otros. chmod -c 644 varios/archivo* cambia los permisos de todos los archivos del directorio varios/ cuyos nombres comiencen con archivo a rw-r--r-- (es decir, permiso de lectura para todos y permiso de escritura slo para el dueo), y reporta slo los archivos afectados por la operacin.

24

Captulo 3. Introduccin a la Lnea de comandos

3.3. Patrones de englobamiento del shell


Probablemente Usted ya usa caracteres de englobamiento sin saberlo. Cuando Usted especica un archivo en Windows o cuando busca un archivo, Usted usa * para hacer coincidir con una cadena arbitraria de caracteres. Por ejemplo, *.txt hace coincidir a todos los archivos cuyo nombre termina con .txt. Nosotros tambin los usamos mucho en la ltima seccin. Pero el englobamiento va ms all que el simple *. Cuando Usted ingresa un comando como ls *.txt y presiona Intro, la tarea de encontrar cuales archivos se corresponden con el patrn *.txt no la realiza el comando ls, sino el shell en s mismo. Esto requiere de una pequea explicacin sobre como interpreta el shell la lnea de comandos. Cuando Usted ingresa:
$ ls *.txt leerme.txt recetas.txt

primero la lnea de comandos se separa en palabras (ls y *.txt, en este ejemplo). Cuando el shell ve un * en una palabra, interpretar toda la palabra como un patrn de englobamiento y la reemplazar con los nombres de todos los archivos que se correspondan con el patrn. Por lo tanto, justo antes que el shell la ejecute, la lnea se convirti en la lnea ls leerme.txt recetas.txt, lo que da el resultado esperado. El shell reacciona as frente a otros caracteres como:

? se corresponde con un nico caracter (uno y slo uno), cualquiera que sea este; [...] se corresponde con cualquiera de los caracteres que se encuentran entre los corchetes; los caracteres pueden estar referidos por intervalos (por ejemplo, 1-9) o por valores discretos,o una mezcla de ambos. Ejemplo: [a-zBE5-7] se corresponder con todos los caracteres desde la a hasta la z, una B, una E, un 5, un 6 o un 7; [!...]: se corresponde con cualquier caracter que no se encuentre en los corchetes. [!a-z], por ejemplo, se corresponder con cualquier caracter que no sea una letra minscula3; {c1,c2} se corresponde con c1 o con c2, donde c1 y c2 tambin son patrones de englobamiento, lo cual signica que Usted puede escribir {[0-9]*,[acr]} por ejemplo.

Aqu tiene algunos patrones y su signicado:

/etc/*conf: todos los archivos del directorio /etc cuyo nombre termine con conf. Se puede corresponder con /etc/inetd.conf, pero tambin con /etc/conf.linuxconf y tambin con /etc/conf si existe tal archivo: recuerde que * puede corresponderse con una cadena vaca. imagen/{autos,espacio[0-9]}/*.jpg: todos los archivos cuyo nombre termina en .jpg en los directorios imagen/autos, imagen/espacio0, ... , imagen/espacio9, si es que dichos directorios existen. /usr/share/doc/*/LEAME: todos los archivos denominados LEAME en todos los subdirectorios inmediatos del directorio /usr/share/doc. Esto har que /usr/share/doc/mandrake/LEAME corresponda por ejemplo, pero no /usr/share/doc/miprog/doc/LEAME. *[!a-z] Todos los archivos en el directorio corriente cuyo nombre no termine con una letra minscula.

3.4. Redirecciones y tuber as


3.4.1. Un poco ms sobre los procesos a
Para entender el principio de las redirecciones y las tuberas, necesitamos explicar una nocin acerca de los procesos que todava no ha sido introducida. Cada proceso UNIX (esto tambin incluye a las aplicaciones grcas, pero excluye a la mayora de los demonios) abre un mnimo de tres descriptores de archivo: la entrada estndar, la salida estndar, y el error estndar. Sus nmeros respectivos son 0, 1 y 2. En general, estos tres descriptores estn asociados con la terminal desde la cual se inici el proceso, siendo el teclado la entrada. El objetivo de las redirecciones y las tuberas es redirigir estos descriptores. Los ejemplos en esta seccin lo ayudarn a comprender mejor este concepto.

3. Cuidado! Aunque esto es cierto para la mayora de los idiomas, puede no ser cierto bajo su propia conguracin de idioma (locale). Esta caracterstica depende del orden de comparacin (collating order). En algunos sistemas, [a-z] se corresponder con a, A, b, B, (...) , z. Y ni siquiera mencionamos el hecho que algunos idiomas tienen caracteres acentuados.

25

Captulo 3. Introduccin a la Lnea de comandos

3.4.2. Redirecciones
Suponga, por ejemplo, que Usted quiere una lista de los archivos que terminan en .png4en el directorio imagenes. Esta lista es muy larga, por lo que Usted desea almacenarla en un archivo para consultarla a gusto ms tarde. Puede ingresar el comando siguiente:
$ ls imagenes/*.png 1>lista_de_archivos

Esto signica que la salida estndar de este comando (1) se redirecciona (>) al archivo denominado lista_de_ archivos. El operador > es el operador de redireccin de la salida. Si el archivo de redireccin no existe, se crea, pero si existe se sobre-escribe su contenido. Sin embargo, el descriptor predeterminado que redirecciona este operador es la salida estndar y no es necesario especicarla en la lnea de comandos. Entonces podra haber escrito simplemente:
$ ls imagenes/*.png >lista_de_archivos

y el resultado ser exactamente el mismo. Luego, puede mirar el archivo usando un visualizador de archivos de texto, por ejemplo less. Imagine ahora que Usted quiere saber cuantos de estos archivos hay. En vez de contarlos a mano, puede usar el utilitario denominado wc (Word Count, Contador de palabras) con la opcin -l, que escribe en la salida estndar el nmero de lneas en el archivo. Una solucin es la siguiente:
wc -l 0<lista_de_archivos

y esto da el resultado deseado. El operador < es el operador de redireccin de la entrada, y el descriptor redirigido predeterminadamente es el de la entrada estndar, es decir, 0, y Usted simplemente tiene que escribir la lnea:
wc -l <lista_de_archivos

Suponga ahora que desea quitar todas las extensiones de los archivos y poner el resultado en otro archivo. Una herramienta para hacer esto es sed, por Stream EDitor (Editor de ujo). Simplemente Usted redirecciona la entrada estndar del comando sed al archivo lista_de_archivos y redirecciona su salida al archivo resultado, por ejemplo la_lista:
sed -e s/\.png$//g <lista_de_archivos >la_lista

y aqu tiene creada su lista, disponible para ser consultada a gusto con cualquier visualizador. Tambin puede ser til redirigir el error estndar. Por ejemplo, desea saber a cuales directorios de /shared no tiene acceso: una solucin es listar este directorio recursivamente y redirigir los errores a un archivo, a la vez que no se muestra la salida estndar:
ls -R /shared >/dev/null 2>errores

lo que signica que se redireccionar la salida estndar (>) a /dev/null, un archivo especial donde todo lo que escribe se pierde (es decir que, como efecto secundario, no se muestra la salida estndar) y el canal de error estndar (2) se redirecciona (>) al archivo errores.

3.4.3. Tuber as
Las tuberas (pipes, en ingls) son de alguna forma, una combinacin de redirecciones de la entrada y la salida. Su principio es el de un tubo fsico, de aqu el nombre: un proceso enva datos por un extremo del tubo y otro proceso lee los datos en el otro extremo. El operador de la tubera es |. Volvamos al ejemplo anterior de la lista de archivos. Suponga que Usted quiere encontrar directamente cuantos archivos hay sin tener que almacenar la lista en un archivo temporal, entonces Usted usara el comando siguiente:
ls imagenes/*.png | wc -l

4. Usted podra creer que decir los archivos que terminan en .png en vez de las imgenes PNG es una locura. Sin embargo, una vez ms, los archivos bajo UNIX slo tienen una extensin por convencin: de ninguna manera las extensiones denen un tipo de archivo. Un archivo que termina en .png podra ser perfectamente una imagen JPEG, una aplicacin, un archivo de texto o cualquier otro tipo de archivo. Lo mismo es cierto tambin bajo Windows !

26

Captulo 3. Introduccin a la Lnea de comandos lo cual signica que la salida estndar del comando ls (es decir, la lista de archivos) se redirecciona a la entrada estndar del comando wc. As, Usted obtiene el resultado deseado. Usted tambin puede construir directamente una lista de archivos sin las extensiones usando el comando siguiente:
ls imagenes/*.png | sed -e s/\.png$//g >la_lista

o, si desea consultar la lista directamente sin almacenarla en un archivo:


ls imagenes/*.png | sed -e s/\.png$//g | less

Las tuberas y las redirecciones no estn limitadas solamente a textos que pueden ser ledos por seres humanos. Por ejemplo, el comando siguiente enviado desde una Terminal:
xwd -root | convert - ~/mi_escritorio.png

enviar una captura de pantalla de su escritorio al archivo mi_escritorio.png5 en su directorio personal.

3.5. El completado de la l nea de comandos


El completado es una funcionalidad muy til, y todos los shells modernos (bash, inclusive) la tienen. Su rol es darle al usuario el menor trabajo posible. La mejor manera de ilustrarlo es con un ejemplo.

3.5.1. Ejemplo
Suponga que su directorio personal contiene un archivo cuyo nombre es archivo_con_un_nombre_muy_largo, y Usted quiere mirarlo. Suponga que Usted tambin tiene en el mismo directorio otro archivo denominado archivo_texto. Usted est en su directorio personal. As que Usted ingresa la secuencia siguiente:
$ less ar<TAB>

(es decir, ingresa less ar y luego presiona la tecla Tab). El shell ahora extender la lnea de comandos por Usted:
$ less archivo_

y tambin le dar la lista de elecciones posibles (en su conguracin predeterminada, que se puede personalizar). Luego ingrese la siguiente secuencia de teclas:
less archivo_c<TAB>

y el shell extender la lnea de comandos para darle el resultado que Usted quiere:
less archivo_con_un_nombre_muy_largo

Entonces, todo lo que necesita hacer es presionar la tecla Intro para conrmar y leer el archivo.

3.5.2. Otros mtodos de completado e


La tecla Tab no es la nica manera de activar el completado, aunque es la ms comn. Como regla general, la palabra a completar ser el nombre de un comando para la primera palabra de la lnea de comandos (nsl<TAB> dar nslookup), y el nombre de un archivo para todos los dems parmetros, a menos que la palabra est precedida por un caracter mgico como ~, @ o $, en cuyo caso el shell intentar completar, respectivamente, un nombre de usuario, una mquina o una variable de entorno6. Tambin hay un caracter mgico para completar el nombre de un archivo (/) y un comando para volver a llamar un comando de la historia (!) Las otras dos formas de activar el completado son las secuencias Esc-<x> y Ctrl+x <x>, donde <x> es uno de los caracteres mgicos ya mencionados. Esc-<x> intentar el completado de manera nica; si falla completar
5. S, de hecho, ser una imagen PNG (Siempre y cuando tenga instalado el paquete ImageMagick ...). 6. Recuerde: UNIX diferencia entre maysculas y minsculas. La variable de entorno HOME y la variable de entorno home no son la misma variable.

27

Captulo 3. Introduccin a la Lnea de comandos la palabra con la subcadena ms larga posible de la lista de opciones. Un bip signica que la opcin no es nica o simplemente que no hay opcin correspondiente. La secuencia Ctrl+x <x> muestra la lista de opciones posibles sin intentar completado alguno. Presionar la tecla Tab es lo mismo que presionar sucesivamente Esc<x> y Ctrl+x <x>, donde el caracter mgico depende del contexto. Por lo tanto, una forma de ver todas las variables de entorno denidas es teclear la secuencia Ctrl+x $ en una lnea en blanco. Otro ejemplo: si desea ver la pgina Man del comando nslookup, simplemente teclea man nsl luego Esc-!, y el shell completar automticamente como man nslookup.

3.6. Inicio y manipulacin de procesos en segundo plano: el control de los jobs o


Usted debe haber notado que cuando ingresa un comando desde una Terminal, normalmente tiene que esperar a que el comando termine antes que el shell le devuelva el control. Esto signica que Usted envi el comando en primer plano. Sin embargo, hay ocasiones donde esto no es deseable. Suponga, por ejemplo, que Usted decidi copiar recursivamente un directorio grande a otro. Usted tambin decidi ignorar los errores, por lo que redirecciona el canal de error a /dev/null:
cp -R imagenes/ /shared/ 2>/dev/null

Un comando como ese puede tardar varios minutos para terminar su ejecucin por completo. Entonces, Usted tiene dos soluciones: la primera es violenta y signica detener (terminar) el comando y volver a hacerlo ms tarde cuando tenga el tiempo. Para hacer esto, presione las teclas Ctrl-C: esto le devolver el prompt. Pero espere, no lo haga! Siga leyendo. Suponga que Usted quiere ejecutar el comando mientras hace otra cosa al mismo tiempo. Entonces, la solucin es poner al proceso en segundo plano. Para hacer esto, presione las teclas Ctrl-Z para suspender al proceso:
$ cp imagenes/ shared/ 2>/dev/null # Teclee C-z aqu [1]+ Stopped cp -R imagenes/ /shared/ 2>/dev/null

y aqu est, de nuevo en el prompt. El proceso est entonces suspendido, esperando que Usted lo vuelva a iniciar (como muestra la palabra clave Stopped, detenido). Eso, por supuesto, es lo que Usted quiere hacer, pero en segundo plano. Ingrese bg (por BackGround, segundo plano) para obtener el resultado deseado:
$ bg [1]+ cp -R imagenes/ shared/ 2>/dev/null &

Entonces, el proceso comenzar a ejecutar nuevamente como una tarea en segundo plano, como lo indica el signo & (ampersand) al nal de la lnea. Usted volver al prompt y podr continuar trabajando. Un proceso que corre como tarea en el fondo, o en segundo plano, se denomina job. Por supuesto, Usted puede iniciar procesos directamente como tareas en segundo plano, precisamente agregando un caracter & al nal del comando. Por ejemplo, Usted puede iniciar el comando para copiar el directorio en segundo plano escribiendo:
cp -R imagenes/ /shared/ 2>/dev/null &

Si Usted lo desea, tambin puede volver este proceso a un primer plano y esperar a que termine ingresando fg (ForeGround, primer plano). Para volverlo al segundo plano, ingrese la secuencia Ctrl+z, bg. Usted puede iniciar varios jobs de esta forma: entonces, se asignar un nmero de job a cada comando. El comando jobs del shell lista todos los jobs asociados al shell corriente. El job precedido por un signo + indica el ltimo proceso iniciado como tarea de segundo plano. Para pasar a un job en particular al primer plano, Usted puede ingresar fg <n> donde <n> es el nmero de job, por ejemplo, fg 5. Note que Usted tambin puede suspender o lanzar aplicaciones de pantalla completa (si es que estn programadas correctamente) de esta forma, tales como less o un editor de texto como Vi, y pasarlos al primer plano cuando Usted lo desee.

28

Captulo 3. Introduccin a la Lnea de comandos

3.7. Palabras nales


Como puede ver, el shell es muy completo y usarlo efectivamente slo es cuestin de prctica. En este captulo relativamente largo, slo hemos mencionado algunos de los comandos disponibles: Mandrakelinux tiene miles de utilitarios, e incluso los usuarios ms experimentados no los usan a todos. Hay herramientas para todos los gustos y propsitos: Usted puede manipular imgenes (como convert, mencionado arriba, pero tambin, el modo por lotes de GIMP y todas las herramientas de manipulacin de pixmaps), sonidos (codicadores MP3, reproductores de CD de audio), para la grabacin de CD, programas de correo electrnico, clientes FTP e incluso navegadores de web (como lynx o links), sin olvidarnos de todas las herramientas de administracin. Incluso si existen aplicaciones grcas con funcionalidad equivalente, generalmente son interfaces grcas construidas sobre estos mismos utilitarios. Adems, los utilitarios de la lnea de comandos tienen la ventaja de poder operar en modo no interactivo: Usted puede comenzar a escribir un CD y luego desconectarse del sistema con la conanza que se efectuar la grabacin (ver la pgina Man nohup(1) o la de screen(1)).

29

Captulo 3. Introduccin a la Lnea de comandos

30

Cap tulo 4. La edicin de texto: Emacs y VI o


Como se dijo en la introduccin, la edicin de texto1 es una caracterstica fundamental en el uso de un sistema UNIX. Los dos editores a los que vamos a echar un vistazo pueden parecer un poco difciles al principio, pero una vez que entendi las bases, ambos pueden resultar ser herramientas potentes. Esto se debe en particular a los mltiples modos de edicin que estn disponibles, los cuales brindan caractersticas de edicin especcas para una gran variedad de tipos de archivo (perl, C++, XML, etc.).

4.1. Emacs
Emacs es probablemente el editor de texto ms potente que existe. Puede hacer absolutamente de todo y es extensible innitamente gracias a su lenguaje de programacin incorporado, basado en lisp. Con Emacs, puede navegar por la web, leer su correo, tomar parte en foros de discusin, hacer el caf, y as sucesivamente. Esto no es para decir que en este captulo aprender a hacer todo eso, pero tendr un buen comienzo abriendo Emacs, editando uno o ms archivos, guardndolos y saliendo de Emacs. Si, luego de leer esto, desea aprender ms acerca de Emacs, puede echar un vistazo a este Tutorial de introduccin a GNU Emacs (http://www.lib.uchicago.edu/keith/tcl-course/emacs-tutorial.html) (en ingls).

4.1.1. Presentacin breve o


Emacs se invoca de la manera siguiente:
emacs [archivo] [archivo ...]

Emacs abrir cada archivo ingresado como argumento en un buffer diferente, con un mximo de dos buffers visibles a la vez. Si arranca Emacs sin especicar archivos en la lnea de comandos se le presentar el buffer *scratch*. Si est en X, tambin tendr disponible un men, pero en este captulo nos concentraremos estrictamente a trabajar con el teclado.

4.1.2. Comenzando
Es tiempo de poner manos a la obra. Para nuestro ejemplo, comencemos abriendo dos archivos, archivo1 y archivo2. Si estos archivos no existen, sern creados tan pronto como Usted escriba algo en ellos:
$ emacs archivo1 archivo2

Al teclear ese comando obtendr la ventana siguiente:

1. Editar texto signica modicar el contenido de un archivo que slo contiene letras, dgitos, y signos de puntuacin. No contiene informacin de puesta en pgina tal como tipografa, espaciado, etc. Tales archivos pueden ser mensajes electrnicos, cdigo fuente de programas, documentos, o incluso archivos de conguracin.

31

Captulo 4. La edicin de texto: Emacs y VI

Figura 4-1. Editando dos archivos a la vez Como puede ver, se crearon dos buffers. Tambin est presente un tercero en la parte inferior de la pantalla (donde se ve (New file)); este es el mini-buffer. Usted no puede acceder directamente a este buffer. Emacs debe invitarlo durante las entradas interactivas. Para cambiar el buffer corriente teclee Ctrl-X-O. Puede ingresar texto como en un editor normal, y borrar caracteres con la tecla Supr o la tecla Retroceso. Para desplazarse por ah, puede usar las teclas de las echas, as como tambin estas otras combinaciones de teclas: Ctrl-A para ir al principio de la lnea, Alt-< para ir al principio del buffer y Alt-> para ir al nal del mismo. Hay muchas otras combinaciones, incluso para cada una de las teclas de las echas2. Tan pronto como quiera guardar los cambios hechos en un archivo, ingrese Ctrl-X Ctrl-S, o si desea grabar el contenido del buffer en otro archivo, ingrese Ctrl-X Ctrl-W y Emacs le pedir el nombre del archivo en el cual se debera escribir el contenido del buffer. Puede usar el completado para hacer esto.

4.1.3. Manipulacin de los buers o


Si lo desea, Usted puede mostrar un buffer solo en la pantalla. Hay dos formas de hacer esto:

Si Usted est en el buffer que quiere ocultar: ingrese Ctrl-X 0. Si Usted est en el buffer que quiere conservar en la pantalla: ingrese Ctrl-X 1.

Por lo tanto, hay dos maneras de restaurar el buffer que desea en la pantalla:

ingrese Ctrl-X B e introduzca el nombre del buffer que quiere, o ingrese Ctrl-X Ctrl-B, entonces se abrir un buffer nuevo, denominado *Buffer List*; se puede desplazar por este buffer usando la secuencia Ctrl-X O, luego seleccione el buffer que desea y presione la tecla Intro, o si no ingrese el nombre del buffer en el mini-buffer. El buffer *Buffer List* vuelve a segundo plano una vez que Usted ha hecho su eleccin.

Si ha nalizado con un archivo y desea deshacerse del buffer asociado, ingrese Ctrl-X K. Entonces Emacs le preguntar qu buffer debe cerrar. Predeterminadamente, es el nombre del buffer en el cual Usted se encuentra en ese momento; si desea deshacerse de un buffer que no sea el propuesto, ingrese su nombre directamente o bien presione Tab: Emacs abrir entonces otro buffer ms denominado *Completions* dando la lista de elecciones posibles. Conrme su eleccin con la tecla Intro. Tambin puede restaurar dos buffers visibles en la pantalla al mismo tiempo; para hacer esto ingrese Ctrl-X 2. Predeterminadamente, el nuevo buffer creado ser una copia del buffer corriente (lo que le permite, por ejemplo, editar un archivo grande en varios lugares a la vez), y simplemente proceder como se describi anteriormente para moverse entre los buffers.
2. Emacs ha sido diseado para funcionar en una gran variedad de mquinas, algunas de las cuales incluso no tienen teclas de las echas en el teclado. Esto es incluso ms cierto en Vi.

32

Captulo 4. La edicin de texto: Emacs y VI Puede abrir otros archivos en cualquier momento, usando Ctrl-X Ctrl-F. Emacs le pedir el nombre del archivo y Usted puede volver a utilizar el completado si lo encuentra ms conveniente.

4.1.4. Copiar, cortar, pegar, buscar


Suponga que estamos en la situacin de la Figura 4-2.

Figura 4-2. Emacs antes de copiar el bloque de texto Primero, necesitar seleccionar el texto que desea copiar. En este ejemplo, deseamos copiar toda la oracin. El primer paso es poner una marca al comienzo del rea. Asumiendo que el cursor est en la posicin donde se encuentra en Figura 4-2, la secuencia de comandos sera Ctrl-Espacio (Ctrl y la barra espaciadora). Emacs entonces mostrar el mensaje Mark set en el mini-buffer. Luego muvase al principio de la lnea con CtrlA. El rea seleccionada para copiar o cortar es toda el rea que se encuentra entre la marca y la posicin corriente del cursor, entonces en este caso ser toda la lnea. Luego, ingrese Alt-W (para copiar) o Ctrl-W (para cortar). Si Usted copia, Emacs volver brevemente a la posicin de la marca, para que Usted pueda ver el rea seleccionada. Finalmente vaya al buffer sobre el cual quiere copiar el texto, e ingrese Ctrl-Y. Esto le dar el resultado siguiente:

Figura 4-3. Copiando texto con Emacs De hecho, lo que Usted acaba de hacer es copiar texto al kill ring (anillo de los muertos) de Emacs: este kill ring contiene todas las regiones copiadas o cortadas desde que se inici Emacs. Cualquier regin copiada o cortada 33

Captulo 4. La edicin de texto: Emacs y VI se pone al comienzo del kill ring. La secuencia Ctrl-Y simplemente pega la regin que est en el tope. Si desea tener acceso a otras regiones, presione Ctrl-Y, y luego Alt-Y hasta que obtiene el texto deseado. Para buscar texto, vaya al buffer deseado e ingrese Ctrl-S. Entonces, Emacs le pedir la cadena a buscar. Para comenzar una bsqueda nueva con la misma cadena, todava en el buffer corriente, ingrese Ctrl-S de nuevo. Cuando Emacs llega al nal del buffer y no encuentra ms ocurrencias, puede teclear Ctrl-S de nuevo para volver a iniciar la bsqueda desde el principio del buffer. Al presionar la tecla Intro se naliza la bsqueda. Para buscar y reemplazar, ingrese Alt-%. Emacs le pedir la cadena a buscar, con qu reemplazarla, y le pide conrmacin para cada ocurrencia que encuentra. Para deshacer, teclee Ctrl-X U lo cual deshace la operacin previa. Puede deshacer tantas operaciones como desee.

4.1.5. Salir de Emacs


El atajo para salir de Emacs es Ctrl-X Ctrl-C. Si no ha guardado sus cambios, Emacs le preguntar si desea o no guardar los buffers.

4.2. VI: el ancestro


Vi fue el primer editor de pantalla completa que existi. Es uno de los programas al que apuntan los detractores de UNIX, pero tambin uno de los argumentos principales de sus defensores: si bien es complicado de aprender, tambin es una herramienta extremadamente potente una vez que uno se acostumbra a usarlo. Con unos pocos tecleos, un usuario de Vi puede mover montaas y, aparte de Emacs, pocos editores de texto pueden decir lo mismo.

La versin provista con Mandrakelinux es de hecho, Vim, por VI iMproved (VI Mejorado), pero lo llamaremos Vi a lo largo de este captulo. Si desea aprender ms acerca de Vi, puede echar un vistazo a esta Introduccin prctica al editor Vi (http: //www.library.yale.edu/wsg/docs/vi_hands_on/) (en ingls) o a la pgina principal de Vim (http://www. vim.org/).

4.2.1. Modo de insercin, Modo comando, Modo ex... o


Primero, necesitamos iniciar Vi, lo cual se hace exactamente como con Emacs. As que, volvamos a nuestros dos archivos e ingresemos:
$ vi archivo1 archivo2

En este punto, Usted se encontrar frente a una ventana que se parece a la siguiente:

Figura 4-4. Situacin inicial en VIM

34

Captulo 4. La edicin de texto: Emacs y VI Ahora Usted est en modo comando frente al primer archivo abierto. En este modo, no puede insertar texto en un archivo. Para hacer esto, debe pasar a modo insercin. Aqu tiene algunos atajos para insertar texto:

a e i: para insertar texto antes y despus del cursor, respectivamente (A e I insertan texto al nal y al principio de la lnea corriente); o y O: para insertar texto debajo y por encima de la lnea corriente.

En modo de insercin, Usted ver aparecer la cadena --INSERT-- en la base de la pantalla (de esta forma, Usted sabr en que modo se encuentra). Este es el nico modo que le permitir insertar texto. Para volver al modo comando, presione la tecla Esc. En modo de insercin, puede usar las teclas Retroceso y Supr para borrar texto a medida que avanza. Para desplazarse por el texto, tanto en modo comando como en modo insercin, utilice las teclas de las echas. Tambin hay otras combinaciones de teclas en modo comando, que veremos ms adelante. Usted accede al modo ex presionando la tecla : en modo comando. En la base de la pantalla aparecer :, y all se posicionar el cursor. Vi considerar todo lo que Usted ingrese subsecuentemente, hasta la tecla Intro, como un comando ex. Si borra el comando y los : que ingres, volver al modo comando y el cursor retornar a su posicin original en el texto. Para grabar los cambios hechos a un archivo, se ingresa la secuencia :w en modo comando. Si desea grabar el contenido del buffer en otro archivo, ingrese :w <nombre_de_archivo>

4.2.2. Manipulacin de los buers o


Para moverse, en el mismo buffer, por entre los archivos cuyos nombres se pasaron en la lnea de comandos, teclee :next para moverse al archivo siguiente y :prev para moverse al archivo previo. Puede usar :e <nombre_de_archivo> tambin, lo cual le permite tanto cambiar al archivo deseado, si es que ya est abierto, como tambin abrir otro archivo. Tambin puede usar el completado. Puede tener varios buffers visibles en la pantalla a la vez, como con Emacs. Para esto, use el comando :split. Para cambiar de buffer, ingrese Ctrl-w j para ir al buffer de abajo o Ctrl-w k para ir al de arriba. Tambin puede usar las teclas de las echas para arriba y para abajo, en lugar de j o k. El comando :close oculta un buffer, el comando :q lo cierra. Debe tener presente que si intenta ocultar o cerrar un buffer sin guardar los cambios, el comando no se llevar a cabo y Vi mostrar este mensaje: No write since last change (use ! to override) (no se escribi desde el ultimo cambio (use ! para forzar el comando)) En este caso, haga lo que se le dice e ingrese :q! o :close!.

4.2.3. Edicin de texto y comandos de desplazamiento o


Adems de las teclas Retroceso y Supr en modo de edicin, Vi tiene muchos otros comandos para borrar, copiar, pegar, y reemplazar texto en modo comando. Aqu, veremos algunos. Todos los comandos que se muestran aqu estn, de hecho, separados en dos partes: la accin a realizar y su efecto. La accin puede ser:

c: para cambiar (Change) o reemplazar; el editor borra el texto que se pide y vuelve al modo de insercin despus de este comando; d: para borrar (Delete); y: para copiar (Yank). Lo veremos en la seccin siguiente. .: repite la ltima accin.

El efecto dene al grupo de caracteres sobre los cuales acta el comando.

h, j, k, l: un caracter a la izquierda, abajo, arriba, a la derecha3 respectivamente;


Un atajo para d l (borrar un caracter hacia adelante) es x; un atajo para d h es X; d d borra la lnea corriente.

3.

35

Captulo 4. La edicin de texto: Emacs y VI


e, b, w: hasta el nal (respecto al comienzo) de la palabra corriente; del comienzo de la palabra siguiente; ^, 0, $: hasta el primer caracter no blanco de la lnea corriente, hasta el comienzo de la lnea corriente, hasta el nal de la lnea corriente; f <x>: hasta la prxima ocurrencia del caracter <x>; por ejemplo, f e desplaza el cursor hasta la prxima ocurrencia del caracter e; / <cadena>, ? <cadena>: hasta la prxima ocurrencia de la cadena o expresin regular <cadena>, y lo mismo yendo hacia atrs en el archivo; por ejemplo, /pepe mueve el cursor hasta la prxima ocurrencia de la palabra pepe; {, }: hasta el comienzo, hasta el nal, del prrafo corriente; G, H: hasta el nal del archivo, hasta el comienzo de la pantalla.

Cada uno de estos caracteres de efecto o comandos de movimiento puede estar precedido por un nmero de repeticin. G referencia al nmero de lnea en el archivo. A partir de esto, Usted puede hacer toda clase de combinaciones. Algunos ejemplos:

6b: se mueve 6 palabras hacia atrs; c8fk: borrar todo el texto hasta la octava ocurrencia del caracter k y luego pasar a modo de insercin; 91G: ir a la lnea 91 del archivo; d3$: borra hasta el nal de la lnea corriente ms las dos lneas siguientes.

Si bien muchos de estos comandos no son muy intuitivos, pero como siempre, el mejor mtodo es practicarlos. Aunque puede ver que la expresin mover montaas con unas pocas teclas no es tan exagerada.

4.2.4. Cortar, copiar, pegar


Vi tiene un comando para copiar texto que ya hemos visto: el comando y. Para cortar texto, simplemente use el comando d. Hay 27 memorias para almacenar texto: una memoria annima y 26 memorias que llevan el nombre de las 26 letras minsculas del alfabeto ingls. Para usar la memoria annima Usted ingresa el comando tal cual. As, el comando y12w copia a la memoria annima las 12 palabras que estn despus del cursor4. Si Usted quiere cortar este rea, use d12w. Para usar una de las 26 memorias nombradas, ingrese la secuencia "<x> antes del comando, donde <x> da el nombre de la memoria. Entonces, para copiar las mismas 12 palabras en la memoria k, Usted puede ingresar "ky12w, y "kd12w para cortarlas. Para pegar el contenido de la memoria annima, Usted usa los comandos p o P (por Paste, Pegar), para insertar texto despus o antes del cursor, respectivamente. Para pegar el contenido de una memoria nombrada, use "<x>p o "<x>P de la misma forma (por ejemplo, "dp pegar el contenido de la memoria d despus del cursor) Veamos un ejemplo:

Figura 4-5. VIM, antes de copiar el bloque de texto


4. Pero slo si el cursor est posicionado al comienzo de la primer palabra!

36

Captulo 4. La edicin de texto: Emacs y VI Para efectuar esta accin, nosotros:


volveremos a copiar las primeras 6 palabras de la oracin en la memoria r (por ejemplo): "ry6w 5; pasaremos al buffer archivo2, que est ubicado abajo: Ctrl-w j; pegaremos el contenido de la memoria r antes del cursor: "rp.

Obtenemos el resultado esperado, como se muestra en Figura 4-6.

Figura 4-6. VIM, despus de copiar un bloque de texto La bsqueda de texto es muy simple: en modo comando, Usted simplemente ingresa / seguida de la cadena a buscar, y luego presiona la tecla Intro. Por ejemplo, /fiesta buscar la cadena fiesta desde la posicin corriente del cursor. Presionar n lo lleva a la prxima ocurrencia, y si llega al nal del archivo, la bsqueda comenzar nuevamente por el principio. Para iniciar una bsqueda hacia atrs, use ? en vez de /.

4.2.5. Salir de VI
El comando para salir, es :q (de hecho, este comando cierra el buffer activo, como hemos visto, pero si es el nico buffer presente, saldr de Vi). Hay un atajo: la mayora de las veces, Usted edita un archivo solo. Entonces, para salir utilizar:

:wq para guardar los cambios y salir (una solucin ms rpida es ZZ), o :q! para salir sin grabar.

Habr notado que si tiene varios buffers, :wq escribir el buffer activo y luego lo cerrar.

4.3. Una ultima palabra...


Por supuesto, aqu hemos dicho mucho ms de lo necesario (despus de todo, el primer propsito era editar un archivo de texto), pero tambin es para mostrarle algunas de las posibilidades de cada uno de estos editores. Hay mucho ms para decir de ellos, como lo prueba el nmero de libros dedicados a estos dos editores de texto. Tmese el tiempo para absorber toda esta informacin, opte por uno de ellos, o aprenda slo lo que crea necesario. Pero por lo menos, sabe que cuando quiera ir ms lejos, lo podr hacer.

5.

y6w signica literalmente: Yank 6 words .

37

Captulo 4. La edicin de texto: Emacs y VI

38

Cap tulo 5. Los utilitarios de la l nea de comandos


El propsito de este captulo es introducir un nmero pequeo de herramientas de la lnea de comandos que pueden resultar ser tiles para el uso diario. Por supuesto, puede omitir este captulo si tiene la intencin de usar slo un entorno grco, pero un pequeo vistazo puede cambiar su opinin. Cada comando se ilustrar con un ejemplo, pero este captulo pretende ser un ejercicio para que Usted comprenda por completo sus funciones y usos.

5.1. Operaciones y ltrado de archivos


La mayora del trabajo de lnea de comandos se realiza sobre archivos. En esta seccin discutimos cmo mirar y ltrar el contenido de archivos, tomar la informacin necesaria de los archivos utilizando un nico comando, y clasicar el contenido de archivos.

5.1.1. cat, tail, head, tee: Comandos de impresin de archivos o


Estos comandos tienen casi la misma sintaxis: nombre_del_comando [opciones] [archivo(s)], y se pueden usar en una tubera. Todos se utilizan para imprimir parte de un archivo de acuerdo con ciertos criterios. El utilitario cat concatena archivos imprimiendo los resultados en la salida estndar. Este es uno de los comandos ms ampliamente utilizados. Usted puede usar:
# cat /var/log/mail/info

para imprimir, por ejemplo, el contenido del archivo de registro de un demonio de correo a la salida estndar1. El comando cat tiene una opcin muy til (-n) que le permite escribir los nmeros de las lneas. Algunos archivos, como los archivos de registro de los demonios (si es que estn corriendo) por lo general tienen un tamao enorme2 y no es muy til imprimirlos por completo en la pantalla. Por lo general Usted slo necesita ver algunas lneas del archivo. Puede utilizar el comando tail para esto. El comando siguiente imprimir, de manera predeterminada, las ltimas 10 lneas del archivo /var/log/mail/info:
# tail /var/log/mail/info

Puede usar la opcin -n para mostrar las ltimas N lneas de un archivo. Por ejemplo, para mostrar las ltimas 2 lneas ingrese:
# tail -n2 /var/log/mail/info

El comando head es similar a tail, pero imprime las primeras lneas de un archivo. El siguiente comando imprimir, de manera predeterminada, las primeras 10 lneas del archivo /var/log/mail/info:
# head /var/log/mail/info

Al igual que con tail Usted puede usar la opcin -n para especicar la cantidad de lneas a imprimir. Por ejemplo, para imprimir las primeras 2 ingrese:
# head -n2 /var/log/mail/info

Tambin puede usar estos comandos juntos. Por ejemplo, si desea mostrar slo las lneas 9 y 10, puede usar un comando donde primero el comando head va a seleccionar las primeras 10 lneas de un archivo y pasarlas a travs de una tubera al comando tail.
# head /var/log/mail/info | tail -n2

La ltima parte luego seleccionar las ltimas 2 lneas y las imprimir en la pantalla. De la misma manera, puede seleccionar la lnea nmero 20, contada desde el nal de un archivo:
1. Algunos ejemplos de esta seccin estn basados en trabajo real con archivos de registro de algunos servidores (servicios, demonios). Debe asegurarse que syslogd (permite el registro de los demonios) y el demonio correspondiente (en este ejemplo Postx) estn activos, y que Usted trabaja como root. Por supuesto, siempre puede aplicar nuestros ejemplos a otros archivos. 2. Por ejemplo, el archivo /var/log/mail/info contiene informacin acerca de todos los correos enviados, mensajes acerca de la recuperacin de correo por parte de los usuarios con el protocolo POP, etc.

39

Captulo 5. Los utilitarios de la lnea de comandos


# tail -n20 /var/log/mail/info | head -n1

En este ejemplo, le decimos a tail que seleccione las ltimas 20 lneas y las pase por una tubera a head. Luego, el comando head imprime la primer lnea de los datos obtenidos. Supongamos que deseamos imprimir el resultado del ltimo ejemplo en la pantalla y, a la vez, guardarlo en el archivo resultados.txt. El utilitario tee nos puede ayudar. La sintaxis del mismo es:
tee [opciones] [archivo]

Ahora podemos cambiar el comando anterior de esta manera:


# tail -n20 /var/log/mail/info | head -n1 | tee resultados.txt

Tomemos otro ejemplo. Deseamos seleccionar las ltimas 20 lneas, guardarlas en el archivo resultados.txt, pero imprimir en pantalla slo la primera de las 20 lneas seleccionadas. Entonces, deberamos teclear:
# tail -n20 /var/log/mail/info | tee resultados.txt | head -n1

El comando tee posee una opcin til (-a) que le permite aadir datos a un archivo existente. Volvamos al comando tail. Por lo general los archivos de registro varan dinmicamente debido a que el demonio asociado a dicho registro constantemente aade acciones y eventos al archivo de registro. Entonces, si desea mirar interactivamente los cambios al archivo de registro puede aprovechar la opcin -f:
# tail -f /var/log/mail/info

En este caso, todos los cambios en el archivo /var/log/mail/info se imprimirn de inmediato en la pantalla. Utilizar el comando tail con la opcin -f es muy til cuando desea saber cmo funciona su sistema. Por ejemplo, mirando a travs del archivo de registro /var/log/messages, puede estar al tanto con los mensajes del sistema y varios demonios. En la prxima seccin veremos cmo podemos utilizar grep como ltro para separar los mensajes de Postx de aquellos mensajes que provienen de otros servicios.

5.1.2. grep: Ubicar cadenas de caracteres en archivos


Ni el acrnimo (General Regular Expression Parser, Analizador General de Expresiones Regulares), ni el nombre son muy intuitivos, pero su uso es simple. grep busca el patrn pasado como argumento en uno o ms archivos. La sintaxis es:
grep [opciones] <patrn> [uno o ms archivos] o a

Si se mencionan varios archivos, los nombres de los mismos precedern a cada lnea que muestra los resultados que se corresponden con el criterio de bsqueda. Use la opcin -h para ocultar estos nombres; use la opcin -l para obtener slo los nombres de archivo en los cuales se cumple la condicin de bsqueda. El patrn es una expresin regular, aunque generalmente consiste en una palabra simple. Las opciones usadas ms frecuentemente son las siguientes:

-i: realizar una bsqueda que ignore la capitalizacin. (es decir, que ignore la diferencia entre las maysculas y las minsculas); -v: bsqueda inversa. Mostrar las lneas que no se corresponden con el patrn; -n: mostrar, para cada lnea encontrada, el nmero de lnea; -w: le dice a grep que el patrn debe corresponderse con una palabra completa, es decir debe aparecer tal cual y no como parte de otra palabra.

Volvamos entonces a analizar el archivo de registro del demonio de correo. Deseamos encontrar todas las lneas en el archivo /var/log/mail/info que contengan el patrn postx. Entonces tecleamos este comando:
# grep postfix /var/log/mail/info

El comando grep se puede utilizar en una tubera. Por lo tanto, podemos obtener el mismo resultado que en el ejemplo previo haciendo esto:

40

Captulo 5. Los utilitarios de la lnea de comandos


# cat /var/log/mail/info | grep postfix

Si deseamos encontrar todas las lneas que no contienen el patrn postx, deberamos usar la opcin -v:
# grep -v postfix /var/log/mail/info

Supongamos que deseamos encontrar todos los mensajes acerca de correos enviados satisfactoriamente. En este caso tenemos que ltrar todas las lneas que fueron aadidas al archivo de registro por el demonio de correo (contiene el patrn postx) y deben contener un mensaje acerca del envo satisfactorio (status=sent):
# grep postfix /var/log/mail/info | grep status=sent

En este caso se utiliza a grep dos veces. Esto est permitido, pero no es muy elegante. Podemos obtener el mismo resultado utilizando el utilitario fgrep. Primero, debemos crear un archivo que contiene los patrones escritos en una columna. Se puede crear tal archivo de la manera siguiente (usamos el nombre patrones.txt):
# echo -e status=sent\npostfix > ./patrones.txt

Luego llamamos al comando siguiente donde usamos el archivo patrones.txt con una lista de patrones y el utilitario fgrep en vez de la doble llamada a grep:
# fgrep -f ./patrones.txt /var/log/mail/info

El archivo ./patrones.txt puede tener tantos patrones como Usted desee. Cada uno tiene que estar tecleado en una nica lnea. Por ejemplo, para seleccionar los mensajes acerca de los envos satisfactorios de correo a peter@mandrakesoft.com, ser suciente aadir esta direccin electrnica en nuestro archivo ./patrones. txt ejecutando el comando siguiente:
# echo peter@mandrakesoft.com >> ./patrones.txt

Est claro que puede combinar grep con tail y head. Si deseamos encontrar los mensajes sobre los ltimos correos enviados a peter@mandrakesoft.com, excepto el ltimo, tecleamos:
# fgrep -f ./patrones.txt /var/log/mail/info | tail -n2 | head -n1

Aqu aplicamos el ltro descrito arriba y colocamos el resultado en una tubera para los comandos tail y head. Los mismos seleccionan los ltimos valores de los datos, excepto el ltimo.

5.1.3. wc: Contando elementos en archivos


El comando wc (Word Count, Cuenta de palabras) se usa para calcular la cantidad de cadenas y palabras en archivos. Tambin es til para contar bytes, caracteres, y la longitud de la lnea ms larga. Su sintaxis es:
wc [opciones] [archivo(s)]

Las siguientes opciones son tiles:


-l: imprimir la cantidad de lneas nuevas; -w: imprimir la cantidad de palabras; -m: imprimir la cantidad total de caracteres; -c: imprimir la cantidad de bytes; -L: imprimir la longitud de la lnea ms larga en el texto.

El comando wc imprime la cantidad de lneas nuevas, palabras y caracteres de manera predeterminada. Aqu tiene algunos ejemplos de uso: Si deseamos encontrar la cantidad de usuarios en nuestro sistema, podemos teclear:
$wc -l /etc/passwd

Si deseamos saber la cantidad de CPUs en nuestro sistema, tecleamos:


$grep "model name" /proc/cpuinfo | wc -l

41

Captulo 5. Los utilitarios de la lnea de comandos En la seccin anterior obtuvimos una lista de mensajes acerca de los correos enviados satisfactoriamente a las direcciones listadas en nuestro archivo ./patrones.txt. Si deseamos saber la cantidad de dichos mensajes, podemos enviar los resultados de nuestro ltro por una tubera al comando wc:
# fgrep -f ./patrones.txt /var/log/mail/info | wc -l

5.1.4. sort: Clasicando el contenido de los archivos


Aqu tiene la sintaxis de este poderoso utilitario de clasicacin3:
sort [opciones] [archivo(s)]

Consideremos clasicar parte de el archivo /etc/passwd. Como puede ver este archivo no est clasicado:
$ cat /etc/passwd

Deseamos clasicarlo por el campo login. Entonces tecleamos:


$ sort /etc/passwd

El comando sort clasica datos de manera ascendente comenzando por el primer campo (en nuestro caso, el campo login) de manera predeterminada. Si deseamos clasicar los datos de manera descendente, usamos la opcin -r:
$ sort -r /etc/passwd

Cada usuario tiene su propio UID escrito en el archivo /etc/passwd. Clasiquemos un archivo de manera ascendente con el campo UID:
$ sort /etc/passwd -t":" -k3 -n

Aqu utilizamos las siguientes opciones de sort:


-t":": le dice a sort que el smbolo : es el separador de campos; -k3: signica que la clasicacin debe hacerse segn la tercer columna; -n: dice que la clasicacin ocurrir sobre datos numricos, no alfabticos.

Se puede hacer lo mismo de manera inversa:


$ sort /etc/passwd -t":" -k3 -n -r

Note que sort tiene dos opciones importantes:


-u: realiza una clasicacin estricta: los campos de clasicacin duplicados se descartan; -f: ignorar capitalizacin (trata igual a las minsculas y a las maysculas).

Finalmente, si deseamos encontrar el usuario con el mayor UID podemos usar el comando siguiente:
$ sort /etc/passwd -t":" -k3 -n | tail -n1

donde clasicamos al archivo /etc/passwd de manera ascendente de acuerdo a la columna UID, y enviamos el resultado por medio de una tubera al comando tail que imprime el primer valor de la lista clasicada.

3.

Discutimos a sort brevemente aqu debido a que se podran escribir libros completos acerca de sus caractersticas.

42

Captulo 5. Los utilitarios de la lnea de comandos

5.2. nd: Busca archivos en funcin de ciertos criterios o

find es un utilitario de UNIX muy antiguo. Su rol es recorrer recursivamente uno o ms directorios y encontrar archivos que se correspondan con un cierto conjunto de criterios en esos directorios. Aunque es muy til, su sintaxis es verdaderamente arcana, y usarlo requiere cierta prctica. La sintaxis general es:
find [opciones] [directorios] [criterio] [accin] o

Si no especica directorio alguno, find buscar en el directorio corriente. Si no especica el criterio, esto es equivalente a verdadero, por lo que se encontrarn todos los archivos. Las opciones, criterios y acciones son tan numerosas que solo mencionaremos algunas de cada una. Comencemos por las opciones:

-xdev: No extender la bsqueda a los directorios ubicados en otros sistemas de archivos. -mindepth <n>: Descender al menos <n> niveles bajo el directorio especicado antes de comenzar a buscar los archivos. -maxdepth <n>: Buscar los archivos que se encuentran a lo sumo n niveles bajo el directorio especicado. -follow: Seguir los vnculos simblicos si apuntan a directorios. Predeterminadamente, find no los sigue. -daystart: Cuando se usan las pruebas relativas a la fecha y la hora (ver debajo), toma el comienzo del da corriente como etiqueta temporal en vez del predeterminado (24 horas antes de la hora corriente).

Un criterio puede ser una o ms de varias pruebas atmicas; algunas pruebas tiles son:

-type <tipo_archivo>: Busca los archivos de un tipo dado. tipo_archivo puede ser uno de: f (archivo regular), d (directorio), l (vnculo simblico), s (socket), b (archivo en modo de bloques), c (archivo en modo caracter) o p (tubera nombrada). -name <patrn>: Encontrar los archivos cuyo nombre se corresponde con el patrn dado. Con esta opcin, o se trata al patrn como un patrn de englobamiento del shell (consulte Patrones de englobamiento del shell, pgina 24). -iname <patrn>: Como -name, pero sin tener en cuenta la capitalizacin. o -atime <n>, -amin <n>: Encontrar los archivos a los que se ha accedido por ltima vez hace n das (-atime) o hace n minutos (-amin). Tambin puede especicar <+n> o <-n>, en cuyo caso la bsqueda se har para los archivos accedidos hace al menos o a lo sumo n das/minutos. -anewer <un_archivo>: Encontrar los archivos que han sido accedidos ms recientemente que el archivo un_archivo. -ctime <n>, -cmin <n>, -cnewer <archivo> Igual que para -atime, -amin y -anewer, pero se aplica a la ltima fecha en la cual se modic el contenido del archivo. -regex <patrn>: Como -name, pero patrn se trata como una expresin regular. o o -iregex <patrn>: Como -regex, pero sin distinguir entre maysculas y minsculas. o

Existen muchas otras pruebas, debe consultar nd(1) para ms detalles. Para combinar las pruebas, Usted puede utilizar uno de:

<c1> -a <c2>: Verdadero si tanto c1 como c2 son verdaderas; -a est implcito, por lo tanto puede ingresar <c1> <c2> <c3> si quiere que todas las pruebas c1, c2 y c3 sean verdaderas. <c1> -o <c2>: Verdadero si c1 o c2 o ambos son verdaderos. Note que -o tiene una precedencia menor que -a, por lo tanto si desea, por ejemplo, los archivos que verican los criterios c1 o c2 y verican el criterio c3, tendr que usar parntesis y escribir ( <c1> -o <c2> ) -a <c3>. Debe escapar (desactivar) los parntesis, ya que si no lo hace el shell los interpretar! -not <c1>: Invertir la prueba c1, por lo tanto -not <c1> es verdadero si c1 es falso.

Finalmente, puede especicar una accin para cada archivo encontrado. Las acciones ms usadas frecuentemente son:

-print: Simplemente imprime el nombre de cada archivo en la salida estndar. Esta es la accin predeterminada. -ls: Imprime en la salida estndar el equivalente de ls -ilds para cada archivo que encuentra.

43

Captulo 5. Los utilitarios de la lnea de comandos

-exec <lnea_de_comandos>: Ejecutar el comando lnea_de_comandos sobre cada archivo encontrado. La lnea de comandos lnea_de_comandos debe terminar con un ;, que deber desactivar para que el shell no lo interprete; la posicin del archivo se representa con {}. Vea los ejemplos de uso para entender mejor esto. -ok <comando>: Igual que -exec pero pedir conrmacin para cada comando.

Todava est aqu? Est bien, ahora practiquemos un poco, ya que todava es la mejor forma de entender a este monstruo. Digamos que quiere encontrar todos los directorios en /usr/share. Entonces ingresar:
find /usr/share -type d

Suponga que tiene un servidor HTTP, todos sus archivos HTML estn en /var/www/html, que coincide con su directorio corriente. Usted desea encontrar todos los archivos que no se modicaron en el ltimo mes. Debido a que tiene pginas de varios autores, algunos archivos tienen la extensin html y otros la extensin htm. Desea vincular estos archivos en el directorio /var/www/obsolete. Entonces ingresar4:
find \( -name "*.htm" -o -name "*.html" \) -a -ctime -30 \ -exec ln {} /var/www/obsolete \;

Est bien, este es uno un poco complejo y requiere una pequea explicacin. El criterio es este:
\( -name "*.htm" -o -name "*.html" \) -a -ctime -30

que hace lo que queremos: encuentra todos los archivos cuyos nombres terminan con .htm o con .html \( -name "*.htm" -o -name "*.html" \), y (-a) que no han sido modicados en los ltimos 30 das, lo que es ms o menos un mes (-ctime -30) Note los parntesis: aqu son necesarios, porque -a tiene una precedencia mayor. Si no hubiera parntesis alguno, se hubieran encontrado todos los archivos que terminen con .htm, y todos los archivos que terminen con .html y que no han sido modicados por un mes, que no es lo que nosotros queremos. Note tambin que los parntesis estn desactivados para el shell: si hubisemos puesto ( .. ) en vez de \( .. \), el shell los hubiese interpretado y tratado de ejecutar -name "*.htm" -o -name "*.html" en un subshell... Otra solucin podra haber sido poner los parntesis entre comillas simples o dobles, pero aqu es preferible una contrabarra ya que simplemente tenemos que aislar un caracter solo. Y nalmente, est el comando a ejecutar para cada uno de los archivos:
-exec ln {} /var/www/obsolete \;

Aqu tambin, tiene que desactivar el ; para el shell, ya que de no ser as el shell lo interpretara como un separador de comandos. Si no lo hace, find se quejar de que le falta un argumento a -exec. Un ltimo ejemplo: tiene un directorio enorme denominado /shared/images, con todo tipo de imgenes en l. Regularmente, Usted usa el comando touch para actualizar la fecha de un archivo denominado stamp en este directorio, para que tenga una referencia temporal. Usted quiere encontrar todas las imgenes JPEG en el mismo que son ms nuevas que el archivo stamp, y ya que Usted obtuvo las imgenes de varias fuentes, estos archivos tienen las extensiones jpg, jpeg, JPG o JPEG. Tambin quiere evitar buscar en el directorio old. Quiere que se le enve la lista de estos archivos por correo electrnico, y su nombre de usuario es peter:
find /shared/images -cnewer \ /shared/images/stamp \ -a -iregex ".*\.jpe?g" \ -a -not -regex ".*/old/.*" \ | mail peter -s "Imgenes nuevas" a

Por supuesto, este comando no es muy til si tiene que ingresarlo cada vez, y quisiera ejecutarlo regularmente... Puede programar la ejecucin de comandos.

5.3. Programar la ejecucin de comandos o


5.3.1. crontab: reportar o editar su archivo crontab
crontab es un comando que le permite ejecutar comandos a intervalos de tiempo regulares, con la ventaja adicional que no tiene que estar conectado al sistema y que el reporte de salida se le enva por correo electrnico.
4. Note que este ejemplo necesita que /var/www y /var/www/obsolete estn en el mismo sistema de archivos!

44

Captulo 5. Los utilitarios de la lnea de comandos Los intervalos se pueden especicar en minutos, horas, das, e incluso meses. Dependiendo de las opciones, crontab actuar diferentemente:

-l: Mostrar su archivo crontab corriente. -e: Editar su archivo crontab. -r: Eliminar su archivo crontab corriente. -u <usuario>: Aplicar una de las opciones de arriba para el usuario <usuario>. Slo root puede hacer esto.

Comencemos editando un crontab. Si ingresa crontab -e, estar frente a su editor de texto favorito si tiene denida la variable de entorno EDITOR o la variable de entorno VISUAL, en caso contrario se usar Vi. Una lnea de un archivo crontab se compone de seis campos. Los primeros cinco campos son los intervalos de tiempo para los minutos, horas, das en el mes, meses y das en la semana. El sexto campo es el comando a ejecutar. Las lneas que comienzan con un # se consideran como comentarios y sern ignoradas por crond (el programa que es responsable de ejecutar los archivos crontab). Aqu tiene un ejemplo de crontab:

Para poder imprimir lo que sigue con una tipograf legible, tenemos a que separar las l neas largas. Por lo tanto, algunos trozos deben ser ingresados en una unica l nea. Cuando se pone el caracter \ al nal de una l nea, esto signica que la l nea continua debajo. Esta convencin funciona en los archivos Makefile y en el shell, as o como tambin en otros contextos. e
# Si no quiere recibir correo electrnico simplemente o # ponga una almohadilla al comienzo de la siguiente lnea #MAILTO="su_direccin_electrnica" o o # # Hacer un reporte de todas las imgenes nuevas a a # las 14 hs. cada dos das, desde el ejemplo de # arriba - despus de eso, "retocar" el archivo de e # "estampa". El "%" se considera como una lnea # nueva, esto le permite poner varios comandos # en una misma lnea. 0 14 */2 * * find /shared/images \ -cnewer /shared/images/stamp \ -a -iregex ".*\.jpe?g" \ -a -not -regex \ ".*/old/.*"%touch /shared/images/stamp # # Cada Navidad, reproducir una meloda :) 0 0 25 12 * mpg123 $HOME/canciones/feliz_navidad.mp3 # # Imprimir la lista de compras cada martes a las 17 hs... 0 17 * * 2 lpr $HOME/lista_de_compras.txt

Hay muchas otras maneras de especicar los intervalos aparte de las que se muestran en este ejemplo. Por ejemplo, puede especicar un conjunto de valores discretos separados por comas (1,14,23) o un rango (115), o incluso una combinacin de ambos (1-10,12-20), o con un paso opcional (1-12,20-27/2) Ahora queda en sus manos encontrar comandos tiles para poner!

5.3.2. at: Programar un comando, pero solo una vez


Tambin podra querer ejecutar un comando un da dado, pero no regularmente. Por ejemplo, quiere que se le recuerde de una cita, hoy a las 18 horas. Usted emplea X, el paquete X11R6-contrib est instalado, y quiere que se le notique, por ejemplo, a las 17:30 hs. que debe irse. at es lo que Usted quiere aqu:
$ at 5:30pm # Ahora est frente al prompt "at" a at> xmessage "Hora de irse! Cita a las 18" # Presione C-d para at> <EOT> $

Se puede especicar la hora de diferentes maneras:

45

Captulo 5. Los utilitarios de la lnea de comandos

now +<intervalo>: Signica eso, ahora, ms un intervalo (Opcional. Si no se especica el intervalo signica ahora mismo). La sintaxis para el intervalo es <n> (minutes|hours|days|weeks|months) (minutos|horas|das|semanas|meses ; slo en ingls). Por ejemplo, puede especicar now + 1 hour (dentro de una hora), now + 3 days (dentro de tres das) y as sucesivamente. <hora> <da>: Especicar la fecha por completo. El parmetro <hora> es obligatorio. at es muy liberal en lo que acepta: por ejemplo, puede ingresar 0100, 04:20, 2am, 0530pm, 1800, o uno de los tres valores especiales: noon (medioda), teatime (la hora del t, 16 hs.) o midnight (medianoche). El parmetro <da> es opcional. Tambin puede especicarlo de diferentes maneras: 12/20/2001 por ejemplo, notacin americana para el 20 de diciembre de 2001, o, a la europea, 20.12.2001. Puede omitir el ao, pero entonces slo se acepta la notacin europea: 20.12. Tambin puede especicar el mes por su abreviatura en ingls: Dec 20 o 20 Dec son ambos vlidos.

at tambin acepta opciones diferentes:

-l: Imprime la lista de los trabajos que estn programados; el primer campo es el nmero de trabajo. Esto es equivalente al comando atq. -d <n>: Quita el trabajo nmero <n> de la lista. Puede obtener los nmeros de los trabajos con el comando atq o con la opcin anterior. Esto es equivalente al comando atrm <n>.

Como siempre, consulte la pgina Man at(1) para ms opciones.

5.4. Archivado y compresin de datos o


Al igual que find, tar es un utilitario UNIX de larga data, y como tal, su sintaxis es un poco especial. La sintaxis es:
tar [opciones] [archivos ...]

5.4.1. tar: Tape ARchiver (Archivador de cinta)

Aqu tiene una lista de algunas opciones. Note que todas tienen una opcin larga equivalente, pero para esto deber consultar la pgina Man de tar, ya que no se indicarn aqu.

El guin inicial (-) de las opciones cortas ahora es obsoleto para el o comando tar, excepto despus de una opcin larga. e o

c: Esta opcin se usa para crear archivadores nuevos. x: Esta opcin se usa para extraer los archivos de un archivador existente. t: Listar los archivos de un archivador existente. v: Esto simplemente listar los archivos mientras se agregan o se extraen de un archivador, o, en conjuncin con la opcin t (ver arriba), imprime un listado largo de archivo en vez de uno corto. f <nombre_de_archivo>: Crear un archivador de nombre nombre_de_archivo, extraer del archivador nombre_de_archivo o listar los archivos del archivador nombre_de_archivo. Si se omite este parmetro, el archivo predeterminado ser /dev/rmt0, que generalmente es el archivo especial asociado con el streamer. Si el parmetro nombre_de_archivo es - (un guin, la entrada o la salida dependiendo de si est creando un archivador o extrayendo de uno) ser asociado con la entrada estndar o la salida estndar. z: Le dice a tar que el archivador a crear debe comprimirse con gzip, o que el archivador del que se quiere extraer est comprimido con gzip. j: Igual que z, pero el programa usado para la compresin es bzip2. p: Cuando se extraen archivos de un archivador, preservar todos los atributos del archivo, incluyendo pertenencia, ltimo tiempo de acceso, y as sucesivamente. Muy til para los volcados del sistema de archivos.

46

Captulo 5. Los utilitarios de la lnea de comandos

r: Agregar la lista de archivos dada en la lnea de comandos a un archivador existente. Note que el archivador al cual quiere agregar archivos no debe estar comprimido! A: Aadir los archivadores que se dan en la lnea de comandos al que se da con la opcin f. Al igual que con la opcin r, los archivadores no deben estar comprimidos para que esto funcione.

Hay muchas, muchas, muchas otras opciones, para una lista completa querr consultar la pgina Man tar(1). Vea, por ejemplo, la opcin d. Sigamos con un ejemplo. Digamos que quiere crear un archivador con todas las imgenes en /shared/images, comprimido con bzip2, denominado images.tar.bz2 y ubicado en su directorio personal. Entonces, ingresar:
# # Nota: debe encontrarse en el directorio desde el # que quiere archivar los archivos! # $ cd /shared $ tar cjf ~/images.tar.bz2 images/

Como puede ver, aqu hemos usado tres opciones: c le dijo a tar que queramos crear un archivador, j le dijo que lo queramos comprimir con bzip2, y f ~/images.tar.bz2 le dijo que el archivador se iba a crear en nuestro directorio personal, con el nombre images.tar.bz2. Ahora queremos vericar si el archivador es vlido. Simplemente lo podemos hacer listando sus archivos:
# Volver a nuestro directorio personal # $ cd $ tar tjvf images.tar.bz2

Aqu, le dijimos a tar que liste (t) los archivos del archivador images.tar.bz2 (f images.tar.bz2), le advertimos que el archivador estaba comprimido con bzip2 (j), y que queramos un listado largo (v). Ahora, digamos que borr el directorio de las imgenes. Afortunadamente, su archivador est intacto, y ahora lo quiere extraer de nuevo a su lugar original, en /shared. Pero como no quiere arruinar su comando find para las imgenes nuevas, necesita conservar todos los atributos del archivo:
# # cambiar al directorio donde quiere extraer # $ cd /shared $ tar jxpf ~/images.tar.bz2

Y eso es todo! Ahora, digamos que quiere extraer slo el directorio images/cars del archivador, y nada ms. Entonces puede ingresar esto:
$ tar jxf ~/images.tar.bz2 images/cars

Si esto le preocupa, que no lo haga. Si intenta respaldar archivos especiales, tar los tomar como lo que son, archivos especiales, y no volcar su contenido. Entonces, s, se puede poner /dev/mem en un archivador Ah!, y tambin trata correctamente a los vnculos, as que tampoco se preocupe por esto. Para los vnculos simblicos, tambin mire la opcin h en la pgina Man.

5.4.2. bzip2 y gzip: Programas de compresin de datos o


Puede ver que ya hemos hablado de estos dos programas cuando tratbamos con tar. A diferencia de WinZip bajo Windows, el archivador y la compresin se hacen usando dos utilitarios separados tar para el archivador, y los dos programas que presentaremos ahora para la compresin de datos: bzip2 y gzip. Tambin existen otros utilitarios de compresin para GNU/Linux tales como zip, arj o rar (pero no se usan con frecuencia). Al principio, bzip2 fue escrito como un reemplazo de gzip. Sus relaciones de compresin generalmente son mejores, pero por otra parte, necesita ms memoria RAM mientras est trabajando. Sin embargo, gzip todava se usa para mantener la compatibilidad con los sistemas ms antiguos. Ambos comandos tienen una sintaxis similar:
gzip [opciones] [archivo(s)]

47

Captulo 5. Los utilitarios de la lnea de comandos Si no se especica un nombre de archivo, tanto gzip como bzip2 esperarn datos de la entrada estndar y enviarn los resultados a la salida estndar. Por lo tanto, puede usar ambos programas en tuberas. Tambin ambos programas tienen un conjunto de opciones en comn:

-1, ..., -9: Conguran la relacin de compresin. A mayor nmero, mejor compresin, pero mejor tambin signica ms lenta: dar para recibir. -d: Descomprimir el(los) archivo(s). Esto es equivalente a usar gunzip o bunzip2. -c: Volcar el resultado de la compresin/descompresin de los archivos pasados como parmetros a la salida estndar.

Predeterminadamente, tanto gzip como bzip2 borran el o los archivos que han comprimido (o descomprimido) si no usa la opcin o -c. Con bzip2 lo puede evitar usando la opcin -k pero, gzip no o tiene tal opcin! o

Ahora, algunos ejemplos. Digamos que quiere comprimir todos los archivos que terminan con .txt en el directorio corriente usando bzip2 con compresin mxima. Entonces ingresar:
$ bzip2 -9 *.txt

Digamos que quiere compartir su archivado de imgenes con alguien, pero dicha persona no tiene bzip2, slo tiene gzip. No necesita descomprimir el archivador y volver a comprimirlo, simplemente puede descomprimirlo a la salida estndar, usar una tubera, comprimir desde la entrada estndar y volver a direccionar la salida al archivador nuevo:
bzip2 -dc imagenes.tar.bz2 | gzip -9 >imagenes.tar.gz

Y eso es todo. Podra haber ingresado bzcat en lugar de bzip2 -dc. Hay un equivalente para gzip pero su nombre es zcat, no gzcat. Tambin tiene bzless (y zless, respectivamente) si quiere ver un archivo comprimido directamente, sin tener que descomprimirlo. Como ejercicio, intente encontrar el comando que tendra que ingresar para ver los archivos comprimidos sin descomprimirlos, y sin usar bzless o zless.

5.5. Mucho, mucho ms... a


Hay tantos comandos que un libro detallando todo acerca de ellos sera del tamao de una enciclopedia. Este captulo no ha cubierto ni un dcimo del tema, sin embargo Usted puede hacer mucho con lo que aprendi aqu. Si lo desea, puede leer algunas pginas Man: sort(1), sed(1) y zip(1) (s, es lo que piensa: puede extraer o hacer archivadores .zip con GNU/Linux), convert(1), y as sucesivamente. La mejor manera de acostumbrarse a estas herramientas es practicar y experimentar con ellas, y es probable que les encuentre un montn de usos, incluso algunos bastante inesperados Que se divierta!

48

Cap tulo 6. Control de procesos


En Los procesos, pgina 10 ya hemos visto lo que es un proceso. Ahora aprenderemos como listar procesos y sus caractersticas, y como manipularlos.

6.1. Un poco ms sobre los procesos a


Es posible monitorizar los procesos y pedirles que se terminen, que pausen, que continen, etc. Para comprender las operaciones que vamos a hacer aqu, es til saber un poco ms acerca de los procesos.

6.1.1. El rbol de procesos a


Al igual que con los archivos, todos los procesos que corren en un sistema GNU/Linux estn organizados en forma de rbol. La raz de este rbol es init, un proceso del sistema que se inicia al momento de arrancar. El sistema asigna un nmero (PID, Process ID, Identicador del proceso) a cada proceso de forma de poder identicar a los procesos de manera unvoca. Los procesos tambin heredan el PID de sus procesos padre (PPID, Parent Process ID, Identicador del proceso padre). init es su propio padre: el PID y PPID de init es 1.

6.1.2. Las seales n

Cada proceso en UNIX puede reaccionar a las seales que se le envan. Existen 64 seales diferentes que estn diferenciadas o bien por su nmero (comenzando en 1) o bien por sus nombres simblicos (SIGx, donde x es el nombre de la seal) Las 32 seales ms altas (33 a 64) son seales de tiempo real, y estn fuera del alcance de este captulo. Para cada una de estas seales, el proceso puede denir su propio comportamiento, excepto para dos de ellas: la seal nmero 9 (KILL), y la seal nmero 19 (STOP) La seal 9 termina un proceso irrevocablemente, sin darle tiempo de nalizar adecuadamente. Esta es la seal que se deber enviar a un proceso cuando el mismo est trabado o exhibe otros problemas.Se encuentra disponible una lista completa de la seales usando el comando kill -l.

6.2. Informacin sobre los procesos: ps y pstree o


Estos dos comandos muestran una lista de los procesos presentes en el sistema, de acuerdo con los criterios que Usted congura.

6.2.1. ps
Al ejecutar ps sin argumentos se mostrarn solo los procesos iniciados por Usted en la terminal que est utilizando:
$ ps PID TTY 18614 pts/3 20173 pts/3

TIME CMD 00:00:00 bash 00:00:00 ps

Al igual que muchos utilitarios UNIX, ps tiene una gran cantidad de opciones, de las cuales las ms comunes son:

a: tambin muestra los procesos iniciados por los otros usuarios; x: tambin muestra los procesos sin terminal de control alguna o con una terminal de control diferente a la que Usted est utilizando;

49

Captulo 6. Control de procesos

u: muestra, para cada proceso, el nombre del usuario que lo inici y la hora a la cual fue iniciado.

Hay muchas otras opciones. Consulte la pgina Man ps(1) para ms informacin. La salida de este comando est dividida en campos diferentes: el que ms le interesar es el campo PID, que contiene el identicador del proceso. El campo CMD contiene el nombre del comando ejecutado. Una forma muy comn de invocar a ps es la siguiente:
$ ps ax | less

Esto le da una lista de todos los procesos que se estn ejecutando corrientemente, entonces puede identicar uno o ms procesos que estn causando problemas y, subsecuentemente, puede matarlos.

6.2.2. pstree
El comando pstree muestra los procesos en forma de estructura de rbol. Una ventaja es que Usted puede ver inmediatamente los padres de los procesos: cuando desea eliminar toda una serie de procesos y si son todos padres e hijos, simplemente puede terminar al padre. Querr utilizar la opcin -p, que muestra el PID de cada proceso, y la opcin -u que muestra el nombre del usuario que inici el proceso. Como generalmente la estructura de rbol es bastante grande, es ms fcil invocar a pstree de la siguiente manera:
$ pstree -up | less

Esto le da una visin general de toda la estructura de rbol de los procesos.

6.3. Env de seales a los procesos: kill, killall y top o n


6.3.1. kill, killall
Estos dos comandos se usan para enviar seales a los procesos. El comando kill necesita el nmero de un proceso como argumento, mientras que el comando killall necesita el nombre de un comando. Los dos comandos opcionalmente pueden recibir el nmero de una seal como argumento. Predeterminadamente, ambos envan la seal 15 (TERM) a el o los procesos relevantes. Por ejemplo, si quiere matar el proceso con PID 785, Usted ingresa el comando:
$ kill 785

Si quiere enviarle la seal 19 (STOP), entonces ingresa:


$ kill -19 785

Supongamos que quiere matar un proceso del cual Usted conoce el nombre del comando. En vez de encontrar el nmero de proceso usando ps, puede matar el proceso directamente:
$ killall -9 mozilla

Pase lo que pase, slo matar a sus propios procesos (a menos que Usted sea root), por lo que no debe preocuparse acerca de los procesos del vecino que tienen el mismo nombre, ellos no sern afectados.

6.3.2. top
top es un programa todo en uno: simultneamente cumple las funciones de ps y kill. Es un comando de modo consola, por lo que debe iniciarlo desde una terminal, como se muestra en Figura 6-1.

50

Captulo 6. Control de procesos

Figura 6-1. Ejemplo de ejecucin de top El programa se controla por completo con el teclado. Puede acceder a la ayuda presionando h, aunque esta est en ingls. Aqu tiene algunos de los comandos que puede usar.

k: este comando se usa para enviar una seal a un proceso. Luego, top le preguntar por el PID del proceso, seguido del nmero o nombre de la seal a enviar (predeterminadamente TERM o 15); M: este comando se usa para ordenar el listado de los procesos de acuerdo a la memoria que usan (campo %MEM); P: este comando se usa para ordenar el listado de procesos de acuerdo al tiempo de CPU que consumen (campo %CPU; este es el mtodo de ordenamiento predeterminado); u: este comando se usa para mostrar los procesos de un usuario en particular, top le preguntar de cual. Debe ingresar el nombre del usuario, no su UID. Si no ingresa nombre alguno, se mostrarn todos los procesos; i: este comando acta como un interruptor; predeterminadamente se muestran todos los procesos, incluso los que estn dormidos; este comando asegura que se muestran slo los procesos que estn en curso de ejecucin (los procesos cuyo campo STAT indica R, running, ejecutando) y no los otros. Una nueva llamada a este comando lo lleva a la situacin previa. r: este comando se usa para cambiar la prioridad del proceso seleccionado.

6.4. Ajustando la prioridad de los procesos: nice, renice


Cada proceso en el sistema est corriendo con prioridades denidas, llamadas tambin nice value, que puede variar desde -20 (mayor prioridad) a 19 (menor prioridad). Si no est denido, cada proceso correr con prioridad 0 de manera predeterminada (la prioridad base para la administracin de procesos). Los procesos con mayor prioridad (nice value menor, hasta -20) sern agendados para ejecutar ms seguido que otros que tienen menor prioridad (hasta 19), garantizando as ms ciclos del procesador para dichos procesos. Los usuarios que no sean el superusuario slo pueden bajar la prioridad de los procesos que poseen en el rango de 0 a 19. El superusuario (root) puede ajustar la prioridad de cualquier proceso a cualquier valor.

6.4.1. renice
Si uno o ms procesos usan muchos recursos del sistema, Usted puede cambiar las prioridades de los mismos en vez de terminarlos. Para hacerlo, se usa el comando renice. La sintaxis del mismo es la siguiente:
renice prioridad [[-p] pid ...] [[-g] pgrp ...] [[-u] usuario ...]

51

Captulo 6. Control de procesos donde prioridad es el valor de la prioridad, pid (use la opcin -p para mltiples procesos) es el ID del proceso, pgrp (precedido por la opcin -g) si son varios) es el ID de grupo del proceso, y usuario (-u para ms de uno) es el nombre de usuario del dueo del proceso. Supongamos que se est ejecutando un proceso con PID 785, el cual realiza una operacin cientca compleja, y mientras el proceso est trabajando Usted desea jugar un juego para el que necesita liberar recursos del sistema. Entonces, teclea:
$ renice +15 785

En este caso, su proceso probablemente tardar un poco ms en nalizar pero no evitar que otros procesos utilicen ms tiempo de CPU. Si Usted es el administrador del sistema y nota que algn usuario est corriendo muchos procesos que utilizan muchos recursos del sistema, puede cambiar la prioridad de los procesos de dicho usuario con un nico comando:
# renice +20 -u peter

Luego de esto, todos los procesos de peter tendrn la prioridad menor y no obstruirn a los procesos de otros usuarios.

6.4.2. nice
Ahora que sabe como puede cambiar la prioridad de los procesos, puede desear correr un comando con una prioridad denida. Para esto, utilice el comando nice. En este caso debe especicar su comando como una opcin para nice. La opcin -n se usa para ajustar el valor de la prioridad. De manera predeterminada nice ajusta una prioridad de 10. Por ejemplo, Usted desea crear una imagen ISO de un CD-ROM de instalacin de Mandrakelinux:
$ dd if=/dev/cdrom of=~/mdk1.iso

En algunos sistemas con un CD-ROM IDE comn, el proceso de la copia de un volumen grande de informacin puede utilizar muchos recursos del sistema. Para evitar que la copia bloquee a los dems procesos, se puede comenzar el proceso de copia con una prioridad disminuida usando este comando:
$ nice -n 19 dd if=/dev/cdrom of=~/mdk1.iso

y continuar con lo que estaba haciendo.

52

Cap tulo 7. Organizacin del rbol de archivos o a


Hoy da, un sistema UNIX es grande, muy grande. Esto es particularmente cierto con GNU/Linux: la cantidad de software disponible lo haran un sistema inmanejable si no hubieran guas para la ubicacin de los archivos en la estructura del rbol. La norma reconocida es FHS (Filesystem Hierarchy Standard, Norma para la jerarqua del sistema de archivos) cuya versin 2.3 fue publicada en enero de 2004. El documento que describe la norma est disponible en diferentes formatos en la Internet en el sitio web Pathname (http://www.pathname.com/fhs/). Este captulo slo brindar un resumen breve, pero debera ser suciente para que Usted sepa qu directorio debera contener un archivo dado, o donde debera poner un archivo dado.

7.1. Datos compartibles y no compartibles, estticos y no estticos a a

Sobre un sistema UNIX los datos se pueden clasicar de acuerdo a estos dos criterios que signican lo siguiente: los datos compartibles pueden ser comunes a varias mquinas en una red, mientras que los datos no compartibles no pueden serlo. Los datos estticos no deben modicarse en el uso normal, mientras que los no estticos pueden modicarse en el uso normal. A medida que exploremos la estructura del rbol, clasicaremos los diferentes directorios en cada una de estas categoras.

Estas clasicaciones slo son recomendaciones. No es obligatorio o seguirlas, aunque adoptarlas le ser de gran ayuda para administrar a su sistema. Tenga presente tambin, que la distincin entre esttie o a co y no esttico slo se aplica al uso general del sistema y no a la a o conguracin del mismo. Si Usted instala un programa, obviameno te tendr que modicar directorios normalmente estticos, tales a a como /usr.

7.2. El directorio ra / z:
El directorio raz contiene toda la jerarqua del sistema. No se puede clasicar ya que sus subdirectorios pueden, o no, ser estticos o compartibles. Aqu tiene una lista de los directorios y subdirectorios principales, junto con sus clasicaciones:

/bin: archivos binarios esenciales. Contiene los comandos bsicos que usarn todos los usuarios y son necesarios para la operacin del sistema: ls, cp, login, etc. Esttico, no compartible. /boot: contiene los archivos que necesita el administrador de arranque de GNU/Linux (GRUB o LILO para las plataformas Intel) Este puede, o no, contener al ncleo: si el ncleo no est aqu, debe estar ubicado en el directorio raz. Esttico, no compartible. /dev: archivos de los dispositivos del sistema (dev por DEVices, Dispositivos) Algunos archivos que contiene /dev son obligatorios, tales como /dev/null, /dev/zero, y /dev/tty. Esttico, no compartible. /etc: contiene todos los archivos de conguracin especcos de la computadora. Este directorio no puede contener archivos binarios. Esttico, no compartible. /home: donde se ubican todos los directorios personales de los usuarios del sistema. Este directorio puede, o no, ser compartible (algunas redes grandes lo hacen compartible por NFS). Aqu se ubican los archivos de conguracin de sus aplicaciones favoritas (tales como los navegadores o los programas para leer el correo electrnico), cuyos nombres comienzan con un punto (.). Por ejemplo, los archivos de conguracin de Mozilla estn dentro del directorio .mozilla. No esttico, compartible. /lib: contiene las bibliotecas que son esenciales para el sistema; tambin contiene los mdulos del ncleo en el subdirectorio /lib/modules/VERSION_DEL_NUCLEO. Contiene todas las bibliotecas que necesitan los binarios presentes en los directorios /bin y /sbin. Aqu tambin debe residir el vinculador/cargador de tiempo de ejecucin opcional ld* as como tambin la biblioteca dinmica de C libc.so. Esttico, no compartible. /mnt: directorio que contiene los puntos de montaje para los sistemas de archivos montados temporalmente tales como /mnt/cdrom, /mnt/floppy, etc. El directorio /mnt tambin se usa para montar directorios temporarios (por ejemplo, una tarjeta USB ser montada en /mnt/removable). No esttico, no compartible.

53

Captulo 7. Organizacin del rbol de archivos

/opt: contiene paquetes que no son esenciales para la operacin del sistema. Est reservado para paquetes aadidos; por lo general los paquetes como Acrobat Reader se instalan en /opt. FHS recomienda poner los archivos estticos (binarios, bibliotecas, pginas de manual, etc.) en el directorio /opt/nombre_del_ paquete y los archivos de conguracin especcos en /etc/opt. /root: directorio personal de root. No esttico, no compartible. /sbin: contiene los binarios del sistema esenciales para el arranque del mismo. La mayora de estos archivos slo pueden ser ejecutados por root. Un usuario no privilegiado tambin puede ejecutarlos pero no har mucho. Esttico, no compartible. /tmp: directorio destinado a contener archivos temporales que pueden crear ciertos programas. No esttico, no compartible. /usr: explicado en ms detalle en /usr: el grandote, pgina 54. Esttico, compartible. /var: ubicacin para los datos que los programas pueden modicar en tiempo real (ej.: el servidor de correo electrnico, los programas de auditora, el servidor de impresin, etc.). No esttico. Sus diferentes subdirectorios pueden ser compartibles, o no.

7.3. /usr: el grandote


El directorio /usr es el directorio principal de almacenamiento de las aplicaciones. Todos los archivos binarios en este directorio no son necesarios para el arranque o mantenimiento del sistema, por lo que la jerarqua /usr puede estar, y generalmente est, ubicada en un sistema de archivos separado. Debido a que su tamao es (generalmente) grande, /usr tiene su propia jerarqua de subdirectorios. Mencionaremos slo algunos:

/usr/X11R6: toda la jerarqua de X Window System. Todos los binarios y bibliotecas necesarios para la operacin de X (incluyendo los servidores X) se deben ubicar aqu. El directorio /usr/X11R6/lib/X11 contiene todos los aspectos de la conguracin de X que no varan de una computadora a otra. Las conguraciones especcas de cada computadora deberan ir en /etc/X11. /usr/bin: contiene la gran mayora de los programas binarios del sistema. Cualquier programa binario que no sea necesario para el mantenimiento del sistema y no es un programa de administracin del sistema se debe ubicar en este directorio. Las nicas excepciones son los programas que compile e instale Usted mismo, que se deben ubicar en /usr/local. /usr/lib: contiene todas las bibliotecas necesarias para emplear los programas ubicados en /usr/bin y /usr/sbin. Tambin hay un vnculo simblico /usr/lib/X11 que apunta al directorio que contiene las bibliotecas de X Window System, /usr/X11R6/lib (pero slo si X est instalado)1. /usr/local: aqu es donde debera instalar las aplicaciones que compila desde los fuentes. El programa de instalacin habr creado la jerarqua necesaria. /usr/share: contiene todos los datos de slo lectura independientes de la arquitectura que necesitan las aplicaciones que se encuentran en /usr. Entre otras cosas, Usted encontrar la informacin de la zona y de la ubicacin (zoneinfo y locale).

Tambin mencionaremos los directorios /usr/share/doc y /usr/share/man que contienen, respectivamente, la documentacin de las aplicaciones y las pginas Man del sistema.

7.4. /var: datos modicables durante el uso


El directorio /var contiene todos los datos operativos de los programas que estn corriendo en el sistema. A diferencia de los datos de trabajo en /tmp, estos datos deben quedar intactos en caso de volver a arrancar. Hay muchos subdirectorios, y algunos son muy tiles:

/var/log: contiene los archivos de auditora del sistema, los cuales Usted puede leer para solucionar problemas en su sistema (/var/log/messages y /var/log/kernel/errors para nombrar slo dos).

1. Por favor, note que Mandrakelinux ahora usa Xorg en vez de X Window System como sistema X Window predeterminado.

54

Captulo 7. Organizacin del rbol de archivos

/var/run: se usa para mantener la pista de todos los procesos que est usando el sistema desde que arranc, permitindole a Usted actuar sobre estos procesos en caso de un cambio de nivel de ejecucin del sistema (consulte Los archivos de arranque: init SYSV, pgina 77). /var/spool: contiene los archivos de trabajo de los demonios del sistema. Por ejemplo, /var/spool/ cups contiene los archivos de trabajo del servidor de impresin, mientras que /var/spool/mail contiene los archivos de trabajo del servidor de correo electrnico (es decir, todo el correo que llega a su sistema y sale del mismo).

/etc es uno de los directorios ms esenciales de cualquier sistema UNIX dado que contiene todos los archivos de conguracin especcos del sistema Nunca lo borre para ganar espacio! De la misma manera, recuerde que si desea extender su estructura del rbol sobre varias particiones, no debe poner a /etc en una particin separada: es necesario para la inicializacin del sistema y debe estar en la particin raz al momento del arranque. Algunos archivos importantes son:

7.5. /etc: los archivos de conguracin o

passwd y shadow: estos son archivos de texto que contienen a todos los usuarios del sistema y sus contraseas cifradas. shadow slo est presente si Usted usa las contraseas shadow, que es la opcin de instalacin predeterminada, por razones de seguridad. inittab: es el archivo de conguracin del programa init, que juega un rol fundamental cuando se arranca el sistema. services: este archivo contiene una lista de los servicios de red existentes. profile: este es el archivo de conguracin del shell, aunque ciertos shells usan otros. Por ejemplo, bash usa .bashrc. crontab: archivo de conguracin de cron, el programa responsable de la ejecucin peridica de comandos.

Tambin hay ciertos subdirectorios para los programas que necesitan una gran cantidad de archivos de conguracin. Por ejemplo, esto se aplica a X Window System que almacena todos sus archivos en el directorio /etc/X11.

55

Captulo 7. Organizacin del rbol de archivos

56

Cap tulo 8. Sistemas de archivos y puntos de montaje


La mejor forma de entender como funciona es ver un caso prctico, que es lo que vamos a hacer aqu. Suponga que Usted recin ha comprado un disco rgido nuevo, todava sin particin alguna. Su particin Mandrakelinux est llena a ms no poder, y en vez de comenzar desde cero, Usted decide mover toda una seccin de la estructura de rbol a su disco rgido nuevo. Como este disco rgido nuevo es muy grande, Usted decide mover al mismo su directorio ms grande: /usr. Pero primero, un poquito de teora.

8.1. Principios
Cada disco rgido se divide en varias particiones, y cada una de ellas contiene un sistema de archivos. Mientras Windows asocia una letra a cada uno de estos sistemas de archivos (en realidad, slo a los que reconoce), GNU/Linux tiene una estructura de rbol de archivos nica, y cada sistema de archivos est montado en algn lugar de esa estructura de rbol. As como Windows necesita una unidad C:, GNU/Linux debe poder montar la raz de rbol de archivos (/) en una particin que contiene al sistema de archivos raz. Una vez que est montada la raz, puede montar otros sistemas de archivos en la estructura de rbol, en diferentes puntos de montaje dentro del rbol. Cualquier directorio bajo la raz puede ociar de punto de montaje, y tambin puede montar el mismo sistema de archivos varias veces en puntos de montaje diferentes.

Esto permite una gran exibilidad en la conguracin. Por ejemplo, en el caso de un servidor web, es comn dedicar toda una particin al directorio que contiene los datos del servidor web. El directorio que generalmente contiene los datos es /var/www y ocia de punto de montaje para la particin. Tambin, debera considerar una particin /home grande si planica descargar una cantidad importante de software. Puede ver en Figura 8-1 y Figura 8-2 la situacin del sistema antes y despus de montar el sistema de archivos.

/ /

/home

/usr

/var /cgibin /html /icons

/var/www

Sistema de archivos raiz (ya montado)

Sistema de archivos que contiene los archivos del directorio "/var/www" (no montado aun)

Figura 8-1. Un sistema de archivos todava no montado

57

Captulo 8. Sistemas de archivos y puntos de montaje

/home

/usr

/var

/var/www

/var/www/cgibin

/var/www/html

/var/www/icons

Figura 8-2. Ahora el sistema de archivos est montado Como puede imaginar, esto presenta un nmero de ventajas: la estructura de rbol ser siempre la misma, ya sea que esta se extienda sobre un sistema de archivos solo o sobre varias docenas. Siempre es posible mover fsicamente una parte clave de la estructura de rbol a otra particin cuando empieza a faltar espacio, que es lo que vamos a hacer aqu. Hay dos cosas que Usted debe saber sobre los puntos de montaje: 1. el directorio que ocia de punto de montaje debe existir; 2. y este directorio preferentemente debera estar vaco: si un directorio elegido como punto de montaje ya contiene archivos y subdirectorios, los mismos sencillamente sern ocultados por el sistema de archivos recin montado, pero no se podr acceder ms a ellos hasta que libere el punto de montaje.

En realidad es posible acceder a los datosocultadospor el sistema de archivos recin montado. Simplemente debe montar el directoe rio oculto con la opcin --bind. Por ejemplo, si mont recin un o o e directorio en /oculto/directorio/ y desea acceder al contenido original del mismo en /nuevo/directorio, deber ejecutar: a
mount --bind /oculto/directorio/ /nuevo/directorio

8.2. Particionar un disco r gido, formatear una particin o


Hay dos cosas a tener presentes a medida que lea esta seccin: un disco rgido se divide en particiones, y cada una de estas particiones alberga un sistema de archivos. Su disco rgido totalmente nuevo no tiene ni uno ni lo otro, por lo que comenzamos con el particionado. Para proceder, debe ser root. Primero, tiene que conocer el nombre de su disco rgido (es decir, el archivo que lo designa). Supongamos que congura a su disco nuevo como esclavo en la interfaz IDE primaria. En ese caso el nombre del mismo ser /dev/hdb1. Por favor, consulte Administrar sus particiones de Gua de comienzo, la cual explica como particionar un disco. DiskDrake tambin crear por Usted los sistemas de archivos, por lo que una vez que se completan los pasos del particionado y la creacin del sistema de archivos, podemos proceder.

1.

La manera de determinar el nombre de un disco rgido se explica en Gua de Instalacin.

58

Captulo 8. Sistemas de archivos y puntos de montaje

8.3. Los comandos mount y umount


Ahora que se ha creado el sistema de archivos, puede montar la particin. Inicialmente, la misma estar vaca. El comando para montar sistemas de archivos es mount, y su sintaxis es la siguiente:
mount [opciones] <-t tipo> [-o opciones_de_montado] <dispositivo> <punto_de_montaje>

En este caso, queremos montar temporalmente nuestra particin sobre /mnt (o cualquier otro punto de montaje que Usted haya elegido recuerde que debe existir); el comando para montar nuestra particin creada recientemente es el siguiente:
$ mount -t ext3 /dev/hdb1 /mnt

La opcin -t se usa para especicar el tipo de sistema de archivos que se supone albergar la particin. Entre los sistemas de archivos que encontrar con mayor frecuencia, estn ext2FS (el sistema de archivos de GNU/Linux) o ext3FS (una versin mejorada de ext2FS con caractersticas transaccionales), VFAT (para todas las particiones DOS/Windows: FAT 12, 16 o 32) e ISO9660 (sistema de archivos de CD-ROM). Si no especica tipo alguno, mount probar y adivinar el sistema de archivos que alberga la particin leyendo el superbloque de la misma. La opcin -o se usa para especicar una o ms opciones de montaje. Estas opciones dependen del sistema de archivos usado. Consulte la pgina Man mount(8) para ms detalles. Ahora que mont su particin nueva, debe copiar todo el directorio /usr en la misma:
$ (cd /usr && tar cf - .) | (cd /mnt && tar xpvf -)

Ahora que se copiaron los archivos, podemos desmontar nuestra particin. Para hacerlo, utilice el comando umount. La sintaxis es simple:
umount <punto_de_montaje|dispositivo>

Entonces, para desmontar nuestra particin, podemos ingresar:


$ umount /mnt

o bien:
$ umount /dev/hdb1

A veces, puede ocurrir que un dispositivo (por lo general, el CDROM) est ocupado. De ser as la mayor de los usuarios ree , a solver este problema volviendo a arrancar su computadora. Por an ejemplo, si umount /dev/hdc falla, entonces podr intentar el an lazy umount. La sintaxis es bastante simple:
umount -l <punto_de_montaje|dispositivo>

Este comando desconecta el dispositivo y cierra todos los archivos relacionados con el dispositivo cuando sea posible. Por lo general, puede expulsar el disco usando el comando eject <punto_de_montaje|dispositivo>. Por lo tanto... si el comando eject no resulta y no desea volver a arrancar el sistema, utilice el desmontado lazy .

Como esta particin se va a convertir en nuestro directorio /usr, necesitamos informarle esto al sistema. Para hacerlo, editamos el archivo /etc/fstab. Este hace posible la automatizacin del montaje de ciertos sistemas de archivos, especialmente al arrancar el sistema. El mismo contiene una cantidad de lneas que describen a los sistemas de archivos, los puntos de montaje y otras opciones. Aqu tiene un ejemplo de ese archivo:
/dev/hda1 /dev/hda5 /dev/hda6 / /home swap ext2 ext2 swap defaults defaults defaults 1 1 1 2 0 0

59

Captulo 8. Sistemas de archivos y puntos de montaje


none none none none /mnt/cdrom /mnt/floppy /proc /dev/pts supermount dev=/dev/scd0,fs=udf:iso9660,ro,-- 0 0 supermount dev=/dev/fd0,fs=ext2:vfat,--,sync,umask=0 0 0 proc defaults 0 0 devpts mode=0622 0 0

Cada lnea consiste de:


el dispositivo que alberga al sistema de archivos; el punto de montaje; el tipo de sistema de archivos; las opciones de montaje; el ag del utilitario de copia de respaldo dump; el orden de vericacin por fsck (FileSystem ChecK, Vericacin del sistema de archivos);

Siempre hay una entrada para el sistema de archivos raz. Las particiones swap son especiales ya que no son visibles en la estructura de rbol, y el campo de punto de montaje para estas particiones contiene la palabra clave swap. Estudiaremos el sistema de archivos /proc con mayor detalle en El sistema de archivos /proc, pgina 71. Otro sistema de archivos especial es /dev/pts. Volvamos al tema. Usted movi toda la jerarqua /usr a /dev/hdb1 y quiere entonces que esta particin se monte como /usr en el arranque. En ese caso, necesita agregar una entrada como la siguiente al archivo etc/fstab:
/dev/hdb1 /usr ext2 defaults 1 2

Ahora la particin ser montada en cada arranque. Tambin se vericar la misma, si es necesario. Hay dos opciones especiales: noauto y user. La opcin noauto especica que el sistema de archivos no debe montarse en el arranque sino que debe montarse explcitamente. La opcin user especica que cualquier usuario puede montar y desmontar el sistema de archivos. Estas opciones se usan tpicamente para el CDROM y para la disquetera. Hay otras opciones, y /etc/fstab incluso tiene su propia pgina Man (fstab(5)). La ltima, pero no menos importante, de las ventajas de este archivo es que simplica la sintaxis del comando mount. Para montar un sistema de archivos sealado en este archivo, puede hacer referencia al punto de montaje o el dispositivo. As, para montar un disquete, puede ingresar:
$ mount /mnt/floppy

o bien:
$ mount /dev/fd0

Para nalizar con nuestro ejemplo de mover una particin, revisemos lo hecho hasta ahora. Copiamos la jerarqua /usr y modicado /etc/fstab de forma tal que la particin nueva se monte en el arranque. Pero por el momento, todava los archivos antiguos de /usr estn en su lugar original en el disco, por lo que debemos borrarlos para liberar espacio (que era, despus de todo, nuestro objetivo primario). Para hacerlo, primero necesita pasar a modo de usuario nico ejecutando el comando telinit 1 en la lnea de comandos.

Luego, borramos todos los archivos del directorio /usr. Recuerde que todava nos estamos reriendo al directorio antiguo, ya que el nuevo, ms grande, todava no est montado. rm -Rf /usr/*. Finalmente, montamos el directorio /usr nuevo: mount /usr/.

Y eso es todo. Ahora, regrese al modo multiusuario (telinit 3 para modo de texto estndar, o telinit 5 para X Window System), y si no tiene otra tarea administrativa por hacer, debera terminar la sesin de root.

60

Cap tulo 9. El sistema de archivos de Linux


Naturalmente, su sistema GNU/Linux est contenido en su disco rgido dentro de un sistema de archivos. Aqu presentamos diferentes aspectos relacionados con los sistemas de archivos, as como tambin las posibilidades que ofrecen los mismos.

9.1. Comparacin de algunos sistemas de archivos o


Durante la instalacin, Usted puede elegir diferentes sistemas de archivos para sus particiones. Esto quiere decir que puede formatear sus particiones de acuerdo con algoritmos diferentes. A menos que sea un especialista, la eleccin de un sistema de archivos no es obvia. Le proponemos una presentacin rpida de los tres sistemas de archivos ms corrientes, los cuales estn disponibles en su totalidad bajo Mandrakelinux.

9.1.1. Diferentes sistemas de archivos utilizables


9.1.1.1. Ext2
El Segundo sistema de archivos extendido (Second Extended Filesystem, su forma abreviada es ext2, o simplemente ext2) ha sido el sistema de archivos predeterminado de GNU/Linux por muchos aos. Reemplaz al Sistema de archivos extendido (Extended File System) (de all, el trmino Segundo). ext2 corrigi ciertos problemas y limitaciones que tena su predecesor. ext2 respeta los estndares comunes para los sistemas de archivos tipo UNIX. Desde que fue concebido, se dise para evolucionar, a la vez que ofrece una gran robustez y buen rendimiento.

9.1.1.2. Ext3
Como su nombre lo sugiere, el Tercer sistema de archivos extendido (Third Extended File System) es el sucesor de ext2. Es compatible con este ltimo pero est mejorado al incorporar las transacciones. Una de las mayores fallas de los sistemas de archivos tradicionales, como ext2, es la baja tolerancia a cadas del sistema abruptas (fallas de energa o programas que se cuelgan). En general, una vez que se vuelve a iniciar el sistema, dichos eventos implican un examen prolongado de la estructura del sistema de archivos e intentos para corregir errores, que algunas veces resulta en una corrupcin aun mayor del sistema de archivos. Esta corrupcin podra causar una prdida total o parcial de los datos grabados. Las transacciones responden a este problema. Para simplicar, digamos que la idea es grabar las acciones (tales como el guardar un archivo) antes de llevarlas a cabo efectivamente. Podemos comparar su funcionamiento al de un capitn de un bote que anota en su cuaderno de bitcora los eventos diarios. El resultado: un sistema de archivos coherente siempre. Y si ocurren problemas, la vericacin es muy rpida y las reparaciones eventuales, muy limitadas. Entonces, el tiempo que toma vericar un sistema de archivos ya no es ms proporcional al tamao del mismo sino al uso verdadero que se hace del mismo. Por lo tanto, ext3 ofrece la tecnologa de sistemas de archivos transaccional, a la vez que mantiene la estructura de ext2, asegurando una compatibilidad excelente. Esto hace que sea fcil cambiar entre ext2 y ext3.

9.1.1.3. ReiserFS
A diferencia de ext3, reiserfs se cre desde cero. Es un sistema de archivos transaccional como ext3, pero su estructura interna es radicalmente diferente ya que utiliza conceptos de rboles binarios, inspirado en el software de bases de datos.

61

Captulo 9. El sistema de archivos de Linux

9.1.1.4. JFS
JFS es el sistema de archivos transaccional diseado y utilizado por IBM. Al principio era cerrado y propietario, IBM decidi recientemente abrir el acceso al movimiento de software libre. Su estructura interna es muy similar a la de reiserfs.

9.1.1.5. XFS
XFS es el sistema de archivos transaccional diseado por SGI y utilizado en su sistema operativo Irix. Al principio era propietario y cerrado, SGI decidi abrir el acceso al movimiento de software libre. Su estructura de datos tiene un montn de caractersticas diferentes, tales como soporte para ancho de banda en tiempo real, extensiones, y sistemas de archivos distribuidos (clustered le systems), pero no en la versin libre.

9.1.2. Diferencias entre esos sistemas de archivos


Ext2 Estabilidad Herramientas para recuperar archivos borrados Tiempo de re-arranque luego de una cada Excelente S (complejas) Ext3 Buena S (complejas) ReiserFS Buena No JFS Media No XFS Buena No

Largo, incluso muy largo

Corto

Muy corto

Muy corto

Muy corto

Estado de los En general, Muy bueno datos en caso de bueno, pero una cada existe un riesgo alto de prdida parcial o total de los datos Soporte para ACL S S

Medioa

Muy bueno.

Muy bueno.

No

No

Notas de Tabla: a. Es posible mejorar los resultados en la recuperacin de una cada haciendo transaccionales a los datos y no slo a los metadatos, aadiendo la opcin data=journal en el archivo /etc/fstab. Tabla 9-1. Caractersticas de los sistemas de archivos El tamao mximo de un archivo depende de muchos parmetros (por ejemplo, el tamao del bloque para ext2/ext3), y es probable que evolucione dependiendo de la versin del ncleo y la arquitectura. De acuerdo con los lmites del sistema de archivos, el tamao mximo disponible en este momento es de alrededor de 2 TeraBytes (TB, 1TB = 1024GB) y puede ir hasta 4 PetaBytes (PB, 1PB = 1024 TB) para JFS. Desafortunadamente, estos valores tambin estn limitados al tamao mximo de bloque del dispositivo, que en el ncleo 2.4.X es (slo para la arquitectura x86) de 2TB1 incluso en el modo RAID. En el ncleo 2.6.X este lmite del dispositivo de bloques podra extenderse usando un ncleo compilado con el soporte para dispositivos de bloque grandes habilitado (CONFIG_LDB=y). Para ms informacin, consulte Aadiendo soporte para tamaos de archivo arbitrarios a la especicacin UNIX simple (http://ftp.sas.com/standards/large.file/x_open.20Mar96. html), Soporte para archivos grandes en Linux (http://www.suse.com/~aj/linux_lfs.html), y Dispositivos de bloque grandes (http://www.gelato.unsw.edu.au/IA64wiki/LargeBlockDevices).
1. Se debe estar preguntando cmo lograr tales capacidades con discos que apenas almacenan 320-400TB. Por ejemplo, usando una tarjeta RAID con 8 discos de 250GB en RAID-stripping, logra 2TB de almacenamiento. Combinando el almacenamiento de varias tarjetas RAID usando RAID por software de Linux, o usando LVM (Logical Volume Manager, Administrador de volmenes lgicos) debera ser posible incluso superar (si el tamao del bloque lo permite) el lmite de 2TB.

62

Captulo 9. El sistema de archivos de Linux

9.1.3. Y con respecto al rendimiento?


Siempre es muy difcil comparar el rendimiento entre los sistemas de archivos. Todas las pruebas tienen sus limitaciones y los resultados deben ser interpretados con cuidado. Hoy da, ext2 est muy maduro pero el desarrollo del mismo es muy lento; por otro lado los sistemas de archivos transaccionales como ext3 y reiserfs estn bastante maduros en este punto. Las caractersticas nuevas de reiserfs se incluyen en ReiserFS42. Por otro lado XFS tiene un montn de caractersticas, y a medida que el tiempo pasa ms caractersticas avanzadas funcionarn en Linux. JFS tom un enfoque diferente, y estn integrando caracterstica por caracterstica en Linux. Esto hace que el proceso sea ms lento, pero tambin va a terminar con una base de cdigo muy clara. Las comparaciones hechas hace una semana o un mes ya son antiguas. No olvide que el hardware de hoy da (especialmente en lo que concierne a las capacidades de los discos rgidos) ha nivelado bastante las diferencias entre los mismos. XFS tiene la ventaja que en este momento es el que mejor se desempea con archivos grandes. Cada sistema de archivos ofrece ventajas y desventajas. De hecho, todo depende de cmo utilice su mquina. Una simple mquina de escritorio estar bien con ext2. Para un servidor, se preere un sistema de archivos transaccional como ext3. Tal vez debido a su gnesis reiserfs es ms adecuado para un servidor de base de datos. JFS se preere en los casos donde el rendimiento del sistema de archivos es la cuestin principal. XFS es interesante si necesita cualquiera de las caractersticas avanzadas que ofrece. Para un uso normal, los cuatro sistemas de archivos dan aproximadamente los mismos resultados. reiserfs permite acceder rpidamente a los archivos pequeos, pero es bastante lento para manipular archivos grandes (de muchos megabytes). En la mayora de los casos, las ventajas que brindan las posibilidades transaccionales de reiserfs hacen que sus inconvenientes sean de mnima importancia. Note que de manera predeterminada reiserfs se monta con la opcin notail. Esto signica que no hay optimizacin alguna para los archivos pequeos y que los archivos grandes se acceden a una velocidad normal.

9.2. Todo es un archivo


Gua de comienzo introdujo los conceptos de posesin de archivos y permisos de acceso, pero la verdadera comprensin del sistema de archivos de UNIX (y esto tambin se aplica a los sistemas de archivos de Linux) requiere que volvamos a denir el concepto de Qu es un archivo. Aqu, todo realmente signica todo. Un disco rgido, una particin en un disco rgido, un puerto paralelo, una conexin a un sitio web, una placa Ethernet, todos estos son archivos. Incluso los directorios son archivos. Linux reconoce muchos tipos de archivos adems de los archivos regulares y los directorios. Note que aqu por tipo de archivo no nos referimos al tipo de contenido de un archivo: para GNU/Linux y cualquier sistema UNIX, un archivo, ya sea una imagen GIF, un archivo binario o lo que sea, slo es un ujo de bytes. Diferenciar a los archivos de acuerdo a su contenido es algo que se deja a las aplicaciones.

9.2.1. Los diferentes tipos de archivos


Si recuerda bien, cuando Usted hace un ls -l, el caracter antes de los derechos de acceso identica el tipo de un archivo. Ya hemos visto dos tipos de archivos: los archivos regulares (-) y los directorios (d) Tambin puede encontrarse con estos otros tipos si se desplaza por el rbol de archivos y lista el contenido de los directorios: 1. Archivos de modo caracter. Estos archivos son o bien archivos especiales del sistema (tal como /dev/null, que ya hemos visto), o bien perifricos (puertos serie o paralelo), que comparten la particularidad de que su contenido (si es que tienen alguno) no est en un buffer (es decir, que no se conservan en memoria). Dichos archivos se identican con la letra c. 2. Archivos de modo bloque. Estos archivos son perifricos y, a diferencia de los archivos de modo caracter, su contenido est conservado en memoria. Los archivos que entran en esta categora son, por ejemplo, los discos rgidos, las particiones de un disco rgido, las unidades de disquete, las unidades de CD-ROM y as sucesivamente. Los archivos /dev/hda, /dev/sda5 son un ejemplo de archivos de modo bloque. En la salida de ls -l, estos estn identicados por la letra b. 3. Vnculos simblicos. Estos archivos son muy comunes, y se usan ampliamente en el procedimiento de inicio del sistema de Mandrakelinux (consulte Los archivos de arranque: init SYSV, pgina 77). Como su nombre lo indica, su propsito es vincular archivos de forma simblica, lo que signica que son archivos
2. Al momento de realizar este manual, ReiserFS4 no estaba incluido en el ncleo 2.6.X

63

Captulo 9. El sistema de archivos de Linux cuyo contenido es la ruta a un archivo diferente. Pueden no apuntar a un archivo existente. Con mucha frecuencia se los conoce como soft links (en ingls), y estn identicados por una l. 4. Tuberas nombradas. En caso que se lo pregunte, s, estos son muy similares a las tuberas usadas en los comandos del shell, pero con la particularidad que estas, en realidad, tienen nombre. Siga leyendo para aprender ms. Sin embargo, son muy raras, y es muy poco probable que vea una durante su viaje por el rbol de archivos. Slo en caso de que los vea, la letra que las identica es p. Para aprender ms acerca de ellas consulte Tuberas annimas y tuberas nombradas, pgina 65. 5. Sockets. Este es el tipo de archivo para todas las conexiones de red. Pero slo unos pocos tienen nombre. Ms aun, hay distintos tipos de sockets y slo se puede vincular uno, pero esto va ms all del alcance de este libro. Dichos archivos se identican con la letra s. Aqu tiene un ejemplo de cada archivo:
$ ls -l /dev/null /dev/sda /etc/rc.d/rc3.d/S20random /proc/554/maps \ /tmp/ssh-reina/ssh-510-agent crw-rw-rw1 root root 1, 3 May 5 1998 /dev/null brw-rw---1 root disk 8, 0 May 5 1998 /dev/sda lrwxrwxrwx 1 root root 16 Dec 9 19:12 /etc/rc.d/rc3.d/ S20random -> ../init.d/random* pr--r--r-1 reina reina 0 Dec 10 20:23 /proc/554/maps| srwx-----1 reina reina 0 Dec 10 20:08 /tmp/ssh-reina/ ssh-510-agent= $

9.2.2. Inodos
Los inodos son, junto con el paradigma Todo es un archivo, la parte fundamental de cualquier sistema de archivos UNIX. La palabra inodo es una abreviacin de NODO de Informacin (Information NODE). Los inodos se almacenan en el disco en una tabla de inodos. Existen para todos los tipos de archivos que se pueden almacenar en un sistema de archivos, y esto incluye a los directorios, las tuberas nombradas, los archivos de modo caracter, y as sucesivamente. Esto nos lleva a esta otra frase famosa: El inodo es el archivo. Los inodos tambin son la forma en la que UNIX identica a un archivo de forma unvoca.

S, ley bien: en UNIX, Usted no identica a un archivo por su nombre, sino por un nmero de inodo3. La razn para esto es que un mismo archivo puede tener varios nombres, o incluso ninguno. En UNIX, un nombre de archivo es simplemente una entrada en un inodo de directorio. Tal entrada se denomina vnculo. Veamos a los vnculos con ms detalle.

9.3. Los v nculos


La mejor forma de comprender qu hay detrs de esta nocin de vnculo es por medio de un ejemplo. Creemos un archivo (regular):
$ pwd /home/reina/ejemplo $ ls $ touch a $ ls -il a 32555 -rw-rw-r-1 reina

reina

0 sep 10 08:12 a

La opcin -i del comando ls imprime el nmero de inodo, que es el primer campo de la salida. Como puede ver, antes de crear el archivo a, no haba archivo alguno en el directorio. El otro campo de inters es el tercero, que es el contador de vnculos del archivo (bueno, de hecho, del inodo). El comando touch a puede separarse en dos acciones distintas:
3. Importante: note que los nmeros de inodo son nicos para cada sistema de archivos, lo cual signica que puede existir un inodo con el mismo nmero en otro sistema de archivos Esto nos lleva a la diferencia entre inodos en disco e inodos en memoria. Aunque los inodos en disco pueden tener el mismo nmero si se encuentran en sistemas de archivo diferentes, los inodos en memoria tienen un nmero nico a travs de todo el sistema. Una solucin para obtener la unicidad es, por ejemplo, hacer un hash del nmero de inodo en disco contra el identicador del dispositivo de bloques.

64

Captulo 9. El sistema de archivos de Linux

la creacin de un inodo, al cual el sistema le atribuy el nmero 32555, y cuyo tipo es el de un archivo regular; la creacin de un vnculo a este inodo, llamado a, en el directorio corriente, /home/reina/ejemplo. Por lo tanto, el archivo /home/reina/ejemplo/a es un vnculo al inodo numerado 32555, y por el momento es slo uno: el contador de vnculos muestra un 1.

Pero ahora, si ingresamos:


$ ln a b $ ls -il a b 32555 -rw-rw-r-32555 -rw-rw-r-$

2 reina 2 reina

reina reina

0 sep 10 08:12 a 0 sep 10 08:12 b

habremos creado otro vnculo al mismo inodo. Como puede ver, no hemos creado archivo alguno denominado b, sino que slo hemos agregado otro vnculo al inodo numerado 32555 en el mismo directorio y lo denominamos b. Puede ver en la salida de ls -il que el contador de vnculos para el inodo ahora es 2, y ya no es 1. Ahora, si hacemos:
$ rm a $ ls -il b 32555 -rw-rw-r-$

1 reina

reina

0 sep 10 08:12 b

vemos que incluso cuando hemos borrado el archivo original, el inodo todava existe. Pero ahora el nico vnculo a l es el archivo denominado /home/reina/ejemplo/b. Por lo tanto, bajo UNIX un archivo no tiene nombre alguno; en su lugar, tiene uno o ms vnculos en uno o ms directorios.

Tambin los directorios se almacenan en inodos, pero su contador de vnculos, contrariamente a todos los otros tipos de archivos, es el nmero de subdirectorios que contiene. Existen al menos dos vnculos por directorio: el directorio en s mismo (.) y su directorio padre (..). Ejemplos tpicos de archivos que no estn vinculados (es decir, no tienen nombre) son las conexiones de red; Usted nunca ver el archivo correspondiente a su conexin con el sitio web de Mandrakelinux (http://www. mandrakelinux.com/) en su rbol de archivos, sin importar que directorio intente. Similarmente, cuando usa una tubera en el shell, el inodo que corresponde a la misma existe, pero no est vinculado. Otro uso de los inodos sin nombre es en los archivos temporales. Usted crea un archivo temporal, y luego lo elimina. El archivo existe mientras est abierto, pero nadie lo puede abrir (ya que no hay nombre por el cual abrirlo). De esta forma, si la aplicacin falla, el archivo temporal se elimina automticamente.

9.4. Tuber annimas y tuber nombradas as o as


Volvamos al ejemplo de las tuberas, ya que es sumamente interesante adems de ser una buena ilustracin de la nocin de vnculos. Cuando usa una tubera en una lnea de comandos, el shell crea la tubera por Usted y la opera de tal manera que el comando que se encuentra delante de la misma escribe en ella, mientras que el comando que se encuentra detrs de la misma lee de ella. Todas las tuberas, ya sean annimas (como las que usa el shell) o nombradas (ver abajo), funcionan segn el principio FIFO (First In, First Out, Primero en Llegar, Primero en Salir). Ya hemos visto ejemplos de como usar las tuberas en el shell, pero tomemos uno en pos de nuestra ilustracin:
$ ls -d /proc/[0-9] | head -5 /proc/1/ /proc/2/ /proc/3/ /proc/4/ /proc/5/

Una cosa que no notar en este ejemplo (porque ocurre muy rpido para que uno lo pueda ver) es que las escrituras en las tuberas son bloqueantes. Esto signica que cuando el comando ls escribe en la tubera, est bloqueado hasta que un proceso del otro lado lea sobre la misma. Para poder visualizar el efecto, puede crear

65

Captulo 9. El sistema de archivos de Linux tuberas nombradas, que al contrario de las usadas por el shell, tienen nombres (es decir, estn vinculadas, mientras que las del shell no lo estn)4. El comando para crear dichas tuberas es mkfifo:
$ mkfifo un_tubo $ ls -il total 0 169 prw-rw-r-1 reina reina 0 sep 10 # # Ud. puede ver que el contador de vnculos es 1, y que # que el archivo es una tubera (p) # # Aqu tambin puede usar ln: e # $ ln un_tubo el_mismo_tubo $ ls -il total 0 169 prw-rw-r-2 reina reina 0 sep 10 169 prw-rw-r-2 reina reina 0 sep 10 $ ls -d /proc/[0-9] >un_tubo # # El proceso est bloqueado, ya que no hay quien lea en a # Teclee C-z para suspender el proceso... # bash: 3452 suspended ls -d /proc/[0-9] > un_tubo # # ...Luego pngalo en 2do. plano: o # $ bg [1] + continued ls -d /proc/[0-9] > un_tubo # # ahora lea del tubo... # $ head -5 <el_mismo_tubo # # ...el proceso que escribe termina # [1] + 3452 done ls -d /proc/[0-9] > un_tubo /proc/1/ /proc/2/ /proc/3/ /proc/4/ /proc/5/ #

14:12 un_tubo| la salida muestra

15:37 un_tubo| 15:37 el_mismo_tubo|

el otro extremo.

Similarmente, tambin las lecturas son bloqueantes. Si ejecutamos los comandos anteriores en orden inverso, observaremos que head se bloquea, esperando que algn proceso le de algo para leer:
$ head -5 <un_tubo # # El programa se bloquea, suspenderlo: C-z # bash: 741 suspended head -5 < un_tubo # # Ponerlo en segundo plano... # $bg [1] + continued head -5 < un_tubo # # ...Y darle algo de comer :) # $ ls -d /proc/[0-9] >el_mismo_tubo $ /proc/1/ /proc/2/ /proc/3/ /proc/4/ /proc/5/ [1] + 741 done head -5 < un_tubo $

En el ejemplo previo tambin se puede ver un efecto no deseado: el comando ls termin antes que el comando head tomara el relevo. La consecuencia es que Usted volvi al prompt inmediatamente, pero head slo se ejecutar despus. Por lo tanto slo efectu su salida despus que Usted volvi al prompt.
4. Existen otras diferencias entre los dos tipos de tuberas, pero las mismas estn fuera del alcance de este libro.

66

Captulo 9. El sistema de archivos de Linux

9.5. Los archivos especiales: modo bloque y caracter


Como ya se mencion, dichos archivos son archivos creados por el sistema, o bien representan perifricos en su mquina. Tambin hemos mencionado que el contenido de los archivos en modo bloque est guardado en memoria mientras que el de los de modo caracter no lo est. Para ilustrar esto, inserte un disquete en la disquetera e ingrese el comando siguiente dos veces:
$ dd if=/dev/fd0 of=/dev/null

Usted puede observar lo siguiente: mientras que, la primera vez que se lanz el comando, se ley todo el contenido del disquete, la segunda vez no se accedi a la disquetera en absoluto. Esto se debe simplemente a que el contenido de la disquetera se guard en memoria la primera vez que se lanz el comando y entre tanto Usted no cambie el disquete, el mismo permanece all. Pero ahora, si quiere imprimir un archivo grande de esta forma (s, va a funcionar):
$ cat /un/archivo/grande/imprimible/en/algun/lugar >/dev/lp0

el comando tardar el mismo tiempo si lo lanza una vez, dos veces, o cincuenta veces. Esto se debe a que /dev/lp0 es un archivo de modo caracter y su contenido no se conserva en memoria. El hecho de que los archivos de modo bloque se conserven en memoria tiene un efecto secundario interesante: no slo se conservan las lecturas sino tambin las escrituras. Esto permite que las escrituras en el disco sean asncronas: cuando Usted escribe un archivo en disco, la operacin de escritura en s misma no es inmediata. Slo ocurrir cuando el ncleo GNU/Linux decida ejecutar la escritura en el hardware. Finalmente, cada archivo especial tiene un nmero mayor y uno menor. Aparecen en la respuesta de ls -l, en lugar del tamao, debido a que el tamao para este tipo de archivos es irrelevante:
$ ls -l /dev/ide/host0/bus0/target0/lun0/disc /dev/printers/0 brw------- 1 root root 3, 0 dic 31 1969 /dev/ide/host0/bus0/target0/lun0/disc crw-rw---- 1 lp sys 6, 0 dic 31 1969 /dev/printers/0

Aqu, los nmeros mayor y menor de /dev/ide/host0/bus0/target0/lun0/disc son 3 y 0, mientras que para /dev/printers/0 son 6 y 0. Note que estos nmeros son nicos por categora de archivo, lo que signica que puede haber un archivo de modo caracter con 3 por mayor y 0 por menor (de hecho, este archivo existe: /dev/ pty/s0), y similarmente slo puede haber un archivo de modo bloque con 6 por mayor y 0 por menor. Estos nmeros existen por una razn simple: le permiten al ncleo asociar las operaciones adecuadas para estos archivos (es decir, con los perifricos a los cuales se reeren estos archivos): no se controla a una disquetera de la misma manera que, digamos, a un disco rgido SCSI.

Aqu tenemos que enfrentar una concepcin comnmente equivocada, aun entre usuarios de UNIX, que principalmente se debe al hecho de que los vnculos tal y como los hemos visto (errneamente llamados vnculos duros) slo estn asociados a archivos regulares (y hemos visto que este no es el caso e incluso que los vnculos simblicos estn vinculados). Pero esto requiere que expliquemos primero qu son los vnculos simblicos (En ingls los vnculos simblicos se denominan softlinks, o ms comnmente symlinks). Los vnculos simblicos son archivos de un tipo particular que slo contienen una cadena de caracteres arbitraria, que puede, o no, apuntar a un nombre de archivo existente. Cuando se menciona un vnculo simblico en la lnea de comandos o en un programa, de hecho se accede al archivo al que apunta, si es que existe. Por ejemplo:
$ echo Hola >miarchivo $ ln -s miarchivo mivinculo $ ls -il total 4 169 -rw-rw-r-1 reina 416 lrwxrwxrwx 1 reina $ cat miarchivo Hola $ cat mivinculo Hola

9.6. Los v nculos simblicos y la limitacin de los v o o nculos duros

reina reina

6 sep 10 21:30 miarchivo 6 sep 10 21:30 mivinculo -> miarchivo

Puede ver que el tipo de archivo para mivinculo es l, por Link (Vnculo) Los derechos de acceso para un vnculo simblico son insignicantes: siempre sern rwxrwxrwx. Tambin puede ver que este es un archivo 67

Captulo 9. El sistema de archivos de Linux diferente de miarchivo, ya que su nmero de inodo es diferente. Pero se reere al archivo miarchivo de manera simblica, por lo tanto cuando ingresa cat mivinculo, en realidad estar imprimiendo el contenido del archivo miarchivo. Para demostrar que un vnculo simblico contiene una cadena de caracteres arbitraria, podemos hacer lo siguiente:
$ ln -s "No soy un archivo existente" otrovinculo $ ls -il otrovinculo 418 lrwxrwxrwx 1 reina reina 20 sep 10 21:43 otrovinculo -> No soy un archivo existente $ cat otrovinculo cat: otrovinculo: No existe el fichero o el directorio $

Pero los vnculos simblicos existen porque superan varias de las limitaciones de los vnculos normales (duros):

no se puede crear un vnculo a un inodo en un directorio que est en un sistema de archivos diferente a dicho inodo. La razn es simple: el contador de vnculos se almacena en el inodo en s mismo, y los inodos no pueden compartirse entre los sistemas de archivos. Los vnculos simblicos s lo permiten; no se pueden vincular dos directorios para evitar crear ciclos en el sistema de archivos. Pero Usted puede hacer que un vnculo simblico apunte a un directorio y usarlo como si realmente fuera un directorio.

Por lo tanto los vnculos simblicos son muy tiles en muchas circunstancias, y muy a menudo, la gente tiende a usarlos para vincular archivos entre s, incluso cuando podra haberse usado un vnculo normal. No obstante, una ventaja de los vnculos normales es que Usted no pierde el archivo si borra el original. Finalmente, si ha observado atentamente, sabr que el tamao de un vnculo simblico es simplemente el tamao de la cadena de caracteres.

9.7. Los atributos de los archivos


De la misma forma en que FAT tiene atributos de archivo (archivado, archivo de sistema, invisible), los sistemas de archivos de GNU/Linux tienen los suyos propios, pero son diferentes. Hablaremos brevemente de ellos aqu en pos de la integridad, pero no son muy usados. Sin embargo, si realmente desea un sistema sumamente seguro, siga leyendo.

Hay dos comandos para manipular los atributos de los archivos: lsattr(1) y chattr(1). Probablemente ya haya adivinado, lsattr muestra los atributos (del ingls LiSt), mientras que chattr los cambia (del ingls CHange). Estos atributos slo se pueden aplicar a los directorios y a los archivos regulares. Los atributos posibles son los siguientes: 1. A (no Access time, sin tiempo de Acceso): si un archivo o directorio tiene este atributo activo, cuando sea accedido, ya sea para lectura o para escritura, no se actualizar su ltima fecha de acceso. Esto puede ser til, por ejemplo, para archivos o directorios que se acceden para lectura muy a menudo, especialmente debido a que este parmetro es el nico que cambia en un inodo cuando se abre como slo de lectura. 2. a (append only, Slo para adjuntar): si un archivo tiene este atributo activo y se abre para escritura, la nica operacin posible ser agregar datos a su contenido previo, pero no renombrar ni borrar el archivo existente. Slo root puede activar o desactivar este atributo. 3. d (no dump, sin respaldo): dump (8) es el utilitario UNIX estndar para copias de seguridad. Vuelca cualquier sistema de archivos para el cual el contador de respaldo est en 1 en /etc/fstab (consulte el captulo Sistemas de archivos y puntos de montaje, pgina 57). Pero si un archivo o un directorio tiene este atributo activo, a diferencia del resto, no ser tomado en cuenta cuando se lleve a cabo un respaldo. Note que para los directorios, esto tambin incluye a todos los archivos y subdirectorios que contienen. 4. i (immutable, inmutable): un archivo o directorio que tiene este atributo activo sencillamente no puede modicarse en absoluto: no se puede renombrar, no se puede crear algn otro vnculo al mismo5 y no se puede borrar. Slo root puede activar o desactivar este atributo. Note que esto tambin impide cambios al tiempo de acceso, por lo tanto no necesita activar tambin el atributo A cuando se activa i.
5. Debe asegurarse de entender que signica agregar un vnculo tanto para un archivo como para un directorio!

68

Captulo 9. El sistema de archivos de Linux 5. s (secure deletion, borrado seguro): cuando se borra un archivo o directorio con este atributo activo, los bloques que estaba ocupando en el disco se sobreescriben con ceros. 6. S (Synchronous mode, modo Sincrnico): cuando un archivo o directorio tiene este atributo activo, todas las modicaciones sobre el mismo son sincrnicas y se escriben en el disco inmediatamente. Por ejemplo, podra querer activar el atributo i en los archivos esenciales del sistema para evitar malas sorpresas. Tambin considere el atributo A en las pginas Man por ejemplo: esto evita un montn de operaciones de disco y, en particular, prolonga la duracin de la batera en las porttiles.

69

Captulo 9. El sistema de archivos de Linux

70

Cap tulo 10. El sistema de archivos /proc


El sistema de archivos /proc es algo especco de GNU/Linux. El mismo es un sistema de archivos virtual, y como tal, no ocupa lugar en disco. Es una forma muy conveniente de obtener informacin sobre el sistema, ya que la mayora de los archivos de este directorio son legibles (bueno, con un poco de ayuda). De hecho, muchos programas obtienen informacin de los archivos de /proc, la formatean a su manera y luego la muestran. Este es el caso de todos los programas que muestran informacin sobre los procesos, y ya hemos visto algunos de ellos (top, ps y otros). /proc tambin es una buena fuente de informacin sobre su hardware, y similarmente, unos cuantos programas slo son interfaces para la informacin contenida en /proc. Tambin hay un subdirectorio especial, /proc/sys. Este permite cambiar algunos parmetros del ncleo en tiempo real, o consultarlos.

10.1. Informacin sobre los procesos o


Si Usted lista el contenido del directorio /proc, ver muchos directorios cuyo nombre es un nmero. Estos son los directorios que contienen informacin sobre todos los procesos que estn corriendo en el sistema en ese momento:
$ ls -d /proc/[0-9]* /proc/1/ /proc/302/ /proc/127/ /proc/317/ /proc/2/ /proc/339/ /proc/250/ /proc/385/ /proc/260/ /proc/4/ /proc/275/ /proc/402/ /proc/290/ /proc/433/ /proc/3/ /proc/450/ /proc/451/ /proc/452/ /proc/453/ /proc/454/ /proc/455/ /proc/463/ /proc/487/ /proc/491/ /proc/496/ /proc/497/ /proc/5/ /proc/501/ /proc/504/ /proc/505/ /proc/509/ /proc/554/ /proc/556/ /proc/557/ /proc/558/ /proc/559/ /proc/565/ /proc/569/ /proc/594/ /proc/595/ /proc/633/ /proc/718/ /proc/755/ /proc/760/ /proc/761/ /proc/769/ /proc/774/

Note que como usuario no privilegiado, Usted (lgicamente) slo puede mostrar la informacin relacionada con sus propios procesos, pero no con los de los otros usuarios. Entonces, seamos root y veamos que informacin est disponible acerca del proceso 127:
$ su Password: $ cd /proc/127 $ ls -l total 0 -r--r--r-1 lrwx-----1 -r-------1 lrwx-----1 dr-x-----2 pr--r--r-1 -rw------1 lrwx-----1 -r--r--r-1 -r--r--r-1 -r--r--r-1 $

root root root root root root root root root root root

root root root root root root root root root root root

0 0 0 0 0 0 0 0 0 0 0

dic dic dic dic dic dic dic dic dic dic dic

14 14 14 14 14 14 14 14 14 14 14

19:53 19:53 19:53 19:53 19:53 19:53 19:53 19:53 19:53 19:53 19:53

cmdline cwd -> // environ exe -> /usr/sbin/apmd* fd/ maps| mem root -> // stat statm status

Cada directorio contiene las mismas entradas. Aqu tiene una descripcin breve de algunas de ellas: 1. cmdline: este (pseudo-)archivo contiene toda la lnea de comandos usada para invocar al proceso. No tiene formato: no hay un espacio entre el programa y sus argumentos, y tampoco hay un salto de lnea al nal. Para poder verlo, puede usar: perl -ple s,\00, ,g cmdline. 2. cwd: este vnculo simblico apunta al directorio de trabajo corriente (current working directory en ingls, de all el nombre) del proceso. 3. environ: este archivo contiene todas las variables de entorno denidas por este proceso, de la forma VARIABLE=valor. Al igual que con cmdline, la salida no tiene formato alguno: no hay saltos de lnea para separar las diferentes variables, y tampoco al nal. Una solucin para verlo:perl -ple s,\00,\n,g environ. 4. exe: este es un vnculo simblico que apunta al archivo ejecutable correspondiente al proceso en curso de ejecucin.

71

Captulo 10. El sistema de archivos /proc 5. fd: este subdirectorio contiene la lista de los descriptores de archivo abiertos actualmente por el proceso. Vea abajo. 6. maps: cuando Usted muestra el contenido de esta tubera nombrada (por ejemplo, con cat), puede ver las partes del espacio de direccionamiento del proceso que en ese momento estn proyectadas sobre un archivo. Los campos, de izquierda a derecha, son: el espacio de direccionamiento asociado a esta proyeccin, los permisos asociados a esta proyeccin, el desplazamiento desde el comienzo del archivo donde comienza la proyeccin, el dispositivo en el cual se encuentra el archivo proyectado, el nmero de i-nodo del archivo, y nalmente el nombre del archivo en s mismo. Consulte mmap(2). 7. root: este es un vnculo simblico que apunta al directorio raz usado por el proceso. Generalmente, ser /, pero consulte chroot(2). 8. status: este archivo contiene informacin diversa sobre el proceso: el nombre del ejecutable, su estado corriente su PID y su PPID, sus UID y GID reales y efectivos, su uso de memoria, y otra informacin. Note que los archivos stat y statm ahora son obsoletos. La informacin que contenan ahora se almacena en status. Si listamos el contenido del directorio fd, siempre para nuestro proceso 127, obtenemos lo siguiente:
$ ls -l fd total 0 lrwx-----l-wx-----l-wx-----l-wx-----lrwx-----lr-x-----lrwx-----/dev/console $

1 1 1 1 1 1 1

root root root root root root root

root root root root root root root

64 64 64 64 64 64 64

dic dic dic dic dic dic dic

16 16 16 16 16 16 16

22:04 22:04 22:04 22:04 22:04 22:04 22:04

0 -> /dev/console 1 -> pipe:[128] 2 -> pipe:[129] 21 -> pipe:[130] 3 -> /dev/apm_bios 7 -> pipe:[130] 9 ->

De hecho, esta es la lista de los descriptores de archivo que abri el proceso. Cada descriptor abierto est materializado por un vnculo simblico cuyo nombre es el nmero del descriptor, y que apunta al archivo abierto por este descriptor1. Tambin puede notar los permisos sobre los vnculos simblicos: este es el nico lugar donde los derechos tienen sentido, ya que representan los permisos con los cuales se abri el archivo correspondiente al descriptor.

10.2. Informacin sobre el hardware o


Aparte de los directorios asociados a los diferentes procesos, /proc tambin contiene una mirada de informacin sobre el hardware presente en su mquina. Un listado de los archivos del directorio /proc da lo siguiente:
$ ls -d [a-z]* apm dma bus/ fb cmdline filesystems cpuinfo fs/ devices ide/ $ interrupts ioports kcore kmsg ksyms loadavg locks meminfo misc modules mounts mtrr net/ partitions pci rtc scsi/ self/ slabinfo stat swaps sys/ tty/ uptime version

Por ejemplo, si observamos el contenido de /proc/interrupts, podemos ver la lista de las interrupciones que el sistema est usando en ese momento, junto con el perifrico que las est ocupando. Similarmente, ioports contiene la lista de los rangos de direcciones de entrada/salida ocupados en ese momento, y nalmente, dma hace lo mismo para los canales DMA. Por lo tanto, si desea solucionar un conicto, observe el contenido de estos tres archivos:
$ cat interrupts CPU0 0: 44326691 1: 208243 2: 0 4: 3 8: 1

XT-PIC XT-PIC XT-PIC XT-PIC XT-PIC

timer keyboard cascade serial rtc

1. Si recuerda lo que se mencion en la seccin Redirecciones y tuberas, pgina 25, sabr el signicado de los descriptores 0, 1 y 2.

72

Captulo 10. El sistema de archivos /proc


11: 1829559 tro 2E 12: 1937874 14: 1517672 NMI: 0 LOC: 0 ERR: 0 MIS: 0 XT-PIC XT-PIC XT-PIC usb-uhci, eth0, Texas Instruments PCI1225, Texas Instruments PCI1225 (#2), ESS MaesPS/2 Mouse ide0

$ cat ioports 0000-001f : dma1 0020-003f : pic1 0040-005f : timer 0060-006f : keyboard 0070-007f : rtc 0080-008f : dma page reg 00a0-00bf : pic2 00c0-00df : dma2 00f0-00ff : fpu 01f0-01f7 : ide0 0378-037a : parport0 037b-037f : parport0 03c0-03df : vga+ 03e8-03ef : serial(auto) 03f6-03f6 : ide0 03f8-03ff : serial(auto) 0cf8-0cff : PCI conf1 2000-2fff : PCI Bus #01 2000-20ff : ATI Technologies Inc Rage Mobility P/M AGP 2x 3000-30ff : ESS Technology ES1978 Maestro 2E 3000-30ff : ESS Maestro 2E 3400-341f : Intel Corp. 82371AB PIIX4 USB 3400-341f : usb-uhci 3420-342f : Intel Corp. 82371AB PIIX4 IDE 3420-3427 : ide0 3430-3437 : Lucent Microelectronics LT WinModem 3440-347f : Intel Corp. 82557 [Ethernet Pro 100] 3440-347f : eepro100 4000-401f : Intel Corp. 82371AB PIIX4 ACPI 4400-44ff : PCI CardBus #02 4800-48ff : PCI CardBus #02 4c00-4cff : PCI CardBus #03 5000-503f : Intel Corp. 82371AB PIIX4 ACPI 5400-54ff : PCI CardBus #03 $ cat dma 4: cascade $

O, ms simplemente, use el comando lsdev el cual obtiene informacin de estos tres archivos y la ordena por perifrico, lo cual es, indudablemente, ms conveniente2:
$ lsdev Device DMA IRQ I/O Ports -----------------------------------------------2E 11 ATI 2000-20ff cascade 4 2 dma 0080-008f dma1 0000-001f dma2 00c0-00df eepro100 3440-347f ESS 3000-30ff 3000-30ff fpu 00f0-00ff ide0 14 01f0-01f7 03f6-03f6 3420-3427 Intel 3400-341f 3420-342f 3440-347f 4000-401f 5000-503f keyboard 1 0060-006f Lucent 3430-3437 Mouse 12 parport0 0378-037a 037b-037f PCI 0cf8-0cff 2000-2fff 4400-44ff 4800-48ff 4c00-4cff 5400-54ff pic1 0020-003f pic2 00a0-00bf

2.

lsdev es parte del paquete procinfo.

73

Captulo 10. El sistema de archivos /proc


rtc serial timer usb-uhci vga+ $ 8 4 0 0070-007f 03e8-03ef 03f8-03ff 0040-005f 3400-341f 03c0-03df

Una lista exhaustiva de los archivos presentes sera demasiado larga, sin embargo aqu tiene la descripcin de algunos:

cpuinfo: este archivo contiene, como su nombre (en ingls) lo indica, informacin sobre el(los) procesador(es) presente(s) en su mquina. modules: este archivo contiene una lista de los mdulos que el ncleo est usando en ese momento, junto con el conteo del uso para cada uno. De hecho, esta es la misma informacin que reporta el comando lsmod. meminfo: este archivo contiene informacin sobre el uso de la memoria en el momento que Usted muestra su contenido. Una informacin ordenada ms claramente est disponible con el comando free. apm: si Usted tiene una porttil, al mostrar el contenido de este archivo ver el estado de su batera. Puede ver si est conectada la alimentacin externa, la carga actual de su batera, y la vida til de la batera si el BIOS APM de su porttil lo soporta (desafortunadamente, este no es el caso general). Este archivo en s mismo no es muy legible, por lo tanto querr usar el comando apm en su lugar, que proporciona la misma informacin en un formato legible (si comprende el ingls...). Note que las computadoras modernas ahora brindan soporte para ACPI en vez de APM. Ver ms adelante. bus: este subdirectorio contiene informacin sobre todos los perifricos que se encuentran en los diferentes buses de su mquina. Por lo general, la informacin es poco legible, y en su mayora se trata y se vuelve a formatear con utilitarios externos: lspcidrake, lspnp, etc. acpi: Varios de los archivos provistos en este directorio son interesantes, en especial para las porttiles, ya que en los mismos puede seleccionar varias opciones de ahorro de energa. Note que es ms fcil modicar estas opciones a travs de aplicaciones de ms alto nivel, tales como las que se incluyen en los paquetes acpid y kacpi. Las entradas ms interesantes son: battery muestra cuntas bateras hay en la porttil, e informacin relacionada tal como la carga que les queda, la capacidad mxima, etc. button Le permite controlar acciones asociadas a los botones especiales tales como la energa, dormir, levantar, etc. fan Muestra el estado de los ventiladores en su computadora, si estn corriendo o no, y le permite iniciarlos/detenerlos de acuerdo a ciertos criterios. La cantidad de control sobre los ventiladores de su mquina depende de su placa madre. processor Hay un subdirectorio para cada una de las CPU de su mquina. Las opciones de control varan de un procesador a otro. Los procesadores mviles tienen ms caractersticas habilitadas, incluyendo:

la posibilidad de usar uno de varios estados de energa, balanceando entre rendimiento y consumo de energa. la posibilidad de usar el cambio de la tasa de reloj para reducir la cantidad de energa que consume la CPU.

Note que hay varios procesadores que no ofrecen estas posibilidades.

74

Captulo 10. El sistema de archivos /proc thermal_zone Informacin acerca de cuan caliente est corriendo su sistema/procesador.

10.3. El subdirectorio /proc/sys


El rol de este subdirectorio es reportar los diferentes parmetros del ncleo, y permitir cambiar en tiempo real algunos de ellos. A diferencia de todos los dems archivos en /proc, algunos archivos de este directorio se pueden escribir, pero solo root puede hacerlo. Una lista de los directorios y archivos presentes sera demasiado larga, mayormente debido a que el contenido de los directorios depende del sistema y que la mayora de los archivos slo son tiles para aplicaciones especcas. Sin embargo, aqu tiene dos usos comunes de este subdirectorio: 1. Autorizar el ruteo: Aunque el ncleo predeterminado de Mandrakelinux puede enrutar, Usted debe autorizarlo explcitamente. Para ello, tiene que ingresar el comando siguiente como root:
$ echo 1 >/proc/sys/net/ipv4/ip_forward

Reemplace el 1 por un 0 si desea prohibir el ruteo. 2. Prevenir la usurpacin de la direccin IP: (IP Spoong, en ingls) consiste en hacerle creer a uno que un paquete que viene del mundo externo viene de la interfaz por la cual llega. Esta tcnica es muy usada por los crackers3, pero Usted puede hacer que el ncleo prevenga este tipo de intrusin. Slo debe ingresar:
$ echo 1 >/proc/sys/net/ipv4/conf/all/rp_filter

y este tipo de ataque se vuelve imposible. Para que estos parmetros se apliquen cada vez que arranque el sistema, puede agregar todas estas lneas al archivo /etc/rc.d/rc.local para evitar tener que volver a ingresarlas cada vez, pero otra solucin es completar /etc/sysctl.conf, consulte sysctl.conf(5).

3.

Y no por los hackers!

75

Captulo 10. El sistema de archivos /proc

76

Cap tulo 11. Los archivos de arranque: init SYSV


El esquema de arranque System V, heredado de AT&T UNIX, es uno de los esquemas de arranque del sistema tradicionales. El mismo es el responsable de iniciar o detener servicios para llevar al sistema a uno de los estados del sistema predeterminados. Los servicios van desde la autenticacin bsica de usuarios hasta el servidor grco local o los servicios Internet.

drakxservices es la herramienta Mandrakelinux que le permite iniciar o detener servicios manualmente. Est disponible en la seccin a o Sistema, icono Servicios del Centro de Control de Mandrakelinux.

11.1. Al comienzo estaba init


Cuando el sistema arranca, y luego de que el ncleo congur todo y mont la raz del sistema de archivos, se inicia el programa /sbin/init1. init es el padre de todos los procesos del sistema, y es el responsable de llevar al sistema al nivel de ejecucin (runlevel) deseado. Ms adelante veremos los niveles de ejecucin (consulte Los niveles de ejecucin, pgina 77). El archivo de conguracin de init es /etc/inittab. Este archivo tiene su propia pgina Man (inittab(5)), pero aqu describiremos slo algunos de los elementos de conguracin. La primer lnea que debera ser el foco de su atencin, es esta:
si::sysinit:/etc/rc.d/rc.sysinit

Esta lnea le dice a init que /etc/rc.d/rc.sysinit debe ejecutarse en la inicializacin del sistema (si signica System Init, Inicializacin del sistema) antes que cualquier otra cosa. Para determinar el nivel de ejecucin predeterminado, init busca entonces la lnea que contiene la palabra clave initdefault:
id:5:initdefault:

En este caso, init sabe que el nivel de ejecucin predeterminado es 5. Tambin sabe que para entrar en el nivel 5, debe ejecutar el comando siguiente:
l5:5:wait:/etc/rc.d/rc 5

Como puede ver, la sintaxis para cada uno de los niveles de ejecucin es similar. init tambin es responsable de reiniciar (respawn) ciertos programas que no pueden ser iniciados por otros procesos. Por ejemplo, cada uno de los programas de conexin que corren en cada una de las seis terminales virtuales2. La segunda consola virtual, se identica de esta manera:
2:2345:respawn:/sbin/mingetty tty2

11.2. Los niveles de ejecucin o


Todos los archivos relacionados con el arranque del sistema estn ubicados en el directorio /etc/rc.d. Aqu tiene la lista de los mismos:
$ ls /etc/rc.d init.d/ rc0.d/ rc* rc1.d/ rc2.d/ rc3.d/ rc4.d/ rc5.d/ rc6.d/ rc.alsa_default* rc.local* rc.modules* rc.sysinit*

Como ya se dijo, rc.sysinit es el primer archivo ejecutado por el sistema. Este es el archivo responsable de poner en su lugar la conguracin bsica de la mquina: tipo de teclado, conguracin de ciertos dispositivos, vericacin del sistema de archivos, etc.
1. Razn por la cual poner /sbin en un sistema de archivos que no sea la raz es un muy mala idea. Todava el ncleo no mont particin alguna hasta este momento, y por lo tanto no sera capaz de encontrar /sbin/init. 2. Si no desea seis consolas virtuales puede aadirlas o quitarlas modicando este archivo. Si desea incrementar el nmero de consolas puede tener hasta un mximo de 64. Pero no se olvide que X tambin corre en una consola virtual. Entonces, por lo menos deje una libre para X.

77

Captulo 11. Los archivos de arranque: init SYSV Luego se ejecuta el script rc, con el nivel de ejecucin deseado como argumento. Como hemos visto, el nivel de ejecucin es un simple entero, y para cada nivel de ejecucin <x> denido, debe haber un directorio rc<x> .d correspondiente. Entonces, en una instalacin tpica de Mandrakelinux, puede ver que estn denidos seis niveles de ejecucin:

0: Detencin de la mquina por completo; 1: modo monousuario; para ser usado en el caso de serios problemas o para la recuperacin del sistema. 2: modo multiusuario, sin soporte para redes; 3: modo multiusuario, con soporte para redes; 4: No usado; 5: Como 3, pero con la ejecucin de la interfaz grca de conexin; 6: Volver a iniciar.

Observemos, por ejemplo, el contenido del directorio rc5.d:


$ ls rc5.d K15postgresql@ K20nfs@ K20rstatd@ K20rusersd@ K20rwhod@ K30sendmail@ K35smb@ K60atd@ K96pcmcia@ S05apmd@ S10network@ S11portmap@ S12ypserv@ S13ypbind@ S15netfs@ S20random@ S30syslog@ S40crond@ S50inet@ S55named@ S55routed@ S60lpd@ S60nfs@ S66yppasswdd@ S75keytable@ S85gpm@ S85httpd@ S85sound@ S90xfs@ S99linuxconf@ S99local@

Como puede ver, todos los archivos de este directorio son vnculos simblicos, y todos tienen una forma muy especca. Su forma general es:
<S|K><orden><nombre_del_servicio>

La S signica arrancar (Start) el servicio, y la K signica detener (Kill) el servicio. Los scripts se ejecutan por nmero de orden ascendente, y si dos scripts tienen el mismo nmero, se aplica el orden alfabtico. Tambin podemos ver que cada vnculo simblico apunta a scripts ubicados en /etc/rc.d/init.d (excepto local), script que es responsable de controlar un servicio especco. Cuando el sistema entra en un nivel de ejecucin dado, comienza por ejecutar los vnculos K en orden: el comando rc busca donde apunta el vnculo, luego llama al script correspondiente con un argumento solo: stop (detener). Luego ejecuta los scripts S, todava usando el mismo mtodo, excepto por el hecho de que los scripts se llaman con el argumento start (iniciar). Por lo tanto, sin mencionar a todos los scripts, podemos ver que cuando el sistema entra en el nivel de ejecucin 5, primero ejecuta K15postgresql, es decir, /etc/rc.d/init.d/postgresql stop. Luego K20nfs, luego K20rstatd, hasta el ltimo; acto seguido, ejecuta todos los scripts S: primero S05ampd, que entonces invoca a /etc/rc.d/init.d/apmd start, y as sucesivamente. Armado con toda esta informacin, Usted puede crear su propio nivel de ejecucin completo en pocos minutos (por ejemplo, usando el nivel de ejecucin 4), o evitar el arranque o la detencin de un servicio borrando el vnculo simblico correspondiente. Tambin puede usar una cantidad de programas que son una interfaz para hacer esto, en particular drakxservices (consulte DrakXServices: Congurando los servicios al arranque en Gua de comienzo) que usa una interfaz grca, o chkconfig para la conguracin de modo texto.

Tambin puede usar el comando chkconfig para listar, aadir o e n quitar servicios en un nivel de ejecucin espec o co. Consulte chkcong(8).

78

Cap tulo 12. Compilando e instalando software libre


Frecuentemente se nos pregunta como instalar software libre desde los fuentes. Compilar software uno mismo es realmente fcil debido a que la mayora de los pasos a seguir son los mismos sin importar cual es el software a instalar. El propsito de este documento es guiar al principiante paso a paso y explicarle el signicado de cada movimiento. Asumimos que el lector tiene un conocimiento mnimo del sistema UNIX (del tipo de ls o mkdir por ejemplo). Esta gua no es ms que una gua, no es un manual de referencia. Es por esto que al nal se dan varios vnculos para poder responder las preguntas que queden. Probablemente se pueda mejorar esta gua, por lo que apreciaremos cualquier comentario o correccin sobre su contenido.

En este cap tulo utilizaremos chero para referirnos a un archivo en disco y archivo para referirnos a un paquete de cheros.

12.1. Introduccin o
Lo que hace la diferencia entre el software libre y el software propietario es el acceso al cdigo fuente del software1. Eso signica que el software libre se distribuye como archivos de cheros fuente. Esto puede resultar poco familiar a los principiantes, porque los usuarios de software libre deben compilar ellos mismos los fuentes antes de poder usar el software. Hay versiones compiladas de la mayora del software libre existente. El usuario apurado no tiene ms que instalar estos binarios precompilados. Sin embargo, algn software libre no se distribuye bajo esta forma, o las versiones ms recientes todava no se distribuyen en forma binaria. Ms aun, si usa un sistema operativo extico o una arquitectura extica, un montn de software no va a estar ya compilado para Usted. Es ms, compilar el software uno mismo permite conservar slo las opciones interesantes o extender las funcionalidades del mismo agregando extensiones para obtener un software que responde perfectamente a sus necesidades.

12.1.1. Requisitos
Para compilar software, necesitar:

una computadora con un sistema operativo funcionando; conocimiento general del sistema operativo que Usted usa; algo de espacio en su disco rgido; un compilador (generalmente para el lenguaje C) y un archivador (tar); algo de comer (en los casos difciles, puede durar un tiempo largo). Un verdadero hacker come pizza, no tornillos; algo de beber (por las mismas razones). Un verdadero hacker bebe cola con gas por la cafena; el nmero de telfono de su gur tecnolgico, ese que recompila el ncleo todas las semanas; pero por sobre todo, paciencia, y mucha!

Compilar desde el cdigo fuente generalmente no presenta muchos problemas, pero si Usted no est acostumbrado, el menor tropiezo lo puede poner en una posicin dicultosa o puede hacer que desista. El propsito de este documento es precisamente mostrarle como escapar de tal situacin.

1. Esto no es completamente cierto ya que ya que algunos software propietarios tambin ofrecen su cdigo fuente. Pero, a diferencia de lo que ocurre con el software libre, el usuario nal no puede usar o modicar el cdigo fuente de la manera que l desee.

79

Captulo 12. Compilando e instalando software libre

12.1.2. Compilacin o
12.1.2.1. Los principios
Para poder traducir un cdigo fuente a un chero binario, es necesario efectuar una compilacin. Esta se hace generalmente sobre programas escritos en lenguaje C o C++ (que son los lenguajes ms usados en la comunidad de software libre, notablemente en el mundo UNIX). Ciertos software libres estn escritos en lenguajes que no necesitan compilacin (por ejemplo perl o el shell), pero an as, estos necesitan algo de conguracin. Lgicamente, la compilacin C est hecha por un compilador C que por lo general es gcc, el compilador libre escrito por el proyecto GNU (http://www.gnu.org/). La compilacin de todo un paquete de software es una tarea compleja, que pasa por la compilacin satisfactoria de cheros fuente diferentes (para el programador es ms fcil poner las diferentes partes de su trabajo en cheros separados, por varios motivos) Para hacer ms fcil esta tarea, estas operaciones repetitivas son efectuadas por un utilitario denominado make.

12.1.2.2. Las cuatro fases de la compilacin o


Para comprender como funciona la compilacin (para poder resolver posibles problemas), uno tiene que conocer las fases involucradas. El objetivo es convertir poco a poco un texto escrito en un lenguaje comprensible por un ser humano entrenado (por ejemplo, el lenguaje C), a un lenguaje comprensible por una mquina (o por un ser humano muy entrenado, aunque slo en casos raros). gcc ejecuta cuatro programas uno tras otro, cada uno de los cuales se encarga de una etapa: 1. cpp: la primera etapa consiste en reemplazar las directivas (preprocesadores) por instrucciones C puras. Tpicamente, esto signica insertar un chero de encabezado o header (#include), o denir una funcin macro (#define). Al nal de esta fase, se genera cdigo C puro. 2. cc1: esta fase consiste en convertir el C en lenguaje ensamblador. El cdigo generado depende de la arquitectura de destino. 3. as: esta fase consiste en generar el cdigo objeto (o cdigo binario) a partir del lenguaje ensamblador. Al nal de esta fase, se generar un chero con extensin .o. 4. ld: la ltima fase (la edicin de vnculos, en ingls linkage) ensambla (o vincula) todos los cheros objeto (.o) y las bibliotecas asociadas, y produce un chero ejecutable.

12.1.3. La estructura de una distribucin o


Una distribucin de software libre correctamente estructurado siempre tiene la misma organizacin:

Un chero denominado INSTALL, que describe el proceso de instalacin. Un chero denominado README, que contiene informacin general relacionada con el programa (descripcin breve, autor, la URL desde donde se puede bajar, documentacin relacionada, vnculos tiles, etc). Si falta el chero INSTALL, generalmente el chero README contiene una descripcin breve del procedimiento de instalacin. Un chero denominado COPYING, que contiene la licencia o describe las condiciones de distribucin del software. A veces lo reemplaza un chero denominado LICENSE, con el mismo contenido. Un chero denominado CONTRIB o CREDITS que contiene una lista de las personas relacionadas con el software (participacin activa, comentarios pertinentes, programas de terceros, etc.) Un chero denominado CHANGES (o, con menor frecuencia, NEWS, que contiene las mejoras y las correcciones de los bugs (errores en el software). Un chero denominado Makefile (consulte la seccin Make, pgina 86), que permite compilar el software (es un chero que necesita make). Generalmente este chero no existe al principio y se genera durante el proceso de conguracin. Bastante seguido, un chero configure o Imakefile, que permitir generar un chero Makefile nuevo personalizado para un sistema en particular (consulte Conguracin, pgina 83).

80

Captulo 12. Compilando e instalando software libre

Un directorio que contendr los fuentes, y donde generalmente se almacena el chero binario al nal de la compilacin. Por lo general, este directorio se denomina src. Un directorio que contiene la documentacin relacionada con el programa (generalmente en formato man o en formato Texinfo), cuyo nombre es, por lo general, doc. Eventualmente, un directorio que contiene los datos propios del programa (tpicamente, los cheros de conguracin, los ejemplos de los datos producidos, o cheros de recursos)

12.2. Descompresin o
12.2.1. Un archivo tar.gz
La norma2 de compresin bajo los sistemas UNIX es el formato gzip, desarrollado por el proyecto GNU, y considerado como una de las mejores herramientas de compresin general. Por lo general se asocia gzip a un utilitario denominado tar. tar es un sobreviviente de los tiempos prehistricos, cuando los informticos almacenaban sus datos en cintas magnticas. Hoy da, los disquetes, los CD-ROM y los DVD han reemplazado a las cintas3, pero todava se usa tar para crear archivos. Por ejemplo, se pueden agregar todos los cheros de un directorio a un solo archivo. Luego, este archivo se puede comprimir fcilmente con gzip. Esta es la razn por la cual muchos software libres estn disponibles como archivos tar, comprimidos con gzip. Por lo tanto, sus extensiones son .tar.gz (o tambin, su forma abreviada .tgz)

12.2.2. Utilizacin de GNU TAR o


Para descomprimir este archivo, Usted puede utilizar gzip y tar. Pero la versin GNU de tar (gtar) le permite utilizar gzip al vuelo, y descomprimir un archivo de manera transparente (y sin necesitar el espacio extra en el disco) La utilizacin de tar sigue este formato:
tar <fichero opciones> <.tar.gz fichero> [ficheros]

La opcin <ficheros> no es obligatoria. Si se omite, se procesar todo el archivo. Si Usted quiere extraer el contenido de un archivo .tar.gz, no necesita especicar este argumento. Por ejemplo:
$ tar xvfz -rw-r--r--rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw-rw... guile-1.3.tar.gz 442/1002 10555 442/1002 6668 442/1002 2283 442/1002 17989 442/1002 28545 442/1002 9364 442/1002 1223 442/1002 98432 442/1002 1388 442/1002 1151 1998-10-20 1998-10-20 1998-02-01 1997-05-27 1998-10-20 1997-10-25 1998-10-20 1998-10-20 1998-10-20 1998-08-16 07:31 06:59 22:05 00:36 07:05 08:34 06:34 07:30 06:19 21:45 guile-1.3/Makefile.in guile-1.3/README guile-1.3/AUTHORS guile-1.3/COPYING guile-1.3/ChangeLog guile-1.3/INSTALL guile-1.3/Makefile.am guile-1.3/NEWS guile-1.3/THANKS guile-1.3/TODO

Entre las opciones de tar se encuentran las siguientes:

v permite que tar sea verboso. Esto signica que mostrar en pantalla todos los cheros que encuentre en el archivo. Si se omite esta opcin, el procesamiento ser silencioso. f esta es una opcin obligatoria. Sin ella, tar intenta usar una cinta magntica en vez de un archivo de chero (es decir, el dispositivo /dev/rmt0)

2. En GNU/Linux hoy da el estndar es el formato bzip2, ms eciente sobre los cheros de texto (aunque necesite ms poder computacional y ms memoria). Por favor, consulte Bzip2, pgina 82 que trata especcamente con este programa. 3. Aunque en algunos servidores con mucho volumen de informacin todava se siguen usando las cintas magnticas

81

Captulo 12. Compilando e instalando software libre

z permite manipular un archivo comprimido con gzip (con el nombre de chero con sujo .gz). Si Usted olvida esta opcin, tar producir un error. A la inversa, no deber utilizar esta opcin si Usted est frente a un archivo no comprimido.

tar permite efectuar varias acciones diferentes sobre un archivo (extraccin, lectura, creacin, adicin ...). Una opcin permite especicar la accin a usar:

x: esta opcin le permite extraer los cheros de un archivo. t: esta opcin lista el contenido de un archivo. c: esta opcin le permite crear un archivo, esto implica destruir su contenido actual. Por ejemplo, la puede usar para hacer una copia de seguridad de sus cheros personales. r: esta opcin permite adicionar cheros al nal del archivo. No se puede usar con un archivo que ya est comprimido.

12.2.3. Bzip2
Un formato de compresin denominado bzip2 ya reemplaz a gzip en el uso general, aunque algn software todava se distribuye en formato gzip, principalmente por razones de compatibilidad con sistemas ms antiguos. Casi todo el software libre ahora se distribuye en archivos que usan la extensin .tar.bz2. En lo que al comando tar respecta, bzip2 se usa como gzip. La nica cosa que hay que hacer es reemplazar la opcin z por la opcin j. Por ejemplo:
$ tar xvjf pepe.tar.bz2

Otra posibilidad (que parece ser ms portable, pero es ms larga de teclear!):


$ tar --use-compress-program=bzip2 -xvf pepe.tar.bz2

bzip2 debe estar instalado en el sistema en un directorio incluido en la variable de entorno PATH antes de que ejecute tar.

12.2.4. Simplemente hgalo! a


12.2.4.1. La forma ms fcil a a
Ahora que est listo para descomprimir el archivo, no olvide de hacerlo como administrador (root). Deber hacer cosas que un usuario no privilegiado no puede hacer, e incluso si puede hacer algunas como tal, es ms fcil ser root durante toda la operacin, incluso cuando esto puede no ser muy seguro. El primer paso es que Usted se dirija al directorio /usr/local/src, y copie el archivo all. De esta manera, debera poder encontrar el archivo en caso de perder el software instalado. Si no tiene mucho espacio en su disco rgido, haga una copia de seguridad del archivo en el soporte habitual que Usted usa para esto una vez que instal el software. Tambin puede borrar el archivo pero antes de hacerlo, asegrese de que lo pueda encontrar en la web cuando lo necesite. Normalmente, la descompresin de un archivo tar debera crear un directorio nuevo (puede vericar esto antes de descomprimir con la opcin t). Luego, cmbiese a ese directorio. Ya est listo para continuar con el paso siguiente.

12.2.4.2. La manera ms segura a

Los sistemas UNIX (por ejemplo, GNU/Linux y FreeBSD) suelen ser sistemas seguros. Esto signica que los usuarios no privilegiados no pueden hacer operaciones que puedan poner en peligro al sistema (por ejemplo, formatear el disco rgido) ni alterar los cheros de los dems usuarios. En la prctica y en particular, esto hace al sistema inmune frente a los virus. Por otra parte, root puede hacer lo que se le antoje, incluso correr un programa malicioso (como, por ejemplo, un virus o un Troyano). El disponer del cdigo fuente es una especie de garanta de seguridad frente a los

82

Captulo 12. Compilando e instalando software libre virus4. Es decir, al tener el cdigo fuente y si Usted est lo sucientemente entrenado en el lenguaje de programacin en el cual se program el software, Usted puede ver el cdigo y deducir qu, cmo y por qu el programa hace lo que hace y determinar si el programa puede llegar a tener, o no, un comportamiento malicioso. La idea consiste en crear un usuario dedicado a la administracin (por ejemplo, free o admin) usando el comando adduser. Dicho usuario debe poder escribir en los directorios siguientes: /usr/local/src, /usr/ local/bin y /usr/local/lib, as como tambin en todo el subrbol /usr/man (puede que tambin tenga que copiar cheros en otros lugares). Recomendamos por esto, hacer que este usuario sea el propietario de los directorios necesarios, o crear un grupo para l, y hacer que dicho grupo pueda escribir en esos directorios. Una vez que se tomaron estas precauciones, Usted puede seguir las instrucciones de la seccin La forma ms fcil, pgina 82.

12.3. Conguracin o
Por razones puramente tcnicas, el hecho de disponer de los fuentes es la posibilidad de portar el software. Un software libre desarrollado para un sistema UNIX se puede usar en todos los sistemas UNIX existentes (sean libres o propietarios), con pocas modicaciones o ninguna. Esto implica una conguracin del software justo antes de la compilacin. Existen muchos sistemas de conguracin, Usted tiene que usar el que el autor del software quiera (a veces, se necesitan varios). Por lo general, Usted puede:

usar AutoConf (consulte la seccin Autoconf , pgina 83) si existe un chero denominado configure en el directorio padre de la distribucin. usar imake (consulte la seccin Imake, pgina 85) si existe un chero denominado Imakefile en el directorio padre de la distribucin. ejecutar un script del shell, (por ejemplo, install.sh) segn lo que diga el chero INSTALL (o el chero README)

12.3.1. Autoconf
12.3.1.1. Principio
AutoConf permite congurar el software correctamente. Crea los cheros necesarios para la compilacin (por ejemplo, el chero Makefile), y, a veces, cambia los fuentes directamente (como, por ejemplo, al usar un chero config.h.in) El principio de AutoConf es simple:

el programador del software sabe qu pruebas son necesarias para congurar su software (ejemplo: qu versin de esta o aquella biblioteca usa?). l las escribe, siguiendo una sintaxis precisa, en un chero denominado configure.in. l ejecuta AutoConf, el cual genera un script de conguracin denominado configure a partir del chero denominado configure.in. Este script efectuar las pruebas necesarias cuando se congure el programa. El usuario nal ejecuta el script, y AutoConf se encarga de congurar todo lo que es necesario para la compilacin.

4. Un proverbio del mundo de BSD dice: Never trust a software you dont have the sources for (que signica: Nunca confe en un software del cual no tenga el cdigo fuente)

83

Captulo 12. Compilando e instalando software libre

12.3.1.2. Ejemplo
Un ejemplo del uso de AutoConf:
$ ./configure loading cache ./config.cache checking for gcc... gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... yes checking whether gcc accepts -g... yes checking for main in -lX11... yes checking for main in -lXpm... yes checking for main in -lguile... yes checking for main in -lm... yes checking for main in -lncurses... yes checking how to run the C preprocessor... gcc -E checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include checking for ANSI C header files... yes checking for unistd.h... yes checking for working const... yes updating cache ./config.cache creating ./config.status creating lib/Makefile creating src/Makefile creating Makefile

Para tener un mayor control de lo que genera configure, se le pueden pasar algunas opciones por medio de la lnea de comandos o variables de entorno. Por ejemplo:
$ ./configure --with-gcc --prefix=/opt/GNU

o (con bash):
$ export CC=which gcc $ export CFLAGS=-O2 $ ./configure --with-gcc

o:
$ CC=gcc CFLAGS=-O2 ./configure

12.3.1.3. Qu pasa si... no funciona? e


Un error tpico del script configure es aquel del tipo configure: error: Cannot find library guile (congure: error: no se encuentra la biblioteca guile) (La mayora de los errores del script configure lucen as). Esto signica que el script configure no pudo encontrar una biblioteca (guile en nuestro ejemplo). El principio es que el script configure compila un pequeo programa de prueba que usa esta biblioteca. Si la compilacin de este programa no tiene xito, no podr compilar el software. Entonces ocurre un error.

Busque la razn del error examinando al nal del chero config.log, que contiene una traza de todos los pasos de conguracin. El compilador de lenguaje C es sucientemente claro con sus mensajes de error. Eso lo ayudar a resolver el problema. Verique que la biblioteca en cuestin est instalada correctamente. Si no es as, puede correr /sbin/ldconfig, borrar el chero config.cache y volver a ejecutar el script configure. Si todava sigue con problemas, intente volver a instalar la biblioteca (desde los fuentes o desde un chero binario). Una forma eciente de vericar la instalacin es buscar el chero que contiene los smbolos de la biblioteca, que siempre se denomina lib<nombre>.so. Por ejemplo,
$ find / -name libguile*

o, si no:
$ locate libguile

Verique que el compilador puede acceder a la biblioteca. Eso signica que la misma se encuentra en algn directorio entre: /usr/lib, /lib, /usr/X11R6/lib (o entre aquellos especicados por la variable de entorno

84

Captulo 12. Compilando e instalando software libre LD_LIBRARY_PATH, explicada en Qu pasa si... no funciona?, pgina 87 nmero 5.b). Verique que este chero es una biblioteca ingresando file libguile.so.

Verique que los cheros de encabezado correspondientes a la biblioteca se encuentran en el lugar adecuado (generalmente, /usr/include o /usr/local/include o /usr/X11R6/include). Si Usted no sabe cuales son los cheros de encabezado necesarios, verique que instal la versin de desarrollo de la biblioteca en cuestin (por ejemplo, libgtk+2.0-devel en vez de libgtk+2.0). La versin de desarrollo de la biblioteca proporciona los cheros include (incluir) necesarios para compilar un software usando esta biblioteca. Verique que Usted tiene espacio suciente en el disco (el script configure necesita de algo de espacio para cheros temporales). Use el comando df -h para visualizar las particiones de su sistema, y note las particiones llenas o casi llenas.

Si Usted no comprende los mensajes de error almacenados en el chero config.log, no dude en pedir ayuda a la comunidad de software libre (consulte la seccin Soporte tcnico, pgina 92) Es ms, verique si la biblioteca existe o no, incluso si configure dice que la biblioteca no existe (por ejemplo, sera muy extrao que no exista la biblioteca curses en su sistema). Si ese es el caso, probablemente est mal congurada la variable LD_LIBRARY_PATH!

12.3.2. Imake
imake le permite congurar un software libre creando un chero Makefile a partir de reglas simples. Estas reglas determinan los cheros necesarios para compilar el chero binario, y luego imake genera el chero Imakefile correspondiente. Estas reglas se especican en un chero denominado Imakefile. Lo que tiene interesante imake es que usa informacin dependiente del sitio (dependiente de la arquitectura). Esto es muy til para las aplicaciones que usan X Window System. Pero imake tambin se usa para muchas otras aplicaciones. La forma ms fcil de usar imake, es entrar en el directorio principal del archivo descomprimido, y luego correr el script xmkmf, que llama al programa imake:
$ xmkmf -a $ imake -DUseInstalled -I/usr/X11R6/lib/X11/config $ make Makefiles

Si el sitio no est instalado correctamente, debe recompilar e instalar X11R6!

12.3.3. Varios scripts del shell


Para ms informacin lea los cheros INSTALL o README. Por lo general, Usted tiene que ejecutar un chero del tipo install.sh o configure.sh. Entonces, o el script de instalacin ser silencioso (y determinar lo que necesita por s solo), o le preguntar informacin sobre su sistema (por ejemplo, las rutas) Si Usted no llega a determinar el chero que tiene que ejecutar, puede ingresar ./ (bajo bash), y luego presionar dos veces la tecla TAB (tecla del tabulador) bash completar automticamente el nombre de un chero ejecutable en el directorio corriente (por lo tanto, un posible script de conguracin). En caso de que varios cheros se puedan ejecutar, le dar una lista. Solo debe elegir el chero correcto. Otro caso particular es la instalacin de mdulos perl. La instalacin de tales mdulos se hace mediante la ejecucin de un script de conguracin, el cual se encuentra escrito en perl. Por lo general, el comando a ejecutar es:
$ perl Makefile.PL

12.3.4. Alternativas
Algunas distribuciones de software libre estn mal organizadas, especialmente durante las primeras etapas de desarrollo (pero se previene al usuario!). En las mismas se necesita retocar a mano algunos cheros de conguracin. Por lo general, estos cheros son un chero Makefile (ver la seccin Make, pgina 86) y un chero config.h (este nombre slo es convencional) Como siempre, lea los cheros README e INSTALL!

85

Captulo 12. Compilando e instalando software libre No recomendamos que estas manipulaciones sean hechas por usuarios que no sepan lo que estn haciendo. Esto necesita de conocimientos reales y la motivacin necesaria para tener xito. Pero, la prctica lleva a la perfeccin.

12.4. Compilacin o
Ahora que el software est congurado correctamente, slo falta compilarlo. Generalmente esta parte es fcil, y no presenta problemas serios.

12.4.1. Make
make es la herramienta favorita de la comunidad de software libre para compilar los fuentes. Tiene dos cosas interesantes:

le permite ganar tiempo al desarrollador, porque le permite administrar la compilacin de su proyecto de manera eciente, permite que el usuario nal compile e instale el software en pocas lneas de comando, incluso si no tiene conocimientos preliminares de desarrollo.

Las acciones a ejecutar para obtener una versin compilada de los fuentes generalmente se almacenan en un chero denominado Makefile o GNUMakefile. De hecho, cuando se invoca a make, este lee dicho chero, si existe, en el directorio corriente. Si no es as, se puede especicar el chero usando la opcin -f con make.

12.4.2. Reglas
make funciona de acuerdo a un sistema de dependencias, razn por la cual la compilacin de un chero binario (objetivo) necesita pasar por varias etapas (dependencias). Por ejemplo, para crear el chero binario (imaginario) glloq, se deben compilar y luego vincular los cheros objeto main.o e init.o (cheros intermedios de la compilacin). Estos cheros objeto tambin son objetivos, cuyas dependencias son sus cheros fuente correspondiente. Este texto slo es una introduccin mnima para sobrevivir en el mundo sin piedad de make. Para una documentacin exhaustiva, debe referirse a Managing Projects with Make (Administracin de proyectos con Make), segunda edicin, de OReilly, por Andrew Oram y Steve Talbott.

12.4.3. Go, go, go!


Por lo general, el uso de make obedece a muchas convenciones. Por ejemplo:

make sin argumentos simplemente ejecuta la compilacin del programa, sin instalarlo. make install compila el programa (aunque no siempre), y asegura la instalacin de los cheros necesarios en el lugar adecuado del sistema de cheros. Algunos cheros no siempre se instalan correctamente (man, info), ellos deben ser copiados por el usuario. Algunas veces, make install tiene que volver a ser ejecutado en los subdirectorios. Por lo general, esto pasa con los mdulos desarrollados por terceros. make clean borra todos los cheros temporales creados por la compilacin, y, en la mayora de los casos, el chero ejecutable.

La primera etapa para compilar un programa es ingresar (ejemplo imaginario):


$ make gcc -c glloq.c -o glloq.o gcc -c init.c -o init.o gcc -c main.c -o main.o gcc -lgtk -lgdk -lglib -lXext -lX11 -lm glloq.o init.o main.o -o glloq

Excelente, el chero binario est compilado correctamente. Ahora estamos preparados para la etapa siguiente, que es la instalacin de los cheros de la distribucin (cheros binarios, cheros de datos, etc...). Consulte la seccin Instalacin, pgina 91. 86

Captulo 12. Compilando e instalando software libre

12.4.4. Explicaciones
Si Usted es lo sucientemente curioso para mirar el chero Makefile, encontrar comandos conocidos (rm, mv, cp, ...), aunque tambin encontrar algunas cadenas extraas, de la forma $(CFLAGS). Estas son variables, es decir las cadenas que generalmente se jan al comienzo del chero Makefile, y luego se reemplazan por el valor con el cual estn asociadas. Esto es bastante til cuando quiere usar las mismas opciones de compilacin varias veces a la vez. Por ejemplo, puede mostrar la cadena pepe en la pantalla usando make all:
TEST = pepe all: echo $(TEST)

La mayora de las veces, se denen las variables siguientes: 1. CC: este es el compilador que va a utilizar. Generalmente es cc1, que en la mayora de los sistemas libres, es sinnimo de gcc. Cuando tenga dudas, ponga aqu gcc. 2. LD: este es el programa usado para asegurar la fase de la compilacin nal (consulte la seccin Las cuatro fases de la compilacin, pgina 80) El valor predeterminado es ld. 3. CFLAGS: estos son los argumentos adicionales que se pasarn al compilador durante las primeras etapas de la compilacin. Entre ellos:

-I<ruta>: le especica al compilador donde buscar algunos cheros de encabezado adicionales (por ejemplo: -I/usr/X11R6/include permite incluir los cheros de encabezado que estn en el directorio /usr/X11R6/include) -D<smbolo>: dene un smbolo adicional, til para los programas cuya compilacin depende de los smbolos denidos (ejemplo: utilizar el chero string.h si est denida HAVE_STRING_H)

Generalmente hay lneas de compilacin de la forma:


$(CC) $(CFLAGS) -c pepe.c -o pepe.o

4. LDFLAGS (o LFLAGS): estos son los argumentos que se usan durante la ltima etapa de compilacin. Entre ellos:

-L<ruta>: especica una ruta adicional donde buscar bibliotecas (por ejemplo: -L/usr/X11R6/lib) -l<biblioteca>: especica una biblioteca adicional para usar durante la ltima etapa de compilacin.

12.4.5. Qu pasa si... no funciona? e


No tenga pnico, le puede pasar a cualquiera. Entre las causas ms comunes: 1. glloq.c:16: decl.h: No such file or directory (glloq.c :16: decl.h: no hay chero o directorio con ese nombre) El compilador no pudo encontrar el chero de encabezado correspondiente. Por lo tanto, la etapa de conguracin del software debera haber anticipado este error. Cmo resolver este problema:

verique que verdaderamente exista el chero de encabezado en cuestin en uno de los directorios siguientes: /usr/include, /usr/local/include, /usr/X11R6/include o en alguno de sus subdirectorios. De no ser as, bsquelo por todo el disco (con find o locate), y, si todava no lo encuentra, verique que ha instalado la biblioteca de desarrollo correspondiente a este chero de encabezado. Puede encontrar ejemplos de los comandos find y locate en las respectivas pginas Man. Verique que el chero de encabezado se pueda leer (para vericarlo, puede ingresar less <ruta>/<fichero>.h) Si es un directorio como /usr/local/include o como /usr/X11R6/include, Usted tiene que agregar, a veces, un argumento nuevo al compilador. Abra el chero Makefile correspondiente (tenga cuidado de

87

Captulo 12. Compilando e instalando software libre abrir el chero correcto, los que se encuentran en el directorio donde falla la compilacin5) con su editor de texto favorito (Emacs, Vi, etc). Busque la lnea errnea, y agregue la cadena -I<ruta>, donde <ruta> es la ruta donde se puede encontrar el chero de encabezado en cuestin, justo despus de la llamada del compilador (gcc, o, a veces, $(CC)). Si no sabe donde agregar esta opcin, agrguela al comienzo del chero, despus de CFLAGS=<algo> o despus de CC=<algo>.

ejecute make de nuevo, y si todava sigue sin funcionar, verique que esta opcin (ver el punto anterior) se agrega durante la compilacin en la lnea errnea. si todava sigue sin funcionar, pida ayuda al autor del software, a su gur local, o a la comunidad de software libre para resolver su problema (consulte la seccin Soporte tcnico, pgina 92)

2. glloq.c:28: struct pepe undeclared (first use this function) (glloq.c:28: struct pepe no est declarada (esta es la primera utilizacin en esta funcin)) Las estructuras son tipos de datos especiales, que usan todos los programas. El sistema dene un montn de ellas en los cheros de encabezados. Eso signica que es muy probable que el problema sea la falta o el mal uso de un chero de encabezado. El procedimiento correcto para resolver el problema es:

intente vericar si la estructura en cuestin es una estructura denida por el programa o por el sistema. Una solucin es usar el comando grep para ver si la estructura est denida en alguno de los cheros de encabezado. Por ejemplo, cuando Usted est en la raz de la distribucin:
$ find . -name *.h| xargs grep struct pepe | less

Es posible que aparezcan muchas lneas en la pantalla (por ejemplo, cada vez que se dene una funcin que use esta estructura). Elija, si existe, la lnea donde se dene la estructura mirando el chero de encabezado obtenido por la utilizacin del comando grep. La denicin de una estructura es:
struct pepe { <contenido de la estructura pepe> };

Verique si ella corresponde a lo que Usted tiene. De ser as, eso signica que no se incluye el encabezado en el chero .c errneo. Hay dos soluciones:

agregar la lnea #include "<nombre_de_fichero>.h" al comienzo del chero .c errneo. o copiar y pegar la denicin de la estructura al comienzo del chero .c (esto no es de lo mejor, pero al menos por lo general, funciona)

si este no es el caso, haga lo mismo con los cheros de encabezado del sistema (que, generalmente, se encuentran en los directorios siguientes: /usr/include, /usr/X11R6/include y /usr/local/include). Pero en este caso, use la lnea #include <<nombre_de_fichero>.h>. si todava no existe esta estructura, intente encontrar en que biblioteca (es decir, conjunto de funciones agrupadas en un solo paquete) debera estar denida (ver en el chero INSTALL o README cuales son las bibliotecas que usa este programa y las versiones necesarias). Si la versin que necesita el programa no est instalada en el sistema, Usted deber actualizar esta biblioteca. Cabe destacar que debe tener sumo cuidado al manipular los cheros de encabezado del sistema, ya que estos son comunes a muchos programas. si todava sigue sin funcionar, verique que el programa funciona adecuadamente sobre su arquitectura (algunos programas todava no han sido portados a todos los sistemas UNIX). Verique tambin que ha congurado el programa correctamente (por ejemplo, cuando ejecut configure) para su arquitectura.

3. parse error (error de anlisis sintctico)


5. Analice el mensaje de error que devuelve make. Normalmente, las ltimas lneas deberan contener un directorio (un mensaje como make[1]: Leaving directory /home/reina/Proyecto/pepe). Elija aquel que tiene el nmero ms grande. Para vericar que es el bueno, vaya al directorio y ejecute make de nuevo para obtener el mismo error.

88

Captulo 12. Compilando e instalando software libre Este es un problema que es relativamente complicado de resolver, porque generalmente es un error que aparece en cierta lnea, pero despus que el compilador lo encontr. A veces, es simplemente un tipo de datos que no est denido. Si Usted encuentra un mensaje de error del tipo:
main.c:1: parse error before glloq_t main.c:1: warning: data definition has no type or storage class

entonces el problema es que el tipo glloq_t no est denido. La solucin al problema es ms o menos la misma que en el problema anterior.

puede haber un error del tipo parse error en las bibliotecas curses antiguas si la memoria no nos falla.

4. no space left on device (no queda espacio en el dispositivo) Este problema es simple de resolver: no hay espacio suciente en el disco para generar un chero binario a partir del chero fuente. La solucin consiste en liberar espacio en la particin que contiene el directorio de instalacin (borrar cheros innecesarios, cheros temporales, desinstalar programas que no use). Si descomprimi en /tmp, mejor hgalo en /usr/local/src que evita la saturacin innecesaria de la particin /tmp. Verique si hay cheros core6 en su disco. De ser as, elimnelos o haga que el usuario al cual pertenezcan los elimine. 5. /usr/bin/ld: cannot open -lglloq: No such file or directory (/usr/bin/ld: no puedo abrir lglloq: no hay fichero o directorio alguno con ese nombre). Esto signica claramente que el programa ld (usado por gcc durante la ltima etapa de la compilacin) no puede encontrar una biblioteca. Para incluir una biblioteca, ld busca un chero cuyo nombre est en los argumentos del tipo -l<biblioteca>. Este chero es lib<biblioteca.so>. Si ld no puede encontrarlo, produce un mensaje de error. Para resolver el problema, siga los pasos que se indican a continuacin: a. verique que el chero existe en el disco rgido usando el comando locate. Por lo general, las bibliotecas grcas se encuentran en /usr/X11R6/lib. Por ejemplo:
$ locate libglloq

Si la bsqueda no tiene resultado, puede buscar con el comando find (ejemplo: find /usr -name "libglloq.so*"). Si Usted no puede encontrar la biblioteca, entonces tendr que instalarla. b. una vez que est localizada la biblioteca, verique que ld puede accederla: el chero que especica donde encontrar estas bibliotecas es /etc/ld.so.conf. Agregue el directorio en cuestin al nal del mismo y ejecute ldconfig. Tambin puede agregar este directorio a la variable de entorno LD_LIBRARY_PATH. Por ejemplo, si el directorio a agregar es /usr/X11R6/lib, ingrese:
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/X11R6/lib

(si su shell es bash) c. si todava no funciona, verique que el formato de la biblioteca en cuestin es un chero ejecutable (o ELF) (con el comando file). Si esta es un vnculo simblico, verique que el vnculo es correcto y no apunta a un chero inexistente (por ejemplo, con nm <lib>). Los permisos pueden ser errneos (por ejemplo, Usted usa una cuenta que no es root y la biblioteca est protegida contra lectura). 6. glloq.c(.text+0x34): undefined reference to glloq_init (glloq.c(.text+0x34): referencia indenida al smbolo glloq_init) Esto signica que no se resolvi un smbolo durante la ltima etapa de la compilacin. Por lo general, este es un problema de biblioteca. Puede haber varias causas:
6. Fichero generado por el sistema cuando un proceso intenta acceder a una ubicacin de memoria a la cual no tiene permiso para acceder. Estos archivos se utilizan para analizar la razn de tal comportamiento para corregir el problema.

89

Captulo 12. Compilando e instalando software libre

la primera cosa a hacer es saber si se supone que el smbolo est presente en una biblioteca. Por ejemplo, si es un smbolo que comienza por gtk, pertenece a la biblioteca gtk. Si el nombre de la biblioteca es difcil de identicar (como por ejemplo, zorglub_gloubiboulga), se pueden listar los smbolos de una biblioteca con el comando nm. Por ejemplo,
$ nm libglloq.so 0000000000109df0 000000000010a984 0000000000008a58 0000000000109dd8 0000000000109cf8 d b t d d glloq_message_func glloq_msg glloq_nearest_pow glloq_free_list glloq_mem_chunk

Agregar la opcin -o a nm permite mostrar el nombre de la biblioteca en cada lnea, lo cual facilita la bsqueda. Imaginemos que buscamos el smbolo bulgroz_max, una solucin cruda es realizar una bsqueda del tipo:
$ nm /usr/lib/lib*.so | grep bulgroz_max $ nm /usr/X11R6/lib/lib*.so | grep bulgroz_max $ nm /usr/local/lib/lib*.so | grep bulgroz_max /usr/local/lib/libfrobnicate.so:000000000004d848 T bulgroz_max

Formidable! El smbolo bulgroz_max est denido en la biblioteca zorglub (la letra mayscula T se encuentra delante de su nombre) Entonces, Usted slo tiene que agregar la cadena -lzorglub en la lnea de compilacin editando el chero Makefile: agrguela al nal de la lnea donde se dene la variable LDFLAGS o LFGLAGS (o, en el peor de los casos, CC), o en la lnea correspondiente a la creacin del chero binario nal. la compilacin est hecha con una versin de la biblioteca que no es la que permite el software. Lea el chero README o INSTALL de la distribucin para saber que versin de la biblioteca debe usar. no todos los cheros objeto de la distribucin estn vinculados correctamente. Falta, o no se menciona, el chero donde est denida esta funcin. Ingrese nm -o *.o, para saber el nombre del chero .o correspondiente y agrguelo en la lnea de compilacin si es que falta. la funcin o variable en cuestin puede ser fantasiosa. Intente eliminarla: edite el chero fuente en cuestin (el nombre del mismo se especica al comienzo del mensaje de error). Esta es una solucin desesperada cuya consecuencia ciertamente ser un funcionamiento anrquico del software (error de segmentacin en el arranque, etc.)

7. Segmentation fault (core dumped) (Error de segmentacin (se produjo un chero core)). A veces, el compilador se cuelga lamentablemente y produce este mensaje de error. No tengo consejo alguno, salvo pedirle que instale una versin ms reciente de su compilador. 8. no queda espacio en /tmp La compilacin necesita espacio temporal durante las diferentes etapas; si no tiene espacio suciente, falla. Por lo tanto, debe limpiar la particin, pero debe tener cuidado ya que algunos programas en curso de ejecucin (servidor X, tuberas...) se pueden colgar si se borran algunos cheros. Usted debe saber lo que est haciendo! Si tmp es parte de una particin que no la contiene solamente (por ejemplo, la raz), busque y borre algunos cheros core eventuales. 9. make / configure en bucle innito Generalmente, esto es un problema de la hora en su sistema. En efecto, make necesita saber la fecha y la hora de la computadora y de los cheros que verica. Este compara las fechas de los cheros y usa el resultado para saber si el objetivo es ms reciente que la dependencia. Algunos problemas en la fecha pueden inducir a make a reconstruirse a s mismo indenidamente (o a construir y reconstruir un subrbol en bucle). Si es as, el uso del comando touch (cuya consecuencia es poner en la hora corriente a los cheros pasados como argumento) resuelve el problema la mayora de las veces. Por ejemplo:
$ touch *

90

Captulo 12. Compilando e instalando software libre O tambin (ms bruto, pero eciente):
$ find . | xargs touch

12.5. Instalacin o
12.5.1. Con Make
Ahora que todo est compilado, Usted tiene que copiar los cheros producidos a un lugar adecuado (por lo general, uno de los subdirectorios de /usr/local) Generalmente, make puede hacer esto. Un objetivo especial es el objetivo install. As que, como era de esperar, make install permite instalar los cheros necesarios. Por lo general, el procedimiento est descrito en los cheros INSTALL o README. Pero, algunas veces, el desarrollador se olvida de proporcionarlos. En ese caso, Usted deber instalar todo por su cuenta. Entonces, copie:

Los cheros ejecutables (los programas) en el directorio denominado /usr/local/bin. Las bibliotecas (cheros lib*.so) en el directorio denominado /usr/local/lib. Los cheros de encabezado (cheros *.h) en el directorio denominado /usr/local/include (tenga cuidado de no borrar los cheros originales) Los cheros de datos generalmente van en el directorio denominado /usr/local/share. Si Usted no conoce el procedimiento de instalacin, puede intentar ejecutar los programas sin copiar los cheros de datos, y ponerlos en el lugar indicado cuando se le pida (con un mensaje de error del tipo Cannot open /usr/local/share/glloq/data.db). la documentacin es un poquito diferente:

Los cheros man generalmente se ponen en uno de los subdirectorios de /usr/local/man. Por lo general, estos cheros estn en formato troff (o groff), y su extensin es un nmero. Su nombre es el nombre del comando (por ejemplo, echo.1) Si el nmero es n, copie el chero en el subdirectorio /usr/local/man/man<n>. los cheros info se ponen en el directorio /usr/info o /usr/local/info.

Y listo! Enhorabuena! Ahora, Usted est listo para recompilar su sistema operativo por completo!

12.5.2. Problemas
Si recin termina de instalar un software libre, por ejemplo GNU tar, y si, cuando lo ejecuta, se inicia otro software o no funciona como lo prob directamente desde el directorio src, entonces tiene un problema con PATH. PATH es una variable de entorno que indica la ruta a seguir cuando se busca un ejecutable. Usted puede vericarlo, ejecutando type -a <programa>. La solucin es poner el directorio de instalacin ms alto en la variable PATH, y/o borrar/renombrar los cheros que se ejecutan cuando no se desea, y/o renombrar sus programas nuevos (en este ejemplo, como gtar) para que no haya ms confusin. Usted tambin puede hacer una alias si el shell se lo permite (por ejemplo, decir que tar signica /usr/local/ bin/gtar)

91

Captulo 12. Compilando e instalando software libre

12.6. Soporte
12.6.1. Documentacin o
Existen varias fuentes de documentacin:

los COMO son documentos cortos (mayormente, en ingls) sobre temas precisos (generalmente, mucho ms de lo que necesitamos ac, pero tiles sin lugar a dudas). Busque en su disco rgido en el directorio /usr/doc/HOWTO (aunque a veces, deber vericar esto usando el comando locate HOWTO). Tambin estn disponibles las traducciones al castellano de los COMO. Puede obtenerlas en la pgina de LuCAS (Proyecto de documentacin de GNU/Linux en CAStellano) en el sitio de LuCAS (http://lucas.hispalinux.es/). Las pginas Man. Ingrese man <comando> para obtener informacin sobre el comando <comando>, la literatura especializada. Muchos editores grandes comenzaron a publicar libros acerca de los sistemas libres (especialmente sobre GNU/Linux). Esto es muy til si Usted es un principiante y no entiende todos los trminos de la documentacin presente.

12.6.2. Soporte tcnico e


Si su paquete Mandrakelinux tiene includo soporte tcnico, puede dirigirse al equipo de soporte tcnico con preguntas acerca de su sistema. Como mencionamos anteriormente, Usted tambin puede dirigirse a la comunidad de software libre:

Los foros de discusin (de Usenet) es.comp.os.linux (news:es.comp.os.linux) contestan todas las preguntas sobre GNU/Linux. Los foros de discusin que coinciden con comp.os.bsd.* tratan con los sistemas BSD. Pueden haber otros foros de discusin que traten con otros sistemas UNIX. Recuerde leerlos por un tiempo antes de comenzar a escribirles. Varias asociaciones o grupos de entusiastas de la comunidad de software libre ofrecen un soporte voluntario. La mejor manera de encontrar los ms cercanos al lugar donde vive es vericar las listas de los sitios web especializados o leer los foros de discusin por un rato. Por ejemplo, en Argentina (pas donde vive el traductor :-)) existe el grupo de usuarios de Argentina (LuGAr) cuya pgina principal es Linux punto Org punto Ar (http://www.linux.org.ar) donde puede encontrar muchsima (y muy buena) informacin7. Muchos canales IRC ofrecen una asistencia en tiempo real (pero, a ciegas) por los gur. Por ejemplo, Usted puede ver el canal #linux en la mayor parte de la red IRC, o #linuxhelp en IRCNET (Aunque la mayora, por no decir la totalidad, sean en ingls...) Como ltimo recurso, pregntele al autor del software (si es que menciona su nombre y su direccin electrnica en algn chero de la distribucin) si Usted est seguro que encontr un bug (que puede ser debido a su arquitectura, pero despus de todo, se supone que el software libre es portable)

12.6.3. Como encontrar software libre


Para encontrar software libre, pueden ser tiles un montn de vnculos:

el sitio FTP enorme de Metalab (sunsite.unc.edu) o uno de sus sitios de rplica; los sitios web que siguen conforman un catlogo de mucho software libre que se puede usar sobre las plataformas UNIX (aunque Usted tambin puede encontrar software propietario en ellos):

Freshmeat (http://www.freshmeat.net/) probablemente sea el sitio ms completo. SourceForge.net (http://sourceforge.net/) es el sitio web ms grande de desarrollo de software Open Source, con el repositorio mayor de cdigo y aplicaciones Open Source disponibles en la Internet. Software GNU (http://www.gnu.org/software/) para una lista exhaustiva de todo el software GNU. Por supuesto, todos ellos son libres y la mayora est bajo la licencia GPL.

7.

Aunque no viva en Argentina, le recomiendo visitarla...

92

Captulo 12. Compilando e instalando software libre

Tambin puede realizar una bsqueda usando los motores de bsqueda como Googletm (http://www. google.com) y Lycos (http://www.lycos.com/) y efectuar una bsqueda del tipo: +<software>+download o "download software".

12.7. Agradecimientos

Relecturas y comentarios crticos (y en orden alfabtico): Sbastien Blondeel, Mathieu Bois, Xavier Renaut, Kamel Sehil. Pruebas beta: Laurent Bassaler Traduccin al castellano: Fabian Mandelbaum

93

Captulo 12. Compilando e instalando software libre

94

Cap tulo 13. Compilando e instalando ncleos nuevos u


Junto con la nocin del montaje de los sistemas de archivos y la compilacin de los fuentes, la compilacin del ncleo es, sin lugar a dudas, el tema que causa la mayor cantidad de problemas a los principiantes. Generalmente no es necesario compilar un ncleo nuevo, ya que el ncleo que instala Mandrakelinux contiene soporte para un nmero signicativo de dispositivos (de hecho, ms dispositivos que los que Usted necesitar o pensar jams), as como tambin un montn de parches conables, y as sucesivamente. Pero... Podra ser, que quiera hacerlo, por el slo hecho de ver que es lo que hace. Adems de hacer que su PC y su cafetera funcionen un poco ms de lo normal, no mucho. Las razones por las cuales Usted debera querer volver a compilar su propio ncleo varan desde desactivar una opcin, hasta volver a construir un ncleo experimental completamente nuevo. De todas formas, el objetivo de este captulo es que su cafetera debera seguir funcionando luego de la compilacin. Tambin hay otros motivos vlidos para volver a compilar el ncleo. Por ejemplo, Usted ley que el ncleo que est usando tiene un bug que afecta a la seguridad, el cual se corrige en una versin ms reciente; o bien, que un ncleo nuevo incluye soporte para un dispositivo que Usted necesita. Por supuesto que en estos casos tiene la opcin de esperar a las actualizaciones de los binarios, pero actualizar los fuentes del ncleo y volver a compilar el ncleo nuevo Usted mismo, es una solucin ms rpida. Haga lo que haga, consiga algo de caf.

13.1. Actualizando un ncleo usando los paquetes binarios u


Antes de adentrarnos en las profundidades de la compilacin del ncleo a partir de los fuentes, detallaremos un procedimiento simple cuando simplemente desea o necesita actualizar su ncleo usando paquetes RPM binarios compilados para su versin de Mandrakelinux. El ejemplo asumir que el ncleo nuevo es kernel2.6.8-5mdk y que el antiguo (corriente) es kernel-2.6.8-1mdk. 1. Instalar el ncleo nuevo. Ejecute el comando: urpmi kernel-2.6.8-5mdk en una ventana de terminal. Si no conoce de antemano la versin del ncleo, simplemente ejecute urpmi kernel y seleccione el ncleo apropiado para su sistema de la lista que se propone. 2. Vericar que funciona. El ncleo recin instalado se congura como el predeterminado. Tambin estar disponible una entrada nueva en el men del cargador de arranque (LILO, GRUB, ELILO...) estar disponible una entrada nueva, denominada algo como 268-5. Vuelva a arrancar su computadora y seleccione dicha entrada para arrancar con el ncleo nuevo. Realice todas las pruebas que considere necesarias para asegurarse que el ncleo nuevo funciona correctamente. 3. Desinstalar el ncleo antiguo (opcional). Una vez que est seguro que el ncleo nuevo funciona en su computadora, puede desear quitar los archivos relacionados con el ncleo antiguo. Para hacerlo, ejecute urpme kernel-2.6.8-1mdk en una ventana de terminal. La conguracin del cargador de arranque se actualizar automticamente.

13.2. Desde los fuentes del ncleo u


Bsicamente puede obtener los fuentes desde dos lugares: 1. El ncleo ocial de Mandrakelinux. En el directorio SRPMS de cualquiera de los sitios de rplica (http: //www.mandrakelinux.com/en/cookerdevel.php3) de Cooker encontrar los paquetes siguientes: kernel-2.6.??.?mdk-?-?mdk.src.rpm Los fuentes del ncleo para compilar el ncleo utilizado en la distribucin. Est altamente modicado para agregar ms funcionalidad.

95

Captulo 13. Compilando e instalando ncleos nuevos kernel2.6-linus-2.6.??-?mdk.src.rpm El ncleo estndar en la forma en que lo publica quien mantiene el ncleo de GNU/Linux. Se recomienda obtener el ncleo ocial de Mandrakelinux: simplemente descargue el RPM fuente, instlelo (como root) y pase a Congurando el ncleo, pgina 97. 2. El repositorio ocial del ncleo de Linux. El sitio principal de alojamiento de los fuentes del ncleo es ftp.kernel.org (ftp.kernel.org), pero tiene una gran cantidad de sitios de rplica, todos se denominan ftp.xx.kernel.org (ftp.xx.kernel.org), donde xx (xx) representa el cdigo ISO del pas. Para Argentina, este cdigo es ar (ar), por lo tanto el sitio de rplica preferido ser la mquina ftp.ar.kernel.org. Ejemplos de otros cdigos ISO de pases de habla hispana son: es (es), Espaa; mx (mx), Mjico; ve (ve), Venezuela; ec (ec), Ecuador. Luego del anuncio ocial de la disponibilidad del ncleo, debera dejar pasar al menos dos horas para que todos los sitios de rplica se actualicen. En todos estos servidores FTP, los fuentes del ncleo estn en el directorio /pub/linux/kernel. Luego, debe dirigirse al directorio con la serie que le interesa: sin lugar a dudas ser la v2.6. Nada le impide probar las versiones experimentales o usar las versiones antiguas 2.4. El archivo que contiene los fuentes del ncleo se denomina linux-<version.del.ncleo>.tar.bz2, por ejemplo linux-2.6.8.tar.bz2. u Tambin puede aplicar los patches (correcciones o parches) a los fuentes del ncleo para actualizarlo de forma incremental: de esta manera, si ya tiene los fuentes del ncleo versin 2.6.6 y los quiere actualizar a 2.6.8, no necesita transferir todo el cdigo fuente de 2.6.8, sino que simplemente puede transferir los patches patch-2.6.7.bz2 y patch-2.6.8.bz2. Como regla general, esta es una idea buena, ya que los fuentes actualmente ocupan varias docenas de MB.

13.3. Extrayendo los fuentes, corrigiendo el ncleo (si es necesario) u


Los fuentes del ncleo deberan ponerse en /usr/src. Por lo tanto, debera ir a este directorio y luego extraer los fuentes all:
$ cd /usr/src $ mv linux linux.old $ tar xjf /ruta/a/linux-2.6.6.tar.bz2

El comando mv linux linux.old es necesario: esto se debe a que Usted ya podra tener los fuentes de otra versin del ncleo. Este comando le asegurar que no escribir sobre los mismos. Una vez que el archivo se descompact, tiene un directorio linux-<versin> (dnde <versin> es la versin del ncleo) con los fuentes o o del ncleo nuevo. Puede hacer un vnculo (ln -s linux-<versin> linux) para su comodidad. o Ahora, los parches. Asumiremos que quiere patchear (o corregir) de la versin 2.6.6 a la 2.6.8 y que ha descargado los parches necesarios para hacer esto: debe dirigirse al directorio linux creado recientemente, luego aplique los parches:
$ $ $ $ cd linux bzcat /ruta/al/patch-2.6.7.bz2 | patch -p1 bzcat /ruta/al/patch-2.6.8.bz2 | patch -p1 cd ..

En general, para pasar de una versin 2.6.x a una versin 2.6.y es necesario que Usted aplique todos los patches numerados 2.6.x+1, 2.6.x+2, ..., 2.6.y-1, 2.6.y en este orden. Para revertir desde 2.6.y hasta 2.6.x, repita exactamente el mismo proceso pero aplicando los patches en orden inverso con la opcin -R desde patch (R signica Revertir). Entonces, para regresar del ncleo 2.6.8 al ncleo 2.6.6, Usted hara lo siguiente:
$ bzcat /ruta/al/patch-2.6.8.bz2 | patch -p1 -R $ bzcat /ruta/al/patch-2.6.7.bz2 | patch -p1 -R

Si desea probar si un parche se aplicar adecuadamente antes a de aplicarlo realmente, agregue la opcin --dry-run al comando o patch.

96

Captulo 13. Compilando e instalando ncleos nuevos Luego, en pos de la claridad (y para que Usted sepa donde est), puede cambiarle el nombre a linux para reejar la versin del ncleo y crear un vnculo simblico:
$ mv linux linux-2.6.8 $ ln -s linux-2.6.8 linux

Ahora es tiempo de pasar a la conguracin.

13.4. Congurando el ncleo u


Para comenzar, vaya al directorio /usr/src/linux, y vulvase root. Primero, un pequeo truco: Usted puede, si lo desea, personalizar la versin de su ncleo. La versin de su ncleo est determinada por las primeras cuatro lneas del archivo Makefile:
$ head -4 Makefile VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 8 EXTRAVERSION = -1mdkcustom

Ms adelante en el archivo Makefile, puede ver que la versin del ncleo se construye como:
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)

Todo lo que tiene que hacer es modicar uno de estos campos para cambiar su versin. Preferentemente, Usted slo cambiar EXTRAVERSION. Digamos que la congura como -pepe, por ejemplo. Entonces, la nueva versin de su ncleo ser 2.6.8-pepe. No dude en cambiar este campo cada vez que vuelva a compilar un ncleo nuevo con versiones diferentes, de forma tal que pueda probar opciones distintas a la vez que mantiene los intentos anteriores. Ahora, sigamos con la conguracin. Puede elegir entre:

make xconfig para una interfaz grca basada en qt, make gconfig para una interfaz grca basada en gtk+, make menuconfig para una interfaz basada en ncurses, o make config para la interfaz ms rudimentaria, lnea por lnea, seccin por seccin. make oldconfig lo mismo que el anterior, pero basado en su conguracin previa. Consulte Guardando y volviendo a usar los archivos de conguracin de su ncleo, pgina 98.

Mayormente la conguracin del ncleo no est internacionalizada, todo est en ingls. Usted pasar a travs de la conguracin seccin por seccin, pero puede omitir secciones e ir a la seccin que desee si est usando menuconfig, xconfig o gconfig. Las opciones son y por Yes (funcionalidad incorporada, compilada en el ncleo), m por Module (funcionalidad compilada como un mdulo), o n por No (funcionalidad no incluida en el ncleo). Tanto make xconfig, make gconfig como make menuconfig tienen las opciones clasicadas por grupos jerrquicos. Por ejemplo, Processor family (Familia del procesador) va bajo Processor type and features (Caractersticas y tipo del procesador). Para xconfig y gconfig, el botn Main Menu es para volver al men principal cuando se est en un grupo jerrquico, Next es para ir al siguiente grupo de opciones, y Prev es para volver al grupo anterior. Para menuconfig, use la tecla Intro para seleccionar una seccin, y cambie el estado de las opciones con Y, M, o N o, de lo contrario, presione la tecla Intro y elija sus opciones de entre las opciones mltiples disponibles. Con Exit saldr de una seccin y de la conguracin si es que se encuentra en el men principal. Y tambin est disponible la ayuda con Help. Aqu no vamos a enumerar todas las opciones, ya que hay varios cientos. Es ms, si ha llegado a este captulo, probablemente sepa lo que est haciendo. Por lo tanto, lo dejamos navegar por la conguracin del ncleo y habilitar/deshabilitar las opciones que Usted crea apropiadas. Sin embargo, hay algunos consejos para evitar terminar con un ncleo que no pueda usar:

97

Captulo 13. Compilando e instalando ncleos nuevos 1. a menos que use un ramdisk inicial (initrd), nunca compile los controladores necesarios para montar su sistema de archivos raz (controladores de hardware y controladores de sistemas de archivos) como mdulos! Y, si Usted usa un ramdisk inicial, diga Y al soporte para ext2FS, ya que este es el sistema de archivos que usan los ramdisks. Tambin necesitar el soporte para initrd; 2. si tiene tarjetas de red en su sistema, compile los controladores de las mismas como mdulos. De esta forma, Usted puede denir qu tarjeta ser la primera, cual la segunda, y as sucesivamente, poniendo alias apropiados en el archivo /etc/modules.conf. Si compila los controladores dentro del ncleo, el orden en el que se cargarn depender del orden de vinculacin, el cual puede diferir de lo que Usted desea; 3. y nalmente: si no sabe de lo que se trata una opcin, lea la ayuda! Si el texto de ayuda no logra inspirarlo, simplemente deje la opcin como estaba. (en los objetivos config y oldconfig, presione la tecla ? para acceder a la ayuda). Et voil ! La conguracin por n est terminada. Guarde su conguracin y salga.

13.5. Guardando y volviendo a usar los archivos de conguracin de su ncleo o u


La conguracin del ncleo se guarda en el archivo /usr/src/linux/.config. Hay una copia de respaldo del mismo en el directorio /boot/config-<versin>, es bueno mantenerla como referencia. Pero tambin o guarde sus conguraciones para distintos ncleos, ya que esto es slo cuestin de dar nombres diferentes a los archivos de conguracin. Una posibilidad es nombrar a los archivos de conguracin basndose en la versin del ncleo. Digamos que Usted modic la versin de su ncleo como se mostr en Congurando el ncleo, pgina 97, entonces puede hacer:
$ cp .config /root/config-2.6.8-pepe

Si, por ejemplo, decide actualizar a 2.6.9, podr volver a usar este archivo, ya que las diferencias de conguracin entre estos dos ncleos sern muy pequeas. Simplemente use la copia de respaldo:
$ cp /root/config-2.6.8-pepe .config

Pero el hecho de volver a copiar el archivo, no signica que el ncleo ya est listo para volver a ser compilado. Tiene que volver a invocar a make menuconfig (o lo que sea que elija usar), ya que este proceso crea y/o modica algunos archivos necesarios para poder compilar con xito. Sin embargo, adems del hecho molesto de volver a pasar por todos los mens, puede perderse alguna opciones nuevas interesantes. Puede evitar esto usando make oldconfig. Esto tiene dos ventajas: 1. Es rpido. 2. Si aparece una opcin nueva en el ncleo y no estaba presente en su archivo de conguracin, el proceso se detendr y esperar a que ingrese su eleccin.

Luego que ha copiado su archivo .config al directorio personal de root, como se propuso antes, ejecute make mrproper. Esto asegurar que nada queda de la conguracin antigua y Usted obtendr a o a un ncleo limpio. u

Luego, hora de compilar.

13.6. Compilar el ncleo y los mdulos, instalar La Bestia u o


Una pequea nota antes de comenzar: si est volviendo a compilar un ncleo con una versin idntica al que ya est presente en su sistema, primero debe borrar los mdulos antiguos. Por ejemplo, si est recompilando 2.6.8, debe borrar el directorio /lib/modules/2.6.8. La compilacin del ncleo y de los mdulos, y la posterior instalacin de los mdulos se hace con las lneas siguientes:

98

Captulo 13. Compilando e instalando ncleos nuevos


make clean make all make modules_install install

Un poco de vocabulario: Cualquier argumento como clean, all, etc., se denominan objetivos. Note que, comenzando con el ncleo 2.6, existe un objetivo denominado all (todo). Si ejecuta este objetivo es lo mismo que ejecutar (en la arquitectura x86) los objetivos bzImage y modules. Esta nueva opcin construir los objetivos preferidos para una arquitectura dada. Antes de 2.6, cada arquitectura tena un nombre de opcin diferente para compilar el ncleo. Si especica varios objetivos para make como se muestra arriba, se ejecutarn los mismos en orden de aparicin. Pero si uno de los objetivos falla, make no continuar ms1. Veamos los objetivos diferentes y qu es lo que hacen:

bzImage: esto construye el ncleo. Note que este objetivo slo es vlido para los procesadores x86 y x86_64. Este objetivo tambin genera el archivo System.map para este ncleo. Ms adelante veremos para que se usa este archivo. modules: como su nombre (en ingls) lo indica, este objetivo generar los mdulos para el ncleo que construy recin. Si ha elegido no tener mdulos, este objetivo no har cosa alguna. all: este objetivo generar la imagen del tipo de ncleo preferido y los mdulos correspondientes a la arquitectura dada. modules_install: esto instalar los mdulos. De manera predeterminada, los mdulos se instalarn en el directorio /lib/modules/<versin-del-ncleo>. Este objetivo tambin computa las dependencias de los o u mdulos. install: este ltimo objetivo nalmente copiar el ncleo y los mdulos a los lugares correctos y modicar las conguraciones del cargador de arranque para que el ncleo nuevo est disponible al momento de arrancar la mquina. No lo utilice si preere realizar una instalacin manual como se describe en Instalando el ncleo nuevo manualmente, pgina 99.

Es importante respetar el orden de los objetivos, modules_install install, de forma tal que los mdulos realmente se instalen prio mero. De lo contrario initrd estar mal y el ncleo no arrancar a u a correctamente.

Ahora todo est compilado e instalado correctamente, listo para ser probado! Simplemente vuelva a arrancar la mquina y elija el ncleo nuevo en el men de arranque. Note que todava est disponible el ncleo antiguo de forma tal que lo puede usar si experimenta problemas con el nuevo. Sin embargo, puede elegir instalar manualmente el ncleo y cambiar los mens de arranque a mano. De esto se trata la seccin siguiente.

13.7. Instalando el ncleo nuevo manualmente u


Los procedimientos en esta seccin se aplican a la arquitectura x86. o Si tiene una arquitectura diferente, la ubicacin de los archivos y o los archivos a instalar podr ser diferentes. an

El ncleo se encuentra en arch/i386/boot/bzImage. El directorio estndar en el cual se instalan los ncleos es /boot. Tambin debe copiar el archivo System.map para asegurarse que algunos programas (por ejemplo, top) funcionarn correctamente. Otra vez, consejos para una buena prctica: nombre a dichos archivos en base a la versin del ncleo. Asumamos que la versin de su ncleo es 2.6.8-pepe. La secuencia de comandos que Usted tendr que teclear es:
$ cp arch/i386/boot/bzImage /boot/vmlinuz-2.6.8-pepe $ cp System.map /boot/System.map-2.6.8-pepe

Ahora tiene que decirle al cargador de arranque acerca de su ncleo nuevo. Hay dos cargadores de arranque: GRUB o LILO. Note que Mandrakelinux est congurado con LILO de manera predeterminada.
1. En este caso, si falla la compilacin, signica que hay un error en el ncleo... De ser as, por favor reprtelo!

99

Captulo 13. Compilando e instalando ncleos nuevos

13.7.1. Actualizando a LILO


La manera ms simple de actualizar a LILO es usar drakboot (ver DrakBoot: cambiar su conguracin de arranque en la Gua de comienzo) Alternativamente, Usted puede editar manualmente el archivo de conguracin de la manera siguiente. El archivo de conguracin de LILO es /etc/lilo.conf. Un archivo lilo.conf tpico luce as:
boot=/dev/hda map=/boot/map default="linux" keytable=/boot/es-latin1.klt prompt nowarn timeout=50 message=/boot/message menu-scheme=wb:bw:wb:bw image=/boot/vmlinuz label="linux" root=/dev/hda1 initrd=/boot/initrd.img append="devfs=mount resume=/dev/hda5" read-only other=/dev/fd0 label="floppy" unsafe

Un archivo lilo.conf consiste de una seccin principal, seguida de una seccin para arrancar cada sistema operativo. En el ejemplo anterior, la seccin principal se compone de las directivas siguientes:
boot=/dev/hda map=/boot/map default="linux" keytable=/boot/es-latin1.klt prompt nowarn timeout=50 message=/boot/message menu-scheme=wb:bw:wb:bw

La directiva boot= le dice a LILO donde instalar su sector de arranque; en este caso, es en el MBR (Master Boot Record, Registro Principal de Arranque) del primer disco rgido IDE. Si quiere hacer un disquete de arranque de LILO, simplemente reemplace /dev/hda con /dev/fd0. La directiva prompt le pide a LILO que muestre el men al arrancar. Como se congura un tiempo de espera, LILO iniciar la imagen predeterminada despus de 5 segundos (timeout=50). Si quita la directiva timeout, LILO esperar hasta que Usted haya tecleado algo. Luego viene una seccin linux:
image=/boot/vmlinuz label="linux" root=/dev/hda1 initrd=/boot/initrd.img append="devfs=mount resume=/dev/hda5" read-only

Una seccin para arrancar un ncleo de GNU/Linux siempre comienza con una directiva image=, seguida de la ruta completa a un ncleo GNU/Linux vlido. Como cualquier seccin, contiene una directiva label= como identicador nico. La directiva root= le dice a LILO qu particin contiene el sistema de archivos raz para este ncleo. El suyo puede ser distinto al ejemplo... La directiva read-only le dice a LILO que debera montar el sistema de archivos raz como slo de lectura al arrancar: si esta directiva no est presente, recibir un mensaje de advertencia. La directiva append= especica opciones para pasar al ncleo durante el arranque. Luego viene la seccin floppy:
other=/dev/fd0 label="floppy" unsafe

De hecho, LILO usa una seccin que empiece con other= para arrancar cualquier sistema operativo que no sea GNU/Linux: el argumento de esta directiva es la ubicacin del sector de arranque de dicho sistema operativo, y, en este caso, es para arrancar desde un disquete.

100

Captulo 13. Compilando e instalando ncleos nuevos Ahora, es momento de agregar una seccin para nuestro ncleo nuevo. Puede poner esta seccin en cualquier lugar debajo de la seccin principal, pero no puede ponerla dentro de otra seccin. La misma debera lucir as:
image=/boot/vmlinuz-2.6.8-pepe label="pepe" root=/dev/hda1 read-only append="devfs=mount resume=/dev/hda5"

Por supuesto, debe adaptar la entrada a la conguracin de su sistema. Entonces, as luce su lilo.conf luego de la modicacin, decorado con algunos comentarios adicionales (todas las lneas que comienzan con #), que sern ignorados por LILO:
# # Seccin principal o # boot=/dev/hda map=/boot/map install=/boot/boot.b message=/boot/message # Qu arrancar predeterminadamente. Pongamos nuestro ncleo nuevo aqu: e u default="pepe" # Mostrar el prompt... prompt # ... esperar 5 segundos timeout=50 # # Nuestro ncleo nuevo: imagen predeterminada u # image=/boot/vmlinuz-2.6.8-pepe label="pepe" root=/dev/hda1 read-only append="devfs=mount resume=/dev/hda5" # # El ncleo original u # image=/boot/vmlinuz label="linux" root=/dev/hda1 read-only append="devfs=mount resume=/dev/hda5" # # Seccin de disquete o # other=/dev/floppy label="floppy" unsafe

Esto bien podra ser como lucir su archivo lilo.conf... pero recuerde, nuevamente, de adaptar el archivo de acuerdo con su conguracin. Ahora que se ha modicado adecuadamente el archivo, y a diferencia de GRUB que no lo necesita, debe indicarle a LILO que cambie el sector de arranque:
$ lilo Added pepe * Added linux Added floppy $

De esta forma, Usted puede compilar tantos ncleos como quiera, agregando tantas secciones como sea necesario. Ahora, slo resta reiniciar la mquina para probar su ncleo nuevo. Note que si LILO muestra errores durante la instalacin, signica que nada ha sido cambiado. LILO slo modica su conguracin si no encuentra errores en el proceso.

101

Captulo 13. Compilando e instalando ncleos nuevos

13.7.2. Actualizando a grub


Obviamente, retenga la posibilidad de iniciar su ncleo corriente! La forma ms fcil de actualizar a GRUB es usar drakboot (consulte DrakBoot: cambiar su conguracin de arranque en Gua de comienzo). Alternativamente, Usted puede editar manualmente el archivo de conguracin de la manera siguiente. Debe editar el archivo /boot/grub/menu.lst. As es como luce un archivo menu.lst tpico, luego de que Usted ha instalado su distribucin Mandrakelinux y antes de la modicacin:
timeout 5 color black/cyan yellow/cyan i18n (hd0,4)/boot/grub/messages keytable (hd0,4)/boot/fr-latin1.klt default 0 title linux kernel (hd0,4)/boot/vmlinuz root=/dev/hda5 title failsafe kernel (hd0,4)/boot/vmlinuz root=/dev/hda5 title Windows root (hd0,0) makeactive chainloader +1 title floppy root (fd0) chainloader +1

failsafe

Este archivo est compuesto por dos partes: el encabezado con las opciones comunes (las primeras cinco lneas), y las imgenes (o entradas), cada una correspondiente a un ncleo de GNU/Linux diferente o al sistema operativo (SO) que sea. timeout 5 dene el tiempo (en segundos) durante el cual GRUB esperar antes de cargar la imagen predeterminada (esto se dene por la directiva default 0 en las opciones comunes, es decir la primera imagen en este caso). La directiva keytable, si est presente, dene donde encontrar la distribucin del teclado para su teclado. En este ejemplo es una distribucin de teclado Espaol. Si no hay entrada alguna de este tipo, se asume un teclado QWERTY comn. Todos los hd(x,y) que ve se reeren a la particin nmero y del disco nmero x segn lo ve el BIOS Luego viene la seccin de las diferentes imgenes. Aqu tenemos cuatro de ellas: linux, failsafe, windows, y floppy.

La seccin linux comienza por decir a GRUB el ncleo que se tiene que cargar (kernel hd(0,4)/boot/vmlinuz), seguido por las opciones a pasar a dicho ncleo. En este caso, root=/dev/hda5 le dir al ncleo que el sistema de archivos raz est ubicado en /dev/hda5. De hecho, /dev/hda5 es el equivalente de hd(0,4) de GRUB, pero nada le impide al ncleo de estar en una particin diferente que el sistema de archivos raz. La seccin failsafe se parece muchsimo a la anterior, a diferencia que nosotros le pasaremos un argumento al ncleo (failsafe) lo cual le instruye que se ponga en el modo single o rescue. La seccin windows le indica a GRUB que simplemente cargue el sector de arranque de la primera particin, el cual probablemente contiene un sector de arranque de Windows. La seccin floppy, simplemente arranca a su sistema desde un disquete en la primera disquetera, cualquiera sea el sistema que est instalado sobre el mismo. Puede ser un disquete de arranque de Windows, o incluso un ncleo de GNU/Linux en un disquete.

Dependiendo del nivel de seguridad que use en su sistema, algunas de las entradas descriptas aqu pueden no estar presentes en su archivo.

Ahora, vayamos al grano. Necesitamos agregar otra seccin para decirle a GRUB acerca de nuestro ncleo nuevo. En este ejemplo, la misma se ubicar al comienzo de las otras entradas, pero nada le prohibe ponerla en otro lugar:
title pepe kernel (hd0,4)/boot/vmlinuz-2.6.8-pepe root=/dev/hda5

102

Captulo 13. Compilando e instalando ncleos nuevos No se olvide de adaptar el archivo a su conguracin! El sistema de archivos raz de GNU/Linux aqu est en /dev/hda5, pero bien podra estar en otro lugar de su sistema. Y eso es todo. A diferencia de LILO, no queda cosa por hacer. Simplemente vuelva a iniciar su computadora y aparecer la entrada nueva que deni recin. Slo tiene que seleccionarla del men y arrancar su ncleo nuevo. Si Usted compil su ncleo con el framebuffer, probablemente querr usarlo: en este caso, debe agregar una directiva al ncleo que le dice cual es la resolucin en la que Usted quiere arrancar. La lista de modos est disponible en el archivo /usr/src/linux/Documentation/fb/vesafb.txt (slo en el caso del framebuffer VESA! De lo contrario, debe referirse al archivo correspondiente). Para el modo 800x600 en 32 bits2, el nmero de modo es 0x315, por lo que debe agregar la directiva:
vga=0x315

y ahora su entrada se parece a lo siguiente:


title pepe kernel (hd0,4)/boot/vmlinuz-2.6.8-foo root=/dev/hda5 vga=0x315

Para mayor informacin, por favor consulte las pginas Info acerca de GRUB (info grub).

2. 8 bits signica 28 colores, es decir 256; 16 bits signica 216 colores, es decir 64k, es decir 65536; en 24 bits as como en 32 bits, el color se codica en 24 bits, es decir 224 colores posibles, en otras palabras exactamente 16M, o un poco ms de 16 millones.

103

Captulo 13. Compilando e instalando ncleos nuevos

104

Apndice A. Glosario e
alias Mecanismo usado en un shell para hacer que este substituya una cadena por otra antes de ejecutar un comando. Usted puede ver todos los alias denidos en la sesin corriente ingresando alias en la invitacin. APM Advanced Power Management (Administracin avanzada de energa). Caracterstica usada por algunos BIOS para hacer que la mquina entre en modo de reposo luego de un perodo de inactividad determinado. En las porttiles, APM tambin es el responsable de reportar el estado de la batera y, si esta lo soporta, el tiempo estimado de vida. archivo oculto Es un archivo que no se puede ver cuando se ejecuta un comando ls sin opciones. Los nombres de los archivos ocultos comienzan con un . y casi siempre se los utiliza para almacenar las preferencias y conguraciones personales del usuario para los distintos programas que usa. Por ejemplo, la historia de comandos de bash se guarda en .bash_history , que es un archivo oculto. archivos, sistema de Tambin conocido como lesystem . Es el esquema usado para poder almacenar archivos en un medio fsico (disco rgido, disquete) en una manera consistente. Son ejemplos de sistemas de archivos: FAT, el Ext2 de GNU/Linux, ISO-9660 (usado por los CD-ROMs) y as sucesivamente. ARP Address Resolution Protocol (Protocolo de Resolucin de Direcciones). El Protocolo de Internet que se usa para hacer corresponder dinmicamente las direcciones Internet a direcciones fsicas (hardware) sobre redes de rea local. Esto est limitado a redes que soportan la difusin por hardware. arranque Tambin conocido como boot . Es el procedimiento que toma lugar cuando se enciende una computadora, donde se reconocen los perifricos uno tras otro, y donde se carga en memoria el sistema operativo. arranque, cargador de Tambin conocido como bootloader . Es un programa que inicia el sistema operativo. Muchos cargadores de arranque le brindan la oportunidad de cargar ms de un sistema operativo permitindole elegir entre los mismos dentro de un men de arranque. Los cargadores de arranque como Grub son populares gracias a esta caracterstica y son muy tiles en sistemas de arranque dual o mltiple. arranque, disquete de Tambin conocido como bootdisk , es un disquete que puede arrancar y contiene el cdigo necesario para cargar el sistema operativo desde el disco rgido (a veces es auto-suciente - es decir, no carga el sistema operativo desde el disco, sino desde s mismo). ASCII American Standard Code for Information Interchange (Cdigo Estndar Americano para el Intercambio de Informacin). El cdigo estndar que se usa para almacenar caracteres, incluyendo a los caracteres de control, en una computadora. Muchos cdigos de 8 bits (tales como el ISO 8859-1, el conjunto de caracteres predeterminado de GNU/Linux) contienen al ASCII como su mitad inferior. ATAPI (AT Attachment Packet Interface). Es una extensin de la especicacinATA (Advanced Technology Attachment) conocida comnmente con el nombre de IDE (Integrated Drive Electronics) que proporciona comandos adicionales para controlar las unidades de CD-ROM y las unidades de cinta. Los controladores IDE que poseen estas caractersticas se denominan EIDE (Enhanced IDE). ATM Es un acrnimo de Asynchronous Transfer Mode (Modo de Transferencia Asncrono). Una red ATM empaqueta los datos en bloques de tamao normalizado (53 bytes: 48 de datos y 5 de cabecera) que puede transportar ecientemente de un punto a otro. ATM es una tecnologa de red de paquetes de circuitos conmutados orientada a las redes pticas de alta velocidad (multi-megabits).

105

Apndice A. Glosario atmico Se dice que un conjunto de operaciones es atmico cuando se ejecuta todo de una vez, y no se puede interrumpir. beta testing Es el nombre que se da al proceso de probar la versin beta de un programa. Usualmente los programas se sacan en etapas alfa y beta para la prueba del mismo antes de sacar la versin nal. biblioteca Es una coleccin de procedimientos y funciones en formato binario para que los programadores usen en sus programas (siempre y cuando la licencia de la biblioteca en cuestin se los permita). El programa encargado de cargar las bibliotecas compartidas en tiempo de ejecucin se denomina vinculador dinmico. binario En el contexto de la programacin, los binarios son los compilados, el cdigo ejecutable. bip es el pequeo ruido que hace el parlante de su computadora para avisarle acerca de alguna situacin ambigua cuando Usted est utilizando el completado de la lnea de comandos y, por ejemplo, hay ms de una eleccin posible para completar. Puede haber otros programas que hagan bip para hacerle saber de alguna situacin en particular. bit Del ingls BInary digiT (Dgito binario). Un solo dgito que puede tomar los valores 0 o 1, dado que el clculo se hace en base dos. Unidad elemental de informacin binaria. BSD Berkeley Software Distribution (Distribucin de software de Berkeley). Es una variante de Unix; desarrollada en el departamento de computacin de la Universidad de Berkeley. Esta versin siempre ha sido considerada tcnicamente ms avanzada que las otras, y ha contribuido muchas innovaciones al mundo de la computacin en general y al de Unix en particular. buffer Una porcin de memoria pequea de tamao jo, que puede ser asociada a un archivo de modo de bloques, a una tabla del sistema, a un proceso, y as sucesivamente. El buffer cache mantiene la coherencia de todos los buffers. Ver tambin: buffer cache. buffer cache Una parte crucial del ncleo de un sistema operativo. Tiene a su cargo mantener todos los buffers actualizados, compactando el cache cuando sea necesario, borrando los buffers innecesarios y ms. Ver tambin: buffer. bug Comportamiento ilgico o incoherente de un programa en un caso especial, o comportamiento que no sigue la documentacin entregada con el programa. Generalmente, las caractersticas nuevas en los programas introducen bugs nuevos. Error de programacin. byte Octeto. Paquete de ocho bits consecutivos, interpretados en base dos como un nmero entre 0 y 255. Ver tambin: bit. capitalizacin Cuando se toma en el contexto de las cadenas de caracteres, es la distincin entre maysculas (o letras capitales) y minsculas. CIFS Common Internet FileSystem (Sistema de Archivos Comn de Internet) El predecesor del sistema de archivos SMB, usado en los sistemas D.O.S.. cliente Programa o computadora que espordicamente, y por un tiempo dado, se conecta a otro programa u otra computadora para darle rdenes o pedirle informacin. En el caso de un sistema de igual a igual (peer to

106

Apndice A. Glosario peer ) tales como PPP o SLIP el cliente se toma como el extremo de la conexin que inicia la llamada y el otro extremo se toma como servidor. Es uno de los componentes de un sistema cliente/servidor . cliente/servidor, sistema Sistema o protocolo que consiste de un servidor y de uno o varios clientes. comando, modo de Bajo Vi o uno de sus clones, es el estado del programa en el cual la presin de una tecla (esto, por sobre todo se reere a las letras) no resultar en la insercin de la letra correspondiente en el archivo editado, sino que efectuar una accin especca a la tecla en cuestin (a menos que el clon tenga comandos que se puedan cambiar y Usted haya personalizado su conguracin). Usted puede salir de este modo ingresando uno de los comandos que lo llevarn de vuelta al modo de insercin: i , I , a , A , s , S , o , O ,c , C , ... comandos, lnea de Lo que proporciona el shell y le permite al usuario ingresar comandos directamente. Tambin es el sujeto de una ame war eterna entre sus adeptos y sus detractores comodn Los caracteres * y ? se utilizan como caracteres comodn y pueden representar cualquier cosa. El * representa cualquier cantidad de caracteres incluyendo a ningn caracter. El ? representa exactamente un caracter. A menudo los comodines se usan en las expresiones regulares. compilacin Es el proceso de traducir cdigo fuente que una persona puede leer (bueno, con un poco de prctica) y que est escrito en algn lenguaje de programacin (por ejemplo, C) en un archivo binario que puede leer la mquina. completado Capacidad de un shell para expandir automticamente una sub-cadena a un nombre de archivo, un nombre de usuario u otros, siempre y cuando la sub-cadena no sea ambigua. compresin Es una forma de encoger archivos o disminuir la cantidad de caracteres que se envan por un vnculo de comunicaciones.compress , zip , gzip , y bzip2 se cuentan entre algunos programas de compresin. consola Es el nombre que se da a lo que generalmente se denominaban terminales. En los sistemas GNU/Linux, Usted tiene lo que se denominan consolas virtuales que le permiten usar una pantalla o monitor para mltiples sesiones independientes. Predeterminadamente, tiene seis consolas virtuales a las que se acceden presionando ALT-F1 hasta ALT-F6. Tambin hay una sptima consola virtual, ALT-F7 , que le permitir usar el X Window System. En X, puede pasarse a la consola de texto presionando CTRL-ALTF1 hasta CTRL-ALT-F6. consola virtual Es el nombre que se le da a lo que se solan denominar terminales. En los sistemas GNU/Linux, Usted tiene lo que se llaman consolas virtuales que le permiten usar una pantalla o monitor para muchas sesiones que corren independientes unas de otras. De manera predeterminada, Usted tiene seis consolas virtuales a las que puede acceder presionando ALT-F1 hasta ALT-F6. De manera predeterminada, hay una sptima consola virtual, ALT-F7, que le permite acceder al Sistema X Window que est ejecutando. En X, puede acceder a la consola de texto presionando CTRL-ALT-F1 hasta CTRL-ALT-F6. Ver tambin: consola. contrasea Es una palabra, o una combinacin de palabras y letras, secreta que se usa para asegurar alguna cosa. Las contraseas se usan en conjunto con las conexiones de usuario (login) en los sistemas operativos multiusuario, sitios web, sitios FTP, y as sucesivamente. Las contraseas deberan ser frases o combinaciones alfanumricas difciles de adivinar y nunca deberan basarse en palabras comunes del diccionario. Las contraseas aseguran que otras personas no se pueden conectar a una computadora o a un sitio usando la cuenta de Usted cookies Archivos temporales que un servidor web remoto escribe en el disco rgido local. Los cookies le permiten al servidor estar informado de las preferencias del usuario cuando este se vuelva a conectar. 107

Apndice A. Glosario copia de respaldo (backup) Es una forma de guardar sus datos importantes en un medio y ubicacin seguros. Las copias de respaldo deberan realizarse regularmente, especialmente con los archivos de conguracin y la informacin ms crtica (los directorios principales de los cuales se debe hacer copia de seguridad son /etc ,/home , y /usr/local ). Tradicionalmente, mucha gente usa tar con GZip o BZip2 para hacer copia de respaldo de los directorios y los archivos. Usted puede utilizar estas herramientas o programas como dump y restore , junto con muchas otras soluciones libres o comerciales de copia de respaldo. correo-e Signica Correo Electrnico. Esta es la forma de enviar mensajes electrnicamente entre personas sobre la misma red. Al igual que con el correo comn (tambin conocido como correo postal), el correo-e necesita un destino y la direccin del remitente para ser enviado adecuadamente. El remitente debe tener una direccin de la forma remitente@dominio.del.remitente y el destinatario debe tener una direccin de la forma destinatario@dominio.del.destinatario. El correo-e es un mtodo muy rpido de comunicacin y tpicamente slo toma unos pocos minutos en llegar a cualquiera, sin importar en que lugar del mundo se encuentre dicho destinatario. Para poder escribir un correo-e, Usted necesita de un cliente de correo-e como Pine o Mutt los cuales son clientes de modo texto, o clientes GUI como KMail. cortafuegos Mquina que, en la topologa de una red local, es el nico punto de conexin con la red externa, y que ltra o controla la actividad sobre algunos puertos, o se asegura que slo algunas interfaces IP especcas puedan tener acceso a ellos. cuenta En un sistema Unix, un nombre de conexin, un directorio personal, una contrasea y un shell que le permiten a una persona conectarse a este sistema. cuota Es un mtodo para restringir el uso y lmite del disco para los usuarios. Los administradores pueden restringir el tamao de los directorios personales de los usuarios congurando los lmites de la cuota sobre sistemas de archivos especcos. cdigo objeto Es el cdigo generado por el proceso de compilacin para ser vinculado con otros cdigos objeto y bibliotecas para formar un archivo ejecutable. El cdigo objeto es legible por la mquina. CHAP Challenge-Handshake Authentication Protocol (Protocolo de Autenticacin de Desafo-Apretn de manos). Protocolo usado por los ISP para autenticar a sus clientes. En este esquema, se enva un valor al cliente (la mquina que se conecta), el cliente calcula un hash a partir de este valor y se lo enva al servidor, y el servidor compara el hash con el que l mismo calcul. Ver tambin: PAP. datagrama Un datagrama es un paquete discreto de datos y encabezados que contienen direcciones, que es la unidad bsica de transmisin a travs de un red IP. Tambin puede ser que lo haya odo nombrar como un paquete. dependencias Son las etapas de la compilacin que es necesario satisfacer antes de continuar con las siguientes para poder compilar un programa satisfactoriamente. DHCP Dynamic Host Conguration Protocol (Protocolo de Conguracin Dinmica del Host). Un protocolo diseado para que las mquinas de una red local obtengan una direccin IP dinmicamente. direccin fsica (hardware) Es un nmero que identica unvocamente a un host en una red fsica en la capa de acceso al medio. Son ejemplos las Direcciones Ethernet y las Direcciones AX.25 . directorio Parte de la estructura de un sistema de archivos. Dentro de un directorio se almacenan archivos u otros directorios. Algunas veces hay sub-directorios (o ramas) dentro de un directorio. Generalmente se denomina a esto un rbol de directorios. Si desea ver lo que hay dentro de otro directorio, o bien tendr que 108

Apndice A. Glosario listarlo o bien tendr que cambiarse al mismo. A los archivos dentro de un directorio se los denomina hojas mientras que a los sub-directorios se los denomina ramas. Los directorios siguen las mismas restricciones que los archivos aunque los permisos signican cosas diferentes. Los directorios especiales . y .. se reeren, respectivamente al directorio en s mismo y a su directorio padre. directorio personal Generalmente se abrevia home (casa). Este es el nombre del directorio personal de un usuario dado. Ver tambin: cuenta. directorio raz Este es el directorio tope de un sistema de archivos. Este directorio no tiene padre, por lo tanto .. para el directorio raz apunta a s mismo. El directorio raz se escribe como /. discretos, valores Los valores discretos son aquellos que no son continuos. Es decir, existe algn tipo de separacin entre dos valores consecutivos. distribucin Es un trmino que se usa para distinguir a un producto de un vendedor de GNU/Linux de otro. Una distribucin est compuesta del ncleo y utilitarios de GNU/Linux centrales, as como tambin de programas de instalacin, programas de terceros, y algunas veces software propietario. DLCI (Data Link Connection Identier). Es el identicador de la conexin de datos y se usa para identicar una conexin virtual punto a punto nica en una red de Relevo de Tramas (Frame Relay ). Normalmente el proveedor de red de relevo de tramas asigna a los DLCI. DMA Direct Memory Access (Acceso Directo a Memoria). Caracterstica usada por la arquitectura de PC; que permite que un perifrico lea o escriba de la memoria principal sin intervencin de la CPU. Los dispositivos PCI usan bus mastering (apropiacin del bus) y no necesitan DMA. DNS Domain Name System (Sistema de Nombres de Dominio). El mecanismo de direcciones/nombres distribuido que se usa en Internet. Este mecanismo le permite mapear un nombre de dominio a una direccin IP, que es lo que le deja buscar un sitio por el nombre de dominio sin conocer la direccin IP de dicho sitio. DPMS Display Power Management System (Sistema de Administracin de Energa del Monitor). Protocolo usado por todos los monitores modernos para manipular las caractersticas de administracin de energa. Los monitores que soportan estas caractersticas generalmente se denominan ecolgicos. dueo En el contexto de los usuarios y sus archivos, el dueo de un archivo es el usuario que cre a ese archivo. dueo, grupo En el contexto de los grupos y sus archivos, el grupo dueo de un archivo es el grupo al cual pertenece el usuario que cre a ese archivo. eco Es cuando Usted puede ver los caracteres que teclea, por ejemplo, en el campo donde ingresa su nombre de usuario y/o contrasea. Los caracteres se muestran tal cual y no como un *. editor Es un trmino usado tpicamente para los programas que editan archivos de textos. Tambin se denominan editores de texto. Los editores de GNU/Linux ms conocidos son el editor GNU Emacs (Emacs ) y el editor de Unix, Vi. ejecucin, nivel de Es una conguracin de software del sistema que permite que existan slo un grupo de procesos seleccionados. En el archivo /etc/inittab se denen cuales son los procesos ejecutados en cada uno de los niveles de ejecucin. Hay ocho niveles de ejecucin denidos: 0, 1, 2, 3, 4, 5, 6, S y el cambio entre niveles de ejecucin lo puede realizar slo un usuario privilegiado con los comandos init y telinit . 109

Apndice A. Glosario ELF Executable and Linking Format (Formato de Vinculado y de Ejecutables). Hoy da, este es el formato binario usado por la mayora de las distribuciones GNU/Linux. englobamiento En el shell, la capacidad de agrupar cierto conjunto de nombres de archivo con un patrn de englobamiento. Ver tambin: englobamiento, patrn de. englobamiento, patrn de Es una cadena de caracteres conformada por caracteres normales y especiales. El shell interpreta y expande los caracteres especiales. entorno Es el contexto de ejecucin de un proceso. Esto incluye a toda la informacin que necesita el sistema operativo para administrar el proceso y lo que necesita el procesador para ejecutar el proceso adecuadamente. Ver tambin: proceso. entorno, variables de Una parte del entorno del proceso. Las variables de entorno se pueden ver desde el shell directamente. Ver tambin: proceso. escapar En el contexto del shell, es la accin de poner alguna cadena de caracteres entre comillas para evitar que el shell la interprete. Por ejemplo, cuando Usted quiere, o debe, usar espacios en alguna lnea de comandos y enviar el resultado a otro comando por una tubera, tiene que poner al primer comando entre comillas (escapar el comando) de no ser as, el shell no lo interpretar bien y no funcionar como se espera. escritorio Si est utilizando X, el escritorio es el lugar de la pantalla dentro del cual Usted trabaja y sobre el cual se muestran los iconos y las ventanas. Tambin se denomina fondo , y por lo general se llena con un color simple, un color en degrad o incluso una imagen. Ver tambin: escritorios virtuales. escritorio, cambiador de espacios de Un pequeo applet que le permite cambiar entre los escritorios virtuales disponibles. Ver tambin: escritorios virtuales. escritorios virtuales En X, el administrador de ventanas puede proporcionarle varios escritorios. Esta caracterstica til le permite organizar sus ventanas, evitando el problema de tener docenas de ellas apiladas una encima de otra. Esto funciona como si Usted tuviera muchas pantallas. Se puede pasar de un escritorio virtual a otro en una manera que depende del administrador de ventanas que Usted est utilizando. Ver tambin: ventanas, administrador de, escritorio. expresin regular Potente herramienta terica que se usa para buscar y hacer corresponder cadenas de texto. Le permite especicar patrones que deben obedecer dichas cadenas. Muchos utilitarios Unix la usan: sed, awk, grep y Perl entre otros. Ext2 Es una abreviatura para el segundo sistema de archivos extendido. Ext2 es el sistema de archivos nativo de GNU/Linux. El benecio de utilizar Ext2 en lugar de los sistemas de archivos ms antiguos, tales como FAT o incluso FAT32, es que este ofrece alto rendimiento, nombres de archivo largos, permisos sobre los archivos, y una tolerancia mayor frente a los errores. FAQ Frequently Asked Questions (Preguntas Formuladas Frecuentemente): documento que contiene una serie de preguntas/respuestas acerca de un tema especco. Histricamente aparecieron en los foros de discusin, pero ahora este tipo de documento aparece en varios sitios web, e incluso hay productos comerciales que tienen su FAQ. Generalmente, son fuentes de informacin muy buenas.

110

Apndice A. Glosario FAT File Allocation Table (Tabla de Ubicacin de Archivos). Sistema de archivos usado por D.O.S. y las primeras versiones de Windows. Las versiones ms modernas de Windows usan una variante de FAT denominada FAT32. FDDI Fiber Distributed Digital Interface (Interfaz Digital Distribuida de Fibra). Una capa fsica de red de alta velocidad, que usa bra ptica para las comunicaciones. Slo se usa en redes grandes, principalmente debido a su costo. FHS Filesystem Hierarchy Standard (Normativa para la Jerarqua de un Sistema de Archivos). Un documento que contiene guas y consejos para una organizacin coherente del rbol de archivos en sistemas Unix. Mandrake Linux cumple con esta normativa en la mayora de sus aspectos. FIFO First In, First Out (Primero en Llegar, Primero en Salir). Una estructura de datos o un buffer de hardware donde los elementos se quitan en el orden en el que fueron puestos. Las tuberas de Unix son el ejemplo ms comn de FIFO. En la programacin estas estructuras tambin se conocen con el nombre de cola. ag Es un indicador (usualmente un bit) que se usa para sealar alguna condicin a un programa. Por ejemplo, un sistema de archivos tiene, entre otros, a un ag para indicar si tiene que ser volcado en una copia de respaldo, de forma tal que cuando este est activo se hace una copia de respaldo del sistema de archivos, y cuando no lo est no. foco Para una ventana, accin de recibir eventos de teclado (tales como pulsado y soltado de teclas) y clic del ratn, a menos que sean "atrapados" por el administrador de ventanas. framebuffer Proyeccin de la memoria RAM de una placa de vdeo en la memoria principal. Esto permite que las aplicaciones accedan a la RAM de vdeo sin necesidad de comunicarse con la placa. Por ejemplo, todas las estaciones de trabajo grcas de alto nivel usan framebuffers . Frame Relay (Frame Relay ) Es una tecnologa de redes idealmente adecuada para transportar trco que se presenta en rfagas o es de naturaleza espordica. Los costos de red se reducen teniendo a varios clientes de Relevo de Tramas compartiendo la misma capacidad de red y conando que los mismos deseen hacer uso de la red en momentos ligeramente distintos. FTP File Transfer Protocol (Protocolo de Transferencia de Archivos). Este es el protocolo tpico de Internet usado para transferir archivos desde una mquina a otra. gateway Vnculo que conecta dos redes IP. Tambin denominado pasarela. GFDL La GNU Free Documentation License (Licencia de Documentacin Libre GNU). Es la licencia que se aplica a toda la documentacin de la distribucin Mandrake Linux. GIF Graphics Interchange Format (Formato de Intercambio de Grcos). Un formato de archivos de imagen, ampliamente usado en la web. Las imgenes GIF pueden estar comprimidas o animadas. Debido a problemas con el copyright no es una buena idea usarlas, reemplcelas tanto como sea posible con el formato PNG que es mucho ms avanzado. GNU GNUs Not Unix (GNU No es Unix). El proyecto GNU ha sido iniciado por Richard Stallman al comienzo de los aos 80 y tiene como objetivo el desarrollo de un sistema operativo libre (libre como en libertad de opinin). Corrientemente, todas las herramientas estn all, excepto... el ncleo. El ncleo del proyecto GNU, Hurd, todava no es duro como una roca . Linux toma prestadas, entre otras, dos cosas de GNU: su compilador C, GCC, y su licencia, la GPL. Ver tambin: GPL. 111

Apndice A. Glosario GPL General Public License (Licencia Pblica General). La licencia del ncleo de GNU/Linux, va en la direccin contraria a todas las licencias propietarias en el sentido de que no pone restriccin alguna a la copia, modicacin y redistribucin del software, con la condicin de que el cdigo fuente est disponible. La nica restriccin, si es que se la puede denominar as, es que las personas a las cuales Usted redistribuye el software tambin se deben beneciar con los mismos derechos. GUI Graphical User Interface (Interfaz Grca de Usuario). Un programa que usa mens, botones, colores, y fuentes diferentes para parecer ms fcil de usar a primera vista. Necesita un servidor X. gur Se dice que una persona es un gur en un tema de sistemas de informacin cuando dicha persona demuestra un dominio completo del tema en cuestin. host Se reere a una computadora y normalmente se usa cuando se habla de computadoras conectadas sobre una red. HTML HyperText Markup Language (Lenguaje de Marcado de HiperTexto). El lenguaje que se usa para crear documentos web. HTTP HyperText Transfer Protocol (Protocolo de Transferencia de HiperTexto). El protocolo que se usa para conectarse a sitios web y recuperar documentos HTML. IDE Integrated Drive Electronics (Electrnica de Disco Integrada). En las PC de hoy da es el bus de disco ms usado. Un bus IDE puede contener hasta dos dispositivos, y la velocidad del bus est limitada por el dispositivo conectado que tiene la cola de comandos ms lenta (y no la velocidad de transferencia menor!). Ver tambin: ATAPI. icono Es un dibujo pequeo (normalmente de 16x16, 32x32, 48x48, y a veces 64x64 pixels de tamao) que representa, bajo un entorno grco, a un documento o a un programa. inodo Punto de entrada que conduce al contenido de un archivo en un sistema de archivos de tipo Unix. Un inodo est identicado de manera nica con un nmero, y contiene meta-informacin acerca del archivo al cual se reere, tal como sus tiempos de acceso, su tipo, su tamao, pero no su nombre! insercin, modo de Bajo Vi o uno de sus clones, es el estado del programa en el cual al presionar una tecla, esta se insertar en el archivo que se est editando (excepto casos patolgicos como el completado y la abreviacin, justicacin a la derecha al nal de la lnea, ...). Uno sale del modo de insercin al presionar Esc (o Ctrl-[ ). Internet Es una red enorme que conecta a las computadoras alrededor del mundo. IP, direccin Es una direccin numrica que consiste de cuatro partes que identica a su computadora en Internet, o cualquier otra red basada en TCP/IP. Las direcciones IP estn estructuradas de forma jerrquica, con los dominios de nivel superior y los dominios nacionales, los dominios, los sub-dominios y la direccin personal de cada mquina. Una direccin IP lucira como 192.168.0.1 . La direccin personal de una mquina puede ser o bien esttica o bien dinmica. Las direcciones IP estticas son direcciones que nunca cambian, sino que son ms bien permanentes. Las direcciones IP dinmicas son aquellas que pueden cambiar. Los usuarios de acceso telefnico y cable-mdem tienen direcciones IP tpicamente dinmicas mientras que algunas conexiones DSL y otras conexiones de velocidad mayor proporcionan direcciones IP estticas.

112

Apndice A. Glosario IP, enmascarado de Es cuando Usted usa un cortafuegos para ocultar del exterior la direccin IP verdadera de su computadora. Tpicamente, cualquier conexin de red externa que Usted realice ms all del cortafuegos heredar la direccin IP del cortafuegos. Esto es til en situaciones donde Usted debe tener una conexin con Internet rpida con una direccin IP nica pero desea utilizar ms de una computadora que tienen asignadas direcciones IP de la red interna. IRC Internet Relay Chat (Charla Interactiva en Internet). Una de los pocas normas de Internet para charlas en vivo. Permite la creacin de canales, las charlas privadas, y tambin el intercambio de archivos. Tambin est diseada para poder hacer que los servidores se conecten unos con otros, que es la razn por la cual hoy da existen varias redes IRC: Undernet ,DALnet ,EFnet para nombrar algunas. IRC, canales son los lugares dentro de los servidores IRC donde Usted puede conversar con otras personas. Los canales se crean en los servidores IRC y los usuarios se unen a dichos canales de forma tal que se pueden comunicar entre ellos. Los mensajes escritos en un canal slo son visibles para las personas conectadas a dicho canal. Dos o ms usuarios puede crear un canal privado de forma tal que no sean molestados por otros usuarios. Los nombres de los canales comienzan con un signo #. ISA Industry Standard Architecture (Arquitectura Estndar de la Industria). El primer bus de todos los usados en las PC, est siendo abandonado lentamente en favor del bus PCI. Sin embargo, algunos fabricantes de hardware siguen usndolo. Todava es muy comn que las placas SCSI que se proveen con los rastreadores, las grabadoras de CD... sean ISA. Qu lastima! ISO International Standards Organisation (Organizacin de Normas Internacionales). Grupo de compaas, consultores, universidades y otras fuentes que elaboran normativas sobre varios temas, incluyendo a la computacin. Las normas estn numeradas. Por ejemplo, la norma nmero 9660, describe al sistema de archivos que usan los CD-ROM. ISO 8859 La norma ISO 8859 incluye varias extensiones de 8 bits al conjunto de caracteres ASCII. La ISO 8859-1, el Alfabeto Latino No. 1 , es especialmente importante. El mismo se ha vuelto ampliamente implementado y ya se puede ver como el reemplazo defacto estndar de ASCII. ISO 8859-1 soporta los idiomas siguientes: Afrikaans, Alemn, Cataln, Dans, Escocs, Espaol, Faros, Finlands, Francs, Gallego, Holands, Ingls, Islands, Irlands, Italiano, Noruego, Portugus, Sueco, y Vasco. Note que los caracteres ISO 8859-1 tambin son los primeros 256 caracteres de ISO 10646 (Unicode). Sin embargo, le falta el smbolo del EURO y no cubre al Finlands y al Francs por completo. ISO 8859-15 es una modicacin de ISO 8859-1 que cubre estas necesidades. Ver tambin: ASCII. ISP Internet Service Provider (Proveedor de Servicios de Internet). Compaa que vende accesos a Internet a sus clientes, ya sea por lnea telefnica o lneas dedicadas. job En el contexto del shell, un job es un proceso que est corriendo en segundo plano. Usted puede tener varios jobs en un mismo shell y controlarlos. Ver tambin: primer plano, segundo plano. JPEG Join Photographic Experts Group (Grupo de Expertos en Fotografa). Otro formato de archivo de imagen muy comn. JPEG est optimizado para comprimir imgenes realsticas (paisajes, gente, etc.), y no funciona muy bien con imgenes no-realsticas. kernel Tambin denominado ncleo. El ncleo es el componente principal del sistema operativo; es el responsable de asignar recursos y separar los procesos entre s; maneja todas las operaciones de bajo nivel que le permiten a los programas conversar directamente con el hardware en su computadora, administrando el buffer cach y otras cosas. Ver tambin: buffer cache. 113

Apndice A. Glosario kill ring Bajo Emacs , es el conjunto de zonas de texto cortadas o copiadas desde que se inici el editor, que pueden ser llamadas para volver a insertarlas, y que est organizado como un anillo. LAN Local Area Network (Red de rea Local). Nombre genrico dado a una red de mquinas conectadas al mismo cable fsico. lanzar Es la accin de invocar, o iniciar, un programa. LDP Linux Documentation Project (Proyecto de Documentacin de GNU/Linux). Una organizacin sin nes de lucro que mantiene la documentacin de GNU/Linux. Sus documentos ms conocidos son los COMOs, pero tambin mantiene las FAQ, e incluso algunos libros. lenguaje ensamblador Es un lenguaje de programacin que est ms cerca de la computadora, por lo tanto se denomina un lenguaje de programacin de bajo nivel . El lenguaje ensamblador tiene la ventaja de la velocidad debido a que estos programas se escriben en trminos de instrucciones de procesador por lo que se necesita poca o ninguna traduccin cuando se generan los ejecutables. Su principal desventaja es que depende del procesador (o arquitectura). Tambin la escritura de programas complejos es una tarea ardua. Entonces, el lenguaje ensamblador es el lenguaje de programacin ms rpido, pero no es portable entre las distintas arquitecturas. linkage (vincular cdigo objeto) ltima etapa del proceso de compilacin, que consiste en vincular juntos a todos los archivos objetos para producir un archivo ejecutable, y hacer coincidir los smbolos que no se pudieron resolver con las bibliotecas dinmicas (a menos que se haya pedido una vinculacin esttica, en cuyo caso el cdigo de estos smbolos se incluir en el ejecutable). Linux Es un sistema operativo tipo Unix que corre en una variedad de computadoras diferentes, y cualquiera es libre de usarlo y modicarlo. Linus Torvalds escribi a Linux (el ncleo). login Nombre de conexin para un usuario en un sistema Unix. Tambin se denomina as al hecho de conectarse. lookup, tabla de es una tabla que almacena cdigos de correspondencia (o etiqutas) y el signicado de los mismos. Por lo general es un archivo de datos utilizado por un programa para obtener ms informacin acerca de un elemento en particular. Por ejemplo, HardDrake utiliza tal tabla para conocer qu signica el cdigo de producto de un fabricante. Esta es una lnea de la tabla, dando informacin acerca del elemento CTL0001
CTL0001 sound sb Creative Labs SB16 \ HAS_OPL3|HAS_MPU401|HAS_DMA16|HAS_JOYSTICK

loopback Interfaz de red virtual de una mquina consigo misma, que permite que los programas en ejecucin no tengan en cuenta el caso especial donde dos entidades de red son, de hecho, la misma mquina. mayor Nmero especco a la clase de dispositivo. Ver tambin: menor. MBR Master Boot Record (Registro de Arranque Maestro). Nombre dado al primer sector de un disco rgido del cual se puede arrancar. El MBR contiene el cdigo usado para cargar el sistema operativo en memoria o un cargador de arranque (como lilo ), y la tabla de particiones de este disco rgido. menor Nmero que dene con precisin al dispositivo del cual estamos hablando. Ver tambin: mayor. 114

Apndice A. Glosario men desplegable Es un men que est enrollado con un botn en alguna de sus esquinas. Cuando Usted presiona sobre dicho botn se desenrolla , o despliega, el men completo. MIME Multipurpose Internet Mail Extensions (Extensiones de Correo de Internet de propsitos Mltiples). Una cadena de la forma tipo/sub-tipo que describe el contenido de un archivo adjuntado a un correo electrnico. Esto permite a los clientes que reconozcan MIME denir acciones en funcin del tipo de archivo. modo bloque, archivos de Archivos cuyo contenido se almacena en una memoria temporal. Todas las operaciones para tales archivos pasan por estas zonas de memoria, lo que permite la escritura asincrnica sobre el hardware, y para las lecturas, no volver a leer lo que ya est almacenado en memoria. Ver tambin: buffer, buffer cache, modo caracter, archivos de. modo caracter, archivos de Archivos cuyo contenido no se almacena en una memoria temporal (buffer). Toda la entrada/salida se realiza fsicamente en el momento. Estos archivos corresponden a los ujos de datos. modo de lectura-escritura Para un archivo signica que se puede escribir en el mismo. Se puede leer su contenido y tambin modicarlo. Ver tambin: modo de solo lectura. modo de solo lectura Para un archivo signica que no se puede escribir en el mismo. Se puede leer su contenido pero no se puede modicar. Ver tambin: modo de lectura-escritura. monousuario Se usa para describir al estado de un sistema operativo, o incluso a un sistema operativo en s mismo, que slo permite conectarse y usar el sistema a un nico usuario a la vez. montado Un dispositivo est montado cuando est conectado al sistema de archivos de GNU/Linux. Cuando Usted monta un dispositivo, puede examinar el contenido del mismo. Este trmino es en parte obsoleto debido a la caracterstica supermount, por lo que los usuarios no necesitan montar a mano los soportes removibles. Ver tambin: montaje, punto de. montaje, punto de Es el directorio donde se una particin u otro dispositivo se anexa al sistema de archivos de GNU/Linux. Por ejemplo, su CD-ROM est montado en el directorio /mnt/cdrom , desde donde Usted puede explorar el contenido de cualquier CD montado. MPEG Moving Pictures Experts Group (Grupo de Expertos de Imgenes en Movimiento). Un comit de la ISO que genera normas para la compresin de audio y vdeo. MPEG tambin es el nombre de los algoritmos para efectuar dicha compresin. Desafortunadamente, este formato es muy restrictivo, y como consecuencia todava no hay reproductores MPEG de cdigo abierto... MSS (Maximum Segment Size ) Tamao mximo de segmento es la mayor cantidad de datos que se pueden transmitir a la vez. Si quiere evitar la fragmentacin local, el MSS debera ser igual al encabezado MTU de IP. MTU (Maximum Transmission Unit) Es un parmetro que determina el tamao mayor de datagrama que se puede transmitir por una interfaz IP sin necesidad de descomponerlo en unidades ms pequeas. El MTU debera ser mayor que el datagrama de mayor tamao que Usted desee transmitir sin fragmentacin. Note que esto slo evita la fragmentacin local, en la ruta puede haber otro vnculo que tenga un MTU menor y el datagrama se fragmentar all. Los valores tpicos son 1500 bytes para una interfaz Ethernet, o 576 bytes para una interfaz SLIP.

115

Apndice A. Glosario multitarea Es cuando un sistema operativo puede correr ms de un programa a la vez. Hay dos tipos de multitarea: la multitarea por prioridad es cuando el sistema operativo es el responsable de distribuir el tiempo de CPU entre los procesos, mientras que multitarea cooperativa es cuando los procesos son los que devuelven el tiempo de CPU. La primera variante es, obviamente, la mejor opcin debido a que ningn programa puede monopolizar el tiempo de CPU bloqueando as a los otros procesos. GNU/Linux es un sistema operativo que usa multitarea por prioridad real. multiusuario Se usa para describir a un sistema operativo que permite que mltiples usuarios se conecten y usen al sistema exactamente a la vez, pudiendo cada uno hacer sus propias tareas independientemente de los dems usuarios. Es necesario que un sistema operativo multitarea proporcione soporte para el modo multiusuario. GNU/Linux es un sistema operativo multiusuario y tambin multitarea. NCP NetWare Core Protocol (Protocolo de Base de NetWare). Protocolo denido por Novell para acceder a los servicios de archivos e impresin de Novell NetWare. NFS Network FileSystem (Sistema de Archivos de Red). Un sistema de archivos de red creado por Sun Microsystems para poder compartir archivos en una red de forma transparente. NIC Network Interface Card (Tarjeta Interfaz de Red). Adaptador instalado en una computadora que provee una conexin fsica a la red, tal como una tarjeta Ethernet. NIS Network Information System (Sistema de Informacin de Red). Tambin conocido como Yellow Pages (Pginas amarillas), pero British Telecom tiene un copyright de ese nombre. NIS es un protocolo diseado por Sun Microsystems para poder compartir informacin comn a lo largo de un dominio NIS, que puede agrupar toda una red LAN, parte de una red LAN o varias LAN. Puede exportar bases de datos de contraseas, bases de datos de servicios, informacin de grupos y ms. nombrado Una palabra usada comnmente en computacin para un mtodo que identica objetos. Usted escuchar seguido acerca de "convenciones de nombrado" para los archivos, funciones, en un programa y as sucesivamente. newsgroups Foros de discusin y reas de noticias a las que se puede acceder usando un cliente de noticias o USENET para leer y escribir mensajes especcos al tema de dichos foros. Por ejemplo, el grupo de noticias alt.os.linux.mandrake es un grupo de noticias alternativo (alt) que trata con los sistemas operativos (os) GNU/Linux (linux), y especcamente con Mandrake Linux (mandrake). Los grupos de noticias se dividen de esta manera para facilitar la bsqueda de un tema en particular. nulo, caracter El caracter o byte nmero 0, se usa para marcar el nal de una cadena de caracteres o string . Su nombre tcnico es NULL . objetivo Es el objeto de la compilacin, es decir el archivo binario que generar el compilador. al vuelo Se dice que algo se hace al vuelo cuando se realiza junto con alguna otra cosa, sin que Usted lo note o lo haya pedido explcitamente. open source (cdigo abierto) Es el nombre que se le da al cdigo fuente de un programa libre que se pone a disposicin del pblico y de la comunidad en general para su desarrollo. La teora detrs de esta losofa es que el hecho de permitir que el cdigo fuente sea usado y modicado por un grupo de programadores ms amplio, a la larga producir un producto ms til para todos. Entre algunos programas populares de cdigo abierto se encuentran Apache, Sendmail y GNU/Linux.

116

Apndice A. Glosario paginador Programa que muestra un archivo de texto una pantalla a la vez, y que facilita el desplazamiento y la bsqueda de cadenas en dicho archivo. Le aconsejamos usar less como paginador. pantalla completa Este trmino se usa para referirse a las aplicaciones que ocupan todo el rea visible de su pantalla. PAP Password Authentication Protocol (Protocolo de Autenticacin de Contrasea): protocolo usado por los ISP para autenticar a sus clientes. En este esquema, el cliente (Usted) enva un par identicador/contrasea al servidor, que no est cifrado. Ver tambin: CHAP. parche (patch) Archivo que contiene una lista de correcciones a hacer sobre un cdigo fuente para agregar caractersticas nuevas, eliminar errores, o modicarlo de acuerdo a los deseos y necesidades de uno. La accin consistente en aplicar estas correcciones al archivado de cdigo fuente. Tambin conocido como "parche". PCI Peripheral Components Interconnect (Interconexin de Componentes Perifricos). Un bus creado por Intel que hoy da es el bus tpico de la arquitectura PC, aunque tambin lo usan otras arquitecturas. Es el sucesor del bus ISA, y ofrece numerosos servicios: identicacin del dispositivo, informacin de la conguracin, compartir IRQ, apropiacin del bus (bus mastering) y ms. PCMCIA Personal Computer Memory Card International Association (Asociacin Internacional de Tarjetas de Memoria de Computadoras Personales): ms y ms comnmente denominadas PC Card por razones de simplicidad, esta es la norma para tarjetas externas que se insertan en las porttiles: mdems, discos rgidos, tarjetas de memoria, tarjetas Ethernet y ms. A veces el acrnimo en ingls se expande, en broma a People Cannot Memorize Computer Industry Acronyms (La Gente No Puede Memorizar los Acrnimos de la Industria de Computadoras)... pixmap Es un acrnimo para pixel map (Mapa de pixeles). Es otra forma de referirse a una imagen de mapa de bits. plugin Programa adicionable que se usa para mostrar o reproducir algunos contenidos multimedios que se encuentran en un documento web. Por lo general, se puede transferir desde Internet fcilmente si su navegador todava no puede mostrar o reproducir esa clase de informacin. PNG Portable Network Graphics (Grcos de Red Portables). Formato de archivo de imagen creado principalmente para su uso en la web, ha sido diseado como un reemplazo de GIF libre de patentes y tambin tiene algunas caractersticas adicionales. PNP PlugNPlay (Enchufar Y Usar). Al principio era un agregado al bus ISA para poder agregar informacin de conguracin para los dispositivos. Se ha vuelto un trmino de uso ms amplio que agrupa a todos los dispositivos capaces de reportar sus parmetros de conguracin. Como tales, todos los dispositivos PCI son PlugNPlay. POP Post Ofce Protocol (Protocolo de Ocina de Correos). Es el protocolo comn utilizado para transferir el correo desde un ISP. por lotes Es un modo de procesamiento en el cual se envan trabajos al procesador, y luego el procesador los ejecuta uno tras otro hasta que ejecuta el ltimo y queda disponible para recibir otra lote de procesos. portar Portar un programa es traducir dicho programa de forma tal que se pueda usar en un sistema para el cual, originalmente, no se tena intencin de usar, o que se pueda usar en sistemas similares. Por ejemplo,

117

Apndice A. Glosario para poder correr un programa de Windows nativo bajo GNU/Linux (en modo nativo), primero se debe portar dicho programa a GNU/Linux. PPP Point to Point Protocol (Protocolo de Punto a Punto). Este es el protocolo que se usa para enviar datos a travs de las lneas serie. Es comn su uso para enviar paquetes IP a Internet, pero tambin se puede usar con otros protocolos tales como el protocolo IPX de Novell. precedencia Dicta el orden de evaluacin de los operandos en una expresin. Por ejemplo: Si Usted tiene 4 + 3 * 2 el resultado que obtiene es 14, ya que la suma tiene mayor precedencia que el producto. Si Usted quiere evaluar primero el producto, tiene que agregar parntesis para obtener algo as 4 + (3 * 2) , y entonces obtiene 10 como resultado debido a que los parntesis tienen mayor precedencia que la suma y el producto y por lo tanto se los evala primero. preprocesadores Son directivas de compilacin que instruyen al compilador para que reemplace dichas directivas por cdigo en el lenguaje de programacin usado en el archivo fuente. Son ejemplos de preprocesadores del lenguaje C: #include , #define , etc. primer plano En el contexto del shell, el proceso que est en primer plano es aquel que est corriendo actualmente. Usted tiene que esperar que tal proceso termine para poder volver a ingresar comandos. Ver tambin: job, segundo plano. proceso En un contexto Unix, un proceso es una instancia de un programa en ejecucin junto con su entorno. invitacin En un shell, es la cadena que aparece antes del cursor. Cuando lo vea, Usted puede ingresar sus comandos. En ingls, el prompt protocolo Los protocolos organizan la comunicacin entre mquinas diferentes a travs de una red, ya sea usando hardware o software o ambos. Estos denen el formato de los datos transferidos, si una mquina controla a otra, etc. Algunos protocolos bien conocidos incluyen a HTTP, FTP, TCP, y UDP. proxy Una mquina que se coloca entre su red local e Internet, cuyo rol es acelerar la transferencia de datos para los protocolos usados ms ampliamente (por ejemplo, HTTP y FTP). Mantiene un cache de los pedidos anteriores, lo que evita el costo de tener que volver a pedir un archivo cuando alguna mquina pida lo mismo. Son muy tiles para redes de ancho de banda reducido (entindase: conexiones por mdem). A veces, tambin es la nica mquina que puede acceder al exterior de la red. pgina man Es un documento que contiene la denicin y el uso de un comando. Este documento se consulta con el comando man . La primer cosa que uno debera (aprender a) leer cuando se entera de un comando que no conoce RAID Redundant Array of Independent Disks (Matriz Redundante de Discos Independientes). Proyecto iniciado por el departamento de ciencias de la computacin de la Universidad de Berkeley, en el cual el almacenamiento de datos se reparte en una matriz de discos. RAM Random Access Memory (Memoria de Acceso Aleatorio). Trmino usado para identicar a la memoria principal de una computadora. RDSI Red Digital de Servicios Integrados. Conjunto de normas de comunicaciones para permitir que un solo cable o una bra ptica transporte voz, servicios de red digital y vdeo. Ha sido diseado para reemplazar eventualmente a los sistemas de telfono actuales. Tcnicamente es una red de datos de conmutacin de circuitos.

118

Apndice A. Glosario recorrer Para un directorio en un sistema Unix, esto signica que el usuario tiene permitido atravesar este directorio, y posiblemente los directorios debajo de este. Para esto, es necesario que el usuario tenga derecho de ejecucin sobre este directorio. RFC Request For Comments (Pedido De Comentarios). Los RFC son los documentos ociales normativos de Internet. Describen todos los protocolos, su uso, sus requisitos, y as sucesivamente. Cuando Usted quiera aprender como funciona un protocolo, debe leer el RFC correspondiente. root Es el super-usuario de cualquier sistema Unix. Tpicamente root (conocido tambin como administrador) es la persona responsable de mantener y supervisar al sistema Unix. Esta persona tambin tiene acceso completo a cualquier cosa en el sistema. RPM Redhat Package Manager (Administrador de Paquetes de Red Hat). Un formato de empaquetado desarrollado por Red Hat para crear paquetes de software, que se usa en muchas distribuciones de GNU/Linux, incluida Mandrake Linux. ruta (path) Es una asignacin para los archivos y los directorios al sistema de archivos. Las diferentes capas de la ruta estn separadas por la "barra" o "/" . Hay dos tipos de rutas en los sistemas GNU/Linux. La ruta relativa es la posicin de un archivo o directorio en relacin al directorio corriente. La ruta absoluta es la posicin de un archivo o directorio en relacin al directorio raz. ruta Es el camino que toman los datagramas a travs de la red para llegar a su destino. Camino entre una mquina y otra en una red. script Los scripts del shell son secuencias de comandos a ejecutar como si hubiesen sido ingresadas en la consola una tras otra. Los scripts del shell son el equivalente Unix (aproximado) de los archivos por lotes (batch) de D.O.S.. SCSI Small Computers System Interface (Interfaz de Sistema para Computadoras Pequeas). Un bus de alto rendimiento diseado para permitir varios tipos de perifricos. A diferencia de IDE, un bus SCSI no est limitado por la velocidad a la cual los perifricos pueden aceptar comandos. Slo las mquinas de alto nivel integran un bus SCSI directamente en la placa madre. Las PC necesitan agregar una tarjeta. segundo plano En el contexto del shell, un proceso est corriendo en segundo plano si Usted puede ingresar comandos en la consola mientras el mismo est corriendo. Ver tambin: job, primer plano. seguridad, niveles de Caracterstica nica de Mandrake Linux que le permite congurar niveles de restricciones diferentes de acuerdo a cuan seguro quiera hacer su sistema. Hay 6 niveles predenidos desde 0 hasta 5, donde 5 es el nivel ms restrictivo. Usted tambin puede denir su nivel de seguridad propio. segmentacin, error de Un error de segmentacin ocurre cuando un programa intenta acceder a una porcin de memoria que no tiene asignada. Por lo general, esto causa que el programa se detenga de inmediato. servidor Programa o computadora que propone una caracterstica o presta un servicio y espera las conexiones de los clientes para ejecutar las rdenes de estos o darles la informacin que estos pidan. Ejemplos tpicos son los servidores FTP, HTTP, NFS, servidores de correo-e, etc. En el caso de sistemas de igual a igual (peer to peer ) tales como PPP o SLIP el servidor se toma como el extremo de la conexin que recibe la llamada y el otro extremo se toma como cliente. Es uno de los componentes de un sistema cliente/servidor .

119

Apndice A. Glosario shadow passwords Un conjunto de administracin de contraseas en los sistemas Unix en el cual el archivo que contiene las contraseas cifradas ya no es legible por todo el mundo, como lo es cuando se usa el sistema normal de contraseas. shell El shell es la interfaz bsica al ncleo del sistema operativo y es quien proporciona la lnea de comandos donde el usuario ingresa comandos para ejecutar programas y comandos del sistema. La mayora de los shells proporcionan un lenguaje de script que se puede utilizar para automatizar tareas o simplicar tareas complejas usadas con frecuencia. Estos scripts del shell son similares a los archivos batch del sistema operativo D.O.S., pero son mucho ms potentes. Algunos ejemplos de shells son bash, sh, y tcsh. sistema de archivos raz Este es el sistema de archivos que est en el nivel superior. En este sistema de archivos GNU/Linux monta la raz de su rbol de directorios. Este sistema de archivos debe residir en una particin propia, ya que es la base para todo el sistema. El mismo contiene al directorio raz. sistema operativo Es un proceso que corre permanentemente en segundo plano que permite la operacin bsica de la computadora. La tarea primaria para cualquier sistema operativo es la administracin de todos los recursos especcos de la mquina. En un sistema GNU/Linux, es el ncleo y los mdulos cargables los que llevan a cabo estas tareas. Algunos sistemas operativos bien conocidos incluyen a GNU/Linux, AmigaOS, MacOS, FreeBSD, OS/2, Unix, Windows NT, y Windows 9x;. sitio, dependiente del Signica que la informacin usada por programas como Imake y make para compilar algn archivo fuente depende del sitio, de la arquitectura de la computadora, las bibliotecas instaladas en la computadora, etctera. SMB Server Message Block (Bloque de Mensaje del Servidor). Protocolo usado por las mquinas Windows (9x o NT) para compartir archivos e impresoras en una red. Ver tambin: CIFS. SMTP Simple Mail Transfer Protocol (Protocolo Simple de Transferencia de Correo). Este es el protocolo ms comn para transferir correo-e. Los Agentes de Transmisin de Correo (MTAs) tales como SendMail o PostFix usan SMTP. A veces tambin se los denomina servidores SMTP. socket Tipo de archivo correspondiente a cualquier conexin de red. standard error Error estndar. Es el descriptor de archivo nmero 2, abierto por cada proceso, usado por convencin para imprimir mensajes de error. Predeterminadamente es la pantalla de la terminal. Ver tambin: standard input, standard output. standard input Entrada estndar. Es el descriptor de archivo nmero 0, abierto por cada proceso, usado por convencin como el descriptor desde el cual el proceso recibe los datos. Predeterminadamente, es el teclado. Ver tambin: standard error, standard output. standard output Salida estndar. Es el descriptor de archivo nmero 1, abierto por cada proceso, usado por convencin como el descriptor en el cual el proceso imprime su salida. Predeterminadamente, es la pantalla de la terminal. Ver tambin: standard error, standard input. streamer Es un dispositivo que toma streams (ujos) de caracteres como su entrada. Un streamer tpico es una unidad de cinta. SVGA Super Video Graphics Array (SuperMatriz Grca de Vdeo). Norma de modo de vdeo denida por VESA para la arquitectura PC. La resolucin es 800x600 puntos con 16 colores. 120

Apndice A. Glosario switch Los switch se usan para cambiar el comportamiento de los programas, y tambin se denominan opciones de la lnea de comandos o argumentos. Para determinar si un programa tiene opciones que se pueden usar, lea las pginas Man o intente pasar la opcin --help al programa (ejemplo: programa --help). TCP Transmission Control Protocol (Protocolo de Control de la Transmisin). Este es el protocolo conable ms comn que usa a IP para transferir paquetes de la red. TCP agrega las vericaciones necesarias encima de IP para asegurarse que los paquetes se entregan. telnet Crea una conexin a un host remoto y le permite conectarse a la mquina siempre y cuando Usted posea una cuenta. Telnet es el mtodo de conexin remota ms utilizado, sin embargo hay alternativas mejores y ms seguras como SSH . temas, soporte de Una aplicacin grca soporta temas si se puede cambiar su apariencia en tiempo real. Tambin muchos administradores de ventanas soportan temas. tubera Un tipo especial de archivo Unix. Un programa escribe datos en la tubera, y otro programa lee los datos del otro lado de la tubera. Las tuberas Unix son FIFO, por lo que los datos se leen en el mismo orden en el que fueron enviados. De uso amplio con el shell. Ver tambin: tubera nombrada. usuario, nombre de Es un nombre (o ms generalmente, una palabra) que identica a un usuario en un sistema. Cada nombre de usuario est asociado a un nico UID (identicador del usuario) Ver tambin: login. tubera nombrada Una tubera Unix que est vinculada, al contrario de las tuberas usadas en el shell. Ver tambin vnculo. Ver tambin: tubera. URL Uniform Resource Locator (Ubicador de Recursos Uniforme). Una cadena de caracteres con un formato especial usado para identicar unvocamente un recurso en Internet. Dicho recurso puede ser un archivo, un servidor, u otros. La sintaxis de una URL es protocolo://servidor.nombre[:puerto]/ruta/al/ recurso. Cuando slo se especica el nombre de una mquina y el protocolo es http:// , predeterminadamente se recupera el archivo index.html del servidor. variables son cadenas de caracteres utilizadas en archivos Makefile para reemplazarlas por su valor cada vez que aparecen. Por lo general se les da valor al comienzo del archivo Makefile. Las mismas se utilizan para simplicar el archivo Makefile y la administracin de rboles de archivos con cdigo fuente. Ms generalmente, en programacin las variables son palabras que se reeren a otras entidades (nmeros, cadenas de caracteres, tablas, etc.) que es probable que varen mientras se est ejecutando el programa. ventana En el contexto de las redes, la ventana es la mayor cantidad de datos que el extremo receptor puede aceptar en un punto dado en el tiempo. ventanas, administrador de Es el programa responsable del la apariencia y el comportamiento de un entorno grco que trata con los distintos elementos de una ventana como por ejemplo: las barras, los marcos, los botones, los mens, y algunos atajos de teclado. Sin ellos sera muy difcil o imposible tener escritorios virtuales, cambiar el tamao de las ventanas al vuelo, moverlas, etc. verboso Para los comandos, el modo verboso signica que el comando reporta en la salida estndar todas las acciones que lleva a cabo y los resultados de dichas acciones. A veces, los comandos tienen una forma de

121

Apndice A. Glosario denir el nivel de verbosidad, lo cual signica que se puede controlar la cantidad de informacin que reportar el comando. VESA Video Electronics Standards Association (Asociacin de Normas Electrnicas de Vdeo). Una asociacin normativa de la industria que apunta a la arquitectura de PC. Por ejemplo, es la autora de la norma SVGA. vnculo Referencia a un i-nodo en un directorio, por lo tanto le da un nombre (de archivo) al i-nodo. vnculos de software Ver vnculos simblicos. Ver tambin: vnculos simblicos. vnculos simblicos Archivos especiales, que slo contienen una cadena de caracteres, y donde cualquier acceso a ellos es equivalente a un acceso al archivo cuyo nombre es dicha cadena, el cual puede existir o no, y la ruta de la misma se puede dar de forma relativa o absoluta. WAN Wide Area Network (Red de rea Extensa). Esta red, si bien es similar a una red LAN, conecta a computadoras sobre una red que no est fsicamente conectada a los mismos cables y estn separadas por una distancia mayor.

122

Indice
.bashrc, 22 aplicacin ImageMagick, 27 terminal, 27 archivo atributo de, 68 atributo de, 23 borrado de un, 21 copiar, 23 creacin de, 21 encontrar, 43 modo bloque, 67 modo caracter, 67 modo bloque, 63 modo caracter, 63 moviendo un, 22 renombrando un, 22 socket, 64 tubera, 64 vnculo, 63 atributo de archivo, 23 caracteres englobamiento de, 25 especiales, 27 comando at, 45 bzip2, 47, 82 cat, 13 cd, 11 chgrp, 23 chmod, 24 chown, 23 congure, 83 cp, 23 crontab, 44 nd, 43 grep, 40 gzip, 47 init, 77 kill, killall, 50 less, 13, 26 ls, 13 make, 86 mkdir, 21 mount, 59 mv, 22 patch, 96 ps, 49 pwd, 11 rm, 21 rmdir, 22 sed, 26 tar, 46, 81 touch, 21 umount, 59 wc, 26 consola, 7

contrasea, 7 cuenta, 7 desarrollo, 2 directorio borrado de un, 21 copiar, 23 creacin de, 21 moviendo un, 22 renombrando un, 22 discos, 15 documentacin, 2 Mandrakelinux, 3 dueo, 23 cambiar, 23 editor de texto Emacs, 31 editores de texto vi, 34 empaquetado, 2 englobamiento caracter de, 25 entorno variable de, 12 espacio de intercambio, 15 espacio de intercambio tamao, 16 FHS, 53 framebuffer, 103 GID, 8 grub, 102 grupo, 7 cambiar, 23 IDE dispositivos, 17 inodo, 64 intercambio particin de, 16 internacionalizacin, 2 invitacin, 8, 11 lilo, 100 lnea de comandos completado de la, 27 lnea de comandos introduccin a la, 21 lnea de comandos, 39 Makele, 80, 87 Mandrakeclub, 1 Mandrakeexpert, 1 Mandrakelinux listas de correo, 1 Mandrakesecure, 1 Mandrakestore, 1 marcas horarias atime, 21 ctime, 21 mtime, 21 memoria RAM, 16 mdulos, 74 orden de comparacin, 25 particiones, 57

123

extendidas, 17 lgicas, 18 primarias, 17 particin, 15 home, 17 raz, 16 usr, 16 permiso, 24 Peter Pingus, 5 PID, 10 primario esclavo, 17 maestro, 17 proceso, 10, 28, 71 entorno, 71 procesos, 49 programacin, 2 raz directorio, 53, 72 redireccin, 26 Reina Pingusa, 5 runlevel, 77 SCSI discos, 17 sector, 15 shell, 11, 21 patrones de englobamiento, 25 SoundBlaster, 17 standard error, 25 input, 25 output, 25 tubera, 26 annima, 65 nombrada, 65 udev, 19 UID, 8 UNIX, 7 usuario, 7 root, 8 usuarios genricos, 5 utilitarios de manejo de archivos, 21 valores discretos, 25 virus, 10 vnculo a archivo, 64 normal, 68 simblico, 67

124