Issuu on Google+

Slackware Linux Essentials La guía oficial del Slackware Linux David Cantrell Logan Johnson Chris Lumens Este documento esta autorizado según las condiciones del GNU. Una copia de esta licencia puede encontrarse en el Apéndice A. Linux es una marca registrada de Linus Torvalds. Slackware es una marca registrada de BSDi y Patrick Volkerding.

slackware@venezuela.com http://slackware.venezuela.com


INDICE I. Introducción 1. Introducción al Slackware Linux Que es Linux? Que es Slackware? Open Source y Free Software

2. Ayuda Ayuda del Sistema Ayuda en Línea

II. Instalación 3. Instalación Consiguiendo Slackware Requisitos del Sistema Resumen

III. Configuración 4. Configuración del Sistema Conociendo el Sistema Seleccionando el Kernel Resumen

5. Configuración de Red Hardware de Red Utilidades de Red Los Archivo de /etc rc.inet1 rc.inet2 NFS (Sistema de Archivos de Red) tcp_wrappers Resumen

6. El sistema X window xf86config XF86Setup Archivos de configuración de sesión Servidores y gestores de Ventana Seleccionando un escritorio Exportando Pantallas Resumen

7. Booteando LILO LOADLIN Booteo Dual Resumen

IV. Usando Slackware Linux 8. El Shell Usuarios La linea de comandos The Bourne Again Shell (bash) Terminales Virtulaes Resumen

9. Estructura del filesystem Propietarios Permisos Enlaces(Links) Montando Dispositivos Montaje NFS 2


Resumen

10. Manejando Archivos y Directorios ls cd more less cat touch echo mkdir ln cp mv rm rmdir Resumen

11. Control de Procesos Backgrounding Foregrounding ps kill top Resumen

12. Administracion Esencial del Sistema Usuarios y Grupos Apagando Correctamente Resumen

13. Comandos B谩sicos de Red ping finger telnet Clientes FTP email lynx wget traceroute Hablando con otras personas Resumen

14. Guardando Archivos gzip bzip2 tar zip Resumen

15. vi Iniciando vi Modos Abriendo Archivos Guardando Archivos Cerrando vi Configuraci贸n de vi Teclas del vi Resumen

3


16. Manejo de paquetes en Slackware Vision general del formato de los paquetes Utilidades de paquetes Creando paquestes Creando tags y tagfiles (para la instalación) Resumen

17. ZipSlack y BigSlack ¿Que es ZipSlack/BigSlack? Consiguiendo ZipSlack/BigSlack Instalacion Arrancando ZipSlack/BigSlack Agregando, eliminado y acuatlizando Software Problemas comunes Obteniendo Ayuda Resumen

Glosario A. Licencia Publica GNU Preambulo Términos y condiciones para la copia, distribución y modificación Cómo aplicar estos términos a sus nuevos programas

4


I. Introducción Capítulo 1. Introducción al Slackware Linux Contenido • ¿Que es Linux? • ¿Que es Slackware? • Código abierto y el Software Libre

Que es Linux? Linux fue creado por Linus Torvalds en 1991 como un proyecto personal. Él estaba buscando una manera de ejecutar un sistema operativo basado en Unix sin gastar mucho dinero. Además, de aprender las entradas-y-salidas del procesador 386. El lanzo el sistema de forma gratuita para que cualquiera pudiera hackearlo y hacerle mejoras bajo la licencia GNU General Public License (Licencia Publica General).(vea la sección llamada Open Source y Software Libre) Hoy, Linux ha crecido en el mercado de los sistemas operativos. Se ha puesto a tono para correr en una variedad de arquitecturas incluso el Alfa de Compaq, Sun SPARC y UltraSPARC, y Motorola PowerPC (a través de Apple Macintosh e IBM las computadoras de RS/6000, por ejemplo). Linux está desarrollándose ahora por los centenares (si no miles) de programadores en el mundo. Ejecuta programas como Sendmail, Apache, y LAZO que son algunos de los software de servidor más populares en la Internet. El término "Linux" sólo se refiere al Kernel el centro del sistema operativo. Esta parte es responsable de controlar su procesador, memoria, unidades de disco duro, y periféricos. Eso es realmente todo lo que Linux hace. Controla las funciones de su computadora y se asegura que todos los programas se comporten. Todos esos programas que hacen útil a Linux son desarrollados por los grupos de programadores independientes. El Kernel y sus programas son desarrollados conjuntamente por varias compañías e individuos para hacer un sistema operativo. A esto lo llamamos una distribución de Linux.

Que es Slackware? Slackware fue la primera distribución de Linux en lograr un uso extendido. Fue creada por Patrick Volkerding a finales de 1992. El comenzó a utilizar Linux 5


cuando necesitó un intérprete de LISP barato para un proyecto. En ese momento, había muy pocas distribuciones, Patrick uso la distribución de Soft Landing Systems (SLS Linux). Sin embargo, SLS tenía algunos problemas, por lo que Patrick comenzo a arreglar los problemas que el encontró. En el futuro, él decidió fusionar todos esos arreglos en su propia distribución para él y sus amigos. Esta distribución privada ganó popularidad rápidamente, y Patrick la hizo disponible al público bajo el nombre de Slackware. En el camino, Patrick agregó nuevas cosas a la distribución como un programa de instalación de uso fácil basado en un sistema de menus y el concepto de manejo de paquetes. Esto le permite a los usuarios fácilmente agregar, actualizar o quitar paquetes de software de su sistema.

Open Source and Free Software Dentro de la comunidad de Linux, hay dos movimientos ideológicos de trabajo. El movimiento del Free Software (Software Libre) que está trabajando hacia la meta de hacer todo el software libre de restricciones de propiedad intelectuales , cree en la mejoras técnicas y trabaja en favor de la comunidad. El movimiento Open Source (Código Abierto) está trabajando hacia la mayoría de las mismas metas, pero toma un acercamiento más pragmático, prefiriendo basar sus argumentos en los méritos económicos y técnicos de hacer el código fuente disponible libremente, en lugar de los principios morales y éticos que manejan el Movimiento del Software Libre. El movimiento del Software Libre esta encabezado por la Free Software Fundation que esta organizando la recaudación de fondos para el proyecto GNU. El software libre es más que una ideología. En esencia, el software libre es un esfuerzo por garantizar ciertos derechos para usuarios y diseñadores. Estas libertades incluyen la libertad para ejecutar el programa por cualquier razón, la libertad para estudiar y modificar el código fuente, la libertad para redistribuir la fuente, y la libertad para compartir cualquier modificación. Para garantizar estas libertades, se creó la GNU General Públic License (GPL). La GPL, proporciona a cualquiera que distribuya un programa compilado autorizado bajo la GPL a proporcionar el código fuente, y ser libre de hacer las modificaciones al programa con tal de que esas modificaciones estén disponibles en el código fuente. Esto garantiza que una vez el programa “se abre a la comunidad, no puede cerrarse" excepto por el consentimiento de cada autor de cada pedazo de código (incluso las modificaciones) dentro de él. La mayoría de los programas de Linux son distribuidos bajo la GPL. Es importante señalar que la GPL no dice nada sobre el precio. Tan contradictorio como puede parecer, usted puede cobrar por el software libre. La" parte libre" está en que usted posee el código fuente, no en el precio que usted paga por el software. (Sin embargo, una vez que alguien lo ha vendido, o incluso lo ha dado, un programa compilado distribuido bajo la GPL les obligan a que proporcionen su código fuente también.) Al frente del joven movimiento del Open Source, se encuentra la OSI (Open Source Iniciative) cuyo propósito es buscar apoyo para la distribución de software de código abierto. Es decir, software que tiene el código fuente disponible así como el programa listo para ejecutarse. Ellos no ofrecen una 6


licencia específica, pero en cambio ellos apoyan los varios tipos de licencia de fuente abierta disponibles. La idea detrás de la OSI es tener mas compañías usando código abierto permitiéndoles escribir sus propias licencias certificadas por la Open Source Initiative. Muchas compañías quieren liberar el código fuente, pero no quiere usar la GPL. Debido a que ellos no pueden cambiar la GPL radicalmente, ellos ofrecen la oportunidad de proporcionar su propia licencias certificadas por esta organización. Aunque la Free Software Foundation y la Open Source Initiative trabajan para ayudarnos no son la misma cosa. La Free Software Fundation usa una licencia específica y proporciona el software bajo esa licencia. La Open Source Initiative busca un soporte para todas las licencias de código abierto, incluyendo la licencia de la Free Software Foundation. La forma en que cada uno defiende hacer el código fuente disponible divide a los dos movimientos, pero el hecho que dos grupos ideológicamente diversos estén trabajando hacia la misma meta presta creencia a los esfuerzos de cada uno.

7


Capitulo 2. Ayuda Contenido • Ayuda del Sistema • Ayuda en línea

Hay ocasiones en la que usted puede necesitar ayuda especifica sobre algún comando, configurando un programa, o instalando una pieza de hardware. Por suerte hay una variedad de maneras de conseguir la ayuda. Si usted instalara los paquetes de las F software series, usted ya tiene una gran cantidad de ayuda instalada. Los Programas también vienen con la ayuda sobre sus opciones, la configuración y uso. Finalmente, usted puede verificar el web site oficial de Slackware para la ayuda.

Ayuda del Sistema man man (abreviatura de "manual") es una forma tradicional de documentación en línea en Unix y sistemas operativos de Linux. Los archivos especialmente estructurados, las "man pages”, están escritas para la mayoría de las órdenes y son distribuidos con el software. Ejecutando man comando mostrara la ayuda sobre el comando o programa especificado. Como hay tantos de ellos, se agrupan las páginas del man en secciones enumeradas. Este sistema es tan largo que usted verá a menudo órdenes, programas, e incluso funciones de biblioteca de programación referidas con su número de sección en man. Por ejemplo, usted podría ver el man(1). Esto le indica que usted esta viendo las paginas del man de la sección uno (comandos de usuario); usted puede especificar que quiere ver en la sección 1 la pagina del manual referente al comando “man” ejecutando el comando man 1 man. Especificar la sección del manual que usted desea ver puede ser muy útil en el caso de que existan varios comandos o programas con el mismo nombre. Tabla 2-1. Secciones de las paginas del Manual Sección

Contenido

Sección 1

Comandos de usuario (introducción solamente)

Sección 2

Funciones del sistema

8


Sección 3

Funciones de la librería de C

Sección 4

dispositivos (Ej. Discos Duros)

Sección 5

Formatos de Archivos y Protocolos (Ej. wtmp, /etc/passwd, nfs)

Sección 6

Juegos (introducción solamente)

Sección 7

Convenciones , paquetes macro, etc. (Ej.: nroff, ascii)

Sección 8

Administración de Sistema (introducción solamente)

Además del man(1), estan los comandos whatis(1) y apropos(1) cuyo propósito es hacerle más fácil encontrar la información en el sistema man. El whatis da una descripción muy breve de comandos del sistema, un poco en el estilo de una referencia de bolsillo. apropos se usa para buscar la página del man que contiene una palabra clave dada. Vea esas paginas del manual para mas detalles. ;)

El Directorio /usr/doc Los programas que no son diseñados por nosotros vienen con su propia documentación. Archivos README, instrucciones de uso, licencias... cualquier otro tipo de documentación que se incluya con el programa se instala en el directorio /usr/doc Si las páginas del man no le proporcionan suficiente información usr/doc deben ser su próxima parada.

HOWTOs y mini-HOWTOs Es el verdadero espíritu de comunidad el que crea la colección de HOWTO/mini-HOWTO. Estos archivos son exactamente lo que parecen documentos que describen cómo hacer las cosas. Si usted instala el paquete de HOWTO , se instalará los HOWTOs en el directorio /usr/doc/Linux-HOWTOs y los mini-HOWTOs en /usr/doc/Linux-mini-HOWTOs. También incluido en el mismo paquete se encuentra la colección de FAQs (Listas de Preguntas Frecuentes--con las respuestas) qué se instala en el mismo lugar. Estos archivos merecen la pena cuando usted no esté seguro de cómo proceder con algo. Un rango asombroso de temas se cubre a veces con detalle sorprendente.

9


Ayuda en Línea Además de la documentación proporcionada e instalable con el Slackware Linux, hay varios recursos en línea disponible.

Web site y Foro www.slackware.com El web site oficial del Slackware Linux está lleno de documentación sobre Slackware. En el se encuentran las páginas de ayuda introductorias, una guía de la instalación, listas de FAQ’s, y toda clases de material bueno para los nuevos (y a menudo experimentados) usuarios. También disponible en el web site el Foro de Slackware, una sección dónde los usuarios pueden discutir sus experiencias con el Slackware y nos ayudan con las preguntas y problemas. Se demuestra que es un recurso muy popular y útil, y probablemente debe ser su primera parada para el apoyo. (Debido al gran público que leerá su mensaje, usted puede tener a veces una buena oportunidad de conseguir una solución rápida). Por favor busque en el foro su pregunta, para ver si ya se ha preguntado y se ha contestado, antes de anunciar.

Apoyo por correo electrónico Cualquiera que compra el CD oficial obtiene el apoyo de la instalación vía correo electrónico. Eso dije, nosotros somos de la vieja escuela. Nosotros hacemos nuestro mejor esfuerzo para ayudar a cualquiera que nos manda electrónicamente las preguntas. Por favor verifique su documentación y el web site (sobre todo el FAQ’s y el Foro); usted puede conseguir una respuesta más rápida así, y es menos correo electrónico el que nosotros tenemos que contestar, obviamente más pronto podremos ayudar a todos. La dirección del correo electrónico para el soporte técnico es: < support@slackware.com >. Se listan otras direcciones de correo electrónico e información de contacto en el web site.

10


II. Instalación Capitulo 3. Instalación Contenido • Consiguiendo Slackware • Requisitos del Sistema • Resumen Antes de que usted pueda usar Slackware Linux, usted tendrá que obtenerlo e instalarlo. Conseguir Slackware es tan fácil como comprándolo o bajándolo gratis a través de la Internet. Instalarlo también es fácil siempre que usted tenga un poco de conocimiento básico sobre su computadora y este deseoso de aprender unas otras cosas. El programa de instalación es un proceso paso a paso. Debido a esto, usted puede ponerse rápidamente en marcha.

Consiguiendo Slackware El CD official y los paquetes El CD oficial del Slackware Linux está disponible de Slackware Inc. comprando el disco oficial, usted obtiene el CD de instalación, el apoyo de la instalación vía el correo electrónico, un folleto de instalación de 30-páginas, y más. Los paquetes de Slackware, incluyen el CD de instalación más el manual oficial del Slackware Linux. Quizás más pretenciosamente, comprar el paquete sea una manera excelente de apoyar el Proyecto Slackware Linux directamente (y nos ayuda a comprar los nachos).

Tabla 3-1. información de contacto de Slackware, Inc. Método

Información

teléfono

1-800-786-9907

website

http://www.slackware.com

email

<orders@slackware.com>

snail mail

4041 Pike Lane, Suite F Concord, CA 94520-1207

Vía Internet Slackware Linux también está disponible gratis a través de la Internet. Usted puede mandar electrónicamente su pregunta a nuestro servicio de apoyo, pero se dará prioridad superior a aquellos que han comprado el paquete de CD oficial. El web site oficial donde se localiza el Slackware es: http://www.slackware.com / La dirección de FTP primaria del Slackware Linux es:ftp://ftp.slackware.com/pub/slackware/ 11


Requisitos del Sistema Una instalación sencilla de Slackware requiere, mínimo, lo siguiente,: Tabla 3-2. Requisitos del Sistema Hardware

Requiere

Procesador

386

RAM

16 MB

Espacio en disco 500MB Floppy Drive

1.44 MB

Si usted tiene el CD booteable, probablemente usted no necesitará una Floppy Drive. Claro, está que si usted planea instalar el CD usted necesitará una unidad de CD-ROM. Una tarjeta de red se requiere para una instalación tipo NFS. Vea la sección llamada NFS para más información. El requisito de espacio en disco es algo variable. Los 500MB recomendados son para una instalación normal, pero si usted hace un instalación completa, usted necesitará alrededor de un gigabyte de espacio en el disco duro disponible. La mayoría de los usuarios no hace una instalación completa. De hecho, Slackware corre en espacios tan pequeños como 100MB de espacio en disco. Slackware puede ser instalado en equipos con menos RAM pero para esto ara falta un poco de sufrimiento. Si usted esta listo para un poco de trabajo, eche una mirada al archivo de LOWMEM.TXT en el árbol de la distribución para algunas instrucciones útiles.

Las Series del Software Por razones de simplicidad, Slackware ha sido históricamente dividido en series de software. Una llamada "disk sets" por que fue diseñada para la instalación mediante Floppy, las series de software se usan actualmente para categorizar los paquetes incluidos en la instalación. Hoy, la instalación mediante Floppy todavía es posible para la serie A y la mayoría de las series de N (vea debajo). El siguiente cuadro es una descripción breve de cada serie de software. Tabla 3-3. Series de Software Series

Contenido

A

El sistema base. Contiene el software para ponerse en marcha publicar texto y el programa de comunicación básico.

AP

Varias aplicaciones que no requieren del sistema X window

D

Herramientas para el desarrollo de programas. Compiladores, debuggers, interpretes, y todas las paginas del man se encuentran 12


allí.. DES

Incluye la funcion crypt del GNU libc.

E

GNU emacs.

F

FAQs, HOWTOs, y otras documentaciones misceláneas.

GTK

El entorno de escritorio GNOME, GTK widget library, y el GIMP.

K

El código fuente del Kernel de Linux

KDE

El entorno de escritorio de K. Un ambiente de X que comparte mucho rasgos con el MacOS y Windows. La biblioteca de Qt que KDE requiere, también está en esta serie.

N

Programas de Red. Daemons, mail, telnet, grupos de noticias, y así sucesivamente.

T

teTeX sistema de formato de documentos

TCL

Lenguaje de Herramientas de Comando. Tk, TclX, y TkDesk.

X

X Window System basico.

XAP

Aplicaciones de X que no son parte de un ambiente de escritorio (por ejemplo, Ghostscript y Netscape).

XD

X11 desarrollo de programas. Librerías, Server link kit, y soporte para PEX

XV

XView librerías, el OpenLook Virtual y No-Virtual Window Manager, y muchas otras aplicaciones XView

Y

Juegos

Métodos de Instalación Floppy Mientras alguna una vez fue posible instalar todo Slackware Linux desde los disquetes flexibles, el tamaño creciente de paquetes de software (de hecho, de algunos programas individuales) ha forzado el abandono de este tipo de instalación para todas las series excepto dos. La serie A todavía es totalmente instalable desde los disquetes, y la mayoría de la serie N también. Esto le dará un sistema muy básico que puede usarse para instalar el resto de la distribución vía red. Por favor note que todavía se requieren los disquetes para la instalación por CD-ROM si no tiene el CD booteable, así como para la instalación NFS.

CD-ROM Si usted tiene el CD booteable, disponible en el paquete oficial publicado por Slackware, Inc. (vea la sección llamada Consiguiendo Slackware), la instalación basada en CD será más simple para usted. Si no usted necesitara iniciar desde los disquetes. Además, si usted tiene un hardware especial que cause conflictos con el kernel usado en el CD bootable, usted necesitara usar disquetes especiales.

13


Vea la Sección llamada Disco de Inicio en la seccion llamada Disco Suplemental para información de cómo escoger y crear los discos para iniciar, si es necesario.

NFS NFS Net File System ( Sistema de Archivo de Red) es una manera de hacer el sistema de archivos disponible a las máquinas remotas. La instalación NFS le permite instalar Slackware desde otra computadora conectada en su red. La máquina desde la que usted está instalando necesita ser configurado para exportar la distribución de Slackware a la máquina a que usted está instalando. Esto, claro, involucra un poco de conocimiento de NFS que se cubre en la sección llamada NFS (Sistema de Archivo de Red) en Capítulo 5. Es posible realizar una instalación NFS a través de métodos como PLIP (mediante el puerto paralelo), SLIP, y PPP (aunque no mediante una conexión de módem). Sin embargo, nosotros recomendamos el uso de una tarjeta de red si esta disponible. Después de todo, instalar el sistema operativo a través de el Puerto de impresora va a ser un proceso muy, muy lento.

Disco de Inicio(Boot Disk) El disco de inicio es el que se utiliza para arrancar la maquina y empezar la instalación. Contiene una imagen del kernel comprimida que se usa para controlar el hardware durante la instalación. Por consiguiente, es muy importante (a menos que usted está iniciando desde el CD, como se explica en la sección llamada CD-ROM). Los discos de inicio están localizados en el directorio bootdsks.144/ en el árbol de la distribución. Hay más discos de inicio de Slackware que usted puede utilizar (es decir aproximadamente 60). Una lista completa de discos de inicio, con una descripción de cada uno, está disponible en el arbol de archivos de la distribución de Slackware en el archivo bootdsks.144/WHICH.ONE. Sin embargo, la mayoría de las personas puede usar el bare.i (para los dispositivos de IDE) o scsi.s (para los dispositivos de SCSI) como imagen del disco de inicio. Vea la sección llamada la Creación de los Discos para instrucciones de como hacer un disco de imagen. Después de iniciar, se le pedirá insertar el disco raíz. Recomendamos que inserte el disco raíz y continúe con la instalación.

Disco Raiz(Root Disk) El disco raíz contiene el programa de instalación y un el sistema de archivos que se usa durante la instalación. Es indispensable. Las imagines del disco raíz se encuentran el directorio rootdisk en el árbol de la distribución. Hay afortunadamente, menos imágenes de disco raíz que de discos de inicio. Hay sólo tres de hecho. • • •

color.gz Es el que la mayoría de la personas utiliza. Esta en colores. text.gz Es como el color.gz, pero sin color. umsdos.gz se usa por instalar en una partición tipo FAT (Windows) se recomienda sólo para los propósitos experimentales. Para aquellos

14


interesados probar Slackware en una partición de Windows, nosotros recomendamos usar ZipSlack o BigSlack.

Disco Suplemental Un disco suplemental se necesita si usted está realizando una instalación NFS o instalando en un sistema con dispositivos PCMCIA. Los Discos Suplementales se encuentran en el directorio rootdsks, bajo el nombre de network.dsk y pcmcia.dsk. El disco raíz lo instruirá en el uso de discos suplementales cuando este cargado.

Creando los discos Una vez seleccionada la imagen de disco de inicio que utilizara ,usted debe colocarla en el disquete. El proceso es ligeramente diferente dependiendo del sistema operativo que este usando para hacer los discos. Si esta bajo Linux (o cualquiera basado en UNIX) usted necesitará usar el comando dd(1). Asumiendo a hejaz.dsk Como imagen de inicio y su unidad de disquete como /dev/fd0 el comando para hacer el disco hejaz.dsk es: # dd if=hejaz.dsk of=/dev/fd0

Si usted está ejecutando un sistema operativo Microsoft, usted necesitará usar el RAWRITE.EXE programa que es incluido en el árbol de la distribución en los mismos directorios de las imágenes de disquetes. Asumiendo que hejaz.dsk de nuevo es su archivo de imagen de disco y su unidad de disquete es A:, abra una ventana de DOS y teclee lo siguiente: c:\ rawrite a: hejaz.dsk

Creando las Particiones Después de iniciar desde el dispositivo que halla elegido , usted necesitará particionar su disco duro. La particiones del disco es donde se crearan los sistemas de archivos de Linux y es donde Slackware se instalará. Como mínimo nosotros recomendamos crear dos particiones; uno para la raíz de su filesystem(/) y una para swap. Después de cargar el Disco Raíz(Root Disk), se le pedirá el inicio de sesión. Entre como root (no tiene contraseña). En el prompt del shell, ejecute cfdisk(8) o fdisk(8). El programa cfdisk incluye una interfase mas amigable que fdisk, pero no incluye ciertas funciones. Nosotros explicaremos brevemente el programa fdisk a continuación. Empiece ejecutando fdisk en su disco duro. En Linux, los discos duros no tienen letras para designar las unidades, pero se representan por un archivo. El primer disco duro IDE (primary master) es /dev/hda, el esclavo 15


primario(primary slave) es /dev/hdb, y así sucesivamente. Los discos SCSI siguen el mismo tipo de sistema, pero está con la forma de /dev/sdX. Usted necesitará ejecutar fdisk y asignarle su disco duro: # fdisk /dev/hda

Como todos los buenos programas de Unix, el fdisk le mostrara un prompt (estaba pensando en un menú, verdad?). La primera cosa que usted debe hacer es examinar sus particiones actuales. Hacemos esto escribiendo p en el prompt de fdisk: Command (m for help): p

Esto desplegará toda la información sobre sus particiones actuales. La mayoría de las personas escoge una unidad libre para instalar y después quitar cualquier partición existente para crear las particiones de Linux. ES MUY IMPORTANTE QUE USTED RESPALDE CUALQUIER INFORMACIÓN QUE DESEE CONSERVAR ANTES DE DESTRUIR CUALQUIERA DE LAS PARTCIONES DONDE SE ENCUENTRA.

No hay manera de recuperar después de borrar una partición, así que haga un respaldo de todo antes de empezar a jugar con ellas. Mirando la información de la partición usted debe ver el numero de particiones, el tamaño de la partición, y su tipo. Hay mas información, pero no se preocupe por eso ahora. Nosotros vamos a anular todas las particiones en este paso para crear las de Linux. Ejecutamos el comando d para eliminarlas: Command (m for help): d Partition number (1-4): 1

Este proceso debe continuarse para cada una de las particiones. Después de anular todas las particiones nosotros estamos listos crear las de Linux. Nosotros decidimos crear una partición para nuestro directorio raíz y una para swap. Nuestro consejo es hacer dos particiones para empezar, una para la raiz del filesystem y una para el espacio swap. Con el tiempo usted encontrara un esquema de partición que satisfaga su sistema. Ahora nosotros creamos las particiones con el comando n: Command (m for help):n Command action e extended p primary partition (1-4) p Partition number (1-4):1 First cylinder (0-1060, default 0):0 Last cylinder or +size or +sizeM or +sizeK (0-1060, default 1060):+64M

Usted necesita asegurarse de crear las particiones primarias. La primera partición va a ser nuestra partición swap. Nosotros decimos al fdisk hacer la partición número 1 una partición primaria. Nosotros la comenzamos en el cilindro 0 y como cilindro final escribimos +64M. Esto nos dará una partición de 16


64 Mb para el swap. (El tamaño de la partición swap que usted realmente necesita depende de la cantidad de RAM que usted tiene. En la mayoría de los casos debe ser el doble de la cantidad de RAM que usted posee.) Entonces nosotros definimos la partición primaria 2 arrancando en el primer cilindro disponible y tomando todo el espacio disponible en la unidad. Command (m for help):n Command action e extended p primary partition (1-4) p Partition number (1-4):2 First cylinder (124-1060, default 124):124 Last cylinder or +size or +sizeM or +sizeK (124-1060, default 1060):1060

Ya casi esta listo. Necesitamos cambiar el tipo de la primera partición a 82 (swap de Linux). Teclee t para cambiar el tipo, seleccione la primera partición, y teclee 82. Antes de escribir sus cambios al disco, usted debe mirar la nueva tabla de partición una última vez. Use p en el fdisk para desplegar la tabla de partición. Si todo esta bien, tecleamos w para escribir sus cambios al disco y salir del fdisk.

El Programa de Instalación Una vez creadas sus particiones, usted está listo para instalar Slackware. El próximo paso en el proceso de instalación será ejecutar el programa de instalación: setup(8). Para hacer esto, simplemente escriba setup en el prompt del shell. setup es un sistema manejado por menús que sirve para instalar los paquetes de Slackware y configurar su sistema.

El proceso instalación es así: Usted va paso a paso a través de cada opción en el programa de instalación, en el orden en que ellos se listan. (Por su puesto usted puede hacer las cosas en el orden que usted escoja, pero tendrá pocas posibilidades para que las cosas le salgan bien.) Las opciones del menú se seleccionan usando las teclas de navegación arriba y abajo, " Okay" y" Cancel" ser escogidos usando la flechas de izquierda y derecha. 17


Opcionalmente, cada opción tiene una tecla correspondiente a la letra que se resalta en el nombre de la opción. Las opciones que son flaggables (aquéllas indicadas con una [X]) se marcan usando la barra espaciadora. Por supuesto, todo eso se describe en la sección "help" del setup. HELP Si éste es su primera vez instalando Slackware, usted podría echar una mirada a la pantalla de ayuda. Encontrara la descripción de cada parte del setup (mas o menos como la que estamos escribiendo ahora menos profunda.) e instrucciones para recorrer el resto de la instalación.

Keymap (Teclado) Si usted posee un teclado diferente al de Estados Unidos, usted debe entrar a esta sección Ofrece varios diseños alternativos para el uso de su teclado.

ADDSWAP Si usted creo una partición swap ,esta sección le permitirá habilitarlo. El las detectara automáticamente y le mostrara las particones swap de su disco duro, permitiéndole seleccionar una para estructurarla y habilitara. 18


TARGET La sección Target es donde sus otras particiones (no-swap) son formateadas y trazar los puntos de montaje del filesystem. Una lista de las particiones en su disco duro se desplegará. Para cada partición, usted tendra la opción de formatear (y en ese caso, verificar los bloques malos) y una selección de tamaños del inode. Para el uso normal, el tamaño del inode predefinido está bien. La primera opción en la sección Target es la selección de una partición para instalar la raíz del filesystem(/). Después de eso, usted podrá trazar otras particiones al filesystems. (Por ejemplo, usted puede querer una tercera partición, digamos el /dev/hda3, para ser el HOME de su sistema de archivos. Esto es simplemente un ejemplo; cree las particiones como le parezca mejor.) SOURCE La sección Source es donde usted selecciona los medios con los que usted está instalando Slackware. Hay cuatro fuentes actualmente para escoger Disquetes, CD-ROM, NFS, o un directorio PRE-montado.

La instalación por disquetes empieza solicitando muchos discos. Esta opción requiere de mucho tiempo y paciencia, pero es posible. Tenga presente que usted necesita crear los discos antes de empieza el programa de instalación. La selección de CD-ROM habilita la instalación mediante CD. Ofrece la opción de buscar su tipo de unidad de CD o mostrar una lista para que usted escoja el tipo de unidad de CD que usted posee. Asegúrese que usted tiene el CD de Slackware en su CDROM antes de permitirle examinar. Después que el programa encuentre su unidad del CD-ROM le preguntará si usted quiere realizar una instalación tipo "slakware" o tipo "slaktest." El valor predeterminado es slakware que es una instalación normal. La opción del slaktest instala un mínimo de software al disco duro y guarda la mayoría de él en el CD. Usted necesitara el CD ”live” incluido en el set de instalación para poder utilizar esta opción. La selección de NFS le pedirá la información de red de su equipo y la información de red del servidor NFS. El servidor NFS debe prepararse por adelantado. También note que usted no puede usar hostnames, usted debe 19


usar las direcciones IP para su máquina y el servidor de NFS (no hay ningún resolvedor de nombres en el disco de instalación). El directorio pre-mounted ofrece una mayor flexibilidad. Usted puede usar este método para instalar desde discos Jaz, NFS a través de PLIP, y sistemas de archivos FAT. Monte el filesystem en antes del setup, entonces especifique esa dirección aquí.

20


SELECT La opci贸n SELECT le permite seleccionar las series del software que usted desea instalar. Estas series se describen en la secci贸n llamada Series de Software. Por favor note que usted debe instalar serie A para tener un sistema activo. Todas las otras series son optativas.

INSTALL Asumiendo que usted ha pasado por " TARGET"," SOURCE", y" SELECT", la opcion INSTALL le permitir谩 seleccionar los paquetes de sus series desoftware escogidas. Si no, le pedira regresar y completar las otras secciones del programa de instalaci贸n. Esta opcion le permite seleccionar seis tipos diferentes de instalacion: full, newbie, menu, expert, custom, y tag path.

21


La opción full instalará cada paquete de todas las series desoftware que usted escogió en la "sección select.". Éste es el método de la instalación más fácil, ya que usted no necesita tomar cualquier decisión en los paquetes a instalar. Claro, esta opción también aumenta la cantidad de espacio requerido en la unidad de disco duro. La próxima opción es el newbie (novato). Esta opción instala todos los paquetes requeridos en las series seleccionadas. Para todos los otros paquetes, ofrece una sugerencia dónde usted puede escoger" Yes"," No", o" Skip”. “Yes” y “No” hacen lo obvio, Mientras que “Skip” permite saltar a la próxima serie de software. Adicionalmente, usted verá una descripción y el tamaño requerido para cada paquete para ayudarle a decidir si usted lo necesita. Nosotros recomendamos esta opción para los nuevos usuarios, con ella asegura que usted obtiene todos los paquetes requeridos instalados. Sin embargo, es un poco lento debido a las preguntas. El menu es una versión más rápida y más avanzada de la opción newbie. Para cada series, un menú se despliega en el que usted puede seleccionar todos los paquetes no-requeridos que usted quiere instalar. No se despliegan los paquetes requeridos en este menú. Para el usuario más avanzado, instale la opción expert. Esto permite usted un control completo sobre los paquetes que se instalan. Usted puede cancelar una selección paquetes que se requieren absolutamente, produciendo un sistema dañado. Por otro lado, usted puede controlar lo que va hacia su sistema exactamente. Simplemente seleccione los paquetes de cada series que usted necesita instalar. Esto no se recomienda para el nuevo usuario.. La custom y tag path también son para los usuarias avanzados. Estas opciones le permiten instalar archivos basados en etiquetas de costumbre(tag path) que usted creó en el árbol de la distribución. Esto es útil para instalar rápidamente a gran numero de máquinas. Para más información sobre usar los tag path, vea la sección llamada la Fabricación de Tags y Tagfiles (para la instalación) en Capítulo 16. Después de seleccionar su método de la instalación, algunas cosas pasarán. Si usted seleccionara full o menu, una pantalla del menú aparecerá, permitiéndole seleccionar los paquetes a ser instalados. Si usted selecciono full, los paquetes empezarán inmediatamente a ser instalados. Si usted ha seleccionado newbie, se instalarán los paquetes hasta que se encuentre con un paquete optativo. note que es posible quedarse sin espacio mientras esta instalando. Si usted selecciono demasiados paquetes para la cantidad de espacio libre en el dispositivo designado, usted tendrá problemas. La forma mas segura de hacerlo es seleccionar algún software y agregar más tarde, si usted lo necesita. Esto puede hacerse fácilmente usando Slackware's package 22


management tools(Herramientas de manejo de paquetes de Slackware). Para esta información, vea Capítulo 16. CONFIGURE la sección configure le permite hacer una configuración básica del sistema, ahora que los paquetes se han instalado. Lo qué usted ve aquí depende principalmente del software que usted ha instalado. Usted , sin embargo, siempre vera lo siguiente: Kernel selection(Selección de Kernel) Aquí le pedirán que seleccione un Kernel para instalar. Usted puede instalar el Kernel del disco que uso para iniciar(bootdisk), el del CDROM de Slackware(cdrom), o desde otro disco que usted tenga (siempre pensando antes) preparado(floppy). O usted puede elegir “skip” en este caso el kernel predefinido se instalara.

Make a boot disk (Crear un disco de arranque) Hacer un disco de arranque para el uso futuro probablemente es una buena idea. Usted tendrá la opción de formatear un disco y crear uno de dos tipos de disco de inicio. El primer tipo, simple, simplemente escribe un Kernel en el disco. Un una opción más flexible (y recomendada) es lilo que creará un disco de inicio de lilo . Vea la sección llamada LILO en Capítulo 7 para información sobre el lilo. Claro, usted también puede escoger simplemente continue en esta ningún disco de inicio se hará.

23


Modem Usted será consultado sobre la información del módem. Más específicamente, se preguntará si usted tiene un módem, y en ese caso, en que puerto serial se encuentra.

Estas próximas subdivisiones de la configuración pueden o no aparecer, dependiendo de si instalo o no los paquetes correspondientes. Timezone (Zona Horaria) Se le preguntara en que zona horaria se encuentra usted. Si usted opera en la zona horaria de Zulu, lo sentimos; La (extremadamente larga) lista esta ordenada alfabéticamente, y usted esta de ultimo.

