Sunteți pe pagina 1din 154

ndice

1.- INTRODUCCIN A LINUX.

1.1.- INTRODUCCIN.
1.2.- DEFINICIN DE UN SISTEMA OPERATIVO Y SU ESTRUCTURA.
1.3.- CARACTERSTICAS PRINCIPALES DE LINUX.
1.3.1.- CARACTERSTICAS.
1.3.2.-DISTRIBUCIONES

3
6
9
9
11

2.- INSTALACIN DEL LINUX.

13

2.1.- PARTICIONES DE DISCO Y FORMATO.


2.2.- DESCRIBIENDO LA ARQUITECTURA DEL DISCO.
2.2.1.- GEOMETRA FSICA DEL DISCO.
2.2.2.- SISTEMAS DE ARCHIVO.
2.3.- CLASES DE INSTALACIN DEL LINUX.
2.4.- INSTALACIN DEL LINUX.

13
19
19
22
28
31

3.- LINUX BSICO

45

3.1- NAVEGANDO POR EL SISTEMA DE ARCHIVOS.


3.1.1- LA ESTRUCTURA DE ARCHIVOS DE LINUX.
3.1.2- COMANDOS BSICOS.
3.2- COMANDOS PARA ARCHIVOS.
3.2.1.- DESPLEGANDO ARCHIVOS.
3.2.2.- MANEJO DE ARCHIVOS.
3.3.- SEGURIDAD EN LOS ARCHIVOS.
3.3.1.- PERMISOS.
3.3.2.- MODIFICANDO LOS PERMISOS.
3.4.- PERMISOS ADICIONALES PARA ARCHIVOS.
3.4.1.- PERMISOS POR DEFAULT.
3.4.2.- ENLACES.
3.4.3.- CONTROL DE LA MODIFICACIN DE ARCHIVOS.
3.5.- METACARACTERES Y REDIRECCIN.
3.5.1.- METACARACTERES.
3.6.- EL EDITOR VI.
3.6.1.- INTRODUCCIN AL EDITOR.
3.6.2.- COMANDOS DE EDICIN.
3.7.- INTRODUCCIN AL AMBIENTE GRFICO DE LINUX.
3.7.1.- INICIANDO EL AMBIENTE GRFICO DE LINUX.
3.7.2.- CONFIGURACIN DEL AMBIENTE GRFICO DE LINUX.

45
45
50
58
58
62
65
65
68
69
69
69
71
72
72
78
78
79
88
88
88

4.- ADMINISTRACIN DEL SISTEMA.

102

4.1.- CUENTAS PARA USUARIOS EN EL SISTEMA.


4.1.1.- CUENTAS DE USUARIO.
4.1.2.- PROCEDIMIENTOS DE ACCESO.
4.1.3.- CREANDO CUENTAS PARA USUARIO MANUALMENTE.
4.2.- PERSONALIZANDO EL ENTORNO.
4.2.1.- EL SHELL COMO UN LENGUAJE DE PROGRAMACIN.

107
107
107
107
110
110

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

4.2.2.- LOS SCRIPTS DE INICIALIZACIN.


4.3.- CONTROL DE PROCESOS.
4.3.1.- PROCESOS EN EL SISTEMA.
4.3.2.- CORRIENDO COMANDOS EN TIEMPOS ESPECIFICADOS.
4.3.3.- PLANIFICACIN DE LA PRIORIDAD DE LOS PROCESOS.
4.4.- UTILERAS.
4.4.1.- ENCONTRANDO ARCHIVOS Y TEXTO.
4.4.2.- RESPALDANDO ARCHIVOS.
4.5.- SOFTWARE DE ADMINISTRACIN DE PAQUETES.
4.5.1.- INSTALACIN DE PAQUETES.

116
118
118
124
129
130
130
130
137
137

5.- LINUX AVANZADO.

147

5.1- EL PROCESO DE ARRANQUE.


5.1.1.- EL PROCESO DE ARRANQUE, INIT.
5.1.2.-CORRIENDO PROGRAMAS DURANTE EL PROCESO DE ARRANQUE.
5.1.3.- DANDO DE BAJA EL SISTEMA.
5.2.- CAMBIANDO NIVELES DE ARRANQUE.
5.2.1.- INTRODUCCIN A LOS NIVELES DE ARRANQUE.
5.2.2.- CAMBIANDO LOS NIVELES DE ARRANQUE.
5.3.- EL SISTEMA DE ARCHIVOS DE LINUX
5.3.1.- INTRODUCCIN AL SISTEMA DE ARCHIVOS.
5.3.2.- LA ESTRUCTURA DE ARCHIVOS DE LINUX.
5.4.- MONTANDO SISTEMAS DE ARCHIVOS.
5.4.1.- MONTANDO SISTEMAS DE ARCHIVOS.
5.4.2.- SISTEMAS DE ARCHIVOS REMOTOS.
5.5.- MANTENIMIENTO DE SISTEMAS DE ARCHIVOS.
5.5.1.- UTILERAS.

147
147
147
148
148
148
149
149
149
149
150
150
152
153
153

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

1.- Introduccin a Linux.


1.1.- Introduccin.
Linux es probablemente el acontecimiento mas importante del software gratuito
desde el original Space War, o, mas recientemente, Emacs. Se ha convertido en el
sistema operativo para los negocios, educacin, y provecho personal. Linux ya no es
solo para gurus de UNIX que se sientan durante horas frente a la resplandeciente
consola (aunque le aseguramos que un gran numero de usuarios pertenece a esta
categora). Este libro le ayudara a sacarle el mximo partido.
Linux es un clnico del sistema operativo UNIX que corre en computadoras Intel
80386 y posteriores. Soporta un amplio rango de software, desde TEX a X Windows
al compilador GNU C/C++ a TCP/IP. Es una implementacin de UNIX verstil,
distribuida gratuitamente en los trminos de la Licencia GNU.
Linux puede convertir cualquier PC en una estacin de trabajo. Le pondr todo el
poder de UNIX en la punta de sus dedos. En los negocios ya se instala Linux en
redes enteras, usando el sistema operativo para manejar registros financieros y de
hospitales, un entorno de usuario distribuido, telecomunicaciones, etc. Universidades
de todo el mundo usan Linux para dar cursos de programacin y diseo de sistemas
operativos. Y, por supuesto, entusiastas de los computadoras de todo el mundo
estn usando Linux en casa, para programar, entretenerse, y conocerlo a fondo.
Lo que hace a Linux tan diferente es que es una implementacin gratuita de UNIX.
Fue y aun es desarrollado por un grupo de voluntarios, principalmente en Internet,
intercambiando cdigo, comentando fallos, y arreglando los problemas en un entorno
abierto. Cualquiera es bienvenido a sumarse al esfuerzo de desarrollo de Linux: todo
lo que se pide es inters en producir un clnico gratuito de UNIX y algunos
conocimientos de programacin. El libro que tiene en sus manos es su gua de viaje.
Breve historia de Linux
UNIX es uno de los sistemas operativos mas populares del mundo debido a su
extenso soporte y distribucin. Originalmente fue desarrollado como sistema
multitarea con tiempo compartido para mini computadoras y mainframes a mediados
de los 70, y desde entonces se ha convertido en uno de los sistemas mas utilizados a
pesar de su, ocasionalmente, confusa interfaz con el usuario y el problema de su
estndarizacin.
>Cual es la verdadera razn de la popularidad de UNIX? Muchos hackers consideran
que UNIX es el autentico y nico sistema operativo. El desarrollo de Linux parte de
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
3

un grupo en expansin de hackers de UNIX que quisieron hacer su sistema con sus
propias manos.
Existen numerosas versiones de UNIX para muchos sistemas, desde computadoras
personales hasta supercomputadoras como el Cray Y-MP. La mayora de las
versiones de UNIX para computadoras personales son muy caras. Cuando se
escriba este libro, una copia para una maquina 386 del UNIX System V de AT&T
costaba unos 1500 dlares estadounidenses.
Linux es una versin de UNIX de libre distribucin, inicialmente desarrollada por
Linus Torvalds en la Universidad de Helsinki, en Finlandia. Fue desarrollado con la
ayuda de muchos programadores y expertos de UNIX a lo largo y ancho del mundo,
gracias a la presencia de Internet. Cualquier habitante del planeta puede acceder a
Linux y desarrollar nuevos mdulos o cambiarlo a su antojo. El ncleo de Linux no
utiliza ni una sola linea del cdigo de AT&T o de cualquier otra fuente de propiedad
comercial, y buena parte del software para Linux se desarrolla bajo las reglas del
proyecto de GNU de la Free Software Foundation, Cambridge, Massachusetts.
Inicialmente, solo fue un proyecto de aficionado de Linus Torvalds. Se inspiraba en
Minix, un pequeo UNIX desarrollado por Andy Tanenbaum, y las primeras
discusiones sobre Linux surgieron en el grupo de News comp.os.minix. Estas
discusiones giraban en torno al desarrollo de un pequeo sistema UNIX de carcter
acadmico dirigido a aquellos usuarios de Minix que queran algo mas.
El desarrollo inicial de Linux ya aprovechaba las caractersticas de conmutacin de
tareas en modo protegido del 386, y se escribi todo en ensamblador. Linus dice,
"Comenc a utilizar el C tras escribir algunos drivers, y ciertamente se acelero el
desarrollo. En este punto sent que mi idea de hacer un Minix mejor que Minix' se
hacia mas seria. Esperaba que algn da pudiese recompilar el gcc bajo Linux. . .
"Dos meses de trabajo, hasta que tuve un driver de discos (con numerosos bugs,
pero que pareca funcionar en mi PC) y un pequeo sistema de archivos. Aqu tenia
ya la versin 0.01 [al final de Agosto de 1991]: no era muy agradable de usar sin el
driver de diskettes, y no hacia gran cosa. No pense que alguien compilara esa
versin."

No se anuncio nada sobre esa versin, puesto que las fuentes del 0.01 jamas fueron
ejecutables: contenan solo rudimentos de lo que seria el nucleo , y se asuma que se
tenia acceso a un Minix para poderlo compilar y jugar con el.
El 5 de Octubre de 1991, Linus anuncio la primera versin "oficial" de Linux, la 0.02.
Ya poda ejecutar bash (el shell de GNU) y gcc (el compilador de C de GNU), pero no
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

hacia mucho mas. La intencin era ser un juguete para hackers. No haba nada
sobre soporte a usuarios, distribuciones, documentacin ni nada parecido. Hoy, la
comunidad de Linux aun trata estos asuntos de forma secundaria. Lo primero sigue
siendo el desarrollo del kernel.
Linus escriba en comp.os.minix,
">Suspiras al recordar aquellos das de Minix-1.1, cuando los hombres eran hombres
y escriban sus propios drivers?
>Te sientes sin ningn proyecto interesante y te gustara tener un verdadero S.O.
que pudieras modificar a placer?
>Te resulta frustraste el tener solo a Minix?
Entonces, este articulo es para ustedes.
"Como dije hace un mes, estoy trabajando en una versin gratuita de algo parecido a
Minix para computadoras At-386. He alcanzado la etapa en la que puede ser
utilizable y voy a poner las fuentes para su distribucin. Es solo la versin 0.02. . .
pero he conseguido ejecutar en el bash, gcc, gnu-make, gnu-sed, compress, etc.

Tras la versin 0.03, Linus salto a la versin 0.10, al tiempo que mas gente
empezaba a participar en su desarrollo. Tras numerosas revisiones, se alcanzo la
versin 0.95, reflejando la esperanza de tener lista muy pronto una versin "oficial".
(Generalmente, la versin 1.0 de los programas se corresponden con la primera
tericamente completa y sin errores). Esto suceda en Marzo de 1992. Ao y medio
despus, en Diciembre del 93, el ncleo estaba en la revisin 0.99.pl14, en una
aproximacin asinttica al 1.0. Actualmente, el ncleo se encuentra en la versin 1.1
parche 52, y se acerca la 1.2.
Hoy Linux es ya un clnico de UNIX completo, capaz de ejecutar X Windows, TCP/IP,
Emacs, UUCP y software de correo y News. Mucho software de libre distribucin ha
sido ya portado a Linux, y estn empezando a aparecer aplicaciones comerciales. El
hardware soportado es mucho mayor que en las primeras versiones del ncleo.
Mucha gente ha ejecutado tests de rendimiento en sus sistemas Linux 486 y se han
encontrado que son comparables a las estaciones de trabajo de gama media de Sun
Microsystems y Digital.
>Quien iba a imaginar que este "pequeo" clonico de UNIX iba a convertirse en un
estndar mundial para las computadoras personales?

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

1.2.- Definicin de un sistema operativo y su estructura.


Sistema de computacin, consta de :
Hardware.
Software.
Programas de aplicacin.

Arquitectura de una computadora : Atributos de un sistema que son visibles a un


programador.

Conjunto de instrucciones.
Organizacin de la memoria.
Entrada y salida.
Estructura del bus.

Funciones bsicas de una computadora :

Procesamiento de datos.
Almacenamiento de datos.
Transferencias de datos.
Control.

Sistema operativo : Controla todos los recursos de la computadora y ofrece la base


sobre la cual pueden escribirse los programas de aplicacin.

El sistema operativo como una mquina ampliada :


1. Es el programa que oculta la verdad del hardware al programador.
2. Disimula mucho el trabajo displicente concerniente a interrupciones, relojes o
cronmetros, manejo de la memoria y otras caractersticas de bajo nivel.
3. La abstraccin que se presenta al usuario del sistema operativo es ms simple y
sencilla de utilizar que el hardware implcito.

Una funcin del sistema operativo es : presentar al usuario una mquina


ampliada o una mquina virtual que sea ms fcil de programar que el hardware
implcito.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

El sistema operativo como un manejador de recursos:


El trabajo del sistema operativo consiste en ofrecer una distribucin ordenada y
controlada de los procesadores, memorias y dispositivos de E/S entre los diversos
programas que compiten por ellos.
Componentes principales de un Sistema Operativo :

El manejo del proceso.


Entrada y salida.
Manejo de la memoria.
Sistema de archivo.

Historia de los sistemas operativos.


Primera generacin (1945-1955) : tubos de vaco y tableros enchufables.
Se desconocan los lenguajes de programacin.
Los sistemas operativos eran extraos.
Segunda generacin (1955-1965) : transistores y sistemas de lote.
Tercera generacin (1965-1980) : circuitos integrados y multiprogramacin.
Popularizaron varias tcnicas importantes ausentes en los sistemas operativos de la
segunda generacin. La ms importante, la multiprogramacin.
Tcnica de manejo por cola de impresin : la capacidad de leer trabajos de
tarjetas contenidas en el disco tan pronto se llevaban al cuarto de computacin.
Siempre que se terminaba el trabajo, el sistema operativo poda cargar uno nuevo del
disco en la particin no vaca y ejecutarlo.
Sistema de tiempo compartido : variante de la multiprogramacin, cada usuario
tiene una terminal en lnea, si hay 20 usuarios en el sistema y 17 estn pensando,
trabajando o tomando caf, la CPU puede distribuirse en turno para los 3 trabajos
que necesitan servicio.
Cuarta generacin (1980-....) : computadoras personales.
Sistemas operativos en red : los usuarios tienen conocimiento de la existencia de
mltiples computadoras y pueden ingresar en mquinas remotas y reproducir
archivos de una mquina a la otra.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

Sistema operativo distribuido : se presenta ante sus usuarios como un sistema


uniprocesador tradicional, aunque en realidad est compuesto de mltiples
procesadores.
Sistema distribuido real : los usuarios no tienen conocimiento de donde estn
ejecutando sus programas o donde estn ubicados sus archivos.
Estructura de un sistema operativo.
Sistemas monolticos.
Es la organizacin ms comn.
Se le llama El gran lo, ya que no exhibe una estructura.
El sistema operativo se escribe como un conjunto de procedimientos, cada uno de los
cuales puede llamar a cualquiera de los otros siempre que los necesite.
1.- El programa de usuario captura el kernel.
2.- El sistema operativo determina el nmero de servicio que se le pide.
3.- El sistema operativo localiza y llama al procedimiento de servicio.
4.- El control se devuelve al programa de usuario.
Esta organizacin sugiere una estructura bsica del sistema operativo :
1.- Un programa central que invoque el procedimiento de servicio solicitado.
2.- Un conjunto de procedimientos de servicios que realice las llamadas al sistema.
3.- Un conjunto de procedimientos de uso general que ayude a los procedimientos de
servicio.
Sistemas en estratos.
Consiste en organizar el sistema operativo como una jerarqua de estratos.
Cada estrato est construido arriba del que est debajo de el.
Mquinas virtuales.
(CMS) sistema con monitor convencional.
El corazn del sistema conocido como monitor de la mquina virtual, corre en el
hardware y realiza la multiprogramacin, ofreciendo no una, sino varias mquinas
virtuales para el siguiente estrato hacia arriba. Estas mquinas virtuales no son
mquinas extendidas, con archivos y otras caractersticas atractivas. Son copias
exactas del hardware simple, incluyendo el modo de kernel/usuario, E/S,
interrupciones, y todo lo dems que tiene la mquina real. Cada mquina virtual es
idntica al hardware real, cada una puede correr cualquier sistema operativo que
correr directamente en el hardware.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

Modelo del servidor del cliente.

1.3.- Caractersticas principales de Linux.


1.3.1.- Caractersticas.
Caractersticas de Linux
Multitarea: varios programas (realmente procesos) ejecutndose al mismo tiempo.
Multiusuario: varios usuarios en la misma mquina al mismo tiempo (y sin
licencias para todos!).
Multiplataforma: corre en muchas CPUs distintas, no slo Intel.
Funciona en modo protegido 386.
Tiene proteccin de la memoria entre procesos, de manera que uno de ellos no
pueda colgar el sistema.
Carga de ejecutables por demanda: Linux slo lee de disco aquellas partes de un
programa que estn siendo usadas actualmente.
Poltica de copia en escritura para la comparticin de pginas entre ejecutables:
esto significa que varios procesos pueden usar la misma zona de memoria para
ejecutarse. Cuando alguno intenta escribir en esa memoria, la pgina (4Kb de
memoria) se copia a otro lugar. Esta poltica de copia en escritura tiene dos
beneficios: aumenta la velocidad y reduce el uso de memoria.
Memoria virtual usando paginacin (sin intercambio de procesos completos) a
disco: una particin o un archivo en el sistema de archivos, o ambos, con la
posibilidad de aadir ms reas de intercambio sobre la marcha (se sigue
denominando intercambio, es en realidad un intercambio de pginas). Un total de
16 zonas de intercambio de 128Mb de tamao mximo pueden ser usadas en un
momento dado con un lmite terico de 2Gb para intercambio.
La memoria se gestiona como un recurso unificado para los programas de usuario
y para el cach de disco, de tal forma que toda la memoria libre puede ser usada
para cach y ste puede a su vez ser reducido cuando se ejecuten grandes
programas.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

