Beruflich Dokumente
Kultur Dokumente
Bienvenido a FreeBSD!. Este manual cubre la instalación y uso diario de FreeBSD 4.6.2-RELEASE. Este manual
está en constante evolución y es el resultado del trabajo de muchas personas. Algunas secciones no están completas y
otras necesitan ser actualizadas. Si estás interesado en colaborar en este proyecto, envía un mail a FreeBSD
documentation project mailing list <freebsd-doc@FreeBSD.org>. La última versión de este documento está
siempre disponible en el servidor World Wide Web de FreeBSD (../../../../index.html). También está disponible en
diferentes formatos y opciones de compresión 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/). También es posible realizar
búsquedas (../../../../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. Introducción ......................................................................................................................................................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. Preparándonos para la instalación ......................................................................................................15
2.3. Instalando FreeBSD............................................................................................................................19
2.4. Preguntas y Respuestas para usuarios de MS-DOS............................................................................20
3. Conceptos Básicos de Unix.............................................................................................................................22
3.1. Sinópsis...............................................................................................................................................22
3.2. Permisos..............................................................................................................................................22
3.3. Estructura de directorios .....................................................................................................................23
3.4. Intérpretes de órdenes (Shells)............................................................................................................23
3.5. Editores de texto .................................................................................................................................25
3.6. Para más información .........................................................................................................................26
4. Instalando Aplicaciones: Paquetes y Ports......................................................................................................28
4.1. Sinópsis...............................................................................................................................................28
4.2. Generales sobre la Instalación de Software ........................................................................................28
4.3. Localizando su Aplicación .................................................................................................................30
4.4. Usando el Sistema de Paquetes...........................................................................................................30
4.5. Usando la Colección de Ports .............................................................................................................32
4.6. Actividades Post-Instalación...............................................................................................................38
4.7. Resolución de Problemas....................................................................................................................38
5. El sistema X Window ......................................................................................................................................45
II. Administración del sistema. ..................................................................................................................................46
6. El Proceso de Arranque en FreeBSD ..............................................................................................................47
6.1. Sinópsis...............................................................................................................................................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. Interacción con el Kernel Durante el Arranque ..................................................................................52
6.5. Init: Inicialización del Proceso de Control .........................................................................................53
6.6. Secuencia de Apagado........................................................................................................................54
7. Usuarios y administración básica de cuentas ..................................................................................................55
7.1. Sinopsis...............................................................................................................................................55
7.2. Introducción........................................................................................................................................55
7.3. La cuenta superusuario .......................................................................................................................57
7.4. Cuentas de sistema..............................................................................................................................57
7.5. Cuentas de usuario..............................................................................................................................57
7.6. Modificación 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. Sinópsis...............................................................................................................................................67
8.2. ¿Porqué Construir un Kernel Propio?.................................................................................................67
8.3. Compilación e Instalación de un Kernel Personalizado .....................................................................68
8.4. El Fichero de Configuración...............................................................................................................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. Sinópsis.............................................................................................................................................86
10.2. Introducción......................................................................................................................................86
10.3. Configuración Básica........................................................................................................................87
10.4. Configuración Avanzada de una Impresora ....................................................................................101
10.5. Uso de las Impresoras.....................................................................................................................130
10.6. Alternativas al Sistema de Impresión Estándar ..............................................................................138
10.7. Resolución de Problemas................................................................................................................138
11. Discos ..........................................................................................................................................................143
11.1. Utilizando Sysinstall.......................................................................................................................143
11.2. Usando la línea de comandos .........................................................................................................144
11.3. * Discos no tradicionales ................................................................................................................144
12. Localizacion ................................................................................................................................................146
13. Sonido..........................................................................................................................................................147
13.1. Sinópsis...........................................................................................................................................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. Sinópsis...........................................................................................................................................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 Electrónico ......................................................................................................................................194
18. Lo último de lo último.................................................................................................................................195
18.1. Sinopsis...........................................................................................................................................195
18.2. FreeBSD-CURRENT vs. FreeBSD-STABLE................................................................................195
18.3. Sincronizando tu código fuente ......................................................................................................199
18.4. Usando make world .....................................................................................................................200
19. Emulacion Linux .........................................................................................................................................213
iv
III. Apéndices ............................................................................................................................................................214
20. Obteniendo FreeBSD ..................................................................................................................................215
20.1. Servidores FTP ...............................................................................................................................215
21. Bibliografía..................................................................................................................................................216
21.1. Libros y revistas específicas sobre FreeBSD..................................................................................216
21.2. Guías de usuario .............................................................................................................................216
21.3. Guías de administrador ...................................................................................................................217
21.4. Guías 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 Electrónico ..................................................................................................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
v
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. Configuración de adduser ......................................................................................................................................58
7-2. Eliminación 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 contraseña........................................................................................................................................61
7-6. Cambio de la contraseña de otro usuario como superusuario ...............................................................................61
7-7. Añadir un grupo usando pw(8)..............................................................................................................................65
7-8. Añadir 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 capítulos:
1.1. Sinopsis
¡Gracias por tu interés en FreeBSD! El siguiente capítulo trata varios temas relativos al Proyecto FreeBSD, como su
historia, objetivos, modelo de desarrollo, etc.
Después de leer este capítulo sabrás:
• Multitarea expropiativa con prioridades dinámicamente 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 simultáneamente para distintas
cosas. Esto significa, por ejemplo, que los periféricos del sistema como impresoras y dispositivos de cinta son
compartidos adecuadamente por varios usuarios del sistema o la red, y que pueden establecerse límites sobre
recursos concretos para usuarios o grupos de usuarios, protegiendo de este modo al sistema de posibles abusos.
• Conexión de redes TCP/IP muy robusta, con soporte para estándares industriales como SLIP, PPP, NFS, DHCP, y
NIS. Esto quiere decir que tu máquina FreeBSD puede interoperar fácilmente con otros sistemas y hacer de
servidor en una empresa, proporcionando importantes funciones como NFS (acceso a ficheros remotos) y
1
Capítulo 1. Introducción
servicios de correo electrónico, o poniendo a tu organización en Internet con WWW, FTP, servicios de enrutado y
cortafuegos.
• La protección de memoria garantiza que las aplicaciones (o los usuarios) no pueden interferirse. Un error fatal en
una aplicación no afecta al resto.
• FreeBSD es un sistema operativo de 32-bits (de 64-bits sobre Alpha) y fue diseñado como tal desde el comienzo.
• X Window System (X11R6), estándar de la industria, provee a los usuarios de una interfaz gráfica (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 colección de ports y paquetes. ¿Para qué
buscar en la red si puedes encontrarlo todo aquí mismo?
• Miles de aplicaciones fáciles de portar se encuentran disponibles en Internet. FreeBSD tiene un código fuente
compatible con el de los más populares sistemas Unix comerciales y por ello la mayoría de las aplicaciones tan
sólo necesitan unos pocos cambios, si alguno, para compilar.
• El diseño de la memoria virtual con paginación 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 máquinas con múltiples CPUs.
• Una colección completa de herramientas de desarrollo en C, C++, Fortran, y Perl. Muchos más lenguajes
adicionales para investigación y desarrollo avanzados se encuentran también disponibles en la colección de ports y
paquetes.
• Disponer del código fuente del sistema entero significa contar con el mayor nivel de control posible sobre tu
entorno. ¿Para qué ligarte a una solución propietaria a la merced de un fabricante cuando puedes tener un
verdadero sistema abierto?
• Extensa documentación en línea.
• ¡Y mucho más!
FreeBSD está basado en la versión 4.4BSD-Lite del Computer Systems Research Group (CSRG) de la Universidad
de California en Berkeley, y continúa la distinguida tradición de desarrollo de sistemas BSD. Además del excelente
trabajo del CSRG, el Proyecto FreeBSD ha invertido miles de horas en ajustar el sistema para conseguir un
rendimiento y una fiabilidad máximos en situaciones de carga reales. Mientras que muchos de los gigantes
comerciales se esfuerzan en dotar a los sistemas operativos para PCs de esas características, rendimiento y fiabilidad,
FreeBSD puede ofrecerlas ¡ya!
Las posibles aplicaciones en las que puede usarse FreeBSD están en verdad limitadas tan sólo por tu imaginación.
Desde desarrollo de programas hasta automatización de fábricas, desde control de inventarios hasta corrección de
azimut de antenas de satélites remotos; si puede realizarse con un Unix comercial lo más seguro es que también
pueda llevarse a cabo con FreeBSD. FreeBSD también se beneficia de las literalmente miles de aplicaciones de alta
calidad desarrolladas en centros de investigación y universidades de todo el mundo, frecuentemente disponibles por
poco o ningún coste. También se dispone de aplicaciones comerciales, cuyo número aumenta cada día.
Dado que el código fuente de FreeBSD está disponible, el sistema puede ser también personalizado en un grado
nunca visto para aplicaciones o proyectos especiales, y de maneras generalmente no posibles con los sistemas
operativos de la mayoría de los fabricantes comerciales. Aquí damos tan sólo una muestra de aplicaciones en las que
se está actualmente usando FreeBSD:
2
Capítulo 1. Introducción
• 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 (estándares o seguros [SSL])
• Cortafuegos y pasarelas NAT (“enmascaramiento IP”).
• Servidores de correo electrónico
• USENET y BBSs
• Y más...
Con FreeBSD puedes empezar fácilmente con un económico 386 e ir actualizando tu equipo hasta un
tetraprocesador Xeon con almacenamiento RAID a medida que tu proyecto crezca.
• Educación: ¿Eres estudiante de informática o de algún campo de la ingeniería 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 aquéllos cuyo principal interés en los ordenadores no es otro que el de poder realizar su trabajo
existe una serie de paquetes gratuitos de CAD, matemáticas, diseño gráfico, etc., que hacen de FreeBSD un
sistema verdaderamente útil.
• Investigación: Encontrándose disponible el código fuente del sistema entero, FreeBSD es una excelente
plataforma para la investigación en sistemas operativos y otras ramas de la informática. 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 públicos.
• 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 fácilmente.
• Estación de trabajo X: FreeBSD es una magnífica elección 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 aún más económicas y fáciles de administrar.
• Desarrollo de software: El sistema base de FreeBSD viene con una completa colección 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 anómimo. Por favor, consulta
Capítulo 20 para más información sobre cómo conseguir FreeBSD.
• Yahoo! (http://www.yahoo.com/)
• Apache (http://www.apache.org/)
3
Capítulo 1. Introducción
La génesis del proyecto FreeBSD se remonta a comienzos de 1993, en parte como una extensión 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 instantánea de 386BSD intermedia para arreglar una serie de problemas
que no se podían solventar vía patchkits. Algunos quizá recordéis 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 había estado sufriendo severamente las
consecuencias de prácticamente un año que más vale olvidar. A medida que el patchkit se iba haciendo más
incómodo día a día, nosotros estuvimos unánimente de acuerdo en que algo se tenía que hacer y decidimos ayudar a
Bill ofreciendo esta instantánea “limpia” como ínterin. Aquellos planes fueron bruscamente interrumpidos cuando
Bill Jolitz de repente decidió retirar su aprobación al proyecto sin ninguna indicación clara de lo que en su lugar
debería hacerse.
No tardamos mucho en decidir que el objetivo seguía 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 podía llegar a
ser una realidad contacté con Walnut Creek CDROM con la idea de mejorar los canales de distribución de FreeBSD
en CD, pero hasta llegamos a disponer de una máquina con la que trabajar y una conexión a Internet rápida. 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 rápido como ha logrado hoy por hoy.
La primera distribución 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 versión, y le siguió FreeBSD 1.1 en
mayo de 1994, que tuvo un gran éxito.
4
Capítulo 1. Introducción
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 condición del acuerdo fue la concesión por
parte de U.C. Berkeley de que una gran parte de Net/2 era código “gravado” y propiedad de Novell, quien a su vez lo
había adquirido de AT&T anteriormente. Berkeley obtuvo a cambio de Novell el “beneplácito” para que
4.4BSD-Lite, cuando saliera, fuera declarado como no-gravado y se instara a los usuarios de Net/2 a cambiar. Esto
incluía a FreeBSD, y se dio hasta julio de 1994 para dejar de sacar su propio producto basado en Net/2. Bajo los
términos de aquel acuerdo, se le permitía al proyecto sacar una última versión antes de la fecha límite, esa versión
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 código necesario para construir un sistema que pudiera arrancar (debido a diversos requisitos
legales) y porque la versión del 4.4 para Intel era muy incompleta. No fue hasta noviembre de 1994 que el proyecto
realizó esa transición, 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 distribución fue un éxito significativo y le siguió el más robusto y fácil 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 versión de la rama 2.1-STABLE. Ésa fue FreeBSD 2.1.7.1, publicada en
febrero de 1997, que marcó el final de la línea principal de desarrollo en 2.1-STABLE. Una vez en modo
mantenimiento, en esa rama (RELENG_2_1_0) sólo se harían ya mejoras en seguridad y correcciones de errores
críticos.
FreeBSD se ramificó desde la línea principal de desarrollo (“-CURRENT”) en noviembre de 1996 como la rama
RELENG_2_2, y la primera versión completa (2.2.1) salió en abril de 1997. Se hicieron más versiones de la rama 2.2
en verano y otoño de 1997, la última de las cuales (2.2.8) apareció en noviembre de 1998. La primera versión 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 días después una actualización menor, la
3.5.1, que incorporaba mejoras de seguridad de última hora para Kerberos. Ésa fue la última versión de la rama 3.X.
Hubo otra ramificación 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á más 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 instantáneas de la 5.0 en
CDROM (y, naturalmente, en la red) se hallan contínuamente disponibles desde el servidor de instantáneas
(ftp://current.FreeBSD.org/pub/FreeBSD/snapshots/) a medida que el trabajo progresa.
Los objetivos del Proyecto FreeBSD son proveer software que pueda ser usado con cualquier propósito y sin
compromiso alguno. Muchos de nosotros participamos significativamente en el código (y en el proyecto) y
ciertamente no nos importaría recibir una pequeña compensación económica de vez en cuando, pero decididamente
no estamos dispuestos a insitir en ello. Creemos que nuestra más importante y primordial “misión” es dar código a
todo el que venga, y para lo que quiera, de manera que el código sea tan usado y dé tanto provecho como sea posible.
5
Capítulo 1. Introducción
Creo que éste es uno de los objetivos más fundamentales del software libre y uno que nosotros apoyamos con
entusiasmo.
El código 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 más, 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 opción razonable.
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 búsqueda de nuevos desarrolladores e ideas, y
aquéllos interesados en vincularse más al proyecto tan sólo 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> también 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 cooperación:
El repositorio CVS
El árbol de código fuente central de FreeBSD se mantiene con CVS (http://www.cvshome.org/) (Concurrent
Versions System), una herramienta de control de versiones de código fuente que se halla libremente disponible
y viene con FreeBSD. El repositorio CVS (http://www.FreeBSD.org/cgi/cvsweb.cgi) principal reside en una
máquina 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 fácilmente en tu máquina también. Por favor, consulta la sección Sincronizando el árbol de código
fuente para más información sobre cómo hacerlo.
La lista de committers
Los committers son gente que tienen permisos de escritura en el árbol del CVS, y están por tanto autorizados a
realizar modificaciones en los fuentes de FreeBSD (el término “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 también puedes contactarlos por mail en FreeBSD committer’s mailing list
<cvs-committers@FreeBSD.org>.
6
Capítulo 1. Introducción
Algunos miembros del equipo core tienen también áreas de responsabilidad específicas, en cuanto a que se
encargan de garantizar que cierta parte extensa del sistema funciona según 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 mayoría de los miembros del equipo core son voluntarios a la hora de desarrollar FreeBSD y no
se benefician económicamente del proyecto, por ello “compromiso” no debería confundirse con “soporte
garantizado”. La anterior analogía de la “junta directiva” en realidad no es del todo exacta, quizá fuera más
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 más descentralizado desarrollo de FreeBSD es suscribirse a FreeBSD technical discussions
mailing list <freebsd-hackers@FreeBSD.org> (ver información sobre listas de distribución) 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 código no es la única manera de contribuir al proyecto; tienes un lista más 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 círculos concéntricos. El modelo
centralizado está diseñado para conveniencia de los “usuarios” de FreeBSD, que así tienen un modo sencillo de estar
al día con una base de código 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
fácilmente, y este modelo funciona bien para lograrlo.
Lo único que pedimos a quienes quisieran unirse a nosotros como desarrolladores de FreeBSD es la misma
dedicación que los integrantes actuales tienen para mantener su éxito.
7
Capítulo 1. Introducción
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.
También hemos considerado los comentarios y sugerencias de muchos de nuestros usuarios y hemos intentado
ofrecer lo que esperamos sea un proceso de instalación más sensato y fácil de entender. ¡Tu feedback sobre este
proceso (en constante evolución) es especialmente bienvenido!
Además de las distribuciones base, FreeBSD ofrece una colección de software con miles de programas comúnmente
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 prácticamente cualquier cosa intermedia. La colección de ports
completa requiere un espacio de aproximadamente 100MB, todos ellos expresados como “deltas” de sus fuentes
originales. Esto hace que nos sea mucho más fácil actualizar ports, y reduce de un modo importante el espacio en
disco que necesitaba la anterior colección de ports 1.0. Para compilar un port uno simplemente se sitúa bajo el
directorio del programa que desea instalar, escribe make install, y deja que el sistema se encargue del resto. La
distribución original completa de cada port que construyes se recupera dinámicamente de un CDROM o un sitio FTP,
de modo que sólo necesitas el espacio usado para construir los ports que tu quieras. La mayoría de los ports también
están disponibles precompilados en “paquetes”, que pueden instalarse con un simple comando (pkg_add) para
aquéllos que no quieran compilar sus propios ports a partir de los fuentes.
Algunos documentos que pueden ser de ayuda en el proceso de instalación y al utilizar FreeBSD pueden también
encontrarse en el directorio /usr/share/doc de cualquier máquina bajo FreeBSD 2.1 o posterior. Puedes ver los
manuales que están instalados en local con cualquier navegador que pueda mostrar HTML vía las siguientes URLs:
El manual de FreeBSD
/usr/share/doc/handbook/index.html
El FAQ de FreeBSD
/usr/share/doc/faq/index.html
También puedes ver la copia original (y más frecuentemente actualizada) en http://www.FreeBSD.org/
(../../../../index.html).
8
Capítulo 2. Instalando FreeBSD
Así que te gustaría probar FreeBSD en tu máquina?. Esta sección es una guía rápida sobre lo que necesitas hacer.
FreeBSD puede ser instalado desde una gran cantidad de soportes incluyendo CDROM, floppies, cintas magnéticas,
una partición MS-DOS y, si tienes conexion de red, vía FTP anónimo o NFS.
Sea cual sea el soporte de instalación que elijas, puedes empezar por crear los discos de instalación como se describe
más abajo. Arranca tu ordenador con el instalador de FreeBSD, aunque no estés pensando en realizar la instalación, y
podrás obtener gran cantidad de información sobre la compatibilidad del hardware de tu ordenador y FreeBSD,
además de una descripción más exacta sobre las diferentes posibilidades de instalación.
Si tienes pensado hacer la instalación vía FTP, sólo necesitas el disco de arranque, ya que él solo se encarga de
gestionar todo lo referente a la conexión, ya sea ethernet o PPP.
Para más información sobre cómo obtener la última distribución de FreeBSD, por favor, mira la sección Obteniendo
FreeBSD en el Apéndice.
Bién, para empezar a caminar, sigue los siguientes pasos:
1. Revisa la sección configuraciones soportadas de esta guía de instalación para asegurarte de que tu hardware es
soportado por FreeBSD. Sería 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 debería incluir parámatros
relevantes de configuración como interrupciones (IRQ) y direcciones de entrada/salida (IO ports).
2. Si estás instalando FreeBSD desde un CDROM tienes diferentes opciones de instalación:
• 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 estás 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 instalación de FreeBSD desde DOS.
Nota: Debes hacer esto desde el DOS y no desde una máquina Windows.
Si quieres instalar FreeBSD desde una partición 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 partición. A
continuación ejecuta el programa de instalación.
• Si cualquiera de los dos métodos anteriores funciona, puedes pasar por alto el resto de esta sección, en caso
contrario, tu opción final es crear un disco de arranque con la imágen floppies\boot.flp. Salta al paso 4
para instrucciones sobre como hacerlo.
3. Si no tienes una distribución en CDROM, simplemente bájate los discos de instalación y arranque
(ftp://ftp.FreeBSD.ORG/pub/FreeBSD/4.6.2-RELEASE/floppies/boot.flp) a tu disco duro, asegurándote de que
tu navegador grabe el fichero en lugar de mostrarlo.
9
Capítulo 2. Instalando FreeBSD
E:\ tools\fdimage
floppies\boot.flp a:
El programa fdimage formateará el disco A: y copiará la imágen boot.flp en é:l (asumiendo que estás en el
nivel superior de la distribució de FreeBSD y que las imágenes están en el subdirectorio floppies , tal y
como suele ser habitual).
# 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 instalación en el disco A:, rearranca tu sistema. Deberías 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á automáticamente con su configuración por defecto, después 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 instalación de FreeBSD se muestra en pantalla.
Si algo va mal...
Debido a limitaciones en la arquitectura de los PC’s, 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
máquina, primero mira la sección configuraciones soportadas en esta guía de instalación 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 configuración de hardware. El kernel de FreeBSD en el disco de intalación está
configurado asumiendo que la mayorí de dispositivos hardware están configurados tal y como viene de fábrica en lo
referente a IRQ’s, direcciones de memoria, canales DMA, etc. Si tu hardware ha sido reconfigurado, necesitarás usar
la opción -c en el arranque para indicarle a FreeBSD donde se encuentra cada cosa.
También es posible que la prueba de un dispositivo no existente provoque una correcta detección de un dispositivo
que sí está presente. En este caso, la prueba para este driver conflictivo deberí ser desactivada.
10
Capítulo 2. Instalando FreeBSD
AvisoNo desactives ningún dispositivo que necesitas durante la instalación, como la pantalla (sc0).
11
Capítulo 2. Instalando FreeBSD
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, CDROM’s, 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 configuración de tu sistema/placa para más detalles.
12
Capítulo 2. Instalando FreeBSD
13
Capítulo 2. Instalando FreeBSD
Nota: Actualmente FreeBSD no soporta las características PnP (plug-n-play) de algunas tarjetas. Si tu tarjeta
tiene Pnp y te está dando problemas, intenta desactivarle el PnP.
14
Capítulo 2. Instalando FreeBSD
Nota: Si estás ejecutando FreeBSD 2.1-RELEASE y tienes un CDROM IDE, usa los ficheros inst_ide.bat o
atapiflp.bat.
Para acceder al interface más sencillo de todos (desde DOS), ejecuta el comando view. Aparecerá una utilidad DOS
con un menú a través del cual puedes acceder a todas las opciones de instalación disponibles.
Si estás creando el disco de arranque desde un sistema UNIX, mira el principio de esta guía .
Una vez hayas arrancado desde DOS o floppy, deberís ser capaz de poder seleccionar el CDROM como el soporte de
instalación en el menú Media y cargar la distribución completa desde el CDROM. No se requiere ningús soporte
adicional para la instalación.
Después 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 instalación asegúrate de tener el CDROM en el lector para que éste
pueda ser detectado durante la fase de pruebas de hardware. Esto es necesario también si quieres que el
CDROM sea añadido automáticamente a la configuración inicial del sistema.
Finalmente, si quieres que tus usuarios puedan instalar FreeBSD vía FTP directamente desde el CDROM de tu
máquina, lo puedes hacer de manera muy sencilla. Una vez tienes la máquina completamente instalada, sólo tienes
que añdir la siguiente línea al fichero de passwords (usando el comando vipw):
ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent
15
Capítulo 2. Instalando FreeBSD
Cualquiera con conectividad en tu red (y permisos para acceder a ella) puede seleccionar ahora como soporte de la
instalación el tipo FTP y teclear: ftp://tu_maquina después de seleccionar “Other” en el menú de servidores
FTP.
Ahora puedes montar los disquettes y escribir en ellos como en cualquier otro sistema de ficheros.
Después de formatear los disquettes, necesitarás copiar los ficheros en ellos. Los ficheros de la distribución están
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 distribución debe estar en un
subdirectorio del floppy, por ejemplo: a:\bin\bin.aa, a:\bin\bin.ab, y así hasta completar la distribución.
Una vez llegues a la pantalla de selección del soporte de la instalación, selecciona “Floppy” , siendo preguntado por
el resto de parámetros necesarios.
C:\ MD C:\FREEBSD
16
Capítulo 2. Instalando FreeBSD
# cd /freebsd/distdir
# tar cvf /dev/rwt0 dist1 ... dist2
Cuando ejecutas la instalación, deberís asegurarte de dejar suficiente espacio libre en algún directorio temporal (el
cual podrás elegir), para que el programa de instalación pueda recuperar todo el contenido de la cinta. Dado al acceso
no aleatorio de las cintas, este método exige un poco de espacio temporal. Necesitarás 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 instalación.
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
portátil y otro ordenador. La conexión debe ser mediante un cable cruzado serie ya que la instalación SLIP no ofrece
posibilidad de marcado telefónico; esta facilidad se ofrece mediante la utilidad PPP, la cual aconsejamos usar
siempre que sea posible.
Si estás usando un módem, PPP es tu única opción. Asegúrate de tener la información de tu proveedor a mano ya que
el proceso de instalación te la pedirá de manera inmediata. Necesitarás saber como llamar a tu proveedor usando
“comando AT” específicos de tu módem por que el marcador PPP sólo ofrece un simple emulador de terminal. Si
usas PAP o CHAP, necesitarás teclear los comandos set authname y set authkey antes de teclear el comando
17
Capítulo 2. Instalando FreeBSD
term. Pásate por el manual ppp y las secciones de las FAQ (../FAQ/userppp.html) para más información. Si tienes
problemas, el log puede ser dirigido a la pantalla usando el comando set log local ....
Si puedes disponer de una conexión punto a punto a otro sistema FreeBSD (2.0R o superior), deberías considerar la
instalación sobre el puerto paralelo con un cable “laplink”. La velocidad es mucho mayor que la que podemos
conseguir sobre una conexión serie (por encima de los 50k/seg), obteniendo una instalación más rápida.
Finalmente, para la instalación de red más rápida posible, una tarjeta ethernet es siempre una buena elección.
FreeBSD soporta muchas de las tarjetas ethernet del mercado, una tabla de las tarjetas soportadas (y sus
características requeridas) está disponible en la sección Hardware soportado. Si estás usando una de las tarjeta
PCMCIA soportadas, asegúrate de tener la tarjeta insertada antes de encender el portátil. Desafortunadamente,
actualmente FreeBSD no soporta la "inserción en caliente" de tarjetas PCMCIA durante el proceso de instalación.
También necesitarás saber tu dirección IP en la red, el valor de la máscara de tu clase de direcciones y el nombre de
tu máquina. Tu administrador de sistemas puede darte todos los valores adecuados a la configuración de tu red. Si vas
a acceder a otras máquinas por nombre en lugar de dirección IP, necesitarás la dirección de un servidor de nombres y
posiblemente la dirección de un gateway (si usas PPP es la dirección IP de tu proveedor). Si no conoces las
respuestas a la mayoría de estas preguntas, definitivamente debes hablar con tu administrador de sistemas antes de
intentar éste tipo de instalación.
Una vez tienes una conexión de red de cualquier tipo funcionando, la instalación puede continuar sobre NFS o FTP.
En fichero /etc/exports de FreeBSD, esto es controlado por la opción -alldirs . Otros servidores NFS pueden
usar opciones diferentes. Si obtienes el mensaje Permission Denied por parte del servidor, significa que no tienes esta
opción activada de manera adecuada.
18
Capítulo 2. Instalando FreeBSD
ftp://165.113.121.81/pub/FreeBSD/4.6.2;-RELEASE
FTP Activo
Para todas las transferencias FTP, usa el modo “Activo”. Esto no funcionará a través de firewalls, pero
funcionará sin problemas con servidores FTP antiguos que no soportan el modo pasivo. Si tu conexión 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 través de firewalls
que no aceptan conexiones entrantes en direcciones de puertos aleatorias.
Nota: Los modos Activos y Pasivos no son lo mismo que una conexión a través de “proxy”, donde un servidor
proxy FTP está escuchando y reenviando las peticiones FTP!.
Para un servidor proxy FTP, normalmente deberías darle el nombre del servidor real al que quieres conectar como
parte del nombre de usuario después de una @-sign. El servidor proxy reenviará la petición al servidor adecuado. Un
ejemplo: digamos que quieres realizar la instalación 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
dirección de correo como password. Como medio de instalación , 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 instalación
desde esa máquina (la cual coge los ficheros de ftp.freebsd.org a medida que la instalación los necesita).
19
Capítulo 2. Instalando FreeBSD
1. Arranca con el disco de arranque. Después de la secuencia de arranque que puede tardar entre 30 segundos y 3
minutos, dependiendo del hardware, debería aparecer un menú de opciones iniciales. Si el disco no arranca o el
arranque se cuelga en algún momento, lee la sección Q&A de la Guía de Hardware para conocer las posibles
causas.
2. Pulsa F1. Deberías ver unas instrucciones básicas sobre el sistema de menús y del programa en general. Si no
has usado este sistema de menú anteriormente, por favor léelo.
3. Selecciona la opción Options y configura las preferencias que puedas tener o necesitas.
4. Selecciona la instalación Novice, Custom o Express, dependiendo de la ayuda que quieras recibir del programa
de instalación durante todo el proceso. Si nunca has usado FreeBSD anteriormente, la instalación Novice es la
más recomendada.
5. El menú de configuración final te permite configurar tu instalación de FreeBSD a través de un sistema guiado
por menús. Algunas secciones, como la de red, pueden ser importantes si has hecho la instalación desde
CDROM/Cinta/Floppy y no has configurado todavía tus interfaces de red (asumiendo que exista alguno).
Configurando adecuadamente en este momento los interfaces permitiráa que FreeBSD esté activo en la red
cuando reinicies por primera vez desde el disco duro.
20
Capítulo 2. Instalando FreeBSD
21
Capítulo 3. Conceptos Básicos de Unix
3.1. Sinópsis
Reescrito por Chris Shumway <cshumway@osd.bsdi.com>, 10 Mar 2000.
El siguiente capítulo cubre la funcionalidad y órdenes básicas del sistema operativo FreeBSD. Si se es nuevo en
FreeBSD, seguramente querrá leer este capítulo antes de buscar ayuda.
3.2. Permisos
FreeBSD, cuya raiz histórica es el UNIX BSD, tiene sus fundamentos basados en varios conceptos clave de UNIX.
El primero, y más remarcado, es que FreeBSD es un sistema operativo multi-usuario. El sistema puede manejar
varios usuarios trabajando todos simultáneamente y en tareas que no guardan relación entre sí. El sistema es el
responsable de compartir y administrar peticiones de dispositivos de hardware, periféricos, memoria y tiempo de
Unidad Central de Proceso (CPU) de manera equitativa para cada usuario.
Debido a que el sistema es capaz de soportar múltiples usuarios, todo lo que el sistema administra tiene un conjunto
de permisos que gobiernan quién 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 representación numérica funciona así:
Si se muestra un listado expandido de directorio mediante ls -l, se mostrarán en una columna los permisos de
fichero para el propietario, grupo y todos los demás. Veamos como se descompone:
-rw-r--r--
El primer carácter, de izquierda a derecha, es un carácter especial que indica si se trata de un archivo normal, un
directorio, un dispositivo especial de tipo carácter 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 guión indica que el permiso está
desactivado. En el caso de este archivo, los permisos están 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 sólo puede leer el archivo. De acuerdo con
la tabla que se muestra más arriba, los permisos para este archivo serían 644, donde cada cifra representa las tres
22
Capítulo 3. Conceptos Básicos de Unix
23
Capítulo 3. Conceptos Básicos de Unix
Una de las propiedades comunes de un shell es que completa los nombres de archivo. Dada la introducción de las
primeras letras de una orden o del nombre de un archivo, se puede hacer que el shell complete automáticamente 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 habría que teclear es: rm
fo[TAB].[TAB].
Variable Descripción
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.
DISPLAY Nombre en la red de la pantalla de X11 a la que
conectarse, si se encuentra disponible.
SHELL El shell actual.
TERM El nombre del terminal del usuario. Se usa para
determinar las posibilidades del terminal de datos.
TERMCAP Base de datos donde encontrar los códigos de escape
necesarios para realizar diferentes funciones en el
terminal.
OSTYPE Tipo de sistema operativo. Por ejemplo, FreeBSD.
MACHTYPE Arquitectura de la CPU en la que el sistema se está
ejecutando.
EDITOR El editor de texto preferido por el usuario.
PAGER El paginador de texto preferido por el usuario.
MANPATH Lista de directorios en los que se busca páginas 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 usaría 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 establecería el
valor de EDITOR a /usr/local/bin/emacs:
% export EDITOR="/usr/local/bin/emacs"
24
Capítulo 3. Conceptos Básicos de Unix
También se puede hacer que la mayoría de los shells muestren el contenido de una variable de entorno situando el
carácter $ delante del nombre de la variable desde la línea 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 común es el carácter *, que representa cualquier número de caracteres en un nombre de archivo. Estos
meta-caracteres especiales se pueden usar para la expansión 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
línea de órdenes a echo para que los vea.
Para evitar que el shell interprete estos caracteres especiales, se pueden salvar poniendo el carácter 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.
% chsh -s /usr/local/bin/bash
Ejecutar chsh sin parámetros y cambiar el shell desde allí tambien funcionaría.
Nota: El shell que se desee usar debe figurar en el archivo /etc/shells. Si se ha instalado un shell desde la
colección 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, debería hacer:
25
Capítulo 3. Conceptos Básicos de Unix
del archivo que deseamos editar. Por ejemplo, para editar /etc/rc.conf, tecléese 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 carácter acento circunflejo ^ representa a la tecla de control en el teclado, o sea que ^e significa pulsar
simultáneamente 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 también con editores de texto mucho más potentes. Por ejemplo, vi como componente del sistema
básico y emacs o vim como parte de la colección de ports. Estos editores ofrecen mucha más funcionalidad y
potencia a expensas de un aprendizaje un poco más complicado. De cualquier manera, si se planea editar muchos
textos, aprender un editor más potente como vim o emacs le ahorrará mucho tiempo a largo plazo.
% man command
command es el nombre del programa del que se quiere saber algo. Por ejemplo, para saber algo acerca del programa
ls tecléese:
% man ls
1. Órdenes/programas de usuario.
2. LLamadas de sistema y códigos numéricos de error.
3. Funciones de las librerías de C.
4. Manejadores de Dispositivos.
5. Formatos de Archivos.
6. Juegos y otros divertimentos.
7. Información miscelánea.
8. Programas relativos al mantenimiento y operación del sistema.
9. Desarrolladores del Kernel.
En algunos casos, el mismo epígrafe puede aparecer en más de una sección del manual en línea. Hay, por ejemplo,
un programa de usuario llamado chmod y una llamada de sistema chmod(). En este caso se le puede especificar a
man cuál se desea especificando la sección:
% man 1 chmod
26
Capítulo 3. Conceptos Básicos de Unix
Esto nos mostrará la página del manual en línea del programa de usuario chmod. Las referencias a una sección
concreta del manual en línea se sitúan tradicionalmente entre paréntesis en la documentación 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 cómo usarlo. Pero, ¿qué si se
recuerda el nombre del programa? Se puede usar man para que realice una búsqueda 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 puñetera idea de que
narices hacen realmente, hágase un sencillo:
% cd /usr/bin
% man -f *
% cd /usr/bin
% whatis *
% info
Para una descripción breve, tecléese h. Para una referencia rápida de un programa, tecléese ?.
27
Capítulo 4. Instalando Aplicaciones: Paquetes
y Ports
4.1. Sinópsis
FreeBSD esta colmado de una excelente colección 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 tecnologías complementarias para instalar
software de terceros en nuestro sistema: la Colección de Ports de FreeBSD y Paquetes binarios. Cualquiera de los
dos sistemas puede ser usado para instalar las versiones más recientes, de forma local o directamente desde la red.
Después de leer este capítulo, usted sabrá:
Y esto solamente si todo marcha bien. Si usted esta instalando un software que no ha sido creado específicamente
para FreeBSD, puede que sea necesario editar el código para que trabaje correctamente.
Si usted lo desea, puede continuar instalando software de la forma “tradicional” bajo FreeBSD. Aunque FreeBSD le
provee de dos tecnologís que le pueden ahorrar gran cantidad de tiempo y esfuerzo: los paquetes y ports. AL
momento de escribir esto, existen más de 7,000 aplicaciones de terceros, que estan disponibles de esta manera.
Los paquetes de FreeBSD, para cualquier aplicación, son un simple fichero que debe descargar. Los paquetes
contienen copia de binarios pre-compilados de la aplicación, así como cualquier fichero de configuración necesario o
documentación. 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
Capítulo 4. Instalando Aplicaciones: Paquetes y Ports
• Las condiciones de licenciamiento de algunas aplicaciones, prohiben la distribución de binarios. Solo permiten la
distribución del código fuente.
• Existe gente que no confia en los binarios. Al menos con el código fuente, usted puede (en teoría) revisarlo y
localizar problemas potenciales.
• Si cuenta con parches locales, necesitará el código fuente para poder aplicarlos.
• Existe gente que le gusta contar con el código fuente, para poder leerlo en ratos de ocio, modificarlo, tomar partes
prestadas (si la licencia lo permite, claro esta), y tal.
29
Capítulo 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 capítulo le explicará como usar los ports y paquetes para instalar software de terceros en FreeBSD.
• El sitio web de FreeBSD mantiene una base actualizada de todas las aplicaciones disponibles para FreeBSD, en la
dirección http://www.FreeBSD.org/ports/ (../../../../ports/index.html). Esta base esta segmentadas por categorías, y
usted puede buscar por nombre (si lo sabe) o bien listas las aplicaciones disponibles en cierta categoría.
• 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 más ports, y le enviará un correo cada vez que se
actualicen.
• Si no conoce el nombre de la aplicación que desea, pruebe usar un sitio como FreshMeat
(http://www.freshmeat.net/) para encontrar una aplicación, posteriormente verifique en el sitio de FreeBSD, para
ver si la aplicación ha sido portada a FreeBSD.
# 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.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 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
Capítulo 4. Instalando Aplicaciones: Paquetes y Ports
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 automáticamente 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 intervención 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. Quizás deba modificar alguna de estas, si se
encuentra detrás de un firewall, o bien usar un proxy FTP/HTTP. Vea la página de ayuda fetch(3) para una lista
completa. También 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 versión del paquete debe ser removida. El programa pkg_add(1) obtendrá
automáticamente la versión más 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 distribución 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 categoría 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.
# pkg_delete xchat-1.7.1
# pkg_info
cvsup-16.1 A general network file distribution system optimized for CV
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...
31
Capítulo 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 símbolos de la segunda columna, nos indican la edad relativa de la versión instalada, comparada con la versión
disponible en el árbol local de ports.
Símbolo Significado
= La versión del paquete instalado es igual a la versión del
árbol local de ports.
La versión instalada es más antigua a la versión del árbol
local de ports.
La versión instalada es más reciente que la que se
4.4.4. Miscelaneos
Toda la información relacionada con los paquetes, se guarda en el directorio /var/db/pkg. Los paquetes instalados,
así como una descripción de los mismos, puede encontrarse en este subdirectorio.
Este metodo implica el uso del programa sysinstall nuevamente, para instalar Colección de Ports.
32
Capítulo 4. Instalando Aplicaciones: Paquetes y Ports
El metodo alternativo para obtener y mantener actualizada la Colección de Ports, es usando CVSup. Lea el fichero
de ports para CVSup, en /usr/share/examples/cvsup/ports-supfile. Vea el capítulo Usando CVSup para
ver más información en el uso de CVSup y del fichero mencionado.
Este es un metodo rápido de obtener la Colección de Ports usando CVSup. Si desea mantener su árbol de ports
actualizado, o bien, aprender más acerca de CVSup, lea los documentos comentados anteriormente.
1. Instale el port net/cvsup. Vea Instalación de CVSup para mádetalles.
2. Como usuario root, copie el fichero /usr/share/examples/cvsup/ports-supfile a una nueva
ubicación, 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
• 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 información 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. Básicamente, los parches son pequeños ficheros, que incluyen algunos cambios. Estos son en formato
de texto plano, y básicamente dicen cosas como “Remove line 10” (Remover la línea 10) o “Change line 26 to
33
Capítulo 4. Instalando Aplicaciones: Paquetes y Ports
this...” (Cambiar la línea 26 por esto...). Los parches también 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 línea.
• Un fichero pkg-descr. Esta es una descripcion más detallada del programa. En ocasiones multi-línea.
• Un fichero pkg-plist. Esta es una lista de todos los ficheros que serán instalados por el port. También le indica
al sistema de ports, que ficheros remover, en caso de una desinstalación.
Algunos ports cuentan con otros ficheros, tal como pkg-message. El sistema de ports usa estos, para manejar
situaciones especiales. Si desea saber más detalles al respecto, o bien de ports en general, vea el libro FreeBSD
Porter’s Handbook (../porters-handbook/index.html).
Ahora que tiene suficientes antecedentes sobre que hacer con la Colección 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 continuación.
Pero, antes de que podamos proceder con la instalación, usted necesita seleccionar un port para instalar. Existen
varias formas de hacer esto, siendo el metodo más sencillo los ports listados en el sitio web de FreeBSD
(../../../../ports/index.html). Puede navegar entre los ports listados ahí o bien, usar la función de buscar en el sitio.
Cada port incluye una descripción, 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 búsqueda 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: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
Index: sysutils
B-deps:
R-deps:
De esta información, la parte que debe prestar atención es la que se refiere a la ruta, esto es; la línea “Path:”, en virtud
de que esta le indica la ubicación del programa. El resto de la información no es necesaria para la instalación, por lo
que no se verá aqui.
Para una búsqueda más 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
Capítulo 4. Instalando Aplicaciones: Paquetes y Ports
En ambos casos, la búsqueda es indistinto el uso de mayúsculas o minusculas. El buscar “LSOF” y “lsof” arrojaran
los mismos resultados.
Ahora que hemos encontrado un port que deseamos instalar, estamos listos para llevar a cabo la instalación. El port
incluye las instrucciones necesarias para compilar el código fuente, pero no contiene el código. Puede obtener el
código de un CDROM o desde Internet. El código 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 código fuente del programa, le llamamos
“distfile”. Puede obtener los “distfiles” desde Internet o bien desde un CDROM.
# cd /usr/ports/sysutils/lsof
Una vez que este en el directorio lsof, verá el esqueleto del port. El próximo paso es la compilación del port. Esto
lo hacemos, simplemente tecleando make en la línea de comandos. Una vez que ha hecho esto, verá algo similar a lo
siguiente:
# make
lsof_4.57D.freebsd.tar.gz doesn’t 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
Capítulo 4. Instalando Aplicaciones: Paquetes y Ports
Note que una vez que ha terminado la compilación, regresara a la línea de comandos. El siguiente paso es instalar el
port. Para efecto de instalarlo, simplemente debemos añadir 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 línea de comandos, le será posible ejecutar la aplicación 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 compilación e instalación.
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 búsqueda 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 válido 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 inclusión 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-distribución, 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 sección).
36
Capítulo 4. Instalando Aplicaciones: Paquetes y Ports
# make install
lsof_4.57D.freebsd.tar.gz doesn’t 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 línea que indica de donde esta descargando el sistema el código.
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 más de estas, si se
encuentra detrás de un cortafuegos (firewall), o si requiere usar de un proxy FTP/HTTP. Vea la página de ayuda
fetch(3) para una lista completa de las opciones.
# cd /usr/ports/sysutils/lsof
# make deinstall
37
Capítulo 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 sección de Paquetes del Handbook.
• 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 atención a los ficheros en el directorio man/ que
son las páginas de ayuda y los del directorio etc/, que contiene los ficheros de configuración, y bajo el directorio
doc/ podrá encontrar información más detallada.
Si no esta seguro de cual es la versión 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 línea de comandos.
• Una vez que ha identificado donde se localizan las paginas de ayuda de la aplicación, reviselas usando man(1). De
forma similar revise los ficheros de configuración de ejemplo (N. de T. Generalmente estos ficheros son aquellos
que tienen la terminación .sample), así como cualquier documentación adicional que se incluya.
• Si la aplicación cuenta con un sitio web, visitelo en busca de documentación 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 línea WWW:, que describe el sitio web de la aplicación.
38
Capítulo 4. Instalando Aplicaciones: Paquetes y Ports
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 comparación 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 doesn’t seem to exist on this system.
39
Capítulo 4. Instalando Aplicaciones: Paquetes y Ports
Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/.
Como se explico en la sección 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 términos de la licencia de Kermit, no
permiten su inclusión en el CDROM, así que tendrá descargarlo “a mano”, una disculpa!.
La razón por la cual obtiene esos mensajes de error, es por que no cuenta con una conexión 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 instalación.
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 situación, entonces deberá especificar un directorio diferente para guardar sus ficheros
distfiles, con el siguiente comando:
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;
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 difícil 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 documentación de su shell para ver las instrucciones para hacer esto.
40
Capítulo 4. Instalando Aplicaciones: Paquetes y Ports
8. No cuento con un CDROM de FreeBSD, pero me gustaría 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 Colección de Ports, haga lo siguiente:
# cd /usr/ports
# make fetch
# cd /usr/ports/directorio
# make fetch
9. Tengo conocimiento de que probablemente es más rápido descargar los ficheros tarball desde un servidor réplica
(mirror) de FreeBSD, más 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 más próximo 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 compilación del port.
11. ¿Existe alguna forma de detener la compilación del port? Deseo editar un poco el código, 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. Quizás la opción 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? ¿Cómo puedo asegurarme
de compilar los ports con las opciones correctas?
Si, con la versión 2.6.3 de gcc (que es la versión distribuida con FreeBSD 2.1.0 y 2.1.5), la opción -O2 puede
ocasionar un código con errores, a menos que utilice también la opción -fno-strength-reduce (la mayoría de los
ports no hacen uso de la opción -O2). Usted debe poder indicarle al compilador las opciones, con algo similar a:
41
Capítulo 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 después dirijirse al directorio con el código 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 difícil encontrar el que quiero. ¿Existe en algún lado una lista de los ports disponibles?
Vea el fichero INDEX, localizado en /usr/ports. Si desea, también puede buscar en la Colección de Ports por
medio de una palabra clave. Por ejemplo, puede encontrar ports relevantes al lenguaje de programación 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 gráficos, es posible que bar cuente con librerías
con rutinas para procesar gráficos. 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
# cd /usr/ports/cualquierlugar/grizzle
# make deinstall
17. Aguarda un momento, ¿Se supone que uno debe saber el numero de versión 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 versión se puede saber usando el comando pkg_info o bien al teclear: ls /var/db/pkg
42
Capítulo 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 código fuente, no hay una razón para
contar con él. La forma más 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:
19. He intentado eso y aun cuento con los tarballs o como se llamen, en el directorio distfiles. ¿Puedo
eliminarlos también?
Si, si esta totalmente seguro de que ha terminado con ellos, también 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 gráficos 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
mañana al ver mi computadora, solo había 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
Capítulo 4. Instalando Aplicaciones: Paquetes y Ports
Con esta opción se instalarán todos los ports que no requieren intervención del usuario. Una vez que regrese, haga:
# cd /usr/ports
# make -DINTERACTIVE install
23. En mi trabajo usamos frobble, que se encuentra la Colección 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 más
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 ¿Cúal 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 aversión a los scripts de shell, se les aconseja abstenerse de ver los ficheros de este directorio.)
44
Capítulo 5. El sistema X Window
El sistema X Window
45
II. Administración del sistema.
Los restantes capítulos de este Manual de FreeBSD cubren todos los aspectos de administración de un sistema
FreeBSD. Cada capítulo comienza describiendo lo que será aprendido una vez finalizada la lectura, explicando
también los conocimientos mínimos necesarios para un entendimiento satisfactorio.
Estos capítulos están diseñados para ser leidos cuando se necesita la información. No es necesario leerlos en un
determinado orden ni tampoco es necesario leerlos todos antes de comenzar con el uso de FreeBSD.
Capítulo 6. El Proceso de Arranque en FreeBSD
6.1. Sinópsis
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 capítulo detalla las opciones de configuración 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 comprobación 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 capítulo, 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 capítulo describe únicamente el proceso de inicio, para sistemas FreeBSD que corren en
plataformas Intel x86.
47
Capítulo 6. El Proceso de Arranque en FreeBSD
Si usted sólo cuenta con un sistema operativo instalado en su disco duro, el RMA estándar será suficiente. Este RMA
buscará la primer partición del disco que pueda arrancar, y posteriormente ejecutará el código restante de dicha
partición, 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 específico y ejecutar la
segunda etapa. La segunda etapa puede hacer un poco más 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 tamaño de los programas a ejecutar, durante las etapas uno y dos. El encadenar estas
tareas, le permiten a FreeBSD contar con un arrancador más flexible.
Posteriormente el kernel es inicializado y comienza con la comprobación 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
configuración 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.
F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 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.
48
Capítulo 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 aplicación LILO controle el proceso de arranque,
puede editar el fichero /etc/lilo.conf para incluir a FreeBSD, o bien seleccionar la opción Leave The Master
Boot Record Untouched durante el proceso de instalación. Si ha instalado el gestor de arranque de FreeBSD,
puede arrancar Linux y modificar el fichero de configuración de LILO, /etc/lilo.conf, añadiendo la siguiente
opción:
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 partición. Si usted utiliza un sistema SCSI, deberá cambiar /dev/hdXY por algo
similar a /dev/sdXY, que nuevamente utiliza la sintáxis XY. La opción 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 opción mencionada como; Leave The Master Boot Record Untouched, se mostrará “tal
cual” aparece en este documento, una vez que ha terminado la fase de partición del disco duro.
49
Capítulo 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 partición
Donde partición es el disco y partición del cual pretende arrancar el sistema, tal como ad0s1 para la primer
partición del disco Mastro—Primario.
Modo Peligrosamente DedicadoSi sólo utiliza el nombre del disco, tal como ad0, al usar el comando
disklabel(8) creará un disco peligrosamente dedicado, sin partición alguna. Seguramente esto no es lo que
desea hacer, así que asegurese dos veces antes de presionar la tecla Return cuando utilice disklabel(8).
50
Capítulo 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-conf
Rehace la configuración automática de modulos en función a las variables definidas, como sucede al arrancar.
Esta opción sólo tiene sentido utilizarla, si en primer lugar hemos usado el comando unload, y hemos
modificado alguna variable, siendo lo más común el kernel.
help [tema]
Muestra la ayuda de un tema específico, 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 línea por línea. Cualquier error
detendrá inmediatamente al comando include.
ls [-l] [ruta]
Despliega un listado de todos los ficheros que se localizan en la ruta especificada, o en el directorio raíz, si es
que no se le especifica ruta alguna. Si se utiliza la opción -l, también se mostrara el tamaño 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 opción -v, el listado que se obtiene cuenta con más detalle.
lsmod [-v]
Despliega los módulos cargados. Si se utiliza la opción -v, se mostraran más 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
Capítulo 6. El Proceso de Arranque en FreeBSD
unload
Remueve todos los módulos cargados.
• Para arrancar simplemente su kernel usual, pero en modo mono-usuario, deberá hacer lo siguiente:
boot -s
• Para descargar su kernel usual y sus módulos 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 instalación, 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 módulos actuales con otro kernel:
unload
set kernel="kernel.old"
boot-conf
• Para cargar un escrito de configuración (script que de forma automática hará todo lo que normalmente hace usted
de forma manual al momento de ejecutarse el configurador de arranque):
load -t escrito_de_configuración /boot/kernel.conf
52
Capítulo 6. El Proceso de Arranque en FreeBSD
-a
durante la inicialización del kernel, pregunta por los dispositivos a utilizar, para montar el sistema de ficheros
raíz.
-C
arranque desde una unidad de CDROM.
-c
-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 página de ayuda boot(8) para más información al
respecto.
53
Capítulo 6. El Proceso de Arranque en FreeBSD
Nota: Una consola insegura significa que usted considera como insegura físicamente su consola, por lo que
desea asegurarse de que sólo quien conoce la contraseña 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 opción insecure, y no secure.
6.5.3.1. Configuración-Fuente(rc)
La configuración fuente lee la configuración por default del fichero /etc/defaults/rc.conf, y detalles
específicos 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 configuración instalados por paquetes, localmente.
La página de ayuda rc(8) es una buena referencia para conocer más de este tipo de ficheros, así como examinar los
mismos ficheros.
54
Capítulo 7. Usuarios y administración básica
de cuentas
Contributed by Neil Blakey-Milner.
7.1. Sinopsis
FreeBSD permite que varios usuarios usen el mismo ordenador. Obviamente, sólo uno de estos usuarios puede
sentarse frente al monitor y al teclado en un momento dado 1 , pero cualquier número de usuarios puede entrar por la
red para hacer su trabajo. Para usar el sistema cada usuario ha de tener una cuenta.
Después de leer este capítulo sabrás:
• Cuáles son las diferencias entre las distintas cuentas de usuario en sistemas FreeBSD.
• Cómo añadir cuentas.
• Cómo eliminar cuentas.
• Cómo cambiar detalles de las cuentas, como el nombre completo del usuario, o su shell preferida.
• Cómo establecer límites por cuenta, para controlar los recursos como memoria o tiempo de CPU que las cuentas y
grupos de cuentas pueden emplear.
• Cómo usar grupos para facilitar la administración de cuentas.
Antes de leer este capítulo deberías:
7.2. Introducción
Todos los accesos al sistema se consiguen vía cuentas, y todos los procesos son ejecutados por usuarios, por ello la
administración de usuarios y cuentas es de una gran importancia en sistemas FreeBSD.
Cada cuenta en un sistema FreeBSD tiene cierta información asociada que la identifica.
Nombre de usuario
El nombre de usuario como se le entraría 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
creación de nombres de usuario válidos documentadas en passwd(5); típicamente se usarían nombres de usuario
de a lo sumo ocho caracteres, todos ellos en minúscula.
Contraseña
Cada cuenta tiene una contraseña asociada. La contraseña puede ser vacía, en cuyo caso no se requerirá ninguna
para acceder al sistema. Esto normalmente es una mala idea; cada cuenta debería tener una constraseña no vacía.
55
Capítulo 7. Usuarios y administración básica de cuentas
Clase de login
Las clases de login son una extensión al mecanismo de grupos que ofrecen una mayor flexibilidad a la hora de
adaptar el sistema a distintos usuarios.
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 convención usual consiste en poner todos los directorios home en /home/nombre_de_usuario o
en /usr/home/nombre_de_usuario. Los usuarios guardarían 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 interactúan con el sistema. Existen varios
tipos de shell y los usuarios experimentados tendrán sus propias preferencias, que pueden expresarse en la
configuración 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, etcétera.
56
Capítulo 7. Usuarios y administración básica de cuentas
57
Capítulo 7. Usuarios y administración básica de cuentas
Comando Resumen
adduser La aplicación de línea de comandos recomendada para
añadir nuevos usuarios.
rmuser La aplicación de línea de comandos recomendada para
eliminar usuarios.
chpass Una herramienta flexible para modificar la base de datos
de usuarios.
passwd Una herramienta de línea de comandos simple para
cambiar contraseñas 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 añadir usuarios. Crea entradas en los archivos de sistema passwd y group.
También crea un directorio home para el nuevo usuario, copia allí ficheros de configuración por defecto (“dotfiles”)
de /usr/share/skel, y opcionalmente puede enviar al usuario un mensaje de bienvenida.
Para crear el fichero inicial de configuración usa adduser -s -config_create. 2 A continuación 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.
# adduser -v
Use option “-silent” if you don’t 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
58
Capítulo 7. Usuarios y administración básica de cuentas
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 colección de ports), y
deshabilitamos el envío de un mensaje de bienvenida a nuevos usuarios. Luego grabamos la configuración, 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 vía el comando su).
Nota: La contraseña que escribes no se muestra, tampoco se muestran asteriscos. Asegúrate de no entrar dos
veces una contraseña equivocada.
Nota: Usa adduser sin argumentos en adelante, no necesitarás cambiar las opciones por defecto. Si el
programa te pide modificarlas sal y prueba con la opción -s.
7.6.2. rmuser
Puedes usar rmuser para eliminar completamente del sistema a un usuario. rmuser efectúa los siguientes pasos:
59
Capítulo 7. Usuarios y administración básica 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 vacío y el nombre del grupo coincide con el del usuario, el grupo es eliminado; esto
complementa la creación de grupos por usuario de adduser(8).
rmuser no puede ser usado para eliminar cuentas de superusuario, dado que algo así es casi siempre señal de masiva
destrucción.
Por defecto existe un modo interactivo que intenta asegurar que uno sabe lo que hace.
# 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 user’s home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user’s 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 información de los usuarios en base de datos como contraseñas, shells y datos personales.
Los administradores del sistema, como el superusuario, son los únicos que pueden modificar la información y
contraseñas de otros usuarios con chpass.
Cuando no le pasamos más opciones, salvo un nombre de usuario opcional, chpass muestra un editor con
información de usuario. Cuando se sale del editor la base de datos de usuarios se actualiza con la nueva información.
60
Capítulo 7. Usuarios y administración básica de cuentas
Un usuario normal puede modificar un pequeño subconjunto de esta información, y sólo para sí mismo.
Nota: chfn y chsh son enlaces a chpass, como también lo son ypchpass, ypchfn, e ypchsh. El soporte para
NIS es automático, 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 Capítulo 16.
7.6.4. passwd
passwd es el comando que se usa normalmente para cambiar tu propia contraseña como usuario o, como
superusuario, la de otros usuarios.
Nota: Los usuarios han de introducir su contraseña original antes de cambiarla para prevenir que gente no
autorizada pueda hacerlo cuando no se encuentren en la consola.
% passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done
# passwd jru
Changing local password for jru.
New password:
61
Capítulo 7. Usuarios y administración básica de cuentas
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 línea 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 línea de comandos
bastante potente que lo hacen adecuado para su uso en scripts de shell, aunque los nuevos usuarios puede que lo
encuentren algo más complicado que el resto de comandos que presentamos aquí.
coredumpsize
62
Capítulo 7. Usuarios y administración básica de cuentas
El tamaño de un fichero core generado por un programa está, por razones obvias, subordinado a otros límites
sobre uso de disco (p. ej., filesize, o cuotas de disco). Aun y así, se usa frecuentemente como un método
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 límite puede evitar que agoten el espacio de disco de que
disponen si algún programa grande (p. ej., emacs) deja de funcionar abruptamente.
cputime
Ésta es la máxima cantidad de tiempo de CPU que los procesos de un usuario pueden consumir.
Nota: Éste es un límite 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 límite de ese tipo no es posible a día de hoy, y sería
bastante inútil: un compilador —probablemente una tarea legítima— puede usar prácticamente el 100% de
la CPU durante algún tiempo con facilidad.
filesize
Éste es el tamaño máximo que puede llegar a tener un fichero del usuario. A diferencia de las cuotas de disco,
este límite se especifica para ficheros individuales, no para el conjunto de todos los archivos que posee.
maxproc
Éste es el máximo número 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 límite no puede ser mayor que el
límite de sistema especificado por kern.maxproc sysctl. Obsérvese también que si asignamos un valor
demasiado bajo a este límite podemos mermar la productividad de un usuario: frecuentemente es útil entrar
múltiples veces en el sistema o ejecutar pipelines. Algunas tareas, como compilar largos programas, lanzan
múltiples procesos (p. ej., make(1), cc(1), y demás preprocesadores intermedios).
memorylocked
Ésta es la máxima cantidad de memoria que un proceso puede haber solicitado tener bloqueada en memoria
principal (p. ej., ver mlock(2)). Algunos programas críticos 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 algún problema.
63
Capítulo 7. Usuarios y administración básica 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 límite para restringir el consumo de memoria en general, pero es un
buen comienzo.
openfiles
Ésta es la máxima 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 límite demasiado bajo. A nivel de
sistema, el límite para esto lo define kern.maxfiles sysctl.
sbsize
Éste es el límite 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 tamaño máximo 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, debería ser usado junto con otros límites.
Hay unas pocas cosas más a recordar cuando establecemos límites de recursos. A continuación vienen algunas
recomendaciones, sugerencias, y comentarios varios.
• Los procesos que se ponen en marcha cuando arranca el sistema por /etc/rc están asignados a la clase de login
daemon.
• Aunque el /etc/login.conf que viene con el sistema tiene valores razonables para la mayoría de los límites,
sólo tú, el administrador, puedes saber lo que es apropiado para tu sistema.
• A los usuarios del X Window System (X11) probablemente se les debería conceder más recursos que al resto. X11
de por sí consume muchos recursos, pero además contribuye a que los usuarios ejecuten más programas
simultáneamente.
• Recuerda que hay muchos límites 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 máximo 50
ficheros. Así, la cantidad de ficheros que un usuario puede abrir es el valor de openfiles multiplicado por el
valor de maxproc. Esto también aplica al uso de memoria.
Para más información acerca de límites de recursos y clases y capacidades de login en general, consulta las páginas
de manual relevantes: cap_mkdb(1), getrlimit(2), login.conf(5).
64
Capítulo 7. Usuarios y administración básica de cuentas
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 mayoría de sistemas Unix), los dos factores que tiene en cuenta el núcleo 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 encontrarás menciones al "ID de grupo" de un
usuario o de un proceso; la mayoría de las veces referirán 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 contraseña
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 descripción más completa
de la sintaxis, ver la página de manual group(5).
Si no quieres editar /etc/group manualmente, puedes usar el comando pw(8) para añadir y modificar grupos. Por
ejemplo, para añadir un grupo llamado teamtwo y luego confirmar que existe puedes usar:
# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:
El número 1100 en el ejemplo anterior es el ID de grupo del grupo teamtwo. Ahora mismo teamtwo no tiene
miembros, y es por tanto bastante inútil. Cambiemos eso invitando a jru a formar parte del grupo teamtwo.
El argumento de la opción -M es una lista con los usuarios que son miembros del grupo separados por comas.
Sabemos de secciones anteriores que el fichero de contraseñas también contiene un grupo para cada usuario. El
usuario es automáticamente añadido a la lista de grupos por el sistema; no constará como miembro cuando usemos el
comando groupshow con pw(8), pero sí cuando la información se consulte con id(1) u otra herramienta similar. En
otras palabras, pw(8) sólo manipula el fichero /etc/group; nunca tratará de leer datos adicionales de
/etc/passwd.
% id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)
65
Capítulo 7. Usuarios y administración básica de cuentas
Notas
1. Bueno, a menos que conectes múltiples terminales, pero dejaremos ese tema para el Capítulo 14.
2. La -s hace que adduser sea silencioso por defecto. Más tarde usamos -v cuando queremos cambiar valores por
defecto.
66
Capítulo 8. Configurando el Kernel de FreeBSD
Actualizado y reestructurado por Jim Mock. Contribución original por Jake Hamby.
8.1. Sinópsis
El kernel de FreeBSD es el corazón 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 más. Mientras que
FreeBSD se torna a un sistema más dinámico y configurable, en ocasiones es aún necesario reconfigurar y
recompilar un kernel hecho a la medida de nuestras necesidades.
Al término de este capítulo, usted sabrá:
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
Capítulo 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á dramáticamente.
• 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 razón, un
kernel personalizado puede ser de gran utilidad en sistemas con pequeña cantidad de memoria RAM.
• Soporte para hardware adicional. Un kernel personalizado le permite añadir dispositivos tal como tarjetas de
sonido, las cuales no estan incluidas en el kernel GENERIC.
Nota: Si no existe el directorio /usr/src/sys en su sistema, quiere decir que las fuentes del kernel no fueron
instaladas. La forma más sencilla de hacer esto es mediante el programa /stand/sysinstall, siendo usuario
root, y seleccionando Configure, posteriormente Distributions, después 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 línea 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 configuración GENERIC con el nombre que
desee. Por ejemplo:
# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL
Tradicionalmente, este nombre se escribe con mayúsuculas 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
Capítulo 8. Configurando el Kernel de FreeBSD
Sugerencia: El guardar su fichero de configuración 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 después de haber hecho esto, se dará cuenta de que ha eliminado el
fichero de configuración de su kernel.
Una alternativa es guardar este fichero de configuración en cualquier otra parte y crear un enlace simbólico 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 negación de permisos (permission denied).
Ahora edite el fichero de configuración MYKERNEL, con su editor de textos favorito. Si se trata de una instalación
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 bibliografía. De cualquier
manera FreeBSD ofrece un editor de uso muy sencillo, llamado ee, el cual, si usted es principiante, será el editor de
su elección. Sientase en libertad de modificar los comentarios en la parte superior, para que reflejen su configuración
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 información 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 Configuración
detenidamente y con sumo cuidado.
Nota: Asegurese siempre de verificar el fichero /usr/src/UPDATING, antes de realizar cualquier actualización
del sistema, en el caso de que se sincronice con el source-tree, para contar con la última versión de FreeBSD. El
fichero /usr/src/UPDATING cuenta con toda la información importante, relacionada con actualizaciones. Al ser
distribuida con FreeBSD, esta información deberá estar más actualizada que la provista por el handbook.
Ahora es momento de llevar a cabo la compilación del código 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 versión de
FreeBSD que este utilizando.
• Si esta reconstruyendo su kernel, como parte del proceso de actualización por medio de make world, entonces
utilice el metodo 2.
69
Capítulo 8. Configurando el Kernel de FreeBSD
3. Compile el kernel.
# make depend
# make
2. Compile el kernel.
# make buildkernel 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 parámetro 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 raíz 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 resolución de problemas, al final de este capítulo. Asegurese de leer la
sección que explica como recuperar el sistema, en caso de que su kernel no desee “bootear”.
Nota: Si usted ha añadido 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 más información al
respecto, revise la sección "Creando Ficheros de Dispositivos" más adelante en este capítulo.
70
Capítulo 8. Configurando el Kernel de FreeBSD
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 configuración, 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 continuación 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 inglés ;), he
decidido dejar lo que corresponde al fichero GENERIC, tal como usted lo verá, y sólo traducir los comentarios
previos de cada opción. En caso de que algún comentario del fichero sea traducido (por claridad), favor de
considerarlo como un “extra”, que no encontrará en su fichero original. Gracias por su comprensión.
#
# 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 you’ve 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
Capítulo 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 I386_CPU
cpu I486_CPU
cpu I586_CPU
cpu I686_CPU
Lo anterior especifíca 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 EV4
cpu 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 opción deberá cambiarla a como desee nombrar su kernel, como en el
ejemplo anterior; MYKERNEL. El valor que asigne en la opción 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 parámetro, más 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 n
La opción maxusers, establece el tamaño 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 automáticamente configurará esta opción para usted, si es que
explicitamente le asigna el valor de 0 a esta opción1. Si usted esta utilizando una versión de FreeBSD anterior, o bien
usted desea controlar este parámetro, deberá establecer cuando menos un valor de 4, especialmente si usted utiliza el
Sistema de Ventanas X, o compila software. La razón de esto es que una de las tablas más importantes que controla
maxusers, es la que controla el numero máximo 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 algún 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 opción maxusers no limita el numero de usuarios que pueden ingresar al sistema. Simplemente
establece valores, para el tamaño 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
Capítulo 8. Configurando el Kernel de FreeBSD
requiere correr. Una palabra clave que efectivamente limita el numero de logins remotos, es pseudo-device
pty 16 .
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 matemático. Este no es opcional.
Este es el dispositivo genérico 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 continuación, es más o menos opcional. Vea las notas debajo de cada opción, para más
información al respecto.
Mediante esta línea podemos indicarle al kernel que simule un co-procesador matemático, 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
más actual (Pentium, Pentium II, etc.), puede comentar esta línea sin problemas (N de T. Para comentar las líneas de
este fichero deberá agregar el simbolo # antes de la línea, con lo cual la línea será ignorada).
Nota: La rutina de emulación del co-procesador matemático que viene con FreeBSD, no es muy exacta. Si
usted no cuenta con un co-procesador metamático, y requiere la mayor exactitud posible, es recomendable que
modifique esta opción a quedar como GPL_MATH_EMULATE, para usar el soporte de GNU, que no se incluye por
omisión, por cuestiones de licencia.
Soporte para redes. Deje esta opción incluida, aun si no planea esta conectado a una red. La mayoría de los
programas requieren cuando menos conexión con el dispositivo loopback (ej. al hacer conexión con su propia
maquina), asi que esto es obligatorio.
Esto es el sistema de ficheros básico del disco duro. Incluyalo si desea arrancar su sistema del disco duro.
Esta opción incluye código para acelerar las operaciones del disco duro en directorios de gran tamaño, aunque esto
implique sacrificar algo de memoria adicional. Usted normalmente dejaria esta opción si es para un servidor grande o
73
Capítulo 8. Configurando el Kernel de FreeBSD
bien una estación de trabajo interactiva y eliminarlo si esta utilizando FreeBSD en un sistema pequeño donde es
importante conservar la memoria o bien si la velocidad del disco duro no es tan importante, tal como un firewall.
Esta opción habilita soft updates en el kernel, lo cual acelera la escritura en los discos. Esta opción 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 opción. Si no ve la opción soft-updates, deberá activarla usando tunefs(8) o newfs(8) para
nuevos sistemas de ficheros.
Este es el sistema de mapeo de memoria. Esto basicamente es el mapeo de la memoria RAM del disco para acceso
rápido y almacenar ficheros temporales, útil si cuenta con bastante memoria swap, de la cual desee tomar ventaja. Un
sitio perfecto para montar la partición MFS es el directorio /tmp, esto lo puede hacer añadiendo la siguiente línea al
fichero /etc/fstab:
Ahora simplemente necesita reiniciar su sistema o bien, ejecutar el comando mount /tmp.
El sistema de ficheros de red. A menos de que planee montar particiones desde un servidor Unix através de TCP/IP,
esta línea puede ser comentada.
El sistema de ficheros de MS-DOS. A menos de que planee montar una partición con formato de DOS, al momento
de arrancar el sistema, puede deshabilitar esta opción sin problema alguno. Automáticamente será cargado la primera
vez que monte una partición DOS, como se explicó anteriormente. Así mismo la excelente aplicación mtools (que
esta disponible de la colección de ports), le permite accesar a diskettes con formato DOS, sin necesidad de montarlos
o desmontarlos (y no requiere para nada de MSDOSFS).
El sistema de ficheros ISO 9660 para CDROMs. Comente esta opción si usted no cuenta con una unidad de CDROM
o bien sólo monta CDs de datos ocasionalmente (en virtud de que será cargado dinámicamente la primera vez que se
utilice para un CD de datos). Los CDs de audio no requieren de esta opción.
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 información sobre los procesos que se están ejecutando.
Compatibilidad con 4.3BSD. Conserve esta opción; algunos programas se comportaran de una forma extraña si esta
opción es comentada.
74
Capítulo 8. Configurando el Kernel de FreeBSD
Esta opción le indica al kernel hacer una pausa de 15 segundos antes de realizar una prueba en cada dispositivo SCSI
de sus sistema. Si usted sólo cuenta con dispositivos IDE, puede ignorar esta opción, de otra forma quizás 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.
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 gráfico.
Esta opción le permite ejecutar el editor visual de configuración, desde el menú de arranque.
Esta opción habilita el proceso de rastreo del kernel, que es de utilidad para efecto de depuración.
Esta opción provee memoria compartida, para el System V. El uso más común de esto es la extensión XSHM del
servidor X, del cual muchos programas de gráficos-intensos, toman ventaja, para contar con mayor velocidad. Si
usted utiliza el entorno gráfico X, definitivamente querra incluir esta opción.
Soporte para los semaforos del System V. Con menos uso que el anterior, pero sólo agregará unos cuantos cientos de
bytes a su kernel.
Soporte para mensajes de System V. Nuevamente, sólo añadirá 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.
Extensiones de tiempo-real añadidas en POSIX en 1993. Algunas aplicaciones de la colección de ports, utilizan estas
extensiones (tal como StarOffice).
75
Capítulo 8. Configurando el Kernel de FreeBSD
Esta opción permite a ICMP manejar errores,en cuanto al límite de ancho de banda a utilzar. Es recomendable dejar
esta opción tal cual, en virtud de que le permite protejer su sistema contra ataques de paquetes de Negación de
Servicio (Denial of Service - DoS).
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 opción, si cuenta con una tarjeta madre de tipo EISA. Esto habilita la autodetección y configuración del
soporte para los dispositivos que hacen uso del bus EISA.
device pci
Incluya esta opción si cuenta con una tarjeta madre basada en PCI. Esto habilita la auto-detección de las tarjetas PCI
y de los canales a utilizar en los buses PCI e ISA.
# Floppy drives
device fdc0 at isa? port IO_FD1 irq 6 drq 2
device fd0 at fdc0 drive 0
device fd1 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 sólo necesita incluir esta opción una sola
vez (device ata), para que el kernel detecte todos los dispositivos PCI ATA/ATAPI de sus sistema.
Este es necesario junto con device ata para controladores de discos ATAPI.
Este es necesario junto con device ata para controladores de CDROM ATAPI.
Este es necesario junto con device ata para controladores de disqueteras ATAPI.
Este es necesario junto con device ata para controladores de cintas ATAPI.
76
Capítulo 8. Configurando el Kernel de FreeBSD
Esta hace que el numero de controlador sea estático (como en el viejo controlador) o de lo contrario este numero es
asignado dinámicamente.
# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
device amd # AMD 53C974 (Teckram DC-390(T))
device dpt # DPT Smartcache - See LINT for options!
device isp # Qlogic family
device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets)
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 # SCSI bus (required)
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI
access)
Periféricos SCSI. Nuevamente, comente todos los que no esten presentes en su sistema, si sólo cuenta con hardware
IDE, puede eliminarlos por completo.
# RAID controllers
device ida # Compaq Smart RAID
device amr # AMI MegaRAID
device mlx # Mylex DAC960 family
Controladores de soporte RAID. Si su sistema no cuenta con estos, puede comentarlos o eliminarlos.
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 “ratón”) tipo PS/2 (psm).
77
Capítulo 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.
El dispositivo sc0 es el controlador por defaault, que recuerda a la consola SCO. Dado que la mayoría de los
programas de pantalla—completa, accesan a su consola por medio de una librería 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. También es recomendable establecer su variable
de entorno TERM como vt100 o vt220. Este controlador ha probado ser de gran utilidad en diferentes máquinas en
una red, donde las entradas para termcap o terminfo para el dispositivo sc0 no están disponibles — vt100 debe
estar disponible en practicamente cualquier plataforma.
Soporte para tarjetas PCMCIA. Debe conservar estas si usted utiliza una laptop.
78
Capítulo 8. Configurando el Kernel de FreeBSD
Estos son los cuatro puertos seriales, conocidos en el mundo MS-DOS/Windows como COM1 a COM4.
Nota: Si usted cuenta con un módem interno conectado al puerto COM4 y un puerto serial en COM2, deberá
cambiar el IRQ del módem al 2 (por alguna obscura razón el IRQ 2 = IRQ 9), de manera que pueda accederlo
desde FreeBSD. Si usted cuenta con una tarjeta serial de puertos múltiples, verifique la página de ayuda sio(4)
para más información sobre los valores que debe utilizar en estas líneas. 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 dirección de E/S de 16-bit, se congelan con estas
tarjetas, haciendo que el uso del puerto COM4 sea prácticamente imposible.
Es necesario que cada puerto serial cuente con su propia dirección IRQ (a menos que este utilizando una
tarjeta de puertos múltiples, 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
Nota: Los tres anteriores son necesarios para habilitar el soporte para impresoras que esten conectadas al
puerto en paralelo.
Este es para la unidad Iomega Zip. Que requiere soporte scbus y da. Se tiene conocimiento de un mejor desempeño
con puertos en modo EPP 1.9.
79
Capítulo 8. Configurando el Kernel de FreeBSD
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, específicamente aquellas con
transistores dependientes de MII o bien aquellos con transistores que operan igual que MII. El añadir el soporte
device miibus al fichero de configuración del kernel nos permite contar con soporte para todos los dispositivos
API genericos de MII y controladores de PHY, incluyendo los genéricos de PHY para los cuales no hay un
controlador específico.
Controladores para tarjetas Ethernet ISA. Vea el fichero /usr/src/sys/i386/conf/LINT para ver que tarjetas
están soportadas, y por cuales controladores.
80
Capítulo 8. Configurando el Kernel de FreeBSD
El soporte ether sólo es necesario si cuenta con una tarjeta Ethernet. Este incluye el soporte genérico para el código
Ethernet.
El dispositivo sl es el soporte para SLIP. El cual casi ha sido suplantado por PPP, que es más sencillo de configurar,
más adecuado para conexiones de módem a módem y más poderoso. El numero posterior a sl, especifíca cuantas
sesiones simultaneas se pueden soportar por SLIP.
Este es el soporte del kernel para conexiones PPP, por medio de teléfono. Existe también una versión de PPP como
aplicación (“userland”), que utiliza el dispositivo tun y ofrece mayor flexibilidad y funciones, tal como el marcado
a petición. El numero posterior a ppp especifíca cuantas conexiones PPP se pueden mantener de manera simultanea.
Este dispositivo es utilizado por la aplicación PPP userland. El numero posterior a tun, especifíca el soporte
máximo de sesiones PPP simultaneas. Vea la sección PPP de este libro, para mayor información al respecto.
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 después de pty
indica el numero de ptys a crear. Si usted requiere de más 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 máximo de 256.
pesudo-device gif
Esto permite el envío de IPv6 sobre IPv4, IPv4 sobre IPv6, IPv4 sobre IPv4 e IPv6 sobre IPv6. Desde la versión 4.4
de FreeBSD, el dispositivo gif es “auto-clonable”, y usted debiese utilizar el primer ejemplo (sin el numero después
de gif). Versiones anteriores de FreeBSD requieren de este numero.
Este pseudo-dispositivo captura los paquetes que han sido enviados y los redirecciona hacia el demonio “traductor”
de IPv4/IPv6.
81
Capítulo 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 transmisión de red (ej. una Ethernet). Estos paquetes pueden ser
capturados y examinados por medio del programa tcpdump(1).
Nota: La opción bpf pseudo-device también es utilizada por dhclient(8) para obtener la dirección IP del
ruteador por default (gateway). Si usted utiliza DHCP, deje esta opción habilitada.
# USB support
#device
#device
uhci
ohci
#
#
UHCI PCI- USB interface
OHCI PCI- USB interface
#device usb # USB Bus (required)
#device ugen # Generic
#device uhid # “Human Interface Devices”
#device ukbd # Keyboard
#device ulpt # Printer
#device umass # Disks/Mass storage - Requires scbus and da
#device ums # Mouse
# USB Ethernet, requires mii
#device aue # ADMtek USB ethernet
#device cue # CATC USB ethernet
#device kue # Kawasaki LSI USB ethernet
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
Capítulo 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, añadiendolos al fichero /etc/fbtab. Vea
la página de ayuda fbtab(5) para más información al respecto.
El procedimiento mencionado puede servirle para añadir 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.
83
Capítulo 8. Configurando el Kernel de FreeBSD
instalación 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 instalación del nuevo kernel debe ser realizada en securelevel 0 o menor.
Nota: Recuerde que si tiene problemas para personalizar su kernel, es recomendable asegurarse de
contar con un kernel de tipo GENERIC, o algún otro que tenga la seguridad de su funcionamiento y que
tenga un nombre que no será borrado en la siguiente compilación de kernel. No puede confiar en el
kernel.old, ya que en cada instalación de un nuevo kernel, este se sustituye con el último kernel
instalado, que pudiese se un kernel no funcional. También recuerde que, en cuanto le sea posible, debe
mover el kernel funcional a la ubicación correcta del kernel, o bien, comandos como ps(1) no trabajarán
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 línea 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 ubicación, o cualquier otro fichero, de tal forma que no
pueda ser movido o modificado, puede hacerlo con el comando:
# chflags schg /kernel
Notas
1. El algoritmo de “auto-configuración”, establece para maxusers la cantidad igual a la cantidad de memoria en el
sistema, con mínimo de 32 y un máximo de 384.
84
Capítulo 9. Seguridad
Seguridad
85
Capítulo 10. Imprimiendo
Aportado por Sean Kelly. Reestructurado y actualizado por Jim Mock.
10.1. Sinópsis
FreeBSD puede ser utilizado para imprimir en una gran variedad de impresoras, desde las antiguas impresoras de
matriz de punto, hasta las más modernas impresoras laser, y todo lo que existe en medio de estas, permitiendole crear
impresiones de alta calidad, desde cualquier aplicación que este utilizando.
FreeBSD también puede ser configurado para actuar como servidor de impresión en una red; en esta modalidad,
FreeBSD puede recibir peticiones de impresión 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
estadísticas sobre que usuario y maquina son los que más imprimen, insertar una página de aviso (“titulares” o
“páginas de encabezado”), antes de cada trabajo para verificar de quien es cada impresión, y más.
Al concluir el presente capítulo, usted sabrá:
10.2. Introducción
Para efecto de poder utilizar impresoras con FreeBSD, es necesario que configure estas, para trabajar con el sistema
de cola de impresión de Berkeley, también conocido como Sistema de Cola LPD. Este es el sistema de control de
impresión estándar en FreeBSD. Este capítulo introduce en el sistema LPD, llamado comunmente sólo LPD, e
introduce en la configuración del mismo.
Si usted esta familiarizado con el sistema de cola de impresión LPD, o bien, con algun otro sistema de impresión,
puede saltar a la sección Configurando el sistema de Cola de Impresión.
86
Capítulo 10. Imprimiendo
La aplicación LPD es responsable de controlar todo lo que se refiere a impresión. 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
máquinas 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 impresión (“queue”) para cada impresora.
• Puede imprimir encabezados (“header”) (también conocidos como titularess o páginas de aviso), de tal forma que
los usuarios identifiquen fácilmente sus impresiones, de una pila de impresiones.
• Se ocupa de los parámetros para impresoras conectadas a puertos seriales.
• Puede enviar trabajos de impresión 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 impresión
diferente o impresoras de diferentes capacidades.
• Puede mantener un registro por uso de la impresora.
Por medio de un fichero de configuración (/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.
• El sistema LPD opera los trabajos de impresión 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 añadir caracteres de día/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 impresión que esta basado en el sistema de
cola de impresión. Al configurar su sistema de cola de impresión, usted podrá soportar otro software que instale en
el futuro o el que tiene actualmente.
87
Capítulo 10. Imprimiendo
• Vea la sección Configuración 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 sección Configuración 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 impresión.
• La sección Instalación Física, le da algunos consejos sobre como instalar su impresora a los puertos de su
computadora.
• La sección Instalación de Software, le muestra como instalar y configurar el fichero de configuración de LPD
(/etc/printcap).
Si usted esta instalando una impresora que utiliza protocolos de red para imprimir en lugar de una conexión directa a
su puerto serial o paralelo, vea la sección Impresoras con Interfaces de Red para Secuencia de Datos.
Aun cuando esta sección se llama “Configuración Simple de una Impresora”, puede resultar un tanto complicada.
Conseguir que su impresora trabaje con su ordenador y con la cola de impresión LPD es la parte más compleja. Las
opciones avanzadas, tal como imprimir encabezados y crear cuentas, son sencillas una vez que su impresora está
trabajando.
• La interfaz serial, utiliza el puerto serial de su computadora para enviar datos a la impresora. La interfaz serial es
común en la industria de la computación y los cables existen disponibles facilmente e incluso sencillos de hacer.
En ocasiones las interfaces seriales requieren de cables especiales y posiblemente cierta configuración compleja de
opciones de comunicación.
• 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 fáciles de conseguir, pero un poco
más complicados de hacer a mano. Normalmente no existen opciones de comunicación, haciendo su configuración
mucho más sencilla.
88
Capítulo 10. Imprimiendo
En ocasiones las interfaces en paralelo son conocidas como interfaces “Centronics”, en virtud del tipo de conector
en la impresora.
En términos generales los interfaces seriales son más lentos que las interfaces en paralelo. Por otro lado los interfaces
en paralelo sólo ofrecen comunicación de una vía (de la computadora a la impresora), mientras que los seriales
ofrecen de dos vías. 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 comunicación de ambas vías con la impresora, es cuando la
impresora maneja PostScript. Las impresoras que manejan PostScript detallan gran cantidad de información. 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 comunicación de dos vías, 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 información. Más allá de esto, la mejor forma de contabilizar
con impresoras PostScript, es utilizando dos vías de comunicación: 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.
• Un cable de módem conecta cada pin del conector de un extremo, con el conector del otro extremo, de manera
directa. Este tipo de cable también se le conoce como cable “DTE-a-DCE”.
• Un cablde de módem-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
también se le conoce como cable “DTE-a-DTE”.
• Un cable de impresora serial, sólo es requerido por algunas impresoras poco comunes, es similar al cable de
módem-nulo, pero este envia señales a su contraparte, en lugar de que internamente se deshabilite.
También es necesario que configure los parámetros de comunicación 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) más 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. También seleccione un
protocolo para el control de flujo, que puede ser: ninguno o XON/XOFF (también conocido como “in-band” o
89
Capítulo 10. Imprimiendo
“software”). Recuerde las opciones que haya seleccionado en esta parte, para la configuración del software, que
veremos en la siguiente sección.
1. Configure su kernel, si es necesario, para habilitar el uso del puerto al que esta conectado su impresora. En la
sección Configuración del Kernel encontrará toda la información necesaria, para llevar esto a cabo.
2. Establecer en modo de comunicación el puerto en paralelo, si es que esta usando dicho puerto. La sección
Estableciendo el Modo de Comunicación en el Puerto en Paralelo le da detalles al respecto.
3. Compruebe si el sistema operativo puede enviar datos a la impresora. La sección Verificando la Comunicación
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
capítulo, veremos como se lleva a cabo esto.
Donde N es el numero de puerto serial, comenzando desde cero. Si observa una salida similar a la siguiente:
Donde N es el numero de puerto serial, comenzando desde cero. Si observa una salida similar a la siguiente:
90
Capítulo 10. Imprimiendo
Para añadir soporte para el puerto serial, vea la sección en Configuración del Kernel. Para añadir soporte para el
puerto paralelo, vea esa sección y la siguiente sección.
1. Cambiar de usuario a root con el comando su(1). Ingresar la contraseña de root cuando le sea solicitada.
2. Cambiar su posición 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
• El método por medio de interruptores es el método que utiliza el kernel GENERICO de FreeBSD. Con este
método el sistema operativo utiliza un IRQ para determinar si la impresora esta lista para recibir datos.
• El método a petición 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 método por medio de interruptores es más rápido, pero nos ocupa un preciado IRQ. Se sabe que
algunas impresoras nuevas de HP no funcionan muy bien con este método aparentemente debido (sin que aun se
entienda el por que) a un problema de tiempos. Estas impresoras necesitan el método a petición. Es conveniente que
utilice el método que se ajuste a sus necesidades. Algunas impresoras funcionan en ambos métodos, pero son
dolorosamente lentas usando el método por medio de interruptores.
Para establecer el método de comunicación, puede hacerlo de dos formas: configurando su kernel o bien, utilizando
el programa lptcontrol(8).
Para establecerlo configurando su kernel, deberá:
91
Capítulo 10. Imprimiendo
1. Editar su fichero de configuración del kernel. Busque una línea que contenga lpt0, si esta no existe añadala. 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, añada el especificador de irq:
device lpt0 at isa? port? tty irq N vector lptintr
2. Guarde el fichero. Posteriormente termine el proceso de configuración, recompilación e instalación del kernel,
después reinicie el sistema. Vea Configuración del Kernel para más información al respecto.
1. Teclee:
# lptcontrol -i -d /dev/lptN
Estos comandos los podría incluir en su fichero /etc/rc.local para que el sistema reconozca estos modos cada
vez que inicia el sistema. Vea lptcontrol(8) para más información al respecto.
%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Is this thing working?) show
showpage
El código PostScript descrito puede guardarse en un fichero y usarse en el ejemplo que aparece en la siguiente
sección.
92
Capítulo 10. Imprimiendo
Nota: Cuando este documento se refiere a lenguaje de impresión, 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 impresión, para el cual necesitaremos realizar ajustes
especiales.
• Si la impresora utiliza PostScript u otro lenguaje de impresión, entonces envie un pequeño programa a la
impresora. Teclee:
# cat
/dev/lptN
Posteriormente, línea por línea teclee el programa, cuidadosamente en virtud de que no puede editar una línea
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 impresión. No se preocupe si el texto no aparece bien; es algo que arreglaremos más
adelante.
93
Capítulo 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 inglés, en virtud de que así deberán especificarse
en la configuración.
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
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 pequeño programa a la
impresora. Teclee el programa, línea por línea, muy cuidadosamente ya que algunas teclas, como la de
retroceso son significativas para la impresora. Puede ser que también 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 impresión. No se preocupe si el texto no se ve del todo bien; posteriormente arreglaremos
esto.
94
Capítulo 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 idéntico al que guardan los ficheros que describen capacidades, tal como
/usr/share/misc/termcap y /etc/remote. Para ver mayor información con respecto al formato, vea la página
de ayuda cgetent(3).
De un modo simple, la configuración de una cola consiste en los siguientes pasos:
2. Desactive el encabezado de páginas (el cual esta activado por default), al insertar la característica sh; vea la
sección Eliminando las Páginas de Encabezados para más información al respecto.
3. Cree un directorio para la cola, y especifique su ubicación con la característica sd; vea la sección Creando el
Directorio de la Cola para mayor información.
4. Ubique el dispositivo /dev a usar por la impresora e indiquelo en el fichero /etc/printcap con la
característica lp; vea la sección Identificando el Dispositivo de Impresión para mayor información. Así mismo,
si la impresora esta conectada a un dispositivo serial, utilice las características fs, fc, xs y xc para establecer
los parámetros de comunicación; esto se detalla en la sección Configurando los Parámetros de Comunicación de
la Cola de Impresión.
5. Instalar un filtro de entrada de texto plano; vea la sección Instalando un Filtro de Texto para más detalles.
6. Probar la configuración, al imprimir algo con el comando lpr(1). Para más detalles vea las secciones Probando la
Configuración y Resolución de Problemas.
Nota: Las impresoras basadas en un lenjuaje, tal como PostScript, no pueden imprimir texto plano directamente.
Los pasos de configuración mencionados anteriormente, así como las siguientes secciones, asumen que si
usted cuenta con una impresora de este tipo, sólo 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 impresión 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 añadir un paso adicional a los mencionados anteriormente: instalar un programa de conversión
detexto-plano-a-PostScript (u otro lenguaje). La sección Acomodando Trabajos de Texto Plano en Impresoras
PostScript le indica como debe hacerse esto.
95
Capítulo 10. Imprimiendo
También, como práctica común, se suele asignar el último alias a la descripción 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 máxima. Separe cada alias con una barra vertical e incluya
dos puntos después 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:
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.
#
# FIchero /etc/printcap para el host rose - sin paginas de encabezado
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:
Note como hemos utilizado el formato correcto: donde la primer línea comienza en la primer columna de la
izquierda y las líneas subsecuentes estan cuentan con sangría de un solo tabulador (TAB). Cada línea termina con
una diagonal invertida, excepto la última.
96
Capítulo 10. Imprimiendo
También es una buena costumbre crear el directorio con el mismo nombre que tenga la impresora, como se muestra a
continuación:
# 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
sólo 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 público. Los directorios de cola deben pertenecer al
usuario daemon y grupo daemon, y debe contar con permisos de lectura, escritura y navegación por estos y
nadie más. Haremos esto para nuestros ejemplos:
Finalmente, debe indicar a LPD acerca de estos directorios, en el fichero /etc/printcap. Esta indicación se hace
por medio de la característica 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:
Notese que el nombre de la impresora inicia en la primer columna mientras que el resto debe contar con sangría de
un tabulador y todas las líneas, 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 .
97
Capítulo 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 añadir 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:
Si usted no indica la característica 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 sección Instalando un Filtro de Texto. De otra manera, asegurese de seguir las instrucciones de la siguiente sección.
• Le permite probar diferentes parámetros de comunicación, 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 impresión para hacer uso del mismo programa filtro, para varias impresoras que
pueden contar con diferentes configuraciones de comunicación.
Para efecto de controlar los parámetros de comunicación por medio de un puerto serial, con la característica lp, en el
fichero /etc/printcap, utilizarmos lo siguiente:
br#bps-velocidad
Establece la velocidad de comunicación 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 comunicación 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 comunicación con el
dispositivo.
98
Capítulo 10. Imprimiendo
xs#establece-bits
Cuando LPD abre el canal de comunicación con el dispositivo especificado por lp, lee la marca de bits en la
estructura sgttyb; limpia cualquier bit en la característica fc y establece bits en la característica fs, para
posteriormente aplicar la configuración resultante. El mismo procedimiento se sigue en el modo de bits local.
Ahora añadamos 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 :
#!/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.
Ahora indiquele a LPD que lo use, al añadirlo con la característica if, en el fichero /etc/printcap. Este filtro, lo
vamos a añadir en ambas impresoras de nuestro ejemplo, en el fichero /etc/printcap:
99
Capítulo 10. Imprimiendo
#
# Fichero /etc/printcap para host rose - añadiendo 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:
lpd_enable="YES"
# lpd
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 opción -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
Capítulo 10. Imprimiendo
%&’()*+,-./012345678
Para más pruebas de la impresora, intente descargar programas más largos (para impresoras basadas en un lenguaje)
o ejecutar lptest(1) con diferentes opciones. Por ejemplo lptest 80 60 producirá 60 líneas de 80 caracteres cada
una.
Si la impresora no funcionó, vea la sección Resolución de Problemas.
10.4.1. Filtros
Aun cuando LPD maneja con protocolos de red, controles de acceso, requisiciones y otros aspectos de la impresión,
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 plano—un ejemplo extremadamente sencillo que
debiese trabajar con la mayoría de las impresoras (en la sección Instalando un Filtro de Texto).
De cualquier manera, para tomar ventaja de la conversión de formatos, cuentas de impresión, trucos específicos de
las impresoras y demás, 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 también una gran cantidad de filtros y componentes de estos, disponibles en la Colección de Ports de
FreeBSD.
He aqui lo que encontrará en esta sección:
• La sección Como Trabajan los Filtros intenta dar un repaso general al papel que juegan los filtros en el proceso de
impresión. Es importante que lea esta sección para ver que sucede “tras bambalinas” cuando LPD usa filtros. Este
conocimiento puede ayudarle a anticiparse y resolver problemas que puede encontrar cuando instala más y más
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 impresión), las cuales no pueden
imprimir texto plano directamente. La sección 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 sección si usted cuenta con
una impresora PostScript.
• PostScript es un formato de salida muy popular. Incluso algunas personas (yo, incluido) escriben código
PostScript directamente. Pero las impresoras PostScript son caras. La sección Simulando PostScript en Impresoras
101
Capítulo 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 sección si cuenta con una impresora no-PostScript.
• La sección Filtros de Conversión, le indica la forma en que puede automatizar la conversión de ciertos formatos
específicos de ficheros, tal como gráficos o datos de un determinado tipo, a un formato que la impresora puede
entender. Después de leer esta sección 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 sección.
• La sección 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 impresión de páginas de encabezado (vea Páginas de Encabezado), puede
saltar toda esta sección.
• La sección 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 rápida de
tener un contador de trabajos de impresión 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.
• El filtro de texto, erroneamente llamado filtro de entrada en la documentación de LPD, este se encarga de manejar
la impresión 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 también debe llevar un conteo de páginas impresas, normalmente al llevar la cuenta de las líneas
impresas y comparandolas con el numero de líneas soportadas por página. El filtro de texto se comienza con los
siguientes argumentos:
donde
-c
102
Capítulo 10. Imprimiendo
anchura
es el valor de la característica pw (ancho de página), indicado en /etc/printcap, por default se usa un valor
de 132
longitud
es el valor de la característica pl (longitud de página), por default su valor es 66
sangrado
se refiere a los espacios que se considerarán 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 impresión
fichero-act
es el nombre del fichero contador, de la característica af.
• Un filtro de conversión convierte un formato específico, 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 conversión para
ficheros ditroff, de tal forma que los datos ditroff se conviertan a un formato que entiende la impresora. La sección
Filtros de Conversión explica todo lo que usted necesita saber sobre ellos. Los filtros de conversión también
requieren de llevar un conteo, si usted requiere de este control. Los filtros de conversión se inicializan con estos
argumentos:
exit 0
Esto es si el resultado de la impresión es satisfactorio.
exit 1
Si el filtro falló en la impresión, pero desea que LPD intente de nuevo el trabajo de impresión. LPD reiniciará el
filtro si sale con esta clave.
103
Capítulo 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 códigos de salida.
:if=/usr/local/libexec/psif:
También deberá especificar la característica 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
comunicación de dos vías 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
Capítulo 10. Imprimiendo
# Instalado en /usr/local/libexec/psif
#
read first_line
first_two_chars=‘expr "$first_line" : ’\(..\)’‘
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 conversión de texto plano a PostScript que desee. La Colección
de Ports de FreeBSD incluye un programa muy completo llamado a2ps que quizás desee investigar.
#!/bin/sh
#
# ifhp - Impresion simulada-Ghostscript PostScript en una DeskJet 500
# Instalada en /usr/local/libexec/hpif
#
# Trate a LF como CR+LF:
#
105
Capítulo 10. Imprimiendo
#
# Read first two characters of the file
#
read first_line
first_two_chars=‘expr "$first_line" : ’\(..\)’‘
#
/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 característica 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.
106
Capítulo 10. Imprimiendo
% dvips fichero-prueba.dvi
% lpr fichero-prueba.ps
Al instalar un filtro de conversión, podemos omitir llevar a cabo la conversión manual, y permitir que LPD se haga
cargo por nosotros. Ahora, cada vez que generemos un fichero DVI, sólo estaremos a un paso de su impresión:
% lpr -d fichero-prueba.dvi
Con esto le hemos indicado a LPD que haga la conversión del fichero DVI. Esto se lleva a cabo por medio de la
opción -d. La sección Opciones de Formato y Conversión enumera las opciones de conversión.
Por cada una de las opciones que desea que una impresora reconozca, instale un filtro de conversión y señale su ruta
en el fichero /etc/printcap. Un filtro de conversión es como el filtro de texto usado en la configuración de una
impresora simple (vea la sección 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.
En nuestro ejemplo, el uso de lpr -d indica que la impresora requiere de la característica 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 promoción de escritorio Interleaf) de forma directa, pero que nunca imprime ficheros
107
Capítulo 10. Imprimiendo
plot. Podría instalar un filtro de conversión de Printerleaf bajo la característica gf y posteriormente educar a sus
usuarios a que utilicen el comando lpr -g para llevar a cabo “impresiones de ficheros Printleaf”.
#
# Fichero /etc/printcap para host rose - añadiendo 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:
#!/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 opción -f) con la entrada estandar, que es el trabajo a imprimir.
Posteriormente inicia el filtro de impresión PostScript lprps (vea la sección 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 páginas impresas.
108
Capítulo 10. Imprimiendo
Este ejemplo es de un filtro de conversión 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
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 conversión 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 comunicación 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
Capítulo 10. Imprimiendo
#!/bin/sh
#
# hprf - Filtro de Texto FORTRAN para LaserJet 3si:
# Instalado en /usr/local/libexec/hprf
#
Y añadiremos esta línea 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 añadir un filtro DVI para la
impresora LaseJet teak comentada anteriormente. Primero, la parte sencilla: actualizaremos /etc/printcap con
la ubicación del filtro DVI:
:df=/usr/local/libexec/hpdf:
Ahora la parte complicada: crar el filtro. Para eso, vamos a necesitar un programa de conversión de
DVI-a-LaserJet/PCL. La Colección de Ports de FreeBSD (vea La Colección 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 códigos compatibles.
El programa dvilj2p hace que el filtro hpdf sea más 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 terminación .dvi, de tal forma que usar /dev/fd/0 como entrada estandar representa un problema.
Esto lo podremos solucionar, creando un enlace (simbólico) de un fichero temporal (uno que su tenga como
extensión .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 simbólicos 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 simbólico en el directorio de trabajo actual, el cual será el directorio de la
cola de impresión (especificado en /etc/printcap por la característica sd). Este lugar es perfecto para que los
filtros hagan su trabajo, especialmente que aqui existe más 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
#
# 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
Capítulo 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
Capítulo 10. Imprimiendo
• 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 diseñado
para llevar un conteo por usuario. De hecho, este sólo maneja dos argumentos:
Donde ancho es tomado de la característica pw y largo es tomado de la característica pl, para la impresora en
cuestión.
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 página diferente, el filtro de salida no hará este trabajo. Utilice un filtro de texto (también
conocido como filtro de entrada); vea la sección Instalando un Filtro de Texto . Mas allá, el filtro de salida es de
hecho más complicado en ese aspecto dado que examina la cadena de bytes que se ha enviado, para buscar alguna
marca especial y enviarse señas él mismo, a nombre de LPD.
De cualquier forma, un filtro de salida es necesario si usted desea páginas de encabezado y requiere de enviar un
secuencia de escape u otras cadenas de inicialización para habilitar la impresión de encabezados. (Aunque también
es trivial si desea cobrar de acuerdo a las páginas encabezado de cada usuario, dado que LPD no otorga información
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 páginas de encabezado (vea la sección Páginas 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
Capítulo 10. Imprimiendo
enviandose a sí mismo una señal SIGSTOP. Una vez que LPD ha terminado de ejecutar otros filtros, reiniciará el
filtro de salida, el enviarle una señal 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 intervención de alimentación 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, también es capaz de ejecutar un filtro de
salida. Si desea un trabajo rápido-y-sucio del filtro de salida, pero no desea que se escriban bytes de detección, ni
envien códigos, puede usar lpf. También puede incluir lpf en un script de shell, para que controle cualquier código
de inicialización que la impresora requiera.
113
Capítulo 10. Imprimiendo
#!/bin/sh
#
# hpof - Filtro de salida para impresoras compatibles con Hewlett Packard PCL
# Instalado en /usr/local/libexec/hpof
Especifique la ruta del filtro de salida, en la característica of. Vea la sección Filtros de Salida para más información
al respecto.
Aqui podrá ver un ejemplo de un fichero /etc/printcap para la impresora teak que trabajamos anteriormente;
hemos añadido las páginas 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 obtendrán una página de encabezado
por cada trabajo que manden a imprimir. Si los usuarios desean pasar un tiempo buscando sus impresiones, pueden
deshabilitar la impresión de esta página con el comando lpr -h; para más información sobre las opciones de lpr(1),
vea la sección Opciones de Páginas de Encabezado.
Nota: El sistema LPD envia a la impresora un caracter de alimentación de página. Si su impresora utiliza un
caracter diferente de alimentación de página, especifíquelo en el fichero /etc/printcap, bajo la característica
ff.
114
Capítulo 10. Imprimiendo
k ll ll
k l l
k l l
k k eeee l l y y
k k e e l l y y
k k eeeeee l l y y
kk k e l l y y
k k e e l l y yy
k k eeee lll lll yyy y
y
y y
yyyy
ll
t l i
t l
oooo u u ttttt l ii n nnn eeee
o o u u t l i nn n e e
o o u u t l i n n eeeeee
o o u u t l i n n e
o o u uu t t l i n n e e
oooo uuu u tt lll iii n n eeee
Job: outline
Date: Sun Sep 17 11:04:58 1995
Después de esta página, LPD manda un caracter de alimentación de página, para que el trabajo sea impreso en una
hoja blanca nueva (a menos que cuente con sf (por sus siglas en inglés “supress form feed”, que es “eliminación de
alimentación de página”) en el fichero /etc/printcap).
115
Capítulo 10. Imprimiendo
Si lo prefiere, LPD puede generar un encabezado pequeño; puede hacer esto, al especificar sb en el fichero
/etc/printcap. La página de encabezado que será impresa se vera así:
Por default, LPD imprime la página de encabezado en primer término y posteriormente el trabajo. Para cambiar este
comportamiento, es necesario incluir la característica hl (encabezado a lo último por sus siglas en inglés), en el
fichero /etc/printcap.
116
Capítulo 10. Imprimiendo
#!/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). Modifiquelo para A4 o
# 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‘ user
host
job " 1 &2
exit 1
fi
#
# 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
Capítulo 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
%
% Eso es todo
%
restore
showpage
EOF
Ahora, cada uno de los filtros de conversión y de texto, pueden invocar este script, para en primer lugar generar esta
página y después imprimir el trabajo del usuario. Aqui tenemos el filtro de conversión DVI que revisamos
anteriormente en este documento, modificado para generar páginas 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
Capítulo 10. Imprimiendo
fail() {
echo "$@" 1 &2
exit 2
}
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 conversión es identico. El filtro de texto tiene una pequeña variación (vea la
sección Como Trabajan los Filtros).
Como hemos mencionado anteriormente, este esquema simplemente nos sirve para deshabilitar la opción “eliminar
encabezados” (la opción -h) de lpr. Si los usuarios desean salvar algunos arboles (o algunos centavos si usted cobra
por estas páginas), no podrán deshabilitar esta opción, ya que cada filtro imprimirá una página de encabezado con
cada trabajo impreso.
Para permitir que los usuarios desactiven las páginas de encabezado en cada trabajo, será necesario que utilice el
truco del que hablamos en la sección Conteo de Páginas de Encabezado: escribir un filtro de salida que pase la
página generada por LPD y produzca una versión PostScript de la misma. Si el usuario utiliza lpr -h, entonces
LPD no generará una página encabezado, y tampoco su filtro de salida. De otra forma, su filtro de salida tomará los
datos de LPD y enviará el código PostScript apropiado para la impresión de la página 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 páginas de encabezado.
• 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 sección Impresoras Instaladas en Hosts Remotos le indica como hacer
esto.
119
Capítulo 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 adición (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 envío de datos por medio de la conexión de red. En este caso, usted “conecta” la
impresora a un host de la red, al hacer responsable, a dicho host, de la administración de los trabajos en la cola
de impresión y su envio a la impresora. La sección Impresoras con Interfaces de Red para Secuencia de Datos le
da algunos consejos y sugerencias sobre como instalar estas impresoras.
Sugerencia: Si usted esta utilizando una impresora LaserJet Hewlett Packard entonces la impresora nombre
automáticamente hará la conversión 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, quizás desee darle el mismo nombre y alias usado en el host de
impresión.
2. La característica lp dejela en blanco, de manera explícita (:lp=:).
3. Cree un directorio para la cola de impresión y especifique su ruta en la característica sd. LPD utilizará este
directorio para almacenar los trabajos antes de que sean enviados al host de impresión.
4. Añada el nombre del host de impresión a la característica rm.
5. Añada el nombre de la impresora en el host de impresión en la característica rp.
120
Capítulo 10. Imprimiendo
Eso es todo. No es necesario listar los filtros de conversión, dimensiones de la página, 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 sección Habilitando las Páginas de Encabezado). Ya cuenta con la entrada para la
impresora teak; y hemos añadido 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, sólo necesitamos crear los directorios para la cola de impresión en el host orchid:
Ahora los usuarios de orchid pueden imprimir en rattan y bamboo. Si, por ejemplo, un usuario en orchid teclea
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
impresión de bamboo, los dos LPDs transferirán 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
Capítulo 10. Imprimiendo
#!/usr/bin/perl
#
# netprint - Filtro de texto para impresoras en red
# Instalado en /usr/local/libexec/netprint
#
$#ARGV eq 1 || die "Usage: $0 printer-hostname port-number ";
$printer_host = $ARGV[0];
$printer_port = $ARGV[1];
require ’sys/socket.ph’;
connect(PRINTER, $sockaddr) || die "Can’t 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 línea
Diablo 750-N conectada a la red. La impresora acepta datos para impresión en el puerto 5100. El nombre de host que
tiene la impresora es scrivener. El filtro de texto a usar quedaría 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
Capítulo 10. Imprimiendo
Recuerde que si usted a configurado una impresora para su acceso de forma remota (vea la sección Impresoras
Instaladas en Hosts Remotos), será necesario que también cuente con la característica sc en el fichero
/etc/printcap del host remoto, o bien, los usuarios aun podrán hacer uso de la opción -#, 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 múltiples, pero la impresora laser bamboo es más
delicada por lo que vamos a deshabilitar las copias múltiples, al añadir la característica 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:
Ahora, tambié debemos añadir la característica sc en el fichero /etc/printcap del host orchid (y ya que estamos
en eso, deshabiltemos las copias múltiples 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
Capítulo 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:
Al incluir la característica sc, hemos prevenido el uso de lpr -#, pero eso no previene el uso de lpr(1) gran
cantidad de veces, o el envío del mismo trabajo varias veces, tal como:
Existen gran cantidad de formas para prevenir este abuso (incluyendo el ignorarlo), que usted queda en libertad de
explorar.
#
# 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:
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 sólo ciertos accesos desde
orchid, y esto les daría acceso a la impresora. O no.
124
Capítulo 10. Imprimiendo
Nota: El límite es válido para los ficheros del trabajo, y no para el tamaño total del trabajo.
El sistema de LPD no rehusará imprimir los trabajos que exceden el límite, en su lugar procederá con la impresión
hasta el límite 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 límites 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 línea no vamos a especificar límite:
#
# 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 límites aplican sólo para los usuarios locales. Si se han configurado las impresoras para su acceso de
forma remota, los usuarios que accesen remotamente no tendrán esta limitante. Para efecto de que esto sea válido en
125
Capítulo 10. Imprimiendo
los usuarios remotos, deberá agregar la característica mx en el fichero /etc/printcap de los hosts remotos. Vea la
sección Impresoras Instaladas en Hosts Remotos para mayor información sobre la instalación de impresoras en red.
Existe otra forma especializada para limitar el tamaño de los trabajos, desde impresoras remotas, vea la sección
Restricción de Trabajos de Impresoras Remotas.
Restricciones de Tamaño
Usted puede controlar cuanto espacio libre se requiere, en el sistema de fichero donde se localiza el directorio
del sistema de impresión. Cree un fichero llamado minfree, en el directorio local de la cola de impresión. En
ese fichero añada 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 también puede usarse para dar
cierta prioridad a los usuarios locales: ya que podrá colocar sus trabajos en espera en la cola de impresión, 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
Capítulo 10. Imprimiendo
El directorio de la cola de impresión es indicado por la característica 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
• El contador periodico es la forma más comun, quizás por que es la más sencilla. Cuando alguien envia una
impresión, el filtro registra el usuario, host y numero de páginas en un fichero contador. Cada mes, semestre, año 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. Después de limpiar estos ficheros puede empezar un
nuevo periodo de cero.
• El contador por tiempo es menos conocido, quizás 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 están en numeros rojos, y
127
Capítulo 10. Imprimiendo
quizás en cierto modo proveer a sus usuarios de una forma de verificar sus “cuotas de impresión”. 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), también debe proveer del código 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 información debe quedar registrada: nombre de usuario,
nombre del host, tipo de trabajo, páginas impresas, medidas del papel usado, tiempo que duro en imprimir el trabajo,
y así sucesivamente. Y para hacer esto, sólo debe modificar sus filtros.
2.00 rose:andy
3.00 rose:kelly
3.00 orchid:mary
5.00 orchid:mary
2.00 orchid:zhang
Deberá usar un fichero contador para cada impresora, dado que lpf no cuenta con una lógica 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 impresión, en un
fichero llamado acct.
Cuando sea el momento de cobrar a los usuraios, ejecute el programa pac(8). Sólo dirijase al directorio de cola, del
cual desea recabar la información y teclee pac. Usted obtendrá un resumen similar al siguiente:
128
Capítulo 10. Imprimiendo
-Pimpresora
De que impresora hacer el resumen. Esta opción funciona, solo si existe una ruta absoluta, en la
característcia 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 opción, el usuario smith del host alpha, es el mismo usuario smith del
host gamma. Sin esta opción, se consideran usuarios diferentes.
-pprecio
Computar cargos con tal precio en dólares por página o por pie, en lugar del precio tomado de la
característica 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
nombre ...
Imprimir la información del usuario nombre unicamente.
En el resumen que genera pac(8) por default, podrá observar el numero de páginas 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:
Para calcular el monto adeudado, pac(8) utiliza la característica pc del fichero /etc/printcap (que por default
utiliza 200, o 2 centavos por página). Especifique en cientos de centavos el precio a cobrar por página o por pie, que
desea cobrar, en esta característica. Puede reemplazar este valor cuando ejecuta pac(8) con la opción -p. Las
unidades de esta opción estan expresadas en dólares, y no en cientos de centavos. Por ejemplo,
# pac -p1.50
hace que cada página tenga un costo de un dolar con cincuenta centavos. Realmente se puede exceder en las
utilidades usando esta opción.
129
Capítulo 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 añade la información del
fichero contador normal.
lpr(1)
Imprime trabajos
lpq(1)
Verifica los trabajos pendientes
130
Capítulo 10. Imprimiendo
lprm(1)
Elimina un trabajo de la cola de impresión
También se cuenta con un comando de administración, lpc(8), descrito en la sección Administración de la Cola de
Impresión 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 impresión/petición, 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 utilizarán 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.
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:
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) también puede aceptar gran variedad de opciones para controlar el formato, aplicar conversiones
a los ficheros, generar copias multiples, etc.. Para mayor información, vea la sección Opciones de Impresión.
131
Capítulo 10. Imprimiendo
% lpq -P bamboo
le muestra los trabajos pendientes de la impresora bamboo. Aqui tenemos un ejemplo de la salida del comando lpq:
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
sección 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 línea de la salida de lpq(1) también 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 opción -l, para generar una salida mas detallada. Aqui tenemos un
ejemplo de lpq -l:
% lprm numero-trabajo
Para eliminar un trabajo de un a impresora especifica, utilice la opción -P. El siguiente comando elimina el trabajo
numero 10 de los trabajos pendientes de la impresora bamboo:
132
Capítulo 10. Imprimiendo
% lprm -P bamboo 10
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 línea 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 opción -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:
133
Capítulo 10. Imprimiendo
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 opción que
corresponda a cada trabajo.
Nota: Todas estas opciones, excepto -p y -T requieren de filtros de conversión instalados para la impresora
destino. Por ejemplo, la opción -d requiere de un filtro para DVI. La sección Filtros de Conversión le da más
detalles al respecto.
-c
Imprimir ficheros cifplot.
-d
-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
opción trabaja bien solo con algunos filtros de conversión.
-l
Imprimir datos de texto literal, incluyendo caracteres de control.
-n
134
Capítulo 10. Imprimiendo
-p
Formatear el texto plano con pr(1) antes de imprimir. Vea pr(1) para más información.
-T titulo
Use titulo en la cabecera de pr(1), en lugar del nombre del fichero. Esta opción solo tiene efecto cuando se
usa con -p.
-t
-v
Imprimir datos raster.
Aqui tenemos un ejemplo: este comando imprime una bonita y formateada versión de la página de ayuda de ls(1), en
la impresora por default:
El comando zcat(1) descomprime la fuente de la página 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
opción -t con lpr(1), el sistema de cola va a convertir la salida GNU troff a datos entendibles para la impresora,
cuando se imprime.
-# copias
Producir un numero de copias de cada fichero en el trabajo, en vez de una sola copia. Un administrador puede
inhabilitar esta oprción para reducir el desgaste de la impresora y alentar el uso de la fotocopiadora. Vea la
sección Restriccón 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 después de completar el trabajo. Con esta opción, 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 tamaño, quizás esta es una buena opción. Esta opción le ahorra
espacio en el directorio de cola (donde su trabajo puede terminar con el espacio libre donde reside su
135
Capítulo 10. Imprimiendo
directorio). Esta opción también 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 impresión.
Nota: Si usted esta en un entorno de red, LPD eventualmente copiará ficheros del host local al host
remoto, así que la opción -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 después de que
hayan sido impresos, cuando se use la opción -s. Tenga cuidado con esta opción!
-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 página de encabezado.
Nota: En algunos sitios esta opción puede no tenere efecto alguno, debido al metodo usado para generar
las páginas de encabezado. Vea la sección Páginas de Encabezado para más detalles.
136
Capítulo 10. Imprimiendo
abort nombre-impresora
Cancelar el trabajo actual y detener la impresora. Los usuarios podrán aun enviar sus trabajos si la cola de
pendientes esta habilitada.
clean nombre-impresora
Eliminar ficheros viejos del directorio de cola de impresión. Ocasionalmente, los ficheros que ya han sido
impresos no son eliminados correctamente por LPD, particularmente si hubo errores durante la impresión 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 opción.
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 podrán enviar trabajos, hasta que la impresora
haya sido configurada correctamente y se re-habilite la cola de pendientes, con el comando enable.
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
Capítulo 10. Imprimiendo
help nombre-del-comando
restart nombre-impresora
ReIniciar la impresora. Los usuarios comunes pueden usar esta opción en caso de que por alguna razón 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.
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 línea 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).
LPRng
LPRng, que presumiblemente significa “LPR: the Next Generation” (“LPR: la Siguiente Generación”), 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.
138
Capítulo 10. Imprimiendo
139
Capítulo 10. Imprimiendo
• Usar los botones de configuración de la impresora o el panel de control, para modificar su interpretación 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, quizás sea necesario
reconfigurar la impresora, para usar la interpretación de los caracteres de CR y LF del otro sistema
operativo. Puede escoger una de las otras soluciones que se comentan más adelante.
• Puede hacer que el controlador serial de FreeBSD, automáticamente 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 característica fs del fichero /etc/printcap para la impresora.
• Envie un código 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 códigos de escape soportados por su impresora. Una vez
que localice el código correcto, modifique su filtro de texto, para que se envie este código primero y después
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 impresión; y
por último envia un caracter de alimentación de página, para expulsar la última página 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.
140
Capítulo 10. Imprimiendo
• 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 característica fs.
• Si la impresora cuenta con soporte para el control de flujo externo (carrier), especifique el bit MDMBUF en la
característica 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 combinación de los bits NLDELAY,
TBDELAY, CRDELAY, VTDELAY y BSDELAY en la característica fs, para añadir el retraso apropiado en la
cadena de información enviada a la impresora.
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 característica lf, en la entrada de su impresora en el fichero /etc/printcap. Por
ejemplo, aqui esta la entrada de rattan, con la característica lf :
rattan|line|diablo|lp|Diablo 630 Line Printer:\
141
Capítulo 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 característica lf, entonces LPD utilizará /dev/console como la salida por default.
142
Capítulo 11. Discos
Escrito por David O’Brien <obrien@FreeBSD.org > 26 de Abril de 1998
Supongamos que queremos añadir un nuevo disco SCSI a una máquina que en la actualidad sólo 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 añadido será da1 y lo montaremos en /1 (si está usted añadiendo 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. También puede usted usar slices en un disco que esté dedicado a FreeBSD, pero en un ordenador que
además 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á añadido como /dev/da1s1e. Esto se lee del siguiente modo: disco SCSI,
unidad número 1 (segundo disco SCSI), slice 1 (partición 1 de la BIOS) y partición e de tipo BSD. En el caso de
utilizar el modo dedicado, el disco será añadido, simplemente, como /dev/da1e.
143
Capítulo 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 añada 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 información 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
partición. Ya puede salir del editor de etiquetas de particiones y de Sysinstall.
El último paso consiste en editar /etc/fstab para añadir una entrada para el nuevo disco.
144
Capítulo 11. Discos
145
Capítulo 12. Localizacion
Localizacion
146
Capítulo 13. Sonido
Contributed by Moses Moore.
13.1. Sinópsis
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 Colección de Ports de FreeBSD contiene también
aplicaciones que le permitirán editar audio previamente grabado, añadir efectos de sonido y controlar dispositivos
MIDI.
Tras leer éste capítulo usted debería saber:
147
Capítulo 13. Sonido
device pcm
a su archivo de configuración del kernel. Si tiene una tarjeta ISA PnP también tendrá que añadir:
device sbc
device pcm
device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15
al archivo de configuración de su kernel. Los detalles de configuración de arriba son por defecto. Debería cambiar la
IRQ u otros parámetros para hacerlos coincidir con su tarjeta. Vea la página sbc(4) del manual para más información.
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 sección. Recomendamos que se actualice a la última versión -STABLE antes de
intentar usar ésta tarjeta.
device pcm
device gusc
device pcm
device gus0 at isa? port 0x220 irq 5 drq 1 flags 0x13
al archivo de configuración de su kernel. Puede necesitar cambiar la IRQ u otro tipo de datos para que ajusten con su
tarjeta. Vea la página gusc(4) del manual para más información.
148
Capítulo 13. Sonido
device pcm
device csa
device pcm
al su archivo de configuración de su kernel. Si tiene una tarjeta ISA non-PnP que no tenga un “bridge driver” tendrá
que añadir:
a su archivo de configuración del kernel. Puede necesitar cambiar la IRQ u otros parámetros para que ajusten con su
tarjeta.
options PNPBIOS
La salida que muestre su sistema puede ser diferente. Si no hay dispositivos pcm en la salida del comando hay algún
error en los pasos previos. Si le sucede ésto vuelva a su archivo de configuración del kernel y asegúrese de que ha
elegido el dispositivo adecuado. Consulte la sección de problemas para opciones adicionales.
149
Capítulo 13. Sonido
# cd /dev
# sh MAKEDEV snd0
Si encontró pcm1 haga igual que que en el paso anterior reemplazando snd0 con snd1.
Dispositivo Descripción
/dev/audio dispositivo de audio compatible con SPARC
/dev/dsp Dispositivo para voz digital
/dev/dspW Como /dev/dsp pero con muestreo de 16 bits
/dev/midi Dispositivo midi de acceso Raw
/dev/mixer Dispositivo Mezclador
/dev/music Interfaz para secuenciador de nivel 2
/dev/sequencer Dispositivo secuenciador
/dev/pss Interfaz para dispositivos programables
Si todo ha ido bien debería tener una tarjeta de sonido funcionando. Si no es así lea la siguiente sección.
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
Capítulo 13. Sonido
El formato MP3 (MPEG Layer 3 Audio) se aproxima mucho a la calidad de sonido del CD, así que no hay razón
para privar a su sistema FreeBSD de disfrutar de él.
# cdda2wav -D 0,1,0 -B
La opción -D 0,1,0 indica el dispositivo SCSI 0,1,0, que se corresponde con la salida del comando cdrecord
-scanbus.
151
Capítulo 13. Sonido
# cdda2wav -D 0,1,0 -t 7
Ésta opción trata la séptima 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 sólo soporta unidades CDROM SCSI. Para unidades IDE utilice audio/cdd o alguna otra entre las
variadas aplicaciones que hay en la colección de ports de audio.
# lame -h -b 128 \
--tt "Título de Copla o Cantar" \
--ta "Grupo, Solista o Coral Sinfónica" \
--tl "Título del Ãlbum" \
--ty "2001" \
--tc "Autor de la extracción y paso a MP3" \
--tg "Genre" \
audio01.wav audio01.mp3
Los 128 kbits pasan por ser el estándar “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
también será mayor--. La opción -h utiliza el modo “más calidad pero algo más lento”. Opciones que empiezan por
--t indican etiquetas ID3, que suelen incluír información sobre la canción que se incluye en el archivo MP3. Puede
encontrar más opciones consultando el manual de lame.
1. Ejecute XMMS.
2. Botón derecho del ratón 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
Capítulo 13. Sonido
7. Cargue el archivo MP3 en XMMS normalmente, con el volumen al 100% y las opciones de ecualización
desactivadas.
8. Pulse Play — parecerá que XMMS está reproduciendo música 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.
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 más información acerca del uso de grabadoras de CD en FreeBSD.
153
Capítulo 14. Comunicaciones Serie
Comunicaciones Serie
154
Capítulo 15. PPP y SLIP
Reestructurado, reorganizado, y actualizado por Jim Mock.
15.1. Sinópsis
FreeBSD cuenta con un gran numero de formas para conectar una computadora a otra. Para establecer una red o una
conección a Internet por medio de un módem, o bien, permitir a otras computadoras conectarse por medio de este, se
requiere del uso de PPP o SLIP. Este capítulo describe en detalle como configurar los servicios de comunicación para
llevar esto a cabo.
Una vez que haya leido este capítulo, usted sabrá:
155
Capítulo 15. PPP y SLIP
15.2.1.1. Aclaraciones
Este documento asume que usted cuenta con lo siguiente:
• Una cuenta activa con un Proveedor del Servicio de Internet (ISP—por sus siglas en inglées), que usted utliza para
conectarse.
• Adicionalmente, un módem o algún otro dispositivo, conectado a su sistema, y configurado correctamente, que le
permite realizar la conexión con su ISP.
• El número telefónico de su proveedor.
• Su nombre de usuario y contraseña. (Ya sea un nombre de usuario y/o contraseña estilo UNIX, o bien para uso por
medio de PAP o CHAP)
• La dirección IP de uno o más servidores de nombres (DNS). Normalmente, estos serán provistos por su proveedor
de Internet. Si su proveedor no le ha dado esta información, puede utilizar la opción enable dns en su fichero
ppp.conf, para indicarle a ppp que configure el DNS por usted. Esta característica depende del sistema de
negociación de DNS que mantenga su proveedor de Internet.
La siguiente información puede ser que haya sido provista por su proveedor de servicios de internet, pero no es
completamente necesaria:
• La dirección IP del gateway (pasarela de salida) de su PSI. El gateway es la máquina a la cual usted se conectará y
será la ruta por default. Si usted no cuenta con esta información, puede inventar uno y al intentar conectarse, el
servidor de su PSI, este nos indicará cual es el valor correcto.
Esta dirección 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 dirección de IP estática 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 información que hemos comentado, le recomendamos contactar con su PSI para
requerirla.
156
Capítulo 15. PPP y SLIP
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.
# 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
hosts
bind
157
Capítulo 15. PPP y SLIP
Esto le indica a la resolución que busque en primer término en el archivo /etc/hosts, y posteriormente en el DNS,
si el nombre no fué localizado
Esto le indica a la resolución 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.
Las primeras dos líneas definen el alias del localhost, como sinónimo de la maquina actual. Independientemente
de su propia dirección IP, la dirección IP en estas líneas siempre debe ser 127.0.0.1 y ::1. La última línea
especifica el nombre foo.bar.com (asi como foo para acortarlo), para la dirección 10.0.0.1.
Nota: La dirección 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 dirección IP fija, asín como un nombre, y usted no lo utiliza como nombre
del host, añada esto también al archivo /etc/hosts.
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 información se la hayan entregado al suscribirse o no, pero una rápida llamada a su ISP debe resolver
esto.
Tambié puede configurar su sistema, de tal forma que syslog(3) provee de un login para su conección por PPP. Sólo
añada:
!ppp
158
Capítulo 15. PPP y SLIP
*.* /var/log/ppp.log
Nota: Las líneas que terminan con :, deben comenzar en la primer columna del archivo — el resto de las líneas
deberán utilizar sangría como se muestra, utilizando espacios o bien el tabulador. La mayor parte de la
información que requiere ingresar aqui, se mostro en el marcado manual anterior.
1 default:
2 set log Phase Chat LCP IPCP CCP tun command
3 ident user-ppp VERSION (built COMPILATIONDATE)
4 set device /dev/cuaa0
5 set speed 115200
6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
8 set timeout 180
9 enable dns
10
11 provider:
12 set phone "(123) 456 7890"
13 set authname foo
14 set authkey bar
15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
16 set timeout 300
17 set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0
18 add default HISADDR
Línea 1:
Identifica la entrada por omisión a utilizar. Los comandos descritos en esta parte, serán ejecutados de manera
automática cuando se ejecute ppp.
159
Capítulo 15. PPP y SLIP
Línea 2:
Habilita los par´metros de acceso. Cuando la configuración trabaja sin problemas, esta línea deberá quedar de la
siguiente forma:
set log phase tun
Línea 3:
Esta línea le indica a PPP como identificarse ante el puerto. PPP se identifica, si tiene algun problema para
efecto de establecer la conexión, en esta identificación, PPP provee de cierta información que puede resultar util
para detectar el probelma.
Línea 4:
Le indica a PPP cual es el dispositivo a utilizar para realizar la conexión, o bien al que esta conectado el módem.
El dispositivo COM1 es /dev/cuaa0 y COM2 es /dev/cuaa1.
Línea 5:
Establece la velocidad a utilizar en la conexión. Si la velocidad de 115200 no trabaja correctamente (la cual
deberia con cualquier módem normal), intente con una velocidad inferior, como puede ser 38400.
Líneas 6 y 7:
La cadena de inicialización. El modo User PPP, utiliza y espera enviar-recibir, la información utilizando una
sintaxis similar a la descrita en el programa chat(8). Favor de consultar la página de ayuda para conocer las
opciones de este lenguaje.
Nota: Este comando continua en la siguiente línea, para facilitar su lectura. Cualquier comando en el archivo
ppp.conf puede utilizar este formato, siempre y cuando el último caracter de la línea sea una diagonal
invertida "\".
Línea 8:
Establece el tiempo de espera que debe tratar de realizar la conexión. Por omisión se establecen 180 segundos,
por lo que esta línea se deja por pura estética.
Línea 9:
Esta línea le indica a PPP, que solicite confirmación al puerto, sobre la configuración de la resolución local. Si
usted esta corriendo un servidor local de nombres, deberá comentar o eliminar esta línea.
Línea 10:
Una línea en blanco, para facilitar la lectura. Las líneas en blanco son ignoradas por PPP.
Línea 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 opción load ISP, para iniciar una sesión.
160
Capítulo 15. PPP y SLIP
Línea 12:
Indica el numero telefónico 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.
Líneas 13 y 14:
Identifica el nombre de usuario y su contraseña. 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 conexión es
utilizando algún metodo como PAP o CHAP, estos valores, son utilizados al momento de la autentificación.
Línea 15:
Si usted esta utilizando el metodo PAP o CHAP, no habrá un login en este punto, y esta línea deberá ser
comentada (utilizando el símbolo # al principio de la línea) o bien eliminada por completo. Vea la parte
Autentificación con PAP y CHAP para más detalles.
La cadena de acceso (login), utiliza la misma sintáxis que se utiliza en la cadena de marcado. En este ejemplo,
la cadena sirve para un servicio, en el cual el inicio de sesión 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 conexión y la resolución de la misma.
Línea 16:
Establece el tiempo por defecto en el que se perderá la conexión (en segundos). En este caso la conexión será
cortada de forma automática, después de 300 segundos de inactividad. Si no desea habilitar esta función
establezca este valor en cero o bien utilice el comando en línea -ddial.
Línea 17:
Indica la dirección de la interfaz. La cadena que aparece como x.x.x.x., debe se cambiada por la dirección
asignada por su PSI. La línea 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 dirección de este tipo, puede utilizar 10.0.0.2/0. Si usted necesita utilizar una dirección
“aleatoria”, asegurese de crear el fichero /etc/ppp/ppp.linkup, siguiendo las instrucciones de PPP y las
direcciones de IP Dinámicas, para su llenado. Si esta línea es omitida, ppp, no podrá ejecutarse en el modo
-auto.
161
Capítulo 15. PPP y SLIP
Línea 18:
Añade una ruta por omisión al servidor de salida de su PSI. La palabra especial HISADDR se reemplaza con la
dirección del gateway indicado por su PSI, que esta en la línea 9, de otra forma HISADDR no será inicializado.
Si no desea ejecutar ppp en modo -auto, esta línea deberá pasar al archivo ppp.linkup.
No hay necesidad de editar el archivo ppp.linkup si usted cuenta con una dirección IP estática y se esta ejecutando
ppp en modo -auto, en virtud de que para efecto de realizar la conexión sus mapas de ruteo debe estar correctas. De
cualquier forma puede ser que usted desee ejecutar algun programa/comando, posterior a la conexión. Este es
explicado con más detalle posteriormente, cuando se vea el ejemplo de sendmail.
Ejemplo de los archivos de configuración, se pueden encontrar en el directorio; /usr/share/examples/ppp.
Una vez más, no debe incluir el numero de línea, este sólo es una referencia. Así mismo deberá existir sangrado, de
cuando menos 1 espacio.
Línea 17:
El numero siguiente a la diagonal (/), es el numero de bits de la dirección en la cual ppp insistirá en conectarse.
Puede ser que usted desee utilizar numeros de IP que sean más 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 dirección
0.0.0.0, en lugar de que utilice 10.0.0.1, lo cual es necesario con algunos proveedores. No utilice la
dirección 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 conexión. En este punto, ppp habrá negociado una
dirección de interfaz, y será posible ahora, añadir las entradas para la las tablas de ruteo:
1 provider:
2 add default HISADDR
Línea 1:
Al establecer (ppp) una conexión, 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
Capítulo 15. PPP y SLIP
buscar una IP con la dirección de nuestro gateway. Esta entrada es una etiqueta de tipo IP, de cuatro-octetos. Si
aun después de esto no se ha detectado la entrada correcta, buscar la entrada MYADDR.
Línea 2:
Esta línea le indica a ppp que añada una ruta por omisión, que este dirigida hacia HISADDR. HISADDR será
reemplazada, con la IP del gateway, como se negocio por IPCP.
Para ver un detalle más 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.
gateway_enable="YES"
Si el comando es utilizado en la sección default, esto le dará a el(los) usuario(s) especificado(s), acceso a todo.
163
Capítulo 15. PPP y SLIP
#!/bin/sh
IDENT=‘echo $0 | sed -e ’s/^.*-\(.*\)$/\1/’‘
CALLEDAS="$IDENT"
TTY=‘tty‘
Este script deberá ser ejecutable. Ahora cree un enláce simbólico 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 conexión. 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).
Cree un directorio llamado /home/ppp que contenga los siguentes archivos de 0 bytes:
# 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 señalados, deberán 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
Capítulo 15. PPP y SLIP
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
La sección default: es cargada para cada sesión. Para cada línea que exista y habilite el marcado, en el fichero
/etc/ttys, se deberá crear una entrada similar a la línea ttyd0: mencionada arriba. Cada línea debera contar con
su propia dirección IP, de sus direcciones IP disponibles para asignar dinámicamente.
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 también información del ruteo, para cada IP estática, si es
necesario. Las líneas a continuación añadirán una ruta a la dirección 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
Capítulo 15. PPP y SLIP
/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 líneas (el fichero deberá ser
ejecutable):
#!/bin/sh
exec /usr/sbin/ppp -direct pap$IDENT
Para cada línea de marcado habilitada en /etc/ttys, cree la entrada correspondiente en /etc/ppp/ppp.conf.
Esto co-existirá pacíficamente 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
contraseña, en el archivo /etc/ppp/ppp.secret, o bien agrege la siguiente opción, para efecto de que se pueda
realizar la autentificación por medio de PAP, directamente del fichero /etc/password.
enable passwdauth
Si desea asignar una dirección IP fija a algunos usuarios, puede especificar el número como un tercer argumento en
el fichero /etc/ppp/ppp.secrets. Vea el archivo /usr/share/examples/ppp/ppp.secret.sample para
obtener ejemplos más 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 automática.
Para efecto de habilitar estas extensiones con PPP versión 1.x, las siguientes líneas deberán añadirse a la sección
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
Capítulo 15. PPP y SLIP
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 línea set dns, es omitida en versiones 2 y posteriores, PPP utilizará los valores que encuentre en
/etc/resolv.conf.
7 set login
...
12 set authname MiNombreDeUsuario
13 set authkey MiContraseña
Línea 7:
Su PSI normalmente requerirá que usted ingrese al sistema, cuando se utiliza PAP o CHAP. Por esta razón
debemos deshabilitar la línea que corresponde a “set login”.
Línea 12:
Esta línea especifíca a PAP/CHAP su nombre de usuario. Usted deberá cambiar el valor a quedar el nombre
correcto en el campo; MiNombreDeUsuario.
Línea 13:
Esta línea especifíca su contraseña de PAP/CHAP. Es necesario que usted cambie el valor a quedar el dato
correcto, en el campo; MiContraseña. Quizás sea recomendable que añada una línea a quedar:
15 accept PAP
o
15 accept CHAP
la intención de esto es para hacerlo obvio, aunque en realidad PAP y CHAP son aceptadas por omisión.
167
Capítulo 15. PPP y SLIP
Esto le indicará a PPP que preste atención al socket del dominio-Unix, solicitando a los usuarios su contraseña, 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.
hostname="foo.ejemplo.com"
Si su Proveedor de Servicios de Internet (PSI), le ha provisto de una dirección fija y un nombre de host, es
recomendable que utilice este como su hostname.
Localice la línea que se refiera a sus dispositivos de red, la cual es network_interfaces. Si desea configurar su
sistema para marcar a su PSI a petición, asegurese de que el dispositivo tun0 este en la lista, de otra forma eliminelo.
Nota: La variable ifconfig_tun0 debe permanecer en blanco (vacia), y deberá crearse un fichero llamado
/etc/start_if.tun0 que contenga la siguiente línea:
Este script se ejecuta cuando se esta configurando la red, inicializando el demonio de ppp de modo automático.
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 opción -alias. Referirse a la página de ayuda (man) para mayores detalles.
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 línea sendmail_flags, no incluya la opción -q, ya que de ser así
sendmail intentará localizar los parámetros de la red de vex en cuando, ocasionando que realice llamados al
exterior. Puede intentar esto:
168
Capítulo 15. PPP y SLIP
sendmail_flags="-bd"
La parte negativa de esta conifguración es que tiene que forzar a sendmail a re-examinar los llamados del servidor
de correo, cada vez que ppp realiza una conexión, con el siguiente comando:
# /usr/sbin/sendmail -q
Puede utilizar el comando !bg en el fichero ppp.linkup para hacer esto de manera automática:
1 provider:
2 delete ALL
3 add 0 0 HISADDR
4 !bg sendmail -bd -q30m
Si usted no desea hacer esto, es posible establecer un “dfilter” (filtro), para bloquear el tráfico 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 sesión, o bien si desea que ppp inicie la sesión automáticamente,
cuando haya una petición de salida (y no haya creado el fichero start_if.tun0), puede teclear:
15.2.1.7. Summario
A manera de recapitulación, podemos decir que para configurar ppp por primera ocasión, debemos:
Por parte del Cliente:
169
Capítulo 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.
1. Como un “cliente” — cuando desea conectar su maquina al mundo exterior utilizando PPP, por medio de una
conexión serial o bien una línea 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 más de un usuario que utilizará ppp en la misma maquina.
También deberá de contar con un software para hacer la conexión por medio de módem (de preferencia kermit), de
manera que pueda hacer la conexión con un host remoto.
El siguiente archivo de configuración /etc/ppp/options puede utilizarse para realizar la conexión a una terminal
CISCO, por medio de PPP.
: 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 opción, cambie la
170
Capítulo 15. PPP y SLIP
# línea a quedar
local_ip : remote_ip
defaultroute # establezca esta opción si el servidor su ruteador
# por default
Para conectarse:
1. Realice el llamado al host remoto, utilizando kermit (o cualquier otra aplicación de este tipo), ingrese su nombre
de usuario y contraseña (o cualquier info que sea necesaria para habilitar PPP en el host remoto).
2. Salga de kermit (sin colgar la línea).
3. Ingrese lo siguiente:
# /usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200
Ahora su computadora esta conectada por medio de PPP. Si la conexión falla, puede añadir la opción 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 automática:
#!/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
kermit -y /etc/ppp/kermit.dial
pppd /dev/tty01 19200
#!/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
Capítulo 15. PPP y SLIP
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
pau 1
out +++
inp 5 OK
out ATH0\13
echo \13
exit
/dev/cuaa1 115200
172
Capítulo 15. PPP y SLIP
/etc/ppp/login.chat.script:
ABORT BUSY ABORT ’NO CARRIER’ "" AT OK ATDT numero.de.telefono
CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: nombre.usuario
TIMEOUT 5 sword: contraseña
Una vez que estos ficheros han sido modificados correctamente e instalados, todo lo que necesita es ejecutar el
comando pppd, algo como:
# pppd
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
Capítulo 15. PPP y SLIP
# run ppp
pppd /dev/tty01 19200
#!/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
174
Capítulo 15. PPP y SLIP
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
;
; ingrese el dispositivo que esta apuntando a su módem:
;
set line /dev/tty01
;
; escriba la velocidad del módem:
;
set speed 19200
set file type binary ; full 8 bit file xfer
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 ; Posteriormente SET CARRIER si es necesario
set dial display on ; despues SET DIAL si es necesario
set input echo on
set input timeout proceed
set input case ignore
def \%x 0
goto slhup
175
Capítulo 15. PPP y SLIP
output \13
pause 1
output at\13
input 1 OK\13\10
if fail goto slcmd ; si el modem no responde Ok, intentar de nuevo
:look
clear ; Limpieza del buffer de entrada
increment \%x ; Conteo de segundos
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 ; login
assign \%x 0 ; asignar cero al contador
pause 1
echo Looking for login prompt.
: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
Capítulo 15. PPP y SLIP
:sluid
;
; escriba su nombre de usuario:
;
output ppp-login\13
input 1 {Password: }
;
; escriba su contraseña:
;
output ppp-password\13
input 1 {Entering SLIP mode.}
echo
quit
:slnodial
echo \7No dialtone. Check the telephone line!\7
exit 1
; local variables:
; mode: csh
; comment-start: "; "
; comment-start-skip: "; "
; end:
En esta sección veremos como configurar PPP sobre una red Ethernet (PPPoE).
default:
set log Phase tun command # puede añadir más dispositivos si lo desea
set ifaddr 10.0.0.1/0 10.0.0.2/0
177
Capítulo 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 SuContraseña
set dial
set login
add default HISADDR
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"
178
Capítulo 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 información adicional consulte:
net.graph.nonstandard_pppoe=1
o bien pude hacerse desde la línea de comandos, para un efecto inmediato, por medio del comando sysctl -w
net.graph.nonstandard_pppoe=1.
Desafortunadamente y dado que esto implica una configuración general del sistema, por lo que no es posible
comunicarnos con un dispositivo cliente — servidor que utilice PPPoE y con un módem casero 3Com ADSL, al
mismo tiempo.
179
Capítulo 15. PPP y SLIP
default:
load adsl
adsl:
new -i ng0 adsl adsl
set bundle authname usuario ➊
set bundle password contraseña ➋
set bundle disable multilink
open
adsl:
set link type pptp
set pptp mode active
set pptp enable originate incoming outcall
set pptp self 10.0.0.140
set pptp peer 10.0.0.138
# mpd -b adsl
180
Capítulo 15. PPP y SLIP
% 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.
adsl:
set log phase chat lcp ipcp ccp tun command
set timeout 0
enable dns
set authname usuario ➊
set authkey contraseña ➋
set ifaddr 0 0
add default HISADDR
AvisoDebido a que debe poner su contraseña 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 páginas de ayuda chmod(1) y chown(8) para mayor información.
Esto abrirá una sesion por medio de PPP con su ruteador DSL. Los módems Ethernet DSL cuentan con una dirección
IP de LAN preconfigurada a la cual se puede conectar. En el caso del Alcatel Speedtouch, esta dirección es
10.0.0.138. La documentación de su equipo debe indicarle que dirección utiliza. Para abrir el “tunel” e iniciar la
sesión ppp, ejecute el siguiente comando.
Sugerencia: Puede añadir un símbolo de ampersand (“&”) al final de este comando, ya que pptp no retorna al
shell por default.
181
Capítulo 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 conexión 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 configuración 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.
pseudo-device sl 1
Esta opción esta incluida en el archivo del kernel GENERIC, así que no debe haber problema, claro esta, a menos que
lo haya borrado intencionalmente.
1. Añada 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 localhost loghost
136.152.64.181 water.CS.Example.EDU water.CS water
136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway
128.32.136.9 ns1.Example.EDU ns1
182
Capítulo 15. PPP y SLIP
2. Asegurese de que cuenta con la opción hosts antes de la opción 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 línea que dice:
hostname=“minombre.mi.dominio”
El nombre completo de su sistema para internet, debe ser escrito en este punto.
2. Añada el dispositivo sl0 a la lista de dispositivos de red, al cambiar la línea que dice:
network_interfaces="lo0"
a quedar:
network_interfaces=“lo0 sl0”
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 específico.
5. Establezca la contraseña del superusuario root y de su símil 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.
1. Marque el número, teclee en el signo de comando slip, ingrese el nombre y la contraseña. 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
Capítulo 15. PPP y SLIP
# 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. Después de hacer
esto, puede simplemente teclear slip en el símbolo de sistema (prompt) de kermit, para realizar la conexión.
Nota: El dejar su contraseña en texto plano, en cualquier parte del sistema, generalmente es una mala
idea. Hágalo 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 opción -a en lugar de utilizar la
optción -c.
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 página 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 módem se niegue a cortar la comunicación (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.
• El no utilizar la opción -c o -a con el comando slattach (Esto debiera se fatal, pero algunos usuarios han
reportado que esto ha solucionado sus problemas.
• Usar la opción s10 en vez de usar la opción sl0 (puede ser difícil ver la diferencia con algunos tipos de letras).
184
Capítulo 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
• También 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 continuación:
# 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 8 224515 sl0 - -
localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438
inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - -
water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438
(root node)
Esto es después de que el sistema ha estado conectado por un tiempo. Los numeros pueden variar en su sistema.
15.6.2.1. Prerequisitos
Esta sección es de naturaleza muy técnica, 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 O’Reilly &
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) módem(s), así como la configuración
de su sistema, para efecto de utilizar el mismo para realizar la conexión. Si usted no lo ha hecho, por favor lea el
tutorial sobre configuración 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
Capítulo 15. PPP y SLIP
Puede ser que también desee revisar las páginas de ayuda (man), sio(4) para información referente a los
controladores de dispositivos de puertos en serie, y ttys(5), gettytab(5), getty(8), & init(8), para ver información
relevante, sobre la configuración de su sistema, para efecto de que acepte accesos (logins) por medio de un módem, y
quizás stty(1) para información sobre los parámetros de configuración de puertos en serie (tal como clocal, que se
utiliza para la conexión directa por medio de puertos seriales).
El comando sliplogin encontrará la línea que coincida, enganchará la línea serial a cualquier interfaz SLIP
disponible y posteriormente ejecutará /etc/sliphome/slip.login de manera similar a:
Si todo marcha bien, /etc/sliphome/slip.login creará una configuración, por medio de ifconfig, para la
interfaz SLIP, a la cual sliplogin se ha adjuntado (la interfaz slip 0, que era el primer parámetro dado en la lista de
slip.login), para establecer la dirección local IP (dc-slip), la interfaz de la direción IP Remota (sl-helmer), la
submascara de red para la interfaz SLIP (0xfffffc00) y cualquier otra opción adicional (autocomp). Si algo no va
del todo bien, normalmente sliplogin guarda bastante información para depurar, por medio del demonio
(daemon) syslog, que usualmente guarda dicha infomración en /var/log/messages (vea la página 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 configuración del sistema.
186
Capítulo 15. PPP y SLIP
Name
ed0
Mtu
1500
Network
Address
Link 0.0.c0.2c.5f.4a
Ipkts Ierrs
291311 0
Opkts Oerrs Coll
174209 0 133
ed0
lo0 65535 Link
1500 138.247.224 ivory 291311
79
0
0
174209
79
0
0
133
0
lo0 65535 loop
localhost 79 0 79 0 0
sl0*
sl1*
296
296
Link
Link
0
0
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
después de sl0 y sl1 indica que los dispositivos no estan “trabajando”.)
Aun cuando el kernel cuente con los dispositivos, por omisión 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 comunicación] y quizás 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 opción gateway_enable, a quedar YES,
esto habilitará esta función.
Será necesario que reinicie su sistema, para efecto de que estos cambios surtan efecto.
Al verificar su fichero de configuración del kernel (/sys/i386/conf/GENERIC), podrá notar que cerca del final,
hay una línea como la siguiente:
pseudo-device sl 2
Esta línea es la que define el numero de dispositivos SLIP disponibles en el kernel; el numero al final de la línea es el
numero máximo de conecciones SLIP que puede manejar el servidor simultaneamente.
Para ayuda con relación a la configuración y compilación del kernel en su sistema FreeBSD, por favor refierase
Capítulo 8 al apartado correspondiente.
187
Capítulo 15. PPP y SLIP
• Mascara de red
Las direcciones local y remota, pueden ser nombres del host (la resolución 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 remote-addr mask opt1 opt2
# (normal,compress,noicmp)
#
Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp
#!/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
Capítulo 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 línea 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 dirección MAC de su
dispositivo Ethernet, cuando cualquier otro nodo IP en la red, solicite información a la IP del cliente SLIP.
Al tomar en cuenta el ejemplo anterior, es importante que sustituya la dirección Ethernet MAC
(00:11:22:33:44:55), con la dirección que corresponde a su tarjeta de red, o definitivamente su “proxy ARP” no
va a funcionar!. Para efecto de conocer cual es la dirección 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 0 116
Esto indica que la dirección 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 dígito hexadecimal que aparezca sólo (no en pares), de tal forma que convirtamos la
dirección en lo que arp(8) requiere para trabajar; vea la página de ayuda arp(8), para ver información completa sobre
su uso.
#!/bin/sh -
189
Capítulo 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” añadió al cliente SLIP al
ingresar al sistema.
Para esta más seguros: asegurese de que el fichero /etc/sliphome/slip.logout cuenta con los permisos
adecuados para su ejecución, una vez que lo ha creado (ej. chmod 755 /etc/sliphome/slip.logout) .
190
Capítulo 15. PPP y SLIP
Nota: gated es un software propietario y su código fuente no estará disponible al público más (más información
en el sitio gated (http://www.gated.org/)). Esta sección 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
#
#
# Accept routes from RIP via ed Ethernet interfaces
191
Capítulo 15. PPP y SLIP
En el ejemplo anterior, el fichero de configuración gated.conf transmite información 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 parámetro ed por el correspondiente. En este ejemplo, el fichero también 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 opción de depuración (debug), si es que gated
esta funcionando correctamente. Será necesario que modifique xxx.xxx.yy., a quedar con la dirección correcta
de su subred SLIP (asegurese de modificar también la máscara de red, en la cláusula proto direct también).
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 más fácil de hacer esto, es editar las
variables de route y router_flags, en el fichero /etc/rc.conf. Por favor vea la página de ayuda de gated,
para ver información sobre los parámetros de la línea—de—comandos.
192
Capítulo 16. Networking Avanzado
Networking Avanzado
193
Capítulo 17. Correo Electrónico
Correo Electrónico
194
Capítulo 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 fácilmente. ¡Estás advertido— lo último de lo último no es
para cualquiera! Este capítulo te ayudará a decidir si quieres seguir el sistema de desarrollo o quedarte en algunas de
las versiones publicadas.
Después de leer este capítulo sabrás:
195
Capítulo 18. Lo último de lo último
1. Miembros del grupo FreeBSD que están activamente trabajando en alguna parte del código fuente del árbol y
para los que mantenerse “current” es un requisito absoluto.
2. Miembros del FreeBSD grupo que son activos probadores, con el propósito de pasar tiempo trabajando en los
problemas para asegurarse de que FreeBSD-CURRENT se mantiene tan cuerdo como sea posible. También hay
gente que desea hacer sugerencias típicas en cambios y en la dirección principal del FreeBSD.
3. Miembros externos FreeBSD o algún 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 también hacen
comentarios ocasionales o contribuyen al código.
1. Un rápido 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 rápido de tener los fallos solucionados.
3. En ningún 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 técnica. Esto no es porque seamos de alguna forma mala gente que no quiere
ayudar a los demás (ni siquiera estaríamos haciendo FreeBSD si lo fueramos), es simplemente porque no
podemos responder 400 mensajes al día y en realidad trabajamos en FreeBSD! Si nos dan a escoger entre
mejorar el FreeBSD y responder montones de preguntas, la mayoría de los desarrolladores y usuarios,
problamente opten por lo primero.
196
Capítulo 18. Lo último de lo último
Opcionalmente,puedes también 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 método más recomendable, ya que te permite grabar la colección entera una vez y a partir de entonces
sólo lo que cambie desde entonces.Mucha gente ejecuta cvsup from cron y mantiene actualizadas sus
fuentes automáticamente. Tienes que adaptar la muestra de supfile de arriba y configurar cvsup a tu
entorno.Si quieres ayuda para hacer esta configuración, teclea:
# pkg_add -f
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/All/cvupit-3.0.tgz
b. Usa ftp. El código fuente del árbol del FreeBSD-CURRENT está siempre “exportado” en:
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/. Algunos de nuestros servidores FTP también
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 cd usr.bin
ftp get lex.tar
c. Usa la aplicació CTM. Si tienes muy mala conexión (conexiones caras o sólo acceso para correo
electrónico) CTMes una opción. 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 conexión más rapida.
3. Si estás grabando las fuentes para ejecutarlas y no sólo leerlas, entonces graba todo el FreeBSD-CURRENT, no
sólo algunos trozos. La razón es que varias partes de las fuentes dependen de actualizaciones de otros sitios, y
tratar de compilar sólo una proció casi te garantiza meterte en problemas.
Antes de compilar FreeBSD-CURRENT, lee con cuidado Makefile en /usr/src Deberías al menos ejecutar
un make world la primera vez como parte del proceso de actualización. Leer el FreeBSD-CURRENT mailing
list <freebsd-current@FreeBSD.org> te mantendrá al día en otros procedimientos de arranque que a veces
se convierten en necesarios cuando nos acercamos a la siguiente versión.
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 más entusiasmo si
incluyes el código correspondiente!
197
Capítulo 18. Lo último de lo último
198
Capítulo 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 estás instalando un nuevo sistema y quieres que sea lo más estable posible, puedes grabar simplemente la
última rama con la instantánea más antigua de ftp://releng4.FreeBSD.org/pub/FreeBSD/ and install it like any
other release.
Si ya estas usando una versión previa de FreeBSD y quieres actualizar via fuentes entonces puedes hacerlo
fácilmente desde ftp.FreeBSD.org. Esto puede hacerse de tres maneras:
# pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz
b. Usa ftp. Las fuentes de árbol para el FreeBSD-STABLE están 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 cd usr.bin
ftp get lex.tar
c. Usa CTM. Si no tienes una conexió rápida y barata a Internet,este es el método que debería considerar usar.
3. Básicamente, si necesitas acceso rápido bajo demanda a la fuente y el ancho de banda no es una consideración ,
usa cvsup o ftp. De otro modo, usa CTM.
4. Antes de compilarFreeBSD-STABLE, lee el Makefile en /usr/src con cuidado. Deberías al menos ejecutar
un make world la primera vez como parte del proceso de instalaci´n.Leyendo elFreeBSD-STABLE mailing list
<freebsd-stable@FreeBSD.org> te mantendrá al día en los otros procedimientos de arranque que alguna
vez pueden llegar a ser necesarios cuando nos acercamos a la siguiente versión.
199
Capítulo 18. Lo último de lo último
AvisoAunque es posible actualizar sólo partes del código fuente del arbol, el único procedimiento de
actualización 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 están en /bin y /sbin) y las
fuentes del kernel. Actualizar sólo parte del código fuente del arbol, sólo el kernel, o sólo el area de usuario trae
a menudo problemas.Estos problemas pueden ir desde errores de compilación hasta kernel panics o corrupción
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 algún lugar para traer los
archivos actualizados. Las actualizaciones que recibes lo están al minuto y tú las consigues cuando, y sólo cuando,
las quieras. Puedes fácilmente restringir tus actualizaciones a los archivos o directorios que te interesen. Las
actualizaciones se crean sobre la marcha por el servidor según lo que tienes o quieras tener. Anonymous CVS es
bastante mas simple que CVSup que es sólo una extensión de CVS que permite retirar los cambios directamente
desde un repositorio (repository) CVS remoto. CVSup puede hacer esto mucho más eficientemente, pero
Anonymous CVS es más fácil 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 día en la maquina
maestra CTM, cualquier cambio detectado, sellado con una secuencia de números y codificado para transmitirlo en
correo ( sólo en ASCII imprimible). Una vez recibido, estos“CTM deltas” pueden ser manipulados por la utilidad
ctm.rmail(1) que automáticamente decodifica, verifica y aplica los cambios a la copia de las fuentes del usuario. Este
proceso es más eficiente que CVSup, y pone menos presión 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 dañadas. CTM no hace esto, y si borras algún trozo de las fuentes del árbol (y
no has hecho una copia de respaldo) entonces tendrás que partir de cero ( desde el más reciente CVS “base delta”) y
reconstruirlo todo con CTM o, con anoncvs, simplemente borrará los malos bits (bad bits) y resincronizarás
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 fácil de hacer, habrá veces que inevitablemente cometas errores, o cuando errores
hechos por otros en las fuentes del árbol inutilice tu sistema haciendolo inarrancable.
Asegúrate de haber hecho una copia de respaldo. Y ten un diskette de reparación 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
Capítulo 18. Lo último de lo último
Algunos de estos errores pueden ser poco dañinos, que sólo causan que tu sistema imprima una nueva señal
de diagnostico. O el cambio puede ser catastrófico, 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 estás buscando problemas.
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.
201
Capítulo 18. Lo último de lo último
El ejemplo más reciente de esto es cuando el grupo “ppp” (llamado despues “network”) fue añadido. A los usarios
les falló el proceso de instalación cuando partían del subsistema ppp fueron instaladas usando un nombre de grupo
inexistente (para ellas).
La solución es examinar /usr/src/etc/group y comparar su lista con la tuya.Si hay algún grupo en el nuevo
archivo que no están en tu archivo entonces cópialos encima. De la misma forma, deberías 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.
mostrará todos los ficheros que pertenecen al grupo GID (que puede ser o un nombre de grupo o una ID
numérica de grupo).
# shutdown now
# 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.
202
Capítulo 18. Lo último de lo último
Puedes acelerar el proceso “make world” y posiblemente ahorrarte dolores de cabeza por las dependencias quitando
este directorio también.
Algunos archivos bajo /usr/obj pueden tener colocada la señal inmutable (immutable flag set) (mira chflags(1)
para mas información) que deberá ser quitada primero.
# cd /usr/obj
# chflags -R noschg *
# rm -rf *
# 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.
# cd /usr/src
(a menos que, por supuesto, tu código 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 línea de ordenes que teclearás es como sigue:
En este ejemplo, -x es una opción que pasarías a make(1). Mira la pagina del manual de make(1) para un ejemplo de
las opciones que puedes pasar.
203
Capítulo 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.
es otra forma de indicar que las bibliotecas indicadas no se construyan, y corresponde con el
NOPROFILE= true
# Avoid compiling profiled libraries
# make target
A partir de la versión 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 máquina con la versión current.
Esto es muy útil por dos motivos.Primero, te permite construir de forma segura, sabiendo que ningún componente
del sistema current será afectado. La construcción 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
máquinas, 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 construcción en B y C.
Aunque el world target aún exista, se recomienda firmemente que no lo uses.
Ejecutar
# make buildworld
Ahora es posible especificar un opción -j make lo que provocará varios procesos simultaneos. Esto es lo mas útil en
máquinas con multiples CPU. Sin embargo, ya que el proceso de compilación es IO bound mas que CPU bound es
también útil en máquinas con una sóla CPU.
En una típica máquina mono-CPU ejecutarías:
make(1) tendrías mas de 4 procesos ejecutandose en cada momento. La evidencia empírica comentada en las listas
de correo muestran que esto da el mejor resultado.
204
Capítulo 18. Lo último de lo último
Si tienes una máquina 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 aún experimental y que hacer commits al código fuente del árbol puede
ocasionalmente romper esta posibilidad. Si world falla al compilar usando este parámetro intentalo de nuevo sin él,
antes de informar de los problemas.
# cd /usr/src
# make buildkernel
# make installkernel
Si estás actualizando a una versión de FreeBSD por debajo de 4.0 usa el procedimiento de construcción standard del
kernel. Sin embargo, se recomienda que uses una nueva versión de config(8), usando una línea de ordenes como esta.
# /usr/obj/usr/src/usr.sbin/config/config KERNELNAME
205
Capítulo 18. Lo último de lo último
Ejecuta
# make installworld
Nota: Si especificaste variables en la línea de orden make buildworld deberías poner las mismas variables en
la línea de orden de make installworld . Esto no es necesariamente cierto para otras opciones; por ejemplo, ,
-j nunca debe ser usada con installworld.
de otro modo, instalaría bibliotecas seleccionadas que no habían sido construidas durante la fase make
buildworld .
Haz una copia de tu existente /etcAunque en teoría nada va a tocar este directorio automáticamente, es
mejor estar seguros. Así que copia tu existente /etc en lugar seguro. Algo como:
-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 elección razonable, y también se requiere un número de subdirectorios debajo de este.
# mkdir /var/tmp/root
# cd /usr/src/etc
206
Capítulo 18. Lo último de lo último
Esto construirá la necesaria estructura de directorio e intalará los archivos.Un montón de directorios que habrán 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 están vacios.)
/var/tmp/root ahora contiene todos los archivos que deberían estar colocados en lugares adecuados bajo /. Ahora
tienes que ir a cada archivo y determinar cuánto difieren de tus archivos exiting.
Date centa que algunos de los archivos que se habrán instalado en /var/tmp/root tienen un leading “.”. En el
momento de escribir esta documentación los únicos archivos como estos son los archivos de inicio de la shell en
/var/tmp/root/ y /var/tmp/root/root/, aunque podría haber otros (dependiendo de cuando leas
esto.Asegurate de usar ls -a para capturarlos.
El sistema más fácil para hacerlo es usar diff(1) para comparar los dos ficheros.
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 fácilmente 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, dále al directorio de
destino un nombre basado en la fecha actual. Si estuvieses haciendo esto el 14 de Febrero de 1998 harías
lo siguiente.
# mkdir /var/tmp/root-19980214
# cd /usr/src/etc
# make DESTDIR=/var/tmp/root-19980214 \
distrib-dirs distribution
Típicamente, este conjunto de diferencias serán más pequeñas que las que hay entre
/var/tmp/root-19980221/etc y /etc. Como las diferencias son menores, es más fácil enviar esos
cambios hasta tu directorio /etc .
207
Capítulo 18. Lo último de lo último
En la mayoría de los casos, la herramienta mergemaster(8) se dar6aacute; cuenta cuando es necesario actualizar
dispositivos y se ofrecerá a hacerlo automáticamente. Estas instrucciones te dirán como hacerlo manualmente.
Por motivos de seguridad, este es un proceso con varios pasos.
Si usaste mergemaster(8) para actualizar /etc, entonces tu script MAKEDEV debería haberse actualizado ya,
aunque no hace daño si lo compruebas (con diff(1))y lo copias manualmente si fuese necesario.
2. Ahora, toma una instantánea de tu actual /dev. Esta instantánea necesita contener los permisos, propiedades,
números mayores y menores de cada archivo, pero no debería contener un sello temporal (time stamp) La forma
más fácil de hacerlo es usar awk(1) para sacar alguna información.
# cd /dev
# ls -l | awk ’{print $1, $2, $3, $4, $5, $6, $NF}’ > /var/tmp/dev.out
4. Copia otra instantánea del directorio , esta vez en /var/tmp/dev2.out. Ahora mira entre esos dos archivos
por si se te olvido crear algun dispositivo. No debería haber ninguno, pero es mejor estar seguro que lamentarlo.
# diff /var/tmp/dev.out /var/tmp/dev2.out
Podrás detectar más fácilmente 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
Capítulo 18. Lo último de lo último
Nota: Este paso se incluye para completar. Puede omitirse sin miedo.
Para terminar completamente , podrías querer actualizar los archivos en /stand tan bien. Estos archivos consisten en
enlaces sostenidos (hard links) a el binario /stand/sysinstall. Este binario debería estar enlazado estáticamente,
para que pueda funcionar cuando ningún 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
Deberías 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 actualización o al añadir algo a /etc, la orden (command) file(1) dejara de
funcionar. En ese caso, el arreglo sería 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 fácil para esto, depende de la naturaleza del cambio. Por ejemplo, si sólo ejecutaste CVSup, y
mostró las siguientes líneas 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 deberías o rehacer
209
Capítulo 18. Lo último de lo último
world, o al menos aquellas de sus partes que estan estáticamente unidas (asi como cualquier otra cosa que hayas
añadido y que esté unida estáticamente).
Es cuestión de que elijas. Podrías estar contento ejecutando make world digamos cada quincena , y dejar que los
cambios se acumulen hasta ese día. O quizá quieras hacerlo sólo a aquellas que hayan cambiado, y tengas confianza
en haber comprobado todas las dependencias.
Y, por supuesto, todo esto depende de cada cuánto tiempo actualices y si estas usando la versión stable o current.
2. ¿Cuando compilo falla con montones de señales de error 11 (u otro número de señal). ¿Qué ha ocurrido?
Esto normalmente es una indicación de problemas de máquina. 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 señales extrañas.
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 máquina para saber
cual es el que falla.
210
Capítulo 18. Lo último de lo último
--------------------------------------------------------------
Building everything..
--------------------------------------------------------------
5. ¿Puedo usar una máquina comomaster para actualizar montones de maquinas (NFS)?
Esto es una tarea bastante sencilla, y puede ahorrar horas de compilacion en muchas máquinas.Simplemente ejecuta
buildworld en una máquina central, y entonces NFS monta /usr/src y /usr/obj en la máquina remota y
installworld alli.
AvisoEste ejemplo supone que /usr/src esta en su propio sistema de archivo.Si no está (Por ejemplo, si es
parte de /usr ) Entonces necesitarás 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 opción “async”. Esto
hace que el disco escriba de modo asíncrono. En otras palabras, el grabar se completa inmediatamente, y el dato es
211
Capítulo 18. Lo último de lo último
escrito en el disco unos pocos segundos después.Esto hace que las grabaciones se agrupen juntas y puede ser una
gran aceleración del funcionamiento.
AvisoTen en cuenta que esta opción hace el sistema de archivos más fragil.Con esta opción 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 asegúrate de tener copias recientes antes de habilitar esta opción.
AvisoComo arriba, si/usr/objno está en su propio sistema de archivos, reemplazalo en el ejemplo con el
nombre del apropiado punto de montaje.
Notas
1. Esto no es del todo cierto. No podemos continuar prestando asistencia para las viejas versiones de FreeBSD
nunca más, aunque lo hayamos hecho durante años. Para conocer la política de seguridad de las viejas versiones
de FreeBSD, por favor mira http://www.FreeBSD.org/security (../../../../security/index.html)
212
Capítulo 19. Emulacion Linux
Emulacion Linux
213
III. Apéndices
Capítulo 20. Obteniendo FreeBSD
Obteniendo FreeBSD
215
Capítulo 21. Bibliografía
Mientras que las páginas 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 fácilmente. Debido a esto, no hay substituto para un buen libro de administración de sistemas UNIX y un
buen manual del usuario.
• Computer Systems Research Group, UC Berkeley. 4.4BSD User’s Reference Manual. O’Reilly & Associates, Inc.,
1994. ISBN 1-56592-075-9
• Computer Systems Research Group, UC Berkeley. 4.4BSD User’s Supplementary Documents. O’Reilly &
Associates, Inc., 1994. ISBN 1-56592-076-7
• UNIX in a Nutshell. O’Reilly & Associates, Inc., 1990. ISBN 093717520X
216
Capítulo 21. Bibliografía
• Mui, Linda. What You Need To Know When You Can’t Find Your UNIX System Administrator. O’Reilly &
Associates, Inc., 1995. ISBN 1-56592-104-6
• La Ohio State University (http://www-wks.acs.ohio-state.edu/) ha escrito un Curso de introducción a UNIX
(http://www-wks.acs.ohio-state.edu/unix_course/unix.html) disponible en línea en formato HTML y postscript.
• Jpman Project, Japan FreeBSD Users Group (http://www.jp.FreeBSD.org/). FreeBSD User’s Reference Manual
(http://www.pc.mycom.co.jp/FreeBSD/urm.html) (traducción japonesa). Mainichi Communications Inc.
(http://www.pc.mycom.co.jp/), 1998. ISBN4-8399-0088-4 P3800E.
• Albitz, Paul and Liu, Cricket. DNS and BIND, 2nd Ed. O’Reilly & Associates, Inc., 1997. ISBN 1-56592-236-0
• Computer Systems Research Group, UC Berkeley. 4.4BSD System Manager’s Manual. O’Reilly & Associates,
Inc., 1994. ISBN 1-56592-080-5
• Costales, Brian, et al. Sendmail, 2nd Ed. O’Reilly & Associates, Inc., 1997. ISBN 1-56592-222-0
• Frisch, Æleen. Essential System Administration, 2nd Ed. O’Reilly & Associates, Inc., 1995. ISBN 1-56592-127-5
• Hunt, Craig. TCP/IP Network Administration. O’Reilly & 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 O’Reilly & Associates, Inc., 1991. ISBN 0-937175-75-7
• Jpman Project, Japan FreeBSD Users Group (http://www.jp.FreeBSD.org/). FreeBSD System Administrator’s
Manual (http://www.pc.mycom.co.jp/FreeBSD/sam.html) (traducción japonesa). Mainichi Communications Inc.
(http://www.pc.mycom.co.jp/), 1998. ISBN4-8399-0109-0 P3300E.
217
Capítulo 21. Bibliografía
• 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. Dobb’s Journal. 19(15), December 1994. pp68-71, 97-99.
• Andleigh, Prabhat K. UNIX System Architecture. Prentice-Hall, Inc., 1990. ISBN 0-13-949843-5
• Jolitz, William. “Porting UNIX to the 386”. Dr. Dobb’s 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
• 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. O’Reilly & Associates, Inc., 1996. ISBN
1-56592-148-8
• Garfinkel, Simson. PGP Pretty Good Privacy O’Reilly & Associates, Inc., 1995. ISBN 1-56592-098-8
218
Capítulo 21. Bibliografía
• Anderson, Don and Tom Shanley. Pentium Processor System Architecture. 2nd Ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-40992-5
• Ferraro, Richard F. Programmer’s Guide to the EGA, VGA, and Super VGA Cards. 3rd ed. Reading, Mass. :
Addison-Wesley, 1995. ISBN 0-201-62490-7
• La corporación Intel publica documentación sobre sus CPUs, chipsets y estándares 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
• Lion, John Lion’s Commentary on UNIX, 6th Ed. With Source Code. ITP Media Group, 1996. ISBN 1573980137
• Raymond, Eric S. The New Hacker’s 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 código fuente
final y los archivos SCCS.
219
Capítulo 21. Bibliografía
220
Apéndice 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 electrónicos 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 sería un “departamento de soporte técnico”, siendo el correo
electrónico y USENET la manera más efectiva de contactar con esa comunidad.
Las formas de contacto con la comunidad de usuarios de FreeBSD están detalladas a continuación. Si usted sabe de
algún otro medio que no figure aquí envíelo por favor a FreeBSD documentation project mailing list
<freebsd-doc@FreeBSD.org>para que pueda ser incluída.
Lista Propósito
cvs-all Cambios realizados en el árbol de código de FreeBSD
freebsd-advocacy Proselitismo de FreeBSD
freebsd-announce Sucesos importantes e hitos del proyecto
freebsd-arch Debates de arquitectura y diseños
freebsd-bugs Informes de errores
freebsd-chat Temas no técnicos relacionados con la comunidad
FreeBSD.
freebsd-config Desarrollo de herramientas de instalación y configuración
de FreeBSD
freebsd-current Debates acerca del uso de FreeBSD-current
221
Apéndice A. Recursos en Internet
Lista Propósito
freebsd-isp Consultas de Proveedores de Servicios de Internet que
usan FreeBSD
freebsd-jobs Oportunidades de trabajo y consultoría bajo FreeBSD
freebsd-newbies Actividades y discusiones de nuevos usuarios de FreeBSD
Listas Técnicas: Las siguientes listas son para debates técnicos. Debería 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 Propósito
freebsd-afs Porte de AFS a FreeBSD
freebsd-alpha Porte FreeBSD a Alpha
freebsd-arm Porte de FreeBSD para procesadores ARM
freebsd-atm Uso de redes ATM con FreeBSD
freebsd-audit Proyecto de auditoría del código fuente
freebsd-binup Diseño y desarrollo del sistema de actualización binaria
freebsd-cluster Uso de FreeBSD en entornos cluster
freebsd-database Debates sobre uso de bases de datos y su desarrollo bajo
FreeBSD
freebsd-doc Creación de documentación sobre FreeBSD
freebsd-emulation Emulación de otros sistemas como Linux/DOS/Windows
freebsd-firewire Debates técnicos sobre Firewire (iLink, IEEE 1394)
freebsd-fs Sistemas de ficheros
freebsd-hackers Debates técnicos generales
freebsd-hardware Debates generales sobre harware y su uso en FreeBSD
freebsd-i18n Internacionalización de FreeBSD
freebsd-ia64 Porte de FreeBSD a los próximos sistemas IA64 de Intel
freebsd-ipfw Debates técnicos sobre el rediseño del código del
cortafuegos IP
freebsd-isdn Desarrolladores de RDSI
freebsd-java Desarrolladores de Java y personas portando los JDK a
FreeBSD
freebsd-libh La segunda generación del sistema de instalación y
paquetes
freebsd-mobile Debates sobre equipos portátiles
freebsd-mozilla Porte de mozilla a FreeBSD
222
Apéndice A. Recursos en Internet
Lista Propósito
freebsd-multimedia Aplicaciones multimedia
freebsd-new-bus Debates técnicos sobre la arquitectura de bus
freebsd-net Debates sobre el código fuente de Redes y TCP/IP
freebsd-platforms Específica sobre plataformas de arquitectura no Intel
freebsd-ports Debates sobre la colección de ports
freebsd-ppc Porte de FreeBSD a PowerPC
freebsd-qa Debates sobre Control de Calidad, generalmente al salir
una nueva release
freebsd-realtime Desarrollo de extensiones en tiempo real en FreeBSD
freebsd-scsi El subsistema SCSI
freebsd-security Temas de seguridad
freebsd-security-notifications Avisos de seguridad
freebsd-small Uso de FreeBSD en aplicaciones embebidas
freebsd-smp Debates sobre diseño de Multiproceso [A]Simétrico
freebsd-sparc 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 más especializada (e interesada)y probablemente no son
de interés para el público en general. Es una buena idea tener una presencia estable en las listas técnicas antes de
suscribirse a alguna de las limitadas, de modo que se pueda entender la etiqueta de la comunicación que en ellas se
usa.
Lista Propósito
freebsd-core FreeBSD Core Team
freebsd-hubs Mantenimiento de mirrors (mantenimiento de
infraestructuras)
freebsd-install Desarrollo de la Instalación
freebsd-user-groups Coordinación de grupos de usuarios
freebsd-www Mantenimiento de www.FreeBSD.org
(../../../../index.html)
Listas Compendio:La mayoría 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 tamaño 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
Apéndice 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 código fuente. Son listas de sólo lectura y no se
debe enviar correo a ellas.
subscribe listname
[ optional address ]
en el cuerpo del mensaje. Por ejemplo, para suscribirse a freebsd-announce usted haría esto:
% mail majordomo@FreeBSD.org
subscribe freebsd-announce
^D
Si quisiera suscribirse bajo otro nombre o enviar una petición de suscripción 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, también 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
Apéndice A. Recursos en Internet
% mail majordomo@FreeBSD.org
help
^D
De nuevo quisiéramos pedirle que procure mantener los debates de las listas técnicas dentro de temas técnicos. Si lo
único que usted quiere es recibir avisos importantes le sugerimos que se suscriba a freebsd-announce, que está
pensada para tener un tráfico muy bajo.
• El tema de cualquier envío debe atenerse al fin básico de la lista a la que se escribe, esto es, si la lista es sobre
temas de debate técnico sus envíos deberían versar sobre temas técnicos. Enviar mensajes irrelevantes o insultos
sólo 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 propósito.
• No se debería enviar el mismo mensaje a más de dos listas, y sólamente a 2 cuando exista una necesidad
manifiesta de escribir a ambas listas. Hay una gran cantidad de personas suscritas a más de una lista y excepto para
las mezclas más esotéricas (digamos "-stable & -scsi") no hay razón para enviar un mensaje a más de una lista al
mismo tiempo. Si le envían un mensaje en el que aparecen múltiples listas de correo en la línea "Cc" de la
cabecera, dicha línea debe ser recortada antes de que envíe una respuesta. Usted es el responsable de sus propios
envíos cruzados, independientemente de quién fuese el remitente original.
• No están 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 específicamente. Sin embargo, hay
pocos casos en los que algo así encaje en la temática de una lista, por lo cual lo más probable es recibir una
advertencia (o ser expulsado) tan sólo a causa de ello.
• El anuncio de productos o servicios no relacionados con FreeBSD están estrictamente prohibidas y conllevarán la
inmediata expulsión de la lista si queda demostrado que el autor está practicando el “spam” o envío 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
Apéndice 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 incluír también peticiones de
voluntarios, etc. Es una lista de bajo volumen y estrictamente moderada.
FREEBSD-ARCH
Debates sobre arquitectura y diseño
Ésta lista es para debates sobre la arquitectura de FreeBSD. Los mensajes deberían mantenerse dentro del
ámbito técnico para el que fué creada la lista. Serían ejemplos de temas aptos para ésta lista:
• Como reorganizar el sistema de construcción ("build") para poder tener varios procesos de construcción
personalizados funcionando simultáneamente.
• Qué se necesita arreglar en el VFS para que funcionen las capas de Heidemann.
• Cómo cambiar el dispositivo de control de interfaces para que sea posible utilizar los mismos controladores
directamente en la mayoría de los buses y arquitecturas.
• Cómo escribir un controlador de red.
FREEBSD-AUDIT
Proyecto de auditoría del código fuente
Ésta es la lista de correo del proyecto de auditoría del código fuente de FreeBSD. Aunque en principio fué
puesta en marcha para cambios motivados por la seguridad su ámbito fué ampliado a la revisión de cualquier
cambio en el código.
En ésta lista circula una gran cantidad de parches y probablemente no sea de interés para el típico usuario de
FreeBSD. Las discusiones de seguridad que no estén relacionadas con una parte específica del código deben
tener lugar en freebsd-security. Por otra parte se ruega a todos los desarrolladores que envíen sus parches a ésta
lista para su revisión, especialmente si atañen a una parte del sistema donde un error pudiera afectar seriamente
a la integridad del sistema.
FREEBSD-BINUP
Proyecto de Actualización Binaria de FreeBSD
Ésta lista existe para facilitar el debate sobre el sistema de actualizacion binaria o binup. Características de
diseño, detalles de implementación, parches, informes de error, informes de estado, peticiones de
características, “commit logs” y en general todo lo relacionado con binup es bienvenido.
FREEBSD-BUGS
Informe de errores
226
Apéndice A. Recursos en Internet
Ésta es la lista de correo para informar de errores en FreeBSD. Siempre que sea posible los errores deberían ser
enviados usando el comando send-pr(1) o el interfaz WEB (../../../../send-pr.html)
FREEBSD-CHAT
Temas no técnicos relacionados con la comunidad FreeBSD
Ésta lista contiene todos los mensajes sobre información no técnica y social, contenidos que no tienen cabida en
las demás listas. Eso incluye discusiones sobre si Julio Iglesias parece una gárgola, sobre si escribir o no en
mayúsculas, quién está bebiendo demasiado café, dónde se elabora la mejor cerveza, quién está fabricando
cerveza en su sótano y así sucesivamente. Pueden hacerse anuncios sobre actos importantes (como próximas
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 características
a ser incluídas en -current que afecten a todos los usuarios e instrucciones paso por paso que deben ser seguidas
para mantener una instalación -current. Cualquier usuario de “current” debería suscribirse a ésta lista. Ésta es
una lista de correo técnica en la que se esperan contenidos estrictamente técnicos.
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 periódicamente como un solo mensaje. Ésta lista es de Sólo-Lectura y no debería
recibir correo.
FREEBSD-DOC
Proyecto de Documentación
Ésta lista de correo está destinada a discusiones relacionadas con cuestiones y proyectos relacionados con la
creación de documentación de FreeBSD. Los miembros de ésta lista son llamados “El Proyecto de
Documentación de FreeBSD”. La lista es abierta; ¡suscríbase y contribuya!.
227
Apéndice A. Recursos en Internet
FREEBSD-FIREWIRE
Firewire (iLink, IEEE 1394)
Ésta lista de correo es para debates sobre diseño e implementación del subsistema Firewire(también conocido
como IEEE o iLink) en FreeBSD. Los temas incluyen de modo específico los “standards”, dispositivos de bus y
sus protocolos, adaptación de placas base, tarjetas y chips y la arquitectura e implementación de código para
soporte nativo.
FREEBSD-FS
Sistemas de ficheros
Debates acerca del sistema de ficheros de FreeBSD. Ésta es una lista de correo técnica en la que se espera un
contenido estríctamente técnico.
FREEBSD-GNOME
GNOME
Debates acerca del Entorno de Escritorio GNOME para sistemas de ficheros FreeBSD. Ésta es una lista de
correo técnica en la que se espera un contenido estrictamente técnico.
FREEBSD-IPFW
Cortafuegos IP
Éste es el foro de discusión técnica dedicado al rediseño del código del cortafuegos IP de FreeBSD. Ésta es una
lista de correo técnica en la que se espera un contenido exclusivamente técnico.
FREEBSD-IA64
Porte de FreeBSD a IA64
Ésta es una lista de correo técnica para personas que están 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 técnicas 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
Apéndice 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 técnicos
Éste es un foro de debate técnico relacionado con FreeBSD. Ésta es la lista de correo técnica primaria. Es para
personas que están trabajando en FreeBSD, solucionando problemas o para discutir soluciones alternativas. Las
personas interesadas en seguir las discusiones técnicas también son bienvenidas. Ésta es una lista de correo
técnica en la cual se espera un contenido estrictamente técnico.
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 sólo mensaje. Ésta lista es de Sólo Lectura y no se debería
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
Réplicas
Avisos y discusiones para personas que administran sitios réplica.
FREEBSD-INSTALL
Discusiones sobre la instalación
Ésta lista de correo es para discusiones sobre el desarrollo de la instalación de FreeBSD en próximas 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 técnica y en ella se esperan contenidos estríctamente técnicos.
229
Apéndice 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 técnicas de resolución de problemas, búsqueda y uso de recursos y peticiones de
ayuda, cómo usar las listas de correo y qué lista usar, charla en general, meter la pata, jactarse, compartir ideas,
historias, soporte moral (pero no técnico) e implicación 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 técnica y en ella se esperan contenidos estríctamente técnicos.
FREEBSD-POLICY
Decisiones de funcionamiento interno del Core Team
Es una lista de sólo 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 “colección de ports” (/usr/ports)de FreeBSD, propuestas de aplicaciones a portar,
modificaciones a la infraestructura de ports y coordinación general de esfuerzos. Ésta es una lista de correo
técnica en la cual se esperan contenidos exclusivamente técnicos.
FREEBSD-QUESTIONS
Preguntas de los usuarios
Ésta es la lista de correo para preguntas sobre FreeBSD. No debería enviar preguntas del estilo de “cómo hacer”
a las listas técnicas salvo que el contenido sea claramente técnico.
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
Apéndice 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 técnica en la cual se esperan contenidos puramente técnicos.
FREEBSD-SECURITY
Cuestiones de seguridad
Cuestiones de seguridad informática (DES, Kerberos, problemas de seguridad conocidos y sus soluciones, etc.)
Ésta es una lista de correo técnica en la que se esperan contenidos puramente técnicos.
FREEBSD-SECURITY-NOTIFICATIONS
Avisos de seguridad
Avisos de problemas de seguridad en FreeBSD y sus soluciones. Ésta no es una lista de discusión. La lista de
discusión es freebsd-security.
FREEBSD-SMALL
Uso de FreeBSD en aplicaciones embebidas
En ésta lista se debaten temas relacionados con instalaciones de FreeBSD inusualmente pequeñas y embebidas.
Ésta es una lista de correo técnica en la cual se esperan contenidos estrictamente técnicos.
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 características a incluír
en -stable que afectan a los usuarios e instrucciones paso por paso para permanecer usando la versión -stable.
Cualquiera que utilice FreeBSD “stable” debería suscribirse a ésta lista. Ésta es una lista técnica en la que se
esperan contenidos puramente técnicos.
FREEBSD-STANDARDS
Cumplimiento de C99 & POSIX
Éste es el foro para debates técnicos relacionadas con el Cumplimiento de las normas C99 y POSIX en
FreeBSD.
FREEBSD-USER-GROUPS
Lista de coordinación de de grupos de usuarios
231
Apéndice 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 debería estar limitada a resúmenes de
reuniones y coordinación de proyectos que atañen a los Grupos de Usuarios.
FREEBSD-VENDORS
VENDORS
Debates para la coordinación entre el Proyecto FreeBSD y Distribuidores de software y hardware para FreeBSD.
• comp.unix.bsd.freebsd.announce (news:comp.unix.bsd.freebsd.announce)
• comp.unix.bsd.freebsd.misc (news:comp.unix.bsd.freebsd.misc)
• 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
Apéndice A. Recursos en Internet
• comp.unix.bsd (news:comp.unix.bsd)
• 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)
233
Apéndice 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/ — Hungría.
• http://www.is.FreeBSD.org/ — Islandia.
• http://www.ie.FreeBSD.org/ — Irlanda.
• http://www.jp.FreeBSD.org/www.FreeBSD.org/ — Japón.
• 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/ — Rumanía.
• 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/ — República Eslovaca.
• http://www.si.FreeBSD.org/ — Eslovenia.
• http://www.es.FreeBSD.org/ — España.
• http://www.za.FreeBSD.org/ — Sudáfrica/1.
• http://www2.za.FreeBSD.org/ — Sudáfrica/2.
• http://www.se.FreeBSD.org/ — Suecia.
• http://www.ch.FreeBSD.org/ — Suiza.
• http://www.tw.FreeBSD.org/www.freebsd.org/data/ — Taiwan.
234
Apéndice A. Recursos en Internet
• http://www.tr.FreeBSD.org/ — Turquía.
• 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/Oregón.
• http://www2.FreeBSD.org/ — USA/Tejas.
235
Apéndice 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
236
Apéndice B. PGP Keys
B.3. Developers
237
Apéndice B. PGP Keys
238
Apéndice B. PGP Keys
239
Apéndice B. PGP Keys
240
Apéndice B. PGP Keys
241
Apéndice B. PGP Keys
242
Apéndice B. PGP Keys
243
Apéndice B. PGP Keys
244
Apéndice B. PGP Keys
245
Apéndice B. PGP Keys
246
Apéndice B. PGP Keys
247
Apéndice B. PGP Keys
248
Apéndice B. PGP Keys
249
Apéndice B. PGP Keys
250
Apéndice B. PGP Keys
251
Apéndice B. PGP Keys
252
Apéndice B. PGP Keys
253
Apéndice B. PGP Keys
254
Apéndice B. PGP Keys
255
Colophon
Este libro es el resultado del trabajo de cientos de colaboradores del “Proyecto de Documentación de FreeBSD”. El
texto esta escrito en SGML de acuerdo al DTD DocBook y es formateado automáticamente en diferentes formatos
de presentación usando Jade, una herramienta DSSSL de software libre. Se han usado las hojas de estilo DSSSL de
Norm Walsh con personalización de niveles para las instrucciones de presentación de Jade. La versión 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