24


Mouse Esta subdivisi贸n simplemente pregunta qu茅 tipo de rat贸n usted tiene, y si usted quiere el gpm(8) (soporte de mouse para la consola) activado en el inicio.

Font (Fuentes) La subdivisi贸n FONT le permite escoger de una lista el tipo de fuente para la consola. 25


LILO Aquí se le pide la instalación de LILO (Linux Loader o cargador de Linux ; vea la sección llamada LILO en Capítulo 7 para más información). Si el va de Slackware un ser el único sistema operativo en su computadoras, el debe trabajar bien para usted simple. Si usted tiene un sistema dual de inicio, la opción expert es una buena opción. Vea que la sección llamada booteo dual en el Capítulo 7 para más información sobre el inicio-dual. La tercera opción, do not install, no se recomienda a menos que usted sepa lo que usted está haciendo y tiene una razón muy buena por no instalar LILO. Si usted está realizando una instalación en modo experto , usted tendrá la opción acerca de dónde LILO se instalara. Usted puede poner LILO en el MBR (Master Boot Record de su unidad de disco duro), en el superblock de su partición raíz de Linux, o en un disquete flexible. Por favor note que si usted está usando el inicio de otro sistema operativo actualmente es aconsejable o instalar LILO al superblock de partición raíz de Linux o a un disquete. Instalando al MBR se borrara el inicio de cualquier otro sistema operativo y puede hacerle la vida muy difícil. Network (Red) La subdivisión de configuración de red es realmente el netconfig. Vea la sección llamada netconfig en Capítulo 5 para más información. CD-ROM La subdivisión de CD-ROM simplemente pregunta si le gustaría que el sistema examinara y montara automáticamente un disco de CD-ROM disponible en /cdrom.

26


X Window Manager (El Gestor de Ventanas X) Esta sección le permitirá configurar su gestor window predeterminado para X . Vea el Capítulo 6 para más detalles sobre X Window Manager.

No importa qué paquetes que usted instaló, la última cosa que hará es preguntarle si usted quiere proseguir y poner una contraseña de root. Por las razones de seguridad, ésta es probablemente una buena idea; sin embargo, como casi todo lo demás en Slackware, ésta es su decisión. EXIT La existencia misma de esta sección en el libro es un insulto a su inteligencia. Nosotros nos disculpamos humildemente y pedimos su perdón.

Resumen Usted debe tener Slackware Linux ahora instalado en su sistema. Además, usted debe tener un poco de conocimientos sobre particiones, paquetes de software, el programa de instalación, y algunas opciones de la configuración simples. Con este conocimiento, usted debe estar listo para trabajar terminando la configuración de su sistema. 27


III. Configuración Contenido 4. Configuración del Sistema 5. Configuración de Red 6. El sistema de ventanas X 7. Inicio

Capitulo 4. Configuración del Sistema Contenido • Conociendo el Sistema • Seleccionando el Kernel • Resumen Antes de que usted pueda configurar las partes más avanzadas de su sistema, es una buen idea aprender cómo esta organizado y qué órdenes pueden usarse para buscar archivos y programas. También es bueno saber si usted necesitara compilar un Kernel propio y los pasos que debe hacer. Este capítulo lo familiarizará con la organización del sistema y los archivos de configuración. Entonces, usted puede seguir a configurar las partes más avanzadas del sistema.

Conociendo el Sistema Es importante entender cómo se distribuye el sistema Linux antes de entrar en los varios aspectos de la configuración. Un sistema Linux es significativamente diferente a DOS o a Windows (o incluso a un Macintosh), pero estas secciones lo ayudarán a entender el diseño para que usted pueda configurar su sistema fácilmente para satisfacer sus necesidades.

Sistema de Archivos La primera diferencia notable entre Slackware Linux y DOS o Windows es el filesystem(Sistema de Archivos). Para comenzar, nosotros no usamos letras diferentes para denotar las particiones diferentes. Bajo Linux, hay un directorio principal. Usted puede relacionar esto al C: de DOS. Cada partición en su sistema se monta en un directorio en el directorio principal. Nosotros llamamos a el directorio principal ,directorio raíz, y se denota con un solo slash(/). Este concepto puede parecer extraño, pero hace la vida realmente fácil para usted cuando usted quiere agregar más espacio. Por ejemplo, digamos que se quede sin espacio en el directorio /home. La mayoría de las personas instala Slackware y crea un gran directorio raíz. Bien, desde que una partición puede montarse en cualquier directorio, usted simplemente puede ir a la tienda comprar una nueva unidad de disco duro y montarlo en el 28


directorio /home. Usted ha unido" ahora" un poco más de espacio a su sistema. Y todo sin tener que mover muchas cosas. Debajo, usted encontrará descripciones del tope mayor de los directorios bajo Slackware. /bin Aquí se guardan los programas de usuario esenciales. Éstos representan el grupo mínimo de programas requerido para usar el sistema. Las cosas como el shell y los comandos del filesystem (ls, cp, y así sucesivamente) se guardan aquí. El directorio /bin normalmente no recibe modificación después de la instalación. Si lo hace, normalmente está en el paquete de actualizaciones que nosotros proporcionamos. /boot Archivos que utiliza el Cargador de Linux (LILO). Este directorio también recibe la poca modificacion después de la instalación. /cdrom ¿Recuerda que todas las unidades tienen que ser montadas en un directorio en el directorio raíz? Bien, /cdrom es provisto para el montaje de la unidad de CDROM. /dev Todo en Linux se trata como un archivo, los dispositivos del hardware como los puertos en serie, discos duros, y escáneres. Para acceder a estos dispositivos, un archivo especial que llame al nodo del dispositivo tiene que estar presente. Todos los nodos del dispositivo se guardan en el directorio /dev. Usted encontrará esto en muchos sistemas basados en UNIX. /etc Este directorio guarda los archivos de configuración del sistema. Todo el archivo de configuración del sistema X window, la base de datos del usuario, las entradas de inicio de sistema. El administrador del sistema se familiarizara con el tiempo a este directorio. /home Linux es un sistema operativo multiusuario. Cada usuario en el sistema se le otorga una cuenta y un único directorio para los archivos personales. A este directorio se le llama el “Home” del usuario. El directorio /home es el predefinido como ubicación para estos directorios. /lib Aquí se guardan bibliotecas del Sistema que se requieren para el funcionamiento básico. La biblioteca de C, el cargador dinámico, la biblioteca del ncurses, y los módulos del kernel están entre otras cosas guardados aquí. /lost+found Cuando el sistema se arranca, los filesystems se verifican para cualquier error. Si se descubren los errores, se ejecuta el programa fsck para ver si cualquiera puede corregirse. Las partes corregidas del filesystem se escriben al directorio /lost+found. /mnt Este directorio sirve de punto de montaje temporal para discos duros o discos extraíbles.

29


/opt Paquetes de software optativos. La idea detrás de /opt es de que cada paquete opcional se instale en /opt/<software package>, lo que hará fácil desinstalarlo después. Slackware incluye algunas cosas en /opt (como KDE en /opt/kde), pero usted es libre agregar lo que usted quiera a /opt. /proc Éste es un directorio único. Realmente no es parte del filesystem, pero es un sistema de archivos virtual que proporciona acceso a la información del kernel. Los varios pedazos de información que el kernel quiere que usted sepa se muestran a travez de ”archivos” en el directorio /proc. Usted también puede enviar la información al Kernel a través de algunos de estos" archivos".Trate haciendo cat /proc/cpuinfo. /root El administrador del sistema es conocido como ”root". el directorio home del root se encuentra en el directorio /root en lugar de /home/root. La razón es simple. ¿Qué pasaria si /home estuviera en una partición diferente a / y no pudiera montarse? root querría entrar y reparar el problema naturalmente. Si su directorio home estuviera en el filesystem dañado, seria difícil para él entrar. /sbin Programas esenciales que se ejecutan por el root y durante el proceso de arranque del sistema se guarda aquí. Los usuarios normales no ejecutan los programas de este directorio. /tmp

La ubicación de almacenamiento temporal. Todos los usuarios tiene acceso a este directorio. /usr Éste es el directorio grande en un sistema Linux. Todo lo más bonito va aquí, programas, documentación, el código fuente del kernel, y el sistema X window. Éste es el directorio en el usted estará instalando mas programas probablemente. /var Aquí se guardan archivos log del Sistema, datos del cache, y archivos de bloqueo de programa. Éste es el directorio para los datos frecuentemente-cambiantes. Usted debe ahora tener una buena percepción de lo que contiene los directorios en el filesystem. La próxima sección le ayudará a encontrar los archivos específicos fácilmente, para que usted no tenga que hacerlo a mano.

Encontrando Archivos Usted sabe lo que contiene cada directorio ahora, pero todavía no le ayuda realmente a encontrar las cosas. Es decir, usted podría ir buscando a través de los directorios, pero hay maneras más rápidas. Hay cuatro comandos principales de búsqueda de archivos disponibles en Slackware. which El primer comando es which(1). Normalmente se usa which para localizar rápidamente un programa. El solo busca la ruta y muestra la primera instancia que encuentra y el directorio donde se localiza. Tome este ejemplo: 30


$ which bash /bin/bash

Lo que usted ve ahora es que bash esta en el directorio /bin. Éste es un comando muy limitado para investigar, ya que sólo muestra la ruta. whereis El whereis(1) es un comando similar, pero también puede buscar páginas del manual y archivos fuente. Una búsqueda del whereis para bash debe devolver esto: $ whereis bash bash: /bin/bash /usr/bin/bash /usr/man/man1/bash.1.gz

Este comando no sólo nos dijo donde esta el programa real, sino también donde la se guarda la documentacion. Todavía, este comando está limitado. ¿Qué si usted quisiera buscar un archivo de configuración específico? Usted no puede usar which o whereis para eso. find El comando find(1) puede buscar lo que sea. Yo quiero buscar el sistema entero para encontrar el xinitrc predefinido en el sistema. $ find / -name xinitrc ./var/X11R6/lib/xinit/xinitrc

find tardará un rato en ejecutarse, ya que tiene que cruzar el árbol del directorio raíz entero. Si usted ejecuta este orden como un usuario normal, usted conseguirá mensajes de error de permiso denegado para los directorios que sólo root puede ver. Pero find encontró nuestro archivo, lo que es bueno. Si sólo pudiera ser un poco mas rapido... locate El locate (1) busca en el filesystem entero, como lo hace el comando find, pero investiga una base de datos en lugar del filesystem real. La base de datos se pone al día automáticamente a las 4:40AM, para que usted tenga una descripción fresca de los archivos en su sistema. Usted puede ejecutar el updatedb(1) a mano para poner al día la base de datos. Este es un ejemplo de locate en acción: $ locate xinitrc # we don't have to go to the root /var/X11R6/lib/xinit/xinitrc /var/X11R6/lib/xinit/xinitrc.fvwm2 /var/X11R6/lib/xinit/xinitrc.openwin /var/X11R6/lib/xinit/xinitrc.twm

Nosotros conseguimos más de lo que nosotros estábamos buscando, y rápidamente también. Con estas órdenes, usted debe poder encontrar cualquier cosa que usted está buscando en su sistema Linux.

El Directorio etc/rc.d Los archivos de inicio del sistema se guardan en el directorio /etc/rc.d. Slackware usa el diseño tipo-BSD para sus archivos de inicio. Cada tarea o runlevel tiene su propio archivo rc. Esto proporciona una estructura organizada que es fácil mantener.

31


Hay varias categorías de archivos de inicio. Éstos son inicio del sistema (system startup), runlevels, inicio de red (network initilization), y compatibilidad con el Sistema V (System V compatibility). System Startup(Inicio del Sistema) El primer programa que se ejecuta bajo Slackware además del Kernel de Linux es el init(8). Este programa lee el archivo /etc/inittab(5) para ver cómo arrancara su sistema. Ejecuta el script /etc/rc.d/rc.S para preparar el sistema antes de entrar en el runlevel deseado. El archivo de rc.S habilita su memoria virtual, monta su filesystem, limpia ciertos directorios del log, inicia los dispositivos Plug & Play, carga los módulos del kernel, configura los dispositivos PCMCIA, los puertos en serie, y ejecuta el System V init script (si lo encontró). Obviamente rc.S tiene mucho trabajo que hacer, pero están algunos scripts en /etc/rc.d que rc.S llamará mas adelante para completar su trabajo: rc.S

Éste es el script de inicialización del sistema actual. rc.modules

Carga los módulos del kernel. Cosas como su tarjeta de red,soporte para PPP, y otras cosas son cargadas aquí. Si este script encuentra rc.netdevice, ejecutará eso también. rc.pcmcia

Busca y configura cualquier dispositivo PCMCIA que usted podría tener en su sistema. Esto es muy útil para usuarios de portátiles que probablemente tienen un módem PCMCIA o una tarjeta de red. rc.serial

Configura sus puertos en serie ejecutando los caomandos apropiados del setserial. rc.sysvinit

Busca los scripts de System V init para el runlevel deseado y los ejecuta. Esto se discute con más detalle abajo. Runlevel Initialization Scripts Después de que el inicio del sistema está completo, el init continua la inicialización del runlevel. Un runlevel describe el estado en que su máquina estará corriendo. ¿Suena redundante? Bien, el runlevel dice al init si usted esta aceptando inicios de sesión multiusuarios o simplemente un solo usuario, si usted quiere o no los servicios de red, y si usted estará usando el X window system o agetty(8) para ocuparse de los inicios de sesión. Los archivos debajo definen los diferentes runlevels en Slackware Linux.

rc.0

Deteniene el sistema (runlevel 0). Por defecto, esta linkeado a rc.6. rc.4

Inicio Multiusuario (runlevel 4), pero con X11 con KDM, GDM, o XDM como gestor de inicio de sesion. rc.6 32


Reinicia el sistema (runlevel 6). rc.K

inicio en modo de un solo usuario (runlevel 1). rc.M

modo multiusuario (runlevels 2 y 3), pero con el inicio de sesión basado en texto normal. Éste es el runlevel predefinido en Slackware. Inicio de Red(Network Initialization) Runlevels 2, 3, y 4 pondrán en marcha los servicios de red. Los siguientes archivos son los responsables del inicio de la red: rc.inet1

Creado por el netconfig, este archivo es responsable de configurar la interfaz de la red actual. rc.inet2

Se ejecuta después de rc.inet1 inicia los servicios de red básicos. rc.atalk

Inicia los servicios AppleTalk. rc.httpd

Inicia el servidor web Apache. rc.samba

Inicia el servicio para compartir archivos e impresoras con sitemas Windows. rc.news

Inicia el servidor de noticias. System V Compatibility Sistem V init compatibility se introdujo en Slackware 7.0. Muchas otras distribuciones de Linux hacen uso de este estilo en lugar del estilo de BSD. Básicamente a cada runlevel se le otorga un subdirectorio para los scripts de init, mientras que el estilo BSD otorga un script de init para cada runlevel. El script de rc.sysvinit buscará cualquier script de sistema V init que usted tenga en /etc/rc.d y lo ejecuta, si el runlevel es apropiado. Esto es con toda seguridad útil para paquetes de software comerciales que instalan System V init scripts y scripts para el init de BSD. Otros Archivos Los scripts descritos debajo son los otros scripts de inicio del sistema. Ellos se ejecutan normalmente desde uno de estos scripts descritos abajo, todo lo que usted necesita es editar el contenido rc.cdrom

Si esta activado, este script buscara la unidad de CD-ROM y la montara en el directorio /cdrom. rc.gpm

Inicia los servicios del mouse para propósitos generales. Le permite copiar y pegar en la consola de Linux. rc.ibcs2

Inicia el soporte de compatibilidad binaria de Intel. Esto solo es necesario si usted planea ejecutar programas compilados en SCO UNIX, u otra aplicación comercial Intel UNIX. No se necesita para ejecutar los programas de Linux 33


rc.font

Carga la fuente de pantalla personalizada para la consola. rc.local

Contiene cualquier inicio especifico para su sistema. Esta vacío después de una instalación reciente, esta reservado para los Administradores locales .Este script se ejecuta después de que toda la otra inicialización ha tenido lugar. Para habilitar un script, todo lo que tiene que hacer es agregarle los permisos de ejecución con el comando chmod . Para desactivar un script, quite los permisos de ejecución de él . Para más información sobre el chmod, vea la sección sobre los Permisos en Capítulo 9.

Seleccionando el Kernel El Kernel es la parte del sistema operativo que proporciona acceso al hardware, controla los proceso, y el mando general del sistema. El Kernel contiene el soporte para su hardware, así que escoger el adecuado para su sistema es un paso importante en el proceso de instalación. Slackware proporciona alrededor de sesenta Kernels precompilados que usted puede escoger, cada uno con un set normal de drivers y drivers adicionales específicos. Usted puede ejecutar uno de los Kernels precompilados o puede construir su propio Kernel desde la fuente. De cualquier modo, usted necesita asegurarse que su Kernel tiene el soporte de hardware que su sistema necesita.

El directorio /Kernel en el CD-ROM de Slackware Los Kernel precompilados de Slackware están disponibles en el directorio /Kernel del CD-ROM de Slackware o en el sitio de FTP en el directorio principal de Slackware. Los Kernels disponibles cambian de acuerdo a las nuevas versiones que se hacen por lo que la documentación en este directorio es siempre la fuente autorizada. El directorio /Kernel tiene subdirectorios para cada kernel disponible. Los subdirectorios tienen el mismo nombre como del disco de inicio que los acompaña. En cada subdirectorio usted encontrará los siguientes archivos: Archivo

Proposito

System.map

El archivo de mapa de sistema para este Kernel

bzImage (o zImage)

La imagen del Kernel actual

config

La fuente para la configuración de este Kernel

Para usar un Kernel, copie el System.map y los archivos de configuración a su directorio /boot y copie la imagen del Kernel en el directorio /vmlinuz. Ejecute /sbin/lilo(8) para instalar el LILO del nuevo Kernel, y entonces reinicie su sistema. Esto es todo lo que hay que hacer para instalar un nuevo Kernel. 34


Los Kernels que terminan con un ".i" son lo Kernels IDE. Es decir, ellos no incluyen el apoyo para SCSI en el Kernel. Los Kernels que terminan con ”.s” son los Kernels SCSI. Ellos incluyen todo el suporte de IDE de los Kernels .i ,mas el suporte para SCSI.

Compilando un Kernel desde la fuente La pregunta"¿ yo debo compilar un Kernel para mi sistema?" se presenta a menudo en los nuevos usuarios. La respuesta definitivamente es tal vez. Hay pocos casos dónde usted necesitará compilar un Kernel específico para su sistema. La mayoría de los usuarios puede usar un Kernel precompilado y los módulos cargables del Kernel para lograr un sistema totalmente activo. Usted querrá compilar un Kernel para su sistema si usted está actualizando la versiones del Kernel a uno que nosotros no ofrecemos actualmente en Slackware, o si usted ha reparado la fuente del Kernel para conseguir soporte a algún dispositivo especial que no está en la fuente kernel nativa. Construir su propio Kernel no es tan difícil. El primer paso es asegurarse que usted tiene la fuente del kernel instalada en su sistema. Asegúrese que usted instaló los paquetes de las series K durante la instalación. Usted también debe asegurarse que tiene instalada la serie D, específicamente el compilador de C, el GNU make y el GNU binutils. En general, es una buena idea tener toda la serie D instalada si usted planea en hacer cualquier tipo de desarrollo. Ahora nosotros estamos listos para construir un Kernel: $ su Password: # cd /usr/src/linux

El primer paso es traer la fuente del Kernel a su estado básico. Nosotros emitimos este orden para hacer eso: # make mrproper

Ahora usted puede configurar el Kernel para su sistema. Los kernls actuales permiten tres maneras de hacer esto. La primera es el sistema de texto basado en preguntas y respuestas. Hace una serie de preguntas y entonces construye el archivo de configuración. El problema con este método es que si usted se equivoca, usted debe volver a empezar. El método que la mayoría de las personas prefiere es el manejado por menús. Hay por ultimo una herramienta de configuración basada en X. Escoja el que usted quiera y ejecute el comando apropiado # make config (texto basado en preguntas y respuestas.) # make menuconfig (manejado por menus, basado en texto) # make xconfig (version basada en X, asegurese que se encuentra en X primero)

35


Figura 4-1. El programa de configuración Kernel manejado por menús.

Los Nuevos usuarios encontrarán el menuconfig probablemente más fácil de usar. Las pantallas de ayuda que provee explica las partes del Kernel. Después de configurar su Kernel, salda del programa de configuración. El programa escribirá los archivos de configuración necesarios. Ahora nosotros debemos preparar el árbol de la fuente para construirlo: # make dep # make clean

El próximo paso es compilar el Kernel. Trate primero usando el comando zImage. Este fallará si su Kernel es demasiado grande. No preocupe, usted todavía puede construirlo con el comando bzImage. # make zImage # make bzImage

(pruebe este primero) (si make zimage falla, ejecute este comando)

Esto puede tardar un poco, dependiendo de la velocidad de su CPU. Durante el proceso de construcción, usted verá los mensajes del compilador. Después de construir la imagen kernel, usted querrá construir cualquier parte del Kernel que usted marcó como modulo. # make modules

36


Nosotros podemos ahora instalar el Kernel y los módulos que usted compiló. Para instalar el Kernel en un sistema Slackware, estos comandos deben ejecutarse: # mv /vmlinuz /vmlinuz.old # cat arch/i386/boot/zImage > /vmlinuz # mv /boot/System.map /boot/System.map.old # cp System.map /boot/System.map

Reemplace el zImage con el bzImage si usted tenía que construir un Kernel grande. Usted querrá revisar /etc/lilo.conf y agregar una sección para iniciar desde su Kernel viejo en caso de que el nuevo no trabaje. Después de hacer eso ejecute /sbin/lilo para instalar el nuevo bloque de inicio. Usted puede reiniciar ahora y utilizar su nuevo Kernel.

Usando los Módulos del Kernel Los modulo del Kernel son otros dispositivos adicionales que pueden ser agregados en un Kernel normal. Ellos le permiten extender el soporte de hardware de su Kernel sin necesidad de escoger otro Kernel o compilar uno por usted. También puede cargar y descargar los módulos cuando usted quiera , incluso cuando el sistema está corriendo. Esto hace la actualización de drivers específicos mas sencillo para los administradores de sistema. Un nuevo módulo puede compilarse, quitar el viejo, cargar el nuevo, y todo sin reiniciar la máquina. Los módulos se guardan en el directorio /lib/modules/<kernel version> en su sistema. Ellos pueden cargarse al inicio a través del archivo rc.modules. Este archivo esta muy bien documentado y ofrece ejemplos para la mayoría de las opciones de hardware. Para ver la lista de módulos que están actualmente activos, utilice el comando lsmod(1): # lsmod Module parport_pc parport

Size Used by 7220 0 7844 0 [parport_pc]

Usted puede ver aquí que sólo tengo el módulo del puerto paralelo cargado. Para quitar un módulo, usted usa el comando rmmod(1). Los módulos pueden ser cargados con las ordenes modprobe(1) o insmod(1). modprobe es generalmente mas seguro porque cargara cualquier modulo que dependa del que usted esta intentando cargar. Muchos usuarios nunca tienen que cargar o descargar los módulos a mano. Ellos usan el Kernel autoloader para el manejo de los módulos. Todo lo que tiene que hacer es descomentar la linea /sbin/kernel(8) en /etc/rc.d/e/rc.modules y el autoloader se cargara. Se encargara de cargar y descargar los módulos como usted le pida. Una petición solo involucra tratar de acceder a ese dispositivo. Más información puede encontrarse en las páginas del manual de cada uno de estos comandos, y en el archivo de rc.modules. 37


Resumen Usted debe estar ahora familiarizado con los órdenes para buscar en el filesystem, la organización del filesystem, y la configuración de archivos en el directorio /etc. Estas habilidades serán sumamente útiles como usted aprende más sobre el sistema. Además, usted debe saber cómo configurar y compilar un Kernel desde la fuente.

38


Capitulo 5. Configuración de la Red Contenido • Hardware de Red • Utilidades de Red • Los Archivos de /etc • rc.inet1 • rc.inet2 • NFS (Sistema de Archivos de Red) • tcp wrappers • Resumen

Hardware de Red Como la mayoría de las cosas interesantes que usted puede hacer con una computadora, conectarla a una red involucra tener algo de hardware especial. Usted necesitará una NIC ( Tarjeta de Interfaz de Red) para conectarla a una red LAN, quizás un módem para conectarse a un proveedor de Internet, o quizás ambos (o alguno , o ninguno). Para los propósitos de configuración, nosotros podemos dividir dicho hardware en PCMCIA (para las computadoras portátil) y no-PCMCIA. La razón para esta división algo desequilibrada es que actualmente el hardware PCMCIA no es soportado por la distribución Kernel, pero es posible lograrlo con un paquete separado que incluye los drivers necesarios (como los módulos Kernel) y algún software para la configuración y manejo de dispositivos de PCMCIA. Todo lo demás, claro, se maneja con la distribución Kernel normal.

Netmods( Módulos de Red) Los drivers para los dispositivos de red que son soportados por el Kernel están incluidos en el paquete netmods(slakware/n3/netmods.tgz). Si usted no ha instalado el netmods todavía, usted necesitará hacerlo ahora. (Vea el Capítulo 16 para ayuda sobre instalar los paquetes.) Los modulos del Kernel que serán cargados al iniciar se encuentran en el archivo rc.modules en el directorio /etc/rc.d. El archivo rc.modules predefinido incluye una sección llamada |Network device support| (soporte de equipos de red) .si usted abre el archivo rc.modules y busca esa seccion, usted notara que el busca primero el ejecutable rc.netdevice en /etc/rc.d; rc.netdevice se crea si se instala el autoprobes para su dispositivo de red durante la isntalacion. Si esta, usted probablemente no este leyendo esto (ooh, paradójico), si no esta sigua leyendo. Debajo del bloque "if" ahí una lista de dispositivos de red y líneas del modprobe, cada una se encuentra comentada. Encuentre su dispositivo y descomente la línea correspondiente en el modprobe, después guarde el 39


archivo. Ejecutando rc.modules como root debe cargar el driver para su dispositivo de red.( l así como cualquier otro modulo descomentado.) Note que algunos módulos (como el driver del ne2000) requiere los parámetros; asegúrese usted seleccione la línea correcta.

Dispositivos de red PCMCIA Los dispositivos de red PCMCIA son aun mas fáciles que los otros. Asegúrese que usted tiene instalado el paquete de PCMCIA (slakware/a11/pcmcia.tgz). (vea el Capítulo 16 para detalles sobre la instalación del paquete.) En la instalación, el paquete pcmcia creara un archivo rc.pcmcia en el directorio /etc/rc.d y un directorio /etc/pcmcia, e instalara los drivers en /lib/modules/<kernel version>/pcmcia. Lo bueno del paquete pcmcia es que intenta detectar automáticamente la instalación y desinstalación de dispositivos pcmcia soportados; y usted debe poder insertar su dispositivo pcmcia y escuchar simplemente el pitido que da al cargar los módulos necesarios. Si usted quita la tarjeta, los módulos del driver deben quitarse automáticamente. Desgraciadamente, si usted compila una versión mas nueva del Kernel usted probablemente tendrá que recompilar pcmcia-cs para obtener los drivers actualizados. Claro , la fuente esta incluida; chequee el directorio source/a/pcmcia, hay encontrara la fuente , scripts y cualquier otra documentación que tenemos para ayudarle.

Utilidades de Red (Network Utilities) ifconfig Ahora que su Kernel puede comunicarse con su hardware de red ,lo que se necesita lograr es que el software le diga al Kernel como pasar información a través de el y viceversa. Nosotros necesitamos configurar una interfaz. necesitamos el ifconfig(8). Es mas facil aprender sobre el ifconfig a través de el ejemplo; usted puede echar una mirada a su archivo rc.inet1 (cubierto en las sección llamada rc.inet1) para ver como se hace: el caso mas común y mas sencillo se parece a esto: # ifconfig eth0 192.168.1.10 broadcast 192.168.1.255 \ netmask 255.255.255.0

Esta línea plantea el eth0 (la primera interfaz de ethenet ; usa el anillo tr0, los ppp usan el ppp0, etc.). con el IP 192.168.1.10, una dirección de trasmisión de 192.168.1.255(incluye toda la subred 192.168.1) y la mascara de red (netmask) de 255.255.255.0 (indicando que las tres primeras partes de la dirección de IP(192.168.1) se refieren a la red, mientras que la ultima parte,(.10), se refiere al host). Al menos que usted este haciendo algo extraño, puede usar siempre esta dirección de trasmisión que es las primeras tres partes de su IP seguidas por 255. Usted puede usar casi siempre como 40


netmask 255.255.255.0. Si usted esta haciendo algo diferente, usted sabe que esta parte del libro probablemente no le servirá mucho de ayuda. también puede usar ifconifg simplemente para ver lo que esta allí. Ejecútelo sin ninguna opción ni parámetro para ver la lista de todas sus interfaces de red actuales y sus configuraciones.

route Para saber donde enviar los datos, el Kernel mantiene una tabla de rutas (routing table). No vamos a hacer mucho detalle sobre el aquí, pero usted puede ver la tabla de rutas ejecutando /sbin/route(8). route -n le dará la lista de direcciones IP en lugar de los nombre; esto es util si esta teniendo problemas comunicándose con el nombre del servidor o si usted simplemente no esta interesado en el mundo ilusorio de los nombres de dominio. Afortunadamente si usted tiene una instalación de red simple(y la mayoría de las personas hace).los Kernels 2.2 automáticamente crearan las entradas en la tabla de asignación de rutas.

Netconfig netconfig es parte del programa de instalación del Slackware, pero como la mayoría de los componentes puede ejecutarse por separado. el netconfig es muy sincero, y lo guiara de forma que usted pueda crear una conexión de red básica. Es un programa especialmente bueno si usted no está muy familiarizado o cómodo con los archivos de red rc. Cuando usted ejecuta el netconfig, usted se encontrara con esta pantalla de saludo:

Se le pedirá escribir el hostname y el domain name de su computadora. Usted puede escribir cualquier cosa en estos dos renglones, a menos que este preparando un servidor u otra maquina que usaran muchas personas. se le preguntara si usted esta usando un IP estático, DHC,o simplemente loopback.

41


Si usted no va a estar conectado a una red, escoja loopback. Si usted está preparando una computadora que se conectara a una universidad o a una red de oficina grande, usted debe escoger DHCP más probablemente. En otro caso escoja el IP estático(static IP). Si usted no escogió Ip estático, usted esta listo ahora. Si usted escoge el IP estático, usted tendrá que introducir la dirección de IP de su computadora, la mascara de red, dirección de trasmisión, y dirección del servidor. netconfig le dirá como deducir todos esos números.

pppsetup Slackware incluye la utilidad pppsetup que permite configurar una conexión con un ISP.(Proveedor de Servicios de Internet). Se localiza en el paquete ppp.tgz en la serie de software N: pppsetup utiliza la misma interfase que el programa de instalación. Si usted no recuerda cómo usar esta interfaz, refiérase atrás a la sección llamada El Programa del Instalación en Capítulo 3 para algunas instrucciones. pppsetup le hara una serie de preguntas y configurara varios archivos en el directorio /etc/ppp. Como root, ejecute pppsetup, nosotros lo guiaremos a través de las preguntas.

42


Phone number (Numero de teléfono) La primera de las preguntas se refiere a el número de teléfono de su ISP, los códigos de área y tipo de marcado. Como la mayoría de las personas, usted querrá usar el marcado por tonos(tone dialing). Si el número de teléfono de su ISP fuera 555-1013 y usted usa el marcado por tonos, escriba atdt5551013 en el cuadro de diálogo.

43


Modem Luego, seleccione la ubicación de su módem. Si usted sabe cual puerto COM usaba bajo Windows, usted puede seleccionar el equivalente en el listado. Si no lo sabe, usted tendrá que hacer un experimento. La mejor manera es empezar por ttys0 y ir probando lista abajo.

Velocidad de trasmisión del modem (Modem Baud Rate) Escoja la velocidad de transmisión que mas se acerque a su modem. Si usted no sabe la velocidad de su modem, podría verificar la caja del modem o cualquier documentación que viniera con el. Cada selección tiene varios ejemplos, por lo que no debe ser difícil deducir.

44


Callback Ahora, usted necesitara indicar la información referente a su ISP. Pocos ISPs usan el callback, probablemente puede seleccionar mejor "NO." Callback es cuando usted marca al ISP y ellos devuelven la llamada para que usted se pueda conectar en el.

Si usted tiene que usar el callback, seleccione" YES." Entonces, se le pedirá introducir su número de teléfono, un nombre del inicio de sesión, y una contraseña. Usted no tiene que introducir su nombre de usuario y contraseña. Finalmente se le preguntara sobre que tipo de esquema de 45


autenticación usa su ISP. Si ellos usan CHAP o PAP, seleccione "YES". Después, usted necesitará preparar esto. Refiérase a la sección debajo. Si ellos no usan ninguno de los anteriores, seleccione "NO" y refiérase a la sección "Chat Script descrita abajo. Modem init string A menos que usted tenga un modem extraño, usted podría simplemente presionar enter para seleccionar el predeterminado ("AT&FHO"). Por otra parte, refiérase a la documentación que vino con su modem para saber cual init string usar.

Nombre del Dominio (Domain Name) Ahora, usted necesitará entrar en el nombre del dominio de su ISP. Este será algo de forma "example.net", "slackware.com", o algo parecido. (De acuerdo, no va a ser slackware.com definitivamente:)

46


DNS IP address (direccion DNS IP) Su ISP le debe de haber proporcionado la dirección IP de su nameserver. Si usted tiene esa dirección IP, escríbala. Si no la tiene, regístrese con su ISP para ver qué número puede usar.

Authentication method (Método de autenticación) Esta pregunta también podría llevarle un poco de trabajo de ensayo y error. Usted necesita deducir si su ISP usa al CHAP, PAP, o ningun método para la autenticación de usuario. La manera más fácil de deducir esto es llamar a su ISP. Sin embargo, si usted se consigue con el inicio de sesión y paswords cuando se conecta, usted probablemente deba escoger "SCRIPT". De todas maneras, consulte a su ISP para saber cual usar.

47


PAP or CHAP Si usted selecciona "CHAP" o "PAP" en la pantalla de método de autenticación, se le pedirá su nombre de usuario. Su ISP le debe de haber asignado un username. Si ellos no hicieron, entonces sucede algo muy extraño. Usted necesita contactarlos y conseguir su username. Después usted debe ingresar la contraseña que le asigno su ISP en el próximo cuadro de dialogo. Chat script Si usted selecciona la opción "SCRIPTS" en la pantalla de método de autenticación, se le presentara una discusión bastante larga sobre que tipo de chat script es. Asegúrese de leerlo porque hay se describe muy bien todo. Básicamente, usted tendrá que decir que tipo de información va a enviar su ISP y lo que su computadora debe enviar de vuelta. Usted tendrá entonces que anotar el texto que su computadora debe recibir de su ISP, seguido de la información que debe devolver. Done Finalmente se le mostraran sus archivos de configuración ppp completos. Usted realmente no puede hacer nada sobre ellos, pero usted puede comprobar todo por lo menos. Presione enter para guardar todo y salir del pppsetup. Esta pantalla contiene información sobre como iniciar una conexión dialup y como abandonarla cuando este listo. La idea básica es esta: entre como root, ejecute ppp-go para empezar la conexión. Una vez que le asignan un IP local y remoto, usted esta conectado en la Internet. Cuando este listo, ejecute ppp-off y terminara la conexión.

48


Los Archivos de /etc /etc/inetd.conf En un sistema operativo de red central, no es raro que muchos servidores estén ejecutándose al mismo tiempo. Comúnmente para cada servicio que esta disponible un programa debe estar revisando alrededor recibiendo conexiones, con esto se puede obtener un sistema pesado ejecutando muchos de estos servidores. Para reducir la sobrecarga, fue creado el inetd. inetd es el "súper-servidor de Internet" el esta pendiente de recibir la conexiones desde muchos sockets, y cuándo un archivo entra inetd se encarga de buscar el servidor apropiado para manejarlo. Así se reducen muchos servidores esperando a uno solo. /etc/inetd.conf es el archivo encargado de la configuración del inetd. Especifica que servidor se ejecuta para cada conexión. La pagina del manual sobre el inetd(8), contiene una información mas detallada , pero echémosle una mirada a la línea básica de servicio: ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd -l -i -a