Libreras compartidas de carga dinmica (DLL's) y libreras estticas tambin, por


supuesto.
Se realizan volcados de estado (core dumps) para posibilitar los anlisis postmortem, permitiendo el uso de depuradores sobre los programas no slo en
ejecucin sino tambin tras abortar stos por cualquier motivo.
Casi totalmente compatible con POSIX, System V y BSD a nivel fuente.
Mediante un mdulo de emulacin de iBCS2, casi completamente compatible con
SCO, SVR3 y SVR4 a nivel binario.
Todo el cdigo fuente est disponible, incluyendo el ncleo completo y todos los
drivers, las herramientas de desarrollo y todos los programas de usuario; adems
todo ello se puede distribuir libremente. Hay algunos programas comerciales que
estn siendo ofrecidos para Linux actualmente sin cdigo fuente, pero todo lo que
ha sido gratuito sigue siendo gratuito.
Control de tareas POSIX.
Pseudo-terminales (pty's).
Emulacin de 387 en el ncleo, de tal forma que los programas no tengan que
hacer su propia emulacin matemtica. Cualquier mquina que ejecute Linux
parecer dotada de coprocesador matemtico. Por supuesto, si tu computadora ya
tiene una FPU (unidad de coma flotante), ser usada en lugar de la emulacin,
pudiendo incluso compilar tu propio kernel sin la emulacin matemtica y
conseguir un pequeo ahorro de memoria.
Soporte para muchos teclados nacionales o adaptados y es bastante fcil aadir
nuevos dinmicamente.
Consolas virtuales mltiples: varias sesiones de login a travs de la consola entre
las que se puede cambiar con las combinaciones adecuadas de teclas (totalmente
independiente del hardware de video). Se crean dinmicamente y puedes tener
hasta 64.
Soporte para varios sistemas de archivo comunes, incluyendo minix-1, Xenix y
todos los sistemas de archivo tpicos de System V, y tiene un avanzado sistema
de archivos propio con una capacidad de hasta 4 Tb y nombres de archivos de
hasta 255 caracteres de longitud.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

10

Acceso transparente a particiones MS-DOS (o a particiones OS/2 FAT) mediante


un sistema de archivos especial: no necesitas ningn comando especial para usar
la particin MS-DOS, parece un sistema de archivos normal de Unix (excepto por
algunas graciosas restricciones en los nombres de archivo, permisos, y esas
cosas).
Un sistema de archivos especial llamado UMSDOS que permite que Linux sea
instalado en un sistema de archivos DOS.
Soporte en slo lectura de HPFS-2 del OS/2 2.1
Sistema de archivos de CD-ROM que lee todos los formatos estndar de CDROM.
TCP/IP, incluyendo ftp, telnet, NFS, etc.
Appletalk disponible en el actual ncleo de desarrollo.
Software cliente y servidor Netware disponible en los ncleos de desarrollo.

1.3.2.-Distribuciones
Se llaman distribuciones un conjunto de soportes (diskettes, CD-ROM ...) que
contengan lo necesario para instalar un programa en una maquina. No existe una
distribucin oficial de linux. Solo las distribuciones circulan. He aqu las principales :
slackware : es la distribucin de referencia histricamente. En la medida en que era
la nica distribucin mas o menos correctamente hecha hace unos 2 aos. En
nuestros das ella tiene una competecia correcta de parte de nuevas distribuciones
como RedHat y se puede temer que termine como SLS por sus dificultades para
evolucionar. Ademas solo funciona en un arquitectura Intel. Su tamao es de 113 Mb
(comprimida) o sea 89 diskettes. Es todo ELF. Utiliza la libc 5.3.12, el ncleo es el
2.0.0 y el Xfree86 3.2.0. La ultima versin es de Diciembre de 1996. Su sitio oficial es
: ftp.cdrom.com
Red Hat : es una distribucin inicialmente comercial, pero es igualmente disponible
va FTP. Es mucho mas profesional que la Slackware. Ademas es disponible para
otros tipos de arquitectura con procesadores " no Intel " (Alpha, Sparc). Versin 4.0
(Colgate). Esta distribucin se distingue por su seriedad, la simplicidad de sus
instalacin y sobre todo su extrema convivialidad. Ademas la puesta al da se hace
mediante un sistema de paquetes (los RPM). Sitio oficial : ftp.redhat.com Sitio Web :
http://www.redhat.com
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

11

Debian : es la versin de Linux apoyada por la FSF (Free Software Foundacion).


Esta basada en programas relativamente antiguos, los autores de esta distribucin
quieren principalmente una distribucin estable, lo que interfiere con el desarrollo de
nuevas funciones.
MCC : Versin 1.2+ . Ultima versin Mayo / Junio 1995 (parece cada en el olvido...)
Bogus : Es una distribucin estable y muy bien hecha. El nico problema con Bogus
es que su frecuencia de puesta al da es bastante irregular. Versin 1.0.1 Ultima
puesta al da Julio 1994.
SLS : Primera gran distribucin de Linux, la SLS es ya obsoleta : Versin 1.06. Ultima
puesta al da : Noviembre 1994.
Mini-Linux : Como su nombre lo indica, se trata de una distribucin muy reducida de
Linux (demasiado reducida a mi gusto pero bueno) Se puede encontrar en ftp.loria.fr,
la versin francesa. Esta compuesta de 5 diskettes y la ultima puesta al da es del 10
Abril 1995
Jurix : Es una distribucin creada en Alemania a partir de las ultimas versiones de
los programas disponibles. Esta siempre en la punta del progreso pero a veces
pone problemas a veces puesto que los programas no estn completamente
debogados. La ultima puesta al da es del 8 Diciembre de 1996.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

12

2.- Instalacin del Linux.


2.1.- Particiones de disco y formato.
Conceptos sobre particiones
En general, los discos duros se encuentran divididos en particiones, donde cada
particin corresponde a un sistema operativo. Por ejemplo, en un disco duro se
pueden tener varias particiones una dedicada a, digamos, MS-DOS, otra a OS/2 y
otra a Linux.
Si se tiene ya otro software instalado en su sistema, puede necesitar cambiar el
tamao de sus particiones con el fin de reservar espacio para Linux. En el espacio
reservado se crearan una o mas particiones para almacenar el software de Linux y el
espacio de intercambio. A este proceso lo llamamos reparticionar.
La mayora de los sistemas MS-DOS o Windows utilizan una nica particin que
ocupa todo el disco. Para MS-DOS, esta particin es accedida como C:. Si se tiene
mas de una particin, MS-DOS las llamara D:, E:, y as sucesivamente, de modo que
cada particin acta como si fuera un disco duro independiente. En el primer sector
del disco esta el registro de arranque maestro junto a la tabla de particiones. El
registro de arranque (como su nombre indica) se usa para arrancar el sistema. La
tabla de particiones contiene informacin acerca del lugar y el tamao de cada
particin.
Hay tres clases de particiones: primarias, extendidas, y lgicas. De estas, las mas
usadas son las primarias. Sin embargo, debido al limite del tamao de la tabla de
particiones, solo pueden tenerse hasta cuatro particiones primarias en un disco. La
forma de superar este limite de cuatro particiones es usar particiones extendidas.
Una particin extendida no tiene datos ella misma; en su lugar, acta como "soporte"
de particiones lgicas. Por lo tanto, se puede crear una particin extendida que ocupe
todo el disco, y dentro crear cualquier numero de particiones lgicas. Sin embargo,
solo puede tenerse una particin extendida por disco.
Necesidades de reparticionado en Linux
Antes de que expliquemos como reparticionar sus discos, necesita tener una idea
acerca del espacio que necesita para Linux.
En los sistemas UNIX, los archivos se almacenan en un sistema de archivos, que es
esencialmente una zona del disco duro (u otro dispositivo, como un CD-ROM o un
diskette) formateado para almacenar archivos. Cada sistema de archivos se
encuentra asociado con una parte especifica del rbol de directorios; por ejemplo, en
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
13

la mayora de los sistemas, existe un sistema de archivos para todos los archivos del
directorio /usr, otro para /tmp, etc. El sistema de archivos raz es el principal, que
corresponde con el directorio raz, /.
Bajo Linux, cada sistema de archivos ocupa una particin del disco duro. Por
ejemplo, si tenemos un sistema de archivos para / y otro para /usr, necesitaremos
dos particiones para almacenar ambos sistemas.
Antes de instalar Linux, usted necesitara preparar sistemas de archivos para
almacenar el software de Linux. Por lo menos tiene que tener un sistema de archivos
(el sistema de archivos raz), y una particin reservada a Linux. La mayora de los
usuarios de Linux optan por almacenar todos sus archivos en el sistema de archivos
raz, pues en la mayor parte de los casos es mas facil de gestionar que tener
diferentes sistemas de archivos y particiones.
Sin embargo, usted puede crear varios sistemas de archivos para Linux si lo desea
por ejemplo, puede que quiera usar sistemas separados para /usr y /home.
Aquellos lectores con experiencia en administracion de sistemas UNIX sabrn como
usar diferentes sistemas de archivos adecuadamente.
>Por que usar mas de un sistema de archivos? Lo mas habitual es por seguridad; si,
por alguna razn, uno de sus sistemas de archivos resulta daado, los otros
normalmente no resultaran afectados. Por otro lado, si usted almacena todos sus
archivos en el sistema de archivos raz, y por alguna razn resulta daado, puede
perder todos los archivos de una vez. Sin embargo, esto no es lo habitual; si se
hacen copias de seguridad (backups) regularmente, no hay de que preocuparse.
Otra razn para utilizar varios sistemas de archivos es repartir el almacenamiento
entre varios discos duros. Si usted tiene, digamos, 40 megabytes libres en un disco
duro y 50 en otro, se pueden querer crear un sistema de archivos raz de 40
megabytes en el primer disco y un sistema /usr de 50 megabytes en el otro.
Actualmente no es posible que un sistema de archivos abarque varios discos; si su
espacio libre de disco esta repartido entre los discos, necesitara utilizar varios
sistemas de archivos para aprovecharlos.
En resumen, Linux requiere por lo menos una particin, para el sistema de archivos
raz. Si se desea crear varios sistemas de archivos, se necesitara una particin por
cada sistema de archivos.
Algunas distribuciones de Linux crean particiones y sistemas de archivos de forma
automtica, de modo que usted no necesita preocuparse demasiado de estos
asuntos.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

14

Otra cuestion a considerar cuando se deciden las particiones es el espacio de


intercambio (swap). Si se desea usar espacio de intercambio en Linux, se tienen dos
opciones. La primera es usar un archivo de intercambio que existe dentro de uno de
los sistemas de archivos de Linux. Se crea el archivo de intercambio para usarlo
como RAM virtual una vez instalado el software. La segunda opcion es crear una
particin de intercambio, una particin reservada exclusivamente como espacio de
swap. La mayora de la gente usa una particin para el intercambio en lugar de un
archivo.
Cada archivo o particin de intercambio puede ser de hasta 16 megabytes. Si se
desea tener mas de 16 megabytes de swap, se pueden crear varios archivos o
particiones de intercambio hasta ocho a la vez. Por ejemplo, si se necesitan 32
megabytes de swap, se pueden crear dos particiones de 16 megabytes.
Por lo general, se crearan dos particiones para Linux: una para ser usada como
sistema de archivos del directorio raz, y la otra como espacio de intercambio. Por
supuesto, hay otras opciones pero esta es la opcin mnima. El espacio de swap no
es obligatorio en Linux, pero esta muy recomendado si posee menos de 16
megabytes de memoria fsica. Tambin necesita conocer el espacio requerido para
cada particin. El tamao de los sistemas de archivos de su sistema Linux depende
en gran parte de que software quiera instalar en el y de la distribucin de Linux que
este utilizando. Afortunadamente, la Documentacin de la distribucin le dar una
idea del espacio requerido. Un sistema pequeo puede utilizar solo 20 megabytes o
menos; un sistema grande siempre necesitara 80 a 100 megabytes, o mas. Tenga
en cuenta que hay que aadir a esto el espacio extra para los directorios de usuario,
expansiones futuras, etc.
El tamao de sus particiones de swap (debe elegirse una para esto) depende de la
RAM virtual que necesite. Lo tpico es crear una particin de intercambio del doble de
espacio de su RAM fsica; por ejemplo, si tiene 4 megabytes de RAM, una particin
de 8 megabytes suele bastar. Por supuesto, esto es solo una idea la cantidad de
espacio de swap que requiere depender del software que quiera ejecutar. Si usted
tiene una gran cantidad de memoria fsica (digamos, 16 megabytes o mas) puede
que al final no necesite espacio de intercambio.
Nota importante: Debido a las limitaciones de la BIOS, habitualmente no es posible
arrancar desde particiones que empiecen mas all del cilindro 1023. As pues,
cuando se decida el espacio para Linux, recuerde que no debe usar una particin que
sobrepase ese cilindro para el sistema de archivos raz. Linux puede usar
perfectamente particiones con cilindros mas all del 1023, pero dichas particiones no
servirn para arrancar . Decir esto aqui puede parecer prematuro, pero es importante
a la hora de planificar el uso del disco en Linux.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

15

Si se usara una particin para el sistema de archivos raz mas all del cilindro 1023,
siempre podr arrancar Linux con un disco boot. Esto no es un inconveniente solo
tarda unos segundos mas que si se arrancara desde el disco duro.

Reparticionado de los discos


En esta seccin vamos a describir como cambiar el tamao de sus particiones
actuales (si las hay) para reservar espacio para Linux. Si usted esta instalando Linux
en un disco duro "limpio", puede pasar directamente a la Seccin 2.3 de mas
adelante.
La manera habitual de cambiar el tamao de una particin es borrarla (lo que implica
borrar toda la informacin que contenga) y rehacerla. Antes de reparticionar sus
discos, haga un backup. Despus de cambiar las particiones, puede proceder a
reinstalar el software desde el backup. Sin embargo, podemos encontrar programas
para MS-DOS que consiguen cambiar el tamao de las particiones de forma no
destructiva. Uno de estos se conoce como "FIPS", y puede encontrarse en muchos
servidores de FTP de Linux.
Recuerde tambin que debido a que se empequeecen las particiones originales, no
se va a poder reinstalar todo el software que se tenia antes. En este caso, hay que
borrar el software innecesario para permitir que el resto quepa en las particiones mas
pequeas.
El programa utilizado para hacer particiones es fdisk. Cada sistema operativo tiene
su propia versin de este programa; por ejemplo, bajo MS-DOS, se activa con el
comando FDISK. Debe consultarse la Documentacin de los sistemas operativos en
uso para obtener informacin sobre este asunto. Aqu nos referiremos nicamente a
MS-DOS con FDISK, pero lo que digamos puede ser fcilmente extrapolado a otros
sistemas operativos.
Consulte, por favor , la Documentacin de sus sistemas operativos actuales antes de
proceder a reparticionar sus discos. Esta seccin pretende ser solo una visin
general del proceso; y hay muchos detalles que no vamos a mencionar. Tenga en
cuenta que se puede perder todo el software de su sistema si no se hace
correctamente el reparticionado.
Un aviso: No modifique o cree particiones para otros sistemas operativos (incluyendo
Linux) utilizando FDISK bajo MS-DOS. Solo pueden modificarse particiones de cada
sistema operativo con la versin de fdisk correspondiente a ese sistema; por
ejemplo, se crearan las particiones para Linux utilizando el programa fdisk que
viene con Linux. Mas adelante, en la Seccin 2.3.3, describiremos como crear
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

16

particiones de Linux, pero por ahora nos ocuparemos solo de cambiar el tamao de
las actuales.
Supongamos que usted tiene un solo disco duro en su sistema, dedicado, por ahora,
enteramente a MS-DOS. Esto es, su disco duro contiene una particin MS-DOS,
conocida habitualmente como "C:". Puesto que este mtodo de reparticionado
destruir todos los datos de la particin, necesita crear un disco de sistema MS-DOS
"arrancable" que contenga lo necesario para ejecutar FDISK y restaurar el software
desde el backup cuando se complete el proceso de reparticionado.
En muchos casos, se pueden usar para esto los discos de instalacin de MS-DOS.
Sin embargo, si necesita el disco de sistema, formateelo mediante el comando
FORMAT /s A:
Copie en ese disco todas las utilidades de MS-DOS necesarias (normalmente, casi
todo lo que hay en el directorio \DOS de su disco), as como los programas
FORMAT.COM y FDISK.EXE. Ahora se debe poder arrancar desde este diskette, y
ejecutar el comando
FDISK C:
para arrancar FDISK. La utilizacin de FDISK debera ser autoexplicativa, pero
puede consultarse la Documentacin de MS-DOS para obtener detalles. Cuando
comience el programa FDISK, utilice el men de opciones para mostrar la tabla de
particiones, y anote la informacin que se le muestre. Es importante guardar copia
de su configuracin original en caso de que quiera detener la instalacin de Linux.
Para borrar una particin, seleccione la opcion del men "Delete an MS-DOS
Partition or Logical DOS Drive" (Eliminar particin o unidad lgica DOS). Especifique
el tipo de particin que desea borrar (primaria, extendida o lgica) y el numero de la
particin. Verifique todos los avisos que se le presenten.
Para crear una nueva particin para MS-DOS (mas pequea), seleccione la opcion
de FDISK
"1. Crear particin DOS o unidad lgica DOS". Especifique el tipo de particin
(primaria, extendida o lgica) y el tamao (en megabytes). FDISK deber crear la
particin.
Despus de hacer esto mediante FDISK, debe abandonar el programa y reformatear
las nuevas particiones. Por ejemplo, si se cambio el tamao de la particin C: se
tecleara el comando
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

17

FORMAT /s C:

Ahora puede reinstalar el software desde el backup.


Instalacin del software de Linux
Despus de modificar sus particiones para reservar espacio a Linux, usted esta
preparado para instalar el software. A continuacin se muestra un resumen del
procedimiento a seguir:
Arrancar con el dispositivo de arranque de Linux (diskette).
Ejecutar fdisk bajo Linux para crear las particiones de Linux.
Ejecutar mke2fs y mkswap para crear los sistemas de archivos y el espacio de
intercambio.
Instalar el software de Linux.
Finalmente, instalar el cargador LILO en el disco duro, o crear un disco de
arranque con el fin de arrancar su nuevo sistema Linux.
Como hemos dicho, uno (o mas) pasos de los anteriores pueden estar automatizados
por los programas de instalacin, segn la distribucin que este utilizando. Por favor,
consulte la documentacin de su distribucin para ver las instrucciones especificas.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

18

2.2.- Describiendo la arquitectura del disco.


2.2.1.- Geometra fsica del disco.

Ya que el disco est constantemente girando y las cabezas de lectura y escritura se


mueven como una sola unidad, las bsquedas ms eficientes ocurren cuando los
bloques que van a ser leidos o escritos estn localizados en el mismo cilindro.
Los datos almacenados en cada plato son ledos y escritos por una serie de cabezas
que flotan sobre las superficies.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

19

Sector
Es la menor unidad en el plato y son de 512 bytes cada uno.
Pista
Los sectores son secciones de una pista. Los sectores que forman una pista puede
ser ledos o escritos por una cabeza durante una sola revolucin del disco.
Cilindros
Las superficies son formateadas como pistas de datos concntricas, las cuales se
completan en una rotacin completa del disco por una posicin de cabeza dada. La
suma de pistas provistas por todas las cabezas en una posicin dada es conocida
como cilindro.

Para calcular el tamao del disco.


(512 bytes) * # sectores por pista * # pistas por cilindro *# cilindros.

Particiones del disco.


Los discos duros usados pueden ser divididos en particiones. Cada particin es
tratada por el sistema operativo como un disco lgico (un dispositivo de disco aparte).
Las ventajas de particionar son :
Funcionalmente organiza los datos.
Permite a los superusuarios desarrollar estrategias para respaldar.
Los discos pueden ser divididos en particiones para separar tipos de datos. La razn
ms comn es facilitar la tarea de respaldar.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

20

La tabla de particiones define los lmites de cada particin y el nmero de cilindros en


cada particin.
Las particiones son descritas por un desplazamiento (distancia desde el cilindro 0) y
un tamao. Los desplazamientos y tamaos para un disco son definidos por una
tabla de particiones.
En el diagrama que sigue, el desplazamiento para la particin 0 es 0 cilindros y su
tamao es de 46 cilindros. Por lo tanto, el lmite de la particin inicia en el cilindro 0 y
termina en el cilindro 45. La particin 1 est en el desplazamiento 46 y su tamao es
91 cilindros, y as sucesivamente.
Por default la particin 2 describe todo el disco.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

21

2.2.2.- Sistemas de archivo.


El sistema de archivo es la parte ms visible de un sistema operativo.
Desde el punto de vista del usuario, el aspecto ms importante de un sistema de
archivo es la forma en que l lo concibe.
Lo que constituye un archivo.
La forma en que los archivos se nominan y protegen.
Las operaciones que se permiten con los archivos.

Son de importancia considerable para los diseadores del sistema de archivo y de


menor inters para el usuario.
Los detalles de si las listas enlazadas o mapas de bits se utilizan para llevar el
control del almacenamiento libre.
Cuantos sectores hay en un bloque lgico.

Directorios : Un directorio suele contener varias captaciones, una por archivo. La


manera ms simple consiste en que el sistema conserve un solo directorio que
contenga todos los archivos de todos los usuarios.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

22

Un directorio puede tener varias entradas, donde cada una describe un archivo. Las
entradas pueden contener cierta informacin acerca del archivo o bien apuntar a
otras estructuras que la tengan.

Diseo de un sistema de archivos.


A los diseadores de un sistema de archivo les interesa :
Cmo se maneja el espacio en el disco.
Cmo se almacenan los archivos.
Cmo hacer que todo funcione eficiente y confiablemente.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

23

Manejo del espacio en el disco.


Son posibles dos estrategias para almacenar un archivo de n bytes :
Se distribuyen n bytes consecutivos de espacio del disco.
El archivo se divide en varios bloques (no necesariamente) contiguos.

Los bloques.
Casi todos los sistemas de archivo recortan los archivos en bloques de tamao fijo
que no necesitan ser adyacentes.
Qu tan grande debe de ser el bloque?
Tener una unidad de asignacin grande, como un cilindro, significa que todos los
archivos, aun uno de 1 byte, se le asigna un cilindro completo.
Una unidad de asignacin pequea, quiere decir que cada archivo consta de muchos
bloques.
La lectura de cada bloque requiere una localizacin y una demora rotatoria, de modo
que un archivo de muchos bloques ser lenta.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

24

Cmo llevar el control de los bloques libres?


Se utilizan dos mtodos :
Lista enlazada de bloques de disco, donde cada bloque contenga tantos nmeros
de bloque de disco libres como le quepan.
Mapa de bits con n bits. Un disco con n bloques, requiere un mapa de bits con n
bits. Los bloques libres suelen ser representados con 1 (unos); los bloques
asignados con 0 (ceros), o viceversa.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

25

Almacenamiento en archivos.
Un archivo consta de una sucesin de bloques, el sistema de archivo debe contar
con alguna manera de llevar el control de los bloques de cada archivo.
La forma ms evidente (el almacenamiento consecutivo de los bloques), suele no ser
viable por los archivos pueden crecer.
Un mtodo que resulta adecuado consiste en almacenar los bloques de un archivo
como una lista enlazada.

Desventajas :
1.- El nmero de bytes de datos en un bloque ya no es potencia de dos.
2.- El acceso al azar es costoso, hay que leer todos los bloques anteriores antes de
localizar un dato.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

26

El esquema de asignacin que usa MS-DOS.


Es la idea de representar un archivo como una lista enlazada conservando los
apuntadores en memoria.
Con cada disco hay una tabla llamada tabla de asignacin de archivos (FAT)
Tiene una captacin por cada bloque del disco.
La captacin del directorio de cada archivo da el nmero de bloque del primero del
archivo.
Esa ranura en la FAT contiene el nmero de bloque del siguiente bloque.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

27

Nodos i (UNIX)
Por cada archivo de UNIX hay una tabla pequea (en el disco) llamada nodo i. Esta
contiene informacin contable y de proteccin.

2.3.- Clases de instalacin del Linux.


Red Hat Linux define tres clases diferentes de instalacin o tipos de instalacin :
Esas son :
Workstation
Server
Custom
Estas clases nos dan la opcin de simplificar el proceso de instalacin (con una
prdida en la flexibilidad de la configuracin), o retomando la flexibilidad total con un
proceso de instalacin un poco ms complejo.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

28

Solo la instalacin clase custom nos permite una flexibilidad total. La instalacin
clase workstation y clase server se instalan automticamente y pasan al proceso
de instalacin omitiendo ciertos pasos.
La clase de instalacin Workstation.
La clase de instalacin workstation es la ms apropiada para aquel que es nuevo en
el mundo de linux. Contestando unas cuantas preguntas, se puede tener corriendo el
Red Hat Linux en un momento dado.
Una instalacin clase workstation remueve cualquier particin de linux en todos los
discos duros instalados ( y usa todo el espacio libre sin particionar) para crear las
siguientes particiones :
Una particin de 64MB para swap.
Una particin de16MB (montada como /boot) en la cual el kernel del linux y los
archivos relacionados residen.
Una particin de tamao variable (el tamao exacto depende del espacio
disponible en disco) (montada como /) en la cual todos los demas archivos
residen.
Este esquema de particiones del disco resulta en la configuracin ms sencilla del
sistema de archivos.
Nota : Se necesitarn aproximadamente 600 Mb de espacio libre en disco
para hacer una instalacin clase workstation.
Si el sistema actualmente corre Windows, una instalacin clase workstation
automticamente configura el sistema a un arranque dual usuando LILO.
La instalacin clase Server.
Una instalacin clase server es la ms apropiada si se quiere que el sistema
funcione como un servidor basado en Linux, y no se quiere tener un trabajo pesado
en la configuracin del sistema.
Una instalacin clase server remueve todas las particiones existentes en todos los
discos duros instalados, tal que slo hay que hacer sta clase de instalacin si se
est seguro que toda la informacin que tienen los discos se puede borrar. Cuando la
instalacin se completa, se encontrarn las siguientes particiones :
Una particin de 64 Mb para swap .
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

29

Una particin de 16 Mb (montada como /boot) en la cual se mantienen el kernel


de linux y los archivos relacionados.
Una particin de 256 Mb (montada como /).
Una particin de al menos 512 Mb (montada como /usr).
Una particin de al menos 512MB (mountada como /home).
Una particin de 256 Mb (montada como /var).
Este esquema de particiones del disco resulta en una configuracin de sistema de
archivos flexible para la mayora de las tareas de un server.
Nota : Se necesitarn aproximadamente 1.6 Gb de espacio libre en disco
para hacer una instalacin clse server.
Nota : Una instalacin clase server remover culaquier particin existente de
cualquier tipo en todos los discos duros existentes del sistema. Todos los
discos sern borrados sin importar que las particiones que tenga sean de
Linux o no lo sean.
La instalacin clase Custom.
Una instalacin clase custom pone el nfasis en la flexibilidad durante una
instalacin. queda a decisin de quien instala como el espacio en disco debe ser
particionado. Se tiene control total de los paquetes que sern instalados en el
sistema. Tambin se puede determinar cuando se usar el LILO para arrancar el
sistema.
Para aquellos que ya tengan experiencia previa instalando Red Hat Linux, es el
mismo procedimiento que se haba usado en versiones anteriores de Red Hat Linux.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

30

2.4.- Instalacin del Linux.


Descripcin
Para instalar Linux primero es conveniente recoger la informacin sobre el hardware
disponible: controlador de disco duro, tarjeta de vdeo dispositivo de CD-ROM. . .
Ya que es posible que el proceso de instalacin necesite saber determinadas
caractersticas sobre el sistema en el que se va a instalar.

Preparacin del PC y componentes


Comenzamos una seccin dedicada a describir el hardware de la PC segn el punto
de vista de Linux. Este punto de vista est heredado de la filosofa Unix, en la que
todo son archivos, incluidos los dispositivos de hardware. Por lo tanto, Linux
virtualiza el acceso a los dispositivos por medio de archivos que suelen estar en el
directorio /dev.

Discos duros
Dentro del PC pueden haber normalmente hasta cuatro discos en total, cada disco
duro tiene un nombre en Linux en funcin de como se haya instalado. Si el disco duro
es IDE y est funcionando en el primer canal como maestro se llamar /dev/hda, y
si es esclavo /dev/hdb.
En caso de que estemos en el segundo canal IDE los nombres correspondientes
sern /dev/hdc y /dev/hdd.
Es posible confundirse con todo esto y que no se conozca como es el disco duro. En
ese caso hay que tener en cuenta que casi todas las computadoras vienen de fbrica
con un solo disco duro que siempre es el /dev/hda.
Un caso a notar son los lectores de cdrom, los lectores normalmente funcionan
conectados como un disco duro ms, aunque hay varias excepciones. Por lo que el
nombre ser igual que si fuese un disco duro, en la mayor parte de los sistemas
/dev/hdb.
Si tu disco es SCSI entonces el esquema de nombres es parecido, pasando a ser en
este caso /dev/sd0, /dev/sd1,. . .
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

31

Unidades de disco flexible


Las unidades de disco flexible en Linux se llaman /dev/fd0 y /dev/fd1,
correspondiendo cada nombre a las unidades A: y B: en DOS. Actualmente, las
computadoras nuevas con una nica unidad por lo que slo podremos utilizar
/dev/fd0.

Puertos de serie
Los dos dispositivos ms comunes que se conectan a los puertos de serie suelen ser
ratones y mdems. En Linux existe dos maneras de nombrar a los puertos serie, en
la primera se llama al com1 /dev/cua0 y al com2 /dev/cua1. La segunda
manera es /dev/ttyS0 y /dev/ttyS1. Si es posible, se prefiere utilizar la segunda
manera porque la primera est llamada a desaparecer.
Existe un problema con los puertos serie en el hardware de la PC y que puede
provocar problemas desconcertantes. Este problema es independiente del sistema
operativo y consiste en que no se puede utilizar a la vez /dev/ttyS0 y
/dev/ttyS2, ni tampoco /dev/ttyS1 y /dev/ttyS3 (com1, com3 y com2, com4
en DOS, respectivamente).
Por lo general aquellos que tengan un ratn conectado a un puerto de serie lo
tendrn en /dev/ttyS0. Si el ratn es tipo PS/2 entonces estar conectado en un
dispositivo especial llamado /dev/psaux.

Puertos Paralelos
El uso ms habitual para un puerto paralelo en la PC es el de conexin a la
impresora. El primer puerto paralelo, donde se suele conectar la impresora, se llama
bajo Linux /dev/lp1.

Tabla de dispositivos y sus nombres en Linux


Tipo de dispositivo
Unidad maestra primer canal IDE
Primera particin primaria
Segunda particin primaria
Tercera particin primaria
Cuarta particin primaria
Primera particin lgica
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

Nombre en Linux
/dev/hda
/dev/hda1
/dev/hda2
/dev/hda3
/dev/hda4
/dev/hda5
32

Segunda particin lgica


Unidad esclava primer canal IDE
Unidad maestra segundo canal IDE
Unidad esclava segundo canal IDE
Primer disco SCSI
Primera particin primaria
Segunda particin primaria
Segundo disco SCSI
Tercer disco SCSI
Primera unidad lectora de diskettes (A:)
Segunda unidad lectora de diskettes (B:)
Primer puerto serie (com1)
Segundo puerto serie (com2)
Tercer puerto serie (com3)
Cuarto puerto serie (com4)
Puerto para ratn tipo PS/2
Primer puerto paralelo
Segundo puerto paralelo

/dev/hda6
/dev/hdb
/dev/hdc
/dev/hdd
/dev/sda
/dev/sda1
/dev/sda2
/dev/sdb
/dev/sdc
/dev/fd0
/dev/fd1
/dev/ttyS0 o
/dev/cua0
/dev/ttyS1 o
/dev/cua1
/dev/ttyS2 o
/dev/cua2
/dev/ttyS3 o
/dev/cua3
/dev/psaux
/dev/lp1 (kernel
2.2.x /dev/lp0)
/dev/lp2 (kernel
2.2.x /dev/lp1)

Particiones
Los discos duros pueden ser divididos en compartimentos independientes entre s.
Estos compartimentos son llamados particiones y es el esquema que seguiremos
para repartir el disco duro entre DOS o Windows y Linux.
El nmero de particiones de un disco duro est limitado a cuatro, aunque una
particin primaria puede ser subparticionada por el sistema operativo que la use. La
informacin de como est particionado un disco duro es guardada al principio del
mismo, y es un estndar que siguen todos los sistemas operativos, adems cada
particin tiene un nmero que identifica de que tipo es. Suponiendo que tenemos
cuatro particiones primarias en /dev/hda, estas sern denominadas por Linux
/dev/hda1, /dev/hda2, /dev/hda3 y /dev/hda4. Las particiones lgicas que
crea DOS se denominarn a partir de /dev/hda5 en adelante.
Existe un primer sector en el disco duro que no pertenece a ninguna particin
llamado MBR 2 y contiene un pequeo programa de inicio que es el primero en
ejecutarse. El es el encargado de iniciar el sistema operativo, windows y DOS ponen
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
33

ah el suyo. Nosotros lo cambiaremos por el de Linux, que se llama LILO 3 , y que


nos permitir escoger el sistema operativo con el que deseamos arrancar.
Linux necesita al menos una particin primaria para poder funcionar. Aunque lo
mnimo aconsejable es tener dos particiones, una dedicada a Linux para su sistema
de archivos y otra de tamao menor dedicada a la memoria de intercambio
denominada swap. La memoria de intercambio nos permite funcionar con ms
memoria RAM de la que en realidad tenemos, por ejemplo es posible tener 8 Mbytes
de RAM y 20 de swap por lo que nuestro sistema parecer tener en realidad 28
Mbytes. Por supuesto el disco duro es mucho ms lento que la RAM, por lo que sigue
siendo bueno tener mucha RAM.
Linux es capaz de distribuir su sistema de archivos entre varias particiones, esto tiene
una clara ventaja, si una particin falla el resto de los datos correspondientes a otras
particiones sigue intacto.
Aunque una instalacin casera y por primera vez ser suficiente con tener todo el
sistema de archivos en una sola particin.

FIPS
Para poder crear las particiones de Linux es necesario quitar un trozo a la de
DOS/Windows. Esto normalmente significa destruir la particin actual y volver a crear
unas nuevas, perdiendo todos los datos que pudiese contener. Sin embargo existe un
programa que nos permite reparticionar sin perder los datos, este se llama FIPS, y es
una utilidad que suele venir en todas las distribuciones. En el cdrom de Red Hat
suele estar en el directorio D:\DOSUTILS.
Para utilizar FIPS debemos seguir una serie de pasos:

1. Copiar los datos importantes.


Reparticionar un disco es una operacin peligrosa en la que podemos perder todos
los datos, por ello es recomendable copiar todos los datos importantes antes de
hacer nada. De todas formas, aunque no se vaya a instalar Linux ni se vaya a
reparticionar el disco duro, copia es conveniente tener siempre una copia de
seguridad de los datos importantes, los problemas nunca avisan.

2. Leer la documentacin de FIPS.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

34

Es importante leer la documentacin de FIPS, existen muchos aspectos y detalles


correspondientes a particularidades del hardware que se deben tener en cuenta.

3. Defragmentar el disco duro.


Para poder dividir la particin eficientemente es necesario que todos los datos esten
al principio de la misma. Sino es posible que incluso no se pueda hacer. Para
defragmentar puedes usar la utilidad defrag.

4. Crear un disco de arranque.


Se debe crear un diskette de arranque del sistema operativo y copiar a l los archivos
FIPS.EXE, RESTORRB.EXE y ERRORS.TXT. Tambin se debe copiar FDISK.EXE,
si estas en DOS seguramente est en C:\DOS y si estas con Windows en
C:\WINDOWS\COMMAND. Para crear un diskette de arranque se puede utilizar la
orden FORMAT A: /s

5. Arrancar con el diskette.


Inserta el diskette en la unidad A: y enciende la computadora. La computadora
deber ejecutar el sistema operativo contenido en sta. A continuacin inicia FIPS.
Este mostrar diversa informacin y por ltimo te dar la opcin de dividir la particin
en DOS, ajustando el tamao con las teclas de los cursores, a la izquierda y la
derecha.
Un tamao orientativo para Linux puede ser de unos 800 Mbytes, aunque todo
depender del tamao lo que pienses instalar y del espacio libre de tu disco duro.
Una vez hayas terminado con FIPS este habr dividido la particin de DOS/Windows
en dos particiones. El espacio de la segunda particin es el que se dedicar a Linux.

6. Borrar la nueva particin.


Es necesario borrar la nueva particin creada para dejar su espacio disponible para
Linux. Esto lo haremos ejecutando FDISK y seleccionando la opcin 3 (Eliminar
particin o unidad lgica DOS) y posteriormente seleccionando la opcin 1 (Eliminar
particin primaria DOS). Cuidado con la particin que se vaya a eliminar, hay que
recordar que es la segunda particin. Ms adelante, durante la instalacin de Linux
utilizaremos este espacio disponible para crear las particiones que necesita Linux.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

35

Proceso de instalacin
Nuestro objetivo es instalar Linux en una computadora con una configuracin tpica
de fabrica. Esta es un solo disco duro IDE, con una sola particin primaria dedicada
totalmente a Windows o DOS. Una vez terminada la instalacin deberemos tener una
primera particin dedicada a Windows o DOS, una segunda particin dedicada al
espacio de intercambio para Linux y la ltima para contener todo el sistema de
archivos de Linux. Adems instalaremos en el MBR del disco duro el LILO de forma
que podremos escoger entre los dos sistemas operativos instalados a la hora de
arrancar.

Iniciando la instalacin
Para poder instalar Linux se ha de iniciar una versin especial del sistema operativo
que contiene el cdrom de la instalacin preparada para realizar todo el proceso. Si la
computadora es moderna seguramente pueda iniciar el sistema operativo
directamente desde el CD-ROM con tan solo dejar el disco en la unidad lectora y
reiniciando el ordenador, es posible que se tengan que cambiar algunos parmetros
de la BIOS para poder iniciar desde el CDROM. Si no quieres estar cambiando los
parmetros no te preocupes, simplemente acta como si tu computadora no tuviese
esta caracterstica.
En caso de no tener una computadora ultramoderna inicia la computadora en modo
MS-DOS. Si usas Windows no vale con una ventanita con MS-DOS, tienes que
salirte de Windows. Una vez que estas en modo MSDOS vete a la unidad de cdrom,
y en el directorio /DOSUTILS ejecuta el comando AUTOBOOT con esta orden se
iniciar Linux directamente desde el CD-ROM y comenzar la instalacin. Si por
alguna falla no se puede iniciar la instalacin queda la posibilidad de arrancar desde
diskette.
Para hacerlo introduce un diskette sin errores en la unidad y ve al directorio
/DOSUTILS del CD-ROM. Encontraras un programa llamado rawrite.exe si lo
ejecutalo de esta forma:
C:\DOSUTILS>rawrite -f ..\images\boot.img -d a:

Pasos a seguir
Una vez comenzada la instalacin es cuestin de seguir cada paso que nos indica la
computadora. La primera pantalla es una presentacin de Red Hat Linux, a
continuacin veremos que se nos pregunta por el lenguaje que deseamos usar
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

36

durante la presentacin. En la siguiente pantalla deberemos indicar cual es el tipo de


teclado que estamos usando, buscaremos es, correspondiente al teclado espaol.
Es posible instalar Linux desde diversas fuentes, como puede ser a travs de una
red, desde un disco duro o un CD-ROM. En este caso la instalacin se est haciendo
desde un CD-ROM por lo que se deber seleccionar como fuente de la instalacin el
CD-ROM. El proceso nos pedir que insertemos el CD-ROM, cosa que haremos si no
estuviese ya insertado.
El sistema de paquetes de Red Hat tiene la habilidad de poder actualizar una
instalacin de una versin anterior respetando en la medida de lo posible la
configuracin actual del sistema. Como deseamos crear una instalacin
completamente nueva se seleccionar install.
Red Hat nos da tres opciones para escoger los paquetes, que son:
Workstation
Server
Custom
Workstation configura una estacin de trabajo y Server un servidor. Custom es la
opcin recomendada en esta gua porque permite seleccionar los paquetes que
utilizaremos con Linux. Por lo tanto seleccionamos Custom.
La siguiente pregunta nos pedir que le indiquemos si existe algn dispositivo SCSI
en el sistema.

Creando las particiones para Linux


El siguiente paso en la instalacin consiste en particionar el disco, para ello se dan
dos opciones. Utilizar fdisk o utilizar Disk Druid. El primero de ellos es ms potente
pero tambien ms arduo de utilizar. Recomendamos utilizar Disk Druid por ser ms
sencillo.
En Disk Druid veremos una pantalla en donde la parte superior est dedicada a
informacin sobre las particiones y la inferior a presentar una serie de opciones. Nos
podremos mover entre y seleccionar opciones con el tabulador y las echas. Disk
Druid permite modificar particiones y establecer como ser el sistema de archivos, sin
embargo todos los cambios que se hagan no sern guardados hasta que le
seleccionemos OK. Si en cualquier momento descubrimos que hemos cometido un
error grave podremos recuperar el estado inicial presionando la opcin RESET. Una
vez que hayamos seleccionado OK y aceptado los cambios no existe posibilidad de
recuperar el estado inicial.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

37

Si se han seguido las instrucciones de esta gua existir una primera particin para
DOS/Windows y un espacio vacio a continuacin. Si este es el caso seleccionaremos
la opcin Add para anadir una nueva particin, Disk Druid nos presentar un men
en donde la primera pregunta es cual ser el punto de montaje (mount point), como
es una particin dedicada por completo a todo el sistema de archivos de Linux habr
que introducir el smbolo "/" que significa el directorio raz de Linux. En el
campo size (tamao) introduciremos el tamao que habiamos reservado para Linux
menos unos 30 Mbytes que guardaremos para la particin de swap. Por ltimo que
seleccionar el tipo de particin, que ser Linux Native.
Para la particin de intercambio volvemos a pulsar la opcin Add, en este caso no
introduciremos ningn punto de montaje. El tamao ser lo que queda de disco duro
y el tipo ser Linux swap. El tamao de 30 Mbytes para la particin de intercambio es
solamente orientativo, dependiendo del uso del sistema y de la memoria RAM que
tenga puede que se necesite ms o menos, algunas personas dicen que la particin
de intercambio debe de ser el doble de la memoria RAM. En cualquier caso no se
debe poner ms de 128 Mbytes a una particin intercambio porque es lo mximo que
admite Linux por particin. Si se necesita ms habr que crear ms particiones de
intercambio.
Es posible que Disk Druid te cree alguna de las particiones como extendidas y no
primarias. En este caso recuerda que se llamarn por ejemplo /dev/hda5 o
/dev/hda6. Con las dos particiones creadas podemos salir de Disk Druid,
seleccionaremos OK y nos preguntar si queremos salvar los cambios.
Contestaremos que S, si estamos de acuerdo con los cambios realizados.

Continuando la instalacin despus de haber creado las particiones.


Una vez creadas las particiones el proceso instalacin continuar y nos preguntar
cuales sern las particiones de swap. Aceptaremos las que nos indica porque sern
las que hayamos introducido con Disk Druid y seleccionaremos que las formatee
comprobando defectos ( Check for bad partitions). Veremos una barra que indica el
proceso de formateo de la particin de swap.
La siguiente pregunta es que particiones formatear, estas particiones sern las que
contengan el sistema de archivos de Linux. Nos presentar la unica particin que
hemos creado con Disk Druid, aceptaremos todo, incluido que compruebe defectos.
A continuacin veremos una lista de componentes a instalar, para alguien novato
puede presentar un problema porque no sabr lo que es la mayor a de las cosas.
Tranquilidad, los componentes bsicos necesarios para el funcionamiento de Linux
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

38

se instalan automticamente, lo que se puede seleccionar ahora son grupos de


programas relaccionados, recomendamos que aquello que no se sepa lo que es
que no se instale. Ya habr tiempo ms adelante de instalar y desinstalar cosas.
Existe una opcin de instarlo todo, es mejor no seleccionarla porque seguramente no
tengas suficiente disco duro.
Hay otra opcin que es seleccionar paquetes individualmente. Si escoges esta ltima
opcin podrs seleccionar los paquetes por grupos relaccionados. Una vez escogidos
los paquetes el proceso de instalacin nos informa que se guardar un informe con el
proceso de instalacin en /tmp/install.log. Aceptaremos la informacin sin
preocuparnos demasiado.
Si todo va bien veremos como se crean los sistema de archivos y a continuacin
como se empiezan a instalar los paquetes. La pantalla de instalacin indicar, entre
otras informaciones, el tiempo que ha transcurrido, el tiempo total estimado y el
tiempo restante estimado.
Una vez instalados todos los paquetes comenzar una configuracin bsica de Linux.
Lo primero que nos preguntar es por el tipo de ratn que utilizamos, elegir el
modelo. Si no se sabe con seguridad hay que probar con un Microsoft Compatible,
otras opciones comunes suelen ser Mouse Systems o Logitech. Existe una casilla
que pregunta si deseamos emular 3 botones, si el ratn slo tiene dos botones hay
que seleccionar la casilla. En Linux el botn central de los ratones es muy utilizado,
en los ratones de dos botones la emulacin se hace pulsando los botones de la
izquierda y de la derecha a la vez. Si el ratn seleccionado no es del tipo PS/2 se nos
preguntar por el puerto serie donde est instalado. Normalmente es el /dev/cua0,
aunque puede ser otro.
La siguiente configuracin es la de red, nos preguntar si la deseamos configurar una
LAN (Local Area Network, Red de Area Local). Seleccionaremos No, ya que el tema
de redes es algo complicado para alguien que empieza con Linux.
El proceso de instalacin nos preguntar ahora por la zona horaria donde est
situado nuestra computadora. La casilla que pregunta Hardware clocl set to GMT la
dejaremos sin seleccionar, y buscaremos en la lista siguiente Mxico/Central.
Ahora toca decirle a Linux cuales son los servicios que se ejecutarn en el arranque.
recomendamos dejarlos todos seleccionados.

Configuracin de la impresora bajo Linux


Si se ha seleccionado los paquetes de impresin de Red Hat, la instalacin
proceder a configurarla. A la pregunta de si deseamos configurar la impresora
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

39

responderemos que s. Linux puede utilizar impresoras conectadas a la computadora


que estamos utilizando o impresoras remotas en otras computadoras, veremos una
pantalla para seleccionar entre estas opciones. Escogeremos una impresora
local.
Posiblemente la pantalla que veremos a continuacin sobre la configuracin de la
impresora puede resultar algo confusa. En ella se pregunta por el nombre de la
impresora (Name of queue) y el directorio donde se guardarn los trabajos de
impresin mientras esperan a ser impresos (Spool directory). Aceptaremos los
valores propuestos como buenos.
Siguiendo la instalacin de la impresora se nos preguntar por el dispositivo donde
est conectada.
Si no se est seguro de la respuesta hay que revisar la descripcin del hardware de
la PC, bajo el punto de vista de Linux. Normalmente la respuesta es /dev/lp1.
La instalacin presentar una lista de impresoras, hay que seleccionar la que se tiene
o la que ms se parezca al modelo.
Una vez seleccionado el modelo de impresora, habr que configurar el tipo de papel
y la resolucin de la misma. La resolucin hay que poner la que sea ms
conveniente, por ejemplo 300x300. Podemos ver una casilla que pregunta si
deseamos que se repare el efecto escalera (Fix stair-stepping of text). El efecto
escalera es un problema que se producen con ciertas impresoras preparadas para
trabajar con DOS, el efecto consiste en que cada nueva lnea que se imprime bajo
Linux en una impresora empieza justo debajo de donde termin la anterior. Saber a
priori si la impresora que se va a utilizar producir el efecto escalera es complicado,
la lectura del manual de la impresora puede ayudar, pero la prueba de la verdad no
se sabr hasta que se imprima por primera vez bajo Linux. Selecciona o no la opcin
segn creas conveniente, si se descubre que no est correcto ms adelante se podr
volver a cambiar la configuracin. Como ayuda podemos indicar que si usas una HP
seguramente si sufra el efecto escalera.
Una vez configurada la impresora se nos presentar una pantalla de confirmacin de
la configuracin. Si se est conforme con esta configuracin pulsa en OK.

Establecer el password de root


A continuacin hay que introducir una clave (password) para el usuario root. Hay que
Introducir una clave dos veces, la segunda es de confirmacin. Es muy importante no
olvidatse de la clave, si lo haces en teoraa no se podr recuperar (en la prctica
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

40

existen varios "trucos" :-) ). Ms adelante se discutir sobre lo que es el root, las
claves y los usuarios.
Es recomendable crear un disco de arranque para situaciones de emergencia en las
que no nos sea posible iniciar Linux por mtodos normales". El proceso de
instalacin nos dar ahora la posibilidad de crear un disco de arranque, es
recomendable hacerlo.

Post-instalacin
La instalacin preguntar donde se desea poner el LILO, para ponerlo en el MBR
seleccionar /dev/hda. No se debe seleccionar /dev/hda1 porque seguramente
destruir el sistema de archivos de Windows/DOS. La ltima pregunta es si
deseamos introducir algn parmetro al LILO en el arranque, deja esta opcin en
blanco.
Y por fn hemos llegado al final, se nos informar que hemos terminado la
configuracin de Linux, y que esta est completa. La siguiente vez que reiniciemos la
computadora arrancara Linux.

Usuarios
La primera vez que arranque Linux despus de la instalacin nos mostrar una lnea
como sta:
localhost login:
A esta lnea se le denomina comunmente el login de Linux y en ella se pide al usuario
sentado delante del terminal que se identifique, lo primero que se introduce en este
caso es un nombre de usuario que sea vlido en el sistema. La primera vez el nico
nombre existente en el sistema ser root, con lo que estamos obligados a introducir
ese nombre. A continuacin el sistema mostrar lo siguiente:
localhost login: root
Password:
Con lo que el sistema invita al usuario a que introduzca la clave que tiene asignada el
usuario. En caso del root ser la que durante la que pidi el proceso de instalacin de
Linux. Mientras se teclea la clave se puede observar que las pulsaciones no son
mostradas en pantalla, esto es para evitar que alguien que est observando la
pantalla pueda ver una clave ajena.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

41

Una vez ha concluido este proceso estaremos identificados para el sistema operativo.
En este momento Linux aceptar ordenes escritas (poco a poco iremos viendo qu
rdenes acepta Linux) y responder en funcin de quin sea el usuario del terminal.
En Linux existe un usuario especial que se distingue de los dems usuarios en los
poderes que tiene sobre el sistema. Este usuario es normalmente conocido como
root y no tiene ninguna restriccin sobre el sistema. Cuando se instala Linux por
primera vez la nica cuenta que existe en el sistema es la del root, debido al poder de
este usuario es peligroso utilizarlo habitualmente para tareas cotidianas que no
necesiten los privilegios de root, esta cuenta se debe dejar para las tareas de
administracin y mantenimiento del sistema.
Para el trabajo cotidiano hay que crearse una cuenta personal sin privilegios que nos
proteja a nosotros mismos de cometer errores. Con el comando adduser miguel
crearemos una cuenta para el usuario miguel, el siguiente paso es establecer la clave
que usara Miguel, esto se hace con passwd miguel. Cuando establezcamos la
clave el sistema preguntar cual es la que se quiere poner, habr que introducir dos
veces a ciegas la clave.
La sintaxis completa del comando adduser es:
# adduser -u uid -g gid -c nombre -d home -s shell cuenta
donde: uid es el nmero de usuario, gid el nmero de grupo, nombre el nombre del
usuario (normalmente, nombre y apellidos), home el directorio principal del usuario,
shell el intrprete de comandos y cuenta es el nombre que pondremos como login. El
usuario root tiene como uid=0 y gid=0.
Para terminar una sesin se deber escribir la orden exit, con lo que volveremos al
login, hay que hacer notar que terminar una sesin no quiere decir apagar la
computadora ni que Linux deja de funcionar. Simplemente consiste en que un usuario
ha abandonado la terminal y lo deja libre para otro usuario, que puede ser el mismo
pero con otro nombre.
Ahora que ya est creado el usuario miguel, es posible realizar el proceso de
identificacin con otro usuario distinto de root. Con lo que ya no es obligatorio trabajar
con root.

Reinicializacin del sistema


Una de las caracterstica de Linux es que utiliza la memoria RAM del ordenador para
guardar aquellas zonas del disco duro que son utilizadas ms frecuentemente. Esta
tcnica permite acelerar los acceso a archivos, ya que los datos leidos una vez del
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

42

disco duro son tomados directamente de la memoria en las siguientes lecturas. A su


vez las escrituras en archivos no son realizadas directamente sino que son
guardadas en memoria y se llevan a cabo cuando el sistema esta poco ocupado.
Por ello no es recomendable apagar una computadora corriendo Linux sin antes
advertir al sistema de alguna forma que se prepare para ser parado. Si se le advierte
antes el sistema descargar la informacin que tenga en memoria salvandola en el
disco duro, adems mandar una seal de terminacin a los procesos que se
encuentren ejecutandose en ese momento para que finalicen.
Para informar a Linux que se desea parar el sistema y apagar la computadora se
utiliza la orden halt, el sistema entonces realizar diversas funciones preparandose
para la parada de la mquina.
Slo cuando el sistema indique en la pantalla:
The system is halted
System halted
Se podr apagar la computadora.
Es posible que se desee reiniciar la computadora en lugar de apagarla, entonces la
orden shutdown -r now parar el sistema y despus reiniciar la computadora. Un
atajo a esta orden es pulsar las teclas CRTL-ALT-SUP a la vez, tendr el mismo
efecto.
Este es el proceso que se debe seguir siempre para apagar la computadora cuando
est funcionando con Linux. Es posible, sin embargo, que sea imposible apagar Linux
adecuadamente, como por ejemplo por un corte de luz en medio de una sesin con
Linux. Linux es capaz de resistirlo y comprobar automticamente la integridad del
sistema de archivos la prxima vez que se inicia, pero es posible que se pierdan
alguno de los datos que nunca llegaron a escribirse en disco.

LILO
Una vez instalado Linux este ser el sistema operativo que se inicie por defecto. Para
escoger otro sistema operativo habr que escribir el nombre que se le puso a la
particin cuando veamos el prompt de LILO y pulsar ENTER.
LILO boot: dos
Si LILO inicia tan rpido el sistema operativo que tenga por defecto que no da tiempo
de escribir nada, o cuando se escribe no aparece nada en pantalla hay que pulsar la
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
43

tecla shift (la tecla de las maysculas). En caso de que se haya olvidado que nombre
le pusieron a los sistemas operativos instalados se puede pulsar el tabulador y LILO
mostrar una lista.
Muchas veces la computadora es compartida por varias personas que no quieren
saber nada de LILO ni de Linux y lo unico que quieren es que se inicie su sistema
operativo sin problemas. Para ello se puede configurar LILO para que inicie un
sistema operativo por defecto, esto se hace entrando en el sistema como root y
escribiendo la orden :
# lilo -D dos -d 50
Con lo que configuramos DOS como sistema operativo por defecto y que cargue este
a los 5 segundos de no pulsar ninguna tecla. Suponiendo claro, que se haya definido
as el nombre de la particin.

Establecer el nombre de la computadora


El sistema Linux recientemente instalado tiene como nombre localhost, si se desea
personalizar el nombre de la computadora utiliza el comando hostname como root.
Si por ejemplo quieres llamar a la computadora sulaco, se puede hacer con el
comando :
# hostname sulaco

Si se ha configurado una red (al instalar Linux), no se tendr localhost si no el


nombre que se le hubiese puesto en la configuracin.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

44

3.- Linux bsico


3.1- Navegando por el sistema de archivos.
3.1.1- La estructura de archivos de Linux.
Explorando el Sistema de Archivos
El sistema de archivos es la coleccin de archivos y la jerarqua de directorios de su
sistema.
Primero cambie al directorio raz (cd /) y ejecute ls -F. Probablemente vera
estos directorios:
bin, dev, etc, home, install, lib, mnt, proc, root, tmp, user,
usr, y var.
Echemos un vistazo a cada uno de estos directorios.
/bin : /bin es la abreviacin de "binaries", o ejecutables. Es donde residen la
mayora de los programas esenciales del sistema. Use la orden "ls -F /bin"
para listar los archivos. Podr ver algunas ordenes que reconocer, como cp, ls y
mv. Estos son los programas para estas ordenes. Cuando usa la orden cp esta
ejecutando el programa /bin/cp. Usando ls -F vera que la mayora (si no todos)
los archivos de /bin tienen un asterisco ("*") aadido al final de sus nombres. Esto
indica que son archivos ejecutables.
/dev : El siguiente es /dev. Echmosle un vistazo de nuevo con ls -F. Los
"aexhivos" en /dev son conocidos como controladores de dispositivo (device drivers)
son usados para acceder a los dispositivos del sistema y recursos, como discos
duros, modems, memoria, etc. Por ejemplo, de la misma forma que puede leer datos
de un archivo, puede leerla desde la entrada del ratn leyendo /dev/mouse. Los
archivos que comienzan su nombre con fd son controladores de disco flexible. fd0
es la primera unidad de disco flexible, fd1 la segunda. Ahora, alguien astuto se dar
cuenta de que hay mas controladores de dispositivo para unidades de disco flexible
de los que hemos mencionado. Estos representan tipos especficos de discos. Por
ejemplo, fd1H1440 acceder a discos de 3.5" de alta densidad en la unidad de
disco 1. Aqu tenemos una lista de algunos de los controladores de dispositivo mas
usados.
Ntese que incluso aunque puede que no tenga alguno de los dispositivos listados,
tendr entradas en dev de cualquier forma.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

45

/dev/console : hace referencia a la consola del sistema es decir, al monitor


conectado directamente a su sistema.
Los dispositivos /dev/ttyS y /dev/cua son usados para acceder a los puertos
serie. Por ejemplo, /dev/ttyS0 hace referencia a "COM1" bajo MS-DOS. Los
dispositivos /dev/cua son "callout", los cuales son usados en conjuncin con un
mdem.
Los nombres de dispositivo que comienzan por hd acceden a discos duros.
/dev/hda hace referencia a la totalidad del primer disco duro, mientras que
/dev/hda1 hace referencia a la primera particin en /dev/hda.
Los nombres de dispositivo que comienzan con sd son dispositivos SCSI. Si tiene un
disco duro SCSI, en lugar de acceder a el mediante /dev/hda, deber acceder a
/dev/sda. Las cintas SCSI son accedidas va dispositivos st y los CD-ROM SCSI
va sr.
Los nombres que comienzan por lp acceden a los puertos paralelo. /dev/lp0 hace
referencia a "LPT1" en el mundo MS-DOS.
/dev/null : es usado como "agujero negro" cualquier dato enviado a este
dispositivo desaparece.
>Para que puede ser til esto?. Bien, si desea suprimir la salida por pantalla de una
orden, podra enviar la salida a /dev/null. Hablaremos mas sobre esto despus.
Los nombres que comienzan por /dev/tty hacen referencia a "consolas virtuales"
de su sistema (accesibles mediante las teclas <alt-F1>,<alt-F2>, etc). /dev/tty1
hace referencia a la primera VC, /dev/tty2 a la segunda, etc.
Los nombres de dispositivo que comienzan con /dev/pty son "pseudo-terminales".
Estos son usados para proporcionar una "terminal" a sesiones remotas. Por ejemplo,
si su maquina esta en una red, telnet de entrada usara uno de los dispositivos
/dev/pty.
/etc : /etc contiene una serie de archivos de configuracin del sistema. Estos
incluyen /etc/passwd (la base de datos de usuarios), /etc/rc (scripts de
inicializacin del sistema), etc.
/sbin : /sbin se usa para almacenar programas esenciales del sistema, que
usara el administrador del sistema.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

46

/home : /home contiene los directorios "home" de los usuarios. Por ejemplo,
/home/larry es el directorio del usuario "larry". En un sistema recin instalado, no
habr ningn usuario en este directorio.
/lib : /lib contiene las imgenes de las libreras compartidas. Estos archivos
contienen cdigo que compartirn muchos programas. En lugar de que cada
programa contenga una copia propia de las rutinas compartidas, estas son
guardadas en un lugar comn, en /lib. Esto hace que los programas ejecutables
sean menores y reduce el espacio usado en disco.
/proc : /proc es un "sistema de archivos virtual". Los archivos que contiene
realmente residen en memoria, no en un disco. Hacen referencia a varios procesos
que corren en el sistema, y le permiten obtener informacin acerca de que programas
y procesos estn corriendo en un momento dado.
/tmp : Muchos programas tienen la necesidad de generar cierta informacin
temporal y guardarla en un archivo temporal. El lugar habitual para esos archivos es
en /tmp.
/usr : /usr es un directorio muy importante. Contiene una serie de subdirectorios
que contienen a su vez algunos de los mas importantes y tiles programas y archivos
de configuracin usados en el sistema.
Los directorios descritos arriba son esenciales para que el sistema este operativo,
pero la mayora de las cosas que se encuentran en /usr son opcionales para el
sistema. De cualquier forma, son estas cosas opcionales las que hacen que el
sistema sea til e interesante. Sin /usr, tendra un sistema aburrido, solo con
programas como cp y ls. usr contiene la mayora de los paquetes grandes de
programas y sus archivos de configuracin.
/usr/X386 : /usr/X386 contiene el sistema X Windows si usted lo instala. El
sistema X Windows es un entorno grfico grande y potente el cual proporciona un
gran numero de utilidades y programas grficos, mostrados en "ventanas" en su
pantalla. Si esta familiarizado con los entornos Microsoft Windows o Macintosh, X
Window le ser muy familiar. El directorio /usr/X386 contiene todos los ejecutables
de X Window, archivos de configuracin y de soporte.
/usr/bin : /usr/bin es el almacn real de programas del sistema UNIX.
Contiene la mayora de los programas que no se encuentran en otras partes como
/bin.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

47

/usr/etc : Como /etc contiene diferentes archivos de configuracin y


programas del sistema, /usr/etc contiene incluso mas que el anterior. En general,
los archivos que se encuentran en /usr/etc/ no son esenciales para el sistema, a
diferencia de los que se encuentran en /etc, que si lo son.
/usr/include : /usr/include contiene los archivos de cabecera para el
compilador de C. Estos archivos (la mayora de los cuales terminan en .h, de
"header") declaran estructuras de datos, sub-rutinas y constantes usados en la
escritura de programas en C. Los archivos que se encuentran en
/usr/include/sys son generalmente usados en la programacin de UNIX a nivel
de sistema. Si esta familiarizado con el lenguaje de programacin C, aqu encontrar
los archivos de cabecera como stdio.h, el cual declara funciones como printf().
/usr/g++-include : /usr/g++-include contiene archivos de cabecera para
el compilador de C++ (muy parecido a /usr/include).
/usr/lib : /usr/lib contiene las libreras equivalentes "stub" y "static" a los
archivos encontrados en /lib. Al compilar un programa, este es "enlazado" con las
libreras que se encuentran en /usr/lib, las cuales dirigen al programa a buscar
en /lib cuando necesita el cdigo de la librera. Adems, varios programas guardan
archivos de configuracin en /usr/lib.
/usr/local : /usr/local es muy parecido a /usr contiene programas y
archivos no esenciales para el sistema, pero que hacen el sistema mas divertido y
excitante. En general, los programas que se encuentran en /usr/local son
especficos de su sistema esto es, el directorio /usr/local difiere bastante entre
sistemas UNIX. Aqu encontrara programas grandes como TEX (sistema de formateo
de documentos) y Emacs (gran y potente editor), si los instala.
/usr/man : Este directorio contiene las pginas de manual. Hay dos subdirectorios
para cada pgina "seccin" de las pginas (use la orden man man para mas
detalles). Por ejemplo, /usr/man/man1 contiene los fuentes (es decir, los originales
por formatear) de las pginas de manual de la seccin 1, y /usr/man/cat1 las
paginas ya formateadas de la seccin 1.
/usr/src : /usr/src contiene el cdigo fuente (programas por compilar) de
varios programas de su sistema. El ms importante es /usr/src/Linux, el cual
contiene el cdigo fuente del Ncleo de Linux.
/var : /var contiene directorios que a menudo cambian su tamao o tienden a
crecer. Muchos de estos directorios solan residir en /usr, pero desde que estamos
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

48

tratando de dejarlo relativamente inalterable, los directorios que cambian a menudo


han sido llevados a /var. Algunos de estos directorios son:
/var/adm : /var/adm contiene varios archivos de inters para el administrador
del sistema, especficamente histricos del sistema, los cuales recogen errores o
problemas con el sistema. Otros archivos guardan las sesiones de presentacin en el
sistema, as como los intentos fallidos.
/var/spool : /var/spool contiene archivos que van a ser pasados a otro
programa. Por ejemplo, si su maquina est conectada a una red, el correo de llegada
ser almacenado en /var/spool/Mail hasta que lo lea o lo borre. Artculos
nuevos de las news" tanto salientes como entrantes pueden encontrarse en
/var/spool/news, etc.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

49

3.1.2- Comandos bsicos.


Desplegando el directorio actual.
El directorio en el cual se est trabajando actualmente, se refiere al directorio actual.
Formato del comando :
pwd
Cmo desplegar el directorio actual?
$ pwd
/home/jluis

Cambiando de directorio.
Formato del comando :
cd nombre_del_directorio
1.- Cambiando de directorios usando el nombre de ruta relativo.
$ cd encoder
entra al directorio llamado encoder que est debajo del directorio actual.

2.- Cambiando de directorios usando el nombre de ruta absoluto :


$ cd /etc/mail
$ cd /usr

3.- Usar el comando cd sin parmetros para cambiar al directorio home del usuario.
$ cd

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

50

Abreviaciones para el nombre de ruta.


Smbolo
.
..
~

Significado
Directorio actual
Directorio padre
Ruta absoluta al directorio home (solo
disponible en algunos shells)

Usando las abreviaciones de nombres de ruta con el comando cd para moverse en la


estructura de directorios.
$ pwd
/usr/local/man/man1
$ cd ..
$ pwd
/usr/local/man
$ cd ../..
$ pwd
/usr
$ cd ~
$ pwd
/home/jluis

Desplegando directorios.
Formato del comando :
ls [opciones] [ruta]
Listando directorios y archivos.
$ pwd
/home/jluis
$ ls /usr/etc
im_palette.pal imrc
$ ls /usr/games
banner

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

51

Desplegando archivos ocultos.


Todos los nombres de archivos que comienzan con punto son archivos ocultos.
Usar ls a para desplegar los archivos ocultos.
$ ls -a
.
..
.AfterStep-errors
.FVWM2-errors
.Xauthority
.addressbook
.addressbook.lu
.bash_history

.bash_profile
.ncftp
.netscape
.newsrc-news
.pine-debug1
.pinerc
.sversionrc
.user.rdb

.wm_style
.x11amp
.xsession-errors
GNUstep
Office50
Xrootenv.0
amp-gepi
encoder

freeamp
mail
mp3
new.xinitrc
ns_imap
nsmail
outside.gz
x11amp

Desplegando tipos de archivos.


Usar el comando ls F para desplegar los tipos de archivos. Los tipos de archivos
son desplegados con los siguientes smbolos.
$ cd
$ ls -F
GNUstep/
Office50/
Xrootenv.0

a.out*
amp-gepi/
encoder/

freeamp/
hola.c
mail/

mp3/
new.xinitrc
ns_imap/

nsmail/
outside.gz
x11amp/

El F despliega los siguientes smbolos :


Tipo de archivo
Directorio
Ejecutable
Liga simblica
Cualquier otro

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

Smbolo
/
*
@
(nada)

52

Desplegando una lista extendida.


Usar el comando ls l para desplegar una lista de archivos en el directorio actual
en el formato largo.
$ ls -l
total 4395
drwxr-xr-x
drwxr-xr-x
-rw-r--r--rwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
-rw-r--r-drwx-----drwxr-xr-x
-rw-r--r--

Tipo de
archivo y
permisos
- archivo
d
directorio
l liga
simblica

3
21
1
1
3
3
3
1
2
2
1

jluis
jluis
jluis
jluis
jluis
jluis
jluis
jluis
jluis
jluis
jluis

users
users
users
users
users
users
users
users
users
users
users

1024
1024
396
4148
1024
1024
1024
60
1024
1024
137

Jan 6 10:13 GNUstep


Jan 4 09:21 Office50
Jan 15 10:23 Xrootenv.0
Jan 27 10:17 a.out
Jan 5 13:14 amp-gepi
Jan 6 10:12 encoder
Jan 5 12:30 freeamp
Jan 27 10:17 hola.c
Jan 4 10:53 mail
Jan 5 13:19 mp3
Jan 4 11:20 new.xinitrc

Con Dueo Grupo dueo Tamao Fecha y hora


Nombre del
de modificacin archivo.
tado
r de
liga
s

Listando directorios individuales.


Usar el comando ls ld para desplegar informacin detallada acerca de un
directorio pero no su contenido.
$ ls -l freeamp
total 785
drwxr-xr-x
9 jluis
-rw-r--r-1 jluis

users
users

1024 Jan
797987 Jan

$ ls -ld freeamp
drwxr-xr-x
3 jluis

users

1024 Jan

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

5 13:23 freeamp-1.1.0
5 12:28 freeamp-1.1.0.tar.gz
5 12:30 freeamp

53

Listando subdirectorios.
Usar el comando ls R para desplegar los contenidos de un directorio y todos sus
subdirectorios.
$ ls -F
Makefile.am
Makefile.in

localfileinput.cpp
localfileinput.h

win32/

$ ls -RF
Makefile.am
Makefile.in

localfileinput.cpp
localfileinput.h

win32/

win32:
prj/
win32/prj:
fileinput.def

fileinput.dsp

fileinput.dsw

fileinput.mak

Comodines.
Asterisco (*)
El asterisco representa cero o ms caracteres. El asterisco seguido se le nombra
como el un carcter comodn.
El asterisco puede ser usado donde se usa un nombre de archivo o directorio.
$ ls
GNUstep
Office50
Xrootenv.0

a.out
amp-gepi
encoder

freeamp
hola.c
mail

mp3
new.xinitrc
ns_imap

nsmail
outside.gz
x11amp

$ ls n*
new.xinitrc
ns_imap:
iteso.mx
nsmail:
Drafts
Inbox

pop
Sent
Trash

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

Unsent Messages

54

El asterisco puede remplazar nombres para directorios.


$ ls -F
GNUstep/
Office50/
Xrootenv.0

a.out*
amp-gepi/
encoder/

freeamp/
hola.c
mail/

mp3/
new.xinitrc
ns_imap/

nsmail/
outside.gz
x11amp/

$ ls e*
BladeEnc072-i386-linux

BladeEnc072-i386-linux.tar.gz

$ ls encoder
BladeEnc072-i386-linux

BladeEnc072-i386-linux.tar.gz

Comodines
Signo de interrogacin (?)
El signo de interrogacin es un comodn que coincide con cualquier carcter.
$ ls
GNUstep
Office50
Xrootenv.0

a.out
amp-gepi
encoder

freeamp
hola.c
mail

mp3
new.xinitrc
ns_imap

nsmail
outside.gz
x11amp

$ ls ?.out
a.out
$ ls ?
ls: No match.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

55

Creando directorios.
Formato del comando
mkdir nombre_directorio [nombre_directorio ...]
$ mkdir hola
$ cd hola
$ mkdir reportes
$ ls -dl reportes
drwxr-xr-x
2 jluis
users
$ mkdir reportes/semanales
$ ls -l reportes
total 1
drwxr-xr-x
2 jluis
users
semanales
$ mkdir uno dos tres
$ ls -F
dos/
reportes/ tres/

1024 Jan 27 12:07 reportes

1024 Jan 27 12:08

uno/

Borrando directorios.
Formato del comando.
rmdir directorio
rm r directorio
Borrando un directorio vaco.
$ rmdir dos
$ ls -F
reportes/ tres/

uno/

Borrando un directorio que no est vaco.


$rm -r reportes
$ls -F
tres/ uno/

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

56

Borrando archivos y directorios en forma intercativa


$ rm -ir hola
rm: descend directory `hola'? y
rm: descend directory `hola/uno'? y
rm: remove directory `hola/uno'? n
rm: descend directory `hola/tres'? y
rm: remove directory `hola/tres'? y
rm: remove directory `hola' (might be nonempty)? y
rm: hola: Directory not empty

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

57

3.2- Comandos para archivos.


3.2.1.- Desplegando archivos.
Formato del comando
cat nombre_archivo

Deplegar en pantalla el contenido del archivo /etc/passwd


$ cat /etc/passwd
root:k8KSZnL1xnmCY:0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
adm:*:3:4:adm:/var/adm:
mail:*:8:12:mail:/var/spool/mail:
news:*:9:13:news:/var/spool/news:
operator:*:11:0:operator:/root:
games:*:12:100:games:/usr/games:
gopher:*:13:30:gopher:/usr/lib/gopher-data:
ftp:*:14:50:FTP User:/home/ftp:
nobody:*:99:99:Nobody:/:
postgres:!!:100:233:PostgreSQL Server:/var/lib/pgsql:/bin/bash
jluis:LRo9u120e6q.U:101:100:Jose Luis Elvira
Valenzuela:/home/jluis:/bin/tcsh
luis:mx3g7R2rNK7.Y:102:100:Luis Eduardo Perez
Bernal:/home/luis:/bin/tcsh

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

58

Usando el comando more


Para desplegar el contenido de un archivo hasta que se llena una pantalla, al llenarse
esperar a que el usuario presione el teclado para continuar.
Formato
more archivo
Al aparecer la indicacin -More- al final de la pantalla, se pueden usar cualquiera
de las siguientes teclas de control.
Teclas de control.
Espacio
Enter
f
h
Q
/cadena

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

Propsito.
Pasar a la siguiente pantalla.
Pasar a la siguiente lnea.
Saltar una pantalla hacia delante.
Para desplegar el men de ayuda del
comando more.
Para salir y regresar al prompt
Para buscar una cadena hacia adelante.

59

Accesando los manuales en lnea.


Formato del comando
man comando
$ man more
MORE(1)

UNIX Reference Manual

MORE(1)

NAME
more - file perusal filter for crt viewing
SYNOPSIS
more [-dlfpcsu] [-num] [+/ pattern] [+ linenum] [file ...]
DESCRIPTION
More is a filter for paging through text one screenful at a time. This
version is especially primitve. Users should realize that less(1) provides more(1) emulation and extensive enhancements.
OPTIONS
Command line options are described below. Options are also taken from
the environment variable MORE (make sure to precede them with a dash
(``-'')) but command line options will override them.
-num

This option specifies an integer which is the screen size (in


lines).

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

60

Usando el comando head


Para desplegar las primeras n lneas de un archivo. Las primeras 10 es el default si
no se le indica cuantas.
Formato :
head [-n] archivo(s)
$ head -5 /etc/passwd
root:k8KSZnL1xnmCY:0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
adm:*:3:4:adm:/var/adm:
lp:*:4:7:lp:/var/spool/lpd:
Usando el comando tail
Para desplegar las ltimas n lneas de un archivo. Las ltimas 10 es el default si no
se le indica cuantas.
Formato :
tail [-n] archivo(s)
$ tail -4 /etc/passwd
nobody:*:99:99:Nobody:/:
postgres:!!:100:233:PostgreSQL Server:/var/lib/pgsql:/bin/bash
jluis:LRo9u120e6q.U:101:100:Jose Luis Elvira
Valenzuela:/home/jluis:/bin/tcsh
luis:mx3g7R2rNK7.Y:102:100:Luis Eduardo Perez
Bernal:/home/luis:/bin/tcsh

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

61

El comando touch.
Para crear nuevos archivos vacos.
Formato :
touch nombre(s)
$ touch a b c
$ ls -F
a

uno/

3.2.2.- Manejo de archivos.


Copia de archivos
La copia de archivos es efectuada por la orden cp:
Formato del comando :
cp [-opciones] fuente destino
Como copiar archivos.
/home/larry/foo# cp /etc/termcap .
/home/larry/foo# cp /etc/shells .
/home/larry/foo# ls -F
shells
termcap
/home/larry/foo# cp shells bells
/home/larry/foo# ls -F
bells
shells
termcap
/home/larry/foo#
La orden cp copia los archivos listados en la lnea de comandos al archivo o
directorio pasado como ltimo argumento. Ntese como se usa el directorio "." para
referirnos al directorio actual.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

62

Moviendo archivos
La orden mv mueve archivos en lugar de copiarlos. La sintaxis es muy sencilla.
Formato :
mv [-opciones] fuente destino
Como mover o renombrar archivos.
/home/larry/foo# mv termcap sells
/home/larry/foo# ls -F
bells
sells
shells
/home/larry/foo#

Ntese como termcap ya no existe, en su lugar esta el archivo sells. Esta orden
puede usarse para renombrar archivos, como acabamos de hacer, pero tambin para
mover archivos a directorios diferentes.
Nota: mv y cp sobreescribirn los archivos destino (si ya existen) sin consultar. Sea
cuidadoso cuando mueva un archivo a otro directorio: puede haber ya un archivo con
el mismo nombre que ser sobrescrito.

Borrando archivos y directorios


Para borrar un archivo, use la orden rm. ("rm" viene de "remove").
Formato :
rm [-opciones] nombre del archivo
rm i nombre del archivo
rm r nombre del directorio
/home/larry/foo# rm bells sells
/home/larry/foo# ls -F
shells
/home/larry/foo#
Nos hemos quedado solo con el archivo "shells", pero no nos quejaremos. Ntese
que rm por defecto no preguntara antes de borrar un archivo luego, sea cuidadoso.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

63

Una orden relacionada con rm es rmdir. Esta orden borra un directorio, pero solo si
esta vaco. Si el directorio contiene archivos o subdirectorios, rmdir se quejara.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

64

3.3.- Seguridad en los archivos.


3.3.1.- Permisos.
Conceptos de permisos de archivos
Al ser UNIX un sistema multiusuario, para proteger archivos de usuarios particulares
de la manipulacin por parte de otros, UNIX proporciona un mecanismo conocido
como permisos de archivos. Este mecanismo permite que archivos y directorios
"pertenezcan" a un usuario en particular. Por ejemplo, como Larry creo archivos en
su directorio "home", Larry es el propietario de esos archivos y tiene acceso a ellos.
UNIX tambin permite que los archivos sean compartidos entre usuarios y grupos de
usuarios. Si Larry lo desea, podra restringir el acceso a sus archivos de forma que
ningn otro usuario tenga acceso. De cualquier modo, en la mayora de los sistemas
por defecto se permite que otros usuarios puedan leer tus archivos pero no
modificarlos o borrarlos.
Como hemos explicado arriba, cada archivo pertenece a un usuario en particular. Por
otra parte, los archivos tambin pertenecen a un grupo en particular, que es un
conjunto de usuarios definido por el sistema. Cada usuario pertenece al menos a un
grupo cuando es creado. El administrador del sistema puede hacer que un usuario
tenga acceso a mas de un grupo.
Los grupos usualmente son definidos por el tipo de usuarios que acceden a la
maquina. Por ejemplo, en un sistema UNIX de una universidad, los usuarios pueden
ser divididos en los grupos estudiantes, direccin, profesores e invitados. Hay
tambin unos pocos grupos definidos por el sistema (como bin y admin) los cuales
son usados por el propio sistema para controlar el acceso a los recursos muy
raramente los usuarios normales pertenecen a estos grupos.
Los permisos estn divididos en tres tipos:
Lectura.
Escritura
Ejecucin.
Estos permisos pueden ser fijados para tres clases de usuarios:
El propietario del archivo.
El grupo al que pertenece el archivo.
Para todos los usuarios independientemente del grupo.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

65

El permiso de lectura permite a un usuario leer el contenido del archivo o en el caso


de un directorio, listar el contenido del mismo (usando ls). El permiso de escritura
permite a un usuario escribir y modificar el archivo. Para directorios, el permiso de
escritura permite crear nuevos archivos o borrar archivos ya existentes en dicho
directorio. Por ltimo, el permiso de ejecucin permite a un usuario ejecutar el archivo
si es un programa o guin del intrprete de comandos. Para directorios, el permiso de
ejecucin permite al usuario cambiar al directorio en cuestion con cd.

Interpretando los permisos de archivos


Veamos un ejemplo del uso de permisos de archivos. Usando el comando ls con la
opcion -l se mostrar un listado "largo" de los archivos, el cual incluye los permisos
de archivos.
/home/larry/foo# ls -l stuff
-rw-r--r--

1 larry

users

505 Mar 13 19:05 stuff

/home/larry/foo#

El primer campo impreso en el listado representa los permisos de archivos. El tercer


campo es el propietario del archivo (larry), y el cuarto es el grupo al cual pertenece el
archivo (users). Obviamente, el ultimo campo es el nombre del archivo (stuff), y los
dems campos los trataremos mas adelante.
Este archivo pertenece a larry y al grupo users. Echemos un vistazo a los permisos.
La cadena -rw-r--r-- nos informa, por orden, de los permisos para el propietario,
el grupo del archivo y cualquier otro usuario.
El primer carcter de la cadena de permisos ("-") representa el tipo de archivo. El "-"
significa que es un archivo regular. Las siguientes tres letras ("rw-") representan los
permisos para el propietario del archivo, larry. El "r" para "lectura" y "w" para
escritura. Luego Larry tiene permisos de lectura y escritura para el archivo stuff.
Como ya mencionamos, aparte de los permisos de lectura y escritura esta el permiso
de "ejecucin", representado por una "x". Como hay un "-" en lugar del "x", significa
que Larry no tiene permiso para ejecutar ese archivo. Esto es correcto, puesto que
stuff no es un programa de ningun tipo. Por supuesto, como el archivo es de Larry,
puede darse a si mismo permiso de ejecucin si lo desea. Esto ser cubierto en
breve.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

66

Los siguientes tres caracteres, r-- representan los permisos para los miembros del
grupo. El grupo al que pertenece el archivo es users. Como solo aparece un "r"
cualquier usuario que pertenezca al grupo users puede leer este archivo.
Los ltimos tres caracteres, tambin r--, representan los permisos para cualquier
otro usuario del sistema (diferentes del propietario o de los pertenecientes al grupo
users). De nuevo, como solo esta presente el "r", los dems usuarios pueden leer el
archivo, pero no escribir en el o ejecutarlo.
Aqui tenemos otros ejemplos de permisos de grupo.
-rwxr-xr-x
El propietario del archivo puede leer, escribir y ejecutar el archivo.
Los usuarios pertenecientes al grupo del archivo, y todos los dems usuarios pueden
leer y ejecutar el archivo.
-rw------El propietario del archivo puede leer y escribir. Nadie mas puede
acceder al archivo.
-rwxrwxrwx

Todos los usuarios pueden leer, escribir y ejecutar el archivo.

Dependencias
Es importante darse cuenta de que los permisos de un archivo tambin dependen de
los permisos del directorio en el que residen. Por ejemplo, aunque un archivo tenga
los permisos -rwxrwxrwx, otros usuarios no podrn acceder a el a menos que
tambin tengan permiso de lectura y ejecucin para el directorio en el cual se
encuentra el archivo.
Si Larry quiere restringir el acceso a todos sus archivos, podra simplemente poner
los permisos de su directorio "home" : /home/larry a -rwx------. De esta forma
ningn usuario podr acceder a su directorio ni a ninguno de sus archivos o
subdirectorios. Larry no necesita preocuparse de los permisos individuales de cada
uno de sus archivos.
En otras palabras, para acceder a un archivo, debes de tener permiso de ejecucin
de todos los directorios a lo largo del camino de acceso al archivo, adems de
permiso de lectura (o ejecucin) del archivo en particular.
Habitualmente, los usuarios de un sistema UNIX son muy abiertos con sus archivos.
Los permisos que se dan a los archivos usualmente son -rw-r--r--, lo que permite
a todos los dems usuarios leer los archivos, pero no modificarlos de ninguna forma.
Los directorios, usualmente tienen los permisos -rwxr-xr-x, lo que permite que los
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

67

dems usuarios puedan moverse y ver los directorios, pero sin poder crear o borrar
nuevos archivos en ellos.
Muchos usuarios pueden querer limitar el acceso de otros usuarios a sus archivos.
Poniendo los permisos de un archivo a -rw------- no se permitir a ningn otro
usuario acceder al archivo. Igualmente, poniendo los permisos del directorio a -rwx----- no se permitir a los dems usuarios acceder al directorio en cuestion.

3.3.2.- Modificando los permisos.


El comando chmod se usa para establecer los permisos de un archivo. Solo el
propietario puede cambiar los permisos del archivo. La sintaxis de chmod es:
chmod {a,u,g,o}{+,-}{r,w,x} nombres de archivos

Brevemente, indicamos a que usuarios afecta all, user, group u other. Entonces
se especifica si se estn aadiendo permisos (+) o quitndolos (-). Finalmente se
especifica que tipo de permiso Read, write o execute. Algunos ejemplos:
chmod

a+r

chmod +r
toma a.

stuff
stuff

Da a todos los usuarios acceso al archivo.


Como arriba si no se indica a, u, g u o por defecto se

chmod og-x stuff


excepto al propietario.

Quita permisos de ejecucin a todos los usuarios

chmod

Permite al propietario leer, escribir y ejecutar el archivo.

u+rwx

stuff

chmod o-rwx stuff Quita permisos de lectura, escritura y ejecucin a todos


los usuarios menos al propietario y a los usuarios del grupo del archivo.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

68

3.4.- Permisos adicionales para archivos.


3.4.1.- Permisos por default.
3.4.2.- Enlaces.
Manejando enlaces de archivos
Los enlaces le permiten dar a un nico archivo mltiples nombres. Los archivos son
identificados por el sistema por su numero de inodo, el cual es el nico identificador
del archivo para el sistema de archivos. Un directorio es una lista de nmeros de
inodo con sus correspondientes nombres de archivo. Cada nombre de archivo en un
directorio es un enlace a un inodo particular.
Enlaces duros (Hard links)
La orden ln es usada para crear mltiples enlaces para un archivo. Por ejemplo,
supongamos que tiene un archivo foo en un directorio. Usando ls -i, veremos el
numero de inodo para el archivo.
# ls -i foo
22192 foo
#
Aqu, el archivo foo tiene el numero de inodo 22192 en el sistema de archivos.
Podemos crear otro enlace a foo, llamado bar:
# ln foo bar
Con ls -i veremos que los dos archivos tienen el mismo inodo.
# ls -i foo bar
22192 bar
22192 foo
#

Ahora, accediendo a foo o a bar accederemos al mismo archivo. Si hace cambios


en foo, estos cambios tambin sern efectuados en bar. Para todos los efectos, foo
y bar son el mismo archivo.
Estos enlaces son conocidos como enlaces duros (Hard links) porque directamente
crean el enlace al inodo. Ntese que solo podemos crear enlaces duros entre
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

69

archivos del mismo sistema de archivos; enlaces simblicos (ver mas adelante) no
tienen esta restriccin.
Cuando borra un archivo con rm, est solamente borrando un enlace a un archivo. Si
usa el comando
# rm foo
solo el enlace de nombre foo es borrado; bar todava existir. Un archivo es solo
definitivamente borrado del sistema cuando no quedan enlaces a el. Usualmente, los
archivos tienen un nico enlace, por lo que el uso de rm los borra. Pero si el archivo
tiene mltiples enlaces, el uso de rm solo borrara un nico enlace; para borrar el
archivo, deber borrar todos los enlaces del archivo.
La orden ls -l muestra el numero de enlaces a un archivo (entre otra informacin).
# ls -l foo bar
-rw-r--r-2 root
-rw-r--r-2 root
#

root
root

12 Aug
12 Aug

5 16:51 bar
5 16:50 foo

La segunda columna en el listado, "2", especifica el nmero de enlaces al archivo.


As resulta que un directorio no es ms que un archivo que contiene informacin
sobre la translacin enlace a inodo. Tambin, cada directorio tiene al menos dos
enlaces duros en el: "." (un enlace apuntando a si mismo) y ".." (un enlace
apuntando al directorio padre). En el directorio raz (/), el enlace ".." simplemente
apunta a /.

Enlaces simblicos
Los enlaces simblicos son otro tipo de enlace, que es diferente al enlace duro. Un
enlace simblico permite dar a un archivo el nombre de otro, pero no enlaza el
archivo con un inodo.
La orden ln -s crea un enlace simblico a un archivo. Por ejemplo, si usamos la
orden :
# ln -s foo bar
crearemos un enlace simblico bar apuntando al archivo foo. Si usamos ls -i,
veremos que los dos archivos tienen inodos diferentes, en efecto.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

70

# ls -i foo bar
22195 bar
22192 foo
#

De cualquier modo, usando ls -l vemos que el archivo bar es un enlace simblico


apuntando a foo.
# ls -l foo bar
lrwxrwxrwx
1 root
-rw-r--r-1 root
#

root
root

3 Aug
12 Aug

5 16:51 bar -> foo


5 16:50 foo

Los bits de permisos en un enlace simblico no se usan (siempre aparecen como


rwxrwxrwx). En su lugar, los permisos del enlace simblico son determinados por
los permisos del archivo "apuntado" por el enlace (en nuestro ejemplo, el archivo
foo).
Funcionalmente, los enlaces duros y simblicos son similares, pero hay algunas
diferencias. Por una parte, puede crear un enlace simblico a un archivo que no
existe; lo mismo no es cierto para enlaces duros. Los enlaces simblicos son
procesados por el ncleo de forma diferente a los duros, lo cual es solo una
diferencia tcnica, pero a veces importante. Los enlaces simblicos son de ayuda
puesto que identifican al archivo al que apuntan; con enlaces duros no hay forma facil
de saber que archivo esta enlazado al mismo inodo.
Los enlaces se usan en muchas partes del sistema Linux. Los enlaces simblicos son
especialmente importantes para las imagenes de las librerias compartidas en /lib.

3.4.3.- Control de la modificacin de archivos.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

71

3.5.- Metacaracteres y redireccin.


3.5.1.- Metacaracteres.
Entrada y salida estndard
Muchos comandos UNIX toman su entrada de algo conocido como entrada estndard
y envan su salida a la salida estndar (a menudo abreviado como "stdin" y
"stdout"). El interprete de comandos configura el sistema de forma que la entrada
estndar es el teclado y la salida la pantalla.
Veamos un ejemplo con el comando cat. Normalmente cat lee datos de los archivos
cuyos nombres se pasan como argumentos en la linea de comandos y enva estos
datos directamente a la salida estndar. Luego, usando el comando
/home/larry/papers# cat history-final masters-thesis

mostrara por pantalla el contenido del archivo history-final seguido por


masters-thesis.
Si no se le pasan nombres de archivos a cat como parmetros, leer datos de stdin
y los enviara a stdout. Veamos un ejemplo.
/home/larry/papers# cat
Hello there.
Hello there.
Bye.
Bye._____
<ctrl-D>
/home/larry/papers#

Como se puede ver, cada lnea que el usuario teclea (impresa en negrita) es
inmediatamente reenviada al monitor por cat. Cuando se esta leyendo de la entrada
estndar, los comandos reconocen el fin de la entrada de datos cuando reciben el
carcter EOT (end-of-text, fin de texto). Normalmente es generado con la
combinacin <ctrl-D>.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

72

Veamos otro ejemplo. El comando sort toma como entrada lneas de texto (de nuevo
leer desde stdin si no se le proporcionan nombres de archivos en la linea de
comandos), y devuelve la salida ordenada a stdout. Pruebe lo siguiente:
/home/larry/papers# sort
bananas
carrots
apples
<ctrl-D>
apples
bananas
carrots
/home/larry/papers#
Podemos ordenar alfabticamente la lista de la compra... >no es til UNIX?

Redireccinando la entrada y salida


Ahora, supongamos que queremos que la salida de sort vaya a un archivo para poder
salvar la lista ordenada de salida. El interprete de comandos nos permite
redireccinar la salida estndar a un archivo usando el smbolo ">". Veamos como
funciona.
/home/larry/papers# sort > shopping-list
bananas
carrots
apples___
<ctrl-D>
/home/larry/papers#
Como puede ver, el resultado de sort no se muestra por pantalla, en su lugar es
salvado en el archivo shopping-list. Echemos un vistazo al archivo.
/home/larry/papers# cat shopping-list
apples
bananas
carrots
/home/larry/papers#
Ya podemos ordenar la lista de la compra y adems guardarla.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

73

Supongamos ahora que tenamos guardada nuestra lista de compra desordenada


original en el archivo tems. Una forma de ordenar la informacin y salvarla en un
archivo podra ser darle a sort el nombre del archivo a leer en lugar de la entrada
estndar y redireccinar la salida estndar como hicimos arriba.
/home/larry/papers# sort tems > shopping-list
/home/larry/papers# cat shopping-list
apples
bananas
carrots
/home/larry/papers#

Hay otra forma de hacer esto. No solo puede ser re-direccionada la salida estndar,
tambin puede ser re-direccionada la entrada estndar usando el smbolo "<".
/home/larry/papers# sort < tems
apples
bananas
carrots
/home/larry/papers#

Tcnicamente, sort < tems es equivalente a sort tems, pero nos permite
demostrar que sort < tems se comporta como si los datos del archivo fueran
tecleados por la entrada estndar. El interprete de comandos es quien maneja las redirecciones. sort no recibe el nombre del archivo (tems) a leer, desde el punto de
vista de sort, esta leyendo datos de la entrada estndar como si fueran tecleados
desde el teclado.
Esto introduce el concepto de filtro. Un filtro es un programa que lee datos de la
entrada estndar, los procesa de alguna forma, y devuelve los datos procesados por
la salida estndar. Usando la redireccin la entrada estndar y/o salida estndar
pueden ser referenciadas desde archivos. El comando sort es un filtro simple:
ordena los datos de entrada y enva el resultado a la salida estndar. cat es incluso
mas simple, no hace nada con los datos de entrada, simplemente enva a la salida
cualquier cosa que le llega.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

74

Uso de tuberias (pipes)


Ya hemos visto como usar sort como un filtro. Pero estos ejemplos suponen que
tenemos los datos en un archivo en alguna parte o vamos a introducir los datos
manualmente por la entrada estndar.
>Que pasa si los datos que queremos ordenar provienen de la salida de otro
comando, como ls?.
Por ejemplo, usando la opcion -r con sort ordenaremos los datos en orden inverso.
Si queremos listar los archivos en el directorio actual en orden inverso, una forma
podra ser.
/home/larry/papers# ls
english-list
history-final
masters-thesis
notes
/home/larry/papers# ls > file-list
/home/larry/papers# sort -r file-list
notes
masters-thesis
history-final
english-list
/home/larry/papers#
Aqui, salvamos la salida de ls en un archivo, y entonces ejecutamos sort -r sobre
ese archivo. Pero esta forma necesita crear un archivo temporal en el que salvar los
datos generados por ls.
La solucin es usar las pipes. El uso de pipes es otra caracterstica del interprete de
comandos, que nos permite conectar una cadena de comandos en un "pipe", donde
la stdout del primero es enviada directamente a la stdin del segundo y as
sucesivamente. Queremos conectar la salida de ls con la entrada de sort. Para crear
un pipe se usa el smbolo "|":
/home/larry/papers# ls | sort -r
notes
masters-thesis
history-final
english-list
/home/larry/papers#
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

75

Esta forma es mas corta y obviamente mas facil de escribir.


Otro ejemplo til usando el comando
/home/larry/papers# ls /usr/bin
mostrara una lista larga de los archivos, la mayora de los cuales pasara rpidamente
ante nuestros ojos sin que podamos leerla. En lugar de esto, usemos more para
mostrar la lista de archivos en /usr/bin.
/home/larry/papers# ls /usr/bin | more
Ahora podemos ir avanzando pagina a pagina cmodamente.
Pero la diversin no termina aqui!. Podemos "entubar" mas de dos comandos a la
vez. El comando head es un filtro que muestra la primeras lneas del canal de
entrada (aqu la entrada desde una pipe). Si queremos ver el ultimo archivo del
directorio actual en orden alfabtico, usaremos:
/home/larry/papers# ls | sort -r | head -1
notes
/home/larry/papers#
Donde head -1 simplemente muestra la primera linea de la entrada que recibe en
este caso, el flujo de datos ordenados inversamente provenientes de ls).

