proyecto de documentación de freebsd - blog de … · de california en berkeley, y continúa la...

263
Manual de FreeBSD Proyecto de Documentación de FreeBSD

Upload: ngodang

Post on 01-Oct-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Manual de FreeBSD

Proyecto de Documentación de FreeBSD

Manual de FreeBSDpor Proyecto de Documentación de FreeBSDPublicado Febrero 1999Copyright © 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 por The FreeBSD Documentation Project

Bienvenido a FreeBSD!. Este manual cubre la instalación y uso diario de FreeBSD 4.6.2-RELEASE. Este manualestá en constante evolución y es el resultado del trabajo de muchas personas. Algunas secciones no están completas yotras necesitan ser actualizadas. Si estás interesado en colaborar en este proyecto, envía un mail a FreeBSDdocumentation project mailing list <[email protected]>. La última versión de este documento estásiempre disponible en el servidor World Wide Web de FreeBSD (../../../../index.html). También está disponible endiferentes 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 papelde este manual, se puede adquirir en FreeBSD Mall (http://www.freebsdmall.com/). También es posible realizarbú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 conditionsand 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 otherformats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in thedocumentation 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 IMPLIEDWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. INNO EVENT SHALL THE FREEBSD DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT,INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITEDTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ORBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER INCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANYWAY OUT OF THE USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCHDAMAGE.

Tabla de contenidosI. Empezamos ............................................................................................................................................................. vii

1. Introducción ......................................................................................................................................................11.1. Sinopsis.................................................................................................................................................11.2. ¡Bienvenido a FreeBSD!.......................................................................................................................11.3. Acerca del proyecto FreeBSD ..............................................................................................................4

2. Instalando FreeBSD ..........................................................................................................................................92.1. Configuraciones soportadas ................................................................................................................112.2. Preparándonos para la instalación ......................................................................................................152.3. Instalando FreeBSD............................................................................................................................192.4. Preguntas y Respuestas para usuarios de MS-DOS............................................................................20

3. Conceptos Básicos de Unix.............................................................................................................................223.1. Sinópsis...............................................................................................................................................223.2. Permisos..............................................................................................................................................223.3. Estructura de directorios .....................................................................................................................233.4. Intérpretes de órdenes (Shells)............................................................................................................233.5. Editores de texto .................................................................................................................................253.6. Para más información .........................................................................................................................26

4. Instalando Aplicaciones: Paquetes y Ports......................................................................................................284.1. Sinópsis...............................................................................................................................................284.2. Generales sobre la Instalación de Software ........................................................................................284.3. Localizando su Aplicación .................................................................................................................304.4. Usando el Sistema de Paquetes...........................................................................................................304.5. Usando la Colección de Ports .............................................................................................................324.6. Actividades Post-Instalación...............................................................................................................384.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 ..............................................................................................................476.1. Sinópsis...............................................................................................................................................476.2. El Problema que representa Arrancar el Sistema ...............................................................................476.3. El RMA, y las Etapas de Arranque Uno, Dos y Tres .........................................................................486.4. Interacción con el Kernel Durante el Arranque ..................................................................................526.5. Init: Inicialización del Proceso de Control .........................................................................................536.6. Secuencia de Apagado........................................................................................................................54

7. Usuarios y administración básica de cuentas ..................................................................................................557.1. Sinopsis...............................................................................................................................................557.2. Introducción........................................................................................................................................557.3. La cuenta superusuario .......................................................................................................................577.4. Cuentas de sistema..............................................................................................................................577.5. Cuentas de usuario..............................................................................................................................577.6. Modificación de cuentas .....................................................................................................................577.7. Limitar a los usuarios..........................................................................................................................627.8. Personalizar a los usuarios..................................................................................................................657.9. Grupos.................................................................................................................................................65

8. Configurando el Kernel de FreeBSD...............................................................................................................67

iii

8.1. Sinópsis...............................................................................................................................................678.2. ¿Porqué Construir un Kernel Propio?.................................................................................................678.3. Compilación e Instalación de un Kernel Personalizado .....................................................................688.4. El Fichero de Configuración...............................................................................................................708.5. Creando Nodos para los Dispositivos .................................................................................................828.6. En Caso de que Algo No Funcione.....................................................................................................83

9. Seguridad.........................................................................................................................................................8510. Imprimiendo ..................................................................................................................................................86

10.1. Sinópsis.............................................................................................................................................8610.2. Introducción......................................................................................................................................8610.3. Configuración Básica........................................................................................................................8710.4. Configuración Avanzada de una Impresora ....................................................................................10110.5. Uso de las Impresoras.....................................................................................................................13010.6. Alternativas al Sistema de Impresión Estándar ..............................................................................13810.7. Resolución de Problemas................................................................................................................138

11. Discos ..........................................................................................................................................................14311.1. Utilizando Sysinstall .......................................................................................................................14311.2. Usando la línea de comandos .........................................................................................................14411.3. * Discos no tradicionales ................................................................................................................144

12. Localizacion ................................................................................................................................................14613. Sonido..........................................................................................................................................................147

13.1. Sinópsis...........................................................................................................................................14713.2. Identificar el Dispositivo Correcto..................................................................................................14713.3. Recompilar el Kernel ......................................................................................................................14913.4. Creando y Probando Nodos de Dispositivoss.................................................................................14913.5. Problemas Comunes .......................................................................................................................15013.6. Audio MP3......................................................................................................................................150

14. Comunicaciones Serie .................................................................................................................................15415. PPP y SLIP ..................................................................................................................................................155

15.1. Sinópsis...........................................................................................................................................15515.2. Utilizando User PPP .......................................................................................................................15515.3. Usando Kernel PPP.........................................................................................................................17015.4. Usando PPP sobre Ethernet (PPPoE).............................................................................................17715.5. Usando PPP sobre ATM (PPPoA) .................................................................................................17915.6. Usando SLIP...................................................................................................................................182

16. Networking Avanzado .................................................................................................................................19317. Correo Electrónico ......................................................................................................................................19418. Lo último de lo último.................................................................................................................................195

18.1. Sinopsis...........................................................................................................................................19518.2. FreeBSD-CURRENT vs. FreeBSD-STABLE................................................................................19518.3. Sincronizando tu código fuente ......................................................................................................19918.4. Usando make world .....................................................................................................................200

19. Emulacion Linux .........................................................................................................................................213

iv

III. Apéndices ............................................................................................................................................................214

20. Obteniendo FreeBSD ..................................................................................................................................21520.1. Servidores FTP ...............................................................................................................................215

21. Bibliografía..................................................................................................................................................21621.1. Libros y revistas específicas sobre FreeBSD..................................................................................21621.2. Guías de usuario .............................................................................................................................21621.3. Guías de administrador ...................................................................................................................21721.4. Guías de programadores .................................................................................................................21721.5. El sistema operativo por dentro ......................................................................................................21821.6. Referencia de seguridad..................................................................................................................21821.7. Referencia de hardware ..................................................................................................................21821.8. Historia de UNIX............................................................................................................................21921.9. Diarios y revistas ............................................................................................................................219

A. Recursos en Internet .....................................................................................................................................221A.1. Listas de Correo ...............................................................................................................................221A.2. Grupos de Noticias de Usenet..........................................................................................................232A.3. Servidores WWW............................................................................................................................233A.4. Direcciones de Correo Electrónico ..................................................................................................235A.5. Cuentas Shell ...................................................................................................................................235

B. PGP Keys......................................................................................................................................................236B.1. Officers.............................................................................................................................................236B.2. Core Team Members ........................................................................................................................236B.3. Developers........................................................................................................................................237

Colophon....................................................................................................................................................................256

v

Tabla de ejemplos4-1. Descargando un Paquete e Instalandolo Localmente ............................................................................................306-1. Pantalla boot0.......................................................................................................................................................486-2. Pantalla de boot2..................................................................................................................................................496-3. Una Consola Insegura en /etc/ttys .........................................................................................................................537-1. Configuración de adduser ......................................................................................................................................587-2. Eliminación interactiva de cuenta con rmuser.......................................................................................................607-3. chpass interactivo ejecutado por el superusuario...................................................................................................607-4. chpass interactivo ejecutado por un usuario normal..............................................................................................617-5. Cambio de tu contraseña........................................................................................................................................617-6. Cambio de la contraseña de otro usuario como superusuario ...............................................................................617-7. Añadir un grupo usando pw(8)..............................................................................................................................657-8. Añadir a alguien a un grupo usando pw(8)............................................................................................................657-9. Determinar pertenencia a grupos con id(1) ...........................................................................................................65

vi

I. EmpezamosEsta parte del manual de FreeBSD es para usuarios y administradores nuevos en FreeBSD. Estos capítulos:

• Realizan una introducción a FreeBSD.

• Guían a través de una instalación de FreeBSD.

• Explican información básica sobre Unix.

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

• Introducen a las X, el sistema de ventanas de Unix y detallan como configurar un entorno de escritorio másproductivo.

Se ha intentado minimizar el número de referencias a otras secciones de este documento para evitar el salto entrepáginas y facilitar la lectura continuada.

Capítulo 1. IntroducciónRestructured, reorganized, and parts rewritten by Jim Mock.

1.1. Sinopsis¡Gracias por tu interés en FreeBSD! El siguiente capítulo trata varios temas relativos al Proyecto FreeBSD, como suhistoria, objetivos, modelo de desarrollo, etc.

Después de leer este capítulo sabrás:

• Qué relación guarda FreeBSD con otros sistemas operativos.

• La historia del Proyecto FreeBSD.

• Los objetivos del Proyecto FreeBSD.

• Los fundamentos del modelo de desarrollo de código abierto de FreeBSD.

• Y por supuesto: de dónde procede el nombre "FreeBSD".

1.2. ¡Bienvenido a FreeBSD!FreeBSD es un sistema operativo basado en 4.4BSD-Lite para la arquitectura Intel (x86) y sistemas basados en DECAlpha. Se está trabajando también en versiones para otras arquitecturas. Para una breve perspectiva general deFreeBSD consulta la siguiente sección. Puedes también leer sobre la historia de FreeBSD, o sobre la distribuciónactual. Si estás interesado en contribuir de algún modo al proyecto (código, hardware, billetes sin marcar), mírate elartículo Contribuir a FreeBSD (../../articles/contributing/index.html).

1.2.1. ¿Qué puede hacer FreeBSD?FreeBSD tiene muchas características notables. Algunas de ellas son:

• Multitarea expropiativa con prioridades dinámicamente ajustadas para asegurar que distintas aplicaciones yusuarios 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 distintascosas. Esto significa, por ejemplo, que los periféricos del sistema como impresoras y dispositivos de cinta soncompartidos adecuadamente por varios usuarios del sistema o la red, y que pueden establecerse límites sobrerecursos 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, yNIS. Esto quiere decir que tu máquina FreeBSD puede interoperar fácilmente con otros sistemas y hacer deservidor 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 ycortafuegos.

• La protección de memoria garantiza que las aplicaciones (o los usuarios) no pueden interferirse. Un error fatal enuna 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 elcoste 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 fuentecompatible con el de los más populares sistemas Unix comerciales y por ello la mayoría de las aplicaciones tansó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 aaplicaciones que requieren grandes cantidades de memoria de forma eficiente aun dando respuestas interactivas aotros 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 lenguajesadicionales para investigación y desarrollo avanzados se encuentran también disponibles en la colección de ports ypaquetes.

• Disponer del código fuente del sistema entero significa contar con el mayor nivel de control posible sobre tuentorno. ¿Para qué ligarte a una solución propietaria a la merced de un fabricante cuando puedes tener unverdadero 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 Universidadde California en Berkeley, y continúa la distinguida tradición de desarrollo de sistemas BSD. Además del excelentetrabajo del CSRG, el Proyecto FreeBSD ha invertido miles de horas en ajustar el sistema para conseguir unrendimiento y una fiabilidad máximos en situaciones de carga reales. Mientras que muchos de los gigantescomerciales 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 deazimut de antenas de satélites remotos; si puede realizarse con un Unix comercial lo más seguro es que tambiénpueda llevarse a cabo con FreeBSD. FreeBSD también se beneficia de las literalmente miles de aplicaciones de altacalidad desarrolladas en centros de investigación y universidades de todo el mundo, frecuentemente disponibles porpoco 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 gradonunca visto para aplicaciones o proyectos especiales, y de maneras generalmente no posibles con los sistemasoperativos de la mayoría de los fabricantes comerciales. Aquí damos tan sólo una muestra de aplicaciones en las quese 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 plataformaideal 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 untetraprocesador 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 modode estudiar sistemas operativos, arquitectura de computadores y redes que la experiencia a bajo nivel que FreeBSDpuede aportar. Para aquéllos cuyo principal interés en los ordenadores no es otro que el de poder realizar su trabajoexiste una serie de paquetes gratuitos de CAD, matemáticas, diseño gráfico, etc., que hacen de FreeBSD unsistema verdaderamente útil.

• Investigación: Encontrándose disponible el código fuente del sistema entero, FreeBSD es una excelenteplataforma para la investigación en sistemas operativos y otras ramas de la informática. El hecho de que FreeBSDesté disponible gratuitamente hace posible que grupos remotos puedan colaborar con ideas o compartandesarrollos sin tener que preocuparse de acuerdos en licencias especiales o de limitaciones acerca de lo que puedediscutirse en foros públicos.

• Redes: ¿Necesitas un nuevo enrutador? ¿Un servidor de nombres (DNS)? ¿Un cortafuegos para mantener a lagente fuera de tu red interna? FreeBSD puede convertir aquel 386 o 486 arrinconado en un enrutador avanzadocon 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 ellibremente disponible servidor XFree86 o uno de los excelentes servidores comerciales de X Inside. A diferenciade las terminales X, FreeBSD permite ejecutar muchas aplicaciones localmente, si así se quiere, aligerando de estemodo la carga soportada por un servidor central. FreeBSD puede incluso arrancar “sin disco”, permitiendo que lasestaciones 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 dedesarrollo 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, consultaCapítulo 20 para más información sobre cómo conseguir FreeBSD.

1.2.2. ¿Quién usa FreeBSD?Sobre FreeBSD corren algunos de los más grandes sitios web incluyendo:

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

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

3

Capítulo 1. Introducción

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

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

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

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

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

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

• Sony Japón (http://www.sony.co.jp/)

y muchos más.

1.3. Acerca del proyecto FreeBSDEn la siguiente sección se explican ciertos aspectos del proyecto, una breve historia, objetivos, y modelo dedesarrollo.

1.3.1. Breve historia de FreeBSDContributed by Jordan Hubbard.

La génesis del proyecto FreeBSD se remonta a comienzos de 1993, en parte como una extensión del “Unofficial386BSD 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 problemasque no se podían solventar vía patchkits. Algunos quizá recordéis que el primer nombre del proyecto fue “386BSD0.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 lasconsecuencias de prácticamente un año que más vale olvidar. A medida que el patchkit se iba haciendo másincómodo día a día, nosotros estuvimos unánimente de acuerdo en que algo se tenía que hacer y decidimos ayudar aBill ofreciendo esta instantánea “limpia” como ínterin. Aquellos planes fueron bruscamente interrumpidos cuandoBill Jolitz de repente decidió retirar su aprobación al proyecto sin ninguna indicación clara de lo que en su lugardebería hacerse.

No tardamos mucho en decidir que el objetivo seguía valiendo la pena, aun sin el soporte de Bill, y fue así queadoptamos el nombre “FreeBSD”, debido a David Greenman. Nuestros objetivos iniciales se fijaron una vezconsultamos a los usuarios del sistema, y cuando quedó claro que el proyecto estaba en marcha y que podía llegar aser una realidad contacté con Walnut Creek CDROM con la idea de mejorar los canales de distribución de FreeBSDen CD, pero hasta llegamos a disponer de una máquina con la que trabajar y una conexión a Internet rápida. Sin la fecasi sin precedentes que tuvo Walnut Creek CDROM en lo que era por aquel tiempo un proyecto completamentedesconocido, 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 laFree Software Foundation. Fue un logro bastante razonable para una primera versión, y le siguió FreeBSD 1.1 enmayo 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 ellargo juicio acerca del estatus legal de la cinta de Berkeley Net/2. Una condición del acuerdo fue la concesión porparte de U.C. Berkeley de que una gran parte de Net/2 era código “gravado” y propiedad de Novell, quien a su vez lohabía adquirido de AT&T anteriormente. Berkeley obtuvo a cambio de Novell el “beneplácito” para que4.4BSD-Lite, cuando saliera, fuera declarado como no-gravado y se instara a los usuarios de Net/2 a cambiar. Estoincluía a FreeBSD, y se dio hasta julio de 1994 para dejar de sacar su propio producto basado en Net/2. Bajo lostérminos de aquel acuerdo, se le permitía al proyecto sacar una última versión antes de la fecha límite, esa versiónfue FreeBSD 1.1.5.1.

FreeBSD tuvo entonces que acometer la árdua tarea de literalmente reinventarse a sí mismo a partir de trozos nuevosy bastante incompletos de 4.4BSD-Lite. Las versiones “Lite” eran ligeras en parte porque el CSRG de Berkeleyquitó grandes partes del código necesario para construir un sistema que pudiera arrancar (debido a diversos requisitoslegales) y porque la versión del 4.4 para Intel era muy incompleta. No fue hasta noviembre de 1994 que el proyectorealizó esa transición, en ese punto sacó FreeBSD 2.0 en la red y en CDROM (a finales de diciembre). A pesar de noestar suficientemente pulida, esta distribución fue un éxito significativo y le siguió el más robusto y fácil de instalarFreeBSD 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 comunidadescomerciales como para que mereciera otra versión de la rama 2.1-STABLE. Ésa fue FreeBSD 2.1.7.1, publicada enfebrero de 1997, que marcó el final de la línea principal de desarrollo en 2.1-STABLE. Una vez en modomantenimiento, en esa rama (RELENG_2_1_0) sólo se harían ya mejoras en seguridad y correcciones de errorescríticos.

FreeBSD se ramificó desde la línea principal de desarrollo (“-CURRENT”) en noviembre de 1996 como la ramaRELENG_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.2en verano y otoño de 1997, la última de las cuales (2.2.8) apareció en noviembre de 1998. La primera versión 3.0oficial 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 la3.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 el20 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, la3.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 "actualrama -stable". Han habido varias versiones de la misma desde entonces: 4.0-RELEASE salió en marzo de 2000, 4.3en abril de 2001, y 4.4 en septiembre de 2001. Habrá más versiones de la rama 4.X-STABLE (RELENG_4) entrado2002.

Proyectos a largo plazo siguen teniendo lugar en la rama (principal) 5.0-CURRENT, e instantáneas de la 5.0 enCDROM (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.

1.3.2. Objetivos del Proyecto FreeBSDContributed by Jordan Hubbard.

Los objetivos del Proyecto FreeBSD son proveer software que pueda ser usado con cualquier propósito y sincompromiso alguno. Muchos de nosotros participamos significativamente en el código (y en el proyecto) yciertamente no nos importaría recibir una pequeña compensación económica de vez en cuando, pero decididamenteno estamos dispuestos a insitir en ello. Creemos que nuestra más importante y primordial “misión” es dar código atodo 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 conentusiasmo.

El código fuente de nuestro árbol que se halla bajo la GNU General Public License (GPL) o la Library GeneralPublic License (LGPL) viene con algunas restricciones más, si bien de cara a garantizar acceso al mismo, no alcontrario que es lo habitual. Debido a las complicaciones adicionales que pueden surgir en el uso comercial desoftware con licencia GPL, preferimos que el software contribuido lo sea bajo la licencia BSD, menos estricta,cuando ésa sea una opción razonable.

1.3.3. El modelo de desarrollo de FreeBSDContributed by Satoshi Asami.

El desarrollo de FreeBSD es un proceso muy abierto y flexible, estando FreeBSD construido literalmente a partir delas 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, yaquéllos interesados en vincularse más al proyecto tan sólo tienen que ponerse en contacto con nostros en FreeBSDtechnical discussions mailing list <[email protected]>. La lista FreeBSD announcements mailinglist <[email protected]> también se halla disponible para quienes deseen dar a conocer a otrosusuarios de FreeBSD grandes áreas de trabajo.

Cosas útiles de saber sobre el Proyecto FreeBSD y su proceso de desarrollo, ya sea trabajando de formaindependiente 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/) (ConcurrentVersions System), una herramienta de control de versiones de código fuente que se halla libremente disponibley viene con FreeBSD. El repositorio CVS (http://www.FreeBSD.org/cgi/cvsweb.cgi) principal reside en unamáquina en Santa Clara CA, USA desde la que es replicado a numerosos mirrors distribuidos por todo elmundo. El árbol del CVS, así como los árboles -CURRENT y -STABLE que se extraen del mismo, pueden serreplicados fácilmente en tu máquina también. Por favor, consulta la sección Sincronizando el árbol de códigofuente 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 arealizar modificaciones en los fuentes de FreeBSD (el término “committer” viene del comando commit decvs(1), que sirve para subir nuevos cambios al repositorio del CVS). La mejor manera de enviar aportacionespara que sean revisadas por los committers es usar el comando send-pr(1), aunque si pareciera que algo va malen el sistema también puedes contactarlos por mail en FreeBSD committer’s mailing list<[email protected]>.

El equipo core de FreeBSD

El equipo core de FreeBSD sería lo equivalente a una junta directiva si el Proyecto FreeBSD fuese unacompañía. La principal tarea de este equipo es la de garantizar que el proyecto, como un todo, tiene salud ysigue las direcciones correctas. Invitar a desarrolladores comprometidos y responsables a unirse a nuestro grupode committers es una de las funciones del equipo core, así como el reclutamiento de nuevos miembros delequipo cuando otros se van. El equipo core fue elegido de un conjunto de committers candidatos en octubre de2000. Se celebran elecciones cada 2 años.

6

Capítulo 1. Introducción

Algunos miembros del equipo core tienen también áreas de responsabilidad específicas, en cuanto a que seencargan de garantizar que cierta parte extensa del sistema funciona según lo previsto. Hay una lista completade 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 nose benefician económicamente del proyecto, por ello “compromiso” no debería confundirse con “soportegarantizado”. La anterior analogía de la “junta directiva” en realidad no es del todo exacta, quizá fuera másacertado decir que ésa es la gente que dedica su vida a FreeBSD ¡en contra de lo que les aconseja supropio juicio!

Contribuidores externos

Por último, y no por ello menos importante, el mayor grupo de desarrolladores está formado por los mismosusuarios, quienes constantemente aportan feedback y correcciones de errores. La principal manera de estar encontacto con el más descentralizado desarrollo de FreeBSD es suscribirse a FreeBSD technical discussionsmailing list <[email protected]> (ver información sobre listas de distribución) donde sediscuten 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 hayque 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 modelocentralizado está diseñado para conveniencia de los “usuarios” de FreeBSD, que así tienen un modo sencillo de estaral día con una base de código central, ¡no para excluir a contribuidores potenciales! Nuestro deseo es presentar unsistema operativo estable con un gran conjunto de aplicaciones coherentes que los usuarios puedan instalar y usarfácilmente, y este modelo funciona bien para lograrlo.

Lo único que pedimos a quienes quisieran unirse a nosotros como desarrolladores de FreeBSD es la mismadedicación que los integrantes actuales tienen para mantener su éxito.

1.3.4. La actual distribución FreeBSDFreeBSD está libremente disponible, todo el código fuente de la distribución basada en 4.4BSD-Lite para sistemasbajo Intel i386, i486, Pentium Pro, Celeron, Pentium II, Pentium III (o compatible) y DEC Alpha. Estáprincipalmente basado en software del grupo CSRG de U.C. Berkeley, con algunas mejoras provenientes deNetBSD, OpenBSD, 386BSD, y la Free Software Foundation.

Desde la versión 2.0 de FreeBSD de finales del 94, el rendimiento, conjunto de funcionalidades, y estabilidad delsistema han mejorado drásticamente. El último cambio consiste en un rediseño del sistema de memoria virtual conuna caché unificada de VM/buffer que no sólo aumenta el rendimiento, sino que también reduce el consumo dememoria de FreeBSD, haciendo que una configuración de 5MB sea un mínimo más aceptable. Otras mejorasincluyen soporte completo para clientes y servidores NIS, soporte para transacciones TCP, llamada bajo demanda

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 cientosde correcciones de errores.

También hemos considerado los comentarios y sugerencias de muchos de nuestros usuarios y hemos intentadoofrecer lo que esperamos sea un proceso de instalación más sensato y fácil de entender. ¡Tu feedback sobre esteproceso (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únmentesolicitados. ¡En el momento de escribir esto hay unos 7,000 ports! La lista de ports comprende desde servidoresHTTP (WWW), hasta juegos, lenguages, editores, y prácticamente cualquier cosa intermedia. La colección de portscompleta requiere un espacio de aproximadamente 100MB, todos ellos expresados como “deltas” de sus fuentesoriginales. Esto hace que nos sea mucho más fácil actualizar ports, y reduce de un modo importante el espacio endisco que necesitaba la anterior colección de ports 1.0. Para compilar un port uno simplemente se sitúa bajo eldirectorio del programa que desea instalar, escribe make install, y deja que el sistema se encargue del resto. Ladistribució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énestán disponibles precompilados en “paquetes”, que pueden instalarse con un simple comando (pkg_add) paraaqué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énencontrarse en el directorio /usr/share/doc de cualquier máquina bajo FreeBSD 2.1 o posterior. Puedes ver losmanuales 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 FreeBSDAsí 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 describemás abajo. Arranca tu ordenador con el instalador de FreeBSD, aunque no estés pensando en realizar la instalación, ypodrá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 degestionar 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 ObteniendoFreeBSD 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 essoportado por FreeBSD. Sería de gran ayuda que hicieses una lista de cualquier tarjeta especial que tengasinstalada, como controladoras SCSI, tarjetas de red o tarjetas de sonido. Esta lista debería incluir parámatrosrelevantes 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 desdeCDROM (muchos sistemas antiguos no), simplemente inserta el CD en el lector y arranque directamentedesde él.

• Si estás ejecutando DOS y tienes los drivers adecuados para acceder al lector de CDROM, ejecuta el ficheroinstall.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 deCDROM), ejecuta primero el programa setup para copiar los ficheros adecuados del CD a la partición. Acontinuació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 casocontrario, tu opción final es crear un disco de arranque con la imágen floppies\boot.flp. Salta al paso 4para 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 quetu navegador grabe el fichero en lugar de mostrarlo.

Nota: Estas imágenes solo se pueden usar con discos de 1,44Mb.

9

Capítulo 2. Instalando FreeBSD

4. Haz el disco de instalación a partir del fichero imágen:

• Si estás usando MS-DOS o Windows bájate el programa fdimage.exe(ftp://ftp.FreeBSD.ORG/pub/FreeBSD/tools/fdimage.exe) o cógelo de tools\fdimage.exe en el CDROMy ejecútalo de la siguiente manera:

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 elnivel superior de la distribució de FreeBSD y que las imágenes están en el subdirectorio floppies , tal ycomo suele ser habitual).

• Si estás instalando un sistema UNIX para crear las imágenes de disco:

# dd if=boot.flp of=disk_device

disk_device es el dispositivo /dev para la disquetera. En sistemas FreeBSD, éste es /dev/rfd0 para eldisco 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 comoeste:

���FreeBSD BOOT ...

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

Si no tecleas nada, FreeBSD arrancará automáticamente con su configuración por defecto, después de una pausade 5 segundos. Cuando FreeBSD arranca, comprueba tu ordenador para determinar el hardware instalado. Elresultado 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 100por 100 fiable. En el caso de que tu hardware sea identificado incorrectamente, o que el proceso de prueba cuelgue lamáquina, primero mira la sección configuraciones soportadas en esta guía de instalación para asegurar que tuhardware es soportado por FreeBSD.

Si tu hardware está soportado, resetea el ordenador y cuando aparece el prompt Boot: teclea -c. Esto hará queFreeBSD 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 loreferente a IRQ’s, direcciones de memoria, canales DMA, etc. Si tu hardware ha sido reconfigurado, necesitarás usarla 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 dispositivoque 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).

En el modo de configuración puedes:

• Listar los drivers de dispositivos presentes en el kernel.

• Desactivar los drivers de hardware no instalado en tu sistema.

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

Mientras aparece el prompt config � , teclea help para más información sobre los comandos disponibles. Despuésde ajustar los parámetros del kernel con el hardware que tienes instalado, teclea quit en el prompt config � paracontinuar el arranque con la nueva instalación.

Una vez FreeBSD está instalado, los cambios hechos en el modo de configuración serán guardados permanentementepara que no tengas que reconfigurar el sistema cada vez que arranques. Aún así, es aconsejable que te crees un kernelpersonalizado para optimizar el sistema. Mira en Configuración del kernel para crear un kernel personalizado.

2.1. Configuraciones soportadasActualmente FreeBSD se ejecuta en una variedad de buses ISA, VLB, EISA y PCI basados en PC’s, cubriendo desdeun 386sx hasta Pentiums (piensa que 386sx no es recomendado). También se soportan configuraciones IDE o ESDI,diferentes controladoras SCSI, tarjetas de red y serie, etc.

Un mínimo de cuatro megabytes de RAM son requeridos para ejecutar FreeBSD. Para ejecutar el Sistema XWindow, ocho megabytes de RAM es el mínimo recomendado.

A continuación te presentamos una lista de todas las controladores de disco y tarjetas de red que actualmentefuncionan en FreeBSD. Otras configuraciones posiblemente funcionen también, pero no hemos tenido noticias deello.

2.1.1. Controladoras de disco

• WD1003 (any generic MFM/RLL)

• WD1007 (any generic IDE/ESDI)

• IDE

• ATA

• Adaptec 1505 ISA SCSI controller

• Adaptec 152x series ISA SCSI controllers

• Adaptec 1535 ISA SCSI controllers

• Adaptec 154x series ISA SCSI controllers

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

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

11

Capítulo 2. Instalando FreeBSD

• Adaptec AIC7850 on-board SCSI controllers

• Adaptec AIC-6360 based boards, which includes the AHA-152x and SoundBlaster SCSI cards.

Nota: No puedes arrancar desde tarjeta SounBlaster ya que no tienen BIOS, la cual es necesaria paramapear el dispositivo de arranque en los vectores de Entrada/Salida. Son perfectamente usables para cintasexternas, CDROM’s, etc. Lo mismo se aplica a cualquier otra tarjeta basada en la AIC-6x60 sin ROM dearranque. Algunos sistemas tienen una ROM de arranque, la cual es mostrada de alguna manera cuando elsistema arranca. Revisa la configuración de tu sistema/placa para más detalles.

• Buslogic 545S & 545c

Nota: Buslogic was formerly known as “Bustek”.

• Buslogic 445S/445c VLB SCSI controller

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

• Buslogic 946c PCI SCSI controller

• Buslogic 956c PCI SCSI controller

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

• NCR5380/NCR53400 (“ProAudio Spectrum”) SCSI controller.

• DTC 3290 EISA SCSI controller in 1542 emulation mode.

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

• Seagate ST01/02 SCSI controllers.

• Future Domain 8xx/950 series SCSI controllers.

• WD7000 SCSI controllers.

Con todas las controladoras SCSI soportadas, se consigue ofrecer soporte completo para periféricos SCSI-I &SCSI-II, incluyendo discos, cintas, DAT, y lectores de CDROM.

Los siguientes tipos de CDROM son soportados actualmente:

• SoundBlaster SCSI and ProAudio Spectrum SCSI (cd)

• Mitsumi (all models) proprietary interface (mcd)

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

• Sony proprietary interface (scd)

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

12

Capítulo 2. Instalando FreeBSD

2.1.2. Tarjetas de red

• Allied-Telesis AT1700 and RE2000 cards

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

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

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

• DEC DC21040/DC21041/DC21140 based NICs:

• ASUS PCI-L101-TB

• Accton ENI1203

• Cogent EM960PCI

• Compex CPXPCI/32C

• D-Link DE-530

• DEC DE435

• Danpex EN-9400P3

• JCIS Condor JC1260

• Kingston KNE100TX

• Linksys EtherPCI

• Mylex LNP101

• SMC EtherPower 10/100 (Model 9332)

• SMC EtherPower (Model 8432)

• SMC EtherPower (2)

• Zynx ZX314

• Zynx ZX342

• DEC FDDI (DEFPA/DEFEA) NICs

• Fujitsu FMV-181 and FMV-182

• Fujitsu MB86960A/MB86965A

• Intel EtherExpress

• Intel EtherExpress Pro/100B 100Mbit.

• Isolan AT 4141-0 (16 bit)

• Isolink 4110 (8 bit)

• Lucent WaveLAN wireless networking interface.

• Novell NE1000, NE2000, and NE2100 ethernet interface.

13

Capítulo 2. Instalando FreeBSD

• 3Com 3C501 cards

• 3Com 3C503 Etherlink II

• 3Com 3c505 Etherlink/+

• 3Com 3C507 Etherlink 16/TP

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

• 3Com 3C590, 3C595 Etherlink III

• 3Com 3C90x cards.

• HP PC Lan Plus (27247B and 27252A)

• Toshiba ethernet cards

• PCMCIA ethernet cards from IBM and National Semiconductor are also supported.

Nota: Actualmente FreeBSD no soporta las características PnP (plug-n-play) de algunas tarjetas. Si tu tarjetatiene Pnp y te está dando problemas, intenta desactivarle el PnP.

2.1.3. Dispositivos varios

• AST 4 port serial card using shared IRQ.

• ARNET 8 port serial card using shared IRQ.

• BOCA IOAT66 6 port serial card using shared IRQ.

• BOCA 2016 16 port serial card using shared IRQ.

• Cyclades Cyclom-y Serial Board.

• STB 4 port card using shared IRQ.

• SDL Communications Riscom/8 Serial Board.

• SDL Communications RISCom/N2 and N2pci sync serial cards.

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

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

• Adlib, SoundBlaster, SoundBlaster Pro, ProAudioSpectrum, Gravis UltraSound, Gravis UltraSound MAX andRoland MPU-401 sound cards.

• Matrox Meteor video frame grabber.

• Creative Labs Video spigot frame grabber.

• Omnimedia Talisman frame grabber.

• Brooktree BT848 chip based frame grabbers.

• X-10 power controllers.

• PC joystick and speaker.

14

Capítulo 2. Instalando FreeBSD

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

2.2. Preparándonos para la instalaciónExisten diferentes métodos de instalación de FreeBSD. La siguiente sección describe la preparación necesaria paracada tipo de instalación.

2.2.1. Antes de instalar desde CDROMSi tu lector de CDROM no está soportado, por favor, pasa a la sección Preparación en MSDOS.

No hay mucho trabajo de preparación previo para realizar una instalación satisfactoria desde uno de los CDROM’sde Walnut Creek (otras distribuciones en CDROM también es posible que funcionen pero no tenemos manera deasegurarlo ya que no hemos podido probar ninguno, y tampoco sabemos como están hechos). Puedes arrancardirectamente el programa de instalación desde DOS usando el fichero install.bat o puedes hacer los discos dearranque ejecutando el programa makeflp.bat.

Nota: Si estás ejecutando FreeBSD 2.1-RELEASE y tienes un CDROM IDE, usa los ficheros inst_ide.bat oatapiflp.bat.

Para acceder al interface más sencillo de todos (desde DOS), ejecuta el comando view. Aparecerá una utilidad DOScon 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 deinstalación en el menú Media y cargar la distribución completa desde el CDROM. No se requiere ningús soporteadicional para la instalación.

Después de instalar por completo el sistema y arrancar desde el disco duro, puedes montar el CDROM en cualquiermomento 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 éstepueda ser detectado durante la fase de pruebas de hardware. Esto es necesario también si quieres que elCDROM 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 tumáquina, lo puedes hacer de manera muy sencilla. Una vez tienes la máquina completamente instalada, sólo tienesque 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 lainstalación el tipo FTP y teclear: ftp://tu_maquina después de seleccionar “Other” en el menú de servidoresFTP.

2.2.2. Antes de instalar desde FloppySi debes instalar desde disquettes, bién por problemas de compatibilidad de hardware o por que te guste hacer lascosas de la manera más complicada, antes debes preparar algunos disquettes.

Necesitarás, como mínimo, tantos disquettes de 1.44MB o 1.2MB como espacio ocupe la distribución en eldirectorio bin. Si estás preparando estos disquettes bajo DOS, entonces ESTOS disquettes deben estar formateadoscon el comando FORMAT de MS-DOS. Si utilizas Windows, usa el comando format del administrador de ficheros.

NO te fíes de los discos preformateados. Formatéalos tú mismo, sólo para estar seguro. Muchos de los problemasreportados en el pasado por usuarios, han tenido que ver con disquettes mal formateados o defectuosos.

Si estás creando los disquettes desde una máquina FreeBSD, formatear los discos tampoco es mala idea. Puedes usarel comando disklabel y newfs para formatearlos e incluir en ellos el sistema de ficheros UFS. Para hacerlo,puedes seguir la siguiente secuencia de comandos:

# fdformat -f 1440 fd0.1440

# disklabel -w -r fd0.1440 floppy3# newfs -t 2 -u 18 -l 1 -i 65536 /dev/rfd0

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

Ahora puedes montar los disquettes y escribir en ellos como en cualquier otro sistema de ficheros.

Después de formatear los disquettes, necesitarás copiar los ficheros en ellos. Los ficheros de la distribución estánconvenientemente distribuidos para que quepan 5 de ellos en cada disquette de 1.44Mb. Utiliza todos los discosnecesarios para incluir en ellos todas las distribuciones que quieras instalar. Cada distribución debe estar en unsubdirectorio 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 porel resto de parámetros necesarios.

2.2.3. Antes de instalar desde una partición MS-DOSPara realizar la instalación desde una partición MS-DOS, copia los ficheros de la distribución en un directoriollamado C:\FREEBSD. La estructura de directorios del CDROM tiene que ser parcialmente reproducida dentro deéste directorio, por lo que te aconsejamos usar el comando xcopy. Por ejemplo, para preparar una instalaciónmínima de FreeBSD:

C:\� MD C:\FREEBSD

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

16

Capítulo 2. Instalando FreeBSD

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

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

Tienes que copiar cada distribución que quieras instalar desde MS-DOS, bajo C:\FREEBSD — la distribución BIN essólo la mínima requerida.

2.2.4. Antes de instalar desde una cinta QIC/SCSIInstalar desde una cinta es probablemente el método más sencillo, aparte de una instalación on-line, vía FTP oCDROM. El programa de instalación espera que los ficheros estén en formato tar en la cinta, por lo que sólo tienesque seleccionar la distribución a instalar y copiarla en una cinta en formato tar con un comando como:

# cd /freebsd/distdir# tar cvf /dev/rwt0 dist1 ... dist2

Cuando ejecutas la instalación, deberís asegurarte de dejar suficiente espacio libre en algún directorio temporal (elcual podrás elegir), para que el programa de instalación pueda recuperar todo el contenido de la cinta. Dado al accesono aleatorio de las cintas, este método exige un poco de espacio temporal. Necesitarás tanto espacio temporal comocontenidos hayan en la cinta.

Nota: Es imprescindible que la cinta esté en el lector antes de arrancar con el disco de instalación.

2.2.5. Antes de instalar sobre una redPuedes hacer instalaciones de red mediante 3 tipos de conexió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 unportátil y otro ordenador. La conexión debe ser mediante un cable cruzado serie ya que la instalación SLIP no ofreceposibilidad de marcado telefónico; esta facilidad se ofrece mediante la utilidad PPP, la cual aconsejamos usarsiempre 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 queel 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. Siusas 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 tienesproblemas, 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 lainstalación sobre el puerto paralelo con un cable “laplink”. La velocidad es mucho mayor que la que podemosconseguir 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 suscaracterísticas requeridas) está disponible en la sección Hardware soportado. Si estás usando una de las tarjetaPCMCIA 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 detu máquina. Tu administrador de sistemas puede darte todos los valores adecuados a la configuración de tu red. Si vasa acceder a otras máquinas por nombre en lugar de dirección IP, necesitarás la dirección de un servidor de nombres yposiblemente la dirección de un gateway (si usas PPP es la dirección IP de tu proveedor). Si no conoces lasrespuestas a la mayoría de estas preguntas, definitivamente debes hablar con tu administrador de sistemas antes deintentar é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.

2.2.5.1. Preparando la instalación sobre NFS

La instalación sobre NFS es muy sencilla: simplemente copia los ficheros de las distribuciones de FreeBSD quenecesites en algún lugar del servidor, y apunta el soporte de instalación de NFS hacia él.

Si este servidor sólo soporta accesos a “puertos seleccionados” (como ocurre generalmente con las estaciones detrabajo SUN), necesitarás activar esta opción en el menú Options antes de proceder con la instalación.

Si tienes una conexión de red de poca calidad, con ratios de transferencia muy pobres, también deberías activar elflag apropiado en el menú Options.

Para que la instalación por NFS funcione, el servidor debe soportar el acceso a subdirectorios exportados, porejemplo, si el directorio de tu distribución de FreeBSD 4.6.2 reside en: ziggy:/usr/archive/stuff/FreeBSDEntonces ziggy debe permitir montar directamete /usr/archive/stuff/FreeBSD, y no sólo /usr o/usr/archive/stuff.

En fichero /etc/exports de FreeBSD, esto es controlado por la opción -alldirs . Otros servidores NFS puedenusar opciones diferentes. Si obtienes el mensaje Permission Denied por parte del servidor, significa que no tienes estaopción activada de manera adecuada.

2.2.5.2. Preparando una instalación por FTP

La instalación por FTP se puede realizar desde cualquiera de los servidores mirror que contengan una versiónrazonablemente actualizada de FreeBSD 4.6.2. Un completo menú de elecciones razonables para prácticamentecualquier parte del mundo está disponible en el menú de instalación FTP.

Si estás instalando desde cualquier otro servidor no listado en ese menú, o tienes problemas con la configuración delservidor de nombres o la resolución correcta, puedes especificar tu propia URL seleccionando la opción “Other” enel menú. Una URL también puede ser una dirección IP, de manera que lo siguiente funcionaría en la ausencia de unservidor de nombres:

18

Capítulo 2. Instalando FreeBSD

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

Hay dos modos de instalación FTP que puedes usar:

FTP Activo

Para todas las transferencias FTP, usa el modo “Activo”. Esto no funcionará a través de firewalls, perofuncionará sin problemas con servidores FTP antiguos que no soportan el modo pasivo. Si tu conexión se cuelgacon 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 firewallsque 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 servidorproxy 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 comoparte del nombre de usuario después de una @-sign. El servidor proxy reenviará la petición al servidor adecuado. Unejemplo: digamos que quieres realizar la instalación desde ftp.freebsd.org usando el servidor proxy FTPfoo.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 [email protected], y tudirección de correo como password. Como medio de instalación , especifica FTP (o FTP pasivo, si el proxy losoporta) 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óndesde esa máquina (la cual coge los ficheros de ftp.freebsd.org a medida que la instalación los necesita).

2.3. Instalando FreeBSDUna vez has tomado nota de los pasos apropiados en la preinstalación, deberís poder instalar FreeBSD sin ningúntipo de problema.

Si tienes algún problema, deberías vover atrás y releer la sección de preparación aplicable a tu medio de instalación.Si estás teniendo problemas de hardware, o FreeBSD se niega a arrancar, lee la Guía de Hardware que puedesencontrar en el disco de arranque para posibles soluciones.

El disco de arranque de FreeBSD contiene toda la documentación on-line que deberís necesitar para realizar lainstalación. Si no es así, nos gustaría saber que es lo que te ha confundido o dónde has tenido más problemas. Envítus comentarios a FreeBSD documentation project mailing list <[email protected]>. El objetivo delprograma de instalación de FreeBSD (sysinstall) es estar suficientemente documentado para poder realizar unainstalación sin problemas.

Mientras tanto, puedes encontrar útil esta “típica secuencia de instalación”:

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 3minutos, dependiendo del hardware, debería aparecer un menú de opciones iniciales. Si el disco no arranca o elarranque se cuelga en algún momento, lee la sección Q&A de la Guía de Hardware para conocer las posiblescausas.

2. Pulsa F1. Deberías ver unas instrucciones básicas sobre el sistema de menús y del programa en general. Si nohas 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 programade instalación durante todo el proceso. Si nunca has usado FreeBSD anteriormente, la instalación Novice es lamás recomendada.

5. El menú de configuración final te permite configurar tu instalación de FreeBSD a través de un sistema guiadopor menús. Algunas secciones, como la de red, pueden ser importantes si has hecho la instalación desdeCDROM/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 redcuando reinicies por primera vez desde el disco duro.

2.4. Preguntas y Respuestas para usuarios de MS-DOSMuchos usuarios de FreeBSD querrán instalar FreeBSD en PC’s habitados por MS-DOS. Aquí están algunas de laspregunas (y respuestas) más comunes sobre la instalación de FreeBSD en estos sistemas.

Ayuda! No tengo espacio. Necesito borrarlo todo?

Si tu máquina está todavía ejecutando MS-DOS y tienes poco o ningún espacio libre disponible para la instalación deFreeBSD, no todo está perdido!. Quizás encuentres útil la utilidad FIPS, disponible en el directorio tools delCDROM de FreeBSD, o en cualquiera de los mirrors de FreeBSD.

FIPS te permite repartir una partición MS-DOS en dos partes, preservando la partición original permitiendo lainstalación en la segunda. Primero debes defragmentar tu partición MS-DOS usando el programa DEFRAG de DOS6.x o las utilidades Norton. Después ejecuta FIPS. El propio programa te preguntará todos los datos que necesiteconocer. Finalmente puedes reiniciar la máquina e instalar FreeBSD en la segunda partición. Mira el menúDistributions para hacer una estimación de la cantidad de espacio necesario para el tipo de instalación que deseashacer.

Puedo usar sistemas de ficheros comprimidos desde FreeBSD?

No. Si estás usando una utilidad como Stacker(tm) o DoubleSpace(tm), FreeBSD solo será capaz de usar la parte delsistema de ficheros no comprimida. El resto del sistema de ficheros se mostrarás como un único fichero. No borreseste fichero. Lo agradecerás enormemente!.

Es mejor solución crear otra partición primaria de MS-DOS no comprimida y usarla para la comunicación entreMS-DOS y FreeBSD.

Puedo montar mis particiones MS-DOS extendidad?

Sí. Las particiones extendidas de DOS son mapeadas al final del otro “slices” en FreeBSD, por ejemplo, tu disco D:

será /dev/sd0s5, tu disco E: será /dev/sd0s6 y así respectivamente. Este ejemplo asume, por supuesto, que tupartición extendida está en el disco SCSI 0. Para discos IDE, sustituye wd por sd. Para montar las particionesextendidas tienes que hacerlo exactamente igual que cualquier otra partición o disco DOS:

20

Capítulo 2. Instalando FreeBSD

# mount -t msdos /dev/sd0s5 /dos_d

Puedo ejecutar binarios MS-DOS bajo FreeBSD?

BSDI ha donado su emulador DOS al mundo BSD y éste ha sido portado a FreeBSD.

Hay también una (tecnicamente) buena aplicación disponible en la Colección de Ports llamada pcemu, la cual tepermite ejecutar muchos binarios en modo texto emulando por completo una CPU 8088.

21

Capítulo 3. Conceptos Básicos de Unix

3.1. SinópsisReescrito por Chris Shumway <[email protected]>, 10 Mar 2000.

El siguiente capítulo cubre la funcionalidad y órdenes básicas del sistema operativo FreeBSD. Si se es nuevo enFreeBSD, seguramente querrá leer este capítulo antes de buscar ayuda.

3.2. PermisosFreeBSD, 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 manejarvarios usuarios trabajando todos simultáneamente y en tareas que no guardan relación entre sí. El sistema es elresponsable de compartir y administrar peticiones de dispositivos de hardware, periféricos, memoria y tiempo deUnidad 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 conjuntode permisos que gobiernan quién puede leer, escribir y ejecutar el elemento. Estos permisos se guardan como octetosdivididos en tres partes: una para el propietario del archivo, otra para el grupo al que el archivo pertenece, y otra paracualquier otro. Esta representación numérica funciona así:

Valor Permiso Listado de Directorio

0 No leer, no escribir, no ejecutar ---

1 No leer, no escribir, ejecutar --x

2 No leer, escribir, no ejecutar -w-

3 No leer, escribir, ejecutar -wx

4 Leer, no escribir, no ejecutar r--

5 Leer, no escribir, ejecutar r-x

6 Leer, escribir, no ejecutar rw-

7 Leer, escribir, ejecutar rwx

Si se muestra un listado expandido de directorio mediante ls -l, se mostrarán en una columna los permisos defichero 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, undirectorio, un dispositivo especial de tipo carácter o bloque, un socket, o cualquier otro dispositivo depseudo-archivo. Los siguientes tres caracteres, expresados como rw- muestran los permisos para el propietario delarchivo. 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 yescribir en el archivo, el grupo puede leer el archivo, y el resto del mundo sólo puede leer el archivo. De acuerdo conla 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

partes de los permisos del archivo.

Todo ésto está muy bien, pero ¿cómo controla el sistema los permisos de los dispositivos? FreeBSD en realidad tratala mayoría de los dispositivos hardware como un archivo que los programas pueden abrir, leer y en los que puedenescribir datos como si de cualquier otro archivo se tratara. Estos archivos especiales de dispositivos se encuentran enel directorio /dev.

Los directorios también son tratados como archivos. Tienen permisos de lectura, escritura y ejecución. El bit deejecución en un directorio tiene un significado ligéramente distinto que para los archivos. Cuando un directorio estámarcado como ejecutable significa que se puede mirar dentro, por ejemplo, se podría hacer un listado de esedirectorio.

Hay más permisos, pero se usan principalmente en circunstancias especiales como los binarios ejecutables de tipo"setuid" y los los directorios de tipo "sticky". Si desea más información acerca de los permisos de archivos y cómoestablecerlos, asegúrese de mirar la página de manual de chmod(1).

3.3. Estructura de directoriosComo FreeBSD utiliza sus sistemas de archivos (file systems) para determinar muchas operaciones fundamentales enel sistema, la jerarquía del sistema de archivos es extremadamente importante. Dado que la página de manual dehier(7) proporciona una descripción completa de la estructura de directorios, no la vamos a repetir aquí. Para másinformación, puede consultar hier(7).

De una especial importancia es el raiz (root) de todos los directorios, el directorio /. Este directorio es el primero enser montado al arrancar y contiene contiene el sistema básico necesario a la hora de iniciar. El directorio raiz tambiéncontiene puntos de montaje para cualquier otro sistema de archivos que se desee montar.

Un punto de montaje es un directorio donde se pueden injertar al sistema de archivos raiz otros sistemas de ficherosadicionales. Los puntos de montaje convencionales incluyen /usr, /var, /mnt y /cdrom. Estos directoriosdirectorios se corresponden habitualmente con entradas en en archivo /etc/fstab. /etc/fstab es una tabla quesirve como referencias al sistema y contiene los diferentes sistemas de archivos y sus respectivos puntos de montaje.La mayoría de los sistemas de archivos que figuran en /etc/fstab son montados automáticamente al arrancar porel guión de órdenes (script) rc(8) a no ser que contengan la opción noauto. Consúltese la página del manual fstab(5)para más información acerca del formato del archivo /etc/fstab y de las opciones que se pueden especificar.

3.4. Intérpretes de órdenes (Shells)En FreeBSD, gran parte del trabajo diario se realiza a través de un interfaz de la linea de órdenes llamado "shell". Elprincipal trabajo del shell es recoger órdenes del canal de entrada y ejecutarlas. Muchos shells tienen tambiénintegradas funciones para ayudarnos en las tareas cotidianas tales como la manipulación de archivos, edición delíneas de órdenes, macros de órdenes, expansión de expresiones regulares en nombres de archivo y variables delsistema. FreeBSD viene con un conjunto de shells, como sh, el shell Bourne y csh, el shell C. Hay disponiblesmuchos otros shells en la "FreeBSD Ports Collection" que son mucho más potentes, como bash y tcsh.

¿Qué shell usar? Es cuestión de gustos. Si se es programador de C se puede sentir más cómodo con tcsh, un shell conuna sintaxis similar al C. Si se proviene del mundo Linux o se es nuevo en el interfaz de órdenes de Unix, se puedeprobar con bash. El asunto es que cada shell posee unas propiedades únicas que pueden o no funcionar con elentorno de trabajo preferido y se ha de efectuar una elección sobre el shell a usar.

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 lasprimeras letras de una orden o del nombre de un archivo, se puede hacer que el shell complete automáticamente elresto de la orden o el nombre del archivo pulsando la tecla TAB. Aquí va un ejemplo. Supongamos que se tienen dosarchivos llamados foobar y foo.bar. Se quiere borrar foo.bar. Lo que habría que teclear es: rmfo[TAB].[TAB].

El shell nos mostraría rm foo[BEEP].bar.

El [BEEP] es el pitido de consola (console bell): es el shell diciéndonos que fue incapaz de completar totalmente elnombre de archivo porque hay más de una coincidencia. Tanto foobar como foo.bar comienzan por fo, pero solose pudo completar hasta foo. Si se teclea ., y de nuevo TAB, el shell será capaz de introducir el resto del nombre pornosotros.

Otra función del shell son las variables de entorno. Las variables de entorno son parejas de valores clavealmacenados en el espacio de entorno del shell. Este espacio puede ser leído por cualquier programa invocado por elshell y, por tanto, en él se encuentra bastante información relativa a la configuración de programas. Lo siguiente esuna lista de las variables de entorno más comunes y su significado:

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 losque se busca ejecutables.

DISPLAY Nombre en la red de la pantalla de X11 a la queconectarse, si se encuentra disponible.

SHELL El shell actual.

TERM El nombre del terminal del usuario. Se usa paradeterminar las posibilidades del terminal de datos.

TERMCAP Base de datos donde encontrar los códigos de escapenecesarios para realizar diferentes funciones en elterminal.

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 demanual, separados por puntos y coma.

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

% setenv EDITOR /usr/local/bin/emacs

Bajo los shells tipo Bourne (Bourne Shells):

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

24

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 elcará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 pasaal programa echo.

Los shells manejan muchos caracteres especiales, llamados meta-caracteres, como representaciones especiales dedatos. El mas común es el carácter *, que representa cualquier número de caracteres en un nombre de archivo. Estosmeta-caracteres especiales se pueden usar para la expansión de nombres de archivos. Por ejemplo, teclear echo * escasi lo mismo que introducir ls porque el shell recoge todos los archivos que coinciden con * y se los pone en lalí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.

3.4.1. Cambiando de shellLa manera más fácil de cambiar de shell es usando la orden chsh. Al ejecutar chsh se nos situará dentro del editorde texto que figure en la variable de entorno EDITOR o, de no estar configurada, se nos abrirá vi. Cámbiese la línea“Shell:” adecuadamente.

También se le puede suministrar a chsh la opción -s; ésto establecerá el shell por nosotros sin necesidad de entraren el editor de texto. Por ejemplo, si se desea cambiar el shell a bash, lo siguiente realizará el ajuste:

% chsh -s /usr/local/bin/bash

Ejecutar chsh sin 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 lacolección de ports, entonces esto ya se habrá realizado. Si se ha instalado manualmente el shell, se deberealizar el cambio pertinente.

Por ejemplo, si se instaló manualmente bash y se situó en /usr/local/bin, debería hacer:

# echo "/usr/local/bin/bash"� �

/etc/shells

Y entonces volver a ejecutar chsh.

3.5. Editores de textoGran parte de la configuración de FreeBSD se realiza modificando archivos de texto. A causa de esto, es una buenaidea familiarizarse con un editor de texto. FreeBSD viene con unos cuantos como parte del sistema base y muchosmás se encuentran disponibles en la colección de ports.

El editor de textos más fácil y rápido de aprender es uno llamado ee, cuyo nombre proviene del inglés "easy editor"(editor fácil). Para iniciar ee se debería teclear en la línea de órdenes ee filename, donde filename es el nombre

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 vezdentro de ee, todas las posibles órdenes para manipular las funciones del editor se presentan en la parte superior de lapantalla. El carácter acento circunflejo ^ representa a la tecla de control en el teclado, o sea que ^e significa pulsarsimultá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 sidomodificado.

FreeBSD viene también con editores de texto mucho más potentes. Por ejemplo, vi como componente del sistemabásico y emacs o vim como parte de la colección de ports. Estos editores ofrecen mucha más funcionalidad ypotencia a expensas de un aprendizaje un poco más complicado. De cualquier manera, si se planea editar muchostextos, aprender un editor más potente como vim o emacs le ahorrará mucho tiempo a largo plazo.

3.6. Para más información

3.6.1. Páginas de manualLa documentación más exhaustiva de FreeBSD se encuentra en la forma de páginas de manual. Casi todos losprogramas del sistema vienen con un sucinto manual de referencia explicando el funcionamiento básico y losdiferentes argumentos. Estos manuales pueden ser revisados con el programa man. El uso del programa man essencillo:

% man command

command es el nombre del programa del que se quiere saber algo. Por ejemplo, para saber algo acerca del programals tecléese:

% man ls

El manual en línea está dividido en secciones numeradas:

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 aman 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ónconcreta del manual en línea se sitúan tradicionalmente entre paréntesis en la documentación impresa, de tal maneraque 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 serecuerda el nombre del programa? Se puede usar man para que realice una búsqueda mediante palabras clave en lasdescripciones 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 quenarices hacen realmente, hágase un sencillo:

% cd /usr/bin% man -f *

o

% cd /usr/bin% whatis *

que hace exactamente lo mismo.

3.6.2. Archivos de información GNUFreeBSD incluye muchas aplicaciones y utilidades producidas por la Free Software Foundation (FSF). De maneraadicional a las páginas de manual estos programas vienen con documentos de hipertexto más detallados, llamadosarchivos info, que pueden ser revisados con el programa info o, si se ha instalado emacs, el modo "info" de emacs.

Para usar el programa info(1) simplemente tecléese:

% 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: Paquetesy Ports

4.1. SinópsisFreeBSD esta colmado de una excelente colección de herramientas de sistema, como parte del sistema base. A pesarde esto, existe gran cantidad de cosas que uno requiere hacer para poner las cosas realmente en marcha, para lo cualse necesita instalar software adicional de terceros. FreeBSD ofrece dos tecnologías complementarias para instalarsoftware de terceros en nuestro sistema: la Colección de Ports de FreeBSD y Paquetes binarios. Cualquiera de losdos 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á:

• Como instalar paquetes binarios de software de terceros.

• Como compilar software de terceros desde la Colección de Ports.

• Como remover paquetes o ports instalados previamente.

4.2. Generales sobre la Instalación de SoftwareSi usted ha usado un sistema Unix con anterioridad, sabrá que el procedimiento típico para instalar software deterceros es algo similar a esto:

1. Descargar el software, que puede distribuirse en formato de código fuente, o binario.

2. Desempacar el software de su formato de distribución (normalmente en un tarball comprimido ya sea concompress(1) o gzip(1)).

3. Ver la documentación (quizás un fichero README, o los ficheros del subdirectorio doc/) para ver como instalarel software.

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

5. Instalar y probar el software.

Y esto solamente si todo marcha bien. Si usted esta instalando un software que no ha sido creado específicamentepara 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 leprovee de dos tecnologís que le pueden ahorrar gran cantidad de tiempo y esfuerzo: los paquetes y ports. ALmomento 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 paquetescontienen copia de binarios pre-compilados de la aplicación, así como cualquier fichero de configuración necesario odocumentación. Los paquetes descargados, pueden ser manipulados con los comandos de manejo de paquetes deFreeBSD, tales como: pkg_add(1), pkg_delete(1), pkg_info(1), etc.

28

Capítulo 4. Instalando Aplicaciones: Paquetes y Ports

EL instalar una aplicación nueva puede realizarse con un simple comando.

Por otro lado un Port de FreeBSD, es una colección de ficheros diseñados para automatizar el proceso decompilación del software, desde el código fuente.

Recuerde que existen ciertos pasos que deberá llevar a cabo para efecto de compilar un programa por usted mismo(desempacar, parchar, compilar e instalar). Los ficheros que conforman un port, permiten automatizar esto por usted.Usted ejecuta un conjunto de comandos simples y el código fuente es descargado, desempacado, parchado,compilado e instalado.

De hecho, el sistema de ports también se puede usar para crear paquetes que posteriormente manipule con pkg_add

y las otras utilidades del manejo de paquetes que veremos en breve.

Tanto el sistema de ports como el de paquetes entienden las dependencias. Suponga que desea instalar una aplicaciónque depende de que una librería específica este instalada. Tanto la librería como la aplicación existen en FreeBSDcomo paquete o port. Si utiliza el comando pkg_add o el sistema de ports para instalar la aplicación, ambos notaranque la librería no esta instalada, y procederán a instalar la librería en primer término.

Dado que ambas tecnologís son similares, quizás se pregunte por que FreeBSD se toma la molestía de contar conambas. Los Paquetes y los Ports cuentan con sus propias fortalezas, y cual utlizar dependerá de sus preferencias.

Beneficios de los Paquetes

• El típico fichero tarball de un paquete, es normalmente más pequeño que el tarball comprimido que cuenta con elcódigo fuente del software.

• Los paquetes no requiere de compilación adicional. Este punto puede ser de gran importancia, principalmente enequipos lentos, cuando compila grandes aplicaciones tales como Mozilla, KDE, o GNOME.

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

Beneficios del Sistema de Ports

• Normalmente los paquetes son compilados con opciones conservadoras, en virtud del gran numero de equiposdonde serán instalados. Al instalar desde el port, usted puede editar las preferencias para (por ejemplo) ejecutarsebajo un procesador Athlon o Pentium III.

• Algunas aplicaciones opciones relacionadas con lo que pueden y lo que no pueden hacer. Por ejemplo Apachepuede ser configurado con una gran variedad de opciones. Al compilarlo desde los ports usted no tiene por queaceptar todas, puede seleccionar cuales opciones desea.

En algunos casos, existen varios paquetes para la misma aplicación con diferentes opciones. Por ejemplo,Ghostscript esta disponible como paquete ghostscript o bien como paquete ghostscript-nox11,dependiendo si usted cuenta o no con el servidor X11. En este caso decidir puede ser sencillo, pero esto se puedevolver un problema si cuenta con más de una o dos opciones al momento de la compilación.

• Las condiciones de licenciamiento de algunas aplicaciones, prohiben la distribución de binarios. Solo permiten ladistribució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 ylocalizar 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 partesprestadas (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<[email protected]>.

El resto de este capítulo le explicará como usar los ports y paquetes para instalar software de terceros en FreeBSD.

4.3. Localizando su AplicaciónAntes de poder instalar cualquier software, usted debe saber que desea instalar y como se llama dicha aplicación.

La lista de software disponible para FreeBSD crece constantemente. Afortunadamente existen varias formas delocalizar lo que busca:

• El sitio web de FreeBSD mantiene una base actualizada de todas las aplicaciones disponibles para FreeBSD, en ladirección http://www.FreeBSD.org/ports/ (../../../../ports/index.html). Esta base esta segmentadas por categorías, yusted 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 lasaplicaciones del árbol de ports, y le permite “observar” uno o más ports, y le enviará un correo cada vez que seactualicen.

• 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, paraver si la aplicación ha sido portada a FreeBSD.

4.4. Usando el Sistema de PaquetesContribuido porChern Lee.

4.4.1. Instalando un PaquetePuede usar la utilidad pkg_add(1) para instalar software de un paquete bajo FreeBSD, desde un fichero local o desdeun servidor remoto que esta en red.

Ejemplo 4-1. Descargando un Paquete e Instalandolo Localmente

# ftp -a ftp2.FreeBSD.orgConnected 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 [email protected] 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

250 CWD command successful.ftp> get lsof-4.56.4.tgzlocal: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz200 PORT command successful.150 Opening BINARY mode data connection for ’lsof-4.56.4.tgz’ (92375 bytes).100% |**************************************************| 92375 00:00 ETA226 Transfer complete.92375 bytes received in 5.60 seconds (16.11 KB/s)ftp> exit# pkg_add lsof-4.56.4.tgz

Si usted no cuenta con una fuente local de paquetes (como pudiese ser un CDROM de FreeBSD), pudiese ser que sumejor alternativa sea usar pkg_add(1). Esto provocará que la utilidad determine automáticamente el formato delobjeto 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, queincluyen FTP_PASSIVE_MODE, FTP_PROXY y FTP_PASSWORD. Quizás deba modificar alguna de estas, si seencuentra detrás de un firewall, o bien usar un proxy FTP/HTTP. Vea la página de ayuda fetch(3) para una listacompleta. También puede notar que en el ejemplo anterior usamos lsof en vez de lsof-4.56.4. Cuando hacemosuso 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 enftp://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 eldirectorio /packages. El orden de dicho directorio, es similar al árbol de /usr/ports. Cada categoría cuenta consu 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 depaquetes/ports.

4.4.2. Eliminando un PaquetePara eliminar un paquete previemante instalado, utilice la utilidad pkg_delete(1).

# pkg_delete xchat-1.7.1

4.4.3. Manejo de Paquetespkg_info(1) es una utilidad que muestra y describe todos los paquetes que tenemos instalados.

# pkg_infocvsup-16.1 A general network file distribution system optimized for CVdocbook-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 lasversiones actuales del árbol de ports.

# pkg_versioncvsup =docbook =...

Los símbolos de la segunda columna, nos indican la edad relativa de la versión instalada, comparada con la versióndisponible 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 árbollocal de ports.

� La versión instalada es más reciente que la que seencuentra en el árbol local de ports (probablemente elárbol de ports esta desactualizado).

? El paquete instalado no se ha localizado en el índice(index) de los ports.

* Existen multiples versiones del paquete.

4.4.4. MiscelaneosToda 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.

4.5. Usando la Colección de PortsLa siguiente sección le provee de las instrucciones básicas para instalar o remover programas de su sistema, usandola Colección de Ports.

4.5.1. Obteniendo la Colección de PortsAntes de poder instalar ports, primero debe de hacerse de la Colección de Ports— que escencialmente estacompuesta de ficheros Makefiles, parches y ficheros con la descripción de los ports, ubicados en /usr/ports.

Cuando instaló su sistema FreeBSD, el programa Sysinstall le pregunto si deseaba instalar la Colección de Ports. Sicontesto que no, puede seguir estas instrucciones para obtener dicha colección:

Metodo por Sysinstall

Este metodo implica el uso del programa sysinstall nuevamente, para instalar Colección de Ports.

32

Capítulo 4. Instalando Aplicaciones: Paquetes y Ports

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

# /stand/sysinstall

2. Posicionese en la opción Configure, y presione Enter.

3. Seleccione la opción Distributions, y presione Enter.

4. Seleccione la opción ports, y presione la Barra Espaciadora.

5. Dirijase a la opción Exit, y presione Enter.

6. Seleccione el medio de instalación deseado, tal como CDROM, FTP y tal.

7. Siga los menus para salir de sysinstall.

El metodo alternativo para obtener y mantener actualizada la Colección de Ports, es usando CVSup. Lea el ficherode ports para CVSup, en /usr/share/examples/cvsup/ports-supfile. Vea el capítulo Usando CVSup paraver más información en el uso de CVSup y del fichero mencionado.

Metodo por CVSup

Este es un metodo rápido de obtener la Colección de Ports usando CVSup. Si desea mantener su árbol de portsactualizado, 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 nuevaubicació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 unalista completa de los servidores CVSup.

5. Ejecute cvsup:

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

6. Al ejecutar esto posteriormente, se descargaran las actualizaciones de la Colección de Ports.

4.5.2. Instalando PortsAl hablar de la Colección de Ports, lo primero que debemos comentar es; a que nos referimos cuando hablamos deun “esqueleto” (skeleton). En sí mismo, un esqueleto de port, es una serie mínima de ficheros, que le indican aFreeBSD como compilar e instalar un programa. Cada esqueleto incluye:

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

• Un fichero distinfo. Este fichero contiene información de los ficheros que debe ser descargados para efecto decompilar el programa, así como el identificador checksum, para asegurarse se han descargado correctamente, sincorrupciones.

• Un directorio files. Este directorio contiene los parches necesarios para compilar e instalar en su sistemaFreeBSD. Básicamente, los parches son pequeños ficheros, que incluyen algunos cambios. Estos son en formatode 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 generadospor 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 indicaal 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 manejarsituaciones especiales. Si desea saber más detalles al respecto, o bien de ports en general, vea el libro FreeBSDPorter’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 primerport. 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. Existenvarias 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 elprograma que desea instalar. Si se encuentra en su sistema, se le indicara donde se localiza, tal como:

# whereis lsoflsof: /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 deports. 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 delprograma que desea encontrar. Por ejemplo, si busca lsof:

# cd /usr/ports# make search name=lsofPort: lsof-4.56.4Path: /usr/ports/sysutils/lsofInfo: Lists information about open files (similar to fstat(1))Maint: [email protected]: sysutilsB-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 virtudde que esta le indica la ubicación del programa. El resto de la información no es necesaria para la instalación, por loque no se verá aqui.

Para una búsqueda más profunda, puede usar el comando make search key=cadena donde cadena es alguntexto a buscar. Esto busca nombres de ports, descripciones y dependencia y puede usarse para buscar ports que serelacionan 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” arrojaranlos mismos resultados.

Nota: Usted debe ser usuario root , para instalar ports.

Ahora que hemos encontrado un port que deseamos instalar, estamos listos para llevar a cabo la instalación. El portincluye las instrucciones necesarias para compilar el código fuente, pero no contiene el código. Puede obtener elcódigo de un CDROM o desde Internet. El código fuente es distribuido de cualquier manera que el autor del softwarelo desee. Frecuentemente esto es en un fichero tar.gz, pero puede estar comprimido con algun otro programa o dehecho 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.

4.5.2.1. Instalando Ports desde un CDROM

Los CDROMs oficiales del Proyecto de FreeBSD, ya no incluyen distfiles. Estos ocupan gran espacio, que en sulugar se ha usado para incluir paquetes precompilados. CDROMs como el PowerPak de FreeBSD, si inlcuyendistfiles, y puede ordenar estos de distribuidores como FreeBSD Mall (http://www.freebsdmall.com/). Esta secciónasume que usted cuenta con un juego de CDROMs de FreeBSD.

Coloque su CDROM en la unidad correspondiente. Montelo en /cdrom. (Si utiliza un punto de montaje diferente lainstalación no será exitosa). Para comenzar dirijase al directorio donde se localiza el port que desea instalar:

# cd /usr/ports/sysutils/lsof

Una vez que este en el directorio lsof, verá el esqueleto del port. El próximo paso es la compilación del port. Estolo hacemos, simplemente tecleando make en la línea de comandos. Una vez que ha hecho esto, verá algo similar a losiguiente:

# 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 elport. Para efecto de instalarlo, simplemente debemos añadir una palabra al comando make, y esa palabra esinstall:

# 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 withincreased privileges.

#

Una vez que regrese a la línea de comandos, le será posible ejecutar la aplicación que recien instalo. Dado que elprograma lsof se ejecuta con privilegios, nos aparece una advertencia de seguridad. Debe tomar nota de cualquierotra 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 makey make install en dos pasos diferentes.

Nota: Algunos shells cuentan con un cache de los comandos disponibles bajo los directorios incluidos en lavariable de entorno PATH, para agilizar las operaciones de búsqueda de los ejecutables de estos ficheros. Siusted esta haciendo uso de alguno de estos shells, puede usar el comando rehash una vez que ha terminadode instalar el port, para poder hacer uso de su nuevo programa. Esto es válido para ambos shells que formanparte 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 elCDROM. 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 elCDROM, deberá encontrarse conectado a Internet, para poder hacerlo (vea la siguiente sección).

4.5.2.2. Instalando Ports desde Internet

Como en la sección anterior, en este sección se asume que usted cuenta con una conexión activa a Internet. Si no esasí, deberá de llevar a cabo la instalación por medio de CDROM, como se menciono anteriormente.

El instalar un port desde Internet, se hace exactamente de la misma forma que se hace desde un CDROM. La únicadiferencia entre estos dos metodos, es que el fichero distfile es descargado de Internet, en lugar de tomarlo delCDROM.

Los pasos que implica son identicos:

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 withincreased 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 sonFTP_PASSIVE_MODE, FTP_PROXY, y FTP_PASSWORD. Puede ser necesario que modifique una o más de estas, si seencuentra detrás de un cortafuegos (firewall), o si requiere usar de un proxy FTP/HTTP. Vea la página de ayudafetch(3) para una lista completa de las opciones.

4.5.3. Eliminando Ports InstaladosAhora que sabe instalar ports, probablemente se este preguntando como eliminarlos, sólo en caso de que hayainstalado alguno y posteriormente se de cuenta que ha instalado el port incorrecto. Vamos a eliminar el port instalado(que era lsof, para todos aquellos que no prestaron atención). Como cuando instalamos ports, lo primero quedebemos hacer es ubicarnos en el directorio del port que deseamos eliminar, que en este caso es/usr/ports/sysutils/lsof. Una vez que se ha ubicado en este directorio, estamos listos para eliminar lsof.Esto se hace con el comando make deinstall:

# cd /usr/ports/sysutils/lsof# make deinstall

37

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 makereinstall estando en el directorio /usr/ports/sysutils/lsof.

Los comandos make deinstall y make reinstall no funcionan una vez que ha ejecutado el comando makeclean. Si desea desintalar un port, una vez que ha ejecutado make clean, deberá hacer uso del comandopkg_delete(1) como se describe en la sección de Paquetes del Handbook.

4.6. Actividades Post-InstalaciónUna vez que ha instalado una nueva aplicación, normalmente deberá leer la documentación incluida, editar losficheros de configuración necesarios, asegurarse de que la aplicación se ejecute al arrancar el sistema (si es undaemonio), etc.

Obviamente los pasos exactos para configurar cada aplicación varian de una a otra. De cualquier forma, si recien hainstalado una nueva aplicación y se pregunta “¿Y ahora qué?”, estos consejos puede que le sean de ayuda:

• Use pkg_info(1) para ver que ficheros se instalaron y donde. Por ejemplo, si recien instaló el paquete FooPackage1.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/ queson las páginas de ayuda y los del directorio etc/, que contiene los ficheros de configuración, y bajo el directoriodoc/ 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 asus 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). Deforma similar revise los ficheros de configuración de ejemplo (N. de T. Generalmente estos ficheros son aquellosque 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 preguntasfrecuentes (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.7. Resolución de ProblemasLa siguiente sección cubre algunas de las preguntas más frecuentes relacionadas a la colección de ports, y algunastécnicas básicas para la resolución de problemas, así como que hacer si encontramos un port roto.

4.7.1. Algunas Preguntas y Respuestas

1. ¿Qué no es una discusión acerca de módems?

Ah, usted debe estar pensando en puertos (ports) seriales, que se encuentran en la parte trasera de su computadora.Aqui nos referimos al término “port” como resultado de aquellas aplicaciones que han sido “portadas” de unaversión de Unix a otra.

2. ¿Qué es un parche (patch)?

Una parche (patch), es un pequeño fichero que especifíca como ir de una versión a otra. Contiene texto plano ycuenta con indicaciones similares a “delete line 23” (borrar la línea 23), “add these two lines after line 468” (añadirestas dos líneas después de la línea 468), o “change line 197 to this” (cambiar la línea 197 por esto). Tambié sonconocidos como ficheros diff, ya que son generados por el programa diff(1).

3. ¿Qué es eso de tarballs?

Es un fichero con extensión .tar o con alguna variación tal como .tar.gz, .tar.Z, .tar.bz2, o incluso .tgz.

Básicamente, es un árbol de directorio, que ha sido archivado en un solo fichero (.tar) y en ocasiones comprimido(.gz). Esta técnica se uso originalmente para archivar en cintas (que es de donde proviene su nombre; TapeARchives), pero es ampliamente usado para distribuir código fuente por todo Internet.

Usted puede ver que ficheros se encuentran archivados, o incluso extraerlos usando el programa estandar de Unixtar(1), que se incluye con el sistema base de FreeBSD, de la siguiente manera:

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

4. ¿Y un checksum?

Es un numero generado por la suma de los datos en el fichero que desea consultar. Si alguno de los caracteres cambia,el checksum ya no será igual al total, de tal suerte que esta simple 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 intentadoinstalar 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/.

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

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, nopermiten 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 esemomento. Una vez que lo haya descargado de alguno de los sitios disponibles (MASTER_SITES listados en el ficheroMakefile), puede continuar con el proceso de instalación.

6. Ya hice esto, pero cuando intento guardarlo en el subdirectorio /usr/ports/distfiles obtengo un errordiciendo algo acerca de que no cuento por los permisos.

El sistema de ports, descarga los ficheros tarball, en el subdirectorio /usr/ports/distfiles, pero muchosadministradores de sistema crean un enlace de este directorio a un servidor remoto o a una unidad local de CDROMde solo lectura. Si esta es su situación, entonces deberá especificar un directorio diferente para guardar sus ficherosdistfiles, con el siguiente comando:

# make DISTDIR=/directorio/local/con/permisos/de/escritura install

7. ¿El esquema de ports trabaja solamente si se tiene todo en /usr/ports? Mi administrador de sistema dice quetodo 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. Porejemplo;

# make PORTSDIR=/u/people/guests/wurzburger/ports install

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

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

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

Y claro esta que,

# make PORTSDIR=../ports PREFIX=../local install

combinará ambos (lo cual es muy largo para escribir aqui, pero debe darnos una buena idea).

Algunos ports que usan imake(1) (una parte del Sistema de Ventanas X) no trabajan bien con PREFIX, e insistiran eninstalar todo bajo /usr/X11R6. De forma similar, algunos ports de Perl ignoran la variable PREFIX y proceden ainstalar 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 variablesen 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 misistema, para no tener que descargarlos cada vez que deseo instalar un port. ¿Hay alguna forma de obtener todos deuna 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

Para todos los tarball de un directorio concreto haga:

# cd /usr/ports/directorio# make fetch

y para un solo port—bueno, quizás ya lo adivinó.

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 unservidor 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 enMASTER_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, peroes 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 extraidolos ficheros necesarios.

12. Estoy tratando de hacer mi propio port, y quiero poder detener el proceso, hasta que verifique que mis parchesfuncionan 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, graciaspor su esfuerzo!

13. He escuchado que algunas opciones del compilador pueden causar errores. ¿Es cierto? ¿Cómo puedo asegurarmede 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 puedeocasionar un código con errores, a menos que utilice también la opción -fno-strength-reduce (la mayoría de losports no hacen uso de la opción -O2). Usted debe poder indicarle al compilador las opciones, con algo similar a:

# make CFLAGS=’-O2 -fno-strength-reduce’ install

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 mejorforma es ejecutar make configure, y después dirijirse al directorio con el código fuente e inspeccionar y editar elfichero Makefile, pero esto puede ser tedioso si se cuenta con muchos subdirectorios, y en cada uno su propiofichero Makefile.

Lac opciones que por default utiliza el compilador de FreeBSD son muy conservadoras, por lo que si no las hamodificado, 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 pormedio 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é estapasando?

El port foo necesita algo del port bar — por ejemplo, si foo utiliza gráficos, es posible que bar cuente con libreríascon 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. Quieroeliminarlo, pero no se donde se instalaron sus ficheros. ¿Alguna pista?

No hay problema, simplemente teclee:

# pkg_delete grizzle-6.5

Otra alternativa es teclear:

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

17. Aguarda un momento, ¿Se supone que uno debe saber el numero de versión para usar este comando? Hablandoen 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 uparcade 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 algode 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 paracontar 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 delport.

Sugerencia: Es posible que obtengamos el mismo efecto, pero sin que necesariamente se llame de formarecursiva a cada Makefile. Por ejemplo, puede eliminar directamente todos los subdirectorios work/ con elcomando:

# find /usr/ports -depth -name work -exec rm -rf {} \;

19. He intentado eso y aun cuento con los tarballs o como se llamen, en el directorio distfiles. ¿Puedoeliminarlos también?

Si, si esta totalmente seguro de que ha terminado con ellos, también los puede eliminar. Estos se pueden eliminarmanualmente, 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 losports 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 dosprogramas 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 lamañ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

para terminar el trabajo.

23. En mi trabajo usamos frobble, que se encuentra la Colección de Ports, pero lo hemos editado un poco, para quese ajuste a nuestras necesidades. ¿Existe alguna forma de hacer nuestro paquete, para poder distribuirlo másfacilmente 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.)

4.7.2. Ayuda! Este Port Esta Roto! (Broken)Si se encuentra con port que no trabaj como lo esperaba, existen varias alternativas, que incluyen:

1. Arreglelo!! El libro Porter’s Handbook (../porters-handbook/index.html) incluye información detallada de lainfraestructura de los "Ports", de tal forma que pueda arreglar los ports que ocasionalmente estan defectuosos oinclusive para crear y enviar su propio port!

2. Notifiquelo—por correo solamente! Envie un correo a la persona que da mantenimiento al port. Teclee makemaintainer o lea el Makefile para ver el correo de esta persona. Recuerde incluir el nombre y la versión delport (puede enviar la línea $FreeBSD: del Makefile) así como la salida del error que da el port. Si no obtienerespuesta de la persona que da mantenimiento al port, puede usar send-pr(1) para enviar un reporte de error.

3. Descargue el paquete de un servidor FTP cercano. La colección “maestra” de paquetes se localiza enftp.FreeBSD.org en el directorio de paquetes (ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/), peroasegurese primero de verificar en un servidor réplica (mirror)!. Es mas seguro que estos trabajen, a que tener quecompilar las fuentes, también es más rápido. Use el programa pkg_add(1) para instalar paquetes en su sistema.

44

Capítulo 5. El sistema X WindowEl 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 sistemaFreeBSD. Cada capítulo comienza describiendo lo que será aprendido una vez finalizada la lectura, explicandotambié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 undeterminado 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ópsisAl 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 alconfigurar lo que ocurre cuando se inicia el sistema, permitiendole seleccionar de diferentes sistemas operativosinstalados 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 deFreeBSD. Esto incluye todo lo que sucede hasta que el kernel de FreeBSD comienza con la comprobación dedispositivos y se inicializa init(8). En caso de que usted desconozca cuando ocurre todo esto, esto sucede cuando elcolor 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 elproceso de inicio del sistema.

Só x86: El presente capítulo describe únicamente el proceso de inicio, para sistemas FreeBSD que corren enplataformas Intel x86.

6.2. El Problema que representa Arrancar el SistemaEl encender una computadora e iniciar el sistema operativo, trae consigo un dilema interesante. Por definición, lacomputadora no sabe hacer nada, hasta que el sistema operativo ha sido cargado. Esto incluye la ejecución deprogramas desde el disco duro. Así que este es el dilema; si la computadora no sabe hacer nada hasta que se cargue elsistema operativo, y el sistema operativo es un conjunto de programas que residen en el disco duro, ¿Cómo es quearranca el sistema operativo?

Este problema se asemeja a un problema del libro Las Aventuras del Barón Munchausen. Donde un personaje hacaido parcialmente en un hoyo, y ha podido salir al tomarse de las cintas de sus botas y jalarse hacia fuera. En losaños mozos de la computación, el término utilizado para hablar sobre el proceso de carga del sistema operativo eramecanismo de arranque (bootstrap), que por efectos de simplificación ahora conocemos como “arranque” (booting).

En equipos con arquitectura x86, el Sistema Básico de Entrada/Salida (BIOS) es el responsable de cargar el sistemaoperativo. Para hacer esto, el BIOS busca en el disco duro el Registro Maestro de Arranque (RMA) (N de T.Conocido como MBR—Master Boot Record), el cual debe localizarse en un lugar específico del disco. El BIOScuenta con suficiente información, para cargar y ejecutar el RMA, y asumir que el RMA puede encargarse del restode las tareas necesarias en la carga del sistema operativo.

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 RMAbuscará la primer partición del disco que pueda arrancar, y posteriormente ejecutará el código restante de dichapartició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 RMAdiferente, uno que despliegue una lista de los diferentes sistemas operativos, y le permita escoger cual de ellos deseaque se cargue. FreeBSD cuenta con un RMA de este tipo que puede ser instalado, así como otros distribuidores desistemas operativos cuentan con RMAs alternativos.

En el caso de FreeBSD, el resto del mecanismo de arranque, está dividido en tres etapas. La primer etapa esejecutada por al RMA, que sabe lo suficiente como para poner a la computadora en un estado específico y ejecutar lasegunda etapa. La segunda etapa puede hacer un poco más que esto, antes de ejecutar la tercer etapa. La tercer etapafinaliza el trabajo de carga del sistema operativo. El trabajo es dividido en tres etapas, debido a las limitantes quetiene una PC, en cuanto al tamaño de los programas a ejecutar, durante las etapas uno y dos. El encadenar estastareas, 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 usuarioinit(8), quien se asegura de que los discos se encuentren en buen estado para su uso. Posteriormente init(8) inicia laconfiguración fuente a nivel de usuario, que monta los sistemas de ficheros, configura las tarjetas de red para quepueden comunicarse en la red, y comunmente inicia todos los procesos que normalmente son ejecutados en unsistema FreeBSD al arrancar el mismo.

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

6.3.1. RMA, /boot/boot0El RMA de FreeBSD, se localiza en /boot/boot0. Este es una copia del RMA, ya que el RMA real debelocalizarse en una parte especial del disco duro, fuera de la área de FreeBSD.

El fichero boot0 es muy simple, dado que el programa en el RMA sólo puede ser de 512 bytes. Si usted ha instaladoel RMA de FreeBSD y ha instalado varios sistemas operativos en sus discos duros, entonces al momento de arrancarel sistema, visualizará una pantalla similar a la siguiente.

Ejemplo 6-1. Pantalla boot0

F1 DOSF2 FreeBSDF3 LinuxF4 ??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 biendesea reemplazar su RMA actual con el RMA de FreeBSD, entonces puede utilizar los siguientes comandos.

# fdisk -B -b /boot/boot0 dispositivo

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 discoconectado al primer IDE, ad2 para el disco maestro conectado al IDE secundario, da0 para el primer disco SCSI, yasí 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 siguienteopción:

other=/dev/hdXYtable=/dev/hdbloader=/boot/chain.blabel=FreeBSD

lo que permitirá el arranque de FreeBSD y Linux, por medio de LILO. En nuestro ejemplo hemos utilizado XY paraespecificar el disco utilizado y su partición. Si usted utiliza un sistema SCSI, deberá cambiar /dev/hdXY por algosimilar a /dev/sdXY , que nuevamente utiliza la sintáxis XY . La opción loader=/boot/chain.b puede omitirsesi 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 queaparezcan en pantalla.

Nota: N de T: La opción mencionada como; Leave The Master Boot Record Untouched, se mostrará “talcual” aparece en este documento, una vez que ha terminado la fase de partición del disco duro.

6.3.2. Etapa Uno, /boot/boot1, y Etapa Dos, /boot/boot2Conceptualmente las estapas uno y dos, son parte del mismo programa, en la misma área del disco. Por cuestiones deespacio se han dividido en dos, pero estas siempre se instalaran de manera conjunta.

Estas son localizadas en el sector de arranque, de la partición de arranque, que es donde boot0, o cualquier otroprograma del RMA espera encontrar el programa que dará continuación al proceso de arranque. Los ficheroslocalizados bajo el directorio /boot son copias de los ficheros reales, que se localizan fuera del sistema de ficherosde FreeBSD.

El fichero boot1 es muy simple, en virtud de que sólo puede tener un tamaño de 512 bytes, y conocer simplementedel etiquetador de discos de FreeBSD (disklabel), el cual almacena la información de las particiones, para efecto delocalizar y ejecutar boot2.

El fichero boot2 es un poco más sofisticado, y comprende lo suficiente del sistema de ficheros de FreeBSD comopara localizar ficheros en el, y puede proveer una interfaz simple, para seleccionar el kernel o cargador que deberáejecutarse.

En virtud de que el cargador (loader) es mucho más sofisticado, y provee una configuración de arranque más sencillade utilizar, boot2 la ejecuta normalmente, una vez que ha terminado de solicitar el arranque del kernel directamente.

Ejemplo 6-2. Pantalla de boot2

���FreeBSD/i386 BOOT

49

Capítulo 6. El Proceso de Arranque en FreeBSD

Default: 0:ad(0,a)/kernelboot:

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 primerpartición del disco Mastro—Primario.

Modo Peligrosamente DedicadoSi sólo utiliza el nombre del disco, tal como ad0, al usar el comandodisklabel(8) creará un disco peligrosamente dedicado, sin partición alguna. Seguramente esto no es lo quedesea hacer, así que asegurese dos veces antes de presionar la tecla Return cuando utilice disklabel(8).

6.3.3. Etapa Tres, /boot/loader (cargador de arranque)El cargador es la etapa final de las tres etapas del mecanismo de arranque, y esta localizado en el sistema de ficheros,normalmente como /boot/loader.

El cargador pretende ser un metodo amistoso de configuración, utilizando una serie de comandos integrados de fáciluso, respaldado por un intérprete más poderoso, con una serie de comandos de mayor complejidad.

6.3.3.1. Flujo del Programa Cargador

Durante la inicialización del sistema, el cargador hará una comprobación en busca de una consola y discos, y sabrade que disco se encuentra arrancando. Establecerá las variables necesarias, y posteriormente es iniciado el intérpretedonde se pueden ingresar comandos desde un fichero script o de manera interactiva.

Posteriormente el cargador leerá el fichero /boot/loader.rc, que por default lee la información del fichero/boot/defaults/loader.conf que a su vez, establece las variables correspondientes y verifica en el fichero/boot/loader.conf los cambios locales que se hayan hecho, para establecer valores de las variables modificadas.Una vez llevado a cabo esto, loader.rc actua sobre estas variables, cargando cualquier módulo y kernelseleccionado.

Finalmente, y por default, el cargador hace una pausa contando 10 segundos y en espera de que al presionar una teclase interrumpa el proceso, de no ser así, procederá a arrancar el kernel. En el caso de que al hacer esta pausa, se hayapresionado una tecla (diferente de Return), el proceso será interrumpido y se nos mostrará un interprete decomandos (prompt), que entiende el conjunto de comandos de fácil-uso, y donde el usuario puede ajustar ciertasvariables, cargar y descargar todos los modulos, y finalmente arrancar o reiniciar el sistema.

6.3.3.2. Comandos Internos del Cargador

A continuación se presentan los comandos más comunes del cargador. Para ver una descripción detallada de losmismos, por favor consulte la página de ayuda loader(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. Despliegauna cuenta regresiva, y el tiempo dado es de 10 segundos.

boot [-opciones] [nombre_del_kernel]

Procede a iniciar el kernel de manera inmediata, con las opciones dadas, si es que fuera el caso y el kernelespecificado, si es que se especifica alguno.

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 hemosmodificado 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 esindex, 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 errordetendrá inmediatamente al comando include.

load [-t tipo] fichero

Carga el kernel, modulo del kernel, o el fichero del tipo dado, en base al fichero especificado. Cualquierargumento que se añada, será pasado al fichero.

ls [-l] [ruta]

Despliega un listado de todos los ficheros que se localizan en la ruta especificada, o en el directorio raíz, si esque 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 incluyela 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 LINEASmostradas.

reboot

Reinicia el sistema de forma inmediata.

set variableset 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.

6.3.3.3. Ejemplos de Uso del Cargador

He aqui unos ejemplos prácticos sobre el uso correcto del cargador.

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

boot -s

• Para descargar su kernel usual y sus módulos correspondientes, y posteriormente cargar su kernel anterior (ocualquier otro):

unloadload kernel.old

Puede utilizar kernel.GENERIC para referirse al kernel generico actual que viene con la instalación, o bien puedeutilizar kernel.old para hacer referencia al kernel anterior (por ejemplo, cuando ha actualizado su sistema o harecompilado su propio kernel).

Nota: Utilice lo siguiente para cargar sus módulos actuales con otro kernel:

unloadset kernel="kernel.old"boot-conf

• Para cargar un escrito de configuración (script que de forma automática hará todo lo que normalmente hace ustedde forma manual al momento de ejecutarse el configurador de arranque):

load -t escrito_de_configuración /boot/kernel.conf

6.4. Interacción con el Kernel Durante el ArranqueUna vez que el kernel ha sido iniciado, ya sea por el cargador (que es lo común) o bien por boot2 (sobrepasando elcargador), examinará las opciones de arranque, en busca de cambios, y ajustar su comportamiento en caso de sernecesario.

6.4.1. Opciones de Arranque del KernelHe aqui las opciones de arranque más comunes:

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 ficherosraíz.

-C

arranque desde una unidad de CDROM.

-c

ejecuta UserConfig, la utilidad de configuración de arranque del kernel.

-s

arranca el sistem en modo mono-usuario.

-v

imprime mensajes informativos durante el arranque del kernel

Nota: Existen otras opciones de arranque, por favor vea la página de ayuda boot(8) para más información alrespecto.

6.5. Init: Inicialización del Proceso de ControlYa que el kernel ha finalizado de arrancar, pasará el control a un proceso de usuario llamado init, el cual se localizaen /sbin/init, o bien en la ruta especificada por la variable de entorno init_path del cargador.

6.5.1. Secuencia Automática de ReinicioLa secuencia automática de reinicio se asegura de que los sistemas de ficheros disponibles en el sistema seanconsistentes. Si no lo son, y el programa fsck no puede arreglar estas inconsistencias, init envia el sistema a modomonousuario, de tal forma que el administrador pueda ingresar en él y arreglar los problemas directamente.

6.5.2. Modo Mono-UsuarioA este modo se puede llegar por medio de la secuencia automática de reinicio, o por medio de la opción -s en elarranque de usuario o al establecer la variable boot_single en el cargador.

También desde el modo multi-usuario se puede acceder, al utilizar el comando shutdown sin la opción de reinicio(-r) o la de apagado (-h) del sistema.

Si la consola del sistema esta configurada de modo inseguro en el fichero /etc/ttys, entonces el sistemasolicitará la contraseña del superusuario (root), antes de ingresar al sistema en modo mono-usuario.

53

Capítulo 6. El Proceso de Arranque en FreeBSD

Ejemplo 6-3. Una Consola Insegura en /etc/ttys

# name getty type status comments## If console is marked "insecure", then init will ask for the root password# when going to single-user mode.console none unknown off insecure

Nota: Una consola insegura significa que usted considera como insegura físicamente su consola, por lo quedesea asegurarse de que sólo quien conoce la contraseña del superusuario puede ingresar al sistema enmodo mono-usuario, y no que desea ejecutar la consola inseguramente. Esto es, si desea contar con seguridadescoja la opción insecure, y no secure.

6.5.3. Modo Multi-UsuarioEn el caso de que init encuentre en buen estado al sistema de ficheros, o una vez que el usuario ha terminado delmodo mono-usuario, el sistema entrará al modo multi-usuario, en donde comienzan los ficheros deconfiguración-fuente del sistema.

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 detallesespecíficos del sistema desde el fichero /etc/rc.conf, y posteriormente procede a montar los sistemas de ficherosdel sistema, descritos en /etc/fstab, iniciar servicios de red, así como varios demonios del sistema, parafinalmente 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 losmismos ficheros.

6.6. Secuencia de ApagadoUna vez que el apagado sea controlado, por medio del comando shutdown, init ejecutará el escrito/etc/rc.shutdown, para posteriormente enviar a todos los procesos la señal TERM, y subsecuentemente la señalKILL a cualquiera que no haya terminado en tiempo.

54

Capítulo 7. Usuarios y administración básicade cuentas

Contributed by Neil Blakey-Milner.

7.1. SinopsisFreeBSD permite que varios usuarios usen el mismo ordenador. Obviamente, sólo uno de estos usuarios puedesentarse frente al monitor y al teclado en un momento dado 1 , pero cualquier número de usuarios puede entrar por lared 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 ygrupos de cuentas pueden emplear.

• Cómo usar grupos para facilitar la administración de cuentas.

Antes de leer este capítulo deberías:

• Entender los conceptos básicos de Unix y FreeBSD (Capítulo 3).

7.2. IntroducciónTodos los accesos al sistema se consiguen vía cuentas, y todos los procesos son ejecutados por usuarios, por ello laadministració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 lacomputadora; no puede haber dos usuarios con el mismo nombre de usuario. Existen algunas reglas para lacreación de nombres de usuario válidos documentadas en passwd(5); típicamente se usarían nombres de usuariode 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á ningunapara 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

Identificador de usuario (UID)

El UID es un numero entre 0 y 65536 que sirve para identificar unívocamente al usuario en el sistema.Internamente, FreeBSD usa el UID para identificar usuarios y cualquier comando de FreeBSD que permitaespecificar un nombre de usuario convertirá éste al UID antes de trabajar con él. Esto significa que puedes tenervarias cuentas con nombres de usuario distintos pero con el mismo UID. En lo que a FreeBSD respecta, talescuentas son un solo usuario. Es improbable que alguna vez tengas que hacer algo así.

Identificador de grupo (GID)

El GID es un número entre 0 y 65536 que sirve para identificar unívocamente el grupo principal al cualpertenece un usuario. Los grupos son un mecanismo para controlar el acceso a recursos del sistema en base alGID, en vez del UID. Esto puede reducir significativamente el tamaño de algunos ficheros de configuración. Unusuario puede pertencer a más de un grupo.

Clase de login

Las clases de login son una extensión al mecanismo de grupos que ofrecen una mayor flexibilidad a la hora deadaptar el sistema a distintos usuarios.

Tiempo de cambio de contraseña

Por defecto FreeBSD no obliga a los usuarios a cambiar su contraseña periódicamente. Se puede requerir esto adeterminados usuarios, haciendo que algunos o todos deban cambiar sus contraseñas al cabo de cierto periodode tiempo.

Tiempo de expiración de cuentas

Por defecto las cuentas en FreeBSD no expiran. Si estás creando cuentas que sabes que van a tener un tiempolimitado de vida, por ejemplo, las cuentas de los estudiantes de una escuela, entonces puedes especificar cuándoexpiran. Una vez vencido su tiempo de expiración una cuenta no puede ser usada para entrar en el sistema, sibien sus directorios y archivos serán conservados.

Nombre completo de usuario

El nombre de usuario identifica unívocamente a una cuenta para FreeBSD, pero no refleja su verdadero nombrenecesariamente. Esta información puede ser asociada a la cuenta.

Directorio home

El directorio home es el camino completo de un directorio en el sistema en el que el usuario se hallará cuandoentre. Una convención usual consiste en poner todos los directorios home en /home/nombre_de_usuario oen /usr/home/nombre_de_usuario. Los usuarios guardarían sus archivos personales en sus directorioshome, 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 variostipos de shell y los usuarios experimentados tendrán sus propias preferencias, que pueden expresarse en laconfiguración de su cuenta.

Existen principalmente tres tipos de cuentas; la cuenta de superusuario, las cuentas de usuarios del sistema, y las deusuarios. La cuenta de superusuario, normalmente llamada root, se usa para administrar el sistema sin limitacionesen los privilegios. Los usuarios del sistema utilizan servicios del mismo. Finalmente, las cuentas de usuarios sonusadas por gente real, aquellos que entran, leen correo, etcétera.

56

Capítulo 7. Usuarios y administración básica de cuentas

7.3. La cuenta superusuarioLa cuenta superusuario, normalmente llamada root, viene preconfigurada para facilitar la administración delsistema, y no debería ser utilizada para tareas cotidianas como enviar o recibir correo, exploración general delsistema, o programación.

Esto es así porque el superusuario, a diferencia de las cuentas de usuario, puede operar sin límites, y un mal uso de lacuenta de superusuario puede conllevar desastres espectaculares. Las cuentas de usuario no pueden destruir elsistema por un error, por ello es generalmente mejor utilizar cuentas de usuario normales cuando sea posible, a no serque especialmente necesites privilegios extra.

Deberías comprobar siempre un par o tres de veces los comandos que ejecutas como superusuario, ya que un espaciode más o un carácter omitido pueden significar una pérdida de datos irreparable.

Así pues, lo primero que deberías hacer después de leer este capítulo es crear una cuenta sin privilegios de usogeneral para ti si aún no la tienes. Esto aplica tanto si trabajas en una máquina con varios usuarios como si trabajasen una máquina con un solo usuario. Más adelante, en este mismo capítulo, explicamos cómo crear cuentasadicionales, y cómo cambiar de usuario normal a superusuario.

7.4. Cuentas de sistemaLos usuarios de sistema son aquéllos que corren servicios como DNS, correo, servidores web, etc. Esto es así porseguridad; si todos los servicios corrieran como superusuario podrían actuar sin ninguna restricción.

Algunos ejemplos de usuarios de sistema son daemon, operator, bind (para el DNS), y news. Con frecuencia, losadministradores de sistemas crean el usuario httpd para que ejecute los servidores web que instalan.

nobody es el usuario de sistema sin privelegios genérico. No obstante, es importante tener en cuenta que cuantosmás servicios use nobody, más ficheros y procesos estarán asociados con dicho usuario, y en consecuencia másprivilegiado será.

7.5. Cuentas de usuarioLas cuentas de usuario constituyen la principal vía de acceso al sistema para la gente real. Estas cuentas aíslan alusuario del entorno, impidiendo que pueda dañar al sistema o a otros usuarios, y permitiendo a su vez que puedapersonalizar su entorno sin que esto afecte a otros.

Cada persona que acceda a tu sistema debería tener una sola cuenta de usuario. Esto te permite averiguar quién estáhaciendo qué, evita que interfieran las configuraciones de distintos usuarios, que unos puedan leer el correo de otros,etcétera.

Cada usuario puede configurar su entorno para acomodarlo al uso que hace del sistema, utilizando shells, editores,atajos de teclado e idioma alternativos.

7.6. Modificación de cuentasExiste una variedad de comandos disponible en el entorno Unix para modificar cuentas de usuario. Los comandosmás comunes se hallan resumidos a continuación, seguidos de ejemplos más detallados de su uso.

57

Capítulo 7. Usuarios y administración básica de cuentas

Comando Resumen

adduser La aplicación de línea de comandos recomendada paraañadir nuevos usuarios.

rmuser La aplicación de línea de comandos recomendada paraeliminar usuarios.

chpass Una herramienta flexible para modificar la base de datosde usuarios.

passwd Una herramienta de línea de comandos simple paracambiar contraseñas de usuario.

pw Una herramienta potente y flexible para modificarcualquier aspecto de las cuentas de usuario.

7.6.1. adduseradduser 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 configuramosvalores por defecto para adduser y creamos nuestra primera cuenta de usuario, dado que utilizar root para usonormal del sistema es pernicioso y peligroso.

Ejemplo 7-1. Configuración de adduser

# adduser -vUse option “-silent” if you don’t want to see all warnings and questions.Check /etc/shellsCheck /etc/master.passwdCheck /etc/groupEnter your default shell: csh date no sh tcsh zsh [sh]: zshYour 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]: noDo not send messageUse passwords (y/n) [y]: y

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

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

58

Capítulo 7. Usuarios y administración básica de cuentas

Login group is “jru”. Invite jru into other groups: guest no[no]: wheelEnter password []:Enter password again []:

Name: jruPassword: ****Fullname: J. Random UserUid: 1001Gid: 1001 (jru)Class:Groups: jru wheelHOME: /home/jruShell: /usr/local/bin/zshOK? (y/n) [y]: yAdded user “jru”Copy files from /usr/share/skel to /home/jruAdd another user? (y/n) [y]: nGoodbye!#

En resumen, cambiamos la shell por defecto a zsh (una shell alternativa incluida en la colección de ports), ydeshabilitamos el envío de un mensaje de bienvenida a nuevos usuarios. Luego grabamos la configuración, creamosuna cuenta para jru, y nos aseguramos de que jru esté en el grupo wheel (de modo que puede asumir el papel deroot vía el comando su).

Nota: La contraseña que escribes no se muestra, tampoco se muestran asteriscos. Asegúrate de no entrar dosveces una contraseña equivocada.

Nota: Usa adduser sin argumentos en adelante, no necesitarás cambiar las opciones por defecto. Si elprograma te pide modificarlas sal y prueba con la opción -s.

7.6.2. rmuserPuedes usar rmuser para eliminar completamente del sistema a un usuario. rmuser efectúa los siguientes pasos:

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

2. Elimina las tareas at(1) pertenecientes al usuario.

3. Mata todos los procesos pertenecientes al usuario.

4. Elimina al usuario del fichero local de contraseñas del sistema.

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

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

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

59

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; estocomplementa 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 masivadestrucción.

Por defecto existe un modo interactivo que intenta asegurar que uno sabe lo que hace.

Ejemplo 7-2. Eliminación interactiva de cuenta con rmuser

# rmuser jruMatching password entry:jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/tcshIs this the entry you wish to remove? yRemove user’s home directory (/home/jru)? yUpdating 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. chpasschpass 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 ycontraseñas de otros usuarios con chpass.

Cuando no le pasamos más opciones, salvo un nombre de usuario opcional, chpass muestra un editor coninformación de usuario. Cuando se sale del editor la base de datos de usuarios se actualiza con la nueva información.

Ejemplo 7-3. chpass interactivo ejecutado por el superusuario

#Changing user database information for jru.Login: jruPassword: *Uid [#]: 1000Gid [# or name]: 1000Change [month day year]:

Expire [month day year]:Class:Home directory: /home/jruShell: /usr/local/bin/tcsh

60

Capítulo 7. Usuarios y administración básica de cuentas

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

Un usuario normal puede modificar un pequeño subconjunto de esta información, y sólo para sí mismo.

Ejemplo 7-4. chpass interactivo ejecutado por un usuario normal

#Changing user database information for jru.Shell: /usr/local/bin/tcshFull Name: J. Random UserOffice Location:Office Phone:Home Phone:Other information:

Nota: chfn y chsh son enlaces a chpass, como también lo son ypchpass, ypchfn, e ypchsh. El soporte paraNIS es automático, por lo que no es necesario especificar el yp antes del comando. Si esto te resulta algoconfuso no te preocupes, NIS será tratado en el Capítulo 16.

7.6.4. passwdpasswd es el comando que se usa normalmente para cambiar tu propia contraseña como usuario o, comosuperusuario, la de otros usuarios.

Nota: Los usuarios han de introducir su contraseña original antes de cambiarla para prevenir que gente noautorizada pueda hacerlo cuando no se encuentren en la consola.

Ejemplo 7-5. Cambio de tu contraseña

% passwdChanging local password for jru.Old password:New password:Retype new password:passwd: updating the database...passwd: done

Ejemplo 7-6. Cambio de la contraseña de otro usuario como superusuario

# passwd jruChanging local password for jru.New password:

61

Capítulo 7. Usuarios y administración básica de cuentas

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

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

7.6.5. pwpw(8) es una utilidad de línea de comandos para crear, eliminar, modificar, y mostrar usuarios y grupos. Hace deinterfaz a los archivos del sistema de usuarios y grupos. pw tiene un conjunto de opciones de línea de comandosbastante potente que lo hacen adecuado para su uso en scripts de shell, aunque los nuevos usuarios puede que loencuentren algo más complicado que el resto de comandos que presentamos aquí.

7.7. Limitar a los usuariosEn un sistema multiusuario es probable que no confíes en que el sistema no vaya a ser dañado por ningún usuario.

Las cuotas de disco permiten al administrador decirle al sistema de ficheros qué cantidad de espacio de disco puedeutilizar un usuario; además, ofrecen una manera rápida de comprobar el uso de disco de un usuario sin tener quecalcularlo cada vez. Las cuotas se estudian en el capítulo de quotas.

El resto de límites de recursos incluyen cantidad de CPU, memoria, y otros recursos que el usuario puede utilizar.

Las clases de login se definen en /etc/login.conf. La semántica precisa está fuera del alcance de esta sección,pero se describe con detalle en la página de manual login.conf(5). Es suficiente decir que cada usuario es asignado auna clase de login (default por defecto), y que cada clase de login tiene un conjunto de capacidades asociado. Unacapacidad de login es un par nombre=valor, donde nombre es un identificador conocido y valor una cadena detexto arbitraria que se procesa en función del nombre. Establecer clases y capacidades de login es bastante sencillo ytambién se describe en login.conf(5).

Los límites de recursos son diferentes de las capacidades de login en dos sentidos. En primer lugar, para cada límiteexiste un límite blando (actual) y uno duro. Un límite blando puede ser ajustado por el usuario o una aplicación, perono puede ser más alto que el límite duro. Éste último puede ser disminuido por el usuario pero nunca aumentado. Ensegundo lugar, la mayoría de los límites de recursos aplican a un usuario concreto por proceso, no globalmente.Nótese, no obstante, que estas diferencias vienen impuestas por cómo se tratan los límites específicamente, no por laimplementación del marco de capacidades de login (es decir, en realidad no constituyen un caso especial decapacidades de login).

Sin más, a continuación veremos los límites de recursos más comúnmente usados (el resto, junto con el resto decapacidades de login, puede encontrarse en login.conf(5)).

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ímitessobre uso de disco (p. ej., filesize, o cuotas de disco). Aun y así, se usa frecuentemente como un métodomenos severo de controlar consumo de espacio de disco, dado que los usuarios no generan ficheros core porellos mismos, y a menudo no los borran, activar este límite puede evitar que agoten el espacio de disco de quedisponen 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 semuestra 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íabastante inútil: un compilador —probablemente una tarea legítima— puede usar prácticamente el 100% dela 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 enprimer plano como los procesos en segundo plano. Por razones obvias, este límite no puede ser mayor que ellímite de sistema especificado por kern.maxproc sysctl. Obsérvese también que si asignamos un valordemasiado bajo a este límite podemos mermar la productividad de un usuario: frecuentemente es útil entrarmúltiples veces en el sistema o ejecutar pipelines. Algunas tareas, como compilar largos programas, lanzanmú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 memoriaprincipal (p. ej., ver mlock(2)). Algunos programas críticos para el sistema, como amd(8), se quedanbloqueados en la memoria principal de manera que en caso de ser llevados a swap no contribuyan a la basuradel 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 memorianormal como uso de swap. No se trata de un límite para restringir el consumo de memoria en general, pero es unbuen comienzo.

openfiles

Ésta es la máxima cantidad de archivos que un proceso puede tener abiertos. En FreeBSD, los archivos se usantambien para representar sockets y canales IPC; así, cuida de no poner este límite demasiado bajo. A nivel desistema, 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. Seoriginó como respuesta a un viejo ataque DoS que creaba muchos sockets, pero puede ser usado en general paralimitar 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 lacantidad 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 algunasrecomendaciones, 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 logindaemon.

• 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. X11de por sí consume muchos recursos, pero además contribuye a que los usuarios ejecuten más programassimultá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 50ficheros. Así, la cantidad de ficheros que un usuario puede abrir es el valor de openfiles multiplicado por elvalor 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áginasde manual relevantes: cap_mkdb(1), getrlimit(2), login.conf(5).

64

Capítulo 7. Usuarios y administración básica de cuentas

7.8. Personalizar a los usuariosLa localización es un entorno establecido por el administrador o el usuario para dar soporte a distintos lenguajes,juegos de caracteres, estándares sobre fechas y horas, etcétera. Éste tema se trata en el capítulo Localización.

7.9. GruposUn grupo es simplemente una lista de usuarios. Los grupos se identifican por su nombre de grupo y gid (ID degrupo). En FreeBSD (y en la mayoría de sistemas Unix), los dos factores que tiene en cuenta el núcleo para decidir siun proceso puede hacer algo es su ID de usuario y la lista de grupos a los que pertenece. A diferencia del ID deusuario, un proceso tiene una lista de grupos asociados. En ocasiones encontrarás menciones al "ID de grupo" de unusuario 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 concuatro campos separados por el signo dos puntos. El primer campo es el nombre de grupo, el segundo la contraseñaencriptada, el tercero el ID de grupo, y el cuarto la lista de miembros separados por comas. Puede ser editado a manosin peligro (¡suponiendo, por supuesto, que no se cometan errores de sintaxis!). Para una descripción más completade 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. Porejemplo, para añadir un grupo llamado teamtwo y luego confirmar que existe puedes usar:

Ejemplo 7-7. Añadir un grupo usando pw(8)

# 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 tienemiembros, y es por tanto bastante inútil. Cambiemos eso invitando a jru a formar parte del grupo teamtwo.

Ejemplo 7-8. Añadir a alguien a un grupo usando pw(8)

# pw groupmod teamtwo -M jru

# pw groupshow teamtwo

teamtwo:*:1100:jru

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. Elusuario es automáticamente añadido a la lista de grupos por el sistema; no constará como miembro cuando usemos elcomando groupshow con pw(8), pero sí cuando la información se consulte con id(1) u otra herramienta similar. Enotras palabras, pw(8) sólo manipula el fichero /etc/group; nunca tratará de leer datos adicionales de/etc/passwd.

Ejemplo 7-9. Determinar pertenencia a grupos con id(1)

% id jru

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

65

Capítulo 7. Usuarios y administración básica de cuentas

Como puedes ver, jru es miembro de los grupos jru y teamtwo.

Para más información acerca de pw(8), consulta su página de manual, y para más información acerca del formato de/etc/group, consulta la página de manual de group(5).

Notas1. 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 pordefecto.

66

Capítulo 8. Configurando el Kernel de FreeBSDActualizado y reestructurado por Jim Mock. Contribución original por Jake Hamby.

8.1. SinópsisEl 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 queFreeBSD se torna a un sistema más dinámico y configurable, en ocasiones es aún necesario reconfigurar yrecompilar un kernel hecho a la medida de nuestras necesidades.

Al término de este capítulo, usted sabrá:

• Por que puede ser necesario que compile un kernel personalizado.

• Como crear un fichero de configuración del kernel, o bien, editar un fichero existente.

• Como utilizar el fichero de configuración, para crear y compilar un nuevo kernel.

• Como instalar un kernel nuevo.

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

• Como resolver algunos problemas, si algo sale mal.

8.2. ¿Porqué Construir un Kernel Propio?Tradicionalmente FreeBSD ha contado con lo que se conoce como un kernel “monolítico”. Esto quiere decir que elkernel era un gran y único programa que soportaba una lista previa de dispositivos, y que si se deseaba modificar elcomportamiento del kernel, se debia compilar un nuevo kernel, y reiniciar el sistema con el nuevo kernel.

Hoy en día, FreeBSD esta moviendose rápidamente, hacía un modelo, donde la funcionalidad del kernel esta basadaen módulos, los cuales pueden ser cargados y descargados dinámicamente, de acuerdo a las necesidades del kernel.Esto permite que el kernel se adapte a nuevo hardware que sale al mercado (tal como las tarjetas PCMCIA en laslaptop), o bien el añadir nuevas funcionalidades al kernel, que no eran necesarias al momento de su compilaciónoriginal. El término coloquial para esto es KLDs.

A pesar de lo anterior, aun es necesario llevar a cabo cierta configuración estática en la configuración del kernel. Enalgunos casos esto se debe a que la funcionalidad del sistema esta tan ligada al kernel, que no puede realizarse pormedio de carga dinámica de los modulos. En otros casos puede ser simplemente por que nadie se ha tomado eltiempo, para escribir un modulo que pueda ser cargado dinámicamente por el kernel, para esa funcionalidadespecífica.

El construir un kernel propio, es uno de los más importantes rituales, que casi todo usuario de UNIX debe afrontar.Este proceso, aun cuando lleva un tiempo, traerá grandes beneficios a su sistema FreeBSD. A diferencia del kernelGENERIC, que contiene soporte para todo el hardware soportado por el sistema, un kernel propio unicamentecontiene soporte para el hardware de su PC. Esto conlleva a grandes beneficios, como son:

Nota: N de T.: El kernel GENERIC es el kernel “GENERICO” que instala el sistema por default, del cual su ficherode 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 querealmente 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 kernelGENERIC, lo cual es importante, ya que el kernel debe encontrarse presente en memoria real. Por esta razón, unkernel 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 desonido, las cuales no estan incluidas en el kernel GENERIC.

8.3. Compilación e Instalación de un KernelPersonalizadoEn primer lugar, hagamos un breve recorrido por el directorio donde se lleva a cabo la compilación del kernel. Todoslos directorios mencionados hacen referencia al directorio principal, que es /usr/src/sys, al cual tambiénpodemos acceder, mediante /sys. Existen gran cantidad de subdirectorios, que representan diferentes partes delkernel, pero el más importante para lo que deseamos hacer son arch y /conf, que es donde se llevara a cabo laedición del fichero de configuración y la compilación (compile) del mismo, que es el punto de partida para lapersonalización del kernel. El directorio arch representa la arquitectura del sistema, por lo que puede ser i386,alpha o bien pc98 (una arquitectura alternativa, similar a PC muy popular en Japón). Todo lo que existe dentro deun directorio de una arquitectura en particular, es específico para dicha arquitectura; el resto del código es comúnpara todas las plataformas a las que FreeBSD es potencialmente portable. Note la organización lógica de la estructurade los directorios, con cada soporte para dispositivos, sistema de ficheros y opciones, en su propio subdirectorio.

Nota: Si no existe el directorio /usr/src/sys en su sistema, quiere decir que las fuentes del kernel no fueroninstaladas. La forma más sencilla de hacer esto es mediante el programa /stand/sysinstall, siendo usuarioroot, y seleccionando Configure, posteriormente Distributions, después src y finalmente sys. Si a usted nole agrada mucho utilizar sysinstall, y tiene acceso a un CDROM “oficial” de FreeBSD, entonces puede instalarlas 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 quedesee. 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, condiferente 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 unamala idea. Si usted esta experimentando problemas, puede ser tentador simplemente eliminar /usr/src ycomenzar de nuevo. Cinco segundos después de haber hecho esto, se dará cuenta de que ha eliminado elfichero 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 alfichero 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 resultadoerrores 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ónreciente probablemente el único editor disponible sea vi, del cual es complicado explicar su uso detallado en estedocumento, pero existen bastantes libros que detallan su uso, puede ver algunos en la bibliografía. De cualquiermanera FreeBSD ofrece un editor de uso muy sencillo, llamado ee, el cual, si usted es principiante, será el editor desu elección. Sientase en libertad de modificar los comentarios en la parte superior, para que reflejen su configuracióno 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 estefichero le será muy familiar. Por otro lado, si usted esta emigrando de otros sistemas operativos como DOS, el ficheroGENERIC puede parecerle intimidante, así que siga las instrucciones descritas en El Fichero de Configuracióndetenidamente y con sumo cuidado.

Nota: Asegurese siempre de verificar el fichero /usr/src/UPDATING, antes de realizar cualquier actualizacióndel sistema, en el caso de que se sincronice con el source-tree, para contar con la última versión de FreeBSD. Elfichero /usr/src/UPDATING cuenta con toda la información importante, relacionada con actualizaciones. Al serdistribuida 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 parallevar esto a cabo, y el que usted utilice dependerá del por que esta personalizando su kernel, así como la versión deFreeBSD que este utilizando.

• Si unicamente ha instalado el código fuente del kernel, utilice el procedimiento 1.

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

• Si esta personalizando su kernel, sin actualizar el código fuente (quizás solo para añadir una nueva opción comoIPFIREWALL) puede utilizar cualquier de los dos procedimientos.

• Si esta reconstruyendo su kernel, como parte del proceso de actualización por medio de make world, entoncesutilice el metodo 2.

69

Capítulo 8. Configurando el Kernel de FreeBSD

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

1. Ejecute config(8) para generar el código fuente del kernel.

# /usr/sbin/config MYKERNEL

2. Cambie de ruta, hacia el directorio de compilación.

# cd ../../compile/MYKERNEL

3. Compile el kernel.

# make depend# make

4. Instale el nuevo kernel.

# make install

Procedimiento 2. Compilando el kernel de una “nueva” forma

1. Dirijase al directorio /usr/src .

# cd /usr/src

2. Compile el kernel.

# make buildkernel KERNCONF=MYKERNEL

3. Instale el nuevo kernel.

# make installkernel KERNCONF=MYKERNEL

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

Si usted aun no ha actualizado su sistema fuente (“source tree”) (no ha ejecutado CVSup, CTM o bien usadoanoncvs), entonces deberia utilizar la siguiente secuencia de comandos; config, make depend, make, makeinstall.

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 algunproblema, hay algunos consejos para la resolución de problemas, al final de este capítulo. Asegurese de leer lasecció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 debacrear los ficheros de dispositivos, bajo el directorio /dev, antes de poder utilizarlos. Para más información alrespecto, revise la sección "Creando Ficheros de Dispositivos" más adelante en este capítulo.

70

Capítulo 8. Configurando el Kernel de FreeBSD

8.4. El Fichero de ConfiguraciónEn realidad el formato general de un fichero de configuración es simple. Cada línea contiene una palabra clave conuno o más argumentos. Para efecto de simplificar, la mayoría de las líneas contienen sólo un argumento. Cualquiercosa que precede a # es considerado como un comentario, y por lo tanto es ignorado. La siguiente sección describecada palabra clave, en el orden que normalmente encontrará en el fichero GENERIC, aunque algunas palabras claveshan sido agrupadas de acuerdo a su uso (como es el caso de lo que se refiere a redes), aun cuando las podrá encontrardispersas en el fichero GENERIC. Una mayor lista de opciones, así como explicaciones detalladas de cadadispositivo, podrán encontrarse en el fichero de configuración de ayuda LINT, localizado en el mismo subdirectorioque GENERIC. Si usted tiene alguna duda sobre si es necesaria alguna línea u opción, consulte el fichero LINT.

El uso de numeros: En todas las versiones de FreeBSD posteriores e incluyendo la 3.X, el proceso de config(8)requiere que el uso de numeros como cadenas de texto, en el fichero de configuración, deben encontrarse entrecomillas dobles.

Este requerimiento ha sido removido, desde la rama 4.X, que es la que estamos cubriendo en este libro, por loque 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 aclaracionesdonde 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 ;), hedecidido dejar lo que corresponde al fichero GENERIC, tal como usted lo verá, y sólo traducir los comentariosprevios de cada opción. En caso de que algún comentario del fichero sea traducido (por claridad), favor deconsiderarlo 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_CPUcpu I486_CPUcpu I586_CPUcpu I686_CPU

Lo anterior especifíca el tipo de procesador con que cuenta su sistema. En este caso puede dejar varias opciones (porejemplo en el caso de que no este seguro si su procesador es I586_CPU o bien I686_CPU), de cualquier forma paraun kernel personalizado siempre es preferible especificar el tipo de procesador con que cuenta su sistema. Si usted noesta seguro del tipo de procesador con que cuenta su sistema, puede utilizar el comando dmesg, para ver losmensajes 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 EV4cpu 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 elejemplo anterior; MYKERNEL. El valor que asigne en la opción ident, será el nombre que aparecerá en la pantalla, almomento de iniciar el kernel del sistema, de tal forma que es recomendable personalizar este parámetro, más aun siusted piensa contar con un kernel diferente al usual (por ejemplo, en el caso de que desee contar con un kernelexperimental).

maxusers n

La opción maxusers, establece el tamaño de un numero importante de tablas del sistema. Este numerosupuestamente 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 queexplicitamente le asigna el valor de 0 a esta opción1. Si usted esta utilizando una versión de FreeBSD anterior, o bienusted desea controlar este parámetro, deberá establecer cuando menos un valor de 4, especialmente si usted utiliza elSistema de Ventanas X, o compila software. La razón de esto es que una de las tablas más importantes que controlamaxusers, 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 alarrancar el Sistema de Ventanas X. Incluso una simple tarea, como leer una pagina de ayuda man, incia como nueveprocesos, para efecto de filtrar, descomprimir y visualizar. Establecer un valor de 64 a maxusers, le permitiraejecutar 1044 procesos simultaneamente, que debe ser suficiente para casi cualquier uso. De cualquier forma, si llegaa notar su tabla de proc llena (proc table full), al tratar de iniciar algún proceso, o bien esta ejecutando un servidorcon bastantes usuarios simultaneos (como ftp.FreeBSD.org), siempre puede incrementar este numero yrecompilar su kernel.

Nota: La opción maxusers no limita el numero de usuarios que pueden ingresar al sistema. Simplementeestablece valores, para el tamaño de varias tablas del sistema, a valores razonables, considerando el numero deusuarios 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 .

# Floating point support - do not disable.device npx0 at nexus? port IO_NPX irq 13

El dispositivo npx0 es la interfaz del punto flotante en FreeBSD, el cual es parte del hardware como co-procesador obien el software emulador matemático. Este no es opcional.

# Pseudo devices - the number indicates how many units to allocate.pseudo-device loop # Network loopback

Este es el dispositivo genérico de TCP/IP, loopback. Si usted hace telnet o FTP a localhost (ej. 127.0.0.1), elenlace 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ásinformación al respecto.

#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbolsoptions MATH_EMULATE #Support for x87 emulation

Mediante esta línea podemos indicarle al kernel que simule un co-procesador matemático, si su maquina no cuentacon uno (386 o 486SX). Si usted cuenta con una 486DX, o una 387 o 486SX (con chip separado de 387 o 487), omás actual (Pentium, Pentium II, etc.), puede comentar esta línea sin problemas (N de T. Para comentar las líneas deeste 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. Siusted no cuenta con un co-procesador metamático, y requiere la mayor exactitud posible, es recomendable quemodifique esta opción a quedar como GPL_MATH_EMULATE, para usar el soporte de GNU, que no se incluye poromisión, por cuestiones de licencia.

options INET #InterNETworking

Soporte para redes. Deje esta opción incluida, aun si no planea esta conectado a una red. La mayoría de losprogramas requieren cuando menos conexión con el dispositivo loopback (ej. al hacer conexión con su propiamaquina), asi que esto es obligatorio.

options INET6 #IPv6 communications protocols

Esto habilita los protocolos de comunicación IPv6.

options FFS #Berkeley Fast Filesystemoptions FFS_ROOT #FFS usable as root device [keep this!]

Esto es el sistema de ficheros básico del disco duro. Incluyalo si desea arrancar su sistema del disco duro.

options UFS_DIRHASH #Improve performance on big directories

Esta opción incluye código para acelerar las operaciones del disco duro en directorios de gran tamaño, aunque estoimplique 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 esimportante conservar la memoria o bien si la velocidad del disco duro no es tan importante, tal como un firewall.

options SOFTUPDATES #Enable FFS soft updates support

Esta opción habilita soft updates en el kernel, lo cual acelera la escritura en los discos. Esta opción se habilita pordefault desde la rama 4.X, pero es posible que no este habilitada. Revise la respuesta que le da mount(8) paraverificar si cuenta con esta opción. Si no ve la opción soft-updates, deberá activarla usando tunefs(8) o newfs(8) paranuevos sistemas de ficheros.

options MFS #Memory Filesystemoptions MD_ROOT #MD is a potential root device

Este es el sistema de mapeo de memoria. Esto basicamente es el mapeo de la memoria RAM del disco para accesorápido y almacenar ficheros temporales, útil si cuenta con bastante memoria swap, de la cual desee tomar ventaja. Unsitio perfecto para montar la partición MFS es el directorio /tmp, esto lo puede hacer añadiendo la siguiente línea alfichero /etc/fstab:

/dev/ad1s2b /tmp mfs rw 0 0

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

options NFS #Network Filesystemoptions NFS_ROOT #NFS usable as root device, NFS required

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.

options MSDOSFS #MSDOS Filesystem

El sistema de ficheros de MS-DOS. A menos de que planee montar una partición con formato de DOS, al momentode arrancar el sistema, puede deshabilitar esta opción sin problema alguno. Automáticamente será cargado la primeravez que monte una partición DOS, como se explicó anteriormente. Así mismo la excelente aplicación mtools (queesta disponible de la colección de ports), le permite accesar a diskettes con formato DOS, sin necesidad de montarloso desmontarlos (y no requiere para nada de MSDOSFS).

options CD9660 #ISO 9660 Filesystemoptions CD9660_ROOT #CD-ROM usable as root, CD9660 required

El sistema de ficheros ISO 9660 para CDROMs. Comente esta opción si usted no cuenta con una unidad de CDROMo bien sólo monta CDs de datos ocasionalmente (en virtud de que será cargado dinámicamente la primera vez que seutilice para un CD de datos). Los CDs de audio no requieren de esta opción.

options PROCFS #Process filesystem

El sistema de ficheros de procesos. Este es un sistema de ficheros “virtual”, montado en /proc, que permite queprogramas como ps(1) le den mayor información sobre los procesos que se están ejecutando.

options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]

Compatibilidad con 4.3BSD. Conserve esta opción; algunos programas se comportaran de una forma extraña si estaopción es comentada.

74

Capítulo 8. Configurando el Kernel de FreeBSD

options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI

Esta opción le indica al kernel hacer una pausa de 15 segundos antes de realizar una prueba en cada dispositivo SCSIde sus sistema. Si usted sólo cuenta con dispositivos IDE, puede ignorar esta opción, de otra forma quizás deseereducir el tiempo a 5 segundos, para efecto de acelerar el arranque. Claro esta, que si hace esto, y FreeBSD tieneproblemas para reconocer sus dispositivos SCSI, deberá incrementar este valor nuevamente.

options UCONSOLE #Allow users to grab the console

Permite el uso de la consola, que es muy útil para usuarios del sistema X. Por ejemplo, puede crear una consolaxterm, 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.

options USERCONFIG #boot -c editor

Esta opción le permite ejecutar el editor de configuración, desde el menú de arranque.

options VISUAL_USERCONFIG #visual boot -c editor

Esta opción le permite ejecutar el editor visual de configuración, desde el menú de arranque.

options KTRACE #ktrace(1) support

Esta opción habilita el proceso de rastreo del kernel, que es de utilidad para efecto de depuración.

options SYSVSHM #SYSV-style shared memory

Esta opción provee memoria compartida, para el System V. El uso más común de esto es la extensión XSHM delservidor X, del cual muchos programas de gráficos-intensos, toman ventaja, para contar con mayor velocidad. Siusted utiliza el entorno gráfico X, definitivamente querra incluir esta opción.

options SYSVSEM #SYSV-style semaphores

Soporte para los semaforos del System V. Con menos uso que el anterior, pero sólo agregará unos cuantos cientos debytes a su kernel.

options SYSVMSG #SYSV-style message queues

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.

options P1003_1B #Posix P1003_1B real-time extensionsoptions _KPOSIX_PRIORITY_SCHEDULING

Extensiones de tiempo-real añadidas en POSIX en 1993. Algunas aplicaciones de la colección de ports, utilizan estasextensiones (tal como StarOffice).

options ICMP_BANDLIM #Rate limit bad replies

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 dejaresta opción tal cual, en virtud de que le permite protejer su sistema contra ataques de paquetes de Negación deServicio (Denial of Service - DoS).

# To make an SMP kernel, the next two are needed#options SMP # Symmetric MultiProcessor Kernel#options APIC_IO # Symmetric (APIC) I/O

Las opciones anteriores son necesarias si desea soporte para SMP.

device isa

Todas las PCs soportadas por FreeBSD cuentan con uno de estos. Si usted cuenta con una IBM PS/2 (Arquitectura deMicro 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 delsoporte 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 PCIy de los canales a utilizar en los buses PCI e ISA.

# Floppy drivesdevice fdc0 at isa? port IO_FD1 irq 6 drq 2device fd0 at fdc0 drive 0device fd1 at fdc0 drive 1

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

device ata

Este controlador da soporte a todos los dispositivos ATA y ATAPI. Usted sólo necesita incluir esta opción una solavez (device ata), para que el kernel detecte todos los dispositivos PCI ATA/ATAPI de sus sistema.

device atadisk # ATA disk drives

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

device atapicd # ATAPI CDROM drives

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

device atapifd # ATAPI floppy drives

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

device atapist # ATAPI tape drives

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

76

Capítulo 8. Configurando el Kernel de FreeBSD

options ATA_STATIC_ID #Static device numbering

Esta hace que el numero de controlador sea estático (como en el viejo controlador) o de lo contrario este numero esasignado dinámicamente.

# ATA and ATAPI devicesdevice ata0 at isa? port IO_WD1 irq 14device ata1 at isa? port IO_WD2 irq 15

Utilice estos para sistemas antiguos no-PCI.

# SCSI Controllersdevice ahb # EISA AHA1742 familydevice ahc # AHA2940 and onboard AIC7xxx devicesdevice amd # AMD 53C974 (Teckram DC-390(T))device dpt # DPT Smartcache - See LINT for options!device isp # Qlogic familydevice ncr # NCR/Symbios Logicdevice sym # NCR/Symbios Logic (newer chipsets)

device adv0 at isa?device adwdevice bt0 at isa?device aha0 at isa?device aic0 at isa?

Controladores SCSI. Comente cualquiera que no se encuentre en su sitema. Si cuenta con un sistema unicamenteIDE, puede eliminar todos.

# SCSI peripheralsdevice scbus # SCSI bus (required)device da # Direct Access (disks)device sa # Sequential Access (tape etc)device cd # CDdevice pass # Passthrough device (direct SCSIaccess)

Periféricos SCSI. Nuevamente, comente todos los que no esten presentes en su sistema, si sólo cuenta con hardwareIDE, puede eliminarlos por completo.

# RAID controllersdevice ida # Compaq Smart RAIDdevice amr # AMI MegaRAIDdevice mlx # Mylex DAC960 family

Controladores de soporte RAID. Si su sistema no cuenta con estos, puede comentarlos o eliminarlos.

# atkbdc0 controls both the keyboard and the PS/2 mousedevice atkbdc0 at isa? port IO_KBD

Este controlador (atkbdc) provee servicios de E/S a teclados AT y dispositivos de tipo PS/2. Este controlador esnecesario para el teclado (atkbdc) y el dispositivo puntero (N de T: Mejor conocido como “ratón”) tipo PS/2 (psm).

device atkbd0 at atkbdc? irq 1

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 ATmejorado, que es conectado al controlador de teclado AT.

device psm0 at atkbdc? irq 12

Utilice este controlador si su ratón se conecta al puerto PS/2.

device vga0 at isa?

El controlador para la tarjeta de video.

# splash screen/screen saverpseudo-device splash

Pantalla Splash al arranque! El protector de pantallas requiere de esto también.

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

El dispositivo sc0 es el controlador por defaault, que recuerda a la consola SCO. Dado que la mayoría de losprogramas 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 cuandoaccesa 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 paraalgunas laptops que tienen incompatibilidad de hardware con sc0. También es recomendable establecer su variablede entorno TERM como vt100 o vt220. Este controlador ha probado ser de gran utilidad en diferentes máquinas enuna red, donde las entradas para termcap o terminfo para el dispositivo sc0 no están disponibles — vt100 debeestar disponible en practicamente cualquier plataforma.

# Power management support (see LINT for more options)device apm0 at nexus? disable flags 0x20 # Advanced Power Management

Soporte para la Administración Avanzada de Energía. Muy útil en laptops.

# PCCARD (PCMCIA) supportdevice carddevice pcic0 at isa? irq 10 port 0x3e0 iomem 0xd0000device pcic1 at isa? irq 11 port 0x3e2 iomem 0xd4000 disable

Soporte para tarjetas PCMCIA. Debe conservar estas si usted utiliza una laptop.

# Serial (COM) portsdevice sio0 at isa? port IO_COM1 flags 0x10 irq 4device sio1 at isa? port IO_COM2 irq 3

78

Capítulo 8. Configurando el Kernel de FreeBSD

device sio2 at isa? disable port IO_COM3 irq 5device sio3 at isa? disable port IO_COM4 irq 9

Estos son los cuatro puertos seriales, conocidos en el mundo MS-DOS/Windows como COM1 a COM4.

Nota: Si usted cuenta con un 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 accederlodesde 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 quemuchos chips no decodifican completamente el espacio de dirección de E/S de 16-bit, se congelan con estastarjetas, 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 unatarjeta de puertos múltiples, donde se permite el compartir IRQs), así que los IRQs que por default manejan lospuertos COM3 y COM4, no pueden ser utilizados.

# Parallel portdevice ppc0 at isa? irq 7

Esta es la interfaz para el puerto paralelo ISA.

device ppbus # Parallel port bus (required)

Provee soporte para el bus del puerto en paralelo.

device lpt # Printer

Soporte para impresoras de puerto en paralelo.

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

device plip # TCP/IP over parallel

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

device ppi # Parallel port interface device

El puerto de E/S para propósitos generales (“geek port”) + E/S IEEE1284.

#device vpo # Requires scbus and da

Este es para la unidad Iomega Zip. Que requiere soporte scbus y da. Se tiene conocimiento de un mejor desempeñocon puertos en modo EPP 1.9.

# PCI Ethernet NICs.device de # DEC/Intel DC21x4x (“Tulip”)device fxp # Intel EtherExpress PRO/100B (82557, 82558)device tx # SMC 9432TX (83c170 “EPIC”)device vx # 3Com 3c590, 3c595 (“Vortex”)

79

Capítulo 8. Configurando el Kernel de FreeBSD

device wx # Intel Gigabit Ethernet Card (“Wiseman”)

Varios controladores de tarjetas de red PCI. Puede comentar o eliminar todas aquellas que no esten presentes en susistema.

# 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 contransistores dependientes de MII o bien aquellos con transistores que operan igual que MII. El añadir el soportedevice miibus al fichero de configuración del kernel nos permite contar con soporte para todos los dispositivosAPI genericos de MII y controladores de PHY, incluyendo los genéricos de PHY para los cuales no hay uncontrolador específico.

device dc # DEC/Intel 21143 and various workalikesdevice rl # RealTek 8129/8139device sf # Adaptec AIC-6915 (“Starfire”)device sis # Silicon Integrated Systems SiS 900/SiS 7016device ste # Sundance ST201 (D-Link DFE-550TX)device tl # Texas Instruments ThunderLANdevice vr # VIA Rhine, Rhine IIdevice wb # Winbond W89C840Fdevice xl # 3Com 3c90x (“Boomerang”, “Cyclone”)

Controladores que utilizan el código del bus MII.

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

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

80

Capítulo 8. Configurando el Kernel de FreeBSD

pseudo-device ether # Ethernet support

El soporte ether sólo es necesario si cuenta con una tarjeta Ethernet. Este incluye el soporte genérico para el códigoEthernet.

pseudo-device sl 1 # Kernel SLIP

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 cuantassesiones simultaneas se pueden soportar por SLIP.

pseudo-device ppp 1 # Kernel PPP

Este es el soporte del kernel para conexiones PPP, por medio de teléfono. Existe también una versión de PPP comoaplicación (“userland”), que utiliza el dispositivo tun y ofrece mayor flexibilidad y funciones, tal como el marcadoa petición. El numero posterior a ppp especifíca cuantas conexiones PPP se pueden mantener de manera simultanea.

pseudo-device tun # Packet tunnel.

Este dispositivo es utilizado por la aplicación PPP userland. El numero posterior a tun, especifíca el soportemáximo de sesiones PPP simultaneas. Vea la sección PPP de este libro, para mayor información al respecto.

pseudo-device pty # Pseudo-ttys (telnet etc)

Esta es una “pseudo-terminal” o bien un puerto de acceso simulado. Es utilizado para conexiones por medio detelnet y sesiones rlogin, xterm, y algunas otras aplicaciones tal como emacs. Un numero después de ptyindica el numero de ptys a crear. Si usted requiere de más de las 16 xterm y/o logins remotos que se crean pordefault, asegurese de incrementar el numero de acuerdo a sus necesidades, sin exceder el máximo de 256.

pseudo-device md # Memory “disks”

Pseudo-dispositivos para la memoria de discos.

pesudo-device gif

o

pseudo-device gif 4 # IPv6 and IPv4 tunneling

Esto permite el envío de IPv6 sobre IPv4, IPv4 sobre IPv6, IPv4 sobre IPv4 e IPv6 sobre IPv6. Desde la versión 4.4de FreeBSD, el dispositivo gif es “auto-clonable”, y usted debiese utilizar el primer ejemplo (sin el numero despuésde gif). Versiones anteriores de FreeBSD requieren de este numero.

pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation)

Este pseudo-dispositivo captura los paquetes que han sido enviados y los redirecciona hacia el demonio “traductor”de IPv4/IPv6.

# The ‘bpf’ pseudo-device enables the Berkeley Packet Filter.# Be aware of the administrative consequences of enabling this!pseudo-device bpf # Berkeley packet filter

81

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 modopromiscuo, capturando cada paquete en una transmisión de red (ej. una Ethernet). Estos paquetes pueden sercapturados 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 delruteador por default (gateway). Si usted utiliza DHCP, deje esta opción habilitada.

# USB support#device uhci # UHCI PCI-

�USB interface

#device ohci # 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

Soporte para varios dispositivos USB.

Para más información y para ver todos los dispositivos soportados por FreeBSD, favor de consultar el fichero/usr/src/sys/i386/conf/LINT.

8.5. Creando Nodos para los DispositivosCasi todo dispositivo señalado en el kernel, cuenta con su correspondiente “fichero nodo”, bajo el directorio /dev.Estos nodos parecen ficheros comunes, pero de hecho son ficheros especiales que indican que dispositivos deben serutilizados por cada programa. El script de shell /dev/MAKEDEV, que es ejecutado cuando usted instala por primeravez el sistema operativo, crea el nodo para casi todos los dispositivos soportados. Aun así no los crea a todos, así quecuando recompila su kernel y agrega soporte para un nuevo dispositivo, es importante asegurarse de que existen lasentradas correspondientes en este directorio, y si no es así crearlas. He aqui un pequeño ejemplo:

Supongamos que ha añadido soporte en su kernel para un dispositivo CDROM tipo IDE. La línea a añadir es:

device acd0

Esto significa que debe buscar alguna entrada que comience con acd0 en el directorio /dev, posiblemente seguidode una letra, tal como c, o bien precedido de una letra como r, que significa que es el dispositivo “raw” . Resulta queesos 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 talforma 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 talescomo tarjetas de sonido, es recomendable proteger estos dispositivos, añadiendolos al fichero /etc/fbtab. Veala 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 existaen el fichero /usr/src/sys/i386/conf/GENERIC, para el cual no existan las entradas apropiadas.

Nota: Todos los controladores SCSI utilizan las mismas entradas en /dev, así que no es necesario crearlas. Asímismo, las tarjetas de red y pseudo-dispositivos de tipo SLIP/PPP, no cuentan con entradas en el directorio/dev, por lo que tampoco tiene por que preocuparse de estas.

8.6. En Caso de que Algo No FuncioneExisten cinco tipos de problemas que se pueden presentar al momento de estar personalizando/compilando un kernel.Estas son:

Que el comando config de como resultado un error:

Si el comando config da como resultado un error al momento de de su ejecución, puede ser que simplementehaya cometido un error de tipografía en su documento personal de configuración (que habiamos llamado“MYKERNEL”). Afortunadamente el comando config le dará información sobre el error, como es el numerode línea que contiene el error, de tal forma que puede dirijirse directamente a dicha línea con vi y corregir elerror. Por ejemplo si visualiza:

config: line 17: syntax error

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

Cuando el comando make falla:

Cuando el comando make da como resultado un error, generalmente es indicio de que el fichero deconfiguración tiene un error, pero que este error no es tan grave como para que config lo detecte. Revisenuevamente su fichero y si aun así no puede detectar el error, envíe un correo a FreeBSD general questionsmailing list <[email protected]> adjuntando el fichero personalizado de su kernel, ydebiese ser diagnosticado rápidamente.

Al instalar el nuevo kernel se presenta una falla

Si el kernel termino de compilarse correctamente, pero presenta una falla al instalarlo (esto es cuando elcomando make install o make installkernel da como resultado un Error), lo primero que es necesariorevisar, es si su sistema esta ejecutandose en securelevel 1 o mayor (vea init(8)). Aqui lo que sucede es que la

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 alnuevo kernel. Y en virtud de que securelevel 1 o mayor evita que dicha marca sea removida de cualquier ficherodel sistema, la instalación del nuevo kernel debe ser realizada en securelevel 0 o menor.

El nuevo kernel no arranca:

Si su nuevo kernel no se ejecuta correctamente al arrancar el sistema, o bien falla en reconocer sus dispositivos,no entre en pánico! Afortunadamente BSD cuenta con un excelente mecanismo para recuperarse de un kernelrecien instalado que presenta este tipo de errores. Simplemente seleccione el kernel que desea arrancar, almomento que se esta incializado en su sistema FreeBSD, el cargador de arranque (boot loader). Puede accesar aeste cuando su sistema se encuentra en cuenta regresiva desde 10. Pulse cualquier tecla excepto la tecla enter,posteriormente teclee unload y posteriormente teclee boot kernel.old, o bien el nombre de fichero decualquier otro kernel que usted sabe que arranacará correctamente. Cuand personalice un kernel, siempre esbuena idea contar con un kernel que sabemos que su funcionamiento es correcto, a la mano.

Nota: Recuerde que si tiene problemas para personalizar su kernel, es recomendable asegurarse decontar con un kernel de tipo GENERIC, o algún otro que tenga la seguridad de su funcionamiento y quetenga un nombre que no será borrado en la siguiente compilación de kernel. No puede confiar en elkernel.old, ya que en cada instalación de un nuevo kernel, este se sustituye con el último kernelinstalado, que pudiese se un kernel no funcional. También recuerde que, en cuanto le sea posible, debemover el kernel funcional a la ubicación correcta del kernel, o bien, comandos como ps(1) no trabajaráncorrectamente. El comando para “desbloquear” el fichero del kernel que instala el comando make (paraefecto 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 desecurelevel(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 sunuevo kernel.

Y si usted desea “bloquear” su nuevo kernel en su ubicación, o cualquier otro fichero, de tal forma que nopueda ser movido o modificado, puede hacerlo con el comando:

# chflags schg /kernel

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

Si usted ha instalado un kernel que pertenece a una versión diferente a la del sistema en cuestión, por ejemplo,un kernel 4.X sobre un sistema 3.X, gran variedad de comandos de sistema, como son: ps(1) y vmstat(8) ya novan a funcionar. Deberá recompilar la librería libkvm, así como sus utilidades. Es por esta razón, que no es unabuena idea utilizar un kernel de una versión diferente al resto del sistema operativo.

Notas1. 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. SeguridadSeguridad

85

Capítulo 10. ImprimiendoAportado por Sean Kelly. Reestructurado y actualizado por Jim Mock.

10.1. SinópsisFreeBSD puede ser utilizado para imprimir en una gran variedad de impresoras, desde las antiguas impresoras dematriz de punto, hasta las más modernas impresoras laser, y todo lo que existe en medio de estas, permitiendole crearimpresiones 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 computadorascorriendo FreeBSD, Windows y MacOS. FreeBSD verifica que un trabajo sea impreso a la vez, y puede mantenerestadí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á:

• Como configurar la cola de impresión en FreeBSD.

• Como instalar filtros de impresión, para manejar diferentes trabajos especiales, incluyendo la conversión dedocumentos a formatos aptos para la impresora.

• Como habilitar encabezados, o titularess en sus impresiones.

• Como imprimir en impresoras conectadas a otras computadoras

• Como imprimir en impresoras conectadas directamente a la red.

• Como controlar restricciones de impresión, incluyendo limitantes en el tamaño de los trabajos de impresión, yrestringiendo la impresión a ciertos usuarios.

• Como mantener estadísticas de impresión, y cuentas para el uso de la impresora.

• Como solucionar problemas de impresión comunes.

Antes de leer este capítulo, usted debería:

• Saber como compilar e instalar un nuevo kernel (Capítulo 8).

10.2. IntroducciónPara efecto de poder utilizar impresoras con FreeBSD, es necesario que configure estas, para trabajar con el sistemade cola de impresión de Berkeley, también conocido como Sistema de Cola LPD. Este es el sistema de control deimpresión estándar en FreeBSD. Este capítulo introduce en el sistema LPD, llamado comunmente sólo LPD, eintroduce 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 numerode cosas, tales como:

• Controla el acceso a las impresoras conectadas directamente al ordenador y las impresoras conectadas a otrasmá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 colade impresión (“queue”) para cada impresora.

• Puede imprimir encabezados (“header”) (también conocidos como titularess o páginas de aviso), de tal forma quelos 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óndiferente 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, ustedpuede habilitar al sistema LPD para hacer todo o una parte de lo mencionado anteriormente, para una gran variedadde impresoras.

10.2.1. ¿Por qué utilizar una Cola de Impresión?Si usted es la única persona que hace uso de su sistema, probablemente se pregunte por que preocuparse por utilizarun sistema de cola de impresión, cuando no requiere acceso a controles, encabezados o cuentas para imprimir.Mientras que es posible habilitar un acceso a su impresora de forma directa, usted debe utilizar el sistema de cola deimpresión, por las siguientes razones:

• El sistema LPD opera los trabajos de impresión es segundo plano; esto es, que usted no tiene que esperar a que losdatos 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 bienconvertir un fichero con formato especial (tal como ficheros TeX DVI) a un formato que la impresora entiende. Detal 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 decola de impresión. Al configurar su sistema de cola de impresión, usted podrá soportar otro software que instale enel futuro o el que tiene actualmente.

10.3. Configuración BásicaPara efecto de utilizar impresoras con el sistema de cola LPD, es necesario que se instale físicamente la impresora yel software de LPD. Este documento describe estos dos niveles de configuración:

87

Capítulo 10. Imprimiendo

• Vea la sección Configuración Simple de una Impresora, para aprender a conectar una impresora, indicarle a LPDcomo 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 formatosespeciales, imprimir encabezados, para imprimir por medio de una red, controlar acceso a las impresoras y crearcuentas de impresión.

10.3.1. Configuración Simple de una ImpresoraLa presente sección le mostrará como instalar físicamente la impresora, así como el software de LPD para usar dichaimpresora. Le mostrará lo básico de:

• La sección Instalación Física, le da algunos consejos sobre como instalar su impresora a los puertos de sucomputadora.

• 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 asu 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. Lasopciones avanzadas, tal como imprimir encabezados y crear cuentas, son sencillas una vez que su impresora estátrabajando.

10.3.1.1. Instalación Física

Esta sección le informa sobre varias fomras en que puede usted conectar la impresora a su PC. Se describen los tiposde puertos y cables, así como la configuración que debe tener en su kernel, para permitir que FreeBSD se puedacomunicar con su impresora.

Si ya ha conectado su impresora y ha impreso exitosamente trabajando en otro sistema operativo, probablementedesee brincar a la sección Configuración del Software.

10.3.1.1.1. Puertos y Cables

Practicamente cualquier impresora que adquiera hoy en día para PC, cuenta con soporte para una o ambas interfacesque se presentan a continuación:

• La interfaz serial, utiliza el puerto serial de su computadora para enviar datos a la impresora. La interfaz serial escomú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 deopciones de comunicación.

• La interfaz en paralelo utiliza el puerto paralelo de su computadora para enviar datos a la impresora. Lasinterfaces en paralelo son comunes en el mercado de las PCs. Los cables son fáciles de conseguir, pero un pocomás complicados de hacer a mano. Normalmente no existen opciones de comunicación, haciendo su configuraciónmucho más sencilla.

88

Capítulo 10. Imprimiendo

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

En términos generales los interfaces seriales son más lentos que las interfaces en paralelo. Por otro lado los interfacesen paralelo sólo ofrecen comunicación de una vía (de la computadora a la impresora), mientras que los serialesofrecen de dos vías. Gran cantidad de recientes impresoras y puertos paralelos, pueden comunicarse en ambasdirecciones 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 laimpresora maneja PostScript. Las impresoras que manejan PostScript detallan gran cantidad de información. Dehecho, los trabajos PostScript, son programas enviados a la impresora; los cuales no requieren de papel y puedenenviar la salida directamente a la computadora. PostScript utiliza una comunicación de dos vías, para informar alordenador de los problemas que se puedan presentar, tal como errores en los programas PostScript o papelesatascados. Sus usuarios pueden apreciar este tipo de información. Más allá de esto, la mejor forma de contabilizarcon impresoras PostScript, es utilizando dos vías de comunicación: usted solicita a la impresora el conteo deimpresiones (esto es, todas las impresiones hechas en su vida), posteriormente envia el trabajo del usuario y repite lasolicitud de conteo. Resta los dos valores obtenidos y sabra cuanto debe cobrar al usuario por uso de papel.

10.3.1.1.2. Puertos Paralelos

Para conectar una impresora usando el puerto en paralelo, conecte el cable Centronics entre la impresora y lacomputadora. Las instrucciones que vienen con su impresora, con su computadora o ambas, deben ser una buenaguía para llevar esto a cabo.

Recuerde cual es el puerto en paralelo que utilizó en su computadora. Para FreeBSD, el primer puerto paralelo es/dev/lpt0, el segundo puerto es /dev/lpt1 y así sucesivamente.

10.3.1.1.3. Puertos Seriales

Para conectar una impresora, usando el puerto serial, conecte el cable apropiado entre la impresora y el ordenador.Las instrucciones que vienen con su impresora, computadora o ambas, deben ser suficientes para llevar esto a cabo.

Si usted no esta seguro de cual es el “cable serial apropiado”, puede intentar alguna de las siguientes alternativas:

• Un cable de módem conecta cada pin del conector de un extremo, con el conector del otro extremo, de maneradirecta. 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 pararecibir datos, por ejemplo), y algunos otros internamente son deshabilitados en los conectores. Este tipo de cabletambié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 demó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 realizadesde los controles de la misma o interruptores DIP en la impresora. Selecciones el bps (bits por segundo y enocasiones llamado velocidad de baudio) más alto, que tanto su ordenador como impresora soporten. Seleccione 7 u 8bits de datos; la paridad establezcala en: ninguna, igual o aleatoria y 1 o 2 en bits de paro. También seleccione unprotocolo 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, queveremos en la siguiente sección.

10.3.1.2. Configuración del Software

La presente sección describe la configuración necesaria para poder imprimir usando el sistema de cola LPD, bajoFreeBSD.

Aqui presentamos un resumen de los pasos necesarios:

1. Configure su kernel, si es necesario, para habilitar el uso del puerto al que esta conectado su impresora. En lasecció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ónEstableciendo 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óncon 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 estecapítulo, veremos como se lleva a cabo esto.

10.3.1.2.1. Configuración del Kernel

El kernel del sistema operativo es compilado para trabajar con ciertos dispositivos. El puerto serial o paralelo de sucomputadora es parte de los dispositivos que debe incluirse en la compilación del kernel. Por lo tanto, puede que seanecesario recompilar el kernel incluyendo el soporte para el o los puertos serial y/o paralelo, si es que el kernel nocuente ya con dicho soporte.

Para averiguar si el kernel que tiene instalado actualmente, cuenta con soporte para el puerto serial, teclee losiguiente:

# dmesg | grep sioN

Donde N es el numero de puerto serial, comenzando desde cero. Si observa una salida similar a la siguiente:

sio2 at 0x3e8-0x3ef irq 5 on isasio2: type 16550A

entonces su kernel ya cuenta con soporte para el puerto.

Para averiguar si su kernel cuenta con soporte para el puerto en paralelo, teclee:

# dmesg | grep lptN

Donde N es el numero de puerto serial, comenzando desde cero. Si observa una salida similar a la siguiente:

lpt0 at 0x378-0x37f on isa

entonces su kernel cuenta con soporte para el puerto.

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

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 elpuerto paralelo, vea esa sección y la siguiente sección.

10.3.1.3. Añadiendo Dispositivos de Puertos en /dev

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

Para añadir una entrada, para sus puertos, en el directorio /dev deberá:

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 enparalelo, lpt1 para el segundo puerto, y así sucesivamente, para el primer puerto serial puede utilizar ttyd0, ypara el segundo ttyd1 y así sucesivamente.

4. Teclee:

# ls -l PUERTO

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

10.3.1.3.1. Configurando el modo de Comunicación para el Puerto Paralelo

Cuando utiliza el puerto paralelo, puede seleccionar si FreeBSD va a utilizar un modo de comunicación por medio deinterruptores o a petición, con la impresora.

• El método por medio de interruptores es el método que utiliza el kernel GENERICO de FreeBSD. Con estemé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 pararecibir 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 quealgunas impresoras nuevas de HP no funcionan muy bien con este método aparentemente debido (sin que aun seentienda el por que) a un problema de tiempos. Estas impresoras necesitan el método a petición. Es conveniente queutilice el método que se ajuste a sus necesidades. Algunas impresoras funcionan en ambos métodos, pero sondolorosamente 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, utilizandoel 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. Siesta 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

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

• Si desea utilizar el modo a petición, no necesita agregar el especificador de irq:

device lpt0 at isa? port? tty 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.

Para establecer el modo de comunicación usando lptcontrol(8):

1. Teclee:

# lptcontrol -i -d /dev/lptN

para indicar el modo por medio de interruptor para lptN .

2. Teclee:

# lptcontrol -p -d /dev/lptN

para establecer el modo a petición para lptN .

Estos comandos los podría incluir en su fichero /etc/rc.local para que el sistema reconozca estos modos cadavez que inicia el sistema. Vea lptcontrol(8) para más información al respecto.

10.3.1.3.2. Verificando la Comunicación de la Impresora

Antes de proceder a configurar el sistema de cola de impresión, es conveniente verificar que nuestro sistemaoperativo pueda enviar datos exitosamente a nuestra impresora. Es mucho más sencillo detectar errores cuando seconfigura por separado el método de comunicación y el sistema de cola de impresión.

Para probar nuestra impresora, enviaremos un poco de texto. Para impresoras que inmediatamente pueden imprimircaracteres, el programa lptest(1) es perfecto: este genera todos los 96 caracteres ASCII imprimibles en 96 líneas.

Para impresoras PostScript (o de otro lenguaje de impresión), vamos a necesitar una prueba más sofisticada. Unpequeño programa PostScript, como el siguiente, será suficiente:

%!PS100 100 moveto 300 300 lineto stroke310 310 moveto /Helvetica findfont 12 scalefont setfont(Is this thing working?) showshowpage

El código PostScript descrito puede guardarse en un fichero y usarse en el ejemplo que aparece en la siguientesección.

92

Capítulo 10. Imprimiendo

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

10.3.1.3.2.1. Verificando Impresoras en Paralelo

Esta sección le indica como comprobar la comunicación de una impresora en paralelo, bajo FreeBSD.

Para probar una impresora en paralelo:

1. Cambiar a root con el comando su(1)

2. Enviar datos a la impresora.

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

# lptest�

/dev/lptN

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

• Si la impresora utiliza PostScript u otro lenguaje de impresión, entonces envie un pequeño programa a laimpresora. Teclee:

# cat�

/dev/lptN

Posteriormente, línea por línea teclee el programa, cuidadosamente en virtud de que no puede editar una líneaya que presionado la tecla RETURN o ENTER. Una vez que ha terminado de introducir el programa, presionalas 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ásadelante.

10.3.1.3.2.2. Verificando una Impresora Serial

Esta sección explica como verificar la comunicación, bajo FreeBSD, de una impresora conectada al puerto serial.

Para probar una impresora conectada el puerto serial:

1. Cambiar a root usando su(1).

2. Edite el fichero /etc/remote. Añadiendo la siguiente entrada:

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

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 (yasea 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 especificarseen 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

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

# tip printer

Si este paso no funciona, edite nuevamente el fichero /etc/remote e intente utilizando /dev/cuaaN en lugarde 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 laimpresora. Teclee el programa, línea por línea, muy cuidadosamente ya que algunas teclas, como la deretroceso son significativas para la impresora. Puede ser que también necesite un caracter especial para marcarel 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 arreglaremosesto.

10.3.1.4. Habilitando la Cola de Impresión: El fichero /etc/printcap

En este punto, su impresora debe estar conectada, su kernel configurado con el soporte de comunicación, y debehaber podido enviar datos a su impresora. Ahora estamos listos para configurar LPD para controlar el accesos anuestra impresora.

94

Capítulo 10. Imprimiendo

Para efecto de configurar LPD, es necesario editar el fichero /etc/printcap. El sistema de cola de LPD lee estefichero cada vez que se utiliza, de tal forma que los cambios que se realicen en este fichero, surten efectoinmediatamente.

El formato que mantiene el fichero printcap(5) es muy concreto. Utilice su editor de texto favorito para hacercambios 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áginade ayuda cgetent(3).

De un modo simple, la configuración de una cola consiste en los siguientes pasos:

1. Seleccione un nombre (y algunos alias convenientes) para la impresora, y especifíquelos en el fichero/etc/printcap ; vea la sección Nombrando la Impresora para más información al respecto.

2. Desactive el encabezado de páginas (el cual esta activado por default), al insertar la característica sh; vea lasecció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 elDirectorio 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 lacaracterí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 establecerlos parámetros de comunicación; esto se detalla en la sección Configurando los Parámetros de Comunicación dela 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 laConfiguració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 siusted 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. Losprogramas que usan como interfaz de impresión a LPD, asumen lo mismo. Si usted cuenta con una impresora basadaen lenguaje y desea poder imprimir en el lenguaje de la impresora así como texto plano, es importante considerarque debe añadir un paso adicional a los mencionados anteriormente: instalar un programa de conversióndetexto-plano-a-PostScript (u otro lenguaje). La sección Acomodando Trabajos de Texto Plano en ImpresorasPostScript le indica como debe hacerse esto.

10.3.1.4.1. Nombrando la Impresora

El primer paso (sencillo) es escojer un nombre para su impresora. En realidad no importa mucho si este nombre esfuncional o un tanto abstracto, en virtud de que usted podrá asignar alias para la impresora.

Cuando menos una de las impresoras señaladas en el fichero /etc/printcap debe contar con el alias lp. Este es elnombre de la impresora por default. Si los usuarios del sistema no cuentan con la variable de entorno PRINTER obien no especifican en la línea de comando, al ejecutar cualquier comando de LPD, el nombre de la impresora autilizar, entonces lp será la impresora por default a utilizar.

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 dela impresora deberá colocarse en la columna izquierda máxima. Separe cada alias con una barra vertical e incluyados 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:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:

En este caso, la primer impresora se llama rattan y tiene como aliases line, diablo, lp, y Diablo 630 Line

Printer. Dado que tiene el alias lp, tambié se considera la impresora por default. La segunda impresora se llamabamboo, y cuenta con los aliases ps, PS, S, panasonic, y Panasonic KX-P4455 PostScript v51.4.

10.3.1.4.2. Eliminando las Páginas de Encabezados

El sistema de cola de impresión LPD, por default, imprimirá una página de encabezado para cada trabajo. Estapágina contiene el nombre del usuario que solicitó la impresión, el host del cual se envio el trabajo y el nombre deltrabajo, todo en letras grandes. Desafortunadamente, todo esta impresión extra, interfiere con el trabajo dedepuración de la configuración básica de la impresora, por lo que vamos a deshabilitar esta opción.

Para eliminar las páginas de encabezado, añada shen la entrada de la impresora del fichero /etc/printcap. Heaqui un ejemplo del fichero /etc/printcap con sh incluida en él:

## FIchero /etc/printcap para el host rose - sin paginas de encabezado#rattan|line|diablo|lp|Diablo 630 Line Printer:\

:sh:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\:sh:

Note como hemos utilizado el formato correcto: donde la primer línea comienza en la primer columna de laizquierda y las líneas subsecuentes estan cuentan con sangría de un solo tabulador (TAB). Cada línea termina conuna diagonal invertida, excepto la última.

10.3.1.4.3. Creando el Directorio de la Cola

El siguiente paso en la configuración de la cola, es crear el directorio de cola de impresión, un directorio en el cualresiden los trabajos de impresión hasta que son llevados a cabo, y donde otros ficheros de soporte se localizan.

Dada la naturaleza variante de los directorios de cola, es costumbre que estos se localicen en /var/spool. No esnecesario respaldar el contenido de estos directorios, ya que rehacerlos es tan simple como ejecutar mkdir(1).

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 acontinuació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 unsólo directorio reservado para todas aquellas que imprimen usando LPD. En nuestro ejemplo haremos esto connuestras 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 protegerel directorio de cola, de tal forma que no sea de acceso público. Los directorios de cola deben pertenecer alusuario daemon y grupo daemon, y debe contar con permisos de lectura, escritura y navegación por estos ynadie más. Haremos esto para nuestros ejemplos:

# chown daemon:daemon /var/spool/lpd/rattan# chown daemon:daemon /var/spool/lpd/bamboo# chmod 770 /var/spool/lpd/rattan# chmod 770 /var/spool/lpd/bamboo

Finalmente, debe indicar a LPD acerca de estos directorios, en el fichero /etc/printcap. Esta indicación se hacepor 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:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\:sh:sd=/var/spool/lpd/bamboo:

Notese que el nombre de la impresora inicia en la primer columna mientras que el resto debe contar con sangría deun 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 .

10.3.1.4.4. Identificando el Dispositivo de Impresión

En la sección Añadiendo Dispositivos de Puertos en /dev, vimos que dispositivo bajo el directorio /dev iba autilizar FreeBSD para comunicarse con la impresora. Ahora le indicaremos esto a LPD. Cuando el sistema de colatiene un trabajo por imprimir, abrirá el dispositivo especificado en nombre del programa filtro (reponsable de pasarlos datos a la impresora).

Para efecto de indicar esto, en la entrada de la impresora en el fichero /etc/printcap, usaremos la característicalp.

97

Capítulo 10. Imprimiendo

En el ejemplo que hemos visto, asumiremos que rattan esta conectada al primer puerto paralelo, y bamboo en elsexto 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:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\:sh:sd=/var/spool/lpd/bamboo:\:lp=/dev/ttyd5:

Si usted no indica la 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 ala sección Instalando un Filtro de Texto. De otra manera, asegurese de seguir las instrucciones de la siguiente sección.

10.3.1.4.5. Configurando los Parámetros de Comunicación del la Cola de Impresión

Para impresoras conectadas a un puerto serial, LPD puede especificar la velocidad de bps, la paridad, y otrosparámetros de comunicación en lugar del programa filtro que manda los datos a la impresora. Esto es una ventajadado lo siguiente:

• 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 quepueden 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 elfichero /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 haentablado 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 eldispositivo.

98

Capítulo 10. Imprimiendo

xs#establece-bits

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

Para mayor información con respecto al uso de las caractrística de bits: fc, fs, xc, y xs, vea el fichero/usr/include/sys/ioctl_compat.h.

Cuando LPD abre el canal de comunicación con el dispositivo especificado por lp, lee la marca de bits en laestructura sgttyb; limpia cualquier bit en la característica fc y establece bits en la característica fs, paraposteriormente 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 laestableceremos en 38400 bps. Para las marcas de bits usaremos TANDEM, ANYP, LITOUT, FLUSHO, y PASS8. Para elmodo local de bits, estableceremos LITOUT y PASS8 :

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\:sh:sd=/var/spool/lpd/bamboo:\:lp=/dev/ttyd5:fs#0x82000c1:xs#0x820:

10.3.1.4.6. Instalando un Filtro de Texto

Ahora estamos listos para indicarle a LPD que filtro de texto debe utilizar para enviar los trabajos a la impresora. Unfiltro de texto, también conocido como filtro de entrada, es un programa que ejecuta LPD cuando tiene un trabajopara imprimir. Cuando LPD ejecuta el filtro de texto para una impresora, configura de manera estandar la entradapara el trabajo a imprimir, y la salida estandar a la impresora indicada en la característica lp. El filtro espera leer eltrabajo de la entrada estandar, hacer el trabajo de traducción necesario para la impresora, y enviar los resultados a lasalida estandar, lo cual será impreso. Para mayor información en los filtros de texto, vea la sección Como Trabajanlos Filtros.

En el caso de nuestro ejemplo, el filtro de texto puede ser un pequeño script que sólo ejecute /bin/cat para enviarel trabajo a la impresora. FreeBSD cuenta con otro filtro llamado lpf que controla los caracteres de regreso ysubrayado en impresoras que pueden presentar problemas con dichos caracteres. Y desde luego, usted puede utilizarcualquier filtro que desee. El filtro lpf se describe a detalle en la sección titulada lpf: un Filtro de Texto.

En primer lugar hagamos del script /usr/local/libexec/if-simple un simple filtro de texto. Introduzca elsiguiente texto en un fichero, con su eitor de texto favorito:

#!/bin/sh## if-simple - Filtro de texto simple para lpd# Instalado en la ruta /usr/local/libexec/if-simple## Simplemente copia stdin a stdout. Ignora todos los argumentos del filtro.

/bin/cat && exit 0exit 2

Haga el fichero ejecutable:

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

Ahora indiquele a LPD que lo use, al añadirlo con la característica if, en el fichero /etc/printcap. Este filtro, lovamos 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:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\:sh:sd=/var/spool/lpd/bamboo:\:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:\:if=/usr/local/libexec/if-simple:

10.3.1.4.7. Encienda LPD

lpd(8) se puede correr desde /etc/rc, controlado por la variable lpd_enable. Esta variable por default estadeshabilitada con NO. Si usted no cuenta con esta línea, añadala de la siguiente forma:

lpd_enable="YES"

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

# lpd

10.3.1.4.8. Probando la Configuración

Usted ha llegado al fin de una configuración sencilla de LPD. Desafortunadamente, aun no es momento de unafelicitación, dado que aun debemos probar la configuración y resolver cualquier problema que se presente. Paraefecto de probar la configuración, intente imprimir algo. Para imprimir con el sistema LPD, utilice el comandolpr(1), el cual envia el trabajo para su impresión.

Puede combinar lpr(1) con el programa lptest(1), el cual se ve en la sección Verificando la Comunicación con laimpresora, para generar un texto de prueba.

Simplemente para probar la configuración de LPD, intente:

Teclee:

# lptest 20 5 | lpr -Pnombre-impresora

Donde nombre-impresora es uno de los nombres (o alias) que aparecen especificados en el fichero/etc/printcap para las impresoras. Para probar con la impresora por default, teclee lpr(1) sin la opción -P.Nuevamente, si esta probando una impresora que espera recibir PostScript, envie un programa PostScript en eselenguaje, 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 suresultado 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 cadauna.

Si la impresora no funcionó, vea la sección Resolución de Problemas.

10.4. Configuración Avanzada de una ImpresoraEsta sección describe el uso de filtros para formatos especiales, encabezados de página, impresión en red, yrestricción de uso de la impresora por cuenta.

10.4.1. FiltrosAun 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 laimpresora y controlan las dependendcias de su dispositivo y requerimientos especiales. En el ejemplo de laimpresora simple, instalamos un muy sencillo filtro de texto plano—un ejemplo extremadamente sencillo quedebiese 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 delas impresoras y demás, es importante saber como trabajan los filtros. En virtud de que todos estos aspectos son laresponsabilidad de estos filtros. Y la mala noticia es, que la mayor parte del tiempo usted debe proveerse de estosfiltros. 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 imprimirtexto plano. (Maneja caracteres de regreso y tabulador en el fichero, así como conteo, pero se puede decir que eso estodo). Existen también una gran cantidad de filtros y componentes de estos, disponibles en la Colección de Ports deFreeBSD.

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 deimpresión. Es importante que lea esta sección para ver que sucede “tras bambalinas” cuando LPD usa filtros. Esteconocimiento puede ayudarle a anticiparse y resolver problemas que puede encontrar cuando instala más y másfiltros en cada impresora.

• Normalmente LPD espera poder imprimir texto plano en todas las impresoras. Esto puede representar unproblema para las impresoras PostScript (o que manejen otro lenguaje de impresión), las cuales no puedenimprimir texto plano directamente. La sección Acomodando Trabajos de Texto Plano en Impresoras PostScript leindica que debe de hacer si se le presenta este problema. Es importante que lea esta sección si usted cuenta conuna impresora PostScript.

• PostScript es un formato de salida muy popular. Incluso algunas personas (yo, incluido) escriben códigoPostScript 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 datosPostScript. 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 formatosespecíficos de ficheros, tal como gráficos o datos de un determinado tipo, a un formato que la impresora puedeentender. Después de leer esta sección usted podrá configurar su impresora de tal forma que los usuarios puedanteclear lpr -t para imprimir datos troff o lpr -d para imprimir datos de tipo TeX DVI, o bien lpr -v paraimprimir 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), puedesaltar 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 depuntos (e impresoras laser que actuan como estas) que viene con FreeBSD. Si usted necesita una forma rápida detener un contador de trabajos de impresión para texto plano, o bien si tiene una impresora que al ver caracteres deregreso (backspace) comienza a echar humo, definitivamente debe considerar lpf como su alternativa.

10.4.1.1. Como Trabajan los Filtros

Como se menciono anteriormente, un filtro es un programa ejecutable que se inicia por LPD, para manejar eldispositivo dependiente, responsable de la comunicación con la impresora.

Cuando LPD desea imprimir un trabajo, inicia un programa filtro. Establece como entrada estandar del filtro alfichero, y a la impresora como salida estandar, y como error estandard al fichero log (indicado con la cracterística lf,en el fichero /etc/printcap o por default como /dev/console).

Cual filtro debe ser iniciado por LPD y con que argumentos, depende en lo especificado en el fichero/etc/printcap y los argumentos que hayan sido utilizados por el usuario al momento de usar en la línea decomandos: lpr(1). Por ejemplo, si el usuario teclea lpr -t, LPD iniciará el filtro para ficheros troff, listado en lascaracterísticas tf para la impresora destino. Si el usuario desea imprimir texto plano iniciará el filtro if (esto casi esasí, para mayor información, vea la sección Filtros de Salida).

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

• El filtro de texto, erroneamente llamado filtro de entrada en la documentación de LPD, este se encarga de manejarla impresión de texto simple. Piense en este como en el filtro por default. LPD espera que todas las impresoraspuedan imprimir texto plano y es el filtro de texto, el que se encarga de manejar los caracteres de retroceso ytabulador, 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íneasimpresas y comparandolas con el numero de líneas soportadas por página. El filtro de texto se comienza con lossiguientes argumentos:

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

donde

-c

aparece si el trabajo se envio utilizando lpr -l

102

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 valorde 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. Porejemplo, datos de tipo ditroff no pueden imprimirse directamente, pero puede instalar un filtro de conversión paraficheros ditroff, de tal forma que los datos ditroff se conviertan a un formato que entiende la impresora. La secciónFiltros de Conversión explica todo lo que usted necesita saber sobre ellos. Los filtros de conversión tambiénrequieren de llevar un conteo, si usted requiere de este control. Los filtros de conversión se inicializan con estosargumentos:

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

donde ancho-pixel es el valor de la característica px (default 0) y alto-pixel es el valor de lacaracterística py (default 0).

• El filtro de salida es usado solamente si no existe un filtro de texto, o bien si las páginas de encabezado estánhabilitadas. En mi experiencia, los filtros de salida raramente se utilizan. La sección Filtros de Salida describe eluso de estos. Sólo existen dos argumentos:

nombre-filtro -wancho -llargo

los cuales son idénticos a los argumentos -w y -l de los filtros de texto.

La salida de los filtros debe ser con el siguiente resultado:

exit 0

Esto es si el resultado de la 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á elfiltro 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 ylargo, para determinar cuando alimentar la impresora y como llevar el conteo de uso de la impresora. Utiliza el host ylogin, 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 losargumentos descritos anteriormente. Si usted planea escribir filtros para uso general, entonces creelos pensando ensoportar estos argumentos y códigos de salida.

10.4.1.2. Acomodando Trabajos de Texto Plano en Impresoras PostScript

Si usted es el único usuario de su computadora e impresora PostScript (u otro lenguaje de impresoras), y prometenunca enviar texto plano a su impresora o bien hacer uso de algunos programas que probablemente envien textoplano a su impresora, entonces usted no debe preocuparse por leer esta sección.

Pero, si usted desea enviar tanto texto plano, como PostScript a su impresora, entonces es altamente recomendableque prepare la configuración de su impresora. Para efecto de hacer esto, contamos con el filtro de texto, para detectarsi los trabajos que se han mandado son de texto plano o PostScript. Todos los trabajos de tipo PostScript, debencomenzar con %! (para otros lenguajes de impresión, vea la documentación de su impresora). Si esos son los dosprimeros caracteres de su trabajo, entonces se considera PostScript y puede pasar el resto del trabajo de formadirecta. Si esos no son los primeros dos caracteres, entonces el filtro hará la conversión del texto a PostScript eimprimirá el resultado.

¿Cómo se hace esto?

Si usted cuenta con una impresora serial, una buena forma de hacer esto es instalando lprps. lprps es un filtro deimpresión PostScript que lleva a cabo una comunicación de dos vías con la impresora. Actualiza el fichero de estatusde la impresora, por medio de información actualizada, de tal forma que los usuarios y administradores pueden verexactamente el estado que guarda la impresora (tal como toner bajo o papel atorado). Pero más importante esel programa que incluye llamado psif, el cual detecta si el trabajo que se ha enviado es texto plano, con lo cualllama a textps (otro programa que viene con lprps), para convertir el texto plano a PostScript. Posteriormenteutiliza lprps para enviar el trabajo a la impresora.

El programa lprps es parte de la Colección de Ports de FreeBSD (vea la sección La Colección de Ports). Claro esta,que usted puede descargar, compilar e instalarlo. Una vez que instale lprps, simplemente especifique la ruta alprograma psif que a su vez es parte de lprps. Si ha instalado lprps de la Colección de Ports, añada lo siguiente,en la parte correspondiente a su impresora Serial-PostScript, en el fichero /etc/printcap:

: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 lacomunicación de dos vías con la impresora, que lprps requiere), puede utilizar el siguiente script de shell comofiltro 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_linefirst_two_chars=‘expr "$first_line" : ’\(..\)’‘

if [ "$first_two_chars" = "%!" ]; then## Trabajo PostScript, imprimirlo.#echo "$first_line" && cat && printf "\004" && exit 0exit 2

else## Texto Plano, convertirlo e imprimirlo.#( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0exit 2

fi

En este script, textps es un programa que hemos instalado por separado, para convertir texto plano a PostScript.Usted puede utilizar cualquier cualquier programa de conversión de texto plano a PostScript que desee. La Colecciónde Ports de FreeBSD incluye un programa muy completo llamado a2ps que quizás desee investigar.

10.4.1.3. Simulando PostScript en Impresoras No-PostScript

PostScript es el estandar por excelencia en impresiones de alta calidad. Aunque en realidad PostScript resulta ser unestandar algo caro. Afortunadamente la Empresa Alladin, cuenta con un emulador PostScript, llamado Ghostscriptque corre bajo FreeBSD. Ghostscript puede leer la mayoría de los ficheros PostScript y volcarlos en una granvariedad de dispositivos, incluyendose gran variedad de impresoras no-PostScript. Al instalar Ghostscript y usandoun filtro de texto especial para su impresora, puede hacer que su impresora no-PostScript actue como una impresoraPostScript real.

Ghostscript se encuentra en la Colección de Ports de FreeBSD por lo que puede realizar la instalación desde estemedio. También puede descargarlo, compilarlo e instalarlo de una manera fácil.

Para efecto de simular PostScript, contamos con el filtro de texto que detecta si se esta imprimiendo un ficheroPostScript. Si no es así, el filtro pasará el trabajo directamente a la impresora, de otra forma utilizará Ghostscript paraconvertir primero el fichero a un formato que la impresora entienda.

Aqui tenemos un ejemplo: el siguiente script es un filtro de texto para impresoras Hewlett Packard DeskJet 500. Paraotras impresoras, substituya el argumento -sDEVICE del comando gs (Ghostscript). Teclee gs -h para obtener unalista de todos los dispositivos soportados por Ghostscript en su sistema).

#!/bin/sh## ifhp - Impresion simulada-Ghostscript PostScript en una DeskJet 500# Instalada en /usr/local/libexec/hpif

## Trate a LF como CR+LF:#

105

Capítulo 10. Imprimiendo

printf "\033&k2G" || exit 2

## Read first two characters of the file#read first_linefirst_two_chars=‘expr "$first_line" : ’\(..\)’‘

if [ "$first_two_chars" = "%!" ]; then## Se trata de PostScript; use Ghostscript para convertir e imprimir.## Note que los ficheros PostScript son , de hecho, programas interpretados,# y esos programas se permiten escribir en la salida estandar, lo que puede# confundir la salida impresa. De tal forma que redireccionaremos la salida# estandar a error estandar, y crearemos una clave de salida 3, para la# salida estandar, y haremos que Ghostscript escriba su salida a esta.# Un ejercicio para el lector astuto: capture la salida del error estandar# de Ghostscript y envielo por correo de regreso al usuario original, que# genero el trabajo de impresion.#exec 3

�&1 1

�&2

/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \-sOutputFile=/dev/fd/3 - && exit 0

#/usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 -sOutputFile=- - \

&& exit 0else

## 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 0fi

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.

10.4.1.4. Filtros de Conversión

Una vez que se ha completado la configuración descrita en la sección Configuración Simple de una Impresora,probablemente lo primero que deba hacer es instalar filtros de conversión para su formato de fichero favorito (apartede text plano ASCII).

106

Capítulo 10. Imprimiendo

10.4.1.4.1. ¿Por qué Instalar Filtros de Conversión?

Los filtros de conversión sirven para instalar de una manera sencilla varios tipos de formatos especiales. Comoejemplo, suponga que requiere imprimir un buen numero de ficheros desarrollados con el sistema de escritura TeX, ycontamos con una impresora PostScript. Cada vez que generemos un fichero DVI desde TeX, no podremosimprimirlo directamente hasta que hagamos una conversión de este a PostScript. La secuencia de comandos a seguires algo así:

% 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 hagacargo 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 laopció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 rutaen el fichero /etc/printcap. Un filtro de conversión es como el filtro de texto usado en la configuración de unaimpresora simple (vea la sección Instalando un Filtro de Texto para una referencia) excepto de que en lugar deimprimir texto plano, el filtro convierte el fichero a un formato que la impresora puede entender.

10.4.1.4.2. ¿Qué Filtros de Conversión Debo Instalar?

Usted debe instalar los filtros de conversión que vaya a necesitar. Si imprime gran cantidad de documentos DVI, esrecomendable que instal un filtro de conversión para DVI. Si cuenta con bastantes ficheros troff por imprimir,entonces un filtro troff sería una buena idea.

En la siguiente tabla encontrará un resúmen de los filtros con que trabaja LPD, un ejemplo de su entrada en/etc/printcap y como hacer uso de estos con el comando lpr :

Tipo de Fichero Característica /etc/printcap Opción lpr

cifplot cf -c

DVI df -d

plot gf -g

ditroff nf -n

FORTRAN texto rf -f

troff rf -f

raster vf -v

texto plano if ninguna, -p, o -l

En nuestro ejemplo, el uso de lpr -d indica que la impresora requiere de la característica df, en su entrada delfichero /etc/printcap.

A pesar de lo que otros puedan opinar, formatos como texto de FORTRAN o plot, son probablemnte obsoletos. A sugusto, usted puede encontrar nuevos usos de estos formatos, así como a cualquier otro con el simple hecho de instalarlos filtros adecuados. Por ejemplo, supongamos que desea imprimir ficheros de tipo Printerleaf (que son ficherosgenerados 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 sususuarios a que utilicen el comando lpr -g para llevar a cabo “impresiones de ficheros Printleaf”.

10.4.1.4.3. Instalando Filtros de Conversión

Considerando que los filtros de conversión son programas que usted instala independientemente de la instalaciónbase de FreeBSD, probablemente el mejor lugar para colocarlos sería bajo el directorio /usr/local. El directorio/usr/local/libexec es un lugar común, en virtud de que estos son programas especiales que sólo seránejecutados por LPD; los usuarios comunes no necesitarán ejecutarlos nunca.

Para habilitar un filtro de conversión, deberá especificar su ruta bajo la característica adecuada, en la entrada de laimpresora correspondiente en el fichero /etc/printcap.

En nuestro ejemplo, añadiremos el filtro de conversión DVI, para la impresora llamada bamboo. He aqui un ejemplodel fichero /etc/printcap que hemos estado utilizando, con la nueva característica df, para la impresora bamboo.

## 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:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\:sh:sd=/var/spool/lpd/bamboo:\:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\:if=/usr/local/libexec/psif:\:df=/usr/local/libexec/psdf:

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

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

Este script ejecuta dvips en modo de filtro (la 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 Planoen Impresoras PostScript), con las opciones que LPD haya pasado al script. El comando lprps hará uso de esasopciones para llevar la cuenta de las páginas impresas.

10.4.1.4.4. Más Ejemplos de Filtros de Conversión

Considerando que no existe una serie de pasos establecida, para instalar filtros de conversión, me permito mostraralgunos ejemplos más. Puede usarlos tal como aparecen, si es que se ajustan a sus necesidades.

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 impresoraHewlett Packard LaserJet III-Si:

#!/bin/sh## hpvf - Convierte ficheros GIF a HP/PCL, posteriormente los imprime# Instalado en /usr/local/libexec/hpvf

PATH=/usr/X11R6/bin:$PATH; export PATHgiftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \

&& exit 0 \|| exit 2

Esto trabaja convirtiendo el fichero GIF a cualquier tipo de fichero mapa portable, y conviritendo eso a un mapa enescala de grises, y ese mapa de regreso a un fichero portable de mapa de bits, y finalmente eso a datos compatiblescon 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 impresoraPostScript 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 laimpresora 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 detexto para FORTRAN, usando impresoras que pueden imprimir directamente texto plano. Lo instalaremos para laimpresora teak:

109

Capítulo 10. Imprimiendo

#!/bin/sh## hprf - Filtro de Texto FORTRAN para LaserJet 3si:# Instalado en /usr/local/libexec/hprf#

printf "\033&k2G" && fpr && printf "\033&l0H" &&exit 0

exit 2

Y 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 laimpresora LaseJet teak comentada anteriormente. Primero, la parte sencilla: actualizaremos /etc/printcap conla 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 deDVI-a-LaserJet/PCL. La Colección de Ports de FreeBSD (vea La Colección de Ports) cuenta con uno, el nombre delpaquete es: dvi2xx. Al instalar este programa, nos brinda la funcionalidad que buscamos, dvilj2p, el cualconvierte 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 laentrada estandar. Este desea trabajar desde un nombre de fichero. Y lo que es peor, es que el nombre del fichero debecontar 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 comoextensió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. Losenlaces 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 quetermine 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 lacola de impresión (especificado en /etc/printcap por la característica sd). Este lugar es perfecto para que losfiltros hagan su trabajo, especialmente que aqui existe más espacio (algunas veces) en disco duro, que bajo eldirectorio /tmp.

Finalmente, aqui presentamos el filtro:

#!/bin/sh## hpdf - Impresion de datos DVI en una impresora HP/PCL# Instalado en /usr/local/libexec/hpdf

PATH=/usr/local/bin:$PATH; export PATH

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

110

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

cleanupexit 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#cleanupexit 0

111

Capítulo 10. Imprimiendo

10.4.1.4.5. Conversión Automática: Una Alternativa A Los Filtros De Conversión

Todos estos filtros de conversión realizan una gran labor en pro de sus labores de impresión, pero con elinconveniente de que cada usuario debe especificar cual filtro es el que se debe utilizar (cuando se invoca el comandolpr(1)). Si sus usarios no son lo que podemos llamar aficionados a la computación, el especificar que filtro utilizarpuede volverse algo molesto. Y lo que es peor, el uso de un filtro inadecuado puede causar que su impresora termineimprimiendo cientos de hojas de papel de manera incorrecta.

En lugar de instalar filtros de conversión, quizás le interese intentar que su filtro de texto (dado que es el filtro pordefault) determine que tipo de fichero se esta enviando a imprimir y automáticamente ejecute el filtro adecuado. Eneste caso, herramientas como file pueden ser de mucha utilidad. Claro esta, puede que algunos tipos de ficherospuede ser difícil determinar de que tipo son, pero siempre puede contar con filtros especiales para ellos.

La Colección de Ports de FreeBSD cuenta con un filtro de texto que ejecuta de forma automática la conversión,llamado apsfilter. Este puede detectar texto plano, PostScript y ficheros DVI, ejecutar la conversión adecuada eimprimir.

10.4.1.5. Filtros de Salida

El sistema de cola de impresión de LPD soporta otro tipo de filtros, que aun no hemos explicado aqui: un filtro desalida. Un filtro de salida esta diseñado para imprimir texto plano únicamente, como el filtro de texto, pero de unaforma más simplificada. Si usted esta usando un filtro de salida pero no filtro de texto, entonces:

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

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

• En el filtro de salida, LPD no utiliza como argumento el nombre de usuario o host, por lo tanto no esta diseñadopara llevar un conteo por usuario. De hecho, este sólo maneja dos argumentos:

nombre-filtro -wancho -llargo

Donde ancho es tomado de la característica pw y largo es tomado de la característica pl, para la impresora encuestión.

Es importante que no se deje seducir por la simplicidad del filtro de salida. Si usted desea que cada fichero de untrabajo sea impreso en una página diferente, el filtro de salida no hará este trabajo. Utilice un filtro de texto (tambiénconocido como filtro de entrada); vea la sección Instalando un Filtro de Texto . Mas allá, el filtro de salida es dehecho más complicado en ese aspecto dado que examina la cadena de bytes que se ha enviado, para buscar algunamarca 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 unsecuencia de escape u otras cadenas de inicialización para habilitar la impresión de encabezados. (Aunque tambiénes trivial si desea cobrar de acuerdo a las páginas encabezado de cada usuario, dado que LPD no otorga informacióndel 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, LPDiniciará 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á elfiltro 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 desalida. Si desea un trabajo rápido-y-sucio del filtro de salida, pero no desea que se escriban bytes de detección, nienvien códigos, puede usar lpf. También puede incluir lpf en un script de shell, para que controle cualquier códigode inicialización que la impresora requiera.

10.4.1.6. lpf: Un Filtro de Texto

El programa /usr/libexec/lpr/lpf que viene con los binarios de FreeBSD, como un filtro de texto (filtro deentrada) que puede darle sangía a los trabajos (usando la opción lpr -i), que permite el envío literal de caracteres(con el comando lpr -l), ajusta la posición de impresión para caracteres de retroceso y tabulador, y contabiliza laspáginas impresas. También puede funcionar como un filtro de salida.

lpf se ajusta a la configuración de gran cantidad de impresoras. Y aunque no tiene la habilidad de enviar secuenciasde inicialización a la impresora, es muy sencillo escribir un script de shell para llevar a cabo la inicialización yposteriormente ejecutar lpf.

Para efecto de que lpf lleve un conteo correcto, requiere que se tengan los valores adecuados de las característicaspw y pl, en el fichero /etc/printcap. En base a estos, determina cuanto texto puede existir en una página ycuantas páginas existen en el trabajo de un usuario. Para mayor información al respecto, vea la sección Contabilidaddel Uso de la Impresora.

10.4.2. Páginas de EncabezadoSi usted cuenta con gran cantidad de usuarios, y todos imprimiendo en varias impresoras, entonces sería convenienteconsiderar las páginas de encabezado como un mal necesario.

Las páginas de encabezados, también conocidas como titulares o páginas de aviso identifican a quien pertenece eltrabajo enviado a imprimir, una vez que han sido impresos. Normalmente estas son impresas en letras grandes y decolor negro remarcado (negritas), y quizás con bordes decorativos, de tal forma que puedan distinguirse entre el restode las páginas enviadas a imprimir. Estas permiten a los usuarios localizar rápidamente sus impresiones. El obviolado negativo de estas páginas es que se debe imprimir una hoja adicional, por cada trabajo enviado a la impresora,su utilidad efímera, no dura más que unos minutos, terminando en una bandeja de reciclaje. (Note que las páginas deencabezado se imprimen con cada trabajo enviado a la impresora, no con cada página impresa, de tal manera que eldeperdicio de papel no es tan grave.)

El sistema LPD puede proveerle de las páginas de encabezado de forma automática para sus impresiones, si suimpresora soporta de la impresión de texto plano directamente. Si usted cuenta con una impresora PostScript,necesitará un programa externo para generar estas páginas; vea la sección Páginas de Encabezado en ImpresorasPostScript.

113

Capítulo 10. Imprimiendo

10.4.2.1. Habilitando las Páginas de Encabezado

En la sección Configuración Simple de una Impresora, deshabilitamos la impresión de estas páginas al especificar sh(que son siglas en inglés para “supress header”, algo así como “eliminar encabezados”) en el fichero/etc/printcap. Para efecto de habilitar la impresión de páginas de encabezado, simplemente elimine lacaracterística sh del fichero.

¿Suena demasiado fácil, verdad?

Efectivamente. Es probable que deba proveer de un filtro de salida, para efecto de que se mande la cadena deinicialización a la impresora. Aqui tenemos un ejemplo de un filtro de salida para impresoras compatibles con PCLde Hewlett Packard:

#!/bin/sh## hpof - Filtro de salida para impresoras compatibles con Hewlett Packard PCL# Instalado en /usr/local/libexec/hpof

printf "\033&k2G" || exit 2exec /usr/libexec/lpr/lpf

Especifique la ruta del filtro de salida, en la característica of. Vea la sección Filtros de Salida para más informaciónal 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 encabezadopor cada trabajo que manden a imprimir. Si los usuarios desean pasar un tiempo buscando sus impresiones, puedendeshabilitar 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 uncaracter diferente de alimentación de página, especifíquelo en el fichero /etc/printcap, bajo la característicaff.

10.4.2.2. Controlando las Páginas de Encabezado

Al habilitar las páginas de encabezado, LPD produce un encabezado largo, una página completa con letras largasque identifican el usuario, la maquina host, y el trabajo. Aqui tenemos un ejemplo (kelly ha impreso un trabajollamado outline, desde el host rose):

114

Capítulo 10. Imprimiendo

k ll llk l lk l lk k eeee l l y yk k e e l l y yk k eeeeee l l y ykk k e l l y yk k e e l l y yyk k eeee lll lll yyy y

yy yyyyy

llt l it l

oooo u u ttttt l ii n nnn eeeeo o u u t l i nn n e eo o u u t l i n n eeeeeeo o u u t l i n n eo o u uu t t l i n n e eoooo uuu u tt lll iii n n eeee

r rrr oooo ssss eeeerr r o o s s e er o o ss eeeeeer o o ss er o o s s e er oooo ssss eeee

Job: outlineDate: 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 unahoja blanca nueva (a menos que cuente con sf (por sus siglas en inglés “supress form feed”, que es “eliminación dealimentació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í:

rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995

Por default, LPD imprime la página de encabezado en primer término y posteriormente el trabajo. Para cambiar estecomportamiento, es necesario incluir la característica hl (encabezado a lo último por sus siglas en inglés), en elfichero /etc/printcap.

10.4.2.3. Conteo de P´ginas de Encabezado

Cuando se utiliza la utilidad integrada de conteo de LPD, refuerza el paradigma de que; cuando se refiere al conteode impresiones: las páginas de encabezados deben ser sin coto alguno.

¿Por qué?

Por que el filtro de salida es el único programa externo que puede llevar un conteo de las páginas impresas, cuandotiene el control, y este no es provisto con información de un usuario o host o algun fichero contador, de tal forma queno tiene idea de a quien cargar estas impresiones. Tampoco es conveniente, simplemente “cargar una impresión” altotal de las impresiones del filtro de texto o filtro de conversión (esos que cuentan con información del usuario yhost), esto en virtud de que los usuarios pueden suprimir el uso de estas páginas con lpr -h. Esto implica que se lepodrían cobrar hojas que ellos no imprimieron. Básicamente el comando lpr -h sería la opción preferida de losusuarios concientes del sistema, pero usted no puede ofrecer incentivo alguno para que se utilice.

Tampoco es una buena alternativa que cada filtro genere sus páginas de encabezado (y por lo tanto poder cobrar porellas). Si los usuarios desean suprimirlas usando la opción lpr -h, aún obtendrán estas páginas y les serán cobradas,en virtud de que LPD no tiene transfiere la opción -h a los filtros.

Así que, ¿Qué opciones tenemos?

Usted puede:

• Aceptar el paradigma de LPD y no cobrar por las páginas de encabezado.

• Instalar una alternativa a LPD, tal como LPRng. La sección Alternativas al Sistema de Impresión Estándar leinforma sobre otros programas que puede utilizar, que sustituyan a LPD.

• Escribir un filtro de salida inteligente. Normalmente, un filtro de salida no esta diseñado para hacer otra cosa, queno sea inicializar la impresora o bien hacer alguna conversión sencilla de caracteres. Esta diseñado para páginas deencabezado y trabajos en texto plano (cuando no existe algun filtro de texto (entrada)). Pero cuando si existe unfiltro de texto, para los trabajos en texto plano, entonces LPD sólo hará uso del filtro de salida para las páginas deencabezado. Y el filtro de salida puede pasar el texto de la página encabezado generado por LPD, para determinarel usuario y el host al cual se le cobrará dicha impresión. El único problema con este metodo es que el filtro desalida aún no sabe que fichero usar para llevar la cuenta de las impresiones (la característica af no pasa el nombredel fichero), pero si usted cuenta con un fichero establecido para llevar esta cuenta, puede incluirlo en el código delfiltro de salida. Para efecto de facilitar este paso, utilice la característica sh (encabezado corto) del fichero/etc/printcap. Nuevamente, todo esto podría resultar muy complicado, y los usuarios estaran muy agradecidoscon el generoso administrador del sistema que genera las páginas de encabezado gratis.

116

Capítulo 10. Imprimiendo

10.4.2.4. Páginas de Encabezado en Impresoras PostScript

Como se ha descrito anteriormente, LPD puede generar páginas encabezado en texto plano para gran cantidad deimpresoras. Claro esta, que PostScript no puede imprimir texto plano directamente, de tal forma que la habilidad deimprimir estas páginas de LPD, es inservible—o casi.

Una forma obvia de crear las páginas de encabezado, es hacer que cada filtro de conversión y de texto, creen suspáginas de encabezado. Los filtros deberán utilizar el nombre de usuario y host, para generar esta páginapersonalizada. Lo malo de este metodo es que los usuarios siempre obtendrán una página de encabezado, aun cuandousen en sus impresiones lpr -h.

Exploremos este metodo. El siguiente script considera tres argumentos (nombre del login del usuario, nombre delhost, y nombre del trabajo) y genera una página simple de encabezado PostScript:

#!/bin/sh## make-ps-header - crea una pagina de encabezado PostScript a stdout# Instalado en /usr/local/libexec/make-ps-header#

## Estas son unidades PostScript (72 a la pulgada). Modifiquelo para A4 o# cualquier tamano de papel que este utilizando.#page_width=612page_height=792border=72

## Verificar argumentos#if [ $# -ne 3 ]; then

echo "Usage: ‘basename $0‘ � user � � host � � job � " 1�&2

exit 1fi

## Salvar estos, principalmente para lectura de PostScript, mas abajo.#user=$1host=$2job=$3date=‘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 rlineto0 $page_height $border 2 mul sub rlinetocurrentscreen 3 -1 roll pop 100 3 1 roll setscreen$border 2 mul $page_width sub 0 rlineto closepath0.8 setgray 10 setlinewidth stroke 0 setgray

%% Desplegar nombre de login del usuario, bonito largo y prominente%/Helvetica-Bold findfont 64 scalefont setfont$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto($user) show

%% Ahora mostrar los aburridos detalle generales%/Helvetica findfont 14 scalefont setfont/y 200 def[ (Job:) (Host:) (Date:) ] {200 y moveto show /y y 18 sub def }forall

/Helvetica-Bold findfont 14 scalefont setfont/y 200 def[ ($job) ($host) ($date) ] {

270 y moveto show /y y 18 sub def} forall

%% Eso es todo%restoreshowpageEOF

Ahora, cada uno de los filtros de conversión y de texto, pueden invocar este script, para en primer lugar generar estapágina y después imprimir el trabajo del usuario. Aqui tenemos el filtro de conversión DVI que revisamosanteriormente 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}

while getopts "x:y:n:h:" option; docase $option in

x|y) ;; # Ignoren) login=$OPTARG ;;h) host=$OPTARG ;;*) echo "LPD started ‘basename $0‘ wrong." 1

�&2

exit 2;;

esacdone

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

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

Note como el filtro debe pasar los argumentos en orden, para efecto de determinar el nombre de usuario y host. Elprocedimiento para los otros filtros de conversión es identico. El filtro de texto tiene una pequeña variación (vea lasección Como Trabajan los Filtros).

Como hemos mencionado anteriormente, este esquema simplemente nos sirve para deshabilitar la opción “eliminarencabezados” (la opción -h) de lpr. Si los usuarios desean salvar algunos arboles (o algunos centavos si usted cobrapor estas páginas), no podrán deshabilitar esta opción, ya que cada filtro imprimirá una página de encabezado concada trabajo impreso.

Para permitir que los usuarios desactiven las páginas de encabezado en cada trabajo, será necesario que utilice eltruco del que hablamos en la sección Conteo de Páginas de Encabezado: escribir un filtro de salida que pase lapágina generada por LPD y produzca una versión PostScript de la misma. Si el usuario utiliza lpr -h, entoncesLPD no generará una página encabezado, y tampoco su filtro de salida. De otra forma, su filtro de salida tomará losdatos 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 unfiltro de salida, psof, que hace lo mencionado. Note que psof no cobra por las páginas de encabezado.

10.4.3. Impresión en RedFreeBSD cuenta con soporte para impresión en red: envío de trabajos a impresoras remotas. La impresión en red,normalmente se cuenta con dos escenarios:

• Accesando a una impresora que esta conectada a un host remoto. Esto es, una impresora que esta conectada poralgun medio convencional, como puerto serial o paralelo, en un host. Y por otro lado se habilita LPD para poderimprimir desde otros hosts de la red. La sección Impresoras Instaladas en Hosts Remotos le indica como haceresto.

119

Capítulo 10. Imprimiendo

• Accesando a una impresora que esta conectada directamente a la red. En este caso la impresora cuenta con undispositivo de red en adición (o en su lugar) del convencional paralelo o serial. Esta impresora puede funcionar dela 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 ImpresorasInstaladas 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” laimpresora a un host de la red, al hacer responsable, a dicho host, de la administración de los trabajos en la colade impresión y su envio a la impresora. La sección Impresoras con Interfaces de Red para Secuencia de Datos leda algunos consejos y sugerencias sobre como instalar estas impresoras.

10.4.3.1. Impresoras Instaladas en Hosts Remotos

El sistema de cola de impresión de LPD cuenta con soporte integrado para enviar trabajos de impresión a un hostremoto que cuente con LPD (o alguna sistema compatible con LPD). Esta habilidad le permite instalar unaimpresora en un host, y hacerla accesible desde otros hosts. También es útil con impresoras que cuentan coninterfaces de red que comprenden el protocolo de LPD.

Para habilitar la funcionalidad de impresión remota, primero instale la impresora en un host, que será el host deimpresión. Esto lo podemos hacer utilizando los pasos descritos en la sección Configuración Simple de unaimpresora. Realice cualquier configuración adicional adicional que se requiera, de acuerdo a lo descrito en la secciónConfiguración Avanzada de una Impresora. Asegurese de probar la impresora y de que esta funcionandocorrectamente, así como las funciones de LPD que haya habilitado. También asegurese de que el host local cuentacon autorización para usar el servicio de LPD en el host remoto (vea la sección Restricción de Trabajos deImpresoras Remotas).

Si usted esta utilizando una impresora que cuenta con un dispositivo de red, compatible con LPD, entonces el host deimpresión mencionado más adelante, será la misma impresora, y el nombre de la impresora será el nombre que ustedle haya asignado a la impresora. Vea la documentación que incluye su impresora y/o el dispositivo de impresión enred para detalles al respecto.

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 deimpresió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á estedirectorio 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 usuariosen el host orchid para que puedan imprimir en esas impresoras. Aqui tenemos el fichero /etc/printcap para elhost orchid (usado en la sección Habilitando las Páginas de Encabezado). Ya cuenta con la entrada para laimpresora 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:

# mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo# chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo# chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo

Ahora los usuarios de orchid pueden imprimir en rattan y bamboo. Si, por ejemplo, un usuario en orchid teclea

% lpr -P bamboo -d sushi-review.dvi

el sistema de cola de LPD en el host orchid, copiará el trabajo al directorio de cola /var/spool/lpd/bamboo ynotará que se trata de un trabajo DVI. Tan pronto como el host rose tenga espacio en el directorio de cola deimpresión de bamboo, los dos LPDs transferirán el fichero a rose. El fichero quedará en espera en la cola de rosehasta que sea impreso. Este será convertido de DVI a PostScript (dado que bamboo es una impresora PostScript), enrose.

121

Capítulo 10. Imprimiendo

10.4.3.2. Impresoras con Interfaces de Red para Secuencia de Datos

Comunmente, cuando usted adquiere una tarjeta de red para impresoras, puede obtener dos versiones: una que emulala cola de impresión (que son las de mayor valor), o bien, otra que simplemente le permite recibir datos tal como lohace un puerto serial o paralelo (la versió económica). Esta sección le explica como utilizar la versión económica.Para el uso de la versión de mayor valor, vea la sección Impresoras Instaladas en Hosts Remotos.

El formato del fichero /etc/printcap le permite especificar que puerto serial o paralelo utilizar, y (en caso de queutilice un puerto serial) la velocidad de baudio, si utiliza control de flujo, retraso en tabulador, conversión de nuevaslíneas y más. Pero no hay manera de indicar la conexión de una impresora que escucha en un puerto TCP/IP u otropuerto de red.

Para efecto de enviar datos a una impresora en red, usted necesita crear un programa de comunicación que pueda serllamado desde un filtro de texto o de conversión. Aqui tenemos un ejemplo de dicho programa: el script netprint,que toma todos los datos de la entrada estandar y los envia a un impresora conectada a la red. Hemos especificado elnombre de host de la impresora como primer argumento y el puerto al que esta conectado como segundo argumento,en netprint. Note que este tipo de soporte sólo trabaja en una vía (de FreeBSD a la impresora); gran cantidad deimpresoras cuentan con soporte de ambas vías, y quizás desee tomar ventaja de esto (para obtener estatus deimpresión, contabilidad, desempeño, etc.).

#!/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’;

($ignore, $ignore, $protocol) = getprotobyname(’tcp’);($ignore, $ignore, $ignore, $ignore, $address)

= gethostbyname($printer_host);

$sockaddr = pack(’S n a4 x8’, &AF_INET, $printer_port, $address);

socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)|| die "Can’t create TCP/IP stream socket: $!";

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íneaDiablo 750-N conectada a la red. La impresora acepta datos para impresión en el puerto 5100. El nombre de host quetiene 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

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

10.4.4. Restricción del Uso de la ImpresoraEsta sección le da información sobre la restricción en el uso de la impresora. El sistema de LPD le permite controlarquien puede acceder a la impresora de ambas formas, local y remota, si los usuarios pueden imprimir múltiplescopias, que tan grandes pueden ser los trabajos de impresión, y limitar el tamaño de la cola de impresión.

10.4.4.1. Restricción de Copias Multiples

El sistema de LPD le facilita a los usuarios el imprimir múltiples copias de un mismo fichero. Los usuarios puedenusar (por ejemplo) lpr -#5 para imprimir 5 copias de cada fichero enviado. El hecho de que esto sea bueno o no esalgo que depende de usted.

Si usted siente que las copias múltiples causan trabajo inecesario a su impresora, puede deshabilitar la opción -# delpr(1), al incluir la característica sc en su fichero /etc/printcap. Cuando los usuarios utilicen la opción -# almomento de imprimir, verán el siguiente aviso:

lpr: multiple copies are not allowed

Recuerde que si usted a configurado una impresora para su acceso de forma remota (vea la sección ImpresorasInstaladas 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 hostdiferente.

Aqui presentamos un ejemplo. Este es un ejemplo del fichero /etc/printcap, del host rose. La impresorarattan es “de batalla” por lo que permitiremos las copias múltiples, pero la impresora laser bamboo es másdelicada 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:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\:sh:sd=/var/spool/lpd/bamboo:sc:\:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\:if=/usr/local/libexec/psif:\:df=/usr/local/libexec/psdf:

Ahora, tambié debemos añadir la característica sc en el fichero /etc/printcap del host orchid (y ya que estamosen 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 bambooteak|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:

rattan|line|diablo|lp|Diablo 630 Line Printer:\:lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\:lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:

Al incluir la característica sc, hemos prevenido el uso de lpr -#, pero eso no previene el uso de lpr(1) grancantidad de veces, o el envío del mismo trabajo varias veces, tal como:

% lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign

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

10.4.4.2. Restricción de Acceso a Impresoras

Usted puede controlar quien puede imprimir y en que impresoras, haciendo uso del mecanismo de grupos de Unix yde la característica rg en el fichero /etc/printcap. Simplemente añada en un grupo determinado, a los usuariosque desea puedan imprimir en cierta impresora, y después añada el nombre del grupo a la característica rg.

Todos los usuarios que no pertenezcan a este grupo (incluyendo al superusuario (root)), y que deseen imprimir en laimpresora controlada, les aparecerá este mensaje: lpr: Not a member of the restricted group

De la misma forma que hicimos con sc (la eliminación de copias múltiples), con rg deber´ indicarla en los hostsremotos que tengan acceso a sus impresoras si lo cree conveniente (vea la sección Impresoras Instaladas en HostsRemotos).

Por ejemplo, vamos a permitir que cualquiera imprima en rattan, pero solo aquellos que forman parte del grupoartistas podrán usar la impresora bamboo. Nuevamente tenemos el fichero /etc/printcap para el host rose:

## Fichero /etc/printcap del host rose - grupo restringido para bamboo#rattan|line|diablo|lp|Diablo 630 Line Printer:\

:sh:sd=/var/spool/lpd/rattan:\:lp=/dev/lpt0:\:if=/usr/local/libexec/if-simple:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\:sh:sd=/var/spool/lpd/bamboo:sc:rg=artistas:\:lp=/dev/ttyd5:fs#0x82000e1:xs#0x820:rw:\:if=/usr/local/libexec/psif:\:df=/usr/local/libexec/psdf:

Vamos a dejar de lado el otro fichero /etc/printcap de ejemplo (el del host orchid). Claro esta, que cualquierusuario desde orchid puede imprimir en bamboo. En este caso podriamos aceptar sólo ciertos accesos desdeorchid, y esto les daría acceso a la impresora. O no.

124

Capítulo 10. Imprimiendo

Nota: Sólo puede haber un grupo restringido por impresora.

10.4.4.3. Controlando el Tamaño de los Trabajos Enviados

Si usted cuenta con gran cantidad de usuarios accesando sus impresoras, probablemente necesite establecer un límitemáximo en el tamaño que deban tener los trabajos enviados a imprimir. Después de todo, sólo existe tanto espaciolibre en el sistema de ficheros como el que se tiene en los directorios de cola, y también usted debe asegurarse de queexista el espacio suficiente para otros usuarios.

El sistema de LPD, le permite especificar un monto maximo de tamaño en bytes para un trabajo, con la característicamx. Las unidades están indicadas en blques BUFSIZ, que son de 1024 bytes. Si usted le agrega un cero a estacaracterística, no habrá límite en el tamaño de los trabajos que se puedan enviar a imprimir; por otro lado, si no seespecifica la característica mx, el límite por default será de 1000 bloques.

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ónhasta el límite indicado. El resto del trabajo quedará descartado. El hecho de que este comportamiento sea correcto ono, 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 impresorade 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 deforma 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 lasecció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ónRestricción de Trabajos de Impresoras Remotas.

10.4.4.4. Restricción de Trabajos de Impresoras Remotas

El sistema de cola de LPD cuenta con varios metodos para restringir la impresión de trabajos enviados por hostsremotos:

Restricciones del Host

Haciendo uso de los ficheros /etc/hosts.equiv y /etc/hosts.lpd, usted puede controlar el LPD local,para determinar de que hosts remotos se acepten conexiones. En este caso, LPD verifica, en caso de unapetición, que el host remoto se encuentre listado en agluno de estos dos ficheros. Si no es así, LPD rechazará lapetición.

El formato de estos ficheros es simple: el nombre de un host por línea. Note que el fichero /etc/hosts.equivtambién es usado por el protocolo ruserok(3), y afecta programas como rsh(1) y rcp(1), así que tenga cuidado aleditarlo.

Por ejemplo, este es el fichero /etc/hosts.lpd del host rose:

orchidvioletmadrigal.fishbaum.de

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

Restricciones de Tamaño

Usted puede controlar cuanto espacio libre se requiere, en el sistema de fichero donde se localiza el directoriodel sistema de impresión. Cree un fichero llamado minfree, en el directorio local de la cola de impresión. Enese fichero añada un numero que representa el numero de bloques libres que deben haber en el disco (512bytes), 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 darcierta prioridad a los usuarios locales: ya que podrá colocar sus trabajos en espera en la cola de impresión, hastaque 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 son6144 bloques de disco) como espacio libre que debe existir en el sistema de ficheros, para que LPD aceptetrabajos remotos:

# echo 6144�

/var/spool/lpd/bamboo/minfree

Restricciones por Usuario

Usted puede controlar que usuarios remotos pueden imprimir en impresoras locales, al incluir la característicars en /etc/printcap. Cuando rs aparece en la entrada de una impresora que esta conectada localmente,LPD aceptará trabajos de usuarios remotos, siempre y cuando el usuario que ha enviado el trabajo, tenga algunacuenta, con el mismo nombre de usuario en el host local. De otra forma LPD no hará el trabajo.

Esta característica es particularmente útil en medios donde (por ejemplo) existen varias areas que compartenuna red, y algunos usuarios traspasan las fronteras departamentales. Al otorgarles una cuenta en su sistema,pueden hacer uso de sus impresoras, desde su propio departamento de sistemas. Si solo desea permitirles haceruso de sus impresoras y no de los recursos de su sistema, puede asignarles cuentas “tontas” (token accounts),que no cuentan con un directorio home y con un un shell inservible como /usr/bin/false.

10.4.5. Contabilidad del Uso de la ImpresoraAsí que usted requiere de cobrar por las impresiones. ¿Y por qué no?, el papel y la tinta cuestan dinero. Y tambiénestán los costos de mantenimiento—las impresoras estan llenas de partes móviles que tienden a descomponerse.Usted ha analizado sus impresoras, los patrones de uso, y costos de mantenimiento y ha llegado a un costo por-página(o por-pie, por-metro, o por-loquesea). Ahora bien, ¿Cómo empezar a llevar una contabilidad de las impresiones?.

Bueno, la mala noticia es que LPD no provee de mucha ayuda en esta area. El conteo depende en gran parte en eltipo de impresora con que usted cuenta, el formato en que se imprime y de sus requerimientos para cobrar por el usode la impresora.

Para implementar un contador, deberá modificar el filtro de texto (para cobrar por impresiones en texto plano) y losfiltros de conversión (para cobrar por impresiones en otro formato), para efecto de llevar un conteo de páginas opeticiones a la impresora para imprimir. Esto no podrá llevarse a cabo con un simple filtro de salida, dado que nopuede llevar un conteo. Vea la sección Filtros.

En términos generales existen dos formas de hacer esto:

• El contador periodico es la forma más comun, quizás por que es la más sencilla. Cuando alguien envia unaimpresión, el filtro registra el usuario, host y numero de páginas en un fichero contador. Cada mes, semestre, año ocualquier periodo de tiempo que prefiera, puede revisar estos ficheros, de tal forma que sepa cuantas impresionesha realizado cada usuario y poder cobrar por las mismas. Después de limpiar estos ficheros puede empezar unnuevo periodo de cero.

• El contador por tiempo es menos conocido, quizás por su dificultad de uso. Este metodo hace que sus filtroscobren al usuario por sus impresiones, en cuanto hacen uso de las impresoras. Como las cuotas de disco, el conteoes 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 estemetodo 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: ustedcuenta con una enorme flexibilidad en cuanto a metodos de contabilidad se refiere. Por ejemplo, puede utilizar uncontador 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.

10.4.5.1. Contabilidad de Impresiones Rápida y Sucia

FreeBSD cuenta con dos programas que pueden auxiliarlo para instalar un simple contador periodico. Ellos son; elfiltro de texto lpf, descrito en la sección lpf: un Filtro de Texto, y pac(8), un programa para reunir y totalizar lainformación de los ficheros de contador de impresiones.

Como se menciono en la sección de filtros (Como Trabajan los Filtros), LPD inicia los filtros de texto y conversióncon el nombre del fichero contador a usar en la línea de comando del filtro. Los filtros pueden usar este argumentopara saber en donde registrar la información. El nombre de este fichero se indica en la característica af del fichero/etc/printcap, y si no se indica su ruta completa, se hará referencia al directorio de la cola de impresión.

LPD inicia lpf con los argumentos de alto y ancho del papel (tomados de pw y pl). lpf usa estos argumentos paradeterminar cuanto papel será necesario. Una vez enviado el fichero a impresión, se escribe en el fichero contador unregistro. Este registro es así:

2.00 rose:andy3.00 rose:kelly3.00 orchid:mary5.00 orchid:mary2.00 orchid:zhang

Deberá usar un fichero contador para cada impresora, dado que lpf no cuenta con una lógica de bloqueo de ficherosincluida, y dos lpf escribiendo al mismo tiempo en un fichero podrian corromperlo. Una forma segura paragarantizar el uso de ficheros distintos por impresora, es usar af=acct en el fichero /etc/printcap. De esta formacontaremos con el fichero contador de cada impresora por separado, en el directorio de la cola de impresión, en unfichero llamado acct.

Cuando sea el momento de cobrar a los usuraios, ejecute el programa pac(8). Sólo dirijase al directorio de cola, delcual desea recabar la información y teclee pac. Usted obtendrá un resumen similar al siguiente:

Login pages/feet runs priceorchid:kelly 5.00 1 $ 0.10orchid:mary 31.00 3 $ 0.62orchid:zhang 9.00 1 $ 0.18rose:andy 2.00 1 $ 0.04rose:kelly 177.00 104 $ 3.54rose:mary 87.00 32 $ 1.74rose:root 26.00 12 $ 0.52

total 337.00 154 $ 6.74

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

128

Capítulo 10. Imprimiendo

-Pimpresora

De que impresora hacer el resumen. Esta opción funciona, solo si existe una ruta absoluta, en lacaracterí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 delhost 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 lacaracterística pc del fichero /etc/printcap, o dos centavos (precio por default). Puede indicar el preciocomo un numero de punto flotante.

-r

Invertir el orden de acomodo.

-s

Crear un fichero de resumen y reiniciar el fichero contador.

nombre ...

Imprimir la 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 desdediferentes hosts. Si en su sitio, el host no es importante (por que los usuarios pueden usar cualquier host), ejecutepac -m, para producir el siguiente resumen:

Login pages/feet runs priceandy 2.00 1 $ 0.04kelly 182.00 105 $ 3.64mary 118.00 35 $ 2.36root 26.00 12 $ 0.52zhang 9.00 1 $ 0.18

total 337.00 154 $ 6.74

Para calcular el monto adeudado, pac(8) utiliza la característica pc del fichero /etc/printcap (que por defaultutiliza 200, o 2 centavos por página). Especifique en cientos de centavos el precio a cobrar por página o por pie, quedesea cobrar, en esta característica. Puede reemplazar este valor cuando ejecuta pac(8) con la opción -p. Lasunidades 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 lasutilidades 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 ficherocontador de la impresora, pero con _sum al inicio del fichero. Posteriormente reinicia el fichero contador. Cuandoejecuta pac(8) nuevamente, lee el fichero resumen, para obtener los totales y posteriormente añade la información delfichero contador normal.

10.4.5.2. ¿Cómo Contabilizar las Páginas Impresas?

Para efecto de que pueda obtener un conteo más cercano a la realidad, necesita poder determinar cuanto papel utilizacada trabajo. Este es el problema esencial del conteo de impresiones.

Para impresiones en texto, este problema no es tan difícil de resolver: puede contabilizar el numero de líneas quetiene un trabajo y dividirlas entre el numero de líneas totales por página que maneja la impresora. No olvidecontabilizar los retrocesos del fichero que sobreimprimen líneas, o de las largas líneas lógicas que se justifican en enuna o más líneas físicas.

El filtro de texto lpf (introducido en lpf: un Filtro de Texto) toma en cuenta todas estas cosas cuando hace el conteo.Si usted esta escribiendo un filtro de texto que requiere contabilizar, quizás desee examinar el código fuente del lpf.

Pero, ¿Cómo manejar otros formatos?

Bueno, para conversiones DVI-a-LaserJet o DVI-a-PostScript, puede hacer que su filtro pase la información de salidaa dvilj o dvips y ver cuantas páginas fueron convertidas. Puede hacer cosas similares con otros formatos y filtrosde conversión.

Pero estos metodos sufren del hecho de que la impresora puede no imprimir estas páginas. Po ejemplo, se puedenatorar, acabarse la tinta, o explotar—y el usuario de todas formas se le cobrará.

Entonces, ¿qué puede hacer?

Sólo existe una forma segura de llevar un conteo confiable. Adquiera una impresora que pueda indicarle cuantopapel utiliza, y conectela por medio de un puerto serial o en red. Casi todas las impresoras PostScript cuentan consoporte para esto. Existen otras marcas u modelos que también cuentan con el soporte (por ejemplo, las impresorasen red Imagen laser). Modifique los filtros de estas impresoras para que lleven un conteo de las oáginas impresas yque almacenen los registros basados en el valor only. No se requiere de un conteo de líneas o de examinar el ficherode errores.

Claro esta que usted puede ser muy generoso y no cobrar por las impresiones.

10.5. Uso de las ImpresorasEsta sección le indica como usar las impresoras que ha instalado con FreeBSD. Aqui tenemos los comandos deusuario mas comunes:

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 deImpresió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 impresorarealizar la impresión/petición, de acuerdo a lo indicado en /etc/printcap. Esto le permite imprimir, remover oconsultar los trabajos en varias impresoras. Si no usa el argumento -P, estos comandos haran uso de la impresoraespecificada en la variable de entorno PRINTER. Finalmente, si no cuenta con la variable de entorno PRINTERdefinida, 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 entornoPRINTER, o en su defecto a la impresora nombrada lp, cuando no este definida la variable de entorno PRINTER.

10.5.1. Trabajos de ImpresiónPara imprimir un fichero, teclee:

% lpr fichero ...

Lo anterior imprimirá los ficheros nombrados, en la impresora por default. Si no indica el nombre del fichero, lpr(1)leerá los datos a imprimir de la entrada estandar. Por ejemplo, este comando imprime algunos ficheros importantesdel sistema:

% lpr /etc/host.conf /etc/hosts.equiv

Para seleccionar una impresora, teclee:

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

Este ejemplo imprime una larga lista del directorio actual, en la impresora nombrada rattan:

% ls -l | lpr -P rattan

En virtud de que no se le paso fichero alguno para imprimir a lpr(1), lpr toma los datos de la entrada estandar, queen 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 conversionesa los ficheros, generar copias multiples, etc.. Para mayor información, vea la sección Opciones de Impresión.

10.5.2. Verificando los TrabajosCuando usted utiliza lpr(1) para imprimir, los datos que desea imprimir se colocan juntos en un paquete llamado“trabajo de impresión”, el cual es enviado al sistema de cola de LPD. Cada impresora cuenta con un orden deimpresión de trabajos, y su trabajo espera su turno en este orden, junto con otros trabajos suyos y de otros usuarios.El criterio del orden será los primeros-en-llegar son los primeros-en-salir.

Para ver los trabajos pendientes de la impresora por default, teclee lpq(1). Para una impresora en especial, use laopción -P. Por ejemplo, el comando

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:

bamboo is ready and printingRank Owner Job Files Total Sizeactive kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes2nd kelly 10 (standard input) 1635 bytes3rd mary 11 ... 78519 bytes

Esto muestra que hay tres trabajos en espera, para bamboo. El primer trabajo enviado por el usuario kelly, tieneasignado en “numero de trabajo” 9. Cada trabajo en una impresora, se le asigna un numero único. La mayor parte deltiempo puede ignorar el numero de trabajo, pero este será necesario en caso de que desee cancelar el trabajo; vea lasecció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 deun 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 comandolpr(1) por la entrada estandar. El tercer trabajo proviene del usuario mary; que es un trabajo mucho mas grande. Laruta 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 estemomento (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 unejemplo de lpq -l:

waiting for bamboo to become ready (offline ?)kelly: 1st [job 009rose]

/etc/host.conf 73 bytes/etc/hosts.equiv 15 bytes

kelly: 2nd [job 010rose](standard input) 1635 bytes

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

10.5.3. Eliminando TrabajosSi cambia de parecer con respecto a imprimir un trabajo, puede eliminarlo de los trabajos pendientes, con elcomando lprm(1). Incluso puede usar el comando lprm(1) para elminar un trabajo activo, pero algunos o todos losdemas trabajos aun seran impresos.

Para eliminar un trabajo de la impresoras por default, primero use lpq(1) para saber el numero de trabajo. Despuéteclee:

% lprm numero-trabajo

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

132

Capítulo 10. Imprimiendo

% lprm -P bamboo 10

El comando lprm(1) cuenta con algunas opciones:

lprm -

Elimina todos los trabajos (de la impresora por default) y que le pertenezcan a usted.

lprm usuario

Elimina todos los trabajos (de la impresora por default) que pertenecen a usuario. El superusuario puedeeliminar 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 dela 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. Porejemplo, 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 delcual se enviaron dichos trabajos, incluso si la impresora esta habilitada desde otros hosts. La siguientesecuencia de comandos demuestra esto:

% lpr -P rattan mifichero% rlogin orchid% lpq -P rattanRank Owner Job Files Total Sizeactive seeyan 12 ... 49123 bytes2nd kelly 13 mifichero 12 bytes% lprm -P rattan 13rose: Permission denied% logout% lprm -P rattan 13dfA013rose dequeuedcfA013rose dequeued

10.5.4. Más alla del Texto Plano: Opciones de ImpresiónEl comando lpr(1) cuenta con soporte para multiples opciones que controlan el formato del texto, conversión degráficos y otros formatos, producción de copias multiples, manejo de los trabajos, y más. Esta sección describe estasopciones.

133

Capítulo 10. Imprimiendo

10.5.4.1. Opciones de Formato y Conversión

Las siguientes opciones de lpr(1) controlan el formato de los ficheros en el trabajo. Utilice estas opciones si el trabajono es de texto plano o si desea dar formato al texto plano por medio de la utilidad pr(1).

Por ejemplo, el siguiente comando imprime un fichero DVI (desde un sistema de escritura TeX) llamadofish-report.dvi a la impresora bamboo:

% lpr -P bamboo -d fish-report.dvi

Estas opciones aplican para todos los ficheros dentro del trabajo, por lo que no debe mezclar (por decir) ficheros DVIy ditroff en el mismo trabajo. Para hacer esto, envie los trabajos a imprimir por separado, usando la opción quecorresponda a cada trabajo.

Nota: Todas estas opciones, excepto -p y -T requieren de filtros de conversión instalados para la impresoradestino. Por ejemplo, la opción -d requiere de un filtro para DVI. La sección Filtros de Conversión le da másdetalles al respecto.

-c

Imprimir ficheros cifplot.

-d

Imprimir ficheros DVI.

-f

Imprimir ficheros de texto FORTRAN.

-g

Imprimir datos plot.

-inumero

Sangrar la salida con el numero de columnas indicado; si omite numero, el numero será de 8 columnas. Estaopción trabaja bien solo con algunos filtros de conversión.

Nota: No debe dejar espacios entre la opción -i y el numero.

-l

Imprimir datos de texto literal, incluyendo caracteres de control.

-n

Imprimir datos ditroff (troff independiente del dispositivo).

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 seusa con -p.

-t

Imprimir datos troff.

-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), enla impresora por default:

% zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t

El comando zcat(1) descomprime la fuente de la página de ayuda ls(1) y lo pasa al comando troff(1), que le daformato y crea la salida GNU troff, la cual es pasada a lpr(1), que envia el trabajo a la cola de LPD. Como usamos laopció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.

10.5.4.2. Opciones para Manejar los Trabajos

Las siguientes opciones de lpr(1), le indican a LPD que debe manejar el trabajo de una forma especial:

-# copias

Producir un numero de copias de cada fichero en el trabajo, en vez de una sola copia. Un administrador puedeinhabilitar esta oprción para reducir el desgaste de la impresora y alentar el uso de la fotocopiadora. Vea lasección Restriccón de Copias Multiples.

Este ejemplo imprime tres copias de parser.c seguido de tres copias de parser.h en la impresora pordefault:

% 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 cuentacuando 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 ahorraespacio 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 unode 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 hostremoto, 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 quehayan sido impresos, cuando se use la opción -s. Tenga cuidado con esta opción!

10.5.4.3. Opciones de Páginas de Encabezado

Cuando alguna de las siguientes opciones son pasadas a lpr(1), ajustan el texto que normalmente aparece en la páginaencabezado del trabajo. Si las páginas de encabezado son suprimidas, estas opciones no tendrán efecto alguno. Vea lasección Páginas de Encabezado para más información sobre la configuración de las Páginas de Encabezado.

-C texto

Reemplazar el nombre del host del encabezado con este texto. Normalmente el nombre del host es el nombredel 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 elnombre 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 generarlas páginas de encabezado. Vea la sección Páginas de Encabezado para más detalles.

10.5.5. Administración de la Cola de Impresión de LPDComo administrador de sus impresoras, usted deberá instalarlas, configurarlas, y probarlas. Con el comando lpc(8)usted podrá interactuar con las impresoras de una forma más completa. Con lpc(8) usted podrá

136

Capítulo 10. Imprimiendo

• Iniciar y detener las impresoras

• Habilitar y deshabilitar sus trabajos pendientes

• Modificar el orden de los trabajos pendientes.

Primero, una nota de terminología: si una impresora es detenida, no podrá contar con una cola de trabajospendientes. Los usuarios podrán enviar sus trabajos, que quedarán en espera hasta que la impresora se iniciada o sucola de trabajos pendientes sea purgada.

Si la cola de trabajos pendientes es deshabilitada, ningun usuario (excepto root) podrá enviar trabajos a laimpresora. Una cola de trabajos pendientes habilitada, permitirá el envio de trabajos. Una impresora puede seriniciada para una cola de trabajos que esta deshabilitada, en cuyo caso continuará imprimiendo los trabajos de la colade trabajos pendientes, hasta que ya no exista ninguno.

En general, usted debe de contar con privilegios de root para hacer uso del comando lpc(8). Los usuarios comunessolo pueden usar lpc(8) para verificar el estatus de una impresora y para reiniciar una impresora detenida.

Aqui tenemos un resumen de los comandos de lpc(8). La mayor parte de estos comandos usan el argumentonombre-impresora para indicarle en cual debe operar. Como este argumento puede usar all, para indicarle queopere en todas las impresoras listadas en el fichero /etc/printcap.

abort nombre-impresora

Cancelar el trabajo actual y detener la impresora. Los usuarios podrán aun enviar sus trabajos si la cola dependientes esta habilitada.

clean nombre-impresora

Eliminar ficheros viejos del directorio de cola de impresión. Ocasionalmente, los ficheros que ya han sidoimpresos no son eliminados correctamente por LPD, particularmente si hubo errores durante la impresión o sise realizaron otros trabajos administrativos durante la misma. Este comando localiza ficheros que no pertenecenal directorio y los elimina.

disable nombre-impresora

Deshabilita la cola de pendientes para nuevos trabajos. Si la impresora esta activa, se continuan imprimiendo lostrabajos en la cola de pendientes. El superusuario (root) siempre podrá enviar trabajos, incluso cuando se useesta opción.

Este es un comando útil cuando se esta probando una nueva impresora o instalando un filtro: deshabilitar la colade pendientes y enviar los trabajos como root. Otros usuarios no podrán enviar trabajos, hasta que la impresorahaya sido configurada correctamente y se re-habilite la cola de pendientes, con el comando enable.

down nombre-impresora mensaje

Usar el comando down para una impresora, equivale a usar el comando disable seguido del comando stop.El mensaje que se ingrese, aparecerá como el estatus de la impresora, cada vez que un usuario verifique suestatus 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 nadahasta que se inicializada.

137

Capítulo 10. Imprimiendo

help nombre-del-comando

Mostrar la ayuda del comando nombre-del-comando. Si no se indica el nombre-del-comando, semuestra un resumen de los comandos disponibles.

restart nombre-impresora

ReIniciar la impresora. Los usuarios comunes pueden usar esta opción en caso de que por alguna razón LPD separalice, pero no pueden iniciar una impresora detenida con algunos de los comandos stop o down. Elcomando 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 impresoraesta detenida, los usuarios pueden enviar sus trabajos a la cola de pendientes de la impresora.

topq nombre-impresora trabajo-o-usuario

Modificar el orden de la cola de pendientes de la impresora nombre-impresora, colocando los trabajos conel identificador trabajo o que pertenecen al usuario usuario, en primer lugar de la cola. Para este comandono puede hacer uso de la opción all en lugar de nombre-impresora.

up nombre-impresora

Usar el comando up en una impresora; es lo opuesto al comando down. Equivalente a start seguido delcomando enable.

lpc(8) acepta estos comandos desde la línea de comandos. Si no ingresa aglun comando, lpc(8) entra en modointeractivo, donde puede ingresar los comandos hasta que teclee exit, quit o fin-del-archivo (EOF).

10.6. Alternativas al Sistema de Impresión EstándarSi ha estado leyendo este manual desde el principio, para este momento usted ha aprendido practicamente todo loque debe saber del sistema LPD que viene con FreeBSD. Y ha podido observar algunas de sus debilidades, lo quenaturalmente nos lleva a la pregunta: “¿Qué otros sistema de impresión existen (y que trabajen bajo FreeBSD)?”.

LPRng

LPRng, que presumiblemente significa “LPR: the Next Generation” (“LPR: la Siguiente Generación”), es PLPcompletamente hecho de nuevo. Patrick Powell y Justin Mason (el encargado principal de PLP) colaboraron encrear LPRng. El principal sitio de LPRng es http://www.astart.com/lprng/LPRng.html.

10.7. Resolución de ProblemasUna vez que hizo la simple prueba con lptest(1), puede ser que haya obtenido uno de los siguientes resultados, en vezde la correcta impresión:

138

Capítulo 10. Imprimiendo

Trabajo, después de un tiempo; o no expulso completamente la hoja.

La impresora llevo a cabo la impresión, pero espero bastante o bien finalmente no hizo nada. De hecho, esposible que haya sido necesario presionar en su impresora el botón para poner a la impresora EN LINEA o biende ALIMENTACION DE PAGINA.

Si este es el caso, su impresora esperaba a ver si exisitian más datos para imprimir, antes de comenzar con laimpresión. Para arreglar este problema puede hacer que su filtro de texto envie al final un caracter deALIMENTACION DE PAGINA o cualquiera que sea necesario para la impresora. Esto normalmente essuficiente para que la impresora imprima todos los datos restantes en su buffer interno. También esrecomendable verificar que cada trabajo enviado se haya impreso en una página completa, de tal forma que elsiguiente trabajo no comience en la mitad de la última página del trabajo previo.

El siguiente ShellScript se puede utilizar como reemplazo de /usr/local/libexec/if-simple, paraimprimir un caracter de alimentación de página:

#!/bin/sh## if-simple - Filtro de texto simple para lpd# Instalado en /usr/local/libexec/if-simple## Simplemente manda la entrada a la salida estandar.# Ignora los argumentos del filtro.# Escribe un caracter de alimentacion de pagina (\f) despues de imprimir.

/bin/cat && printf "\f" && exit 0exit 2

Se produce un “efecto de escalera.”

Usted obtiene la siguiente impresión:

!"#$%&’()*+,-./01234"#$%&’()*+,-./012345

#$%&’()*+,-./0123456

Usted es otra víctima del efecto de escalera, causada por el conflicto de interpretación, sobre cual caracter indicala nueva línea. Los sistemas operativos estilo-Unix, usan un caracter sencillo: código ASCII 10, alimentación delínea (LF). MS-DOS, OS/2 y otros utilizan un par de caracteres, código ASCII 10 y código ASCII 13 (retornode carrete o CR). Muchas impresoras usan la forma de MS-DOS, para representar los saltos de líneas.

Cuando usted imprime con FreeBSD, su texto hace uso del caracter de nueva línea. La impresora, una vez quedetecta el caracter de nueva línea, avanza el papel una línea, pero manteniendo la misma posición horizontal,para la impresión del siguiente caracter. Para eso es el caracter de retorno de carrete: para mover la posiciónhorizontal al borde izquierdo del papel.

Aqui tenemos lo que FreeBSD desea que haga su impresora:

Impresora recibe CR Impresora imprime CR

Impresora recibe LF Impresora imprime CR + LF

Aqui tenemos algunas formas de llevar esto a cabo:

139

Capítulo 10. Imprimiendo

• Usar los botones de configuración de la impresora o el panel de control, para modificar su interpretación deestos 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 necesarioreconfigurar la impresora, para usar la interpretación de los caracteres de CR y LF del otro sistemaoperativo. 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, queesta alternativa funciona solo en impresoras seriales. Para habilitar esta habilidad, establezca el bit CRMOD, enla 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 caracteresLF. Consulte el manual de su impresora para ver los códigos de escape soportados por su impresora. Una vezque localice el código correcto, modifique su filtro de texto, para que se envie este código primero y despuésel 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; ypor último envia un caracter de alimentación de página, para expulsar la última página del trabajo. Este filtrodebiese funcionar con casi todas las impresoras Hewlett Packard.

#!/bin/sh## hpif - Filtro de texto simple para lpd e impresoras compatibles con HP-PCL# Instalado en /usr/local/libexec/hpif## Pasa la entrada estandar a la salida estandar.# Ignora todos los argumentos del filtro.# Le indica a la impresora que debe tratar a LF como si fuera CR+LF.# Expulsa la ultima pagina cuando ha terminado.

printf "\033&k2G" && cat && printf "\033&l0H" && exit 0exit 2

Aqui tenemos un ejemplo de /etc/printcap para un host llamado orchid. Solo cuenta con una impresoraconectada al puerto paralelo, una Hewlett Packard LaserJet 3Si, llamada teak. Se esta usando el scriptanterior como filtro de texto:

## Fichero /etc/printcap del host orchid#teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\

:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\:if=/usr/local/libexec/hpif:

140

Capítulo 10. Imprimiendo

Cada línea se sobreescribe.

La impresora no avanza ninguna línea. Todas las líneas son impresas una sobre otra en un solo renglón.

Este problema es lo “opuesto” al efecto de escalera, descrito anteriormente, y es poco común. En algun lugar,los caracteres de LF, que usa FreeBSD para indicar un salto de línea, la impresora los identifica como CR, de talforma que regresa el punto de impresión al borde del papel, pero sin saltar al siguiente renglón.

Utilice los botones de la impresora o el panel de control, para forzar a que la impresora interprete de la siguientemanera los caracteres LF y CR:

Impresora recibe Impresora imprime

CR CR

LF CR + LF

Al imprimir se pierden caracteres.

Mientras imprime, algunos caracteres no son impresos en cada línea. El problema puede agravarse conforme seusa la impresora, perdiendo más y más caracteres.

El problema es que la impresora no puede mantener el ritmo al cual la computadora envia los datos por mediode la línea serial (este problema no se debiese presentarse en impresoras conectadas al puerto paralelo). Existendos formas de solucionar este problema:

• Si la impresora cuenta con soporte para el control de flujo XON/XOFF, haga que FreeBSD lo utilice, alespecificar 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 lacaracterística fs. Asegurese de que el cable utilizado para conectar la impresora a la computadora cuenta consoporte 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 lacadena de información enviada a la impresora.

Solo imprime basura.

La impresora imprime lo que parece ser basura al azar, pero no el texto deseado.

Esto normalmente es otro síntoma de una configuración incorrecta en los parámetros de comunicación de unaimpresora serial. Verifique el rango de bps en la característica br y la paridad de bits en fs y fc; asegurese deque la impresora use los mismos datos especificados en el fichero /etc/printcap.

No sucede nada.

Si no sucede nada, probablemente el problema es con FreeBSD y no con su hardware. Incluya un fichero deregistros (log), con la característica lf, en la entrada de su impresora en el fichero /etc/printcap. Porejemplo, 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 deresolver el problema.

Si no especifica la característica lf, entonces LPD utilizará /dev/console como la salida por default.

142

Capítulo 11. DiscosEscrito por David O’Brien <[email protected]> 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 únicodisco. En primer lugar, apague el ordenador e instale el disco siguiendo las instrucciones del fabricante delordenador, de la controladora y del propio disco. A causa de la diversidad de procedimientos para hacer esto, losdetalles 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 nuestroejemplo, 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 laBIOS del PC. Estas son diferentes de las particiones tradicionales de tipo BSD. Un disco de PC puede tener hastacuatro entradas para particiones de tipo BIOS. Si el disco va a ser realmente dedicado a FreeBSD, puede ustedemplear el modo dedicado (dedicated). En otro caso, FreeBSD tendrá que alojarse en una de las particiones de laBIOS. FreeBSD llama a las particiones de la BIOS slices, para no confundirlas con las particiones tradicionales detipo BSD. También puede usted usar slices en un disco que esté dedicado a FreeBSD, pero en un ordenador queademás tenga otro sistema operativo instalado. Esto es así para no confundir a la utilidad fdisk del otro sistemaoperativo.

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 deutilizar el modo dedicado, el disco será añadido, simplemente, como /dev/da1e.

11.1. Utilizando SysinstallPuede utilizar /stand/sysinstall para crear y etiquetar particiones en un disco nuevo usando sus intuitivosmenús. Bien entre en el sistema como el usuario root, o bien utilice el comando su. Ejecute /stand/sysinstally seleccione el menú Configure. Dentro del menú FreeBSD Configuration Menu, baje hasta seleccionar laopción Partition. A continuación, se le debería mostrar una lista de los discos duros instalados en su sistema. Sino aparece da1, deberá usted comprobar la instalación física del disco y la salida del comando dmesg almacenada enel archivo /var/run/dmesg.boot.

Seleccione da1 para pasar al editor de particiones FDISK Partition Editor. Pulse A para usar el disco enteropara FreeBSD. Cuando se le pregunte si quiere mantener el disco compatible con la instalación de algún sistemaoperativo en el futuro (“remain cooperative with any future possible operating systems”) conteste afirmativamente(YES). Escriba los cambios en el disco pulsando W. Ahora salga del editor FDISK pulsando q. A continuación se lepreguntará acerca del sector de inicio del disco (MBR, Master Boot Record). Como está usted añadiendo un disco aun sistema que ya se encuentra en funcionamiento, seleccione la opción None (esta opción deja el MBR intacto).

A continuación llegará al Disk Label Editor. Aquí es donde creará las particiones de estilo tradicional BSD. Undisco puede tener hasta ocho particiones, designadas a-h. Algunas de las etiquetas de las particiones tienen usosespeciales. La etiqueta a se utiliza para la partición raíz (/, root partition). Por tanto, sólo su disco de sistema (esdecir, aquel desde el cual arranca el sistema) debería tener una partición a. La etiqueta b se utiliza para particiones deswap (memoria virtual) y es posible tener varios discos con particiones de swap. La etiqueta c representa a todo eldisco utilizado en modo dedicado, o a todo el slice de FreeBSD si es que utilizamos el modo slice. Las restantesetiquetas son para uso general.

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 siserá 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 dearchivos. Para ello pulse W. Ignore cualquier error de Sysinstall que le informe de que no pudo montar la nuevapartició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.

11.2. Usando la línea de comandos

11.2.1. * Utilizando Slices

11.2.2. Modo DedicadoSi no va a compartir el nuevo disco con otro sistema operativo, puede usar el modo dedicado (dedicated).Recuerde que este modo puede confundir a los sistemas operativos de Microsoft; no obstante, estos no causaránningún daño. En cambio, el OS/2 de IBM se “apropiará” de cualquier partición que encuentre y que no reconozca.

# dd if=/dev/zero of=/dev/rda1 bs=1k count=1# disklabel -Brw da1 auto# disklabel -e da1 # creamos la partición ‘e’# newfs -d0 /dev/rda1e# mkdir -p /1# vi /etc/fstab # añadimos una entrada para /dev/da1e# mount /1

Un método alternativo resulta:

# dd if=/dev/zero of=/dev/rda1 count=2# disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin# newfs /dev/rda1e# mkdir -p /1# vi /etc/fstab # añadimos una entrada para /dev/da1e# mount /1

144

Capítulo 11. Discos

11.3. * Discos no tradicionales

11.3.1. * Discos Zip

11.3.2. * Discos Jaz

11.3.3. * Discos Sequest

145

Capítulo 12. LocalizacionLocalizacion

146

Capítulo 13. SonidoContributed by Moses Moore.

13.1. SinópsisFreeBSD soporta una amplia variedad de tarjetas de sonido, lo que permite disfrutar de sonido de alta fidelidad en susistema. Ésto incluye la posibilidad de grabar y reproducir archivos de audio tanto en los formatos MPEG AudioLayer 3 (MP3), WAV y Ogg Vorbis, así como muchos otros. La Colección de Ports de FreeBSD contiene tambiénaplicaciones que le permitirán editar audio previamente grabado, añadir efectos de sonido y controlar dispositivosMIDI.

Tras leer éste capítulo usted debería saber:

• Cómo identificar su tarjeta de sonido

• Cómo configurar su sistema de modo que su tarjeta de sonido sea reconocida.

• Confirmar el funcionamiento de su tarjeta usando herramientas de muestreo.

• Cómo enfrentarse a problemas de configuración de sonido.

• Cómo reproducir y crear archivos MP3.

• Cómo convertir pistas de audio CD en archivos de datos.

Antes de leer éste capítulo debería:

• Saber configurar e instalar un nuevo kernel (Capítulo 8).

13.2. Identificar el Dispositivo CorrectoAntes de empezar, debería conocer el modelo de su tarjeta, el chip que usa y si es PCI o ISA. FreeBSD soporta unaamplia gama de tarjetas PCI e ISA. Si no encuentra su tarjeta en la siguiente lista consulte la página pcm(4) delmanual. Ésta no es una lista completa pero incluye muchas de las tarjetas más comunes.

• Crystal 4237, 4236, 4232, 4231

• Yamaha OPL-SAx

• OPTi931

• Ensoniq AudioPCI 1370/1371

• ESS Solo-1/1E

• NeoMagic 256AV/ZX

• Sound Blaster Pro, 16, 32, AWE64, AWE128, Live

• Creative ViBRA16

• Advanced Asound 100, 110, and Logic ALS120

147

Capítulo 13. Sonido

• ES 1868, 1869, 1879, 1888

• Gravis UltraSound

• Aureal Vortex 1 or 2

El driver a usar en el kernel depende del tipo de tarjeta que vaya a usar. La sección siguiente contiene informaciónsobre qué añadir a la configuración del kernel que necesita.

13.2.1. Tarjetas Creative, Advance, y ESS SoundSi tiene una de las siguientes tarjetas debe añadir:

device pcm

a su archivo de configuración del kernel. Si tiene una tarjeta ISA PnP también tendrá que añadir:

device sbc

Para una tarjeta ISA non-PnP añada:

device pcmdevice 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 laIRQ 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 deintentar usar ésta tarjeta.

13.2.2. Tarjetas Gravis UltraSoundPara una tarjeta PnP ISA, necesitará añadir:

device pcmdevice gusc

al archivo de configuración de su kernel. Si tiene una ISA non-PnP necesitará añadir:

device pcmdevice 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 sutarjeta. Vea la página gusc(4) del manual para más información.

148

Capítulo 13. Sonido

13.2.3. Tarjetas Crystal SoundPara tarjetas Crystal necesitará añadir:

device pcmdevice csa

al archivo de configuración de su kernel.

13.2.4. Soporte GenéricoPara tarjetas PnP ISA o tarjetas PCI, necesitará añadir:

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:

device pcm0 at isa? irq 10 drq 1 flags 0x0

a su archivo de configuración del kernel. Puede necesitar cambiar la IRQ u otros parámetros para que ajusten con sutarjeta.

13.2.5. Tarjetas de Sonido integradasAlgunos sistemas con dispositivos de sonido integrados en la placa base pueden requerir la siguiente opción en elfichero de configuración del kernel:

options PNPBIOS

13.3. Recompilar el KernelUna vez conseguido el archivo de configuración del kernel que necesita debe recompilar el kernel. Por favor consulteel capítulo Sección 8.3 del manual para más información.

13.4. Creando y Probando Nodos de DispositivossTras reiniciar, acceda al sistema y escriba dmesg | grep pcm tal y como se muestra aquí:

# dmesg | grep pcmpcm0: � SB16 DSP 4.11

�on sbc0

La salida que muestre su sistema puede ser diferente. Si no hay dispositivos pcm en la salida del comando hay algúnerror en los pasos previos. Si le sucede ésto vuelva a su archivo de configuración del kernel y asegúrese de que haelegido el dispositivo adecuado. Consulte la sección de problemas para opciones adicionales.

149

Capítulo 13. Sonido

Si al ejecutar el comando anterior encontró pcm0 ejecute lo siguiente como root:

# cd /dev# sh MAKEDEV snd0

Si encontró pcm1 haga igual que que en el paso anterior reemplazando snd0 con snd1.

Nota: Los comandos anteriores no van a crear dispositivos /dev/snd!

MAKEDEV creará un grupo de device nodes, incluyendo:

Dispositivo 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.

13.5. Problemas Comunes

1. ¡Recibo un error "unsupported subdevice XX" !

Uno o más nodos de dispositivos no se crearon correctamente. Repita los pasos anteriores.

2. ¡Tengo un error "sb_dspwr(XX) timed out" !

El puerto I/O que ha puesto no es el correcto.

3. ¡Tengo un error "bad irq XX"!

La IRQ que ha puesto no es la correcta. Asegúrese de que la IRQ que pone la la IRQ de la tarjeta son la misma.

4. Me da un error nombre_del_error>xxx: gus pcm not attached, out of memory. ¿Por qué me pasaésto?

No hay memoria libre que se pueda asignar a éste dispositivo.

150

Capítulo 13. Sonido

13.6. Audio MP3Contributed by Chern Lee.

El formato MP3 (MPEG Layer 3 Audio) se aproxima mucho a la calidad de sonido del CD, así que no hay razónpara privar a su sistema FreeBSD de disfrutar de él.

13.6.1. Reproductores de MP3Con mucho el reproductor de MP3 más popular para XFree86 es XMMS, (X Multimedia System). Puede usar skinsde WinAmp en XMMS puesto que el interfaz gráfico es casi idéntico al de la aplicación de Nullsoft. XMMStambién tiene soporte nativo de plugins.

XMMS puede instalarse desde el port audio/xmms o como package.

El interfaz de XMMS es intuitivo e incluye lista de canciones, ecualizador gráfico y muchas más cosas. Aquellos queconozcan WinAmp encontrarán XMMS fácil de usar.

Existe una alternativa; el port audio/mpg123 es un reproductor MP3 en línea de comandos.

mpg123 puede usarse indicándole un dispositivo de sonido concreto y el archivo MP3 en la línea de comandos comose muestra aquí:

# mpg123 -a /dev/dsp1.0 GrandesÉxitos-DeAlguno.mp3High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.Uses code from various people. See ’README’ for more!THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!

Playing MPEG stream from BT - GrandesÉxitos-DeAlguno.mp3 ...MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

/dev/dsp1.o debe reemplazarse por el dispositivo dsp que tenga en su sistema.

13.6.2. Extracción de Pistas de CD AudioAntes de convertir una pista o todo un CD a MP3 la información de audio del CD debe pasar al disco duro. Ésto sehace convirtiendo los datos raw CDDA (CD Digital Audio) en archivos WAV.

El programa cdda2wav, que es parte del port sysutils, se usa para la extracción del audio de los Discos Compactos yde la información asociada con éste.

Con el CD en la unidad, el siguiente comando (utilizado como root) convertirá un CD entero en archivos WAVindividuales, uno por pista:

# 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

Para extraer pistas individuales utilice la opción -t como se vé aquí:

# 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 lasiete, especifique el rango:

# cdda2wav -D 0,1,0 -t 1+7

cdda2wav sólo soporta unidades CDROM SCSI. Para unidades IDE utilice audio/cdd o alguna otra entre lasvariadas aplicaciones que hay en la colección de ports de audio.

13.6.3. Creando Archivos MP3Hoy día el codificador MP3 por excelencia es el lame. Lame Puede encontrarse en audio/lame en el árbol de ports.

Usando archivos WAV previamente extraídos, el siguiente comando convierte audio01.wav en audio01.mp3:

# 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 prefierenmayores calidades, 160 e incluso 192. A mayor ratio de bits, mayor espacio requerido en el disco --pero la calidadtambié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. Puedeencontrar más opciones consultando el manual de lame.

13.6.4. Decodificando MP3Para grabar un CD de audio desde archivos MP3 debe convertir éstos a un formato WAV no comprimido. TantoXMMS como mpg123 soportan la conversión de MP3 a un formato de fichero no comprimido.

Escribiendo a disco desde XMMX:

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óndesactivadas.

8. Pulse Play — parecerá que XMMS está reproduciendo música pero no sonará nada. Lo que está haciendo esvolcar el MP3 a un archivo.

9. No olvide volver a poner el Output Plugin como estaba antes cuando quiera volver a escuchar MP3.

Escribiendo la salida en mpg123:

1. Escriba mpg123 -s audio01.mp3 � audio01.pcm

XMMS genera un archivo en formato WAV, mientras que mpg123 convierte MP3 a datos audio raw PCM. Ambosformatos 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 SerieComunicaciones Serie

154

Capítulo 15. PPP y SLIPReestructurado, reorganizado, y actualizado por Jim Mock.

15.1. SinópsisFreeBSD cuenta con un gran numero de formas para conectar una computadora a otra. Para establecer una red o unaconección a Internet por medio de un módem, o bien, permitir a otras computadoras conectarse por medio de este, serequiere del uso de PPP o SLIP. Este capítulo describe en detalle como configurar los servicios de comunicación parallevar esto a cabo.

Una vez que haya leido este capítulo, usted sabrá:

• Como configurar User PPP.

• Como configurar Kernel PPP.

• Como configurar PPPoE (PPP over Ethernet*).

• Como configurar PPPoA (PPP over ATM*).

• Como instalar y configurar un cliente y servidor SLIP.

N. de T.: En estricto sentido esto se refiere a contar con la conexión por medio de un dispositivo Ethernet, o bienATM, pero debido a que usted encontrará estos metodos en su sistema, como PPPoE o bien PPPoA, se han dejadolos conceptos “literales” del documento original. Espero que no sea un problema.

Antes de leer este capítulo, usted debiese:

• Estar familiarizado con la terminología básica de redes.

• Comprender lo básico y el propósito de una conección por módem SLIP y/o PPP.

Puede ser que usted se pregunte cual es la principal diferencia entre User PPP y kernel PPP. La respuesta es sencilla;el método User PPP procesa la entrada y salida de datos en userland (ver nota siguiente) en lugar de hacerlo en elkernel. Esto es algo desgastante, en términos del manejo de datos entre userland y el kernel, pero permite, pormucho, un mejor desempeño e implementación de PPP. User PPP utiliza el dispositivo tun para comunicarse con elmundo exterior, mientras que kernel—ppp, utiliza el dispositivo ppp.

En el desarrollo de este capítulo, se hará referencia a User PPP, simplemente como ppp, a menos de que seanecesaria hacer una distinción entre este y otro software de PPP, como es el caso de pppd. Así mismo, si en eldesarrollo del capítulo no se señala lo contrario, todos los comandos explicados, deberán ser ejecutados como root.

N. de T. : Cuando se habla de "userland" se hace referencia a todo aquello que *no* forma parte del kernel y que enel caso de código de programa, se ejecuta en modo usuario, ya que el código del kernel se ejecuta en modo kernel,supervisor, o bien en modo privilegiado de ejecución. En lo sucesivo este término será utilizado tal cual.

155

Capítulo 15. PPP y SLIP

15.2. Utilizando User PPPOriginalmente contribuido por Brian Somers. Con apoyo de Actualizado y reestructurado porNik Clayton, Dirk

Frömberg, Peter Childs, y Tom Rhodes.

15.2.1. User PPP

15.2.1.1. Aclaraciones

Este documento asume que usted cuenta con lo siguiente:

• Una cuenta activa con un Proveedor del Servicio de Internet (ISP—por sus siglas en inglées), que usted utliza paraconectarse.

• Adicionalmente, un módem o algún otro dispositivo, conectado a su sistema, y configurado correctamente, que lepermite 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 pormedio de PAP o CHAP)

• La dirección IP de uno o más servidores de nombres (DNS). Normalmente, estos serán provistos por su proveedorde Internet. Si su proveedor no le ha dado esta información, puede utilizar la opción enable dns en su ficheroppp.conf, para indicarle a ppp que configure el DNS por usted. Esta característica depende del sistema denegociació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 escompletamente 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á yserá la ruta por default. Si usted no cuenta con esta información, puede inventar uno y al intentar conectarse, elservidor 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 problema255.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 formapodemos 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 pararequerirla.

Nota: En el transcurso de la presente sección, algunos ejemplos muestran el contenido de archivos deconfiguración los cuales presentan una numeración. Estos números sirven como ayuda y referencia a cadalínea, pero estos no deben de estar presentes en el archivo original. Una sangría adecuada, así como espaciosadecuados, también son de suma importancia.

156

Capítulo 15. PPP y SLIP

15.2.1.2. Preparando el Kernel

Como se comento anteriormente, la aplicación ppp utiliza el dispositivo tun. Si este dispositivo no ha sidocompilado dentro del kernel, ppp lo cargará como módulo cuando sea requerido. El dispositivo tun es dinámico, detal forma que se generara de acuerdo a la demanda que tenga (usted no esta limitado por el kernel).

Nota: Vale la pena hacer notar que el controlador tun, crea los dispositivos de acuerdo a sus necesidades, por loque el comando ifconfig -a, no necesariamente mostrará los dispositivos tun.

15.2.1.3. Verificando el dispositivo tun

Bajo circunstancias normales, la mayoría de los usuarios sólo utilizaran un dispositivo tun (/dev/tun0). En losucesivo podemos hacer referencia a tun0 con la expresión tunN donde N es el número que corresponde en susistema.

Para instalaciones de FreeBSD que no tienen el habilitado el DEVFS la existencia de tun0 debe ser verificada (estono es necesario si se cuenta habilitada la opción DEVFS ya que los nodos de dispositivos seán creados en función alas necesidades).

La forma más sencilla de verificar si el dispositivo tun0 se encuentra configurado correctamente, es la de rehacer eldispositivo. Para hacer esto simplemente siga los siguientes pasos:

# cd /dev# sh MAKEDEV tun0

Si usted necesita 16 dispositivos tun en su kernel, deberá crearlos. Esto puede hacerse de la siguiente manera:

# cd /dev# sh MAKEDEV tun15

15.2.1.4. Configuración de la Resolución de Nombres

La resolución es la parte del sistema que busca una dirección IP en los nombres de servidores (host) y viceversa.Puede ser configurado para que busque en "mapas" que describen la IP del servidor en uno de dos lugares, el primeroes un archivo llamado /etc/hosts. Lea hosts(5) para más información al respecto. El segundo es el Servicio deNombres de Dominio de Internet (DNS-Internet Domain Name Service), el cual es una base de datos de distribución.Para mayor información con respecto a los DNS, referirse a dns.

La resolución de nombres es un sistema que por medio de llamadas, realiza el mapeo de nombres, pero es necesarioinidicarle donde debe buscar la información. Para versiones de FreeBSD anteriores a la 5.0, esto es hecho al editar elarchivo /etc/host.conf. La versión 5.0 de FreeBSD utiliza el archivo /etc/nsswitch.conf.

15.2.1.4.1. Edición del archivo /etc/host.conf

Para versiones de FreeBSD anteriores a la 5.0, este archivo debe contener las siguientes dos líneas (en este orden):

hostsbind

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

15.2.1.4.2. Editando el archivo /etc/nsswitch.conf

Para versiones de FreeBSD 5.0 y posteriores, este archivo debe contener, al menos, la siguiente línea:

hosts: files, dns

Esto le indica a la resolución de nombres, que busque en primer lugar en el archivo /etc/hosts, y en caso de que elnombre no haya sido localizado, busque en el DNS.

15.2.1.4.3. Editando el archivo /etc/hosts

Este archivo puede contener direcciones IP, así como el nombre de las máquinas de su red local. Como mínimo debecontar con la información de la máquina que correrá ppp. Asumiendo que su ordenador se llama foo.bar.com conla dirección IP 10.0.0.1, el archivo /etc/hosts debiese contener:

127.0.0.1 localhost.bar.com localhost::1 localhost.bar.com localhost10.0.0.1 foo.bar.com foo

Las primeras dos líneas definen el alias del localhost, como sinónimo de la maquina actual. Independientementede 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íneaespecifica 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 cualeshacen 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 nombredel host, añada esto también al archivo /etc/hosts.

15.2.1.4.4. Editando el archivo /etc/resolv.conf

El archivo /etc/resolv.conf, le indica a la resolución de nombres, como comportarse. Normalmente deberá deincluir la(s) siguiente(s) línea(s):

domain ejemplo.comnameserver x.x.x.xnameserver 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. Puedeser que esta información se la hayan entregado al suscribirse o no, pero una rápida llamada a su ISP debe resolveresto.

Tambié puede configurar su sistema, de tal forma que syslog(3) provee de un login para su conección por PPP. Sóloañada:

!ppp

158

Capítulo 15. PPP y SLIP

*.* /var/log/ppp.log

al fichero /etc/syslog.conf. En la mayoría de los casos esto funciona bien.

15.2.1.5. Configuración Automática de PPP

Ambos, ppp así como pppd (la implementación del kernel para PPP), utilizan la configuración de los archivoslocalizados en el directorio /etc/ppp. Ejemplos para ppp, pueden encontrarse en: /usr/share/examples/ppp/.

Para efecto de configurar correctamente ppp, es necesario editar varios ficheros, dependiendo de sus necesidades. Lamanera en que edite dichos archivos, depende en la forma que utilice su PSI (Proveedor de Servicios de Internet)para brindarle conexión, ya sea por medio de una dirección IP estática o bien una IP dinámica (ya sea que cada vezque se conecta obtiene una nueva dirección).

15.2.1.5.1. PPP y direcciones de IP estáticas (fijas)

Será necesario editar el archivo de configuración; /etc/ppp/ppp.conf. Y deberá quedar de una manera similar alejemplo que se describe a continuación.

Nota: Las líneas que terminan con :, deben comenzar en la primer columna del archivo — el resto de las líneasdeberán utilizar sangría como se muestra, utilizando espacios o bien el tabulador. La mayor parte de lainformación que requiere ingresar aqui, se mostro en el marcado manual anterior.

1 default:2 set log Phase Chat LCP IPCP CCP tun command3 ident user-ppp VERSION (built COMPILATIONDATE)4 set device /dev/cuaa05 set speed 1152006 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"8 set timeout 1809 enable dns1011 provider:12 set phone "(123) 456 7890"13 set authname foo14 set authkey bar15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"16 set timeout 30017 set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.018 add default HISADDR

Línea 1:

Identifica la entrada por omisión a utilizar. Los comandos descritos en esta parte, serán ejecutados de maneraautomá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 lasiguiente forma:

set log phase tun

para efecto de evitar avisos masivos del sistema (logs).

Línea 3:

Esta línea le indica a PPP como identificarse ante el puerto. PPP se identifica, si tiene algun problema paraefecto de establecer la conexión, en esta identificación, PPP provee de cierta información que puede resultar utilpara 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 cualdeberia 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 unasintaxis similar a la descrita en el programa chat(8). Favor de consultar la página de ayuda para conocer lasopciones de este lenguaje.

Nota: Este comando continua en la siguiente línea, para facilitar su lectura. Cualquier comando en el archivoppp.conf puede utilizar este formato, siempre y cuando el último caracter de la línea sea una diagonalinvertida "\".

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. Siusted 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 cambiadopor 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 dospuntos (:) o bien la barra (|) como separador. La diferencia entre estos dos separadores, es detallada en elppp(8). Pero en resumen, se puede decir que si se desean utilizar varios numeros de manera aleatoria se debeutilizar 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, esteentre comillas como se muestra. Es importante que si piensa usar espacios en los numeros, haga uso de estascomillas ("). 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, estosvalores hacen referencia al comando set login, utilizando las variables \U y \P. Cuando la conexión esutilizando 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á sercomentada (utilizando el símbolo # al principio de la línea) o bien eliminada por completo. Vea la parteAutentificació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 Xlogin: foopassword: barprotocol: ppp

Es recomendable editar el script, para que se ajuste a sus propias necesidades. Cuando cree este script porprimera vez, asegurese de haber habilitado la parte que se refiere a al acceso por medio de “chat”, para efecto depoder 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ónestablezca 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ónasignada por su PSI. La línea que aparece como y.y.y.y., debe se substituida por la direcció IP especificadapor su PSI, como servidor de salida o pasarela (gateway)(la maquina a la cual se va a conectar). Si su PSI no leha 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 lasdirecciones 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 ladirecció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 ejecutandoppp en modo -auto, en virtud de que para efecto de realizar la conexión sus mapas de ruteo debe estar correctas. Decualquier forma puede ser que usted desee ejecutar algun programa/comando, posterior a la conexión. Este esexplicado 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.

15.2.1.5.2. PPP y direcciones de IP Dinámicas (Variables)

Si su proveedor de servicios, no le asigna una dirección de IP fija, será necesario configurar a ppp, de tal forma queal momento de realizar la conexión, negocie tanto la dirección local, como la remota. Esto se lleva a cabo al“adivinar” una dirección IP y permitiendo a ppp que la establezca correctamente, usando el Protocolo deConfiguración de IP (IPCP), una vez que se ha conectado. La configuración que debe tener el archivo ppp.conf, esla misma que la utilizada en PPP y direcciones de IP fijas, salvo el siguiente cambio:

17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255

Una vez más, no debe incluir el numero de línea, este sólo es una referencia. Así mismo deberá existir sangrado, decuando 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, peroel ejemplo descrito anteriormente siempre podrá utilizarse.

El último argumento (0.0.0.0), le indica a PPP, que inicie las negociaciones, utilizando como dirección0.0.0.0, en lugar de que utilice 10.0.0.1, lo cual es necesario con algunos proveedores. No utilice ladirección 0.0.0.0 como el primer argumento, para el comando set ifaddr, ya que impide que PPPconfigure 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 archivoppp.linkup, es utilizado una vez que se ha realizado la conexión. En este punto, ppp habrá negociado unadirecció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. Siaun 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.

15.2.1.5.3. Recibiendo Llamadas Externas

Cuando se configure ppp, para recibir llamadas externas, en una maquina conectada a un LAN (Red de Area Local),debe decidir si se va a permitir el envío de paquetes a la LAN. Si es así, debe asignar un numero de IP de su red localy utilizar el comando enable proxy en el archivo de configuracion /etc/ppp/ppp.conf. También deberáasegurarse que en su archivo /etc/rc.conf cuente con la línea:

gateway_enable="YES"

15.2.1.5.3.1. ¿Qué getty utilizar?

El enlace Configurando FreeBSD para Servicios de Marcado provee de una buena descripció, sobre la configuraciónde estos servicios, basado en getty(8).

Una alternativa para el comando getty es mgetty (http://www.leo.org/~doering/mgetty/index.html), el cual es unaversión más inteligente de getty diseñada para servicios de marcado telefonico.

Una de las principales ventajas de mgetty es que, de hecho platica con los modems, esto es, significativo, ya que siel puerto esta desactivado en su /etc/ttys el modem no responderá el llamado.

Las últimas versiones de mgetty (de la 0.99beta y sucesivas), también cuentan con soporte para la detecciónautomática de llamados de PPP, permitiendo el acceso a servidores de una manera más sencilla (sin uso de tantoscripts).

Puede referirse a Mgetty y AutoPPP para más información con respecto al comando mgetty.

15.2.1.5.3.2. Permisos de PPP

El comando ppp normalmente debe ser ejecutado por root (superusuario). Si de cualquier forma, usted deseapermitir que ppp pueda ser ejecutado en modo servidor, por un usuario regular, como se describe a continuación,deberá otorgar los permisos necesarios a ese usuario al añadirlo al grupo network, en el fichero /etc/groups.

También será necesario darle acceso a una o más partes del archivo de configuración, haciendo uso del comandoallow, como se ve a continuación:

allow users fred mary

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

15.2.1.5.3.3. Shells de PPP para Usuarios de IP Dinámica

Cree un fichero llamado: /etc/ppp/ppp-shell y que contenga lo siguiente:

#!/bin/shIDENT=‘echo $0 | sed -e ’s/^.*-\(.*\)$/\1/’‘CALLEDAS="$IDENT"TTY=‘tty‘

if [ x$IDENT = xdialup ]; thenIDENT=‘basename $TTY‘

fi

echo "PPP for $CALLEDAS on $TTY"echo "Starting PPP for $IDENT"

exec /usr/sbin/ppp -direct $IDENT

Este script deberá ser ejecutable. Ahora cree un enláce simbólico llamado ppp-dialup a este script, utilizando lossiguientes 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 editardirectamente el fichero password, utilice vipw).

pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup

Cree un directorio llamado /home/ppp que contenga los siguentes archivos de 0 bytes:

-r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin-r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts

los cuales impiden que /etc/motd sea desplegado.

15.2.1.5.3.4. Shells de PPP para Usuarios de IP Estática

Cree el fichero ppp-shell al igual que el mencionado con anterioridad, y por cada cuenta donde se tenga asignadauna IP estática, cree un enlace simbólico al fichero ppp-shell.

Por ejemplo, si usted cuenta con tres usuarios que utilicen este servicio; fred, sam y mary, los cuales redirecciona auna red de clase C, habria que hacer lo siguiente:

# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam# ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary

Cada uno de los usuarios señalados, deberán de contar con el enlace a su shell-script como se indicó (por ejemplo, elusuario mary, debe contar con su enlace al fichero /etc/ppp/ppp-mary).

164

Capítulo 15. PPP y SLIP

15.2.1.5.3.5. Configurando ppp.conf para Usuarios de IP-Dinámica

El archivo /etc/ppp/ppp.conf deberá contener algo similar a lo siguiente:

default:set debug phase lcp chatset timeout 0

ttyd0:set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255enable proxy

ttyd1:set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255enable proxy

Nota: Tomar en cuenta el sangrado, ya que es importante.

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 consu propia dirección IP, de sus direcciones IP disponibles para asignar dinámicamente.

15.2.1.5.3.6. Configurando ppp.conf para Usuarios de IP Estática

Junto con el contenido del fichero de ejemplo /usr/share/examples/ppp/ppp.confmencionadoanteriormente, deberá agregar una sección para cada usuario asignado estáticamente. Continuaremos con nuestroejemplo con los usuarios fred, sam y mary.

fred:set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255

sam:set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255

mary:set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255

El archivo /etc/ppp/ppp.linkup deberá de contener también información del ruteo, para cada IP estática, si esnecesario. 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 ppplink 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

15.2.1.5.4. Algo más de mgetty, AutoPPP, y Extensiones MS

15.2.1.5.4.1. mgetty y AutoPPP

Configurando y compilando mgetty con la opción AUTO_PPP habilitada, permite a mgetty detectar la fase LCP deconexiones PPP y automáticamente enviarlo a un shel de ppp. Aun con esto, y debido a que no se ingresa el nombrede usuario y contraseña, es necesario autntificarse por medio de PAP o CHAP.

Esta sección asume que el usuaio ha configurado, compilado e instalado correctamente una versión de mgetty, conla opción Auto_PPP (v0.99beta o posterior).

Asegurese de que su fichero /usr/local/etc/mgetty+sendfax/login.conf contiene la siguiente línea en él:

/AutoPPP/ - - /etc/ppp/ppp-pap-dialup

Esto le indicará a mgetty que ejecute el script ppp-pap-dialup, para efecto de detectar conexiones de tipo PPP.

Cree un fichero llamado /etc/ppp/ppp-pap-dialup que contenga las siguientes líneas (el fichero deberá serejecutable):

#!/bin/shexec /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 dearriba.

pap:enable papset ifaddr 203.14.100.1 203.14.100.20-203.14.100.40enable proxy

Cada usuario que ingrese al sistema utilizando este metodo, deberá de contar con su clave de usuario, así como sucontraseña, en el archivo /etc/ppp/ppp.secret, o bien agrege la siguiente opción, para efecto de que se puedarealizar 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 enel fichero /etc/ppp/ppp.secrets. Vea el archivo /usr/share/examples/ppp/ppp.secret.sample paraobtener 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 deforma 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ónrelevante de /etc/ppp/ppp.conf.

enable msextset ns 203.14.100.1 203.14.100.2set nbns 203.14.100.5

166

Capítulo 15. PPP y SLIP

Y para versiones de PPP 2 y posteriores:

accept dnsset dns 203.14.100.1 203.14.100.2set 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.

15.2.1.5.5. Autentificación por medio de PAP y CHAP

Algunos proveedores de internet tienen su sistema configurado para que cada usuario al conecatrse seanautentificados por medio de PAP o CHAP. Si este es el caso, al momento de realizar la conexion, no aparecerá unlogin:, sino que comenzará a comunicarse PPP inmediatamente.

El metodo PAP es menos seguro que CHAP, pero la seguridad normalmente no se toma mucho en cuenta en este tipode conexiones, en funcion de que al enviarse la información de contraseña en texto plano, por medio de una líneaserial, no deja mucho espacio para que los crackers “husmeen”.

Haciendo referencia a lo que vimos de PPP y Direcciones de IP Fijas o bien PPP y Direcciones de IP Dinámicas,habría que aplicar los siguientes cambios:

7 set login...12 set authname MiNombreDeUsuario13 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óndebemos 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 nombrecorrecto 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 datocorrecto, 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

15.2.1.5.6. Cambiando la configuración de ppp sobre la marcha (al vuelo)

Es posible hablar con el programa ppp mientras se esta ejecutando en segundo plano, pero sólo si se ha habilitado unpuerto de diagnóstico. Para hacer esto, añada lo siguiente a su configuración:

set server /var/run/ppp-tun%d DiagnosticPassword 0177

Esto le indicará a PPP que preste atención al socket del dominio-Unix, solicitando a los usuarios su contraseña, antesde permitir el acceso. La variable %d deberá ser reemplazada por el numero de dispositivo tun que este utilizando(ej. tun0).

Una vez que se a configurado el socket, se puede utilizar pppctl(8) en scripts que deseen manipular el programa.

15.2.1.6. Configuración Final del Sistema

Ahora usted cuenta con un ppp configurado, pero es necesario hacer algunas cosas, antes de que este disponible paratrabajar. Todas ellas giran entorno a la edición del fichero /etc/rc.conf.

En primer lugar es importante que se asegure que ha asignado un nombre a su maquina. Esto se hace asignandolo enla línea de hostname=, por ejemplo:

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, esrecomendable 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 susistema para marcar a su PSI a petición, asegurese de que el dispositivo tun0 este en la lista, de otra forma eliminelo.

network_interfaces="lo0 tun0" ifconfig_tun0=

Nota: La variable ifconfig_tun0 debe permanecer en blanco (vacia), y deberá crearse un fichero llamado/etc/start_if.tun0 que contenga la siguiente línea:

ppp -auto MiSistema

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 tambienrecomendable que utilice la opción -alias. Referirse a la página de ayuda (man) para mayores detalles.

Especifique el programa router a NO, con la siguiente línea en su fichero /etc/rc.conf:

router_enable="NO"

Es importante que el demonio routed no se inicialice por default, en virtud de que routed tiende a eliminar lasvariables 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 alexterior. 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 servidorde 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 ALL3 add 0 0 HISADDR4 !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 decorreo (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:

# ppp -auto proveedor

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:

1. Asegurese de que existe el dispositivo tun dentro de su kernel.

2. Asegurses de que el dispositivo tunX, se encuentra disponible, bajo el directorio /dev.

3. Cree una entrada en su fichero /etc/ppp/ppp.conf. Con el fichero de ejemplo pmdemand debe ser suficientepara la mayoria de proveedores.

4. Si cuenta con una dirección de IP dinámica, cree una entrada en el fichero /etc/ppp/ppp.linkup .

5. Actualice su fichero /etc/rc.conf.

6. Cree un archivo script llamado start_if.tun0 si requiere servicio de conexión a solicitud.

Por parte del Servidor:

1. Asegurese de que dentro de su kernel exista el dispositivo tun.

2. Asegurses de que el dispositivo tunX, se encuentra disponible, bajo el directorio /dev.

3. Cree una entrada en el fichero /etc/passwd (usando el programa vipw(8)).

4. Cree un perfil en el directorio home de este usuario, que ejecute ppp -direct direct-server o algo similar.

169

Capítulo 15. PPP y SLIP

5. Cree una entrada en el fichero /etc/ppp/ppp.conf. El fichero de ejemplo direct-server debe sersuficiente para darse una idea.

6. Cree una entrada en el fichero /etc/ppp/ppp.linkup.

7. Actualice su fichero /etc/rc.conf.

15.3. Usando Kernel PPPPartes originalmente desarrolladas por Gennady B. Sorokopud y Robert Huff.

15.3.1. Configurando Kernel PPPAntes de comenzar a configurar PPP en su maquina, asegurese de pppd se localiza en /usr/sbin y de que existe eldirectorio /etc/ppp.

pppd puede trabajar de dos maneras

1. Como un “cliente” — cuando desea conectar su maquina al mundo exterior utilizando PPP, por medio de unaconexió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 seconecten utilizando ppp.

En ambos casos, será necesario configurar un fichero de opciones (/etc/ppp/options o bien ~/.ppprc si secuenta 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), demanera que pueda hacer la conexión con un host remoto.

15.3.2. Usando pppd como ClienteBasedo en información provista por Trev Roydhouse.

El siguiente archivo de configuración /etc/ppp/options puede utilizarse para realizar la conexión a una terminalCISCO, por medio de PPP.

crtscts # habilita el flujo de controls de hardwaremodem # línea de control del modemnoipdefault # el servidor PPP remoto asignará la dirección IP

# si el servidor no envia una dirección IP durante IPCP# remueva esta opción.

passive # espere por los paquetes LCPdomain ppp.foo.com # escriba su nombre de dominio aqui

: � remote_ip � # escriba la IP del host remoto aqui# este será utilizado para el ruteo de paquetes por medio# de PPP, si no especifica esta 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 nombrede 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

Asegurese de utilizar el dispositivo y la velocidad adecuados.

Ahora su computadora esta conectada por medio de PPP. Si la conexión falla, puede añadir la opción debug en elfichero /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/shps ax |grep pppd |grep -v greppid=‘ps ax |grep pppd |grep -v grep|awk ’{print $1;}’‘if [ "X${pid}" != "X" ] ; then

echo ’killing pppd, PID=’ ${pid}kill ${pid}

fips ax |grep kermit |grep -v greppid=‘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 downifconfig ppp0 delete

kermit -y /etc/ppp/kermit.dialpppd /dev/tty01 19200

El fichero /etc/ppp/kermit.dial es un script de kermit, uqe realiza el marcado y negocia la autorizaciónnecesaria con el host remoto (un ejemplo de este script se encuentra al final de este documento).

Utilice el siguiente script, llamado /etc/ppp/pppdown para desconectar la línea PPP:

#!/bin/shpid=‘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

ps ax |grep kermit |grep -v greppid=‘ps ax |grep kermit |grep -v grep|awk ’{print $1;}’‘if [ "X${pid}" != "X" ] ; then

echo ’killing kermit, PID=’ ${pid}kill -9 ${pid}

fi

/sbin/ifconfig ppp0 down/sbin/ifconfig ppp0 deletekermit -y /etc/ppp/kermit.hup/etc/ppp/ppptest

Verifique que su PPP aun se esta ejecutando, por medio de /usr/etc/ppp/ppptest, que deberá verse algo similara esto:

#!/bin/shpid=‘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.’fiset -xnetstat -n -I ppp0ifconfig ppp0

Para colgar el módem, ejecute /etc/ppp/kermit.hup, que deberá contener:

set line /dev/tty01 ; aqui va el dispositivo del modemset speed 19200set file type binaryset file names literalset win 8set rec pack 1024set send pack 1024set block 3set term bytesize 8set command bytesize 8set flow none

pau 1out +++inp 5 OKout ATH0\13echo \13exit

He aqui un metodo alterno, donde se utiliza chat en lugar de utilizar kermit.

Los siguientes dos ficheros deben ser suficiente, para realizar una conexión por medio de pppd.

/dev/cuaa1 115200

crtscts # habilita el control de flujo por medio de hardware

172

Capítulo 15. PPP y SLIP

modem # línea de control del módemconnect "/usr/bin/chat -f /etc/ppp/login.chat.script"noipdefault # el servidor remoto debe asignar la dirección IP.

# si el servidor no asigna una IP durante la negociación# IPCP , remueva esta línea y espere por los

passive # paquetes LCPdomain � your.domain � # aqui va su dominio

: # escriba la IP del host remoto aqui# si no ha especificado la opción noipdefault# cambie esta línea a quedar � local_ip � : � remote_ip �

defaultroute # escriba esto, si desea que el servidor PPP sea su# router por default

/etc/ppp/login.chat.script:

Nota: Lo siguiente debe ir en una sola línea.

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 elcomando pppd, algo como:

# pppd

15.3.3. Usando pppd como ServidorEl fichero /etc/ppp/options debe contener algo similar a lo siguiente:

crtscts # control de flujo por Hardwarenetmask 255.255.255.0 # mascara de red (no es requisito)192.114.208.20:192.114.208.165 # direcciones ip del host local y remoto

# la dirección ip local debe ser# diferente a la que le haya asignado a su# dispositivo de red ethernet (u otro)# la dirección ip remota que será# asignada a la maquina remota

domain ppp.foo.com # su dominiopassive # espera por LCPmodem # línea de modem

El siguiengte script, llamado /etc/ppp/pppserv habilitará pppd, para que actue como servidor:

#!/bin/shps ax |grep pppd |grep -v greppid=‘ps ax |grep pppd |grep -v grep|awk ’{print $1;}’‘if [ "X${pid}" != "X" ] ; then

173

Capítulo 15. PPP y SLIP

echo ’killing pppd, PID=’ ${pid}kill ${pid}

fips ax |grep kermit |grep -v greppid=‘ps ax |grep kermit |grep -v grep|awk ’{print $1;}’‘if [ "X${pid}" != "X" ] ; then

echo ’killing kermit, PID=’ ${pid}kill -9 ${pid}

fi

# reset ppp interfaceifconfig ppp0 downifconfig ppp0 delete

# enable autoanswer modekermit -y /etc/ppp/kermit.ans

# run ppppppd /dev/tty01 19200

Utilice el script /etc/ppp/pppservdown para detener el servidor:

#!/bin/shps ax |grep pppd |grep -v greppid=‘ps ax |grep pppd |grep -v grep|awk ’{print $1;}’‘if [ "X${pid}" != "X" ] ; then

echo ’killing pppd, PID=’ ${pid}kill ${pid}

fips ax |grep kermit |grep -v greppid=‘ps ax |grep kermit |grep -v grep|awk ’{print $1;}’‘if [ "X${pid}" != "X" ] ; then

echo ’killing kermit, PID=’ ${pid}kill -9 ${pid}

fiifconfig ppp0 downifconfig ppp0 delete

kermit -y /etc/ppp/kermit.noans

El siguiente script de kermit (/etc/ppp/kermit.ans) habilita/deshabilita el modo de autorespuesta en su módem.Y debe verse algo similar a lo siguiente:

set line /dev/tty01set speed 19200set file type binaryset file names literalset win 8set rec pack 1024set send pack 1024set block 3set term bytesize 8set command bytesize 8

174

Capítulo 15. PPP y SLIP

set flow none

pau 1out +++inp 5 OKout ATH0\13inp 5 OKecho \13out ATS0=1\13 ; cambiar esto a quedar out ATS0=0\13 si desea deshabilitar el modo

; de autorespuestainp 5 OKecho \13exit

Un script llamado /etc/ppp/kermit.dial es utilizado para llamar y autentificarse en un host remoto. Esnecesario que edite este fichero, de acuerdo a sus necesidades. Escriba su nombre de usuario (login) y contraseña(password) en este fichero, también será necesario cambiar su metodo de conexión, de acuerdo a lo que se ajuste asus necesidades.

;; ingrese el dispositivo que esta apuntando a su módem:;set line /dev/tty01;; escriba la velocidad del módem:;set speed 19200set file type binary ; full 8 bit file xferset file names literalset win 8set rec pack 1024set send pack 1024set block 3set term bytesize 8set command bytesize 8set flow noneset modem hayesset dial hangup offset carrier auto ; Posteriormente SET CARRIER si es necesarioset dial display on ; despues SET DIAL si es necesarioset input echo onset input timeout proceedset input case ignoredef \%x 0goto slhup

:slcmd ; cambio a modo de comandoecho Put the modem in command mode.clear ; Limpieza del buffer de entradapause 1output +++input 1 OK\13\10 ; esperar para OKif success goto slhup

175

Capítulo 15. PPP y SLIP

output \13pause 1output at\13input 1 OK\13\10if fail goto slcmd ; si el modem no responde Ok, intentar de nuevo

:slhup ; colgar el teléfonoclear ; Limpieza del buffer de entradapause 1echo Hanging up the phone.output ath0\13input 2 OK\13\10if fail goto slcmd ; si no hay un OK como respuesta, poner el modem en modo de comando

:sldial ; marcar el numero telefonicopause 1echo Dialing.output atdt9,550311\13\10 ; escriba el numero de telefonoassign \%x 0 ; asignar cero al contador

:lookclear ; Limpieza del buffer de entradaincrement \%x ; Conteo de segundosinput 1 {CONNECT }if success goto slloginreinput 1 {NO CARRIER\13\10}if success goto sldialreinput 1 {NO DIALTONE\13\10}if success goto slnodialreinput 1 {\255}if success goto slhupreinput 1 {\127}if success goto slhupif < \%x 60 goto lookelse goto slhup

:sllogin ; loginassign \%x 0 ; asignar cero al contadorpause 1echo Looking for login prompt.

:slloopincrement \%x ; Conteo de segundosclear ; Limpieza del buffer de entradaoutput \13;; escriba su login prompt aqui:;input 1 {Username: }if success goto sluidreinput 1 {\255}if success goto slhupreinput 1 {\127}

176

Capítulo 15. PPP y SLIP

if success goto slhupif < \%x 10 goto slloop ; intentar 10 veces para obtener un loginelse goto slhup ; colgar y empezar de nuevo si a la decima falla

:sluid;; escriba su nombre de usuario:;output ppp-login\13input 1 {Password: };; escriba su contraseña:;output ppp-password\13input 1 {Entering SLIP mode.}echoquit

:slnodialecho \7No dialtone. Check the telephone line!\7exit 1

; local variables:; mode: csh; comment-start: "; "; comment-start-skip: "; "; end:

15.4. Usando PPP sobre Ethernet (PPPoE)Contribuido (tomado de http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) por Jim Mock.

En esta sección veremos como configurar PPP sobre una red Ethernet (PPPoE).

15.4.1. Configurando el kernelYa no es necesario realizar una configuración especial para que nuestro kernel cuente con soporte para PPPoE.Siempre y cuando el soporte de redes necesario se encuentre en él, ppp se encargará de cargarlo de una maneradinámica.

15.4.2. Editando el fichero ppp.conf

He aqui un ejemplo de un fichero de configuración ppp.conf completamente funcional:

default:set log Phase tun command # puede añadir más dispositivos si lo deseaset 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 ethernetset authname SuNombreDeUsuarioset authkey SuContraseñaset dialset loginadd default HISADDR

15.4.3. Ejecutando PPPEstando en modo superusuario (root) puede ejecutar:

# ppp -ddial nombre_del_proveedor_de_inet

15.4.4. Ejecutando PPP al inicio de sesiónAñada las siguientes líneas a su archivo /etc/rc.conf:

ppp_enable="YES"ppp_mode="ddial"ppp_nat="YES" # siempre y cuando desee habilitar nat para su red localppp_profile="nombre_del_proveedor_de_inet"

15.4.5. Diferenciando el uso del Servicio de PPPoEEn ocasiones es necesario utilizar una pequeña marca para diferenciar el servicio que vamos a utilizar para establecerla conexión. Las marcas (“tags”)de servicio son utilizadas para distinguir entre diferentes servidores de una red, a losque nos podemos conectar utilizando PPPoE.

Su proveedor de internet debe haberle provisto de la información necesaria para crear esta marca. Si esto no fué así,puede solicitar a su proveedor que le brinde esta información.

Como último recurso, puede intentar el método sugerido por el programa Roarging Penguin PPPoE(http://www.roaringpenguin.com/pppoe/), que puede encontrarse en la colección de ports. Al utilizar este programadebe tener en mente, que este puede desconfigurar su módem por completo, por esta razón piense biena antes deutilizarlo. Simplemente instale el programa controlador del módem, provisto por su porveedor. Posteriormente, debeacceder al menú de Sistema del programa. El nombre de su perfil debe aparecer listado. Que normalmente es ISP.

El nombre del perfil (marca del servicio) será utilizada por la configuración de PPPoE en el fichero de configuraciónppp.conf como el proveedor para la opción del comando set device (puede ver la página de ayuda ppp(8) paramás detalles). Esto debe verse algo similar a lo siguiente:

set device PPPoE:xl1:ISP

No olvide cambiar x11 por el dispositivo Ethernet que este utilizando.

178

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 suProveedor de Servicio de Internet).

Para información adicional consulte:

• Cheaper Broadband with FreeBSD on DSL (http://renaud.waldura.com/doc/freebsd/pppoe/) por Renauld Waldura.

15.4.6. Usando PPPoE en Casa con un Modem Dual ADSL 3ComEste módem no sigue el estandar establecido en el RFC 2516 (http://www.faqs.org/rfcs/rfc2516.html) (Un metodoque describe el uso de PPP por medio de un dispositivo Ethernet (PPoE), escrito por L. Mamakos, K. Lidl, J. Evarts,D. Carrel, D. Simone y R. Wheeler). En su lugar, el código de diferentes tipos de paquetes ha sido utilizado para elmanejo del entorno Ethernet. Si cree que esto es incorrecto y que se debiera ajustar a las especificaciones de PPPoE,por favor comentelo en 3Com (http://www.3com.com/).

Para poder hacer que FreeBSD sea capaz de comunicarse con este dispositivo, se debe establecer un control desistema (sysctl). Esto puede hacerse de forma automática al momento del arranque, editando el fichero/etc/sysctl.conf:

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 posiblecomunicarnos con un dispositivo cliente — servidor que utilice PPPoE y con un módem casero 3Com ADSL, almismo tiempo.

15.5. Usando PPP sobre ATM (PPPoA)Lo siguiente describe como configurar PPP utilizando ATM, alias PPPoA. PPPoA es una alternativa muy comúnentre proveedores de DSL en Europa.

15.5.1. Usando PPPoA con un Alcatel Speedtouch USBEl soporte bajo FreeBSD para este dispositivo se puede encontrar como un port, por que el firmware es distribuidobajo la licencia de Alcatel (http://www.alcatel.com/consumer/dsl/disclaimer_lx.htm).

Para instalar este software, simplemente utilice la colección de ports. Instale el port net/pppoa y siga lasinstrucciones provistas por el port.

179

Capítulo 15. PPP y SLIP

15.5.2. Usando mpdPuede usar mpd para conectarse a una gran variedad de servicios, en particular servicios pptp. Puede encontrar mpden la colección de ports, bajo net/mpd.

Primero debe instalar el port, y posteriormente configurar mpd para que se ajuste a sus necesidades y a laconfiguración del proveedor. El port instala un conjunto de ficheros de configuración de ejemplo, que estan biendocumentados en PREFIX/etc/mpd/. Note que PREFIX se refiere al directorio donde sus ports son instalados, quenormalmente es en /usr/local. Una guía completa en formato HTML, esta disponible una vez que se ha instaladoel port. Esta se localiza en PREFIX/share/mpd/. Aqui tenemos un ejemplo simple de configuración para conectarsea un servicio ADSL con mpd. La configuración se divide en dos ficheros, primero tenemos el fichero mpd.conf.

default:load adsl

adsl:new -i ng0 adsl adslset bundle authname usuario ➊

set bundle password contraseña ➋

set bundle disable multilink

set link no pap actcomp protocompset link disable chapset link accept chapset link keep-alive 30 10

set ipcp no vjcompset ipcp ranges 0.0.0.0/0 0.0.0.0/0

set iface route defaultset iface disable on-demandset iface enable proxy-arpset iface idle 0

open

➊ El nombre de usuario para autentificar con su proveedor.

➋ La contraseña para autentificar con su proveedor.

El fichero mpd.links contiene información a cerca de la, o las conecciones, que desee establecer. Un ejemplo dempd.links y que sea acompañante del ejemplo anterior, se muestra a continuación.

adsl:set link type pptpset pptp mode activeset pptp enable originate incoming outcallset pptp self 10.0.0.140set pptp peer 10.0.0.138

La conexión es fácil de inicializarla, al ingresar los siguientes comandos como root.

# mpd -b adsl

180

Capítulo 15. PPP y SLIP

El estatus de la conexión la puede ver con el comando.

% ifconfig ng0: flags=88d1 � UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST � mtu 1500

inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff

Usar mpd es la forma recomendada para conectarse con servicios ADSL con FreeBSD.

15.5.3. Usando pptpclientTambién es posible usar FreeBSD para conectarse a otros servicios PPPoA por medio de net/pptpclient.

Para conectarse por medio de net/pptpclient a un servicio DSL, instale el port o paquete y edite el fichero/etc/ppp/ppp.conf. Debe ser root para hacer estas operaciones. Un ejemplo de la sección de ppp.conf, semuestra a continuación. Para mayor información sobre las opciones de ppp.conf, consulte la página de ayuda deppp; ppp(8).

adsl:set log phase chat lcp ipcp ccp tun commandset timeout 0enable dnsset authname usuario ➊

set authkey contraseña ➋

set ifaddr 0 0add default HISADDR

➊ Nombre de usuario de la cuenta DSL.

➋ La contraseña de su cuenta.

AvisoDebido a que debe poner su contraseña en el fichero ppp.conf en texto plano, debe asegurarse quenadie tenga acceso de lectura a este fichero. Los siguientes comandos se aseguran de que el fichero solopueda se leido por root. Ve las páginas de ayuda chmod(1) y chown(8) para mayor información.

# chown root:wheel /etc/ppp/ppp.conf# chmod 600 /etc/ppp/ppp.conf

Esto abrirá una sesion por medio de PPP con su ruteador DSL. Los módems Ethernet DSL cuentan con una direcciónIP de LAN preconfigurada a la cual se puede conectar. En el caso del Alcatel Speedtouch, esta dirección es10.0.0.138. La documentación de su equipo debe indicarle que dirección utiliza. Para abrir el “tunel” e iniciar lasesión ppp, ejecute el siguiente comando.

# pptp dirección proveedor

Sugerencia: Puede añadir un símbolo de ampersand (“&”) al final de este comando, ya que pptp no retorna alshell 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 shellpuede examinar la conexión por medio del siguiente comando.

% ifconfig tun0tun0: flags=8051 � UP,POINTOPOINT,RUNNING,MULTICAST � mtu 1500

inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00Opened by PID 918

Si no le es posible conectarse, verifique la configuración de su ruteador, que normalmente es accesible por medio detelnet o de su navegador web. Si aun no puede conectarse examine la salida que da el comando pptp y el contenidodel fichero de registro (log) de ppp; /var/log/ppp.log.

15.6. Usando SLIPContribución Original por Satoshi Asami. Con comentarios por Guy Helmer y Piero Serini.

15.6.1. Configurando un cliente SLIPLo siguiente es una forma de configurar FreeBSD para que utilice SLIP, en un red con dirección estática. Paradirecciones dinámicas (esto es, donde su dirección cambia cada vez que se conecta), probablemente sea necesariorealizar algunos ajustes que complican la configuración.

En primer término, es necesario determinar a que puerto serial esta conectado nuestro módem. Mucha gente optapor} contar con un enláce simbólico, tal como /dev//modem, que apunta al nombre real del dispositivo,/dev/cuaaN. Esto permite abstenerse de usar el nombre real del dispositivo, en caso de que sea necesario cambiarde puerto nuestro módem. Lo cual puede ser de mucha ayuda, ya que puede ser un fastidio tener que editar unmonton de ficheros en /etc y ficheros de tipo .kermrc en todo el sistema!.

Nota: /dev/cuaa0 es COM1, cuaa1 es COM2, etc.

Asegurese de contar con la siguiente opción en la configuración de su kernel:

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 quelo haya borrado intencionalmente.

15.6.1.1. Cosas Que Tiene Que Hacer Solo Una Vez

1. Añada el nombre de su maquina, gateway, servidores de nombre a su fichero /etc/hosts. Este es un ejemplode mi fichero:

127.0.0.1 localhost loghost136.152.64.181 water.CS.Example.EDU water.CS water136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway128.32.136.9 ns1.Example.EDU ns1

182

Capítulo 15. PPP y SLIP

128.32.136.12 ns2.Example.EDU ns2

2. Asegurese de que cuenta con la opción hosts antes de la opción bind, en su fichero /etc/host.conf. De locontrario 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”

3. Añada los parámetros de inicialización del dispositivo sl0, al añadir la línea:

ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"

4. Especificque cual será su ruteador por omisión al editar la línea:

defaultrouter=“NO”

a quedar:

defaultrouter=“slip-gateway”

4. Edite su fichero /etc/resolv.conf (si no existe debe crearlo), a que contenga lo siguiente:

domain CS.Ejemplo.EDUnameserver 128.32.136.9nameserver 128.32.136.12

Como puede ver, lo anterior define el nombre de host, de su servidor de nombres. Claro esta, el nombre dedominio 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 nocuente con la misma).

6. Reinicie su sistema y asegurese que cuenta con el nombre de host (hostname) correcto.

15.6.1.2. Haciendo una Conexión con SLIP

1. Marque el número, teclee en el signo de comando slip, ingrese el nombre y la contraseña. Lo que se requiereingresar, depende de su sistema. Si utiliza kermit, puede utilizar un script similar al siguiente:

# kermit setupset modem hayesset line /dev/modem

183

Capítulo 15. PPP y SLIP

set speed 115200set parity noneset flow rts/ctsset terminal bytesize 8set file type binary# El siguiente macro se encarga de llamar e ingresar al sistemadefine 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 haceresto, 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 malaidea. 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 estono funciona, puede intentar como argumento del comando slattach, la opción -a en lugar de utilizar laoptción -c.

15.6.1.3. Como Terminar la Conexión

Para terminar la conexión haga lo siguiente:

# kill -INT ‘cat /var/run/slattach.modem.pid‘

esto terminaraá slattach. Recuerde que para hacer esto, usted debe estar firmado como superusuario (root).Posteriormente dirijase a kermit (puede hacer esto con fg si lo envio a segundo plano) y salga (tecleando q).

La página de ayuda de slattach indica que debe utilizar el comando ifconfig sl0 down, para marcar comoterminado el uso del dispositivo, pero tal parece que esto no hace una gran diferencia para mi. (ifconfig sl0 da elmismo 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 elcaso, simplemente inicie de nuevo kermit y vuelva a salir. Normalmente en el segundo intento hay exito.

15.6.1.4. Problemas Comunes

Si esto no funciona, sientase libre de preguntarme. Lo siguiente es una recapitulación de los problemas que máscomunmente se presentan:

• El no utilizar la opción -c o -a con el comando slattach (Esto debiera se fatal, pero algunos usuarios hanreportado 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 obtengaalgo similiar a lo siguiente:

# ifconfig sl0sl0: 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 tehost”, al hacer ping. Un ejemplo de esto se muestra a continuación:

# netstat -rRouting tablesDestination 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.438inr-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. Estableciendo un Servidor SLIPEste documento provee sugerencias, para establecer un servidor de SLIP, bajo FreeBSD, lo que generalmentesignifica configurar su sistema, para que de manera automática inicie los servicios, al firmarse usuarios—clientesremotos 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 documentosupone que usted cuenta con conocimientos sobre el protocolo de redes TCP/IP, y particularmente, redes ydirecciones de nodos, mascaras de red, subneteo, ruteo y protocolos de ruteo, tal como RIP. El configurar serviciosSLIP, en un servidor, requiere un conocimiento de estos conceptos, y si usted no esta familiarizado con estos, puedeleer 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ónde su sistema, para efecto de utilizar el mismo para realizar la conexión. Si usted no lo ha hecho, por favor lea eltutorial sobre configuración de estos servicios; si cuenta con un navegador para la World-Wide Web, puede ver lostutoriales 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 loscontroladores de dispositivos de puertos en serie, y ttys(5), gettytab(5), getty(8), & init(8), para ver informaciónrelevante, sobre la configuración de su sistema, para efecto de que acepte accesos (logins) por medio de un módem, yquizás stty(1) para información sobre los parámetros de configuración de puertos en serie (tal como clocal, que seutiliza para la conexión directa por medio de puertos seriales).

15.6.2.2. Echemos un Vistazo

En su configuración típica, el desarrollo de FreeBSD como un servidor SLIP, funciona de la siguiente manera: unUsuario SLIP, se conecta del Servidor SLIP FreeBSD e ingresa al sistema con una identificación especial, que utiliza/usr/sbin/sliplogin como shell del usuario. El programa sliplogin busca en el fichero/etc/sliphome/slip.hosts la línea que haya sido creada especialmente para el usuario, conecta la línea serial auna interfaz SLIP disponible y posteriormente ejecuta el script /etc/sliphome/slip.login, para configurar lainterfaz SLIP.

15.6.2.2.1. Un Ejemplo de Acceso al Servidor SLIP

Por ejemplo si la clave de acceso de un usuario SLIP fuese Shelmerg, la entrada del usuario Shelmerg, en elfichero /etc/master.passwd se vera algo similar a lo siguiente:

Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin

Cuando Shelmerg accese al sistema, el comando sliplogin, buscará en el fichero/etc/sliphome/slip.hosts, una línea, en la cual el ID (identificación) del usuario coincida, por ejemplo, puedeser que en el fichero /etc/sliphome/slip.hosts exista una línea simliar a la siguiente:

Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp

El comando sliplogin encontrará la línea que coincida, enganchará la línea serial a cualquier interfaz SLIPdisponible y posteriormente ejecutará /etc/sliphome/slip.login de manera similar a:

/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp

Si todo marcha bien, /etc/sliphome/slip.login creará una configuración, por medio de ifconfig, para lainterfaz SLIP, a la cual sliplogin se ha adjuntado (la interfaz slip 0, que era el primer parámetro dado en la lista deslip.login), para establecer la dirección local IP (dc-slip), la interfaz de la direción IP Remota (sl-helmer), lasubmascara de red para la interfaz SLIP (0xfffffc00) y cualquier otra opción adicional (autocomp). Si algo no vadel 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 ayudasyslogd(8) así como syslog.conf(5) y quizas el fichero /etc/syslog.conf, para ver que es lo que syslogd estaalmacenando y donde es que lo almacena.

OK, basta de ejemplos — entremos de lleno en la configuración del sistema.

15.6.2.3. Configuración del Kernel

El kernel de FreeBSD, por omisión, cuenta con 2 dispositivos SLIP definidos (sl0 y sl1); usted puede utilizarnetstat -i, para verificar si estos dispositivos se encuentran en el kernel de su sistema.

186

Capítulo 15. PPP y SLIP

Un ejemplo del resultado de netstat -i:

Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Colled0 1500 � Link � 0.0.c0.2c.5f.4a 291311 0 174209 0 133ed0 1500 138.247.224 ivory 291311 0 174209 0 133lo0 65535 � Link � 79 0 79 0 0lo0 65535 loop localhost 79 0 79 0 0sl0* 296 � Link � 0 0 0 0 0sl1* 296 � Link � 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 aparecedespué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 paraenviar paquetes (de hecho su sistema FreeBSD no trabajara como ruteador, por default) esto en base a losrequerimientos para Internet, establecidos por los RFCs ( vea 1009 [Requerimentos para Pasarelas (Gateway) enInternet], 1122 [Requerimientos para hosts de Internet — Capas de comunicación] y quizás 1127 [RFC sobre UnaPerspectiva de los Requerimientos de Hosts]). Si usted desea que su servidor SLIP sobre FreeBSD, opere como unruteador, 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 elnumero 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 refieraseCapítulo 8 al apartado correspondiente.

15.6.2.4. Configuración de Sliplogin

Como se menciono anteriormente, existen tres ficheros en el directorio /etc/sliphome, que son parte de laconfiguración de /usr/sbin/sliplogin (vea la pagina de ayuda sliplogin(8) de para ver la ayuda del comandosliplogin): slip.hosts, que es el fichero que define a los usuarios SLIP, así como sus direcciones IPcorrespondientes; slip.login, que normalmente es utilizado para configurar la interfaz de SLIP; y(opcionalmente) slip.logout, que hace lo opuesto a slip.login, cuando la conexión serial ha terminado.

15.6.2.4.1. Configuració de slip.hosts

El fichero /etc/sliphome/slip.hosts contiene líneas, que al menos cuentan con cuatro partes, separadas porespacios en blanco:

• Identificador (nombre) del usuario SLIP

• Dirección Local (local para el servidor SLIP) de la liga a SLIP

• Dirección Remota de la liga a SLIP

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, pormedio de /etc/hosts o por el servidor de nombres de dominio (DNS), dependiendo de lo que haya especificado enel 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

Al final de la línea puede ver que existen una o más opciones.

• normal — sin compresión de los encabezados.

• compress — compresión de los encabezados.

• autocomp — compresión automática, si el host remoto lo permite.

• noicmp — deshabilitar los paquetes ICMP (de tal forma que cualquier paquete enviado por “ping” seráarechazado, en lugar de ocupar de su ancho de banda).

La elección sobre la dirección local y remota depende si usted va a utilizar una conexión TCP/IP dedicada o bien siva a utilizar una conexión por medio de “proxy ARP” en su servidor SLIP (no es correcto “proxy ARP”, pero es laterminología utilizada en esta sección para describirlo). Si usted no esta seguro que metodo manejar o como asignarla dirección IP, por favor refierase a alguno de los libros sobre TCP/IP, que se mencionan en los Prerequisitos deSLIP (Sección 15.6.2.1) y/o consulte al administrador de IP de su red.

Si usted piensa subnetear para los diferentes clientes SLIP, será necesario que la dirección de la subred (subnet),salga de la dirección IP que tenga asignada su red, y el numero de cada cliente, del numero que asigne a su subred.Posteriormente puede que sea necesario, o bien configurar una ruta estática a la subred SLIP, por medio de suservidor SLIP en su ruteador más cercano por IP.

De otra forma, si usted piensa utilizar un metodo “proxy ARP”, será necesario que a sus clientes SLIP, se les asigneuna dirección IP, que se encuentre dentro del rango que este utilizando para su subred Ethernet, y tambié seránecesario que haga algunos ajustes en los ficheros script /etc/sliphome/slip.login y en/etc/sliphome/slip.logout, para que usen arp(8), para que maneje la tabla ARP del servidor SLIP y llamadosdel proxy-ARP.

15.6.2.4.2. slip.login Configuración

El típico fichero /etc/sliphome/slip.login se ve de la siguiente manera:

#!/bin/sh -## @(#)slip.login 5.1 (Berkeley) 7/1/90

## generic login file for a slip line. sliplogin invokes this with# the parameters:# 1 2 3 4 5 6 7-n# slipunit ttyspeed loginname local-addr remote-addr mask opt-args

188

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 addressesand 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 latabla del servidor SLIP. Esta entrada le indica al servidor SLIP que debe responder con la dirección MAC de sudispositivo 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” nova a funcionar!. Para efecto de conocer cual es la dirección MAC del dispositivo Ethernet (tarjeta de red), de suservidor 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 puntosque aparecen en la salida del comando netstat -i deben cambiarse por dos puntos, así mismo deberá deanteponerse un cero, a cada dígito hexadecimal que aparezca sólo (no en pares), de tal forma que convirtamos ladirección en lo que arp(8) requiere para trabajar; vea la página de ayuda arp(8), para ver información completa sobresu uso.

Nota: Recuerde que cuando cree los ficheros /etc/sliphome/slip.login y /etc/sliphome/slip.logout,deben contar con permisos de ejecución (chmod 755 /etc/sliphome/slip.login

/etc/sliphome/slip.logout), de otra forma estos scripts no podrán llevar a cabo su función.

15.6.2.4.3. Configuración de slip.logout

El fichero /etc/sliphome/slip.logout no es indispensable (a menos que vaya a utilizar “proxy ARP”), pero siaun así decide crearlo, el siguiente es un ejemplo básico del script slip.logout :

#!/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 deseaeliminar 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 alingresar al sistema.

Para esta más seguros: asegurese de que el fichero /etc/sliphome/slip.logout cuenta con los permisosadecuados para su ejecución, una vez que lo ha creado (ej. chmod 755 /etc/sliphome/slip.logout) .

15.6.2.5. Consideraciones sobre el Enrutamiento

Si usted no esta utilizando el metodo “proxy ARP”, para efecto de rutear los paquetes entre sus clientes SLIP y elresto de la red (y quizás Internet), deberá de hacer una de las siguientes dos acciones, o bien añadir direccionesestáticas, a su(s) ruteador(es) más cercanos, para que se reenvien los paquetes de la subred de sus clientes SLIP, pormedio de su servidor SLIP, o bien tendrá que instalar y configurar gated en su servidor SLIP (que corre FreeBSD!),de tal forma que le indique a su(s) ruteador(es), por medio del protocolo correcto, a cerca de su subred SLIP.

15.6.2.5.1. Direcciones de Enrutamiento Estáticas

Añadir direcciones estáticas de enrutamiento puede ser un problema (o imposible si usted no cuenta con la autoridadpara hacerlo...). Si usted cuenta con una red de ruteo-múltiple en su organización, algunos ruteadores, tales como losfabricados por Cisco y Proteon, puede ser que no sea suficiente con el hecho de configurar las rutas estáticas de susubred SLIP, sino que sea necesario indicar que rutas utilizar para informar a cerca de otras rutas, así que algo deexperiencia así como determinación para la resolución de problemas serán necesarias para poner la ruta basada-en-ruteo-estático a trabajar.

190

Capítulo 15. PPP y SLIP

15.6.2.5.2. Ejecutando gated

Una alternativa para los dolores de cabeza que pueden dar las redes con ruteo estático, es intalar gated en suservidor SLIP bajo FreeBSD y configurarlo, para que utilice los protocolos de ruteo apropiados(RIP/OSPF/BGP/EGP) para informar a otros ruteadores, a cerca de su subred SLIP. Una vez que lo ha compilado einstalado, deberá crear el fichero /etc/gated.conf, que configurará a gated; aqui hay un ejemplo, similar al queel autor utilizó en un servidor SLIP FreeBSD:

Nota: gated es un software propietario y su código fuente no estará disponible al público más (más informaciónen el sitio gated (http://www.gated.org/)). Esta sección solo existe para asegurarse de la compatibilidad conaquellos que usan la versió antigua.

## gated configuration file for dc.dsu.edu; for gated version 3.5alpha5# Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface### tracing options#traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ;

rip yes {interface sl noripout noripin ;interface ed ripin ripout version 1 ;traceoptions route ;

} ;

## Turn on a bunch of tracing info for the interface to the kernel:kernel {

traceoptions remnants request routes info interface ;} ;

## Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP#

export proto rip interface ed {proto direct {

xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections} ;

} ;

## Accept routes from RIP via ed Ethernet interfaces

import proto rip interface ed {all ;

} ;

191

Capítulo 15. PPP y SLIP

En el ejemplo anterior, el fichero de configuración gated.conf transmite información sobre la subred SLIPxxx.xxx.yy , por medio de RIP al dispositivo Ethernet; si usted esta utilizando un dispositivo de red, diferente deed, será necesario que modifique el parámetro ed por el correspondiente. En este ejemplo, el fichero también realizauna busqueda por el fichero /var/tmp/gated.output, que es un fichero que nos sirve para depurar cualquier errorque se presente en la actividad de gated; usted puede desactivar la opción de depuración (debug), si es que gatedesta funcionando correctamente. Será necesario que modifique xxx.xxx.yy., a quedar con la dirección correctade 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 elsistema, ejecute el script para gated, en lugar de ejecutar routed. La forma más fácil de hacer esto, es editar lasvariables 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 AvanzadoNetworking Avanzado

193

Capítulo 17. Correo ElectrónicoCorreo Electrónico

194

Capítulo 18. Lo último de lo últimoRestructured, reorganized, and parts updated by Jim Mock. Original work by Jordan Hubbard, Poul-Henning

Kamp, John Polstra, y Nik Clayton.

18.1. SinopsisFreeBSD está en desarrollo continuo entre versiones. Para los que quieran estar en lo último de lo último, hay variasformas de sincronizar tu sistema con el último desarrollo fácilmente. ¡Estás advertido— lo último de lo último no espara cualquiera! Este capítulo te ayudará a decidir si quieres seguir el sistema de desarrollo o quedarte en algunas delas versiones publicadas.

Después de leer este capítulo sabrás:

• La diferencia entre las dos ramas de desarrollo; FreeBSD-STABLE y FreeBSD-CURRENT.

• Cómo mantener tu sistema al día con CVSup, CVS, o CTM.

• Cómo reconstruir y reinstalar el sistema base entero con make world.

Antes de leer este capítulo, deberías:

• Disponer correctamente tu conexión de red (Capítulo 16).

• Saber cómo instalar programas adicionales de terceros. (Capítulo 4).

18.2. FreeBSD-CURRENT vs. FreeBSD-STABLEHay dos ramas de desarrollo de FreeBSD; FreeBSD-CURRENT y FreeBSD-STABLE. Esta sección explicará unpoco sobre cada una y describirá cómo mantener tu sistema al día entre cada árbol respectivo. FreeBSD-CURRENTserá discutida primero, luego FreeBSD-STABLE.

18.2.1. Manteniendo la versión Current.Al leer esto, ten en cuenta que FreeBSD-CURRENT es el “lo más reciente” del desarrollo y que si tú eres nuevo enFreeBSD, deberías pensartelo muy mucho antes de ejecutarlo.

18.2.1.1. ¿Qué es FreeBSD-CURRENT?

FreeBSD-CURRENT es, literalmente, nada más que una instantánea diaria sobre el trabajo en el código fuente parael FreeBSD. Esto incluye trabajo cambiante, cambios experimentales y mecanismos transitorios que podrían estar ono presentes en la próxima versión del programa. Mientras la mayoría de nosotros compilamos casi a diario elFreeBSD-CURRENT las fuentes, Hay períodos de tiempo en que las fuentes son literalmente incompilables. Estosproblemas son solucionados tan pronto como es posible, pero si las fuentes del FreeBSD-CURRENT son un desastreo una bendición su utilidad puede ser literalmente una cuestión de en que momento del período de 24 horas dado lasgrabaste.

195

Capítulo 18. Lo último de lo último

18.2.1.2. ¿Quién necesitaFreeBSD-CURRENT?

FreeBSD-CURRENT está disponible generalmente para tres grupos de interés principales:

1. Miembros del grupo FreeBSD que están activamente trabajando en alguna parte del código fuente del árbol ypara 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 losproblemas para asegurarse de que FreeBSD-CURRENT se mantiene tan cuerdo como sea posible. También haygente 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 hacencomentarios ocasionales o contribuyen al código.

18.2.1.3. ¿Qué No es FreeBSD-CURRENT?

1. Un rápido sistema de seguimiento para conseguir pre-distribuciones porque has oido que hay alguna nuevafuncionalidad 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 lagente en alguna de las tres situaciones. Nosotros “habilitamos” FreeBSD-CURRENT pero simplemente notenemos tiempo para dar asistencia técnica. Esto no es porque seamos de alguna forma mala gente que no quiereayudar a los demás (ni siquiera estaríamos haciendo FreeBSD si lo fueramos), es simplemente porque nopodemos responder 400 mensajes al día y en realidad trabajamos en FreeBSD! Si nos dan a escoger entremejorar el FreeBSD y responder montones de preguntas, la mayoría de los desarrolladores y usuarios,problamente opten por lo primero.

18.2.1.4. Usando FreeBSD-CURRENT

1. Unirse a FreeBSD-CURRENT mailing list <[email protected]> y al FreeBSD CVS commitmessage mailing list <[email protected]> . No es sólo una buena idea, es esencial. Si no estás en elFreeBSD-CURRENT mailing list <[email protected]>, no verás los comentarios que la gentehace sobre la situación del sistema current y por esto probablemente terminarás tropezando con un montón deproblemas que otros ya han encontrado y solucionado. Casi más importante, te perderás importantes boletinesque podrían ser fundamentales para la continuidad de la salud de tu sistema.

La lista de correoFreeBSD CVS commit message mailing list <[email protected]> te permitirá ver elapunte en el registro de "commits" por cada cambio que se realice junto con información pertinente sobreposibles efectos secundarios.

Para unirte a estas listas, envía un correo a <[email protected]> and indicando lo siguiente en elcuerpo del mensaje:

subscribe freebsd-currentsubscribe cvs-all

196

Capítulo 18. Lo último de lo último

Opcionalmente,puedes también ponerhelp y Majordomo te enviará ayuda completa sobre como suscribirse odesuscribirse 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 esel método más recomendable, ya que te permite grabar la colección entera una vez y a partir de entoncessólo lo que cambie desde entonces.Mucha gente ejecuta cvsup from cron y mantiene actualizadas susfuentes automáticamente. Tienes que adaptar la muestra de supfile de arriba y configurar cvsup a tuentorno.Si quieres ayuda para hacer esta configuración, teclea:

# pkg_add -fftp://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énpermiten 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 correoelectrónico) CTMes una opción. Sin embargo es muy complicado y puede darte archivos rotos. Por eso seusa raramente, lo que incrementa la posibilidad de que no funcione durante largos periodos de tiempo. Terecomendamos 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, nosólo algunos trozos. La razón es que varias partes de las fuentes dependen de actualizaciones de otros sitios, ytratar 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 ejecutarun make world la primera vez como parte del proceso de actualización. Leer el FreeBSD-CURRENT mailinglist <[email protected]> te mantendrá al día en otros procedimientos de arranque que a vecesse 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, especialmentesi tienes sugerencias para mejoras o arreglos de fallos. Recibimos tus sugerencias con más entusiasmo siincluyes el código correspondiente!

197

Capítulo 18. Lo último de lo último

18.2.2. Manteniendo Stable con FreeBSD

18.2.2.1. ¿Qué es FreeBSD-STABLE?

FreeBSD-STABLE es nuestra rama de desarrollo con la que hacemos las versiones principales. Los cambios van aesta rama con un ritmo diferente, asumiendo que han ido primero a FreeBSD-CURRENT para probarse. Esta es aununa rama de desarrolllo, aunque, y esto significa en cualquier momento, las fuentes deFreeBSD-STABLE pueden ono ser adecuadas para un propósito determinado. Es simplemente otro camino en la ingeniería del desarrollo, no unrecurso para usuarios finales.

18.2.2.2. ¿Quién necesita FreeBSD-STABLE?

Si estás interesado en seguir o en contribuir al proceso de desarrollo de FreeBSD, especialmente en lo relativo a lapróxima“point” release de FreeBSD, entonces deberías considerar seguir FreeBSD-STABLE.

Aunque es verdad que algunos arreglos de seguridad van tambien a la rama FreeBSD-STABLE , tú no necesitasseguir FreeBSD-STABLE para hacerlo. Cada notificación de seguridad de FreeBSD explica como solucionar elproblema en la versión que afecta. 1 seguir una rama de desarrollo sólo por razones de seguridad es seguramentetambién traer una gran cantidad de cambios no deseados.

Aunque nosotros nos esforzamos para asegurar que la rama FreeBSD-STABLE compila y funciona en cualquierocasión, esto no puede garantizarse, ya que el código es desarrollado en FreeBSD-CURRENT antes de incluirlo enFreeBSD-STABLE, más gente usa FreeBSD-STABLE que FreeBSD-CURRENT, asi que es inevitable que algunoserrores se encuentren alguna vez en FreeBSD-STABLE que no eran evidentes en FreeBSD-CURRENT.

Por estas razones, nosotros no recomendamos que sigas ciegamenteme FreeBSD-STABLE, y es especialmenteimportante que no actualices algun servidor importante a FreeBSD-STABLE sin probar primero el código en tuentorno de desarrollo.

Si no tienes los recursos para hacer esto entonces te aconsejamos que ejecutes la más reciente distribución deFreeBSD, y uses el mecanismo de actualización binaria entre distribución y distribución.

18.2.2.3. Usando FreeBSD-STABLE

1. Únete a FreeBSD-STABLE mailing list <[email protected]>. Esto te mantendrá informado delas dependencias de construcción que puedan aparecer en FreeBSD-STABLE o cualquier otra cuestión querequiera especial atención. Los desarrolladores harán los anuncios en esta lista de correo cuando esténcontemplando algun arreglo polémico o actualización, dando a los usuarios la oportunidad de responder si tienenalguna cuestión que plantear respecto al cambio propuesto.

La lista de correo FreeBSD CVS commit message mailing list <[email protected]> te permitirá ver elapunte del commit log para cada cambio tal como se hace junto con la posible información sobre los efectossecundarios.

Para apuntarse a estas listas, envía un correo a <[email protected]> y especifica lo siguiente en elcuerpo del mensaje:

subscribe freebsd-stablesubscribe cvs-all

198

Capítulo 18. Lo último de lo último

Opcionalmente, puedes indicar help y Majordomo te enviará ayuda completa sobre como suscribirte ydesuscribirte 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 anyother release.

Si ya estas usando una versión previa de FreeBSD y quieres actualizar via fuentes entonces puedes hacerlofácilmente desde ftp.FreeBSD.org. Esto puede hacerse de tres maneras:

a. Usa el programa cvsup con this supfile(ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/stable-supfile). Este es elsistema recomendado, ya que te permite grabar la colección entera una vez y a partir de entonces sólo lo quecambie. Algunos usan cvsup from cron para mantener las fuentes al día autom´ticamente. Para unainterface bastante sencilla para esto, simplemente teclea:

# pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz

b. Usa ftp. Las fuentes de árbol para el FreeBSD-STABLE 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 ejecutarun make world la primera vez como parte del proceso de instalaci´n.Leyendo elFreeBSD-STABLE mailing list<[email protected]> te mantendrá al día en los otros procedimientos de arranque que algunavez pueden llegar a ser necesarios cuando nos acercamos a la siguiente versión.

18.3. Sincronizando tu código fuenteHay varias formas de usar una conexión de Internet (o de correo) para estar al día en cualquier area dada de lasfuentes del proyecto FreeBSD, o en todas las areas, dependiendo de lo que te interese. Los servicios primarios queofrecemos son Anonymous CVS, CVSup, y CTM.

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 deactualizació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 lasfuentes del kernel. Actualizar sólo parte del código fuente del arbol, sólo el kernel, o sólo el area de usuario traea menudo problemas.Estos problemas pueden ir desde errores de compilación hasta kernel panics o corrupciónde datos.

Anonymous CVS and CVSup usa el modelo pull para actualizar las fuentes. En caso de CVSup el usuario (o uncron script) invoca el programa cvsup, y este interactua con el servidor cvsupd en algún lugar para traer losarchivos 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. Lasactualizaciones se crean sobre la marcha por el servidor según lo que tienes o quieras tener. Anonymous CVS esbastante mas simple que CVSup que es sólo una extensión de CVS que permite retirar los cambios directamentedesde un repositorio (repository) CVS remoto. CVSup puede hacer esto mucho más eficientemente, peroAnonymous 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 queretires..En vez de eso, un script que identifica los cambios en los archivos se ejecuta varias veces al día en la maquinamaestra CTM, cualquier cambio detectado, sellado con una secuencia de números y codificado para transmitirlo encorreo ( sólo en ASCII imprimible). Una vez recibido, estos“CTM deltas” pueden ser manipulados por la utilidadctm.rmail(1) que automáticamente decodifica, verifica y aplica los cambios a la copia de las fuentes del usuario. Esteproceso es más eficiente que CVSup, y pone menos presión en nuestros recursos de servidor ya que es un modelo deempujar en vez de tirar .

Hay otros aspectos a tener en cuenta, por supuesto. Si descuidadamente barres trozos de tu archivo, CVSup tedetectará y reconstruirá las porciones dañadas. CTM no hace esto, y si borras algún trozo de las fuentes del árbol (yno has hecho una copia de respaldo) entonces tendrás que partir de cero ( desde el más reciente CVS “base delta”) yreconstruirlo todo con CTM o, con anoncvs, simplemente borrará los malos bits (bad bits) y resincronizarás

18.4. Usando make world

Una vez que has sincronizado las fuentes de tu árbol local con alguna versión determinada deFreeBSD(FreeBSD-STABLE, FreeBSD-CURRENT, y asi) puedes usar las fuentes del árbol para reconstruir el sistema.

Haciendo una copia de respaldoNunca se hace suficiente hincapié sobre lo importante que es hacer unacopia de respaldo de tu sistema antes de hacer esto. Aunque reconstruir world es (siempre que sigas estasinstrucciones) una tarea fácil de hacer, habrá veces que inevitablemente cometas errores, o cuando erroreshechos 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 notengas nunca que usarlo, pero es mejor asegurarse que lamentarlo!

Suscribete a la lista de correo correctaLas ramas FreeBSD-STABLE and FreeBSD-CURRENT son , pornaturaleza, en desarrollo . La gente que contribuye a FreeBSD son humanos, y los errores ocasionalmenteocurren.

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ñalde diagnostico. O el cambio puede ser catastrófico, e inutilizar tu sistema inarrancable o destruir tu sistema dearchivos ( o algo peor).

Si un problema como este ocurre, un “heads up” es enviado a la lista de correo apropiada, explicando lanaturaleza del problema y a que sistema afecta. Y un “all clear” anuncio es enviado cuando el problema ha sidoresuelto.

Si intentas seguir FreeBSD-STABLE o FreeBSD-CURRENT y no lees la FreeBSD-STABLE mailing list<[email protected]> o la FreeBSD-CURRENT mailing list <[email protected]>respectivamente, entonces estás buscando problemas.

18.4.1. Lee /usr/src/UPDATING

Antes de hacer nada mas, lee /usr/src/UPDATING (o el archivo equivalente dondequiera que tengas una copia delcódigo fuente). Este archivo puede contener importante información sobre problemas que puedes encontrarte, oindicar el orden en que debes ejecutar ciertas ordenes.) Si UPDATING contradice algo que leas aqui, UPDATING tienepreferencia.

Importante: Leer UPDATING no es un sustituto aceptable a la suscripcion a la lista adecuada, como se describióantes. Los dos requisitos son complementarios no exclusivos.

18.4.2. Comprueba /etc/make.conf

Examina los archivos /etc/defaults/make.conf y /etc/make.conf. El primero contiene algunas definicionespor defecto – la mayoría de las cuales ya se han comentado. Para hacer uso de ellas cuando reconstruyas tu sistemadesde las fuentes, añadelas a /etc/make.conf. Ten en cuenta que cualquier cosa que añadas a /etc/make.confse usa cada vez que ejecutas make, así que es una buena idea colocarles algo sensato para tu sistema.

Un usario típico querrá probablemente copiar las líneas CFLAGS y NOPROFILE encontradas en/etc/defaults/make.conf a /etc/make.conf y ponerles un comentario.

Examina las otras definiciones (COPTFLAGS, NOPORTDOCS y sucesivamente) y decide si son importantes para ti.

18.4.3. Actualiza /etc/group

Este directorio /etc contiene una gran parte de la información sobre la configuración de tu sistema ,asi como scriptsque se ejecutan al iniciarse el sistema. Algunos de estos scripts cambian de versión en versión de FreeBSD.

Algunos de estos archivos de configuración son usados en el funcionamiento del día a día del sistema. En particular,/etc/group.

Ha habido ocasiones durante la instalación de “make world” que se ha supuesto la existencia de ciertos nombres deusuario o grupos. Cuando se lleva a cabo una actualizacion es probable que alguno de estos grupos no existan. Estocausa problemas cuando actualizas. para>

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 usariosles falló el proceso de instalación cuando partían del subsistema ppp fueron instaladas usando un nombre de grupoinexistente (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 nuevoarchivo que no están en tu archivo entonces cópialos encima. De la misma forma, deberías renombrar cualquiergrupo 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 archivospertenecen al grupo que estas renombrando o borrando.

# find / -group GID -print

mostrará todos los ficheros que pertenecen al grupo GID (que puede ser o un nombre de grupo o una IDnumérica de grupo).

18.4.4. Cambiando a modo MonousuarioPuede que quieras compilar el sistema en modo monousuario.Aparte del beneficio obvio de hacer que las cosasvayan más rapido , reinstalar el sistema tocará un montón de archivos importantes del sistema, todos los binariosstandard del sistema, bibliotecas incluso archivos y demás. Cambiar estas cosas en un sistema en funcionamiento(especialmente si en ese momento hay usuarios activos en el sistema) es ganas de meterse en lios.

Otro método es compilar el sistema en modo multiusuario y luego cambiar a modo monousuario para lainstalación.Si te gustaría hacerlo de esta forma, simplemente retrasa los siguientes pasos hasta que hayas completadola construcción.

Como superusuario, ejecuta

# shutdown now

desde un sistema en funcionamiento, al que cambiará a modo monousuario.

Alternativamente, reinicia el sistema, y en el boot promt, introduce la -s flag. El sistema se reiniciará en modomonousuario.En el promt de la shell deberías ejecutar:

# fsck -p# mount -u /# mount -a -t ufs# swapon -a

Esto comprueba los sistemas de archivos, remounts / lectura/escritura, mounts, todos los sistemas de archivos UFSreferenciados en /etc/fstab y entonces hace los cambios indicados.

18.4.5. Quita /usr/obj

Mientras algunas partes son reconstruidas ellas se colocan en directorios que (por defecto) estan bajo /usr/obj. Losdirectorios shadow estos bajo /usr/src.

202

Capítulo 18. Lo último de lo último

Puedes acelerar el proceso “make world” y posiblemente ahorrarte dolores de cabeza por las dependencias quitandoeste 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 *

18.4.6. Recompilar la fuente

18.4.6.1. Guardando la salida (Output)

Es una buena idea guardar la salida que obtienes cuando se ejecuta make(1) en otro archivo. Si algo sale mal tendrásuna copia del mensaje de error.Aunque esto puede no ayudarte en el diagnóstico de que ha salido mal, puede ser útilsi mandas tu problema a una de las listas de FreeBSD .

La forma más fácil de hacer esto es usar la orden script(1) , con un parámetro que indique el nombre del archivodonde guardar los datos de salida.Podrías hacer esto inmediatamente antes de reconstruir world, y luego teclearexit cuando el proceso ha terminado.

# script /var/tmp/mw.outScript started, output file is /var/tmp/mw.out# make TARGET... compile, compile, compile ...# exitScript done, ...

Si haces esto, no guardes el output en /tmp. Este directorio podria ser vaciado en el proximo arranque. Un lugarmejor para almacenarlo es en /var/tmp (como en el ejemplo anterior) o en el directorio home de root.

18.4.6.2. Compilar e instalar el Sistema Base (Base System)

Debes estar en /usr/src directory...

# cd /usr/src

(a menos que, por supuesto, tu 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, quedescribe 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:

# make -x -DVARIABLE target

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 delas 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 esasvariables.Estas son las mismas variables como estan colocadas en /etc/make.conf, y esto proporciona otra formade disponerlas.

# make -DNOPROFILE=true target

es otra forma de indicar que las bibliotecas indicadas no se construyan, y corresponde con el

NOPROFILE= true# Avoid compiling profiled libraries

Las líneas en /etc/make.conf.

target dicen a make(1) que quieres hacer. Cada Makefile define un número de diferentes “objetivos”, y laelección de esos objetivos determina lo que ocurre.

Algunos objetivos estan listados en Makefile, pero no significa que puedas ejecutarlos En vez de eso, se usan por elproceso de consrucción para romper los pasos necesarios para reconstruir el sistema en un número de sub-pasos.

La mayoría de las veces, no necesitas pasar ningun parametro a make(1), y asi tu orden se parecerá a esto:

# make target

A partir de la versión 2.2.5 de FreeBSD (en realidad, se creó por primera vez en la FreeBSD-CURRENT branch, yluego 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 componentedel sistema current será afectado. La construcción es “self hosted”. Por esto puedes con seguridad ejecutarbuildworld en una m6aacute;quina funcionado en modo multiusuario sin miedo a efectos indeseados.Aunque aunes recomendable que ejecutes installworld en modo monousuario.

En segundo lugar, permite usar NFS mounts para actualizar multiples m6aacute;quinas en tu red. Si tienes tresmáquinas, A, B y C que quieres actualizar, ejecuta make buildworld y make installworld en A. B y C debenluego mount NFS /usr/src y /usr/obj desde A, y puedes luego ejecutar make installworld para instalar losresultados 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 enmáquinas con multiples CPU. Sin embargo, ya que el proceso de compilación es IO bound mas que CPU bound estambién útil en máquinas con una sóla CPU.

En una típica máquina mono-CPU ejecutarías:

# make -j4 buildworld

make(1) tendrías mas de 4 procesos ejecutandose en cada momento. La evidencia empírica comentada en las listasde 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 miracomo se aceleran las cosas.

Estas advertido de que esto es aún experimental y que hacer commits al código fuente del árbol puedeocasionalmente romper esta posibilidad. Si world falla al compilar usando este parámetro intentalo de nuevo sin él,antes de informar de los problemas.

18.4.6.3. Momento (Timings)

Muchos factores influyen en el tiempo de construcción, pero generalmente un Pentium 3 500 Mhz con 128 MB deRAM tardara 2 horas en construir el árbol FreeBSD-STABLE , sin trucos o cortes durante el proceso. Un árbolFreeBSD-CURRENT tardará algo mas.

18.4.7. Compilar e instalar un nuevo KernelPara sacar el máximo provecho de nuestro sistema debemos recompilar el kernel. Esto es prácticamente unanecesidad, ya que ciertas estructuras de memoria podrían haber cambiado y ciertos programas como ps(1) y top(1)fallarán hasta que el kernel y la versiones del código fuente sean la misma.

El modo más simple y seguro de hacer esto es construir e instalar un kernel basado en GENERIC. Mientras GENERICpuede no teer todos los dispositivos necesarios para tu sistema, debe tener todo lo necesario para arrancar tu sistemade nuevo en modo monousuario. Esta es una buena prueba de que el nuevo sistema funciona correctamente. Despuésde hacer el arranque desde GENERIC y verificar que el sistema funciona puedes luego construir un nuevo kernelbasado en el archivo de configuración de tu kernel normal.

Si estas actualizando de FreeBSD 4.0 a superior entonces el procedimiento standard de construcción de kernel(descrito Capítulo 8) es desaconsejable.En vez de eso deberías, ejecutar estas ordenes

# 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 delkernel. 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

18.4.8. Arranca en Modo Usuario ÚnicoDeberías arrancar en modo usuario único para probar como funciona el nuevo kernel.Haz esto siguiendo lasinstrucciones en Sección 18.4.4.

18.4.9. Instalar los Nuevos Binarios del SistemaSi estuvieses construyendo una version de FreeBSD suficientemente reciente como para haber usado make

buildworld entonces deberías usar ahora el installworldpara instalar el nuevo sistema de binarios.

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 enla línea de orden de make installworld . Esto no es necesariamente cierto para otras opciones; por ejemplo, ,-j nunca debe ser usada con installworld.

Por ejemplo, si ejecutaste:

# make -DNOPROFILE=true buildworld

debes instalar los resultados con:

# make -DNOPROFILE=true installworld

de otro modo, instalaría bibliotecas seleccionadas que no habían sido construidas durante la fase make

buildworld .

18.4.10. Actualización de archivos no actualizados por make world

Rehacer el world no actualizará ciertos directorios (en particular, /etc, /var y /usr) con los archivos deconfiguración nuevos o cambiados.

El medio más simple para actualizar estos archivos es usar mergemaster(8), aunque es posible hacerlo manualmentesi lo prefieres. Nosotros te recomendamos fervientemente usar mergemaster(8), aunque, si lo haces entonces puedessaltar a la siguiente sección , puesto que mergemaster(8) es muy simple de usar. Deberías leer la página del manualprimero, y hacer una copia de respaldo de /etc por si algo va mal.

Si deseas hacer la actualización manualmente no basta con que copies los archivos de /usr/src/etc a /etc y quefuncione. Algunos de estos archivos deben ser “instalados” primero. Esto es porque el directorio/usr/src/etc noes una copia de lo que tu directorio /etc debería parecer. Además, hay archivos que deberían estar en /etc que noestán en /usr/src/etc.

El medio más sencillo de hacer esto a mano es instalar los archivos en un nuevo directorio y luego trabajar con ellosbuscando las diferencias.

Haz una copia de tu existente /etcAunque en teoría nada va a tocar este directorio automáticamente, esmejor estar seguros. Así que copia tu existente /etc en lugar seguro. Algo como:

# cp -Rp /etc /etc.old

-R hace una copia recursiva , -p almacena los tiempos, propiedad de los archivos y cosas así.

Necesitas construir el grupo de directorios que hagan el papel de / para instalar el nuevo /etc y otros archivos dentro./var/tmp/root es una 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

# make DESTDIR=/var/tmp/root distrib-dirs distribution

Esto construirá la necesaria estructura de directorio e intalará los archivos.Un montón de directorios que habrán sidocreados 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 lasadvertencias sobre directorios que no están vacios.)

/var/tmp/root ahora contiene todos los archivos que deberían estar colocados en lugares adecuados bajo /. Ahoratienes 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 elmomento 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 leasesto.Asegurate de usar ls -a para capturarlos.

El sistema más fácil para hacerlo es usar diff(1) para comparar los dos ficheros.

# diff /etc/shells /var/tmp/root/etc/shells

Esto te mostrará las diferencias entre tu archivo /etc/shellsy el nuevo archivo /etc/shells . Úsalos paradecidir 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 formapuedes comparar fácilmente las diferencias entre versiones: Reconstruir frecuentemente el world significaque 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 hayasfusionado 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 dedestino un nombre basado en la fecha actual. Si estuvieses haciendo esto el 14 de Febrero de 1998 haríaslo siguiente.

# mkdir /var/tmp/root-19980214# cd /usr/src/etc# make DESTDIR=/var/tmp/root-19980214 \distrib-dirs distribution

2. Añade los cambios del directorio según lo explicado arriba.

No quites el directorio /var/tmp/root-19980214 cuando hayas acabado.

3. Cuando hayas descargado la ultima versión de las fuentes y las hayas rehecho, sigue el paso 1.Esto te daráun nuevo directorio, que podría llamarse /var/tmp/root-19980221 (si esperas una semana entre lasactualizaciones).

4. Tu puedes ahora ver las diferencias que se han hecho en esa semana intermedia usando diff(1) puedesusar diff para buscar recursivamente las diferencias entre los dos directorios.

# cd /var/tmp# diff -r root-19980214 root-19980221

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 esoscambios hasta tu directorio /etc .

207

Capítulo 18. Lo último de lo último

5. Ahora puedes quitar el más viejo de los dos directorios /var/tmp/root-*.

# rm -rf /var/tmp/root-19980214

6. Repite el proceso cada vez que necesites añadir un cambio a /etc.

Puedes usar date(1) para automatizar la generación de los nombres de directorio.

# mkdir /var/tmp/root-‘date "+%Y%m%d"‘

18.4.11. Actualiza /dev

DEVFS: Si estás usando DEVFS esto no sería necesario.

En la mayoría de los casos, la herramienta mergemaster(8) se dar6aacute; cuenta cuando es necesario actualizardispositivos 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.

1. Copia /var/tmp/root/dev/MAKEDEV en /dev.

# cp /var/tmp/root/dev/MAKEDEV /dev

Si usaste mergemaster(8) para actualizar /etc, entonces tu script MAKEDEV 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 formamá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

3. Rehacer todos los dispositivos.

# sh MAKEDEV all

4. Copia otra instantánea del directorio , esta vez en /var/tmp/dev2.out. Ahora mira entre esos dos archivospor 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

18.4.12. Actualiza /stand

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 enenlaces 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. ReinicioYa esta hecho. Despues de que hayas verificado que todo parece estar en el lugar adecuado puedes reiniciar elsistema. Un simplefastboot(8) lo hará.

# fastboot

18.4.14. FinalizadoDeberí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 accidentalmenteborraste /etc/magic como parte de la actualización o al añadir algo a /etc, la orden (command) file(1) dejara defuncionar. 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, ymostró 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 hayasañ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 loscambios se acumulen hasta ese día. O quizá quieras hacerlo sólo a aquellas que hayan cambiado, y tengas confianzaen 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) seproduce una sobrecarga del ordenador, que frecuentemente desencadena problemas de memoria.Esto se manifiestacuando 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 sabercual es el que falla.

3. ¿Puedo quitar /usr/obj cuando he terminado?

La respuesta corta es si.

/usr/obj contiene todos los archivos binarios (object files) que se produjeron durante la fase decompilación.Normalmente, uno de los primeros pasos en el proceso “make world” es quitar este directorio y haceruno nuevo. En este caso, mantener /usr/obj después de haber terminado no tiene mucho sentido, y liberarás unbuen montón de espacio de disco (alrededor de 340MB).

Aunque, si sabes lo que haces puedes hacer que “make world” se salte este paso. Esto hará que la consiguienteconstrucción vaya más rápido, ya que la mayor parte de las fuentes no necesitarán recompilarse. La parte molesta deesto es que pueden provocarse problemas de dependencias, haciendo que la construcción falle de forma rara. Estogenera alboroto en las listas de correo, cuando una persona se queja de que su construcción ha fallado, sin darsecuenta de que es porque ha intentado acortar demasiado.

Si quieres vivir peligrosamente entonces haz make world, pasando la definición NOCLEAN , como esto:

# make -DNOCLEAN world

4. ¿Puede continuarse una construcción interrumpida?

Esto depende de como de lejos llegaste hasta encontar el problema.

En general (y esto no es una regla fija) El proceso “make world” construye nuevas copias de herramientas esenciales(como gcc(1), y make(1)) y el sistema de bibliotecas. Estas herramientas y bibliotecas estan entonces instaladas.Lasnuevas herramientas y bibliotecas son usadas para reconstruirse a si mismas, y son instaladas de nuevo.El sistemaentero (incluyendo ahora programas normales como ls(1) or grep(1))es entonces reconstruido con el nuevo sistemade archivos.

Si estas al final del proceso, y lo sabes (porque has mirado los resultados que estuviste guardando) entonces puedes(bastante seguramente) hacer

210

Capítulo 18. Lo último de lo último

... fix the problem ...# cd /usr/src# make -DNOCLEAN all

Esto no deshará el trabajo de los previos “make world”.

Si ves el mensaje

--------------------------------------------------------------Building everything..--------------------------------------------------------------

en la salida “make world” entonces es probablemente bastante seguro hacer eso.

Si tu no ves ese mensaje, o no estas seguro, entonces es siempre mejor estar seguro que lamentarse, y comenzar otravez desde el principio.

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 ejecutabuildworld en una máquina central, y entonces NFS monta /usr/src y /usr/obj en la máquina remota yinstallworld alli.

6. ¿Cómo acelero making the world?

• Ejecuta en modo monousuario.

• Pon /usr/src y /usr/obj en sistemas de archivos diferentes en discos separados. Si es posible, pon esos discosen controladoras de discos separadas.

• Aún mejor, pon esos sistemas de archivos a través de multiples discos usando ccd(4)

• Desactiva el perfil (coloca “NOPROFILE=true” en /etc/make.conf). Casi seguro que no lo necesitas.

• También en /etc/make.conf, coloca CFLAGS a algo como “-O -pipe”. La optimización “-O2” es mucho máslenta y la diferencia de optimización entre “-O” y “-O2” es normalmente poco importante. “-pipe” permite que elcompilador utilice tuberias (pipes) antes que archivos temporales lo que ahorra accesos al disco (a expensas dememoria).

• Pon la opción -j � n � para hacer que se ejecuten multiples procesos en paralelo.Esto ayuda se tenga unprocesador o varios.

• El sistema de archivos que contiene /usr/src puede ser montado ( o vuelto a montar) con la opción noatime .Esto evita al sistema de archivos el grabar la hora de acceso al archivo. Probablemente no te haga falta estainformación para nada.

# mount -u -o noatime /usr/src

AvisoEste ejemplo supone que /usr/src esta en su propio sistema de archivo.Si no está (Por ejemplo, si esparte 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”. Estohace 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 unagran aceleración del funcionamiento.

AvisoTen en cuenta que esta opción hace el sistema de archivos más fragil.Con esta opción hay unincremento de posibilidades, si la corriente falla, de que el sistemas de archivos sea irrecuperable cuando lam6aacute;quina se reinicie.

Si /usr/obj es lo único en este sistema de archivos entonces no hay problema.Si tienes otros datos valiososentonces asegúrate de tener copias recientes antes de habilitar esta opción.

# mount -u -o async /usr/obj

AvisoComo arriba, si/usr/objno está en su propio sistema de archivos, reemplazalo en el ejemplo con elnombre del apropiado punto de montaje.

7. ¿Queé hago si algo sale mal?

Asegurate de que tu entorno no tiene extrañas cruft de construcciones anteriores.Esto es suficiente.

# chflags -R noschg /usr/obj/usr#rm -rf /usr/obj/usr#cd /usr/src# make cleandir#make cleandir

Sí , make cleandir realmente debería ejecutarse dos veces.

Entonces comienza el proceso de nuevo, empezando con make buildworld.

Si aún tienes problemas, envía el error y la salida de uname -aa FreeBSD general questions mailing list<[email protected]>. ¡Prepárate para contestar preguntas sobre tu setup

Notas1. 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 versionesde FreeBSD, por favor mira http://www.FreeBSD.org/security (../../../../security/index.html)

212

Capítulo 19. Emulacion LinuxEmulacion Linux

213

III. Apéndices

Capítulo 20. Obteniendo FreeBSDObteniendo FreeBSD

20.1. Servidores FTP

215

Capítulo 21. BibliografíaMientras que las páginas del manual proveen la referencia definitiva para partes individuales del sistema operativoFreeBSD, son notorias por no ilustrar como poner todas las piezas juntas para hacer que todo el sistema operativofuncione fácilmente. Debido a esto, no hay substituto para un buen libro de administración de sistemas UNIX y unbuen manual del usuario.

21.1. Libros y revistas específicas sobre FreeBSDLibros y revistas internacionales:

• Usando FreeBSD (http://freebsd.csie.nctu.edu.tw/~jdli/book.html) (en Chino).

• FreeBSD for PC 98’ers (en japonés), publicado por SHUWA System Co, LTD. ISBN 4-87966-468-5 C3055P2900E.

• FreeBSD (en japonés), publicado por CUTT. ISBN 4-906391-22-2 C3055 P2400E.

• Introducción completa a FreeBSD (http://www.shoeisha.co.jp/pc/index/shinkan/97_05_06.htm) (en japonés),publicado por Shoeisha Co., Ltd (http://www.shoeisha.co.jp/). ISBN 4-88135-473-6 P3600E.

• Kit personal del principiante UNIX FreeBSD (http://www.ascii.co.jp/pb/book1/shinkan/detail/1322785.html) (enjaponés), publicado por ASCII (http://www.ascii.co.jp/). ISBN 4-7561-1733-3 P3000E.

• Manual FreeBSD (traducción del japonés), publicado por ASCII (http://www.ascii.co.jp/). ISBN 4-7561-1580-2P3800E.

• FreeBSD mit Methode (en alemán), publicado por Computer und Literatur Verlag/Vertrieb Hanser, 1998. ISBN3-932311-31-0.

• Manual de instalación y utilización de FreeBSD (http://www.pc.mycom.co.uk/FreeBSD/install-manual.html) (enjaponés), publicado por Mainichi Communications Inc. (http://www.pc.mycom.co.jp/).

Libros y revistas en inglés:

• The Complete FreeBSD (http://www.cdrom.com/titles/freebsd/bsdcomp_bkx.phtml), publicado por Walnut CreekCDROM (http://www.cdrom.com/).

21.2. Guías de 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.

21.3. Guías de administrador

• 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’sManual (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.

21.4. Guías de programadores

• Asente, Paul. X Window System Toolkit. Digital Press. ISBN 1-55558-051-3

• Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer’s Reference Manual. O’Reilly &Associates, Inc., 1994. ISBN 1-56592-078-3

• Computer Systems Research Group, UC Berkeley. 4.4BSD Programmer’s Supplementary Documents. O’Reilly &Associates, Inc., 1994. ISBN 1-56592-079-1

• Harbison, Samuel P. and Steele, Guy L. Jr. C: A Reference Manual. 4rd ed. Prentice Hall, 1995. ISBN0-13-326224-3

• Kernighan, Brian and Dennis M. Ritchie. The C Programming Language.. PTR Prentice Hall, 1988. ISBN0-13-110362-9

• Lehey, Greg. Porting UNIX Software. O’Reilly & Associates, Inc., 1995. ISBN 1-56592-126-7

• Plauger, P. J. The Standard C Library. Prentice Hall, 1992. ISBN 0-13-131509-9

217

Capítulo 21. Bibliografía

• Stevens, W. Richard. Advanced Programming in the UNIX Environment. Reading, Mass. : Addison-Wesley, 1992ISBN 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.

21.5. El sistema operativo por dentro

• Andleigh, Prabhat K. UNIX System Architecture. Prentice-Hall, Inc., 1990. ISBN 0-13-949843-5

• Jolitz, William. “Porting UNIX to the 386”. Dr. Dobb’s Journal. January 1991-July 1992.

• Leffler, Samuel J., Marshall Kirk McKusick, Michael J Karels and John Quarterman The Design andImplementation of the 4.3BSD UNIX Operating System. Reading, Mass. : Addison-Wesley, 1989. ISBN0-201-06196-1

• Leffler, Samuel J., Marshall Kirk McKusick, The Design and Implementation of the 4.3BSD UNIX OperatingSystem: 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 Implementationof 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. ISBN0-201-63346-9

• Schimmel, Curt. Unix Systems for Modern Architectures. Reading, Mass. : Addison-Wesley, 1994. ISBN0-201-63338-8

• Stevens, W. Richard. TCP/IP Illustrated, Volume 3: TCP for Transactions, HTTP, NNTP and the UNIX DomainProtocols. Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63495-3

• Vahalia, Uresh. UNIX Internals -- The New Frontiers. Prentice Hall, 1996. ISBN 0-13-101908-2

• Wright, Gary R. and W. Richard Stevens. TCP/IP Illustrated, Volume 2: The Implementation. Reading, Mass. :Addison-Wesley, 1995. ISBN 0-201-63354-X

21.6. Referencia de seguridad

• Cheswick, William R. and Steven M. Bellovin. Firewalls and Internet Security: Repelling the Wily Hacker.Reading, Mass. : Addison-Wesley, 1995. ISBN 0-201-63357-4

• Garfinkel, Simson and Gene Spafford. Practical UNIX Security. 2nd Ed. O’Reilly & Associates, Inc., 1996. ISBN1-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

21.7. Referencia de hardware

• Anderson, Don and Tom Shanley. Pentium Processor System Architecture. 2nd Ed. Reading, Mass. :Addison-Wesley, 1995. ISBN 0-201-40992-5

• Ferraro, Richard F. 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. ISBN0-201-62277-7

21.8. Historia de UNIX

• 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 knownas the Jargon File (http://www.ccil.org/jargon/jargon.html)

• Salus, Peter H. A quarter century of UNIX. Addison-Wesley Publishing Company, Inc., 1994. ISBN0-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 olocal (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 la4.4BSD y 4.4BSD-Lite2 (pero no la 2.11BSD, desafortunadamente). El último disco contiene el código fuentefinal y los archivos SCCS.

219

Capítulo 21. Bibliografía

21.9. Diarios y revistas

• The C/C++ Users Journal. R&D Publications Inc. ISSN 1075-2838

• Sys Admin — The Journal for UNIX System Administrators Miller Freeman, Inc., ISSN 1061-2688

220

Apéndice A. Recursos en InternetLa velocidad del desarrollo de FreeBSD hace imposible el uso de medios impresos como forma de seguir los últimosdesarrollos. 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 deusuarios suele ejercer las funciones de lo que sería un “departamento de soporte técnico”, siendo el correoelectró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 dealgún otro medio que no figure aquí envíelo por favor a FreeBSD documentation project mailing list<[email protected]>para que pueda ser incluída.

A.1. Listas de CorreoAunque la práctica totalidad de los desarrolladores de FreeBSD léen USENET no podemos garantizar de modorotundo que recibiremos sus dudas rápidamente (o siquiera que las recibamos) si usted las envía a uno de los gruposde comp.unix.bsd.freebsd.*. Enviando sus dudas a la lista de correo apropiada cumplirá dos objetivos, llegar alos desarrolladores y a una audiencia específica, lo que le asegurará la mejor (o al menos la más rápida) respuesta.

Las normas de las diversas listas están al principio de éste documento. Por favor, léa las normas antes de suscribirseo enviar correo a ninguna lista. Muchos suscriptores de nuestras listas reciben varios cientos de mensajesrelacionados con FreeBSD cada día y estableciendo las normas de uso de las listas intentamos mantener alto elinterés de los mensajes que en ella circulan. Bajarlo haría fallar a las listas de correo como un medio decomunicación efectivo para el proyecto.

Todas las listas de correo son archivadas y se pueden hacer búsquedas en ellas desde el servidor WWW de FreeBSDusando éste enlace (../../../../search/index.html). El archivo ofrece la posibilidad de usar palabras clave, lo que loconvierte en una excelente manera de buscar respuestas a preguntas frecuentes y debería ser consultado antes deenviar ninguna duda.

A.1.1. Índice de ListasListas Generales:Las siguientes son listas generales de suscripción libre (y muy recomendable):

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 comunidadFreeBSD.

freebsd-config Desarrollo de herramientas de instalación y configuraciónde 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 queusan FreeBSD

freebsd-jobs Oportunidades de trabajo y consultoría bajo FreeBSD

freebsd-newbies Actividades y discusiones de nuevos usuarios de FreeBSD

freebsd-policy Decisiones estratégicas del Core Team de FreeBSD. Bajovolumen y sólo lectura

freebsd-questions Preguntas de usuarios y soporte técnico

freebsd-stable Debates acerca del uso de FreeBSD-stable

freebsd-test Un sitio al que mandar sus mensajes de prueba en lugar dea una de las demás listas

Listas Técnicas: Las siguientes listas son para debates técnicos. Debería leer cuidadosamente las normas de cadalista 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 bajoFreeBSD

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 delcortafuegos IP

freebsd-isdn Desarrolladores de RDSI

freebsd-java Desarrolladores de Java y personas portando los JDK aFreeBSD

freebsd-libh La segunda generación del sistema de instalación ypaquetes

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 saliruna 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 sonde interés para el público en general. Es una buena idea tener una presencia estable en las listas técnicas antes desuscribirse a alguna de las limitadas, de modo que se pueda entender la etiqueta de la comunicación que en ellas seusa.

Lista Propósito

freebsd-core FreeBSD Core Team

freebsd-hubs Mantenimiento de mirrors (mantenimiento deinfraestructuras)

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 ala 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 registropara conocer los cambios hechos en las diferentes áreas del árbol de código fuente. Son listas de sólo lectura y no sedebe enviar correo a ellas.

Lista Área de código Descripción de área de código(código fuente)

cvs-all /usr/src Todos los cambios al árbol de código(superconjunto)

A.1.2. Cómo suscribirseTodas las listas de correo están en FreeBSD.org, de manera que para enviar correo a la lista “nombredelista”simplemente hay que escribir a �

[email protected] � . Desde ahí será redistribuído a los miembrosde la lista de correo a lo largo y ancho del mundo.

Para suscribirse a una lista envíe un correo a <[email protected]> incluyendo

subscribe � listname � [ � optional address�]

en el cuerpo del mensaje. Por ejemplo, para suscribirse a freebsd-announce usted haría esto:

% mail [email protected] freebsd-announce^D

Si quisiera suscribirse bajo otro nombre o enviar una petición de suscripción para una lista de correo local (unsistema 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 [email protected] freebsd-announce [email protected]^D

Por último, también es posible desuscribirse de una lista, obtener una lista de los suscriptores de una lista u obteneruna lista de las listas de correo disponibles enviando otro tipo de mensajes de control a majordomo. Para obtener unalista completa de los comandos disponibles haga esto:

224

Apéndice A. Recursos en Internet

% mail [email protected]^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.

A.1.3. Normas de las listasTodas las listas de correo de FreeBSD tienen ciertas normas elementales que han de ser respetadas por cualquieraque las use. Quien no se atenga a ellas recibirá hasta dos (2) advertencias escritas del Postmaster de FreeBSD<[email protected]>, después de las cuales, a la tercera falta, el suscriptor será borrado de todas las listasde correo de FreeBSD y filtrado para evitar futuros envíos. Lamentamos que esas normas y medidas sean necesarias,pero la Internet de hoy es, según parece, un entorno bastante conflictivo, y mucha gente no se da cuenta de cuánfrágiles son algunos de sus mecanismos.

Normas a respetar:

• 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 sobretemas de debate técnico sus envíos deberían versar sobre temas técnicos. Enviar mensajes irrelevantes o insultossólo sirve para deteriorar el valor de la lista de correo para sus miembros y no será tolerado. Para discusioneslibres sin un tema en particular está la lista de correo freebsd-chat <[email protected]>, que eslibremente 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 necesidadmanifiesta de escribir a ambas listas. Hay una gran cantidad de personas suscritas a más de una lista y excepto paralas mezclas más esotéricas (digamos "-stable & -scsi") no hay razón para enviar un mensaje a más de una lista almismo tiempo. Si le envían un mensaje en el que aparecen múltiples listas de correo en la línea "Cc" de lacabecera, dicha línea debe ser recortada antes de que envíe una respuesta. Usted es el responsable de sus propiosenví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 incluyetanto a usuarios como a desarrolladores. Violaciones graves de la netiqueta, como reenviar o extractar mensajesprivados sin permiso ni visos de tenerlo, está mal visto, aunque no prohibido específicamente. Sin embargo, haypocos casos en los que algo así encaje en la temática de una lista, por lo cual lo más probable es recibir unaadvertencia (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 lainmediata expulsión de la lista si queda demostrado que el autor está practicando el “spam” o envío de correo nosolicitado.

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 dentrode FreeBSD. Ésto incluye anuncios sobre SNAPSHOTS y otras versiones. Puede incluír también peticiones devoluntarios, 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ónpersonalizados 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 controladoresdirectamente 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 cualquiercambio 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 deFreeBSD. Las discusiones de seguridad que no estén relacionadas con una parte específica del código debentener lugar en freebsd-security. Por otra parte se ruega a todos los desarrolladores que envíen sus parches a éstalista para su revisión, especialmente si atañen a una parte del sistema donde un error pudiera afectar seriamentea 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 dediseño, detalles de implementación, parches, informes de error, informes de estado, peticiones decaracterí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 serenviados 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 enlas demás listas. Eso incluye discusiones sobre si Julio Iglesias parece una gárgola, sobre si escribir o no enmayúsculas, quién está bebiendo demasiado café, dónde se elabora la mejor cerveza, quién está fabricandocerveza en su sótano y así sucesivamente. Pueden hacerse anuncios sobre actos importantes (como próximasfiestas, congresos, bodas, nacimientos, nuevos trabajos, etc.), pero las respuestas deben ser dirigidas a éstamisma 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ísticasa ser incluídas en -current que afecten a todos los usuarios e instrucciones paso por paso que deben ser seguidaspara mantener una instalación -current. Cualquier usuario de “current” debería suscribirse a ésta lista. Ésta esuna 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-currentson empaquetados y enviados periódicamente como un solo mensaje. Ésta lista es de Sólo-Lectura y no deberíarecibir correo.

FREEBSD-DOC

Proyecto de Documentación

Ésta lista de correo está destinada a discusiones relacionadas con cuestiones y proyectos relacionados con lacreación de documentación de FreeBSD. Los miembros de ésta lista son llamados “El Proyecto deDocumentació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 conocidocomo IEEE o iLink) en FreeBSD. Los temas incluyen de modo específico los “standards”, dispositivos de bus ysus protocolos, adaptación de placas base, tarjetas y chips y la arquitectura e implementación de código parasoporte 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 uncontenido estríctamente técnico.

FREEBSD-GNOME

GNOME

Debates acerca del Entorno de Escritorio GNOME para sistemas de ficheros FreeBSD. Ésta es una lista decorreo 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 unalista 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 plataformaIA-64 de Intel, para intercambiar problemas y soluciones alternativas. Cualquier persona interesada en seguirlas 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 ymantenimiento 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 parapersonas que están trabajando en FreeBSD, solucionando problemas o para discutir soluciones alternativas. Laspersonas interesadas en seguir las discusiones técnicas también son bienvenidas. Ésta es una lista de correoté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 afreebsd-hackers es empaquetado y enviado en un sólo mensaje. Ésta lista es de Sólo Lectura y no se deberíaenviar correo a ella.

FREEBSD-HARDWARE

Discusiones generales sobre hardware y FreeBSD

Discusiones generales sobre tipos de hardware que funciona en FreeBSD, diferentes problemas y sugerenciassobre 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) queusan 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 deayuda, 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-questionspara 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 paraplataformas 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 CoreTeam 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 correoté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 afreebsd-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 listade 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 dediscusió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íren -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 seesperan 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 enFreeBSD.

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 entreellos o con personas elegidas del Core Team. Ésta lista de correo debería estar limitada a resúmenes dereuniones 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.

A.2. Grupos de Noticias de UsenetAdemás de los dos grupos de noticias específicos de FreeBSD hay muchos otros en los cuales se habla sobreFreeBSD o son de algún modo interesantes para usuarios de FreeBSD.Hay un archivo donde hacer búsquedas(http://minnie.tuhs.org/BSD-info/bsdnews_search.html) donde pueden encontrarse algunos de esos grupos denoticias por cortesía de Warren Toomey <[email protected]>.

A.2.1. Grupos de Noticias Específicos sobre BSD

• comp.unix.bsd.freebsd.announce (news:comp.unix.bsd.freebsd.announce)

• comp.unix.bsd.freebsd.misc (news:comp.unix.bsd.freebsd.misc)

A.2.2. Otros Grupos de Noticias Interesantes sobre Unix

• comp.unix (news:comp.unix)

• comp.unix.questions (news:comp.unix.questions)

• comp.unix.admin (news:comp.unix.admin)

• comp.unix.programmer (news:comp.unix.programmer)

• comp.unix.shell (news:comp.unix.shell)

• comp.unix.user-friendly (news:comp.unix.user-friendly)

• comp.security.unix (news:comp.security.unix)

• comp.sources.unix (news:comp.sources.unix)

• comp.unix.advocacy (news:comp.unix.advocacy)

• comp.unix.misc (news:comp.unix.misc)

• comp.bugs.4bsd (news:comp.bugs.4bsd)

• comp.bugs.4bsd.ucb-fixes (news:comp.bugs.4bsd.ucb-fixes)

232

Apéndice A. Recursos en Internet

• comp.unix.bsd (news:comp.unix.bsd)

A.2.3. Sistema X Window

• comp.windows.x.i386unix (news:comp.windows.x.i386unix)

• comp.windows.x (news:comp.windows.x)

• comp.windows.x.apps (news:comp.windows.x.apps)

• comp.windows.x.announce (news:comp.windows.x.announce)

• comp.windows.x.intrinsics (news:comp.windows.x.intrinsics)

• comp.windows.x.motif (news:comp.windows.x.motif)

• comp.windows.x.pex (news:comp.windows.x.pex)

• comp.emulators.ms-windows.wine (news:comp.emulators.ms-windows.wine)

A.3. Servidores WWW

• http://www.FreeBSD.org/ (../../../../index.html) — Servidor Central.

• http://www.au.FreeBSD.org/ — Australia/1.

• http://www2.au.FreeBSD.org/ — Australia/2.

• http://www3.au.FreeBSD.org/ — Australia/3.

• http://freebsd.itworks.com.au/ — Australia/4.

• http://www.br.FreeBSD.org/www.freebsd.org/ — Brasil/1.

• http://www2.br.FreeBSD.org/www.freebsd.org/ — Brasil/2.

• http://www3.br.FreeBSD.org/ — Brasil/3.

• http://www.bg.FreeBSD.org/ — Bulgaria.

• http://www.ca.FreeBSD.org/ — Canadá/1.

• http://www2.ca.FreeBSD.org/ — Canadá/2.

• http://www3.ca.FreeBSD.org/ — Canadá/3.

• http://www.cn.FreeBSD.org/ — China.

• http://www.cz.FreeBSD.org/ — República Checa.

• http://www.dk.FreeBSD.org/ — Dinamarca.

• http://www.ee.FreeBSD.org/ — Estonia.

• http://www.fi.FreeBSD.org/ — Finlandia.

• http://www.fr.FreeBSD.org/ — Francia.

233

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.

A.4. Direcciones de Correo ElectrónicoLos siguientes grupos de usuarios de FreeBSD provéen a sus miembros de direcciones de correo. Dichosadministradores se reservan el derecho de retirar el uso de la dirección si se abusa de ella de cualquier manera.

Dominio Recursos que sesuministran

Grupo de Usuarios Administrador

ukug.uk.FreeBSD.org Sólo redirección <[email protected]>

Lee Johnston<[email protected]>

A.5. Cuentas ShellLos siguientes grupos de usuarios facilitan cuentas shell a gente que apoya activamente el proyecto FreeBSD. Susrespectivos administradores se reservan el derecho de cancelar la cuenta y si se abusa de ella de algún modo.

Servidor Tipo de acceso Servicios que seofrecen

Administrador

storm.uk.FreeBSD.org SSH only CVS de sólo lectura, espacioweb personal, correoelectrónico

Brian Somers<[email protected]>

dogma.freebsd-uk.eu.org Telnet/FTP/SSH Correo electrónico, espacioweb, FTP Anónimo

Lee Johnston<[email protected]>

235

Apéndice B. PGP KeysIn case you need to verify a signature or send encrypted email to one of the officers or developers a number of keysare provided here for your convenience. A complete keyring of FreeBSD.org users is available for download fromhttp://www.FreeBSD.org/doc/pgpkeyring.txt (../../../../doc/pgpkeyring.txt).

B.1. Officers

B.1.1. Security Officer Team <[email protected]>

pub 1024R/73D288A5 1996-04-22 FreeBSD Security Officer <[email protected]>Key fingerprint = 41 08 4E BB DB 41 60 71 F9 E5 0E 98 73 AF 3F 11

B.1.2. Core Team Secretary <[email protected]>

pub 1024R/FF8AE305 2002-01-08 [email protected] fingerprint = CE EF 8A 48 70 00 B5 A9 55 69 DE 87 E3 9A E1 CD

B.2. Core Team Members

B.2.1. Warner Losh <[email protected]>

pub 1024R/F6A8F561 1996-01-10 M. Warner Losh <[email protected]>Key fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9

B.2.2. Jun Kuriyama <[email protected]>

pub 1024D/FE3B59CD 1998-11-23 Jun Kuriyama <[email protected]>Key fingerprint = 5219 55CE AC84 C296 3A3B B076 EE3C 4DBB FE3B 59CD

uid Jun Kuriyama <[email protected]>uid Jun Kuriyama <[email protected]>sub 2048g/1CF20D27 1998-11-23

B.2.3. Murray Stokely <[email protected]>

pub 1024D/0E451F7D 2001-02-12 Murray Stokely <[email protected]>Key fingerprint = E2CA 411D DD44 53FD BB4B 3CB5 B4D7 10A2 0E45 1F7D

sub 1024g/965A770C 2001-02-12

236

Apéndice B. PGP Keys

B.2.4. Peter Wemm <[email protected]>

pub 1024R/D89CE319 1995-04-02 Peter Wemm <[email protected]>Key fingerprint = 47 05 04 CA 4C EE F8 93 F6 DB 02 92 6D F5 58 8A

uid Peter Wemm <[email protected]>uid Peter Wemm <[email protected]>uid Peter Wemm <[email protected]>

B.3. Developers

B.3.1. Will Andrews <[email protected]>

pub 1024D/F81672C5 2000-05-22 Will Andrews <[email protected]>Key fingerprint = 661F BBF7 9F5D 3D02 C862 5F6C 178E E274 F816 72C5

uid Will Andrews (Key for official matters) <[email protected]>uid Will Andrews <[email protected]>uid Will Andrews <[email protected]>uid Will Andrews <[email protected]>uid Will Andrews <[email protected]>uid Will Andrews <[email protected]>sub 1024g/55472804 2000-05-22

B.3.2. Satoshi Asami <[email protected]>

pub 1024R/1E08D889 1997-07-23 Satoshi Asami <[email protected]>Key fingerprint = EB 3C 68 9E FB 6C EB 3F DB 2E 0F 10 8F CE 79 CA

uid Satoshi Asami <[email protected]>

B.3.3. Anton Berezin <[email protected]>

pub 1024D/7A7BA3C0 2000-05-25 Anton Berezin <[email protected]>Key fingerprint = CDD8 560C 174B D8E5 0323 83CE 22CA 584C 7A7B A3C0

uid Anton Berezin <[email protected]>uid Anton Berezin <[email protected]>sub 1024g/ADC71E87 2000-05-25

B.3.4. Martin Blapp <[email protected]>

pub 1024D/D300551E 2001-12-20 Martin Blapp <[email protected]>Key fingerprint = B434 53FC C87C FE7B 0A18 B84C 8686 EF22 D300 551E

sub 1024g/998281C8 2001-12-20

237

Apéndice B. PGP Keys

B.3.5. Oliver Braun <[email protected]>

pub 1024D/EF25B1BA 2001-05-06 Oliver Braun <[email protected]>Key fingerprint = 6A3B 042A 732E 17E4 B6E7 3EAF C0B1 6B7D EF25 B1BA

uid Oliver Braun <[email protected]>uid Oliver Braun <[email protected]>uid Oliver Braun <[email protected]>sub 1024g/09D28582 2001-05-06

B.3.6. Jonathan M. Bresler <[email protected]>

pub 1024R/97E638DD 1996-06-05 Jonathan M. Bresler <[email protected]>Key fingerprint = 31 57 41 56 06 C1 40 13 C5 1C E3 E5 DC 62 0E FB

uid Jonathan M. Bresler <[email protected]>uid Jonathan M. Bresleruid Jonathan M. Bresler <[email protected]>uid Jonathan M. Bresler <[email protected]>

B.3.7. Wilko Bulte <[email protected]>

pub 1024R/EADEE409 1997-06-16 Wilko Bulte <[email protected]>Key fingerprint = CF F5 30 59 20 AE 17 69 98 F6 58 F0 4F F0 EB 3E

uid Wilko Bulte <[email protected]>uid "Wilko Bulte <[email protected]>"

B.3.8. Jonathan Chen <[email protected]>

pub 1024D/2539468B 1999-10-11 Jonathan Chen <[email protected]>Key fingerprint = EE31 CDA1 A105 C8C9 5365 3DB5 C2FC 86AA 2539 468B

uid Jonathan Chen <[email protected]>uid Jonathan Chen <[email protected]>uid Jonathan Chen <[email protected]>uid Jonathan Chen <[email protected]>sub 3072g/B81EF1DB 1999-10-11

B.3.9. Luoqi Chen <[email protected]>

pub 1024D/2926F3BE 2002-02-22 Luoqi Chen <[email protected]>Key fingerprint = B470 A815 5917 D9F4 37F3 CE2A 4D75 3BD1 2926 F3BE

uid Luoqi Chen <[email protected]>uid Luoqi Chen <[email protected]>sub 1024g/5446EB72 2002-02-22

238

Apéndice B. PGP Keys

B.3.10. Andrey A. Chernov <[email protected]>

pub 1024R/D99D08EB 1992-08-20 Andrey A. Chernov <[email protected]>Key fingerprint = 33 03 9F 48 33 7B 4A 15 63 48 88 0A C4 97 FD 49

uid Andrey A. Chernov <[email protected]>

B.3.11. Sean Chittenden <[email protected]>

pub 1024D/5F5B3ECB 2002-08-15 Sean Chittenden <[email protected]>Key fingerprint = 6CEB 1B06 BFD3 70F6 95BE 7E4D 8E85 2E0A 5F5B 3ECB

uid Sean Chittenden <[email protected]>uid Sean Chittenden <[email protected]>uid Sean Chittenden <[email protected]>uid Sean Chittenden <[email protected]>uid Sean Chittenden <[email protected]>sub 2048g/0A656D7B 2002-08-15 [expires: 2003-02-11]

B.3.12. Crist J. Clark <[email protected]>

pub 1024D/FE886AD3 2002-01-25 Crist J. Clark <[email protected]>Key fingerprint = F04E CCD7 3834 72C2 707F 0A8F 259F 8F4B FE88 6AD3

uid Crist J. Clark <[email protected]>uid Crist J. Clark <[email protected]>sub 1024g/9B6BAB99 2002-01-25

B.3.13. Nik Clayton <[email protected]>

pub 1024D/2C37E375 2000-11-09 Nik Clayton <[email protected]>Key fingerprint = 15B8 3FFC DDB4 34B0 AA5F 94B7 93A8 0764 2C37 E375

uid Nik Clayton <[email protected]>uid Nik Clayton <[email protected]>uid Nik Clayton <[email protected]>uid Nik Clayton <[email protected]>sub 1024g/769E298A 2000-11-09

B.3.14. Ceri Davies <[email protected]>

pub 1024D/34B7245F 2002-03-08 Ceri Davies <[email protected]>Key fingerprint = 9C88 EB05 A908 1058 A4AE 9959 A1C7 DCC1 34B7 245F

uid Ceri Davies <[email protected]>uid Ceri Davies <[email protected]>sub 1024g/0C482CBC 2002-03-08

239

Apéndice B. PGP Keys

B.3.15. Brooks Davis <[email protected]>

pub 1024D/F2381AD4 2001-02-10 Brooks Davis <[email protected]>Key fingerprint = 655D 519C 26A7 82E7 2529 9BF0 5D8E 8BE9 F238 1AD4

uid Brooks Davis <[email protected]>uid Brooks Davis <[email protected]>sub 1024g/42921194 2001-02-10 [expires: 2003-01-22]

B.3.16. Brian S. Dean <[email protected]>

pub 1024D/723BDEE9 2002-01-23 Brian S. Dean <[email protected]>Key fingerprint = EF49 7ABE 47ED 91B3 FC3D 7EA5 4D90 2FF7 723B DEE9

sub 1024g/4B02F876 2002-01-23

B.3.17. Dima Dorfman <[email protected]>

pub 1024D/69FAE582 2001-09-04 Dima Dorfman <[email protected]>Key fingerprint = B340 8338 7DA3 4D61 7632 098E 0730 055B 69FA E582

uid Dima Dorfman <[email protected]>sub 1024g/A51DD1C0 2001-09-04 [expires: 2003-09-04]

B.3.18. Udo Erdelhoff <[email protected]>

pub 1024R/E74FA871 1994-07-19 Udo Erdelhoff <[email protected]>Key fingerprint = 8C B1 80 CA 2C 52 73 81 FB A7 B4 03 C5 32 C8 67

uid Udo Erdelhoff <[email protected]>uid Udo Erdelhoff <[email protected]>uid Udo Erdelhoff <[email protected]>uid Udo Erdelhoff <[email protected]>

B.3.19. Ruslan Ermilov <[email protected]>

pub 1024D/A8EE370A 2002-03-31 Ruslan Ermilov (Sunbay Software Ltd) <[email protected]>Key fingerprint = A3C4 291D 95A0 AF1F A85C B029 524B F83F A8EE 370A

uid Ruslan Ermilov (FreeBSD) <[email protected]>uid Ruslan Ermilov (FreeBSD Ukraine) <[email protected]>sub 1024g/2E858CD8 2002-03-31 [expires: 2004-03-30]

B.3.20. Chris D. Faulhaber <[email protected]>

pub 1024D/FE817A50 2000-12-20 Chris D. Faulhaber <[email protected]>Key fingerprint = A47D A838 9216 F921 A456 54FF 39B6 86E0 FE81 7A50

uid Chris D. Faulhaber <[email protected]>

240

Apéndice B. PGP Keys

sub 2048g/93452698 2000-12-20

B.3.21. Brian F. Feldman <[email protected]>

pub 1024D/41C13DE3 2000-01-11 Brian Fundakowski Feldman <[email protected]>Key fingerprint = 6A32 733A 1BF6 E07B 5B8D AE14 CC9D DCA2 41C1 3DE3

sub 1024g/A98B9FCC 2000-01-11 [expires: 2001-01-10]

pub 1024D/773905D6 2000-09-02 Brian Fundakowski Feldman <[email protected]>Key fingerprint = FE23 7481 91EA 5E58 45EA 6A01 B552 B043 7739 05D6

sub 2048g/D2009B98 2000-09-02

B.3.22. Mário Sérgio Fujikawa Ferreira <[email protected]>

pub 1024D/B8365E55 2001-11-22 Mario Sergio Fujikawa Ferreira <[email protected]>Key fingerprint = B143 3FA6 D76C 619C EB78 927C 5EF4 B29A B836 5E55

uid Mario Sergio Fujikawa Ferreira <[email protected]>uid Mario Sergio Fujikawa Ferreira <[email protected]>uid Mario Sergio Fujikawa Ferreira <[email protected]>sub 4096g/43405E6B 2001-11-22 [expires: 2003-11-22]sub 1024D/91EFF66C 2001-11-22 [expires: 2001-12-22]

B.3.23. Tony Finch <[email protected]>

pub 1024D/84C71B6E 2002-05-03 Tony Finch <[email protected]>Key fingerprint = 199C F25B 2679 6D04 63C5 2159 FFC0 F14C 84C7 1B6E

uid Tony Finch <[email protected]>uid Tony Finch <[email protected]>sub 2048g/FD101E8B 2002-05-03

B.3.24. Pete Fritchman <[email protected]>

pub 1024D/74B91CFD 2001-01-30 Pete Fritchman <[email protected]>Key fingerprint = 9A9F 8A13 DB0D 7777 8D8E 1CB2 C5C9 A08F 74B9 1CFD

uid Pete Fritchman <[email protected]>uid Pete Fritchman <[email protected]>sub 1024g/0C02AF0C 2001-01-30

B.3.25. Bill Fumerola <[email protected]>

pub 1024D/7F868268 2000-12-07 Bill Fumerola (FreeBSD Developer) <[email protected]>Key fingerprint = 5B2D 908E 4C2B F253 DAEB FC01 8436 B70B 7F86 8268

uid Bill Fumerola (Security Yahoo) <[email protected]>

241

Apéndice B. PGP Keys

sub 1024g/43980DA9 2000-12-07

B.3.26. Patrick S. Gardella <[email protected]>

pub 1024R/527BC62B 1997-06-23 Patrick Gardella <[email protected]>Key fingerprint = 54 7C D6 81 B1 63 D2 5E BD DD 58 4D A4 0E E4 E1

uid Patrick Gardella <[email protected]>uid [email protected] Patrick Gardella <[email protected]>

pub 1024D/C6AF4835 2000-01-19 Patrick Gardella <[email protected]>Key fingerprint = 4B2D 3CFA 963B E310 847E 7D6C C072 B447 C6AF 4835

uid Patrick Gardella <[email protected]>uid Patrick Gardella <[email protected]>sub 2048g/DB3B83E7 2000-01-19

pub 1024R/EE2D47A9 1996-08-17 Patrick Gardella <[email protected]>Key fingerprint = A6 DE 3C C0 33 CF 36 E6 D1 F5 BB E8 3C C4 67 50

B.3.27. John-Mark Gurney <[email protected]>

pub 1024R/3F9951F5 1997-02-11 John-Mark Gurney <[email protected]>Key fingerprint = B7 EC EF F8 AE ED A7 31 96 7A 22 B3 D8 56 36 F4

uid John-Mark Gurney <[email protected]>uid John-Mark Gurney <[email protected]>uid John-Mark Gurney <[email protected]>

B.3.28. Daniel Harris <[email protected]>

pub 1024D/84D0D7E7 2001-01-15 Daniel Harris <[email protected]>Key fingerprint = 3C61 B8A1 3F09 D194 3259 7173 6C63 DA04 84D0 D7E7

uid Daniel Harris <[email protected]>uid Daniel Harris <[email protected]>uid Daniel Harris <[email protected]>sub 1024g/9DF0231A 2001-01-15

B.3.29. John Hay <[email protected]>

pub 2048R/A9275B93 2000-05-10 John Hay <[email protected]>Key fingerprint = E7 95 F4 B9 D4 A7 49 6A 83 B9 77 49 28 9E 37 70

uid John Hay <[email protected]>uid Thawte Freemail Member <[email protected]>uid John Hay <[email protected]>uid John Hay <[email protected]>

242

Apéndice B. PGP Keys

B.3.30. Sheldon Hearn <[email protected]>

pub 1024D/74A06ACD 2002-06-20 Sheldon Hearn <[email protected]>Key fingerprint = 01A3 EF91 9C5A 3633 4E01 8085 A462 57F1 74A0 6ACD

sub 1536g/C42F8AC8 2002-06-20

B.3.31. Mike Heffner <[email protected]>

pub 1024D/CDECBF99 2001-02-02 Michael Heffner <[email protected]>Key fingerprint = AFAB CCEB 68C7 573F 5110 9285 1689 1942 CDEC BF99

uid Michael Heffner <[email protected]>uid Michael Heffner <[email protected]>uid Michael Heffner <[email protected]>uid Michael Heffner (ACM sysadmin) <[email protected]>sub 1024g/3FE83FB5 2001-02-02

B.3.32. Guy Helmer <[email protected]>

pub 1024R/35F4ED2D 1997-01-26 Guy G. Helmer <[email protected]>Key fingerprint = A2 59 4B 92 02 5B 9E B1 B9 4E 2E 03 29 D5 DC 3A

uid Guy G. Helmer <[email protected]>uid Guy G. Helmer <[email protected]>

B.3.33. Maxime Henrion <[email protected]>

pub 1024D/4ED69D63 2002-03-02 Maxime Henrion <[email protected]>Key fingerprint = 67E4 6751 0058 982C C759 9984 B9B4 3F69 4ED6 9D63

sub 1024g/1A6F46EF 2002-03-02

B.3.34. Jordan K. Hubbard <[email protected]>

pub 1024R/8E542D5D 1996-04-04 Jordan K. Hubbard <[email protected]>Key fingerprint = 3C F2 27 7E 4A 6C 09 0A 4B C9 47 CD 4F 4D 0B 20

B.3.35. Trevor Johnson <[email protected]>

pub 1024D/3A3EA137 2000-04-20 Trevor Johnson <[email protected]>Key fingerprint = 7ED1 5A92 76C1 FFCB E5E3 A998 F037 5A0B 3A3E A137

sub 1024g/46C24F1E 2000-04-20

243

Apéndice B. PGP Keys

B.3.36. Poul-Henning Kamp <[email protected]>

pub 1024R/0358FCBD 1995-08-01 Poul-Henning Kamp <[email protected]>Key fingerprint = A3 F3 88 28 2F 9B 99 A2 49 F4 E2 FA 5A 78 8B 3E

B.3.37. Josef Karthauser <[email protected]>

pub 1024D/E6B15016 2000-10-19 Josef Karthauser <[email protected]>Key fingerprint = 7266 8EAF 82C2 D439 5642 AC26 5D52 1C8C E6B1 5016

uid Josef Karthauser <[email protected]>uid Josef Karthauser <[email protected]>uid [revoked] Josef Karthauser <[email protected]>uid [revoked] Josef Karthauser <[email protected]>sub 2048g/1178B692 2000-10-19

B.3.38. Kris Kennaway <[email protected]>

pub 1024D/68E840A5 2000-01-14 Kris Kennaway <[email protected]>Key fingerprint = E65D 0E7D 7E16 B212 1BD6 39EE 5ABC B405 68E8 40A5

uid Kris Kennaway <[email protected]>uid Kris Kennaway <[email protected]>sub 2048g/03A41C45 2000-01-14 [expires: 2006-01-14]

B.3.39. Giorgos Keramidas <[email protected]>

pub 1024D/318603B6 2001-09-21 Giorgos Keramidas <[email protected]>Key fingerprint = C1EB 0653 DB8B A557 3829 00F9 D60F 941A 3186 03B6

uid Giorgos Keramidas <[email protected]>uid Giorgos Keramidas <[email protected]>sub 1024g/50FDBAD1 2001-09-21

B.3.40. Max Khon <[email protected]>

pub 1024D/971D4357 2002-01-22 Max Khon <[email protected]>Key fingerprint = AAC1 B2AF 9438 0D33 C106 C551 4052 219C 971D 4357

uid Max Khon <[email protected]>sub 1024g/DAA2638B 2002-01-22

B.3.41. Andreas Klemm <[email protected]>

pub 1024D/6C6F6CBA 2001-01-06 Andreas Klemm <[email protected]>Key fingerprint = F028 D51A 0D42 DD67 4109 19A3 777A 3E94 6C6F 6CBA

uid Andreas Klemm <[email protected]>

244

Apéndice B. PGP Keys

uid Andreas Klemm <[email protected]>uid Andreas Klemm <[email protected]>sub 2048g/FE23F866 2001-01-06

B.3.42. Joseph Koshy <[email protected]>

pub 1024D/D93798B6 2001-12-21 Joseph Koshy (FreeBSD) <[email protected]>Key fingerprint = 0DE3 62F3 EF24 939F 62AA 2E3D ABB8 6ED3 D937 98B6

sub 1024g/43FD68E9 2001-12-21

B.3.43. Alexander Langer <[email protected]>

pub 1024D/0C176D8F 2002-01-23 Alexander Langer <[email protected]>Key fingerprint = CDB7 54EF 998A 9BA1 4F0C C8FB 71F7 04BF 0C17 6D8F

sub 1024g/415D4F71 2002-01-23

B.3.44. Alexander Leidinger <[email protected]>

pub 1024D/72077137 2002-01-31 Alexander Leidinger <[email protected]>Key fingerprint = AA3A 8F69 B214 6BBD 5E73 C9A0 C604 3C56 7207 7137

sub 2048g/8C9828D3 2002-01-31

B.3.45. Ying-Chieh Liao <[email protected]>

pub 1024D/11C02382 2001-01-09 Ying-Chieh Liao <[email protected]>Key fingerprint = 4E98 55CC 2866 7A90 EFD7 9DA5 ACC6 0165 11C0 2382

uid Ying-Chieh Liao <[email protected]>uid Ying-Chieh Liao <[email protected]>uid Ying-Chieh Liao <[email protected]>uid Ying-Chieh Liao <[email protected]>sub 4096g/C1E16E89 2001-01-09

B.3.46. Clive Lin <[email protected]>

pub 1024D/A008C03E 2001-07-30 Clive Lin <[email protected]>Key fingerprint = FA3F 20B6 A77A 6CEC 1856 09B0 7455 2805 A008 C03E

uid Clive Lin <[email protected]>uid Clive Lin <[email protected]>sub 1024g/03C2DC87 2001-07-30 [expires: 2002-07-30]

245

Apéndice B. PGP Keys

B.3.47. Bruce A. Mah <[email protected]>

pub 1024D/5BA052C3 1997-12-08 Bruce A. Mah <[email protected]>Key fingerprint = F829 B805 207D 14C7 7197 7832 D8CA 3171 5BA0 52C3

uid Bruce A. Mah <[email protected]>uid Bruce A. Mah <[email protected]>uid Bruce A. Mah <[email protected]>uid Bruce A. Mah <[email protected]>uid Bruce A. Mah <[email protected]>uid Bruce A. Mah <[email protected]>sub 2048g/B4E60EA1 1997-12-08

B.3.48. David Malone <[email protected]>

pub 512/40378991 1994/04/21 David Malone <[email protected]>Key fingerprint = 86 A7 F4 86 39 2C 47 2C C1 C2 35 78 8E 2F B8 F5

B.3.49. Makoto Matsushita <[email protected]>

pub 1024D/20544576 1999-04-18 Makoto Matsushita <[email protected]>Key fingerprint = 71B6 13BF B262 2DD8 2B7C 6CD0 EB2D 4147 2054 4576

uid Makoto Matsushita <[email protected]>uid Makoto Matsushita <[email protected]>uid Makoto Matsushita <[email protected]>sub 1024g/F1F3C94D 1999-04-18

B.3.50. Kenneth D. Merry <[email protected]>

pub 1024D/54C745B5 2000-05-15 Kenneth D. Merry <[email protected]>Key fingerprint = D25E EBC5 F17A 9E52 84B4 BF14 9248 F0DA 54C7 45B5

uid Kenneth D. Merry <[email protected]>sub 2048g/89D0F797 2000-05-15

pub 1024R/2FA0A505 1995-10-30 Kenneth D. Merry <[email protected]>Key fingerprint = FD FA 85 85 95 C4 8E E8 98 1A CA 18 56 F0 00 1F

B.3.51. Dirk Meyer <[email protected]>

pub 1024R/331CDA5D 1995-06-04 Dirk Meyer <[email protected]>Key fingerprint = 44 16 EC 0A D3 3A 4F 28 8A 8A 47 93 F1 CF 2F 12

uid Dirk Meyer <[email protected]>uid Dirk Meyer <[email protected]>

246

Apéndice B. PGP Keys

B.3.52. Yoshiro Sanpei MIHIRA <[email protected]>

pub 1024R/391C5D69 1996-11-21 [email protected] fingerprint = EC 04 30 24 B0 6C 1E 63 5F 5D 25 59 3E 83 64 51

uid MIHIRA Yoshiro <[email protected]>uid Yoshiro MIHIRA <[email protected]>uid MIHIRA Yoshiro <[email protected]>uid MIHIRA Yoshiro <[email protected]>uid MIHIRA Yoshiro <[email protected]>uid MIHIRA Yoshiro <[email protected]>

B.3.53. Jim Mock <[email protected]>

pub 1024D/3AA4FEE0 2002-01-10 Jim Mock <[email protected]>Key fingerprint = AEEC 998D 7828 D306 AFF7 06CA D8FE 7285 3AA4 FEE0

uid Jim Mock <[email protected]>sub 1024g/3780652B 2002-01-10

B.3.54. Marcel Moolenaar <[email protected]>

pub 1024D/61EE89F6 2002-02-09 Marcel Moolenaar <[email protected]>Key fingerprint = 68BB E2B7 49AA FF69 CA3A DF71 A605 A52D 61EE 89F6

sub 1024g/6EAAB456 2002-02-09

B.3.55. Thomas Möstl <[email protected]>

pub 1024D/419C776C 2000-11-28 Thomas Moestl <[email protected]>Key fingerprint = 1C97 A604 2BD0 E492 51D0 9C0F 1FE6 4F1D 419C 776C

uid Thomas Moestl <[email protected]>uid Thomas Moestl <[email protected]>sub 2048g/ECE63CE6 2000-11-28

B.3.56. Rich Murphey <[email protected]>

pub 1024R/583443A9 1995-03-31 Rich Murphey <[email protected]>Key fingerprint = AF A0 60 C4 84 D6 0C 73 D1 EF C0 E9 9D 21 DB E4

B.3.57. Akinori MUSHA <[email protected]>

pub 1024D/9FD9E1EE 2000-03-21 Akinori MUSHA <[email protected]>Key fingerprint = 081D 099C 1705 861D 4B70 B04A 920B EFC7 9FD9 E1EE

uid Akinori MUSHA <[email protected]>uid Akinori MUSHA <[email protected]>

247

Apéndice B. PGP Keys

uid Akinori MUSHA <[email protected]>sub 1024g/71BA9D45 2000-03-21

B.3.58. Masafumi NAKANE <[email protected]>

pub 1024D/CE356B59 2000-02-19 Masafumi NAKANE <[email protected]>Key fingerprint = EB40 BCAB 4CE5 0764 9942 378C 9596 159E CE35 6B59

uid Masafumi NAKANE <[email protected]>uid Masafumi NAKANE <[email protected]>uid Masafumi NAKANE <[email protected]>uid Masafumi NAKANE <[email protected]>uid Masafumi NAKANE <[email protected]>uid Masafumi NAKANE <[email protected]>uid Masafumi NAKANE <[email protected]>sub 1024g/FA9BD48B 2000-02-19

B.3.59. Anders Nordby <[email protected]>

pub 1024D/00835956 2000-08-13 Anders Nordby <[email protected]>Key fingerprint = 1E0F C53C D8DF 6A8F EAAD 19C5 D12A BC9F 0083 5956

uid Anders Nordby <[email protected]>sub 2048g/4B160901 2000-08-13

B.3.60. David O’Brien <[email protected]>

pub 1024R/34F9F9D5 1995-04-23 David E. O’Brien <defunct - [email protected]>Key fingerprint = B7 4D 3E E9 11 39 5F A3 90 76 5D 69 58 D9 98 7A

uid David E. O’Brien <[email protected]>uid [email protected] David E. O’Brien <whois Do38>uid David E. O’Brien <[email protected]>uid David E. O’Brien <[email protected]>uid David E. O’Brien <[email protected]>uid David E. O’Brien <defunct - [email protected]>uid David E. O’Brien <[email protected]>uid David E. O’Brien <[email protected]>

pub 1024D/7F9A9BA2 1998-06-10 "David E. O’Brien" <[email protected]>Key fingerprint = 02FD 495F D03C 9AF2 5DB7 F496 6FC8 DABD 7F9A 9BA2

uid "David E. O’Brien" <[email protected]>uid "David E. O’Brien" <[email protected]>sub 3072g/BA32C20D 1998-06-10

248

Apéndice B. PGP Keys

B.3.61. Mark Peek <[email protected]>

pub 1024D/330D4D01 2002-01-27 Mark Peek <[email protected]>Key fingerprint = 510C 96EE B4FB 1B0A 2CF8 A0AF 74B0 0B0E 330D 4D01

sub 1024g/9C6CAC09 2002-01-27

B.3.62. Peter Pentchev <[email protected]>

pub 1024D/16194553 2002-02-01 Peter Pentchev <[email protected]>Key fingerprint = FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553

uid Peter Pentchev <[email protected]>uid Peter Pentchev <[email protected]>uid Peter Pentchev <[email protected]>uid Peter Pentchev <[email protected]>sub 1024g/7074473C 2002-02-01

B.3.63. Jim Pirzyk <[email protected]>

pub 1024D/4E23DACA 2001-03-02 Jim Pirzyk <[email protected]>Key fingerprint = 07EE A1BD 32E5 C402 59B6 22D5 D846 31D1 4E23 DACA

uid Jim Pirzyk <[email protected]>sub 1024g/F38895F7 2001-03-02

B.3.64. John Polstra <[email protected]>

pub 1024R/BFBCF449 1997-02-14 John D. Polstra <[email protected]>Key fingerprint = 54 3A 90 59 6B A4 9D 61 BF 1D 03 09 35 8D F6 0D

B.3.65. Mark Pulford <[email protected]>

pub 1024D/182C368F 2000-05-10 Mark Pulford <[email protected]>Key fingerprint = 58C9 C9BF C758 D8D4 7022 8EF5 559F 7F7B 182C 368F

uid Mark Pulford <[email protected]>sub 2048g/380573E8 2000-05-10

B.3.66. Thomas Quinot <[email protected]>

pub 1024D/393D2469 1999-09-23 Thomas Quinot <[email protected]>Empreinte de la clé = 4737 A0AD E596 6D30 4356 29B8 004D 54B8 393D 2469

uid Thomas Quinot <[email protected]>uid Thomas Quinot <[email protected]>sub 1024g/8DE13BB2 1999-09-23

249

Apéndice B. PGP Keys

B.3.67. Doug Rabson <[email protected]>

pub 1024R/95C11771 2000-02-27 Doug Rabson <[email protected]>Key fingerprint = 20 BB E4 38 5D 89 D2 D4 68 A6 2F DC 0A DE 10 3C

B.3.68. Benno Rice <[email protected]>

pub 1024D/87C59909 2002-01-16 Benno Rice <[email protected]>Key fingerprint = CE27 DADA 08E3 FAA3 88F1 5B31 5E34 705A 87C5 9909

uid Benno Rice <[email protected]>sub 1024g/4F7C2BAD 2002-01-16 [expires: 2007-01-15]

B.3.69. Ollivier Robert <[email protected]>

pub 1024R/EBBB1B41 1994-05-30 Ollivier Robert <[email protected]>Key fingerprint = B6 26 F7 26 64 4A 10 C3 D1 62 23 FB 4B 3B CC DD

uid Ollivier Robert <[email protected]>uid Ollivier Robert <[email protected]>uid Ollivier Robert <[email protected]>uid Ollivier Robert <[email protected]>uid Ollivier Robert <[email protected]>

B.3.70. Guido van Rooij <[email protected]>

pub 1024R/599F323D 1996-05-18 Guido van Rooij <[email protected]>Key fingerprint = 16 79 09 F3 C0 E4 28 A7 32 62 FA F6 60 31 C0 ED

uid Guido van Rooij <[email protected]>

pub 1024D/A95102C1 2000-10-25 Guido van Rooij <[email protected]>Key fingerprint = 5B3E 51B7 0E7A D170 0574 1E51 2471 117F A951 02C1

uid Guido van Rooij <[email protected]>sub 1024g/A5F20553 2000-10-25

B.3.71. Wolfram Schneider <[email protected]>

Type Bits/KeyID Date User IDpub 1024/2B7181AD 1997/08/09 Wolfram Schneider <[email protected]>

Key fingerprint = CA 16 91 D9 75 33 F1 07 1B F0 B4 9F 3E 95 B6 09

250

Apéndice B. PGP Keys

B.3.72. Jens Schweikhardt <[email protected]>

pub 1024D/0FF231FD 2002-01-27 Jens Schweikhardt <[email protected]>Key fingerprint = 3F35 E705 F02F 35A1 A23E 330E 16FE EA33 0FF2 31FD

uid Jens Schweikhardt <[email protected]>sub 1024g/6E93CACC 2002-01-27 [expires: 2005-01-26]

B.3.73. Gregory Neil Shapiro <[email protected]>

pub 1024R/4FBE2ADD 2000-10-13 Gregory Neil Shapiro <[email protected]>Key fingerprint = 56 D5 FF A7 A6 54 A6 B5 59 10 00 B9 5F 5F 20 09

uid Gregory Neil Shapiro <[email protected]>

pub 1024D/F76A9BF5 2001-11-14 Gregory Neil Shapiro <[email protected]>Key fingerprint = 3B5E DAF1 4B04 97BA EE20 F841 21F9 C5BC F76A 9BF5

uid Gregory Neil Shapiro <[email protected]>sub 2048g/935657DC 2001-11-14

pub 1024D/FCE56561 2000-10-14 Gregory Neil Shapiro <[email protected]>Key fingerprint = 42C4 A87A FD85 C34F E77F 5EA1 88E1 7B1D FCE5 6561

uid Gregory Neil Shapiro <[email protected]>sub 1024g/285DC8A0 2000-10-14 [expires: 2001-10-14]

B.3.74. Vanilla I. Shu <[email protected]>

pub 1024D/ACE75853 2001-11-20 Vanilla I. Shu <[email protected]>Key fingerprint = 290F 9DB8 42A3 6257 5D9A 5585 B25A 909E ACE7 5853

sub 1024g/CE695D0E 2001-11-20

B.3.75. Christopher Shumway <[email protected]>

pub 1024D/3219F982 2001-05-17 Christopher Shumway <[email protected]>Key fingerprint = 45F5 931B 0646 BF84 E78E E274 6C29 340E 3219 F982

uid Christopher Shumway <[email protected]>sub 1024g/D215EFED 2001-05-17

B.3.76. Dmitry Sivachenko <[email protected]>

pub 1024D/13D5DF80 2002-03-18 Dmitry Sivachenko <[email protected]>Key fingerprint = 72A9 12C9 BB02 46D4 4B13 E5FE 1194 9963 13D5 DF80

uid Dmitry S. Sivachenko <[email protected]>sub 1024g/060F6DBD 2002-03-18

251

Apéndice B. PGP Keys

B.3.77. Jesper Skriver <[email protected]>

pub 1024D/F9561C31 2001-03-09 Jesper Skriver <[email protected]>Key fingerprint = 6B88 9CE8 66E9 E631 C9C5 5EB4 22AB F0EC F956 1C31

uid Jesper Skriver <[email protected]>uid Jesper Skriver <[email protected]>sub 1024g/777C378C 2001-03-09

B.3.78. Ville Skyttä <[email protected]>

pub 1024D/BCD241CB 2002-04-07 Ville Skyttä <[email protected]>Key fingerprint = 4E0D EBAB 3106 F1FA 3FA9 B875 D98C D635 BCD2 41CB

uid Ville Skyttä <[email protected]>uid Ville Skyttä <[email protected]>sub 2048g/9426F4D1 2002-04-07

B.3.79. Ben Smithurst <[email protected]>

pub 1024D/2CEF442C 2001-07-11 Ben Smithurst <[email protected]>Key fingerprint = 355D 0FFF B83A 90A9 D648 E409 6CFC C9FB 2CEF 442C

uid Ben Smithurst <[email protected]>uid Ben Smithurst <[email protected]>uid Ben Smithurst <[email protected]>uid Ben Smithurst <[email protected]>uid Ben Smithurst <[email protected]>sub 1024g/347071FF 2001-07-11

B.3.80. Dag-Erling C. Smørgrav <[email protected]>

pub 1024D/0512E49A 2001-06-26 Dag-Erling Smørgrav (office/general) <[email protected]>Key fingerprint = 94BD 6AC7 695E 4861 E27D DC7F 6726 88E1 0512 E49A

uid Dag-Erling Smørgrav (office/general) <[email protected]>uid Dag-Erling Smørgrav (OFUG) <[email protected]>uid Dag-Erling Smørgrav (FreeBSD) <[email protected]>sub 2048g/F409452B 2001-06-26 [expires: 2003-07-01]

pub 1024D/27848427 2000-10-13 Dag-Erling Smørgrav (low security key) <[email protected]>Key fingerprint = 58B8 E93A 659B 0FFC E3FA 2B45 43E9 5DE4 2784 8427

uid Dag-Erling Smørgrav (low security key) <[email protected]>uid Dag-Erling Smørgrav (low security key) <[email protected]>sub 2048g/CF429755 2000-10-13

252

Apéndice B. PGP Keys

B.3.81. Maxim Sobolev <[email protected]>

pub 1024D/888205AF 2001-11-21 Maxim Sobolev <[email protected]>Key fingerprint = 85C9 DCB0 6828 087C C977 3034 A0DB B9B7 8882 05AF

uid Maxim Sobolev <[email protected]>uid Maxim Sobolev <[email protected]>uid Maxim Sobolev <[email protected]>

pub 1024D/A3B5D19F 2000-07-26 Maxim Sobolev <[email protected]>Key fingerprint = D89F B292 7639 0D69 6ED9 58D1 71ED 0B47 A3B5 D19F

sub 2048g/AE1BB1C4 2000-07-26

B.3.82. Daniel C. Sobral <[email protected]>

pub 1024R/488A2DD5 2000-06-07 Daniel C. Sobral <[email protected]>Key fingerprint = AF 90 A6 A2 B5 8D 6C 28 37 F3 F4 47 8B 31 47 DF

uid Daniel C. Sobral <[email protected]>

B.3.83. Brian Somers <[email protected]>

pub 1024R/666A7421 1997-04-30 Brian Somers <[email protected]>Key fingerprint = 2D 91 BD C2 94 2C 46 8F 8F 09 C4 FC AD 12 3B 21

uid Brian Somers <[email protected]>uid Brian Somers <[email protected]>uid Brian Somers <[email protected]>uid Brian Somers <[email protected]>uid Brian Somers <[email protected]>

B.3.84. Gregory Sutter <[email protected]>

pub 1024D/40AE3052 1998-07-18 Gregory S. Sutter <[email protected]>Key fingerprint = 61D4 6A28 F282 482E 1D82 D077 E31E 323D 40AE 3052

uid Gregory S. Sutter <[email protected]>uid Gregory S. Sutter <[email protected]>uid Gregory S. Sutter <[email protected]>sub 2048g/02AEA3C6 1998-07-18

pub 1024D/845DFEDD 2000-10-10 Gregory S. Sutter <[email protected]>Key fingerprint = D161 E4EA 4BFA 2427 F3F9 5B1F 2015 31D5 845D FEDD

uid Gregory S. Sutter <[email protected]>uid Gregory S. Sutter <[email protected]>uid Gregory S. Sutter <[email protected]>sub 2048g/0A37BBCE 2000-10-10

253

Apéndice B. PGP Keys

B.3.85. Yoshihiro Takahashi <[email protected]>

pub 1024D/8394B81F 2001-10-15 Yoshihiro TAKAHASHI <[email protected]>Key fingerprint = D4FA D8CA 2AED FCF4 90A3 3569 8666 0500 8394 B81F

uid Yoshihiro TAKAHASHI <[email protected]>uid Yoshihiro TAKAHASHI <[email protected]>sub 1024g/B796F020 2001-10-15

B.3.86. Mikhail Teterin <[email protected]>

pub 1024R/3FC71479 1995-09-08 Mikhail Teterin <[email protected]>Key fingerprint = 5F 15 EA 78 A5 40 6A 0F 14 D7 D9 EA 6E 2B DA A4

B.3.87. Gordon Tetlow <[email protected]>

pub 1024D/357D65FB 2002-05-14 Gordon Tetlow <[email protected]>Key fingerprint = 34EF AD12 10AF 560E C3AE CE55 46ED ADF4 357D 65FB

uid Gordon Tetlow <[email protected]>sub 1024g/243694AB 2002-05-14

B.3.88. Jacques Vidrine <[email protected]>

pub 1024R/094724A9 1998-04-18 Jacques Vidrine <[email protected]>Key fingerprint = 00 F9 E6 A2 C5 4D 0A 76 26 8B 8B 57 73 D0 DE EE

uid Jacques A. Vidrine <[email protected]>

pub 1024D/1606DB95 2001-07-05 Jacques A. Vidrine <[email protected]>Key fingerprint = 46BC EA5B F70A CC81 5332 0832 8C32 8CFF 1606 DB95

uid Jacques A. Vidrine <[email protected]>uid Jacques A. Vidrine <[email protected]>uid Jacques A. Vidrine <[email protected]>sub 2048g/57EDEA6F 2001-07-05

pub 1024D/71A28C73 1997-08-21 Jacques Vidrine <[email protected]>Key fingerprint = AB2F 8D71 A4F4 467D 352E 8A41 5D79 22E4 71A2 8C73

uid Jacques A. Vidrine <[email protected]>sub 2048g/1C32F6B1 1997-08-21

B.3.89. Nate Williams <[email protected]>

pub 1024D/C2AC6BA4 2002-01-28 Nate Williams (FreeBSD) <[email protected]>Key fingerprint = 8EE8 5E72 8A94 51FA EA68 E001 FFF9 8AA9 C2AC 6BA4

sub 1024g/03EE46D2 2002-01-28

254

Apéndice B. PGP Keys

B.3.90. Garrett Wollman <[email protected]>

pub 1024D/0B92FAEA 2000-01-20 Garrett Wollman <[email protected]>Key fingerprint = 4627 19AF 4649 31BF DE2E 3C66 3ECF 741B 0B92 FAEA

sub 1024g/90D5EBC2 2000-01-20

B.3.91. Jörg Wunsch <[email protected]>

pub 1024R/76A3F7B1 1996-04-27 Joerg Wunsch <[email protected]>Key fingerprint = DC 47 E6 E4 FF A6 E9 8F 93 21 E0 7D F9 12 D6 4E

uid Joerg Wunsch <[email protected]>uid Joerg Wunsch <[email protected]>uid Joerg Wunsch <[email protected]>

B.3.92. Alexey Zelkin <[email protected]>

pub 1024D/9196B7D9 2002-01-28 Alexey Zelkin <[email protected]>Key fingerprint = 4465 F2A4 28C1 C2E4 BB95 1EA0 C70D 4964 9196 B7D9

sub 1024g/E590ABA4 2002-01-28

B.3.93. Nicolas Souchu <[email protected]>

pub 1024D/C744F18B 2002-02-13 Nicholas Souchu <[email protected]>Key fingerprint = 992A 144F AC0F 40BA 55AE DE6D 752D 0A6C C744 F18B

sub 1024g/90BD3231 2002-02-13

B.3.94. Sebastien Gioria <[email protected]>

pub 1024D/7C8DA4F4 2002-02-09 Sebastien Gioria <[email protected]>Key fingerprint = 41F4 4885 7C23 6ED3 CC24 97AA 6DDD B426 7C8D A4F4

uid Sebastien Gioria <[email protected]>uid Sebastien Gioria <[email protected]>uid Sebastien Gioria <[email protected]>sub 4096g/F147E4D3 2002-02-09

255

ColophonEste libro es el resultado del trabajo de cientos de colaboradores del “Proyecto de Documentación de FreeBSD”. Eltexto esta escrito en SGML de acuerdo al DTD DocBook y es formateado automáticamente en diferentes formatosde presentación usando Jade, una herramienta DSSSL de software libre. Se han usado las hojas de estilo DSSSL deNorm Walsh con personalización de niveles para las instrucciones de presentación de Jade. La versión impresa deeste documento no hubiese sido posible sin los programas TeX de Donald Knuth, LaTeX de Leslie Lamport yJadeTeX de Sebastian Rahtz.

256