Ésta es la línea para el servidor de ftp. Note primero el nombre del protocolo "ftp", y por ultimo el comando que ejecuta para responder. En este caso, el programa que se usa para contestar el intento de conexión esta en /usr/sbin/tcpd; es un "wrapper"(envoltura) programa que proporciona algunas opciones de seguridad básica al servidor que envuelve. wu.ftpd es nuestro servidor de ftp real, pero tcpd corre ese para nosotros. Mas información útil sobre el tcpd se encuentra en la sección llamada tcp wrappers. Como muchos archivos del sistema, las líneas en inetd.conf se comentan con el carácter # ; usted puede agregar y quitar los servicios simplemente comentando esas líneas y reiniciando el inetd.

/etc/resolv.conf Éste es el archivo que dice al resto del sistema dónde conseguir su información de DNS. Se lista cualquier servidor de nombres que usted use aquí, así como el nombre del dominio de su host. Aquí hay un ejemplo resolv.conf (desde el laptop yo estoy escribiendo esto, ninja.tdn): domain tdn nameserver 192.168.1.1 search tdn. slackware.com

La primera línea describe el nombre del dominio ninja; después del hostname en mi dirección. Lo segundo es el DNS de nuestra red local. Usted puede tener tantos de estos como usted necesite; ellos se verificaran en el orden desde el primero al ultimo siempre que un programa necesite buscar el nombre del domino correspondiente a la dirección de IP.

49


La última línea es un poco mas interesante. Describe cualquier nombre de dominio que puede ser asumidos por mi sistema. Por ejemplo, suponga que yo tengo las máquinas zuul.tdn y hejaz.slackware.com. Yo puedo hacer ping zuul y ping hejaz para hacerle un ping a ellas , respectivamente. Esto se debe a que el ping intenta primero agregar a ".tdn" al nombre zuul, y encuentra la entrada que va con el. En el caso de" hejaz", prueba" hejaz.tdn" primero. No hay ninguna coincidencia, por lo que prueba con "hejaz.slacware.com"--bingo. Note que todos los dominios listados en la línea search necesitan terminar con un "." excepto el ultimo; si hay uno solo, este será el ultimo y no hay necesidad de ningún rastreo.

/etc/hosts El archivo host permite un método mas simple de búsqueda de dominios. Es una lista de hostnames y su IPs correspondiente. Esto es util en una red pequeña donde los DNS no valen la pena, en casos cuándo los DNS son inestables, etc.y es usado por la maquina durante el arranque cuando ningún nameservers esta disponible. Los míos podrían parecerse a esto: 127.0.0.1 localhost 192.168.1.32 ninja.tdn ninja

La primera línea se explica por si sola. La segunda, sin embargo , no. Usted puede listar tantos nombres y aliases(alias) para una dirección como usted guste, separados por un espacio. Así que yo tengo "192.168.1.32" traducido a "ninja.tdn" ( y viceversa), pero el alias "ninja" puede usarse también cuando estoy demasiado cansado para escribir ".tdn"(que es la mayoría del tiempo).

rc.inet1 /etc/rc.d/rc.inet1 es el archivo que prepara la "infraestructura" de la red--inicia los dispositivos y configura las direcciones(adresses) y rutas(routes). El rc.onet1

que viene con Slackware esta muy bien documentado , así que estaríamos repitiendo lo mismo si nos detenemos aquí.

rc.inet2 El archivo /etc/rc.d/rc.inet2 esta allí para encargarse de la otra parte. Prepara los servicios y daemons y se ocupa de cualquier gestión de redes interesante. Miremos un bloque de muestra: # Start the NAMED/BIND name server: if [ -f ${NET}/named ]; then echo -n " named" ${NET}/named -u daemon -g daemon fi

50


La línea importante aquí es la 4, qué actualmente ejecuta el comando named(8). El resto esta congelándose: "if" verifica para ver si los programas están nombrados(named) como se espera realmente, y la línea echo reporta que ese nombre se uso desde que se inicio el sistema. Usted encontrara que la mayoría de los servidores arranca desde rc.inet2 ejecutándose en bloques como este; simplemente prueba si existe alguna razón obvia para que ellos se estén ejecutando ,y luego los comandos para que se inicien por si mismo. De nuevo, rc.inet2 , esta muy bien documentado ; revíselo.

NFS (Sistema de Archivos de Red) El Sistema de Archivo de Red se usa, obviamente, para compartir archivos entre las máquinas en una red. Lo bueno del NFS es que esta diseñado para que una maquina pueda montar archivos compartidos de la otra de forma transparente, y los trata como archivos locales. Sin embargo , un par de cosas tienen que pasar para que esto suceda. Primero los servicios apropiados tienen que estar corriendo en la máquina del servidor: éstos son los portmap(8), nfsd(8), y mountd(8). Lo segundo es que el servidor tiene explícitamente que "exportar" un arbol del filesystem al cliente, lo que se logra mediante el archivo exports(5) en /etc. La primera parte de la ecuación se logra instalando el paquete tcpip1.tgz (de la serie de software N) y permitiendo a rc.inet2 hacer su trabajo. /etc/exports es la parte mas divertida. Suponga que yo tengo un directorio de imágenes(var/media/images) en battlecat.tdn que yo quiero montar en ninja.tdn. En battlecat, necesitare una línea en /etc/exports parecida a esta: /var/media/images ninja.tdn(ro)

Entonces en ninja, yo simplemente coloco: # mount -t nfs battlecat.tdn:/var/media/images /mnt

para montar el directorio de las imágenes en /mnt localmente. Desgraciadamente, yo me he prohibido la escritura en el directorio compartido-- el pedazo de línea "(ro)" en battlecat etc/exports es una opción que significa "solo lectura" (read only). Cualquier otra opción que necesite después del nombre del cliente, debe escribirse dentro de paréntesis, y separadas por coma.. Por ejemplo: /var/media/images ninja.tdn(rw,no_root_squash)

La "rw" es obviamente la opción "read-write" (lectura-escritura)--sujeta al grupo y usuario que indica (vea la sección export(5) de la pagina del manual para una explicación), se le permite a los usuarios de ninja escribir en el directorio compartido. No me gusta mucho la explicadera, por lo que pienso dejar a la pagina del manual explicarle eso a usted; si usted planea usar mucho NFS , export(5) será su mejor amigo. 51


tcp_wrappers tcp_wrappers es un servicio básico para prevenir ( y explícitamente permitir) el acceso a los servicios desde los host especificados. En una nutshell, funciona así: inetd (el súper-servidor de Internet) ejecuta muchos servidores, muchos de los cuales son "wrapped"(ajustados) por tcpd. En otras palabras, tcpd es realmente quien ejecuta estos servidores, pero el inetd no sabe eso. tcpd logea los intentos de conexión y entonces chequea los archivos /etc/host.allow y etc/host.deny para ver cuales conexiones debe permitirse. Las reglas contenidas en estos archivos pueden ser algo complejas, pero supongamos, pyramid.tdn esta siendo muy molesto y no deja en paz al pobre mojo.tdn. ; mojo.tdn podria escribir una línea en /etc/host deny parecida a esta: ALL: pyramid.tdn

Esta línea debe ser bastante clara: impide a pyramid usar todos los servicios en mojo que estan protegidos por tcpd. Si estoy siendo molestado por un dominio entero además de pyramid, yo podría crear esta línea: ALL: pyramid.tdn, .annoying.domain

¡Pero espera! Mi amigo Hobbes esta entrando desde una maquina en .annonying.domain , pero yo quiero que el pueda entrar(pero no el resto de sus amigos molestos). Eso es bastante simple. Dejo como esta a host.deny , y estas líneas en hosts.allow dejaran entrar a Hobbes: ALL: hobbes.annoying.domain

Para mucho más detalle, vea tcpd(8), hosts_access(5), y hosts_options(5). El sistema de tcp_wrappers es mucho más flexible que esto, y merece la pena revisarlo bien.

Resumen En este capítulo, usted aprendió a configurar su sistema para atarlo a una red, cómo cambiar la configuración archiva, y algunos principios de seguridad básicos. Además, usted aprendió lo que es el NFS Sistema de Archivos de Red y cómo hacerlo trabajar en su sistema. Hacer su sistema parte de una red le permite acceder a toda clase de recursos como correo, noticias y websites. Vea Capítulo 13 para la información sobre cómo usar algunos programas de la red básicos.

52


Capitulo 6. El sistema X Window Contenido • xf86config • XF86Setup • Archivos de configuración de sesión • Servidores y gestores de ventana • Seleccionando un escritorio • Exportando Pantallas • Resumen El X window system es el GUI standard para todas las plataformas UNIX, incluyendo Linux. Diferente a Windows y MacOS , en Linux y Unix el GUI esta separado del Kernel del sistema operativo principal. Esto le otorga estabilidad al sistema; si el GUI falla , no cuelga a el sistema entero. El problema con X es que ha sido tradicionalmente difícil de configurar para un sistema. Sin embargo, Slackware 7 introduce un modo de configurar X que utiliza los drivers del framebuffer. Esto significa que usted no tiene que pasar por los procedimientos descritos en la sección llamada xf86config y la sección llamada XF86Setup. Los framebuffer trabajan también en cualquier tarjeta compatible VESA 2.0. Esto significa que cualquier tarjeta de video moderna trabajará bajo X. Sin embargo , el framebuffer es notoriamente mas lento que utilizar una configuración adecuada a su sistema. Si usted decide usar los framebuffer, debe instalar el paquete xxfb.tgz de la serie de software X. Usted tiene que escoger una resolución de consola durante el proceso de instalación. La opción recomendada para X es probablemente la mejor para la mayoría de las personas. Si usted escoge configurar X para su sistema, usted necesitará seguir las instrucciones en la sección llamó xf86config o la sección llamadas XF86Setup. La primera sección explica como usar el xf86config(1), un programa basado en líneas de comando para configurar X. La segunda sección describe XF86Setup(1), una versión gráfica del programa de la configuración.

xf86config El xf86config es uno de los dos programas que pueden usarse para configurar X en su sistema. La idea básica es simple: usted se encontrara con una serie de preguntas y respuestas de opción múltiple. Escoja la respuesta que mejor se adapte a su sistema. Después de proceder a través del programa entero, se escribirá el archivo /etc/XF86Config(5) y usted estará listo usar X. Si usted se equivoca en algún punto, usted tendrá que matar el programa que usa control-c y volver a empezar del principio. Ayuda conocer lo mas posible a su tarjeta de video y monitor antes de comenzar a usar el xf86config. Usted puede conseguir la información sobre su tarjeta de video usando el programa SuperProbe: 53


# SuperProbe

Este le dará una advertencia sobre las posibilidades de colgar su sistema, si esto le asusta salga del programa presionando control-c antes de que terminen los 5 seg. de advertencia. Por otra parte, usted conseguirá alguna información sobre su configuración de video: First video: Super-VGA Chipset: ATI 264GT3 (3D Rage Pro) (Port Probed) Memory: 4096 Kbytes RAMDAC: ATI Mach64 integrated 15/16/24/32-bit DAC w/ clock (with 8-bit wide lookup tables) (programmable for 6/8-bit wide lookup tables) Attached graphics coprocessor: Chipset: ATI Mach64 Memory: 4096 Kbytes

Así es como luce la información sobre una tarjeta de video ATI Rage Pro : Escriba la información sobre su tarjeta, o cámbiese a otro terminal (usando las teclas de función y alt) y ejecute xf86config desde allí. Usted necesitara esta información después. Debe ejecutar xf86config como root, ya que el crea los archivos y hace los links simbólicos en lugares donde solo puede estar root: # xf86config

Una vez que ejecuta xf86config , se le presentara un modo de pantalla completa que le dice lo que va a hacer. Recuerde, hay ninguna manera de regresar a la pantalla anterior si usted comete un error, así que escoja cuidadosamente. Por otra parte, usted podría tener que hacer esto varias veces. Presione enter como se le indica. Mouse protocol(Protocolo del Ratón)

54


Escoja el tipo de ratón que usted tiene de la lista. Actualmente, la mayoría de los ratones son PS/2 o Microsoft Intellimouse. Los ratones más viejos requerirán uno de los otros tipos listado probablemente. Emulate3Buttons( Emulación de 3 botones)

Si su ratón tiene sólo dos botones , usted puede escoger emular un tercer botón. Pulsando el botón de la izquierda y el de la derecha junto se interpretara como el tercer botón del mouse. Muchos programas utilizan el tercer botón, se recomienda habilitarlo. Si usted tiene un mouse de tres botones, esto no hará nada. Mouse device name(Nombre del dispositivo del raton)

55


El valor predeterminado /dev/mouse normalmente estará bien. Sin embargo, si usted tiene su ratón conectado en algún puerto extraño, usted podría necesitar cambiar esto. Para la mayoría de los ratones serie y ratones PS/2, el valor predeterminado está bien. XKEYBOARD extensión

Probablemente querrá usar las extensiones de teclado de X. Si no hace esto su teclas backspace y delete se comportaran de forma extraña. Escogiendo las extensiones estas teclas de su teclado se comportara de forma correcta. Bindings for alt keys Si usted quiere usar caracteres de lenguajes diferentes , tiene que habilitar las bindings de las teclas alt. Si usted sólo va a estar tecleando en inglés, usted no necesita habilitar estas bindings..

56


Horizontal sync range (rango de la sincronización horizontal)

Ésta es la primera de las preguntas relacionadas al monitor. Es importante que usted escoja aquí sabiamente. No escoja un rango que este fuera de las especificaciones de su monitor. Esto no es muy importante en los monitores mas nuevos, ya que ellos no intentan hacer nada cuando esta fuera de sus especificaciones. sin embargo podrían dañarse los monitores mas viejos. Cuando dude, escoja un rango conservador. Tener la documentación de su monitor seria algo muy bueno para responder las siguientes preguntas. Para la mayoría de los monitores nuevos, usted puede escoger 31.5-47.5 o 31.5-57.0 probablemente. Aquellos de ustedes que cuente con un monitor de primera línea pueden escoger un rango mas grande. O , usted puede escribir su propio rango de sincronización horizontal si usted no ve ninguno que encaje con el suyo.

57


Vertical sync range (Rango de sincronizacion Vertical)

Una vez más, usted necesitará saber las especificaciones de su monitorr para contestar esta pregunta. Cuando tenga dudas, vaya por un rango estrecho. Una opción segura probablemente sería 50-90 o 50-100. Si usted no ve uno que se adapte a su monitorr, usted puede escoger escribir su propio rango. Video card database(Base de datos de tarjetas de video)

La próxima larga sección de configuración son los tratos de su tarjeta de video con X. La documentación de su tarjeta y la información de SuperProbe serán útiles ahora. Usted tendrá que buscar a travez de la base de datos de tarjetas, seleccionar su tarjeta y pulsar "y". Usando enter pasara de esta pagina a la siguiente. 58


Hay mas de 800 tarjetas en la base de datos. La columna izquierda contiene un número para cada tarjeta y el nombre de la tarjeta. La columna derecha contiene el chipset para esa tarjeta. Siga usando enter hasta que encuentre su tarjeta de video en la lista. Cuando la consiga escriba el numero y presione enter. Si usted no sabe que qué tipo de tarjeta de video usted tiene, hay unas opciones. Primero, usted podría mira la línea "Chipset" de SuperProbe y buscar la tarjeta que coincide con ese chipset en la base de datos. O, usted podría usar un tipo de tarjeta SVGA genérico. Muchas tarjetas que no tienen su propio servidor son soportadas por el servidor SVGA, ésta pudiera ser una opción segura. Después de escoger una tarjeta, le dará un poco más información. Siguiendo el ejemplo ATI Rage Pro anterior, daría este tipo de información: Your selected card definition: Identifier: ATI Mach64 Chipset: ATI-Mach64 Server: XF86_Mach64 Do NOT probe clocks or use any Clocks line.

A estas alturas, usted debe verificar y asegurarse que usted instaló el paquete del servidor. El servidor de XF86_Mach64 está en el paquete de xma64.tgz. Asegúrese de instalar el paquete del servidor correcto, o X no podrá correr. Which server to run?(¿Ejecutar cual servidor?)

Esta próxima pregunta presenta varios servidores que usted puede usar. Si usted ha seleccionado su tarjeta de video correctamente, usted puede simplemente pulsar enter. Eso le dirá a X que use el servidor que la tarjeta especificó. Por otra parte, usted puede escoger para usar el servidor Mono(XF86_Mono server), el servidor de VGA16(XF86_ VGA16 server), el 59


servidor SVGA(XF86_ SVGA server), o un servidor acelerado. La mejor opción es usar el servidor que la tarjeta especificó. Setting the symbolic link(Configurando el link simbolico)

Seleccione "y" para configurar el link simbólico. Esto creara el enlace al servidor X adecuado. Video memory (Memoria de video)

Seleccione la cantidad de memoria que su tarjeta tiene. SuperProbe puede usarse para dar esta información . Si usted tiene algo diferente a las opciones , usted puede seleccionar "Other" y escribir una cantidad diferente. Asegúrese que usted especifica la cantidad de memoria en kilobytes(Kb).

60


Identification strings Se le pedira insertar tres o mas identification strings. Éstos se aplican a su tarjeta de video. Como con los monitor strings, es mas seguro presionar enter para los tres , a menos que usted quiere nombrar su tarjeta de video. RAMDAC Usted solo necesita seleccionar un RAMDAC si esta usando S3, AGX o servidores W32. SuperProbe le dirá qué tipo de chip RAMDAC está presente en su tarjeta de video. Busque en la lista hasta que encuentre el chip correcto, luego introduzca el numero correspondiente. Si usted no está usando S3, AGX, o servidores de W32, entre " q" para continuar . Clockchip setting

Si su tarjeta tiene un clockchip programable, usted tendra que seleccionar uno de esta próxima lista. Tenga presente que que la mayoría de las tarjetas no tiene un clockchip programable, usted puede estar mas seguro simplemente pulsando enter. SuperProbe debe informar si su tarjeta tiene un clockchip. Clocks line Las próximas pantallas de texto muestran lo que es una clock line. Como él explica, usted no querrá uno en la mayoría de las configuraciones modernas. Le preguntara entonces, si debe buscar un clock(reloj).. También le dirá si la tarjeta necesita ser sondeada o no. En el caso de la tarjeta de ATI, xf86config dira: The card definition says to NOT probe clocks.

Si dice algo así, escoge "n" a la pregunta de buscar en la tarjeta los relojes. Las tarjetas gráficas muy viejas necesitarán ser sondeadas. xf86config le dirán lo que necesita hacer.

61


Video modes

Ahora es tiempo para seleccionar los modos videos que su servidor de X usará. Usted vera cuatro profundidades de color diferentes (color depth) 8bpp ,24bpp y 32bpp. Cada uno tendrá una lista de los modos de video que pueden ejecutarse bajo esa profundidad de color. Cuando usted pone en marcha X, entrará en una profundidad de color predefinida y correrá en la primera resolución listada para esa profundidad de color. Si le gustaría ejecutar X en una resolución diferente, ahora es el momento de hacer eso. Si la clasificación de los modos de video está bien, usted puede seleccionar " OK" y seguir adelante con el proceso de la configuración. Si no, seleccione la profundidad de color que le gustaría cambiar. Por ejemplo, suponga usted se le presentan las siguientes opciones: "640x480" "800x600" "1024x768" "1280x1024" for 8bpp "640x480" "800x600" "1024x768" "1280x1024" for 16bpp "640x480" "800x600" "1024x768" "1280x1024" for 24bpp "640x480" "800x600" "1024x768" for 32bpp

Si desea arrancar X en una resolución diferente , tiene que seleccionar primero una profundidad de color para cambiar. siga las direcciones dadas por xf86config. Tendrá que escribir los números correspondientes a las resoluciones. Si usted quisiera invertir el orden de las resoluciones simplemente, puede colocar lo siguiente Which modes? 5432

Esto también le permite borrar resoluciones. Si su tarjeta de video no puede correr al 1280x1024, no hay ninguna razón para que el haga la prueba. Usted podría quitar esa línea colocando los siguientes dígitos: Which modes? 432

Después de seleccionar los modo a esa profundidad de color, se le preguntará si le gustaría una pantalla virtual más grande que la pantalla física. Una pantalla virtual es una pantalla que es más grande que el monitor real. Cuando usted mueve el ratón en la pantalla virtual, desplazará un pedazo antes de llegar al borde. Esto le permite encajar más ventanas en su monitor. 62


Sin embargo, como usted no podrá ver todo en seguida, la pantalla virtual puede ser un poco molesta. Todavía es una cosa interesante para jugar , por lo que usted podría querer probarlo. Entonces lo envaran de vuelta a los modos de video. Alterando los modos de video para la profundidad 24bpp, quedaría así: "640x480" "800x600" "1024x768" "1280x1024" for 8bpp "640x480" "800x600" "1024x768" "1280x1024" for 16bpp "1280x1024" "1024x768" "800x600" "640x480" for 24bpp "640x480" "800x600" "1024x768" for 32bpp

Continúe alterando los modos videos hasta que usted esté satisfecho con ellos. Cuando usted termine con esta sección seleccione "OK" para continuar. Write the config file A estas alturas, la configuración de X está completa. xf86config preguntara si debe escribir los archivos config en el directorio /etc/XF86Config. Si desea ejecutar el servidor X usted debe contestar "y" a esa pregunta, por que allí es donde el servidor X busca su archivo de configuración. Asumiendo que usted contestó todas las preguntas correctamente y que tiene el paquete X server instalado, usted poder iniciar X así: $ startx

Si usted ha instalado KDE o GNOME, debería iniciar en este momento. Por otra parte, usted podría querer ejecutar el xwmconfig y seleccionar el gestor de ventana que usted quiere usar por defecto. Se explicaran los gerentes de ventana mas adelante en este capitulo. xwmconfig sólo prepara el gestor de ventanas predefinido por el usuario. Si usted tiene varios usuarios en su sistema, cada uno necesitará seleccionar a su propio gestor de ventanas. Hay algunas teclas especiales que podrían ser útiles cuando esta usando X. si usted necesita salirse en algún momento y no puede cerrarlo apropiadamente , esta es la combinación para una salida forzada. control-alt-backspace matara X y lo mandara de vuelta a la linea de comando. Usted puede moverse hacia otra línea de comando mientras esta usando X pulsando control-alt-y la tecla de funcion. parecido a como se hace desde la consola. la sesión de X se localiza en el terminal 7, así que usted puede regresar a X con alt-F7. Finalmente, usted puede cambiar los modos videos mientras X esta corriendo pulsando cantrol-alt-numeric keypad + esto lo llevara hacia una resolución mayor , en cambio si pulsa las teclas control-alt-numeric keypad - lo llevara hacia la próxima resolución menor.

XF86Setup La otra manera de configurar X es usar XF86Setup, un programa de configuración grafico que viene como parte del paquete xset.tgz. Usted también necesitará instalar el paquete xvg16.tgz. Para ejecutar XF86Setup, entre como root y escriba: # XF86Setup

Si usted ya tiene el archivo /etc/XF86Setup(porque usted ya había configurado X antes), se le preguntara si quiere usar los valores existentes en XF86Config como predeterminados. Después, cambiara al modo grafico.

63


Figura 6-1. La pantalla inicial del XF86Setup.

XF86Setup es muy similar al xf86config. Hace el mismo tipo de preguntas, pero las presenta en un entorno grafico. Si usted esta preguntándose que significa cada pregunta, refiérase a la sección anterior para información. XF86Setup tiene mucha ayuda también, por lo que usted no debe tener dificultad en ejecutarlo.

Archivos de Configuración de sesión xinitrc and ~/.xinitrc xinit(1) es el programa que realmente arranca a X; es llamado por startx(1), por lo que usted no lo pudo haber notado (y probablemente no necesita saberlo). Este archivo de configuración, sin embargo , determina que programa se ejecuta(incluyendo sobre todo el gestor de ventana) cuando inicia X. xinit chequea primero su directorio home en busca del archivo .xinitrc . Si el archivo se encuentra, se ejecuta, si no utiliza el archivo predeterminado ubicado en /var/X11R6/lib/xinit/xinitrc. Este es un ejemplo simple de un archivo .xinit: #!/bin/sh # $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $ 64


userresources=$HOME/.Xresources usermodmap=$HOME/.Xmodmap sysresources=/usr/X11R6/lib/X11/xinit/.Xresources sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap # merge in defaults and keymaps if [ -f $sysresources ]; then xrdb -merge $sysresources fi if [ -f $sysmodmap ]; then xmodmap $sysmodmap fi if [ -f $userresources ]; then xrdb -merge $userresources fi if [ -f $usermodmap ]; then xmodmap $usermodmap fi # start some nice programs twm & xclock -geometry 50x50-1+1 & xterm -geometry 80x50+494+51 & xterm -geometry 80x20+494-0 & exec xterm -geometry 80x66+0+0 -name login

Todos esos "if" están allí para unir varios tipos de configuración desde otros archivos. Bien nosotros explicaremos .Xresources ahora, pero .Xmodmap nosotros vamos a dejarlo así. La parte interesante de el archivo es el fin con que se ejecutan , los programas. Esta sesión de X empezara con el gestor de ventanas twm(1) , un reloj, y tres terminales. Fíjese en exec antes del ultimo xterm. Lo que esto hace es remplazar la shell que esta corriendo actualmente(la que esta ejecutando el script xinitrc(1)) con el comando xterm(1). Cuando el usuario cierre ese xterm, la sesión X terminara. Para personalizar su inicio de X, copie el valor predeterminado desde /var/X11R6/lib/xinit a ~/.xinitrc y editelo, remplzando todas aquellas líneas del programa con las líneas que usted quiera. El fin de mío simplemente es: # Start the window manager: exec startkde

Note that there are several xinitrc.* files in /var/X11R6/lib/xinit that correspond to various window managers and GUIs. You can use any of those, if you like.

.Xresources y .Xdefaults Muchos progrmas en X utilizan un sistema llamado X Resource Database (Base de Datos de Recursos) para encontrar las preferencias del usuario (fuentes , colores ,etc.) Esta base de datos se mantiene a travez del programa xrdb(1) que usted tal vez no necesite ejecutar nunca. En Slackware se ejecuta desde el xinitrc. El archivo xinitrc le dice a xrdb que ~ /. Xresources es la fuente para las opciones. xrdb también cargara ~ /. Xdefaults , por lo tanto 65


cualquiera de los nombres funcionara. Un archivo .Xresources pequeño se parece a esto: xterm*background: black xterm*foreground: gray xterm*scrollBar: true xterm*font: -*-lucidatypewriter-*-r-*-*-15-*-*-*-*-*-*-*

Estas cuatro líneas especifican la información de configuración para el programa xterm. Un recurso de X se lista de esta forma: program*option: setting/value

Asi que, la muestra de .Xresources anterior debe ser autoexplicativa. No se enrede por el contenido de la linea "font" ; las fuentes siempre se nombran de esta forma en X.

Servidores y Gestores de Ventana El X Window System fue diseñado originalmente para trabajar a través de una Red. Un servidor grande seria realmente el que correría el programa X, pero se desplegaría en las otras maquinas clientes en cualquier otro lugar de la red. La habilidad de desplegar los programas remotamente puede ser una gran ventaja. La desventaja principal de este concepto de la gestión a través de redes es ;que es menos seguro que ejecutar la aplicación desde la maquina local , y tomaría un ancho de banda muy grande para hacerlo. Esto se discute después en la sección llamada Exportando pantallas. Incluso cuando usted esta ejecutando X en su propia máquina, usted todavía está basándose en el modelo cliente-servidor. El servidor es la tarjeta de video en la porción especifica. Cuando usted configuró X y le dijo que qué tipo de tarjeta de video usted tenía, estaba diciéndole qué programa servidor usar. La porción del cliente es todos los otros programas que usted ejecuta bajo X. Un cliente especial, llamado gestor de ventanas, es responsable de la apariencia de su sesión X . Los gestores de Ventanas se explican con detalle mas adelante. El trabajo de un gestor de ventanas es dibujar ventanas con programas dentro de la pantalla, así como ocuparse del ratón y del teclado. Los primeros gestores de ventanas hicieron simplemente esto y nada mas. Los gestores de ventanas actuales son programas mucho más complicados y son personalizables de casi cualquier manera imaginable. Ellos tienen toda clase de opciones que permiten a su escritorio lucir diferente al de nadie más. Contar con varios gestores de ventanas realmente separa a Linux de Windows en el escritorio. Bajo Windows, usted solo tiene un sistema de ventanas básico. Bajo Linux, usted puede ejecutar uno de muchos gestores de ventanas diferentes, cada uno con un look diferente y rasgos diferentes. Algunas personas llaman a esto una debilidad, porque no hay ningún look consistente. Sin embargo, la mayoría de los usuarios de Linux llaman a esto una ventaja porque usted puede configurar su sistema de la forma que usted quiera.

66


Seleccionado un Escritorio Durante años, Unix se usó casi exclusivamente como sistema operativo para servidores, con la excepción de puestos de trabajo profesionales de alta potencia. Era probable que sólo los técnicamente inclinados usáramos un Unix-como sistema operativo, y la interfaz de usuario es reflejo de este hecho. El GUIs(Interfaz grafica de usuario) tendía a ser solo esqueletos, diseñados para ejecutar aplicaciones necesariamente graficas como los programas CAD y simuladores de imágenes. La mayoría de los archivos y el manejo del sistema se dirigían en la línea de comando. Varios vendedores(Sun Microsystems ,Silicon Graphics , etc) estaban vendiendo instalaciones de workstations en un intento por unificar el look , pero la variedad de herramientas GUI usadas por los diseñadores llevo a la disolución de la uniformidad de escritorios. La barra de desplazamiento podía no lucir igual en dos programas diferentes. Los menús podían aparecer en lugares diferentes. Programas que tenían botones y checkboxs distintas. Los colores eran codificados de forma diferente en cada barra de herramientas. Mientras los usuarios fueran principalmente profesionales técnicos, a ninguno de estos les importaba mucho. Con la salida de free Unix como sistema operativo y el creciente numero de aplicaciones graficas, X ha ganado una gran cantidad de usuarios. La mayoría de los usuarios, claro, está acostumbrado al look proporcionado por Windows de Microsoft o el MacOS de Apple; la falta de tal consistencia en las aplicaciones basadas en X se volvió una barrera para lograr una mayor aceptación. Como respuesta a esto, se han emprendido dos proyectos Open Source: The K Desktop Enviroment(El ambiente de escritorio K) o KDE, y el GNU Network Object Model Enviroment, conocido como GNOME. Cada uno tiene una variedad ancha de aplicaciones, desde taskbars y administradores de archivos hasta juegos y aplicaciones de Oficina ,escrito con las mismas herramientas GUI y herméticamente integrado para proporcionar un escritorio consistente y uniforme. Las diferencias en KDE y GNOME son generalmente bastante sutiles. Ellos lucen diferentes el uno del otro, porque cada uno utiliza un juego de herramientas GUI diferente. KDE se basa en la tecnología QT de Troll Tech AS, mientras que GNOME usa GTK, un kit de herramientas diseñado originalmente para el GNU Image Manipulation Program (o GIMP). Como proyectos separados, KDE y GNOME tienen cada uno sus propios diseñadores y programadores , con diferentes filosofías y etilos de programación. Sin embargo , el resultado en cada caso, es un ambiente de escritorio herméticamente integrado y una colección de aplicaciones. La funcionalidad, utilidad, y hermosura pura tanto de KDE y su rival GNOME es algo que no esta disponible en ningún otro sistema operativo. La mejor parte, sin embargo , es que estos escritorios son gratis. Esto significa usted puede tener cualquiera o ambos (sí, al mismo tiempo). La opción es suya. Además del GNOME y KDE, Slackware incluye una colección grande de gestores de ventana. Algunos están diseñados para emular otros sistemas operativos, otros para la personalización , otros para la velocidad. Hay una 67


variedad realmente. Claro usted puede instalar tantos como usted quiera, juegue con todos ellos, y decida cual es el que le gusta mas. Para hacer la selección del escritorio fácil, Slackware incluye también un programa llamado xwmconfig que puede usarse para seleccionar un escritorio o gestor de ventana. Se ejecuta de esta forma: $ xwmconfig

Figura 6-2. el program xwmconfig de Slackware.

Usted encontrara una lista de todos los escritorios y gestores de ventana instalados. Simplemente seleccione el que usted quiere de la lista. Cada usuario en su sistema necesitará ejecutar este programa, ya que los usuarios diferentes pueden usar escritorios diferentes, y no todos querrán usar el valor predeterminado que usted seleccionó en la instalación. Entonces solo ejecute X, y esta listo: $ startx

Exportando Pantallas Como mencionamos anteriormente , es posible ejecutar X en una computadora y exporta la pantalla a otra. Esto requiere de un ancho de banda intenso , por lo que usted no querrá hacer esto mediante una conexión por modem o entre distancias muy largas. Adicionalmente hay consideraciones de seguridad: exportar una pantalla no es algo muy seguro de hacer, ya que usted estará permitiendo a toda la red mirar lo que usted esta haciendo. Todavía, puede ser muy útil en una red local. Una cosa importante para notar aquí es el uso de las palabras "cliente" y "servidor". Cuando exporta una pantalla , usted puede confundirse acerca de lo que es un cliente y lo que es un servidor. Nosotros nos referimos a la máquina que realmente ejecuta el programa X y envía la información de la pantalla como "servidor". La máquina que usted usa para mostrar el programa remoto se llama " cliente." Cuando planeamos el diseño de X , esto se utiliza. El programa que muestra las cosas se llama "servidor", mientras que donde se ejecutan los programas se llama "cliente". No es muy terrible confundirse , pero téngalo en cuenta. 68


Para este ejemplo, nosotros estaremos haciendo uso de dos computadoras: golf que es un servidor bastante poderoso que esta debajo de un escritorio en un cuarto atestado de cosas. Tiene mucha RAM y un buen procesador. Además tiene muchos programas X , pero ningún monitor. En el otro lado del cuarto se encuentra couch, una maquina vieja con poco RAM y un disco pequeño. Es demasiado débil para ejecutar programas de recursos intensos como el Netsacpe. couch tiene dos ventajas, a pesar de todo: tiene monitor , y esta justo al lado de la cama por lo que usted no tiene que levantarse para usarla ni siquiera. Con suerte, usted podría usar Netsacpe sin bajarse de la cama. Exportar es la respuesta. Primero, entre en couch y ejecute X. Luego ejecute su terminal preferido (xterm , rxvt ,eterm, o cualquier otro.) El primer paso para mostrar programas X de forma remota es configurar la maquina cliente para que permita que otra maquinas se muestren. Esta usa el programa xhost para controlar el acceso, Si usted esta dentro de una red interna segura, probablemente no le importe quien puede mostrar programas en su computadora. En este caso, usted permitirá simplemente que cualquier maquina de red se muestre: couch$ xhost + access control disabled, clients can connect from any host

Por otro lado, usted podría querer hacer esto usando máquinas que están en una red insegura (Internet, una red de la universidad, o cualquiera que no sea controlada por usted). Usted no quiere conectar a nadie simplemente. xhost le permite ser selectivo sobre quién puede desplegar: couch$ xhost + golf.foc golf.foc being added to access control list

Ahora, sólo golf.foc (el servidor mencionado antes) puede desplegar programas en couch. Usted puede ver quién tiene acceso para desplegar los programas ejecutando xhost sin los argumentos: couch$ xhost access control enabled, only authorized clients can connect INET:golf.foc INET:localhost INET:couch.foc LOCAL:

Esto es todo lo que tiene que hacer para terminar de configurar el cliente: The next step is to set up the server so that it knows to display programs somewhere other than the monitor. Desde que el servidor no tiene monitor (y por consiguiente no puede ejecutar X),necesitará saber dónde mostrarse. Prepara el servidor no es muy difícil. Después de conectarse, usted necesita modificar la variable $DISPLAY. Por defecto, probablemente no esta configurara a nadie. Usted necesita configurar la variable $DISPLAY con el valor del host remoto, mas el numero que representa la sesión de X que 69