Redireccin no destructiva
El uso de ">" para redireccinar la salida a un archivo es destructivo: en otras
palabras, el comando
/home/larry/papers# ls > file-list
sobreescribe el contenido del archivo file-list. Si en su lugar, usamos el smbolo
">>", la salida ser aadida al final del archivo nombrado, en lugar de ser sobrescrito.
/home/larry/papers# ls >> file-list

aadir la salida de ls al final de file-list.


Jos Luis Elvira Valenzuela, ITESO-DESI 1999

76

Es conveniente tener en cuenta que la redireccin y el uso de pipes son


caractersticas proporcionadas por el interprete de comandos ste, proporciona estos
servicios mediante el uso de la sintaxis ">", ">>" y "|".

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

77

3.6.- El editor vi.


3.6.1.- Introduccin al editor.
Qu es el editor vi?
Un editor de texto es simplemente un programa usado para la edicin de archivos
que contienen texto, como una carta, un programa en C, o un archivo de
configuracin del sistema. Mientras que hay muchos editores de texto disponibles en
Linux, el nico editor que esta garantizado encontrar en cualquier sistema UNIX es vi
el "visual editor". vi no es el editor mas fcil de usar, ni es muy autoexplicativo. De
cualquier forma, como es tan comn en el mundo UNIX y es posible que alguna vez
necesite usarlo, aqui encontrara algo de documentacin.
La eleccin de un editor es principalmente una cuestion de gusto personal y estilo.
Muchos usuarios prefieren el barroco, autoexplicativo y potente Emacs un editor con
mas caractersticas que cualquier otro programa nico en el mundo UNIX. Por
ejemplo, Emacs tiene integrado su propio dialecto del lenguaje de programacin LISP
y tiene muchas extensiones (una de ellas es el programa "Eliza"- como programa de
IA).
Pero como Emacs y todos sus archivos de soporte es relativamente grande, puede
que no tenga acceso a el en muchos sistemas. vi , por otra parte, es pequeo y
potente, pero mas difcil de usar.
De cualquier modo, una vez que conozca la forma de funcionamiento de vi, es muy
fcil usarlo. Simplemente la curva de aprendizaje es bastante pronunciada al
comienzo.
Conceptos
Mientras se usa vi, en cualquier momento estar en uno de tres posibles modos de
operacin. Estos modos son conocidos como :
Modo rdenes.
Modo insercin.
Modo ultima lnea.
Cuando inicia vi, esta en el modo rdenes. Este modo le permite usar ciertas rdenes
para editar archivos o cambiar a otros modos. Por ejemplo, tecleando "x" mientras
esta en el modo rdenes, borra el carcter que hay debajo del cursor. Las teclas del
cursor mueven este por el archivo que estamos editando. Generalmente, las ordenes
usadas en este modo son solo de uno o dos caracteres de longitud.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
78

