Está en la página 1de 263

Manual de FreeBSD

Proyecto de Documentacin de FreeBSD

Manual de FreeBSD
por Proyecto de Documentacin de FreeBSD
Publicado Febrero 1999
Copyright 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 por The FreeBSD Documentation Project
Bienvenido a FreeBSD!. Este manual cubre la instalacin y uso diario de FreeBSD 4.6.2-RELEASE. Este manual
est en constante evolucin y es el resultado del trabajo de muchas personas. Algunas secciones no estn completas y
otras necesitan ser actualizadas. Si ests interesado en colaborar en este proyecto, enva un mail a FreeBSD
documentation project mailing list <freebsd-doc@FreeBSD.org>. La ltima versin de este documento est
siempre disponible en el servidor World Wide Web de FreeBSD (../../../../index.html). Tambin est disponible en
diferentes formatos y opciones de compresin en el servidor FTP de FreeBSD
(ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/) o en los numerosos mirrors. Si se prefiere disponer de una copia en papel
de este manual, se puede adquirir en FreeBSD Mall (http://www.freebsdmall.com/). Tambin es posible realizar
bsquedas (../../../../search/index.html) en este manual.

Redistribution and use in source (SGML DocBook) and compiled forms (SGML, HTML, PDF, PostScript, RTF and so forth) with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions
and the following disclaimer as the first lines of this file unmodified.
2. Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other
formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
Importante: THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD DOCUMENTATION PROJECT "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
NO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
WAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.

Tabla de contenidos
I. Empezamos ............................................................................................................................................................. vii
1. Introduccin ......................................................................................................................................................1
1.1. Sinopsis.................................................................................................................................................1
1.2. Bienvenido a FreeBSD!.......................................................................................................................1
1.3. Acerca del proyecto FreeBSD ..............................................................................................................4
2. Instalando FreeBSD ..........................................................................................................................................9
2.1. Configuraciones soportadas ................................................................................................................11
2.2. Preparndonos para la instalacin ......................................................................................................15
2.3. Instalando FreeBSD............................................................................................................................19
2.4. Preguntas y Respuestas para usuarios de MS-DOS............................................................................20
3. Conceptos Bsicos de Unix.............................................................................................................................22
3.1. Sinpsis...............................................................................................................................................22
3.2. Permisos..............................................................................................................................................22
3.3. Estructura de directorios .....................................................................................................................23
3.4. Intrpretes de rdenes (Shells)............................................................................................................23
3.5. Editores de texto .................................................................................................................................25
3.6. Para ms informacin .........................................................................................................................26
4. Instalando Aplicaciones: Paquetes y Ports......................................................................................................28
4.1. Sinpsis...............................................................................................................................................28
4.2. Generales sobre la Instalacin de Software ........................................................................................28
4.3. Localizando su Aplicacin .................................................................................................................30
4.4. Usando el Sistema de Paquetes...........................................................................................................30
4.5. Usando la Coleccin de Ports .............................................................................................................32
4.6. Actividades Post-Instalacin...............................................................................................................38
4.7. Resolucin de Problemas....................................................................................................................38
5. El sistema X Window ......................................................................................................................................45
II. Administracin del sistema. ..................................................................................................................................46
6. El Proceso de Arranque en FreeBSD ..............................................................................................................47
6.1. Sinpsis...............................................................................................................................................47
6.2. El Problema que representa Arrancar el Sistema ...............................................................................47
6.3. El RMA, y las Etapas de Arranque Uno, Dos y Tres .........................................................................48
6.4. Interaccin con el Kernel Durante el Arranque ..................................................................................52
6.5. Init: Inicializacin del Proceso de Control .........................................................................................53
6.6. Secuencia de Apagado........................................................................................................................54
7. Usuarios y administracin bsica de cuentas ..................................................................................................55
7.1. Sinopsis...............................................................................................................................................55
7.2. Introduccin........................................................................................................................................55
7.3. La cuenta superusuario .......................................................................................................................57
7.4. Cuentas de sistema..............................................................................................................................57
7.5. Cuentas de usuario..............................................................................................................................57
7.6. Modificacin de cuentas .....................................................................................................................57
7.7. Limitar a los usuarios..........................................................................................................................62
7.8. Personalizar a los usuarios..................................................................................................................65
7.9. Grupos.................................................................................................................................................65
8. Configurando el Kernel de FreeBSD...............................................................................................................67

iii

8.1. Sinpsis...............................................................................................................................................67
8.2. Porqu Construir un Kernel Propio?.................................................................................................67
8.3. Compilacin e Instalacin de un Kernel Personalizado .....................................................................68
8.4. El Fichero de Configuracin...............................................................................................................70
8.5. Creando Nodos para los Dispositivos .................................................................................................82
8.6. En Caso de que Algo No Funcione.....................................................................................................83
9. Seguridad.........................................................................................................................................................85
10. Imprimiendo ..................................................................................................................................................86
10.1. Sinpsis.............................................................................................................................................86
10.2. Introduccin......................................................................................................................................86
10.3. Configuracin Bsica........................................................................................................................87
10.4. Configuracin Avanzada de una Impresora ....................................................................................101
10.5. Uso de las Impresoras.....................................................................................................................130
10.6. Alternativas al Sistema de Impresin Estndar ..............................................................................138
10.7. Resolucin de Problemas................................................................................................................138
11. Discos ..........................................................................................................................................................143
11.1. Utilizando Sysinstall.......................................................................................................................143
11.2. Usando la lnea de comandos .........................................................................................................144
11.3. * Discos no tradicionales ................................................................................................................144
12. Localizacion ................................................................................................................................................146
13. Sonido..........................................................................................................................................................147
13.1. Sinpsis...........................................................................................................................................147
13.2. Identificar el Dispositivo Correcto..................................................................................................147
13.3. Recompilar el Kernel ......................................................................................................................149
13.4. Creando y Probando Nodos de Dispositivoss.................................................................................149
13.5. Problemas Comunes .......................................................................................................................150
13.6. Audio MP3......................................................................................................................................150
14. Comunicaciones Serie .................................................................................................................................154
15. PPP y SLIP ..................................................................................................................................................155
15.1. Sinpsis...........................................................................................................................................155
15.2. Utilizando User PPP .......................................................................................................................155
15.3. Usando Kernel PPP.........................................................................................................................170
15.4. Usando PPP sobre Ethernet (PPPoE).............................................................................................177
15.5. Usando PPP sobre ATM (PPPoA) .................................................................................................179
15.6. Usando SLIP...................................................................................................................................182
16. Networking Avanzado .................................................................................................................................193
17. Correo Electrnico ......................................................................................................................................194
18. Lo ltimo de lo ltimo.................................................................................................................................195
18.1. Sinopsis...........................................................................................................................................195
18.2. FreeBSD-CURRENT vs. FreeBSD-STABLE................................................................................195
18.3. Sincronizando tu cdigo fuente ......................................................................................................199
18.4. Usando make world .....................................................................................................................200
19. Emulacion Linux .........................................................................................................................................213

iv

III. Apndices ............................................................................................................................................................214


20. Obteniendo FreeBSD ..................................................................................................................................215
20.1. Servidores FTP ...............................................................................................................................215
21. Bibliografa..................................................................................................................................................216
21.1. Libros y revistas especficas sobre FreeBSD..................................................................................216
21.2. Guas de usuario .............................................................................................................................216
21.3. Guas de administrador ...................................................................................................................217
21.4. Guas de programadores .................................................................................................................217
21.5. El sistema operativo por dentro ......................................................................................................218
21.6. Referencia de seguridad..................................................................................................................218
21.7. Referencia de hardware ..................................................................................................................218
21.8. Historia de UNIX............................................................................................................................219
21.9. Diarios y revistas ............................................................................................................................219
A. Recursos en Internet .....................................................................................................................................221
A.1. Listas de Correo ...............................................................................................................................221
A.2. Grupos de Noticias de Usenet..........................................................................................................232
A.3. Servidores WWW ............................................................................................................................233
A.4. Direcciones de Correo Electrnico ..................................................................................................235
A.5. Cuentas Shell ...................................................................................................................................235
B. PGP Keys......................................................................................................................................................236
B.1. Officers.............................................................................................................................................236
B.2. Core Team Members ........................................................................................................................236
B.3. Developers........................................................................................................................................237
Colophon....................................................................................................................................................................256

Tabla de ejemplos
4-1. Descargando un Paquete e Instalandolo Localmente ............................................................................................30
6-1. Pantalla boot0.......................................................................................................................................................48
6-2. Pantalla de boot2 ..................................................................................................................................................49
6-3. Una Consola Insegura en /etc/ttys .........................................................................................................................53
7-1. Configuracin de adduser ......................................................................................................................................58
7-2. Eliminacin interactiva de cuenta con rmuser.......................................................................................................60
7-3. chpass interactivo ejecutado por el superusuario...................................................................................................60
7-4. chpass interactivo ejecutado por un usuario normal..............................................................................................61
7-5. Cambio de tu contrasea........................................................................................................................................61
7-6. Cambio de la contrasea de otro usuario como superusuario ...............................................................................61
7-7. Aadir un grupo usando pw(8)..............................................................................................................................65
7-8. Aadir a alguien a un grupo usando pw(8)............................................................................................................65
7-9. Determinar pertenencia a grupos con id(1) ...........................................................................................................65

vi

I. Empezamos
Esta parte del manual de FreeBSD es para usuarios y administradores nuevos en FreeBSD. Estos captulos:

Realizan una introduccin a FreeBSD.

Guan a travs de una instalacin de FreeBSD.

Explican informacin bsica sobre Unix.

Explican como instalar la gran cantidad de software de terceros disponible para FreeBSD.

Introducen a las X, el sistema de ventanas de Unix y detallan como configurar un entorno de escritorio ms
productivo.

Se ha intentado minimizar el nmero de referencias a otras secciones de este documento para evitar el salto entre
pginas y facilitar la lectura continuada.

Captulo 1. Introduccin
Restructured, reorganized, and parts rewritten by Jim Mock.

1.1. Sinopsis
Gracias por tu inters en FreeBSD! El siguiente captulo trata varios temas relativos al Proyecto FreeBSD, como su
historia, objetivos, modelo de desarrollo, etc.
Despus de leer este captulo sabrs:

Qu relacin guarda FreeBSD con otros sistemas operativos.

La historia del Proyecto FreeBSD.

Los objetivos del Proyecto FreeBSD.

Los fundamentos del modelo de desarrollo de cdigo abierto de FreeBSD.

Y por supuesto: de dnde procede el nombre "FreeBSD".

1.2. Bienvenido a FreeBSD!


FreeBSD es un sistema operativo basado en 4.4BSD-Lite para la arquitectura Intel (x86) y sistemas basados en DEC
Alpha. Se est trabajando tambin en versiones para otras arquitecturas. Para una breve perspectiva general de
FreeBSD consulta la siguiente seccin. Puedes tambin leer sobre la historia de FreeBSD, o sobre la distribucin
actual. Si ests interesado en contribuir de algn modo al proyecto (cdigo, hardware, billetes sin marcar), mrate el
artculo Contribuir a FreeBSD (../../articles/contributing/index.html).

1.2.1. Qu puede hacer FreeBSD?


FreeBSD tiene muchas caractersticas notables. Algunas de ellas son:

Multitarea expropiativa con prioridades dinmicamente ajustadas para asegurar que distintas aplicaciones y
usuarios compartan el ordenador de un modo equitativo, incluso bajo la mayor de las cargas.

Servicios multiusuario que permiten a mucha gente usar un sistema FreeBSD simultneamente para distintas
cosas. Esto significa, por ejemplo, que los perifricos del sistema como impresoras y dispositivos de cinta son
compartidos adecuadamente por varios usuarios del sistema o la red, y que pueden establecerse lmites sobre
recursos concretos para usuarios o grupos de usuarios, protegiendo de este modo al sistema de posibles abusos.

Conexin de redes TCP/IP muy robusta, con soporte para estndares industriales como SLIP, PPP, NFS, DHCP, y
NIS. Esto quiere decir que tu mquina FreeBSD puede interoperar fcilmente con otros sistemas y hacer de
servidor en una empresa, proporcionando importantes funciones como NFS (acceso a ficheros remotos) y

Captulo 1. Introduccin
servicios de correo electrnico, o poniendo a tu organizacin en Internet con WWW, FTP, servicios de enrutado y
cortafuegos.

La proteccin de memoria garantiza que las aplicaciones (o los usuarios) no pueden interferirse. Un error fatal en
una aplicacin no afecta al resto.

FreeBSD es un sistema operativo de 32-bits (de 64-bits sobre Alpha) y fue diseado como tal desde el comienzo.

X Window System (X11R6), estndar de la industria, provee a los usuarios de una interfaz grfica (GUI) por el
coste de una tarjeta VGA y un monitor comunes, y viene con los fuentes completos.

Compatibilidad binaria con muchos programas nativos de Linux, SCO, SVR4, BSDI y NetBSD.

Miles de aplicaciones listas para ser usadas se hallan disponibles en la coleccin de ports y paquetes. Para qu
buscar en la red si puedes encontrarlo todo aqu mismo?

Miles de aplicaciones fciles de portar se encuentran disponibles en Internet. FreeBSD tiene un cdigo fuente
compatible con el de los ms populares sistemas Unix comerciales y por ello la mayora de las aplicaciones tan
slo necesitan unos pocos cambios, si alguno, para compilar.

El diseo de la memoria virtual con paginacin bajo demanda y de la cach unificada de VM/buffer satisface a
aplicaciones que requieren grandes cantidades de memoria de forma eficiente aun dando respuestas interactivas a
otros usuarios.

Soporte para SMP en mquinas con mltiples CPUs.

Una coleccin completa de herramientas de desarrollo en C, C++, Fortran, y Perl. Muchos ms lenguajes
adicionales para investigacin y desarrollo avanzados se encuentran tambin disponibles en la coleccin de ports y
paquetes.

Disponer del cdigo fuente del sistema entero significa contar con el mayor nivel de control posible sobre tu
entorno. Para qu ligarte a una solucin propietaria a la merced de un fabricante cuando puedes tener un
verdadero sistema abierto?

Extensa documentacin en lnea.

Y mucho ms!

FreeBSD est basado en la versin 4.4BSD-Lite del Computer Systems Research Group (CSRG) de la Universidad
de California en Berkeley, y contina la distinguida tradicin de desarrollo de sistemas BSD. Adems del excelente
trabajo del CSRG, el Proyecto FreeBSD ha invertido miles de horas en ajustar el sistema para conseguir un
rendimiento y una fiabilidad mximos en situaciones de carga reales. Mientras que muchos de los gigantes
comerciales se esfuerzan en dotar a los sistemas operativos para PCs de esas caractersticas, rendimiento y fiabilidad,
FreeBSD puede ofrecerlas ya!
Las posibles aplicaciones en las que puede usarse FreeBSD estn en verdad limitadas tan slo por tu imaginacin.
Desde desarrollo de programas hasta automatizacin de fbricas, desde control de inventarios hasta correccin de
azimut de antenas de satlites remotos; si puede realizarse con un Unix comercial lo ms seguro es que tambin
pueda llevarse a cabo con FreeBSD. FreeBSD tambin se beneficia de las literalmente miles de aplicaciones de alta
calidad desarrolladas en centros de investigacin y universidades de todo el mundo, frecuentemente disponibles por
poco o ningn coste. Tambin se dispone de aplicaciones comerciales, cuyo nmero aumenta cada da.
Dado que el cdigo fuente de FreeBSD est disponible, el sistema puede ser tambin personalizado en un grado
nunca visto para aplicaciones o proyectos especiales, y de maneras generalmente no posibles con los sistemas
operativos de la mayora de los fabricantes comerciales. Aqu damos tan slo una muestra de aplicaciones en las que
se est actualmente usando FreeBSD:

Captulo 1. Introduccin

Servicios de Internet: La robusta conectividad TCP/IP integrada en FreeBSD hace de este sistema una plataforma
ideal para servicios Internet como:

servidores FTP

Servidores web (estndares o seguros [SSL])

Cortafuegos y pasarelas NAT (enmascaramiento IP).

Servidores de correo electrnico

USENET y BBSs

Y ms...

Con FreeBSD puedes empezar fcilmente con un econmico 386 e ir actualizando tu equipo hasta un
tetraprocesador Xeon con almacenamiento RAID a medida que tu proyecto crezca.

Educacin: Eres estudiante de informtica o de algn campo de la ingeniera relacionado? No hay mejor modo
de estudiar sistemas operativos, arquitectura de computadores y redes que la experiencia a bajo nivel que FreeBSD
puede aportar. Para aqullos cuyo principal inters en los ordenadores no es otro que el de poder realizar su trabajo
existe una serie de paquetes gratuitos de CAD, matemticas, diseo grfico, etc., que hacen de FreeBSD un
sistema verdaderamente til.

Investigacin: Encontrndose disponible el cdigo fuente del sistema entero, FreeBSD es una excelente
plataforma para la investigacin en sistemas operativos y otras ramas de la informtica. El hecho de que FreeBSD
est disponible gratuitamente hace posible que grupos remotos puedan colaborar con ideas o compartan
desarrollos sin tener que preocuparse de acuerdos en licencias especiales o de limitaciones acerca de lo que puede
discutirse en foros pblicos.

Redes: Necesitas un nuevo enrutador? Un servidor de nombres (DNS)? Un cortafuegos para mantener a la
gente fuera de tu red interna? FreeBSD puede convertir aquel 386 o 486 arrinconado en un enrutador avanzado
con sofisticadas capacidades de filtrado de paquetes fcilmente.

Estacin de trabajo X: FreeBSD es una magnfica eleccin como terminal X de bajo coste, ya sea usando el
libremente disponible servidor XFree86 o uno de los excelentes servidores comerciales de X Inside. A diferencia
de las terminales X, FreeBSD permite ejecutar muchas aplicaciones localmente, si as se quiere, aligerando de este
modo la carga soportada por un servidor central. FreeBSD puede incluso arrancar sin disco, permitiendo que las
estaciones sean an ms econmicas y fciles de administrar.

Desarrollo de software: El sistema base de FreeBSD viene con una completa coleccin de herramientas de
desarrollo que incluyen el famoso compilador y depurador de C/C++ de GNU.

Los fuentes y binarios de FreeBSD se hallan disponibles en CDROM y por FTP anmimo. Por favor, consulta
Captulo 20 para ms informacin sobre cmo conseguir FreeBSD.

1.2.2. Quin usa FreeBSD?


Sobre FreeBSD corren algunos de los ms grandes sitios web incluyendo:

Yahoo! (http://www.yahoo.com/)

Apache (http://www.apache.org/)

Captulo 1. Introduccin

Be, Inc. (http://www.be.com/)

Blue Mountain Arts (http://www.bluemountain.com/)

Pair Networks (http://www.pair.com/)

Whistle Communications (http://www.whistle.com/)

Microsoft (http://www.microsoft.com/)

Hotmail (http://www.hotmail.com/)

Sony Japn (http://www.sony.co.jp/)

y muchos ms.

1.3. Acerca del proyecto FreeBSD


En la siguiente seccin se explican ciertos aspectos del proyecto, una breve historia, objetivos, y modelo de
desarrollo.

1.3.1. Breve historia de FreeBSD


Contributed by Jordan Hubbard.
La gnesis del proyecto FreeBSD se remonta a comienzos de 1993, en parte como una extensin del Unofficial
386BSD Patchkit debida a los tres ltimos coordinadores del patchkit: Nate Williams, Rod Grimes y yo mismo.
Nuestro objetivo original era producir una instantnea de 386BSD intermedia para arreglar una serie de problemas
que no se podan solventar va patchkits. Algunos quiz recordis que el primer nombre del proyecto fue 386BSD
0.5 o 386BSD Interim en referencia a ese hecho.
386BSD era el sistema operativo de Bill Jolitz, que hasta ese punto haba estado sufriendo severamente las
consecuencias de prcticamente un ao que ms vale olvidar. A medida que el patchkit se iba haciendo ms
incmodo da a da, nosotros estuvimos unnimente de acuerdo en que algo se tena que hacer y decidimos ayudar a
Bill ofreciendo esta instantnea limpia como nterin. Aquellos planes fueron bruscamente interrumpidos cuando
Bill Jolitz de repente decidi retirar su aprobacin al proyecto sin ninguna indicacin clara de lo que en su lugar
debera hacerse.
No tardamos mucho en decidir que el objetivo segua valiendo la pena, aun sin el soporte de Bill, y fue as que
adoptamos el nombre FreeBSD, debido a David Greenman. Nuestros objetivos iniciales se fijaron una vez
consultamos a los usuarios del sistema, y cuando qued claro que el proyecto estaba en marcha y que poda llegar a
ser una realidad contact con Walnut Creek CDROM con la idea de mejorar los canales de distribucin de FreeBSD
en CD, pero hasta llegamos a disponer de una mquina con la que trabajar y una conexin a Internet rpida. Sin la fe
casi sin precedentes que tuvo Walnut Creek CDROM en lo que era por aquel tiempo un proyecto completamente
desconocido, es bastante improbable que FreeBSD hubiera logrado tanto y tan rpido como ha logrado hoy por hoy.
La primera distribucin en CDROM (y disponible por la red) fue FreeBSD 1.0, publicado en diciembre de 1993.
Estaba basado en la cinta de U.C. Berkeley del 4.3BSD-Lite (Net/2), con bastantes componentes de 386BSD y la
Free Software Foundation. Fue un logro bastante razonable para una primera versin, y le sigui FreeBSD 1.1 en
mayo de 1994, que tuvo un gran xito.

Captulo 1. Introduccin
Por entonces se formaron unos inesperados nubarrones en el horizonte ya que Novell y U.C. Berkeley resolvieron el
largo juicio acerca del estatus legal de la cinta de Berkeley Net/2. Una condicin del acuerdo fue la concesin por
parte de U.C. Berkeley de que una gran parte de Net/2 era cdigo gravado y propiedad de Novell, quien a su vez lo
haba adquirido de AT&T anteriormente. Berkeley obtuvo a cambio de Novell el beneplcito para que
4.4BSD-Lite, cuando saliera, fuera declarado como no-gravado y se instara a los usuarios de Net/2 a cambiar. Esto
inclua a FreeBSD, y se dio hasta julio de 1994 para dejar de sacar su propio producto basado en Net/2. Bajo los
trminos de aquel acuerdo, se le permita al proyecto sacar una ltima versin antes de la fecha lmite, esa versin
fue FreeBSD 1.1.5.1.
FreeBSD tuvo entonces que acometer la rdua tarea de literalmente reinventarse a s mismo a partir de trozos nuevos
y bastante incompletos de 4.4BSD-Lite. Las versiones Lite eran ligeras en parte porque el CSRG de Berkeley
quit grandes partes del cdigo necesario para construir un sistema que pudiera arrancar (debido a diversos requisitos
legales) y porque la versin del 4.4 para Intel era muy incompleta. No fue hasta noviembre de 1994 que el proyecto
realiz esa transicin, en ese punto sac FreeBSD 2.0 en la red y en CDROM (a finales de diciembre). A pesar de no
estar suficientemente pulida, esta distribucin fue un xito significativo y le sigui el ms robusto y fcil de instalar
FreeBSD 2.0.5 en junio de 1995.
Sacamos FreeBSD 2.1.5 en agosto de 1996, y pareci ser suficientemente popular entre ISPs y otras comunidades
comerciales como para que mereciera otra versin de la rama 2.1-STABLE. sa fue FreeBSD 2.1.7.1, publicada en
febrero de 1997, que marc el final de la lnea principal de desarrollo en 2.1-STABLE. Una vez en modo
mantenimiento, en esa rama (RELENG_2_1_0) slo se haran ya mejoras en seguridad y correcciones de errores
crticos.
FreeBSD se ramific desde la lnea principal de desarrollo (-CURRENT) en noviembre de 1996 como la rama
RELENG_2_2, y la primera versin completa (2.2.1) sali en abril de 1997. Se hicieron ms versiones de la rama 2.2
en verano y otoo de 1997, la ltima de las cuales (2.2.8) apareci en noviembre de 1998. La primera versin 3.0
oficial sali en octubre de 1998 y marc el inicio del fin de la rama 2.2.
El rbol se ramific de nuevo el 20 de enero de 1999, dando lugar a las ramas 4.0-CURRENT y 3.X-STABLE. De la
3.X-STABLE, 3.1 sali el 15 de febrero de 1999, 3.2 el 15 de mayo de 1999, 3.3 el 16 de septiembre de 1999, 3.4 el
20 de diciembre de 1999, y 3.5 el 24 de junio de 2000, a la que sigui pocos das despus una actualizacin menor, la
3.5.1, que incorporaba mejoras de seguridad de ltima hora para Kerberos. sa fue la ltima versin de la rama 3.X.
Hubo otra ramificacin el 13 de marzo de 2000, que di lugar a la rama 4.X-STABLE, considerada ahora la "actual
rama -stable". Han habido varias versiones de la misma desde entonces: 4.0-RELEASE sali en marzo de 2000, 4.3
en abril de 2001, y 4.4 en septiembre de 2001. Habr ms versiones de la rama 4.X-STABLE (RELENG_4) entrado
2002.
Proyectos a largo plazo siguen teniendo lugar en la rama (principal) 5.0-CURRENT, e instantneas de la 5.0 en
CDROM (y, naturalmente, en la red) se hallan contnuamente disponibles desde el servidor de instantneas
(ftp://current.FreeBSD.org/pub/FreeBSD/snapshots/) a medida que el trabajo progresa.

1.3.2. Objetivos del Proyecto FreeBSD


Contributed by Jordan Hubbard.
Los objetivos del Proyecto FreeBSD son proveer software que pueda ser usado con cualquier propsito y sin
compromiso alguno. Muchos de nosotros participamos significativamente en el cdigo (y en el proyecto) y
ciertamente no nos importara recibir una pequea compensacin econmica de vez en cuando, pero decididamente
no estamos dispuestos a insitir en ello. Creemos que nuestra ms importante y primordial misin es dar cdigo a
todo el que venga, y para lo que quiera, de manera que el cdigo sea tan usado y d tanto provecho como sea posible.

Captulo 1. Introduccin
Creo que ste es uno de los objetivos ms fundamentales del software libre y uno que nosotros apoyamos con
entusiasmo.
El cdigo fuente de nuestro rbol que se halla bajo la GNU General Public License (GPL) o la Library General
Public License (LGPL) viene con algunas restricciones ms, si bien de cara a garantizar acceso al mismo, no al
contrario que es lo habitual. Debido a las complicaciones adicionales que pueden surgir en el uso comercial de
software con licencia GPL, preferimos que el software contribuido lo sea bajo la licencia BSD, menos estricta,
cuando sa sea una opcin razonable.

1.3.3. El modelo de desarrollo de FreeBSD


Contributed by Satoshi Asami.
El desarrollo de FreeBSD es un proceso muy abierto y flexible, estando FreeBSD construido literalmente a partir de
las contribuciones de centenares de personas de todo el mundo, como puede verse en nuestra lista de contribuidores
(../../articles/contributors/article.html). Estamos constantemente a la bsqueda de nuevos desarrolladores e ideas, y
aqullos interesados en vincularse ms al proyecto tan slo tienen que ponerse en contacto con nostros en FreeBSD
technical discussions mailing list <freebsd-hackers@FreeBSD.org>. La lista FreeBSD announcements mailing
list <freebsd-announce@FreeBSD.org> tambin se halla disponible para quienes deseen dar a conocer a otros
usuarios de FreeBSD grandes reas de trabajo.
Cosas tiles de saber sobre el Proyecto FreeBSD y su proceso de desarrollo, ya sea trabajando de forma
independiente on en estrecha cooperacin:
El repositorio CVS
El rbol de cdigo fuente central de FreeBSD se mantiene con CVS (http://www.cvshome.org/) (Concurrent
Versions System), una herramienta de control de versiones de cdigo fuente que se halla libremente disponible
y viene con FreeBSD. El repositorio CVS (http://www.FreeBSD.org/cgi/cvsweb.cgi) principal reside en una
mquina en Santa Clara CA, USA desde la que es replicado a numerosos mirrors distribuidos por todo el
mundo. El rbol del CVS, as como los rboles -CURRENT y -STABLE que se extraen del mismo, pueden ser
replicados fcilmente en tu mquina tambin. Por favor, consulta la seccin Sincronizando el rbol de cdigo
fuente para ms informacin sobre cmo hacerlo.
La lista de committers
Los committers son gente que tienen permisos de escritura en el rbol del CVS, y estn por tanto autorizados a
realizar modificaciones en los fuentes de FreeBSD (el trmino committer viene del comando commit de
cvs(1), que sirve para subir nuevos cambios al repositorio del CVS). La mejor manera de enviar aportaciones
para que sean revisadas por los committers es usar el comando send-pr(1), aunque si pareciera que algo va mal
en el sistema tambin puedes contactarlos por mail en FreeBSD committers mailing list
<cvs-committers@FreeBSD.org>.
El equipo core de FreeBSD
El equipo core de FreeBSD sera lo equivalente a una junta directiva si el Proyecto FreeBSD fuese una
compaa. La principal tarea de este equipo es la de garantizar que el proyecto, como un todo, tiene salud y
sigue las direcciones correctas. Invitar a desarrolladores comprometidos y responsables a unirse a nuestro grupo
de committers es una de las funciones del equipo core, as como el reclutamiento de nuevos miembros del
equipo cuando otros se van. El equipo core fue elegido de un conjunto de committers candidatos en octubre de
2000. Se celebran elecciones cada 2 aos.

Captulo 1. Introduccin
Algunos miembros del equipo core tienen tambin reas de responsabilidad especficas, en cuanto a que se
encargan de garantizar que cierta parte extensa del sistema funciona segn lo previsto. Hay una lista completa
de desarrolladores de FreeBSD con sus reas de responsabilidad respectivas, consulta la Lista de contribuidores
(../../articles/contributors/article.html).
Nota: La mayora de los miembros del equipo core son voluntarios a la hora de desarrollar FreeBSD y no
se benefician econmicamente del proyecto, por ello compromiso no debera confundirse con soporte
garantizado. La anterior analoga de la junta directiva en realidad no es del todo exacta, quiz fuera ms
acertado decir que sa es la gente que dedica su vida a FreeBSD en contra de lo que les aconseja su
propio juicio!

Contribuidores externos
Por ltimo, y no por ello menos importante, el mayor grupo de desarrolladores est formado por los mismos
usuarios, quienes constantemente aportan feedback y correcciones de errores. La principal manera de estar en
contacto con el ms descentralizado desarrollo de FreeBSD es suscribirse a FreeBSD technical discussions
mailing list <freebsd-hackers@FreeBSD.org> (ver informacin sobre listas de distribucin) donde se
discuten ese tipo de cosas.
La lista de contribuidores (../../articles/contributors/article.html) es larga y no cesa de crecer, as que por qu
no te apuntas y contribuyes a FreeBSD hoy mismo?
Aportar cdigo no es la nica manera de contribuir al proyecto; tienes un lista ms completa de cosas que hay
que hacer en el sitio web del Proyecto FreeBSD (../../../../index.html).

En resumen, nuestro modelo de desarrollo est organizado como un conjunto de crculos concntricos. El modelo
centralizado est diseado para conveniencia de los usuarios de FreeBSD, que as tienen un modo sencillo de estar
al da con una base de cdigo central, no para excluir a contribuidores potenciales! Nuestro deseo es presentar un
sistema operativo estable con un gran conjunto de aplicaciones coherentes que los usuarios puedan instalar y usar
fcilmente, y este modelo funciona bien para lograrlo.
Lo nico que pedimos a quienes quisieran unirse a nosotros como desarrolladores de FreeBSD es la misma
dedicacin que los integrantes actuales tienen para mantener su xito.

1.3.4. La actual distribucin FreeBSD


FreeBSD est libremente disponible, todo el cdigo fuente de la distribucin basada en 4.4BSD-Lite para sistemas
bajo Intel i386, i486, Pentium Pro, Celeron, Pentium II, Pentium III (o compatible) y DEC Alpha. Est
principalmente basado en software del grupo CSRG de U.C. Berkeley, con algunas mejoras provenientes de
NetBSD, OpenBSD, 386BSD, y la Free Software Foundation.
Desde la versin 2.0 de FreeBSD de finales del 94, el rendimiento, conjunto de funcionalidades, y estabilidad del
sistema han mejorado drsticamente. El ltimo cambio consiste en un rediseo del sistema de memoria virtual con
una cach unificada de VM/buffer que no slo aumenta el rendimiento, sino que tambin reduce el consumo de
memoria de FreeBSD, haciendo que una configuracin de 5MB sea un mnimo ms aceptable. Otras mejoras
incluyen soporte completo para clientes y servidores NIS, soporte para transacciones TCP, llamada bajo demanda

Captulo 1. Introduccin
PPP, soporte para DHCP integrado, un subsistema SCSI mejorado, soporte para ISDN, soporte para ATM, FDDI,
adaptadores Fast y Gigabit Ethernet (1000Mbit), soporte mejorado para los ltimos controladores Adaptec, y cientos
de correcciones de errores.
Tambin hemos considerado los comentarios y sugerencias de muchos de nuestros usuarios y hemos intentado
ofrecer lo que esperamos sea un proceso de instalacin ms sensato y fcil de entender. Tu feedback sobre este
proceso (en constante evolucin) es especialmente bienvenido!
Adems de las distribuciones base, FreeBSD ofrece una coleccin de software con miles de programas comnmente
solicitados. En el momento de escribir esto hay unos 7,000 ports! La lista de ports comprende desde servidores
HTTP (WWW), hasta juegos, lenguages, editores, y prcticamente cualquier cosa intermedia. La coleccin de ports
completa requiere un espacio de aproximadamente 100MB, todos ellos expresados como deltas de sus fuentes
originales. Esto hace que nos sea mucho ms fcil actualizar ports, y reduce de un modo importante el espacio en
disco que necesitaba la anterior coleccin de ports 1.0. Para compilar un port uno simplemente se sita bajo el
directorio del programa que desea instalar, escribe make install, y deja que el sistema se encargue del resto. La
distribucin original completa de cada port que construyes se recupera dinmicamente de un CDROM o un sitio FTP,
de modo que slo necesitas el espacio usado para construir los ports que tu quieras. La mayora de los ports tambin
estn disponibles precompilados en paquetes, que pueden instalarse con un simple comando (pkg_add) para
aqullos que no quieran compilar sus propios ports a partir de los fuentes.
Algunos documentos que pueden ser de ayuda en el proceso de instalacin y al utilizar FreeBSD pueden tambin
encontrarse en el directorio /usr/share/doc de cualquier mquina bajo FreeBSD 2.1 o posterior. Puedes ver los
manuales que estn instalados en local con cualquier navegador que pueda mostrar HTML va las siguientes URLs:
El manual de FreeBSD
/usr/share/doc/handbook/index.html
El FAQ de FreeBSD
/usr/share/doc/faq/index.html
Tambin puedes ver la copia original (y ms frecuentemente actualizada) en http://www.FreeBSD.org/
(../../../../index.html).

Captulo 2. Instalando FreeBSD


As que te gustara probar FreeBSD en tu mquina?. Esta seccin es una gua rpida sobre lo que necesitas hacer.
FreeBSD puede ser instalado desde una gran cantidad de soportes incluyendo CDROM, floppies, cintas magnticas,
una particin MS-DOS y, si tienes conexion de red, va FTP annimo o NFS.
Sea cual sea el soporte de instalacin que elijas, puedes empezar por crear los discos de instalacin como se describe
ms abajo. Arranca tu ordenador con el instalador de FreeBSD, aunque no ests pensando en realizar la instalacin, y
podrs obtener gran cantidad de informacin sobre la compatibilidad del hardware de tu ordenador y FreeBSD,
adems de una descripcin ms exacta sobre las diferentes posibilidades de instalacin.
Si tienes pensado hacer la instalacin va FTP, slo necesitas el disco de arranque, ya que l solo se encarga de
gestionar todo lo referente a la conexin, ya sea ethernet o PPP.
Para ms informacin sobre cmo obtener la ltima distribucin de FreeBSD, por favor, mira la seccin Obteniendo
FreeBSD en el Apndice.
Bin, para empezar a caminar, sigue los siguientes pasos:
1.

Revisa la seccin configuraciones soportadas de esta gua de instalacin para asegurarte de que tu hardware es
soportado por FreeBSD. Sera de gran ayuda que hicieses una lista de cualquier tarjeta especial que tengas
instalada, como controladoras SCSI, tarjetas de red o tarjetas de sonido. Esta lista debera incluir parmatros
relevantes de configuracin como interrupciones (IRQ) y direcciones de entrada/salida (IO ports).

2.

Si ests instalando FreeBSD desde un CDROM tienes diferentes opciones de instalacin:

Si el CD ha sido grabado con el soporte de arranque El Torito, y tu sistema soporta arranque directo desde
CDROM (muchos sistemas antiguos no), simplemente inserta el CD en el lector y arranque directamente
desde l.

Si ests ejecutando DOS y tienes los drivers adecuados para acceder al lector de CDROM, ejecuta el fichero
install.bat incluido en el CD. Este intentar arrancar la instalacin de FreeBSD desde DOS.
Nota: Debes hacer esto desde el DOS y no desde una mquina Windows.

Si quieres instalar FreeBSD desde una particin DOS (por ejemplo, por que FreeBSD no soporta tu lector de
CDROM), ejecuta primero el programa setup para copiar los ficheros adecuados del CD a la particin. A
continuacin ejecuta el programa de instalacin.

3.

Si cualquiera de los dos mtodos anteriores funciona, puedes pasar por alto el resto de esta seccin, en caso
contrario, tu opcin final es crear un disco de arranque con la imgen floppies\boot.flp. Salta al paso 4
para instrucciones sobre como hacerlo.

Si no tienes una distribucin en CDROM, simplemente bjate los discos de instalacin y arranque
(ftp://ftp.FreeBSD.ORG/pub/FreeBSD/4.6.2-RELEASE/floppies/boot.flp) a tu disco duro, asegurndote de que
tu navegador grabe el fichero en lugar de mostrarlo.
Nota: Estas imgenes solo se pueden usar con discos de 1,44Mb.

Captulo 2. Instalando FreeBSD


4.

Haz el disco de instalacin a partir del fichero imgen:

Si ests usando MS-DOS o Windows bjate el programa fdimage.exe


(ftp://ftp.FreeBSD.ORG/pub/FreeBSD/tools/fdimage.exe) o cgelo de tools\fdimage.exe en el CDROM
y ejectalo de la siguiente manera:
E:\ tools\fdimage
floppies\boot.flp a:

El programa fdimage formatear el disco A: y copiar la imgen boot.flp en :l (asumiendo que ests en el
nivel superior de la distribuci de FreeBSD y que las imgenes estn en el subdirectorio floppies , tal y
como suele ser habitual).

Si ests instalando un sistema UNIX para crear las imgenes de disco:


# dd if=boot.flp of=disk_device

disk_device es el dispositivo /dev para la disquetera. En sistemas FreeBSD, ste es /dev/rfd0 para el
disco A: y /dev/rfd1 para el disco B:.

5.

Con el disco de instalacin en el disco A:, rearranca tu sistema. Deberas obtener un prompt de arranque como
este:



FreeBSD BOOT ...


Usage: [[[0:][wd](0,a)]/kernel][-abcCdhrsv]
Use 1:sd(0,a)kernel to boot sd0 if it is BIOS drive 1
Use ? for file list or press Enter for defaults
Boot:

Si no tecleas nada, FreeBSD arrancar automticamente con su configuracin por defecto, despus de una pausa
de 5 segundos. Cuando FreeBSD arranca, comprueba tu ordenador para determinar el hardware instalado. El
resultado de estas comprobaciones es mostrado en la pantalla.
6.

Cuando el proceso de arranque finaliza, el men principal de instalacin de FreeBSD se muestra en pantalla.

Si algo va mal...
Debido a limitaciones en la arquitectura de los PCs, es imposible para el programa de prueba de hardware ser 100
por 100 fiable. En el caso de que tu hardware sea identificado incorrectamente, o que el proceso de prueba cuelgue la
mquina, primero mira la seccin configuraciones soportadas en esta gua de instalacin para asegurar que tu
hardware es soportado por FreeBSD.
Si tu hardware est soportado, resetea el ordenador y cuando aparece el prompt Boot: teclea -c. Esto har que
FreeBSD entre en modo de configuracin de hardware. El kernel de FreeBSD en el disco de intalacin est
configurado asumiendo que la mayor de dispositivos hardware estn configurados tal y como viene de fbrica en lo
referente a IRQs, direcciones de memoria, canales DMA, etc. Si tu hardware ha sido reconfigurado, necesitars usar
la opcin -c en el arranque para indicarle a FreeBSD donde se encuentra cada cosa.
Tambin es posible que la prueba de un dispositivo no existente provoque una correcta deteccin de un dispositivo
que s est presente. En este caso, la prueba para este driver conflictivo deber ser desactivada.

10

Captulo 2. Instalando FreeBSD


AvisoNo desactives ningn dispositivo que necesitas durante la instalacin, como la pantalla (sc0).

En el modo de configuracin puedes:

Listar los drivers de dispositivos presentes en el kernel.

Desactivar los drivers de hardware no instalado en tu sistema.

Cambiar la IRQ, DRQ y direcciones IO usadas por los drivers de dispositivo.

Mientras aparece el prompt config , teclea help para ms informacin sobre los comandos disponibles. Despus

de ajustar los parmetros del kernel con el hardware que tienes instalado, teclea quit en el prompt config para
continuar el arranque con la nueva instalacin.
Una vez FreeBSD est instalado, los cambios hechos en el modo de configuracin sern guardados permanentemente
para que no tengas que reconfigurar el sistema cada vez que arranques. An as, es aconsejable que te crees un kernel
personalizado para optimizar el sistema. Mira en Configuracin del kernel para crear un kernel personalizado.

2.1. Configuraciones soportadas


Actualmente FreeBSD se ejecuta en una variedad de buses ISA, VLB, EISA y PCI basados en PCs, cubriendo desde
un 386sx hasta Pentiums (piensa que 386sx no es recomendado). Tambin se soportan configuraciones IDE o ESDI,
diferentes controladoras SCSI, tarjetas de red y serie, etc.
Un mnimo de cuatro megabytes de RAM son requeridos para ejecutar FreeBSD. Para ejecutar el Sistema X
Window, ocho megabytes de RAM es el mnimo recomendado.
A continuacin te presentamos una lista de todas las controladores de disco y tarjetas de red que actualmente
funcionan en FreeBSD. Otras configuraciones posiblemente funcionen tambin, pero no hemos tenido noticias de
ello.

2.1.1. Controladoras de disco

WD1003 (any generic MFM/RLL)

WD1007 (any generic IDE/ESDI)

IDE

ATA

Adaptec 1505 ISA SCSI controller

Adaptec 152x series ISA SCSI controllers

Adaptec 1535 ISA SCSI controllers

Adaptec 154x series ISA SCSI controllers

Adaptec 174x series EISA SCSI controller in standard and enhanced mode.

Adaptec 274x/284x/2940/2940U/3940 (Narrow/Wide/Twin) series EISA/VLB/PCI SCSI controllers

11

Captulo 2. Instalando FreeBSD

Adaptec AIC7850 on-board SCSI controllers

Adaptec AIC-6360 based boards, which includes the AHA-152x and SoundBlaster SCSI cards.
Nota: No puedes arrancar desde tarjeta SounBlaster ya que no tienen BIOS, la cual es necesaria para
mapear el dispositivo de arranque en los vectores de Entrada/Salida. Son perfectamente usables para cintas
externas, CDROMs, etc. Lo mismo se aplica a cualquier otra tarjeta basada en la AIC-6x60 sin ROM de
arranque. Algunos sistemas tienen una ROM de arranque, la cual es mostrada de alguna manera cuando el
sistema arranca. Revisa la configuracin de tu sistema/placa para ms detalles.

Buslogic 545S & 545c


Nota: Buslogic was formerly known as Bustek.

Buslogic 445S/445c VLB SCSI controller

Buslogic 742A/747S/747c EISA SCSI controller.

Buslogic 946c PCI SCSI controller

Buslogic 956c PCI SCSI controller

NCR 53C810/53C815/53C825/53C860/53C875 PCI SCSI controller.

NCR5380/NCR53400 (ProAudio Spectrum) SCSI controller.

DTC 3290 EISA SCSI controller in 1542 emulation mode.

UltraStor 14F/24F/34F SCSI controllers.

Seagate ST01/02 SCSI controllers.

Future Domain 8xx/950 series SCSI controllers.

WD7000 SCSI controllers.

Con todas las controladoras SCSI soportadas, se consigue ofrecer soporte completo para perifricos SCSI-I &
SCSI-II, incluyendo discos, cintas, DAT, y lectores de CDROM.
Los siguientes tipos de CDROM son soportados actualmente:

SoundBlaster SCSI and ProAudio Spectrum SCSI (cd)

Mitsumi (all models) proprietary interface (mcd)

Matsushita/Panasonic (Creative) CR-562/CR-563 proprietary interface (matcd)

Sony proprietary interface (scd)

ATAPI IDE interface (experimental and should be considered ALPHA quality!) (wcd)

12

Captulo 2. Instalando FreeBSD

2.1.2. Tarjetas de red

Allied-Telesis AT1700 and RE2000 cards

SMC Elite 16 WD8013 Ethernet interface, and most other WD8003E, WD8003EBT, WD8003W, WD8013W,
WD8003S, WD8003SBT and WD8013EBT based clones. SMC Elite Ultra and 9432TX based cards are also
supported.

DEC EtherWORKS III NICs (DE203, DE204, and DE205)

DEC EtherWORKS II NICs (DE200, DE201, DE202, and DE422)

DEC DC21040/DC21041/DC21140 based NICs:

ASUS PCI-L101-TB

Accton ENI1203

Cogent EM960PCI

Compex CPXPCI/32C

D-Link DE-530

DEC DE435

Danpex EN-9400P3

JCIS Condor JC1260

Kingston KNE100TX

Linksys EtherPCI

Mylex LNP101

SMC EtherPower 10/100 (Model 9332)

SMC EtherPower (Model 8432)

SMC EtherPower (2)

Zynx ZX314

Zynx ZX342

DEC FDDI (DEFPA/DEFEA) NICs

Fujitsu FMV-181 and FMV-182

Fujitsu MB86960A/MB86965A

Intel EtherExpress

Intel EtherExpress Pro/100B 100Mbit.

Isolan AT 4141-0 (16 bit)

Isolink 4110 (8 bit)

Lucent WaveLAN wireless networking interface.

Novell NE1000, NE2000, and NE2100 ethernet interface.

13

Captulo 2. Instalando FreeBSD

3Com 3C501 cards

3Com 3C503 Etherlink II

3Com 3c505 Etherlink/+

3Com 3C507 Etherlink 16/TP

3Com 3C509, 3C579, 3C589 (PCMCIA) Etherlink III

3Com 3C590, 3C595 Etherlink III

3Com 3C90x cards.

HP PC Lan Plus (27247B and 27252A)

Toshiba ethernet cards

PCMCIA ethernet cards from IBM and National Semiconductor are also supported.
Nota: Actualmente FreeBSD no soporta las caractersticas PnP (plug-n-play) de algunas tarjetas. Si tu tarjeta
tiene Pnp y te est dando problemas, intenta desactivarle el PnP.

2.1.3. Dispositivos varios

AST 4 port serial card using shared IRQ.

ARNET 8 port serial card using shared IRQ.

BOCA IOAT66 6 port serial card using shared IRQ.

BOCA 2016 16 port serial card using shared IRQ.

Cyclades Cyclom-y Serial Board.

STB 4 port card using shared IRQ.

SDL Communications Riscom/8 Serial Board.

SDL Communications RISCom/N2 and N2pci sync serial cards.

Digiboard Sync/570i high-speed sync serial card.

Decision-Computer Intl. Eight-Serial 8 port serial cards using shared IRQ.

Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound, Gravis UltraSound MAX and
Roland MPU-401 sound cards.

Matrox Meteor video frame grabber.

Creative Labs Video spigot frame grabber.

Omnimedia Talisman frame grabber.

Brooktree BT848 chip based frame grabbers.

X-10 power controllers.

PC joystick and speaker.

14

Captulo 2. Instalando FreeBSD


FreeBSD actualmente no soporta el bus microcanal de IBM (MCA).

2.2. Preparndonos para la instalacin


Existen diferentes mtodos de instalacin de FreeBSD. La siguiente seccin describe la preparacin necesaria para
cada tipo de instalacin.

2.2.1. Antes de instalar desde CDROM


Si tu lector de CDROM no est soportado, por favor, pasa a la seccin Preparacin en MSDOS.
No hay mucho trabajo de preparacin previo para realizar una instalacin satisfactoria desde uno de los CDROMs
de Walnut Creek (otras distribuciones en CDROM tambin es posible que funcionen pero no tenemos manera de
asegurarlo ya que no hemos podido probar ninguno, y tampoco sabemos como estn hechos). Puedes arrancar
directamente el programa de instalacin desde DOS usando el fichero install.bat o puedes hacer los discos de
arranque ejecutando el programa makeflp.bat.
Nota: Si ests ejecutando FreeBSD 2.1-RELEASE y tienes un CDROM IDE, usa los ficheros inst_ide.bat o
atapiflp.bat.

Para acceder al interface ms sencillo de todos (desde DOS), ejecuta el comando view. Aparecer una utilidad DOS
con un men a travs del cual puedes acceder a todas las opciones de instalacin disponibles.
Si ests creando el disco de arranque desde un sistema UNIX, mira el principio de esta gua .
Una vez hayas arrancado desde DOS o floppy, debers ser capaz de poder seleccionar el CDROM como el soporte de
instalacin en el men Media y cargar la distribucin completa desde el CDROM. No se requiere nings soporte
adicional para la instalacin.
Despus de instalar por completo el sistema y arrancar desde el disco duro, puedes montar el CDROM en cualquier
momento tecleando: mount /cdrom
Antes de poder quitar el CDROM, es necesario teclear: umount /cdrom.
Nota: Antes de ejecutar el programa de instalacin asegrate de tener el CDROM en el lector para que ste
pueda ser detectado durante la fase de pruebas de hardware. Esto es necesario tambin si quieres que el
CDROM sea aadido automticamente a la configuracin inicial del sistema.

Finalmente, si quieres que tus usuarios puedan instalar FreeBSD va FTP directamente desde el CDROM de tu
mquina, lo puedes hacer de manera muy sencilla. Una vez tienes la mquina completamente instalada, slo tienes
que adir la siguiente lnea al fichero de passwords (usando el comando vipw):
ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent

15

Captulo 2. Instalando FreeBSD


Cualquiera con conectividad en tu red (y permisos para acceder a ella) puede seleccionar ahora como soporte de la
instalacin el tipo FTP y teclear: ftp://tu_maquina despus de seleccionar Other en el men de servidores
FTP.

2.2.2. Antes de instalar desde Floppy


Si debes instalar desde disquettes, bin por problemas de compatibilidad de hardware o por que te guste hacer las
cosas de la manera ms complicada, antes debes preparar algunos disquettes.
Necesitars, como mnimo, tantos disquettes de 1.44MB o 1.2MB como espacio ocupe la distribucin en el
directorio bin. Si ests preparando estos disquettes bajo DOS, entonces ESTOS disquettes deben estar formateados
con el comando FORMAT de MS-DOS. Si utilizas Windows, usa el comando format del administrador de ficheros.
NO te fes de los discos preformateados. Formatalos t mismo, slo para estar seguro. Muchos de los problemas
reportados en el pasado por usuarios, han tenido que ver con disquettes mal formateados o defectuosos.
Si ests creando los disquettes desde una mquina FreeBSD, formatear los discos tampoco es mala idea. Puedes usar
el comando disklabel y newfs para formatearlos e incluir en ellos el sistema de ficheros UFS. Para hacerlo,
puedes seguir la siguiente secuencia de comandos:
# fdformat -f 1440 fd0.1440
# disklabel -w -r fd0.1440 floppy3
# newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0

Nota: Usa fd0.1200 y floppy5 para discos de 5.25" (o 1.2MB).

Ahora puedes montar los disquettes y escribir en ellos como en cualquier otro sistema de ficheros.
Despus de formatear los disquettes, necesitars copiar los ficheros en ellos. Los ficheros de la distribucin estn
convenientemente distribuidos para que quepan 5 de ellos en cada disquette de 1.44Mb. Utiliza todos los discos
necesarios para incluir en ellos todas las distribuciones que quieras instalar. Cada distribucin debe estar en un
subdirectorio del floppy, por ejemplo: a:\bin\bin.aa, a:\bin\bin.ab, y as hasta completar la distribucin.
Una vez llegues a la pantalla de seleccin del soporte de la instalacin, selecciona Floppy , siendo preguntado por
el resto de parmetros necesarios.

2.2.3. Antes de instalar desde una particin MS-DOS


Para realizar la instalacin desde una particin MS-DOS, copia los ficheros de la distribucin en un directorio
llamado C:\FREEBSD. La estructura de directorios del CDROM tiene que ser parcialmente reproducida dentro de
ste directorio, por lo que te aconsejamos usar el comando xcopy. Por ejemplo, para preparar una instalacin
mnima de FreeBSD:
C:\

MD C:\FREEBSD

C:\

XCOPY /S E:\BIN C:\FREEBSD\BIN\

16

Captulo 2. Instalando FreeBSD


C:\

XCOPY /S E:\MANPAGES C:\FREEBSD\MANPAGES\

Asumiendo que C: es donde tienes espacio libre y E: es la unidad de tu lector de CDROM.


Tienes que copiar cada distribucin que quieras instalar desde MS-DOS, bajo C:\FREEBSD la distribucin BIN es
slo la mnima requerida.

2.2.4. Antes de instalar desde una cinta QIC/SCSI


Instalar desde una cinta es probablemente el mtodo ms sencillo, aparte de una instalacin on-line, va FTP o
CDROM. El programa de instalacin espera que los ficheros estn en formato tar en la cinta, por lo que slo tienes
que seleccionar la distribucin a instalar y copiarla en una cinta en formato tar con un comando como:
# cd /freebsd/distdir
# tar cvf /dev/rwt0 dist1 ... dist2

Cuando ejecutas la instalacin, debers asegurarte de dejar suficiente espacio libre en algn directorio temporal (el
cual podrs elegir), para que el programa de instalacin pueda recuperar todo el contenido de la cinta. Dado al acceso
no aleatorio de las cintas, este mtodo exige un poco de espacio temporal. Necesitars tanto espacio temporal como
contenidos hayan en la cinta.
Nota: Es imprescindible que la cinta est en el lector antes de arrancar con el disco de instalacin.

2.2.5. Antes de instalar sobre una red


Puedes hacer instalaciones de red mediante 3 tipos de conexin:
Puerto serie
SLIP o PPP
Puerto paralelo
PLIP (cable laplink)
Ethernet
Tarjeta ethernet estandar (incluye algunas PCMCIA).
El soporte de SLIP es bastante primitivo, y limitado a conexiones punto a punto como una cable serie entre un
porttil y otro ordenador. La conexin debe ser mediante un cable cruzado serie ya que la instalacin SLIP no ofrece
posibilidad de marcado telefnico; esta facilidad se ofrece mediante la utilidad PPP, la cual aconsejamos usar
siempre que sea posible.
Si ests usando un mdem, PPP es tu nica opcin. Asegrate de tener la informacin de tu proveedor a mano ya que
el proceso de instalacin te la pedir de manera inmediata. Necesitars saber como llamar a tu proveedor usando
comando AT especficos de tu mdem por que el marcador PPP slo ofrece un simple emulador de terminal. Si
usas PAP o CHAP, necesitars teclear los comandos set authname y set authkey antes de teclear el comando

17

Captulo 2. Instalando FreeBSD


term. Psate por el manual ppp y las secciones de las FAQ (../FAQ/userppp.html) para ms informacin. Si tienes
problemas, el log puede ser dirigido a la pantalla usando el comando set log local ....

Si puedes disponer de una conexin punto a punto a otro sistema FreeBSD (2.0R o superior), deberas considerar la
instalacin sobre el puerto paralelo con un cable laplink. La velocidad es mucho mayor que la que podemos
conseguir sobre una conexin serie (por encima de los 50k/seg), obteniendo una instalacin ms rpida.
Finalmente, para la instalacin de red ms rpida posible, una tarjeta ethernet es siempre una buena eleccin.
FreeBSD soporta muchas de las tarjetas ethernet del mercado, una tabla de las tarjetas soportadas (y sus
caractersticas requeridas) est disponible en la seccin Hardware soportado. Si ests usando una de las tarjeta
PCMCIA soportadas, asegrate de tener la tarjeta insertada antes de encender el porttil. Desafortunadamente,
actualmente FreeBSD no soporta la "insercin en caliente" de tarjetas PCMCIA durante el proceso de instalacin.
Tambin necesitars saber tu direccin IP en la red, el valor de la mscara de tu clase de direcciones y el nombre de
tu mquina. Tu administrador de sistemas puede darte todos los valores adecuados a la configuracin de tu red. Si vas
a acceder a otras mquinas por nombre en lugar de direccin IP, necesitars la direccin de un servidor de nombres y
posiblemente la direccin de un gateway (si usas PPP es la direccin IP de tu proveedor). Si no conoces las
respuestas a la mayora de estas preguntas, definitivamente debes hablar con tu administrador de sistemas antes de
intentar ste tipo de instalacin.
Una vez tienes una conexin de red de cualquier tipo funcionando, la instalacin puede continuar sobre NFS o FTP.

2.2.5.1. Preparando la instalacin sobre NFS


La instalacin sobre NFS es muy sencilla: simplemente copia los ficheros de las distribuciones de FreeBSD que
necesites en algn lugar del servidor, y apunta el soporte de instalacin de NFS hacia l.
Si este servidor slo soporta accesos a puertos seleccionados (como ocurre generalmente con las estaciones de
trabajo SUN), necesitars activar esta opcin en el men Options antes de proceder con la instalacin.
Si tienes una conexin de red de poca calidad, con ratios de transferencia muy pobres, tambin deberas activar el
flag apropiado en el men Options.
Para que la instalacin por NFS funcione, el servidor debe soportar el acceso a subdirectorios exportados, por
ejemplo, si el directorio de tu distribucin de FreeBSD 4.6.2 reside en: ziggy:/usr/archive/stuff/FreeBSD
Entonces ziggy debe permitir montar directamete /usr/archive/stuff/FreeBSD, y no slo /usr o
/usr/archive/stuff.
En fichero /etc/exports de FreeBSD, esto es controlado por la opcin -alldirs . Otros servidores NFS pueden
usar opciones diferentes. Si obtienes el mensaje Permission Denied por parte del servidor, significa que no tienes esta
opcin activada de manera adecuada.

2.2.5.2. Preparando una instalacin por FTP


La instalacin por FTP se puede realizar desde cualquiera de los servidores mirror que contengan una versin
razonablemente actualizada de FreeBSD 4.6.2. Un completo men de elecciones razonables para prcticamente
cualquier parte del mundo est disponible en el men de instalacin FTP.
Si ests instalando desde cualquier otro servidor no listado en ese men, o tienes problemas con la configuracin del
servidor de nombres o la resolucin correcta, puedes especificar tu propia URL seleccionando la opcin Other en
el men. Una URL tambin puede ser una direccin IP, de manera que lo siguiente funcionara en la ausencia de un
servidor de nombres:

18

Captulo 2. Instalando FreeBSD


ftp://165.113.121.81/pub/FreeBSD/4.6.2;-RELEASE

Hay dos modos de instalacin FTP que puedes usar:


FTP Activo
Para todas las transferencias FTP, usa el modo Activo. Esto no funcionar a travs de firewalls, pero
funcionar sin problemas con servidores FTP antiguos que no soportan el modo pasivo. Si tu conexin se cuelga
con el modo pasivo, intenta con el modo activo!.
FTP Pasivo
Para todas las transferencias FTP usa el modo Pasivo. Esto permite al usuario conectar a travs de firewalls
que no aceptan conexiones entrantes en direcciones de puertos aleatorias.
Nota: Los modos Activos y Pasivos no son lo mismo que una conexin a travs de proxy, donde un servidor
proxy FTP est escuchando y reenviando las peticiones FTP!.

Para un servidor proxy FTP, normalmente deberas darle el nombre del servidor real al que quieres conectar como
parte del nombre de usuario despus de una @-sign. El servidor proxy reenviar la peticin al servidor adecuado. Un
ejemplo: digamos que quieres realizar la instalacin desde ftp.freebsd.org usando el servidor proxy FTP
foo.bar.com, que est escuchando en el puerto 1234.
En este caso, tienes que ir al men de opciones, y poner el nombre de usuario de FTP como ftp@ftp.freebsd.org, y tu
direccin de correo como password. Como medio de instalacin , especifica FTP (o FTP pasivo, si el proxy lo
soporta) y la URL ftp://foo.bar.com:1234/pub/FreeBSD
/pub/FreeBSD de ftp.freebsd.org es "cacheado" bajo foo.bar.com, permitiendote realizar la instalacin
desde esa mquina (la cual coge los ficheros de ftp.freebsd.org a medida que la instalacin los necesita).

2.3. Instalando FreeBSD


Una vez has tomado nota de los pasos apropiados en la preinstalacin, debers poder instalar FreeBSD sin ningn
tipo de problema.
Si tienes algn problema, deberas vover atrs y releer la seccin de preparacin aplicable a tu medio de instalacin.
Si ests teniendo problemas de hardware, o FreeBSD se niega a arrancar, lee la Gua de Hardware que puedes
encontrar en el disco de arranque para posibles soluciones.
El disco de arranque de FreeBSD contiene toda la documentacin on-line que debers necesitar para realizar la
instalacin. Si no es as, nos gustara saber que es lo que te ha confundido o dnde has tenido ms problemas. Env
tus comentarios a FreeBSD documentation project mailing list <freebsd-doc@FreeBSD.org>. El objetivo del
programa de instalacin de FreeBSD (sysinstall) es estar suficientemente documentado para poder realizar una
instalacin sin problemas.
Mientras tanto, puedes encontrar til esta tpica secuencia de instalacin:

19

Captulo 2. Instalando FreeBSD


1. Arranca con el disco de arranque. Despus de la secuencia de arranque que puede tardar entre 30 segundos y 3
minutos, dependiendo del hardware, debera aparecer un men de opciones iniciales. Si el disco no arranca o el
arranque se cuelga en algn momento, lee la seccin Q&A de la Gua de Hardware para conocer las posibles
causas.
2. Pulsa F1. Deberas ver unas instrucciones bsicas sobre el sistema de mens y del programa en general. Si no
has usado este sistema de men anteriormente, por favor lelo.
3. Selecciona la opcin Options y configura las preferencias que puedas tener o necesitas.
4. Selecciona la instalacin Novice, Custom o Express, dependiendo de la ayuda que quieras recibir del programa
de instalacin durante todo el proceso. Si nunca has usado FreeBSD anteriormente, la instalacin Novice es la
ms recomendada.
5. El men de configuracin final te permite configurar tu instalacin de FreeBSD a travs de un sistema guiado
por mens. Algunas secciones, como la de red, pueden ser importantes si has hecho la instalacin desde
CDROM/Cinta/Floppy y no has configurado todava tus interfaces de red (asumiendo que exista alguno).
Configurando adecuadamente en este momento los interfaces permitira que FreeBSD est activo en la red
cuando reinicies por primera vez desde el disco duro.

2.4. Preguntas y Respuestas para usuarios de MS-DOS


Muchos usuarios de FreeBSD querrn instalar FreeBSD en PCs habitados por MS-DOS. Aqu estn algunas de las
pregunas (y respuestas) ms comunes sobre la instalacin de FreeBSD en estos sistemas.
Ayuda! No tengo espacio. Necesito borrarlo todo?
Si tu mquina est todava ejecutando MS-DOS y tienes poco o ningn espacio libre disponible para la instalacin de
FreeBSD, no todo est perdido!. Quizs encuentres til la utilidad FIPS, disponible en el directorio tools del
CDROM de FreeBSD, o en cualquiera de los mirrors de FreeBSD.
FIPS te permite repartir una particin MS-DOS en dos partes, preservando la particin original permitiendo la
instalacin en la segunda. Primero debes defragmentar tu particin MS-DOS usando el programa DEFRAG de DOS
6.x o las utilidades Norton. Despus ejecuta FIPS. El propio programa te preguntar todos los datos que necesite
conocer. Finalmente puedes reiniciar la mquina e instalar FreeBSD en la segunda particin. Mira el men
Distributions para hacer una estimacin de la cantidad de espacio necesario para el tipo de instalacin que deseas
hacer.
Puedo usar sistemas de ficheros comprimidos desde FreeBSD?
No. Si ests usando una utilidad como Stacker(tm) o DoubleSpace(tm), FreeBSD solo ser capaz de usar la parte del
sistema de ficheros no comprimida. El resto del sistema de ficheros se mostrars como un nico fichero. No borres
este fichero. Lo agradecers enormemente!.
Es mejor solucin crear otra particin primaria de MS-DOS no comprimida y usarla para la comunicacin entre
MS-DOS y FreeBSD.
Puedo montar mis particiones MS-DOS extendidad?
S. Las particiones extendidas de DOS son mapeadas al final del otro slices en FreeBSD, por ejemplo, tu disco D:
ser /dev/sd0s5, tu disco E: ser /dev/sd0s6 y as respectivamente. Este ejemplo asume, por supuesto, que tu
particin extendida est en el disco SCSI 0. Para discos IDE, sustituye wd por sd. Para montar las particiones
extendidas tienes que hacerlo exactamente igual que cualquier otra particin o disco DOS:

20

Captulo 2. Instalando FreeBSD


# mount -t msdos /dev/sd0s5 /dos_d

Puedo ejecutar binarios MS-DOS bajo FreeBSD?


BSDI ha donado su emulador DOS al mundo BSD y ste ha sido portado a FreeBSD.
Hay tambin una (tecnicamente) buena aplicacin disponible en la Coleccin de Ports llamada pcemu, la cual te
permite ejecutar muchos binarios en modo texto emulando por completo una CPU 8088.

21

Captulo 3. Conceptos Bsicos de Unix


3.1. Sinpsis
Reescrito por Chris Shumway <cshumway@osd.bsdi.com>, 10 Mar 2000.
El siguiente captulo cubre la funcionalidad y rdenes bsicas del sistema operativo FreeBSD. Si se es nuevo en
FreeBSD, seguramente querr leer este captulo antes de buscar ayuda.

3.2. Permisos
FreeBSD, cuya raiz histrica es el UNIX BSD, tiene sus fundamentos basados en varios conceptos clave de UNIX.
El primero, y ms remarcado, es que FreeBSD es un sistema operativo multi-usuario. El sistema puede manejar
varios usuarios trabajando todos simultneamente y en tareas que no guardan relacin entre s. El sistema es el
responsable de compartir y administrar peticiones de dispositivos de hardware, perifricos, memoria y tiempo de
Unidad Central de Proceso (CPU) de manera equitativa para cada usuario.
Debido a que el sistema es capaz de soportar mltiples usuarios, todo lo que el sistema administra tiene un conjunto
de permisos que gobiernan quin puede leer, escribir y ejecutar el elemento. Estos permisos se guardan como octetos
divididos en tres partes: una para el propietario del archivo, otra para el grupo al que el archivo pertenece, y otra para
cualquier otro. Esta representacin numrica funciona as:
Valor

Permiso

Listado de Directorio

0
1

No leer, no escribir, no ejecutar


No leer, no escribir, ejecutar

---

2
3

No leer, escribir, no ejecutar


No leer, escribir, ejecutar

-w-

4
5

Leer, no escribir, no ejecutar


Leer, no escribir, ejecutar

r--

6
7

Leer, escribir, no ejecutar


Leer, escribir, ejecutar

rw-

--x

-wx

r-x

rwx

Si se muestra un listado expandido de directorio mediante ls -l, se mostrarn en una columna los permisos de
fichero para el propietario, grupo y todos los dems. Veamos como se descompone:
-rw-r--r--

El primer carcter, de izquierda a derecha, es un carcter especial que indica si se trata de un archivo normal, un
directorio, un dispositivo especial de tipo carcter o bloque, un socket, o cualquier otro dispositivo de
pseudo-archivo. Los siguientes tres caracteres, expresados como rw- muestran los permisos para el propietario del
archivo. Los siguientes tres caracteres, r-- muestran los permisos para el grupo al que el archivo pertenece. Los
ltimos tres caracteres, r--, muestran los permisos para el resto del mundo. Un guin indica que el permiso est
desactivado. En el caso de este archivo, los permisos estn asignados de tal manera que el propietario puede leer y
escribir en el archivo, el grupo puede leer el archivo, y el resto del mundo slo puede leer el archivo. De acuerdo con
la tabla que se muestra ms arriba, los permisos para este archivo seran 644, donde cada cifra representa las tres

22

Captulo 3. Conceptos Bsicos de Unix


partes de los permisos del archivo.
Todo sto est muy bien, pero cmo controla el sistema los permisos de los dispositivos? FreeBSD en realidad trata
la mayora de los dispositivos hardware como un archivo que los programas pueden abrir, leer y en los que pueden
escribir datos como si de cualquier otro archivo se tratara. Estos archivos especiales de dispositivos se encuentran en
el directorio /dev.
Los directorios tambin son tratados como archivos. Tienen permisos de lectura, escritura y ejecucin. El bit de
ejecucin en un directorio tiene un significado ligramente distinto que para los archivos. Cuando un directorio est
marcado como ejecutable significa que se puede mirar dentro, por ejemplo, se podra hacer un listado de ese
directorio.
Hay ms permisos, pero se usan principalmente en circunstancias especiales como los binarios ejecutables de tipo
"setuid" y los los directorios de tipo "sticky". Si desea ms informacin acerca de los permisos de archivos y cmo
establecerlos, asegrese de mirar la pgina de manual de chmod(1).

3.3. Estructura de directorios


Como FreeBSD utiliza sus sistemas de archivos (file systems) para determinar muchas operaciones fundamentales en
el sistema, la jerarqua del sistema de archivos es extremadamente importante. Dado que la pgina de manual de
hier(7) proporciona una descripcin completa de la estructura de directorios, no la vamos a repetir aqu. Para ms
informacin, puede consultar hier(7).
De una especial importancia es el raiz (root) de todos los directorios, el directorio /. Este directorio es el primero en
ser montado al arrancar y contiene contiene el sistema bsico necesario a la hora de iniciar. El directorio raiz tambin
contiene puntos de montaje para cualquier otro sistema de archivos que se desee montar.
Un punto de montaje es un directorio donde se pueden injertar al sistema de archivos raiz otros sistemas de ficheros
adicionales. Los puntos de montaje convencionales incluyen /usr, /var, /mnt y /cdrom. Estos directorios
directorios se corresponden habitualmente con entradas en en archivo /etc/fstab. /etc/fstab es una tabla que
sirve como referencias al sistema y contiene los diferentes sistemas de archivos y sus respectivos puntos de montaje.
La mayora de los sistemas de archivos que figuran en /etc/fstab son montados automticamente al arrancar por
el guin de rdenes (script) rc(8) a no ser que contengan la opcin noauto. Consltese la pgina del manual fstab(5)
para ms informacin acerca del formato del archivo /etc/fstab y de las opciones que se pueden especificar.

3.4. Intrpretes de rdenes (Shells)


En FreeBSD, gran parte del trabajo diario se realiza a travs de un interfaz de la linea de rdenes llamado "shell". El
principal trabajo del shell es recoger rdenes del canal de entrada y ejecutarlas. Muchos shells tienen tambin
integradas funciones para ayudarnos en las tareas cotidianas tales como la manipulacin de archivos, edicin de
lneas de rdenes, macros de rdenes, expansin de expresiones regulares en nombres de archivo y variables del
sistema. FreeBSD viene con un conjunto de shells, como sh, el shell Bourne y csh, el shell C. Hay disponibles
muchos otros shells en la "FreeBSD Ports Collection" que son mucho ms potentes, como bash y tcsh.
Qu shell usar? Es cuestin de gustos. Si se es programador de C se puede sentir ms cmodo con tcsh, un shell con
una sintaxis similar al C. Si se proviene del mundo Linux o se es nuevo en el interfaz de rdenes de Unix, se puede
probar con bash. El asunto es que cada shell posee unas propiedades nicas que pueden o no funcionar con el
entorno de trabajo preferido y se ha de efectuar una eleccin sobre el shell a usar.

23

Captulo 3. Conceptos Bsicos de Unix


Una de las propiedades comunes de un shell es que completa los nombres de archivo. Dada la introduccin de las
primeras letras de una orden o del nombre de un archivo, se puede hacer que el shell complete automticamente el
resto de la orden o el nombre del archivo pulsando la tecla TAB. Aqu va un ejemplo. Supongamos que se tienen dos
archivos llamados foobar y foo.bar. Se quiere borrar foo.bar. Lo que habra que teclear es: rm
fo[TAB].[TAB].
El shell nos mostrara rm foo[BEEP].bar.
El [BEEP] es el pitido de consola (console bell): es el shell dicindonos que fue incapaz de completar totalmente el
nombre de archivo porque hay ms de una coincidencia. Tanto foobar como foo.bar comienzan por fo, pero solo
se pudo completar hasta foo. Si se teclea ., y de nuevo TAB, el shell ser capaz de introducir el resto del nombre por
nosotros.
Otra funcin del shell son las variables de entorno. Las variables de entorno son parejas de valores clave
almacenados en el espacio de entorno del shell. Este espacio puede ser ledo por cualquier programa invocado por el
shell y, por tanto, en l se encuentra bastante informacin relativa a la configuracin de programas. Lo siguiente es
una lista de las variables de entorno ms comunes y su significado:
Variable

Descripcin

USER

Nombre de usuario con el que se ha entrado al sistema.

PATH

Lista de directorios, separada por puntos y coma, en los


que se busca ejecutables.
Nombre en la red de la pantalla de X11 a la que
conectarse, si se encuentra disponible.

DISPLAY
SHELL
TERM

El shell actual.
El nombre del terminal del usuario. Se usa para
determinar las posibilidades del terminal de datos.

TERMCAP

Base de datos donde encontrar los cdigos de escape


necesarios para realizar diferentes funciones en el
terminal.

OSTYPE

Tipo de sistema operativo. Por ejemplo, FreeBSD.


Arquitectura de la CPU en la que el sistema se est
ejecutando.

MACHTYPE
EDITOR
PAGER
MANPATH

El editor de texto preferido por el usuario.


El paginador de texto preferido por el usuario.
Lista de directorios en los que se busca pginas de
manual, separados por puntos y coma.

Visualizar o establecer una variable de entorno difiere ligeramente de shell a shell. Por ejemplo, en los shells al estilo
C como tcsh y csh, se usara setenv para establecer y visualizar las variables de entorno actuales. Siguiendo el
ejemplo, para establecer o modificar el valor de EDITOR, bajo csh o tcsh una orden como la siguiente establecera el
valor de EDITOR a /usr/local/bin/emacs:
% setenv EDITOR /usr/local/bin/emacs

Bajo los shells tipo Bourne (Bourne Shells):


% export EDITOR="/usr/local/bin/emacs"

24

Captulo 3. Conceptos Bsicos de Unix


Tambin se puede hacer que la mayora de los shells muestren el contenido de una variable de entorno situando el
carcter $ delante del nombre de la variable desde la lnea de rdenes. Por ejemplo, echo $TERM mostrar
cualquiera que sea el valor que se le haya establecido a TERM, porque el shell expande el valor de TERM y se lo pasa
al programa echo.
Los shells manejan muchos caracteres especiales, llamados meta-caracteres, como representaciones especiales de
datos. El mas comn es el carcter *, que representa cualquier nmero de caracteres en un nombre de archivo. Estos
meta-caracteres especiales se pueden usar para la expansin de nombres de archivos. Por ejemplo, teclear echo * es
casi lo mismo que introducir ls porque el shell recoge todos los archivos que coinciden con * y se los pone en la
lnea de rdenes a echo para que los vea.
Para evitar que el shell interprete estos caracteres especiales, se pueden salvar poniendo el carcter contrabarra (\)
delante de ellos. echo $TERM muestra cualquiera que sea el valor establecido para el terminal que estamos usando.
echo \$TERM muestra $TERM tal cual.

3.4.1. Cambiando de shell


La manera ms fcil de cambiar de shell es usando la orden chsh. Al ejecutar chsh se nos situar dentro del editor
de texto que figure en la variable de entorno EDITOR o, de no estar configurada, se nos abrir vi. Cmbiese la lnea
Shell: adecuadamente.
Tambin se le puede suministrar a chsh la opcin -s; sto establecer el shell por nosotros sin necesidad de entrar
en el editor de texto. Por ejemplo, si se desea cambiar el shell a bash, lo siguiente realizar el ajuste:
% chsh -s /usr/local/bin/bash

Ejecutar chsh sin parmetros y cambiar el shell desde all tambien funcionara.
Nota: El shell que se desee usar debe figurar en el archivo /etc/shells. Si se ha instalado un shell desde la
coleccin de ports, entonces esto ya se habr realizado. Si se ha instalado manualmente el shell, se debe
realizar el cambio pertinente.
Por ejemplo, si se instal manualmente bash y se situ en /usr/local/bin, debera hacer:
# echo "/usr/local/bin/bash"

/etc/shells

Y entonces volver a ejecutar chsh.

3.5. Editores de texto


Gran parte de la configuracin de FreeBSD se realiza modificando archivos de texto. A causa de esto, es una buena
idea familiarizarse con un editor de texto. FreeBSD viene con unos cuantos como parte del sistema base y muchos
ms se encuentran disponibles en la coleccin de ports.
El editor de textos ms fcil y rpido de aprender es uno llamado ee, cuyo nombre proviene del ingls "easy editor"
(editor fcil). Para iniciar ee se debera teclear en la lnea de rdenes ee filename, donde filename es el nombre

25

Captulo 3. Conceptos Bsicos de Unix


del archivo que deseamos editar. Por ejemplo, para editar /etc/rc.conf, teclese ee /etc/rc.conf. Una vez
dentro de ee, todas las posibles rdenes para manipular las funciones del editor se presentan en la parte superior de la
pantalla. El carcter acento circunflejo ^ representa a la tecla de control en el teclado, o sea que ^e significa pulsar
simultneamente la tecla control y la letra e. Para abandonar ee, se debe pulsar la tecla escape y elegir abandonar
(leave) el editor. El editor preguntar entonces si se desean conservar los cambios si el archivo hubiera sido
modificado.
FreeBSD viene tambin con editores de texto mucho ms potentes. Por ejemplo, vi como componente del sistema
bsico y emacs o vim como parte de la coleccin de ports. Estos editores ofrecen mucha ms funcionalidad y
potencia a expensas de un aprendizaje un poco ms complicado. De cualquier manera, si se planea editar muchos
textos, aprender un editor ms potente como vim o emacs le ahorrar mucho tiempo a largo plazo.

3.6. Para ms informacin


3.6.1. Pginas de manual
La documentacin ms exhaustiva de FreeBSD se encuentra en la forma de pginas de manual. Casi todos los
programas del sistema vienen con un sucinto manual de referencia explicando el funcionamiento bsico y los
diferentes argumentos. Estos manuales pueden ser revisados con el programa man. El uso del programa man es
sencillo:
% man command

command es el nombre del programa del que se quiere saber algo. Por ejemplo, para saber algo acerca del programa
ls teclese:
% man ls

El manual en lnea est dividido en secciones numeradas:


1. rdenes/programas de usuario.
2. LLamadas de sistema y cdigos numricos de error.
3. Funciones de las libreras de C.
4. Manejadores de Dispositivos.
5. Formatos de Archivos.
6. Juegos y otros divertimentos.
7. Informacin miscelnea.
8. Programas relativos al mantenimiento y operacin del sistema.
9. Desarrolladores del Kernel.
En algunos casos, el mismo epgrafe puede aparecer en ms de una seccin del manual en lnea. Hay, por ejemplo,
un programa de usuario llamado chmod y una llamada de sistema chmod(). En este caso se le puede especificar a
man cul se desea especificando la seccin:
% man 1 chmod

26

Captulo 3. Conceptos Bsicos de Unix


Esto nos mostrar la pgina del manual en lnea del programa de usuario chmod. Las referencias a una seccin
concreta del manual en lnea se sitan tradicionalmente entre parntesis en la documentacin impresa, de tal manera
que chmod(1) se refiere al programa de usuario chmod y chmod(2) se refiere a la llamada de sistema.
Esto est muy bien si se conoce el nombre del programa y simplemente se quiere saber cmo usarlo. Pero, qu si se
recuerda el nombre del programa? Se puede usar man para que realice una bsqueda mediante palabras clave en las
descripciones de programas usando el argumento -k:
% man -k mail

Con esta orden se nos mostrar una lista de programas que contienen la palabra clave mail en sus descripciones.
sto equivale a usar el programa apropos.
Si se est mirando todos esos curiosos programas que residen en /usr/bin y no se tiene ni puetera idea de que
narices hacen realmente, hgase un sencillo:
% cd /usr/bin
% man -f *

o
% cd /usr/bin
% whatis *

que hace exactamente lo mismo.

3.6.2. Archivos de informacin GNU


FreeBSD incluye muchas aplicaciones y utilidades producidas por la Free Software Foundation (FSF). De manera
adicional a las pginas de manual estos programas vienen con documentos de hipertexto ms detallados, llamados
archivos info, que pueden ser revisados con el programa info o, si se ha instalado emacs, el modo "info" de emacs.
Para usar el programa info(1) simplemente teclese:
% info

Para una descripcin breve, teclese h. Para una referencia rpida de un programa, teclese ?.

27

Captulo 4. Instalando Aplicaciones: Paquetes


y Ports
4.1. Sinpsis
FreeBSD esta colmado de una excelente coleccin de herramientas de sistema, como parte del sistema base. A pesar
de esto, existe gran cantidad de cosas que uno requiere hacer para poner las cosas realmente en marcha, para lo cual
se necesita instalar software adicional de terceros. FreeBSD ofrece dos tecnologas complementarias para instalar
software de terceros en nuestro sistema: la Coleccin de Ports de FreeBSD y Paquetes binarios. Cualquiera de los
dos sistemas puede ser usado para instalar las versiones ms recientes, de forma local o directamente desde la red.
Despus de leer este captulo, usted sabr:

Como instalar paquetes binarios de software de terceros.

Como compilar software de terceros desde la Coleccin de Ports.

Como remover paquetes o ports instalados previamente.

4.2. Generales sobre la Instalacin de Software


Si usted ha usado un sistema Unix con anterioridad, sabr que el procedimiento tpico para instalar software de
terceros es algo similar a esto:
1.

Descargar el software, que puede distribuirse en formato de cdigo fuente, o binario.

2.

Desempacar el software de su formato de distribucin (normalmente en un tarball comprimido ya sea con


compress(1) o gzip(1)).

3.

Ver la documentacin (quizs un fichero README, o los ficheros del subdirectorio doc/) para ver como instalar
el software.

4.

Si el software es distribuido como fuentes, compilarlo. Esto puede requerir que editemos el fichero Makefile o
que ejecutemos el script configure, entre otras.

5.

Instalar y probar el software.

Y esto solamente si todo marcha bien. Si usted esta instalando un software que no ha sido creado especficamente
para FreeBSD, puede que sea necesario editar el cdigo para que trabaje correctamente.
Si usted lo desea, puede continuar instalando software de la forma tradicional bajo FreeBSD. Aunque FreeBSD le
provee de dos tecnologs que le pueden ahorrar gran cantidad de tiempo y esfuerzo: los paquetes y ports. AL
momento de escribir esto, existen ms de 7,000 aplicaciones de terceros, que estan disponibles de esta manera.
Los paquetes de FreeBSD, para cualquier aplicacin, son un simple fichero que debe descargar. Los paquetes
contienen copia de binarios pre-compilados de la aplicacin, as como cualquier fichero de configuracin necesario o
documentacin. Los paquetes descargados, pueden ser manipulados con los comandos de manejo de paquetes de
FreeBSD, tales como: pkg_add(1), pkg_delete(1), pkg_info(1), etc.

28

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


EL instalar una aplicacin nueva puede realizarse con un simple comando.
Por otro lado un Port de FreeBSD, es una coleccin de ficheros diseados para automatizar el proceso de
compilacin del software, desde el cdigo fuente.
Recuerde que existen ciertos pasos que deber llevar a cabo para efecto de compilar un programa por usted mismo
(desempacar, parchar, compilar e instalar). Los ficheros que conforman un port, permiten automatizar esto por usted.
Usted ejecuta un conjunto de comandos simples y el cdigo fuente es descargado, desempacado, parchado,
compilado e instalado.
De hecho, el sistema de ports tambin se puede usar para crear paquetes que posteriormente manipule con pkg_add
y las otras utilidades del manejo de paquetes que veremos en breve.
Tanto el sistema de ports como el de paquetes entienden las dependencias. Suponga que desea instalar una aplicacin
que depende de que una librera especfica este instalada. Tanto la librera como la aplicacin existen en FreeBSD
como paquete o port. Si utiliza el comando pkg_add o el sistema de ports para instalar la aplicacin, ambos notaran
que la librera no esta instalada, y procedern a instalar la librera en primer trmino.
Dado que ambas tecnologs son similares, quizs se pregunte por que FreeBSD se toma la molesta de contar con
ambas. Los Paquetes y los Ports cuentan con sus propias fortalezas, y cual utlizar depender de sus preferencias.
Beneficios de los Paquetes

El tpico fichero tarball de un paquete, es normalmente ms pequeo que el tarball comprimido que cuenta con el
cdigo fuente del software.

Los paquetes no requiere de compilacin adicional. Este punto puede ser de gran importancia, principalmente en
equipos lentos, cuando compila grandes aplicaciones tales como Mozilla, KDE, o GNOME.

Los paquetes no requieren que usted comprenda el proceso que envuelve el compilar software bajo FreeBSD.

Beneficios del Sistema de Ports

Normalmente los paquetes son compilados con opciones conservadoras, en virtud del gran numero de equipos
donde sern instalados. Al instalar desde el port, usted puede editar las preferencias para (por ejemplo) ejecutarse
bajo un procesador Athlon o Pentium III.

Algunas aplicaciones opciones relacionadas con lo que pueden y lo que no pueden hacer. Por ejemplo Apache
puede ser configurado con una gran variedad de opciones. Al compilarlo desde los ports usted no tiene por que
aceptar todas, puede seleccionar cuales opciones desea.
En algunos casos, existen varios paquetes para la misma aplicacin con diferentes opciones. Por ejemplo,
Ghostscript esta disponible como paquete ghostscript o bien como paquete ghostscript-nox11,
dependiendo si usted cuenta o no con el servidor X11. En este caso decidir puede ser sencillo, pero esto se puede
volver un problema si cuenta con ms de una o dos opciones al momento de la compilacin.

Las condiciones de licenciamiento de algunas aplicaciones, prohiben la distribucin de binarios. Solo permiten la
distribucin del cdigo fuente.

Existe gente que no confia en los binarios. Al menos con el cdigo fuente, usted puede (en teora) revisarlo y
localizar problemas potenciales.

Si cuenta con parches locales, necesitar el cdigo fuente para poder aplicarlos.

Existe gente que le gusta contar con el cdigo fuente, para poder leerlo en ratos de ocio, modificarlo, tomar partes
prestadas (si la licencia lo permite, claro esta), y tal.

29

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


Para poder estar actualizado en sus ports, suscribase a FreeBSD ports mailing list
<freebsd-ports@FreeBSD.org>.
El resto de este captulo le explicar como usar los ports y paquetes para instalar software de terceros en FreeBSD.

4.3. Localizando su Aplicacin


Antes de poder instalar cualquier software, usted debe saber que desea instalar y como se llama dicha aplicacin.
La lista de software disponible para FreeBSD crece constantemente. Afortunadamente existen varias formas de
localizar lo que busca:

El sitio web de FreeBSD mantiene una base actualizada de todas las aplicaciones disponibles para FreeBSD, en la
direccin http://www.FreeBSD.org/ports/ (../../../../ports/index.html). Esta base esta segmentadas por categoras, y
usted puede buscar por nombre (si lo sabe) o bien listas las aplicaciones disponibles en cierta categora.

Dan Langille mantiene FreshPorts, en http://www.FreshPorts.org/. FreshPorts verifica los cambios en las
aplicaciones del rbol de ports, y le permite observar uno o ms ports, y le enviar un correo cada vez que se
actualicen.

Si no conoce el nombre de la aplicacin que desea, pruebe usar un sitio como FreshMeat
(http://www.freshmeat.net/) para encontrar una aplicacin, posteriormente verifique en el sitio de FreeBSD, para
ver si la aplicacin ha sido portada a FreeBSD.

4.4. Usando el Sistema de Paquetes


Contribuido porChern Lee.

4.4.1. Instalando un Paquete


Puede usar la utilidad pkg_add(1) para instalar software de un paquete bajo FreeBSD, desde un fichero local o desde
un servidor remoto que esta en red.
Ejemplo 4-1. Descargando un Paquete e Instalandolo Localmente
# ftp -a ftp2.FreeBSD.org

Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230230This machine is in Vienna, VA, USA, hosted by Verio.
230Questions? E-mail freebsd@vienna.verio.net.
230230230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/ports/packages/sysutils/

30

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


250 CWD command successful.
ftp> get lsof-4.56.4.tgz

local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz


200 PORT command successful.
150 Opening BINARY mode data connection for lsof-4.56.4.tgz (92375 bytes).
100% |**************************************************| 92375
00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp> exit
# pkg_add lsof-4.56.4.tgz

Si usted no cuenta con una fuente local de paquetes (como pudiese ser un CDROM de FreeBSD), pudiese ser que su
mejor alternativa sea usar pkg_add(1). Esto provocar que la utilidad determine automticamente el formato del
objeto correcto, para que posteriormente lo descargue y lo instale desde un sitio FTP.
# pkg_add -r lsof

En el ejemplo anterior, el paquete correspondiente ser descargado e instalado sin mayor intervencin del usuario.
pkg_add(1) utiliza pkg_add(1) para descargar los ficheros, que toma como referencia varias variables de entorno, que
incluyen FTP_PASSIVE_MODE, FTP_PROXY y FTP_PASSWORD. Quizs deba modificar alguna de estas, si se
encuentra detrs de un firewall, o bien usar un proxy FTP/HTTP. Vea la pgina de ayuda fetch(3) para una lista
completa. Tambin puede notar que en el ejemplo anterior usamos lsof en vez de lsof-4.56.4. Cuando hacemos
uso de fetch de forma remota, la versin del paquete debe ser removida. El programa pkg_add(1) obtendr
automticamente la versin ms reciente.
Los paquetes son distribuidos en formato .tgz. puede encontrarlos en
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/ (ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/), o bien,
en el CDROM de FreeBSD. Cada CD de la distribucin de 4 CDs (y del PowerPak, etc) contiene los paquetes en el
directorio /packages. El orden de dicho directorio, es similar al rbol de /usr/ports. Cada categora cuenta con
su subdirectorio, y todos los paquetes estan disponibles en el directorio All.
La estructura del directorio de paquetes es identica a la de ports; estos trabajan en conjunto para formar el sistema de
paquetes/ports.

4.4.2. Eliminando un Paquete


Para eliminar un paquete previemante instalado, utilice la utilidad pkg_delete(1).
# pkg_delete xchat-1.7.1

4.4.3. Manejo de Paquetes


pkg_info(1) es una utilidad que muestra y describe todos los paquetes que tenemos instalados.
# pkg_info

cvsup-16.1
docbook-1.2
...

A general network file distribution system optimized for CV


Meta-port for the different versions of the DocBook DTD

31

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


pkg_version(1) es una utilidad que resume las versiones de los paquetes instalados. Estas son comparadas con las
versiones actuales del rbol de ports.
# pkg_version

cvsup
docbook
...

=
=

Los smbolos de la segunda columna, nos indican la edad relativa de la versin instalada, comparada con la versin
disponible en el rbol local de ports.
Smbolo

Significado

La versin del paquete instalado es igual a la versin del


rbol local de ports.
La versin instalada es ms antigua a la versin del rbol
local de ports.

?
*

La versin instalada es ms reciente que la que se


encuentra en el rbol local de ports (probablemente el
rbol de ports esta desactualizado).
El paquete instalado no se ha localizado en el ndice
(index) de los ports.
Existen multiples versiones del paquete.

4.4.4. Miscelaneos
Toda la informacin relacionada con los paquetes, se guarda en el directorio /var/db/pkg. Los paquetes instalados,
as como una descripcin de los mismos, puede encontrarse en este subdirectorio.

4.5. Usando la Coleccin de Ports


La siguiente seccin le provee de las instrucciones bsicas para instalar o remover programas de su sistema, usando
la Coleccin de Ports.

4.5.1. Obteniendo la Coleccin de Ports


Antes de poder instalar ports, primero debe de hacerse de la Coleccin de Ports que escencialmente esta
compuesta de ficheros Makefiles, parches y ficheros con la descripcin de los ports, ubicados en /usr/ports.
Cuando instal su sistema FreeBSD, el programa Sysinstall le pregunto si deseaba instalar la Coleccin de Ports. Si
contesto que no, puede seguir estas instrucciones para obtener dicha coleccin:
Metodo por Sysinstall
Este metodo implica el uso del programa sysinstall nuevamente, para instalar Coleccin de Ports.

32

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


1.

Siendo usuario root, ejecute el programa /stand/sysinstall como se muestra:


# /stand/sysinstall

2.

Posicionese en la opcin Configure, y presione Enter.

3.

Seleccione la opcin Distributions, y presione Enter.

4.

Seleccione la opcin ports, y presione la Barra Espaciadora.

5.

Dirijase a la opcin Exit, y presione Enter.

6.

Seleccione el medio de instalacin deseado, tal como CDROM, FTP y tal.

7.

Siga los menus para salir de sysinstall.

El metodo alternativo para obtener y mantener actualizada la Coleccin de Ports, es usando CVSup. Lea el fichero
de ports para CVSup, en /usr/share/examples/cvsup/ports-supfile. Vea el captulo Usando CVSup para
ver ms informacin en el uso de CVSup y del fichero mencionado.
Metodo por CVSup
Este es un metodo rpido de obtener la Coleccin de Ports usando CVSup. Si desea mantener su rbol de ports
actualizado, o bien, aprender ms acerca de CVSup, lea los documentos comentados anteriormente.
1.

Instale el port net/cvsup. Vea Instalacin de CVSup para mdetalles.

2.

Como usuario root, copie el fichero /usr/share/examples/cvsup/ports-supfile a una nueva


ubicacin, como puede ser el directorio /root o bien su propio directorio home.

3.

Edite el fichero ports-supfile.

4.

Cambie CHANGE_THIS.FreeBSD.org a un servidor CVSup cercano. Vea Mirrors de CVSup para ver una
lista completa de los servidores CVSup.

5.

Ejecute cvsup:
# cvsup -g -L 2 /root/ports-supfile

6.

Al ejecutar esto posteriormente, se descargaran las actualizaciones de la Coleccin de Ports.

4.5.2. Instalando Ports


Al hablar de la Coleccin de Ports, lo primero que debemos comentar es; a que nos referimos cuando hablamos de
un esqueleto (skeleton). En s mismo, un esqueleto de port, es una serie mnima de ficheros, que le indican a
FreeBSD como compilar e instalar un programa. Cada esqueleto incluye:

Un fichero Makefile. Este fichero contiene varias sentencias, que le indican al sistema como compilarlo y donde
deber instalarlo en su sistema.

Un fichero distinfo. Este fichero contiene informacin de los ficheros que debe ser descargados para efecto de
compilar el programa, as como el identificador checksum, para asegurarse se han descargado correctamente, sin
corrupciones.

Un directorio files. Este directorio contiene los parches necesarios para compilar e instalar en su sistema
FreeBSD. Bsicamente, los parches son pequeos ficheros, que incluyen algunos cambios. Estos son en formato
de texto plano, y bsicamente dicen cosas como Remove line 10 (Remover la lnea 10) o Change line 26 to

33

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


this... (Cambiar la lnea 26 por esto...). Los parches tambin son conocidos como diffs, ya que son generados
por el programa del mismo nombre; diff(1).
Es posible que este directorio tambi contenga algun otro fichero necesario para compilar e instalar el port.

Un fichero pkg-comment. Este es una descripcion del programa en una sola lnea.

Un fichero pkg-descr. Esta es una descripcion ms detallada del programa. En ocasiones multi-lnea.

Un fichero pkg-plist. Esta es una lista de todos los ficheros que sern instalados por el port. Tambin le indica
al sistema de ports, que ficheros remover, en caso de una desinstalacin.

Algunos ports cuentan con otros ficheros, tal como pkg-message. El sistema de ports usa estos, para manejar
situaciones especiales. Si desea saber ms detalles al respecto, o bien de ports en general, vea el libro FreeBSD
Porters Handbook (../porters-handbook/index.html).
Ahora que tiene suficientes antecedentes sobre que hacer con la Coleccin de Ports, esta listo para instalar su primer
port. Existen dos formas de lllevar esto a cabo, y cada una de ellas se explican a continuacin.
Pero, antes de que podamos proceder con la instalacin, usted necesita seleccionar un port para instalar. Existen
varias formas de hacer esto, siendo el metodo ms sencillo los ports listados en el sitio web de FreeBSD
(../../../../ports/index.html). Puede navegar entre los ports listados ah o bien, usar la funcin de buscar en el sitio.
Cada port incluye una descripcin, para que pueda leer un poco acerca de cada port antes de decidirse a instalarlo.
Otro metodo es por medio del comando whereis(1). Simplemente teclee whereis fichero, donde fichero es el
programa que desea instalar. Si se encuentra en su sistema, se le indicara donde se localiza, tal como:
# whereis lsof

lsof: /usr/ports/sysutils/lsof

Esto nos indica que lsof (una utilidad de sistema) puede encontrarse en /usr/ports/sysutils/lsof.
Incluso otra forma de encontrar un port en particular, es usando el mecanismo de bsqueda incluido en el sistema de
ports. Para efecto de usar esta habilidad, debe estar situado en el directorio /usr/ports. Una vez que este ah,
ejecute make search name=nombre-del-programa donde nombre-del-programa es el nombre del
programa que desea encontrar. Por ejemplo, si busca lsof:
# cd /usr/ports
# make search name=lsof

Port:
Path:
Info:
Maint:
Index:
B-deps:
R-deps:

lsof-4.56.4
/usr/ports/sysutils/lsof
Lists information about open files (similar to fstat(1))
obrien@FreeBSD.org
sysutils

De esta informacin, la parte que debe prestar atencin es la que se refiere a la ruta, esto es; la lnea Path:, en virtud
de que esta le indica la ubicacin del programa. El resto de la informacin no es necesaria para la instalacin, por lo
que no se ver aqui.
Para una bsqueda ms profunda, puede usar el comando make search key=cadena donde cadena es algun
texto a buscar. Esto busca nombres de ports, descripciones y dependencia y puede usarse para buscar ports que se
relacionan a un determinado texto, si no sabe el nombre del port que esta buscando.

34

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


En ambos casos, la bsqueda es indistinto el uso de maysculas o minusculas. El buscar LSOF y lsof arrojaran
los mismos resultados.
Nota: Usted debe ser usuario root , para instalar ports.

Ahora que hemos encontrado un port que deseamos instalar, estamos listos para llevar a cabo la instalacin. El port
incluye las instrucciones necesarias para compilar el cdigo fuente, pero no contiene el cdigo. Puede obtener el
cdigo de un CDROM o desde Internet. El cdigo fuente es distribuido de cualquier manera que el autor del software
lo desee. Frecuentemente esto es en un fichero tar.gz, pero puede estar comprimido con algun otro programa o de
hecho sin estar comprimido. De cualquier forma que se presente, el cdigo fuente del programa, le llamamos
distfile. Puede obtener los distfiles desde Internet o bien desde un CDROM.

4.5.2.1. Instalando Ports desde un CDROM


Los CDROMs oficiales del Proyecto de FreeBSD, ya no incluyen distfiles. Estos ocupan gran espacio, que en su
lugar se ha usado para incluir paquetes precompilados. CDROMs como el PowerPak de FreeBSD, si inlcuyen
distfiles, y puede ordenar estos de distribuidores como FreeBSD Mall (http://www.freebsdmall.com/). Esta seccin
asume que usted cuenta con un juego de CDROMs de FreeBSD.
Coloque su CDROM en la unidad correspondiente. Montelo en /cdrom. (Si utiliza un punto de montaje diferente la
instalacin no ser exitosa). Para comenzar dirijase al directorio donde se localiza el port que desea instalar:
# cd /usr/ports/sysutils/lsof

Una vez que este en el directorio lsof, ver el esqueleto del port. El prximo paso es la compilacin del port. Esto
lo hacemos, simplemente tecleando make en la lnea de comandos. Una vez que ha hecho esto, ver algo similar a lo
siguiente:


 


# make

lsof_4.57D.freebsd.tar.gz doesnt seem to exist in /usr/ports/distfiles/.


Attempting to fetch from file:/cdrom/ports/distfiles/.
===
Extracting for lsof-4.57
...
[extraction output snipped]
...
Checksum OK for lsof_4.57D.freebsd.tar.gz.
===
Patching for lsof-4.57
===
Applying FreeBSD patches for lsof-4.57
===
Configuring for lsof-4.57
...
[configure output snipped]
...
===
Building for lsof-4.57
...
[compilation output snipped]
...








35

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


Note que una vez que ha terminado la compilacin, regresara a la lnea de comandos. El siguiente paso es instalar el
port. Para efecto de instalarlo, simplemente debemos aadir una palabra al comando make, y esa palabra es
install:

# make install

Installing for lsof-4.57


===
...
[installation output snipped]
...
===
Generating temporary packing list
Compressing manual pages for lsof-4.57
===
===
Registering installation for lsof-4.57
===
SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.






Una vez que regrese a la lnea de comandos, le ser posible ejecutar la aplicacin que recien instalo. Dado que el
programa lsof se ejecuta con privilegios, nos aparece una advertencia de seguridad. Debe tomar nota de cualquier
otra advertencia que aparezca durante la compilacin e instalacin.
Nota: Puede ahorrarse algo de tiempo al ejecutar make install en un solo comando, en lugar de ejecutar make
y make install en dos pasos diferentes.

Nota: Algunos shells cuentan con un cache de los comandos disponibles bajo los directorios incluidos en la
variable de entorno PATH, para agilizar las operaciones de bsqueda de los ejecutables de estos ficheros. Si
usted esta haciendo uso de alguno de estos shells, puede usar el comando rehash una vez que ha terminado
de instalar el port, para poder hacer uso de su nuevo programa. Esto es vlido para ambos shells que forman
parte del sistema base (tal como tcsh) y shells que estan disponibles como ports (por ejemplo shells/zsh).

Nota: Por favor, tenga en cuenta que algunos ports cuentan con una licencia que no permite su inclusin en el
CDROM. Probablemente esto es a consecuencia de un registro que se debe hacer previo a la descarga, as
mismo algunos no permiten su re-distribucin, y tal. Si desea instalar un port que no se encuentra en el
CDROM, deber encontrarse conectado a Internet, para poder hacerlo (vea la siguiente seccin).

4.5.2.2. Instalando Ports desde Internet


Como en la seccin anterior, en este seccin se asume que usted cuenta con una conexin activa a Internet. Si no es
as, deber de llevar a cabo la instalacin por medio de CDROM, como se menciono anteriormente.
El instalar un port desde Internet, se hace exactamente de la misma forma que se hace desde un CDROM. La nica
diferencia entre estos dos metodos, es que el fichero distfile es descargado de Internet, en lugar de tomarlo del
CDROM.
Los pasos que implica son identicos:

36

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


 


# make install

lsof_4.57D.freebsd.tar.gz doesnt seem to exist in /usr/ports/distfiles/.


Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.
Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100%
439860 bytes transferred in 18.0 seconds (23.90 kBps)
===
Extracting for lsof-4.57
...
[extraction output snipped]
...
Checksum OK for lsof_4.57D.freebsd.tar.gz.
===
Patching for lsof-4.57
===
Applying FreeBSD patches for lsof-4.57
===
Configuring for lsof-4.57
...
[configure output snipped]
...
Building for lsof-4.57
===
...
[compilation output snipped]
...
===
Installing for lsof-4.57
...
[installation output snipped]
...
===
Generating temporary packing list
===
Compressing manual pages for lsof-4.57
Registering installation for lsof-4.57
===
===
SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.













Como puede ver, la nica diferencia es la lnea que indica de donde esta descargando el sistema el cdigo.
El sistema de ports utiliza fetch(1) para descargar los ficheros, que hace uso de varias variables de entorno, como son
FTP_PASSIVE_MODE, FTP_PROXY, y FTP_PASSWORD. Puede ser necesario que modifique una o ms de estas, si se
encuentra detrs de un cortafuegos (firewall), o si requiere usar de un proxy FTP/HTTP. Vea la pgina de ayuda
fetch(3) para una lista completa de las opciones.

4.5.3. Eliminando Ports Instalados


Ahora que sabe instalar ports, probablemente se este preguntando como eliminarlos, slo en caso de que haya
instalado alguno y posteriormente se de cuenta que ha instalado el port incorrecto. Vamos a eliminar el port instalado
(que era lsof, para todos aquellos que no prestaron atencin). Como cuando instalamos ports, lo primero que
debemos hacer es ubicarnos en el directorio del port que deseamos eliminar, que en este caso es
/usr/ports/sysutils/lsof. Una vez que se ha ubicado en este directorio, estamos listos para eliminar lsof.
Esto se hace con el comando make deinstall:
# cd /usr/ports/sysutils/lsof
# make deinstall

37

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


===

Deinstalling for lsof-4.57

Esto fu sencillo. Ha eliminado lsof de su sistema. Si desea reinstalarlo, lo puede hacer al ejecutar make
reinstall estando en el directorio /usr/ports/sysutils/lsof.
Los comandos make deinstall y make reinstall no funcionan una vez que ha ejecutado el comando make
clean. Si desea desintalar un port, una vez que ha ejecutado make clean, deber hacer uso del comando
pkg_delete(1) como se describe en la seccin de Paquetes del Handbook.

4.6. Actividades Post-Instalacin


Una vez que ha instalado una nueva aplicacin, normalmente deber leer la documentacin incluida, editar los
ficheros de configuracin necesarios, asegurarse de que la aplicacin se ejecute al arrancar el sistema (si es un
daemonio), etc.
Obviamente los pasos exactos para configurar cada aplicacin varian de una a otra. De cualquier forma, si recien ha
instalado una nueva aplicacin y se pregunta Y ahora qu?, estos consejos puede que le sean de ayuda:

Use pkg_info(1) para ver que ficheros se instalaron y donde. Por ejemplo, si recien instal el paquete FooPackage
1.0.0, el siguiente comando:
# pkg_info -L foopackage-1.0.0 | less

le mostrar los ficheros instalados por el paquete. Preste especial atencin a los ficheros en el directorio man/ que
son las pginas de ayuda y los del directorio etc/, que contiene los ficheros de configuracin, y bajo el directorio
doc/ podr encontrar informacin ms detallada.
Si no esta seguro de cual es la versin del paquete instalado, simplemente teclee algo as
# pkg_info | grep foopackage

y le mostrara todos los paquetes que tienen como nombre foopackage. Reemplace foopackage de acuerdo a
sus necesidades en la lnea de comandos.

Una vez que ha identificado donde se localizan las paginas de ayuda de la aplicacin, reviselas usando man(1). De
forma similar revise los ficheros de configuracin de ejemplo (N. de T. Generalmente estos ficheros son aquellos
que tienen la terminacin .sample), as como cualquier documentacin adicional que se incluya.

Si la aplicacin cuenta con un sitio web, visitelo en busca de documentacin adicional, ficheros de preguntas
frecuentes (FAQ), etc. Si no esta seguro del sitio web, vea la salida del comando
# pkg_info foopackage-1.0.0

este incluye en ocasiones una lnea WWW:, que describe el sitio web de la aplicacin.

38

Captulo 4. Instalando Aplicaciones: Paquetes y Ports

4.7. Resolucin de Problemas


La siguiente seccin cubre algunas de las preguntas ms frecuentes relacionadas a la coleccin de ports, y algunas
tcnicas bsicas para la resolucin de problemas, as como que hacer si encontramos un port roto.

4.7.1. Algunas Preguntas y Respuestas


1. Qu no es una discusin acerca de mdems?
Ah, usted debe estar pensando en puertos (ports) seriales, que se encuentran en la parte trasera de su computadora.
Aqui nos referimos al trmino port como resultado de aquellas aplicaciones que han sido portadas de una
versin de Unix a otra.
2. Qu es un parche (patch)?
Una parche (patch), es un pequeo fichero que especifca como ir de una versin a otra. Contiene texto plano y
cuenta con indicaciones similares a delete line 23 (borrar la lnea 23), add these two lines after line 468 (aadir
estas dos lneas despus de la lnea 468), o change line 197 to this (cambiar la lnea 197 por esto). Tambi son
conocidos como ficheros diff, ya que son generados por el programa diff(1).
3. Qu es eso de tarballs?
Es un fichero con extensin .tar o con alguna variacin tal como .tar.gz, .tar.Z, .tar.bz2, o incluso .tgz.
Bsicamente, es un rbol de directorio, que ha sido archivado en un solo fichero (.tar) y en ocasiones comprimido
(.gz). Esta tcnica se uso originalmente para archivar en cintas (que es de donde proviene su nombre; Tape
ARchives), pero es ampliamente usado para distribuir cdigo fuente por todo Internet.
Usted puede ver que ficheros se encuentran archivados, o incluso extraerlos usando el programa estandar de Unix
tar(1), que se incluye con el sistema base de FreeBSD, de la siguiente manera:
%
%
%
%

tar
tar
tar
tar

tvzf foobar.tar.gz
xzvf foobar.tar.gz
tvf foobar.tar
xvf foobar.tar

4. Y un checksum?
Es un numero generado por la suma de los datos en el fichero que desea consultar. Si alguno de los caracteres cambia,
el checksum ya no ser igual al total, de tal suerte que esta simple comparacin le permite detectar una diferencia.
5. He hecho lo que se indica para compilar ports desde un CDROM y funciona de maravilla hasta que he intentado
instalar el port de Kermit.



# make install

cku190.tar.gz doesnt seem to exist on this system.

39

Captulo 4. Instalando Aplicaciones: Paquetes y Ports



Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/.

Por qu no lo puede encontrar? Acaso tengo un CDROM defectuoso?

Como se explico en la seccin Instalando Ports desde un CDROM, algunos ports no se pueden incluir en CDROM,
debido a restricciones de licenciamiento. Kermit es un ejemplo de esto. Los trminos de la licencia de Kermit, no
permiten su inclusin en el CDROM, as que tendr descargarlo a mano, una disculpa!.
La razn por la cual obtiene esos mensajes de error, es por que no cuenta con una conexin a Internet en ese
momento. Una vez que lo haya descargado de alguno de los sitios disponibles (MASTER_SITES listados en el fichero
Makefile), puede continuar con el proceso de instalacin.

6. Ya hice esto, pero cuando intento guardarlo en el subdirectorio /usr/ports/distfiles obtengo un error
diciendo algo acerca de que no cuento por los permisos.
El sistema de ports, descarga los ficheros tarball, en el subdirectorio /usr/ports/distfiles, pero muchos
administradores de sistema crean un enlace de este directorio a un servidor remoto o a una unidad local de CDROM
de solo lectura. Si esta es su situacin, entonces deber especificar un directorio diferente para guardar sus ficheros
distfiles, con el siguiente comando:
# make DISTDIR=/directorio/local/con/permisos/de/escritura install

7. El esquema de ports trabaja solamente si se tiene todo en /usr/ports? Mi administrador de sistema dice que
todo lo debo tener en /u/people/guests/wurzburger, pero parece que no funciona de esta manera.
Puede usar las variables PORTSDIR y PREFIX, para indicarle al mecanismo de ports que directorios utilizar. Por
ejemplo;
# make PORTSDIR=/u/people/guests/wurzburger/ports install

compilar el port en /u/people/guests/wurzburger/ports e instalar todo bajo el directorio /usr/local.


# make PREFIX=/u/people/guests/wurzburger/local install

compilar todo en /usr/ports e instalar todo bajo el directorio /u/people/guests/wurzburger/local.


Y claro esta que,
# make PORTSDIR=../ports PREFIX=../local install

combinar ambos (lo cual es muy largo para escribir aqui, pero debe darnos una buena idea).
Algunos ports que usan imake(1) (una parte del Sistema de Ventanas X) no trabajan bien con PREFIX, e insistiran en
instalar todo bajo /usr/X11R6. De forma similar, algunos ports de Perl ignoran la variable PREFIX y proceden a
instalar bajo el rbol de Perl. Hacer que estos ports respeten la variable PREFIX es una tarea difcil si no imposible.
Si no le agrada estar tecleando todo esto cada vez que desea instalar un port, es una buena idea incluir estas variables
en sus variables de entorno. Lea la documentacin de su shell para ver las instrucciones para hacer esto.

40

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


8. No cuento con un CDROM de FreeBSD, pero me gustara contar con todos los ficheros tar a la mano en mi
sistema, para no tener que descargarlos cada vez que deseo instalar un port. Hay alguna forma de obtener todos de
una sola vez?
Para obtener todos y cada uno de los ficheros tar de la Coleccin de Ports, haga lo siguiente:
# cd /usr/ports
# make fetch

Para todos los tarball de un directorio concreto haga:


# cd /usr/ports/directorio
# make fetch

y para un solo portbueno, quizs ya lo adivin.

9. Tengo conocimiento de que probablemente es ms rpido descargar los ficheros tarball desde un servidor rplica
(mirror) de FreeBSD, ms cercano. Existe alguna forma de indicarle al port que descargue los ficheros de un
servidor diferente a los listados en MASTER_SITES?.
Claro. Por ejemplo, si usted sabe que ftp.FreeBSD.org esta ms prximo que los servidores listados en
MASTER_SITES, haga lo siguiente:
# cd /usr/ports/directorio
# make MASTER_SITE_OVERRIDE= \

ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

10. Quisiera saber cuales son los ficheros que make va a necesitar antes de los descargue.
make fetch-list desplegara una lista de los ficheros necesarios para la compilacin del port.

11. Existe alguna forma de detener la compilacin del port? Deseo editar un poco el cdigo, antes de instalarlo, pero
es un poco cansado tener que verlo y pulsar Ctrl+C a cada momento.
Puede usar el comando make extract, con el cual se detendra el proceso, una vez que se han descargado y extraido
los ficheros necesarios.
12. Estoy tratando de hacer mi propio port, y quiero poder detener el proceso, hasta que verifique que mis parches
funcionan correctamente. Existe algo similar a make extract, pero para parches?
Si, make patch es lo que usted busca. Quizs la opcin PATCH_DEBUG le sea de gran utilidad. Y por cierto, gracias
por su esfuerzo!
13. He escuchado que algunas opciones del compilador pueden causar errores. Es cierto? Cmo puedo asegurarme
de compilar los ports con las opciones correctas?
Si, con la versin 2.6.3 de gcc (que es la versin distribuida con FreeBSD 2.1.0 y 2.1.5), la opcin -O2 puede
ocasionar un cdigo con errores, a menos que utilice tambin la opcin -fno-strength-reduce (la mayora de los
ports no hacen uso de la opcin -O2). Usted debe poder indicarle al compilador las opciones, con algo similar a:
# make CFLAGS=-O2 -fno-strength-reduce install

41

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


o bien, editando el fichero /etc/make.conf, pero desafortunadamente no todos los ports respetan esto. La mejor
forma es ejecutar make configure, y despus dirijirse al directorio con el cdigo fuente e inspeccionar y editar el
fichero Makefile, pero esto puede ser tedioso si se cuenta con muchos subdirectorios, y en cada uno su propio
fichero Makefile.
Lac opciones que por default utiliza el compilador de FreeBSD son muy conservadoras, por lo que si no las ha
modificado, no debe tener problemas.

14. Existen muchos ports y es difcil encontrar el que quiero. Existe en algn lado una lista de los ports disponibles?
Vea el fichero INDEX, localizado en /usr/ports. Si desea, tambin puede buscar en la Coleccin de Ports por
medio de una palabra clave. Por ejemplo, puede encontrar ports relevantes al lenguaje de programacin LISP usando:
% cd /usr/ports
% make search key=lisp

15. Deseo instalar el port foo pero de repente el sistema se detuvo y comenzo a compilar el port bar. Qu esta
pasando?
El port foo necesita algo del port bar por ejemplo, si foo utiliza grficos, es posible que bar cuente con libreras
con rutinas para procesar grficos. O bien bar puede ser una herramienta necesaria para compilar el port foo.
16. He instalado el programa grizzle desde los ports y francamente es un desperdicio de espacio en disco. Quiero
eliminarlo, pero no se donde se instalaron sus ficheros. Alguna pista?
No hay problema, simplemente teclee:
# pkg_delete grizzle-6.5

Otra alternativa es teclear:


# cd /usr/ports/cualquierlugar/grizzle
# make deinstall

17. Aguarda un momento, Se supone que uno debe saber el numero de versin para usar este comando? Hablando
en serio, no esperas que recuerde todo esto, o si?
No del todo, lo puede saber haciendo:
# pkg_info -I grizzle*

Information for grizzle-6.5:


grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot em up
arcade game.

El numero de versin se puede saber usando el comando pkg_info o bien al teclear: ls /var/db/pkg

42

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


18. Hablando de espacio en disco, el directorio de ports parece que ocupa mucho espacio. Es seguro eliminar algo
de este directorio?
Asi es, si ha instalado un programa y esta seguro de que ya no necesita el cdigo fuente, no hay una razn para
contar con l. La forma ms segura de hacer esto es:
# cd /usr/ports
# make clean

este comando revisar todos los subdirectorios, y proceder a eliminar todo lo que encuentre, salvo los esqueletos del
port.
Sugerencia: Es posible que obtengamos el mismo efecto, pero sin que necesariamente se llame de forma
recursiva a cada Makefile. Por ejemplo, puede eliminar directamente todos los subdirectorios work/ con el
comando:
# find /usr/ports -depth -name work -exec rm -rf {} \;

19. He intentado eso y aun cuento con los tarballs o como se llamen, en el directorio distfiles. Puedo
eliminarlos tambin?
Si, si esta totalmente seguro de que ha terminado con ellos, tambin los puede eliminar. Estos se pueden eliminar
manualmente, o bien usando el comando make distclean.
20. Me gusta contar con muchos, muchos programas para jugar con ellos. Existe una forma de instalar todos los
ports en un solo paso?
Simplemente haga:
# cd /usr/ports
# make install

Tenga cuidado, ya que algunos ports pueden instalar ficheros con el mismo nombre. En el caso de que instale dos
programas de grficos y que ambos instalen /usr/local/bin/plot obviamente le va ocasionar problemas.

21. OK, he intentado esto, pero como supuse que tomaria mucho tiempo, lo deje corriendo y me fui a dormir. En la
maana al ver mi computadora, solo haba terminado tres ports y medio. He hecho algo incorrectamente?.
No, el problema es que algunos ports requieren preguntarle cosas que no podemos contestar por usted (por ejemplo;
En qu tipo de papel desea imprimir, en A4 o en Carta?), y requieren de alguien que les d respuesta.
22. Realmente no me interesa pasar todo el d frente al monitor. Alguna mejor idea?
OK, haga lo siguiente antes de irse a la cama/trabajo/el parque local:
# cd /usr/ports
# make -DBATCH install

43

Captulo 4. Instalando Aplicaciones: Paquetes y Ports


Con esta opcin se instalarn todos los ports que no requieren intervencin del usuario. Una vez que regrese, haga:
# cd /usr/ports
# make -DINTERACTIVE install

para terminar el trabajo.

23. En mi trabajo usamos frobble, que se encuentra la Coleccin de Ports, pero lo hemos editado un poco, para que
se ajuste a nuestras necesidades. Existe alguna forma de hacer nuestro paquete, para poder distribuirlo ms
facilmente en nuestros sitios?.
No hay problema, asumiendo que usted sabe como crear los parches de sus cambios, puede hacer lo siguiente:
# cd /usr/ports/algunlugar/frobble
# make extract
# cd work/frobble-2.8

[Aplicar sus parches]


# cd ../..
# make package

24. Esto de los ports es muy inteligente. Estoy deseperado por saber Cal es el secreto?
No hay secreto, simplemente vea los ficheros bsd.port.mk y bsd.port.subdir.mk que se localizan en
/usr/ports/Mk/.
(Los lectores que tiene aversin a los scripts de shell, se les aconseja abstenerse de ver los ficheros de este directorio.)

4.7.2. Ayuda! Este Port Esta Roto! (Broken)


Si se encuentra con port que no trabaj como lo esperaba, existen varias alternativas, que incluyen:
1. Arreglelo!! El libro Porters Handbook (../porters-handbook/index.html) incluye informacin detallada de la
infraestructura de los "Ports", de tal forma que pueda arreglar los ports que ocasionalmente estan defectuosos o
inclusive para crear y enviar su propio port!
2. Notifiquelopor correo solamente! Envie un correo a la persona que da mantenimiento al port. Teclee make
maintainer o lea el Makefile para ver el correo de esta persona. Recuerde incluir el nombre y la versin del
port (puede enviar la lnea $FreeBSD: del Makefile) as como la salida del error que da el port. Si no obtiene
respuesta de la persona que da mantenimiento al port, puede usar send-pr(1) para enviar un reporte de error.
3. Descargue el paquete de un servidor FTP cercano. La coleccin maestra de paquetes se localiza en
ftp.FreeBSD.org en el directorio de paquetes (ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/), pero
asegurese primero de verificar en un servidor rplica (mirror)!. Es mas seguro que estos trabajen, a que tener que
compilar las fuentes, tambin es ms rpido. Use el programa pkg_add(1) para instalar paquetes en su sistema.

44

Captulo 5. El sistema X Window


El sistema X Window

45

II. Administracin del sistema.


Los restantes captulos de este Manual de FreeBSD cubren todos los aspectos de administracin de un sistema
FreeBSD. Cada captulo comienza describiendo lo que ser aprendido una vez finalizada la lectura, explicando
tambin los conocimientos mnimos necesarios para un entendimiento satisfactorio.
Estos captulos estn diseados para ser leidos cuando se necesita la informacin. No es necesario leerlos en un
determinado orden ni tampoco es necesario leerlos todos antes de comenzar con el uso de FreeBSD.

Captulo 6. El Proceso de Arranque en FreeBSD


6.1. Sinpsis
Al proceso de inicio del sistema y carga del sistema operativo se le conoce como mecanismo de arranque
(bootstrap), o simplemente arranque (booting). El proceso de arranque de FreeBSD provee de gran flexibilidad al
configurar lo que ocurre cuando se inicia el sistema, permitiendole seleccionar de diferentes sistemas operativos
instalados en el mismo ordenador, o inclusive diferentes versiones del mismo sistema oprativo o kernels instalados.
Este captulo detalla las opciones de configuracin que puede manejar y como personalizar el proceso de arranque de
FreeBSD. Esto incluye todo lo que sucede hasta que el kernel de FreeBSD comienza con la comprobacin de
dispositivos y se inicializa init(8). En caso de que usted desconozca cuando ocurre todo esto, esto sucede cuando el
color del texto que aparece al iniciar el sistema, cambia de blanco a gris.
Una vez que concluya con la lectura de este captulo, usted sabr:

Cuales son los componentes del mecanismo de arranque de FreeBSD, y como es que interactuan entre s.

Las opciones que puede manejar con los componentes del mecanismo de arranque de FreeBSD, para controlar el
proceso de inicio del sistema.
S x86: El presente captulo describe nicamente el proceso de inicio, para sistemas FreeBSD que corren en
plataformas Intel x86.

6.2. El Problema que representa Arrancar el Sistema


El encender una computadora e iniciar el sistema operativo, trae consigo un dilema interesante. Por definicin, la
computadora no sabe hacer nada, hasta que el sistema operativo ha sido cargado. Esto incluye la ejecucin de
programas desde el disco duro. As que este es el dilema; si la computadora no sabe hacer nada hasta que se cargue el
sistema operativo, y el sistema operativo es un conjunto de programas que residen en el disco duro, Cmo es que
arranca el sistema operativo?
Este problema se asemeja a un problema del libro Las Aventuras del Barn Munchausen. Donde un personaje ha
caido parcialmente en un hoyo, y ha podido salir al tomarse de las cintas de sus botas y jalarse hacia fuera. En los
aos mozos de la computacin, el trmino utilizado para hablar sobre el proceso de carga del sistema operativo era
mecanismo de arranque (bootstrap), que por efectos de simplificacin ahora conocemos como arranque (booting).
En equipos con arquitectura x86, el Sistema Bsico de Entrada/Salida (BIOS) es el responsable de cargar el sistema
operativo. Para hacer esto, el BIOS busca en el disco duro el Registro Maestro de Arranque (RMA) (N de T.
Conocido como MBRMaster Boot Record), el cual debe localizarse en un lugar especfico del disco. El BIOS
cuenta con suficiente informacin, para cargar y ejecutar el RMA, y asumir que el RMA puede encargarse del resto
de las tareas necesarias en la carga del sistema operativo.

47

Captulo 6. El Proceso de Arranque en FreeBSD


Si usted slo cuenta con un sistema operativo instalado en su disco duro, el RMA estndar ser suficiente. Este RMA
buscar la primer particin del disco que pueda arrancar, y posteriormente ejecutar el cdigo restante de dicha
particin, para efecto de completar la carga del sistema operativo.
Si usted cuenta con varios sistemas operativos instalados en su disco, entonces puede hacer uso de un RMA
diferente, uno que despliegue una lista de los diferentes sistemas operativos, y le permita escoger cual de ellos desea
que se cargue. FreeBSD cuenta con un RMA de este tipo que puede ser instalado, as como otros distribuidores de
sistemas operativos cuentan con RMAs alternativos.
En el caso de FreeBSD, el resto del mecanismo de arranque, est dividido en tres etapas. La primer etapa es
ejecutada por al RMA, que sabe lo suficiente como para poner a la computadora en un estado especfico y ejecutar la
segunda etapa. La segunda etapa puede hacer un poco ms que esto, antes de ejecutar la tercer etapa. La tercer etapa
finaliza el trabajo de carga del sistema operativo. El trabajo es dividido en tres etapas, debido a las limitantes que
tiene una PC, en cuanto al tamao de los programas a ejecutar, durante las etapas uno y dos. El encadenar estas
tareas, le permiten a FreeBSD contar con un arrancador ms flexible.
Posteriormente el kernel es inicializado y comienza con la comprobacin de dispositivos, y prepararlos para su uso.
Una vez que el proceso de arranque del kernel ha finalizado, el kernel transfiere el control al proceso de usuario
init(8), quien se asegura de que los discos se encuentren en buen estado para su uso. Posteriormente init(8) inicia la
configuracin fuente a nivel de usuario, que monta los sistemas de ficheros, configura las tarjetas de red para que
pueden comunicarse en la red, y comunmente inicia todos los procesos que normalmente son ejecutados en un
sistema FreeBSD al arrancar el mismo.

6.3. El RMA, y las Etapas de Arranque Uno, Dos y Tres


6.3.1. RMA, /boot/boot0
El RMA de FreeBSD, se localiza en /boot/boot0. Este es una copia del RMA, ya que el RMA real debe
localizarse en una parte especial del disco duro, fuera de la rea de FreeBSD.
El fichero boot0 es muy simple, dado que el programa en el RMA slo puede ser de 512 bytes. Si usted ha instalado
el RMA de FreeBSD y ha instalado varios sistemas operativos en sus discos duros, entonces al momento de arrancar
el sistema, visualizar una pantalla similar a la siguiente.
Ejemplo 6-1. Pantalla boot0
F1
F2
F3
F4
F5

DOS
FreeBSD
Linux
??
Drive 1

Default: F2

Es sabido que otros sistemas, en particular Windows 95, sobreescriben el RMA con el suyo. Si esto le sucede, o bien
desea reemplazar su RMA actual con el RMA de FreeBSD, entonces puede utilizar los siguientes comandos.
# fdisk -B -b /boot/boot0 dispositivo

48

Captulo 6. El Proceso de Arranque en FreeBSD


Donde dispositivo es aquel, desde el cual usted pretende arrancar el sistema, tal como ad0 para el disco
conectado al primer IDE, ad2 para el disco maestro conectado al IDE secundario, da0 para el primer disco SCSI, y
as sucesivamente.
Por otro lado, si usted es un usuario de Linux, y prefiere que la aplicacin LILO controle el proceso de arranque,
puede editar el fichero /etc/lilo.conf para incluir a FreeBSD, o bien seleccionar la opcin Leave The Master
Boot Record Untouched durante el proceso de instalacin. Si ha instalado el gestor de arranque de FreeBSD,
puede arrancar Linux y modificar el fichero de configuracin de LILO, /etc/lilo.conf, aadiendo la siguiente
opcin:
other=/dev/hdXY
table=/dev/hdb
loader=/boot/chain.b
label=FreeBSD

lo que permitir el arranque de FreeBSD y Linux, por medio de LILO. En nuestro ejemplo hemos utilizado XY para
especificar el disco utilizado y su particin. Si usted utiliza un sistema SCSI, deber cambiar /dev/hdXY por algo
similar a /dev/sdXY, que nuevamente utiliza la sintxis XY. La opcin loader=/boot/chain.b puede omitirse
si usted cuenta con ambos sistemas operativos en el mismo disco. Una vez que esto se ha completado, puede ejecutar
/sbin/lilo -v para que se actualicen los cambios en el sistema, lo cual deber verificarse con los mensajes que
aparezcan en pantalla.
Nota: N de T: La opcin mencionada como; Leave The Master Boot Record Untouched, se mostrar tal
cual aparece en este documento, una vez que ha terminado la fase de particin del disco duro.

6.3.2. Etapa Uno, /boot/boot1, y Etapa Dos, /boot/boot2


Conceptualmente las estapas uno y dos, son parte del mismo programa, en la misma rea del disco. Por cuestiones de
espacio se han dividido en dos, pero estas siempre se instalaran de manera conjunta.
Estas son localizadas en el sector de arranque, de la particin de arranque, que es donde boot0, o cualquier otro
programa del RMA espera encontrar el programa que dar continuacin al proceso de arranque. Los ficheros
localizados bajo el directorio /boot son copias de los ficheros reales, que se localizan fuera del sistema de ficheros
de FreeBSD.
El fichero boot1 es muy simple, en virtud de que slo puede tener un tamao de 512 bytes, y conocer simplemente
del etiquetador de discos de FreeBSD (disklabel), el cual almacena la informacin de las particiones, para efecto de
localizar y ejecutar boot2.
El fichero boot2 es un poco ms sofisticado, y comprende lo suficiente del sistema de ficheros de FreeBSD como
para localizar ficheros en el, y puede proveer una interfaz simple, para seleccionar el kernel o cargador que deber
ejecutarse.
En virtud de que el cargador (loader) es mucho ms sofisticado, y provee una configuracin de arranque ms sencilla
de utilizar, boot2 la ejecuta normalmente, una vez que ha terminado de solicitar el arranque del kernel directamente.
Ejemplo 6-2. Pantalla de boot2



FreeBSD/i386 BOOT

49

Captulo 6. El Proceso de Arranque en FreeBSD


Default: 0:ad(0,a)/kernel
boot:

Si alguna vez requiere reemplazar los ficheros boot1 y boot2 instalados, utilice disklabel(8).
# disklabel -B particin

Donde particin es el disco y particin del cual pretende arrancar el sistema, tal como ad0s1 para la primer
particin del disco MastroPrimario.
Modo Peligrosamente DedicadoSi slo utiliza el nombre del disco, tal como ad0, al usar el comando
disklabel(8) crear un disco peligrosamente dedicado, sin particin alguna. Seguramente esto no es lo que
desea hacer, as que asegurese dos veces antes de presionar la tecla Return cuando utilice disklabel(8).

6.3.3. Etapa Tres, /boot/loader (cargador de arranque)


El cargador es la etapa final de las tres etapas del mecanismo de arranque, y esta localizado en el sistema de ficheros,
normalmente como /boot/loader.
El cargador pretende ser un metodo amistoso de configuracin, utilizando una serie de comandos integrados de fcil
uso, respaldado por un intrprete ms poderoso, con una serie de comandos de mayor complejidad.

6.3.3.1. Flujo del Programa Cargador


Durante la inicializacin del sistema, el cargador har una comprobacin en busca de una consola y discos, y sabra
de que disco se encuentra arrancando. Establecer las variables necesarias, y posteriormente es iniciado el intrprete
donde se pueden ingresar comandos desde un fichero script o de manera interactiva.
Posteriormente el cargador leer el fichero /boot/loader.rc, que por default lee la informacin del fichero
/boot/defaults/loader.conf que a su vez, establece las variables correspondientes y verifica en el fichero
/boot/loader.conf los cambios locales que se hayan hecho, para establecer valores de las variables modificadas.
Una vez llevado a cabo esto, loader.rc actua sobre estas variables, cargando cualquier mdulo y kernel
seleccionado.
Finalmente, y por default, el cargador hace una pausa contando 10 segundos y en espera de que al presionar una tecla
se interrumpa el proceso, de no ser as, proceder a arrancar el kernel. En el caso de que al hacer esta pausa, se haya
presionado una tecla (diferente de Return), el proceso ser interrumpido y se nos mostrar un interprete de
comandos (prompt), que entiende el conjunto de comandos de fcil-uso, y donde el usuario puede ajustar ciertas
variables, cargar y descargar todos los modulos, y finalmente arrancar o reiniciar el sistema.

6.3.3.2. Comandos Internos del Cargador


A continuacin se presentan los comandos ms comunes del cargador. Para ver una descripcin detallada de los
mismos, por favor consulte la pgina de ayuda loader(8)

50

Captulo 6. El Proceso de Arranque en FreeBSD


autoboot segundos
Procede a iniciar el arranque del sistema, si es que no es interrumpido el periodo dado, en segundos. Despliega
una cuenta regresiva, y el tiempo dado es de 10 segundos.
boot [-opciones] [nombre_del_kernel]
Procede a iniciar el kernel de manera inmediata, con las opciones dadas, si es que fuera el caso y el kernel
especificado, si es que se especifica alguno.
boot-conf
Rehace la configuracin automtica de modulos en funcin a las variables definidas, como sucede al arrancar.
Esta opcin slo tiene sentido utilizarla, si en primer lugar hemos usado el comando unload, y hemos
modificado alguna variable, siendo lo ms comn el kernel.
help [tema]
Muestra la ayuda de un tema especfico, que lee del fichero /boot/loader.help. Si el tema que se indica es
index, entonces se mostrar una lista de todos los temas disponibles.
include fichero . . .
Procesa el fichero que se ha especificado. El fichero es leido e interpretado lnea por lnea. Cualquier error
detendr inmediatamente al comando include.
load [-t tipo] fichero
Carga el kernel, modulo del kernel, o el fichero del tipo dado, en base al fichero especificado. Cualquier
argumento que se aada, ser pasado al fichero.
ls [-l] [ruta]
Despliega un listado de todos los ficheros que se localizan en la ruta especificada, o en el directorio raz, si es
que no se le especifica ruta alguna. Si se utiliza la opcin -l, tambin se mostrara el tamao de los ficheros.
lsdev [-v]
Nos muestra una lista de todos los dispositivos desde los cuales puede ser posible cargar modulos. Si se incluye
la opcin -v, el listado que se obtiene cuenta con ms detalle.
lsmod [-v]
Despliega los mdulos cargados. Si se utiliza la opcin -v, se mostraran ms detalles.
more fichero
Despliega el contenido del fichero especificado, haciendo una pausa a cada numero determinado de LINEAS
mostradas.
reboot
Reinicia el sistema de forma inmediata.
set variable
set variable=valor
Especifica los valores de las variables de entorno del cargador.

51

Captulo 6. El Proceso de Arranque en FreeBSD


unload
Remueve todos los mdulos cargados.

6.3.3.3. Ejemplos de Uso del Cargador


He aqui unos ejemplos prcticos sobre el uso correcto del cargador.

Para arrancar simplemente su kernel usual, pero en modo mono-usuario, deber hacer lo siguiente:
boot -s

Para descargar su kernel usual y sus mdulos correspondientes, y posteriormente cargar su kernel anterior (o
cualquier otro):
unload
load kernel.old

Puede utilizar kernel.GENERIC para referirse al kernel generico actual que viene con la instalacin, o bien puede
utilizar kernel.old para hacer referencia al kernel anterior (por ejemplo, cuando ha actualizado su sistema o ha
recompilado su propio kernel).
Nota: Utilice lo siguiente para cargar sus mdulos actuales con otro kernel:
unload
set kernel="kernel.old"
boot-conf

Para cargar un escrito de configuracin (script que de forma automtica har todo lo que normalmente hace usted
de forma manual al momento de ejecutarse el configurador de arranque):
load -t escrito_de_configuracin /boot/kernel.conf

6.4. Interaccin con el Kernel Durante el Arranque


Una vez que el kernel ha sido iniciado, ya sea por el cargador (que es lo comn) o bien por boot2 (sobrepasando el
cargador), examinar las opciones de arranque, en busca de cambios, y ajustar su comportamiento en caso de ser
necesario.

6.4.1. Opciones de Arranque del Kernel


He aqui las opciones de arranque ms comunes:

52

Captulo 6. El Proceso de Arranque en FreeBSD


-a

durante la inicializacin del kernel, pregunta por los dispositivos a utilizar, para montar el sistema de ficheros
raz.
-C

arranque desde una unidad de CDROM.


-c

ejecuta UserConfig, la utilidad de configuracin de arranque del kernel.


-s

arranca el sistem en modo mono-usuario.


-v

imprime mensajes informativos durante el arranque del kernel


Nota: Existen otras opciones de arranque, por favor vea la pgina de ayuda boot(8) para ms informacin al
respecto.

6.5. Init: Inicializacin del Proceso de Control


Ya que el kernel ha finalizado de arrancar, pasar el control a un proceso de usuario llamado init, el cual se localiza
en /sbin/init, o bien en la ruta especificada por la variable de entorno init_path del cargador.

6.5.1. Secuencia Automtica de Reinicio


La secuencia automtica de reinicio se asegura de que los sistemas de ficheros disponibles en el sistema sean
consistentes. Si no lo son, y el programa fsck no puede arreglar estas inconsistencias, init envia el sistema a modo
monousuario, de tal forma que el administrador pueda ingresar en l y arreglar los problemas directamente.

6.5.2. Modo Mono-Usuario


A este modo se puede llegar por medio de la secuencia automtica de reinicio, o por medio de la opcin -s en el
arranque de usuario o al establecer la variable boot_single en el cargador.
Tambin desde el modo multi-usuario se puede acceder, al utilizar el comando shutdown sin la opcin de reinicio
(-r) o la de apagado (-h) del sistema.
Si la consola del sistema esta configurada de modo inseguro en el fichero /etc/ttys, entonces el sistema
solicitar la contrasea del superusuario (root), antes de ingresar al sistema en modo mono-usuario.

53

Captulo 6. El Proceso de Arranque en FreeBSD


Ejemplo 6-3. Una Consola Insegura en /etc/ttys
# name getty
type
status
comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none
unknown off insecure

Nota: Una consola insegura significa que usted considera como insegura fsicamente su consola, por lo que
desea asegurarse de que slo quien conoce la contrasea del superusuario puede ingresar al sistema en
modo mono-usuario, y no que desea ejecutar la consola inseguramente. Esto es, si desea contar con seguridad
escoja la opcin insecure, y no secure.

6.5.3. Modo Multi-Usuario


En el caso de que init encuentre en buen estado al sistema de ficheros, o una vez que el usuario ha terminado del
modo mono-usuario, el sistema entrar al modo multi-usuario, en donde comienzan los ficheros de
configuracin-fuente del sistema.

6.5.3.1. Configuracin-Fuente(rc)
La configuracin fuente lee la configuracin por default del fichero /etc/defaults/rc.conf, y detalles
especficos del sistema desde el fichero /etc/rc.conf, y posteriormente procede a montar los sistemas de ficheros
del sistema, descritos en /etc/fstab, iniciar servicios de red, as como varios demonios del sistema, para
finalmente ejecutar los escritos (scripts) de configuracin instalados por paquetes, localmente.
La pgina de ayuda rc(8) es una buena referencia para conocer ms de este tipo de ficheros, as como examinar los
mismos ficheros.

6.6. Secuencia de Apagado


Una vez que el apagado sea controlado, por medio del comando shutdown, init ejecutar el escrito
/etc/rc.shutdown, para posteriormente enviar a todos los procesos la seal TERM, y subsecuentemente la seal
KILL a cualquiera que no haya terminado en tiempo.

54

Captulo 7. Usuarios y administracin bsica


de cuentas
Contributed by Neil Blakey-Milner.

7.1. Sinopsis
FreeBSD permite que varios usuarios usen el mismo ordenador. Obviamente, slo uno de estos usuarios puede
sentarse frente al monitor y al teclado en un momento dado 1 , pero cualquier nmero de usuarios puede entrar por la
red para hacer su trabajo. Para usar el sistema cada usuario ha de tener una cuenta.
Despus de leer este captulo sabrs:

Cules son las diferencias entre las distintas cuentas de usuario en sistemas FreeBSD.

Cmo aadir cuentas.

Cmo eliminar cuentas.

Cmo cambiar detalles de las cuentas, como el nombre completo del usuario, o su shell preferida.

Cmo establecer lmites por cuenta, para controlar los recursos como memoria o tiempo de CPU que las cuentas y
grupos de cuentas pueden emplear.

Cmo usar grupos para facilitar la administracin de cuentas.

Antes de leer este captulo deberas:

Entender los conceptos bsicos de Unix y FreeBSD (Captulo 3).

7.2. Introduccin
Todos los accesos al sistema se consiguen va cuentas, y todos los procesos son ejecutados por usuarios, por ello la
administracin de usuarios y cuentas es de una gran importancia en sistemas FreeBSD.
Cada cuenta en un sistema FreeBSD tiene cierta informacin asociada que la identifica.
Nombre de usuario
El nombre de usuario como se le entrara al prompt login:. Los nombres de usuario han de ser nicos en la
computadora; no puede haber dos usuarios con el mismo nombre de usuario. Existen algunas reglas para la
creacin de nombres de usuario vlidos documentadas en passwd(5); tpicamente se usaran nombres de usuario
de a lo sumo ocho caracteres, todos ellos en minscula.
Contrasea
Cada cuenta tiene una contrasea asociada. La contrasea puede ser vaca, en cuyo caso no se requerir ninguna
para acceder al sistema. Esto normalmente es una mala idea; cada cuenta debera tener una constrasea no vaca.

55

Captulo 7. Usuarios y administracin bsica de cuentas


Identificador de usuario (UID)
El UID es un numero entre 0 y 65536 que sirve para identificar unvocamente al usuario en el sistema.
Internamente, FreeBSD usa el UID para identificar usuarios y cualquier comando de FreeBSD que permita
especificar un nombre de usuario convertir ste al UID antes de trabajar con l. Esto significa que puedes tener
varias cuentas con nombres de usuario distintos pero con el mismo UID. En lo que a FreeBSD respecta, tales
cuentas son un solo usuario. Es improbable que alguna vez tengas que hacer algo as.
Identificador de grupo (GID)
El GID es un nmero entre 0 y 65536 que sirve para identificar unvocamente el grupo principal al cual
pertenece un usuario. Los grupos son un mecanismo para controlar el acceso a recursos del sistema en base al
GID, en vez del UID. Esto puede reducir significativamente el tamao de algunos ficheros de configuracin. Un
usuario puede pertencer a ms de un grupo.
Clase de login
Las clases de login son una extensin al mecanismo de grupos que ofrecen una mayor flexibilidad a la hora de
adaptar el sistema a distintos usuarios.
Tiempo de cambio de contrasea
Por defecto FreeBSD no obliga a los usuarios a cambiar su contrasea peridicamente. Se puede requerir esto a
determinados usuarios, haciendo que algunos o todos deban cambiar sus contraseas al cabo de cierto periodo
de tiempo.
Tiempo de expiracin de cuentas
Por defecto las cuentas en FreeBSD no expiran. Si ests creando cuentas que sabes que van a tener un tiempo
limitado de vida, por ejemplo, las cuentas de los estudiantes de una escuela, entonces puedes especificar cundo
expiran. Una vez vencido su tiempo de expiracin una cuenta no puede ser usada para entrar en el sistema, si
bien sus directorios y archivos sern conservados.
Nombre completo de usuario
El nombre de usuario identifica unvocamente a una cuenta para FreeBSD, pero no refleja su verdadero nombre
necesariamente. Esta informacin puede ser asociada a la cuenta.
Directorio home
El directorio home es el camino completo de un directorio en el sistema en el que el usuario se hallar cuando
entre. Una convencin usual consiste en poner todos los directorios home en /home/nombre_de_usuario o
en /usr/home/nombre_de_usuario. Los usuarios guardaran sus archivos personales en sus directorios
home, y en cualquier directorio que creasen all.
Shell de usuario
La shell provee el entorno por defecto mediante el cual los usuarios interactan con el sistema. Existen varios
tipos de shell y los usuarios experimentados tendrn sus propias preferencias, que pueden expresarse en la
configuracin de su cuenta.
Existen principalmente tres tipos de cuentas; la cuenta de superusuario, las cuentas de usuarios del sistema, y las de
usuarios. La cuenta de superusuario, normalmente llamada root, se usa para administrar el sistema sin limitaciones
en los privilegios. Los usuarios del sistema utilizan servicios del mismo. Finalmente, las cuentas de usuarios son
usadas por gente real, aquellos que entran, leen correo, etctera.

56

Captulo 7. Usuarios y administracin bsica de cuentas

7.3. La cuenta superusuario


La cuenta superusuario, normalmente llamada root, viene preconfigurada para facilitar la administracin del
sistema, y no debera ser utilizada para tareas cotidianas como enviar o recibir correo, exploracin general del
sistema, o programacin.
Esto es as porque el superusuario, a diferencia de las cuentas de usuario, puede operar sin lmites, y un mal uso de la
cuenta de superusuario puede conllevar desastres espectaculares. Las cuentas de usuario no pueden destruir el
sistema por un error, por ello es generalmente mejor utilizar cuentas de usuario normales cuando sea posible, a no ser
que especialmente necesites privilegios extra.
Deberas comprobar siempre un par o tres de veces los comandos que ejecutas como superusuario, ya que un espacio
de ms o un carcter omitido pueden significar una prdida de datos irreparable.
As pues, lo primero que deberas hacer despus de leer este captulo es crear una cuenta sin privilegios de uso
general para ti si an no la tienes. Esto aplica tanto si trabajas en una mquina con varios usuarios como si trabajas
en una mquina con un solo usuario. Ms adelante, en este mismo captulo, explicamos cmo crear cuentas
adicionales, y cmo cambiar de usuario normal a superusuario.

7.4. Cuentas de sistema


Los usuarios de sistema son aqullos que corren servicios como DNS, correo, servidores web, etc. Esto es as por
seguridad; si todos los servicios corrieran como superusuario podran actuar sin ninguna restriccin.
Algunos ejemplos de usuarios de sistema son daemon, operator, bind (para el DNS), y news. Con frecuencia, los
administradores de sistemas crean el usuario httpd para que ejecute los servidores web que instalan.
nobody es el usuario de sistema sin privelegios genrico. No obstante, es importante tener en cuenta que cuantos
ms servicios use nobody, ms ficheros y procesos estarn asociados con dicho usuario, y en consecuencia ms

privilegiado ser.

7.5. Cuentas de usuario


Las cuentas de usuario constituyen la principal va de acceso al sistema para la gente real. Estas cuentas aslan al
usuario del entorno, impidiendo que pueda daar al sistema o a otros usuarios, y permitiendo a su vez que pueda
personalizar su entorno sin que esto afecte a otros.
Cada persona que acceda a tu sistema debera tener una sola cuenta de usuario. Esto te permite averiguar quin est
haciendo qu, evita que interfieran las configuraciones de distintos usuarios, que unos puedan leer el correo de otros,
etctera.
Cada usuario puede configurar su entorno para acomodarlo al uso que hace del sistema, utilizando shells, editores,
atajos de teclado e idioma alternativos.

7.6. Modificacin de cuentas


Existe una variedad de comandos disponible en el entorno Unix para modificar cuentas de usuario. Los comandos
ms comunes se hallan resumidos a continuacin, seguidos de ejemplos ms detallados de su uso.

57

Captulo 7. Usuarios y administracin bsica de cuentas


Comando

Resumen

adduser

La aplicacin de lnea de comandos recomendada para


aadir nuevos usuarios.

rmuser

La aplicacin de lnea de comandos recomendada para


eliminar usuarios.

chpass

Una herramienta flexible para modificar la base de datos


de usuarios.

passwd

Una herramienta de lnea de comandos simple para


cambiar contraseas de usuario.

pw

Una herramienta potente y flexible para modificar


cualquier aspecto de las cuentas de usuario.

7.6.1. adduser
adduser es un programa simple para aadir usuarios. Crea entradas en los archivos de sistema passwd y group.

Tambin crea un directorio home para el nuevo usuario, copia all ficheros de configuracin por defecto (dotfiles)
de /usr/share/skel, y opcionalmente puede enviar al usuario un mensaje de bienvenida.
Para crear el fichero inicial de configuracin usa adduser -s -config_create. 2 A continuacin configuramos
valores por defecto para adduser y creamos nuestra primera cuenta de usuario, dado que utilizar root para uso
normal del sistema es pernicioso y peligroso.
Ejemplo 7-1. Configuracin de adduser
# adduser -v

Use option -silent if you dont want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: csh date no sh tcsh zsh [sh]: zsh
Your default shell is: zsh - /usr/local/bin/zsh
Enter your default HOME partition: [/home]:
Copy dotfiles from: /usr/share/skel no [/usr/share/skel]:
Send message from file: /etc/adduser.message no
[/etc/adduser.message]: no
Do not send message
Use passwords (y/n) [y]: y

Write your changes to /etc/adduser.conf? (y/n) [n]: y


Ok, lets go.
Dont worry about mistakes. I will give you the chance later to correct any input.
Enter username [a-z0-9_-]: jru
Enter full name []: J. Random User
Enter shell csh date no sh tcsh zsh [zsh]:
Enter home directory (full path) [/home/jru]:
Uid [1001]:
Enter login class: default []:
Login group jru [jru]:

58

Captulo 7. Usuarios y administracin bsica de cuentas


Login
[no]:
Enter
Enter

group is jru. Invite jru into other groups: guest no


wheel
password []:
password again []:

Name:
jru
Password: ****
Fullname: J. Random User
Uid:
1001
Gid:
1001 (jru)
Class:
Groups:
jru wheel
HOME:
/home/jru
Shell:
/usr/local/bin/zsh
OK? (y/n) [y]: y
Added user jru
Copy files from /usr/share/skel to /home/jru
Add another user? (y/n) [y]: n
Goodbye!
#

En resumen, cambiamos la shell por defecto a zsh (una shell alternativa incluida en la coleccin de ports), y
deshabilitamos el envo de un mensaje de bienvenida a nuevos usuarios. Luego grabamos la configuracin, creamos
una cuenta para jru, y nos aseguramos de que jru est en el grupo wheel (de modo que puede asumir el papel de
root va el comando su).
Nota: La contrasea que escribes no se muestra, tampoco se muestran asteriscos. Asegrate de no entrar dos
veces una contrasea equivocada.

Nota: Usa adduser sin argumentos en adelante, no necesitars cambiar las opciones por defecto. Si el
programa te pide modificarlas sal y prueba con la opcin -s.

7.6.2. rmuser
Puedes usar rmuser para eliminar completamente del sistema a un usuario. rmuser efecta los siguientes pasos:
1.

Elimina la entrada del usuario en crontab(1) (si tiene alguna).

2.

Elimina las tareas at(1) pertenecientes al usuario.

3.

Mata todos los procesos pertenecientes al usuario.

4.

Elimina al usuario del fichero local de contraseas del sistema.

5.

Borra el directorio home del usuario (si le pertenece).

6.

Elimina los archivos de correo entrante del usuario de /var/mail.

7.

Borra todos los ficheros del usuario de reas en las que se guardan archivos temporales como /tmp.

59

Captulo 7. Usuarios y administracin bsica de cuentas


8.

Finalmente, elimina el nombre de usuario de todos aquellos grupos a los que pertenece en /etc/group.
Nota: Si un grupo queda vaco y el nombre del grupo coincide con el del usuario, el grupo es eliminado; esto
complementa la creacin de grupos por usuario de adduser(8).

rmuser no puede ser usado para eliminar cuentas de superusuario, dado que algo as es casi siempre seal de masiva

destruccin.
Por defecto existe un modo interactivo que intenta asegurar que uno sabe lo que hace.
Ejemplo 7-2. Eliminacin interactiva de cuenta con rmuser
# rmuser jru

Matching password entry:


jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/tcsh
Is this the entry you wish to remove? y
Remove users home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing users incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
#

7.6.3. chpass
chpass cambia informacin de los usuarios en base de datos como contraseas, shells y datos personales.

Los administradores del sistema, como el superusuario, son los nicos que pueden modificar la informacin y
contraseas de otros usuarios con chpass.
Cuando no le pasamos ms opciones, salvo un nombre de usuario opcional, chpass muestra un editor con
informacin de usuario. Cuando se sale del editor la base de datos de usuarios se actualiza con la nueva informacin.
Ejemplo 7-3. chpass interactivo ejecutado por el superusuario
#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1000
Gid [# or name]: 1000
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/tcsh

60

Captulo 7. Usuarios y administracin bsica de cuentas


Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:

Un usuario normal puede modificar un pequeo subconjunto de esta informacin, y slo para s mismo.
Ejemplo 7-4. chpass interactivo ejecutado por un usuario normal
#Changing user database information for jru.
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:

Nota: chfn y chsh son enlaces a chpass, como tambin lo son ypchpass, ypchfn, e ypchsh. El soporte para
NIS es automtico, por lo que no es necesario especificar el yp antes del comando. Si esto te resulta algo
confuso no te preocupes, NIS ser tratado en el Captulo 16.

7.6.4. passwd
passwd es el comando que se usa normalmente para cambiar tu propia contrasea como usuario o, como
superusuario, la de otros usuarios.
Nota: Los usuarios han de introducir su contrasea original antes de cambiarla para prevenir que gente no
autorizada pueda hacerlo cuando no se encuentren en la consola.

Ejemplo 7-5. Cambio de tu contrasea


% passwd

Changing local password for jru.


Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done

Ejemplo 7-6. Cambio de la contrasea de otro usuario como superusuario


# passwd jru

Changing local password for jru.


New password:

61

Captulo 7. Usuarios y administracin bsica de cuentas


Retype new password:
passwd: updating the database...
passwd: done

Nota: Como ocurre con chpass, yppasswd es un enlace a passwd, de manera que NIS funciona con ambos
comandos.

7.6.5. pw
pw(8) es una utilidad de lnea de comandos para crear, eliminar, modificar, y mostrar usuarios y grupos. Hace de
interfaz a los archivos del sistema de usuarios y grupos. pw tiene un conjunto de opciones de lnea de comandos
bastante potente que lo hacen adecuado para su uso en scripts de shell, aunque los nuevos usuarios puede que lo
encuentren algo ms complicado que el resto de comandos que presentamos aqu.

7.7. Limitar a los usuarios


En un sistema multiusuario es probable que no confes en que el sistema no vaya a ser daado por ningn usuario.
Las cuotas de disco permiten al administrador decirle al sistema de ficheros qu cantidad de espacio de disco puede
utilizar un usuario; adems, ofrecen una manera rpida de comprobar el uso de disco de un usuario sin tener que
calcularlo cada vez. Las cuotas se estudian en el captulo de quotas.
El resto de lmites de recursos incluyen cantidad de CPU, memoria, y otros recursos que el usuario puede utilizar.
Las clases de login se definen en /etc/login.conf. La semntica precisa est fuera del alcance de esta seccin,
pero se describe con detalle en la pgina de manual login.conf(5). Es suficiente decir que cada usuario es asignado a
una clase de login (default por defecto), y que cada clase de login tiene un conjunto de capacidades asociado. Una
capacidad de login es un par nombre=valor , donde nombre es un identificador conocido y valor una cadena de
texto arbitraria que se procesa en funcin del nombre. Establecer clases y capacidades de login es bastante sencillo y
tambin se describe en login.conf(5).
Los lmites de recursos son diferentes de las capacidades de login en dos sentidos. En primer lugar, para cada lmite
existe un lmite blando (actual) y uno duro. Un lmite blando puede ser ajustado por el usuario o una aplicacin, pero
no puede ser ms alto que el lmite duro. ste ltimo puede ser disminuido por el usuario pero nunca aumentado. En
segundo lugar, la mayora de los lmites de recursos aplican a un usuario concreto por proceso, no globalmente.
Ntese, no obstante, que estas diferencias vienen impuestas por cmo se tratan los lmites especficamente, no por la
implementacin del marco de capacidades de login (es decir, en realidad no constituyen un caso especial de
capacidades de login).
Sin ms, a continuacin veremos los lmites de recursos ms comnmente usados (el resto, junto con el resto de
capacidades de login, puede encontrarse en login.conf(5)).
coredumpsize

62

Captulo 7. Usuarios y administracin bsica de cuentas


El tamao de un fichero core generado por un programa est, por razones obvias, subordinado a otros lmites
sobre uso de disco (p. ej., filesize, o cuotas de disco). Aun y as, se usa frecuentemente como un mtodo
menos severo de controlar consumo de espacio de disco, dado que los usuarios no generan ficheros core por
ellos mismos, y a menudo no los borran, activar este lmite puede evitar que agoten el espacio de disco de que
disponen si algn programa grande (p. ej., emacs) deja de funcionar abruptamente.

cputime

sta es la mxima cantidad de tiempo de CPU que los procesos de un usuario pueden consumir.
Nota: ste es un lmite sobre el tiempo de CPU consumido, no el porcentaje de uso de CPU que se
muestra en algunos campos de top(1) y ps(1). Un lmite de ese tipo no es posible a da de hoy, y sera
bastante intil: un compilador probablemente una tarea legtima puede usar prcticamente el 100% de
la CPU durante algn tiempo con facilidad.

filesize

ste es el tamao mximo que puede llegar a tener un fichero del usuario. A diferencia de las cuotas de disco,
este lmite se especifica para ficheros individuales, no para el conjunto de todos los archivos que posee.

maxproc

ste es el mximo nmero de procesos que un usuario puede ejecutar a la vez, incluidos tanto los procesos en
primer plano como los procesos en segundo plano. Por razones obvias, este lmite no puede ser mayor que el
lmite de sistema especificado por kern.maxproc sysctl. Obsrvese tambin que si asignamos un valor
demasiado bajo a este lmite podemos mermar la productividad de un usuario: frecuentemente es til entrar
mltiples veces en el sistema o ejecutar pipelines. Algunas tareas, como compilar largos programas, lanzan
mltiples procesos (p. ej., make(1), cc(1), y dems preprocesadores intermedios).

memorylocked

sta es la mxima cantidad de memoria que un proceso puede haber solicitado tener bloqueada en memoria
principal (p. ej., ver mlock(2)). Algunos programas crticos para el sistema, como amd(8), se quedan
bloqueados en la memoria principal de manera que en caso de ser llevados a swap no contribuyan a la basura
del sistema si hay algn problema.

63

Captulo 7. Usuarios y administracin bsica de cuentas


memoryuse

sta es la mayor cantidad de memoria que un proceso puede consumir en todo momento. Incluye tanto memoria
normal como uso de swap. No se trata de un lmite para restringir el consumo de memoria en general, pero es un
buen comienzo.

openfiles

sta es la mxima cantidad de archivos que un proceso puede tener abiertos. En FreeBSD, los archivos se usan
tambien para representar sockets y canales IPC; as, cuida de no poner este lmite demasiado bajo. A nivel de
sistema, el lmite para esto lo define kern.maxfiles sysctl.

sbsize

ste es el lmite de cantidad de memoria de red, y por lo tanto mbufs, que un usuario puede consumir. Se
origin como respuesta a un viejo ataque DoS que creaba muchos sockets, pero puede ser usado en general para
limitar las comunicaciones por red.

stacksize

ste es el tamao mximo que puede alcanzar la pila de un proceso. Por s solo no es suficiente para limitar la
cantidad de memoria que puede usar un programa; en consecuencia, debera ser usado junto con otros lmites.

Hay unas pocas cosas ms a recordar cuando establecemos lmites de recursos. A continuacin vienen algunas
recomendaciones, sugerencias, y comentarios varios.

Los procesos que se ponen en marcha cuando arranca el sistema por /etc/rc estn asignados a la clase de login
daemon.

Aunque el /etc/login.conf que viene con el sistema tiene valores razonables para la mayora de los lmites,
slo t, el administrador, puedes saber lo que es apropiado para tu sistema.

A los usuarios del X Window System (X11) probablemente se les debera conceder ms recursos que al resto. X11
de por s consume muchos recursos, pero adems contribuye a que los usuarios ejecuten ms programas
simultneamente.

Recuerda que hay muchos lmites que aplican a procesos individuales, no al usuario en general. Por ejemplo,
poner openfiles a 50 significa que cada uno de los procesos que ejecute un usuario puede abrir a lo mximo 50
ficheros. As, la cantidad de ficheros que un usuario puede abrir es el valor de openfiles multiplicado por el
valor de maxproc. Esto tambin aplica al uso de memoria.

Para ms informacin acerca de lmites de recursos y clases y capacidades de login en general, consulta las pginas
de manual relevantes: cap_mkdb(1), getrlimit(2), login.conf(5).

64

Captulo 7. Usuarios y administracin bsica de cuentas

7.8. Personalizar a los usuarios


La localizacin es un entorno establecido por el administrador o el usuario para dar soporte a distintos lenguajes,
juegos de caracteres, estndares sobre fechas y horas, etctera. ste tema se trata en el captulo Localizacin.

7.9. Grupos
Un grupo es simplemente una lista de usuarios. Los grupos se identifican por su nombre de grupo y gid (ID de
grupo). En FreeBSD (y en la mayora de sistemas Unix), los dos factores que tiene en cuenta el ncleo para decidir si
un proceso puede hacer algo es su ID de usuario y la lista de grupos a los que pertenece. A diferencia del ID de
usuario, un proceso tiene una lista de grupos asociados. En ocasiones encontrars menciones al "ID de grupo" de un
usuario o de un proceso; la mayora de las veces referirn simplemente al primero de los grupos de la lista.
La correspondencia entre nombres e IDs de grupo est en /etc/group. Se trata de un fichero de texto plano con
cuatro campos separados por el signo dos puntos. El primer campo es el nombre de grupo, el segundo la contrasea
encriptada, el tercero el ID de grupo, y el cuarto la lista de miembros separados por comas. Puede ser editado a mano
sin peligro (suponiendo, por supuesto, que no se cometan errores de sintaxis!). Para una descripcin ms completa
de la sintaxis, ver la pgina de manual group(5).
Si no quieres editar /etc/group manualmente, puedes usar el comando pw(8) para aadir y modificar grupos. Por
ejemplo, para aadir un grupo llamado teamtwo y luego confirmar que existe puedes usar:
Ejemplo 7-7. Aadir un grupo usando pw(8)
# pw groupadd teamtwo
# pw groupshow teamtwo

teamtwo:*:1100:

El nmero 1100 en el ejemplo anterior es el ID de grupo del grupo teamtwo. Ahora mismo teamtwo no tiene
miembros, y es por tanto bastante intil. Cambiemos eso invitando a jru a formar parte del grupo teamtwo.
Ejemplo 7-8. Aadir a alguien a un grupo usando pw(8)
# pw groupmod teamtwo -M jru
# pw groupshow teamtwo

teamtwo:*:1100:jru

El argumento de la opcin -M es una lista con los usuarios que son miembros del grupo separados por comas.
Sabemos de secciones anteriores que el fichero de contraseas tambin contiene un grupo para cada usuario. El
usuario es automticamente aadido a la lista de grupos por el sistema; no constar como miembro cuando usemos el
comando groupshow con pw(8), pero s cuando la informacin se consulte con id(1) u otra herramienta similar. En
otras palabras, pw(8) slo manipula el fichero /etc/group; nunca tratar de leer datos adicionales de
/etc/passwd.
Ejemplo 7-9. Determinar pertenencia a grupos con id(1)
% id jru

uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)

65

Captulo 7. Usuarios y administracin bsica de cuentas


Como puedes ver, jru es miembro de los grupos jru y teamtwo.
Para ms informacin acerca de pw(8), consulta su pgina de manual, y para ms informacin acerca del formato de
/etc/group, consulta la pgina de manual de group(5).

Notas
1. Bueno, a menos que conectes mltiples terminales, pero dejaremos ese tema para el Captulo 14.
2. La -s hace que adduser sea silencioso por defecto. Ms tarde usamos -v cuando queremos cambiar valores por
defecto.

66

Captulo 8. Configurando el Kernel de FreeBSD


Actualizado y reestructurado por Jim Mock. Contribucin original por Jake Hamby.

8.1. Sinpsis
El kernel de FreeBSD es el corazn del sistema operativo. Es responsable del manejo y control de la memoria,
reforzamiento de los controles de seguridad, manejo de redes, acceso a dispositivos, y mucho ms. Mientras que
FreeBSD se torna a un sistema ms dinmico y configurable, en ocasiones es an necesario reconfigurar y
recompilar un kernel hecho a la medida de nuestras necesidades.
Al trmino de este captulo, usted sabr:

Por que puede ser necesario que compile un kernel personalizado.

Como crear un fichero de configuracin del kernel, o bien, editar un fichero existente.

Como utilizar el fichero de configuracin, para crear y compilar un nuevo kernel.

Como instalar un kernel nuevo.

Como crear los ficheros en /dev que pudiesen ser necesarios.

Como resolver algunos problemas, si algo sale mal.

8.2. Porqu Construir un Kernel Propio?


Tradicionalmente FreeBSD ha contado con lo que se conoce como un kernel monoltico. Esto quiere decir que el
kernel era un gran y nico programa que soportaba una lista previa de dispositivos, y que si se deseaba modificar el
comportamiento del kernel, se debia compilar un nuevo kernel, y reiniciar el sistema con el nuevo kernel.
Hoy en da, FreeBSD esta moviendose rpidamente, haca un modelo, donde la funcionalidad del kernel esta basada
en mdulos, los cuales pueden ser cargados y descargados dinmicamente, de acuerdo a las necesidades del kernel.
Esto permite que el kernel se adapte a nuevo hardware que sale al mercado (tal como las tarjetas PCMCIA en las
laptop), o bien el aadir nuevas funcionalidades al kernel, que no eran necesarias al momento de su compilacin
original. El trmino coloquial para esto es KLDs.
A pesar de lo anterior, aun es necesario llevar a cabo cierta configuracin esttica en la configuracin del kernel. En
algunos casos esto se debe a que la funcionalidad del sistema esta tan ligada al kernel, que no puede realizarse por
medio de carga dinmica de los modulos. En otros casos puede ser simplemente por que nadie se ha tomado el
tiempo, para escribir un modulo que pueda ser cargado dinmicamente por el kernel, para esa funcionalidad
especfica.
El construir un kernel propio, es uno de los ms importantes rituales, que casi todo usuario de UNIX debe afrontar.
Este proceso, aun cuando lleva un tiempo, traer grandes beneficios a su sistema FreeBSD. A diferencia del kernel
GENERIC, que contiene soporte para todo el hardware soportado por el sistema, un kernel propio unicamente
contiene soporte para el hardware de su PC. Esto conlleva a grandes beneficios, como son:
Nota: N de T.: El kernel GENERIC es el kernel GENERICO que instala el sistema por default, del cual su fichero
de configuracion lleva el mismo nombre.

67

Captulo 8. Configurando el Kernel de FreeBSD

Mayor rapidez en el arranque del sistema. En virtud de que el kernel solo tiene que probar el hardware que
realmente esta en su sistema, el tiempo que toma a su sistema arrancar, se reducir dramticamente.

Menor uso de memoria. Generalmente un kernel personalizado utiliza menos recursos de memoria que un kernel
GENERIC, lo cual es importante, ya que el kernel debe encontrarse presente en memoria real. Por esta razn, un
kernel personalizado puede ser de gran utilidad en sistemas con pequea cantidad de memoria RAM.

Soporte para hardware adicional. Un kernel personalizado le permite aadir dispositivos tal como tarjetas de
sonido, las cuales no estan incluidas en el kernel GENERIC.

8.3. Compilacin e Instalacin de un Kernel


Personalizado
En primer lugar, hagamos un breve recorrido por el directorio donde se lleva a cabo la compilacin del kernel. Todos
los directorios mencionados hacen referencia al directorio principal, que es /usr/src/sys, al cual tambin
podemos acceder, mediante /sys. Existen gran cantidad de subdirectorios, que representan diferentes partes del
kernel, pero el ms importante para lo que deseamos hacer son arch y /conf, que es donde se llevara a cabo la
edicin del fichero de configuracin y la compilacin (compile) del mismo, que es el punto de partida para la
personalizacin del kernel. El directorio arch representa la arquitectura del sistema, por lo que puede ser i386,
alpha o bien pc98 (una arquitectura alternativa, similar a PC muy popular en Japn). Todo lo que existe dentro de
un directorio de una arquitectura en particular, es especfico para dicha arquitectura; el resto del cdigo es comn
para todas las plataformas a las que FreeBSD es potencialmente portable. Note la organizacin lgica de la estructura
de los directorios, con cada soporte para dispositivos, sistema de ficheros y opciones, en su propio subdirectorio.
Nota: Si no existe el directorio /usr/src/sys en su sistema, quiere decir que las fuentes del kernel no fueron
instaladas. La forma ms sencilla de hacer esto es mediante el programa /stand/sysinstall, siendo usuario
root, y seleccionando Configure, posteriormente Distributions, despus src y finalmente sys. Si a usted no
le agrada mucho utilizar sysinstall, y tiene acceso a un CDROM oficial de FreeBSD, entonces puede instalar
las fuentes, por medio de la lnea de comandos, de la siguiente forma:
#
#
#
#

mount /cdrom
mkdir -p /usr/src/sys
ln -s /usr/src/sys /sys
cat /cdrom/sys/ssys.[a-d]* | tar -xzvf

Posteriormente, dirijase al directorio arch/conf y copie el fichero de configuracin GENERIC con el nombre que
desee. Por ejemplo:
# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL

Tradicionalmente, este nombre se escribe con maysuculas y, si usted cuenta con varias maquinas FreeBSD, con
diferente hardware, es una buena idea nombrar el kernel, igual que el nombre de host de cada maquina. En este caso,
para efectos de este ejemplo, le llamaremos MYKERNEL .

68

Captulo 8. Configurando el Kernel de FreeBSD


Sugerencia: El guardar su fichero de configuracin directamente bajo el directorio /usr/src, puede ser una
mala idea. Si usted esta experimentando problemas, puede ser tentador simplemente eliminar /usr/src y
comenzar de nuevo. Cinco segundos despus de haber hecho esto, se dar cuenta de que ha eliminado el
fichero de configuracin de su kernel.
Una alternativa es guardar este fichero de configuracin en cualquier otra parte y crear un enlace simblico al
fichero localizado bajo el directorio i386.
Por ejemplo:
#
#
#
#

cd /usr/src/sys/i386/conf
mkdir /root/kernels
cp GENERIC /root/kernels/MYKERNEL
ln -s /root/kernels/MYKERNEL

Nota: Todo esto deber llevarse a cabo como superusuario (root), o de lo contrario se tendra como resultado
errores de negacin de permisos (permission denied).

Ahora edite el fichero de configuracin MYKERNEL, con su editor de textos favorito. Si se trata de una instalacin
reciente probablemente el nico editor disponible sea vi, del cual es complicado explicar su uso detallado en este
documento, pero existen bastantes libros que detallan su uso, puede ver algunos en la bibliografa. De cualquier
manera FreeBSD ofrece un editor de uso muy sencillo, llamado ee, el cual, si usted es principiante, ser el editor de
su eleccin. Sientase en libertad de modificar los comentarios en la parte superior, para que reflejen su configuracin
o bien los cambios realizados, para diferenciarlo del fichero GENERIC.
Si ha compilado un kernel, bajo SunOS o algun otro sistema operativo BSD, seguramente la informacin de este
fichero le ser muy familiar. Por otro lado, si usted esta emigrando de otros sistemas operativos como DOS, el fichero
GENERIC puede parecerle intimidante, as que siga las instrucciones descritas en El Fichero de Configuracin
detenidamente y con sumo cuidado.
Nota: Asegurese siempre de verificar el fichero /usr/src/UPDATING, antes de realizar cualquier actualizacin
del sistema, en el caso de que se sincronice con el source-tree, para contar con la ltima versin de FreeBSD. El
fichero /usr/src/UPDATING cuenta con toda la informacin importante, relacionada con actualizaciones. Al ser
distribuida con FreeBSD, esta informacin deber estar ms actualizada que la provista por el handbook.

Ahora es momento de llevar a cabo la compilacin del cdigo fuente del kernel. Existen dos procedimientos para
llevar esto a cabo, y el que usted utilice depender del por que esta personalizando su kernel, as como la versin de
FreeBSD que este utilizando.

Si unicamente ha instalado el cdigo fuente del kernel, utilice el procedimiento 1.

Si usted esta ejecutando un versin de FreeBSD anterior a 4.0, y no esta actualizando a la versin 4.0 o mayor,
mediante el procedimiento make world, utilice el procedimiento 1.

Si esta personalizando su kernel, sin actualizar el cdigo fuente (quizs solo para aadir una nueva opcin como
IPFIREWALL) puede utilizar cualquier de los dos procedimientos.

Si esta reconstruyendo su kernel, como parte del proceso de actualizacin por medio de make world, entonces
utilice el metodo 2.

69

Captulo 8. Configurando el Kernel de FreeBSD


Procedimiento 1. Compilando el Kernel de la forma tradicional
1.

Ejecute config(8) para generar el cdigo fuente del kernel.


# /usr/sbin/config MYKERNEL

2.

Cambie de ruta, hacia el directorio de compilacin.


# cd ../../compile/MYKERNEL

3.

Compile el kernel.
# make depend
# make

4.

Instale el nuevo kernel.


# make install

Procedimiento 2. Compilando el kernel de una nueva forma


1.

Dirijase al directorio /usr/src .


# cd /usr/src

2.

Compile el kernel.
# make buildkernel KERNCONF=MYKERNEL

3.

Instale el nuevo kernel.


# make installkernel KERNCONF=MYKERNEL

Nota: Para versiones de FreeBSD 4.2 y anteriores, deber reemplazar KERNCONF= con KERNEL=. Para versiones
4.2-STABLE que fueron obtenidas posterior al 2 de Febrero del 2001, si se reconoce este parmetro como
KERNCONF=.

Si usted aun no ha actualizado su sistema fuente (source tree) (no ha ejecutado CVSup, CTM o bien usado
anoncvs), entonces deberia utilizar la siguiente secuencia de comandos; config, make depend, make, make
install.
El kernel nuevo ser copiado al directorio raz como /kernel y el antiguo kernel, ser renombrado como
/kernel.old. Ahora deber reiniciar su sistema, utilizando su nuevo kernel. En caso de que se presente algun
problema, hay algunos consejos para la resolucin de problemas, al final de este captulo. Asegurese de leer la
seccin que explica como recuperar el sistema, en caso de que su kernel no desee bootear.
Nota: Si usted ha aadido nuevos dispositivos (tales como tarjetas de sonido) puede ser necesario que deba
crear los ficheros de dispositivos, bajo el directorio /dev, antes de poder utilizarlos. Para ms informacin al
respecto, revise la seccin "Creando Ficheros de Dispositivos" ms adelante en este captulo.

70

Captulo 8. Configurando el Kernel de FreeBSD

8.4. El Fichero de Configuracin


En realidad el formato general de un fichero de configuracin es simple. Cada lnea contiene una palabra clave con
uno o ms argumentos. Para efecto de simplificar, la mayora de las lneas contienen slo un argumento. Cualquier
cosa que precede a # es considerado como un comentario, y por lo tanto es ignorado. La siguiente seccin describe
cada palabra clave, en el orden que normalmente encontrar en el fichero GENERIC, aunque algunas palabras claves
han sido agrupadas de acuerdo a su uso (como es el caso de lo que se refiere a redes), aun cuando las podr encontrar
dispersas en el fichero GENERIC. Una mayor lista de opciones, as como explicaciones detalladas de cada
dispositivo, podrn encontrarse en el fichero de configuracin de ayuda LINT, localizado en el mismo subdirectorio
que GENERIC. Si usted tiene alguna duda sobre si es necesaria alguna lnea u opcin, consulte el fichero LINT.
El uso de numeros: En todas las versiones de FreeBSD posteriores e incluyendo la 3.X, el proceso de config(8)
requiere que el uso de numeros como cadenas de texto, en el fichero de configuracin, deben encontrarse entre
comillas dobles.
Este requerimiento ha sido removido, desde la rama 4.X, que es la que estamos cubriendo en este libro, por lo
que si usted cuenta con un sistema anterior a 4.X, revise los ficheros /usr/src/sys/i386/conf/LINT y
/usr/src/sys/i386/conf/GENERIC de su sistema para ver algunos ejemplos.

A continuacin encontrar un ejemplo del fichero GENERIC, con algunos comentarios adicionales para aclaraciones
donde haya sido necesario. Este ejemplo debe ser igual, o muy simlar, a su copia localizada en
/usr/src/sys/i386/conf/GENERIC . Para ver mas detalles sobre las posibles opciones del kernel, vea el fichero
/usr/src/sys/i386/conf/LINT.
Nota: N de T: En virtud de que el fichero que usted encontrar en su sistema es un fichero en ingls ;), he
decidido dejar lo que corresponde al fichero GENERIC, tal como usted lo ver, y slo traducir los comentarios
previos de cada opcin. En caso de que algn comentario del fichero sea traducido (por claridad), favor de
considerarlo como un extra, que no encontrar en su fichero original. Gracias por su comprensin.

#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#

GENERIC -- Generic kernel configuration file for FreeBSD/i386


For more information on this file, please read the handbook section on
Kernel Configuration Files:
http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html
The handbook is also available locally in /usr/share/doc/handbook
if youve installed the doc distribution, otherwise always see the
FreeBSD World Wide Web server (http://www.FreeBSD.ORG/) for the
latest information.
An exhaustive list of options and more detailed explanations of the
device lines is also present in the ./LINT configuration file. If you are
in doubt as to the purpose or necessity of a line, check first in LINT.
$FreeBSD: src/sys/i386/conf/GENERIC,v 1.246 2000/03/09 16:32:55 jlemon Exp $

Las siguientes palabras claves son obligatorias en todo kernel que se vaya a recompilar:

71

Captulo 8. Configurando el Kernel de FreeBSD


machine i386

Esto se refiere a la arquitectura de la maquina. La cual debe ser i386, alpha, o pc98.
cpu
cpu
cpu
cpu

I386_CPU
I486_CPU
I586_CPU
I686_CPU

Lo anterior especifca el tipo de procesador con que cuenta su sistema. En este caso puede dejar varias opciones (por
ejemplo en el caso de que no este seguro si su procesador es I586_CPU o bien I686_CPU), de cualquier forma para
un kernel personalizado siempre es preferible especificar el tipo de procesador con que cuenta su sistema. Si usted no
esta seguro del tipo de procesador con que cuenta su sistema, puede utilizar el comando dmesg, para ver los
mensajes de envi el kernel al arrancar el sistema, y donde podr ver como detecto el CPU.
La arquitectura Alpha cuenta con diferentes valores para el cpu. Los cuales incluyen:
cpu
cpu

EV4
EV5

Si usted utiliza un sistema Alpha, debe estar utilizando un tipo de CPU descrito en la parte superior.
ident

GENERIC

Este es el identificador del kernel. Esta opcin deber cambiarla a como desee nombrar su kernel, como en el
ejemplo anterior; MYKERNEL. El valor que asigne en la opcin ident, ser el nombre que aparecer en la pantalla, al
momento de iniciar el kernel del sistema, de tal forma que es recomendable personalizar este parmetro, ms aun si
usted piensa contar con un kernel diferente al usual (por ejemplo, en el caso de que desee contar con un kernel
experimental).
maxusers

La opcin maxusers, establece el tamao de un numero importante de tablas del sistema. Este numero
supuestamente debe ser muy similar al numero de usuarios que usted espera ejecutar simultaneamente en su sistema.
Comenzando con FreeBSD 4.5, el sistema automticamente configurar esta opcin para usted, si es que
explicitamente le asigna el valor de 0 a esta opcin1. Si usted esta utilizando una versin de FreeBSD anterior, o bien
usted desea controlar este parmetro, deber establecer cuando menos un valor de 4, especialmente si usted utiliza el
Sistema de Ventanas X, o compila software. La razn de esto es que una de las tablas ms importantes que controla
maxusers, es la que controla el numero mximo de procesos que se pueden ejecutar simultaneamente en el sistema,
lo cual se establece como; 20 + 16 * maxusers, por lo que si establece este valor como 1, quiere decir que podr
ejecutar 36 procesos simultaneamente, incuyendo los de inicio, algo as como 18, y los 15 que se ejecutaran al
arrancar el Sistema de Ventanas X. Incluso una simple tarea, como leer una pagina de ayuda man, incia como nueve
procesos, para efecto de filtrar, descomprimir y visualizar. Establecer un valor de 64 a maxusers, le permitira
ejecutar 1044 procesos simultaneamente, que debe ser suficiente para casi cualquier uso. De cualquier forma, si llega
a notar su tabla de proc llena (proc table full), al tratar de iniciar algn proceso, o bien esta ejecutando un servidor
con bastantes usuarios simultaneos (como ftp.FreeBSD.org), siempre puede incrementar este numero y
recompilar su kernel.
Nota: La opcin maxusers no limita el numero de usuarios que pueden ingresar al sistema. Simplemente
establece valores, para el tamao de varias tablas del sistema, a valores razonables, considerando el numero de
usuarios que usted espera tener en su sistema y el numero de procesos que cada uno de estos usuarios

72

Captulo 8. Configurando el Kernel de FreeBSD


requiere correr. Una palabra clave que efectivamente limita el numero de logins remotos, es pseudo-device
pty 16 .

# Floating point support - do not disable.


device
npx0
at nexus? port IO_NPX irq 13

El dispositivo npx0 es la interfaz del punto flotante en FreeBSD, el cual es parte del hardware como co-procesador o
bien el software emulador matemtico. Este no es opcional.
# Pseudo devices - the number indicates how many units to allocate.
pseudo-device
loop
# Network loopback

Este es el dispositivo genrico de TCP/IP, loopback. Si usted hace telnet o FTP a localhost (ej. 127.0.0.1), el
enlace se realiza por medio de este pseudo-dispositivo. Este es obligatorio.
Todo lo que veremos a continuacin, es ms o menos opcional. Vea las notas debajo de cada opcin, para ms
informacin al respecto.
#makeoptions
options

DEBUG=-g
MATH_EMULATE

#Build kernel with gdb(1) debug symbols


#Support for x87 emulation

Mediante esta lnea podemos indicarle al kernel que simule un co-procesador matemtico, si su maquina no cuenta
con uno (386 o 486SX). Si usted cuenta con una 486DX, o una 387 o 486SX (con chip separado de 387 o 487), o
ms actual (Pentium, Pentium II, etc.), puede comentar esta lnea sin problemas (N de T. Para comentar las lneas de
este fichero deber agregar el simbolo # antes de la lnea, con lo cual la lnea ser ignorada).
Nota: La rutina de emulacin del co-procesador matemtico que viene con FreeBSD, no es muy exacta. Si
usted no cuenta con un co-procesador metamtico, y requiere la mayor exactitud posible, es recomendable que
modifique esta opcin a quedar como GPL_MATH_EMULATE, para usar el soporte de GNU, que no se incluye por
omisin, por cuestiones de licencia.

options

INET

#InterNETworking

Soporte para redes. Deje esta opcin incluida, aun si no planea esta conectado a una red. La mayora de los
programas requieren cuando menos conexin con el dispositivo loopback (ej. al hacer conexin con su propia
maquina), asi que esto es obligatorio.
options

INET6

#IPv6 communications protocols

Esto habilita los protocolos de comunicacin IPv6.


options
options

FFS
FFS_ROOT

#Berkeley Fast Filesystem


#FFS usable as root device [keep this!]

Esto es el sistema de ficheros bsico del disco duro. Incluyalo si desea arrancar su sistema del disco duro.
options

UFS_DIRHASH

#Improve performance on big directories

Esta opcin incluye cdigo para acelerar las operaciones del disco duro en directorios de gran tamao, aunque esto
implique sacrificar algo de memoria adicional. Usted normalmente dejaria esta opcin si es para un servidor grande o

73

Captulo 8. Configurando el Kernel de FreeBSD


bien una estacin de trabajo interactiva y eliminarlo si esta utilizando FreeBSD en un sistema pequeo donde es
importante conservar la memoria o bien si la velocidad del disco duro no es tan importante, tal como un firewall.
options

SOFTUPDATES

#Enable FFS soft updates support

Esta opcin habilita soft updates en el kernel, lo cual acelera la escritura en los discos. Esta opcin se habilita por
default desde la rama 4.X, pero es posible que no este habilitada. Revise la respuesta que le da mount(8) para
verificar si cuenta con esta opcin. Si no ve la opcin soft-updates, deber activarla usando tunefs(8) o newfs(8) para
nuevos sistemas de ficheros.
options
options

MFS
MD_ROOT

#Memory Filesystem
#MD is a potential root device

Este es el sistema de mapeo de memoria. Esto basicamente es el mapeo de la memoria RAM del disco para acceso
rpido y almacenar ficheros temporales, til si cuenta con bastante memoria swap, de la cual desee tomar ventaja. Un
sitio perfecto para montar la particin MFS es el directorio /tmp, esto lo puede hacer aadiendo la siguiente lnea al
fichero /etc/fstab:
/dev/ad1s2b /tmp mfs rw 0 0

Ahora simplemente necesita reiniciar su sistema o bien, ejecutar el comando mount /tmp.
options
options

NFS
NFS_ROOT

#Network Filesystem
#NFS usable as root device, NFS required

El sistema de ficheros de red. A menos de que planee montar particiones desde un servidor Unix atravs de TCP/IP,
esta lnea puede ser comentada.
options

MSDOSFS

#MSDOS Filesystem

El sistema de ficheros de MS-DOS. A menos de que planee montar una particin con formato de DOS, al momento
de arrancar el sistema, puede deshabilitar esta opcin sin problema alguno. Automticamente ser cargado la primera
vez que monte una particin DOS, como se explic anteriormente. As mismo la excelente aplicacin mtools (que
esta disponible de la coleccin de ports), le permite accesar a diskettes con formato DOS, sin necesidad de montarlos
o desmontarlos (y no requiere para nada de MSDOSFS).
options
options

CD9660
CD9660_ROOT

#ISO 9660 Filesystem


#CD-ROM usable as root, CD9660 required

El sistema de ficheros ISO 9660 para CDROMs. Comente esta opcin si usted no cuenta con una unidad de CDROM
o bien slo monta CDs de datos ocasionalmente (en virtud de que ser cargado dinmicamente la primera vez que se
utilice para un CD de datos). Los CDs de audio no requieren de esta opcin.
options

PROCFS

#Process filesystem

El sistema de ficheros de procesos. Este es un sistema de ficheros virtual, montado en /proc, que permite que
programas como ps(1) le den mayor informacin sobre los procesos que se estn ejecutando.
options

COMPAT_43

#Compatible with BSD 4.3 [KEEP THIS!]

Compatibilidad con 4.3BSD. Conserve esta opcin; algunos programas se comportaran de una forma extraa si esta
opcin es comentada.

74

Captulo 8. Configurando el Kernel de FreeBSD


options

SCSI_DELAY=15000

#Delay (in ms) before probing SCSI

Esta opcin le indica al kernel hacer una pausa de 15 segundos antes de realizar una prueba en cada dispositivo SCSI
de sus sistema. Si usted slo cuenta con dispositivos IDE, puede ignorar esta opcin, de otra forma quizs desee
reducir el tiempo a 5 segundos, para efecto de acelerar el arranque. Claro esta, que si hace esto, y FreeBSD tiene
problemas para reconocer sus dispositivos SCSI, deber incrementar este valor nuevamente.
options

UCONSOLE

#Allow users to grab the console

Permite el uso de la consola, que es muy til para usuarios del sistema X. Por ejemplo, puede crear una consola
xterm, al teclear xterm -C, que servira para desplegar mensajes (usando talk), as como enviar (usando write)
mensajes, o bien, visualizar cualquier otro mensaje enviado por el kernel, sin necesidad de salir de su entorno grfico.
options

USERCONFIG

#boot -c editor

Esta opcin le permite ejecutar el editor de configuracin, desde el men de arranque.


options

VISUAL_USERCONFIG

#visual boot -c editor

Esta opcin le permite ejecutar el editor visual de configuracin, desde el men de arranque.
options

KTRACE

#ktrace(1) support

Esta opcin habilita el proceso de rastreo del kernel, que es de utilidad para efecto de depuracin.
options

SYSVSHM

#SYSV-style shared memory

Esta opcin provee memoria compartida, para el System V. El uso ms comn de esto es la extensin XSHM del
servidor X, del cual muchos programas de grficos-intensos, toman ventaja, para contar con mayor velocidad. Si
usted utiliza el entorno grfico X, definitivamente querra incluir esta opcin.
options

SYSVSEM

#SYSV-style semaphores

Soporte para los semaforos del System V. Con menos uso que el anterior, pero slo agregar unos cuantos cientos de
bytes a su kernel.
options

SYSVMSG

#SYSV-style message queues

Soporte para mensajes de System V. Nuevamente, slo aadir unos cientos de bytes a su kernel.
Nota: El comando ipcs(1) le mostrar cualquier proceso que haga uso de estas componentes de System V.

options
options

P1003_1B #Posix P1003_1B real-time extensions


_KPOSIX_PRIORITY_SCHEDULING

Extensiones de tiempo-real aadidas en POSIX en 1993. Algunas aplicaciones de la coleccin de ports, utilizan estas
extensiones (tal como StarOffice).
options ICMP_BANDLIM #Rate limit bad replies

75

Captulo 8. Configurando el Kernel de FreeBSD


Esta opcin permite a ICMP manejar errores,en cuanto al lmite de ancho de banda a utilzar. Es recomendable dejar
esta opcin tal cual, en virtud de que le permite protejer su sistema contra ataques de paquetes de Negacin de
Servicio (Denial of Service - DoS).
# To make an SMP kernel, the next two are needed
#options
SMP
# Symmetric MultiProcessor Kernel
#options
APIC_IO
# Symmetric (APIC) I/O

Las opciones anteriores son necesarias si desea soporte para SMP.


device

isa

Todas las PCs soportadas por FreeBSD cuentan con uno de estos. Si usted cuenta con una IBM PS/2 (Arquitectura de
Micro Canal), en este momento usted no puede ejecutar FreeBSD (se esta trabajando en este soporte).
device

eisa

Incluya esta opcin, si cuenta con una tarjeta madre de tipo EISA. Esto habilita la autodeteccin y configuracin del
soporte para los dispositivos que hacen uso del bus EISA.
device

pci

Incluya esta opcin si cuenta con una tarjeta madre basada en PCI. Esto habilita la auto-deteccin de las tarjetas PCI
y de los canales a utilizar en los buses PCI e ISA.
# Floppy drives
device
fdc0
device
fd0
device
fd1

at isa? port IO_FD1 irq 6 drq 2


at fdc0 drive 0
at fdc0 drive 1

Este es el controlador para diskettes. El dispositivo fd0 corresponde a la disquetera A: y fd1 corresponde a la
disquetera B:.
device

ata

Este controlador da soporte a todos los dispositivos ATA y ATAPI. Usted slo necesita incluir esta opcin una sola
vez (device ata), para que el kernel detecte todos los dispositivos PCI ATA/ATAPI de sus sistema.
device

atadisk

# ATA disk drives

Este es necesario junto con device ata para controladores de discos ATAPI.

device

atapicd

# ATAPI CDROM drives

Este es necesario junto con device ata para controladores de CDROM ATAPI.
device

atapifd

# ATAPI floppy drives

Este es necesario junto con device ata para controladores de disqueteras ATAPI.
device

atapist

# ATAPI tape drives

Este es necesario junto con device ata para controladores de cintas ATAPI.

76

Captulo 8. Configurando el Kernel de FreeBSD


options

ATA_STATIC_ID

#Static device numbering

Esta hace que el numero de controlador sea esttico (como en el viejo controlador) o de lo contrario este numero es
asignado dinmicamente.
# ATA and ATAPI devices
device
ata0
device
ata1

at isa? port IO_WD1 irq 14


at isa? port IO_WD2 irq 15

Utilice estos para sistemas antiguos no-PCI.


# SCSI Controllers
device
ahb
device
ahc
device
amd
device
dpt
device
isp
device
ncr
device
sym
device
device
device
device
device

adv0
adw
bt0
aha0
aic0

#
#
#
#
#
#
#

EISA AHA1742 family


AHA2940 and onboard AIC7xxx devices
AMD 53C974 (Teckram DC-390(T))
DPT Smartcache - See LINT for options!
Qlogic family
NCR/Symbios Logic
NCR/Symbios Logic (newer chipsets)

at isa?
at isa?
at isa?
at isa?

Controladores SCSI. Comente cualquiera que no se encuentre en su sitema. Si cuenta con un sistema unicamente
IDE, puede eliminar todos.
# SCSI peripherals
device
scbus
device
da
device
sa
device
cd
device
pass
access)

#
#
#
#
#

SCSI bus (required)


Direct Access (disks)
Sequential Access (tape etc)
CD
Passthrough device (direct SCSI

Perifricos SCSI. Nuevamente, comente todos los que no esten presentes en su sistema, si slo cuenta con hardware
IDE, puede eliminarlos por completo.
# RAID controllers
device
ida
device
amr
device
mlx

# Compaq Smart RAID


# AMI MegaRAID
# Mylex DAC960 family

Controladores de soporte RAID. Si su sistema no cuenta con estos, puede comentarlos o eliminarlos.
# atkbdc0 controls both the keyboard and the PS/2 mouse
device
atkbdc0
at isa? port IO_KBD

Este controlador (atkbdc) provee servicios de E/S a teclados AT y dispositivos de tipo PS/2. Este controlador es
necesario para el teclado (atkbdc) y el dispositivo puntero (N de T: Mejor conocido como ratn) tipo PS/2 (psm).
device

atkbd0

at atkbdc? irq 1

77

Captulo 8. Configurando el Kernel de FreeBSD


El controlador atkbd, junto con el controlador atkbdc, provee acceso al teclado AT 84 o bien al teclado de tipo AT
mejorado, que es conectado al controlador de teclado AT.
device

psm0

at atkbdc? irq 12

Utilice este controlador si su ratn se conecta al puerto PS/2.


device

vga0

at isa?

El controlador para la tarjeta de video.


# splash screen/screen saver
pseudo-device
splash

Pantalla Splash al arranque! El protector de pantallas requiere de esto tambin.


# syscons is the default console driver, resembling an SCO console
device
sc0
at isa?

El dispositivo sc0 es el controlador por defaault, que recuerda a la consola SCO. Dado que la mayora de los
programas de pantallacompleta, accesan a su consola por medio de una librera de base de datos para terminales,
como termcap, no debe importar si utiliza este o bien vt0, el controlador de compatibilidad de VT220. Si cuando
accesa al sistema, tiene problemas para manejar programas que utilizan pantalla completa, cuando ingrese al sistema,
establezca su variable TERM a scoansi.
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device
vt0
at isa?
#options
XSERVER
# support for X server on a vt console
#options
FAT_CURSOR
# start with block cursor
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options
PCVT_SCANSET=2
# IBM keyboards are non-std

Este es el controlador de consola compatible con VT220, anteriormente compatible con VT100/102. Este sirve para
algunas laptops que tienen incompatibilidad de hardware con sc0. Tambin es recomendable establecer su variable
de entorno TERM como vt100 o vt220. Este controlador ha probado ser de gran utilidad en diferentes mquinas en
una red, donde las entradas para termcap o terminfo para el dispositivo sc0 no estn disponibles vt100 debe
estar disponible en practicamente cualquier plataforma.
# Power management support (see LINT for more options)
device
apm0
at nexus? disable flags 0x20 # Advanced Power Management

Soporte para la Administracin Avanzada de Energa. Muy til en laptops.


# PCCARD (PCMCIA) support
device
card
device
pcic0
at isa? irq 10 port 0x3e0 iomem 0xd0000
device
pcic1
at isa? irq 11 port 0x3e2 iomem 0xd4000 disable

Soporte para tarjetas PCMCIA. Debe conservar estas si usted utiliza una laptop.
# Serial (COM) ports
device
sio0
device
sio1

at isa? port IO_COM1 flags 0x10 irq 4


at isa? port IO_COM2 irq 3

78

Captulo 8. Configurando el Kernel de FreeBSD


device
device

sio2
sio3

at isa? disable port IO_COM3 irq 5


at isa? disable port IO_COM4 irq 9

Estos son los cuatro puertos seriales, conocidos en el mundo MS-DOS/Windows como COM1 a COM4.
Nota: Si usted cuenta con un mdem interno conectado al puerto COM4 y un puerto serial en COM2, deber
cambiar el IRQ del mdem al 2 (por alguna obscura razn el IRQ 2 = IRQ 9), de manera que pueda accederlo
desde FreeBSD. Si usted cuenta con una tarjeta serial de puertos mltiples, verifique la pgina de ayuda sio(4)
para ms informacin sobre los valores que debe utilizar en estas lneas. Algunas tarjetas de video
(principalmente aquellas basadas en chips S3) utilizan direcciones de E/S de la forma 0x*2e8, y dado que
muchos chips no decodifican completamente el espacio de direccin de E/S de 16-bit, se congelan con estas
tarjetas, haciendo que el uso del puerto COM4 sea prcticamente imposible.
Es necesario que cada puerto serial cuente con su propia direccin IRQ (a menos que este utilizando una
tarjeta de puertos mltiples, donde se permite el compartir IRQs), as que los IRQs que por default manejan los
puertos COM3 y COM4, no pueden ser utilizados.

# Parallel port
device
ppc0

at isa? irq 7

Esta es la interfaz para el puerto paralelo ISA.


device

ppbus

# Parallel port bus (required)

Provee soporte para el bus del puerto en paralelo.


device

lpt

# Printer

Soporte para impresoras de puerto en paralelo.


Nota: Los tres anteriores son necesarios para habilitar el soporte para impresoras que esten conectadas al
puerto en paralelo.

device

plip

# TCP/IP over parallel

Este es el controlador para dispositivos de red que utilizan el el puerto en paralelo.


device

ppi

# Parallel port interface device

El puerto de E/S para propsitos generales (geek port) + E/S IEEE1284.


#device

vpo

# Requires scbus and da

Este es para la unidad Iomega Zip. Que requiere soporte scbus y da. Se tiene conocimiento de un mejor desempeo
con puertos en modo EPP 1.9.
# PCI Ethernet NICs.
device
de
device
fxp
device
tx
device
vx

#
#
#
#

DEC/Intel DC21x4x (Tulip)


Intel EtherExpress PRO/100B (82557, 82558)
SMC 9432TX (83c170 EPIC)
3Com 3c590, 3c595 (Vortex)

79

Captulo 8. Configurando el Kernel de FreeBSD


device

wx

# Intel Gigabit Ethernet Card (Wiseman)

Varios controladores de tarjetas de red PCI. Puede comentar o eliminar todas aquellas que no esten presentes en su
sistema.
# PCI Ethernet NICs that use the common MII bus controller code.
device
miibus
# MII bus support

El soporte del bus MII, es requerido por algunas tarjetas de red Ethernet PCI 10/100, especficamente aquellas con
transistores dependientes de MII o bien aquellos con transistores que operan igual que MII. El aadir el soporte
device miibus al fichero de configuracin del kernel nos permite contar con soporte para todos los dispositivos
API genericos de MII y controladores de PHY, incluyendo los genricos de PHY para los cuales no hay un
controlador especfico.
device
device
device
device
device
device
device
device
device

dc
rl
sf
sis
ste
tl
vr
wb
xl

#
#
#
#
#
#
#
#
#

DEC/Intel 21143 and various workalikes


RealTek 8129/8139
Adaptec AIC-6915 (Starfire)
Silicon Integrated Systems SiS 900/SiS 7016
Sundance ST201 (D-Link DFE-550TX)
Texas Instruments ThunderLAN
VIA Rhine, Rhine II
Winbond W89C840F
3Com 3c90x (Boomerang, Cyclone)

Controladores que utilizan el cdigo del bus MII.


# ISA Ethernet NICs.
device
ed0
at isa? port 0x280 irq 10 iomem 0xd8000
device
ex
device
ep
# WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really
# exists only as a PCMCIA device, so there is no ISA attachment needed
# and resources will always be dynamically assigned by the pccard code.
device
wi
# Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will
# work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP
# mode (the factory default). If you set the switches on your ISA
# card for a manually chosen I/O address and IRQ, you must specify
# those parameters here.
device
an
# The probe order of these is presently determined by i386/isa/isa_compat.c.
device
ie0
at isa? port 0x300 irq 10 iomem 0xd0000
device
fe0
at isa? port 0x300
device
le0
at isa? port 0x300 irq 5 iomem 0xd0000
device
lnc0
at isa? port 0x280 irq 10 drq 0
device
cs0
at isa? port 0x300
device
sn0
at isa? port 0x300 irq 10
# requires PCCARD (PCMCIA) support to be activated
#device
xe0
at isa?

Controladores para tarjetas Ethernet ISA. Vea el fichero /usr/src/sys/i386/conf/LINT para ver que tarjetas
estn soportadas, y por cuales controladores.

80

Captulo 8. Configurando el Kernel de FreeBSD


pseudo-device

ether

# Ethernet support

El soporte ether slo es necesario si cuenta con una tarjeta Ethernet. Este incluye el soporte genrico para el cdigo
Ethernet.
pseudo-device

sl

# Kernel SLIP

El dispositivo sl es el soporte para SLIP. El cual casi ha sido suplantado por PPP, que es ms sencillo de configurar,
ms adecuado para conexiones de mdem a mdem y ms poderoso. El numero posterior a sl, especifca cuantas
sesiones simultaneas se pueden soportar por SLIP.
pseudo-device

ppp

# Kernel PPP

Este es el soporte del kernel para conexiones PPP, por medio de telfono. Existe tambin una versin de PPP como
aplicacin (userland), que utiliza el dispositivo tun y ofrece mayor flexibilidad y funciones, tal como el marcado
a peticin. El numero posterior a ppp especifca cuantas conexiones PPP se pueden mantener de manera simultanea.
pseudo-device

tun

# Packet tunnel.

Este dispositivo es utilizado por la aplicacin PPP userland. El numero posterior a tun, especifca el soporte
mximo de sesiones PPP simultaneas. Vea la seccin PPP de este libro, para mayor informacin al respecto.

pseudo-device

pty

# Pseudo-ttys (telnet etc)

Esta es una pseudo-terminal o bien un puerto de acceso simulado. Es utilizado para conexiones por medio de
telnet y sesiones rlogin, xterm, y algunas otras aplicaciones tal como emacs. Un numero despus de pty
indica el numero de ptys a crear. Si usted requiere de ms de las 16 xterm y/o logins remotos que se crean por
default, asegurese de incrementar el numero de acuerdo a sus necesidades, sin exceder el mximo de 256.
pseudo-device

md

# Memory disks

Pseudo-dispositivos para la memoria de discos.


pesudo-device

gif

pseudo-device

gif

o
4

# IPv6 and IPv4 tunneling

Esto permite el envo de IPv6 sobre IPv4, IPv4 sobre IPv6, IPv4 sobre IPv4 e IPv6 sobre IPv6. Desde la versin 4.4
de FreeBSD, el dispositivo gif es auto-clonable, y usted debiese utilizar el primer ejemplo (sin el numero despus
de gif). Versiones anteriores de FreeBSD requieren de este numero.
pseudo-device

faith

# IPv6-to-IPv4 relaying (translation)

Este pseudo-dispositivo captura los paquetes que han sido enviados y los redirecciona hacia el demonio traductor
de IPv4/IPv6.
# The bpf pseudo-device enables the Berkeley Packet Filter.
# Be aware of the administrative consequences of enabling this!
pseudo-device
bpf
# Berkeley packet filter

81

Captulo 8. Configurando el Kernel de FreeBSD


Este es el Filtro de Paquetes de Berkeley. Este pseudo-dispositivo permite a las interfaces de red colocarse en modo
promiscuo, capturando cada paquete en una transmisin de red (ej. una Ethernet). Estos paquetes pueden ser
capturados y examinados por medio del programa tcpdump(1).
Nota: La opcin bpf pseudo-device tambin es utilizada por dhclient(8) para obtener la direccin IP del
ruteador por default (gateway). Si usted utiliza DHCP, deje esta opcin habilitada.

# USB support
#device
#device
#device
#device
#device
#device
#device
#device
#device
# USB Ethernet,
#device
#device
#device

uhci
ohci
usb
ugen
uhid
ukbd
ulpt
umass
ums
requires mii
aue
cue
kue

#
#
#
#
#
#
#
#
#




UHCI PCI- USB interface


OHCI PCI- USB interface
USB Bus (required)
Generic
Human Interface Devices
Keyboard
Printer
Disks/Mass storage - Requires scbus and da
Mouse

# ADMtek USB ethernet


# CATC USB ethernet
# Kawasaki LSI USB ethernet

Soporte para varios dispositivos USB.


Para ms informacin y para ver todos los dispositivos soportados por FreeBSD, favor de consultar el fichero
/usr/src/sys/i386/conf/LINT.

8.5. Creando Nodos para los Dispositivos


Casi todo dispositivo sealado en el kernel, cuenta con su correspondiente fichero nodo, bajo el directorio /dev.
Estos nodos parecen ficheros comunes, pero de hecho son ficheros especiales que indican que dispositivos deben ser
utilizados por cada programa. El script de shell /dev/MAKEDEV, que es ejecutado cuando usted instala por primera
vez el sistema operativo, crea el nodo para casi todos los dispositivos soportados. Aun as no los crea a todos, as que
cuando recompila su kernel y agrega soporte para un nuevo dispositivo, es importante asegurarse de que existen las
entradas correspondientes en este directorio, y si no es as crearlas. He aqui un pequeo ejemplo:
Supongamos que ha aadido soporte en su kernel para un dispositivo CDROM tipo IDE. La lnea a aadir es:
device acd0

Esto significa que debe buscar alguna entrada que comience con acd0 en el directorio /dev, posiblemente seguido
de una letra, tal como c, o bien precedido de una letra como r, que significa que es el dispositivo raw . Resulta que
esos ficheros no existen en el directorio /dev, as que debe dirijirse a este directorio y teclear lo siguiente:
# sh MAKEDEV acd0

Cuando este script termine, encontrar que ahora existen los ficheros acd0c y racd0c en el directorio /dev, de tal
forma que sabr que se ha ejecutado con exito.
Para tarjetas de sonido, debe ejecutar el siguiente comando para crear las entradas correspondientes:

82

Captulo 8. Configurando el Kernel de FreeBSD


# sh MAKEDEV snd0

Nota: Si existen otras personas con acceso a su sistema, cuando cree ficheros-nodo para dispositivos tales
como tarjetas de sonido, es recomendable proteger estos dispositivos, aadiendolos al fichero /etc/fbtab. Vea
la pgina de ayuda fbtab(5) para ms informacin al respecto.

El procedimiento mencionado puede servirle para aadir cualquier otro dispositivo no-generico o bien que no exista
en el fichero /usr/src/sys/i386/conf/GENERIC, para el cual no existan las entradas apropiadas.
Nota: Todos los controladores SCSI utilizan las mismas entradas en /dev, as que no es necesario crearlas. As
mismo, las tarjetas de red y pseudo-dispositivos de tipo SLIP/PPP, no cuentan con entradas en el directorio
/dev, por lo que tampoco tiene por que preocuparse de estas.

8.6. En Caso de que Algo No Funcione


Existen cinco tipos de problemas que se pueden presentar al momento de estar personalizando/compilando un kernel.
Estas son:
Que el comando config de como resultado un error:
Si el comando config da como resultado un error al momento de de su ejecucin, puede ser que simplemente
haya cometido un error de tipografa en su documento personal de configuracin (que habiamos llamado
MYKERNEL). Afortunadamente el comando config le dar informacin sobre el error, como es el numero
de lnea que contiene el error, de tal forma que puede dirijirse directamente a dicha lnea con vi y corregir el
error. Por ejemplo si visualiza:
config: line 17: syntax error

Puede ir directamente al problema en vi, al teclear 17G en el modo de comando. Asegurese de que la palabra
clave ha sido escrita correctamente, al compararla con la que corresponde al fichero GENERIC o alguna otra
referencia.

Cuando el comando make falla:


Cuando el comando make da como resultado un error, generalmente es indicio de que el fichero de
configuracin tiene un error, pero que este error no es tan grave como para que config lo detecte. Revise
nuevamente su fichero y si aun as no puede detectar el error, enve un correo a FreeBSD general questions
mailing list <freebsd-questions@FreeBSD.org> adjuntando el fichero personalizado de su kernel, y
debiese ser diagnosticado rpidamente.
Al instalar el nuevo kernel se presenta una falla
Si el kernel termino de compilarse correctamente, pero presenta una falla al instalarlo (esto es cuando el
comando make install o make installkernel da como resultado un Error), lo primero que es necesario
revisar, es si su sistema esta ejecutandose en securelevel 1 o mayor (vea init(8)). Aqui lo que sucede es que la

83

Captulo 8. Configurando el Kernel de FreeBSD


instalacin del kernel intenta remover la marca (flag) de inmutable del kernel actual y colocar dicha marca al
nuevo kernel. Y en virtud de que securelevel 1 o mayor evita que dicha marca sea removida de cualquier fichero
del sistema, la instalacin del nuevo kernel debe ser realizada en securelevel 0 o menor.
El nuevo kernel no arranca:
Si su nuevo kernel no se ejecuta correctamente al arrancar el sistema, o bien falla en reconocer sus dispositivos,
no entre en pnico! Afortunadamente BSD cuenta con un excelente mecanismo para recuperarse de un kernel
recien instalado que presenta este tipo de errores. Simplemente seleccione el kernel que desea arrancar, al
momento que se esta incializado en su sistema FreeBSD, el cargador de arranque (boot loader). Puede accesar a
este cuando su sistema se encuentra en cuenta regresiva desde 10. Pulse cualquier tecla excepto la tecla enter,
posteriormente teclee unload y posteriormente teclee boot kernel.old , o bien el nombre de fichero de
cualquier otro kernel que usted sabe que arranacar correctamente. Cuand personalice un kernel, siempre es
buena idea contar con un kernel que sabemos que su funcionamiento es correcto, a la mano.
Nota: Recuerde que si tiene problemas para personalizar su kernel, es recomendable asegurarse de
contar con un kernel de tipo GENERIC, o algn otro que tenga la seguridad de su funcionamiento y que
tenga un nombre que no ser borrado en la siguiente compilacin de kernel. No puede confiar en el
kernel.old, ya que en cada instalacin de un nuevo kernel, este se sustituye con el ltimo kernel
instalado, que pudiese se un kernel no funcional. Tambin recuerde que, en cuanto le sea posible, debe
mover el kernel funcional a la ubicacin correcta del kernel, o bien, comandos como ps(1) no trabajarn
correctamente. El comando para desbloquear el fichero del kernel que instala el comando make (para
efecto de usar permanentemente otro kernel) es:
# chflags noschg /kernel

Si no puede ejecutar esto, probablemente su sistema se este ejecutando en un valor mayor a cero de
securelevel(8). Edite la lnea kern_securelevel del fichero /etc/rc.conf y establezca este valor como
-1, y reinicie su sistema. Posteriormente puede regresar este al valor original, cuando este contento con su
nuevo kernel.
Y si usted desea bloquear su nuevo kernel en su ubicacin, o cualquier otro fichero, de tal forma que no
pueda ser movido o modificado, puede hacerlo con el comando:
# chflags schg /kernel

El kernel funciona, pero ps ha dejado de funcionar!:


Si usted ha instalado un kernel que pertenece a una versin diferente a la del sistema en cuestin, por ejemplo,
un kernel 4.X sobre un sistema 3.X, gran variedad de comandos de sistema, como son: ps(1) y vmstat(8) ya no
van a funcionar. Deber recompilar la librera libkvm, as como sus utilidades. Es por esta razn, que no es una
buena idea utilizar un kernel de una versin diferente al resto del sistema operativo.

Notas
1. El algoritmo de auto-configuracin, establece para maxusers la cantidad igual a la cantidad de memoria en el
sistema, con mnimo de 32 y un mximo de 384.

84

Captulo 9. Seguridad
Seguridad

85

Captulo 10. Imprimiendo


Aportado por Sean Kelly. Reestructurado y actualizado por Jim Mock.

10.1. Sinpsis
FreeBSD puede ser utilizado para imprimir en una gran variedad de impresoras, desde las antiguas impresoras de
matriz de punto, hasta las ms modernas impresoras laser, y todo lo que existe en medio de estas, permitiendole crear
impresiones de alta calidad, desde cualquier aplicacin que este utilizando.
FreeBSD tambin puede ser configurado para actuar como servidor de impresin en una red; en esta modalidad,
FreeBSD puede recibir peticiones de impresin de una gran cantidad de computadoras, incluyendo computadoras
corriendo FreeBSD, Windows y MacOS. FreeBSD verifica que un trabajo sea impreso a la vez, y puede mantener
estadsticas sobre que usuario y maquina son los que ms imprimen, insertar una pgina de aviso (titulares o
pginas de encabezado), antes de cada trabajo para verificar de quien es cada impresin, y ms.
Al concluir el presente captulo, usted sabr:

Como configurar la cola de impresin en FreeBSD.

Como instalar filtros de impresin, para manejar diferentes trabajos especiales, incluyendo la conversin de
documentos a formatos aptos para la impresora.

Como habilitar encabezados, o titularess en sus impresiones.

Como imprimir en impresoras conectadas a otras computadoras

Como imprimir en impresoras conectadas directamente a la red.

Como controlar restricciones de impresin, incluyendo limitantes en el tamao de los trabajos de impresin, y
restringiendo la impresin a ciertos usuarios.

Como mantener estadsticas de impresin, y cuentas para el uso de la impresora.

Como solucionar problemas de impresin comunes.

Antes de leer este captulo, usted debera:

Saber como compilar e instalar un nuevo kernel (Captulo 8).

10.2. Introduccin
Para efecto de poder utilizar impresoras con FreeBSD, es necesario que configure estas, para trabajar con el sistema
de cola de impresin de Berkeley, tambin conocido como Sistema de Cola LPD. Este es el sistema de control de
impresin estndar en FreeBSD. Este captulo introduce en el sistema LPD, llamado comunmente slo LPD, e
introduce en la configuracin del mismo.
Si usted esta familiarizado con el sistema de cola de impresin LPD, o bien, con algun otro sistema de impresin,
puede saltar a la seccin Configurando el sistema de Cola de Impresin.

86

Captulo 10. Imprimiendo


La aplicacin LPD es responsable de controlar todo lo que se refiere a impresin. Es responsable de un gran numero
de cosas, tales como:

Controla el acceso a las impresoras conectadas directamente al ordenador y las impresoras conectadas a otras
mquinas de la red.

Habilita a usuarios, para efecto de que puedan enviar ficheros a imprimir; estos envios se conocen como trabajos
(jobs).

Previene el hecho de que varios usuarios accesen a la impresora al mismo tiempo, al mantener un orden en la cola
de impresin (queue) para cada impresora.

Puede imprimir encabezados (header) (tambin conocidos como titularess o pginas de aviso), de tal forma que
los usuarios identifiquen fcilmente sus impresiones, de una pila de impresiones.

Se ocupa de los parmetros para impresoras conectadas a puertos seriales.

Puede enviar trabajos de impresin por medio de una red, a una cola LPD de una maquina remota.

Puede ejecutar filtros especiales para dar formato a trabajos que requieren de un manejo de lenguaje de impresin
diferente o impresoras de diferentes capacidades.

Puede mantener un registro por uso de la impresora.

Por medio de un fichero de configuracin (/etc/printcap), y por medio de programas especiales de filtraje, usted
puede habilitar al sistema LPD para hacer todo o una parte de lo mencionado anteriormente, para una gran variedad
de impresoras.

10.2.1. Por qu utilizar una Cola de Impresin?


Si usted es la nica persona que hace uso de su sistema, probablemente se pregunte por que preocuparse por utilizar
un sistema de cola de impresin, cuando no requiere acceso a controles, encabezados o cuentas para imprimir.
Mientras que es posible habilitar un acceso a su impresora de forma directa, usted debe utilizar el sistema de cola de
impresin, por las siguientes razones:

El sistema LPD opera los trabajos de impresin es segundo plano; esto es, que usted no tiene que esperar a que los
datos sean pasados a la impresora para continuar trabajando.

Convenientemente LPD puede ejecutar un trabajo para que sea filtrado, para aadir caracteres de da/hora o bien
convertir un fichero con formato especial (tal como ficheros TeX DVI) a un formato que la impresora entiende. De
tal manera que usted no tenga que hacer estos pasos manualmente.

Muchos programas, libres y comerciales, proveen de un sistema de impresin que esta basado en el sistema de
cola de impresin. Al configurar su sistema de cola de impresin, usted podr soportar otro software que instale en
el futuro o el que tiene actualmente.

10.3. Configuracin Bsica


Para efecto de utilizar impresoras con el sistema de cola LPD, es necesario que se instale fsicamente la impresora y
el software de LPD. Este documento describe estos dos niveles de configuracin:

87

Captulo 10. Imprimiendo

Vea la seccin Configuracin Simple de una Impresora, para aprender a conectar una impresora, indicarle a LPD
como comunicarse con ella, e imprimir ficheros de texto plano en dicha impresora.

Vea la seccin Configuracin Avanzada de una Impresora, para ver como imprimir gran variedad de formatos
especiales, imprimir encabezados, para imprimir por medio de una red, controlar acceso a las impresoras y crear
cuentas de impresin.

10.3.1. Configuracin Simple de una Impresora


La presente seccin le mostrar como instalar fsicamente la impresora, as como el software de LPD para usar dicha
impresora. Le mostrar lo bsico de:

La seccin Instalacin Fsica, le da algunos consejos sobre como instalar su impresora a los puertos de su
computadora.

La seccin Instalacin de Software, le muestra como instalar y configurar el fichero de configuracin de LPD
(/etc/printcap).

Si usted esta instalando una impresora que utiliza protocolos de red para imprimir en lugar de una conexin directa a
su puerto serial o paralelo, vea la seccin Impresoras con Interfaces de Red para Secuencia de Datos.
Aun cuando esta seccin se llama Configuracin Simple de una Impresora, puede resultar un tanto complicada.
Conseguir que su impresora trabaje con su ordenador y con la cola de impresin LPD es la parte ms compleja. Las
opciones avanzadas, tal como imprimir encabezados y crear cuentas, son sencillas una vez que su impresora est
trabajando.

10.3.1.1. Instalacin Fsica


Esta seccin le informa sobre varias fomras en que puede usted conectar la impresora a su PC. Se describen los tipos
de puertos y cables, as como la configuracin que debe tener en su kernel, para permitir que FreeBSD se pueda
comunicar con su impresora.
Si ya ha conectado su impresora y ha impreso exitosamente trabajando en otro sistema operativo, probablemente
desee brincar a la seccin Configuracin del Software.
10.3.1.1.1. Puertos y Cables
Practicamente cualquier impresora que adquiera hoy en da para PC, cuenta con soporte para una o ambas interfaces
que se presentan a continuacin:

La interfaz serial, utiliza el puerto serial de su computadora para enviar datos a la impresora. La interfaz serial es
comn en la industria de la computacin y los cables existen disponibles facilmente e incluso sencillos de hacer.
En ocasiones las interfaces seriales requieren de cables especiales y posiblemente cierta configuracin compleja de
opciones de comunicacin.

La interfaz en paralelo utiliza el puerto paralelo de su computadora para enviar datos a la impresora. Las
interfaces en paralelo son comunes en el mercado de las PCs. Los cables son fciles de conseguir, pero un poco
ms complicados de hacer a mano. Normalmente no existen opciones de comunicacin, haciendo su configuracin
mucho ms sencilla.

88

Captulo 10. Imprimiendo


En ocasiones las interfaces en paralelo son conocidas como interfaces Centronics, en virtud del tipo de conector
en la impresora.

En trminos generales los interfaces seriales son ms lentos que las interfaces en paralelo. Por otro lado los interfaces
en paralelo slo ofrecen comunicacin de una va (de la computadora a la impresora), mientras que los seriales
ofrecen de dos vas. Gran cantidad de recientes impresoras y puertos paralelos, pueden comunicarse en ambas
direcciones bajo FreeBSD, cuando se utiliza un cable compatible con IEEE1284.
Normalmente, el nico escenario donde requiere de una comunicacin de ambas vas con la impresora, es cuando la
impresora maneja PostScript. Las impresoras que manejan PostScript detallan gran cantidad de informacin. De
hecho, los trabajos PostScript, son programas enviados a la impresora; los cuales no requieren de papel y pueden
enviar la salida directamente a la computadora. PostScript utiliza una comunicacin de dos vas, para informar al
ordenador de los problemas que se puedan presentar, tal como errores en los programas PostScript o papeles
atascados. Sus usuarios pueden apreciar este tipo de informacin. Ms all de esto, la mejor forma de contabilizar
con impresoras PostScript, es utilizando dos vas de comunicacin: usted solicita a la impresora el conteo de
impresiones (esto es, todas las impresiones hechas en su vida), posteriormente envia el trabajo del usuario y repite la
solicitud de conteo. Resta los dos valores obtenidos y sabra cuanto debe cobrar al usuario por uso de papel.

10.3.1.1.2. Puertos Paralelos


Para conectar una impresora usando el puerto en paralelo, conecte el cable Centronics entre la impresora y la
computadora. Las instrucciones que vienen con su impresora, con su computadora o ambas, deben ser una buena
gua para llevar esto a cabo.
Recuerde cual es el puerto en paralelo que utiliz en su computadora. Para FreeBSD, el primer puerto paralelo es
/dev/lpt0, el segundo puerto es /dev/lpt1 y as sucesivamente.

10.3.1.1.3. Puertos Seriales


Para conectar una impresora, usando el puerto serial, conecte el cable apropiado entre la impresora y el ordenador.
Las instrucciones que vienen con su impresora, computadora o ambas, deben ser suficientes para llevar esto a cabo.
Si usted no esta seguro de cual es el cable serial apropiado, puede intentar alguna de las siguientes alternativas:

Un cable de mdem conecta cada pin del conector de un extremo, con el conector del otro extremo, de manera
directa. Este tipo de cable tambin se le conoce como cable DTE-a-DCE.

Un cablde de mdem-nulo conecta de fomra directa algunos pins, algunos otros son compartidos (envia datos para
recibir datos, por ejemplo), y algunos otros internamente son deshabilitados en los conectores. Este tipo de cable
tambin se le conoce como cable DTE-a-DTE.

Un cable de impresora serial, slo es requerido por algunas impresoras poco comunes, es similar al cable de
mdem-nulo, pero este envia seales a su contraparte, en lugar de que internamente se deshabilite.

Tambin es necesario que configure los parmetros de comunicacin para la impresora, nomralmente esto lo realiza
desde los controles de la misma o interruptores DIP en la impresora. Selecciones el bps (bits por segundo y en
ocasiones llamado velocidad de baudio) ms alto, que tanto su ordenador como impresora soporten. Seleccione 7 u 8
bits de datos; la paridad establezcala en: ninguna, igual o aleatoria y 1 o 2 en bits de paro. Tambin seleccione un
protocolo para el control de flujo, que puede ser: ninguno o XON/XOFF (tambin conocido como in-band o

89

Captulo 10. Imprimiendo


software). Recuerde las opciones que haya seleccionado en esta parte, para la configuracin del software, que
veremos en la siguiente seccin.

10.3.1.2. Configuracin del Software


La presente seccin describe la configuracin necesaria para poder imprimir usando el sistema de cola LPD, bajo
FreeBSD.
Aqui presentamos un resumen de los pasos necesarios:
1.

Configure su kernel, si es necesario, para habilitar el uso del puerto al que esta conectado su impresora. En la
seccin Configuracin del Kernel encontrar toda la informacin necesaria, para llevar esto a cabo.

2.

Establecer en modo de comunicacin el puerto en paralelo, si es que esta usando dicho puerto. La seccin
Estableciendo el Modo de Comunicacin en el Puerto en Paralelo le da detalles al respecto.

3.

Compruebe si el sistema operativo puede enviar datos a la impresora. La seccin Verificando la Comunicacin
con la Impresora le puede dar detalles sobre como hacer esto.

4.

Configurar LPD para su uso con la impresora, modificando el fichero /etc/printcap. Posteriormente en este
captulo, veremos como se lleva a cabo esto.

10.3.1.2.1. Configuracin del Kernel


El kernel del sistema operativo es compilado para trabajar con ciertos dispositivos. El puerto serial o paralelo de su
computadora es parte de los dispositivos que debe incluirse en la compilacin del kernel. Por lo tanto, puede que sea
necesario recompilar el kernel incluyendo el soporte para el o los puertos serial y/o paralelo, si es que el kernel no
cuente ya con dicho soporte.
Para averiguar si el kernel que tiene instalado actualmente, cuenta con soporte para el puerto serial, teclee lo
siguiente:
# dmesg | grep sioN

Donde N es el numero de puerto serial, comenzando desde cero. Si observa una salida similar a la siguiente:
sio2 at 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A

entonces su kernel ya cuenta con soporte para el puerto.


Para averiguar si su kernel cuenta con soporte para el puerto en paralelo, teclee:
# dmesg | grep lptN

Donde N es el numero de puerto serial, comenzando desde cero. Si observa una salida similar a la siguiente:
lpt0 at 0x378-0x37f on isa

entonces su kernel cuenta con soporte para el puerto.


Puede que sea necesario recompilar su kernel, para efecto de que su kernel cuente con el soporte para el puerto serial
o paralelo que este utilizando su impresora.

90

Captulo 10. Imprimiendo


Para aadir soporte para el puerto serial, vea la seccin en Configuracin del Kernel. Para aadir soporte para el
puerto paralelo, vea esa seccin y la siguiente seccin.

10.3.1.3. Aadiendo Dispositivos de Puertos en /dev


Aun cuando el kernel cuente con el soporte de comunicaciones para puertos seriales o en paralelo, aun deber de
contar con las interfaces necesarias en su sistema, por medio de las cuales el sistema puede enviar y recibir los datos.
En el directorio /dev es donde encontrar dichas interfaces en su sistema.
Para aadir una entrada, para sus puertos, en el directorio /dev deber:
1.

Cambiar de usuario a root con el comando su(1). Ingresar la contrasea de root cuando le sea solicitada.

2.

Cambiar su posicin al directorio /dev de la siguiente forma:


# cd /dev

3.

Teclear:
# ./MAKEDEV PUERTO

Donde PUERTO es la entrada del dispositivo que desea crear. Puede utilizar lpt0 para el primer puerto en
paralelo, lpt1 para el segundo puerto, y as sucesivamente, para el primer puerto serial puede utilizar ttyd0, y
para el segundo ttyd1 y as sucesivamente.
4.

Teclee:
# ls -l PUERTO

para asegurarase de que la entrada del dispositivo correspondiente se ha creado.

10.3.1.3.1. Configurando el modo de Comunicacin para el Puerto Paralelo


Cuando utiliza el puerto paralelo, puede seleccionar si FreeBSD va a utilizar un modo de comunicacin por medio de
interruptores o a peticin, con la impresora.

El mtodo por medio de interruptores es el mtodo que utiliza el kernel GENERICO de FreeBSD. Con este
mtodo el sistema operativo utiliza un IRQ para determinar si la impresora esta lista para recibir datos.

El mtodo a peticin le indica al sistema operativo que constantemente le pregunte a la impresora si esta lista para
recibir datos. Una vez que ha obtenido respuesta, el kernel comienza a transferir los datos.

Normalmente el mtodo por medio de interruptores es ms rpido, pero nos ocupa un preciado IRQ. Se sabe que
algunas impresoras nuevas de HP no funcionan muy bien con este mtodo aparentemente debido (sin que aun se
entienda el por que) a un problema de tiempos. Estas impresoras necesitan el mtodo a peticin. Es conveniente que
utilice el mtodo que se ajuste a sus necesidades. Algunas impresoras funcionan en ambos mtodos, pero son
dolorosamente lentas usando el mtodo por medio de interruptores.
Para establecer el mtodo de comunicacin, puede hacerlo de dos formas: configurando su kernel o bien, utilizando
el programa lptcontrol(8).
Para establecerlo configurando su kernel, deber:

91

Captulo 10. Imprimiendo


1.

Editar su fichero de configuracin del kernel. Busque una lnea que contenga lpt0, si esta no existe aadala. Si
esta configurando su segundo puerto en paralelo, use lpt1. Para un tercer puerto paralelo utilice lpt2 y as
sucesivamente.

Si desea utilizar el modo por medio de interruptor, aada el especificador de irq:


device lpt0 at isa? port? tty irq N vector lptintr

Donde N es el numero de IRQ del puerto paralelo de su computadora.

Si desea utilizar el modo a peticin, no necesita agregar el especificador de irq:


device lpt0 at isa? port? tty vector lptintr

2.

Guarde el fichero. Posteriormente termine el proceso de configuracin, recompilacin e instalacin del kernel,
despus reinicie el sistema. Vea Configuracin del Kernel para ms informacin al respecto.

Para establecer el modo de comunicacin usando lptcontrol(8):


1.

Teclee:
# lptcontrol -i -d /dev/lptN

para indicar el modo por medio de interruptor para lptN .


2.

Teclee:
# lptcontrol -p -d /dev/lptN

para establecer el modo a peticin para lptN .


Estos comandos los podra incluir en su fichero /etc/rc.local para que el sistema reconozca estos modos cada
vez que inicia el sistema. Vea lptcontrol(8) para ms informacin al respecto.

10.3.1.3.2. Verificando la Comunicacin de la Impresora


Antes de proceder a configurar el sistema de cola de impresin, es conveniente verificar que nuestro sistema
operativo pueda enviar datos exitosamente a nuestra impresora. Es mucho ms sencillo detectar errores cuando se
configura por separado el mtodo de comunicacin y el sistema de cola de impresin.
Para probar nuestra impresora, enviaremos un poco de texto. Para impresoras que inmediatamente pueden imprimir
caracteres, el programa lptest(1) es perfecto: este genera todos los 96 caracteres ASCII imprimibles en 96 lneas.
Para impresoras PostScript (o de otro lenguaje de impresin), vamos a necesitar una prueba ms sofisticada. Un
pequeo programa PostScript, como el siguiente, ser suficiente:
%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Is this thing working?) show
showpage

El cdigo PostScript descrito puede guardarse en un fichero y usarse en el ejemplo que aparece en la siguiente
seccin.

92

Captulo 10. Imprimiendo


Nota: Cuando este documento se refiere a lenguaje de impresin, se asume lenguaje como PostScript y no el
PCL de Hewlett Packard. Aun cuando PCL tiene gran funcionalidad, pueden acabar mezclandose caracteres de
escape con el texto plano, y ese es el tipo de lenguaje de impresin, para el cual necesitaremos realizar ajustes
especiales.

10.3.1.3.2.1. Verificando Impresoras en Paralelo


Esta seccin le indica como comprobar la comunicacin de una impresora en paralelo, bajo FreeBSD.
Para probar una impresora en paralelo:
1.

Cambiar a root con el comando su(1)

2.

Enviar datos a la impresora.

Si la impresora puede imprimir texto plano, usar el comando lptest(1). Teclee:


# lptest

/dev/lptN

Donde N es el numero del puerto en paralelo, comenzando desde cero.

Si la impresora utiliza PostScript u otro lenguaje de impresin, entonces envie un pequeo programa a la
impresora. Teclee:
# cat

/dev/lptN

Posteriormente, lnea por lnea teclee el programa, cuidadosamente en virtud de que no puede editar una lnea
ya que presionado la tecla RETURN o ENTER. Una vez que ha terminado de introducir el programa, presiona
las teclas CONTROL+D, o cualquier tecla que funcione para efecto de especificar un fin de fichero.
Otra manera de hacer esto, es guardar el programa en un fichero y teclear:
# cat fcihero

/dev/lptN

Donde fichero es el nombre del fichero que le dio al programa, que desea enviar a imprimir.

En este punto debe ver alguna impresin. No se preocupe si el texto no aparece bien; es algo que arreglaremos ms
adelante.

10.3.1.3.2.2. Verificando una Impresora Serial


Esta seccin explica como verificar la comunicacin, bajo FreeBSD, de una impresora conectada al puerto serial.
Para probar una impresora conectada el puerto serial:
1.

Cambiar a root usando su(1).

2.

Edite el fichero /etc/remote. Aadiendo la siguiente entrada:


printer:dv=/dev/puerto:br#bps:pa=paridad

93

Captulo 10. Imprimiendo


Donde puerto es el dispositivo usado por el puerto serial (ttyd0, ttyd1, etc.), bps se refiere a la velocidad,
en bits-por-segundo, a la que se comunica la impresora, y paridad es la paridad requerida por la impresora (ya
sea even, odd, none o zero).
Nota: N de T: Las opciones de paridad se han dejado en ingls, en virtud de que as debern especificarse
en la configuracin.

He aqui un ejemplo para una impresora conectada por medio de un puerto serial, el tercer puerto a 19200 bps,
sin paridad:
printer:dv=/dev/ttyd2:br#19200:pa=none

3.

Conectarse a la impresora por medio de tip(1). Teclee:


# tip printer

Si este paso no funciona, edite nuevamente el fichero /etc/remote e intente utilizando /dev/cuaaN en lugar
de utilizar /dev/ttydN .
4.

Envio de datos a la impresora.

Si la impresora puede imprimir texto plano, entonces utilice lptest(1). Teclee:


% $lptest

Si es una impresora PostScript o que utilice otro lenguaje, entonces envie un pequeo programa a la
impresora. Teclee el programa, lnea por lnea, muy cuidadosamente ya que algunas teclas, como la de
retroceso son significativas para la impresora. Puede ser que tambin necesite un caracter especial para marcar
el fin-de-fichero y que la impresora sepa que ha recibido el programa completo. Para impresoras PostScript,
utilice las teclas CONTROL+D.
Otra variante es, guardar el programa en un fichero y teclear:
%

fichero

Donde fichero es el nombre del fichero que contiene el programa. Una vez que tip(1) envia el programa,
presione la tecla correspondiente a fin de archivo.

Usted debe ver algo de impresin. No se preocupe si el texto no se ve del todo bien; posteriormente arreglaremos
esto.

10.3.1.4. Habilitando la Cola de Impresin: El fichero /etc/printcap


En este punto, su impresora debe estar conectada, su kernel configurado con el soporte de comunicacin, y debe
haber podido enviar datos a su impresora. Ahora estamos listos para configurar LPD para controlar el accesos a
nuestra impresora.

94

Captulo 10. Imprimiendo


Para efecto de configurar LPD, es necesario editar el fichero /etc/printcap. El sistema de cola de LPD lee este
fichero cada vez que se utiliza, de tal forma que los cambios que se realicen en este fichero, surten efecto
inmediatamente.
El formato que mantiene el fichero printcap(5) es muy concreto. Utilice su editor de texto favorito para hacer
cambios en /etc/printcap. El formato es idntico al que guardan los ficheros que describen capacidades, tal como
/usr/share/misc/termcap y /etc/remote. Para ver mayor informacin con respecto al formato, vea la pgina
de ayuda cgetent(3).
De un modo simple, la configuracin de una cola consiste en los siguientes pasos:
1.

Seleccione un nombre (y algunos alias convenientes) para la impresora, y especifquelos en el fichero


/etc/printcap ; vea la seccin Nombrando la Impresora para ms informacin al respecto.

2.

Desactive el encabezado de pginas (el cual esta activado por default), al insertar la caracterstica sh; vea la
seccin Eliminando las Pginas de Encabezados para ms informacin al respecto.

3.

Cree un directorio para la cola, y especifique su ubicacin con la caracterstica sd; vea la seccin Creando el
Directorio de la Cola para mayor informacin.

4.

Ubique el dispositivo /dev a usar por la impresora e indiquelo en el fichero /etc/printcap con la
caracterstica lp; vea la seccin Identificando el Dispositivo de Impresin para mayor informacin. As mismo,
si la impresora esta conectada a un dispositivo serial, utilice las caractersticas fs, fc, xs y xc para establecer
los parmetros de comunicacin; esto se detalla en la seccin Configurando los Parmetros de Comunicacin de
la Cola de Impresin.

5.

Instalar un filtro de entrada de texto plano; vea la seccin Instalando un Filtro de Texto para ms detalles.

6.

Probar la configuracin, al imprimir algo con el comando lpr(1). Para ms detalles vea las secciones Probando la
Configuracin y Resolucin de Problemas.
Nota: Las impresoras basadas en un lenjuaje, tal como PostScript, no pueden imprimir texto plano directamente.
Los pasos de configuracin mencionados anteriormente, as como las siguientes secciones, asumen que si
usted cuenta con una impresora de este tipo, slo va a imprimir ficheros que la impresora puede manejar.

Normalmente los usuarios esperan poder imprimir texto plano a cualquier impresora conectada al sistema. Los
programas que usan como interfaz de impresin a LPD, asumen lo mismo. Si usted cuenta con una impresora basada
en lenguaje y desea poder imprimir en el lenguaje de la impresora as como texto plano, es importante considerar
que debe aadir un paso adicional a los mencionados anteriormente: instalar un programa de conversin
detexto-plano-a-PostScript (u otro lenguaje). La seccin Acomodando Trabajos de Texto Plano en Impresoras
PostScript le indica como debe hacerse esto.
10.3.1.4.1. Nombrando la Impresora
El primer paso (sencillo) es escojer un nombre para su impresora. En realidad no importa mucho si este nombre es
funcional o un tanto abstracto, en virtud de que usted podr asignar alias para la impresora.
Cuando menos una de las impresoras sealadas en el fichero /etc/printcap debe contar con el alias lp. Este es el
nombre de la impresora por default. Si los usuarios del sistema no cuentan con la variable de entorno PRINTER o
bien no especifican en la lnea de comando, al ejecutar cualquier comando de LPD, el nombre de la impresora a
utilizar, entonces lp ser la impresora por default a utilizar.

95

Captulo 10. Imprimiendo


Tambin, como prctica comn, se suele asignar el ltimo alias a la descripcin completa de la impresora,
incluyendo marca y modelo.
Una vez que ha seleccionado un nombre y algunos aliases, ingreselos en el fichero /etc/printcap. El nombre de
la impresora deber colocarse en la columna izquierda mxima. Separe cada alias con una barra vertical e incluya
dos puntos despus del ltimo alias.
En el siguiente ejemplo, comenzaremos con el esqueleto del fichero /etc/printcap, que define dos impresoras
(una de matriz Diablo 630 y una impresora laser PostScript Panasonic KX-P4455):
#
# Fichero /etc/printcap para el host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:

En este caso, la primer impresora se llama rattan y tiene como aliases line, diablo, lp, y Diablo 630 Line
Printer. Dado que tiene el alias lp, tambi se considera la impresora por default. La segunda impresora se llama
bamboo, y cuenta con los aliases ps, PS, S, panasonic, y Panasonic KX-P4455 PostScript v51.4.

10.3.1.4.2. Eliminando las Pginas de Encabezados


El sistema de cola de impresin LPD, por default, imprimir una pgina de encabezado para cada trabajo. Esta
pgina contiene el nombre del usuario que solicit la impresin, el host del cual se envio el trabajo y el nombre del
trabajo, todo en letras grandes. Desafortunadamente, todo esta impresin extra, interfiere con el trabajo de
depuracin de la configuracin bsica de la impresora, por lo que vamos a deshabilitar esta opcin.
Para eliminar las pginas de encabezado, aada shen la entrada de la impresora del fichero /etc/printcap. He
aqui un ejemplo del fichero /etc/printcap con sh incluida en l:
#
# FIchero /etc/printcap para el host rose - sin paginas de encabezado
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:

Note como hemos utilizado el formato correcto: donde la primer lnea comienza en la primer columna de la
izquierda y las lneas subsecuentes estan cuentan con sangra de un solo tabulador (TAB). Cada lnea termina con
una diagonal invertida, excepto la ltima.

10.3.1.4.3. Creando el Directorio de la Cola


El siguiente paso en la configuracin de la cola, es crear el directorio de cola de impresin, un directorio en el cual
residen los trabajos de impresin hasta que son llevados a cabo, y donde otros ficheros de soporte se localizan.
Dada la naturaleza variante de los directorios de cola, es costumbre que estos se localicen en /var/spool. No es
necesario respaldar el contenido de estos directorios, ya que rehacerlos es tan simple como ejecutar mkdir(1).

96

Captulo 10. Imprimiendo


Tambin es una buena costumbre crear el directorio con el mismo nombre que tenga la impresora, como se muestra a
continuacin:
# mkdir /var/spool/nombre-impresora

Aunque si cuenta con bastantes impresoras en su red, puede que desee crear todos los directorios de cola, bajo un
slo directorio reservado para todas aquellas que imprimen usando LPD. En nuestro ejemplo haremos esto con
nuestras dos impresoras de ejemplo rattan y bamboo:
# mkdir /var/spool/lpd
# mkdir /var/spool/lpd/rattan
# mkdir /var/spool/lpd/bamboo

Nota: Si a usted le preocupa la privacidad de los trabajos que imprimen los usuarios, puede que desee proteger
el directorio de cola, de tal forma que no sea de acceso pblico. Los directorios de cola deben pertenecer al
usuario daemon y grupo daemon, y debe contar con permisos de lectura, escritura y navegacin por estos y
nadie ms. Haremos esto para nuestros ejemplos:
#
#
#
#

chown
chown
chmod
chmod

daemon:daemon /var/spool/lpd/rattan
daemon:daemon /var/spool/lpd/bamboo
770 /var/spool/lpd/rattan
770 /var/spool/lpd/bamboo

Finalmente, debe indicar a LPD acerca de estos directorios, en el fichero /etc/printcap. Esta indicacin se hace
por medio de la caracterstica sd :
#
# Fichero /etc/printcap para el host rose - incluyendo directorios de cola
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:

Notese que el nombre de la impresora inicia en la primer columna mientras que el resto debe contar con sangra de
un tabulador y todas las lneas, excepto la ltima, terminar con una diagonal invertida.
En el caso de que usted no especifique directorio alguno con sd, el sistema de cola usara como default
/var/spool/lpd .

10.3.1.4.4. Identificando el Dispositivo de Impresin


En la seccin Aadiendo Dispositivos de Puertos en /dev, vimos que dispositivo bajo el directorio /dev iba a
utilizar FreeBSD para comunicarse con la impresora. Ahora le indicaremos esto a LPD. Cuando el sistema de cola
tiene un trabajo por imprimir, abrir el dispositivo especificado en nombre del programa filtro (reponsable de pasar
los datos a la impresora).
Para efecto de indicar esto, en la entrada de la impresora en el fichero /etc/printcap, usaremos la caracterstica
lp.

97

Captulo 10. Imprimiendo


En el ejemplo que hemos visto, asumiremos que rattan esta conectada al primer puerto paralelo, y bamboo en el
sexto puerto serial; he aqui lo que tendriamos que aadir a /etc/printcap:
#
# Fichero /etc/printcap para el host rose - identificando los dispositivos a usar
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:

Si usted no indica la caracterstica lp en el fichero /etc/printcap, LPD usar el dispositivo /dev/lp por default.
El dispositivo /dev/lp actualmente no existe en FreeBSD.
Si la impresora que esta instalando esta conectada a un puerto en paralelo, puede saltar la siguiente parte y dirijirse a
la seccin Instalando un Filtro de Texto. De otra manera, asegurese de seguir las instrucciones de la siguiente seccin.

10.3.1.4.5. Configurando los Parmetros de Comunicacin del la Cola de Impresin


Para impresoras conectadas a un puerto serial, LPD puede especificar la velocidad de bps, la paridad, y otros
parmetros de comunicacin en lugar del programa filtro que manda los datos a la impresora. Esto es una ventaja
dado lo siguiente:

Le permite probar diferentes parmetros de comunicacin, con el simple hecho de modificar el fichero
/etc/printcap; con lo cual no es necesario recompilar el programa filtro.

Habilita el sistema de cola de impresin para hacer uso del mismo programa filtro, para varias impresoras que
pueden contar con diferentes configuraciones de comunicacin.

Para efecto de controlar los parmetros de comunicacin por medio de un puerto serial, con la caracterstica lp, en el
fichero /etc/printcap, utilizarmos lo siguiente:
br#bps-velocidad

Establece la velocidad de comunicacin del dispositivo, donde bps-velocidad puede ser 50, 75, 110, 134,
150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, o 38400 bits-por-segundo.
fc#limpiar-bits

Limpia la marca de bits, donde limpiar-bits afecta en la estructura de sgttyb una vez que se ha
entablado la comunicacin con el dispositivo.
fs#establece-bits

Establece la marca de bits establece-bits en la estructura de sgttyb.


xc#limpia-bits

Limpieza del modo bits, de forma local limpia-bits una vez que se ha abierto la comunicacin con el
dispositivo.

98

Captulo 10. Imprimiendo


xs#establece-bits

Establece el modo bits, de forma local establece-bits.


Para mayor informacin con respecto al uso de las caractrstica de bits: fc, fs, xc, y xs, vea el fichero
/usr/include/sys/ioctl_compat.h.

Cuando LPD abre el canal de comunicacin con el dispositivo especificado por lp, lee la marca de bits en la
estructura sgttyb; limpia cualquier bit en la caracterstica fc y establece bits en la caracterstica fs, para
posteriormente aplicar la configuracin resultante. El mismo procedimiento se sigue en el modo de bits local.
Ahora aadamos la impresora de ejemplo que esta conectada al puerto serial numero seis. La velocidad de bps la
estableceremos en 38400 bps. Para las marcas de bits usaremos TANDEM, ANYP, LITOUT, FLUSHO, y PASS8. Para el
modo local de bits, estableceremos LITOUT y PASS8 :
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:fs#0x82000c1:xs#0x820:

10.3.1.4.6. Instalando un Filtro de Texto


Ahora estamos listos para indicarle a LPD que filtro de texto debe utilizar para enviar los trabajos a la impresora. Un
filtro de texto, tambin conocido como filtro de entrada, es un programa que ejecuta LPD cuando tiene un trabajo
para imprimir. Cuando LPD ejecuta el filtro de texto para una impresora, configura de manera estandar la entrada
para el trabajo a imprimir, y la salida estandar a la impresora indicada en la caracterstica lp. El filtro espera leer el
trabajo de la entrada estandar, hacer el trabajo de traduccin necesario para la impresora, y enviar los resultados a la
salida estandar, lo cual ser impreso. Para mayor informacin en los filtros de texto, vea la seccin Como Trabajan
los Filtros.
En el caso de nuestro ejemplo, el filtro de texto puede ser un pequeo script que slo ejecute /bin/cat para enviar
el trabajo a la impresora. FreeBSD cuenta con otro filtro llamado lpf que controla los caracteres de regreso y
subrayado en impresoras que pueden presentar problemas con dichos caracteres. Y desde luego, usted puede utilizar
cualquier filtro que desee. El filtro lpf se describe a detalle en la seccin titulada lpf: un Filtro de Texto.
En primer lugar hagamos del script /usr/local/libexec/if-simple un simple filtro de texto. Introduzca el
siguiente texto en un fichero, con su eitor de texto favorito:
#!/bin/sh
#
# if-simple - Filtro de texto simple para lpd
# Instalado en la ruta /usr/local/libexec/if-simple
#
# Simplemente copia stdin a stdout. Ignora todos los argumentos del filtro.
/bin/cat && exit 0
exit 2

Haga el fichero ejecutable:


# chmod 555 /usr/local/libexec/if-simple

Ahora indiquele a LPD que lo use, al aadirlo con la caracterstica if, en el fichero /etc/printcap. Este filtro, lo
vamos a aadir en ambas impresoras de nuestro ejemplo, en el fichero /etc/printcap:

99

Captulo 10. Imprimiendo


#
# Fichero /etc/printcap para host rose - aadiendo el filtro de texto
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:\
:if=/usr/local/libexec/if-simple:

10.3.1.4.7. Encienda LPD


lpd(8) se puede correr desde /etc/rc, controlado por la variable lpd_enable. Esta variable por default esta
deshabilitada con NO. Si usted no cuenta con esta lnea, aadala de la siguiente forma:
lpd_enable="YES"

al fichero /etc/rc.conf, y posteriormente puede reiniciar su sistema o ejecutar lpd(8).


# lpd

10.3.1.4.8. Probando la Configuracin


Usted ha llegado al fin de una configuracin sencilla de LPD. Desafortunadamente, aun no es momento de una
felicitacin, dado que aun debemos probar la configuracin y resolver cualquier problema que se presente. Para
efecto de probar la configuracin, intente imprimir algo. Para imprimir con el sistema LPD, utilice el comando
lpr(1), el cual envia el trabajo para su impresin.
Puede combinar lpr(1) con el programa lptest(1), el cual se ve en la seccin Verificando la Comunicacin con la
impresora, para generar un texto de prueba.
Simplemente para probar la configuracin de LPD, intente:
Teclee:
# lptest 20 5 | lpr -Pnombre-impresora

Donde nombre-impresora es uno de los nombres (o alias) que aparecen especificados en el fichero
/etc/printcap para las impresoras. Para probar con la impresora por default, teclee lpr(1) sin la opcin -P.
Nuevamente, si esta probando una impresora que espera recibir PostScript, envie un programa PostScript en ese
lenguaje, en lugar de usar lptest(1). Puede hacer esto poniendo el programa en un fichero y tecleando lpr fichero.
Para una impresora PostScript, usted debe visualizar el resultado del programa. Si esta usando lptest(1), entonces su
resultado debe verse algo similar a lo siguiente:
!"#$%&()*+,-./01234
"#$%&()*+,-./012345
#$%&()*+,-./0123456
$%&()*+,-./01234567

100

Captulo 10. Imprimiendo


%&()*+,-./012345678

Para ms pruebas de la impresora, intente descargar programas ms largos (para impresoras basadas en un lenguaje)
o ejecutar lptest(1) con diferentes opciones. Por ejemplo lptest 80 60 producir 60 lneas de 80 caracteres cada
una.
Si la impresora no funcion, vea la seccin Resolucin de Problemas.

10.4. Configuracin Avanzada de una Impresora


Esta seccin describe el uso de filtros para formatos especiales, encabezados de pgina, impresin en red, y
restriccin de uso de la impresora por cuenta.

10.4.1. Filtros
Aun cuando LPD maneja con protocolos de red, controles de acceso, requisiciones y otros aspectos de la impresin,
la mayor parte del trabajo real se lleva a cabo por los filtros. Los Filtros son programas que se comunican con la
impresora y controlan las dependendcias de su dispositivo y requerimientos especiales. En el ejemplo de la
impresora simple, instalamos un muy sencillo filtro de texto planoun ejemplo extremadamente sencillo que
debiese trabajar con la mayora de las impresoras (en la seccin Instalando un Filtro de Texto).
De cualquier manera, para tomar ventaja de la conversin de formatos, cuentas de impresin, trucos especficos de
las impresoras y dems, es importante saber como trabajan los filtros. En virtud de que todos estos aspectos son la
responsabilidad de estos filtros. Y la mala noticia es, que la mayor parte del tiempo usted debe proveerse de estos
filtros. La buena noticia es normalmente estos ya existen disponibles; y cuando no, son sencillos de escribir.
FreeBSD tambi cuenta con un /usr/libexec/lpr/lpf, que trabaja con muchas impresoras que pueden imprimir
texto plano. (Maneja caracteres de regreso y tabulador en el fichero, as como conteo, pero se puede decir que eso es
todo). Existen tambin una gran cantidad de filtros y componentes de estos, disponibles en la Coleccin de Ports de
FreeBSD.
He aqui lo que encontrar en esta seccin:

La seccin Como Trabajan los Filtros intenta dar un repaso general al papel que juegan los filtros en el proceso de
impresin. Es importante que lea esta seccin para ver que sucede tras bambalinas cuando LPD usa filtros. Este
conocimiento puede ayudarle a anticiparse y resolver problemas que puede encontrar cuando instala ms y ms
filtros en cada impresora.

Normalmente LPD espera poder imprimir texto plano en todas las impresoras. Esto puede representar un
problema para las impresoras PostScript (o que manejen otro lenguaje de impresin), las cuales no pueden
imprimir texto plano directamente. La seccin Acomodando Trabajos de Texto Plano en Impresoras PostScript le
indica que debe de hacer si se le presenta este problema. Es importante que lea esta seccin si usted cuenta con
una impresora PostScript.

PostScript es un formato de salida muy popular. Incluso algunas personas (yo, incluido) escriben cdigo
PostScript directamente. Pero las impresoras PostScript son caras. La seccin Simulando PostScript en Impresoras

101

Captulo 10. Imprimiendo


No-PostScript le indica como puede hacer, para que una impresora no-PostScript, acepte e imprima datos
PostScript. Es recomendable que lea esta seccin si cuenta con una impresora no-PostScript.

La seccin Filtros de Conversin, le indica la forma en que puede automatizar la conversin de ciertos formatos
especficos de ficheros, tal como grficos o datos de un determinado tipo, a un formato que la impresora puede
entender. Despus de leer esta seccin usted podr configurar su impresora de tal forma que los usuarios puedan
teclear lpr -t para imprimir datos troff o lpr -d para imprimir datos de tipo TeX DVI, o bien lpr -v para
imprimir datos de imagen y as sucesivamente. Recomiendo la lectura de esta seccin.

La seccin Filtros de Salida explica todo acerca de las utilidades que no son muy usadas de LPD: filtros de salida.
A menos que usted haya habilitado la impresin de pginas de encabezado (vea Pginas de Encabezado), puede
saltar toda esta seccin.

La seccin lpf: Un Filtro de Texto detalla el uso de lpf, un sencillo filtro de texto, para impresoras de matriz de
puntos (e impresoras laser que actuan como estas) que viene con FreeBSD. Si usted necesita una forma rpida de
tener un contador de trabajos de impresin para texto plano, o bien si tiene una impresora que al ver caracteres de
regreso (backspace) comienza a echar humo, definitivamente debe considerar lpf como su alternativa.

10.4.1.1. Como Trabajan los Filtros


Como se menciono anteriormente, un filtro es un programa ejecutable que se inicia por LPD, para manejar el
dispositivo dependiente, responsable de la comunicacin con la impresora.
Cuando LPD desea imprimir un trabajo, inicia un programa filtro. Establece como entrada estandar del filtro al
fichero, y a la impresora como salida estandar, y como error estandard al fichero log (indicado con la cracterstica lf,
en el fichero /etc/printcap o por default como /dev/console).
Cual filtro debe ser iniciado por LPD y con que argumentos, depende en lo especificado en el fichero
/etc/printcap y los argumentos que hayan sido utilizados por el usuario al momento de usar en la lnea de
comandos: lpr(1). Por ejemplo, si el usuario teclea lpr -t, LPD iniciar el filtro para ficheros troff, listado en las
caractersticas tf para la impresora destino. Si el usuario desea imprimir texto plano iniciar el filtro if (esto casi es

as, para mayor informacin, vea la seccin Filtros de Salida).


Existen tres tipos de filtros que puede declarar en el fichero /etc/printcap:

El filtro de texto, erroneamente llamado filtro de entrada en la documentacin de LPD, este se encarga de manejar
la impresin de texto simple. Piense en este como en el filtro por default. LPD espera que todas las impresoras
puedan imprimir texto plano y es el filtro de texto, el que se encarga de manejar los caracteres de retroceso y
tabulador, de tal forma que la impresora no se confunda. Si en su sistema se debe llevar un conteo de impresiones,
el filtro de texto tambin debe llevar un conteo de pginas impresas, normalmente al llevar la cuenta de las lneas
impresas y comparandolas con el numero de lneas soportadas por pgina. El filtro de texto se comienza con los
siguientes argumentos:

nombre-del-filtro [-c] -wanchura -llongitud -isangrado -n login -h host fichero-act

donde

-c

aparece si el trabajo se envio utilizando lpr -l

102

Captulo 10. Imprimiendo


anchura
es el valor de la caracterstica pw (ancho de pgina), indicado en /etc/printcap, por default se usa un valor
de 132
longitud
es el valor de la caracterstica pl (longitud de pgina), por default su valor es 66
sangrado
se refiere a los espacios que se considerarn para lpr -i, por default es 0.
login
es el nombre de la cuenta del usuario que imprime el trabajo
host
es el nombre del host, del cual se ha enviado el trabajo de impresin
fichero-act
es el nombre del fichero contador, de la caracterstica af.

Un filtro de conversin convierte un formato especfico, a uno que la impresora puede plasmar en un papel. Por
ejemplo, datos de tipo ditroff no pueden imprimirse directamente, pero puede instalar un filtro de conversin para
ficheros ditroff, de tal forma que los datos ditroff se conviertan a un formato que entiende la impresora. La seccin
Filtros de Conversin explica todo lo que usted necesita saber sobre ellos. Los filtros de conversin tambin
requieren de llevar un conteo, si usted requiere de este control. Los filtros de conversin se inicializan con estos
argumentos:

nombre-del-filtro -xancho-pixel -yalto-pixel -n login -h host fichero-act

donde ancho-pixel es el valor de la caracterstica px (default 0) y alto-pixel es el valor de la


caracterstica py (default 0).

El filtro de salida es usado solamente si no existe un filtro de texto, o bien si las pginas de encabezado estn
habilitadas. En mi experiencia, los filtros de salida raramente se utilizan. La seccin Filtros de Salida describe el
uso de estos. Slo existen dos argumentos:

nombre-filtro -wancho -llargo

los cuales son idnticos a los argumentos -w y -l de los filtros de texto.


La salida de los filtros debe ser con el siguiente resultado:
exit 0
Esto es si el resultado de la impresin es satisfactorio.
exit 1
Si el filtro fall en la impresin, pero desea que LPD intente de nuevo el trabajo de impresin. LPD reiniciar el
filtro si sale con esta clave.

103

Captulo 10. Imprimiendo


exit 2
Si el filtro falla imprimiendo el fichero y no desea que LPD lo intente de nuevo. LPD desechar el fichero.
El filtro de texto /usr/libexec/lpr/lpf que viene con FreeBSD, toma ventaja de los argumentos de ancho y
largo, para determinar cuando alimentar la impresora y como llevar el conteo de uso de la impresora. Utiliza el host y
login, as como el fichero de conteo, para llevar el control de este registro.
Si usted esta buscando adquirir filtros, verifique que ellos son compatibles con LPD. Si lo son, deberan soportar los
argumentos descritos anteriormente. Si usted planea escribir filtros para uso general, entonces creelos pensando en
soportar estos argumentos y cdigos de salida.

10.4.1.2. Acomodando Trabajos de Texto Plano en Impresoras PostScript


Si usted es el nico usuario de su computadora e impresora PostScript (u otro lenguaje de impresoras), y promete
nunca enviar texto plano a su impresora o bien hacer uso de algunos programas que probablemente envien texto
plano a su impresora, entonces usted no debe preocuparse por leer esta seccin.
Pero, si usted desea enviar tanto texto plano, como PostScript a su impresora, entonces es altamente recomendable
que prepare la configuracin de su impresora. Para efecto de hacer esto, contamos con el filtro de texto, para detectar
si los trabajos que se han mandado son de texto plano o PostScript. Todos los trabajos de tipo PostScript, deben
comenzar con %! (para otros lenguajes de impresin, vea la documentacin de su impresora). Si esos son los dos
primeros caracteres de su trabajo, entonces se considera PostScript y puede pasar el resto del trabajo de forma
directa. Si esos no son los primeros dos caracteres, entonces el filtro har la conversin del texto a PostScript e
imprimir el resultado.
Cmo se hace esto?
Si usted cuenta con una impresora serial, una buena forma de hacer esto es instalando lprps. lprps es un filtro de
impresin PostScript que lleva a cabo una comunicacin de dos vas con la impresora. Actualiza el fichero de estatus
de la impresora, por medio de informacin actualizada, de tal forma que los usuarios y administradores pueden ver
exactamente el estado que guarda la impresora (tal como toner bajo o papel atorado). Pero ms importante es
el programa que incluye llamado psif, el cual detecta si el trabajo que se ha enviado es texto plano, con lo cual
llama a textps (otro programa que viene con lprps), para convertir el texto plano a PostScript. Posteriormente
utiliza lprps para enviar el trabajo a la impresora.
El programa lprps es parte de la Coleccin de Ports de FreeBSD (vea la seccin La Coleccin de Ports). Claro esta,
que usted puede descargar, compilar e instalarlo. Una vez que instale lprps, simplemente especifique la ruta al
programa psif que a su vez es parte de lprps. Si ha instalado lprps de la Coleccin de Ports, aada lo siguiente,
en la parte correspondiente a su impresora Serial-PostScript, en el fichero /etc/printcap:
:if=/usr/local/libexec/psif:

Tambin deber especificar la caracterstica rw; que le indica a LPD abrir la impresora en modo de lectura-escritura.
Si usted cuenta con una impresora PostScript, conectada a un puerto paralelo (y por lo tanto no cuenta con la
comunicacin de dos vas con la impresora, que lprps requiere), puede utilizar el siguiente script de shell como
filtro de texto:
#!/bin/sh
#
# psif - Imprime PostScript o texto plano en impresoras PostScript
# Script version; NO la version que viene con lprps

104

Captulo 10. Imprimiendo


#
#

Instalado en /usr/local/libexec/psif

read first_line
first_two_chars=expr "$first_line" : \(..\)
if [ "$first_two_chars" = "%!" ]; then
#
# Trabajo PostScript, imprimirlo.
#
echo "$first_line" && cat && printf "\004" && exit 0
exit 2
else
#
# Texto Plano, convertirlo e imprimirlo.
#
( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
exit 2
fi

En este script, textps es un programa que hemos instalado por separado, para convertir texto plano a PostScript.
Usted puede utilizar cualquier cualquier programa de conversin de texto plano a PostScript que desee. La Coleccin
de Ports de FreeBSD incluye un programa muy completo llamado a2ps que quizs desee investigar.

10.4.1.3. Simulando PostScript en Impresoras No-PostScript


PostScript es el estandar por excelencia en impresiones de alta calidad. Aunque en realidad PostScript resulta ser un
estandar algo caro. Afortunadamente la Empresa Alladin, cuenta con un emulador PostScript, llamado Ghostscript
que corre bajo FreeBSD. Ghostscript puede leer la mayora de los ficheros PostScript y volcarlos en una gran
variedad de dispositivos, incluyendose gran variedad de impresoras no-PostScript. Al instalar Ghostscript y usando
un filtro de texto especial para su impresora, puede hacer que su impresora no-PostScript actue como una impresora
PostScript real.
Ghostscript se encuentra en la Coleccin de Ports de FreeBSD por lo que puede realizar la instalacin desde este
medio. Tambin puede descargarlo, compilarlo e instalarlo de una manera fcil.
Para efecto de simular PostScript, contamos con el filtro de texto que detecta si se esta imprimiendo un fichero
PostScript. Si no es as, el filtro pasar el trabajo directamente a la impresora, de otra forma utilizar Ghostscript para
convertir primero el fichero a un formato que la impresora entienda.
Aqui tenemos un ejemplo: el siguiente script es un filtro de texto para impresoras Hewlett Packard DeskJet 500. Para
otras impresoras, substituya el argumento -sDEVICE del comando gs (Ghostscript). Teclee gs -h para obtener una
lista de todos los dispositivos soportados por Ghostscript en su sistema).
#!/bin/sh
#
# ifhp - Impresion simulada-Ghostscript PostScript en una DeskJet 500
# Instalada en /usr/local/libexec/hpif
#
#
#

Trate a LF como CR+LF:

105

Captulo 10. Imprimiendo


printf "\033&k2G" || exit 2
#
# Read first two characters of the file
#
read first_line
first_two_chars=expr "$first_line" : \(..\)
if [ "$first_two_chars" = "%!" ]; then
#
# Se trata de PostScript; use Ghostscript para convertir e imprimir.
#
# Note que los ficheros PostScript son , de hecho, programas interpretados,
# y esos programas se permiten escribir en la salida estandar, lo que puede
# confundir la salida impresa. De tal forma que redireccionaremos la salida
# estandar a error estandar, y crearemos una clave de salida 3, para la
# salida estandar, y haremos que Ghostscript escriba su salida a esta.
# Un ejercicio para el lector astuto: capture la salida del error estandar
# de Ghostscript y envielo por correo de regreso al usuario original, que
# genero el trabajo de impresion.
#
exec 3 &1 1 &2
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
-sOutputFile=/dev/fd/3 - && exit 0

#
/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 -sOutputFile=- - \
&& exit 0
else
#
# Texto plano o PCL de HP, asi que solo vamos a imprimirlo directamente;
# permita la alimentacion de forma al final, para expulsar la ultima
# pagina.
#
echo $first_line && cat && printf "\033&l0H" &&
exit 0
fi
exit 2

Finalmente, necesita notificar a LPD de la caracterstica if, que corresponde al filtro a utilizar:
:if=/usr/local/libexec/ifhp:

Y eso es todo. Puede teclear lpr texto.plano y lpr cualquier.ps y ambos deben imprimirse exitosamente.

10.4.1.4. Filtros de Conversin


Una vez que se ha completado la configuracin descrita en la seccin Configuracin Simple de una Impresora,
probablemente lo primero que deba hacer es instalar filtros de conversin para su formato de fichero favorito (aparte
de text plano ASCII).

106

Captulo 10. Imprimiendo


10.4.1.4.1. Por qu Instalar Filtros de Conversin?
Los filtros de conversin sirven para instalar de una manera sencilla varios tipos de formatos especiales. Como
ejemplo, suponga que requiere imprimir un buen numero de ficheros desarrollados con el sistema de escritura TeX, y
contamos con una impresora PostScript. Cada vez que generemos un fichero DVI desde TeX, no podremos
imprimirlo directamente hasta que hagamos una conversin de este a PostScript. La secuencia de comandos a seguir
es algo as:
% dvips fichero-prueba.dvi
% lpr fichero-prueba.ps

Al instalar un filtro de conversin, podemos omitir llevar a cabo la conversin manual, y permitir que LPD se haga
cargo por nosotros. Ahora, cada vez que generemos un fichero DVI, slo estaremos a un paso de su impresin:
% lpr -d fichero-prueba.dvi

Con esto le hemos indicado a LPD que haga la conversin del fichero DVI. Esto se lleva a cabo por medio de la
opcin -d. La seccin Opciones de Formato y Conversin enumera las opciones de conversin.
Por cada una de las opciones que desea que una impresora reconozca, instale un filtro de conversin y seale su ruta
en el fichero /etc/printcap. Un filtro de conversin es como el filtro de texto usado en la configuracin de una
impresora simple (vea la seccin Instalando un Filtro de Texto para una referencia) excepto de que en lugar de
imprimir texto plano, el filtro convierte el fichero a un formato que la impresora puede entender.

10.4.1.4.2. Qu Filtros de Conversin Debo Instalar?


Usted debe instalar los filtros de conversin que vaya a necesitar. Si imprime gran cantidad de documentos DVI, es
recomendable que instal un filtro de conversin para DVI. Si cuenta con bastantes ficheros troff por imprimir,
entonces un filtro troff sera una buena idea.
En la siguiente tabla encontrar un resmen de los filtros con que trabaja LPD, un ejemplo de su entrada en
/etc/printcap y como hacer uso de estos con el comando lpr :
Tipo de Fichero

Caracterstica /etc/printcap

Opcin lpr

cifplot

cf

-c

DVI
plot

df

-d

gf

-g

nf

-n

rf

-f

ditroff
FORTRAN texto
troff
raster

rf

-f

vf

-v

texto plano

if

ninguna, -p, o -l

En nuestro ejemplo, el uso de lpr -d indica que la impresora requiere de la caracterstica df, en su entrada del
fichero /etc/printcap.
A pesar de lo que otros puedan opinar, formatos como texto de FORTRAN o plot, son probablemnte obsoletos. A su
gusto, usted puede encontrar nuevos usos de estos formatos, as como a cualquier otro con el simple hecho de instalar
los filtros adecuados. Por ejemplo, supongamos que desea imprimir ficheros de tipo Printerleaf (que son ficheros
generados por el programa de promocin de escritorio Interleaf) de forma directa, pero que nunca imprime ficheros

107

Captulo 10. Imprimiendo


plot. Podra instalar un filtro de conversin de Printerleaf bajo la caracterstica gf y posteriormente educar a sus
usuarios a que utilicen el comando lpr -g para llevar a cabo impresiones de ficheros Printleaf.

10.4.1.4.3. Instalando Filtros de Conversin


Considerando que los filtros de conversin son programas que usted instala independientemente de la instalacin
base de FreeBSD, probablemente el mejor lugar para colocarlos sera bajo el directorio /usr/local. El directorio
/usr/local/libexec es un lugar comn, en virtud de que estos son programas especiales que slo sern
ejecutados por LPD; los usuarios comunes no necesitarn ejecutarlos nunca.
Para habilitar un filtro de conversin, deber especificar su ruta bajo la caracterstica adecuada, en la entrada de la
impresora correspondiente en el fichero /etc/printcap.
En nuestro ejemplo, aadiremos el filtro de conversin DVI, para la impresora llamada bamboo. He aqui un ejemplo
del fichero /etc/printcap que hemos estado utilizando, con la nueva caracterstica df, para la impresora bamboo.
#
# Fichero /etc/printcap para host rose - aadiendo df a bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:

El filtro DVI es un script de shell llamado /usr/local/libexec/psdf. Aqui presentamos el script:


#!/bin/sh
#
# psdf - Filtro de impresion DVI a PostScript
# Instalado en /usr/local/libexec/psdf
#
# Llamado por lpd cuando el usuario ejecuta lpr -d
#
exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"

Este script ejecuta dvips en modo de filtro (la opcin -f) con la entrada estandar, que es el trabajo a imprimir.
Posteriormente inicia el filtro de impresin PostScript lprps (vea la seccin Acomodando Trabajos de Texto Plano
en Impresoras PostScript), con las opciones que LPD haya pasado al script. El comando lprps har uso de esas
opciones para llevar la cuenta de las pginas impresas.

10.4.1.4.4. Ms Ejemplos de Filtros de Conversin


Considerando que no existe una serie de pasos establecida, para instalar filtros de conversin, me permito mostrar
algunos ejemplos ms. Puede usarlos tal como aparecen, si es que se ajustan a sus necesidades.

108

Captulo 10. Imprimiendo


Este ejemplo es de un filtro de conversin raster (bueno, de hecho se trata de un fichero GIF), para una impresora
Hewlett Packard LaserJet III-Si:
#!/bin/sh
#
# hpvf - Convierte ficheros GIF a HP/PCL, posteriormente los imprime
# Instalado en /usr/local/libexec/hpvf
PATH=/usr/X11R6/bin:$PATH; export PATH
giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
&& exit 0 \
|| exit 2

Esto trabaja convirtiendo el fichero GIF a cualquier tipo de fichero mapa portable, y conviritendo eso a un mapa en
escala de grises, y ese mapa de regreso a un fichero portable de mapa de bits, y finalmente eso a datos compatibles
con HP/PCL, entendible por la impresora LaserJet.
Aqui esta un ejemplo del fichero /etc/printcap usando el filtro anterior, con la impresora mencionada.
#
# Fichero /etc/printcap para el host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:

El siguiente script es un filtro de conversin de datos de tipo troff desde un sistema groff, para la impresora
PostScript denominada bamboo:
#!/bin/sh
#
# pstf - Convierte datos de troff tipo groff a PS, y los imprime.
# Instalado en /usr/local/libexec/pstf
#
exec grops | /usr/local/libexec/lprps "$@"

El script de arriba, nuevamente hace uso del comando lprps, para manejar la comunicacin con la impresora. Si la
impresora se encontrase en un puerto paralelo, usariamos el siguiente script:
#!/bin/sh
#
# pstf - Convierte datos groff a PS, y los imprime.
# Instalado en /usr/local/libexec/pstf
#
exec grops

Eso es todo. Aqui presentamos la entrada necesaria en /etc/printcap para habilitar el filtro:
:tf=/usr/local/libexec/pstf:

Aqui presentamos un ejemplo que puede hacer que los viejos usuarios de FORTRAN se ruboricen. Es un filtro de
texto para FORTRAN, usando impresoras que pueden imprimir directamente texto plano. Lo instalaremos para la
impresora teak:

109

Captulo 10. Imprimiendo


#!/bin/sh
#
# hprf - Filtro de Texto FORTRAN para LaserJet 3si:
# Instalado en /usr/local/libexec/hprf
#
printf "\033&k2G" && fpr && printf "\033&l0H" &&
exit 0
exit 2

Y aadiremos esta lnea al fichero /etc/printcap para la impresora teak, para efecto de habilitar el filtro:
:rf=/usr/local/libexec/hprf:

Aqui presentamos el ltimo ejemplo que puede resultar algo complicado. Vamos a aadir un filtro DVI para la
impresora LaseJet teak comentada anteriormente. Primero, la parte sencilla: actualizaremos /etc/printcap con
la ubicacin del filtro DVI:
:df=/usr/local/libexec/hpdf:

Ahora la parte complicada: crar el filtro. Para eso, vamos a necesitar un programa de conversin de
DVI-a-LaserJet/PCL. La Coleccin de Ports de FreeBSD (vea La Coleccin de Ports) cuenta con uno, el nombre del
paquete es: dvi2xx. Al instalar este programa, nos brinda la funcionalidad que buscamos, dvilj2p, el cual
convierte ficheros DVI a ficheros compatibles con LaserJet IIp, LaserJet III y LaserJet 2000 y cdigos compatibles.
El programa dvilj2p hace que el filtro hpdf sea ms complejo, en virtud de que dvilj2p no puede leer desde la
entrada estandar. Este desea trabajar desde un nombre de fichero. Y lo que es peor, es que el nombre del fichero debe
contar con la terminacin .dvi, de tal forma que usar /dev/fd/0 como entrada estandar representa un problema.
Esto lo podremos solucionar, creando un enlace (simblico) de un fichero temporal (uno que su tenga como
extensin .dvi) a /dev/fd/0, y por tanto forzando a dvilj2p a leer la entrada estandar.
El nico punto negativo que nos queda por resolver, es que no podemos utilizar /tmp para el enlace temporal. Los
enlaces simblicos son propiedad del grupo y usuario bin. El filtro de ejecuta como usuario daemon. Y el directorio
/tmp cuenta con el bit pegajoso activado. El filtro puede crear el enlace, pero no podr limpiarlo una vez que
termine y eliminarlo, ya que pertenece a un usuario diferente.
En lugar de esto, el filtro crear el enlace simblico en el directorio de trabajo actual, el cual ser el directorio de la
cola de impresin (especificado en /etc/printcap por la caracterstica sd). Este lugar es perfecto para que los
filtros hagan su trabajo, especialmente que aqui existe ms espacio (algunas veces) en disco duro, que bajo el
directorio /tmp.
Finalmente, aqui presentamos el filtro:
#!/bin/sh
#
# hpdf - Impresion de datos DVI en una impresora HP/PCL
# Instalado en /usr/local/libexec/hpdf
PATH=/usr/local/bin:$PATH; export PATH
#
#
#
#

Definir una funcion para limpiar nuestros ficheros temporales. Estos existen
en el directorio de trabajo actual, el cual servira para la cola de impresion de
la impresora.

110

Captulo 10. Imprimiendo


#
cleanup() {
rm -f hpdf$$.dvi
}
#
# Definir funcion para el manejo de errores fatales: imprimir un mensaje dado y salir
# con codigo de salida 2. Al salir con 2, le indica a LPD que no intente la impresion
# de nuevo.
#
fatal() {
echo "$@" 1 &2
cleanup
exit 2
}

#
# Si el usuario elimina el trabajo, LPD enviara un SIGINT, para que SIGINT
# (y algunas otros avisos) limpien despues de nosotros.
#
trap cleanup 1 2 15
#
# Asegurarse de que no estamos creando un conflicto con ficheros existentes.
#
cleanup
#
# Crear el enlace de la entrada DVI a la entrada estandar (el fichero a imprimir).
#
ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"
#
# Hacer LF = CR+LF
#
printf "\033&k2G" || fatal "Cannot initialize printer"
#
# Convertir e imprimir. Regresar valor de dvilj2p no parece my confiable,
# asi que es ignorado.
#
dvilj2p -M1 -q -e- dfhp$$.dvi
#
# Limpiar y salir
#
cleanup
exit 0

111

Captulo 10. Imprimiendo


10.4.1.4.5. Conversin Automtica: Una Alternativa A Los Filtros De Conversin
Todos estos filtros de conversin realizan una gran labor en pro de sus labores de impresin, pero con el
inconveniente de que cada usuario debe especificar cual filtro es el que se debe utilizar (cuando se invoca el comando
lpr(1)). Si sus usarios no son lo que podemos llamar aficionados a la computacin, el especificar que filtro utilizar
puede volverse algo molesto. Y lo que es peor, el uso de un filtro inadecuado puede causar que su impresora termine
imprimiendo cientos de hojas de papel de manera incorrecta.
En lugar de instalar filtros de conversin, quizs le interese intentar que su filtro de texto (dado que es el filtro por
default) determine que tipo de fichero se esta enviando a imprimir y automticamente ejecute el filtro adecuado. En
este caso, herramientas como file pueden ser de mucha utilidad. Claro esta, puede que algunos tipos de ficheros
puede ser difcil determinar de que tipo son, pero siempre puede contar con filtros especiales para ellos.
La Coleccin de Ports de FreeBSD cuenta con un filtro de texto que ejecuta de forma automtica la conversin,
llamado apsfilter. Este puede detectar texto plano, PostScript y ficheros DVI, ejecutar la conversin adecuada e
imprimir.

10.4.1.5. Filtros de Salida


El sistema de cola de impresin de LPD soporta otro tipo de filtros, que aun no hemos explicado aqui: un filtro de
salida. Un filtro de salida esta diseado para imprimir texto plano nicamente, como el filtro de texto, pero de una
forma ms simplificada. Si usted esta usando un filtro de salida pero no filtro de texto, entonces:

LPD inicia el filtro de salida para el trabajo completo, en lugar de hacerlo para cada fichero del trabajo.

Para el filtro de salida, LPD no realiza un trabajo extra para identificar el comienzo o el fin del trabajo.

En el filtro de salida, LPD no utiliza como argumento el nombre de usuario o host, por lo tanto no esta diseado
para llevar un conteo por usuario. De hecho, este slo maneja dos argumentos:
nombre-filtro -wancho -llargo

Donde ancho es tomado de la caracterstica pw y largo es tomado de la caracterstica pl, para la impresora en
cuestin.

Es importante que no se deje seducir por la simplicidad del filtro de salida. Si usted desea que cada fichero de un
trabajo sea impreso en una pgina diferente, el filtro de salida no har este trabajo. Utilice un filtro de texto (tambin
conocido como filtro de entrada); vea la seccin Instalando un Filtro de Texto . Mas all, el filtro de salida es de
hecho ms complicado en ese aspecto dado que examina la cadena de bytes que se ha enviado, para buscar alguna
marca especial y enviarse seas l mismo, a nombre de LPD.
De cualquier forma, un filtro de salida es necesario si usted desea pginas de encabezado y requiere de enviar un
secuencia de escape u otras cadenas de inicializacin para habilitar la impresin de encabezados. (Aunque tambin
es trivial si desea cobrar de acuerdo a las pginas encabezado de cada usuario, dado que LPD no otorga informacin
del usuario o host, al filtro de salida.)
En una sola impresora, LPD permite el uso tanto del filtro de salida como el filtro de texto. En cuyo caso, LPD
iniciar el filtro de salida para imprimir las pginas de encabezado (vea la seccin Pginas de Encabezado)
nicamente. Posteriormente LPD espera que el filtro de salida se detenga por s mismo al enviarle dos bytes al filtro:
ASCII 031 seguido de ASCII 001. Cuando un filtro de salida recibe estos dos bytes (031, 001), deber pararse,

112

Captulo 10. Imprimiendo


enviandose a s mismo una seal SIGSTOP. Una vez que LPD ha terminado de ejecutar otros filtros, reiniciar el
filtro de salida, el enviarle una seal SIGCONT.
Si existe un filtro de salida, pero no existe un filtro de texto y LPD esta trabajando con un trabajo en texto plano,
LPD utilizar el filtro de salida para hacer el trabajo. Como se comento anteriormente, el filtro de salida imprimir
cada fichero del trabajo en secuencia, sin intervencin de alimentacin u otras ventajas con lo que al papel se refiere,
y seguramente que esto no es lo que usted desea. En casi todos los casos usted necesitar un filtro de texto.
El programa lpf, que comentamos anteriormente como un filtro de texto, tambin es capaz de ejecutar un filtro de
salida. Si desea un trabajo rpido-y-sucio del filtro de salida, pero no desea que se escriban bytes de deteccin, ni
envien cdigos, puede usar lpf. Tambin puede incluir lpf en un script de shell, para que controle cualquier cdigo
de inicializacin que la impresora requiera.

10.4.1.6. lpf: Un Filtro de Texto


El programa /usr/libexec/lpr/lpf que viene con los binarios de FreeBSD, como un filtro de texto (filtro de
entrada) que puede darle sanga a los trabajos (usando la opcin lpr -i), que permite el envo literal de caracteres
(con el comando lpr -l), ajusta la posicin de impresin para caracteres de retroceso y tabulador, y contabiliza las
pginas impresas. Tambin puede funcionar como un filtro de salida.
lpf se ajusta a la configuracin de gran cantidad de impresoras. Y aunque no tiene la habilidad de enviar secuencias
de inicializacin a la impresora, es muy sencillo escribir un script de shell para llevar a cabo la inicializacin y
posteriormente ejecutar lpf.

Para efecto de que lpf lleve un conteo correcto, requiere que se tengan los valores adecuados de las caractersticas
pw y pl, en el fichero /etc/printcap. En base a estos, determina cuanto texto puede existir en una pgina y
cuantas pginas existen en el trabajo de un usuario. Para mayor informacin al respecto, vea la seccin Contabilidad
del Uso de la Impresora.

10.4.2. Pginas de Encabezado


Si usted cuenta con gran cantidad de usuarios, y todos imprimiendo en varias impresoras, entonces sera conveniente
considerar las pginas de encabezado como un mal necesario.
Las pginas de encabezados, tambin conocidas como titulares o pginas de aviso identifican a quien pertenece el
trabajo enviado a imprimir, una vez que han sido impresos. Normalmente estas son impresas en letras grandes y de
color negro remarcado (negritas), y quizs con bordes decorativos, de tal forma que puedan distinguirse entre el resto
de las pginas enviadas a imprimir. Estas permiten a los usuarios localizar rpidamente sus impresiones. El obvio
lado negativo de estas pginas es que se debe imprimir una hoja adicional, por cada trabajo enviado a la impresora,
su utilidad efmera, no dura ms que unos minutos, terminando en una bandeja de reciclaje. (Note que las pginas de
encabezado se imprimen con cada trabajo enviado a la impresora, no con cada pgina impresa, de tal manera que el
deperdicio de papel no es tan grave.)
El sistema LPD puede proveerle de las pginas de encabezado de forma automtica para sus impresiones, si su
impresora soporta de la impresin de texto plano directamente. Si usted cuenta con una impresora PostScript,
necesitar un programa externo para generar estas pginas; vea la seccin Pginas de Encabezado en Impresoras
PostScript.

113

Captulo 10. Imprimiendo

10.4.2.1. Habilitando las Pginas de Encabezado


En la seccin Configuracin Simple de una Impresora, deshabilitamos la impresin de estas pginas al especificar sh
(que son siglas en ingls para supress header, algo as como eliminar encabezados) en el fichero
/etc/printcap. Para efecto de habilitar la impresin de pginas de encabezado, simplemente elimine la
caracterstica sh del fichero.
Suena demasiado fcil, verdad?
Efectivamente. Es probable que deba proveer de un filtro de salida, para efecto de que se mande la cadena de
inicializacin a la impresora. Aqui tenemos un ejemplo de un filtro de salida para impresoras compatibles con PCL
de Hewlett Packard:
#!/bin/sh
#
# hpof - Filtro de salida para impresoras compatibles con Hewlett Packard PCL
# Instalado en /usr/local/libexec/hpof
printf "\033&k2G" || exit 2
exec /usr/libexec/lpr/lpf

Especifique la ruta del filtro de salida, en la caracterstica of. Vea la seccin Filtros de Salida para ms informacin
al respecto.
Aqui podr ver un ejemplo de un fichero /etc/printcap para la impresora teak que trabajamos anteriormente;
hemos aadido las pginas de encabezado, as como el filtro de salida mencionado anteriormente:
#
# /etc/printcap for host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:\
:vf=/usr/local/libexec/hpvf:\
:of=/usr/local/libexec/hpof:

Ahora, cuando los usuarios impriman sus trabajos a la impresora teak, ellos obtendrn una pgina de encabezado
por cada trabajo que manden a imprimir. Si los usuarios desean pasar un tiempo buscando sus impresiones, pueden
deshabilitar la impresin de esta pgina con el comando lpr -h; para ms informacin sobre las opciones de lpr(1),
vea la seccin Opciones de Pginas de Encabezado.
Nota: El sistema LPD envia a la impresora un caracter de alimentacin de pgina. Si su impresora utiliza un
caracter diferente de alimentacin de pgina, especifquelo en el fichero /etc/printcap, bajo la caracterstica
ff.

10.4.2.2. Controlando las Pginas de Encabezado


Al habilitar las pginas de encabezado, LPD produce un encabezado largo, una pgina completa con letras largas
que identifican el usuario, la maquina host, y el trabajo. Aqui tenemos un ejemplo (kelly ha impreso un trabajo
llamado outline, desde el host rose):

114

Captulo 10. Imprimiendo


k
k
k
k
k
k k
k k
kk k
k
k
k
k

eeee
e
e
eeeeee
e
e
e
eeee

ll
l
l
l
l
l
l
l
lll

oooo
o
o
o
o
oooo

u
u
u
u
u
u
u
u
u
uu
uuu u

t
t
ttttt
t
t
t
t t
tt

r rrr
rr
r
r
r
r
r

oooo
o
o
o
o
o
o
o
o
oooo

ssss
s
s
ss
ss
s
s
ssss

o
o
o
o

ll
l
l
l
l
l
l
l
lll

ll
l
l
l
l
l
l
l
lll

eeee
e
e
eeeeee
e
e
e
eeee

y
y
y
y
y
y
y
y
y
yy
yyy y
y
y
y
yyyy

i
ii
i
i
i
i
iii

n nnn
nn
n
n
n
n
n
n
n
n
n

eeee
e
e
eeeeee
e
e
e
eeee

Job: outline
Date: Sun Sep 17 11:04:58 1995

Despus de esta pgina, LPD manda un caracter de alimentacin de pgina, para que el trabajo sea impreso en una
hoja blanca nueva (a menos que cuente con sf (por sus siglas en ingls supress form feed, que es eliminacin de
alimentacin de pgina) en el fichero /etc/printcap).

115

Captulo 10. Imprimiendo


Si lo prefiere, LPD puede generar un encabezado pequeo; puede hacer esto, al especificar sb en el fichero
/etc/printcap. La pgina de encabezado que ser impresa se vera as:
rose:kelly

Job: outline

Date: Sun Sep 17 11:07:51 1995

Por default, LPD imprime la pgina de encabezado en primer trmino y posteriormente el trabajo. Para cambiar este
comportamiento, es necesario incluir la caracterstica hl (encabezado a lo ltimo por sus siglas en ingls), en el
fichero /etc/printcap.

10.4.2.3. Conteo de Pginas de Encabezado


Cuando se utiliza la utilidad integrada de conteo de LPD, refuerza el paradigma de que; cuando se refiere al conteo
de impresiones: las pginas de encabezados deben ser sin coto alguno.
Por qu?
Por que el filtro de salida es el nico programa externo que puede llevar un conteo de las pginas impresas, cuando
tiene el control, y este no es provisto con informacin de un usuario o host o algun fichero contador, de tal forma que
no tiene idea de a quien cargar estas impresiones. Tampoco es conveniente, simplemente cargar una impresin al
total de las impresiones del filtro de texto o filtro de conversin (esos que cuentan con informacin del usuario y
host), esto en virtud de que los usuarios pueden suprimir el uso de estas pginas con lpr -h. Esto implica que se le
podran cobrar hojas que ellos no imprimieron. Bsicamente el comando lpr -h sera la opcin preferida de los
usuarios concientes del sistema, pero usted no puede ofrecer incentivo alguno para que se utilice.
Tampoco es una buena alternativa que cada filtro genere sus pginas de encabezado (y por lo tanto poder cobrar por
ellas). Si los usuarios desean suprimirlas usando la opcin lpr -h, an obtendrn estas pginas y les sern cobradas,
en virtud de que LPD no tiene transfiere la opcin -h a los filtros.
As que, Qu opciones tenemos?
Usted puede:

Aceptar el paradigma de LPD y no cobrar por las pginas de encabezado.

Instalar una alternativa a LPD, tal como LPRng. La seccin Alternativas al Sistema de Impresin Estndar le
informa sobre otros programas que puede utilizar, que sustituyan a LPD.

Escribir un filtro de salida inteligente. Normalmente, un filtro de salida no esta diseado para hacer otra cosa, que
no sea inicializar la impresora o bien hacer alguna conversin sencilla de caracteres. Esta diseado para pginas de
encabezado y trabajos en texto plano (cuando no existe algun filtro de texto (entrada)). Pero cuando si existe un
filtro de texto, para los trabajos en texto plano, entonces LPD slo har uso del filtro de salida para las pginas de
encabezado. Y el filtro de salida puede pasar el texto de la pgina encabezado generado por LPD, para determinar
el usuario y el host al cual se le cobrar dicha impresin. El nico problema con este metodo es que el filtro de
salida an no sabe que fichero usar para llevar la cuenta de las impresiones (la caracterstica af no pasa el nombre
del fichero), pero si usted cuenta con un fichero establecido para llevar esta cuenta, puede incluirlo en el cdigo del
filtro de salida. Para efecto de facilitar este paso, utilice la caracterstica sh (encabezado corto) del fichero
/etc/printcap. Nuevamente, todo esto podra resultar muy complicado, y los usuarios estaran muy agradecidos
con el generoso administrador del sistema que genera las pginas de encabezado gratis.

116

Captulo 10. Imprimiendo

10.4.2.4. Pginas de Encabezado en Impresoras PostScript


Como se ha descrito anteriormente, LPD puede generar pginas encabezado en texto plano para gran cantidad de
impresoras. Claro esta, que PostScript no puede imprimir texto plano directamente, de tal forma que la habilidad de
imprimir estas pginas de LPD, es inservibleo casi.
Una forma obvia de crear las pginas de encabezado, es hacer que cada filtro de conversin y de texto, creen sus
pginas de encabezado. Los filtros debern utilizar el nombre de usuario y host, para generar esta pgina
personalizada. Lo malo de este metodo es que los usuarios siempre obtendrn una pgina de encabezado, aun cuando
usen en sus impresiones lpr -h.
Exploremos este metodo. El siguiente script considera tres argumentos (nombre del login del usuario, nombre del
host, y nombre del trabajo) y genera una pgina simple de encabezado PostScript:
#!/bin/sh
#
# make-ps-header - crea una pagina de encabezado PostScript a stdout
# Instalado en /usr/local/libexec/make-ps-header
#
#
# Estas son unidades PostScript (72 a la pulgada).
# cualquier tamano de papel que este utilizando.
#
page_width=612
page_height=792
border=72
#
# Verificar argumentos
#
if [ $# -ne 3 ]; then
echo "Usage: basename $0
exit 1
fi

user

host

Modifiquelo para A4 o

job " 1 &2

#
# Salvar estos, principalmente para lectura de PostScript, mas abajo.
#
user=$1
host=$2
job=$3
date=date
#
# Enviar el codigo PostScript a la salida estandar.
#
exec cat
EOF
%!PS

%
% Segurese de no interferir con el trabajo del usuario c continuacion
%
save

117

Captulo 10. Imprimiendo

%
% Crear un grueso y poco placentero borde alrededor del borde de la pagina.
%
$border $border moveto
$page_width $border 2 mul sub 0 rlineto
0 $page_height $border 2 mul sub rlineto
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
$border 2 mul $page_width sub 0 rlineto closepath
0.8 setgray 10 setlinewidth stroke 0 setgray
%
% Desplegar nombre de login del usuario, bonito largo y prominente
%
/Helvetica-Bold findfont 64 scalefont setfont
$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
($user) show
%
% Ahora mostrar los aburridos detalle generales
%
/Helvetica findfont 14 scalefont setfont
/y 200 def
[ (Job:) (Host:) (Date:) ] {
200 y moveto show /y y 18 sub def }
forall
/Helvetica-Bold findfont 14 scalefont setfont
/y 200 def
[ ($job) ($host) ($date) ] {
270 y moveto show /y y 18 sub def
} forall
%
% Eso es todo
%
restore
showpage
EOF

Ahora, cada uno de los filtros de conversin y de texto, pueden invocar este script, para en primer lugar generar esta
pgina y despus imprimir el trabajo del usuario. Aqui tenemos el filtro de conversin DVI que revisamos
anteriormente en este documento, modificado para generar pginas de encabezado:
#!/bin/sh
#
# psdf - DVI to PostScript printer filter
# Installed in /usr/local/libexec/psdf
#
# Invoked by lpd when user runs lpr -d
#
orig_args="$@"

118

Captulo 10. Imprimiendo

fail() {
echo "$@" 1 &2
exit 2
}
while getopts "x:y:n:h:" option; do
case $option in
x|y) ;; # Ignore
n)
login=$OPTARG ;;
h)
host=$OPTARG ;;
*)
echo "LPD started basename $0 wrong." 1 &2
exit 2
;;
esac
done

[ "$login" ] || fail "No login name"


[ "$host" ] || fail "No host name"
( /usr/local/libexec/make-ps-header $login $host "DVI File"
/usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args

Note como el filtro debe pasar los argumentos en orden, para efecto de determinar el nombre de usuario y host. El
procedimiento para los otros filtros de conversin es identico. El filtro de texto tiene una pequea variacin (vea la
seccin Como Trabajan los Filtros).
Como hemos mencionado anteriormente, este esquema simplemente nos sirve para deshabilitar la opcin eliminar
encabezados (la opcin -h) de lpr. Si los usuarios desean salvar algunos arboles (o algunos centavos si usted cobra
por estas pginas), no podrn deshabilitar esta opcin, ya que cada filtro imprimir una pgina de encabezado con
cada trabajo impreso.
Para permitir que los usuarios desactiven las pginas de encabezado en cada trabajo, ser necesario que utilice el
truco del que hablamos en la seccin Conteo de Pginas de Encabezado: escribir un filtro de salida que pase la
pgina generada por LPD y produzca una versin PostScript de la misma. Si el usuario utiliza lpr -h, entonces
LPD no generar una pgina encabezado, y tampoco su filtro de salida. De otra forma, su filtro de salida tomar los
datos de LPD y enviar el cdigo PostScript apropiado para la impresin de la pgina de encabezado.
Si usted cuenta con una impresora PostScript conectada a un puerto serial, puede usar lprps, que cuenta con un
filtro de salida, psof, que hace lo mencionado. Note que psof no cobra por las pginas de encabezado.

10.4.3. Impresin en Red


FreeBSD cuenta con soporte para impresin en red: envo de trabajos a impresoras remotas. La impresin en red,
normalmente se cuenta con dos escenarios:

Accesando a una impresora que esta conectada a un host remoto. Esto es, una impresora que esta conectada por
algun medio convencional, como puerto serial o paralelo, en un host. Y por otro lado se habilita LPD para poder
imprimir desde otros hosts de la red. La seccin Impresoras Instaladas en Hosts Remotos le indica como hacer
esto.

119

Captulo 10. Imprimiendo

Accesando a una impresora que esta conectada directamente a la red. En este caso la impresora cuenta con un
dispositivo de red en adicin (o en su lugar) del convencional paralelo o serial. Esta impresora puede funcionar de
la siguiente manera:

Puede comprender el protocolo de LPD e inclusive hacer consulta de trabajos en hosts remotos. En este caso,
actua tal como un host normal que esta ejecutando LPD. Aplique el procedimiento revisado en Impresoras
Instaladas en Hosts Remotos para efecto de configurar estas impresoras.

Puede contar con soporte para envo de datos por medio de la conexin de red. En este caso, usted conecta la
impresora a un host de la red, al hacer responsable, a dicho host, de la administracin de los trabajos en la cola
de impresin y su envio a la impresora. La seccin Impresoras con Interfaces de Red para Secuencia de Datos le
da algunos consejos y sugerencias sobre como instalar estas impresoras.

10.4.3.1. Impresoras Instaladas en Hosts Remotos


El sistema de cola de impresin de LPD cuenta con soporte integrado para enviar trabajos de impresin a un host
remoto que cuente con LPD (o alguna sistema compatible con LPD). Esta habilidad le permite instalar una
impresora en un host, y hacerla accesible desde otros hosts. Tambin es til con impresoras que cuentan con
interfaces de red que comprenden el protocolo de LPD.
Para habilitar la funcionalidad de impresin remota, primero instale la impresora en un host, que ser el host de
impresin. Esto lo podemos hacer utilizando los pasos descritos en la seccin Configuracin Simple de una
impresora. Realice cualquier configuracin adicional adicional que se requiera, de acuerdo a lo descrito en la seccin
Configuracin Avanzada de una Impresora. Asegurese de probar la impresora y de que esta funcionando
correctamente, as como las funciones de LPD que haya habilitado. Tambin asegurese de que el host local cuenta
con autorizacin para usar el servicio de LPD en el host remoto (vea la seccin Restriccin de Trabajos de
Impresoras Remotas).
Si usted esta utilizando una impresora que cuenta con un dispositivo de red, compatible con LPD, entonces el host de
impresin mencionado ms adelante, ser la misma impresora, y el nombre de la impresora ser el nombre que usted
le haya asignado a la impresora. Vea la documentacin que incluye su impresora y/o el dispositivo de impresin en
red para detalles al respecto.
Sugerencia: Si usted esta utilizando una impresora LaserJet Hewlett Packard entonces la impresora nombre
automticamente har la conversin de LF a CRLF, de tal forma que no ser necesario el uso del script hpif.

Y de esta manera, para los hosts que desee que tengan acceso a la impresora, deber crear una entrada en su fichero
/etc/printcap, que contenga lo siguiente:
1. Nombre la entrada como desee. Para simplificar, quizs desee darle el mismo nombre y alias usado en el host de
impresin.
2. La caracterstica lp dejela en blanco, de manera explcita (:lp=:).
3. Cree un directorio para la cola de impresin y especifique su ruta en la caracterstica sd. LPD utilizar este
directorio para almacenar los trabajos antes de que sean enviados al host de impresin.
4. Aada el nombre del host de impresin a la caracterstica rm.
5. Aada el nombre de la impresora en el host de impresin en la caracterstica rp.

120

Captulo 10. Imprimiendo


Eso es todo. No es necesario listar los filtros de conversin, dimensiones de la pgina, o algo adicional en el fichero
/etc/printcap.
Aqui tenemos un ejemplo. El host rose cuenta con dos impresoras, bamboo y rattan. Vamos a habilitar a usuarios
en el host orchid para que puedan imprimir en esas impresoras. Aqui tenemos el fichero /etc/printcap para el
host orchid (usado en la seccin Habilitando las Pginas de Encabezado). Ya cuenta con la entrada para la
impresora teak; y hemos aadido las entradas para las impresoras del host rose:
#
#
#
#

Fichero /etc/printcap para el host orchid - anadiendo impresoras


(remotas) del host rose

#
# teak es impresora local; esta conectada directamente a orchid:
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
#
# rattan esta conectada a rose; envio de trabajos para rattan en rose:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
#
# bamboo tambien esta conectada a rose:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:

Posteriormente, slo necesitamos crear los directorios para la cola de impresin en el host orchid:
# mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo
# chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
# chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo

Ahora los usuarios de orchid pueden imprimir en rattan y bamboo. Si, por ejemplo, un usuario en orchid teclea
% lpr -P bamboo -d sushi-review.dvi

el sistema de cola de LPD en el host orchid, copiar el trabajo al directorio de cola /var/spool/lpd/bamboo y
notar que se trata de un trabajo DVI. Tan pronto como el host rose tenga espacio en el directorio de cola de
impresin de bamboo, los dos LPDs transferirn el fichero a rose. El fichero quedar en espera en la cola de rose
hasta que sea impreso. Este ser convertido de DVI a PostScript (dado que bamboo es una impresora PostScript), en
rose.

121

Captulo 10. Imprimiendo

10.4.3.2. Impresoras con Interfaces de Red para Secuencia de Datos


Comunmente, cuando usted adquiere una tarjeta de red para impresoras, puede obtener dos versiones: una que emula
la cola de impresin (que son las de mayor valor), o bien, otra que simplemente le permite recibir datos tal como lo
hace un puerto serial o paralelo (la versi econmica). Esta seccin le explica como utilizar la versin econmica.
Para el uso de la versin de mayor valor, vea la seccin Impresoras Instaladas en Hosts Remotos.
El formato del fichero /etc/printcap le permite especificar que puerto serial o paralelo utilizar, y (en caso de que
utilice un puerto serial) la velocidad de baudio, si utiliza control de flujo, retraso en tabulador, conversin de nuevas
lneas y ms. Pero no hay manera de indicar la conexin de una impresora que escucha en un puerto TCP/IP u otro
puerto de red.
Para efecto de enviar datos a una impresora en red, usted necesita crear un programa de comunicacin que pueda ser
llamado desde un filtro de texto o de conversin. Aqui tenemos un ejemplo de dicho programa: el script netprint,
que toma todos los datos de la entrada estandar y los envia a un impresora conectada a la red. Hemos especificado el
nombre de host de la impresora como primer argumento y el puerto al que esta conectado como segundo argumento,
en netprint. Note que este tipo de soporte slo trabaja en una va (de FreeBSD a la impresora); gran cantidad de
impresoras cuentan con soporte de ambas vas, y quizs desee tomar ventaja de esto (para obtener estatus de
impresin, contabilidad, desempeo, etc.).
#!/usr/bin/perl
#
# netprint - Filtro de texto para impresoras en red
# Instalado en /usr/local/libexec/netprint
#
port-number ";
$#ARGV eq 1 || die "Usage: $0 printer-hostname

$printer_host = $ARGV[0];
$printer_port = $ARGV[1];
require sys/socket.ph;
($ignore, $ignore, $protocol) = getprotobyname(tcp);
($ignore, $ignore, $ignore, $ignore, $address)
= gethostbyname($printer_host);
$sockaddr = pack(S n a4 x8, &AF_INET, $printer_port, $address);
socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
|| die "Cant create TCP/IP stream socket: $!";
connect(PRINTER, $sockaddr) || die "Cant contact $printer_host: $!";
while ( STDIN ) { print PRINTER; }
exit 0;

Una vez hecho este script, podemos utilizarlo en varios filtros. Supongamos que contamos con la impresora de lnea
Diablo 750-N conectada a la red. La impresora acepta datos para impresin en el puerto 5100. El nombre de host que
tiene la impresora es scrivener. El filtro de texto a usar quedara de la siguiente manera:
#!/bin/sh
#
# diablo-if-net - Filtro de texto para la impresora Diable en scrivener usando
# el puerto 5100.
Instalado en /usr/local/libexec/diablo-if-net
#

122

Captulo 10. Imprimiendo


exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100

10.4.4. Restriccin del Uso de la Impresora


Esta seccin le da informacin sobre la restriccin en el uso de la impresora. El sistema de LPD le permite controlar
quien puede acceder a la impresora de ambas formas, local y remota, si los usuarios pueden imprimir mltiples
copias, que tan grandes pueden ser los trabajos de impresin, y limitar el tamao de la cola de impresin.

10.4.4.1. Restriccin de Copias Multiples


El sistema de LPD le facilita a los usuarios el imprimir mltiples copias de un mismo fichero. Los usuarios pueden
usar (por ejemplo) lpr -#5 para imprimir 5 copias de cada fichero enviado. El hecho de que esto sea bueno o no es
algo que depende de usted.
Si usted siente que las copias mltiples causan trabajo inecesario a su impresora, puede deshabilitar la opcin -# de
lpr(1), al incluir la caracterstica sc en su fichero /etc/printcap. Cuando los usuarios utilicen la opcin -# al
momento de imprimir, vern el siguiente aviso:
lpr: multiple copies are not allowed

Recuerde que si usted a configurado una impresora para su acceso de forma remota (vea la seccin Impresoras
Instaladas en Hosts Remotos), ser necesario que tambin cuente con la caracterstica sc en el fichero
/etc/printcap del host remoto, o bien, los usuarios aun podrn hacer uso de la opcin -#, al usar un host
diferente.
Aqui presentamos un ejemplo. Este es un ejemplo del fichero /etc/printcap, del host rose. La impresora
rattan es de batalla por lo que permitiremos las copias mltiples, pero la impresora laser bamboo es ms
delicada por lo que vamos a deshabilitar las copias mltiples, al aadir la caracterstica sc:
#
# Fichero /etc/printcap del host rose - restringe copias multiples en bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:

Ahora, tambi debemos aadir la caracterstica sc en el fichero /etc/printcap del host orchid (y ya que estamos
en eso, deshabiltemos las copias mltiples para la impresora teak):
#
# Fichero /etc/printcap del host orchid - sin copias multiples para la
# impresora local teak o impresora remota bamboo
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\

123

Captulo 10. Imprimiendo


:lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
:if=/usr/local/libexec/ifhp:\
:vf=/usr/local/libexec/vfhp:\
:of=/usr/local/libexec/ofhp:
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:

Al incluir la caracterstica sc, hemos prevenido el uso de lpr -#, pero eso no previene el uso de lpr(1) gran
cantidad de veces, o el envo del mismo trabajo varias veces, tal como:
% lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign

Existen gran cantidad de formas para prevenir este abuso (incluyendo el ignorarlo), que usted queda en libertad de
explorar.

10.4.4.2. Restriccin de Acceso a Impresoras


Usted puede controlar quien puede imprimir y en que impresoras, haciendo uso del mecanismo de grupos de Unix y
de la caracterstica rg en el fichero /etc/printcap. Simplemente aada en un grupo determinado, a los usuarios
que desea puedan imprimir en cierta impresora, y despus aada el nombre del grupo a la caracterstica rg.
Todos los usuarios que no pertenezcan a este grupo (incluyendo al superusuario (root)), y que deseen imprimir en la
impresora controlada, les aparecer este mensaje: lpr: Not a member of the restricted group
De la misma forma que hicimos con sc (la eliminacin de copias mltiples), con rg deber indicarla en los hosts
remotos que tengan acceso a sus impresoras si lo cree conveniente (vea la seccin Impresoras Instaladas en Hosts
Remotos).
Por ejemplo, vamos a permitir que cualquiera imprima en rattan, pero solo aquellos que forman parte del grupo
artistas podrn usar la impresora bamboo. Nuevamente tenemos el fichero /etc/printcap para el host rose:
#
# Fichero /etc/printcap del host rose - grupo restringido para bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artistas:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:

Vamos a dejar de lado el otro fichero /etc/printcap de ejemplo (el del host orchid). Claro esta, que cualquier
usuario desde orchid puede imprimir en bamboo. En este caso podriamos aceptar slo ciertos accesos desde
orchid, y esto les dara acceso a la impresora. O no.

124

Captulo 10. Imprimiendo


Nota: Slo puede haber un grupo restringido por impresora.

10.4.4.3. Controlando el Tamao de los Trabajos Enviados


Si usted cuenta con gran cantidad de usuarios accesando sus impresoras, probablemente necesite establecer un lmite
mximo en el tamao que deban tener los trabajos enviados a imprimir. Despus de todo, slo existe tanto espacio
libre en el sistema de ficheros como el que se tiene en los directorios de cola, y tambin usted debe asegurarse de que
exista el espacio suficiente para otros usuarios.
El sistema de LPD, le permite especificar un monto maximo de tamao en bytes para un trabajo, con la caracterstica
mx. Las unidades estn indicadas en blques BUFSIZ, que son de 1024 bytes. Si usted le agrega un cero a esta

caracterstica, no habr lmite en el tamao de los trabajos que se puedan enviar a imprimir; por otro lado, si no se
especifica la caracterstica mx, el lmite por default ser de 1000 bloques.
Nota: El lmite es vlido para los ficheros del trabajo, y no para el tamao total del trabajo.

El sistema de LPD no rehusar imprimir los trabajos que exceden el lmite, en su lugar proceder con la impresin
hasta el lmite indicado. El resto del trabajo quedar descartado. El hecho de que este comportamiento sea correcto o
no, aun es tema de debate.
Ahora permitamonos incluir lmites a nuestras impresoras de ejemplo rattan y bamboo. En virtud de que esos
artistas tienden a imprimir grandes trabajos en PostScript, los vamos a limitar a cinco megabytes. En la impresora
de lnea no vamos a especificar lmite:
#
#
#

Fichero /etc/printcap del host rose

#
# Sin limite de tamano en el trabajo:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:mx#0:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
#
# Con limite de cinco megabytes:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:

Nuevamente, los lmites aplican slo para los usuarios locales. Si se han configurado las impresoras para su acceso de
forma remota, los usuarios que accesen remotamente no tendrn esta limitante. Para efecto de que esto sea vlido en

125

Captulo 10. Imprimiendo


los usuarios remotos, deber agregar la caracterstica mx en el fichero /etc/printcap de los hosts remotos. Vea la
seccin Impresoras Instaladas en Hosts Remotos para mayor informacin sobre la instalacin de impresoras en red.
Existe otra forma especializada para limitar el tamao de los trabajos, desde impresoras remotas, vea la seccin
Restriccin de Trabajos de Impresoras Remotas.

10.4.4.4. Restriccin de Trabajos de Impresoras Remotas


El sistema de cola de LPD cuenta con varios metodos para restringir la impresin de trabajos enviados por hosts
remotos:
Restricciones del Host
Haciendo uso de los ficheros /etc/hosts.equiv y /etc/hosts.lpd, usted puede controlar el LPD local,
para determinar de que hosts remotos se acepten conexiones. En este caso, LPD verifica, en caso de una
peticin, que el host remoto se encuentre listado en agluno de estos dos ficheros. Si no es as, LPD rechazar la
peticin.
El formato de estos ficheros es simple: el nombre de un host por lnea. Note que el fichero /etc/hosts.equiv
tambin es usado por el protocolo ruserok(3), y afecta programas como rsh(1) y rcp(1), as que tenga cuidado al
editarlo.
Por ejemplo, este es el fichero /etc/hosts.lpd del host rose:
orchid
violet
madrigal.fishbaum.de

Esto significa que rose aceptar peticiones de los hosts orchid, violet y madrigal.fishbaum.de. Si
cualquier otro host intenta accesar el LPD de rose, el acceso ser denegado.

Restricciones de Tamao
Usted puede controlar cuanto espacio libre se requiere, en el sistema de fichero donde se localiza el directorio
del sistema de impresin. Cree un fichero llamado minfree, en el directorio local de la cola de impresin. En
ese fichero aada un numero que representa el numero de bloques libres que deben haber en el disco (512
bytes), para efecto de aceptar un trabajo de forma remota.
Esto permite asegurarle que los usuarios remotos no llenaran su disco duro. Esto tambin puede usarse para dar
cierta prioridad a los usuarios locales: ya que podr colocar sus trabajos en espera en la cola de impresin, hasta
que la cantidad de espacio libre sea inferior a la indicada en el fichero minfree.
Por ejemplo, incluyamos a minfree en la impresora bamboo. Para esto, primero examinamos el fichero
/etc/printcap, para encontrar los datos de la impresora; aqui tenemos la entrada de bamboo:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:mx#5000:\
:if=/usr/local/libexec/psif:\
:df=/usr/local/libexec/psdf:

126

Captulo 10. Imprimiendo


El directorio de la cola de impresin es indicado por la caracterstica sd. Vamos a dejar tres megabytes (que son
6144 bloques de disco) como espacio libre que debe existir en el sistema de ficheros, para que LPD acepte
trabajos remotos:
# echo 6144

/var/spool/lpd/bamboo/minfree

Restricciones por Usuario


Usted puede controlar que usuarios remotos pueden imprimir en impresoras locales, al incluir la caracterstica
rs en /etc/printcap. Cuando rs aparece en la entrada de una impresora que esta conectada localmente,
LPD aceptar trabajos de usuarios remotos, siempre y cuando el usuario que ha enviado el trabajo, tenga alguna
cuenta, con el mismo nombre de usuario en el host local. De otra forma LPD no har el trabajo.
Esta caracterstica es particularmente til en medios donde (por ejemplo) existen varias areas que comparten
una red, y algunos usuarios traspasan las fronteras departamentales. Al otorgarles una cuenta en su sistema,
pueden hacer uso de sus impresoras, desde su propio departamento de sistemas. Si solo desea permitirles hacer
uso de sus impresoras y no de los recursos de su sistema, puede asignarles cuentas tontas (token accounts),
que no cuentan con un directorio home y con un un shell inservible como /usr/bin/false.

10.4.5. Contabilidad del Uso de la Impresora


As que usted requiere de cobrar por las impresiones. Y por qu no?, el papel y la tinta cuestan dinero. Y tambin
estn los costos de mantenimientolas impresoras estan llenas de partes mviles que tienden a descomponerse.
Usted ha analizado sus impresoras, los patrones de uso, y costos de mantenimiento y ha llegado a un costo por-pgina
(o por-pie, por-metro, o por-loquesea). Ahora bien, Cmo empezar a llevar una contabilidad de las impresiones?.
Bueno, la mala noticia es que LPD no provee de mucha ayuda en esta area. El conteo depende en gran parte en el
tipo de impresora con que usted cuenta, el formato en que se imprime y de sus requerimientos para cobrar por el uso
de la impresora.
Para implementar un contador, deber modificar el filtro de texto (para cobrar por impresiones en texto plano) y los
filtros de conversin (para cobrar por impresiones en otro formato), para efecto de llevar un conteo de pginas o
peticiones a la impresora para imprimir. Esto no podr llevarse a cabo con un simple filtro de salida, dado que no
puede llevar un conteo. Vea la seccin Filtros.
En trminos generales existen dos formas de hacer esto:

El contador periodico es la forma ms comun, quizs por que es la ms sencilla. Cuando alguien envia una
impresin, el filtro registra el usuario, host y numero de pginas en un fichero contador. Cada mes, semestre, ao o
cualquier periodo de tiempo que prefiera, puede revisar estos ficheros, de tal forma que sepa cuantas impresiones
ha realizado cada usuario y poder cobrar por las mismas. Despus de limpiar estos ficheros puede empezar un
nuevo periodo de cero.

El contador por tiempo es menos conocido, quizs por su dificultad de uso. Este metodo hace que sus filtros
cobren al usuario por sus impresiones, en cuanto hacen uso de las impresoras. Como las cuotas de disco, el conteo
es inmediato. Con esto, usted puede prevenir que usuarios impriman cuando sus cuentas estn en numeros rojos, y

127

Captulo 10. Imprimiendo


quizs en cierto modo proveer a sus usuarios de una forma de verificar sus cuotas de impresin. Pero este
metodo requiere de uso de bases de datos, para dar seguimiento a los usuarios y sus cuotas.
El sistema de cola de LPD cuenta con soporte para ambos metodos: en virtud de que usted debe proveer los filtros
(bueno, casi todo el tiempo), tambin debe proveer del cdigo para el contador. Pero hay un lado positivo: usted
cuenta con una enorme flexibilidad en cuanto a metodos de contabilidad se refiere. Por ejemplo, puede utilizar un
contador periodico o por tiempo. Usted selecciona que informacin debe quedar registrada: nombre de usuario,
nombre del host, tipo de trabajo, pginas impresas, medidas del papel usado, tiempo que duro en imprimir el trabajo,
y as sucesivamente. Y para hacer esto, slo debe modificar sus filtros.

10.4.5.1. Contabilidad de Impresiones Rpida y Sucia


FreeBSD cuenta con dos programas que pueden auxiliarlo para instalar un simple contador periodico. Ellos son; el
filtro de texto lpf, descrito en la seccin lpf: un Filtro de Texto, y pac(8), un programa para reunir y totalizar la
informacin de los ficheros de contador de impresiones.
Como se menciono en la seccin de filtros (Como Trabajan los Filtros), LPD inicia los filtros de texto y conversin
con el nombre del fichero contador a usar en la lnea de comando del filtro. Los filtros pueden usar este argumento
para saber en donde registrar la informacin. El nombre de este fichero se indica en la caracterstica af del fichero
/etc/printcap, y si no se indica su ruta completa, se har referencia al directorio de la cola de impresin.
LPD inicia lpf con los argumentos de alto y ancho del papel (tomados de pw y pl). lpf usa estos argumentos para
determinar cuanto papel ser necesario. Una vez enviado el fichero a impresin, se escribe en el fichero contador un
registro. Este registro es as:
2.00
3.00
3.00
5.00
2.00

rose:andy
rose:kelly
orchid:mary
orchid:mary
orchid:zhang

Deber usar un fichero contador para cada impresora, dado que lpf no cuenta con una lgica de bloqueo de ficheros
incluida, y dos lpf escribiendo al mismo tiempo en un fichero podrian corromperlo. Una forma segura para
garantizar el uso de ficheros distintos por impresora, es usar af=acct en el fichero /etc/printcap. De esta forma
contaremos con el fichero contador de cada impresora por separado, en el directorio de la cola de impresin, en un
fichero llamado acct.
Cuando sea el momento de cobrar a los usuraios, ejecute el programa pac(8). Slo dirijase al directorio de cola, del
cual desea recabar la informacin y teclee pac. Usted obtendr un resumen similar al siguiente:
Login
orchid:kelly
orchid:mary
orchid:zhang
rose:andy
rose:kelly
rose:mary
rose:root
total

pages/feet
5.00
31.00
9.00
2.00
177.00
87.00
26.00
337.00

runs
1
3
1
1
104
32
12

$
$
$
$
$
$
$

price
0.10
0.62
0.18
0.04
3.54
1.74
0.52

154

6.74

Estos son los argumentos que puede pasar a pac(8):

128

Captulo 10. Imprimiendo


-Pimpresora

De que impresora hacer el resumen. Esta opcin funciona, solo si existe una ruta absoluta, en la
caracterstcia af del fichero /etc/printcap.
-c

Ordenar la salida por costo en lugar de por usuario alfabeticamente.


-m

Ignorar el nombre de host. Con esta opcin, el usuario smith del host alpha, es el mismo usuario smith del
host gamma. Sin esta opcin, se consideran usuarios diferentes.
-pprecio

Computar cargos con tal precio en dlares por pgina o por pie, en lugar del precio tomado de la
caracterstica pc del fichero /etc/printcap, o dos centavos (precio por default). Puede indicar el precio
como un numero de punto flotante.
-r

Invertir el orden de acomodo.


-s

Crear un fichero de resumen y reiniciar el fichero contador.


nombre ...
Imprimir la informacin del usuario nombre unicamente.
En el resumen que genera pac(8) por default, podr observar el numero de pginas impresas por cada usuario desde
diferentes hosts. Si en su sitio, el host no es importante (por que los usuarios pueden usar cualquier host), ejecute
pac -m, para producir el siguiente resumen:
Login
andy
kelly
mary
root
zhang
total

pages/feet
2.00
182.00
118.00
26.00
9.00
337.00

runs
1
105
35
12
1

$
$
$
$
$

price
0.04
3.64
2.36
0.52
0.18

154

6.74

Para calcular el monto adeudado, pac(8) utiliza la caracterstica pc del fichero /etc/printcap (que por default
utiliza 200, o 2 centavos por pgina). Especifique en cientos de centavos el precio a cobrar por pgina o por pie, que
desea cobrar, en esta caracterstica. Puede reemplazar este valor cuando ejecuta pac(8) con la opcin -p. Las
unidades de esta opcin estan expresadas en dlares, y no en cientos de centavos. Por ejemplo,
# pac -p1.50

hace que cada pgina tenga un costo de un dolar con cincuenta centavos. Realmente se puede exceder en las
utilidades usando esta opcin.

129

Captulo 10. Imprimiendo


Finalmente, ejecutando pac -s puede guardar la el resumen, en un fichero, que es nombrado al igual que el fichero
contador de la impresora, pero con _sum al inicio del fichero. Posteriormente reinicia el fichero contador. Cuando
ejecuta pac(8) nuevamente, lee el fichero resumen, para obtener los totales y posteriormente aade la informacin del
fichero contador normal.

10.4.5.2. Cmo Contabilizar las Pginas Impresas?


Para efecto de que pueda obtener un conteo ms cercano a la realidad, necesita poder determinar cuanto papel utiliza
cada trabajo. Este es el problema esencial del conteo de impresiones.
Para impresiones en texto, este problema no es tan difcil de resolver: puede contabilizar el numero de lneas que
tiene un trabajo y dividirlas entre el numero de lneas totales por pgina que maneja la impresora. No olvide
contabilizar los retrocesos del fichero que sobreimprimen lneas, o de las largas lneas lgicas que se justifican en en
una o ms lneas fsicas.
El filtro de texto lpf (introducido en lpf: un Filtro de Texto) toma en cuenta todas estas cosas cuando hace el conteo.
Si usted esta escribiendo un filtro de texto que requiere contabilizar, quizs desee examinar el cdigo fuente del lpf.
Pero, Cmo manejar otros formatos?
Bueno, para conversiones DVI-a-LaserJet o DVI-a-PostScript, puede hacer que su filtro pase la informacin de salida
a dvilj o dvips y ver cuantas pginas fueron convertidas. Puede hacer cosas similares con otros formatos y filtros
de conversin.
Pero estos metodos sufren del hecho de que la impresora puede no imprimir estas pginas. Po ejemplo, se pueden
atorar, acabarse la tinta, o explotary el usuario de todas formas se le cobrar.
Entonces, qu puede hacer?
Slo existe una forma segura de llevar un conteo confiable. Adquiera una impresora que pueda indicarle cuanto
papel utiliza, y conectela por medio de un puerto serial o en red. Casi todas las impresoras PostScript cuentan con
soporte para esto. Existen otras marcas u modelos que tambin cuentan con el soporte (por ejemplo, las impresoras
en red Imagen laser). Modifique los filtros de estas impresoras para que lleven un conteo de las oginas impresas y
que almacenen los registros basados en el valor only. No se requiere de un conteo de lneas o de examinar el fichero
de errores.
Claro esta que usted puede ser muy generoso y no cobrar por las impresiones.

10.5. Uso de las Impresoras


Esta seccin le indica como usar las impresoras que ha instalado con FreeBSD. Aqui tenemos los comandos de
usuario mas comunes:
lpr(1)
Imprime trabajos
lpq(1)
Verifica los trabajos pendientes

130

Captulo 10. Imprimiendo


lprm(1)
Elimina un trabajo de la cola de impresin
Tambin se cuenta con un comando de administracin, lpc(8), descrito en la seccin Administracin de la Cola de
Impresin de LPD, usado para controlar las impresoras y sus peticiones.
Las tres opciones lpr(1), lprm(1), y lpq(1), aceptan el argumento -Pimpresora para especificar en que impresora
realizar la impresin/peticin, de acuerdo a lo indicado en /etc/printcap. Esto le permite imprimir, remover o
consultar los trabajos en varias impresoras. Si no usa el argumento -P, estos comandos haran uso de la impresora
especificada en la variable de entorno PRINTER. Finalmente, si no cuenta con la variable de entorno PRINTER
definida, estos comandos utilizarn la impresora por default, que es lp.
Por lo tanto, el termino impresora por default, hace referencia a la impresora definida en la variable de entorno
PRINTER, o en su defecto a la impresora nombrada lp, cuando no este definida la variable de entorno PRINTER.

10.5.1. Trabajos de Impresin


Para imprimir un fichero, teclee:
% lpr fichero ...

Lo anterior imprimir los ficheros nombrados, en la impresora por default. Si no indica el nombre del fichero, lpr(1)
leer los datos a imprimir de la entrada estandar. Por ejemplo, este comando imprime algunos ficheros importantes
del sistema:
% lpr /etc/host.conf /etc/hosts.equiv

Para seleccionar una impresora, teclee:


% lpr -P nombre-de-la-impresora fichero ...

Este ejemplo imprime una larga lista del directorio actual, en la impresora nombrada rattan:
% ls -l | lpr -P rattan

En virtud de que no se le paso fichero alguno para imprimir a lpr(1), lpr toma los datos de la entrada estandar, que
en este caso es la salida del comando ls -l.
EL comando lpr(1) tambin puede aceptar gran variedad de opciones para controlar el formato, aplicar conversiones
a los ficheros, generar copias multiples, etc.. Para mayor informacin, vea la seccin Opciones de Impresin.

10.5.2. Verificando los Trabajos


Cuando usted utiliza lpr(1) para imprimir, los datos que desea imprimir se colocan juntos en un paquete llamado
trabajo de impresin, el cual es enviado al sistema de cola de LPD. Cada impresora cuenta con un orden de
impresin de trabajos, y su trabajo espera su turno en este orden, junto con otros trabajos suyos y de otros usuarios.
El criterio del orden ser los primeros-en-llegar son los primeros-en-salir.
Para ver los trabajos pendientes de la impresora por default, teclee lpq(1). Para una impresora en especial, use la
opcin -P. Por ejemplo, el comando

131

Captulo 10. Imprimiendo


% lpq -P bamboo

le muestra los trabajos pendientes de la impresora bamboo. Aqui tenemos un ejemplo de la salida del comando lpq:
bamboo
Rank
active
2nd
3rd

is ready
Owner
kelly
kelly
mary

and printing
Job Files
9
/etc/host.conf, /etc/hosts.equiv
10
(standard input)
11
...

Total Size
88 bytes
1635 bytes
78519 bytes

Esto muestra que hay tres trabajos en espera, para bamboo. El primer trabajo enviado por el usuario kelly, tiene
asignado en numero de trabajo 9. Cada trabajo en una impresora, se le asigna un numero nico. La mayor parte del
tiempo puede ignorar el numero de trabajo, pero este ser necesario en caso de que desee cancelar el trabajo; vea la
seccin Eliminando Trabajos para mas detalles al respecto.
El trabajo numero nueve consiste en dos ficheros; al pasar varios trabajos a lpr(1), estos son tratados como parte de
un solo trabajo. Este es el trabajo actual, activo (note la palabra active bajo la columna Rank), que quiere decir,
que la impresora debe estar imprimiendo este trabajo. El segundo trabajo consiste en datos pasados al comando
lpr(1) por la entrada estandar. El tercer trabajo proviene del usuario mary; que es un trabajo mucho mas grande. La
ruta que esta tratando de ser descrita es muy larga, de tal forma que lpq(1) solo lo representa con tres puntos.
La primer lnea de la salida de lpq(1) tambin es de utilidad: esta le indica que esta haciendo la impresora en este
momento (o cuando menos, que es lo que LPD piensa que la impresora esta haciendo).
El comando lpq(1) tambien cuenta con la opcin -l, para generar una salida mas detallada. Aqui tenemos un
ejemplo de lpq -l:
waiting for bamboo to become ready (offline ?)
kelly: 1st [job 009rose]
/etc/host.conf
73 bytes
/etc/hosts.equiv
15 bytes
kelly: 2nd [job 010rose]
(standard input)

1635 bytes

mary: 3rd
[job 011rose]
/home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes

10.5.3. Eliminando Trabajos


Si cambia de parecer con respecto a imprimir un trabajo, puede eliminarlo de los trabajos pendientes, con el
comando lprm(1). Incluso puede usar el comando lprm(1) para elminar un trabajo activo, pero algunos o todos los
demas trabajos aun seran impresos.
Para eliminar un trabajo de la impresoras por default, primero use lpq(1) para saber el numero de trabajo. Despu
teclee:
% lprm numero-trabajo

Para eliminar un trabajo de un a impresora especifica, utilice la opcin -P. El siguiente comando elimina el trabajo
numero 10 de los trabajos pendientes de la impresora bamboo:

132

Captulo 10. Imprimiendo


% lprm -P bamboo 10

El comando lprm(1) cuenta con algunas opciones:


lprm Elimina todos los trabajos (de la impresora por default) y que le pertenezcan a usted.
lprm usuario
Elimina todos los trabajos (de la impresora por default) que pertenecen a usuario. El superusuario puede
eliminar trabajos de otros: usted solo puede eliminar sus trabajos.
lprm
Cuando no se pasa ningun nombre de usuario, o -, en la lnea de comando, lprm(1) elimina el trabajo activo de
la impresora por default, si este le pertenece. El superusuario puede eliminar cualquier trabajo activo.
Simplemente use la opcin -P con las opciones comentadas, para que apliquen en una impresora especifica. Por
ejemplo, el siguiente comando elimina todos los trabajos pendientes del usuario actual en la impresora rattan:
% lprm -P rattan -

Nota: SI usted esta trabajando en una red, el comando lprm(1), solo le permitira eliminar trabajos del host del
cual se enviaron dichos trabajos, incluso si la impresora esta habilitada desde otros hosts. La siguiente
secuencia de comandos demuestra esto:
% lpr -P rattan mifichero
% rlogin orchid
% lpq -P rattan

Rank
Owner
Job Files
active seeyan
12 ...
2nd
kelly
13
mifichero
% lprm -P rattan 13
rose: Permission denied
% logout
% lprm -P rattan 13
dfA013rose dequeued
cfA013rose dequeued

Total Size
49123 bytes
12 bytes

10.5.4. Ms alla del Texto Plano: Opciones de Impresin


El comando lpr(1) cuenta con soporte para multiples opciones que controlan el formato del texto, conversin de
grficos y otros formatos, produccin de copias multiples, manejo de los trabajos, y ms. Esta seccin describe estas
opciones.

133

Captulo 10. Imprimiendo

10.5.4.1. Opciones de Formato y Conversin


Las siguientes opciones de lpr(1) controlan el formato de los ficheros en el trabajo. Utilice estas opciones si el trabajo
no es de texto plano o si desea dar formato al texto plano por medio de la utilidad pr(1).
Por ejemplo, el siguiente comando imprime un fichero DVI (desde un sistema de escritura TeX) llamado
fish-report.dvi a la impresora bamboo:
% lpr -P bamboo -d fish-report.dvi

Estas opciones aplican para todos los ficheros dentro del trabajo, por lo que no debe mezclar (por decir) ficheros DVI
y ditroff en el mismo trabajo. Para hacer esto, envie los trabajos a imprimir por separado, usando la opcin que
corresponda a cada trabajo.
Nota: Todas estas opciones, excepto -p y -T requieren de filtros de conversin instalados para la impresora
destino. Por ejemplo, la opcin -d requiere de un filtro para DVI. La seccin Filtros de Conversin le da ms
detalles al respecto.

-c

Imprimir ficheros cifplot.


-d

Imprimir ficheros DVI.


-f

Imprimir ficheros de texto FORTRAN.


-g

Imprimir datos plot.


-inumero

Sangrar la salida con el numero de columnas indicado; si omite numero, el numero ser de 8 columnas. Esta
opcin trabaja bien solo con algunos filtros de conversin.
Nota: No debe dejar espacios entre la opcin -i y el numero.

-l

Imprimir datos de texto literal, incluyendo caracteres de control.


-n

Imprimir datos ditroff (troff independiente del dispositivo).

134

Captulo 10. Imprimiendo


-p
Formatear el texto plano con pr(1) antes de imprimir. Vea pr(1) para ms informacin.
-T titulo

Use titulo en la cabecera de pr(1), en lugar del nombre del fichero. Esta opcin solo tiene efecto cuando se
usa con -p.
-t

Imprimir datos troff.


-v

Imprimir datos raster.


Aqui tenemos un ejemplo: este comando imprime una bonita y formateada versin de la pgina de ayuda de ls(1), en
la impresora por default:
% zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t

El comando zcat(1) descomprime la fuente de la pgina de ayuda ls(1) y lo pasa al comando troff(1), que le da
formato y crea la salida GNU troff, la cual es pasada a lpr(1), que envia el trabajo a la cola de LPD. Como usamos la
opcin -t con lpr(1), el sistema de cola va a convertir la salida GNU troff a datos entendibles para la impresora,
cuando se imprime.

10.5.4.2. Opciones para Manejar los Trabajos


Las siguientes opciones de lpr(1), le indican a LPD que debe manejar el trabajo de una forma especial:
-# copias
Producir un numero de copias de cada fichero en el trabajo, en vez de una sola copia. Un administrador puede
inhabilitar esta oprcin para reducir el desgaste de la impresora y alentar el uso de la fotocopiadora. Vea la
seccin Restriccn de Copias Multiples.
Este ejemplo imprime tres copias de parser.c seguido de tres copias de parser.h en la impresora por
default:
% lpr -#3 parser.c parser.h

-m
Enviar correo despus de completar el trabajo. Con esta opcin, el sistema LPD enviara un correo a su cuenta
cuando termina de imprimir. En su mensaje, le informar si el trabajo termino con exito o si hubo algun error, y
(normalmente) que tipo de error fu.
-s
No copie el fichero al directorio de la cola, en su lugar crear un enlace simbolico.
Si usted esta imprimiendo un trabajo de gran tamao, quizs esta es una buena opcin. Esta opcin le ahorra
espacio en el directorio de cola (donde su trabajo puede terminar con el espacio libre donde reside su

135

Captulo 10. Imprimiendo


directorio). Esta opcin tambin le ahorra tiempo, en virtud de que LPD no tendr que copiar todos y cada uno
de los bytes del trabajo al directorio.
Aunque esto tiene su inconveniente: dado que LPD estar haciendo uso del fichero original, no lo podr
modificar o eliminar hasta que termine la impresin.
Nota: Si usted esta en un entorno de red, LPD eventualmente copiar ficheros del host local al host
remoto, as que la opcin -s le puede ahorrar espacio solo en el directorio del host local, no en los remotos.
Aun con esto, la opcion es de gran utilidad.

-r
Eliminar los ficheros del trabajo, una vez que hayan sido copiados al directorio de la cola, o despus de que
hayan sido impresos, cuando se use la opcin -s. Tenga cuidado con esta opcin!

10.5.4.3. Opciones de Pginas de Encabezado


Cuando alguna de las siguientes opciones son pasadas a lpr(1), ajustan el texto que normalmente aparece en la pgina
encabezado del trabajo. Si las pginas de encabezado son suprimidas, estas opciones no tendrn efecto alguno. Vea la
seccin Pginas de Encabezado para ms informacin sobre la configuracin de las Pginas de Encabezado.
-C texto
Reemplazar el nombre del host del encabezado con este texto. Normalmente el nombre del host es el nombre
del host del cual se esta imprimiendo.
-J texto
Reemplazar el nombre del trabajo en el encabezado con este texto. Normalmente el nombre del trabajo es el
nombre del primer fichero del trabajo, o stdin si esta imprimendo de la entrada estandar.
-h
No imprimir pgina de encabezado.
Nota: En algunos sitios esta opcin puede no tenere efecto alguno, debido al metodo usado para generar
las pginas de encabezado. Vea la seccin Pginas de Encabezado para ms detalles.

10.5.5. Administracin de la Cola de Impresin de LPD


Como administrador de sus impresoras, usted deber instalarlas, configurarlas, y probarlas. Con el comando lpc(8)
usted podr interactuar con las impresoras de una forma ms completa. Con lpc(8) usted podr

136

Captulo 10. Imprimiendo

Iniciar y detener las impresoras

Habilitar y deshabilitar sus trabajos pendientes

Modificar el orden de los trabajos pendientes.

Primero, una nota de terminologa: si una impresora es detenida, no podr contar con una cola de trabajos
pendientes. Los usuarios podrn enviar sus trabajos, que quedarn en espera hasta que la impresora se iniciada o su
cola de trabajos pendientes sea purgada.
Si la cola de trabajos pendientes es deshabilitada, ningun usuario (excepto root) podr enviar trabajos a la
impresora. Una cola de trabajos pendientes habilitada, permitir el envio de trabajos. Una impresora puede ser
iniciada para una cola de trabajos que esta deshabilitada, en cuyo caso continuar imprimiendo los trabajos de la cola
de trabajos pendientes, hasta que ya no exista ninguno.
En general, usted debe de contar con privilegios de root para hacer uso del comando lpc(8). Los usuarios comunes
solo pueden usar lpc(8) para verificar el estatus de una impresora y para reiniciar una impresora detenida.
Aqui tenemos un resumen de los comandos de lpc(8). La mayor parte de estos comandos usan el argumento
nombre-impresora para indicarle en cual debe operar. Como este argumento puede usar all, para indicarle que
opere en todas las impresoras listadas en el fichero /etc/printcap.
abort nombre-impresora

Cancelar el trabajo actual y detener la impresora. Los usuarios podrn aun enviar sus trabajos si la cola de
pendientes esta habilitada.
clean nombre-impresora

Eliminar ficheros viejos del directorio de cola de impresin. Ocasionalmente, los ficheros que ya han sido
impresos no son eliminados correctamente por LPD, particularmente si hubo errores durante la impresin o si
se realizaron otros trabajos administrativos durante la misma. Este comando localiza ficheros que no pertenecen
al directorio y los elimina.
disable nombre-impresora

Deshabilita la cola de pendientes para nuevos trabajos. Si la impresora esta activa, se continuan imprimiendo los
trabajos en la cola de pendientes. El superusuario (root) siempre podr enviar trabajos, incluso cuando se use
esta opcin.
Este es un comando til cuando se esta probando una nueva impresora o instalando un filtro: deshabilitar la cola
de pendientes y enviar los trabajos como root. Otros usuarios no podrn enviar trabajos, hasta que la impresora
haya sido configurada correctamente y se re-habilite la cola de pendientes, con el comando enable.

down nombre-impresora mensaje

Usar el comando down para una impresora, equivale a usar el comando disable seguido del comando stop.
El mensaje que se ingrese, aparecer como el estatus de la impresora, cada vez que un usuario verifique su
estatus con lpq(1) o con lpc status.
enable nombre-impresora

Habilitar la cola de pendientes. Los usuarios pueden enviar sus trabajos pero la impresora no imprimira nada
hasta que se inicializada.

137

Captulo 10. Imprimiendo


help nombre-del-comando

Mostrar la ayuda del comando nombre-del-comando. Si no se indica el nombre-del-comando, se


muestra un resumen de los comandos disponibles.
restart nombre-impresora

ReIniciar la impresora. Los usuarios comunes pueden usar esta opcin en caso de que por alguna razn LPD se
paralice, pero no pueden iniciar una impresora detenida con algunos de los comandos stop o down. El
comando restart es equivalente a ejecutar abort seguido del comando start.
start nombre-impresora

Iniciar la impresora. La impresora comenzar a imprimir los trabajos en la cola de pendientes.


stop nombre-impresora

Detiene la impresora. La impresora terminar el trabajo actual y dejar de imprimir. Aun cuando la impresora
esta detenida, los usuarios pueden enviar sus trabajos a la cola de pendientes de la impresora.
topq nombre-impresora trabajo-o-usuario

Modificar el orden de la cola de pendientes de la impresora nombre-impresora, colocando los trabajos con
el identificador trabajo o que pertenecen al usuario usuario, en primer lugar de la cola. Para este comando
no puede hacer uso de la opcin all en lugar de nombre-impresora.
up nombre-impresora

Usar el comando up en una impresora; es lo opuesto al comando down. Equivalente a start seguido del
comando enable.
lpc(8) acepta estos comandos desde la lnea de comandos. Si no ingresa aglun comando, lpc(8) entra en modo
interactivo, donde puede ingresar los comandos hasta que teclee exit, quit o fin-del-archivo (EOF).

10.6. Alternativas al Sistema de Impresin Estndar


Si ha estado leyendo este manual desde el principio, para este momento usted ha aprendido practicamente todo lo
que debe saber del sistema LPD que viene con FreeBSD. Y ha podido observar algunas de sus debilidades, lo que
naturalmente nos lleva a la pregunta: Qu otros sistema de impresin existen (y que trabajen bajo FreeBSD)?.
LPRng
LPRng, que presumiblemente significa LPR: the Next Generation (LPR: la Siguiente Generacin), es PLP
completamente hecho de nuevo. Patrick Powell y Justin Mason (el encargado principal de PLP) colaboraron en
crear LPRng. El principal sitio de LPRng es http://www.astart.com/lprng/LPRng.html.

10.7. Resolucin de Problemas


Una vez que hizo la simple prueba con lptest(1), puede ser que haya obtenido uno de los siguientes resultados, en vez
de la correcta impresin:

138

Captulo 10. Imprimiendo


Trabajo, despus de un tiempo; o no expulso completamente la hoja.
La impresora llevo a cabo la impresin, pero espero bastante o bien finalmente no hizo nada. De hecho, es
posible que haya sido necesario presionar en su impresora el botn para poner a la impresora EN LINEA o bien
de ALIMENTACION DE PAGINA.
Si este es el caso, su impresora esperaba a ver si exisitian ms datos para imprimir, antes de comenzar con la
impresin. Para arreglar este problema puede hacer que su filtro de texto envie al final un caracter de
ALIMENTACION DE PAGINA o cualquiera que sea necesario para la impresora. Esto normalmente es
suficiente para que la impresora imprima todos los datos restantes en su buffer interno. Tambin es
recomendable verificar que cada trabajo enviado se haya impreso en una pgina completa, de tal forma que el
siguiente trabajo no comience en la mitad de la ltima pgina del trabajo previo.
El siguiente ShellScript se puede utilizar como reemplazo de /usr/local/libexec/if-simple, para
imprimir un caracter de alimentacin de pgina:
#!/bin/sh
#
# if-simple - Filtro de texto simple para lpd
# Instalado en /usr/local/libexec/if-simple
#
# Simplemente manda la entrada a la salida estandar.
# Ignora los argumentos del filtro.
# Escribe un caracter de alimentacion de pagina (\f) despues de imprimir.
/bin/cat && printf "\f" && exit 0
exit 2

Se produce un efecto de escalera.


Usted obtiene la siguiente impresin:
!"#$%&()*+,-./01234
"#$%&()*+,-./012345
#$%&()*+,-./0123456

Usted es otra vctima del efecto de escalera, causada por el conflicto de interpretacin, sobre cual caracter indica
la nueva lnea. Los sistemas operativos estilo-Unix, usan un caracter sencillo: cdigo ASCII 10, alimentacin de
lnea (LF). MS-DOS, OS/2 y otros utilizan un par de caracteres, cdigo ASCII 10 y cdigo ASCII 13 (retorno
de carrete o CR). Muchas impresoras usan la forma de MS-DOS, para representar los saltos de lneas.
Cuando usted imprime con FreeBSD, su texto hace uso del caracter de nueva lnea. La impresora, una vez que
detecta el caracter de nueva lnea, avanza el papel una lnea, pero manteniendo la misma posicin horizontal,
para la impresin del siguiente caracter. Para eso es el caracter de retorno de carrete: para mover la posicin
horizontal al borde izquierdo del papel.
Aqui tenemos lo que FreeBSD desea que haga su impresora:
Impresora recibe CR

Impresora imprime CR

Impresora recibe LF

Impresora imprime CR + LF

Aqui tenemos algunas formas de llevar esto a cabo:

139

Captulo 10. Imprimiendo

Usar los botones de configuracin de la impresora o el panel de control, para modificar su interpretacin de
estos caracteres. Verifique el manual de su impresora para ver como hacer esto.
Nota: Si cuenta con otro sistema operativo en su maquina, ademas de FreeBSD, quizs sea necesario
reconfigurar la impresora, para usar la interpretacin de los caracteres de CR y LF del otro sistema
operativo. Puede escoger una de las otras soluciones que se comentan ms adelante.

Puede hacer que el controlador serial de FreeBSD, automticamente convierta LF en CR+LF. Claro esta, que
esta alternativa funciona solo en impresoras seriales. Para habilitar esta habilidad, establezca el bit CRMOD, en
la caracterstica fs del fichero /etc/printcap para la impresora.

Envie un cdigo de escape a la impresora para que temporalmente de un tratamiento diferente a los caracteres
LF. Consulte el manual de su impresora para ver los cdigos de escape soportados por su impresora. Una vez
que localice el cdigo correcto, modifique su filtro de texto, para que se envie este cdigo primero y despus
el trabajo a imprimir.
Aqui tenemos un ejemplo de un filtro de texto, para impresoras compatibles con PCL de Hewlett-Packard.
Este filtro hace que la impresora trate a LF como LF + CR; posteriormente envia el trabajo de impresin; y
por ltimo envia un caracter de alimentacin de pgina, para expulsar la ltima pgina del trabajo. Este filtro
debiese funcionar con casi todas las impresoras Hewlett Packard.
#!/bin/sh
#
# hpif - Filtro de texto simple para lpd e impresoras compatibles con HP-PCL
# Instalado en /usr/local/libexec/hpif
#
# Pasa la entrada estandar a la salida estandar.
# Ignora todos los argumentos del filtro.
# Le indica a la impresora que debe tratar a LF como si fuera CR+LF.
# Expulsa la ultima pagina cuando ha terminado.
printf "\033&k2G" && cat && printf "\033&l0H" && exit 0
exit 2

Aqui tenemos un ejemplo de /etc/printcap para un host llamado orchid. Solo cuenta con una impresora
conectada al puerto paralelo, una Hewlett Packard LaserJet 3Si, llamada teak. Se esta usando el script
anterior como filtro de texto:
#
# Fichero /etc/printcap del host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:

140

Captulo 10. Imprimiendo


Cada lnea se sobreescribe.
La impresora no avanza ninguna lnea. Todas las lneas son impresas una sobre otra en un solo rengln.
Este problema es lo opuesto al efecto de escalera, descrito anteriormente, y es poco comn. En algun lugar,
los caracteres de LF, que usa FreeBSD para indicar un salto de lnea, la impresora los identifica como CR, de tal
forma que regresa el punto de impresin al borde del papel, pero sin saltar al siguiente rengln.
Utilice los botones de la impresora o el panel de control, para forzar a que la impresora interprete de la siguiente
manera los caracteres LF y CR:
Impresora recibe

Impresora imprime

CR
LF

CR
CR + LF

Al imprimir se pierden caracteres.


Mientras imprime, algunos caracteres no son impresos en cada lnea. El problema puede agravarse conforme se
usa la impresora, perdiendo ms y ms caracteres.
El problema es que la impresora no puede mantener el ritmo al cual la computadora envia los datos por medio
de la lnea serial (este problema no se debiese presentarse en impresoras conectadas al puerto paralelo). Existen
dos formas de solucionar este problema:

Si la impresora cuenta con soporte para el control de flujo XON/XOFF, haga que FreeBSD lo utilice, al
especificar el bit TANDEM en la caracterstica fs.

Si la impresora cuenta con soporte para el control de flujo externo (carrier), especifique el bit MDMBUF en la
caracterstica fs. Asegurese de que el cable utilizado para conectar la impresora a la computadora cuenta con
soporte para este tipo de control de flujo.

Si la impresora no cuenta con soporte para el control de flujo, use una combinacin de los bits NLDELAY,
TBDELAY, CRDELAY, VTDELAY y BSDELAY en la caracterstica fs, para aadir el retraso apropiado en la
cadena de informacin enviada a la impresora.

Solo imprime basura.


La impresora imprime lo que parece ser basura al azar, pero no el texto deseado.
Esto normalmente es otro sntoma de una configuracin incorrecta en los parmetros de comunicacin de una
impresora serial. Verifique el rango de bps en la caracterstica br y la paridad de bits en fs y fc; asegurese de
que la impresora use los mismos datos especificados en el fichero /etc/printcap.

No sucede nada.
Si no sucede nada, probablemente el problema es con FreeBSD y no con su hardware. Incluya un fichero de
registros (log), con la caracterstica lf, en la entrada de su impresora en el fichero /etc/printcap. Por
ejemplo, aqui esta la entrada de rattan, con la caracterstica lf :
rattan|line|diablo|lp|Diablo 630 Line Printer:\

141

Captulo 10. Imprimiendo


:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:\
:lf=/var/log/rattan.log

Posteriormente, intente imprimir de nuevo. Verifique el fichero de registros (en nuestro ejemplo,
/var/log/rattan.log) para buscar cualquier mensaje de error que aparezca. Basado en ese mensaje trate de
resolver el problema.
Si no especifica la caracterstica lf, entonces LPD utilizar /dev/console como la salida por default.

142

Captulo 11. Discos


Escrito por David OBrien <obrien@FreeBSD.org > 26 de Abril de 1998
Supongamos que queremos aadir un nuevo disco SCSI a una mquina que en la actualidad slo tiene un nico
disco. En primer lugar, apague el ordenador e instale el disco siguiendo las instrucciones del fabricante del
ordenador, de la controladora y del propio disco. A causa de la diversidad de procedimientos para hacer esto, los
detalles exceden el mbito de este documento.
Entre en el sistema como el usuario root. Una vez que haya instalado el disco, inspeccione
/var/run/dmesg.boot para asegurarse de que el nuevo disco ha sido encontrado. Continuando con nuestro
ejemplo, el disco recientemente aadido ser da1 y lo montaremos en /1 (si est usted aadiendo un disco IDE,
sustituya da por wd).
Como FreeBSD funciona en ordenadores compatibles con el IBM-PC, debe tener en cuenta las particiones de la
BIOS del PC. Estas son diferentes de las particiones tradicionales de tipo BSD. Un disco de PC puede tener hasta
cuatro entradas para particiones de tipo BIOS. Si el disco va a ser realmente dedicado a FreeBSD, puede usted
emplear el modo dedicado (dedicated). En otro caso, FreeBSD tendr que alojarse en una de las particiones de la
BIOS. FreeBSD llama a las particiones de la BIOS slices, para no confundirlas con las particiones tradicionales de
tipo BSD. Tambin puede usted usar slices en un disco que est dedicado a FreeBSD, pero en un ordenador que
adems tenga otro sistema operativo instalado. Esto es as para no confundir a la utilidad fdisk del otro sistema
operativo.
En el caso de utilizar slices, el disco ser aadido como /dev/da1s1e. Esto se lee del siguiente modo: disco SCSI,
unidad nmero 1 (segundo disco SCSI), slice 1 (particin 1 de la BIOS) y particin e de tipo BSD. En el caso de
utilizar el modo dedicado, el disco ser aadido, simplemente, como /dev/da1e.

11.1. Utilizando Sysinstall


Puede utilizar /stand/sysinstall para crear y etiquetar particiones en un disco nuevo usando sus intuitivos
mens. Bien entre en el sistema como el usuario root, o bien utilice el comando su. Ejecute /stand/sysinstall
y seleccione el men Configure. Dentro del men FreeBSD Configuration Menu, baje hasta seleccionar la
opcin Partition. A continuacin, se le debera mostrar una lista de los discos duros instalados en su sistema. Si
no aparece da1, deber usted comprobar la instalacin fsica del disco y la salida del comando dmesg almacenada en
el archivo /var/run/dmesg.boot.
Seleccione da1 para pasar al editor de particiones FDISK Partition Editor. Pulse A para usar el disco entero
para FreeBSD. Cuando se le pregunte si quiere mantener el disco compatible con la instalacin de algn sistema
operativo en el futuro (remain cooperative with any future possible operating systems) conteste afirmativamente
(YES). Escriba los cambios en el disco pulsando W. Ahora salga del editor FDISK pulsando q. A continuacin se le
preguntar acerca del sector de inicio del disco (MBR, Master Boot Record). Como est usted aadiendo un disco a
un sistema que ya se encuentra en funcionamiento, seleccione la opcin None (esta opcin deja el MBR intacto).
A continuacin llegar al Disk Label Editor. Aqu es donde crear las particiones de estilo tradicional BSD. Un
disco puede tener hasta ocho particiones, designadas a-h. Algunas de las etiquetas de las particiones tienen usos
especiales. La etiqueta a se utiliza para la particin raz (/, root partition). Por tanto, slo su disco de sistema (es
decir, aquel desde el cual arranca el sistema) debera tener una particin a. La etiqueta b se utiliza para particiones de
swap (memoria virtual) y es posible tener varios discos con particiones de swap. La etiqueta c representa a todo el
disco utilizado en modo dedicado, o a todo el slice de FreeBSD si es que utilizamos el modo slice. Las restantes
etiquetas son para uso general.

143

Captulo 11. Discos


El editor de etiquetas (de particiones) de Sysinstall utiliza la etiqueta e para particiones que no son root ni swap.
Dentro del editor de etiquetas de particiones, cree un nico sistema de archivos pulsando C. Cuando se le pregunte si
ser un sistema de archivos (FS, file system) o swap, elija FS e indique un punto donde montarlo (por ejemplo,
/mnt). Cuando aada un disco una vez instalado FreeBSD, Sysinstall no crear la entrada correspondiente en
/etc/fstab, por lo que no resulta importante el punto que indique para montar el disco.
En este momento, ya puede escribir en el disco la informacin de las particiones y sus etiquetas y crear un sistema de
archivos. Para ello pulse W. Ignore cualquier error de Sysinstall que le informe de que no pudo montar la nueva
particin. Ya puede salir del editor de etiquetas de particiones y de Sysinstall.
El ltimo paso consiste en editar /etc/fstab para aadir una entrada para el nuevo disco.

11.2. Usando la lnea de comandos


11.2.1. * Utilizando Slices

11.2.2. Modo Dedicado


Si no va a compartir el nuevo disco con otro sistema operativo, puede usar el modo dedicado (dedicated).
Recuerde que este modo puede confundir a los sistemas operativos de Microsoft; no obstante, estos no causarn
ningn dao. En cambio, el OS/2 de IBM se apropiar de cualquier particin que encuentre y que no reconozca.
#
#
#
#
#
#
#

dd if=/dev/zero of=/dev/rda1 bs=1k count=1


disklabel -Brw da1 auto
disklabel -e da1 # creamos la particin e
newfs -d0 /dev/rda1e
mkdir -p /1
vi /etc/fstab # aadimos una entrada para /dev/da1e
mount /1

Un mtodo alternativo resulta:


#
#
#
#
#
#

dd if=/dev/zero of=/dev/rda1 count=2


disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin
newfs /dev/rda1e
mkdir -p /1
vi /etc/fstab # aadimos una entrada para /dev/da1e
mount /1

144

Captulo 11. Discos

11.3. * Discos no tradicionales


11.3.1. * Discos Zip

11.3.2. * Discos Jaz

11.3.3. * Discos Sequest

145

Captulo 12. Localizacion


Localizacion

146

Captulo 13. Sonido


Contributed by Moses Moore.

13.1. Sinpsis
FreeBSD soporta una amplia variedad de tarjetas de sonido, lo que permite disfrutar de sonido de alta fidelidad en su
sistema. sto incluye la posibilidad de grabar y reproducir archivos de audio tanto en los formatos MPEG Audio
Layer 3 (MP3), WAV y Ogg Vorbis, as como muchos otros. La Coleccin de Ports de FreeBSD contiene tambin
aplicaciones que le permitirn editar audio previamente grabado, aadir efectos de sonido y controlar dispositivos
MIDI.
Tras leer ste captulo usted debera saber:

Cmo identificar su tarjeta de sonido

Cmo configurar su sistema de modo que su tarjeta de sonido sea reconocida.

Confirmar el funcionamiento de su tarjeta usando herramientas de muestreo.

Cmo enfrentarse a problemas de configuracin de sonido.

Cmo reproducir y crear archivos MP3.

Cmo convertir pistas de audio CD en archivos de datos.

Antes de leer ste captulo debera:

Saber configurar e instalar un nuevo kernel (Captulo 8).

13.2. Identificar el Dispositivo Correcto


Antes de empezar, debera conocer el modelo de su tarjeta, el chip que usa y si es PCI o ISA. FreeBSD soporta una
amplia gama de tarjetas PCI e ISA. Si no encuentra su tarjeta en la siguiente lista consulte la pgina pcm(4) del
manual. sta no es una lista completa pero incluye muchas de las tarjetas ms comunes.

Crystal 4237, 4236, 4232, 4231

Yamaha OPL-SAx

OPTi931

Ensoniq AudioPCI 1370/1371

ESS Solo-1/1E

NeoMagic 256AV/ZX

Sound Blaster Pro, 16, 32, AWE64, AWE128, Live

Creative ViBRA16

Advanced Asound 100, 110, and Logic ALS120

147

Captulo 13. Sonido

ES 1868, 1869, 1879, 1888

Gravis UltraSound

Aureal Vortex 1 or 2

El driver a usar en el kernel depende del tipo de tarjeta que vaya a usar. La seccin siguiente contiene informacin
sobre qu aadir a la configuracin del kernel que necesita.

13.2.1. Tarjetas Creative, Advance, y ESS Sound


Si tiene una de las siguientes tarjetas debe aadir:
device pcm

a su archivo de configuracin del kernel. Si tiene una tarjeta ISA PnP tambin tendr que aadir:
device sbc

Para una tarjeta ISA non-PnP aada:


device pcm
device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15

al archivo de configuracin de su kernel. Los detalles de configuracin de arriba son por defecto. Debera cambiar la
IRQ u otros parmetros para hacerlos coincidir con su tarjeta. Vea la pgina sbc(4) del manual para ms informacin.
Nota: La Sound Blaster Live no est soportada en FreeBSD 4.0 salvo que se instale un parche, cosa que est
fuera del cometido de sta seccin. Recomendamos que se actualice a la ltima versin -STABLE antes de
intentar usar sta tarjeta.

13.2.2. Tarjetas Gravis UltraSound


Para una tarjeta PnP ISA, necesitar aadir:
device pcm
device gusc

al archivo de configuracin de su kernel. Si tiene una ISA non-PnP necesitar aadir:


device pcm
device gus0 at isa? port 0x220 irq 5 drq 1 flags 0x13

al archivo de configuracin de su kernel. Puede necesitar cambiar la IRQ u otro tipo de datos para que ajusten con su
tarjeta. Vea la pgina gusc(4) del manual para ms informacin.

148

Captulo 13. Sonido

13.2.3. Tarjetas Crystal Sound


Para tarjetas Crystal necesitar aadir:
device pcm
device csa

al archivo de configuracin de su kernel.

13.2.4. Soporte Genrico


Para tarjetas PnP ISA o tarjetas PCI, necesitar aadir:
device pcm

al su archivo de configuracin de su kernel. Si tiene una tarjeta ISA non-PnP que no tenga un bridge driver tendr
que aadir:
device pcm0 at isa? irq 10 drq 1 flags 0x0

a su archivo de configuracin del kernel. Puede necesitar cambiar la IRQ u otros parmetros para que ajusten con su
tarjeta.

13.2.5. Tarjetas de Sonido integradas


Algunos sistemas con dispositivos de sonido integrados en la placa base pueden requerir la siguiente opcin en el
fichero de configuracin del kernel:
options PNPBIOS

13.3. Recompilar el Kernel


Una vez conseguido el archivo de configuracin del kernel que necesita debe recompilar el kernel. Por favor consulte
el captulo Seccin 8.3 del manual para ms informacin.

13.4. Creando y Probando Nodos de Dispositivoss


Tras reiniciar, acceda al sistema y escriba dmesg | grep pcm tal y como se muestra aqu:
# dmesg | grep pcm
pcm0: SB16 DSP 4.11

on sbc0

La salida que muestre su sistema puede ser diferente. Si no hay dispositivos pcm en la salida del comando hay algn
error en los pasos previos. Si le sucede sto vuelva a su archivo de configuracin del kernel y asegrese de que ha
elegido el dispositivo adecuado. Consulte la seccin de problemas para opciones adicionales.

149

Captulo 13. Sonido


Si al ejecutar el comando anterior encontr pcm0 ejecute lo siguiente como root:
# cd /dev
# sh MAKEDEV snd0

Si encontr pcm1 haga igual que que en el paso anterior reemplazando snd0 con snd1.
Nota: Los comandos anteriores no van a crear dispositivos /dev/snd!

MAKEDEV crear un grupo de device nodes, incluyendo:

Dispositivo

Descripcin

/dev/audio

dispositivo de audio compatible con SPARC


Dispositivo para voz digital

/dev/dsp
/dev/dspW
/dev/midi
/dev/mixer
/dev/music
/dev/sequencer
/dev/pss

Como /dev/dsp pero con muestreo de 16 bits


Dispositivo midi de acceso Raw
Dispositivo Mezclador
Interfaz para secuenciador de nivel 2
Dispositivo secuenciador
Interfaz para dispositivos programables

Si todo ha ido bien debera tener una tarjeta de sonido funcionando. Si no es as lea la siguiente seccin.

13.5. Problemas Comunes


1. Recibo un error "unsupported subdevice XX" !
Uno o ms nodos de dispositivos no se crearon correctamente. Repita los pasos anteriores.
2. Tengo un error "sb_dspwr(XX) timed out" !
El puerto I/O que ha puesto no es el correcto.
3. Tengo un error "bad irq XX"!
La IRQ que ha puesto no es la correcta. Asegrese de que la IRQ que pone la la IRQ de la tarjeta son la misma.
4. Me da un error nombre_del_error>xxx: gus pcm not attached, out of memory. Por qu me pasa
sto?
No hay memoria libre que se pueda asignar a ste dispositivo.

150

Captulo 13. Sonido

13.6. Audio MP3


Contributed by Chern Lee.
El formato MP3 (MPEG Layer 3 Audio) se aproxima mucho a la calidad de sonido del CD, as que no hay razn
para privar a su sistema FreeBSD de disfrutar de l.

13.6.1. Reproductores de MP3


Con mucho el reproductor de MP3 ms popular para XFree86 es XMMS, (X Multimedia System). Puede usar skins
de WinAmp en XMMS puesto que el interfaz grfico es casi idntico al de la aplicacin de Nullsoft. XMMS
tambin tiene soporte nativo de plugins.
XMMS puede instalarse desde el port audio/xmms o como package.
El interfaz de XMMS es intuitivo e incluye lista de canciones, ecualizador grfico y muchas ms cosas. Aquellos que
conozcan WinAmp encontrarn XMMS fcil de usar.
Existe una alternativa; el port audio/mpg123 es un reproductor MP3 en lnea de comandos.
mpg123 puede usarse indicndole un dispositivo de sonido concreto y el archivo MP3 en la lnea de comandos como
se muestra aqu:
# mpg123 -a /dev/dsp1.0 Grandesxitos-DeAlguno.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See README for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!

Playing MPEG stream from BT - Grandesxitos-DeAlguno.mp3 ...


MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
/dev/dsp1.o debe reemplazarse por el dispositivo dsp que tenga en su sistema.

13.6.2. Extraccin de Pistas de CD Audio


Antes de convertir una pista o todo un CD a MP3 la informacin de audio del CD debe pasar al disco duro. sto se
hace convirtiendo los datos raw CDDA (CD Digital Audio) en archivos WAV.
El programa cdda2wav, que es parte del port sysutils, se usa para la extraccin del audio de los Discos Compactos y
de la informacin asociada con ste.
Con el CD en la unidad, el siguiente comando (utilizado como root) convertir un CD entero en archivos WAV
individuales, uno por pista:
# cdda2wav -D 0,1,0 -B

La opcin -D 0,1,0 indica el dispositivo SCSI 0,1,0, que se corresponde con la salida del comando cdrecord
-scanbus.

151

Captulo 13. Sonido


Para extraer pistas individuales utilice la opcin -t como se v aqu:
# cdda2wav -D 0,1,0 -t 7

sta opcin trata la sptima pista del CD de audio. Para tratar un rango de pistas, por ejemplo las pistas de la uno a la
siete, especifique el rango:
# cdda2wav -D 0,1,0 -t 1+7

cdda2wav slo soporta unidades CDROM SCSI. Para unidades IDE utilice audio/cdd o alguna otra entre las
variadas aplicaciones que hay en la coleccin de ports de audio.

13.6.3. Creando Archivos MP3


Hoy da el codificador MP3 por excelencia es el lame. Lame Puede encontrarse en audio/lame en el rbol de ports.
Usando archivos WAV previamente extrados, el siguiente comando convierte audio01.wav en audio01.mp3:
# lame -h -b 128 \
--tt "Ttulo de Copla o Cantar" \
--ta "Grupo, Solista o Coral Sinfnica" \
--tl "Ttulo del lbum" \
--ty "2001" \
--tc "Autor de la extraccin y paso a MP3" \
--tg "Genre" \
audio01.wav audio01.mp3

Los 128 kbits pasan por ser el estndar de facto usado en el ratio de bits de los MP3 al uso. Muchos prefieren
mayores calidades, 160 e incluso 192. A mayor ratio de bits, mayor espacio requerido en el disco --pero la calidad
tambin ser mayor--. La opcin -h utiliza el modo ms calidad pero algo ms lento. Opciones que empiezan por
--t indican etiquetas ID3, que suelen inclur informacin sobre la cancin que se incluye en el archivo MP3. Puede
encontrar ms opciones consultando el manual de lame.

13.6.4. Decodificando MP3


Para grabar un CD de audio desde archivos MP3 debe convertir stos a un formato WAV no comprimido. Tanto
XMMS como mpg123 soportan la conversin de MP3 a un formato de fichero no comprimido.
Escribiendo a disco desde XMMX:
1.

Ejecute XMMS.

2.

Botn derecho del ratn en la ventana para acceder al men de XMMS.

3.

Elija Preferences en Opctions.

4.

Cambie Output Plugin a Disk Writer Plugin.

5.

Pulse Configure.

6.

Elija un directorio en el que guardar los archivos.

152

Captulo 13. Sonido


7.

Cargue el archivo MP3 en XMMS normalmente, con el volumen al 100% y las opciones de ecualizacin
desactivadas.

8.

Pulse Play parecer que XMMS est reproduciendo msica pero no sonar nada. Lo que est haciendo es
volcar el MP3 a un archivo.

9.

No olvide volver a poner el Output Plugin como estaba antes cuando quiera volver a escuchar MP3.

Escribiendo la salida en mpg123:


1.

Escriba mpg123 -s audio01.mp3




audio01.pcm

XMMS genera un archivo en formato WAV, mientras que mpg123 convierte MP3 a datos audio raw PCM. Ambos
formatos pueden usarse con cdrecord o burncd para crear un CDROM de audio.
Consulte "creating-cds" para ms informacin acerca del uso de grabadoras de CD en FreeBSD.

153

Captulo 14. Comunicaciones Serie


Comunicaciones Serie

154

Captulo 15. PPP y SLIP


Reestructurado, reorganizado, y actualizado por Jim Mock.

15.1. Sinpsis
FreeBSD cuenta con un gran numero de formas para conectar una computadora a otra. Para establecer una red o una
coneccin a Internet por medio de un mdem, o bien, permitir a otras computadoras conectarse por medio de este, se
requiere del uso de PPP o SLIP. Este captulo describe en detalle como configurar los servicios de comunicacin para
llevar esto a cabo.
Una vez que haya leido este captulo, usted sabr:

Como configurar User PPP.

Como configurar Kernel PPP.

Como configurar PPPoE (PPP over Ethernet*).

Como configurar PPPoA (PPP over ATM*).

Como instalar y configurar un cliente y servidor SLIP.

N. de T.: En estricto sentido esto se refiere a contar con la conexin por medio de un dispositivo Ethernet, o bien
ATM, pero debido a que usted encontrar estos metodos en su sistema, como PPPoE o bien PPPoA, se han dejado
los conceptos literales del documento original. Espero que no sea un problema.
Antes de leer este captulo, usted debiese:

Estar familiarizado con la terminologa bsica de redes.

Comprender lo bsico y el propsito de una coneccin por mdem SLIP y/o PPP.

Puede ser que usted se pregunte cual es la principal diferencia entre User PPP y kernel PPP. La respuesta es sencilla;
el mtodo User PPP procesa la entrada y salida de datos en userland (ver nota siguiente) en lugar de hacerlo en el
kernel. Esto es algo desgastante, en trminos del manejo de datos entre userland y el kernel, pero permite, por
mucho, un mejor desempeo e implementacin de PPP. User PPP utiliza el dispositivo tun para comunicarse con el
mundo exterior, mientras que kernelppp, utiliza el dispositivo ppp.
En el desarrollo de este captulo, se har referencia a User PPP, simplemente como ppp, a menos de que sea
necesaria hacer una distincin entre este y otro software de PPP, como es el caso de pppd. As mismo, si en el
desarrollo del captulo no se seala lo contrario, todos los comandos explicados, debern ser ejecutados como root.
N. de T. : Cuando se habla de "userland" se hace referencia a todo aquello que *no* forma parte del kernel y que en
el caso de cdigo de programa, se ejecuta en modo usuario, ya que el cdigo del kernel se ejecuta en modo kernel,
supervisor, o bien en modo privilegiado de ejecucin. En lo sucesivo este trmino ser utilizado tal cual.

155

Captulo 15. PPP y SLIP

15.2. Utilizando User PPP


Originalmente contribuido por Brian Somers. Con apoyo de Actualizado y reestructurado porNik Clayton, Dirk
Frmberg, Peter Childs, y Tom Rhodes.

15.2.1. User PPP


15.2.1.1. Aclaraciones
Este documento asume que usted cuenta con lo siguiente:

Una cuenta activa con un Proveedor del Servicio de Internet (ISPpor sus siglas en ingles), que usted utliza para
conectarse.

Adicionalmente, un mdem o algn otro dispositivo, conectado a su sistema, y configurado correctamente, que le
permite realizar la conexin con su ISP.

El nmero telefnico de su proveedor.

Su nombre de usuario y contrasea. (Ya sea un nombre de usuario y/o contrasea estilo UNIX, o bien para uso por
medio de PAP o CHAP)

La direccin IP de uno o ms servidores de nombres (DNS). Normalmente, estos sern provistos por su proveedor
de Internet. Si su proveedor no le ha dado esta informacin, puede utilizar la opcin enable dns en su fichero
ppp.conf, para indicarle a ppp que configure el DNS por usted. Esta caracterstica depende del sistema de
negociacin de DNS que mantenga su proveedor de Internet.

La siguiente informacin puede ser que haya sido provista por su proveedor de servicios de internet, pero no es
completamente necesaria:

La direccin IP del gateway (pasarela de salida) de su PSI. El gateway es la mquina a la cual usted se conectar y
ser la ruta por default. Si usted no cuenta con esta informacin, puede inventar uno y al intentar conectarse, el
servidor de su PSI, este nos indicar cual es el valor correcto.
Esta direccin IP, es referida por ppp como HISADDR.

La mascara de red (netmask) que debe utilizar. Si su PSI no le ha provisto de una, puede utilizar sin problema
255.255.255.255.

Si su PSI, le ha provisto de una direccin de IP esttica y un nombre de host, puede capturarla. De otra forma
podemos dejar que el servidor asigne cualquier IP que corresponda.

Si usted no cuenta con alguna de la informacin que hemos comentado, le recomendamos contactar con su PSI para
requerirla.
Nota: En el transcurso de la presente seccin, algunos ejemplos muestran el contenido de archivos de
configuracin los cuales presentan una numeracin. Estos nmeros sirven como ayuda y referencia a cada
lnea, pero estos no deben de estar presentes en el archivo original. Una sangra adecuada, as como espacios
adecuados, tambin son de suma importancia.

156

Captulo 15. PPP y SLIP

15.2.1.2. Preparando el Kernel


Como se comento anteriormente, la aplicacin ppp utiliza el dispositivo tun. Si este dispositivo no ha sido
compilado dentro del kernel, ppp lo cargar como mdulo cuando sea requerido. El dispositivo tun es dinmico, de
tal forma que se generara de acuerdo a la demanda que tenga (usted no esta limitado por el kernel).
Nota: Vale la pena hacer notar que el controlador tun, crea los dispositivos de acuerdo a sus necesidades, por lo
que el comando ifconfig -a, no necesariamente mostrar los dispositivos tun.

15.2.1.3. Verificando el dispositivo tun


Bajo circunstancias normales, la mayora de los usuarios slo utilizaran un dispositivo tun (/dev/tun0). En lo
sucesivo podemos hacer referencia a tun0 con la expresin tunN donde N es el nmero que corresponde en su
sistema.
Para instalaciones de FreeBSD que no tienen el habilitado el DEVFS la existencia de tun0 debe ser verificada (esto
no es necesario si se cuenta habilitada la opcin DEVFS ya que los nodos de dispositivos sen creados en funcin a
las necesidades).
La forma ms sencilla de verificar si el dispositivo tun0 se encuentra configurado correctamente, es la de rehacer el
dispositivo. Para hacer esto simplemente siga los siguientes pasos:
# cd /dev
# sh MAKEDEV tun0

Si usted necesita 16 dispositivos tun en su kernel, deber crearlos. Esto puede hacerse de la siguiente manera:
# cd /dev
# sh MAKEDEV tun15

15.2.1.4. Configuracin de la Resolucin de Nombres


La resolucin es la parte del sistema que busca una direccin IP en los nombres de servidores (host) y viceversa.
Puede ser configurado para que busque en "mapas" que describen la IP del servidor en uno de dos lugares, el primero
es un archivo llamado /etc/hosts. Lea hosts(5) para ms informacin al respecto. El segundo es el Servicio de
Nombres de Dominio de Internet (DNS-Internet Domain Name Service), el cual es una base de datos de distribucin.
Para mayor informacin con respecto a los DNS, referirse a dns.
La resolucin de nombres es un sistema que por medio de llamadas, realiza el mapeo de nombres, pero es necesario
inidicarle donde debe buscar la informacin. Para versiones de FreeBSD anteriores a la 5.0, esto es hecho al editar el
archivo /etc/host.conf. La versin 5.0 de FreeBSD utiliza el archivo /etc/nsswitch.conf.
15.2.1.4.1. Edicin del archivo /etc/host.conf
Para versiones de FreeBSD anteriores a la 5.0, este archivo debe contener las siguientes dos lneas (en este orden):
hosts
bind

157

Captulo 15. PPP y SLIP


Esto le indica a la resolucin que busque en primer trmino en el archivo /etc/hosts, y posteriormente en el DNS,
si el nombre no fu localizado

15.2.1.4.2. Editando el archivo /etc/nsswitch.conf


Para versiones de FreeBSD 5.0 y posteriores, este archivo debe contener, al menos, la siguiente lnea:
hosts: files, dns

Esto le indica a la resolucin de nombres, que busque en primer lugar en el archivo /etc/hosts, y en caso de que el
nombre no haya sido localizado, busque en el DNS.

15.2.1.4.3. Editando el archivo /etc/hosts


Este archivo puede contener direcciones IP, as como el nombre de las mquinas de su red local. Como mnimo debe
contar con la informacin de la mquina que correr ppp. Asumiendo que su ordenador se llama foo.bar.com con
la direccin IP 10.0.0.1, el archivo /etc/hosts debiese contener:
127.0.0.1 localhost.bar.com localhost
::1 localhost.bar.com localhost
10.0.0.1 foo.bar.com foo

Las primeras dos lneas definen el alias del localhost, como sinnimo de la maquina actual. Independientemente
de su propia direccin IP, la direccin IP en estas lneas siempre debe ser 127.0.0.1 y ::1. La ltima lnea
especifica el nombre foo.bar.com (asi como foo para acortarlo), para la direccin 10.0.0.1.
Nota: La direccin 127.0.0.1 y el nombre localhost son conocidos como direcciones "loopback" las cuales
hacen un "loopback" (salto de regreso) a la maquina local.

Si su proveedor de Internet, le asigna una direccin IP fija, asn como un nombre, y usted no lo utiliza como nombre
del host, aada esto tambin al archivo /etc/hosts.

15.2.1.4.4. Editando el archivo /etc/resolv.conf


El archivo /etc/resolv.conf, le indica a la resolucin de nombres, como comportarse. Normalmente deber de
incluir la(s) siguiente(s) lnea(s):
domain ejemplo.com
nameserver x.x.x.x
nameserver y.y.y.y

Donde x.x.x.x y y.y.y.y deben reemplazarse con las direcciones IP de los servidores DNS, de su ISP. Puede
ser que esta informacin se la hayan entregado al suscribirse o no, pero una rpida llamada a su ISP debe resolver
esto.
Tambi puede configurar su sistema, de tal forma que syslog(3) provee de un login para su coneccin por PPP. Slo
aada:
!ppp

158

Captulo 15. PPP y SLIP


*.*

/var/log/ppp.log

al fichero /etc/syslog.conf. En la mayora de los casos esto funciona bien.

15.2.1.5. Configuracin Automtica de PPP


Ambos, ppp as como pppd (la implementacin del kernel para PPP), utilizan la configuracin de los archivos
localizados en el directorio /etc/ppp. Ejemplos para ppp, pueden encontrarse en: /usr/share/examples/ppp/.
Para efecto de configurar correctamente ppp, es necesario editar varios ficheros, dependiendo de sus necesidades. La
manera en que edite dichos archivos, depende en la forma que utilice su PSI (Proveedor de Servicios de Internet)
para brindarle conexin, ya sea por medio de una direccin IP esttica o bien una IP dinmica (ya sea que cada vez
que se conecta obtiene una nueva direccin).
15.2.1.5.1. PPP y direcciones de IP estticas (fijas)
Ser necesario editar el archivo de configuracin; /etc/ppp/ppp.conf. Y deber quedar de una manera similar al
ejemplo que se describe a continuacin.
Nota: Las lneas que terminan con :, deben comenzar en la primer columna del archivo el resto de las lneas
debern utilizar sangra como se muestra, utilizando espacios o bien el tabulador. La mayor parte de la
informacin que requiere ingresar aqui, se mostro en el marcado manual anterior.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

default:
set log Phase Chat LCP IPCP CCP tun command
ident user-ppp VERSION (built COMPILATIONDATE)
set device /dev/cuaa0
set speed 115200
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
\"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
set timeout 180
enable dns
provider:
set phone "(123) 456 7890"
set authname foo
set authkey bar
set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
set timeout 300
set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0
add default HISADDR

Lnea 1:
Identifica la entrada por omisin a utilizar. Los comandos descritos en esta parte, sern ejecutados de manera
automtica cuando se ejecute ppp.

159

Captulo 15. PPP y SLIP


Lnea 2:
Habilita los parmetros de acceso. Cuando la configuracin trabaja sin problemas, esta lnea deber quedar de la
siguiente forma:
set log phase tun

para efecto de evitar avisos masivos del sistema (logs).


Lnea 3:
Esta lnea le indica a PPP como identificarse ante el puerto. PPP se identifica, si tiene algun problema para
efecto de establecer la conexin, en esta identificacin, PPP provee de cierta informacin que puede resultar util
para detectar el probelma.
Lnea 4:
Le indica a PPP cual es el dispositivo a utilizar para realizar la conexin, o bien al que esta conectado el mdem.
El dispositivo COM1 es /dev/cuaa0 y COM2 es /dev/cuaa1.
Lnea 5:
Establece la velocidad a utilizar en la conexin. Si la velocidad de 115200 no trabaja correctamente (la cual
deberia con cualquier mdem normal), intente con una velocidad inferior, como puede ser 38400.
Lneas 6 y 7:
La cadena de inicializacin. El modo User PPP, utiliza y espera enviar-recibir, la informacin utilizando una
sintaxis similar a la descrita en el programa chat(8). Favor de consultar la pgina de ayuda para conocer las
opciones de este lenguaje.
Nota: Este comando continua en la siguiente lnea, para facilitar su lectura. Cualquier comando en el archivo
ppp.conf puede utilizar este formato, siempre y cuando el ltimo caracter de la lnea sea una diagonal
invertida "\".

Lnea 8:
Establece el tiempo de espera que debe tratar de realizar la conexin. Por omisin se establecen 180 segundos,
por lo que esta lnea se deja por pura esttica.
Lnea 9:
Esta lnea le indica a PPP, que solicite confirmacin al puerto, sobre la configuracin de la resolucin local. Si
usted esta corriendo un servidor local de nombres, deber comentar o eliminar esta lnea.
Lnea 10:
Una lnea en blanco, para facilitar la lectura. Las lneas en blanco son ignoradas por PPP.
Lnea 11:
Identifica el incio de datos para un proveedor determinado, de servicios de internet. Este podr ser cambiado
por el nombre de su ISP, de tal forma que en lo sucesivo utilice la opcin load ISP, para iniciar una sesin.

160

Captulo 15. PPP y SLIP


Lnea 12:
Indica el numero telefnico del proveedor. Pueden indicarse varios numeros a utilizar, utilizando el signo de dos
puntos (:) o bien la barra (|) como separador. La diferencia entre estos dos separadores, es detallada en el
ppp(8). Pero en resumen, se puede decir que si se desean utilizar varios numeros de manera aleatoria se debe
utilizar los dos puntos, pero si se desea siempre utilizar el primer numero y en caso de falla el siguiente y as
sucesivamente, se debe utilizar la barra. Es importante que todo lo que se refiere a numeros telefonicos, este
entre comillas como se muestra. Es importante que si piensa usar espacios en los numeros, haga uso de estas
comillas ("). La falta de estas pueden ocasionar un simple error.
Lneas 13 y 14:
Identifica el nombre de usuario y su contrasea. Cuando uno se conecta utilizando un login de tipo Unix, estos
valores hacen referencia al comando set login, utilizando las variables \U y \P. Cuando la conexin es
utilizando algn metodo como PAP o CHAP, estos valores, son utilizados al momento de la autentificacin.
Lnea 15:

Si usted esta utilizando el metodo PAP o CHAP, no habr un login en este punto, y esta lnea deber ser
comentada (utilizando el smbolo # al principio de la lnea) o bien eliminada por completo. Vea la parte
Autentificacin con PAP y CHAP para ms detalles.
La cadena de acceso (login), utiliza la misma sintxis que se utiliza en la cadena de marcado. En este ejemplo,
la cadena sirve para un servicio, en el cual el inicio de sesin se ve algo as como lo siguiente:
Proveedor de servicios X
login: foo
password: bar
protocol: ppp

Es recomendable editar el script, para que se ajuste a sus propias necesidades. Cuando cree este script por
primera vez, asegurese de haber habilitado la parte que se refiere a al acceso por medio de chat, para efecto de
poder dar seguimiento al curso de la conexin y la resolucin de la misma.

Lnea 16:
Establece el tiempo por defecto en el que se perder la conexin (en segundos). En este caso la conexin ser
cortada de forma automtica, despus de 300 segundos de inactividad. Si no desea habilitar esta funcin
establezca este valor en cero o bien utilice el comando en lnea -ddial.
Lnea 17:
Indica la direccin de la interfaz. La cadena que aparece como x.x.x.x., debe se cambiada por la direccin
asignada por su PSI. La lnea que aparece como y.y.y.y., debe se substituida por la direcci IP especificada
por su PSI, como servidor de salida o pasarela (gateway)(la maquina a la cual se va a conectar). Si su PSI no le
ha indicado una direccin de este tipo, puede utilizar 10.0.0.2/0. Si usted necesita utilizar una direccin
aleatoria, asegurese de crear el fichero /etc/ppp/ppp.linkup, siguiendo las instrucciones de PPP y las
direcciones de IP Dinmicas, para su llenado. Si esta lnea es omitida, ppp, no podr ejecutarse en el modo
-auto.

161

Captulo 15. PPP y SLIP


Lnea 18:
Aade una ruta por omisin al servidor de salida de su PSI. La palabra especial HISADDR se reemplaza con la
direccin del gateway indicado por su PSI, que esta en la lnea 9, de otra forma HISADDR no ser inicializado.
Si no desea ejecutar ppp en modo -auto, esta lnea deber pasar al archivo ppp.linkup.

No hay necesidad de editar el archivo ppp.linkup si usted cuenta con una direccin IP esttica y se esta ejecutando
ppp en modo -auto, en virtud de que para efecto de realizar la conexin sus mapas de ruteo debe estar correctas. De
cualquier forma puede ser que usted desee ejecutar algun programa/comando, posterior a la conexin. Este es
explicado con ms detalle posteriormente, cuando se vea el ejemplo de sendmail.
Ejemplo de los archivos de configuracin, se pueden encontrar en el directorio; /usr/share/examples/ppp.

15.2.1.5.2. PPP y direcciones de IP Dinmicas (Variables)


Si su proveedor de servicios, no le asigna una direccin de IP fija, ser necesario configurar a ppp, de tal forma que
al momento de realizar la conexin, negocie tanto la direccin local, como la remota. Esto se lleva a cabo al
adivinar una direccin IP y permitiendo a ppp que la establezca correctamente, usando el Protocolo de
Configuracin de IP (IPCP), una vez que se ha conectado. La configuracin que debe tener el archivo ppp.conf, es
la misma que la utilizada en PPP y direcciones de IP fijas, salvo el siguiente cambio:
17

set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255

Una vez ms, no debe incluir el numero de lnea, este slo es una referencia. As mismo deber existir sangrado, de
cuando menos 1 espacio.
Lnea 17:
El numero siguiente a la diagonal (/), es el numero de bits de la direccin en la cual ppp insistir en conectarse.
Puede ser que usted desee utilizar numeros de IP que sean ms apropiados, para ajustar a sus necesiadades, pero
el ejemplo descrito anteriormente siempre podr utilizarse.
El ltimo argumento (0.0.0.0), le indica a PPP, que inicie las negociaciones, utilizando como direccin
0.0.0.0, en lugar de que utilice 10.0.0.1, lo cual es necesario con algunos proveedores. No utilice la
direccin 0.0.0.0 como el primer argumento, para el comando set ifaddr, ya que impide que PPP
configure de forma correcta el sistema, cuando se utiliza en modo -auto.

Si usted no esta ejecutando PPP en modo -auto, deber editar su archivo /etc/ppp/ppp.linkup. El archivo
ppp.linkup, es utilizado una vez que se ha realizado la conexin. En este punto, ppp habr negociado una
direccin de interfaz, y ser posible ahora, aadir las entradas para la las tablas de ruteo:
1
2

provider:
add default HISADDR

Lnea 1:
Al establecer (ppp) una conexin, buscar en ppp.linkup una entrada, de acuerdo a las siguientes reglas.
Primero, tratar de encontrar una entrada que sea igual a la utilizada en el archivo ppp.conf. Si esto falla,

162

Captulo 15. PPP y SLIP


buscar una IP con la direccin de nuestro gateway. Esta entrada es una etiqueta de tipo IP, de cuatro-octetos. Si
aun despus de esto no se ha detectado la entrada correcta, buscar la entrada MYADDR.
Lnea 2:
Esta lnea le indica a ppp que aada una ruta por omisin, que este dirigida hacia HISADDR. HISADDR ser
reemplazada, con la IP del gateway, como se negocio por IPCP.
Para ver un detalle ms preciso de esto, puede consultar la entrada de pmdemand en los archivos de ejemplo
/usr/share/examples/ppp/ppp.conf.sample as como
/usr/share/examples/ppp/ppp.linkup.sample.

15.2.1.5.3. Recibiendo Llamadas Externas


Cuando se configure ppp, para recibir llamadas externas, en una maquina conectada a un LAN (Red de Area Local),
debe decidir si se va a permitir el envo de paquetes a la LAN. Si es as, debe asignar un numero de IP de su red local
y utilizar el comando enable proxy en el archivo de configuracion /etc/ppp/ppp.conf. Tambin deber
asegurarse que en su archivo /etc/rc.conf cuente con la lnea:
gateway_enable="YES"

15.2.1.5.3.1. Qu getty utilizar?


El enlace Configurando FreeBSD para Servicios de Marcado provee de una buena descripci, sobre la configuracin
de estos servicios, basado en getty(8).
Una alternativa para el comando getty es mgetty (http://www.leo.org/~doering/mgetty/index.html), el cual es una
versin ms inteligente de getty diseada para servicios de marcado telefonico.
Una de las principales ventajas de mgetty es que, de hecho platica con los modems, esto es, significativo, ya que si
el puerto esta desactivado en su /etc/ttys el modem no responder el llamado.
Las ltimas versiones de mgetty (de la 0.99beta y sucesivas), tambin cuentan con soporte para la deteccin
automtica de llamados de PPP, permitiendo el acceso a servidores de una manera ms sencilla (sin uso de tanto
scripts).
Puede referirse a Mgetty y AutoPPP para ms informacin con respecto al comando mgetty.

15.2.1.5.3.2. Permisos de PPP


El comando ppp normalmente debe ser ejecutado por root (superusuario). Si de cualquier forma, usted desea
permitir que ppp pueda ser ejecutado en modo servidor, por un usuario regular, como se describe a continuacin,
deber otorgar los permisos necesarios a ese usuario al aadirlo al grupo network, en el fichero /etc/groups.
Tambin ser necesario darle acceso a una o ms partes del archivo de configuracin, haciendo uso del comando
allow, como se ve a continuacin:
allow users fred mary

Si el comando es utilizado en la seccin default, esto le dar a el(los) usuario(s) especificado(s), acceso a todo.

163

Captulo 15. PPP y SLIP


15.2.1.5.3.3. Shells de PPP para Usuarios de IP Dinmica
Cree un fichero llamado: /etc/ppp/ppp-shell y que contenga lo siguiente:
#!/bin/sh
IDENT=echo $0 | sed -e s/^.*-\(.*\)$/\1/
CALLEDAS="$IDENT"
TTY=tty
if [ x$IDENT = xdialup ]; then
IDENT=basename $TTY
fi
echo "PPP for $CALLEDAS on $TTY"
echo "Starting PPP for $IDENT"
exec /usr/sbin/ppp -direct $IDENT

Este script deber ser ejecutable. Ahora cree un enlce simblico llamado ppp-dialup a este script, utilizando los
siguientes comandos:
# ln -s ppp-shell /etc/ppp/ppp-dialup

Deber utilizar este script como shell para todos los usuarios que realicen conexin. Este es un ejemplo del fichero
/etc/password para un usuario con acceso a PPP, con nombre de usuario pchilds (recuerde no editar
directamente el fichero password, utilice vipw).
pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup

Cree un directorio llamado /home/ppp que contenga los siguentes archivos de 0 bytes:
-r--r--r--r--r--r--

1 root
1 root

wheel
wheel

0 May 27 02:23 .hushlogin


0 May 27 02:22 .rhosts

los cuales impiden que /etc/motd sea desplegado.

15.2.1.5.3.4. Shells de PPP para Usuarios de IP Esttica


Cree el fichero ppp-shell al igual que el mencionado con anterioridad, y por cada cuenta donde se tenga asignada
una IP esttica, cree un enlace simblico al fichero ppp-shell.
Por ejemplo, si usted cuenta con tres usuarios que utilicen este servicio; fred, sam y mary, los cuales redirecciona a
una red de clase C, habria que hacer lo siguiente:
# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary

Cada uno de los usuarios sealados, debern de contar con el enlace a su shell-script como se indic (por ejemplo, el
usuario mary, debe contar con su enlace al fichero /etc/ppp/ppp-mary).

164

Captulo 15. PPP y SLIP


15.2.1.5.3.5. Configurando ppp.conf para Usuarios de IP-Dinmica
El archivo /etc/ppp/ppp.conf deber contener algo similar a lo siguiente:
default:
set debug phase lcp chat
set timeout 0
ttyd0:
set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
enable proxy
ttyd1:
set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
enable proxy

Nota: Tomar en cuenta el sangrado, ya que es importante.

La seccin default: es cargada para cada sesin. Para cada lnea que exista y habilite el marcado, en el fichero
/etc/ttys, se deber crear una entrada similar a la lnea ttyd0: mencionada arriba. Cada lnea debera contar con
su propia direccin IP, de sus direcciones IP disponibles para asignar dinmicamente.

15.2.1.5.3.6. Configurando ppp.conf para Usuarios de IP Esttica


Junto con el contenido del fichero de ejemplo /usr/share/examples/ppp/ppp.conf mencionado
anteriormente, deber agregar una seccin para cada usuario asignado estticamente. Continuaremos con nuestro
ejemplo con los usuarios fred, sam y mary.
fred:
set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255
sam:
set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255
mary:
set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255

El archivo /etc/ppp/ppp.linkup deber de contener tambin informacin del ruteo, para cada IP esttica, si es
necesario. Las lneas a continuacin aadirn una ruta a la direccin 203.14.101.0 de clase C, por medio del ppp
link del cliente.
fred:
add 203.14.101.0 netmask 255.255.255.0 HISADDR
sam:
add 203.14.102.0 netmask 255.255.255.0 HISADDR
mary:
add 203.14.103.0 netmask 255.255.255.0 HISADDR

165

Captulo 15. PPP y SLIP


15.2.1.5.4. Algo ms de mgetty, AutoPPP, y Extensiones MS
15.2.1.5.4.1. mgetty y AutoPPP
Configurando y compilando mgetty con la opcin AUTO_PPP habilitada, permite a mgetty detectar la fase LCP de
conexiones PPP y automticamente enviarlo a un shel de ppp. Aun con esto, y debido a que no se ingresa el nombre
de usuario y contrasea, es necesario autntificarse por medio de PAP o CHAP.
Esta seccin asume que el usuaio ha configurado, compilado e instalado correctamente una versin de mgetty, con
la opcin Auto_PPP (v0.99beta o posterior).
Asegurese de que su fichero /usr/local/etc/mgetty+sendfax/login.conf contiene la siguiente lnea en l:
/AutoPPP/ -

/etc/ppp/ppp-pap-dialup

Esto le indicar a mgetty que ejecute el script ppp-pap-dialup, para efecto de detectar conexiones de tipo PPP.
Cree un fichero llamado /etc/ppp/ppp-pap-dialup que contenga las siguientes lneas (el fichero deber ser
ejecutable):
#!/bin/sh
exec /usr/sbin/ppp -direct pap$IDENT

Para cada lnea de marcado habilitada en /etc/ttys, cree la entrada correspondiente en /etc/ppp/ppp.conf.
Esto co-existir pacficamente con las definiciaones que se hayan hecho, de acuerdo a lo mostrado en la parte de
arriba.
pap:
enable pap
set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
enable proxy

Cada usuario que ingrese al sistema utilizando este metodo, deber de contar con su clave de usuario, as como su
contrasea, en el archivo /etc/ppp/ppp.secret, o bien agrege la siguiente opcin, para efecto de que se pueda
realizar la autentificacin por medio de PAP, directamente del fichero /etc/password.
enable passwdauth

Si desea asignar una direccin IP fija a algunos usuarios, puede especificar el nmero como un tercer argumento en
el fichero /etc/ppp/ppp.secrets. Vea el archivo /usr/share/examples/ppp/ppp.secret.sample para
obtener ejemplos ms detallados de esto.

15.2.1.5.4.2. Extensiones de MS
Es posible configurar PPP, para efecto de que brinde a DNS y a NetBIOS, direcciones de servidores de nombres de
forma automtica.
Para efecto de habilitar estas extensiones con PPP versin 1.x, las siguientes lneas debern aadirse a la seccin
relevante de /etc/ppp/ppp.conf.
enable msext
set ns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5

166

Captulo 15. PPP y SLIP


Y para versiones de PPP 2 y posteriores:
accept dns
set dns 203.14.100.1 203.14.100.2
set nbns 203.14.100.5

Esto le indicar a los clientes, las direcciones del servidor primario y secundario y el servidor-host para NetBIOS.
Si la lnea set dns, es omitida en versiones 2 y posteriores, PPP utilizar los valores que encuentre en
/etc/resolv.conf.

15.2.1.5.5. Autentificacin por medio de PAP y CHAP


Algunos proveedores de internet tienen su sistema configurado para que cada usuario al conecatrse sean
autentificados por medio de PAP o CHAP. Si este es el caso, al momento de realizar la conexion, no aparecer un
login:, sino que comenzar a comunicarse PPP inmediatamente.
El metodo PAP es menos seguro que CHAP, pero la seguridad normalmente no se toma mucho en cuenta en este tipo
de conexiones, en funcion de que al enviarse la informacin de contrasea en texto plano, por medio de una lnea
serial, no deja mucho espacio para que los crackers husmeen.
Haciendo referencia a lo que vimos de PPP y Direcciones de IP Fijas o bien PPP y Direcciones de IP Dinmicas,
habra que aplicar los siguientes cambios:
7
...
12
13

set login
set authname MiNombreDeUsuario
set authkey MiContrasea

Lnea 7:
Su PSI normalmente requerir que usted ingrese al sistema, cuando se utiliza PAP o CHAP. Por esta razn
debemos deshabilitar la lnea que corresponde a set login.
Lnea 12:
Esta lnea especifca a PAP/CHAP su nombre de usuario. Usted deber cambiar el valor a quedar el nombre
correcto en el campo; MiNombreDeUsuario.
Lnea 13:
Esta lnea especifca su contrasea de PAP/CHAP. Es necesario que usted cambie el valor a quedar el dato
correcto, en el campo; MiContrasea. Quizs sea recomendable que aada una lnea a quedar:
15

accept PAP

15

accept CHAP

la intencin de esto es para hacerlo obvio, aunque en realidad PAP y CHAP son aceptadas por omisin.

167

Captulo 15. PPP y SLIP


15.2.1.5.6. Cambiando la configuracin de ppp sobre la marcha (al vuelo)
Es posible hablar con el programa ppp mientras se esta ejecutando en segundo plano, pero slo si se ha habilitado un
puerto de diagnstico. Para hacer esto, aada lo siguiente a su configuracin:
set server /var/run/ppp-tun%d DiagnosticPassword 0177

Esto le indicar a PPP que preste atencin al socket del dominio-Unix, solicitando a los usuarios su contrasea, antes
de permitir el acceso. La variable %d deber ser reemplazada por el numero de dispositivo tun que este utilizando
(ej. tun0).
Una vez que se a configurado el socket, se puede utilizar pppctl(8) en scripts que deseen manipular el programa.

15.2.1.6. Configuracin Final del Sistema


Ahora usted cuenta con un ppp configurado, pero es necesario hacer algunas cosas, antes de que este disponible para
trabajar. Todas ellas giran entorno a la edicin del fichero /etc/rc.conf.
En primer lugar es importante que se asegure que ha asignado un nombre a su maquina. Esto se hace asignandolo en
la lnea de hostname=, por ejemplo:
hostname="foo.ejemplo.com"

Si su Proveedor de Servicios de Internet (PSI), le ha provisto de una direccin fija y un nombre de host, es
recomendable que utilice este como su hostname.
Localice la lnea que se refiera a sus dispositivos de red, la cual es network_interfaces. Si desea configurar su
sistema para marcar a su PSI a peticin, asegurese de que el dispositivo tun0 este en la lista, de otra forma eliminelo.
network_interfaces="lo0 tun0" ifconfig_tun0=

Nota: La variable ifconfig_tun0 debe permanecer en blanco (vacia), y deber crearse un fichero llamado
/etc/start_if.tun0 que contenga la siguiente lnea:
ppp -auto MiSistema

Este script se ejecuta cuando se esta configurando la red, inicializando el demonio de ppp de modo automtico.
Si usted cuenta con una LAN (red de rea local), de la cual esta maquina sea la pasarela (gateway), es tambien
recomendable que utilice la opcin -alias. Referirse a la pgina de ayuda (man) para mayores detalles.

Especifique el programa router a NO, con la siguiente lnea en su fichero /etc/rc.conf:


router_enable="NO"

Es importante que el demonio routed no se inicialice por default, en virtud de que routed tiende a eliminar las
variables creadas por ppp.
Probablemente valga la pena asegurarse de que la lnea sendmail_flags, no incluya la opcin -q, ya que de ser as
sendmail intentar localizar los parmetros de la red de vex en cuando, ocasionando que realice llamados al
exterior. Puede intentar esto:

168

Captulo 15. PPP y SLIP


sendmail_flags="-bd"

La parte negativa de esta conifguracin es que tiene que forzar a sendmail a re-examinar los llamados del servidor
de correo, cada vez que ppp realiza una conexin, con el siguiente comando:
# /usr/sbin/sendmail -q

Puede utilizar el comando !bg en el fichero ppp.linkup para hacer esto de manera automtica:
1
2
3
4

provider:
delete ALL
add 0 0 HISADDR
!bg sendmail -bd -q30m

Si usted no desea hacer esto, es posible establecer un dfilter (filtro), para bloquear el trfico al servidor de salida de
correo (SMTP). Favor de referirse a los archivos de ejemplos para mayor detalle al respecto.
Ahora lo nico que queda pendiente de hacerse es reiniciar el equipo. Una vez reiniciado el equipo, puede teclear:
# ppp

y posteriormente dial proveedor para iniciar la sesin, o bien si desea que ppp inicie la sesin automticamente,
cuando haya una peticin de salida (y no haya creado el fichero start_if.tun0), puede teclear:
# ppp -auto proveedor

15.2.1.7. Summario
A manera de recapitulacin, podemos decir que para configurar ppp por primera ocasin, debemos:
Por parte del Cliente:
1.

Asegurese de que existe el dispositivo tun dentro de su kernel.

2.

Asegurses de que el dispositivo tunX , se encuentra disponible, bajo el directorio /dev.

3.

Cree una entrada en su fichero /etc/ppp/ppp.conf. Con el fichero de ejemplo pmdemand debe ser suficiente
para la mayoria de proveedores.

4.

Si cuenta con una direccin de IP dinmica, cree una entrada en el fichero /etc/ppp/ppp.linkup .

5.

Actualice su fichero /etc/rc.conf.

6.

Cree un archivo script llamado start_if.tun0 si requiere servicio de conexin a solicitud.

Por parte del Servidor:


1.

Asegurese de que dentro de su kernel exista el dispositivo tun.

2.

Asegurses de que el dispositivo tunX , se encuentra disponible, bajo el directorio /dev.

3.

Cree una entrada en el fichero /etc/passwd (usando el programa vipw(8)).

4.

Cree un perfil en el directorio home de este usuario, que ejecute ppp -direct direct-server o algo similar.

169

Captulo 15. PPP y SLIP


5.

Cree una entrada en el fichero /etc/ppp/ppp.conf. El fichero de ejemplo direct-server debe ser
suficiente para darse una idea.

6.

Cree una entrada en el fichero /etc/ppp/ppp.linkup.

7.

Actualice su fichero /etc/rc.conf.

15.3. Usando Kernel PPP


Partes originalmente desarrolladas por Gennady B. Sorokopud y Robert Huff.

15.3.1. Configurando Kernel PPP


Antes de comenzar a configurar PPP en su maquina, asegurese de pppd se localiza en /usr/sbin y de que existe el
directorio /etc/ppp.
pppd puede trabajar de dos maneras

1. Como un cliente cuando desea conectar su maquina al mundo exterior utilizando PPP, por medio de una
conexin serial o bien una lnea de modem.
2. como un servidor cuando su maquina esta conectada a una red y es utilizada para que otras maquinas se
conecten utilizando ppp.
En ambos casos, ser necesario configurar un fichero de opciones (/etc/ppp/options o bien ~/.ppprc si se
cuenta con ms de un usuario que utilizar ppp en la misma maquina.
Tambin deber de contar con un software para hacer la conexin por medio de mdem (de preferencia kermit), de
manera que pueda hacer la conexin con un host remoto.

15.3.2. Usando pppd como Cliente


Basedo en informacin provista por Trev Roydhouse.
El siguiente archivo de configuracin /etc/ppp/options puede utilizarse para realizar la conexin a una terminal
CISCO, por medio de PPP.
crtscts
modem
noipdefault

# habilita el flujo de controls de hardware


# lnea de control del modem
# el servidor PPP remoto asignar la direccin IP
# si el servidor no envia una direccin IP durante IPCP
# remueva esta opcin.
passive
# espere por los paquetes LCP
domain ppp.foo.com
# escriba su nombre de dominio aqui
: remote_ip

# escriba la IP del host remoto aqui


# este ser utilizado para el ruteo de paquetes por medio
# de PPP, si no especifica esta opcin, cambie la

170

Captulo 15. PPP y SLIP


# lnea a quedar
defaultroute

local_ip : remote_ip

# establezca esta opcin si el servidor su ruteador


# por default

Para conectarse:
1.

Realice el llamado al host remoto, utilizando kermit (o cualquier otra aplicacin de este tipo), ingrese su nombre
de usuario y contrasea (o cualquier info que sea necesaria para habilitar PPP en el host remoto).

2.

Salga de kermit (sin colgar la lnea).

3.

Ingrese lo siguiente:
# /usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200

Asegurese de utilizar el dispositivo y la velocidad adecuados.


Ahora su computadora esta conectada por medio de PPP. Si la conexin falla, puede aadir la opcin debug en el
fichero /etc/ppp/options de tal forma que pueda verificar la que esta ocurriendo y pueda resolver el problema.
El siguiente script; /etc/ppp/pppup realizar los 3 pasos de forma automtica:
#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=ps ax |grep pppd |grep -v grep|awk {print $1;}
if [ "X${pid}" != "X" ] ; then
echo killing pppd, PID= ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=ps ax |grep kermit |grep -v grep|awk {print $1;}
if [ "X${pid}" != "X" ] ; then
echo killing kermit, PID= ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.dial
pppd /dev/tty01 19200

El fichero /etc/ppp/kermit.dial es un script de kermit, uqe realiza el marcado y negocia la autorizacin


necesaria con el host remoto (un ejemplo de este script se encuentra al final de este documento).
Utilice el siguiente script, llamado /etc/ppp/pppdown para desconectar la lnea PPP:
#!/bin/sh
pid=ps ax |grep pppd |grep -v grep|awk {print $1;}
if [ X${pid} != "X" ] ; then
echo killing pppd, PID= ${pid}
kill -TERM ${pid}
fi

171

Captulo 15. PPP y SLIP


ps ax |grep kermit |grep -v grep
pid=ps ax |grep kermit |grep -v grep|awk {print $1;}
if [ "X${pid}" != "X" ] ; then
echo killing kermit, PID= ${pid}
kill -9 ${pid}
fi
/sbin/ifconfig ppp0 down
/sbin/ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.hup
/etc/ppp/ppptest

Verifique que su PPP aun se esta ejecutando, por medio de /usr/etc/ppp/ppptest, que deber verse algo similar
a esto:
#!/bin/sh
pid=ps ax| grep pppd |grep -v grep|awk {print $1;}
if [ X${pid} != "X" ] ; then
echo pppd running: PID= ${pid-NONE}
else
echo No pppd running.
fi
set -x
netstat -n -I ppp0
ifconfig ppp0

Para colgar el mdem, ejecute /etc/ppp/kermit.hup, que deber contener:


set
set
set
set
set
set
set
set
set
set
set

line /dev/tty01 ; aqui va el dispositivo del modem


speed 19200
file type binary
file names literal
win 8
rec pack 1024
send pack 1024
block 3
term bytesize 8
command bytesize 8
flow none

pau 1
out +++
inp 5 OK
out ATH0\13
echo \13
exit

He aqui un metodo alterno, donde se utiliza chat en lugar de utilizar kermit.


Los siguientes dos ficheros deben ser suficiente, para realizar una conexin por medio de pppd.
/dev/cuaa1 115200
crtscts # habilita el control de flujo por medio de hardware

172

Captulo 15. PPP y SLIP


modem # lnea de control del mdem
connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
noipdefault # el servidor remoto debe asignar la direccin IP.
# si el servidor no asigna una IP durante la negociacin
# IPCP , remueva esta lnea y espere por los
passive
# paquetes LCP
domain your.domain # aqui va su dominio

: # escriba la IP del host remoto aqui


# si no ha especificado la opcin noipdefault
# cambie esta lnea a quedar local_ip : remote_ip

defaultroute # escriba esto, si desea que el servidor PPP sea su


# router por default
/etc/ppp/login.chat.script:
Nota: Lo siguiente debe ir en una sola lnea.

ABORT BUSY ABORT NO CARRIER "" AT OK ATDT numero.de.telefono


CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: nombre.usuario
TIMEOUT 5 sword: contrasea

Una vez que estos ficheros han sido modificados correctamente e instalados, todo lo que necesita es ejecutar el
comando pppd, algo como:
# pppd

15.3.3. Usando pppd como Servidor


El fichero /etc/ppp/options debe contener algo similar a lo siguiente:
crtscts
# control de flujo por Hardware
netmask 255.255.255.0
# mascara de red (no es requisito)
192.114.208.20:192.114.208.165 # direcciones ip del host local y remoto
# la direccin ip local debe ser
# diferente a la que le haya asignado a su
# dispositivo de red ethernet (u otro)
# la direccin ip remota que ser
# asignada a la maquina remota
domain ppp.foo.com
# su dominio
passive
# espera por LCP
modem
# lnea de modem

El siguiengte script, llamado /etc/ppp/pppserv habilitar pppd, para que actue como servidor:
#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=ps ax |grep pppd |grep -v grep|awk {print $1;}
if [ "X${pid}" != "X" ] ; then

173

Captulo 15. PPP y SLIP


echo killing pppd, PID= ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=ps ax |grep kermit |grep -v grep|awk {print $1;}
if [ "X${pid}" != "X" ] ; then
echo killing kermit, PID= ${pid}
kill -9 ${pid}
fi
# reset ppp interface
ifconfig ppp0 down
ifconfig ppp0 delete
# enable autoanswer mode
kermit -y /etc/ppp/kermit.ans
# run ppp
pppd /dev/tty01 19200

Utilice el script /etc/ppp/pppservdown para detener el servidor:


#!/bin/sh
ps ax |grep pppd |grep -v grep
pid=ps ax |grep pppd |grep -v grep|awk {print $1;}
if [ "X${pid}" != "X" ] ; then
echo killing pppd, PID= ${pid}
kill ${pid}
fi
ps ax |grep kermit |grep -v grep
pid=ps ax |grep kermit |grep -v grep|awk {print $1;}
if [ "X${pid}" != "X" ] ; then
echo killing kermit, PID= ${pid}
kill -9 ${pid}
fi
ifconfig ppp0 down
ifconfig ppp0 delete
kermit -y /etc/ppp/kermit.noans

El siguiente script de kermit (/etc/ppp/kermit.ans) habilita/deshabilita el modo de autorespuesta en su mdem.


Y debe verse algo similar a lo siguiente:
set
set
set
set
set
set
set
set
set
set

line /dev/tty01
speed 19200
file type binary
file names literal
win 8
rec pack 1024
send pack 1024
block 3
term bytesize 8
command bytesize 8

174

Captulo 15. PPP y SLIP


set flow none
pau 1
out +++
inp 5 OK
out ATH0\13
inp 5 OK
echo \13
out ATS0=1\13

; cambiar esto a quedar out ATS0=0\13 si desea deshabilitar el modo


; de autorespuesta

inp 5 OK
echo \13
exit

Un script llamado /etc/ppp/kermit.dial es utilizado para llamar y autentificarse en un host remoto. Es


necesario que edite este fichero, de acuerdo a sus necesidades. Escriba su nombre de usuario (login) y contrasea
(password) en este fichero, tambin ser necesario cambiar su metodo de conexin, de acuerdo a lo que se ajuste a
sus necesidades.
;
; ingrese el dispositivo que esta
;
set line /dev/tty01
;
; escriba la velocidad del mdem:
;
set speed 19200
set file type binary
;
set file names literal
set win 8
set rec pack 1024
set send pack 1024
set block 3
set term bytesize 8
set command bytesize 8
set flow none
set modem hayes
set dial hangup off
set carrier auto
;
set dial display on
;
set input echo on
set input timeout proceed
set input case ignore
def \%x 0
goto slhup

apuntando a su mdem:

full 8 bit file xfer

Posteriormente SET CARRIER si es necesario


despues SET DIAL si es necesario

:slcmd
; cambio a modo de comando
echo Put the modem in command mode.
clear
; Limpieza del buffer de entrada
pause 1
output +++
input 1 OK\13\10
; esperar para OK
if success goto slhup

175

Captulo 15. PPP y SLIP


output \13
pause 1
output at\13
input 1 OK\13\10
if fail goto slcmd
:slhup
clear
pause 1
echo Hanging up the phone.
output ath0\13
input 2 OK\13\10
if fail goto slcmd
:sldial
pause 1
echo Dialing.
output atdt9,550311\13\10
assign \%x 0
:look
clear
increment \%x
input 1 {CONNECT }
if success goto sllogin
reinput 1 {NO CARRIER\13\10}
if success goto sldial
reinput 1 {NO DIALTONE\13\10}
if success goto slnodial
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}
if success goto slhup
if < \%x 60 goto look
else goto slhup
:sllogin
assign \%x 0
pause 1
echo Looking for login prompt.

; si el modem no responde Ok, intentar de nuevo


; colgar el telfono
; Limpieza del buffer de entrada

; si no hay un OK como respuesta, poner el modem en modo de coman


; marcar el numero telefonico

; escriba el numero de telefono


; asignar cero al contador

; Limpieza del buffer de entrada


; Conteo de segundos

; login
; asignar cero al contador

:slloop
increment \%x
; Conteo de segundos
clear
; Limpieza del buffer de entrada
output \13
;
; escriba su login prompt aqui:
;
input 1 {Username: }
if success goto sluid
reinput 1 {\255}
if success goto slhup
reinput 1 {\127}

176

Captulo 15. PPP y SLIP


if success goto slhup
if < \%x 10 goto slloop
else goto slhup

; intentar 10 veces para obtener un login


; colgar y empezar de nuevo si a la decima falla

:sluid
;
; escriba su nombre de usuario:
;
output ppp-login\13
input 1 {Password: }
;
; escriba su contrasea:
;
output ppp-password\13
input 1 {Entering SLIP mode.}
echo
quit
:slnodial
echo \7No dialtone.
exit 1
;
;
;
;
;

Check the telephone line!\7

local variables:
mode: csh
comment-start: "; "
comment-start-skip: "; "
end:

15.4. Usando PPP sobre Ethernet (PPPoE)


Contribuido (tomado de http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) por Jim Mock.
En esta seccin veremos como configurar PPP sobre una red Ethernet (PPPoE).

15.4.1. Configurando el kernel


Ya no es necesario realizar una configuracin especial para que nuestro kernel cuente con soporte para PPPoE.
Siempre y cuando el soporte de redes necesario se encuentre en l, ppp se encargar de cargarlo de una manera
dinmica.

15.4.2. Editando el fichero ppp.conf


He aqui un ejemplo de un fichero de configuracin ppp.conf completamente funcional:
default:
set log Phase tun command # puede aadir ms dispositivos si lo desea
set ifaddr 10.0.0.1/0 10.0.0.2/0

177

Captulo 15. PPP y SLIP

nombre_del_proveedor_del_servicio_de_internet:
set device PPPoE:xl1 # sustituya xl1 con su dispositivo ethernet
set authname SuNombreDeUsuario
set authkey SuContrasea
set dial
set login
add default HISADDR

15.4.3. Ejecutando PPP


Estando en modo superusuario (root) puede ejecutar:
# ppp -ddial nombre_del_proveedor_de_inet

15.4.4. Ejecutando PPP al inicio de sesin


Aada las siguientes lneas a su archivo /etc/rc.conf:
ppp_enable="YES"
ppp_mode="ddial"
ppp_nat="YES" # siempre y cuando desee habilitar nat para su red local
ppp_profile="nombre_del_proveedor_de_inet"

15.4.5. Diferenciando el uso del Servicio de PPPoE


En ocasiones es necesario utilizar una pequea marca para diferenciar el servicio que vamos a utilizar para establecer
la conexin. Las marcas (tags)de servicio son utilizadas para distinguir entre diferentes servidores de una red, a los
que nos podemos conectar utilizando PPPoE.
Su proveedor de internet debe haberle provisto de la informacin necesaria para crear esta marca. Si esto no fu as,
puede solicitar a su proveedor que le brinde esta informacin.
Como ltimo recurso, puede intentar el mtodo sugerido por el programa Roarging Penguin PPPoE
(http://www.roaringpenguin.com/pppoe/), que puede encontrarse en la coleccin de ports. Al utilizar este programa
debe tener en mente, que este puede desconfigurar su mdem por completo, por esta razn piense biena antes de
utilizarlo. Simplemente instale el programa controlador del mdem, provisto por su porveedor. Posteriormente, debe
acceder al men de Sistema del programa. El nombre de su perfil debe aparecer listado. Que normalmente es ISP.
El nombre del perfil (marca del servicio) ser utilizada por la configuracin de PPPoE en el fichero de configuracin
ppp.conf como el proveedor para la opcin del comando set device (puede ver la pgina de ayuda ppp(8) para
ms detalles). Esto debe verse algo similar a lo siguiente:
set device PPPoE:xl1:ISP

No olvide cambiar x11 por el dispositivo Ethernet que este utilizando.

178

Captulo 15. PPP y SLIP


No olvide cambiar ISP por el nombre del perfil que le fu descrito anteriormente (por lo general el nombre de su
Proveedor de Servicio de Internet).
Para informacin adicional consulte:

Cheaper Broadband with FreeBSD on DSL (http://renaud.waldura.com/doc/freebsd/pppoe/) por Renauld Waldura.

15.4.6. Usando PPPoE en Casa con un Modem Dual ADSL 3Com


Este mdem no sigue el estandar establecido en el RFC 2516 (http://www.faqs.org/rfcs/rfc2516.html) (Un metodo
que describe el uso de PPP por medio de un dispositivo Ethernet (PPoE), escrito por L. Mamakos, K. Lidl, J. Evarts,
D. Carrel, D. Simone y R. Wheeler). En su lugar, el cdigo de diferentes tipos de paquetes ha sido utilizado para el
manejo del entorno Ethernet. Si cree que esto es incorrecto y que se debiera ajustar a las especificaciones de PPPoE,
por favor comentelo en 3Com (http://www.3com.com/).
Para poder hacer que FreeBSD sea capaz de comunicarse con este dispositivo, se debe establecer un control de
sistema (sysctl). Esto puede hacerse de forma automtica al momento del arranque, editando el fichero
/etc/sysctl.conf:
net.graph.nonstandard_pppoe=1

o bien pude hacerse desde la lnea de comandos, para un efecto inmediato, por medio del comando sysctl -w
net.graph.nonstandard_pppoe=1.

Desafortunadamente y dado que esto implica una configuracin general del sistema, por lo que no es posible
comunicarnos con un dispositivo cliente servidor que utilice PPPoE y con un mdem casero 3Com ADSL, al
mismo tiempo.

15.5. Usando PPP sobre ATM (PPPoA)


Lo siguiente describe como configurar PPP utilizando ATM, alias PPPoA. PPPoA es una alternativa muy comn
entre proveedores de DSL en Europa.

15.5.1. Usando PPPoA con un Alcatel Speedtouch USB


El soporte bajo FreeBSD para este dispositivo se puede encontrar como un port, por que el firmware es distribuido
bajo la licencia de Alcatel (http://www.alcatel.com/consumer/dsl/disclaimer_lx.htm).
Para instalar este software, simplemente utilice la coleccin de ports. Instale el port net/pppoa y siga las
instrucciones provistas por el port.

179

Captulo 15. PPP y SLIP

15.5.2. Usando mpd


Puede usar mpd para conectarse a una gran variedad de servicios, en particular servicios pptp. Puede encontrar mpd
en la coleccin de ports, bajo net/mpd.
Primero debe instalar el port, y posteriormente configurar mpd para que se ajuste a sus necesidades y a la
configuracin del proveedor. El port instala un conjunto de ficheros de configuracin de ejemplo, que estan bien
documentados en PREFIX/etc/mpd/. Note que PREFIX se refiere al directorio donde sus ports son instalados, que
normalmente es en /usr/local. Una gua completa en formato HTML, esta disponible una vez que se ha instalado
el port. Esta se localiza en PREFIX/share/mpd/. Aqui tenemos un ejemplo simple de configuracin para conectarse
a un servicio ADSL con mpd. La configuracin se divide en dos ficheros, primero tenemos el fichero mpd.conf.
default:
load adsl
adsl:
new
set
set
set
set
set
set
set

-i ng0
bundle
bundle
bundle
link
link
link
link

adsl adsl
authname usuario
password contrasea
disable multilink

no pap actcomp protocomp


disable chap
accept chap
keep-alive 30 10

set ipcp no vjcomp


set ipcp ranges 0.0.0.0/0 0.0.0.0/0
set
set
set
set

iface
iface
iface
iface

route default
disable on-demand
enable proxy-arp
idle 0

open

El nombre de usuario para autentificar con su proveedor.

La contrasea para autentificar con su proveedor.

El fichero mpd.links contiene informacin a cerca de la, o las conecciones, que desee establecer. Un ejemplo de
mpd.links y que sea acompaante del ejemplo anterior, se muestra a continuacin.
adsl:
set
set
set
set
set

link
pptp
pptp
pptp
pptp

type pptp
mode active
enable originate incoming outcall
self 10.0.0.140
peer 10.0.0.138

La conexin es fcil de inicializarla, al ingresar los siguientes comandos como root.


# mpd -b adsl

180

Captulo 15. PPP y SLIP


El estatus de la conexin la puede ver con el comando.
% ifconfig ng0

: flags=88d1 UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST mtu 1500


inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff

Usar mpd es la forma recomendada para conectarse con servicios ADSL con FreeBSD.

15.5.3. Usando pptpclient


Tambin es posible usar FreeBSD para conectarse a otros servicios PPPoA por medio de net/pptpclient.
Para conectarse por medio de net/pptpclient a un servicio DSL, instale el port o paquete y edite el fichero
/etc/ppp/ppp.conf. Debe ser root para hacer estas operaciones. Un ejemplo de la seccin de ppp.conf, se
muestra a continuacin. Para mayor informacin sobre las opciones de ppp.conf, consulte la pgina de ayuda de
ppp; ppp(8).
adsl:
set log phase chat lcp ipcp ccp tun command
set timeout 0
enable dns
set authname usuario
set authkey contrasea
set ifaddr 0 0
add default HISADDR

Nombre de usuario de la cuenta DSL.

La contrasea de su cuenta.
AvisoDebido a que debe poner su contrasea en el fichero ppp.conf en texto plano, debe asegurarse que
nadie tenga acceso de lectura a este fichero. Los siguientes comandos se aseguran de que el fichero solo
pueda se leido por root. Ve las pginas de ayuda chmod(1) y chown(8) para mayor informacin.
# chown root:wheel /etc/ppp/ppp.conf
# chmod 600 /etc/ppp/ppp.conf

Esto abrir una sesion por medio de PPP con su ruteador DSL. Los mdems Ethernet DSL cuentan con una direccin
IP de LAN preconfigurada a la cual se puede conectar. En el caso del Alcatel Speedtouch, esta direccin es
10.0.0.138. La documentacin de su equipo debe indicarle que direccin utiliza. Para abrir el tunel e iniciar la
sesin ppp, ejecute el siguiente comando.
# pptp direccin proveedor

Sugerencia: Puede aadir un smbolo de ampersand (&) al final de este comando, ya que pptp no retorna al
shell por default.

181

Captulo 15. PPP y SLIP


Un dispositivo virtual tun ser creado, para interactuar con los procesos de pptp y ppp. Una vez que regrese al shell
puede examinar la conexin por medio del siguiente comando.

% ifconfig tun0

tun0: flags=8051 UP,POINTOPOINT,RUNNING,MULTICAST mtu 1500


inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00
Opened by PID 918

Si no le es posible conectarse, verifique la configuracin de su ruteador, que normalmente es accesible por medio de
telnet o de su navegador web. Si aun no puede conectarse examine la salida que da el comando pptp y el contenido
del fichero de registro (log) de ppp; /var/log/ppp.log.

15.6. Usando SLIP


Contribucin Original por Satoshi Asami. Con comentarios por Guy Helmer y Piero Serini.

15.6.1. Configurando un cliente SLIP


Lo siguiente es una forma de configurar FreeBSD para que utilice SLIP, en un red con direccin esttica. Para
direcciones dinmicas (esto es, donde su direccin cambia cada vez que se conecta), probablemente sea necesario
realizar algunos ajustes que complican la configuracin.
En primer trmino, es necesario determinar a que puerto serial esta conectado nuestro mdem. Mucha gente opta
por} contar con un enlce simblico, tal como /dev//modem, que apunta al nombre real del dispositivo,
/dev/cuaaN. Esto permite abstenerse de usar el nombre real del dispositivo, en caso de que sea necesario cambiar
de puerto nuestro mdem. Lo cual puede ser de mucha ayuda, ya que puede ser un fastidio tener que editar un
monton de ficheros en /etc y ficheros de tipo .kermrc en todo el sistema!.
Nota: /dev/cuaa0 es COM1, cuaa1 es COM2, etc.

Asegurese de contar con la siguiente opcin en la configuracin de su kernel:


pseudo-device

sl

Esta opcin esta incluida en el archivo del kernel GENERIC, as que no debe haber problema, claro esta, a menos que
lo haya borrado intencionalmente.

15.6.1.1. Cosas Que Tiene Que Hacer Solo Una Vez


1.

Aada el nombre de su maquina, gateway, servidores de nombre a su fichero /etc/hosts. Este es un ejemplo
de mi fichero:
127.0.0.1
136.152.64.181
136.152.64.1
128.32.136.9

localhost loghost
water.CS.Example.EDU water.CS water
inr-3.CS.Example.EDU inr-3 slip-gateway
ns1.Example.EDU ns1

182

Captulo 15. PPP y SLIP


128.32.136.12

ns2.Example.EDU ns2

2.

Asegurese de que cuenta con la opcin hosts antes de la opcin bind, en su fichero /etc/host.conf. De lo
contrario pueden ocurrir cosas graciosas en su sistema.

3.

Edite el fichero /etc/rc.conf.


1. Especifique su nombre host al editar la lnea que dice:
hostname=minombre.mi.dominio

El nombre completo de su sistema para internet, debe ser escrito en este punto.

2. Aada el dispositivo sl0 a la lista de dispositivos de red, al cambiar la lnea que dice:
network_interfaces="lo0"

a quedar:
network_interfaces=lo0 sl0

3. Aada los parmetros de inicializacin del dispositivo sl0, al aadir la lnea:


ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"

4. Especificque cual ser su ruteador por omisin al editar la lnea:


defaultrouter=NO

a quedar:
defaultrouter=slip-gateway

4.

Edite su fichero /etc/resolv.conf (si no existe debe crearlo), a que contenga lo siguiente:
domain CS.Ejemplo.EDU
nameserver 128.32.136.9
nameserver 128.32.136.12

Como puede ver, lo anterior define el nombre de host, de su servidor de nombres. Claro esta, el nombre de
dominio y las direcciones IP, dependen de su sistema especfico.
5.

Establezca la contrasea del superusuario root y de su smil toor (y de cualquier otro usuario que aun no
cuente con la misma).

6.

Reinicie su sistema y asegurese que cuenta con el nombre de host (hostname) correcto.

15.6.1.2. Haciendo una Conexin con SLIP


1.

Marque el nmero, teclee en el signo de comando slip, ingrese el nombre y la contrasea. Lo que se requiere
ingresar, depende de su sistema. Si utiliza kermit, puede utilizar un script similar al siguiente:
# kermit setup
set modem hayes
set line /dev/modem

183

Captulo 15. PPP y SLIP


set speed 115200
set parity none
set flow rts/cts
set terminal bytesize 8
set file type binary
# El siguiente macro se encarga de llamar e ingresar al sistema
define slip dial 643-9600, input 10 = , if failure stop, output slip\x0d, input 10 Username:, if failure stop, output silvia\x0d, input 10 Password:, if failure stop, output ***\x0d, echo \x0aCONNECTED\x0a

Claro esta, que debe cambiar el nombre y contrase a quedar de acuerdo a sus necesidades. Despus de hacer
esto, puede simplemente teclear slip en el smbolo de sistema (prompt) de kermit, para realizar la conexin.
Nota: El dejar su contrasea en texto plano, en cualquier parte del sistema, generalmente es una mala
idea. Hgalo bajo su propio riesgo.

2.

Dej a kermit en ese punto trabajando (puede suspenderlo tecleando Ctrl-z) y como root, teclee:
# slattach -h -c -s 115200 /dev/modem

Si puede hacer ping a cualquier host que se encuentre del otro lado del ruteador, usted esta conectado!. Si esto
no funciona, puede intentar como argumento del comando slattach, la opcin -a en lugar de utilizar la
optcin -c.

15.6.1.3. Como Terminar la Conexin


Para terminar la conexin haga lo siguiente:
# kill -INT cat /var/run/slattach.modem.pid

esto terminara slattach. Recuerde que para hacer esto, usted debe estar firmado como superusuario (root).
Posteriormente dirijase a kermit (puede hacer esto con fg si lo envio a segundo plano) y salga (tecleando q).
La pgina de ayuda de slattach indica que debe utilizar el comando ifconfig sl0 down, para marcar como
terminado el uso del dispositivo, pero tal parece que esto no hace una gran diferencia para mi. (ifconfig sl0 da el
mismo resultado.)
En algunas ocasiones, puede que su mdem se niegue a cortar la comunicacin (el mio lo hace a veces). Si ese es el
caso, simplemente inicie de nuevo kermit y vuelva a salir. Normalmente en el segundo intento hay exito.

15.6.1.4. Problemas Comunes


Si esto no funciona, sientase libre de preguntarme. Lo siguiente es una recapitulacin de los problemas que ms
comunmente se presentan:

El no utilizar la opcin -c o -a con el comando slattach (Esto debiera se fatal, pero algunos usuarios han
reportado que esto ha solucionado sus problemas.

Usar la opcin s10 en vez de usar la opcin sl0 (puede ser difcil ver la diferencia con algunos tipos de letras).

184

Captulo 15. PPP y SLIP

Intente ifconfig sl0 para visualizar el estatus de sus dispositivos de red. Por ejemplo, puede ser que obtenga
algo similiar a lo siguiente:

# ifconfig sl0

sl0: flags=10 POINTOPOINT


inet 136.152.64.181 --

136.152.64.1 netmask ffffff00

Tambin el comando netstat -r le mostrar la tabla de ruteo, en caso de que obtenga el mensaje no route to te
host, al hacer ping. Un ejemplo de esto se muestra a continuacin:
# netstat -r

Routing tables
Destination

Gateway

Flags

Refs

Use

IfaceMTU

Rtt

Netmasks:

(root node)
(root node)

Route Tree for Protocol Family inet:


(root node) =
default
inr-3.Example.EDU UG
localhost.Exampl localhost.Example. UH
inr-3.Example.ED water.CS.Example.E UH
water.CS.Example localhost.Example. UGH
(root node)

8
224515
5
42127
1
0
34 47641234

sl0
lo0
sl0
lo0

0.438
0.438

Esto es despus de que el sistema ha estado conectado por un tiempo. Los numeros pueden variar en su sistema.

15.6.2. Estableciendo un Servidor SLIP


Este documento provee sugerencias, para establecer un servidor de SLIP, bajo FreeBSD, lo que generalmente
significa configurar su sistema, para que de manera automtica inicie los servicios, al firmarse usuariosclientes
remotos en su sistema.

15.6.2.1. Prerequisitos
Esta seccin es de naturaleza muy tcnica, as que contar con antecedentes sobre esto es requerido. Este documento
supone que usted cuenta con conocimientos sobre el protocolo de redes TCP/IP, y particularmente, redes y
direcciones de nodos, mascaras de red, subneteo, ruteo y protocolos de ruteo, tal como RIP. El configurar servicios
SLIP, en un servidor, requiere un conocimiento de estos conceptos, y si usted no esta familiarizado con estos, puede
leer una copia, ya sea del libro de Craig Hunt; TCP/IP Networking Administration, publicado por OReilly &
Associates, Inc. (Numero ISBN 0-937175-82-X), o alguno de los libros de Douglas Comer, sobre protocolos TCP/IP.
Se da por un hecho, que usted ha instalado y configurado correctamente su(s) mdem(s), as como la configuracin
de su sistema, para efecto de utilizar el mismo para realizar la conexin. Si usted no lo ha hecho, por favor lea el
tutorial sobre configuracin de estos servicios; si cuenta con un navegador para la World-Wide Web, puede ver los
tutoriales disponibles en http://www.FreeBSD.org/ (../../../../index.html).

185

Captulo 15. PPP y SLIP


Puede ser que tambin desee revisar las pginas de ayuda (man), sio(4) para informacin referente a los
controladores de dispositivos de puertos en serie, y ttys(5), gettytab(5), getty(8), & init(8), para ver informacin
relevante, sobre la configuracin de su sistema, para efecto de que acepte accesos (logins) por medio de un mdem, y
quizs stty(1) para informacin sobre los parmetros de configuracin de puertos en serie (tal como clocal, que se
utiliza para la conexin directa por medio de puertos seriales).

15.6.2.2. Echemos un Vistazo


En su configuracin tpica, el desarrollo de FreeBSD como un servidor SLIP, funciona de la siguiente manera: un
Usuario SLIP, se conecta del Servidor SLIP FreeBSD e ingresa al sistema con una identificacin especial, que utiliza
/usr/sbin/sliplogin como shell del usuario. El programa sliplogin busca en el fichero
/etc/sliphome/slip.hosts la lnea que haya sido creada especialmente para el usuario, conecta la lnea serial a
una interfaz SLIP disponible y posteriormente ejecuta el script /etc/sliphome/slip.login, para configurar la
interfaz SLIP.
15.6.2.2.1. Un Ejemplo de Acceso al Servidor SLIP
Por ejemplo si la clave de acceso de un usuario SLIP fuese Shelmerg, la entrada del usuario Shelmerg, en el
fichero /etc/master.passwd se vera algo similar a lo siguiente:
Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin

Cuando Shelmerg accese al sistema, el comando sliplogin, buscar en el fichero


/etc/sliphome/slip.hosts, una lnea, en la cual el ID (identificacin) del usuario coincida, por ejemplo, puede
ser que en el fichero /etc/sliphome/slip.hosts exista una lnea simliar a la siguiente:
Shelmerg

dc-slip sl-helmer

0xfffffc00

autocomp

El comando sliplogin encontrar la lnea que coincida, enganchar la lnea serial a cualquier interfaz SLIP
disponible y posteriormente ejecutar /etc/sliphome/slip.login de manera similar a:
/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp

Si todo marcha bien, /etc/sliphome/slip.login crear una configuracin, por medio de ifconfig, para la
interfaz SLIP, a la cual sliplogin se ha adjuntado (la interfaz slip 0, que era el primer parmetro dado en la lista de
slip.login), para establecer la direccin local IP (dc-slip), la interfaz de la direcin IP Remota (sl-helmer), la
submascara de red para la interfaz SLIP (0xfffffc00) y cualquier otra opcin adicional (autocomp). Si algo no va
del todo bien, normalmente sliplogin guarda bastante informacin para depurar, por medio del demonio
(daemon) syslog, que usualmente guarda dicha infomracin en /var/log/messages (vea la pgina de ayuda
syslogd(8) as como syslog.conf(5) y quizas el fichero /etc/syslog.conf, para ver que es lo que syslogd esta
almacenando y donde es que lo almacena.
OK, basta de ejemplos entremos de lleno en la configuracin del sistema.

15.6.2.3. Configuracin del Kernel


El kernel de FreeBSD, por omisin, cuenta con 2 dispositivos SLIP definidos (sl0 y sl1); usted puede utilizar
netstat -i, para verificar si estos dispositivos se encuentran en el kernel de su sistema.

186

Captulo 15. PPP y SLIP


Un ejemplo del resultado de netstat -i:
Name
ed0
ed0
lo0
lo0
sl0*
sl1*

Mtu
Network
Address
1500
Link 0.0.c0.2c.5f.4a
1500 138.247.224 ivory
65535 Link
65535 loop
localhost
296
Link
Link
296





Ipkts Ierrs
291311
0
291311
0
79
0
79
0
0
0
0
0

Opkts Oerrs Coll


174209
0
133
174209
0
133
79
0
0
79
0
0
0
0
0
0
0
0

En este ejemplo vemos que existen dos dispositivos SLIP en el kernel, que son; sl0 y sl1 (el asterisco que aparece
despus de sl0 y sl1 indica que los dispositivos no estan trabajando.)
Aun cuando el kernel cuente con los dispositivos, por omisin el kernel de FreeBSD, no viene configurado para
enviar paquetes (de hecho su sistema FreeBSD no trabajara como ruteador, por default) esto en base a los
requerimientos para Internet, establecidos por los RFCs ( vea 1009 [Requerimentos para Pasarelas (Gateway) en
Internet], 1122 [Requerimientos para hosts de Internet Capas de comunicacin] y quizs 1127 [RFC sobre Una
Perspectiva de los Requerimientos de Hosts]). Si usted desea que su servidor SLIP sobre FreeBSD, opere como un
ruteador, ser necesario que edite el fichero /etc/rc.conf y cambie la opcin gateway_enable, a quedar YES,
esto habilitar esta funcin.
Ser necesario que reinicie su sistema, para efecto de que estos cambios surtan efecto.
Al verificar su fichero de configuracin del kernel (/sys/i386/conf/GENERIC), podr notar que cerca del final,
hay una lnea como la siguiente:
pseudo-device sl 2

Esta lnea es la que define el numero de dispositivos SLIP disponibles en el kernel; el numero al final de la lnea es el
numero mximo de conecciones SLIP que puede manejar el servidor simultaneamente.
Para ayuda con relacin a la configuracin y compilacin del kernel en su sistema FreeBSD, por favor refierase
Captulo 8 al apartado correspondiente.

15.6.2.4. Configuracin de Sliplogin


Como se menciono anteriormente, existen tres ficheros en el directorio /etc/sliphome, que son parte de la
configuracin de /usr/sbin/sliplogin (vea la pagina de ayuda sliplogin(8) de para ver la ayuda del comando
sliplogin): slip.hosts, que es el fichero que define a los usuarios SLIP, as como sus direcciones IP
correspondientes; slip.login, que normalmente es utilizado para configurar la interfaz de SLIP; y
(opcionalmente) slip.logout, que hace lo opuesto a slip.login, cuando la conexin serial ha terminado.
15.6.2.4.1. Configuraci de slip.hosts
El fichero /etc/sliphome/slip.hosts contiene lneas, que al menos cuentan con cuatro partes, separadas por
espacios en blanco:

Identificador (nombre) del usuario SLIP

Direccin Local (local para el servidor SLIP) de la liga a SLIP

Direccin Remota de la liga a SLIP

187

Captulo 15. PPP y SLIP

Mascara de red

Las direcciones local y remota, pueden ser nombres del host (la resolucin de los mismos, es llevada a cabo, por
medio de /etc/hosts o por el servidor de nombres de dominio (DNS), dependiendo de lo que haya especificado en
el fichero /etc/host.conf), y la mascara de red puede ser un nombre, que puede ser resuelto revisando
/etc/networks. En un sistema de ejemplo, el fichero /etc/sliphome/slip.hosts, puede verse as:
#
# login local-addr
#
#
Shelmerg dc-slip

remote-addr

mask

opt1
opt2
(normal,compress,noicmp)

sl-helmerg

0xfffffc00

autocomp

Al final de la lnea puede ver que existen una o ms opciones.


normal

sin compresin de los encabezados.

compress

compresin de los encabezados.

autocomp

compresin automtica, si el host remoto lo permite.

deshabilitar los paquetes ICMP (de tal forma que cualquier paquete enviado por ping sera
rechazado, en lugar de ocupar de su ancho de banda).

noicmp

La eleccin sobre la direccin local y remota depende si usted va a utilizar una conexin TCP/IP dedicada o bien si
va a utilizar una conexin por medio de proxy ARP en su servidor SLIP (no es correcto proxy ARP, pero es la
terminologa utilizada en esta seccin para describirlo). Si usted no esta seguro que metodo manejar o como asignar
la direccin IP, por favor refierase a alguno de los libros sobre TCP/IP, que se mencionan en los Prerequisitos de
SLIP (Seccin 15.6.2.1) y/o consulte al administrador de IP de su red.
Si usted piensa subnetear para los diferentes clientes SLIP, ser necesario que la direccin de la subred (subnet),
salga de la direccin IP que tenga asignada su red, y el numero de cada cliente, del numero que asigne a su subred.
Posteriormente puede que sea necesario, o bien configurar una ruta esttica a la subred SLIP, por medio de su
servidor SLIP en su ruteador ms cercano por IP.
De otra forma, si usted piensa utilizar un metodo proxy ARP, ser necesario que a sus clientes SLIP, se les asigne
una direccin IP, que se encuentre dentro del rango que este utilizando para su subred Ethernet, y tambi ser
necesario que haga algunos ajustes en los ficheros script /etc/sliphome/slip.login y en
/etc/sliphome/slip.logout, para que usen arp(8), para que maneje la tabla ARP del servidor SLIP y llamados
del proxy-ARP.

15.6.2.4.2. slip.login Configuracin


El tpico fichero /etc/sliphome/slip.login se ve de la siguiente manera:
#!/bin/sh #
#
@(#)slip.login

5.1 (Berkeley) 7/1/90

#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
#
1
2
3
4
5
6
7-n
#
slipunit ttyspeed loginname local-addr remote-addr mask opt-args

188

Captulo 15. PPP y SLIP


#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6

This slip.login file merely runs ifconfig for the appropriate SLIP interface with the local and remote addresses
and network mask of the SLIP interface.
If you have decided to use the proxy ARP method (instead of using a separate subnet for your SLIP clients), your
/etc/sliphome/slip.login file will need to look something like this:
#!/bin/sh #
#
@(#)slip.login

5.1 (Berkeley) 7/1/90

#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
#
1
2
3
4
5
6
7-n
#
slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
# Answer ARP requests for the SLIP client with our Ethernet addr
/usr/sbin/arp -s $5 00:11:22:33:44:55 pub

La lnea adicional, arp -s $5 00:11:22:33:44:55 pub del script slip.login, crea una entrada ARP en la
tabla del servidor SLIP. Esta entrada le indica al servidor SLIP que debe responder con la direccin MAC de su
dispositivo Ethernet, cuando cualquier otro nodo IP en la red, solicite informacin a la IP del cliente SLIP.
Al tomar en cuenta el ejemplo anterior, es importante que sustituya la direccin Ethernet MAC
(00:11:22:33:44:55), con la direccin que corresponde a su tarjeta de red, o definitivamente su proxy ARP no
va a funcionar!. Para efecto de conocer cual es la direccin MAC del dispositivo Ethernet (tarjeta de red), de su
servidor SLIP, puede ejecutar el comando netstat -i, el cual tendr como resultado algo similar a lo siguiente:
ed0

1500

Link 0.2.c1.28.5f.4a

191923 0

129457

116

Esto indica que la direccin MAC de su dispositivo Ethernet, en este sistema es 00:02:c1:28:5f:4a los puntos
que aparecen en la salida del comando netstat -i deben cambiarse por dos puntos, as mismo deber de
anteponerse un cero, a cada dgito hexadecimal que aparezca slo (no en pares), de tal forma que convirtamos la
direccin en lo que arp(8) requiere para trabajar; vea la pgina de ayuda arp(8), para ver informacin completa sobre
su uso.
Nota: Recuerde que cuando cree los ficheros /etc/sliphome/slip.login y /etc/sliphome/slip.logout,
deben contar con permisos de ejecucin (chmod 755 /etc/sliphome/slip.login
/etc/sliphome/slip.logout), de otra forma estos scripts no podrn llevar a cabo su funcin.

15.6.2.4.3. Configuracin de slip.logout


El fichero /etc/sliphome/slip.logout no es indispensable (a menos que vaya a utilizar proxy ARP), pero si
aun as decide crearlo, el siguiente es un ejemplo bsico del script slip.logout :
#!/bin/sh -

189

Captulo 15. PPP y SLIP


#
#

slip.logout

#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
#
1
2
3
4
5
6
7-n
#
slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down

Si usted esta utilizando proxy ARP, es recomendable que le indique a /etc/sliphome/slip.logout, que desea
eliminar la entrada ARP, para el cliente SLIP:
#!/bin/sh #
#
@(#)slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
#
1
2
3
4
5
6
7-n
#
slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
# Dejar de solicitar respuesta ARP al cliente SLIP
/usr/sbin/arp -d $5

El comando arp -d $5, elimina la entrada ARP, que slip.login de proxy ARP aadi al cliente SLIP al
ingresar al sistema.
Para esta ms seguros: asegurese de que el fichero /etc/sliphome/slip.logout cuenta con los permisos
adecuados para su ejecucin, una vez que lo ha creado (ej. chmod 755 /etc/sliphome/slip.logout) .

15.6.2.5. Consideraciones sobre el Enrutamiento


Si usted no esta utilizando el metodo proxy ARP, para efecto de rutear los paquetes entre sus clientes SLIP y el
resto de la red (y quizs Internet), deber de hacer una de las siguientes dos acciones, o bien aadir direcciones
estticas, a su(s) ruteador(es) ms cercanos, para que se reenvien los paquetes de la subred de sus clientes SLIP, por
medio de su servidor SLIP, o bien tendr que instalar y configurar gated en su servidor SLIP (que corre FreeBSD!),
de tal forma que le indique a su(s) ruteador(es), por medio del protocolo correcto, a cerca de su subred SLIP.
15.6.2.5.1. Direcciones de Enrutamiento Estticas
Aadir direcciones estticas de enrutamiento puede ser un problema (o imposible si usted no cuenta con la autoridad
para hacerlo...). Si usted cuenta con una red de ruteo-mltiple en su organizacin, algunos ruteadores, tales como los
fabricados por Cisco y Proteon, puede ser que no sea suficiente con el hecho de configurar las rutas estticas de su
subred SLIP, sino que sea necesario indicar que rutas utilizar para informar a cerca de otras rutas, as que algo de
experiencia as como determinacin para la resolucin de problemas sern necesarias para poner la ruta basada-enruteo-esttico a trabajar.

190

Captulo 15. PPP y SLIP


15.6.2.5.2. Ejecutando gated
Una alternativa para los dolores de cabeza que pueden dar las redes con ruteo esttico, es intalar gated en su
servidor SLIP bajo FreeBSD y configurarlo, para que utilice los protocolos de ruteo apropiados
(RIP/OSPF/BGP/EGP) para informar a otros ruteadores, a cerca de su subred SLIP. Una vez que lo ha compilado e
instalado, deber crear el fichero /etc/gated.conf, que configurar a gated; aqui hay un ejemplo, similar al que
el autor utiliz en un servidor SLIP FreeBSD:
Nota: gated es un software propietario y su cdigo fuente no estar disponible al pblico ms (ms informacin
en el sitio gated (http://www.gated.org/)). Esta seccin solo existe para asegurarse de la compatibilidad con
aquellos que usan la versi antigua.

#
# gated configuration file for dc.dsu.edu; for gated version 3.5alpha5
# Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface
#
#
# tracing options
#
traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;
rip yes {
interface sl noripout noripin ;
interface ed ripin ripout version 1 ;
traceoptions route ;
} ;
#
# Turn on a bunch of tracing info for the interface to the kernel:
kernel {
traceoptions remnants request routes info interface ;
} ;
#
# Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP
#
export proto rip interface ed {
proto direct {
xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections
} ;
} ;
#
# Accept routes from RIP via ed Ethernet interfaces
import proto rip interface ed {
all ;
} ;

191

Captulo 15. PPP y SLIP


En el ejemplo anterior, el fichero de configuracin gated.conf transmite informacin sobre la subred SLIP
xxx.xxx.yy, por medio de RIP al dispositivo Ethernet; si usted esta utilizando un dispositivo de red, diferente de
ed, ser necesario que modifique el parmetro ed por el correspondiente. En este ejemplo, el fichero tambin realiza
una busqueda por el fichero /var/tmp/gated.output, que es un fichero que nos sirve para depurar cualquier error
que se presente en la actividad de gated; usted puede desactivar la opcin de depuracin (debug), si es que gated
esta funcionando correctamente. Ser necesario que modifique xxx.xxx.yy., a quedar con la direccin correcta
de su subred SLIP (asegurese de modificar tambin la mscara de red, en la clusula proto direct tambin).
Una vez que ha instalado y configurado gated en su sistema, necesitar indicarle a FreeBSD que al iniciar el
sistema, ejecute el script para gated, en lugar de ejecutar routed. La forma ms fcil de hacer esto, es editar las
variables de route y router_flags, en el fichero /etc/rc.conf. Por favor vea la pgina de ayuda de gated,
para ver informacin sobre los parmetros de la lneadecomandos.

192

Captulo 16. Networking Avanzado


Networking Avanzado

193

Captulo 17. Correo Electrnico


Correo Electrnico

194

Captulo 18. Lo ltimo de lo ltimo


Restructured, reorganized, and parts updated by Jim Mock. Original work by Jordan Hubbard, Poul-Henning
Kamp, John Polstra, y Nik Clayton.

18.1. Sinopsis
FreeBSD est en desarrollo continuo entre versiones. Para los que quieran estar en lo ltimo de lo ltimo, hay varias
formas de sincronizar tu sistema con el ltimo desarrollo fcilmente. Ests advertido lo ltimo de lo ltimo no es
para cualquiera! Este captulo te ayudar a decidir si quieres seguir el sistema de desarrollo o quedarte en algunas de
las versiones publicadas.
Despus de leer este captulo sabrs:

La diferencia entre las dos ramas de desarrollo; FreeBSD-STABLE y FreeBSD-CURRENT.

Cmo mantener tu sistema al da con CVSup, CVS, o CTM.

Cmo reconstruir y reinstalar el sistema base entero con make world.

Antes de leer este captulo, deberas:

Disponer correctamente tu conexin de red (Captulo 16).

Saber cmo instalar programas adicionales de terceros. (Captulo 4).

18.2. FreeBSD-CURRENT vs. FreeBSD-STABLE


Hay dos ramas de desarrollo de FreeBSD; FreeBSD-CURRENT y FreeBSD-STABLE. Esta seccin explicar un
poco sobre cada una y describir cmo mantener tu sistema al da entre cada rbol respectivo. FreeBSD-CURRENT
ser discutida primero, luego FreeBSD-STABLE.

18.2.1. Manteniendo la versin Current.


Al leer esto, ten en cuenta que FreeBSD-CURRENT es el lo ms reciente del desarrollo y que si t eres nuevo en
FreeBSD, deberas pensartelo muy mucho antes de ejecutarlo.

18.2.1.1. Qu es FreeBSD-CURRENT?
FreeBSD-CURRENT es, literalmente, nada ms que una instantnea diaria sobre el trabajo en el cdigo fuente para
el FreeBSD. Esto incluye trabajo cambiante, cambios experimentales y mecanismos transitorios que podran estar o
no presentes en la prxima versin del programa. Mientras la mayora de nosotros compilamos casi a diario el
FreeBSD-CURRENT las fuentes, Hay perodos de tiempo en que las fuentes son literalmente incompilables. Estos
problemas son solucionados tan pronto como es posible, pero si las fuentes del FreeBSD-CURRENT son un desastre
o una bendicin su utilidad puede ser literalmente una cuestin de en que momento del perodo de 24 horas dado las
grabaste.

195

Captulo 18. Lo ltimo de lo ltimo

18.2.1.2. Quin necesitaFreeBSD-CURRENT?


FreeBSD-CURRENT est disponible generalmente para tres grupos de inters principales:
1. Miembros del grupo FreeBSD que estn activamente trabajando en alguna parte del cdigo fuente del rbol y
para los que mantenerse current es un requisito absoluto.
2. Miembros del FreeBSD grupo que son activos probadores, con el propsito de pasar tiempo trabajando en los
problemas para asegurarse de que FreeBSD-CURRENT se mantiene tan cuerdo como sea posible. Tambin hay
gente que desea hacer sugerencias tpicas en cambios y en la direccin principal del FreeBSD.
3. Miembros externos FreeBSD o algn grupo que desea mantener un ojo en las cosas y usa las fuentes del
"current" por motivos de referencia (reference) (Ej. para leer, no ejecutar). Estas personas tambin hacen
comentarios ocasionales o contribuyen al cdigo.

18.2.1.3. Qu No es FreeBSD-CURRENT?
1. Un rpido sistema de seguimiento para conseguir pre-distribuciones porque has oido que hay alguna nueva
funcionalidad interesante dentro y quieres ser el primero del barrio en tenerla.
2. Un sistema rpido de tener los fallos solucionados.
3. En ningn caso asistencia oficial por nuestra parte. Nosotros nos esforzamos sinceramente en ayudar a la
gente en alguna de las tres situaciones. Nosotros habilitamos FreeBSD-CURRENT pero simplemente no
tenemos tiempo para dar asistencia tcnica. Esto no es porque seamos de alguna forma mala gente que no quiere
ayudar a los dems (ni siquiera estaramos haciendo FreeBSD si lo fueramos), es simplemente porque no
podemos responder 400 mensajes al da y en realidad trabajamos en FreeBSD! Si nos dan a escoger entre
mejorar el FreeBSD y responder montones de preguntas, la mayora de los desarrolladores y usuarios,
problamente opten por lo primero.

18.2.1.4. Usando FreeBSD-CURRENT


1. Unirse a FreeBSD-CURRENT mailing list <freebsd-current@FreeBSD.org> y al FreeBSD CVS commit
message mailing list <cvs-all@FreeBSD.org> . No es slo una buena idea, es esencial. Si no ests en el
FreeBSD-CURRENT mailing list <freebsd-current@FreeBSD.org >, no vers los comentarios que la gente
hace sobre la situacin del sistema current y por esto probablemente terminars tropezando con un montn de
problemas que otros ya han encontrado y solucionado. Casi ms importante, te perders importantes boletines
que podran ser fundamentales para la continuidad de la salud de tu sistema.
La lista de correoFreeBSD CVS commit message mailing list <cvs-all@FreeBSD.org> te permitir ver el
apunte en el registro de "commits" por cada cambio que se realice junto con informacin pertinente sobre
posibles efectos secundarios.
Para unirte a estas listas, enva un correo a <majordomo@FreeBSD.org> and indicando lo siguiente en el
cuerpo del mensaje:
subscribe freebsd-current
subscribe cvs-all

196

Captulo 18. Lo ltimo de lo ltimo


Opcionalmente,puedes tambin ponerhelp y Majordomo te enviar ayuda completa sobre como suscribirse o
desuscribirse a las varias listas de correo que asistimos.

2. Graba las fuentes desde ftp.FreeBSD.org. Puedes hacer esto de varias maneras:
a. Usa el programa cvsup con este supfile
(ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/standard-supfile). Este es
el mtodo ms recomendable, ya que te permite grabar la coleccin entera una vez y a partir de entonces
slo lo que cambie desde entonces.Mucha gente ejecuta cvsup from cron y mantiene actualizadas sus
fuentes automticamente. Tienes que adaptar la muestra de supfile de arriba y configurar cvsup a tu
entorno.Si quieres ayuda para hacer esta configuracin, teclea:
# pkg_add -f
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/All/cvupit-3.0.tgz

b. Usa ftp. El cdigo fuente del rbol del FreeBSD-CURRENT est siempre exportado en:
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/. Algunos de nuestros servidores FTP tambin
permiten grabar los rboles enteros comprimidos/tarred. ej. Mira:
usr.bin/lex

Puedes hacer lo siguiente para conseguir el directorio completo como un archivo tar:
ftp
ftp

cd usr.bin
get lex.tar

c. Usa la aplicaci CTM. Si tienes muy mala conexin (conexiones caras o slo acceso para correo
electrnico) CTMes una opcin. Sin embargo es muy complicado y puede darte archivos rotos. Por eso se
usa raramente, lo que incrementa la posibilidad de que no funcione durante largos periodos de tiempo. Te
recomendamos usar CVSup para cualquiera con un modem de 9600bps modem o una conexin ms rapida.

3. Si ests grabando las fuentes para ejecutarlas y no slo leerlas, entonces graba todo el FreeBSD-CURRENT, no
slo algunos trozos. La razn es que varias partes de las fuentes dependen de actualizaciones de otros sitios, y
tratar de compilar slo una proci casi te garantiza meterte en problemas.
Antes de compilar FreeBSD-CURRENT, lee con cuidado Makefile en /usr/src Deberas al menos ejecutar
un make world la primera vez como parte del proceso de actualizacin. Leer el FreeBSD-CURRENT mailing
list <freebsd-current@FreeBSD.org> te mantendr al da en otros procedimientos de arranque que a veces
se convierten en necesarios cuando nos acercamos a la siguiente versin.

4. Participa! Si estas usando FreeBSD-CURRENT, queremos saber lo que tienes que decir sobre l, especialmente
si tienes sugerencias para mejoras o arreglos de fallos. Recibimos tus sugerencias con ms entusiasmo si
incluyes el cdigo correspondiente!

197

Captulo 18. Lo ltimo de lo ltimo

18.2.2. Manteniendo Stable con FreeBSD


18.2.2.1. Qu es FreeBSD-STABLE?
FreeBSD-STABLE es nuestra rama de desarrollo con la que hacemos las versiones principales. Los cambios van a
esta rama con un ritmo diferente, asumiendo que han ido primero a FreeBSD-CURRENT para probarse. Esta es aun
una rama de desarrolllo, aunque, y esto significa en cualquier momento, las fuentes deFreeBSD-STABLE pueden o
no ser adecuadas para un propsito determinado. Es simplemente otro camino en la ingeniera del desarrollo, no un
recurso para usuarios finales.

18.2.2.2. Quin necesita FreeBSD-STABLE?


Si ests interesado en seguir o en contribuir al proceso de desarrollo de FreeBSD, especialmente en lo relativo a la
prximapoint release de FreeBSD, entonces deberas considerar seguir FreeBSD-STABLE.
Aunque es verdad que algunos arreglos de seguridad van tambien a la rama FreeBSD-STABLE , t no necesitas
seguir FreeBSD-STABLE para hacerlo. Cada notificacin de seguridad de FreeBSD explica como solucionar el
problema en la versin que afecta. 1 seguir una rama de desarrollo slo por razones de seguridad es seguramente
tambin traer una gran cantidad de cambios no deseados.
Aunque nosotros nos esforzamos para asegurar que la rama FreeBSD-STABLE compila y funciona en cualquier
ocasin, esto no puede garantizarse, ya que el cdigo es desarrollado en FreeBSD-CURRENT antes de incluirlo en
FreeBSD-STABLE, ms gente usa FreeBSD-STABLE que FreeBSD-CURRENT, asi que es inevitable que algunos
errores se encuentren alguna vez en FreeBSD-STABLE que no eran evidentes en FreeBSD-CURRENT.
Por estas razones, nosotros no recomendamos que sigas ciegamenteme FreeBSD-STABLE, y es especialmente
importante que no actualices algun servidor importante a FreeBSD-STABLE sin probar primero el cdigo en tu
entorno de desarrollo.
Si no tienes los recursos para hacer esto entonces te aconsejamos que ejecutes la ms reciente distribucin de
FreeBSD, y uses el mecanismo de actualizacin binaria entre distribucin y distribucin.

18.2.2.3. Usando FreeBSD-STABLE


1. nete a FreeBSD-STABLE mailing list <freebsd-stable@FreeBSD.org>. Esto te mantendr informado de
las dependencias de construccin que puedan aparecer en FreeBSD-STABLE o cualquier otra cuestin que
requiera especial atencin. Los desarrolladores harn los anuncios en esta lista de correo cuando estn
contemplando algun arreglo polmico o actualizacin, dando a los usuarios la oportunidad de responder si tienen
alguna cuestin que plantear respecto al cambio propuesto.
La lista de correo FreeBSD CVS commit message mailing list <cvs-all@FreeBSD.org> te permitir ver el
apunte del commit log para cada cambio tal como se hace junto con la posible informacin sobre los efectos
secundarios.
Para apuntarse a estas listas, enva un correo a <majordomo@FreeBSD.org> y especifica lo siguiente en el
cuerpo del mensaje:
subscribe freebsd-stable
subscribe cvs-all

198

Captulo 18. Lo ltimo de lo ltimo


Opcionalmente, puedes indicar help y Majordomo te enviar ayuda completa sobre como suscribirte y
desuscribirte a las otras listas que mantenemos.

2. Si ests instalando un nuevo sistema y quieres que sea lo ms estable posible, puedes grabar simplemente la
ltima rama con la instantnea ms antigua de ftp://releng4.FreeBSD.org/pub/FreeBSD/ and install it like any
other release.
Si ya estas usando una versin previa de FreeBSD y quieres actualizar via fuentes entonces puedes hacerlo
fcilmente desde ftp.FreeBSD.org. Esto puede hacerse de tres maneras:
a. Usa el programa cvsup con this supfile
(ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/stable-supfile). Este es el
sistema recomendado, ya que te permite grabar la coleccin entera una vez y a partir de entonces slo lo que
cambie. Algunos usan cvsup from cron para mantener las fuentes al da automticamente. Para una
interface bastante sencilla para esto, simplemente teclea:
# pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz

b. Usa ftp. Las fuentes de rbol para el FreeBSD-STABLE estn siempre exported en:
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/
Algunos de nuestros servidores de FTP permiten tambien grabar los rboles completos compressed/tarred.
ej. Mira:
usr.bin/lex

Puedes hacer lo siguiente para conseguir el directorio como archivo tar:


ftp
ftp

cd usr.bin
get lex.tar

c. Usa CTM. Si no tienes una conexi rpida y barata a Internet,este es el mtodo que debera considerar usar.

3. Bsicamente, si necesitas acceso rpido bajo demanda a la fuente y el ancho de banda no es una consideracin ,
usa cvsup o ftp. De otro modo, usa CTM.
4. Antes de compilarFreeBSD-STABLE, lee el Makefile en /usr/src con cuidado. Deberas al menos ejecutar
un make world la primera vez como parte del proceso de instalacin.Leyendo elFreeBSD-STABLE mailing list
<freebsd-stable@FreeBSD.org> te mantendr al da en los otros procedimientos de arranque que alguna
vez pueden llegar a ser necesarios cuando nos acercamos a la siguiente versin.

18.3. Sincronizando tu cdigo fuente


Hay varias formas de usar una conexin de Internet (o de correo) para estar al da en cualquier area dada de las
fuentes del proyecto FreeBSD, o en todas las areas, dependiendo de lo que te interese. Los servicios primarios que
ofrecemos son Anonymous CVS, CVSup, y CTM.

199

Captulo 18. Lo ltimo de lo ltimo


AvisoAunque es posible actualizar slo partes del cdigo fuente del arbol, el nico procedimiento de
actualizacin que prestamos es actualizar el arbol entero y recompilarlo a la vez junto al espacio del usuario (ej.,
todos los programas que se ejecutan en el espacio del usuario, tales como los que estn en /bin y /sbin) y las
fuentes del kernel. Actualizar slo parte del cdigo fuente del arbol, slo el kernel, o slo el area de usuario trae
a menudo problemas.Estos problemas pueden ir desde errores de compilacin hasta kernel panics o corrupcin
de datos.

Anonymous CVS and CVSup usa el modelo pull para actualizar las fuentes. En caso de CVSup el usuario (o un
cron script) invoca el programa cvsup, y este interactua con el servidor cvsupd en algn lugar para traer los

archivos actualizados. Las actualizaciones que recibes lo estn al minuto y t las consigues cuando, y slo cuando,
las quieras. Puedes fcilmente restringir tus actualizaciones a los archivos o directorios que te interesen. Las
actualizaciones se crean sobre la marcha por el servidor segn lo que tienes o quieras tener. Anonymous CVS es
bastante mas simple que CVSup que es slo una extensin de CVS que permite retirar los cambios directamente
desde un repositorio (repository) CVS remoto. CVSup puede hacer esto mucho ms eficientemente, pero
Anonymous CVS es ms fcil de usar.
CTM, por otro lado, no compara las fuentes que tienes interactivamente con las del archivo master o de otro que
retires..En vez de eso, un script que identifica los cambios en los archivos se ejecuta varias veces al da en la maquina
maestra CTM, cualquier cambio detectado, sellado con una secuencia de nmeros y codificado para transmitirlo en
correo ( slo en ASCII imprimible). Una vez recibido, estosCTM deltas pueden ser manipulados por la utilidad
ctm.rmail(1) que automticamente decodifica, verifica y aplica los cambios a la copia de las fuentes del usuario. Este
proceso es ms eficiente que CVSup, y pone menos presin en nuestros recursos de servidor ya que es un modelo de
empujar en vez de tirar .
Hay otros aspectos a tener en cuenta, por supuesto. Si descuidadamente barres trozos de tu archivo, CVSup te
detectar y reconstruir las porciones daadas. CTM no hace esto, y si borras algn trozo de las fuentes del rbol (y
no has hecho una copia de respaldo) entonces tendrs que partir de cero ( desde el ms reciente CVS base delta) y
reconstruirlo todo con CTM o, con anoncvs, simplemente borrar los malos bits (bad bits) y resincronizars

18.4. Usando make world


Una vez que has sincronizado las fuentes de tu rbol local con alguna versin determinada deFreeBSD
(FreeBSD-STABLE, FreeBSD-CURRENT, y asi) puedes usar las fuentes del rbol para reconstruir el sistema.
Haciendo una copia de respaldoNunca se hace suficiente hincapi sobre lo importante que es hacer una
copia de respaldo de tu sistema antes de hacer esto. Aunque reconstruir world es (siempre que sigas estas
instrucciones) una tarea fcil de hacer, habr veces que inevitablemente cometas errores, o cuando errores
hechos por otros en las fuentes del rbol inutilice tu sistema haciendolo inarrancable.
Asegrate de haber hecho una copia de respaldo. Y ten un diskette de reparacin a mano. Probablemente no
tengas nunca que usarlo, pero es mejor asegurarse que lamentarlo!

Suscribete a la lista de correo correctaLas ramas FreeBSD-STABLE and FreeBSD-CURRENT son , por
naturaleza, en desarrollo . La gente que contribuye a FreeBSD son humanos, y los errores ocasionalmente
ocurren.

200

Captulo 18. Lo ltimo de lo ltimo


Algunos de estos errores pueden ser poco dainos, que slo causan que tu sistema imprima una nueva seal
de diagnostico. O el cambio puede ser catastrfico, e inutilizar tu sistema inarrancable o destruir tu sistema de
archivos ( o algo peor).
Si un problema como este ocurre, un heads up es enviado a la lista de correo apropiada, explicando la
naturaleza del problema y a que sistema afecta. Y un all clear anuncio es enviado cuando el problema ha sido
resuelto.
Si intentas seguir FreeBSD-STABLE o FreeBSD-CURRENT y no lees la FreeBSD-STABLE mailing list
<freebsd-stable@FreeBSD.org> o la FreeBSD-CURRENT mailing list <freebsd-current@FreeBSD.org>
respectivamente, entonces ests buscando problemas.

18.4.1. Lee /usr/src/UPDATING


Antes de hacer nada mas, lee /usr/src/UPDATING (o el archivo equivalente dondequiera que tengas una copia del
cdigo fuente). Este archivo puede contener importante informacin sobre problemas que puedes encontrarte, o
indicar el orden en que debes ejecutar ciertas ordenes.) Si UPDATING contradice algo que leas aqui, UPDATING tiene
preferencia.
Importante: Leer UPDATING no es un sustituto aceptable a la suscripcion a la lista adecuada, como se describi
antes. Los dos requisitos son complementarios no exclusivos.

18.4.2. Comprueba /etc/make.conf


Examina los archivos /etc/defaults/make.conf y /etc/make.conf. El primero contiene algunas definiciones
por defecto la mayora de las cuales ya se han comentado. Para hacer uso de ellas cuando reconstruyas tu sistema
desde las fuentes, aadelas a /etc/make.conf. Ten en cuenta que cualquier cosa que aadas a /etc/make.conf
se usa cada vez que ejecutas make, as que es una buena idea colocarles algo sensato para tu sistema.
Un usario tpico querr probablemente copiar las lneas CFLAGS y NOPROFILE encontradas en
/etc/defaults/make.conf a /etc/make.conf y ponerles un comentario.
Examina las otras definiciones (COPTFLAGS, NOPORTDOCS y sucesivamente) y decide si son importantes para ti.

18.4.3. Actualiza /etc/group


Este directorio /etc contiene una gran parte de la informacin sobre la configuracin de tu sistema ,asi como scripts
que se ejecutan al iniciarse el sistema. Algunos de estos scripts cambian de versin en versin de FreeBSD.
Algunos de estos archivos de configuracin son usados en el funcionamiento del da a da del sistema. En particular,
/etc/group.
Ha habido ocasiones durante la instalacin de make world que se ha supuesto la existencia de ciertos nombres de
usuario o grupos. Cuando se lleva a cabo una actualizacion es probable que alguno de estos grupos no existan. Esto
causa problemas cuando actualizas. para>

201

Captulo 18. Lo ltimo de lo ltimo


El ejemplo ms reciente de esto es cuando el grupo ppp (llamado despues network) fue aadido. A los usarios
les fall el proceso de instalacin cuando partan del subsistema ppp fueron instaladas usando un nombre de grupo
inexistente (para ellas).
La solucin es examinar /usr/src/etc/group y comparar su lista con la tuya.Si hay algn grupo en el nuevo
archivo que no estn en tu archivo entonces cpialos encima. De la misma forma, deberas renombrar cualquier
grupo en /etc/group que tenga la misma GID pero un nombre diferente para aquellas en /usr/src/etc/group.
Sugerencia: Si te sientes particularmente paranoico, puedes comprobar tu sistema para ver que archivos
pertenecen al grupo que estas renombrando o borrando.
# find / -group GID -print

mostrar todos los ficheros que pertenecen al grupo GID (que puede ser o un nombre de grupo o una ID
numrica de grupo).

18.4.4. Cambiando a modo Monousuario


Puede que quieras compilar el sistema en modo monousuario.Aparte del beneficio obvio de hacer que las cosas
vayan ms rapido , reinstalar el sistema tocar un montn de archivos importantes del sistema, todos los binarios
standard del sistema, bibliotecas incluso archivos y dems. Cambiar estas cosas en un sistema en funcionamiento
(especialmente si en ese momento hay usuarios activos en el sistema) es ganas de meterse en lios.
Otro mtodo es compilar el sistema en modo multiusuario y luego cambiar a modo monousuario para la
instalacin.Si te gustara hacerlo de esta forma, simplemente retrasa los siguientes pasos hasta que hayas completado
la construccin.
Como superusuario, ejecuta
# shutdown now

desde un sistema en funcionamiento, al que cambiar a modo monousuario.


Alternativamente, reinicia el sistema, y en el boot promt, introduce la -s flag. El sistema se reiniciar en modo
monousuario.En el promt de la shell deberas ejecutar:
#
#
#
#

fsck -p
mount -u /
mount -a -t ufs
swapon -a

Esto comprueba los sistemas de archivos, remounts / lectura/escritura, mounts, todos los sistemas de archivos UFS
referenciados en /etc/fstab y entonces hace los cambios indicados.

18.4.5. Quita /usr/obj


Mientras algunas partes son reconstruidas ellas se colocan en directorios que (por defecto) estan bajo /usr/obj. Los
directorios shadow estos bajo /usr/src.

202

Captulo 18. Lo ltimo de lo ltimo


Puedes acelerar el proceso make world y posiblemente ahorrarte dolores de cabeza por las dependencias quitando
este directorio tambin.
Algunos archivos bajo /usr/obj pueden tener colocada la seal inmutable (immutable flag set) (mira chflags(1)
para mas informacin) que deber ser quitada primero.
# cd /usr/obj
# chflags -R noschg *
# rm -rf *

18.4.6. Recompilar la fuente


18.4.6.1. Guardando la salida (Output)
Es una buena idea guardar la salida que obtienes cuando se ejecuta make(1) en otro archivo. Si algo sale mal tendrs
una copia del mensaje de error.Aunque esto puede no ayudarte en el diagnstico de que ha salido mal, puede ser til
si mandas tu problema a una de las listas de FreeBSD .
La forma ms fcil de hacer esto es usar la orden script(1) , con un parmetro que indique el nombre del archivo
donde guardar los datos de salida.Podras hacer esto inmediatamente antes de reconstruir world, y luego teclear
exit cuando el proceso ha terminado.
# script /var/tmp/mw.out

Script started, output file is /var/tmp/mw.out


# make TARGET

... compile, compile, compile ...


# exit

Script done, ...

Si haces esto, no guardes el output en /tmp. Este directorio podria ser vaciado en el proximo arranque. Un lugar
mejor para almacenarlo es en /var/tmp (como en el ejemplo anterior) o en el directorio home de root.

18.4.6.2. Compilar e instalar el Sistema Base (Base System)


Debes estar en /usr/src directory...
# cd /usr/src

(a menos que, por supuesto, tu cdigo fuente este en otra parte, en ese caso cambia a ese directorio).
Para reconstruir world utiliza el make(1) command. Esta orden lee las instrucciones desde el Makefile, que
describe como el programa que comprende el FreeBSD debe ser reconstruido.
El formato general de la lnea de ordenes que teclears es como sigue:
# make -x -DVARIABLE target

En este ejemplo, -x es una opcin que pasaras a make(1). Mira la pagina del manual de make(1) para un ejemplo de
las opciones que puedes pasar.

203

Captulo 18. Lo ltimo de lo ltimo


-DVARIABLE pasa una variable a el Makefile. El comportamiento de Makefile esta controlado por esas
variables.Estas son las mismas variables como estan colocadas en /etc/make.conf, y esto proporciona otra forma

de disponerlas.
# make -DNOPROFILE=true target

es otra forma de indicar que las bibliotecas indicadas no se construyan, y corresponde con el
NOPROFILE=
true
#
Avoid compiling profiled libraries

Las lneas en /etc/make.conf.


target dicen a make(1) que quieres hacer. Cada Makefile define un nmero de diferentes objetivos, y la
eleccin de esos objetivos determina lo que ocurre.
Algunos objetivos estan listados en Makefile, pero no significa que puedas ejecutarlos En vez de eso, se usan por el
proceso de consruccin para romper los pasos necesarios para reconstruir el sistema en un nmero de sub-pasos.
La mayora de las veces, no necesitas pasar ningun parametro a make(1), y asi tu orden se parecer a esto:
# make target

A partir de la versin 2.2.5 de FreeBSD (en realidad, se cre por primera vez en la FreeBSD-CURRENT branch, y
luego posteriormente colocado en FreeBSD-STABLE a mitad de camino entre 2.2.2 y 2.2.5) el objetivo (target)
world se ha dividido en dos. buildworld y installworld.
Como el nombre implica, buildworld construye un nuevo rbol bajo /usr/obj, y installworldinstala este
rbol en una mquina con la versin current.
Esto es muy til por dos motivos.Primero, te permite construir de forma segura, sabiendo que ningn componente
del sistema current ser afectado. La construccin es self hosted. Por esto puedes con seguridad ejecutar
buildworld en una m6aacute;quina funcionado en modo multiusuario sin miedo a efectos indeseados.Aunque aun
es recomendable que ejecutes installworld en modo monousuario.
En segundo lugar, permite usar NFS mounts para actualizar multiples m6aacute;quinas en tu red. Si tienes tres
mquinas, A, B y C que quieres actualizar, ejecuta make buildworld y make installworld en A. B y C deben
luego mount NFS /usr/src y /usr/obj desde A, y puedes luego ejecutar make installworld para instalar los
resultados de la construccin en B y C.
Aunque el world target an exista, se recomienda firmemente que no lo uses.
Ejecutar
# make buildworld

Ahora es posible especificar un opcin -j make lo que provocar varios procesos simultaneos. Esto es lo mas til en
mquinas con multiples CPU. Sin embargo, ya que el proceso de compilacin es IO bound mas que CPU bound es
tambin til en mquinas con una sla CPU.
En una tpica mquina mono-CPU ejecutaras:
# make -j4 buildworld

make(1) tendras mas de 4 procesos ejecutandose en cada momento. La evidencia emprica comentada en las listas
de correo muestran que esto da el mejor resultado.

204

Captulo 18. Lo ltimo de lo ltimo


Si tienes una mquina multi-CPU y estas usando un kernel configurado SMP prueba valores entre 6 y 10 y mira
como se aceleran las cosas.
Estas advertido de que esto es an experimental y que hacer commits al cdigo fuente del rbol puede
ocasionalmente romper esta posibilidad. Si world falla al compilar usando este parmetro intentalo de nuevo sin l,
antes de informar de los problemas.

18.4.6.3. Momento (Timings)


Muchos factores influyen en el tiempo de construccin, pero generalmente un Pentium 3 500 Mhz con 128 MB de
RAM tardara 2 horas en construir el rbol FreeBSD-STABLE , sin trucos o cortes durante el proceso. Un rbol
FreeBSD-CURRENT tardar algo mas.

18.4.7. Compilar e instalar un nuevo Kernel


Para sacar el mximo provecho de nuestro sistema debemos recompilar el kernel. Esto es prcticamente una
necesidad, ya que ciertas estructuras de memoria podran haber cambiado y ciertos programas como ps(1) y top(1)
fallarn hasta que el kernel y la versiones del cdigo fuente sean la misma.
El modo ms simple y seguro de hacer esto es construir e instalar un kernel basado en GENERIC. Mientras GENERIC
puede no teer todos los dispositivos necesarios para tu sistema, debe tener todo lo necesario para arrancar tu sistema
de nuevo en modo monousuario. Esta es una buena prueba de que el nuevo sistema funciona correctamente. Despus
de hacer el arranque desde GENERIC y verificar que el sistema funciona puedes luego construir un nuevo kernel
basado en el archivo de configuracin de tu kernel normal.
Si estas actualizando de FreeBSD 4.0 a superior entonces el procedimiento standard de construccin de kernel
(descrito Captulo 8) es desaconsejable.En vez de eso deberas, ejecutar estas ordenes
# cd /usr/src
# make buildkernel
# make installkernel

Si ests actualizando a una versin de FreeBSD por debajo de 4.0 usa el procedimiento de construccin standard del
kernel. Sin embargo, se recomienda que uses una nueva versin de config(8), usando una lnea de ordenes como esta.
# /usr/obj/usr/src/usr.sbin/config/config KERNELNAME

18.4.8. Arranca en Modo Usuario nico


Deberas arrancar en modo usuario nico para probar como funciona el nuevo kernel.Haz esto siguiendo las
instrucciones en Seccin 18.4.4.

18.4.9. Instalar los Nuevos Binarios del Sistema


Si estuvieses construyendo una version de FreeBSD suficientemente reciente como para haber usado make
buildworld entonces deberas usar ahora el installworldpara instalar el nuevo sistema de binarios.

205

Captulo 18. Lo ltimo de lo ltimo


Ejecuta
# make installworld

Nota: Si especificaste variables en la lnea de orden make buildworld deberas poner las mismas variables en
la lnea de orden de make installworld . Esto no es necesariamente cierto para otras opciones; por ejemplo, ,
-j nunca debe ser usada con installworld.
Por ejemplo, si ejecutaste:
# make -DNOPROFILE=true buildworld

debes instalar los resultados con:


# make -DNOPROFILE=true installworld

de otro modo, instalara bibliotecas seleccionadas que no haban sido construidas durante la fase make
buildworld .

18.4.10. Actualizacin de archivos no actualizados por make world


Rehacer el world no actualizar ciertos directorios (en particular, /etc, /var y /usr) con los archivos de
configuracin nuevos o cambiados.
El medio ms simple para actualizar estos archivos es usar mergemaster(8), aunque es posible hacerlo manualmente
si lo prefieres. Nosotros te recomendamos fervientemente usar mergemaster(8), aunque, si lo haces entonces puedes
saltar a la siguiente seccin , puesto que mergemaster(8) es muy simple de usar. Deberas leer la pgina del manual
primero, y hacer una copia de respaldo de /etc por si algo va mal.
Si deseas hacer la actualizacin manualmente no basta con que copies los archivos de /usr/src/etc a /etc y que
funcione. Algunos de estos archivos deben ser instalados primero. Esto es porque el directorio/usr/src/etc no
es una copia de lo que tu directorio /etc debera parecer. Adems, hay archivos que deberan estar en /etc que no
estn en /usr/src/etc.
El medio ms sencillo de hacer esto a mano es instalar los archivos en un nuevo directorio y luego trabajar con ellos
buscando las diferencias.
Haz una copia de tu existente /etcAunque en teora nada va a tocar este directorio automticamente, es
mejor estar seguros. As que copia tu existente /etc en lugar seguro. Algo como:
# cp -Rp /etc /etc.old

-R hace una copia recursiva , -p almacena los tiempos, propiedad de los archivos y cosas as.

Necesitas construir el grupo de directorios que hagan el papel de / para instalar el nuevo /etc y otros archivos dentro.
/var/tmp/root es una eleccin razonable, y tambin se requiere un nmero de subdirectorios debajo de este.
# mkdir /var/tmp/root
# cd /usr/src/etc

206

Captulo 18. Lo ltimo de lo ltimo


# make DESTDIR=/var/tmp/root distrib-dirs distribution

Esto construir la necesaria estructura de directorio e intalar los archivos.Un montn de directorios que habrn sido
creados bajo /var/tmp/root estan vacios y deberan ser borrados. Una forma muy f6aacute;cil de hacerlo es:

# cd /var/tmp/root
# find -d . -type d | xargs rmdir 2 /dev/null

As quitamos todos los directorios vacios. (El error standard es redirigido a /dev/null para prevenir las
advertencias sobre directorios que no estn vacios.)
/var/tmp/root ahora contiene todos los archivos que deberan estar colocados en lugares adecuados bajo /. Ahora
tienes que ir a cada archivo y determinar cunto difieren de tus archivos exiting.

Date centa que algunos de los archivos que se habrn instalado en /var/tmp/root tienen un leading .. En el
momento de escribir esta documentacin los nicos archivos como estos son los archivos de inicio de la shell en
/var/tmp/root/ y /var/tmp/root/root/, aunque podra haber otros (dependiendo de cuando leas
esto.Asegurate de usar ls -a para capturarlos.
El sistema ms fcil para hacerlo es usar diff(1) para comparar los dos ficheros.
# diff /etc/shells /var/tmp/root/etc/shells

Esto te mostrar las diferencias entre tu archivo /etc/shellsy el nuevo archivo /etc/shells . salos para
decidir si fusionas con los cambios que hayas hecho o si lo copias encima de tu viejo archivo.
Nombra el Nuevo Directorio de Root (/var/tmp/root) con un Sello temporal (time stamp), de esta forma
puedes comparar fcilmente las diferencias entre versiones: Reconstruir frecuentemente el world significa
que actualizas /etc tambien frecuentemente, lo que puede ser un poco pesado.
Puedes acelerar este proceso manteniendo una copia del ltimo grupo de archivos cambiados que hayas
fusionado en /etc. El siguiente metodo te da una idea de como hacer esto.
1.

Make the world como normal. Cuando quieras actualizar /etcy los otros directorios, dle al directorio de
destino un nombre basado en la fecha actual. Si estuvieses haciendo esto el 14 de Febrero de 1998 haras
lo siguiente.
# mkdir /var/tmp/root-19980214
# cd /usr/src/etc
# make DESTDIR=/var/tmp/root-19980214 \

distrib-dirs distribution

2.

Aade los cambios del directorio segn lo explicado arriba.


No quites el directorio /var/tmp/root-19980214 cuando hayas acabado.

3.

Cuando hayas descargado la ultima versin de las fuentes y las hayas rehecho, sigue el paso 1.Esto te dar
un nuevo directorio, que podra llamarse /var/tmp/root-19980221 (si esperas una semana entre las
actualizaciones).

4.

Tu puedes ahora ver las diferencias que se han hecho en esa semana intermedia usando diff(1) puedes
usar diff para buscar recursivamente las diferencias entre los dos directorios.
# cd /var/tmp
# diff -r root-19980214 root-19980221

Tpicamente, este conjunto de diferencias sern ms pequeas que las que hay entre
/var/tmp/root-19980221/etc y /etc. Como las diferencias son menores, es ms fcil enviar esos
cambios hasta tu directorio /etc .

207

Captulo 18. Lo ltimo de lo ltimo


5.

Ahora puedes quitar el ms viejo de los dos directorios /var/tmp/root-*.


# rm -rf /var/tmp/root-19980214

6.

Repite el proceso cada vez que necesites aadir un cambio a /etc.

Puedes usar date(1) para automatizar la generacin de los nombres de directorio.


# mkdir /var/tmp/root-date "+%Y%m%d"

18.4.11. Actualiza /dev


DEVFS: Si ests usando DEVFS esto no sera necesario.

En la mayora de los casos, la herramienta mergemaster(8) se dar6aacute; cuenta cuando es necesario actualizar
dispositivos y se ofrecer a hacerlo automticamente. Estas instrucciones te dirn como hacerlo manualmente.
Por motivos de seguridad, este es un proceso con varios pasos.
1.

Copia /var/tmp/root/dev/MAKEDEV en /dev.


# cp /var/tmp/root/dev/MAKEDEV /dev

Si usaste mergemaster(8) para actualizar /etc, entonces tu script MAKEDEV debera haberse actualizado ya,
aunque no hace dao si lo compruebas (con diff(1))y lo copias manualmente si fuese necesario.
2.

Ahora, toma una instantnea de tu actual /dev. Esta instantnea necesita contener los permisos, propiedades,
nmeros mayores y menores de cada archivo, pero no debera contener un sello temporal (time stamp) La forma
ms fcil de hacerlo es usar awk(1) para sacar alguna informacin.
# cd /dev
# ls -l | awk {print $1, $2, $3, $4, $5, $6, $NF} > /var/tmp/dev.out

3.

Rehacer todos los dispositivos.


# sh MAKEDEV all

4.

Copia otra instantnea del directorio , esta vez en /var/tmp/dev2.out. Ahora mira entre esos dos archivos
por si se te olvido crear algun dispositivo. No debera haber ninguno, pero es mejor estar seguro que lamentarlo.
# diff /var/tmp/dev.out /var/tmp/dev2.out

Podrs detectar ms fcilmente discrepancias en las cuotas del disco que tienen que ver con mandatos tales como
# sh MAKEDEV sd0s1

Para recrear las entradas a las cuotas. Tus circunstancias especificas pueden variar.

208

Captulo 18. Lo ltimo de lo ltimo

18.4.12. Actualiza /stand


Nota: Este paso se incluye para completar. Puede omitirse sin miedo.

Para terminar completamente , podras querer actualizar los archivos en /stand tan bien. Estos archivos consisten en
enlaces sostenidos (hard links) a el binario /stand/sysinstall. Este binario debera estar enlazado estticamente,
para que pueda funcionar cuando ningn otro sistema de archivos (y en particular /usr)haya sido montado.
# cd /usr/src/release/sysinstall
# make all install

18.4.13. Reinicio
Ya esta hecho. Despues de que hayas verificado que todo parece estar en el lugar adecuado puedes reiniciar el
sistema. Un simplefastboot(8) lo har.
# fastboot

18.4.14. Finalizado
Deberas tener ahora tu sistema operativo actualizado con exito. Felicidades.
Si las cosas fueron ligeramente mal, es facil reconstruir una parte del sistema. Por ejemplo, si accidentalmente
borraste /etc/magic como parte de la actualizacin o al aadir algo a /etc, la orden (command) file(1) dejara de
funcionar. En ese caso, el arreglo sera ejecutar:
# cd /usr/src/usr.bin/file
# make all install

18.4.15. Preguntas
1. Es necesario rehacer world en cada cambio?
No hay una respuesta fcil para esto, depende de la naturaleza del cambio. Por ejemplo, si slo ejecutaste CVSup, y
mostr las siguientes lneas mientras se actualizaba ,
src/games/cribbage/instr.c
src/games/sail/pl_main.c
src/release/sysinstall/config.c
src/release/sysinstall/media.c
src/share/mk/bsd.port.mk

Probablemente no merezca la pena reconstruir world entero. Puedes ir a los subdirectorios apropiados y make all
install, y ya esta. Pero si el cambio fue mayor, por ejemplo src/lib/libc/stdlib entonces deberas o rehacer

209

Captulo 18. Lo ltimo de lo ltimo


world, o al menos aquellas de sus partes que estan estticamente unidas (asi como cualquier otra cosa que hayas
aadido y que est unida estticamente).
Es cuestin de que elijas. Podras estar contento ejecutando make world digamos cada quincena , y dejar que los
cambios se acumulen hasta ese da. O quiz quieras hacerlo slo a aquellas que hayan cambiado, y tengas confianza
en haber comprobado todas las dependencias.
Y, por supuesto, todo esto depende de cada cunto tiempo actualices y si estas usando la versin stable o current.

2. Cuando compilo falla con montones de seales de error 11 (u otro nmero de seal). Qu ha ocurrido?
Esto normalmente es una indicacin de problemas de mquina. Al ejecutar make world ((Re)making world) se
produce una sobrecarga del ordenador, que frecuentemente desencadena problemas de memoria.Esto se manifiesta
cuando el compilador agoniza recibiendo seales extraas.
Un indicador seguro de esto, es si puedes repetir el make y muere en un punto diferente del proceso.
En este cambio hay poco que puedas hacer excepto comenzar a probar los compenentes de tu mquina para saber
cual es el que falla.

3. Puedo quitar /usr/obj cuando he terminado?


La respuesta corta es si.
/usr/obj contiene todos los archivos binarios (object files) que se produjeron durante la fase de

compilacin.Normalmente, uno de los primeros pasos en el proceso make world es quitar este directorio y hacer
uno nuevo. En este caso, mantener /usr/obj despus de haber terminado no tiene mucho sentido, y liberars un
buen montn de espacio de disco (alrededor de 340MB).
Aunque, si sabes lo que haces puedes hacer que make world se salte este paso. Esto har que la consiguiente
construccin vaya ms rpido, ya que la mayor parte de las fuentes no necesitarn recompilarse. La parte molesta de
esto es que pueden provocarse problemas de dependencias, haciendo que la construccin falle de forma rara. Esto
genera alboroto en las listas de correo, cuando una persona se queja de que su construccin ha fallado, sin darse
cuenta de que es porque ha intentado acortar demasiado.
Si quieres vivir peligrosamente entonces haz make world, pasando la definicin NOCLEAN , como esto:
# make -DNOCLEAN world

4. Puede continuarse una construccin interrumpida?


Esto depende de como de lejos llegaste hasta encontar el problema.
En general (y esto no es una regla fija) El proceso make world construye nuevas copias de herramientas esenciales
(como gcc(1), y make(1)) y el sistema de bibliotecas. Estas herramientas y bibliotecas estan entonces instaladas.Las
nuevas herramientas y bibliotecas son usadas para reconstruirse a si mismas, y son instaladas de nuevo.El sistema
entero (incluyendo ahora programas normales como ls(1) or grep(1))es entonces reconstruido con el nuevo sistema
de archivos.
Si estas al final del proceso, y lo sabes (porque has mirado los resultados que estuviste guardando) entonces puedes
(bastante seguramente) hacer

210

Captulo 18. Lo ltimo de lo ltimo


... fix the problem ...
# cd /usr/src
# make -DNOCLEAN all

Esto no deshar el trabajo de los previos make world.


Si ves el mensaje
-------------------------------------------------------------Building everything..
--------------------------------------------------------------

en la salida make world entonces es probablemente bastante seguro hacer eso.


Si tu no ves ese mensaje, o no estas seguro, entonces es siempre mejor estar seguro que lamentarse, y comenzar otra
vez desde el principio.

5. Puedo usar una mquina comomaster para actualizar montones de maquinas (NFS)?
Esto es una tarea bastante sencilla, y puede ahorrar horas de compilacion en muchas mquinas.Simplemente ejecuta
buildworld en una mquina central, y entonces NFS monta /usr/src y /usr/obj en la mquina remota y
installworld alli.

6. Cmo acelero making the world?

Ejecuta en modo monousuario.

Pon /usr/src y /usr/obj en sistemas de archivos diferentes en discos separados. Si es posible, pon esos discos
en controladoras de discos separadas.

An mejor, pon esos sistemas de archivos a travs de multiples discos usando ccd(4)

Desactiva el perfil (coloca NOPROFILE=true en /etc/make.conf). Casi seguro que no lo necesitas.

Tambin en /etc/make.conf, coloca CFLAGS a algo como -O -pipe. La optimizacin -O2 es mucho ms
lenta y la diferencia de optimizacin entre -O y -O2 es normalmente poco importante. -pipe permite que el
compilador utilice tuberias (pipes) antes que archivos temporales lo que ahorra accesos al disco (a expensas de
memoria).

Pon la opcin -j n para hacer que se ejecuten multiples procesos en paralelo.Esto ayuda se tenga un
procesador o varios.

El sistema de archivos que contiene /usr/src puede ser montado ( o vuelto a montar) con la opcin noatime .
Esto evita al sistema de archivos el grabar la hora de acceso al archivo. Probablemente no te haga falta esta
informacin para nada.

# mount -u -o noatime /usr/src

AvisoEste ejemplo supone que /usr/src esta en su propio sistema de archivo.Si no est (Por ejemplo, si es
parte de /usr ) Entonces necesitars el punto de montaje de ese sistema de archivos, y no /usr/src.

El sistema de archivos que contiene/usr/obj puede montarse (o volverse a montar) con la opcin async. Esto
hace que el disco escriba de modo asncrono. En otras palabras, el grabar se completa inmediatamente, y el dato es

211

Captulo 18. Lo ltimo de lo ltimo


escrito en el disco unos pocos segundos despus.Esto hace que las grabaciones se agrupen juntas y puede ser una
gran aceleracin del funcionamiento.
AvisoTen en cuenta que esta opcin hace el sistema de archivos ms fragil.Con esta opcin hay un
incremento de posibilidades, si la corriente falla, de que el sistemas de archivos sea irrecuperable cuando la
m6aacute;quina se reinicie.
Si /usr/obj es lo nico en este sistema de archivos entonces no hay problema.Si tienes otros datos valiosos
entonces asegrate de tener copias recientes antes de habilitar esta opcin.

# mount -u -o async /usr/obj

AvisoComo arriba, si/usr/objno est en su propio sistema de archivos, reemplazalo en el ejemplo con el
nombre del apropiado punto de montaje.

7. Que hago si algo sale mal?


Asegurate de que tu entorno no tiene extraas cruft de construcciones anteriores.Esto es suficiente.
# chflags -R noschg /usr/obj/usr
#rm -rf /usr/obj/usr
#cd /usr/src
# make cleandir
#make cleandir

S , make cleandir realmente debera ejecutarse dos veces.


Entonces comienza el proceso de nuevo, empezando con make buildworld.
Si an tienes problemas, enva el error y la salida de uname -aa FreeBSD general questions mailing list
<freebsd-questions@FreeBSD.org>. Preprate para contestar preguntas sobre tu setup

Notas
1. Esto no es del todo cierto. No podemos continuar prestando asistencia para las viejas versiones de FreeBSD
nunca ms, aunque lo hayamos hecho durante aos. Para conocer la poltica de seguridad de las viejas versiones
de FreeBSD, por favor mira http://www.FreeBSD.org/security (../../../../security/index.html)

212

Captulo 19. Emulacion Linux


Emulacion Linux

213

III. Apndices

Captulo 20. Obteniendo FreeBSD


Obteniendo FreeBSD

20.1. Servidores FTP

215

Captulo 21. Bibliografa


Mientras que las pginas del manual proveen la referencia definitiva para partes individuales del sistema operativo
FreeBSD, son notorias por no ilustrar como poner todas las piezas juntas para hacer que todo el sistema operativo
funcione fcilmente. Debido a esto, no hay substituto para un buen libro de administracin de sistemas UNIX y un
buen manual del usuario.

21.1. Libros y revistas especficas sobre FreeBSD


Libros y revistas internacionales:

Usando FreeBSD (http://freebsd.csie.nctu.edu.tw/~jdli/book.html) (en Chino).

FreeBSD for PC 98ers (en japons), publicado por SHUWA System Co, LTD. ISBN 4-87966-468-5 C3055
P2900E.

FreeBSD (en japons), publicado por CUTT. ISBN 4-906391-22-2 C3055 P2400E.

Introduccin completa a FreeBSD (http://www.shoeisha.co.jp/pc/index/shinkan/97_05_06.htm) (en japons),


publicado por Shoeisha Co., Ltd (http://www.shoeisha.co.jp/). ISBN 4-88135-473-6 P3600E.

Kit personal del principiante UNIX FreeBSD (http://www.ascii.co.jp/pb/book1/shinkan/detail/1322785.html) (en


japons), publicado por ASCII (http://www.ascii.co.jp/). ISBN 4-7561-1733-3 P3000E.

Manual FreeBSD (traduccin del japons), publicado por ASCII (http://www.ascii.co.jp/). ISBN 4-7561-1580-2
P3800E.

FreeBSD mit Methode (en alemn), publicado por Computer und Literatur Verlag/Vertrieb Hanser, 1998. ISBN
3-932311-31-0.

Manual de instalacin y utilizacin de FreeBSD (http://www.pc.mycom.co.uk/FreeBSD/install-manual.html) (en


japons), publicado por Mainichi Communications Inc. (http://www.pc.mycom.co.jp/).

Libros y revistas en ingls:

The Complete FreeBSD (http://www.cdrom.com/titles/freebsd/bsdcomp_bkx.phtml), publicado por Walnut Creek


CDROM (http://www.cdrom.com/).

21.2. Guas de usuario

Computer Systems Research Group, UC Berkeley. 4.4BSD Users Reference Manual. OReilly & Associates, Inc.,
1994. ISBN 1-56592-075-9

Computer Systems Research Group, UC Berkeley. 4.4BSD Users Supplementary Documents. OReilly &
Associates, Inc., 1994. ISBN 1-56592-076-7

UNIX in a Nutshell. OReilly & Associates, Inc., 1990. ISBN 093717520X

216

Captulo 21. Bibliografa

Mui, Linda. What You Need To Know When You Cant Find Your UNIX System Administrator. OReilly &
Associates, Inc., 1995. ISBN 1-56592-104-6

La Ohio State University (http://www-wks.acs.ohio-state.edu/) ha escrito un Curso de introduccin a UNIX


(http://www-wks.acs.ohio-state.edu/unix_course/unix.html) disponible en lnea en formato HTML y postscript.

Jpman Project, Japan FreeBSD Users Group (http://www.jp.FreeBSD.org/). FreeBSD Users Reference Manual
(http://www.pc.mycom.co.jp/FreeBSD/urm.html) (traduccin japonesa). Mainichi Communications Inc.
(http://www.pc.mycom.co.jp/), 1998. ISBN4-8399-0088-4 P3800E.

21.3. Guas de administrador

Albitz, Paul and Liu, Cricket. DNS and BIND, 2nd Ed. OReilly & Associates, Inc., 1997. ISBN 1-56592-236-0

Computer Systems Research Group, UC Berkeley. 4.4BSD System Managers Manual. OReilly & Associates,
Inc., 1994. ISBN 1-56592-080-5

Costales, Brian, et al. Sendmail, 2nd Ed. OReilly & Associates, Inc., 1997. ISBN 1-56592-222-0

Frisch, leen. Essential System Administration, 2nd Ed. OReilly & Associates, Inc., 1995. ISBN 1-56592-127-5

Hunt, Craig. TCP/IP Network Administration. OReilly & Associates, Inc., 1992. ISBN 0-937175-82-X

Nemeth, Evi. UNIX System Administration Handbook. 2nd Ed. Prentice Hall, 1995. ISBN 0131510517

Stern, Hal Managing NFS and NIS OReilly & Associates, Inc., 1991. ISBN 0-937175-75-7

Jpman Project, Japan FreeBSD Users Group (http://www.jp.FreeBSD.org/). FreeBSD System Administrators
Manual (http://www.pc.mycom.co.jp/FreeBSD/sam.html) (traduccin japonesa). Mainichi Communications Inc.
(http://www.pc.mycom.co.jp/), 1998. ISBN4-8399-0109-0 P3300E.

21.4. Guas de programadores

Asente, Paul. X Window System Toolkit. Digital Press. ISBN 1-55558-051-3

Computer Systems Research Group, UC Berkeley. 4.4BSD Programmers Reference Manual. OReilly &
Associates, Inc., 1994. ISBN 1-56592-078-3

Computer Systems Research Group, UC Berkeley. 4.4BSD Programmers Supplementary Documents. OReilly &
Associates, Inc., 1994. ISBN 1-56592-079-1

Harbison, Samuel P. and Steele, Guy L. Jr. C: A Reference Manual. 4rd ed. Prentice Hall, 1995. ISBN
0-13-326224-3

Kernighan, Brian and Dennis M. Ritchie. The C Programming Language.. PTR Prentice Hall, 1988. ISBN
0-13-110362-9

Lehey, Greg. Porting UNIX Software. OReilly & Associates, Inc., 1995. ISBN 1-56592-126-7

Plauger, P. J. The Standard C Library. Prentice Hall, 1992. ISBN 0-13-131509-9

217

Captulo 21. Bibliografa

Stevens, W. Richard. Advanced Programming in the UNIX Environment. Reading, Mass. : Addison-Wesley, 1992
ISBN 0-201-56317-7

Stevens, W. Richard. UNIX Network Programming. 2nd Ed, PTR Prentice Hall, 1998. ISBN 0-13-490012-X

Wells, Bill. Writing Serial Drivers for UNIX. Dr. Dobbs Journal. 19(15), December 1994. pp68-71, 97-99.

21.5. El sistema operativo por dentro

Andleigh, Prabhat K. UNIX System Architecture. Prentice-Hall, Inc., 1990. ISBN 0-13-949843-5

Jolitz, William. Porting UNIX to the 386. Dr. Dobbs Journal. January 1991-July 1992.

Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and John Quarterman The Design and
Implementation of the 4.3BSD UNIX Operating System. Reading, Mass. : Addison-Wesley, 1989. ISBN
0-201-06196-1

Leffler, Samuel J., Marshall Kirk McKusick, The Design and Implementation of the 4.3BSD UNIX Operating
System: Answer Book. Reading, Mass. : Addison-Wesley, 1991. ISBN 0-201-54629-9

McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and John Quarterman. The Design and Implementation
of the 4.4BSD Operating System. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-54979-4

Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN
0-201-63346-9

Schimmel, Curt. Unix Systems for Modern Architectures. Reading, Mass. : Addison-Wesley, 1994. ISBN
0-201-63338-8

Stevens, W. Richard. TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP and the UNIX Domain
Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63495-3

Vahalia, Uresh. UNIX Internals -- The New Frontiers. Prentice Hall, 1996. ISBN 0-13-101908-2

Wright, Gary R. and W. Richard Stevens. TCP/IP Illustrated, Volume 2: The Implementation. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-63354-X

21.6. Referencia de seguridad

Cheswick, William R. and Steven M. Bellovin. Firewalls and Internet Security: Repelling the Wily Hacker.
Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63357-4

Garfinkel, Simson and Gene Spafford. Practical UNIX Security. 2nd Ed. OReilly & Associates, Inc., 1996. ISBN
1-56592-148-8

Garfinkel, Simson. PGP Pretty Good Privacy OReilly & Associates, Inc., 1995. ISBN 1-56592-098-8

218

Captulo 21. Bibliografa

21.7. Referencia de hardware

Anderson, Don and Tom Shanley. Pentium Processor System Architecture. 2nd Ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-40992-5

Ferraro, Richard F. Programmers Guide to the EGA, VGA, and Super VGA Cards. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-62490-7

La corporacin Intel publica documentacin sobre sus CPUs, chipsets y estndares en su web para desarrolladores
(http://developer.intel.com/), normalmente en archivos con formato PDF.

Shanley, Tom. 80486 System Architecture. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40994-1

Shanley, Tom. ISA System Architecture. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40996-8

Shanley, Tom. PCI System Architecture. 3rd ed. Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-40993-3

Van Gilluwe, Frank. The Undocumented PC. Reading, Mass: Addison-Wesley Pub. Co., 1994. ISBN
0-201-62277-7

21.8. Historia de UNIX

Lion, John Lions Commentary on UNIX, 6th Ed. With Source Code. ITP Media Group, 1996. ISBN 1573980137

Raymond, Eric S. The New Hackers Dictionary, 3rd edition. MIT Press, 1996. ISBN 0-262-68092-0. Also known
as the Jargon File (http://www.ccil.org/jargon/jargon.html)

Salus, Peter H. A quarter century of UNIX. Addison-Wesley Publishing Company, Inc., 1994. ISBN
0-201-54777-5

Simon Garfinkel, Daniel Weise, Steven Strassmann. The UNIX-HATERS Handbook. IDG Books Worldwide, Inc.,
1994. ISBN 1-56884-203-1

Don Libes, Sandy Ressler Life with UNIX special edition. Prentice-Hall, Inc., 1989. ISBN 0-13-536657-7

The BSD family tree. 1997. ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree o


local (file:/usr/share/misc/bsd-family-tree) on a FreeBSD-current machine.

The BSD Release Announcements collection. 1997. http://www.de.FreeBSD.org/de/ftp/releases/

Networked Computer Science Technical Reports Library. http://www.ncstrl.org/

Antiguas releases BSD procedentes del Computer Systems Research Group (CSRG).
http://www.mckusick.com/csrg/: El paquete de 4 CDs cubre todas las versiones de BSD desde la 1BSD hasta la
4.4BSD y 4.4BSD-Lite2 (pero no la 2.11BSD, desafortunadamente). El ltimo disco contiene el cdigo fuente
final y los archivos SCCS.

219

Captulo 21. Bibliografa

21.9. Diarios y revistas

The C/C++ Users Journal. R&D Publications Inc. ISSN 1075-2838

Sys Admin The Journal for UNIX System Administrators Miller Freeman, Inc., ISSN 1061-2688

220

Apndice A. Recursos en Internet


La velocidad del desarrollo de FreeBSD hace imposible el uso de medios impresos como forma de seguir los ltimos
desarrollos. Los recursos electrnicos son la mejor, y con frecuencia la nica, manera de estar informados de los
ltimos avances. Dado que FreeBSD es sacado adelante mediante el trabajo de voluntarios la propia comunidad de
usuarios suele ejercer las funciones de lo que sera un departamento de soporte tcnico, siendo el correo
electrnico y USENET la manera ms efectiva de contactar con esa comunidad.
Las formas de contacto con la comunidad de usuarios de FreeBSD estn detalladas a continuacin. Si usted sabe de
algn otro medio que no figure aqu envelo por favor a FreeBSD documentation project mailing list
<freebsd-doc@FreeBSD.org>para que pueda ser includa.

A.1. Listas de Correo


Aunque la prctica totalidad de los desarrolladores de FreeBSD len USENET no podemos garantizar de modo
rotundo que recibiremos sus dudas rpidamente (o siquiera que las recibamos) si usted las enva a uno de los grupos
de comp.unix.bsd.freebsd.*. Enviando sus dudas a la lista de correo apropiada cumplir dos objetivos, llegar a
los desarrolladores y a una audiencia especfica, lo que le asegurar la mejor (o al menos la ms rpida) respuesta.
Las normas de las diversas listas estn al principio de ste documento. Por favor, la las normas antes de suscribirse
o enviar correo a ninguna lista. Muchos suscriptores de nuestras listas reciben varios cientos de mensajes
relacionados con FreeBSD cada da y estableciendo las normas de uso de las listas intentamos mantener alto el
inters de los mensajes que en ella circulan. Bajarlo hara fallar a las listas de correo como un medio de
comunicacin efectivo para el proyecto.
Todas las listas de correo son archivadas y se pueden hacer bsquedas en ellas desde el servidor WWW de FreeBSD
usando ste enlace (../../../../search/index.html). El archivo ofrece la posibilidad de usar palabras clave, lo que lo
convierte en una excelente manera de buscar respuestas a preguntas frecuentes y debera ser consultado antes de
enviar ninguna duda.

A.1.1. ndice de Listas


Listas Generales:Las siguientes son listas generales de suscripcin libre (y muy recomendable):
Lista

Propsito

cvs-all
freebsd-advocacy

Cambios realizados en el rbol de cdigo de FreeBSD


Proselitismo de FreeBSD

freebsd-announce
freebsd-arch

Sucesos importantes e hitos del proyecto


Debates de arquitectura y diseos

freebsd-bugs

Informes de errores

freebsd-chat

Temas no tcnicos relacionados con la comunidad


FreeBSD.

freebsd-config

Desarrollo de herramientas de instalacin y configuracin


de FreeBSD
Debates acerca del uso de FreeBSD-current

freebsd-current

221

Apndice A. Recursos en Internet


Lista

Propsito

freebsd-isp
freebsd-jobs

Consultas de Proveedores de Servicios de Internet que


usan FreeBSD
Oportunidades de trabajo y consultora bajo FreeBSD

freebsd-newbies

Actividades y discusiones de nuevos usuarios de FreeBSD

freebsd-policy

Decisiones estratgicas del Core Team de FreeBSD. Bajo


volumen y slo lectura

freebsd-questions
freebsd-stable

Preguntas de usuarios y soporte tcnico


Debates acerca del uso de FreeBSD-stable

freebsd-test

Un sitio al que mandar sus mensajes de prueba en lugar de


a una de las dems listas

Listas Tcnicas: Las siguientes listas son para debates tcnicos. Debera leer cuidadosamente las normas de cada
lista antes de suscribirse o enviar correos, dado que hay normas estrictas en cuanto a su uso y contenidos.
Lista

Propsito

freebsd-afs

Porte de AFS a FreeBSD

freebsd-alpha
freebsd-arm

Porte FreeBSD a Alpha


Porte de FreeBSD para procesadores ARM

freebsd-atm

Uso de redes ATM con FreeBSD

freebsd-audit
freebsd-binup

Proyecto de auditora del cdigo fuente


Diseo y desarrollo del sistema de actualizacin binaria

freebsd-cluster
freebsd-database

Uso de FreeBSD en entornos cluster


Debates sobre uso de bases de datos y su desarrollo bajo
FreeBSD

freebsd-doc
freebsd-emulation

Creacin de documentacin sobre FreeBSD


Emulacin de otros sistemas como Linux/DOS/Windows

freebsd-firewire
freebsd-fs

Debates tcnicos sobre Firewire (iLink, IEEE 1394)


Sistemas de ficheros

freebsd-hackers
freebsd-hardware

Debates tcnicos generales


Debates generales sobre harware y su uso en FreeBSD

freebsd-i18n
freebsd-ia64

Internacionalizacin de FreeBSD
Porte de FreeBSD a los prximos sistemas IA64 de Intel

freebsd-ipfw

Debates tcnicos sobre el rediseo del cdigo del


cortafuegos IP
Desarrolladores de RDSI

freebsd-isdn
freebsd-java
freebsd-libh
freebsd-mobile
freebsd-mozilla

Desarrolladores de Java y personas portando los JDK a


FreeBSD
La segunda generacin del sistema de instalacin y
paquetes
Debates sobre equipos porttiles
Porte de mozilla a FreeBSD

222

Apndice A. Recursos en Internet


Lista

Propsito

freebsd-multimedia
freebsd-new-bus

Aplicaciones multimedia
Debates tcnicos sobre la arquitectura de bus

freebsd-net
freebsd-platforms

Debates sobre el cdigo fuente de Redes y TCP/IP


Especfica sobre plataformas de arquitectura no Intel

freebsd-ports
freebsd-ppc

Debates sobre la coleccin de ports


Porte de FreeBSD a PowerPC

freebsd-qa
freebsd-realtime

Debates sobre Control de Calidad, generalmente al salir


una nueva release
Desarrollo de extensiones en tiempo real en FreeBSD

freebsd-scsi
freebsd-security

El subsistema SCSI
Temas de seguridad

freebsd-security-notifications
freebsd-small

Avisos de seguridad
Uso de FreeBSD en aplicaciones embebidas

freebsd-smp
freebsd-sparc

Debates sobre diseo de Multiproceso [A]Simtrico


Porte de FreeBSD a sistemas Sparc

freebsd-standards

Cumplimiento de las normas C99 y POSIX en FreeBSD

freebsd-tokenring

Soporte de Token Ring en FreeBSD

Listas limitadas:Las siguientes listas son para una audiencia ms especializada (e interesada)y probablemente no son
de inters para el pblico en general. Es una buena idea tener una presencia estable en las listas tcnicas antes de
suscribirse a alguna de las limitadas, de modo que se pueda entender la etiqueta de la comunicacin que en ellas se
usa.
Lista

Propsito

freebsd-core

FreeBSD Core Team

freebsd-hubs

Mantenimiento de mirrors (mantenimiento de


infraestructuras)
Desarrollo de la Instalacin

freebsd-install
freebsd-user-groups
freebsd-www

Coordinacin de grupos de usuarios


Mantenimiento de www.FreeBSD.org
(../../../../index.html)

Listas Compendio:La mayora de las listas citadas son accesibles como compendio. Los nuevos mensajes enviados a
la lista son guardados y enviados como un nico correo cuando el archivo llega a un tamao cercano a los 100 Kb.
Las listas accesibles como compendio son:
Lista
freebsd-afs-digest
freebsd-alpha-digest
freebsd-chat-digest
freebsd-current-digest
freebsd-cvs-all-digest

223

Apndice A. Recursos en Internet


Lista
freebsd-database-digest
freebsd-hackers-digest
freebsd-ia64-digest
freebsd-isdn-digest
freebsd-java-digest
freebsd-questions-digest
freebsd-security-digest
freebsd-sparc-digest
freebsd-stable-digest
freebsd-test-digest
Listas CVS:Las siguientes listas son para gente interesada en llevar un seguimiento de los mensajes en el registro
para conocer los cambios hechos en las diferentes reas del rbol de cdigo fuente. Son listas de slo lectura y no se
debe enviar correo a ellas.
Lista

rea de cdigo

Descripcin de rea de cdigo


(cdigo fuente)

cvs-all

/usr/src

Todos los cambios al rbol de cdigo


(superconjunto)

A.1.2. Cmo suscribirse


Todas las listas de correo estn en FreeBSD.org, de manera que para enviar correo a la lista nombredelista
simplemente hay que escribir a nombredelista@FreeBSD.org . Desde ah ser redistribudo a los miembros
de la lista de correo a lo largo y ancho del mundo.


Para suscribirse a una lista enve un correo a <majordomo@FreeBSD.org> incluyendo


subscribe

listname

[ optional address ]

en el cuerpo del mensaje. Por ejemplo, para suscribirse a freebsd-announce usted hara esto:
% mail majordomo@FreeBSD.org

subscribe freebsd-announce
^D

Si quisiera suscribirse bajo otro nombre o enviar una peticin de suscripcin para una lista de correo local (un
sistema muy eficiente si dispone de varias personas interesadas que tengan cuentas de correo en un mismo servidor
esto nos facilita mucho el trabajo!) sto es lo que debe hacer:
% mail majordomo@FreeBSD.org

subscribe freebsd-announce local-announce@ejemplo.com


^D

Por ltimo, tambin es posible desuscribirse de una lista, obtener una lista de los suscriptores de una lista u obtener
una lista de las listas de correo disponibles enviando otro tipo de mensajes de control a majordomo. Para obtener una
lista completa de los comandos disponibles haga esto:

224

Apndice A. Recursos en Internet


% mail majordomo@FreeBSD.org

help
^D

De nuevo quisiramos pedirle que procure mantener los debates de las listas tcnicas dentro de temas tcnicos. Si lo
nico que usted quiere es recibir avisos importantes le sugerimos que se suscriba a freebsd-announce, que est
pensada para tener un trfico muy bajo.

A.1.3. Normas de las listas


Todas las listas de correo de FreeBSD tienen ciertas normas elementales que han de ser respetadas por cualquiera
que las use. Quien no se atenga a ellas recibir hasta dos (2) advertencias escritas del Postmaster de FreeBSD
<postmaster@FreeBSD.org>, despus de las cuales, a la tercera falta, el suscriptor ser borrado de todas las listas
de correo de FreeBSD y filtrado para evitar futuros envos. Lamentamos que esas normas y medidas sean necesarias,
pero la Internet de hoy es, segn parece, un entorno bastante conflictivo, y mucha gente no se da cuenta de cun
frgiles son algunos de sus mecanismos.
Normas a respetar:

El tema de cualquier envo debe atenerse al fin bsico de la lista a la que se escribe, esto es, si la lista es sobre
temas de debate tcnico sus envos deberan versar sobre temas tcnicos. Enviar mensajes irrelevantes o insultos
slo sirve para deteriorar el valor de la lista de correo para sus miembros y no ser tolerado. Para discusiones
libres sin un tema en particular est la lista de correo freebsd-chat <freebsd-chat@FreeBSD.org>, que es
libremente accesible y hecha para ste propsito.

No se debera enviar el mismo mensaje a ms de dos listas, y slamente a 2 cuando exista una necesidad
manifiesta de escribir a ambas listas. Hay una gran cantidad de personas suscritas a ms de una lista y excepto para
las mezclas ms esotricas (digamos "-stable & -scsi") no hay razn para enviar un mensaje a ms de una lista al
mismo tiempo. Si le envan un mensaje en el que aparecen mltiples listas de correo en la lnea "Cc" de la
cabecera, dicha lnea debe ser recortada antes de que enve una respuesta. Usted es el responsable de sus propios
envos cruzados, independientemente de quin fuese el remitente original.

No estn admitidos los ataques personales ni la blasfemia (dentro del contexto o como argumento) y eso incluye
tanto a usuarios como a desarrolladores. Violaciones graves de la netiqueta, como reenviar o extractar mensajes
privados sin permiso ni visos de tenerlo, est mal visto, aunque no prohibido especficamente. Sin embargo, hay
pocos casos en los que algo as encaje en la temtica de una lista, por lo cual lo ms probable es recibir una
advertencia (o ser expulsado) tan slo a causa de ello.

El anuncio de productos o servicios no relacionados con FreeBSD estn estrictamente prohibidas y conllevarn la
inmediata expulsin de la lista si queda demostrado que el autor est practicando el spam o envo de correo no
solicitado.

Normas de las listas individuales:


FREEBSD-AFS
Sistema de Ficheros Andrew
sta lista es para debates sobre el porte y uso de AFS, de CMU/Transarc

225

Apndice A. Recursos en Internet


FREEBSD-ANNOUNCE
Sucesos importantes / hitos
sta es la lista de correo para gente interesada en recibir exclusivamente avisos de sucesos importantes dentro
de FreeBSD. sto incluye anuncios sobre SNAPSHOTS y otras versiones. Puede inclur tambin peticiones de
voluntarios, etc. Es una lista de bajo volumen y estrictamente moderada.

FREEBSD-ARCH
Debates sobre arquitectura y diseo
sta lista es para debates sobre la arquitectura de FreeBSD. Los mensajes deberan mantenerse dentro del
mbito tcnico para el que fu creada la lista. Seran ejemplos de temas aptos para sta lista:

Como reorganizar el sistema de construccin ("build") para poder tener varios procesos de construccin
personalizados funcionando simultneamente.

Qu se necesita arreglar en el VFS para que funcionen las capas de Heidemann.

Cmo cambiar el dispositivo de control de interfaces para que sea posible utilizar los mismos controladores
directamente en la mayora de los buses y arquitecturas.

Cmo escribir un controlador de red.

FREEBSD-AUDIT
Proyecto de auditora del cdigo fuente
sta es la lista de correo del proyecto de auditora del cdigo fuente de FreeBSD. Aunque en principio fu
puesta en marcha para cambios motivados por la seguridad su mbito fu ampliado a la revisin de cualquier
cambio en el cdigo.
En sta lista circula una gran cantidad de parches y probablemente no sea de inters para el tpico usuario de
FreeBSD. Las discusiones de seguridad que no estn relacionadas con una parte especfica del cdigo deben
tener lugar en freebsd-security. Por otra parte se ruega a todos los desarrolladores que enven sus parches a sta
lista para su revisin, especialmente si ataen a una parte del sistema donde un error pudiera afectar seriamente
a la integridad del sistema.

FREEBSD-BINUP
Proyecto de Actualizacin Binaria de FreeBSD
sta lista existe para facilitar el debate sobre el sistema de actualizacion binaria o binup. Caractersticas de
diseo, detalles de implementacin, parches, informes de error, informes de estado, peticiones de
caractersticas, commit logs y en general todo lo relacionado con binup es bienvenido.

FREEBSD-BUGS
Informe de errores

226

Apndice A. Recursos en Internet


sta es la lista de correo para informar de errores en FreeBSD. Siempre que sea posible los errores deberan ser
enviados usando el comando send-pr(1) o el interfaz WEB (../../../../send-pr.html)

FREEBSD-CHAT
Temas no tcnicos relacionados con la comunidad FreeBSD
sta lista contiene todos los mensajes sobre informacin no tcnica y social, contenidos que no tienen cabida en
las dems listas. Eso incluye discusiones sobre si Julio Iglesias parece una grgola, sobre si escribir o no en
maysculas, quin est bebiendo demasiado caf, dnde se elabora la mejor cerveza, quin est fabricando
cerveza en su stano y as sucesivamente. Pueden hacerse anuncios sobre actos importantes (como prximas
fiestas, congresos, bodas, nacimientos, nuevos trabajos, etc.), pero las respuestas deben ser dirigidas a sta
misma lista.

FREEBSD-CORE
FreeBSD Core Team
sta es la lista de correo interna para uso de los miembros del Core Team. Los mensajes pueden ser enviados a
sta lista cuando un problema serio relacionado con FreeBSD necesite un estudio o arbitraje de alto nivel.

FREEBSD-CURRENT
Debates sobre el uso de FreeBSD-current
sta es la lista de correo para usuarios de freebsd-current. Esto incluye advertencias sobre nuevas caractersticas
a ser includas en -current que afecten a todos los usuarios e instrucciones paso por paso que deben ser seguidas
para mantener una instalacin -current. Cualquier usuario de current debera suscribirse a sta lista. sta es
una lista de correo tcnica en la que se esperan contenidos estrictamente tcnicos.

FREEBSD-CURRENT-DIGEST
Debates sobre el uso de FreeBSD-current
ste es el compendio de la lista freebsd-current. Consiste en que todos los mensajes enviados a freebsd-current
son empaquetados y enviados peridicamente como un solo mensaje. sta lista es de Slo-Lectura y no debera
recibir correo.

FREEBSD-DOC
Proyecto de Documentacin
sta lista de correo est destinada a discusiones relacionadas con cuestiones y proyectos relacionados con la
creacin de documentacin de FreeBSD. Los miembros de sta lista son llamados El Proyecto de
Documentacin de FreeBSD. La lista es abierta; suscrbase y contribuya!.

227

Apndice A. Recursos en Internet


FREEBSD-FIREWIRE
Firewire (iLink, IEEE 1394)
sta lista de correo es para debates sobre diseo e implementacin del subsistema Firewire(tambin conocido
como IEEE o iLink) en FreeBSD. Los temas incluyen de modo especfico los standards, dispositivos de bus y
sus protocolos, adaptacin de placas base, tarjetas y chips y la arquitectura e implementacin de cdigo para
soporte nativo.

FREEBSD-FS
Sistemas de ficheros
Debates acerca del sistema de ficheros de FreeBSD. sta es una lista de correo tcnica en la que se espera un
contenido estrctamente tcnico.

FREEBSD-GNOME
GNOME
Debates acerca del Entorno de Escritorio GNOME para sistemas de ficheros FreeBSD. sta es una lista de
correo tcnica en la que se espera un contenido estrictamente tcnico.

FREEBSD-IPFW
Cortafuegos IP
ste es el foro de discusin tcnica dedicado al rediseo del cdigo del cortafuegos IP de FreeBSD. sta es una
lista de correo tcnica en la que se espera un contenido exclusivamente tcnico.

FREEBSD-IA64
Porte de FreeBSD a IA64
sta es una lista de correo tcnica para personas que estn trabajando en el porte de FreeBSD a la plataforma
IA-64 de Intel, para intercambiar problemas y soluciones alternativas. Cualquier persona interesada en seguir
las discusiones tcnicas es bienvenida.

FREEBSD-ISDN
Comunicaciones RDSI
sta es la lista de correo para quienes participan en el desarrollo del soporte RDSI para FreeBSD.

FREEBSD-JAVA
Desarrollo Java

228

Apndice A. Recursos en Internet


sta es la lista de correo sobre el desarrollo de aplicaciones Java importantes para FreeBSD y el porte y
mantenimiento de los JDK.

FREEBSD-HACKERS
Debates tcnicos
ste es un foro de debate tcnico relacionado con FreeBSD. sta es la lista de correo tcnica primaria. Es para
personas que estn trabajando en FreeBSD, solucionando problemas o para discutir soluciones alternativas. Las
personas interesadas en seguir las discusiones tcnicas tambin son bienvenidas. sta es una lista de correo
tcnica en la cual se espera un contenido estrictamente tcnico.

FREEBSD-HACKERS-DIGEST
Technical discussions
ste es el compendio de la lista de correo freebsd-hackers. Consiste en que todo el correo enviado a
freebsd-hackers es empaquetado y enviado en un slo mensaje. sta lista es de Slo Lectura y no se debera
enviar correo a ella.

FREEBSD-HARDWARE
Discusiones generales sobre hardware y FreeBSD
Discusiones generales sobre tipos de hardware que funciona en FreeBSD, diferentes problemas y sugerencias
sobre qu comprar y qu no.

FREEBSD-HUBS
Rplicas
Avisos y discusiones para personas que administran sitios rplica.

FREEBSD-INSTALL
Discusiones sobre la instalacin
sta lista de correo es para discusiones sobre el desarrollo de la instalacin de FreeBSD en prximas versiones.

FREEBSD-ISP
Cuestiones de Proveedores de Servicios de Internet
sta lista de correo es para debates sobre temas relevantes para Proveedores de Servicios de Internet (ISP) que
usan FreeBSD. Es una lista de correo tcnica y en ella se esperan contenidos estrctamente tcnicos.

229

Apndice A. Recursos en Internet


FREEBSD-NEWBIES
Debates sobre actividades de los novatos
Cubrimos todas las actividades de los novatos que no quedan cubiertas por ninguna de las otras, incluyendo:
aprendizaje autodidacta y tcnicas de resolucin de problemas, bsqueda y uso de recursos y peticiones de
ayuda, cmo usar las listas de correo y qu lista usar, charla en general, meter la pata, jactarse, compartir ideas,
historias, soporte moral (pero no tcnico) e implicacin en la comunidad FreeBSD. Usamos freebsd-questions
para enviar nuestros problemas y peticiones de soporte y usamos freebsd-newbies para conocer a gente que est
haciendo lo mismo que nosotros cuando ramos novatos.

FREEBSD-PLATFORMS
Porte a plataformas no Intel
Cuestiones sobre plataformas diversas, debates generales, y propuestas para portes de FreeBSD para
plataformas no Intel. Es una lista de correo tcnica y en ella se esperan contenidos estrctamente tcnicos.

FREEBSD-POLICY
Decisiones de funcionamiento interno del Core Team
Es una lista de slo lectura y bajo volumen destinada a la toma de decisiones de funcionamento interno del Core
Team de FreeBSD.

FREEBSD-PORTS
Debates sobre ports
Debates acerca de la coleccin de ports (/usr/ports)de FreeBSD, propuestas de aplicaciones a portar,
modificaciones a la infraestructura de ports y coordinacin general de esfuerzos. sta es una lista de correo
tcnica en la cual se esperan contenidos exclusivamente tcnicos.

FREEBSD-QUESTIONS
Preguntas de los usuarios
sta es la lista de correo para preguntas sobre FreeBSD. No debera enviar preguntas del estilo de cmo hacer
a las listas tcnicas salvo que el contenido sea claramente tcnico.

FREEBSD-QUESTIONS-DIGEST
Preguntas de los usuarios
ste es el compendio de la lista de correo freebsd-questions. Consiste en que todos los mensajes enviados a
freebsd-questions son empaquetados y enviados en un nico mensaje.

230

Apndice A. Recursos en Internet


FREEBSD-SCSI
Subsistema SCSI
sta es la lista de correo para la gente que est trabajando en el subsistema SCSI de FREEBSD. sta es una lista
de correo tcnica en la cual se esperan contenidos puramente tcnicos.

FREEBSD-SECURITY
Cuestiones de seguridad
Cuestiones de seguridad informtica (DES, Kerberos, problemas de seguridad conocidos y sus soluciones, etc.)
sta es una lista de correo tcnica en la que se esperan contenidos puramente tcnicos.

FREEBSD-SECURITY-NOTIFICATIONS
Avisos de seguridad
Avisos de problemas de seguridad en FreeBSD y sus soluciones. sta no es una lista de discusin. La lista de
discusin es freebsd-security.

FREEBSD-SMALL
Uso de FreeBSD en aplicaciones embebidas
En sta lista se debaten temas relacionados con instalaciones de FreeBSD inusualmente pequeas y embebidas.
sta es una lista de correo tcnica en la cual se esperan contenidos estrictamente tcnicos.

FREEBSD-STABLE
Debates sobre el uso de FreeBSD-stable
sta es la lista de correo para los usuarios de freebsd-stable. Incluye avisos sobre nuevas caractersticas a inclur
en -stable que afectan a los usuarios e instrucciones paso por paso para permanecer usando la versin -stable.
Cualquiera que utilice FreeBSD stable debera suscribirse a sta lista. sta es una lista tcnica en la que se
esperan contenidos puramente tcnicos.

FREEBSD-STANDARDS
Cumplimiento de C99 & POSIX
ste es el foro para debates tcnicos relacionadas con el Cumplimiento de las normas C99 y POSIX en
FreeBSD.

FREEBSD-USER-GROUPS
Lista de coordinacin de de grupos de usuarios

231

Apndice A. Recursos en Internet


sta es la lista de correo de los coordinadores de los grupos locales de usuarios para discutir cuestiones entre
ellos o con personas elegidas del Core Team. sta lista de correo debera estar limitada a resmenes de
reuniones y coordinacin de proyectos que ataen a los Grupos de Usuarios.

FREEBSD-VENDORS
VENDORS
Debates para la coordinacin entre el Proyecto FreeBSD y Distribuidores de software y hardware para FreeBSD.

A.2. Grupos de Noticias de Usenet


Adems de los dos grupos de noticias especficos de FreeBSD hay muchos otros en los cuales se habla sobre
FreeBSD o son de algn modo interesantes para usuarios de FreeBSD.Hay un archivo donde hacer bsquedas
(http://minnie.tuhs.org/BSD-info/bsdnews_search.html) donde pueden encontrarse algunos de esos grupos de
noticias por cortesa de Warren Toomey <wkt@cs.adfa.edu.au>.

A.2.1. Grupos de Noticias Especficos sobre BSD

comp.unix.bsd.freebsd.announce (news:comp.unix.bsd.freebsd.announce)

comp.unix.bsd.freebsd.misc (news:comp.unix.bsd.freebsd.misc)

A.2.2. Otros Grupos de Noticias Interesantes sobre Unix

comp.unix (news:comp.unix)

comp.unix.questions (news:comp.unix.questions)

comp.unix.admin (news:comp.unix.admin)

comp.unix.programmer (news:comp.unix.programmer)

comp.unix.shell (news:comp.unix.shell)

comp.unix.user-friendly (news:comp.unix.user-friendly)

comp.security.unix (news:comp.security.unix)

comp.sources.unix (news:comp.sources.unix)

comp.unix.advocacy (news:comp.unix.advocacy)

comp.unix.misc (news:comp.unix.misc)

comp.bugs.4bsd (news:comp.bugs.4bsd)

comp.bugs.4bsd.ucb-fixes (news:comp.bugs.4bsd.ucb-fixes)

232

Apndice A. Recursos en Internet

comp.unix.bsd (news:comp.unix.bsd)

A.2.3. Sistema X Window

comp.windows.x.i386unix (news:comp.windows.x.i386unix)

comp.windows.x (news:comp.windows.x)

comp.windows.x.apps (news:comp.windows.x.apps)

comp.windows.x.announce (news:comp.windows.x.announce)

comp.windows.x.intrinsics (news:comp.windows.x.intrinsics)

comp.windows.x.motif (news:comp.windows.x.motif)

comp.windows.x.pex (news:comp.windows.x.pex)

comp.emulators.ms-windows.wine (news:comp.emulators.ms-windows.wine)

A.3. Servidores WWW

http://www.FreeBSD.org/ (../../../../index.html) Servidor Central.

http://www.au.FreeBSD.org/ Australia/1.

http://www2.au.FreeBSD.org/ Australia/2.

http://www3.au.FreeBSD.org/ Australia/3.

http://freebsd.itworks.com.au/ Australia/4.

http://www.br.FreeBSD.org/www.freebsd.org/ Brasil/1.

http://www2.br.FreeBSD.org/www.freebsd.org/ Brasil/2.

http://www3.br.FreeBSD.org/ Brasil/3.

http://www.bg.FreeBSD.org/ Bulgaria.

http://www.ca.FreeBSD.org/ Canad/1.

http://www2.ca.FreeBSD.org/ Canad/2.

http://www3.ca.FreeBSD.org/ Canad/3.

http://www.cn.FreeBSD.org/ China.

http://www.cz.FreeBSD.org/ Repblica Checa.

http://www.dk.FreeBSD.org/ Dinamarca.

http://www.ee.FreeBSD.org/ Estonia.

http://www.fi.FreeBSD.org/ Finlandia.

http://www.fr.FreeBSD.org/ Francia.

233

Apndice A. Recursos en Internet

http://www.de.FreeBSD.org/ Alemania/1.

http://www1.de.FreeBSD.org/ Alemania/2.

http://www2.de.FreeBSD.org/ Alemania/3.

http://www.gr.FreeBSD.org/ Grecia.

http://www.hu.FreeBSD.org/ Hungra.

http://www.is.FreeBSD.org/ Islandia.

http://www.ie.FreeBSD.org/ Irlanda.

http://www.jp.FreeBSD.org/www.FreeBSD.org/ Japn.

http://www.kr.FreeBSD.org/ Corea/1.

http://www2.kr.FreeBSD.org/ Corea/2.

http://www.lv.FreeBSD.org/ Letonia.

http://rama.asiapac.net/freebsd/ Malasia.

http://www.nl.FreeBSD.org/ Holanda/1.

http://www2.nl.FreeBSD.org/ Holanda/2.

http://www.no.FreeBSD.org/ Noruega.

http://www.nz.FreeBSD.org/ Nueva Zelanda.

http://www.pl.FreeBSD.org/ Polonia/1.

http://www2.pl.FreeBSD.org/ Polonia/2.

http://www.pt.FreeBSD.org/ Portugal/1.

http://www2.pt.FreeBSD.org/ Portugal/2.

http://www3.pt.FreeBSD.org/ Portugal/3.

http://www.ro.FreeBSD.org/ Rumana.

http://www.ru.FreeBSD.org/ Rusia/1.

http://www2.ru.FreeBSD.org/ Rusia/2.

http://www3.ru.FreeBSD.org/ Rusia/3.

http://www4.ru.FreeBSD.org/ Rusia/4.

http://freebsd.s1web.com/ Singapur.

http://www.sk.FreeBSD.org/ Repblica Eslovaca.

http://www.si.FreeBSD.org/ Eslovenia.

http://www.es.FreeBSD.org/ Espaa.

http://www.za.FreeBSD.org/ Sudfrica/1.

http://www2.za.FreeBSD.org/ Sudfrica/2.

http://www.se.FreeBSD.org/ Suecia.

http://www.ch.FreeBSD.org/ Suiza.

http://www.tw.FreeBSD.org/www.freebsd.org/data/ Taiwan.

234

Apndice A. Recursos en Internet

http://www.tr.FreeBSD.org/ Turqua.

http://www.ua.FreeBSD.org/www.freebsd.org/ Ucrania/1.

http://www2.ua.FreeBSD.org/ Ucrania/2.

http://www4.ua.FreeBSD.org/ Ucrania/Crimea.

http://www.uk.FreeBSD.org/ Reino Unido/1.

http://www2.uk.FreeBSD.org/ Reino Unido/2.

http://www3.uk.FreeBSD.org/ Reino Unido/3.

http://www6.FreeBSD.org/ USA/Oregn.

http://www2.FreeBSD.org/ USA/Tejas.

A.4. Direcciones de Correo Electrnico


Los siguientes grupos de usuarios de FreeBSD proven a sus miembros de direcciones de correo. Dichos
administradores se reservan el derecho de retirar el uso de la direccin si se abusa de ella de cualquier manera.
Dominio

Recursos que se
suministran

Grupo de Usuarios

Administrador

ukug.uk.FreeBSD.org

Slo redireccin

<freebsd-

Lee Johnston

users@uk.FreeBSD.org> <lee@uk.FreeBSD.org>

A.5. Cuentas Shell


Los siguientes grupos de usuarios facilitan cuentas shell a gente que apoya activamente el proyecto FreeBSD. Sus
respectivos administradores se reservan el derecho de cancelar la cuenta y si se abusa de ella de algn modo.
Servidor

Tipo de acceso

Servicios que se
ofrecen

Administrador

storm.uk.FreeBSD.org

SSH only

CVS de slo lectura, espacio Brian Somers


web personal, correo
<brian@FreeBSD.org>
electrnico

dogma.freebsd-uk.eu.org

Telnet/FTP/SSH

Correo electrnico, espacio Lee Johnston


web, FTP Annimo
<lee@uk.FreeBSD.org>

235

Apndice B. PGP Keys


In case you need to verify a signature or send encrypted email to one of the officers or developers a number of keys
are provided here for your convenience. A complete keyring of FreeBSD.org users is available for download from
http://www.FreeBSD.org/doc/pgpkeyring.txt (../../../../doc/pgpkeyring.txt).

B.1. Officers
B.1.1. Security Officer Team <security-officer@FreeBSD.org>
pub

1024R/73D288A5 1996-04-22 FreeBSD Security Officer <security-officer@freebsd.org>


Key fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11

B.1.2. Core Team Secretary <core-secretary@FreeBSD.org>


pub

1024R/FF8AE305 2002-01-08 core-secretary@FreeBSD.org


Key fingerprint = CE EF 8A 48 70 00 B5 A9 55 69 DE 87 E3 9A E1 CD

B.2. Core Team Members


B.2.1. Warner Losh <imp@FreeBSD.org>
pub

1024R/F6A8F561 1996-01-10 M. Warner Losh <imp@village.org>


Key fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9

B.2.2. Jun Kuriyama <kuriyama@FreeBSD.org>


pub
uid
uid
sub

1024D/FE3B59CD 1998-11-23 Jun Kuriyama <kuriyama@imgsrc.co.jp>


Key fingerprint = 5219 55CE AC84 C296 3A3B B076 EE3C 4DBB FE3B 59CD
Jun Kuriyama <kuriyama@FreeBSD.org>
Jun Kuriyama <kuriyama@jp.FreeBSD.org>
2048g/1CF20D27 1998-11-23

B.2.3. Murray Stokely <murray@FreeBSD.org>


pub
sub

1024D/0E451F7D 2001-02-12 Murray Stokely <murray@freebsd.org>


Key fingerprint = E2CA 411D DD44 53FD BB4B 3CB5 B4D7 10A2 0E45 1F7D
1024g/965A770C 2001-02-12

236

Apndice B. PGP Keys

B.2.4. Peter Wemm <peter@FreeBSD.org>


pub
uid
uid
uid

1024R/D89CE319 1995-04-02 Peter Wemm <peter@perth.dialix.oz.au>


Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A
Peter Wemm <peter@FreeBSD.org>
Peter Wemm <peter@haywire.dialix.com>
Peter Wemm <peter@spinner.dialix.com>

B.3. Developers
B.3.1. Will Andrews <will@FreeBSD.org>
pub
uid
uid
uid
uid
uid
uid
sub

1024D/F81672C5 2000-05-22 Will Andrews <will@c-60.org>


Key fingerprint = 661F BBF7 9F5D 3D02 C862 5F6C 178E E274 F816 72C5
Will Andrews (Key for official matters) <will@FreeBSD.org>
Will Andrews <will@physics.purdue.edu>
Will Andrews <will@puck.firepipe.net>
Will Andrews <will@csociety.org>
Will Andrews <will@csociety.ecn.purdue.edu>
Will Andrews <will@telperion.openpackages.org>
1024g/55472804 2000-05-22

B.3.2. Satoshi Asami <asami@FreeBSD.org>


pub
uid

1024R/1E08D889 1997-07-23 Satoshi Asami <asami@cs.berkeley.edu>


Key fingerprint = EB 3C 68 9E FB 6C EB 3F DB 2E 0F 10 8F CE 79 CA
Satoshi Asami <asami@FreeBSD.ORG>

B.3.3. Anton Berezin <tobez@FreeBSD.org>


pub
uid
uid
sub

1024D/7A7BA3C0 2000-05-25 Anton Berezin <tobez@catpipe.net>


Key fingerprint = CDD8 560C 174B D8E5 0323 83CE 22CA 584C 7A7B A3C0
Anton Berezin <tobez@tobez.org>
Anton Berezin <tobez@FreeBSD.org>
1024g/ADC71E87 2000-05-25

B.3.4. Martin Blapp <mbr@FreeBSD.org>


pub
sub

1024D/D300551E 2001-12-20 Martin Blapp <mb@imp.ch>


Key fingerprint = B434 53FC C87C FE7B 0A18 B84C 8686 EF22 D300 551E
1024g/998281C8 2001-12-20

237

Apndice B. PGP Keys

B.3.5. Oliver Braun <obraun@FreeBSD.org>


pub
uid
uid
uid
sub

1024D/EF25B1BA 2001-05-06 Oliver


Key fingerprint = 6A3B 042A 732E
Oliver
Oliver
Oliver
1024g/09D28582 2001-05-06

Braun <obraun@informatik.unibw-muenchen.de>
17E4 B6E7 3EAF C0B1 6B7D EF25 B1BA
Braun <obraun@tele-consulting.com>
Braun <obraun@obraun.net>
Braun <obraun@freebsd.org>

B.3.6. Jonathan M. Bresler <jmb@FreeBSD.org>


pub
uid
uid
uid
uid

1024R/97E638DD 1996-06-05 Jonathan M. Bresler


Key fingerprint = 31 57 41 56 06 C1 40 13 C5
Jonathan M. Bresler
Jonathan M. Bresler
Jonathan M. Bresler
Jonathan M. Bresler

<jmb@Bresler.org>
1C E3 E5 DC 62 0E FB
<jmb@FreeBSD.ORG>
<Jonathan.Bresler@USi.net>
<jmb@Frb.GOV>

B.3.7. Wilko Bulte <wilko@FreeBSD.org>


pub
uid
uid

1024R/EADEE409 1997-06-16 Wilko Bulte <wilko@tcja.nl>


Key fingerprint = CF F5 30 59 20 AE 17 69 98 F6 58 F0 4F F0 EB 3E
Wilko Bulte <wilko@freebsd.org>
"Wilko Bulte <wilko@freebie.xs4all.nl>"

B.3.8. Jonathan Chen <jon@FreeBSD.org>


pub
uid
uid
uid
uid
sub

1024D/2539468B 1999-10-11 Jonathan Chen <jon@spock.org>


Key fingerprint = EE31 CDA1 A105 C8C9 5365 3DB5 C2FC 86AA 2539 468B
Jonathan Chen <jon@freebsd.org>
Jonathan Chen <chenj@rpi.edu>
Jonathan Chen <spock@acm.rpi.edu>
Jonathan Chen <jon@cs.rpi.edu>
3072g/B81EF1DB 1999-10-11

B.3.9. Luoqi Chen <luoqi@FreeBSD.org>


pub
uid
uid
sub

1024D/2926F3BE 2002-02-22 Luoqi Chen <luoqi@FreeBSD.org>


Key fingerprint = B470 A815 5917 D9F4 37F3 CE2A 4D75 3BD1 2926 F3BE
Luoqi Chen <luoqi@bricore.com>
Luoqi Chen <lchen@onetta.com>
1024g/5446EB72 2002-02-22

238

Apndice B. PGP Keys

B.3.10. Andrey A. Chernov <ache@FreeBSD.org>


pub
uid

1024R/D99D08EB 1992-08-20 Andrey A. Chernov <ache@FreeBSD.org>


Key fingerprint = 33 03 9F 48 33 7B 4A 15 63 48 88 0A C4 97 FD 49
Andrey A. Chernov <ache@nagual.pp.ru>

B.3.11. Sean Chittenden <seanc@FreeBSD.org>


pub
uid
uid
uid
uid
uid
sub

1024D/5F5B3ECB 2002-08-15 Sean Chittenden <sean@chittenden.org>


Key fingerprint = 6CEB 1B06 BFD3 70F6 95BE 7E4D 8E85 2E0A 5F5B 3ECB
Sean Chittenden <sean@rubynet.org>
Sean Chittenden <sean@rubydoc.org>
Sean Chittenden <sean@ruby-lang.org>
Sean Chittenden <seanc@FreeBSD.org>
Sean Chittenden <chitt@acm.org>
2048g/0A656D7B 2002-08-15 [expires: 2003-02-11]

B.3.12. Crist J. Clark <cjc@FreeBSD.org>


pub
uid
uid
sub

1024D/FE886AD3 2002-01-25 Crist J. Clark <cjclark@jhu.edu>


Key fingerprint = F04E CCD7 3834 72C2 707F 0A8F 259F 8F4B FE88 6AD3
Crist J. Clark <cjclark@alum.mit.edu>
Crist J. Clark <cjc@freebsd.org>
1024g/9B6BAB99 2002-01-25

B.3.13. Nik Clayton <nik@FreeBSD.org>


pub
uid
uid
uid
uid
sub

1024D/2C37E375 2000-11-09 Nik Clayton


Key fingerprint = 15B8 3FFC DDB4 34B0
Nik Clayton
Nik Clayton
Nik Clayton
Nik Clayton
1024g/769E298A 2000-11-09

<nik@freebsd.org>
AA5F 94B7 93A8 0764 2C37 E375
<nik@slashdot.org>
<nik@crf-consulting.co.uk>
<nik@ngo.org.uk>
<nik@bsdi.com>

B.3.14. Ceri Davies <ceri@FreeBSD.org>


pub
uid
uid
sub

1024D/34B7245F 2002-03-08 Ceri Davies


Key fingerprint = 9C88 EB05 A908 1058
Ceri Davies
Ceri Davies
1024g/0C482CBC 2002-03-08

<ceri@submonkey.net>
A4AE 9959 A1C7 DCC1 34B7 245F
<setantae@submonkey.net>
<ceri@FreeBSD.org>

239

Apndice B. PGP Keys

B.3.15. Brooks Davis <brooks@FreeBSD.org>


pub
uid
uid
sub

1024D/F2381AD4 2001-02-10 Brooks Davis <brooks@one-eyed-alien.net>


Key fingerprint = 655D 519C 26A7 82E7 2529 9BF0 5D8E 8BE9 F238 1AD4
Brooks Davis <brooks@FreeBSD.org>
Brooks Davis <brooks@aero.org>
1024g/42921194 2001-02-10 [expires: 2003-01-22]

B.3.16. Brian S. Dean <bsd@FreeBSD.org>


pub
sub

1024D/723BDEE9 2002-01-23 Brian S. Dean <bsd@FreeBSD.org>


Key fingerprint = EF49 7ABE 47ED 91B3 FC3D 7EA5 4D90 2FF7 723B DEE9
1024g/4B02F876 2002-01-23

B.3.17. Dima Dorfman <dd@FreeBSD.org>


pub
uid
sub

1024D/69FAE582 2001-09-04 Dima Dorfman <dd@freebsd.org>


Key fingerprint = B340 8338 7DA3 4D61 7632 098E 0730 055B 69FA E582
Dima Dorfman <dima@unixfreak.org>
1024g/A51DD1C0 2001-09-04 [expires: 2003-09-04]

B.3.18. Udo Erdelhoff <ue@FreeBSD.org>


pub
uid
uid
uid
uid

1024R/E74FA871 1994-07-19 Udo


Key fingerprint = 8C B1 80 CA
Udo
Udo
Udo
Udo

Erdelhoff <uer@de.uu.net>
2C 52 73 81 FB A7 B4 03 C5 32 C8 67
Erdelhoff <ue@nathan.ruhr.de>
Erdelhoff <ue@freebsd.org>
Erdelhoff <uerdelho@eu.uu.net>
Erdelhoff <uerdelho@uu.net>

B.3.19. Ruslan Ermilov <ru@FreeBSD.org>


pub
uid
uid
sub

1024D/A8EE370A 2002-03-31 Ruslan Ermilov (Sunbay Software Ltd) <ru@sunbay.com>


Key fingerprint = A3C4 291D 95A0 AF1F A85C B029 524B F83F A8EE 370A
Ruslan Ermilov (FreeBSD) <ru@FreeBSD.org>
Ruslan Ermilov (FreeBSD Ukraine) <ru@FreeBSD.org.ua>
1024g/2E858CD8 2002-03-31 [expires: 2004-03-30]

B.3.20. Chris D. Faulhaber <jedgar@FreeBSD.org>


pub
uid

1024D/FE817A50 2000-12-20 Chris D. Faulhaber <jedgar@FreeBSD.org>


Key fingerprint = A47D A838 9216 F921 A456 54FF 39B6 86E0 FE81 7A50
Chris D. Faulhaber <jedgar@fxp.org>

240

Apndice B. PGP Keys


sub

2048g/93452698 2000-12-20

B.3.21. Brian F. Feldman <green@FreeBSD.org>


pub
sub
pub
sub

1024D/41C13DE3 2000-01-11 Brian Fundakowski Feldman <green@FreeBSD.org>


Key fingerprint = 6A32 733A 1BF6 E07B 5B8D AE14 CC9D DCA2 41C1 3DE3
1024g/A98B9FCC 2000-01-11 [expires: 2001-01-10]
1024D/773905D6 2000-09-02 Brian Fundakowski Feldman <green@FreeBSD.org>
Key fingerprint = FE23 7481 91EA 5E58 45EA 6A01 B552 B043 7739 05D6
2048g/D2009B98 2000-09-02

B.3.22. Mrio Srgio Fujikawa Ferreira <lioux@FreeBSD.org>


pub
uid
uid
uid
sub
sub

1024D/B8365E55 2001-11-22 Mario Sergio Fujikawa Ferreira <lioux@brturbo.com>


Key fingerprint = B143 3FA6 D76C 619C EB78 927C 5EF4 B29A B836 5E55
Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
Mario Sergio Fujikawa Ferreira <lioux@linf.unb.br>
Mario Sergio Fujikawa Ferreira <lioux@uol.com.br>
4096g/43405E6B 2001-11-22 [expires: 2003-11-22]
1024D/91EFF66C 2001-11-22 [expires: 2001-12-22]

B.3.23. Tony Finch <fanf@FreeBSD.org>


pub
uid
uid
sub

1024D/84C71B6E 2002-05-03 Tony Finch <dot@dotat.at>


Key fingerprint = 199C F25B 2679 6D04 63C5 2159 FFC0 F14C 84C7 1B6E
Tony Finch <fanf@FreeBSD.org>
Tony Finch <fanf@apache.org>
2048g/FD101E8B 2002-05-03

B.3.24. Pete Fritchman <petef@FreeBSD.org>


pub
uid
uid
sub

1024D/74B91CFD 2001-01-30 Pete Fritchman <petef@FreeBSD.org>


Key fingerprint = 9A9F 8A13 DB0D 7777 8D8E 1CB2 C5C9 A08F 74B9 1CFD
Pete Fritchman <petef@databits.net>
Pete Fritchman <petef@csh.rit.edu>
1024g/0C02AF0C 2001-01-30

B.3.25. Bill Fumerola <billf@FreeBSD.org>


pub
uid

1024D/7F868268 2000-12-07 Bill Fumerola (FreeBSD Developer) <billf@FreeBSD.org>


Key fingerprint = 5B2D 908E 4C2B F253 DAEB FC01 8436 B70B 7F86 8268
Bill Fumerola (Security Yahoo) <fumerola@yahoo-inc.com>

241

Apndice B. PGP Keys


sub

1024g/43980DA9 2000-12-07

B.3.26. Patrick S. Gardella <patrick@FreeBSD.org>


pub
uid
uid
uid
pub
uid
uid
sub
pub

1024R/527BC62B 1997-06-23 Patrick Gardella <patrick@windministries.org>


Key fingerprint = 54 7C D6 81 B1 63 D2 5E BD DD 58 4D A4 0E E4 E1
Patrick Gardella <patrick@freebsd.org>
patrick@freebsd.org
Patrick Gardella <patrick@intothewind.cx>
1024D/C6AF4835 2000-01-19 Patrick Gardella <patrick@freebsd.org>
Key fingerprint = 4B2D 3CFA 963B E310 847E 7D6C C072 B447 C6AF 4835
Patrick Gardella <patrick@windministries.org>
Patrick Gardella <patrick@intothewind.cx>
2048g/DB3B83E7 2000-01-19
1024R/EE2D47A9 1996-08-17 Patrick Gardella <patrick@freebsd.org>
Key fingerprint = A6 DE 3C C0 33 CF 36 E6 D1 F5 BB E8 3C C4 67 50

B.3.27. John-Mark Gurney <jmg@FreeBSD.org>


pub
uid
uid
uid

1024R/3F9951F5 1997-02-11 John-Mark


Key fingerprint = B7 EC EF F8 AE ED
John-Mark
John-Mark
John-Mark

Gurney
A7 31
Gurney
Gurney
Gurney

<johnmark@gladstone.uoregon.edu>
96 7A 22 B3 D8 56 36 F4
<gurney_j@efn.org>
<jmg@cs.uoregon.edu>
<gurney_j@resnet.uoregon.edu>

B.3.28. Daniel Harris <dannyboy@FreeBSD.org>


pub
uid
uid
uid
sub

1024D/84D0D7E7 2001-01-15 Daniel


Key fingerprint = 3C61 B8A1 3F09
Daniel
Daniel
Daniel
1024g/9DF0231A 2001-01-15

Harris <dannyboy@worksforfood.com>
D194 3259 7173 6C63 DA04 84D0 D7E7
Harris <dannyboy@freebsd.org>
Harris <dh@askdh.com>
Harris <dh@wordassault.com>

B.3.29. John Hay <jhay@FreeBSD.org>


pub
uid
uid
uid
uid

2048R/A9275B93 2000-05-10 John Hay <jhay@icomtek.csir.co.za>


Key fingerprint = E7 95 F4 B9 D4 A7 49 6A 83 B9 77 49 28 9E 37 70
John Hay <jhay@mikom.csir.co.za>
Thawte Freemail Member <jhay@mikom.csir.co.za>
John Hay <jhay@csir.co.za>
John Hay <jhay@FreeBSD.ORG>

242

Apndice B. PGP Keys

B.3.30. Sheldon Hearn <sheldonh@FreeBSD.org>


pub
sub

1024D/74A06ACD 2002-06-20 Sheldon Hearn <sheldonh@starjuice.net>


Key fingerprint = 01A3 EF91 9C5A 3633 4E01 8085 A462 57F1 74A0 6ACD
1536g/C42F8AC8 2002-06-20

B.3.31. Mike Heffner <mikeh@FreeBSD.org>


pub
uid
uid
uid
uid
sub

1024D/CDECBF99 2001-02-02 Michael Heffner <mheffner@novacoxmail.com>


Key fingerprint = AFAB CCEB 68C7 573F 5110 9285 1689 1942 CDEC BF99
Michael Heffner <mheffner@vt.edu>
Michael Heffner <mikeh@FreeBSD.org>
Michael Heffner <spock@techfour.net>
Michael Heffner (ACM sysadmin) <mheffner@acm.vt.edu>
1024g/3FE83FB5 2001-02-02

B.3.32. Guy Helmer <ghelmer@FreeBSD.org>


pub
uid
uid

1024R/35F4ED2D 1997-01-26 Guy


Key fingerprint = A2 59 4B 92
Guy
Guy

G.
02
G.
G.

Helmer <ghelmer@freebsd.org>
5B 9E B1 B9 4E 2E 03 29 D5 DC 3A
Helmer <ghelmer@cs.iastate.edu>
Helmer <ghelmer@palisadesys.com>

B.3.33. Maxime Henrion <mux@FreeBSD.org>


pub
sub

1024D/4ED69D63 2002-03-02 Maxime Henrion <mux@FreeBSD.org>


Key fingerprint = 67E4 6751 0058 982C C759 9984 B9B4 3F69 4ED6 9D63
1024g/1A6F46EF 2002-03-02

B.3.34. Jordan K. Hubbard <jkh@FreeBSD.org>


pub

1024R/8E542D5D 1996-04-04 Jordan K. Hubbard <jkh@FreeBSD.org>


Key fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20

B.3.35. Trevor Johnson <trevor@FreeBSD.org>


pub
sub

1024D/3A3EA137 2000-04-20 Trevor Johnson <trevor@jpj.net>


Key fingerprint = 7ED1 5A92 76C1 FFCB E5E3 A998 F037 5A0B 3A3E A137
1024g/46C24F1E 2000-04-20

243

Apndice B. PGP Keys

B.3.36. Poul-Henning Kamp <phk@FreeBSD.org>


pub

1024R/0358FCBD 1995-08-01 Poul-Henning Kamp <phk@FreeBSD.org>


Key fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E

B.3.37. Josef Karthauser <joe@FreeBSD.org>


pub
uid
uid
uid
uid
sub

1024D/E6B15016 2000-10-19 Josef Karthauser <joe@FreeBSD.org>


Key fingerprint = 7266 8EAF 82C2 D439 5642 AC26 5D52 1C8C E6B1 5016
Josef Karthauser <joe@tao.org.uk>
Josef Karthauser <joe@uk.FreeBSD.org>
[revoked] Josef Karthauser <josef@bsdi.com>
[revoked] Josef Karthauser <joe@pavilion.net>
2048g/1178B692 2000-10-19

B.3.38. Kris Kennaway <kris@FreeBSD.org>


pub
uid
uid
sub

1024D/68E840A5 2000-01-14 Kris Kennaway <kris@citusc.usc.edu>


Key fingerprint = E65D 0E7D 7E16 B212 1BD6 39EE 5ABC B405 68E8 40A5
Kris Kennaway <kris@FreeBSD.org>
Kris Kennaway <kris@obsecurity.org>
2048g/03A41C45 2000-01-14 [expires: 2006-01-14]

B.3.39. Giorgos Keramidas <keramida@FreeBSD.org>


pub
uid
uid
sub

1024D/318603B6 2001-09-21 Giorgos Keramidas


Key fingerprint = C1EB 0653 DB8B A557 3829
Giorgos Keramidas
Giorgos Keramidas
1024g/50FDBAD1 2001-09-21

<keramida@FreeBSD.org>
00F9 D60F 941A 3186 03B6
<charon@labs.gr>
<keramida@ceid.upatras.gr>

B.3.40. Max Khon <fjoe@FreeBSD.org>


pub
uid
sub

1024D/971D4357 2002-01-22 Max Khon <fjoe@iclub.nsu.ru>


Key fingerprint = AAC1 B2AF 9438 0D33 C106 C551 4052 219C 971D 4357
Max Khon <fjoe@freebsd.org>
1024g/DAA2638B 2002-01-22

B.3.41. Andreas Klemm <andreas@FreeBSD.org>


pub
uid

1024D/6C6F6CBA 2001-01-06 Andreas Klemm <andreas.klemm@eu.didata.com>


Key fingerprint = F028 D51A 0D42 DD67 4109 19A3 777A 3E94 6C6F 6CBA
Andreas Klemm <andreas@klemm.gtn.com>

244

Apndice B. PGP Keys


uid
uid
sub

Andreas Klemm <andreas@FreeBSD.org>


Andreas Klemm <andreas@apsfilter.org>
2048g/FE23F866 2001-01-06

B.3.42. Joseph Koshy <jkoshy@FreeBSD.org>


pub
sub

1024D/D93798B6 2001-12-21 Joseph Koshy (FreeBSD) <jkoshy@freebsd.org>


Key fingerprint = 0DE3 62F3 EF24 939F 62AA 2E3D ABB8 6ED3 D937 98B6
1024g/43FD68E9 2001-12-21

B.3.43. Alexander Langer <alex@FreeBSD.org>


pub
sub

1024D/0C176D8F 2002-01-23 Alexander Langer <alex@FreeBSD.org>


Key fingerprint = CDB7 54EF 998A 9BA1 4F0C C8FB 71F7 04BF 0C17 6D8F
1024g/415D4F71 2002-01-23

B.3.44. Alexander Leidinger <netchild@FreeBSD.org>


pub
sub

1024D/72077137 2002-01-31 Alexander Leidinger <netchild@FreeBSD.org>


Key fingerprint = AA3A 8F69 B214 6BBD 5E73 C9A0 C604 3C56 7207 7137
2048g/8C9828D3 2002-01-31

B.3.45. Ying-Chieh Liao <ijliao@FreeBSD.org>


pub
uid
uid
uid
uid
sub

1024D/11C02382 2001-01-09 Ying-Chieh Liao <ijliao@CCCA.NCTU.edu.tw>


Key fingerprint = 4E98 55CC 2866 7A90 EFD7 9DA5 ACC6 0165 11C0 2382
Ying-Chieh Liao <ijliao@FreeBSD.org>
Ying-Chieh Liao <ijliao@csie.nctu.edu.tw>
Ying-Chieh Liao <ijliao@dragon2.net>
Ying-Chieh Liao <ijliao@tw.FreeBSD.org>
4096g/C1E16E89 2001-01-09

B.3.46. Clive Lin <clive@FreeBSD.org>


pub
uid
uid
sub

1024D/A008C03E 2001-07-30 Clive Lin <clive@tongi.org>


Key fingerprint = FA3F 20B6 A77A 6CEC 1856 09B0 7455 2805 A008 C03E
Clive Lin <clive@CirX.ORG>
Clive Lin <clive@FreeBSD.org>
1024g/03C2DC87 2001-07-30 [expires: 2002-07-30]

245

Apndice B. PGP Keys

B.3.47. Bruce A. Mah <bmah@FreeBSD.org>


pub
uid
uid
uid
uid
uid
uid
sub

1024D/5BA052C3 1997-12-08 Bruce A. Mah <bmah@acm.org>


Key fingerprint = F829 B805 207D 14C7 7197 7832 D8CA 3171 5BA0 52C3
Bruce A. Mah <bmah@ca.sandia.gov>
Bruce A. Mah <bmah@ieee.org>
Bruce A. Mah <bmah@cisco.com>
Bruce A. Mah <bmah@employees.org>
Bruce A. Mah <bmah@freebsd.org>
Bruce A. Mah <bmah@packetdesign.com>
2048g/B4E60EA1 1997-12-08

B.3.48. David Malone <dwmalone@FreeBSD.org>


pub

512/40378991 1994/04/21 David Malone <dwmalone@maths.tcd.ie>


Key fingerprint = 86 A7 F4 86 39 2C 47 2C C1 C2 35 78 8E 2F B8 F5

B.3.49. Makoto Matsushita <matusita@FreeBSD.org>


pub
uid
uid
uid
sub

1024D/20544576 1999-04-18 Makoto


Key fingerprint = 71B6 13BF B262
Makoto
Makoto
Makoto
1024g/F1F3C94D 1999-04-18

Matsushita
2DD8 2B7C
Matsushita
Matsushita
Matsushita

<matusita@FreeBSD.org>
6CD0 EB2D 4147 2054 4576
<matusita@matatabi.or.jp>
<matusita@jp.FreeBSD.ORG>
<matusita@ics.es.osaka-u.ac.jp>

B.3.50. Kenneth D. Merry <ken@FreeBSD.org>


pub
uid
sub
pub

1024D/54C745B5 2000-05-15 Kenneth D. Merry <ken@FreeBSD.org>


Key fingerprint = D25E EBC5 F17A 9E52 84B4 BF14 9248 F0DA 54C7 45B5
Kenneth D. Merry <ken@kdm.org>
2048g/89D0F797 2000-05-15
1024R/2FA0A505 1995-10-30 Kenneth D. Merry <ken@plutotech.com>
Key fingerprint = FD FA 85 85 95 C4 8E E8 98 1A CA 18 56 F0 00 1F

B.3.51. Dirk Meyer <dinoex@FreeBSD.org>


pub
uid
uid

1024R/331CDA5D 1995-06-04 Dirk Meyer <dinoex@FreeBSD.org>


Key fingerprint = 44 16 EC 0A D3 3A 4F 28 8A 8A 47 93 F1 CF 2F 12
Dirk Meyer <dirk.meyer@dinoex.sub.org>
Dirk Meyer <dirk.meyer@guug.de>

246

Apndice B. PGP Keys

B.3.52. Yoshiro Sanpei MIHIRA <sanpei@FreeBSD.org>


pub
uid
uid
uid
uid
uid
uid

1024R/391C5D69 1996-11-21 sanpei@SEAPLE.ICC.NE.JP


Key fingerprint = EC 04 30 24 B0 6C 1E 63 5F 5D 25 59 3E 83 64 51
MIHIRA Yoshiro <sanpei@sanpei.org>
Yoshiro MIHIRA <sanpei@FreeBSD.org>
MIHIRA Yoshiro <sanpei@yy.cs.keio.ac.jp>
MIHIRA Yoshiro <sanpei@cc.keio.ac.jp>
MIHIRA Yoshiro <sanpei@educ.cc.keio.ac.jp>
MIHIRA Yoshiro <sanpei@st.keio.ac.jp>

B.3.53. Jim Mock <jim@FreeBSD.org>


pub
uid
sub

1024D/3AA4FEE0 2002-01-10 Jim Mock <jim@FreeBSD.org>


Key fingerprint = AEEC 998D 7828 D306 AFF7 06CA D8FE 7285 3AA4 FEE0
Jim Mock <mij@soupnazi.org>
1024g/3780652B 2002-01-10

B.3.54. Marcel Moolenaar <marcel@FreeBSD.org>


pub
sub

1024D/61EE89F6 2002-02-09 Marcel Moolenaar <marcel@xcllnt.net>


Key fingerprint = 68BB E2B7 49AA FF69 CA3A DF71 A605 A52D 61EE 89F6
1024g/6EAAB456 2002-02-09

B.3.55. Thomas Mstl <tmm@FreeBSD.org>


pub
uid
uid
sub

1024D/419C776C 2000-11-28 Thomas


Key fingerprint = 1C97 A604 2BD0
Thomas
Thomas
2048g/ECE63CE6 2000-11-28

Moestl <tmm@FreeBSD.org>
E492 51D0 9C0F 1FE6 4F1D 419C 776C
Moestl <tmoestl@gmx.net>
Moestl <t.moestl@tu-bs.de>

B.3.56. Rich Murphey <rich@FreeBSD.org>


pub

1024R/583443A9 1995-03-31 Rich Murphey <rich@lamprey.utmb.edu>


Key fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4

B.3.57. Akinori MUSHA <knu@FreeBSD.org>


pub
uid
uid

1024D/9FD9E1EE 2000-03-21 Akinori MUSHA <knu@and.or.jp>


Key fingerprint = 081D 099C 1705 861D 4B70 B04A 920B EFC7 9FD9 E1EE
Akinori MUSHA <knu@FreeBSD.org>
Akinori MUSHA <knu@idaemons.org>

247

Apndice B. PGP Keys


uid
sub

Akinori MUSHA <knu@ruby-lang.org>


1024g/71BA9D45 2000-03-21

B.3.58. Masafumi NAKANE <max@FreeBSD.org>


pub
uid
uid
uid
uid
uid
uid
uid
sub

1024D/CE356B59 2000-02-19 Masafumi NAKANE <max@wide.ad.jp>


Key fingerprint = EB40 BCAB 4CE5 0764 9942 378C 9596 159E CE35 6B59
Masafumi NAKANE <max@w3.org>
Masafumi NAKANE <max@FreeBSD.org>
Masafumi NAKANE <max@jp.FreeBSD.org>
Masafumi NAKANE <max@sfc.keio.ac.jp>
Masafumi NAKANE <max@sfc.wide.ad.jp>
Masafumi NAKANE <max@accessibility.org>
Masafumi NAKANE <kd5pdi@qsl.net>
1024g/FA9BD48B 2000-02-19

B.3.59. Anders Nordby <anders@FreeBSD.org>


pub
uid
sub

1024D/00835956 2000-08-13 Anders Nordby <anders@fix.no>


Key fingerprint = 1E0F C53C D8DF 6A8F EAAD 19C5 D12A BC9F 0083 5956
Anders Nordby <anders@FreeBSD.org>
2048g/4B160901 2000-08-13

B.3.60. David OBrien <obrien@FreeBSD.org>


pub
uid
uid
uid
uid
uid
uid
uid
uid
uid
pub
uid
uid
sub

1024R/34F9F9D5 1995-04-23 David E. OBrien <defunct - obrien@Sea.Legent.com>


Key fingerprint = B7 4D 3E E9 11 39 5F A3 90 76 5D 69 58 D9 98 7A
David E. OBrien <obrien@NUXI.com>
deobrien@ucdavis.edu
David E. OBrien <whois Do38>
David E. OBrien <obrien@FreeBSD.org>
David E. OBrien <dobrien@seas.gwu.edu>
David E. OBrien <obrien@cs.ucdavis.edu>
David E. OBrien <defunct - obrien@media.sra.com>
David E. OBrien <obrien@elsewhere.roanoke.va.us>
David E. OBrien <obrien@Nuxi.com>
1024D/7F9A9BA2 1998-06-10 "David
Key fingerprint = 02FD 495F D03C
"David
"David
3072g/BA32C20D 1998-06-10

E. OBrien" <obrien@cs.ucdavis.edu>
9AF2 5DB7 F496 6FC8 DABD 7F9A 9BA2
E. OBrien" <obrien@NUXI.com>
E. OBrien" <obrien@FreeBSD.org>

248

Apndice B. PGP Keys

B.3.61. Mark Peek <mp@FreeBSD.org>


pub
sub

1024D/330D4D01 2002-01-27 Mark Peek <mp@FreeBSD.org>


Key fingerprint = 510C 96EE B4FB 1B0A 2CF8 A0AF 74B0 0B0E 330D 4D01
1024g/9C6CAC09 2002-01-27

B.3.62. Peter Pentchev <roam@FreeBSD.org>


pub
uid
uid
uid
uid
sub

1024D/16194553 2002-02-01 Peter Pentchev <roam@techlab.office1.bg>


Key fingerprint = FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553
Peter Pentchev <roam@ringlet.net>
Peter Pentchev <roam@FreeBSD.org>
Peter Pentchev <roam@online.bg>
Peter Pentchev <roam@orbitel.bg>
1024g/7074473C 2002-02-01

B.3.63. Jim Pirzyk <pirzyk@FreeBSD.org>


pub
uid
sub

1024D/4E23DACA 2001-03-02 Jim Pirzyk <pirzyk@freebsd.org>


Key fingerprint = 07EE A1BD 32E5 C402 59B6 22D5 D846 31D1 4E23 DACA
Jim Pirzyk <Jim.Pirzyk@disney.com>
1024g/F38895F7 2001-03-02

B.3.64. John Polstra <jdp@FreeBSD.org>


pub

1024R/BFBCF449 1997-02-14 John D. Polstra <jdp@polstra.com>


Key fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D

B.3.65. Mark Pulford <markp@FreeBSD.org>


pub
uid
sub

1024D/182C368F 2000-05-10 Mark Pulford <markp@FreeBSD.org>


Key fingerprint = 58C9 C9BF C758 D8D4 7022 8EF5 559F 7F7B 182C 368F
Mark Pulford <mark@kyne.com.au>
2048g/380573E8 2000-05-10

B.3.66. Thomas Quinot <thomas@FreeBSD.org>


pub 1024D/393D2469 1999-09-23 Thomas
Empreinte de la cl = 4737 A0AD E596
uid
Thomas
uid
Thomas
sub 1024g/8DE13BB2 1999-09-23

Quinot <thomas@cuivre.fr.eu.org>
6D30 4356 29B8 004D 54B8 393D 2469
Quinot <thomas@debian.org>
Quinot <thomas@FreeBSD.org>

249

Apndice B. PGP Keys

B.3.67. Doug Rabson <dfr@FreeBSD.org>


pub

1024R/95C11771 2000-02-27 Doug Rabson <dfr@freebsd.org>


Key fingerprint = 20 BB E4 38 5D 89 D2 D4 68 A6 2F DC 0A DE 10 3C

B.3.68. Benno Rice <benno@FreeBSD.org>


pub
uid
sub

1024D/87C59909 2002-01-16 Benno Rice <benno@FreeBSD.org>


Key fingerprint = CE27 DADA 08E3 FAA3 88F1 5B31 5E34 705A 87C5 9909
Benno Rice <benno@jeamland.net>
1024g/4F7C2BAD 2002-01-16 [expires: 2007-01-15]

B.3.69. Ollivier Robert <roberto@FreeBSD.org>


pub
uid
uid
uid
uid
uid

1024R/EBBB1B41 1994-05-30 Ollivier Robert


Key fingerprint = B6 26 F7 26 64 4A 10 C3
Ollivier Robert
Ollivier Robert
Ollivier Robert
Ollivier Robert
Ollivier Robert

<roberto@keltia.freenix.org>
D1 62 23 FB 4B 3B CC DD
<roberto@Keltia.Freenix.FR>
<roberto@EU.org>
<roberto@frmug.org>
<roberto@hsc.fr.net>
<roberto@keltia.glou.eu.org>

B.3.70. Guido van Rooij <guido@FreeBSD.org>


pub
uid
pub
uid
sub

1024R/599F323D 1996-05-18 Guido van Rooij <guido@gvr.org>


Key fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED
Guido van Rooij <guido@gvr.win.tue.nl>
1024D/A95102C1 2000-10-25 Guido van Rooij <guido@madison-gurkha.nl>
Key fingerprint = 5B3E 51B7 0E7A D170 0574 1E51 2471 117F A951 02C1
Guido van Rooij <guido@madison-gurkha.com>
1024g/A5F20553 2000-10-25

B.3.71. Wolfram Schneider <wosch@FreeBSD.org>


Type Bits/KeyID
Date
User ID
pub 1024/2B7181AD 1997/08/09 Wolfram Schneider <wosch@FreeBSD.org>
Key fingerprint = CA 16 91 D9 75 33 F1 07 1B F0 B4 9F 3E 95 B6 09

250

Apndice B. PGP Keys

B.3.72. Jens Schweikhardt <schweikh@FreeBSD.org>


pub
uid
sub

1024D/0FF231FD 2002-01-27 Jens Schweikhardt <schweikh@FreeBSD.org>


Key fingerprint = 3F35 E705 F02F 35A1 A23E 330E 16FE EA33 0FF2 31FD
Jens Schweikhardt <schweikh@schweikhardt.net>
1024g/6E93CACC 2002-01-27 [expires: 2005-01-26]

B.3.73. Gregory Neil Shapiro <gshapiro@FreeBSD.org>


pub
uid
pub
uid
sub
pub
uid
sub

1024R/4FBE2ADD 2000-10-13 Gregory Neil Shapiro <gshapiro@gshapiro.net>


Key fingerprint = 56 D5 FF A7 A6 54 A6 B5 59 10 00 B9 5F 5F 20 09
Gregory Neil Shapiro <gshapiro@FreeBSD.org>
1024D/F76A9BF5 2001-11-14 Gregory Neil Shapiro <gshapiro@FreeBSD.org>
Key fingerprint = 3B5E DAF1 4B04 97BA EE20 F841 21F9 C5BC F76A 9BF5
Gregory Neil Shapiro <gshapiro@gshapiro.net>
2048g/935657DC 2001-11-14
1024D/FCE56561 2000-10-14 Gregory Neil Shapiro <gshapiro@FreeBSD.org>
Key fingerprint = 42C4 A87A FD85 C34F E77F 5EA1 88E1 7B1D FCE5 6561
Gregory Neil Shapiro <gshapiro@gshapiro.net>
1024g/285DC8A0 2000-10-14 [expires: 2001-10-14]

B.3.74. Vanilla I. Shu <vanilla@FreeBSD.org>


pub
sub

1024D/ACE75853 2001-11-20 Vanilla I. Shu <vanilla@FreeBSD.org>


Key fingerprint = 290F 9DB8 42A3 6257 5D9A 5585 B25A 909E ACE7 5853
1024g/CE695D0E 2001-11-20

B.3.75. Christopher Shumway <cshumway@FreeBSD.org>


pub
uid
sub

1024D/3219F982 2001-05-17 Christopher Shumway <cshumway@freebsd.org>


Key fingerprint = 45F5 931B 0646 BF84 E78E E274 6C29 340E 3219 F982
Christopher Shumway <cshumway@titan-project.org>
1024g/D215EFED 2001-05-17

B.3.76. Dmitry Sivachenko <demon@FreeBSD.org>


pub
uid
sub

1024D/13D5DF80 2002-03-18 Dmitry Sivachenko <mitya@cavia.pp.ru>


Key fingerprint = 72A9 12C9 BB02 46D4 4B13 E5FE 1194 9963 13D5 DF80
Dmitry S. Sivachenko <demon@FreeBSD.org>
1024g/060F6DBD 2002-03-18

251

Apndice B. PGP Keys

B.3.77. Jesper Skriver <jesper@FreeBSD.org>


pub
uid
uid
sub

1024D/F9561C31 2001-03-09 Jesper


Key fingerprint = 6B88 9CE8 66E9
Jesper
Jesper
1024g/777C378C 2001-03-09

Skriver <jesper@FreeBSD.org>
E631 C9C5 5EB4 22AB F0EC F956 1C31
Skriver <jesper@skriver.dk>
Skriver <jesper@wheel.dk>

B.3.78. Ville Skytt <scop@FreeBSD.org>


pub
uid
uid
sub

1024D/BCD241CB 2002-04-07 Ville Skytt <ville.skytta@iki.fi>


Key fingerprint = 4E0D EBAB 3106 F1FA 3FA9 B875 D98C D635 BCD2 41CB
Ville Skytt <ville.skytta@xemacs.org>
Ville Skytt <scop@FreeBSD.org>
2048g/9426F4D1 2002-04-07

B.3.79. Ben Smithurst <ben@FreeBSD.org>


pub
uid
uid
uid
uid
uid
sub

1024D/2CEF442C 2001-07-11 Ben Smithurst <ben@LSRfm.com>


Key fingerprint = 355D 0FFF B83A 90A9 D648 E409 6CFC C9FB 2CEF 442C
Ben Smithurst <ben@vinosystems.com>
Ben Smithurst <ben@smithurst.org>
Ben Smithurst <ben@FreeBSD.org>
Ben Smithurst <csxbcs@comp.leeds.ac.uk>
Ben Smithurst <ben@scientia.demon.co.uk>
1024g/347071FF 2001-07-11

B.3.80. Dag-Erling C. Smrgrav <des@FreeBSD.org>


pub
uid
uid
uid
sub
pub
uid
uid
sub

1024D/0512E49A 2001-06-26 Dag-Erling Smrgrav (office/general) <des@thinksec.com>


Key fingerprint = 94BD 6AC7 695E 4861 E27D DC7F 6726 88E1 0512 E49A
Dag-Erling Smrgrav (office/general) <des@thinksec.no>
Dag-Erling Smrgrav (OFUG) <des@ofug.org>
Dag-Erling Smrgrav (FreeBSD) <des@freebsd.org>
2048g/F409452B 2001-06-26 [expires: 2003-07-01]
1024D/27848427 2000-10-13 Dag-Erling Smrgrav (low security key) <des@freebsd.org>
Key fingerprint = 58B8 E93A 659B 0FFC E3FA 2B45 43E9 5DE4 2784 8427
Dag-Erling Smrgrav (low security key) <des@thinksec.com>
Dag-Erling Smrgrav (low security key) <des@ofug.org>
2048g/CF429755 2000-10-13

252

Apndice B. PGP Keys

B.3.81. Maxim Sobolev <sobomax@FreeBSD.org>


pub
uid
uid
uid
pub
sub

1024D/888205AF 2001-11-21 Maxim Sobolev <sobomax@FreeBSD.org>


Key fingerprint = 85C9 DCB0 6828 087C C977 3034 A0DB B9B7 8882 05AF
Maxim Sobolev <sobomax@mail.ru>
Maxim Sobolev <sobomax@altavista.net>
Maxim Sobolev <vegacap@i.com.ua>
1024D/A3B5D19F 2000-07-26 Maxim Sobolev <sobomax@FreeBSD.org>
Key fingerprint = D89F B292 7639 0D69 6ED9 58D1 71ED 0B47 A3B5 D19F
2048g/AE1BB1C4 2000-07-26

B.3.82. Daniel C. Sobral <dcs@FreeBSD.org>


pub
uid

1024R/488A2DD5 2000-06-07 Daniel C. Sobral <dcs@newsguy.com>


Key fingerprint = AF 90 A6 A2 B5 8D 6C 28 37 F3 F4 47 8B 31 47 DF
Daniel C. Sobral <dcs@freebsd.org>

B.3.83. Brian Somers <brian@FreeBSD.org>


pub
uid
uid
uid
uid
uid

1024R/666A7421 1997-04-30 Brian Somers


Key fingerprint = 2D 91 BD C2 94 2C 46
Brian Somers
Brian Somers
Brian Somers
Brian Somers
Brian Somers

<brian@freebsd-services.com>
8F 8F 09 C4 FC AD 12 3B 21
<brian@awfulhak.org>
<brian@FreeBSD.org>
<brian@OpenBSD.org>
<brian@uk.FreeBSD.org>
<brian@uk.OpenBSD.org>

B.3.84. Gregory Sutter <gsutter@FreeBSD.org>


pub
uid
uid
uid
sub
pub
uid
uid
uid
sub

1024D/40AE3052 1998-07-18 Gregory S. Sutter


Key fingerprint = 61D4 6A28 F282 482E 1D82
Gregory S. Sutter
Gregory S. Sutter
Gregory S. Sutter
2048g/02AEA3C6 1998-07-18

<gsutter@freebsd.org>
D077 E31E 323D 40AE 3052
<gsutter@pobox.com>
<gsutter@zer0.org>
<gsutter@daemonnews.org>

1024D/845DFEDD 2000-10-10 Gregory S. Sutter


Key fingerprint = D161 E4EA 4BFA 2427 F3F9
Gregory S. Sutter
Gregory S. Sutter
Gregory S. Sutter
2048g/0A37BBCE 2000-10-10

<gsutter@pobox.com>
5B1F 2015 31D5 845D FEDD
<gsutter@zer0.org>
<gsutter@freebsd.org>
<gsutter@daemonnews.org>

253

Apndice B. PGP Keys

B.3.85. Yoshihiro Takahashi <nyan@FreeBSD.org>


pub
uid
uid
sub

1024D/8394B81F 2001-10-15 Yoshihiro TAKAHASHI <nyan@jp.FreeBSD.org>


Key fingerprint = D4FA D8CA 2AED FCF4 90A3 3569 8666 0500 8394 B81F
Yoshihiro TAKAHASHI <nyan@furiru.org>
Yoshihiro TAKAHASHI <nyan@FreeBSD.org>
1024g/B796F020 2001-10-15

B.3.86. Mikhail Teterin <mi@FreeBSD.org>


pub

1024R/3FC71479 1995-09-08 Mikhail Teterin <mi@aldan.star89.galstar.com>


Key fingerprint = 5F 15 EA 78 A5 40 6A 0F 14 D7 D9 EA 6E 2B DA A4

B.3.87. Gordon Tetlow <gordon@FreeBSD.org>


pub
uid
sub

1024D/357D65FB 2002-05-14 Gordon Tetlow <gordont@gnf.org>


Key fingerprint = 34EF AD12 10AF 560E C3AE CE55 46ED ADF4 357D 65FB
Gordon Tetlow <gordon@FreeBSD.org>
1024g/243694AB 2002-05-14

B.3.88. Jacques Vidrine <nectar@FreeBSD.org>


pub
uid
pub
uid
uid
uid
sub
pub
uid
sub

1024R/094724A9 1998-04-18 Jacques Vidrine <nectar@FreeBSD.org>


Key fingerprint = 00 F9 E6 A2 C5 4D 0A 76 26 8B 8B 57 73 D0 DE EE
Jacques A. Vidrine <n@nectar.com>
1024D/1606DB95 2001-07-05 Jacques A. Vidrine <n@nectar.com>
Key fingerprint = 46BC EA5B F70A CC81 5332 0832 8C32 8CFF 1606 DB95
Jacques A. Vidrine <jvidrine@verio.net>
Jacques A. Vidrine <jacques@vidrine.cc>
Jacques A. Vidrine <nectar@FreeBSD.org>
2048g/57EDEA6F 2001-07-05
1024D/71A28C73 1997-08-21 Jacques Vidrine <nectar@FreeBSD.org>
Key fingerprint = AB2F 8D71 A4F4 467D 352E 8A41 5D79 22E4 71A2 8C73
Jacques A. Vidrine <n@nectar.com>
2048g/1C32F6B1 1997-08-21

B.3.89. Nate Williams <nate@FreeBSD.org>


pub
sub

1024D/C2AC6BA4 2002-01-28 Nate Williams (FreeBSD) <nate@FreeBSD.org>


Key fingerprint = 8EE8 5E72 8A94 51FA EA68 E001 FFF9 8AA9 C2AC 6BA4
1024g/03EE46D2 2002-01-28

254

Apndice B. PGP Keys

B.3.90. Garrett Wollman <wollman@FreeBSD.org>


pub
sub

1024D/0B92FAEA 2000-01-20 Garrett Wollman <wollman@FreeBSD.org>


Key fingerprint = 4627 19AF 4649 31BF DE2E 3C66 3ECF 741B 0B92 FAEA
1024g/90D5EBC2 2000-01-20

B.3.91. Jrg Wunsch <joerg@FreeBSD.org>


pub
uid
uid
uid

1024R/76A3F7B1 1996-04-27 Joerg Wunsch


Key fingerprint = DC 47 E6 E4 FF A6 E9
Joerg Wunsch
Joerg Wunsch
Joerg Wunsch

<joerg_wunsch@interface-business.de>
8F 93 21 E0 7D F9 12 D6 4E
<j@interface-business.de>
<joerg_wunsch@uriah.heep.sax.de>
<j@uriah.heep.sax.de>

B.3.92. Alexey Zelkin <phantom@FreeBSD.org>


pub
sub

1024D/9196B7D9 2002-01-28 Alexey Zelkin <phantom@FreeBSD.org>


Key fingerprint = 4465 F2A4 28C1 C2E4 BB95 1EA0 C70D 4964 9196 B7D9
1024g/E590ABA4 2002-01-28

B.3.93. Nicolas Souchu <nsouch@FreeBSD.org>


pub
sub

1024D/C744F18B 2002-02-13 Nicholas Souchu <nsouch@freebsd.org>


Key fingerprint = 992A 144F AC0F 40BA 55AE DE6D 752D 0A6C C744 F18B
1024g/90BD3231 2002-02-13

B.3.94. Sebastien Gioria <gioria@FreeBSD.org>


pub
uid
uid
uid
sub

1024D/7C8DA4F4 2002-02-09 Sebastien Gioria


Key fingerprint = 41F4 4885 7C23 6ED3 CC24
Sebastien Gioria
Sebastien Gioria
Sebastien Gioria
4096g/F147E4D3 2002-02-09

<eagle@freebsd-fr.org>
97AA 6DDD B426 7C8D A4F4
<gioria@FreeBSD.ORG>
<gioria@Francenet.fr>
<gioria@fluxus.net>

255

Colophon
Este libro es el resultado del trabajo de cientos de colaboradores del Proyecto de Documentacin de FreeBSD. El
texto esta escrito en SGML de acuerdo al DTD DocBook y es formateado automticamente en diferentes formatos
de presentacin usando Jade, una herramienta DSSSL de software libre. Se han usado las hojas de estilo DSSSL de
Norm Walsh con personalizacin de niveles para las instrucciones de presentacin de Jade. La versin impresa de
este documento no hubiese sido posible sin los programas TeX de Donald Knuth, LaTeX de Leslie Lamport y
JadeTeX de Sebastian Rahtz.

256

También podría gustarte