quiere mostrar. Usted casi siempre tendrá una sola sesión de X ejecutándose , por lo que tratar con esa variable no le traerá problemas. Así es como se debe configurar la variable $DISPLAY que en nuestro ejemplo usa Bash como shell. Otras shells usaran sintaxis diferentes, pero el valor debe ser el mismo. golf$ export DISPLAY=couch.foc:0.0

Esto es todo lo que tiene que preparar en la parte del servidor. Ahora usted solo necesita estar conectado en el servidor y ejecutar los programas X desde allí. Todo lo que sale por pantalla en el programa se enviara por red a la maquina del cliente aun cuando se esta ejecutando el programa en otra computadora en la otra habitación. golf$ netscape &

Esto ejecutaría netscape en el servidor, pero desde que la variable DISPLAY fue configurada para couch todo es mostrado allí. Usted no tiene que levantarse para ejecutar esos grandes programas X en su equipo viejo. Una nota importante sobre esto: la máquina servidor tendrá que tener todas las bibliotecas de X y otros archivos de apoyo necesitados para ejecutar el programa. Sin embargo, usted no necesitará un X server o un archivo /etc/XF86Config , después de que nada se este mostrando en el servidor. Mas adelante , usted podría querer desactivar la exportación quitando al servidor de la lista de control de acceso: couch$ xhost - golf.foc golf.foc being removed from access control list couch$

Usted puede ver que esta es una gran manera de compartir recursos informaticos. Pero tenga cuidado, usted puede ser el host de muchos programas X para muchas computadoras remotas sin siquiera saberlo.

Resumen En este capítulo, usted aprendió a configurar el X Window System utilizando xf86config y XF86Setup. Usted también debe saber lo que es un ambiente de escritorio y un gestor de ventanas, y cómo cambiar entre las varias opciones. Usted debe poder exportar su sesión de X a otro computador. A estas alturas, usted debe poner en marcha un ambiente gráfico.

70


Chapitulo 7. Booteando Contenido • LILO • LOADLIN • Booteo Dual • Resumen El proceso de arranque de su sistema Linux a veces puede ser fácil y a veces puede ser difícil. Muchos usuarios instalan Slackware en su computadora y ése es. Ellos apenas lo encienden y está listo para usar. Otros, sin embargo, deben usar otro sistema operativo para ciertas tareas, por lo que ellos necesitan ambos sistemas operativos disponibles en la máquina. Esta sección explica como usar LILO y Loadlin , los dos booters(Iniciadores) incluidos en Slackware. También explica algunos tipos de booteo dual típicos y como usted puede configurarlos.

LILO El Cargador de Linux, o LILO(Linux Loader), es el booter más popular en los sistemas Linux. Es realmente configurable y puede usarse para arrancar otros sistemas operativos fácilmente. Slackware Linux viene con una utilidad de configuración basada en menús llamada liloconfig. Este programa se ejecuta durante el proceso de instalación, pero usted puede ejecutarlo después escribiendo liloconfig en el prompt. LILO lee su configuración del archivo /etc/lilo.conf(5). No lo lee cada vez que inicia, pero en cambio lo lee cada vez que se instala LILO. LILO debe reinstalarse en el sector boot cada vez que usted haga un cambio en la configuración. liloconfig le ayudarán a construir el archivo de configuración para que usted pueda instalar LILO en su sistema. Si usted prefiere revisar /etc/lilo.conf a mano, simplemente reinstale LILO escribiendo sbin/lilo en el prompt. Cuando usted ejecuta liloconfig , aparecerá primero: Figura 7-1. La pantalla inicial del liloconfig.

71


Si ésta es su primera configurando LILO, usted debe escoger "simple." Por otro lado, usted encontrara que "expert" es mas rapido si usted esta familiarizado con Linux y LILO. Seleccionando "simple" empezará la configuración de LILO. Si el kernel frame buffer support esta compilado en su sitema, liloconfig le preguntara que resolución de video desea utilizar. Esta es la misma resolución que utiliza el XFree86 frame buffer server. Si usted no quiere ejecutar la consola en un modo de video especial, seleccione standard 80x25 que esta utilizando. Figura 7-2. Liloconfig preguntando que modo de video usara el framebuffer.

La próxima parte de la configuración de LILO es seleccionar en que parte desea usted instalarlo. Éste probablemente es el paso más importante. La lista que sigue de explica los lugares de instalación: Root Esta opción instala LILO al principio de su partición raíz de Linux. Ésta es la opción más segura si usted tiene otros sistemas operativos en su computadora. Asegura que cualquier otro booters no se sobrescribe. La desventaja es que LILO solo arrancara desde allí si su unidad Linux es la primera unidad en su sistema. Floppy Este método está aun más seguro que el anterior. Crea un disco de inicio que usted puede usar para arrancar su sistema Linux. Esto guarda el booter completamente fuera del disco duro, por lo que usted sólo podrá arrancar desde el Disquete cuando quiera usar Slackware. MBR Usted querrá usar este método si Slackware es el único sistema operativo en su computadora, o si usted estará usando LILO para escoger entre los sistemas operativos múltiples en su computadora. 72


Esta opción eliminara cualquier otro booter instalado en MBR Después de seleccionar la ubicación de la instalación, liloconfig escribirá el archivo de configuración e instalara LILO. Eso es todo. Si usted selecciona el modo "expert" usted recibirá un menú especial. Este menú le permite escarbar en el archivo /etc/lilo.conf , agregar otros sistemas operativos a su menú de booteo , y configura a LILO para "saltar" parámetros especiales del Kernel en el momento de arrancar. Así luce el menú experto: Figura 7-3. liloconfig modo“expert”.

Cualquiera que sea la configuración de su sistema, configurar un boot loader es fácil. liloconfig hace que la configuración sea muy sencilla. Sin embargo, hay casos en los que LILO simplemente no funcionara. Hay otras opciones afortunadamente.

LOADLIN La otra de arranque que viene con Slackware Linux es LOADLIN. LOADLIN es un ejecutable de DOS que puede ser usado para arrancar Linux desde un sistemas DOS corriente. Requiere que el Kernel de Linux este instalado en esa partición DOS para que LOADLIN pueda cargarlo e iniciar el sistema apropiadamente. Durante el proceso de la instalación, LOADLIN se copiará al directorio de la home de root como un archivo .ZIP. No hay ningún proceso de configuración automático para LOADLIN. Usted necesitará copiar el Kernel de Linux (el /vmlinuz) y el archivo LOADLIN desde el directorio home de root a la particion de DOS. LOADLIN es útil si usted quiere hacer un menú de arranque en su partición DOS. Un menú podría agregarse a su archivo AUTOEXEC.BAT que le permitiría escoger entre Linux o DOS. La opción Linux ejecutaría LOADLIN, 73


iniciando su sistema Slackware. Este archivo AUTOEXEC.BAT bajo Windows 95 proporcionara un boot menu decente :

@ECHO OFF SET PROMPT=$P$G SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;C:\ CLS ECHO Por favor seleccione sus sitema operativo: ECHO. ECHO [1] Slackware Linux ECHO [2] Windows 95 ECHO. CHOICE /C:12 "Selecion? -> " IF ERRORLEVEL 2 GOTO WIN IF ERRORLEVEL 1 GOTO LINUX :WIN CLS ECHO Iniciando Windows 95... WIN GOTO END :LINUX ECHO Iniciando Slackware Linux... CD \LINUX LOADLIN C:\LINUX\VMLINUZ ROOT=<root partition device> RO GOTO END :END

Usted tendrá que especificar su partición raíz como un dispositivo linux, por ejemplo /dev/hda2 o algo así. Usted siempre puede usar LOADLIN a la línea de comando. Usted lo usa simplemente de la misma manera como está anteriormente en el ejemplo. La documentación de LOADLIN viene con muchos ejemplos sobre cómo usarlo.

Booteo Dual Muchos usuarios prepararon sus computadoras para iniciar Slackware Linux y otro sistema operativo. Nosotros estaremos explicando varios ejemplos típicos de booteo dual, en caso de que usted tenga problemas configurando su sistema.

Windows 9x/DOS Configurar una computadora para que arranque con Windos 9x y Linux es probablemente el caso de booteo dual mas común. Hay numerosas maneras de configurar el inicio, pero esta sección cubrirá dos. A menudo en el momento de configurar un sistema de booteo dual, la persona inventará un plan perfecto para dónde debe ir todo pero se desordena en el orden de la instalación. Es muy importante entender que los sistemas operativos necesitan ser instalados en un cierto orden para que funcione un booteo dual. Linux siempre ofrece un control mayor en eso, si pasa algo, se 74


escribe en el Master Boot Record. Por consiguiente, siempre es aconsejable instalar Linux en último lugar. Windows debe instalarse primero, ya que siempre escribe su booter en el Master Boot Record.

Usando LILO La mayoría de las personas querrá usar LILO para escoger entre Linux y Windows. Como se ha dicho anteriormente, usted debe instalar Windows primero y después Linux. Digamos que usted tiene un disco duro 4.7GB IDE como única unidad en su sistema. También digamos que usted quiere dar la mitad de ese espacio a Windows y la mitad de ese espacio a Linux. Esto presentará un problema al intentar iniciar con Linux. Yo no sé la geometría específica del disco, pero las oportunidades son que pasando los 23.5GB será pasando del cilindro 1024th también. Un diseño bueno para esta unidad sería:

1GB 1GB 22.5 22.5

Windows boot (C:) Linux root (/) Windows misc (D:) Linux /usr (/usr)

Usted también querría poner una cantidad adecuada de espacio para una partición swap Linux . La regla no escrita es usar el doble de la cantidad de RAM que usted tiene como espacio en disco. Un sistema con 64MB tendría 128MB de swap, y así sucesivamente. Con su particiones listas, usted debe proceder a instalar Windows. Después de eso configúrelo y a trabajar, usted debe proceder a instalar Windows. La instalación de LILO necesita atención especial. Usted necesitara seleccionar el modo "expert" para instalar LILO. Empiece una nueva configuración de LILO. Usted querrá instalarlo para Dominar el Master Boot Record (MBR) para que pueda usarse para escoger entre los dos sistemas operativos. Del menú, agregue su partición de Linux y agregue su partición de Windows (o DOS) . Una vez completado esto, usted puede instalar LILO. Reinicie la computadora. LILO debe cargar y debe esperar por la selección del usuario. Usted puede usar Alt para que aparezca el prompt boot:. Teclee el nombre del sistema operativo que usted quiere iniciar (estos nombres serán seleccionados cuando usted instale LILO). Si usted se olvidara del nombre, Presione Tab para conseguir una lista de sistemas operativos que usted puede iniciar. Usted incluso puede configurar más a LILO editando el archivo /etc/lilo.conf en su partición de Linux. Usted puede configurar para que despliegue un menú de texto, y siempre presentar el prompt. Por ejemplo, si yo quisiera que mi LILO desplegara esto: System Boot Menu ================ 1 - Linux 2 - Windows 75


LILO boot:

Mi archivo /etc/lilo.conf deberia lucir asi: # LILO configuration file boot = /dev/hda vga = normal message = /boot/message image = /vmlinuz root = /dev/hda2 label = 1 read-only other = /dev/hda1 label = 2 table = /dev/hda

Y mi archivo /boot/message debería ser así: System Boot Menu ================ 1 - Linux 2 - Windows

LILO es un bootloader realmente configurable. Simplemente no se limita a iniciar Linux o DOS. Puede iniciar lo que sea. Las paginas del manual de el lilo(8), y lilo.conf(5) ,proporcionan una información mas detallada ¿LILO no le funciona? Hay casos dónde LILO simplemente no trabajará en una máquina particular. Hay otra manera afortunadamente, para iniciar Linux y Windows.

Usando LOADLIN Este método puede usarse si LILO no trabaja en su sistema, o si usted no quiere configurar LILO. Este método también es ideal para el usuario que reinstala a menudo Windows. Cada tiempo usted reinstala Windows, borrará el Master Boot Record, destruyendo cualquier instalación de LILO . Con LOADLIN, usted no está sujeto a ese problema. La desventaja más grande es que usted puede usar LOADLIN solamente para iniciar Linux. Con LOADLIN, usted puede instalar los sistemas operativos en cualquier orden deseado. Tenga el cuidado acerca de instalar las cosas al Master Boot Resocrdl, usted no quierra hacer eso. LOADLIN confia en que la particion de Windows es Booteable. Así que durante la instalación de Slackware, asegúrese de saltar la configuracion de LILO. Después de instalar los sistemas operativos, copie el lodlinX.zip (donde" X" es el número de la versión, por ejemplo" 16a") desde el home de root hasta su particion de Windows. También copie su imagen kernel a la partición de 76


Windows. Usted necesitará estar en Linux para trabajar. Este ejemplo muestra cómo hacer esto: # mkdir /win # mount -t vfat /dev/hda1 /win # mkdir /win/linux # cd /root # cp loadlin* /win/linux # cp /vmlinuz /win/linux # cd /win/linuz # unzip loadlin16a.zip

Eso creará un directorio C:\LINUX en su partición de Windows (asumiéndolo que es /dev/hda1) y copia encima el material necesario para LOADLIN. Después de hacer esto, usted necesitará iniciar en Windows para instalar el menú de booteo. Una vez en Windows, entre en un prompt de DOS. Primero, nosotros necesitamos asegurarnos que el sistema no esta configurado para iniciar con la interfaz grafica: C:\>cd \ C:\>attrib -r -a -s -h MSDOS.SYS C:\>edit MSDOS.SYS

Agregue esta línea al archivo: BootGUI=0

Now save the file and exit the editor. Now edit C:\AUTOEXEC.BAT so we can add a boot menu. The following provides an example of what a boot menu block in AUTOEXEC.BAT would look like: cls echo System Boot Menu echo. echo 1 - Linux echo 2 - Windows echo. choice /c:12 "Selection? -> " if errorlevel 2 goto WIN if errorlevel 1 goto LINUX :LINUX cls echo "Starting Linux..." cd \linux loadlin c:\linux\vmlinuz root=/dev/hda2 ro goto END :WIN cls echo "Starting Windows..." win goto END 77


:END

La línea importante es la que ejecuta a LOADLIN. Nosotros le decimos cual Kernel iniciar, la partición raíz de Linux y que queremos que se monto como solo-lectura al principio. Las herramientas para estos dos métodos se incluyen en Slackware Linux. Hay numerosos booters en el mercado, pero éstos deben trabajar para más configuraciones de inicio dual.

Windows NT Esta es la segunda forma de inicio dual mas usada. WINDOWS NT presenta mas problemas que el booteo dual entre Windows 9x y Linux. El principal problema es que se sobrescribe el Master Boot Record con LILO , NT no iniciara mas nunca. Por consiguiente, nosotros debemos usar al Cargador de OS(OS Loader) que viene con WINDOWS NT. Los siguientes pasos le indican como montar un booteo dual entre Windows NT y Linux. 1. Instale WINDOWS NT 2. Instale Linux, asegúrese de instalar LILO en el superblock de la partición de Linux. 3. Consiga los primeros 512 bytes de la partición raíz de Linux y guárdelos en la partición de Windows NT. 4. Revise C:\BOOT.INI bajo WINDOWS NT para agregar una opción de Linux Instalar Windows NT debe ser tan fácil como instalar Linux. Después de eso la cosa se pone un poquito mas difícil. Agarrar los primeros 512 bytes de la partición de Linux es más fácil de lo que parece. Usted necesitará estar en Linux para lograr esto. Asumiendo que su partición de Linux es /dev/hda2, emita esta orden: # dd if=/dev/hda2 of=/tmp/bootsect.lnx bs=1 count=512

Esos son. Ahora usted necesita copiar bootsect.lnx a la partición de WINDOWS NT. Aquí es donde nosotros nos encontramos con otro problema. Linux no tiene el soporte para en escribir el sistema de archivos NTFS. Si usted instalo Windows NT y formateo su disco duro como NTFS, usted necesita copiar este archivo a un disquete y leerlo bajo Windows NT. Si usted estructurara la unidad de WINDOWS NT como FAT, usted puede montarlo simplemente bajo Linux y puede copiar el archivo . De cualquier forma usted necesita tener el archivo /tmp/bootset.inx de Linux en C:\BOOTSECT.LNX en la unidad de Windows NT. El ultimo paso será agregar una opción al menú de booteo de Windows NT. Bajo Windows NT abra un prompt de comandos. C:\WINNT>cd \ C:\>attrib -r -a -s -h boot.ini C:\>edit boot.ini 78


Agregue esta línea al final del archivo: C:\bootsect.lnx="Slackware Linux"

Guarde los cambios y cierre el editor. Cuando usted reinicie WINDOWS NT, usted tendrá una opción de Linux en el menú. Escogiéndola se iniciara Linux.

Linux Sí, las personas realmente hacen esto. Este es la forma mas fácil de realizar un booteo dual. Usted simplemente puede usar LILO y agregar mas opciones en el archivo /etc/lilo.conf. Y eso es todo.

Resumen Este capitulo mostró como iniciar su sistema usando LILO o Loadlin . También le dijimos como iniciar entre Linux y otros sistemas operativos. Usted puede configurar ahora su propio método para iniciar su sistema operativo y un booteo dual para escoger otro si usted lo necesita.

79


IV. Usando Slackware Linux Contenido 8. El Shell 9. Estructura del sistema de archivos (filesystem) 10. Manejando Archivos y Directorios 11. Control de Procesos 12. Administración esencial del sistema 13. Comandos Básicos de Red 14. Guardando Archivos 15. vi 16. Manejo de paquetes de Slackware 17. ZipSlack y BigSlack

Capitulo 8. El Shell Contenido • Usuarios • La linea de comandos • The Bourne Again Shell (bash) • Terminales Virtulaes • Resumen En un entorno grafico, la interfase es proporcionada por un programa que crea las ventanas, barras de desplazamiento , menús ,etc. En un entorno de líneas de comando, la interfaz del usuario es proporcionada por el shell que interpreta los comandos y generalmente haces las cosas útiles. Inmediatamente después de iniciar sesión (que se explica en este capitulo), los usuarios entran en un shell y se les permite hacer su negocio. Este capítulo sirve como una introducción al shell, y el shell mas común entre los usuarios de Linux-El Bourne Again Shell (bash). Para información más detallada sobre cualquier cosa en este capítulo, revise la pagina del manual bash(1).

80


Usuarios Iniciando sesión Así que usted a iniciado su maquina, y esta mirando algo como esto: Welcome to Linux 2.2.14 darkstar login:

Hmm.. nadie dijo algo sobre un inicio de sesión. ¿Y que es darkstar? No se preocupe; usted probablemente disparó accidentalmente un comm-link del hyperspacio a la luna artificial del Imperio. (Disculpeme el protocolo de comm-link del hiperespacio no es soportado actualmente por el Kernel de Linux.) No, darkstar es simplemente el nombre de una de nuestras computadoras, y su nombre se establece como el valor predeterminado. Si usted especifico un nombre para su computadora durante la instalación, usted debe verlo en lugar de darkstar. En cuanto al inicio de sesión... Si esta es su primera vez, usted tiene que entrar como root. Se le pedirá introducir la contraseña, si usted coloco una durante el proceso de instalación, eso es lo que le esta pidiendo. Si no, sólo presione enter. ¡Eso es! ¡usted esta adentro!

Root: El Superususario ¿De acuerdo, que o quien es "root"? ¿Y qué está haciendo con una cuenta en su sistema? Bien, en el mundo de Unix y los sistemas operativos similares (como Linux), hay usuarios. Nosotros explicaremos esto con detalle mas adelante, pero lo que nos interesa saber aquí ahora es que root es el usuario sobre todos los usuarios ; root es todopoderoso y todo-inteligente, y nadie desobedece a root. Simplemente no se permite. Root es lo que nosotros llamamos un "Superusuario", y eso justamente es lo que es. Y lo mejor de todo, es que root es usted. ¿Excelente, ha? Si usted no esta seguro; si, eso es excelente. El asunto es, sin embargo, que a root se le permite dañar cosas en el sistema. Usted puede pasar al capitulo 12 ver como agregar a un usuario; entonces iniciar sesión con el y trabajar desde allí. La sabiduría tradicional dice que es mejor volverse superusuario solo cuando sea completamente necesario, para minimizar la posibilidad de dañar algo accidentalmente. A propósito, si usted decide que usted quiere ser root mientras usted esta adentro como alguien más, no hay ningún problema. Simplemente use el comando su(1). Le pedirá la contraseña de root y entonces comenzara a ser root hasta que usted se salga o coloque logout. Usted también puede volverse cualquier otro usuario usando el comando su, con tal de que usted conozca la contraseña del usuario: su logan, por ejemplo , lo haría convertirse en mi.

81


La línea de comandos Ejecutando Programas ¿Recuerda qué casi todo en Linux es un archivo? Bien, eso va por los programas, también. Cada orden que usted ejecuta (que no esta incluida en el shell) reside en algún archivo en alguna parte. Usted ejecuta un programa simplemente especificando la ruta completa hasta el. ¿Por ejemplo, recuerda el comando su de la sección anterior? Bien, realmente el esta actualmente en el directorio /bin/su. ¿Así que por que, entonces, solo con escribir su funciona? Después de todo, usted no dijo que era en el directorio /bin. ¿Pudo haber estado fácilmente en el directorio /usr/local/share , verdad? ¿Cómo supo? La respuesta a eso queda en la ruta de entorno variable; la mayoría de los shell ya conoce la ruta o algo parecido a la ruta. Contiene básicamente una lista de directorios para buscar los programas que usted intenta ejecutar. Así que cuando usted ejecuto el comando su , el shell busco a través de su lista de directorios, verificando cada archivo ejecutable llamado su que podría ejecutar: el primero que consiguió lo ejecuto. Esto pasa siempre que usted ejecuta un programa sin especificar la ruta completa hasta el; si usted se consigue con un error tipo Command not found, esto significa que el programa que usted intenta ejecutar no esta en su ruta. (Claro, esto seria verdad solamente si el programa no existe en lo absoluto...) Nosotros explicaremos la variable de entrono con mas profundidad en la sección llamada The Bourne Again Shell(bash). Recuerde también que "." es la ruta corta para" el directorio en que yo estoy”, por lo que si usted esta en el directorio /bin ./su funcionaria como una ruta explicita completa.

Comodines Casi todos los shell reconocen ciertos caracteres como sustitutos o abreviaciones que significan "algo va aquí". Esos caracteres se conocen como "wildcards"(comodines); los mas comunes son * y ?. Por convención ? normalmente coincide con un solo carácter. Por ejemplo, suponga usted que está en un directorio con tres archivos: ex1.txt, ex2.txt, y ex3.txt. Usted quiere copiar todos esos archivos (usando la orden cp que nosotros explicaremos en el Capítulo 10) a otro directorio, digamos /tmp. Bien, teclear cp ex1.txt ex2.txt ex3.txt /tmp es completamente demasiado trabajo. Es mucho más fácil de teclear cp ex?.txt /tmp el símbolo ? coincidirá con los caracteres " 1"," 2", y" 3", y cada uno a su vez sera sustituido por el. ¿Qué es lo que dices? ¿Eso es todavía demasiado trabajo? Usted tiene razón. Está espantando; nosotros tenemos leyes sociales para protegernos de esa clase de cosas. Afortunadamente, nosotros también tenemos *. Como ya se mencionó, * coincide con "cualquier número de caracteres", incluyendo 0. Si esos tres archivos fueran los únicos en el directorio, nosotros podríamos decir simplemente cp * /tmp y eso seria todo. Suponga, sin embargo, que hay también un archivo llamado example.txt y uno llamado hejaz.txt. Nosotros 82


queremos copiar example.txt pero no hejaz.txt; cp example? Hará eso por nosotros.

Input/Output Redireccionamiento y tuberias $ ps > blargh

¿Usted sabe que es eso? Estoy ejecutando ps para saber que procesos se están ejecutando; el comando ps se cubre en el Capitulo 11. La parte divertida es > blargh que significa aproximadamente, "tome el output de ps y escriba un archivo llamado blargh." Pero espere, se pone más divertido. $ ps | less

Este toma el output de ps y lo entuba menos, para que yo pueda recorrerlo a mi antojo. $ ps > > blargh

Este es el tercer redireccionador mas usado; hace la misma cosa que ">", excepto que "> >" escribirá el output de ps en el archivo blargh, si ese archivo existe.. (">" sobrescribirá el contenido de blargh.) Existe también el operador "<" que quiere decir "tome como entrada lo siguiente", pero no se usa tan a menudo. $ fromdos < dosfile.txt > unixfile.txt

Redireccionar se torna divertido cuando usted empieza a amontonarlos: $ ps | tac > > blargh

Eso ejecutar ps, invertirá las líneas de su output, y añadirá aquellos en el archivo blargh. Usted puede colocar tantos de ellos como usted quiera; solo tenga en cuenta que ellos se interpretan de izquierda a derecha. Vea el manual de bash(1) , para información mas completa sobre el.

The Bourne Again Shell (bash) Variables de Entorno Un sistema Linux es una bestia compleja, y hay que estar pendiente de muchas cosas. muchos pequeños detalles que están en juego en su interacción normal con varios programas. Nadie quiere pasar un puñado de opciones a cada programa que ejecuta, decir que tipo de terminal esta usando, el hostname de la computadora, como debe lucir el prompt... Como un mecanismo de copiado, los usuarios tenemos lo que se llama un ambiente. El ambiente define las condiciones en que se ejecutan los programas, y algunas de estas definiciones son variables; el usuario puede alterar y jugar con ellas , como solo se puede en sistema Linux. Muchas sheel tendrán variables de entorno (si no, es probable que no sea una shell muy util.). Aquí nosotros daremos un vistazo al shell de forma global y de las ordenes que mantiene usando sus variables de entorno. $ set

set por defecto le muestra todas las variables de entorno que están actualmente definidas, así como sus valores. Como la mayoría de los bash , 83


también puede hacer otras cosas( con parámetros);sin embargo, nosotros dejaremos que eso lo explique la pagina bash(1) del manual. Un extracto de una configuración de comandos como luce en mi computadora , seria así: PATH=/usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: /usr/openwin/bin:/usr/games:.:/ usr/local/ssh2/bin:/usr/local/ssh1/bin: /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin PIPESTATUS=([0]="0") PPID=4978 PS1='\h:\w\$ ' PS2='> ' PS4='+ ' PWD=/home/logan QTDIR=/usr/local/lib/qt REMOTEHOST=ninja.tdn SHELL=/bin/bash

Note la ruta variable que nosotros mencionamos antes; yo puedo ejecutar algo en cualquiera de esos directorios simplemente tecleando su nombre de archivo. $ unset VARIABLE

Unset quitara cualquier variable que usted especifique, borrando esa variable y su valor; bash olvidara para siempre que esa variable existió. (No se preocupe. Al menos que sea algo que usted explícitamente definió en esa sesión de shell, probablemente esta se redefinirá en cualquier otra sesión). $ export VARIABLE=some_value

Ahora, export es verdaderamente hábil. Usándolo, usted le da un valor cualquiera a la variable de entorno "VARIABLE"; si "VARIABLE" no existe, entonces la creara. Si la "VARIABLE" ya tuviera un valor, entonces será sustituido. Eso no es tan bueno, si usted está intentando agregar un directorio a su PATH simplemente. En ese caso, usted quiere hacer algo así probablemente: $ export PATH=$PATH:/some/new/directory

Note el uso de $PATH ; cuando usted quiere que el bash interprete una variable (Remplazarla con ese valor), coloque el simbolo "$" en el comienzo del nombre de la variable. Por ejemplo ,echo $PATH mostrara el valor de la variable PATH, que en mi caso es: $ echo $PATH /usr/local/lib/qt/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin: /usr/openwin/bin:/usr/games:.:/usr/local/ssh2/bin:/usr/local/ssh1/bin: /usr/share/texmf/bin:/usr/local/sbin:/usr/sbin:/home/logan/bin

84


Completacion con TAB 1. Una línea de comandos significa mucha mecanografía. 2. Mecanografiar es trabajo. 3. A nadie le gusta el trabajo. De 3 y 2, nosotros podemos determinar que 4) a nadie le gusta teclear. Afortunadamente, bash nos salva del 5( a nadie le gusta la línea de comando). ¿usted se preguntara como bash logra este hecho tan maravilloso? Además de los comodines que nosotros explicamos anteriormente, bash incluye "tab completion". Tab completion trabaja de esta forma: Usted está tecleando el nombre de un archivo. Quizá está en su PATH, quizá usted está tecleándolo explícitamente. Todo lo que tiene que hacer es tipear toda la ruta del archivo para identificarlo. Entonces presione la tecla TAB. bash deducirá lo que usted quiere y terminara de escribirlo por usted. El Hora del ejemplo el directorio /usr/src contiene dos subdirectorios: /usr/src/linux y /usr/src/sendmail. Yo quiero ver lo que hay en /usr/src/linux. Asi que yo nada mas tecleo ls /usr/src/l , presiono la tecla TAB, y el bash me completa ls /usr/src/linux. Ahora suponga que hay dos directorios /usr/src/linux y /usr/src/linux-old : Si yo tecleo /usr/src/l y presiono TAB , bash completara tanto como pueda, y me mostrara /udr/src/linux. Yo puedo detenerme allí, o puedo presionar TAB de nuevo, y el bash me mostrara una lista de directorios que coinciden con lo que he tipeado anteriormente. Menos mecanografía(y a las personas , les gustara la línea de comando).

Terminales Virtuales Así que usted esta en la mitad de un trabajo y decide que necesita hacer otra cosa. ¿Usted podría dejar lo que usted estar haciendo y cambiar las tareas, pero esto un sistema multiusuario, correcto? ¿Y usted puede entrar simultáneamente las veces que quiera, correcto? ¿Así que por que tiene que hacer una cosa a la vez? You don't. Todos Nosotros no podemos tener multiples teclados, mouses y monitores en una sola maquina; lo mas seguro es que ningun de nosotros los quiera. Claramente, el hardware no es la solución. Eso nos deja el software, y Linux trabaja para eso, proporcionando "Terminales Virtuales, o "VTs". Apretando Alt y una tecla de función, usted puede cambiar entre los términales virtuales; cada tecla de función corresponde a uno. Slackware tiene inicios de sesión por defecto en 6 VTs. Alt+F2 lo llevaran al segundo, Alt+F3 al tercero, etc. El resto de las teclas de función esta reservado para las sesiones de X. Cada sesión de X usa su propio VT, empezando con el séptimo (Alt+F7) y subiendo. Estando en X, la combinación de teclas de Alt+Function se reemplaza con Ctrl+Alt+Function; si usted está en X y quiere volver a un inicio de sesión de texto (sin terminar su sesión de X), Ctrl+Alt+F3 lo llevara al tercero. (Alt+F7 lo devolverá, asumiendo que está usando la primera sesión de X.)

85


Resumen En este capitulo explicamos los usuarios, el shell , la línea de comando , y los terminales virtuales. Usted debe sentirse cómodo en trabajando en la línea de comandos, ejecutando programas, y usando las tuberías y operadores de redireccionamineto para combinar los comandos. Finalmente, usted debe tener una idea del poder del usuario root y de porque es una mala idea estar como root.

86


Capitulo 9. Estructura del Filesystem Contenido • Propietarios • Permisos • Enlaces(Links) • Montando Dispositivos • Montaje NFS • Resumen Nosotros ya hemos discutido la estructura del directorio en Slackware Linux. Usted puede encontrar los archivos y directorios que usted necesita. Pero hay más en el filesystem que simplemente la estructura del directorio. Linux es un sistema operativo multiusuario. Cada aspecto del sistema es multiusuario, incluso el filesystem. El sistema guarda información sobre quién posee un archivo y quién puede leerlo. Hay otras partes únicas acerca del filesystem, como los enlaces y los montajes NFS. Estos se explican en esta sección, así como los aspectos multiusuarios del filesystem.

Propietario El filesystem guarda información sobre la propiedad para cada archivo y directorio en el sistema. Esto incluye que dueño y grupo posee un archivo en particular. La manera más fácil de ver esta información es con el comando ls : $ ls -l /usr/bin/wc -rwxr-xr-x 1 root bin

7368 Jul 30 1999 /usr/bin/wc

A nosotros nos interesa la tercera y cuarta columna. Éstas contienen el username y nombre del grupo que posee este archivo. Nosotros vemos que el usuario "root" y el grupo "bin" poseen este archivo. Nosotros podemos cambiar a los dueños del archivo fácilmente con los comandos chown(1)(que significa "cambiar propietario") y chgrp(1)(que significa "cambiar grupo"). Para cambiar el propietario a “daemon” , utilizaremos el comando chown(1): # chown daemon /usr/bin/wc

Para cambiar el grupo propietario a “root”, usaremos chgrp: # chgrp root /usr/bin/wc

Podemos usar chown para cambiar el propietario y el grupo inclusive: # chown daemon.root /usr/bin/wc 87


La propiedad del archivo es una parte muy importante en un sistema Linux, aun cuando usted sea el único usuario. Usted a veces necesitara arreglar la propiedad en los archivos y nodos de dispositivos.

Permisos Los permisos son la otra parte importante de los aspectos multiusuarios del filesystem. Con éstos, usted puede cambiar quien puede leer, escribir, y puede ejecutar los archivos. La información de los permisos se guarda en cuatro dígitos octales, cada uno que especifica un juego diferente de permisos. Hay permisos para el propietario, permisos de grupo, y los permisos mundiales. El cuarto digito octal se usa para guardar información especial como el user ID (identificación del usuario) , set group ID (identificación de grupo), y el "sticky" bit. Los valores octales asignados a los modos del permiso son (ellos tienen también letras asociadas con ellos que son mostradas por programas como ls y pueden ser usadas por chmod): Tabla 9-1. Valores octales de permisos Tipo de Permiso

Valor Octal

Valor en Letras

"sticky" bit

1

t

set user ID

4

s

set group ID

2

s

leer

4

r

escribir

2

w

ejecutar

1

x

Usted agrega los valores octales para cada grupo de permisos. Por ejemplo, si usted quiere el grupo de permiso para "leer" y "escribir", usted usaría "6" en la porción del grupo de la información de permisos. los permisos predefinidos de bash son: $ ls -l /bin/bash -rwxr-xr-x 1 root

bin 477692 Mar 21 19:57 /bin/bash

La primera letra antes del guión seria una “d” si esto fuera un directorio. Los tres grupos de permisos (propietario , grupo, y mundo) se despliegan después. Nosotros vemos que el dueño tiene permiso para leer, escribir y ejecutar (rwx). El grupo solo puede leer y ejecutar (r-x). Y todos los demás pueden leer y ejecutar (r-x). ¿Como podemos poner los permisos del bash en otro archivo? Primero, hagamos un archivo de ejemplo: $ touch /tmp/example $ ls -l /tmp/example -rw-rw-r--- 1 david users

0 Apr 19 11:21 /tmp/example

Vamos a usar chmod(1)(que significa "cambiar modos") para poner los permisos al archivo de ejemplo. Agregue los números octales para los 88


permisos que usted quiere. Para que el propietario pueda leer, escribir y ejecutar, colocamos el valor 7. Leer y ejecutar seria 5. Ejecútelos todos juntos y póngalos en el chmod así: $ chmod 755 /tmp/example $ ls -l /tmp/example -rwxr-xr-x 1 david users 0 Apr 19 11:21 /tmp/example

Para poner permisos especiales, sume los números y póngalos en la primera columna. Por ejemplo, para que coloque el userID y el groupID, utilizamos 6 en la primera columna: $ chmod 6755 /tmp/example $ ls -l /tmp/example -rwsr-sr-x 1 david users 0 Apr 19 11:21 /tmp/example

Si los valores octales lo confunden, usted puede usar las letras con el chmod. Los grupos de permiso se representan como: Propietario u Grupo

g

Mundo

o

Todos

a

Para hacer lo anterior, nosotros tendriamos que usar algunas lineas de comando: $ chmod a+rx /tmp/example $ chmod u+w /tmp/example $ chmod ug+s /tmp/example