Habitualmente insertar o editar texto desde el modo insercin. Usando vi,


probablemente dedicara la mayor parte del tiempo en este modo. Inicia el modo de
insercin al usar una orden como "i" (para "insertar") desde el modo de ordenes. Una
vez en el modo de insercin, ira insertando texto en el documento desde la posicin
actual del cursor. Para salir del modo de insercin y volver al de ordenes, pulse
<esc>.
Modo ltima lnea es un modo especial usado para proporcionar ciertas rdenes
extendidas a vi. Al usar esos comandos, aparecen en la ltima lnea de la pantalla
(de ah el nombre). Por ejemplo, cuando teclea ":" desde el modo de rdenes, entrar
en el modo ltima lnea, y podr usar rdenes como "wq" (para escribir el archivo a
disco y salir de vi), o "q!" (para salir de vi sin guardar los cambios). El modo de ltima
lnea es habitualmente usado por rdenes vi mayores de un carcter.
En el modo de ltima lnea, introduce una orden de una sola lnea y pulsa <enter>
para ejecutarla.

3.6.2.- Comandos de edicin.


Comenzando con vi
La mejor forma de entender estos conceptos es arrancar vi y editar un archivo. En el
ejemplo "screens" que veremos, vamos a mostrar solo unas pocas lneas de texto,
como si la pantalla tuviese solo seis lneas de altura (en lugar de veinticuatro).
La sintaxis de vi es
vi nombre del archivo