Algunas personas prefieren las letras en vez de los números. De cualquier modo producirá el mismo juego de permisos. Nosotros mencionamos los permisos set userID y set gruoupID anteriormente varias veces. Usted puede estar preguntandose que es esto. Normalmente cuando usted ejecuta un programa, está operando bajo su cuenta de usuario. Es decir, con todos los permisos que usted como un usuario tiene. Lo mismo pasa con el grupo. Cuando usted ejecuta un programa, este se ejecuta bajo su grupo actual. Con los permisos set userID , usted puede obligar al programa a que solo sea ejecutado por el propietario(por ejemplo como "root"). set groupID es lo mismo, pero para el grupo. Tenga cuidado con esto, los programas set userID y set groupID pueden abrir agujeros de seguridad graves en su sistema. Si usted frecuentemente coloca set user Id a los programas propiedad de "root" , usted esta permitiendo a cualquiera utilizar este programa como root. Como root no tiene ninguna restricción en el sistema, usted puede darse cuenta del problema que esto causaría. En resumen, no es malo usar los permisos set user ID y set group ID, solo úselos con sentido común.

Enlaces(Links) Los enlaces son indicadores entre archivos. Con los enlaces, usted puede tener archivos en distintos sitios y hacerlos accesibles con varios nombres. Hay dos tipos de enlaces: duros y suaves. 89


Los enlaces duros son los nombres de un archivo en particular. Ellos pueden estar solo en el directorio donde se encuentra el archivo y solo se pueden borrar cuando el nombre real es eliminado del sistema. Éstos son útiles en algunos casos, pero muchos usuarios encuentran el enlace suave más versátil. El enlace suave, también llamado enlace simbólico, pude apuntar a un archivo fuera de su directorio. Realmente es un archivo pequeño que contiene la información que necesita. Usted puede agregar y borrar los enlaces suaves sin afectar el archivo real. Los enlaces no tienen su propio grupo de permisos o propiedades, pero refleja los permisos del archivo al que apuntan. Slackware principalmente usa los enlaces suaves. Aquí hay un ejemplo común: $ ls -l /bin/sh lrwxrwxrwx 1 root

root

4 Apr 6 12:34 /bin/sh -> bash

El sh shell en Slackware es realmente el bash. Para quitar los enlaces se utiliza rm. El comando ln se usa para crear los enlaces. Estos comandos se discuten mas adelante en el capitulo 10.

Montando Dispositivos Como se discutió anteriormente en la sección llamada Sistema de Archivos en el Capitulo 4, todas las unidades y dispositivos de su computadora son un gran filesystem. Los discos duros, CD-ROMs , y los floppies se encuentran en el mismo árbol. Para unir estas unidades al filesystem y poder accesarlos, usted tiene que usar el comando mount(1) y umount(1). Algunos dispositivos están automáticamente montados cuando usted inicia su computadora. Estos se listan en el archivo /etc/fstab. Todo lo que usted quiere que se monte automáticamente debe aparecer en este archivo. Para los otros dispositivos, usted tendrá que ejecutar el comando cada vez que quiera usar el dispositivo.

fstab Veamos un ejemplo de archivo etc/fstab : /dev/sda1 / /dev/sda2 /usr/local /dev/sda4 /home /dev/sdb1 swap /dev/sdb3 /export none /dev/pts none /proc /dev/fd0 /mnt /dev/cdrom /cdrom

ext2 defaults 1 1 ext2 defaults 1 1 ext2 defaults 1 1 swap defaults 0 0 ext2 defaults 1 1 devpts gid=5,mode=620 0 0 proc defaults 0 0 ext2 defaults 0 0 iso9660 ro 0 0

La primera columna es el nombre del dispositivo. En este caso, los dispositivos son cinco particiones extendidas en dos unidades de disco duro SCSI , dos filesystem especiales que no necesitan un dispositivo, un floppy , 90


y una unidad de CD-ROM. La segunda columna es donde el dispositivo se montará. Esto tiene que ser el nombre de un directorio, a menos que sea una partición tipo swap. La tercera columna es el tipo de filesystem del dispositivo. Para Linux el filesystem normal será el ext2. Las unidades de CD-ROM son los iso9660, y los dispositivos Basados en Windows serán msdos o vfat. La cuarta columna es una lista de opciones que aplican al filesystem montado. los valores predeterminados("defaults") están bien para casi todo. Sin embargo, los dispositivos de solo lectura deben tener el indicador ro. Hay muchas opciones que pueden usarse. Verifique la pagina del manual fstab(5) para mas información. Las últimas dos columnas son usadas por fsck y otros comandos que necesitan manipular los dispositivos. Verifique la pagina del manual para esta información. Cuando usted instala Slackware Linux, el programa de instalación construirá gran parte del archivo del fstab. Lo único que necesita hacer es editarlo si usted agrega discos o dispositivos que necesitan ser montados automáticamente en el inicio.

mount y umount Montar otro dispositivo en su filesystem es fácil. Todo lo que tiene que hacer es usar le comando mount, seguido de algunas opciones. Usar mount puede ser mas fácil si el dispositivo tiene una entrada en el archivo /etc/fstab. Por ejemplo, digamos que yo quiero montar mi unidad de CD-ROM y que mi archivo fstab se parece a el ejemplo de la sección anterior. Yo ejecutaría mount de este modo: # mount /cdrom

Hay una entrada en fstab para este punto de montaje, mount sabe que opciones usar. Si no existiera una entrada para este dispositivo, tendríamos que usar varias opciones para mount: # mount -t iso9660 -o ro /dev/cdrom /cdrom

Esa línea de comandos incluye la misma información del fstab de ejemplo, pero nosotros revisaremos todas las partes de todas formas. La -t iso9660 es el tipo de filesystem del dispositivo a montar. En este caso –t iso9660 , seria el filesystem iso9660 que normalmente son los que usan la mayoría de las unidades de CD-ROM. La -o ro le dice que monte el dispositivo en modo solo lectura. /dev/cdrom es el nombre del dispositivo a montar y /cdrom es la ubicación donde se montara la unidad. Antes de que usted pueda quitar un disquete , un CD-ROM , u otro dispositivo removible que este montado, usted tiene que desmontarlo(“unmount”). Eso se hace con la orden umount. No pregunten a donde se fue la "n" porque nosotros no podemos decirles. Usted puede usar el nombre del dispositivo montado o la dirección de montaje como argumento para umount. Por ejemplo, si usted quiere desmontar el CD-ROM del ejemplo anterior, cualquiera de estas dos ordenes funcionaria: # umount /dev/cdrom # umount /cdrom

91


Montaje NFS NFS representa el Filesystem de red. Realmente no es parte del filesystem real, pero puede usarse para agregar partes al filesystem montado. En ambientes Unix grandes a veces se comparten los mismos programas, directorios home , y servicios de correo. El problema de hacer la misma copia para cada máquina se resuelve con NFS. Nosotros podemos usar NFS para compartir directorios home entre todas las maquinas. Los puestos de trabajo montan ese NFS compartido como si estuviera en sus propias máquinas. Vea la sección llamada NFS (Sistema de Archivos de Red) en el Capitulo 5 y el manual de exports(5), nfsd(8) , y mount(8) para mas información.

Resumen En este capítulo, usted debe de haber ganado conocimiento de propiedades y permisos. Usted debe saber por qué éstos existen y cómo ponerlos. Usted también debe saber sobre los enlaces entre archivos, montar los dispositivos, y montajes de NFS. Estas tres cosas son aspectos importantes del filesystem. Usted debe tener una idea básica de cómo usarlos.

92


Capitulo 10. Manejando Archivos y Directorios Contenido • • • • • • • • • • • • •

ls cd more less cat touch echo mkdir ln cp mv rm rmdir Resumen

Slackware Linux intenta parecerse lo mas posible a Unix. Tradicionalmente, los sistemas Unix son orientados hacia la línea de comandos. Nosotros tenemos una interfaz gráfica de usuario en Slackware, pero la línea de comandos todavía es el nivel principal de mando para el sistema. Por consiguiente, es importante entender algunas de las órdenes de administración de archivos básicas. Las siguientes secciones explican los comandos de manejo de archivos mas comunes y ejemplos de como se utilizan. Hay muchas otros comandos, pero estos le ayudara a empezar. Los comandos se discuten muy brevemente aquí. Usted encontrará más detalle en las páginas del manual que acompañan a cada comando.

ls Este comando lista los archivos de un directorio. Los usuarios de Windows y DOS notaran su similitud con el comando dir. Solo, ls(1) listara los archivos en el directorio actual. Para ver lo que está en su directorio raíz, usted podría emitir estas órdenes: $ cd / $ ls bin cdr dev home lost+found proc sbin tmp var boot cdrom etc lib mnt root suncd usr vmlinuz

El problema que mucha gente tiene con ese resultado es que no es fácil saber cual es un directorio y cual es un archivo. Algunos usuarios prefieren que ls agregue un identificador de tipo en cada lista, así: 93


$ ls -FC bin/ cdr/ dev/ home/ lost+found/ proc/ sbin/ tmp/ var/ boot/ cdrom/ etc/ lib/ mnt/ root/ suncd/ usr/ vmlinuz

Los directorios tienen un slash al final del nombre, los ejecutables tiene un asterisco, y así sucesivamente. también pueden usarse ls para conseguir otras estadísticas en los archivos. Por ejemplo, para ver las fechas de creación, dueños, y permisos, usted miraría una lista larga: $ ls -l drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 14 root drwxr-xr-x 4 root drwxr-xr-x 10 root drwxr-xr-x 8 root drwxr-xr-x 3 root drwxr-xr-x 2 root drwxr-xr-x 2 root dr-xr-xr-x 62 root drwxr-x---x 12 root drwxr-xr-x 2 root drwxr-xr-x 5 root drwxrwxrwt 4 root drwxr-xr-x 21 root drwxr-xr-x 18 root -rw-r---r--- 1 root

bin root root root root root root root root root root root bin root root root root root

4096 May 7 1994 bin/ 4096 Feb 24 03:55 boot/ 4096 Feb 18 01:10 cdr/ 6144 Oct 23 18:37 cdrom/ 28672 Mar 5 18:01 dev/ 4096 Mar 8 03:32 etc/ 4096 Mar 8 03:31 home/ 4096 Jan 23 21:29 lib/ 16384 Nov 1 08:53 lost+found/ 4096 Oct 6 1997 mnt/ 0 Mar 4 15:32 proc/ 4096 Feb 26 02:06 root/ 4096 Feb 17 02:02 sbin/ 2048 Oct 25 10:51 suncd/ 487424 Mar 7 20:42 tmp/ 4096 Aug 24 1999 usr/ 4096 Mar 8 03:32 var/ 461907 Feb 22 20:04 vmlinuz

Suponga que usted quiere conseguir una lista de los archivos ocultos en el directorio actual. Este simple comando hace eso: $ ls -a . bin cdrom home mnt sbin usr .. boot dev lib proc suncd var .pwrchute_tmp cdr etc lost+found root tmp

vmlinuz

Archivos que comienza con un punto (llamados "archivos con punto") están ocultos cuando usted ejecuta ls. Usted los verá sólo si coloca la opción -a. Hay muchos más opciones que pueden encontrarse en la página manual. No se olvide que usted puede combinar opciones.

94


cd La orden cd se usa para cambiar el directorio de trabajo. Usted simplemente coloca cd seguido de la ruta a donde quiere pasar. Aquí estan algunos ejemplos:

darkstar:~$ cd /bin darkstar:/bin$ cd usr bash: cd: usr: No such file or directory darkstar:/bin$ cd /usr darkstar:/usr$

Note que si no comienza con slash , intenta cambiar a un directorio en el directorio actual. La orden cd no es como los otros comandos. Es una orden construida en el shell. Esto no puede tener ningún sentido ahora mismo para usted. Básicamente significa no hay ninguna página del manual para esta orden. En cambio, usted puede usar la ayuda del shell. Así: $ help cd

Desplegará las opciones para cd y cómo usarlas.

more more(1) es lo que nosotros llamamos una utilidad pager. A menudo el resultado de un comando en particular es demasiado grande para encajar en una pantalla. Los comandos por si solos no saben encajar su output para separar las pantallas. Ellos dejan este trabajo a la utilidad del pager. El comando more separa las salidas por pantalla en pantallas individuales y espera hasta que usted presione la barra espaciadora para continuar en la siguiente pantalla. Apretando enter adelantara una línea. Aquí esta un ejemplo bueno: $ cd /usr/bin $ ls -l

Eso debe desplazar durante algún tiempo. Para separa la salida por pantalla en varias pantallas, simplemente manéjelo por tuberías con el comando more: $ ls -l | more

95


Este es el carácter de tubo “|” (generalmente Alt+1). El tubo es la abreviatura de decir “tome el output de ls y manéjelo con more”. Usted puede conducir por tuberías casi todo con el comando more, no solo ls. Conducir por tuberias también se cubre en la seccion llamada Input/Output Redireccionamiento y tuberías en el capitulo 8.

less La orden more es bastante hábil, pero a menudo usted encontrara que usted ha adelantado mas allá de la pantalla que usted quería. more no proporciona una manera de retroceder. El comando less(1) proporciona esa función. Se usa de la misma forma que el comando more, por lo que los ejemplos anteriores aplican aquí también. En resumen, less es mas que more.

cat cat(1) es la abreviatura de "encadene". Fue diseñado originalmente para fusionar archivos de texto en uno, pero puede usarse para muchos otros propósitos. Para fusionar dos o mas archivos en uno, usted lista los archivos despues del comando cat y entonces redireccióna la salida a un archivo. cat trabaja con salida estándar (standard output) y entrada estándar (standard input), así que usted tiene que usar los caracteres de redireccionamiento del shell. Por ejemplo: $ cat file1 file2 file3 > bigfile

Esta orden toma el contenido de file1, file2 y file3 y lo fusiona todos en uno. La nueva salida será una salida estándar llamada bigfile. También puede usarse cat para mostrar archivos. Muchas personas usan cat en archivos de textos con el comando more o less, asi: $ cat file1 | more

Esto mostrara el archivo file1 y lo conduce por tuberías a través del comando more para que solo le muestre una pantalla a la vez. otro uso corriente para cat es copiar archivos. Usted puede copiar cualquier archivo con cat, así: $ cat /bin/bash > ~/mybash

El programa /bin/bash se copia a su directorio home con el nombre "mybash". Cat tiene muchos usos aquí solo discutimos algunos. Ya que cat hace uso de la entrada estándar y de la salida estándar , es ideal para usarlo en scripts del sheel o como parte de otras ordenes complejas.

96


touch touch(1) se usa para cambiar el timestamp en un archivo. Usted puede cambiar el timestamps de acceso y el timestamp de modificación con esta orden. Si el archivo especificado no existe, touch creara un archivo de longitud cero con el nombre especificado. Para marcar un archivo con el tiempo actual del sistema, usted debe usar este comando: $ touch file1

Hay varias opciones para el comando touch, incluyendo opciones para especificar que timestamp modificar, que tiempo usar y muchas mas. La pagina del manual explica esto con detalle.

echo El comando echo despliega el texto especificado en la pantalla. Usted especifica cual string desplegar después del comando echo. Por defecto echo desplegara el string y una línea de caracteres nueva después. Usted puede usar la opción -n para suprimir la impresión de una nueva línea. La opción -e causara que echo busque los caracteres de escape en el string y los ejecute.

mkdir Mkdir crea un nuevo directorio. Usted simplemente especifica el directorio a crear y luego ejecuta mkdir. Este ejemplo crea el directorio hejaz en el directorio actual: $ mkdir hejaz

Usted puede también especificar la ruta así: $ mkdir /usr/local/hejaz

La opción -p le indica la mkdir hacer cualquier directorio raíz. El ejemplo anterior fallaría si /usr/local no existiera. La opción p creara el directorio /usr/local y despues el usr/local/hejaz. $ mkdir -p /usr/local/hejaz

ln El comando ln(1) se usa para crear enlaces(Links) entre los archivos. Estos enlaces pueden se duros o suaves(simbólicos). Se explicaron las diferencias entre los dos tipos de enlaces en la sección llamada Enlaces(Links) en el Capitulo 9. Si usted quisiera hacer un link simbólico al directorio /var/media/mp3 y poner en el enlace en su directorio home, tendria que hacer esto: $ ln -s /var/media/mp3 ~/mp3 97


La opcion -s le dice al ln hacer un link simbólico. La próxima opción es el objetivo del enlace , y por ultimo como se llamara el enlace. En este caso, solo creara un archivo llamado mp3 en su directorio home que apunte hacia /var/media/mp3. Usted puede llamar el link con cualquier nombre que usted quiera simplemente cambiando la ultima opción. Hacer un link duro es tan fácil como esto. Todo lo que tiene que hacer es eliminar la opción -s. Hacer un enlace duro como el anterior, seria así: $ ln /var/media/mp3 ~/mp3

cp cp(1) copia los archivos. Los usuarios de DOS notaran su similitud con el comando copy. Hay muchas opciones para el cp, por lo que usted puede echar una mirada al manual antes de usarlo. El uso mas común de cp es para copiar un archivo de una ubicación a otra. Por ejemplo: $ cp hejaz /tmp

Esto copiara el archivo hejaz de su actual directorio al directorio /tmp. Muchos usuarios prefieren mantener los timestamps, como en este ejemplo: $ cp -a hejaz /tmp

Esto asegura que los timestamps no son modificados en la copia. Para que se copien todos los archivos de un directorio a otro, usted haría lo siguiente: $ cp -R adirectory /tmp

Esto copiaría el directorio adirectory a el directorio /tmp. El cp tiene muchas mas opciones que se discuten con detalle en las paginas del manual.

mv El comando mv(1) mueve los archivos de una ubicación a otra. Los usuarios de DOS notarán la similitud con la orden move. Usted nombra la fuente y el destino cuando ejecuta mv. Este ejemplo muestra el uso normal de mv: # mv myfile /usr/local/share/hejaz

el mv tiene algunas opciones que se documentan en la pagina del manual.

98


rm rm(1) elimina los archivos y árboles de directorios. Los usuarios de DOS notarán la similitud entre del y el comando deltree. los rm pueden ser muy peligrosos si usted no se fija. Linux no proporciona una forma de recuperar los archivos. Para quitar un solo archivo especifique su nombre cuando ejecute el comando rm: $ rm file1

Si el archivo tiene los permisos de leer desactivados, usted conseguirá un mensaje de error. Para forzar la eliminación del archivo sin importar lo que pase, coloque la opción -f: $ rm -f file1

Para quitar un directorio entero usted utiliza las opciones -r y -f juntas. Éste es un buen ejemplo de cómo eliminar directorios enteros de su unidad de disco duro. Usted realmente no quiere hacer esto. Pero aquí esta sin embargo el comando: # rm -rf /

Tenga cuidado con el rm; se le puede salir el tiro por la culata. Hay muchas mas opciones que se discuten con detalle en la pagina del manual.

rmdir rmdir(1) elimina directorios del filesystem. El directorio debe estar vacío antes de que pueda quitarse. La sintaxis simplemente es: $ rmdir <directory>

Este ejemplo quitará el subdirectorio hejaz del directorio de trabajo actual: $ rmdir hejaz

Si ese directorio no existe ,el rmdir le dirá. Usted también puede usar una ruta completa para indicar un directorio a eliminar, como se muestra en este ejemplo: $ rmdir /tmp/hejaz

Este ejemplo trata de quitar el directorio hejaz que esta dentro del directorio /tmp. Usted también puede quitar un directorio y todos sus directorios raíz usando la opción –p. $ rmdir -p /tmp/hejaz

Esto intentara quitar primero el directorio hejaz dentro de /tmp. Si lo logra, intentara quitar después el directorio /tmp. rmdir continuara haciendo esto 99


hasta que consiga un error o hasta que el árbol de directorios sea eliminado por completo.

Resumen Este capítulo cubrió muchos programas que manipulan archivos y directorios. Usted debe saber crear, eliminar, y mover casi todo en el filesystem. Usted también debe saber cómo listar y tocar los archivos si lo necesita. Finalmente, usted debe saber por qué el comando rm -rf / es una muy mala idea. Finalmente, usted debe saber por qué el rm - el rf / es una idea muy mala.

100


Capitulo 11. Control de Procesos Contenido • Backgrounding • Foregrounding • ps • kill • top • Resumen Cada programa que se ejecuta se llama proceso. Estos procesos van desde el servidor X window a los programas de sistemas (daemons) que se ejecutan cuando la computadora arranca. Cada proceso se ejecuta como un usuario particular. Los procesos que comienza cuando arranca la maquina generalmente son ejecutados por root o por nadie. Los procesos que usted inicie correrán como usted. Los procesos ejecutados por otros usuarios correrán como esos usuarios. Usted tiene el control sobre todos los procesos que usted comienza. Adicionalmente root, tiene todo el control de todos los procesos, incluyendo aquellos iniciados por otros usuarios. Los procesos pueden controlarse y supervisarse a través de varios programas, y con algunos comandos del sheel.

Backgrounding Los programas que se inician en el primer plano de la línea de comandos. Esto le permite ver todo el output del programa e interactuar con el. Sin embargo, hay varias opciones cuando usted necesite ejecutar un programa sin tener que cambiarse a otro terminal. Esto se llama ejecutar el programa en el fondo, y hay varias maneras de hacerlo La primera forma para mandar a un proceso al fondo es agregando un ampersand(&) al comando cuando usted inicia el programa. Por ejemplo, suponga que usted quiere usar el comando mp3 player para escuchar un directorio full de mp3s, pero usted necesita hacer otras cosas en el mismo terminal. El siguiente comando pondría en marcha el reproductor de mp3s en el fondo: $ amp *.mp3 &

El programa se ejecutara de forma normal y usted será devuelto al prompt. La otra forma de mandar al fondo un proceso es hacerlo mientras se esta ejecutando. Primero, ponga en marcha un programa. Mientras este corriendo presione, ctrl+z. Esto suspende el proceso. Un proceso suspendido es prácticamente un proceso en pausa. Detiene el funcionamiento momentáneamente, pero puede comenzar de nuevo cuando usted quiera. Una vez que usted suspende un proceso, usted es devuelto al prompt. Usted puede mandar al fondo al proceso escribiendo: 101


$ bg

Ahora, el proceso suspendido está corriendo en el fondo.

Foregrounding Si usted necesita interactuar con un proceso que esta en el fondo, usted puede devolverlo al primer plano. Si usted tiene solamente un proceso en el fondo, usted puede regresarlo escribiendo: $ fg

Si el programa todavía esta corriendo, este tomara el control sobre su terminal y usted no será devuelto al prompt. A veces, un programa puede terminar su tarea mientras esta en el fondo. En ese caso usted conseguirá un mensaje así: [1]+ Done

/bin/ls $LS_OPTIONS

Esto le indica que los procesos que estaban en el fondo han terminado. Es posible tener varios procesos en el fondo al mismo tiempo. Cuando esto pasa usted necesita saber que proceso es el que usted quiere traer del fondo al primer plano. Simplemente teclee fg y traerá al primer plano el ultimo proceso que usted envió al fondo. ¿Qué ocurre si usted tiene una lista entera de procesos en el fondo? Por suerte, bash incluye un comando para listar todos los procesos. Se llama jobs y muestra algo como esto: $ jobs [1] Stopped [2]- Stopped [3]+ Stopped

vim amp man ps

Esto le muestra la lista de todos los procesos que están en el fondo. Como puede ver todos están detenidos(Stopped). Esto significa que los procesos están suspendidos. El número es la identificación para todos los procesos del fondo. La identificación con un signo de mas al lado (man ps) significa que ese proceso será enviado a el primer plano cuando usted escriba fg. Si usted quisiera traer al primer plano a vim tendría que escribir: $ fg 1

Y vim volvería de nuevo a la consola. Enviar los procesos al fondo puede ser muy útil si usted solo puede tener un terminal conectado a conexión telefónica. Usted puede tener varios procesos en ese terminal, y cambiar periódicamente entre ellos.

102


ps Ahora que ya sabe cambiar de un lado a otro los procesos que usted a iniciado en la línea de comando. Y sabe también que hay muchos procesos funcionando al mismo tiempo. ¿Como usted lista todos estos programas? Bien, usted necesita usar el comando ps(1). Este comando tiene muchas opciones, nosotros solo cubriremos las mas importantes aquí. Para una explicación mas completa, vea la pagina del manual para ps. Tecleando simplemente ps le dará una lista completa de los programas que se ejecutan en su terminal. Muchas veces, será una lista muy corta: $ ps PID TTY 7923 ttyp0 8059 ttyp0

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

Aunque aquí no hay muchos procesos, la información es muy típica. Usted conseguirá las mismas columnas que usa el ps regularmente no importa cuantos procesos se estén ejecutando. Bien , PID es la identificación del proceso. A todos los procesos se les da un identificador único. En los kernels 2.2.x, el identificador de procesos puede estar entre 1 y 32767. A cada proceso se le asigna el próximo PID que este libre. Cuando se elimina un proceso(o se mata, como se explica en la próxima sección), este deja libre su PID. Los mas probable es que esto cambie con la próximas series de kernels 2.4 y con la introducción de los PID de 32-bit. La columna TTY indica en que terminal se esta ejecutando el proceso. Haciendo un ps simple se listan solo los programas que se están ejecutando en el terminal actual, por lo que todos los procesos dan la misma información en la columna TTY. Como usted puede ver, ambos procesos listados están corriendo en el ttyp0. Esto indica que ellos están ejecutándose de forma remota o desde cualquier tipo de terminal X. La columna TIME indica la cantidad de tiempo que el CPU ha estado ejecutándolo. Esto es diferente a la cantidad de tiempo real que tarda en ejecutarse un proceso. Recuerde que Linux es un sistema operativo multitarea. Hay muchos procesos que corren todo el tiempo, y cada uno consigue una pequeña porción del tiempo del procesador. Así que, la columna TIME debe mostrar mucho menos tiempo por cada proceso del que toma realmente para ejecutarse. Si usted ve varios minutos de mas en la columna TIME, esto podría significar que algo esta mal. Finalmente, la columna CMD muestra realmente lo que es el programa en si. Solo indica el nombre del programa, no indica cualquier opción u otra información similar. Para obtener esa información, usted necesita usar una de las muchas opciones del ps. Usted puede conseguir una lista completa de los procesos que corren en su sistema usando la combinación correcta de opciones. Esto probablemente producirá una larga lista de procesos, por lo que aquí reducimos el output: $ ps -ax PID TTY 1? 2? 3? 4?

STAT TIME COMMAND S 0:03 init [3] SW 0:13 [kflushd] SW 0:14 [kupdate] SW 0:00 [kpiod] 103


5? SW 0:17 [kswapd] 11 ? S 0:00 /sbin/kerneld 30 ? SW 0:01 [cardmgr] 50 ? S 0:00 /sbin/rpc.portmap 54 ? S 0:00 /usr/sbin/syslogd 57 ? S 0:00 /usr/sbin/klogd -c 3 59 ? S 0:00 /usr/sbin/inetd 61 ? S 0:04 /usr/local/sbin/sshd 63 ? S 0:00 /usr/sbin/rpc.mountd 65 ? S 0:00 /usr/sbin/rpc.nfsd 67 ? S 0:00 /usr/sbin/crond -l10 69 ? S 0:00 /usr/sbin/atd -b 15 -l 1 77 ? S 0:00 /usr/sbin/apmd 79 ? S 0:01 gpm -m /dev/mouse -t ps2 94 ? S 0:00 /usr/sbin/automount /auto file /etc/auto.misc 106 tty1 S 0:08 -bash 108 tty3 SW 0:00 [agetty] 109 tty4 SW 0:00 [agetty] 110 tty5 SW 0:00 [agetty] 111 tty6 SW 0:00 [agetty] [output cut]

La mayoría de estos procesos se inician en el arranque de la mayoría de los sistemas. Yo he echo algunas modificaciones a mi sistema, por lo que su contenido puede variar. Sin embargo, usted verá la mayoría de estos procesos también en su sistema. Como puede ver con estas opciones del comando ps se pueden ver la diferentes opciones de cada proceso. Además muestra unas cuantas columnas mas e información mas interesante. Primero, usted puede darse cuenta que la mayoría de estos procesos se están ejecutando en tty “?”. Esos procesos son aquellos que se iniciaron en un terminal que ya no esta activo. Por consiguiente, ellos ya no están asignados a ningún terminal en particular. Segundo, hay una nueva columna: STAT. Allí se muestra el estado de los procesos. S significa durmiendo(Sleeping): el proceso esta esperando que algo ocurra. Z representa un proceso Zombie. Un proceso zombie representa aquellos procesos cuyos padres han muerto, dejando el proceso niño atrás. Esto no es una cosa buena. Si usted quiere ver mas información sobre los procesos que se estan ejecutando, pruebe con esto: $ ps -aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 344 80 ? S Mar02 0:03 init [3] root 2 0.0 0.0 0 0 ? SW Mar02 0:13 [kflushd] root 3 0.0 0.0 0 0 ? SW Mar02 0:14 [kupdate] root 4 0.0 0.0 0 0 ? SW Mar02 0:00 [kpiod] root 5 0.0 0.0 0 0 ? SW Mar02 0:17 [kswapd] root 11 0.0 0.0 1044 44 ? S Mar02 0:00 /sbin/kerneld root 30 0.0 0.0 1160 0 ? SW Mar02 0:01 [cardmgr] bin 50 0.0 0.0 1076 120 ? S Mar02 0:00 /sbin/rpc.port root 54 0.0 0.1 1360 192 ? S Mar02 0:00 /usr/sbin/sysl root 57 0.0 0.1 1276 152 ? S Mar02 0:00 /usr/sbin/klog root 59 0.0 0.0 1332 60 ? S Mar02 0:00 /usr/sbin/inet root 61 0.0 0.2 1540 312 ? S Mar02 0:04 /usr/local/sbi root 63 0.0 0.0 1796 72 ? S Mar02 0:00 /usr/sbin/rpc. root 65 0.0 0.0 1812 68 ? S Mar02 0:00 /usr/sbin/rpc. root 67 0.0 0.2 1172 260 ? S Mar02 0:00 /usr/sbin/cron root 77 0.0 0.2 1048 316 ? S Mar02 0:00 /usr/sbin/apmd root 79 0.0 0.1 1100 152 ? S Mar02 0:01 gpm 104


root 94 0.0 0.2 1396 280 ? chris 106 0.0 0.5 1820 680 tty1 root 108 0.0 0.0 1048 0 tty3 root 109 0.0 0.0 1048 0 tty4 root 110 0.0 0.0 1048 0 tty5 root 111 0.0 0.0 1048 0 tty6 [output cut]

S Mar02 0:00 /usr/sbin/auto S Mar02 0:08 -bash SW Mar02 0:00 [agetty] SW Mar02 0:00 [agetty] SW Mar02 0:00 [agetty] SW Mar02 0:00 [agetty]

Esto es una información entera. Básicamente, agrega información sobre que usuario inicio el proceso, cuantos recursos de sistema esta usando(las columnas %CPU , %MEM, VSZ, y RSS),y en que fecha se inicio el proceso. Obviamente, mucha de esa información puede ser útil para un administrador de sistemas. También plantea otra cosa: la información se va al borde de la pantalla para que usted no pueda verla por completo. Bien, la opción "-w" , arreglara eso. No es muy bonito pero hace el trabajo. Usted tiene la información completa para cada proceso. Aun Hay mas información que usted puede mostrar sobre cada proceso. Revise la pagina del manual ps en profundidad. Sin embargo, las opciones mostradas son las más populares y son las que usted necesitara mas a menudo.

kill En ocasiones , los programas funcionan mal y usted necesita ejecutarlos de nuevo. El programa para este tipo de administración se llama el kill(1), y puede usarse por manipular los procesos de varias maneras. El uso mas obvio de Kill es matar los procesos. Usted necesita hacer esto cuando un programa se ha ejecutado por largo tiempo y ha estado agotando los recursos del sistema, o si usted simplemente esta enfermo por tenerlo ejecutándose. Para matar un proceso, usted necesita conocer su nombre o su PID. Para obtener el PID, use el comando ps como explicamos en la sección anterior. Por ejemplo, para matar el proceso 4747, usted debe escribir lo siguiente: $ kill 4747

Note que usted tiene que ser el dueño del proceso para matarlo. Esto es una función de seguridad. Si se le permitiera matar procesos iniciados por otros usuarios, seria posible hacer todo tipo de cosas malévolas. Claro, root puede matar cualquier proceso en el sistema. Hay otra variedad del comando kill llamada killall(1). Este programa hace exactamente lo que dice: mata todos los procesos que tienen un cierto nombre. Si usted quisiera matar todos los procesos ejecutados por vim, tendría que teclear el siguiente comando: $ killall vim

Todos los procesos del vim estarán muertos ahora. Haciendo esto como root mataría todos los procesos del vim de todos los usuarios. Esto plantea una forma interesante de patear a todos(incluyéndose) fuera del sistema: # killall bash

105


Algunas veces el comando kill no logra hacer el trabajo.. Ciertos procesos no morirán con kill. Usted necesitara usar una forma mas potente. Si ese molesto PID 4747 no estuviera respondiendo a la petición de kill, usted podría hacer lo siguiente: $ kill -9 4747

Eso causara la muerte certera del proceso 4747. Usted puede hacer lo mismo con killall. Lo que hace esto es enviar una señal diferente al proceso. El comando kill normalmente envía una señal SIGTERM(termine) al proceso. kill -9 envía una señal SIGKILL(muerte) al proceso. Hay una lista entera de señales a su disposición. Usted puede conseguir una lista de señales tecleando lo siguiente: $ kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR

El numero debe usarse con el comando kill, mientras que el nombre menos el prefijo "SIG" debe usarse con el killall. Aquí hay otro ejemplo: $ killall -KILL vim

Un uso final para kill es reiniciar un proceso. Enviando un SIGHUP causara que la mayoria de los proceson re-lean sus archivo de configuracion. Esto es especialmente util despues de editar un archivo de configuracion de cualquier proceso de sistema.

top Finalmente, hay un comando que usted puede usar para listar la información de actualización de los procesos que se ejecutan en el sistema. Esta orden se llama top(1), y se arranca escribiendo esto: $ top

Esto desplegara una pantalla completa llena de información sobre los procesos que se ejecutan en el sistema, así como alguna información global sobre el sistema. Esto incluye el promedio de carga(Load average), numero de procesos, el estado del CPU, información sobre memoria libre, y detalles sobre los procesos incluso el PID, usuario, prioridad, uso de memoria y CPU, tiempo ejecutándose y nombre del programa,

106


Figura 11-1. Ejemplo del programa top.

Es llamado top porque los programas de uso mas intensivo de CPU se listan el tope. Algo interesante de notar es que top listara primero lo procesos mas inactivos(y algunos activos) debido a su uso de CPU. Sin embargo, top es bastante útil para determinar que programa esta portándose mal y qué necesita ser matado.

Resumen Este capitulo explico lo que es un proceso y como usted puede controlarlos. Esto incluye backgounding y foregounding, así como el uso de ps, top y kill para mantenerlo en línea. Usted debe poder determinar qué procesos están corriendo en su sistema y saber librarse de ellos si estos dejan de comportarse.

107


Capitulo 12. Administracion Esencial del Sistema Contenido • Usuarios y Grupos • Apagando correctamente • Resumen Usted es el administrador de cualquier computadora en la que usted sea root. Esta podria ser una computadora de escritorio con dos ususarios, o podria ser un servidor grande con un centenar de ususarios. Indifirentemente, usted necesita saber como manejar a los usuarios y como apagar correctamente el sistema. Ambas operaciones lucen aparentemenete simples, pero tienen algunos truquillos a los que hay que aconstumbrarse. Ademas, usted tendra que lidiar con algunas ideas detras del funcionamineto del sistema de contraseñas.