Arranque vi tecleando
/home/larry# vi test

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

79

Usando el editor vi
lo que editara el archivo test. Debera ver algo como
~
~
~
"test" [New file]
La columna de caracteres "~" indica que esta al final del archivo.

Insertando texto
Esta ahora en modo rdenes; para poder insertar texto en el archivo, pulse <i>(lo que
le har entrar en modo insercin), y comience a escribir.
Now is the time for all good men to come to the aid of the
party._
~
~
~

Mientras inserta texto, puede escribir tantas lneas como desee (pulsando <return>
despus de cada una, por supuesto), y puede corregir los errores con la tecla de
borrado de carcter.
Para salir del modo de insercin y volver al modo de ordenes, pulse <esc>. Mientras
este en modo rdenes, puede usar las teclas del cursor para moverse por el archivo.
En nuestro ejemplo, como solo tenemos una lnea, el tratar de usar las teclas de lnea
arriba o abajo, probablemente har que vi emita un pitido.
Hay muchas formas de insertar texto a parte de la orden i. Por ejemplo, la orden a
inserta texto comenzando detrs de la posicin actual del cursor, en lugar de la
posicin actual del cursor. Por ejemplo, use la tecla de cursor a la izquierda para
desplazar el cursor entre las palabras "good" y
"men".
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

80

Now is the time for all good__men to come to the aid of the
party
|
~
~
~
~

Pulse <a> para iniciar el modo insercin, teclee "wo" y pulse <esc> para volver al
modo de rdenes.
Now is the time for all good women to come to the aid of the
party.
~
~
~
~

Para comenzar a insertar texto en la lnea de debajo de la actual, use la orden "o".
Por ejemplo, pulse <o> y teclee otra lnea o dos:
Now is the time for all good women to come to the aid of the
party
Afterwards, we'll go out for pizza and beer._
~
~
~
~