Usuarios y Grupos Scripts proporcionados La manera mas fácil de manejar a los usuarios y grupos es con los programas y scripts proporcionados. Slackware incluye los programas adduser, userdel(8), chfn(1), cdsh(1) y passwd(1) para trabajar con los usuarios. Slackware incluye el groupadd(8), groupdel(8) y groupmod(8) para tarabajar con los grupos. Con excepcio de chfn, chsh y passwd, estos programas solo pueden ser ejecutados por root y se localizan por consiguiente en /usr/bin. chfn , chsh y passwd pueden ser ejecutados por cualquier usuario y se localizan en /usr/bin. Los usuarios se agregan con el programa adduser. Nosotros comenzaremos haciendo un recorrido por el programa entero, mostrando todas las preguntas que se hacen y una breve descripción de lo que significan. En todas la preguntas se incluye una respuesta predefinida, y usted puede escogerla para todas las preguntas, a menos que usted quiera cambiar algo. # adduser Login name for new user (8 characters or less) []: jellyd

Este es el nombre que el usuario utilizara para iniciar sesión. Debe ser de ocho caracteres o menos. Por lo general, se utilizan solo letras minúsculas al menos que usted quiera escribir letras en mayúsculas en momentos inoportunos. 108


User id f or jellyd [ defaults to next available]:

La identificación del usuario (UID) es como se determinan ciertas propiedades en Linux. Cada usuario posee un numero único, empezando por 1000 en Slackware. Usted puede escoger un UID para el nuevo usuario, o puede permitir al adduser asignar el próximo numero libre. Initial group for jellyd [users]:

Todo los usuarios son colocados en el grupo "users" por defecto. Usted podría colocar al nuevo usuario en grupo diferente, pero no es recomendable. Additional groups for jellyd (seperated with commas

Esta pregunta le permite incluir al nuevo usuario en grupos adicionales. Es posible poner a un usuario en varios grupos al mismo tiempo. Esto es útil si usted ha establecido grupos para algunas cosas como modificar archivos de sitios web, jugar, y así sucesivamente. jellyd's home directory [/home/jellyd]:

El directorio Home tiene por defecto el valor /home. Si usted ejecuta un sistema muy grande, es posible que haya movido los archivo home a un directorio diferente. Esto le permite cambiar donde estará el directorio /home del usuario. Usted también puede desactivar una cuenta cambiando el directorio home de algún usuario a algo como /bin/false, aunque este no es el método recomendado. jellyd's shell [/bin/bash]:

bash es el shell por defecto de Slackware Linux, y estará bien para la mayoría de las personas. Si su nuevo usuario viene de trabajar en un sistema Unix, es posible que esta familiarizado con un shell diferente. Usted puede cambia su shell ahora, o ellos pueden hacerlo despues usando el comando chsh. jellyd's account expiry date (YYYY-MM-DD) []:

Las cuentas pueden configurarse para expirar en una fecha especifica. Por defecto no hay ninguna fecha de expiración. Usted puede cambiar esto, si usted quiere. Esta opción podría ser útil para las personas que manejan un ISP(Proveedor de Servicios de Internet) que podrían hacer que una cuenta expire en una cierta fecha, a menos que ellos reciban el próximo pago. OK, I'm about to make a new account. Here's what you entered so far: New login name: jellyd New UID: [Next available] Initial group: users Additional groups: [none] Home directory: /home/jellyd Shell: /bin/bash Expiry date: [no expiration] This is it... if you want to bail out, hit Control-C. Otherwise, press ENTER to go ahead and make the account. 109


Usted puede ver ahora toda la informacion que ha ingresado sobre la nueva cuenta, y se le da la oportunidad de detenerse. Si usted coloca algo incorrectamente, debe presionar Control+C y empezar de nuevo. Si no, usted puede presionar enter y la cuenta se creara. Making new account... Changing the user information for jellyd Enter the new value, or press return for the default Full Name []: Jeremy Room Number []: Smith 130 Work Phone []: Home Phone []: Other:

Toda esta información es opcional. Usted no tiene que colocar nada de esto si usted no quiere, el usuario puede cambiar esta información usando el comando chfn. Sin embargo, puede ser muy útil ingresar el nombre completo y los numero de teléfono, en caso de que usted necesite ponerse en contacto con esa persona. Changing password for jellyd Enter the new password (minimum of 5, maximum of 127 characters) Please use a combination of upper and lower case letters and numbers. New password: Re-enter new password: Password changed. Done...

Usted tiene que ingresar una contraseña para el nuevo usuario. Generalmente, si el nuevo usuario no este presente en este momento, usted puede colocar una contraseña predeterminada simple y decirle al usuario que lo cambie luego por alguna contraseña más segura. Escogiendo la contraseña Tener una contraseña segura es la primera línea de defensa para evitar se crackeado. Usted no querrá tener una contraseña fácil de suponer, porque seria fácil para alguien entrar en su sistema. Una contraseña segura seria una serie aleatoria de caracteres, incluyendo minúsculas y mayúsculas, números y caracteres especiales. En general, las normas de sentido común dicen: no escoja una contraseña que seal el cumpleaños de alguin, una frase comun, algo escrito en su escritorio, o algo que es facilmente asociado con usted. "secure1" también es una pena. Quitar a los usuarios no es nada difícil. Solo ejecute userdel con el nombre de la cuenta que desea eliminar. Usted tiene que asegurarse que el usuario no esta dentro del sistema, y que ningún proceso este ejecutándose por ese usuario. También, recuerde que una vez que ha eliminado al usuario, estos estarán fuera. # userdel jellyd

110


Haciendo esto eliminara al tipo molesto "jellyd" de su sistema. Esto elimina el usuario del directorio /etc/passwd y del /etc/group, pero no elimina la carpeta home del usuario. Si usted desea eliminar el directorio home también, usted debe hacer lo siguiente: # userdel -r jellyd

El proceso para desactivar una cuenta será tratado en la sección llamada Cambiando Contraseñas ya que esto involucra modificar el password del usuario. El método para cambiar la información de la cuneta se cubre en la sección llamada Cambiando Contraseñas en la sección llamada Cambiar la información del usuario. Los programas para agregar y quitar los grupos son muy simples. gruopadd agrega otra entrada al archivo /etc/group con una identificación única de grupo, mientras que groupdel elimina el grupo especificado. Si usted quiere puede editar el archivo /etc/group para agregar usuarios a un grupo especifico. Usted crea un grupo haciendo lo siguiente: # groupadd cvs

Y lo elimina haciendo esto: # groupdel cvs

A Mano Claro, es posible agregar, modificar, quitar usuarios y grupos a mano. Después de observar este procedimiento, usted lo encontrara mucho más conveniente que lo scripts. Primero, nosotros agregamos un nuevo usuario a los archivos /etc/passwd(5), etc/shadow(5). Y el /etc/group(5). El archivo passwd contiene alguna información sobre el usuario, pero (aunque parezca extraño) no su contraseña. El archivo passwd puede ser leído por cualquiera, pero usted no quiere que las contraseñas encriptadas sean leídas por todo el mundo ya que esto otorga a los crackers un buen sitio para empezar. Así que las contraseñas encriptadas se guardan en el archivo shadow, que solo puede ser leído por root y la contraseñas de todos están escritas en el archivos passwd como "x". El archivo group lista todos los grupos y quien esta dentro de cada uno. Prosigamos, examine el archivo /etc/passwd y deduzca como agregar a alguien. Una entrada típica en el archivo passwd luce como esta: chris:x:1000:100:Chris Lumens,Room 2,,:/home/chris:/bin/bash

Cada línea es una entrada para cada persona, y los campos en cada línea están separados por dos puntos ":". Los campos son: Login name, password encriptada, user ID, group ID, la información de contacto separada por comas, el directorio home y el shell. Lo que usted tiene que hacer es agregar una línea al final del archivo, rellenando la información apropiada. Asegúrese que la contraseña sea una x, que el user ID sea único, que ellos estén en el grupo 100(el grupo "users" en Slackware), y que ellos tengan una shell valida. Luego, nosotros necesitaremos agregar una entrada en el archivo /etc/shadow que contiene las contraseñas. Una entrada típica es algo así: 111


chris:$1$w9bsw/N9$UWLr2bRER6YyBS.CAEp7R.:11055:0:99999:7:::

De nuevo, cada línea es una entrada para una persona y cada campo esta separado por ":". Los campos son: login name, contraseña encriptada, la fecha (Enero 1, 1970) en que la contraseña fue cambiada por ultima vez, días que pasaran antes de que la contraseña pueda ser cambiada, días después en que se debe cambiar la contraseña, días antes de la expiración de la contraseña del usuario para notificarle, el dia en que la cuenta será anulada, y un campo reservado. Como usted puede ver. La mayoría de esto es para la información de expiración de la cuenta. Si usted no esta usando la información de expiración, usted solo necesita rellenar unos campos con algunos valores especiales. Por otro lado, usted necesitara hacer algunos cálculos y decisiones antes de que usted pueda rellenar estos campos. Para nuestro nuevo usuario, coloque alguna basura aleatoria en el campo de la contraseña. No se preocupe por la contraseña en este momento usted tendrá que cambiarla dentro de algunos minutos. El único carácter que usted no puede agregar en el campo de la contraseña es ":". Deje en blanco el campo "días desde que la contraseña cambio". Escriba 0,999999 y 7 así como se ve en el ejemplo, y deje el espacio en blanco en los otros campos. Para aquellos de ustedes que están viendo mi contraseña encriptada y piensan que pueden entrar en mi sistema, sigan adelante. Si usted puede crakear esa contraseña, usted obtendrá la contraseña de un sistema de prueba de firewalls. Ahora esto es útil ☺. Ya que todos por defecto somos miembros del grupo "users", usted no necesita agregar al nuevo usuario al. Si usted quiere crear un nuevo grupo o agregar al nuevo usuario a otros grupos, usted necesita modificar el archivo etc/group. Aquí esta una entrada típica: cvs::102:chris,logan,david,root

Los campos son nombre del grupo, contraseña del grupo, group ID y los miembros del grupo. Crear un nuevo grupo es facil basta con agregar una nueva línea con una única group ID y listar a todas las personas que usted quiere agregar al grupo. Cualquier usuario que este en el nuevo grupo y este dentro del sistema tendrá que salir y volver a entrar para que estos cambio surtan efecto. Ahora, volvamos y utilicemos el comando passwd para crear una nueva contraseña para el nuevo usuario. Después, utilice el comando mkdir para crear el directorio Home del nuevo usuario en la ubicación que usted especifico en el archivo /etc/passwd. Si usted ha instalado el sendmail(8) en su sistema y activamente usa el correo, usted necesita crear un nuevo archivo en /var/spool/mail con los permisos apropiados y propiedades para este nuevo usuario. Aquí hay un ejemplo: # touch /var/spool/mail/jellyd # chown jellyd.users /var/spool/mail/jellyd # chmod 660 /var/spool/mail/jellyd

Estos comandos crearan un archivo de correo para el nuevo usuario "jellyd" y configurara las propiedades y permisos correctos. 112


Para quitar un usuario simplemente elimine todo lo que usted creo. Quite la entrada del usuario de los archivos /etc/passwd y /etc/group. Quite su nombre de cualquiera de los grupos en el archivo etc/group, quite su archivo mail spool y borre su directorio home si es necesario. Quitar un grupo es fácil simplemente debe quitar la entrada del archivo /etc/group.

Cambiando Contraseñas El programa passwd cambia las contraseñas modificando el archivo /etc/shadow. Este archivo contiene todas las contraseñas del sistema en un formato encriptado. Para cambiar su contraseña usted debe escribir: $ passwd Changing password for chris Old password: Enter the new password (minumum of 5, maximum of 127 characters) Please use a combination of upper and lower case letters and numbers. New password:

Como usted puede ver, se le pregunta por su contraseña vieja. No aparecerá en la pantalla nada de lo que usted escribe, justo igual como el inicio de sesión. Entonces, se le indica que introduzca la nueva contraseña. passwd realiza muchos chequeos a su nueva contraseña, y le indicara si su nueva contraseña no pasa alguno de sus chequeos. Usted puede ignorar sus advertencias. Se le pedirá que coloque de nuevo su nueva contraseña para confirmar. Si usted es root, usted puede, además, cambiar la contraseña de cualquier otro usuario: # passwd ted

Usted tendrá que pasar por el mismo procedimiento anterior, solo que usted no tendrá que colocar la vieja contraseña. (Otro de los beneficios de ser root...) Si usted tiene algunos alborotadores en su sistema, usted puede desactivar temporalmente sus cuentas. Mas adelante, usted puede habilitarlas de nuevo. Ambas cosas pueden hacerse con el comando passwd. Para desactivar una cuenta haga lo siguiente estando como root: # passwd -l david

Esto cambiara la contraseña de David a algo que nunca podrá adivinar. Después, usted puede devolverle su contraseña usando el siguiente comando: # passwd -u david

Ahora, la cuenta de David vuelve a su estado normal. Desactivar una cuenta podría ser muy útil cuando alguien no esta cumpliendo con las reglas que usted a definido para su sistema o si ellos han exportado una copia muy grande de xeyes(1) a su escritorio X.

113


Cambiando la informacion del ususario Hay dos tipos de información que un usuario puede cambiar cuando quiera: su shell y su informacion de contacto. Slackware Linux usa los comandos chsh (change shell) y chfn (change finger) para modificar estos valores. Un usuario puede escoger cualquier shell de la lista que se encuentra en el archivo /etc/shells. Para la mayoría de las personas bash estara bien. Otros podrían estar familiarizados con un shell tipo Uníx y podrian querer usar uno que ellos ya conozcan. El shell se cambia usando el comando chsh: $ chsh Password: Changing the login shell for chris Enter the new value, or press return for the default Login Shell [/bin/bash]:

Después de colocar su contraseña, introduzca la ruta completa al nuevo shell. Asegúrese de que aparezca en el archivo /etc/shell primero. root tambien puede cambiar el shell de un usuario ejecutando el comando chsh usando el nombre de usuario como complemento. La información de contacto es información opcional como su nombre completo, números de teléfono y dirección de habitación por ejemplo. Esto puede cambiarse usando el comando chfn siguiendo el mismo procedimiento que utilizo para crear la cuenta. Como de costumbre, root puede cambiar la información de contacto de cualquier usuario.

Apagando Correctamente Es muy importante que el sistema sea cerrado correctamente. Si lo apaga simplemente presionando el botón de power podría causar serios daños en el filesystem. Cuando el sistema esta encendido, los archivos están en uso aun cuando usted no este haciendo nada. Recuerde que hay muchos procesos ejecutándose en el fondo todo el tiempo. Estos procesos están controlando el sistema y mantiene muchos archivos abiertos. Cuando usted simplemente apaga el sistema, estos archivos no se cierran adecuadamente y se dañan. Dependiendo de que archivos se dañen, el sistema podría dañarse permanentemente. En cualquier caso, usted tendrá que pasar por un largo proceso de chequeo cuando inicie de nuevo su sistema. Así, que cuando usted va a reiniciar o apagar su sistema, es importante hacerlo de la manera correcta. Hay varias manera de hacerlo; usted puede escoger la que le parezca mas divertida. La mayoría de los métodos para apagar el sistema pueden aplicarse para reiniciar. El primer método es con el programa shutdown(8), y probablemente este es el más popular. Shutdown puede usarse para reiniciar o apagar el sistema en un momento dado, y puede desplegar un mensaje de aviso a todos los usuarios del sistema. El uso básico de shutdown para apagar la computadora es: # shutdown -h now

114


En este caso, nosotros no vamos a enviar ningún mensaje especial a los usuarios; ellos veran el mensaje predeterminado de cierre. "now"(ahora) es el tiempo que queremos esperar para apagar, y "-h" significa detener el sistema. Esta no es una manera muy amistosa de proceder en un sistema multiusuario, pero funciona bien en su computadora personal. Una buena manera de apagar en un sistema multiusuario seria dar la advertencia y un poco de tiempo a todos de antemano: # shutdown -h +60

Esto apagaría el sistema después de una hora (60 minutos), lo cual esta bien para un sistema multiusuario normal. Los sistemas importantes pueden fijar sus momentos fuera de servicio por adelantado y advertencias acerca de èl en /etc/motd(5). Para reiniciar el sistema puede usar el mismo comando pero seguido de "-r" en vez de "-h": # shutdown -r now

Usted puede hacer la misma indicacion sobre el tiempo de cierre. Hay muchas otras cosas que usted puede hacer con shutdown para controlar cuando detener o apagar la maquina. Vea las pagina del manual para mas detalle. La segunda manera de apagar o reiniciar es usando los comandos halt(8) y reboot(8). Como lo indican sus nombres, halt dentendra el sistema inmediatamente y rebbot lo reinicara. reboot es simplemente un link simbolico hacia halt. Ello se utilizan de esta manera: # halt # reboot

Una forma de bajo-nivel para reiniciar o apagar el sistema es hablar directamente con el init. Todos los otros métodos son maneras absolutamente convenientes de hablar con init, pero usted puede decirle directamente que hacer usando el comando telinit(8) (note que solamente tiene una "l"). Usando telinit usted le dice que runlevel ejecutar para apagar o reiniciar el sistema, esto causara que se ejecute un script especial. Este script matara o detendrá los procesos necesarios para ese runlevel. Esto funciona para reiniciar y apagar porque los dos son runlevels especiales. # telinit 0

Runlevel 0 es el modo de apagar. Diciéndole al init que entre en runlevel 0 causara que todos los procesos sean matados, el filesystem desmontando y la maquina será detenida. Esta es una manera absolutamente aceptable de detener el sistema. En muchas computadoras portátiles, esto causará también que la maquina sea apagada. # telinit 6

Runlevel 6 es el modo de reinicio. Todos los procesos se mataran, los filesystem serán desmontados, y la maquina se reiniciara. Éste es un método absolutamente aceptable de reiniciar el sistema. Hay un último método de reiniciar el sistema. Todos los otros métodos exigen que usted sea root. Sin embargo, es posible reiniciar la maquina sin ser root, con tal de que usted tenga acceso físico al teclado. Pulsando ctrl-alt-supr, 115


causara que la maquina sea reiniciada inmediatamente. Lo que esto hace realmente es ejecutar el programa /usr/sbin/ctrlaltdel(8). Así, que si ese programa tiene los permisos extraños o no esta presente, no se lograra nada en absoluto.

Resumen Este capitulo explico los procedimientos para agregar y quitar usuarios y grupos. Usted debe saber hacer estas tareas usando los scripts proporcionados y a mano, si surge la necesidad. Adicionalmente, usted debe conocer las partes del proceso de agregar un usuario, las técnicas para seleccionar una contraseña y como cambiar la información del usuario. Finalmente, usted debe saber apagar su computadora adecuadamente y por que es importante hacerlo. Estas son parte importante de la administración de un sistema así sea su computadora personal o un servidor de red grande.

116


Capitulo 13. Comandos Basicos de Red Contenido • ping • finger • telnet • Clientes FTP • email • lynx • wget • traceroute • Hablando con otras personas • Resumen Una red consiste en varias computadoras conectadas juntas. La red puede ser tan simple como unas computadoras conectadas en su casa u oficina, o tan complicada como una red universitaria grande o incluso la Internet entera. Cuando su computadora es parte de una red, usted tiene acceso a esos sistemas directamente o a través de servicios como el correo y la web. Hay una variedad de programas de red que usted puede usar. Algunos son capaces de realizar diagnósticos para ver si todo esta funcionando correctamente. Otros (como los lectores de correo y navegadores), son útiles para entrar en contacto con otras personas.

ping El comando ping(8) envía paquetes ICMP ECHO_REQUEST a un host especificado. Si el host responde, usted obtiene de vuelta un paquete ICMP. ¿Suena extraño? Bien, usted puede hacer "ping" a una dirección IP para ver si esa maquina esta viva. Si no hay ninguna respuesta, usted sabra que algo anda mal. Aqui hay un ejemplo de una conversacion tipica entre dos ususarios de Linux: Usuario A: Loki esta fuera de nuevo. Usuario B: ¿Estas seguro? Usuario A: Si, yo probé haciéndole un ping, pero no hay ninguna respuesta.

117


En estos casos hacer un ping es muy útil en el dia a dia. Proporciona una manera rapida de saber si un usuario esta conectado a la red. La sintaxis basica es: $ ping <ip address or hostname>

Hay, por supuesto, varias opciones que pueden agregarse. Verifique la pagina del manual de ping(1) para mas información.

finger finger(1) le mostrara la información sobre el usuario especificado. Usted da al finger un nombre de usuario o una dirección de email y él tratara de contactar el servidor necesario y le mostrara el nombre de usuario, oficina, numero de teléfono y otro tipo de información. Aquí tiene un ejemplo: $ finger johnc@idsoftware.com

finger puede mostrar el nombre de usuario, estado del correo, números de teléfonos, y archivos llamados "dot plan" y "dot project". Claro, la información varia dependiendo de cada servidor. El incluido en Slackware por defecto muestra la siguiente informacion: • • • • • • • •

Nombre de usuario (username). El numero de Habitacion. Numero telefonico de la casa. Numero de telefono del trabajo. Estado del inicio de sesion. Estatus del correo electronico. Contenido del archivo.plan del directorio Home del usuario. Contenido del archivo.project en el directorio Home del ususario.

Los primeros cuatro artículos pueden configurarse con el comando chfn. Estos valores se archivan en /etc/passwd. Para cambiar la información de los archivos .plan y .project simplemente revíselos con su editor de textos favorito. Ellos deben encontrase en su directorio home con los nombres .plan .project. Muchos usuarios hacen finger a su propia cuenta para saber rápidamente si tienen correo nuevo. O , para conocer que contienen actualmente sus archivos .plan y .project.John Carmack de id Software continuamente actualiza su archivo plan para informar a la comunidad de usuarios en que esta trabajando actualmente. Como muchos otros comandos, finger posee opciones especiales. Revise la pagina del manual para mas información sobre los comandos que puede utilizar.

telnet Alguien dijo alguna vez que telnet(1) era la cosa más interesante que había visto en las computadoras. La habilidad de entrar en una maquina remota es lo que separa a una maquina Unix de cualquier otra. 118


telnet le permite iniciar sesión en otra computadora, como si usted estuviera sentado en su propio terminal. Una vez que se verifican su username y contraseña, se le da a usted un prompt del shell. Desde allí, usted puede hacer todo lo que se puede hacer en una consola de texto. Escribir emails, leer grupos de noticias, mover archivos, y así sucesivamente. Si usted esta ejecutando X y hace telnet con una maquina a través de un xterm, usted puede ejecutar programas X en la computadora remota y puede desplegarlos en la suya. Vea la sección llamada Exportando Pantallas en el Capitulo 6 para mas información. Para iniciar sesión en una maquina remota, escriba lo siguiente: $ telnet <hostname>

Si el host responde, usted se encontrara con un login prompt. Dele su username y contraseña. Eso es todo. Usted esta ahora en el shell. Para salir de una sesión de telnet, use el comando exit o el comando logout.

NOTA IMPORTANTE: telnet no encripta la información que se envia. Todo se envía en texto plano, incluso las contraseñas. No es aconsejable utilizar telnet a través de la Internet. En cambio. Puede utilizar Secure Shell. Encriptara todo él trafico y es distribuido gratuitamente. Visite http://www.ssh.org/ para mas información.

Clientes FTP: FTP (File Transfer Protocol) significa Protocolo de Transferencia de Archivos. Le permite enviar y recibir los archivos entre dos computadoras. Existe el servidor FTP y el cliente FTP. Nosotros explicaremos el cliente en esta sección. Para los curiosos, el "cliente" es usted. El "servidor" es la computadora que contesta su petición FTP y le permite entrar. Usted puede bajar y subir archivos al servidor. El cliente no puede aceptar conexiones FTP, solo puede conectarse a servidores.

ftp Para conectarse a un servidor FTP, simplemte ejecute el comandp ftp(1) y especifique el host: $ ftp <hostname>

Si en el host esta ejecutando un servidor FTP, le pedirá su username y contraseña. Usted puede entrar como "anónimo". Los sitios de FTP anónimos son muy populares para archivos de software. Por ejemplo para conseguir Slackware Linux via FTP, usted debe usar un FTP anonimo. Una vez conectado, usted estara en el prompt ftp>. Existen ordenes especiales para FTP, pero son similares a otros comandos normales. A continuación se muestran algunos comandos básicos y lo que hacen. 119


Table 13-1. ftp Commands Comando Proposito ls Lista los archivos cd <dirname> Cambia de directorio put <filename> Baja un archivo put <filename> Sube un archivo hash Cambia el indicador de hash mark prom Cambia al modo interactivo de Downloads mget <mask> Baja un archivo o un grupo de archivos, los comodines estan permitidos mput <mask> Sube un archivo o un grupo de archivos, los comodines estan permitidos quit Cierra session en el servidor FTP FTP es un programa muy f谩cil de utilizar, pero le falta la interfaz de usuario que muchos estamos acostumbrados a usar hoy en dia. Las paginas del manual explican un poco mas acerca de las opciones del comando ftp(1).

Ncftp ncftp(1) es una alternativa al cliente ftp tradicional incluida en Slackware. Es un programa basado en texto, pero ofrece muchas ventajas mas que ftp, incluyendo: " " " " "

Completacion con TAB Marcar Archivos Modos de transferencia pasivos y no-pasivos. Uso m谩s liberal de los comodines Historial de comandos.

Por defecto, ncftp intenta entra como usuario an贸nimo al servidor. Usted puede obligar al ncftp a presentar un login prompt usando la opci贸n "-u". Una vez adentro, usted puede usar los mismos comandos del ftp, solo que con una interfaz mas parecida al bash. Figure 13-1. Example NcFTP screen.

120


email El correo electrónico es una de las cosas más populares que se pueden hacer a través de la Internet. En 1998, se informo que fue enviado mas correo electrónico que correo normal. Es de hecho común y útil. En Slackware, proporcionamos un servidor de correo normal, y algunos clientes de correo. Todos los clientes son basados en texto. Muchos usuario de Windows pueden estar en contra de esto pero usted se dará cuenta de que es más conveniente un cliente basado en texto, especialmente cuando se chequea el correo de forma remota.

pine pine(1) (pine not is elm). O algo así significa. La Universidad de Washington creo este programa para las noticias de Internet y mandar correo electrónico de forma fácil para sus estudiantes. pine es uno de los clientes de correo electrónico más populares disponibles hoy en dia para Unix y Windows por igual.

121


Figure 13-2. Menu Principal del pine

Usted vera un menu de comandos y una fila de teclas de comando abajo. pine es de hecho un programa complejo, por lo que nosotros no explicaremso todas las caracteristicas aqui. Para ver lo que esta en su bandeja de entrada, presione i. Sus mensajes se listan con su fecha, autor, y asunto. Resalte el mensaje que usted quiere leer y presione enter para verlo. Presionado r puede escribir una respuesta al mensaje. Una vez que halla escrito la respuesta, presione Ctrl+X para enviarlo. Usted puede presionar i para volver a la lista de mensajes. Si usted quiere eliminar un mensaje, presione d, para borrar el mensaje resaltado. Pine borrara el correo cuando usted salga del programa . pine tambien le permite guardar su correo en carpetas. Usted puede ver una lista de las carpetas presionando l. En la lista de mensajes, presione s para guardarlo en otra carpeta. pine le pedira el nombre de la carpeta donde se guardara el mensaje. pine ofrece muchas, muchas otras opciones; usted puede mirar la pagina del manual para mas informacion.

elm elm(1) es otro popular cliente de correo electronico basado en texto. Aunque no tiene una interfaz de usuario amistosa como el pine, ha estado mucho mas tiempo en el aire.

122


Figure 13-3. Pantalla Principal de elm.

Por defecto, usted se encuentra en su bandeja de entrada. Los mensajes se listan con el numero del mensaje, fecha, remitente, y asunto. Use las flechas para resaltar el mensaje que usted quiere. Presione enter para leer el mensaje. Para escribir un nuevo mensaje, presione m en la pantalla principal. La tecla d marcara un mensaje para ser eliminado. Y la tecla r contestara el mensaje que usted esta leyendo actualmente. Todas estas teclas se listan en el fondo de la pantalla con un prompt. La pagina del manual explica elm con mas detalle.

mailx mailx(1) es un cliente de correo manejado desde la linea de correo. Es muy primitivo y no ofrece absolutamente nada mas que las otras interfaces de ususario. Sin embargo, mailx es util cuando usted necesita mandar un correo rapidamente, mandar correo masivo o algo similar. El comando basico es: $ mailx -s <subject> <to-addr>

mailx lee el cuerpo del mensaje de la entrada normal. Asi que usted puede usar el comando cat para mandar algo por correo, o simplemente puede escribir el texto y presionar Ctrl+D cuando termine de escribir el mensaje. Aqui hay un ejmplo de como mandar un archivo fuente de un programa a otra persona: $ cat randomfunc.c | mailx -s "Here's that function" \ asdf@example.net 123


Las paginas del manual explican mas a fondo lo que puede hacer con mailx, por lo que probablemente tendra que leerlo antes de usarlo.

lynx lynx es un navegador basado en texto. Es una manera rapida de buscar algo en Internet. Muchas veces las imagenes estan en el mismo sitio que se encontraban antes. Para arrancar lynx, solamente escriba lynx en el prompt: $ lynx

Figure 13-4. Pagina de inicio del lynx.

Usted puede especificar un sitio especifico para inicar lynx : $ lynx http://www.slackware.com

lynx muestra las teclas de comandos y lo que hace cada una en la parte baja de la pantalla. Las flechas de arriba y abajo permiten moverse dentro del documento, con enter se abre el link resaltado, y la flecha izquierda regresa a la pagina anterior. Pulsando d se bajara el archivo que se encuentre seleccionado. La orden g funciona como la opcion Ir a, usted puede especificar una URL para abrir. Hay muchas otras ordenes para lynx. Usted puede consultar la pagina del manual, o presionar h para obtener ayuda. 124


wget wget(1) es una utilidad de la linea de comandos para bajar archivos directamente de un URL especificado. Es util para bajar sitios web completos y verlos al estar desconectado, o para descargar de forma mas segura archivos de HTTP o de servidores FTP. La sintaxis básica es: $ wget <url>

Usted tambien puede utilizar opciones. Pro ejemplo, esto bajar elwebsite de Slackware: $ wget --recursive http://www.slackware.com

wget creara un directorio llamado www.slackware.com y gurdara los archivos alli. wget tambien pude obtener archivos de un sitio FTP; solo especifique una direccion FTP en lugar de una HTTP. wget tiene muchas mas opciones que lo hacen util para scripts especificos (como crear mirrors ,por ejemplo). Consulte la pagina del manual para mas informacion.

Traceroute Slackware incluye el comando traceroute(8) 4.4BSD. Es una herramienta de diagnóstico de red útil. traceroute muestra todos los host por donde pasa un paquete al tratar de alcanzar su destino. Usted puede ver a cuantos "hops" del sitio de Slackware se encuentra usted con este comando: $ traceroute www.slackware.com

Cada host sera listado, junto con el tiempo de respuesta de cada uno. Aqui hay un ejemplo de su ouput: $ traceroute www.slackware.com traceroute to www.slackware.com (204.216.27.13), 30 hops max, 40 byte packets 1 zuul.tdn (192.168.1.1) 0.409 ms 1.032 ms 0.303 ms 2 207.171.227.254 (207.171.227.254) 18.218 ms 32.873 ms 32.433 ms 3 border-sf-2-0-4.sirius.com (205.134.230.254) 15.662 ms 15.731 ms 16.142 ms 4 pb-nap.crl.net (198.32.128.20) 20.741 ms 23.672 ms 21.378 ms 5 E0-CRL-SFO-03-E0X0.US.CRL.NET (165.113.55.3) 22.293 ms 21.532 ms 21.29 ms 6 T1-CDROM-00-EX.US.CRL.NET (165.113.118.2) 24.544 ms 42.955 ms 58.443 ms 7 www.slackware.com (204.216.27.13) 38.115 ms 53.033 ms 48.328 ms

traceroute es similar al comando ping ya que utiliza paquetes ICMP. Hay varias opciones que usted puede especificar con el traceroute. El numero maximo predefinido de "hops" es 30, pero eso puede cambiarse con la opcion "-m". Se explican otras opciones en detalle en la pagina web.

125


Hablando con otras personas talk talk(1) permite a dos ususarios charlar. Se divide la pantalla, horinzontalmente, por la mitad. Para solicitar un chat con otro usuario, se utiliza esta orden: $ talk <person> [ttyname]

Figura 13-5. Dos usuarios en una session de talk.

Si usted especifica solamente el nombre de usuario, se asume que será una charla local, así que solo se le preguntara a los usuarios locales. La información requerida para charlar puede obtenerse con el comando w(1). talk puede contactar también a usuarios remotos. Como username usted simplemente especifica una dirección de correo. talk intentara buscar a ese usuario en este host. talk es algo limitado. Solo soporta a dos usuarios.

ytalk ytalk(1) es un reemplazo compatible para talk. Viene con el Slackware con el nombre de ytalk. La sintaxis es similar, pero tiene algunas diferencias: $ ytalk <username>[#ttyname]

126


Figura 13-6. Tres usuarios en una session de ytalk.

El nombre de usuario y el terminal se especifican igual que en talk, excepto que usted debe ponerlos juntos con el símbolo (#). ytalk ofrece varias ventajas: • • • •

Soporta mas de dos usuarios. Un menú de opciones se puede utilizar cuando quiera presionando Esc. Usted puede usar el shell mientras esta en la sesión de charla. Mucho más..

Si usted es un administrador de algún servidor, usted debe asegurarse de habilitar el puerto ntalk en etc/inetd.conf. ytlak necesita ese puerto para trabajar correctamente.

Resumen Usted debe conocer ahora algunas ordenes de diagnostico básico de redes. Usándolas, usted puede determinar si hay problemas con alguna computadora o la red entre su sistema y uno remoto. También, usted debe saber acerca de algunos clientes de correo, web browsers, clientes ftp y programas de comunicación.

127


Capitulo14. Guardando Archivos Contenido • gzip • bzip2 • tar • zip • Resumen En Slackware Linux, hay varios programas que pueden usarse para comprimir y guardar archivos. Estos programas son útiles para hacer respaldos y enviar copias de archivos entre maquinas conectadas en red. Hay programas para trabajar con los archivos tipo Unix, así como los de archivos tipo Windows.

gzip gzip(1) es el programa de compresión del GNU. Toma solo un archivo y lo comprime. El comando básico es el siguiente: $ gzip infile

El archivo resultante se llamara infile.gz y normalmente será un poco más pequeño que el archivo inicial. Note que infile.gz reemplazara a inifile. Esto significa que inifile ya no existirá, aunque quede una copia de el gzipeada. Los archivos de texto normales se comprimen muy bien, mientras que las imágenes jpeg, mp3s, y otros tipos de archivos no se comprimen muy bien debido a que ellos ya están comprimidos. El uso básico provee un equilibrio entre el tamaño final y el tiempo de compresión. La compresión máxima puede lograrse usando el siguiente comando: $ gzip -9 infile

Esto tomara mas tiempo para comprimir el archivo, pero el resultado será un archivo tan pequeño como el gzip pueda hacerlo. Usando los valores más bajos en la línea de comandos causara que se realicé la compresión más rápido, pero el archivo no tendrá una buena compresión. Para descomprimir archivos gzipeados pueden usarse dos comandos, que son básicamente el mismo programa. gzip descomprimirá cualquier archivo que tenga una extensión conocida. Una extensión conocida puede ser cualquiera de las siguientes: .gz, -gz, .z, -z, .Z o -Z. El primer método seria usar el comando gunzip(1) en el archivo: $ gunzip infile.gz

Esto dejara una versión descomprimida del archivo en el directorio actual, y la extensión .gz sera eliminada del archivo. 128


La otra manera de descomprimir un archivo gzipeado es utilizar el comando gzip: $ gzip -d infile.gz

Con esto obtendrá el mismo resultado del comando gunzip. La razón es simple: gunzip simplemente es un link simbolico a /bin/gzip: $ cd /usr/bin $ ls -l gunzip lrwxrwxrwx 1 root root 9 Feb 2 09:45 gunzip -> /bin/gzip

Así que, gunzip es simplemente una forma de ejecutar el gzip con un nombre diferente. El programa puede determinar como esta llamándose y ejecuta la acción apropiada. En este caso, gzip sabrá que esta siendo llamado por el gunzip y descomprimirá el archivo. Por lo tanto, usted puede usar gzip o gunzip para descomprimir cualquier archivo gzipeado.

bzip2 bzip3(1) es un programa de compresión alternativo instalado en Slackware Linux. Usa un algoritmo de compresión diferente al de gzip, lo que resulta en algunas ventajas y desventajas. La ventaja principal del bzip2 es el tamaño final del archivo comprimido. bzip2 casi siempre comprime mejor que el gzip. En algunos casos, esto puede producir archivos realmente pequeños. Esto puede ser una gran ventaja para las personas con conexiones de modem lentas. La desventaja del bzip2 es que utiliza mas intensivamente el CPU que el gzip. Esto significa que para comprimir un archivo con bzip necesitara de muchos mas tiempo y uso del CPU del que necesitaría si lo hiciera con el gzip. Al considerar un programa de compresión, usted debe decidir entre velocidad o compresión y determinar que es más importante. La forma de utilizar el bzip2 es muy similar a la del gzip, asi que no gastaremos mucho tiempo para explicárselo. Simplemente ejecute bzip2 mas el nombre del archivo a comprimir: $ bzip2 infile

El resultado final será un archivo de menor tamaño y se llamara inifile.bz2. Al igual que con el gzip, el archivo inicial ya no existirá, ya que bzip2 reemplaza el archivo inicial con una copia comprimida. Usted puede utilizar un comando numérico para modificar la tasa de compresión y hacerla más rápida igual que en gzip. El siguiente ejemplo muestra como alcanzar la compresión máxima con el bzip2: $ bzip2 -9 infile

Existen dos comandos para descomprimir los archivos con extensión.bz2. Usted puede utilizar bzip2 o bunzip2(1) para descomprimir los archivos bzipeados. Para usar bzip2 necesitara agregar un argumento a la línea de comando: 129


$ bzip2 -d infile.bz2

Esto descomprimirá el archivo y remplazara el existente con una copia descomprimida. Este archivo también será despojado de la extensión.bz2 De igual forma usted puede usar el bunzip2 para descomprimir el archivo: $ bunzip2 infile.bz2

Usted obtendrá el mismo resultado de cualquier forma, gracias a un link simbólico. Comprobemos que /bin/bunzip2 muestra un simple link simbolico a /bin/bzip2. Esto se hace con el mismo truco que utilizaron con el gzip. $ cd /bin $ ls -l bunzip2 lrwxrwxrwx 1 root root

5 Feb 2 09:45 /bunzip2 -> bzip2

tar tar(1) es el archivador de cintas del GNU. Toma varios archivos o directorios y crea un archivo grande. Esto le permite comprimir un árbol de directorios enteros lo cual simplemente no es posible utilizando gzip o bzip2. tar tiene muchas opciones que se explican en la pagina del manual. Esta sección tratara apenas el uso básico de tar. El uso más común de tar es descomprimir y desarchivar paquetes que usted halla obtenido de un sitio web o de un sitio ftp. La mayoría de los archivos vienen con la extensión.tar.gz. Esto es comunmente conocido como un "tarball". Significa que se guardaron varios archivos usando tar y después lo comprimieron usando gzip. Usted también puede verlos con la extensión.tar.Z. Significa la misma cosa. Alternativamente, usted podría encontrar archivos.tar.bz2 en alguna parte. La fuente del Kernel es distribuida de esa forma porque es más pequeño para el download. Esto es simplemente varios archivos guardados con tar y comprimidos con bzip2. Usted puede extraer todos los archivos utilizando tar y algunas otra opciones.Para abrir un tarball se utiliza la opcion –z que permite ejecutar primero el programa gzip para descomprimirlo. La manera más común de descomprimir un tarball es la siguiente: $ tar -xvzf hejaz.tar.gz

Aquí vemos algunas opciones. ¿Que significa cada una? La opción -x quiere decir extraer. Esto es importante, ya que le dice a tar que hacer con el archivo exactamente. En este caso, nosotros estamos colocando los archivo tal y como venían. -v quiere decir verboso. Esto mostrara una lista de todos los archivos que están siendo desarchivados. Es absolutamente aceptable dejar fuera esta opción, si le parece algo aburrido. Alternativamente, usted podría usar la opción -vv para que sea muy verboso y muestre mas información aun sobre los archivos. La opción -z le dice a tar que ejecute hejaz.tar.gz primero a 130


través del gunzip. Y finalmente la opción -f, le dice a tar que la siguiente línea es el archivo donde debe operar. Hay otras maneras de escribir esta misma orden. En sistemas más viejos que no cuenten con una versión decente del GNU tar, usted podría verlo así: $ gzip -dc hejaz.tar.gz | tar -xvf -

Esta línea de comando descomprimirá el archivo primero y enviara el resultado a tar. Ya que gzip escribe sus resultados usando el standard output, este comando descomprimirá el archivo en standard output. La tubería lo envía después a tar para que lo desarchive. El símbolo "-" le indica que debe trabajar en standard input. Desarchiva todos los datos que recibe del gzip y escribe todo eso al disco. Otra manera de escribir el primer comando es quitando el simbolo "-" de la línea de comando: $ tar xvzf hejaz.tar.gz

Usted también podría encontrar archivos comprimidos con bzip2. La versión de tar que viene con Slackware Linux puede manejar estos archivos al igual que los comprimidos usando el gunzip. El lugar de la opción -x en la línea de comando, tendría que usar la opción -y: $ tar -xvyf foo.tar.bz2

Es importante hacer notar que tar colocara todos los archivos en el directorio actual. Así, que si usted tiene un archivo en /tmp que usted quería descomprimir en su directorio home, usted tiene dos opciones: Primera, podria mover el archivo a su directorio home y después extraerlos usando tar. O podria especificar la ruta al archivo en la línea de comandos: $ tar -xvzf /tmp/bar.tar.gz

Se descargara el contenido del archivo a su directorio home, y el archivo original se mantendrá todavía en el directorio /tmp. La segunda operación más común es la de hacer sus propios archivo tar. Hacer un archivo no es mas complicado que desarchivarlo; Apenas se utiliza un juego diferente de opciones en la línea de comandos. Para crear un archivo tar comprimido de todos los archivos en el directorio actual ( incluyendo cualquier subdirectorio y sus archivos), usted usaría el tar de esta forma: $ tar -cvzf archive.tar.gz .

En este comando, la opción -c le dice a tar que cree un archivo, la opción -z envía el resultado a gzip para que lo comprima. archive.tar.gz es el nombre del archivo que usted quiere crear. Usted puede colocarle el nombre que usted quiera y si incluye una dirección completa, tar coloca el archivo en ese directorio. Aquí hay un ejemplo de eso: $ tar -cvzf /tmp/archive.tar.gz .

El archivo quedara entonces en /tmp. Usted también puede especificar todos los archivos y directorios que serán incluidos en el archivo colocándolos al final del comando. En este caso, el “.” es el directorio que se incluirá en el 131


archivo. Esto puede reemplazarse con una lista de varios archivos, o cualquier cosa que usted quiera archivar.

zip Finalmente, hay dos utilidades que pueden usarse en los archivos zip. Estas son muy comunes en el mundo de Windows, por lo que Linux tiene los programas para trabajar con ellos. El programa de compresión se llama zip(1), y el programa de descompresión se llama unzip(1). Comprimir un archivo es fácil: $ zip foo *

Esto creara el archivo foo.zip, que contendrá todos los archivos que se encuentran en el directorio actual. zip le agregara la extensión.zip automáticamente así que no hay necesidad de incluir eso en el nombre del archivo. Usted también podría incluir todos los directorios que se encuentran dentro del directorio actual usando la opción recursiva: $ zip -r foo *

Descomprimir los archivos es fácil, también. $ unzip foo

Esto extraerá todos los archivos que se encuentra en foo.zip, incluyendo cualquier directorio. Las utilidades zip tienen varias opciones avanzadas para crear archivos autoextraíbles(self-extracting), omitir archivos, controlar el tamaño del archivo comprimido, y mucho más. Vea las paginas del manual de zip y de unzip para averiguar como usar estas opciones.

Resumen Este capitulo trato sobre los programas que se usan para comprimir y descomprimir archivos. Usted debe saber como crear un tar usando sus opciones y un programa de compresión, como descomprimir y como ocuparse de los archivos basados en Windows. Casi todo los que se trasmite o se transfiere esta involucrado de alguna forma con estos archivos, por lo que estos conocimientos le serán muy útiles.

132


Capitulo 15. vi Contenido • Inciando vi • Modos • Abriendo archivos • Guardando archivos • Cerrando vi • Configuracion de vi • Teclas del vi • Resumen

vi(1) es el programa de edición standard en Unix, y dominarlo es esencial para cualquier administrador de sistemas. Hay varias versiones (o copias) de vi disponible, incluyendo el vi, elvis, vile, y el vim. Uno de ellos esta disponible en casi cualquier versión de Unix, así como también en Linux. Todas esta versiones incluyen las mismas características básicas de configuración y de comandos, así que aprendiendo a usar un clon Será fácil manejar cualquier otro. vi incluye varias características poderosas incluyendo resaltado de sintaxis, formato de código, y un poderoso sistema para buscar y remplazar, macros, y más. Estas características lo hacen especialmente atractivo a programadores, diseñadores web, etc. Los administradores del sistema aprecian la automatización e integración con el shell. En Slackware Linux, la versión por defecto del vi es la elvis. Otras versiones incluyendo el vim y gvim - están disponibles si se han instalados los paquetes correspondientes. El gvim es una versión para X Window del vim que incluye barra de herramientas, menús intercambiables y cuadros de dialogo.

Inciando vi vi puede ser iniciado desde la línea de comandos de muchas formas. La forma más simple es la siguiente: $ vi

Esto pondrá en marcha el vi con un buffer vació. En este momento, usted vera una pantalla principalmente en blanco. Él esta ahora en "modo de comando", esperando que usted haga algo. Para una explicación de los distintos modos del vi, vea la sección llamada Modos. Para salir del vi, escriba lo siguiente: :q

133


Figura 15-1. Una sesion de vi.

Asumiendo que no exista ningún cambio en el archivo, este comando cerrara el vi. Si ha hecho algún cambio, él le advertirá que han ocurrido cambios y le dirá como ignorarlos. Usted puede iniciar el vi con un archivo existente. Por ejemplo, el archivo /etc/resolv.conf será abierto si hace lo siguiente: $ vi /etc/resolv.conf

Finalmente, puede iniciar el vi en una línea particular de un archivo. Por ejemplo, usted puede iniciar vi en la línea 47 del archivo /usr/src/linux/init/main.c haciendo esto: vi +47 /usr/src/linux/init/main.c

vi le mostrara el archivo y colocara el cursor en la línea especificada. En caso de que usted especifique una línea que este después del final del archivo, vi colocara el cursor en la ultima línea. Esto es especialmente útil para programadores, ya que ellos pueden saltar directamente a la ubicación de algún error en el archivo, sin tener que buscarla.

Modos vi opera en varios modos que se usan para lograr distintas tareas. Cuando usted inicia el vi, usted esta ubicado en el modo de comando. Desde este punto, usted puede emitir varias ordenes para manipular el texto, moverse dentro del archivo, guardar, salir y cambiar el modo. La edición del texto se 134


realiza en el modo de inserción. Usted puede cambiar rápidamente entre los modos pulsando una variedad de teclas que se explican mas adelante.

Modo Comando (Comand Mode) Usted se encuentra primero en el modo comando. Desde este modo, usted no puede escribir o editar texto directamente. Sin embargo, usted puede manipular el texto, buscar, cerrar, grabar, abrir nuevos archivos, y más. Esto será solo una introducción al modo comando. Para una descripción de todos los comandos, revise la sección llamada Teclas vi. Probablemente el comando mas usado en el modo comando es el que se usa para cambiar al modo de inserción(insert mode). Esto se logra pulsando la tecla i. El cursor cambia de forma, y --INSERT-- se muestra al final de la pantalla (note que esto no ocurre en todas las versiones de vi). Desde allí, todo lo que escriba será introducido en el buffer actual y se mostraran en pantalla. Para volver al modo comando, presione la tecla Esc. En el modo comando usted puede moverse dentro del archivo. En algunos sistemas, usted puede usar las teclas de navegación para moverse alrededor. En otros sistemas, usted tendrá que usar teclas más tradicionales como "hjkl". Aquí esta una descripción simple de como se usan estas teclas para moverse alrededor. h

Un carácter a la izquierda

j

Un carácter hacia abajo

k

Un carácter hacia arriba

l

Un carácter a la derecha

Simplemente presione una tecla para moverse. Como usted vera mas adelante, estas teclas pueden combinarse con números para moverse mas eficazmente. Muchos de los comandos que usted utilizara en el modo comando empiezan con ":". Por ejemplo, salir es :q. Los dos puntos indican simplemente que es un comando, mientras que "q" le dice al vi que cierre. Otros comandos son un numero opcional, seguido de una letra. Estos comandos no llevan el símbolo ":" antes, y generalmente se usan para manipular el texto Por ejemplo para borrar una línea se usa el comando dd. Esto eliminara la línea donde se encuentra el cursor. Emitiendo la orden 4dd le dirá al vi que elimine la línea donde se encuentra el cursor y las otras 3 líneas que siguen después. En general, él numero le dice al vi cuantas veces ejecutar el comando. Usted puede combinar un numero con las teclas de movimiento para moverse a través de varios caracteres al mismo tiempo. Pro ejemplo, 10k subirá diez líneas. El modo comando también puede usarse para cortar y pegar, insertar texto, y leer otros archivos en el buffer actual. Para copiar texto se utiliza la tecla "y". Para copiar la línea actual se utilizan las teclas "yy", estas pueden precederse con un numero para alcanzar mas líneas. Después, muévase a la ubicación donde se copiaran y presione p. El texto será pegado en la línea siguiente a su ubicación actual. 135


Para cortar texto se utiliza "dd", y puede usarse p para pegar el texto de nuevo al archivo. Leer el texto de otro archivo es un procedimiento más simple. Solo presione :r, seguido de un espacio y el nombre del archivo que contiene el texto que quiere que sea insertado. El contenido del archivo se pegara en el buffer actual en la línea después del cursor. Los clones mas sofisticados del vi contiene incluso la posibilidad de completacion similar a la del shell. El uso final que explicaremos es el de buscar. El modo comando permite búsquedas simples, así como también comandos de búsqueda-y-reemplazo que hacen uso de una poderosa versión de expresiones regulares. Una explicación detallada de las expresiones regulares se encuentra mas adelante en este capitulo, por lo que esta sección tratara solo lo medios de búsqueda más sencillos. Una búsqueda simple se realiza utilizando la tecla /, seguida del texto que usted esta buscando. vi buscara a partir de la ubicación del cursor hasta el final alguna coincidencia, deteniéndose al encontrar alguna. Note que las coincidencias inexactas también harán detener al vi. Por ejemplo, una búsqueda para "the" hará que el vi se detenga también en "then", "therefore", y así sucesivamente. Esto es porque todas esas palabras coinciden con "the", pero sólo al principio. Después de que vi encuentra la primera coincidencia usted pude seguir adelante presionando la tecla / seguida de enter. Usted también puede buscar a través del documento reemplazando la tecla / con la tecla ?. Por ejemplo, una búsqueda hacia atrás de la palabra "the" se logra escribiendo el comando ?the.

Modo de inserción (Insert Mode) Insertar y cambiar texto se logra utilizando el modo de inserción. Como explicamos anteriormente, usted puede entrar en el mode de inserción pulsando i en el modo comando. Entonces, todo el texto que usted escriba entrara en el buffer actual. Presionando la tecla Esc usted puede regresar al modo comando. Usted puede reemplazar texto de varias formas. Desde el modo comando, presionando la tecla r le permite cambiar un carácter que se encuentre debajo del cursor. Simplemente escriba el nuevo carácter y este remplazara al que se encuentra debajo del cursor. Usted volverá inmediatamente al modo comando nuevamente. Presionado R le permita reemplazar todos los caracteres que usted quiera. Para salir de este modo de reemplazo, solo presione Esc para volver al modo comando. Hay otra manera de cambiar entre inserción y reemplazo. Presionado la tecla insert en el modo comando usted entrara en el modo de inserción. Una vez que usted entra en el modo de inserción, La tecla Insert del teclado le permite cambiar entre insertar y reemplazar. Presionándola una vez le permite reemplazar. Presionándola una vez mas le permite insertar texto.

136


Abriendo Archivos vi permite abrir archivos desde el modo comando así como también especificar un archivo para abrir directamente desde la línea de comando. Para abrir el archivo /etc/lilo.conf: :e /etc/lilo.conf

Si usted ha hecho cambios al buffer actual sin guardar, vi se lo advertirá. Usted todavía puede abrir el archivo sin necesidad de guardar el actual presionando :e!, seguido de un espacio y el nombre del archivo. En general, las advertencias del vi pueden ignorarse utilizando la misma orden seguida de un signo de admiración. Si usted quiere volver a abrir el archivo actual simplemente escriba e!. Esto es útil si usted a desordenado el archivo y desea volverlo a abrir. Algunos clones del vi (por ejemplo, vim) permiten buffer simultáneos que permiten tener los dos archivos abiertos al mismo tiempo. Por ejemplo, para abrir el archivo 09-vi.sgml en mi directorio home mientras otro archivo estaba abierto, teclearía lo siguiente: :split ~/09-vi.sgml

El nuevo archivo se mostrara en la mitad superior de la pantalla, y e archivo viejo se mostrara en la mitad inferior. Hay muchas ordenes para manipular la pantalla dividida, y muchas de estas ordenes empiezan a parecerse a algo salido de EMACS. El mejor lugar para buscar estos comandos será la pagina del manual de su copia de vi. Nota: muchos clones no soportan la idea de la pantalla divida, así que tal vez usted no podría utilizarlo en lo absoluto.

Guardando Archivos There are several ways to save files in vi. If you want to save the current buffer to the file randomness, you would type: :w randomness

Once you've saved the file once, saving it again is as simple as typing :w. Any changes will be written out to the file. After you've saved the file, you are dumped back into command mode. If you want to save the file and quit vi (a very common operation), you would type :wq. That tells vi to save the current file and quit back to the shell. On occasion, you want to save a file that is marked as read-only. You can do this by adding an exclamation point after the write command, like so: :w! :wq!

However, there will still be instances where you cannot write the file (for example, you are attempting to edit a file that is owned by another user). When this happens, vi will tell you that it cannot save the file. If you really want to edit the file, you'll have to come back and edit it as root.

137


Cerrando vi Una manera de cerrar vi es utilizando:wq que guardara el buffer actual antes de cerrar. Usted también puede salir sin guardar utilizando :q o:q!. Este ultimo se utiliza cuando usted ha modificado el archivo pero no ha hecho ningún cambio en él. En ocasiones, su maquina o vi podrían colgarse. Sin embargo, elvis y vim tomaran medidas para minimizar el daño a cualquier buffer abierto. Ambos editores guardan los buffer abiertos en archivos temporales en algunas ocasiones. Este archivo normalmente se llama igual al archivo abierto, pero con un punto al principio. Esto oculta el archivo. Este archivo temporal se elimina una vez que el editor se cierra en condiciones normales. Esto significa que la copia temporal todavía estar por ahí si algo sale mal. Cuando usted regresa a editar el archivo de nuevo, vi le preguntara que acción tomar. En la mayoría de los casos, gran parte de su trabajo no guardado puede recuperarse. elvis también le enviara un correo (desde Graceland, bastante extraño :) Diciéndole que existe una copia de respaldo.

Configuracion de vi Su clon del vi puede configurarse de varias maneras. Una variedad de comandos pueden introducirse en el modo comando para configurar el vi como a usted le guste. Dependiendo de su editor, usted puede activar opciones para hacer más fácil la programación (como el resaltado de sintaxis, auto-identidad, y más), prepara los macros para auto-realizar tareas, habilitar la sustitución textual, y más. Casi todos estos comandos se pueden poner en un archivo de configuración en su directorio home. elvis necesita un archivo .exrc, mientras que el vim necesita de un archivo .vimrc. La mayoría de las configuraciones que pueden hacerse en el modo comando pueden ser colocadas en el archivo de configuración. Esto incluye la información de configuración, substituciones textuales, macros y más. Explicar todas estas opciones y las diferencias entre los editores es un asunto bastante complejo. Para mas información, revise la pagina del manual o el sitio web de su editor vi preferido. Algunos editores (como el vim) tienen una extensa ayuda dentro del editor que puede obtenerse utilizando el comando :help, o algo similar. Usted también puede revisar el libro "Aprendiendo el editor vi por Lamb y Robbins" de O'Reilly. Muchos programas en Linux inician por defecto un archivo de texto en vi. Pro ejemplo, al editar su crontabs (vea la sección en cron) se ejecuta el vi por defecto. Si no le gusta el vi y le gustaría que otro editor sea iniciado por defecto, todo lo que usted necesita hacer es cambiar la variable de ambiente VISUAL con la del editor que usted prefiere. Para información sobre configuración de variables de entorno, vea la sección llamada Variables de Entorno en el Capitulo 8. Si usted quiere estar seguro de que su editor será iniciado cada vez que usted inicia sesión, agregue la configuración VISUAL a sus archivos .bash_profile o .bashrc.

138


Teclas del vi Esta es una referencia rapida de muchas de las ordenes mas comunes del vi. Tabla 15-1. Movimiento

Operacion

Tecla

Izquierda,abajo,arriba,derecha h, j, k, l Hasta el final de la linea

$

Hasta el principio de la linea

^

Hasta el final del archivo

G

Hasta el principio del archivo

:1

Hasta la linea 47

:47

Tabla 15-2. Edicion

Operacion

Tecla

Eliminar una linea

dd

Eliminar cinco lineas

5dd

Reemplazar un caracter

r

Eliminar un caracter

x

Eliminar diez caracteres

10x

Deshacer la ultima accion

u

Unir la linea actual y la siguiente J Tabla 15-3. Busqueda

Operacion

Tecla

Buscar “asdf”

/asdf

Buscar hacia atras “asdf”

?asdf

Repetir la busqueda hacia adelante

/

Repetir la ultima busqueda hacia atras ? Tabla 15-4. Guardar y Cerrar

Operación

Tecla

Cerrar

:q

Cerrar sin guardar

:q!

Guardar y cerrar

:wq

Guardar sin cerrar

:w

Reabrir el archivo actual

:e!

Guardar el buffer con el nombre “asdf” :w asdf Abrir el archivo hejaz

:e hejaz

Leer el archivo “asdf” en el buffer

:r asdf

Leer el resultado de ls en el buffer

:r !ls 139


Resumen Usted debe estar familiarizado con el vi-el editor de texto standard de Unix. El vi es un programa bastante complejo con muchos comandos y opciones de configuración. Sin embargo, usted debe saber abrir un archivo, moverse alrededor, editar el archivo, y salir. Esto es todo lo que usted tendrá que hacer para la mayoría de las operaciones diarias. Cuando usted necesite mas poder, usted puede usar la extensa ayuda que incluye le vi para aprender mas sobre él.

140


Capitulo 16. Manejo de paquetes en Slackware Contenido • Visón general del formato de los paquetes • Untilidades de paquetes • Creando paquetes • Creando Tags y Tagsfiles(para la instalacion) • Resumen Un paquete de software es un grupo de programas relacionados que están listos para ser usados. Cuando usted baja un código fuente, usted tiene que configurarlo, compilarlo e instalarlo a mano. Con un paquete de software, esto ya sé hecho. Todo lo que usted tiene que hacer es instalar los paquetes. Otra característica útil de los paquetes de software es que son muy fáciles de quitar y de actualizar, si usted lo desea. Slackware viene con todos los programas que usted necesita para manejar los paquetes. Usted puede instalar, eliminar, actualizar, hacer y examinar los paquetes muy fácilmente.

Vision general del formato de los paquetes Antes de aprender a usar las utilidades, usted debe familiarizarse con el formato de los paquetes de Slackware. Un paquete simplemente es un archivo tar que ha sido comprimido con el gzip. Un paquete se crea para que pueda extraerse en el root filesystem. Estos son algunos programas ficticios y sus paquetes de ejemplo: ./ usr/ usr/bin/ usr/bin/makehejaz usr/doc/ usr/doc/makehejaz-1.0/ usr/doc/makehejaz-1.0/COPYING usr/doc/makehejaz-1.0/README usr/man/ usr/man/man1 usr/man/man1/makehejaz.1.gz install/ install/doinst.sh

El sistema de paquetes extraerá este archivo al directorio raíz para instalarlo. Una entrada en la base de datos del paquete se creara con los datos del contenido de este paquete para que pueda actualizarse o eliminarse después. Fíjese en el subdirectorio /install. Este es un directorio especial que puede contener un script de post-instalación llamado doinst.sh. Si el sistema de paquetes encuentra este archivo, lo ejecutara después de la instalación del paquete. 141


Pueden incluirse otros scripts en el paquete, estos se explicaran mas adelante en la sección llamada makepkg.

Utilidades de paquetes Hay cuatro utilidades principales para el manejo de paquetes. Ellos se encargan de la instalación, eliminación y las actualizaciones de los paquetes

pkgtool pkgtool(8) es un programa manejado por menus que permite instalar y eliminar paquetes. El menu principal es algo asi: Figura16-1. menu principal del pkgtool.

La instalación se puede hacer desde el directorio actual (Current), otro directorio (Other), o desde un disquete (Floppy). Simplemente seleccione el método de instalación que usted quiere y pkgtool se encarga de buscar en esa ubicación paquetes valido para instalar. Usted tambien puede ver una lista de paquetes instalados parecida a esta: Figura 16-2. Modo view del pkgtool.

142


Si usted quiere eliminar paquetes, seleccione la opción Remove y se encontrara con una lista de selección de todos los paquetes instalados. Simplemente marque el que desea eliminar y seleccione OK. pkgtool los eliminara. Algunos usuarios prefieren usar esta utilidad en vez de las utilidades de línea de comando. Sin embargo, fíjese que las utilidades de línea de comandos ofrecen muchas más opciones. Además, la función de actualizar los paquetes solo esta disponible a través de la línea de comando.

installpkg installpkg(8) maneja la instalacion de nuevos paquetes en su sistema. La sintaxis es la siguiente: # [ROOT=<path>] installpkg [option] <package name>...

Installpkg ofrece tres opciones. Solo puede ser usada una opcion a la vez. Tabla 16-1. Opciones del installpkg Opcion Efecto -m Ejecuta la operación makepkg en el directorio actual. -warn Muestra lo que sucedera si se instala el paquete especificado. Esto es muy util para productores de sistema ya que muestra lo que sucedera despues de instalar el paquete. -r Instalacion Recursiva de todos los paquetes en el directorio actual. El<package name> puede incluir comodines. Si usted coloca la variable de entorno ROOT antes de installpkg este directorio será usado como directorio raíz. Esto es útil para configurar nuevas unidades en su directorio raíz. Estas típicamente se montan en /mnt o algo diferente a /. La base de datos de paquetes instalados se guarda en /var/log/packages. Esto es solo un archivo en texto plano, uno para cada paquete. Si el paquete tiene un script de post-instalación, se guarda en /var/log/scripts/<packagename>. Usted puede especificar varios paquetes o puede usar comodines en el nombre del paquete. Se le advierte que installpkg no le avisara si usted esta borrando un paquete instalado. Instalara simplemente el nuevo archivo encima del viejo. Si usted quiere asegurarse que esos archivos viejos del paquete anterior sean eliminados, utilice el comando upgradepkg.

removepkg removepkg(8) se utiliza para eliminar paquetes instalados en su sistema. La sintaxis es la siguiente: # [ROOT=<path>] removepkg [option] <package name>...

Removepkg trabaja con cuatro opciones diferentes. Solo una opcion a la vez puede usarse. 143


Tabla 16-2. Opciones de removepkg Opcion Efecto -copy El paquete es copiado para ser conservado. Esto crea un arbol de directorio del paquete actual y lo guarda. -keep Guarda los archvios temporales creados durante la eliminacion actual. -preserve El paquet es eliminado, pero guarda una copia del paquete al mismo tiempo. -warn Muestra lo que ocurrira si elimina el paquete. Si usted coloca la variable de entorno ROOT antes de removepkg este directorio será usado como directorio raíz. Esto es útil para configurar nuevas unidades en su directorio raíz. Estas típicamente se montan en /mnt o algo diferente a /. removepkg observa todos los paquetes instalados pero solo elimina aquellos que usted especifico. Además revisa el script de postinstalación del paquete especificado y quita cualquier link simbólico creado por él. Durante el proceso de eliminación, se muestra un informe de estado. Después de la eliminación, la base de datos del paquete se mueve al directorio /var/log/removed_packages y el script de post-instalación se mueve hacia /var/log/removed_scripts. Al igual que en installpkg, usted puede usar comodines para especificar varios paquetes.

upgradepkg upgradepkg(8) actualiza cualquier paquete instalado en Slackware Linux. La sintaxis es la siguiente: # [ROOT=<path>] upgradepkg <package name>...

o # [ROOT=<path>] upgradepkg \ <old package name>%<new package name>

upgradepkg trabaja primero instalando el nuevo paquete y después eliminando el paquete viejo para que los archivos viejos no existan mas en el sistema. Si el nombre del paquete actualizado ha cambiado, use el símbolo de porcentaje (%) para especificar el paquete viejo (el que se encuentra instalado) y el nuevo paquete (el que se esta actualizando). Si usted coloca la variable de entorno ROOT antes de removepkg este directorio será usado como directorio raíz. Esto es útil para configurar nuevas unidades en su directorio raíz. Estas típicamente se montan en /mnt o algo diferente a /. upgradepkg no lo hace todo. Usted siempre debe guardar sus archivos de configuración. Si ellos se sobrescriben, usted conservara una copia de los originales para cualquier trabajo de reparación. Así como en el installpkg y removepkg, usted puede usar comodines para especificar el nombre del archivo. 144


rpm2tgz/rpm2targz El manejador de paquetes del Red Hat es un sistema de empaquetamiento popular hoy en dia. Muchos distribuidores de software estan ofreciendo sus prodcutos en formato RPM. Ya que este no es nuestro formato nativo, nostros recomendamos a las personas que no se confien de ellos. Sin embargo, algunas cosas solo estan disponibles en RPM(incluso la fuente). Nosotros proporcionamos un programa que convierte los RPM a nuestro formato .tgz nativo. Esto le permite extraer los paquetes (quizas con el explodepkg) a un directorio temporal y examinar su contenido. El programa rpm2tgz crea un paquete de Slackware con la extension .tgz, mientra que el rpm2targz crea un archvio con la extension .tar.gz.

Creando paquetes Crear paquetes para Slackware puede ser fácil y difícil a la vez. No hay un método especifico para crear un paquete. El único requisito es que sea un archivo tar comprimido con gzip y si existe algún script de post-instalación, debe estar en /install/doinst.sh. Si usted esta interesado en hacer paquetes para su sistema o para una red que usted administre, usted debe echarle un vistazo a los varios scripts construidos en el árbol de directorios de la fuente de Slackware. Hay varios métodos que se utilizan para crear un paquete

explodepkg explodepkg(8) hara lo mismo que hace installpkg para extaer los archivos, pero no lo instalara ni los gurdara en la base de datos de archivos instalado. El simplemente lo extrae al directorio actual. Si usted se fieja en el arbol de la fuente de Slackware, usted vera como nosotros usamos ese comando para los paquetes “framework”. Estos paquetes contiene un esqueleto de como lucira despues el archivo final. Ellos soportan todos los nombres de archivos(de longitud-cero) necesarios, permisos y propietarios.

makepkg makepkg(8) empaquetara todo el directorio actual dentro de un paquete Slackware valido. Busca en el árbol los links simbólicos y agrega un bloque de creación al script de post-instalación para que se creen durante la instalación. También advierte de cualquier archivo de cero-longitud en el árbol del paquete. Esta orden generalmente se ejecuta después de que usted ha creado su árbol del paquete.

145


Creando Tags y Tagfiles (para la instalacion) El programa de instalación de Slackware maneja la instalación de paquetes de software en su propio sistema. Hay archivos que le dicen al programa de instalación que paquetes deben instalarse, cual son los opcionales, y cuales deben ser seleccionados por defecto. Un tagfile se encuentra en el primer directorio de series de software y se llama tagfile. Contiene una lista de todos los paquetes de esta serie y su estado. Los estados pueden ser: Tabla16-3. Opciones de estado de los tagfiles Opcion Significado ADD

El paquete es requerido por el sistema

SKP

El paquete puede ser omitido automaticamente

REC

El paquete no es requerido, pero es recomendado

OPT El paquete es opcinal El formato es simple: <package name>: <status>

Un paquete por la línea. Se guardan los tagfiles originales para cada serie del software como tagfile.org. Así que si usted desordena el suyo, usted puede restaurar el original. Muchos administradores prefieren escribir su propio tagfile y empezar la instalación seleccionando "full". El programa de instalación leerá los tagfiles y realizara la instalación de acuerdo a su contenido. Si usted utiliza REC o OPT, un cuadro de dialogo se le presentara para que usted tenga la posibilidad de instalar o no los paquetes especificado. Por consiguiente, se recomienda que usted solamente use ADD y SKP cuando crea sus tagfiles para una instalación automática. Solo asegúrese que los tagfiles se encuentren en la misma ubicación de los originales.

Resumen Usted debe estar ahora familiarizado con lo que es un paquete de software y cómo éstos se usan en Slackware. Usted debe estar familiarizado con las varias utilidades de manejo de paquetes y cómo usarlos. Las partes más importantes de este capítulo son cómo instalar, quitar, y actualizar paquetes. Ese es el uso más común de las utilidades de paquetes. Sin embargo, usted también debe tener un poco de conocimiento sobre como crear e inspeccionar paquetes

146


Capitulo 17. ZipSlack y BigSlack contenido • ¿Qué es ZipSlack/BigSlack? • Consiguiendo ZipSlack/BigSlack • Instalacion • Arrancando ZipSlack/BigSlack • Agregando, Eliminando y actualizando Software • Problemas Comunes • Obteniendo Ayuda • Resumen

Que es ZipSlack/BigSlack? "ZipSlack" es una versión especial de Slackware Linux. Es una copia ya instalada de Slackware que esta lista para ejecutarse en DOS o en su particion Windows. Es una instalacion basica, usted no econtrara todo lo que viene en Slackware. Si usted quiere todo con ZipSlack, entonces usted debe usar "BigSlack." ZipSlack recibe su nombre debido a la forma en que es distribuido, un archivo .ZIP grande. Los usuarios de DOS y Windows probablemente estarán familiarizados con estos archivos. Ellos son archivos comprimidos. El archivo ZipSlack contiene todo lo que usted necesita ponerse en marcha con Slackware. Es importante hacer notar que ZipSlack y BigSlack son significativamente diferentes a una instalación regular. Aunque funcionan de la misma forma y contiene los mismo programas, estan dirigidos a un publico diferente con funciones diferentes. Varias ventajas y desventajas de ZipSlack y BigSlack se describen debajo. Una última cosa, usted siempre debe repasar la documentación incluida en el ZipSlack actual o en el directorio BigSlack. Este contiene la última información con respecto a la instalación, arranque, y uso general del producto.

Ventajas • •

No requiere el reparticionamiento de su disco duro. Es una buena manera de aprender Slackware Linux sin tropezarse con el proceso de la instalación.

Desventajas • •

Utiliza el sistemas de archivos de DOS, que es mas lento que una particon de Linux nativa No funciona bajo Windows NT. 147


Consiguiendo ZipSlack/BigSlack Obtener ZipSlack o BigSlack es facil. Si usted ha comprado el set oficial Slackware Linux CD, entonces usted ya tiene ZipSlack y BigSlack. Simplemente encuentre el CD que contiene el que usted quiere y póngalo en su unidad de CD-ROM. Normalmente es el tercer o cuarto disco, pero siempre guiese por las etiquetas encima de esta documentacion. Si usted quiere descargar ZipSlack o BigSlack, usted debe visitar primero nuestra pagina "Get Slak" para la última información sobre la descarga: http://www.slackware.com/getslack/ ZipSlack y BigSlack son parte de cada lanzamiento de Slackware. Localice la version que usted quiere y valla a ese directorio en el sitio FTP: The latest release directory can be found at this location: ftp://ftp.slackware.com/pub/slackware/slackware/ Usted encontrara ZipSlack en el subdirectorio /zipslack y BigSlak en el directorio /bigslak. ZipSlack se presenta como un archivo .ZIP grande o en pequeños trozos del tamaño de un disquete. Los pedazos se encuentran en el directorio /split. BigSlack solo se ofrece en pedazos. No solo descarge los archivos .ZIP. Usted también debe descargar los archivos de documentacion y cualquier imagen de booteo que consiga en el directorio.

Instalacion Una vez que ha descargado los componentes necesarios, usted necsita extraer el archivo .ZIP (o los archivos que usted descargo por pedazos). Asegurese de usar un unzipper de 32-bit. El tamaño y los nombres de los archivos son demasiado grandes para un unzipper de 16-bit. Algunos ejemplos de unzippers de 32-bit son el Winzip y el PKZIP para Windows. ZipSlak y BigSlak estan diseñados para ser extraidos al directorio raiz de su unidad (como C: o D:) A \LINUX directory will be created that contains the actual Slackware installation. Usted tambien encontrara los archivos necesarios para el arranque en ese directorio. Despues de que usted ha extraido los archivos, usted debe tener un directorio\LINUX en la unidad de su eleccion (nosotros usaremso C: de aui en adelante).

Arrancando ZipSlack/BigSlack Hay varias maneras de arrancar ZipSlack y BigSlack. La mas comun es usar el archvio LINUX.BAT incluido para arrancar el sistema desde DOS (o desde el modo DOS en Windows 9x). Este archvio debe editarse antes de que funcione para que coincida con su sistema.

148


Comienze abriendo el archivo C:\LINUX\LINUX.BAT en su editor de texto favorito. Al comienzo del archivo usted encontrara un comentario grande. Explica que es lo que usted debe editar en este archivo. No se procupe si usted no entiende la configuracion de root. Hay varios ejemplos, para que usted pueda escoger alguno y probarlo. Si no funciona, usted puede editar el archivo de nuevo, comentar de nuevo la linea que descomento y probar con otro. Despues de que usted descomente la linea que quiere quitandole el "rem" al comienzo de la linea guarde el archivo y cierre el editor. Arranque su maquina en modo DOS. Un prompt de DOS bajo Windows no le servira Escriba C:\LINUX\LINUX.BAT para arrancar el sistema. Si todo sale bien, usted debe encontrase con un prompt de inicio de sesion. Entre como root, sin contraseña. Usted querra probablemente colocar una contraseña para root, asi como agregar un usuario para usted. A estas alturas usted debe referirse a otros capitulos en este libro para ayuda general. Si usar el archvio LINUX.BAT para arrancar el sistema no le funciona, usted debe consultar el archivo C:\LINUX\README.1ST que trata sobre otras maneras de arrabcar el sistema.

Agregando, Eliminando y actualizando Software ZipSlack y BigSlack utilizan los mismos paquetes que una instalacion normal de Slackware. Eso significa que usted puede usar las utilidades de paquetes normales para agregar, quitar y actualizar software. Usted puede incluso agregar paquetes directamente del CD de instalacion. Refiérase a Capítulo 16 para más información.

Problemas Comunes Éstos son los problemas más comúnes que encuentran los usuarios de ZipSlack y BigSlack. Nosotros ofrecemos varios otros métodos de ayuda si su problema no se menciona aquí.

Unable to open initial console Esto ocurre cuando se especifica la particion del dispositivo incorrecta para root= en el archivo LINUX.BAT. Edite de nuevo el archivo LINUX.BAT y escoga otra particion root=. Si usted no tiene absolutamente ninguna idea lo que esto significa, usted puede probar cada uno hasta que alguno le funcione correctamente. 149


Esto puede ocurri tambien cuando los archivos no son extraidos directamente al directorio raiz de la unidad. Los archivos necesitan ser extraĂ­dos directamente a una unidad no a un subdirectorio.

Kernel panic: VFS : Unable to mount root fs Esto significa que usted ha especificado un dispositivo equivocado para root= en el archivo LINUX.BAT. Usted necesita editar ese archivo de nuevo y escoger otro dispositivo para root=. Si usted no sabe cual de ellos es, simplemente pruebe con todos hasta que alguno logre funcionar.

Obteniendo Ayuda Antes de pedir ayuda, usted debeeria revisar la documentacion que se incluye en el directorio C:\LINUX a ver si hay alguna respuesta a su pregunta. Si usted ha leido la documentacion y todavia sigue teniendo problemas, los metodos siguientes lograran resolver sus problemas.

ZipSlack FAQ La lista de las preguntas y repuestas mas communes puede ser encontrada en el directorio C:\LINUX al igual que en la pagina: http://www.slackware.com/faq/

ZipSlack Foro de discusion En el foro de discussion online usted puede hablar con otros usuarios de ZipSlack. Usted puede colocar sus preguntas asi como tambien puede responder las de otros. Es una gran manera de obtener ayuda directamente de los usuarios. http://www.slackware.com/forum/

Soporte Via Email El equipo de soporte de Slackware tratara de ayudarlo si usted esta teniendo problemas con ZipSlack o BigSlack. Asegurese de describir claramente el problema e incluir toda la informacio que usted crea necesaria para resolver el problema. <support@slackware.com>

Resumen Usted debe entender lo que es ZipSlack y BigSlack. Si usted decide usar culquiera de ellos, usted debe saber instalar, arrancar, solucionar problemas y conseguir ayuda. ZipSlack y BigSlack pueden ser muy convenientes si usted solamente quiere probar Slackware, pero no quiere quitar sus particiones de Windows existentes. 150


Glosario Account (cuenta) Toda la informacion sobre el usuario incluyendo el nombre de usuario , contraseña , informacion de contacto , UID y GID y el directorio home. Crear una cuenta es agregar y definir a un usuario. Background (Fondo o Segundo plano) Se dice que cualquier proceso que se esta ejecutando sin el control del terminal se esta ejecutando en el fondo. Boot disk (Disco de Inicio) Un disquete que contiene un sistema operativo (en nuestro caso, el kernel de Linux) desde donde se puede arrancar la computadora. Compile (Compilar) Convertir codigo fuente a codigo de maquina “binario”. Daemon (Demonio) Un programa diseñado para ejecutarse en el fondo, sin la intervención del usuario, y realizar una tarea especifica (usualmente proveer un servicio). Darkstar El hostname por defecto en Slackware; su computadora sera llamada darkstar si usted no especifica un nombre. Una de las maquinas fabricadas por Patrick Volkerding's, fue llamada “Dark Star”, una canción de Grateful Dead. Desktop Environment (Entorno de Escritorio) Una interfaz gráfica del usuario (el GUI) que se ejecuta en el X Window System y proporciona integración entre las aplicaciones, un look parecido en todas las aplicaciones, componentes y archivos capacidad de manejo de ventana, etc. Un paso más allá del gestor de ventanas simple. Device driver (Controlador de Dispositivos) Es un pedaso de codigo en el kernel que se encarga de controlar piezas del hardware. Device node (Nodo del Dispositivo) Un tipo especial de archivo en el /dev filesystem que representa un componente del hardware en el sistema operativo. DNS Servicio de Nombres de Dominios. Un sistema con computadoras conectadas en red se le asignan nombres que son convertidos a direcciones numericas. Domain name (Nombre del dominio) El nombre DNS de una computadora, excluyendo el nombre del host. Dot file (Archivo de punto) En Linux, los archivos ocultas comienzan con un punto “.”. Dotted quad (quad punteado) El formato de las direcciones IP, se llaman asi por que constan de cuatro numeros (de rango 0-255) separados por puntos.

151


Dynamic loader (Cargador Dinamico) Cuando se compila un programa bajo Linux, usualmente ellos incluyen pedasos de codigos (funciones) de librerias externas. Cuando se ejecuta dicho programa, estas librerias deben encontrarse y las funciones requeridas deben ser cargadas en memoria.Ese es el trabajo de un cargador dinamico. Environment variable (Variable de entorno) Una variable colocada en el shell del ususario que puede ser usada por ese usuario o por los programas que ejecuta ese ususario en ese shell. Las variables de entorno generalmente almacenan preferencias del ususario y valores por defecto. Epoch (Epoca) Un periodo en la historia; en Unix, “The Epoch” comenzo a las 00:00:00 UTC Enero 1, 1970. Esto es considerado el "principio del tiempo" en Unix y en sistemas basados en Unix, y cualquier otros tiempo similar es calculado en base a esta fecha. Filesystem (Sistema de Archivos) Una representacion de los datos guardados en donde los “archivos” de datos se guardan organizadamente en “directories”. El filesystem es la forma universal de representar datos guardados en discos (fijos y removibles). Foreground (Primer Plano) Se dice que un programa que esta recibiendo o controlando la entrda desde un terminal se esta ejecutando en primer plano. Framebuffer Un tipo de dispositivo grafico; en Linux, esto se refiere al software framebuffer, que proporciona una interfaz standard de framebuffer a los programas y oculta los drivers especificos del hardware a ellos. Esta capa de abstraccion libera a los porgramas de la necesidad de hablar con los diferentes controladores de Hardware. FTP Protocolo de Transferencia de Archivos. FTP es un método muy popular de transferir datos entre las computadoras. Gateway (puerta de enlace) Una computadora a traves de la cual se transmiten datos a otra red. GID Identificador de Grupo. El GID es un número único asignado a un grupo de usuarios. Group (Grupo) Los usuarios en el Unix pertenecen a" grupos" que pueden contener a muchos otros usuarios. GUI Interfaz grafica de usuario. Una inerfaz de software que usas elementos graficos como botones, barras de desplazamiento, ventanas, etc. en lugar de una entrada y salida basada en texto. Home directory (Directorio Home) El “home directory” de un ususario es el directorio donde sera colocado el ususario cada vez que inicie session. Los usuarios tienen full permisos y un regimen mas libre dentro de su directorio home.

152


HOWTO (Como Hacer) Un documento que describe cómo hacer algo, como configurar un firewall o manejar usuarios y grupos. Hay una gran colección de estos documentos disponible en Linux Documentation Project. HTTP Protocolo de transferencia de hipertexto. HTTP es el protocolo primario en que el World Wide Web opera. ICMP Protocolo de Control de mensajes de internet. Un protocolo de red muy basico, usado principalmente para los ping. Kernel El corazón de un sistema operativo. El kernel es la parte que proporciona un control basico de procesos e interfaces del hardware de la computadora Kernel module (Modulo del Kernel) Una pedazo de codigo Kernel, normalmente algun tipo de controlador, que puede cargarse y descargarse separado del cuerpo principal del kernel. Los modulos son utiles cuando se actualiza un controlador o cuando se prueban las configuraciones del kernel, porque ellos pueden cargarse y descargarse sin necesidad de reiniciar. Library (Libreria) Una colección de funciones que pueden compartirse entre los programas. LILO El Cargador de Linux (LInux LOader. LILO es el gestor de arranque mas usado en Linux. LOADLIN LOADLIN es un programa que corre bajo MS DOS o Windows y puede iniciar un sistema Linux. Normalmente es usado en computadoras con multiples sistemas operativos.(incluyendo Linux y DOS/Windows, por suspuesto). Man section (Seccion del Manual) Las paginas del manual de Unix standard ("man") se agrupan en secciones para hacer mas facil la referencia. Todas las paginas de progrmacion C estan en la seccion 3, La administracion del sistema en la seccion 5, etc. MBR El Registro de Arranque Principal. Un espacio reservado en una unidad de disco duro dónde se guarda informacio sobre que hacer al momento del arranque. Pueden escribirse LILO y otros gestores de inicio aquí. Motif Un juego de herramientas de programacion usadas en muchos programas X viejos. MOTD Mensaje del dia. El motd (Almacenado en Linux en: /etc/motd) es un archivo de texto que se muestra a todos los ususarios que inicien session ese dia. Mount point (Punto de Montaje) Un directorio vacío en un filesystem dónde otro filesystem será “montado", o anexado. 153


Nameserver (Servidor de Nombres) Un servidor de informacion DNS. Los Nameservers traducen los nombres DNS a direcciones IP numéricas. Network interface (Interfaz de Red) Una representación virtual de un dispositivo de red proporcionada por el Kernel. Las interfaz de red permite conectar usuarios y programas. NFS Sistema de Archivos deRed. NFS le permite montar filesystem remotos como si ellos fueran locales en su computadora y asi proporcionar un metodo transparente de compartir archivos. Octal Sistema numerico de base-8, con los numeros 0-7. Pager Un programa de X que le permite al usuario ver y cambiar entre los “multiples” escritorios Partition (Particion) división de una unidad de disco duro. Los filesystem se montan encima de las particiones. PPP El Protocolo de punto-a-punto. PPP se usa principalmente por conectar vía módem a un Proveedor de servicios de Internet. Process (Proceso) Un programa ejecutandose. Root directory (Directorio raiz) Representado por un" /", el directorio raíz esta en el tope del filesystem, todos los otros directorios son ramas creadas desde el en el “arbol de directorios). Root disk (Disco root) El disco donde se guarda el directorio raiz. Routing table (tabla de Routing) La configuracion de la informacion que utilizara el kernel para el “routing” de los datos que se manejan en una red. Contiene una cantidad de tidbits que indican donde esta su gateway por defecto, que interfaz de red esta conectada, etc. Runlevel (Nivel de ejecucion) El estado general del sistema es definido por el init. Runlevel 6 es reiniciar, runlevel 1 es el modo de un solo usuario ("single user mode"), runlevel 4 es un inicio de sesion en X, hay seis runleveles disponibles en su sistema Slackware. Secure shell (Shell seguro) Un metodo encriptado de iniciar sesion en una computadora remota. Muchos programas de shell seguro estan disponibles. Service (Servicio) Se utilizan cuando se comparte informacion y/o datos de un solo "servidor" a multiples "clientes". HTTP,FTP,NFS,etc son servicios. Shadow password suite (Paquete de contraseñas Shadow) El pauete de contraseñas Shadow permite esconder las contraseñas encriptadas de los ususarios, mientras el resto de la informacion del archivo /etc/passwd permanece visible a todos. Esto protege de los intentos de fuerza-bruta. 154


Shell Los Shells proporcionan una interfaz de linea de comando al ususario. Cuando usted esta mirando un prompt de texto, usted esta en un shell. Shell builtin Un comando construido en el shell, es distinto de un comando proporcionado por un programa externo. Por ejemplo, bash tiene un cd builtin. Signal (Signo) Los programas Unix pueden comunicarse con otros usando signos "simples", que estan enumerados y usualmente tienen un significado especifico. el comando kill -l muestra una lista de los signos disponibles. SLIP Protocolo de Interfaz de linea en serie. SLIP es un protocolo similar a PPP, que se usa para conectar dos maquinas a traves del puerto serial. Software package (Paquete de Software) Un programa y sus archivos asociados, se archivan y comprimen en un solo archivo junto a cualquier script necesario o informacion de ayuda para manejar la instalacion, actualizacion y eliminacion de estos archivos Software series (Series de Software) Una colección de paquetes de software relacionados en Slackware. Todos los paquetes de KDE están en la serie "kde", mientras que los paquetes de red se encuentran en la serie "n", etc. Source code (Codigo Fuente) El codigo (mas o menos) entendible al humano en que se escriben la mayoria de los programas. El código fuente es compilado luego en "código binario." Standard Error (stderr) La salida normal Unix para los errores. Los Programas escriben cualquier mensaje del error en el stderr, para que ellos puedan separarse del rendimiento normal. Standard Input (stdin) La entrada Unix standard. Los datos pueden ser redireccionados o manejados por tuberias en el programa stdin desde cualquier fuente. Standard Output (stdout) La salida Unix standard. El texto de salida normal de un programa se escribe en stdout que está separado de los mensajes del error reportados en stderr. Subnet Un rango de dirección IP que es parte de un rango más grande. Por ejemplo, 192.168.1.0 es una subred de 192.168.0.0 (donde 0 es una mascara que significa "indefinido"); es, de hecho, el" .1" subred. Superblock En Linux, se habla de particiones en terminos de bloques. Un bloque son 512 bytes. Superblock son los primeros 512 bytes de una particion. Supplemental disk (Disco supplemental) En Slackware, se utiliza un disquete que no contiene el kernel ni el root filesystem pero cuenta con archivos adicionales necesarios como los modulos de red o soprte para PCMCIA 155


Suspended process (Proceso suspendido) Un proceso que ha sido matado, congelado o detenido. Swap space (Espacio Swap) Espacio en disco usado por el kernel como un "RAM virtual". Es más lento que la RAM, pero como el espacio en disco es más barato, el swap es normalmente más abundante. Symbolic link (Link simbolico) Un archivo especial que simplemente conduce a la ubicacion de otro archivo. Tagfile Un archivo usado durante la instalacion de Slackware que indica que paquetes van a ser instalados. Terminal Una interfaz humano-computadora que consiste en por lo menos una pantalla (o la pantalla virtual) y algún método de entrada (casi siempre por lo menos un teclado). Toolkit, GUI Un juego de herramientas del GUI es una colección de bibliotecas que le proporcionan el código a un programador para dibujar ”widgets" como las barras de desplazamiento, casillas de verificación, etc. y construir una interfaz gráfica. El juego de herramientas del GUI es usado a menudo por un programa para definir como lucira. UID identificador de usuario. Un único número que identifica a un usuario en el sistema. VESA Asociasion de Normas de Video Electronico. El término ” VESA" se usa a menudo para especificar una norma de la Asociación. Casi todos los adaptadores de video modernos son VESA-compatibles. Virtual terminal (Terminal Virtual) El uso de software para simular multiples terminales, utilizando un solo juego de dispositivos de entrada y salida (teclado,monitor,mouse). Window manager (Gestor de Ventanas) Un progrma de X cuyo proposito es proporcionar una interfaz grafica mas alla de un simple rectangulo dibujado en el X Window System. Los gestores de ventanas por lo general proporcionan barras de titulo, menus para los programas, etc. Working directory (Directorio de Trabajo) El directorio donde se esta ejecutando un programa. Wrapper program Un programa cuyo solo propósito es ejecutar otros programas, pero cambiado su conducta de alguna manera alterando sus ambientes o filtrando su entrada. X server (Servidor X) El programa en el X Window System que une el hardware grafico con los programas que se ejecutan bajo X. X Window System El sistema de la interfaz gráfica orientado a red usado en la mayoría de los sistemas basados en Unix , incluyendo Linux

156


Licencia Pública GNU Esta es la conocida GNU Public License (GPL), versión 2 (de junio de 1.991), que cubre la mayor parte del software de la Free Software Foundation, y muchos más programas. NOTA IMPORTANTE: Esta es una traducción no oficial al español de la GNU General Public License. No ha sido publicada por la Free Software Foundation, y no establece legalmente las condiciones de distribución para el software que usa la GNU GPL. Estas condiciones se establecen solamente por el texto original, en inglés, de la GNU GPL. Sin embargo, esperamos que esta traducción ayude a los hispanohablantes a entender mejor la GNU GPL. IMPORTANT NOTICE: This is an unofficial translation of the GNU General Public License into Spanish. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPL--only the original English text of the GNU GPL does that. However, we hope that this translation will help Spanish speakers understand the GNU GPL better. Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, EEUU Se permite la copia y distribución de copias literales de este documento, pero no se permite su modificación.

Preámbulo Las licencias que cubren la mayor parte del software están diseñadas para quitarle a usted la libertad de compartirlo y modificarlo. Por el contrario, la Licencia Pública General de GNU pretende garantizarle la libertad de compartir y modificar software libre, para asegurar que el software es libre para todos sus usuarios. Esta Licencia Pública General se aplica a la mayor parte del software del la Free Software Foundation y a cualquier otro programa si sus autores se comprometen a utilizarla. (Existe otro software de la Free Software Foundation que está cubierto por la Licencia Pública General de GNU para Bibliotecas). Si quiere, también puede aplicarla a sus propios programas. Cuando hablamos de software libre, estamos refiriéndonos a libertad, no a precio. Nuestras Licencias Públicas Generales están diseñadas para asegurarnos de que tenga la libertad de distribuir copias de software libre (y cobrar por ese servicio si quiere), de que reciba el código fuente o que pueda conseguirlo si lo quiere, de que pueda modificar el software o usar fragmentos de él en nuevos programas libres, y de que sepa que puede hacer todas estas cosas. 157


Para proteger sus derechos necesitamos algunas restricciones que prohiban a cualquiera negarle a usted estos derechos o pedirle que renuncie a ellos. Estas restricciones se traducen en ciertas obligaciones que le afectan si distribuye copias del software, o si lo modifica. Por ejemplo, si distribuye copias de uno de estos programas, sea gratuitamente, o a cambio de una contraprestación, debe dar a los receptores todos los derechos que tiene. Debe asegurarse de que ellos también reciben, o pueden conseguir, el código fuente. Y debe mostrarles estas condiciones de forma que conozcan sus derechos. Protegemos sus derechos con la combinación de dos medidas:

1. Ponemos el software bajo copyright 2. le ofrecemos esta licencia, que le da permiso legal para copiar, distribuir y/o modificar el software.

También, para la protección de cada autor y la nuestra propia, queremos asegurarnos de que todo el mundo comprende que no se proporciona ninguna garantía para este software libre. Si el software se modifica por cualquiera y éste a su vez lo distribuye, queremos que sus receptores sepan que lo que tienen no es el original, de forma que cualquier problema introducido por otros no afecte a la reputación de los autores originales. Por último, cualquier programa libre está constantemente amenazado por patentes sobre el software. Queremos evitar el peligro de que los redistribuidores de un programa libre obtengan patentes por su cuenta, convirtiendo de facto el programa en propietario. Para evitar esto, hemos dejado claro que cualquier patente debe ser pedida para el uso libre de cualquiera, o no ser pedida. Los términos exactos y las condiciones para la copia, distribución y modificación se exponen a continuación.

Términos y condiciones para la copia, distribución y modificación 1. Esta Licencia se aplica a cualquier programa u otro tipo de trabajo que contenga una nota colocada por el tenedor del copyright diciendo que puede ser distribuido bajo los términos de esta Licencia Pública General. En adelante, «Programa» se referirá a cualquier programa o trabajo que cumpla esa condición y «trabajo basado en el Programa» se referirá bien al Programa o a cualquier trabajo derivado de él según la ley de copyright. Esto es, un trabajo que contenga el programa o una proción de él, bien en forma literal o con modificaciones y/o traducido 158


en otro lenguaje. Por lo tanto, la traducción está incluida sin limitaciones en el término «modificación». Cada concesionario (licenciatario) será denominado «usted». Cualquier otra actividad que no sea la copia, distribución o modificación no está cubierta por esta Licencia, está fuera de su ámbito. El acto de ejecutar el Programa no está restringido, y los resultados del Programa están cubiertos únicamente si sus contenidos constituyen un trabajo basado en el Programa, independientemente de haberlo producido mediante la ejecución del programa. El que esto se cumpla, depende de lo que haga el programa. 2. Usted puede copiar y distribuir copias literales del código fuente del Programa, según lo has recibido, en cualquier medio, supuesto que de forma adecuada y bien visible publique en cada copia un anuncio de copyright adecuado y un repudio de garantía, mantenga intactos todos los anuncios que se refieran a esta Licencia y a la ausencia de garantía, y proporcione a cualquier otro receptor del programa una copia de esta Licencia junto con el Programa. Puede cobrar un precio por el acto físico de transferir una copia, y puede, según su libre albedrío, ofrecer garantía a cambio de unos honorarios. 3. Puede modificar su copia o copias del Programa o de cualquier porción de él, formando de esta manera un trabajo basado en el Programa, y copiar y distribuir esa modificación o trabajo bajo los términos del apartado 1, antedicho, supuesto que además cumpla las siguientes condiciones: 1. Debe hacer que los ficheros modificados lleven anuncios prominentes indicando que los ha cambiado y la fecha de cualquier cambio. 2. Debe hacer que cualquier trabajo que distribuya o publique y que en todo o en parte contenga o sea derivado del Programa o de cualquier parte de él sea licenciada como un todo, sin carga alguna, a todas las terceras partes y bajo los términos de esta Licencia. 3. Si el programa modificado lee normalmente órdenes interactivamente cuando es ejecutado, debe hacer que, cuando comience su ejecución para ese uso interactivo de la forma más habitual, muestre o escriba un mensaje que incluya un anuncio de copyright y un anuncio de que no se ofrece ninguna garantía (o por el contrario que sí se ofrece garantía) y que los usuarios pueden redistribuir el programa bajo estas condiciones, e indicando al usuario cómo ver una copia de esta licencia. (Excepción: si el propio programa es interactivo pero normalmente no muestra ese anuncio, no se requiere que su trabajo basado en el Programa muestre ningún anuncio). Estos requisitos se aplican al trabajo modificado como un todo. Si partes identificables de ese trabajo no son derivadas del Programa, y pueden, razonablemente, ser consideradas trabajos independientes y separados por ellos mismos, entonces esta Licencia y sus términos no 159


se aplican a esas partes cuando sean distribuidas como trabajos separados. Pero cuando distribuya esas mismas secciones como partes de un todo que es un trabajo basado en el Programa, la distribución del todo debe ser según los términos de esta licencia, cuyos permisos para otros licenciatarios se extienden al todo completo, y por lo tanto a todas y cada una de sus partes, con independencia de quién la escribió. Por lo tanto, no es la intención de este apartado reclamar derechos o desafiar sus derechos sobre trabajos escritos totalmente por usted mismo. El intento es ejercer el derecho a controlar la distribución de trabajos derivados o colectivos basados en el Programa. Además, el simple hecho de reunir un trabajo no basado en el Programa con el Programa (o con un trabajo basado en el Programa) en un volumen de almacenamiento o en un medio de distribución no hace que dicho trabajo entre dentro del ámbito cubierto por esta Licencia. 4. Puede copiar y distribuir el Programa (o un trabajo basado en él, según se especifica en el apartado 2, como código objeto o en formato ejecutable según los términos de los apartados 1 y 2, supuesto que además cumpla una de las siguientes condiciones: 1. Acompañarlo con el código fuente completo correspondiente, en formato electrónico, que debe ser distribuido según se especifica en los apartados 1 y 2 de esta Licencia en un medio habitualmente utilizado para el intercambio de programas, o 2. Acompañarlo con una oferta por escrito, válida durante al menos tres años, de proporcionar a cualquier tercera parte una copia completa en formato electrónico del código fuente correspondiente, a un coste no mayor que el de realizar físicamente la distribución del fuente, que será distribuido bajo las condiciones descritas en los apartados 1 y 2 anteriores, en un medio habitualmente utilizado para el intercambio de programas, o 3. Acompañarlo con la información que recibiste ofreciendo distribuir el código fuente correspondiente. (Esta opción se permite sólo para distribución no comercial y sólo si usted recibió el programa como código objeto o en formato ejecutable con tal oferta, de acuerdo con el apartado b anterior). Por código fuente de un trabajo se entiende la forma preferida del trabajo cuando se le hacen modificaciones. Para un trabajo ejecutable, se entiende por código fuente completo todo el código fuente para todos los módulos que contiene, más cualquier fichero asociado de definición de interfaces, más los guiones utilizados para controlar la compilación e instalación del ejecutable. Como excepción especial el código fuente distribuido no necesita incluir nada que sea distribuido normalmente (bien como fuente, bien en forma binaria) con los componentes principales (compilador, kernel y similares) del sistema operativo en el cual funciona el ejecutable, a no ser que el propio 160


componente acompañe al ejecutable. Si la distribución del ejecutable o del código objeto se hace mediante la oferta acceso para copiarlo de un cierto lugar, entonces se considera la oferta de acceso para copiar el código fuente del mismo lugar como distribución del código fuente, incluso aunque terceras partes no estén forzadas a copiar el fuente junto con el código objeto. No puede copiar, modificar, sublicenciar o distribuir el Programa excepto como prevé expresamente esta Licencia. Cualquier intento de copiar, modificar sublicenciar o distribuir el Programa de otra forma es inválida, y hará que cesen automáticamente los derechos que te proporciona esta Licencia. En cualquier caso, las partes que hayan recibido copias o derechos de usted bajo esta Licencia no cesarán en sus derechos mientras esas partes continúen cumpliéndola. 5. No está obligado a aceptar esta licencia, ya que no la ha firmado. Sin embargo, no hay hada más que le proporcione permiso para modificar o distribuir el Programa o sus trabajos derivados. Estas acciones están prohibidas por la ley si no acepta esta Licencia. Por lo tanto, si modifica o distribuye el Programa (o cualquier trabajo basado en el Programa), está indicando que acepta esta Licencia para poder hacerlo, y todos sus términos y condiciones para copiar, distribuir o modificar el Programa o trabajos basados en él. 6. Cada vez que redistribuya el Programa (o cualquier trabajo basado en el Programa), el receptor recibe automáticamente una licencia del licenciatario original para copiar, distribuir o modificar el Programa, de forma sujeta a estos términos y condiciones. No puede imponer al receptor ninguna restricción más sobre el ejercicio de los derechos aquí garantizados. No es usted responsable de hacer cumplir esta licencia por terceras partes. 7. Si como consecuencia de una resolución judicial o de una alegación de infracción de patente o por cualquier otra razón (no limitada a asuntos relacionados con patentes) se le imponen condiciones (ya sea por mandato judicial, por acuerdo o por cualquier otra causa) que contradigan las condiciones de esta Licencia, ello no le exime de cumplir las condiciones de esta Licencia. Si no puede realizar distribuciones de forma que se satisfagan simultáneamente sus obligaciones bajo esta licencia y cualquier otra obligación pertinente entonces, como consecuencia, no puede distribuir el Programa de ninguna forma. Por ejemplo, si una patente no permite la redistribución libre de derechos de autor del Programa por parte de todos aquellos que reciban copias directa o indirectamente a través de usted, entonces la única forma en que podría satisfacer tanto esa condición como esta Licencia sería evitar completamente la distribución del Programa. Si cualquier porción de este apartado se considera inválida o imposible de cumplir bajo cualquier circunstancia particular ha de cumplirse el resto y la sección por entero ha de cumplirse en cualquier otra circunstancia. No es el propósito de este apartado inducirle a infringir ninguna reivindicación de patente ni de ningún otro derecho deç propiedad o impugnar la validez de ninguna de dichas reivindicaciones. 161


Este apartado tiene el único propósito de proteger la integridad del sistema de distribución de software libre, que se realiza mediante prácticas de licencia pública. Mucha gente ha hecho contribuciones generosas a la gran variedad de software distribuido mediante ese sistema con la confianza de que el sistema se aplicará consistentemente. Será el autor/donante quien decida si quiere distribuir software mediante cualquier otro sistema y una licencia no puede imponer esa elección. Este apartado pretende dejar completamente claro lo que se cree que es una consecuencia del resto de esta Licencia. 8. Si la distribución y/o uso de el Programa está restringida en ciertos países, bien por patentes o por interfaces bajo copyright, el tenedor del copyright que coloca este Programa bajo esta Licencia puede añadir una limitación explícita de distribución geográfica excluyendo esos países, de forma que la distribución se permita sólo en o entre los países no excluidos de esta manera. En ese caso, esta Licencia incorporará la limitación como si estuviese escrita en el cuerpo de esta Licencia. 9. La Free Software Foundation puede publicar versiones revisadas y/o nuevas de la Licencia Pública General de tiempo en tiempo. Dichas nuevas versiones serán similares en espíritu a la presente versión, pero pueden ser diferentes en detalles para considerar nuevos problemas o situaciones. &nbps; Cada versión recibe un número de versión que la distingue de otras. Si el Programa especifica un número de versión de esta Licencia que se refiere a ella y a «cualquier versión posterior», tienes la opción de seguir los términos y condiciones, bien de esa versión, bien de cualquier versión posterior publicada por la Free Software Foundation. Si el Programa no especifica un número de versión de esta Licencia, puedes escoger cualquier versión publicada por la Free Software Foundation. 10. Si quiere incorporar partes del Programa en otros programas libres cuyas condiciones de distribución son diferentes, escribe al autor para pedirle permiso. Si el software tiene copyright de la Free Software Foundation, escribe a la Free Software Foundation: algunas veces hacemos excepciones en estos casos. Nuestra decisión estará guiada por el doble objetivo de de preservar la libertad de todos los derivados de nuestro software libre y promover el que se comparta y reutilice el software en general. AUSENCIA DE GARANTÍA 12. Como el programa se licencia libre de cargas, no se ofrece ninguna garantía sobre el programa, en todas la extensión permitida por la legislación aplicable. Excepto cuando se indique de otra forma por escrito, los tenedores del copyright y/u otras partes proporcionan el programa «tal cual», sin garantía de ninguna clase, bien expresa o implícita, con inclusión, pero sin limitación a las garantías mercantiles 162


implícitas o a la conveniencia para un propósito particular. Cualquier riesgo referente a la calidad y prestaciones del programa es asumido por usted. Si se probase que el Programa es defectuoso, asume el coste de cualquier servicio, reparación o corrección. 13. En ningún caso, salvo que lo requiera la legislaciónç aplicable o haya sido acordado por escrito, ningún tenedor del copyright ni ninguna otra parte que modifique y/o redistribuya el Programa según se permite en esta Licencia será responsable ante usted por daños, incluyendo cualquier daño general, especial, incidental o resultante producido por el uso o la imposibilidad de uso del Programa (con inclusión, pero sin limitación a la pérdida de datos o a la generación incorrecta de datos o a pérdidas sufridas por usted o por terceras partes o a un fallo del Programa al funcionar en combinación con cualquier otro programa), incluso si dicho tenedor u otra parte ha sido advertido de la posibilidad de dichos daños.

FIN DE TÉRMINOS Y CONDICIONES

Apéndice: Cómo aplicar estos términos a sus nuevos programas. para el público en general, la mejor forma de conseguirlo es convirtiéndolo en software libre que cualquiera pueda redistribuir y cambiar bajo estos términos. Para hacerlo, añada los siguientes anuncios al programa. Lo más seguro es añadirlos al principio de cada fichero fuente para transmitir lo más efectivamente posible la ausencia de garantía. Además cada fichero debería tener al menos la línea de «copyright» y un indicador a dónde puede encontrarse el anuncio completo. <una línea para indicar el nombre del programa y una rápida idea de qué hace.> Copyright (C) 19aa <nombre del autor Este programa es software libre. Puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General de GNU según es publicada por la Free Software Foundation, bien de la versión 2 de dicha Licencia o bien (según su elección) de cualquier versión posterior. &bnsp;

Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. Véase la Licencia Pública General de GNU para más detalles. 163


Debería haber recibido una copia de la Licencia Pública General junto con este programa. Si no ha sido así, escriba a la Free Software Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU. Añada también información sobre cómo contactar con usted mediante correo electrónico y postal.

Si el programa es interactivo, haga que muestre un pequeño anuncio como el siguiente, cuando comienza a funcionar en modo interactivo: Gnomovision versión 69, Copyright (C) 19aa nombre del autor

Gnomovision no ofrece ABSOLUTAMENTE NINGUNA GARANTÍA. Para más detalles escriba «show w». Los comandos hipotéticos «show w» y «show c» deberían mostrar las partes adecuadas de la Licencia Pública General. Por supuesto, los comandos que use pueden llamarse de cualquier otra manera. Podrían incluso ser pulsaciones del ratón o elementos de un menú (lo que sea apropiado para su programa). También deberías conseguir que su empleador (si trabaja como programador) o tu Universidad (si es el caso) firme un «renuncia de copyright» para el programa, si es necesario. A continuación se ofrece un ejemplo, altere los nombres según sea conveniente:

Yoyodyne, Inc. mediante este documento renuncia a cualquier interés de derechos de copyright con respecto al programa Gnomovision (que hace pasadas a compiladores) escrito por Pepe Programador. <firma de Pepito Grillo>, 20 de diciembre de 1996 Pepito Grillo, Presidente de Asuntillos Varios.

Esta Licencia Pública General no permite que incluya sus programas en programas propietarios. Si su programa es una biblioteca de subrutinas, puede considerar más útil el permitir el enlazado de aplicaciones propietarias con la biblioteca. Si este es el caso, use la Licencia Pública General de GNU para Bibliotecas en lugar de esta Licencia. 164


Guia oficial de Slackware (1996)