Solo recuerde que en cualquier momento esta en modo de ordenes (donde ordenes
como i, a o son validas, o en modo de insercin (cuando este insertando texto,
pulse <esc> para volver al modo de rdenes), o en modo de ltima lnea (donde
puede introducir comandos extendidos, como veremos mas adelante).

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

81

Borrando texto
Desde el modo de rdenes, la orden x borra el carcter debajo del cursor. Si pulsa
<x> cinco veces, terminara con:
Now is the time for all good women to come to the aid of the
party.
Afterwards, we'll go out for pizza and_
~
~
~
~

Ahora pulse <a>, inserte algn texto, seguido de <esc>:


Now is the time for all good women to come to the aid of the
party
Afterwards, we'll go out for pizza and Diet Coke._
~
~
~
~

Puede borrar lneas enteras usando la orden dd (es decir, pulse <d> dos veces en
una fila). Si el cursor esta en la segunda lnea y teclea dd,
Now is the time for all good women to come to the aid of the
party.
~
~
~

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

82

Para borrar la palabra sobre la que se encuentra el cursor, use la orden dw. Site el
cursor sobre la palabra "good" y pulse dw.
Now is the time for all women to come to the aid of the party.
~
~
~
~

Modificando texto
Puede sustituir secciones de texto usando la orden R. Site el cursor en la primera
letra de "party" y pulse <R>, y escriba la palabra "hungry".
Now is the time for all women to come to the aid of the
hungry._
~
~
~
~

El uso de R para editar texto es bastante parecido al uso de las ordenes i y a, pero R
sobreescribe texto en lugar de insertarlo.
La orden r sustituye un nico carcter situado debajo del cursor. Por ejemplo, site el
cursor al comienzo de la palabra now" y escriba r seguido de C. Obtendr:
C_ow is the time for all women to come to the aid of the
hungry.
~
~
~
~

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

83

La orden "~" cambia de maysculas a minsculas o viceversa la letra sobre la que se


encuentra el cursor. Por ejemplo, si sita el cursor sobre la "o" de "Cow", y
repetidamente pulsa <~>, obtendr:
COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY
~
~
~
~

Ordenes de movimiento
Ya conoce como usar las teclas del cursor para moverse por el documento. Adems,
puede usar las ordenes h, j, k y l para mover el cursor a la izquierda, abajo, arriba y
derecha respectivamente. Esto es muy cmodo cuando (por alguna razn) sus teclas
de cursor no funcionen correctamente.
La orden w mueve el cursor al comienzo de la siguiente palabra; b lo lleva al
comienzo de la palabra anterior.
La orden 0 (cero) mueve el cursor al comienzo de la lnea actual, y la orden $ lo lleva
al final de la lnea.
Al editar archivos grandes, querr moverse hacia adelante y atrs a lo largo del
archivo mostrando una pantalla cada vez. Pulsando <ctrl-F>avanza el cursor una
pantalla hacia adelante y <ctrl-B> lo lleva una pantalla atrs.
Para llevar el cursor al final del archivo, pulse G. Puede tambin desplazarse a una
lnea arbitraria; por ejemplo, pulsando la orden 10G llevara el cursor a la lnea 10 del
archivo. Para desplazarse al comienzo, use 1G. Puede asociar ordenes de
desplazamiento con otras ordenes como es el borrado. Por ejemplo, La orden d$
borrara todo desde la posicin del cursor al final de la lnea; dG borrar todo desde la
posicin del cursor al final del archivo.

Guardando archivos y saliendo de vi


Para salir de vi sin modificar el archivo use la orden :q!. Al pulsar ":", el cursor se
desplazara a la ltima lnea de la pantalla; esta en modo ltima lnea.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

84

COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY
~
~
~
:
En el modo de ltima lnea hay disponibles una serie de ordenes extendidas. Una de
ellas es q!, la cual permite salir de vi sin guardar los cambios. La orden :wq salva el
archivo y sale de vi. La orden ZZ (desde el modo de ordenes, sin ":") es equivalente
a :wq. Recuerde que debe pulsar <enter> despus de introducir la orden para que
esta se ejecute en el modo ultima lnea.
Para salvar el archivo sin salir de vi, simplemente use :w.

Editando otro archivo.


Para editar otro archivo use la orden :e. Por ejemplo, para dejar de editar el archivo
test y en su
lugar editar el archivo foo, use la orden
COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY
~
~
~
:e foo

Si usa :e sin salvar primero el archivo, obtendr el mensaje de error

No write since last change (":edit!" overrides)

lo cual significa que vi no quiere editar otro archivo hasta que salve el primero. En
este punto, puede usar :w para guardar el archivo original, y entonces usar :e, o
puede usar la orden
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

85

COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY
~
~
~
:e!

foo

El signo "!" le dice a vi lo que realmente desea usted editar el nuevo archivo sin
salvar los cambios del primero.

Incluyendo otros archivos


Si usas la orden :r Puede incluir el contenido de otro archivo en el archivo que est
editando. Por ejemplo
:r foo.txt
insertara el contenido del archivo foo.txt en el texto en la posicin actual de
cursor.

Ejecutando comandos del intrprete


Puede tambin ejecutar comandos del intrprete desde el interior de vi. La orden :r!
funciona como :r, pero en lugar de leer un archivo, inserta la salida de un comando
dado en el archivo en la posicin actual del cursor. Por ejemplo, si usa la orden
:r!

ls -F

obtendr :
COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY
letters/
misc/
papers/
~
~

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

86

Tambin puede salir a un intrprete de comandos desde vi, es decir, ejecutar una
orden desde dentro de vi y volver al editor una vez esta finalice. Por ejemplo, si usa la
orden
:!

ls F

la orden ls -F ser ejecutada, y los resultados mostrados en la pantalla, pero no


insertados en el archivo en edicin. Si usa la orden
:shell
vi iniciar una instancia del intrprete de comandos, permitindole temporalmente
dejar a vi "parado" mientras ejecuta otras ordenes. Simplemente salga del intrprete
de comandos (usando la orden exit) para regresar a vi

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

87

3.7.- Introduccin al ambiente grfico de Linux.


3.7.1.- Iniciando el ambiente grfico de Linux.
3.7.2.- Configuracin del ambiente grfico de Linux.
Poner a punto XFree86 no suele ser difcil. Sin embargo, si va a usar manejadores de
"chipsets" aun en desarrollo o desea obtener el mejor rendimiento o resolucin de
una tarjeta aceleradora, en configurar a la perfeccin XFree86 puede tardar bastante.
En esta seccin vamos a describir como crear y editar el archivo XF86Config, que
configura al servidor. En muchos casos lo mejor es comenzar con una configuracin
"bsica", de baja resolucin, como 640x480 puntos, que es soportada por todas las
tarjetas y monitores. Una vez comprobado su funcionamiento a baja resolucin,
puede pasar a modificar la configuracin para explotar toda la capacidad de su tarjeta
de vdeo.
Adems de la informacin que nosotros le damos, debera leerse la siguiente
documentacin:
La Documentacion propia de XFree86 en /usr/X11R6/lib/X11/doc (viene
con el paquete XFree86-3.1-doc). Debe prestar especial atencin al archivo
README.Config, que es un tutorial sobre la configuracin de XWindows.
Diferentes "chipsets" de vdeo tendrn sus propios archivos README en el
directorio anterior (por ejemplo, README.Cirrus). Lase el que le corresponda.
Las pginas de manual para XFree86.
Las pginas de manual para XF86Config.
Las pginas de manual para el servidor concreto que utilice (como XF86_SVGA o
XF86_S3).

El archivo de configuracin principal debe ser :


/usr/X11R6/lib/X11/XF86Config

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

88

Este archivo contiene informacin acerca del ratn, parmetros de la tarjeta grfica,
etc. El archivo XF86Config.ed es un ejemplo que incluye la distribucin. Copie este
archivo como XF86Config y modifquelo para su sistema.
Las paginas de manual para XF86Config explican el formato del archivo con
detalles. Lea ahora esas paginas si aun no lo ha hecho.
Le vamos a presentar un ejemplo de XF86Config. No tiene por que coincidir con el
ejemplo que incluye la distribucion, pero en todo caso tendrn estructura parecida.
Observe que el formato del archivo puede cambiar algo entre versiones de
XFree86. La informacin que le damos solo vale para la version 3.1.
Adems, no debe limitarse a copiar este archivo e intentar probarlo en su
sistema. Si lo hace, y, por error, enva a su monitor una frecuencia
demasiado alta para el puede producir una avera. No seria el primer caso.
Esto ha ocurrido especialmente con monitores de frecuencia fija. En
definitiva, asegrese de que su archivo XF86Config se corresponde con su
hardware antes de intentar utilizarlo.
Cada seccin del siguiente ejemplo de XF86Config se enmarca en un par de lneas
Seccin
<section-name>. . . EndSection. La primera parte del archivo es la seccin de
Archivos, que tendr el siguiente aspecto:
Section "Files"
RgbPath
FontPath
FontPath
EndSection

"/usr/X11R6/lib/X11/rgb"
"/usr/X11R6/lib/X11/fonts/misc/"
"/usr/X11R6/lib/X11/fonts/75dpi/"

La linea RgbPath pone la ruta de acceso a la base de datos de colores RGB para
X11R6, y cada linea FontPath pone rutas de acceso a directorios con fuentes X11.
Por lo general no tendr que modificar estas lneas. Tan solo debe comprobar que en
los directorios correspondientes se encuentran los archivos implicados (fuentes, etc).
La siguiente seccin es ServerFlags, que especifica algunos "flags" generales para el
servidor.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

89

Por lo general la seccin suele ir vaca.


Section "ServerFlags"
# Si quita el comentario siguiente, la llegada de una se~nal al
# provocara el volcado de su memoria. Esto puede dejar la consola en
# un estado inutilizable pero el volcado puede servirle en la depuracin.
#
NoTrapSignals
# Quitando este comentario se desactiva la secuencia <Crtl><Alt><BS>
#
DontZap
EndSection

La siguiente seccin es Keyboard. Su significado es claro.


Section "Keyboard"
Protocol
"Standard"
AutoRepeat
500 5
ServerNumLock
EndSection
Existen otras opciones. Vea su archivo XF86Config si desea modificar las opciones
de teclado. Las que trae por defecto suelen funcionar bien en casi todos los
sistemas.

La siguiente seccin es Pointer, y especifica los parmetros para el ratn.


Section "Pointer"
Protocol
"MouseSystems"
Device
"/dev/mouse"
# Los dos parmetros siguientes solo son necesarios en algunos Logitech.
#
BaudRate
9600
#
SampleRate 150
# La siguiente opcion es til para ratones Microsoft de dos botones.
#
Emulate3Buttons
# La siguiente opcion es til para algunos ratones con tres botones
Logitech.
#
ChordMiddle
EndSection

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

90

Le pueden interesar las opciones Protocol y Device. Protocol especifica el protocolo


que utiliza su ratn (no se trata de su marca o modelo). Bajo Linux los protocolos
validos son:

BusMouse
Logitech
Microsoft
MMSeries
Mouseman
MouseSystems
PS/2
MMHitTab

BusMouse es el que se usa para ratn Logitech en bus. Observar que los ratones
antiguos de Logitech usan Logitech pero los mas modernos usan Microsoft o
Mouseman. Este es un caso en el que el protocolo no coincide con la marca.
Device especifica el dispositivo donde esta el ratn. En muchos sistemas Linux se
encuentra en /dev/mouse, que suele ser un enlace al dispositivo verdadero (puerto
serie como /dev/cua0, etc).
Por supuesto, debe asegurarse de que el dispositivo que corresponda este en /dev.
La siguiente seccin es Monitor, que especifica las caractersticas de su pantalla
TRC. La seccin Monitor de XF86Config puede no ser nica, como sucede con
otras secciones. Es til si hay varios monitores conectados al sistema, o si se quiere
usar el mismo XF86Config en diferentes configuraciones hardware. Por lo general,
sin embargo, solo necesitar una seccin Monitor.
Section "Monitor"
Identifier

"CTX 5468 NI"

# !! Estos valores son validos solo para un monitor "CTX 5468 NI"
# No intente usarlo en su monitor si no es este mismo.
Bandwidth
HorizSync
VertRefresh
# Modos: Nombre

60
30-38,47-50
50-90
reloj

ModeLine "640x480"
25
ModeLine "800x600"
36
ModeLine "1024x768" 65
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

horiz
640 664 760 800
800 824 896 1024
1024 1088 1200 1328

vert
480 491 493 525
600 601 603 625
768 783 789 818

91

EndSection

La lnea Identifier se usa para dar a la seccin un nombre. Puede ser cualquier
cadena de caracteres y se usara despus para referirse a ese monitor.
HorizSync es el valor de frecuencia de sincrona horizontal vlida, en KHz. Si tiene
un monitor "multisync", puede tratarse de un rango (o diversos rangos separados por
comas). Si se trata de un monitor de frecuencia fija, ser un conjunto discreto de
valores como el siguiente:
HorizSync

31.5, 35.2, 37.9, 35.5, 48.95

El manual de su monitor debera incluir estos datos en las especificaciones tcnicas.


Si no tiene esta informacin, contacte con el vendedor o fabricante para obtenerla.
Por supuesto, hay otras fuentes de informacin.
VertRefresh especifica las frecuencias de barrido vertical validas (o sincronismo
vertical), en Hz. Como HorizSync puede ser uno o mas rangos o valores discretos.
Tambin deben indicarse en su manual.
Los dos parmetros anteriores solo se utilizan para comprobar que los modos
grficos pedidos van a ser tolerados por su monitor. Esos modos se especifican en
las entradas Modeline que tienen el formato siguiente:
ModeLine <nombre> <reloj> <valores-horiz> <valores-vert>
<nombre> es un nombre cualquiera que le damos al modo.
<reloj> es la frecuencia de reloj o "dot clock" asociada al modo. Se suele
especificar siempre en Mhz, y es la frecuencia de envo de pixels al monitor para esa
resolucin.
<valores-horiz> y <valores-vert> son cuatro nmeros que especifican
cuando el haz de electrones del monitor debe dispararse y cuando se envan los
pulsos de sincronismo.
Se preguntar como determinar esos valores para su monitor. El archivo
Videomodes.doc, incluido en la distribucin de XFree86 describe en detalle como
obtener los valores requeridos. En primer lugar, <reloj> debe corresponderse con
un valor de los que pueda producir su tarjeta de vdeo.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

92

Por lo tanto solo usara modos con valores de reloj soportados.


En la distribucion se incluyen dos archivos que pueden darle los datos para Modeline
de su monitor. Estos archivos son modeDB.txt y Monitors, ambos en
/usr/X11R6/lib/X11/doc.
Debera comenzar con valores para el estndar VESA, que la mayor parte de los
monitores soportan. Estos valores estn incluidos en modeDB.txt. En este archivo
encontrara entradas como
# 640x480@60Hz Non-Interlaced mode
# Horizontal Sync = 31.5kHz
# Timing: H=(0.95us, 3.81us, 1.59us), V=(0.35ms, 0.064ms, 1.02ms)
#
# name
clock
horizontal timing
vertical timing
"640x480"
25.175
640
664
760
800
480
491
493

flags
525

Esta es una temporizacin estndar VESA para modo 640x480. Utiliza un reloj de
25.175, que debe ser soportado por la tarjeta (esto lo veremos luego). Para incluir
esta entrada en el archivo XF86Config usara la linea
ModeLine "640x480" 25.175

640 664 760 800

480 491 493 525

Observe que el argumento <nombre> (en este caso, "640x480") es una cadena de
caracteres arbitraria, aunque se suele seguir la convencin de indicar la resolucin
del modo.
Para cada Modeline indicado, el servidor comprobar que sus valores caen dentro
de los rangos permitidos de frecuencias (especificados antes), anulando el modo si
no ocurre as. Principalmente, el valor de reloj no debe ser mayor que el indicado en
Bandwidth. Sin embargo, usar valores ligeramente superiores no suele dar
problemas.
Si los tiempos estndares en VESA no le funcionan correctamente (lo sabr cuando
despus los pruebe) mire los archivos modeDB.txt y Monitors, que incluyen
valores especficos para muchos modelos de monitores. Puede crear entradas
Modeline a partir de lo que vea en estos archivos. Asegrese de que solo usa
valores validos en su monitor. Vea que muchos monitores de 14 o 15 pulgadas no
soportan modos de alta resolucin como 1024x768 con seales de reloj lentas. Esto
significa que si no encuentra modos de alta resolucin para su monitor en esos
archivos, no podr usar dicha resolucin.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

93

Si se encuentra perdido, y no encuentra ningn modo que funcione en su monitor,


puede seguir las instrucciones de VideoModes.doc, que le ayudaran a calcular las
entradas ModeLine adecuadas a partir de las especificaciones que se digan en el
manual de su monitor. El mismo archivo VideoModes.doc explica tambin otros
aspectos del servidor de XFree86 como el formato de la directiva ModeLine.
Por ltimo, si obtiene valores para ModeLine que son aceptables pero no del todo
correcto, puede modificarlos ligeramente para obtener el resultado deseado. Por
ejemplo, si cuando ejecuta XFree86 la imagen se desplaza ligeramente, o parece
girar, puede seguir las instrucciones de VideoModes.doc para intentar corregir esas
deficiencias. Adems, utilice tambin los propios controles del monitor. Muchas veces
es necesario ajustarlos despus de cambiar de modo grfico. Tener esos controles
en la parte frontal del monitor le har la vida mas fcil.
Nunca debe usar valores de tiempo o de Modeline pensados para monitores
diferentes al suyo. Si lo intenta hacer, y enva al monitor una frecuencia para
la que no fue diseado, puede producirle una avera
La siguiente seccin del archivo XF86Config es Device, que especifica los
parmetros de su tarjeta grfica. Por ejemplo :
Section "Device"
Identifier "#9 GXE 64"
# Todava nada; aadiremos los valores despus.
EndSection

Esta seccin establece las propiedades de su tarjeta grfica. Identifier es una


cadena de caracteres usada para identificar su tarjeta, cadena que usar para
referirse a las caractersticas que en esta seccin se detallen.
Inicialmente no necesita incluir nada mas a la seccin Device que la identificacin
de la tarjeta.
Esto es as pues usaremos el servidor X para probar las propiedades de su tarjeta,
para incluirlas luego en esta seccin. El servidor X es capaz de obtener el "chipset",
"RAMDAC" y memoria RAM de su tarjeta.
Antes de hacer esto, sin embargo, necesitamos terminar el archivo XF86Config. La
siguiente seccin es Screen, que especifica que combinacin monitor/tarjeta usar
para un servidor concreto.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

94

Section "Screen"
Driver
"Accel"
Device
"#9 GXE 64"
Monitor
"CTX 5468 NI"
Subsection "Display"
Depth
16
Modes
"1024x768" "800x600" "640x480"
ViewPort
0 0
Virtual
1024 768
EndSubsection
EndSection
La linea Driver indica que servidor X utiliza. Los valores validos son:
Accel: Para servidores XF86_S3, XF86_Mach32, XF86_Mach8, XF86_8514,
XF86_P9000, XF86_AGX, y XF86_W32.
SVGA: Para el servidor XF86_SVGA.
VGA16: Para el servidor XF86_VGA16.
VGA2: Para el servidor XF86_Mono.
Mono: Para manejadores monocromticos no VGA que se encuentran en los
servidores XF86_Mono y XF86_VGA16.
Debe asegurarse de que /usr/X11R6/bin/X es un enlace simblico al servidor
que va a usar.
La lnea Device especifica el valor Identifier de la seccin Device que corresponda a
la tarjeta de vdeo que se va a usar con este servidor. Antes, hemos creado una
seccin Device con la lnea :
Identifier "#9 GXE 64"

As pues, utilizaremos "#9 GXE 64" en la linea Device de aqui.


De forma parecida, la linea Monitor especifica el nombre de la seccin Monitor que se
va a usar en este servidor. Aqui, "CTX 5468 NI" es el identificador Identifier utilizado
en la seccin Monitor vista antes.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

95

Subsection "Display" define distintas caractersticas del XFree86 con su particular


combinacin de monitor y tarjeta grfica. El archivo XF86Config describe todas las
opciones en detalle.
La mayora no son necesarias para que el sistema funcione.
Las opciones que debera conocer son:
Depth : Define el numero de bits por pixel (o planos de color), que normalmente
valdr 8 (supone 256 colores). Para el servidor VGA16 se usara una profundidad de
4, y para el monocromo, una profundidad de 1. Si se utiliza una tarjeta acelerada con
suficiente memoria, se puede subir la profundidad a 16, 24 o 32. Si le da problemas,
vuelva a profundidad 8 e intente corregir el problema despus.
Modes : Es la lista de modos de vdeo que estarn entre los definidos con
ModeLine para su monitor. Los nombres usados antes para identificarlos (
"1024x768", etc) se usaran ahora para expresar los modos de la siguiente manera:
Modes

"1024x768" "800x600" "640x480"

De esta forma, XFree86 intentar arrancar en el primero de los modos. Una vez que
ha arrancado, con las teclas <ctrl><alt><numeric> y <ctrl><alt><numeric> podr
cambiar a otro modo.
La mejor forma de empezar, cuando se esta configurando XFree86, es usar modos
de baja resolucin (como 640x480) que suelen funcionar siempre. Una vez que se
tenga una configuracin bsica que va bien, puede pasarse a modificar XF86Config
para soportar resoluciones mayores.
Virtual. Pone el tamao del rea de trabajo virtual. XFree86 es capaz de usar la
memoria sobrante de su tarjeta grfica para extender el tamao de su rea de
trabajo. Cuando mueve el raton a extremos de la pantalla, vera como la pantalla se
desplaza, accediendo as a todo el rea virtual. As pues, si usted trabaja con una
resolucin inferior, como 800x600 y pone un rea de 1024x768 (propia para 1 Mbyte
de DRAM y 8 bits por pixel) podr usar un rea de trabajo mas grande que la que
cabe en pantalla.
El mecanismo Virtual resulta interesante para aprovechar toda la memoria de la
tarjeta grfica, pero es limitado. Si quiere usar un rea de trabajo virtual, se
recomienda usar las facilidades que al respecto dan gestores de ventanas como
fvwm. El mecanismo aqui se implementa a base de ocultar ventanas, etc. en lugar de
ocupar toda la memoria de la tarjeta.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

96

Para mas detalle, vea las paginas de manual de fvwm, gestor de ventanas que
suelen traer los sistemas Linux por defecto.
ViewPort. Si usted utiliza la opcion Virtual descrita antes, puede usar ViewPort
para indicar en que coordenadas virtuales comenzar XFree86. Se suele usar
ViewPort 0 0 que pone el rea de trabajo en la esquina superior izquierda. Pero
si no se indica se pondr centrado, algo que quizs le interese mas.
Hay muchas otras opciones en esta seccin; vea las paginas de manual para
XF86Config para ms detalle. En la prctica no son necesarias esas otras opciones
para que funcione el sistema.

Introduccion de los datos de la tarjeta grfica


Su archivo XF86Config esta ya casi listo para usar, aunque aun falta la informacin
de su tarjeta grfica. Lo que vamos a hacer ahora es usar el servidor X para obtener
la informacin que falta, e introducirla en XF86Config.
A veces se puede encontrar esa informacin en los archivos modeDB.txt,
AccelCards y Devices, que se encuentran en /usr/X11R6/lib/X11/doc.
Adems, existen numerosos archivos README para algunos "chipsets". Debe mirar
esos archivos para buscar su tarjeta y usar los valores que aparezcan en ellos (de
reloj, tipo de "chipset" y otros) en la seccin correspondiente de XF86Config. Si falta
alguna informacin puede intentar obtenerla con el procedimiento siguiente.
En estos ejemplos vamos a ver como configuraramos el sistema para una tarjeta #9
GXE 64, que usa el servidor XF86_S3.
Lo primero que debe hacerse es determinar el "chipset" que lleva la tarjeta.
Ejecutando /usr/X11R6/bin/SuperProbe lo averiguaremos, aunque tambin hay
que conocer el nombre con el que el servidor X conoce a ese "chipset". Para
conseguir esto ultimo, ejecutar:
X -showconfig
Esto le dar los nombres de "chipsets" que conoce el servidor X (esto tambin se
encuentra en las pginas de manual). Por ejemplo, con el servidor XF86_S3
obtendremos:
XFree86 Version 3.1 / X Window System
(protocol Version 11, revision 0, vendor release 6000)
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

97

Operating System: Linux


Configured drivers:
S3: accelerated server for S3 graphics adaptors (Patchlevel 0)
mmio_928, s3_generic

As pues los nombres de "chipsets" que este servidor tiene son mmio_928 y
s3_generic. En la pgina de manual para XF86_S3 encontrar la descripcin de
estos "chipsets" junto a algunas tarjetas que los utilizan. Para la #9 GXE 64 el
"chipset" es mmio_928.
Si no conoce que "chipset" usar, el servidor X puede intentar averiguarlo. Para ello,
ejecutar
X -probeonly > /tmp/x.out 2>&1

si usa bash como shell. Si usa csh, intente:


X -probeonly &> /tmp/x.out

El comando anterior debe ejecutarse solo cuando no hay otras actividades en el


sistema (otros usuarios, procesos, etc.) Este comando obtiene tambin los valores
para los relojes y si el sistema esta cargado se calcularan incorrectamente.
Por ejemplo, esto es lo que sale para la tarjeta del autor:
XFree86 Version 3.1 / X Window System
(protocol Version 11, revision 0, vendor release 6000)
Operating System: Linux
Configured drivers:
S3: accelerated server for S3 graphics adaptors (Patchlevel 0)
mmio_928, s3_generic
algunas lneas borradas . . .
(--) S3: card type: 386/486 localbus
(--) S3: chipset:
864 rev. 0
(--) S3: chipset driver: mmio_928

Aqui vemos los dos "chipsets" vlidos (mmio_928 y s3_generic) del servidor. Este
probo ambos y determin que la tarjeta usa el "chipset" mmio_928.
En la seccin Device del archivo XF86Config, aada una linea Chipset con el
nombre obtenido antes. Por ejemplo :
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

98

Section "Device"
# Este es el identificador que le pusimos...
Identifier "#9 GXE 64"
# Aadimos esta linea:
Chipset "mmio_928"
EndSection

Ahora hay que determinar las frecuencias de reloj. Cada una de estas es
simplemente la frecuencia con la que la tarjeta puede enviar pixeles al monitor. Como
ya sabemos, estas frecuencias dependen de la resolucin usada.
En primer lugar debe echar un vistazo a los archivos mencionados antes (como
modeDB.txt) y ver si los relojes de su tarjeta estn listados. En su caso vera una
lista de 8 o 16 valores, todos ellos dados en Mhz. Por ejemplo, en modeDB.txt
encontramos lo siguiente para la tarjeta Cardinal ET4000:
# chip
ET4000

ram
1024

virtual
1024 768

clocks
25 28 38 36 40 45 32 0

default-mode
"1024x768"

flags

Como vemos, los relojes son 25, 28, 38, 36, 40, 45, 32 y 0 MHz.
En la seccin Devices del archivo XF86Config debe aadir una linea Clocks como la
siguiente (para nuestro ejemplo):
Clocks 25 28 38 36 40 45 32 0

Esto estar en la seccin Devices, despus de Chipset. Observe la importancia del


orden de los relojes. No los cambie.
Si no encuentra las frecuencias de reloj para su tarjeta en los archivos, el servidor X
tambin los puede intentar averiguar. Con el comando ya visto X -probeonly
obtendr una linea como la siguiente:
(--) S3: clocks:

25.18

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

28.32

38.02

36.15

40.33

45.32

32.00

00.00

99

Con esta linea podemos hacer la linea Clocks en XF86Config. Si hay muchos
valores y no caben en una linea puede crear mas lneas Clock, pero respete el orden
de todas formas.
Asegrese de que no hay ninguna linea Clocks en la seccin Devices cuando use el
comando X-probeonly puesto que en este caso no har pruebas reales de los
relojes, sino que probara solo los valores que haya en el archivo XF86Config.
Observe que algunas tarjetas aceleradas tienen chip de reloj programable (vea las
paginas de manual de XF86_Accel para mas detalle. Estas son aplicables a las
tarjetas S3, AGX y XGA-2). Este chip viene a permitir que el servidor X diga a la
tarjeta que relojes usar. Si este es el caso, no debe haber una lista de valores vlidos
de reloj en el archivo XF86Config. Si no, la lista de valores de reloj que devuelve Xprobeonly contendr solo uno o dos valores discretos de reloj, dejando el resto
copiados de los primeros o a cero.
Para placas con reloj programable, deber usar una linea ClockChip en lugar de
Clocks. Esta lnea da el nombre del chip correspondiente a la tarjeta. Esos nombres
se encuentran en las paginas de manual. Por ejemplo, en el archivo README.S3,
veremos que diversas tarjetas S3-864 utilizan un chip "ICD2061A", y deber existir la
linea
ClockChip "icd2061a"

en lugar de la linea Clocks en el archivo XF86Config. Como sucede con Clocks, la


linea formara parte de la seccin Devices e ira a continuacin de Chipset.
De manera similar, algunas tarjetas aceleradas requieren que se especifique el tipo
de chip RAM-DAC del archivo XF86Config, con una linea Ramdac. Esta opcin se
describe en XF86_Accel. Normalmente, el servidor X ya se ocupa de tomar un valor
correcto para el RAMDAC.
Algunas tarjetas grficas necesitan que se especifiquen diversas opciones en la
seccin Devices. Estas opciones se describen en archivos como README.cirrus
o paginas de manual, y se integran en una linea Opcin del archivo XF86Config.
Por ejemplo, una tarjeta #9 GXE 64 necesita dos opciones:
Option number_nine"
Option "dac_8_bit"

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

100

Normalmente, el servidor X funcionara sin las opciones, pero conviene ponerlas para
aumentar el rendimiento de la tarjeta. Hay muchas opciones y muchas particulares de
cada tarjeta. Para utilizarlas, mire los archivos del directorio :
/usr/X11R6/lib/X11/doc
As pues, cuando haya acabado, tendr una seccin Devices como la siguiente:
Section "Device"
# Solo valida para la tarjeta #9 GXE 64 !
Identifier "#9 GXE 64"
Chipset "mmio_928"
ClockChip "icd2061a"
Option umber_nine"
Option "dac_8_bit"
EndSection

Observe que en muchos casos se requiere una lnea Clocks en lugar de Clockchip,
etc. Lo anterior es solo un ejemplo.
Hay otras opciones para la seccin Devices. Los detalles los vera en las pginas de
manual correspondientes.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

101

4.- Administracin del sistema.


Este captulo es una visin general de la administracin de un sistema Linux,
incluyendo un numero de posibilidades avanzadas que no son, necesariamente, solo
para administradores de sistemas. Igual que cada perro tiene su da, cada sistema
tiene su administrador, y poner en marcha el sistema es un trabajo muy importante y
a veces consume mucho tiempo, incluso si se es el nico usuario en el sistema.
Hemos intentado cubrir aqu los elementos ms importantes acerca de la
administracin de sistemas que se necesitan conocer cuando se use Linux, en
suficiente detalle para empezar confortablemente. Para mantenerlo corto y
agradable, solo hemos cubierto los niveles ms bsicos y nos hemos saltado muchos
e importantes detalles. Se debe leer el Linux System Administrator's Guide si se
quiere ejecutar Linux en serio. Le ayudara a comprender mejor como funcionan las
cosas y como se ensamblan juntas. Al menos hojelo para que pueda conocer que
contiene y que tipo de ayuda puede esperar de el.

Acerca de Races, Sombreros y la Sensacin de Poder


Como sabe, UNIX distingue entre diferentes usuarios para que lo que hagan a los
dems y al sistema pueda ser regulado (uno no deseara que nadie pudiese leer
nuestras cartas de amor, por ejemplo). Cada usuario recibe una cuenta que incluye
un nombre de usuario, un directorio inicial, y otras cosas por el estilo. Adems de las
cuentas dadas a personas reales, existen cuentas especiales, definidas por el
sistema, que tienen privilegios especiales. La ms importante de estas es la cuenta
raz, con el nombre de usuario root.

La cuenta root
Los usuarios normales estn restringidos normalmente para que no puedan daar a
nadie mas en el sistema, solo a ellos mismos. Los permisos de los archivos en el
sistema estn preparados para que los usuarios normales no tengan permitido borrar
o modificar archivos en directorios compartidos por todos los usuarios (como son
/bin y /usr/bin. Muchos usuarios tambin protegen sus propios archivos con los
permisos adecuados para que otros usuarios no puedan acceder o modificar estos
archivos.
Estas restricciones desaparecen para root. El usuario root puede leer, modificar o
borrar cualquier archivo en el sistema, cambiar permisos y pertenencias en cualquier
archivo, y ejecutar programas especiales, como pueden ser los que particionan un
disco o crean sistemas de archivos. La idea bsica es que la persona o personas que
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
102

ejecutan y cuidan del sistema entren como root cuando sea necesario para realizar
tareas que no pueden ser ejecutadas por un usuario normal. Puesto que root puede
hacer todo, es fcil cometer errores que tengan consecuencias catastrficas cuando
se trabaja utilizando esta cuenta.
Por ejemplo, como un usuario normal, si inadvertidamente se intentase borrar todos
los archivos en /etc, el sistema no lo permitira. Sin embargo, como usuario root, el
sistema no dira nada. Es muy simple el daar el sistema utilizando root. La mejor
forma de evitar accidentes es:
Pensrselo dos veces antes de apretar <return> en un comando que pueda causar
dao. Por ejemplo, si se va a borrar un directorio, antes de pulsar <return> releer el
comando completo y asegurarse que es correcto.
No acostumbrarse a utilizar root. Cuanto ms confortable se encuentre uno
trabajando con el usuario root, ms seguro que se confundirn los privilegios con los
de un usuario normal. Por ejemplo, puede uno pensar que se esta conectado como
larry, cuando realmente se esta conectado como root.
Utilice un marcador distinto para la cuenta root. Se debe cambiar el archivo .bashrc
o el .login de root para poner el marcador del interprete a algo distinto del
marcador de usuario normal. Por ejemplo, mucha gente utiliza el carcter "$" como
marcador para los usuarios normales, y reserva el carcter "#" como marcador para
el usuario root.
Conectarse como root solo cuando sea absolutamente necesario. Y desconectarse
tan pronto como se haya terminado el trabajo. Cuanto menos se use la cuenta root,
menos posibilidades habr de daar el sistema.
Por supuesto, existe una variante de hackers de UNIX que utilizan root para
prcticamente todo. Pero cada uno de ellos ha cometido, en algn momento, algn
error tonto como root y corrompido el sistema.
La regla general es que hasta que se familiarice con la falta de restricciones de root,
y este cmodo utilizando el sistema sin dichas restricciones, procure conectarse
como root lo menos posible.
Por supuesto, todo el mundo comete errores. El mismo Linus Torvalds borro
accidentalmente una vez el rbol de directorios completo del ncleo de su sistema.
Horas de trabajo se perdieron para siempre. Afortunadamente, sin embargo, gracias
a su conocimiento del cdigo del sistema de archivos, fue capaz de reiniciar el
sistema y reconstruir el rbol de directorios del disco a mano.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

103

Pongmoslo de otra forma, si se imagina la utilizacin de la cuenta root como la


utilizacin de un sombrero mgico especial que le da montones de poderes,
pudiendo, con un gesto de la mano, destruir ciudades enteras, es una buena idea de
lo que es ser un poco cauto con lo que se hace con las manos. Puesto que es fcil
mover la mano de manera destructiva por accidente, no es una buena idea el llevar el
sombrero mgico cuando no es necesario, a pesar de la maravillosa sensacin.

Abusando del sistema


Junto con el sentimiento de poder llega la tendencia a hacer dao. Este es uno de los
puntos oscuros de la administracin de sistemas UNIX, pero todo el mundo pasa por
ello en algn momento. Muchos usuarios de sistemas UNIX nunca tienen la
posibilidad de manejar este poder en los sistemas UNIX de universidad y de
empresas, solo los altamente cualificados (y altamente pagados) administradores de
sistemas llegan a conectarse como root. De hecho, en muchas de esas instituciones,
la clave de root es un secreto celosamente guardado: es tratado como el Sagrado
Grial de la institucin. Se monta mucho jaleo con la conexin como root; esta visto
como un sabio y a la vez espantoso poder, dado solo a un reducido grupo de
elegidos.
Este tipo de actitud hacia la cuenta root es, sencillamente, el tipo de actitud que
alimenta la malicia y el desprecio. Ya que root es tan atractivo, cuando algunos
usuarios tienen su primera oportunidad de conectarse como root (ya sea en un
sistema Linux, o en cualquier otro sitio), la tendencia es a utilizar los privilegios de
root de forma descuidada. Yo he conocido "administradores de sistemas" (por
llamarlos de alguna forma) que leen el correo de otros usuarios, borran archivos de
usuario sin avisar y que, de forma general, se comportan como nios cuando se les
da un "juguete" poderoso.
Puesto que root tiene tantos privilegios en el sistema, se necesita una cierta madurez
y auto- control para utilizar la cuenta de la forma para la que esta diseada para
ejecutar el sistema. Existe un cdigo de honor no hablado entre el administrador y los
usuarios del sistema.
>Como se sentira si su administrador de sistemas leyese su correo electrnico o
mirase sus archivos? Aun no hay ningn precedente legal firme acerca de la
intimidad electrnica en sistemas de computadoras de tiempo compartido.
En sistemas UNIX, el usuario root tiene la posibilidad de saltarse todos los
mecanismos de seguridad y privacidad del sistema. Es importante que el
administrador del sistema desarrolle una relacin de confianza con los usuarios del
sistema. Es algo en lo que nunca se puede insistir lo suficiente.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

104

Como proceder con los usuarios


La seguridad en UNIX es bastante laxa por diseo. La seguridad del sistema fue un
pensamiento posterior el sistema se desarroll originalmente en un entorno donde las
intrusiones de un usuario en otro eran algo inaudito. Por esto, incluso con medidas de
seguridad, aun existe la posibilidad de que usuarios normales hagan dao.
Los administradores de sistemas pueden tomar dos posturas cuando traten con
usuarios abusivos: ser paranoicos o confiados. El administrador de sistemas
paranoico normalmente causa mas dao que el que previene. Una de mis citas
favoritas es, nunca atribuyas a la malicia nada que pueda ser atribuido a la
estupidez." Dicho de otra forma, muchos usuarios no tienen la habilidad o el
conocimiento para hacer dao real al sistema. El 90% del tiempo, cuando un usuario
causa problemas en el sistema (por ejemplo, rellenando la particin de usuarios con
grandes archivos, o ejecutando mltiples instancias de un gran programa), el usuario
simplemente desconoce que lo que esta haciendo es un problema. He ido a ver a
usuarios que estaban causando una gran cantidad de problemas, pero su actitud
estaba causada por la ignorancia no por la malicia.
Cuando se enfrente con usuarios que puedan causar problemas potenciales no sea
acusativo. La antigua regla de "inocente hasta que se demuestre lo contrario" sigue
siendo valida. Es mejor una simple charla con el usuario, preguntndole acerca del
problema, en lugar de causar una confrontacin. Lo ultimo que se desea es estar
entre los malos desde el punto de vista del usuario.
Esto levantara un montn de sospechas acerca de si usted el administrador de
sistemas tiene el sistema correctamente configurado. Si un usuario cree que usted le
disgusta o no le tiene confianza, le puede acusar de borrar archivos o romper la
privacidad del sistema. Esta no es, ciertamente, el tipo de situacin en la que
quisiera estar.
Si encontrase que un usuario ha estado intentando "romper" el sistema, o ha estado
haciendo dao al sistema de forma intencionada, no devuelva el comportamiento
malicioso a su vez. En vez de ello, simplemente, dele un aviso, pero sea flexible. En
muchos casos, se puede cazar a un usuario "con las manos en la masa" daando al
sistema avsele. Dgale que no lo vuelva a repetir. Sin embargo, si le vuelve a cazar
haciendo dao, entonces puede estar absolutamente seguro de que es intencionado.
Ni siquiera puedo empezar a describir la cantidad de veces que pareca que haba un
usuario causando problemas al sistema, cuando de hecho, era o un accidente o un
fallo mo.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

105

Fijando las reglas


La mejor forma de administrar un sistema no es con un puo de hierro. As puede ser
como se haga lo militar, pero UNIX no fue diseado para ese tipo de disciplina. Tiene
sentido el escribir un conjunto sencillo y flexible de reglas para los usuarios, pero
recuerde, cuantas menos reglas tenga, menos posibilidades habr de romperlas.
Incluso si sus reglas para utilizar el sistema son perfectamente razonables y claras,
siempre habr momentos en que los usuarios rompern dichas reglas sin
pretenderlo. Esto es especialmente cierto en el caso de usuarios UNIX nuevos, que
estn aprendiendo los entresijos del sistema. No esta suficientemente claro, por
ejemplo, que uno no debe bajarse un gigabyte de archivos y envirselo por correo a
todos los usuarios del sistema. Los usuarios necesitan comprender las reglas y por
que estn establecidas.
Si especifica reglas de uso para su sistema, asegrese de que el motivo detrs de
cada regla particular este claro. Si no lo hace, los usuarios encontraran toda clase de
formas creativas de saltrsela y no saber que en realidad la estn rompiendo.

Lo que todo esto significa


No podemos decirle como ejecutar su sistema al ultimo detalle. Mucha de la filosofa
depende en como se use el sistema. Si se tienen muchos usuarios, las cosas son
muy diferentes de si solo tiene unos pocos o si se es el nico usuario del sistema. Sin
embargo, siempre es una buena idea en cualquier situacin comprender lo que ser
administrador de sistema significa en realidad.
Ser el administrador de un sistema no le hace a uno un mago del UNIX. Hay muchos
administradores de sistemas que conocen muy poco acerca de UNIX. Igualmente,
hay muchos usuarios normales" que saben mas acerca de UNIX que lo que
cualquier administrador de sistemas.
Tambin, ser el administrador de sistemas no le permite el utilizar la malicia contra
sus usuarios. Aunque el sistema le de el privilegio de enredar en los archivos de los
usuarios, no significa que se tenga ningn derecho a hacerlo.
Por ultimo, ser el administrador del sistema no es realmente una gran cosa. No
importa si sus sistema es un pequeo 386 o una super computadora Cray. La
ejecucin del sistema es la misma. El saber la clave de root no significa ganar dinero
o fama. Tan solo le permitir ejecutar el sistema y mantenerlo funcionando. Eso es
todo.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

106

4.1.- Cuentas para usuarios en el sistema.


4.1.1.- Cuentas de usuario.
4.1.2.- Procedimientos de acceso.
4.1.3.- Creando cuentas para usuario manualmente.
Aadiendo usuarios
Cuando se aade un usuario hay varios pasos a seguir.
1.- se le debe crear una entrada en /etc/passwd, con un nombre de usuario y UID
nicos. Se debe especificar el GID, nombre completo y resto de informacin.
2.- Se debe crear el directorio inicial, y poner los permisos en el directorio para que el
usuario sea el dueo.
3.- Se deben suministrar archivos de comandos de inicializacin en el nuevo
directorio y se debe hacer alguna otra configuracin del sistema (por ejemplo,
preparar un buzn para el correo electrnico entrante para el nuevo usuario).
Aunque no es difcil el aadir usuarios a mano, cuando se esta ejecutando un
sistema con muchos usuarios, es fcil el olvidarse de algo. La manera mas simple de
aadir usuarios es utilizar un programa interactivo que vaya preguntando por la
informacin necesaria y actualice todos los archivos del sistema automticamente. El
nombre de este programa es useradd o adduser dependiendo del software que
est instalado. Las pginas man para estos comandos deberan ser suficientemente
autoexplicatorias.

Borrando usuarios
De forma parecida, borrar usuarios puede hacerse con los comandos userdel o
deluser dependiendo de que software fuera instalado en el sistema. Si se desea
"deshabitar" temporalmente un usuario para que no se conecte al sistema (sin borrar
la cuenta del usuario), se puede prefijar con un asterisco ("*") el campo de la clave en
/etc/passwd. Por ejemplo, cambiando la linea de /etc/passwd correspondiente a
kiwi a
kiwi:*Xv8Q981g71oKK:102:100:Laura Poole:/home/kiwi:/bin/bash
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

107

evitar que kiwi se conecte.


Poniendo atributos de usuario
Despus de que haya creado un usuario, puede necesitar cambiar algn atributo de
dicho usuario, como puede ser el directorio inicial o la clave. La forma mas simple de
hacer esto es cambiar los valores directamente en /etc/passwd. Para poner clave
a un usuario, utilice el comando passwd.
Por ejemplo,
# passwd larry

cambiara la clave de larry. Solo root puede cambiar la clave de otro usuario de esta
forma. Los usuarios pueden cambiar su propia clave con passwd tambin.
En algunos sistemas, los comandos chfn y chsh estn disponibles, permitiendo a
los usuarios el cambiar sus atributos de nombre completo e interprete de conexin.
Si no, deben pedir al administrador de sistemas que los cambie por ellos.

Grupos
Como hemos citado anteriormente, cada usuario pertenece a uno o mas grupos. La
nica importancia real de las relaciones de grupo es la perteneciente a los permisos
de archivos, cada archivo tiene un "grupo propietario" y un conjunto de permisos de
grupo que define de que forma pueden acceder al archivo los usuarios del grupo.
Hay varios grupos definidos en el sistema, como pueden ser bin, Mail, y sys. Los
usuarios no deben pertenecer a ninguno de estos grupos; se utilizan para permisos
de archivos del sistema. En su lugar, los usuarios deben pertenecer a un grupo
individual, como users. Si se quiere ser detallista, se pueden mantener varios grupos
de usuarios como por ejemplo estudiantes, soporte y facultad.
El archivo /etc/group contiene informacin acerca de los grupos. El formato de
cada linea es

nombre de grupo:clave:GID:otros miembros

Algunos ejemplos de grupos pueden ser:


Jos Luis Elvira Valenzuela, ITESO-DESI 1999

108

root:*:0:
usuarios:*:100:mdw,larry
invitados:*:200:
otros:*:250:kiwi

El primer grupo, root, es un grupo especial del sistema reservado para la cuenta root.
El siguiente grupo, users, es para usuarios normales. Tiene un GID de 100. Los
usuarios mdw y larry tienen acceso a este grupo. Recurdese que en /etc/passwd
cada usuario tiene un GID por defecto. Sin embargo, los usuarios pueden pertenecer
a mas de un grupo, aadiendo sus nombres de usuario a otras lneas de grupo en
/etc/group. El comando groups lista a que grupos se tiene acceso.
El tercer grupo, invitados, es para usuarios invitados, y otros es para "otros" usuarios.
El usuario kiwi tiene acceso a este grupo.
Como se puede ver, el campo "clave" de /etc/group raramente se utiliza. A veces
se utiliza para dar una clave para acceder a un grupo. Esto es raras veces necesario.
Para evitar el que los usuarios cambien a grupos privilegiados (con el comando
newgroup), se pone el campo de la clave a "*".
Se pueden usar los comandos addgroup o groupadd para aadir grupos a su
sistema. Normalmente es mas sencillo aadir lneas a /etc/group uno mismo,
puesto que no se necesitan mas configuraciones para aadir un grupo. Para borrar
un grupo, solo hay que borrar su entrada de /etc/group.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

109

4.2.- Personalizando el entorno.


4.2.1.- El shell como un lenguaje de programacin.
Suponiendo que se tiene una gran cantidad de archivos que son programas en C y
queremos compilar solo los que contengan la cadena include.
$
>
>
>
>
>
>

for file in *
do
if grep -l include $file
then
more $file
fi
done

Lo cual tambin se puede hacer en una sola lnea con el comando :


$ more `grep -l include *`
o su sinnimo :
$ more $(grep -l include *)
Generando un script.
# Este programa busca todos los archivos en el directorio
actual que contengan
# la cadena include y muestra en la salida estndard todos
aquellos que
# encuentre.
for file in *
do
if grep -q include $file
then
more $file
fi
done
exit 0

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

110

Creando un directorio y copiando los scripts ejecutables al directorio.


$
$
$
$

chmod +x prueba1.sh
mkdir util
mv prueba1.sh util
PATH=$HOME/util:$PATH

Variables de ambiente.
Variable de ambiente. Descripcin.
$HOME
El directorio home del usuario.
$PATH
La lista de directorios separada por dos puntos para la
bsqueda de comandos.
$PS1
El prompt.
$PS2
Un prompt secundario, usado cuando se requiere una
entrada adicional.
$IFS
Un campo separador de entradas. Una lista de caracteres
que son usados para separar palabras cuando el shell est
leyendo una entrada.
$0
Si se est ejecutando un script, el nombre del script.
$#
El nmero de parmetros pasados a un script.
$$
El identificador del proceso
$ saludo=Hola
$ echo $saludo
Hola
$ saludo="que tal"
$ echo $saludo
que tal
$ saludo=6+3
$ echo $saludo
6+3

Comillas.
Normalmente los parmetros estn separados por espacios en blanco, si se quiere
que un parmetro contenga uno o ms espacios en blanco, se deben de usar
comillas.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

111

# prueba2.sh
myvar="Hola a todos"
echo $myvar
echo "$myvar"
echo '$myvar'
echo \$myvar
echo Dame un texto
read myvar
echo '$myvar' ahora es igual a $myvar
exit 0

$ prueba2.sh
Hola a todos
Hola a todos
$myvar
$myvar
Dame un texto
Adios a todos
$myvar ahora es igual a Adios a todos
Variables parmetros
Si el script es llamado con parmetros, algunas variables adicionales son creadas.
Aunque no se pasen parmetros, la variable de ambiente $# se pasa con el valor de
0.
Variable parmero. Descripcin.
$1, $2, ...
Los parmetros que son pasados al script.
$*
Una lista de parmetros, un una sola variable, separada por el
primer carcter en la variable de ambiente IFS.
$G
Una variacin en $*, que no usan la variable IFS.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

112

$ IFS=''
$ set uno dos tres
$ echo "$@"
uno dos tres
$ echo "$*"
unodostres
$ IFS=' '
$ echo "$*"
uno dos tres
# prueba3.sh
saludo="Hola"
echo $saludo
echo "Estamos corriendo el programa $0"
echo "El segundo parmetro es $2"
echo "El primer parmetro es $1"
echo "La lista de parmetros es $*"
echo "El directorio del usuario es $HOME"
echo "Teclea un nuevo saludo"
read saludo
echo $saludo
echo "Aqu termina el script."
exit 0

$ prueba3.sh uno dos tres


Hola
Estamos corriendo el programa /home/jluis/util/prueba3.sh
El segundo parmetro es dos
El primer parmetro es uno
La lista de parmetros es uno dos tres
El directorio del usuario es /home/jluis
Teclea un nuevo saludo
Buenos Das
Buenos Das
Aqu termina el script.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

113

Condiciones.
El comando test o [].
Introduciremos el comando test usando una de las condiciones ms simples:
checando para ver si un archivo existe.
if test f hola.c
then
...
fi
O se puede escribir
if [ -f hola.c]
then
...
fi
O bien podemos poner then en la misma lnea.
if [ -f hola.c]; then
...
fi
Comparacin de cadenas de caracteres.
Comparacin de cadenas
Cadena
Cadena1=Cadena2
Cadena1!=Cadena2
-n Cadena
-z Cadena

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

Resultado
Verdadero si la cadena no est vaca.
Verdadero si las cadenas son iguales.
Verdadero si las cadenas no son iguales.
Verdadero si la cadena no es nula.
Verdadero si la cadena es nula (una cadena vaca).

114

Comparacin aritmtica.
Comparacin aritmtica
Expresin1 eq Expresin2
Expresin1 ne Expresin2
Expresin1 gt Expresin2

Resultado
Verdadero si las expresiones son iguales.
Verdadero si las expresiones no son iguales.
Verdadero si Expresin1 es mayor a
Expresin2.
Expresin1 ge Expresin2 Verdadero si Expresin1 es mayor o igual a
Expresin2.
Expresin1 lt Expresin2 Verdadero si Expresin1 es menor a
Expresin2.
Expresin1 le Expresin2 Verdadero si Expresin1 es menor o igual a
Expresin2.
! Expresin
El operador ! niega la expresin y regresa
verdadero si la expresin es falta y viceversa.

Condiciones de archivos.
Condiciones de
archivos
-d archivo
-e archivo
-f archivo
-g archivo
-r archivo
-s archivo
-u archivo
-w archivo
-x archivo

Resultado
Verdadero si el archivo es un directorio.
Verdadero si el archivo existe.
Verdadero si el archivo es un archivo.
Verdadero si el identificador de grupo est establecido en el
archivo.
Verdadero si el archivo tiene permisos de lectura.
Verdadero si el archivo tiene tamao diferente de cero.
Verdadero si el identificador de usuario est establecido en el
archivo.
Verdadero si el archivo tiene permisos de escritura.
Verdadero si el archivo es ejecutable.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

115

Estructuras de control.
if condicin
then
sentencias
else
sentencias
fi
for variable in valores
do
sentencias
done
while condicin
do
sentencias
done
until condicin
do
sentencias
done

4.2.2.- Los scripts de inicializacin.


A parte de los scripts que puede crear, hay un nmero de estos que usa el intrprete
de comandos para ciertos propsitos. Los ms importantes son sus scripts de
inicializacin, scripts automticamente ejecutados por el intrprete al abrir una
sesin.
Los scripts de inicializacin son eso, simples scripts como los descritos arriba. De
cualquier modo, son muy tiles para la inicializacin de su entorno al ejecutarse
automticamente. Por ejemplo, si siempre usa la orden Mail para comprobar si tiene
correo al iniciar una sesin, incluya en su script de inicializacin dicha orden y ser
ejecutada automticamente.
Tanto Bash como Tcsh distinguen entre un intrprete de presentacin y otras
invocaciones del intrprete. Un intrprete de presentacin es el que se ejecuta en el
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

116

momento de la presentacin al sistema (login). Es el nico que usara. De cualquier


modo, si ejecuta una opcin de salir a un intrprete desde algn programa, como vi,
inicializa otra instancia del intrprete de comandos, el cual no es su interprete de
presentacin. Adems, en cualquier momento que ejecuta un script,
automticamente esta arrancando otro intrprete que va a ser el encargado de
ejecutar el script.
Los archivos de inicializacin usados por Bash son: /etc/profile (configurado
por el administrador del sistema, y ejecutado por todos los usuarios de Bash en el
momento de la presentacin al sistema), $HOME/.bash_profile (ejecutado por
una sesin de presentacin Bash) y $HOME/.bashrc (ejecutadas por todas las
sesiones Bash que no son de presentacin). Si .bash_profile no esta presente,
se usa en su lugar .profile.
Tcsh usa los siguientes scripts de inicializacin: /etc/csh.login (ejecutado por
todos los usuarios de Tcsh en el momento de la presentacin al sistema),
$HOME/.tcshrc (ejecutado en la presentacin al sistema por todas las instancias
nuevas de Tcsh) y $HOME/.login (ejecutado en la presentacin al sistema, seguido
.tcshrc). Si .tcshrc no esta presente, .cshrc se usa en su lugar.
Para entender completamente la funcin de estos archivos, necesitar aprender mas
acerca del intrprete de comandos. La programacin de scripts es una materia
complicada. Lea las pginas de manual de bash y/o tcsh para aprender ms sobre
la configuracin de su entorno.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

117

4.3.- Control de procesos.


4.3.1.- Procesos en el sistema.
Tareas y procesos
Control de Tareas es una utilidad incluida en muchos shells (incluidas Bash y Tcsh),
que permite el control de multitud de comandos o tareas al momento. Antes de
seguir, deberemos hablar un poco sobre los procesos.
Cada vez que usted ejecuta un programa, usted lanza lo que se conoce como
proceso, que es simplemente el nombre que se le da a un programa cuando se esta
ejecutando. El comando ps visualiza la lista de procesos que se estn ejecutando
actualmente, por ejemplo:
/home/larry# ps
PID TT STAT
24
3 S
161 3 R

TIME COMMAND
0:03 (bash)
0:00 ps

/home/larry#

La columna PID representa el identificador de proceso. La ultima columna COMMAND,


es el nombre del proceso que se esta ejecutando. Ahora solo estamos viendo los
procesos que esta ejecutando Larry. Vemos que hay dos procesos, bash (Que es el
shell o interprete de comandos que usa Larry), y el propio comando ps. Como puede
observar, bash se ejecuta concurrentemente con el comando ps. El bash ejecut ps
cuando Larry tecleo el comando. Cuando ps termina de ejecutarse (despus de
mostrar la tabla de procesos), el control retorna al proceso bash, que muestra el
prompt, indicando que esta listo para recibir otro comando.
Un proceso que esta corriendo se denomina tarea para el shell. Los trminos proceso
y tarea, son intercambiables. Sin embargo, se suele denominar "tarea" a un proceso,
cuando es usado en conjuncin con control de tareas, que es un rasgo del shell que
permite cambiar entre distintas tareas.
En muchos casos, los usuarios solo ejecutan un trabajo cada vez, que es el ltimo
comando que ellos teclearon desde el shell. Sin embargo, usando el control de
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

118

tareas, usted podr ejecutar diferentes tareas al mismo tiempo, cambiando entre
cada uno de ellos conforme lo necesite.
>Cuan beneficioso puede llegar a ser esto?.
Supongamos que esta usted con su procesador de textos, y de repente necesita
parar y realizar otra tarea, con el control de tareas, usted podr suspender
temporalmente el editor, y volver al shell para realizar cualquier otra tarea, y luego
regresar al editor como si no lo hubiese dejado nunca.
Lo siguiente solo es un ejemplo, hay montones de usos prcticos del control de
tareas.

Primer plano y Segundo plano


Un proceso puede estar en Primer plano o en Segundo plano. Solo puede haber un
proceso en primer plano al mismo tiempo, el proceso que esta en primer plano, es el
que interacta con usted recibe entradas de teclado, y enva las salidas al monitor.
(Salvo, por supuesto, que haya re-dirigido la entrada o la salida). El proceso en
segundo plano, no recibe ninguna seal desde el teclado por lo general, se ejecutan
en silencio sin necesidad de interaccin.
Algunos programas necesitan mucho tiempo para terminar, y no hacen nada
interesante mientras tanto. Compilar programas es una de estas tareas, as como
comprimir un archivo grande. No tiene sentido que se siente y se aburra mientras
estos procesos terminan. En estos casos es mejor lanzarlos en segundo plano, para
dejar la computadora en condiciones de ejecutar otro programa.
Los procesos pueden ser suspendidos. Un proceso suspendido es aquel que no se
est ejecutando actualmente, sino que est temporalmente parado. Despus de
suspender una tarea, puede indicar a la misma que contine, en primer plano o en
segundo, segn necesite. Retomar una tarea suspendida no cambia en nada el
estado de la misma la tarea continuara ejecutndose justo donde se dejo.
Tenga en cuenta que suspender un trabajo no es lo mismo que interrumpirlo. Cuando
usted interrumpe un proceso (generalmente con la pulsacin de <ctrl-C>, el proceso
muere, y deja de estar en memoria y utilizar recursos del computadora. Una vez
eliminado, el proceso no puede continuar ejecutndose, y deber ser lanzado otra
vez para volver a realizar sus tareas. Tambin se puede dar el caso de que algunos
programas capturan la interrupcin, de modo que pulsando <ctrl-C> no se para
inmediatamente. Esto se hace para permitir al programa realizar operaciones
necesarias de limpieza antes de terminar7. De hecho, algunos programas
simplemente no se dejan matar por ninguna interrupcin.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

119

Envo a segundo plano y eliminacin de procesos


Empecemos con un ejemplo sencillo. El comando yes es un comando
aparentemente intil que enva una serie interminable de y-es a la salida estndar.
(Realmente es muy til. Si se utiliza una tubera (o "pipe") para unir la salida de yes
con otro comando que haga preguntas del tipo si/no, la serie de y-es confirmar
todas las preguntas.)
Pruebe con esto.
/home/larry# yes
y
y
y
y
y

La serie de y-es continuar hasta el infinito, a no ser que usted la elimine, pulsando la
tecla de interrupcin, generalmente <ctrl-C>. Tambin puede deshacerse de est
serie de y-es redigiriendo la salida estndar de yes hacia /dev/null, que como
recordar es una especie de "agujero negro" o papelera para los datos. Todo lo que
usted enve alli, desaparecer.
/home/larry# yes > /dev/null
Ahora va mucho mejor, el terminal no se ensucia, pero el prompt del shell no retorna.
Esto es porque yes sigue ejecutndose y enviando esos intiles y-es a /dev/null.
Para recuperarlo, pulse la tecla de interrupcin.
Supongamos ahora que queremos dejar que el comando yes siga ejecutndose, y
volver al mismo tiempo al shell para trabajar en otras cosas. Para ello nos
enviaremos a yes a segundo plano, lo que nos permitir ejecutarlo, pero sin
necesidad de interaccin.
Una forma de mandar procesos a segundo plano es aadiendo un carcter "&" al final
de cada comando.
/home/larry# yes > /dev/null &
[1] 164
/home/larry#
Como podr ver, ha regresado al shell.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

120

>Pero que es eso de "[1] 164"?,


>se esta ejecutando realmente el comando yes?
"[1]" representa el nmero de tarea del proceso yes. El shell asigna un numero a
cada tarea que se est ejecutando. Como yes es el nico comando que se est
ejecutando, se le asigna el numero de tarea 1.
El numero "164" es el nmero de identificacin del proceso, o PID, que es el numero
que el sistema le asigna al proceso. Ambos nmeros pueden usarse para referirse a
la tarea como veremos despus.
Ahora usted tiene el proceso yes corriendo en segundo plano, y enviando
constantemente la seal y hacia el dispositivo /dev/null. Para chequear el estado
del proceso, utilice el comando interno de la shell jobs:
/home/larry# jobs
[1]+
Running
/home/larry#

yes >/dev/null

&

Ah esta!. Tambin puede usar el comando ps, como mostramos antes, para
comprobar el estado de la tarea.
Para eliminar una tarea, utilice el comando kill. Este comando toma como
argumento un nmero de tarea o un numero de ID de un proceso. Esta era la tarea 1,
as que usando el comando
/home/larry# kill %1
matara la tarea. Cuando se identifica la tarea con el numero de tarea, se debe
preceder el numero con el carcter de porcentaje (%").
Ahora que ya hemos matado la tarea, podemos usar el comando jobs de nuevo
para comprobarlo:
/home/larry# jobs
[1]+

Terminated

yes >/dev/null

/home/larry#

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

121

La tarea est, en efecto, muerta, y si usa el comando jobs de nuevo, no mostrar


nada.
Tambin podr matar la tarea usando el numero de ID de proceso (PID), el cual se
muestra conjuntamente con el ID de tarea cuando arranca la misma. En nuestro
ejemplo el ID de proceso es 164, as que el comando
/home/larry# kill 164
es equivalente a
/home/larry# kill %1
No es necesario usar el "%" cuando nos referimos a una tarea a traves de su ID de
proceso.

Parada y relanzamiento de tareas


Hay otra manera de poner una tarea en segundo plano. Usted puede lanzarlo como
un proceso normal (en primer plano), pararlo, y despus relanzarlo en segundo
plano.
Primero, lance el proceso yes en primer plano como lo hara normalmente:
/home/larry# yes > /dev/null
De nuevo, dado que yes corre en primer plano, no debe retornar el prompt de la shell.
Ahora, en vez de interrumpir la tarea con <ctrl-C>, suspenderemos la tarea. El
suspender una tarea no la mata: solamente la detiene temporalmente hasta que Ud.
la retoma. Para hacer esto usted debe pulsar la tecla de suspender, que suele ser
<ctrl-Z>.
/home/larry# yes > /dev/null
<ctrl-Z>
[1]+
Stopped
/home/larry#

yes >/dev/null

Mientras el proceso est suspendido, simplemente no se esta ejecutando. No gasta


tiempo de CPU en la tarea. Sin embargo, usted puede retomar el proceso de nuevo
como si nada hubiera pasado. Continuara ejecutndose donde se dejo.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

122

Para relanzar la tarea en primer plano, use el comando fg (del ingles "foreground").
/home/larry# fg
yes >/dev/null
El shell muestra el nombre del comando de nuevo, de forma que tenga conocimiento
de que tarea es la que ha puesto en primer plano. Pare la tarea de nuevo, con <ctrlZ>. Esta vez utilice el comando bg para poner la tarea en segundo plano. Esto har
que el comando siga ejecutndose igual que si lo hubiese hecho desde el principio
con "&" como en la seccin anterior.
/home/larry# bg
[1]+ yes >/dev/null &
/home/larry#
Y tenemos de nuevo el prompt. El comando jobs debera decirnos que yes se est
ejecutando, y podemos matar la tarea con kill tal y como lo hicimos antes.
>Como podemos parar la tarea de nuevo?
Si pulsa <ctrl-Z> no funcionar, ya que el proceso est en segundo plano. La
respuesta es poner el proceso en primer plano de nuevo, con el comando fg, y
entonces pararlo. Como puede observar podr usar fg tanto con tareas detenidas,
como con las que estn segundo plano.
Hay una gran diferencia entre una tarea que se encuentra en segundo plano, y una
que se encuentra detenida. Una tarea detenida es una tarea que no se esta
ejecutando, es decir, que no usa tiempo de CPU, y que no esta haciendo ningn
trabajo (la tarea aun ocupa un lugar en memoria, aunque puede ser volcada a disco).
Una tarea en segundo plano, se esta ejecutando, y usando memoria, a la vez que
completando alguna accin mientras usted hace otro trabajo. Sin embargo, una tarea
en segundo plano puede intentar mostrar texto en su terminal, lo que puede resultar
molesto si esta intentando hacer otra cosa. Por ejemplo, si usted uso el comando
/home/larry# yes &
sin redirigir stdout a /dev/null, una cadena de y-es se mostraran en su monitor, sin
modo alguno de interrumpirlo (no puede hacer uso de <ctrl-C> para interrumpir tareas
en segundo plano). Para poder parar esas interminables y-es, tendra que usar el
comando fg para pasar la tarea a primer plano, y entonces usar |_ctrl-C_ |para
matarla.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

123

Otra observacin. Normalmente, los comandos "fg" y "bg" actan sobre el ltimo
proceso parado (indicado por un "+" junto al nmero de tarea cuando usa el comando
jobs). Si usted tiene varios procesos corriendo a la vez, podr mandar a primer o
segundo plano una tarea especifica indicando el ID de tarea como argumento de fg
o bg, como en
/home/larry# fg %2
(para la tarea de primer plano numero 2), o
/home/larry# bg %3
(para la tarea de segundo plano numero 3). No se pueden usar los ID de proceso con
fg o bg.
Adems de esto, si usa el numero de tarea por si solo, como :
/home/larry# %2
es equivalente a :
/home/larry# fg %2

Solo recordarle que el uso de control de tareas es una utilidad de la shell. Los
comandos fg, bg y jobs son internos del shell. Si por algn motivo usted utiliza un
shell que no soporta control de tareas, no espere disponer de estos comandos.
Y adems, hay algunos aspectos del control de tareas que difieren entre Bash y
Tcsh. De hecho, algunos shells no proporcionan ningn control de tareas sin
embargo, la mayora de las shells disponibles para Linux soportan control de tareas.

4.3.2.- Corriendo comandos en tiempos especificados.


El comando at
Formatos del comando :
Para planificar una tarea para la hora (hh) y el minuto (mm) indicados, utilizando un
reloj de 24 horas.
at hh:mm
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

124

Para planificar un trabajo para la hora (hh), minuto (mm), mes, da y ao indicados.
at hh:mm mes da ao

Para listar los trabajos indicados; es un alias de la orden atq.


at l

Planifica un trabajo para el momento actual ms el valor numrico en unidades de


tiempo.
at now +count time-units

Cancela el trabajo que contenga un nmero de trabajo igual a job_id; es un alias


de la orden atrm.
at d job_id
Para planificar una o ms rdenes para un momento determinado, utilice la orden at.
Con ella puede determinar la hora y la fecha o ambas a la vez.
El siguiente ejemplo ejecuta su tarea a la 1:23 AM. Si est trabajando antes de la
hora especificada, el trabajo se ejecuta el mismo da, de lo contrario se ejecutar
hasta el da siguiente.
# at 1:23
>lp /usr/sales/reports/*
>echo Archivos impresos | mail s trabajo realizado boss
<ctrl-D>
job 756603300.a at Tues Jan 21 01:23:00 1997
El nmero de tarea, 756603300.a sirve para identificarla. Si se decide cancelar la
tarea hay que hacerlo de la siguiente forma :
$ at d 756603300.a

Tambin se puede indicar una fecha para un trabajo. Por ejemplo, para planificar un
trabajo a las 5:00 PM del 24 de enero, solo hay que escribir lo siguiente :
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

125

# at 17:00 Jan 24
>lp /usr/sales/reports/*
>echo Archivos impresos | mail s trabajo realizado boss
><ctrl-D>

Si se quiere planificar varias rdenes con at, lo mejor es almacenarlas en un archivo.


Si el nombre del archivo es getdone, por ejemplo, y se quieren planificar rdenes
para las 10:00 AM, hay que escribir :
$ at 10:00 <getdone
o tambin :
$ at 10:00 f getdone

Ejecucin de tareas largas con batch


El comando batch deja que sea el sistema operativo quien decida el momento
adecuado para ejecutar el proceso. Cuando planifica un trabajo con batch, linux
comienza y trabaja en el proceso siempre que la carga del sistema no sea demasiado
alta. Las tareas que se ejecutan con batch lo hacen en segundo plano al igual que
at. De hecho batch es un alias del comando at b en la distribucin de Red-Hat
Linux.
El formato de batch est compuesto por la lista de rdenes que siguen al comando
batch; la lista termina con la secuencia <ctrl-D>.
Ejemplo :
# batch
>sort /usr/sales/reports/* | lp
>echo Archivos impresos | mail s Trabajo realizado boss
><ctrl-D>
job 7789001234.b at Fri Feb 21 11:43:09 1997

Planificacin de rdenes con cron y crontab


Para planificar rdenes o procesos de forma regular, utilice el programa cron. Debe
de indicar las fechas y las horas en las que se desea que se ejecute una orden
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

126

dentro de archivos crontab. Los tiempos se pueden indicar en minutos, horas, das
del mes, meses del ao o das de la semana.
El demonio cron
No es un comando ; es un "demonio" , proceso que se arranca al encender la
mquina y est permanentemente activo. Su misin es inspeccionar cada minuto los
archivos crontab de los usuarios y ejecutar los comandos que all se digan a los
intervalos horarios que hayamos marcado. Como se acaba se sealar , los crontab
son dependientes de cada usuario.
Se deben seguir los siguientes pasos para modificar , aadir borrar un archivo
crontab :
1 - Sacarlo a archivo usando el comando "crontab -l >/tmp/mio" , por ejemplo.
2 - Modificarlo con un editor de acuerdo a las instrucciones de formato que se
explican a continuacin.
3 - Registrar el nuevo archivo mediante el comando "crontab /tmp/mio" , por
ejemplo.
mira cada minuto el directorio /var/spool/crontabs y ejecuta los comandos
El archivo crontab
El formato del archivo es el siguiente :
#minutos horas dia mes mes dia-semana comando ( # = comentario )

minutos : de 0 a 59.
horas : de 0 a 23.
dia del mes : de 0 a 31.
mes : de 0 a 12.
da semana : de 0 a 6 ( 0 = domingo , 1 = lunes ...)
Aparte de la especificacin normal , pueden utilizarse listas , es decir , rangos de
valores de acuerdo con las siguientes reglas :
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

127

8-11 : Rango desde las 8 hasta las 11 ambas inclusive.


8,9,10,11 : Igual que antes ; desde las 8 hasta las 11.
Si queremos incrementar en saltos diferentes de la unidad , podemos escribir la barra
"/" :
0-8/2 : Desde las 12 hasta las 8 cada 2 horas. Equivale a 0,2,4,6,8 .
El asterisco significa "todas" "todo". Por tanto :
*/2 : Cada dos horas.
Ejemplos ms evidentes :
# ejecutar una salvita todos los dias 5 minutos despues de las 12 de la
noche :
5 0 * * * /home/salvas/diaria.sh 1>>/home/salvas/log 2>&1
# ejecutar a las 2:15pm el primer dia de cada mes:
15 14 1 * * /home/salvas/mensual.sh 1>/dev/null 2>&1
# ejecutar de lunes a viernes a las diez de la noche - apagar la maquina
que es muy tarde
0 22 * * 1-5 shutdown -h now 1>/dev/null 2>&1
# ejecutar algo cada minuto
* * * * * /home/cosas/espia.sh

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

128

4.3.3.- Planificacin de la prioridad de los procesos.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

129

4.4.- Utileras.
4.4.1.- Encontrando archivos y texto.
Por ltimo , veremos un comando de utilidad simililar a "ls" pero con mas opciones ;
el comando "find" muestra en pantalla directorios y/o archivos atendiendo a
opciones determinadas . Si bien la sintaxis es demasiado extensa para estudiarla en
su totalidad , conviene ver algunos
ejemplos :
El comando toma como argumentos declaraciones en el formato
find <directorio base> <opciones> [-print]
Por tanto , para sacar en pantalla todos los archivos y directorios del disco , valdra
con :
# find / -print
- Si se desean slo archivos slo directorios :
# find / -type f -print

# find / -type d -print


respectivamente.
Buscar todos los archivos y directorios que tengan ms de 30 das de antigedad :
# find / -atime +30 -print
El resto de las opciones sirve para buscar archivos con determinados permisos ,
mayores menores que un determinado tamao.

4.4.2.- Respaldando archivos.


Utilizando tar
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

130

El comando tar es utilizado normalmente para archivar archivos .El formato del
comando tar es :
tar opciones archivo1 archivo2 ...archivoN
donde opciones es la lista de comandos y opciones para tar, y archivo1 hasta
archivoN es la lista de archivos a aadir o extraer del archivo.
Por ejemplo, el comando :
# tar cvf backup.tar /etc
empaquetar todos los archivos de /etc en el archivo tar backup.tar.
El primer argumento de tar "cvf" es el "comando" tar. "c" le dice a tar que cree un
nuevo archivo de archivo.
La opcion "v" fuerza a tar en el modo detallado imprimiendo los nombres de los
archivos segn se archivan.
La opcion "f" le dice a tar que el siguiente argumento backup.tar es el nombre del
archivo a crear.
El resto de los argumentos de tar son los nombres de archivos y directorios a aadir
al archivo.
El comando
# tar xvf backup.tar

extraer el archivo tar backup.tar en el directorio actual. Esto puede ser peligroso
a veces cuando se extraen archivos de un archivo tar, los archivos antiguos se
sobreescriben.
Por otra parte, antes de extraer archivos tar es importante conocer donde se deben
desempaquetar los archivos. Por ejemplo, digamos que se archivaron los siguientes
archivos: /etc/hosts,/etc/group, y /etc/passwd. Si se uso el comando :
# tar cvf backup.tar /etc/hosts /etc/group /etc/passwd

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

131

el nombre de directorio /etc se aadi al principio de cada nombre de archivo. Para


poder extraer los archivos en la localizacin correcta, se necesitara utilizar los
siguientes comandos:
# cd /
# tar xvf backup.tar

Puesto que los archivos se extraen con el nombre de camino almacenado en el


archivo de archivo.
Sin embargo, si se archivaron los archivos con los comandos
# cd /etc
# tar cvf hosts group passwd
Los nombres de directorio no se salvaron en el archivo de archivo. Por esto se
necesitara hacer "cd /etc" antes de extraer los archivos. Como se puede ver, el
como haya sido creado un archivo tar marca una gran diferencia en como se extrae.
Se puede usar el comando :
# tar tvf backup.tar
para mostrar un "ndice" del archivo tar antes de desempaquetarlo. De esta forma se
puede ver que directorio se utiliz como origen de los nombres de los archivos, y se
puede extraer el archivo desde la localizacin correcta.
Los comandos gzip y compress
A diferencia de los programas de archivo para MS-DOS, tar no comprime
automticamente los archivos segn los archiva. Por ello, si se estn archivando dos
archivos de un megabytes, el archivo tar resultante tendr dos megabytes. El
comando gzip puede utilizarse para comprimir un archivo (el archivo a comprimir no
necesita ser un archivo tar). El comando :
# gzip -9 backup.tar

comprimir backup.tar y le dejara con backup.tar.gz, que es la versin


comprimida del archivo.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

132

La opcion -9 le dice a gzip que utilice el mayor factor de compresin.


El comando gunzip puede ser utilizado para descomprimir un archivo comprimido
con gzip. Equivalentemente, se puede utilizar "gzip -d".
gzip es una herramienta relativamente nueva en la comunidad UNIX. Durante
muchos aos, se utiliz en su lugar el comando compress. Sin embargo, debido a
varios factores, compress se esta volviendo desfasado.
Los archivos comprimidos con compress terminan en la extensin .Z. Por ejemplo,
backup.tar.Z es la versin comprimida con compress de backup.tar, mientras
que backup.tar.gz es la versin comprimida con gzip. El comando uncompress
se utiliza para expandir un archivo comprimido con compress; gunzip sabe tambin
como tratar los archivos comprimidos con compress.

Juntndolo todo
Por lo tanto, para archivar un grupo de archivos y comprimir el resultado, se pueden
utilizar los comandos:
# tar cvf backup.tar /etc
# gzip -9 backup.tar

El resultado ser backup.tar.gz. Para desempaquetar este archivo, se usan los


comandos contrarios:
# gunzip backup.tar.gz
# tar xvf backup.tar
Por supuesto, asegrese siempre de que esta en el directorio correcto antes de
desempaquetar un archivo tar.
Se pueden utilizar algunas maas de UNIX para hacer todo esto en una sola lnea de
comando, como por ejemplo:
# tar cvf - /etc | gzip -9c > backup.tar.gz
Aqui estamos enviando el archivo tar a "-", que representa la salida estndar de tar.
Esto es encolado hacia gzip, que comprime el archivo tar de entrada, y el resultado

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

133

se salva en backup.tar.gz. La opcion -c de gzip le dice que enve su salida


hacia la salida estndar, que es redirigida a backup.tar.gz.
Un comando nico para desempaquetar este archivo seria:
# gunzip -c backup.tar.gz | tar xvf -

De nuevo, gunzip descomprime el contenido de backup.tar.gz y enva el archivo


tar resultante hacia la salida estndar. Esta es redirigida hacia tar, que lee de "-",
refirindose esta vez a la entrada estndar de tar.
Felizmente, el comando tar tambin incluye la opcion z para comprimir /
descomprimir automticamente los archivos al vuelo, utilizando el algoritmo de
compresin de gzip.
Por ejemplo, el comando
# tar cvfz backup.tar.gz /etc

es equivalente a :
# tar cvf backup.tar /etc
# gzip backup.tar

Igual que el comando


# tar xvfz backup.tar.Z

se puede utilizar en vez de :


# uncompress backup.tar.Z
# tar xvf backup.tar

Usando Diskettes y Haciendo Copias de Seguridad


Los diskettes son utilizados normalmente como medio para copias de seguridad. Si
no se tiene una unidad de cinta conectada al sistema, se pueden utilizar diskettes (a
pesar de que sean mas lentos y ligeramente menos seguros).
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

134

Tambin puede utilizar diskettes para contener sistemas de archivos individuales de


esta forma, se puede montar mount el diskette para acceder a los datos contenidos
en el.

Utilizando diskettes para copias de seguridad


La forma mas simple de hacer una copia de seguridad es con tar.
El comando :
# tar cvfzM /dev/fd0 /

har una copia de seguridad completa de su sistema utilizando el diskette /dev/fd0.


La opcion "M" de tar permite que la copia de seguridad sea una copia multi-volumen;
esto es, cuando un diskette est lleno, tar pedir el siguiente.
El comando :
# tar xvfzM /dev/fd0
puede ser utilizado para recuperar la copia de seguridad completa. Este mtodo
puede ser utilizado tambin si se tiene una unidad de cinta (/dev/rmt0) conectada
al sistema.
Existen otros programas para hacer copias de seguridad multi-volumen; el programa
backflops disponible en tsx-11.mit.edu puede ser til.
Hacer una copia de seguridad completa del sistema puede ser costoso en tiempo y
recursos. Muchos administradores de sistemas utilizan una poltica de copias de
seguridad incremntales, en la que cada mes se hace una copia de seguridad
completa, y cada semana solo se copian aquellos archivos que hayan sido
modificados en esa semana. En este caso, si el sistema se viene abajo a mitad de
mes, solo tiene que restaurar la ultima copia de seguridad mensual completa y,
despus, las ultimas copias semanales segn el caso.
El comando find puede ser til para localizar archivos que hayan cambiado desde
una cierta fecha. Se pueden encontrar varios archivos de comandos para manejar
copias de seguridad incremntales en sunsite.unc.edu.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

135

Utilizando diskettes como sistemas de archivos


Puede crearse un sistema de archivos en un diskette igual que lo hara en una
particin de un disco duro. Por ejemplo :
# mke2fs /dev/fd0 1440
crea un sistema de archivos en el diskette en /dev/fd0 .
El tamao del sistema de archivos debe corresponder al tamao del diskette. Los
diskettes de alta densidad de 3.5" tienen un tamao de 1.44 megabytes, o 1440
bloques. Los diskettes de alta densidad de 5.25" tienen 1200 bloques.
Para poder acceder a un diskette, se debe montar el sistema de archivos que
contiene.
Esto se puede hacer con el comando mount de la siguiente forma :
# mount -t ext2 /dev/fd0 /mnt
montar el diskette /dev/fd0 en el directorio /mnt. Ahora todos los archivos del
diskette aparecern bajo /mnt en su unidad. "-t ext2" especifica el tipo de
sistema de archivos como ext2fs. Si crea otro tipo de sistema de archivos en el
diskette, necesitara especificrselo al comando mount.
El "punto de montaje" (el directorio donde esta montando el sistema de archivos)
debe existir en el momento de utilizar el comando mount. Si no existiese, deba
crearlo con el comando mkdir.
Tenga en cuenta que cualquier entrada/salida al diskette se gestiona con
buffers igual que si fuese de disco duro. Si cambia datos en el diskette,
puede que no vea encenderse la luz de la unidad hasta que el nucleo decida
vaciar sus buffers. Es importante que no quite un diskette antes de haberlo
desmontado; esto puede hacerse con el comando :
# umount /dev/fd0
No cambie los diskettes como se hace en un sistema MS-DOS; siempre que
cambie diskettes, desmonte el primero y monte el siguiente.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

136

4.5.- Software de administracin de paquetes.


4.5.1.- Instalacin de paquetes.
Manejo de paquetes con RPM
Red Hat Package Manager (RPM), es un sistema abierto de empaquetamiento
disponible para cualquiera que quiera usarlo, que funciona tanto en Linux Red Hat
como en otros sistemas Linux y UNIX. Red Hat Software invita a los dems
distribuidores a que analicen RPM y lo usen en sus propios productos. RPM se
distribuye bajo los trminos de la GPL (General Public License).
RPM proporciona al usuario final gran cantidad de caractersticas que hacen el
mantenimiento del sistema algo mucho mas fcil de lo que nunca haba sido. Instalar,
desinstalar, y actualizar paquetes RPM son todo rdenes de una sola lnea, y todos
los sucios detalles son eliminados de su presencia. RPM mantiene una base de datos
de los paquetes instalados y de sus archivos, lo que permite realizar potentes
consultas y verificaciones del sistema. Durante las actualizaciones, RPM maneja los
archivos de configuracin de manera especial, para que nunca pierda sus ajustes -una cualidad que sera imposible con el uso de los archivos .tar.gz.
RPM permite al desarrollador tomar el cdigo fuente del programa y empaquetarlo
dentro de los paquetes de archivos binarios y de fuentes para el usuario final. Este
proceso es bastante sencillo y es gestionado mediante un nico archivo, y
opcionalmente mediante las actualizaciones que se desarrollen. Esta clara definicin
de fuentes prstinas'', de sus actualizaciones y de las instrucciones de construccin,
facilita el mantenimiento de los paquetes as como de las nuevas versiones del
software conforme van siendo publicadas.

Objetivos al disear RPM


Antes de intentar comprender el uso de RPM, es bueno tener una idea de cuales son
los objetivos en su diseo.
Capacidad de actualizacin : Con RPM puede actualizar componentes individuales
de su sistema sin necesidad de una reinstalacin completa del mismo. Cuando
obtenga una nueva versin de un sistema operativo basado en RPM (como Linux
Red Hat), no tiene la necesidad de reinstalar su ordenador (como tiene que hacer
con otros sistemas operativos basados en otros sistemas de empaquetamiento).
RPM permite actualizaciones inteligentes y completamente automatizadas de su
sistema. Los archivos de configuracin de los paquetes son protegidos a lo largo
de las actualizaciones, por lo que usted no perder sus configuraciones.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

137

Consultas potentes : RPM tambin est diseado para tener potentes opciones de
consulta. Usted puede hacer bsquedas de paquetes o de ciertos archivos a
travs de la base de datos en su totalidad. Usted puede tambin investigar a qu
paquete pertenece un archivo y de dnde proviene ste. Los archivos contenidos
en un paquete RPM se encuentran en formato comprimido, habitualmente con una
cabecera del archivo binario que contiene informacin til acerca del paquete y su
contenido, permitindole buscar paquetes individuales rpida y fcilmente.
Verificaciones del sistema : Otra caracterstica importante es la capacidad de
verificar paquetes. Si usted est preocupado porque ha borrado un archivo
importante de algn paquete, simplemente verifique el paquete. Usted ser
notificado de las anomalas. Ahora, usted puede reinstalar el paquete si es
necesario. Cualquier archivo de configuracin que usted hubiera modificado se
mantendr durante la reinstalacin.
Fuentes prstinas : Un objetivo crucial a la hora del diseo fue el permitir el uso de
la fuentes de codigo prstinas'', tal y como son distribuidas por los autores
originales del software. Con RPM, usted tiene las fuentes prstinas as como
cualquier actualizacin que fuera usada, mas instrucciones completas de
construccin. Esto es una gran ventaja por muchas razones. Por ejemplo, si
aparece una nueva versin de un programa, no se tiene necesariamente que
empezar desde el principio para compilarlo. Se pueden mirar las actualizaciones
para ver qu debe hacer. Todas las opciones internas de compilacin, y todos los
cambios que fueron hechos para hacer que el software se creara adecuadamente
son fcilmente visibles de esta manera.
Este objetivo puede parecer nicamente importante para los desarrolladores pero
tambin redunda en una mayor calidad de software para el usuario final. Nos gustara
dar las gracias a la gente de la distribucin BOGUS por el concepto original de las
fuentes prstinas.

Usando RPM
RPM tiene cinco modos bsicos de operacin (sin contar la construccin del
paquete): instalacin, desinstalacin, actualizacin, consulta y verificacin. Esta
seccin contiene un vistazo de cada modo. Para opciones y detalles completos
pruebe rpm --help, vea la pgina man'' de rpm.
Instalacin
Los paquetes RPM tienen tpicamente nombres de archivo como foo-1.0-1.i386.rpm,
que incluye el nombre
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

138

del paquete (foo), versin (1.0), desarrollo (1), y arquitectura (i386). Instalar un
paquete es tan sencillo como:
$ rpm -ivh foo-1.0-1.i386.rpm
foo
####################################
Como puede ver, RPM imprime en pantalla el nombre del paquete (el cual no es
necesariamente el mismo que el archivo, el cual puede ser 1.rpm), e imprime una
sucesin de smbolos de rejilla a medida que el paquete es instalado, como un
medidor del progreso de la instalacin.
La instalacin de paquetes est diseada para ser sencilla, pero puede obtener
algunos errores:

Paquete ya instalado
Si el paquete est ya instalado, se ver:
$ rpm -ivh foo-1.0-1.i386.rpm
foo
package foo-1.0-1 is already installed
error: foo-1.0-1.i386.rpm cannot be installed
Si se quiere instalar el paquete de todas maneras, se puede usar --replacepkgs
en la lnea de comandos, lo que le dice a RPM que ignore el error.

Conflicto de archivos
Si intenta instalar un paquete que contiene un archivo que ha sido ya instalado por
algn otro paquete, se ver:
# rpm -ivh foo-1.0-1.i386.rpm
foo
/usr/bin/foo conflicts with file from bar-1.0-1
error: foo-1.0-1.i386.rpm cannot be installed
Para hacer que RPM ignore el error, use --replacefiles en la lnea de
comandos.

Dependencias no resueltas

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

139

Los paquetes RPM pueden depender'' de otros paquetes, lo cual significa que
requieren que otros paquetes sean instalados para funcionar correctamente. Si
intenta instalar un paquete para el cual existe una dependencia no satisfecha, usted
ver:
$ rpm -ivh bar-1.0-1.i386.rpm
failed dependencies:
foo is needed by bar-1.0-1
Para arreglar este error se debern instalar los paquetes requeridos. Si se desea
forzar la instalacin de todas maneras (una mala idea ya que el paquete
probablemente no funcionar correctamente), use nodeps en la lnea de
comandos.

Desinstalacin
Desinstalar un paquete es tan sencillo como instalarlo:
$ rpm -e foo
Notese que hemos usado el nombre foo'' para el paquete, no el nombre del paquete
original foo-1.0-1.i386.rpm''.
Se puede encontrar un error de dependencias cuando intente desinstalar el paquete
si algn otro paquete instalado depende del que est intentando borrar. Por ejemplo:
$ rpm -e foo
removing these packages would break dependencies:
foo is needed by bar-1.0-1
Para hacer que RPM ignore el error y desinstale el paquete de todas maneras (lo
cual es una mala idea porque el paquete que depende de ste probablemente falle y
no funcione correctamente), use --nodeps en la lnea de comandos.

Actualizando
Actualizar un paquete es casi como instalar un paquete.
$ rpm -Uvh foo-2.0-1.i386.rpm
foo
####################################
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

140

Lo que no ve arriba es el hecho de que RPM desinstala automticamente cualquier


versin antigua del paquete foo. De hecho usted quiz quiera siempre usar -U para
instalar paquetes, ya que funciona bien incluso cuando no hay ninguna versin
anterior del paquete instalada.
Dado que RPM realiza actualizaciones inteligentes de los paquetes con archivos de
configuracin, quiz se vea un mensaje como:
saving /etc/foo.conf as /etc/foo.conf.rpmsave
Esto significa que sus cambios al archivo de configuracion puedan no ser
reversiblemente compatibles'' con el nuevo archivo de configuracin en el paquete,
por lo que RPM salva su archivo original, e instala uno nuevo.
Se debera investigar y resolver las diferencias entre los dos archivos tan pronto
como sea posible para asegurarse de que su sistema contina funcionando
adecuadamente.
Dado que actualizar es realmente una combinacin de desinstalacin e instalacin,
usted puede encontar los errores de los dos modos, y uno ms: Si RPM piensa que
est intentando actulizar un paquete con una versin antigua, usted ver:
$ rpm -Uvh foo-1.0-1.i386.rpm
foo
package foo-2.0-1 (which is newer) is already installed
error: foo-1.0-1.i386.rpm cannot be installed
Para obligar a RPM a actualizar'' de todas maneras, use --oldpackage en la lnea
de comandos.

Consulta
Consultar la base de datos de paquetes instalados se realiza mediante la opcin :
rpm -q. Un uso simple es rpm -q foo lo que imprimir el nombre, versin y
nmero de desarrollo del paquete instalado foo:
$ rpm -q foo
rpm-2.0-1
En lugar de especificar el nombre del paquete, se pueden usar las siguientes
opciones con -q para especificar de qu paquete(s) quiere hacer una consulta. stas
son llamadas Opciones de Especificacion de Paquetes (Package Specification
Options).
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

141

-a consulta todos los paquetes instalados.


-f <file> consultar el paquete al que pernenece <file>.
-F es la misma que -f excepto que toma los nombres de archivo de la entrada
estndar (p.e. find /usr/bin | rpm -qF).
-p <packagefile> consulta el paquete <packagefile>.
-P es como -p excepto que toma el nombre de archivo del paquete desde la
entrada estndar (p.e. find /mnt/cdrom/RedHat/RPMS | rpm -qP).
Hay varias formas de especificar qu informacion mostrar sobre los paquetes
consultados. Las siguientes opciones son usadas para seleccionar la informacin en
la que usted est interesado. Son las llamadas Opciones de Seleccin de
Informacin.
-i presenta informacin del paquete como nombre, descripcin, desarrollo, tamao,
fecha de construccin, fecha de instalacin, vendedor, y otra informacin miscelnea.
-l presenta la lista de archivos que el paquete posee.
-s presenta el estado de todos los archivos del paquete. Hay slo dos posibles
estados: normal y perdido.
-d presenta un lista de archivos marcados como documentacin (paginas man,
paginas info, README's, etctera).
-c presenta una lista de archivos marcados como archivos de configuracin. Estos
son los archivos que usted cambia tras la instalacin para adaptar el paquete a su
sistema (sendmail.cf, passwd, inittab, etctera).
Para aquellas opciones que presenten listas de archivos, uste puede aadir -v a la
lnea de comandos para obtener la lista en el conocido formato ls -l.

Verificacin
Verificar un paquete es comparar la informacin sobre los archivos instalados desde
un paquete con la misma informacin del paquete original. Entre otras cosas, verificar
compara el tamao, chequeo MD5, permisos, tipo, usuario y grupo de cada archivo.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

142

rpm -V verifica un paquete. Usted puede usar cualquiera de las Opciones de


Seleccin de Paquetes (Package Selection Options) listadas para consultar, para
especificar los paquetes que desea verificar. Un uso simple es rpm -V foo lo que
verifica que todas los archivos el paquete foo estn como cuando fueron
originalmente instaladas. Por ejemplo:
Para verificar que un paquete contiene un archivo en particular:
# rpm -Vf /bin/vi
Para verificar TODOS los paquetes instalados:
# rpm -Va
Para verificar un paquete instalado con su correspondiente paquete RPM:
# rpm -Vp foo-1.0-1.i386.rpm
Esto puede ser til si sospecha que su base de datos de paquetes RPM esta
corrupta.
Si todo es verificado adecuadamente no habr ninguna salida en pantalla. Si hay
alguna discrepancia s habr informacin presentada. El formato de la salida es una
cadena de 8 caracteres, un posible c denotando un archivo de configuracin, y
despues el nombre del archivo. Cada uno de los 8 caracteres denota el resultado de
la comparacin de un atributo del archivo con el valor de ese atributo en la base de
datos RPM. Un solo . (punto) significa que el test ha sido pasado. Los siguientes
caracteres denotan fallo de ciertos tests:
5
S
L
T
D
U
G
M

Chequeo MD5
Tamao del archivo
Enlace simblico
Modificacin de la fecha del archivo
Dispositivo
Usuario
Grupo
Modo (incluye permisos y tipos de archivo)

Si se ve alguna salida en pantalla, use su mejor juicio para determinar si usted


deber borrar o reinstalar el paquete, o alguna manera de resolver el problema.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

143

Utilidades del RPM


RPM es una herramienta muy til tanto para manejar el sistema como para
diagnosticar y solucionar problemas.
La mejor manera de darnos cuenta de todas sus posibilidades es mirando algunos
ejemplos.
Supongamos que se borraron algunos archivos accidentalmente, pero no est seguro
cuales. Si se quisiera verificar todo el sistema y ver qu es lo que puede haberse
perdido, usted escribira:
# rpm -Va
Si algunos archivos hubieran desaparecido, o parecieran estar *corruptos* , se
debera o bien reinstalar el paquete, o bien desinstalarlo, y luego reinstalarlo de
nuevo.
Digamos que se topa con un archivo que no reconoce. Para averiguar a qu paquete
pertenece, podramos escribir :
# rpm -qf /usr/X11R6/bin/xjewel
El resultado sera:
# xjewel-1.6-1
Podemos combinar los dos ejemplos anteriores con el siguiente ejemplo. Digamos
que se est teniendo problemas con /usr/bin/paste. A usted le gustara verificar
el paquete que contiene ese programa pero no sabe qu paquete es. Simplemente
introduzca:
# rpm -Vf /usr/bin/paste
y el paquete apropiado ser verificado.
Si usted est usando un programa y quiere averiguar ms informacin sobre l, usted
puede escribir lo siguiente para averiguar qu documentacin viene con el paquete
que posee'' ese programa (en este caso ispell):
# rpm -qdf /usr/bin/ispell
El resultado sera:
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

144

/usr/man/man4/ispell.4
/usr/man/man4/english.4
/usr/man/man1/unsq.1
/usr/man/man1/tryaffix.1
/usr/man/man1/sq.1
/usr/man/man1/munchlist.1
/usr/man/man1/ispell.1
/usr/man/man1/findaffix.1
/usr/man/man1/buildhash.1
/usr/info/ispell.info.gz
/usr/doc/ispell-3.1.18-1/README
Usted encuentra un nuevo RPM llamado koules, pero usted no sabe qu es. Para
averiguar algo de informacin sobre l, escriba:
# rpm -qip koules-1.2-2.i386.rpm
El resultado sera:
Name
: koules Distribution: Red Hat Linux Colgate
Version
: 1.2
Vendor: Red Hat Software
Release
: 2
Build Date: Mon Sep 02 11:59:12 1996
Install date: (none)
Build Host: porky.redhat.com
Group
: Games
Source RPM: koules-1.2-2.src.rpm
Size
: 614939
Summary
: SVGAlib action game; multiplayer, network
Description :
This arcade-style game is novel in conception and
excellent in execution. No shooting, no blood, no guts,
no gore. The play is simple, but you still must develop
skill to play. This version uses SVGAlib to run on a
graphics console.
Ahora se quiere saber qu archivos instala el RPM koules. Usted escribira:
# rpm -qlp koules-1.2-2.i386.rpm
El resultado es:
/usr/man/man6/koules.6
/usr/lib/games/kouleslib/start.raw
/usr/lib/games/kouleslib/end.raw
/usr/lib/games/kouleslib/destroy2.raw
/usr/lib/games/kouleslib/destroy1.raw
/usr/lib/games/kouleslib/creator2.raw
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

145

/usr/lib/games/kouleslib/creator1.raw
/usr/lib/games/kouleslib/colize.raw
/usr/lib/games/kouleslib
/usr/games/koules
Estos son slo algunos ejemplos. Conforme usted utilice el sistema encontrar
muchos ms usos para rpm.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

146

5.- Linux avanzado.


5.1- El proceso de arranque.
5.1.1.- El proceso de arranque, Init.
Archivos de arranque del sistema
Cuando el sistema arranca, se ejecutan automticamente una serie de archivos de
comandos (scripts) en el sistema, antes de que ningn usuario entre. Aqui tenemos
una descripcin de lo que ocurre:
En tiempo de arranque, el nucleo arranca el proceso /etc/init. init es un
programa que lee su archivo de configuracin, /etc/inittab, y arranca otros
procesos basados en el contenido de este archivo. Uno de los procesos mas
importantes arrancado desde inittab es el proceso /etc/getty, arrancado en cada
consola virtual. El proceso getty dispone la consola virtual para ser utilizada y
arranca un proceso login en ella. Esto le permite conectarse a cada consola virtual; si
/etc/inittab no contiene un proceso getty para una consola virtual
determinada, no se podr conectar nadie a ella.
Otro proceso ejecutado desde /etc/inittab es /etc/rc, el archivo de
inicializacin principal del sistema. Este archivo es simplemente un archivo de
comandos que ejecuta cualquier comando de inicializacin necesario en tiempo de
arranque, como es montar los sistemas de archivos e inicializar el espacio de
intercambio (memoria virtual).
Su sistema puede ejecutar otros archivos de comandos de inicializacin tambin,
como puede ser /etc/rc.local. El archivo /etc/rc.local contiene
normalmente comandos de inicializacin especficos de su sistema, como puede ser
el establecimiento del nombre de la computadora. rc.local puede ser arrancado
desde /etc/rc o directamente desde /etc/inittab

5.1.2.-Corriendo programas durante el proceso de arranque.


El archivo /etc/rc.d/rc.local es ejecutado durante el proceso de arranque,
despus de que se halla completado cualquier otra inicializacin, y cuando se
cambien niveles de arranque. Aqu se pueden agregar comandos adicionales a la
inicializacin. Quiz se quiera arrancar algunos demonios adicionales, o inicializar
una impresora. Adems, si se requiere configurar un puerto serial, se puede editar el
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
147

archivo /etc/rc.d/rc.serial y ser ejecutado automticamente durante el


proceso de arranque.
Por default /etc/rc.d/rc.local simplemente crea un mensaje de entrada con la
versin del kernel y el tipo de mquina.

5.1.3.- Dando de baja el sistema.


Para apagar Red Hat Linux,hay que utilizar el comando shutdown., los usos ms
comunes son :
shutdown -h now
shutdown -r now
Cualquiera de los dos dar de baja el sistema limpiamente, el primero apagar la
computadora, el segundo reiniciar.

5.2.- Cambiando niveles de arranque.


5.2.1.- Introduccin a los niveles de arranque.
Niveles de ejecucin del proceso init
Generalmente, Linux Red Hat se ejecuta en el nivel 3 (modo multiusuario completo).
En Linux Red Hat se usan los siguientes niveles de ejecucin:
0
1
2
3
4
5
6

Halt.
Modo de monousuario.
Modo Multiusuario sin NFS.
Modo multiusuario completo.
No usado
Modo multiusuario con interface X
Rearranque.

Si su mquina entra en un estado en el qu es imposible arrancar, como


consecuencia de un archivo /etc/inittab defectuoso, o no le permite registrarse
por tener corrupto el archivo /etc/passwd o simplemente por haber olvidado su
contrasea, deber arrancar con un Modo de usuario simple, tecleando en el prompt
de arranque de LILO, linux 1. Aparecer un sistema muy simple, con un intrprete de
comandos desde el que podr arreglar las cosas.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

148

5.2.2.- Cambiando los niveles de arranque.


El nivel de arranque por default es decidido en el archivo /etc/inittab. Se debe
de tener una linea cerca del inicio del archivo como esta :
id:3:initdefault:
De esto, hay que fijarnos en la segunda columna y ver que el nivel de arranque por
default es 3, y debe de ser el caso de muchos sistemas. Si se quiere cambiar, se
puede editar /etc/inittab a mano y cambiar el 3 por otro. Hay que ser muy
cuidadosos de no daar el archivo inittab. Si se daa, se puede arreglar reiniciando de la siguiente forma :
LILO boot:

linux single

Esto nos debe de permitir arrancar en el modo de un solo usuario tal que se puede
arreglar el archivo inittab.

5.3.- El sistema de archivos de Linux


5.3.1.- Introduccin al sistema de archivos.
5.3.2.- La estructura de archivos de Linux.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

149

5.4.- Montando sistemas de archivos.


5.4.1.- Montando sistemas de archivos.
Para empezar, algunos conceptos acerca de sistemas de archivos. Antes de que un
sistema de archivos sea accesible al sistema, debe ser montado en algn directorio.
Por ejemplo, si se tiene un sistema de archivos en un diskette, se debe montar bajo
algn directorio, digamos /mnt, para poder acceder a los archivos que contiene. Tras
montar el sistema de archivos, todos los archivos en dicho sistema aparecen en ese
directorio. Tras desmontar el sistema de archivos, el directorio (en este caso, /mnt)
estar vaco.
Lo mismo es vlido para los sistemas de archivos del disco duro. El sistema monta
automticamente los sistemas de archivos del disco duro en tiempo de arranque. El
as llamado "sistema de archivos raz" es montado en el directorio /. Si se tiene un
sistema de archivos separado para /usr, por ejemplo, se monta en /usr.
Si solo se tiene un sistema de archivos raz, todos los archivos (incluyendo los de
/usr) existen en ese sistema de archivos.
El comando mount se utiliza para montar un sistema de archivos.
El comando : mount av se ejecuta desde el archivo /etc/rc (que es el archivo de
inicializacin del sistema, ejecutado en tiempo de arranque. El comando mount -av
obtiene informacin de los sistemas de archivos y puntos de montaje del archivo
/etc/fstab. Este es un ejemplo de archivo /etc/fstab:
# dispositivo

directorio

tipo

opciones

/dev/hda2
/dev/hda3
/dev/hda4
/proc

/
/usr
none
/proc

ext2
ext2
swap
proc

defaults
defaults
sw
none

El primer campo es el dispositivo el nombre de la particin a montar.


El segundo campo es el punto de montaje.
El tercero es el tipo de sistema de archivos como puede ser ext2 (para ext2fs)
o Minix (para sistemas de archivos Minix).

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

150

La siguiente tabla lista los distintos tipos de sistemas de archivos disponibles en


Linux. Puede que no todos estos tipos de sistemas de archivos estn disponibles en
su sistema; el ncleo debe tener soporte para ellos compilado en el.
Sistema de archivos
Second Extended
Filesystem
Extended Filesystem
Minix Filesystem
Xia Filesystem
UMSDOS Filesystem

Nombre de Comentarios
tipo
ext2
Sistema de archivos mas comn en Linux
Ext
Minix
Xia
Umsdos

Reemplazado por ext2.


Sistema de archivos Minix original; no utilizado.
Como ext2, pero raras veces utilizado.
Utilizado para instalar Linux en una particin
MS-DOS.
MS-DOS Filesystem
Msdos
Utilizado para acceder a archivos MS-DOS.
/proc Filesystem
Proc
Suministra informacin de proceso para ps, etc.
ISO 9660 Filesystem
iso9660
Formato utilizado por muchos CD-ROMs.
Xenix Filesystem
Xenix
Sistema de archivos de Xenix.
System V Filesystem
Sysv
Variantes del System V para el x86
Coherent Filesystem
Coherent
Acceso a archivos de Coherent.
HPFS Filesystem
Hpfs
Acceso en lectura a particiones HPFS
(DoubleSpace).
Tipos de Sistemas de Archivos en Linux
El ltimo campo del archivo fstab contiene las opciones del comando mount
normalmente, esta puesto a "defaults" (defecto).
Como se puede ver, las particiones de intercambio estn incluidas en /etc/fstab
tambin. Tienen un punto de montaje de none y tipo swap. El comando swapon a, que se ejecuta tambin desde /etc/rc, se utiliza para activar el intercambio en
todos los dispositivos de intercambio listados en /etc/fstab
El archivo /etc/fstab contiene una entrada especial para el sistema de archivos
/proc. El sistema de archivos /proc se utiliza para almacenar informacin acerca de
los procesos del sistema, memoria disponible, y otros datos del mismo tipo. Si
/proc no esta montado, no funcionaran comandos como ps.
El comando mount solo puede ser utilizado por root. Esto es as para
garantizar la seguridad del sistema; no es deseable que usuarios normales
estn montando y desmontando sistemas de archivos a su antojo. Existen
varios paquetes disponibles que permiten a los usuarios normales montar y
desmontar sistemas de archivos (diskettes en particular) sin comprometer la
seguridad del sistema.
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

151

El comando mount -av realmente monta todos los sistemas de archivos excepto el
sistema de archivos raz (en la tabla anterior, /dev/hda2). El sistema de archivos
raz es montado automticamente en tiempo de arranque por el nucleo.
En vez de utilizar el comando mount
a mano. El comando :

-av, se puede montar un sistema de archivos

# mount -t ext2 /dev/hda3 /usr


es equivalente a montar el sistema de archivos con la entrada /dev/hda3 del
ejemplo de archivo /etc/fstab anterior.
En general, nunca se debe montar o desmontar sistemas de archivos a mano. El
comando mount -av en /etc/rc se encarga de montar los sistemas de archivos
en tiempo de arranque. Los sistemas de archivos son desmontados por los
comandos shutdown o halt antes de cerrar el sistema.

5.4.2.- Sistemas de archivos remotos.


Configuracin NFS
NFS significa Network File System, y es un modo de compartir archivos entre
mquinas como si estuvieran en el mismo disco duro. Linux puede ser cualquiera de
los dos, un server NFS y un cliente NFS client, lo que significa que puede exportar
sistemas de archivos a otros sistemas, y montar sistemas de archivos exportados de
otras mquinas. Mounting NFS Filesystems
Use el comando mount para montar un sistema de archivo NFS de otra mquina:
# mkdir /mnt/local
# mount bigdog:/mnt/export /mnt/local
En este comando, bigdog es el nombre del host del servidor de archivos NFS,
/mnt/export es el sistema de archivos que bigdog est exportando, y
/mnt/local es un directorio en la mquina local donde queremos montar el sistema
de archivos. Despus de que el comando mount corre (y si tenemos los permisos
necesarios de bigdog) podemos teclear
# ls /mnt/local
Jos Luis Elvira Valenzuela, ITESO-DESI 1999

152

y obtener un listado de los archivos en /mnt/export en bigdog.

Exportando sistemas de archivos NFS


El archivo que controla que sistemas de archivos queremos exportar es
/etc/exports. Su formato es :
directorio

nombre del host (opciones)

las (opciones) son opcionales.


Por ejemplo :
/mnt/export

speedy.redhat.com

Permitir a speedy.redhat.com montar /mnt/export.


/mnt/export

speedy.redhat.com(ro)

Permitir a speedy montar /mnt/export como solo lectura


Cada vez que se modifica el archivo /etc/exports, se necesita indicarle a los
demonios NFS que lo examine para la nueva informacin. Una simple forma de hacer
esto es detener y reiniciar los demonios :
# /etc/rc.d/init.d/nfs stop
# /etc/rc.d/init.d/nfs start
Tambin funcionar lo siguiente :
# killall -HUP rpc.nfsd rpc.mountd

5.5.- Mantenimiento de sistemas de archivos.


5.5.1.- Utileras.
Normalmente es una buena idea el comprobar de vez en cuando los sistemas de
archivos en busca de archivos daados o corrompidos. Algunos sistemas
comprueban automticamente sus sistemas de archivos en tiempo de arranque (con
los comandos apropiados en /etc/rc). El comando utilizado para comprobar un
sistema de archivos depende del tipo de sistema de archivos en cuestion. Para
Jos Luis Elvira Valenzuela, ITESO-DESI 1999
153

sistemas de archivos ext2fs (el tipo mas utilizado normalmente), el comando es


e2fsck. Por ejemplo, el comando
# e2fsck -av /dev/hda2

comprobar el sistema de archivos ext2fs de /dev/hda2 y corregir


automticamente cualquier error.
Normalmente es una buena idea el desmontar un sistema de archivos antes de
comprobarlo. Por ejemplo, el comando :
# umount /dev/hda2
desmontara el sistema de archivos en /dev/hda2, tras lo cual podr ser
comprobado. La nica excepcin es que no se puede desmontar el sistema de
archivos raz. Para poder comprobar el sistema de archivos raz cuando esta
desmontado, se debe utilizar un disquete de arranque/raz. Tampoco se puede
desmontar un sistema de archivos si alguno de sus archivos esta "ocupado" esto es,
siendo utilizado por un proceso en ejecucin. Por ejemplo, no se puede desmontar un
sistema de archivos si el directorio de trabajo de algn usuario esta en ese sistema
de archivos. Se recibir un error "Device busy" (dispositivo ocupado) si se intenta
desmontar un sistema de archivos que este en uso.
Otros tipos de sistemas de archivos utilizan formas diferentes del comando e2fsck,
como pueda ser efsck y xfsck. En algunos sistemas, se puede utilizar el comando
fsck, que determina el tipo de sistema de archivos y ejecuta el comando apropiado.
*Es importante que se reinicialice el sistema inmediatamente despus de comprobar
un sistema de archivos montado, si es que se hizo alguna correccin al sistema de
archivos. (Sin embargo, en general, no se deben comprobar sistemas de archivos
que estn montados.) Por ejemplo, si e2fsck informa que ha corregido algn error
en el sistema de archivos, se debe apagar el sistema con shutdown -r para
rearrancarlo. Esto permite al sistema resincronizar su informacin acerca del sistema
de archivos cuando e2fsck lo modifica.
El sistema de archivos /proc no necesita nunca ser comprobado de esta forma.
/proc es un sistema de archivos en memoria, gestionado directamente por el
nucleo.

Jos Luis Elvira Valenzuela, ITESO-DESI 1999

154

S-ar putea să vă placă și