                           Manual de FreeBSD

  Proyecto de Documentacion de FreeBSD

   Copyright (c) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 The FreeBSD
   Documentation Project

   !Bienvenido a FreeBSD! Este manual cubre la instalacion y uso
   diario de FreeBSD 8.2-RELEASE y FreeBSD 7.4-RELEASE. Este manual
   esta en constante evolucion y es el resultado del trabajo de
   muchas personas. Algunas secciones no estan completas y otras
   necesitan ser actualizadas. Si esta interesado en colaborar en
   este proyecto envie un mensaje de correo electronico a lista de
   correo del proyecto de documentacion de FreeBSD. La ultima version
   de este documento esta siempre disponible en el sitio web de
   FreeBSD. Tambien puede encontrarla en diferentes formatos y
   opciones de compresion en el servidor FTP de FreeBSD o en las
   numerosas replicas. Si prefiere una copia en papel de este manual
   puede comprarla en FreeBSD Mall. Tambien es posible hacer
   busquedas en este manual.

   La redistribucion y uso en fuente (SGML DocBook) y formatos
   'compilados' (SGML, HTML, PDF, PostScript, RTF y cualquier otro)
   con o sin modificacion, esta permitida siempre y cuando se cumplan
   las siguientes condiciones:

    1. La redistribucion del codigo fuente (SGML DocBook) debe
       contener esta informacion de copyright, esta lista de
       condiciones y el siguiente texto como las primeras lineas del
       fichero sin modificar.

    2. La redistribucion en formatos compilados (transformado a otros
       DTDs, convertidos a PDF, PostScript, RTF y otros formatos)
       debe reproducir el siguiente texto de copyright, esta lista de
       condiciones y el siguiente texto en la documentacion y/u otros
       materiales entregados con la distribucion.

     Importante: THIS DOCUMENTATION IS PROVIDED BY THE FREEBSD
     DOCUMENTATION PROJECT "AS IS" AND ANY EXPRESS OR IMPLIED
     WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FREEBSD
     DOCUMENTATION PROJECT BE LIABLE FOR ANY DIRECT, INDIRECT,
     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
     WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
     DAMAGE.

   FreeBSD is a registered trademark of the FreeBSD Foundation.

   3Com and HomeConnect are registered trademarks of 3Com
   Corporation.

   3ware and Escalade are registered trademarks of 3ware Inc.

   ARM is a registered trademark of ARM Limited.

   Adaptec is a registered trademark of Adaptec, Inc.

   Adobe, Acrobat, Acrobat Reader, and PostScript are either
   registered trademarks or trademarks of Adobe Systems Incorporated
   in the United States and/or other countries.

   Apple, AirPort, FireWire, Mac, Macintosh, Mac OS, Quicktime, and
   TrueType are trademarks of Apple Computer, Inc., registered in the
   United States and other countries.

   Corel and WordPerfect are trademarks or registered trademarks of
   Corel Corporation and/or its subsidiaries in Canada, the United
   States and/or other countries.

   Sound Blaster is a trademark of Creative Technology Ltd. in the
   United States and/or other countries.

   CVSup is a registered trademark of John D. Polstra.

   Heidelberg, Helvetica, Palatino, and Times Roman are either
   registered trademarks or trademarks of Heidelberger Druckmaschinen
   AG in the U.S. and other countries.

   IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390, and
   ThinkPad are trademarks of International Business Machines
   Corporation in the United States, other countries, or both.

   IEEE, POSIX, and 802 are registered trademarks of Institute of
   Electrical and Electronics Engineers, Inc. in the United States.

   Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and
   Xeon are trademarks or registered trademarks of Intel Corporation
   or its subsidiaries in the United States and other countries.

   Intuit and Quicken are registered trademarks and/or registered
   service marks of Intuit Inc., or one of its subsidiaries, in the
   United States and other countries.

   Linux is a registered trademark of Linus Torvalds.

   LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID and Mylex are
   trademarks or registered trademarks of LSI Logic Corp.

   M-Systems and DiskOnChip are trademarks or registered trademarks
   of M-Systems Flash Disk Pioneers, Ltd.

   Macromedia, Flash, and Shockwave are trademarks or registered
   trademarks of Macromedia, Inc. in the United States and/or other
   countries.

   Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media
   and Windows NT are either registered trademarks or trademarks of
   Microsoft Corporation in the United States and/or other countries.

   Netscape and the Netscape Navigator are registered trademarks of
   Netscape Communications Corporation in the U.S. and other
   countries.

   GateD and NextHop are registered and unregistered trademarks of
   NextHop in the U.S. and other countries.

   Motif, OSF/1, and UNIX are registered trademarks and IT DialTone
   and The Open Group are trademarks of The Open Group in the United
   States and other countries.

   Oracle is a registered trademark of Oracle Corporation.

   PowerQuest and PartitionMagic are registered trademarks of
   PowerQuest Corporation in the United States and/or other
   countries.

   RealNetworks, RealPlayer, and RealAudio are the registered
   trademarks of RealNetworks, Inc.

   Red Hat, RPM, are trademarks or registered trademarks of Red Hat,
   Inc. in the United States and other countries.

   SAP, R/3, and mySAP are trademarks or registered trademarks of SAP
   AG in Germany and in several other countries all over the world.

   Sun, Sun Microsystems, Java, Java Virtual Machine, JavaServer
   Pages, JDK, JRE, JSP, JVM, Netra, Solaris, StarOffice, Sun Blade,
   Sun Enterprise, Sun Fire, SunOS, and Ultra are trademarks or
   registered trademarks of Sun Microsystems, Inc. in the United
   States and other countries.

   Symantec and Ghost are registered trademarks of Symantec
   Corporation in the United States and other countries.

   MATLAB is a registered trademark of The MathWorks, Inc.

   SpeedTouch is a trademark of Thomson.

   U.S. Robotics and Sportster are registered trademarks of U.S.
   Robotics Corporation.

   VMware is a trademark of VMware, Inc.

   Waterloo Maple and Maple are trademarks or registered trademarks
   of Waterloo Maple Inc.

   Mathematica is a registered trademark of Wolfram Research, Inc.

   XFree86 is a trademark of The XFree86 Project, Inc.

   Ogg Vorbis and Xiph.Org are trademarks of Xiph.Org.

   Many of the designations used by manufacturers and sellers to
   distinguish their products are claimed as trademarks. Where those
   designations appear in this document, and the FreeBSD Project was
   aware of the trademark claim, the designations have been followed
   by the "(TM)" or the "(R)" symbol.

     --------------------------------------------------------------

   Tabla de contenidos

   Prefacio

   I. Primeros pasos

                1. Introduccion

                             1.1. Sinopsis

                             1.2. Bienvenido a FreeBSD

                             1.3. Acerca del Proyecto FreeBSD

                2. Instalacion de FreeBSD

                             2.1. Sinopsis

                             2.2. Requisitos de hardware

                             2.3. Tareas anteriores a la instalacion

                             2.4. Inicio de la instalacion

                             2.5. ?Que es sysinstall?

                             2.6. Asignacion de espacio en disco

                             2.7. Eleccion de que instalar

                             2.8. Eleccion del medio de instalacion

                             2.9. El punto sin retorno

                             2.10. Despues de la instalacion

                             2.11. Solucion de problemas

                             2.12. Guia avanzada de instalacion

                             2.13. Como preparar su propio medio de
                             instalacion

                3. Conceptos basicos de Unix

                             3.1. Sinopsis

                             3.2. Consolas virtuales y terminales

                             3.3. Permisos

                             3.4. Estructura de directorios

                             3.5. Organizacion de disco

                             3.6. Montaje y desmontaje de sistemas de
                             ficheros

                             3.7. Procesos

                             3.8. Daemons, senales y como matar
                             procesos

                             3.9. Shells

                             3.10. Editores de texto

                             3.11. Dispositivos y nodos de
                             dispositivos

                             3.12. Formatos binarios

                             3.13. Mas informacion

                4. Instalacion de aplicaciones: <<packages>> y ports

                             4.1. Sinopsis

                             4.2. Aproximacion a la instalacion de
                             software

                             4.3. Como encontrar aplicaciones

                             4.4. Uso del sistema de packages

                             4.5. Uso de la coleccion de ports

                             4.6. Despues de instalar un port

                             4.7. Ports que no funcionan

                5. El sistema X Window

                             5.1. Sinopsis

                             5.2. Entender X

                             5.3. Instalar X11

                             5.4. Configuracion de X11

                             5.5. Uso de tipos en X11

                             5.6. El gestor de pantalla X

                             5.7. Entornos de escritorio

   II. Tareas comunes

                6. Aplicaciones de escritorio

                             6.1. Sinopsis

                             6.2. Navegadores

                             6.3. Productividad

                             6.4. Visores de documentos

                             6.5. Finanzas

                             6.6. Resumen

                7. Multimedia

                             7.1. Sinopsis

                             7.2. Configuracion de la tarjeta de
                             sonido

                             7.3. Sonido MP3

                             7.4. Reproduccion de video

                             7.5. Configuracion de tarjetas de TV

                             7.6. Escaneres de imagenes

                8. Configuracion del kernel de FreeBSD

                             8.1. Sinopsis

                             8.2. ?Que razones hay para compilar un
                             kernel personalizado?

                             8.3. Inventario de hardware del sistema

                             8.4. Controladores del kernel,
                             subsistemas y modulos

                             8.5. Compilacion e instalacion de un
                             kernel personalizado

                             8.6. El fichero de configuracion

                             8.7. Que hacer si algo va mal

                9. Imprimir

                             9.1. Sinopsis

                             9.2. Introduccion

                             9.3. Configuracion basica

                             9.4. Configuracion avanzada de
                             impresoras

                             9.5. Como utilizar impresoras

                             9.6. Alternativas a LPD

                             9.7. Solucion de problemas

                10. Compatibilidad binaria con Linux

                             10.1. Sinopsis

                             10.2. Instalacion

                             10.3. Instalacion de Mathematica(R)

                             10.4. Instalacion de Maple(TM)

                             10.5. Instalacion de MATLAB(R)

                             10.6. Instalacion de Oracle(R)

                             10.7. Instalacion de SAP(R) R/3(R)

                             10.8. Temas avanzados

   III. Administracion del sistema.

                11. Configuracion y Adaptacion del Sistema

                             11.1. Configuracion de Tarjetas de Red

                             11.2. "Arrancar servicios"

                             11.3. "Soft Updates"

                             11.4. Anadir espacio swap

                12. El proceso de arranque en FreeBSD

                             12.1. Sinopsis

                             12.2. El problema que representa
                             arrancar el sistema

                             12.3. El RMA y las etapas de arranque
                             uno, dos y tres

                             12.4. Interaccion con el kernel durante
                             el arranque

                             12.5. Device Hints

                             12.6. Init: inicializacion del proceso
                             de control

                             12.7. Secuencia de apagado

                13. Usuarios y administracion basica de cuentas

                             13.1. Sinopsis

                             13.2. Introduccion

                             13.3. La cuenta superusuario

                             13.4. Cuentas de sistema

                             13.5. Cuentas de usuario

                             13.6. Modificacion de cuentas

                             13.7. Limitar a los usuarios

                             13.8. Personalizar a los usuarios

                             13.9. Grupos

                14. Seguridad

                             14.1. Sinopsis

                             14.2. Introduccion

                             14.3. Asegurar FreeBSD

                             14.4. DES, MD5 y Crypt

                             14.5. Contrasenas de un solo uso

                             14.6. TCP Wrappers

                             14.7. KerberosIV

                             14.8. Kerberos5

                             14.9. OpenSSL

                             14.10. VPN sobre IPsec

                             14.11. OpenSSH

                             14.12. Listas de control de acceso a
                             sistemas de ficheros

                             14.13. Monitorizacion de fallos de
                             seguridad de aplicaciones

                             14.14. FreeBSD Security Advisories

                             14.15. Contabilidad de procesos

                15. Jaulas

                             15.1. Sinopsis

                             15.2. Terminos relacionados con las
                             jaulas

                             15.3. Introduccion

                             15.4. Creacion y gestion de jaulas

                             15.5. Administracion y personalizacion a
                             fondo

                             15.6. Uso de las jaulas

                16. Mandatory Access Control

                             16.1. Sinopsis

                             16.2. Terminos clave en este capitulo

                             16.3. Explicacion de MAC

                             16.4. Las etiquetas MAC

                             16.5. Configuracion de modulos

                             16.6. El modulo MAC ifoff

                             16.7. El modulo MAC portacl

                             16.8. Politicas de etiquetas MAC

                             16.9. El modulo MAC partition

                             16.10. El modulo de seguridad multinivel
                             MAC

                             16.11. El modulo MAC Biba

                             16.12. El modulo MAC LOMAC

                             16.13. Implementacion de un entorno
                             seguro con MAC

                             16.14. Otro ejemplo: Uso de MAC para
                             restringir un servidor web

                             16.15. Depuracion de errores en MAC

                17. Auditoria de eventos de seguridad

                             17.1. *

                18. Almacenamiento

                             18.1. Sinopsis

                             18.2. Nombres de dispositivo

                             18.3. Anadir discos

                             18.4. RAID

                             18.5. Dispositivos de almacenamiento USB

                             18.6. Creacion y uso de medios opticos
                             (CD)

                             18.7. Crear y utilizar medios opticos
                             (DVDs)

                             18.8. Creacion y uso de disquetes
                             (floppies)

                             18.9. Creacion y uso de cintas de datos

                             18.10. Respaldos en disquetes

                             18.11. Bases para respaldos

                             18.12. Sistemas de ficheros en red,
                             memoria y respaldados en fichero

                             18.13. Instantaneas ("snapshots") de
                             sistemas de ficheros

                             18.14. Cuotas en sistemas de ficheros

                             18.15. Cifrado de particiones de disco

                19. GEOM: Marco de trabajo modular de transformacion
                de discos

                             19.1. Sinopsis

                             19.2. Introduccion a GEOM

                             19.3. RAID0 - Distribucion por bandas

                             19.4. RAID1 - Replicacion

                20. El Gestor de Volumenes Vinum

                             20.1. Sinopsis

                             20.2. Los Discos son Demasiado Pequenos

                             20.3. Cuellos de Botella en el Acceso

                             20.4. Integridad de Datos

                             20.5. Objetos Vinum

                             20.6. Ejemplos

                             20.7. Esquema de Nombres de los Objetos

                             20.8. Configuracion de Vinum

                             20.9. Uso de Vinum en el Sistema de
                             Ficheros Raiz

                21. Virtualizacion

                             21.1. *

                22. Localizacion - Uso y configuracion de I18N/L10N

                             22.1. Sinopsis

                             22.2. Lo basico

                             22.3. Uso de la localizacion

                             22.4. Compilacion de programas con
                             soporte para I18N

                             22.5. Localizacion de FreeBSD a idiomas
                             especificos

                23. Lo ultimo de lo ultimo

                             23.1. Sinopsis

                             23.2. FreeBSD-CURRENT vs. FreeBSD-STABLE

                             23.3. Sincronizacion de su codigo fuente

                             23.4. Uso de make world

                             23.5. Redes pequenas

   IV. Comunicaciones en red

                24. Comunicaciones serie

                             24.1. Sinopsis

                             24.2. Introduccion

                             24.3. Terminales

                             24.4. Servicio dial-in

                             24.5. Servicio dial-out

                             24.6. Configurando la consola serie

                25. PPP y SLIP

                             25.1. Sinopsis

                             25.2. Uso de User PPP

                             25.3. Uso de Kernel PPP

                             25.4. Uso de PPP sobre Ethernet (PPPoE)

                             25.5. Uso de PPP sobre ATM (PPPoA)

                             25.6. Uso de SLIP

                26. Cortafuegos

                             26.1. *

                27. Correo Electronico

                             27.1. Sinopsis

                             27.2. Utilizacion del correo electronico

                             27.3. Configuracion de sendmail

                             27.4. Sustitucion del Agente de
                             Transferencia de Correo

                             27.5. Depuracion de Problemas

                             27.6. Conceptos Avanzados

                             27.7. SMTP con UUCP

                             27.8. Configuracion para solamente
                             enviar correo

                             27.9. Utilizacion del correo con una
                             conexion mediante modem analogico
                             (dial-up)

                             27.10. Autentificacion utilizando SMTP

                             27.11. Agente de Correo de Usuario

                             27.12. Manejo de fetchmail

                             27.13. Uso de procmail

                28. Servidores de red

                             28.1. *

                29. Networking avanzado

                             29.1. Resumen

                             29.2. Pasarelas y "routers"

                             29.3. Redes sin cables ("wireless")

                             29.4. Bluetooth

                             29.5. Puenteado

                             29.6. NFS

                             29.7. Ejecucion sin disco duro

                             29.8. RDSI

                             29.9. NIS/YP

                             29.10. DHCP

                             29.11. DNS

                             29.12. NTP

                             29.13. Traduccion de direcciones de red

                             29.14. El "Superservidor" inetd

                             29.15. Linea IP paralela (PLIP)

                             29.16. IPv6

                             29.17. ATM en FreeBSD 5.X

   V. Apendices

                30. Como obtener FreeBSD

                             30.1. Servidores FTP

                             30.2. Uso de CVSup

                31. Bibliografia

                             31.1. Libros y revistas especificas
                             sobre FreeBSD

                             31.2. Guias de usuario

                             31.3. Guias de administrador

                             31.4. Guias de programadores

                             31.5. El sistema operativo por dentro

                             31.6. Referencia de seguridad

                             31.7. Referencia de hardware

                             31.8. Historia de UNIX

                             31.9. Diarios y revistas

                A. Recursos en Internet

                             A.1. Listas de correo

                             A.2. Grupos de noticias de Usenet

                             A.3. Servidores WWW

                             A.4. Direcciones de correo electronico

                             A.5. Cuentas shell

                32. PGP keys

                             32.1. Responsables

                             32.2. Miembros del Core Team

                33. Actualizacion de FreeBSD

                             33.1. Synopsis

                             33.2. FreeBSD Update

                             33.3. Portsnap: Una herramienta de
                             actualizacion de la Coleccion de Ports

   Colofon

   Lista de tablas

   2-1. Ejemplo de inventario de dispositivos

   2-2. Estructura de particiones del primer disco

   2-3. Esquema de particiones para varios discos

   2-4. Nombres y funciones de las imagenes de FreeBSD 6.X and 7.X

   3-1. Codigos de dispositivos de disco

   18-1. Convenciones para nombrar discos fisicos

   29-1. Cableado de una conexion de cable paralelo para redes

   29-2. Direcciones IPv6 reservadas

   Lista de figuras

   2-1. Ejemplo de resultado de prueba de dispositivos

   2-2. Menu de seleccion de pais

   2-3. Salir de Sysinstall

   2-4. Seleccion de <<Usage>> en el menu principal de sysinstall

   2-5. Seleccion del menu de documentacion

   2-6. El menu de documentacion de sysinstall

   2-7. Menu principal de sysinstall

   2-8. Menu de esquemas de teclado de sysinstall

   2-9. Menu principal de sysinstall

   2-10. Opciones de sysinstall

   2-11. Comenzar una instalacion estandar

   2-12. Elija en que unidad usar FDisk

   2-13. Un ejemplo de particionamiento tipico con FDisk

   2-14. Particion con FDisk usando el disco completo

   2-15. Menu de gestores de arranque de sysinstall

   2-16. Salir de la seleccion de unidad

   2-17. El editor Disklabel

   2-18. Editor Disklabel con valores por omision

   2-19. Liberar espacio para la particion raiz

   2-20. Edicion del tamano de la particion raiz

   2-21. Elegir el tipo de particion raiz

   2-22. Elegir el punto de montaje del sistema de ficheros raiz

   2-23. Editor Disklabel

   2-24. Eleccion de distribuciones

   2-25. Confirmar la eleccion de distribuciones

   2-26. Choose Installation Media

   2-27. Seleccion de un dispositivo Ethernet

   2-28. Configuracion de ed0

   2-29. Edicion de inetd.conf

   2-30. Edicion del mensaje de bienvenida de FTP

   2-31. Edicion de exports

   2-32. Opciones de configuracion de la consola del sistema

   2-33. Opciones del salvapantallas

   2-34. Retardo del salvapantallas

   2-35. Salida del menu de configuracion de la consola del sistema

   2-36. Eleccion de region

   2-37. Eleccion de pais

   2-38. Eleccion de zona horaria

   2-39. Elija el protocolo que usa el raton

   2-40. Ajuste del protocolo del raton

   2-41. Configuracion del puerto del raton

   2-42. Configuracion del puerto del raton

   2-43. Arranque del daemon del raton

   2-44. Prueba del daemon del raton

   2-45. Categorias de <<packages>>

   2-46. Seleccion de <<packages>>

   2-47. Instalacion de <<packages>>

   2-48. Confirmacion previa a la instalacion de <<packages>>

   2-49. Seleccion de <<Anadir un usuario>>

   2-50. Anadir la informacion del usuario

   2-51. Salir de la gestion de usuarios y grupos

   2-52. Salir de la instalacion

   2-53. Primer nivel de servicios de red

   2-54. Elegir el MTA del sistema

   2-55. Configuracion de Ntpdate

   2-56. Segundo nivel de configuracion de red

   20-1. Organizacion Concatenada

   20-2. Organizacion con "Striping"

   20-3. Organizacion en RAID-5

   20-4. Un Volumen Vinum Sencillo

   20-5. Un Volumen Vinum Replicado

   20-6. Un Volumen Vinum en "Striping"

   20-7. Un Volumen Vinum Replicado y en "Striping"

   Lista de ejemplos

   2-1. Uso de una particion sin cambiar nada

   2-2. Reducir una particion existente

   3-1. Ejemplo de nombres de disco, <<slice>> y particion

   3-2. Modelo conceptual de un disco

   4-1. Descarga de un paquete manualmente e instalacion en nuestro
   sistema

   12-1. Pantalla boot0

   12-2. Pantalla de boot2

   12-3. Una consola insegura en /etc/ttys

   13-1. Configuracion de adduser

   13-2. Eliminacion interactiva de cuenta con rmuser

   13-3. chpass interactivo ejecutado por el superusuario

   13-4. chpass interactivo ejecutado por un usuario normal

   13-5. Cambio de tu contrasena

   13-6. Cambio de la contrasena de otro usuario como superusuario

   13-7. Anadir un grupo usando pw(8)

   13-8. Anadir a alguien a un grupo usando pw(8)

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

   14-1. Uso de SSH para crear un tunel seguro para SMTP

   18-1. Utilizando dump a traves de ssh

   18-2. Uso de dump a traves de ssh con RSH configurada

   18-3. Un "script" para la creacion de discos flexibles de arranque

   18-4. Uso de vnconfig para montar una imagen de un sistema de
   ficheros bajo FreeBSD 4.X

   18-5. Creacion de una imagen nueva de un sistema de ficheros
   respaldado en un archivo con vnconfig

   18-6. Uso de mdconfig para montar una imagen de un sistema de
   ficheros en FreeBSD 5.X

   18-7. Creacion de un disco respaldado en fichero con mdconfig

   18-8. Configurar y montar un disco basado en un fichero con mdmfs

   18-9. Disco de memoria md en FreeBSD 4.X

   18-10. Creacion de un nuevo disco basado en memoria con mdconfig

   18-11. Creacion de un nuevo disco basado en memoria con mdmfs

   24-1. Agregando entradas de terminal a /etc/ttys

   27-1. Configuracion de la base de datos de acceso de sendmail

   27-2. Mail Aliases

   27-3. Ejemplo de asociacion de correo de dominio virtual

   29-1. Anclaje de una exportacion utilizando amd

   29-2. Sucursal o red domestica

   29-3. Oficina central u otra LAN

   29-4. Envio de una senal HANGUP a inetd

     --------------------------------------------------------------

                                Prefacio

A quien va dirigido este texto

   La primera seccion de este libro esta pensada para guiar a los
   recien llegados a FreeBSD durante el proceso de instalacion y
   presentarles los conceptos y convenciones que dan entidad a
   UNIX(R). Para sacar provecho de esta seccion lo unico que el
   lector necesitara son ganas de explorar y habilidad para ir
   interiorizando nuevos conceptos a medida que le van planteando.

   La siguiente seccion, la segunda, mucho mas extensa, es una
   referencia completa de todo tipo de temas de interes para
   administradores de sistemas FreeBSD. Es posible que alguno de esos
   capitulos requiera que previamente lea otros textos; si es el caso
   esto se anuncia en la sinopsis situada al principio de cada
   capitulo.

   Hay una lista de fuentes de informacion adicionales en el Capitulo
   31.

Cambios desde la segunda edicion

   Esta tercera edicion es la culminacion de mas de dos anos de
   trabajo de los miembros del FreeBSD Documentation Project. Estos
   son los cambios mas importantes que encontrara en esta nueva
   edicion:

     * Capitulo 11, configuracion y adaptacion del sistema, ha sido
       ampliado con nuevos datos sobre el sistema de gestion de
       energia y recursos ACPI, la utilidad del sistema cron y mas
       opciones de personalizacion del kernel.

     * Capitulo 14, seguridad, ha sido ampliado con informacion sobre
       redes privadas virtuales (VPN), listas de control de accesos
       al sistema de ficheros (mas conocidas por ACL) e informacion
       sobre avisos de seguridad.

     * Capitulo 16, Mandatory Access Control (MAC), es un capitulo
       nuevo. En el se expone que es MAC y de que forma puede
       utilizarse en FreeBSD como complemento de la seguridad del
       sistema.

     * Capitulo 18, almacenamiento, se ha ampliado con informacion
       sobre dispositivos USB de almacenamiento, instantaneas
       ("snapshots") de sistemas de ficheros, sistemas de ficheros
       basados en ficheros y en red, y particiones de disco cifradas.

     * Capitulo 20, Vinum, es un capitulo nuevo. Describe el uso de
       Vinum, un gestor de volumenes logicos que permite disponer de
       discos logicos independientes de dispositivo, asi como de
       RAID-0, RAID-1 y RAID-5 por software.

     * Se ha anadido una seccion de depuracion de problemas al
       Capitulo 25, PPP y SLIP.

     * Capitulo 27, correo electronico, ha sido ampliado con
       informacion sobre el uso de MTA alternativos, autentificacion
       SMTP, UUCP, fetchmail, procmail asi como otros temas avanzados
       relacionados con el correo.

     * Capitulo 28, servidores de red, es un capitulo nuevo. En el se
       incluye informacion sobre la configuracion de Apache HTTP
       Server, ftpd y como configurar Samba para su uso con clientes
       Microsoft(R) Windows(R). Ciertas partes de Capitulo 29,
       "networking" avanzado, se han trasladado a este capitulo para
       dar mas solidez al contenido.

     * Capitulo 29, "networking" avanzado, incluye en esta edicion
       nuevos datos sobre el uso de dispositivos Bluetooth(R) en
       FreeBSD, la configuracion de redes "wireless" y el
       "networking" ATM (Asynchronous Transfer Mode).

     * Se ha creado un glosario para disponer de una ubicacion
       centralizada donde encontrar definiciones de terminos tecnicos
       que se utilizan a lo largo del libro.

     * Las tablas e imagenes que aparecen en el libro han
       experimentado diversas mejoras est'ticas.

Cambios desde la primera edicion

   La segunda edicion fue la culminacion de mas de dos anos de
   trabajo de los miembros del FreeBSD Documentation Project. Estos
   son los principales cambios que encontrara en esta edicion:

     * Se ha creado un indice completo.

     * Todos los esquemas ASCII han sido reemplazados por diagramas
       graficos.

     * Se ha anadido una sinopsis estandar a cada capitulo donde se
       ofrece un breve sumario del contenido del capitulo y que se
       espera que sepa el lector para poder sacarle provecho.

     * Se ha reorganizado de forma logica el contenido en tres
       partes: "primeros pasos", "administracion del sistema " y
       "apendices".

     * El Capitulo 2 ("instalacion de FreeBSD") ha sido reescrito
       completamente e incluye gran cantidad de capturas de pantalla
       para facilitar su comprension a los nuevos usuarios.

     * El Capitulo 3 ("conceptos basicos de UNIX") se ha ampliado con
       mas informacion sobre procesos, daemons y senales.

     * El Capitulo 4 ("instalacion de aplicaciones") incluye
       informacion sobre la gestion de paquetes binarios.

     * El Capitulo 5, ("El sistema X Window") ha sido reescrito
       totalmente, con especial enfasis en el uso de modernas
       tecnologias de escritorio como KDE y GNOME en XFree86(TM) 4.X.

     * El Capitulo 12 ("El proceso de arranque de FreeBSD") ha sido
       ampliado.

     * El Capitulo 18 ("Almacenamiento") ha sido el fruto de refundir
       el contenido de lo eran dos capitulos sobre "discos" y "copias
       de seguridad". Pensamos que estos temas eran mas faciles de
       entender si se trataban en un mismo capitulo. Se ha anadido
       tambien una seccion sobre RAID (tanto hardware como software).

     * El Capitulo 24 ("communicaciones serie") ha sido reorganizado
       y actualizado completamente con informacion sobre FreeBSD 4.X
       y 5.X.

     * El Capitulo 25 ("PPP y SLIP") ha sido actualizado en gran
       parte.

     * Se han anadido muchas secciones nuevas al Capitulo 29
       ("Networking avanzado").

     * El Capitulo 27 ("correo electronico" incluye ahora mas
       informacion sobre la configuracion de sendmail.

     * El Capitulo 10 ("compatibilidad conLinux(R)") se ha ampliado
       con informacion sobre la instalacion de Oracle(R) y
       SAP(R) R/3(R).

     * En esta segunda edicion se incluyen tambien estos nuevos
       contenidos:

          * Configuracion y adaptacion del sistema (Capitulo 11).

          * Multimedia (Capitulo 7)

Como se organiza este libro

   Este libro se divide en cinco secciones logicamente distintas. La
   primera, primeros pasos, trata sobre la instalacion y el uso mas
   basico de FreeBSD. Esta pensada para que el lector los recorra en
   secuencialmente, aunque puede saltarse algunos si tratan sobre
   temas que le resulten familiares. La segunda seccion, Tareas
   comunes, esta dedicada a las caracteristicas de FreeBSD que suelen
   utilizarse con mas frecuencia. Esta seccion, asi como las
   siguientes, pueden leerse en cualquier orden. Cada capitulo
   comienza con una sinopsis sucinta en la que se describe el
   contenido del capitulo y que es lo que se espera que sepa el
   lector antes de leerlo. Esto se hace para dar ocasion al lector
   ocasional a que elija el capitulo que mas pueda interesarle. La
   tercera seccion, Administracion del sistema, trata sobre diversos
   aspectos de la administracion del sistema. La cuarta seccion,
   Redes y comunicaciones, esta dedicada al "networking" y temas
   relacionados con los servidores. La quinta seccion dispone de
   apendices con informacion de referencia.

   Capitulo 1, Presentacion

           Este capitulo, como su nombre indica, presenta FreeBSD al
           usuario. En el se cuenta la historia del Proyecto FreeBSD,
           sus objetivos y su modelo de desarrollo.

   Capitulo 2, Instalacion

           Guia al usuario a traves de un proceso completo de
           instalacion. Se explican tambien algunos aspectos
           avanzados como la instalacion a traves de una consola
           serie.

   Capitulo 3, Conceptos basicos de UNIX

           Se explican los comandos mas basicos y el funcionamiento
           del sistema operativo FreeBSD. Si ya se tiene experiencia
           con Linux u otro tipo de UNIX posiblemente sea este un
           capitulo que no deba leerse.

   Capitulo 4, Instalacion de aplicaciones

           Se explica la instalacion de software desarrollado por
           personas ajenas al proyecto, tanto mediante la innovadora
           "Coleccion de Ports" de FreeBSD como mediante paquetes
           binarios estandar ("packages").

   Capitulo 5, El sistema X Window

           Describe el sistema X Windows en general y su uso en
           FreeBSD en particular. Describe tambien entornos de
           escritorio de uso comun como KDE y GNOME.

   Capitulo 6, Aplicaciones de escritorio

           Se enumeran algunas aplicaciones de escritorio muy
           comunes, como navegadores web y suites ofimaticas, y como
           instalar estas aplicaciones en FreeBSD.

   Capitulo 7, Multimedia

           Trata sobre la configuracion la reproduccion de sonido y
           video en su sistema. Describe tambien algunas aplicaciones
           de sonido y video.

   Capitulo 8, Configuracion del kernel de FreeBSD

           Explica bajo que circunstancias tendra que configurar un
           nuevo kernel y facilita instrucciones detalladas para la
           configuracion, compilacion e instalacion de un kernel
           personalizado.

   Capitulo 9, Imprimir

           Describe la gestion de impresoras en FreeBSD, abarcando
           aspectos diversos como las paginas "banner", las cuentas
           de impresion asi como la configuracion inicial.

   Capitulo 10, Compatibilidad binaria con Linux

           Describe las caracteristicas de compatibilidad con Linux
           de FreeBSD. Incluye tambien instrucciones detalladas de
           instalacion de varias aplicaciones Linux muy populares,
           como Oracle, SAP R/3 y Mathematica(R).

   Capitulo 11, Configuracion y adaptacion del sistema

           Describe los parametros que los administradores de
           sistemas tienen a su alcance para hacer que FreeBSD rinda
           al maximo. Describe tambien los diversos ficheros de
           configuracion que se usan en FreeBSD y donde estan.

   Capitulo 12, El proceso de arranque en FreeBSD

           Describe el proceso de arranque de FreeBSD y explica como
           controlar este proceso mediante opciones de configuracion.

   Capitulo 13, Usuarios y administracion basica de cuentas

           Describe la creacion y gestion de cuentas de usuario.
           Trata tambien sobre la limitacion de recursos que puede
           aplicarse sobre los mismos, asi como otras tareas
           administrativas.

   Capitulo 14, Seguridad

           Describe las abudantes herramientas diferentes que pueden
           ayudar a que su sistema FreeBSD este y permanezca seguro.
           Entre ellas encontrara a Kerberos, IPsec y OpenSSH.

   Capitulo 15, Jaulas

           Describe el uso de jaulas en FreeBSD y el avance que este
           "framework" supone respecto al tradicional uso de chroot
           que se hacia en FreeBSD.

   Capitulo 16, Mandatory Access Control

           Explica que es Mandatory Access Control (MAC) y como puede
           usarse este mecanismo para hacer mas seguro FreeBSD

   Capitulo 17, Auditoria de eventos de seguridad

           Describe que es la auditoria de eventos en FreeBSD como
           instalarla y configurarla y como pueden inspeccionarse y
           monitorizarse dichas auditorias.

   Capitulo 18, Almacenamiento

           Describe como gestionar medios de almacenamiento y
           sistemas de ficheros en FreeBSD, tanto discos fisicos,
           arreglos RAID, medios opticos o en cinta, como discos en
           memoria y sistemas de ficheros en red.

   Capitulo 19, GEOM

           Trata sobre el "framework" "GEOM" de FreeBSD y como
           configurar con el alguno de los diversos niveles de RAID
           que admite.

   Capitulo 20, Vinum

           Describe como usar Vinum, un gestor de volumenes logicos
           que permite tanto el uso de discos logicos independientes
           de dispositivo, como RAID-0, RAID-1 y RAID-5 por software.

   Capitulo 21, Virtualizacion

           Describe los sistemas de virtualizacion disponibles en
           FreeBSD y como utilizarlos.

   Capitulo 22, Localizacion

           Describe el uso en FreeBSD de idiomas distintos del
           ingles. Trata tanto la localizacion del sistema como de
           las aplicaciones.

   Capitulo 23, Lo ultimo de lo ultimo

           Explica las diferencias existentes entre FreeBSD-STABLE,
           FreeBSD-CURRENT y las releases de FreeBSD. Describe
           tambien que tipos de usuario pueden beneficiarse de seguir
           el desarrollo continuo del sistema en su propia maquina y
           muestra el proceso a seguir.

   Capitulo 24, Comunicaciones serie

           Explica como conectar terminales serie y modems a su
           sistema FreeBSD tanto para conexiones entrantes como
           salientes.

   Capitulo 25, PPP y SLIP

           Describe como usar en FreeBSD PPP, SLIP o PPP sobre
           Ethernet para conexiones a sistemas remotos.

   Capitulo 27, Correo electronico

           Detalla los distintos elementos que componen un servidor
           de correo electronico y explica diversos aspectos
           sencillos de la configuracion del servidor de correo mas
           extendido: sendmail.

   Capitulo 28, Servidores de red

           En este capitulo encontrara instrucciones detalladas y
           ficheros de configuracion de ejemplo que le permitiran
           configurar su sistema FreeBSD como servidor NFS, servidor
           de nombres, servidor NIS o de sincronizacion de hora.

   Capitulo 26, Cortafuegos

           Explica la filosofia que sustenta los cortafuegos por
           software y facilita informacion detallada sobre la
           configuracion de los distintos cortafuegos disponibles en
           FreeBSD.

   Capitulo 29, "Networking" avanzado

           Describe diversos temas relacionados con el "networking",
           desde compartir la conexion a Internet con otras maquinas
           de su LAN a diversos aspectos avanzados del encaminamiento
           de trafico, pasando por las redes "wireless", Bluetooth,
           ATM, IPv6 y mucho mas.

   Capitulo 30, Como conseguir FreeBSD

           Enumera las diferentes fuentes desde la que puede
           conseguirse FreeBSD en CDROM o DVD, asi como los numerosos
           sitios de Internet desde los que puede descargar e
           instalar FreeBSD.

   Capitulo 31, Bibliografia

           Este libro toca tantos temas que es muy posible que el
           lector se quede a falta de una explicacion mas detallada.
           En la bibliografia muchos libros estupendos relacionados
           con el contenido de este texto.

   Apendice A, Recursos en Internet

           Describe los abundantes foros de que disponen los usuarios
           de FreeBSD para enviar preguntas y participar en
           conversaciones tecnicas sobre FreeBSD.

   Capitulo 32, PGP Keys

           Lista las claves publicas PGP de varios desarrolladores de
           FreeBSD.

Convenciones usadas en este libro

   Con el animo de mantener la consistencia y facilitar la lectura
   del texto se siguen varias convenciones a lo largo del libro.

  Convenciones tipograficas

   Cursiva

           Se usa un tipo de letracursiva cuando se citan nombres de
           fichero, URL, texto en el que se quiere hacer enfasis y
           cuando un termino tecnico aparece por primera vez en el
           texto.

   Tipografia de maquina de escribir

           Se usa un tipo de letra de maquina de escribir cuando se
           muestran mensajes de error, comandos, variables de
           entorno, nombres de "ports", nombres de maquina, nombres
           de usuario o de grupo, nombres de dispositivo, variables y
           cuando

           Se usa un tipo de letra monospaced cuando se muestran
           mensajes de error, comandos, variables de entorno, nombres
           de "ports", nombres de maquina, nombres de usuario o de
           grupo, nombres de dispositivo, variables y cuando se
           muestran fragmentos de codigo.

   Negrita

           Se usa un tipo de letra negrita en el nombre de
           aplicaciones, comandos y cuando se muestran claves.

  Datos que introduce el usuario

   Las claves se muestran en negrita para distinguirlas de cualquier
   otro texto. Las combinaciones de teclas que implican que sean
   pulsadas simultaneamente se muestran con el simbolo `+' entre una
   y otra, como en:

   Ctrl+Alt+Supr

   Esto significa que el usuario debe pulsar las teclas Ctrl, Ctrl,
   Alt y Supr al mismo tiempo.

   Las teclas que deben pulsarse secuencialmente se separan con
   comas, como en este ejemplo:

   Ctrl+X, Ctrl+S

   Esto significa que el usuario debe pulsar simultaneamente las
   teclas Ctrl y X y despues pulsar simultaneamente Ctrl y S.

  Ejemplos

   Un comienzo como E:\> indica un ejemplo de comando de MS-DOS(R). A
   menos que se especifique otra cosa, estos comandos deben
   ejecutarse en una terminal "Command Prompt" de un sistema
   Microsoft Windows moderno.

 E:\> tools\fdimage floppies\kern.flp A:

   Si hay un # indica que el comando debe ejecutarse como
   superusuario en FreeBSD. Puede acceder al sistema como root y
   ejecutar el comando o bien con su usuario habitual y utilizar
   su(1) para disponer de privilegios de superusuario.

 # dd if=kern.flp of=/dev/fd0

   Si el ejemplo comienza con un % indica que el comando puede
   ejecutarse en una cuenta de usuario normal. Salvo que se indique
   otra cosa se usa la sintaxis de C-shell para asignar valores a
   variables de entorno u otros comandos.

 % top

Agradecimientos

   Este libro representa el esfuerzo de muchos cientos de personas
   del mundo entero. Tanto si fue en forma de correcion de errores de
   contenido como gramaticales, o bien fue un capitulo entero lo que
   enviaron, toda contribucion ha sido muy valiosa.

   Varias companias han colaborado en el desarrollo de este documento
   pagando a tiempo completo a varios autores, financiando la
   publicacion, etc. En especial BSDi (posteriormente adquirida por
   Wind River Systems) pagaron a varios miembros del FreeBSD
   Documentation Project por trabajar en la mejora lo que fue la
   primera edicion de este libro, que aparecio en marzo de 2000 (ISBN
   1-57176-241-8). Ademas de esto, Wind River Systems aporto el
   dinero para que otros autores pudieran realizar gran cantidad de
   mejoras en la estructura de creacion de material listo para
   impresion y para pudieran anadir nuevos capitulos. Este trabajo
   culmino con la publicacion de la segunda edicion impresa en
   noviembre de 2001 (ISBN 1-57176-303-1). En 2003 y 2004 FreeBSD
   Mall, Inc, pago a varios autores para que se dedicaran a lo que
   sera la tercera edicion.

                           I. Primeros pasos

   Esta parte del manual de FreeBSD es para usuarios y
   administradores nuevos en FreeBSD. El cometido de estos capitulos
   es:

     * Ofrecer una introduccion a FreeBSD.

     * Guiar a traves de una instalacion de FreeBSD.

     * Explicar conceptos basica de Unix.

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

     * Presentar una introduccion al manejo de X Window, el sistema
       de ventanas de UNIX, y detallar como configurar un entorno de
       escritorio mas productivo.

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

   Tabla de contenidos

   1. Introduccion

   2. Instalacion de FreeBSD

   3. Conceptos basicos de Unix

   4. Instalacion de aplicaciones: <<packages>> y ports

   5. El sistema X Window

     --------------------------------------------------------------

                        Capitulo 1. Introduccion

   Reesctructurado, reorganizado y con algunas partes reescritas por
   Jim Mock.

1.1. Sinopsis

   Gracias por su interes en FreeBSD. El siguiente capitulo trata
   varios temas relativos al Proyecto FreeBSD, como su historia,
   objetivos, modelo de desarrollo, etc.

   Despues de leer este capitulo sabra:

     * Que relacion guarda FreeBSD con otros sistemas operativos.

     * La historia del Proyecto FreeBSD.

     * Los objetivos del Proyecto FreeBSD.

     * Los fundamentos del modelo de desarrollo de codigo abierto de
       FreeBSD.

     * Y por supuesto: de donde procede el nombre "FreeBSD".

     --------------------------------------------------------------

1.2. Bienvenido a FreeBSD

   FreeBSD es un sistema operativo basado en 4.4BSD-Lite para
   ordenadores Intel (x86 e Itanium(R)), AMD64, Alpha(TM) y Sun
   UltraSPARC(R). Se esta trabajando tambien en versiones para otras
   arquitecturas. Tambien puede leer sobre la historia de FreeBSD, o
   sobre la distribucion actual. Si cree que puede ayudar al proyecto
   de algun modo (desarrollando codigo, donando hardware, dinero,
   etc) consulte el articulo Contribuir a FreeBSD.

     --------------------------------------------------------------

  1.2.1. ?Que puede hacer FreeBSD?

   FreeBSD tiene muchas caracteristicas notables. Algunas de ellas
   son:

     * Multitarea expropiativa con prioridades dinamicamente
       ajustadas para asegurar que distintas aplicaciones y usuarios
       compartan los recursos del sistema de un modo equitativo,
       incluso bajo la mayor de las cargas.

     * Servicios multiusuario que permiten a mucha gente usar un
       sistema FreeBSD simultaneamente para distintas cosas. Esto
       significa, por ejemplo, que los perifericos del sistema como
       impresoras y dispositivos de cinta son compartidos
       adecuadamente por varios usuarios del sistema o la red, y que
       pueden establecerse limites sobre recursos concretos para
       usuarios o grupos de usuarios, protegiendo los recursos
       criticos del sistema de un uso abusivo.

     * Conexion de redes TCP/IP muy robusta, con soporte para
       estandares industriales como SCTP, DHCP, NFS, NIS, PPP, SLIP,
       IPSec e IPv6. Esto quiere decir que su sistema FreeBSD puede
       interactuar facilmente con otros sistemas y hacer de servidor
       en una empresa, proporcionando servicios clave como NFS
       (acceso a ficheros remotos) y servicios de correo electronico,
       o proporcinando la presencia en Internet de su organizacion
       mediante WWW, FTP, servicios de encaminamiento y cortafuegos.

     * La proteccion de memoria garantiza que las aplicaciones (o los
       usuarios) no se estorben los unos a los otros. Un error
       catastrofico en una aplicacion no afecta al resto.

     * FreeBSD es un sistema operativo de 32-bits (de 64-bits en
       Alpha, Itanium, AMD64, y UltraSPARC) y fue disenado como tal
       desde el principio.

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

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

     * Hay en Internet miles y miles de aplicaciones listas para su
       uso. FreeBSD es compatible a nivel de codigo fuente con la
       mayoria de sistemas UNIX comerciales; por tanto la mayoria de
       aplicaciones requieren poco o ningun cambio para compilar en
       FreeBSD.

     * En Internet hay miles de aplicaciones faciles de portar. El
       codigo fuente de FreeBSD es compatible con el de los sistemas
       UNIX comerciales mas populares y por ello la mayoria de las
       aplicaciones tan solo necesitan pocos cambios, si es que
       necesitan alguno, para compilar.

     * El diseno de la memoria virtual con paginacion bajo demanda y
       de la "cache unificada de VM/buffer" satisface a aplicaciones
       que requieren grandes cantidades de memoria de forma eficiente
       aun dando respuestas interactivas a otros usuarios.

     * Soporte para SMP en maquinas con multiples CPUs.

     * Una coleccion completa de herramientas de desarrollo en C,
       C++, Fortran, y Perl. Podra encontrar muchos otros lenguajes
       avanzados para investigacion y desarrollo tanto en la la
       Coleccion de Ports como en forma de packace.

     * Disponer del codigo fuente del sistema entero significa contar
       con el mayor nivel de control posible sobre su entorno. ?Para
       que atarse a una solucion propietaria a merced de un
       fabricante cuando puede tener un verdadero sistema abierto?

     * Documentacion exhaustiva en linea.

     * !Y mucho mas!

   FreeBSD esta basado en la version 4.4BSD-Lite del Computer Systems
   Research Group (CSRG) de la Universidad de California en Berkeley,
   y continua la distinguida tradicion de desarrollo de sistemas BSD.
   Ademas del excelente trabajo del CSRG, el Proyecto FreeBSD ha
   invertido miles de horas en ajustar el sistema para conseguir un
   rendimiento y una fiabilidad maximas en situaciones de carga
   reales. Mientras que muchos de los gigantes comerciales se
   esfuerzan en dotar a los sistemas operativos para PC de esas
   caracteristicas, rendimiento y fiabilidad, FreeBSD puede
   ofrecerlas !ya!

   Los usos que pueda darle a FreeBSD se ven limitados tan solo por
   su imaginacion. Desde el desarrollo de programas hasta la
   automatizacion de fabricas, desde control de inventarios hasta
   correccion de azimut de antenas de satelites remotos; Si puede
   hacerse con un UNIX comercial lo mas seguro es que tambien pueda
   llevarse a cabo con FreeBSD. FreeBSD tambien hace buen uso de las
   literalmente miles de aplicaciones de alta calidad que se
   desarrollan en centros de investigacion y universidades de todo el
   mundo, frecuentemente disponibles por poco o ningun coste. Tambien
   existen aplicaciones comerciales, cuyo numero aumenta cada dia.

   Dado que el codigo fuente de FreeBSD esta disponible para todo el
   mundo el sistema puede personalizarse en un grado nunca visto para
   aplicaciones o proyectos especiales, y de maneras generalmente
   imposibles con los sistemas operativos de la mayoria de los
   fabricantes comerciales. Aqui damos tan solo una muestra de
   aplicaciones en las que se esta usando actualmente FreeBSD:

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

          * Servidores FTP

          * Servidores web (estandares o seguros [SSL])

          * Cortafuegos y pasarelas NAT ("enmascaramiento IP").

          * Servidores de correo electronico

          * USENET y BBSs

          * y muchos mas.

       Con FreeBSD puede empezar facilmente con un pequeno y
       economico PC de tipo 386 e ir actualizando su equipo hasta un
       tetraprocesador Xeon con almacenamiento RAID a medida que su
       proyecto crezca.

     * Educacion: ?Es estudiante de informatica o de algun campo
       relacionado con la ingenieria? No hay mejor modo de estudiar
       sistemas operativos, arquitectura de computadores y redes que
       la experiencia a bajo nivel que FreeBSD puede aportar. Para
       aquellos cuyo principal interes en los ordenadores no es otro
       que el de poder realizar su trabajo existe una serie de
       paquetes gratuitos de CAD, matematicas y diseno grafico que
       hacen de FreeBSD un sistema verdaderamente util.

     * Investigacion: Encontrandose disponible el codigo fuente del
       sistema entero FreeBSD es una excelente plataforma para la
       investigacion en sistemas operativos y otras ramas de la
       informatica. El hecho de que FreeBSD este disponible
       gratuitamente hace posible que grupos remotos puedan colaborar
       con ideas o compartan desarrollos sin tener que preocuparse de
       acuerdos de licencias especiales o de limitaciones acerca de
       lo que puede discutirse en foros publicos.

     * Redes: ?Necesita un nuevo "router"? ?Un servidor de nombres
       (DNS)? ?Un cortafuegos que haga mas segura su red interna?
       FreeBSD puede convertir ese PC 386 o 486 que tiene arrinconado
       en un "router" avanzado con sofisticadas capacidades de
       filtrado de paquetes.

     * Estacion de trabajo X: FreeBSD es una magnifica eleccion como
       terminal X de bajo coste gracias al servidor libre X11. A
       diferencia de las terminales X FreeBSD permite ejecutar muchas
       aplicaciones en local si asi se quiere, aligerando de este
       modo la carga soportada por el servidor central. FreeBSD puede
       incluso arrancar "sin disco", permitiendo que las estaciones
       sean aun mas economicas y faciles de administrar.

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

   Puede conseguir FreeBSD tanto en forma de codigo fuente como
   binaria por FTP anonimo o en CDROM. Por favor, consulte el
   Capitulo 30 para mas informacion.

     --------------------------------------------------------------

  1.2.2. ?Quien usa FreeBSD?

   Algunos de los mayores sitios web de Internet utilizan FreeBSD; he
   aqui algunos de ellos:

     * Yahoo!

     * Apache

     * Blue Mountain Arts

     * Pair Networks

     * Sony Japon

     * Netcraft

     * Weathernews

     * Supervalu

     * TELEHOUSE America

     * Sophos Anti-Virus

     * JMA Wired

   y muchos mas.

     --------------------------------------------------------------

1.3. Acerca del Proyecto FreeBSD

   En la siguiente seccion se explican ciertos aspectos basicos del
   Proyecto, una breve historia, sus objetivos y el modelo de
   desarrollo del mismo.

     --------------------------------------------------------------

  1.3.1. Breve historia de FreeBSD

   Elaborado por Jordan Hubbard.

   La genesis del proyecto FreeBSD se remonta a comienzos de 1993, en
   parte como una extension del "Unofficial 386BSD Patchkit" debida a
   los tres ultimos coordinadores del patchkit: Nate Williams, Rod
   Grimes y yo mismo.

   Nuestro objetivo original era producir una instantanea de 386BSD
   intermedia para arreglar una serie de problemas que no se podian
   solventar con uno de nuestros parches. Quizas haya quien recuerde
   que el primer nombre del proyecto fue "386BSD 0.5" o "386BSD
   Interim" debido a esto.

   386BSD era el sistema operativo de Bill Jolitz, que hasta ese
   punto habia estado sufriendo severamente las consecuencias de
   practicamente un ano que mas valdria olvidar. A medida que el
   "patchkit" se iba haciendo haciendo mas incomodo cada dia que
   pasaba, asi que acordamos ayudar a Bill con una instantanea del
   sistema. Estos planes se vieron bruscamente interrumpidos cuando
   Bill Jolitz decidio repentinamente retirar su aprobacion al
   proyecto sin dejar ninguna indicacion clara de que debia hacerse a
   continuacion.

   No tardamos mucho en decidir que el objetivo seguia valiendo la
   pena, aun sin el soporte de Bill, asi que adoptamos el nombre de
   "FreeBSD", una idea de David Greenman. Nuestros objetivos
   iniciales se fijaron tras consultar a los usuarios del sistema y
   cuando quedo claro que el proyecto estaba en marcha y que podia
   llegar a ser una realidad contacte con Walnut Creek CDROM con idea
   de mejorar los canales de distribucion de FreeBSD y hacer m's
   facil llegar a aquellas personas que no tenian la suerte de tener
   acceso a Internet. Walnut Creek CDROM no solo nos ayudo con la
   idea de distribuir FreeBSD en CD; tambien facilito al Proyecto una
   maquina en la que trabajar y una conexion rapida a Internet. Sin
   la fe casi sin precedentes que tuvo Walnut Creek CDROM en lo que
   era en aquel momento un proyecto completamente desconocido, es
   bastante improbable que FreeBSD hubiera logrado tanto y tan rapido
   como ha logrado hasta el dia de hoy.

   La primera distribucion 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 de trabajos proveniente de la Free
   Software Foundation. Fue un logro bastante apreciable para una
   primera version; pronto le siguio FreeBSD 1.1 en mayo de 1994, que
   tuvo un gran exito.

   Por entonces se formaron unos inesperados nubarrones en el
   horizonte ya que Novell y la Universidad de Berkeley resolvieron
   el largo juicio acerca del estatus legal de la cinta de Berkeley
   Net/2. Una condicion del acuerdo fue la concesion por parte de
   Berkeley de que una gran parte de Net/2 era codigo "gravado" y
   propiedad de Novell, quien a su vez lo habia adquirido de AT&T
   anteriormente. Berkeley obtuvo a cambio de Novell el "beneplacito"
   para que 4.4BSD-Lite, cuando saliera, fuera declarado como "no
   gravado" y se instara a los usuarios de Net/2 a cambiar. Esto
   repercutio sobre el Proyecto FreeBSD, a quienes se dio hasta julio
   de 1994 para dejar de sacar su producto basado en Net/2. Bajo los
   terminos de aquel acuerdo se permitia al Proyecto sacar una ultima
   version antes de la fecha limite: esa version fue FreeBSD 1.1.5.1.

   FreeBSD tuvo entonces que acometer la ardua tarea de
   (literalmente) reinventarse a si mismo a partir de partes nuevas y
   bastante incompletas de 4.4BSD-Lite. Las versiones "Lite" eran
   ligeras en parte porque el CSRG de Berkeley quito grandes partes
   del codigo necesario para construir un sistema que pudiera
   arrancar (debido a diversos requisitos legales) y porque la
   version del 4.4 para Intel era muy incompleta. Hasta noviembre de
   1994 el proyecto al fin realizo esa transicion; aparecio FreeBSD
   2.0 en la red y (a finales de diciembre) en CDROM. A pesar de no
   estar suficientemente pulida esta distribucion fue un exito
   significativo, al cual siguio el mas robusto y facil de instalar
   FreeBSD 2.0.5; era junio de 1995.

   Sacamos FreeBSD 2.1.5 en Agosto de 1996; parecio ser
   suficientemente popular entre ISPs y otras comunidades comerciales
   como para que mereciera otra version de la rama 2.1-STABLE. Fue
   FreeBSD 2.1.7.1, publicada en febrero de 1997, que marco el final
   de la linea principal de desarrollo en 2-1.STABLE. Una vez en
   puesta en mantenimiento, en esa rama (RELENG_2_1_0) solo se harian
   ya mejoras en seguridad y se corregirian errores criticos.

   FreeBSD se ramifico desde la linea principal de desarrollo
   ("-CURRENT") en noviembre de 1996 como la rama RELENG_2_2, y la
   primera version completa (2.2.1) salio en abril de 1997. Se
   hicieron mas versiones de la rama 2.2 en verano y otono de 1997,
   la ultima de las cuales (2.2.8) aparecio en noviembre de 1998. La
   primera version 3.0 oficial salio en octubre de 1998 y marco el
   inicio del fin de la rama 2.2.

   El arbol se ramifico de nuevo el 20 de Enero de 1999, dando lugar
   a las ramas 4.0-CURRENT y 3.X-STABLE. A partir de la 3.X-STABLE
   salio 3.1 el 15 de febrero de 1999, 3.2 el 15 de mayo de 1999, 3.3
   el 16 de septiembre de 1999, 3.4 el 20 de diciembre de 1999 y 3.5
   el 24 de junio de 2000. Pocos dias despues de esta aparecio una
   actualizacion menor, la 3.5.1, que incorporaba parches de
   seguridad de ultima hora para Kerberos. Esa fue la ultima version
   de la rama 3.X.

   Hubo otra ramificacion el 13 de Marzo de 2000 que dio lugar a la
   rama 4.X-STABLE. Ha habido varias versiones de la misma desde
   entonces: 4.0-RELEASE salio en marzo de 2000 y la ultima version
   de la rama, 4.11-RELEASE, aparecio en enero de 2005.

   La largamente esperada 5.0-RELEASE se anuncio el 19 de enero de
   2003, culminando casi tres anos de trabajo; esta version situo a
   FreeBSD en el escenario del multiproceso avanzado y el soporte de
   hilos para las aplicaciones, e introdujo soporte para las
   plataformas UltraSPARC y ia64. Siguio a esta la version 5.1
   lanzada en Junio de 2003. La ultima version de 5.X como la rama
   -CURRENT fue 5.2.1-RELEASE, que salio en febrero de 2004.

   La rama RELENG_5, creada en agosto de 2004, desemboco en
   5.3-RELEASE, que marco el inicio de la rama de versiones 5-STABLE.
   La version 5.5-RELEASE mas reciente aparecio en mayo de 2006. No
   apareceran mas versiones a partir de la rama RELENG_5.

   El arbol se dividio de nuevo en julio de 2005, en esta ocasion
   para crear RELENG_6. 6.0-RELEASE, la primera version de la rama
   6.X, aparecio en noviembre de 2005. 7.4-RELEASE aparecio en Jan
   2011. Iran apareciendo mas versiones a partir de la rama RELENG_6.

   La rama RELENG_7

     --------------------------------------------------------------

  1.3.2. Objetivos del Proyecto FreeBSD

   Texto original de Jordan Hubbard.

   Los objetivos del Proyecto FreeBSD son producir software que pueda
   usarse con cualquier proposito y sin ningun tipo de restriccion.
   Muchos de nosotros participamos de forma significativa en el
   codigo (y en el proyecto) y ciertamente no nos importaria recibir
   una pequena compensacion economica de vez en cuando, pero no vamos
   a insistir en ello. Creemos que nuestra "mision" mas importante y
   primordial es facilitar el acceso al codigo a cualquiera, para lo
   que quiera usarlo y de forma que se use tanto y para sacarle tanto
   provecho para sea posible. Creo que este es uno de los objetivos
   mas fundamentales del software libre y algo que nosotros apoyamos
   con entusiasmo.

   El codigo fuente de nuestro arbol que se halla bajo la GNU General
   Public License (GPL) o la Library General Public License (LGPL)
   viene con algunas restricciones mas, si bien para garantizar
   acceso al mismo, y no al contrario como es lo habitual. Debido a
   las complicaciones adicionales que pueden surgir en el uso
   comercial de software con licencia GPL preferimos que el software
   que incluyamos en el arbol venga bajo la licencia BSD, menos
   restrictiva, siempre y cuando sea una opcion razonable.

     --------------------------------------------------------------

  1.3.3. El modelo de desarrollo de FreeBSD

   Texto de Satoshi Asami.

   El desarrollo de FreeBSD es un proceso muy abierto y flexible:
   FreeBSD esta literalmente compuesto de partes hechas por
   centenares de personas de todo el mundo, como puede verse en este
   texto. la infraestructura de desarrollo del proyecto FreeBSD
   permite a estos cientos de desarrolladores trabajar a traves de
   Internet. Estamos buscando constantemente de nuevos
   desarrolladores e ideas. Las personas interesadas en vincularse
   mas al proyecto tienen que ponerse en contacto con nosotros en la
   lista de correo de discusiones tecnicas en FreeBSD. La lista de
   anuncios importantes del Proyecto FreeBSD esta a disposicion de
   quienes deseen dar a conocer a otros usuarios de FreeBSD grandes
   areas de trabajo.

   Veamos unas cuantas cosas utiles sobre el Proyecto FreeBSD y su
   proceso de desarrollo, ya sea trabajando de forma independiente o
   en estrecha cooperacion:

   Los repositorios SVN y CVS

           El arbol central de codigo de FreeBSD se ha mantenido
           mediante CVS (Concurrent Versions System, o sistema
           concurrente de versiones), una herramienta de control de
           codigo totalmente libre que forma parte de FreeBSD. En
           junio de 2008 el Proyecto adopto SVN (Subversion). La
           necesidad de un cambio como este venia de largo a medida
           que las limitaciones tecnicas que el uso de CVS imponia se
           iban haciendo mas y mas obvias con la rapida expansion del
           arbol de codigo y de la cantidad de historial de cambios
           que hay que almacenar y gestionar. Aunque el repositorio
           principal use SVN las aplicaciones del lado del cliente
           como CVSup y csup, que dependen de la infraestructura
           anterior basada en CVS, siguen funcionando normalmente;
           los cambios que se hacen en el repositorio SVN se van
           replicando en el repositorio CVS con este fin. Actualmente
           (octubre 2008) solamente el arbol central de codigo usa
           SVN. Los repositorios de documentacion, WWW y Ports siguen
           usando still using CVS. El repositorio primario esta
           alojado en una maquina en Santa Clara (California, EEUU),
           que constituye el original del que todas las replicas (a
           las que llamamos a veces "mirrors") son copias exactas
           actualizadas cada muy poco tiempo. El arbol SVN, que
           contiene tambien los arboles -CURRENT y -STABLE, puede
           replicarse muy facilmente en local en su maquina. Consulte
           la seccion Sincronizacion del arbol de codigo para mas
           informacion.

   La lista de committers

           Los committers son la gente que tienen permisos de
           escritura en el los fuentes de FreeBSD (el termino
           "committer" viene de la orden commit de cvs(1), que sirve
           para hacer cambios en el repositorio CVS). La mejor manera
           de enviar aportaciones para que sean revisadas por los
           committers es usar send-pr(1). Si le parece que si
           pareciera que algo va mal en el sistema tambien puede
           enviar correo electronico a la lista de correo para
           'committers' de FreeBSD.

   El Core Team de FreeBSD

           El Core Team de FreeBSD seria el equivalente a una junta
           directiva si el Proyecto FreeBSD fuese una compania. La
           tarea principal del Core Team es la de garantizar que el
           Proyecto como un todo tenga salud y se mueva en las
           direcciones adecuadas. Otra de sus funciones es invitar a
           desarrolladores comprometidos y responsables a que se unan
           a nuestro equipo, ademas de reclutar nuevos miembros del
           Core Team cuando alguno se va. El Core Team actual fue
           elegido entre un conjunto de candidatos committers en
           julio de 2008. Se celebran elecciones cada dos anos.

           Algunos miembros del Core Team tienen tambien areas
           especificas de responsabilidad, pues se encargan de
           garantizar que grandes secciones del sistema funcionen
           segun lo previsto. Hay una lista completa de
           desarrolladores de FreeBSD con sus areas de
           responsabilidad en la lista de colaboradores. .

             Nota: La mayoria de los miembros del Core Team trabaja
             de forma altruista en el desarrollo de FreeBSD y no
             reciben beneficio economico del Proyecto; es por esto
             que "compromiso" no debe confundirse con "soporte
             garantizado". La anterior analogia de la "junta
             directiva" en realidad no es del todo exacta; quiza
             fuera mas acertado decir que esa es la gente que dedica
             su vida a FreeBSD en contra de lo que les aconseja su
             propio sentido comun.

   Contribuidores externos

           Por ultimo, y no por ello menos importante, el mayor grupo
           de desarrolladores esta formado por los mismos usuarios,
           quienes constantemente nos aportan comentarios y
           correccion de errores. La mejor manera de seguir de cerca
           el desarrollo (al estilo descentralizado de FreeBSD) es
           suscribirse a la lista de correo de discusiones tecnicas
           en FreeBSD, que es donde se habla de este tipo de cosas.
           Consulte el Apendice A si necesita mas informacion sobre
           las diferentes listas de correo de FreeBSD.

           La lista de colaboradores es larga y no para de crecer.
           ?Por que no apuntarse y hacer algo en FreeBSD hoy mismo?

           Aportar codigo no es la unica manera de ayudar al
           proyecto; hay una lista completa de tareas pendientes en
           el sitio web del Proyecto FreeBSD.

   En resumen, nuestro modelo de desarrollo esta organizado como un
   conjunto de circulos concentricos. El modelo centralizado esta
   disenado pensando el la comodidad de los "usuarios" de FreeBSD,
   que asi tienen un modo sencillo de estar al dia con una base de
   codigo central y por supuesto no para excluir a quien quiera
   ayudar. Nuestro afan es ofrecer un sistema operativo estable con
   un gran conjunto de aplicaciones coherentes que los usuarios
   puedan instalar y usar facilmente (y este modelo esta dando buenos
   resultados)

   Lo unico que pedimos a quienes quieran unirse a nosotros como
   desarrolladores de FreeBSD es la misma dedicacion que los
   integrantes actuales tienen.

     --------------------------------------------------------------

  1.3.4. En que consiste el FreeBSD que distribuimos

   FreeBSD es un sistema operativo libre y gratuito que se distribuye
   con el codigo fuente integro. Esta basado en 4.4BSD-Lite y esta
   disenado para funcionar en sistemas Intel i386(TM), i486(TM),
   Pentium(R), Pentium Pro, Celeron(R), Pentium II, Pentium III,
   Pentium III, Pentium4 (o compatible), Xeon(TM), DEC Alpha y
   sistemas basados en SUN UltraSPARC. Esta basado principalmente en
   software del grupo CSRG de la Universidad de Berkeley
   (California), y tiene mejoras importadas de NetBSD, OpenBSD,
   386BSD y codigo creado al amparo de la Free Software Foundation.

   Desde la version 2.0 de FreeBSD de finales del 94 el rendimiento,
   conjunto de funcionalidades, y estabilidad del sistema han
   mejorado drasticamente. El ultimo cambio consiste en un rediseno
   del sistema de memoria virtual con una cache unificada de
   VM/buffer que no solo aumenta el rendimiento sino que reduce el
   consumo de memoria de FreeBSD, haciendo que una configuracion de 5
   MB sea un minimo mas aceptable. Otras mejoras incluyen soporte
   completo para clientes y servidores NIS, soporte para
   transacciones TCP, llamada bajo demanda PPP, soporte para DHCP
   integrado, un subsistema SCSI mejorado, soporte para RDSI (ISDN),
   soporte para ATM, FDDI, adaptadores Fast y Gigabit Ethernet (1000
   Mbit), soporte mejorado para los ultimos controladores Adaptec y
   cientos de correcciones de errores.

   Ademas de la distribucion base FreeBSD ofrece una coleccion de
   software con miles de programas de uso comun. En el momento de
   escribir esto hay unos 20,000 "Ports" La lista de Ports comprende
   desde servidores HTTP (WWW), juegos, lenguajes de programacion,
   editores, y practicamente cualquier cosa. La coleccion de Ports
   completa requiere un espacio de aproximadamente 417 MB, todos
   ellos expresados como "deltas" de sus fuentes originales. Esto
   hace que nos sea mucho mas facil actualizar Ports y reduce
   notablemente el espacio en disco que necesitaba la anterior
   Coleccion de Ports 1.0. Para compilar un port uno simplemente se
   situa bajo el directorio del programa que desea instalar, escribe
   make install y deja que el sistema se encargue del resto. La
   distribucion original completa de cada port que compile se
   descargara dinamicamente de un CDROM o un sitio FTP, de modo que
   solo necesita el espacio necesario para compilar los ports que
   quiera. La mayoria de los ports tambien estan precompilados como
   "packages", que quienes no quieran compilar Ports pueden instalar
   con una simple orden: pkg_add. En el Capitulo 4 tiene mas
   informacion sobre los "packages" y Ports.

   Algunos documentos que pueden ser de ayuda en el proceso de
   instalacion y al utilizar FreeBSD pueden tambien encontrarse en

   En el directorio /usr/share/doc de cualquier maquina con una
   version reciente de FreeBSD encontrara varios documentos que
   pueden serle de ayuda en el proceso de instalacion o al usar
   FreeBSD. Para poder consultarlos utilice cualquier navegador para
   seguir estos enlaces:

   El Handbook de FreeBSD

           /usr/share/doc/handbook/index.html

   Las FAQ de FreeBSD

           /usr/share/doc/faq/index.html

   Tambien puede ver la copia original (y mas frecuentemente
   actualizada) en http://www.FreeBSD.org/.

     --------------------------------------------------------------

                   Capitulo 2. Instalacion de FreeBSD

   Reestructurado, reorganizado y con algunas partes reescritas por
   Jim Mock. El recorrido por sysinstall, las capturas de pantalla y
   el texto original son obra de Randy Pratt.

2.1. Sinopsis

   FreeBSD dispone de un programa en modo texto muy facil de usar
   llamado sysinstall. Es el programa de instalacion por omision en
   FreeBSD, pero quien decida distribuir FreeBSD tiene todo el
   derecho de facilitar un sistema de instalacion propio si asi lo
   desea. Este capitulo trata sobre como usar sysinstall para
   instalar FreeBSD

   Tras leer este capitulo sabra usted:

     * Como crear los discos de instalacion de FreeBSD

     * Como interpreta (y subdivide) FreeBSD sus discos duros.

     * Como arrancar sysinstall.

     * Que preguntas le hara sysinstall, que significan y como
       responderlas.

   Antes de leer este capitulo deberia usted:

     * Leer la lista de hardware soportado que se suministra con la
       con la version de FreeBSD que va a instalar y verificar que su
       hardware esta en dicha lista.

     Nota: En general estas instrucciones de instalacion han sido
     escritas para computadoras de arquitectura i386 (<<PC
     compatible>>). En algunos puntos concretos se daran
     instrucciones especificas para otras plataformas (por ejemplo
     Alpha). A pesar de que esta guia se intenta mantener todo lo al
     dia que es posible puede que se encuentre con pequenas
     diferencias entre el programa de instalacion y lo que aqui se le
     muestra. Le sugerimos que use este capitulo como una guia
     general mas que como un manual literal de instalacion.

     --------------------------------------------------------------

2.2. Requisitos de hardware

  2.2.1. Configuracion minima

   La configuracion minima para instalar FreeBSD varia segun la
   version de FreeBSD y la arquitectura de hardware.

   Tiene informacion sobre la confuracion minima en las Notas de
   Instalacion que encontrara en la seccion de Informacion de
   Releases del sitio web de FreeBSD. En la siguiente seccion se
   facilita un resumen de dicha informacion. Dependiendo de cual sea
   el metodo de instalacion que elija para instalar FreeBSD
   necesitara un floppy, un lector de CDROM que pueda utilizar con
   FreeBSD o quizas un adaptador de red. Todo esto se explica en la
   Seccion 2.3.7.

     --------------------------------------------------------------

    2.2.1.1. FreeBSD/i386 y FreeBSD/pc98

   Tanto FreeBSD/i386 como FreeBSD/pc98 necesitan un procesador 486 o
   superior y un minimo de 24 MB de RAM. Necesitara tambien al menos
   150 MB de espacio libre en disco, que es lo que necesita la
   instalacion minima.

     Nota: En sistemas muy antiguos la mayoria de las veces sera de
     mucha mas ayuda conseguir mas RAM y espacio de disco que un
     procesador mas rapido.

     --------------------------------------------------------------

    2.2.1.2. FreeBSD/alpha

   Para instalar FreeBSD/alpha necesitara una plataforma que este
   soportada (consulte Seccion 2.2.2) y un disco duro dedicado a
   FreeBSD. En este momento no es posible compartir un disco con otro
   sistema operativo. Este disco debe estar necesariamente conectado
   a una controladora SCSI que este soportada por el firmware SRM, o
   si se trata de un disco IDE el SRM de su maquina debe permitir el
   arranque desde discos IDE.

   Necesitara el firmware de la consola SRM de su plataforma. En
   ciertos casos es posible pasar del firmware AlphaBIOS (o ARC) al
   SRM. En otros casos no habra mas remedio que descargar un nuevo
   firmware desde el sito web del fabricante.

     Nota: A partir de FreeBSD 7.0 no hay soporte para Alpha. La
     serie FreeBSD 6.X es la ultima que ofrece soporte para esta
     arquitectura.

     --------------------------------------------------------------

    2.2.1.3. FreeBSD/amd64

   Hay dos tipos de procesadores capaces de ejecutar FreeBSD/amd64.
   La primera son los procesadores AMD64, entre los que estan los
   AMD Athlon(TM)64, AMD Athlon64-FX, AMD Opteron(TM) y los modelos
   superiores.

   La segunda categoria de procesadores que pueden usar FreeBSD/amd64
   es la de los procesadores de arquitectura EM64T de Intel(R), por
   ejemplo las familias de procesadores Intel Core(TM) 2 Duo, Quad, y
   Extreme, y la secuencia de procesadores Intel Xeon 3000, 5000 y
   7000.

   Si tiene una maquina basada en una nVidia nForce3 Pro-150 tendra
   que usar la configuracion de la BIOS para deshabilitar IO ACPI. Si
   no tiene la opcion de hacerlo tendra que deshabilitar ACPI. Hay
   errores en el chipset Pro-150 para los que no hemos encontrado aun
   una solucion.

     --------------------------------------------------------------

    2.2.1.4. FreeBSD/sparc64

   Para instalar FreeBSD/sparc64 necesita una plataforma que este
   soportada (consulte la Seccion 2.2.2).

   Necesitara un disco dedicado a FreeBSD/sparc64. De momento es
   imposible compartir un disco duro con otro sistema operativo.

     --------------------------------------------------------------

  2.2.2. Hardware soportado

   Cada version de FreeBSD incluye una lista de hardware soportado en
   las <<FreeBSD Hardware Notes>>. Este documento suele estar en un
   fichero llamado HARDWARE.TXT, que esta en el directorio raiz del
   CDROM o distribucion FTP, o en el menu de documentacion de
   sysinstall. En este documento se listan los dispositivos de
   hardware que se sabe que funcionan con cada version de FreeBSD y
   para que arquitectura. En la pagina de Informacion de Releases del
   sitio web de FreeBSD encontrara copias de esta lista para diversas
   releases y arquitecturas.

     --------------------------------------------------------------

2.3. Tareas anteriores a la instalacion

  2.3.1. Inventario de su sistema

   Antes de instalar FreeBSD en su sistema deberia hacer un
   inventario de los componentes de su computadora. El sistema de
   instalacion de FreeBSD le mostrara los componentes (discos duros,
   tarjetas de red, unidades de CDROM, etc.) con sus datos de modelo
   y fabricante. FreeBSD tratara tambien de determinar la
   configuracion correcta para dichos dispositivos, lo que incluye
   informacion sobre las IRQ y el uso de puertos IO. A causa de la
   ingente variedad de hardware para PC este proceso no siempre se
   puede culminar con exito y es posible que deba corregir las
   decisiones de FreeBSD retocando la configuracion.

   Si ya dispone de otro sistema operativo instalado (como Windows o
   Linux) puede usar los recursos que dicho o dichos sistemas
   operativos le faciliten para determinar exactamente que hardware
   tiene y como esta configurado. Si tiene del todo claro que
   configuracion esta usando una tarjeta de expasion concreta es
   posible que pueda encontrar esos datos impresos en la propia
   tarjeta. Es muy habitual el uso de las IRQ 3, 5 y 7 y las
   direcciones de los puertos IO suelen representarse con numeros
   hexadecimales, como 0x330.

   Le recomendamos imprimir o tomar nota de todos esos datos antes de
   instalar FreeBSD. Una tabla como esta puede serle de mucha ayuda:

   Tabla 2-1. Ejemplo de inventario de dispositivos

       Nombre de     IRQ Puerto(s)               Notas                
      dispositivo           IO     
   Primer disco duro N/A N/A       40 GB, fabricado por Seagate,      
                                   primer maestro IDE                 
   CDROM             N/A N/A       Primer esclavo IDE                 
   Segundo disco     N/A N/A       20 GB, fabricado por IBM, segundo  
   duro                            maestro IDE                        
   Primera           14  0x1f0                                        
   controladora IDE                
   Tarjeta de red    N/A N/A       Intel 10/100                       
   Modem             N/A N/A       3Com(R) 56K faxmodem, en COM1      
   ...                                                                

   Una vez termine el inventorio de componentes de su sistema debe
   comprobar si aparecen en la lista de hardware soportado de la
   version de FreeBSD que vaya a instalar.

     --------------------------------------------------------------

  2.3.2. Haga una copia de seguridad de sus datos

   Si la maquina en la que va a instalar FreeBSD contiene datos que
   desea conservar por algun motivo asegurese de haber hecho una
   copia de seguridad de los mismos y de que esa copia es de fiar
   antes de instalar FreeBSD. El sistema de instalacion de FreeBSD le
   mostrara una advertencia antes de modificar datos en su disco pero
   una vez que el proceso ha comenzado no hay manera de dar marcha
   atras.

     --------------------------------------------------------------

  2.3.3. Decida donde instalar FreeBSD

   Si quiere que FreeBSD use todo su disco duro puede saltar
   tranquilamente a la siguiente seccion.

   Si por el contrario necesita que FreeBSD coexista con otros
   sistemas operativos tendra que comprender como se almacenan los
   datos en el disco duro y como le afecta esto.

     --------------------------------------------------------------

    2.3.3.1. Esquemas de disco en FreeBSD/i386(TM)

   Un disco de PC puede dividirse en varias partes. Estas partes
   reciben el nombre de partitions. Dado que FreeBSD internamente
   tambien tiene particiones la nomenclatura puede ser confusa muy
   rapidamente, asi que estas partes del disco reciben el nombre de
   <<disk slices>> o sencillamente <<slices>> (<<rebanadas de
   disco>>y <<rebanadas>> respectivamente). Por ejemplo, la version
   de fdisk que usara FreeBSD con las particiones de disco de PC usa
   la palabra <<slices>> en lugar de <<partitions>>. Debido a
   limitaciones de diseno la plataforma PC solo admite cuatro
   particiones por disco. Dichas particiones reciben el nombre de
   particiones primarias. Esta limitacion puede sortearse (y de ese
   modo disponer de mas de cuatro particiones) gracias a que se creo
   un nuevo tipo de particion, las particiones extendidas. Un disco
   puede contener una unica particion extendida. Dentro de ella
   pueden crearse particiones especiales, que reciben el nombre de
   particiones logicas.

   Cada particion tiene un identificador de particion (o partition
   ID), que es un numero que se usa para identificar el tipo de datos
   que alberga la particion. Las particiones FreeBSD tienen como
   identificador de particion 165.

   Normalmente cada sistema operativo que vaya a utilizar
   identificara las particiones de un modo propio. Por ejemplo DOS (y
   sus descendientes, como Windows) asignan a cada particion primaria
   y logica una letra de unidad a partir de C:.

   FreeBSD debe instalarse en una particion primaria. FreeBSD puede
   albergar todos los datos que necesita, incluyendo cualquier
   fichero que pueda usted crear, en esta particion. Si tiene usted
   varios discos duros puede crear particiones para que FreeBSD las
   use en todos ellos o en algunos nada mas. Al instalar FreeBSD debe
   usar al menos una particion. Puede usar una particion vacia que
   haya preparado o puede usar tambien una particion que contenga
   datos que no desea conservar.

   Si esta usando todas las particiones de todos sus discos tendra
   que dejar libre una de ellas para FreeBSD usando las herramientas
   del otro sistema operativo que este usando (por ejemplo fdisk en
   DOS o en Windows).

   Si tiene una particion sobrante puede usarla, pero puede verse en
   la necesidad de reducir una o mas de las particiones que esta
   usando.

   Una instalacion minima de FreeBSD cabri en solo 100 MB de disco
   pero tenga en cuenta que apenas quedaria espacio para los ficheros
   que quiera crear. Un minimo mas realista seria de 250 MB si no
   pretende usar entorno grafico y 350 MB o mas si quiere usar un
   interfaz grafico de usuario. Si quiere instalar gran cantidad de
   software para usarlo en FreeBSD sin duda necesitara mas espacio.

   Para ello puede usar herramientas comerciales como
   PartitionMagic(R) o libres como GParted para redimensionar sus
   particiones y hacer sitio para FreeBSD. El directorio tools
   directory del CDROM de instalacion contiene dos herramientas
   libres con las que puede hacer hacer esta redimension: FIPS y
   PResizer. En el mismo directorio encontrara documentacion de
   ambas. FIPS, PResizer y PartitionMagic pueden redimensionar
   particiones FAT16 y FAT32, que pueden encontrarse desde MS-DOS
   hasta Windows ME. Tanto PartitionMagic como GParted funcionan
   tambien en particiones NTFS. GParted forma parte de diversas
   distribuciones de <<Live CD>> de Linux, como SystemRescueCD.

   Hay informes de problemas redimensionando particiones de Microsoft
   Vista. Le recomendamos tener a mano un disco de instalacion de
   Vista cuando intente hacer esto. Lo dicho para cualquier otra
   tarea de mantenimiento de discos es valido aqui: tenga una copia
   de seguridad fiable y reciente a mano.

     AvisoEl uso incorrecto de estas herramientas puede borrar datos
     de su disco duro. Recuerde, asegurese de disponer de copias de
     seguridad recientes y utilizables antes de usarlas.

   Ejemplo 2-1. Uso de una particion sin cambiar nada

   Supongamos que tiene una maquina con un solo disco de 4 GB que ya
   tiene una version de Windows instalada y que ese disco esta
   dividido en dos unidades, C: y D:, cada una de las cuales tiene un
   tamano de 2 GB. Tiene 1 GB de datos en C: y 0.5 GB de datos en D:.

   Esto significa que su disco duro tiene dos particiones, una por
   cada letra de unidad. Copie todos sus datos de D: en C:; de este
   modo vaciara la segunda particio y podra usarla con FreeBSD.

   Ejemplo 2-2. Reducir una particion existente

   Suponga que tiene una maquina con un solo disco de 4 GB que
   contiene una version de Windows instalada. Cuando instalo Windows
   creo una gran particion, lo que le dio como resultado una unidad
   C: de 4 GB. Esta usando 1.5 GB de espacio y quiere que FreeBSD
   tenga 2 GB de espacio.

   Para poder instalar FreeBSD tendra que realizar una de las
   siguientes tareas:

    1. Haga una copia de sus datos de Windows y despues reinstale
       Windows, eligiendo una particion de 2 GB en el momento de la
       instalacion.

    2. Utilice alguna herramienta del estilo de PartitionMagic que se
       han descrito antes para reducir el tamano de su particion de
       Windows.

     --------------------------------------------------------------

    2.3.3.2. Estructura de discos en Alpha

   Tendra que dedicar un disco de su sistema para usar FreeBSD puesto
   que de momento es imposible compartir un disco con otro sistema
   operativo. Dependiendo de la la maquina Alpha que tenga el disco
   podra ser SCSI o IDE en la medida en que sea posible arrancar
   desde tales discos.

   Siguiendo las normas de los manuales de Digital / Compaq todos los
   datos suministrados a SRM se muestran en mayusculas. SRM no
   distingue entre mayusculas y minusculas.

   Use SHOW DEVICE en la consola de SRM para saber que tipo de discos
   hay en su sistema:

 >>>SHOW DEVICE
 dka0.0.0.4.0               DKA0           TOSHIBA CD-ROM XM-57  3476
 dkc0.0.0.1009.0            DKC0                       RZ1BB-BS  0658
 dkc100.1.0.1009.0          DKC100             SEAGATE ST34501W  0015
 dva0.0.0.0.1               DVA0
 ewa0.0.0.3.0               EWA0              00-00-F8-75-6D-01
 pkc0.7.0.1009.0            PKC0                  SCSI Bus ID 7  5.27
 pqa0.0.0.4.0               PQA0                       PCI EIDE
 pqb0.0.1.4.0               PQB0                       PCI EIDE

   Este ejemplo es de una Digital Personal Workstation 433au y
   muestra tres discos instalados en el sistema. El primer disco es
   una unidad CDROM llamada DKA0 y los otros dos reciben los nombres
   de DKC0 y DKC100 respectivamente.

   Los discos con nombres tipo DKx son discos SCSI. Por ejemplo
   DKA100 se refiere a un disco SCSI con el <<target ID 1>> en el
   primer bus SCSI (A), mientras que DKC300 es un disco SCSI con un
   ID 3 en el tercer bus SCSI (C). Los nombres de dispositivo PKx son
   para adaptadores de bus SCSI. Como hemos visto en la salida de
   SHOW DEVICE las unidades CDROM SCSI son consideradas iguales a
   otros discos duros SCSI.

   Los discos IDE tienen nombres similares a DQx, mientras que PQx es
   la controladora IDE asociada.

     --------------------------------------------------------------

  2.3.4. Recopile los datos de la configuracion de la red

   Si pretende conectarse a alguna red durante la instalacion de
   FreeBSD (por ejemplo si pretende hacerlo desde un sitio FTP o
   mediante un servidor NFS) tendra que conocer la configuracion de
   su red. Durante la instalacion se le pediran esos datos para que
   FreeBSD pueda conectarse a la red y realizar la instalacion.

     --------------------------------------------------------------

    2.3.4.1. Conexion a una red Ethernet o a un modem Cable/DSL

   Necesitara la siguiente informacion si va a conectarse a una red
   Ethernet o si tiene una conexion a Internet a traves de una
   adaptador Ethernet via cable o DSL:

    1. Direccion IP

    2. Direccion IP de la pasarela (<<gateway>>, <<puerta de
       enlace>>)

    3. Nombre del sistema (<<hostname>>)

    4. Direccion IP del servidor DNS

    5. Mascara de subred

   Si no conoce estos datos pongase en contacto con su administrador
   de sistemas o con su proveedor de servicios. Es que le digan que
   tal informacion se asigna automaticamente mediante DHCP. Si es
   asi, anotelo.

     --------------------------------------------------------------

    2.3.4.2. Conexion mediante modem

   Si usted se conecta con su ISP mediante un modem tradicional sigue
   pudiendo instalar FreeBSD a traves de Internet; el problema es que
   tardara mucho mas que por otros medios.

   Necesitara saber:

    1. El numero de telefono de su ISP a traves del que accedera a
       Internet

    2. El COM: el puerto al que esta conectado su modem

    3. Su nombre de usuario y su contrasena de acceso a Internet

     --------------------------------------------------------------

  2.3.5. Consulte <<FreeBSD Errata>>

   A pesar de que el proyecto FreeBSD hace todo lo humanamente
   posible para asegurarse de que cada <<release>> de FreeBSD es todo
   lo estable posible a veces algun error logra entrar en escena. En
   contadisimas ocasiones esos errores llegan a afectar al proceso de
   instalacion. Cuando esos errores son ubicados y corregidos
   aparecen en lo que llamamos la FreeBSD Errata, que encontrara en
   el sitio web de FreeBSD. Deberia consultar este texto antes de la
   instalacion para asegurarse de que no hay problemas de ultima hora
   de los que deba preocuparse.

   Tiene informacion sobre las <<releases>>, incluyendo la <<errata>>
   de cada una de ellas, en la seccion de informacion de <<releases>>
   del sitio web de FreeBSD.

     --------------------------------------------------------------

  2.3.6. Obtencion de los ficheros de instalacion de FreeBSD

   El proceso de instalacion de FreeBSD permite instalar FreeBSD
   desde ficheros ubicados en cualquiera de los siguientes sitios:

   Medios locales

     * Un CDROM o DVD

     * Una particion DOS en la propia computadora

     * Una cinta SCSI o QIC

     * Discos floppy

   Red

     * Un sitio FTP, saliendo a traves de un cortafuegos o usando un
       proxy HTTP si fuera necesario

     * Un servidor NFS

     * Una conexion serie o a traves de una cable paralelo

   Si ha adquirido FreeBSD en CD o DVD ya tiene todo lo que
   necesitara, puede pasar a la siguiente seccion: (Seccion 2.3.7).

   Si no dispone de los ficheros de instalacion de FreeBSD deberia
   consultar la Seccion 2.13, donde se explica como preparar la
   instalacion de FreeBSD desde cualquiera de los medios listados
   anteriormente. Tras leer esa seccion puede volver aqui y leer la
   Seccion 2.3.7.

     --------------------------------------------------------------

  2.3.7. Preparacion del medio de arranque

   El proceso de instalacion de FreeBSD comienza por arrancar su
   sistema mediante el instalador de FreeBSD: no es un programa que
   pueda ejecutar desde otro sistema operativo. Su sistema suele
   arrancar usando el sistema operativo que esta instalado en su
   disco duro pero puede tambien ser configurado para que lo haga
   desde un floppy <<arrancable>>. Las computadoras mas modernas
   pueden tambien arrancar desde un CDROM introducido en la unidad
   CDROM.

     Sugerencia: Si tiene FreeBSD en CDROM o DVD (por haberlo
     comprado o haberlo preparado por usted) y su sistema puede
     arracar desde CDROM o DVD (suele ser una opcion de BIOS llamada
     <<Boot Order>> o algo similar) puede saltarse esta seccion. Las
     imagenes de CDROM o DVD de FreeBSD permiten arrancar desde ellas
     y pueden emplearse para instalar FreeBSD sin ninguna preparacion
     especial.

   Siga estos pasos para crear las imagenes que le permitiran
   arrancar desde floppy:

    1. Consiga las imagenes de arranque desde floppy

       Los discos de arranque se encuentran en el directorio
       floppies/ del medio de instalacion o pueden descargarse desde
       el directorio correspondiente de
       ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/<arch>/<version>-RELEASE/floppies/.
       Reemplace <arch> y <version> con la arquitectura y la version
       de FreeBSD que quiera instalar. Por ejemplo, las imagenes de
       arranque desde floppy para FreeBSD 8.2-RELEASE para i386 estan
       en from
       ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/8.2-RELEASE/floppies/.

       Las imagenes de floppy tienen la extension .flp. El directorio
       floppies/ contiene diferentes imagenes y las que usted
       necesitara dependeran de la version de FreeBSD que vaya a
       instalar y, en algunos casos, del hardware en el que lo va a
       instalar. En la mayoria de de los casos solamente usara dos
       ficheros: kern.flp y mfsroot.flp. La instalacion en algunos
       sistemas concretos requerira controladores de dispositivo
       adicionales, que se encuentran en la imagen drivers.flp.
       Consulte README.TXT en el propio directorio, ahi encontrara la
       informacion mas reciente sobre las imagenes.

         Importante: Su programa de FTP debe usar modo binario para
         descargar las imagenes. Algunos navegadores web suelen usar
         el modo texto ( o ASCII). He aqui lo primero a comprobar si
         no puede arrancar desde los disquetes que ha creado.

    2. Preparacion de los discos floppy

       Tendra que preperar un disquete por cada imagen que descargue.
       Es imprescindible que esos discos carezcan de errores. La
       forma mas sencilla de asegurarlo es formatearlos usted. No
       confie en disquetes preformateados. La herramienta de formateo
       de Windows no le advertira del hallazgo de bloques
       defectuosos, si encuentra alguno sencillamente lo marcara como
       <<defectuoso>> y lo ignorara. Le recomendamos que use
       disquetes nuevos si decide usar este procedimiento de
       instalacion.

         Importante: Si instenta instalar FreeBSD y el programa de
         instalacion falla, se queda congelado o sucede alguna otra
         catastrofe uno de las primeras cosas de las que sospechar
         son los disquetes. Vuelque los ficheros de imagen en discos
         nuevos e intentelo de nuevo.

    3. Escriba los ficheros de imagen en discos floppy (<<
       disquetes>>)

       Los ficheros .flp no son ficheros normales que puedan copiarse
       a disco. Son imagenes del contenido completo de los discos.
       Esto significa que no puede simplemente copiar esos ficheros
       de un disco a otro. Debe usar herramientas especializadas para
       escribir esas imagenes directamente al disco correspondiente.

       Si va a crear los disquetes de arranque en un sistema en el
       que se esta ejecutando MS-DOS/Windows utilice la herramienta
       fdimage.

       Si las imagenes estan en el CDROM y su CDROM es la unidad E:
       ejecute lo siguiente:

 E:\> tools\fdimage floppies\kern.flp A:

       Repita el proceso con cada fichero .flp reemplazando cada vez
       el disco y recuerde etiquetarlos con el nombre del fichero que
       ha copiado en cada uno. Modifique la linea del comando donde
       sea necesario, adaptandola al lugar donde tenga usted los
       ficheros .flp. Puede descargar fdimage desde el directorio
       tools del sitio FTP de FreeBSD.

       Si va a crear los disquetes en un sistema UNIX (por ejemplo
       otro sistema FreeBSD) puede utilizar dd(1) para volcar las
       imagenes a los discos. En FreeBSD puede ejecutar algo como:

 # dd if=kern.flp of=/dev/fd0

       En FreeBSD /dev/fd0 es la primera unidad de disquetes (la
       unidad A:). /dev/fd1 seria la unidad B: y asi sucesivamente.
       Otras versiones de UNIX pueden asignar nombres diferentes a
       las unidades de disquetes; consulte la documentacion de su
       sistema.

   Ya podemos instalar instalar FreeBSD.

     --------------------------------------------------------------

2.4. Inicio de la instalacion

     Importante: La instalacion no efectua ningun cambio en su disco
     o discos duros hasta la aparicion del siguiente mensaje:

 Last Chance: Are you SURE you want continue the installation?

 If you're running this on a disk with data you wish to save then WE
 STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!

 We can take no responsibility for lost disk contents!

     Es decir:

 Ultima oportunidad: ?Seguro que quiere seguir adelante con la instalacion?

 !Si esta ejecutando este programa en un disco que contenga datos
 que quiera conservar LE RECOMENDAMOS ENCARECIDAMENTE QUE HAGA
 COPIAS DE SEGURIDAD FIABLES antes de proseguir!

 !No podemos responsabilizarnos de datos perdidos!

     El proceso de instalacion puede abandonarse en cualquier momento
     antes de la advertencia final sin efectuar cambios en el
     contenido del disco duro. Si advierte que ha configurado algo de
     forma incorrecta basta con que apague su sistema y no estropeara
     nada.

     --------------------------------------------------------------

  2.4.1. El arranque

    2.4.1.1. El arranque en i386

    1. Comience con su sistema apagado.

    2. Arranque el sistema. Durante el arranque deberi mostrarse la
       opcion para entrar en la BIOS, normalmente mediante las teclas
       F2, F10, Del, o Alt+S. Utilice la tecla o combinacion de las
       mismas que se le indique en pantalla. En algunos casos el
       sistema puede mostrar un grafico durante el arranque. Pulsar
       Esc suele disminuir en esos casos el tamano del grafico y le
       permitira ver los mensajes del arranque.

    3. Encuentre el parametro que controla desde que dispositivos
       arranca el sistema. Normalmente se llama <<Boot Order>> y
       suele presentarse como una lista de dispositivos, como Floppy,
       CDROM, First Hard Disk, etc.

       Si necesita disquetes de arranque asegurese de que selecciona
       la unidad correspondiente. Si va a arrancar desde CDROM,
       seleccione la unidad CDROM. En caso de duda consulte el manual
       que venia con su computadora y/o el de su placa base.

       Haga los cambios necesarios, guarde los cambios y salga. El
       sistema deberia reiniciarse.

    4. Si ha elegido arrancar desde disquete, tal y como se describe
       en Seccion 2.3.7, uno de ellos sera el primer disco de
       arranque, probablemente el que contiene kern.flp. Introduzca
       ese disco en su unidad de disquetes.

       Si va a arrancar desde CDROM tendra que arrancar el sistema e
       introducir el CDROM en cuanto tenga ocasion.

       Si su sistema arranca normalmente y carga el sistema operativo
       que ya esta instalado puede ocurrir alguna de estas cosas:

         1. Los discos no se introdujeron lo suficientemente pronto
            en el proceso de arranque. Dejelos insertados y reinicie
            su sistema.

         2. Los cambios que hizo en la BIOS no han funcionado.
            Deberia repetir los pasos previos hasta que de con la
            opcion correcta.

         3. Su BIOS en concreto no admite el arranque el arranque
            desde el medio que ha elegido.

    5. FreeBSD comenzara a arrancar. Si esta arrancando desde CDROM
       deberia ver algo parecido a esto (se ha omitido la informacion
       de numero de version):

 Verifying DMI Pool Data ........
 Boot from ATAPI CD-ROM :
  1. FD 2.88MB  System Type-(00)
 Uncompressing ... done

 BTX loader 1.00 BTX version is 1.01
 Console: internal video/keyboard
 BIOS drive A: is disk0
 BIOS drive B: is disk1
 BIOS drive C: is disk2
 BIOS drive D: is disk3
 BIOS 639kB/261120kB available memory

 FreeBSD/i386 bootstrap loader, Revision 0.8

 /kernel text=0x277391 data=0x3268c+0x332a8 |

 |
 Hit [Enter] to boot immediately, or any other key for command prompt.
 Booting [kernel] in 9 seconds... _

       Si arranca desde floppy vera algo parecido a esto (se ha
       omitido la informacion de numero de version):

 Verifying DMI Pool Data ........

 BTX loader 1.00  BTX version is 1.01
 Console: internal video/keyboard
 BIOS drive A: is disk0
 BIOS drive C: is disk1
 BIOS 639kB/261120kB available memory

 FreeBSD/i386 bootstrap loader, Revision 0.8

 /kernel text=0x277391 data=0x3268c+0x332a8 |

 Please insert MFS root floppy and press enter:

       Siga las instrucciones y extraiga el disco kern.flp disc,
       inserte el disco mfsroot.flp y pulse Intro.

    6. Tanto si arranca desde disquete como CDROM el proceso de
       arranque llegara a este punto:

 Hit [Enter] to boot immediately, or any other key for command prompt.
 Booting [kernel] in 9 seconds... _

       Dicho y hecho: espere diez segundos o pulse Enter. Esto
       lanzara el menu de configuracion del kernel.

     --------------------------------------------------------------

    2.4.1.2. Arranque en Alpha

    1. Comience con su sistema apagado.

    2. Encienda su computadora y espera un mensaje de arranque en el
       monitor.

    3. Si va a arrancar desde disquetes, tal y como se describe en la
       Seccion 2.3.7, uno de ellos sera el primer disco de arranque,
       probablemente el que contiene kern.flp. Ponga este disco en la
       unidad de disquetes y escriba el siguiente comando para lanzar
       el arranque desde el disco (corrija el nombre de su unidad de
       disquetes si fuera necesario):

 >>>BOOT DVA0 -FLAGS '' -FILE ''

       Si va a arrancar desde CDROM introduzca el CDROM en la unidad
       y escriba el siguiente comando para iniciar la instalacion
       (corrija el nombre de la unidad correcta de CDROM si fuera
       necesario):

 >>>BOOT DKA0 -FLAGS '' -FILE ''

    4. FreeBSD comenzara a arrancar. Si esta arrancando desde
       disquete llegado un cierto punto vera usted este mensaje:

 Please insert MFS root floppy and press enter:

       Siga las instrucciones del programa de instalacion y retire el
       disco kern.flp, inserte el disco mfsroot.flpy pulse Intro.

    5. Tanto si arranco desde disquete como desde CDROM el proceso de
       arranque llegara a este punto:

 Hit [Enter] to boot immediately, or any other key for command prompt.
 Booting [kernel] in 9 seconds... _

       Dicho y hecho: Espere diez segundos o pulse Enter. Esto
       iniciara el menu de configuracion del kernel.

     --------------------------------------------------------------

    2.4.1.3. Arranque en Sparc64(R)

   La mayoria de sistemas Sparc64(R) estan configurados para arrancar
   automaticamente desde disco. Si quiere instalar FreeBSD tendra que
   arrancar por red o desde un CDROM, lo que requiere que acceda a la
   PROM (OpenFirmware).

   Reinicie el sistema y espere hasta que aparezca el mensaje de
   arranque. Depende del modelo, pero deberia parecerse a este:

 Sun Blade 100 (UltraSPARC-IIe), Keyboard Present
 Copyright 1998-2001 Sun Microsystems, Inc.  All rights reserved.
 OpenBoot 4.2, 128 MB memory installed, Serial #51090132.
 Ethernet address 0:3:ba:b:92:d4, Host ID: 830b92d4.

   Si en este punto su sistema arranca desde el disco pulse L1+A o
   Stop+A, o envie unBREAK desde la consola serie serial console
   (usando, por ejemplo, ~# en tip(1) o cu(1)) para asi recuperar el
   prompt de PROM. Tiene este aspecto:

 ok         (1)
 ok {0}     (2)

   (1)
           Este es el prompt que vera en sistemas con una sola CPU.
   (2)
           Este prompt se usa en sistemas SMP; el digito indica el
           numero de la CPU activa.

   Ponga el CDROM dentro de la unidad y teclee boot cdrom en el
   prompt de la PROM.

     --------------------------------------------------------------

  2.4.2. Revision de los resultados de la prueba de dispositivos

   Es posible revisar los ultimos cientos de lineas que se han
   mostrado en pantalla, pues se almacenan en un bufer con ese
   proposito.

   Pulse Bloq Despl (Scroll Lock) y ya puede revisar el bufer. Para
   moverse use las flechas o RePag y AvPag (PageUp y PageDown
   respectivamente). Pulse de nuevo Bloq Despl (Scroll Lock) cuando
   quiera salir del bufer.

   Pruebelo, revise el texto que ha generado el kernel al probar los
   dispositivos del sistema. Vera un texto muy similar al de la
   Figura 2-1, aunque en su caso concreto se mostraran los
   dispositivos que tenga su sistema.

   Figura 2-1. Ejemplo de resultado de prueba de dispositivos

 avail memory = 253050880 (247120K bytes)
 Preloaded elf kernel "kernel" at 0xc0817000.
 Preloaded mfs_root "/mfsroot" at 0xc0817084.
 md0: Preloaded image </mfsroot> 4423680 bytes at 0xc03ddcd4

 md1: Malloc disk
 Using $PIR table, 4 entries at 0xc00fde60
 npx0: <math processor> on motherboard  
 npx0: INT 16 interface  
 pcib0: <Host to PCI bridge> on motherboard
 pci0: <PCI bus> on pcib0
 pcib1:<VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
 pci1: <PCI bus> on pcib1
 pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
 isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
 isa0: <iSA bus> on isab0
 atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
 ata0: at 0x1f0 irq 14 on atapci0
 ata1: at 0x170 irq 15 on atapci0
 uhci0 <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci
 0
 usb0: <VIA 83572 USB controller> on uhci0
 usb0: USB revision 1.0
 uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr1
 uhub0: 2 ports with 2 removable, self powered
 pci0: <unknown card> (vendor=0x1106, dev=0x3040) at 7.3
 dc0: <ADMtek AN985 10/100BaseTX> port 0xe800-0xe8ff mem 0xdb000000-0xeb0003ff ir
 q 11 at device 8.0 on pci0
 dc0: Ethernet address: 00:04:5a:74:6b:b5
 miibus0: <MII bus> on dc0
 ukphy0: <Generic IEEE 802.3u media interface> on miibus0
 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
 ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xec00-0xec1f irq 9 at device 10.
 0 on pci0
 ed0 address 52:54:05:de:73:1b, type NE2000 (16 bit)
 isa0: too many dependant configs (8)
 isa0: unexpected small tag 14
 orm0: <Option ROM> at iomem 0xc0000-0xc7fff on isa0
 fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq2 on isa0
 fdc0: FIFO enabled, 8 bytes threshold
 fd0: <1440-KB 3.5'' drive> on fdc0 drive 0
 atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
 atkbd0: <AT Keyboard> flags 0x1 irq1 on atkbdc0
 kbd0 at atkbd0
 psm0: <PS/2 Mouse> irq 12 on atkbdc0
 psm0: model Generic PS/@ mouse, device ID 0
 vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
 sc0: <System console> at flags 0x100 on isa0
 sc0: VGA <16 virtual consoles, flags=0x300>
 sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
 sio0: type 16550A
 sio1 at port 0x2f8-0x2ff irq 3 on isa0
 sio1: type 16550A
 ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
 pppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
 ppc0: FIFO with 16/16/15 bytes threshold
 plip0: <PLIP network interface> on ppbus0
 ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master UDMA33
 acd0: CD-RW <LITE-ON LTR-1210B> at ata1-slave PIO4
 Mounting root from ufs:/dev/md0c
 /stand/sysinstall running as init on vty0

   Compruebe cuidadosamente que FreeBSD haya encontrado todos los
   dispositivos que debe encontrar. Si no se lista algun dispositivo
   significa que FreeBSD no lo ha encontrado. Un kernel personalizado
   le permitira agregar al sistema el soporte de dispositivos que no
   aparecen en el kernelGENERIC, que suele ser el caso de algunas
   tarjetas de sonido.

   En FreeBSD 6.2 y versiones siguientes vera tras la prueba de
   dispositivos vera lo que muestra la Figura 2-2. Utilice las
   flechas del teclado para elegir pais, region o grupo. Cuando acabe
   pulse Intro, con lo que habra elegido pais y esquema de teclado.
   En cualquier momento puede salir de easily. It is also easy to
   exit the sysinstall y volver a empezar.

   Figura 2-2. Menu de seleccion de pais

   Figura 2-3. Salir de Sysinstall

   Para salir de sysinstall utilice las flechas del teclado para
   seleccionar Exit Install en el menu de la pantalla principal de
   instalacion. Aparecera el siguiente mensaje:

                       User Confirmation Requested
          Are you sure you wish to exit? The system will reboot
            (be sure to remove any floppies/CDs/DVDs from the drives).

                             [ Yes ]    No

   Si pulsa [ Yes ] y no retira el CDROM durante el reinicio el
   programa de instalacion comenzara de nuevo.

   Si esta arrancando desde disquetes tendra que retirar el floppy
   boot.flp antes de reiniciar.

     --------------------------------------------------------------

2.5. ?Que es sysinstall?

   sysinstall es la aplicacion que el Proyecto FreeBSD creo para la
   instalacion del sistema. Esta orientada a consola y consta de
   diversos menus y pantallas que podra usar para configurar y
   ejecutar el proceso de instalacion.

   El sistema de menus de sysinstall se controla mediante las flechas
   del teclado, Intro,el tabulador), Espacio y otras teclas. Tiene
   una descripcion detallada de todas esas teclas y que es lo que
   hacen en la informacion de uso de sysinstall.

   Si quiere consultarla seleccione Usage y asegurese de que el boton
   [Select] este seleccionado (como se ven en la Figura 2-4) y pulse
   Intro.

   Apareceran las instrucciones de uso del sistema de menus. Una vez
   revisadas pulse Enter y volvera al menu principal.

   Figura 2-4. Seleccion de <<Usage>> en el menu principal de
   sysinstall

     --------------------------------------------------------------

  2.5.1. Seleccion del menu de documentacion

   Una vez en el menu principal seleccione Doc con las flechas del
   teclado y pulse Enter.

   Figura 2-5. Seleccion del menu de documentacion

   Esto mostrara el menu de documentacion.

   Figura 2-6. El menu de documentacion de sysinstall

   Es muy importante qeu lea la documentacion de sysinstall.

   Si quiere consultar un documento seleccionelo con las flechas y
   pulse Intro. Cuando acabe pulse de nuevo Intro y volvera al menu
   de documentacion.

   Si desea regresar al menu principal de la instalacion seleccione
   Exit con las flechas y pulse Intro.

     --------------------------------------------------------------

  2.5.2. Seleccion del menu de esquemas de teclado

   Si quiere cambiar el esquema de teclado seleccione el que Keymap y
   pulse Enter. Tendra que hacer esto si su teclado no es el estandar
   en los EEUU.

   Figura 2-7. Menu principal de sysinstall

   La seleccion de un esquema de teclado se hace del siguiente modo:
   seleccione uno de la lista mediante las flechas arriba/abajo y
   pulse Espacio. Si pulsa Espacio otra vez anulara la seleccion. Una
   vez que tenga clara su eleccion use las flechas para seleccionar
   [ OK ] y pulse Intro.

   En esta pantalla solamente se muestra una parte de la lista.
   Seleccione [ Cancel ] usando el tabulador si ha decido seguir
   usando el esquema de teclado por omision y regresar al menu
   principal de instalacion.

   Figura 2-8. Menu de esquemas de teclado de sysinstall

     --------------------------------------------------------------

  2.5.3. Pantalla de opciones de instalacion

   Seleccione Options y pulse Intro.

   Figura 2-9. Menu principal de sysinstall

   Figura 2-10. Opciones de sysinstall

   Los valores por omision deberian bastar para la mayoria de
   usuarios. El numero de <<release>> variara segun sea la version
   que se esta instalando.

   La descripcion del elemento seleccionado aparecera resaltada en
   azul en la parte baja de la pantalla. Observe que una de las
   opciones es Use Defaults, que devuelve todos los valores a los
   asignados por omision al principio del proceso de instalacion.

   Si pulsa F1 podra leer la pantalla de ayuda de las diversas
   opciones.

   Si pulsa Q volvera al menu principal de la instalacion.

     --------------------------------------------------------------

  2.5.4. Comenzar una instalacion estandar

   La instalacion estandar (Standard) es la opcion mas adecuada para
   aquellas personas con poca o ninguna experiencia con UNIX o
   FreeBSD. Utilice las flechas para seleccionar Standard y pulse
   Intro; a partir de ahi comenzara la instalacion.

   Figura 2-11. Comenzar una instalacion estandar

     --------------------------------------------------------------

2.6. Asignacion de espacio en disco

   Lo primero que tiene que hacer es asignar espacio en disco a
   FreeBSD para que sysinstall lo pueda dejar listo para su uso. Para
   ello debe saber como espera FreeBSD encontrar la informacion en el
   disco.

     --------------------------------------------------------------

  2.6.1. Numeracion de unidades desde el punto de vista de la BIOS

   Antes de instalar y configurar FreeBSD en su sistema hay una cosa
   mas de la que ocuparse, especialmente si tiene mas de un disco
   duro.

   La BIOS es capz de abstraer el orden normal de los discos si
   hablamos de un PC en el que se esta ejecutando un sistema
   operativo "BIOS-dependiente" como MS-DOS o Microsoft Windows, que
   admiten esos cambios sin problemas. Tal cosa permite al usuario
   arrancar desde un disco duro distinto del llamado <<maestro
   principal>>. Esto viene muy bien a los usuarios que tienen el
   <<backup>> del sistema mas barato que existe, comprar un disco
   duro identico al primero y copiar periodicamente la primera unidad
   en la segunda mediante Ghost(R) o XCOPY. De este modo si la
   primera unidad falla, sufre el ataque de un virus o sufre las
   consecuencias de un fallo del sistema operativo solo hay que
   decirle a la BIOS que interpole logicamente las unidades. Es como
   intercambiar las conexiones de los discos sin tener que abrir la
   caja del sistema.

   en sistemas mas caros a veces pueden encontrarse controladoras
   SCSI que incorporan extensiones BIOS, que permiten organizar hasta
   siete unidades SCSI de un modo muy similar.

   Cualquiera que este acostumbrado a usar las tecnicas descritas se
   llevara una sorpresa al intentar usarlas en FreeBSD. FreeBSD no
   usa la BIOS y no tiene en cuenta en absoluto la <<notacion de
   unidades logicas desde el punto de vista de la BIOS>>. Esto puede
   dar lugar a situaciones bastante chocantes, especialmente cuando
   las unidades son fisicamente identicas en geometria y han sido
   creadas como clones de datos la una de la otra.

   Si va a usar FreeBSD recuerde siempre devolver a la BIOS a los
   valores de numeracion <<natural>> antes de la instalacion y
   dejarlos asi. Si tiene que intercambiar unidades hagalo, pero a la
   vieja usanza: abra la caja, toque los <<jumpers>> y los cables
   todo lo que sea menester.

   +----------------------------------------------------------------+
   | Veamos un instructivo ejemplo extraido de Las excepcionales    |
   | aventuras de Pedro y Pablo:                                    |
   |                                                                |
   | Pedro decide dedicar una vieja maquina <<Wintel>> para         |
   | prepararle un sistema FreeBSD a Pablo. Pedro le instala una    |
   | sola unidad SCSI como <<unidad SCSI 0>> e instala FreeBSD en   |
   | ella.                                                          |
   |                                                                |
   | Pablo comienza a usar el sistema pero a los pocos dias         |
   | advierte que esa vieja unidad SCSI esta mostrando numerosos    |
   | errores logicos, asi que informa del hecho a Pedro.            |
   |                                                                |
   | Dias despues Pedro decide solucionar el problema; consigue un  |
   | disco identico al que instalo a Pablo. Le pasa un chequeo de   |
   | superficie que da resultados satisfactorios, asi que instala   |
   | este disco como <<unidad SCSI 4>> y hace una copia binaria de  |
   | la unidad 0 (el primer disco) a la recien instalada unidad 4.  |
   | Una vez que el nuevo disco esta instalado Pedro decide que hay |
   | que empezar a usarlo, asi que configura la BIOS SCSI para      |
   | reorganizar las unidades de disco para que el sistema arranque |
   | desde la unidad SCSI 4. FreeBSD arranca desde dicha unidad y   |
   | todo funciona perfectamente.                                   |
   |                                                                |
   | Pablo sigue trabajando varios dias y no pasa mucho tiempo      |
   | antes de que Pedro y Pablo decidan que ya es hora de meterse   |
   | en una nueva aventura: actualizarse a la nueva versin de       |
   | FreeBSD. Bill retira la unidad SCSI 0 de la maquina porque le  |
   | parece poco de fiar y la reemplaza por un disco que obtiene de |
   | su en apariencia inagotable trastero. Pedro instala la ultima  |
   | version de FreeBSD en la nueva unidad SCSI mediante los        |
   | disquetes FTP magicos que Pablo ha bajado de Internet. La      |
   | instalacion se ejecuta sin problemas.                          |
   |                                                                |
   | Pablo utiliza la nueva version de FreeBSD durante unos dias y  |
   | comprueba que en efecto es lo bastante buena como para usarla  |
   | en el departamento de ingenieria. Ha llegado, por tanto, el    |
   | momento de copiar los datos que tiene en la version anterior   |
   | de FreeBSD a su nuevo alojamiento. Pablo monta la unidad SCSI  |
   | 4 (la ultima que instalo con la version anterior de FreeBSD).  |
   | Pablo queda consternado al comprobar que en la unidad SCSI 4   |
   | no hay ni rastro de sus preciados datos.                       |
   |                                                                |
   | ?Donde estan los datos?                                        |
   |                                                                |
   | Cuando Pedro hizo la copia binaria de la unidad SCSI 0 en la   |
   | unidad SCSI 4, la unidad se convirtio en el <<el nuevo clon>>. |
   | Cuando Pedro reconfiguro la BIOS SCSI para poder arrancar      |
   | desde la unidad SCSI 4 tan solo estaba enganandose a si mismo  |
   | puesto que FreeBSD seguia arrancando desde la unidad SCSI 0.   |
   | Al hacer tal cambio en la BIOS causamos que parte del codigo   |
   | de arranque y del cargador del sistema se copie de una a otra  |
   | unidad pero en cuanto los controladores del kernel de FreeBSD  |
   | toman el control de la situacion el esquema de nomenclatura de |
   | unidades de la BIOS es desestimado y FreeBSD recupera el       |
   | esquema normal de nomenclatura. En nuestro ejemplo el sistema  |
   | sigue funcionando desde la unidad SCSI 0 y ahi estan todos los |
   | datos de Pablo, no en la unidad SCSI 4. El hecho de que        |
   | pareciera que el sistema estaba funcionando en la unidad SCSI  |
   | 4 era un producto de la imaginacion humana.                    |
   |                                                                |
   | Estamos encantados de decir que ni un solo byte fue herido o   |
   | maltratado durante el descubrimiento de este fenomeno. La      |
   | vieja unidad SCSI 0 fue recuperada del monton de discos caidos |
   | en acto de servicio y fue posible devolver todo el trabajo de  |
   | Pablo a su legitimo dueno. Por si fuera poco, ahora Pedro sabe |
   | con certeza que es capaz de contar hasta cero.                 |
   |                                                                |
   | En el ejemplo se han usado unidades SCSI pero los conceptos    |
   | pueden aplicarse perfectamente a unidades IDE.                 |
   +----------------------------------------------------------------+

     --------------------------------------------------------------

  2.6.2. Creacion de <<slices>> con FDisk

     Nota: Aun no ha hecho modificaciones en su disco duro. Si cree
     que ha cometido algun error y quiere comenzar de nuevo puede
     hacerlo, salga de los menus de sysinstall e intentelo de nuevo o
     pulse U para ejecutar la opcion Undo (deshacer). Si se pierde o
     no sabe como salir siempre puede apagar su sistema.

   Si ha elegido iniciar una instalacion estandar sysinstall le
   mostrara el siguiente mensaje:

                                  Message
  In the next menu, you will need to set up a DOS-style ("fdisk")
  partitioning scheme for your hard disk. If you simply wish to devote
  all disk space to FreeBSD (overwriting anything else that might be on
  the disk(s) selected) then use the (A)ll command to select the default
  partitioning scheme followed by a (Q)uit. If you wish to allocate only
  free space to FreeBSD, move to a partition marked "unused" and use the
  (C)reate command.
                                 [  OK  ]

                       [ Press enter or space ]

   Es decir:

                                  Mensaje
  En el siguiente menu tendra que configurar un esquema de particionado
  estilo DOS ("fdisk") en su disco duro.  Si quiere dedicar todo el
  espacio de disco a FreeBSD (cosa que sobreescribira cualquier cosa
  que contuviera el/los disco/s) use el comando (A)ll (Todo) para
  seleccionar el esquema de particiones por defecto y luego pulse
  (Q)uit (Salir).  Si quiere asignar a FreeBSD solamente el espacio
  libre en la unidad elija una particion que figure marcada como
  "unused" (sin usar) y ejecute el comando (C)reate (Crear).
                                 [  OK  ]

                       [ Pulse Intro o Espacio ]

   Pulse Intro tal y como se le dice. Se le mostrara una lista con
   todas las unidades de disco duro que el kernel ha econtrado al
   hacer el chequeo del sistema. La Figura 2-12 muestra un ejemplo de
   un sistema con dos discos IDE. Reciben los nombres de ad0 y ad2.

   Figura 2-12. Elija en que unidad usar FDisk

   Quizas este preguntandose por que ad1 no aparece por ningun lado.
   ?Acaso hemos pasado algo por alto?

   Veamos que ocurriria si tuviera usted dos discos duros IDE, uno
   como maestro de la primera controladora IDE y el otro como maestro
   en la segunda controladora IDE. Si FreeBSD asignara numeros de
   unidad en el orden en el que las encuentra en el ejemplo habriamos
   visto ad0 y ad1 y todo funcionaria sin mayor problema.

   Pero si tuviera usted que anadir un tercer disco, digamos como
   esclavo de la primera controladora IDE, tendria que llamarse ad1 y
   el disco que antes era ad1 pasaria a llamarse ad2. Los nombres de
   dispositivo (como por ejemplo ad1s1a) se usan para ubicar sistemas
   de ficheros, asi que podria encontrarse con que alguno de sus
   sistemas de ficheros no esta donde debiera y tendria que modificar
   la configuracion de su FreeBSD.

   Para evitar este problema el kernel puede configurarse para
   asignar nombres a discos IDE basandose en donde estan en lugar de
   hacerlo por el orden en el que los encuentra. Segun dicho esquema
   el disco maestro de la segunda contoladora IDE siempre sera ad2,
   incluso si no existen dispositivos ad0 o ad1.

   Esta es la configuracion por omision que incorpora el kernel de
   FreeBSD, por lo que muestra las unidades ad0 y ad2. La maquina en
   la que se tomaron las capturas de pantalla tiene sendos discos IDE
   en ambos canales maestros de las dos controladoras y carece de
   discos en los canales esclavos.

   Seleccione el disco en el que desea instalar FreeBSD y pulse
   [ OK ]. FDisk arrancara y le mostrara una pantalla similar a la
   que muestra la Figura 2-13.

   La pantalla de FDisk se divide en tres partes.

   La primera parte, que ocupa las dos primeras lineas de la
   pantalla, muestra los detalles del disco que seleccionemos, el
   nombre que FreeBSD le da, la geometria del disco y el tamano total
   del disco.

   La segunda parte muestra las <<slices>> que haya en el disco,
   donde comienzan y acaban, cu'l es su tamano, que nombre les da
   FreeBSD, su descripcion y subtipo. Este ejemplo muestra dos
   pequenas <<slices>> sin usar; las <<slices>> (del ingles
   <<rebanadas>>) son un tipo de esquema estructural de los discos de
   PC. Tambien muestra una gran <<slice>> FAT, que casi con total
   seguridad aparecera como C: en MS-DOS / Windows, y una <<slice>>
   extendida, que podria contener otras letras de unidad de MS-DOS /
   Windows.

   La tercera parte muestra las ordenes que pueden usarse en FDisk.

   Figura 2-13. Un ejemplo de particionamiento tipico con FDisk

   Lo que deba hacer a partir de ahora dependera mucho de la forma en
   la que quiera distribuir su disco.

   Si desea usar FreeBSD en el resto del disco (lo que implica borrar
   todos los datos que pudiera haber en el disco una vez que le
   confirme a sysinstall que desea seguir adelante con la
   instalacion) pulse A, que equivale a la opcion Use Entire Disk
   (Utilizar el disco integro). Las <<slices>> que existieran se
   borraran y seran reemplazadas por un pequeno area de disco marcado
   como sin usar (otro recurso de la estructura de disco de los PC) y
   tras el una gran <<slice>> destinada a FreeBSD. Ahora marque la
   particion FreeBSD que acaba de crear como arrancable: pulse S. La
   pantalla que vera ha de ser muy similar a la Figura 2-14. Observe
   la A en la columna Flags: indica que la <<slice>> es activa y se
   arrancara desde ella.

   Si desea borrar una <<slice>> para hacer mas sitio a FreeBSD
   seleccionela mediante las flechas y pulse D. Despues pulse C y
   vera un mensaje en el que se le pedira el tamano de la <<slice>>
   que va a crear. Introduzca los datos apropiados y pulse Intro. El
   valor por defecto en esta pantalla es el de la <<slice>> mas
   grande que pueda crear en el disco, que deberia ser la mayor parte
   del disco que queda sin usar o el tamano del disco duro completo.

   Si ha hecho sitio para FreeBSD (quizas con una herramienta como
   PartitionMagic) puede pulsar press C y crear una nueva <<slice>>.
   Vera de nuevo un mensaje en el que se le pedira que escriba el
   tamano de la <<slice>> que va a crear.

   Figura 2-14. Particion con FDisk usando el disco completo

   Cuando acabe pulse Q. Sus cambios se guardaran en sysinstall, pero
   de momento no se guardaran en disco.

     --------------------------------------------------------------

  2.6.3. Instalacion de un gestor de arranque

   Ha llegado el momento de instalar un gestor de arranque. Elija el
   gestor de arranque de FreeBSD si:

     * Tiene mas de un disco y ha instalado FreeBSD en cualquiera que
       no sea el primero.

     * Ha instalado FreeBSD codo con codo con otro sistema operativo
       y quiere poder elegir si arrancar FreeBSD o ese otro sistema
       operativo cuando arranque su sistema.

   Si FreeBSD va a ser el unico sistema operativo en el sistema y va
   a instalarlo en el primer disco duro elija el gestor estandar
   (que, obviamente, esta en la opcion Standard). Elija None
   (ninguno) si va a usar algun otro gestor de arranque que sea capaz
   de arrancar FreeBSD.

   Elija y pulse Intro.

   Figura 2-15. Menu de gestores de arranque de sysinstall

   La pantalla de ayuda, que puede consultar en cualquier momento
   pulsando F1, puede serle de mucha ayuda con los problemas que
   puede encontrarse al intentar compartir un disco duro entre varios
   sistemas operativos.

     --------------------------------------------------------------

  2.6.4. Creacion de <<slices>> en otra unidad.

   Si hay mas de una unidad de disco el programa de instalacion
   volvera a la pantalla <<Select Drives>> (<<seleccion de
   unidades>>) una vez elegido el gestor de arranque. Si quiere
   instalar FreeBSD en mas de un disco seleccione aqui ese otro disco
   y repita el proceso con las <<slices>> mediante FDisk.

     Importante: Si va a instalar FreeBSD en una unidad que no sea la
     primera tendra que instalar el gestor de arranque de FreeBSD en
     ambas unidades.

   Figura 2-16. Salir de la seleccion de unidad

   El tabulador se usa para hacer pasar el cursor entre [ OK ],
   [ Cancel ].

   Pulse tabulador para pasar el cursor a [ OK ] y pulse Enter para
   proseguir con la instalacion.

     --------------------------------------------------------------

  2.6.5. Creacion de particiones con Disklabel

   Tendra que crear particiones dentro de las <<slices>> que haya
   creado. Recuerde que cada particion esta asociada a una letra
   entre la a y la hy que las particiones b, c y d tienen
   significados heredados que tendra que respetar.

   Ciertas aplicaciones pueden optimizar su rendimiento de un esquema
   de particiones concreto, sobre todo si hace particiones repartidas
   en mas de un disco. Si embargo si esta es su primera instalacion
   de FreeBSD no necesita dedicarle demasiado tiempo a decidir como
   partir el disco duro. Es mucho mas importante que instale FreeBSD
   y empiece a aprender a usarlo. Siempre estaa tiempo de reinstalar
   FreeBSD y cambiar su esquema de particiones cuando este mas
   familiarizado con el sistema operativo.

   El siguiente esquema consta de cuatro particiones: una para la
   swap y tres para los sistemas de ficheros.

   Tabla 2-2. Estructura de particiones del primer disco

             Sistema                                                  
   Particion    de     Tamano                Descripcion
             ficheros           
                                Este es el sistema de ficheros raiz.  
                                el resto de sistemas de ficheros se   
                                montaran en algun punto de este       
                                sistema raiz. 100 MB es un tamano     
                                razonable para el. No es el mejor     
   a         /        512 MB    sitio para almacenar muchos datos y   
                                la instalacion de FreeBSD escribira   
                                cerca de 40 MB de datos en ella. El   
                                resto del espacio es para datos       
                                temporales y por si futuras versiones 
                                de FreeBSD necesitan mas espacio en   
                                /.                                    
                                Esta particion es el espacio de       
                                memoria de intercambio (o <<swap>>)   
                                del sistema. La eleccion de la        
                                cantidad correcta de swap es casi un  
                                arte en si mismo. Hay una regla       
                                basica que es asignar a la swap el    
                                doble o el triple de MB de los que    
                                haya en la memoria fisica (RAM) del   
                                sistema. Deberia tener al menos 64 MB 
                                de swap asi que si tiene menos de     
                                32 MB de RAM asignele a su swap       
                                64 MB.                                
   b         N/A      2-3 x RAM                                       
                                
 Si tiene mas de un disco puede      
                                poner espacio swap en cada disco.     
                                FreeBSD usara ambas swap con el       
                                resultado de acelerar notablemente el 
                                intercambio de paginas de memoria.    
                                Calcule el total de swap que necesita 
                                (por ejemplo 128 MB) y divida esa     
                                cantidad por el numero de discos que  
                                tenga (por ejemplo dos) y ya tiene la 
                                cantidad de espacio que debe destinar 
                                a swap en cada uno de sus discos. En  
                                nuestro ejemplo 64 MB de swap por     
                                disco.                                
                                El directorio /var contiene ficheros  
                                que estan en continuo cambio, como    
                                <<logs>> y otros ficheros             
                                administrativos. Muchos de esos       
                                ficheros son una consecuencia o son   
   e         /var     256 MB to de gran ayuda para el correcto        
                      1024 MB   funcionamiento diario de FreeBSD.     
                                FreeBSD ubica dichos ficheros en ese  
                                sistema de ficheros para optimizar el 
                                acceso a los mismos sin afectar a     
                                otros ficheros ni directorios que     
                                tienen similar patron de accesos.     
                      Resto del El resto de sus ficheros pueden       
   f         /usr     disco(al  almacenarse en /usr y sus             
                      menos     subdirectorios.                       
                      2 GB)     

     AvisoLos valores que se han mostrado son simples ejemplos y se
     recomienda su uso exclusivamente a usuarios experimentados.
     Recomendamos a los usuarios que utilicen la opcion Auto
     Defaults, que elegira unas proporciones adecuadas para el
     espacio que encuentre disponible.

   Si va a instalar FreeBSD en mas de un disco puede crear
   particiones el las demas <<slices>> que haya creado. La forma mas
   facil de hacerlo es creando dos particiones en cada disco, una
   para la swap y la otra para los sistemas de ficheros.

   Tabla 2-3. Esquema de particiones para varios discos

   Particion Sistema de     Tamano               Descripcion          
              ficheros                  
                                        Tal y como se ha explicado    
                                        puede repartir su espacio     
                                        swap entre varios discos.     
                                        Aunque piense que la          
   b         N/A        Ver descripcion particion a esta libre la     
                                        costumbre (y se dice que      
                                        <<las costumbres son leyes>>  
                                        dicta que el espacio swap     
                                        reside en la particion b.     
                                        El resto del disco puede      
                                        dejarse en una sola           
                                        particion. Esto podria        
                                        ubicarse simplemente en la    
                                        particion a en lugar de en la 
                                        e. Sin embargo la costumbre   
                                        dice que la particion a de    
                                        una <<slice>> esta reservada  
                                        para el sistema de ficheros   
                                        que ha de albergar el sistema 
                                        de ficheros raiz (/). No      
                                        tiene por que seguir la       
   e         /discon    Resto del disco costumbre pero tenga en       
                                        cuenta que sysinstall si que  
                                        lo hace, asi que si la sigue  
                                        sabe que esta haciendo una    
                                        instalacion mas limpia. Puede 
                                        montar los sistemas de        
                                        ficheros donde prefiera; este 
                                        ejemplo le sugiere que los    
                                        monte como directorios        
                                        /discon, donde n es un numero 
                                        que cambia en cada disco. Por 
                                        supuesto que puede usar el    
                                        esquema que prefiera.         

   Una vez que haya elegido el esquema de particiones creelo en
   sysinstall. Vera este mensaje:

                                  Message
  Now, you need to create BSD partitions inside of the fdisk
  partition(s) just created. If you have a reasonable amount of disk
  space (200MB or more) and don't have any special requirements, simply
  use the (A)uto command to allocate space automatically. If you have
  more specific needs or just don't care for the layout chosen by
  (A)uto, press F1 for more information on manual layout. 

                                 [  OK  ]
                           [ Press enter or space ]

   Es decir:

                                  Message
  Debe crear particiones BSD dentro de las 'particiones
  fdisk' que acaba de crear.  Si tiene una cantidad de espacio en
  disco razonablemente grande (200MB o mas) y no tiene necesidades
  especiales puede simplemente usar el comando (A)uto para asignar
  el espacio automaticamente. Si tiene necesidades mas concretas o
  simplemente no le gusta la estructura que le da (A)uto pulse
  F1 y obtendra mas informacion sobre la creacion manual de
  la estructura.

                                 [  OK  ]
                           [ Pulse Intro o Espacio ]

   Al pulsar Intro arrancara el editor de particiones de FreeBSD,
   Disklabel.

   La Figura 2-17 muestra lo que vera cuando arranque Disklabel. La
   pantalla se divide en tres secciones.

   Las primeras lineas muestran el nombre del disco en el que estamos
   haciendo cambios y el de la <<slice>> que contiene las particiones
   que estamos creando (Disklabel las muestra bajo Partition name
   (<<nombre de particion>>) en lugar de hacerlo como <<slices>>).
   Vemos tambien ahi la cantidad de espacio libre en la <<slice>>,
   esto es, el espacio que hay asignado a la <<slice>> pero que aun
   no ha sido asignado a ninguna particion.

   En la mitad de la pantalla se muestran las particiones que se han
   creado, el nombre de los sistemas de ficheros que contiene cada
   particion, sus tamanos y algunas opciones relacionadas con la
   creacion de sistemas de ficheros.

   La tercera parte de la pantalla, la de mas abajo, muestra los
   atajos de teclado que pueden usarse en Disklabel.

   Figura 2-17. El editor Disklabel

   Disklabel puede crear automaticamente particiones y asignarles
   tamanos por omision. Estos tamanos se calculan con la ayuda de un
   algoritmo interno de dimensionamiento de particiones que analiza
   el tamano del disco. Puede probarlo pulsando A. Vera una pantalla
   similar a la que aparece en la Figura 2-18. Dependiendo del tama~o
   del disco que este usando los valores por omision pueden o no ser
   los apropiados. Esto no es algo de lo que deba preocuparse dado
   que no esta obligado a aceptar esos valores por omision.

     Nota: En el esquema de particiones por omision el directorio
     /tmp tiene su propia particion en lugar de formar parte de /.
     Esto ayuda a evitar el desbordamiento de / con ficheros
     temporales.

   Figura 2-18. Editor Disklabel con valores por omision

   Si decide no usar los valores por defecto para las particiones y
   quiere reemplazar tales valores por los suyos use las flechas:
   elija la primera particion y pulse D para borrarla. Repita el
   proceso para borrar todas las particiones que desee.

   Vamos a crear la primera particion (a, montada como / o raiz).
   Seleccione la <<slice>> adecuada y pulse C. Aparecera un dialogo
   pidiendole que escriba el tamano de la nueva particion (como se
   muestra en la in Figura 2-19). Puede introducir el tamano
   expresado en bloques de disco o como un numero seguido de una M
   para expresarlo en megabytes, una G para usar gygabytes o una C si
   quiere expresarlo en cilindros.

   Figura 2-19. Liberar espacio para la particion raiz

   El tamano por omision que se muestra creara una particion que
   ocupe el resto de la <<slice>>. Si va a usar los tamanos de
   particion que se daban en el ejemplo anterior borre el texto
   existente pulsando Retroceso; escriba 64M, como se puede ver en la
   Figura 2-20. Despues pulse [ OK ].

   Figura 2-20. Edicion del tamano de la particion raiz

   Una vez elegido el tamano de la particion tendra que elegir si
   esta particion ha de contener un sistema de ficheros o espacio
   swap y escribir lo que corresponda en una pantalla como la que se
   muestra en la Figura 2-21. Esta primera particion contendra un
   sistema de ficheros, asi que seleccionamos FS y pulsamos Intro.

   Figura 2-21. Elegir el tipo de particion raiz

   Para acabar, dado que esta creando un sistema de ficheros, tendra
   que decirle a Disklabel donde hay que montarlo. La pantalla se
   muestra en la Figura 2-22. El punto de montaje del sistema de
   ficheros raiz es /, asi que tendra que teclear /y luego pulsar
   Intro.

   Figura 2-22. Elegir el punto de montaje del sistema de ficheros
   raiz

   La pantalla le mostrara ahora la particion que acaba de crear.
   Repita el procedimiento todas las veces que necesite con las demas
   particiones. Cuando cree la particion swap no se le pedira el
   punto de montaje puesto que las particiones swap nunca se montan
   como tales. Cuando cree la ultima particion /usr, puede dejar el
   tamano que se le sugiere, esto es, usar el resto del espacio en la
   <<slice>>.

   La ultima pantalla del editor Disklabel sera muy parecida a la
   Figura 2-23, aunque los valores pueden ser diferentes. Pulse Q
   para salir del editor.

   Figura 2-23. Editor Disklabel

     --------------------------------------------------------------

2.7. Eleccion de que instalar

  2.7.1. Eleccion del tipo de instalacion

   La eleccion de que tipo de instalacion debe hacer depende
   enormemente del uso que se va a dar al sistema y del espacio de
   disco disponible. El rango de opciones predefinidas esta entre
   hacer la instalacion mas pequena posible o instalarlo todo. Las
   personas con poco o ninguna experiencia en UNIX o FreeBSD deberan
   elegir alguna de las opciones predefinidas que se les ofrecen, a
   las que llamaremos distribuciones (de <<distribution set>>) tal y
   como aparecen en el menu de sysinstall. Una instalacion .a medida
   es algo mas adecuado para para usuarios con mas experiencia.

   Si pulsa F1 podra acceder a mas informacion sobre las opciones de
   tipo de instalacion y que contiene cada distribucion. Cuando acabe
   de consultar la ayuda pulse Intro y volvera al al menu de
   seleccion de instalacion de distribuciones.

   Si tiene intencion de instalar un interfaz grafico de usuario
   tendra que instalar una de las distribuciones cuyo nombre comienza
   por X. La configuracion del servidor X y la seleccion de un
   entorno de escritorio son algunas de las tareas que tendra una vez
   instalado FreeBSD. Tiene mas informacion sobre la configuracion de
   un servidor X en Capitulo 5.

   La version de X11 por omision en FreeBSD es Xorg.

   Si preve compilar un kernel a medida selecciones la opcion que
   incluye el codigo fuente. Para mas informacion sobre las razones
   por las que debe compilarse un kernel a medida y sobre como
   compilarlo consulte el Capitulo 8.

   Evidentemente el sistema mas versatil es aquel que lo tiene todo.
   Si dispone de espacio de disco suficiente seleccione All, como se
   muestra en la Figura 2-24, usando las flechas y pulsando Intro. Si
   el espacio en disco es limitado piense en usar alguna de las otras
   opciones. No pierda con ello demasiado tiempo puesto que el resto
   de distribuciones pueden anadirse en cualquier momento tras la
   intalacion.

   Figura 2-24. Eleccion de distribuciones

     --------------------------------------------------------------

  2.7.2. Instalacion de la coleccion de ports

   Tras seleccionar la distribucion elegida se le presentara la
   opcion de instalar el arbol de ports, o Coleccion de Ports, de
   FreeBSD. Los ports son una forma facil y comoda de instalar
   software. El arbol de ports no contiene el codigo fuente necesario
   para compilar software; es una gran coleccion de ficheros que
   automatiza la descarga, la compilacion y la instalacion de
   paquetes de software de todo tipo. El Capitulo 4 explica con
   detalle como utilizar los ports.

   El programa de instalacion no comprueba si tiene espacio
   suficiente. Seleccione esta opcion si dispone de sitio en el
   disco. En FreeBSD 8.2 los ports ocupan cerca de 417 MB en disco.
   Puede asumir tranquilamente que en las nuevas versiones del
   sistema iran ocupando mas y mas.

                          User Confirmation Requested
  Would you like to install the FreeBSD ports collection?

  This will give you ready access to over 20,000 ported software packages,
  at a cost of around 417 MB of disk space when "clean" and possibly much
  more than that if a lot of the distribution tarballs are loaded
  (unless you have the extra CDs from a FreeBSD CD/DVD distribution
  available and can mount it on /cdrom, in which case this is far less
  of a problem).

  The Ports Collection is a very valuable resource and well worth having
  on your /usr partition, so it is advisable to say Yes to this option.

  For more information on the Ports Collection & the latest ports,
  visit:
      http://www.FreeBSD.org/ports 

                               [ Yes ]     No

   Es decir:

  Peticion de confirmacion del usuario
  ?Quiere instalar la coleccion de ports de FreeBSD?

  Tendra acceso inmediato a mas de 20,000 paquetes de software listos
  para usarse en FreeBSD, aunque necesitara cerca de 417 MB de
  espacio en disco como minimo y posiblemente mucho mas
  si descarga los 'tarballs' de codigo fuente (aunque si tiene los CD
  extra de una version de FreeBSD en CD/DVD puede montarlos en /cdrom, de forma
  que esto dejaria de ser un problema).

  La coleccion de ports es un recurso extremadamente valioso y es muy
  recomendable que la instale en su particion /usr, asi que deberia
  responder Si a la siguiente pregunta.

  Si quiere estar al tanto de las ultimas novedades y las ultimas
  entradas en la coleccion de ports visite:
      http://www.FreeBSD.org/ports

                               [ Yes ]     No

   Seleccione [ Yes ] con las flechas e instale los ports o [ No ]
   para obviar la pregunta. Pulse Intro para seguir con la
   instalacion. Volvemos al menu de eleccion de distribuciones.

   Figura 2-25. Confirmar la eleccion de distribuciones

   Si ya ha elegido todo lo que necesita seleccione Exit con las
   flechas, asegurese de que [ OK ] esta seleccionado tambien y pulse
   Intro.

     --------------------------------------------------------------

2.8. Eleccion del medio de instalacion

   Si va a instalar FreeBSD desde CDROM o DVD seleccione Install from
   a FreeBSD CD/DVD con las flechas. Una vez [ OK ] esta seleccionado
   pulse Intro y siga adelante con la instalacion.

   Si quiere usar otro metodo de instalacion seleccione la opcion
   correspondiente y siga las instrucciones.

   Pulse F1 si necesita acceder a la ayuda del medio de instalacion
   elegido. Pulse Intro para regresar al menu de seleccion de medios.

   Figura 2-26. Choose Installation Media

     Tipos de instalacion desde FTP: Hay tres tipos de instalacion
     por FTP entre las que puede elegir: FTP activo, FTP pasivo o a
     traves de un proxy HTTP.

     FTP Activo: Install from an FTP server, es decir: <<Instalar
     desde un servidor FTP>>

             Esta opcion hara que todas las transferencias FTP usen
             el modo <<Activo>>. No funcionara a traves de
             cortafuegos pero seguramente funcionara con viejos
             servidores FTP que no soportan el modo pasivo. Si su
             conexion se cuelga cuando usa el modo pasivo (el modo
             por omision) pruebe el modo activo.

     FTP Pasivo: Install from an FTP server through a firewall, es
     decir <<Instalar desde un servidor FTP tras un cortafuegos>>.

             Esta opcion configura sysinstall para que use el modo
             <<Pasivo>> para todas las operaciones FTP. Esto permite
             al usuario pasar a traves de cortafuegos que no permiten
             conexiones entrantes a puertos TCP aleatorios.

     FTP via un proxy HTTP: Install from an FTP server through a http
     proxy, es decir <<Instalar desde un un servidor FTP via un proxy
     HTTP>>.

             Esta opcion configura sysinstall para que use el
             protocolo HTTP (como si fuera un navegador web) para
             conectarse a un proxy en todas las operaciones FTP. El
             proxy traducira las peticiones del usuario de forma que
             pasaran a traves de un cortafuegos que no permita ningun
             tipo de conexiones FTP pero ofrezca un proxy HTTP.
             Tendra que configurar los datos del proxy ademas de los
             del servidor FTP.

     Si quiere usar un servidor proxy FTP tendra que usar el nombre
     del servidor con el que realmente quiere conectar como nombre de
     usuario seguido de un signo <<@>>. Veamos un ejemplo. Quiere
     usted instalar desde ftp.FreeBSD.org a traves del servidor proxy
     FTP talycual.ejemplo.com, que escucha en el puerto 1024.

     Vaya al menu opciones, ponga ftp@ftp.FreeBSD.org como nombre de
     usuario FTP, y su direccion de correo electronico como
     contrasena. El medio de instalacion sera FTP (o FTP pasivo si el
     proxy lo permite) y la URL
     ftp://talycual.ejemplo.com:1234/pub/FreeBSD.

     Dado accede al directorio /pub/FreeBSD de ftp.FreeBSD.org a
     traves del proxy talycual.ejemplo.com puede usted instalar desde
     esta maquina, que ira descargando los ficheros que necesite
     desde ftp.FreeBSD.org a medida que el proceso de instalacion los
     vaya requiriendo.

     --------------------------------------------------------------

2.9. El punto sin retorno

   A partir de aqui entramos en la instalacion propiamente dicha.
   Esta es la ultima oportunidad antes de empezar a escribir datos en
   el disco duro.

                        User Confirmation Requested
  Last Chance! Are you SURE you want to continue the installation?

  If you're running this on a disk with data you wish to save then WE
  STRONGLY ENCOURAGE YOU TO MAKE PROPER BACKUPS before proceeding!

  We can take no responsibility for lost disk contents! 

                              [ Yes ]    No

   Es decir:

    Peticion de confirmacion del usuario
  !Ultima oportunidad!.  ?SEGURO que quiere seguir con la instalacion?

  Si esta ejecutando este proceso en un disco que contenga datos que
  quiera coservar LE RECOMENDAMOS ENCARECIDAMENTE QUE HAGA COPIAS DE
  SEGURIDAD FIABLES antes de instalar.

  No podemos asumir nigun tipo de responsabilidad por datos que pierda.

                              [ Yes ]    No

   Seleccione [ Yes ] y pulse Intro.

   La instalacion tardara mas o menos tiempo segun la distribucion
   que haya elegido, el medio de instalacion y la velocidad del
   sistema. Se le iran mostrando mensajes durante el proceso para
   irle informando de como van las cosas.

   Cuando acabe la instalacion vera un mensaje como este:

                                Message

 Congratulations! You now have FreeBSD installed on your system.

 We will now move on to the final configuration questions.
 For any option you do not wish to configure, simply select No.

 If you wish to re-enter this utility after the system is up, you may
 do so by typing: sysinstall . 

                                  [ OK ]

                       [  Press enter to continue  ]

   Es decir:

                                Mensaje

          !Enhorabuena! Ha instalado FreeBSD en su sistema.

 Ahora terminaremos la configuracion del sistema.  Si hay alguna
 opcion que no quiere configurar bastara con que elija No.

 Si en algun momento quiere regresar a este programa escriba
 sysinstall .

                                  [ OK ]

                       [  Pulse Intro  ]

   Pulse Intro; pasaremos a acometer ciertas tareas posteriores a la
   instalacion.

   Si selecciona [ No ] y pulsa Intro la instalacion se detendra para
   evitar hacer mas modificaciones en su sistema. Vera el el
   siguiente mensaje.

                                 Message
 Installation complete with some errors.  You may wish to scroll
 through the debugging messages on VTY1 with the scroll-lock feature.
 You can also choose "No" at the next prompt and go back into the
 installation menus to retry whichever operations have failed.

                                  [ OK ]

   Es decir:

                                 Mensaje
 La instalacion ha finalizado con errores.  Puede moverse por la
 pantalla de mensajes de depuracion de VTY1 tras pulsar la tecla
 de Bloqueo de Pantalla.  Tambien puede elegir "No" en el proximo
 menu y volver a los menus de instalacion y repetir cualquier
 operacion que haya fallado.

                                  [ OK ]

   Este mensaje se ha generado porque no se ha instalado nada. Pulse
   Intro para volver al menun principal y salir de la instalacion.

     --------------------------------------------------------------

2.10. Despues de la instalacion

   Para poder terminar una instalacion de FreeBSD que merezca tal
   nombre debemos responder todavia a unas cuantas preguntas. Para
   ello debemos entrar en la configuracion antes de entrar en el
   nuevo sistema FreeBSD o una vez en dentro del sistema desde
   sysinstall, seleccionando Configure.

     --------------------------------------------------------------

  2.10.1. Network Device Configuration

   Si ha tenido que configurar PPP para poder instalar desde FTP esta
   pantalla no aparecera. Puede modificar la configuracion tal y como
   se ha explicado mas arriba.

   Si necesita informacion sobre redes de area local y la
   configuracion de FreeBSD necesaria para que haga de
   <<gateway/router>> consulte el Advanced Networking chapter.

                       User Confirmation Requested
    Would you like to configure any Ethernet or SLIP/PPP network devices?

                              [ Yes ]   No

   Si quiere configurar dispositivos de red seleccione [ Yes ] y
   pulse Intro. Si no quiere seleccione [ No ].

   Figura 2-27. Seleccion de un dispositivo Ethernet

   Seleccione con las flechas el interfaz de red que desea configurar
   y pulse Enter.

                       User Confirmation Requested
        Do you want to try IPv6 configuration of the interface?

                               Yes   [ No ]

   En la red local del ejemplo el tipo de protocolo de Internet que
   habia (IPv4) parecia mas que suficiente, asi que se eligio [ No ].

   Si puede conectar con alguna red IPv6 mediante un servidor RA
   elija [ Yes ] y pulse Intro. La busqueda de servidores RA se hara
   en unos instantes.

                              User Confirmation Requested
         Do you want to try DHCP configuration of the interface?

                               Yes   [ No ]

   Si no necesita DHCP seleccione [ No ] con las flechas y pulse
   Intro.

   Si selecciona [ Yes ] ejecutara dhclient y, si ha funcionado,
   completara los datos de configuracion automaticamente. Para mas
   informacion consulte la Seccion 29.10.

   La siguiente ilustracion muestra la configuracion de un
   dispositivo Ethernet en un sistema que cumplira las funciones de
   <<gateway>> en una red local.

   Figura 2-28. Configuracion de ed0

   Use el tabulador para ir pasando de un campo al siguiente una vez
   que los vaya rellenando:

   Host

           El nombre de la maquina; por ejemplo, k6-2.ejemplo.com.

   Dominio

           El nombre del dominio al que pertenece la maquina, en este
           caso ejemplo.com.

   <<Gateway>>IPv4

           La direccion IP del sistema que reenvia paquetes a
           destinos fuera de la red local. Debe rellenar este campo
           si esta funcion la realiza una maquina que forme parte de
           la red. Dejelo en blanco si el sistema es el enlace de su
           red con Internet. El <<gateway>> recibe tambien los
           nombres de puerta de enlace o ruta por omision.

   Servidor de nombres

           Direccion IP de su servidor local de DNS. En la red del
           ejemplo no hay servidor DNS local asi que se ha
           introducido la direccion IP del servidor DNS del proveedor
           de Internet: 208.163.10.2.

   Direccion IPv4

           En este interfaz se usara la direccion IP 192.168.0.1

   Mascara de red

           En esta red local se usa un bloque de redes de Clase C
           192.168.0.0 - 192.168.0.255. La mascara de red es, por
           tanto, 255.255.255.0.

   Opciones adicionales de ifconfig

           Cualquiera de las opciones que quiera agregar a su
           interfaz mediante ifconfig. En nuestro caso no habia
           ninguna.

   Utilice el tabulador para seleccionar [ OK ] cuando haya acabado y
   pulseIntro.

                       User Confirmation Requested
         Would you like to Bring Up the ed0 interface right now?

                              [ Yes ]   No

   Seleccione [ Yes ] y pulse Enter si quiere conectar inmediatamente
   su sistema a la red mediante el o los interfaces que acaba de
   configurar, pero recuerde que aun tendra que reiniciar la maquina.

     --------------------------------------------------------------

  2.10.2. Configuracion del <<gateway>>

                        User Confirmation Requested
        Do you want this machine to function as a network gateway?

                               [ Yes ]    No

   Si el sistema hara de enlace de la red local y reenviara paquetes
   entre otras maquinas elija [ Yes ] y pulse Intro. Si la maquina es
   un nodo de una red elija [ No ] y pulse Intro.

     --------------------------------------------------------------

  2.10.3. Configuracion de servicios de internet

                       User Confirmation Requested
 Do you want to configure inetd and the network services that it provides?

                                Yes   [ No ]

   Si selecciona [ No ] varios servicios de la maquina, como telnetd
   y otros, no se activaran. Eso significa que los usuarios remotos
   no podran acceder al sistema mediante telnet. Los usuarios
   locales, en cambio, podran acceder a sistemas remotos mediante
   telnet.

   Dichos servicios pueden activarse en cualquier momento editando
   /etc/inetd.conf con el editor de texto que prefiera. Para mas
   informacion consulte la Seccion 29.14.1.

   Seleccione [ Yes ] si desea configurar estos servicios durante la
   instalacion. Se le mostrara el siguiente mensaje:

                       User Confirmation Requested
 The Internet Super Server (inetd) allows a number of simple Internet
 services to be enabled, including finger, ftp and telnetd.  Enabling
 these services may increase risk of security problems by increasing
 the exposure of your system.

 With this in mind, do you wish to enable inetd?

                              [ Yes ]   No

   Select [ Yes ] to continue.

                       User Confirmation Requested
 inetd(8) relies on its configuration file, /etc/inetd.conf, to determine
 which of its Internet services will be available.  The default FreeBSD
 inetd.conf(5) leaves all services disabled by default, so they must be
 specifically enabled in the configuration file before they will
 function, even once inetd(8) is enabled.  Note that services for
 IPv6 must be separately enabled from IPv4 services.

 Select [Yes] now to invoke an editor on /etc/inetd.conf, or [No] to
 use the current settings.

                              [ Yes ]   No

   Es decir:

       Peticion de confirmacion del usuario
 El Super Servidor de Internet (inetd) le permite activar diversos
 servicios sencillos de Internet, como finger, ftp y telnetd.  Si
 activa tales servicios puede sobreexponer su sistema al exterior, lo
 que puede incrementar el riesgo de tener problemas de seguridad.

 Dicho esto ?desea activar inetd?

                              [ Yes ]   No

   Si selecciona [ Yes ] podra anadir servicios borrando caracteres #
   al comienzo de las lineas correspondientes.

   Figura 2-29. Edicion de inetd.conf

   Una vez que haya anadido los servicios que quiera en el sistema
   pulse Esc y vera un menu en el que se le preguntara si quiere
   guardar los cambios.

     --------------------------------------------------------------

  2.10.4. Activar el acceso al sistema mediante SSH

                       User Confirmation Requested
                   Would you like to enable SSH login?
                            Yes        [  No  ]

   Si selecciona [ Yes ] activara sshd(8), el daemon de OpenSSH. De
   este modo sera posible el acceso remoto y seguro al sistema. Para
   mas informacion sobre OpenSSH visite Seccion 14.11.

     --------------------------------------------------------------

  2.10.5. FTP anonimo

                       User Confirmation Requested
  Do you want to have anonymous FTP access to this machine?

                               Yes    [ No ]

     --------------------------------------------------------------

    2.10.5.1. Rechazar el acceso al sistema mediante FTP anonimo

   si acepta la respuesta por omision ([ No ]) y pulsa Intro tenga en
   cuenta que los usuarios que tengan cuenta en la maquina podran
   seguir accediendo al sistema.

     --------------------------------------------------------------

    2.10.5.2. Aceptar el acceso al sistema mediante FTP anonimo

   Si decide aceptar conexiones FTP anonimas cualquiera podra
   conectarse al sistema. Antes de activar esta opcion deberia
   meditar sobre las implicaciones de seguridad de esa decision. Para
   mas informacion sobre la seguridad y FreeBSD consulte el Capitulo
   14.

   Si ha decidido activar el FTP anonimo seleccione con las flechas
   [ Yes ] y pulse Intro. Vera la siguiente pantalla (o una muy
   similar):

 This screen allows you to configure the anonymous FTP user.

 The following configuration values are editable:

 UID:     The user ID you wish to assign to the anonymous FTP user.
          All files uploaded will be owned by this ID.

 Group:   Which group you wish the anonymous FTP user to be in.

 Comment: String describing this user in /etc/passwd


 FTP Root Directory:

         Where files available for anonymous FTP will be kept.

 Upload subdirectory:

         Where files uploaded by anonymous FTP users will go.

   Es decir:

 En esta pantalla puede configurar el usuario de FTP
         anonimo.

 Puede editar los siguientes valores de la configuracion:

 UID:     El ID del usuario que quiere asignar al usuario anonimo de
          de FTP.  Todos los ficheros que se suban le  perteneceran.

 Group:   El grupo al que pertenecera el usuario FTP anonimo.

 Comment: La descripcion del usuario en /etc/passwd


 FTP Root Directory:

         Donde se guardaran contenidos para los usuarios anonimos.

 Upload subdirectory:

         Donde se guardaran los ficheros que suban los usuarios
         de FTP anonimo.

   Por omision el directorio raiz del ftp sera /var. Si no hay sitio
   suficiente para lo que prevea que va a necesitar puede usar /usr;
   puede poner el Directorio Raiz de FTP en /usr/ftp.

   Cuando haya terminado con la configuracion pulse Intro.

                           User Confirmation Requested
          Create a welcome message file for anonymous FTP users?

                               [ Yes ]    No

   Si selecciona [ Yes ] y pulsa Intro arrancara automaticamente un
   editor y podra crear un mensaje que vera los usuarios de FTP
   anonimo al conectarse a la maquina.

   Figura 2-30. Edicion del mensaje de bienvenida de FTP

   Vemos en accion un editor de texto llamado ee. Puede modificar el
   mensaje ahora mismo o hacerlo en cualquier otro momento con el
   editor de texto que prefiera. Observe el fichero y su ubicacion en
   la parte baja de la pantalla.

   Pulse Esc, aparecera una ventana flotante con la opcion por
   omision de to a) leave editor (salir del editor). Pulse Intro si
   quiere salir y seguir con lo que estaba haciendo. Pulse Intro de
   nuevo para guardar los cambios que hubiera hecho.

     --------------------------------------------------------------

  2.10.6. Configuracion de NFS

   NFS (<<Network File System>> (de Network File System, o Sistema de
   Ficheros en Red) le permitira compartir ficheros a traves de una
   red. Una maquina puede configurarse como servidor, como cliente o
   ambos. Para ma informacion consulte la Seccion 29.6.

     --------------------------------------------------------------

    2.10.6.1. Servidor NFS

                        User Confirmation Requested
  Do you want to configure this machine as an NFS server?

                               Yes    [ No ]

   Si no tiene necesidad de usar un servidor NFS seleccione [ No ] y
   pulse Intro.

   Si ha elegido [ Yes ] vera un mensaje emergente indicando que hay
   que crear el fichero exports.

                                Message
 Operating as an NFS server means that you must first configure an
 /etc/exports file to indicate which hosts are allowed certain kinds of
 access to your local filesystems.
 Press [Enter] now to invoke an editor on /etc/exports
                                [ OK ]

   Es decir:

                                Mensaje
 Hacer funcionar un servidor NFS implica que tendra que configurar
 un fichero /etc/exports para indicar que hosts estaran autorizados a
 acceder de que manera a sus sistemas de ficheros locales.
 Pulse [Intro] para abrir /etc/exports en un editor
                                [ OK ]

   Pulse Intro para seguir adelante. Se abrira un editor de texto
   gracias al cual se podra editar y crear el fichero exports.

   Figura 2-31. Edicion de exports

   Puede editar el fichero ahora mismo o mas tarde con el editor de
   texto que prefiera. Observe que el nombre del fichero y su
   ubicacion aparecen en la parte de abajo de de la pantalla.

   Pulse Escape; aparecera un mensaje emergente que por omision le
   ofrecera a) leave editor (es decir, salir del editor). Pulse Intro
   para salir del editor y seguir adelante.

     --------------------------------------------------------------

    2.10.6.2. Cliente NFS

   El cliente NFS permite que su maquina pueda acceder a servidores
   NFS.

                        User Confirmation Requested
  Do you want to configure this machine as an NFS client?

                               Yes   [ No ]

   Utilice las flechas para elegir si quiere o no disponer de cliente
   NFS (respectivamente con [ Yes ] y [ No ] y pulse Intro.

     --------------------------------------------------------------

  2.10.7. Configuracion de la consola del sistema

   La consola del sistema tiene diversas opciones que puede usted
   adaptar a sus gustos o necesidades.

                       User Confirmation Requested
        Would you like to customize your system console settings?

                               [ Yes ]  No

   Si quiere ver y modificar las opciones seleccione [ Yes ] y pulse
   Intro.

   Figura 2-32. Opciones de configuracion de la consola del sistema

   Una opcion que suele elegirse es el uso del salvapantallas. Elija
   Saver y luego pulse Intro.

   Figura 2-33. Opciones del salvapantallas

   Desplacese arriba y abajo con las flechas por la lista de
   salvapantallas y elija el que prefiera pulsando Intro sobre el. Se
   le mostrara de nuevo el menu de configuracion de la consola.

   El intervalo por defecto es de 300 segundos. Si quiere cambiarlo
   seleccione Saver otra vez. Busque Timeout en el menu de opciones
   del salvapantallas y pulse Intro. Aparecera un mensaje en
   pantalla:

   Figura 2-34. Retardo del salvapantallas

   Asigne el retardo del salvapantallas a su gusto, seleccione [ OK ]
   y pulse Intro para volver al menu de configuracion de la consola
   del sistema.

   Figura 2-35. Salida del menu de configuracion de la consola del
   sistema

   Seleccione Exit y pulse Intro para seguir adelante con la
   configuracion necesaria tras la instalacion.

     --------------------------------------------------------------

  2.10.8. Configuracion de la zona horaria

   Si su sistema tiene correctamente configurada la zona horaria
   podra corregir cualquier automaticamente cualquier cambio horario
   regional, asi como cumplir adecuadamente con otras funciones
   relacionadas con zonas horarias.

   El ejemplo que se muestra en las capturas de pantalla es de una
   maquina ubicada en la zona horaria del Este de los EEUU.

                       User Confirmation Requested
           Would you like to set this machine's time zone now?

                             [ Yes ]   No

   Seleccione [ Yes ] y pulse Intro. Vamos a configurar la zona
   horaria del sistema.

   Seleccione [ Yes ] y pulse Intro.

                        User Confirmation Requested
  Is this machine's CMOS clock set to UTC? If it is set to local time
  or you don't know, please choose NO here!

                               Yes   [ No ]

   Seleccione [ Yes ] o [ No ] segun este configurado el reloj del
   sistema y pulse Intro.

   Figura 2-36. Eleccion de region

   Elija la zona adecuada mediante las flechas y pulse Intro.

   Figura 2-37. Eleccion de pais

   Elija el pais adecuado con las flechas y pulse Intro.

   Figura 2-38. Eleccion de zona horaria

   Elija la zona horaria adecuada con las flechas y pulse Intro.

                             Confirmation
             Does the abbreviation 'EDT' look reasonable?

                             [ Yes ]   No

   Confirme si la abreviatura de la zona horaria es la correcta.
   Cuando todo este correcto pulse Intro y siga adelante.

     --------------------------------------------------------------

  2.10.9. Compatibilidad con Linux(R)

                       User Confirmation Requested
           Would you like to enable Linux binary compatibility?

                             [ Yes ]   No

   Si selecciona [ Yes ] y pulsa Intro podra ejecutar software Linux
   en FreeBSD. La instalacion anadira los paquetes necesarios para
   poder tener compatibilidad binaria con Linux.

   Si realiza la instalacion por FTP la maquina necesitara conectarse
   a Internet. A veces los servidores ftp no tienen todas las
   distribuciones, de forma que si no puede instalar la distribucion
   de compatibilidad con Linux no se preocupe, puede probar con otro
   servidor o instalarla mas tarde.

     --------------------------------------------------------------

  2.10.10. Configuracion del raton

   Esta opcion le permitira cortar y pegar texto en consola y en
   otros programas mediante un raton de tres botones. Consulte
   moused(8) si usa uno de 2 botones, es posible emular ese tercer
   boton. En el siguiente ejemplo veremos la configuracion de un
   raton <<no USB>> (es decir, PS/2 o de puerto COM):

                       User Confirmation Requested
          Does this system have a PS/2, serial, or bus mouse?

                             [ Yes ]    No

   Seleccione [ Yes ] si tiene un raton que no sea USB o por el
   contrario seleccione [ No ] si tiene un raton USB. Despues pulse
   Intro.

   Figura 2-39. Elija el protocolo que usa el raton

   Seleccione Type usando las flechas y pulse Intro.

   Figura 2-40. Ajuste del protocolo del raton

   En el ejemplo se ha usado un raton PS/2, asi que Auto era
   correcto. Para cambiar el protocolo use las flechas para moverse
   por el menu y elegir otra opcion. Para salir seleccione [ OK ] y
   pulse Intro.

   Figura 2-41. Configuracion del puerto del raton

   Seleccione Port y pulse Intro.

   Figura 2-42. Configuracion del puerto del raton

   El sistema de ejemplo tiene un ratona PS/2, de forma que la
   configuracion por omision basta. Si quiere modificarla utilice las
   flechas y despues pulseIntro.

   Figura 2-43. Arranque del daemon del raton

   Por ultimo, utilice las flechas para elegir Enabley pulse Intro;
   asi se activa y prueba el daemon del raton.

   Figura 2-44. Prueba del daemon del raton

   Mueva el raton un poco por la pantalla hasta asegurarse de que el
   cursor responde adecuadamente. Si todo es correcto seleccione
   [ Yes ] y pulse Intro. Si hay algo que no funcione correctamente
   seleccione [ No ] e intentelo con otras opciones de configuracion.

   Seleccione Exit y pulse Intro para volver a la configuracion del
   sistema.

     --------------------------------------------------------------

  2.10.11. Instalacion de <<packages>>

   Los <<packages>> son binarios precompilados; son una forma muy
   comoda de instalar software.

   Veamos la instalacion de un <<package>> Este es un buen momento
   para instalar <<packages>> si asi lo desea. De todos modos una vez
   concluida la instalacion puede entrar cuando quiera a sysinstall e
   instalar lo que necesite.

                      User Confirmation Requested
  The FreeBSD package collection is a collection of hundreds of
  ready-to-run applications, from text editors to games to WEB servers
  and more. Would you like to browse the collection now?

                             [ Yes ]   No

   Elija [ Yes ] y pulse Intro: vera la pantalla de seleccion de
   paquetes:

   Figura 2-45. Categorias de <<packages>>

   Los <<packages>> presentes en el medio de instalacion que este
   accesible en cada momento son los unicos que se pueden instalar.

   Todos los <<packages>> disponibles en el medio se mostraran al
   seleccionar la categoria All. Elija una categoria y pulse Intro.

   Al seleccionar una categoria aparecera un menu con los paquetes
   disponibles existentes en la misma:

   Figura 2-46. Seleccion de <<packages>>

   Hemos elegido la shell bash. Seleccione tantos <<packages>> como
   quiera instalar y pulse Espacio. Se mostrara una breve descripcion
   de cada <<package>> en la esquina inferior izquierda de la
   pantalla.

   Pulsando el Tabulador desplazara el cursor entre el ultimo
   <<package>> que haya seleccionado, [ OK ] y [ Cancel ].

   Cuando haya seleccionado todos los <<packages>> que quiera
   instalar pulse Tabulador una sola vez para que el cursor pase a
   [ OK ] y pulse Intro, lo que le llevara al menu de seleccion de
   <<packages>>.

   Las flechas <<izquierda>> y <<derecha>> pueden usarse para mover
   el cursor entre [ OK ] y [ Cancel ]. Use esto para seleccionar
   [ OK ] y pulsar Intro para volver al menu de seleccion de
   <<packages>>.

   Figura 2-47. Instalacion de <<packages>>

   Utilice el tabulador y las flechas para seleccionar [ Install ] y
   pulse Intro. Se le pedira que confirme que quiere instalar
   <<packages>>:

   Figura 2-48. Confirmacion previa a la instalacion de <<packages>>

   Si selecciona [ OK ] y pulsa Intro comenzara la instalacion de
   <<packages>>. Iran apareciendo mensajes relacionados con los
   diversos procesos de instalacion hasta que se cumplan todos. Este
   atento por si aparecieran mensajes de error.

   Tras la instalacion de <<packages>> nos quedan unos toques finales
   a la configuracion. Si no ha elegido ningun <<package>> y quiere
   regresar al menu de configuracion seleccione Install de todos
   modos.

     --------------------------------------------------------------

  2.10.12. Anadir usuarios y grupos

   Deberi al menos anadir un usuario al sistema para poder usarlo
   para acceder al sistema una vez reiniciado sin tener que recurrir
   a root. La particion raiz suele ser pequena y ejecutar
   aplicaciones como root tiene a llenarla rapidamente. Pero hay un
   peligro mucho mayor:

                      User Confirmation Requested
  Would you like to add any initial user accounts to the system? Adding
  at least one account for yourself at this stage is suggested since
  working as the "root" user is dangerous (it is easy to do things which
  adversely affect the entire system).

                             [ Yes ]   No

   Es decir:

      Peticion de confirmacion del usuario
  ?Quiere anadir algun usuario al sistema? Le sugerimos que anada al menos
  uno para usted puesto que trabajar como "root" es peligroso (es facil
  hacer algo con consecuencias en todo el sistema).

                             [ Yes ]   No

   Seleccione [ Yes ] y pulse Intro para anadir un usuario.

   Figura 2-49. Seleccion de <<Anadir un usuario>>

   Seleccione User con las flechas y y pulseIntro.

   Figura 2-50. Anadir la informacion del usuario

   A medida que vaya seleccionando los campos ayudandose del
   Tabulador se le iran mostrando las siguientes descripciones en la
   parte baja de la pantalla:

   Login ID

           El nombre del usuario (obligatorio).

   UID

           El ID numerico del usuario Dejelo en blanco si quiere el
           que sistema lo asigne automaticamente.

   Group

           El grupo al que pertenecera el usuario. Dejelo en blanco
           si quiere que el sistema lo asigne automaticamente.

   Password

           La contrasena del usuario. Rellene este campo con mucho
           cuidado.

   Full name

           El nombre completo del usuario (o un comentario
           descriptivo.

   Member groups

           Los grupos a los que este usuario pertenece, es decir, de
           los que hereda sus derechos de acceso.

   Home directory

           El directorio <<home>> del usuario; dejelo en blanco si
           quiere que el sistema lo asigne automaticamente.

   Login shell

           La shell con la que el usuario accedera al sistema. Dejela
           en blanco si le sirve /bin/sh, la shell por omision.

   En nuestro ejemplo no se eligio /bin/sh sino /usr/local/bin/bash,
   para lo cual hubo que instalar previamente la shell bash como
   <<package>>. No intente usar una shell que no existe o no podra
   acceder al sistema con ese usuario. La shell mas habitual en el
   mundo BSD es /bin/tcsh, la <<C shell>>.

   El usuario se anadio tambien al grupo wheel para que pueda
   convertirse en superusuario con privilegios de root.

   Cuando haya terminado pulse [ OK ] y volvera al menu de gestion de
   grupos y usuarios.

   Figura 2-51. Salir de la gestion de usuarios y grupos

   Los grupos tambien pueden anadirse en este momento si fuera
   necesario. Tambien puede hacerse desde sysinstall una vez
   culminada la instalacion.

   Cuando haya acabado de anadir usuarios seleccione Exit con las
   flechas y pulse Intro y siga con la instalacion.

     --------------------------------------------------------------

  2.10.13. Asignar contrasena aroot Password

                         Message
  Now you must set the system manager's password. 
  This is the password you'll use to log in as "root".

                          [ OK ]

                [ Press enter or space ]

   Es decir:

                         Mensaje
  Debe asignar la contrasena del administrador del sistema.
  Esta es la contrasena que usara cuando acceda al sistema como
  "root".

                          [ OK ]

                     [ Pulse Intro ]

   Pulse Intro y asignele una contrasena a root.

   Tendra que escribir la contrasena correctamente dos veces. No hay
   necesidad de decirle que es importante que recuerde esa
   contrasena.

 New password:
 Retype new password :

   La instalacion proseguira una vez que introduzca la contrasena
   correctamente dos veces.

     --------------------------------------------------------------

  2.10.14. Salir de la instalacion

   Si tiene que configurar servicios de red o cualquier otra cosa,
   puede hacerlo ahora mismo o tras terminar la instalacion
   ejecutando sysinstall.

                      User Confirmation Requested
  Visit the general configuration menu for a chance to set any last
  options?

                               Yes   [ No ]

   Seleccione [ No ] con las flechas y pulse Intro para volver al
   menu principal de la instalacion.

   Figura 2-52. Salir de la instalacion

   Seleccione [X Exit Install] con las flechas y pulse Intro. Se le
   pedira que confirme que quiere salir de la instalacion:

                      User Confirmation Requested
  Are you sure you wish to exit? The system will reboot (be sure to 
  remove any floppies/CDs/DVDs from the drives).

                             [ Yes ]   No

   Es decir:

             Peticion del Confirmacion al usuario
  ?Seguro que quiere salir?  El sistema reiniciara (compruebe que
  ha retirado los disquetes de la unidad).

                             [ Yes ]   No

   Seleccione [ Yes ] y extraiga el disquete si ha arrancado desde
   floppy. La unidad CDROM esta bloqueada hasta que la maquina
   comience a reiniciarse. La unidad CDROM se desbloquea y (actuando
   con agilidad felina) puede extraerse el CDROM.

   El sistema reiniciara. Este atento por si aparece algun mensaje de
   error.

   Seleccione [ Yes ] y extraiga el disquete si ha arrancado desde
   floppy. La unidad lectora de CDROM esta bloqueada hasta que la
   maquina comience a reiniciarse. La unidad CDROM se desbloquea y
   (actuando con agilidad felina) puede extraerse el CDROM.

   Si apareciera algun error durante el arranque consulte la Seccion
   2.10.16.

     --------------------------------------------------------------

  2.10.15. Configuracion de servicios de red

   Escrito por Tom Rhodes.

   La configuracion de servicios de red puede ser una tarea peliaguda
   para usuarios inexpertos si no tienen demasiados conocimientos en
   la materia. Todo lo relacionado con las redes (y ahi entra
   Internet) tiene una importancia critica en cualquier sistema
   operativo moderno y FreeBSD no es una excepcion. Es por esta razon
   que le sera muy util saber un poco sobre la conectividad en
   general de FreeBSD desde el momento mismo de la instalacion y los
   servicios de que puede disponer.

   Los servicios de red son programas que aceptan entradas de datos
   desde cualquier punto de la red. Se pone mucho empeno en evitar
   que estos programas puedan ser <<daninos>> pero por desgracia los
   programadores no son perfectos y de tanto en cuanto aparecen
   errores en los servicios de red que algunos logran aprovechar para
   hacer maldades. Es crucial que solamente active los servicios que
   sabe que va a necesitar. Si tiene dudas con alguno lo mejor es que
   no lo active hasta que no sea evidente que lo necesita. Puede
   activarlo cuando sea necesario ejecutando later by re-running
   sysinstall o utilizando el fichero /etc/rc.conf file.

   Si selecciona la opcion Networking vera un menu muy parecido a
   este:

   Figura 2-53. Primer nivel de servicios de red

   La primera opcion, Interfaces, la hemos visto en la Seccion
   2.10.1, asi que podemos ignorarla.

   Si selecciona la opcion AMD anadira al sistema la aplicacion
   montaje automatico de dispositivos de BSD. Suele usarse junto con
   el protocolo NFS protocol (ver mas adelante) para automatizar el
   montaje de sistemas de ficheros remotos. No es necesario que
   configure nada.

   La siguiente opcion es AMD Flags. Si la selecciona vera un menu
   emergente que le requerira parametros especificos de AMD. El menu
   dispone ya de un conjunto de opciones por omision:

 -a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map

   La opcion -a fija el punto de montaje por omision, en este caso
   /.amd_mnt. La opcion -l indica el log por omisio, aunque si usa
   syslogd todos los datos de log se enviaran al daemon de logs del
   sistema. El directorio /host se usa para montar sistemas de
   ficheros exportados desde una maquina remota, mientras que el
   directorio /net se usa para montar sistemas de ficheros exportados
   desde una direccion IP. El fichero /etc/amd.map define las
   opciones de exportacion que AMD exporta por omision.

   La opcion Anon FTP permite conexiones FTP anonimas. Seleccione
   esta opcion si quiere utilizar la maquina como servidor servidor
   FTP anonimo. Tenga muy en cuenta los riesgos de seguridad que
   conlleva esta opcion. Se le ofrecera otro menu en el que se
   explican en profundidad los riesgos de seguridad y la
   configuracion.

   El menu de configuracion Gateway preparara la maquina para que
   cumpla las funciones de pasarela, tal y como se ha explicado
   previamente. Puede utilizarlo tambien para desactivar la opcion
   Gateway si la seleccionon sin querer durante la instalacion.

   La opcion Inetd permite desactivar el daemon inetd(8).

   La opcion Mail se usa para configurar el MTA (de Mail Transfer
   Agent, agente de transferencia de correo) del sistema. Si
   selecciona esta opcion llegara al siguiente menu:

   Figura 2-54. Elegir el MTA del sistema

   Aqui se le pide que elija que MTA quiere instalar en su sistema.
   Un MTA no es otra cosa que un servidor de correo que entrega
   correo electronico a los usuarios del sistema o los que acceden a
   traves de Internet.

   Si selecciona Sendmail instalara el celebre sendmail, el MTA de
   FreeBSD por omision. La opcion Sendmail local hara que sendmail
   sea el MTA del sistema pero desactivara la capacidad de recibir
   correo entrante desde Internet. Las demas opciones, Postfix y Exim
   son en el fonodo similares a Sendmail. Ambas aplicaciones
   gestionan correo aunque hay usuarios que los elegirian como su MTA
   antes que sendmail.

   Tras elegir un MTA (o si ha elegido no usar ninguno) el menu de
   configuracion de red nos muestra la siguiente opcion:NFS client.

   La opcion NFS client configura el sistema para comunicarse con
   servidores NFS. Un servidor NFS permite que, mediante el uso del
   protocolo NFS, otras maquinas de la red puedan acceder a sus
   sistemas de ficheros. Si no hay mas maquinas en su red puede dejar
   la opcion sin seleccionar. El sistema puede necesitar mas
   configuracion; consulte la Seccion 29.6 para mas informacion sobre
   como configurar el cliente y el servidor.

   La siguiente opcion es NFS server, que le permitira configurar su
   sistema como servidor NFS. Con esta opcion anadira la informacion
   necesaria para el arranque de RPC, los servicios de llamada de
   procedimientos remotos. RPC se usa para coordinar conexiones entre
   sistemas y programas.

   La siguiente opcion es

   La siguiente opcion es Ntpdate, la sincronizacion de la hora. Al
   seleccionarla vera un menu como este:

   Figura 2-55. Configuracion de Ntpdate

   Elija en el menu el servidor mas cercano al lugar donde esta la
   maquina. De este modo la sincronozacion sera mas precisa, puesto
   que un servidor mas lejano puede padecer de conexiones con mas
   latencia.

   La siguiente opcion es PCNFSD. Esta opcion instalara el
   <<package>> net/pcnfsd desde la coleccion de Ports. Es una
   aplicacion muy util que da servicios de autentificacion NFS a
   sistemas que son incapaces de tenerlos por si mismos, como por
   ejemplo el sistema operativo MS-DOS de Microsoft.

   Si usa las flechas podra ver mas opciones:

   Figura 2-56. Segundo nivel de configuracion de red

   Las aplicaciones rpcbind(8), rpc.statd(8) y rpc.lockd(8) utilities
   se utilizan en las llamadas de procesos remotos (RPC). rpcbind
   gestiona la comunicacion entre servidores y clientes NFS; los
   servidores NFS lo necesitan para poder funcionar correctamente. El
   daemon rpc.statd se comunica con el daemon rpc.statd de otras
   maquinas para facilitar seguimiento de estado. La informacion de
   estado se deposita por omision en /var/db/statd.status. La
   siguiente opcion que vemos es rpc.lockd; si se selecciona facilita
   servicios de bloqueo de ficheros. Se suele usar conjuntamente con
   rpc.statd para monitorizar que maquina pide bloqueos y con que
   frecuencia. Si bien es cierto que estas dos utimas opciones son
   fantasticas para depuracion, tambien lo es que no son necesarias
   para que clientes y servidores NFS funcionen correctamente.

   El siguiente elemento de la lista es Routed, un daemon de
   encaminamiento. routed(8) gestiona tablas de rutas, encuentra
   <<routers>> multicast y, bajo peticion, facilita una copia de la
   tabla de rutas a cualquier maquina conectada fisicamente a la red.
   Suele usarse principalmente en maquinas que hacen funciones de
   pasarela de una red local. Si la selecciona vera un menu en el que
   se le requerira que indique la ubicacion de la aplicacion. Por
   omision ya esta configurada, asi que basta que la confirme
   pulsando Intro key. Se le presentara un menu mas, pidiendole esta
   vez parametros que quiera proporcionarle a routed. Por omision -q
   estara ya dispuesto y deberia aparecer asi en pantalla.

   La siguiente opcion que aparece es Rwhod; si la selecciona
   arrancara el daemon rwhod(8) durante el arranque del sistema. La
   aplicacion rwhod envia mensajes del sistema (en broadcast)
   periodicamente a traves de la red, o si esta en modo <<consumer>>
   los va recogiendo. Tiene mas informacion en las paginas de manual
   de ruptime(1) y rwho(1).

   La siguiente opcion del menu esta relacionada con el daemon
   sshd(8). Se trata del servidor de shell segura de OpenSSH y le
   recomendamos encarecidamente su uso en lugar de los servidores
   telnet y FTP. El servidor sshd se usa para crear una conexion
   segura de una maquina a otra mediante conexiones cifradas.

   La ultima opcion es TCP Extensions, que activa las extensiones TCP
   definidas en las RFC 1323 y RFC 1644. En algunas maquinas puede
   acelerar conexiones, pero tambien puede haber conexiones que se
   pierdan. No se recomienda su uso en servidores, pero puede ser de
   utilidad en maquinas aisladas.

   Una vez configurados los servicios de red, vaya al principio del
   menu ( X Exit)a o vuelva a sysinstall seleccionando dos veces X
   Exit y despues [X Exit Install].

     --------------------------------------------------------------

  2.10.16. El arranque de FreeBSD

    2.10.16.1. El arranque de FreeBSD/i386

   Si todo ha ido bien deberia ver una pantalla de mensajes pasando
   frente a usted hasta que llegue a lo que llamamos un <<login
   prompt>>. Puede volver a ver los mensajes del arranque pulsando
   Bloq Deslp y usando RePag y AvPag. Pulsando Bloq Despl otra vez
   volvera al prompt.

   El mensaje del arranque no puede mostrarse completo debido a las
   limitaciones del bufer, pero puede consultarse desde la shell
   mediante dmesg.

   Entre al sistema utilizando un nombre de usuario y contrasena que
   haya creado durante la instalacion (en nuestro ejemplo rpratt).
   Evite entrar al sistema como root salvo en los casos en los que
   sea estrictamente necesario.

   Este es un tipico mensaje de arranque (se ha eliminado la
   informacion de la version):

 Copyright (c) 1992-2002 The FreeBSD Project.
 Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
         The Regents of the University of California. All rights reserved.

 Timecounter "i8254"  frequency 1193182 Hz
 CPU: AMD-K6(tm) 3D processor (300.68-MHz 586-class CPU)
   Origin = "AuthenticAMD"  Id = 0x580  Stepping = 0
   Features=0x8001bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,MMX>
   AMD Features=0x80000800<SYSCALL,3DNow!>
 real memory  = 268435456 (262144K bytes)
 config> di sn0
 config> di lnc0
 config> di le0
 config> di ie0
 config> di fe0
 config> di cs0
 config> di bt0 
 config> di aic0
 config> di aha0
 config> di adv0
 config> q
 avail memory = 256311296 (250304K bytes)
 Preloaded elf kernel "kernel" at 0xc0491000.
 Preloaded userconfig_script "/boot/kernel.conf" at 0xc049109c.
 md0: Malloc disk
 Using $PIR table, 4 entries at 0xc00fde60
 npx0: <math processor> on motherboard
 npx0: INT 16 interface
 pcib0: <Host to PCI bridge> on motherboard
 pci0: <PCI bus> on pcib0
 pcib1: <VIA 82C598MVP (Apollo MVP3) PCI-PCI (AGP) bridge> at device 1.0 on pci0
 pci1: <PCI bus> on pcib1
 pci1: <Matrox MGA G200 AGP graphics accelerator> at 0.0 irq 11
 isab0: <VIA 82C586 PCI-ISA bridge> at device 7.0 on pci0
 isa0: <ISA bus> on isab0
 atapci0: <VIA 82C586 ATA33 controller> port 0xe000-0xe00f at device 7.1 on pci0
 ata0: at 0x1f0 irq 14 on atapci0
 ata1: at 0x170 irq 15 on atapci0
 uhci0: <VIA 83C572 USB controller> port 0xe400-0xe41f irq 10 at device 7.2 on pci0
 usb0: <VIA 83C572 USB controller> on uhci0
 usb0: USB revision 1.0
 uhub0: VIA UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
 uhub0: 2 ports with 2 removable, self powered
 chip1: <VIA 82C586B ACPI interface> at device 7.3 on pci0
 ed0: <NE2000 PCI Ethernet (RealTek 8029)> port 0xe800-0xe81f irq 9 at
 device 10.0 on pci0
 ed0: address 52:54:05:de:73:1b, type NE2000 (16 bit)
 isa0: too many dependant configs (8)
 isa0: unexpected small tag 14
 fdc0: <NEC 72065B or clone> at port 0x3f0-0x3f5,0x3f7 irq 6 drq 2 on isa0
 fdc0: FIFO enabled, 8 bytes threshold
 fd0: <1440-KB 3.5" drive> on fdc0 drive 0
 atkbdc0: <keyboard controller (i8042)> at port 0x60-0x64 on isa0
 atkbd0: <AT Keyboard> flags 0x1 irq 1 on atkbdc0
 kbd0 at atkbd0
 psm0: <PS/2 Mouse> irq 12 on atkbdc0
 psm0: model Generic PS/2 mouse, device ID 0
 vga0: <Generic ISA VGA> at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0
 sc0: <System console> at flags 0x1 on isa0
 sc0: VGA <16 virtual consoles, flags=0x300>
 sio0 at port 0x3f8-0x3ff irq 4 flags 0x10 on isa0
 sio0: type 16550A
 sio1 at port 0x2f8-0x2ff irq 3 on isa0
 sio1: type 16550A
 ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
 ppc0: FIFO with 16/16/15 bytes threshold
 ppbus0: IEEE1284 device found /NIBBLE
 Probing for PnP devices on ppbus0:
 plip0: <PLIP network interface> on ppbus0
 lpt0: <Printer> on ppbus0
 lpt0: Interrupt-driven port
 ppi0: <Parallel I/O> on ppbus0
 ad0: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata0-master using UDMA33
 ad2: 8063MB <IBM-DHEA-38451> [16383/16/63] at ata1-master using UDMA33
 acd0: CDROM <DELTA OTC-H101/ST3 F/W by OIPD> at ata0-slave using PIO4
 Mounting root from ufs:/dev/ad0s1a
 swapon: adding /dev/ad0s1b as swap device
 Automatic boot in progress...
 /dev/ad0s1a: FILESYSTEM CLEAN; SKIPPING CHECKS
 /dev/ad0s1a: clean, 48752 free (552 frags, 6025 blocks, 0.9% fragmentation)
 /dev/ad0s1f: FILESYSTEM CLEAN; SKIPPING CHECKS
 /dev/ad0s1f: clean, 128997 free (21 frags, 16122 blocks, 0.0% fragmentation)
 /dev/ad0s1g: FILESYSTEM CLEAN; SKIPPING CHECKS
 /dev/ad0s1g: clean, 3036299 free (43175 frags, 374073 blocks, 1.3% fragmentation)
 /dev/ad0s1e: filesystem CLEAN; SKIPPING CHECKS
 /dev/ad0s1e: clean, 128193 free (17 frags, 16022 blocks, 0.0% fragmentation)
 Doing initial network setup: hostname.
 ed0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
         inet6 fe80::5054::5ff::fede:731b%ed0 prefixlen 64 tentative scopeid 0x1
         ether 52:54:05:de:73:1b
 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
         inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8
         inet6 ::1 prefixlen 128
         inet 127.0.0.1 netmask 0xff000000
 Additional routing options: IP gateway=YES TCP keepalive=YES
 routing daemons:.
 additional daemons: syslogd.
 Doing additional network setup:.
 Starting final network daemons: creating ssh RSA host key
 Generating public/private rsa1 key pair.
 Your identification has been saved in /etc/ssh/ssh_host_key.
 Your public key has been saved in /etc/ssh/ssh_host_key.pub.
 The key fingerprint is:
 cd:76:89:16:69:0e:d0:6e:f8:66:d0:07:26:3c:7e:2d root@k6-2.example.com
  creating ssh DSA host key
 Generating public/private dsa key pair.
 Your identification has been saved in /etc/ssh/ssh_host_dsa_key.
 Your public key has been saved in /etc/ssh/ssh_host_dsa_key.pub.
 The key fingerprint is:
 f9:a1:a9:47:c4:ad:f9:8d:52:b8:b8:ff:8c:ad:2d:e6 root@k6-2.example.com.
 setting ELF ldconfig path: /usr/lib /usr/lib/compat /usr/X11R6/lib
 /usr/local/lib
 a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout /usr/X11R6/lib/aout
 starting standard daemons: inetd cron sshd usbd sendmail.
 Initial rc.i386 initialization:.
 rc.i386 configuring syscons: blank_time screensaver moused.
 Additional ABI support: linux.
 Local package initialization:.
 Additional TCP options:.

 FreeBSD/i386 (k6-2.example.com) (ttyv0)

 login: rpratt
 Password:

   La generacion de claves RSA y DSA puede llevar su tiempo en
   maquinas lentas. Esto solamente sucede en el primer arranque
   despues de la instalacion. Los demas arranques seran mas rapidos.

   Si ya hay un servidor X configurado y ha elegido un escritorio por
   omision puede arrancarlo tecleando startx en la shell.

     --------------------------------------------------------------

    2.10.16.2. El arranque de FreeBSD/alpha

   Una vez acabado el proceso de instalacion podra arrancar FreeBSD
   tecleando algo muy parecido a esto en el prompt de SRM:

   Once the install procedure has finished, you will be able to start
   FreeBSD by typing something like this to the SRM prompt:

 >>>BOOT DKC0

   Esto hace que el firmware arranque desde el disco especificado.
   Para que FreeBSD arranque automaticamente de ahi en adelante
   utilice lo siguiente:

 >>> SET BOOT_OSFLAGS A
 >>> SET BOOT_FILE ''
 >>> SET BOOTDEF_DEV DKC0
 >>> SET AUTO_ACTION BOOT

   Los mensajes de arranque seran muy similares (aunque no iguales) a
   los que aparecen durante el arranque de FreeBSD en i386.

     --------------------------------------------------------------

  2.10.17. El apagado de FreeBSD

   Es importante apagar correctamente el sistema operativo. No basta
   con darle al interruptor. Lo primero que debe hacer es convertirse
   en superusuario tecleando en la shell su e introduciendo la
   contrasena de root. Tenga en cuenta que esto funcionara solamente
   si el usuario es miembro del grupo wheel. Si no lo es siempre
   puede acceder al sistema como root y utilizar shutdown -h now.

 The operating system has halted.
 Please press any key to reboot.

   Una vez que vea el mensaje de <<Please press any key to reboot >>
   puede apagar la maquina. Si pulsa cualquier tecla en lugar de
   apagar la maquina el sistema reiniciara.

   Tambien puede usar la combinacion de teclas Ctrl+Alt+Supr para
   reiniciar el sistema, aunque no le recomendamos que lo haga
   durante el funcionamiento normal del sistema.

     --------------------------------------------------------------

2.11. Solucion de problemas

   Esta seccion trata sobre la solucion de problemas habituales
   durante la instalacion que la comunidad de usuarios ha
   documentado. Hay tambien unas cuantas preguntas y respuestas para
   quienes quieren poder elegir en el arranque entre FreeBSD y
   MS-DOS.

     --------------------------------------------------------------

  2.11.1. Que hacer si algo va mal

   A causa de las diversas limitaciones de la arquitectura PC es
   imposible hacer que nada funcione con un 100% de probabilidades,
   pero al menos hay unas cuantas cosas que pueden hacerse si algo va
   mal.

   Consulte la lista de hardware soportado de su version de FreeBSD y
   asegurese de que su hardware deberia funcionar con ella.

   Si su hardware esta soportado y sigue experimentando <<cuelgues>>
   u otro tipo de problemas tendra que compilar un kernel
   personalizado. Esto le permitira disponer de soporte que no esta
   incluido en el kernel GENERIC. El kernel que se incluye en los
   discos de arranque esta configurado asumiendo que la mayoria de
   los dispositivos van a funcionar con la configuracion por omision
   de fabrica (en terminos de IRQ, direcciones IO y canales DMA). Si
   su hardware ha sido reconfigurado quizas tendra que usar el editor
   de configuracion para decirle a FreeBSD donde encontrar cada cosa.

   Es posible tambien que la prueba de un dispositivo que no esta en
   el sistema cause problemas mas tarde al probar un dispositivo que
   si esta en la maquina. Si ese puede ser su caso desactive las
   pruebas de controladores conflictivos.

     Nota: Algunos problemas de instalacion pueden evitarse o al
     menos aliviarse actualizando el firmware de ciertos tipos de
     hardware; esto es especialmente cierto en el caso de las placas
     El firmware de las placas base se llama tambien BIOS y la
     mayoria de las placas base y de los fabricantes de computadoras
     tienen un sitio web en el que suelen encontrarse actualizaciones
     e informacion sobre su uso.

     La mayoria de los fabricantes recomienda que no se actualice la
     BIOS de la placa base a menos que tenga una buena razon para
     hacerlo, por ejemplo una actualizacion critica. El proceso de
     actualizacion podria fallar, lo que puede acarrrear danos en el
     chip de la BIOS.

     --------------------------------------------------------------

  2.11.2. Uso de sistemas de ficheros de MS-DOS(R) y Windows(R)

   No puede usar sistemas de ficheros comprimidos con Double
   Space(TM). Debera por lo tanto descomprimir el sistema de ficheros
   antes de acceder a los datos desde FreeBSD. Ejecute el Agente de
   compresion desde Inicio> Programas > Herramientas del sistema.

   FreeBSD puede usar sistemas de ficheros MS-DOS. mount_msdos(8)
   inserta estos sistemas de ficheros en la jerarquia de directorios
   del sistema, haciendo posible el acceso a los datos.
   mount_msdos(8) no suele usarse directamente; el sistema lo utiliza
   debido a alguna entrada en /etc/fstab o porque mount(8) lo invoque
   debido a que se le hayan dado los parametros adecuados para ello.

   Veamos una de esas entradas en el fichero /etc/fstab:

 /dev/ad0sN  /dos  msdosfs rw  0 0

   El directorio /dos debe existir previamente o no funcionara. Tiene
   todos los detalles del formato correcto de las entradas en
   /etc/fstab en fstab(5).

   Veamos ahora un ejemplo de llamada de mount(8) a un sistema de
   ficheros MS-DOS:

 # mount_msdos /dev/ad0s1 /mnt

   En el ejemplo el sistema de ficheros MS-DOS esta en la primera
   particion del primer disco duro. La situacion en su sistema puede
   ser diferente: compruebe la salida de dmesg y mount. Deberian
   darle suficiente informacion como para darle una idea completa de
   la estructura de particiones en la que esta trabajando.

     Nota: FreeBSD suele numerar las las <<slices>> (que es como
     decir los sistemas de ficheros MS-DOS) de un modo distinto al de
     otros sistemas operativos. Mas concretamente, las particiones
     extendidas de MS-DOS suelen tener un numero mayor de <<slice>>
     que las particiones primarias de MS-DOS. fdisk(8) le sera de
     ayuda a la hora de determinar que <<slices>> pertenecen a
     FreeBSD y cuales a otros sistemas operativos.

   Las particiones NTFS se montan de una forma muy similar gracias a
   mount_ntfs(8).

     --------------------------------------------------------------

  2.11.3. Preguntas y respuestas de la resolucion de problemas

   2.11.3.1. Mi sistema se <<cuelga>> durante el arranque, o se
   comporta de modo extrano durante la instalacion, o no llega a
   comprobar el funcionamiento del lector de disquetes.

   2.11.3.2. Cuando voy a arrancar FreeBSD por primera vez despues de
   la instalacion el kernel carga y prueba mi hardware, pero se
   detiene y muestra mensajes como este:

   2.11.3.3. Cuando voy a arrancar desde disco duro por primera vez
   tras la instalacion de FreeBSD el prompt del gestor de arranque
   muestra F? en el menu de arranque y no pasa de ahi.

   2.11.3.4. El sistema encuentra mi tarjeta de red ed(4) pero me dan
   errores de <<timeout>>.

   2.11.3.1. Mi sistema se <<cuelga>> durante el arranque, o se
   comporta de modo extrano durante la instalacion, o no llega a
   comprobar el funcionamiento del lector de disquetes.

   FreeBSD utiliza profusamente el servicio ACPI del sistema en las
   plataformas i386, amd64 e ia64 con el fin de ayudar en la
   configuracion del sistema durante la deteccion de hardware durante
   el arranque. Por desgracia todavia hay errores tanto en el
   controlador ACPI como en algunas BIOS y placas base. Puede
   desactivar ACPI en la tercera fase del cargador de arranque del
   sistema haciendo que hint.acpi.0.disabled tenga el siguiente
   valor:

 set hint.acpi.0.disabled="1"

   Tenga en cuenta que tendria que volver a hacerlo cada vez que el
   sistema arranque, asi que anada hint.acpi.0.disabled="1" al
   fichero /boot/loader.conf. Tiene mas informacion sobre el cargador
   de arranque en Seccion 12.1.

   2.11.3.2. Cuando voy a arrancar FreeBSD por primera vez despues de
   la instalacion el kernel carga y prueba mi hardware, pero se
   detiene y muestra mensajes como este:

 changing root device to ad1s1a panic: cannot mount root

   ?Cual es el problema?

   ?Que es lo que significa este mensaje de
   bios_drive:interface(unit,partition)kernel_name que aparece en la
   ayuda del arranque?

   Hay un problema que ya lleva tiempo con nosotros cuando el disco
   desde el que se arranca no es el primero en el sistema. La BIOS
   utiliza un esquema de numeracion distinto al que usa FreeBSD y a
   veces saber que numero es el que corresponde a que resulta un poco
   complicado.

   Cuando el disco de arranque no sea el primer disco del sistema
   FreeBSD necesitara un poco de ayuda para poderlo encontrar. Puede
   haber dos escenarios donde suceda esto y en ambos hay que decirle
   a FreeBSD, donde encontrar el sistema de ficheros raiz. Esto se
   hace especificando el numero de disco segun la BIOS, el tipo de
   disco y el numero de disco que FreeBSD le dara a ese disco.

   El primer caso es cuando hay dos discos IDE, ambos configurados
   como maestros de sus respectivos buses IDE y quiere usted arrancar
   desde el segundo disco. La BIOS dice que son el disco 0 y el disco
   1, mientras que FreeBSD los ve como ad0 y ad2.

   FreeBSD esta en el disco BIOS 1, de tipo ad y el numero de disco
   FreeBSD es el 2, asi que habra que decir lo siguiente:

 1:ad(2,a)kernel

   Tenga en cuenta que si tiene un disco esclavo en el bus primario
   esto no es necesario (de hecho es un error hacerlo).

   El segundo escenario es el arranque desde un disco SCSI teniendo
   uno o mas discos IDE en el sistema. En este caso el numero de
   disco FreeBSD es mas bajo que el numero de disco BIOS. Si tiene
   dos discos IDE ademas del disco SCSI, el disco SCSI es el disco 2
   de BIOS, del tipo da y para FreeBSD es el disco numero disk number
   0, so 0, asi que tendra que usar

 2:da(0,a)kernel

   para decirle a FreeBSD que quiere arrancar desde el disco 2 de
   BIOS, que es el primer disco SCSI del sistema. Si solamente tiene
   un disco IDE tendra que poner 1:.

   Una vez que sabe con exactitud los valores que debe usar pongalos
   exactamente como los ha tecleado en /boot.config utilizando el
   editor de texto que prefiera. Salvo que se le diga lo contrario
   FreeBSD utilizara el contenido de este fichero decidirael
   comportamiento por omision del prompt de boot: prompt.

   2.11.3.3. Cuando voy a arrancar desde disco duro por primera vez
   tras la instalacion de FreeBSD el prompt del gestor de arranque
   muestra F? en el menu de arranque y no pasa de ahi.

   La geometria del disco duro se configuro mal cuando se utilizo el
   editor de particiones durante la instalacion. Ejecute el editor de
   particiones e introduzca la geometria del disco correctamente.
   Tendra que reinstalar FreeBSD completamente dado que habra
   cambiado la geometria del disco.

   Si no encuentra la manera de saber cual es la geometria correcta
   pruebe con esto: Cree una pequena particion DOS al principio del
   disco e instale FreeBSD en el espacio de disco inmediatamente
   contiguo. El programa de instalacion vera la particion DOS e
   intentara deducir la geometria correcta a partir de ahi; esto
   suele funcionar.

   Le mostramos otra sugerencia que, aunque no es recomendable de
   seguir, se muestra para que sirva de referencia:

     Si lo que esta instalando es un servidor o maquina de escritorio
     dedicado a FreeBSD y no le preocupa que en el futuro cercano
     tenga que mantener la convivencia con DOS, Linux u otro sistema
     operativo siempre tiene la opcion de utilizar el disco entero
     (la opcion A en el editor de particiones). Es una opcion no
     estandar gracias a la cual FreeBSD ocupa todo el disco, desde el
     primer sector al ultimo. De este modo nos olvidamos de todos los
     problemas relacionados con la geometria de disco, pero le obliga
     a no poder instalar ningun otro sistema operativo aparte de
     FreeBSD en ese disco.

   2.11.3.4. El sistema encuentra mi tarjeta de red ed(4) pero me dan
   errores de <<timeout>>.

   Lo mas probable es que su tarjeta este utilizando una IRQ distinta
   de la que deberia estar usando segun lo que aparece en
   /boot/device.hints . El controlador ed(4) no utiliza configuracion
   does not use the <<soft>> por omision (es decir, valores que se le
   suministren mediante EZSETUP bajo DOS) pero como casi todo en esta
   vida hay solucion. En este caso, de hecho, hay dos.

   Ponga el <<jumper>> de la tarjeta en una configuracion <<dura>>
   (es posible que tenga que modificar la configuracion del kernel
   debido a esto) o modifique el valor de la IRQ con el valor -1 del
   siguiente modo: by setting the hint hint.ed.0.irq="-1". Asi le
   dira al kernel que utilice la configuracion <<suave>>.

   Hay otra posibilidad, que es cuando su tarjeta este utilizando la
   IRQ 9, que suele compartir funciones con la IRQ 2, circunstancia
   que es con frecuencia causa de problemas (sobre todo cuando entra
   en escena una tarjeta VGA que utiliza justamente la IRQ 2). Le
   recomendamos encarecidamente que haga todo lo posible para no
   utilizar ni la IRQ 2 ni la IRQ 9.

     --------------------------------------------------------------

2.12. Guia avanzada de instalacion

   Escrito por Valentino Vaschetto.

   This section describes how to install FreeBSD in exceptional
   cases.

     --------------------------------------------------------------

  2.12.1. Instalacion de FreeBSD en un sistema sin monitor o teclado

   Es posible instalar FreeBSD en maquinas que no tengan teclado ni
   siquiera monitor conectado. De hecho no tienen por que tener ni
   salida VGA. ?Como es posible?, se preguntara: Haciendolo todo a
   traves de una consola serie. Una consola serie consiste
   basicamente en usar otro sistema como la pantalla y el teclado de
   una maquina. Siga las instrucciones de creacion de los disquetes
   que se detallan en la Seccion 2.3.7.

   Tendra que modificar esos disquetes para que arranquen en la
   consola serie; siga estas instrucciones:

    1. Modificacion de los disquetes de arranque para que permitan el
       arranque en la consola serie

       Si arrancara con los disquetes que acaba de crear FreeBSD
       arrancaria en el modo normal de instalacion. Lo que queremos
       es que FreeBSD arranque en una consola serie, asi que hemos de
       montar el disquete kern.flp en un sistema FreeBSD mediante
       mount(8).

 # mount /dev/fd0 /mnt

       Una vez montado el disquete entre en el directorio /mnt :

 # cd /mnt

       Aqui es donde ensenaremos al disquete a arrancar en la consola
       serie. Debe crearse un fichero llamado boot.config que
       contenga lo siguiente: /boot/loader -h. Con esto le pasamos
       cargador de arranque (el <<bootloader>>) el parametro
       necesario para que intente arrancar en una consola serie.

 # echo "/boot/loader -h" > boot.config

       Una vez configurado correctamente nuestro disquete lo
       desmontamos con umount(8):

 # cd /
 # umount /mnt

       Y podemos extraer el disquete de la unidad.

    2. Conexion del cable modem

       Tiene que conectar un cable modem nulo entre dos maquinas. Un
       cable serie normal no funcionara, necesitara un cable modem
       nulo porque tiene cruzado alguno de los hilos.

    3. Arranque de la instalacion

       Podemos iniciar la instalacion. Introduzca el disquete
       kern.flp en la unidad de disquetes de la maquina en la que
       quiere hacer la instalacion y encienda la maquina.

    4. La conexion a su maquina sin teclado ni monitor

       Conectese usando cu(1):

 # cu -l /dev/cuaa0

   ?Ya esta! Desde este momento ya puede controlar su maquina sin
   monitor ni teclado desde la sesion cu que acaba de abrir. El
   sistema le pedira que introduzca el disco kern1.flp y despues
   tendra que elegir que tipo de terminal va a utilizar. Elija la
   consola en color de FreeBSD y buena suerte con la instalacion.

     --------------------------------------------------------------

2.13. Como preparar su propio medio de instalacion

     Nota:  Para evitar la repeticion <<disco FreeBSD>> sera en
     adelante un CDROM o un DVD de FreeBSD que haya comprado o hecho
     por sus propios medios.

   Es posible que tengaque crear su propio medio de instalacion de
   FreeBSD. Puede tratarse de un medio fisico como una cinta o una
   fuente para que sysinstall pueda obtener los ficheros que vaya
   necesitando, como un sitio FTP local, o bien puede tratarse de una
   particion MS-DOS.

   Por ejemplo:

     * Tiene muchas maquinas conectadas a una red local y un solo
       disco FreeBSD. Quiere crear un sitio FTP local con el
       contenido del disco FreeBSD y que desde el sus maquinas
       obtengan los ficheros en lugar de tener que conectarse a
       Internet.

     * Tiene un disco FreeBSD y FreeBSD no reconoce su unidad CD/DVD
       pero MS-DOS/Windows si. Quiere copiar los ficheros de
       instalacion de FreeBSD a una particion DOS en mismo sistema y
       luego instalar FreeBSD usando esos ficheros.

     * El sistema en el que quiere instalar FreeBSD no tiene unidad
       CD/DVD ni tarjeta de red pero puede conectar un cable paralelo
       o un cable serie <<Laplink>> a una computadora que si que
       tiene.

     * Quiere crear una cinta desde la que se pueda instalar FreeBSD.

     --------------------------------------------------------------

  2.13.1. Creacion de un CDROM de instalacion

   Con cada <<release>> el Proyecto FreeBSD libera dos imagenes de
   CDROM (<<imagenes ISO>>). Dichas imagenes pueden copiarse a CD si
   dispone de una grabadora y usarse posteriormente para instalar
   FreeBSD. Si tiene una grabadora de CD y el ancho de banda no le
   supone un problema la forma mas facil de instalar FreeBSD es esta.

    1. Descargar la imagen ISO correcta

       Puede descargar las imagenes ISO de cada <<release>> desde
       ftp://ftp.FreeBSD.org/pub/FreeBSD/ISO-IMAGES-arquitectura/version
       o desde la replica mas proxima. Sustituya arquitectura y
       version por lo que corresponda.

       Ese directorio contendra normalmente las siguientes imagenes:

       Tabla 2-4. Nombres y funciones de las imagenes de FreeBSD 6.X
       and 7.X

                    Nombre                        Contenido           
                                         Todo lo necesario para       
                                         arrancar un kernel de        
                                         FreeBSD y ejecutar la        
       version-RELEASE-arch-bootonly.iso interfaz de instalacion. Los 
                                         ficheros que vayan haciendo  
                                         falta tendran que irse       
                                         descargando por FTP o por    
                                         algun otro medio.            
                                         Todo lo necesario para       
                                         instalar AFreeBSD y un       
       version-RELEASE-arch-disc1.iso    <<live filesystem>>, que le  
                                         sera muy util (conjuntamente 
                                         con la aplicacion <<Repair>> 
                                         de sysinstall.               
       version-RELEASE-arch-disc2.iso    Todas las aplicaciones que   
                                         puedan caber en un disco.    
       version-RELEASE-arch-docs.iso     La documentacioN de FreeBSD. 

       Descargue la imagen ISO de arranque (si existe para su
       plataforma) o la imagen del disco uno. No descargue ambas,
       puesto que el disco uno contiene todo lo que hay en la imagen
       ISO de arranque.

       Utilice la imagen ISO de arranque si su acceso a Internet es
       barato. Con ella podra instalar FreeBSD e instalar todo tipo
       de software descargandolo como paquetes/ports (consulte el
       Capitulo 4) cuando lo precise.

       Utilice la imagen del disco uno si quiere disponer en el
       propio disco de una seleccion bastante completa de software.

       Si tiene acceso de alta velocidad a Internet las demas
       imagenes de disco son utiles pero no esenciales.

    2. Escribir los CD

       Si va a grabar los CD en un sistema FreeBSD consulte la
       Seccion 18.6 (en particular la Seccion 18.6.3 y la Seccion
       18.6.4).

       Las imagenes se hacen en un formato ISO estandar; si va a
       grabarlas en cualquier otra plataforma no deberia tener
       problemas para hacerlo cualquiera que sea la aplicacion que
       use para grabar CD.

     Nota: Si lo que quiere hacer es crear una <<release>>
     personalizada de FreeBSD consulte el articulo Release
     Engineering.

     --------------------------------------------------------------

  2.13.2. Creacion de un sitio FTP local a partir de un disco de
  instalacion de FreeBSD

   Los discos de FreeBSD tienen la misma estructura que los sitios
   FTP. Esa circunstancia le facilitara mucho la tarea de crear un
   sitio FTP local para uso de otras maquinas de su red durante la
   instalacion de FreeBSD.

    1. Monte el CDROM en el directorio /cdrom del sistema que va a
       albergar el sitio FTP.

 # mount /cdrom

    2. Cree una cuenta apta para FTP anonimo en /etc/passwd editando
       /etc/passwd con vipw(8). Anadale lo siguiente:

 ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent

    3. Compruebe que el servicio FTP esta activado en
       /etc/inetd.conf.

   Ahora cualquier maquina capaz de conectarse a su sistema a traves
   de una red puede elegir como medio de instalacion <<FTP>> y
   escribir ftp://su maquina tras seleccionar <<Other>> en el menu de
   sitios FTP.

     Aviso Acabamos de exponer una buena solucion para usar en un
     sistema de su propia red y que ademas esta protegido por un
     cortafuegos. Si ofrece servicios FTP a maquinas de Internet (y
     no de su red local) expone su sistema a caer bajo la atencion de
     <<crackers>> y otras variedades de indeseable. Le recomendamos
     encarecidamente que siga a rajatabla politicas sensatas de
     seguridad.

     --------------------------------------------------------------

  2.13.3. Creacion de disquetes de instalacion

   Si quiere instalar FreeBSD desde disquetes (cosa que, de antemano,
   le sugerimos que no haga) bien sea porque FreeBSD no soporta
   cierto componente necesario de su sistema o sencillamente porque
   insiste en querer hacer las cosas de la manera mas dificil, tendra
   que tener a mano unos cuantos disquetes.

   Como minimo necesitara tantos disquetes de 1.44 MB o 1.2 MB como
   hagan falta para dar cabida a todos los ficheros que hay en bin.
   Recuerde la entrada <<binary distribution>> (distribucion binaria)
   durante la instalacion. Si esta generando los disquetes en DOS
   debe formatearlos con FORMAT de MS-DOS. Si esta usando Windows
   puede usar el Explorador para formatear disquetes: boton derecho
   del raton sobre la unidad A: y elija <<Formatear>>.

    No confie en el preformateo de fabrica de los disquetes.
   Formateelos usted de nuevo, solo para asegurarse. La mayoria de
   los problemas de los que se ha informado se han debido a formateos
   defectuosos, tengalo en cuenta.

   Si puede crear los disquetes en una maquina FreeBSD un formateo
   sigue sin ser una mala idea, pero no necesitara crear un sistema
   de ficheros DOS en cada floppy. Use disklabel y newfs para crear
   un sistema de ficheros UFS en los disquetes tal y como se muestra
   aqui (en un floppy de 1.44 MB y 3.5") :

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

     Nota:  Tendra que usar fd0.1200 y floppy5 si usa discos de 5.25"
     y 1.2 MB.

   Ahora puede montarlos y escribir en ellos igual que en cualquier
   otro sistema de ficheros del sistema.

   Tras el formateo de los disquetes pasamos a llenarlos. Los
   ficheros necesarios para crear la distribucion se dividen en
   partes de tamano regular de modo que cinco de ellas entren en
   otros tantos disquetes de 1.44 MB. Empaquete tantos ficheros como
   pueda en cada uno hasta que tenga todas las distribuciones que
   necesita listas para pasar a los disquetes. Cada distribucion
   deberia ir en un subdirectorio del floppy, por ejemplo
   a:\bin\bin.aa, a:\bin\bin.ab, etc.

   Una vez en el menu de seleccion de medio de instalacion elija
   Floppy y siga las instrucciones.

     --------------------------------------------------------------

  2.13.4. Instalacion desde una particion MS-DOS

   Copie los ficheros de la distribucion en un directorio llamado
   freebsd en el directorio raiz de la particion, por ejemplo
   c:\freebsd. La estructura de directorios del sitio FTP o el CDROM
   debe reproducirse parcialmente en este directorio, asi que le
   sugerimos que use xcopy si esta copiando los datos desde un CD. En
   el siguiente ejemplo vamos a preparar una instalacion minima de
   FreeBSD:

 C:\> md c:\freebsd
 C:\> xcopy e:\bin c:\freebsd\bin\ /s
 C:\> xcopy e:\manpages c:\freebsd\manpages\ /s

   Se ha asumido que C: es donde tiene espacio libre y E: es donde
   tiene montada su unidad CDROM.

   Si no tiene unidad CDROM puede descargar la distribucion desde
   ftp.FreeBSD.org. Cada distribucion dispone de su propio
   directorio; por ejemplo, la distribucion base esta en el
   directorio8.2/base/.

   La unica distribucion imprescindible es BIN. Guarde esta y todas
   las distribuciones que quiera instalar desde una particion MS-DOS
   bajo c:\freebsd.

     --------------------------------------------------------------

  2.13.5. Creacion de una cinta de instalacion

   La instalacion desde cinta es probablemente el metodo mas facil,
   casi tanto como una instalacion desde una replica FTP o desde un
   CDROM. Lo unico que el programa de instalacion necesita es que los
   ficheros esten empaquetados con tar y en una cinta. Veamos un
   ejemplo:

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

   Cuando este preparando la instalacion tenga la precaucion de dejar
   sitio suficiente en algun directorio temporal (accesible en ese
   momento) para dejar todos los ficheros que hubiera en la cinta de
   instalacion. A causa del acceso secuencial propio del diseno de
   las cintas este metodo de instalacion requiere un poco de
   almacenamiento temporal.

     Nota:  Recuerde que antes de arrancar desde el disquete de
     arranque la cinta debe estar en la unidad. La prueba de hardware
     de la instalacion no encontraria la cinta.

     --------------------------------------------------------------

  2.13.6. Before Installing over a Network

   Hay tres tipos de instalacion a traves de una red disponibles en
   FreeBSD: Puerto serie (SLIP o PPP), puerto paralelo (PLIP (cable
   <<laplink>>)) y Ethernet.

   El adaptador Ethernet es, debido a su velocidad de transferencia,
   la mejor eleccion. FreeBSD soporta la mayoria de los adaptadores
   Ethernet. Tiene una lista de dispositivos soportados en las notas
   de hardware de cada <<release>> de FreeBSD. Si disponde alguno de
   los adaptadores Ethernet PCMCIA soportados por FreeBSD recuerde
   que debe estar presente en el sistema antes de que el sistema
   arranque. Por desgracia FreeBSD no soporta aun la insercion en
   caliente de tarjetas PCMCIA durante la instalacion.

   Tendra que saber tambien la direccion IP de la red, la mascara de
   red correcta para la clase de su red y el nombre de su maquina. Si
   va a instalar mediante una conexion PPP y no tiene IP estatica no
   se preocupe, su ISP puede asignarle una IP temporal dinamicamente.
   Su administrador de sistemas seguramente puede ayudarle con la
   configuracion de su red. Si va a intentar conectarse con otras
   maquinas mediante sus nombres en lugar de sus direcciones IP
   necesitara los datos de un servidor de nombres y es posible que
   necesite tambien la direccion de un <<gateway>> (si usa PPP vale
   con la direccion IP de su proveedor). Si va a instalar por FTP a
   traves de un proxy HTTP necesitara la direccion del proxy. Si no
   sabe que pueden significar todas (o la mayoria) de estas preguntas
   hable con su administrador de sistemas o con su ISP antes de
   intentar instalar FreeBSD de esta forma.

     --------------------------------------------------------------

    2.13.6.1. Antes de instalar via NFS

   La instalacion por NFS es bastante sencilla. Solo tendra que
   copiar los ficheros de la distribucion a un servidor NFS,
   seleccionar NFS como medio de instalacion y apuntar a los
   contenidos a donde los haya copiado.

   si el servidor solo soporta <<puertos privilegiados>> (que suele
   ser la configuracion por omision en estaciones de trabajo Sun)
   tendra que seleccionar la opcion NFS Secure en el menu <<Options>>
   antes de comenzar con la instalacion.

   Si usa tarjeta Ethernet de mala calidad y esta experimentando
   velocidades de transferencia muy bajas puede probar con el
   parametro NFS Slow.

   Para que la instalacion via NFS funcione el servidor debe permitir
   el montaje de subdirectorios. Por ejemplo, si su distribucion
   FreeBSD 8.2 esta en ziggy:/usr/archive/stuff/FreeBSD el servidor
   ziggy tendra que permitir que pueda montarse
   /usr/archive/stuff/FreeBSD, no simplemente como /usr o
   /usr/archive/stuff.

   En el fichero /etc/exports de FreeBSD eso puede controlarse
   mediante la opcion -alldirs. Puede que otros servidores NFS
   requieran de parametros diferentes. Si ve mensajes de "permission
   denied" seguramente no ha activado esto correctamente.

     --------------------------------------------------------------

                 Capitulo 3. Conceptos basicos de Unix

   Reescrito por Chris Shumway.

3.1. Sinopsis

   El siguiente capitulo comprende la funcionalidad y ordenes basicas
   del sistema operativo FreeBSD. Gran parte de este material es
   relevante para cualquier sistema operativo tipo UNIX. Puede
   saltarse este capitulo si considera que ya conoce el
   funcionamiento de UNIX. Si no tiene experiencia previa con FreeBSD
   deberia leer este capitulo con mucha atencion.

   Despues de leer este capitulo, usted sabra:

     * Como usar las <<consolas virtuales>> de FreeBSD.

     * Como funcionan los permisos de fichero UNIX en relacion con
       las banderas de fichero en FreeBSD.

     * La disposicion de sistemas de ficheros por omision en FreeBSD.

     * La organizacion de disco de FreeBSD.

     * Como montar y desmontar sistemas de ficheros.

     * Que son los procesos, daemons y senales.

     * Que es una shell, como modificar sus variables de entorno por
       omision.

     * Como utilizar editores de texto basicos.

     * Que son los dispositivos y nodos de dispositivos.

     * Que formato binario se usa en FreeBSD.

     * Como buscar informacion en las paginas de manual.

     --------------------------------------------------------------

3.2. Consolas virtuales y terminales

   FreeBSD puede utilizarse de muchas maneras. Una de ellas es
   tecleando ordenes en una terminal de texto. De este modo, mucha de
   la flexibilidad y poder de un sistema operativo UNIX esta
   inmediatamente en sus manos cuando usa FreeBSD. Esta seccion
   describe que son <<terminales>> y <<consolas>> y como puede
   usarlas en FreeBSD.

     --------------------------------------------------------------

  3.2.1. La consola

   Si no ha configurado FreeBSD para ejecutar automaticamente un
   entorno grafico en el arranque, el sistema le presentara un
   <<prompt>> de entrada despues del arranque, inmediatamente despues
   de que los <<scripts>> de inicio terminen de ejecutarse. Vera algo
   similar a esto:

 Additional ABI support:.
 Local package initialization:.
 Additional TCP options:.

 Fri Sep 20 13:01:06 EEST 2002

 FreeBSD/i386 (pc3.ejemplo.org) (ttyv0)

 login:

   Los mensajes pueden ser un poco diferentes en su sistema, pero
   vera algo similar. Las ultimas dos lineas son las que nos
   interesan por el momento. La penultima linea dice:

 FreeBSD/i386 (pc3.ejemplo.org) (ttyv0)

   Esta linea contiene informacion acerca del sistema que acaba de
   arrancar. Esta usted ante una consola <<FreeBSD>> que se ejecuta
   en un procesador Intel o compatible de la arquitectura x86[1]. El
   nombre de esta maquina (todas las maquinas UNIX tiene un nombre)
   es pc3.ejemplo.org, y usted esta ahora ante su consola de sistema
   (la terminal ttyv0).

   Para acabar, la ultima linea siempre es:

 login:

   Este es el lugar donde se usted tecleara su <<nombre de usuario>>
   para entrar en FreeBSD. La siguiente seccion describe como
   hacerlo.

     --------------------------------------------------------------

  3.2.2. La entrada a FreeBSD

   FreeBSD es un sistema multiusuario multiprocesador. Esta es la
   descripcion formal que se suele dar a un sistema que puede ser
   utilizado por muchas personas diferentes, que simultaneamente
   ejecutan muchos programas en un sola maquina.

   Cada sistema multiusuario necesita algun modo de distinguir a un
   <<usuario>> del resto. En FreeBSD (y en todos los sistemas
   operativos de tipo UNIX) esto se logra requiriendo que cada
   usuario <<acceda>> al sistema antes de poder ejecutar programas.
   Cada usuario tiene un nombre unico (el <<nombre de usuario>>) y
   una clave secreta, personal (la <<contrasena>>). FreeBSD
   preguntara por ambos antes de permitirle a un usuario ejecutar
   cualquier programa.

   Justo despues de que FreeBSD arranque y termine de ejecutar sus
   <<scripts>> de inicio [2], le presentara un <<prompt>> y
   solicitara un nombre valido de usuario:

 login:

   En este ejemplo vamos a asumir que su nombre de usuario es john.
   Teclee john en el <<prompt>> y pulse Intro. Deberia presentarsele
   un <<prompt>> donde introducir una <<contrasena>>:

 login: john
 Password:

   Teclee ahora la contrasena de john y pulse Enter. La contrasena no
   se muestra en pantalla, pero no debe preocuparse por ello. Esto se
   hace asi por motivos de seguridad.

   Si ha tecleado su contrasena correctamente ya esta usted en un
   sistema FreeBSD, listo para probar todas las ordenes disponibles.

   Vera el MOTD (mensaje del dia) seguido por un <<prompt>> (un
   caracter #, $ o %). Esto confirma que ha validado con exito su
   usuario en FreeBSD.

     --------------------------------------------------------------

  3.2.3. Consolas multiples

   Ejecutar ordenes UNIX en una consola esta bien, pero FreeBSD puede
   ejecutar muchos programas a la vez. Tener una consola donde se
   pueden teclear ordenes puede ser un desperdicio cuando un sistema
   operativo como FreeBSD puede ejecutar docenas de programas al
   mismo tiempo. Aqui es donde las <<consolas virtuales>> muestran su
   potencial.

   FreeBSD puede configurarse para presentarle diferentes consolas
   virtuales. Puede cambiar de una de ellas a cualquier otra consola
   virtual pulsando un par de teclas en su teclado. Cada consola
   tiene su propio canal de salida, y FreeBSD se ocupa de redirigir
   correctamente la entrada del teclado y la salida al monitor cuando
   cambia de una consola virtual a la siguiente.

   Se han reservado ciertas combinaciones especiales de teclas para
   pasar de unas consolas virtuales a otras en FreeBSD [3]. Puede
   utilizar Alt-F1, Alt-F2 y asi sucesivamente hasta Alt-F8 para
   cambiar a una consola virtual diferente en FreeBSD.

   Mientras esta cambiando de una consola a la siguiente, FreeBSD se
   ocupa de guardar y restaurar la salida de pantalla. El resultado
   es la <<ilusion>> de tener varias pantallas y teclados
   <<virtuales>> que puede utilizar para teclear ordenes para que
   FreeBSD los ejecute. El programa que usted lanza en una consola
   virtual no deja de ejecutarse cuando la consola no esta visible.
   Continuan ejecutandose cuando se cambia a una consola virtual
   diferente.

     --------------------------------------------------------------

  3.2.4. El fichero /etc/ttys

   La configuracion por omision de FreeBSD iniciara con ocho consolas
   virtuales. No es una configuracion estatica por hardware, asi que
   puede personalizar facilmente su sistema para arrancar con mas o
   menos consolas virtuales. El numero y propiedades de las consolas
   virtuales estan detallados en /etc/ttys.

   En /etc/ttys es donde se configuran las consolas virtuales de
   FreeBSD. Cada linea no comentada de este fichero (lineas que no
   comienzan con un caracter #) contiene propiedades para una sola
   terminal o consola virtual. La version por omision de este fichero
   en FreeBSD configura nueve consolas virtuales y habilita ocho de
   ellas. Son las lineas que comienzan con ttyv:

 # name  getty                           type    status          comments
 #
 ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
 # Virtual terminals
 ttyv1   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv2   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv3   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv4   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv5   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv6   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv7   "/usr/libexec/getty Pc"         cons25  on  secure
 ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

   Consulte ttys(5) si quiere una descripcion detallada de cada
   columna en este fichero y todas las opciones que puede usar para
   configurar las consolas virtuales.

     --------------------------------------------------------------

  3.2.5. Consola en modo monousuario

   En la Seccion 12.6.2 encontrara una descripcion detallada de lo
   que es <<modo monousuario>>. No importa que solo exista una
   consola cuando ejecuta FreeBSD en modo monousuario. No hay otra
   consola virtual disponible. Las configuraciones de la consola en
   modo monousuario se pueden encontrar tambien en /etc/ttys. Busque
   la linea que comienza por console:

 # name  getty                           type    status          comments
 #
 # Si la consola esta marcada como "insecure", entonces init
 # le pedira la contrasena de root al entrar a modo monousuario.
 console none                            unknown off secure

     Nota: Tal y como indican los comentarios por encima de la linea
     console, puede editar esta linea y cambiar secure por insecure.
     Si lo hace, cuando FreeBSD arranque en modo monousuario el
     sistema le pedira la contrasena de root.

     

     Tenga cuidado si cambia esto a insecure. Si olvida la contrasena
     de root arrancar en modo monousuario sera con seguridad mas
     complicado. Sigue siendo posible, pero sera un poco dificil para
     alguien que no este familiarizado con le proceso de arranque de
     FreeBSD y los programas involucrados en dicho proceso.

     --------------------------------------------------------------

  3.2.6. Cambio del modo de video de la consola

   La consola FreeBSD por omision tiene un modo de video que puede
   ajustarse a 1024x768, 1280x1024 o cualquier otra resolucion que
   admita su chip grafico y su monitor. Si quiere utilizar uno
   diferente tendra que recompilar su kernel con estas dos opciones
   anadidas:

 options VESA
 options SC_PIXEL_MODE

   Una vez recompilado el kernel con esas dos opciones en el
   determine que modos de video admite su hardware; para ello use
   vidcontrol(1). Con lo siguiente le mostrara una lista de modos de
   video soportados:

 # vidcontrol -i mode

   La salida de esta orden es una lista de los modos de que admite su
   tarjeta. Para elegir uno de ellos tendra que ejecutar
   vidcontrol(1) en una consola como root:

 # vidcontrol MODE_279

   Si el modo de video que ha elegido le parece adecuado puede
   configurarlo de forma permanente haciendo que funcione desde el
   momento del arranque; para ello debe editar /etc/rc.conf file:

 allscreens_flags="MODE_279"

     --------------------------------------------------------------

3.3. Permisos

   FreeBSD, cuya raiz historica es el UNIX BSD, se fundamenta en
   varios conceptos clave de UNIX. El primero y mas importante es que
   FreeBSD es un sistema operativo multi-usuario. El sistema puede
   gestionar multiples usuarios trabajando simultaneamente y en
   tareas que no guarden relacion entre si. El sistema se encarga de
   compartir y administrar peticiones de dispositivos de hardware,
   perifericos, memoria y tiempo de CPU de manera equitativa para
   cada usuario.

   Debido a que el sistema es capaz de soportar multiples usuarios,
   todo lo que el sistema administra tiene un conjunto de permisos
   que usa para decidir quien puede leer, escribir y ejecutar un
   recurso. Estos permisos se guardan como octetos divididos en tres
   partes: una para el propietario del fichero, otra para el grupo al
   que el fichero pertenece, y otra para todos los demas grupos y
   usuarios. Veamos una representacion numerica de esto:

    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                    

   Puede utilizar el parametro de linea de ordenes -l de ls(1) para
   ver un listado largo que incluya una columna con informacion
   acerca de los permisos de fichero para el propietario, grupo y los
   demas. Por ejemplo, un ls -l en un directorio puede mostrar algo
   como esto:

 % ls -l
 total 530
 -rw-r--r--  1 root  wheel     512 Sep  5 12:31 mifichero
 -rw-r--r--  1 root  wheel     512 Sep  5 12:31 otrofichero
 -rw-r--r--  1 root  wheel    7680 Sep  5 12:31 email.txt
 ...

   Aqui esta como se divide la primera columna de ls -l:

 -rw-r--r--

   El primer caracter (mas a la izquierda) indica si este fichero es
   un fichero regular, un directorio, un dispositivo especial de
   caracter, un socket o cualquier otro dispositivo especial
   pseudo-ficheroa . En este caso, el - un fichero regular. Los
   siguientes tres caracteres, rw- en este ejemplo, dan los permisos
   para el propietario del fichero. Los siguientes tres caracteres,
   r--, dan los permisos para el grupo al que el fichero pertenece.
   Los ultimos tres caracteres, r--, dan los permisos para el resto
   del mundo. Un guion indica que el permiso esta desactivado. En el
   caso de este fichero, los permisos estan asignados de tal manera
   que el propietario puede leer y escribir en el fichero, el grupo
   puede leer el fichero, y el resto del mundo solo puede leer el
   fichero. De acuerdo con la tabla de arriba, los permisos para este
   fichero serian 644, donde cada digito representa las tres partes
   de los permisos del fichero.

   Todo esto esta muy bien, pero ?como controla el sistema los
   permisos de los dispositivos? FreeBSD en realidad trata la mayoria
   de los dispositivos hardware como un fichero que los programas
   pueden abrir, leer y en los que pueden escribir datos como si de
   cualquier otro fichero se tratara. Estos ficheros especiales de
   dispositivo se encuentran en el directorio /dev.

   Los directorios tambien son tratados como ficheros. Tienen
   permisos de lectura, escritura y ejecucion. El bit de ejecucion en
   un directorio tiene un significado ligeramente distinto que para
   los ficheros. Cuando un directorio esta marcado como ejecutable
   significa que se puede mirar dentro, se puede hacer un <<cd>>
   (cambiar directorio) a el. Esto tambien significa que dentro del
   directorio es posible acceder a ficheros cuyos nombres son
   conocidos (sujeto, claro esta, a los permisos de los ficheros
   mismos).

   En particular, para poder realizar un listado de directorio, el
   permiso de lectura debe ser activado en el directorio, mientras
   que para borrar un fichero del que se conoce el nombre es
   necesario tener permisos de escritura y ejecucion en el directorio
   que contiene el fichero.

   Existen mas permisos, pero se usan principalmente en
   circunstancias especiales como los binarios ejecutables de tipo
   setuid y los los directorios de tipo <<sticky>>. Si desea mas
   informacion acerca de los permisos de ficheros y como
   establecerlos, consulte chmod(1).

     --------------------------------------------------------------

  3.3.1. Permisos simbolicos

   Escrito por Tom Rhodes.

   Los permisos simbolicos, tambien conocidos como expresiones
   simbolicas, utilizan caracteres en lugar de valores octales para
   asignar permisos a ficheros o directorios. Las expresiones
   simbolicas utilizan la sintaxis de (quien) (accion) (permisos)
   mediante los siguientes valores:

        Opcion         Letra                 Representa               
   (quien)          u           Usuario                               
   (quien)          g           Grupo propietario                     
   (quien)          o           Otro                                  
   (quien)          a           Todos (<<todo el mundo>>)             
   (accion)         +           Anadir permisos                       
   (accion)         -           Quitar permisos                       
   (accion)         =           Activar permisos explicitamente       
   (permisos)       r           Lectura                               
   (permisos)       w           Escritura                             
   (permisos)       x           Ejecucion                             
   (permisos)       t           Bit Sticky (<<pegajoso>>)             
   (permisos)       s           Activar UID o GID                     

   Estos valores se aplican con chmod(1) de la misma manera que los
   anteriores, pero con letras. Por ejemplo, podria usar la siguiente
   orden para bloquear a otros usuarios el acceso a FICHERO:

 % chmod go= FICHERO

   Puede usarse una lista separada por comas cuando se quiera aplicar
   mas de un conjunto de cambios a un fichero. Por ejemplo la
   siguiente orden eliminara los permisos de escritura de grupo y
   <<mundo>> a FICHERO, y anade permisos de ejecucion para todos:

 % chmod go-w,a+x FILE

     --------------------------------------------------------------

  3.3.2. Banderas de fichero en FreeBSD

   Escrito por Tom Rhodes.

   Ademas de los permisos de fichero previamente expuestos, FreeBSD
   permite el uso de <<banderas de fichero>>. Estas banderas anaden
   un nivel de seguridad y control adicional a los ficheros, pero no
   a los directorios.

   Las banderas de fichero anaden un nivel adicional de control sobre
   los ficheros ayudando a asegurar que en algunos casos ni siquiera
   root pueda eliminar o alterar ficheros.

   Las banderas de fichero se modifican mediante chflags(1), gracias
   a una interfaz muy sencilla. Por ejemplo, para habilitar la
   bandera imborrable de sistema en fichero1, escriba lo siguiente:

 # chflags sunlink fichero1

   Y para dehabilitar la bandera imborrable de sistema, simplemente
   escriba la orden previa con <<no>> antes de sunlink. Observe:

 # chflags nosunlink fichero1

   Para ver las banderas de este fichero, utilice ls(1) con las
   opciones -lo:

 # ls -lo fichero1
        

   La salida deberia ser como esta:

 -rw-r--r--  1 trhodes  trhodes  sunlnk 0 Mar  1 05:54 fichero1

   Varias banderas solo pueden ser anadidas o retiradas de ficheros
   por el usuario root. En otros casos, el propietario del fichero
   puede activar estas banderas. Se recomienda que para mas
   informacion la persona encargada de la administracion del sistema
   consulte las paginas de manual chflags(1) y chflags(2).

     --------------------------------------------------------------

  3.3.3. Los permisos setuid, setgid y sticky

   Escrito por Tom Rhodes.

   Ademas de los permisos que se han explicado hay mas, hay tres
   tipos mas que todos los administradores deberian conocer. Son los
   permisos setuid, setgid y sticky.

   Estos permisos juegan un papel clave en ciertas operaciones UNIX
   puesto que facilitan funcionalidades que no se suelen permitir a
   los usuarios normales. Para comprenderlas totalmente hay que
   comprender la diferencia entre el ID real del usuario y el ID
   efectivo.

   El ID del usuario real es el UID que arranca (y el propietario)
   del proceso. El UID efectivo es el ID bajo el que se ejecuta el
   proceso. Veamos un ejemplo; el programa passwd(1) se ejecuta con
   el ID real del usuario puesto que el usuario esta cambiando su
   contrasena. Pero para poder manipular la base de datos de
   contrasenas debe ejecutarse con el ID efectivo del usuario root.
   De este modo es posible que los usuarios cambien su contrasena sin
   llegar a ver un error de "Permission Denied" (permiso denegado).

     Nota: La opcion nosuid de mount(8) hace que estos binarios den
     errores silenciosos, es decir, fallaran pero el usuario no
     recibira ningun mensaje de error por ello. Esta opcion no
     funciona siempre, pues, segun la pagina man de mount(8), un
     <<wrapper>> nosuid puede sortear esta limitacion.

   El permiso setuid puede asignarse colocando un numero cuatro (4)
   antes de los permisos. Se ve mejor con un ejemplo:

 # chmod 4755 ejemplosuid.sh

   Los permisos de ejemplosuid.sh deberian ser asi:

 -rwsr-xr-x   1 trhodes  trhodes    63 Aug 29 06:36 ejemplosuid.sh

   Fijese atentamente en la s que ha aparecido en los permisos del
   fichero, en la parte de los permisos del propietario; esa s esta
   en donde estaria el bit de ejecucion. Gracias a esto el
   funcionamiento de aplicaciones que necesitan permisos elevados,
   como passwd, pueden funcionar.

   Si quiere ver un ejemplo con sus propios ojos abra dos terminales.
   En una arranque un proceso (ejecute) passwd con un usuario normal.
   Mientras la aplicacion espera a que le de una nueva contrasena
   busque la informacion de usuario del proceso passwd en la tabla de
   procesos.

   En la terminal A:

 Changing local password for trhodes
 Old Password:

   En la terminal B:

 # ps aux | grep passwd

 trhodes  5232  0.0  0.2  3420  1608   0  R+    2:10AM   0:00.00 grep passwd
 root     5211  0.0  0.2  3620  1724   2  I+    2:09AM   0:00.01 passwd

   Tal y como se ha dicho, un usuario normal puede ejecutar passwd,
   pero en realidad esta utilizando el UID efectivo de root.

   El permiso setgid actua del mismo modo que el setuid, pero afecta
   a los permisos del grupo. Cuando una aplicacion funciona con esta
   configuracion lo hace con los permisos del grupo al que pertenece
   el fichero, no los del usuario que ha arrancado el proceso.

   Si quiere utilizar el permiso setgid debe situar un nunmero dos
   (2) al principio de los permisos que vaya a asignar mediante
   chmod.

 # chmod 2755 ejemplosuid.sh

   La nueva configuracion tiene un aspecto muy similar a la que tenia
   antes, pero observe que la s de antes esta ahora en el campo de
   los permisos de grupo:

 -rwxr-sr-x   1 trhodes  trhodes    44 Aug 31 01:49 ejemplosuid.sh

     Nota: En ambos ejemplos, incluso si el <<script>> en cuestion es
     ejecutable, no se va a ejecutar con un EUID distinto o un ID
     efectivo de usuario porque los <<scripts>> de shell no pueden
     acceder a la llama del sistema setuid(2).

   Los dos permisos que acabamos de mostrar los bits de permisos
   (setuid y setgid) pueden reducir el nivel de seguridad haciendo
   que se escalen los permisos. Pero hay un tercer bit especial de
   permisos que puede ser de mucha ayuda para reforzar la seguridad
   del sistema: el sticky bit.

   El sticky bit( que podriamos traducir como <<bit pegajoso>>)
   aplicado a un directorio hace que solamente el propietario de un
   fichero pueda borrarlo. Esto evita el borrado de ficheros ajenos
   en directorios publicos como /tmp. Si quiere usarlo coloque un uno
   (1) antes de los permisos. Veamos un ejemplo:

 # chmod 1777 /tmp

   Para ver el ;sticky bit en accion usamos ls:

 # ls -al / | grep tmp

 drwxrwxrwt  10 root  wheel         512 Aug 31 01:49 tmp

   El sticky bit es la letra t al final de los permisos.

     --------------------------------------------------------------

3.4. Estructura de directorios

   La jerarquia del sistema de ficheros de FreeBSD es fundamental
   para obtener una compresion completa del sistema. El concepto mas
   importante a entender es el del directorio raiz, <</>>. Este
   directorio es el primero en ser montado en el arranque y contiene
   el sistema basico necesario para preparar el sistema operativo
   para su funcionamiento en modo multiusuario. El directorio raiz
   tambien contiene puntos de montaje para cualquier otro sistema de
   ficheros que se pretenda montar.

   Un punto de montaje es un directorio del que se pueden colgar
   sistemas de ficheros adicionales en un sistema padre (que suele
   ser el directorio raiz). Esto se explica con detalle en la Seccion
   3.5. Los puntos de montaje estandar son, por ejemplo, /usr, /var,
   /tmp, /mnt y /cdrom. Estos directorios suelen corresponderse con
   entradas en /etc/fstab. /etc/fstab es una tabla que sirve de
   referencia al sistema y contiene los diferentes sistemas de
   ficheros y sus respectivos puntos de montaje. La mayoria de los
   sistemas de ficheros en /etc/fstab se montan automaticamente en el
   arranque gracias al <<script>> rc(8), a menos que contengan la
   opcion noauto. Si quiere mas informacion consulte la Seccion
   3.6.1.

   Veremos ahora una descripcion de los directorios mas comunes. Si
   desea informacion mas completa consulte hier(7).

     Directorio                       Descripcion                     
   /               Directorio raiz del sistema de ficheros.           
   /bin/           Utilidades de usuario fundamentales tanto para el  
                   ambiente monousuario como para el multiusuario.    
   /boot/          Programas y ficheros de configuracion necesarios   
                   durante el arranque del sistema operativo.         
   /boot/defaults/ Ficheros de configuracion por omision del          
                   arranque; ver loader.conf(5).                      
   /dev/           Nodos de dispositivo; ver intro(4).                
   /etc/           Ficheros de configuracion y <<scripts>> del        
                   sistema.                                           
   /etc/defaults/  Ficheros de configuracion por omision del sistema; 
                   ver rc(8).                                         
   /etc/mail/      Ficheros de configuracion para agentes de          
                   transporte de correo como sendmail(8).             
   /etc/namedb/    Ficheros de configuracion de named; ver named(8).  
                   <<Scripts>> que se ejecutan diariamente,           
   /etc/periodic/  semanalmente y mensualmente mediante cron(8); ver  
                   periodic(8).                                       
   /etc/ppp/       Ficheros de configuracion de ppp; ver ppp(8).      
                   Directorio vacio utilizado de forma habitual por   
   /mnt/           administradores de sistemas como punto de montaje  
                   temporal.                                          
   /proc/          Sistema de ficheros de procesos; ver procfs(5),    
                   mount_procfs(8).                                   
   /rescue/        Programas enlazados estaticamente para             
                   restauraciones de emergencia; ver rescue(8).       
   /root/          Directorio local para la cuenta root.              
                   Programas del sistema y utilidades fundamentales   
   /sbin/          de administracion para ambientes monousuario y     
                   multiusuario.                                      
                   Ficheros temporales. El contenido de /tmp NO       
                   suelen conservarse despues de un reinicio del      
                   sistema. Los sistemas de ficheros basados en       
   /tmp/           memoria suelen montarse en /tmp Puede              
                   automatizarse mediante variables de tmpmfs en      
                   rc.conf(5) (o con una entrada en /etc/fstab; ver   
                   mdmfs(8), o para FreeBSD 4.X, mfs(8)).             
   /usr/           La mayoria de utilidades y aplicaciones de         
                   usuario.                                           
   /usr/bin/       Aplicaciones comunes, herramientas de programacion 
                   y otras aplicaciones.                              
   /usr/include/   Ficheros <<include>> estandar de C.                
   /usr/lib/       Bibliotecas.                                       
   /usr/libdata/   Ficheros de datos con diversas funciones.          
   /usr/libexec/   Daemons del sistema y utilidades del sistema       
                   (ejecutados por otros programas).                  
                   Ejecutables locales, bibliotecas, etc. tambien se  
                   usa como destino por omision de la infraestructura 
                   de ports de FreeBSD. Dentro de /usr/local debe     
   /usr/local/     seguirse el esquema general definido en hier(7)    
                   para /usr. Las excepciones son el directorio man,  
                   que esta directamente bajo /usr/local en lugar de  
                   debajo de /usr/local/share, y la documentacion de  
                   los ports esta en share/doc/port.                  
   /usr/obj/       Arbol destino dependiente de arquitectura fruto de 
                   la compilacion del arbol /usr/src.                 
   /usr/ports      La coleccion de Ports de FreeBSD (opcional).       
   /usr/sbin/      Daemons del sistema y utilidades del sistema       
                   (ejecutados por usuarios del sistema).             
   /usr/share/     Ficheros independientes de arquitectura.           
   /usr/src/       Ficheros fuente BSD y/o local.                     
   /usr/X11R6/     Ejecutables de la distribucion X11R6, bibliotecas, 
                   etc (opcional).                                    
                   Ficheros multiproposito de log, temporales, en     
   /var/           transito y de <<spool>>. En ocasiones se monta en  
                   /var un sistema de ficheros basado en memoria.     
   /var/log/       Diversos ficheros de log del sistema.              
   /var/mail/      Ficheros de buzones de correo de usuarios.         
   /var/spool/     Directorios diversos del sistema de spool de       
                   impresora y correo.                                
                   Ficheros temporales. Suelen conservarse tras el    
   /var/tmp/       Estos ficheros suelen conservarse tras el reinicio 
                   del sistema, a menos que /var sea un sistema de    
                   ficheros basado en memoria.                        
   /var/yp         Mapas NIS.                                         

     --------------------------------------------------------------

3.5. Organizacion de disco

   La unidad mas pequena que FreeBSD utiliza para ubicar ficheros es
   el nombre de fichero. Los nombres de fichero son sensibles a las
   mayusculas, lo que significa que readme.txt y README.TXT son dos
   ficheros distintos. FreeBSD no utiliza la extension (.txt) de un
   fichero para determinar si es un programa, o un documento o alguna
   otra forma de datos.

   Los ficheros se almacenan en directorios. Un directorio puede
   estar vacio, o puede contener cientos de ficheros. Un directorio
   tambien puede contener otros directorios, permitiendole contruir
   una jerarquia de directorios dentro de otro. Esto hace mucho mas
   facil la organizacion de sus datos.

   Para referirse a ficheros o directorios se usa el nombre de
   archivo o de directorio, seguido por una barra, /, seguido por
   cualquier otro nombre de directorio que sea necesario. Si tiene un
   directorio tal, el cual contiene el directorio cual, el cual
   contiene el fichero readme.txt, entonces el nombre completo o ruta
   al fichero es tal/cual/readme.txt.

   Los directorios y ficheros se almacenan en un sistema de ficheros.
   Cada sistema de ficheros contiene un solo directorio en el nivel
   mas elevado, que es el directorio raiz de ese sistema de ficheros.
   Este directorio raiz puede contener otros directorios.

   Lo visto hasta ahora probablemente sea similar a cualquier otro
   sistema operativo que pueda haber utilizado, pero hay unas cuantas
   diferencias; por ejemplo, MS-DOS utiliza \ para separar nombres de
   fichero y directorio, mientras que Mac OS(R) usa :.

   FreeBSD no utiliza letras de unidades, u otro nombre de unidad en
   la ruta. Por tanto, no podra escribir c:/tal/cual/readme.txt en
   FreeBSD.

   En FreeBSD, en cambio, un sistema de ficheros recibe el nombre de
   sistema de ficheros raiz. El directorio raiz del sistema de
   ficheros raiz se representa como /. Cualquier otro sistema de
   ficheros, por tanto, se monta bajo el sistema de ficheros raiz. No
   importa cuantos discos tenga en su sistema FreeBSD, cada
   directorio parecera ser parte del mismo disco.

   Suponga que tiene tres sistemas de ficheros, denominados A, B y C.
   Cada sistema de ficheros tiene un directorio raiz, el cual
   contiene otros dos directorios, llamados A1, A2 (y de la misma
   manera B1, B2 y C1, C2).

   Usaremos A como sistema de ficheros raiz. Si usara ls para ver el
   contenido de este directorio veria dos subdirectorios, A1 y A2. El
   arbol de directorios seria como este:

  /
  |
  +--- A1
  |
  `--- A2

   Un sistema de ficheros debe montarse en un directorio de otro
   sistema de ficheros. Ahora suponga que monta el sistema de
   ficheros B en el directorio A1. El directorio raiz de B reemplaza
   a A1, y los directorios en B aparecen de esta manera:

  /
  |
  +--- A1
  |     |
  |     +--- B1
  |     |
  |     `--- B2
  |
  `--- A2

   Cualquier fichero que este en el directorio B1 o B2 puede
   encontrarse con la ruta /A1/B1 o /A1/B2 segun sea necesario.
   Cualquier fichero que este en /A1 ha desaparecido temporalmente.
   Apareceran de nuevo si B se desmonta de A.

   Si B se monta en A2 entonces el diagrama se veria asi:

  /
  |
  +--- A1
  |
  `--- A2
        |
        +--- B1
        |
        `--- B2

   y las rutas serian /A2/B1 y /A2/B2 respectivamente.

   Pueden montarse sistemas de ficheros uno sobre otro. Continuando
   con el ejemplo anterior, el sistema de ficheros C podria montarse
   en el directorio B1 en el sistema de ficheros B, lo que nos
   llevaria a esto:

  /
  |
  +--- A1
  |
  `--- A2
        |
        +--- B1
        |     |
        |     +--- C1
        |     |
        |     `--- C2
        |
        `--- B2

   O C podria montarse directamente en el sistema de ficheros A, bajo
   el directorio A1:

  /
  |
  +--- A1
  |     |
  |     +--- C1
  |     |
  |     `--- C2
  |
  `--- A2
        |
        +--- B1
        |
        `--- B2

   Si esta familiarizado con MS-DOS esto es similar, aunque no
   identico, a utilizar join.

   Esto no es algo a lo deba usted dedicar tiempo de forma habitual.
   Normalmente creara sistemas de ficheros al instalar FreeBSD y
   decidira donde montarlos; lo mas habitual es que no los cambie de
   sitio a menos que agregue un disco nuevo.

   Es perfectamente posible tener un sistema de ficheros raiz extenso
   y no necesitar crear otros. Este esquema tiene unos cuantos
   inconvenientes y una ventaja:

   Ventajas de disponer de multiples sistemas de ficheros

     * Si dispone de varios sistemas de ficheros puede optar por usar
       distintas opciones de montaje. Por ejemplo, gracias a una
       planificacion cuidadosa, el sistema de ficheros raiz puede
       montarse como solo-lectura, haciendo imposible borrar sin
       querer o editar un fichero critico. Al mantener separados
       sistemas de ficheros en los que los usuarios pueden escribir,
       como /home, de otros sistemas de ficheros tambien le permite
       montar con la opcion nosuid; dicha opcion previene que los
       bits suid/guid en los ejecutables almacenados en el sistema de
       ficheros tengan efecto, mejorando en cierto modo la seguridad.

     * FreeBSD optimiza automaticamente el esquema de ficheros en un
       sistema de ficheros, dependiendo de como el sistema de
       ficheros este siendo utilizado. Uno que contenga muchos
       ficheros pequenos tendra una optimizacion distinta de uno que
       contenga menos ficheros y mas grandes. Si solo tiene un gran
       sistema de ficheros no hay manera de aplicar esta
       optimizacion.

     * Los sistemas de ficheros de FreeBSD son muy robustos en caso
       de sufrir un caida electrica. De todas maneras, un fallo
       electrico en un momento critico puede danar la estructura del
       sistema de ficheros. Si reparte sus datos en multiples
       sistemas de ficheros hara que sea mas probable que el sistema
       arranque despues de uno de esos fallos, haciendole ademas mas
       facil la tarea de restaurarlo desde un respaldo si fuera
       necesario.

   Ventajas de un solo sistema de ficheros

     * Los sistemas de ficheros son de un tamano fijo. Si crea un
       sistema de ficheros cuando instala FreeBSD y le da un tamano
       especifico, tal vez descubra mas tarde que necesita hacer la
       particion mas grande. Esto no es facil de realizar sin hacer
       una copia de seguridad, crear de nuevo el sistema de ficheros
       con el nuevo tamano y entonces restaurar los datos
       respaldados.

         Importante: FreeBSD dispone de growfs(8), que permite
         incrementar el tamanno de un sistema de ficheros <<al
         vuelo>>, eliminando esta limitacion.

   Los sistemas de ficheros estan alojados en particiones. Este es un
   detalle muy importante, puesto que el termino particion no
   significa aqui lo mismo que en otros entornos (por ejemplo, en
   MS-DOS) debido a la herencia UNIX de FreeBSD. Cada particion se
   identifica con una letra desde a hasta h. Cada particion puede
   contener solamente un sistema de ficheros, lo que significa que
   los sistemas de ficheros suelen definirse mediante su punto de
   montaje en la jerarquia del sistema de ficheros o por la letra de
   la particion en la que estan alojados.

   FreeBSD tambien utiliza espacio de disco como espacio de
   intercambio (swap). El espacio de intercambio le brinda a FreeBSD
   memoria virtual. Esto permite al su sistema comportarse como si
   tuviera mas memoria de la que realmente tiene. Cuando a FreeBSD se
   le agota la memoria mueve algunos de los datos que no esta
   utilizando en ese momento al espacio de intercambio, y los vuelve
   a poner donde estaban (desplazando alguna otra cosa) cuando los
   necesita.

   Algunas particiones tienen ciertas convenciones heredadas.

   Particion                      Representacion                      
   a         Normalmente contiene el sistema de ficheros raiz         
   b         Normalmente contiene el espacio de intercambio (swap)    
             Suele tener el mismo tamano de la <<slice>> que la       
             encierra. Esto permite a las utilidades que necesitan    
   c         trabajar en toda la <<slice>> entera (por ejemplo        
             durante una busqueda de bloques danados) trabajar en la  
             particion c. Normalmente no deberia usted crear un       
             sistema de ficheros en esta particion.                   
   d         La particion d solia tuvo un significado especial        
             asociado pero ya no lo tiene.                            

   Cada particion que contiene un sistema de ficheros se almacena en
   lo que FreeBSD llama una <<slice>>. <<slice>> es en FreeBSD lo que
   en otros ambitos se denomina particion; es un hecho que deriva de
   los origenes de FreeBSD como ya sabemos basado en UNIX.

   Los numeros de <<slice>> muestran el nombre de dispositivo, al que
   precede una s y un numero que puede ser un 1 u otro numero mayor.
   Por lo tanto <<da0s1>> es la primera slice en la primera unidad
   SCSI. Solo puede haber cuatro <<slice>> fisicas en un disco, pero
   puede haber <<slice>> logicas dentro <<slice>> fisicas del tipo
   apropiado. Estas <<slice>>extendidas se numeran a partir de 5, asi
   que <<ad0s5>> es la primera <<slice>> extendida en el primer disco
   IDE. Estos dispositivos se usan en sistemas de ficheros que se
   preve que ocupen una slice.

   Tanto las <<slice>> y las unidades fisicas <<peligrosamente
   dedicadas>>, como otras unidades contienen particiones, que se
   designan mediante letras desde la a hasta h. Esta letra se anade
   al nombre del dispositivo. Se vera mucho mejor mediante ejemplos:
   <<da0a>> es la particion a en la primera unidad da y es una de
   esas a las que llamamos <<peligrosamente dedicada>>. <<ad1s3e>> es
   la quinta particion en la tercera slice de la segunda unidad de
   disco IDE.

   Para terminar, cada disco en el sistema tiene tambien su
   designacion. El nombre de disco comienza por un codigo que indica
   el tipo de disco, luego un numero, que indica que disco es. A
   diferencia de las <<slice>>, la numeracion de discos comienza
   desde 0. Puede las numeraciones mas comunes en el Tabla 3-1.

   Cuando se hace referencia a una particion, FreeBSD necesita que
   tambien se nombre la <<slice>> y el disco que contiene la
   particio. Esto se hace con el nombre de disco, s, el numero
   <<slice>> y por ultimo la letra de la particion. Tiene varios
   casos en el Ejemplo 3-1.

   En el Ejemplo 3-2 muestra un modelo conceptual del esquema de un
   disco que deberia ayudarle a aclarar las cosas.

   Antes de instalar FreeBSD tendra que configurar las <<slice>> de
   disco, despues crear particiones dentro de las <<slice>> que vaya
   a usar en FreeBSD y luego crear un sistema de ficheros (o swap) en
   cada particion y luego decidir cual va a ser el punto de montaje
   del sistema de ficheros.

   Tabla 3-1. Codigos de dispositivos de disco

     Codigo                         Significado                       
   ad          Disco ATAPI (IDE)                                      
   da          Disco de acceso directo SCSI                           
   acd         CDROM ATAPI (IDE)                                      
   cd          CDROM SCSI                                             
   fd          Disquete (floppy)                                      

   Ejemplo 3-1. Ejemplo de nombres de disco, <<slice>> y particion

   Nombre                         Significado                         
   ad0s1a La primera particion (a) en la primera slice (s1) en el     
          primer disco IDE (ad0).                                     
   da1s2e La quinta particion (e) en la segunda slice (s2) en el      
          segundo disco SCSI (da1).                                   

   Ejemplo 3-2. Modelo conceptual de un disco

   Este diagrama muestra como ve FreeBSD el primer disco IDE en el
   sistema. Se asume que el disco es de 4 GB, y contiene dos
   <<slices>> de 2 GB (particiones MS-DOS). La primera particion
   contiene un disco MS-DOS, C:, y la segunda particion contiene una
   instalacion de FreeBSD. Esta instalacion de ejemplo tiene tres
   particiones, y una particion swap.

   Cada una de las tres particiones tiene un sistema de ficheros. La
   particion a se utilizara para el sistema de ficheros raiz, e para
   la jerarquia del directorio /var, y f para la jerarquia del
   directorio /usr.

 .-----------------.  --.
 |                 |    |
 |  DOS / Windows  |    |
 :                 :     >  Primera particion, ad0s1
 :                 :    |
 |                 |    |
 :=================:  ==:                               --.
 |                 |    |  Particion a, montada como /      |
 |                 |     > recibe el nombre de  ad0s2a          |
 |                 |    |                                 |
 :-----------------:  ==:                                 |
 |                 |    |  Particion b, usada como swap      |
 |                 |     > recibe el nombre de ad0s2b          |
 |                 |    |                                 |
 :-----------------:  ==:                                 |  Particion c, sin
 |                 |    |  Particion e, usada como /var       > sistema de archivos, la
 |                 |     > recibe el nombre de ad0s2e          |  porcion completa de FreeBSD,
 |                 |    |                                 |  ad0s2c
 :-----------------:  ==:                                 |
 |                 |    |                                 |
 :                 :    |  Particion f, usada como /usr      |
 :                 :     > referida como ad0s2f          |
 :                 :    |                                 |
 |                 |    |                                 |
 |                 |  --'                                 |
 `-----------------'                                    --'

     --------------------------------------------------------------

3.6. Montaje y desmontaje de sistemas de ficheros

   El sistema de ficheros se visualiza mejor como un arbol enraizado,
   tal y como esa, en /. /dev, /usr y todos los demas directorios en
   el directorio raiz son raamas, las cuales pueden tener sus propias
   ramas, como /usr/local y asi sucesivamente.

   Existen varias razones para albergar algunos de estos directorios
   en sistemas de ficheros separados. /var contiene los directorios
   log/, spool/ y varios tipos de ficheros temporales y pueden llegar
   a desbordarse. Agotar el espacio del sistema de ficheros raiz no
   es nada bueno desde cualquier punto de vista, asi que separar /var
   de de / es algo que deberia hacerse siempre que sea posible.

   Otra razon para meter ciertos arboles de directorios en otros
   sistemas de ficheros es si van a estar albergados en discos
   fisicos separados, o si son discos virtuales separados, como un
   montaje por NFS en el caso de unidades de CDROM.

     --------------------------------------------------------------

  3.6.1. El fichero fstab

   Durante el proceso de arranque los sistemas de ficheros listados
   en /etc/fstab se montan automaticamente (a menos que esten
   listados con la opcion noauto).

   /etc/fstab contiene una lista de lineas con el siguiente formato:

 dispositivo       /punto-de-montaje punto de montaje     opciones      dumpfreq     passno

   dispositivo

           Un nombre de dispositivo (debe existir).

   punto-de-montaje

           Un directorio (que debe existir) en el que montar el
           sistema de ficheros.

   tipo de sistema ficheros

           El tipo de sistema de ficheros es un parametro que
           interpretara mount(8). El sistema de ficheros por omision
           de FreeBSD es ufs.

   opciones

           Ya sea rw para sistemas de ficheros de lectura-escritura,
           o ro para sistemas de ficheros de solo lectura, seguido de
           cualquier otra opcion que sea necesaria. Una opcion muy
           habitual es noauto, que se suele usar en sistemas de
           ficheros que no se deben montar durante la secuencia de
           arranque. Tiene otras opciones en la pagina de manual de
           mount(8).

   dumpfreq

           dump(8) la usa para determinar que sistema de ficheros
           requieren volcado. Si el campo no esta declarado se asume
           un valor de cero.

   passno

           Determina el orden en el cual los sistemas de ficheros
           deben revisarse. Los sistemas de ficheros que hayan de
           saltarse deben tener su passno a cero. El sistema de
           ficheros raiz (que obviamente debe ser revisado antes que
           cualquier otro) debe tener su passno puesto a uno, y los
           demas sistemas de ficheros deben tener valores mayores que
           uno. Si mas de un sistema de ficheros tiene el mismo
           passno fsck(8) tratara de revisarlos en paralelo en caso
           de ser posible.

   Consulte la pagina de manual de fstab(5) para mayor informacion
   sobre el formato del fichero /etc/fstab y las opciones que
   contiene.

     --------------------------------------------------------------

  3.6.2. La orden mount

   mount(8) es al fin y al cabo quien monta los sistemas de ficheros.

   En su forma mas basica se usa lo siguiente:

 # mount dispositivo punto-de-montaje

   Existe una gran cantidad de opciones (las encontrara todas en
   mount(8)) pero las mas comunes son:

   Opciones de montaje

   -a

           Montar todos los sistemas de ficheros que aparezcan en
           /etc/fstab, excepto aquellos marcados como <<noauto>>,
           excluidos por el parametro -t o aquellos que ya esten
           montados.

   -d

           Realizar todo excepto la llamada real de montaje del
           sistema. Esta opcion es muy util en caso de problemas si
           se combina con la opcion -v para determinar que es lo que
           mount(8) esta haciendo realmente.

   -f

           Forzar el montaje de un sistema de ficheros inestable (por
           ejemplo uno que da errores tras un reinicio subito, algo
           que es bastante peligroso), o forzar la revocacion de
           accesos de escritura cuando se cambia el estado de un
           sistema de ficheros de lectura-escritura a solo lectura.

   -r

           Montar el sistema de ficheros como solo lectura. Esto es
           identico a utilizar el argumento ro (rdonly para versiones
           anteriores a FreeBSD 5.2) en la opcion -o.

   -t tipo de sistema de ficheros

           Montar un sistema de ficheros dado con el tipo de sistema
           de ficheros, o montar solamente sistemas de ficheros del
           tipo dado si se proporciona la opcion -a.

           <<ufs>> es el sistema de ficheros por omision.

   -u

           Actualizar puntos de montaje en el sistema de ficheros.

   -v

           Mostrar mayor informacion.

   -w

           Montar el sistema de ficheros como lectura-escritura.

   La opcion -o toma una lista las siguientes opciones separada por
   comas:

   nodev

           No interpretar dispositivos especiales en el sistema
           ficheros. Es una opcion de seguridad que puede ser muy
           util.

   noexec

           No permitir la ejecucion de binarios en este sistema de
           ficheros. Esta tambien es una opcion de seguridad util.

   nosuid

           No interpretar bits setuid o setgid en el sistema de
           ficheros. Esta tambien es una opcion de seguridad util.

     --------------------------------------------------------------

  3.6.3. La orden umount

   umount(8) toma como parametro un punto de montaje, un nombre de
   dispositivo, o la opcion -a o -A.

   Todas las formas toman -f para forzar el desmontaje y -v para
   mostrar mas informacion. Tenga muy en cuenta que usar -f no suele
   ser una forma recomendable de proceder. Desmontar a la fuerza los
   sistemas de ficheros puede acarrear el congelar la maquina o danar
   los datos en el sistema de ficheros.

   -a y -A se usan para desmontar todos los sistemas de ficheros
   montados, con la ventaja de poder elegir el tipo de sistema de
   ficheros que se use tras -t. De todas maneras -A no trata de
   desmontar el sistema de ficheros raiz.

     --------------------------------------------------------------

3.7. Procesos

   FreeBSD es un sistema operativo multitarea. Esto significa que
   parece como si mas de un programa se estuviera ejecutando al mismo
   tiempo. Cada programa uno de esos programas que se esta ejecutando
   en un momento dado se denomina proceso. Cada orden que ejecuta
   iniciara al menos un proceso nuevo, y hay muchos procesos que se
   estan que se estan ejecutando en todo momento, manteniendo el
   sistema en funcionamiento.

   Cada proceso tiene un identificador individual consistente en un
   numero llamado ID del proceso, o PID, y al igual que sucede con
   los ficheros, cada proceso tiene un propietario y un grupo. La
   informacion de propietario y grupo se usa para determinar que
   ficheros y dispositivos puede abrir el proceso mediante los
   permisos de fichero explicados anteriormente. La mayoria de los
   procesos tambien tiene un proceso padre. El proceso padre es el
   proceso que los inicio. Por ejemplo, si esta tecleando ordenes en
   la shell, la shell es un proceso, y cualquier orden que usted
   ejecute tambien lo sera. De este modo cada proceso que ejecute
   tendra como proceso padre a su shell. La excepcion es un proceso
   especial llamado init(8). init es siempre el primer proceso, asi
   que su PID siempre es 1. El kernel arranca automaticamente init en
   el arranque de FreeBSD.

   Hay dos ordenes particularmente utiles para ver los procesos en el
   sistema, ps(1) y top(1). ps se usa para mostrar una lista estatica
   de los procesos que se ejecutan en el sistema en es momento, y
   puede mostrar sus PID, cuanta memoria esta usando, la linea de
   ordenes con la que fueron iniciados y muchas mas cosas. top
   despliega todos los procesos que se estan ejecutando y actualiza
   la pantalla cada pocos segundos para que pueda ver lo que esta
   haciendo su sistema.

   Por omision ps solo le muestra las ordenes que estan ejecutando y
   que sean propiedad de su usuario. Por ejemplo:

 % ps
   PID  TT  STAT      TIME COMMAND
   298  p0  Ss     0:01.10 tcsh
  7078  p0  S      2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
 37393  p0  I      0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
 48630  p0  S      2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
 48730  p0  IW     0:00.00 (dns helper) (navigator-linux-)
 72210  p0  R+     0:00.00 ps
   390  p1  Is     0:01.14 tcsh
  7059  p2  Is+    1:36.18 /usr/local/bin/mutt -y
  6688  p3  IWs    0:00.00 tcsh
 10735  p4  IWs    0:00.00 tcsh
 20256  p5  IWs    0:00.00 tcsh
   262  v0  IWs    0:00.00 -tcsh (tcsh)
   270  v0  IW+    0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
   280  v0  IW+    0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
   284  v0  IW     0:00.00 /bin/sh /home/nik/.xinitrc
   285  v0  S      0:38.45 /usr/X11R6/bin/sawfish

   Como puede ver en este ejemplo la salida de ps(1) esta organizada
   en columnas. PID es el ID de proceso anteriormente expuesto. Los
   PIDs se asignan a partir del 1 y hasta 99999, y vuelven a comenzar
   desde el 1 otra cuando se terminan los numeros. La columna TT
   muestra la tty en la que el programa se esta ejecutando; podemos
   ignorarla tranquilamente por el momento. STAT muestra el estado
   del programa; de momento tambien podemos ignorarlo. TIME es la
   cantidad de tiempo que el programa ha se ha estado ejecutando en
   la CPU (generalmente no es el tiempo transcurrido desde que se
   inicio el programa, ya que la mayoria de los programas pasan mucho
   tiempo esperando antes de que necesiten gastar tiempo en la CPU.
   Finalmente, COMMAND es la linea de ordenes que se empleo para
   ejecutar el programa.

   ps(1) admite muchas opciones sobre la informacion que se desea
   ver. Uno de los conjuntos mas utiles es auxww. a muestra
   informacion acerca de todos los procesos ejecutandose, no
   solamente los suyos. u despliega el nombre de usuario del
   propietario del proceso, asi como el uso de memoria. x despliega
   informacion acerca de los procesos daemon y ww hace que ps(1)
   despliegue la linea de ordenes completa, en lugar de truncarla
   cuando es demasiado larga para caber en la pantalla.

   La salida de top(1) es similar. Veamos un ejemplo:

 % top
 last pid: 72257;  load averages:  0.13,  0.09,  0.03    up 0+13:38:33  22:39:10
 47 processes:  1 running, 46 sleeping
 CPU states: 12.6% user,  0.0% nice,  7.8% system,  0.0% interrupt, 79.7% idle
 Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
 Swap: 256M Total, 38M Used, 217M Free, 15% Inuse

   PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
 72257 nik       28   0  1960K  1044K RUN      0:00 14.86%  1.42% top
  7078 nik        2   0 15280K 10960K select   2:54  0.88%  0.88% xemacs-21.1.14
   281 nik        2   0 18636K  7112K select   5:36  0.73%  0.73% XF86_SVGA
   296 nik        2   0  3240K  1644K select   0:12  0.05%  0.05% xterm
 48630 nik        2   0 29816K  9148K select   3:18  0.00%  0.00% navigator-linu
   175 root       2   0   924K   252K select   1:41  0.00%  0.00% syslogd
  7059 nik        2   0  7260K  4644K poll     1:38  0.00%  0.00% mutt
 ...

   La salida esta dividida en dos secciones. La cabecera (las
   primeras cinco lineas) muestra el PID del ultimo proceso en
   ejecutarse, la carga promedio del sistema (una medida de la carga
   del sistema), el <<uptime>> del sistema (tiempo desde el ultimo
   reinicio) y la hora actual. Las otras cifras en la cabecera se
   relacionan con cuantos procesos hay en ejecucion en el sistema (47
   en este caso), cuanta memoria y espacio de intercambio (swap) esta
   en uso, y cuanto tiempo esta el sistema en diferentes estados de
   CPU.

   Mas abajo hay una serie de columnas con informacion similar a la
   salida de ps(1). Igual que antes, puede usted ver el PID, el
   nombre de usuario, la cantidad de tiempo de CPU en uso y la orden
   que se ejecuto. top(1) tambien mostrara por omision la cantidad de
   espacio de memoria que emplea cada proceso. Esta dividido en dos
   columnas, una para el tamano total y otra para el tamano residente
   (el tamano total es cuanta memoria ha necesitado la aplicacion y
   el tamano residente es cuanta se esta usando en ese momento
   concreto). En este ejemplo puede verse que Netscape(R) requerido
   casi 30 MB de RAM, pero actualmente solo esta usando 9 MB.

   top(1) actualiza automaticamente el listado cada dos segundos,
   pero este lapso puede cambiarse mediante la opcion s.

     --------------------------------------------------------------

3.8. Daemons, senales y como matar procesos

   cuando ejecuta un editor es facil controlarlo, decirle que cargue
   ficheros y demas. Puede hacerse porque el editor permite ese
   control y porque el editor depende de una terminal. Algunos
   programas no estan disenados para ejecutarse entradas continuas
   por parte del usuario, asi que se desconectan de la terminal a la
   primera oportunidad. Por ejemplo, un servidor web pasa todo el dia
   respondiendo peticiones web y normalmente no necesita que usted le
   haga caso. Los programas que transportan correo electronico de un
   sitio a otro son otro ejemplo de esta clase de aplicacion.

   Llamamos a estos programas daemons. Los Daemons eran personajes de
   la mitologia griega; no eran ni buenos ni malos, eran pequenos
   espiritus sirvientes que, en gran medida, hacian cosas utiles por
   la humanidad. Algo muy parecido a como los servidores web y los
   servidores de correo hacen hoy dia tantas cosas utiles para
   nosotros. Por eso, desde hace mucho tiempo la mascota de BSD es
   ese daemon de aspecto tan ufano con su tridente y su comodo
   calzado deportivo.

   Hay una norma segun la cual se da nombre a los programas que
   suelen ejecutarse como daemons con una <<d>> final. BIND es el
   daemon de nombres de Berkeley (y el programa que en realidad se
   ejecuta se llama named); el servidor web Apache se llama httpd, el
   daemon de <<spool>> de impresora de linea es lpd y asi
   sucesivamente. Se trata de un acuerdo, no una ley ferrea; por
   ejemplo el daemon principal de correo de Sendmail se llama
   sendmail, y no maild, como podria suponerse visto lo precedente.

   Algunas veces necesitara comunicarse con un daemon. Estas
   comunicaciones se denominan senales; es posible comunicarse con un
   daemon (o con cualquier otro proceso ejecutandose) mandandole una
   senal. Existen diversos tipos de senales diferentes que puede
   mandar: algunas tienen un significado especial, otras son
   interpretadas por la aplicacion y la documentacion de la
   aplicacion le dira como interpreta la senal esa aplicacion).
   Solamente puede enviar una senal a un del que sea usted
   propietario. Si manda una senal a un proceso de otro usuario con
   kill(1) o kill(2) vera un mensaje del sistema en el que se le
   comunica que no tiene permiso para hacer tal cosa. La excepcion a
   esto es el usuario root, que puede mandar senales a los procesos
   de cualquier usuario del sistema.

   FreeBSD tambien enviara senales de aplicacion en determinados
   casos. Si una aplicacion esta mal escrita y trata de acceder a
   memoria a la que no esta previsto que acceda FreeBSD manda al
   proceso la senal Violacion de segmento (SIGSEGV). Si una
   aplicacion ha utilizado la llamada de sistema alarm(3) para ser
   avisada despues de que un periodo de tiempo haya transcurrido se
   le mandara la senal de alarma (SIGALRM), y asi sucesivamente.

   Hay dos senales que pueden usarse para detener un proceso, SIGTERM
   y SIGKILL. SIGTERM es la manera amable de matar un proceso; el
   proceso puede recibir la senal, darse cuenta que usted quiere que
   se apague, cerrar cualquier fichero de log que pueda tener abierto
   y generalmente terminar cualquier tarea que este realizando en ese
   momento antes de apagarse. En algunos casos un proceso puede
   incluso ignorar SIGTERM si se encuentra inmerso en una tarea que
   no puede ser interrumpida.

   Por el contrario, un proceso no puede ignorar una senal

   SIGKILL. Esta es la senal <<No me importa lo que estas haciendo,
   detente ahora mismo>>. Si manda un SIGKILL a un proceso FreeBSD
   detendra ese proceso inmediatamente.[4].

   Otras senales que puede usar: SIGHUP, SIGUSR1 y SIGUSR2. Son
   senales de proposito general, y aplicaciones diferentes pueden
   hacer cosas diferentes cuando se utilicen.

   Suponga que ha cambiado el fichero de configuracion de su servidor
   web; es un buen momento para decirle al servidor web que lea y
   aplique la configuracion. Podria detener y reiniciar httpd, pero
   esto implicaria un periodo breve de suspension del servicio de su
   servidor web, lo cual puede no ser asumible. La mayoria de los
   daemons fueron creados pensando en que fueran capaces de responder
   a la senal SIGHUP releyendo su fichero de configuracion. En lugar
   de matar y reiniciar httpd le podria mandar la senal SIGHUP. Dado
   que no hay una manera estandar para responder a estas senales,
   diferentes daemons tendran diferente comportamiento, asi que
   asegurese de leer la documentacion del daemon en cuestion.

   Las senales se envian mediante kill(1), como puede verse en el
   siguiente ejemplo.

   Envio de una senal a un proceso

   Este ejemplo muestra como enviar una senal a inetd(8). El fichero
   de configuracion de inetd es /etc/inetd.conf e inetd releera dicho
   fichero de configuracion cuando se le envie un SIGHUP.

    1. Identifique el ID de proceso del proceso al que quiere
       enviarle la senal mediante ps(1) y grep(1). grep(1) se usa
       para buscar cadenas de texto de su eleccion en la salida
       estandar. Puede ejecutarse como un usuario normal, mientras
       que inetd(8) se ejecuta como root, asi que debe pasarle los
       parametros ax a ps(1).

 % ps -ax | grep inetd
   198  ??  IWs    0:00.00 inetd -wW

       Vemos que el PID de inetd(8) es 198. En algunos casos grep
       inetd tambien puede aparecer en esta salida. Esto se debe a la
       manera en que ps(1) tiene que encontrar la lista de procesos
       ejecutandose.

    2. Utilice kill(1) para enviar la senal. Debido a que inetd(8)
       esta siendo ejecutado po root tendra que usar primero su(1)
       para volverse root.

 % su
 Password:
 # /bin/kill -s HUP 198

       Del mismo modo que la mayoria de ordenes UNIX kill(1) no
       imprimira ninguna salida si ha funcionado bien. Si envia una
       senal a un proceso del que no es el propietario vera lo
       siguiente: "kill: PID: Operation not permitted". Si no teclea
       bien el PID puede enviar la senal a un proceso equivocado, lo
       cual puede ser malo, o si tiene suerte, habra enviado la senal
       a un proceso que no esta en uso y vera el sistema le dir'
       "kill: PID: No such process".

         ?Por que utilizar /bin/kill?: Muchas shells incorporan su
         propio kill; esto es, el shell mandara la senal
         directamente, en lugar de ejecutar /bin/kill. Esto puede ser
         util pero las diferentes shells tienen diferentes sintaxis
         para especificar el nombre de la senal que envian. En lugar
         de tratar de aprederse todas ellas, es mas facil simplemente
         usar /bin/kill ... sea la que sea la shell que prefiera
         usar.

   El envio de otras senales es muy similar; sustituya TERM o KILL en
   la linea de ordenes segun sea necesario.

     Importante: Matar procesos aleatorios en el sistema es una mala
     idea. En particular, init(8), ID de proceso 1, es muy especial.
     Ejecutar /bin/kill -s KILL 1 es una manera rapida de apagar su
     sistema. Siempre revise dos veces los argumentos con los que
     ejecuta kill(1) antes de pulsar Intro.

     --------------------------------------------------------------

3.9. Shells

   En FreeBSD gran parte del trabajo diario se hace en una interfaz
   de linea de ordenes llamada shell. El trabajo principal de la
   shell es ir recibiendo ordenes mediante un canal de entrada y
   ejecutarlos. Muchas shells tambien tienen funciones integradas
   para ayudar ayudar con las tareas diarias como manipulacion de
   ficheros, gestion de archivos con expresiones regulares, edicion
   en la propia linea de ordenes, macros de ordenes y variables de
   entorno. FreeBSD incluye diversas shells, como sh, el shell Bourne
   y tcsh, el shell C mejorado. Hay muchas otras shells disponibles
   en la coleccion de ports de FreeBSD, como zsh y bash.

   ?Que shell usar? es una cuestion de gustos. Si va a programar en C
   puede preferir usar una shell tipo C, como tcsh. Si viene del
   mundo Linux o si es nuevo en la interfaz de linea de ordenes de
   UNIX puede probar con bash. Tenga en cuenta que cada shell posee
   unas propiedades unicas que pueden o no funcionar con su entorno
   de trabajo preferido y que puede usted elegir que shell usar.

   Una de las propiedades comunes de las shell es que completan los
   nombres de fichero. Una vez que ha introducido las primeras letras
   de una orden o del nombre de un fichero, se puede hacer que la
   shell complete automaticamente el resto de la orden o nombre de
   fichero pulsando la tecla Tab. Veamos un ejemplo. Suponga que
   tiene dos ficheros llamados talcual y tal.cual. Usted quiere
   borrar tal.cual. Lo que habria que teclear es: rm
   ta[tabulador].[tabulador].

   La shell mostraria en pantalla rm ta[BIP].cual.

   El [BIP] es la campana de la consola, es decir, la shell esta
   diciendome que no pudo completar totalmente el nombre de fichero
   porque hay mas de una coincidencia. Tanto talcual como tal.cual
   comienzan por ta, pero solo se pudo completar hasta tal. Si se
   teclea ., y de nuevo tabulador la shell es capaz de anadir el
   resto del nombre de fichero.

   Otra funcion de la shell son las variables de entorno. Las
   variables de entorno son parejas de valores clave almacenados en
   el espacio de entorno del shell. Este espacio puede ser leido por
   cualquier programa invocado por la shell y por lo tanto contiene
   mucha configuracion de programas. Esta es una lista de las
   variables de entorno mas comunes y su significado:

   Variable                        Descripcion                        
   USER     Nombre de usuario en el sistema.                          
   PATH     Lista de directorios, separados por punto y coma, en los  
            que se buscan ejecutables.                                
   DISPLAY  Nombre de red de la pantalla X11 a la que conectarse, si  
            esta disponible.                                          
   SHELL    La shell actual.                                          
   TERM     El nombre de la terminal del usuario. Se usa para         
            determinar las caracteristicas de la terminal.            
            Base de datos donde encontrar los codigos de escape       
   TERMCAP  necesarios para realizar diferentes funciones en la       
            terminal.                                                 
   OSTYPE   Tipo de sistema operativo. Por ejemplo, FreeBSD.          
   MACHTYPE Arquitectura de CPU en la que se esta ejecutando el       
            sistema.                                                  
   EDITOR   El editor de texto preferido por el usuario.              
   PAGER    El paginador de texto preferido por el usuario.           
   MANPATH  Lista de directorios separados por punto y coma en los    
            que se buscan paginas de manual.                          

   Establecer una variable de entorno difiere ligeramente de shell a
   shell. Por ejemplo, en las shells al estilo C como tcsh y csh, se
   usa setenv para establecer las variables de entorno. Bajo shells
   Bourne como sh y bash, se usa export para establecer las variables
   de entorno actuales. Por ejemplo, para establecer o modificar la
   variable de entorno EDITOR (bajo csh o tcsh) la siguiente orden
   establece EDITOR como /usr/local/bin/emacs:

 % setenv EDITOR /usr/local/bin/emacs

   Bajo shells Bourne:

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

   Tambien se puede hacer que la mayoria de las shells muestren el
   contenido de una variable de entorno situando el caracter $
   delante del nombre de la variable en la linea de ordenes. Por
   ejemplo, echo $TERM mostrara cualquiera que sea el valor que haya
   establecido para $TERM, porque la shell expande el valor de $TERM
   y se lo pasa al programa echo.

   Las shells manejan muchos caracteres especiales, llamados
   metacaracteres, como representaciones especiales de datos. El mas
   comun es el caracter *, que representa cualquier numero de
   caracteres en un nombre de fichero. Estos metacaracteres
   especiales se pueden usar para la expansion de nombres de fichero.
   Por ejemplo, teclear echo * es casi lo mismo que introducir ls
   porque la shell toma todos los ficheros que coinciden con * y se
   los pone en la linea de ordenes para que echo los vea.

   Para evitar que la shell interprete estos caracteres especiales
   pueden escamotearse anteponiendoles una contrabarra (\). echo
   $TERM imprime el nombre de terminal que este usando. echo \$TERM
   imprime $TERM, literalmente.

     --------------------------------------------------------------

  3.9.1. Como cambiar su shell

   La manera mas facil de cambiar de shell es mediante chsh. chsh le
   colocara dentro del editor que este configurado en la variable de
   entorno EDITOR; si no la ha modificado, el sistema ejecutara vi,
   el editor por omision. Cambie la linea <<Shell:>> segun sus
   gustos.

   Tambien se le puede suministrar a chsh la opcion -s; esto
   establecera la shell sin necesidad de entrar en el editor de
   texto. Si por ejemplo quiere que bash sea su shell por omision
   puede configurarlo del siguiente modo:

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

   Ejecutar chsh sin parametros y editar la shell desde ahi tambien
   funciona.

     Nota: La shell que se desee usar debe estar incluida en
     /etc/shells. Si se ha instalado una shell desde la coleccion de
     ports esto deberi estar hecho automaticamente. Si ha instalado
     la shell manualmente, tendra usted que realizar el cambio
     oportuno en /etc/shells.

     Por ejemplo, si instalo manualmente bash y lo ubico en
     /usr/local/bin deberia hacer lo siguiente:

 # echo "/usr/local/bin/bash" >> /etc/shells

     Hecho esto vuelva a ejecutar chsh.

     --------------------------------------------------------------

3.10. Editores de texto

   Gran parte de la configuracion de FreeBSD se realiza modificando
   ficheros de texto, asi que le conviene familiarizarse con alguno
   de ellos. FreeBSD viene con unos cuantos como parte del sistema
   base y encontrara muchos mas en la coleccion de ports.

   El editor de textos mas sencillo y facil de aprender es uno
   llamado ee, cuyo nombre proviene del ingles <<easy editor>>
   (editor facil). Para iniciar ee se debe teclear en la linea de
   ordenes ee nombre-de-fichero, donde nombre-de-fichero es el nombre
   del fichero que se quiere editar. Por ejemplo, para editar
   /etc/rc.conf teclee ee /etc/rc.conf. Una vez dentro de ee todas
   las ordenes para manipular las funciones del editor estan listadas
   en la parte superior de la pantalla. El caracter ^ representa la
   tecla Ctrl del teclado, por lo tanto ^e significa la combinacion
   de teclas Ctrl+e. Para salir de ee pulse la tecla Esc y elija
   abandonar (<<leave>>) el editor. El editor preguntara entonces si
   quiere conservar los cambios si el fichero hubiera sido
   modificado.

   FreeBSD viene tambien con editores de texto mucho mas potentes,
   como vi, como parte del sistema base, mientras que otros editores,
   como Emacs y vim son parte de la coleccion de ports de FreeBSD
   (editors/emacs y editors/vim). Estos editores son muchisimo mas
   poderosos, pero tienen la desventaja de ser un poco mas
   complicados de aprender a manejar. De cualquier manera si planea
   hacer mucho trabajo de edicion de texto, aprender a usar un editor
   de texto mas poderoso como vim o Emacs le ahorrara muchisimo mas
   tiempo a la larga.

     --------------------------------------------------------------

3.11. Dispositivos y nodos de dispositivos

   Dispositivo es un termino utilizado la mayoria de las veces para
   actividades relacionadas con hardware del sistema, como discos,
   impresoras, tarjetas graficas y teclados. Cuando FreeBSD arranca,
   la mayoria de lo que FreeBSD despliega son dispositivos en el
   momento de ser detectados. Si lo desea, puede volver a ver todos
   los mensajes que el sistema emite durante el arranque consultando
   /var/run/dmesg.boot.

   Por ejemplo, acd0 es la primera unidad CDROM IDE, mientras que
   kbd0 representa el teclado.

   En un sistema operativo UNIX debe accederse a la mayoria de estos
   dispositivos a traves de ficheros especiales llamados nodos de
   dispositivo, que se encuentran en el directorio /dev.

     --------------------------------------------------------------

  3.11.1. Creacion de nodos de dispositivo

   Cuando agregue un nuevo dispositivo a su sistema, o compile
   soporte para dispositivos adicionales, puede que necesite crear
   uno o mas nodos de dispositivo.

     --------------------------------------------------------------

    3.11.1.1. DEVFS Dispositivo de sistema de ficheros (DEVice File
    System)

   El dispositivo de sistema de ficheros, o DEVFS, ofrece acceso a
   dispositivos del espacio de nombres del kernel en el espacio de
   nombres del sistema de ficheros global. En lugar de tener que
   crear y modificar nodos de dispositivo, DEVFS se encarga del
   mantenimiento dinamico de este sistema de fichero.

   Consulte devfs(5) si quiere mas informacion.

     --------------------------------------------------------------

3.12. Formatos binarios

   Para poder entender por que FreeBSD utiliza el formato elf(5)
   primero debe saber ciertas cosas sobre los tres formatos de
   ejecutables <<dominantes>> en UNIX:

     * a.out(5)

       El formato objeto de UNIX mas antiguo y <<clasico>>. Utiliza
       una cabecera corta y compacta con un numero magico al inicio
       que se usa frecuentemente para identificar el formato (vea
       a.out(5) para mas informacion). Contiene tres segmentos
       cargados: .text, .data, y .bss ademas de una tabla de simbolos
       y una tabla de cadena (<<strings>>).

     * COFF

       El formato objeto de SVR3. La cabecera consiste en una tabla
       de seccion, para que pueda tener mas contenido ademas de las
       secciones .text, .data, y .bss.

     * elf(5)

       Es el sucesor de COFF; dispone de secciones multiples y
       valores posibles de 32-bits o 64-bits. Una gran desventaja:
       ELF fue tambien disenado asumiendo que solamente existiria una
       ABI por cada arquitectura de sistema. Esa suposicion es en
       realidad bastante incorrecta y ni siquiera en el mundo
       comercial SYSV (el cual tiene al menos tres ABIs: SVR4,
       Solaris y SCO) se puede dar por buena.

       FreeBSD trata de solucionar este problema de alguna manera
       ofreciendo una herramienta para marcar un ejecutable ELF
       conocido con informacion acerca de la ABI con la que funciona.
       Si quiere mas informacion consulte la pagina de manual de
       brandelf(1).

   FreeBSD viene del campo <<clasico>> y ha utilizado el formato
   a.out(5), una tecnologia usada y probada en muchas de muchas
   generaciones de versiones de BSD hasta el inicio de la rama 3.X.
   Aunque era posible compilar y ejecutar binarios nativos ELF (y
   kernels) en un sistema FreeBSD desde algun tiempo antes de esto,
   FreeBSD al principio se mantuvo <<contra corriente>> y no cambio a
   ELF como formato por defecto. ?Por que? Bueno, cuando el mundo
   Linux efectuo su dolorosa transicion a ELF no fue tanto por huir
   del formato a.out como por su inflexible mecanismo de bibliotecas
   compartidas basado en tablas de saltos, que hacia igual de dificil
   la construccion de bibliotecas compartidas tanto para los
   desarrolladores como para los proveedores. Ya que las herramientas
   ELF disponibles ofrecian una solucion al problema de las
   bibliotecas compartidas y eran vistas por mucha gente como <<la
   manera de avanzar>>, el costo de migracion fue aceptado como
   necesario y se realizo la transicion. El mecanismo de bibliotecas
   compartidas de FreeBSD esta disenado de manera mas cercana al
   estilo del sistema de bibliotecas compartidas de SunOS(TM) de Sun
   y, como tal, es muy sencillo de utilizar.

   Entonces, ?por que existen tantos formatos diferentes?

   En un tiempo muy, muy lejano, existia hardware simple. Este
   hardware tan simple soportaba un sistema pequeno, simple. a.out
   era idoneo para el trabajo de representar binarios en este sistema
   tan simple (un PDP-11). A medida que la gente portaba UNIX desde
   este sistema simple, retuvieron el formato a.out debido a que era
   suficiente para los primeros portes de UNIX a arquitecturas como
   68k de Motorola, VAXen, etc.

   Entonces algun brillante ingeniero de hardware decidio que si
   podia forzar al software a hacer algunos trucos sucios podria
   sortear ciertos obstaculos del diseno y permitir al nucleo de su
   CPU correr mas rapidamente. Aunque estaba hecho para trabajar con
   este nuevo tipo de hardware (conocido entonces como RISC), a.out
   no estaba bien adaptado para este hardware, asi que varios
   formatos fueron desarrollados para obtener un rendimiento mayor de
   este hardware que el podia extraerse del limitado y simple formato
   a.out. Asi fue como COFF, ECOFF y algunos otros formatos mas
   extranos fueron inventados y sus limitaciones exploradas hasta que
   se fue llegando a la eleccion de ELF.

   Ademas, el tamano de los programas estaba volviendose gigante y
   los discos (y la memoria fisica) eran relativamente pequenos, asi
   que el concepto de una biblioteca compartida nacio. El sistema VM
   tambien se volvio mas sofisticado. A pesar de que todos estos
   avances se hicieron utilizando el formato a.out, su utilidad se
   iba reduciendo paulatinamente con cada nueva opcion. Ademas, la
   gente queria cargar cosas dinamicamente en el momento de
   ejecucion, o descartar partes de su programa despues de que el
   codigo de inicio se ejecutara para ahorrar memoria principal y
   espacio de swap. Al volverse mas sofisticados los lenguajes, la
   gente empezo a ver la necesidad de introducir codigo antes del
   inicio del programa de forma automatica. Se hicieron muchos hacks
   al formato a.out para permitir que todas estas cosas sucedieran y
   lo cierto es que por un tiempo funcionaron. Pero a.out no estaba
   para solucionar todos estos problemas sin incrementar la carga y
   complejidad del codigo. Aunque ELF resolvia muchos de estos
   problemas, en ese momento hubiera sido terrible dejar de lado un
   sistema que funcionaba, asi que ELF tuvo que esperar hasta que fue
   mas doloroso permanecer con a.out que migrar a ELF.

   De todas maneras, con el paso del tiempo las herramientas de
   compilacion de las que FreeBSD derivo las suyas (en especial el
   ensamblador y el cargador) evolucionaron en dos arboles paralelos.
   El arbol FreeBSD FreeBSD anadio bibliotecas compartidas y corrigio
   algunos errores. La gente de GNU (que fueron quienes escribieron
   estos programas) los reescribio y anadieron una forma mas simple
   de disponer de compiladores cruzados (<<cross compilers>>), el uso
   de diferentes formatos, etc. Aunque mucha gente queria
   compiladores cruzados con FreeBSD como <<blanco>> no hubo suerte,
   porque los fuentes que que FreeBSD tenia para as y ld no estaban
   listos para cumplir esa tarea. La nueva cadena de herramientas GNU
   (binutils) soporta compilacion cruzada, ELF, bibliotecas
   compartidas, extensiones C++, etc. Ademas, muchos proveedores
   estan liberando binarios ELF y es algo muy bueno que FreeBSD los
   pueda ejecutar.

   ELF es mas expresivo que a.out y permite un sistema base mas
   extensible. Las herramientas ELF estan mejor mantenidas y ofrecen
   soporte de compilacion cruzada, muy importante para mucha gente.
   ELF puede ser un poco mas lento que a.out, pero tratar de medirlo
   puede ser dificil. Tambien existen numerosos detalles que son
   diferentes entre los dos en como gestionan paginas, como gestionan
   codigo de inicio, etc. Ninguna es muy importante, pero las
   diferencias existen. Con el tiempo, el soporte para a.out sera
   eliminado del kernel GENERIC y es muy posible que se elimine del
   kernel la posibilidad de ejecutar tales binarios una vez que la
   necesidad de usar programas a.out haya pasado.

     --------------------------------------------------------------

3.13. Mas informacion

  3.13.1. Paginas de manual

   La documentacion mas exhaustiva de FreeBSD esta en las paginas de
   manual. Casi todos los programas del sistema vienen con un breve
   manual de referencia explicando el funcionamiento basico y sus
   diferentes argumentos. Estos manuales pueden revisarse mediante
   man. El uso de man es simple:

 % man orden

   orden es el nombre de la orden sobre la que que desea saber mas.
   Por ejemplo, para mas informacion sobre ls escriba:

 % man ls

   El manual en linea esta dividido en secciones numeradas:

    1. Comandos de usuario.

    2. Llamadas al sistema y numeros de error.

    3. Funciones en las bibliotecas de C.

    4. Controladores de dispositivo.

    5. Formatos de fichero.

    6. Juegos y demas pasatiempos.

    7. Informacion sobre temas diversos.

    8. Comandos relacionados con el mantenimiento del sistema y su
       funcionamiento.

    9. Desarrolladores del Kernel.

   En algunos casos, el mismo tema puede aparecer en mas de una
   seccion del manual en linea. Por ejemplo, existe una orden de
   usuario chmod y una llamada del sistema chmod(). En este caso se
   le puede decir a man cual desea consultar especificando la
   seccion:

 % man 1 chmod

   Esto desplegara la pagina de manual de la orden de usuario chmod.
   Las referencias a una seccion concreta del manual en linea
   tradicionalmente suelen colocarse entre parentesis en la
   documentacion escrita, por lo tanto chmod(1) se refiere a la orden
   de usuario chmod y chmod(2) se refiere a la llamada de sistema.

   Esto esta muy bien si se conoce el nombre del programa y
   simplemente se quiere saber como usarlo. Pero ?y si no puede
   recordar el nombre de la orden? Se puede usar man para que realice
   una busqueda mediante palabras clave en las descripciones de
   programas utilizando el argumento -k:

 % man -k mail

   Dicha orden mostrara una lista de ordenes que contengan la palabra
   clave <<mail>> en sus descripciones. Esto es funcionalmente
   equivalente a usar apropos.

   Asi que, ?esta viendo todos esos programas tan atractivos en
   /usr/bin pero no tiene ni la menor idea de lo que la mayoria de
   ellos hace? Haga lo siguiente:

 % cd /usr/bin
 % man -f *

   o

 % cd /usr/bin
 % whatis *

   que hace exactamente lo mismo.

     --------------------------------------------------------------

  3.13.2. Ficheros de informacion GNU: info

   FreeBSD incluye muchas aplicaciones y utilidades producidas por la
   FSF (Free Software Foundation). Ademas de con las correspondientes
   paginas de manual, estos programas vienen con documentos de
   hipertexto mas detallados, llamados ficheros info, los cuales
   pueden ser visualizados con info, o si tiene instalado emacs, con
   el modo info de emacs.

   Si quiere utilizar la orden info(1) teclee:

 % info

   Para una breve introduccion teclee h. Cuando necesite una
   referencia rapida, teclee ?.

     --------------------------------------------------------------

     Capitulo 4. Instalacion de aplicaciones: <<packages>> y ports

4.1. Sinopsis

   FreeBSD viene con una excelente coleccion de herramientas de
   sistema como parte del sistema base. A pesar de esto, existe gran
   cantidad de cosas que uno requiere hacer para poner las cosas
   realmente en marcha, para lo cual se necesita instalar software
   adicional de terceros. FreeBSD ofrece dos tecnologias
   complementarias para instalar software de terceros en nuestro
   sistema: la Coleccion de Ports de FreeBSD y <<packages>>(paquetes)
   binarios. Cualquiera de los dos sistemas puede usarse para
   instalar las versiones mas recientes, de forma local o
   directamente desde la red.

   Despues de leer este capitulo usted sabra:

     * Como instalar packages binarios de software de terceros.

     * Como compilar software de terceros desde la Coleccion de
       Ports.

     * Como eliminar packages o ports instalados previamente.

     * Como sobreescribir los valores por omision que utiliza la
       coleccion de ports.

     * Como encontrar la aplicacion adecuada.

     * Como actualizar aplicaciones.

     --------------------------------------------------------------

4.2. Aproximacion a la instalacion de software

   Si ha usado un sistema UNIX con anterioridad sabra que el
   procedimiento tipico para instalar software de terceros es algo
   similar a esto:

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

    2. Desempaquetar el software de su formato de distribucion
       (normalmente en un <<tarball>> comprimido con compress(1),
       gzip(1) o bzip2(1)).

    3. Consultar la documentacion (quizas un fichero INSTALL o
       README, o los ficheros del subdirectorio doc/) para ver como
       instalar el software.

    4. Si el software se distribuye como fuente, compilarlo. Esto
       puede requerir que editemos el fichero Makefile o que
       ejecutemos el <<script>> configure, entre otras cosas.

    5. Instalar y probar el software.

   Y esto solamente si todo marcha bien. Si esta instalando un
   software que no ha sido portado especificamente para FreeBSD,
   puede que sea necesario editar el codigo para que funcione
   correctamente.

   Si lo desea puede continuar instalando software de la forma
   <<tradicional>> en FreeBSD, aunque FreeBSD dispone de dos
   tecnologias que le pueden ahorrar gran cantidad de tiempo y
   esfuerzo: los packages y los ports. En el momento de escribir esto
   existen mas de 20,000 aplicaciones de terceros.

   En cualquier aplicacion el paquete de FreeBSD es un solo fichero
   que tiene que descargar. Los paquetes contienen copia de los
   programas binarios precompilados de la aplicacion, asi como
   cualquier fichero de configuracion o documentacion. Los paquetes
   descargados se pueden manipular con las herramientas de gestion de
   paquetes de FreeBSD: pkg_add(1), pkg_delete(1), pkg_info(1), etc.
   Instalar una aplicacion nueva puede realizarse con una sola orden.

   Un port de FreeBSD es una coleccion de ficheros disenada para
   automatizar el proceso de compilacion desde el codigo fuente.

   Recuerde que existen ciertos pasos que debera llevar a cabo para
   compilar un programa por usted mismo (descargar, desempaquetar,
   parchear, compilar e instalar). Los ficheros que conforman un port
   permiten que el sistema se encargue de todo esto. Usted ejecuta un
   conjunto simple de ordenes y el codigo fuente se descarga,
   desempaqueta, parchea, compila e instala.

   De hecho el sistema de ports tambien se puede usar para crear
   paquetes que posteriormente se pueden manipular con pkg_add y las
   demas utilidades de gestion de packages que veremos en breve.

   Tanto el sistema de ports como el de paquetes entienden las
   dependencias. Suponga que desea instalar una aplicacion que
   depende de que una biblioteca especifica este instalada. Tanto la
   biblioteca como la aplicacion existen en FreeBSD como paquete o
   port. Si utiliza pkg_add o el sistema de ports para instalar la
   aplicacion ambos notaran que la biblioteca no esta instalada y
   procederan a instalarla antes que nada.

   Dado que ambas tecnologis son similares quizas se pregunte por que
   FreeBSD se toma la molestia de contar con ambas. Los Packages y
   los Ports tienen sus propias ventajas, asi que cual utilizar
   dependera de su eleccion en cada momento.

   Ventajas de los Paquetes

     * El fichero tarball de un package es normalmente mas pequeno
       que el tarball con el codigo fuente de la aplicacion.

     * Los paquetes no requieren compilacion. En el caso de
       aplicaciones grandes, como Mozilla, KDE, o GNOME este detalle
       puede ser importante, especialmente si usa un equipo lento.

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

   Ventajas de los Ports

     * Normalmente los paquetes se compilan con opciones
       conservadoras, en virtud del gran numero de equipos donde se
       instalaran. Al instalar como port puede usted editar las
       preferencias para (por ejemplo) generar codigo especifico para
       un procesador Pentium IV o Athlon.

     * Algunas aplicaciones tienen opciones sobre lo que pueden y lo
       que no pueden hacer. Por ejemplo Apache se puede configurar
       con una gran variedad de opciones. Al compilarlo desde los
       ports usted no tiene por que aceptar las opciones
       predefinidas, puede seleccionar que opciones desea.

       En algunos casos existen varios paquetes para la misma
       aplicacion con diferentes opciones. Por ejemplo, Ghostscript
       esta disponible como paquete ghostscript y como paquete
       ghostscript-nox11, dependiendo de si usted cuenta o no con
       servidor X11. En este caso decidir puede ser sencillo e
       incluso pueden facilitarse packages con ambas opciones, pero
       elegir se puede volver un problema si hay mas de una o dos
       opciones de compilacion.

     * Las condiciones de la licencia de algunas aplicaciones
       prohiben la distribucion de binarios. Solo permiten la
       distribucion del codigo fuente.

     * Existe gente que no confia en los binarios. Al menos puede
       usted (en teoria) revisar el codigo fuente y localizar
       problemas potenciales.

     * Si tiene parches locales necesitara el codigo fuente para
       poder aplicarlos.

     * Hay gente a la que le gusta tener el codigo fuente para poder
       leerlo en ratos de ocio, modificarlo, tomar partes prestadas
       (cuando la licencia lo permite, claro esta), etc.

   Para tener constancia de los ports actualizados, suscribase a la
   lista de correo sobre los ports de FreeBSD y a la lista de correo
   sobre errores en los ports de FreeBSD.

     Aviso Antes de instalar cualquier aplicacion consulte
     http://vuxml.freebsd.org para comprobar los posibles problemas
     de seguridad relacionados con ella.

     Tambien puede instalar security/portaudit que automaticamente
     comprobara las vulnerabilidades conocidas de todas las
     aplicaciones instaladas; tambien lo comprobara antes de compilar
     cualquier port. Mientras tanto, puede usar portaudit -F -a
     despues de instalar algunos packages.

   El resto de este capitulo le explicara como usar los ports y los
   packages para instalar software de terceros en FreeBSD.

     --------------------------------------------------------------

4.3. Como encontrar aplicaciones

   Antes de poder instalar cualquier software debe saber que es lo
   que quiere instalar y como se llama la aplicacion.

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

     * El sitio web de FreeBSD mantiene una lista (actualizada y que
       admite busquedas) de todas las aplicaciones disponibles para
       FreeBSD en la direccion http://www.FreeBSD.org/ports/ . Esta
       base esta dividida en categorias, y puede buscar por nombre
       (si lo sabe) o bien listar las aplicaciones disponibles en
       cierta categoria.

     * Dan Langille mantiene FreshPorts en
       http://www.FreshPorts.org/. FreshPorts verifica los cambios en
       las aplicaciones del arbol de ports, y le permite <<seguir>>
       uno o mas ports, sobre los que le enviaran un correo cada vez
       que se actualicen.

     * Si no conoce el nombre de la aplicacion que desea pruebe a
       usar un sitio como FreshMeat (http://www.freshmeat.net/) para
       encontrar una aplicacion; despues consulte el sitio web de
       FreeBSD para ver si la aplicacion ha sido portada.

     * Si sabe el nombre exacto del port y solo necesita saber en que
       categoria esta puede usar whereis(1). Simplemente escriba
       whereis fichero, donde fichero es el programa que quiera
       instalar. Si esta en su sistema, le dira donde esta:

 # whereis lsof
 lsof: /usr/ports/sysutils/lsof

       Esto nos dice que lsof (una utilidad de sistema) esta en el
       directorio /usr/ports/sysutils/lsof.

     * Otra forma de encontrar un port en particular es usando el
       mecanismo de busqueda integrado en la coleccion de ports. Para
       poder usar esta opcion de busqueda debe estar en el directorio
       /usr/ports. Una vez en ese directorio ejecute make search
       name=nombre-del-programa, donde nombre-del-programa es el
       nombre del programa que desea encontrar. Por ejemplo, si busca
       lsof:

 # cd /usr/ports
 # make search name=lsof
 Port:   lsof-4.56.4
 Path:   /usr/ports/sysutils/lsof
 Info:   Lists information about open files (similar to fstat(1))
 Maint:  obrien@FreeBSD.org
 Index:  sysutils
 B-deps:
 R-deps:

       Debe prestar especial atencion a la linea <<Path:>>de la
       salida, porque es la que indica donde puede encontrar el port.
       El resto de informacion no se necesita para instalar el port.

       Si quiere hacer una busqueda mas a fondo utilice make search
       key=cadena donde cadena es el termino que busca. Podra buscar
       nombres de ports, comentarios, descripciones y dependencias;
       tambien se puede usar para encontrar ports que tengan relacion
       con algun tema en particular si no conoce el nombre del
       programa que busca.

       En ambos casos la cadena de busqueda no distingue entre
       mayusculas y minusculas. Buscar <<LSOF>> dara los mismos
       resultados que buscar <<lsof>>.

     --------------------------------------------------------------

4.4. Uso del sistema de packages

   Texto de Chern Lee.

  4.4.1. Instalar un package

   Puede usar pkg_add(1) para instalar un package de FreeBSD desde un
   fichero local o desde un servidor remoto via red.

   Ejemplo 4-1. Descarga de un paquete manualmente e instalacion en
   nuestro sistema

 # ftp -a ftp2.FreeBSD.org
 Connected to ftp2.FreeBSD.org.
 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
 331 Guest login ok, send your email address as password.
 230-
 230-     This machine is in Vienna, VA, USA, hosted by Verio.
 230-         Questions? E-mail freebsd@vienna.verio.net.
 230-
 230-
 230 Guest login ok, access restrictions apply.
 Remote system type is UNIX.
 Using binary mode to transfer files.
 ftp> cd /pub/FreeBSD/ports/packages/sysutils/
 250 CWD command successful.
 ftp> get lsof-4.56.4.tgz
 local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
 200 PORT command successful.
 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
 100% |**************************************************| 92375       00:00 ETA
 226 Transfer complete.
 92375 bytes received in 5.60 seconds (16.11 KB/s)
 ftp> exit
 # pkg_add lsof-4.56.4.tgz

   Si no tiene una fuente local de packages (por ejemplo un CDROM de
   FreeBSD) probablemente la mejor opcion sea utilizar el argumento
   -r de pkg_add(1), que hara que determine automaticamente el
   formato del objeto correcto, para posteriormente descargarlo e
   instalarlo desde un FTP.

 # pkg_add -r lsof

   En el ejemplo anterior el package correspondiente se descargara e
   instalara sin intervencion del usuario. Si desea utilizar una
   replica (<<mirror>>) de packages que no sea el sitio principal de
   FreeBSD solo tiene configurar la variable de entorno PACKAGESITE
   correctamente para sobreescribir el sitio predefinido. pkg_add(1)
   utiliza fetch(1) para descargar los ficheros, tomando como
   referencia varias variables de entorno, como FTP_PASSIVE_MODE,
   FTP_PROXY y FTP_PASSWORD. Quizas deba modificar alguna de estas si
   se encuentra detras de un cortafuegos, o usa un proxy FTP/HTTP.
   Consulte fetch(3) si quiere ver una lista completa. Observe
   tambien que en el ejemplo anterior usamos lsof en vez de
   lsof-4.56.4. Cuando usamos la opcion de descarga remota no es
   necesario especificar la version del paquete. pkg_add(1)
   descargara automaticamente la ultima version de la aplicacion.

     Nota: pkg_add(1) descargara la ultima version de su aplicacion
     si usa FreeBSD-CURRENT o FreeBSD-STABLE, pero si usa una version
     -RELEASE, descargara la version del package que se construyo con
     dicha version. Es posible configurar esto sobreescribiendo la
     variable de entorno PACKAGESITE.

   Los packages se destribuyen en formatos .tgz y .tbz. Puede
   encontrarlos en ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/,
   o en la distribucion de FreeBSD en CD-ROM. Todos los CDs en el set
   de 4 CDs de FreeBSD (y en el PowerPak, etc.) contienen packages en
   el directorio /packages. La estructura de los packages es similar
   a la del arbol de /usr/ports. Cada categoria tiene su propio
   directorio, y todos los paquetes se pueden encontrar dentro del
   directorio All.

   La estructura del directorio de packageckages es identica a la de
   los ports, y funcionan como un todo para conformar el sistema de
   paquetes/ports.

     --------------------------------------------------------------

  4.4.2. Eliminar un package

   Para eliminar un package instalado en el sistema utilice
   pkg_delete(1).

 # pkg_delete xchat-1.7.1

     --------------------------------------------------------------

  4.4.3. Miscelanea

   Toda la informacion de los packages se guarda en /var/db/pkg. Ahil
   encontrara la lista completa de paquetes instalados y las
   descripciones de los mismos.

     --------------------------------------------------------------

4.5. Uso de la coleccion de ports

   La siguiente seccion incluye las instrucciones basicas para
   instalar o eliminar programas mediante la Coleccion de Ports de su
   sistema.

     --------------------------------------------------------------

  4.5.1. Como obtener la Coleccion de Ports

   Para poder instalar ports primero debe hacerse, obviamente, con la
   Coleccion de Ports--; en esencia esta compuesta por Makefiles,
   parches y ficheros con la descripcion de los ports y esta en
   /usr/ports.

   Cuando instalo su sistema FreeBSD el programa sysinstall le
   pregunto si queri instalar la Coleccion de Ports. Si contesto que
   no siga estas instrucciones:

   Mediante CVSup

   Este es un metodo rapido de conseguir y mantener una copia de la
   Coleccion de Ports al dia mediante el protocolo CVSup. Si quiere
   saber mas sobre CVSup consulte Uso de CVSup.

     Nota: La implementacion del protocolo CVSup que se incluye en
     FreeBSD se llama csup. Aparecio en FreeBSD 6.2. Los usuarios de
     releases anteriores de FreeBSD puden instalar net/csup como port
     o package.

   Asegurese de que /usr/ports esta vacio antes de ejecutar csup por
   primera vez. Si ya tiene la Coleccion de Ports porque la ha
   instalado por otros medios csup no purgara los parches de ports
   eliminados.

    1. Ejecute csup:

 # csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile

       Cambie cvsup.FreeBSD.org por algun otro servidor CVSup que
       tenga cerca. Consulte Replicas CVSup (Seccion 30.2.2), donde
       encontrara una lista completa de las replicas CVSup.

         Nota: Puede usar una version de ports-supfile confeccionada
         a su gusto, por ejemplo para evitar tener que indicarle el
         nombre del servidor CVSup a mano.

           1. Haga lo siguiente: como root copie
              /usr/share/examples/cvsup/ports-supfile en otro sitio,
              por ejemplo /root o su directorio /home.

           2. Edite ports-supfile.

           3. Reemplace CHANGE_THIS.FreeBSD.org por un servidor CVSup
              que este cerca de donde este usted. Consulte Replicas
              CVSup (Seccion 30.2.2) si necesita ver una lista
              completa de las mismas.

           4. Ejecute csupdel siguiente modo:

 # csup -L 2 /root/ports-supfile

    2. Al ejecutar csup(1) descargara y aplicara todos los cambios
       recientes que haya sufrido la Coleccion de Ports, pero tenga
       en cuenta que no actualizara ninguno de los ports que ya tenga
       instalados en su sistema.

   Mediante portsnap

   Portsnap es un metodo alternativo de distribuir la Coleccion de
   Ports. Se incluyo por primera vez en FreeBSD 6.0. Puede instalar
   portsnap(8) en versiones anteriores de FreeBSD como port
   (ports-mgmt/portsnap) o como package:

 # pkg_add -r portsnap

   En uso de portsnap encontrara detallado el funcionamiento de
   Portsnap features.

    1. Puede saltarse esta paso a partir de FreeBSD 6.1-RELEASE y en
       versiones recientes de Portsnap (port o package). /usr/ports
       se creara automaticamente la primera vez que ejecute
       portsnap(8). En versiones anteriores de portsnap habia que
       crear un /usr/ports vacio si no existia previamente:

 # mkdir /usr/ports

    2. Descargue una instantanea comprimida de la Coleccion de Ports
       en /var/db/portsnap. Hecho esto puede desconectar de Internet
       si quiere.

 # portsnap fetch

    3. Si esta ejecutando Portsnap por vez primera debe extraer la
       instantanea en /usr/ports:

 # portsnap extract

       Si ya tiene un /usr/ports y solamente esta actualizando su
       arbol de ports ejecute lo siguiente:

 # portsnap update

   Mediante Sysinstall

   Este metodo implica el uso de sysinstall para instalar la
   Coleccion de Ports.

    1. Como usuario root ejecute sysinstall (/stand/sysinstall en
       cualquier version previa a FreeBSD 5.2); del siguiente modo:

 # sysinstall

    2. Posicionese en la opcion Configure y pulse Intro.

    3. Seleccione la opcion Distributions y pulse Intro.

    4. Seleccione la opcion ports y pulse la barra espaciadora.

    5. Seleccione el medio de instalacion deseado (CDROM, FTP, etc.)

    6. Dirijase a la opcion Exit y pulse Intro.

    7. Pulse X para salir de sysinstall.

     --------------------------------------------------------------

  4.5.2. Instalacion de ports

   Al hablar de la Coleccion de Ports lo primero que hay que explicar
   es a que nos referimos cuando hablamos de un <<esqueleto>>
   (skeleton). El esqueleto de un port es un conjunto minimo de
   ficheros que indican a FreeBSD como compilar e instalar un
   programa. Cada esqueleto incluye:

     * Un Makefile. Este Makefile contiene diversas sentencias que le
       indican al sistema como compilarlo y donde instalarlo en su
       sistema.

     * Un fichero distinfo. Este fichero contiene informacion sobre
       los ficheros que se debe descargar para poder compilar el
       programa, asi como el identificador <<checksum>>, que se usa
       para comprobar mediante md5(1) que la descarga ha sido
       correcta y que el la integridad del fichero esta garantizada.

     * Un directorio files. Este directorio contiene los parches
       necesarios para compilar e instalar el programa en su sistema
       FreeBSD. Basicamente los parches son pequenos ficheros que
       especifican cambios en ficheros concretos. Su formato es en
       texto plano y suelen decir cosas como <<borra la linea 10>> o
       <<Cambia la linea 26 por esto>>. Estos parches tambien se
       conocen como <<diffs>> ya que se generan con diff(1).

       Es posible que este directorio tambie contenga algun otro
       fichero necesario para compilar e instalar el port.

     * Un fichero pkg-descr. Es una descripcion mas detallada del
       programa. En algunas ocasiones ocupa varias lineas.

     * Un fichero pkg-plist. Es una lista de todos los ficheros que
       instalara el port. Tambien le indica al sistema de ports que
       ficheros eliminar durante la desinstalacion del programa.

   Algunos ports tienen otros ficheros, como pkg-message. El sistema
   de ports los usa para gestionar situaciones especiales. Si desea
   conocer los detalles, incluso sobre los ports en general, consulte
   el libro FreeBSD Porter's Handbook.

   El port incluye las instrucciones necesarias para obtener software
   a partir del codigo fuente, pero no incluye el codigo. Puede
   obtener el codigo desde un CDROM o desde Internet. El codigo se
   distribuye del modo que el autor estime oportuno. Normalmente es
   un fichero tar comprimido con gzip, pero puede comprimirse con
   otra herramienta o incluso no estar comprimido. El codigo del
   programa, venga como venga, se llama <<distfile>>. A continuacion
   veremos los dos metodos de instalacion de un port.

     Nota: Debe ser el usuario root para instalar ports.

     Aviso Antes de instalar cualquier port asegurese de tener la
     Coleccion de Ports actualizada y de comprobar en
     http://vuxml.freebsd.org/ la existencia de posibles problemas de
     seguridad que pudiera tener el port.

     Puede realizar la comprobacion de seguridad con portaudit antes
     de instalar cualquier aplicacion. Esta herramienta esta en la
     Coleccion de Ports (security/portaudit). Le rogamos que al menos
     considere ejecutar portaudit -F antes de instalar un port nuevo
     para que descargue la nueva base de datos de vulnerabilidades.
     Durante la comprobacion diaria de seguridad actualizara la base
     de datos y hara una auditoria del sistema. Para mas informacion
     lea las paginas de manual de portaudit(1) y periodic(8).

   La Coleccion de Ports asume que tiene usted conexion con Internet.
   Si no es asi tendra que disponer de una copia del distfile en
   /usr/ports/distfiles.

   El primer paso es ubicarse en el directorio del port que desea
   instalar:

 # cd /usr/ports/sysutils/lsof

   Una vez en el directorio lsof puede ver el esqueleto del port. El
   siguiente paso es compilar el port. Solamente tiene que teclear
   make en el prompt. Una vez hecho vera algo como esto:

 # make
 >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
 >> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
 ===>  Extracting for lsof-4.57
 ...
 [La salida de la descompresion se ha eliminado]
 ...
 >> 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
 ...
 [La salida de la configuracion se ha eliminado]
 ...
 ===>  Building for lsof-4.57
 ...
 [La salida de la compilacion se ha eliminado]
 ...
 #

   Una vez que acabe la compilacion se le devolvera el control del
   prompt. El siguiente paso es instalar el port. Para ello bastara
   con que anada una palabra a la orden make: esa palabra es install:

 # make install
 ===>  Installing for lsof-4.57
 ...
 [La salida de la instalacion se ha eliminado]
 ...
 ===>   Generating temporary packing list
 ===>   Compressing manual pages for lsof-4.57
 ===>   Registering installation for lsof-4.57
 ===>  SECURITY NOTE:
       This port has installed the following binaries which execute with
       increased privileges.
 #

   Una vez que vuelva usted al prompt podra ejecutar la aplicacion
   que acaba de instalar. Dado que lsof es un programa que se ejecuta
   con privilegios altos se le ha mostrado una advertencia de
   seguridad. Durante la compilacion e instalacion es posible que
   hayan aparecido otros.

   Le recomendamos que borre el directorio que contiene todos los
   ficheros temporales necesarios durante la compilacion. No solo
   consume valioso espacio en disco sino que puede dar problemas
   cuando vaya a actualizar el port a una version mas reciente.

 # make clean
 ===>  Cleaning for lsof-4.57
 #

     Nota: Puede ahorrarse teclear dos pasos si para instalar un port
     teclea make install clean en lugar de make, make install y make
     clean como tres pasos separados.

     Nota: Algunas shells mantienen una cache de ordenes disponibles
     en los directorios que aparecen en la variable de entorno PATH
     con el fin de acelerar las operaciones de busqueda de
     ejecutables de esas ordenes. Si usa una de esas shells tendra
     que utilizar la orden rehash tras instalar un port o no podra
     ejecutar aplicaciones recien instaladas. Esta orden funciona en
     shells como tcsh. Utilice hash -r en shells sh. Para mas
     informacion consulte la documentacion de su shell.

   Algunos DVD-ROM de terceros, como el FreeBSD Toolkit de FreeBSD
   Mall contienen distfiles. Puede usarlos con la Coleccion de Ports.
   Monte el DVD-ROM en /cdrom. Si utiliza un punto de montaje
   diferente asigne a CD_MOUNTPTS el valor adecuado. Los distfiles se
   iran copiando automaticamente a medida que vayan siendo
   necesarios.

     Nota: Por favor, tenga en cuenta que la licencia de unos cuantos
     ports muy concretos no permite su distribucion en CD-ROM. Puede
     deberse a que es necesario rellenar un formulario de registro
     antes de descargarlo, porque la redistribucion no este permitida
     o por otra razon. Si quiere instalar un port que no esta en el
     CD-ROM tendra que tener salida a Internet.

   El sistema de ports utiliza fetch(1) para descargar ficheros; en
   este proceso intervienen varias variables de entorno, como
   FTP_PASSIVE_MODE, FTP_PROXY, y FTP_PASSWORD. Si esta detras de un
   cortafuegos tendra que asignar valores a una o mas de estas
   variables, asi como si necesita utilizar un proxy FTP/HTTP.
   Consulte fetch(3), donde econtrara una lista detallada.

   La opcion make fetch se creo para los usuarios que no disponen de
   conexion continua. Ejecute esta orden en el directorio raiz
   (/usr/ports) y se descargaran todos los ficheros necesarios. Esta
   orden tambien funciona en directorios situados mas abajo, por
   ejemplo /usr/ports/net. Tenga en cuenta que si un port depende de
   librerias u otros ports estos distfiles no se descargaran, a menos
   que reemplace fetch por fetch-recursive, que se encargara de
   descargar todas las dependencias de cada port.

     Nota: Si quiere compilar todos los ports de una categoria y de
     una sola vez ejecutando la orden make en el directorio raiz, de
     muy similar manera que lo que se acaba de ver con makefetch.
     Tenga en cuenta que esto es bastante peligroso porque algunos
     ports no pueden coexistir. Tambien se dan casos de ports que
     instalan instalan dos ficheros diferentes con el mismo nombre.

   En algunos casos (raros) el usuario tendra que descargar los
   tarball de un sitio que no es el que se guarda en la variable de
   entorno MASTER_SITES (el sitio desde el que se descargan todos los
   demas normalmente). Puede sobreescribir la opcion MASTER_SITES con
   la siguiente orden:

 # cd /usr/ports/directory
 # make MASTER_SITE_OVERRIDE= \
 ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

   En este ejemplo vamos a darle a la opcion MASTER_SITES el valor
   ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.

     Nota: Algunos ports permiten (o incluso exigen) que se le
     faciliten opciones de compilacion para activar o desactivar
     partes de la aplicacion que no se necesiten, determinadas
     opciones de seguridad, etc. Casos tipicos de esto son
     www/mozilla, security/gpgme, and mail/sylpheed-claws. Cuando
     debe usted tomar este tipo de decisiones se le muestra un
     mensaje con las opciones disponibles.

     --------------------------------------------------------------

    4.5.2.1. Sobreescribir directorios por omision de ports

   Algunas veces es util (u obligatorio) utilizar un directorio de
   trabajo o un <<target>> distinto al que tenemos por omision. Las
   variables de entorno WRKDIRPREFIX y PREFIX pueden sobreescribirse
   segun nuestra conveniencia. Veamos un ejemplo:

 # make WRKDIRPREFIX=/usr/home/ejemplo/ports install

   compilara el port en /usr/home/ejemplo/ports y lo instalara en
   /usr/local.

 # make PREFIX=/usr/home/ejemplo/local install

   lo compilara en /usr/ports y lo instalara en
   /usr/home/ejemplo/local.

   Y por supuesto,

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

   combinara ambas; (ocupa demasiado para mostrarlo en una pagina,
   pero la idea general queda clara).

   Puede asignar valores a estas variables del mismo modo que a
   cualquier otra de su entorno. Consulte la documentacion de su
   shell para mas informacion.

     --------------------------------------------------------------

    4.5.2.2. Uso de imake

   Algunos ports que usan imake (un componente del Sistema X Window)
   no funcionan correctamente con PREFIX e insistiran en instalarse
   en /usr/X11R6. Del mismo modo algunos ports de Perl ignoran PREFIX
   y se instalan en el arbol de Perl. Hacer que estos ports respeten
   PREFIX es dificil y a veces imposible.

     --------------------------------------------------------------

    4.5.2.3. Reconfigurar ports

   Al compilar ciertos ports se le presentara un menu basado en
   ncurses en el cual podra elegir entre mas o menos opciones de
   compilacion. No es raro que los usuarios quieran volver a usar ese
   menu para anadir, quitar o cambiar opciones una vez que el port ya
   esta compilado. Hay bastantes formas de hacerlo. Una manera es
   entrar al directorio que contiene el port y teclear make config,
   que hara que se le presente de nuevo el menu con las opciones que
   estuvieran seleccionadas previamente. Otra opcion es usar la orden
   make showconfig, que le mostrara todas las opciones de
   configuracion del port. Hay otra opcion mas, make rmconfig, que
   borrara todas las opciones que estuvieran seleccionadas y le
   permitira por tanto empezar desde cero. Todas estas opciones y
   muchas mas las encontrara descritas con gran detalle en ports(7).

     --------------------------------------------------------------

  4.5.3. Como desinstalar ports

   Ahora que sabe instalar ports probablemente quiera saber como
   eliminarlos; puede que haya instalado alguno y posteriormente se
   haya dado cuenta de que ha instalado el port incorrecto. Vamos a
   desinstalar el port del ejemplo anterior (que, para todos aquellos
   que no estaban atentos, era lsof). Igual que al instalar ports, lo
   primero que debemos hacer es ubicarnos en el directorio del port
   que deseamos eliminar del sistema, en nuestro caso
   /usr/ports/sysutils/lsof. Los ports se desinstalan exactamente
   igual que los packages; esto se explica en la seccion de packages)
   utilizando la orden pkg_delete(1):

 # pkg_delete lsof-4.57

     --------------------------------------------------------------

  4.5.4. Actualizacion de ports

   Antes de nada necesita ver una lista de ports instalados de los
   cuales exista una nueva version en la Coleccion de Ports. Utilice
   pkg_version(1):

 # pkg_version -v

     --------------------------------------------------------------

    4.5.4.1. /usr/ports/UPDATING

   Una vez actualizada la Coleccion de Ports (y antes de intentar
   actualizar ningun port) debe consultar /usr/ports/UPDATING. Este
   fichero describe todas las novedades, problemas que pueden
   encontrarse y pasos que deben seguir los usuarios al actualizar un
   port; hay cambios de formato, cambios de ubicacion de ficheros de
   configuracion o incompatibilidades con versiones anteriores.

   Si UPDATING se contradice de cualquier modo con lo que lea aqui
   tenga muy encuenta que lo que aparezca en UPDATING tiene prioridad
   absoluta.

     --------------------------------------------------------------

    4.5.4.2. Actualizacion de ports con portupgrade

   La aplicacion portupgrade se diseno para actualizar facilmente los
   ports instalados en un sistema. Puede instalarla desde el port
   ports-mgmt/portupgrade. La instalacion es como al de cualquier
   otro port, use la orden make install clean command:

 # cd /usr/ports/ports-mgmt/portupgrade
 # make install clean

   Compruebe la lista de ports instalados con pkgdb -F y arregle
   todas las inconsistencias que aparezcan. Le recomendamos que haga
   esta comprobacion de forma regular y siempre antes de una
   actualizacion.

   Si ejecuta portupgrade -a portupgrade intentara actualizar todos y
   cada uno de los ports instalados en su sistema. Utilice el
   parametro -i si quiere que le pida confirmacion antes de
   actualizar cada uno de los ports.

 # portupgrade -ai

   Si solamente quiere actualizar una sola aplicacion (y no
   absolutamente todos los ports) utilice la orden <portupgrade
   nombre-de-aplicacion. Anada el modificador -R si quiere que
   portupgrade actualice antes todos los ports de los que depende la
   aplicacion en cuestion.

 # portupgrade -R firefox

   Si quiere usar packages en lugar de ports use el modificador -P
   flag. Con esta opcion portupgrade busca en los directorios locales
   que aparezcan en PKG_PATH o descarga los packages desde un sitio
   remoto si es que no los encuentra en local. Si es imposible
   encontrar los packages ni en local ni en remoto portupgrade
   utilizara ports. Si no quiere usar ports pase lo que pase utilice
   el modificador -PP.

 # portupgrade -PP gnome2

   Si quiere solamente descargar los distfiles (o los packages,
   usando -P) sin compilar ni instalar nada, use -F. Para mas
   informacion consulte portupgrade(1).

     --------------------------------------------------------------

    4.5.4.3. Actualizacion de ports con portmanager

   Portmanager es otra aplicacion pensada para la actualizacion
   sencilla de ports instalados en el sistema. Puede encontrarla en
   ports-mgmt/portmanager:

 # cd /usr/ports/ports-mgmt/portmanager
 # make install clean

   Puede actualizar todos los ports que tenga instalados con una sola
   orden:

 # portmanager -u

   Si usa el modificador -ui se le pedira confirmacion a cada paso
   que Portmanager vaya a dar. Portmanager tambien puede usarse para
   instalar nuevos ports. A diferencia del habitual make install
   clean actualizara todos los ports que dependan antes de compilar e
   instalar ese port que queramos instalar.

 # portmanager x11/gnome2

   Si aparecen problemas con las dependencias del port que quiere
   instalar puede usar Portmanager para recompilar todos ello en el
   orden correcto. Una vez que acabe el port que estaba dando
   problemas sera tambien recompilado.

 # portmanager graphics/gimp -f

   Para mas informacion consulte portmanager(1).

     --------------------------------------------------------------

    4.5.4.4. Actualizacion de ports con portmaster

   Portmaster es otra aplicacion para actualizar ports. Portmaster se
   diseno para que utilizara las herramientas del sistema <<base>>
   (es decir, no depende de otros ports) y utiliza la informacion que
   se almacena en el directorio /var/db/pkg/ para determinar que port
   es el que hay que actualizar. Puede encontrarlo en
   ports-mgmt/portmaster:

 # cd /usr/ports/ports-mgmt/portmaster
 # make install clean

   Portmaster agrupa los ports en cuatro categorias:

     * <<Root ports>> (no tienen dependencias, ningun port depende de
       ellos)

     * <<Trunk ports>> (no tienen dependencias, otros ports dependen
       de ellos)

     * <<Branch ports>> (tienen dependencias, otros ports dependen de
       ellos)

     * <<Leaf ports>> (tienen dependencias, ningun port depende de
       ellos)

   Puede ver una lista de los ports instalados y buscar
   actualizaciones para ellos usando el modificador -L :

 # portmaster -L
 ===>>> Root ports (No dependencies, not depended on)
 ===>>> ispell-3.2.06_18
 ===>>> screen-4.0.3
         ===>>> New version available: screen-4.0.3_1
 ===>>> tcpflow-0.21_1
 ===>>> 7 root ports
 ...
 ===>>> Branch ports (Have dependencies, are depended on)
 ===>>> apache-2.2.3
         ===>>> New version available: apache-2.2.8
 ...
 ===>>> Leaf ports (Have dependencies, not depended on)
 ===>>> automake-1.9.6_2
 ===>>> bash-3.1.17
         ===>>> New version available: bash-3.2.33
 ...
 ===>>> 32 leaf ports

 ===>>> 137 total installed ports
         ===>>> 83 have new versions available

   Con la siguiente orden puede actualizar todos los ports del
   sistema:

 # portmaster -a

     Nota: Por omision Portmaster guardara una copia de seguridad (un
     package) de cada port antes de borrarlo. Si la instalacion de la
     nueva version funciona Portmaster borrara el package. Si utiliza
     -b le dira a Portmaster que no borre automaticamente el package.
     Si usa el modificador -i arrancara Portmaster en modo
     interactivo, lo que significa que le pedira confirmacion antes
     de actualizar cada port.

   Si se encuentra con errores durante el proceso de actualizacion
   puede utilizar el modificador -f para actualizar o recompilar
   todos los ports:

 # portmaster -af

   Tambien puede usar Portmaster para instalar nuevos ports en el
   sistema, actualizando todas sus dependencias antes de compilar e
   instalar el nuevo port:

 # portmaster shells/bash

   Por favor, consulte portmaster(8) para mas informacion.

     --------------------------------------------------------------

  4.5.5. Los ports y el espacio en disco

   Usar la Coleccion de Ports consume mucho espacio de disco segun
   pasa el tiempo. Por culpa de la tendencia del arbol de ports a
   crecer sin parar le recomendamos que despues de compilar e
   instalar sofware desde los ports recuerde limpiar los directorios
   temporales work mediante la orden make clean. Puede limpiar de un
   plumazo los directorios temporales de toda la Coleccion de Ports
   con la siguiente orden:

 # portsclean -C

   Rapidamente acumulara gran cantidad de viejas distribuciones de
   codigo en distfiles. Puede borrarlos a mano, pero tambien puede
   usar la siguiente orden para borrar todos los distfiles que no
   tengan relacion con ningun port:

 # portsclean -D

   Tambien puede borrar todos los distfiles sin relacion con ningun
   port instalado en el sistema:

 # portsclean -DD

     Nota: portsclean forma parte de la <<suite>> portupgrade.

   No olvide borrar los ports instalados una vez que deja de
   necesitarlos. Hay una herramienta muy util para ayudar a
   automatizar esta tarea: ports-mgmt/pkg_cutleaves.

     --------------------------------------------------------------

4.6. Despues de instalar un port

   Una vez que ha instalado una nueva aplicacion normalmente deberaa
   leer toda la documentacion que incluya, editar los ficheros de
   configuracion necesarios, asegurarse de que la aplicacion se
   ejecute al arrancar el sistema (si es un daemon)etc.

   Obviamente los pasos exactos para configurar cada aplicacion son
   distintos de una a otra. De cualquier forma, si acaba de instalar
   aplicacion y se pregunta <<?Y ahora que?>> estos consejos puede
   que le ayuden:

     * Use pkg_info(1) para ver que ficheros se instalaron y donde.
       Por ejemplo, si instalon el paquete Un-Package 1.0.0, lo
       siguiente:

 # pkg_info -L un-package-1.0.0 | less

       mostrara los ficheros instalados por el paquete. Preste
       especial atencion a los ficheros en el directorio man/, que
       son las paginas de ayuda y los del directorio etc/, que
       contiene los ficheros de configuracion; bajo el directorio
       doc/ podra encontrar informacion mas detallada.

       Si no esta seguro de que version del paquete ha instalado,
       teclee:

 # pkg_info | grep -i un-package

       y vera todos los paquetes que se llaman un-package. Reemplace
       un-package en la linea de ordenes que tenga que usar en su
       caso.

     * Una vez que ha identificado las paginas de manual de la
       aplicacion reviselas mediante man(1). Revise tambien los
       ficheros de configuracion, asi como cualquier otro tipo de
       documentacion que venga con el software.

     * Si la aplicacion tiene sitio web visitelo. Es muy posible que
       encuentre mas documentacion, listas de preguntas frecuentes
       (FAQ), etc. Si no sabe cual puede ser la direccion del sitio
       web examine la salida de la orden

 # pkg_info un-package-1.0.0

       a veces incluye una linea WWW:, que contiene la direccion del
       sitio web de la aplicacion.

     * Los ports que deben arrancar con el sistema (como los
       servidores de Internet) normalmente instalaran un <<script>>
       de ejemplo en /usr/local/etc/rc.d. Debe revisar este
       <<script>> para comprobar que todo sea correcto, editarlo o
       renombrarlo si fuera necesario. Consulte Como arrancar
       servicios para mas informacion.

     --------------------------------------------------------------

4.7. Ports que no funcionan

   Si encuentra un port que no funciona hay varias cosas que puede
   hacer:

    1. Consulte en la Base de datos de informes de error si ya se ha
       publicado un parche que lo solucione. Si es el caso puede
       aplicar aplicar el parche en su sistema.

    2. Pida ayuda al responsable del mantenimiento (conocido como
       <<mantainer>>) del port. Teclee make maintainer o consulte el
       Makefile del port si no sabe cual es la direccion de correo
       del <<mantainer>>. Recuerde que debe incluir el nombre y la
       version del port. Envie la linea que contiene $FreeBSD: al
       principio del Makefile del port y salida con el error que
       obtiene al intentar usar la aplicacion.

         Nota: Algunos ports no son responsabilidad de un individuo
         sino de una lista de correo. Muchas, aunque no todas, tienen
         un aspecto parecido a <freebsd-nombredelalista@FreeBSD.org>.
         Por favor, tengalo en cuenta cuando envie ese correo sobre
         el port que no funciona.

         Hay un caso especial: Los ports que tienen como
         <<mantainer>> <freebsd-ports@FreeBSD.org> en realidad no son
         responsabilidad de nadie. Los parches y el soporte, en caso
         de existir, vienen de la comunidad de usuarios y
         desarrolladores que estan suscritos a la lista. Por cierto,
         siempre hacen falta mas voluntarios.

       Si no recibe respuesta utilice send-pr(1) para enviar un
       informe de errores. Consulte Como escribir informes de error)
       [5]

    3. Arreglarlo. El <<Porter's Handbook>> incluye informacion
       detallada sobre la infraestructura de los ports, asi que puede
       arreglar un port roto o incluso enviar su propio port.

    4. Descargue el paquete de algun sitio FTP. El servidor
       <<principal>> de la coleccion de paquetes esta en el
       directorio de paquetes de ftp.FreeBSD.org pero asegurese de
       mirar antes en la replica mas proxima. Esta es una forma de
       instalar aplicaciones mas facil y mas rapida. Instale el
       paquete mediante pkg_add(1).

     --------------------------------------------------------------

                    Capitulo 5. El sistema X Window

   Actualizado al servidor X11 de X.Org por Ken Tom y Marc
   Fonvieille.

5.1. Sinopsis

   FreeBSD usa X11 para proporcionar una potente interfaz grafica.
   X11 es una implementacion de codigo abierto del sistema X Window
   que incluye Xorg y XFree86. En las versiones de FreeBSD hasta
   FreeBSD 4.10-RELEASE y FreeBSD 5.3-RELEASE el sistema X window que
   se instalara por defecto es XFree86, el servidor X11 distribuido
   por el proyecto XFree86. Despues de FreeBSD 5.3-RELEASE el sistema
   X Window paso a ser Xorg, el servidor X11 distribuido por la
   Fundacion X.Org.

   Este capitulo cubre la instalacion y configuracion de X11 poniendo
   enfasis en Xorg. Si quiere informacion sobre la configuracion de
   XFree86 o versiones anteriores de Xorg consulte las versiones
   archivadas del <<Handbook>> de FreeBSD en
   http://docs.FreeBSD.org/doc/.

   Para mas informacion del hardware de video que X11 soporta
   consulte la pagina web de Xorg.

   Despues de leer este capitulo usted sabra:

     * Cuales son los diferentes componentes del sistema X Window y
       como interoperan.

     * Como instalar y configurar X11.

     * Como instalar y usar diferentes gestores de ventanas.

     * Como usar tipos de letra TrueType(R) en X11.

     * Como preparar su sistema para iniciar la sesion de forma
       grafica (XDM).

   Antes de leer este capitulo deberia:

     * Saber como instalar software de terceros (Capitulo 4).

     Nota: Este capitulo cubre la instalacion y configuracion de los
     servidores X11 Xorg y XFree86. La mayoria de los ficheros de
     configuracion, ordenes y sintaxis son identicos. En los casos en
     que haya diferencias se mostrara la sintaxis de Xorg y XFree86.

     --------------------------------------------------------------

5.2. Entender X

   Usar X por primera vez puede resultar chocante para alguien
   familiarizado con otros entornos graficos, como Microsoft Windows
   o Mac OS.

   No es necesario entender todos los detalles de los diferentes
   componentes de X y como interactuan, pero un conocimiento basico
   hace posible el sacarle mas provecho a la potencia de X.

     --------------------------------------------------------------

  5.2.1. ?Por que X?

   X no es el primer sistema de ventanas escrito para UNIX pero es el
   mas popular de todos ellos. El equipo original que desarrollo X
   trabajo en otro sistema de ventanas antes de escribir X. Ese
   sistema se llamo <<W>> (de <<Window>> que significa ventana en
   ingles). X era solo la siguiente letra en el alfabeto Romano.

   X se puede llamar <<X>> <<X Window System>>, <<X11>> y de otras
   formas. Tambien puede usar el termino <<X Windows>> para describir
   X11 si lo que quiere es ofender a algunas personas; si quiere
   saber mas sobre esto consulte X(7).

     --------------------------------------------------------------

  5.2.2. El modelo cliente/servidor de X

   X fue disenado desde el principio pensando en redes y adopto un
   modelo <<cliente-servidor>>.

   En el modelo de X el <<servidor X>> se ejecuta en la maquina que
   tiene el teclado, monitor y raton. El servidor es responsable de
   manejar la pantalla, la entrada de datos a traves del teclado, el
   raton, etc. Cada aplicacion X (como una XTerm o Netscape) es un
   <<cliente>>. Un cliente manda mensajes al servidor como <<Por
   favor dibuja una ventana en estas coordenadas>> y el servidor
   devuelve mensajes como <<El usuario ha pulsado el boton OK>>.

   Si solo hay un ordenador involucrado, como en una casa o una
   pequena oficina, el servidor X y los clientes X seguramente se
   ejecutaran en el mismo sistema. Sin embargo, es perfectamente
   posible ejecutar el servidor X en un sistema de escritorio menos
   potente y ejecutar las aplicaciones X (los clientes) en, por
   ejemplo, la potente y cara maquina que sirve la oficina. En este
   panorama la comunicacion entre el cliente X y el servidor tiene
   lugar a traves de la red.

   Esto confunde a algunas personas, porque la terminologia es
   exactamente opuesta a lo que ellos esperan. Ellos esperan que el
   <<servidor X>> sea la maquina grande que hay en el sotano y que el
   <<cliente X>> sea la maquina de su mesa.

   Es importante que recuerde que el servidor X es la maquina con el
   monitor y el teclado y que los clientes X son los programas que
   muestran las ventanas.

   No hay nada en el protocolo que obligue a que el cliente y el
   servidor tengan que usar el mismo sistema operativo o incluso que
   esten en el mismo sistema. Es posible ejecutar un servidor X en
   Microsoft Windows o en el Mac OS de Apple; de hecho hay varias
   aplicaciones libres y comerciales que hacen exactamente eso.

   A partir de FreeBSD 5.3-RELEASE, el servidor X que se instala con
   FreeBSD es Xorg, que es libre y se distribuye bajo una licencia
   muy similar a la de FreeBSD. Tambien hay servidores X comerciales
   para FreeBSD.

     --------------------------------------------------------------

  5.2.3. El gestor de ventanas

   La filosofia de diseno de X es mas parecida a la de UNIX:
   <<herramientas, no normas>>. Esto significa que X no impone como
   debe hacerse una tarea. En lugar de eso proporciona herramientas
   al usuario y es responsabilidad suya decidir que hacer con ellas.

   Esta filosofia se extiende a X; no impone como deben verse las
   ventanas en la pantalla, como moverlas con el raton, que teclas
   deberian usarse para moverse entre ventanas (por ejemplo Alt+Tab,
   en Microsoft Windows), como deben ser las barras de titulo en cada
   ventana, si tienen o no boton de cierre, etc.

   En lugar de eso X delega esta responsabilidad en una aplicacion
   llamada <<gestor de ventanas>>. Hay docenas de gestores de
   ventanas disponibles para X: AfterStep, Blackbox, ctwm,
   Enlightenment, fvwm, Sawfish, twm, Window Maker, etc. Cada uno de
   estos gestores de ventanas tiene un aspecto diferente; algunos
   soportan <<escritorios virtuales>>; otros permiten personalizar
   las teclas para manejar el escritorio; otros tienen un boton de
   <<Inicio>> o algo similar; otros tienen <<disenos modificables>>,
   permitiendo un cambio completo del aspecto mediante un nuevo
   diseno. Estos gestores de ventanas, y muchos otros, estan en la
   categoria x11-wm de los ports.

   Ademas, los entornos de escritorio KDE y GNOME tienen sus propios
   gestores de ventanas integrados con el escritorio.

   Cada gestor de ventanas tiene diferentes mecanismos de
   configuracion; en algunos debe escribir el fichero de
   configuracion a mano, otros tienen herramientas graficas para la
   mayor parte de la configuracion; y al menos uno (Sawfish) tiene un
   fichero de configuracion escrito en un dialecto del lenguaje Lisp.

     Politica de foco: Otra responsabilidad del gestor de ventanas es
     la <<politica de foco>> del raton. Todos los sistemas de
     ventanas necesitan algo para elegir una ventana activa que
     recibira los eventos y tambien debieran indicar claramente que
     ventana esta activa.

     Una politica muy popular es la de <<click to focus>>. Este es el
     modelo que utiliza Microsoft Windows, en el que una ventana se
     convierte en activa al recibir un clic del raton.

     X no tiene ninguna politica de foco. En lugar de eso el gestor
     de ventanas controla que ventana tiene el foco en todo momento.
     Los diferentes gestores de ventanas tienen diferentes politicas
     de foco. Todos soportan la politica <<clic-para-foco>> y la
     mayoria de ellos tambien soportan otros metodos.

     Las politicas de foco mas populares son:

     el-foco-sigue-al-raton (focus-follows-mouse)

             La ventana que esta bajo el puntero del raton es la
             ventana que tiene el foco. No es necesario que la
             ventana este encima de las demas ventanas. El foco se
             cambia al apuntar a otra ventana, aunque no es necesario
             hacer clic en ella.

     foco-descuidado sloppy-focus

             Esta politica es una pequena extension de
             <<el-foco-sigue-al-raton>>. En
             <<el-foco-sigue-al-raton>> si el raton se mueve sobre la
             ventana raiz (o fondo) ninguna ventana tiene el foco y
             las pulsaciones del teclado se perderan. Con la politica
             <<foco-descuidado>> el foco solo cambia cuando el cursor
             entra en una nueva ventana y no cuando sale de la
             ventana actual.

     click-para-foco click-to-focus

             La ventana activa se selecciona con un clic del raton.
             La ventana se puede <<levantar>> y aparecer delante de
             las demas ventanas. Todas las pulsaciones de teclado
             seran redirigidas a esa ventana aunque el cursor se
             mueva a otra ventana.

     Muchos gestores de ventanas soportan otras politicas o
     variaciones de estas. Consulte la documentacion del propio
     gestor de ventanas.

     --------------------------------------------------------------

  5.2.4. Widgets

   La idea de X de hacer herramientas en vez de normas y se extiende
   a los <<widgets>> que se ven en la pantalla de cada aplicacion.

   <<Widget>> es un termino que abarca todos los objetos en el
   interfaz de usuario que pueden pulsarse con el raton manipularse
   de alguna manera: botones, <<check boxes>>, listas, etc.
   Microsoft Windows los llama <<controles>>.

   Microsoft Windows y Mac OS de Apple tienen una politica de
   <<widgets>> muy rigida. Se supone que los desarrolladores de
   aplicaciones comparten el aspecto. En X no se considero imponer un
   estilo grafico o un conjunto de <<widgets>> al que adherirse.

   Como resultado no se puede esperar que las aplicaciones de X
   tengan un aspecto homogeneo. Hay varios conjuntos de <<widgets>> y
   variaciones muy populares como el <<widget>> Athena creado en el
   MIT, Motif(R) (donde los <<widgets>> de Microsoft Windows fueron
   modelados, con todos los bordes biselados y tres tonos de gris),
   OpenLook, y otros.

   Las aplicaciones mas modernas de X usan un conjunto de <<widgets>>
   con mejor aspecto, o Qt, utilizado por KDE, o GTK+, que usa el
   proyecto GNOME. Se intenta que el aspecto del escritorio de UNIX
   sea parecido, lo que hace la vida mas facil al usuario novato.

     --------------------------------------------------------------

5.3. Instalar X11

   Xorg es la implementacion de X11 por omision en FreeBSD. Xorg esta
   basado en codigo de XFree86 4.4RC2 y X11R6.6. La version de Xorg
   que se distribuye actualmente en la Coleccion de Ports de FreeBSD
   es la 7.5.

   Para compilar e instalar Xorg desde la coleccion de ports:

 # cd /usr/ports/x11/xorg
 # make install clean

     Nota: Si quiere compilar e instalar Xorg entero, asegurese de
     tener como minimo 2GB de espacio disponible.

   Si lo prefiere puede instalar Xorg con packages. Cuando utilice la
   capacidad de pkg_add(1) para instalar packages que descargue
   remotamente recuerde que no debe escribir el numero de version.
   pkg_add(1) descargara automaticamente la ultima version de la
   aplicacion..

   Veamos que es lo que hay que hacer para descargar e instalar el
   package de Xorg:

 # pkg_add -r xorg

     Nota: El anterior ejemplo instala la distribucion X11 completa,
     es decir, servidores, clientes, tipos de letra, etc. Hay
     packages y ports con cada uno de esos elementos por separado.

   En el resto del capitulo se explica como configurar X11 y como
   configurar un entorno de escritorio que le resulte productivo.

     --------------------------------------------------------------

5.4. Configuracion de X11

   Escrito por Christopher Shumway.

     --------------------------------------------------------------

  5.4.1. Antes de empezar

   Antes de configurar X11 necesitara la siguiente informacion sobre
   el sistema:

     * Especificaciones del monitor

     * Chipset de la tarjeta de video

     * Memoria de la tarjeta de video

   X11 usa las especificaciones del monitor para determinar la
   resolucion y la frecuencia de refresco a la que funcionara. Estas
   especificaciones se pueden encontrar normalmente en la
   documentacion que viene con el monitor o en la web del fabricante.
   Se necesitan dos rangos de numeros: la frecuencia de refresco
   horizontal y la vertical.

   El chipset de la tarjeta de video define que controlador utilizara
   X11 para comunicarse con el hardware grafico. Con la mayoria de
   chipsets es posible detectarlo automaticamente pero es util
   saberlo en caso de que la deteccion automatica no funcione.

   La memoria de la tarjeta grafica determina la resolucion y la
   profundidad de color a la que el sistema funcionara. Es importante
   saberlo para que el usuario conozca las limitaciones del sistema.

     --------------------------------------------------------------

  5.4.2. Configurar X11

   A partir de la version 7.3 Xorg puede funcionar sin utilizar
   fichero de configuracion; basta con teclear en el prompt:

 % startx

   Si no funciona, o si la configuracion por omision no es aceptable,
   hay que configurar X11 a mano.

     Nota: Ciertos entornos de escritorio como GNOME, KDE o XFce
     tienen herramientas que permiten al usuario configurar
     facilmente parametros de la pantalla como la resolucion. Si la
     configuracion por omision no sirve y tiene idea de instalar un
     entorno de escritorio puede seguir adelante tranquilamente con
     la instalacion del entorno de escritorio y utilice la
     herramienta que el software que instale le facilite.

   La configuracion de X11 es un proceso que consta de multiples
   pasos. El primero es generar un fichero inicial de configuracion.
   Como superusuario teclee:

 # Xorg -configure

   Esto generara un fichero de configuracion bastante esquematico
   pero completo en /root llamado xorg.conf.new (si ha utilizado
   su(1) o ha entrado directamente como superusuario afectara al
   valor que tenga la variable de directorio $HOME). X11 intentara
   probar el hardware grafico del sistema y escribir un fichero de
   configuracion en el que registrar los controladores de dispositivo
   adecuados para hacer funcionar el harware que haya detectado.

   El siguiente paso es probar el fichero generado para verificar si
   Xorg puede funcionar con el hardware grafico del sistema. Para
   ello teclee:

 # Xorg -config xorg.conf.new

   Si aparece una rejilla negra y gris junto con el cursor del raton
   con forma de X es que la configuracion ha tenido exito. Para salir
   de la prueba pulse simultaneamente Ctrl+Alt+Retroceso.

     Nota: Si el raton no funciona tendra que configurarlo antes de
     continuar. Consulte la Seccion 2.10.10 en el capitulo de
     instalacion de FreeBSD.

   Despues modifique el fichero xorg.conf.new a su gusto. Abra el
   fichero con un editor de texto (como emacs(1) o ee(1)). Primero
   anada las frecuencias del monitor. Estas suelen estar expresadas
   en frecuencia de refresco horizontal y vertical. Estos valores se
   anaden al fichero xorg.conf.new en la seccion "Monitor":

 Section "Monitor"
         Identifier   "Monitor0"
         VendorName   "Monitor Vendor"
         ModelName    "Monitor Model"
         HorizSync    30-107
         VertRefresh  48-120
 EndSection

   Las palabras HorizSync y VertRefresh podrian no existir en el
   fichero de configuracion. Si no existen es necesario anadirlas con
   la frecuencia horizontal correcta puesta despues de la palabra
   HorizSync y la frecuencia vertical correcta despues de la palabra
   VertRefresh. En el ejemplo anterior se pusieron las frecuencias
   del monitor.

   X permite usar las caracteristicas DPMS (Energy Star) con los
   monitores que lo soportan. El programa xset(1) controla el
   <<timeout>>, y puede forzar los modos <<standby>>, suspendido o
   apagado. Si desea habilitar las caracteristicas DPMS para su
   monitor tendra que anadir la siguiente linea en la seccion
   monitor:

         Option       "DPMS"

   Agrege a su xorg.conf.new la resolucion por omision y la
   profundidad de color deseada. Esto se define en la seccion
   "Screen":

 Section "Screen"
         Identifier "Screen0"
         Device     "Card0"
         Monitor    "Monitor0"
         DefaultDepth 24
         SubSection "Display"
                 Viewport  0 0
                 Depth     24
                 Modes     "1024x768"
         EndSubSection
 EndSection

   La palabra DefaultDepth describe la profundidad de color a la que
   arrancara por omision. Esto puede sobrescribirse con el argumento
   -bpp de Xorg(1) (o XFree86(1)). La palabra Modes describe la
   resolucion a la que funcionara para esa profundidad de color.
   Observe que solo los modos estandar VESA estan soportados por el
   hardware grafico. En el ejemplo anterior la profundidad de color
   es 24 bits por pixel. En esta profundidad de color la resolucion
   aceptada es 1024 por 768 pixels.

   Para acabar guarde el fichero de configuracion y pruebelo usando
   el modo de prueba descrito anteriormente

     Nota: Una de las herramientas disponibles para ayudarle con el
     proceso de solucion de problemas es el fichero de <<logs>>, que
     contiene informacion de cada dispositivo al que el servidor X11
     se conecta. Los <<logs>> (o bitacoras) de Xorg se pueden
     encontrar en /var/log/Xorg.0.log El nombre exacto del fichero de
     <<log>> puede variar entre Xorg.0.log y Xorg.8.log y asi
     sucesivamente.

   Si todo ha ido bien ha llegado el momento de ubicar el fichero de
   configuracion donde Xorg(1) pueda encontrarlo. Puede dejarlo en
   /etc/X11/xorg.conf o /usr/local/etc/X11/xorg.conf.

 # cp xorg.conf.new /etc/X11/xorg.conf

   El proceso de configuracion de X11 ha concluido. Arranque Xorg
   mediante startx(1). Puede tambien arrancar el servidor X11
   utilizando xdm(1).

     Nota: Existe tambien una herramienta grafica de configuracion en
     X11, xorgcfg(1). Permite definir de forma interactiva su
     configuracio mediante la eleccion de los controladores y las
     opciones adecuadas. Este programa tambien puede usarse desde
     consola mediante la orden xorgcfg -textmode. Para mas
     informacion consulte la pagina de manual de xorgcfg(1).

     Puede usar tambien xorgconfig(1). Este programa es una
     herramienta orientada a consola que es bastante menos atractiva
     para el usuario, pero que puede funcionar en situaciones en las
     que otras herramientas no sirven.

     --------------------------------------------------------------

  5.4.3. Configuracion avanzada

    5.4.3.1. Configuracion de chipsets graficos Intel(R) i810

   Para configurar los chipsets integrados Intel i810 es necesario el
   interfaz de programacion AGP agpart para que X11 pueda usarla.
   Consulte la pagina de manual de agp(4) para mas informacion.

   Hecho esto podra configurar el hardware como cualquier otra
   tarjeta grafica. Tenga en cuenta que si en un sistema que no tenga
   el controlador agp(4) intenta cargar el modulo del kernel con
   kldload(8) no va a funcionar. El controlador tiene necesariamente
   que estar en el kernel desde el mismo momento del arranque, cosa
   que puede obtenerse bien compilando un nuevo kernel, bien
   utilizando /boot/loader.conf.

     --------------------------------------------------------------

    5.4.3.2. Anadir una pantalla panoramica a nuestro sistema

   A lo largo de esta seccion se asumen unos minimos de soltura con
   ciertos aspectos de configuracion avanzada. Si Si las herramientas
   estandar de configuracion que se han descrito previamente no le
   ayudan a tener una configuracion funcional busque en los ficheros
   de log, ahi encontrara informacion suficiente para lograrlo.
   Tendra que utilizar un editor de texto a lo largo de estas
   instrucciones.

   Los formatos actuales de pantalla panoramica, (tambien conocidas
   como <<Widescreen>>, WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, etc,
   soportan formatos de 16:10 y 10:9 o aspectos-tasa que pueden ser
   problematicos. Veamos algunos ejemplos de resoluciones de pantalla
   en formatos 16:10:

     * 2560x1600

     * 1920x1200

     * 1680x1050

     * 1440x900

     * 1280x800

   At some point, it will be as easy as adding one of these
   resolutions as a possible Mode in the Section "Screen" as such:

 Section "Screen"
 Identifier "Screen0"
 Device     "Card0"
 Monitor    "Monitor0"
 DefaultDepth 24
 SubSection "Display"
         Viewport  0 0
         Depth     24
         Modes     "1680x1050"
 EndSubSection
 EndSection

   Xorg se basta y se sobra para recabar la informacion de resolucion
   de su pantalla panoramica mediante la informacion I2C/DDC, asi que
   sabe que frecuencias y resoluciones puede manejar el monitor.

   Si esas ModeLines no existen en los controladores tendra usted que
   ayudar un poco a Xorg. Lea atentamente el contenido de
   /var/log/Xorg.0.log; de el podra extraer suficiente informacion
   como para crear un ModeLine que funcione. Todo lo que tiene que
   hacer es buscar informacion que se parezca a esta:

 (II) MGA(0): Supported additional Video Mode:
 (II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
 (II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
 (II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
 (II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz

   Esta informacion se llama informacion EDID. Para crear una
   ModeLine a partir de estos datos solamente tiene que poner los
   numeros en el orden correcto:

 ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>

   Asi que la ModeLine en la Section "Monitor" del ejemplo tendria
   este aspecto:

 Section "Monitor"
 Identifier      "Monitor1"
 VendorName      "Bigname"
 ModelName       "BestModel"
 ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
 Option          "DPMS"
 EndSection

   Como ve, con un poco de edicion hemos culminado la tarea y X
   deberia ya poder arrancar sin problemas en su nuevo monitor
   panoramico.

     --------------------------------------------------------------

5.5. Uso de tipos en X11

   Escrito por Murray Stokely.

  5.5.1. Tipos Type1

   Los tipos que X11 incluye por omision no son precisamente ideales
   para las aplicaciones tipicas. Los tipos grandes para
   presentaciones aparecen dentados y con un aspecto poco
   profesional, mientras que los tipos pequenos en Netscape son
   practicamente ilegibles. Sin embargo hay varios tipos de letra
   libres Type1 de alta calidad (PostScript(R)) que se pueden usar
   con X11. Por ejemplo los tipos URW (x11-fonts/urwfonts) incluyen
   una version de alta calidad de los tipos estandar Type 1 (Times
   Roman(R), (Helvetica(R), (Palatino(R), y muchas otras). Las
   Freefonts (x11-fonts/freefonts ) incluyen muchas mas pero la
   mayoria estan pensadas para usarse con software grafico como el
   Gimp y no son lo bastante completos para usarse como tipos de
   pantalla. Ademas X11 se puede configurar para usar tipos TrueType
   con un esfuerzo minimo. Para mas detalles sobre esto consulte la
   pagina del manual X(7) o la seccion de tipos TrueType.

   Para instalar los tipos Type1 desde los ports ejecute las
   siguientes ordenes:

 # cd /usr/ports/x11-fonts/urwfonts
 # make install clean

   Proceda del mismo modo con los FreeFonts o cualesquiera otras.
   Para que el servidor X las detecte anada la siguiente linea al
   fichero de configuracion de X (/etc/X11/xorg.conf:

 FontPath "/usr/X11R6/lib/X11/fonts/URW/"

   o bien desde una emulacion de terminal durante una sesion X
   ejecute

 % xset fp+ /usr/X11R6/lib/X11/fonts/URW
 % xset fp rehash

   Esto funcionara hasta que la sesion X se cierre a menos que lo
   anada a su fichero de inicio (~/.xinitrc en el caso de una sesion
   startx normal o ~/.xsession si hace login desde un gestor grafico
   como XDM). Una tercera forma seria usando el nuevo fichero
   /usr/X11R6/etc/fonts/local.conf: consulte la seccion de
   anti-aliasing.

     --------------------------------------------------------------

  5.5.2. Tipos TrueType(R)

   Xorg se diseno pensando en que utilizara tipos TrueType. Hay dos
   modulos diferentes que pueden habilitar esta opcion. El modulo
   freetype se usa en en este ejemplo porque es mas consistente con
   el resto de <<back-ends>> de representacion. Para habilitar el
   modulo freetype debe anadir la siguiente linea a la seccion
   "Module" del fichero /etc/X11/xorg.conf.

 Load "freetype"

   Ahora haga un directorio para los tipos TrueType (por ejemplo
   /usr/X11R6/lib/X11/fonts/TrueType) y copie todos los tipos
   TrueType en este directorio. Recuerde que los tipos TrueType no se
   pueden coger directamente de un Macintosh(R); tienen que estar en
   formato UNIX/MS-DOS/Windows para usarlas con X11. Una vez que los
   ficheros se hayan copiado en este directorio use ttmkfdir para
   crear un fichero fonts.dir, para que el representador de tipos de
   X sepa que se han instalado estos ficheros nuevos. ttmkfdir forma
   parte de la Coleccion de Ports de FreeBSD: x11-fonts/ttmkfdir.

 # cd /usr/local/lib/X11/fonts/TrueType
 # ttmkfdir -o fonts.dir

   Ahora anada el directorio TrueType a la ruta de tipos. Esto es
   igual que lo anteriormente descrito sobre los tipos Type1.
   Ejecute:

 % xset fp+ /usr/local/lib/X11/fonts/TrueType
 % xset fp rehash

   o anada una linea FontPath en su /etc/X11/xorg.conf.

   Esto es todo. Ahora Netscape, Gimp, StarOffice(TM) y el resto de
   aplicaciones X debieran reconocer los tipos TrueType instalados.
   Los tipos muy pequenos (como el texto en una pantalla con alta
   resolucion viendo una pagina web) y los tipos muy grandes (Dentro
   de StarOffice) se veran muchisimo mejor ahora.

     --------------------------------------------------------------

  5.5.3. Tipos Anti-Aliasing

   Actualizado por Joe Marcus Clarke.

   Los <<tipos anti-aliasing>> han estado en X11 desde XFree86 4.0.2.
   Aunque la configuracion de los tipos era incomoda antes de XFree86
   4.3.0. A partir de XFree86 4.3.0 todos los tipos de X11 que se
   encuentren en /usr/local/lib/X11/fonts/ y ~/.fonts/ estan
   disponibles automaticamente para aplicaciones que soporten Xft. No
   todas las aplicaciones soportan Xft pero muchas ya tienen soporte
   Xft. Ejemplos de aplicaciones que lo soportan son Qt 2.3 o
   superior (el <<toolkit>> del escritorio KDE), GTK+ 2.0 o superior
   (el <<toolkit>> del escritorio GNOME ) y Mozilla 1.2 o superior.

   Para controlar que tipos <<anti-aliasing>> o configurar las
   propiedades <<anti-aliasing>> cree (o edite, si ya existe) el
   fichero /usr/local/etc/fonts/local.conf. Se pueden modificar
   diversas opciones avanzadas del sistema de tipos Xft usando este
   fichero; esta seccion describe solo algunas posibilidades simples.
   Para mas detalles consulte fonts-conf(5).

   Este fichero tiene que estar en formato XML. Preste especial
   atencion a las mayusculas y minusculas y asegurese de que las
   etiquetas estan cerradas correctamente. El fichero empieza con la
   tipica cabecera XML seguida de una definicion DOCTYPE y despues la
   etiqueta <fontconfig>:

         <?xml version="1.0"?>
         <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
         <fontconfig>
      

   Como se ha dicho antes todos los tipos en
   /usr/local/lib/X11/fonts/ y en ~/.fonts/ estan ya disponibles para
   las aplicaciones que soporten Xft. Si usted desea anadir otro
   directorio ademas de estos dos arboles de directorios anada una
   linea similar a esta en el fichero
   /usr/local/etc/fonts/local.conf:

 <dir>/ruta/de/mis/tipos</dir>

   Despues de anadir los nuevos tipos, y en especial los nuevos
   directorios de tipos, debe ejecutar la siguiente orden para
   reconstruir la cache de tipos:

 # fc-cache -f

   Los <<tipos anti-aliasing>> hacen los bordes ligeramente borrosos,
   lo que hace que el texto muy pequeno sea mas legible y elimina los
   escalones del texto grande pero puede causar fatiga visual
   aplicada al texto normal. Para excluir los tipos de menos de 14
   puntos del <<anti-aliasing>> incluya las siguientes lineas:

         <match target="font">
             <test name="size" compare="less">
                 <double>14</double>
             </test>
             <edit name="antialias" mode="assign">
                 <bool>false</bool>
             </edit>
         </match>
         <match target="font">
             <test name="pixelsize" compare="less" qual="any">
                 <double>14</double>
             </test>
             <edit mode="assign" name="antialias">
                 <bool>false</bool>
             </edit>
         </match>

   El espacio entre algunos tipos tambien podria ser inapropiado con
   <<anti-aliasing>>, por ejemplo en el caso de KDE. Una posible
   solucion para esto es forzar que el espacio entre los tipos sea
   100. Anada las siguientes lineas:

        <match target="pattern" name="family">
              <test qual="any" name="family">
                  <string>fixed</string>
              </test>
              <edit name="family" mode="assign">
                  <string>mono</string>
              </edit>
           </match>
           <match target="pattern" name="family">
               <test qual="any" name="family">
                   <string>console</string>
               </test>
               <edit name="family" mode="assign">
                   <string>mono</string>
               </edit>
           </match>

   (Esto selecciona los otros nombres comunes para <<tipos fixed>>
   como "mono"); anada tambien lo siguiente:

          <match target="pattern" name="family">
              <test qual="any" name="family">
                  <string>mono</string>
              </test>
              <edit name="spacing" mode="assign">
                  <int>100</int>
              </edit>
          </match>     

   Algunos tipos, como Helvetica, podrian tener problemas con
   <<anti-aliasing>>. Normalmente esto se manifiesta en tipos que
   parecen cortados verticalmente por la mitad. En el peor de los
   casos podria causar que el funcionamiento de aplicaciones como
   Mozilla se interrumpiese. Para evitar esto puede anadir lo
   siguiente a local.conf:

          <match target="pattern" name="family">
              <test qual="any" name="family">
                  <string>Helvetica</string>
              </test>
              <edit name="family" mode="assign">
                  <string>sans-serif</string>
              </edit>
          </match>       

   Una vez que haya terminado de editar local.conf asegurese de que
   el fichero termina con la etiqueta </fontconfig>. Si no lo hace
   los cambios que haya hecho seran ignorados.

   Los tipos por omision que vienen con X11 no son los ideales para
   <<anti-aliasing>>. Puede encontrar otros mucho mejores en el port
   x11-fonts/bitstream-vera. Este port instalara el fichero
   /usr/local/etc/fonts/local.conf si aun no se ha creado. Si el
   fichero existe el port creara el fichero
   /usr/local/etc/fonts/local.conf-vera. Combine el contenido de este
   fichero con /usr/local/etc/fonts/local.conf y los tipos Bitstream
   reemplazaran automaticamente los tipos por defecto por X11 Serif,
   Sans Serif y Monospaced.

   Por si esto fuera poco los usuarios pueden anadir sus propios
   ajustes mediante sus ficheros personales .fonts.conf. Los usuarios
   que deseen hacerlo deberan crear un fichero ~/.fonts.conf. Este
   fichero tiene que estar tambien en formato XML.

   Un ultimo punto: con pantallas LCD seria deseable un muestreo de
   subpixel, que consiste en configurar los componentes (separados
   horizontalmente) rojo, verde y azul para mejorar la resolucion
   horizontal; los resultados pueden ser impresionantes. Para
   habilitarlo anada la siguiente linea a local.conf:

         <match target="font">
             <test qual="all" name="rgba">
                 <const>unknown</const>
             </test>
             <edit name="rgba" mode="assign">
                 <const>rgb</const>
             </edit>
         </match>
      

     Nota: Dependiendo del tipo de pantalla rgb podria ser bgr o vrgb
     o vbgr: experimente y elija cual de ellos funciona mejor.

   Una vez concluido el proceso <<anti-aliasing>> se deberia activar
   la proxima vez que arranque X, aunque los programas necesitan
   saber como utilizarlo. En este momento el <<toolkit>> Qt es capaz
   de hacerlo, asi que KDE entero puede usar <<tipos anti-aliasing>>.
   GTK+ y GNOME tambien pueden usar <<tipos anti-aliasing>> mediante
   el <<applet>> <<Font>> (consulte Seccion 5.7.1.3 para mas
   detalle). Por omision Mozilla 1.2 y versiones siguientes usaran
   automaticamente <<tipos anti-aliasing>>. Para deshabilitarlos
   recompile Mozilla usando el parametro -DWITHOUT_XFT.

     --------------------------------------------------------------

5.6. El gestor de pantalla X

   Escrito por Seth Kingsley.

  5.6.1. Descripcion

   El gestor de pantalla X (XDM) es una parte opcional del sistema X
   Window que se usa para la gestion de sesiones. Esto es util en
   diferentes situaciones, como <<Terminales X>> con escritorios
   minimos y grandes servidores de red. Como X Window System es
   independiente del protocolo y de la red hay muchas configuraciones
   posibles para ejecutar clientes y servidores X en diferentes
   equipos conectados a una red. XDM dispone de un interfaz grafico
   para elegir a que pantalla se quiere conectar y pedir la
   informacion de autentificacion como el nombre de usuario y le
   contrasena.

   XDM ac6tua como proveedor de la misma funcionalidad que getty(8)
   (consulte Seccion 24.3.2 para mas detalles). Esto quiere decir que
   se encarga de las entradas al sistema en la pantalla a la que esta
   conectado y arranca el gestor de sesiones para que lo utilice el
   usuario (normalmente un gestor de ventanas X). XDM espera a que el
   programa termine, envia la senal de que el usuario ha terminado y
   que se le deberia desconectar de la pantalla. En este punto XDM
   puede mostrar las pantallas de entrada al sistema y de seleccion
   de pantalla para que el siguiente usuario intente acceder al
   sistema.

     --------------------------------------------------------------

  5.6.2. Uso de XDM

   El daemon XDM esta en /usr/local/bin/xdm. Este programa se puede
   arrancar en cualquier momento como root y empezara a gestionar la
   pantalla X en la maquina local. Si se quiere que XDM arranque cada
   vez que la maquina se encienda puede hacerlo anadiendo una entrada
   a /etc/ttys. Para mas informacion sobre el formato y uso de este
   fichero consulte la Seccion 24.3.2.1. Por omision hay una linea en
   /etc/ttys que permite arrancar el daemon XDM en una terminal
   virtual:

 ttyv8   "/usr/local/bin/xdm -nodaemon"  xterm   off secure

   Por omision esta entrada esta deshabilitada; para habilitarla
   cambie el campo 5 de off a on y reinicie init(8) usando los pasos
   descritos en la Seccion 24.3.2.2. El primer campo es el nombre de
   la terminal que que gestiona el programa, ttyv8. Es decir, XDM
   empezara a ejecutarse en la terminal virtual numero 9.

     --------------------------------------------------------------

  5.6.3. Configuracion de XDM

   El directorio de configuracion de XDM esta en
   /usr/local/lib/X11/xdm. En este directorio hay varios ficheros que
   se usan para intervenir en el comportamiento y la apariencia de
   XDM. Normalmente tendra estos ficheros:

    Fichero                         Descripcion                       
   Xaccess    Reglas de acceso para clientes.                         
   Xresources Recursos de X por omision.                              
   Xservers   Lista de pantallas locales y remotas a gestionar.       
   Xsession   <<script>> por omision para el acceso al sistema.       
   Xsetup_*   <<script>> para lanzar aplicaciones antes del acceso al 
              sistema.                                                
   xdm-config Configuracion de todas las pantallas de este equipo.    
   xdm-errors Errores generados por el programa servidor.             
   xdm-pid    El ID de proceso del XDM que esta funcionando.          

   En este directorio tambien hay unos cuantos programas y
   <<scripts>> que se usan para arrancar el escritorio cuando XDM se
   esta ejecutando. El objetivo de cada uno de estos ficheros sera
   descrito brevemente. La sintaxis exacta y el uso de todos estos
   ficheros se describe en xdm(1).

   La configuracion por omision es una simple ventana rectangular de
   acceso al sistema con el nombre de la maquina en la parte superior
   en un tipo de letra grande y unos campos para que
   introduzca<<Login:>> y <<Password:>> debajo. Este es un buen punto
   de partida para aprender a cambiar el aspecto de las pantallas de
   XDM.

     --------------------------------------------------------------

    5.6.3.1. Xaccess

   El protocolo para conectar con las pantallas controladas por XDM
   se llama <<X Display Manager Connection Protocol>> (XDMCP). Este
   fichero es un conjunto de reglas para controlar las conexiones
   XDMCP desde otros equipos. Por defecto permite a cualquier cliente
   conectar, pero eso no importa a menos que xdm-config se cambie
   para escuchar conexiones remotas. La configuracion basica no
   permite conexiones desde ningun cliente.

     --------------------------------------------------------------

    5.6.3.2. Xresources

   Este es el fichero de opciones por defecto para el selector de
   pantalla y acceso al sistema. Aqui es donde se puede modificar la
   apariencia del programa de <<login>>. El formato es identico al
   fichero de opciones por defecto descrito en la documentacion de
   X11.

     --------------------------------------------------------------

    5.6.3.3. Xservers

   Una lista de pantallas remotas entre las que elegir.

     --------------------------------------------------------------

    5.6.3.4. Xsession

   Este es el <<script>> de sesion que por defecto XDM arrancara
   despues de que el usuario acceda al sistema. Normalmente cada
   usuario tendra una version personalizada del <<script>> de sesion
   en ~/.xsession que sobreescribe el <<script>> por defecto.

     --------------------------------------------------------------

    5.6.3.5. Xsetup_*

   Estos se arrancaran automaticamente antes de que se muestre el
   interfaz de seleccion o de acceso al sistema. Hay un <<script>>
   por cada gestor de ventanas disponible llamados Xsetup_ seguido
   por el numero de pantalla local (por ejemplo Xsetup_0).
   Normalmente estos <<scripts>> arrancan uno o dos programas en
   segundo plano, por ejemplo xconsole.

     --------------------------------------------------------------

    5.6.3.6. xdm-config

   Este fichero contiene las opciones por defecto aplicables a todas
   las pantallas que gestiona la instalacion.

     --------------------------------------------------------------

    5.6.3.7. xdm-errors

   Este fichero contiene la salida de los servidores X que XDM
   intente arrancar. Si alguna pantalla que XDM intente arrancar se
   cuelga por alguna razon este es un buen sitio para buscar los
   mensajes de error. Estos mensajes tambien se escriben en el
   fichero ~/.xsession-errors del usuario en cada sesion.

     --------------------------------------------------------------

  5.6.4. Ejecutar un servidor de pantalla a traves de la red

   Para que otros clientes puedan conectar al servidor de pantalla
   edite las reglas de acceso y habilite la escucha en la conexion.
   Por omision se aplican restricciones. Si quiere que XDM escuche
   conexiones comente la siguiente linea en el fichero xdm-config:

 ! SECURITY: do not listen for XDMCP or Chooser requests
 ! Comment out this line if you want to manage X terminals with xdm
 DisplayManager.requestPort:     0

   y despues reinicie XDM. Recuerde que los comentarios en los
   ficheros de opciones por defecto comienzan con el caracter<<!>> en
   vez del tipico <<#>>. Puede aplicar controles mas restrictivos.
   Consulte las opciones de ejemplo en Xaccess y la pagina de manual
   de xdm(1).

     --------------------------------------------------------------

  5.6.5. Alternativas a XDM

   Hay algunas alternativas al programa por defecto XDM. Una de
   ellas, kdm (que se incluye con KDE) se describe mas adelante en
   este capitulo. kdm ofrece muchas ventajas visuales y funcionalidad
   para permitir a los usuarios elegir su gestor de ventanas en el
   momento del acceso al sistema.

     --------------------------------------------------------------

5.7. Entornos de escritorio

   Escrito por Valentino Vaschetto.

   Esta seccion describe los diferentes entornos de escritorio
   disponibles para X en FreeBSD. Un <<entorno de escritorio>> puede
   ser cualquier cosa que vaya desde un simple gestor de ventanas
   hasta una completa <<suite>> de aplicaciones de escritorio como
   KDE o GNOME.

     --------------------------------------------------------------

  5.7.1. GNOME

    5.7.1.1. Acerca de GNOME

   GNOME es un entorno de escritorio amigable que permite a los
   usuarios una configuracion facil de sus sistemas. GNOME incluye un
   panel (para iniciar las aplicaciones y mostrar su estado), un
   escritorio (donde pueden colocarse los datos y las aplicaciones),
   un conjunto de herramientas y aplicaciones de escritorio estandar
   y un conjunto de convenciones para facilitar la creacion de
   aplicaciones que sean consistentes y colaboren unas con otras. Los
   usuarios de otros sistemas operativos o entornos pueden sentirse
   como en casa utilizando el poderoso entorno grafico GNOME.
   Encontrara mas informacion sobre GNOME en FreeBSD en la pagina del
   Proyecto FreeBSD GNOME.

     --------------------------------------------------------------

    5.7.1.2. Instacion de GNOME

   GNOME puede instalarse facilmente utilizando packages
   precompilados o desde la Coleccion de Ports:

   Para instalar el paquete de GNOME desde la red, simplemente
   teclee:

 # pkg_add -r gnome2

   Para compilar GNOME a partir del codigo fuente, es decir, como
   port:

 # cd /usr/ports/x11/gnome2
 # make install clean

   Una vez GNOME este instalado debe indicarle al servidor X como
   iniciar GNOME para convertirlo en el gestor de ventanas
   predeterminado.

   La manera mas facil de arrancar GNOME es con GDM, el gestor de
   pantalla de GNOME. GDM, que se instala con el escritorio GNOME al
   ser parte del mismo (aunque venga desactivado por omision) se
   activa anadiendo gdm_enable="YES" a /etc/rc.conf. Tras reiniciar,
   GNOME arrancara automaticamente al acceder al sistema; no es
   necesario configurar nada mas.

   Puede arrancar GNOME tambien desde la linea de ordenes
   configurando adecuadamente un fichero llamado .xinitrc. Si ya
   tiene un .xinitrc personalizado tendra que reemplazar la linea que
   arranca el gestor de ventanas anterior por otra que contenga
   /usr/local/bin/gnome-session. Si no ha modificado el fichero
   previamente basta con que teclee lo siguiente:

 % echo "/usr/local/bin/gnome-session" > ~/.xinitrc

   Despues teclee startx y deberia iniciarse el entorno de escritorio
   GNOME.

     Nota: Si utiliza un gestor de pantalla antiguo, como XDM, lo
     anteriormente descrito no funcionara. Cree un fichero ejecutable
     .xsession con la misma orden en el. Edite el fichero y sustituya
     la orden para iniciar su actual gestor de ventanas por
     /usr/local/bin/gnome-session:

 % echo "#!/bin/sh" > ~/.xsession
 % echo "/usr/local/bin/gnome-session" >> ~/.xsession
 % chmod +x ~/.xsession

   Otra opcion es configurar el gestor de pantalla para que permita
   seleccionar el gestor de ventanas durante el acceso; la seccion de
   detalles de KDE explica como hacerlo para kdm, el gestor de
   pantalla de KDE.

     --------------------------------------------------------------

    5.7.1.3. Tipos <<Anti-aliased>> en GNOME

   X11 soporta <<anti-aliasing>> a traves de la extension <<RENDER>>.
   Gtk+ 2.0 y superiores (el <<toolkit>> utilizado por GNOME)
   disponen de esta funcionalidad. La configuracion del
   <<anti-aliasing>> se describe en la Seccion 5.5.3. Una vez
   configurado el software es posible utilizar <<anti-aliasing>> en
   el entorno de escritorio GNOME. Solamente tiene que ir a
   Applications->Desktop Preferences->Font, y seleccione entre Best
   shapes, Best contrast, o Subpixel smoothing (LCDs). En el caso de
   una aplicacion Gtk+ que no forme parte del escritorio GNOME asigne
   a la variable de entorno GDK_USE_XFT un valor de 1 antes de
   arrancar el programa.

     --------------------------------------------------------------

  5.7.2. KDE

     --------------------------------------------------------------

    5.7.2.1. Acerca de KDE

   KDE es un entorno de escritorio contemporaneo y facil de usar.
   Veamos alguna de las cosas que KDE brinda al usuario:

     * Un bello escritorio contemporaneo.

     * Un escritorio completamente transparente en red.

     * Un sistema de ayuda integrado que facilita un acceso adecuado
       y consistente a la ayuda durante el uso del escritorio KDE y
       sus aplicaciones.

     * Un aspecto consistente de todas las aplicaciones KDE.

     * Menus y barras de herramientas estandares, teclas
       programables, esquemas de color, etc.

     * Internacionalizacion: KDE esta disponible en mas de 40
       idiomas.

     * Un dialogo de configuracion del escritorio centralizado y
       consistente.

     * Un gran numero de utiles aplicaciones KDE.

   KDE incluye un navegador web llamado Konqueror, que es un solido
   competidor del resto de navegadores web existentes en sistemas
   UNIX. Puede encontrar mas informacion sobre KDE en el sitio web de
   KDE. Si quiere informacion especifica y recursos sobre KDE en
   FreeBSD consulte el sitio web del equipo de KDE en FreeBSD.

   Hay dos versiones de KDE en FreeBSD: la version 3 lleva ya
   bastante tiempo en el sistema y es muy estable en todos los
   sentidos. La version 4, la nueva generacion de KDE, tambien esta
   en los ports. Si quiere puede instalar ambas versiones
   simultaneamente.

     --------------------------------------------------------------

    5.7.2.2. Instalacion de KDE

   Igual que sucede con GNOME o cualquier otro entorno de escritorio
   puede instalarlo como package o desde la Coleccion de Ports:

   Si quiere instalar como package KDE3 (desde la red) escriba:

 # pkg_add -r kde

   Si quiere instalar como package KDE4 (desde la red) escriba:

 # pkg_add -r kde4

   pkg_add(1) descargara automaticamente la version mas reciente de
   la aplicacion.

   Si lo que desea es compilar KDE3 desde el codigo fuente utilice el
   arbol de ports:

 # cd /usr/ports/x11/kde3
 # make install clean

   Si lo que desea es compilar KDE4 desde el codigo fuente utilice el
   arbol de ports:

 # cd /usr/ports/x11/kde4
 # make install clean

   Una vez instalado KDE debe indicarle al servidor X como iniciar la
   aplicacion para que se convierta en el gestor de ventanas por
   defecto. Edite .xinitrc:

   Para KDE3:

 % echo "exec startkde" > ~/.xinitrc

   Para KDE4:

 % echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc

   A partir de ahora cuando se llame al sistema X Window con startx
   el escritorio sera KDE.

   Si utiliza un gestor de pantalla, como por ejemplo xdm, la
   configuracion es ligeramente diferente. En vez de lo antedicho
   edite .xsession. Las instrucciones para kdm se decribiran mas
   adelante en este capitulo.

     --------------------------------------------------------------

  5.7.3. Mas detalles sobre KDE

   Una vez KDE esta instalado en el sistema la mayoria de las cosas
   se pueden ir descubriendo utilizando las paginas de ayuda o
   sencillamente a golpe de raton en los diversos menus. Los usuarios
   de Windows y Mac(R) se sentiraan como en casa.

   La mejor referencia para KDE es la documentacion <<on-line>>. KDE
   incluye su propio navegador, Konqueror, docenas de utiles
   aplicaciones y una extensa documentacion. El resto de esta seccion
   trata sobre cuestiones tecnicas que son dificiles de aprender
   mediante una exploracion al azar.

     --------------------------------------------------------------

    5.7.3.1. El gestor de pantalla de KDE

   El administrador de un sistemas multiusuario puede querer ofrecer
   a sus usuarios una pantalla de bienvenido que se les presente al
   acceder al sistema. Tal y como se ha explicado previamente puede
   usar XDM. De todos modos KDE incluye su propia alternativa,
   alternative, kdm, disenado pensando en ser mas atractivo y tener
   mas opciones que ofrecer en el momento del acceso al sistema. Mas
   concretamente ofrece a los usuarios la posibilidad de elegir
   mediante un menu que entorno de escritorio (KDE, GNOME, o
   cualquier otro) quiere ejecutar el usuario una vez validado.

   Si quiere activar kdm debe modificar la entrada de ttyv8 en
   /etc/ttys. La linea debe quedar del siguiente modo:

   Si va a usar KDE3:

 ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure

   En el caso de KDE4:

 ttyv8 "/usr/local/kde4/bin/kdm -nodaemon" xterm on secure

     --------------------------------------------------------------

  5.7.4. XFce

    5.7.4.1. Acerca de XFce

   XFce es un entorno de escritorio basado en el <<toolkit>> GTK
   utilizado por GNOME pero es mucho mas ligero y esta pensado para
   aquellos que quieran un escritorio sencillo, eficiente y facil de
   utlizar y configurar. Visualmente es muy parecido a CDE, que
   podemos encontrar en sistemas UNIX comerciales. Alguna de las
   caracteresticas de XFce son:

     * Un escritorio sencillo y facil de utilizar.

     * Completamente configurable utilizando el raton, con arrastrar
       y soltar, etc.

     * Panel principal similar al de CDE, con menus, <<applets>> y
       accesos directos a las aplicaciones.

     * Gestor de ventanas integrado, gestor de ficheros, gestor de
       sonido, modulo de compatibilidad con GNOME, y muchas cosas
       mas.

     * Aspecto configurable (utiliza GTK).

     * Rapido, ligero y eficiente: ideal para maquinas viejas, lentas
       o maquinas con memoria limitada.

   Puede encontrar mas informacion sobre XFce en el sitio web de
   XFce.

     --------------------------------------------------------------

    5.7.4.2. Instalar XFce

   En el momento de escribir este texto existe un paquete binario
   para XFce. Para instalarlo escriba:

 # pkg_add -r xfce4

   Tambien puede compilarlo desde el codigo gracias a la Coleccion de
   Ports:

 # cd /usr/ports/x11-wm/xfce4
 # make install clean

   Para indicar al servidor X que use XFce la proxima vez que
   arranque simplemente escriba lo siguiente:

 % echo "/usr/X11R6/bin/startxfce4" > ~/.xinitrc

   La proxima vez que arranque X XFce sera el escritorio. Como antes,
   si se usa un gestor de pantalla como xdm cree un .xsession tal y
   como se ha descrito en la anterior seccion en GNOME, pero con la
   orden /usr/local/bin/startxfce4; puede configurar el gestor de
   pantalla para permitir elegir el escritorio en el momento de
   acceder al sistema tal y como se ha explicado en la seccion de
   kdm.

                           II. Tareas comunes

   Una vez tratados los aspectos mas basicos, pasaremos a detallar
   alguna de las caracteristicas mas utilizadas de FreeBSD:

     * Introduccion a algunas de las aplicaciones de escritorio mas
       utiles y extendidas: navegadores, herramientas de
       productividad, visores de documentos, etc.

     * Introduccion a algunas de las herramientas multimedia de
       FreeBSD.

     * Explicacion de como crear un kernel personalizado en FreeBSD,
       lo que le permitira anadir nuevas funcionalidades al sistema.

     * Descripcion en detalle del sistema de impresion, tanto en
       entornos de escritorio como en impresoras conectadas en red.

     * Como ejecutar aplicaciones de Linux en FreeBSD.

   Algunos de los capitulos recomiendan lecturas de capitulos
   anteriores, lo que se indica al inicio de cada capitulo.

   Tabla de contenidos

   6. Aplicaciones de escritorio

   7. Multimedia

   8. Configuracion del kernel de FreeBSD

   9. Imprimir

   10. Compatibilidad binaria con Linux

     --------------------------------------------------------------

                 Capitulo 6. Aplicaciones de escritorio

   Escrito por Christophe Juniet.

6.1. Sinopsis

   FreeBSD puede ejecutar gran numero de aplicaciones de escritorio,
   como navegadores y procesadores de texto. La mayoria de ellas
   estan disponibles como packages o se pueden compilar
   automaticamente desde la coleccion de ports. Muchos usuarios
   nuevos esperan encontrar este tipo de aplicaciones en su
   escritorio. Este capitulo mostrara como instalar de forma facil
   algunas aplicaciones populares, bien como packages o desde la
   coleccion de ports.

   Tenga en cuenta que cuando se instalan programas desde los ports
   se compilan desde el codigo fuente. Esto puede tardar muchisimo
   tiempo, dependiendo de que este compilando y la potencia de
   proceso de su maquina. Si compilar una o mas aplicaciones le
   requiere una cantidad de tiempo desmesurada para sus necesidades
   recuerde que puede instalar la mayoria de programas de la
   Coleccion de Ports como packages precompilados.

   FreeBSD tiene compatibilidad binaria con Linux, asi que muchas
   aplicaciones originariamente desarrolladas para Linux existen
   tambien para su escritorio. Le recomendamos encarecidamente que
   lea el Capitulo 10 antes instalar aplicaciones Linux. Muchos de
   los ports que usan la compatibilidad binaria de Linux empiezan por
   <<linux->>. Recuerdelo cuando busque un port en particular, por
   ejemplo con whereis(1). En el siguiente texto se asume que ha
   habilitado usted la compatibilidad binaria de Linux antes de
   instalar aplicaciones de Linux.

   Estas son las categorias que cubre este capitulo:

     * Navegadores (como Mozilla, Netscape, Opera, Firefox,
       Konqueror)

     * Productividad (como KOffice, AbiWord, The GIMP,
       OpenOffice.org)

     * Visores de documentos (como Acrobat Reader(R), gv, Xpdf,
       GQview)

     * Finanzas (como GnuCash, Gnumeric, Abacus)

   Antes de leer este capitulo, usted deberia:

     * Saber como instalar software de terceros (Capitulo 4).

     * Saber como instalar software de Linux (Capitulo 10).

   Si quiere mas informacion sobre como conseguir un entorno un
   entorno multimedia en FreeBSD consulte el Capitulo 7. Si quiere
   configurar y usar el correo electronico consulte el Capitulo 27.

     --------------------------------------------------------------

6.2. Navegadores

   FreeBSD no trae ningun navegador preinstalado, pero en el
   directorio www de la coleccion de ports tiene muchos navegadores
   listos para instalar. Si no tiene tiempo para compilarlo todo
   (esto puede requerir muchisimo tiempo en algunos casos) muchos de
   ellos estan disponibles como packages.

   KDE y GNOME ya proporcionan navegadores HTML. Consulte la Seccion
   5.7 para mas informacion sobre como configurar estos escritorios.

   Si busca navegadores ligeros tiene en la coleccion de ports
   www/dillo, www/links, o www/w3m.

   Esta seccion cubre estas aplicaciones:

   Nombre de   Recursos  Instalacion                                  
   aplicacion necesarios  desde los      Dependencias importantes
                            Ports    
   Mozilla    pesado     pesado      Gtk+                             
                                     Versiones para FreeBSD y Linux   
                                     disponibles. La version de Linux 
   Opera      ligero     ligero      depende de la compatibiliad      
                                     binaria de Linux y de            
                                     linux-openmotif.                 
   Firefox    medio      pesado      Gtk+                             
   Konqueror  medio      pesado      KDE Libreris                     

     --------------------------------------------------------------

  6.2.1. Mozilla

   Mozilla es una navegador moderno y estable que dispone de soporte
   completo en FreeBSD: dispone de un motor de presentacion de HTML
   muy ajustado a los estandares, tiene cliente de correo
   electronico, lector de noticias e incluso ofrece un editor de
   paginas HTML por si quiere crear paginas web. Los usuarios de
   Netscape encontraran semejanzas con la suite Communicator, dado
   que ambos navegadores comparten parte de la base de desarrollo.

   En maquinas lentas, con una CPU de velocidad inferior a 233MHz o
   con menos de 64MB de RAM, Mozilla puede consumir demasiados
   recursos para poder utilizarse. Puede usar el navegador Opera,
   mucho mas ligero, que se describe mas adelante en este mismo
   capitulo.

   Si no puede o no quiere compilar Mozilla por algun motivo, el
   equipo de FreeBSD GNOME ya lo ha hecho por usted. Instale el
   package desde la red del siguiente modo:

 # pkg_add -r mozilla

   Si no hay package disponible y tiene suficiente tiempo y espacio
   en el disco puede obtener el codigo de Mozilla, compilarlo e
   instalarlo en su sistema. Esto se hace con:

 # cd /usr/ports/www/mozilla
 # make install clean

   El port de Mozilla se asegura de que se inicialice adecuadamente
   ejecutando la configuracion del registro <<chrome>> con
   privilegios de root, aunque si quiere instalar algun anadido como
   <<mouse gestures>> (gestos del raton) tendra que ejecutar que
   correr Mozilla como root para que se instale correctamente.

   Una vez efectuada la instalacion de Mozilla no es necesario ser
   root por mas tiempo. Puede arrancar Mozilla como navegador
   escribiendo:

 % mozilla

   Puede arrancarlo directamente como lector de correo y noticias del
   siguiente modo:

 % mozilla -mail

     --------------------------------------------------------------

  6.2.2. Firefox

   Firefox es un navegador de nueva generacion basado en el codigo
   fuente de Mozilla. Mozilla es una suite completa de aplicaciones
   en la que encontrara un navegador, un cliente de correo, un
   cliente de chat y muchas otras. Firefox es solamente un navegador,
   lo que hace que sea mucho mas pequeno y ligero.

   Puede instalarlo como package del siguiente modo:

 # pkg_add -r firefox

   Si prefiere compilar el codigo fuente e instalarlo desde los ports
   puede hacer esto otro:

 # cd /usr/ports/www/firefox
 # make install clean

     --------------------------------------------------------------

  6.2.3. Firefox, Mozilla y el <<plugin>> Java(TM)

     Nota: En esta seccion y en la siguiente asumiremos que ya ha
     instalado Firefox o Mozilla.

   La FreeBSD Foundation disponde una licencia de Sun Microsystems
   que le permite distribuir binarios FreeBSD del Java Runtime
   Environment (JRE(TM)) y del Java Development Kit (JDK(TM)). Puede
   descargar packages binarios para FreeBSD desde el sitio webde la
   FreeBSD Foundation.

   Para anadir soporte Java(TM) a Firefox o Mozilla tiene que
   instalar el port the java/javavmwrapper. Despues descargue el
   package Diablo JRE desde
   http://www.freebsdfoundation.org/downloads/java.shtml e instalelo
   con pkg_add(1).

   Arranque su navegador, introduzca about:plugins en la barra de
   navegacion y pulse Intro. Vera una pagina con una lista de los
   <<plugins>> que tenga instalados; el <<plugin>> Java deberia ser
   uno de los que aparezcan. Si no es asi ejecute (como root) lo
   siguiente

 # ln -s /usr/local/diablo-jre1.6.0/plugin/i386/ns7/libjavaplugin_oji.so \
   /usr/local/lib/browser_plugins/

   y reinicie su navegador.

     --------------------------------------------------------------

  6.2.4. Opera

   Opera es un navegador muy rapido, completo y que cumple con los
   estandares. Hay dos versiones: la version <<nativa>> de FreeBSD y
   la version que se ejecuta bajo la emulacion de Linux. Para cada
   sistema operativo hay una version gratuita que muestra publicidad
   y otra sin publicidad que se puede comprar en la pagina web de
   Opera.

   Para navegar por la web con la version para FreeBSD de Opera
   tendra que instalar el package:

 # pkg_add -r opera

   Algunos sitios FTP no tienen todos los paquetes, pero puede
   instalarlo desde la Coleccion de Ports:

 # cd /usr/ports/www/opera
 # make install clean

   Si quiere instalar la version de Linux de Opera ponga linux-opera
   en lugar de opera en los atnteriores ejemplos. La version de Linux
   es util en situaciones donde se necesitan <<plugins>> de los que
   solo hay versiones para Linux, como Adobe Acrobat Reader. En todos
   los demas aspectos las versiones de FreeBSD y Linux son iguales.

     --------------------------------------------------------------

  6.2.5. Konqueror

   Konqueror forma parte de KDE pero tambien se puede instalar y usar
   independienmente de KDE instalando x11/kdebase3. Konqueror es
   mucho mas que un navegador, tambien es gestor de ficheros y visor
   multimedia.

   Konqueror tambien trae un conjunto de <<plugins>>, disponibles en
   misc/konq-plugins.

   Konqueror tambien soporta Flash(TM), hay un tutorial en
   http://freebsd.kde.org/howto.php.

     --------------------------------------------------------------

6.3. Productividad

   Cuando se trata de productividad, normalmente los nuevos usuarios
   piensan en una buena suite ofimatica o un procesador de textos
   amigable. Mientras que algunos entornos de escritorio como KDE
   ofrecen una suite ofimatica propia, no hay una aplicacion por
   defecto. FreeBSD permite usar todo lo que se necesite sin importar
   que entorno de escritorio use.

   Esta seccion cubre estas aplicaciones:

    Nombre de la   Recursos  Instalacion desde los ports Dependencias 
     aplicacion   necesarios                             importantes  
   KOffice        ligero     pesado                      KDE          
   AbiWord        ligero     ligero                      Gtk+ o GNOME 
   The Gimp       ligero     pesado                      Gtk+         
   OpenOffice.org pesado     enorme                      GCC 3.1, JDK 
                                                         1.3, Mozilla 

     --------------------------------------------------------------

  6.3.1. KOffice

   La comunidad de KDE ha dotado su entorno de escritorio con una
   suite ofimatica totalmente independiente de KDE. Incluye los 4
   componentes estandar que se pueden encontrar en otras suites
   ofimaticas. KWord es el procesador de textos, KSpread es la hoja
   de calculo, KPresenter se encarga de las presentaciones y Kontour
   le permite dibujar documentos graficos.

   Antes de instalar el ultimo KOffice asegurese de que tiene una
   version actualizada de KDE.

   Para instalar KOffice como un paquete ejecute la siguiente orden:

 # pkg_add -r koffice

   Si el paquete no esta disponible puede usar la coleccion de ports.
   Por ejemplo, para instalar KOffice para KDE3 haga lo siguiente:

 # cd /usr/ports/editors/koffice-kde3
 # make install clean

     --------------------------------------------------------------

  6.3.2. AbiWord

   AbiWord es un procesador de textos libre con un aspecto parecido a
   Microsoft Word. Es util para escribir documentos, cartas,
   informes, notas, etc. Es muy rapido, tiene muchas opciones y es
   muy amigable.

   AbiWord puede importar o exportar muchos formatos de fichero,
   incluyendo algunos propietarios como Microsoft .doc.

   AbiWord esta disponible como package. Si quiere instalarlo haga lo
   siguiente:

 # pkg_add -r AbiWord2

   Si el package no esta disponible por el motivo que fuere puede
   instalarlo desde la coleccion de Ports. La coleccion de ports
   deberia estar mas actualizada:

 # cd /usr/ports/editors/AbiWord2
 # make install clean

     --------------------------------------------------------------

  6.3.3. The GIMP

   GIMP es un programa de manipulacion de imagenes muy sofisticado
   que le permitira tambien crearlas y retocarlas. Puede usarlo como
   un programa de dibujo sencillo o como una sofisticada herramienta
   de retoque fotografico. Admite una gran cantidad de <<plug-ins>> y
   tiene opciones tan interesantes como una interfaz para
   <<scripts>>. GIMP puede leer y escribir un gran numero de formatos
   de fichero. Soporta escaners y tabletas graficas.

   Instale el package mediante la siguiente orden:

 # pkg_add -r gimp

   Si su servidor FTP no tiene este package puede usar la coleccion
   de ports. El directorio graphics de la coleccion de ports tambien
   contiene The Gimp Manual. Si quiere instalarlo haga lo siguiente:

 # cd /usr/ports/graphics/gimp
 # make install clean
 # cd /usr/ports/graphics/gimp-manual-pdf
 # make install clean

     Nota: El directorio graphics de la coleccion de ports tiene la
     version de desarrollo de GIMP en graphics/gimp-devel. Hay una
     version en HTML de The Gimp Manual en graphics/gimp-manual-html.

     --------------------------------------------------------------

  6.3.4. OpenOffice.org

   OpenOffice.org incluye todas las aplicaciones esenciales en una
   completa suite ofimatica: un procesador de textos, una hoja de
   calculo, un gestor de presentaciones y un programa de dibujo. Su
   interfaz de usuario es muy parecida a otras suites ofimaticas y
   puede importar y exportar diversos formatos muy extendidos. Esta
   disponible en diversos idiomas; el proceso de internacionalizacion
   incluye interfaces, correctores ortograficos y diccionarios.

   El procesador de textos de OpenOffice.org usa un fichero XML
   nativo para aumentar la portabilidad y la eficiencia. El programa
   de hojas de calculo tiene un lenguaje de macros y puede usarse
   desde bases de datos externas. OpenOffice.org es estable y hay
   versiones nativas para Windows, Solaris(TM), Linux, FreeBSD, y
   Mac OS X. Tiene mas informacion sobre OpenOffice.org en la pagina
   web de OpenOffice. Si quiere informacion especifica para FreeBSD,
   o si quiere bajar directamente los packages use la pagina web de
   FreeBSD OpenOffice Porting Team.

   Para instalar OpenOffice.org ejecute:

 # pkg_add -r openoffice

     Nota: Si usa una version -RELEASE de FreeBSD todo lo antedicho
     funcionara. Si usa cualquier otra version visite el sitio web
     del FreeBSD OpenOffice.org Porting Team, desde el cual podra
     descargar e instalar el package mas adecuado e instalarlo
     mediante pkg_add(1). En este sitio web encontrara tanto una
     version current como la de desarrollo.

   Una vez instalado el package escriba la siguiente orden para
   ejecutar OpenOffice.org:

 % openoffice.org

     Nota: En el primer arranque se le haran diversas preguntas se
     creara un directorio .openoffice.org2 en su <<home>>.

   Si no hay packages de OpenOffice.org disponibles siempre tiene la
   opcion de compilar el port. Tenga muy en cuenta que necesitara
   gran cantidad de espacio en disco y que este port necesita una
   cantidad de tiempo monstruosa para efectuar la compilacion.

 # cd /usr/ports/editors/openoffice.org-2
 # make install clean

     Nota: Si quiere compilar una de las muchas versiones que existen
     en idiomas distintos del ingles sustituya la orden anterior por
     la que se muestra a continuacion:

 # make LOCALIZED_LANG=su_idioma install clean

     Sustituya su_idioma por el codigo ISO del idioma que quiera.
     Tiene una lista de codigos de idioma disponibles dentro del
     directorio del port en files/Makefile.localized.

   Hecho esto puede ejecutar OpenOffice.org con la orden:

 % openoffice.org

     --------------------------------------------------------------

6.4. Visores de documentos

   Desde la aparicion de UNIX han ido apareciendo formatos de
   documento de lo mas diverso, alguno de los cuales se ha hecho muy
   popular. Los visores de documentos estandar que requieren no
   tienen por que estar en el sistema base. En esta seccion veremos
   como instalar estos visores.

   Esta seccion cubre las siguientes aplicaciones:

    Nombre de la   Recursos  Instalacion                              
     aplicacion   necesarios  desde los    Dependencias importantes
                                ports    
   Acrobat Reader ligero     ligero      Compatibilidad binaria de    
                                         Linux                        
   gv             ligero     ligero      Xaw3d                        
   Xpdf           ligero     ligero      FreeType                     
   GQview         ligero     ligero      Gtk+ o GNOME                 

     --------------------------------------------------------------

  6.4.1. Acrobat Reader(R)

   Muchos documentos se distribuyen en formato PDF, siglas de
   <<Portable Document Format>>. Uno de los visores recomendados para
   este tipo de ficheros es Acrobat Reader, un producto de Adobe para
   Linux. Dado que FreeBSD puede ejecutar binarios de Linux tambien
   existe para FreeBSD.

   Para instalar Acrobat Reader 7 desde la Coleccion de Ports
   ejecute:

 # cd /usr/ports/print/acroread7
 # make install clean

   No hay package debido a las restricciones que impone la licencia
   del software.

     --------------------------------------------------------------

  6.4.2. gv

   gv es un visor de PostScript y PDF. Tiene su origen en ghostview
   pero tiene un aspecto bastante mejorado gracias a la libreria
   Xaw3d. Es rapido y tiene una interfaz limpia. gv tiene muchas
   opciones como orientacion, tamano del papel, escalado o antialias.
   Casi todas las operaciones se pueden realizar desde el teclado o
   desde el raton.

   Para instalar gv como package ejecute:

 # pkg_add -r gv

   Si no puede obtener el package puede usar la coleccion de ports:

 # cd /usr/ports/print/gv
 # make install clean

     --------------------------------------------------------------

  6.4.3. Xpdf

   Si quiere un visor de PDF pequeno, Xpdf es un visor ligero y
   eficiente. Requiere muy pocos recursos y es muy estable. Usa los
   tipos estandar de X y no depende de Motif ni de ningun otro
   <<toolkit>> de X.

   Para instalar el package de Xpdf use la siguiente orden:

 # pkg_add -r xpdf

   Si el paquete no esta disponible o prefiere usar la coleccion de
   ports ejecute:

 # cd /usr/ports/graphics/xpdf
 # make install clean

   Una vez que la instalacion haya concluido puede lanzar Xpdf; use
   el boton derecho del raton para activar el menu.

     --------------------------------------------------------------

  6.4.4. GQview

   GQview es un visor de imagenes. Puede ver un fichero con un click,
   lanzar un editor externo, obtener imagenes de previsualizacion y
   muchas cosas mas. Tambien tiene un modo de presentacion y admite
   algunas opciones basicas de manipulacion de ficheros. Puede
   gestionar colecciones de imagenes y encontrar ficheros duplicados
   con facilidad. GQview puede mostrar las imagenes a pantalla
   completa y esta preparado para la internacionalizacion.

   Si quiere instalar el paquete de GQview ejecute:

 # pkg_add -r gqview

   Si el paquete no esta disponible o prefiere usar la coleccion de
   ports ejecute:

 # cd /usr/ports/graphics/gqview
 # make install clean

     --------------------------------------------------------------

6.5. Finanzas

   Si por algun motivo quisiera gestionar sus finanzas personales en
   su escritorio FreeBSD hay algunas aplicaciones potentes y
   sencillas de utilizar que puede instalar. Algunas de ellas son
   compatibles con formatos muy extendidos como documentos de
   Quicken(R) o Excel.

   Esta seccion cubre las siguientes aplicaciones:

      Nombre de       Recursos       Instalacion      Dependencias    
     aplicacion      necesarios    desde los ports     importantes    
   GnuCash         ligero          pesado           GNOME             
   Gnumeric        ligero          pesado           GNOME             
   Abacus          ligero          pesado           Tcl/Tk            
   KMyMoney        ligero          pesado           KDE               

     --------------------------------------------------------------

  6.5.1. GnuCash

   GnuCash es parte del afan de GNOME por ofrecer aplicaciones de uso
   sencillo pero a la vez potentes a los usuarios. Con GnuCash, puede
   gestionar sus ingresos y sus gastos, sus cuentas bancarias o sus
   acciones. Tiene una interfaz intuitiva pero muy profesional.

   GnuCash dispone de un registro elegante, un sistema jerarquico de
   cuentas, muchos atajos de teclado y metodos de autocompletado.
   Puede dividir una transaccion en varias partes mas detalladas.
   GnuCash puede importar y mezclar ficheros QIF de Quicken. Tambien
   admite muchos formatos internacionales de fecha y moneda.

   Para instalar GnuCash en su sistema ejecute:

 # pkg_add -r gnucash

   Si el paquete no esta disponible puede usar la coleccion de ports:

 # cd /usr/ports/finance/gnucash
 # make install clean

     --------------------------------------------------------------

  6.5.2. Gnumeric

   Gnumeric es una hoja de calculo que forma parte del entorno de
   escritorio GNOME. Implementa una <<prediccion>> automatica de la
   entrada del usuario de acuerdo con el formato de celda y un
   sistema de completado automatico para multiples secuencias. Puede
   importar ficheros de un gran numero de formatos muy extendidos,
   como Excel, Lotus 1-2-3 o Quattro Pro. Gnumeric soporta graficas
   mediante el programa de graficas math/guppi. Tiene un gran n'mero
   de funciones internas y permite todos los formatos normales de
   celda como numero, moneda, fecha, hora y muchos mas.

   Para instalar Gnumeric como package ejecute:

 # pkg_add -r gnumeric

   Si el package no esta disponible puede usar la coleccion de ports
   del siguiente modo:

 # cd /usr/ports/math/gnumeric
 # make install clean

     --------------------------------------------------------------

  6.5.3. Abacus

   Abacus es una hoja de calculo pequena y facil de usar. Tiene
   muchas funciones utiles en varios ambitos como la estadistica, las
   finanzas y las matematicas. Puede importar y exportar ficheros con
   formato Excel. Abacus puede generar ficheros PostScript.

   Para instalar Abacus como package ejecute:

 # pkg_add -r abacus

   Si no hay package al alcance puede usar la coleccion de ports:

 # cd /usr/ports/deskutils/abacus
 # make install clean

     --------------------------------------------------------------

6.6. Resumen

   FreeBSD esta muy extendido en ISP por su alto rendimiento y
   estabilidad, pero tambien se puede usar a diario como escritorio.
   Hay miles de aplicaciones disponibles como packages o ports con
   las que puede crear un escritorio que cubra todas sus necesidades.

   Aqui hay un resumen de todas las aplicaciones cubiertas en este
   capitulo:

   Nombre De La Aplicacion  Nombre Del Paquete    Nombre Del Port     
   Mozilla                  mozilla            www/mozilla            
   Opera                    opera              www/opera              
   Firefox                  firefox            www/firefox            
   KOffice                  koffice-kde3       editors/koffice-kde3   
   AbiWord                  AbiWord2           editors/AbiWord2       
   GIMP                     gimp               graphics/gimp          
   OpenOffice.org           openoffice         editors/openoffice-1.1 
   Acrobat Reader           acroread           print/acroread7        
   gv                       gv                 print/gv               
   Xpdf                     xpdf               graphics/xpdf          
   GQview                   gqview             graphics/gqview        
   GnuCash                  gnucash            finance/gnucash        
   Gnumeric                 gnumeric           math/gnumeric          
   Abacus                   abacus             deskutils/abacus       
   KMyMoney                 kmymoney2          finance/kmymoney2      

     --------------------------------------------------------------

                         Capitulo 7. Multimedia

   Editado por Ross Lippert.

7.1. Sinopsis

   FreeBSD admite una gran variedad de tarjetas de sonido, lo que
   permite disfrutar de sonido de alta fidelidad en su sistema. Esto
   incluye la posibilidad de grabar y reproducir ficheros de audio
   tanto en los formatos MPEG Audio Layer 3 (MP3), WAV y Ogg Vorbis,
   asi como muchos otros. La Coleccion de Ports de FreeBSD contiene
   tambien aplicaciones que le permitiran editar audio previamente
   grabado, anadir efectos y controlar dispositivos MIDI.

   Tras unas cuantas pruebas podra reproducir ficheros de video y DVD
   en FreeBSD. La cantidad de aplicaciones disponibles para
   codificar, convertir y reproducir los diversos soportes de video
   es mas limitada que lo que hay disponible para el sonido. Por
   ejemplo, en el momento de escribir este texto no hay en la
   Coleccion de Ports de FreeBSD una buena aplicacion que permita
   pasar datos de un formato a otro, el equivalente a lo que hay en
   el campo del sonido con audio/sox. A pesar de eso la situacion en
   este area esta cambiando rapidamente.

   Este capitulo muestra los pasos necesarios para configurar una
   tarjeta de sonido. La configuracion e instalacion de X11 (Capitulo
   5) habra solucionado ya todos los problemas que hubiera podido
   darle su tarjeta grafica, aunque quizas haya algun pequeno detalle
   que anadir para mejorar la reproduccion.

   Tras leer este capitulo sabra usted:

     * Como configurar su sistema de modo que su tarjeta de sonido
       sea reconocida por el mismo.

     * Confirmar el funcionamiento de su tarjeta usando herramientas
       de muestreo.

     * Como enfrentarse a problemas de configuracion de sonido.

     * Como reproducir y crear ficheros MP3 y otros.

     * Como gestiona el video el servidor X.

     * Identificar unos cuantos ports para reproducir y codificar
       video que le daran muy buenos resultados.

     * Como reproducir DVD y ficheros .mpg y .avi.

     * Como convertir CD y DVD en ficheros de datos.

     * Como configurar una tarjeta de TV.

     * Como configurar un escaner de imagenes.

   Antes de leer este capitulo deberia:

     * Saber configurar e instalar un nuevo kernel (Capitulo 8).

     Aviso Si intenta montar un cd con mount(8) provocara (como
     minimo) un error en el sistema, pero puede llegar a provocar un
     kernel panic. Dichos soportes tienen codificaciones especiales
     sustancialmente diferentes de los tipicos sistemas de ficheros
     ISO.

     --------------------------------------------------------------

7.2. Configuracion de la tarjeta de sonido

   Escrito por Moses Moore. Ampliado para FreeBSD 5.X por Marc
   Fonvieille.

  7.2.1. Configuracion del sistema

   Antes de nada tendra que saber a ciencia cierta el modelo de
   tarjeta que tiene, que chip utiliza y si es PCI o ISA. FreeBSD
   admite una amplia variedad de tarjetas, tanto PCI como ISA.
   Consulte la lista de dispositivos de sonido que puede usar en
   FreeBSD en las Hardware Notes. Las <<Hardware Notes>> le diran
   tambien que controlador es el que hace funcionar su tarjeta.

   Para poder usar su dispositivo de sonido en FreeBSD tiene que
   cargar el controlador de dispositivo adecuado, cosa que puede
   hacerse de dos maneras. La forma mas facil es cargar el modulo del
   kernel correspondiente a su tarjeta de sonido mediante kldload(8).
   Puede hacerlo en su shell con la siguiente orden

 # kldload snd_emu10k1

   o anadiendo la linea apropiada al fichero /boot/loader.conf:

 snd_emu10k1_load="YES"

   Ambos ejemplos son para una tarjeta de sonido Creative
   SoundBlaster(R) Live!. Encontrara una lista de modulos de sonido
   que puede cargar del mismo modo en /boot/defaults/loader.conf. Si
   no esta del todo seguro sobre el controlador que debe usar pruebe
   con el modulo snd_driver:

 # kldload snd_driver

   Se trata de un <<metacontrolador>> que carga en memoria todos los
   controladores mas habituales. De este modo acelerara notablemente
   el proceso de detectar cual es el controlador perfecto para su
   hardware. Tambien puede cargar todos los controladores de sonido
   desde /boot/loader.conf.

   Si quiere saber que controlador se corresponde con su tarjeta de
   sonido una vez cargado el <<metadriver>> snd_driver debe comprobar
   el contenido de /dev/sndstat mediante la orden cat /dev/sndstat.

   El segundo metodo es compilar de forma estatica el soporte para su
   tarjeta de sonido dentro de un kernel personalizado. En la
   siguiente seccion encontrara la informacion necesaria para anadir
   a su kernel el soporte que necesita su hardware. Para mas
   informacion sobre la compilacion de un kernel consulte el Capitulo
   8.

     --------------------------------------------------------------

    7.2.1.1. Configuracion de un kernel personalizado con soporte de
    sonido

   Lo primero que hay que hacer es anadir el controlador del
   <<framework>> de sonido sound(4) al kernel; tendra que anadir la
   siguiente linea a su fichero de configuracion del kernel:

 device sound

   Una vez hecho esto tiene que anadir el soporte para su tarjeta de
   sonido. Evidentemente tendra que saber exactamente que controlador
   es el que hace funcionar su tarjeta. Consulte la lista de
   dispositivos de sonido soportados que encontrara en las Hardware
   Notes y elija el controlador perfecto para su tarjeta. Por ejemplo
   una una tarjeta de sonido Creative SoundBlaster Live! usara el
   controlador snd_emu10k1(4). Siguiendo con el ejemplo, si queremos
   anadir soporte para esta tarjeta agregaremos lo siguiente:

 device snd_emu10k1

   Por favor, lea la pagina de manual del controlador si tiene dudas
   con la sintaxis. La sintaxis especifica para la configuracion en
   el kernel de cada tarjeta de sonido soportada existente puede
   encontrarse tambien en /usr/src/sys/conf/NOTES.

   Las tarjetas ISA no PnP pueden requerir que se le facilite al
   kernel la informacion de la configuracion de la tarjeta (IRQ,
   puerto de E/S, etc). Esto se hace modificando el fichero
   /boot/device.hints. Durante el proceso de arranque loader(8) leera
   este fichero y le pasara los parametros al kernel. Veamos un
   ejemplo: una vieja tarjeta Creative SoundBlaster 16 ISA no PnP
   utilizara el controlador snd_sbc(4) junto con snd_sb16. En el caso
   de esta tarjeta habra que anadir las siguientes lineas al fichero
   de configuracion del kernel

 device snd_sbc
 device snd_sb16

   y anadir lo siguiente a /boot/device.hints:

 hint.sbc.0.at="isa"
 hint.sbc.0.port="0x220"
 hint.sbc.0.irq="5"
 hint.sbc.0.drq="1"
 hint.sbc.0.flags="0x15"

   La tarjeta del ejemplo usa el puerto de E/S 0x220 I/O port y la
   IRQ 5.

   La sintaxis a utilizar en /boot/device.hints se explica en la
   pagina de manual de sound(4) y en la del controlador en cuestion.

   En el ejemplo se muestran los parametros por omision. En ciertos
   casos habra que usar otra IRQ o usar otros parametros para hacer
   funcionar la tarjeta de sonido. Consulte la pagina de manual de
   snd_sbc(4) para mas informacion sobre esta tarjeta.

     --------------------------------------------------------------

  7.2.2. Como probar su tarjeta de sonido

   Una vez que haya reiniciado con su kernel personalizado, o tras
   cargar el molo del kernel necesario la tarjeta de sonido aparecera
   en el bufer de mensajes del sistema (dmesg(8)); deberi ser algo
   muy parecido a esto:

 pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
 pcm0: [GIANT-LOCKED]
 pcm0: <Cirrus Logic CS4205 AC97 Codec>

   Puede comprobar el estado de la tarjeta de sonido en el fichero
   /dev/sndstat:

 # cat /dev/sndstat
 FreeBSD Audio Driver (newpcm)
 Installed devices:
 pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
 kld snd_ich (1p/2r/0v channels duplex default)

   El resultado en su sistema seguramente sera distinto. Si no
   aparecen dispositivos pcm revise todo el proceso a ver donde esta
   el error. Revise su fichero de configuracion del kernel nuevamente
   y compruebe que eligio el controlador de dispositivo adecuado.
   Tiene una lista de problemas habituales en la Seccion 7.2.2.1.

   Si todo ha ido bien ya tiene una tarjeta de sonido funcionando en
   su sistema. Si los pins de salida de sonido de su CD-ROM o DVD-ROM
   estan colocados correctamente puede poner un CD en la unidad y
   reproducirlo con cdcontrol(1).

 % cdcontrol -f /dev/acd0 play 1

   Hay muchas aplicaciones como audio/workman que le ofreceran un
   interfaz mas amigable. Si quiere escuchar ficheros MP3 puede
   instalar, por ejemplo, audio/mpg123.

   Hay otra via aun mas rapida de probar su tarjeta de sonido. Envie
   datos a to /dev/dsp del siguiente modo:

 % cat fichero > /dev/dsp

   donde fichero puede ser cualquier fichero. Esta orden producira
   ruido, lo que confirmara que la tarjeta de sonido funciona.

   Puede manejar los niveles de la tarjeta de sonido con mixer(8).
   Tiene todos los detalles en la pagina de manual de mixer(8).

     --------------------------------------------------------------

    7.2.2.1. Problemas habituales

            Error                           Solution                  
   "sb_dspwr(XX) timed out" El puerto de E/S no ha sido configurado   
                            correctamente.                            
                            No ha elegido correctamente la IRQ.       
   "bad irq XX"             Asegurese de que la IRQ que ha elegido y  
                            la IRQ del sonido son la misma.           
   "xxx: gus pcm not        No queda memoria suficiente en el sistema 
   attached, out of memory" para poder usar el dispositivo.           
                            Compruebe si hay otra aplicacion          
   "xxx: can't open         utilizando (y por tanto ocupando) el      
   /dev/dsp!"               dispositivo. Escriba fstat | grep dsp.    
                            Los sospechosos habituales son esound y   
                            el sistema de sonido de KDE.              

     --------------------------------------------------------------

  7.2.3. Como utilizar multiples fuentes de sonido

   Escrito por Munish Chopra.

   Disponer de multiples fuentes de sonido puede ser muy util, por
   ejemplo cuando esound o artsd no permiten compartir el dispositivo
   de sonido con otra aplicacion.

   FreeBSD permite hacerlo gracias a los Virtual Sound Channels
   (canales virtuales de sonido), que se activan mediante sysctl(8).
   Los canales virtuales permiten multiplexar la reproduccion de
   sonido de su tarjeta mezclando el sonido en el kernel.

   El numero de canales virtuales se configura utilizando dos sysctl;
   como root escriba lo siguiente:

 # sysctl hw.snd.pcm0.vchans=4
 # sysctl hw.snd.maxautovchans=4

   En el ejemplo anterior se han creado cuatro canales virtuales, una
   cantidad muy razonable para el uso normal. hw.snd.pcm0.vchans es
   el numero de canales virtuales de que dispone pcm0; puede
   configurarlo en cuanto el dispositivo sea reconocido por el
   sistema. hw.snd.maxautovchans es el numero de canales virtuales
   que se le asignan a un nuevo dispositivo de audio cuando se
   conecta al sistema mediante kldload(8). Puesto que el modulo pcm
   puede cargarse independientemente de los controladores de hardware
   hw.snd.maxautovchans puede almacenar cuantos canales virtuales
   tienen asignados los dispositivos que se vayan conectando al
   sistema.

     Nota: No es posible modificar el numero de canales virtuales de
     un dispositivo que este en marcha. Cierre antes todos los
     programas que esten utilizando el dispositivo, como
     reproductores de musica o daemons de sonido.

   Si no usa devfs(5) tendra que configurar sus aplicaciones para que
   apunten a /dev/dsp0.x, donde x es un numero entre 0 y 3 si
   hw.snd.pcm.0.vchans tiene un valor de 4 como en el ejemplo
   anterior. Si se estuviera usando devfs(5) en el ejemplo anterior
   cualquier programa que pidiera /dev/dsp0 seria atendido de forma
   totalmente transparente.

     --------------------------------------------------------------

  7.2.4. Asignacion a los canales de mezcla de valores por omision

   Escrito por Josef El-Rayes.

   Los valores por defecto de los distintos canales de mezcla estan
   fijados en el codigo del controlador pcm(4). Hay distintas
   aplicaciones y daemons que le permitiran asignar valores al
   mezclador y que permanezcan entre uso y uso, pero no es una
   solucion demasiado limpia. Puede asignar valores por omision a las
   mezclas a nivel de controlador definiendo los valores apropiados
   en /boot/device.hints. Veamos un ejemplo:

 hint.pcm.0.vol="50"

   Esto asignara al canal de volumen un valor por omision de 50 al
   cargar el modulo pcm(4).

     --------------------------------------------------------------

7.3. Sonido MP3

   Escrito por Chern Lee.

   El formato MP3 (MPEG Layer 3 Audio) llega casi al nivel de calidad
   del CD, por lo que no hay motivo por el deba faltar en su
   escritorio FreeBSD.

     --------------------------------------------------------------

  7.3.1. Reproductores de MP3

   El reproductor de MP3 para X11 mas extendido es, de lejos, XMMS (X
   Multimedia System). Puede usar en el <<skins>>de Winamp puesto que
   el interfaz grafico de XMMS es casi identico al de Nullsoft
   Winamp. XMMS incluye tambien soporte nativo para <<plug-ins>>.

   Puede instalar XMMS como port (multimedia/xmms) o como package.

   La interfaz de XMMS es intuitiva e incluye una lista de
   reproduccion, un ecualizador grafico y muchas otras cosas. Si esta
   acostumbrado a Winamp XMMS le sera muy facil de usar.

   El port audio/mpg123 es un reproductor MP3 que se usa desde la
   shell.

   Puede especificarle desde la misma linea de ordenes a mpg123 el
   dispositivo de sonido que debe usar y el fichero MP3 que debe
   reproducir. Veamos un ejemplo:

 # mpg123 -a /dev/dsp1.0 ASaber-GrandesExitos.mp3
 High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
 Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
 Uses code from various people. See 'README' for more!
 THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!





 Playing MPEG stream from ASaber-GrandesExitos.mp3 ...
 MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

   Sustituya /dev/dsp1.0 por el dispositivo dsp que haya en su
   sistema.

     --------------------------------------------------------------

  7.3.2. Extraccion de pistas de sonido de un CD

   Antes de convirtir una pista o todo un CD a MP3 la informacion
   sonido debe volcarse al disco duro. Esto se hace convirtiendo los
   datos <<raw CDDA>> (CD Digital Audio) a ficheros WAV.

   La herramienta cdda2wav, que forma parte del port
   sysutils/cdrtools, permite la extraccion de informacion de sonido
   en CD asi como la informacion asociada a el.

   Con el CD en la unidad la siguiente orden (como root) un CD entero
   en ficheros WAV individuales, uno por pista:

 # cdda2wav -D 0,1,0 -B

   cdda2wav soporta unidades CDROM ATAPI (IDE). En el caso de
   unidades IDE especifique el numero de dispositivo en el lugar
   correspondiente al nuro de unidad SCSI. Por ejemplo, para extraer
   la pista 7 desde una unidad IDE:

 # cdda2wav -D /dev/acd0 -t 7

   La opcion -D 0,1,0 indica el dispositivo SCSI 0,1,0, que
   corresponde con la salida de cdrecord -scanbus.

   Para extraer pistas de forma selectiva use la opcion -t:

 # cdda2wav -D 0,1,0 -t 7

   Esta opcion extrae la septima pista de un CDROM de sonido. Si
   quiere extraer un rango de pistas, por ejemplo las pistas de la
   uno a la siete, declare el rango del siguiente modo:

 # cdda2wav -D 0,1,0 -t 1+7

   La herramienta dd(1) le permite tambien extraer pistas de sonido
   desde unidades ATAPI; consulte la Seccion 18.6.5 para mas
   informacion.

     --------------------------------------------------------------

  7.3.3. Codificacion de MP3

   Hoy por hoy el codificador de MP3 por antonomasia es lame. Puede
   encontrar lame en audio/lame.

   Partiendo de ficheros WAV previamente extraidos la siguiente orden
   convierte audio01.wav en audio01.mp3:

 # lame -h -b 128 \
 --tt "Titulo de copla o cantar" \
 --ta "Grupo, solista o coral sinfonica" \
 --tl "Titulo del album" \
 --ty "2001" \
 --tc "Autor de la extraccion y paso a MP3" \
 --tg "Estilo" \
 audio01.wav audio01.mp3

   Los 128 kbits pasan por se el estandar de ratio de bits de los
   MP3, aunque puede que usted sea de los que prefieren calidades mas
   altas, 160 o incluso 192. A mayor ratio de bits, mas espacio en
   disco necesitara, aunque la calidad tambien sera mayor. La opcion
   -h usa el modo <<mas calidad pero algo mas lento>>. Las opciones
   que empiezan por --t indican etiquetas ID3, que suelen contener
   informacion de la cancion que contiene el fichero MP3. Tiene
   informacion sobre otras opciones de codificacion en la pagina de
   manual de lame.

     --------------------------------------------------------------

  7.3.4. Decodificacion de MP3

   Para grabar un CD de sonido desde ficheros MP3 hay que
   convertirlos a formato WAV no comprimido. Tanto XMMS como mpg123
   soportan la conversion de MP3 a un formato de fichero no
   comprimido.

   Escritura a disco desde XMMS:

    1. Arranque XMMS.

    2. Boton derecho del raon en la ventana para acceder al menu de
       XMMS.

    3. Elija Preferences en Options.

    4. Cambie el <<Output Plugin>> a <<Disk Writer Plugin>>.

    5. Pulse Configure.

    6. Elija un directorio en el que guardar los ficheros
       descomprimidos.

    7. Cargue el fichero MP3 en XMMS de la forma habitual, pero
       asegurese de tener el volumen al 100% y las opciones de
       ecualizacion desactivadas.

    8. Pulse Play -- parecera que XMMS esta reproduciendo musica pero
       no sonara nada. Lo que esta haciendo es volcar el MP3 a un
       fichero.

    9. Recuerde que antes de poder volver a escuchar ficheros MP3 de
       nuevo tendra que devolver el <<Plugin de salida>> por omision
       a la posicion inicial.

   Escritura de la salida estandar en mpg123:

    1. Ejecute mpg123 -s audio01.mp3 > audio01.pcm

   XMMS genera un fichero WAV, mientras que mpg123 convierte MP3 a
   datos de sonido raw PCM. Puede usar cdrecord con ambos formatos
   para crear CD de sonido. Tendra que usar burncd(8) para raw PCM.
   Si lo que tiene son ficheros WAV escuchara un ligero clic al
   principio de cada pista: se trata de la cabecera del fichero WAV.
   Puede eliminar esta cabecera mediante SoX (que puede instalar como
   port desde audio/sox o si lo prefiere como package):

 % sox -t wav -r 44100 -s -w -c 2 pista.wav pista.raw

   Consulte la Seccion 18.6 para mas informacion sobre el uso de
   grabadoras de CD en FreeBSD.

     --------------------------------------------------------------

7.4. Reproduccion de video

   Contributed by Ross Lippert.

   La reproduccion de v&ideo es un area muy nueva y en la que se
   producen grandes cambios a gran velocidad. Tenga paciencia. Aqui
   no va a ser todo tan sencillo como al configurar el sonido.

   Antes de comenzar es imprescindible que sepa con certeza cual es
   el modelo de su tarjeta grafica y que chip usa. Tanto Xorg como
   XFree86 soportan gran cantidad de tarjetas graficas, pero de pocas
   se puede decir que den un buen rendiemiento de reproduccion. Puede
   consultar una lista de extensiones que el servidor X puede hacer
   funcionar en su tarjeta ejecutando xdpyinfo(1) desde una sesion
   X11.

   Le recomendamos que tenga a mano un fichero MPEG no muy grande
   para usarlo en las pruebas que haga con los diversos reproductores
   y opciones. Algunos reproductores de DVD buscaran por omision
   soportes DVD en /dev/dvd (algunos incluso tienen fijado en el
   codigo el nombre de dicha unidad) seguramente le resultara util
   ejecutar los siguientes enlaces simbolicos:

 # ln -sf /dev/acd0 /dev/dvd
 # ln -sf /dev/acd0 /dev/rdvd

   Tenga en cuenta que debido al diseno de devfs(5) los enlaces
   creados a mano no sobreviviran a un reinicio del sistema. Para que
   asi suceda tras cada reinicio debe anadir las siguientes lineas a
   /etc/devfs.conf:

 link acd0 dvd
 link acd0 rdvd

   Ademas, el descifrado de DVD (una tarea que hara necesario llamar
   a funciones especiales de los DVD-ROM) requiere permisos de
   escritura en unidades DVD.

   Le recomendamos que aumente la memoria compartida del interfaz
   X11, para lo cual tendra que incremente los valores asignados a
   varias sysctl(8):

 kern.ipc.shmmax=67108864
 kern.ipc.shmall=32768

     --------------------------------------------------------------

  7.4.1. Como determinar las caracteristicas de video

   Hay varias formas de reproducir video en X11, pero cual de ellas
   sea la que funcione depende en gran medida del hardware que
   intervenga. Cada uno de los metodos que se describen mas son
   mejores o peores segun en que hardware se ejecute. Ademas el
   procesamiento de video en X11 es un asunto que esta recibiendo
   mucha atencion ultimamente y en cada nueva version de Xorg y de
   XFree86 no es extrano encontrar avances significativos.

   Veamos una lista de interfaces de video muy comunes:

    1. X11: salida normal de X11 utilizando memoria compartida.

    2. XVideo: una extension del interfaz X11 que permite la
       reproduccion de video en las ventanas de X11.

    3. SDL: Simple Directmedia Layer.

    4. DGA: Direct Graphics Access (acceso directo a graficos.

    5. SVGAlib: capa de consola de graficos a bajo nivel.

     --------------------------------------------------------------

    7.4.1.1. XVideo

   Xorg y XFree86 4.X tienen una extension llamada XVideo (tambien
   conocida como Xvideo, Xv o xv) que permite reproducir video en
   ventanas del sistema X11 a traves de un tipo de aceleracion
   especial. Dicha extension ofrece una calidad de reproduccion muy
   alta incluso en maquinas muy cortas de recursos.

   Utilice xvinfo para saber que extension esta utilizando:

 % xvinfo

   XVideo is supported for your card if the result looks like:

 X-Video Extension version 2.2
 screen #0
   Adaptor #0: "Savage Streams Engine"
     number of ports: 1
     port base: 43
     operations supported: PutImage
     supported visuals:
       depth 16, visualID 0x22
       depth 16, visualID 0x23
     number of attributes: 5
       "XV_COLORKEY" (range 0 to 16777215)
               client settable attribute
               client gettable attribute (current value is 2110)
       "XV_BRIGHTNESS" (range -128 to 127)
               client settable attribute
               client gettable attribute (current value is 0)
       "XV_CONTRAST" (range 0 to 255)
               client settable attribute
               client gettable attribute (current value is 128)
       "XV_SATURATION" (range 0 to 255)
               client settable attribute
               client gettable attribute (current value is 128)
       "XV_HUE" (range -180 to 180)
               client settable attribute
               client gettable attribute (current value is 0)
     maximum XvImage size: 1024 x 1024
     Number of image formats: 7
       id: 0x32595559 (YUY2)
         guid: 59555932-0000-0010-8000-00aa00389b71
         bits per pixel: 16
         number of planes: 1
         type: YUV (packed)
       id: 0x32315659 (YV12)
         guid: 59563132-0000-0010-8000-00aa00389b71
         bits per pixel: 12
         number of planes: 3
         type: YUV (planar)
       id: 0x30323449 (I420)
         guid: 49343230-0000-0010-8000-00aa00389b71
         bits per pixel: 12
         number of planes: 3
         type: YUV (planar)
       id: 0x36315652 (RV16)
         guid: 52563135-0000-0000-0000-000000000000
         bits per pixel: 16
         number of planes: 1
         type: RGB (packed)
         depth: 0
         red, green, blue masks: 0x1f, 0x3e0, 0x7c00
       id: 0x35315652 (RV15)
         guid: 52563136-0000-0000-0000-000000000000
         bits per pixel: 16
         number of planes: 1
         type: RGB (packed)
         depth: 0
         red, green, blue masks: 0x1f, 0x7e0, 0xf800
       id: 0x31313259 (Y211)
         guid: 59323131-0000-0010-8000-00aa00389b71
         bits per pixel: 6
         number of planes: 3
         type: YUV (packed)
       id: 0x0
         guid: 00000000-0000-0000-0000-000000000000
         bits per pixel: 0
         number of planes: 0
         type: RGB (packed)
         depth: 1
         red, green, blue masks: 0x0, 0x0, 0x0

   Tenga en cuenta que los formatos que aparecen en el listado (YUV2,
   YUV12, etc) no aparecen en todas las implementaciones de de XVideo
   y su ausencia puede despistar a algunos reproductores.

   Si el resultado se parece mucho a esto

 X-Video Extension version 2.2
 screen #0
 no adaptors present

   lo mas probable es que su tarjeta no soporte XVideo.

   Si su tarjeta grafica no soporta XVideo lo unico que significa es
   que para su sistema sera mas complicado alcanzar los requisitos
   computacionales necesarios para el procesamiento de video.
   Dependiendo de la tarjeta grafica y el procesador que tenga es
   posible que de todos modos pueda salvar la papeleta. Consulte la
   seccion sobre recursos avanzados en la Seccion 7.4.3.

     --------------------------------------------------------------

    7.4.1.2. Simple Directmedia Layer

   SDL (Simple Directmedia Layer) se creo pensando en una capa que
   permitiera aplicaciones faciles de portar entre las plataformas
   Microsoft Windows, BeOS y UNIX y que permitiera al mismo tiempo un
   uso eficiente del sonido y el video. La capa SDL ofrece
   abstraccion de hardware a bajo nivel, lo que a veces puee ser mas
   eficiente que la propia interfaz X11.

   SDL esta en devel/sdl12.

     --------------------------------------------------------------

    7.4.1.3. Direct Graphics Access

   <<Direct Graphics Access>> es una extension de X11 que permite que
   un programa sortee el servidor X y acceda directamente al
   <<framebuffer>>. Utiliza memoria de bajo nivel, asi es
   imprescindible que se ejecute como root.

   Puede probar y analizar el rendimiento de la extension DGA con
   dga(1). Al ejecutar dga la pantalla cambia de color cada vez que
   pulsa una tecla. Para salir de la aplicacion pulse q.

     --------------------------------------------------------------

  7.4.2. Ports y packages relacionados con el video

   Esta seccion expone el software existente en la Coleccion de Ports
   de FreeBSD que puede usar para la reproduccion de video. La
   reproduccion de video es un area del desarrollo de software donde
   hay muchisima actividad, de manera que las caracteristicas de mas
   de una de las aplicaciones que vamos a describir pueden ser
   distintas.

   Lo primero que hay que conocer es el importante detalle de que la
   mayoria de las aplicaciones de video que funcionan en FreeBSD se
   desarrollaron para Linux. Muchas de esas aplicaciones todavia
   estan en versiones beta. Estos son algunos de los problemas que
   puede encontrarse durante el uso de software de video en FreeBSD:

    1. Una aplicacion no puede reproducir un fichero que ha generado
       otra aplicacion distinta.

    2. Una aplicacion no puede reproducir un fichero que ella misma a
       generado.

    3. La misma aplicacion ejecutandose en dos maquinas distintas,
       compilada en cada una de esas maquinas; la reproduccion del
       mismo fichero da resultados diferentes.

    4. El uso de un filtro aparentemente trivial como es
       redimensionar una imagen aplicando una escala da como fruto un
       resultado horroroso debido a que la rutina encargada de
       aplicarla es defectuosa.

    5. Que una aplicacion de volcados de memoria (<<core dumps>>).

    6. La documentacion no se instala con el port, pero si que existe
       en la web o en el directorio work del port.

   La mayoria de estas aplicaciones muestra sintomas evidente de
   <<Linuxismo>>, es decir, hay problemas derivados del modo en el
   que se implementan las bibliotecas en las distribuciones de Linux,
   o del hecho de que ciertas caracteristicas del kernel de Linux han
   sido dadas por omnipresentes por los autores de las aplicaciones.
   Estos problemas no siempre han sido advertidas y solucionadas de
   algun modo por los responsables de los ports, lo que puede
   desembocar en problemas como:

    1. El uso de /proc/cpuinfo para detectar las caracteristicas del
       procesador.

    2. El uso erroneo de los hilos puede causar que ciertos programas
       se cuelguen al intentar cerrarse en lugar de cerrarse
       correctamente.

    3. Software que aun no esta en la Coleccion de Ports de FreeBSD
       usado frecuentemente con la aplicacion.

   Hasta ahora los autores de las aplicaciones han colaborado de buen
   grado con los responsables de los ports para hacer mas sencillo el
   trabajo de portar estas aplicaciones a FreeBSD.

     --------------------------------------------------------------

    7.4.2.1. MPlayer

   MPlayer es un reproductor de video desarrollado muy recientemente
   y con un desarrollo rapidisimo. Los objetivos del equipo MPlayer
   son la velocidad y la flexibilidad en Linux y otros sistemas Unix.
   El proyecto comenzo cuando el fundador del equipo se canso de
   padecer el pobre rendimiento de los reproductores de video que
   habia disponibles en ese momento. Hay quien dice que el interfaz
   grafico fue sacrificado en pos de un diseno mas ligero, aunque una
   vez que se acostumbre a las opciones desde la linea de ordenes y a
   los atajos de teclado todo ira como la seda.

     --------------------------------------------------------------

      7.4.2.1.1. Compilacion de MPlayer

   Encontrara MPlayer en multimedia/mplayer. MPlayer ejecuta una
   serie de pruebas de hardware durante el proceso de compilacion,
   dando como resultado un binario que no tiene por que funcionar en
   otros sistemas. Recuerde, por tanto, compilar la aplicacion como
   port y no utilice el package binario. Ademas hay multiples
   parametros que puede pasarle a make, tal y como vera al comenzar
   la compilacion:

 # cd /usr/ports/multimedia/mplayer
 # make
 N - O - T - E

 Take a careful look into the Makefile in order
 to learn how to tune mplayer towards you personal preferences!
 For example,
 make WITH_GTK1
 builds MPlayer with GTK1-GUI support.
 If you want to use the GUI, you can either install
 /usr/ports/multimedia/mplayer-skins
 or download official skin collections from
 http://www.mplayerhq.hu/homepage/dload.html

   Las opciones por omision del port deberian bastar para la mayoria
   de los usuarios, aunque si va a necesitar el codec XviD tendra que
   especificar WITH_XVID en la linea de ordenes. La unidad de DVD por
   defecto se puede definir con la opcion WITH_DVD_DEVICEsi la opcion
   por omision, /dev/acd0, no le sirve.

   En el momento de escribir esto el port de MPlayer genera la
   documentacion en formato HTML y dos ejecutables: mplayer y
   mencoder, que es una herramienta para recodificar video.

   La documentacion en HTML de MPlayer es muy informativa. Si el
   lector no cubre todas sus dudas sobre hardware de video e
   interfaces con el contenido de este capitulo la documentacion de
   MPlayer es el sitio donde debe buscar. Si quiere mas informacion
   sobre el soporte de video en UNIX el mejor sitio para consultar
   es, sin duda alguna, la documentacion de MPlayer.

     --------------------------------------------------------------

      7.4.2.1.2. Uso de MPlayer

   Los usuarios de MPlayer deben crear un subdirectorio .mplayer en
   su <<home>>. Para crear este directorio (necesario para el
   funcionamiento de la aplicacion) teclee lo siguiente:

 % cd /usr/ports/multimedia/mplayer
 % make install-user

   Las opciones de mplayer para la linea de ordenes se detallan en la
   pagina de manual. Si necesita todavia mas detalles consulte la
   documentacion en HTML. En esta seccion se va a explicar solamente
   lo mas basico.

   Para reproducir el fichero ficherodeprueba.avi, mediante una de
   las diversas interfaces de video utilice la opcion -vo:

 % mplayer -vo xv ficherodeprueba.avi

 % mplayer -vo sdl ficherodeprueba.avi

 % mplayer -vo x11 ficherodeprueba.avi

 # mplayer -vo dga ficherodeprueba.avi

 # mplayer -vo 'sdl:dga' ficherodeprueba.avi

   Merece la pena que pruebe todas, puesto que el rendimiento
   relativo depende en gran medida de muchos factores y sera muy
   distinto el resultado dependiendo del hardware.

   Si quiere reproducir un DVD sustituya ficherodeprueba.avi por
   dvd://N -dvd-device DISPOSITIVO, donde N es el numero de titulo
   que quiere reproducir y DISPOSITIVO es el nodo de dispositivo del
   DVD-ROM. Veamos un ejemplo: para reproducir el titulo 3 desde
   /dev/dvd ejecutaremos:

 # mplayer -vo xv dvd://3 -dvd-device /dev/dvd

     Nota: La unidad de DVD por omision puede definirse durante la
     compilacion del port de MPlayer con la opcion WITH_DVD_DEVICE.
     Por defecto apunta a /dev/acd0. Tiene todos los detalles en el
     Makefile del port.

   Consulte los atajos de teclado para parar la reproduccion, ponerla
   en pausa, etc. consulte la salida de mplayer -h o mejor aun lese
   la pagina de manual.

   Hay otras opciones que le resultaran de interes para la
   reproduccion: -fs -zoom, para la reproduccion a pantalla completa
   y -framedrop, que mejora el rendimiento.

   Para evitar que la linea de ordenes se haga demasiado larga puede
   crear un fichero .mplayer/config e introducir en el las opciones
   que quiera usar desde el arranque de la aplicacion:

 vo=xv
 fs=yes
 zoom=yes

   Para terminar, puede usar mplayer para extraer un titulo de un DVD
   a un fichero .vob. Por ejemplo, si quiere extraer el segundo
   titulo de un DVD escriba esto:

 # mplayer -dumpstream -dumpfile salida.vob dvd://2 -dvd-device /dev/dvd

   El fichero de salida, salida.vob, un MPEG y puede manipularlo con
   las aplicaciones que se describen en esta seccion.

     --------------------------------------------------------------

      7.4.2.1.3. mencoder

   Antes de empezar a usar mencoder le recomendamos que se
   familiarice con las opciones que se detallan en la documentacion
   HTML. Hay tambien una pagina de manual, pero no es de mucha
   utilidad sin la documentacion HTML. Hay una ingente cantidad de
   formas de mejorar la calidad, reducir el ratio de bits y cambiar
   formatos; alguno de esos pequenos trucos pueden marcar la
   diferencia entre un buen y un mal rendimiento. Le mostramos un par
   de ejemplos por los que puede empezar. El primero es una simple
   copia:

 % mencoder entrada.avi -oac copy -ovc copy -o salida.avi

   Ciertas combinaciones erroneas de opciones en la linea de ordenes
   pueden dar como fruto un fichero de salida que no puede reproducir
   ni siquiera el propio mplayer, asi que si lo que quiere es extraer
   datos a un fichero siga usando tranquilamente la opcion -dumpfile
   de mplayer.

   Para convertir entrada.avi con codificacion MPEG4 y audio con
   codificacion MPEG3 (necesitara audio/lame):

 % mencoder entrada.avi -oac mp3lame -lameopts br=192 \
          -ovc lavc -lavcopts vcodec=mpeg4:vhq -o salida.avi

   El fichero de salida puede verse con mplayer y con xine.

   Si sustituye entrada.avi por dvd://1 -dvd-device /dev/dvd y lo
   ejecuta como root puede recodificar un titulo de DVD directamente.
   Es posible que el resultado no sea muy satisfactorio tras los
   primeros intentos, asi que le recomendamos que vuelque el titulo a
   un fichero y haga todas las pruebas que necesite sobre ese
   fichero.

     --------------------------------------------------------------

    7.4.2.2. El reproductor de video xine

   El reproductor de video xine es un ambicioso proyecto que tiene
   como meta ofrecer no solamente una aplicacion de video <<todo en
   uno>>, sino crear una biblioteca base reutilizable y un ejecutable
   modular que puede ampliarse mediante <<plugins>>. Existe como
   package y tambien como port: multimedia/xine.

   El reproductor xine esta todavia en mantillas, pero sus primeros
   pasos estan siendo muy interesantes. xine requiere o una CPU
   rapida o una tarjeta grafica, o bien soporte para la extension
   XVideo. El GUI es intuitivo, aunque un tanto pedestre.

   En el momento de escribir esto xine no incorpora ningun modulo de
   entrada que sirva para reproducir DVD codificados con CSS. Hay
   versiones compiladas por terceros que tienen modulos que lo
   permiten, pero ninguna de ellas esta en la Coleccion de Ports de
   FreeBSD.

   Comparado con MPlayer xine deja las cosas mas hechas para el
   usuario, pero al mismo tiempo pone mas dificil el control
   exhaustivo sobre todo lo que pasa. El reproductor xine da un mejor
   rendimiento en interfaces XVideo.

   Por omision xine arranca con un intefaz grafico de usuario. Los
   menus pueden usarse para abrir un fichero en concreto:

 % xine

   Tambien puede invocar la aplicacion desde la linea de ordenes para
   que reproduzca un fichero inmediatamente y sin utilizar el GUI:

 % xine -g -p fichero.avi

     --------------------------------------------------------------

    7.4.2.3. Las herramientas transcode

   transcode no es un reproductor, sino una suite de herramientas
   para recodificar (tambien se podria usar la palabra
   <<transcodificar>>, de ahi su nombre) ficheros de sonido y de
   video. Con transcode es posible fundir ficheros de video y reparar
   ficheros deteriorados desde la linea de ordenes y en las
   interfaces de flujo stdin/stdout.

   Puede configurar gran cantidad de opciones en el momento de la
   compilacion de multimedia/transcode; le recomendamos que use la
   siguiente linea de ordenes para compilar transcode:

 # make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
 WITH_MJPEG=yes -DWITH_XVID=yes

   La configuracion que le proponemos deberi satisfacer a la mayoria
   de los usuarios.

   Veamos un ejemplo ilustrativo de las posibilidades de transcode:
   convertir un fichero DivX en un fichero PAL MPEG-1 (PAL VCD):

 % transcode -i input.avi -V --export_prof vcd-pal -o output_vcd
 % mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa

   Puede reproducir el fichero MPEG resultante, output_vcd.mpg, con
   MPlayer. Si quiere tambien puede grabar el fichero en un CD-R y
   tendra un VideoCD, aunque para eso tendra que instalar
   multimedia/vcdimager y sysutils/cdrdao.

   Consulte la pagina de manual de transcode, pero no olvide
   consultar tambien el wiki de transcode, en el que encontrara mas
   informacion y muchos ejemplos.

     --------------------------------------------------------------

  7.4.3. Lecturas adicionales

   El desarrollo de las diversas aplicaciones de video disponibles en
   FreeBSD avanza rapidamente. Es muy posible que en un futuro
   cercano la mayoria de los problemas de los que hemos hablado aqui
   hayan sido resueltos. Mientras tanto quien quiera exprimir las
   capacidades de FreeBSD en las areas del sonido y el video tendran
   que recopilar la informacion repartida en varias FAQ y tutoriales
   y utilizar unos cuantos programas diferentes. En esta seccion se
   le proponen al lector interesado varias fuentes de informacion
   adicional.

   La documentacion de MPlayer contiene una gran cantidad de
   informacion tecnica. Cualquiera que quiera alcanzar un alto grado
   de conocimiento en video sobre UNIX debe consultar esa
   documentacion. La lista de correo de MPlayer es sumamente hostil
   hacia quien no se ha molestado en leer la documentacion antes de
   preguntar, asi que si va a enviar informes de errores a esa lista,
   por favor, lease la documentacion..

   El texto xine HOWTO contiene un capitulo sobre mejora del
   rendimiento que afecta a todos los reproductores.

   Hay unas cuantas aplicaciones muy prometedoras que el lector
   deberia al menos probar:

     * Avifile, que encontrara en los ports:multimedia/avifile.

     * Ogle, tambien en la coleccion de ports: multimedia/ogle.

     * Xtheater

     * multimedia/dvdauthor, una aplicacion libre para la produccion
       de contenidos en DVD.

     --------------------------------------------------------------

7.5. Configuracion de tarjetas de TV

   Texto original de Josef El-Rayes. Ampliado y adaptado por Marc
   Fonvieille.

     --------------------------------------------------------------

  7.5.1. Introduccion

   Las tarjetas de TV le permiten ver en su sistema emisiones de TV
   tradicionales o incluso por cable. La mayoria aceptan video
   compuesto mediante RCA o una entrada de S-video; algunas de estas
   tarjetas incorporan tambien un sintonizador de radio FM.

   FreeBSD puede utilizar tarjetas de TV PCI que tengan el chip
   Brooktree Bt848/849/878/879 o el chip de captura de video Conexant
   CN-878/Fusion 878a gracias al controlador bktr(4). Asegurese de
   que la tarjeta tiene un sintonizador que este soportado: consulte
   la lista de sintonizadores soportados que encontrara en la pagina
   de manual de bktr(4).

     --------------------------------------------------------------

  7.5.2. Anadir el controlador

   Poder usar la tarjeta tendra que cargar el controlador bktr(4).
   Una forma de hacerlo es andir la siguiente linea al fichero
   /boot/loader.conf:

 bktr_load="YES"

   Tambien puede hacerlo compilando estaticamente el soporte para la
   tarjeta de TV en su kernel; anada las siguientes lineas al fichero
   de configuracion de su kernel:

 device   bktr
 device  iicbus
 device  iicbb
 device  smbus

   Es necesario incluir todas esas lineas adicionales porque los
   componentes de la tarjeta estan conectados entre si por un bus
   I2C. Hecho esto compile e instale su nuevo kernel.

   Una vez anadido el soporte de la tarjeta al sistema tendra que
   reiniciar. Durante el arranque deberian aparecer rastros de su
   tarjeta de TV. Veamos un ejemplo:

 bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
 iicbb0: <I2C bit-banging driver> on bti2c0
 iicbus0: <Philips I2C bus> on iicbb0 master-only
 iicbus1: <Philips I2C bus> on iicbb0 master-only
 smbus0: <System Management Bus> on bti2c0
 bktr0: Pinnacle/Miro TV, Philips SECAM tuner.

   Es obvio que estos mensajes seran distintos segun sea el hardware
   del que se trate. Asegurese de que el sistema detecta
   correctamente el sintonizador. Se puede sobreescribir alguno de
   los parametros detectados por el sistema mediante MIB sysctl(8) y
   opciones del fichero de configuracion del kernel. Si por ejemplo
   quiere obligar al sintonizador para que se comporte como un
   Phillips SECAM anada lo siguiente al fichero de configuracion de
   su kernel:

 options OVERRIDE_TUNER=6

   Puede utilizar directamente sysctl(8):

 # sysctl hw.bt848.tuner=6

   Consulte en bktr(4) y en /usr/src/sys/conf/NOTES si necesita mas
   detalles sobre las opciones disponibles.

     --------------------------------------------------------------

  7.5.3. Aplicaciones utiles

   Tendra que instalar una de estas aplicaciones para poder utilizar
   su tarjeta de TV:

     * multimedia/fxtv ofrece <<TV en una ventana>> y captura de
       imagen/sonido/video.

     * multimedia/xawtv: otra aplicacion de TV; ofrece lo mismo que
       fxtv.

     * misc/alevt decodifica y reproduce videotexto y teletexto.

     * audio/xmradio permite utilizar el sintonizador de radio FM que
       incorporan algunas tarjetas de TV.

     * audio/wmtune, una aplicacion de escritorio muy util para el
       uso de sintonizadores de radio.

   Hay mas aplicaciones utiles en la Coleccion de de Ports de
   FreeBSD.

     --------------------------------------------------------------

  7.5.4. Solucion de problemas

   Si tiene algun problema con su tarjeta de TV compruebe en primer
   lugar que el chip de captura de video y el sintonizador realmente
   funcionan con el controlador bktr(4) y si ha utilizado las
   opciones de configuracion mas adecuadas. Si necesita mas ayuda o
   necesita respuestas sobre su tarjeta de TV puede recurrir a la
   lista de correo freebsd-multimedia.

     --------------------------------------------------------------

7.6. Escaneres de imagenes

   Escrito por Marc Fonvieille.

     --------------------------------------------------------------

  7.6.1. Introduccion

   El acceso a escaneres de imagenes en FreeBSD funciona gracias a la
   API SANE (siglas de <<Scanner Access Now Easy>>, <<el acceso a
   escaneres ahora es facil>>), disponible en la Coleccion de Ports
   de FreeBSD. SANE utiliza tambien ciertos controladores de FreeBSD
   para acceder al hardware del escaner.

   FreeBSD puede utilizar tanto escaneres SCSI como USB. Asegurese de
   que el suyo funciona con SANE antes de intentar ningun tipo de
   configuracion. SANE tiene una lista de dispositivos soportados
   donde encontrara informacion actualizada sobre hasta donde
   funciona el escaner y su estatus. La pagina de manual de
   uscanner(4) incluye una listas de escaneres USB que funcionan con
   SANE.

     --------------------------------------------------------------

  7.6.2. Configuracion del kernel

   Como ya se ha dicho tanto los interfaces USB como las SCSI
   funcionan. Segun sea el interfaz de su escaner necesitara un tipo
   diferente de controlador:

     --------------------------------------------------------------

    7.6.2.1. Interfaz USB

   El kernel GENERIC incluye por omision los controladores de
   dispositivo necesarios para poder usar escaneres USB. Si va a
   personalizar su kernel asegurese de que esto esta en el fichero de
   configuracion del mismo:

 device usb
 device uhci
 device ohci
 device uscanner

   Segun cual sea el chipset de su placa base tendra que usar device
   uhci o device ohci, aunque si tiene ambos no tendra problemas por
   eso.

   Si por cualquier motivo no quiere recompilar su kernel y su kernel
   no es el GENERIC puede cargar el modulo controlador de dispositivo
   uscanner(4) con kldload(8):

 # kldload uscanner

   Si quiere cargar este modulo cada vez que arranque el sistema debe
   anadir la siguiente linea a /boot/loader.conf:

 uscanner_load="YES"

   Tras reiniciar con el kernel correcto (o una vez que el modulo
   este cargado) conecte su escaner USB. Debe aparecer en el
   <<buffer>> de mensajes del sistema (dmesg(8)) un mensaje una linea
   como la siguiente:

 uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2

   La linea del ejemplo muestra que nuestro escaner esta utilizando
   el nodo de dispositivo/dev/uscanner0.

     --------------------------------------------------------------

    7.6.2.2. Interfaz SCSI

   Si su escaner tiene un interfaz SCSI es importante saber que
   controladora SCSI incorpora. El chipset SCSI que tenga influira en
   la configuracion del kernel que tenga que personalizar. El kernel
   GENERIC tiene controladores de dispositivo para las controladoras
   SCSI mas comunes. Consulte el fichero NOTES y anada la linea
   correcta al fichero de configuracion de su kernel. Tendra que
   anadir tambien la siguiente linea:

 device scbus
 device pass

   Una vez compilado e instalado el kernel correctamente tiene ya que
   ver sus nuevos dispositivos en el <<buffer>> de mensajes del
   sistema:

 pass2 at aic0 bus 0 target 2 lun 0
 pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
 pass2: 3.300MB/s transfers

   Si su escaner estaba apagado durante el arranque puede forzar
   manualmente la deteccion si ejecuta una busqueda de buses SCSI con
   camcontrol(8):

 # camcontrol rescan all
 Re-scan of bus 0 was successful
 Re-scan of bus 1 was successful
 Re-scan of bus 2 was successful
 Re-scan of bus 3 was successful

   El escaner aparecera en la lista de dispositivos SCSI:

 # camcontrol devlist
 <IBM DDRS-34560 S97B>              at scbus0 target 5 lun 0 (pass0,da0)
 <IBM DDRS-34560 S97B>              at scbus0 target 6 lun 0 (pass1,da1)
 <AGFA SNAPSCAN 600 1.10>           at scbus1 target 2 lun 0 (pass3)
 <PHILIPS CDD3610 CD-R/RW 1.00>     at scbus2 target 0 lun 0 (pass2,cd0)

   Tiene todos los detalles sobre los dispositivos SCSI en las
   paginas de manual de scsi(4) y camcontrol(8).

     --------------------------------------------------------------

  7.6.3. Configuracion de SANE

   El sistema SANE se divide en dos partes: los <<backends>>
   (graphics/sane-backends) y los <<frontends>>
   (graphics/sane-frontends). Los <<backends>> facilitan el acceso al
   escaner propiamente dicho. La lista de dispositivos que funcionan
   con SANE le dira que <<backend>> hara funcionar su escaner de
   imagenes. No hay mas remedio que identificar correctamente el
   <<backend>> de su escaner para poder usarlo. Los <<frontends>>
   ofrecen una interfaz grafica para escanear (xscanimage).

   Lo primero que hay que hacer es instalar el port o package de
   graphics/sane-backends. Despues ejecute la orden sane-find-scanner
   para comprobar el funcionamiento de la deteccion de escaneres del
   sistema SANE:

 # sane-find-scanner -q
 found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3

   En la salida de la orden anterior se le mostrara el tipo de
   interfaz del escaner y el nodo de dispositivo a traves del cual el
   sistema accede a el. Es posible que no aparezcan la marca y el
   modelo, pero eso no tiene importancia.

     Nota: Algunos escaneres USB necesitan que les instale un
     <<firmware>>; esto se explica en la pagina de manual del
     <<backend>> correspondiente. Tambien debe leer las paginas de
     manual sane-find-scanner(1) y sane(7).

   Ahora hay que comprobar que el <<frontend>> de escaneo puede
   identificar el escaner. Por omision los <<backends>> de SANE
   incorporan una herramienta de linea de ordenes llamada
   scanimage(1), que le mostrara una lista de dispositivos e incluso
   una captura de imagen desde la shell. La opcion -L muestra una
   lista de escaners:

 # scanimage -L
 device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner

   Si el software no lanza ningun mensaje, o si el mensaje indica que
   no se han encontrado escaneres significa que scanimage(1) no puede
   identificar su escaner. Si este es el caso tendra que editar el
   fichero de configuracion del <<backend>>y definir en el el escaner
   que quiera utilizar. Encontrara todos los ficheros de
   configuracion de los <<backends>> en el directorio
   /usr/local/etc/sane.d/. Este problema con la identificacion del
   hardware es relativamente frecuente con ciertos modelos de
   escaneres USB.

   Por ejemplo, con el escaner que hemos usado en la Seccion 7.6.2.1
   la orden sane-find-scanner nos da la siguiente informacion:

 # sane-find-scanner -q
 found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0

   El escaner ha sido detectado sin problemas, utiliza el interfaz
   USB y esta conectado al nodo de dispositivo /dev/uscanner0 . Ahora
   comprobaremos que podemos identificar correctamente el escaner:

 # scanimage -L

 No scanners were identified. If you were expecting something different,
 check that the scanner is plugged in, turned on and detected by the
 sane-find-scanner tool (if appropriate). Please read the documentation
 which came with this software (README, FAQ, manpages).

   No hemos podido identificar el escaner, asi que hemos de editar el
   fichero /usr/local/etc/sane.d/epson.conf. Estamos usando el modelo
   de escaner EPSON Perfection(R) 1650, asi que ya sabemos que el
   escaner utilizara el <<backend>> epson. Lea atentamente los
   comentarios que hay en los ficheros de configuracion de los
   <<backends>>. Lo que hay que hacer es muy sencillo: basta con
   comentar las lineas en las que aparecen interfaces que no sean el
   perfecto para su escaner. En nuestro caso comentaremos todas las
   lineas que comiencen por scsi puesto que nuestro escaner tiene
   interfaz USB. Despues de esto hay que anadir una lina al final del
   fichero declarando el interfaz y el nodo de dispositivo que se van
   a usar. En el caso del ejemplo esto es lo que anadimos:

 usb /dev/uscanner0

   Por favor, lea los comentarios que encontrara en el fichero de
   configuracion del <<backend>> y la pangina de manual de del
   <<backend>> si necesita mas informacion sobre la sintaxis que debe
   usar. Hecho esto podemos verificar si ya podemos identificar el
   escaner:

 # scanimage -L
 device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner

   Hemos identificado nuestro escaner USB. Ni tiene importancia si la
   marca y modelo que hemos visto no coinciden con nuestro escaner.
   Lo unico realmente importante es el campo `epson:/dev/uscanner0',
   que nos da el nombre correcto del <<backend>> y el nodo de
   dispositivo correcto.

   Una vez que scanimage -L llega a ver al escaner hemos terminado
   con la configuracion. El dispositivo esta listo para escanear
   imangenes.

   scanimage(1) permite ejecutar una captura de imagen desde la linea
   de ordenes, pero siempre es mejor utilizar un interfaz grafico de
   usuario para estas tareas. SANE ofrece un interfaz grafico simple
   pero eficiente: xscanimage (graphics/sane-frontends).

   Otro <<frontend>> grafico para escanear que se ha hecho muy
   popular es Xsane (graphics/xsane). Este <<frontend>> tiene
   caracteristicas muy avanzadas como varios modos de escaneo
   (fotocopia, fax, etc.), correccion de color, escaneo de imagenes
   por lotes, etc. Ambas aplicaciones pueden utilizarse ademas como
   <<plugins>> de GIMP.

     --------------------------------------------------------------

  7.6.4. Dar acceso al escaner a otros usuarios

   Todo lo que se ha mostrado en esta seccion se ha ejecutado con
   privilegios de root. Lo normal es que haya otros usuarios que
   tengan que tener acceso al escaner. Un usuario que quiera usar el
   escaner tiene que tener acceso de lectura y escritura al nodo de
   dispositivo que usa el escaner. Por ejemplo, nuestro escaner USB
   utiliza el nodo de dispositivo /dev/uscanner0 propiedad del grupo
   operator. Al anadir al usuario joe al grupo operator este podra
   acceder al esc'ner:

 # pw groupmod operator -m joe

   Para mas informacion sobre el uso de pw(8) lea su pagina de
   manual. Tendra tambien que configurar correctamente los permisos
   de escritura (0660 o 0664) en el nodo de dispositivo
   /dev/uscanner0; por omision los miembros del grupo operator solo
   tienen acceso de lectura en este nodo de dispositivo. Anada las
   siguientes lineas al fichero lines to the /etc/devfs.rules:

 [system=5]
 add path uscanner0 mode 660

   Ahora anada lo siguiente a /etc/rc.conf y reinicie la maquina:

 devfs_system_ruleset="system"

   Para mas informacion sobre lo que acaba de leer consulte la pagina
   de manual de devfs(8).

     Nota: Por seguridad deberia pensarse dos veces el hecho mismo de
     anadir cualquier usuario a un grupo y muy especialmente al grupo
     operator.

     --------------------------------------------------------------

            Capitulo 8. Configuracion del kernel de FreeBSD

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

8.1. Sinopsis

   El kernel de FreeBSD es el corazon del sistema operativo. Es el
   responsable de la gestion y control de la memoria, reforzamiento
   de los controles de seguridad, gestion de redes, acceso a
   dispositivos y muchas cosas mas. FreeBSD es un sistema dinamico y
   configurable, pero a veces sigue siendo necesario reconfigurar y
   recompilar un kernel hecho a la medida de nuestras necesidades.

   Una vez leido este capitulo sabra usted:

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

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

     * Como utilizar el fichero de configuracion para crear y
       compilar un nuevo kernel.

     * Como instalar su nuevo kernel.

     * Como resolver algunos problemas si algo sale mal.

     --------------------------------------------------------------

8.2. ?Que razones hay para compilar un kernel personalizado?

   Tradicionalmente FreeBSD ha contado con lo que se conoce como un
   kernel "monolitico". Esto quiere decir que el kernel era un gran y
   unico programa que se comunicaba con una lista previa de
   dispositivos, y que si se deseaba modificar el comportamiento del
   kernel se debia compilar un nuevo kernel y reiniciar el sistema
   con el nuevo kernel.

   Hoy en dia FreeBSD evoluciona muy rapidamente hacia un modelo
   donde la funcionalidad del kernel se basa en modulos, los cuales
   pueden cargarse y descargarse dinamicamente de acuerdo a las
   necesidades del kernel. Esto permite al kernel adaptarse al nuevo
   hardware que sale al mercado (como las tarjetas PCMCIA en sistemas
   portatiles), o bien anadir nuevas funcionalidades al kernel que no
   eran al compilarlo la vez anterior. Esto es lo que conocemos como
   kernel modular.

   A pesar de lo dicho aun es necesario llevar a cabo cierta
   configuracion estatica en la configuracion del kernel. A veces se
   debe a que la funcionalidad del sistema esta tan ligada al kernel
   que no puede hacerse mediante carga dinamica de modulos. En otros
   casos puede tratarse simplemente de que nadie ha programado un
   modulo para esa funcionalidad concreta que pueda cargarse
   dinamicamente en el kernel.

   Compilar un kernel personalizado es uno de los ritos de iniciacion
   mas importantes a los que los usuarios de casi todos los BSD han
   de enfrentarse. Este proceso lleva su tiempo, pero le aportara
   grandes beneficios a su sistema FreeBSD. A diferencia del kernel
   GENERIC, con el que puede funcionar una cantidad apabullante de
   hardware disponible en el mercado, un kernel personalizado
   contiene unicamente lo necesario para que funcione el hardware de
   su sistema. Obviamente esto tiene sus ventajas:

     * Mayor rapidez en el arranque del sistema. Dado que el kernel
       solo tiene que probar el hardware que realmente esta en el
       sistema el tiempo que necesitara para arrancar se reducira
       visiblemente.

     * Menor uso de memoria. Generalmente un kernel personalizado
       utiliza menos memoria que un kernel GENERIC, lo cual es
       importante ya que el kernel debe encontrarse siempre en
       memoria real. Por esta razon un kernel personalizado puede ser
       de gran utilidad en sistemas con una cantidad limitada de
       memoria RAM.

     * Hacer funcionar hardware especifico. Un kernel personalizado
       le permite anadir al sistema dispositivos como tarjetas de
       sonido, que no estan incluidas en el kernel GENERIC.

     --------------------------------------------------------------

8.3. Inventario de hardware del sistema

   Escrito por Tom Rhodes.

   Antes de aventurarnos en la configuracion del kernel nunca esta de
   mas disponer de un inventario completo del hardware que hay en la
   maquina. En los casos en los que FreeBSD no es el sistema
   operativo principal de la maquina puede conseguir el inventario
   consultando la configuracion de otro sistema operativo. Por
   ejemplo, el Gestor de dispositivos de Microsoft suele contener
   informacion importante sobre los dispositivos que haya en la
   maquina. El Gestor de dispositivos esta en el panel de control.

     Nota: Algunas versiones de Microsoft Windows tienen un icono de
     Sistema con forma de pantalla desde el que se puede acceder al
     Gestor de dispositivos.

   Si no hay otro sistema operativo en la maquina el administrador
   tendra que conseguir la informacion por su cuenta. Una forma de
   hacerlo es mediante dmesg(8) y man(1). La mayoria de los
   controladores de dispositivo que hay en FreeBSD tienen una pagina
   de manual, que suele incluir una lista del hardware que puede
   hacer funcionar. En la prueba del sistema durante el arranque va
   apareciendo una lista del harware que hay en la maquina. Por
   ejemplo, las siguientes lineas indican que el controlador psm ha
   encontrado un raton:

 psm0: <PS/2 Mouse> irq 12 on atkbdc0
 psm0: [GIANT-LOCKED]
 psm0: [ITHREAD]
 psm0: model Generic PS/2 mouse, device ID 0

   Puede anadir este controlador al fichero de configuracion de su
   kernel personalizado o cargarlo utilizando loader.conf(5).

   A veces los datos que muestra dmesg solamente muestran mensajes
   del sistema en lugar de la salida de la prueba de arranque. En
   esos casos puede ver la verdadera salida de dmesg en el fichero
   /var/run/dmesg.boot.

   Otro metodo para identificar el hardware del sistema es usar
   pciconf(8), que tiene una salida mucho mas verbosa. Veamos un
   ejemplo:

 ath0@pci0:3:0:0:        class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00
     vendor     = 'Atheros Communications Inc.'
     device     = 'AR5212 Atheros AR5212 802.11abg wireless'
     class      = network
     subclass   = ethernet

   Este fragmento, obtenido con pciconf -lv muestra como el
   controlador ath ha encontrado un dispositivo Ethernet inalambrico.
   Escriba man ath para consultar la pagina de manual de ath(4).

   La opcion -k de man(1) le suministrara valiosa informacion.
   Sigamos con el ejemplo anterior:

 # man -k Atheros

   Con esto obtendremos una lista de paginas de manual que contienen
   esa palabra en particular:

 ath(4)                   - Atheros IEEE 802.11 wireless network driver
 ath_hal(4)               - Atheros Hardware Access Layer (HAL)

   Una vez que tenemos nuestra flamante lista de hardware del sistema
   el proceso de compilar un kernel personalizado deberia parecer un
   poco menos inquietante.

     --------------------------------------------------------------

8.4. Controladores del kernel, subsistemas y modulos

   Antes de compilar un kernel personalizado conviene pensar antes
   los motivos. Si lo que se necesita es anadir hardware especifico
   al sistema es posible que sea posible utilizarlo mediante un
   modulo.

   Los modulos del kernel estan en el directorio /boot/kernel y se
   pueden cargar dinamicamente en un kernel en funcionamiento con
   kldload(8). La mayoria, por no decir todos, los controladores del
   kernel tienen un modulo especifico y una pagina de manual. Por
   ejemplo, en la seccion anterior hablabamos del controlador
   Ethernet inalambrico ath. La pagina de manual de este dispositivo
   contiene la siguiente informacion:

 Alternatively, to load the driver as a module at boot time, place the
      following line in loader.conf(5):

            if_ath_load="YES"

   Si hace lo que dice ahi, es decir, anadir la linea
   if_ath_load="YES" al fichero /boot/loader.conf hara que el modulo
   se cargue dinamicamente cada vez que el sistema arranque.

   Hay casos, no obstante, en los que no existe el modulo
   correspondiente. Esto sucede con ciertos subsistemas y con
   controladores muy importantes, como por ejemplo el de FFS, que
   necesita el kernel. Igual sucede con la posibilidad de utilizar
   redes (INET). Por desgracia, en estos casos la unica forma de
   saber si hace falta un controlador es buscar el modulo.

     AvisoEs sumamente facil quitar un dispositivo o una opcion del
     kernel y encontrarse de manos a boca con un kernel que no
     funciona. Por ejemplo, si elimina el controlador ata(4) del
     fichero de configuracion del kernel un sistema que utilice
     unidades de disco ATA no podra arrancar a menos que se anada la
     linea correspondiente al fichero loader.conf. Si tiene dudas
     busque el modulo y deje el kernel como esta.

     --------------------------------------------------------------

8.5. Compilacion e instalacion de un kernel personalizado

   En primer lugar, hagamos un breve recorrido por el directorio
   donde se lleva a cabo la compilacion del kernel. Todos los
   directorios mencionados hacen referencia al directorio principal,
   que es /usr/src/sys, al que tambien podemos acceder desde /sys.
   Existen gran cantidad de subdirectorios que representan diferentes
   partes del kernel, pero el mas importante para lo que deseamos
   hacer son arch y /conf, que es donde se llevara a cabo la edicion
   del fichero de configuracion y la compilacion propiamente dicha
   del mismo, el punto de partida para la personalizacion del kernel.
   El directorio arch representa la arquitectura del sistema, por lo
   que puede ser i386, alpha, amd64, ia64, powerpc, sparc64 o pc98
   (una arquitectura alternativa, similar a PC y muy popular en
   Japon). Todo lo que existe dentro de un directorio de una
   arquitectura en particular, es especifico para dicha arquitectura;
   el resto del codigo es comun para todas las plataformas en las que
   FreeBSD puede funcionar. Observe la organizacion logica de la
   estructura de los directorios, con cada dispositivo utilizable en
   el sistema, sistema de ficheros y opciones, cada cosa en su propio
   subdirectorio.

   A lo largo de este capitulo asumiremos que esta utilizando la
   arquitectura i386, puesto que sobre ella son los ejemplos que
   vamos a ir exponiendo. Si no es este su caso debe hacer los
   cambios adecuados a su arquitectura de hardware en las rutas que
   vayamos utilizando.

     Nota: Si no existe el directorio /usr/src/sys en su sistema
     quiere decir que no estan instaladas las fuentes del kernel. La
     forma mas sencilla de tenerlas es mediante /stand/sysinstall.
     Como usuario root seleccione Configure, luego Distributions,
     despues src y finalmente sys. Si no le gusta mucho sysinstall y
     tiene acceso a un CDROM "oficial" de FreeBSD puede instalar las
     fuentes por medio de la siguiente linea de ordenes:

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

   Ahora vaya al al directorio arch/conf y copie el fichero de
   configuracion GENERIC con el nombre que desee. Por ejemplo:

 # cd /usr/src/sys/i386/conf
 # cp GENERIC MIKERNEL

   Por tradicion el nombre se escribe con mayusuculas y si tiene
   varias maquinas FreeBSD, con diferente hardware es recomendable
   darle a cada kernel el mismo nombre que la maquina en la que va a
   ejecutarse. En este ejemplo usaremos el nombre de MIKERNEL .

     Sugerencia: Guardar su fichero de configuracion directamente
     bajo el directorio /usr/src, puede que no sea una idea muy
     astuta. Si empieza a tener problemas puede ser muy tentador
     borrar /usr/src y comenzar desde cero. Cinco segundos despues de
     haber hecho esto se dara cuenta de que ha eliminado el fichero
     de configuracion de su kernel, en el que quizas llevaba horas
     trabajando.

     Le proponemos una alternativa: guardar su fichero de
     configuracion cualquier otro sitio y crear un enlace simbolico
     al fichero que hay en el directorio i386.

     Por ejemplo:

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

   Ahora edite el fichero de configuracion MIKERNEL con su editor de
   textos favorito. Si se trata de una instalacion reciente
   probablemente el unico editor disponible sea vi, del cual es
   complicado explicar su uso detallado en este documento, pero
   existen bastantes libros que detallan su uso; puede ver algunos en
   la bibliografia. FreeBSD dispone de un editor de uso muy sencillo,
   llamado ee; si es usted principiante le sera de mucha ayuda.
   Cambie los comentarios al principio del fichero con algo que
   refleje los cambios realizados o al menos para diferenciarlo del
   fichero GENERIC.

   Si ha compilado un kernel en SunOS o algun otro sistema operativo
   BSD seguramente la mayor parte de fichero le sera muy familiar. Si
   viene usted de otros sistemas operativos como DOS, el fichero
   GENERIC puede parecerle intimidante, asi que siga las
   instrucciones descritas en El Fichero de Configuracion
   detenidamente y con sumo cuidado.

     Nota: Asegurese siempre de verificar el fichero
     /usr/src/UPDATING antes de realizar cualquier actualizacion del
     sistema si ha sincronizado sus fuentes para disponer de la
     ultima version de los mismos. En el fichero /usr/src/UPDATING
     esta toda la informacion importante sobre las actualizaciones.
     Al distribuirse con FreeBSD dicha informacion debera estar mas
     actualizada que la que hay en este mismo texto.

   Ahora es momento de llevar a cabo la compilacion del codigo fuente
   del kernel.

   Compilacion del kernel

    1. Vaya al directorio /usr/src:

 # cd /usr/src

    2. Compile el kernel:

 # make buildkernel KERNCONF=MIKERNEL

    3. Instale el nuevo kernel:

 # make installkernel KERNCONF=MIKERNEL

     Nota: Es imprescindible que disponga del codigo fuente completo
     de FreeBSD para poder compilar el kernel.

     Sugerencia: Por omision, si compila un kernel personalizado
     todos los modulos del kernel seran recompilados tambien. Si
     quiere que la actualizacion de su kernel sea mucho mas rapida o
     compilar solamente ciertos modulos personalizados, edite kernel
     modules will be rebuilt as well. /etc/make.conf antes de
     compilar el kernel:

 MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs

     Esta variable crea una lista de modulos listos para ser
     compilados, sin tocar los demas.

 WITHOUT_MODULES = linux acpi sound/sound sound/driver/ds1 ntfs

     Esta variable crea una lista de modulos que seran excluidos del
     proceso de compilacion. Hay otras variables que pueden
     resultarle utiles durante este proceso; consulte la pagina de
     manual de make.conf(5).

   El nuevo kernel se copiara al directorio raiz como /kernel y el
   kernel viejo tendra el nombre de /kernel.old. Ahora reinicie su
   sistema para poder probar su nuevo kernel. En caso de que se
   presente algun problema hay algunos consejos para la resolucion de
   problemas al final de este capitulo. Asegurese de leer la seccion
   que explica como recuperar el sistema en caso de que su kernel no
   quiera arrancar.

     Nota: Ciertos ficheros relacionados con el proceso de arranque,
     como loader(8)y su configuracion, se guardan en /boot. Los
     modulos personalizados o de terceros se suelen guardar en
     /boot/kernel, aunque debe tener presente que es muy importante
     que los modulos y el kernel esten sincronizados. Si intenta usar
     modulos con un kernel para el que no estan destinados puede
     haber errores o incluso producirse intesatabilidades.

     --------------------------------------------------------------

8.6. El fichero de configuracion

   Actualizado a FreeBSD 6.X por Joel Dahl.

   El formato de un fichero de configuracion es bastante simple. Cada
   linea contiene una palabra clave con uno o mas argumentos. Para
   simplificar, hay muchas lineas que solamente contienen un
   argumento. Cualquier cosa detras de un # se considerara un
   comentario y en consecuencia sera ignorado. Las siguientes
   secciones describen todas las palabras clave en el orden en el que
   aparecen en GENERIC. Si quiere una lista exhaustiva de de opciones
   dependientes de arquitectura y de dispositivos puede consultar el
   fichero NOTES en el mismo directorio donde esta el fichero
   GENERIC. Si quiere ver las opciones independientes de arquitectura
   consulte /usr/src/sys/conf/NOTES.

     Nota: Puede generar un fichero que contenga todas las opciones
     disponibles en un kernel. Esto es algo que solamente se usa para
     hacer pruebas. Si quiere generarlo ejecute, como root, lo
     siguiente:

 # cd /usr/src/sys/i386/conf && make LINT

   A continuacion veremos un ejemplo de fichero de configuracion de
   un kernel GENERIC al que se han anadido comentarios adicionales
   donde se ha visto que era necesario abundar un poco para mayor
   claridad. Este ejemplo es igual (o, en el peor de los casos, casi
   igual) que la copia del mismo que tiene usted en
   /usr/src/sys/i386/conf/GENERIC.

 machine         i386

   Esta es la arquitectura de la maquina. Debe ser alpha, amd64,
   i386, ia64, pc98, powerpc o sparc64.

 cpu          I486_CPU
 cpu          I586_CPU
 cpu          I686_CPU

   Las opciones anteriores definen el tipo de CPU que haya en su
   sistema. Puede dejar varias lineas de CPU (si, por ejemplo, no
   esta seguro de usar I586_CPU o I686_CPU), pero si esta
   personalizando su kernel es mucho mejor que solamente ponga la CPU
   que tenga. Si no esta seguro de la CPU que tiene busque en los
   mensajes de arranque que se guardan en /var/run/dmesg.boot.

 ident          GENERIC

   Este es el identificador del kernel. Modifiquelo para que cuadre
   con el nombre que le haya dado a su kernel, es decir, MIKERNEL si
   ha seguido los ejemplos anteriores. El valor que asigne a la
   cadena ident sera el que se muestre cuando arranque con su kernel,
   asi que es util darle a su kernel un nombre distintivo que permita
   distinguirlo facilmente de otros, por ejemplo, si esta compilando
   un kernel experimental.

 #To statically compile in device wiring instead of /boot/device.hints
 #hints          "GENERIC.hints"         # Default places to look for devices.

   device.hints(5) se usa para configurar opciones de controladores
   de dispositivo. La ubicacion por defecto en la que loader(8)
   buscara durante el arranque es /boot/device.hints. Si usa la
   opcion hints puede compilar el contenido de device.hints en su
   kernel, lo que hara innecesario crear ese fichero en /boot.

 makeoptions     DEBUG=-g          # Build kernel with gdb(1) debug symbols

   El proceso normal de compilacion en FreeBSD incluye informacion de
   depuracion de errores si se compila un kernel con la opcion -g,
   que activa la informacion de depuracion de errores al pasar a
   gcc(1).

 options          SCHED_4BSD         # 4BSD scheduler

   El planificador de tareas tradicional y por omision de FreeBSD.
   Dejelo como esta.

 options          PREEMPTION         # Enable kernel thread preemption

   Permite que hilos que estan en el kernel puedan asociarse con
   hilos cuya prioridad sea mas alta. Ayuda con la interactividad y
   permite que los hilos interrumpidos puedan ejecutarse antes en
   lugar de tener que esperar.

 options          INET              # InterNETworking

   Networking. Deje esto como esta, incluso si no tiene en mente
   conectar la maquina a una red. Muchos programas necesitan al menos
   disponer de lo que se llama <<loopback networking>> (esto es,
   poder efectuar conexiones de red con su propia maquina) asi que
   tener esto es obligatorio.

 options          INET6             # IPv6 communications protocols

   Activa los protocolos de comunicacion IPv6.

 options          FFS               # Berkeley Fast Filesystem

   El sistema de ficheros basico para discos duros. Debe dejarlo como
   esta si pretende poder arrancar desde disco duro.

 options          SOFTUPDATES       # Enable FFS Soft Updates support

   Activa Soft Updates en el kernel, lo que acelerara los accesos de
   escritura a sus discos. Esta funcionalidad la facilita el kernel,
   pero debe activarse para cada disco de forma especifica. Revise la
   salida de mount(8) y vera si Soft Updates esta activado en los
   discos de su sistema. Si no aparece la opcion soft-updates
   activela mediante tunefs(8) (para sistemas de ficheros ya
   existentes) o newfs(8) (en el caso de sistemas de ficheros
   nuevos).

 options          UFS_ACL           # Support for access control lists

   Esta opcion activa en el kernel las listas de control de acceso.
   Consiste en el uso de atributos extendidos y UFS2 junto con las
   caracteristicas que se describen detalladamente en la Seccion
   14.12. Las ACL por omision estan activadas, y no deben
   desactivarse del kernel una vez que hayan sido usadas en un
   sistema de ficheros puesto que eliminara las listas de control de
   acceso y el modo en el que se protegen esos ficheros de un modo
   totalmente fuera de control.

 options          UFS_DIRHASH       # Improve performance on big directories

   This option includes functionality to speed up disk operations on
   large directories, at the expense of using additional memory. You
   would normally keep this for a large server, or interactive
   workstation, and remove it if you are using FreeBSD on a smaller
   system where memory is at a premium and disk access speed is less
   important, such as a firewall.

 options          MD_ROOT           # MD is a potential root device

   Esta opcion permite que la particion raiz este en un disco virtual
   basado en memoria.

 options          NFSCLIENT         # Network Filesystem Client
 options          NFSSERVER         # Network Filesystem Server
 options          NFS_ROOT          # NFS usable as /, requires NFSCLIENT

   NFS, el sistema de ficheros en red. Salvo que tenga intencion de
   montar particiones de sistemas de ficheros UNIX de un servidor a
   traves de TCP/IP puede comentar estas opciones.

 options          MSDOSFS           # MSDOS Filesystem

   El sistema de ficheros MS-DOS. Salvo que tenga en mente montar
   particiones de disco duro con formato DOS durante el arranque
   puede comentar esta opcion. En caso de necesidad esta
   funcionalidad se cargara automaticamente. Tambien tiene a su
   emulators/mtools, que le permitira acceder a disquetes DOS sin
   tener que montarlos y desmontarlos (y ni siquiera requiere
   MSDOSFS).

 options          CD9660            # ISO 9660 Filesystem

   El sistema de ficheros ISO 9660 para CDROM. Comentelo si no tiene
   unidad CDROM o solamente monta CD muy de vez en cuando; cuando lo
   necesite el sistema lo cargara dinamicamente. Los CD de sonido no
   utilizan este sistema de ficheros.

 options          PROCFS            # Process filesystem (requires PSEUDOFS)

   El sistema de ficheros de procesos. Es un sistema de ficheros
   "simulado" que se monta en /proc y permite a programas como ps(1)
   suministrar mas informacion sobre que procesos estan ejecutandose.
   En la mayoaria de los casos no es necesario usar PROCFS, puesto
   que la mayoria de las herramientas de monitorizacion y depuracion
   han sido adaptadas para que funcionen sin PROCFS. De hecho aunque
   lo instale el sistema no lo montara por omision.

 options          PSEUDOFS          # Pseudo-filesystem framework

   Los kernel 6.X pueden usar PSEUDOFS al utilizar PROCFS.

 options          GEOM_GPT          # GUID Partition Tables.

   Con esta opcion se puede tener una gran cantidad de particiones en
   un unico disco.

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

   Compatibilidad con 4.3BSD. Dejelo como esta; ciertos programas
   pueden comportarse de formas muy extranas si comenta esta opcion.

 options          COMPAT_FREEBSD4   # Compatible with FreeBSD4

   FreeBSD 5.X en sistemas i386 y Alpha necesita esta opcion para
   poder usar aplicaciones compiladas en versiones antiguas de
   FreeBSD que utilizan, por tanto, llamadas al sistema mas antiguas.
   Esta opcion no es necesaria en plataformas en las que funciona
   FreeBSD desde 5.X, como ia64 y Sparc64.

 options          COMPAT_FREEBSD5   # Compatible with FreeBSD5

   Esta opcion hace falta en sistemas FreeBSD 6.X y versiones
   posteriores para poder ejecutar aplicaciones compiladas en
   FreeBSD 5.X, que usan interfaces de llamada al sistema
   FreeBSD 5.X.

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

   Hace que el kernel haga una pausa de 5 segundos antes de probar
   los dispositivos SCSI del sistema. Si solamente tiene discos IDE
   puede ignorar esta opcion, o tambien puede asignarle un valor
   menos para evitar el retardo en el arranque. Si lo hace y FreeBSD
   tiene problemas para reconocer dispositivos SCSI en el sistema es
   obvio que tendra que incrementar el valor.

 options          KTRACE            # ktrace(1) support

   Activa las trazas en el kernel, algo muy util para la depuracion
   de errores.

 options          SYSVSHM           # SYSV-style shared memory

   Facilita memoria compartida System V. El uso mas habitual es la
   extension XSHM de X, que utiliza la mayoria de programas que hacen
   uso intensivo de los graficos para incrementar la velocidad. Si
   usa X es casi seguro que le vendra bien esta opcion.

 options          SYSVMSG           # SYSV-style message queues

   Mensajes System V. Esta opcion anade solamente unos cuantos bytes
   al kernel.

 options          SYSVSEM           # SYSV-style semaphores

   Semaforos System V. No es demasiado frecuente que se utilicen,
   pero solamente anaden unos cuantos cientos de bytes al kernel.

     Nota: La opcion -p de ipcs(1) le mostrara una lista de procesos
     que esten utilizando caracteristicas System V.

 options              _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions

   Extensiones en tiempo real anadidas en 1993 POSIX(R). Ciertas
   aplicaciones de la Coleccion de Ports las utilizan, por ejemplo
   StarOffice.

 options          KBD_INSTALL_CDEV  # install a CDEV entry in /dev

   This option is required to allow the creation of keyboard device
   nodes in /dev.

 options          ADAPTIVE_GIANT    # Giant mutex is adaptive.

   Giant es un mecanismo de exclusion mutua (<<sleep mutex>>) que
   protege un gran conjunto de recursos del kernel. Hoy en dia no es
   asumible tener un cuello de botella asi por el impacto que tiene
   en el rendimiento, asi que esta siendo reemplazado por bloqueos
   que protegen los recursos de manera individual. ADAPTIVE_GIANT
   hace que Giant sea incluido en un conjunto de <<mutextes>> que va
   rotando Esto es, cuando un hilo quiere bloquear el Giant mutex
   (pero ya esta bloqueado por un hilo de otra CPU) el primer hilo
   seguira ejecutandose a la espera de que se libere el bloqueo.
   Generalmente el hilo volvera al estado de reposo y esperara hasta
   que aparezca otra oportunidad de ejecutarse. Si no esta seguro de
   lo que esta haciendo es mejor que deje esta opcion tal y como
   esta.

     Nota: Tenga en cuenta que en FreeBSD 8.0-CURRENT y versiones
     siguientes todos los <<mutexes>> son adaptables por omision,
     salvo que se use la opcion NO_ADAPTIVE_MUTEXES. El resultado
     evidente que es Giant es adaptable por omision, asi que la
     opcion ADAPTIVE_GIANT ha sido eliminada de la configuracion.

 device          apic               # I/O APIC

   El dispositivo apic activa la E/S APIC en la entrega de
   interrupciones. El dispositivo apic puede usarse tanto en kernels
   para un procesador (UP) como para sistemas multiprocesador (SMP).
   Si anada options SMP funcionara en sistemas multiprocesador.

     Nota: El dispositivo apic existe solamente en la arquitectura
     i386, de modo que no debe usarse esta linea en otras
     arquitecturas.

 device          eisa

   Use esta opcion si tiene una placa base EISA. Activa la deteccion
   automatica y permite la configuracion de todos los dispositivos
   que esten en el bus EISA.

 device          pci

   Use esta opcion si tiene una placa PCI. Permite la deteccion
   automatica de tarjetas PCI y permite la configuracion entre el bus
   ISA y el PCI.

 # Floppy drives
 device          fdc

   Este dispositivo es el controlador de la unidad de disquetes.

 # ATA and ATAPI devices
 device          ata

   Este controlador permite utilizar dispositivos ATA y ATAPI. Si
   anade al kernel one device ata este detectara cualquier
   dispositivo ATA/ATAPI PCI que conecte a una maquina moderna.

 device          atadisk                 # ATA disk drives

   Si usa device ata tendra que anadir tambien esto para poder usar
   unidades de disco ATA.

 device          ataraid                 # ATA RAID drives

   Si usa device ata tendra que anadir tambien esto para poder usar
   unidades de disco ATA RAID.

 device          atapicd                 # ATAPI CDROM drives

   Si usa device ata tendra que anadir tambien esto para poder usar
   unidades ATAPI CDROM.

 device          atapifd                 # ATAPI floppy drives

   Si usa device ata tendra que anadir tambien esto para poder usar
   unidades de disquete ATAPI.

 device          atapist                 # ATAPI tape drives

   Si usa device ata tendra que anadir tambien esto para poder usar
   unidades de cinta ATAPI.

 options         ATA_STATIC_ID           # Static device numbering

   Con esta opcion hace que el numero de controladores sea estatico;
   si no se usa los numeros de dispositivo se asignan dinamicamente.

 # SCSI Controllers
 device          ahb        # EISA AHA1742 family
 device          ahc        # AHA2940 and onboard AIC7xxx devices
 options         AHC_REG_PRETTY_PRINT    # Print register bitfields in debug
                                         # output.  Adds ~128k to driver.
 device          ahd        # AHA39320/29320 and onboard AIC79xx devices
 options         AHD_REG_PRETTY_PRINT    # Print register bitfields in debug
                                         # output.  Adds ~215k to driver.
 device          amd        # AMD 53C974 (Teckram DC-390(T))
 device          isp        # Qlogic family
 #device         ispfw      # Firmware for QLogic HBAs- normally a module
 device          mpt        # LSI-Logic MPT-Fusion
 #device         ncr        # NCR/Symbios Logic
 device          sym        # NCR/Symbios Logic (newer chipsets + those of `ncr')
 device          trm        # Tekram DC395U/UW/F DC315U adapters

 device          adv        # Advansys SCSI adapters
 device          adw        # Advansys wide SCSI adapters
 device          aha        # Adaptec 154x SCSI adapters
 device          aic        # Adaptec 15[012]x SCSI adapters, AIC-6[23]60.
 device          bt         # Buslogic/Mylex MultiMaster SCSI adapters

 device          ncv        # NCR 53C500
 device          nsp        # Workbit Ninja SCSI-3
 device          stg        # TMC 18C30/18C50

   Controladoras SCSI. Comentelas si no las tiene en su sistema. Si
   en su sistema tiene solamente unidades IDE puede borrarlas todas.
   Las lineas *_REG_PRETTY_PRINT son opciones de depuracion de
   errores de sus respectivos controladores de dispositivo.

 # SCSI peripherals
 device          scbus      # SCSI bus (required for SCSI)
 device          ch         # SCSI media changers
 device          da         # Direct Access (disks)
 device          sa         # Sequential Access (tape etc)
 device          cd         # CD
 device          pass       # Passthrough device (direct SCSI access)
 device          ses        # SCSI Environmental Services (and SAF-TE)

   Perifericos SCSI. Estos tambien puede borrarlos sin problemas si
   no los tiene en su sistema o si solamente tiene hardware IDE.

     Nota: El controlador USB umass(4) (y unos cuantos controladores
     mas) utilizan el subsistema SCSI aunque no sean dispositivos
     SCSI reales. No elimine el subsistema SCSI del kernel si va a
     utilizar cualquiera de estos controladores.

 # RAID controllers interfaced to the SCSI subsystem
 device          amr        # AMI MegaRAID
 device          arcmsr     # Areca SATA II RAID
 device          asr        # DPT SmartRAID V, VI and Adaptec SCSI RAID
 device          ciss       # Compaq Smart RAID 5*
 device          dpt        # DPT Smartcache III, IV - See NOTES for options
 device          hptmv      # Highpoint RocketRAID 182x
 device          rr232x     # Highpoint RocketRAID 232x
 device          iir        # Intel Integrated RAID
 device          ips        # IBM (Adaptec) ServeRAID
 device          mly        # Mylex AcceleRAID/eXtremeRAID
 device          twa        # 3ware 9000 series PATA/SATA RAID

 # RAID controllers
 device          aac        # Adaptec FSA RAID
 device          aacp       # SCSI passthrough for aac (requires CAM)
 device          ida        # Compaq Smart RAID
 device          mfi        # LSI MegaRAID SAS
 device          mlx        # Mylex DAC960 family
 device          pst        # Promise Supertrak SX6000
 device          twe        # 3ware ATA RAID

   Controladoras RAID que pueden utilizarse en FreeBSD. Si no las
   tiene en su sistema puede borrarlas.

 # atkbdc0 controls both the keyboard and the PS/2 mouse
 device          atkbdc     # AT keyboard controller

   El controlador de teclado (atkbdc) ofrece servicios de E/S con
   teclados AT y ratones PS/2. El controlador de teclado (atkbd) y el
   controlador de raton PS/2 (psm) necesitan este dispositivo.

 device          atkbd      # AT keyboard

   El controlador atkbd, junto con el controlador atkbdc, permiten
   utilizar el teclado AT 84 u otros tipos de teclados AT mejorados
   que se conecten mediante el controlador de teclado AT.

 device          psm        # PS/2 mouse

   Utilice este dispositivo si conecta su raton en el puerto PS/2.

 device          kbdmux        # keyboard multiplexer

   Funcionalidad basica para multiples teclados. Si no tiene en mente
   usar mas de un teclado en el sistema puede borrar esta linea sin
   mayor problema.

 device          vga        # VGA video card driver

   El controlador de la tarjeta grafica.

 device          splash     # Splash screen and screen saver support

   <<Splash screen>> en el arranque. Los salvapantallas necesitan
   este dispositivo.

 # syscons is the default console driver, resembling an SCO console
 device          sc

   sc por omision es el controlador de dispositivo de la consola; se
   parece mucho a una consola de SCO. Dado que muchos programas de
   pantalla completa acceden a la consola a traves de la biblioteca
   de bases de datos de terminal termcap no tiene demasiada
   importancia si usa vt, el controlador de consola compatible VT220.
   Cuando acceda al sistema asigne a su variable TERM el valor
   scoansisi los programas a pantalla completa tienen algun problema
   para acceder a la consola.

 # Enable this for the pcvt (VT220 compatible) console driver
 #device          vt
 #options         XSERVER          # support for X server on a vt console
 #options         FAT_CURSOR       # start with block cursor

   El controlador de dispositivo VT220-compatible; es compatible con
   VT100/102, anterior a el. Funciona bien en ciertos sistemas
   portatiles que adolecen de incompatibilidad de harware con sc.
   Asigne a su variable de entorno TERM el valor vt100 o vt220 cuando
   acceda al sistema. Este controlador le puede ser de utilidad si
   tiene que acceder a gran cantidad de maquinas a traves de una red,
   una situacion en la que suele suceder que termcap o terminfo no
   estan ahi para que las use sc. vt100, por el contrario, deberia
   aparecer en praticamente cualquier plataforma.

 device          agp

   Utilice esta opcion si tiene en el sistema una tarjeta AGP.
   Activara AGP y tambien AGP GART si su tarjeta puede usarla.

 # Power management support (see NOTES for more options)
 #device          apm

   Gestion avanzada de la energia. Muy util en sistemas portatiles.
   Viene desactivada por omision en el kernel GENERIC .

 # Add suspend/resume support for the i8254.
 device           pmtimer

   Controlador del reloj para eventos de gestion de la energia, como
   APM y ACPI.

 # PCCARD (PCMCIA) support
 # PCMCIA and cardbus bridge support
 device          cbb               # cardbus (yenta) bridge
 device          pccard            # PC Card (16-bit) bus
 device          cardbus           # CardBus (32-bit) bus

   Dispositivos PCMCIA. Si el sistema es portatil necesita tener esto
   activado.

 # Serial (COM) ports
 device          sio               # 8250, 16[45]50 based serial ports

   Estos son los puertos serie a los que se conoce como puertos COM
   en entornos MS-DOS/Windows.

     Nota: Si tiene un modem interno en COM4 un puerto serie en COM2
     tendra que asignar a la IRQ del modem el 2 (por razones tecnicas
     ignotas IRQ2 = IRQ 9) para que pueda acceder al dispositivo
     desde FreeBSD. Si tiene una tarjeta serie multipuerto consulte
     la pagina de manual de sio(4) si quiere mas detalles sobre los
     valores que debe anadir a /boot/device.hints. Algunas tarjetas
     graficas (sobre todo las que usan chips S3) utilizan direcciones
     IO del tipo 0x*2e8 y dado que muchas tarjetas serie de baja
     calidad no decodifican correctamente el espacio de direcciones
     de 16 bits chocan con estas tarjetas, haciendo que el puerto
     COM4 sea practicamente inutil.

     Es necesario que cada puerto serie tenga una IRQ unica (salvo
     que use una tarjeta multipuerto que permita compartir
     interrupciones), asi que las IRQ de COM3 y de COM4 no se pueden
     utilizar.

 # Parallel port
 device          ppc

   El interfaz del puerto paralelo de bus ISA.

 device          ppbus      # Parallel port bus (required)

   El bus del puerto paralelo.

 device          lpt        # Printer

   Permite usar el puerto paralelo para conectar impresoras.

     Nota: Necesitara disponer de los tres anteriores para poder
     utilizar impresoras mediante el puerto paralelo.

 device          plip       # TCP/IP over parallel

   Este controlador es para la interfaz de red a traves del puerto
   paralelo.

 device          ppi        # Parallel port interface device

   La E/S de proposito general (conocida tambien como "puerto geek")
   + E/S IEEE1284.

 #device         vpo        # Requires scbus and da

   Este dispositivo se usa con unidades Iomega Zip. Necesita scbus y
   da . El mejor rendimiento se alcanza con el uso de los puertos en
   modo EPP 1.9.

 #device         puc

   Puede utilizar este dispositivo si tiene una tarjeta PCI "tonta"
   (por puerto serie o paralelo) que funcione mediante el controlador
   puc(4).

 # PCI Ethernet NICs.
 device          de         # DEC/Intel DC21x4x ("Tulip")
 device          em         # Intel PRO/1000 adapter Gigabit Ethernet Card
 device          ixgb       # Intel PRO/10GbE Ethernet Card
 device          txp        # 3Com 3cR990 ("Typhoon")
 device          vx         # 3Com 3c590, 3c595 ("Vortex")

   Diversos controladores para tarjetas de red PCI. Puede borrar
   todas las que no esten en su sistema.

 # PCI Ethernet NICs that use the common MII bus controller code.
 # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs!
 device          miibus     # MII bus support

   El poder utilizar bus MII es necesario para ciertas tarjetas
   Ethernet PCI 10/100, mas concretamente las que usan transceptores
   compatibles con MII o implementan interfaces de control de
   transceptores que funcionan como si fueran MII. Si incluye device
   miibus al kernel dispondra de la API miibus generica y todos los
   controladores PHY, incluyendo uno que hara funcionar hardware que,
   siendo del tipo PHY, no esta bajo ninguno de los controladores PHY
   especificos.

 device          bce        # Broadcom BCM5706/BCM5708 Gigabit Ethernet
 device          bfe        # Broadcom BCM440x 10/100 Ethernet
 device          bge        # Broadcom BCM570xx Gigabit Ethernet
 device          dc         # DEC/Intel 21143 and various workalikes
 device          fxp        # Intel EtherExpress PRO/100B (82557, 82558)
 device          lge        # Level 1 LXT1001 gigabit ethernet
 device          msk        # Marvell/SysKonnect Yukon II Gigabit Ethernet
 device          nge        # NatSemi DP83820 gigabit ethernet
 device          nve        # nVidia nForce MCP on-board Ethernet Networking
 device          pcn        # AMD Am79C97x PCI 10/100 (precedence over 'lnc')
 device          re         # RealTek 8139C+/8169/8169S/8110S
 device          rl         # RealTek 8129/8139
 device          sf         # Adaptec AIC-6915 ("Starfire")
 device          sis        # Silicon Integrated Systems SiS 900/SiS 7016
 device          sk         # SysKonnect SK-984x & SK-982x gigabit Ethernet
 device          ste        # Sundance ST201 (D-Link DFE-550TX)
 device          stge       # Sundance/Tamarack TC9021 gigabit Ethernet
 device          ti         # Alteon Networks Tigon I/II gigabit Ethernet
 device          tl         # Texas Instruments ThunderLAN
 device          tx         # SMC EtherPower II (83c170 "EPIC")
 device          vge        # VIA VT612x gigabit ethernet
 device          vr         # VIA Rhine, Rhine II
 device          wb         # Winbond W89C840F
 device          xl         # 3Com 3c90x ("Boomerang", "Cyclone")

   Controladores que utilizan el codigo del controlador de bus MII.

 # ISA Ethernet NICs.  pccard NICs included.
 device          cs         # Crystal Semiconductor CS89x0 NIC
 # 'device ed' requires 'device miibus'
 device          ed         # NE[12]000, SMC Ultra, 3c503, DS8390 cards
 device          ex         # Intel EtherExpress Pro/10 and Pro/10+
 device          ep         # Etherlink III based cards
 device          fe         # Fujitsu MB8696x based cards
 device          ie         # EtherExpress 8/16, 3C507, StarLAN 10 etc.
 device          lnc        # NE2100, NE32-VL Lance Ethernet cards
 device          sn         # SMC's 9000 series of Ethernet chips
 device          xe         # Xircom pccard Ethernet

 # ISA devices that use the old ISA shims
 #device         le

   Controladores Ethernet ISA. Consulte /usr/src/sys/i386/conf/NOTES
   para mas detalles sobre que tarjetas hace funcionar que
   controlador.

 # Wireless NIC cards
 device          wlan            # 802.11 support

   802.11 generico. Necesitara esta linea si va a usar redes
   inalambricas.

 device          wlan_wep        # 802.11 WEP support
 device          wlan_ccmp       # 802.11 CCMP support
 device          wlan_tkip       # 802.11 TKIP support

   Criptografia en dispositivos 802.11. Necesita estas lineas si
   quiere utilizar criptografia y protocolos de seguridad 802.11.

 device          an         # Aironet 4500/4800 802.11 wireless NICs.
 device          ath             # Atheros pci/cardbus NIC's
 device          ath_hal         # Atheros HAL (Hardware Access Layer)
 device          ath_rate_sample # SampleRate tx rate control for ath
 device          awi        # BayStack 660 and others
 device          ral        # Ralink Technology RT2500 wireless NICs.
 device          wi         # WaveLAN/Intersil/Symbol 802.11 wireless NICs.
 #device         wl         # Older non 802.11 Wavelan wireless NIC.

   Diversas tarjetas inalambricas.

 # Pseudo devices
 device   loop          # Network loopback

   El dispositivo de <<loopback>> para TCP/IP. Si accede por telnet o
   FTP or FTP to localhost tambien conocido como 127.0.0.1) lo hara a
   traves de este dispositivo. Es imprescindible tenerlo en el
   sistema.

 device   random        # Entropy device

   Generador de numeros criptograficamente seguro.

 device   ether         # Ethernet support

   ether solo es necesario si tiene alguna tarjeta Ethernet. Incluye
   codigo generico del protocolo Ethernet.

 device   sl            # Kernel SLIP

   sl permite utilizar SLIP. Ha sido sustituido casi totalmente por
   PPP, que es mas facil de usar, esta mejor capacitado para la
   conexion de modem a modem y es, en general, claramente mejor.

 device   ppp           # Kernel PPP

   Este dispositivo incluye en el kernel la capacidad de gestionar
   conexiones de llamada entrante <<dial-up>>. Hay tambien una
   version de PPP implementada como aplicacion de usuario; utiliza
   tun y ofrece mas flexibilidad y caracteristicas como la llamada
   bajo peticion.

 device   tun           # Packet tunnel.

   Este dispositivo lo usa el software PPP de usuario. Consulte la
   seccion sobre PPP de este mismo libro.

 device   pty           # Pseudo-ttys (telnet etc)

   Este dispositivo es una "pseudoterminal", o un puerto de entrada
   al sistema simulado. Se usa en sesiones entrantes de telnet y
   rlogin; tambien lo usan xterm y otras aplicaciones, entre las que
   encontramos a Emacs.

 device   md            # Memory "disks"

   Pseudodispositivos de disco basados en memoria.

 device   gif           # IPv6 and IPv4 tunneling

   Este dispositivo implementa tuneles de IPv6 sobre IPv4, IPv4 sobre
   IPv6, IPv4 sobre IPv4 e IPv6 sobre IPv6. El dispositivo gif se
   puede clonar a si mismo, asi que los nodos de dispositivo se van
   creando a medida que van haciendo falta.

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

   Este pseudodispositivo captura paquetes que se le hayan enviado y
   los dirige hacia el daemon de traduccion IPv4/IPv6.

 # The `bpf' device enables the Berkeley Packet Filter.
 # Be aware of the administrative consequences of enabling this!
 # Note that 'bpf' is required for DHCP.
 device   bpf           # Berkeley packet filter

   El filtro de paquetes de Berkeley. Este pseudodispositivo permite
   poner interfaces de red en modo promiscuo, lo que significa que
   capturan todos los paquetes que circulen por una red broadcast
   (por ejemplo una Ethernet). Dichos paquetes pueden guardarse en
   disco para su posterior examen mediante tcpdump(1) (el analisis
   con tcpdump(1) no puede hacerse directamente tambien).

     Nota: El dispositivo bpf(4) tambien lo usa dhclient(8) para
     obtener direcciones IP del encaminador (gateway) por omision. Si
     usa DHCP deje esta opcion como esta.

 # USB support
 device          uhci          # UHCI PCI->USB interface
 device          ohci          # OHCI PCI->USB interface
 device          ehci          # EHCI PCI->USB interface (USB 2.0)
 device          usb           # USB Bus (required)
 #device         udbp          # USB Double Bulk Pipe devices
 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
 device          ural          # Ralink Technology RT2500USB wireless NICs
 device          urio          # Diamond Rio 500 MP3 player
 device          uscanner      # Scanners
 # USB Ethernet, requires mii
 device          aue           # ADMtek USB Ethernet
 device          axe           # ASIX Electronics USB Ethernet
 device          cdce          # Generic USB over Ethernet
 device          cue           # CATC USB Ethernet
 device          kue           # Kawasaki LSI USB Ethernet
 device          rue           # RealTek RTL8150 USB Ethernet

   Diversos dispositivos USB.

 # FireWire support
 device          firewire      # FireWire bus code
 device          sbp           # SCSI over FireWire (Requires scbus and da)
 device          fwe           # Ethernet over FireWire (non-standard!)

   Diversos dispositivos Firewire.

   Tiene mas informacion y una lista con mas dispositivos que
   funcionan en FreeBSD consulte /usr/src/sys/i386/conf/NOTES.

     --------------------------------------------------------------

  8.6.1. Configuraciones con grandes cantidades de memoria (PAE)

   Las maquinas que tienen configuraciones con grandes cantidades de
   memoria necesitan acceder a mas de 4 gigabytes de espacio de
   direcciones KVA (User+Kernel Virtual Address). Debido a esta
   limitacion Intel anadio a las CPU Pentium Pro y modelos
   posteriores la posibilidad de acceso al espacio de direcciones
   fisicas de 36 bits.

   PAE (Physical Address Extension) a las CPU Intel Pentium Pro y los
   modelos posteriores configuraciones de memoria de hasta 64
   gigabytes. Para poder aprovechar esto en FreeBSD existe la opcion
   del kernel PAE, disponible en todas las versiones modernas de
   FreeBSD. A causa de esta limitacion de memoria en los Intel no hay
   nada que distinga de algun modo la memoria situada por debajo del
   limite de los 4 gigabytes. La memoria que este por encima de los 4
   gigabytes se coloca en el <<pool>> de memoria disponible.

   Si quiere activar PAE en el kernel tiene que anadir la siguiente
   liinea al fichero de configuracion del kernel:

 options             PAE

     Nota: En FreeBSD PAE solamente existe en procesadores Intel
     IA-32. Hemos de advertirle de que PAE no ha sido probado todo lo
     necesario, asi que debe considerarse de calidad beta, sobre todo
     si se le compara con otras caracteristicas de FreeBSD.

   PAE en FreeBSD tiene varias limitaciones:

     * Un solo proceso no puede acceder a mas de 4 gigabytes de
       espacio VM.

     * No puede cargar modulos KLD en un kernel que tenga PAE
       activado debido a las diferencias existentes entre el
       <<framework>> de compilacion del modulo y el del kernel mismo.

     * Los controladores de dispositivo que utilizan el interfaz
       bus_dma(9) pueden provocar corrupcion de datos en un kernel
       con PAE activado, una excelente razon para no utilizarlos.
       Esta es la razon de que FreeBSD incorpore un fichero de
       configuracion de un kernel PAE del que se han extraido todos
       los modulos que se sabe que no funcionan en un kernel con PAE
       activado.

     * Algunos <<system tunables>> determinan el uso de recursos de
       memoria basandose en la memoria fisica disponible. Estos
       <<tunables>> pueden asignar mas memoria de la que realmente
       debieran debido a que el sistema PAE esta intimamente ligado a
       cantidades bastante importantes de memoria. Un ejemplo de esto
       es la sysctl kern.maxvnodes, que controla el numero maximo de
       vnodes permitidos en el kernel. Le recomendamos que ajuste
       este y otros tunables dentro valores razonables.

     * Es posible que tenga que aumentar el espacio virtual de
       direcciones del kernel (el KVA) o reducir la cantidad de
       recursos exclusivos del kernel que se utilicen exhaustivamente
       (ver mas arriba) para evitar que KVA literalmente se ahogue.
       La opcion del kernel KVA_PAGES permite incrementar el espacio
       KVA.

   Si quiere saber mas sobre la estabilidad del sistema consulte la
   pagina de manual de tuning(7). La pagina de manual de pae(4)
   contiene informacion actualizada sobre PAE y FreeBSD.

     --------------------------------------------------------------

8.7. Que hacer si algo va mal

   Hay cuatro categorias de problemas que podemos encontrarnos en el
   proceso de compilacion de un kernel personalizado:

   Fallo de config:

           Si config(8) falla cuando le pasa la descripcion de su
           kernel seguramente ha cometido algun pequeno error. Por
           suerte config(8) les mostrara el numero de la linea que le
           esta dando problemas, asi que no tendra mayor problema
           para localizarla. Veamos un ejemplo:

 config: line 17: syntax error

           Si ve algo asi asegurese de que ha tecleado la palabra
           clave que hay en esa lina. Compare la de su fichero de
           configuracion del kernel con la de GENERIC.

   Fallo de make:

           If the make command fails, it usually signals an error in
           your kernel description which is not severe enough for
           config(8) to catch. Again, look over your configuration,
           and if you still cannot resolve the problem, send mail to
           the lista de correo para preguntas generales sobre FreeBSD
           with your kernel configuration, and it should be diagnosed
           quickly.

   El kernel no arranca:

           Si su nuevo kernel no arranca o no reconoce sus
           dispositivos de hardware no desespere. FreeBSD dispone de
           excelentes mecanismos de recuperacion ante kernels
           defectuosos. Elija el kernel con el que quiere arrancar en
           el gestor de arranque de FreeBSD. Puede acceder al gestor
           de arranque en el momento en el que aparece el menu de
           arranque. Elija la opcion numero seis, "Escape to a loader
           prompt" option, Escriba en el prompt unload kernel y
           despues escriba boot /boot/kernel.old/kernel, o el nombre
           de cualquier otro kernel que tenga en el sistema y del que
           sepa que puede fiarse. Si va a reconfigurar un kernel es
           una buenisima idea guardar un kernel que sepa que
           funciona.

           Tras arrancar con un kernel de fiar verifique el fichero
           de configuracion e intente de nuevo una compilacion. El
           fichero /var/log/messages es una fuente de informacion muy
           valiosa puesto que registra, entre otras cosas, todos los
           mensajes que deja el kernel cada vez que hay un arranque
           satisfactorio. dmesg(8) le mostrara los mensajes que el
           kernel ha generado durante el ultimo arranque.

             Nota: Si tiene problemas compilando un kernel recuerde
             que es de vital importancia que guarde una copia de un
             kernel GENERIC u otro del que pueda fiarse y que (esto
             es muy importante) tenga un nombre distinto de
             kernel.old para evitar que el sistema lo borre una vez
             que termine una nueva compilacion. No puede confiar en
             su kernel kernel.old porque al instalar un nuevo kernel
             (que aun no sabe si sera el que funcione tal y como
             espera de el) el kernel kernel.old se sobreescribe con
             el kernel que instale. Otra cosa importante es que copie
             ese kernel de fiar a /boot/kernel, o ciertas
             herramientas como ps(1) no funcionaran. Basta con que
             haga lo siguiente:

 # mv /boot/kernel /boot/kernel.malo
 # mv /boot/kernel.bueno /boot/kernel

   El kernel funciona, pero ps(1) no:

           Si el kernel que tiene instalado es de una version de
           FreeBSD y las utilidades del sistema son de otra, por
           ejemplo un kernel -CURRENT en una -RELEASE, hay muchas
           herramientas de monitorizacion del sistema como ps(1) y
           vmstat(8) no funcionaran. Ejecute un make buildworld y un
           make install world con la misma version de codigo fuente
           con la que ha compilado su kernel. Esta es una de las
           razones por las que no es una idea demasiado buena
           utilizar versiones diferentes de kernel y de sistema
           operativo.

     --------------------------------------------------------------

                          Capitulo 9. Imprimir

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

9.1. Sinopsis

   FreeBSD puede utilizarse para imprimir en una gran variedad de
   impresoras, desde las antiguas impresoras de matriciales hasta las
   mas modernas impresoras laser y todo lo que existe entre unas y
   otras, con lo que podra imprimir con una calidad muy alta desde
   cualquier aplicacion.

   FreeBSD puede usarse tambien como servidor de impresion en red;
   FreeBSD puede recibir peticiones de impresion de una gran cantidad
   de sistemas, bien sean FreeBSD, Windows y Mac OS. FreeBSD se
   encarga de los trabajos se vayan imprimiendo uno tras otro y puede
   mantener estadisticas sobre que usuarios y que maquinas estan
   imprimiendo mas, generar paginas de <<encabezado>> para colocarlas
   antes de cada trabajo y distinguir asi de quien es la impresion,
   etc.

   Tras leer el presente capitulo sabra usted:

     * Como configurar la cola de impresion en FreeBSD.

     * Como instalar filtros de impresion para gestionar diversos
       trabajos especiales como la conversion de documentos a
       formatos aptos para su impresora.

     * Como habilitar encabezados en sus impresiones.

     * Como imprimir en impresoras conectadas a otras maquinas.

     * Como imprimir en impresoras conectadas directamente a la red.

     * Como controlar restricciones de impresion, como por ejemplo
       limitaciones del tamano de trabajos o evitar que ciertos
       usuarios puedan imprimir.

     * Como mantener estadisticas de impresion y cuentas de usuario
       de impresion.

     * Como solucionar los problemas de impresion mas comunes.

   Antes de leer este capitulo usted deberia:

     * Saber como compilar e instalar un kernel personalizado
       (Capitulo 8).

     --------------------------------------------------------------

9.2. Introduccion

   Si quiere utilizar impresoras con FreeBSD debe configurarlas de
   forma que funcionen con el sistema de cola de impresion de
   Berkeley, tambien conocido como sistema de cola LPD. Es el sistema
   de control de impresion estandar en FreeBSD. Este capitulo trata
   sobre el sistema LPD, al que en adelante nos referiremos
   simplemente como LPD, y le introducira en la configuracion del
   mismo.

   Si esta familiarizado con el sistema de cola de impresion LPD, o
   bien con algun otro sistema de impresion, puede pasar a la seccion
   Configuracion del sistema de cola de impresion.

   LPD se encarga de controlar todo lo relacionado con la impresion,
   lo que en consecuencia implica encargarse de lo siguiente:

     * Controlar el acceso a las impresoras conectadas directamente
       al sistema y a impresoras conectadas a otras maquinas de la
       red.

     * Permitir que ciertos usuarios puedan enviar ficheros para su
       impresion; estos envios reciben el nombre de trabajos
       ("jobs").

     * Evita que usuarios diferentes accedan a la impresora al mismo
       tiempo manteniendo un orden estricto en la cola de impresion
       de cada impresora.

     * Imprimir encabezados de forma que los usuarios puedan
       distinguir facilmente los trabajos que han impreso.

     * Se ocupa de los parametros para impresoras conectadas a
       puertos serie.

     * Enviar trabajos de impresion a traves de una red a la cola LPD
       de una maquina remota.

     * Ejecutar filtros especiales para formatear trabajos que
       requieren la gestion de lenguajes de impresion o impresoras de
       diferentes caracteristicas.

     * Mantener un registro del uso de la impresora.

   Gracias al fichero de configuracion (/etc/printcap) y mediante
   programas especiales de filtrado puede hacerse que el sistema LPD
   cumpla todas las tareas citadas o si lo prefiere solo unas
   cuantas; ademas puede hacerlo en una gran variedad de impresoras.

     --------------------------------------------------------------

  9.2.1. ?Por que utilizar una cola de impresion?

   Si es usted la unica persona que usa el sistema se estara por que
   preocuparse de utilizar un sistema de cola de impresion si es
   evidente que no necesita restricciones de acceso, encabezados ni
   cuentas de impresion. Puede utilizar el acceso directo a
   impresion, pero deberia utilizar una cola de impresion por las
   siguientes razones:

     * El sistema LPD ejecuta los trabajos en segundo plano, esto es,
       no tiene que esperar a que la impresora procese los datos para
       seguir trabajando.

     * LPD puede procesar un trabajo de forma que pase por filtros,
       anadir cabeceras de fecha y hora o convertir un fichero de
       formato especial (por ejemplo TeX DVI) a un formato que la
       impresora entienda y que no tenga usted que ocuparse de ello
       manualmente.

     * Muchos programas, tanto libres como comerciales, desde los que
       se puede imprimir estan hechos pensando en que haya disponible
       un sistema de impresion. Una vez que configure un sistema de
       colas podra utilizar software que ya tiene instalado y
       preparar el campo para el que instale en el futuro.

     --------------------------------------------------------------

9.3. Configuracion basica

   Pendiente de traduccion.

     --------------------------------------------------------------

9.4. Configuracion avanzada de impresoras

   Pendiente de traduccion

     --------------------------------------------------------------

9.5. Como utilizar impresoras

   Pendiente de traduccion.

     --------------------------------------------------------------

9.6. Alternativas a LPD

   Pendiente de traduccion

     --------------------------------------------------------------

9.7. Solucion de problemas

   Pendiente de traduccion

     --------------------------------------------------------------

             Capitulo 10. Compatibilidad binaria con Linux

   Reestructurado y actualizado por Jim Mock. Escrito por Brian N.
   Handy y Rich Murphey.

10.1. Sinopsis

   FreeBSD proporciona compatibilidad de binarios con muchos otros
   sistemas operativos tipo UNIX, incluyendo Linux. Puede estarse
   preguntando ?por que necesita FreeBSD ejecutar binarios de Linux?
   La respuesta a esa pregunta es muy simple. Muchos desarrolladores
   y companias desarrollan solo para Linux, ya que ultimamente es el
   blanco de todas las miradas dentro del mundo de las tecnologis de
   la informacion. Esto hace que la comunidad FreeBSD tenga que
   exigir a esas companias y desarrolladores que produzcan versiones
   nativas de sus aplicaciones para FreeBSD. El problema es que la
   mayoria de esas companias no suelen saber realmente cuanta gente
   utilizaria su producto si existieran esas versiones para FreeBSD,
   y la mayoria continua desarrollando unicamente para Linux. Vista
   la situacion ?que puede hacer un usuario de FreeBSD? Aqui es donde
   entra en juego la compatibilidad binaria con Linux.

   Para expresarlo en pocas palabras, dicha compabitilidad permite a
   los usuarios de FreeBSD cerca del 90% de las aplicaciones de Linux
   sin tener que modificarlas en absoluto. Entre estas esta
   StarOffice, la version Linux de Netscape, Adobe(R) Acrobat(R),
   RealPlayer(R), VMware(TM), Oracle, WordPerfect(R), Doom, Quake y
   muchas mas. En determinados casos los binarios Linux rinden mejor
   en FreeBSD que en Linux.

   Existen, por desgracia, ciertas caracteristicas especificas de
   Linux que no funcionan en FreeBSD. Los binarios Linux no
   funcionaran en FreeBSD si recurren a llamadas especificas de i386
   como la activacion del modo virtual 8086.

   Tras leer este capitulo sabra usted:

     * como activar la compatibilidad binaria con Linux en su
       sistema.

     * como instalar bibliotecas compartidas de Linux que pueda
       necesitar.

     * como instalar aplicaciones de Linux en su sistema FreeBSD.

     * cuales son los detalles de la implementacion de compatibilidad
       binaria con Linux en FreeBSD.

   Antes de leer este capitulo es necesario que sepa:

     * como instalar software de terceros (Capitulo 4).

     --------------------------------------------------------------

10.2. Instalacion

   La compatibilidad binaria con Linux no viene activada por omision.
   La forma mas sencilla de habilitarla es cargar el KLD ("objeto
   cargable en el kernel") linux. Como usuario root proceda del
   siguiente modo:

 # kldload linux

   Si quiere que la compatibilidad con Linux este siempre activada
   tendra que anadir la siguiente linea en /etc/rc.conf:

 linux_enable="YES"

   Utilice kldstat(8) para verificar que el KLD este cargado:

 % kldstat
 Id Refs Address    Size     Name
  1    2 0xc0100000 16bdb8   kernel
  7    1 0xc24db000 d000     linux.ko

   Si por alguna razon no desea o no puede cargar el KLD, entonces
   puede enlazar estaticamente la compatibilidad de binarios Linux en
   el kernel agregando options COMPAT_LINUX a su fichero de
   configuracion del kernel. Luego instale su nuevo kernel como se
   describe en Capitulo 8.

     --------------------------------------------------------------

  10.2.1. Instalacion de bibliotecas de ejecucion Linux

   Puede hacerse de dos maneras, ya sea usando el port linux_base, o
   instalandolas de forma manual.

     --------------------------------------------------------------

    10.2.1.1. Instalacion usando el port linux_base

   Este es con mucho el metodo mas sencillo para instalar bibliotecas
   de ejecucion. Es como instalar cualquier otro port de la Coleccion
   de Ports. Es tan sencillo como esto:

 # cd /usr/ports/emulators/linux_base
 # make install distclean

   Hecho esto deberia disponer de compatibilidad binaria con Linux.
   Algunos programas pueden "quejarse" por la presencia de versiones
   antiguas de algunas bibliotecas del sistema. Generalmente esto no
   suele ser un problema muy grave.

     Nota: Pueden coexistir multiples versiones del port
     emulators/linux_base disponibles correspondientes a distintas
     versiones de diversas distribuciones de Linux. Tendra que
     instalar el port que mas se ajuste a las necesidades de las
     aplicaciones de Linux que quiera instalar.

     --------------------------------------------------------------

    10.2.1.2. Instalacion manual de bibliotecas

   Si, por el motivo que fuese, no tiene instalada la coleccion de
   ports puede instalar las bibliotecas que necesite de forma manual.
   Necesitara las bibliotecas compartidas Linux de las que depende el
   programa y el enlazador en tiempo de ejecucion ("runtime linker").
   Necesitara tambien crear un directorio /compat/linux donde alojar
   las bibliotecas Linux en su sistema FreeBSD Cualquier biblioteca
   compartida a la que haya recurrido un programa de Linux ejecutado
   en FreeBSD buscara en primer lugar en dicho directorio. Por lo
   tanto, si se carga un programa Linux, por ejemplo /lib/libc.so,
   FreeBSD intentara en primer lugar abrir /compat/linux/lib/libc.so
   y, si no existe, lo intentara con /lib/libc.so. Las bibliotecas
   compartidas deben instalarse en /compat/linux/lib en lugar de las
   rutas que el ld.so de Linux proporcione.

   En general, necesitara buscar las bibliotecas compartidas de las
   que los binarios Linux dependen solamente las primeras veces que
   instale un programa Linux en su FreeBSD. Mas adelante tendra un
   conjunto suficiente de bibliotecas compartidas Linux en su sistema
   para poder ejecutar binarios Linux sin que tenga que hacer nada
   mas.

     --------------------------------------------------------------

    10.2.1.3. Como instalar bibliotecas compartidas adicionales

   ?Que pasaria si instalara el port linux_base y su aplicacion
   todavia tuviera problemas debido a bibliotecas compartidas que no
   encuentra en el sistema? ?Como saber que bibliotecas compartidas
   necesitan los binarios Linux? Basicamente hay dos posibilidades
   (para poder ejecutar las siguientes instrucciones necesitara estar
   como root

   Si tiene acceso a un sistema Linux busque en el que bibliotecas
   necesita la aplicacion, y copielas a su sistema FreeBSD. Veamos
   unos ejemplos:

   Asumiremos que utilizo FTP para conseguir los binarios Linux de
   Doom y los puso en un sistema Linux. Para ver que bibliotecas
   compartidas necesitara ejecute ldd linuxdoom:

 % ldd linuxdoom
 libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29

   Necesitaria todos los ficheros de la segunda columna, y tendra que
   ponerlos en /compat/linux con los nombres de la primera columna
   como enlaces simbolicos apuntando hacia ellos. De este modo
   tendria en su sistema FreeBSD los siguientes ficheros:

 /compat/linux/usr/X11/lib/libXt.so.3.1.0
 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
 /compat/linux/usr/X11/lib/libX11.so.3.1.0
 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
 /compat/linux/lib/libc.so.4.6.29
 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29

       Nota: Recuerde que si ya tiene una biblioteca compartida Linux
       con un numero de version mayor que coincida con la primera
       columna de la salida de ldd no necesitara copiar el fichero
       que aparece en la ultima columna; el que tiene deberia
       funcionar, aunque se aconseja copiar la biblioteca compartida
       de todas maneras si es una nueva version. Puede eliminar la
       vieja siempre que haga que el enlace simbolico apunte a la
       nueva. Si tiene estas bibliotecas en su sistema:

 /compat/linux/lib/libc.so.4.6.27
 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27

       y un binario requiere una version mas reciente (como indica la
       siguiente salida de ldd):

 libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29

       si solo ve una o dos versiones desfasadas en los ultimos
       digitos no se preocupe de copiar /lib/libc.so.4.6.29, el
       programa deberia funcionar bien con una version ligeramente
       antigua. De todas formas, si asi lo prefiere, puede actualizar
       libc.so; el resultado seria este:

 /compat/linux/lib/libc.so.4.6.29
 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29

       Nota: El mecanismo de enlazado simbolico solamente es
       necesario con binarios Linux. El enlazador en tiempo de
       ejecucion de FreeBSD se encarga de buscar el mismo las
       versiones correctas, asi que no tendra que preocuparse usted
       de hacerlo.

     --------------------------------------------------------------

  10.2.2. Instalar binarios ELF Linux

   Los binarios ELF algunas veces requieren un paso extra de
   "marcado". Si trata de ejecutar un binario ELF no marcado recibira
   un mensaje de error como el siguiente:

 % ./mi-binario-elf
 ELF binary type not known
 Abort

   Para ayudar al kernel de FreeBSD a distinguir entre un binario ELF
   de FreeBSD y uno de Linux utilice brandelf(1).

 % brandelf -t Linux mi-binario-elf-de-linux

   Las herramientas GNU se encargan de ubicar automaticamente la
   marca apropiada en los binarios ELF, por lo tanto este paso sera
   innecesario en un futuro proximo.

     --------------------------------------------------------------

  10.2.3. Configuracion de la resolucion de nombres de equipos

   Si el DNS no funciona u obtiene este mensaje:

 resolv+: "bind" is an invalid keyword resolv+:
 "hosts" is an invalid keyword

   Necesitara un fichero /compat/linux/etc/host.conf con el siguiente
   contenido:

 order hosts, bind
 multi on

   Significa que /etc/hosts seraanalizado en primer lugar y despues
   se usara DNS. Si /compat/linux/etc/host.conf no esta instalado,
   las aplicaciones Linux usan el /etc/host.conf de FreeBSD y chocan
   con la sintaxis (incompatible) de FreeBSD. Borre bind de su
   /etc/resolv.conf si no tiene configurado un servidor de nombres.

     --------------------------------------------------------------

10.3. Instalacion de Mathematica(R)

   Actualizado para Mathematica 5.X por Hollas Boris.

   Este documento describe el proceso de instalacion de la version
   para Linux de Mathematica 5.X en un sistema FreeBSD.

   Puede pedir a Wolfram, el fabricante, La version para para Linux
   de Mathematica o la version de Mathematica para estudiantes en su
   sitio web, http://www.wolfram.com/.

     --------------------------------------------------------------

  10.3.1. El instalador de Mathematica

   Lo primero que tiene que hacer es decirle a FreeBSD que los
   binarios de Mathematica para Linux utilizan la ABI Linux. La forma
   mas sencilla de hacerlo es marcar por omision todos los binarios
   sin marcas como Linux ELF.

 # sysctl kern.fallback_elf_brand=3

   Hecho esto FreeBSD asumira que cualquier binario sin marca que
   encuentre utiliza la ABI Linux; de este modo podra ejecutar el
   binario directamente desde el CDROM.

   Copie el fichero MathInstaller en su disco duro

 # mount /cdrom
 # cp /cdrom/Unix/Installers/Linux/MathInstaller /directoriolocal/

   Edite este fichero y sustituya la primera linea, /bin/sh, por
   /compat/linux/bin/sh para asegurarnos de que lo que ejecute el
   instalador sea la verion de sh(1) de Linux. El siguiente paso es
   sustituir todos los Linux) por FreeBSD) con un editor de texto on
   con el script que encontrara en la siguiente seccion. Esto se hace
   para ayudar al instalador de Mathematica, el cual en un cierto
   momento invoca a uname -s para determinar el sistema operativo, a
   tratar a FreeBSD como si fuera un sistema operativo muy similar a
   Linux. Hecho todo esto, cuando ejecute MathInstaller podra
   instalar Mathematica.

     --------------------------------------------------------------

  10.3.2. Modificacion de los ejecutables de Mathematica

   Debe modificar los scripts de shell que Mathematica creo durante
   la instalacion antes de usarlos. Si eligio ubicar en
   /usr/local/bin los ejecutables de Mathematica vera que en ese
   directorio hay enlaces simbolicos a ficheros como math,
   mathematica, Mathematica y MathKernel. En cada uno de esos
   ficheros debe sustituir Linux) por FreeBSD) con un editor de texto
   o bien con el siguiente script de shell:

 #!/bin/sh
 cd /usr/local/bin
 for i in math mathematica Mathematica MathKernel
   do sed 's/Linux)/FreeBSD)/g' $i > $i.tmp
   sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i
   rm $i.tmp
   chmod a+x $i
 done

     --------------------------------------------------------------

  10.3.3. Como obtener una contrasena de Mathematica

   Cuando arranque Mathematica por primera vez se le pedira una
   contrasena. Si Wolfram no le ha enviado ya necesita un "machine
   ID", para lo cual debe ir al directorio de instalacion y ejecutar
   mathinfo. Este "machine IDE" se obtiene de la direccion MAC de la
   primera tarjeta Ethernet de la maquina y tiene como objetivo que
   no pueda ejecutar Mathematica en mas de una maquina.

   Durante el proceso de registro en Wolfram (ya sea por correo
   electronico, telefono o fax) les dara el "machine ID" y Wolfram le
   enviara una contrasena relacionada con el, consistente en grupos
   de numeros.

     --------------------------------------------------------------

  10.3.4. Ejecucion del <<frontend>> de Mathematica traves de una red

   Mathematica usa unos cuantos tipos especiales para mostrar
   caracteres que no estan en ningun conjunto estandar de tipos:
   integrales, sumas, letras griegas, etc. El protocolo X exige que
   los tipos esten instalados en local, es decir, tiene que copiar
   los tipos del CDROM o la maquina desde la que ha instalado
   Mathematica a su maquina. Los tipos estan en el directorio del
   CDDROM /cdrom/Unix/Files/SystemFiles/Fonts y se supone que deben
   estar en su disco duro en el directorio
   /usr/local/mathematica/SystemFiles/Fonts. Los tipos estan
   realmente en los subdirectorios Type1 y X. Hay varias formas de
   utilizarlos.

   La primera es copiarlos en uno de los directorios de tipos que hay
   en /usr/X11R6/lib/X11/fonts, antes de lo cual tendra que anadir a
   fonts.dir los nombres de los tipos; tendra tambien que cambiar el
   numero de tipos en la primera linea. Por otra parte, todo esto
   puede hacerse ejecutando mkfontdir(1) en el directorio donde haya
   copiado los tipos.

   La segunda forma de utilizar estos tipos es copiarlos bajo
   /usr/X11R6/lib/X11/fonts:

 # cd /usr/X11R6/lib/X11/fonts
 # mkdir X
 # mkdir MathType1
 # cd /cdrom/Unix/Files/SystemFiles/Fonts
 # cp X/* /usr/X11R6/lib/X11/fonts/X
 # cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
 # cd /usr/X11R6/lib/X11/fonts/X
 # mkfontdir
 # cd ../MathType1
 # mkfontdir

   Anada los nuevos directorios de tipos a su ruta de tipos:

 # xset fp+ /usr/X11R6/lib/X11/fonts/X
 # xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
 # xset fp rehash

   Si usa el servidor Xorg puede cargar los tipos automaticamente
   anadiendolos al fichero xorg.conf.

     Nota: En servidores XFree86 el fichero de configuracion es
     XF86Config.

   Si no tiene ya en su sistema un directorio
   /usr/X11R6/lib/X11/fonts/Type1 puede cambiarle el nombre al
   directorio MathType1 del ejemplo anterior por Type1.

     --------------------------------------------------------------

10.4. Instalacion de Maple(TM)

   Escrito por Aaron Kaplan. Gracias a Robert Getschmann.

   Maple(TM) es un programa comercial de matematicas similar a
   Mathematica. Puede adquirir este software en
   http://www.maplesoft.com/; tras registrarlo recibira un fichero de
   licencia. Si quiere instalar este software en FreeBSD siga los
   siguienes pasos:

    1. Ejecute el "script" de shell INSTALL desde el lugar de
       instalacion del producto. Elija la opcion "RedHat" cuando le
       pregunte el programa de instalacion. /usr/local/maple es un
       buen sitio para instalar el software.

    2. Si no lo ha hecho ya, solicite una licencia para Maple a Maple
       Waterloo Software (http://register.maplesoft.com/) y copiela a
       /usr/local/maple/license/license.dat.

    3. Instale el gestor de licencias FLEXlm ejecutando el "script"
       de shell de instalacion INSTALL_LIC que viene con Maple.
       Introduzca el nombre de su maquina (el servidor de licencias
       lo necesita).

    4. Parchee el fichero /usr/local/maple/bin/maple.system.type con
       lo siguiente:

    ----- snip ------------------
 *** maple.system.type.orig      Sun Jul  8 16:35:33 2001
 --- maple.system.type   Sun Jul  8 16:35:51 2001
 ***************
 *** 72,77 ****
 --- 72,78 ----
           # the IBM RS/6000 AIX case
           MAPLE_BIN="bin.IBM_RISC_UNIX"
           ;;
 +     "FreeBSD"|\
       "Linux")
           # the Linux/x86 case
         # We have two Linux implementations, one for Red Hat and
    ----- snip end of patch -----

       Tenga muy presente que despues de "FreeBSD"|\ no debe haber
       ningun espacio en blanco.

       Este parche le dice a Maple que interprete "FreeBSD" como un
       tipo de sistema Linux. El "script" de shell bin/maple llama al
       "script" de shell bin/maple.system.type, que a su vez recurre
       a uname -a para dictaminar el nombre del sistema operativo.
       Dependiendo de cual sea sabra que binarios utilizar.

    5. Inicio del servidor de licencias.

       El siguiente "script", sito en /usr/local/etc/rc.d/lmgrd.sh,
       le permitira arrancar lmgrd:

    ----- snip ------------

 #! /bin/sh
 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
 PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
 export PATH

 LICENSE_FILE=/usr/local/maple/license/license.dat
 LOG=/var/log/lmgrd.log

 case "$1" in
 start)
         lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2
         echo -n " lmgrd"
         ;;
 stop)
         lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2
         ;;
 *)
         echo "Usage: `basename $0` {start|stop}" 1>&2
         exit 64
         ;;
 esac

 exit 0
    ----- snip ------------

    6. Prueba de arranque de Maple:

 % cd /usr/local/maple/bin
 % ./xmaple

       Todo deberia funcionar perfectamente. Si es asi aun le queda
       un ultimo paso: escribir a Maplesoft y decirles que seria
       genial una version nativa para FreeBSD.

     --------------------------------------------------------------

  10.4.1. Problemas frecuentes

     * El gestor de licencias FLEXlm puede ser un tanto dificil de
       usar. En caso de necesitarla tiene mas informacion en
       http://www.globetrotter.com/.

     * lmgrd tiene una reconocida fama de ser muy meticuloso en todo
       lo relacionado con el fichero de licencia; suele generar
       volcados de memoria si se encuentra con algun problema. Un
       fichero de licencia correcto tiene que parecerse mucho a este:

 # =======================================================
 # License File for UNIX Installations ("Pointer File")
 # =======================================================
 SERVER chillig ANY
 #USE_SERVER
 VENDOR maplelmg

 FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
          PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
          ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
          SN=XXXXXXXXX

         Nota: El numero de serie y la clave han sido sobreescritos
         con X. chillig es el nombre de un equipo.

       Puede editar el fichero de licencia siempre que no toque la
       linea "FEATURE" (que esta protegida por la clave de la
       licencia).

     --------------------------------------------------------------

10.5. Instalacion de MATLAB(R)

   Escrito por Dan Pelleg.

   Este documento describe el proceso de instalacion de la version
   para Linux de MATLAB(R) version 6.5 en FreeBSD. En general
   funciona bastante bien, excepcion hecha de Java Virtual
   Machine(TM) (consulte la Seccion 10.5.3).

   La version Linux de MATLAB puede pedirse directamente en el sitio
   de The MathWorks, http://www.mathworks.com. Tiene que recibir
   tambien el fichero de licencia o instrucciones de como crearlo. Al
   hacer su pedido aproveche para decirles que seria muy buena idea
   que ofrecieran una version nativa de su software para FreeBSD.

     --------------------------------------------------------------

  10.5.1. Instalacion de MATLAB

   Para instalar MATLAB haga lo siguiente:

    1. Inserte el CD de instalacion y montelo. Conviertase en root e
       inicie la instalacion:

 # /compat/linux/bin/sh /cdrom/install

         Sugerencia: El instalador es grafico. Si obtiene errores
         acerca de no ser capaz de abrir un display teclee setenv
         HOME ~USUARIO, donde USUARIO es el nombre del usuario con el
         que hizo su(1).

    2. Teclee /compat/linux/usr/local/matlab donde el instalador le
       pida el directorio raiz de MATLAB.

         Sugerencia: Esto ultimo le facilitara la entrada de datos
         durante el resto de la instalacion. Introduzca lo siguiente
         en el "prompt" de su shell: set
         MATLAB=/compat/linux/usr/local/matlab

    3. Edite el fichero de licencia tal y como consta en las
       instrucciones de la licencia de MATLAB.

         Sugerencia: Puede tenerlo ya editado y copiado a
         $MATLAB/license.dat desde antes de que el instalador se lo
         pida.

    4. Complete el proceso de instalacion.

   La instalacion MATLAB ha finalizado. Los siguientes pasos
   aplicaran el "pegamento" necesario para conectarlo a su sistema
   FreeBSD.

     --------------------------------------------------------------

  10.5.2. Inicio del administrador de licencias

    1. Cree los enlaces simbolicos que necesitan los "scripts" del
       administrador de licencias:

 # ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
 # ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW

    2. Cree un fichero de inicio en /usr/local/etc/rc.d/flexlm.sh. El
       siguiente ejemplo es una version modificada de
       $MATLAB/etc/rc.lm.glnx86 que viene con la distribucion de
       MATLAB. Los cambios que se han hecho en el obedecen a la
       ubicacion de los ficheros y el arranque del administrador de
       licencias bajo emulacion de Linux.

 #!/bin/sh
 case "$1" in
   start)
         if [ -f /usr/local/etc/lmboot_TMW ]; then
               /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u nombre-de-usuario && echo 'MATLAB_lmgrd'
         fi
         ;;
   stop)
         if [ -f /usr/local/etc/lmdown_TMW ]; then
             /compat/linux/bin/sh /usr/local/etc/lmdown_TMW  > /dev/null 2>&1
         fi
         ;;
   *)
         echo "Usage: $0 {start|stop}"
         exit 1
         ;;
 esac

 exit 0

         Importante: El fichero debe ser ejecutable:

 # chmod +x /usr/local/etc/rc.d/flexlm.sh

         Tendra que reemplazar la entrada nombre-de-usuario de
         nuestro ejemplo por un nombre de usuario valido en su
         sistema (que no sea root).

    3. Arranque el administrador de licencias:

 # /usr/local/etc/rc.d/flexlm.sh start

     --------------------------------------------------------------

  10.5.3. Enlace del entorno de ejecucion Java

   Cambie el enlace del entorno de ejecucion Java (JRE) a uno que
   funcione en FreeBSD:

 # cd $MATLAB/sys/java/jre/glnx86/
 # unlink jre; ln -s ./jre1.1.8 ./jre

     --------------------------------------------------------------

  10.5.4. Creacion de un "script" de arranque para MATLAB

    1. Coloque el siguiente "script" de arranque en
       /usr/local/bin/matlab:

 #!/bin/sh
 /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"

    2. Escriba chmod +x /usr/local/bin/matlab.

     Sugerencia: Dependiendo de su version de emulators/linux_base
     tal vez obtenga errores al ejecutar este "script". Para evitarlo
     edite /compat/linux/usr/local/matlab/bin/matlab y cambie la
     linea en la que aparece:

 if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then

     (en la version 13.0.1 es en la linea 410) por esta otra linea:

 if test -L $newbase; then

     --------------------------------------------------------------

  10.5.5. Creacion de un "script" para detener MATLAB

   Este "script" solucionara las dificultades que pueda tener para
   detener MATLAB correctamente.

    1. Cree un fichero llamado $MATLAB/toolbox/local/finish.m y ponga
       en el una sola linea con este texto:

 ! $MATLAB/bin/finish.sh

         Nota: $MATLAB debe escribirse tal cual.

         Sugerencia: En el mismo directorio encontrara los ficheros
         finishsav.m y finishdlg.m, que le permiten guardar su
         trabajo antes de salir de la aplicacion. Si quiere usar
         alguno de ellos, inserte la linea de arriba inmediatamente
         despues de save.

    2. Cree un fichero $MATLAB/bin/finish.sh con el siguiente
       contenido:

 #!/usr/compat/linux/bin/sh
 (sleep 5; killall -1 matlab_helper) &
 exit 0

    3. El fichero tiene que ser ejecutable:

 # chmod +x $MATLAB/bin/finish.sh

     --------------------------------------------------------------

  10.5.6. Uso de MATLAB

   Desde este momento ya puede usted teclear matlab y empezar a
   usarlo.

     --------------------------------------------------------------

10.6. Instalacion de Oracle(R)

   Escrito por Marcel Moolenaar.

     --------------------------------------------------------------

  10.6.1. Prefacio

   Este texto describe el proceso de instalacion de Oracle 8.0.5 y
   Oracle 8.0.5.1 Enterprise Edition para Linux en una maquina
   FreeBSD.

     --------------------------------------------------------------

  10.6.2. Instalacion del entorno Linux

   Debe tener instalados los ports emulators/linux_base y
   devel/linux_devtools. Si tiene dificultades con estos ports es
   posible que tenga que usar los paquetes o quizas versiones mas
   antiguas de dichas aplicaciones que encontrara en la Coleccion de
   Ports.

   Si quiere usar el agente inteligente tambien tendra que instalar
   el paquete Tcl de Red Hat, tcl-8.0.3-20.i386.rpm. La orden
   generica para instalar paquetes con el port oficial de RPM
   (archivers/rpm) es:

 # rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm paquete

   La instalacion de dicho paquete no debe generar ningun error.

     --------------------------------------------------------------

  10.6.3. Creacion del entorno Oracle

   Antes de instalar Oracle tendra que configurar un entorno
   apropiado. Este documento solamente explica lo que hay que hacer
   especialmente para utilizar la version de Linux para Oracle
   FreeBSD, no lo que figura en la guia de instalacion de Oracle.

     --------------------------------------------------------------

    10.6.3.1. Personalizacion del kernel

   Tal y como consta en la guia de instalacion de Oracle, debe
   configurar la cantidad maxima de memoria compartida. No utilice
   SHMMAX en FreeBSD. SHMMAX se calcula a partir de SHMMAXPGS y
   PGSIZE, asi que defina SHMMAXPGS. Todas las demas opciones pueden
   usarse tal y como se describen en la guia. Por ejemplo:

 options SHMMAXPGS=10000
 options SHMMNI=100
 options SHMSEG=10
 options SEMMNS=200
 options SEMMNI=70
 options SEMMSL=61

   Configure estas opciones para que se ajusten al uso que pretenda
   darle a Oracle.

   Asegurese tambien de que las siguientes opciones estan en el
   fichero de configuracion de su kernel:

 options SYSVSHM #SysV shared memory
 options SYSVSEM #SysV semaphores
 options SYSVMSG #SysV interprocess communication

     --------------------------------------------------------------

    10.6.3.2. Cuenta Oracle

   Cree una cuenta oracle segun el procedimiento habitual de creacion
   de usuarios. La cuenta oracle, empero, tiene algo especial puesto
   que debe teer una shell de Linux. Anada /compat/linux/bin/bash a
   /etc/shells y asigne a la cuenta oracle /compat/linux/bin/bash
   como shell por omision.

     --------------------------------------------------------------

    10.6.3.3. Entorno

   Ademas de las variables normales para Oracle, como ORACLE_HOME y
   ORACLE_SID, debe configurar las siguientes variables de entorno:

      Variable                           Valor                        
   LD_LIBRARY_PATH $ORACLE_HOME/lib                                   
   CLASSPATH       $ORACLE_HOME/jdbc/lib/classes111.zip               
                   /compat/linux/bin /compat/linux/sbin               
   PATH            /compat/linux/usr/bin /compat/linux/usr/sbin /bin  
                   /sbin /usr/bin /usr/sbin /usr/local/bin            
                   $ORACLE_HOME/bin                                   

   Le aconsejamos configurar todas las variables de entorno en
   .profile. Veamos un ejemplo completo:

 ORACLE_BASE=/oracle; export ORACLE_BASE
 ORACLE_HOME=/oracle; export ORACLE_HOME
 LD_LIBRARY_PATH=$ORACLE_HOME/lib
 export LD_LIBRARY_PATH
 ORACLE_SID=ORCL; export ORACLE_SID
 ORACLE_TERM=386x; export ORACLE_TERM
 CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
 export CLASSPATH
 PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin
 PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
 PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
 export PATH

     --------------------------------------------------------------

  10.6.4. Instalacion de Oracle

   Debido a una pequena inconsistencia en el emulador Linux tendra
   que crear un directorio llamado .oracle en /var/tmp antes de
   iniciar el instalador. Haga que sea propiedad del usuario oracle.
   Hecho esto deberi poder instalar Oracle sin ningun problema. Si no
   es asi revise su distribucion Oracle y su configuracion. Una vez
   finalizada la instalacion de Oracle aplique los parches que se
   detallan en las dos siguientes subsecciones.

   Un problema que se da con una cierta frecuencia es que el
   adaptador del protocolo TCP no esta correctamente instalado. Como
   consecuencia no puede iniciarse ninguna escucha TCP, a las que
   tambien se les llama directamente <<listeners>>. Esto le ayudara a
   resolver el problema.:

 # cd $ORACLE_HOME/network/lib
 # make -f ins_network.mk ntcontab.o
 # cd $ORACLE_HOME/lib
 # ar r libnetwork.a ntcontab.o
 # cd $ORACLE_HOME/network/lib
 # make -f ins_network.mk install

   No se olvide de ejecutar root.sh de nuevo.

     --------------------------------------------------------------

    10.6.4.1. Como parchear root.sh

   Durante la instalacion de Oracle algunas acciones que requieren
   ser ejecutadas como root deben almacenarse en un "script" de shell
   llamado root.sh. Dicho "script" esta en el directorio orainst.
   Aplique el siguiente parche a root.sh para que utilice la ruta
   correcta de chown o ejecute el "script" bajo una shell nativa de
   Linux.

 *** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
 --- orainst/root.sh Mon Dec 28 15:58:53 1998
 ***************
 *** 31,37 ****
 # This is the default value for CHOWN
 # It will redefined later in this script for those ports
 # which have it conditionally defined in ss_install.h
 ! CHOWN=/bin/chown
 #
 # Define variables to be used in this script
 --- 31,37 ----
 # This is the default value for CHOWN
 # It will redefined later in this script for those ports
 # which have it conditionally defined in ss_install.h
 ! CHOWN=/usr/sbin/chown
 #
 # Define variables to be used in this script

   Si no esta instalando Oracle desde un CD puede parchear las
   fuentes de root.sh. Se llama rthd.sh y esta en el directorio
   orainst del arbol de fuentes.

     --------------------------------------------------------------

    10.6.4.2. Como parchear genclntsh

   El "script" genclntsh se usa para crear una biblioteca de cliente
   compartida y para construir los demos. Al aplicar el siguiente
   parche comentara la definicion de PATH:

 *** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
 --- bin/genclntsh Tue Dec 22 15:36:49 1998
 ***************
 *** 32,38 ****
 #
 # Explicit path to ensure that we're using the correct commands
 #PATH=/usr/bin:/usr/ccs/bin export PATH
 ! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
 #
 # each product MUST provide a $PRODUCT/admin/shrept.lst
 --- 32,38 ----
 #
 # Explicit path to ensure that we're using the correct commands
 #PATH=/usr/bin:/usr/ccs/bin export PATH
 ! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
 #
 # each product MUST provide a $PRODUCT/admin/shrept.lst

     --------------------------------------------------------------

  10.6.5. Ejecucion de Oracle

   Una vez seguidas estas instrucciones podra ejecutar Oracle como si
   la hubiera instalado en Linux.

     --------------------------------------------------------------

10.7. Instalacion de SAP(R) R/3(R)

   Escrito por Holger Kipp. Version original convertida a SGML por
   Valentino Vaschetto.

   Las instalaciones de sistemas SAP en FreeBSD no reciben soporte
   tecnico de SAP. SAP solamente lo ofrece si se usan plataformas
   certificadas.

     --------------------------------------------------------------

  10.7.1. Introduccion

   Este texto expone una forma de instalar un SAP R/3 System con una
   Oracle Database para Linux en una maquina FreeBSD, incluyendo la
   instalacion de FreeBSD y Oracle. Se muestran dos configuraciones
   diferentes:

     * SAP R/3 4.6B (IDES) con Oracle 8.0.5 en FreeBSD 4.3-STABLE

     * SAP R/3 4.6C con Oracle 8.1.7 en FreeBSD 4.5-STABLE

   Aunque este documento trate de describir todos los pasos
   importantes con detalle no ha sido escrito como sustituto de las
   guias de instalacion de Oracle y SAP R/3.

   Por favor, consulte la documentacion de SAP R/3 que se incluye en
   la edicion para Linux de SAP y las preguntas especificas sobre
   Oracle, asi como los recursos que esten a su disposicion sobre
   Oracle y SAP OSS.

     --------------------------------------------------------------

  10.7.2. Software

   Durante la instalacion de SAP se han utilizado los siguientes
   CD-ROM:

     --------------------------------------------------------------

    10.7.2.1. SAP R/3 4.6B, Oracle 8.0.5

   Nombre   Numero                     Descripcion                    
   KERNEL  51009113 SAP Kernel Oracle / Installation / AIX, Linux,    
                    Solaris                                           
   RDBMS   51007558 Oracle / RDBMS 8.0.5.X / Linux                    
   EXPORT1 51010208 IDES / DB-Export / Disco 1 de 6                   
   EXPORT2 51010209 IDES / DB-Export / Disco 2 de 6                   
   EXPORT3 51010210 IDES / DB-Export / Disco 3 de 6                   
   EXPORT4 51010211 IDES / DB-Export / Disco 4 de 6                   
   EXPORT5 51010212 IDES / DB-Export / Disco 5 de 6                   
   EXPORT6 51010213 IDES / DB-Export / Disco 6 de 6                   

   Tambien utilizamos el CD de Oracle 8 Server (version
   pre-produccion 8.0.5 para Linux, version de kernel 2.0.33), que no
   es realmente necesario y FreeBSD 4.3-STABLE (a unos cuantos dias
   de la liberacion de 4.3-RELEASE).

     --------------------------------------------------------------

    10.7.2.2. SAP R/3 4.6C SR2, Oracle 8.1.7

   Nombre   Numero                     Descripcion                    
   KERNEL  51014004 SAP Kernel Oracle / SAP Kernel Version 4.6D /     
                    DEC, Linux                                        
   RDBMS   51012930 Oracle 8.1.7/ RDBMS / Linux                       
   EXPORT1 51013953 Release 4.6C SR2 / Export / Disco 1 de 4          
   EXPORT1 51013953 Release 4.6C SR2 / Export / Disco 2 de 4          
   EXPORT1 51013953 Release 4.6C SR2 / Export / Disco 3 de 4          
   EXPORT1 51013953 Release 4.6C SR2 / Export / Disco 4 de 4          
   LANG1   51013954 Release 4.6C SR2 / Language / DE, EN, FR / Disco  
                    1 de 3                                            

   Segun los idiomas que quiera usar es posible que necesite otros CD
   de idiomas. Solo hemos utilizado DE y EN, asi que nos basto con el
   primer CD. Para su informacion, los numeros de los cuatro CD
   EXPORT son identicos. Los tres CD de idiomas tambien tienen el
   mismo numero, aunque esto es distinto en los CD de la version 4.6B
   IDES. Al escribir este texto (20.03.2002) ejecutamos la
   instalacion en FreeBSD 4.5-STABLE (20.03.2002).

     --------------------------------------------------------------

  10.7.3. Notas SAP

   Las siguientes notas han resultado ser muy utiles durante la
   instalacion, asi que le recomendamos encarecidamente que las lea
   antes de instalar SAP R/3:

     --------------------------------------------------------------

    10.7.3.1. SAP R/3 4.6B, Oracle 8.0.5

     Numero                           Titulo                          
   0171356    SAP Software on Linux: Essential Comments               
   0201147    INST: 4.6C R/3 Inst. on UNIX - Oracle                   
   0373203    Update / Migration Oracle 8.0.5 --> 8.0.6/8.1.6 LINUX   
   0072984    Release of Digital UNIX 4.0B for Oracle                 
   0130581    R3SETUP step DIPGNTAB terminates                        
   0144978    Your system has not been installed correctly            
   0162266    Questions and tips for R3SETUP on Windows NT / W2K      

     --------------------------------------------------------------

    10.7.3.2. SAP R/3 4.6C, Oracle 8.1.7

      Numero                            Titulo                        
   0015023       Initializing table TCPDB (RSXP0004) (EBCDIC)         
   0045619       R/3 with several languages or typefaces              
   0171356       SAP Software on Linux: Essential Comments            
   0195603       RedHat 6.1 Enterprise version: Known problems        
   0212876       The new archiving tool SAPCAR                        
   0300900       Linux: Released DELL Hardware                        
   0377187       RedHat 6.2: important remarks                        
   0387074       INST: R/3 4.6C SR2 Installation on UNIX              
   0387077       INST: R/3 4.6C SR2 Inst. on UNIX - Oracle            
   0387078       SAP Software on UNIX: OS Dependencies 4.6C SR2       

     --------------------------------------------------------------

  10.7.4. Requisitos de hardware

   El siguiente equipo es suficiente para la instalacion de un
   sistema SAP R/3. Si pretende darle uso productivo necesitara hacer
   un estudio detallado de sus necesidades:

       Componente              4.6B                    4.6C           
   Procesador         Pentium III 800MHz x 2  Pentium III 800MHz x 2  
   Memoria            1GB ECC                 2GB ECC                 
   Espacio en disco   50-60GB (IDES)          50-60GB (IDES)          

   Para su uso en produccion le recomendamos procesadores Xeon con
   una cache grande, discos de alta velocidad (SCSI, controlador de
   RAID por hardware), USV y ECC-RAM. Un espacio en disco tan grande
   se debe al sistema IDES preconfigurado, que crea ficheros de bases
   de datos de 27 GB durante la instalacion. Este espacio tambien es
   suficiente para sistemas de produccion iniciales y datos de
   aplicacion.

     --------------------------------------------------------------

    10.7.4.1. SAP R/3 4.6B, Oracle 8.0.5

   Este es el hardware que utilizamos al escribir este texto: placa
   base dual con 2 procesadores Pentium III a 800 MHz, adaptador SCSI
   Adaptec(R) 29160 Ultra160 (para acceder a una unidad de cinta
   40/80 GB DLT y CDROM), Mylex(R) AcceleRAID(TM) (2 canales,
   firmware 6.00-1-00 con 32 MB RAM). La controladora Mylex RAID
   tiene conectados dos discos duros de 17 GB (replicados) y cuatro
   discos duros de 36 GB (RAID nivel 5).

     --------------------------------------------------------------

    10.7.4.2. SAP R/3 4.6C, Oracle 8.1.7

   Para esta instalacion se uso un Dell(TM) PowerEdge(TM) 2500: placa
   base dual con 2 procesadores Pentium III a 1000 MHz (256 kB de
   Cache), 2 GB PC133 ECC SDRAM, controladora RAID PERC/3 DC PCI con
   128 MB y una unidad EIDE DVD-ROM. La controladora RAID tiene
   conectados dos discos duros 18 GB (replicados) y cuatro discos
   duros de 36 GB (RAID nivel 5).

     --------------------------------------------------------------

  10.7.5. Instalacion de FreeBSD

   Lo primero que tiene que hacer es instalar FreeBSD. Hay muchas
   formas de hacerlo. Nosotros instalamos FreeBSD 4.3 desde un FTP y
   FreeBSD 4.5 desde el CD de la distribucion. Si necesita mas
   informacion sobre los medios de instalacion de FreeBSD consulte la
   Seccion 2.13.

     --------------------------------------------------------------

    10.7.5.1. Esquema de disco

   Quisimos hacer el proceso lo mas simple posible, asi que usamos el
   esquema de disco de SAP R/3 46B y SAP R/3 46C SR2. Solo cambiamos
   los nombres de dispositivo debido a que las instalaciones tuvieron
   lugar en hardware diferente (/dev/da y /dev/amr respectivamente.
   Si utiliza una AMI MegaRAID(R) vera en pantalla /dev/amr0s1a en
   lugar de /dev/da0s1a):

      Sistema de     Tamano (bloques   Tamano        Montado en       
       ficheros           de 1k)        (GB)    
   /dev/da0s1a       1.016.303        1         /                     
   /dev/da0s1b                        6         swap                  
   /dev/da0s1e       2.032.623        2         /var                  
   /dev/da0s1f       8.205.339        8         /usr                  
   /dev/da1s1e       45.734.361       45        /compat/linux/oracle  
   /dev/da1s1f       2.032.623        2         /compat/linux/sapmnt  
   /dev/da1s1g       2.032.623        2         /compat/linux/usr/sap 

   Configure e inicialice antes que nada las dos unidades logicas con
   el software Mylex o PERC/3 RAID. El software puede iniciarse
   durante la fase de arranque de BIOS.

   Por favor, tenga en cuenta que el esquema de disco que utilizamos
   difiere ligeramente de las recomendaciones de SAP, ya que SAP
   sugiere montar los subdirectorios Oracle (y algunos otros) por
   separado. Decidimos crearlos como subdirectorios reales para
   simplificar.

     --------------------------------------------------------------

    10.7.5.2. make world y un nuevo kernel

   Descargue las fuentes -STABLE mas recientes. Ejecute make world y
   compile su kernel personalizado. Recuerde incluir en el tanto los
   parametros del kernel requeridos por SAP R/3 como los que necesita
   Oracle.

     --------------------------------------------------------------

  10.7.6. Instalacion del entorno Linux

    10.7.6.1. Instalacion del sistema base Linux

   Primero instale el port linux_base (como root):

 # cd /usr/ports/emulators/linux_base
 # make install distclean

     --------------------------------------------------------------

    10.7.6.2. Instalacion del entorno de desarrollo Linux

   El entorno de desarrollo Linux es imprescindible si quiere
   instalar Oracle en FreeBSD segun se explica en la Seccion 10.6:

 # cd /usr/ports/devel/linux_devtools
 # make install distclean

   El entorno de desarrollo Linux solo ha de instalarse si sigue el
   proceso para instalar SAP R/3 46B IDES. No es necesario si Oracle
   DB no esta reenlazado (<<relinked>>) con el sistema FreeBSD. Este
   seria su caso si esta usa el fichero comprimido tar de Oracle de
   un sistema Linux.

     --------------------------------------------------------------

    10.7.6.3. Instalacion de los RPM necesarios

   Necesitara soporte PAM para iniciar el programa R3SETUP. Durante
   la primera instalacion de SAP en FreeBSD 4.3-STABLE intentamos
   instalar PAM con todas las dependencias y finalmente forzamos la
   instalacion del paquete PAM, y funciono. En SAP R/3 4.6C SR2
   forzamos la instalacion del RPM PAM, que tambien funciono, asi que
   parece que las dependencias no lo son tanto:

 # rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \
 pam-0.68-7.i386.rpm

   Para que Oracle 8.0.5 pueda lanzar el agente inteligente tambien
   tendremos que instalar el paquete Tcl de RedHat
   tcl-8.0.5-30.i386.rpm (si no, cuando lo reenlace durante la
   instalacion de Oracle no funcionara). Existen otros aspectos
   relacionados con el reenlazado de Oracle a tener en cuenta durante
   la instalacion, pero atanen a la version para Linux de Oracle y no
   son especificos de FreeBSD.

     --------------------------------------------------------------

    10.7.6.4. Sugerencias

   Le recomendamos anadir linprocfs a /etc/fstab. Consulte
   linprocfs(5) para mas informacion. Otro parametro que deberia
   configurar es kern.fallback_elf_brand=3 en /etc/sysctl.conf.

     --------------------------------------------------------------

  10.7.7. Creacion del entorno SAP R/3

    10.7.7.1. Creacion de los sistemas de ficheros y puntos de montaje
    necesarios

   Para una instalacion sencilla es suficiente con crear los
   siguientes sistemas de ficheros:

             punto de montaje                    tamano en GB         
   /compat/linux/oracle                  45 GB                        
   /compat/linux/sapmnt                  2 GB                         
   /compat/linux/usr/sap                 2 GB                         

   Tambien es necesario crear algunos enlaces. Si no, el instalador
   SAP tendra problemas ya que buscara los siguientes enlaces:

 # ln -s /compat/linux/oracle /oracle
 # ln -s /compat/linux/sapmnt /sapmnt
 # ln -s /compat/linux/usr/sap /usr/sap

   Veamos unos cuantos errores que se le pueden presentar durante la
   instalacion (en este caso con el sistema PRD y la instalacion de
   SAP R/3 4.6C SR2):

 INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200
     Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to
     /sapmnt/PRD/exe. Creating if it does not exist...

 WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400
     Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file
     /compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The
     program cannot go on as long as this link exists at this
     location. Move the link to another location.

 ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0
     can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content
     '/sapmnt/PRD/exe'

     --------------------------------------------------------------

    10.7.7.2. Creacion de usuarios y directorios

   SAP R/3 necesita dos usuarios y tres grupos. Los nombres de
   usuario dependen del "SAP system ID" (SID), y consisten en tres
   letras. Algunos de estos SID estan reservados por SAP (por ejemplo
   SAP y NIX. Tiene una lista completa de ellos en la documentacion
   de SAP). Para la instalacion de IDES usamos IDS y para la
   instalacion de 4.6C SR2 PRD, dado que ese sistema esta pensado
   para un uso de produccion. Tenemos por lo tanto los siguientes
   grupos (Los ID de grupo pueden ser diferentes, estos son solamente
   los valores que utilizamos en nuestra instalacion):

    ID de grupo    nombre de grupo             descripcion            
   100            dba                Administrador de base de datos   
   101            sapsys             Sistema SAP                      
   102            oper               Operador de base de datos        

   En una instalacion por omision de Oracle solo se usa el grupo dba.
   Puede usar el grupo oper como grupo dba (consulte la documentacion
   de Oracle y SAP para mas informacion).

   Tambien necesitaremos los siguientes usuarios:

    ID de    nombre de    nombre  grupo    grupos      descripcion    
   usuario    usuario    generico        adicionales 
   1000    idsadm/prdadm sidadm   sapsys oper        Administrador    
                                                     SAP              
   1002    oraids/oraprd orasid   dba    oper        Administrador    
                                                     Oracle           

   Al anadir dichos usuarios mediante adduser(8) tenga en cuenta que
   debe incluir las siguientes entradas (observe la shell y el
   directorio home) al crear el "administrador SAP":

 Name: sidadm
 Password: ******
 Fullname: SAP Administrator SID
 Uid: 1000
 Gid: 101 (sapsys)
 Class:
 Groups: sapsys dba
 HOME: /home/sidadm
 Shell: bash  (/compat/linux/bin/bash)

   y para el "Administrador Oracle":

 Name: orasid
 Password: ******
 Fullname: Oracle Administrator SID
 Uid: 1002
 Gid: 100 (dba)
 Class:
 Groups: dba
 HOME: /oracle/sid
 Shell: bash  (/compat/linux/bin/bash)

   Esto tambien incluye al grupo oper en caso de que este usando el
   grupo dba y el grupo oper.

     --------------------------------------------------------------

    10.7.7.3. Creacion de directorios

   Estos directorios se crean como sistemas de ficheros
   independientes. Esto depende totalmente de sus necesidades.
   Nosotros decidimos crearlos como directorios ya que todos estan en
   el mismo RAID 5:

   Primero vamos a configurar los propietarios y los derechos de
   algunos directorios (como root):

 # chmod 775 /oracle
 # chmod 777 /sapmnt
 # chown root:dba /oracle
 # chown sidadm:sapsys /compat/linux/usr/sap
 # chmod 775 /compat/linux/usr/sap

   Luego vamos a crear directorios como el usuario orasid. Estos
   seran todos subdirectorios de /oracle/SID:

 # su - orasid
 # cd /oracle/SID
 # mkdir mirrlogA mirrlogB origlogA origlogB
 # mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6
 # mkdir saparch sapreorg
 # exit

   Para la instalacion de Oracle 8.1.7 tendra que crear unos cuantos
   directorios mas:

 # su - orasid
 # cd /oracle
 # mkdir 805_32
 # mkdir client stage
 # mkdir client/80x_32
 # mkdir stage/817_32
 # cd /oracle/SID
 # mkdir 817_32

     Nota: El directorio client/80x_32 tiene que tener exactamente
     este nombre. No sustituya la x por un numero ni por ninguna otra
     cosa.

   En el tercer paso creamos directorios como usuario sidadm:

 # su - sidadm
 # cd /usr/sap
 # mkdir SID
 # mkdir trans
 # exit

     --------------------------------------------------------------

    10.7.7.4. Entradas en /etc/services

   SAP R/3 requiere algunas entradas en /etc/services que es posible
   que no esten correctamente activadas durante la instalalacion.
   Anada las siguientes entradas (necesita al menos las entradas
   correspondientes al numero de instancia, en este caso, 00. No hara
   ningun dano anadir todas las entradas de 00 hasta 99 para dp, gw,
   sp y ms). Si va a utilizar un SAProuter o necesita acceder a SAP
   OSS, tambien necesitara 99, ya que el puerto 3299 se usa
   generalmente para el proceso SAProuter en el sistema destino:

 sapdp00    3200/tcp # SAP Dispatcher.      3200 + Instance-Number
 sapgw00  3300/tcp # SAP Gateway.         3300 + Instance-Number
 sapsp00  3400/tcp #                      3400 + Instance-Number
 sapms00  3500/tcp #                      3500 + Instance-Number
 sapmsSID 3600/tcp # SAP Message Server.  3600 + Instance-Number
 sapgw00s   4800/tcp # SAP Secure Gateway   4800 + Instance-Number

     --------------------------------------------------------------

    10.7.7.5. Locales necesarios

   SAP requiere al menos dos locales que no forman parte de la
   instalacion por defecto de RedHat. SAP dispone de los paquetes
   RPMs que pueda necesitar; puede descargalos desde su FTP, aunque
   tenga en cuenta que solo pueden acceder al mismo los clientes con
   acceso OSS). Consulte la nota 0171356, que contiene una lista de
   los RPM que necesitara.

   Tambien puede crear enlaces (por ejemplo desde de_DE y en_US ),
   pero no se lo recomendamos si pretende configurar un sistema de
   produccion (no obstante, hemos de reconocer que a nosotros nos ha
   funcionado con el sistema IDES sin ningun problema). Necesitara al
   menos los siguientes locales:

 de_DE.ISO-8859-1
 en_US.ISO-8859-1

   Haga los enlaces de esta manera:

 # cd /compat/linux/usr/share/locale
 # ln -s de_DE de_DE.ISO-8859-1
 # ln -s en_US en_US.ISO-8859-1

   Si no estan habra algunos problemas durante la instalacion. Si se
   ignoran (es decir, si configura el STATUS de los pasos
   relacionados con esos locales a OK en el fichero CENTRDB.R3S) sera
   imposible entrar al sistema SAP sin tener que recurrir a ciertas
   triquinuelas.

     --------------------------------------------------------------

    10.7.7.6. Personalizacion del kernel

   Los sistemas SAP R/3 necesitan muchos recursos, por eso hemos
   anadido los siguientes parametros al fichero de configuracion de
   su kernel:

 # Set these for memory pigs (SAP and Oracle):
 options MAXDSIZ="(1024*1024*1024)"
 options DFLDSIZ="(1024*1024*1024)"
 # System V options needed.
 options SYSVSHM #SYSV-style shared memory
 options SHMMAXPGS=262144 #max amount of shared mem. pages
 #options SHMMAXPGS=393216 #use this for the 46C inst.parameters
 options SHMMNI=256 #max number of shared memory ident if.
 options SHMSEG=100 #max shared mem.segs per process
 options SYSVMSG #SYSV-style message queues
 options MSGSEG=32767 #max num. of mes.segments in system
 options MSGSSZ=32 #size of msg-seg. MUST be power of 2
 options MSGMNB=65535 #max char. per message queue
 options MSGTQL=2046 #max amount of msgs in system
 options SYSVSEM #SYSV-style semaphores
 options SEMMNU=256 #number of semaphore UNDO structures
 options SEMMNS=1024 #number of semaphores in system
 options SEMMNI=520 #number of semaphore identifiers
 options SEMUME=100       #number of UNDO keys

   Puede consultar los valores minimos en la documentacion de SAP.
   Como no hay detalles sobre Linux, consulte para mayor informacion
   la seccion de HP-UX (32-bit). El sistema de instalacion 4.6C SR2
   tiene mas memoria principal, asin que los segmentos compartidos
   pueden ser mas extensos tanto para SAP como para Oracle; elija,
   por tanto, un numero mayor de paginas de memoria compartida.

     Nota: En la instalacion por omision de FreeBSD 4.5 en i386,
     configure MAXDSIZ y DFLDSIZ como maximo a 1 GB. Si no lo hace
     podrian aparecer errores extranos como "ORA-27102: out of
     memory" y "Linux Error: 12: Cannot allocate memory".

     --------------------------------------------------------------

  10.7.8. Instalacion de SAP R/3

    10.7.8.1. Preparacion de los CDROM

   Hay que montar y desmontar muchos CD-ROM durante la instalacion.
   Si tiene suficientes unidades de CDROM, podria montarlos todos.
   Nosotros decidimos copiar el contenido de los CD-ROM a los
   directorios correspondientes:

 /oracle/SID/sapreorg/nombre-cd

   Donde nombre-cd era KERNEL, RDBMS, EXPORT1, EXPORT2, EXPORT3,
   EXPORT4, EXPORT5 y EXPORT6 para la instalacion 4.6B/IDES, y
   KERNEL, RDBMS, DISK1, DISK2, DISK3, DISK4 y LANG para la
   instalacion 4.6C SR2. Todos los nombres de fichero en los CDs
   montados deben estar en mayusculas; si no es asi use la opcion -g
   al montar. Utilice lo siguiente:

 # mount_cd9660 -g /dev/cd0a /mnt
 # cp -R /mnt/* /oracle/SID/sapreorg/nombre-cd
 # umount /mnt

     --------------------------------------------------------------

    10.7.8.2. Ejecucion del "script" de instalacion

   Primero tendra que preparar un directorio install:

 # cd /oracle/SID/sapreorg
 # mkdir install
 # cd install

   Una vez arrancado el "script" de instalacion copiara casi todos
   los ficheros relevantes en el directorio install:

 # /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH

   La instalacion IDES (4.6B) incluye un sistema de demostracion
   SAP R/3 totalmente personalizado, asi que hay seis CD EXPORT en
   lugar de solo tres. La plantilla de instalacion CENTRDB.R3S esta
   pensada para una instancia central estandar (R/3 y base de datos),
   no la instancia central IDES, asi que hay que copiar el
   CENTRDB.R3S correspondiente del directorio EXPORT1. Si no lo hace
   R3SETUP solo pedira tres CD EXPORT.

   La nueva version de SAP 4.6C SR2 incluye cuatro CDs EXPORT. El
   fichero de parametros que controla los pasos de la instalacion es
   CENTRAL.R3S. A diferencia de versiones versiones anteriores, no
   existen patrones de instalacion por separado para una instancia
   central con o sin base de datos. SAP utiliza un patron separado
   para la instalacion de la base de datos. Para reiniciar la
   instalacion despues es suficiente reiniciarla con el fichero
   original.

   Durante y despues de la instalacion, SAP necesita que hostname
   devuelva solamente el nombre del sistema, no el nombre cualificado
   de dominio. Configure el nombre del equipo de ese modo, o active
   un alias mediante alias hostname='hostname -s' para orasid y para
   sidadm (y para root al menos durante los pasos de la instalacion
   realizados como root). Tambien puede configurar los ficheros
   .profile y .login de los usuarios que se crean durante la
   instalacion SAP.

     --------------------------------------------------------------

    10.7.8.3. Inicio de R3SETUP 4.6B

   Asegurese de que LD_LIBRARY_PATH este configurada correctamente:

 # export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib

   Inicie R3SETUP como root desde el directorio de instalacion:

 # cd /oracle/IDS/sapreorg/install
 # ./R3SETUP -f CENTRDB.R3S

   El "script" le preguntara algunas cosas; le mostramos aqui entre
   corchetes la respuesta por defecto, y despues la respuesta que
   nosotros introdujimos:

   Pregunta           Por omision                     Entrada            
   Enter SAP [C11]                          IDSIntro                     
   System ID                                
   Enter SAP                                                             
   Instance  [00]                           Intro
   Number                                   
   Enter                                                                 
   SAPMOUNT  [/sapmnt]                      Intro
   Directory                                
   Enter                                                                 
   name of                                  
   SAP       [troubadix.domain.de]          Intro
   central                                  
   host                                     
   Enter                                                                 
   name of   [troubadix]                    Intro
   SAP db                                   
   host                                     
   Select                                                                
   character [1] (WE8DEC)                   Intro
   set                                      
   Enter                                                                 
   Oracle                                   
   server                                   
   version                                  
   (1)                                      
   Oracle                                   
   8.0.5,                                   
   (2)                                      1Intro
   Oracle                                   
   8.0.6,                                   
   (3)                                      
   Oracle                                   
   8.1.5,                                   
   (4)                                      
   Oracle                                   
   8.1.6                                    
   Extract                                                               
   Oracle    [1] (Yes, extract)             Intro
   Client                                   
   archive                                  
   Enter                                                                 
   path to   [/sapcd]                       /oracle/IDS/sapreorg/KERNEL
   KERNEL CD                                
   Enter                                                                 
   path to   [/sapcd]                       /oracle/IDS/sapreorg/RDBMS
   RDBMS CD                                 
   Enter                                                                 
   path to   [/sapcd]                       /oracle/IDS/sapreorg/EXPORT1
   EXPORT1                                  
   CD                                       
   Directory                                                             
   to copy   [/oracle/IDS/sapreorg/CD4_DIR] Intro
   EXPORT1                                  
   CD                                       
   Enter                                                                 
   path to   [/sapcd]                       /oracle/IDS/sapreorg/EXPORT2
   EXPORT2                                  
   CD                                       
   Directory                                                             
   to copy   [/oracle/IDS/sapreorg/CD5_DIR] Intro
   EXPORT2                                  
   CD                                       
   Enter                                                                 
   path to   [/sapcd]                       /oracle/IDS/sapreorg/EXPORT3
   EXPORT3                                  
   CD                                       
   Directory                                                             
   to copy   [/oracle/IDS/sapreorg/CD6_DIR] Intro
   EXPORT3                                  
   CD                                       
   Enter                                                                 
   path to   [/sapcd]                       /oracle/IDS/sapreorg/EXPORT4
   EXPORT4                                  
   CD                                       
   Directory                                                             
   to copy   [/oracle/IDS/sapreorg/CD7_DIR] Intro
   EXPORT4                                  
   CD                                       
   Enter                                                                 
   path to   [/sapcd]                       /oracle/IDS/sapreorg/EXPORT5
   EXPORT5                                  
   CD                                       
   Directory                                                             
   to copy   [/oracle/IDS/sapreorg/CD8_DIR] Intro
   EXPORT5                                  
   CD                                       
   Enter                                                                 
   path to   [/sapcd]                       /oracle/IDS/sapreorg/EXPORT6
   EXPORT6                                  
   CD                                       
   Directory                                                             
   to copy   [/oracle/IDS/sapreorg/CD9_DIR] Intro
   EXPORT6                                  
   CD                                       
   Enter                                                                 
   amount of                                850Intro (en Megabytes)
   RAM for                                  
   SAP + DB                                 
   Service                                                               
   Entry     [3600]                         Intro
   Message                                  
   Server                                   
   Enter                                                                 
   Group-ID  [101]                          Intro
   of sapsys                                
   Enter                                                                 
   Group-ID  [102]                          Intro
   of oper                                  
   Enter                                                                 
   Group-ID  [100]                          Intro
   of dba                                   
   Enter                                                                 
   User-ID   [1000]                         Intro
   of sidadm                                
   Enter                                                                 
   User-ID   [1002]                         Intro
   of orasid                                
   Number of                                                             
   parallel  [2]                            Intro
   procs                                    

   Si no ha copiado los CD a su disco duro el instalador SAP no podra
   encontrar el CD que necesite (identifica los contenidos mediante
   fichero LABEL.ASC de cada CD) y por lo tanto le pedira que
   introduzca y monte el CD, o que confirme o introduzca la ruta de
   montaje.

   CENTRDB.R3S puede contener algun error. En nuestro caso, solicito
   el CD EXPORT4 mas de una vez, pero se le indico la clave correcta
   (6_LOCATION, luego 7_LOCATION, etc), asi que pudimos continuar
   introduciendo los valores correctos.

   Aparte de algunos problemas que se detallan mas adelante
   deberiamos ir llegando a la instalacion del software de base de
   datos Oracle.

     --------------------------------------------------------------

    10.7.8.4. Iniciar R3SETUP 4.6C SR2

   Asegurese de que LD_LIBRARY_PATH este correctamente configurada.
   Tenga en cuenta de que es un valor diferente de la instalacion
   4.6B con Oracle 8.0.5:

 # export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib

   Arranque R3SETUP como el usuario root desde el directorio de
   instalacion:

 # cd /oracle/PRD/sapreorg/install
 # ./R3SETUP -f CENTRAL.R3S

   El "script" le preguntara algunas cosas. Le presentamos la
   respuesta por omision entre corchetes y despues la respuesta que
   dimos nosotros):

          Pregunta          Por omision             Entrada           
   Enter SAP System ID     [C11]          PRDIntro                    
   Enter SAP Instance      [00]           Intro                       
   Number                                 
   Enter SAPMOUNT          [/sapmnt]      Intro                       
   Directory                              
   Enter name of SAP       [majestix]     Intro                       
   central host                           
   Enter Database System   [PRD]          PRDIntro                    
   ID                                     
   Enter name of SAP db    [majestix]     Intro                       
   host                                   
   Select character set    [1] (WE8DEC)   Intro                       
   Enter Oracle server                                                
   version (2) Oracle                     2Intro
   8.1.7                                  
   Extract Oracle Client   [1] (Yes,      Intro                       
   archive                 extract)       
   Enter path to KERNEL CD [/sapcd]       /oracle/PRD/sapreorg/KERNEL 
   Enter amount of RAM for 2044           1800Intro (in Megabytes)    
   SAP + DB                               
   Service Entry Message   [3600]         Intro                       
   Server                                 
   Enter Group-ID of       [100]          Intro                       
   sapsys                                 
   Enter Group-ID of oper  [101]          Intro                       
   Enter Group-ID of dba   [102]          Intro                       
   Enter User-ID of oraprd [1002]         Intro                       
   Enter User-ID of prdadm [1000]         Intro                       
   LDAP support                           3Intro (no support)         
   Installation step       [1] (continue) Intro                       
   completed                              
   Choose installation     [1] (DB        Intro                       
   service                 inst,file)     

   La creacion de usuarios da un error durante la instalacion en las
   fases OSUSERDBSID_IND_ORA (al crear al usuario orasid) y
   OSUSERSIDADM_IND_ORA (al crear el usuario sidadm).

   Mas adelante hablaremos de cierto problemas que aun tenemos
   pendientes, pero ha llegado el momento de instalar el software de
   base de datos Oracle.

     --------------------------------------------------------------

  10.7.9. Instalacion de Oracle 8.0.5

   Consulte los Readme de Oracle y las notas de de SAP sobre Linux y
   Oracle DB por si hubiera algo que le pueda afectar. La mayoria de
   los problemas, por no decir todos, tienen su origen en bibliotecas
   incompatibles.

   Para mayor informacion sobre la instalacion de Oracle dirijase al
   capitulo de instalacion de Oracle.

     --------------------------------------------------------------

    10.7.9.1. Instalacion de Oracle 8.0.5 con orainst

   Si quiere instalar Oracle 8.0.5 necesitara unas cuantas
   bibliotecas para el enlazado, ya que Oracle 8.0.5 fue enlazado con
   una glibc antigua (la de RedHat 6.0), pero RedHat 6.1 usa una
   nueva glibc. Tendra que instalar los siguientes paquetes para
   asegurarse que el reenlazado funcione:

   compat-libs-5.2-2.i386.rpm

   compat-glibc-5.2-2.0.7.2.i386.rpm

   compat-egcs-5.2-1.0.3a.1.i386.rpm

   compat-egcs-c++-5.2-1.0.3a.1.i386.rpm

   compat-binutils-5.2-2.9.1.0.23.1.i386.rpm

   Para mas informacion consulte las notas correspondientes de SAP o
   los Readme de Oracle. Si no es posible (durante la instalacion no
   tuvimos tiempo suficiente para ello), se podrian utilizar los
   binarios originales, o los binarios reenlazados de un sistema
   original RedHat.

   Instale el paquete Tcl de RedHat para compilar el agente
   inteligente. Si no puede conseguir tcl-8.0.3-20.i386.rpm deberia
   funcionar una version mas reciente, por ejemplo
   tcl-8.0.5-30.i386.rpm para RedHat.

   Aparte del reenlazado, la instalacion es muy sencilla:

 # su - oraids
 # export TERM=xterm
 # export ORACLE_TERM=xterm
 # export ORACLE_HOME=/oracle/IDS
 # cd $ORACLE_HOME/orainst_sap
 # ./orainst

   Confirme todas las pantallas con Intro hasta que el software este
   instalado; todas excepto en la que debe quitar la marca de
   instalacion al visualizador de textos Oracle en linea, ya que no
   existe para Linux. Oracle intentara, gracias a esto, reenlazar con
   i386-glibc20-linux-gcc en lugar de gcc, egcs o
   i386-redhat-linux-gcc.

   Debido a la falta de tiempo decidimos usar los binarios de una
   version Oracle 8.0.5 PreProduction, despues de que nuestro primer
   intento de que funcionara la version del CD RDBMS fallara y viendo
   que encontrar y utilizar los RPM correctos hubiera sido una
   pesadilla.

     --------------------------------------------------------------

    10.7.9.2. Instalacion de Oracle 8.0.5 "Pre-production Release" para
    Linux (Kernel 2.0.33)

   La instalacion es bastante facil. Monte el CD e inicie el
   instalador. Le preguntara por la ubicacion del directorio home de
   Oracle, y copiara en el todos los binarios. (Nosotros no
   eliminamos los restos de una instalacion RDBMS anterior que no
   termino de llego a terminar).

   Tras esto la base de datos Oracle puede arrancar.

     --------------------------------------------------------------

  10.7.10. Instalacion desde el fichero comprimido de Linux Oracle 8.1.7

   Descomprima el fichero oracle81732.tgz (creado en el directorio de
   instalacion en un sistema Linux) y descomprimalo en
   /oracle/SID/817_32/.

     --------------------------------------------------------------

  10.7.11. Continue con la instalacion SAP R/3

   Revise las configuraciones del entorno de los usuarios idsamd
   (sidadm) y oraids (orasid). Ambos deben tener los ficheros
   .profile, .login y .cshrc con hostname correctamente configurado.
   En caso que el nombre del sistema sea el nombre cualificado
   completo tendra que cambiar hostname a hostname -s en los tres
   ficheros anteriormente citados.

     --------------------------------------------------------------

    10.7.11.1. Carga de la base de datos

   Hecho esto puede rearrancar R3SETUP o volver a arrancar la
   instalacion (dependiendo si eligio salir o no). R3SETUP crea las
   tablas y carga los datos (en 46B IDES, desde EXPORT1 a EXPORT6, en
   46C desde DISK1 a DISK4) mediante R3load.

   Cuando se termina la carga de la base de datos (que puede llevar
   un par de horas) se le pediran algunas contrasenas. En una
   instalacion de prueba puede usar unas contrasenas de compromiso.
   (use una contrasena de verdad si le preocupa siquiera ligeramente
   la seguridad):

                Pregunta                          Entrada             
   Enter Password for sapr3            sapIntro                       
   Confirum Password for sapr3         sapIntro                       
   Enter Password for sys              change_on_installEnter         
   Confirm Password for sys            change_on_installEnter         
   Enter Password for system           managerIntro                   
   Confirm Password for system         managerIntro                   

   Aqui tuvimos problemas con dipgntab en la instalacion de 4.6B.

     --------------------------------------------------------------

    10.7.11.2. Las escuchas

   Arranque las escuchas de Oracle con el usuario orasid de la
   siguiente manera:

 % umask 0; lsnrctl start

   Si no lo hace asi vera un error ORA-12546, ya que los sockets no
   tendran los permisos correctos. Consulte la nota 072984 de SAP.

     --------------------------------------------------------------

    10.7.11.3. Actualizacion de tablas MNLS

   Si tiene previsto importar idiomas que no sean Latin-1 en SAP
   tiene que actualizar las tablas "Multi National Language Support".
   Tiene mas informacion sobre esto en las notas de SAP OSS 15023 y
   45619. Si no es su caso puede saltarse esta parte de la
   instalacion de SAP.

     Nota: Aunque no necesite soporte MNLS sigue siendo necesario que
     revise la tabla TCPDB y que la inicialice si no lo ha hecho ya.
     Consulte las notas 0015023 y 0045619 de SAP para mas
     informacion.

     --------------------------------------------------------------

  10.7.12. Pasos para despues de la instalacion

    10.7.12.1. Solicitar una licencia SAP R/3

   Tiene que solicitar una licencia de SAP R/3. No tendra mas
   remedio, puesto que la licencia temporal que se usa durante la
   instalacion tiene un limite de validez de cuatro semanas.
   Necesitara la llave hardware. Entre al sistema como usuario idsadm
   y ejecute saplicense:

 # /sapmnt/IDS/exe/saplicense -get

   Si ejecuta saplicense sin parametros vera una lista de opciones.
   Una vez que tenga la licencia en su poder la podra instalar del
   siguiente modo:

 # /sapmnt/IDS/exe/saplicense -install

   Se le solicitara que introduzca los siguientes valores:

 SAP SYSTEM ID   = SID, 3 caracteres
 CUSTOMER KEY    = llave hardware, 11 caracteres
 INSTALLATION NO = instalacion, 10 caracteres
 EXPIRATION DATE = yyyymmdd, normalmente "99991231"
 LICENSE KEY     = licencia, 24 caracteres

     --------------------------------------------------------------

    10.7.12.2. Crear usuarios

   Cree un usuario dentro del cliente 000 (es necesario para algunas
   tareas que requieren hacerse dentro del cliente 000, pero con un
   usuario que no sea ni sap* ni ddic). Nosotros solemos elegir para
   este usuario el nombre de wartung (o service, ambos "servicio" en
   castellano). Los perfiles son sap_new y sap_all. Para mayor
   seguridad las contrasenas para usuarios por defecto dentro de
   todos los clientes deben cambiarse (incluidos los usuarios sap* y
   ddic).

     --------------------------------------------------------------

    10.7.12.3. Configurar sistema de transporte, perfil, modos de
    operacion, etc.

   Dentro del cliente 000 y con un usuario que no sea ddic ni sap*,
   haga al menos lo siguiente:

                           Tarea                          Transaccion 
   Configurar sistema de transporte, por ejemplo como     STMS        
   Stand-Alone Transport Domain Entity                    
   Crear / editar perfil para el sistema                  RZ10        
   Mantener modos de operacion e instancias               RZ04        

   Todos estos (y muchos mas) pasos para ejecutar despues de la
   instalacion se explican de forma detallada en las guias de
   instalacion de SAP.

     --------------------------------------------------------------

    10.7.12.4. Editar initsid.sap (initIDS.sap)

   El fichero /oracle/IDS/dbs/initIDS.sap contiene la copia de
   seguridad del perfil de de SAP. Aqui es donde debe definir el
   tamano de la cinta a utilizar, tipo de conpresion, etc. Las
   siguientes modificaciones nos permitirian ejecutar sapdba /
   brbackup:

 compress = hardware
 archive_function = copy_delete_save
 cpio_flags = "-ov --format=newc --block-size=128 --quiet"
 cpio_in_flags = "-iuv --block-size=128 --quiet"
 tape_size = 38000M
 tape_address = /dev/nsa0
 tape_address_rew = /dev/sa0

   Explicacion:

   compress: La cinta que usamos es una HP DLT1 que tiene compresion
   por hardware.

   archive_function: Define el comportamiento por omision del
   almacenaje de los logs de Oracle: los nuevos ficheros de log se
   guardan en cinta, los ficheros de log que ya han sido guardados se
   guardan de nuevo y luego se borran. Asi se evitan muchos problemas
   si necesita recuperar la base de datos y una de las cintas esta
   danada.

   cpio_flags: por omision se usa -B, que asigna un tamano de bloque
   de 5120 Bytes. HP recomienda un tamano de bloque de 32 K como
   minimo; usamos --block-size=128 para que sea de 64 K.
   Necesitaremos usar --format=newc porque tenemos numeros de inodo
   mayores a 65535. La ultima opcion (--quiet) se necesita ya que
   brbackup se queja en cuanto cpio imprime los numeros de bloque
   guardados.

   cpio_in_flags: Parametros necesarios para cargar datos desde la
   cinta. El formato es reconocido automaticamente.

   tape_size: La capacidad de almacenaje de la cinta. Por razones de
   seguridad (nosotros usamos compresion por hardware) el valor es
   ligeramente menor que el valor real.

   tape_address: El dispositivo (que no permite el rebobinado) que se
   usara con cpio.

   tape_address_rew: El dispositivo (que permite el rebobinado) que
   se usara con cpio.

     --------------------------------------------------------------

    10.7.12.5. Aspectos de la configuracion una vez concluida la
    instalacion

   Los siguientes parametros SAP deben personalizarse una vez
   concluida la instalacion (los ejemplos son para IDES 46B, 1 GB de
   memoria):

                   Nombre                            Valor            
   ztta/roll_extension                     250000000                  
   abap/heap_area_dia                      300000000                  
   abap/heap_area_nondia                   400000000                  
   em/initial_size_MB                      256                        
   em/blocksize_kB                         1024                       
   ipc/shm_psize_40                        70000000                   

   SAP Note 0013026:

                  Nombre                            Valor             
   ztta/dynpro_area                      2500000                      

   SAP Note 0157246:

                   Nombre                            Valor            
   rdisp/ROLL_MAXFS                       16000                       
   rdisp/PG_MAXFS                         30000                       

     Nota: En un sistema con 1 GB de memoria y los parametros arriba
     expuestos puede esperarse encontrar un consumo de memoria
     similar al siguiente:

 Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free

     --------------------------------------------------------------

  10.7.13. Problemas durante la instalacion

    10.7.13.1. Reiniciar R3SETUP una vez arreglado el problema

   R3SETUP se detiene si encuentra un error. Si ha revisado los logs
   y ha corregido el error reinicie R3SETUP; hagalo seleccionando la
   opcion REPEAT en el paso donde R3SETUP se detuvo.

   Cuando quiera reiniciar R3SETUP inicielo con el fichero R3S
   correspondiente:

 # ./R3SETUP -f CENTRDB.R3S

   en el caso de 4.6B, o con

 # ./R3SETUP -f CENTRAL.R3S

   en 4.6C; no importa si el error ocurrio con CENTRAL.R3S o con
   DATABASE.R3S.

     Nota: En algunas etapas, R3SETUP asume que la base de datos y
     los procesos SAP estan en marcha (como aquellos en los cuales se
     completaron los pasos). Si hay errores y por ejemplo la base de
     datos no se puede iniciar tendra que arrancar la base de datos y
     SAP manualmente una vez haya corregido los errores y antes de
     iniciar R3SETUP nuevamente.

     No olvide iniciar tambien la escucha de Oracle (como orasid con
     umask 0; lsnrctl start) si tambien tuvo que detenerlo (si por
     ejemplo hubo que reiniciar el sistema).

     --------------------------------------------------------------

    10.7.13.2. OSUSERSIDADM_IND_ORA durante R3SETUP

   Si R3SETUP se queja en este etapa edite la plantilla R3SETUP que
   este usando en ese momento (CENTRDB.R3S (en 4.6B) o CENTRAL.R3S o
   DATABASE.R3S (en 4.6C)). Ubique [OSUSERSIDADM_IND_ORA] o busque la
   unica entrada STATUS=ERROR y edite los siguientes valores:

 HOME=/home/sidadm (was empty)
 STATUS=OK (had status ERROR)
        

   Hecho esto, reinicie R3SETUP.

     --------------------------------------------------------------

    10.7.13.3. OSUSERDBSID_IND_ORA durante R3SETUP

   Es posible que R3SETUP se queje tambien en esta etapa. El error
   aqui es similar al de la fase OSUSERSIDADM_IND_ORA. Edite la
   plantilla R3SETUP que este usando (CENTRDB.R3S (en 4.6B) o
   CENTRAL.R3S o DATABASE.R3S (en 4.6C)). Ubique
   [OSUSERDBSID_IND_ORA] o busque la unica entrada STATUS=ERROR y
   edite los siguientes valores en esa seccion:

 STATUS=OK

   Hecho esto reinicie R3SETUP.

     --------------------------------------------------------------

    10.7.13.4. "oraview.vrf FILE NOT FOUND" durante la instalacion de
    Oracle

   No ha dejado sin seleccionar la opcion de instalar el visualizador
   de texto en linea de Oracle antes de iniciar la instalacion. Esta
   seleccionado para ser instalado, aunque la aplicacion no existe
   para Linux. Deje sin seleccionar el producto en el menu de
   instalacion de Oracle y reinicie la instalacion.

     --------------------------------------------------------------

    10.7.13.5. "TEXTENV_INVALID" durante R3SETUP, o inicio de RFC o
    SAPgui

   Si se encuentra con este error significa que falta el locale
   correcto. La nota 0171356 de SAP contiene una lista de RPM que
   deben instalarse (p.ej. saplocales-1.0-3, saposcheck-1.0-1 para
   RedHat 6.1). En caso de que ignore todos los errores relacionados
   y configure los STATUS correspondientes de ERROR a OK (en
   CENTRDB.R3S) cada vez que R3SETUP se queje y simplemente reinicie
   R3SETUP; el sistema SAP no estara configurado correctamente y no
   podra conectarse al sistema con SAPgui, aunque el sistema pueda
   arrancar. Si intenta conectar con el antiguo SAPgui de Linux
   recibira los siguientes mensajes:

 Sat May 5 14:23:14 2001
 *** ERROR => no valid userarea given [trgmsgo. 0401]
 Sat May 5 14:23:22 2001
 *** ERROR => ERROR NR 24 occured [trgmsgi. 0410]
 *** ERROR => Error when generating text environment. [trgmsgi. 0435]
 *** ERROR => function failed [trgmsgi. 0447]
 *** ERROR => no socket operation allowed [trxio.c 3363]
 Speicherzugriffsfehler

   Este comportamiento se debe a que SAP R/3 es incapaz de asignar
   correctamente un locale y tampoco puede configurarse a si mismo
   correctamente (faltan entradas en algunas tablas de la base de
   datos). Anada las siguientes entradas al fichero DEFAULT.PFL y
   podra conectarse a SAP (vea la nota 0043288):

 abap/set_etct_env_at_new_mode = 0
 install/collate/active = 0
 rscp/TCP0B = TCP0B

   Reinicie el sistema SAP. Puede conectar al sistema, aunque la
   configuracion de idioma o de pais puede que no funcione como se
   espera de ella. Una vez corregidas las configuraciones de pais (y
   proporcionados los locales adecuados) puede eliminar estas
   entradas de DEFAULT.PFL y el sistema SAP puede reiniciarse.

     --------------------------------------------------------------

    10.7.13.6. ORA-00001

   Este error solo aparece con Oracle 8.1.7 en FreeBSD 4.5. Se debe a
   que la base de datos Oracle no puede inicializarse correctamente y
   se viene abajo, dejando semaforos y memoria compartida en el
   sistema. El siguiente intento de iniciar la base de datos produce
   el error ORA-00001.

   Encuentrelos con ipcs -a y eliminelos con ipcrm.

     --------------------------------------------------------------

    10.7.13.7. ORA-00445 (Brackground Process PMON Did Not Start)

   Este error tuvo lugar con Oracle 8.1.7. Aparece si se arranca la
   base de datos con el "script" startsap (por ejemplo
   startsap_majestix_00) con el usuario prdadm.

   Una solucion (entre otras) es iniciar la base de datos con el
   usuario oraprd en lugar de hacerlo con svrmgrl:

 % svrmgrl
 SVRMGR> connect internal;
 SVRMGR> startup;
 SVRMGR> exit

     --------------------------------------------------------------

    10.7.13.8. ORA-12546 (Start Listener with Correct Permissions)

   Inicie la escucha de Oracle como usuario oraids con la siguiente
   orden:

 # umask 0; lsnrctl start

   De no ser asi puede encontrarse con el error ORA-12546, ya que los
   sockets no tendran los permisos adecuados. Consulte la nota de SAP
   0072984.

     --------------------------------------------------------------

    10.7.13.9. ORA-27102 (Out of Memory)

   Este error ocurre al tratar de usar valores mayores a 1 GB
   (1024x1024x1024) en MAXDSIZ y DFLDSIZ. Recibiremos, ademas, este
   otro error: "Linux Error 12: Cannot allocate memory".

     --------------------------------------------------------------

    10.7.13.10. [DIPGNTAB_IND_IND] during R3SETUP

   Consulte la nota de SAP 0130581 de (R3SETUP step (DIPGNTAB
   terminates). Por alguna razon durante la instalacion especifica
   IDES el proceso de instalacion no usaba el nombre de sistema
   correcto SAP "IDS" sino la cadena vacia "". Esto provocaba algunos
   errores menores en el acceso a directorios, ya que las rutas se
   generan dinamicamente en base a dicho SID (en este caso IDS). En
   lugar de ejecutar los accesos del siguiente modo :

 /usr/sap/IDS/SYS/...
 /usr/sap/IDS/DVMGS00

   se usaron las siguientes rutas:

 /usr/sap//SYS/...
 /usr/sap/D00

   Para continuar con la instalacion creamos un enlace y un
   directorio adicional:

 # pwd
 /compat/linux/usr/sap
 # ls -l
 total 4
 drwxr-xr-x 3  idsadm sapsys 512 May 5 11:20 D00
 drwxr-x--x 5  idsadm sapsys 512 May 5 11:35 IDS
 lrwxr-xr-x 1  root   sapsys 7 May 5 11:35 SYS -> IDS/SYS
 drwxrwxr-x 2  idsadm sapsys 512 May 5 13:00 tmp
 drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans

   Encontramos una descripcion de este comportamiento en las notas de
   SAP. (0029227 y 0008401). En la instalacion de SAP 4.6C no tuvimos
   estos problemas.

     --------------------------------------------------------------

    10.7.13.11. [RFCRSWBOINI_IND_IND] during R3SETUP

   Durante la instalacion de SAP 4.6C nos encontramos con este error,
   cuyo origen esta en un error que tuvo lugar anteriormente durante
   la propia instalacion. Busque en sus ficheros de log y corrija el
   problema.

   Si despues de buscar en los logs el error resulta ser el correcto
   (revise las notas de SAP), puede poner el STATUS del paso donde se
   produce el error de ERROR a OK (en el fichero CENTRDB.R3S) y
   reiniciar R3SETUP. Una vez finalizada la instalacion, tiene que
   ejecutar el informe RSWBOINS de la transaccion SE38. Consulte la
   nota SAP 0162266 para mas informacion sobre las fases RFCRSWBOINI
   y RFCRADDBDIF.

     --------------------------------------------------------------

    10.7.13.12. [RFCRADDBDIF_IND_IND] during R3SETUP

   Aqui sucede lo mismo de antes, asegurese, revisando los logs, de
   que la causa de este error no este en algun problema previo.

   Si en la nota de SAP 0162266 esta la solucion ponga el STATUS del
   paso donde se produce el error de ERROR a OK (en el fichero
   CENTRDB.R3S) y reinicie R3SETUP. Una vez finalizada la instalacion
   ejecute el informe RADDBDIF desde la transaccion SE38.

     --------------------------------------------------------------

    10.7.13.13. sigaction sig31: File size limit exceeded

   Este error ocurrio durante el inicio del proceso SAP disp+work. Si
   inicia SAP con el "script" startsap se inician los subprocesos que
   se separan y hacen el "trabajo sucio" de iniciar el resto de
   procesos de SAP, pero es importante saber que el propio "script"
   no notara si algo ha ido mal.

   Puede revisar si los procesos SAP se iniciaron correctamente con
   ps ax | grep SID, que le proporcionara una lista de todos los
   procesos de Oracle y de SAP. Si parece que algunos procesos no
   estan, o si no puede conectarse al sistema SAP revise los logs que
   encontrara en /usr/sap/SID/DVEBMGSnr/work/. Los ficheros que debe
   revisar son dev_ms y dev_disp.

   La senal 31 aparece si la cantidad de memoria compartida asignada
   a Oracle y SAP supera la definida dentro del fichero de
   configuracion del kernel y puede resolverse usando un valor mayor:

 # larger value for 46C production systems:
 options SHMMAXPGS=393216
 # smaller value sufficient for 46B:
 #options SHMMAXPGS=262144

     --------------------------------------------------------------

    10.7.13.14. Start of saposcol Failed

   Hay algunos problemas con el programa saposcol (version 4.6D). El
   sistema SAP utiliza saposcol para recoger datos del rendimiento
   del sistema. Este programa no es necesario para usar el sistema
   SAP, asi que el problema puede considerarse como poco importante.
   La version mas antigua (4.6B) funciona, pero no recoge todos los
   datos (muchas llamadas devolveran un 0, por ejemplo el uso de
   CPU).

     --------------------------------------------------------------

10.8. Temas avanzados

   Si siente curiosidad por saber como funciona la compatibilidad con
   Linux esta es la seccion que debe leer. La mayor parte de lo que
   sigue esta basado casi en su totalidad en un mensaje enviado por
   Terry Lambert <tlambert@primenet.com> a la lista lista de charla
   de FreeBSD (Message ID:
   <199906020108.SAA07001@usr09.primenet.com>).

     --------------------------------------------------------------

  10.8.1. ?Como funciona?

   FreeBSD dispone de una abstraccio denominada "cargador de clase en
   ejecucion". Esto no es mas que un bloque de co:digo incrustado en
   la llamada execve(2) del sistema.

   Historicamente las plataformas UNIX disponian de un unico cargador
   de binarios, que en ultima instancia (fallback) recurria al
   cargador #! para ejecutar cualesquiera interpretes o scripts de la
   shell. Ese cargador unico examinaba el numero magico (generalmente
   los 4 u 8 primeros bytes del fichero) para ver si era un binario
   reconocible por el sistema y, en tal caso, invocaba al cargador
   binario.

   Si no era de tipo binario, la llamada execve(2) devolvia un error
   y la shell intentaba empezar a ejecutarlo como ordenes shell,
   tomando por defecto como punto de partida "la shell actual, sea
   cual sea".

   Posteriormente se penso en hacer una modificacion de manera que
   sh(1) examinara los dos primeros caracteres, de modo que si eran
   :\n se llamaba a la shell csh(1) en su lugar (parece ser que en
   SCO fueron los primeros en utilizar ese truco).

   Lo que ocurre ahora es que FreeBSD dispone de una lista de
   cargadores, en lugar de uno solo. FreeBSD recorre esa lista de
   cargadores, con un cargador generico #! que sabe reconocer los
   interpretes en base a los caracteres que siguen al siguiente
   espacio en blanco, con /bin/sh como ultimo recurso.

   Para dar soporte a la ABI ("Application Binary Interface") de
   Linux, FreeBSD interpreta el numero magico como un binario ELF
   ("Executable and Linking Format"): En este punto no hace
   distincion entre FreeBSD, Solaris, Linux o cualquier otro SO que
   tenga un tipo de imagen ELF.

   El cargador ELF busca entonces una marca (brand) especial, una
   seccion de comentarios en la imagen ELF que no esta presente en
   los binarios ELF de SVR4/Solaris.

   Para que los binarios de Linux funcionen deben estar marcados con
   brandelf(1) como tipo Linux:

 # brandelf -t Linux file

   Hecho esto el cargador ELF vera la marca Linux en el fichero.

   Cuando el cargador ELF ve la marca Linux sustituye un puntero en
   la estructura proc. Todas las llamadas del sistema se indexan a
   traves de este puntero (en un sistema UNIX tradicional seria el
   <<array>> de estructura sysent[] que contiene las llamadas del
   sistema). Ademas, el proceso se marca con unos indicadores
   ("flags") para que el vector trampa del codigo de envio senales lo
   maneje de una forma determinada, asi como otros arreglos (menores)
   que seran utilizados por el modulo Linux del kernel.

   El vector de llamada del sistema Linux contiene, entre otras
   cosas, una lista de entradas sysent[] cuyas direcciones residen en
   el modulo del kernel.

   Cuando el binario Linux realiza una llamada al sistema, el codigo
   trampa extrae el puntero a la funcion de la llamada del sistema de
   la estructura proc, y asi obtiene los puntos de entrada a las
   llamadas del sistema Linux, no las de FreeBSD.

   Ademas, el modo Linux cambia la raiz de las busquedas de una forma
   dinamica. En efecto, esto es lo que hace la opcion union cuando se
   monta un sistema de ficheros (!y que no es lo mismo que el sistema
   de ficheros unionfs!). Primero se hace un intento de buscar el
   fichero en el directorio /compat/linux/ruta-original y solo
   despues, si lo anterior falla, se repite la busqueda en el
   directorio /ruta-original. Esto permite que se puedan ejecutar
   binarios que necesitan de otros binarios (por ejemplo las
   herramientas de programacion ("toolchain") de Linux pueden
   ejecutarse en su totalidad bajo la ABI de Linux). Esto significa
   tambien que los binarios Linux pueden cargar y ejecutar binarios
   FreeBSD si los binarios Linux equivalentes no se hallan presentes
   y que se puede poner una orden uname(1) en el arbol de directorios
   /compat/linux para poder estar seguros de que los binarios Linux
   no puedan decir que no estaban ejecutandose en Linux.

   En efecto, hay un kernel Linux en el kernel FreeBSD; las distintas
   funciones subyacentes que implementan todos los servicios
   proporcionados por el kernel son identicas en ambas, las tablas de
   entradas de llamadas del sistema en FreeBSD y en Linux:
   operaciones del sistema de ficheros, operaciones de memoria
   virtual, envio de senales IPC System V, etc. La unica diferencia
   es que los binarios FreeBSD reciben sus funciones de conexion
   ("glue") y los binarios Linux las suyas (la mayoria de los
   sistemas operativos mas antiguos solo tienen sus propias funciones
   de conexion: direcciones de funciones en un "array" de estructura
   sysent[] estatica y global, en lugar de direcciones de funciones
   que se extraen a partir de un puntero inicializado dinamicamente
   en la estructura proc del proceso que hace la llamada).

   ?Cual es entonces la ABI nativa de FreeBSD? No importa.
   Basicamente, la unica diferencia es (ahora mismo; esto podria
   cambiar y probablemente lo hara en una release futura) que las
   funciones de conexion de FreeBSD estan enlazadas estaticamente en
   el kernel mientras que las de Linux pueden estarlo tambien
   estaticamente o se puede acceder a ellas por medio de un modulo
   del kernel.

   Bien, pero ?de verdad es esto una emulacion? No. Es una
   implementacion ABI, no una emulacion. No hay un emulador
   involucrado (ni un simulador, para adelantarnos a la siguiente
   pregunta).

   Entonces ?por que a veces se le llama "emulacion Linux"? !Para
   hacer mas dificil el vender FreeBSD! En serio, se debe a que la
   primera implementacion se hizo en un momento en que realmente no
   habia ninguna palabra distinta a esa para describir lo que se
   estaba haciendo; decir que FreeBSD ejecutaba binarios Linux no era
   cierto si no se compilaba el codigo o se cargaba un modulo; hacia
   falta una forma de describir todo esto y acabamos usando "emulador
   Linux".

                    III. Administracion del sistema.

   Los restantes capitulos de este libro cubren todos los aspectos de
   administracion de un sistema FreeBSD. Cada capitulo comienza
   describiendo lo que sera aprendido una vez finalizada la lectura,
   explicando tambien los conocimientos minimos necesarios para una
   comprension satisfactoria del texto.

   Estos capitulos estan disenados para leerse cuando se necesita la
   informacion. No es necesario leerlos en un determinado orden ni es
   necesario leerlos todos antes de comenzar a usar FreeBSD.

   Tabla de contenidos

   11. Configuracion y Adaptacion del Sistema

   12. El proceso de arranque en FreeBSD

   13. Usuarios y administracion basica de cuentas

   14. Seguridad

   15. Jaulas

   16. Mandatory Access Control

   17. Auditoria de eventos de seguridad

   18. Almacenamiento

   19. GEOM: Marco de trabajo modular de transformacion de discos

   20. El Gestor de Volumenes Vinum

   21. Virtualizacion

   22. Localizacion - Uso y configuracion de I18N/L10N

   23. Lo ultimo de lo ultimo

     --------------------------------------------------------------

          Capitulo 11. Configuracion y Adaptacion del Sistema

   Configuracion y Adaptacion del Sistema

     --------------------------------------------------------------

11.1. Configuracion de Tarjetas de Red

   Pendiente de Traduccion

     --------------------------------------------------------------

11.2. "Arrancar servicios"

   Pendiente de Traduccion

     --------------------------------------------------------------

11.3. "Soft Updates"

   Pendiente de Traduccion

     --------------------------------------------------------------

11.4. Anadir espacio swap

   Pendiente de traduccion

     --------------------------------------------------------------

             Capitulo 12. El proceso de arranque en FreeBSD

12.1. Sinopsis

   Al proceso de inicio del sistema y carga del sistema operativo se
   le conoce como "mecanismo de arranque" (bootstrap), o simplemente
   "arranque" (booting). El proceso de arranque de FreeBSD provee de
   gran flexibilidad al configurar lo que ocurre cuando se inicia el
   sistema, permitiendole seleccionar de diferentes sistemas
   operativos instalados en el mismo ordenador, o inclusive
   diferentes versiones del mismo sistema oprativo o kernels
   instalados.

   Este capitulo detalla las opciones de configuracion que puede
   manejar y como personalizar el proceso de arranque de FreeBSD.
   Esto incluye todo lo que sucede hasta que el kernel de FreeBSD
   comienza con la comprobacion de dispositivos y se inicializa
   init(8). En caso de que usted desconozca cuando ocurre todo esto,
   esto sucede cuando el color del texto que aparece al iniciar el
   sistema, cambia de blanco a gris.

   Una vez que concluya con la lectura de este capitulo, usted sabra:

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

     * Las opciones que puede manejar con los componentes del
       mecanismo de arranque de FreeBSD, para controlar el proceso de
       inicio del sistema.

     Solo x86: El presente capitulo describe unicamente el proceso de
     inicio, para sistemas FreeBSD que corren en plataformas Intel
     x86.

     --------------------------------------------------------------

12.2. El problema que representa arrancar el sistema

   El encender una computadora e iniciar el sistema operativo, trae
   consigo un dilema interesante. Por definicion, la computadora no
   sabe hacer nada, hasta que el sistema operativo ha sido cargado.
   Esto incluye la ejecucion de programas desde el disco duro. Asi
   que este es el dilema; si la computadora no sabe hacer nada hasta
   que se cargue el sistema operativo, y el sistema operativo es un
   conjunto de programas que residen en el disco duro, ?Como es que
   arranca el sistema operativo?

   Este problema se asemeja a un problema del libro Las Aventuras del
   Baron Munchausen. Donde un personaje ha caido parcialmente en un
   hoyo, y ha podido salir al tomarse de las cintas de sus botas y
   jalarse hacia fuera. En los anos mozos de la computacion, el
   termino utilizado para hablar sobre el proceso de carga del
   sistema operativo era mecanismo de arranque (bootstrap), que por
   efectos de simplificacion ahora conocemos como "arranque"
   (booting).

   En equipos con arquitectura x86, el Sistema Basico de
   Entrada/Salida (BIOS) es el responsable de cargar el sistema
   operativo. Para hacer esto, el BIOS busca en el disco duro el
   Registro Maestro de Arranque (RMA) (N de T. Conocido como
   MBR--Master Boot Record), el cual debe localizarse en un lugar
   especifico del disco. El BIOS cuenta con suficiente informacion,
   para cargar y ejecutar el RMA, y asumir que el RMA puede
   encargarse del resto de las tareas necesarias en la carga del
   sistema operativo.

   Si usted solo cuenta con un sistema operativo instalado en su
   disco duro, el RMA estandar sera suficiente. Este RMA buscara la
   primer particion del disco que pueda arrancar, y posteriormente
   ejecutara el codigo restante de dicha particion, para efecto de
   completar la carga del sistema operativo.

   Si usted cuenta con varios sistemas operativos instalados en su
   disco, entonces puede hacer uso de un RMA diferente, uno que
   despliegue una lista de los diferentes sistemas operativos, y le
   permita escoger cual de ellos desea que se cargue. FreeBSD cuenta
   con un RMA de este tipo que puede ser instalado, asi como otros
   distribuidores de sistemas operativos cuentan con RMAs
   alternativos.

   En el caso de FreeBSD, el resto del mecanismo de arranque, esta
   dividido en tres etapas. La primer etapa es ejecutada por al RMA,
   que sabe lo suficiente como para poner a la computadora en un
   estado especifico y ejecutar la segunda etapa. La segunda etapa
   puede hacer un poco mas que esto, antes de ejecutar la tercer
   etapa. La tercer etapa finaliza el trabajo de carga del sistema
   operativo. El trabajo es dividido en tres etapas, debido a las
   limitantes que tiene una PC, en cuanto al tamano de los programas
   a ejecutar, durante las etapas uno y dos. El encadenar estas
   tareas, le permiten a FreeBSD contar con un arrancador mas
   flexible.

   Posteriormente el kernel es inicializado y comienza con la
   comprobacion de dispositivos, y prepararlos para su uso. Una vez
   que el proceso de arranque del kernel ha finalizado, el kernel
   transfiere el control al proceso de usuario init(8), quien se
   asegura de que los discos se encuentren en buen estado para su
   uso. Posteriormente init(8) inicia la configuracion fuente a nivel
   de usuario, que monta los sistemas de ficheros, configura las
   tarjetas de red para que pueden comunicarse en la red, y
   comunmente inicia todos los procesos que normalmente son
   ejecutados en un sistema FreeBSD al arrancar el mismo.

     --------------------------------------------------------------

12.3. El RMA y las etapas de arranque uno, dos y tres

  12.3.1. RMA, /boot/boot0

   El RMA de FreeBSD, se localiza en /boot/boot0. Este es una copia
   del RMA, ya que el RMA real debe localizarse en una parte especial
   del disco duro, fuera de la area de FreeBSD.

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

   Ejemplo 12-1. Pantalla boot0

 F1 DOS
 F2 FreeBSD
 F3 Linux
 F4 ??
 F5 Drive 1

 Default: F2

   Es sabido que otros sistemas, en particular Windows 95,
   sobreescriben el RMA con el suyo. Si esto le sucede, o bien desea
   reemplazar su RMA actual con el RMA de FreeBSD, entonces puede
   utilizar las siguientes ordenes.

 # fdisk -B -b /boot/boot0 dispositivo

   Donde dispositivo es aquel, desde el cual usted pretende arrancar
   el sistema, tal como ad0 para el disco conectado al primer IDE,
   ad2 para el disco maestro conectado al IDE secundario, da0 para el
   primer disco SCSI, y asi sucesivamente.

   Por otro lado, si usted es un usuario de Linux, y prefiere que la
   aplicacion LILO controle el proceso de arranque, puede editar el
   fichero /etc/lilo.conf para incluir a FreeBSD, o bien seleccionar
   la opcion Leave The Master Boot Record Untouched durante el
   proceso de instalacion. Si ha instalado el gestor de arranque de
   FreeBSD, puede arrancar Linux y modificar el fichero de
   configuracion de LILO, /etc/lilo.conf, anadiendo la siguiente
   opcion:

 other=/dev/hdXY
 table=/dev/hdb
 loader=/boot/chain.b
 label=FreeBSD

   lo que permitira el arranque de FreeBSD y Linux, por medio de
   LILO. En nuestro ejemplo hemos utilizado XY para especificar el
   disco utilizado y su particion. Si usted utiliza un sistema SCSI,
   debera cambiar /dev/hdXY por algo similar a /dev/sdXY, que
   nuevamente utiliza la sintaxis XY. La opcion loader=/boot/chain.b
   puede omitirse si usted cuenta con ambos sistemas operativos en el
   mismo disco. Una vez que esto se ha completado, puede ejecutar
   /sbin/lilo -v para que se actualicen los cambios en el sistema, lo
   cual debera verificarse con los mensajes que aparezcan en
   pantalla.

     Nota: N de T: La opcion mencionada como; Leave The Master Boot
     Record Untouched, se mostrara "tal cual" aparece en este
     documento, una vez que ha terminado la fase de particion del
     disco duro.

     --------------------------------------------------------------

  12.3.2. Etapa uno, /boot/boot1, y etapa dos, /boot/boot2

   Conceptualmente las estapas uno y dos, son parte del mismo
   programa, en la misma area del disco. Por cuestiones de espacio se
   han dividido en dos, pero estas siempre se instalaran de manera
   conjunta.

   Estas son localizadas en el sector de arranque, de la particion de
   arranque, que es donde boot0, o cualquier otro programa del RMA
   espera encontrar el programa que dara continuacion al proceso de
   arranque. Los ficheros localizados bajo el directorio /boot son
   copias de los ficheros reales, que se localizan fuera del sistema
   de ficheros de FreeBSD.

   El fichero boot1 es muy simple, en virtud de que solo puede tener
   un tamano de 512 bytes, y conocer simplemente del etiquetador de
   discos de FreeBSD (disklabel), el cual almacena la informacion de
   las particiones, para efecto de localizar y ejecutar boot2.

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

   En virtud de que el cargador (loader) es mucho mas sofisticado, y
   provee una configuracion de arranque mas sencilla de utilizar,
   boot2 la ejecuta normalmente, una vez que ha terminado de
   solicitar el arranque del kernel directamente.

   Ejemplo 12-2. Pantalla de boot2

 >> FreeBSD/i386 BOOT
 Default: 0:ad(0,a)/kernel
 boot:

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

 # disklabel -B particion

   Donde particion es el disco y particion del cual pretende arrancar
   el sistema, tal como ad0s1 para la primer particion del disco
   Mastro--Primario.

     Modo peligrosamente dedicadoSi solo utiliza el nombre del disco,
     tal como ad0, al usar disklabel(8) creara un disco
     peligrosamente dedicado, sin particion alguna. Seguramente esto
     no es lo que desea hacer, asi que asegurese dos veces antes de
     presionar la tecla Return cuando utilice disklabel(8).

     --------------------------------------------------------------

  12.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 configuracion,
   utilizando una serie de ordenes integradas de facil uso,
   respaldado por un interprete mas poderoso, con una serie de
   ordenes de mayor complejidad.

     --------------------------------------------------------------

    12.3.3.1. Flujo del programa cargador

   Durante la inicializacion del sistema, el cargador hara una
   comprobacion en busca de una consola y discos, y sabra de que
   disco se encuentra arrancando. Establecera las variables
   necesarias, y posteriormente es iniciado el interprete donde se
   pueden introducir ordenes desde un "script" o de manera
   interactiva.

   Posteriormente el cargador leera el fichero /boot/loader.rc, que
   por default lee la informacion 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 modulo y kernel
   seleccionado.

   Finalmente, y por default, el cargador hace una pausa contando 10
   segundos y en espera de que al presionar una tecla se interrumpa
   el proceso, de no ser asi, procedera a arrancar el kernel. En el
   caso de que al hacer esta pausa, se haya presionado una tecla
   (diferente de Return), el proceso sera interrumpido y se nos
   mostrara un "prompt", que entiende el conjunto de ordenes de
   facil-uso, y donde el usuario puede ajustar ciertas variables,
   cargar y descargar todos los modulos, y tambien arrancar o
   reiniciar el sistema.

     --------------------------------------------------------------

    12.3.3.2. Ordenes internas del cargador

   A continuacion se presentan las ordenes mas comunes del cargador.
   Para ver una descripcion detallada de los mismos, por favor
   consulte la pagina de manual de loader(8)

   autoboot segundos

           Procede a iniciar el arranque del sistema, si es que no es
           interrumpido el periodo dado, en segundos. Despliega una
           cuenta regresiva, y el tiempo dado es de 10 segundos.

   boot [-opciones] [nombre_del_kernel]

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

   boot-conf

           Rehace la configuracion automatica de modulos en funcion a
           las variables definidas, como sucede al arrancar. Esta
           opcion solo tiene sentido utilizarla, si en primer lugar
           hemos usado unload, y hemos modificado alguna variable,
           siendo lo mas comun el kernel.

   help [tema]

           Muestra la ayuda de un tema especifico, que lee del
           fichero /boot/loader.help. Si el tema que se indica es
           index, entonces se mostrara una lista de todos los temas
           disponibles.

   include fichero ...

           Procesa el fichero que se ha especificado. El fichero se
           lee e interpreta linea por linea. Cualquier error detendra
           inmediatamente a include.

   load [-t tipo] fichero

           Carga el kernel, modulo del kernel, o el fichero del tipo
           dado, en base al fichero especificado. Cualquier argumento
           que se anada, sera pasado al fichero.

   ls [-l] [ruta]

           Despliega un listado de todos los ficheros que se
           localizan en la ruta especificada, o en el directorio
           raiz, si es que no se le especifica ruta alguna. Si se
           utiliza la opcion -l, tambien se mostrara el tamano de los
           ficheros.

   lsdev [-v]

           Nos muestra una lista de todos los dispositivos desde los
           cuales puede ser posible cargar modulos. Si se incluye la
           opcion -v, el listado que se obtiene cuenta con mas
           detalle.

   lsmod [-v]

           Despliega los modulos cargados. Si se utiliza la opcion
           -v, se mostraran mas detalles.

   more fichero

           Despliega el contenido del fichero especificado, haciendo
           una pausa a cada numero determinado de LINEAS mostradas.

   reboot

           Reinicia el sistema de forma inmediata.

   set variable, set variable=valor

           Especifica los valores de las variables de entorno del
           cargador.

   unload

           Remueve todos los modulos cargados.

     --------------------------------------------------------------

    12.3.3.3. Ejemplos de uso del cargador

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

     * Para arrancar simplemente su kernel usual, pero en modo
       mono-usuario, debera hacer lo siguiente:

 boot -s

     * Para descargar su kernel usual y sus modulos correspondientes,
       y posteriormente cargar su kernel anterior (o cualquier otro):

 unload
 load kernel.old

       Puede utilizar kernel.GENERIC para referirse al kernel
       generico actual que viene con la instalacion, o bien puede
       utilizar kernel.old para hacer referencia al kernel anterior
       (por ejemplo, cuando ha actualizado su sistema o ha
       recompilado su propio kernel).

         Nota: Utilice lo siguiente para cargar sus modulos actuales
         con otro kernel:

 unload
 set kernel="kernel.old"
 boot-conf

     * Para cargar un escrito de configuracion (script que de forma
       automatica hara todo lo que normalmente hace usted de forma
       manual al momento de ejecutarse el configurador de arranque):

 load -t escrito_de_configuracion /boot/kernel.conf

     --------------------------------------------------------------

12.4. Interaccion con el kernel durante el arranque

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

     --------------------------------------------------------------

  12.4.1. Opciones de arranque del kernel

   He aqui las opciones de arranque mas comunes:

   -a

           durante la inicializacion del kernel, pregunta por los
           dispositivos a utilizar, para montar el sistema de
           ficheros raiz.

   -C

           arranque desde una unidad de CDROM.

   -c

           ejecuta UserConfig, la utilidad de configuracion 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
     pagina de ayuda boot(8) para mas informacion al respecto.

     --------------------------------------------------------------

12.5. Device Hints

   Escrito por Tom Rhodes.

   Pendiente de Traduccion

     --------------------------------------------------------------

12.6. Init: inicializacion del proceso de control

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

     --------------------------------------------------------------

  12.6.1. Secuencia automatica de reinicio

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

     --------------------------------------------------------------

  12.6.2. Modo monousuario

   A este modo se puede llegar por medio de la secuencia automatica
   de reinicio, o por medio de la opcion -s en el arranque de usuario
   o al establecer la variable boot_single en el cargador.

   Tambien desde el modo multi-usuario se puede acceder, al utilizar
   shutdown sin la opcion de reinicio (-r) o la de apagado (-h) del
   sistema.

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

   Ejemplo 12-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 fisicamente su consola, por lo que desea asegurarse de
     que solo quien conoce la contrasena del superusuario puede
     ingresar al sistema en modo mono-usuario, y no que desea
     ejecutar la consola inseguramente. Esto es, si desea contar con
     seguridad escoja la opcion insecure, y no secure.

     --------------------------------------------------------------

  12.6.3. Modo multiusuario

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

     --------------------------------------------------------------

    12.6.3.1. Configuracion-Fuente(rc)

   La configuracion fuente lee la configuracion por default del
   fichero /etc/defaults/rc.conf, y detalles especificos del sistema
   desde el fichero /etc/rc.conf, y posteriormente procede a montar
   los sistemas de ficheros del sistema, descritos en /etc/fstab,
   iniciar servicios de red, asi como varios demonios del sistema,
   para finalmente ejecutar los escritos (scripts) de configuracion
   instalados por paquetes, localmente.

   La pagina de ayuda rc(8) es una buena referencia para conocer mas
   de este tipo de ficheros, asi como examinar los mismos ficheros.

     --------------------------------------------------------------

12.7. Secuencia de apagado

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

     --------------------------------------------------------------

        Capitulo 13. Usuarios y administracion basica de cuentas

   Contributed by Neil Blakey-Milner.

13.1. Sinopsis

   FreeBSD permite que varios usuarios usen el mismo ordenador.
   Obviamente, solo uno de estos usuarios puede sentarse frente al
   monitor y al teclado en un momento dado [6] , pero cualquier
   numero de usuarios puede entrar por la red para hacer su trabajo.
   Para usar el sistema cada usuario ha de tener una cuenta.

   Despues de leer este capitulo sabras:

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

     * Como anadir cuentas.

     * Como eliminar cuentas.

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

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

     * Como usar grupos para facilitar la administracion de cuentas.

   Antes de leer este capitulo deberias:

     * Entender los conceptos basicos de Unix y FreeBSD (Capitulo 3).

     --------------------------------------------------------------

13.2. Introduccion

   Todos los accesos al sistema se consiguen via cuentas, y todos los
   procesos son ejecutados por usuarios, por ello la administracion
   de usuarios y cuentas es de una gran importancia en sistemas
   FreeBSD.

   Cada cuenta en un sistema FreeBSD tiene cierta informacion
   asociada que la identifica.

   Nombre de usuario

           El nombre de usuario como se le entraria al prompt login:.
           Los nombres de usuario han de ser unicos en la
           computadora; no puede haber dos usuarios con el mismo
           nombre de usuario. Existen algunas reglas para la creacion
           de nombres de usuario validos documentadas en passwd(5);
           tipicamente se usarian nombres de usuario de a lo sumo
           ocho caracteres, todos ellos en minuscula.

   Contrasena

           Cada cuenta tiene una contrasena asociada. La contrasena
           puede ser vacia, en cuyo caso no se requerira ninguna para
           acceder al sistema. Esto normalmente es una mala idea;
           cada cuenta deberia tener una constrasena no vacia.

   Identificador de usuario (UID)

           El UID es un numero entre 0 y 65536 que sirve para
           identificar univocamente al usuario en el sistema.
           Internamente, FreeBSD usa el UID para identificar usuarios
           y cualquier comando de FreeBSD que permita especificar un
           nombre de usuario convertira este al UID antes de trabajar
           con el. Esto significa que puedes tener varias cuentas con
           nombres de usuario distintos pero con el mismo UID. En lo
           que a FreeBSD respecta, tales cuentas son un solo usuario.
           Es improbable que alguna vez tengas que hacer algo asi.

   Identificador de grupo (GID)

           El GID es un numero entre 0 y 65536 que sirve para
           identificar univocamente el grupo principal al cual
           pertenece un usuario. Los grupos son un mecanismo para
           controlar el acceso a recursos del sistema en base al GID,
           en vez del UID. Esto puede reducir significativamente el
           tamano de algunos ficheros de configuracion. Un usuario
           puede pertencer a mas de un grupo.

   Clase de login

           Las clases de login son una extension al mecanismo de
           grupos que ofrecen una mayor flexibilidad a la hora de
           adaptar el sistema a distintos usuarios.

   Tiempo de cambio de contrasena

           Por defecto FreeBSD no obliga a los usuarios a cambiar su
           contrasena periodicamente. Se puede requerir esto a
           determinados usuarios, haciendo que algunos o todos deban
           cambiar sus contrasenas al cabo de cierto periodo de
           tiempo.

   Tiempo de expiracion de cuentas

           Por defecto las cuentas en FreeBSD no expiran. Si estas
           creando cuentas que sabes que van a tener un tiempo
           limitado de vida, por ejemplo, las cuentas de los
           estudiantes de una escuela, entonces puedes especificar
           cuando expiran. Una vez vencido su tiempo de expiracion
           una cuenta no puede ser usada para entrar en el sistema,
           si bien sus directorios y archivos seran conservados.

   Nombre completo de usuario

           El nombre de usuario identifica univocamente a una cuenta
           para FreeBSD, pero no refleja su verdadero nombre
           necesariamente. Esta informacion 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 hallara cuando
           entre. Una convencion usual consiste en poner todos los
           directorios home en /home/nombre_de_usuario o en
           /usr/home/nombre_de_usuario. Los usuarios guardarian sus
           archivos personales en sus directorios home, y en
           cualquier directorio que creasen alli.

   Shell de usuario

           La shell provee el entorno por defecto mediante el cual
           los usuarios interactuan con el sistema. Existen varios
           tipos de shell y los usuarios experimentados tendran sus
           propias preferencias, que pueden expresarse en la
           configuracion de su cuenta.

   Existen principalmente tres tipos de cuentas; la cuenta de
   superusuario, las cuentas de usuarios del sistema, y las de
   usuarios. La cuenta de superusuario, normalmente llamada root, se
   usa para administrar el sistema sin limitaciones en los
   privilegios. Los usuarios del sistema utilizan servicios del
   mismo. Finalmente, las cuentas de usuarios son usadas por gente
   real, aquellos que entran, leen correo, etcetera.

     --------------------------------------------------------------

13.3. La cuenta superusuario

   La cuenta superusuario, normalmente llamada root, viene
   preconfigurada para facilitar la administracion del sistema, y no
   deberia ser utilizada para tareas cotidianas como enviar o recibir
   correo, exploracion general del sistema, o programacion.

   Esto es asi porque el superusuario, a diferencia de las cuentas de
   usuario, puede operar sin limites, y un mal uso de la cuenta de
   superusuario puede conllevar desastres espectaculares. Las cuentas
   de usuario no pueden destruir el sistema por un error, por ello es
   generalmente mejor utilizar cuentas de usuario normales cuando sea
   posible, a no ser que especialmente necesites privilegios extra.

   Deberias comprobar siempre un par o tres de veces los comandos que
   ejecutas como superusuario, ya que un espacio de mas o un caracter
   omitido pueden significar una perdida de datos irreparable.

   Asi pues, lo primero que deberias hacer despues de leer este
   capitulo es crear una cuenta sin privilegios de uso general para
   ti si aun no la tienes. Esto aplica tanto si trabajas en una
   maquina con varios usuarios como si trabajas en una maquina con un
   solo usuario. Mas adelante, en este mismo capitulo, explicamos
   como crear cuentas adicionales, y como cambiar de usuario normal a
   superusuario.

     --------------------------------------------------------------

13.4. Cuentas de sistema

   Los usuarios de sistema son aquellos que corren servicios como
   DNS, correo, servidores web, etc. Esto es asi por seguridad; si
   todos los servicios corrieran como superusuario podrian actuar sin
   ninguna restriccion.

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

   nobody es el usuario de sistema sin privelegios generico. No
   obstante, es importante tener en cuenta que cuantos mas servicios
   use nobody, mas ficheros y procesos estaran asociados con dicho
   usuario, y en consecuencia mas privilegiado sera.

     --------------------------------------------------------------

13.5. Cuentas de usuario

   Las cuentas de usuario constituyen la principal via de acceso al
   sistema para la gente real. Estas cuentas aislan al usuario del
   entorno, impidiendo que pueda danar al sistema o a otros usuarios,
   y permitiendo a su vez que pueda personalizar su entorno sin que
   esto afecte a otros.

   Cada persona que acceda a tu sistema deberia tener una sola cuenta
   de usuario. Esto te permite averiguar quien esta haciendo que,
   evita que interfieran las configuraciones de distintos usuarios,
   que unos puedan leer el correo de otros, etcetera.

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

     --------------------------------------------------------------

13.6. Modificacion de cuentas

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

   +----------------------------------------------------------------+
   | Comando |                       Resumen                        |
   |---------+------------------------------------------------------|
   | adduser | La aplicacion de linea de comandos recomendada para  |
   |         | anadir nuevos usuarios.                              |
   |---------+------------------------------------------------------|
   | rmuser  | La aplicacion de linea de comandos recomendada para  |
   |         | eliminar usuarios.                                   |
   |---------+------------------------------------------------------|
   | chpass  | Una herramienta flexible para modificar la base de   |
   |         | datos de usuarios.                                   |
   |---------+------------------------------------------------------|
   | passwd  | Una herramienta de linea de comandos simple para     |
   |         | cambiar contrasenas de usuario.                      |
   |---------+------------------------------------------------------|
   | pw      | Una herramienta potente y flexible para modificar    |
   |         | cualquier aspecto de las cuentas de usuario.         |
   +----------------------------------------------------------------+

     --------------------------------------------------------------

  13.6.1. adduser

   adduser es un programa simple para anadir usuarios. Crea entradas
   en los archivos de sistema passwd y group. Tambien crea un
   directorio home para el nuevo usuario, copia alli ficheros de
   configuracion por defecto ("dotfiles") de /usr/share/skel, y
   opcionalmente puede enviar al usuario un mensaje de bienvenida.

   Para crear el fichero inicial de configuracion usa adduser -s
   -config_create. [7] A continuacion configuramos valores por
   defecto para adduser y creamos nuestra primera cuenta de usuario,
   dado que utilizar root para uso normal del sistema es pernicioso y
   peligroso.

   Ejemplo 13-1. Configuracion de adduser

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

 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_-]: jru
 Enter full name []: J. Random User
 Enter shell csh date no sh tcsh zsh [zsh]:
 Enter home directory (full path) [/home/jru]:
 Uid [1001]:
 Enter login class: default []:
 Login group jru [jru]:
 Login group is ``jru''. Invite jru into other groups: guest no
 [no]: wheel
 Enter password []:
 Enter password again []:

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

   En resumen, cambiamos la shell por defecto a zsh (una shell
   alternativa incluida en la coleccion de ports), y deshabilitamos
   el envio de un mensaje de bienvenida a nuevos usuarios. Luego
   grabamos la configuracion, creamos una cuenta para jru, y nos
   aseguramos de que jru este en el grupo wheel (de modo que puede
   asumir el papel de root via el comando su).

     Nota: La contrasena que escribes no se muestra, tampoco se
     muestran asteriscos. Asegurate de no entrar dos veces una
     contrasena equivocada.

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

     --------------------------------------------------------------

  13.6.2. rmuser

   Puedes usar rmuser para eliminar completamente del sistema a un
   usuario. rmuser efectua 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 contrasenas 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 areas en las que se
       guardan archivos temporales como /tmp.

    8. Finalmente, elimina el nombre de usuario de todos aquellos
       grupos a los que pertenece en /etc/group.

         Nota: Si un grupo queda vacio y el nombre del grupo coincide
         con el del usuario, el grupo es eliminado; esto complementa
         la creacion de grupos por usuario de adduser(8).

   rmuser no puede ser usado para eliminar cuentas de superusuario,
   dado que algo asi es casi siempre senal de masiva destruccion.

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

   Ejemplo 13-2. Eliminacion interactiva de cuenta con rmuser

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

     --------------------------------------------------------------

  13.6.3. chpass

   chpass cambia informacion de los usuarios en base de datos como
   contrasenas, shells y datos personales.

   Los administradores del sistema, como el superusuario, son los
   unicos que pueden modificar la informacion y contrasenas de otros
   usuarios con chpass.

   Cuando no le pasamos mas opciones, salvo un nombre de usuario
   opcional, chpass muestra un editor con informacion de usuario.
   Cuando se sale del editor la base de datos de usuarios se
   actualiza con la nueva informacion.

   Ejemplo 13-3. chpass interactivo ejecutado por el superusuario

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

 Expire [month day year]:
 Class:
 Home directory: /home/jru
 Shell: /usr/local/bin/tcsh
 Full Name: J. Random User
 Office Location:
 Office Phone:
 Home Phone:
 Other information:

   Un usuario normal puede modificar un pequeno subconjunto de esta
   informacion, y solo para si mismo.

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

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

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

     --------------------------------------------------------------

  13.6.4. passwd

   passwd es el comando que se usa normalmente para cambiar tu propia
   contrasena como usuario o, como superusuario, la de otros
   usuarios.

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

   Ejemplo 13-5. Cambio de tu contrasena

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

   Ejemplo 13-6. Cambio de la contrasena de otro usuario como
   superusuario

 # passwd jru
 Changing local password for jru.
 New password:
 Retype new password:
 passwd: updating the database...
 passwd: done

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

     --------------------------------------------------------------

  13.6.5. pw

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

     --------------------------------------------------------------

13.7. Limitar a los usuarios

   En un sistema multiusuario es probable que no confies en que el
   sistema no vaya a ser danado por ningun usuario.

   Las cuotas de disco permiten al administrador decirle al sistema
   de ficheros que cantidad de espacio de disco puede utilizar un
   usuario; ademas, ofrecen una manera rapida de comprobar el uso de
   disco de un usuario sin tener que calcularlo cada vez. Las cuotas
   se estudian en el capitulo de quotas.

   El resto de limites 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 semantica
   precisa esta fuera del alcance de esta seccion, pero se describe
   con detalle en la pagina de manual login.conf(5). Es suficiente
   decir que cada usuario es asignado a una clase de login (default
   por defecto), y que cada clase de login tiene un conjunto de
   capacidades asociado. Una capacidad de login es un par
   nombre=valor, donde nombre es un identificador conocido y valor
   una cadena de texto arbitraria que se procesa en funcion del
   nombre. Establecer clases y capacidades de login es bastante
   sencillo y tambien se describe en login.conf(5).

   Los limites de recursos son diferentes de las capacidades de login
   en dos sentidos. En primer lugar, para cada limite existe un
   limite blando (actual) y uno duro. Un limite blando puede ser
   ajustado por el usuario o una aplicacion, pero no puede ser mas
   alto que el limite duro. Este ultimo puede ser disminuido por el
   usuario pero nunca aumentado. En segundo lugar, la mayoria de los
   limites de recursos aplican a un usuario concreto por proceso, no
   globalmente. Notese, no obstante, que estas diferencias vienen
   impuestas por como se tratan los limites especificamente, no por
   la implementacion del marco de capacidades de login (es decir, en
   realidad no constituyen un caso especial de capacidades de login).

   Sin mas, a continuacion veremos los limites de recursos mas
   comunmente usados (el resto, junto con el resto de capacidades de
   login, puede encontrarse en login.conf(5)).

   coredumpsize

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

   cputime

           Esta es la maxima cantidad de tiempo de CPU que los
           procesos de un usuario pueden consumir.

             Nota: Este es un limite sobre el tiempo de CPU
             consumido, no el porcentaje de uso de CPU que se muestra
             en algunos campos de top(1) y ps(1). Un limite de ese
             tipo no es posible a dia de hoy, y seria bastante
             inutil: un compilador --probablemente una tarea
             legitima-- puede usar practicamente el 100% de la CPU
             durante algun tiempo con facilidad.

   filesize

           Este es el tamano maximo que puede llegar a tener un
           fichero del usuario. A diferencia de las cuotas de disco,
           este limite se especifica para ficheros individuales, no
           para el conjunto de todos los archivos que posee.

   maxproc

           Este es el maximo numero de procesos que un usuario puede
           ejecutar a la vez, incluidos tanto los procesos en primer
           plano como los procesos en segundo plano. Por razones
           obvias, este limite no puede ser mayor que el limite de
           sistema especificado por kern.maxproc sysctl. Observese
           tambien que si asignamos un valor demasiado bajo a este
           limite podemos mermar la productividad de un usuario:
           frecuentemente es util entrar multiples veces en el
           sistema o ejecutar pipelines. Algunas tareas, como
           compilar largos programas, lanzan multiples procesos (p.
           ej., make(1), cc(1), y demas preprocesadores intermedios).

   memorylocked

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

   memoryuse

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

   openfiles

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

   sbsize

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

   stacksize

           Este es el tamano maximo que puede alcanzar la pila de un
           proceso. Por si solo no es suficiente para limitar la
           cantidad de memoria que puede usar un programa; en
           consecuencia, deberia ser usado junto con otros limites.

   Hay unas pocas cosas mas a recordar cuando establecemos limites de
   recursos. A continuacion vienen algunas recomendaciones,
   sugerencias, y comentarios varios.

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

     * Aunque el /etc/login.conf que viene con el sistema tiene
       valores razonables para la mayoria de los limites, solo tu, el
       administrador, puedes saber lo que es apropiado para tu
       sistema.

     * A los usuarios del X Window System (X11) probablemente se les
       deberia conceder mas recursos que al resto. X11 de por si
       consume muchos recursos, pero ademas contribuye a que los
       usuarios ejecuten mas programas simultaneamente.

     * Recuerda que hay muchos limites 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 maximo 50 ficheros. Asi,
       la cantidad de ficheros que un usuario puede abrir es el valor
       de openfiles multiplicado por el valor de maxproc. Esto
       tambien aplica al uso de memoria.

   Para mas informacion acerca de limites de recursos y clases y
   capacidades de login en general, consulta las paginas de manual
   relevantes: cap_mkdb(1), getrlimit(2), login.conf(5).

     --------------------------------------------------------------

13.8. Personalizar a los usuarios

   La localizacion es un entorno establecido por el administrador o
   el usuario para dar soporte a distintos lenguajes, juegos de
   caracteres, estandares sobre fechas y horas, etcetera. Este tema
   se trata en el capitulo Localizacion.

     --------------------------------------------------------------

13.9. Grupos

   Un grupo es simplemente una lista de usuarios. Los grupos se
   identifican por su nombre de grupo y gid (ID de grupo). En FreeBSD
   (y en la mayoria de sistemas Unix), los dos factores que tiene en
   cuenta el nucleo para decidir si un proceso puede hacer algo es su
   ID de usuario y la lista de grupos a los que pertenece. A
   diferencia del ID de usuario, un proceso tiene una lista de grupos
   asociados. En ocasiones encontraras menciones al "ID de grupo" de
   un usuario o de un proceso; la mayoria de las veces referiran
   simplemente al primero de los grupos de la lista.

   La correspondencia entre nombres e IDs de grupo esta en
   /etc/group. Se trata de un fichero de texto plano con cuatro
   campos separados por el signo dos puntos. El primer campo es el
   nombre de grupo, el segundo la contrasena encriptada, el tercero
   el ID de grupo, y el cuarto la lista de miembros separados por
   comas. Puede ser editado a mano sin peligro (!suponiendo, por
   supuesto, que no se cometan errores de sintaxis!). Para una
   descripcion mas completa de la sintaxis, ver la pagina de manual
   group(5).

   Si no quieres editar /etc/group manualmente, puedes usar el
   comando pw(8) para anadir y modificar grupos. Por ejemplo, para
   anadir un grupo llamado teamtwo y luego confirmar que existe
   puedes usar:

   Ejemplo 13-7. Anadir un grupo usando pw(8)

 # pw groupadd teamtwo
 # pw groupshow teamtwo
 teamtwo:*:1100:

   El numero 1100 en el ejemplo anterior es el ID de grupo del grupo
   teamtwo. Ahora mismo teamtwo no tiene miembros, y es por tanto
   bastante inutil. Cambiemos eso invitando a jru a formar parte del
   grupo teamtwo.

   Ejemplo 13-8. Anadir a alguien a un grupo usando pw(8)

 # pw groupmod teamtwo -M jru
 # pw groupshow teamtwo
 teamtwo:*:1100:jru

   El argumento de la opcion -M es una lista con los usuarios que son
   miembros del grupo separados por comas. Sabemos de secciones
   anteriores que el fichero de contrasenas tambien contiene un grupo
   para cada usuario. El usuario es automaticamente anadido a la
   lista de grupos por el sistema; no constara como miembro cuando
   usemos el comando groupshow con pw(8), pero si cuando la
   informacion se consulte con id(1) u otra herramienta similar. En
   otras palabras, pw(8) solo manipula el fichero /etc/group; nunca
   tratara de leer datos adicionales de /etc/passwd.

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

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

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

   Para mas informacion acerca de pw(8), consulta su pagina de
   manual, y para mas informacion acerca del formato de /etc/group,
   consulta la pagina de manual de group(5).

     --------------------------------------------------------------

                         Capitulo 14. Seguridad

   Gran parte del contenido de este capitulo procede de la pagina de
   manual de security(7), de Matthew Dillon.

     --------------------------------------------------------------

14.1. Sinopsis

   Este capitulo contiene una introduccion basica a los conceptos de
   seguridad del sistema, unas cuantas normas basicas de uso y
   algunos avanzados del tema en FreeBSD. Muchos de los temas
   expuestos se aplican a la seguridad del sistema y de Internet en
   general. Internet ya no es aquel lugar "amistoso" en el que todo
   el mundo se comportaba como un buen ciudadano. Si quiere proteger
   sus datos, su propiedad intelectual, su tiempo y muchas mas cosas
   de manos malintencionadas debe hacer que su sistema sea seguro.

   FreeBSD proporciona un variado arsenal de utilidades y mecanismos
   para asegurar la integridad y la seguridad de su sistema y red.

   Despues de leer este capitulo:

     * conocera conceptos basicos de la seguridad relacionados con
       FreeBSD.

     * Tendra informacion sobre los diversos mecanismos de cifrado
       disponibles en FreeBSD, entre los cuales estan DES y MD5.

     * Sabra como configurar la autentificacion de contrasenas de un
       solo uso.

     * Sabra como configurar TCP Wrappers y usarlos con inetd.

     * Sabra como instalar KerberosIV en versiones de FreeBSD
       anteriores a 5.0.

     * Sabra como instalar Kerberos5 en versiones de FreeBSD
       posteriores a 5.0.

     * Podra configurar IPsec y crear una VPN entre maquinas
       FreeBSD/Windows.

     * Sabra como configurar y utilizar OpenSSH, la implementacion de
       SSH en FreeBSD.

     * Sabra en que consisten las ACL del sistema de ficheros y como
       utilizarlas.

     * Sabra como usar Portaudit, con la que podra auditar el
       software que instale desde la desde la coleccion de ports.

     * Sabra como sacar partido de los avisos de seguridad que
       publica FreeBSD.

     * Podra hacerse una idea clara de en que consiste la
       contabilidad de procesos y de como activarla en FreeBSD.

   Antes de leer este capitulo:

     * Comprender conceptos basicos de FreeBSD e Internet.

   En otras secciones de este manual se cubren aspectos adicionales
   sobre seguridad. Por ejemplo, MAC (controles de acceso
   obligatorio) se explica en el Capitulo 16 y los cortafuegos en el
   Capitulo 26.

     --------------------------------------------------------------

14.2. Introduccion

   La seguridad es un trabajo que que comienza y termina en el
   administrador de sistema. Aunque que los sistemas multiusuario BSD
   UNIX posean una seguridad inherente, el trabajo de construir y
   mantener mecanismos de seguridad adicionales para que los usuarios
   sean aun mas "honestos" es probablemente una de las mayores tareas
   de la administracion de sistemas. Los sistemas son tan seguros
   como uno los haga, y no hay que olvidar que los problemas de
   seguridad compiten con la comodidad a la que tendemos los humanos.
   Los sistemas UNIX son capaces de ejecutar una gran cantidad de
   procesos simultaneamente, muchos de los cuales son servidores, lo
   que significa que las entidades externas pueden conectarse y
   "hablar" con ellos. Del mismo modo que las minicomputadoras de
   ayer se convirtieron en los sistemas de escritorio de hoy en dia,
   la seguridad se va convirtiendo en un problemas mas y mas
   acuciante.

   La seguridad bien entendida se implementa en capas, a la manera de
   una "cebolla". Basicamente lo que se hace es crear la mayor
   cantidad posible de capas de seguridad, para mas tarde monitorizar
   el sistema en busca de intrusos. No es conveniente exagerar la
   seguridad, ya que interferiria con la deteccion, y la deteccion es
   uno de los aspectos mas importantes de cualquier mecanismo de
   seguridad. Por ejemplo, no tiene mucho sentido activar la bandera
   schg (consulte chflags(1)) en cada binario del sistema, ya que
   aunque protegeria en cierto modo los binarios, haria que cualquier
   cambio que pudiera realizar un atacante una vez dentro del sistema
   fuera mas dificil de detectar o incluso hacerlo del todo
   imposible.

   La seguridad del sistema depende tambien de estar preparados para
   distintos tipos de ataque, incluyendo intentos de "tirar" la
   maquina o dejarla en un estado inutilizable, pero que no impliquen
   intentos de comprometer el usuario root Los problemas de seguridad
   pueden dividirse en diferentes categorias:

    1. Ataques de denegacion de servicio (DoS).

    2. Comprometer cuentas de usuarios.

    3. Comprometer root a traves de servidores accesibles.

    4. Comprometer root desde cuentas de usuario.

    5. Creacion de puertas traseras ("Backdoors").

   Un ataque de denegacion de servicio es una accion que priva al
   sistema de los recursos requeridos para su funcionamiento normal.
   Generalmente, los ataques DoS son mecanismos de fuerza bruta que
   intentan "tumbar" el sistema o hacerlo inutilizable sobrecargando
   la capacidad de sus servidores o de la pila de red. Algunos
   ataques DoS intentan aprovechar errores en la pila de red para
   "tumbar" el sistema con un solo paquete. Estos ultimos unicamente
   pueden solucionarse aplicando al kernel una actualizacion que
   subsane el error. Los ataques a servidores muchas veces pueden
   solucionarse configurando las opciones apropiadas para limitar la
   carga del sistema en condiciones adversas. Los ataques de fuerza
   bruta a redes son mas complicados. Los ataques con paquetes
   enmascarados, por ejemplo, son casi imposibles de detener, a menos
   que desconecte el sistema de Internet. Puede ser que no "tiren" el
   sistema, pero saturaran la conexion a Internet.

   Comprometer una cuenta de usuario es mucho mas comun que un ataque
   DoS. Muchos administradores de sistemas todavia ejecutan
   servidores estandar telnetd, rlogind, rshd y ftpd en sus maquinas.
   Estos servidores, por defecto no operan a traves de conexiones
   cifradas. El resultado es que se si se tiene una base de usuarios
   de tamano medio, tarde o temprando la contrasena de uno (o mas) de
   sus usuarios sera descubierta durante sus accesos al sistema desde
   ubicaciones remotas.(que es, por otra parte, la forma mas comun y
   mas comoda de acceder a un sistema). El administrador de sistemas
   atento analizara sus logs de acceso remoto en busca de direcciones
   origen spspechosas, incluso entre los accesos al sistema.

   Se debe asumir siempre que, una vez que el atacante tiene acceso a
   una cuenta de usuario, el atacante puede comprometer la cuenta
   root. En realidad en un sistema bien mantenido y asegurado el
   acceso a una cuenta de usuario no necesariamente da al atacante
   acceso a root. Esta precision es importante porque sin acceso a
   root el atacante dificilmente podra esconder sus huellas; podra,
   como mucho, hacer poco mas que sembrar el caos en los ficheros del
   usuario o "tirar" la maquina. Comprometer cuentas de usuario es
   muy comun porque los usuarios tienden a no tomar las precauciones
   que toma el administrador.

   Los administradores de sistemas deben tener presente que existen
   muchas formas potenciales de comprometer la cuenta root de una
   maquina. El atacante puede conocer la contrasena de root, el
   atacante puede encontrar un error en un servidor que se ejecuta
   como root y ser capaz de comprometer root a traves de una conexion
   de red a ese servidor; puede ser que el atacante sepa de la
   existencia de un error en un programa suid-root que le permita
   comprometer root una vez dentro de una cuenta de usuario. Si un
   atacante encuentra la manera de comprometer la cuenta root de una
   maquina puede que no necesite instalar una puerta trasera. Muchos
   de los agujeros root encontrados y cerrados hasta la fecha
   implican una cantidad considerable de trabajo para el atacante
   limpiando todo despues del ataque, asi que la mayoria de los
   atacantes instalan puertas traseras. Una puerta trasera facilita
   al atacante una forma sencilla de recuperar el acceso de root al
   sistema, pero tambien proporciona al administrador de sistemas
   inteligente una forma de detectar la intrusion. Si hace imposible
   a un atacante la instalacion de una puerta trasera puede estar
   actuando en detrimento de su seguridad, porque no cerrara el
   agujero que el atacante encontro para accder al sistema la primera
   vez que lo hizo.

   Las medidas de seguridad se implementan en un modelo multicapa
   (tipo "cebolla"), que puede categorizarse del siguiente modo:

    1. Asegurar root y cuentas administrativas.

    2. Asegurar los servidores que se ejecuten como root los binarios
       suid/sgid.

    3. Asegurar cuentas de usuario.

    4. Asegurar el fichero de contrasenas.

    5. Asegurar el nucleo del kernel, los dispositivos en bruto y el
       sistema de ficheros.

    6. Deteccion rapida de cambios hechos al sistema.

    7. Paranoia.

   La siguiente seccion de este capitulo tratara los puntos de arriba
   con mayor profundidad.

     --------------------------------------------------------------

14.3. Asegurar FreeBSD

     Orden vs. protocolo: En este capitulo usaremos el texto en
     negrita para referirnos a una orden o aplicacion, y una fuente
     en cursiva para referirnos a ordenes especificas. Usaremos un
     tipo normal para los protocolos. Esta diferencia tipografica nos
     sera util por ejemplo con ssh, que es tanto un protocolo como
     una orden.

   Las siguientes secciones cubren los metodos a seguir para asegurar
   su sistema FreeBSD que se mencionados en la seccion anterior de
   este capitulo.

     --------------------------------------------------------------

  14.3.1. Asegurar la cuenta root y las cuentas administrativas

   En primer lugar, no se moleste en asegurar las cuentas
   administrativas (o "staff") si no ha asegurado la cuenta root. La
   mayoria de los sistemas tienen una contrasena asignada para la
   cuenta root. Lo primero que se hace es asumir que la contrasena
   esta siempre amenazada. Esto no significa que deba eliminar la
   contrasena. La contrasena es casi siempre necesaria para el acceso
   por consola a la maquina; significa que no se debe permitir el uso
   de la contrasena fuera de la consola o, mejor aun, mediante su(1).
   Por ejemplo, asegurese de que sus ptys aparezcan como inseguras en
   el fichero /etc/ttys, con lo que hara que los accesos como root
   via telnet o rlogin no sean posibles. Si utiliza otros tipos de
   login como sshd asegurese de que los accesos al sistema como root
   esten tambien deshabilitados. Para ello edite su
   /etc/ssh/sshd_config y asegurese de que PermitRootLogin este
   puesto a NO. Estudie cada metodo de acceso: hay servicios como FTP
   que frecuentemente son origen de grietas en la estructura del
   sistema. El acceso directo como usuario root solamente debe
   permitirse a traves de la consola.

   Es evidente que, como administrador del sistema, debe usted tener
   la posibilidad de acceder a root, asi que tendra que abrir algunos
   agujeros, pero debe asegurarse de que estos agujeros necesiten
   contrasenas adicionales para verificar su correcto uso. Puede
   hacer que root sea accesible anadiendo cuentas administrativas al
   grupo wheel (en /etc/group). El personal que administra los
   sistemas que aparezcan en el grupo en el grupo wheel pueden hacer
   su a root. Nunca debe de proporcionar al personal administrativo
   el acceso nativo a wheel poniendolos en el grupo wheel en su
   entrada de contrasena. Las cuentas administrativas deben colocarse
   en un grupo staff, y agregarse despues al grupo wheel en
   /etc/group. Solo aquellos administradores que realmente necesiten
   acceder a root deben pertenecer al grupo wheel. Tambien es
   posible, mediante un metodo de autentificacion como Kerberos, usar
   el fichero .k5login en la cuenta root para permitir un ksu(1) a
   root sin tener que colocar a nadie en el grupo wheel. Puede ser
   una mejor solucion, ya que el mecanismo wheel aun permite a un
   atacante comprometer root si el intruso ha conseguido el fichero
   de contrasenas y puede comprometer una cuenta de administracion.
   Recurrir al mecanismo wheel es mejor que no tener nada, pero no es
   necesariamente la opcion mas segura.

   Una manera indirecta de asegurar las cuentas de staff y el acceso
   a root es utilizar un metodo de acceso alternativo: es lo que se
   conoce como "estrellar" las contrasenas cifradas de las cuentas
   administrativas. Use vipw(8) para reemplazar cada contrasena
   cifrada por un solo caracter asterisco ("*"). Esto actualizara
   /etc/master.passwd y la base de datos de usuario/contrasena y
   deshabilitara los accesos al sistema validados mediante
   contrasenas.

   Veamos una cuenta administrativa tipica:

 foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh

   y como deberia quedar:

 foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh

   Este cambio evitara que se efectuen logins normales, ya que la
   contrasena cifrada nunca se correspondera con "*". Hecho esto, el
   personal de administracion tendra que usar otro mecanismo de
   validacion como kerberos(1) o ssh(1) que use un par de llave
   publica/privada. Si decide usar algo como Kerberos tendra que
   asegurar la maquina que ejecuta los servidores Kerberos y su
   estacion de trabajo. Si usa un par de llave publica/privada con
   ssh, debe asegurar la maquina desde desde la que se hace el login
   (normalmente nuestra estacion de trabajo). Puede anadir una capa
   adicional de proteccion al par de llaves protegiendolas con
   contrasena al crearlo con ssh-keygen(1). El "estrellado" de las
   contrasenas administrativas tambien garantiza que dicho personal
   solo pueda entrar a traves de metodos de acceso que haya usted
   configurado. Asi obligara al personal administrativo a usar
   conexiones seguras, cifradas, en todas sus sesiones, lo que cierra
   un importante agujero de seguridad al que recurren muchos
   intrusos: usar un sniffer (olfateador) de red desde una maquina
   que le permita hacer tal cosa.

   Los mecanismos de seguridad mas indirectos tambien asumen que esta
   validando su identidad desde un servidor mas restrictivo un
   servidor menos restrictivo. Por ejemplo, si su maquina principal
   ejecuta toda clase de servidores su estacion de trabajo no debe
   ejecutar ninguno. Para que su estacion de trabajo sea
   razonablemente segura debe ejecutar los minimos servidores
   posibles, si es posible ninguno, y debe usar un salvapantallas
   protegido por contrasena. Es evidente que un atancante con acceso
   fisico al sistema puede romper cualquier barrera de seguridad que
   se disponga. Es un problema a tener en cuenta, pero la mayoria de
   las intrusiones tienen lugar de forma remota, a traves de la red,
   por parte de gente que no tiene acceso fisico a su estacion de
   trabajo ni a sus servidores.

   Usar Kerberos le ofrece tambien el poder de deshabilitar o cambiar
   la contrasena para una cuenta administrativa en un lugar, y que
   tenga un efecto inmediato en todas las maquinas en las cuales ese
   administrador pueda tener una cuenta. Si una de esas cuentas se ve
   comprometida la posibilidad para cambiar instantaneamente su
   contrasena en todas las maquinas no debe ser desestimada. Con
   contrasenas distintas, el cambio de una contrasena en N maquinas
   puede ser un problema. Tambien puede imponer restricciones de
   re-contrasenas con Kerberos: no solo se puede hacer un ticket de
   Kerberos que expire despues de un tiempo, sino que el sistema
   Kerberos puede requerir al usuario que escoja una nueva contrasena
   despues de cierto tiempo (digamos una vez al mes).

     --------------------------------------------------------------

  14.3.2. Asegurar servidores que se ejecutan como root y binarios
  SUID/SGID

   Un administrador de sistemas prudente solo ejecutara los
   servidores que necesita, ni uno mas ni uno menos. Dese cuenta de
   que los servidores ajenos son los mas propensos a contener
   errores. Por ejemplo, ejecutando una version desfasada de imapd o
   popper es como dar una entrada universal de root al mundo entero.
   Nunca ejecute un servidor que no haya revisado cuidadosamente.
   Muchos servidores no necesitan ejecutarse como root. Por ejemplo,
   los daemons ntalk, comsat y finger pueden ejecutarse en una caja
   de arena (sandbox) especial de usuario. Una caja de arena no es
   perfecta, a menos que pase por muchos problemas, pero la
   aproximacion de cebolla a la seguridad prevalece aun y todo: Si
   alguien es capaz de penetrar a traves de un servidor ejecutandose
   en una caja de arena, todavia tendra que salir de la caja de
   arena. Cuantas mas capas tenga que romper el atacante menor sera
   la posibilidad de exito que tenga. Se han encontrado vias de
   entrada a root en virtualmente todos los servidores que se haya
   ejecutado como root, incluyendo servidores basicos del sistema. Si
   esta tiene una maquina a traves de la cual la gente solo entra por
   sshd, y nunca entra por telnetd, rshd, o rlogind apague esos
   servicios.

   FreeBSD ejecuta por defecto ntalkd, comsat y finger en una caja de
   arena. Otro programa que puede ser candidato para ejecutarse en
   una caja de arena es named(8). /etc/defaults/rc.conf contiene las
   directrices necesarias (con comentarios) para usar named en una
   caja de arena. Dependiendo de si esta instalando un nuevo sistema
   o actualizando un sistema ya existente, las cuentas especiales de
   usuario que usan estas cajas de arena puede que no esten
   instaladas. El administrador de sistemas prudente debe investigar
   e implementar cajas de arena para servidores siempre que sea
   posible.

   Existen numerosos servidores que no se suelen ejecutar en cajas de
   arena: sendmail, imapd, ftpd, y otros. Existen alternativas para
   algunos de ellos, pero instalarlas puede requerir mas trabajo del
   que tal vez este dispuesto a realizar (el factor comodidad ataca
   de nuevo). Tal vez tenga que ejecutar estos servidores como root y
   depender de otros mecanismos para detectar intrusiones que puedan
   tener lugar a traves de ellos.

   Los otros grandes agujeros potenciales de root que encontramos en
   un sistema son los binarios suid-root y sgid. La mayoria de estos
   binarios, como rlogin, estan en /bin, /sbin, /usr/bin o /usr/sbin.
   Aunque no hay nada absolutamente seguro los binarios suid y sgid
   del sistema por defecto pueden considerarse razonablemente
   seguros. Aun asi, de vez en cuando aparecen agujeros root en estos
   binarios. En 1998 se encontro un agujero root en Xlib, que hacia a
   xterm (que suele ser suid) vulnerable. Es mejor prevenir que
   curar, y el administrador de sistemas prudente restringira los
   binarios suid, que solo el personal de administracion debe
   ejecutar, a un grupo especial al que solo dicho personal pueda
   acceder, y deshacerse de cualquier binario suid (chmod 000) que no
   se use. Un servidor sin pantalla generalmente no necesita un
   binario xterm. Los binarios sgid pueden ser igual de peligrosos.
   Si un intruso logra comprometer un binario sgid-kmem, el intruso
   podria leer /dev/kmem y llegar a leer el fichero cifrado de
   contrasenas, poniendo en compromiso potencial cualquier cuenta con
   contrasena. Por otra parte, un intruso que comprometa el grupo
   kmem puede monitorizar las pulsaciones de teclado que se envien a
   traves de ptys, incluyendo las ptys a las que acceden usuarios que
   emplean metodos seguros. Un intruso que comprometa el grupo tty
   puede escribir en la pty de casi cualquier usuario. Si un usuario
   ejecuta un programa de terminal o un emulador capaz de simular un
   teclado, el intruso podria generar un flujo de datos que provoque
   que la terminal del usuario muestre una orden en pantalla, orden
   que el usuario ejecutara.

     --------------------------------------------------------------

  14.3.3. Asegurar las cuentas de usuario

   Las cuentas de usuario suelen ser las mas dificiles de asegurar.
   Aunque puede imponer restricciones de acceso draconianas a su
   personal administrativo y "estrellar" sus contrasenas, tal vez no
   pueda hacerlo con todas las cuentas de todos sus usuarios. Si
   mantiene el control en un grado suficiente quizas lo logre y sea
   capaz de hacer que las cuentas de sus usuarios sean seguras. Si
   no, tendra que ser mas cuidadoso (aun) en la monitorizacion de
   esas cuentas. Usar ssh y Kerberos en cuentas de usuario da mas
   problemas debido al soporte tecnico y administrativo que
   requerira, pero sigue siendo mejor solucion que un fichero de
   contrasenas cifradas.

     --------------------------------------------------------------

  14.3.4. Asegurar el fichero de contrasenas

   La unica manera segura es ponerle * a tantas contrasenas como sea
   posible y utilizar ssh o Kerberos para acceder a esas cuentas.
   Aunque el fichero cifrado de contrasenas (/etc/spwd.db) solo puede
   ser legible para root, puede que un intruso consiga acceso de
   lectura a ese fichero, incluso sin haber alcanzado el acceso de
   escritura como root.

   Sus "scripts" de seguridad deben buscar siempre cambios en el
   fichero de contrasenas (consulte Revision de integridad de
   ficheros mas abajo) e informar de ellos.

     --------------------------------------------------------------

  14.3.5. Asegurar el Kernel, dispositivos en bruto y el sistema sistema
  de ficheros

   Si un atacante compromete root puede hacer cualquier cosa, pero
   hay ciertas cosas que puede usted preparar para "curarse en
   salud". Por ejemplo, la mayoria de los kernel modernos tienen un
   dispositivo de los Kernels modernos tienen un integrado un
   dispositivo de paquetes. En FreeBSD se llama bpf. Un intruso
   tipico tratara de ejecutar un "sniffer" de paquetes en una maquina
   comprometida. No deberia darle a ese intruso tal recurso, y la
   mayoria de los sistemas no necesitan el dispositivo bpf.

   Pero si desactiva el dispositivo bpf todavia tendra que
   preocuparse por /dev/mem y /dev/kmem. Desde ellos el intruso
   podria en dispositivos de disco en bruto. Tambien hay que tener
   muy en cuenta una opcion del kernel llamada cargador de modulos,
   kldload(8). Un intruso con iniciativa puede usar un modulo KLD
   para instalar su propio dispositivo bpf, u otro dispositivo que le
   permita el "sniffing" en un kernel en ejecucion. Para prevenir
   estos problemas debe ejecutar el kernel en un nivel de seguridad
   mayor, al menos en securelevel 1. Puede configurar el securelevel
   mediante una sysctl en la variable kern.securelevel. Una vez que
   tiene su securelevel a 1, los accesos de escritura a dispositivos
   en bruto se denegaran y se impondran las banderas especiales schg.
   Tambien debe cerciorarse de activar la bandera schg en binarios
   criticos para el arranque, directorios y scripts (dicho de otro
   modo, todo aquello que se ejecuta antes de que se active el
   securelevel). Puede ser que todo esto sea una exageracion, sobre
   todo teniendo en cuenta que la actualizacion del sistema se
   complica bastante a medida que se incrementa el nivel de
   seguridad. Puede ejecutar el sistema a un nivel de seguridad
   superior pero no activar la bandera schg en cada fichero y
   directorio del sistema. Otra posibilidad es montar / y /usr como
   solo lectura. Recuerde que siendo demasiado draconiano en aquello
   que busca proteger puede dificultar mucho la deteccion de una
   intrusion.

     --------------------------------------------------------------

  14.3.6. Revision de integridad de ficheros: binarios, ficheros de
  configuracion, etc.

   Cuando se piensa de proteccon, solo se puede proteger la
   configuracion central del sistema y los ficheros de control hasta
   el momento en el que el factor comodidad salta a la palestra. Por
   ejemplo, si usa chflags para activar el bit schg en la mayoria de
   los ficheros de / y /usr probablemente sea contraproducente; puede
   proteger los ficheros haciendolo, pero tambien cierra una via de
   deteccion. La ultima capa de su modelo de seguridad tipo cebolla
   es quizas la mas importante: la deteccion. El resto de su
   estructura de seguridad sera inutil (o peor aun, le proporcionara
   un sentimiento de seguridad totalmente infundado) si no puede
   detectar posibles intrusiones. La mitad del trabajo de la cebolla
   es alentar al atacante, en lugar de detenerlo, para darle a la
   parte de la ecuacion de deteccion una oportunidad de atraparlo con
   las manos en la masa.

   La mejor manera de detectar una intrusion es buscar ficheros
   modificados, perdidos, o cuya presencia o estado sea inesperado.
   La mejor forma de buscar ficheros modificados es desde otro
   sistema (que muchas veces es centralizado) con acceso restringido.
   Escribir sus "scripts" de seguridad en un sistema "extraseguro" y
   con acceso restringido los hace casi invisibles a posibles
   atacantes, y esto es algo muy importante. potenciales, y esto es
   importante. Para poderle sacar el maximo partido debe proporcionar
   a esa maquina con acceso restringido un acceso preferente al
   contenido de las otras maquinas de su entorno; suele hacerse
   mediante la importacion via NFS de solo lectura de las demas
   maquinas, o configurando pares de llaves ssh para acceder a las
   otras maquinas desde la que tiene el acceso restringido. Si
   exceptuamos el trafico de red, NFS es el metodo menos visible y le
   permite monitorizar los sistemas de ficheros de cada maquina
   cliente de forma practicamente indetectable. Si su servidor de
   acceso restringido esta conectado a las maquinas clientes a traves
   de un concentrador o a traves de varias capas de encaminamiento el
   metodo NFS puede ser muy inseguro, por lo que ssh puede ser la
   mejor opcion, incluso con las huellas de auditoria que ssh va
   dejando.

   Una vez que le da a una maquina de acceso restringido (al menos)
   acceso de lectura a los sistemas cliente que va a monitorizar,
   tendra que escribir "scripts" para efectuar la monitorizacion. Si
   va a usar un montaje NFS puede escribir "scripts" utilizando
   simples herramientas del sistema como find(1) y md5(1). Es
   aconsejable ejecutar MD5 fisicamente en los ficheros de las
   maquinas cliente al menos una vez al dia, y comprobar los ficheros
   de control (los que hay en /etc y /usr/local/etc) con una
   frecuencia incluso mayor. Si aparecen discrepancias al compararlos
   con la informacion basada en MD5 que la maquina de acceso
   restringido usa como base debe hacer una comprobacion inmediata y
   profunda. Un buen "script" tambien debe buscar binarios que sean
   suid sin razon aparente, y ficheros nuevos o borrados en
   particiones del sistema como / y /usr.

   Si usa ssh en lugar de NFS sera mucho mas complicado escribir el
   "script" de seguridad. En esencia, tiene que pasar por scp los
   "scripts" a la maquina cliente para poder ejecutarlos, haciendolos
   visibles; por seguridad, tambien tendra que pasar via scp los
   binarios (por ejemplo find) que utilizan dichos "scripts". El
   cliente ssh de la maquina cliente puede estar ya bajo el control
   del intruso. Con todo y con eso, puede ser necesario usar ssh si
   trabaja sobre enlaces inseguros, tambien es mucho mas dificil de
   manejar.

   Un buen "script" de seguridad buscara tambien cambios en la
   configuracion de los ficheros de acceso de usuarios y miembros del
   personal de administracion: .rhosts, .shosts,
   .ssh/authorized_keys, etc; en resumen, ficheros fuera del rango de
   revision MD5.

   Si tiene que verselas con una cantidad enorme de espacio en disco
   para usuarios le llevara mucho tiempo recorrer cada fichero de
   cada particion. En su caso seria una buena idea configurar
   mediante opciones de montaje la deshabilitacion de binarios y
   dispositivos suid en esas particiones. Revise las opciones nodev y
   nosuid de mount(8). Deberia comprobarlos de todas maneras al menos
   una vez por semana, ya que el objeto de esta capa es detectar
   intrusiones, efectivas o no.

   La contabilidad de procesos (vea accton(8)) es una opcion con una
   carga relativamente ligera para el sistema operativo, y puede
   ayudarle como mecanismo de evaluacion tras una intrusion. Es
   especialmente util para rastrear como consiguion realmente acceder
   el intruso al sistema (asumiendo que el fichero este intacto
   despues de la intrusion).

   Los "scripts" de seguridad deben procesar los logs, y los propios
   logs deben generarse de la forma mas segura posible: un syslog
   remoto puede ser muy util. Un intruso trata de cubrir sus huellas,
   los logs son un recurso critico cuando el administrador de
   sistemas intenta determinar la hora y el metodo de la intrusion
   inicial. La ejecucion de la consola del sistema en un puerto serie
   y recolectar la informacion de forma periodica en una maquina
   segura de monitorizacion de consolas es una forma de cumplir esta
   tarea.

     --------------------------------------------------------------

  14.3.7. Paranoia

   Un poco de paranoia nunca esta de mas. Como norma, un
   administrador de sistemas puede anadir cualquier tipo de mecanismo
   de seguridad siempre y cuando no afecte a la comodidad, y puede
   anadir mecanismos de seguridad que si afecten a la comodidad si
   tiene una buena razon para hacerlo. Mas aun, un administrador de
   seguridad debe mezclar un poco de ambas cosas: si sigue al pie de
   la letra las recomendaciones que se dan en este documento tambien
   esta sirviendo en bandeja de plata al posible atancante su
   metodologia. Ese posible atacante tambien tiene acceso a este
   documento.

     --------------------------------------------------------------

  14.3.8. Ataques de denegacion de servicio

   Esta seccion cubre ataques de denegacion de servicio. Un ataque
   DoS suele consistir en un ataque mediante paquetes. NO hay mucho
   que pueda hacerse contra un ataque mediante paquetes falsificados
   ("spoofed") que busque saturar su red, pero puede limitar el dano
   asegurandose de que los ataques no tiren sus servidores.

    1. Limitacion de forks en el servidor.

    2. Limitacion de ataques "springboard" (ataques de respuesta
       ICMP, ping broadcast, etc.)

    3. Cache de rutas del kernel.

   Un tipico ataque DoS contra un servidor con instancias (forks)
   seria tratar de provocar que el servidor consuma procesos,
   descriptores de fichero y memoria hasta tirar la maquina. inetd
   (consulte inetd(8)) dispone de varias opciones para limitar este
   tipo de ataque. Recuerde que aunque es posible evitar que una
   maquina caiga, generalmente no es posible evitar que un servicio
   sea vea interrumpido a causa el ataque. Consulte la pagina de
   manual de inetd atentamente y sobre todo estudie las las opciones
   -c, -C, y -R. Observe que los ataques con direcciones IP
   falsificadas sortearan la opcion -C de inetd, asi que debe usar
   una combinacion de opciones. Algunos servidores autonomos
   ("standalone") cuentan con parametros de autolimitacion de
   instancias.

   Sendmail tiene la opcion -OMaxDaemonChildren, que tiende a
   funcionar mucho mejor que las opciones de limite de carga de
   sendmail debido al retraso que provoca la carga. Debe especificar
   un parametro MaxDaemonChildren al inicio de sendmail que sea lo
   suficientemente alto como para gestionar la carga esperada, pero
   no tan alto que la computadora no pueda absorber tal numero de
   sendmails sin caerse de boca. Tambien es prudente ejecutar
   sendmail en modo de cola (-ODeliveryMode=queued) y ejecutar el
   daemon (sendmail -bd) de manera independiente de las ejecuciones
   de cola (sendmail -q15m). Si a pesar de todo necesita entregas en
   tiempo real puede ejecutar la cola a un intervalo menor, como
   -q1m, pero asegurese de especificar una opcion MaxDaemonChildren
   razonable para ese sendmail y asi evitar fallos en cascada.

   Syslogd puede recibir ataques directos y se recomienda
   encarecidamente que utilice la opcion -s siempre que sea posible,
   y si no la opcion -a.

   Tambien debe ser extremadamente cuidadoso con servicios de
   conexion inversa como el ident inverso de TCP Wrapper, que puede
   recibir ataques directos. No se suele usar el ident inverso de TCP
   Wrapper por esa misma razon.

   Es una muy buena idea proteger los servicios internos de acceso
   externo protegiendolos via con un cortafuegos en los routers de
   frontera. La idea es prevenir ataques de saturacion desde el
   exterior de la LAN, y no tanto para proteger servicios internos de
   compromisos root basados en red. Configure siempre un cortafuegos
   exclusivo, esto es, "restringir todo menos los puertos A, B, C, D
   y M-Z". De esta manera restringira todos sus puertos con numeros
   bajos excepto ciertos servicios especificos como named (si es el
   servidor primario de una zona), ntalkd, sendmail, y otros
   servicios accesibles desde Internet. Si configura el cortafuegos
   de la otra manera (como un cortafuegos inclusivo o permisivo),
   tiene grandes posibilidades de que olvide "cerrar" un par de
   servicios, o de que agregue un nuevo servicio interno y olvide
   actualizar el cortafuegos. Puede incluso abrir el rango de numeros
   de puerto altos en el cortafuegos para permitir operaciones de
   tipo permisivo sin comprometer sus puertos bajos. Recuerde tambien
   que FreeBSD le permite controlar el rango de numeros de puerto
   utilizados para asignacion dinamica a traves de las numerosas
   net.inet.ip.portrange de sysctl (sysctl -a | fgrep portrange), lo
   cual tambien facilita la complejidad de la configuracion de su
   cortafuegos. Por ejemplo, puede utilizar un rango normal
   primero/ultimo de 4000 o 5000, y un rango de puerto alto de 49152
   a 65535; bloquee todo por debajo de 4000 (excepto para ciertos
   puertos especificos accesibles desde Internet, por supuesto).

   Otro ataque DoS comun es llamado ataque "springboard": atacar un
   servidor de forma que genere respuestas que lo sobrecarguen,
   sobrecarguen la red local o alguna otra maquina. Los ataques mas
   comunes de este tipo son los ataques ICMP ping broadcast. El
   atacante falsifica paquetes ping enviados a la direccion broadcast
   de su LAN simulando que la direccion IP origen es la de la maquina
   que desean atacar. Si sus routers de frontera no estan
   configurados para lidiar con pings a direcciones de broadcast su
   LAN termina generando suficientes respuestas a la direccion origen
   falsificada como para saturar a la victima, especialmente cuando
   el atacante utiliza el mismo truco en varias docenas de
   direcciones broadcast en varias docenas de redes diferentes a la
   vez. Se han medido ataques de broadcast de mas de ciento veinte
   megabits. Un segundo tipo de ataque "springboard" bastante comun
   se da contra el sistema de informe de error de ICMP. Un atacante
   puede saturar la conexion entrante de red de un servidor mediante
   la construccion de paquetes que generen respuestas de error ICMP,
   provocando que el servidor sature su conexion saliente de red con
   respuestas ICMP. Este tipo de ataque tambien puede tumbar el
   servidor agotando sus "mbufs", especialmente si el servidor no
   puede drenar lo suficientemente rapido las respuestas ICMP que
   genera. El kernel de FreeBSD tiene una opcion de compilacion
   llamada ICMP_BANDLIM, que limita la efectividad de este tipo de
   ataques. La ultima gran categoria de ataques "springboard" esta
   relacionada con ciertos servicios de inetd, como el servicio de
   eco udp. El atacante simplemente imita un paquete UDP con el
   puerdo de eco del servidor A como direccion de origen, y el puerto
   eco del servidor B como direccion de destino, estando ambos
   servidores en la misma LAN. Un atacante puede sobrecargar ambos
   servidores y la propia LAN inyectando simplemente un par de
   paquetes. Existen problemas similares con el puerto chargen. Un
   administrador de sistemas competente apagara todos estos servicios
   internos de verificacion de inetd.

   Los ataques con paquetes falsificados pueden utilizarse tambien
   para sobrecargar la cache de rutas del kernel. Consulte los
   parametros de sysctl net.inet.ip.rtexpire, rtminexpire, y
   rtmaxcache. Un ataque de paquetes falsificados que utiliza una
   direccion IP origen aleatoria provocara que el kernel genere una
   ruta temporal en cache en su tabla de rutas, visible con netstat
   -rna | fgrep W3. Estas rutas suelen expiran en 1600 segundos mas o
   menos. Si el kernel detecta que la tabla de rutas en cache es ya
   demasiado grande reducira dinamicamente rtexpire, pero nunca la
   reducira a un valor que sea menor que rtminexpire. Esto nos
   presenta dos problemas:

    1. El kernel no reacciona con suficiente rapidez cuando un
       servidor ligeramente cargado es atacado.

    2. El rtminexpire no es lo suficientemente bajo para que el
       kernel sobreviva a un ataque sostenido.

   Si sus servidores estan conectados a Internet mediante mediante
   una linea T3 o superior puede ser prudente corregir manualmente
   rtexpire y rtminexpire por medio de sysctl(8). Nunca ponga ambos
   parametros a cero (a menos que desee estrellar la maquina).
   Configurar ambos parametros a 2 segundos deberia bastar para
   proteger de ataques la tabla de rutas.

     --------------------------------------------------------------

  14.3.9. Otros aspectos del acceso con Kerberos y SSH

   Existen un par de detalles con respecto a Kerberos y ssh que debe
   analizar sy pretende usarlos. Kerberos V es un excelente protocolo
   de protocolo de autentificacion, pero hay errores en la version
   kerberizada de telnet y rlogin que las hacen inapropiadas para
   gestionar flujos binarios. Ademe Kerberos no cifra por defecto una
   sesion a menos que utilice la opcion -x. ssh cifra todo por
   defecto.

   ssh funciona bastante bien en todos los casos, con la sola
   salvedad de que por defecto reenvia llaves de cifrado. Esto
   significa que si usted tiene una estacion de trabajo segura, que
   contiene llaves que le dan acceso al resto del sistema, y hace ssh
   a una maquina insegura, sus llaves se pueden utilizar. Las llaves
   en si no se exponen, pero ssh crea un puerto de reenvio durante el
   login, y si un atacante ha comprometido el root de la maquina
   insegura, puede utilizar ese puerto para usar sus llaves y obtener
   acceso a cualquier otra maquina que sus llaves abran.

   Le recomendamos que, siempre que sea posible, use ssh combinado
   con Kerberos en los login de su personal de administracion. para
   logins de staff. Puede compilar ssh con soporte de Kerberos. Esto
   reducira su dependencia de llaves ssh expuestas, al mismo tiempo
   que protege las contrasenas via Kerberos. Las llaves ssh deben
   usarse solamente para tareas automaticas desde maquinas seguras
   (algo que Kerberos no hace por incompatibilidad). Recomendamos
   tambien que desactive el reenvio de llaves en la configuracion de
   ssh, o que use la opcion from=IP/DOMAIN que ssh incluye en
   authorized_keys; asi la llave solo podra ser utilizada por
   entidades que se validen desde maquinas especificas.

     --------------------------------------------------------------

14.4. DES, MD5 y Crypt

   Secciones reescritas y actualizadas por Bill Swingle.

   Cada usuario de un sistema UNIX tiene una contrasena asociada a su
   cuenta. Parece obvio que estas contrasenas solo deben ser
   conocidas por el usuario y por el sistema operativo. Para que
   estas contrasenas permanezcan en secreto se cifran con lo que se
   conoce como un "hash de una pasada", esto es, solo pueden ser
   facilmente cifradas pero no descifradas. En otras palabras, lo que
   acabamos de decir es tan obvio que ni siguiera es verdad: el
   propio sistema operativo no sabe cual es realmente la contrasena.
   Lo unico que conoce es la version cifrada de la contrasenna. La
   unica manera de obtener la contrasena en "texto plano" es por
   medio de una busqueda de fuerza bruta en el espacio de contrasenas
   posibles.

   Por desgracia la unica manera segura de cifrar contrasenas cuando
   UNIX empezo a hacerlo estaba basada en DES, ("Data Encryption
   Standard", "estandar de cifrado de datos"). Esto no era un gran
   problema para usuarios residentes en los EEUU, pero el codigo
   fuente de FreeBSD no se podia exportar desde los EEUU, asi que
   FreeBSD hubo de buscar una forma de complir las leyes de EEUU y al
   mismo tiempo mantener la compatibilidad con otras variantes de
   UNIX que que todavia utilizaban DES.

   La solucion fue dividir las bibliotecas de cifrado para que los
   usuarios de EEUU pudieran instalar las bibliotecas DES pero los
   usuarios del resto del mundo tuvieran un metodo de cifrado que
   pudiera ser exportado. Asi es como FreeBSD comenzo a usar MD5 como
   su metodo de cifrado por defecto. MD5 se considera mas seguro que
   DES, asi que se mantiene la opcion de poder instalar DES por
   motivos de compatibilidad.

     --------------------------------------------------------------

  14.4.1. Como reconocer su mecanismo de cifrado

   En versiones anteriores a FreeBSD 4.4 libcrypt.a era un enlace
   simbolico que apuntaba a la biblioteca que se usaba para el
   cifrado. En FreeBSD 4.4 se cambio libcrypt.a para ofrecer una
   biblioteca hash configurable de validacion de contrasenas.
   Actualmente la biblioteca permite funciones hash DES, MD5 y
   Blowfish. FreeBSD utiliza por defecto MD5 para cifrar contrasenas.

   Es muy sencillo identificar que metodo usa FreeBSD para cifrar.
   Una forma es examinando las contrasenas cifradas en
   /etc/master.passwd. Las contrasenas cifradas con el hash MD5 son
   mas largas que las cifradas con el hash DES, y tambien comienzan
   por los caracteres $1$. Las contrasenas que comienzan por $2a$
   estan cifradas con la funcion hash de Blowfish. Las contrasenas
   DES no tienen ninguna caracteristica particular, pero son mas
   cortas que las contrasenas MD5, y estan codificadas en un alfabeto
   de 64 caracteres que no incluye el caracter $; es por esto que una
   cadena relativamente corta que comience con un signo de dolar es
   muy probablemente una contrasena DES.

   El formato de contrasena a usar en nuevas contrasenas se define en
   /etc/login.conf mediante passwd_format, pudiendo tener los valores
   des, md5 o blf. Consulte la pagina de manual login.conf(5) para
   mas informacion.

     --------------------------------------------------------------

14.5. Contrasenas de un solo uso

   S/Key es un esquema de contrasena de un solo uso basado en una
   funcion de hash de sentido unico. FreeBSD utiliza el hash MD4 por
   compatibilidad, pero otros sistemas usan MD5 y DES-MAC. S/Key
   forma parte del sistema base de FreeBSD desde la version 1.1.5 y
   se usa tambien en un numero creciente de otros sistemas
   operativos. S/Key es una marca registrada de Bell Communications
   Research, Inc.

   A partir de la version 5.0 de FreeBSD S/Key fue reemplazado por su
   equivalente OPIE ("One-time Passwords In Everything", "Contrasenas
   de un solo uso para todo"). OPIE usa por defecto hash MD5.

   En esta seccion se explican tres tipos de contrasena. La primera
   es la tipica contrasena al estilo UNIX o Kerberos; las llamaremos
   "contrasenas UNIX". El segundo tipo es la contrasena de un solo
   uso, que se genera con el programa key de S/Key o con opiekey(1)
   de OPIE, y que aceptan los programas keyinit, opiepasswd(1), y el
   prompt de login; llamaremos a esta una "contrasena de un solo
   uso". El ultimo tipo de contrasena es la contrasena secreta que le
   da usted a los programas key/opiekey (y a veces
   keyinit/opiepasswd), que se usa para generar contrasenas de un
   solo uso; a estas las llamaremos "contrasenas secretas", o
   simplemente "contrasena".

   La contrasena secreta no tiene nada que ver con su contrasena
   UNIX; pueden ser la misma, pero no es recomendable. Las
   contrasenas secretas S/Key y OPIE no estan limitadas a 8
   caracteres como las contrasenas UNIX antiguas[8], pueden ser tan
   largas como se quiera. Las contrasenas con frases de seis o siete
   palabras muy largas son bastante comunes. El funcionamiento del
   sistema S/Key o el OPIE es en gran parte completamente
   independiente del sistema de contrasenas UNIX.

   Ademas de la contrasena hay dos datos que son importantes para
   S/Key y OPIE. Uno es lo que se conoce como "semilla" o "llave",
   que consiste en dos letras y cinco digitos. El otro dato
   importante se llama la "cuenta de iteracion", que es un numero
   entre 1 y 100. S/Key genera la contrasena de un solo uso
   concatenando la semilla y la contrasena secreta, aplica el hash
   MD4/MD5 tantas veces como especifique la cuenta de iteracion y
   convierte el resultado en seis palabras cortas en ingles. Estas
   seis palabras en ingles son su contrasena de un solo uso. El
   sistema de autentificacion (principalmente PAM) mantiene un
   registro del uso de contrasenas de un solo uso, y el usuario puede
   validarse si el hash de la contrasena que proporciona es igual a
   la contrasena previa. Como se utiliza un hash de sentido unico es
   imposible generar futuras contrasenas de un solo uso si una
   contrasena que ya ha sido usada fuera capturada; la cuenta de
   iteracion se reduce despues de cada login correcto para
   sincronizar al usuario con el programa login. Cuanto la iteracion
   llega a 1, S/Key y OPIE deben reinicializar.

   Hay tres programas involucrados en cada uno de estos sistemas. Los
   programas key y opiekey aceptan una cuenta iterativa, una semilla
   y una contrasena secreta, y generan una contrasena de un solo uso
   o una lista consecutiva de contrasenas de un solo uso. Los
   programas keyinit y opiepasswd se usan respectivamente para
   inicializar S/Key y OPIE, y para cambiar contrasenas, cuentas
   iterativas o semillas; toman ya sea una frase secreta, o una
   cuenta iterativa y una contrasena de un solo uso. Los programas
   keyinfo y opieinfo examinan los ficheros de credenciales
   correspondientes (/etc/skeykeys o /etc/opiekeys) e imprimen la
   cuenta iterativa y semilla del usuario invocante.

   Explicaremos cuatro tipos de operaciones diferentes. La primera es
   usar keyinit o opiepasswd a traves de una conexion segura para
   configurar contrasenas de un solo uso por primera vez, o para
   cambiar su contrasena o semilla. La segunda operacion es utilizar
   keyinit o opiepasswd a traves de una conexion insegura, ademas de
   usar key u opiekey sobre una conexion segura para hacer lo mismo.
   La tercera es usar key/opiekey para conectarse a traves de una
   conexion insegura. La cuarta es usar opiekey o key para generar
   numerosas llaves, que pueden ser escritas para llevarlas con usted
   al ir a algun lugar desde el que no se puedan hacer conexiones
   seguras a ningun sitio.

     --------------------------------------------------------------

  14.5.1. Inicializacion de conexiones seguras

   Para inicializar S/Key por primera vez cambie su contrasena, o
   cambie su semilla mientras esta conectado a traves de una conexion
   segura (esto es, en la consola de una maquina o via ssh); use
   keyinit sin ningun parametro:

 % keyinit
 Adding unfurl:
 Reminder - Only use this method if you are directly connected.
 If you are using telnet or rlogin exit with no password and use keyinit -s.
 Enter secret password:
 Again secret password:

 ID unfurl s/key is 99 to17757
 DEFY CLUB PRO NASH LACE SOFT

   En OPIE se utiliza opiepasswd:

 % opiepasswd -c
 [grimreaper] ~ $ opiepasswd -f -c
 Adding unfurl:
 Only use this method from the console; NEVER from remote. If you are using
 telnet, xterm, or a dial-in, type ^C now or exit with no password.
 Then run opiepasswd without the -c parameter.
 Using MD5 to compute responses.
 Enter new secret pass phrase:
 Again new secret pass phrase:
 ID unfurl OTP key is 499 to4268
 MOS MALL GOAT ARM AVID COED

   En Enter new secret pass phrase: o Enter secret password:, debe
   introducir una contrasena o frase. Recuerde que no es la
   contrasena que utilizara para entrar, se usara para generar sus
   llaves de un solo uso. La linea "ID" da los parametros de su
   instancia en particular: su nombre de login, la cuenta iterativa y
   semilla. En el momento del login el sistema recordara estos
   parametros y los presentara de nuevo para que no tenga que
   recordarlos. La ultima linea proporciona las contraseeas de un
   solo uso que corresponden a esos parametros y su contrasena
   secreta; si fuera a hacer login de manera inmediata, deberia usar
   esta contrasena de una sola vez.

     --------------------------------------------------------------

  14.5.2. Inicializacion de conexiones inseguras

   Para inicializar o cambiar su contrasena secreta a traves de una
   conexion insegura, necesitara tener alguna conexion segura a algun
   lugar donde pueda ejecutar key u opiekey; puede ser gracias a un
   accesorio de escritorio o en una Macintosh, o un prompt de shell
   en una maquina en la que confie. Necesitara tambien una cuenta
   iterativa (100 probablemente sea un buen valor), y puede usar su
   propia semilla, o usar una generada aleatoriamente. Siguiendo con
   la conexion insegura (hacia la maquina que esta inicializando),
   ejecute keyinit -s:

 % keyinit -s
 Updating unfurl:
 Old key: to17758
 Reminder you need the 6 English words from the key command.
 Enter sequence count from 1 to 9999: 100
 Enter new key [default to17759]:
 s/key 100 to 17759
 s/key access password:
 s/key access password:CURE MIKE BANE HIM RACY GORE

   En OPIE debe usar opiepasswd:

 % opiepasswd

 Updating unfurl:
 You need the response from an OTP generator.
 Old secret pass phrase:
         otp-md5 498 to4268 ext
         Response: GAME GAG WELT OUT DOWN CHAT
 New secret pass phrase:
         otp-md5 499 to4269
         Response: LINE PAP MILK NELL BUOY TROY

 ID mark OTP key is 499 gr4269
 LINE PAP MILK NELL BUOY TROY

   Para aceptar la semilla por defecto (la que el programa keyinit
   llama key, "llave", para terminar de complicar las cosas), pulse
   Enter. Antes de introducir una una contrasena de acceso cambie a
   su conexion o accesorio de escritorio S/Key y dele el mismo
   parametro:

 % key 100 to17759
 Reminder - Do not use this program while logged in via telnet or rlogin.
 Enter secret password: <secret password>
 CURE MIKE BANE HIM RACY GORE

   O para OPIE:

 % opiekey 498 to4268
 Using the MD5 algorithm to compute response.
 Reminder: Don't use opiekey from telnet or dial-in sessions.
 Enter secret pass phrase:
 GAME GAG WELT OUT DOWN CHAT

   Vuelva a la conexion insegura y copie la contrasena de un solo uso
   generada al programa que quiera usar.

     --------------------------------------------------------------

  14.5.3. Generacion una sola contrasena de un solo uso

   Una vez que ha inicializado S/Key u OPIE, cuando haga login vera
   un "prompt" parecido al siguiente:

 % telnet ejemplo.com
 Trying 10.0.0.1...
 Connected to ejemplo.com
 Escape character is '^]'.

 FreeBSD/i386 (ejemplo.com) (ttypa)

 login: <username>
 s/key 97 fw13894
 Password:

   O, en el caso de OPIE:

 % telnet ejemplo.com
 Trying 10.0.0.1...
 Connected to ejemplo.com
 Escape character is '^]'.

 FreeBSD/i386 (ejemplo.com) (ttypa)

 login: <nombre_de_usuario>
 otp-md5 498 gr4269 ext
 Password:

   Como una nota aparte, el "prompt" de S/Key y OPIE cuenta con una
   opcion util (que no se muestra aqui): si pulsa Enter en el
   "prompt" de contrasena el "prompt" activara el eco para que pueda
   ver en pantalla lo que teclea. Esto puede ser extremadamente util
   si esta tecleando una contrasena a a mano o desde un la lista
   impresa.

   Ahora necesitara generar su contrasena de un solo uso para
   responder a este "prompt" de login. Debe hacerlo en un sistema
   digno de confianza y en el que pueda ejecutar key u opiekey.
   Existen versiones DOS, Windows y tambien para Mac OS. Ambos usaran
   la cuenta iterativa y la semilla como opciones de linea de
   ordenes. Puede cortarlas y pegarlas desde el "prompt" de login de
   la maquina en la que se esta identificando.

   En el sistema de confianza:

 % key 97 fw13894
 Reminder - Do not use this program while logged in via telnet or rlogin.
 Enter secret password:
 WELD LIP ACTS ENDS ME HAAG

   Con OPIE:

 % opiekey 498 to4268
 Using the MD5 algorithm to compute response.
 Reminder: Don't use opiekey from telnet or dial-in sessions.
 Enter secret pass phrase:
 GAME GAG WELT OUT DOWN CHAT

   Ahora que tiene su contrasena de un solo uso puede proceder con el
   login:

 login: <nombre_de_usuario>
 s/key 97 fw13894
 Password: <Enter para activar el eco>
 s/key 97 fw13894
 Password [echo on]: WELD LIP ACTS ENDS ME HAAG
 Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ...

     --------------------------------------------------------------

  14.5.4. Generacion de multiples contrasenas de un solo uso

   A veces usted hay que ir a lugares donde no hay acceso a una
   maquina de fiar o a una conexion segura. En estos casos, puede
   utilizar key y opiekey para generar previamente numerosas
   contrasenas de un solo uso para, una vez impresas, llevarselas a
   donde hagan falta. Por ejemplo:

 % key -n 5 30 zz99999
 Reminder - Do not use this program while logged in via telnet or rlogin.
 Enter secret password: <secret password>
 26: SODA RUDE LEA LIND BUDD SILT
 27: JILT SPY DUTY GLOW COWL ROT 
 28: THEM OW COLA RUNT BONG SCOT 
 29: COT MASH BARR BRIM NAN FLAG 
 30: CAN KNEE CAST NAME FOLK BILK

   O para OPIE:

 % opiekey -n 5 30 zz99999
 Using the MD5 algorithm to compute response.
 Reminder: Don't use opiekey from telnet or dial-in sessions.
 Enter secret pass phrase: <secret password>
 26: JOAN BORE FOSS DES NAY QUIT
 27: LATE BIAS SLAY FOLK MUCH TRIG
 28: SALT TIN ANTI LOON NEAL USE
 29: RIO ODIN GO BYE FURY TIC
 30: GREW JIVE SAN GIRD BOIL PHI

   El -n 5 pide cinco llaves en secuencia, la opcion 30 especifica
   que ese debe ser el ultimo numero de iteracion. Observe que se
   imprimen en el orden inverso de uso. Si es realmente paranoico
   escriba los resultados a mano; si no, puede enviar la salida a
   lpr. Observe que cada linea muestra la cuenta iterativa y la
   contrasena de un solo uso; puede ir tachando las contrasenas segun
   las vaya utilizando.

     --------------------------------------------------------------

  14.5.5. Restriccion del uso de contrasenas UNIX(R)

   S/Key puede implantar restricciones en el uso de contrasenas UNIX
   basandose en el nombre de equipo, nombre de usuario, puerto de
   terminal o direccion IP de una sesion de login. Consulte el
   fichero de configuracion /etc/skey.access. La pagina de manual de
   skey.access(5) contiene mas informacion sobre el formato del
   fichero y detalla tambien algunas precauciones de seguridad que
   hay que tener en cuenta antes de basar nuestra seguridad en este
   fichero.

   Si /etc/skey.access no existiera (por defecto es asi en sistemas
   FreeBSD 4.X) todos los usuarios podran disponer de contrasenas
   UNIX. Si el fichero existe se exigira a todos los usuarios el uso
   de S/Key, a menos que se configure de otro modo en skey.access. En
   todos los casos las contrasenas UNIX son admiten en consola.

   Aqui hay un ejemplo del fichero de configuracion skey.access que
   muestra las tres formas mas comunes de configuracion:

 permit internet 192.168.0.0 255.255.0.0
 permit user fnord
 permit port ttyd0

   La primera linea (permit internet) permite a usuarios cuyas
   direcciones IP origen (las cuales son vulnerables a una
   falsificacion) concuerden con los valores y mascara especificados
   utilizar contrasenas UNIX. Esto no debe usarse como mecanismo de
   seguridad, sino como medio de recordarle a los usuarios
   autorizados que estan usando una red insegura y necesitan utilizar
   S/Key para la validacion.

   La segunda linea (permit user) permite al nombre de usuario
   especificado, en este caso fnord, utilizar contrasenas UNIX en
   cualquier momento. Hablando en general, esto solo debe ser usado
   por gente que no puede usar el programa key, como aquellos con
   terminales tontas o refractarios al aprendizaje.

   La tercera linea (permit port) permite a todos los usuarios
   validados en la linea de terminal especificada utilizar
   contrasenas UNIX; esto puede usarse para usuarios que se conectan
   mediante "dial-ups".

   OPIE puede restringir el uso de contrasenas UNIX basandose en la
   direccion IP de una sesion de login igual que lo haria S/Key. El
   fichero que gestiona esto es /etc/opieaccess, que esta incluido
   por defecto en sistemas FreeBSD 5.0 o posteriores. Revise
   opieaccess(5) para mas informacion sobre este fichero y que
   consideraciones de seguridad debe tener presentes a la hora de
   usarlo.

   Veamos un ejemplo de opieaccess:

 permit 192.168.0.0 255.255.0.0

   Esta linea permite a usuarios cuya direccion IP de origen
   (vulnerable a falsificacion) concuerde con los valores y mascara
   especificados, utilizar contrasenas UNIX en cualquier momento.

   Si no concuerda ninguna regla en opieaccess se niegan por defecto
   los logins no-OPIE.

     --------------------------------------------------------------

14.6. TCP Wrappers

   Escrito por: Tom Rhodes.

   Cualquiera que este familiarizado con inetd(8) probablemente haya
   oido hablar de TCP Wrappers, pero poca gente parece comprender
   completamente su utilidad en un entorno de red. Parece que todos
   quieren instalar un cortafuegos para manejar conexiones de red.
   Aunque un cortafuegos tiene una amplia variedad de usos hay cosas
   que un cortafuegos no es capaz de gestionar, como el envio de
   texto como respuesta al creador de la conexion. El software TCP
   hace esto y mas. En las siguientes secciones se explicaran unas
   cuantas opciones de TCP Wrappers y, cuando sea necesario, se
   mostraran ejemplos de configuraciones.

   El software TCP Wrappers extiende las habilidades de inetd para
   ofrecer soporte para cada servidor daemon bajo su control.
   Utilizando este metodo es posible proveer soporte de logs,
   devolver mensajes a conexiones, permitir a un daemon aceptar
   solamente conexiones internas, etc. Aunque algunas de estas
   opciones pueden conseguirse gracias a un cortafuegos, no solo
   anadira una capa extra de seguridad, sino que ira mas alla del
   nivel de control ue un cortafuegos puede ofrecerle.

   Las brillantes capacidades de TCP Wrappers no deben considerarse
   una alternativa a un buen cortafuegos. TCP Wrappers puede usarse
   conjuntamente con un cortafuegos u otro sistema de de seguridad,
   pues ofrece una capa extra de proteccion para el sistema.

   Ya que es una extension de la configuracion de inetd, se da por
   hecho que el lector ha leido la seccion configuracion de inetd.

     Nota: Aunque los programas ejecutados por inetd(8) no son
     exactamente "daemons" tradicionalmente han recibido ese nombre.
     Daemon es, por tanto, el termino que usaremos en esta seccion.

     --------------------------------------------------------------

  14.6.1. Configuracion inicial

   El unico requisito para usar TCP Wrappers en FreeBSD es que el
   servidor inetd se inicie desde rc.conf con la opcion -Ww (es la
   configuracion por defecto). Por descontado, se presupone que
   /etc/hosts.allow estara correctamente configurado, pero syslogd(8)
   enviara mensajes a los logs del sistema si no es asi.

     Nota: A diferencia de otras implementaciones de TCP Wrappers, se
     ha dejado de usar hosts.deny. Todas las opciones de
     configuracion deben ir en /etc/hosts.allow.

   En la configuracion mas simple las politicas de conexion de
   daemons estan configuradas ya sea a permitir o bloquear,
   dependiendo de las opciones en /etc/hosts.allow. La configuracion
   por defecto en FreeBSD consiste en permitir una conexion a cada
   daemon iniciado por inetd. Es posible modificar esta
   configuracion, pero explicaremos como hacerlo despues de exponer
   la configuracion basica.

   La configuracion basica tiene la estructura daemon : direccion :
   accion, donde daemon es el nombre de daemon que inicia inetd. La
   direccion puede ser un nombre de equipo valido, una direccion IP o
   IPv6 encerrada en corchetes ([ ]). El campo accion puede ser
   permitir o denegar para el dar el acceso apropiado. Tenga presente
   que la configuracion funciona en base a la primera regla cuya
   semantica concuerde; esto significa que el fichero de
   configuracion se lee en orden ascendente hasta que concuerde una
   regla. Cuando se encuentra una concordancia se aplica la regla y
   el proceso se detendra.

   Existen muchas otras opciones pero estas se explican en una
   seccion posterior. Una linea de configuracion simple puede
   generarse mediante datos asi de simples. Por ejemplo, para
   permitir conexiones POP3 mediante el daemon mail/qpopper, anada
   las siguientes lineas a hosts.allow:

 # This line is required for POP3 connections:
 qpopper : ALL : allow

   Despues de anadir esta linea tendra que reiniciar inetd. Use
   kill(1) o use el parametro restart de /etc/rc.d/inetd.

     --------------------------------------------------------------

  14.6.2. Configuracion avanzada

   Las opciones avanzadas de TCP Wrappers le permiten un mayor
   control sobre la gestion de conexiones. En algunos casos puede
   convenir el enio de un comentario a ciertos equipos o conexiones
   de daemons. En otros casos, quizas se deba registrar una entrada
   en un log o enviar un correo al administrador. Otro tipo de
   situaciones pueden requerir el uso de un servicio solamente para
   conexiones locales. Todo esto es posible gracias al uso de unas
   opciones de configuracion conocidas como comodines, caracteres de
   expansion y ejecucion de ordenes externas. Las siguientes dos
   secciones intentaran cubrir estas situaciones.

     --------------------------------------------------------------

    14.6.2.1. Ordenes externas

   Imaginemos una situacion en la que una conexion debe ser denegada
   pero se debe mandar un motivo a quien intento establecer esa
   conexion. ?Como? Mediante la opcion twist. Ante un intento de
   conexion se invoca a twist, que ejecuta una orden de shell o un
   "script". Tiene un ejemplo en el fichero hosts.allow:

 # The rest of the daemons are protected.
 ALL : ALL \
         : severity auth.info \
         : twist /bin/echo "No se permite utilizar %d desde %h."

   Este ejemplo muestra que el mensaje, "No se permite utilizar
   daemon desde nombre de equipo." se enviara en el caso de cualquier
   daemon no configurado previamente en el fichero de acceso. Esto es
   extremadamente util para enviar una respuesta al creador de la
   conexion justo despues de que la conexion establecida es
   rechazada. Observe que cualquier mensaje que se desee enviar debe
   ir entre comillas "; esta regla no tiene excepciones.

     Aviso Es posible lanzar un ataque de denegacion de servicio al
     servidor si un atacante o grupo de atacantes pueden llegar a
     sobrecargar estos daemons con peticiones de conexion.

   Otra posibilidad en estos casos es usar la opcion spawn. Igual que
   twist, spawn niega implicitamente la conexion, y puede usarse para
   ejecutar ordenes de shell externos o "scripts". A diferencia de
   twist, spawn no enviara una respuesta al origen de la conexion.
   Veamos un ejemplo; observe la siguiente linea de configuracion:

 # No permitimos conexiones desde ejemplo.com:
 ALL : .ejemplo.com \
         : spawn (/bin/echo %a desde %h intento acceder a %d >> \
           /var/log/connections.log) \
         : deny

   Esto denegara todos los intentos de conexion desde el dominio
   *.ejemplo.com; simultaneamente creara una entrada con el nombre
   del equipo, direccion IP y el daemon al que intento conectarse al
   fichero /var/log/connections.log.

   Ademas de la sustitucion de caracteres ya expuesta mas arriba (por
   ejemplo %a) existen unas cuantas mas. Si quiere ver la lista
   completa consulte la pagina de manual hosts_access(5).

     --------------------------------------------------------------

    14.6.2.2. Opciones comodin

   Hasta ahora se ha usado ALL en todos los ejemplos, pero hay otras
   opciones interesantes para extender un poco mas la funcionalidad.
   Por ejemplo, ALL puede usarse para concordar con cualquier
   instancia ya sea un daemon, dominio o direccion IP. Otro comodin
   es PARANOID, que puede utilizarse para concordar con cualquier
   equipo que presente una direccion IP que pueda estar falsificada.
   En otras palabras, paranoid puede usarse para definir una accion a
   tomar siempre que tenga lugar una conexion desde una direccion IP
   que difiera de su nombre de equipo. Quizas todo se vea mas claro
   con el siguiente ejemplo:

 # Bloquear peticiones posiblemente falsificadas a sendmail:
 sendmail : PARANOID : deny

   En ese ejemplo todas las peticiones de conexion a sendmail que
   tengan una direccion IP que varie de su nombre de equipo seran
   denegadas.

     AtencionUtilizando PARANOID puede bloquear el acceso a
     servidores si el cliente o el servidor tiene una configuracion
     de DNS incorrecta. Recomendamos al administrador la maxima
     cautela en su uso.

   Consulte hosts_access(5) si quiere saber mas sobre los comodines y
   sus posibilidades de uso.

   Si quiere que cualquiera de los ejemplos citados funcione debe
   comentar la primera linea de hosts.allow (tal y como se dijo al
   principio de la seccion.

     --------------------------------------------------------------

14.7. KerberosIV

   Escrito por Mark Murray. Basado en un texto de Mark Dapoz.

   Kerberos es un sistema/protocolo de red agregado que permite a los
   usuarios identificarse a traves de los servicios de un servidor
   seguro. Los servicios como login remoto, copia remota, copias de
   ficheros de un sistema a otro y otras tantas tareas arriesgadas
   pasan a ser considerablemente seguras y mas controlables.

   Las siguientes instrucciones pueden usarse como una guia para
   configurar Kerberos tal y como se distribuye con FreeBSD. De todas
   maneras, debe consultar diversas paginas de manual para conocer
   todos los detalles.

     --------------------------------------------------------------

  14.7.1. Instalacion de KerberosIV

   Kerberos es un componente opcional de FreeBSD. La manera mas facil
   de instalar este software es seleccionando la distribucion krb4 o
   krb5 en sysinstall durante la instalacion inicial de FreeBSD.
   Desde ahi instalara la implementacion de Kerberos "eBones"
   (KerberosIV) o "Heimdal" (Kerberos5). Estas implementaciones se
   incluyen porque a que han sido desarrolladas fuera de EEUU y
   Canada, lo que las convertia en accesibles para administradores de
   sistemas del resto del mundo durante la epoca restrictiva de
   control control de exportaciones de codigo criptografico desde
   EEUU.

   Tambien puede instalar la implementacion de Kerberos del MIT desde
   la coleccion de ports (security/krb5).

     --------------------------------------------------------------

  14.7.2. Creacion de la base de datos inicial

   Esto solo debe hacerse en el servidor Kerberos. Lo primero es
   asegurarse de que no tiene bases de datos de Kerberos anteriores.
   Entre al directorio /etc/kerberosIV y asegurese de que solo esten
   los siguientes ficheros:

 # cd /etc/kerberosIV
 # ls
 README          krb.conf        krb.realms

   Si existe cualquier otro fichero (como principal.* o master_key)
   utilice kdb_destroy para destruir la base de datos antigua de
   Kerberos. Si Kerberos no esta funcionando simplemente borre los
   ficheros sobrantes.

   Edite krb.conf y krb.realms para definir su dominio Kerberos. En
   nuestro ejemplo el dominio sera EJEMPLO.COM y el servidor es
   grunt.ejemplo.com. Editamos o creamos krb.conf:

 # cat krb.conf
 EJEMPLO.COM
 EJEMPLO.COM grunt.ejemplo.com admin server
 CS.BERKELEY.EDU okeeffe.berkeley.edu
 ATHENA.MIT.EDU kerberos.mit.edu
 ATHENA.MIT.EDU kerberos-1.mit.edu
 ATHENA.MIT.EDU kerberos-2.mit.edu
 ATHENA.MIT.EDU kerberos-3.mit.edu
 LCS.MIT.EDU kerberos.lcs.mit.edu
 TELECOM.MIT.EDU bitsy.mit.edu
 ARC.NASA.GOV trident.arc.nasa.gov

   Los demas dominios no deben estar forzosamente en la
   configuracion. Los hemos incluido como ejemplo de como puede
   hacerse que una maquina trabaje con multiples dominios. Si quiere
   mantener todo simple puede abstenerse de incluirlos.

   La primera linea es el dominio en el que el sistema funcionara.
   Las demas lineas contienen entradas dominio/equipo. El primer
   componente de cada linea es un dominio y el segundo es un equipo
   de ese dominio, que actua como "centro de distribucion de llaves".
   Las palabras admin server que siguen al nombre de equipo
   significan que ese equipo tambien ofrece un servidor de base da
   datos administrativo. Si quiere consultar una explicacion mas
   completa de estos terminos consulte las paginas de manual de de
   Kerberos.

   Ahora anadiremos grunt.ejemplo.com al dominio EJEMPLO.COM y
   tambien una entrada para poner todos los equipos en el dominio
   .ejemplo.com Kerberos EJEMPLO.COM. Puede actualizar su krb.realms
   del siguiente modo:

 # cat krb.realms
 grunt.ejemplo.com EJEMPLO.COM
 .ejemplo.com EJEMPLO.COM
 .berkeley.edu CS.BERKELEY.EDU
 .MIT.EDU ATHENA.MIT.EDU
 .mit.edu ATHENA.MIT.EDU

   Igual que en caso previo, no tiene por que incluir los demas
   dominios. Se han incluido para mostrar como puede usar una maquina
   en multiples dominios. Puede eliminarlos y simplificar la
   configuracion.

   La primera linea pone al sistema especifico en el dominio
   nombrado. El resto de las lineas muestran como asignar por defecto
   sistemas de un subdominio a un dominio Kerberos.

   Ya podemos crear la base de datos. Solo se ejecuta en el servidor
   Kerberos (o centro de distribucion de llaves). Ejecute kdb_init:

 # kdb_init
 Realm name [default  ATHENA.MIT.EDU ]: EJEMPLO.COM
 You will be prompted for the database Master Password.
 It is important that you NOT FORGET this password.
                
 Enter Kerberos master key:

   Ahora tendremos que guardar la llave para que los servidores en la
   maquina local puedan recogerla. Utilice kstash:

 # kstash
              
 Enter Kerberos master key:

 Current Kerberos master key version is 1.

 Master key entered. BEWARE!

   Esto guarda la contrasena cifrada maestra en
   /etc/kerberosIV/master_key.

     --------------------------------------------------------------

  14.7.3. Puesta en marcha del sistema

   Tendra que anadir a la base de datos dos entradas en concreto para
   cada sistema que vaya a usar Kerberos: kpasswd y rcmd. Se hacen
   para cada sistema individualmente cada sistema, y el campo
   "instance" es el nombre individual del sistema.

   Estos daemons kpasswd y rcmd permiten a otros sistemas cambiar
   contrasenas de Kerberos y ejecutar ordenes como rcp(1), rlogin(1)
   y rsh(1).

   Ahora vamos a anadir estas entradas:

 # kdb_edit
 Opening database...

 Enter Kerberos master key:

 Current Kerberos master key version is 1.

 Master key entered.  BEWARE!
 Previous or default values are in [brackets] ,
 enter return to leave the same, or new value.

 Principal name: passwd
 Instance: grunt

 <Not found>, Create [y] ? y

 Principal: passwd, Instance: grunt, kdc_key_ver: 1
 New Password:                    <---- tecleo aleatorio
 Verifying password

 New Password: <---- tecleo aleatorio

 Random password [y] ? y

 Principal's new key version = 1
 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
 Max ticket lifetime (*5 minutes) [ 255 ] ?
 Attributes [ 0 ] ?
 Edit O.K.
 Principal name: rcmd
 Instance: grunt

 <Not found>, Create [y] ?

 Principal: rcmd, Instance: grunt, kdc_key_ver: 1
 New Password:           <---- tecleo aleatorio
 Verifying password

 New Password:           <---- tecleo aleatorio

 Random password [y] ?

 Principal's new key version = 1
 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
 Max ticket lifetime (*5 minutes) [ 255 ] ?
 Attributes [ 0 ] ?
 Edit O.K.
 Principal name:         <---- si introduce datos nulos saldra del programa

     --------------------------------------------------------------

  14.7.4. Creacion del fichero del servidor

   Ahora tendremos que extraer todas las instancias que definen los
   servicios en cada maquina; para ello usaremos ext_srvtab. Esto
   creara un fichero que debe ser copiado o movido por medios seguros
   al directorio /etc/kerberosIV de cada cliente Kerberos. Este
   fichero debe existir en todos los servidores y clientes dada su
   importancia clave para el funcionamiento de Kerberos.

 # ext_srvtab grunt
 Enter Kerberos master key:
                
 Current Kerberos master key version is 1.

 Master key entered. BEWARE!
 Generating 'grunt-new-srvtab'....

   Esta orden solo genera un fichero temporal al que tendra que
   cambiar el nombre a srvtab para que todos los servidores puedan
   recogerlo. Utilice mv(1) para moverlo al lugar correcto en el
   sistema original:

 # mv grunt-new-srvtab srvtab

   Si el fichero es para un sistema cliente y la red no puede
   considerarse segura copie el cliente-new-srvtab en un medio
   extraible y transportelo por medios fisicos seguros. Asegurese de
   cambiar su nombre a srvtab en el directorio /etc/kerberosIV del
   cliente, y asegurese tambien de que tiene modo 600:

 # mv grumble-new-srvtab srvtab
 # chmod 600 srvtab

     --------------------------------------------------------------

  14.7.5. Anadir entradas a la base de datos

   Ahora tenemos que anadir entradas de usuarios a la base de datos.
   Primero vamos a crear una entrada para el usuario jane. Para ello
   usaremos kdb_edit:

 # kdb_edit
 Opening database...

 Enter Kerberos master key:

 Current Kerberos master key version is 1.

 Master key entered.  BEWARE!
 Previous or default values are in [brackets] ,
 enter return to leave the same, or new value.

 Principal name: jane
 Instance:

 <Not found>, Create [y] ? y

 Principal: jane, Instance: , kdc_key_ver: 1
 New Password:                <---- introduzca una constrasena segura
 Verifying password

 New Password:                <---- introduzca de nuevo la contrasena
 Principal's new key version = 1
 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
 Max ticket lifetime (*5 minutes) [ 255 ] ?
 Attributes [ 0 ] ?
 Edit O.K.
 Principal name:            <---- si introduce datos nulos saldra del programa

     --------------------------------------------------------------

  14.7.6. Prueba del sistema

   Primero tenemos que iniciar los daemons de Kerberos. Tenga en
   cuenta que si su /etc/rc.conf esta configurado correctamente el
   inicio tendra ligar cuando reinicie el sistema. Esta prueba solo
   es necesaria en el servidor Kerberos; los clientes Kerberos
   tomaran lo que necesiten automaticamente desde el directorio
   /etc/kerberosIV.

 # kerberos &
 Kerberos server starting
 Sleep forever on error
 Log file is /var/log/kerberos.log
 Current Kerberos master key version is 1.

 Master key entered. BEWARE!

 Current Kerberos master key version is 1
 Local realm: EJEMPLO.COM
 # kadmind -n &
 KADM Server KADM0.0A initializing
 Please do not use 'kill -9' to kill this job, use a
 regular kill instead

 Current Kerberos master key version is 1.

 Master key entered.  BEWARE!

   Ahora podemos probar a usar kinit para obtener un ticket para el
   ID jane que creamos antes:

 % kinit jane
 MIT Project Athena (grunt.ejemplo.com)
 Kerberos Initialization for "jane"
 Password:

   Pruebe a listar los tokens con klist para ver si realmente estan:

 % klist
 Ticket file:    /tmp/tkt245
 Principal:      jane@EJEMPLO.COM

   Issued           Expires          Principal
 Apr 30 11:23:22  Apr 30 19:23:22  krbtgt.EJEMPLO.COM@EJEMPLO.COM

   Ahora trate de cambiar la contrasena usando passwd(1) para
   comprobar si el daemon kpasswd esta autorizado a acceder a la base
   de datos Kerberos:

 % passwd
 realm EJEMPLO.COM
 Old password for jane:
 New Password for jane:
 Verifying password
 New Password for jane:
 Password changed.

     --------------------------------------------------------------

  14.7.7. Anadir privilegios de su

   Kerberos nos permite dar a cada usuario que necesite privilegios
   de root su propia contrasena para su(1). Podemos agregar un ID que
   este autorizado a ejecutar su(1) root. Esto se controla con una
   instancia de root asociada con un usuario. Vamos a crear una
   entrada jane.root en la base de datos, para lo que recurrimos a
   kdb_edit:

 # kdb_edit
 Opening database...

 Enter Kerberos master key:

 Current Kerberos master key version is 1.

 Master key entered.  BEWARE!
 Previous or default values are in [brackets] ,
 enter return to leave the same, or new value.

 Principal name: jane
 Instance: root

 <Not found>, Create [y] ? y

 Principal: jane, Instance: root, kdc_key_ver: 1
 New Password:                    <---- introduzca una contrasena SEGURA
 Verifying password

 New Password:                    <---- introduzca otra vez la constrasena

 Principal's new key version = 1
 Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
 Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- Keep this short!
 Attributes [ 0 ] ?
 Edit O.K.
 Principal name:                  <---- si introduce datos nulos saldra del programa

   Ahora trate de obtener los tokens para comprobar que todo
   funciona:

 # kinit jane.root
 MIT Project Athena (grunt.ejemplo.com)
 Kerberos Initialization for "jane.root"
 Password:

   Hemos de agregar al usuario al .klogin de root:

 # cat /root/.klogin
 jane.root@EJEMPLO.COM

   Ahora trate de hacer su(1):

 % su
 Password:

   y eche un vistazo a que tokens tenemos:

 # klist
 Ticket file:    /tmp/tkt_root_245
 Principal:      jane.root@EJEMPLO.COM

   Issued           Expires          Principal
 May  2 20:43:12  May  3 04:43:12  krbtgt.EJEMPLO.COM@EJEMPLO.COM

     --------------------------------------------------------------

  14.7.8. Uso de otras ordenes

   En un ejemplo anterior creamos un usuario llamado jane con una
   instancia root. Nos basamos en un usuario con el mismo nombre del
   "principal" (jane), el procedimiento por defecto en Kerberos:
   <principal>.<instancia> con la estructura <nombre de usuario>.root
   permitira que <nombre de usuario> haga su(1) a root si existen las
   entradas necesarias en el .klogin que hay en el directorio home de
   root:

 # cat /root/.klogin
 jane.root@EJEMPLO.COM

   De la misma manera, si un usuario tiene en su directorio home lo
   siguiente:

 % cat ~/.klogin
 jane@EJEMPLO.COM
 jack@EJEMPLO.COM

   significa que cualquier usuario del dominio EJEMPLO.COM que se
   identifique como jane o como jack (via kinit, ver mas arriba)
   podra acceder a la cuenta de jane o a los ficheros de este sistema
   (grunt) via rlogin(1), rsh(1) o rcp(1).

   Veamos por ejemplo como jane se se identifica en otro sistema
   mediante Kerberos:

 % kinit
 MIT Project Athena (grunt.ejemplo.com)
 Password:
 % rlogin grunt
 Last login: Mon May  1 21:14:47 from grumble
 Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
         The Regents of the University of California.   All rights reserved.

 FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995

   Aqui jack se identifica con la cuenta de jane en la misma maquina
   (jane tiene configurado su fichero .klogin como se ha mostrado
   antes, y la persona encargada de la administracion de Kerberos ha
   configurado un usuario principal jack con una instancia nula):

 % kinit
 % rlogin grunt -l jane
 MIT Project Athena (grunt.ejemplo.com)
 Password:
 Last login: Mon May  1 21:16:55 from grumble
 Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
         The Regents of the University of California.   All rights reserved.
 FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995

     --------------------------------------------------------------

14.8. Kerberos5

   Texto de Tillman Hodgson. Basado en un texto de Mark Murray.

   Cada version de FreeBSD posterior a FreeBSD-5.1 incluye soporte
   solamente para Kerberos5. Por esta razon Kerberos5 es la unica
   version incluida. Su configuracion es similar en muchos aspectos a
   la de KerberosIV. La siguiente informacion solo atane a Kerberos5
   en versiones de FreeBSD-5.0 o posteriores. Los usuarios que deseen
   utilizar KerberosIV pueden instalar el port security/krb4.

   Kerberos es un sistema/protocolo agregado para red que permite a
   los usuarios validar su identidad a traves de los servicios de un
   servidor seguro. Los servicios como login remoto, copia remota,
   copias de fichero de un sistema a otro y otras tareas generalmente
   consideradas poco seguras pasan a ser considerablemente seguras y
   mas controlables.

   Kerberos puede describirse como un sistema proxy
   identificador/verificador. Tambien puede describirse como un
   sistema confiable de autentificacion de terceros. Kerberos
   solamente ofrece una funcion: la validacion segura de usuarios a
   traves de una red. No proporciona funciones de autorizacion (es
   decir, lo que los usuarios tienen permitido hacer) o funciones de
   auditoria (lo que esos usuarios hicieron). Despues de que un
   servidor y un cliente han usado Kerberos para demostrar su
   identidad pueden tambien cifrar todas sus sus comunicaciones,
   asegurando de este modo su intimidad y la integridad de sus datos
   durante su uso del sistema.

   Es, por tanto, altamente recomendable que se use Kerberos ademas
   de otros metodos de seguridad que ofrezcan servicios de
   autorizacion y auditoria.

   Puede usar las siguientes instrucciones como una guia para
   configurar Kerberos tal y como se distribuye en FreeBSD. De todas
   maneras, deberia consultar las paginas de manual adecuadas para
   tener toda la informacion.

   Vamos a mostrar una instalacion Kerberos, para lo cual usaremos
   los siguientes espacios de nombres:

     * El dominio DNS ("zona") sera ejemplo.org.

     * El dominio Kerberos (realm) sera EJEMPLO.ORG.

     Nota: Debe utilizar nombres de dominio reales al configurar
     Kerberos incluso si pretende ejecutarlo internamente. Esto le
     evitara problemas de DNS y asegura la interoperacion con otros
     dominios Kerberos.

     --------------------------------------------------------------

  14.8.1. Historia

   Kerberos fue creado en el Massachusetts Institute of Technology
   (MIT) como una solucion a los problemas de seguridad de la red. El
   protocolo Kerberos utiliza criptografia fuerte para que un cliente
   pueda demostrar su identidad en un servidor (y viceversa) a traves
   de una conexion de red insegura.

   Kerberos es el nombre de un protocolo de autentificacion via red y
   un adjetivo para describir programas que implementan el programa
   (Kerberos telnet, por ejemplo, conocido tambien como el "telnet
   kerberizado"). La version actual del protocolo es la 5, descrita
   en RFC 1510.

   Existen diversas implementaciones libres de este protocolo,
   cubriendo un amplio rango de sistemas operativos. El MIT, donde
   Kerberos fue desarrollado, continua desarrollando su propio
   paquete Kerberos. Suele usarse en los EEUU como producto
   criptografico y como tal ha sufrido las regulaciones de
   exportacion de los EEUU. El Kerberos del MIT existe como un port
   en (security/krb5). Heimdal Kerberos es otra implementacion de la
   version 5, y fue desarrollada de forma intencionada fuera de los
   EEUU para sortear las regulaciones de exportacion (y por eso puede
   incluirse en versiones no comerciales de UNIX). La distribucion
   Heimdal Kerberos esta en el port (security/heimdal), y se incluye
   una instalacion minima en el sistema base de FreeBSD.

   Para alcanzar la mayor audiencia estas instrucciones asumen el uso
   de la distribucion Heimdal incluida en FreeBSD.

     --------------------------------------------------------------

  14.8.2. Configuracion de un KDC Heimdal

   El centro de distribucion de llaves (KDC, Key Distribution Center)
   es el servicio centralizado de validacion que proporciona
   Kerberos: es el sistema que emite tickets Kerberos. El KDC goza
   del estatus de ser considerado como "confiable" por las demas
   computadoras del dominio Kerberos, y por eso tiene consideraciones
   de seguridad mas elevadas.

   Tenga en cuenta que, aunque la ejecucion del servidor Kerberos
   requiere muy pocos recursos, se recomienda el uso de una maquina
   dedicada a KDC por razones de seguridad.

   Para empezar a configurar un KDC asegurese de que su /etc/rc.conf
   contenga la configuracion adecuada para actuar como KDC (tal vez
   deba ajustar algunas rutas para que cuadren con su sistema):

 kerberos5_server_enable="YES"
 kadmind5_server_enable="YES"
 kerberos_stash="YES"

     Nota: kerberos_stash solo existe en FreeBSD 4.X.

   A continuacion configuraremos el fichero de configuracion de
   Kerberos, /etc/krb5.conf:

 [libdefaults]
     default_realm = EJEMPLO.ORG [realms]
     EXAMPLE.ORG = {
         kdc = kerberos.ejemplo.org
         admin_server = kerberos.ejemplo.org
     }
 [domain_realm]
     .ejemplo.org = EJEMPLO.ORG

   Tenga en cuenta que este /etc/krb5.conf implica que su KDC tendra
   el nombre de equipo completo calificado de kerberos.ejemplo.org.
   Necesitara anadir una entrada CNAME (alias) a su fichero de zona
   si su KDC tiene un nombre de equipo diferente.

     Nota: En grandes redes con un servidor DNS BIND bien
     configurado, el ejemplo de arriba puede quedar del siguiente
     modo:

 [libdefaults]
       default_realm = EJEMPLO.ORG

     Con las siguientes lineas agregadas al fichero de zona
     ejemplo.org:

 _kerberos._udp      IN  SRV     01 00 88 kerberos.ejemplo.org.
 _kerberos._tcp      IN  SRV     01 00 88 kerberos.ejemplo.org.
 _kpasswd._udp       IN  SRV     01 00 464 kerberos.ejemplo.org.
 _kerberos-adm._tcp  IN  SRV     01 00 749 kerberos.ejemplo.org.
 _kerberos           IN  TXT     EJEMPLO.ORG

     Nota: Para que los clientes sean capaces de encontrar los
     servicios Kerberos debe tener ya sea un /etc/krb5.conf
     configurado o un /etc/krb5.conf configurado de forma minima y un
     servidor DNS configurado correctamente.

   A continuacion crearemos la base de datos Kerberos. Esta base de
   datos contiene las llaves de todos los principales cifradas con
   una contrasena maestra. No es necesario que recuerde esta
   contrasena, pues se almacenara en /var/heimdal/m-key. Para crear
   la llave maestra ejecute kstash e introduzca una contrasena.

   Una vez que se ha creado la llave maestra puede inicializar la
   base de datos usando el programa kadmin con la opcion -l (que
   significa "local"). Esta opcion le dice a kadmin que modifique los
   ficheros de la base de datos directamente en lugar de ir a traves
   del servicio de red kadmind. Esto gestiona el problema del huevo y
   la gallina de tratar de conectar a la base de datos antes de que
   esta exista. Una vez que tiene el "prompt" de kadmin, utilice init
   para crear su base de datos de dominios iniciales.

   Para terminar, mientras esta todavia en kadmin puede crear su
   primer principal mediante add. Utilice las opciones por defecto
   por ahora, mas tarde puede cambiarlas mediante modify. Recuerde
   que puede usar ? en cualquier "prompt" para consultar las opciones
   disponibles.

   Veamos un ejemplo de sesion de creacion de una base de datos:

 # kstash
 Master key: xxxxxxxx
 Verifying password - Master key: xxxxxxxx

 # kadmin -l
 kadmin> init EJEMPLO.ORG
 Realm max ticket life [unlimited]:
 kadmin> add tillman
 Max ticket life [unlimited]:
 Max renewable life [unlimited]:
 Attributes []:
 Password: xxxxxxxx
 Verifying password - Password: xxxxxxxx

   Ahora puede arrancar los servicios KDC. Ejecute /etc/rc.d/kerberos
   start y /etc/rc.d/kadmind start para levantar dichos servicios.
   Recuerde que no tendra ningun daemon kerberizado ejecutandose pero
   debe poder confirmar que KDC funciona por el procedimiento de
   obtener y listar un boleto del principal (usuario) que acaba de
   crear en la linea de ordenes de KDC:

 % k5init tillman
 tillman@EJEMPLO.ORG's Password:

 % k5list
 Credentials cache: FILE:/tmp/krb5cc_500
         Principal: tillman@EJEMPLO.ORG

   Issued           Expires          Principal
 Aug 27 15:37:58  Aug 28 01:37:58  krbtgt/EJEMPLO.ORG@EJEMPLO.ORG

     --------------------------------------------------------------

  14.8.3. Creacion de un servidor Kerberos con servicios Heimdal

   Antes de nada necesitaremos una copia del fichero de configuracion
   de Kerberos, /etc/krb5.conf. Copielo al cliente desde KDC de forma
   segura (mediante scp(1), o usando un disquete).

   A continuacion necesitara un fichero /etc/krb5.keytab. Esta es la
   mayor diferencia entre un servidor que proporciona daemons
   habilitados con Kerberos y una estacion de trabajo: el servidor
   debe tener un fichero keytab. Dicho fichero contiene las llaves de
   equipo del servidor, las cuales le permiten a el y al KDC
   verificar la identidad entre ellos. Deben transmitirse al servidor
   de forma segura ya que la seguridad del servidor puede verse
   comprometida si la llave se hace publica. Por decirlo mas claro,
   transferirla como texto plano a traves de la red (por ejemplo por
   FTP) es una pesima idea.

   Lo normal es que transmita su keytab al servidor mediante el
   programa kadmin. Esto es practico porque tambien debe crear el
   principal del equipo (el KDC que aparece al final de krb5.keytab)
   usando kadmin.

   Tenga en cuenta que ya debe disponer de un ticket, y que este
   ticket debe poder usar el interfaz kadmin en kadmind.acl. Consulte
   la seccion "administracion remota" en la pagina info de Heimdal
   (info heimdal), donde se exponen los detalles de diseno de las
   listas de control de acceso. Si no quiere habilitar acceso remoto
   kadmin, puede conectarse de forma segura al KDC (por medio de
   consola local, ssh(1) o telnet(1) Kerberos) y administrar en local
   mediante kadmin -l.

   Despues de instalar el fichero /etc/krb5.conf puede usar kadmin
   desde el servidor Kerberos. add --random-key le permitira anadir
   el principal del equipo servidor, y ext le permitira extraer el
   principal del equipo servidor a su propio keybat. Por ejemplo:

 # kadmin
 kadmin> add --random-key host/myserver.ejemplo.org
 Max ticket life [unlimited]:
 Max renewable life [unlimited]:
 Attributes []:
 kadmin> ext host/miservidor.ejemplo.org
 kadmin> exit

   Tenga en cuenta que ext (contraccion de "extract") almacena la
   llave extraida por defecto en en /etc/krb5.keytab.

   Si no tiene kadmind ejecutandose en KDC (posiblemente por razones
   de seguridad) y por lo tanto carece de acceso remoto a kadmin
   puede anadir el principal de equipo (host/miservidor.EJEMPLO.ORG)
   directamente en el KDC y entonces extraerlo a un fichero temporal
   (para evitar sobreescribir /etc/krb5.keytab en el KDC) mediante
   algo parecido a esto:

 # kadmin
 kadmin> ext --keytab=/tmp/ejemplo.keytab host/miservidor.ejemplo.org
 kadmin> exit

   Puede entonces copiar de forma segura el keytab al servidor
   (usando scp o un diquete). Asegurese de usar un nombre de keytab
   diferente para evitar sobreescribir el keytab en el KDC.

   Su servidor puede comunicarse con el KDC (gracias a su fichero
   krb5.conf) y puede probar su propia identidad (gracias al fichero
   krb5.keytab). Ahora esta listo para que usted habilite algunos
   servicios Kerberos. En este ejemplo habilitaremos el servicio
   telnet poniendo una linea como esta en su /etc/inetd.conf y
   reiniciando el servicio inetd(8) con /etc/rc.d/inetd restart:

 telnet    stream  tcp     nowait  root    /usr/libexec/telnetd  telnetd -a user

   La parte critica es -a, de autentificacion de usuario. Consulte la
   pagina de manual telnetd(8) para mas informacion.

     --------------------------------------------------------------

  14.8.4. Kerberos con un cliente Heimdal

   Configurar una computadora cliente es extremadamente facil. Lo
   unico que necesita es el fichero de configuracion de Kerberos que
   encontrara en /etc/krb5.conf. Simplemente copielo de forma segura
   a la computadora cliente desde el KDC.

   Pruebe su computadora cliente mediante kinit, klist, y kdestroy
   desde el cliente para obtener, mostrar y luego borrar un ticket
   para el principal que creo antes. Deberia poder usar aplicaciones
   Kerberos para conectarse a servidores habilitados con Kerberos,
   aunque si no funciona y tiene problemas al intentar obtener el
   boleto lo mas probable es que el problema este en el servidor y no
   en el cliente o el KDC.

   Al probar una aplicacion como telnet, trate de usar un "sniffer"
   de paquetes ( como tcpdump(1)) para confirmar que su contrasena no
   viaja en claro por la red. Trate de usar telnet con la opcion -x,
   que cifra el flujo de datos por entero (algo parecido a lo que
   hace ssh).

   Las aplicaciones clientes Kerberos principales (llamadas
   tradicionalmente kinit, klist, kdestroy y kpasswd) estan incluidas
   en la instalacion base de FreeBSD. Tenga en cuenta que en las
   versiones de FreeBSD anteriores a 5.0 reciben los nombres de
   k5init, k5list, k5destroy, k5passwd y k5stash.

   Tambien se instalan por defecto diversas aplicaciones Kerberos que
   no entran dentro de la categoria de "imprescindibles". Es aqui
   donde la naturaleza "minima" de la instalacion base de Heimdal
   salta a la palestra: telnet es el unico servicio Kerberos
   habilitado.

   El port Heimdal anade algunas de las aplicaciones cliente que
   faltan: versiones Kerberos de ftp, rsh, rcp, rlogin y algunos
   otros programas menos comunes. El port del MIT tambien contiene
   una suite completa de aplicaciones cliente de Kerberos.

     --------------------------------------------------------------

  14.8.5. Ficheros de configuracion de usuario: .k5login y .k5users

   Suele ser habitual que los usuarios de un dominio Kerberos (o
   "principales") tengan su usuario (por ejemplo tillman@EJEMPLO.ORG)
   mapeado a una cuenta de usuario local (por ejemplo un usuario
   llamado llamado tillman). Las aplicaciones cliente como telnet
   normalmente no requieren un nombre de usuario o un principal.

   Es posible que de vez en cuando quiera dar acceso a una una cuenta
   de usuario local a alguien que no tiene un principal Kerberos. Por
   ejemplo, tillman@EJEMPLO.ORG puede necesitar acceso a la cuenta de
   usuario local webdevelopers. Otros principales tal vez necesiten
   acceso a esas cuentas locales.

   Los ficheros .k5login y .k5users, ubicados en el directorio home
   del usuario, pueden usarse de un modo similar a una combinacion
   potente de .hosts y .rhosts. Por ejemplo, si pusiera un fichero
   .k5login con el siguiente contenido

 tillman@example.org
 jdoe@example.org

   en el directorio home del usuario local webdevelopers ambos
   principales listados tendrian acceso a esa cuenta sin requerir una
   contrasena compartida.

   Le recomendamos encarecidamente la lectura de las paginas de
   manual de estas ordenes. Recuerde que la pagina de manual de ksu
   abarca .k5users.

     --------------------------------------------------------------

  14.8.6. Kerberos Sugerencias, trucos y solucion de problemas

     * Tanto si utiliza el port de Heimdal o el Kerberos del MIT
       asegurese de que su variable de entorno PATH liste las
       versiones de Kerberos de las aplicaciones cliente antes que
       las versiones del sistema.

     * ?Todas las computadoras de su dominio Kerberos tienen la hora
       sincronizada? Si no, la autentificacion puede fallar. Seccion
       29.12 describe como sincronizar los relojes utilizando NTP.

     * MIT y Heimdal conviven bien, con la excepcion de kadmin,
       protocolo no esta estandarizado.

     * Si cambia su nombre de equipo debe cambiar tambien el
       "apellido" de su principal y actualizar su keytab. Esto
       tambien se aplica a entradas especiales en keytab como el
       principal www/ que usa el www/mod_auth_kerb de Apache.

     * Todos los equipos en su dominio Kerberos deben poder
       resolverse (tanto en la forma normal normal como en la
       inversa) en el DNS (o en /etc/hosts como minimo). Los CNAME
       funcionaran, pero los registros A y PTR deben ser correctos y
       estar en su sitio. El mensaje de error que recibira de no
       hacerlo asi no es muy intuitivo: "Kerberos5 refuses
       authentication because Read req failed: Key table entry not
       found".

     * Algunos sistemas operativos que puede usar como clientes de su
       KDC no activan los permisos para ksu como setuid root. Esto
       hara que ksu no funcione, lo cual es muy seguro pero un tanto
       molesto. Tenga en cuenta que no se debe a un error de KDC.

     * Si desea permitir que un principal tenga un ticket con una
       validez mas larga que el valor por defecto de diez horas en
       Kerberos del MIT debe usar modify_principal en kadmin para
       cambiar "maxlife" tanto del principal en cuestion como del
       krbtgt del principal. Hecho esto, el principal puede utilizar
       la opcion -l con kinit para solicitar un boleto con mas tiempo
       de vida.

     * Nota: Si ejecuta un "sniffer" de paquetes en su KDC para
         ayudar con la resolucion de problemas y ejecuta kinit desde
         una estacion de trabajo puede encontrarse con que su TGT se
         envia inmediatamente despues de ejecutar kinit: incluso
         antes de que escriba su contrasena La explicacion es que el
         servidor Kerberos transmite tranquilamente un TGT (Ticket
         Granting Ticket) a cualquier peticion no autorizada; de
         todas maneras, cada TGT esta cifrado en una llave derivada
         de la contrasena del usuario. Por tanto, cuando un usuario
         teclea su contrasena no la esta enviando al KDC, se esta
         usando para descifrar el TGT que kinit ya obtuvo. Si el
         proceso de descifrado termina en un ticket valido con una
         marca de tiempo valida, el usuario tiene credenciales
         Kerberos validas. Estas credenciales incluyen una llave de
         sesion para establecer comunicaciones seguras con el
         servidor Kerberos en el futuro, asi como el TGT en si, que
         se cifra con la llave del propio servidor Kerberos. Esta
         segunda capa de cifrado es invisible para el usuario, pero
         es lo que permite al servidor Kerberos verificar la
         autenticidad de cada TGT.

     * Si desea utilizar tickets con un tiempo largo de vida (una
       semana, por ejemplo) y esta utilizando OpenSSH para conectarse
       a la maquina donde se almacena su boleto asgurese de que
       Kerberos TicketCleanup este configurado a no en su sshd_config
       o de lo contrario sus tickets seran eliminados cuando termine
       la sesion.

     * Recuerde que los principales de equipos tambien pueden tener
       tener un tiempo de vida mas largo. Si su principal de usuario
       tiene un tiempo de vida de una semana pero el equipo al que se
       conecta tiene un tiempo de vida de nueve horas, tendra un
       principal de equipo expirado en su cache, y la cache de ticket
       no funcionara como esperaba.

     * Cuando este configurando un fichero krb5.dict pensando
       especificamente en prevenir el uso de contrasenas defectuosas
       (la pagina de manual de de kadmind trata el tema brevemente),
       recuerde que solamente se aplica a principales que tienen una
       politica de contrasenas asignada. El formato de los ficheros
       krb5.dict es simple: una cadena de texto por linea. Puede
       serle util crear un enlace simbolico a /usr/share/dict/words.

     --------------------------------------------------------------

  14.8.7. Diferencias con el port del MIT

   Las diferencias mas grandes entre las instalaciones MIT y Heimdal
   estan relacionadas con kadmin, que tiene un conjunto diferente
   (pero equivalente) de ordenes y utiliza un protocolo diferente.
   Esto tiene implicaciones muy grandes si su KDC es MIT, ya que no
   podra utilizar el programa kadmin de Heimdal para administrar
   remotamente su KDC (o viceversa).

   Las aplicaciones cliente pueden tambien disponer de diferentes
   opciones de linea de ordenes para lograr lo mismo. Le recomendamos
   seguir las instrucciones de la pagina web de Kerberos del MIT
   (http://web.mit.edu/Kerberos/www/). Sea cuidadoso con los parches:
   el port del MIT se instala por defecto en /usr/local/, y las
   aplicaciones "normales" del sistema pueden ser ejecutadas en lugar
   de las del MIT si su variable de entorno PATH lista antes los
   directorios del sistema.

     Nota: Si usa el port del MIT security/krb5 proporcionado por
     FreeBSD asegurese de leer el fichero
     /usr/local/share/doc/krb5/README.FreeBSD instalado por el port
     si quiere entender por que los login via telnetd y klogind se
     comportan de un modo un tanto extrano. Mas importante aun,
     corregir la conducta de "permisos incorrectos en el fichero
     cache" requiere que el binario login.krb5 se use para la
     validacion para que pueda cambiar correctamente los permisos de
     propiedad de credenciales reenviadas.

     --------------------------------------------------------------

  14.8.8. Mitigacion de limitaciones encontradas en Kerberos

     --------------------------------------------------------------

    14.8.8.1. Kerberos es un enfoque "todo o nada"

   Cada servicio habilitado en la red debe modificarse para funcionar
   con Kerberos (o debe ser asegurado contra ataques de red) o de lo
   contrario las credenciales de usuario pueden robarse y
   reutilizarse. Un ejemplo de esto podria ser que Kerberos habilite
   todos los shells remotos ( via rsh y telnet, por ejemplo) pero que
   no cubra el servidor de correo POP3, que envia contrasenas en
   texto plano.

     --------------------------------------------------------------

    14.8.8.2. Kerberos esta pensado para estaciones de trabajo
    monousuario

   En un entorno multiusuario Kerberos es menos seguro. Esto se debe
   a que almacena los tickets en el directorio /tmp, que puede ser
   leido por todos los usuarios. Si un usuario esta compartiendo una
   computadora con varias personas (esto es, si utiliza un sistema
   multiusuario) es posible que los tickets sean robados (copiados)
   por otro usuario.

   Esto puede solventarse con la opcion de linea de ordenes -c
   nombre-de-fichero o (mejor aun) la variable de entorno KRB5CCNAME,
   pero raramente se hace. Si almacena los tickets en el directorio
   home de los usuarios y utiliza sin mucha complicacion los permisos
   de fichero puede mitigar este problema.

     --------------------------------------------------------------

    14.8.8.3. El KDC es el punto critico de fallo

   Por motivos de diseno el KDC es tan seguro como la base de datos
   principal de contrasenas que contiene. El KDC no debe ejecutar
   ningun otro servicio ejecutandose en el y debe ser fisicamente
   seguro. El peligro es grande debido a que Kerberos almacena todas
   las contrasenas cifradas con la misma llave (la llave "maestra",
   que a su vez se guarda como un fichero en el KDC).

   De todos modos una llave maestra comprometida no es algo tan
   terrible como parece a primera vista. La llave maestra solo se usa
   para cifrar la base de datos Kerberos y como semilla para el
   generador de numeros aleatorios. Mientras sea seguro el acceso a
   su KDC un atancante no puede hacer demasiado con la llave maestra.

   Ademas, si el KDC no esta disponible (quizas debido a un ataque de
   denegacion de servicio o problemas de red) no se podran utilizar
   los servicios de red ya que no se puede efectuar la validacion, lo
   que hace que esta sea una buena forma de lanzar un ataque de
   denegacion de servicio. Este problema puede aliviarse con
   multiples KDCs (un maestro y uno o mas esclavos) y con una
   implementacion cautelosa de secundarios o autentificacion de
   respaldo (para esto PAM es excelente).

     --------------------------------------------------------------

    14.8.8.4. Limitaciones de Kerberos

   Kerberos le permite a usuarios, equipos y servicios validarse
   entre si, pero no dispone de ningun mecanismo para autentificar el
   KDC a los usuarios, equipos o servicios. Esto significa que una
   version (por ejemplo) "troyanizada" kinit puede grabar todos los
   usuarios y sus contrasenas. Puede usar security/tripwire o alguna
   otra herramienta de revision de integridad de sistemas de ficheros
   para intentar evitar problemas como este.

     --------------------------------------------------------------

  14.8.9. Recursos y mas informacion

     * Las preguntas frecuentes (FAQ) de Kerberos

     * Designing an Authentication System: a Dialog in Four Scenes

     * RFC 1510, The Kerberos Network Authentication Service (V5)

     * Pagina web de Kerberos del MIT

     * Pagina web de Kerberos Heimdal

     --------------------------------------------------------------

14.9. OpenSSL

   Escrito por: Tom Rhodes.

   El conjunto de herramientas OpenSSL es una caracteristica de
   FreeBSD que muchos usuarios pasan por alto. OpenSSL ofrece una
   capa de cifrada de transporte sobre la capa normal de
   comunicacion, permitiendo la combinacion con con muchas
   aplicaciones y servicios de red.

   Algunos usos de OpenSSL son la validacion cifrada de clientes de
   correo, las transacciones basadas en web como pagos con tarjetas
   de credito, etc. Muchos ports, como www/apache13-ssl y
   mail/sylpheed-claws ofrecen soporte de compilacion para OpenSSL.

     Nota: En la mayoria de los casos la coleccion de ports tratara
     de compilar el port security/openssl a menos que la variable de
     make WITH_OPENSSL_BASE sea puesta explicitamente a "yes".

   La version de OpenSSL incluida en FreeBSD soporta los protocolos
   de seguridad de red Secure Sockets Layer v2/v3 (SSLv2/SSLv3) y
   Transport Layer Security v1 (TLSv1) y puede utilizarse como
   biblioteca criptografica general.

     Nota: OpenSSL soporta el algoritmo IDEA pero estaa deshabilitado
     por defecto debido a patentes en vigor en los Estados Unidos. Si
     quiere usarlo debe revisar la licencia, y si las restricciones
     le parecen aceptables active la variable MAKE_IDEA en make.conf.

   Uno de los usos mas comunes de OpenSSL es ofrecer certificados
   para usar con aplicaciones de software. Estos certificados
   aseguran que las credenciales de la compania o individuo son
   validos y no son fraudulentos. Si el certificado en cuestion no ha
   sido verificado por uno de las diversas "autoridades
   certificadoras" o CA, suele generarse una advertencia al respecto.
   Una autoridad de certificados es una compania, como VeriSign, que
   firma certificados para validar credenciales de individuos o
   companias. Este proceso tiene un costo asociado y no es un
   requisito imprescindible para usar certificados, aunque puede
   darle un poco de tranquilidad a los usuarios mas paranoicos.

     --------------------------------------------------------------

  14.9.1. Generacion de certificados

   Para generar un certificado ejecute lo siguiente:

 # openssl req -new -nodes -out req.pem -keyout cert.pem
 Generating a 1024 bit RSA private key
 ................++++++
 .......................................++++++
 writing new private key to 'cert.pem'
 -----
 You are about to be asked to enter information that will be incorporated
 into your certificate request.
 What you are about to enter is what is called a Distinguished Name or a DN.
 There are quite a few fields but you can leave some blank
 For some fields there will be a default value,
 If you enter '.', the field will be left blank.
 -----
 Country Name (2 letter code) [AU]:US
 State or Province Name (full name) [Some-State]:PA
 Locality Name (eg, city) []:Pittsburgh
 Organization Name (eg, company) [Internet Widgits Pty Ltd]:Mi compania
 Organizational Unit Name (eg, section) []:Administrador de sistemas
 Common Name (eg, YOUR name) []:localhost.ejemplo.org
 Email Address []:trhodes@FreeBSD.org

 Please enter the following 'extra' attributes
 to be sent with your certificate request
 A challenge password []:UNA CONTRASENA
 An optional company name []:Otro nombre

   Tenga en cuenta que la respuesta directamente despues de "prompt"
   "Common Name" muestra un nombre de dominio. Este "prompt" requiere
   que se introduzca un nombre de servidor para usarlo en la
   verificacion; si escribe cualquier otra cosa producira un
   certificado invalido. Otras opciones, por ejemplo el tiempo de
   expiracion, alternan algoritmos de cifrado, etc. Puede ver una
   lista completa en la pagina de manual de openssl(1).

   Deberia tener dos ficheros en el directorio donde ha ejecutado la
   orden anterior. La peticion de certificado, req.pem, es lo que
   debe enviar a una autoridad certificadora para que valide las
   credenciales que introdujo; firmara la peticion y le devolvera el
   certificado. El segundo fichero es cert.pem y es la llave privada
   para el certificado, que debe proteger a toda costa; si cae en
   malas manos podri usarse para suplantarle a usted o a sus
   servidores.

   Si no necesita la firma de una CA puede crear y firmar usted mismo
   su certificado. Primero, genere la llave RSA:

 # openssl dsaparam -rand -genkey -out myRSA.key 1024

   A continuacion genere la llave CA:

 # openssl gendsa -des3 -out myca.key myRSA.key

   Utilice esta llave para crear el certificado:

 # openssl req -new -x509 -days 365 -key myca.key -out new.crt

   Deberin aparecer dos nuevos ficheros en su directorio: un fichero
   de firma de autoridad de certificados (myca.key) y el certificado
   en si, new.crt. Deben ubicarse en un directorio, que se recomienda
   que sea /etc, que es legible solo para root. Para terminar, es
   recomendable asignar permisos 0700 para el fichero con chmod.

     --------------------------------------------------------------

  14.9.2. Uso de certificados; un ejemplo

   ?Que pueden hacer estos ficheros? Cifrar conexiones al MTA
   Sendmail es un buen sitio para usarlos. De este modo eliminara el
   uso de validacion mediante texto en claro para los usuarios que
   envian correo a traves del MTA local.

     Nota: No es el mejor uso en el mundo, ya que algunos MUAs
     enviaran al usuario un mensaje de error si no tiene instalados
     localmente los certificados. Consulte la documentacion para mas
     datos sobre la instalacion de certificados.

   Debe anadir las siguientes lineas en su fichero local .mc:

 dnl SSL Options
 define(`confCACERT_PATH',`/etc/certs')dnl
 define(`confCACERT',`/etc/certs/new.crt')dnl
 define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
 define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
 define(`confTLS_SRV_OPTIONS', `V')dnl

   /etc/certs/ es el directorio destinado a almacenamiento de los
   ficheros de certificado y llave en local. El ultimo requisito es
   una reconstruccion del fichero .cf local. Solo tiene que teclear
   make install en el directorio /etc/mail. A continuacion ejecute un
   make restart, que deberia reiniciar el daemon Sendmail.

   Si todo fue bien no habra mensajes de error en el fichero
   /var/log/maillog y Sendmail aparecera en la lista de procesos.

   Puede probarlo todo de una forma muy sencilla; conectese al
   servidor de correo mediante telnet(1):

 # telnet ejemplo.com 25
 Trying 192.0.34.166...
 Connected to ejemplo.com.
 Escape character is '^]'.
 220 ejemplo.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
 ehlo ejemplo.com
 250-ejemplo.com Hello ejemplo.com [192.0.34.166], pleased to meet you
 250-ENHANCEDSTATUSCODES
 250-PIPELINING
 250-8BITMIME
 250-SIZE
 250-DSN
 250-ETRN
 250-AUTH LOGIN PLAIN
 250-STARTTLS
 250-DELIVERBY
 250 HELP
 quit
 221 2.0.0 ejemplo.com closing connection
 Connection closed by foreign host.

   Si la linea "STARTTLS" aparece en la salida, todo esta funcionando
   correctamente.

     --------------------------------------------------------------

14.10. VPN sobre IPsec

   Escrito por Nik Clayton.

   Creacion de una VPN entre dos redes, a traves de Internet,
   mediante puertas de enlace ("gateways") FreeBSD.

     --------------------------------------------------------------

  14.10.1. Que es IPsec

   Escrito por Hiten M. Pandya.

   Esta seccion le guiara a traves del proceso de configuracion de
   IPsec, y de su uso en un entorno consistente en maquinas FreeBSD y
   Microsoft Windows 2000/XP, para hacer que se comuniquen de manera
   segura. Para configurar IPsec es necesario que este familiarizado
   con los conceptos de construccion de un kernel personalizado
   (consulte el Capitulo 8).

   IPsec es un protocolo que esta sobre la capa del protocolo de
   Internet (IP). Le permite a dos o mas equipos comunicarse de forma
   segura (de ahi el nombre). La "pila de red" IPsec de FreeBSD se
   basa en la implementacion KAME, que incluye soporte para las dos
   familias de protocolos, IPv4 e IPv6.

     Nota: FreeBSD 5.X contiene una pila IPsec "acelerada por
     hardware", conocida como "Fast IPsec", que fue obtenida de
     OpenBSD. Emplea hardware criptografico (cuando es posible) a
     traves del subsistema crypto(4) para optimizar el rendimiento de
     IPsec. Este subsistema es nuevo, y no soporta todas las opciones
     disponibles en la version KAME de IPsec. Para poder habilitar
     IPsec acelerado por hardware debe anadir las siguientes opciones
     al fichero de configuracion de su kernel:

 options   FAST_IPSEC  # new IPsec (cannot define w/ IPSEC)
        

     Tenga en cuenta que no es posible utilizar el subsistema "Fast
     IPsec" y la implementacion KAME de IPsec en la misma
     computadora. Consulte la pagina de manual fast_ipsec(4) para mas
     informacion.

   IPsec consta de dos sub-protocolos:

     * Encapsulated Security Payload (ESP), que protege los datos del
       paquete IP de interferencias de terceros, cifrando el
       contenido utilizando algoritmos de criptografia simetrica
       (como Blowfish, 3DES).

     * Authentication Header (AH), que protege la cabecera del
       paquete IP de interferencias de terceros asi como contra la
       falsificacion ("spoofing"), calculando una suma de
       comprobacion criptografica y aplicando a los campos de
       cabecera IP una funcion hash segura. Detras de todo esto va
       una cabecera adicional que contiene el hash para permitir la
       validacion de la informacion que contiene el paquete.

   ESP y AH pueden utilizarse conjunta o separadamente, dependiendo
   del entorno.

   IPsec puede utilizarse para cifrar directamente el trafico entre
   dos equipos (conocido como modo de transporte) o para construir
   "tuneles virtuales" entre dos subredes, que pueden usarse para
   comunicacion segura entre dos redes corporativas (conocido como
   modo de tunel). Este ultimo es muy conocido como una red privada
   virtual (Virtual Private Network, o VPN). ipsec(4) contiene
   informacion detallada sobre el subsistema IPsec de FreeBSD.

   Si quiere andir soporte IPsec a su kernel debe incluir las
   siguientes opciones al fichero de configuracion de su kernel:

 options   IPSEC        #IP security
 options   IPSEC_ESP    #IP security (crypto; define w/ IPSEC)
      

   Si quiere soporte para la depuracion de errores no olvide la
   siguiente opcion:

 options   IPSEC_DEBUG  #debug for IP security
      

     --------------------------------------------------------------

  14.10.2. El Problema

   No existe un estandar para lo que constituye una VPN. Las VPN
   pueden implementarse utilizando numerosas tecnologias diferentes,
   cada una de las cuales tiene sus pros y sus contras. Esta seccion
   presenta un escenario, y las estrategias usadas para implementar
   una VPN para este escenario.

     --------------------------------------------------------------

  14.10.3. El escenario: dos redes, conectadas por Internet, que
  queremos que se comporten como una sola

   Este es el punto de partida:

     * Usted tiene al menos dos sitios

     * Ambos sitios utilizan IP internamente

     * Ambos sitios estan conectados a Internet, a traves de una
       puerta de enlace FreeBSD.

     * La puerta de enlace de cada red tiene al menos una direccion
       IP publica.

     * Las direcciones internas de las dos redes pueden ser
       direcciones IP publicas o privadas, no importa. Puede ejecutar
       NAT en la maquina que hace de puerta de enlace si es
       necesario.

     * Las direcciones IP internas de las dos redes no colisionan.
       Aunque espero que sea teoricamente posible utilizar una
       combinacion de tecnologia VPN y NAT para hacer funcionar todo
       esto sospecho que configurarlo seria una pesadilla.

   Si lo que intenta es conectar dos redes y ambas usan el mismo
   rango de direcciones IP privadas (por ejemplo las dos usan
   192.168.1.x)deberia renumerar una de las dos redes.

   La topologia de red se pareceria a esto:

 Network #1            [ Internal Hosts ]    Private Net, 192.168.1.2-254
                       [   Win9x/NT/2K  ]
                       [      UNIX      ]
                                |
                                |
                         .---[fxp1]---.      Private IP, 192.168.1.1
                         |   FreeBSD  |
                         `---[fxp0]---'      Public IP, A.B.C.D
                                |
                                |
                       -=-=- Internet -=-=-
                                |
                                |
                         .---[fxp0]---.      Public IP, W.X.Y.Z
                         |   FreeBSD  |
                         `---[fxp1]---'      Private IP, 192.168.2.1
                                |
                                |
 Network #2            [ Internal Hosts ]
                       [   Win9x/NT/2K  ]    Private Net, 192.168.2.2-254
                       [      UNIX      ]

   Observe las dos direcciones IP publicas. Usare letras para
   referirme a ellas en el resto de este articulo. El cualquier lugar
   que vea esas letras en este articulo reemplacelas con su propia
   direccion IP publica. Observe tambien que internamente las dos
   maquinas que hacen de puerta de enlace tienen la direccion IP .1,
   y que las dos redes tienen direcciones IP privadas diferentes
   (192.168.1.x y 192.168.2.x respectivamente). Todas las maquinas de
   las redes privadas estan configuradas para utilizar la maquina .1
   como su puerta de enlace por defecto.

   La intencion es que, desde el punto de vista de la red, cada red
   debe ver las maquinas en la otra red como si estuvieran
   directamente conectadas al mismo router (aunque aunque sea un
   router ligeramente lento con una tendencia ocasional a tirar
   paquetes).

   Esto significa que (por ejemplo), la maquina 192.168.1.20 debe ser
   capaz de ejecutar

 ping 192.168.2.34

   y recibir de forma transparente una respuesta. Las maquinas
   Windows deben ser capaces de ver las maquinas de la otra red,
   acceder a sus ficheros compartidos, etc, exactamente igual que
   cuando acceden a las maquinas de la red local.

   Y todo debe hacerse de forma segura. Esto significa que el trafico
   entre las dos redes tiene que ser cifrado.

   La creacion de una VPN entre estas dos redes es un proceso que
   requiere varios pasos. Las etapas son estas:

    1. Crear un enlace de red "virtual" entre las dos redes, a traves
       de Internet. Probarlo usando herramientas como ping(8) para
       asegurarse de que funcione.

    2. Aplicar politicas de seguridad para asegurarse de que el
       trafico entre las dos redes sea cifrado y descifrado de forma
       transparente. Comprobarlo mediante herramientas como
       tcpdump(1) para asegurarse de que el trafico este siendo
       efectivamente cifrado.

    3. Configurar software adicional en las puertas de enlace FreeBSD
       para permitir a las maquinas Windows verse entre ellas a
       traves de la VPN.

     --------------------------------------------------------------

    14.10.3.1. Paso 1: Creacion y prueba de un enlace de red "virtual"

   Suponga que esta en la puerta de enlace de la red red #1 (con
   direccion IP publica A.B.C.D, direccion IP privada 192.168.1.1), y
   ejecuta ping 192.168.2.1, que es la direccion privada de la
   maquina con direccion IP W.X.Y.Z. ?Que hace falta para esto?

    1. La puerta de enlace necesita saber como alcanzar a
       192.168.2.1. En otras palabras, necesita tener una ruta hasta
       192.168.2.1.

    2. Las direcciones IP privadas, como las que estan en el rango
       192.168.x no deberian aparecer en Internet. Por eso, cada
       paquete que mande a 192.168.2.1 necesitara encerrarse dentro
       de otro paquete. Este paquete debe tener todas las
       caracteristicas de haber sido enviado desde A.B.C.D, y tendra
       que ser enviado a W.X.Y.Z. Este proceso recibe el nombre de
       encapsulado.

    3. Una vez que este paquete llega a W.X.Y.Z necesitara ser
       "desencapsulado", y entregado a 192.168.2.1.

   Puede verlo como si necesitara un "tunel" entre las dos redes. Las
   dos "bocas del tunel" son las direcciones IP A.B.C.D y W.X.Y.Z, y
   debe hacer que el tunel sepa cuales seran las direcciones IP
   privadas que tendran permitido el paso a traves de el. El tunel se
   usa para transferir trafico con direcciones IP privadas a traves
   de la Internet publica.

   Este tunel se crea mediante la interfaz generica, o dispositivo
   gif en FreeBSD. Como puede imaginarse la interfaz gif de cada
   puerta de enlace debe configurarse con cuatro direcciones IP: dos
   para las direcciones IP publicas, y dos para las direcciones IP
   privadas.

   El soporte para el dispositivo gif debe compilarse en el kernel de
   FreeBSD en ambas maquinas anadiendo la linea

 device gif

   a los ficheros de configuracion del kernel de ambas maquinas,
   compilarlo, instalarlo y reiniciar.

   La configuracion del tunel es un proceso que consta de dos partes.
   Primero se le debe decir al tunel cuales son las direcciones IP
   exteriores (o publicas) mediante gifconfig(8). Despues configure
   las direcciones IP con ifconfig(8).

     Nota: En FreeBSD 5.X las funciones de gifconfig(8) se han
     incluido en ifconfig(8).

   En la puerta de enlace de la red #1 debe ejecutar las siguientes
   dos ordenes para configurar el tunel.

 gifconfig gif0 A.B.C.D W.X.Y.Z
 ifconfig gif0 inet 192.168.1.1 192.168.2.1 netmask 0xffffffff
      

   En la otra puerta de enlace ejecute las mismas ordenes, pero con
   el orden las direcciones IP invertido.

 gifconfig gif0 W.X.Y.Z A.B.C.D
 ifconfig gif0 inet 192.168.2.1 192.168.1.1 netmask 0xffffffff
      

   Ahora ejecute:

 gifconfig gif0

   y podra ver la configuracion. Por ejemplo, en la puerta de enlace
   de la red #1 veria algo parecido a esto:

 # gifconfig gif0
 gif0: flags=8011<UP,POINTTOPOINT,MULTICAST> mtu 1280
 inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff
 physical address inet A.B.C.D --> W.X.Y.Z
      

   Como puede ver se ha creado un tunel entre las direcciones fisicas
   A.B.C.D y W.X.Y.Z, y el trafico que puede pasar a traves del tunel
   es entre 192.168.1.1 y 192.168.2.1.

   Esto tambien habra agregado una entrada en la tabla de rutas de
   ambas maquinas, que puede examinar con netstat -rn. Esta salida es
   de la puerta de enlace de la red #1.

 # netstat -rn
 Routing tables
 
 Internet:
 Destination      Gateway       Flags    Refs    Use    Netif  Expire
 ...
 192.168.2.1      192.168.1.1   UH        0        0    gif0
 ...
      

   Como el valor de "Flags" lo indica, esta es una ruta de equipo, lo
   que significa que cada puerta de enlace sabe como alcanzar la otra
   puerta de enlace, pero no saben como llegar al resto de sus
   respectivas redes. Ese problema se solucionara en breve.

   Es posible que disponga de un cortafuegos en ambas maquinas, por
   lo que tendra que buscar la forma de que el trafico de la VPN
   pueda entrar y salir limpiamente. Puede permitir todo el trafico
   de ambas redes, o puede que quiera incluir reglas en el
   cortafuegos para que protejan ambos extremos de la VPN uno del
   otro.

   Las pruebas se simplifican enormemente si configura el cortafuegos
   para permitir todo el trafico a traves de la VPN. Siempre puede
   ajustar las cosas despues. Si utiliza ipfw(8) en las puertas de
   enlace una orden similar a

 ipfw add 1 allow ip from any to any via gif0

   permitira todo el trafico entre los dos extremos de la VPN, sin
   afectar al resto de reglas del cortafuegos. Obviamente tendra que
   ejecutar esta orden en ambas puertas de enlace.

   Esto es suficiente para permitir a cada puerta de enlace hacer un
   ping entre ellas. En 192.168.1.1 deberi poder ejecutar

 ping 192.168.2.1

   y obtener una respuesta; es obvio que deberia poder hacer los
   mismo en la otra puerte de enlace.

   Aun no podra acceder a las maquinas internas de las redes. El
   problema esta en el encaminamiento: aunque las puertas de enlace
   saben como alcanzarse mutuamente no saben como llegar a la red que
   hay detras de la otra.

   Para resolver este problema debe anadir una ruta estatica en cada
   puerta de enlace. La orden en la primera puerta de enlace podria
   ser:

 route add 192.168.2.0 192.168.2.1 netmask 0xffffff00
      

   Esto significa "Para alcanzar los equipos en la red 192.168.2.0,
   envia los paquetes al equipo 192.168.2.1". Necesitara ejecutar una
   orden similar en la otra puerta de enlace, pero obviamente con las
   direcciones 192.168.1.x.

   El trafico IP de equipos en una red no sera capaz de alcanzar
   equipos en la otra red.

   Ya tiene dos tercios de una VPN, puesto que ya es "virtual" y es
   una "red". Todavia no es privada. Puede comprobarlo con ping(8) y
   tcpdump(1). Abra una sesion en la puerta de enlace y ejecute

 tcpdump dst host 192.168.2.1

   En otra sesion en el mismo equipo ejecute

 ping 192.168.2.1

   Vera algo muy parecido a esto:

 16:10:24.018080 192.168.1.1 > 192.168.2.1: icmp: echo request
 16:10:24.018109 192.168.1.1 > 192.168.2.1: icmp: echo reply
 16:10:25.018814 192.168.1.1 > 192.168.2.1: icmp: echo request
 16:10:25.018847 192.168.1.1 > 192.168.2.1: icmp: echo reply
 16:10:26.028896 192.168.1.1 > 192.168.2.1: icmp: echo request
 16:10:26.029112 192.168.1.1 > 192.168.2.1: icmp: echo reply
      

   Como puede ver los mensajes ICMP van y vienen sin cifrar. Si usa
   el parametro -s en tcpdump(1) para tomar mas bytes de datos de
   estos paquetes vera mas informacion.

   Obviamente esto es inaceptable. La siguiente seccion explicara
   como asegurar el enlace entre las dos redes para que todo el
   trafico se cifre automaticamente.

   Sumario:

     * Configure ambos kernel con "pseudo-device gif".

     * Edite /etc/rc.conf en la puerta de enlace #1 y anada las
       siguientes lineas (reemplazando las direcciones IP segun sea
       necesario).

 gifconfig_gif0="A.B.C.D W.X.Y.Z"
 ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff"
 static_routes="vpn"
 route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"
          

     * Edite la configuracion de su cortafuegos (/etc/rc.firewall, o
       lo que corresponda) en ambos equipos y anada

 ipfw add 1 allow ip from any to any via gif0

     * Haga los cambios oportunos en el /etc/rc.conf de la puerta de
       enlace #2, invirtiendo el orden de las direcciones IP.

     --------------------------------------------------------------

    14.10.3.2. Paso 2: Asegurar el enlace

   Para asegurar el enlace usaremos IPsec. IPsec ofrece un mecanismo
   para que dos equipos coincidan en una llave de cifrado, y usar
   esta llave para cifrar los datos entre los dos equipos.

   Existen dos areas de configuracion a tener en cuenta:

    1. Debe existir un mecanismo para que los dos equipos se pongan
       de acuerdo en el mecanismo de cifrado que van a utilizar. Una
       vez que los dos equipos se han puesto de acuerdo dice que
       existe una "asociacion de seguridad" entre ellos.

    2. Debe existir un mecanismo para especificar que trafico debe
       ser cifrado. Obviamente, usted no querra cifrar todo su
       trafico saliente: solo querra cifrar el trafico que es parte
       de la VPN. Las reglas con las que determinara que trafico sera
       cifrado se llaman "politicas de seguridad".

   Tanto las asociaciones de seguridad como las politicas de
   seguridad son responsabilidad del kernel, pero pueden ser
   modificadas desde el espacio de usuario. Antes de poder hacerlo,
   tendra que configurar el kernel para que incluya IPsec y el
   protocolo ESP (Encapsulated Security Payload). Incluya en el
   fichero de configuracion de su kernel lo siguiente:

 options IPSEC
 options IPSEC_ESP
       

   Recompile y resintale su kernel y reinicie. Como se dijo
   anteriormente, tendra que hacer lo mismo en el kernel de las dos
   puertas de enlace.

   Tiene dos opciones cuando se trata de configurar asociaciones de
   seguridad. Puede configurarlas a mano en los dos equipos, lo que
   significa elegir el algoritmo de cifrado, las llaves de cifrado,
   etc, o puede utilizar alguno de los daemons que implementan el
   protocolo de intercambio de llaves de Internet (IKE, Internet Key
   Exchange).

   Le recomiendo la segunda opcion. Aparte de otras consideraciones
   es mas facil de configurar.

   La edicion y despliegue se efectua con setkey(8). Todo esto se
   entiende mejor con una analogia. setkey es a las tablas de
   politicas de seguridad del kernel lo que route(8) es a las tablas
   de rutas del kernel. Tambien puede usar setkey ver las
   asociaciones de seguridad en vigor, siguiendo con la analogia,
   igual que puede usar netstat -r.

   Existen numerosos daemons que pueden encargarse de la gestion de
   asociaciones de seguridad en FreeBSD. En este texto se muestra
   como usar uno de ellos, racoon (que puede instalar desde
   security/racoon en la coleccion de ports de FreeBSD.

   El software security/racoon debe ejecutarse en las dos puertas de
   enlace. En cada equipo debe configurar la direccion IP del otro
   extremo de la VPN y una llave secreta (que usted puede y debe
   elegir, y debe ser la misma en ambas puertas de enlace).

   Los dos daemons entran en contacto uno con otro, y confirman que
   son quienes dicen ser (utilizando la llave secreta que usted
   configuro). Los daemons generan una nueva llave secreta, y la
   utilizan para cifrar el trafico que discurre a traves de la VPN.
   Periodicamente cambian esta llave, para que incluso si un atacante
   comprometiera una de las llaves (lo cual es teoricamente cercano a
   imposible) no le serviriia de mucho: para cuando el atacante haya
   "crackeado" la llave los daemons ya habran escogido una nueva.

   El fichero de configuracion de racoon esta en
   ${PREFIX}/etc/racoon. No deberia tener que hacer demasiados
   cambios a ese fichero. El otro componente de la configuracion de
   racoon (que si tendra que modificar) es la "llave pre-compartida".

   La configuracion por defecto de racoon espera encontrarla en
   ${PREFIX}/etc/racoon/psk.txt. Es importante saber que la llave
   precompartida no es la llave que se utilizara para cifrar el
   trafico a traves del enlace VPN; solamente es una muestra que
   permite a los daemons que administran las llaves confiar el uno en
   el otro.

   psk.txt contiene una linea por cada sitio remoto con el que este
   tratando. En nuestro ejemplo, donde existen dos sitios, cada
   fichero psk.txt contendra una linea (porque cada extremo de la VPN
   solo esta tratando con un sitio en el otro extremo).

   En la puerta de enlace #1 esta linea deberia parecerse a esta:

 W.X.Y.Z            secreto

   Esto es, la direccion IP publica del extremo remoto, un espacio en
   blanco, y una cadena de texto que es el secreto en si. en el
   extremo remoto, espacio en blanco, y un texto de cadena que
   proporcina el secreto. Obviamente, no debe utilizar "secret" como
   su llave; aplique aqui las reglas y recomendaciones habituales
   para la eleccion de contrasenas.

   En la puerta de enlace #2 la linea se pareceria a esta

 A.B.C.D            secreto

   Esto es, la direccion IP publica del extremo remoto, y la misma
   llave secreta. psk.txt debe tener modo 0600 (es decir, modo de
   solo lectura/escritura para root) antes de que ejecute racoon.

   Debe ejecutar racoon en ambas puertas de enlace. Tambien tendra
   que anadir algunas reglas a su cortafuegos para permitir el
   trafico IKE, que se transporta sobre UDP al puerto ISAKMP
   (Internet Security Association Key Management Protocol). Esto debe
   estar al principio de las reglas de su cortafuegos.

 ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
 ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
       

   Una vez que ejecute racoon puede tratar de hacer un ping a una
   puerta de enlace desde la otra. La conexion todavia no esta
   cifrada porque aun no se han creado las asociaciones de seguridad
   entre los dos equipos: esto puede llevar un poco de tiempo; es
   posible que advierta un pequeno retraso antes de los ping empiecen
   responder.

   Una vez creadas las asociaciones de seguridad puede verlas
   utilizando setkey(8). Ejecute

 setkey -D

   en cualquiera de los equipos para comprobar la informacion de la
   asociacion de seguridad.

   Ya esta resuelta la mitad del problema. La otra mitad es
   configurar sus politicas de seguridad.

   Queremos crear una politica de seguridad sensata, asi que vamos a
   revisar lo que tenemos configurado hasta el momento. Esta revision
   abarca ambos extremos del enlace.

   Cada paquete IP que usted manda tiene una cabecera que contiene
   datos acerca del paquete. La cabecera incluye la direccion IP de
   destino y del origen. Como ya sabemos, las direcciones IP privadas
   como el rango 192.168.x.y no deberian aparezcan en Internet. Dado
   que es a traves de Internet por donde los queremos transmitir los
   debemos encapsular dentro de otro paquete. Este paquete debe
   contener tanto la direccion IP de destino y origen publicas
   sustituidas por las direcciones privadas.

   Asi que si su paquete saliente empezo pareciendose a este:

   .----------------------.
   | Src: 192.168.1.1     |
   | Dst: 192.168.2.1     |
   | <other header info>  |
   +----------------------+
   | <packet data>        |
   `----------------------'

   tras el encapsulado se parecera bastante a este:

   .--------------------------.
   | Src: A.B.C.D             |
   | Dst: W.X.Y.Z             |
   | <other header info>      |
   +--------------------------+
   | .----------------------. |
   | | Src: 192.168.1.1     | |
   | | Dst: 192.168.2.1     | |
   | | <other header info>  | |
   | +----------------------+ |
   | | <packet data>        | |
   | `----------------------' |
   `--------------------------'

   El dispositivo gif se encarga del encapsulado. Como puede ver el
   paquete tiene una direccion IP real en el exterior, y nuestro
   paquete original ha sido envuelto como dato dentro del paquete que
   enviaremos a traves de Internet.

   Obviamente, queremos que todo el trafico entre las VPN vaya
   cifrado. Pongamos esto ultimo en palabras para comprenderlo mejor:

   "Si un paquete sale desde A.B.C.D, y tiene como destino W.X.Y.Z,
   cifralo utilizando las asociaciones de seguridad necesarias."

   "Si un paquete llega desde W.X.Y.Z, y tiene como destino A.B.C.D,
   descifralo utilizando las asociaciones de seguridad necesarias."

   Este planteamiento se aproxima bastante, pero no es exactamente lo
   que queremos hacer. Si lo hiciera asi todo el trafico desde y
   hacia W.X.Y.Z, incluso el trafico que no forma parte de la VPN,
   sera cifrado; esto no es lo que queremos. La politica correcta es
   la siguiente:

   "Si un paquete sale desde A.B.C.D, y esta encapsulando a otro
   paquete, y tiene como destino W.X.Y.Z, cifralo utilizando las
   asociaciones de seguridad necesarias."

   "Si un paquete llega desde W.X.Y.Z, y esta encapsulando a otro
   paquete, y tiene como destino A.B.C.D, descifralo utilizando las
   asociaciones de seguridad necesarias."

   Un cambio sutil, pero necesario.

   Las politicas de seguridad tambien se imponen utilizando
   setkey(8). setkey(8) proporciona un lenguaje de configuracion para
   definir la politica. Puede introducir las instrucciones de
   configuracion a traves de la entrada estandar (stdin), o puede
   usar la opcion -f para especificar un fichero que contenga las
   instrucciones de configuracion.

   La configuracion en la puerta de enlace #1 (que tiene la direccion
   IP publica A.B.C.D) para forzar que todo el trafico saliente hacia
   W.X.Y.Z vaya cifrado es:

 spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;
       

   Ponga estas ordenes en un fichero (por ejemplo /etc/ipsec.conf) y
   ejecute

 # setkey -f /etc/ipsec.conf

   spdadd le dice a setkey(8) que queremos anadir una regla a la base
   de datos de politicas de seguridad. El resto de la linea
   especifica que paquetes se ajustaran a esta politica. A.B.C.D/32 y
   W.X.Y.Z/32 son las direcciones IP y mascaras de red que
   identifican la red o equipos a los que se aplicara esta politica.
   En nuestro caso queremos aplicarla al trafico entre estos dos
   equipos. -P out dice que esta politica se aplica a paquetes
   salientes, e ipsec hace que el paquete sea asegurado.

   La segunda linea especifica como sera cifrado este paquete. esp es
   el protocolo que se utilizara, mientras que tunnel indica que el
   paquete sera despues encapsulado en un paquete IPsec. El uso
   repetido de A.B.C.D y W.X.Y.Z se utiliza para seleccionar la
   asociacion de seguridad a usar, y por ultimo require exige que los
   paquetes deben cifrarse si concuerdan con esta regla.

   Esta regla solo concuerda con paquetes salientes. Necesitara una
   regla similar para los paquetes entrantes.

 spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;

   Observe el in en lugar del out en este caso, y la inversion
   necesaria de las direcciones IP.

   La otra puerta de enlace (que tiene la direccion IP publica
   W.X.Y.Z) necesitara reglas similares.

 spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;
 spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;

   Finalmente, necesita anadir reglas a su cortafuegos para permitir
   la circulacion de paquetes ESP e IPENCAP de ida y vuelta. Tendra
   que anadir reglas como estas a ambos equipos.

 ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
 ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
 ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
 ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
       

   Debido a que las reglas son simetricas puede utilizar las mismas
   reglas en ambas puertas de enlace.

   Los paquetes salientes tendran ahora este aspecto:

   .------------------------------.  --------------------------.
   | Src: A.B.C.D                 |                            |
   | Dst: W.X.Y.Z                 |                            |
   | <other header info>          |                            |  Encrypted
   +------------------------------+                            |  packet.
   | .--------------------------. |  -------------.            |  contents
   | | Src: A.B.C.D             | |               |            |  are
   | | Dst: W.X.Y.Z             | |               |            |  completely
   | | <other header info>      | |               |            |- secure
   | +--------------------------+ |               |  Encap'd   |  from third
   | | .----------------------. | |  -.           |  packet    |  party
   | | | Src: 192.168.1.1     | | |   |  Original |- with real |  snooping
   | | | Dst: 192.168.2.1     | | |   |  packet,  |  IP addr   |
   | | | <other header info>  | | |   |- private  |            |
   | | +----------------------+ | |   |  IP addr  |            |
   | | | <packet data>        | | |   |           |            |
   | | `----------------------' | |  -'           |            |
   | `--------------------------' |  -------------'            |
   `------------------------------'  --------------------------'
            

   Cuando los paquetes llegan al otro extremo de la VPN seran
   descifrados (utilizando las asociaciones de seguridad que han sido
   negociadas por racoon). Despues entraran al interfaz gif, que
   desenvuelve la segunda capa, hasta que nos quedamos con paquete ma
   interno, que puede entonces viajar a la red interna.

   Puede revisar la seguridad utilizando la misma prueba de ping(8)
   anterior. Primero, inicie una sesion en la puerta de enlace
   A.B.C.D, y ejecute:

 tcpdump dst host 192.168.2.1

   En otra sesion en la misma maquina ejecute

 ping 192.168.2.1

   Deberia ver algo similar a lo siguiente:

 XXX tcpdump output

   ahora, como puede ver, tcpdump(1) muestra los paquetes ESP. Si
   trata de examinarlos con la opcion -s vera basura (aparentemente),
   debido al cifrado.

   Felicidades. Acaba de configurar una VPN entre dos sitios remotos.

   Sumario

     * Configure ambos kernel con:

 options IPSEC
 options IPSEC_ESP
          

     * Instale security/racoon. Edite ${PREFIX}/etc/racoon/psk.txt en
       ambas puertas de enlace anadiendo una entrada para la
       direccion IP del equipo remoto y una llave secreta que ambos
       conozcan. Asegurese de que este fichero este en modo 0600.

     * Anada las siguientes lineas a /etc/rc.conf en ambos equipos:

 ipsec_enable="YES"
 ipsec_file="/etc/ipsec.conf"
          

     * Cree en ambos equipos un /etc/ipsec.conf que contenga las
       lineas spdadd necesarias. En la puerta de enlace #1 seria:

 spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec
   esp/tunnel/A.B.C.D-W.X.Y.Z/require;
 spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec
   esp/tunnel/W.X.Y.Z-A.B.C.D/require;

       En la puerta de enlace #2 seria:

 spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec
   esp/tunnel/W.X.Y.Z-A.B.C.D/require;
 spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec
   esp/tunnel/A.B.C.D-W.X.Y.Z/require;

     * Anada a su(s) cortafuegos las reglas necesarias para que
       permita(n) el paso de trafico IKE, ESP e IPENCAP en ambos
       equipos:

 ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
 ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
 ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
 ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
 ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
 ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.D
          

   Los dos pasos previos deben bastar para levantar la VPN. Las
   maquinas en cada red sean capaces de dirigirse una a otra
   utilizando direcciones IP, y todo el trafico a traves del enlace
   sera cifrado de forma automatica y segura.

     --------------------------------------------------------------

14.11. OpenSSH

   Escrito por Chern Lee.

   OpenSSH es un conjunto de herramientas de conectividad que se usan
   para acceder a sistemas remotos de forma segura. Puede usarse como
   sustituto directo de rlogin, rsh, rcp y telnet. Ademas cualquier
   otra conexion TCP/IP puede reenviarse o enviarse a traves de un
   tunel a traves de SSH. OpenSSH cifra todo el trafico para eliminar
   de forma efectiva el espionaje, el secuestro de conexiones, y
   otros ataques en la capa de red.

   OpenSSH esta a cargo del proyecto OpenBSD, y esta basado en SSH
   v1.2.12, con todos los errores recientes corregidos y todas las
   actualizaciones correspondientes. Es compatible con los protocolos
   SSH 1 y 2. OpenSSH forma parte del sistema base desde FreeBSD 4.0.

     --------------------------------------------------------------

  14.11.1. Ventajas de utilizar OpenSSH

   Normalmente, al utilizar telnet(1) o rlogin(1) los datos se envian
   a traves de la red en limpio, es decir, sin cifrar. Cualquier
   "sniffer" de red entre el cliente y el servidor puede robar la
   informacion de usuario/contrasena o los datos transferidos durante
   su sesion. OpenSSH ofrece diversos metodos de validacion y cifrado
   para evitar que sucedan estas cosas.

     --------------------------------------------------------------

  14.11.2. Habilitar sshd

   El daemon sshd esta habilitado por defecto FreeBSD 4.X y puede
   elegir habilitarlo o no durante la instalacion en FreeBSD 5.X. Si
   quiere saber si esta habilitado revise si la siguiente linea esta
   en rc.conf:

 sshd_enable="YES"

   Esta linea cargara sshd(8), el programa daemon de OpenSSH, en el
   arranque de su sistema. Puede ejecutar el daemon sshd tecleando
   sshd en la linea de ordenes.

     --------------------------------------------------------------

  14.11.3. Cliente SSH

   ssh(1) funciona de manera similar a rlogin(1).

 # ssh user@example.com
 Host key not found from the list of known hosts.
 Are you sure you want to continue connecting (yes/no)? yes
 Host 'ejemplo.com' added to the list of known hosts.
 usuario@ejemplo.com's password: *******

   El login continuara como lo haria si fuera una sesion de rlogin o
   telnet. SSH utiliza un sistema de huellas de llaves para verificar
   la autenticidad del servidor cuando el cliente se conecta. Se le
   pide al usuario que introduzca yes solamente la primera vez que se
   conecta. Todos los intentos futuros de login se verifican contra
   la huella de la llave guardada la primera vez. El cliente SSH le
   alertara si la huella guardada difiere de la huella recibida en
   futuros intentos de acceso al sistema. Las huellas se guardan en
   ~/.ssh/known_hosts, y en ~/.ssh/known_hosts2 las huellas SSH v2.

   Por defecto las versiones recientes de los servidores OpenSSH
   solamente aceptan conexiones SSH v2. El cliente utilizara la
   version 2 si es posible y pasara como respaldo a la version 1. El
   cliente puede tambien ser obligado a utilizar una u otra pasandole
   -1 o -2, respectivamente para la version 1 y la version 2. Se
   mantiene la compatibilidad del cliente con la version 1 para
   mantener la compatibilidad con versiones antiguas.

     --------------------------------------------------------------

  14.11.4. Copia segura

   scp(1) funciona de manera muy similar a rcp(1); copia un fichero
   desde o hacia un sistema remoto, con la diferencia de que lo hace
   de una forma segura.

 #  scp usuario@ejemplo.com:/COPYRIGHT COPYRIGHT
 usuario@ejemplo.com's password: *******
 COPYRIGHT            100% |*****************************|  4735      
 00:00   
 #

   Ya que la huella se guardo en este equipo durante el ejemplo
   anterior se verifica ahora al utilizar scp(1).

   Los argumentos de scp(1) son similares a cp(1), con el fichero o
   ficheros como primer argumento, y el destino como segundo. Ya que
   el fichero se transfiere a traves de la red, a traves de SSH, uno
   o mas argumentos tienen la estructura
   user@host:<ruta_al_fichero_remoto>.

     --------------------------------------------------------------

  14.11.5. Configuracion

   Los ficheros de configuracion del sistema tanto para el daemon
   OpenSSH como para el cliente estan en /etc/ssh.

   ssh_config contiene las opciones del cliente, mientras que
   sshd_config configura el daemon.

   Ademas las opciones sshd_program (/usr/sbin/sshd por defecto), y
   sshd_flags de rc.conf ofrecer mas niveles de configuracion.

     --------------------------------------------------------------

  14.11.6. ssh-keygen

   ssh-keygen(1) le permite validar a un usuario sin pedirle la
   contrasena:<

 % ssh-keygen -t dsa
 Generating public/private dsa key pair.
 Enter file in which to save the key (/home/user/.ssh/id_dsa):
 Created directory '/home/user/.ssh'.
 Enter passphrase (empty for no passphrase):
 Enter same passphrase again:
 Your identification has been saved in /home/user/.ssh/id_dsa.
 Your public key has been saved in /home/user/.ssh/id_dsa.pub.
 The key fingerprint is:
 bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 usuario@host.ejemplo.com

   ssh-keygen(1) creara un par de llaves publica y privada para usar
   en la validacion. La llave privada se guarda en ~/.ssh/id_dsa o en
   ~/.ssh/id_rsa, mientras que la llave publica se guarda en
   ~/.ssh/id_dsa.pub o en ~/.ssh/id_rsa.pub, respectivamente para
   llaves DSA y RSA. La llave publica debe guardarse en el
   ~/.ssh/authorized_keys de la maquina remota para que la
   configuracion funcione. Las llaves RSA version 1 deben guardarse
   en ~/.ssh/authorized_keys.

   De este modo permitira conexiones a la maquina remota mediante
   llaves SSH en lugar de contrasenas.

   Si usa una contrasena al ejecutar ssh-keygen(1), se le pedira al
   usuario una contrasena cada vez que quiera utilizar la llave
   privada. ssh-agent(1) puede evitar la molestia de introducir
   repetidamente frases largas. esto se explica ma adelante, en la
   Seccion 14.11.7.

     AvisoLas opciones y ficheros pueden ser diferentes segun la
     version de OpenSSH que tenga en su sistema; para evitar
     problemas consulte la pagina de manual ssh-keygen(1).

     --------------------------------------------------------------

  14.11.7. ssh-agent y ssh-add

   ssh-agent(1) y ssh-add(1) ofrecen metodos para que las llaves SSH
   se puedan cargar en memoria, permitiendo eliminar la necesidad de
   teclear la contrasena cada vez que haga falta.

   ssh-agent(1) gestionara la validacion utilizando la llave (o
   llaves) privada que le cargue. ssh-agent(1) se usa para lanzar
   otras aplicaciones. En el nivel mas basico puede generar una shell
   o a un nivel mas avanzado un gestor de ventanas.

   

   Para usar ssh-agent(1) en una shell necesitara primero ser
   invocado como argumento por una shell. Segundo, anada la identidad
   ejecutando ssh-add(1) y facilitando la contrasena de la llave
   privada. Completados estos pasos el usuario puede hacer ssh(1) a
   cualquier equipo que tenga instalada la llave publica
   correspondiente. Por ejemplo:

 % ssh-agent csh
 % ssh-add
 Enter passphrase for /home/user/.ssh/id_dsa:
 Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
 %

   Para utilizar ssh-agent(1) en X11 tendra que incluir una llamada a
   ssh-agent(1) en ~/.xinitrc. De este modo ofrecera los servicios de
   ssh-agent(1) a todos los programas lanzados en X11. Veamos un
   ejemplo de ~/.xinitrc:

 exec ssh-agent startxfce4

   Esto lanzaria ssh-agent(1), que a su vez lanzaria XFCE cada vez
   que inicie X11. Hecho esto y una vez reiniciado X11 para aplicar
   los cambios puede ejecutar ssh-add(1) para cargar todas sus llaves
   SSH.

     --------------------------------------------------------------

  14.11.8. Tuneles SSH

   OpenSSH permite crear un tunel en el que encapsular otro protocolo
   en una sesion cifrada.

   La siguiente orden le dice a ssh(1) que cree un tunel para telnet:

 % ssh -2 -N -f -L 5023:localhost:23 usuario@foo.ejemplo.com
 %

   Veamos las opciones que se le han suministrado a ssh:

   -2

           Obliga a ssh a utilizar la version 2 del protocolo. (No la
           use si esta trabajando con servidores SSH antiguos)

   -N

           Indica que no se ejecutara una orden remota, o solamente
           tunel. Si se omite, ssh iniciaria una sesion normal.

   -f

           Obliga a ssh a ejecutarse en segundo plano.

   -L

           Indica un tunel local segun el esquema puerto local:equipo
           remoto:puerto remoto.

   usuario@foo.ejemplo.com

           El servidor SSH remoto.

   Un tunel SSH crea un socket que escucha en localhost en el puerto
   especificado. Luego reenvia cualquier conexion recibida en el
   puerto/equipo local via la conexion SSH al puerto o equipo remoto
   especificado.

   En el ejemplo el puerto 5023 en localhost se reenvia al puerto 23
   del localhost de la maquina remota. Ya que 23 es telnet, esto
   crearia una sesion telnet segura a traves de un tunel SSH.

   Puede usar esto para encapsular cualquier otro protocolo TCP
   inseguro como SMTP, POP3, FTP, etc.

   Ejemplo 14-1. Uso de SSH para crear un tunel seguro para SMTP

 % ssh -2 -N -f -L 5025:localhost:25 usuario@correo.ejemplo.com
 usuario@correo.ejemplo.com's password: *****
 % telnet localhost 5025
 Trying 127.0.0.1...
 Connected to localhost.
 Escape character is '^]'.
 220 correo.ejemplo.com ESMTP

   Puede usar esta tecnica junto con ssh-keygen(1) y cuentas
   adicionales de usuario para crear un entorno mas transparente,
   esto es, mas comodo. Puede usar llaves en lugar de teclear
   contrasenas y puede ejecutar los tuneles de varios usuarios.

     --------------------------------------------------------------

    14.11.8.1. Ejemplos practicos de tuneles SSH

      14.11.8.1.1. Acceso seguro a un servidor POP3

   En el trabajo hay un servidor SSH que acepta conexiones desde el
   exterior. En la misma red de la oficina reside un servidor de
   correo que ejecuta un servidor POP3. La red, o ruta de red entre
   su casa y oficina puede o no ser completamente de fiar. Debido a
   esto necesita revisar su correo electronico de forma segura. La
   solucion es crear una conexion SSH al servidor SSH de su oficina y
   llegar por un tunel al servidor de correo.

 % ssh -2 -N -f -L 2110:correo.ejemplo.com:110 usuario@servidor-ssh.ejemplo.com
 usuario@servidor-ssh.ejemplo.com's password: ******

   cuando el tunel este funcionando haga que su cliente de correo
   envie peticiones POP3 a localhost en el puerto 2110. La conexion
   sera reenviada de forma totalmente segura a travees del tunel a
   correo.ejemplo.com.

     --------------------------------------------------------------

      14.11.8.1.2. Saltarse un cortafuegos draconiano

   Algunos administradores de red imponen reglas de cortafuegos
   extremadamente draconianas, filtrando no solo las conexiones
   entrantes, sino tambien las salientes. Tal vez solo se le otorgue
   acceso a maquinas remotas a traves de los puertos 22 y 80 para ssh
   y navegar en web.

   Tal vez quiera acceder a otros servicios (que tal vez ni siquiera
   esten relacionados con el trabajo), como un servidor Ogg Vorbis
   para escuchar musica. Si ese servidor Ogg Vorbis transmite en un
   puerto que no sea el 22 o el 80 no podra tener acceso a el.

   La solucion es crear una conexion SSH fuera del cortafuegos de su
   red y utilizarla para hacer un tunel al servidor Ogg Vorbis.

 % ssh -2 -N -f -L 8888:musica.ejemplo.com:8000 usuario@sistema-no-filtrado.ejemplo.org
 usuario@sistema-no-filtrado.ejemplo.org's password: *******

   Haga que el programa con el que suele escuchar musica haga
   peticiones a localhost puerto 8888, que sera reenviado a
   musica.ejemplo.com puerto 8000, evadiendo con exito el
   cortafuegos.

     --------------------------------------------------------------

  14.11.9. La opcion de usuarios AllowUsers

   Limitar que usuarios pueden entrar y desde donde suele ser
   razonable. La opcion AllowUsers le permite configurarlo, por
   ejemplo, para permitir entrar solamente al usuario root desde
   192.168.1.32. Puede hacerlo con algo parecido a esto en
   /etc/ssh/sshd_config:

 AllowUsers root@192.168.1.32

   Para permitir al usuario admin la entrada desde cualquier lugar,
   solamente introduzca el nombre de usuario:

 AllowUsers admin

   Puede listar multiples usuarios en la misma linea:

 AllowUsers root@192.168.1.32 admin

     Nota: Es importante que incluya a cada usuario que necesite
     entrar a esta maquina o no podran entrar.

   Despues de hacer los cambios a b /etc/ssh/sshd_config debe decirle
   a sshd(8) que cargue de nuevo sus ficheros de configuracion
   ejecutando:

 # /etc/rc.d/sshd reload

     --------------------------------------------------------------

  14.11.10. Lecturas complementarias

   OpenSSH

   ssh(1) scp(1) ssh-keygen(1) ssh-agent(1) ssh-add(1) ssh_config(5)

   sshd(8) sftp-server(8) sshd_config(5)

     --------------------------------------------------------------

14.12. Listas de control de acceso a sistemas de ficheros

   Contribuido por Tom Rhodes.

   Ademas de otras mejoras del sistema de ficheros como las
   instantaneas ("snapshots"), FreeBSD 5.0 y siguientes ofrecen las
   ACL ("Access Control Lists", listas de control de acceso) como un
   elemento mas de seguridad.

   Las listas de control de acceso extienden el modelo de permisos
   estandar de UNIX de una manera altamente compatible (POSIX.1e).
   Esta opcion permite al administrador usar con gran provecho un
   modelo de seguridad mas sofisticado.

   Para habilitar soporte de ACL en sistemas de ficheros UFS la
   siguiente opcion:

 options UFS_ACL

   debe ser compilada en el kernel. Si esta opcion no ha sido
   compilada, se mostrara un mensaje de advertencia si se intenta
   montar un sistema de ficheros que soporte ACL. Esta opcion viene
   incluida en el kernel GENERIC. Las ACL dependen de los atributos
   extendidos habilitados en el sistema de ficheros. Los atributos
   extendidos estan incluidos por defecto en la nueva generacion de
   sistemas de ficheros UNIX UFS2.

     Nota: Los atributos extendidos pueden usarse tambien en UFS1
     pero requieren una carga de trabajo mucho mas elevada que en
     UFS2. El rendimiento de los atributos extendidos es, tambien,
     notablemente mayor en UFS2. Por todo esto si quiere usar ACL le
     recomendamos encarecidamente que use UFS2.

   LasACL se habilitadan mediante una bandera administrativa durante
   el montaje, acls, en el fichero /etc/fstab. La bandera de montaje
   puede tambien activarse de forma permanente mediante tunefs(8)
   para modificar una bandera de superbloque ACLs en la cabecera del
   sistema de ficheros. En general es preferible usar la bandera de
   superbloque por varios motivos:

     * La bandera de montaje ACL no puede cambiarse por un remontaje
       (mount(8) -u), sino con un completo umount(8) y un mount(8).
       Esto significa que no se pueden habilitar las ACL en el
       sistema de ficheros raiz despues del arranque. Tambien
       significa que no se puede cambiar la disposicion de un de
       ficheros una vez que se ha comenzado a usar.

     * Activar la bandera de superbloque provocara que el sistema de
       ficheros se monte siempre con las ACL habilitadas incluso si
       no existe una entrada en fstab o si los dispositivos se
       reordenan. Esto es asi para prevenir un montaje accidental del
       sistema de ficheros sin tener las ACL habilitadas, que podria
       resultar en que se impongan de forma inadecuada las ACL, y en
       consecuencia problema de seguridad.

     Nota: Podemos cambiar el comportamiento de las ACL para
     permitirle a la bandera ser habilitada sin un mount(8) completo,
     pero puede salirle el tiro por la culata si activa las ACL,
     luego las desactiva, y despues las vuelve a activar sin
     configurar desde cero las atributos extendidos. En general, una
     vez que se han deshabilitado las ACL en un sistema de ficheros
     no deben dehabilitarse, ya que la proteccion de ficheros
     resultante puede no ser compatible las que esperan los usuarios
     del sistema, y al volver a activar las ACL volver a asignar las
     ACL a ficheros cuyos permisos hubieran sido cambiados, lo que
     puede desenbocar en un escenario impredecible.

   Los sistemas de ficheros con ACL habilitadas tienen un signo +
   (mas) al visualizar sus configuraciones de permisos. Por ejemplo:

 drwx------  2 robert  robert  512 Dec 27 11:54 private
 drwxrwx---+ 2 robert  robert  512 Dec 23 10:57 directorio1
 drwxrwx---+ 2 robert  robert  512 Dec 22 10:20 directorio2
 drwxrwx---+ 2 robert  robert  512 Dec 27 11:57 directorio3
 drwxr-xr-x  2 robert  robert  512 Nov 10 11:54 public_html

   Aqui vemos que los directorios directorio1, directorio2, y
   directorio3 estan usando ACL. El directorio public_html no.

     --------------------------------------------------------------

  14.12.1. Uso de ACL

   Las ACLs del sistema de ficheros pueden comprobarse con
   getfacl(1). Por ejemplo, para ver las configuraciones de ACL del
   fichero test, uno podria usar lo siguiente:

 % getfacl test
         #file:test
         #owner:1001
         #group:1001
         user::rw-
         group::r--
         other::r--

   Para cambiar las configuraciones de las ACL en este fichero use
   setfacl(1). Observe:

 % setfacl -k test

   La bandera -k eliminara todas las ACLs definidas para un fichero o
   sistema ficheros. El metodo preferible seria utilizar -b, ya que
   deja los campos basicos imprescindibles para que las ACL sigan
   funcionando.

 % setfacl -m u:trhodes:rwx,group:web:r--,o::--- test

   La opcion -m se usa para modificar las entradas por defecto de las
   ACL. Debido a que no habia entradas predefinidas puesto que fueron
   eliminadas por la orden anterior, restauraremos las opciones por
   defecto y asignara las opciones listadas. Tenga en cuenta que si
   anade un nuevo usuario o grupo aparecera el error "Invalid
   argument" en la salida estandar stdout.

     --------------------------------------------------------------

14.13. Monitorizacion de fallos de seguridad de aplicaciones

   Texto de Tom Rhodes.

   En estos ultimos anos el mundo de la seguridad ha hecho grandes
   avances en cuanto a la gestion de las vulnerabilidades. La amenaza
   de asaltos a los sistemas se incrementa cuando se instalan y
   configuran aplicaciones de muy diversas procedencias en
   virtualmente cualquier sistema operativo disponible.

   La evaluacion de vulnerabilidades es un factor clave en la
   seguridad; aunque FreeBSD libere avisos de seguridad relacionados
   con el sistema base, llevar la gestion de vulnerabilidades hasta
   cada aplicacion que se puede instalar en FreeBSD va mucho mas alla
   de la capacidad del proyecto FreeBSD. A pesar de esto existe una
   forma de mitigar las vulnerabilidades de esas aplicaciones y
   advertir a los administradores sobre los problemas de seguridad a
   medida que se detectan. Portaudit existe para hacer ese trabajo.

   El port security/portaudit consulta una base de datos, actualizada
   y mantenida por el equipo de seguridad y por los desarrolladores
   de FreeBSD en busca de incidentes de seguridad que hayan sido
   detectados.

   Si quiere usar Portaudit instalelo desde la coleccion de ports:

 # cd /usr/ports/security/portaudit && make install clean

   Durante el proceso de instalacion los ficheros de configuracion de
   periodic(8) se actualizan haciendo que Portaudit aparezca en el
   mensaje sobre la seguridad del sistema que diariamente Recuerde
   que ese correo (que se envia a la cuenta root es muy importante y
   deberia leerlo. No hay ninguna configuracion que deba modificar o
   crear.

   Despues de la instalacion un administrador debe actualizar la base
   de datos alojada en local en /var/db/portaudit mediante:

 # portaudit -F

     Nota: La base de datos sera actualizada automaticamente durante
     la ejecucion de periodic(8); asi que la orden anterior es
     totalmente opcional. Solo se necesita para los siguientes
     ejemplos.

   Si quiere comproblar si entre las aplicaciones que haya instalado
   desde el arbol de ports en su sistema hay problemas de seguridad
   solo tiene que ejecutar lo siguiente:

 # portaudit -a

   Este es un ejemplo de la salida:

 Affected package: cups-base-1.1.22.0_1
 Type of problem: cups-base -- HPGL buffer overflow vulnerability.
 Reference: <http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html>

 1 problem(s) in your installed packages found.

 You are advised to update or deinstall the affected package(s) immediately.

   El administrador del sistema obtendra mucha mas informacion sobre
   el problema de seguridad dirigiendo su navegador web a la URL que
   aparece en el mensaje. Esto incluye versiones afectadas (por
   version de port de FreeBSD), junto con otros sitios web que
   contengan advertencias de seguridad.

   En pocas palabras, Portaudit es un programa muy poderoso y
   extremadamente util cuando se combina con el port Portupgrade.

     --------------------------------------------------------------

14.14. FreeBSD Security Advisories

   Texto de Tom Rhodes.

   Como muchos sistemas operativos con calidad de produccion, FreeBSD
   publica "Security Advisories" (advertencias de seguridad. Estas
   advertencias suelen enviarse por correo a las listas de seguridad
   e incluidas en la Errata solamente despues de que la version
   apropiada haya sido corregida. Esta seccion tiene como fin
   explicar en que consiste una advertencia de seguridad, como
   entenderla y que medidas hay que tomar para parchear el sistema.

     --------------------------------------------------------------

  14.14.1. ?Que aspecto tiene una advertencia de seguridad?

   Las advertencias de seguridad de FreeBSD tienen un aspecto similar
   a la que se muestra aqui. Fue enviada a la lista de correo
   freebsd-security-notifications.

 =============================================================================
 FreeBSD-SA-XX:XX.UTIL                                     Security Advisory
                                                           The FreeBSD Project

 Topic:          denial of service due to some problem(1)

 Category:       core(2)
 Module:         sys(3)
 Announced:      2003-09-23(4)
 Credits:        Person@EMAIL-ADDRESS(5)
 Affects:        All releases of FreeBSD(6)
                 FreeBSD 4-STABLE prior to the correction date
 Corrected:      2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
                 2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
                 2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
                 2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
                 2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
                 2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
                 2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
                 2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
                 2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)(7)
 FreeBSD only:   NO(8)

 For general information regarding FreeBSD Security Advisories,
 including descriptions of the fields above, security branches, and the
 following sections, please visit
 http://www.FreeBSD.org/security/.

 I.   Background(9)


 II.  Problem Description(10)


 III. Impact(11)


 IV.  Workaround(12)


 V.   Solution(13)


 VI.  Correction details(14)


 VII. References(15)

   (1)
           El campo Topic indica cual es exactamente el problema.
           Basicamente es la introduccion de la advertencia de
           seguridad actual e indica el uso malintencionado que puede
           darse a la vulnerabilidad.
   (2)
           Category se refiere a la parte afectada del sistema, que
           puede ser core, contrib o ports. La categoria core
           significa que la vulnerabilidad afecta a un componente
           central del sistema operativo FreeBSD. La categoria
           contrib significa que la vulnerabilidad afecta a software
           que no ha sido desarrollado por el proyecto FreeBSD, como
           sendmail. La categoria ports indica que la vulnerabilidad
           afecta a software incluido en la coleccion de ports.
   (3)
           El campo Module se refiere a la ubicacion del componente,
           por ejemplo sys. En este ejemplo vemos que esta afectado
           el modulo sys; por lo tanto esta vulnerabilidad afecta a
           componentes utilizados dentro del kernel.
   (4)
           El campo Announced refleja la fecha de publicacion de la
           advertencia de seguridad fue publicada o anunciada al
           mundo. Esto significa que el equipo de seguridad ha
           verificado que el que el problema existe y que se ha
           incluido un parche que soluciona el problema en el
           repositorio de codigo fuente de FreeBSD.
   (5)
           El campo Credits le da el credito al individuo u
           organizacion que descubrio y reporto la vulnerabilidad.
   (6)
           El campo Affects explica a que versiones de FreeBSD afecta
           esta vulnerabilidad. En el caso del kernel una rapida
           revision de la salida de ident en los ficheros afectados
           ayudara a determinar la version. En el caso de de los
           ports el numero de version aparece despues del nombre del
           port en /var/db/pkg. Si el sistema no se sincroniza con el
           repositorio CVS de FreeBSD y se reconstruye diariamente,
           existe la posibilidad de que este afectado por el problema
           de seguridad.
   (7)
           El campo Corrected indica la fecha, hora, zona horaria y
           version de FreeBSD en que fue corregido.
   (8)
           El campo FreeBSD only indica si la vulnerabilidad afecta
           solamente a FreeBSD o si afecta tambien a otros sistemas
           operativos.
   (9)
           El campo Background informa acerca de que es exactamente
           la aplicacion afectada. La mayor parte de las veces se
           refiere a por que la aplicacion existe en FreeBSD, para
           que se usa y un poco de informacion de como llego llego a
           ocupar el lugar que ocupa en el sistema o el arbol de
           ports.
   (10)
           El campo Problem Description explica el problema de
           seguridad en profundidad. Puede incluir informacion del
           codigo erroneo, o incluso como puede usarse maliciosamente
           el error para abrir un agujero de seguridad.
   (11)
           El campo Impact describe el tipo de impacto que el
           problema pueda tener en un sistema. Por ejemplo, esto
           puede ser desde un ataque de denegacion de servicio, hasta
           una escalada de privilegios de usuario, o incluso ofrecer
           al atacante acceso de superusuario.
   (12)
           El campo Workaround ofrece una solucion temoral posible
           para los administradores de sistemas que tal vez no puedan
           actualizar el sistema. Esto puede deberse a la falta de
           tiempo, disponibilidad de de red, o a muchas otras
           razones. A pesar de todo la la seguridad no se debe tomar
           a la ligera y un sistema afectado debe parchearse al menos
           aplicar una solucion temporal para el agujero de
           seguridad.
   (13)
           El campo Solution ofrece instrucciones para parchear el
           sistema afectado. Este es un metodo paso a paso, probado y
           verificado para parchear un sistema y que trabaje seguro.
   (14)
           El campo Correction Details despliega la rama del CVS o el
           nombre de la version con los puntos cambiados a guiones
           bajos. Tambien muestra el numero de revision de los
           ficheros afectados dentro de cada rama.
   (15)
           El campo References suele ofrecer fuentes adicionales de
           informacion: URL, libros, listas de correo y grupos de
           noticias.

     --------------------------------------------------------------

14.15. Contabilidad de procesos

   Texto de Tom Rhodes.

   La contabilidad de procesos es un metodo de seguridad en el cual
   un administrador puede mantener un seguimiento de los recursos del
   sistema utilizados, su distribucion entre los usuarios, ofrecer
   monitorizacion del sistema y seguir la pista minimamente a las
   ordenes de usuario.

   Esto en realidad tiene sus puntos positivos y negativos. Uno de
   los positivos es que una intrusion puede minimizarse en el momento
   de producirse. Uno negativo es la cantidad de logs generados por
   la contabilidad de procesos y el espacio de disco que requieren.
   Esta seccion guiara al administrador a traves de los fundamentos
   de la contabilidad de procesos.

     --------------------------------------------------------------

  14.15.1. Como habilitar y utilizar la contabilidad de procesos

   Antes de poder usar la contabilidad de procesos tendra que
   habilitarla. Ejecute la siguiente orden:

 # touch /var/account/acct

 # accton /var/account/acct

 # echo 'accounting_enable="YES"' >> /etc/rc.conf

   Una vez habilitada, la contabilidad de procesos empezara a seguir
   el rastro de estadisticas de la CPU, ordenes, etc. Todos los logs
   de contabilidad estan en un formato ilegible para humanos, pero
   accesibles para sa(8). Si se ejecuta sin opciones, sa imprimira
   informacion sobre el numero de llamadas por usuario, el tiempo
   total transcurrido expresado en minutos, el tiempo total de CPU y
   de usuario en minutos, el numero medio de operaciones de E/S, etc.

   Para ver informacion acerca de las ordenes que se estan ejecutados
   puede usar la lastcomm(1). lastcomm imprime ordenes ejecutadas por
   los usuarios en ttys(5) especificas. Veamos un ejemplo:

 # lastcomm ls
         trhodes ttyp1

   Imprimiria todas las veces (conocidas) que el usuario trhodes ha
   usado ls en la terminal ttyp1.

   Hay muchas mas opciones que pueden serle muy utiles. Si quiere
   conocerlas consulte las paginas de manual lastcomm(1), acct(5) y
   sa(8).

     --------------------------------------------------------------

                          Capitulo 15. Jaulas

   Escrito por Matteo Riondato.

     --------------------------------------------------------------

15.1. Sinopsis

   En este capitulo se explica que son las jaulas en FreeBSD y como
   usarlas. Las jaulas, citadas con frecuencia como la nueva
   generacion de entornos chroot, son una herramienta muy poderosa
   que se ha puesto al servicio de los administradores de sistemas,
   aunque su uso mas basico puede ser tambien de suma utilidad para
   usuarios avanzados.

   Tras leer este capitulo sabra usted:

     * Que es una jaula y para que puede usarse en sistemas FreeBSD.

     * Como generar, arrancar y parar una jaula.

     * Como manejarse con los rudimentos de la administracion de las
       jaulas, tanto desde dentro como desde fuera de la jaula.

   Otras fuentes de informacion util sobre las jaulas:

     * La pagina de manual jail(8). Es la referencia completa de
       jail, la herramienta administrativa de FreeBSD con la que se
       arrancan, paran y controlan las jaulas.

     * Las listas de correo y sus respectivos archivos. Los archivos
       de la lista de correo para preguntas generales sobre FreeBSD,
       entre otras listas de correo alojadas en el servidor de listas
       de FreeBSD contienen una enorme cantidad de informacion sobre
       jaulas. La ayuda que esta buscando puede obtenerla, por tanto,
       de una busqueda en los archivos de las listas o de enviar una
       pregunta que nadie haya hecho en la lista de correo
       freebsd-questions.

     --------------------------------------------------------------

15.2. Terminos relacionados con las jaulas

   Para ayudar a comprender las partes de FreeBSD que intervienen en
   el funcionamiento de las jaulas, su funcionamiento interno y el
   modo en que interactuan con el resto de FreeBSD, durante el resto
   del capitulo se utilizaran los siguientes terminos:

   chroot(2) (comando)

           Es una llamada al sistema de FreeBSD que restringe el
           directorio raiz de un proceso y sus hijos.

   chroot(2) (entorno)

           Es el entorno de procesos que se ejecutan en un "chroot".
           Esto incluye recursos como la parte visible del sistema de
           ficheros, los ID de usuario y grupo disponibles,
           interfaces de red u otros mecanismos IPC,

   jail(8) (comando)

           La herramienta de administracion que permite arrancar
           procesos dentro del entorno de una jaula.

   servidor (sistema, proceso, usuario, etc)

           El sistema que controla una jaula. El servidor tiene
           acceso a todos los recursos de hardware y puede controlar
           procesos tanto dentro como fuera de la jaula. Una de las
           diferencias importantes entre el sistema que aloja la
           jaula y la jaula propiamente dicha: las limitaciones que
           afectan a los procesos que se ejecutan con privilegios de
           superusuario dentro de la jaula no dependen de los
           procesos del servidor que la aloja.

   enjaulado (sistema, proceso, usuario, etc.)

           Un proceso, usuario u otra entidad, cuyo acceso a los
           recursos esta restringido por una jaula de FreeBSD.

     --------------------------------------------------------------

15.3. Introduccion

   Dado lo dificil y desconcertante de la tarea de administrar
   sistemas se han ido desarrollando poderosas herramientas con el
   fin de hacer la vida del administrador mas sencilla. Dichas
   herramientas suelen facilitar cierto tipo de mejoras en la
   instalacion, configuracion o mantenimiento de los sistemas. Una de
   las tareas que se espera que cumpla un administrador de sistemas
   es la configuracion adecuada de la seguridad, de modo que pueda
   dar el servicio para el que se ha destinado sin que pueda verse
   comprometido.

   Una de las herramientas disponibles para mejorar los niveles de
   seguridad de un sistema FreeBSD es el uso de jaulas. Las jaulas
   fueron introducidas en FreeBSD 4.X por Poul-Henning Kamp
   <phk@FreeBSD.org>, pero en FreeBSD 5.X sus capacidades fueron
   aumentadas hasta hacer de ellas un subsistema poderoso y flexible.
   Su desarrollo sigue avanzando, aumentando asi su utilidad,
   rendimiento, fiabilidad y seguridad.

     --------------------------------------------------------------

  15.3.1. Que es una jaula

   Los sistemas tipo BSD disponen de chroot(2) desde la epoca de
   4.2BSD. chroot(8) permite restringir el directorio raiz de un
   conjunto de procesos, creando un entorno seguro y separado del
   resto del sistema. Los procesos creados dentro de un entorno
   chroot no pueden acceder a ficheros o recursos ubicados fuera del
   mismo. Por esta razon, si un atacante logra comprometer un
   servicio que se ejecuta en un entorno chroot no deberia
   automaticamente poder acceder al resto del sistema. chroot(8) es
   una buena herramienta para tareas sencillas que no requieran mucha
   flexibilidad o caracteristicas complejas o muy avanzadas. Por
   desgracia, desde la invencion de chroot se han ido encontrando
   muchas formas de saltarse las barreras que chroot impone y, aunque
   esten corregidas en las versiones mas modernas del kernel de
   FreeBSD, era evidente que chroot(2) no era la solucion ideal para
   ejecutar servicios con seguridad. Habia que implementar un nuevo
   subsistema.

   Este es uno de los principales motivos por los que se crearon las
   jaulas.

   Las jaulas llevan mas alla en muchos sentidos el concepto
   tradicional de entorno chroot(2). En un entorno chroot(2)
   tradicional los procesos solo ven limitada la parte del sistema de
   ficheros a la que pueden acceder. El resto de recursos del
   sistema, es decir, el conjunto de usuarios del sistema, los
   procesos en ejecucion o el subsistema de red estan compartidos
   entre el sistema alojado y el servidor. Las jaulas extienden este
   modelo virtualizando no solamente el acceso al sistema de
   ficheros, sino al conjunto de usuarios, al subsistema de red del
   kernel de FreeBSD y unas cuantas cosas mas. En la Seccion 15.5 se
   detallan diversas opciones de control exhaustivo para configurar
   el acceso a recursos de un entorno enjaulado.

   Una jaula se caracteriza por disponer de cuatro elementos:

     * Un "subarbol" de directorios: el punto desde el que se entra a
       una jaula. Una vez dentro de la jaula un proceso no puede
       escapar de dicho "subarbol". Los tipicos problemas de
       seguridad que aparecin una y otra vez en el diseno del
       chroot(2) original no afectan a las jaulas de FreeBSD.

     * Un nombre de maquina ("hostname"), que definira a la jaula.
       Las jaulas se usan principalmente para albergar servicios de
       red, por lo que disponer de un nombre de maquina descriptivo
       ayuda enormemente al administrador de sistemas.

     * Una direccion IP: debe asignarse a la jaula y no cambiarse
       durante el ciclo de vida de la jaula. La direccion IP de una
       jaula suele ser un alias de un interfaz de red, aunque no es
       imprescindible que asi sea.

     * Un comando: La ruta de un ejecutable ubicado dentro de la
       jaula. La ruta es relativa al directorio raiz de la jaula, por
       lo que puede ser muy diferentes segun el entorno.

   Ademas, las jaulas pueden tener sus propios usuarios e incluso su
   propio root. Es obvio que este usuario root tiene su poder para
   hacer circunscrito a la jaula y, desde el punto de vista del
   servidor, el usuario root de la jaula no es omnipotente. El
   usuario root de la jaula no puede ejecutar tareas criticas fuera
   de la jaula (jail(8)) a la que pertenece. Mas adelante, en la
   Seccion 15.5, se dara mas informacion sobre las restricciones del
   usuario root.

     --------------------------------------------------------------

15.4. Creacion y gestion de jaulas

   Algunos administradores dividen las jaulas en dos tipos: jaulas
   "completas", que recrean un sistema FreeBSD real, y jaulas "de
   servicio", que son aquellas que estan dedicadas a una sola
   aplicacion o servicio, en muchos casos ejecutandose sin
   privilegios. Se trata de una division exclusivamente conceptual,
   por lo que el proceso de generacion de una jaula no se ve afectado
   por ella. La pagina de manual jail(8) explica claramente el
   procedimiento a seguir para generar una jaula:

 # setenv D /aqui/esta/la/jaula
 # mkdir -p $D (1)
 # cd /usr/src
 # make world DESTDIR=$D (2)
 # cd etc/ [9]
 # make distribution DESTDIR=$D (3)
 # mount_devfs devfs $D/dev (4)

   (1)
           El mejor punto de partida es la eleccion del punto del
           sistema de ficheros del servidor donde estara fisicamente
           ubicada la jaula. /usr/jail/nombredelajaula es un buen
           sitio. nombredelajaula es el nombre de maquina que
           identifica a la jaula. El sistema de ficheros /usr/ suele
           tener espacio suficiente para albergar el sistema de
           ficheros de la jaula que, cuando se trata de jaulas
           "completas", es esencialmente lo necesario para alojar
           todos y cada uno de los sistemas de ficheros en una
           instalacion del sistema base por omision de FreeBSD.
   (2)
           Este comando creara el contenido necesario (binarios,
           bibliotecas, paginas de manual, etc.) y lo copiara al
           "subarbol" elegido como ubicacion fisica de la jaula. Todo
           se hace al tipico estilo FreeBSD: se compila todo y luego
           se instala en la ruta de destino.
   (3)
           Al pasar el "target" distribution a make se instalan todos
           los ficheros de configuracion necesarios. En pocas
           palabras, instala cada fichero instalable que haya en
           /usr/src/etc/ en el directorio /etc de la jaula, es decir,
           en $D/etc/.
   (4)
           No es imprescindible montar el sistema de ficheros
           devfs(8) dentro de la jaula aunque por otra parte (casi)
           todas las aplicaciones necesitan acceso al menos a un
           dispositivo, dependiendo esto del proposito de la
           aplicacion. Es muy importante el control del acceso a
           dispositivos desde la jaula, puesto que una configuracion
           descuidada puede permitir que un atacante haga de las
           suyas. El control sobre devfs(8) se gestiona mediante
           reglas que se detallan en las paginas de manual devfs(8) y
           devfs.conf(5).

   Una vez instalada la jaula puede arrancarla mediante jail(8).
   jail(8) usa los cuatro argumentos que se detallan en la Seccion
   15.3.1. Puede pasarle otros argumentos ademas de estos, por
   ejemplo para ejecutar procesos enjaulados bajo los permisos de un
   usuario especifico. El argumento comando depende del tipo de
   jaula; si se trata de un virtual system /etc/rc es una buena
   eleccion, puesto que ejecutara la secuencia de arranque de un
   sistema FreeBSD real. Si se trata de una jaula de servicio depende
   del servicio o aplicacion que se quiera ejecutar mediante la
   jaula.

   Con frecuencia las jaulas se arrancan durante el arranque del
   servidor que las aloja; el sistema rc de FreeBSD permite hacerlo
   de un modo muy sencillo.

    1. Puede crear una lista de jaulas que quiera arrancar en el
       inicio del sistema en el fichero rc.conf(5):

 jail_enable="YES"   # Ponga NO si quiere desactivar el arranque de jaulas
 jail_list="www"     # Lista de nombres de jaulas separados por espacios

    2. Tendra que anadir parametros especificos para cada jaula al
       fichero rc.conf(5):

 jail_www_rootdir="/usr/jail/www"     # directorio raiz de la jaula
 jail_www_hostname="www.example.org"  # nombre de maquina de la jaula
 jail_www_ip="192.168.0.10"           # direccion IP de la jaula
 jail_www_devfs_enable="YES"          # montar devfs en la jaula
 jail_www_devfs_ruleset="www_ruleset" # reglas a aplicar a devfs dentro de la jaula

       El arranque de jaulas por omision que se configure en
       rc.conf(5) ejecutara el script /etc/rc de la jaula y asumira
       que es un sistema virtual completo. Si se trata de una jaula
       de servicio el comando de arranque por omision tendra que
       cambiarse configurando la opcion jail_nombredejaula_exec_start
       segun convenga.

         Nota: Si quiere consultar la lista completa de opciones
         consulte la pagina de manual rc.conf(5).

   Puede arrancar o parar a mano una jaula mediante el script
   /etc/rc.d/jail siempre y cuando la jaula aparezca en rc.conf:

 # /etc/rc.d/jail start www
 # /etc/rc.d/jail stop www

   De momento no hay una forma limpia de apagar una jaula (jail(8))
   debido a que los comandos que se usan normalmente para producir un
   apagado limpio del sistema no pueden usarse dentro de una jaula.
   La mejor forma de parar una jaula es ejecutar el siguiente comando
   desde dentro de la propia jaula o bien mediante jexec(8) desde
   fuera:

 # sh /etc/rc.shutdown

   Para mas informacion consulte la pagina de manual jail(8).

     --------------------------------------------------------------

15.5. Administracion y personalizacion a fondo

   Hay diversas opciones que pueden usarse en las jaulas y varios
   tipos de formas de combinar un sistema FreeBSD servidor y las
   jaulas y poder disponer de aplicaciones de alto nivel. En esta
   seccion se muestra lo siguiente:

     * Algunas de las opciones disponibles para personalizar el
       comportamiento y las restricciones de seguridad que pueden
       aplicarse en una jaula.

     * Algunas de las aplicaciones de alto nivel creadas para la
       administracion de jaulas. Estas aplicaciones estan en la
       coleccion de ports y pueden utilizarse en conjunto para
       implementar productos basados en jaulas.

     --------------------------------------------------------------

  15.5.1. Herramientas del sistema para la personalizacion de jaulas en
  FreeBSD

   La personalizacion a fondo de las jaulas se hace en su mayor parte
   mediante la configuracion de variables sysctl(8). Hay una
   subcategoria especial de sysctl para que sea mas sencillo
   organizar las opciones mas mas importantes: se trata de las
   opciones de la jerarquia security.jail.* del kernel de FreeBSD. A
   continuacion veremos una lista de las principales sysctl
   relacionadas con las jaulas y los valores que tienen por omision.
   Los nombres deberian describir por si mismos que funcion tienen
   (N. del T.: En ingles, claro) pero si necesita mas informacion
   sobre ellas consulte las paginas de manual jail(8) y sysctl(8).

     * security.jail.set_hostname_allowed: 1

     * security.jail.socket_unixiproute_only: 1

     * security.jail.sysvipc_allowed: 0

     * security.jail.enforce_statfs: 2

     * security.jail.allow_raw_sockets: 0

     * security.jail.chflags_allowed: 0

     * security.jail.jailed: 0

   El administrador del servidor puede usar estas variables para
   anadir o quitar limitaciones impuestas por omision al usuario
   root. Tenga en cuenta que hay ciertas limitaciones que no pueden
   quitarse. El usuario root no puede montar o desmontar sistemas de
   ficheros desde su jaula. El usuario root no puede cargar o
   descargar reglas de devfs(8), configurar reglas de cortafuegos ni
   ejecutar muchas otras tareas administrativas que requieran
   modificaciones o acceso a datos internos del kernel, como cambiar
   el nivel de seguridad securelevel del kernel.

   El sistema base de FreeBSD contiene un conjunto basico de
   herramientas que permiten el acceso a informacion sobre jaulas
   activas en el sistema, asi como la conexion a una jaula para
   ejecutar comandos administrativos. jls(8) y jexec(8) forman parte
   del sistema base de FreeBSD y permiten ejecutar las siguientes
   tareas:

     * Mostrar una lista de jaulas activas y sus correspondientes
       identificadores de jaula (JID), direccion IP, nombre de
       maquina y ruta.

     * Conectarse a una jaula en ejecucio desde el servidor y
       ejecutar un comando dentro de la jaula o realizar tareas
       administrativas dentro de dicha jaula. Esto es muy util cuando
       el usuario root quiere apagar la jaula de forma limpia. La
       herramienta jexec(8) permite tambien arrancar una shell dentro
       de la jaula para realizar tareas administrativas. Veamos un
       ejemplo:

 # jexec 1 tcsh

     --------------------------------------------------------------

  15.5.2. Herramientas para tareas administrativas de alto nivel en la
  Coleccion de Ports

   Entre las variadas aplicaciones ajenas al Proyecto FreeBSD que han
   ido apareciendo para administrar jaulas una de las mas completas y
   utiles es sysutils/jailutils. Es un conjunto de pequenas
   aplicaciones de mucha ayuda en la gestion de una jaula (jail(8)).
   Por favor, consulte su pagina web para mas informacion.

     --------------------------------------------------------------

15.6. Uso de las jaulas

  15.6.1. Jaulas "de servicio"

   Escrito por Daniel Gerzo.

   Esta seccion esta basada en una idea que Simon L. Nielsen
   <simon@FreeBSD.org> presento por primera vez en
   http://simon.nitro.dk/service-jails.html y en un articulo con
   contenido adicional escrito por Ken Tom <locals@gmail.com>. En
   esta seccion se detalla como configurar un sistema FreeBSD que
   anade una capa adicional de seguridad mediante el uso de jail(8).
   Para su verdadero aprovechamiento se asume que el sistema en el
   que se vaya a aplicar ejecuta al menos RELENG_6_0 y que la
   informacion que contienen las secciones previas de este capitulo
   se ha comprendido totalmente.

     --------------------------------------------------------------

    15.6.1.1. Diseno

   Uno de los mayores problemas de las jaulas es la gestion de su
   proceso de actualizacion. Este proceso tiene a ser un problema
   porque cada jaula tiene que recompilarse integramente desde el
   codigo fuente cada vez que hay que actualizarla. Esto no es un
   gran problema si tenemos una sola jaula puesto que el proceso de
   actualizacion es bastante simple, pero si hay muchas jaulas sera
   un trabajo largo y tedioso.

     Aviso: Esta configuracion requiere mucha experiencia con FreeBSD
     y el uso de sus caracteristicas. Si los pasos que se detallan a
     continuacion le parecen demasiado complicados puede echar un
     vistazo a sistemas mas sencillos como sysutils/ezjail, que le
     permitira acceder a un metodo de administracion de jaulas en
     FreeBSD mas sencillo y no es tan sofisticado como el que le
     proponemos a continuacion.

   El origen de esta idea es resolver los problemas antes descritos
   compartiendo el maximo posible entre distintas jaulas, de un modo
   seguro (utilizando montajes using read-only mount_nullfs(8)
   mounts) para que la actualizacion sea mas sencilla y el ubicar
   servicios aislados en jaulas sea mas interesante. Ademas, se
   presenta una forma sencilla de anadir o borrar jaulas asi como una
   forma de actualizarlas.

     Nota: Los ejemplos de servicios en este contexto son: un
     servidor HTTP,un servidor DNS, un servidor SMTP, etc.

   Los objetivos de la configuracion descrita en esta seccion son:

     * Crear una estructura de jaulas simple y facil de entender.
       Esto implica no tener que ejecutar un "installworld" completo
       en todas y cada una de las jaulas.

     * Facilitar la creacion de nuevas jaulas o el borrado de jaulas
       previamente existentes.

     * Facilitar la actualizacion de jaulas ya existentes.

     * Hacer posible el uso de una rama de FreeBSD personalizada.

     * Ser paranoico en cuanto a seguridad, reduciendo todo lo
       posible la posibilidad de que los sistemas se vean
       comprometidos.

     * Ahorrar todo el espacio e inodos que sea posible.

   Como ya se ha dicho, este diseno se basa en gran medida en el
   disponer de una unica plantilla en modo de solo lectura (a la que
   llamaremos nullfs) montada en cada jaula y un dispositivo en modo
   lectura-escritura por cada jaula. El dispositivo puede ser otro
   disco fisico adicional, una particion o un dispositivo md(4)
   basado en un vnode. En este ejemplo utilizaremos montajes nullfs
   en modo lectura-escritura.

   La estructura del sistema de ficheros se detalla en la siguiente
   lista:

     * Cada jaula se montara bajo /home/j.

     * /home/j/mroot sera la plantilla para cada jaula y la particion
       de solo lectura para todas las jaulas.

     * Se creara un directorio vacio para cada jaula bajo el
       directorio /home/j.

     * Cada jaula tendra un directorio /s que estara enlazado con la
       parte de lectura-escritura del sistema.

     * Cada jaula tendra su propio sistema en modo lectura-escritura
       basado en /home/j/skel.

     * Cada parte de lectura-escritura correspondiente a cada jaula
       se creara en /home/js.

     Nota: Se asume que las jaulas se instalaran bajo la particion
     /home. Por supuesto esto no es en absoluto obligatorio, pero hay
     que tener en cuenta que debe hacerse el mismo cambio en cada uno
     de los ejemplos que se muestran mas adelante.

     --------------------------------------------------------------

    15.6.1.2. Creacion de la plantilla

   En esta seccion se describen los pasos necesarios para crear la
   plantilla maestra que conformara la parte de solo lectura que
   usaran las jaulas.

   Siempre es recomendable actualizar el sistema FreeBSD a la ultima
   rama -RELEASE. Consulte el capitulo correspondiente de este libro
   si necesita mas informacion. En caso de que la actualizacion no
   sea posible tendra que usar "buidworld" para poder seguir
   adelante. Tambien necesitara el paquete sysutils/cpdup. Usaremos
   portsnap(8) para descargar la Coleccion de Ports de FreeBSD. El
   capitulo sobre Portsnap es siempre una lectura muy recomendable
   para quienes no tengan experiencia con su funcionamiento.

    1. Lo primero que haremos sera crear una estructura de
       directorios para el sistema de ficheros de solo lectura que
       contendra los binarios de nuestras jaulas, luego iremos al
       directorio que contiene el arbol de codigo de FreeBSD e
       instalaremos el sistema de ficheros de solo lectura en la
       plantilla de las jaulas:

 # mkdir /home/j /home/j/mroot
 # cd /usr/src
 # make installworld DESTDIR=/home/j/mroot

    2. Una vez hecho esto, prepararemos la Coleccion de Ports de
       FreeBSD para nuestras jaulas asi como un arbol de codigo
       FreeBSD, necesario para usar mergemaster:

 # cd /home/j/mroot
 # mkdir usr/ports
 # portsnap -p /home/j/mroot/usr/ports fetch extract
 # cpdup /usr/src /home/j/mroot/usr/src

    3. Crear la estructura de directorios necesaria para la parte de
       lectura-escritura del sistema:

 # mkdir /home/j/skel /home/j/skel/home /home/j/skel/usr-X11R6 /home/j/skel/distfiles
 # mv etc /home/j/skel
 # mv usr/local /home/j/skel/usr-local
 # mv tmp /home/j/skel
 # mv var /home/j/skel
 # mv root /home/j/skel

    4. Usamos mergemaster para instalar los ficheros de configuracion
       que falten. Despues nos libramos de los directorios
       adicionales que haya creado mergemaster:

 # mergemaster -t /home/j/skel/var/tmp/temproot -D /home/j/skel -i
 # cd /home/j/skel
 # rm -R bin boot lib libexec mnt proc rescue sbin sys usr dev

    5. Ahora enlazamos simbolicamente el sistema de ficheros de
       lectura-escritura con el sistema de ficheros de solo lectura.
       Por favor, asegurese de que los enlaces simbolicos se crean en
       las ubicaciones correctas: s/. Si se usan directorios reales o
       directorios erroneos la instalacion no funcionara.

 # cd /home/j/mroot
 # mkdir s
 # ln -s s/etc etc
 # ln -s s/home home
 # ln -s s/root root
 # ln -s ../s/usr-local usr/local
 # ln -s ../s/usr-X11R6 usr/X11R6
 # ln -s ../../s/distfiles usr/ports/distfiles
 # ln -s s/tmp tmp
 # ln -s s/var var

    6. Como ultimo paso, cree un /home/j/skel/etc/make.conf generico
       con el siguiente contenido:

 WRKDIRPREFIX?=  /s/portbuild

       El tener WRKDIRPREFIX configurado de este modo hara posible
       compilar ports de FreeBSD dentro de cada jaula. Recuerde que
       el el directorio de los ports es de solo lectura. La ruta
       personalizada por WRKDIRPREFIX permite ejecutar compilaciones
       en la parte de solo lectura de cada jaula.

     --------------------------------------------------------------

    15.6.1.3. Creacion de las jaulas

   Ya tenemos una plantilla de jaulas de FreeBSD completa, asi que
   podemos configurar nuestras jaulas en /etc/rc.conf. En este
   ejemplo crearemos 3 jaulas: "NS", "MAIL" y "WWW".

   

    1. Introduzca las siguientes lineas en el fichero /etc/fstab; con
       esto cada jaula tendra acceso a la plantilla de solo lectura y
       al espacio de lectura-escritura:

 /home/j/mroot   /home/j/ns     nullfs  ro  0   0
 /home/j/mroot   /home/j/mail   nullfs  ro  0   0
 /home/j/mroot   /home/j/www    nullfs  ro  0   0
 /home/js/ns     /home/j/ns/s   nullfs  rw  0   0
 /home/js/mail   /home/j/mail/s nullfs  rw  0   0
 /home/js/www    /home/j/www/s  nullfs  rw  0   0

         Nota: Las particiones que tienen un 0 en la columna "pass"
         no seran revisadas por fsck(8) durante el arranque y las que
         tienen un 0 en la columna "dump" no seran copiadas por
         dump(8). No nos interesa que fsck compruebe la integridad de
         montajes nullfs ni que dump haga copias de seguridad de
         montajes nullfs de solo lectura de las jaulas. Por esta
         razon el ejemplo de fstab tiene en las dos ultimas columnas
         "0 0".

    2. Configure las jaulas en /etc/rc.conf:

 jail_enable="YES"
 jail_set_hostname_allow="NO"
 jail_list="ns mail www"
 jail_ns_hostname="ns.ejemplo.org"
 jail_ns_ip="192.168.3.17"
 jail_ns_rootdir="/usr/home/j/ns"
 jail_ns_devfs_enable="YES"
 jail_mail_hostname="mail.ejemplo.org"
 jail_mail_ip="192.168.3.18"
 jail_mail_rootdir="/usr/home/j/mail"
 jail_mail_devfs_enable="YES"
 jail_www_hostname="www.ejemplo.org"
 jail_www_ip="62.123.43.14"
 jail_www_rootdir="/usr/home/j/www"
 jail_www_devfs_enable="YES"

         Aviso: La razon por la que jail_nombre_rootdir contiene
         /usr/home y no /home es que la ruta fisica del
         directorio/home en una instalacion de FreeBSD por omision es
         /usr/home. La variable jail_nombre_rootdir no debe apuntar a
         una ruta que contenga un enlace simbolico porque seria
         imposible arrancar las jaulas. Utilice la herramienta
         realpath(1) para asegurarse del valor exacto que debe
         asignar a la variable. Por favor, consulte el aviso de
         seguridad FreeBSD-SA-07:01.jail para mas informacion.

    3. Creamos los puntos de montaje de sistemas de ficheros de solo
       lectura correspondientes a cada jaula:

 # mkdir /home/j/ns /home/j/mail /home/j/www

    4. Instalamos la plantilla de lectura-escritura dentro de cada
       jaula. Observe que utilizamos sysutils/cpdup para asegurarnos
       de que se hace una copia exacta de cada directorio:

 # mkdir /home/js
 # cpdup /home/j/skel /home/js/ns
 # cpdup /home/j/skel /home/js/mail
 # cpdup /home/j/skel /home/js/www

    5. Llegados a este punto las jaulas estan configuradas y listas
       para arrancar. Monte los sistemas de ficheros de cada jaula y
       luego arranquelas con el script /etc/rc.d/jail:

 # mount -a
 # /etc/rc.d/jail start

   Las jaulas deberian haber arrancado. Asegurese de ello con jls(8).
   La salida que vera debe parecerse a esta:

 # jls
    JID  IP Address      Hostname                      Path
      3  192.168.3.17    ns.ejemplo.org                /home/j/ns
      2  192.168.3.18    mail.ejemplo.org              /home/j/mail
      1  62.123.43.14    www.ejemplo.org               /home/j/www

   En este punto deberia ser posible entrar a cada una de las jaulas,
   anadir nuevos usuarios o configurar daemons. La columna JID indica
   el numero de identificacion de cada jaula que este funcionando en
   el sistema. Con el siguiente comando puede ejecutar tareas
   administrativas en la jaula cuyo JID sea 3:

 # jexec 3 tcsh

     --------------------------------------------------------------

    15.6.1.4. Actualizacion

   Llegara el momento en el que sea necesario actualizar el sistema,
   bien por seguridad o porque sea util para las jaulas disponer de
   alguna nueva caracteristica del sistema. El diseno de esta
   configuracion facilita una forma facil de actualizar sus jaulas.
   Ademas, minimiza la perdida de servicio, puesto que las jaulas
   deben apagarse solamente al final de todo el proceso. Se ofrece
   tambien la posibilidad de volver a la version anterior en caso de
   que algo salga mal.

    1. El primer paso es actualizar el servidor que aloja las jaulas
       de la forma habitual. Despues creamos una plantilla de solo
       lectura temporal en /home/j/mroot2.

 # mkdir /home/j/mroot2
 # cd /usr/src
 # make installworld DESTDIR=/home/j/mroot2
 # cd /home/j/mroot2
 # cpdup /usr/src usr/src
 # mkdir s

       La ejecucion de installworld crea unos cuantos directorios
       innecesarios que debemos borrar:

 # chflags -R 0 var
 # rm -R etc var root usr/local tmp

    2. Creamos de nuevo los enlaces simbolicos de lectura-escritura
       del sistema de ficheros principal:

 # ln -s s/etc etc
 # ln -s s/root root
 # ln -s s/home home
 # ln -s ../s/usr-local usr/local
 # ln -s ../s/usr-X11R6 usr/X11R6
 # ln -s s/tmp tmp
 # ln -s s/var var

    3. Ha llegado el momento de parar las jaulas:

 # /etc/rc.d/jail stop

    4. Desmontamos los sistemas de ficheros originales:

 # umount /home/j/ns/s
 # umount /home/j/ns
 # umount /home/j/mail/s
 # umount /home/j/mail
 # umount /home/j/www/s
 # umount /home/j/www

         Nota: Los sistemas de ficheros de lectura-escritura cuelgan
         del sistema de solo lectura /s y por tanto deben desmontarse
         antes.

    5. Movemos el sistema de ficheros de solo lectura viejo y lo
       reemplazamos por el nuevo. Nos servira de copia de seguridad y
       como archivo en caso de que haya problemas. Para darle un
       nombre usamos la fecha en la que se creado una nueva copia del
       sistema de ficheros de solo lectura. Movemos tambien la
       Coleccion de Ports de FreeBSD al sistema de ficheros nuevo
       para ahorrar un poco mas de espacio e inodos:

 # cd /home/j
 # mv mroot mroot.20060601
 # mv mroot2 mroot
 # mv mroot.20060601/usr/ports mroot/usr

    6. Una vez llegados a este punto la nueva plantilla de solo
       lectura esta lista, de manera que lo unico que nos queda por
       hacer es montar los sistemas de ficheros y arrancar las
       jaulas:

 # mount -a
 # /etc/rc.d/jail start

   Compruebe con jls(8) si las jaulas han arrancado sin
   contratiempos. No olvide ejecutar mergemaster en cada jaula.
   Tendra que actualizar tanto los ficheros de configuracion como los
   scripts rc.d.

     --------------------------------------------------------------

                 Capitulo 16. Mandatory Access Control

   Escrito por Tom Rhodes.

16.1. Sinopsis

   Pendiente de Traduccion

     --------------------------------------------------------------

16.2. Terminos clave en este capitulo

   Pendiente de traduccion

     --------------------------------------------------------------

16.3. Explicacion de MAC

   Pendiente de traduccion

     --------------------------------------------------------------

16.4. Las etiquetas MAC

   Pendiente de traduccion

     --------------------------------------------------------------

16.5. Configuracion de modulos

   Pendiente de traduccion

     --------------------------------------------------------------

16.6. El modulo MAC ifoff

   Pendiente de traduccion

     --------------------------------------------------------------

16.7. El modulo MAC portacl

   Pendiente de traduccion

     --------------------------------------------------------------

16.8. Politicas de etiquetas MAC

   Pendiente de traduccion

     --------------------------------------------------------------

16.9. El modulo MAC partition

   Pendiente de traduccion

     --------------------------------------------------------------

16.10. El modulo de seguridad multinivel MAC

   Pendiente de traduccion

     --------------------------------------------------------------

16.11. El modulo MAC Biba

   Pendiente de traduccion

     --------------------------------------------------------------

16.12. El modulo MAC LOMAC

   Pendiente de traduccion

     --------------------------------------------------------------

16.13. Implementacion de un entorno seguro con MAC

   Pendiente de traduccion

     --------------------------------------------------------------

16.14. Otro ejemplo: Uso de MAC para restringir un servidor web

   Pendiente de traduccion

     --------------------------------------------------------------

16.15. Depuracion de errores en MAC

   Pendiente de traduccion

     --------------------------------------------------------------

             Capitulo 17. Auditoria de eventos de seguridad

   Escrito por Tom Rhodes y Robert Watson.

17.1. *

   Pendiente de traduccion.

     --------------------------------------------------------------

                      Capitulo 18. Almacenamiento

18.1. Sinopsis

   Este capitulo trata sobre el uso de discos en FreeBSD. Esto
   incluye discos basados en memoria, discos conectados a traves de
   la red, dispositivos de almacenamiento SCSI/IDE estandar y
   dispositivos que utilizan el interfaz USB.

   Tras leer este capitulo:

     * Conocera la terminologia que se usa en FreeBSD para describir
       la organizacion de datos en un disco fisico (particiones y
       porciones).

     * Sabra como anadir discos duros a su sistema.

     * Sabra como configurar FreeBSD para utilizar dispositivos de
       almacenamiento USB.

     * Sabra como configurar sistemas virtuales de ficheros, como los
       discos de memoria.

     * Sabra como usar cuotas para limitar el uso del espacio en
       disco.

     * Sabra como cifrar discos para hacerlos mas seguros ante un
       atacante.

     * Sabra como se crean y graban los CD y DVD en FreeBSD.

     * Conocera diversas opciones de almacenamiento de copias de
       seguridad.

     * Sabra como usar diversos programas de respaldo que pueden
       utilizarse en FreeBSD.

     * Sabra como hacer copias de seguridad utilizando disquetes
       (floppy).

     * Sabra en que consiste una instantanea ("snapshot") y como
       utilizarla de forma eficiente.

   Antes de leer este capitulo:

     * Debe saber como configurar e instalar un nuevo kernel en
       FreeBSD (Capitulo 8).

     --------------------------------------------------------------

18.2. Nombres de dispositivo

   A continuacion le mostraremos una lista de dispositivos de fisicos
   almacenamiento soportados por FreeBSD y los nombres de dispositivo
   asociados con ellos.

   Tabla 18-1. Convenciones para nombrar discos fisicos

        Tipo de unidad          Nombre de dispositivo de la unidad    
   Discos duros IDE          ad                                       
   Unidades CDROM IDE        acd                                      
   Discos duros SCSI y                                                
   dispositivos de           da
   almacenamiento masivo USB 
   Unidades CDROM SCSI       cd                                       
   Diferentes tipos de       mcd para CD-ROM Mitsumi, scd para CD-ROM 
   unidades CDROM no         Sony, matcd para CD-ROM                  
   estandares                Matsushita/Panasonic [a]                 
   Unidades de disquete      fd                                       
   (floppy)                  
   Unidades de cinta SCSI    sa                                       
   Unidades de cinta IDE     ast                                      
   Unidades Flash            fla para dispositivos DiskOnChip(R)      
                             aacd para Adaptec AdvancedRAID, mlxd y   
   Unidades RAID             mlyd para Mylex, amrd para AMI MegaRAID, 
                             idad para Compaq Smart RAID, twed para   
                             3ware(R) RAID.                           
   Notas de tabla:           
   a. El controlador matcd(4) ha sido eliminado de la rama
   FreeBSD 4.X el 5 de octubre de 2002 y no existe en FreeBSD 5.0 y
   versiones posteriores.    

     --------------------------------------------------------------

18.3. Anadir discos

   Texto original de David O'Brien.

   Digamos que queremos anadir un nuevo disco SCSI a una maquina que
   solo tiene un disco. Comience por apagar el sistema e instale el
   disco siguiendo las instrucciones del fabricante de la
   computadora, del disco y de la controladora. Debido a la gran
   variedad de procedimientos posibles los detalles estan mas alla
   del alcance de este texto.

   Entre como usuario root. Una vez instalado el disco inspeccione
   /var/run/dmesg.boot para asegurarse de que el sistema encontro el
   nuevo disco. Continuando con nuestro ejemplo, el disco recien
   anadido sera da1 y queremos montarlo en /1 (si esta anadiendo un
   disco IDE, el nombre de dispositivo sera wd1 en sistemas
   anteriores a 4.0, y ad1 en sistemas 4.X y 5.X).

   FreeBSD funciona en computadoras IBM-PC y compatibles, por lo
   tanto tendra en cuenta las particiones de la BIOS del PC, que son
   diferentes del tipo de particion que se ha venido usando en BSD.
   Un disco para PC puede contener hasta cuatro entradas de
   particiones BIOS. Si el disco va a utilizarse integramente con
   FreeBSD puede usar el modo dedicado. Si no, FreeBSD tendra que
   instalarse dentro de una las particiones BIOS. En FreeBSD se llama
   slices ("porciones" o "rebanadas") a las particiones de PC BIOS
   para no confundirlas con las particiones BSD. Tambien puede
   utilizar slices en un disco dedicado a FreeBSD pero que se esta
   usando en un sistema que tambien tiene otro sistema operativo
   instalado. Esta es una buena manera de evitar confundir la version
   de fdisk de otros sistemas operativos.

   Desde el punto de vista de las slices el disco se anadira como
   /dev/da1s1e. Se interpreta del siguiente modo: disco SCSI, unidad
   numero 1 (segundo disco SCSI), slice 1 (particion 1 de PC BIOS), y
   particion BSD e. Si es un disco dedicado, el disco se anadira como
   /dev/da1e.

   Debido al uso de enteros de 32-bits para almacenar el numero de
   sectores, bsdlabel(8) (llamado disklabel(8) en FreeBSD 4.X) esta
   limitado a 2^32-1 sectores por disco o 2TB (en la mayoria de los
   casos). El formato de fdisk(8) permite un sector de arranque de un
   maximo de mas de 2^32-1 y no mas de 2^32-1 de longitud, limitando
   las particiones a 2TB y los discos a 4TB (tambien en la mayoria de
   los casos). El formato sunlabel(8) tiene una limitacion de 2^32-1
   sectores por particion y 8 particiones en un espacio maximo de
   16TB. Si va a usar discos mayores puede usar particiones gpt(8).

     --------------------------------------------------------------

  18.3.1. Uso de sysinstall(8)

    1. Navegar en Sysinstall

       Puede utilizar sysinstall (/stand/sysinstall en versiones de
       FreeBSD anteriores a 5.2) para particionar y etiquetar un
       disco nuevo usando sus intuitivos menus. Entre como el usuario
       root o utilice su. Ejecute sysinstall y entre al menu
       Configure. Dentro de FreeBSD Configuration Menu, descienda y
       seleccione la opcion Fdisk.

    2. Editor de particiones fdisk

       Una vez dentro de fdisk, teclee A si quiere usar el disco
       entero con FreeBSD Cuando se le pregunte "remain cooperative
       with any future possible operating systems" [10], responda
       YES. Escriba los cambios al disco pulsando W. Salga del editor
       FDISK pulsando q. A continuacion se le preguntara sobre el
       "Master Boot Record". Debido a que esta anadiendo un nuevo
       disco a un sistema que ya esta instalado, tendra que
       seleccionar None.

    3. Editor de etiquetas de disco

       A continuacion, debe salir de sysinstall e iniciarlo de nuevo.
       Siga las instrucciones arriba expuestas, pero esta vez elija
       la opcion Label. De este modo accedera al editor de etiquetas
       de disco. En el creara las particiones BSD tradicionales. Un
       disco puede tener hasta ocho particiones, etiquetadas desde la
       a a la h. Algunas de las etiquetas de las particiones tienen
       usos especiales. La particion a se utiliza para la particion
       raiz (/), por lo tanto solo su disco de sistema (esto es, el
       disco desde el cual arranca) tendra una particion a. La
       particion b se usa como particion swap; puede tener mas de una
       particion swap y puede alojarlas en mas de un disco. La
       particion c hace referencia al disco entero en modo dedicado,
       o a la slice de FreeBSD completa en modo slice. Las demas
       particiones son para el resto de los usos tipicos.

       El editor de etiquetas de sysinstall creara la particion e
       como particion "ni raiz, ni swap". En el editor de etiquetas
       cree un solo sistema de ficheros tecleando C. Cuando se le
       pregunte si debe etiquetarse como FS (sistema de ficheros) o
       swap, elija FS y teclee un punto de montaje (por ejemplo
       /mnt). Al anadir un disco en modo "post-instalacion"
       sysinstall no creara automaticamente las entradas
       correspondientes en /etc/fstab, por lo que el punto de montaje
       que usted especifique no tiene importancia.

       Ahora puede escribir la nueva etiqueta al disco y crear un
       sistema de ficheros en el tecleando W. Ignore cualquier error
       que pudiera generar sysinstall acerca de dificultades para
       montar la nueva particion. Salga del editor de etiquetas y de
       sysinstall.

    4. Terminar

       El ultimo paso es editar /etc/fstab y anadir una entrada para
       su nuevo disco.

     --------------------------------------------------------------

  18.3.2. Uso de utilidades de linea de comandos

    18.3.2.1. Uso de slices

   Esta configuracion le permitira a su disco convivir sin
   sobresaltos con otro sistema operativo que pueda estar instalado
   en su sistema y no confundira a las utilidades fdisk de esos otros
   sistemas operativos. Se recomienda utilizar este metodo para
   instalar discos nuevos. Utilice el modo dedicado solamente si
   tiene un buen motivo para hacerlo.

 # dd if=/dev/zero of=/dev/da1 bs=1k count=1
 # fdisk -BI da1 #Initialice el nuevo disco.
 # disklabel -B -w -r da1s1 auto #Etiquetelo.
 # disklabel -e da1s1 # Edite la etiqueta de disco que acaba de crear y anada particiones. 
 # mkdir -p /1
 # newfs /dev/da1s1e # Repita este paso por cada particion que cree. 
 # mount /dev/da1s1e /1 # Monte la particion o particiones. 
 # vi /etc/fstab # Anada la/s entrada/s apropiadas en /etc/fstab.

   Si tiene un disco IDE, sustituya ad por da. En sistemas anteriores
   a 4.X utilice wd.

     --------------------------------------------------------------

    18.3.2.2. Dedicado

   Si no va a compartir el nuevo disco con otro sistema operativo
   puede utilizar el modo dedicado. Recuerde que este modo puede
   confundir a los sistemas operativos de Microsoft, aunque no podran
   danar por ello el disco o su contenido. Tenga en cuenta que
   FreeBSD (de IBM) se "apropiara" de cualquier particion que
   encuentre y no entienda.

 # dd if=/dev/zero of=/dev/da1 bs=1k count=1
 # disklabel -Brw da1 auto
 # disklabel -e da1                              # crear particion `e'
 # newfs -d0 /dev/da1e
 # mkdir -p /1
 # vi /etc/fstab                         # agregar una entrada para /dev/da1e
 # mount /1

   Una forma alternativa de hacerlo seria:

 # dd if=/dev/zero of=/dev/da1 count=2
 # disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin
 # newfs /dev/da1e
 # mkdir -p /1
 # vi /etc/fstab                                 # anadir una entrada para /dev/da1e
 # mount /1

     Nota: A partir de FreeBSD 5.1-RELEASE, la utilidad bsdlabel(8)
     reemplazo al antiguo programa disklabel(8). En bsdlabel(8) se
     han eliminado muchos parametros y opciones obsoletas; en los
     ejemplos de arriba la opcion -r debe eliminarse si se usa
     bsdlabel(8). Para mas informacion dirijase al manual de
     bsdlabel(8).

     --------------------------------------------------------------

18.4. RAID

  18.4.1. Software RAID

    18.4.1.1. Configuracion de controlador de disco concatenado (CCD)

   Texto original de Christopher Shumway. Revisado por Jim Brown.

   Al escoger una solucion de almacenamiento masivo los factores mas
   importantes a considerar son velocidad, fiabilidad y coste. Es
   raro tener los tres por igual; normalmente un dispositivo de
   almacenamiento masivo veloz y fiable es caro, y para recortar los
   costes suele sacrificarse la velocidad o la fiabilidad.

   Al disenar el sistema descrito mas adelante se eligio el coste
   como el factor mas importante, seguido de la velocidad, y luego la
   fiabilidad. La velocidad de transferencia de datos para este
   sistema esta, en ultima instancia, limitada por la red. Y mientras
   que la confiabilidad es muy importante, el controlador CCD
   descrito mas adelante sirve datos que estan respaldados en CD-R y
   pueden ser reemplazados sin dificultad.

   Al escoger una solucion de almacenamiento masivo el primer paso es
   definir sus necesidades. Si prefiere velocidad o fiabilidad por
   encima del coste, el resultado sera distinto del que vamos a
   describir en esta seccion.

     --------------------------------------------------------------

      18.4.1.1.1. Instalacion del hardware

   Ademas del disco IDE, el nucleo del disco CCD esta compuesto por
   tres discos IDE discos IDE Western Digital de 30GB y 5400 RPM, que
   ofrecen aproximadamente 90GB de almacenamiento. Lo ideal seria que
   cada disco IDE tuviera su propio cable y controlador, pero para
   minimizar costes no se utilizaron controladores IDE adicionales.
   En lugar de eso se configuraron los discos con "jumpers" para que
   cada controlador IDE tuviera un maestro y un esclavo.

   Despues de reiniciar la BIOS se configuro para que detectara
   automaticamente los discos conectados. FreeBSD los detecto al
   reiniciar:

 ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33
 ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33
 ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33
 ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33

     Nota: Si FreeBSD no detecta todos los discos asegurese de que ha
     colocado correctamente los "jumpers". La mayoria de los discos
     IDE tienen un "jumper" "Cable Select". Este no es el "jumper"
     que define la relacion maestro/esclavo. Consulte la
     documentacion del disco para identificar el "jumper" correcto.

   El siguiente paso es estudiar como conectarlos para que formen
   parte del sistema de ficheros. Investigue Debe investigar vinum(8)
   (Capitulo 20) y ccd(4). Nosotros elegimos ccd(4) para nuestra
   configuracion.

     --------------------------------------------------------------

      18.4.1.1.2. Configuracion de CCD

   El controlador ccd(4) le permite tomar varios discos identicos y
   concatenarlos en un solo sistema logico de ficheros. Para poder
   usar ccd(4) necesita un kernel compilado con soporte de ccd(4).
   Anada esta linea al fichero de configuracion de su kernel,
   recompile y reinstale su kernel:

 pseudo-device   ccd     4

   En sistemas 5.X, use la siguiente linea:

 device   ccd

     Nota: En FreeBSD 5.X no es necesario especificar un numero de
     dispositivos ccd(4), ya que el controlador de dispositivo ccd(4)
     es capaz de clonarse a si mismo (se crearan nuevas instancias de
     dispositivo automaticamente segun vayan haciendo falta).

   El soporte de ccd(4) tambien puede cargarse como modulo en FreeBSD
   3.0 y posteriores.

   Para configurar ccd(4) tendra que usar disklabel(8) para etiquetar
   los discos:

 disklabel -r -w ad1 auto
 disklabel -r -w ad2 auto
 disklabel -r -w ad3 auto

   Esto crea una etiqueta de disco para ad1c, ad2c y ad3c que abarcan
   el disco completo.

     Nota: A partir de FreeBSD 5.1-RELEASE bsdlabel(8) reemplazo al
     antiguo programa disklabel(8). En bsdlabel(8) se eliminaron
     muchas opciones y parametros obsoletos; en los ejemplos de
     arriba la opcion -r deben obviarse. Para mas informacion
     consulte bsdlabel(8).

   El siguiente paso es cambiar el tipo de etiqueta de disco. Edite
   los discos con disklabel(8):

 disklabel -e ad1
 disklabel -e ad2
 disklabel -e ad3

   Esto abre la etiqueta de disco de cada disco con el editor
   declarado en la variable de entorno EDITOR, por defecto vi(1).

   Esta es una etiqueta de disco sin modificar:

 8 partitions:
 #        size   offset    fstype   [fsize bsize bps/cpg]
   c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)

   ccd(4) necesita que anada una nueva particion e. Puede copiarla
   desde la particion c, pero el tipo de sistema de ficheros (la
   opcion fstype) debe ser 4.2BSD. La etiqueta del disco deberia
   tener este aspecto:

 8 partitions:
 #        size   offset    fstype   [fsize bsize bps/cpg]
   c: 60074784        0    unused        0     0     0   # (Cyl.    0 - 59597)
   e: 60074784        0    4.2BSD        0     0     0   # (Cyl.    0 - 59597)

     --------------------------------------------------------------

      18.4.1.1.3. Contruccion del sistema de ficheros

   Puede que todavia no exista el nodo de dispositivo para ccd0c. Si
   es asi, ejecute lo siguiente:

 cd /dev
 sh MAKEDEV ccd0

     Nota: En FreeBSD 5.0 devfs(5) administrara automaticamente los
     nodos de dispositivos en /dev, asi que no tendra que usar
     MAKEDEV.

   Una vez etiquetados todos los discos construya el ccd(4). Utilice
   ccdconfig(8) con opciones similares a las siguientes:

 ccdconfig ccd0(1) 32(2) 0(3) /dev/ad1e(4) /dev/ad2e /dev/ad3e

   El uso y el significado de cada una de las opciones se muestra mas
   abajo:

   (1)
           El primer argumento es el dispositivo a configurar, en
           este caso /dev/ccd0c. La parte /dev/ es opcional.
   (2)
           El intervalo para el sistema de ficheros. El intervalo
           define el tamano de una banda en bloques de disco,
           normalmente 512 bytes. Por lo tanto, un intervalo de 32
           equivaldria 16.384 bytes.
   (3)
           Banderas para ccdconfig(8). Si desea disponer sus discos
           en espejo use aqui una bandera. Esta configuracion no
           necesita discos en espejo, por lo que esta dispuesta a 0
           (cero).
   (4)
           Los ultimos argumentos de ccdconfig(8) son los
           dispositivos a colocar en el array. Utilice la ruta
           completa para cada dispositivo.

   Despues de ejecutar ccdconfig(8) el ccd(4) estara configurado y
   podra instalar un sistema de ficheros. Consulte las opciones de
   newfs(8) y ejecute:

 newfs /dev/ccd0c

     --------------------------------------------------------------

      18.4.1.1.4. Automatizacion

   Seguramente querra que ccd(4) este dispuesto tras cada reinicio.
   Para ello, debe configurarlo. Guarde su configuracion en
   /etc/ccd.conf mediante lo siguiente:

 ccdconfig -g > /etc/ccd.conf

   Durante el reinicio, el "script" /etc/rc ejecuta ccdconfig -C si
   encuentra el fichero /etc/ccd.conf. De este modo ccd(4) queda
   configurado automaticamente para que pueda montarse.

     Nota: Si ha arrancando en modo mono usuario necesita ejecutar el
     siguiente comando antes de que pueda montar el ccd(4) para
     configurar el array:

 ccdconfig -C

   Para montar automaticamente el ccd(4) coloque una entrada para
   ccd(4) en /etc/fstab para que se monte durante el arranque:

 /dev/ccd0c              /media       ufs     rw      2       2

     --------------------------------------------------------------

    18.4.1.2. El administrador de volumenes Vinum

   El administrador de volumenes Vinum es un controlador de
   dispositivos de bloque que implementa unidades de disco virtuales.
   Aisla los discos hardware de la interfaz de dispositivos de bloque
   y mapea datos de modo que revierta en un incremento de
   flexibilidad, rendimiento y fiabilidad comparados con el sistema
   de slices de almacenamiento de disco tradicional. vinum(8)
   implementa los modelos RAID-0, RAID-1 y RAID-5, individualmente o
   combinados.

   Consulte el Capitulo 20 para mayor informacion sobre vinum(8).

     --------------------------------------------------------------

  18.4.2. RAID por Hardware

   FreeBSD admite una gran variedad de controladores RAID por
   hardware. Estos dispositivos controlan un subsistema RAID sin
   necesidad de software especifico para FreeBSD que administre el
   array.

   Puede controlar la mayoria de las operaciones de disco con una
   tarjeta que incorpore BIOS. El siguiente texto es una breve
   descripcion de configuracion utilizando una controladora Promise
   RAID IDE. Cuando se instala esta tarjeta e inicia el sistema
   despliega un "prompt" pidiendo informacion. Siga las instrucciones
   para entrar a la pantalla de configuracion de la tarjeta. Ahi
   tendra posibilidad de combinar todos los discos que haya
   conectado. Hecho esto el disco (o discos) apareceran como una sola
   unidad en FreeBSD. Pueden configurarse otros niveles de RAID.

     --------------------------------------------------------------

  18.4.3. Reconstruccion de arrays ATA RAID1

   FreeBSD le permite reemplazar en caliente un disco danado. Esto
   requiere que lo intercepte antes de reiniciar.

   Probablemente vea algo como lo siguiente en /var/log/messages o en
   la salida de dmesg(8):

 ad6 on monster1 suffered a hard error.
 ad6: READ command timeout tag=0 serv=0 - resetting
 ad6: trying fallback to PIO mode
 ata3: resetting devices .. done
 ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11)\\
 status=59 error=40
 ar0: WARNING - mirror lost

   Consulte atacontrol(8) para mas informacion:

 # atacontrol list
 ATA channel 0:
         Master:      no device present
         Slave:   acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0

 ATA channel 1:
         Master:      no device present
         Slave:       no device present

 ATA channel 2:
         Master:  ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
         Slave:       no device present

 ATA channel 3:
         Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
         Slave:       no device present

 # atacontrol status ar0
 ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED

    1. Primero debe desconectar el disco del array para que pueda
       retirarlo con seguridad:

 # atacontrol detach 3

    2. Reemplace el disco.

    3. Conecte el disco de repuesto:

 # atacontrol attach 3
 Master:  ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5
 Slave:   no device present

    4. Reconstruya el array:

 # atacontrol rebuild ar0

    5. El comando de reconstruccion no respondera hasta que termine
       la tarea. Puede abrir otra terminal (mediante Alt+Fn) y
       revisar el progreso ejecutando lo siguiente:

 # dmesg | tail -10
 [texto eliminado]
 ad6: removed from configuration
 ad6: deleted from ar0 disk1
 ad6: inserted into ar0 disk1 as spare

 # atacontrol status ar0
 ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed

    6. Espere hasta que termine la operacion.

     --------------------------------------------------------------

18.5. Dispositivos de almacenamiento USB

   Texto de Marc Fonvieille.

   Hoy dia hay una enorme cantidad de soluciones de almacenamiento
   externoque usan el bus serie universal (USB): discos duros,
   "mecheros" (o "lapices") USB, grabadoras de CD-R, etc. FreeBSD
   puede usar estos dispositivos.

     --------------------------------------------------------------

  18.5.1. Configuracion

   El controlador de dispositivos de almacenamiento masivo USB,
   umass(4), ofrece soporte para dispositivos de almacenamiento USB.
   Si usa el kernel GENERIC no necesita cambiar nada en su
   configuracion. Si utiliza un kernel personalizado asegurese de que
   su fichero de configuracion del kernel contiene las siguientes
   lineas:

 device scbus
 device da
 device pass
 device uhci
 device ohci
 device usb
 device umass

   El controlador umass(4) usa el subsistema SCSI para acceder a los
   dispositivos de almacenamiento USB y su dispositivo USB aparecera
   en el sistema como dispositivo SCSI. Dependiendo del chipset USB
   de su placa base solamente necesitara device uhci o device ohci;
   en cualquier caso tener los dos en el fichero de configuracion del
   kernel no provocara ningun dano. No olvide compilar e instalar el
   nuevo kernel si hizo alguna modificacion.

     Nota: Si su dispositivo USB es una grabadora CD-R o DVD el
     controlador SCSI CD-ROM, cd(4), debe ser anadirse al kernel
     mediante la siguiente linea:

 device cd

     Dado que la grabadora aparece como una unidad SCSI no tiene que
     usar el controlador atapicam(4) en la configuracion del kernel.

   En FreeBSD 5.X y en la rama 4.X desde FreeBSD 4.10-RELEASE el
   soporte para controladores USB 2.0 se incorpora al sistema del
   siguiente modo:

 device ehci

   Tenga en cuenta que uhci(4) y ohci(4) siguen siendo necesarios si
   quiere disponer de soporte para USB 1.X.

     Nota: En FreeBSD 4.X, El daemon USB (usbd(8)) debe ejecutarse
     para poder ver ciertos tipos de dispositivo USB. Para
     habilitarlo, anada usbd_enable="YES" en /etc/rc.conf y reinicie
     la maquina.

     --------------------------------------------------------------

  18.5.2. Prueba de la configuracion

   La configuracion esta lista para probarse: conecte su dispositivo
   USB; en el bufer de mensajes del sistema (dmesg(8)), la unidad
   debe aparecer como algo similar a esto:

 umass0: USB Solid state disk, rev 1.10/1.00, addr 2
 GEOM: create disk da0 dp=0xc2d74850
 da0 at umass-sim0 bus 0 target 0 lun 0
 da0: <Generic Traveling Disk 1.11> Removable Direct Access SCSI-2 device
 da0: 1.000MB/s transfers
 da0: 126MB (258048 512 byte sectors: 64H 32S/T 126C)

   Obviamente la marca, el nodo de dispositivo (da0) y otros detalles
   pueden diferir dependiendo de su hardware.

   Ya que el dispositivo USB aparece como uno SCSI, puede usar
   camcontrol para ver una lista de dispositivos USB conectados al
   sistema:

 # camcontrol devlist
 <Generic Traveling Disk 1.11>      at scbus0 target 0 lun 0 (da0,pass0)

   Si la unidad tiene un sistema de ficheros puede montarla. La
   Seccion 18.3 contiene informacion que le resultara muy util para
   formatear y crear particiones en el disco USB en caso de
   necesitarlo.

   Si desconecta el dispositivo (el disco debe desmontarse
   previamente), deberia ver en el bufer de mensajes del sistema algo
   parecido a esto:

 umass0: at uhub0 port 1 (addr 2) disconnected
 (da0:umass-sim0:0:0:0): lost device
 (da0:umass-sim0:0:0:0): removing device entry
 GEOM: destroy disk da0 dp=0xc2d74850
 umass0: detached

     --------------------------------------------------------------

  18.5.3. Lecturas recomendadas

   Ademas de las secciones Como anadir discos y Montado y desmontado
   de sistemas ficheros, consulte las siguientes paginas man:
   umass(4), camcontrol(8) y usbdevs(8).

     --------------------------------------------------------------

18.6. Creacion y uso de medios opticos (CD)

   Texto de Mike Meyer.

     --------------------------------------------------------------

  18.6.1. Introduccion

   Los CD tienen muchas opciones que los hacen distintos de los
   discos convencionales. Al principio los usuarios no podian
   escribirlos. Su diseno permite que leamos en ellos sin el retardo
   del movimiento de una cabeza lectora de una pista a otra. Tambien
   son mucho mas faciles de transportar de un sistema a otro que
   muchos otros soportes de informacion.

   Los CD tienen pistas, pero son una seccion de los que permiten
   lectura continua, no una propiedad fisica del disco. Para crear un
   CD en FreeBSD debe preparar los ficheros de datos que van a
   constituir las pistas del CD y luego escribir las pistas al CD.

   El sistema de ficheros ISO 9660 se diseno para gestionar estas
   diferencias. Por desgracia implementa limites de sistema de
   ficheros que eran comunes en la epoca en que se diseno. Por suerte
   tambien proporciona un mecanismo de extensiones que permite que CD
   escritos excediendo dichos limites funcionen en sistemas que no
   soportan esas extensiones.

   El port sysutils/cdrtools incluye mkisofs(8), un programa que le
   permitira crear un fichero de datos que contenga un sistema de
   ficheros ISO 9660. Incorpora opciones que soportan varias
   extensiones. Se describe mas adelante.

   Que herramienta usar para grabar el CD depende de si su grabadora
   es ATAPI o no. Las grabadoras de CD ATAPI usan el programa burncd,
   que forma parte del sistema base. Las grabadoras SCSI y USB usan
   cdrecord, del port sysutils/cdrtools.

   burncd no soporta cualquier unidad de grabacion. Para saber si una
   unidad esta soportada consulte la siguiente lista de unidades
   CD-R/RW soportadas.

     Nota: Si utiliza FreeBSD 5.X, FreeBSD 4.8-RELEASE o posteriores,
     puede utilizar cdrecord y otras herramientas para unidades SCSI
     en hardware ATAPI con el modulo ATAPI/CAM.

   Si quiere usar un interfaz grafico con su software de grabacion de
   CD quizas le guste X-CD-Roast o K3b. Puede instalar estas
   herramientas como paquetes o desde los ports sysutils/xcdroast y
   sysutils/k3b, respectivamente. X-CD-Roast y K3b requieren el
   modulo ATAPI/CAM si usa hardware ATAPI.

     --------------------------------------------------------------

  18.6.2. mkisofs

   El programa mkisofs(8) (que forma parte del port
   sysutils/cdrtools) genera un sistema de ficheros ISO 9660 que es
   una imagen de un arbol de directorios en el espacio de nombres del
   sistema de ficheros UNIX. Esta es la forma mas simple de usarlo:

 # mkisofs -o ficherodeimagen.iso /ruta/del/arbol

   Este comando creara un ficherodeimagen.iso que contenga un sistema
   de ficheros ISO 9660 que es una copia del arbol ubicado en
   /ruta/al/arbol. En el proceso, mapeara los nombres de fichero a
   nombres que se ajusten a las limitaciones del estandar del sistema
   de ficheros ISO 9660, y excluira ficheros que posean nombres no
   caracteristicos de sistemas de ficheros ISO.

   Existe gran cantidad de opciones que permiten superar esas
   restricciones. En particular, -R habilita las extensiones Rock
   Ridge comunes para sistemas UNIX, -J habilita las extensiones
   Joliet usadas por sistemas Microsoft y -hfs puede usarse para
   crear sistemas de ficheros utilizados por Mac OS.

   Puede utilizar -U para deshabilitar todas las restricciones de
   nombres de fichero si quiere crear un CD que se vaya a usar
   exclusivamente en sistemas FreeBSD. Cuando se usa con -R produce
   una imagen de sistema de ficheros que es identica al arbol FreeBSD
   origen, aunque puede violar el estandar ISO 9660 de multiples
   formas.

   La ultima opcion de uso general es -b. Se usa para configurar la
   ubicacion de la imagen de arranque que se usara al crear un CD
   arrancable "El Torito". Esta opcion usa como argumento la ruta a
   la imagen de arranque desde la raiz del arbol de directorios que
   se va a escribir en el CD. Por defecto mkisofs(8) crea una imagen
   ISO en un modo llamado "de emulacion de disquete (floppy)", y por
   lo tanto espera que la imagen de arranque sea exactamente de
   1.200, 1.440 o 2880 KB de tamano. Algunos cargadores de arranque,
   como el que se usa en los discos de la distribucion FreeBSD, no
   utilizan modo de emulacion: se usa la opcion -no-emul-boot. Por
   tanto, si /tmp/miarranque tiene un sistema FreeBSD arrancable con
   la imagen de arranque en /tmp/miarranque/boot/cdboot podria crear
   la imagen en un sistema de ficheros ISO 9660 en
   /tmp/arrancable.iso de la siguiente manera:

 # mkisofs -R -no-emul-boot -b boot/cdboot -o /tmp/arrancable.iso /tmp/miarranque

   Hecho esto, si tiene vn (FreeBSD 4.X), o md (FreeBSD 5.X)
   configurado en su kernel, puede montar el sistema de ficheros del
   siguiente modo:

 # vnconfig -e vn0c /tmp/arrancable.iso
 # mount -t cd9660 /dev/vn0c /mnt

   En FreeBSD 4.X y FreeBSD 5.X proceda del siguiente modo:

 # mdconfig -a -t vnode -f /tmp/arrancable.iso -u 0
 # mount -t cd9660 /dev/md0 /mnt

   Ahora puede verificar que /mnt y /tmp/miarranque sean identicos.

   Existen muchas otras opciones que puede usar para depurar el
   comportamiento de mkisofs(8), sobre todo en lo que se refiere al
   esquema ISO 9660 y la creacion de discos Joliet y HFS. Consulte el
   manual de mkisofs(8).

     --------------------------------------------------------------

  18.6.3. burncd

   Si tiene una grabadora ATAPI puede usar burncd para grabar una
   imagen ISO en un CD. burncd forma parte del sistema base, y esta
   en /usr/sbin/burncd. Su uso es muy sencillo, ya que tiene pocas
   opciones:

 # burncd -f unidaddecd data ficheroimagen.iso fixate

   Esto grabara una copia de ficheroimagen.iso en unidadcd. El
   dispositivo por defecto es /dev/acd0 (o /dev/acd0c en
   FreeBSD 4.X). Consulte burncd(8) para ver las opciones de
   configuracion de velocidad de escritura, expulsion de CD una vez
   grabado, y escritura de datos de audio.

     --------------------------------------------------------------

  18.6.4. cdrecord

   Si no dispone de una grabadora ATAPI de CD, tendra que usar
   cdrecord para grabar sus CD. cdrecord no forma parte del sistema
   base; instalelo desde el port sysutils/cdrtools o como paquete.
   Los cambios en el sistema base pueden hacer que las versiones
   binarias del programa fallen. Tendra que actualizar el port cuando
   actualice su sistema o, si esta siguiendo la rama -STABLE,
   actualizar el port cuando haya una nueva version disponible.

   Aunque cdrecord tiene muchas opciones, el uso basico es incluso
   mas simple que el de burncd. Asi se graba una imagen ISO 9660:

 # cdrecord dev=dispositivo ficheroimagen.iso

   La parte complicada de utilizar cdrecord es encontrar que dev
   usar. Utilice la bandera -scanbus para dar con la configuracion
   apropiada. La salida sera parecida a la siguiente:

 # cdrecord -scanbus
 Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jo:rg Schilling
 Using libscg version 'schily-0.1'
 scsibus0:
         0,0,0     0) 'SEAGATE ' 'ST39236LW       ' '0004' Disk
         0,1,0     1) 'SEAGATE ' 'ST39173W        ' '5958' Disk
         0,2,0     2) *
         0,3,0     3) 'iomega  ' 'jaz 1GB         ' 'J.86' Removable Disk
         0,4,0     4) 'NEC     ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM
         0,5,0     5) *
         0,6,0     6) *
         0,7,0     7) *
 scsibus1:
         1,0,0   100) *
         1,1,0   101) *
         1,2,0   102) *
         1,3,0   103) *
         1,4,0   104) *
         1,5,0   105) 'YAMAHA  ' 'CRW4260         ' '1.0q' Removable CD-ROM
         1,6,0   106) 'ARTEC   ' 'AM12S           ' '1.06' Scanner
         1,7,0   107) *

   Esta lista muestra los valores dev apropiados para los
   dispositivos de la lista. Localice su grabadora de CD y utilice
   los tres numeros separados por comas como valor para dev. En este
   caso, el dispositivo CDW es 1,5,0 y por tanto la entrada apropiada
   seria dev=1,5,0. Hay modos mas faciles de especificar este valor;
   consulte cdrecord(1) para mas detalles. Tambien es el lugar donde
   buscar informacion sobre la escritura de pistas de audio,
   controlar la velocidad de escritura y muchas mas cosas.

     --------------------------------------------------------------

  18.6.5. Copiar CD de audio

   Puede duplicar un CD de audio extrayendo los datos de audio del CD
   a ficheros y escribir estos ficheros en un CD virgen. El proceso
   es ligeramente diferente en unidades ATAPI y SCSI.

   Unidades SCSI

    1. Use cdda2wav para extraer el audio.

 % cdda2wav -v255 -D2,0 -B -Owav

    2. Use cdrecord para escribir los ficheros .wav.

 % cdrecord -v dev=2,0 -dao -useinfo  *.wav

       Asegurese de que 2,0 este configurado apropiadamente, como se
       describe en la Seccion 18.6.4.

   Unidades ATAPI

    1. El controlador de CD ATAPI hace que cada pista sea accesible
       como /dev/acddtnn, donde d es el numero de unidad y nn es el
       numero de pista expresado con dos digitos decimales, precedido
       por un cero si es necesario. La primera pista del primer disco
       es /dev/acd0t01, la segunda es /dev/acd0t02, la tercera es
       /dev/acd0t03 y asi sucesivamente.

       Asegurese de que existen los ficheros apropiados en /dev.

 # cd /dev
 # sh MAKEDEV acd0t99

         Nota: En FreeBSD 5.0 devfs(5) creara y gestionara
         automaticamente las entradas necesarias en /dev, asi que no
         sera necesario usar MAKEDEV.

    2. Extraer cada pista con dd(1). Tambien debera declarar un
       tamano especifico de bloque al extraer los ficheros.

 # dd if=/dev/acd0t01 of=pista1.cdr bs=2352
 # dd if=/dev/acd0t02 of=pista2.cdr bs=2352
 ...

    3. Grabar los ficheros extraidos a disco con burncd. Debe
       declarar que son ficheros de audio y que burncd debe cerrar
       ("fixate") el disco al terminar la grabacion.

 # burncd -f /dev/acd0 audio pista1.cdr pista2.cdr ... fixate

     --------------------------------------------------------------

  18.6.6. Duplicar CDs de datos

   Puede copiar un CD de datos a un fichero de imagen que sera
   funcionalmente equivalente al fichero de imagen creado con
   mkisofs(8), y puede usarlo para duplicar cualquier CD de datos. El
   ejemplo dado aqui asume que su dispositivo CDROM es acd0.
   Sustituyalo por el dispositivo CDROM correcto para su
   configuracion. Bajo FreeBSD 4.X, se debe anadir una c al final del
   nombre del dispositivo para indicar la particion entera o, en el
   caso de los CDROM, el disco entero.

 # dd if=/dev/acd0 of=fichero.iso bs=2048

   Hecha la imagen puede garbarla en un CD como se describio
   anteriormente.

     --------------------------------------------------------------

  18.6.7. Uso de CD de datos

   Ahora que ha creado un CDROM de datos estandar tal vez quiera
   montarlo y leer los datos que contiene. Por defecto mount(8) asume
   que los sistemas de ficheros son de tipo ufs. Si trata de hacer
   algo como

 # mount /dev/cd0 /mnt

   recibira un error como este: "Incorrect super block" y no se
   montara. Un CDROM no es un sistema de ficheros UFS asi que los
   intentos de montarlo como tal fallaran. Tendra que decirle a
   mount(8) que el sistema de ficheros es de tipo ISO9660 y
   funcionara. Puede hacerlo mediante la opcion -t cd9660. Por
   ejemplo, si quiere montar el dispositivo CDROM /dev/cd0 en /mnt
   ejecute:

 # mount -t cd9660 /dev/cd0 /mnt

   Tenga en cuenta que el nombre de su dispositivo (/dev/cd0 en este
   ejemplo) puede ser diferente, dependiendo de la interfaz que su
   CDROM utilice. Ademas la opcion -t cd9660 solo ejecuta
   mount_cd9660(8). El ejemplo de arriba puede resumirse del
   siguiente modo:

 # mount_cd9660 /dev/cd0 /mnt

   En general puede usar CDROM de datos de cualquier fabricante,
   aunque los discos con ciertas extensiones ISO 9660 pueden mostrar
   un comportamiento extrano. Por ejemplo, los discos Joliet
   almacenan todos los nombres de fichero en caracteres unicode de
   dos-bytes. El kernel de FreeBSD no comprende unicode (todavia) asi
   que los caracteres que no estan en ingles aparecen como signos de
   interrogacion. (Si utiliza FreeBSD 4.3 o alguna version posterior,
   el controlador CD9660 incluye unas estructuras llamadas "ganchos",
   que le permitiran cargar una tabla de conversion unicode apropiada
   cuando haga falta. Hay modulos para algunas de las codificaciones
   mas comunes en el port sysutils/cd9660_unicode.)

   Es posible que reciba un error "Device not configured" al tratar
   de montar un CDROM. Generalmente esto significa que la unidad de
   CDROM piensa que no hay disco en la bandeja, o que la unidad no es
   visible en el bus. Puede llevar un par de segundos el que una
   unidad de CDROM se de cuenta de que ha sido alimentada, por lo
   tanto sea paciente.

   Algunas veces un CDROM SCSI puede "perdido" debido a que no tuvo
   tiempo suficiente para responder al reset del bus. Si tiene un
   CDROM SCSI anada la siguiente opcion a su fichero de configuracion
   del kernel y recompile su kernel.

 options SCSI_DELAY=15000

   Esto le indica a su bus SCSI que haga una pausa de 15 segundos
   durante el arranque para darle ocasion a su unidad de CDROM de
   responder al reset del bus.

     --------------------------------------------------------------

  18.6.8. Grabar CD de datos "crudos" (Raw)

   Puede guardar un fichero directamente a CD sin crear un sistema de
   ficheros ISO 9660. Algunas personas hacen esto al crear respaldos.
   Es un proceso mas rapido que grabar un CD estandar:

 # burncd -f /dev/acd1 -s 12 data fichero.tar.gz fixate

   Para recuperar los datos guardardados de este modo en un CD, debe
   leer los datos desde el nodo de dispositivo "crudo":

 # tar xzvf /dev/acd1

   No puede montar este disco como lo haria con un CDROM normal.
   Estos CDROM no pueden leerse en ningun sistema operativo que no
   sea FreeBSD. Si quiere montar el CD o compartir los datos con otro
   sistema operativo debe utilizar mkisofs(8) como se describio
   previamente.

     --------------------------------------------------------------

  18.6.9. Uso del controlador ATAPI/CAM

   Original de Marc Fonvieille.

   Este controlador permite que dispositivos ATAPI (CD-ROM, CD-RW,
   unidades DVD, etc) sean accesibles a traves del subsistema SCSI y
   por lo tanto permite el uso de aplicaciones como sysutils/cdrdao o
   cdrecord(1).

   Para usar este controlador necesitara anadir la siguiente linea al
   fichero de configuracion de su kernel:

 device atapicam

   Es posible que necesite tambien las siguientes lineas en el
   fichero de configuracion de su kernel:

 device ata
 device scbus
 device cd
 device pass

   (que, por otra parte, ya deberin estar presentes).

   Recompile, instale su nuevo kernel y reinicie su maquina. Durante
   el proceso de arranque su grabadora debe ser detectada; veamos un
   ejemplo:

 acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4
 cd0 at ata1 bus 0 target 0 lun 0
 cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device
 cd0: 16.000MB/s transfers
 cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed

   Puede acceder a la unidad a traves del del nombre de dispositivo
   /dev/cd0; por ejemplo, para montar un CDROM en /mnt, teclee lo
   siguiente:

 # mount -t cd9660 /dev/cd0 /mnt

   Como root, puede ejecutar el siguiente comando para obtener las
   direcciones SCSI del dispositivo:

 # camcontrol devlist
 <MATSHITA CDRW/DVD UJDA740 1.00>   at scbus1 target 0 lun 0 (pass0,cd0)

   Segun esto, 1,0,0 sera la direccion SCSI a utilizar con
   cdrecord(1) y otras aplicaciones SCSI.

   Para mayor informacion sobre sistemas ATAPI/CAM y SCSI, dirijase a
   las paginas de manual atapicam(4) y cam(4).

     --------------------------------------------------------------

18.7. Crear y utilizar medios opticos (DVDs)

   Texto de Marc Fonvieille. Con colaboraciones de Andy Polyakov.

     --------------------------------------------------------------

  18.7.1. Introduccion

   Comparado con el CD, el DVD es la nueva generacion de tecnologia
   de almacenamiento en medios opticos. El DVD puede almacenar mas
   datos que cualquier CD y hoy dia es el estandar para publicacion
   de video.

   Se pueden definir cinco formatos de grabacion para lo que llamamos
   un DVD grabable:

     * DVD-R: Este fue el primer formato de grabacion de DVD. El
       DVD-R estandar fue definido por el DVD Forum. Este formato es
       de una sola escritura.

     * DVD-RW: Esta es la version reescribible del DVD-R estandar. Un
       DVD-RW puede reescribirse unas 1.000 veces.

     * DVD-RAM: Este es tambien un formato reescribible soportado por
       el DVD Forum. Un DVD-RAM puede verse como un disco duro
       extraible. Este medio no es compatible con la mayoria de las
       unidades DVD-ROM y reproductores de video DVD; hay muy pocas
       grabadoras de DVD que soporten el formato DVD-RAM.

     * DVD+RW: Este es un formato reescribible definido por la DVD+RW
       Alliance. Un DVD+RW puede reescribirse unas 1000 veces.

     * DVD+R: Este un formato es la version de una sola escritura del
       formato DVD+RW.

   Un DVD grabable de una capa puede almacenar hasta
   4.700.000.000 bytes, es decir, 4'38 GB o 4485 MB (1 kilobyte son
   1.024 bytes).

     Nota: Debemos hacer una distincion entre medio fisico y
     aplicacion. Un DVD de video es una estructura de fichero
     especifica que puede escribirse en cualquier medio fisico
     consistente en un DVD grabable: DVD-R, DVD+R, DVD-RW, etc. Antes
     de elegir el tipo de medio, debe asegurarse que la grabadora y
     el reproductor de DVD de video (un reproductor independiente o
     una unidad DVD-ROM en una computadora) son compatibles con el
     medio que pretende utilizar.

     --------------------------------------------------------------

  18.7.2. Configuracion

   Utilice growisofs(1) para grabar el DVD. Forma parte de las
   herramientas dvd+rw-tools (sysutils/dvd+rw-tools). Las
   dvd+rw-tools permiten usar todos los tipos de DVD.

   Estas herramientas utilizan el subsistema SCSI para acceder a los
   dispositivos, por lo tanto el soporte ATAPI/CAM debe estar
   presente en su kernel. Si su grabadora usa el interfaz USB no
   tendra que hacerlo, pero tendra que leer la Seccion 18.5 para mas
   informacion sobre la configuracion de dispositivos USB.

   Tambien debe que habilitar el acceso DMA para dispositivos ATAPI.
   Para ello anada la siguiente linea a /boot/loader.conf:

 hw.ata.atapi_dma="1"

   Antes de intentar utilizar dvd+rw-tools debe consultar las notas
   de compatibilidad de hardware de dvd+rw-tools por si apareciera
   cualquier informacion relacionada con su grabadora de DVD.

     Nota: Si desea un interfaz grafico deberia echar un vistazo a
     K3b (sysutils/k3b), que ofrece un interfaz de usuario amigable
     para growisofs(1) y muchas otras herramientas de grabacion.

     --------------------------------------------------------------

  18.7.3. Quemado de DVD de datos

   growisofs(1) es un "frontend" de mkisofs, invocara a mkisofs(8)
   para crear una estructura de sistema de ficheros y realizara la
   escritura del DVD. Esto significa que no necesita crear una imagen
   de los datos antes del proceso de escritura.

   La grabacion en DVD+R o DVD-R de los datos del directorio
   /ruta/a/los/datos, se hace del siguiente modo:

 # growisofs -dvd-compat -Z /dev/cd0 -J -R /ruta/a/los/datos

   Las opciones -J -R se suministran a mkisofs(8) para la creacion
   del sistema de ficheros (en este caso: un sistema de ficheros ISO
   9660 con extensiones Joliet y Rock Ridge). Consulte la pagina de
   manual mkisofs(8) para mas detalles.

   La opcion -Z se usa la sesion inicial de grabacion en todos los
   casos, sesiones multiples o no. El dispositivo DVD del ejemplo,
   /dev/cd0, debe ajustarse de acuerdo a la configuracion de su
   sistema. El paramero -dvd-compat cerrar' el disco (no se podra
   anadir nada a la grabacion). Por contra, esto le brindara una
   mejor compatibilidad del medio con unidades DVD-ROM.

   Tambien es posible grabar una imagen pre-masterizada, por ejemplo
   para guardar la imagen ficheroimagen.iso:

 # growisofs -dvd-compat -Z /dev/cd0=ficheroimagen.iso

   La velocidad de escritura se detecta y configura automaticamente
   segun el medio y la unidad que se este utilizando. Si quiere
   forzar la velocidad de escritura utilice el parametro -speed=.
   Para mas informacion consulte la pagina de manual growisofs(1).

     --------------------------------------------------------------

  18.7.4. Grabacion de un DVD de video

   Un DVD de video es una estructura de ficheros especifica basada en
   las especificiones ISO 9660 y micro-UDF (M-UDF). El DVD de video
   tambien dispone de una jerarquia de estructura de datos
   especifica; por esta razon es necesario un programa especializado
   para crear tal DVD: multimedia/dvdauthor.

   Si ya tiene una imagen de un sistema de ficheros de DVD de video
   grabelo de la misma manera que cualquier otra imagen; consulte la
   seccion previa para ver un ejemplo. Si ha creado el DVD y el
   resultado esta en, por ejemplo, el directorio /ruta/al/video, use
   el siguiente comando para grabar el DVD de video:

 # growisofs -Z /dev/cd0 -dvd-video /ruta/al/video

   La opcion -dvd-video de mkisofs(8) hara posible la creacion de una
   estructura de sistema de ficheros de DVD de video. Ademas, la
   opcion -dvd-video implica la opcion -dvd-compat de growisofs(1).

     --------------------------------------------------------------

  18.7.5. Uso de un DVD+RW

   A diferencia de un CD-RW, un DVD+RW virgen necesita ser formateado
   antes de usarse por primera vez. El programa growisofs(1) se
   encargara de ello automaticamente cuando sea necesario, lo cual es
   el metodo recomendado. De todas formas puede usted usar el comando
   dvd+rw-format para formatear el DVD+RW:

 # dvd+rw-format /dev/cd0

   Necesita ejecutar esta operacion solamente una vez, recuerde que
   solo los DVD+RW virgenes necesitan ser formateados. Hecho eso ya
   puede usar el DVD+RW de la forma expuesta en las secciones
   previas.

   Si desea guardar nuevos datos (grabar un sistema de ficheros
   totalmente nuevo, no anadir mas datos) en un DVD+RW no necesita
   borrarlo, solo tiene que escribir sobre la grabacion anterior
   (realizando una nueva sesion inicial):

 # growisofs -Z /dev/cd0 -J -R /ruta/alos/datosnuevos

   El formato DVD+RW ofrece la posibilidad de anadir datos facilmente
   a una grabacion previa. La operacion consiste en fusionar una
   nueva sesion a la existente, no es escritura multisesion;
   growisofs(1) hara crecer el sistema de ficheros ISO 9660 presente
   en el medio.

   Si, por ejemplo, anadir datos al DVD+RW del ejemplo anterior
   tenemos que usar lo siguiente:

 # growisofs -M /dev/cd0 -J -R /ruta/alos/datosnuevos

   Las mismas opciones de mkisofs(8) que utilizamos para quemar la
   sesion inicial pueden usarse en ulteriores escritura.

     Nota: Puede usar la opcion -dvd-compat si desea mejor la
     compatibilidad de medios con unidades DVD-ROM. Si la usa en un
     DVD+RW no evitara que pueda anadir mas datos.

   Si por alguna razon desea borrar el contenido del medio, haga lo
   siguiente:

 # growisofs -Z /dev/cd0=/dev/zero

     --------------------------------------------------------------

  18.7.6. Uso de un DVD-RW

   Un DVD-RW acepta dos formatos de disco: el incremental secuencial
   y el de sobreescritura restringida. Por defecto los discos DVD-RW
   estan en formato secuencial.

   Un DVD-RW virgen puede utilizarse directamente sin necesidad de
   formateo, sin embargo un DVD-RW no virgen en formato secuencial
   necesita ser borrado antes de poder guardar una nueva sesion
   inicial.

   Para borrar un DVD-RW en modo secuencial, ejecute:

 # dvd+rw-format -blank=full /dev/cd0

     Nota: Un borrado total (-blank=full) tardara aproximadamente una
     hora en un medio 1x. Un borrado rapido puede realizarse con la
     opcion -blank si el DVD-RW fue grabado en modo Disk-At-Once
     (DAO). Para grabar el DVD-RW en modo DAO use el comando:

 # growisofs -use-the-force-luke=dao -Z /dev/cd0=ficheroimagen.iso

     La opcion -use-the-force-luke=dao no es imprescindible, ya que
     growisofs(1) trata de detectar el medio (borrado rapido) y
     entrar en escritura DAO.

     Deberia usarse el modo de reescritura restringida en los DVD-RW,
     pues este formato es mas flexible que el formato de incremento
     secuencial, el formato por defecto.

   Para escribir datos en un DVD-RW secuencial proceda del mismo modo
   que con los demas formatos de DVD:

 # growisofs -Z /dev/cd0 -J -R /ruta/alos/datos

   Si desea anadir datos a una grabacion previa tendra que usar la
   opcion -M de growisofs(1). si anade datos a un DVD-RW en modo
   incremental secuencial se creara en el disco una nueva sesion y el
   resultado sera un disco multisesion.

   Un DVD-RW en formato de sobreescritura restringido no necesita ser
   borrado antes de una nueva sesion inicial, solo tiene que
   sobreescribir el disco con la opcion -Z. esto es similar al caso
   DVD+RW. Tambien es posible ampliar un sistema de ficheros ISO 9660
   ya existente y escrito en el disco del mismo modo que para un
   DVD+RW con la opcion -M. El resultado sera un DVD de una sesion.

   Para poner un DVD-RW en el formato de sobreescritura restringido
   haga lo siguiente:

 # dvd+rw-format /dev/cd0

   Para devolverlo al formato secuencial use:

 # dvd+rw-format -blank=full /dev/cd0

     --------------------------------------------------------------

  18.7.7. Multisesion

   Muy pocas unidades DVD-ROM soportan DVDs multisesion. La mayoria
   de las veces (y si tiene suerte) solamente leeran la primera
   sesion. Los DVD+R, DVD-R y DVD-RW en formato secuencial pueden
   aceptar multisesiones. El concepto de multisesion no existe en los
   formatos de sobreescritura restringida de DVD+RW y DVD-RW.

   Usando el siguiente comando despues de una sesion inicial
   (no-cerrada) en un DVD+R, DVD-R o DVD-RW en formato secuencial
   anadira una nueva sesion al disco:

 # growisofs -M /dev/cd0 -J -R /ruta/alos/nuevosdatos

   Usando este comando con un DVD+RW o un DVD-RW en modo de
   sobreescritura restringida, agregara datos fusionando la nueva
   sesion a la ya existente. El resultado sera un disco de una sola
   sesion. Este es el procedimiento habitual para anadir datos tras
   la escritura inicial.

     Nota: Una cierta cantidad de espacio en el medio se usa en cada
     sesion al finalizar e iniciar sesiones; por tanto, se deben
     anadir sesiones con grandes cantidades de datos para optimizar
     el espacio del DVD. El numero de sesiones esta limitado a 154
     para un DVD+R, aproximadamente 2.000 para un DVD-R y 127 para un
     DVD+R de doble capa.

     --------------------------------------------------------------

  18.7.8. Para mayor informacion

   Para mas informacion sobre un DVD,puede ejecutar el comando
   dvd+rw-mediainfo /dev/cd0 con el disco en la unidad.

   Tiene mas informacion sobre dvd+rw-tools en la manual
   growisofs(1), en el sitio web de dvd+rw-tools y en los archivos de
   la lista de correos de cdwrite.

     Nota: Si va a enviar un informe de problemas es imperativo que
     adjunte la salida que dvd+rw-mediainfo produjo al grabar (o no
     grabar) el medio. Sin esta salida sera practicamente imposible
     ayudarle.

     --------------------------------------------------------------

18.8. Creacion y uso de disquetes (floppies)

   Texto original de Julio Merino. Reescrito por Martin Karlsson.

   Poder almacenar datos en discos flexibles es util algunas veces,
   por ejemplo cuando no se tiene cualquier otro medio de
   almacenamiento extraible o cuando se necesita transferir una
   cantidad pequena de datos a otro sistema.

   Esta seccion explicara como usar disquetes en FreeBSD. Cubrira
   principalmente el formateo y utilizacion de disquetes DOS de 3.5
   pulgadas, pero los conceptos son similares en otros formatos de
   disquete.

     --------------------------------------------------------------

  18.8.1. Formateo de disquetes

    18.8.1.1. El dispositivo

   El acceso a los disquetes se efectua a traves de entradas en /dev,
   igual que en otros dispositivos. Para acceder al disquete "crudo"
   (raw) en versiones 4.X y anteriores, se usa /dev/fdN, donde N
   representa el numero de unidad, generalmente 0, o /dev/fdNX, donde
   X representa una letra.

   En versiones 5.0 o posteriores, simplemente use /dev/fdN.

     --------------------------------------------------------------

      18.8.1.1.1. El tamano de disco en versiones 4.X y anteriores

   Tambien existen dispositivos /dev/fdN.tamano, donde tamano es el
   tamano del disquete en kilobytes. Estas entradas se usan durante
   el formateo a bajo nivel para determinar el tamano del disco. En
   los siguientes ejemplos se usara el tamano de 1440kB.

   Algunas veces las entradas bajo /dev tendran que ser (re)creadas.
   Para ello, ejecute:

 # cd /dev && ./MAKEDEV "fd*"

     --------------------------------------------------------------

      18.8.1.1.2. El tamano de disco en versiones 5.0 y posteriores

   En 5.0, devfs(5) administrara automaticamente los nodos de
   dispositivo en /dev, asi que el uso de MAKEDEV no es necesario.

   El tamano de disco deseado se pasa a fdformat(1) mediante la
   bandera -f. Los tamanos soportados aparecen en fdcontrol(8), pero
   tenga muy en cuenta que 1440kB es el que funciona mejor.

     --------------------------------------------------------------

    18.8.1.2. Formatear

   Un disquete necesita ser formateado a bajo nivel antes de poder
   usarse. Esto suele hacerlo el fabricante, pero el formateo es una
   buena manera de revisar la integridad del medio. Aunque es posible
   forzar tamanos de disco mas grandes (o pequenos), 1440kB es para
   lo que la mayoria de los disquetes estan disenados.

   Para formatear un disquete a bajo nivel debe usar fdformat(1).
   Esta utilidad espera el nombre del dispositivo como argumento.

   Tome nota de cualquier mensaje de error, ya que estos pueden
   ayudarle a determinar si el disco esta bien o mal.

     --------------------------------------------------------------

      18.8.1.2.1. Formateo en versiones 4.X y anteriores

   Use el dispositivo /dev/fdN.tamano para formatear el disquete.
   Inserte un disco de 3'5 pulgadas en su unidad y ejecute:

 # /usr/sbin/fdformat /dev/fd0.1440

     --------------------------------------------------------------

      18.8.1.2.2. Formateo en versiones 5.0 y posteriores

   Use el dispositivo /dev/fdN para formatear el disquete. Inserte un
   disco de 3'5 pulgadas en su unidad y ejecute:

 # /usr/sbin/fdformat -f 1440 /dev/fd0

     --------------------------------------------------------------

  18.8.2. La etiqueta de disco

   Tras un formato del disco a bajo nivel necesitara colocar una
   etiqueta de disco en el. Esta etiqueta de disco sera destruida mas
   tarde, pero es necesaria para que el sistema determine el tamano
   del disco y su geometria.

   La nueva etiqueta de disco ocupara todo el disco, y contendra toda
   la informacion apropiada sobre la geometria del disquete. Los
   valores de geometria para la etiqueta de disco estan en
   /etc/disktab.

   Ejecute disklabel(8) asi:

 # /sbin/disklabel -B -r -w /dev/fd0 fd1440

     Nota: Desde FreeBSD 5.1-RELEASE bsdlabel(8) reemplazo al viejo
     programa disklabel(8). En bsdlabel(8) se eliminaron muchas
     opciones y parametros obsoletos; en el ejemplo de arriba la
     opcion -r no debe usarse. Para mayor informacion consulte la
     pagina de manual de bsdlabel(8).

     --------------------------------------------------------------

  18.8.3. El sistema de ficheros

   Ahora el disquete esta listo para ser formateado a alto nivel.
   Esto colocara un sistema de ficheros nuevo en el disco y permitira
   a FreeBSD leer y escribir en el disco. Despues de crear el sistema
   de ficheros se destruye la etiqueta de disco, asi que si desea
   reformatearlo, tendra que recrear la etiqueta de disco.

   El sistema de ficheros del disquete puede ser UFS o o FAT. FAT
   suele ser una mejor opcion para disquetes.

   Para formatear un disquete ejecute:

 # /sbin/newfs_msdos /dev/fd0

   El disco esta para su uso.

     --------------------------------------------------------------

  18.8.4. Uso de un disquete

   Para usar el disquete montelo con mount_msdos(8) (en versiones 4.X
   y anteriores) o con mount_msdosfs(8) (en versiones 5.X o
   posteriores). Tambien se puede usar emulators/mtools.

     --------------------------------------------------------------

18.9. Creacion y uso de cintas de datos

   Los principales medios de cinta son 4mm, 8mm, QIC, mini-cartridge
   y DLT.

     --------------------------------------------------------------

  18.9.1. 4mm (DDS: Digital Data Storage)

   Las cintas de 4mm estan reemplazando a las QIC como los medios de
   respaldo mas frecuentes en estaciones de trabajo. Esta tendencia
   se acelero en gran medida cuando Conner adquirio Archive, un
   fabricante lider de unidades QIC, y abandono la produccion de
   unidades QIC. Las unidades de 4mm son pequenas y silenciosas pero
   no tienen la reputacion de fiabilidad de la que disfrutan las
   unidades de 8mm. Los cartuchos son mas baratos y mas pequenos (3 x
   2 x 0.5 pulgadas, 76 x 51 x 12 mm) que los cartuchos de 8mm. En el
   caso de las cintas de 4mm, igual que las de 8mm, tienen un cabezal
   con una vida comparativamente mas corta. Ambos utilizan el
   escaneado en espiral.

   El ancho de datos de estas unidades comienza por aprox. 150 kB/s,
   con un pico de aprox. ~500 kB/s. La capacidad de datos va de los
   1'3 GB a 2'0 GB. La compresion por hardware, disponible con la
   mayoria de estas unidades, dobla aproximadamente la capacidad.
   Existen unidades de biblioteca de cinta multi-unidad con 6
   unidades en un solo armario y cambio de cinta automatico. Las
   capacidades de estas bibliotecas alcanzan los 240 GB.

   El estandar DDS-3 soporta capacidades de cinta de hasta 12 GB (o
   24 GB con compresion).

   Las unidades de 4mm, igual que las unidades de 8mm, utilizan
   escaneo en espiral. Tanto unas como otras tienen las mismas
   ventajas y desventajas.

   Las cintas deben renovarse por otras despues de 2,000 pasadas o
   100 respaldos completos.

     --------------------------------------------------------------

  18.9.2. 8mm (Exabyte)

   Las cintas de 8mm son las unidades de cinta SCSI mas comunes; son
   la mejor opcion de cintas reemplazables y eso hace que las
   unidades de cinta Exabyte 8mm de 2 GB sean casi omnipresentes. Las
   unidades de 8mm son fiables, practicas y silenciosas. Los
   cartuchos son baratos y bastante pequenos (4.8 x 3.3 x 0.6
   pulgadas; 122 x 84 x 15 mm). Una desventaja de las cintas de 8mm
   es la vida relativamente corta del cabezal y de la propia cinta
   debido a la alta tasa de movimiento relativo de la cinta por los
   cabezales.

   El ancho de datos varia de aprox. 250 kB/s hasta los 500 kB/s. La
   capacidad va desde los 300 MB hasta los 7 GB. La compresion por
   hardware, disponible con la mayoria de estas unidades, dobla
   aproximadamente la capacidad. Estas unidades estan disponibles
   como unidades solas o como unidades de biblioteca de cinta
   multi-unidad con 6 unidades y 120 cintas en un solo armario. Las
   cintas las cambia automaticamente la unidad. La capacidad de
   dichas bibliotecas alcanza los 840+ GB.

   El modelo Exabyte "Mammoth" soporta 12 GB en una cinta (24 GB con
   compresion) y cuesta aproximadamente el doble que las unidades de
   cinta convencionales.

   Los datos se graban en cinta utilizando escaneo en espiral. Las
   cabezas se posicionan en angulo en relacion al medio (6 grados
   aproximadamente). La cinta se envuelve cerca de 270 grados en el
   cilindro que soporta las cabezas. El cilindro gira mientras la
   cinta se desliza sobre el cilindro. El resultado es una alta
   densidad de datos y pistas almacenadas muy pegadas, dispuestas en
   angulo a traves de la cinta de un extremo al otro.

     --------------------------------------------------------------

  18.9.3. QIC

   Las cintas y unidades QIC-150 son, quizas, las unidades y medios
   de cinta mas comunes. Las unidades de cinta QIC son las unidades
   de respaldo "serias" menos caras. La desventaja es el coste del
   medio. Las cintas QIC son caras comparadas con las cintas de 8mm o
   de 4mm, hasta 5 veces el precio de almacenamiento de datos por GB.
   No obstante, si sus necesidades pueden satisfacerse con media
   docena de cintas, QIC tal vez sea la decision correcta. QIC es la
   unidad de cinta mas comun. Casi en todas partes tienen una unidad
   QIC de una u otra densidad. Y ese es el problema, QIC ofrece un
   enorme numero de densidades en cintas fisicamente similares
   (algunas veces identicas). Las unidades QIC son cualquier cosa
   menos silenciosas. Hacen bastante ruido antes de iniciar la
   grabacion de datos y son claramente audibles siempre que leen,
   escriben o hacen una busqueda. Las cintas QIC miden 6 x 4 x 0.7
   pulgadas; 152 x 102 x 17 mm.

   El ancho de datos varia de aprox. 150 kB/s a aprox. 500 kB/s. La
   capacidad de datos varia de 40 MB a 15 GB. La compresion por
   hardware existe en muchas de las nuevas unidades QIC. Las unidades
   QIC se ven con menos frecuencia y ademas estan siendo suplantadas
   por unidades DAT.

   Los datos se graban en la cinta en pistas. Las pistas discurren a
   lo largo del extenso eje de la cinta de un extremo al otro. El
   numero de pistas, y por lo tanto el ancho de una pista varia segun
   la capacidad de la cinta. La mayoria, si no todas las unidades
   nuevas, ofrecen compatibilidad con modelos anteriores al menos
   para lectura (y tambien en muchos casos de escritura). QIC tiene
   buena reputacion en cuanto a seguridad de los datos (las piezas
   mecanicas son mas simples y mas robustas que en las unidades de
   busqueda en espiral).

   Las cintas deben ser sustituirse por otras despues de 5,000
   respaldos.

     --------------------------------------------------------------

  18.9.4. DLT

   DLT tiene la tasa de transferencia de datos mas rapida de todos
   los tipos de unidades mostradas aqui. La cinta de 1/2" (12'5mm)
   esta alojada en un cartucho de un solo cilindro (4 x 4 x 1
   pulgadas; 100 x 100 x 25 mm). El cartucho tiene una puerta
   giratoria a lo largo de todo un lado del cartucho. El mecanismo de
   la unidad abre esta puerta para extraer el "lider". El "lider" de
   la cinta tiene un agujero oval que la unidad utiliza para
   "enganchar" la cinta. El cilindro de levantamiento esta dentro de
   la unidad de cinta. Los demas cartuchos descritos en este texto
   (los cartuchos de 9 pistas son la unica excepcion) tienen el
   cilindro proveedor alojados dentro del propio cartucho de cinta.

   El ancho de datos es aproximadamente de 1'5 MB/s, tres veces el
   ancho de unidades de cinta de 4mm, de 8mm o QIC. Las capacidades
   de datos varian entre 10 GB y 20 GB en una sola unidad. Hay
   unidades multicinta y con cargadores multi-cinta, y bibliotecas
   multiunidad que pueden albergar de 5 a 900 cintas con una a 20
   unidades, con lo que pueden alcanzar desde 50 GB hasta 9 TB de
   almacenamiento.

   Con compresion, el formato DLT Type IV soporta hasta 70 GB de
   capacidad.

   Los datos se almacenan en cinta en pistas paralelas a la direccion
   del movimiento de la cinta (como en las cintas QIC). Se escriben
   dos pistas al mismo tiempo. El tiempo de vida de lectura/escritura
   es relativamente largo. Una vez que la cinta no hay movimiento
   relativo entre las cabezas y la cinta.

     --------------------------------------------------------------

  18.9.5. AIT

   AIT es un nuevo formato de Sony, y puede almacenar hasta 50 GB
   (con compresion) por cinta. Las cintas contienen chips de memoria
   que retienen un indice de los contenidos de la cinta. Este indice
   puede ser leido rapidamente para determinar la posicion de los
   ficheros en la cinta, en lugar de los varios minutos que
   requeriria el proceso con otras cintas. SAMS:Alexandria puede
   gestionar mas de 40 bibliotecas de cinta AIT, comunicandose
   directamente con el chip de memoria de la cinta para desplegar el
   contenido en pantalla, determinar que ficheros fueron respaldados
   a que cinta, ubicar la cinta correcta, cargarla y restaurar los
   datos desde la cinta.

   Las bibliotecas como esta cuestan alrededor de 20.000 dolares, lo
   que las aleja bastante del alcance de los aficionados.

     --------------------------------------------------------------

  18.9.6. Estreno de una cinta

   La primera vez que trate de leer o escribir una cinta nueva,
   completamente en blanco, la operacion fallara. El mensaje de la
   consola se parecera al siguiente:

 sa0(ncr1:4:0): NOT READY asc:4,1
 sa0(ncr1:4:0):  Logical unit is in process of becoming ready

   La cinta no contiene un bloque identificador (bloque numero 0).
   Todas las unidades de cinta QIC desde la adopcion del estandar
   QIC-525 escriben un bloque identificador en la cinta. Existen dos
   soluciones:

     * mt fsf 1 hace que la unidad de cinta escriba un bloque
       identificador a la cinta.

     * Use el boton del panel frontal para expulsar la cinta.

       Inserte nuevamente la cinta y haga un dump de datos a la
       cinta.

       dump devolvera "DUMP: End of tape detected" y la consola
       mostrara "HARDWARE FAILURE info:280 asc:80,96".

       Rebobine la cinta usando: mt rewind.

       A partir de ese momento podra utilizar la cinta.

     --------------------------------------------------------------

18.10. Respaldos en disquetes

  18.10.1. ?Puedo utilizar disquetes para respaldar mis datos?

   Los disquetes no son realmente el medio ideal para hacer respaldos
   debido a que:

     * El medio no es fiable, especialmente despues de largos
       periodos de tiempo.

     * El respaldo y la restauracion es muy lento.

     * Tienen una capacidad muy limitada (los dis de respaldar un
       disco duro entero en una docena de disquetes pasaron hace
       mucho).

   De todas maneras, si no tiene otro metodo para respaldar sus datos
   los disquetes son una mejor solucion que no tener ningun respaldo.

   Si tiene que utilizar disquetes asegurese de usar discos de buena
   calidad. Los disquetes que han estado almacenados en la oficina
   durante un par de anos son una mala eleccion. Lo mejor seria que
   utilizara discos nuevos de un fabricante respetado.

     --------------------------------------------------------------

  18.10.2. ?Como respaldo mis datos a discos flexibles?

   La mejor manera de respaldar a un disquete es usar tar(1) con la
   opcion -M (multi volumen), que permite que el respaldo se guarde
   en varios disquetes.

   Para respaldar todos los ficheros en el directorio actual y sus
   subdirectorios use esto (como root):

 # tar Mcvf /dev/fd0 *

   Cuando el primer disquete este lleno tar(1) le solicitara que
   inserte el siguiente volumen (debido a que tar(1) es independiente
   del medio se refiere a volumenes; en este contexto se refiere a
   disquetes).

 Prepare volume #2 for /dev/fd0 and hit return:

   Esto se repite (con el numero de volumen incrementando) hasta que
   todos los ficheros especificados hayan sido archivados.

     --------------------------------------------------------------

  18.10.3. ?Puedo comprimir mis respaldos?

   Desafortunadamente, tar(1) no permite el uso de la opcion -z para
   archivos multi-volumen. Puede, por supuesto, hacer un gzip(1) a
   todos los ficheros, mandarlos con tar(1) a los disquetes, y
   despues hacer gunzip(1) a los archivos

     --------------------------------------------------------------

  18.10.4. ?Como recupero mis respaldos?

   Para restaurar el archivo completo use:

 # tar Mxvf /dev/fd0

   Hay dos maneras que puede usar para restaurar ficheros
   especificos. La primera, puede comenzar por el primer disco
   flexible y usar:

 # tar Mxvf /dev/fd0 nombredefichero

   La utilidad tar(1) le pedira que inserte el resto de disquetes
   hasta que encuentre el fichero requerido.

   La segunda manera es: si sabe en que disco se encuentra el fichero
   puede insertar ese disco y usar el comando expuesto arriba. Tenga
   en cuenta que si el primer fichero en el disquete es la
   continuacion del anterior tar(1) le advertira que no puede
   restaurarlo incluso si no se lo ha solicitado

     --------------------------------------------------------------

18.11. Bases para respaldos

   Los tres principales programas para respaldos son dump(8), tar(1)
   y cpio(1).

     --------------------------------------------------------------

  18.11.1. Dump y Restore

   Los programas UNIX que se han usado durante muchos anos para hacer
   copias de seguridad son dump y restore. Operan en las unidades
   como una coleccion de bloques de disco, bajo la abstraccion de
   ficheros, los enlaces y directorios creados por el sistema de
   ficheros. dump respalda un sistema de ficheros completo en un
   dispositivo. No es capaz de respaldar solamente parte de un
   sistema de ficheros o un arbol de directorios que se extienda por
   mas de un sistema de ficheros. dump no escribe ficheros y
   directorios a cinta, escribe los bloques de datos "crudos" (raw)
   que conforman los ficheros y directorios.

     Nota: Si utiliza dump en su directorio raiz, no respaldara
     /home, /usr ni muchos otros directorios, ya que suelen ser
     puntos de montaje de otros sistemas de ficheros o enlaces
     simbolicos hacia dichos sistemas de ficheros.

   dump tiene peculiaridades que se mantienen desde sus primeros dias
   en la Version 6 de AT&T UNIX (alrededor de 1975). Los parametros
   por defecto son los adecuados para cintas de 9 pistas (6250 bpi),
   pero no para los medios de alta densidad disponibles hoy en dia
   (hasta 62,182 ftpi). Estos valores por defecto deben obviarse en
   la linea de comandos para aprovechar la capacidad de las unidades
   de cinta actuales.

   Tambien es posible respaldar datos a traves de la red a una unidad
   de cinta conectada a otra computadora con rdump y rrestore. Ambos
   programas dependen de rcmd(3) y ruserok(3) para acceder a la
   unidad de cinta remota. Por consiguiente, el usuario que realiza
   el respaldo debe estar listado en el fichero .rhosts de la
   computadora remota. Los argumentos para rdump y rrestore deben ser
   adecuados para usarse en la computadora remota. Cuando realice un
   rdump desde FreeBSD a una unidad de cinta Exabyte conectada a una
   Sun llamada komodo, use:

 # /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1

   Advertencia: existen implicaciones de seguridad al permitir
   autentificacion mediante .rhosts. Le recomendamos que evalue la
   situacion cuidadosamente.

   Tambien es posible usar dump y restore de una forma mas segura a
   traves de ssh.

   Ejemplo 18-1. Utilizando dump a traves de ssh

 # /sbin/dump -0uan -f - /usr | gzip -2 | ssh -c blowfish \
           usuario@maquinaobjetivo.ejemplo.com dd of=/misficherosgrandes/dump-usr-l0.gz

   Uso del metodo integrado de dump, configurando la variable de
   ambiente RSH:

   Ejemplo 18-2. Uso de dump a traves de ssh con RSH configurada

 # RSH=/usr/bin/ssh /sbin/dump -0uan -f usuario@maquinaobjetivo.ejemplo.com:/dev/sa0 /usr

     --------------------------------------------------------------

  18.11.2. tar

   tar(1) tambien es de la epoca de la Version 6 de AT&T UNIX
   (alrededor de 1975). tar trabaja en cooperacion con el sistema de
   ficheros; escribe ficheros y directorios a cinta. tar no soporta
   el rango completo de opciones que ofrece cpio(1), pero no requiere
   el inusual comando de pipeline que utiliza cpio.

   En FreeBSD 5.3 y posteriores, tiene a su disposicion GNU tar y el
   comando por defecto bsdtar. La version GNU puede ser invocada
   mediante gtar. Soporta dispositivos remotos mediante la misma
   sintaxis que rdump. Para hacer un tar a una unidad de cinta
   conectada a una Sun llamada komodo, use:

 # /usr/bin/gtar cf komodo:/dev/nsa8 . 2>&1

   Puede hacer lo mismo con o con bsdtar usando un "pipe" y rsh para
   mandar los datos a una unidad de cinta remota.

 # tar cf - . | rsh nombredemaquina dd of=dispositivo-de-cinta obs=20b

   Si le preocupa la seguridad del proceso de hacer un respaldo a
   traves de una red debe usar ssh en lugar de rsh.

     --------------------------------------------------------------

  18.11.3. cpio

   cpio(1) es el programa de intercambio de archivos de cinta para
   medios magneticos. cpio tiene opciones (entre muchas otras) para
   realizar intercambio de bytes, escribir un numero diferente de
   formatos de archivo y hacer "pipe" de datos hacia otros programas.
   Esta ultima opcion hace de cpio una eleccion excelente para medios
   de instalacion. cpio no sabe como recorrer el arbol de
   directorios, asi que debe facilitarle una lista de directorios a
   traves de stdin.

   cpio no permite respaldos a traves de la red. Puede usar un pipe y
   rsh para mandar los datos a una unidad de cinta remota.

 # for f in lista_directorios; do
 find $f >> backup.list
 done
 # cpio -v -o --format=newc < backup.list | ssh usuario@maquina "cat > dispositivo_de_respaldo"

   Donde lista_directorios es la lista de directorios que desea
   respaldar, usuario@maquina es la combinacion usuario/nombre de
   equipo que realizara el respaldo y dispositivo_de_respaldo es
   donde el respaldo se escribira efectivamente (por ejemplo
   /dev/nsa0).

     --------------------------------------------------------------

  18.11.4. pax

   pax(1) es la respuesta IEEE/POSIX a tar y cpio. A traves de los
   anos las diversas versiones de tar y cpio se han vuelto
   ligeramente incompatibles, asi que en lugar de pelear por hacerlo
   completamente estandar, POSIX creo una nueva utilidad de
   archivado. pax trata de leer y escribir muchos de los diversos
   formatos de cpio y tar, ademas de nuevos formatos propios. Su
   conjunto de comandos se parece mas a cpio que a tar.

     --------------------------------------------------------------

  18.11.5. Amanda

   Amanda (Advanced Maryland Network Disk Archiver) es un sistema de
   respaldos cliente/servidor, en lugar de un solo programa. Un
   servidor Amanda respaldara a una sola unidad de cinta cualquier
   cantidad de computadoras que tengan clientes Amanda y una conexion
   de red al servidor Amanda. Un problema comun en sitios con gran
   cantidad de discos grandes es que la cantidad de tiempo requerida
   para respaldar los datos directamente a cinta excede la cantidad
   de tiempo disponible para la tarea. Amanda resuelve este problema.
   Amanda puede usar un "disco intermedio" para respaldar varios
   sistemas de ficheros al mismo tiempo. Amanda crea "conjuntos de
   archivo", esto es, un grupo de cintas usadas durante un periodo de
   tiempo para crear respaldos completos de todos los sistemas de
   ficheros listados en el fichero de configuracion de Amanda. El
   "conjunto de archivo" tambien contiene respaldos incrementales
   nocturnos (o diferenciales) de todos los sistemas de ficheros.
   Para restaurar un sistema de ficheros danado hace falta el
   respaldo completo mas reciente y los respaldos incrementales.

   El fichero de configuracion ofrece un control exhaustivo de los
   respaldos y del trafico de red que Amanda genera. Amanda usara
   cualquiera de los programas de respaldo mencionados arriba para
   escribir los datos a cinta. Puede instalar Amanda como paquete y
   como port. No forma parte del sistema base.

     --------------------------------------------------------------

  18.11.6. No hacer nada

   "No hacer nada" no es un programa, pero es la estrategia de
   respaldo mas extendida. No tiene coste. No hay un calendario de
   respaldos a seguir. Simplemente hay que decir que no. Si algo le
   sucediera a sus datos sonria y acostumbrese a su nueva situacion.

   Si su tiempo y sus datos valen poco o nada, entonces "no hacer
   nada" es el programa de respaldo mas adecuado para usted. Pero
   cuidado, UNIX es una herramienta muy poderosa y puede suceder que
   dentro de seis meses tenga un monton de ficheros que sean valiosos
   para usted.

   "No hacer nada" es el metodo correcto de respaldo para /usr/obj y
   otros arboles de directorios que pueden ser facilmente recreados
   por su computadora. Un ejemplo son los archivos que forman la
   version HTML o PostScript de este manual. Estos documentos han
   sido generados desde ficheros SGML. Crear respaldos de los
   archivos HTML o PostScript no es necesario dado que los ficheros
   SGML se respaldan regularmente.

     --------------------------------------------------------------

  18.11.7. ?Cual es el mejor programa de respaldos?

   dump(8). Y no hay mas que hablar. Elizabeth D. Zwicky realizo
   pruebas de estres a a todos los programas de copia de seguridad
   aqui expuestos. La eleccion clarisima para preservar todos sus
   datos y todas las peculiaridades de sus sistemas de ficheros UNIX
   es dump. Elizabeth creo sistemas de ficheros conteniendo una gran
   variedad de condiciones inusuales (y algunos no tan inusuales) y
   probo cada programa haciendo un respaldo y restaurando esos
   sistemas de ficheros. Esas peculiaridades incluian: ficheros con y
   un bloque nulo, ficheros con caracteres extranos en sus nombres,
   ficheros que no se podian leer ni escribir, dispositivos, ficheros
   que cambiaban de tamano durante el respaldo, ficheros que eran
   creados/borrados durante el respaldo y cosas asi. Elizabeth
   presento los resultados en LISA V en octubre de 1991. Consulte
   torture-testing Backup and Archive Programs.

     --------------------------------------------------------------

  18.11.8. Procedimiento de restauracion de emergencia

    18.11.8.1. Antes del desastre

   Solamente existen cuatro pasos que debe realizar en preparacion de
   cualquier desastre que pudiera ocurrir.

   Primero, imprima la etiqueta de disco de cada uno de sus discos
   (disklabel da0 | lpr), su tabla de sistemas de ficheros
   (/etc/fstab) y todos los mensajes de arranque, dos copias de cada
   uno.

   Segundo, asegurese que los disquetes de rescate (boot.flp y
   fixit.flp) tienen todos sus dispositivos. La manera mas facil de
   revisarlo es reiniciar su maquina con el disquete en la unidad y
   revisar los mensajes de arranque. Si todos sus dispositivos
   aparecen en la lista y funcionan, pase al tercer paso.

   Si ha habido algun problema tiene que crear dos disquetes de
   arranque personalizados, que deben tener un kernel que pueda
   montar todos sus discos y acceder a su unidad de cinta. Estos
   discos deben contener: fdisk, disklabel, newfs, mount y cualquier
   programa de respaldo que utilice. Estos programas deben estar
   enlazados estaticamente. Si usa dump, el disquete debe contener
   restore.

   Tercero, use cintas de respaldo regularmente. Cualquier cambio que
   haga despues de su ultimo respaldo puede perderse
   irremediablemente. Proteja contra escritura las cintas de
   respaldo.

   Cuarto, pruebe los disquetes (ya sea boot.flp y fixit.flp o los
   dos discos personalizados que creo en el segundo paso) y las
   cintas de respaldo. Documente el procedimiento. Almacene estas
   notas con los discos de arranque, las impresiones y las cintas de
   respaldo. Estara tan perturbado cuando restaure su sistema que las
   notas pueden pueden evitar que destruya sus cintas de respaldo.
   (?Como? en lugar de tar xvf /dev/sa0, puede teclear
   accidentalmente tar cvf /dev/sa0 y sobreescribir su cinta).

   Como medida adicional de seguridad haga discos de inicio y dos
   cintas de respaldo cada vez. Almacene una de cada en una ubicacion
   remota. Una ubicacion remota NO es el sotano del mismo edificio.
   Muchas firmas alojadas en el World Trade Center aprendieron esta
   leccon de la manera mas dificil. Esa ubicacion remota debe estar
   separada fisicamente de sus computadoras y unidades de disco por
   una distancia significativa.

   Ejemplo 18-3. Un "script" para la creacion de discos flexibles de
   arranque

 #!/bin/sh
 #
 # create a restore floppy
 #
 # format the floppy
 #
 PATH=/bin:/sbin:/usr/sbin:/usr/bin

 fdformat -q fd0
 if [ $? -ne 0 ]
 then
          echo "Bad floppy, please use a new one"
          exit 1
 fi

 # place boot blocks on the floppy
 #
 disklabel -w -B /dev/fd0c fd1440

 #
 # newfs the one and only partition
 #
 newfs -t 2 -u 18 -l 1 -c 40 -i 5120 -m 5 -o space /dev/fd0a

 #
 # mount the new floppy
 #
 mount /dev/fd0a /mnt

 #
 # create required directories
 #
 mkdir /mnt/dev
 mkdir /mnt/bin
 mkdir /mnt/sbin
 mkdir /mnt/etc
 mkdir /mnt/root
 mkdir /mnt/mnt                  # for the root partition
 mkdir /mnt/tmp
 mkdir /mnt/var

 #
 # populate the directories
 #
 if [ ! -x /sys/compile/MINI/kernel ]
 then
          cat << EOM
 The MINI kernel does not exist, please create one.
 Here is an example config file:
 #
 # MINI -- A kernel to get FreeBSD onto a disk.
 #
 machine         "i386"
 cpu             "I486_CPU"
 ident           MINI
 maxusers        5

 options         INET                    # needed for _tcp _icmpstat _ipstat
                                         #            _udpstat _tcpstat _udb
 options         FFS                     #Berkeley Fast File System
 options         FAT_CURSOR              #block cursor in syscons or pccons
 options         SCSI_DELAY=15           #Be pessimistic about Joe SCSI device
 options         NCONS=2                 #1 virtual consoles
 options         USERCONFIG              #Allow user configuration with -c XXX

 config          kernel  root on da0 swap on da0 and da1 dumps on da0

 device          isa0
 device          pci0

 device          fdc0    at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
 device          fd0     at fdc0 drive 0

 device          ncr0

 device          scbus0

 device          sc0     at isa? port "IO_KBD" tty irq 1 vector scintr
 device          npx0    at isa? port "IO_NPX" irq 13 vector npxintr

 device          da0
 device          da1
 device          da2

 device          sa0

 pseudo-device   loop            # required by INET
 pseudo-device   gzip            # Exec gzipped a.out's
 EOM
          exit 1
 fi

 cp -f /sys/compile/MINI/kernel /mnt

 gzip -c -best /sbin/init > /mnt/sbin/init
 gzip -c -best /sbin/fsck > /mnt/sbin/fsck
 gzip -c -best /sbin/mount > /mnt/sbin/mount
 gzip -c -best /sbin/halt > /mnt/sbin/halt
 gzip -c -best /sbin/restore > /mnt/sbin/restore

 gzip -c -best /bin/sh > /mnt/bin/sh
 gzip -c -best /bin/sync > /mnt/bin/sync

 cp /root/.profile /mnt/root

 cp -f /dev/MAKEDEV /mnt/dev
 chmod 755 /mnt/dev/MAKEDEV

 chmod 500 /mnt/sbin/init
 chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt
 chmod 555 /mnt/bin/sh /mnt/bin/sync
 chmod 6555 /mnt/sbin/restore

 #
 # create the devices nodes
 #
 cd /mnt/dev
 ./MAKEDEV std
 ./MAKEDEV da0
 ./MAKEDEV da1
 ./MAKEDEV da2
 ./MAKEDEV sa0
 ./MAKEDEV pty0
 cd /

 #
 # create minimum file system table
 #
 cat > /mnt/etc/fstab <<EOM
 /dev/fd0a    /    ufs    rw  1  1
 EOM

 #
 # create minimum passwd file
 #
 cat > /mnt/etc/passwd <<EOM
 root:*:0:0:Charlie &:/root:/bin/sh
 EOM

 cat > /mnt/etc/master.passwd <<EOM
 root::0:0::0:0:Charlie &:/root:/bin/sh
 EOM

 chmod 600 /mnt/etc/master.passwd
 chmod 644 /mnt/etc/passwd
 /usr/sbin/pwd_mkdb -d/mnt/etc /mnt/etc/master.passwd

 #
 # umount the floppy and inform the user
 #
 /sbin/umount /mnt
 echo "The floppy has been unmounted and is now ready."

     --------------------------------------------------------------

    18.11.8.2. Despues del desastre

   La pregunta clave es: ?sobrevivio su hardware? Ha estado haciendo
   respaldos regularmente, asi que no hay necesidad de preocuparse
   por el software.

   Si el hardware ha sufrido danos los componentes deben reemplazarse
   antes de intentar de usar su sistema.

   Si su hardware esta bien revise sus discos de arranque. Si usa
   disquetes de arranque personalizados arranque en modo monousuario
   (teclee -s en el en el "prompt" de arranque boot:). Saltese el
   siguiente parrafo.

   Si utiliza usando los discos boot.flp y fixit.flp, siga leyendo.
   Inserte el disco boot.flp en la primera unidad de disquete y
   arranque la maquina. El menu de instalacion original se desplegara
   en pantalla. Seleccione la opcion Fixit--Repair mode with CDROM or
   floppy.. Inserte el disco fixit.flp cuando se le pida. Tanto
   restore como los demas programas que necesitara estan en
   /mnt2/rescue (/mnt2/stand para versiones de FreeBSD anteriores a
   5.2).

   Recupere cada sistema de ficheros por separado.

   Trate de montar (por ejemplo mount /dev/da0a /mnt) la particion
   raiz de su primer disco. Si la etiqueta del disco ha sufrido danos
   use disklabel para reparticionar y etiquetar el disco de forma que
   coincida con la etiqueta que imprimio y guardo previamente. Use
   newfs para crear de nuevo sus sistemas de ficheros. Monte de nuevo
   la particion raiz del disquete en modo lectura/escritura (mount -u
   -o rw /mnt). Ejecute su programa de respaldo y utilice las cintas
   de respaldo para restaurar sus datos en este sistema de ficheros
   (restore vrf /dev/sa0). Desmonte el sistema de ficheros (umount
   /mnt). Repita el proceso con cada sistema de ficheros que sufrio
   danos.

   Una vez que su sistema este en marcha respalde sus datos en cintas
   nuevas. Cualquiera que haya sido la causa de la caida o perdida de
   datos puede suceder de nuevo. Una hora mas que gaste ahora puede
   ahorrarle mucho sufrimiento mas adelante.

     --------------------------------------------------------------

18.12. Sistemas de ficheros en red, memoria y respaldados en fichero

   Reorganizado y mejorado por Marc Fonvieille.

   Ademas de los discos que conecta fisicamente en su maquina (discos
   flexibles, CDs, discos duros, etc.) FreeBSD permite usar otro tipo
   de discos: los discos virtuales.

   Esto incluye sistemas de ficheros en red como NFS y Coda, sistemas
   de ficheros basados en memoria y sistemas de ficheros basados en
   fichero.

   Segun la version de FreeBSD que utilice tendra que utilizar
   diferentes herramientas para la creacion y uso de sistemas de
   ficheros en memoria y sistemas de ficheros basados en fichero.

     Nota: Los usuarios de FreeBSD 4.X tendran que usar MAKEDEV(8)
     para crear los dispositivos requeridos. FreeBSD 5.0 y
     posteriores usan devfs(5) para gestionar los nodos de
     dispositivo correspondientes de forma transparente para el
     usuario.

     --------------------------------------------------------------

  18.12.1. Sistema de ficheros basado en fichero en FreeBSD 4.X

   La utilidad vnconfig(8) configura y habilita vnodes de
   dispositivos de pseudodisco. Un vnode es una representacion de un
   fichero y es el enfoque de la actividad de fichero. Esto significa
   que vnconfig(8) utiliza ficheros para crear y operar un sistema de
   ficheros. Un uso posible es el montaje de imagenes de disquetes o
   CD almacenadas como ficheros.

   Para poder usar vnconfig(8) necesitara tener vn(4) en el fichero
   de configuracion de su kernel:

 pseudo-device vn

   Para montar una imagen de un sistema de ficheros:

   Ejemplo 18-4. Uso de vnconfig para montar una imagen de un sistema
   de ficheros bajo FreeBSD 4.X

 # vnconfig vn0 imagendedisco
 # mount /dev/vn0c /mnt

   Para crear una nueva imagen de un sistema de ficheros con
   vnconfig(8):

   Ejemplo 18-5. Creacion de una imagen nueva de un sistema de
   ficheros respaldado en un archivo con vnconfig

 # dd if=/dev/zero of=nuevaimagen bs=1k count=5k
 5120+0 records in
 5120+0 records out
 # vnconfig -s labels -c vn0 nuevaimagen
 # disklabel -r -w vn0 auto
 # newfs vn0c
 Warning: 2048 sector(s) in last cylinder unallocated
 /dev/vn0c:     10240 sectors in 3 cylinders of 1 tracks, 4096 sectors
         5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g)
 super-block backups (for fsck -b #) at:
  32
 # mount /dev/vn0c /mnt
 # df /mnt
 Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
 /dev/vn0c        4927        1     4532     0%    /mnt

     --------------------------------------------------------------

  18.12.2. Sistemas de ficheros basados en fichero en FreeBSD 5.X

   mdconfig(8) se usa para configurar y habilitar discos habilitar
   discos de memoria, md(4), en FreeBSD 5.X. Para usar mdconfig(8),
   tendra que cargar el modulo md(4) o anadir soporte para el mismo
   el el fichero de configuracion del kernel:

 device md

   mdconfig(8) soporta tres tipos de discos virtuales en memoria:
   discos de memoria asignados mediante malloc(9), discos de memoria
   usando un fichero o espacio de swap como respaldo. Un uso posible
   es montar imagenes de disquetes o CD archivadas.

   Para montar una imagen de un sistema de ficheros:

   Ejemplo 18-6. Uso de mdconfig para montar una imagen de un sistema
   de ficheros en FreeBSD 5.X

 # mdconfig -a -t vnode -f imagendedisco -u 0
 # mount /dev/md0 /mnt

   Para crear una imagen nueva de un sistema de ficheros con
   mdconfig(8):

   Ejemplo 18-7. Creacion de un disco respaldado en fichero con
   mdconfig

 # dd if=/dev/zero of=nuevaimagen bs=1k count=5k
 5120+0 records in
 5120+0 records out
 # mdconfig -a -t vnode -f nuevaimagen -u 0
 # disklabel -r -w md0 auto
 # newfs md0c
 /dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048
         using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
 super-block backups (for fsck -b #) at:
  32, 2624, 5216, 7808
 # mount /dev/md0c /mnt
 # df /mnt
 Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
 /dev/md0c        4846        2     4458     0%    /mnt

   Si no especifica el numero de unidad con la opcion -u mdconfig(8)
   usara la designacion automatica de md(4) para seleccionar un
   dispositivo sin usar. El nombre de la unidad designada se enviara
   a la salida esandar como md4. Para mas informacion sobre
   mdconfig(8) consulte su pagina de manual.

     Nota: A partir de FreeBSD 5.1-RELEASE bsdlabel(8) reemplazo a
     disklabel(8). En bsdlabel(8) se eliminaron muchas opciones y
     parametros obsoletos. En el ejemplo de arriba ignore la opcion
     -r. Para mas informacion consulte la pagina de manual de
     bsdlabel(8).

   mdconfig(8) es muy util, aunque requiere muchas lineas de comando
   para crear un sistema de ficheros basado en un fichero.
   FreeBSD 5.0 incorpora mdmfs(8), que configura un disco md(4)
   utilizando mdconfig(8), pone un sistema de ficheros UFS en el
   mediante newfs(8) y lo monta usando mount(8). Por ejemplo, si
   desea crear y montar la misma imagen de sistema de ficheros de
   arriba, simplemente teclee lo siguiente:

   Ejemplo 18-8. Configurar y montar un disco basado en un fichero
   con mdmfs

 # dd if=/dev/zero of=nuevaimagen bs=1k count=5k
 5120+0 records in
 5120+0 records out
 # mdmfs -F newimage -s 5m md0 /mnt
 # df /mnt
 Filesystem 1K-blocks Used Avail Capacity  Mounted on
 /dev/md0        4846    2  4458     0%    /mnt

   Si utiliza la opcion md sin numero de unidad, mdmfs(8) usara la
   opcion de auto unidad de md(4) para selecionar automaticamente un
   dispositivo sin usar. Para mas informacion sobre mdmfs(8) dirijase
   a la pagina de manual.

     --------------------------------------------------------------

  18.12.3. Sistemas de ficheros basados en memoria en FreeBSD 4.X

   El controlador md(4) es un modo sencillo y eficiente de crear
   sistemas de ficheros basados en memoria en FreeBSD 4.X. malloc(9)
   se usa para ubicar la memoria.

   Sencillamete toma un sistema de ficheros que usted ha preparado
   con, por ejemplo, vnconfig(8), y:

   Ejemplo 18-9. Disco de memoria md en FreeBSD 4.X

 # dd if=nuevaimagen of=/dev/md0
 5120+0 records in
 5120+0 records out
 # mount /dev/md0c /mnt
 # df /mnt
 Filesystem  1K-blocks     Used    Avail Capacity  Mounted on
 /dev/md0c        4927        1     4532     0%    /mnt

   Para mas informacion por favor consulte la pagina de manual de
   md(4).

     --------------------------------------------------------------

  18.12.4. sistemas de ficheros basados en memoria en FreeBSD 5.X

   Se usan las mismas herramientas para tratar con sistemas de
   ficheros basados en memoria o en ficheros: mdconfig(8) o mdmfs(8).
   El almacenamiento de sistemas de ficheros basados en memoria
   requiere el uso de malloc(9).

   Ejemplo 18-10. Creacion de un nuevo disco basado en memoria con
   mdconfig

 # mdconfig -a -t malloc -s 5m -u 1
 # newfs -U md1
 /dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048
         using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes.
         with soft updates
 super-block backups (for fsck -b #) at:
  32, 2624, 5216, 7808
 # mount /dev/md1 /mnt
 # df /mnt
 Filesystem 1K-blocks Used Avail Capacity  Mounted on
 /dev/md1        4846    2  4458     0%    /mnt

   Ejemplo 18-11. Creacion de un nuevo disco basado en memoria con
   mdmfs

 # mdmfs -M -s 5m md2 /mnt
 # df /mnt
 Filesystem 1K-blocks Used Avail Capacity  Mounted on
 /dev/md2        4846    2  4458     0%    /mnt

   En lugar de usar un sistema de ficheros respaldado en malloc(9),
   es posible utilizar swap; lo unico que debe hacer es sustituir
   malloc por swap en la linea de comando de mdconfig(8). mdmfs(8)
   por defecto (sin -M) crea un disco basado en swap). Para mas
   informacion, consulte las paginas de manual de mdconfig(8) y de
   mdmfs(8).

     --------------------------------------------------------------

  18.12.5. Desconexion del sistema de un disco de memoria

   Cuando un sistema de ficheros basado en memoria o basado en
   fichero no se usa puede liberar recursos del sistema. Lo primero
   es desmontar el sistema de ficheros: use mdconfig(8) para
   desconectar el disco del sistema y liberar dichos recursos.

   Por ejemplo, para desconectar y liberar todos los recursos usados
   por /dev/md4:

 # mdconfig -d -u 4

   Es posible listar informacion sobre dispositivos md(4)
   configurados en el sistema mediante mdconfig -l.

   En FreeBSD 4.X se usa vnconfig(8) para desconectar el dispositivo.
   Por ejemplo, para desconectar y liberar todos los recursos usados
   por /dev/vn4:

 # vnconfig -u vn4

     --------------------------------------------------------------

18.13. Instantaneas ("snapshots") de sistemas de ficheros

   Escrito por Tom Rhodes.

   FreeBSD 5.0 ofrece una caracteristica relacionada con Soft
   Updates: las instantaneas del sistema de ficheros.

   Las instantaneas permiten a un usuario crear imagenes de uno o mas
   sistemas de ficheros dados, y tratarlas como un fichero. Los
   ficheros de instantanea deben crearse en el sistema de ficheros en
   el que se realiza la accion, y un usuario puede crear hasta 20
   (veinte) instantaneas por sistema de ficheros. Las instantaneas
   activas se graban en el superbloque, lo que hace que sigan ahi
   independientemente de montajes, remontajes y reinicios del
   sistema. Cuando ya no necesite una instantanea puede borrarla con
   rm(1). Las instantaneas pueden borrarse en cualquier orden pero
   puede que no pueda recuperar todo el espacio debido a que otra
   instantanea puede reclamar algunos bloques liberados.

   La bandera inalterable de fichero snapshot se activa con
   mksnap_ffs(8) despues de la creacion inicial de un fichero de
   instantanea. unlink(1) hace una excepcion con los ficheros de
   instantanea, ya que permite que se les borre.

   Las instantaneas se crean con mount(8). Veamos un ejemplo. Vamos a
   colocar una instantanea de /var en /var/snapshot/snap:

 # mount -u -o snapshot /var/snapshot/snap /var

   Tambien puede usar mksnap_ffs(8) para crear una instantanea:

 # mksnap_ffs /var /var/snapshot/snap

   Si busca ficheros de instantanea en un sistema de de ficheros (por
   ejemplo /var) puede usar find(1):

 # find /var -flags snapshot

   Una instantanea tiene distintos usos:

     * Algunos administradores usan un fichero de instantanea como
       respaldo, puesto que la instantanea puede guardarse en CD o
       cinta.

     * Integridad de ficheros; fsck(8) puede ejecutarse en una
       instantanea. Asumiendo que el sistema de ficheros estuviera
       limpio cuando se monto se debe obtener un resultado limpio (e
       intacto). En esencia el proceso fsck(8) hace esto mismo en
       segundo plano.

     * Ejecucion de dump(8) en la instantanea. Se obtendra un dump
       consistente con el sistema de ficheros y los sellos de hora de
       la instantanea. dump(8) tambien puede leer una instantanea,
       crear una imagen dump y eliminar la instantanea en un comando
       usando la opcion -L.

     * Ejecutar un mount(8) contra la instantanea como una imagen
       congelada del sistema de ficheros. Para montar la instantanea
       /var/snapshot/snap ejecute:

 # mdconfig -a -t vnode -f /var/snapshot/snap -u 4
 # mount -r /dev/md4 /mnt

   Podra recorrer la jerarquia de su sistema de ficheros /var
   congelado montado en /mnt. Todo estara en el mismo estado en el
   que estaba cuando creo la instantanea. La unica excepcion es que
   cualquier instantanea anterior aparecera como un fichero de
   longitud cero. Cuando haya acabado de usar una instantanea puede
   desmontarla con:

 # umount /mnt
 # mdconfig -d -u 4

   Para mas informacion sobre softupdates e instantaneas de sistemas
   ficheros, incluyendo textos tecnicos, visite el sitio web de
   Marshall Kirk McKusick: http://www.mckusick.com/.

     --------------------------------------------------------------

18.14. Cuotas en sistemas de ficheros

   Las cuotas son una opcion del sistema operativo que le permite
   limitar la cantidad de espacio en disco y/o el numero de fichero
   que un usuario o miembros de un grupo pueden crear en el sistema,
   pudiendo ademas hacerlo de forma independiente en cada sistema de
   ficheros. Suele usarse principalmente en sistemas de tiempo
   compartido, donde se busca limitar la cantidad de recursos que
   cualquier usuario o grupo pueden utilizar. Esto evitara que un
   usuario o un grupo de usuarios consuma todos el espacio disponible
   en disco.

     --------------------------------------------------------------

  18.14.1. Configuracion del sistema para habilitar cuotas de disco

   Antes de intentar configurar el uso de cuotas de disco hay que
   asegurarse de que las cuotas estan activadas en el kernel. La
   siguiente linea debe estar en el fichero de de configuracion del
   kernel:

 options QUOTA

   El kernel GENERIC no lo tiene activado por defecto, asi que tendra
   que configurar, compilar e instalar un kernel personalizado para
   poder usar cuotas de disco. Por favor, consulte el Capitulo 8 para
   mas informacion sobre la configuracion del kernel.

   A continuacion tendra que habilitar las cuotas de disco en
   /etc/rc.conf. Anadale la siguiente linea:

 enable_quotas="YES"

   Hay una variable que le permitira efectuar un control mas
   exhaustivo sobre el arranque de cuotas. Normalmente se revisa la
   integridad de cuotas de cada sistema de ficheros en el arranque;
   el responsable es quotacheck(8). quotacheck(8) se asegura de que
   los datos que hay en su base de datos de cuotas reflejen realmente
   los datos del sistema de ficheros. Es un proceso que lleva mucho
   tiempo y que afectara significativamente al tiempo que tardara su
   sistema en arrancar. Si desea saltarse ese paso puede usar una
   variable al efecto en /etc/rc.conf:

 check_quotas="NO"

   Para concluir tendra que editar /etc/fstab para habilitar las
   cuotas de disco para cada sistema de ficheros. Es aqui donde podra
   habilitar cuotas por usuario, por grupo, o ambos en todos sus
   sistemas de ficheros.

   Para habilitar cuotas por usuario en un sistema de ficheros anada
   la opcion userquota al campo de opciones en la entrada de
   /etc/fstab que corresponda al sistema de ficheros en el que quiere
   habilitar las cuotas. Veamos un ejemplo:

 /dev/da1s2g   /home    ufs rw,userquota 1 2

   En el caso de las cuotas de grupo es muy similar. Use la opcion
   groupquota en lugar de userquota. Para habilitar cuotas por
   usuario y por grupo modifique la entrada de este modo:

 /dev/da1s2g    /home    ufs rw,userquota,groupquota 1 2

   Por defecto los ficheros de cuota se guardan en el directorio raiz
   del sistema de ficheros con los nombres quota.user y quota.group
   para cuotas de usuario y grupo respectivamente. Consulte fstab(5)
   para mas informacion. Aunque la pagina de manual de fstab(5) diga
   que puede especificar otra ubicacion para los ficheros de cuota,
   no se recomienda hacerlo debido a que las diversas herramientas de
   gestio cuotas no parecen sobrellevar esto adecuadamente.

   Hecho todo esto puede reiniciar su sistema con el nuevo kernel.
   /etc/rc ejecutara automaticamente los comandos apropiados para
   crear los ficheros de cuota iniciales que requieran todas las
   entradas en en /etc/fstab, asi que no hay necesidad de crear
   ficheros de cuota de longitud cero.

   En el curso normal de operaciones no se le deberia pedir que
   ejecute quotacheck(8), quotaon(8) o quotaoff(8) manualmente. Sin
   embargo, tal vez quiera leer sus paginas de manual para
   familiarizarse con su funcionamiento.

     --------------------------------------------------------------

  18.14.2. Configuracion de limites de cuota

   Una vez que tenga configurado su sistema para usar cuotas
   verifique que en realidad esten habilitadas. Una manera sencilla
   de hacer esto es ejecutar:

 # quota -v

   Debe ver un resumen de una sola linea de uso del disco y los
   limites de cuota actuales para cada sistema de ficheros donde
   esten habilitadas las cuotas.

   Ahora puede iniciar la asignacion de limites de cuota con
   edquota(8).

   Tiene varias opciones para imponer limites en el espacio de disco
   que un usuario o grupo puede ocupar, y cuantos ficheros pueden
   crear. Puede limitar el uso de disco basandose en el espacio en
   disco (cuotas de bloque) o en el numero de ficheros (cuotas de
   inodo) o una combinacion de ambas. Cada uno de estos limites a su
   vez se divide en dos categorias: limites duros y suaves.

   Un limite duro no puede ser excedido. Una vez que un usuario
   alcanza su limite duro no puede realizar mas ubicaciones en el
   sistema de ficheros en cuestion. Por ejemplo, si el usuario tiene
   un limite duro de 500 kbytes en un sistema de ficheros y esta
   utilizando 490 kbytes, el usuario solo puede ocupar otros 10
   kbytes. Un intento de ocupar 11 kbytes mas fallara.

   Los limites suaves pueden excederse por un periodo Este periodo de
   tiempo recibe el nombre de periodo de gracia, que por defecto es
   una semana. Si un usuario sobrepasa su periodo de gracia el limite
   suave se convertira en un limite duro y no se permitir'n usos de
   disco adicionales. Cuando el usuario devuelve su cuota de uso de
   recursos a un punto por debajo de su limite suave el periodo de
   gracia se reinicia.

   Veamos un ejemplo de uso de edquota(8). Si se usa edquota(8) se
   entra en el el editor declarado en la variable de entorno EDITOR,
   o en el editor vi si no ha modificado el valor por defecto de la
   variable EDITOR, para que pueda editar los limites de cuota.

 # edquota -u test

 Quotas for user test:
 /usr: kbytes in use: 65, limits (soft = 50, hard = 75)
         inodes in use: 7, limits (soft = 50, hard = 60)
 /usr/var: kbytes in use: 0, limits (soft = 50, hard = 75)
         inodes in use: 0, limits (soft = 50, hard = 60)

   Deberia ver dos lineas por cada sistema de ficheros que tenga
   habilitadas las cuotas. Una linea para los limites de bloque y una
   linea para limites de inodo. Por ejemplo, para elevar los limites
   de este usuario de un limite suave de 50 y un limite duro de 75 a
   un limite suave de 500 y un limite duro de 600, cambie:

 /usr: kbytes in use: 65, limits (soft = 50, hard = 75)

   por:

 /usr: kbytes in use: 65, limits (soft = 500, hard = 600)

   Los nuevos limites de cuota se aplicaran en cuanto salga del
   editor.

   Algunas veces se quieren activar limites de cuota en un rango de
   UIDs. Esto puede realizarse con la opcion -p de edquota(8).
   Primero asigne el limite de cuota deseado a un usuario y luego
   ejecute edquota -p protouser startuid-enduid. Por ejemplo, si el
   usuario test tiene el limite de cuota deseado, el siguiente
   comando puede usarse para duplicar esos limites de cuota para los
   UIDs de 10,000 hasta 19,999:

 # edquota -p test 10000-19999

   Para mas informacion consulte la pagina de manual edquota(8).

     --------------------------------------------------------------

  18.14.3. Revision de los limites de cuota y uso de disco

   Puede usar quota(1) o repquota(8) para revisar los limites de
   cuota y uso del disco. El comando quota(1) le permitira revisar
   cuotas individuales de usuario o grupo y uso del disco. Un usuario
   puede solamente examinar su propia cuota y la cuota de un grupo al
   que pertenezca. Solamente el superusuario puede ver las cuotas de
   todos los usuarios y grupos. repquota(8) permite obtener un
   resumen de todas las cuotas y uso del disco de todos los sistemas
   de ficheros con cuotas habilitadas.

   En el siguiente ejemplo vemos la salida de quota -v para un
   usuario que tiene limites de cuota en dos sistemas de ficheros.

 Disk quotas for user test (uid 1002):
      Filesystem  usage    quota   limit   grace   files   quota   limit   grace
            /usr      65*     50      75   5days       7      50      60
        /usr/var       0      50      75               0      50      60

   En el sistema de ficheros /usr del ejemplo este usuario esta
   actualmente 15 kbytes sobre su limite suave de 50 kbytes y le
   quedan 5 dias de su periodo de gracia. Observe el asterisco, * que
   indica que el usuario esta actualmente por encima de su limite de
   cuota.

   Normalmente los sistemas de ficheros en los que el usuario no este
   utilizando espacio en disco no se mostraran en la salida del
   comando quota(1), incluso si tiene un limite de cuota asignado
   para esos sistemas de fichero. La opcion -v desplegara esos
   sistemas de ficheros, en nuestro ejemplo el sistema de ficheros
   /usr/var.

     --------------------------------------------------------------

  18.14.4. Cuotas en NFS

   Las cuotas son impuestas por el subsistema de cuotas en el
   servidor NFS. El daemon rpc.rquotad(8) facilita la informacion a
   quota(1) en los clientes NFS, permitiendoles a los usuarios de
   esas maquinas ver sus estadisticas de cuota.

   Habilite rpc.rquotad en /etc/inetd.conf del siguiente modo:

 rquotad/1      dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad

   Y reinicie inetd:

 # kill -HUP `cat /var/run/inetd.pid`

     --------------------------------------------------------------

18.15. Cifrado de particiones de disco

   Escrito por Lucky Green.

   FreeBSD ofrece un alto grado de proteccion contra el acceso no
   autorizado a los datos. Los Permisos de fichero y MAC (Mandatory
   Access Control, controles de acceso obligatorio, consulte el
   Capitulo 16) ayudan a evitar que otros tengan acceso no autorizado
   a los datos mientras el sistema operativo esta funcionando y la
   computadora esta encendida. Sin embargo los permisos impuestos por
   el sistema operativo son irrelevantes si un atacante tiene acceso
   fisico al sistema y puede simplemente mover el disco duro de la
   computadora a otro sistema para copiar y analizar datos sensibles.

   Independientemente de como un atacante pueda conseguir acceso a un
   disco duro a a un sistema apagado, el cifrado de disco basado en
   GEOM (GEOM Based Disk Encryption, gbde) puede proteger los datos
   de los sistemas de ficheros del sistema incluso contra atacantes
   muy decididos y con recursos adecuados a su disposicion. A
   diferencia de otros metodos de cifrado mas dificiles de usar, que
   cifran unicamente ficheos individuales, gbde cifra sistemas de
   ficheros completos de forma transparente. Ni un solo texto en
   limpio llega a tocar el disco duro.

     --------------------------------------------------------------

  18.15.1. Habilitar gbde en el kernel

    1. Conviertase en root

       La configuracion de gbde requiere privilegios de superusuario.

 % su -
 Password:

    2. Verifique la version del sistema operativo

       gbde(4) requiere FreeBSD 5.0 o posterior.

 # uname -r
 5.0-RELEASE

    3. Anada soporte de gbde(4) al fichero de configuracion de su
       kernel

       Anada la siguiente linea al fichero de configuracion de su
       kernel con el editor que prefiera:

       options GEOM_BDE

       Configure, recompile e instale el kernel de FreeBSD. Este
       proceso se detalla en el Capitulo 8.

       Reinicie con el nuevo kernel.

     --------------------------------------------------------------

  18.15.2. Preparacion del disco duro cifrado

   El siguiente ejemplo asume que anade a su sistema un disco duro
   nuevo que contendra una sola particion cifrada. Esta particion se
   montara como /private. gbde puede usarse tambien para cifrar /home
   y /var/mail, pero esto requeriria instrucciones mas complejas que
   las que se pretenden dar en esta introduccion.

    1. Anada el nuevo disco

       Instale el nuevo disco en el sistema como se explico en la
       Seccion 18.3. En nuestro ejemplo hemos anadido una nueva
       particion de disco como /dev/ad4s1c. Los dispositivos
       /dev/ad0s1* representan particiones FreeBSD estandar que i
       existian previamente en el sistema.

 # ls /dev/ad*
 /dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
 /dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
 /dev/ad0s1a     /dev/ad0s1d     /dev/ad4

    2. Cree un directorio para los ficheros "lock" de gbde

 # mkdir /etc/gbde

       Los ficheros "lock" de gbde contienen informacion que gbde
       requiere para acceder a las particiones cifradas. Sin el
       acceso a los ficheros "lock" gbde no podra descifrar los datos
       alojados en la particion cifrada sin una cantidad
       significativa de trabajo, tarea para la que ademas no le
       resultara de ayuda este software. Cada particion cifrada
       utiliza un fichero "lock" separado.

    3. Inicialice la particion gbde

       Una particion gbde debe inicializarse antes de que pueda
       utilizarse. Esta inicializacion solo debe hacerse una vez:

 # gbde init /dev/ad4s1c -i -L /etc/gbde/ad4s1c

       gbde(8) abrira su editor para que pueda configurar las
       opciones de configuracion que se le presentaran en una
       plantilla. Para utilizar UFS1 o UFS2, ponga el sector_size a
       2048:

 $FreeBSD: src/sbin/gbde/template.txt,v 1.1 2002/10/20 11:16:13 phk Exp $
 #
 # El tamano de sector (sector size) es la unidad de datos mas
 # pequena que podra leer o escribir.  Si la elige demasiado
 # pequena reducira el rendimiento y la cantidad de espacio
 # util.  Si la elige demasiado grande puede hacer que los sistemas
 # de ficheros no funcionen.  512 es el tamano minimo y
 # siempre funciona.  Si va a usar UFS utilice
 #
 sector_size     =       2048
 [...]

       gbde(8) le pedira dos veces que escriba la contrasena que debe
       usarse para asegurar los datos. La contrasena debe ser la
       misma las dos veces. La capacidad de gbde de proteger sus
       datos depende integramente de la calidad de la contrasena que
       elija. [11]

       El fichero gbde init crea un fichero "lock" para su particion
       gbde, que en nuestro ejemplo esta en /etc/gbde/ad4s1c.

         AtencionEs imprescindible que los ficheros "lock" de gbde
         deben respaldarse junto con el contenido de cualquier
         particion cifrada. Aunque la sola accio de borrar un fichero
         "lock" no puede evitar que un atacante motivado descifre una
         particion gbde sin el fichero "lock", el propietario
         legitimo no podra acceder a los datos en la particion
         cifrada sin una cantidad notable de trabajo, que es
         necesario senalar que no entra dentro de las funciones de
         gbde(8) ni de su disenador.

    4. Conecte al kernel la particion cifrada

 # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

       Se le pedira la contrasena que elijio al inicializar la
       particion cifrada. El nuevo dispositivo cifrado aparecera en
       /dev como /dev/nombre_de_dispositivo.bde:

 # ls /dev/ad*
 /dev/ad0        /dev/ad0s1b     /dev/ad0s1e     /dev/ad4s1
 /dev/ad0s1      /dev/ad0s1c     /dev/ad0s1f     /dev/ad4s1c
 /dev/ad0s1a     /dev/ad0s1d     /dev/ad4        /dev/ad4s1c.bde

    5. Cree un sistema de ficheros en el dispositivo cifrado

       Una vez el dispositivo cifrado esta conectado al kernel puede
       crear un sistema de ficheros en el dispositivo con newfs(8).
       Dado que es mas rapido inicializar un sistema de ficheros del
       nuevo UFS2 que un sistema de ficheros del tradicional UFS1, le
       recomendamos encarecidamente usar newfs(8) con la opcion -O2.

         Nota: La opcion -O2 es el valor por defecto en
         FreeBSD 5.1-RELEASE y siguientes.

 # newfs -U -O2 /dev/ad4s1c.bde

         Nota: newfs(8) debe ejecutarse en una particion gbde
         conectada, que podra identificar por la extension *.bde del
         nombre del dispositivo.

    6. Montar la particion cifrada

       Cree un punto de montaje para el sistema cifrado de ficheros.

 # mkdir /private

       Montar el sistema cifrado de ficheros.

 # mount /dev/ad4s1c.bde /private

    7. Verificar que el sistema cifrado de ficheros este disponible

       el sistema cifrado de ficheros deberia ser visible para df(1)
       y estar listo para su uso.

 % df -H
 Filesystem        Size   Used  Avail Capacity  Mounted on
 /dev/ad0s1a      1037M    72M   883M     8%    /
 /devfs            1.0K   1.0K     0B   100%    /dev
 /dev/ad0s1f       8.1G    55K   7.5G     0%    /home
 /dev/ad0s1e      1037M   1.1M   953M     0%    /tmp
 /dev/ad0s1d       6.1G   1.9G   3.7G    35%    /usr
 /dev/ad4s1c.bde   150G   4.1K   138G     0%    /private

     --------------------------------------------------------------

  18.15.3. Montaje de sistemas cifrados de ficheros

   Todos los sistemas cifrados de ficheros deben reconectarse al
   kernel despues de cada arranque. Ademas, antes de poder utilizarlo
   debe revisarlo por si contuviera errores y montarlo. Todo el
   proceso debe ser ejecutado por el usuario root.

    1. Conectar la particion gbde al kernel

 # gbde attach /dev/ad4s1c -l /etc/gbde/ad4s1c

       Se le pedira la contrasena que elijio en la inicializacion de
       la particion cifrada gbde.

    2. Revision de errores en el sistema de ficheros

       Como que los sistemas cifrados de ficheros no pueden aparecer
       en /etc/fstab (lo que haria que fueran montados
       automaticamente), los sistemas de ficheros deben revisarse
       manualmente mediante fsck(8) antes de montarlos.

 # fsck -p -t ffs /dev/ad4s1c.bde

    3. Montar los sistemas cifrados de ficheros

 # mount /dev/ad4s1c.bde /private

       El sistema cifrado de ficheros esta listo para su uso.

     --------------------------------------------------------------

    18.15.3.1. Montar automaticamente particiones cifradas

   Es posible usar un "script" para automatizar la conexion, revision
   y el montaje de una particion cifrada, pero por razones de
   seguridad el "script" no debe contener la contrasena de gbde(8).
   Se recomienda ejecutar esos "scripts" se ejecuten de forma manual
   proporcionando la contrasena via consola o ssh(1).

     --------------------------------------------------------------

  18.15.4. Proteccion criptografica que usa gbde

   gbde(8) cifra el XXX sector payload usando AES de 128 bits en modo
   CBC. Cada sector en el disco se cifra con una clave AES diferente.
   Para mas informacion sobre el diseno criptografico de gbde,
   incluyendo como se derivan las claves de sector a partir de la
   contrasena consulte gbde(4).

     --------------------------------------------------------------

  18.15.5. Problemas de compatibilidad

   sysinstall(8) es incompatible con dispositivos gbde cifrados.
   Todos los dispositivos *.bde deben desconectarse del kernel antes
   de iniciar sysinstall(8) o se "congelara" durante la prueba
   inicial de dispositivos. Para desconectar el el dispositivo
   cifrado de nuestro ejemplo haga lo siguiente:

 # gbde detach /dev/ad4s1c

   Tenga en cuenta tambien que, como vinum(4) no utiliza el
   subsistema geom(4), no es posible usar gbde en volumenes vinum.

     --------------------------------------------------------------

Capitulo 19. GEOM: Marco de trabajo modular de transformacion de discos

   Escrito por Tom Rhodes.

   Traduccion de Enrique Matias Sanchez <cronopios@gmail.com>.

     --------------------------------------------------------------

19.1. Sinopsis

   Este capitulo explica el uso de discos bajo el marco de trabajo
   GEOM en FreeBSD. Esto incluye las principales utilidades de
   control de RAID que usan el marco de trabajo para su
   configuracion. Este capitulo no se adentrara en un examen en
   profundidad de como GEOM maneja o controla la E/S, el subsistema
   subyacente, o el codigo. Esta informacion se proporciona en la
   pagina de manual geom(4) y sus diversas referencias VEA TAMBIEN.
   Este capitulo tampoco es una guia definitiva de configuraciones
   RAID. Solo se examinan las clasificaciones de RAID que puede usar
   GEOM.

   Tras leer este capitulo, sabra:

     * Que tipo de soporte para RAID esta disponible a traves de
       GEOM.

     * Como utilizar las utilidades base para configurar, mantener, y
       manipular los diversos niveles de RAID.

     * Como replicar, unir, cifrar, y conectar remotamente
       dispositivos de disco por medio de GEOM.

     * Como solucionar problemas con los discos adscritos al marco de
       trabajo GEOM.

   Antes de leer este capitulo, deberia:

     * Entender como trata FreeBSD a los dispositivos de disco
       (Capitulo 18).

     * Saber como configurar e instalar un nuevo nucleo de FreeBSD
       (Capitulo 8).

     --------------------------------------------------------------

19.2. Introduccion a GEOM

   GEOM permite el acceso y control de clases --sectores de arranque
   maestros (MBR), etiquetas BSD, etc-- por medio del uso de
   proveedores, o de los ficheros especiales de /dev. Capaz de
   trabajar con varias configuraciones de RAID por software, GEOM
   proporcionara transparentemente acceso al sistema operativo y las
   utilidades del mismo.

     --------------------------------------------------------------

19.3. RAID0 - Distribucion por bandas

   Escrito por Tom Rhodes y Murray Stokely.

   La distribucion por bandas (striping) es un metodo que se usa para
   combinar varias unidades de disco en un unico volumen. En muchos
   casos, esto se hace usando controladoras por hardware. El
   subsistema de discos GEOM proporciona soporte por software para
   RAID0, tambien conocido como discos configurados en bandas.

   En un sistema RAID0, los datos se dividen en bloques que son
   escritos por todas las unidades de la agrupacion. En lugar de
   tener que esperar a que el sistema escriba 256 kB en un disco, un
   sistema RAID0 puede escribir simultaneamente 64 kB en cada uno de
   los cuatro discos, ofreciendo un superior rendimiento de E/S. Este
   rendimiento se puede mejorar aun mas usando varias controladoras
   de disco.

   Cada uno de los discos de una banda RAID0 debe ser del mismo
   tamano, pues las peticiones de E/S estan intercaladas para leer o
   escribir en varios discos en paralelo.

   Ilustracio de la distribucion por bandas de los discos

   Creacion de una banda de discos ATA sin formatear

    1. Cargue el modulo geom_stripe:

 # kldload geom_stripe.ko

    2. Asegurese de que existe un punto de montaje adecuado. Si este
       volumen se convertira en una particion raiz, utilice
       temporalmente otro punto de montaje, como /mnt.

 # mkdir /mnt

    3. Determine los nombres de dispositivo de los discos que seran
       configurados en bandas, y cree el nuevo dispositivo de banda.
       Por ejemplo, podria utilizar la siguiente orden para
       configurar en bandas dos discos ATA sin usar ni particionar:
       /dev/ad2 y /dev/ad3.

 # gstripe label -v st0 /dev/ad2 /dev/ad3

    4. Si se va a usar este volumen como dispositivo raiz para
       arrancar el sistema, debe ejecutar la siguiente orden antes de
       crear el sistema de ficheros:

 # fdisk -vBI /dev/stripe/st0

    5. Se debe crear una tabla de particiones en el nuevo volumen con
       la siguiente orden:

 # bsdlabel -wB /dev/stripe/st0

    6. Aademas del dispositivo st0, este proceso deberia haber creado
       otros dos dispositivos en el directorio /dev/stripe,
       incluyendo st0a y st0c. Ahora se debe crear un sistema de
       ficheros en el dispositivo st0a usando la siguiente orden
       newfs:

 # newfs -U /dev/stripe/st0a

       Por la pantalla se deslizaran muchos numeros, y al cabo de
       unos pocos segundos, el proceso habra finalizado. El volumen
       ha sido creado y esta preparado para ser montado:

   Se puede usar la siguiente orden para montar manualmente una banda
   de discos recien creada:

 # mount /dev/stripe/st0a /mnt

   Para montar automaticamente este sistema de ficheros distribuido
   por bandas durante el proceso de arranque, ponga la informacion
   del volumen en el fichero /etc/fstab:

 # echo "/dev/stripe/st0a /mnt ufs rw 2 2" \
     >> /etc/fstab

   Tambien se debe cargar automaticamente durante la inicializacion
   del sistema el modulo geom, anadiendo una linea a
   /boot/loader.conf:

 # echo 'geom_stripe_load="YES"' >> /boot/loader.conf

     --------------------------------------------------------------

19.4. RAID1 - Replicacion

   La replicacion es una tecnologin que usan muchas empresas y
   usuarios para hacer copias de respaldo de sus datos sin
   interrupciones. Cuando hay una replica, simplemente significa que
   el discoB replica al discoA. O, quiza el discoC+D replica al
   discoA+B. Al margen de la configuracion de los discos, lo
   importante es que la informacion de un disco o particion esta
   siendo replicada. Mas adelante se podria restaurar esa informacion
   mas facilmente, hacerse una copia de respaldo sin provocar
   intrrupciones de servicio o acceso, e incluso almacenarla
   fisicamente en una caja fuerte para datos.

   Para empezar, asegurese de que el sistema tiene dos unidades de
   disco del mismo tamano, eb este ejercicio se supone que son discos
   SCSI de acceso directo (da(4)).

   Comience por instalar FreeBSD en el primer disco con solo dos
   particiones. Una deberia ser una particion de intercambio, de dos
   veces el tamano de la RAM, y todo el espacio restante se dedicara
   al sistema de ficheros raiz (/). Es posible tener particiones
   aparte para otros puntos de montajes; sin embargo, esto
   multiplicara por diez el nivel de dificultad, debido a la
   alteracion manual de las opciones de bsdlabel(8) y fdisk(8).

   Reinicie y espere a que el sistema se inicie por completo. Una vez
   haya finalizado este proceso, ingrese como usuario root.

   Cree el dispositivo /dev/mirror/gm y enlacelo a /dev/da1:

 # gmirror label -vnb round-robin gm0 /dev/da1

   El sistema deberia responder con:

 Metadata value stored on /dev/da1.
 Done.

   Inicialice GEOM, esto cargara el modulo del nucleo
   /boot/kernel/geom_mirror.ko:

 # gmirror load

     Nota: Esta orden deberia haber creado en el directorio
     /dev/mirror los nodos de dispositivo gm0, gm0s1, gm0s1a, y
     gm0s1c.

   Instale una etiqueta generica fdisk y el codigo de arranque en el
   recien creado dispositivo gm0:

 # fdisk -vBI /dev/mirror/gm0

   Ahora instale la informacion bsdlabel generica:

 # bsdlabel -wB /dev/mirror/gm0s1

     Nota: Si hay varias slices (rodajas) y particiones, necesitara
     modificar las opciones de las dos ordenes anteriores. Deben
     coincidir con la slice y tamano de particion del otro disco.

   Utilice la utilidad newfs(8) para crear un sistema de ficheros
   predefinido en nodo de dispositivo gm0s1a:

 # newfs -U /dev/mirror/gm0s1a

   Esto deberia haber hecho que el sistema mostrara alguna
   informacion y un punado de numeros. Esto es bueno. Examine la
   pantalla por si hay algun mensaje de error y monte el dispositivo
   en el punto de montaje /mnt:

 # mount /dev/mirror/gm0s1a /mnt

   Ahora mueva todos los datos del disco de arranque a este nuevo
   sistema de ficheros. Este ejemplo usa las ordenes dump(8) y
   restore(8); aunque, dd(1) tambien deberia funcionar en este
   escenario. Evitamos utilizar tar(1) porque no copiara el codigo de
   arranque. De ese modo, el fallo estaria garantizado.

 # dump -L -0 -f- / |(cd /mnt && restore -r -v -f-)

   Se debe hacer esto para cada sistema de ficheros. Simplemente
   ponga el sistema de ficheros adecuado en la ubicacion correcta al
   ejecutar la orden mencionada.

   Ahora edite el fichero replicado /mnt/etc/fstab y elimine o
   comente el fichero swap [12]. Cambie la informacion del otro
   sistema de ficheros para que utilice el nuevo disco. Vea el
   siguiente ejemplo:

 # Device                Mountpoint      FStype  Options         Dump    Pass#
 #/dev/da0s2b             none            swap    sw              0       0
 /dev/mirror/gm0s1a       /               ufs     rw              1       1

   Ahora cree un fichero boot.conf tanto en la particion actual como
   en la nueva particion raiz. Este fichero "ayudara" al BIOS del
   sistema a arrancar la unidad correcta:

 # echo "1:da(1,a)/boot/loader" > /boot.config

 # echo "1:da(1,a)/boot/loader" > /mnt/boot.config

     Nota: Lo hemos colcoado en ambas particiones raiz para asegurar
     un arranque correcto. Si por alguna razon el sistema no pudiera
     leer en la nueva particion raiz, esta disponible un arranque a
     prueba de fallos.

   Ahora agregue la siguiente linea al nuevo /boot/loader.conf:

 # echo 'geom_mirror_load="YES"' >> /mnt/boot/loader.conf

   Esto le dice a la utilidad loader(8) que cargue el geom_mirror.ko
   durante la inicializacion del sistema.

   Reinicie el sistema:

 # shutdown -r now

   Si todo ha ido bien, el sistema deberia haber arrancado desde el
   dispositivo gm0s1a, y un prompt login deberia estar a la espera.
   Si algo fue mal, consulte la seccion posterior de resolucion de
   problemas. Ahora agregue el disco da0 al dispositivo gm0:

 # gmirror configure -a gm0
 # gmirror insert gm0 /dev/da0

   La opcion -a le dice a gmirror(8) que use sincronizacion
   automatica; por ejemplo, que replique las escrituras en disco
   automaticamente. La pagina de manual explica como reconstruir y
   reemplazar discos, aunque utiliza data en vez de gm0.

     --------------------------------------------------------------

  19.4.1. Resolucion de problemas

    19.4.1.1. El sistema se niega a arrancar

   Si el sistema arranca hasta un prompt similar a:

 ffs_mountroot: can't find rootvp
 Root mount failed: 6
 mountroot>

   Reinicie la maquina utilizando el boton de encendido o el de
   reset. En el menu de arranque, seleccione la opcion seis (6). Esto
   llevara al sistema a un prompt de loader(8). Cargue el modulo del
   nucleo manualmente:

 OK? load geom_mirror.ko
 OK? boot

   Si esto funciona, es que por alguna razon el modulo no se cargaba
   correctamente. Ponga:

 options GEOM_MIRROR

   en el fichero de configuracion del nucleo, recompile y reinstale.
   Esto deberia solucionar el problema.

     --------------------------------------------------------------

               Capitulo 20. El Gestor de Volumenes Vinum

20.1. Sinopsis

     --------------------------------------------------------------

20.2. Los Discos son Demasiado Pequenos

   Texto Original de Greg Lehey.

     --------------------------------------------------------------

20.3. Cuellos de Botella en el Acceso

   Figura 20-1. Organizacion Concatenada

   Figura 20-2. Organizacion con "Striping"

     --------------------------------------------------------------

20.4. Integridad de Datos

   Figura 20-3. Organizacion en RAID-5

     --------------------------------------------------------------

20.5. Objetos Vinum

  20.5.1. Consideraciones sobre el Tamano de los Volumenes

     --------------------------------------------------------------

  20.5.2. Almacenamiento Redundante de Datos

     --------------------------------------------------------------

  20.5.3. Cuestiones Relacionadas con el Rendimiento

     --------------------------------------------------------------

  20.5.4. Which Plex Organization?

     --------------------------------------------------------------

  20.5.5. Vinum Plex Organizations

     --------------------------------------------------------------

20.6. Ejemplos

     --------------------------------------------------------------

  20.6.1. El Fichero de Configuracion

   Figura 20-4. Un Volumen Vinum Sencillo

     --------------------------------------------------------------

  20.6.2. Increased Resilience: Mirroring

   Figura 20-5. Un Volumen Vinum Replicado

     --------------------------------------------------------------

  20.6.3. Optimizacion del Rendimiento

   Figura 20-6. Un Volumen Vinum en "Striping"

     --------------------------------------------------------------

  20.6.4. Resilience and Performance

   Figura 20-7. Un Volumen Vinum Replicado y en "Striping"

     --------------------------------------------------------------

20.7. Esquema de Nombres de los Objetos

     * The control devices /dev/vinum/control and
       /dev/vinum/controld, which are used by vinum(8) and the Vinum
       daemon respectively.

     --------------------------------------------------------------

  20.7.1. Creacion de un Sistema de Ficheros

     --------------------------------------------------------------

20.8. Configuracion de Vinum

     --------------------------------------------------------------

  20.8.1. Arranque

     --------------------------------------------------------------

    20.8.1.1. Arranque Automatico

     --------------------------------------------------------------

20.9. Uso de Vinum en el Sistema de Ficheros Raiz

     --------------------------------------------------------------

  20.9.1. Inicio de Vinum en el Arranque para que Incluya el Sistema de
  Ficheros Raiz

     --------------------------------------------------------------

  20.9.2. Configuracion de un Volumen Raiz en Vinum Accesible Para la
  Secuencia de Arranque

     --------------------------------------------------------------

  20.9.3. Ejemplo de Raiz basado en Vinum

     --------------------------------------------------------------

  20.9.4. Solucion de Problemas

     --------------------------------------------------------------

    20.9.4.1. La Secuencia de Arranque Carga Pero el Sistema no Arranca

     --------------------------------------------------------------

    20.9.4.2. Solo se Carga la Secuencia Primaria de Arranca

     --------------------------------------------------------------

    20.9.4.3. No Hay Arranque, la Secuencia de Arranque da un Panico

     --------------------------------------------------------------

  20.9.5. Particularidades de Vinum en FreeBSD 4.x

     --------------------------------------------------------------

                      Capitulo 21. Virtualizacion

   Contributed by Murray Stokely.

21.1. *

   Pendiente de traduccion.

     --------------------------------------------------------------

      Capitulo 22. Localizacion - Uso y configuracion de I18N/L10N

   Contribuido por Andrey Chernov. Reescrito por Michael C. Wu.

   Traduccion de Enrique Matias Sanchez <cronopios@gmail.com>.

     --------------------------------------------------------------

22.1. Sinopsis

   FreeBSD es un proyecto muy distribuido, que cuenta con usuarios y
   contribuidores por todo el mundo. Este capitulo examina las
   funcionalidades de internacionalizacion y localizacion de FreeBSD
   que permiten llevar a cabo su trabajo a los usuarios no
   angloparlantes. Hay muchos aspectos en la implementacion de la
   i18n, tanto en los niveles de sistema como de aplicacion, asi que
   cuando sea conveniente dirigiremos al lector a fuentes de
   documentacion mas especificas.

   Tras leer este capitulo, sabra:

     * Como se codifican los distintos idiomas y "locales" en los
       sistemas operativos modernos.

     * Como configurar las "locales " para su interprete de ordenes.

     * Como configurar la consola para idiomas distintos al ingles.

     * Como emplear efizcamente el sistema de ventanas X en distintos
       idiomas.

     * Donde encontrar mas informacion sobre como escribir
       aplicaciones que sigan la i18n.

   Antes de leer este capitulo, deberia:

     * Saber como instalar aplicaciones adicionales de terceras
       partes (Capitulo 4).

     --------------------------------------------------------------

22.2. Lo basico

  22.2.1. ?Que es I18N/L10N?

   Los desarrolladores acortaron la palabra internacionalizacion al
   termino I18N, contando el numero de letras entre la primera y la
   ultima letra. L10N sigue el mismo esquema, y procede de
   "localizacion". Combinados, los metodos, protocolos y aplicaciones
   de I18N/L10N permiten a los usuarios usar el idioma de su
   eleccion.

   Las aplicaciones I18N se programan usando herramientas de I18N de
   bibliotecas. Estas permiten a los desarrolladores escribir un
   fichero sencillo y traducir los menus y textos contenidos a cada
   idioma. Animamos fervientemente a los programadores a que sigan
   esta convencion.

     --------------------------------------------------------------

  22.2.2. ?Por que deberia usar I18N/L10N?

   I18N/L10N se usa siempre que quiera ver, introducir o procesar
   datos en idiomas distintos al ingles.

     --------------------------------------------------------------

  22.2.3. ?Que idiomas estan soportados en el proyecto de I18N?

   La I18N y L10N no son especificos de FreeBSD. En la actualidad,
   uno puede elegir entre la mayoria de los principales idiomas del
   mundo, incluyendo pero sin limitarse a ellos: chino, aleman,
   japones, coreano, frances, ruso, vietnamita y otros.

     --------------------------------------------------------------

22.3. Uso de la localizacion

   En todo su esplendor, la I18N no es especifica de FreeBSD, y es
   una convencion. Le animamos a que ayude a FreeBSD siguiendo esta
   convencion.

   Las opciones de localizacion se basan en tres terminos
   principales: codigo de idioma, codigo de pais y codificacion. Los
   nombres de las "locales" se construyen a partir de estas tres
   partes como sigue:

 CodigoDelIdioma
       _CodigoDelPais.
       Codificacion

     --------------------------------------------------------------

  22.3.1. Codigos de idioma y pais

   Para localizar un sistema FreeBSD a un idioma concreto (o
   cualquier otro sistema de tipo UNIX que soporte I18N), los
   usuarios necesitar averiguar los codigos del pais e idioma
   concreto (los codigos de pais le dicen a las aplicaciones que
   variedad del idioma dado deben usar). Ademas, los navegadores web,
   servidores SMTP/POP, servidores web, etc toman decisiones
   basandose en ellos. Los siguientes son ejemplos de codigos de
   idioma/pais:

     Codigo de idioma/pais                  Descripcion               
   en_US                      Ingles - Estados Unidos de America      
   ru_RU                      Ruso de Rusia                           
   zh_TW                      Chino tradicional de Taiwan             

     --------------------------------------------------------------

  22.3.2. Codificaciones

   Algunos idiomas usan codificaciones distintas al ASCII que son de
   8 bits, caracteres anchos o multibyte; consulte multibyte(3) para
   conocer mas detalles. Algunas aplicaciones mas antiguas no los
   reconocen y los confunden con caracteres de control. Las
   aplicaciones modernas normalmente reconocen los caracteres de 8
   bits. Dependiendo de la implementacion, los usuarios pueden
   necesitar compilar una aplicacion con soporte para caracteres
   anchos o multibyte, o configurarlo correctamente. Para poder
   introducir y procesar caracteres anchos o multibyte, la Coleccion
   de "Ports" de FreeBSD proporciona diferentes programas a cada
   idioma. Dirijase a la documentacion de I18N del " port" de FreeBSD
   correspondiente.

   Especificamente, los usuarios necesitan mirar la documentacion de
   la aplicacion para decidir como configurarla correctamente o pasar
   valores correctos al configure/Makefile/compilador.

   Algunas cosas a tener presentes son:

     * Los juegos de caracteres de tipo char de C especificos para el
       idioma (consulte multibyte(3)), v.g. ISO-8859-1, ISO-8859-15,
       KOI8-R, CP437.

     * Las codificaciones anchas o multibyte, v.g. EUC, Big5 .

   Puede comprobar la lista activa de juegos de caracteres en el
   Registro IANA.

     Nota: Las versiones 4.5 y posteriores de FreeBSD usan en su
     lugar codificaciones de la "locale" compatibles con X11.

     --------------------------------------------------------------

  22.3.3. Aplicaciones I18N

   En el sistema de paquetes y ports de FreeBSD, las aplicaciones
   I18N se han denominado con I18N en su nombre para una facil
   identificacion. Sin embargo, no siempre soportan el idioma
   necesitado.

     --------------------------------------------------------------

  22.3.4. Configuracion de las "locales"

   Normalmente basta con exportar el valor del nombre de la "locale"
   como LANG en el interprete de ordenes de la sesion. Esto se podria
   hacer en el fichero ~/.login_conf del usuario o en el fichero de
   inicio del interprete de ordenes del usuario (~/.profile,
   ~/.bashrc , ~/.cshrc). No es necesario configurar las otras
   variables de localizacion como LC_CTYPE o LC_CTIME. Dirijase a la
   documentacion de FreeBSD especifica de su idioma para mas
   informacion.

   Deberia configurar las siguientes dos variables de entorno en sus
   ficheros de configuracion:

     * LANG para las funciones de la familia setlocale(3) de POSIX

     * MM_CHARSET para el juego de caracteres MIME de las
       aplicaciones

   Esto comprende la configuracion del interprete de ordenes del
   usuario, la configuracion especifica de la aplicacion y la
   configuracion de X11.

     --------------------------------------------------------------

    22.3.4.1. Metodos de configuracion de las " locales"

   Hay dos metodos para configurar las " locales", que se describen
   aqui abajo. El primero (que es el recomendado) es asignar las
   variables de entorno en una clase de sesion, y el segundo es
   anadir las asignaciones de las variables de entorno al fichero de
   inicio del interprete de ordenes del sistema.

     --------------------------------------------------------------

      22.3.4.1.1. Metodo de las clases de sesion

   Este metodo permite asignar las variables de entorno necesarias
   para el nombre de las "locales " y el juego de caracteres MIME de
   una sola vez para todos los posibles interpretes de ordenes, en
   vez de anadir asignaciones especificas en los ficheros de inicio
   de cada uno de los interpretes de ordenes. La configuracion a
   nivel de usuario la puede realizar el propio usuario, mientras que
   la configuracion a nivel de administrador precisa de permisos de
   superusuario.

     --------------------------------------------------------------

        22.3.4.1.1.1. Configuracion a nivel de usuario

   Esto es un ejemplo minimalista de un fichero .login_conf de la
   carpeta de inicio de un usuario, que contiene las dos variables
   configuradas para la codificacion Latin-1:

 me:\
         :charset=ISO-8859-1:\
         :lang=de_DE.ISO8859-1:

   Esto es un ejemplo de un .login_conf que configura las variables
   para el chino tradicional en la codificacion BIG-5. Observe que se
   configuran muchas mas variables porque algunos programas no
   respetan correctamente las variables de las "locales" para el
   chino, el japones y el coreano.

 #Users who do not wish to use monetary units or time formats
 #of Taiwan can manually change each variable
 me:\
         :lang=zh_TW.Big5:\
         :lc_all=zh_TW.Big:\
         :lc_collate=zh_TW.Big5:\
         :lc_ctype=zh_TW.Big5:\
         :lc_messages=zh_TW.Big5:\
         :lc_monetary=zh_TW.Big5:\
         :lc_numeric=zh_TW.Big5:\
         :lc_time=zh_TW.Big5:\
         :charset=big5:\
         :xmodifiers="@im=xcin": #Setting the XIM Input Server

   Consulte la configuracion a nivel de administrador y login.conf(5)
   para conocer mas detalles.

     --------------------------------------------------------------

        22.3.4.1.1.2. Configuracion a nivel de administrador

   Compruebe que la clase de sesion en /etc/login.conf establece el
   idioma adecuado. Asegurese de que estas opciones aparecen en
   /etc/login.conf :

 nombre_del_idioma:titulo_cuentas:\
         :charset=juego_de_caracteres_MIME:\
         :lang=nombre de la locale:\
         :tc=default:

   Asi que, si seguimos con nuestro ejemplo anterior que usaba
   Latin-1, tendria este aspecto:

 german:German Users Accounts:\
         :charset=ISO-8859-1:\
         :lang=de_DE.ISO8859-1:\
         :tc=default:

      Modificacion de las clases de sesion con vipw(8)

   Utilice vipw para anadir nuevos usuarios, y haga que la entrada
   tenga este aspecto:

 usuario:contrasena:1111:11:idioma:0:0:Nombre de usuario:/home/usuario:/bin/sh

      Modificacion de las clases de sesion con with adduser(8)

   Utilice adduser para anadir nuevos usuarios, y haga lo siguiente:

     * Establezca defaultclass = idioma en /etc/adduser.conf.
       Recuerde que en este caso debe introducir una clase default
       (por omision) para todos los usuarios de otros idiomas.

     * Una variante alternativa es contestar el idioma indicado cada
       vez que adduser(8) muestre

 Enter login class: default
                   []:

     * Otra alternativa es utilizar lo siguiente para cada usuario de
       un idioma diferente al que desee anadir:

 # adduser -class
                   idioma
                  

      Modificacion de las clases de sesion con pw(8)

   Si utiliza pw(8) para anadir nuevos usuarios, llamelo de esta
   manera:

 # pw useradd
               nombre_usuario -L
               idioma

     --------------------------------------------------------------

      22.3.4.1.2. Metodo de los ficheros de inicio de los interpretes de
      ordenes

     Nota: No se recomienda este metodo porque precisa de una
     configuracion diferente para cada interprete de ordenes que se
     pueda elegir. Utilice en su lugar el metodo de las clases de
     sesion.

   Para anadir el nombre de la "locale " y el juego de caracteres
   MIME, simplemente establezca las dos variables de entorno
   mostradas abajo en los ficheros de inicio del interprete de
   ordenes /etc/profile y/o /etc/csh.login. Aqui abajo usaremos el
   idioma aleman como ejemplo:

   En /etc/profile:

 LANG=de_DE.ISO8859-1; export LANG
 MM_CHARSET=ISO-8859-1; export MM_CHARSET

   O en /etc/csh.login:

 setenv LANG de_DE.ISO8859-1
 setenv MM_CHARSET ISO-8859-1

   Como alternativa, puede anadir las instrucciones anteriores a
   /usr/share/skel/ dot.profile (similar a lo que se utilizo antes en
   /etc/profile ), o /usr/share/skel/dot.login (similar a lo que se
   utilizo antes en /etc/csh.login).

   Para X11:

   En $HOME/.xinitrc:

 LANG=de_DE.ISO8859-1; export LANG

   O:

 setenv LANG de_DE.ISO8859-1

   En funcion de su interprete de ordenes (vea mas arriba).

     --------------------------------------------------------------

  22.3.5. Configuracion de la consola

   Para todos los juegos de caracteres representables con el tipo
   char en C, establezca los tipos de letra para la consola adecuados
   para el idioma en cuestion en /etc/rc.conf con:

 font8x16=nombre_del_tipo_de_letra
        
 font8x14=nombre_del_tipo_de_letra
 font8x8=nombre_del_tipo_de_letra

   Aqui, el nombre_del_tipo_de_letra se toma del directorio
   /usr/share/ syscons/fonts, sin el sufijo .fnt .

   Asegurese tambien de configurar los mapas de teclado y pantalla
   correctos para su juego de caracteres C por medio de sysinstall
   (/stand/sysinstall en versiones de FreeBSD anteriores a la 5.2).
   Una vez dentro de sysinstall , seleccione Configure , y despues
   Console . Como alternativa, puede anadir lo siguiente en
   /etc/rc.conf:

 scrnmap=nombre_del_mapa_de_pantalla
 keymap=nombre_del_mapa_de_teclado
 keychange="secuencia numero_tecla_de_funcion"

   Aqui, el nombre_del_mapa_de_pantalla se toma del directorio
   /usr/share/ syscons/scrnmaps, sin el sufijo .scm . Normalmente es
   necesario un mapa de pantalla ("screenmap") con un tipo de letra
   correspondiente para poder extender de 8 a 9 bits la matriz de
   caracteres de una tarjeta VGA en un area pseudografica, es decir,
   desplazar las letras fuera de ese area si el tipo de letra de
   pantalla usa una columna de 8 bits.

   Si tiene habilitado el daemon moused por configurar esto en su
   /etc/ rc.conf:

 moused_enable="YES"

   entonces estudie la informacion sobre el cursor del raton del
   siguiente parrafo.

   Por omision, el cursor del raton del controlador syscons(4) ocupa
   el intervalo 0xd0-0xd3 del juego de caracteres. Si su idioma usa
   este intervalo, necesita desplazar el intervalo del cursor fuera
   de el. En versiones de FreeBSD anteriores a la 5.0, introduzca la
   siguiente linea en la configuracion del nucleo:

 options         SC_MOUSE_CHAR=0x03

   En FreeBSD 4.4 y posteriores, introduzca la siguiente linea en
   /etc/rc.conf:

 mousechar_start=3

   Aqui, el nombre_del_mapa_de_teclado se toma del directorio
   /usr/share/ syscons/keymaps, sin el sufijo .kbd . Si no esta
   seguro de cual mapa de teclado usar, puede usar kbdmap(1) para
   probar los mapas de teclado sin reiniciar.

   Normalmente se necesita el keychange para programar las teclas de
   funcion para que coincidan con el tipo de terminal seleccionado,
   porque las secuencias de las teclas de funcion no se pueden
   definir en el mapa de teclado.

   Asegurese tambien de configurar el tipo de terminal consola
   correcto en /etc/ttys para todas las entradas ttyv*. Las
   correspondencias predefinidas actualmente son:

             Juego de caracteres                Tipo de terminal      
   ISO-8859-1 o ISO-8859-15                cons25l1                   
   ISO-8859-2                              cons25l2                   
   ISO-8859-7                              cons25l7                   
   KOI8-R                                  cons25r                    
   KOI8-U                                  cons25u                    
   CP437 (predeterminada en VGA)           cons25                     
   US-ASCII                                cons25w                    

   Para los idiomas en caracteres anchos o multibyte, utilice el port
   correcto de FreeBSD en su directorio /usr/ports/idioma. Algunos
   ports aparecen como consola mientras que el sistema los ve como
   una vtty serie, por lo tanto debe reservar suficientes vtty tanto
   para X11 como la consola pseudoserie. Aqui tiene una lista parcial
   de aplicaciones para usar otros idiomas en la consola:

            Idioma                          Ubicacion                 
   Chino tradicional (BIG-5) chinese/big5con                          
   Japones                   japanese/kon2-16dot o                    
                             japanese/mule-freewnn                    
   Coreano                   korean/han                               

     --------------------------------------------------------------

  22.3.6. Configuracion de X11

   Aunque X11 no es parte del Proyecto FreeBSD, hemos incluido aqui
   algo de informacion para usuarios de FreeBSD. Para mas detalles,
   acuda al sitio web de Xorg o del servidor X11 que utilice.

   En ~/.Xresources, puede afinar mas las opciones de I18N
   especificas de la aplicacion (v.g., tipos de letra, menus, etc).

     --------------------------------------------------------------

    22.3.6.1. Visualizacion de los tipos de letra

   Instale el servidor Xorg (x11-servers/xorg-server o el servidor
   XFree86 (x11-servers/XFree86-4-Server), y despues instale los
   tipos de letra TrueType del idioma. La configuracion de la
   "locale" correcta para el idioma deberia permitirle ver el idioma
   seleccionado en menus y similares.

     --------------------------------------------------------------

    22.3.6.2. Introduccion de caracteres no ingleses

   El protocolo Metodo de Introduccion X11 (XIM) es un nuevo estandar
   para todos los clientes X11. Todas las aplicaciones X11 deberian
   estar escritas como clientes XIM que reciben entradas de
   servidores XIM. Hay varios servidores XIM disponibles para
   distintos idiomas.

     --------------------------------------------------------------

  22.3.7. Configuracion de la impresora

   Hay algunos juegos de caracteres de tipo char de C que estan
   normalmente codificados por hardware en las impresoras. Los juegos
   de caracteres anchos o multibyte precisan de una configuracion
   especial y recomendamos el uso de apsfilter. Tambien puede
   convertir el documento a los formatos PostScript o PDF usando
   conversores especificos del idioma.

     --------------------------------------------------------------

  22.3.8. El nucleo y los sistemas de ficheros

   El sistema de ficheros rapido (FFS) de FreeBSD funciona bien a 8
   bits, asi que se puede usar con cualquier juego de caracteres de
   tipo char de C (vea multibyte(3)), pero no hay almacenado ningun
   nombre de juego de caracteres en el sistema de ficheros; es decir,
   son 8 bits en bruto y no sabe nada acerca del orden de
   codificacion. Oficialmente, FFS no soporta todavia ninguna forma
   de juegos de caracteres anchos o multibyte. Sin embargo, algunos
   juegos de caracteres anchos o multibyte tienen parches
   independientes para habilitar dicho soporte en FFS. Son solamente
   soluciones temporales no portables o "hacks", y hemos decicido no
   incluirlas en el arbol de codigo fuente. Dirijase a los sitios web
   de los respectivos idiomas para encontrar mas informacion y los
   parches.

   El sistema de ficheros MS-DOSde FreeBSD tiene la capacidad
   configurable de convertir entre los juegos de caracteres MS-DOS,
   Unicode y los juegos de caracteres seleccionados del sistema de
   ficheros de FreeBSD. Vea mount_msdos(8) para mas detalles.

     --------------------------------------------------------------

22.4. Compilacion de programas con soporte para I18N

   Muchos ports de FreeBSD han sido portados con soporte para I18N.
   Algunos de ellos estan marcados con -I18N en el nombre del port.
   Estos y muchos otros programas tienen incorporado soporte para
   I18N y no necesitan ninguna consideracion especial.

   Sin embargo, algunas aplicaciones como MySQL necesitan tener el
   Makefile configurado con el juego de caracteres especifico. Esto
   se hace normalmente en el Makefile o pasando un valor a configure
   en el codigo fuente.

     --------------------------------------------------------------

22.5. Localizacion de FreeBSD a idiomas especificos

  22.5.1. Idioma ruso (codificacion KOI8-R)

   Contribuido originalmente por Andrey Chernov.

   Para mas informacion sobre la codificacion KOI8-R, vea las
   Referencias KOI8-R (Juego de caracteres rusos para la red).

     --------------------------------------------------------------

    22.5.1.1. Configuracion de la "locale"

   Ponga las siguientes lineas en su fichero ~/.login_conf:

 me:My account:\
         :charset=KOI8-R:\
         :lang=ru_RU.KOI8-R:

   Vea anteriormente en este mismo capitulo ejemplos de configuracion
   de las locales.

     --------------------------------------------------------------

    22.5.1.2. Configuracion de la consola

     * En versiones de FreeBSD anteriores a la 5.0, anada la
       liguiente linea en el fichero de configuracion del nucleo:

 options         SC_MOUSE_CHAR=0x03

       En FreeBSD 4.4 y posteriores introduzca la siguiente linea en
       /etc/rc.conf:

 mousechar_start=3

     * Utilice las siguientes opciones en /etc/rc.conf:

 keymap="ru.koi8-r"
 scrnmap="koi8-r2cp866"
 font8x16="cp866b-8x16"
 font8x14="cp866-8x14"
 font8x8="cp866-8x8"

     * Para cada entrada ttyv* en /etc/ttys, utilice cons25r como el
       tipo de terminal.

   Vea anteriormente en este mismo capitulo ejemplos de configuracion
   de la consola.

     --------------------------------------------------------------

    22.5.1.3. Configuracion de la impresora

   Dado que la mayoria de las impresoras con caracteres rusos tienen
   un codigo de pagina CP866 en hardware, es necesario un filtro de
   salida especial para convertir de KOI8-R a CP866. Tal filtro es
   instalado por omision como /usr/libexec/lpr/ru/koi2alt. Una
   entrada de impresora rusa /etc/printcap deberia tener este
   aspecto:

 lp|Russian local line printer:\
         :sh:of=/usr/libexec/lpr/ru/koi2alt:\
         :lp=/dev/lpt0:sd=/var/spool/output/lpd:lf=/var/log/lpd-errs:

   Consulte printcap(5) para una explicacion detallada.

     --------------------------------------------------------------

    22.5.1.4. Sistema de ficheros MS-DOS y nombres de ficheros en ruso

   La siguiente entrada fstab(5) de ejemplo habilita el soporte para
   nombres de fichero en ruso en los sistemas de ficheros MS-DOS
   montados:

 /dev/ad0s2      /dos/c  msdos   rw,-Wkoi2dos,-Lru_RU.KOI8-R 0 0

   La opcion -L selecciona el nombre de la "locale" usada, y -W
   establece la tabla de conversion de caracteres. Para usar la
   opcion -W , asegurese de montar /usr antes que la particion
   MS-DOS, porque las tablas de conversion se ubican en
   /usr/libdata/msdosfs. Para mas informacion, vea la pagina de
   manual mount_msdos(8).

     --------------------------------------------------------------

    22.5.1.5. Configuracion de X11

    1. Antes haga la configuracion de las "locales" para la consola
       como se ha explicado.

         Nota: La "locale " rusa KOI8-R puede no funcionar con
         versiones antiguas (anteriores a la 3.3) de XFree86. Xorg es
         ahora la version predefinida del sistema de ventanas X en
         FreeBSD. Esto no deberia ser un problema salvo que este
         usando una version antigua de FreeBSD.

    2. Si utiliza Xorg, instale el paquete
       x11-fonts/xorg-fonts-cyrillic.

       Compruebe la seccion "Files" de su fichero /etc/X11/xorg.conf.
       Se deben anadir las siguientes lineas antes de ninguna otra
       entrada FontPath :

 FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/misc"
 FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/75dpi"
 FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/100dpi"

       Si utiliza un modo de video de alta resolucion, intercambie
       las lineas 75 dpi y 100 dpi.

    3. Para activar un teclado ruso, anada lo siguiente a la seccion
       "Keyboard" de su fichero XF86Config.

       Para XFree86 3.X:

 XkbLayout  "ru"
 XkbOptions "grp:caps_toggle"

       Para Xorg (o XFree86 4.X):

 Option "XkbLayout"   "us,ru"
 Option "XkbOptions"  "grp:toggle"

       Asegurese tambien de que XkbDisable este desactivado
       (comentado) alli.

       Para grp:caps_toggle la tecla para pasar entre la codificacion
       rusa y la latina sera BloqMayus . La antigua funcion de
       BloqMayus todavia esta disponible a traves de May+BloqMayus
       (solamente en modo latino). Para grp:toggle la tecla para
       pasar entre la codificacion rusa y la latina sera Alt derecha.
       grp:caps_toggle no funciona en Xorg por alguna razon
       desconocida.

       Si en su teclado dispone de teclas "Windows ", y observa que
       algunas teclas no alfanumericas estan mapeadas incorrectamente
       en el modo ruso, anada la siguiente linea en su fichero
       XF86Config.

       Para XFree86 3.X:

 XkbVariant "winkeys"

       Para Xorg (o XFree86 4.X):

 Option "XkbVariant" ",winkeys"

         Nota: El teclado XKB ruso puede no funcionar con versiones
         antiguas de XFree86 , vea la nota anterior para mas
         informacion. El teclado XKB ruso puede no funcionar tampoco
         con aplicaciones no localizadas.

     Nota: Las aplicaciaones minimamente localizadas deberian llamar
     una funcion XtSetLanguageProc (NULL, NULL, NULL); al principio
     del programa.

     Vea KOI8-R para X Window para mas instrucciones sobre la
     localizacion de aplicaciones X11.

     --------------------------------------------------------------

  22.5.2. Localizacion al chino tradicional para Taiwan

   El proyecto FreeBSD-Taiwan tiene una Guia de chino para FreeBSD en
   que utiliza muchos ports chinos. El editor actual del FreeBSD
   Chinese HOWTO es Shen Chuan-Hsing <statue@freebsd.sinica.edu.tw>.

   Chuan-Hsing Shen <statue@freebsd.sinica.edu.tw > ha creado la
   Coleccion de FreeBSD en chino (CFC) usando zh-L10N-tut de
   FreeBSD-Taiwan. Los paquetes y los guiones estan disponibles en  .

     --------------------------------------------------------------

  22.5.3. Localizacion al idioma aleman (para todos los idiomas ISO
  8859-1)

   Slaven Rezic <eserte@cs.tu-berlin.de> ha escrito un tutorial de
   como usar las dieresis en una maquina FreeBSD. El tutorial esta
   disponible en http://www.de.FreeBSD.org/de/umlaute/.

     --------------------------------------------------------------

  22.5.4. Localizacion a los idiomas japones y coreano

   Para el japones, dirijase a http://www.jp.FreeBSD.org/, y para el
   coreano, acuda a http://www.kr.FreeBSD.org/.

     --------------------------------------------------------------

  22.5.5. Documentacion sobre FreeBSD en otros idiomas aparte del ingles

   Algunos contribuidores de FreeBSD han traducido partes de FreeBSD
   a otros idiomas. Estan disponibles a traves de enlaces en el sitio
   principal o en /usr/share/doc .

     --------------------------------------------------------------

                  Capitulo 23. Lo ultimo de lo ultimo

   Restructured, reorganized, and parts updated by Jim Mock. Original
   work by Jordan Hubbard, Poul-Henning Kamp, John Polstra, y Nik
   Clayton.

23.1. Sinopsis

   Pendiente de Traduccion

     --------------------------------------------------------------

23.2. FreeBSD-CURRENT vs. FreeBSD-STABLE

  23.2.1. Current

   Pendiente de Traduccion

     --------------------------------------------------------------

  23.2.2. Stable

   Pendiente de Traduccion

     --------------------------------------------------------------

23.3. Sincronizacion de su codigo fuente

   Pendiente de Traduccion

     --------------------------------------------------------------

23.4. Uso de make world

   Pendiente de Traduccion

     --------------------------------------------------------------

23.5. Redes pequenas

   Pendiente de Traduccion

                       IV. Comunicaciones en red

   FreeBSD es uno de los sistemas operativos mas utilizados como
   servidores en red de alto rendimiento. Los siguientes capitulos
   cubren:

     * Comunicaciones serie

     * PPP y PPP sobre Ethernet

     * Correo electronico

     * Servidores de red

     * Otros aspectos avanzados de red

   Estos capitulos estan disenados para leerse segun van haciendo
   falta. No tienen por que leerse en un determinado orden, ni tiene
   por que leerlos todos antes de poder usar FreeBSD en un entorno de
   red.

   Tabla de contenidos

   24. Comunicaciones serie

   25. PPP y SLIP

   26. Cortafuegos

   27. Correo Electronico

   28. Servidores de red

   29. Networking avanzado

     --------------------------------------------------------------

                   Capitulo 24. Comunicaciones serie

24.1. Sinopsis

   UNIX siempre ha tenido soporte para comunicacion serie. De hecho,
   las primeras maquinas UNIX dependian de lineas serie para tener
   interaccion con el usuario. Las cosas han cambiado mucho desde
   esos dias cuando la "terminal" promedio consistia de una terminal
   serie de 10-caracteres-por-segundo, impresora y teclado. Este
   capitulo cubrira algunas de las maneras en las que FreeBSD utiliza
   comunicaciones serie.

   Despues de leer este capitulo, usted entendera:

     * Como conectar terminales a su sistema FreeBSD.

     * Como utilizar un modem para marcar a equipos remotos.

     * Como permitir a usuarios remotos entrar a su sistema con un
       modem.

     * Como arrancar su sistema desde una consola serie.

   Antes de leer este capitulo usted deberia:

     * Saber como configurar e instalar un nuevo kernel (Capitulo 8).

     * Entender procesos y permisos UNIX (Capitulo 3).

     * Tener acceso al manual tecnico para el hardware serie (modem o
       tarjeta multipuerto) que le gustaria utilizar con FreeBSD.

     --------------------------------------------------------------

24.2. Introduccion

  24.2.1. Terminologia

   bps

           Bits por segundo -- la tasa a la cual los datos son
           transmitidos

   DTE

           Data Terminal Equipment (Equipo terminal de datos) -- por
           ejemplo, su computadora

   DCE

           Data Communications Equipment (Equipo de comunicacion de
           datos) -- su modem

   RS-232

           Estandar EIA para hardware de comunicacion serie

   Cuando se habla de tasa de comunicacion de datos, esta seccion no
   usa el termino "baud". Baud se refiere al numero de estados de
   transicion electricos que pueden realizarse en un periodo de
   tiempo, mientras que "bps" (bits por segundo) es el termino
   correcto a usar (al menos parece no molestar demasiado a los mas
   aferrados).

     --------------------------------------------------------------

  24.2.2. Cables y puertos

   Para conectar un modem o terminal a su sistema FreeBSD necesitara
   un puerto serie en su computadora y el cable apropiado para
   conectar a su dispositivo serie. Si ya esta familiarizado con su
   hardware y el cable que requiere, puede saltarse esta seccion.

     --------------------------------------------------------------

    24.2.2.1. Cables

   Existen diferentes tipos de cables serie. Los dos tipos mas
   comunes para nuestros propositos son cables null-modem y cables
   RS-232 estandar ("normal"). La documentacion de su hardware
   deberia describir el tipo de cable requerido.

     --------------------------------------------------------------

      24.2.2.1.1. Cables null-modem

   Un cable null-modem pasa algunas senales, como "tierra",
   normalmente, pero cambia otras senales. Por ejemplo, el pin "envio
   de datos" en un extremo va al pin "recepcion de datos" en el otro.

   Si le gusta fabricar sus propios cables, puede construir un cable
   null-modem para utilizar con terminales. Esta tabla muestra los
   nombres de senal y numeros de pin en un conector DB-25.

      Senal        Pin #                         Pin #       Senal    
   SG           7            conecta a        7           SG          
   TD           2            conecta a        3           RD          
   RD           3            conecta to       2           TD          
   RTS          4            conecta a        5           CTS         
   CTS          5            conecta a        4           RTS         
   DTR          20           conecta a        6           DSR         
   DCD          8                             6           DSR         
   DSR          6            conecta a        20          DTR         

     Nota: Conectar "Data Set Ready" (DSR) y "Data Carrier Detect"
     (DCD) internamente en la capucha del conector, y entonces a
     "Data Terminal Ready" (DTR) en la capucha remota.

     --------------------------------------------------------------

      24.2.2.1.2. Cables estandard RS-232C

   Un cable serie estandar pasa todas las senales RS-232C
   normalmente. Esto es, el pin "envio de datos" en un extremo va al
   pin "envio de datos" en el otro extremo. Este es el tipo de cable
   a utilizar para conectar un modem a su sistema FreeBSD, y tambien
   es apropiado para algunas terminales.

     --------------------------------------------------------------

    24.2.2.2. Puertos

   Puertos serie son los dispositivos a traves de los cuales los
   datos son transferidos entre una computadora FreeBSD y la
   terminal. Esta seccion describe los tipos de puertos que existen y
   como son referidos en FreeBSD.

     --------------------------------------------------------------

      24.2.2.2.1. Tipos de puertos

   Existen varios tipos de puertos serie. antes de comprar o
   construir un cable, necesita asegurarse que coincida con los
   puertos en su terminal y en su sistema FreeBSD.

   La mayoria de las terminales tienen puertos DB25. Computadoras
   personales, incluyendo PCs corriendo FreeBSD, tienen puertos DB25
   o DB9. Si tiene una tarjeta multipuertos serie para su PC, tal vez
   tenga puertos RJ-12 o RJ-45.

   Vea la documentacion que acompana su hardware para las
   especificaciones sobre el tipo de puerto en uso. Una inspeccion
   visual del puerto tambien funciona en la mayoria de los casos.

     --------------------------------------------------------------

      24.2.2.2.2. Nombres de puerto

   En FreeBSD, se accesa cada puerto serie a traves de una entrada en
   el directorio /dev. Existen dos tipos de entradas:

     * Puertos de llamada-entrante son llamados /dev/ttydN donde N es
       el numero de puerto, iniciando desde cero. Generalmente, los
       puertos de llamada-entrante se utilizan para terminales. Los
       puertos de llamada-entrante requieren que la linea serie
       especifique la senal data carrier detect (DCD) para funcionar
       correctamente.

     * Puertos de llamada-saliente son llamados /dev/cuaaN.
       Usualmente no se utilizan los puertos de llamada-saliente para
       terminales, solo para modems. Puede utilizar el puerto de
       llamada-saliente si el cable serie o la terminal no soporta la
       senal de carrier detect.

   Si tiene conectada una terminal al primer puerto serie (COM1 en
   MS-DOS), entonces usara /dev/ttyd0 para referirse a la terminal.
   Si la terminal esta en el segundo puerto serie (tambien conocido
   como COM2), utilice /dev/ttyd1, y asi sucesivamente.

     --------------------------------------------------------------

  24.2.3. Configuracion del kernel

   FreeBSD soporta cuatro puertos serie por omision. en el mundo
   MS-DOS estos son conocidos como COM1, COM2, COM3, y COM4. FreeBSD
   actualmente soporta tarjetas de interfaz serie "tontas", como la
   BocaBoard 1008 y 2016, asi como tarjetas multipuerto mas
   inteligentes como las fabricadas por Digiboard y Stallion
   Technologies. De cualquier manera, el kernel por omision solo
   busca por los puertos COM estandares.

   Para ver si su kernel reconoce cualquiera de sus puertos serie,
   mire los mensajes mientras el kernel esta arrancando, o utilice el
   comando /sbin/dmesg para repetir los mensajes de arranque del
   kernel. En particular busque por mensajes que inicien con el
   caracter sio.

     Sugerencia: Para ver solamente los mensajes que contienen la
     palabra sio, use el comando:

 # /sbin/dmesg | grep 'sio'

   Por ejemplo, en un sistema con cuatro puertos serie, estos son los
   mensajes de arranque del kernel especificos de puerto serie:

 sio0 at 0x3f8-0x3ff irq 4 on isa
 sio0: type 16550A
 sio1 at 0x2f8-0x2ff irq 3 on isa
 sio1: type 16550A
 sio2 at 0x3e8-0x3ef irq 5 on isa
 sio2: type 16550A
 sio3 at 0x2e8-0x2ef irq 9 on isa
 sio3: type 16550A

   Si su kernel no reconoce todos sus puertos serie, probablemente
   necesitara configurar un kernel FreeBSD personalizado para su
   sistema. Para informacion detallada sobre configurar su kernel,
   por favor vea Capitulo 8.

   Las lineas de dispositivo relevantes para su fichero de
   configuracion del kernel podrin verse de esta manera, para
   FreeBSD 4.X:

 device          sio0    at isa? port IO_COM1 irq 4
 device          sio1    at isa? port IO_COM2 irq 3
 device          sio2    at isa? port IO_COM3 irq 5
 device          sio3    at isa? port IO_COM4 irq 9

   y de esta manera, para FreeBSD 5.X:

 device          sio

   Puede comentar o remover completamente lineas de dispositivos que
   no tenga en el caso de FreeBSD 4.X; para FreeBSD 5.X tiene que
   editar su fichero /boot/device.hints para configurar sus puertos
   serie. Por favor dirijase a la pagina de manual sio(4) para mayor
   informacion sobre puertos serie y configuracion de tarjetas
   multipuertos. Tenga cuidado si esta utilizando un fichero de
   configuracion que fue usado anteriomente para una version
   diferente de FreeBSD porque las banderas de dispositivo y la
   sintaxis han cambiado entre versiones.

     Nota: port IO_COM1 es una substitucion para port 0x3f8, IO_COM2
     es 0x2f8, IO_COM3 es 0x3e8, y IO_COM4 es 0x2e8, las cuales son
     direcciones de puerto comunes para sus respectivos puertos
     serie; interrupciones 4,3,5 y 9 son peticiones comunes de lineas
     de interrupcion. Note tambien que puertos serie regulares no
     pueden compartir interrupciones en PCs con bus ISA (las tarjetas
     multipuerto tienen electronicos que les permiten a los 16550A's
     compartir una o dos lineas de peticiones de interrupcion).

     --------------------------------------------------------------

  24.2.4. Archivos especiales de dispositivo

   La mayoria de dispositivos en el kernel son accesados a traves de
   "ficheros especiales de dispositivo", los cuales estan localizados
   en el directorio /dev. Los dispositivos sio son accesados a traves
   de los dispositivos /dev/ttydN (dial-in) y /dev/cuaaN (call-out).
   FreeBSD provee tambien dispositivos de inicializacion (/dev/ttyidN
   y /dev/cuaiaN) y dispositivos de bloqueo (/dev/ttyldN y
   /dev/cualaN). Los dispotivos de inicializacion son utilizados para
   inicializar los parametros de comunicacion de puerto cada vez que
   un puerto es abierto, como crtscts para modems que utilizan
   senalizacion RTS/CTS para control de flujo. Los dispositivos de
   bloqueo son utilizados para bloquear banderas en puertos y
   prevenir que usuarios o programas cambien ciertos parametros; vea
   las paginas de manual termios(4), sio(4), y stty(1) para
   informacion de las propiedades de terminales, bloqueo e
   inicializacion de dispositivos y aplicacion de opciones de
   terminal, respectivamente.

     --------------------------------------------------------------

    24.2.4.1. Creando ficheros de dispositivo especiales

     Nota: FreeBSD 5.0 incluye el sistema de ficheros devfs(5) el
     cual crea automaticamente nodos de dispositivos segun se
     necesiten. si esta corriendo una version de FreeBSD con devfs
     habilitado entonces puede saltarse esta seccion.

   Un script de shell llamado MAKEDEV en el directorio /dev
   administra los ficheros especiales de dispositivo. Para utilizar
   MAKEDEV para crear un fichero especial de dispositivo dial-up para
   COM1 (port 0), cd a /dev y ejecute el comando MAKEDEV ttyd0. De la
   misma manera, para crear ficheros especiales de dispositivo para
   COM2 (port 1), utilice MAKEDEV ttyd1.

   MAKEDEV no crea solamente el fichero especial de dispositivo
   /dev/ttydN tambien crea los nodos /dev/cuaaN, /dev/cuaiaN,
   /dev/cualaN, /dev/ttyldN, y /dev/ttyidN.

   Despues de crear ficheros especiales de dispositivo nuevos,
   asegurese de revisar los permisos en los ficheros (especialmente
   los ficheros /dev/cua*) para asegurarse que solamente los usuarios
   que deben tener acceso a esos ficheros especiales de dispositivo
   puedan leer y escribir en ellos -- probablemente no desee permitir
   al usuario promedio utilizar sus modems para marcar al exterior.
   Los permisos por omision en los ficheros /dev/cua* deberian ser
   suficientes:

 crw-rw----    1 uucp     dialer    28, 129 Feb 15 14:38 /dev/cuaa1
 crw-rw----    1 uucp     dialer    28, 161 Feb 15 14:38 /dev/cuaia1
 crw-rw----    1 uucp     dialer    28, 193 Feb 15 14:38 /dev/cuala1

   Estos permisos permiten al usuario uucp y usuarios en el grupo
   dialer utilizar dispositivos call-out.

     --------------------------------------------------------------

  24.2.5. Configuracion de puerto serie

   El dispositivo ttydN (o cuaaN) es el dispositivo regular que usted
   deseara abrir para sus aplicaciones. Cuando un proceso abre el
   dispositivo, tendra un conjunto por omision de propiedades de
   terminal E/S. Puede ver estas propiedades con el comando

 # stty -a -f /dev/ttyd1

   Cuando cambia las propiedades de este dispositivo, las propiedades
   son efectivas hasta que el dispositivo es cerrado. Cuando es
   reabierto regresa a las propiedades por omision. Para realizar
   cambios al conjunto por omision, usted puede abrir y ajustar las
   propiedades del dispositivo de "estado inicial" . Por ejemplo,
   para activar el modo CLOCAL, comunicacion de 8 bits y control de
   flujo XON/XOFF por omision para ttyd5, teclee:

 # stty -f /dev/ttyid5 clocal cs8 ixon ixoff

   La inicializacion para todo el sistema de los dispositivos serie
   es controlada en /etc/rc.serial. Este fichero afecta las
   propiedades por omision de dispositivos serie.

   Para prevenir que ciertas propiedades sean cambiadas por una
   aplicacion, haga ajustes al dispositivo "bloquear estado". Por
   ejemplo, para confinar la velocidad en ttyd5 a 57600 bps, teclee:

 # stty -f /dev/ttyld5 57600

   Ahora, una aplicacion que abra ttyd5 y trate de cambiar la
   velocidad del puerto se mantendra con 57600 bps.

   Naturalmente, deberia crear los dispositivos de estado inicial y
   bloqueo de estado escribible unicamente para la cuenta root .

     --------------------------------------------------------------

24.3. Terminales

   Contribuido porSean Kelly.

   Las terminales proveen una manera conveniente y de bajo coste de
   accesar su sistema FreeBSD cuando no se encuentra en la consola de
   la computadora o en una red conectada. Esta seccion describe como
   utilizar terminales con FreeBSD.

     --------------------------------------------------------------

  24.3.1. Usos y tipos de terminales

   Los sistemas originales UNIX no tenin consolas. En su lugar la
   gente se firmaba y corria programas a traves de terminales
   conectadas a los puertos serie de la computadora. Es bastante
   similar a usar un modem y un programa de terminal para marcar
   hacia un sistema remoto para hacer trabajo en modo texto.

   Las PCs actuales tienen consolas con graficos de alta calidad,
   pero la habilidad para establecer una sesion en un puerto serie
   todavia existe en casi cualquier sistema operativo UNIX al dia de
   hoy; FreeBSD no es la excepcion. Utilizando una terminal conectada
   a un puerto serie libre, usted puede accesar y correr cualquier
   programa de texto que podria correr normalmente en la consola o en
   una ventana xterm en el sistema X Window.

   Para el usuario corporativo, se pueden conectar muchas terminales
   a un sistema FreeBSD y ponerlas en los escritorios de sus
   empleados. Para un usuario casero, una computadora de reserva,
   como una IBM PC mas antigua o una Macintosh, puede ser una
   terminal cableada a una computadora mas poderosa corriendo
   FreeBSD. Puede convertir lo que de otra manera seria una
   computadora de un solo usuario en un poderoso sistema de usuarios
   multiples.

   Para FreeBSD, existen tres clases de terminales:

     * Terminales tontas

     * PCs actuando como terminales

     * Terminales X

   Las subsecciones siguientes describen cada tipo.

     --------------------------------------------------------------

    24.3.1.1. Terminales tontas

   Terminales tontas son piezas de hardware especializadas que le
   permiten conectar a computadoras a traves de lineas serie. Son
   llamadas "tontas" porque solo tienen poder computacional
   suficiente para desplegar, enviar y recibir texto. No puede
   ejecutar ningun programa en ellas. Es la computadora a la cual se
   conectan la que tiene todo el poder para correr editores de texto,
   compiladores, correo electronico, juegos, y demas.

   Existen cientos de tipos de terminales tontas hechas por muchos
   fabricantes, incluyendo VT-100 de Digital Equipment Corporation y
   WY-75 de Wyse. Cualquier tipo funcionara con FreeBSD. Algunas
   terminales superiores pueden incluso desplegar graficos, pero solo
   ciertos paquetes de software pueden tomar ventaja de estas
   funciones avanzadas.

   Las terminales tontas son populares en ambientes de trabajo donde
   los trabajadores no necesitan acceso a aplicaciones graficas como
   las que provee el sistema X Window.

     --------------------------------------------------------------

    24.3.1.2. PCs actuando como terminales

   Si una terminal tonta tiene apenas la habilidad para desplegar,
   enviar y recibir texto, entonces ciertamente cualquier computadora
   personal de reserva puede ser una terminal tonta. Todo lo que
   necesita es el cable apropiado y algun software de emulacion de
   terminal para correr en la computadora.

   Tal configuracion es popular en hogares. Por ejemplo, si su
   consorte se encuentra ocupado trabajando en la consola de su
   sistema FreeBSD, usted puede realizar algun trabajo en modo texto
   al mismo tiempo desde una computadora personal menos poderosa
   conectada como una terminal al sistema FreeBSD.

     --------------------------------------------------------------

    24.3.1.3. Terminales X

   Las terminales X son el tipo mas sofisticado de terminal
   disponible. En lugar de conectar a un puerto serie, usualmente se
   conectan a una red como Ethernet. En lugar de ser relegadas a
   aplicaciones de modo texto pueden desplegar aplicaciones X.

   Hemos introducido terminales X solo por complementar. Sin embargo,
   este capitulo no cubre instalacion, configuracion o uso de
   terminales X.

     --------------------------------------------------------------

  24.3.2. Configuracion

   Esta seccion describe lo que necesita para configurar en su
   sistema FreeBSD y permitirle habilitar sesiones de entrada en una
   terminal. Asume que ya tiene configurado su kernel para soportar
   el puerto serie al cual la terminal esta conectada--y que la tiene
   conectada.

   Recuerde del Capitulo 12 que el proceso init es responsable del
   control e inicializacion de todos los procesos al inicio del
   sistema. Una de las tareas ejecutadas por init es leer el fichero
   /etc/ttys e iniciar un proceso getty en las terminales
   disponibles. El proceso getty es responsable de leer un nombre de
   entrada e iniciar el programa login .

   Asi, para configurar terminales para su sistema FreeBSD los
   siguientes pasos deben hacerse como root:

    1. Agregue una linea a /etc/ttys para la entrada en el directorio
       /dev para el puerto serie si todavia no se encuentra ahi.

    2. Especifique que /usr/libexec/getty sea ejecutado en el puerto,
       y especifique el tipo apropiado de getty desde el fichero
       /etc/gettytab .

    3. Especifique el tipo de terminal por omision.

    4. Ponga el puerto a "on."

    5. Especifique si el puerto debe ser o no "seguro."

    6. Obligue a init a releer el fichero /etc/ttys .

   Como un paso opcional, tal vez desee crear un tipo getty
   personalizado para utilizar en el paso 2 mediante una entrada en
   /etc/gettytab. Este capitulo no explica como realizarlo; por lo
   que se le exhorta a leer las paginas de manual gettytab(5) y
   getty(8) para mayor informacion.

     --------------------------------------------------------------

    24.3.2.1. Agregando una entrada a /etc/ttys

   El fichero /etc/ttys lista todos los puertos en su sistema FreeBSD
   donde quiere permitir logins. Por ejemplo, la primera consola
   virtual ttyv0 tiene una entrada en este fichero. Puede firmarse en
   la consola utilizando esta entrada. Este fichero tambien contiene
   entradas para las otras consolas virtuales, puertos serie y
   pseudo-ttys. Para una terminal conectada por cable, solo liste la
   entrada /dev del puerto serie sin la parte de /dev (por ejemplo,
   /dev/ttyv0 deberia estar listado como ttyv0).

   Una instalacion por omision de FreeBSD incluye un fichero
   /etc/ttys con soporte para los primeros cuatro puertos serie:
   ttyd0 hasta ttyd3. Si esta conectando una terminal a uno de esos
   puertos, no necesita agregar otra entrada.

   Ejemplo 24-1. Agregando entradas de terminal a /etc/ttys

   Suponga que quisieramos conectar dos terminales al sistema: una
   Wyse-50 y una vieja IBM PC 286 corriendo el software de terminal
   Procomm emulando una terminal VT-100. Conectamos la Wyse al
   segundo puerto serie y la 286 al sexto puerto serie (un puerto en
   una tarjeta multipuerto serie). Las entradas correspondiente en el
   fichero /etc/ttys se verian como esto:

 ttyd1(1)  "/usr/libexec/getty std.38400"(2)  wy50(3)  on(4)  insecure(5)
 ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure
          

   (1)
           El primer campo normalmente especifica el nombre de
           fichero especial de la terminal como es hallado en /dev.
   (2)
           El segundo campo es el comando a ejecutar por esta linea,
           el cual es usualmente getty(8). getty inicializa y abre la
           linea, establece la velocidad, pregunta por un nombre de
           usuario y entonces ejecuta el programa login(1) .

           El programa getty acepta un parametro (opcional) en su
           linea de comando, el tipo getty. Un tipo getty configura
           caracteristicas en la linea de terminal, como tasa de bps
           y paridad. El programa getty lee estas caracteristicas
           desde el fichero /etc/gettytab.

           El fichero /etc/gettytab contiene muchas entradas para
           lineas de terminal viejas y nuevas. En la mayoria de los
           casos, las entradas que empiezan con el texto std
           funcionaran para terminales conectadas fisicamente. Estas
           entradas ignoran la paridad. Existe una entrada std por
           cada tasa de bps de 110 a 115200. Por supuesto puede
           agregar sus propias entradas a este fichero. La pagina de
           manual gettytab(5) provee mayor informacion.

           Al establecer el tipo getty en el fichero /etc/ttys,
           asegurese que las propiedades de comunicaciones en la
           terminal concuerden.

           Para nuestro ejemplo, la Wyse-50 no usa paridad y conecta
           a 38400 bps. La 286 PC no usa paridad y conecta a
           19200 bps.

   (3)
           El tercer campo es el tipo de terminal usualmente
           conectado a esa linea tty. Para puertos dial-up, unknown o
           dialup son usados tipicamente en este campo puesto que los
           usuarios pueden marcar practicamente con cualquier tipo de
           terminal o de software. Para terminales conectadas
           fisicamente, el tipo de terminal no cambia, asi que puede
           poner un tipo de terminal real del fichero de base de
           datos termcap(5) en este campo.

           Para nuestro ejemplo, la Wyse-50 utiliza el tipo de
           terminal real mientras que la PC 286 corriendo Procomm
           sera puesta a emular una VT-100.

   (4)
           El cuarto campo especifica si el puerto debe habilitarse.
           Poniendo on aqui provocara que el proceso init inicie el
           programa en el segundo campo, getty. Si pone off en este
           campo, no habra getty, y por consecuencia ningun login en
           el puerto.
   (5)
           El ultimo campo es utilizado para especificar si el puerto
           es seguro. Marcar un puerto como seguro significa que se
           confia en el lo suficiente para permitir que la cuenta
           root (o cualquier cuenta con un ID de usuario 0) se firme
           desde ese puerto. Los puertos inseguros no permiten
           entradas de root. En un puerto inseguro, los usuarios
           deben firmarse desde cuentas sin privilegios y entonces
           utilizar su(1) o un mecanismo similar para acceder a
           privilegios de superusuario.

           Es altamente recomendable que utilize "insecure" incluso
           para terminales que se encuentran detras de puertas con
           llave. Es muy sencillo entrar y usar su si necesita
           privilegios de superusuario.

     --------------------------------------------------------------

    24.3.2.2. Forzar init a que relea /etc/ttys

   Despues de realizar los cambios necesarios al fichero /etc/ttys
   deberia mandar una senal SIGHUP (hangup) al proceso init para
   forzarlo a releer su fichero de configuracion. Por ejemplo:

 # kill -HUP 1

     Nota: init siempre es el primer proceso que corre en un sistema,
     por lo tanto siempre tendra el PID 1.

   Si todo esta puesto correctamente, todos los cables en su lugar, y
   las terminales estan encendidas, entonces un proceso getty debe
   estar corriendo en cada terminal y deberia ver prompts de entrada
   en sus terminales en este punto.

     --------------------------------------------------------------

  24.3.3. Determinando errores en su conexion

   Incluso con la mas meticulosa etencion al detalle, algo puede
   salir mal mientras se configura una terminal. Esta es una lista de
   sintomas y algunos arreglos sugeridos.

     --------------------------------------------------------------

    24.3.3.1. No aparece prompt de login

   Asegurese que la terminal esta conectada y encendida, asegurese
   que se encuentra ejecutando un software de emulacion de terminal
   en el puerto serie correcto.

   Asegurese que el cable esta conectado firmemente tanto a la
   terminal como a la computadora FreeBSD. Asegurese que es el tipo
   correcto de cable.

   Asegurese que la terminal y FreeBSD concuerdan en la tasa de bps y
   propiedades de paridad. Si tiene una terminal de desplegado de
   video, asegurese que los controles de contraste y brillo esten
   encendidos. Si es una terminal de impresion, asegurese que papel y
   tinta se encuentren en forma.

   Asegurese que un proceso getty este corriendo y sirviendo la
   terminal. Por ejemplo, para obtener una lista de procesos getty
   con ps, teclee:

 # ps -axww|grep getty

   Deberia ver una entrada para la terminal. Por ejemplo, el
   siguiente desplegado muestra que un getty esta corriendo en el
   segundo puerto serie ttyd1 y esta utilizando la entrada std.38400
   en /etc/gettytab:

 22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyd1

   Si no hay un proceso getty corriendo, asegurese que tiene
   habilitado el puerto en /etc/ttys. Recuerde tambien ejecutar kill
   -HUP 1 despues de modificar el fichero ttys.

   Si el proceso getty esta corriendo pero la terminal todavia no
   despliega un prompt de login, o si despliega un prompt pero no le
   permite escribir, su terminal o cable tal vez no soporte
   inicializacion por hardware. Trate cambiar la entrada en /etc/ttys
   de std.38400 a 3wire.38400 recuerde correr kill -HUP 1 despues de
   modificar /etc/ttys. La entrada 3wire es similar a std, pero
   ignora la inicializacion por harware. Tal vez necesite reducir la
   tasa de baudios o habilitar control de flujo por software cuando
   utilice 3wire para prevenir desbordamientos de buffer.

     --------------------------------------------------------------

    24.3.3.2. Si aparece basura en lugar de un prompt de login

   Asegurese que la terminal y FreeBSD concuerdan en la tasa de bps y
   propiedades de paridad. Revise los procesos getty para asegurarse
   que el tipo correcto de getty esta en uso. Si no es asi, edite
   /etc/ttys y ejecute kill -HUP 1.

     --------------------------------------------------------------

    24.3.3.3. Los caracteres aparecen doble; las contrasenas aparecen
    cuando se escriben

   Cambie la terminal (o el software de emulacion de terminal) de
   "half duplex" o "local echo" a "full duplex."

     --------------------------------------------------------------

24.4. Servicio dial-in

   Contribuido por Guy Helmer. Adiciones por Sean Kelly.

   Configurar su sistema FreeBSD para servicio dial-in es muy similar
   a conectar terminales excepto que en lugar de lidiar con
   terminales se hace con modems.

     --------------------------------------------------------------

  24.4.1. Modems externos vs. internos

   Los modems externos parecen ser mas convenientes para dial-up,
   debido a que los modems externos con frecuencia pueden ser
   configurados semi permanentemente via parametros almacenados en
   RAM no volatil y usualmente proveen indicadores luminosos que
   despliegan el estado de senales importantes RS-232. Luces
   parpadeantes impresionan a los visitantes, pero las luces son
   tambien utiles para ver si un modem se encuentra operando
   adecuadamente.

   Los modems internos usualmente carecen de RAM no volatil, entonces
   su configuracion puede estar limitada a especificar DIP switches.
   Si su modem interno cuenta con algun indicador luminoso de
   senales, es probablemente dificil observar las luces cuando el
   sistema esta cubierto y en su lugar.

     --------------------------------------------------------------

    24.4.1.1. Modems y cables

   Si se encuentra utilizando un modem externo, entonces necesitara
   por supuesto un cable adecuado. Un cable serie estandar RS-232C
   debe ser suficiente mientras todas las senales normales sean
   cableadas:

     * Transmitted Data (TD)

     * Received Data (RD)

     * Request to Send (RTS)

     * Clear to Send (CTS)

     * Data Set Ready (DSR)

     * Data Terminal Ready (DTR)

     * Carrier Detect (CD)

     * Signal Ground (SG)

   FreeBSD necesita las senales RTS y CTS para control de flujo a
   velocidades mayores a 2400 bps, la senal CD para detectar cuando
   una llamada ha sido respondida o la linea ha sido colgada, y la
   senal DTR para reiniciar el modem despues de completar una sesion.
   Algunos cables son hechos sin incluir todas las senales
   necesarias, asi que si tiene problemas, como cuando una sesion no
   finaliza cuando la linea es colgada, tal vez el problema se deba
   al cable.

   Como otros sistemas operativos tipo UNIX, FreeBSD utiliza las
   senales de hardware para saber cuando una llamada ha sido
   contestada o una linea ha sido colgada y poder colgar y reiniciar
   el modem despues de una llamada. FreeBSD evita enviar comandos al
   modem o esperar por reportes de estado del modem. Si esta
   familiarizado con la conexion de modems una PC funcionando como
   BBS, tal ves esto parezca extrano.

     --------------------------------------------------------------

  24.4.2. Consideraciones de interfaces serie

   FreeBSD soporta interfaces de comunicacion NS8250-, NS16450-,
   NS16550-, y NS16550A-basado en EIA RS-232C (CCITT V.24). Los
   dispositivos 8250 y 16450 tienen buffers de un solo caracter. El
   dispositivo 16550 brinda un buffer de 16 caracteres, el cual
   permite un mejor desempeno del sistema. (Errores en 16550 simple
   impiden el uso del buffer de 16 caracteres, asi que utilice 16550A
   si es posible). Debido a que los dispositivos de buffer de un solo
   caracter requieren mas trabajo del sistema operativo que los
   dispotivos de buffer de 16 caracteres, las tarjetas de interfaz
   serie basadas en 16550A son mayormente preferidas. Si el sistema
   tiene muchos puertos serie activos o tendra una carga elevada, las
   tarjetas basadas en 16550A son mejores para comunicaciones con
   baja tasa de error.

     --------------------------------------------------------------

  24.4.3. Revision rapida

   Como con las terminales, init engendra un proceso getty para cada
   puerto serie configurado para conexiones dial-in. Por ejemplo, si
   un modem esta conectado a /dev/ttyd0, el comando ps ax podria
   mostrar esto:

  4850 ??  I      0:00.09 /usr/libexec/getty V19200 ttyd0

   Cuando un usuario marca la linea del modem y el modem conecta, la
   linea CD (Carrier Detect) es reportada por el modem. El kernel
   nota que se ha detectado una portadora y completa la apertura de
   getty del puerto. getty manda un prompt login: a la velocidad
   inicial de linea especificada. getty observa si se reciben
   caracteres validos, y, en una configuracion tipica, si encuentra
   basura (probablemente debido a que la velocidad de conexion del
   modem es diferente a la velocidad de getty), getty trata de
   ajustar la velocidad de la linea hasta que recibe caracteres
   razonables.

   Despues que el usuario entra su nombre de login, getty ejecuta
   /usr/bin/login, que completa la entrada preguntando por la
   contrasena del usuario y entonces inicia el shell del usuario.

     --------------------------------------------------------------

  24.4.4. Archivos de configuracion

   Existen tres ficheros de configuracion del sistema en el
   directorio /etc que probablemente necesitara editar para permitir
   acceso de dial-up a su sistema FreeBSD. El primero, /etc/gettytab,
   contiene informacion de configuracion para el daemon
   /usr/libexec/getty. El segundo, /etc/ttys contiene informacion que
   le dice a /sbin/init que dispositivos tty deben tener procesos
   getty corriendo. Por ultimo, puede incluir comandos de
   inicializacion de puerto en el script /etc/rc.serial.

   Existen dos escuelas de pensamiento en relacion a modems dial-up
   en UNIX. Un grupo gusta de configurar sus modems y sistemas para
   que sin importar a que velocidad un usuario remoto marque, la
   interfaz local RS-232 computadora-a-modem corra a una velocidad
   fija. El beneficio de esta configuracion es que el usuario remoto
   siempre obtiene un prompt de login del sistema inmediatamente. La
   desventaja es que el sistema no sabe cual es la tasa de datos
   verdadera del usuario, asi que programas a pantalla completa como
   Emacs no ajustaran sus metodos de dibujado de pantalla para
   mejorar sus respuestas en conexiones mas lentas.

   La otra escuela configura sus modems de interfaz RS-232 para
   variar su velocidad basado en la velocidad de conexion del usuario
   remoto. Por ejemplo, conexiones V.32bis (14.4 Kbps) al modem
   podrian hacer al modem correr su interfaz RS-232 a 19.2 Kbps,
   mientras que conexiones 2400 bps hacen correr la interfaz RS-232
   del modem a 2400 bps. Debido a que getty no entiende el reporte de
   velocidad de conexion de cualquier modem, getty brinda un mensaje
   login: a una velocidad inicial y observa los caracteres que
   regresan en respuesta. Si el usuario recibe basura, se asume que
   sabe que debe presionar la tecla Enter hasta que reciba un prompt
   reconocible. Si la tasa de datos no concuerda, getty trata todo lo
   que el usuario escriba como "basura", trata yendo a la siguiente
   velocidad y brinda el prompt login: de nuevo. Este procedimiento
   puede continuar hasta el cansancio, pero normalmente solo toma un
   teclazo o dos antes que el usuario reciba un prompt correcto.
   Obviamente, esta secuencia de login no parece tan limpia como el
   anterior metodo de "velocidad fija", pero un usuario en una
   conexion de velocidad baja podria recibir una respuesta
   interactiva mejor desde programas a pantalla completa.

   Esta seccion tratara de dar informacion de configuracion
   balanceada, pero esta cargada hacia tener la tasa de datos del
   modem siguiendo la tasa de conexion.

     --------------------------------------------------------------

    24.4.4.1. /etc/gettytab

   /etc/gettytab es un fichero tipo termcap(5) de informacion de
   configuracion para getty(8). Por favor vea la pagina de manual
   gettytab(5) para informacion completa del formato del fichero y la
   lista de capacidades.

     --------------------------------------------------------------

      24.4.4.1.1. Configuracion de velocidad fija

   Si esta fijando la tasa de comunicacion de datos de su modem a una
   velocidad particular, probablemente no necesitara ningun cambio a
   /etc/gettytab.

     --------------------------------------------------------------

      24.4.4.1.2. Configuracion de velocidad concordante

   Necesitara crear una entrada en /etc/gettytab para darle
   informacion a getty acerca de las velocidades que desea usar para
   su modem. Si tiene un modem 2400 bps, puede probablemente utilizar
   la entrada existente D2400.

 #
 # Fast dialup terminals, 2400/1200/300 rotary (can start either way)
 #
 D2400|d2400|Fast-Dial-2400:\
         :nx=D1200:tc=2400-baud:
 3|D1200|Fast-Dial-1200:\
         :nx=D300:tc=1200-baud:
 5|D300|Fast-Dial-300:\
         :nx=D2400:tc=300-baud:

   Si tiene un modem de mayor velocidad, probablemente necesite
   agregar una entrada en /etc/gettytab; aqui esta una entrada que
   puede utilizar para un modem 14.4 Kbps con una velociad de
   interfaz maxima de 19.2 Kbps:

 #
 # Additions for a V.32bis Modem
 #
 um|V300|High Speed Modem at 300,8-bit:\
         :nx=V19200:tc=std.300:
 un|V1200|High Speed Modem at 1200,8-bit:\
         :nx=V300:tc=std.1200:
 uo|V2400|High Speed Modem at 2400,8-bit:\
         :nx=V1200:tc=std.2400:
 up|V9600|High Speed Modem at 9600,8-bit:\
         :nx=V2400:tc=std.9600:
 uq|V19200|High Speed Modem at 19200,8-bit:\
         :nx=V9600:tc=std.19200:

   esto resultara en una conexion de 8 bits, sin paridad.

   El ejemplo de arriba inicia la tasa de comunicaciones a 19.2 Kbps
   (para conexiones V.32bis), entonces cicla a traves de 9600 bps
   (para V.32), 2400 bps, 1200 bps, 300 bps, y de vuelta a 19.2 Kbps.
   El ciclado de la tasa de comunicaciones es implementado con la
   capacidad nx= ("siguiente tabla"). Cada una de las lineas usa una
   entrada tc= ("continuacion de tabla") para recoger el resto de las
   propiedades "estandar" para una tasa de datos en particular.

   Si tiene un modem 28.8 Kbps y/o quiere tomar ventaja de la
   compresion en un modem 14.4 Kbps, necesita utilizar una tasa de
   comunicaciones mayor a 19.2 Kbps. Aqui hay un ejemplo de una
   entrada gettytab iniciando a 57.6 Kbps:

 #
 # Additions for a V.32bis or V.34 Modem
 # Starting at 57.6 Kbps
 #
 vm|VH300|Very High Speed Modem at 300,8-bit:\
         :nx=VH57600:tc=std.300:
 vn|VH1200|Very High Speed Modem at 1200,8-bit:\
         :nx=VH300:tc=std.1200:
 vo|VH2400|Very High Speed Modem at 2400,8-bit:\
         :nx=VH1200:tc=std.2400:
 vp|VH9600|Very High Speed Modem at 9600,8-bit:\
         :nx=VH2400:tc=std.9600:
 vq|VH57600|Very High Speed Modem at 57600,8-bit:\
         :nx=VH9600:tc=std.57600:

   Si tiene un CPU lento o un sistema muy cargado y no tiene puertos
   serie basados en 16550A, tal vez reciba errores en "sio" "silo" a
   57.6 Kbps.

     --------------------------------------------------------------

    24.4.4.2. /etc/ttys

   La configuracion del fichero /etc/ttys fue cubierto en Ejemplo
   24-1. La configuracion para modems es similar pero debemos pasar
   un argumento diferente a getty y especificar un tipo diferente de
   terminal. El formato general tanto para configuracion de velocidad
   fija y velocidad concordante es:

 ttyd0   "/usr/libexec/getty xxx"   dialup on

   El primer componente de la linea de arriba es el fichero de
   dispositivo especial para esta entrada -- ttyd0 significa que
   /dev/ttyd0 es el fichero que getty estara vigilando. El segundo
   componente "/usr/libexec/getty xxx" (xxx sera reemplazado por la
   capacidad inicial de gettytab) es el proceso que init ejecutara en
   el dispositivo. El tercer componente, dialup, es el tipo de
   terminal por omision. El cuarto parametro, on, le indica a init
   que la linea es operacional. Puede existir un quinto parametro,
   secure, pero solo deberia ser utilizado para terminales que esten
   fisicamente seguras (como la consola del sistema).

   El tipo de terminal por omision (dialup en el ejemplo de arriba)
   puede depender de preferencias locales. dialup es el tipo de
   terminal tradicional por omision en lineas dial-up para que los
   usuarios puedan personalizar sus scripts de login para reconocer
   cuando la terminal es dialup y ajustar sus tipos de terminal
   automaticamente. De toda maneras, el autor encuentra mas sencillo
   especificar en su sitio vt102 como el tipo de terminal por
   omision, puesto que los usuarios solo utilizan emulacion VT102 en
   sus sistemas remotos.

   Despues de realizar los cambios a /etc/ttys, puede enviar al
   proceso init una senal HUP para que relea el fichero. Puede
   utilizar el comando

 # kill -HUP 1

   para mandar la senal. Si esta es su primera vez instalando el
   sistema, tal vez quiera esperar hasta que su(s) modem(s) esten
   configurados y conectados correctamente antes de senalizar a init.

     --------------------------------------------------------------

      24.4.4.2.1. Configuracion de velocidad fija

   Para una configuracion de velocidad fija, su entrada ttys necesita
   tener una entrada de velocidad fija provista en getty. Para un
   modem cuya velocidad de puerto esta fijada en 19.2 Kbps, la
   entrada ttys podria verse asi:

 ttyd0   "/usr/libexec/getty std.19200"   dialup on

   Si su modem esta fijado a un velocidad de datos diferente,
   sustituya el valor apropiado por std.velocidad en lugar de
   std.19200. Asegurese de usar un tipo valido listado en
   /etc/gettytab.

     --------------------------------------------------------------

      24.4.4.2.2. Configuracion de velocidad concordante

   En una configuracion de velocidad concordante su entrada ttys
   necesita referenciar el inicio de la entrada "auto-baud" (sic) en
   /etc/gettytab. Por ejemplo, si agrego la entrada sugerida arriba
   para un modem con velocidad concordante que inicia a 19.2 Kbps (la
   entrada gettytab conteniendo el punto de inicio V19200), su
   entrada ttys podria verse como esta:

 ttyd0   "/usr/libexec/getty V19200"   dialup on

     --------------------------------------------------------------

    24.4.4.3. /etc/rc.serial

   Modems de alta velocidad, como V.32, V.32bis, y V.34, necesitan
   usar control de flujo por hardware (RTS/CTS). Puede agregar
   comandos stty a /etc/rc.serial para activar la bandera de control
   de flujo por hardware en el kernel de FreeBSD para los puertos del
   modem.

   Por ejemplo para activar la bandera termios crtscts de
   dispositivos de inicializacion dial-in y dial-out en el puerto
   serie #1 (COM2), las siguientes lineas pueden agregarse a
   /etc/rc.serial:

 # Serial port initial configuration
 stty -f /dev/ttyid1 crtscts
 stty -f /dev/cuaia1 crtscts

     --------------------------------------------------------------

  24.4.5. Propiedades del modem

   Si tiene un modem cuyos parametros pueden ser activados
   permanentemente en RAM no volatil, necesitara utilizar un programa
   de terminal (como Telix en MS-DOS o tip en FreeBSD) para activar
   los parametros. Conecte al modem usando la misma velocidad de
   comunicacion como velocidad inicial que getty usara y configure la
   RAM no volatil del modem para que concuerde con estos
   requerimientos:

     * CD activado cuando este conectado

     * DTR activado para operacion; tirar DTR cuelga la linea y
       reinicia el modem

     * CTS control de flujo de datos transmitidos

     * Deshabilitar control de flujo XON/XOFF

     * RTS control de flujo de datos recibidos

     * Modo silencioso (sin codigos resultantes)

     * Sin eco de comandos

   Por favor lea la documentacion de su modem para saber que comandos
   y/o switches DIP necesita proporcionarle.

   Pro ejemplo, para activar los parametros de arriba en un modem
   U.S. Robotics(R) Sportster(R) 14,400 externo, uno podria dar estos
   comandos al modem:

 ATZ
 AT&C1&D2&H1&I0&R2&W

   Tal vez quiera tambien tomar esta oportunidad para ajustar otras
   propiedades en el modem, como si utilizara compresion V.42bis y/o
   MNP5.

   El modem U.S. Robotics Sportster 14,400 externo tambien posee
   switches DIP que necesitan activarse; para otros modems, tal vez
   pueda utilizar estas propiedades como un ejemplo:

     * Switch 1: ARRIBA -- DTR Normal

     * Switch 2: N/A (Codigos resultantes verbales/Codigos
       resultantes numericos)

     * Switch 3: ARRIBA -- Suprimir codigos resultantes

     * Switch 4: ABAJO -- No eco, comandos offline

     * Switch 5: ARRIBA -- Auto respuesta

     * Switch 6: ARRIBA -- Deteccion de senal Normal

     * Switch 7: ARRIBA -- Cargar valores NVRAM por omision

     * Switch 8: N/A (Modo inteligente/Modo tonto)

   Codigos resultantes deberian ser deshabilitados o suprimidos para
   modems dial-up para evitar problemas que pueden ocurrir si getty
   erroneamente ofrece un prompt login: a un modem que se encuentra
   en modo de comandos y el modem hace eco del comando o regresa un
   codigo resultante. Esta secuencia puede resultar en una
   conversacion larga y tonta entre getty y el modem.

     --------------------------------------------------------------

    24.4.5.1. Configuracion de velocidad fija

   Para una configuracion de velocidad fija necesitara configurar el
   modem para mantener una tasa de datos constante
   modem-a-computadora independiente de la tasa de comunicaciones. En
   un modem U.S. Robotics Sportster 14,400 externo estos comandos
   fijaran la tasa de datos modem-a-computadora a la velocidad
   utilizada para pasar los comandos:

 ATZ
 AT&B1&W

     --------------------------------------------------------------

    24.4.5.2. Configuracion de velocidad concordante

   Para una configuracion de velocidad variable necesitara configurar
   su modem para ajustar la tasa de datos de su puerto serie para que
   coincida con la tasa de llamada entrante. En un modem U.S.
   Robotics Sportster 14,400 externo estos comandos fijaran la tasa
   de correccion de errores de datos a la velocidad usada para pasar
   los comandos, pero le permite a la tasa del puerto serie variar
   para conexiones que no corrigen errores:

 ATZ
 AT&B2&W

     --------------------------------------------------------------

    24.4.5.3. Revisando la configuracion del modem

   La mayoria de los modems de alta velocidad brindan comandos para
   ver los parametros actuales de operacion del modem en un modo
   entendible para humanos. En el modem U.S. Robotics Sportster
   14,400 externo, el comando ATI5 despliega los parametros que estan
   almacenados en la RAM no volatil. Para ver los parametros reales
   de operacion del modem (influenciado por los parametros de los
   switches DIP del modem), utilice el comando ATZ y entonces ATI4.

   Si tiene una marca diferente de modem, revise el manual de su
   modem para ver como checar doblemente los parametros de
   configuracion de su modem.

     --------------------------------------------------------------

  24.4.6. Determinando errores

   Aqui hay unos cuantos pasos que puede seguir para revisar en sus
   sistema el modem dial-up.

     --------------------------------------------------------------

    24.4.6.1. Revisando el sistema FreeBSD

   Conecte su modem a su sistema FreeBSD, arranque el sistema, y, si
   su modem tiene luces de indicacion de estado, mire si el indicador
   DTR del modem enciende cuando el prompt login: aparece en la
   consola del sistema -- si enciende, eso deberia significar que
   FreeBSD ha iniciado un proceso getty en el puerto de
   comunicaciones apropiado y esta esperando a que el modem acepte la
   llamada.

   Si el indicador DTR no enciende, entre al sistema FreeBSD a travas
   de la consola y ponga un ps ax para ver si FreeBSD esta tratando
   de correr un proceso getty en el puerto correcto. Deberia ver
   lineas como estas entre los procesos desplegados:

   114 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd0
   115 ??  I      0:00.10 /usr/libexec/getty V19200 ttyd1

   Si ve algo diferente, como esto:

   114 d0  I      0:00.10 /usr/libexec/getty V19200 ttyd0

   y el modem no ha aceptado una llamada todavia, esto significa que
   getty ha completado su apertura en el puerto de comunicaciones.
   Esto puede indicar un problema con el cableado o un modem mal
   configurado, debido a que getty no podria abrir el puerto de
   comunicaciones hasta que un CD (deteccion de senal) sea afirmado
   por el modem.

   si no ve ningun proceso getty esperando para abrir el puerto ttydN
   deseado, revise de nuevo sus entradas en /etc/ttys para ver si
   existe algun error ahi. Tambien revise el fichero de log
   /var/log/messages para ver si existe algun mensaje de init o de
   getty relacionados a cualquier problema. Si existe cualquier
   mensaje, revise nuevamente los ficheros de configuracion /etc/ttys
   y /etc/gettytab, asi como los ficheros especiales de dispositivo
   /dev/ttydN, por cualquier error, entradas faltantes, o ficheros
   especiales de dispositivo faltantes.

     --------------------------------------------------------------

    24.4.6.2. Trate de llamar

   Trate de llamar al sistema; asegurese de usar 8 bits, sin paridad,
   y 1 bit de parada en el sistema remoto. Si no obtiene un prompt
   inmediatamente, o recibe basura, trate presionando Enter una vez
   por segundo. Si continua sin ver un prompt de login: despues de un
   tiempo, trate enviando un BREAK. Si esta usando un modem de alta
   velocidad para realizar la marcacion, trate marcando de nuevo
   despues de fijar la velociad de interfaz del modem (por medio de
   AT&B1 en un modem U.S. Robotics Sportster, por ejemplo).

   Si todavia no puede obtener un prompt de login:, revise
   /etc/gettytab de nuevo y revise nuevamente que

     * El nombre de capacidad inicial especificado en /etc/ttys para
       la linea coincida con un nombre de una capacidad en
       /etc/gettytab

     * Cada entrada nx= coincida con otro nombre de capacidad de
       gettytab

     * Cada entrada tc= coincida con otro nombre de capacidad de
       gettytab

   Si marca pero el modem en el sistema FreeBSD no contesta,
   asegurese que el modem esta configurado para contestar el telefono
   cuando DTR sea detectado. Si el modem parece estar configurado
   correctamente, verifique que DTR sea detectado revisando las luces
   indicadoras del modem (si tiene alguna).

   Si ha revisado todo varias veces y todavia no funciona, tome un
   descanso y regrese a eso depues. Si todavia continua sin
   funcionar, tal vez puede mandar un correo electronico a lista de
   correo para preguntas generales sobre FreeBSD describiendo su
   modem y su problema, y las buenas personas en la lista trataran de
   ayudarle.

     --------------------------------------------------------------

24.5. Servicio dial-out

   Los siguientes son tips para que su equipo pueda conectarse a otra
   computadora mediante el modem. Esto es apropiado para establecer
   una sesion de terminal con un equipo remoto.

   Esto es util para entrar a una BBS.

   Este tipo de conexion puede ser extremadamente util para obtener
   un fichero del Internet si tiene problemas con PPP. Si necesita
   mandar por FTP algo y PPP no funciona, utilice la sesion de
   terminal para mandarlo por FTP. Entonces use zmodem para
   transferirlo a su maquina.

     --------------------------------------------------------------

  24.5.1. ?Mi modem Hayes no esta soportado, que puedo hacer?

   En realidad, la pagina de manual para tip no esta actualizada.
   Existe un marcador Hayes generico incluido. Solo utilice at=hayes
   en su fichero /etc/remote.

   El controlador Hayes no es lo suficientemente inteligente para
   reconocer algunas de las funciones avanzadas de nuevos modems como
   BUSY, NO DIALTONE, o CONNECT 115200 y solamente se confundira.
   Deberia apagar esos mensajes cuando utilice tip (usando ATX0&W).

   Tambien, la pausa de marcado para tip es de 60 segundos. Su modem
   debe utilizar un poco menos, o de otra manera tip pensara que
   existe un problema de comunicacion. Trate con ATS7=45&W.

     Nota: Asi como se envia, tip todavia no soporta modems Hayes
     completamente. La solucion es editar el fichero tipconf.h en el
     directorio /usr/src/usr.bin/tip/tip. Obviamente necesita las
     fuentes de la distribucion para hacer esto.

     Edite la linea #define HAYES 0 a #define HAYES 1. Entonces haga
     un make y make install. Todo funciona bien despues de eso.

     --------------------------------------------------------------

  24.5.2. ?Como se espera que yo entre estos comandos AT?

   Haga lo que se llama una entrada "directa" en su fichero
   /etc/remote. Por ejemplo, si su modem esta conectado al primer
   puerto serie, /dev/cuaa0, entonces ponga la siguiente linea:

 cuaa0:dv=/dev/cuaa0:br#19200:pa=none

   Utilice la tasa mas alta de bps que su modem soporte en la
   capacidad br. Entonces, escriba tip cuaa0 y estara conectado a su
   modem.

   Si no existe un fichero /dev/cuaa0 en su sistema, haga esto:

 # cd /dev
 # sh MAKEDEV cuaa0

   O use cu como root con el siguiente comando:

 # cu -lline -sspeed

   line es el puerto serie (ejem./dev/cuaa0) y speed es la velocidad
   (ejem.57600). Cuando termine de meter los comandos AT presione ~.
   para salir.

     --------------------------------------------------------------

  24.5.3. !El signo @ para la capacidad pn no funciona!

   El signo @ en la capacidad numero de telefono le dice a tip que
   busque en /etc/phones por un numero de telefono. Pero el signo @
   tambien es un caracter especial en ficheros de capacidad como
   /etc/remote. Escapelo con una diagonal invertida:

 pn=\@

     --------------------------------------------------------------

  24.5.4. Como puede marcar un numero de telefono. en la linea de
  comando?

   Ponga lo que se llama una entrada "generica" en su fichero
   /etc/remote. Por ejemplo:

 tip115200|Dial any phone number at 115200 bps:\
         :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du:
 tip57600|Dial any phone number at 57600 bps:\
         :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du:

   Entonces puede hacer cosas como:

 # tip -115200 5551234

   Si prefiere cu y no tip, use una entrada cu:

 cu115200|Use cu to dial any number at 115200bps:\
         :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:

   y escriba:

 # cu 5551234 -s 115200

     --------------------------------------------------------------

  24.5.5. ?Tengo que teclear la tasa de bps cada vez que haga eso?

   Ponga una entrada para tip1200 o cu1200, pero utilice cualquier
   tasa bps que sea apropiada con la capacidad br. tip piensa que una
   buena opcion por omision es 1200 bps es por eso que busca una
   entrada tip1200. Aunque no tiene que usar 1200 bps.

     --------------------------------------------------------------

  24.5.6. Acceso a un numero de equipos a traves de un servidor de
  terminales

   en lugar de esperar hasta que este conectado y teclear CONNECT
   <host> cada vez, use la capacidad de tip cm. Por ejemplo, estas
   entradas en /etc/remote:

 pain|pain.deep13.com|Forrester's machine:\
         :cm=CONNECT pain\n:tc=deep13:
 muffin|muffin.deep13.com|Frank's machine:\
         :cm=CONNECT muffin\n:tc=deep13:
 deep13:Gizmonics Institute terminal server:\
         :dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234:

   Le permitira teclear tip pain o tip muffin para conectar a los
   equipos pain o muffin, y tip deep13 para accesar al servidor de
   terminales.

     --------------------------------------------------------------

  24.5.7. ?Puede Tip tratar mas de una linea para cada sitio?

   Eso es a menudo un problema donde una universidad tiene varias
   lineas de modems y varios miles de estudiantes tratando de
   usarlas.

   Haga una entrada para su universidad en /etc/remote y use @ para
   la capacidad pn :

 big-university:\
         :pn=\@:tc=dialout
 dialout:\
         :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:

   Entonces liste los numeros de telefonos para la universidad en
   /etc/phones:

 big-university 5551111
 big-university 5551112
 big-university 5551113
 big-university 5551114

   tip tratara cada uno en el orden listado, entonces se rendira. Si
   quiere seguir tratando, ejecute tip en un ciclo while.

     --------------------------------------------------------------

  24.5.8. ?Porque tengo que presionar Ctrl+P dos veces para mandar un
  Ctrl+P ?

   Ctrl+P es el caracter de "forzado" por omision, usado para decirle
   a tip que el siguiente caracter es un dato literal. Puede
   establecer el caracter de forzado a cualquier otro caracter con el
   escape ~s, el cual significa "establecer una variable."

   Escriba ~sforce=single-char seguido por una nueva linea.
   single-char es cualquier caracter. Si no especifica single-char,
   entonces el caracter de forzado es el caracter nulo, el cual puede
   obtener tecleando Ctrl+2 o Ctrl+Espacio. Un buen valor para
   single-char es Shift+Ctrl+6, es cual solamente es usado en algunos
   servidores de terminales.

   Puede hacer que el caracter de forzado sea cualquiera que usted
   quiera especificando lo siguiente en su fichero $HOME/.tiprc:

 force=<single-char>

     --------------------------------------------------------------

  24.5.9. ??De repente todo lo que escribo esta en mayusculas??

   Debe haber presionado Ctrl+A, el"caracter de mayusculas" de tip
   especialmente disenado para personas con teclas caps-lock danadas.
   Use ~s como se ve arriba y establezca la variable raisechar a algo
   razonable. De hecho, puede establecerla a la misma del caracter de
   forzado, si nunca espera utilizar ninguna de estas funciones.

   Aqui hay un ejemplo de fichero .tiprc perfecto para usuarios de
   Emacs que necesitan teclear Ctrl+2 y Ctrl+A con frecuencia:

 force=^^
 raisechar=^^

   El ^^ es Shift+Ctrl+6.

     --------------------------------------------------------------

  24.5.10. ?Como puedo realizar transferencias de ficheros con tip?

   Si esta hablando con otro sistema UNIX, puede mandar y recibir
   ficheros con ~p (put) y ~t (take). Estos comandos ejecutan cat y
   echo en el sistema remoto para aceptar y enviar ficheros. La
   sintaxis es:

   ~p fichero-local [fichero-remoto]

   ~t fichero-remoto [fichero-local]

   No existe revision de errores, asi que probablemente deberia usar
   otro protocolo, como zmodem.

     --------------------------------------------------------------

  24.5.11. ?Como puedo ejecutar zmodem con tip?

   Para recibir ficheros, inicie el programa de envio en el extremo
   remoto. Entonces escriba ~C rz para empezar a recibirlos
   localmente.

   Para enviar ficheros, inicie el programa de recepcion el extremo
   remoto. Entonces escriba ~C sz files para enviarlos al sistema
   remoto.

     --------------------------------------------------------------

24.6. Configurando la consola serie

   Contribuido por Kazutaka YOKOTA. Basado en un documento de Bill
   Paul.

     --------------------------------------------------------------

  24.6.1. Introduccion

   FreeBSD tiene la habilidad de arrancar en un sistema con solo una
   terminal tonta como consola. Tal configuracion podria ser util
   para dos clases de gente: administradores de sistema que quieran
   instalar FreeBSD en maquinas que no tienen teclado o monitor
   conectado, y desarrolladores que quieran corregir errores en el
   kernel o controladores de dispositivos.

   Como se describe en Capitulo 12, FreeBSD emplea un sistema de
   arranque de tres estados. Los primeros dos estados se encuentran
   en el codigo del bloque de arranque el cual es almacenado al
   principio del slice en el disco de arranque. El bloque de arranque
   entonces cargara y ejecutara el cargador de arranque
   (/boot/loader) como la tercera etapa de codigo.

   Para poder configurar la consola serie debe configurar el codigo
   del bloque de arranque, el codigo del cargador de arranque y el
   kernel.

     --------------------------------------------------------------

  24.6.2. Configuraciom de consola serie, version breve

   Esta seccion asume que esta usando la configuracion por omision y
   solo quiere una rapida revision de la configuracion de la consola
   serie.

    1. Conecte el cable serie a COM1 y la terminal controladora.

    2. Para ver todos los mensajes de arranque en la consola serie
       escriba el siguiente comando mientras esta firmado como
       superusuario:

 # echo 'console="comconsole"' >> /boot/loader.conf

    3. Edite /etc/ttys y cambie dialup a vt100 para la entrada ttyd0.
       De otra manera una contrasena no sera requerida para conectar
       por medio de la consola serie, resultando en un agujero de
       seguridad potencial.

    4. Reinicie el sistema para ver si los cambios tuvieron efecto.

   Si una configuracion diferente es requerida, una explicacion mas
   detallada existe en Seccion 24.6.3.

     --------------------------------------------------------------

  24.6.3. Configuracion de la consola serie

    1. Prepare un cable serie.

       Necesitara ya sea un cable null-modem o un cable serie
       estandar y un adaptador null-modem. Vea Seccion 24.2.2 para
       una discusion sobre cables serie.

    2. Desconecte su teclado.

       La mayoria de sistemas PC buscan el teclado durante la
       autoprueba de encendido (POST) y generaran un error si el
       teclado no es detectado. Algunas maquinas se quejan fuerte
       sobre la falta de un teclado y no continuaran arrancando hasta
       que este contectado.

       Si su computadora se queja con este error, pero arranca de
       todos modos, entonces no tiene que hacer nada especial.
       (Algunas maquinas con BIOS Phoenix instalado solo mostraran
       "Keyboard failed" y continuaran arrancando normalmente.)

       Si su computadora se niega a arrancar sin un teclado
       conectado, entonces tendra que configurar el BIOS para que
       ignore este error (si es posible). Consulte el manual de su
       tarjeta madre para los detalles de como hacer esto.

         Sugerencia: Poniendo el teclado como "No instalado" en el
         BIOS no significa que no poda usar su teclado. Todo lo que
         hace es decirle al BIOS que no busque un teclado al momento
         de encender, asi no se quejara si el teclado no se encuentra
         conectado. Puede dejar el teclado conectado incluso si esta
         bandera esta puesta a "No instalado" y el teclado todaia
         funcionara.

         Nota: Si su sistema tiene un raton PS/2(R) es muy probable
         que tambien tenga que desconectar su raton junto con el
         teclado. Esto se debe a que los ratones PS/2 comparten algun
         hardware con el teclado y dejandolo conectado puede
         ocasionar que el sistema piense que el teclado sigue
         conectado. Se dice que un sistema Gateway 2000 Pentium
         90 MHz con un AMI BIOS se comporta de esta manera. En
         general, esto no representa un problema puesto que el raton
         no es muy util sin el teclado de todas maneras.

    3. Conecte una terminal tonta a COM1 (sio0).

       Si no tiene una terminal tonta, puede utilizar una PC/XT vieja
       con un programa de modem, o el puerto serie en otro equipo
       UNIX. Si no tiene un COM1 (sio0), consiga uno. En este
       momento, no existe manera de seleccionar un puerto diferente a
       COM1 para los bloques de arranque sin recompilar los bloques
       de arranque. Si ya esta utilizando COM1 para otro dispositivo,
       necesitara remover temporalmente ese dispositivo e instalar un
       nuevo bloque de arranque y kernel una vez que tenga a FreeBSD
       arriba y funcionando. (Se asume que COM1 estara disponible en
       un fichero/computadora/servidor de terminales de todas
       maneras; si realmente necesita COM1 para algo mas (y no puede
       cambiar ese algo a COM2 (sio1)), entonces probablemente no
       deberia de molestarse con todo esto en primer lugar.)

    4. Asegurese de que el fichero de configuracion de su kernel
       tenga las banderas apropiadas activadas para COM1 (sio0).

       Las banderas relevantes son:

            0x10

                    Habilita el soporte de consola para esta unidad.
                    Las otras banderas de consola son ignoradas a
                    menos que esta esta activada. Actualmente, al
                    menos una unidad puede tener soporte de consola;
                    la primera (en orden de configuracion) con esta
                    bandera activada es preferida. Esta opcion por si
                    sola no hara del puerto serie una consola. Active
                    la siguiente bandera o utilice la opcion -h
                    descrita abajo, junto con esta bandera.

            0x20

                    Obliga a esta unidad a ser la consola (a menos
                    que exista otra consola de mayor prioridad), sin
                    importar la opcion -h discutida abajo. Esta
                    bandera reemplaza la opcion COMCONSOLE en las
                    versiones 2.X de FreeBSD. La bandera 0x20 debe
                    ser utilizada junto con la bandera 0x10.

            0x40

                    Reserva esta unidad (en conjunto con 0x10) y hace
                    esta unidad no disponible para acceso normal. No
                    deberia activar esta bandera en la unidad de
                    puerto serie la cual desee utilizar como la
                    consola serie. El unico uso de esta bandera es
                    designar la unidad para coreccion de errore
                    remota del kernel. Revise "El manual del
                    desarrollador" para mayor informacion sobre
                    correccion de errores remotamente.

                      Nota: En FreeBSD 4.0 o posterior la semantica
                      de la bandera 0x40 es ligeramente diferente y
                      existe otra bandera para especificar un puerto
                      serie para correccion de errores remotamente.

       Ejemplo:

 device sio0 at isa? port IO_COM1 flags 0x10 irq 4

       Vea la pagina de manual sio(4) para mas detalles.

       Si las banderas no fueron activadas, necesita correr
       UserConfig (en una consola diferente) o recompilar el kernel.

    5. Cree boot.config en el directorio raiz de la particion a del
       disco de arranque.

       Este fichero instruira al codigo del bloque de arranque como
       le gustaria arrancar el sistema. Para activar la consola
       serie, necesita una o mas de las siguientes opciones-- si
       quiere opciones multiples incluyalas todas en la misma linea:

            -h

                    Cambia entre consola interna y serie. Puede usar
                    esto para cambiar los dispositivos de consola.
                    Por ejemplo, si arranca desde la consola interna
                    (video), puede utilizar -h para dirigir el
                    cargador de arranque y el kernel a que usen el
                    puerto serie como su dispositivo de consola.
                    Alternativamente, si arranca desde el puerto
                    serie, puede utilizar -h para decirle al cargador
                    de arranque y al kernel que usen el video como
                    consola.

            -D

                    Cambia entre configuracion de consola simple y
                    dual. En la configuracion simple la consola sera
                    ya sea la consola interna (video) o el puerto
                    serie, dependiendo del estado de la opcion -h de
                    arriba. En la configuracion de consola dual, el
                    video y el puerto serie se convertiran en la
                    consola al mismo tiempo, sin importar del estado
                    de la opcion -h. De todas maneras, note que la
                    configuracion de consola dual toma efecto
                    solamente mientras el bloque de arranca esta
                    corriendo. Una vez que el cargador de arranque
                    toma el control, la consola especificada por la
                    opcion -h se convierte en la unica consola.

            -P

                    Hace que el bloque de arranque busque el teclado.
                    Si no se encuentra un teclado, la opcion -D y -h
                    son activadas automativamente.

                      Nota: Debido a problemas de espacio en la
                      version actual del bloque de arranque, la
                      opcion -P es capaz de detectar unicamente
                      teclados extendidos. Teclados con menos de 101
                      teclas (y carentes de teclas F11 y F12) no
                      pueden ser detectados. Algunos teclados en
                      laptops puede que no sean correctamente
                      encontrados debido a esta limitacion. Si este
                      es el caso con su sistema, debe abandonar el
                      uso de la opcion -P. Desafortunadamente no hay
                      una solucion para este problema.

       Utilice ya sea la opcion -P para seleccionar la consola
       automaticamente, o la opcion -h para activar la consola serie.

       Puede incluir otras opciones descritas en boot(8) tambien.

       Las opciones, excepto por -P, seran pasadas al cargador de
       arranque (/boot/loader). El cargador de arranque determinara
       si el video interno o el puerto serie deberia convertirse en
       la consola examinando el estado de la opcion -h solamente.
       Esto significa que si especifica la opcion -D pero no la
       opcion -h en /boot.config, puede utilizar el puerto serie como
       consola solamente durante el bloque de arranque; el cargador
       de arranque usara el video interno como consola.

    6. Arranque la maquina.

       Cuando inicia su equipo FreeBSD, los bloques de arranque
       mostraran los contenidos de /boot.config a la consola. Por
       ejemplo:

 /boot.config: -P
 Keyboard: no

       La segunda linea aparece solamente si pone -P en /boot.config
       e indica la presencia/ausencia del teclado. Estos mensajes van
       a la consola serie o a la interna, o a ambas, dependiendo de
       la opcion en /boot.config.

                 Opciones                      Mensaje va a           
       ninguna                       consola interna                  
       -h                            consola serie                    
       -D                            consola serie e interna          
       -Dh                           consola serie e interna          
       -P, teclado presente          consola interna                  
       -P, teclado ausente           consola serie                    

       Despues de los mensajes de arriba, existira una pausa pequena
       antes que los bloques de arranque continuen cargando el
       cargador de arranque y antes de que cualquier mensaje
       posterior sea impreso en la consola. Bajo ciertas
       circunstancias, no necesita interrumpir los bloques de
       arranque, pero tal vez quiera hacerlo para asegurarse que las
       cosas estan configuradas correctamente.

       Presione cualquier tecla, diferente a Enter, en la consola
       para interrumpir el proceso de arranque. Los bloques de
       arranque entonces esperaran una entrada para determinar como
       continuar. Debe ver algo como esto:

 >> FreeBSD/i386 BOOT
 Default: 0:ad(0,a)/boot/loader
 boot:

       Verifique que el mensaje de arriba aparece en la consola serie
       o en la interna o en ambas, de acuerdo a las opciones que puso
       en /boot.config. Si el mensaje aparece en la consola correcta,
       presione Enter para continuar el proceso de arranque.

       Si quiere usar la consola serie pero no ve el prompt en la
       terminal serie, algo esta mal con su configuracion. Mientras
       tanto, entre -h y presione Enter/Return (si es posible) para
       decirle al bloque de arranque (y entonces al cargador de
       arranque y al kernel) que elija el puerto serie como consola.
       Una vez que el sistema arranque, regrese y revise que fue lo
       que estuvo mal.

   Despues que el cargador de arranque ha cargado y usted se
   encuentra en la tercera etapa del proceso de arranque todavia
   puede cambiar entre la consola interna y la consola serie
   activando las variables de entorno apropiadas en el cargador de
   arranque. Vea Seccion 24.6.6.

     --------------------------------------------------------------

  24.6.4. Resumen

   aqui esta el resumen de varias configuraciones discutidas en esta
   seccion y la consola seleccionada eventualmente.

     --------------------------------------------------------------

    24.6.4.1. Caso 1: Activo las banderas a 0x10 para sio0

 device sio0 at isa? port IO_COM1 flags 0x10 irq 4

       Opciones en     Consola durante   Consola durante   Consola en 
      /boot.config       bloques de        cargador de       kernel   
                          arranque          arranque       
   ninguna             interna         interna             interna    
   -h                  serie           serie               serie      
   -D                  serie e interna interna             interna    
   -Dh                 serie e interna serie               serie      
   -P, teclado         interna         interna             interna    
   presente                                                
   -P, teclado ausente serie e interna serie               serie      

     --------------------------------------------------------------

    24.6.4.2. Caso 2: Activo las banderas a 0x30 para sio0

 device sio0 at isa? port IO_COM1 flags 0x30 irq 4

       Opciones en     Consola durante   Consola durante   Consola en 
      /boot.config       bloques de        cargador de       kernel   
                          arranque          arranque       
   ninguna             interna         interna             serie      
   -h                  serie           serie               serie      
   -D                  serie e interna interna             serie      
   -Dh                 serie e interna serie               serie      
   -P, teclado         interna         interna             serie      
   presente                                                
   -P, teclado ausente serie e interna serie               serie      

     --------------------------------------------------------------

  24.6.5. Consejos para la consola serie

    24.6.5.1. Configurando un velocidad de puerto serie mas rapida

   Por omision, la configuracion del puerto serie es: 9600 baud, 8
   bits, sin paridad, y 1 bit de parada. Si desea cambiar la
   velocidad, necesita recompilar al menos los bloques de arranque.
   Agregue la siguiente linea a /etc/make.conf y compile nuevos
   bloques de arranque:

 BOOT_COMCONSOLE_SPEED=19200

   Vea Seccion 24.6.5.2 para instrucciones detalladas sonre construir
   e instalar nuevos bloques de arranque.

   Si la consola serie esta configurada de alguna otra manera que
   arrancando con -h, o si la consola serie usada por el kernel es
   diferente de la usada por los bloques de arranque, entonces
   tambien debe agregar la siguiente opcion al fichero de
   configuracion del kernel y compilar un nuevo kernel:

 options CONSPEED=19200

     --------------------------------------------------------------

    24.6.5.2. Usando puertos serie para consola diferentes a sio0

   Utilizar un puerto serie diferente a sio0 como consola requiere
   cierta recompilacion. Si quiere usar otro puerto serie por la
   razon que sea, recompile los bloques de arranque, el cargador de
   arranque y el kernel como sigue.

    1. Consiga las fuentes del kernel. (Vea Capitulo 23)

    2. Edite /etc/make.conf y ponga BOOT_COMCONSOLE_PORT a la
       direccion del puerto que quiera usar (0x3F8, 0x2F8, 0x3E8 o
       0x2E8). Solamente de sio0 hasta sio3 (COM1 hasta COM4) pueden
       usarse; tarjetas multipuertos serie no funcionaran. No se
       necesita especificar interrupcion.

    3. Cree un fichero personalizado de configuracion de kernel y
       agrege las banderas apropiadas para el puerto serie que desee
       utilizar. Por ejemplo, si desea hacer de sio1 (COM2) la
       consola:

 device sio1 at isa? port IO_COM2 flags 0x10 irq 3

       o

 device sio1 at isa? port IO_COM2 flags 0x30 irq 3

       Las banderas de consola para otros puertos serie no deben
       activarse.

    4. Recompile e instale los bloques de arranque y el cargador de
       arranque:

 # cd /sys/boot
 # make clean
 # make
 # make install

    5. Reconstruya e instale el kernel.

    6. Escriba los bloques de arranque al disco de arranque con
       disklabel(8) y arranque desde el nuevo kernel.

     --------------------------------------------------------------

    24.6.5.3. Accesando DDB Debugger desde la linea serie

   Si desea entrar al modo kernel debugger desde una consola serie
   (util para diagnosticos remotos, !pero tambien peligroso si genera
   un BREAK ilegitimo en el puerto serie!) entonces debe compilar con
   las siguientes opciones:

 options BREAK_TO_DEBUGGER
 options DDB

     --------------------------------------------------------------

    24.6.5.4. Obteniendo un prompt de login en la consola serie

   Aunque esto no es requerido, tal vez quiera obtener un prompt de
   login a traves de una linea serie, ahora que puede ver los
   mensajes de arranque y puede entrar a una sesion en modo kernel
   debug a traves de la consola serie. Aqui esta como hacerlo.

   Abra el fichero /etc/ttys con un editor y localice las lineas:

 ttyd0 "/usr/libexec/getty std.9600" unknown off secure
 ttyd1 "/usr/libexec/getty std.9600" unknown off secure
 ttyd2 "/usr/libexec/getty std.9600" unknown off secure
 ttyd3 "/usr/libexec/getty std.9600" unknown off secure

   ttyd0 hasta ttyd3 corresponde a COM1 hasta COM4. Cambie off a on
   para el puerto deseado. Si ha cambiado la velocidad del puerto
   serie, necesita cambiar std.9600 para que concuerde con los
   parametros actuales, ej. std.19200.

   Tal vez tambien desee cambiar el tipo de terminal de unknown al
   tipo actual de su terminal serie.

   Despues de editar el fichero, debe hacer un kill -HUP 1 para que
   este cambio surta efecto.

     --------------------------------------------------------------

  24.6.6. Cambiando la consola desde el cargador de arranque

   Secciones anteriores describieron como instalar la consola serie
   manipulando el bloque de arranque. Esta seccion muestra que puede
   especificar la consola especificando algunos comandos y variables
   de entorno en el cargador de arranque. Como el cargador de
   arranque es invocado en la tercera etapa del proceso de arranque,
   despues del bloque de arranque, las propiedades en el cargador de
   arranque sobreescribiran las del bloque de arranque.

     --------------------------------------------------------------

    24.6.6.1. Instalando la consola serie

   Puede facilmente especificarle al cargador de arranque y al kernel
   que utilicen la consola serie escribiendo solamente una linea en
   /boot/loader.rc:

 set console="comconsole"

   Esto tendra efecto sin importar las opciones del bloque de
   arranque discutidas en la seccion previa.

   Es mejor que ponga la linea de arriba como la primera linea en
   /boot/loader.rc para ver los mensajes de arranque en la consola
   serie tan pronto como sea posible.

   De igual manera, puede especificar la consola interna como:

 set console="vidconsole"

   Si no activa la variable de entorno console, el cargador de
   arranque, y por consecuencia el kernel, utilizaran cualquier
   consola que este indicada por la opcion -h en el bloque de
   arranque.

   En versiones 3.2 o posteriores, puede especificar la consola en
   /boot/loader.conf.local o /boot/loader.conf, en lugar de
   /boot/loader.rc. En este metodo su /boot/loader.rc debe verse
   como:

 include /boot/loader.4th
 start

   Entonces, puede crear /boot/loader.conf.local y ponerle la
   siguiente linea.

 console=comconsole

   o

 console=vidconsole

   Vea loader.conf(5) para mayor informacion.

     Nota: Hasta el momento, el cargador de arranque no tiene una
     opcion equivalente a la opcion -P del bloque de arranque, y no
     existe una manera de seleccionar automaticamente la consola
     interna y la consola serie basandose en la presencia del
     teclado.

     --------------------------------------------------------------

    24.6.6.2. Utilizando un puerto serie para la consola diferente a
    sio0

   Necesita recompilar el cargador de arranque para usar un puerto
   serie diferente a sio0 para la consola serie. Siga el
   procedimiento descrito en Seccion 24.6.5.2.

     --------------------------------------------------------------

  24.6.7. Advertencias

   La idea aqui es permitir a las personas configurar servidores
   dedicados que no requieran hardware de graficos o teclados
   conectados. Desafortunadamente, mientras la mayoria de los
   sistemas le permitiran arrancar sin un teclado, existen bastantes
   que no le permitiran arrancar sin un adaptador de graficos.
   Maquinas con BIOS AMI pueden configurarse para arrancar sin
   adaptadores de graficos instalados cambiando simplemente la opcion
   "graphics adapter" en la configuracion del CMOS a "Not installed."

   De cualquier manera, muchas maquinas no soportan esta opcion y se
   negaran a arrancar si no tiene algun hardware de graficos
   instalado en el sistema. Con estas maquinas, debe dejar algun tipo
   de tarjeta grafica instalada, (incluso si solamente es una tarjeta
   mono barata) aunque no tendra que conectarle un monitor. Tambien
   puede tratar instalando un BIOS AMI.

     --------------------------------------------------------------

                        Capitulo 25. PPP y SLIP

   Reestructurado, reorganizado, y actualizado por Jim Mock.

25.1. Sinopsis

   FreeBSD cuenta con un gran numero de formas para conectar una
   computadora a otra. Para establecer una red o una coneccion a
   Internet por medio de un modem, o bien, permitir a otras
   computadoras conectarse por medio de este, se requiere del uso de
   PPP o SLIP. Este capitulo describe en detalle como configurar los
   servicios de comunicacion para llevar esto a cabo.

   Una vez que haya leido este capitulo, usted sabra:

     * 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
   conexion por medio de un dispositivo Ethernet, o bien ATM, pero
   debido a que usted encontrara estos metodos en su sistema, como
   PPPoE o bien PPPoA, se han dejado los conceptos "literales" del
   documento original. Espero que no sea un problema.

   Antes de leer este capitulo, usted debiese:

     * Estar familiarizado con la terminologia basica de redes.

     * Comprender lo basico y el proposito de una coneccion por modem
       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 metodo
   User PPP procesa la entrada y salida de datos en userland (ver
   nota siguiente) en lugar de hacerlo en el kernel. Esto es algo
   desgastante, en terminos del manejo de datos entre userland y el
   kernel, pero permite, por mucho, un mejor desempeno e
   implementacion de PPP. User PPP utiliza el dispositivo tun para
   comunicarse con el mundo exterior, mientras que kernel--ppp,
   utiliza el dispositivo ppp.

   En el desarrollo de este capitulo, se hara referencia a User PPP,
   simplemente como ppp, a menos de que sea necesaria hacer una
   distincion entre este y otro software de PPP, como es el caso de
   pppd. Asi mismo, si en el desarrollo del capitulo no se senala lo
   contrario, todos los comandos explicados, deberan ser ejecutados
   como root.

   N. de T. : Cuando se habla de "userland" se hace referencia a todo
   aquello que *no* forma parte del kernel y que en el caso de codigo
   de programa, se ejecuta en modo usuario, ya que el codigo del
   kernel se ejecuta en modo kernel, supervisor, o bien en modo
   privilegiado de ejecucion. En lo sucesivo este termino sera
   utilizado tal cual.

     --------------------------------------------------------------

25.2. Uso de User PPP

   Originalmente contribuido por Brian Somers. Con apoyo de
   Actualizado y reestructurado porNik Clayton, Dirk Fro:mberg, Peter
   Childs, y Tom Rhodes.

  25.2.1. User PPP

    25.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 inglees), que usted utliza para
       conectarse.

     * Adicionalmente, un modem o algun otro dispositivo, conectado a
       su sistema, y configurado correctamente, que le permite
       realizar la conexion con su ISP.

     * El numero telefonico de su proveedor.

     * Su nombre de usuario y contrasena. (Ya sea un nombre de
       usuario y/o contrasena estilo UNIX, o bien para uso por medio
       de PAP o CHAP)

     * La direccion IP de uno o mas servidores de nombres (DNS).
       Normalmente, estos seran provistos por su proveedor de
       Internet. Si su proveedor no le ha dado esta informacion,
       puede utilizar la opcion enable dns en su fichero ppp.conf,
       para indicarle a ppp que configure el DNS por usted. Esta
       caracteristica depende del sistema de negociacion de DNS que
       mantenga su proveedor de Internet.

   La siguiente informacion puede ser que haya sido provista por su
   proveedor de servicios de internet, pero no es completamente
   necesaria:

     * La direccion IP del gateway (pasarela de salida) de su PSI. El
       gateway es la maquina a la cual usted se conectara y sera la
       ruta por default. Si usted no cuenta con esta informacion,
       puede inventar uno y al intentar conectarse, el servidor de su
       PSI, este nos indicara cual es el valor correcto.

       Esta direccion IP, es referida por ppp como HISADDR.

     * La mascara de red (netmask) que debe utilizar. Si su PSI no le
       ha provisto de una, puede utilizar sin problema
       255.255.255.255.

     * Si su PSI, le ha provisto de una direccion de IP estatica y un
       nombre de host, puede capturarla. De otra forma podemos dejar
       que el servidor asigne cualquier IP que corresponda.

   Si usted no cuenta con alguna de la informacion que hemos
   comentado, le recomendamos contactar con su PSI para requerirla.

     Nota: En el transcurso de la presente seccion, algunos ejemplos
     muestran el contenido de archivos de configuracion los cuales
     presentan una numeracion. Estos numeros sirven como ayuda y
     referencia a cada linea, pero estos no deben de estar presentes
     en el archivo original. Una sangria adecuada, asi como espacios
     adecuados, tambien son de suma importancia.

     --------------------------------------------------------------

    25.2.1.2. Preparando el Kernel

   Como se comento anteriormente, la aplicacion ppp utiliza el
   dispositivo tun. Si este dispositivo no ha sido compilado dentro
   del kernel, ppp lo cargara como modulo cuando sea requerido. El
   dispositivo tun es dinamico, de tal forma que se generara de
   acuerdo a la demanda que tenga (usted no esta limitado por el
   kernel).

     Nota: Vale la pena hacer notar que el controlador tun, crea los
     dispositivos de acuerdo a sus necesidades, por lo que el comando
     ifconfig -a, no necesariamente mostrara los dispositivos tun.

     --------------------------------------------------------------

    25.2.1.3. Verificando el dispositivo tun

   Bajo circunstancias normales, la mayoria de los usuarios solo
   utilizaran un dispositivo tun (/dev/tun0). En lo sucesivo podemos
   hacer referencia a tun0 con la expresion tunN donde N es el numero
   que corresponde en su sistema.

   Para instalaciones de FreeBSD que no tienen el habilitado el DEVFS
   la existencia de tun0 debe ser verificada (esto no es necesario si
   se cuenta habilitada la opcion DEVFS ya que los nodos de
   dispositivos sean creados en funcion a las necesidades).

   La forma mas sencilla de verificar si el dispositivo tun0 se
   encuentra configurado correctamente, es la de rehacer el
   dispositivo. Para hacer esto simplemente siga los siguientes
   pasos:

 # cd /dev
 # sh MAKEDEV tun0

   Si usted necesita 16 dispositivos tun en su kernel, debera
   crearlos. Esto puede hacerse de la siguiente manera:

 # cd /dev
 # sh MAKEDEV tun15

     --------------------------------------------------------------

    25.2.1.4. Configuracion de la Resolucion de Nombres

   La resolucion es la parte del sistema que busca una direccion IP
   en los nombres de servidores (host) y viceversa. Puede ser
   configurado para que busque en "mapas" que describen la IP del
   servidor en uno de dos lugares, el primero es un archivo llamado
   /etc/hosts. Lea hosts(5) para mas informacion al respecto. El
   segundo es el Servicio de Nombres de Dominio de Internet
   (DNS-Internet Domain Name Service), el cual es una base de datos
   de distribucion. Para mayor informacion con respecto a los DNS,
   referirse a dns.

   La resolucion de nombres es un sistema que por medio de llamadas,
   realiza el mapeo de nombres, pero es necesario inidicarle donde
   debe buscar la informacion. Para versiones de FreeBSD anteriores a
   la 5.0, esto es hecho al editar el archivo /etc/host.conf. La
   version 5.0 de FreeBSD utiliza el archivo /etc/nsswitch.conf.

     --------------------------------------------------------------

      25.2.1.4.1. Edicion del archivo /etc/host.conf

   Para versiones de FreeBSD anteriores a la 5.0, este archivo debe
   contener las siguientes dos lineas (en este orden):

 hosts
 bind

   Esto le indica a la resolucion que busque en primer termino en el
   archivo /etc/hosts, y posteriormente en el DNS, si el nombre no
   fue localizado

     --------------------------------------------------------------

      25.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 linea:

 hosts: files, dns

   Esto le indica a la resolucion de nombres, que busque en primer
   lugar en el archivo /etc/hosts, y en caso de que el nombre no haya
   sido localizado, busque en el DNS.

     --------------------------------------------------------------

      25.2.1.4.3. Editando el archivo /etc/hosts

   Este archivo puede contener direcciones IP, asi como el nombre de
   las maquinas de su red local. Como minimo debe contar con la
   informacion de la maquina que correra ppp. Asumiendo que su
   ordenador se llama foo.bar.com con la direccion IP 10.0.0.1, el
   archivo /etc/hosts debiese contener:

 127.0.0.1       localhost.bar.com       localhost
 ::1     localhost.bar.com       localhost
 10.0.0.1        foo.bar.com             foo

   Las primeras dos lineas definen el alias del localhost, como
   sinonimo de la maquina actual. Independientemente de su propia
   direccion IP, la direccion IP en estas lineas siempre debe ser
   127.0.0.1 y ::1. La ultima linea especifica el nombre foo.bar.com
   (asi como foo para acortarlo), para la direccion 10.0.0.1.

     Nota: La direccion 127.0.0.1 y el nombre localhost son conocidos
     como direcciones "loopback" las cuales hacen un "loopback"
     (salto de regreso) a la maquina local.

   Si su proveedor de Internet, le asigna una direccion IP fija, asin
   como un nombre, y usted no lo utiliza como nombre del host, anada
   esto tambien al archivo /etc/hosts.

     --------------------------------------------------------------

      25.2.1.4.4. Editando el archivo /etc/resolv.conf

   El archivo /etc/resolv.conf, le indica a la resolucion de nombres,
   como comportarse. Normalmente debera de incluir la(s) siguiente(s)
   linea(s):

 domain ejemplo.com
 nameserver x.x.x.x
 nameserver y.y.y.y

   Donde x.x.x.x y y.y.y.y deben reemplazarse con las direcciones IP
   de los servidores DNS, de su ISP. Puede ser que esta informacion
   se la hayan entregado al suscribirse o no, pero una rapida llamada
   a su ISP debe resolver esto.

   Tambie puede configurar su sistema, de tal forma que syslog(3)
   provee de un login para su coneccion por PPP. Solo anada:

           !ppp
           *.*        /var/log/ppp.log

   al fichero /etc/syslog.conf. En la mayoria de los casos esto
   funciona bien.

     --------------------------------------------------------------

    25.2.1.5. Configuracion Automatica de PPP

   Ambos, ppp asi como pppd (la implementacion del kernel para PPP),
   utilizan la configuracion de los archivos localizados en el
   directorio /etc/ppp. Ejemplos para ppp, pueden encontrarse en:
   /usr/share/examples/ppp/.

   Para efecto de configurar correctamente ppp, es necesario editar
   varios ficheros, dependiendo de sus necesidades. La manera en que
   edite dichos archivos, depende en la forma que utilice su PSI
   (Proveedor de Servicios de Internet) para brindarle conexion, ya
   sea por medio de una direccion IP estatica o bien una IP dinamica
   (ya sea que cada vez que se conecta obtiene una nueva direccion).

     --------------------------------------------------------------

      25.2.1.5.1. PPP y direcciones de IP estaticas (fijas)

   Sera necesario editar el archivo de configuracion;
   /etc/ppp/ppp.conf. Y debera quedar de una manera similar al
   ejemplo que se describe a continuacion.

     Nota: Las lineas que terminan con :, deben comenzar en la primer
     columna del archivo -- el resto de las lineas deberan utilizar
     sangria como se muestra, utilizando espacios o bien el
     tabulador. La mayor parte de la informacion que requiere
     ingresar aqui, se mostro en el marcado manual anterior.

 1     default:
 2       set log Phase Chat LCP IPCP CCP tun command
 3       ident user-ppp VERSION (built COMPILATIONDATE)
 4       set device /dev/cuaa0
 5       set speed 115200
 6       set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
 7                 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
 8       set timeout 180
 9       enable dns
 10
 11    provider:
 12      set phone "(123) 456 7890"
 13      set authname foo
 14      set authkey bar
 15      set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
 16      set timeout 300
 17      set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0
 18      add default HISADDR

   Linea 1:

           Identifica la entrada por omision a utilizar. Los comandos
           descritos en esta parte, seran ejecutados de manera
           automatica cuando se ejecute ppp.

   Linea 2:

           Habilita los par'metros de acceso. Cuando la configuracion
           trabaja sin problemas, esta linea debera quedar de la
           siguiente forma:

 set log phase tun

           para efecto de evitar avisos masivos del sistema (logs).

   Linea 3:

           Esta linea le indica a PPP como identificarse ante el
           puerto. PPP se identifica, si tiene algun problema para
           efecto de establecer la conexion, en esta identificacion,
           PPP provee de cierta informacion que puede resultar util
           para detectar el probelma.

   Linea 4:

           Le indica a PPP cual es el dispositivo a utilizar para
           realizar la conexion, o bien al que esta conectado el
           modem. El dispositivo COM1 es /dev/cuaa0 y COM2 es
           /dev/cuaa1.

   Linea 5:

           Establece la velocidad a utilizar en la conexion. Si la
           velocidad de 115200 no trabaja correctamente (la cual
           deberia con cualquier modem normal), intente con una
           velocidad inferior, como puede ser 38400.

   Lineas 6 y 7:

           La cadena de inicializacion. El modo User PPP, utiliza y
           espera enviar-recibir, la informacion utilizando una
           sintaxis similar a la descrita en el programa chat(8).
           Favor de consultar la pagina de ayuda para conocer las
           opciones de este lenguaje.

           Nota: Este comando continua en la siguiente linea, para
           facilitar su lectura. Cualquier comando en el archivo
           ppp.conf puede utilizar este formato, siempre y cuando el
           ultimo caracter de la linea sea una diagonal invertida
           "\".

   Linea 8:

           Establece el tiempo de espera que debe tratar de realizar
           la conexion. Por omision se establecen 180 segundos, por
           lo que esta linea se deja por pura estetica.

   Linea 9:

           Esta linea le indica a PPP, que solicite confirmacion al
           puerto, sobre la configuracion de la resolucion local. Si
           usted esta corriendo un servidor local de nombres, debera
           comentar o eliminar esta linea.

   Linea 10:

           Una linea en blanco, para facilitar la lectura. Las lineas
           en blanco son ignoradas por PPP.

   Linea 11:

           Identifica el incio de datos para un "proveedor"
           determinado, de servicios de internet. Este podra ser
           cambiado por el nombre de su ISP, de tal forma que en lo
           sucesivo utilice la opcion load ISP, para iniciar una
           sesion.

   Linea 12:

           Indica el numero telefonico del proveedor. Pueden
           indicarse varios numeros a utilizar, utilizando el signo
           de dos puntos (:) o bien la barra (|) como separador. La
           diferencia entre estos dos separadores, es detallada en el
           ppp(8). Pero en resumen, se puede decir que si se desean
           utilizar varios numeros de manera aleatoria se debe
           utilizar los dos puntos, pero si se desea siempre utilizar
           el primer numero y en caso de falla el siguiente y asi
           sucesivamente, se debe utilizar la barra. Es importante
           que todo lo que se refiere a numeros telefonicos, este
           entre comillas como se muestra. Es importante que si
           piensa usar espacios en los numeros, haga uso de estas
           comillas ("). La falta de estas pueden ocasionar un simple
           error.

   Lineas 13 y 14:

           Identifica el nombre de usuario y su contrasena. Cuando
           uno se conecta utilizando un login de tipo Unix, estos
           valores hacen referencia al comando set login, utilizando
           las variables \U y \P. Cuando la conexion es utilizando
           algun metodo como PAP o CHAP, estos valores, son
           utilizados al momento de la autentificacion.

   Linea 15:

           Si usted esta utilizando el metodo PAP o CHAP, no habra un
           login en este punto, y esta linea debera ser comentada
           (utilizando el simbolo # al principio de la linea) o bien
           eliminada por completo. Vea la parte Autentificacion con
           PAP y CHAP para mas detalles.

           La cadena de acceso (login), utiliza la misma sintaxis que
           se utiliza en la cadena de marcado. En este ejemplo, la
           cadena sirve para un servicio, en el cual el inicio de
           sesion se ve algo asi como lo siguiente:

 Proveedor de servicios X
 login: foo
 password: bar
 protocol: ppp

           Es recomendable editar el script, para que se ajuste a sus
           propias necesidades. Cuando cree este script por primera
           vez, asegurese de haber habilitado la parte que se refiere
           a al acceso por medio de "chat", para efecto de poder dar
           seguimiento al curso de la conexion y la resolucion de la
           misma.

   Linea 16:

           Establece el tiempo por defecto en el que se perdera la
           conexion (en segundos). En este caso la conexion sera
           cortada de forma automatica, despues de 300 segundos de
           inactividad. Si no desea habilitar esta funcion establezca
           este valor en cero o bien utilice el comando en linea
           -ddial.

   Linea 17:

           Indica la direccion de la interfaz. La cadena que aparece
           como x.x.x.x., debe se cambiada por la direccion asignada
           por su PSI. La linea que aparece como y.y.y.y., debe se
           substituida por la direccio IP especificada por su PSI,
           como servidor de salida o pasarela (gateway)(la maquina a
           la cual se va a conectar). Si su PSI no le ha indicado una
           direccion de este tipo, puede utilizar 10.0.0.2/0. Si
           usted necesita utilizar una direccion "aleatoria",
           asegurese de crear el fichero /etc/ppp/ppp.linkup,
           siguiendo las instrucciones de PPP y las direcciones de IP
           Dinamicas, para su llenado. Si esta linea es omitida, ppp,
           no podra ejecutarse en el modo -auto.

   Linea 18:

           Anade una ruta por omision al servidor de salida de su
           PSI. La palabra especial HISADDR se reemplaza con la
           direccion del gateway indicado por su PSI, que esta en la
           linea 9, de otra forma HISADDR no sera inicializado.

           Si no desea ejecutar ppp en modo -auto, esta linea debera
           pasar al archivo ppp.linkup.

   No hay necesidad de editar el archivo ppp.linkup si usted cuenta
   con una direccion IP estatica y se esta ejecutando ppp en modo
   -auto, en virtud de que para efecto de realizar la conexion sus
   mapas de ruteo debe estar correctas. De cualquier forma puede ser
   que usted desee ejecutar algun programa/comando, posterior a la
   conexion. Este es explicado con mas detalle posteriormente, cuando
   se vea el ejemplo de sendmail.

   Ejemplo de los archivos de configuracion, se pueden encontrar en
   el directorio; /usr/share/examples/ppp.

     --------------------------------------------------------------

      25.2.1.5.2. PPP y direcciones de IP Dinamicas (Variables)

   Si su proveedor de servicios, no le asigna una direccion de IP
   fija, sera necesario configurar a ppp, de tal forma que al momento
   de realizar la conexion, negocie tanto la direccion local, como la
   remota. Esto se lleva a cabo al "adivinar" una direccion IP y
   permitiendo a ppp que la establezca correctamente, usando el
   Protocolo de Configuracion de IP (IPCP), una vez que se ha
   conectado. La configuracion que debe tener el archivo ppp.conf, es
   la misma que la utilizada en PPP y direcciones de IP fijas, salvo
   el siguiente cambio:

 17      set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255

   Una vez mas, no debe incluir el numero de linea, este solo es una
   referencia. Asi mismo debera existir sangrado, de cuando menos 1
   espacio.

   Linea 17:

           El numero siguiente a la diagonal (/), es el numero de
           bits de la direccion en la cual ppp insistira en
           conectarse. Puede ser que usted desee utilizar numeros de
           IP que sean mas apropiados, para ajustar a sus
           necesiadades, pero el ejemplo descrito anteriormente
           siempre podra utilizarse.

           El ultimo argumento (0.0.0.0), le indica a PPP, que inicie
           las negociaciones, utilizando como direccion 0.0.0.0, en
           lugar de que utilice 10.0.0.1, lo cual es necesario con
           algunos proveedores. No utilice la direccion 0.0.0.0 como
           el primer argumento, para el comando set ifaddr, ya que
           impide que PPP configure de forma correcta el sistema,
           cuando se utiliza en modo -auto.

   Si usted no esta ejecutando PPP en modo -auto, debera editar su
   archivo /etc/ppp/ppp.linkup. El archivo ppp.linkup, es utilizado
   una vez que se ha realizado la conexion. En este punto, ppp habra
   negociado una direccion de interfaz, y sera posible ahora, anadir
   las entradas para la las tablas de ruteo:

 1     provider:
 2      add default HISADDR

   Linea 1:

           Al establecer (ppp) una conexion, buscara 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, buscar
           una IP con la direccion de nuestro gateway. Esta entrada
           es una etiqueta de tipo IP, de cuatro-octetos. Si aun
           despues de esto no se ha detectado la entrada correcta,
           buscar la entrada MYADDR.

   Linea 2:

           Esta linea le indica a ppp que anada una ruta por omision,
           que este dirigida hacia HISADDR. HISADDR sera reemplazada,
           con la IP del gateway, como se negocio por IPCP.

   Para ver un detalle mas preciso de esto, puede consultar la
   entrada de pmdemand en los archivos de ejemplo
   /usr/share/examples/ppp/ppp.conf.sample asi como
   /usr/share/examples/ppp/ppp.linkup.sample.

     --------------------------------------------------------------

      25.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 envio de paquetes a la LAN. Si es asi, debe
   asignar un numero de IP de su red local y utilizar el comando
   enable proxy en el archivo de configuracion /etc/ppp/ppp.conf.
   Tambien debera asegurarse que en su archivo /etc/rc.conf cuente
   con la linea:

 gateway_enable="YES"

     --------------------------------------------------------------

        25.2.1.5.3.1. ?Que getty utilizar?

   El enlace Configurando FreeBSD para Servicios de Marcado provee de
   una buena descripcio, sobre la configuracion de estos servicios,
   basado en getty(8).

   Una alternativa para el comando getty es mgetty , el cual es una
   version mas inteligente de getty disenada para servicios de
   marcado telefonico.

   Una de las principales ventajas de mgetty es que, de hecho platica
   con los modems, esto es, significativo, ya que si el puerto esta
   desactivado en su /etc/ttys el modem no respondera el llamado.

   Las ultimas versiones de mgetty (de la 0.99beta y sucesivas),
   tambien cuentan con soporte para la deteccion automatica de
   llamados de PPP, permitiendo el acceso a servidores de una manera
   mas sencilla (sin uso de tanto scripts).

   Puede referirse a Mgetty y AutoPPP para mas informacion con
   respecto al comando mgetty.

     --------------------------------------------------------------

        25.2.1.5.3.2. Permisos de PPP

   El comando ppp normalmente debe ser ejecutado por root
   (superusuario). Si de cualquier forma, usted desea permitir que
   ppp pueda ser ejecutado en modo servidor, por un usuario regular,
   como se describe a continuacion, debera otorgar los permisos
   necesarios a ese usuario al anadirlo al grupo network, en el
   fichero /etc/groups.

   Tambien sera necesario darle acceso a una o mas partes del archivo
   de configuracion, haciendo uso del comando allow, como se ve a
   continuacion:

 allow users fred mary

   Si el comando es utilizado en la seccion default, esto le dara a
   el(los) usuario(s) especificado(s), acceso a todo.

     --------------------------------------------------------------

        25.2.1.5.3.3. Shells de PPP para Usuarios de IP Dinamica

   Cree un fichero llamado: /etc/ppp/ppp-shell y que contenga lo
   siguiente:

 #!/bin/sh
 IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`
 CALLEDAS="$IDENT"
 TTY=`tty`

 if [ x$IDENT = xdialup ]; then
         IDENT=`basename $TTY`
 fi

 echo "PPP for $CALLEDAS on $TTY"
 echo "Starting PPP for $IDENT"

 exec /usr/sbin/ppp -direct $IDENT

   Este script debera ser ejecutable. Ahora cree un enlace simbolico
   llamado ppp-dialup a este script, utilizando los siguientes
   comandos:

 # ln -s ppp-shell /etc/ppp/ppp-dialup

   Debera utilizar este script como shell para todos los usuarios que
   realicen conexion. Este es un ejemplo del fichero /etc/password
   para un usuario con acceso a PPP, con nombre de usuario pchilds
   (recuerde no editar directamente el fichero password, utilice
   vipw).

 pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup

   Cree un directorio llamado /home/ppp que contenga los siguentes
   archivos de 0 bytes:

 -r--r--r--   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.

     --------------------------------------------------------------

        25.2.1.5.3.4. Shells de PPP para Usuarios de IP Estatica

   Cree el fichero ppp-shell al igual que el mencionado con
   anterioridad, y por cada cuenta donde se tenga asignada una IP
   estatica, cree un enlace simbolico al fichero ppp-shell.

   Por ejemplo, si usted cuenta con tres usuarios que utilicen este
   servicio; fred, sam y mary, los cuales redirecciona a una red de
   clase C, habria que hacer lo siguiente:

 # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred
 # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam
 # ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary

   Cada uno de los usuarios senalados, deberan de contar con el
   enlace a su shell-script como se indico (por ejemplo, el usuario
   mary, debe contar con su enlace al fichero /etc/ppp/ppp-mary).

     --------------------------------------------------------------

        25.2.1.5.3.5. Configurando ppp.conf para Usuarios de IP-Dinamica

   El archivo /etc/ppp/ppp.conf debera contener algo similar a lo
   siguiente:

 default:
   set debug phase lcp chat
   set timeout 0

 ttyd0:
   set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255
   enable proxy

 ttyd1:
   set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255
   enable proxy

     Nota: Tomar en cuenta el sangrado, ya que es importante.

   La seccion default: es cargada para cada sesion. Para cada linea
   que exista y habilite el marcado, en el fichero /etc/ttys, se
   debera crear una entrada similar a la linea ttyd0: mencionada
   arriba. Cada linea debera contar con su propia direccion IP, de
   sus direcciones IP disponibles para asignar dinamicamente.

     --------------------------------------------------------------

        25.2.1.5.3.6. Configurando ppp.conf para Usuarios de IP Estatica

   Junto con el contenido del fichero de ejemplo
   /usr/share/examples/ppp/ppp.conf mencionado anteriormente, debera
   agregar una seccion para cada usuario asignado estaticamente.
   Continuaremos con nuestro ejemplo con los usuarios fred, sam y
   mary.

 fred:
   set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255

 sam:
   set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255

 mary:
   set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255

   El archivo /etc/ppp/ppp.linkup debera de contener tambien
   informacion del ruteo, para cada IP estatica, si es necesario. Las
   lineas a continuacion anadiran una ruta a la direccion
   203.14.101.0 de clase C, por medio del ppp link del cliente.

 fred:
   add 203.14.101.0 netmask 255.255.255.0 HISADDR

 sam:
   add 203.14.102.0 netmask 255.255.255.0 HISADDR

 mary:
   add 203.14.103.0 netmask 255.255.255.0 HISADDR

     --------------------------------------------------------------

      25.2.1.5.4. Algo mas de mgetty, AutoPPP, y Extensiones MS

        25.2.1.5.4.1. mgetty y AutoPPP

   Configurando y compilando mgetty con la opcion AUTO_PPP
   habilitada, permite a mgetty detectar la fase LCP de conexiones
   PPP y automaticamente enviarlo a un shel de ppp. Aun con esto, y
   debido a que no se ingresa el nombre de usuario y contrasena, es
   necesario autntificarse por medio de PAP o CHAP.

   Esta seccion asume que el usuaio ha configurado, compilado e
   instalado correctamente una version de mgetty, con la opcion
   Auto_PPP (v0.99beta o posterior).

   Asegurese de que su fichero
   /usr/local/etc/mgetty+sendfax/login.conf contiene la siguiente
   linea en el:

 /AutoPPP/ -     -                     /etc/ppp/ppp-pap-dialup

   Esto le indicara 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 lineas (el fichero debera ser ejecutable):

 #!/bin/sh
 exec /usr/sbin/ppp -direct pap$IDENT

   Para cada linea de marcado habilitada en /etc/ttys, cree la
   entrada correspondiente en /etc/ppp/ppp.conf. Esto co-existira
   pacificamente con las definiciaones que se hayan hecho, de acuerdo
   a lo mostrado en la parte de arriba.

 pap:
   enable pap         
   set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40
   enable proxy

   Cada usuario que ingrese al sistema utilizando este metodo, debera
   de contar con su clave de usuario, asi como su contrasena, en el
   archivo /etc/ppp/ppp.secret, o bien agrege la siguiente opcion,
   para efecto de que se pueda realizar la autentificacion por medio
   de PAP, directamente del fichero /etc/password.

 enable passwdauth

   Si desea asignar una direccion IP fija a algunos usuarios, puede
   especificar el numero como un tercer argumento en el fichero
   /etc/ppp/ppp.secrets. Vea el archivo
   /usr/share/examples/ppp/ppp.secret.sample para obtener ejemplos
   mas detallados de esto.

     --------------------------------------------------------------

        25.2.1.5.4.2. Extensiones de MS

   Es posible configurar PPP, para efecto de que brinde a DNS y a
   NetBIOS, direcciones de servidores de nombres de forma automatica.

   Para efecto de habilitar estas extensiones con PPP version 1.x,
   las siguientes lineas deberan anadirse a la seccion relevante de
   /etc/ppp/ppp.conf.

 enable msext
 set ns 203.14.100.1 203.14.100.2
 set nbns 203.14.100.5

   Y para versiones de PPP 2 y posteriores:

 accept dns
 set dns 203.14.100.1 203.14.100.2
 set nbns 203.14.100.5

   Esto le indicara a los clientes, las direcciones del servidor
   primario y secundario y el servidor-host para NetBIOS.

   Si la linea set dns, es omitida en versiones 2 y posteriores, PPP
   utilizara los valores que encuentre en /etc/resolv.conf.

     --------------------------------------------------------------

      25.2.1.5.5. Autentificacion por medio de PAP y CHAP

   Algunos proveedores de internet tienen su sistema configurado para
   que cada usuario al conecatrse sean autentificados por medio de
   PAP o CHAP. Si este es el caso, al momento de realizar la
   conexion, no aparecera un login:, sino que comenzara a comunicarse
   PPP inmediatamente.

   El metodo PAP es menos seguro que CHAP, pero la seguridad
   normalmente no se toma mucho en cuenta en este tipo de conexiones,
   en funcion de que al enviarse la informacion de contrasena en
   texto plano, por medio de una linea serial, no deja mucho espacio
   para que los crackers "husmeen".

   Haciendo referencia a lo que vimos de PPP y Direcciones de IP
   Fijas o bien PPP y Direcciones de IP Dinamicas, habria que aplicar
   los siguientes cambios:

 7       set login
 ...
 12      set authname MiNombreDeUsuario
 13      set authkey MiContrasena

   Linea 7:

           Su PSI normalmente requerira que usted ingrese al sistema,
           cuando se utiliza PAP o CHAP. Por esta razon debemos
           deshabilitar la linea que corresponde a "set login".

   Linea 12:

           Esta linea especifica a PAP/CHAP su nombre de usuario.
           Usted debera cambiar el valor a quedar el nombre correcto
           en el campo; MiNombreDeUsuario.

   Linea 13:

           Esta linea especifica su contrasena de PAP/CHAP. Es
           necesario que usted cambie el valor a quedar el dato
           correcto, en el campo; MiContrasena. Quizas sea
           recomendable que anada una linea a quedar:

 15      accept PAP

           o

 15      accept CHAP

           la intencion de esto es para hacerlo obvio, aunque en
           realidad PAP y CHAP son aceptadas por omision.

     --------------------------------------------------------------

      25.2.1.5.6. Cambiando la configuracion de ppp sobre la marcha (al
      vuelo)

   Es posible hablar con el programa ppp mientras se esta ejecutando
   en segundo plano, pero solo si se ha habilitado un puerto de
   diagnostico. Para hacer esto, anada lo siguiente a su
   configuracion:

 set server /var/run/ppp-tun%d DiagnosticPassword 0177

   Esto le indicara a PPP que preste atencion al socket del
   dominio-Unix, solicitando a los usuarios su contrasena, antes de
   permitir el acceso. La variable %d debera 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.

     --------------------------------------------------------------

    25.2.1.6. Configuracion Final del Sistema

   Ahora usted cuenta con un ppp configurado, pero es necesario hacer
   algunas cosas, antes de que este disponible para trabajar. Todas
   ellas giran entorno a la edicion del fichero /etc/rc.conf.

   En primer lugar es importante que se asegure que ha asignado un
   nombre a su maquina. Esto se hace asignandolo en la linea de
   hostname=, por ejemplo:

 hostname="foo.ejemplo.com"

   Si su Proveedor de Servicios de Internet (PSI), le ha provisto de
   una direccion fija y un nombre de host, es recomendable que
   utilice este como su hostname.

   Localice la linea que se refiera a sus dispositivos de red, la
   cual es network_interfaces. Si desea configurar su sistema para
   marcar a su PSI a peticion, 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 debera crearse un fichero llamado /etc/start_if.tun0
     que contenga la siguiente linea:

 ppp -auto MiSistema

     Este script se ejecuta cuando se esta configurando la red,
     inicializando el demonio de ppp de modo automatico. Si usted
     cuenta con una LAN (red de area local), de la cual esta maquina
     sea la pasarela (gateway), es tambien recomendable que utilice
     la opcion -alias. Referirse a la pagina de ayuda (man) para
     mayores detalles.

   Especifique el programa router a NO, con la siguiente linea en su
   fichero /etc/rc.conf:

 router_enable="NO"

   Es importante que el demonio routed no se inicialice por default,
   en virtud de que routed tiende a eliminar las variables creadas
   por ppp.

   Probablemente valga la pena asegurarse de que la linea
   sendmail_flags, no incluya la opcion -q, ya que de ser asi
   sendmail intentara localizar los parametros de la red de vex en
   cuando, ocasionando que realice llamados al exterior. Puede
   intentar esto:

 sendmail_flags="-bd"

   La parte negativa de esta conifguracion es que tiene que forzar a
   sendmail a re-examinar los llamados del servidor de correo, cada
   vez que ppp realiza una conexion, con el siguiente comando:

 # /usr/sbin/sendmail -q

   Puede utilizar el comando !bg en el fichero ppp.linkup para hacer
   esto de manera automatica:

 1     provider:
 2       delete ALL
 3       add 0 0 HISADDR
 4       !bg sendmail -bd -q30m

   Si usted no desea hacer esto, es posible establecer un "dfilter"
   (filtro), para bloquear el trafico al servidor de salida de correo
   (SMTP). Favor de referirse a los archivos de ejemplos para mayor
   detalle al respecto.

   Ahora lo unico que queda pendiente de hacerse es reiniciar el
   equipo. Una vez reiniciado el equipo, puede teclear:

 # ppp

   y posteriormente dial proveedor para iniciar la sesion, o bien si
   desea que ppp inicie la sesion automaticamente, cuando haya una
   peticion de salida (y no haya creado el fichero start_if.tun0),
   puede teclear:

 # ppp -auto proveedor

     --------------------------------------------------------------

    25.2.1.7. Summario

   A manera de recapitulacion, podemos decir que para configurar ppp
   por primera ocasion, debemos:

   Por parte del Cliente:

    1. Asegurese de que existe el dispositivo tun dentro de su
       kernel.

    2. Asegurses de que el dispositivo tunX, se encuentra disponible,
       bajo el directorio /dev.

    3. Cree una entrada en su fichero /etc/ppp/ppp.conf. Con el
       fichero de ejemplo pmdemand debe ser suficiente para la
       mayoria de proveedores.

    4. Si cuenta con una direccion de IP dinamica, 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 conexion 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.

    5. Cree una entrada en el fichero /etc/ppp/ppp.conf. El fichero
       de ejemplo direct-server debe ser suficiente para darse una
       idea.

    6. Cree una entrada en el fichero /etc/ppp/ppp.linkup.

    7. Actualice su fichero /etc/rc.conf.

     --------------------------------------------------------------

25.3. Uso de Kernel PPP

   Partes originalmente desarrolladas por Gennady B. Sorokopud y
   Robert Huff.

  25.3.1. Configurando Kernel PPP

   Antes de comenzar a configurar PPP en su maquina, asegurese de
   pppd se localiza en /usr/sbin y de que existe el directorio
   /etc/ppp.

   pppd puede trabajar de dos maneras

    1. Como un "cliente" -- cuando desea conectar su maquina al mundo
       exterior utilizando PPP, por medio de una conexion serial o
       bien una linea de modem.

    2. como un "servidor" -- cuando su maquina esta conectada a una
       red y es utilizada para que otras maquinas se conecten
       utilizando ppp.

   En ambos casos, sera necesario configurar un fichero de opciones
   (/etc/ppp/options o bien ~/.ppprc si se cuenta con mas de un
   usuario que utilizara ppp en la misma maquina.

   Tambien debera de contar con un software para hacer la conexion
   por medio de modem (de preferencia kermit), de manera que pueda
   hacer la conexion con un host remoto.

     --------------------------------------------------------------

  25.3.2. Uso de pppd como Cliente

   Basedo en informacion provista por Trev Roydhouse.

   El siguiente archivo de configuracion /etc/ppp/options puede
   utilizarse para realizar la conexion a una terminal CISCO, por
   medio de PPP.

 crtscts         # habilita el flujo de controls de hardware
 modem           # linea de control del modem
 noipdefault     # el servidor PPP remoto asignara la direccion IP
                 # si el servidor no envia una direccion IP durante IPCP
                 # remueva esta opcion.
 passive         # espere por los paquetes LCP
 domain ppp.foo.com      # escriba su nombre de dominio aqui

 :<remote_ip>    # escriba la IP del host remoto aqui
                 # este sera utilizado para el ruteo de paquetes por medio
                 # de PPP, si no especifica esta opcion, cambie la
                 # linea a quedar  <local_ip>:<remote_ip>

 defaultroute    # establezca esta opcion si el servidor su ruteador
                 # por default

   Para conectarse:

    1. Realice el llamado al host remoto, utilizando kermit (o
       cualquier otra aplicacion de este tipo), ingrese su nombre de
       usuario y contrasena (o cualquier info que sea necesaria para
       habilitar PPP en el host remoto).

    2. Salga de kermit (sin colgar la linea).

    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
   conexion falla, puede anadir la opcion debug en el fichero
   /etc/ppp/options de tal forma que pueda verificar la que esta
   ocurriendo y pueda resolver el problema.

   El siguiente script; /etc/ppp/pppup realizara los 3 pasos de forma
   automatica:

 #!/bin/sh
 ps ax |grep pppd |grep -v grep
 pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing pppd, PID=' ${pid}
         kill ${pid}
 fi
 ps ax |grep kermit |grep -v grep
 pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing kermit, PID=' ${pid}
         kill -9 ${pid}
 fi

 ifconfig ppp0 down
 ifconfig ppp0 delete

 kermit -y /etc/ppp/kermit.dial
 pppd /dev/tty01 19200

   El fichero /etc/ppp/kermit.dial es un script de kermit, uqe
   realiza el marcado y negocia la autorizacion necesaria con el host
   remoto (un ejemplo de este script se encuentra al final de este
   documento).

   Utilice el siguiente script, llamado /etc/ppp/pppdown para
   desconectar la linea PPP:

 #!/bin/sh
 pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
 if [ X${pid} != "X" ] ; then
         echo 'killing pppd, PID=' ${pid}
         kill -TERM ${pid}
 fi

 ps ax |grep kermit |grep -v grep
 pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing kermit, PID=' ${pid}
         kill -9 ${pid}
 fi

 /sbin/ifconfig ppp0 down
 /sbin/ifconfig ppp0 delete
 kermit -y /etc/ppp/kermit.hup
 /etc/ppp/ppptest

   Verifique que su PPP aun se esta ejecutando, por medio de
   /usr/etc/ppp/ppptest, que debera verse algo similar a esto:

 #!/bin/sh
 pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'`
 if [ X${pid} != "X" ] ; then
         echo 'pppd running: PID=' ${pid-NONE}
 else
         echo 'No pppd running.'
 fi
 set -x
 netstat -n -I ppp0
 ifconfig ppp0

   Para colgar el modem, ejecute /etc/ppp/kermit.hup, que debera
   contener:

 set line /dev/tty01     ; aqui va el dispositivo del modem
 set speed 19200
 set file type binary
 set file names literal
 set win 8
 set rec pack 1024
 set send pack 1024
 set block 3
 set term bytesize 8
 set command bytesize 8
 set flow none

 pau 1
 out +++
 inp 5 OK
 out ATH0\13
 echo \13
 exit

   He aqui un metodo alterno, donde se utiliza chat en lugar de
   utilizar kermit.

   Los siguientes dos ficheros deben ser suficiente, para realizar
   una conexion por medio de pppd.

 /dev/cuaa1 115200

 crtscts         # habilita el control de flujo por medio de hardware
 modem           # linea de control del modem
 connect "/usr/bin/chat -f /etc/ppp/login.chat.script"
 noipdefault     # el servidor remoto debe asignar la direccion IP.
                 # si el servidor no asigna una IP durante la negociacion
                 # IPCP , remueva esta linea y espere por los
 passive         # paquetes LCP
 domain <your.domain>      # aqui va su dominio

 :               # escriba la IP del host remoto aqui
                 # si no ha especificado la opcion noipdefault
                 # cambie esta linea 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 linea.

 ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<numero.de.telefono>
   CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <nombre.usuario>
   TIMEOUT 5 sword: <contrasena>

   Una vez que estos ficheros han sido modificados correctamente e
   instalados, todo lo que necesita es ejecutar el comando pppd, algo
   como:

 # pppd

     --------------------------------------------------------------

  25.3.3. Uso de pppd como Servidor

   El fichero /etc/ppp/options debe contener algo similar a lo
   siguiente:

 crtscts   # control de flujo por Hardware
 netmask 255.255.255.0           # mascara de red (no es requisito)
 192.114.208.20:192.114.208.165  # direcciones ip del host local y remoto
                                 # la direccion ip local debe ser
                                 # diferente a la que le haya asignado a su
                                 # dispositivo de red ethernet (u otro)
                                 # la direccion ip remota que sera
                                 # asignada a la maquina remota
 domain ppp.foo.com              # su dominio
 passive                         # espera por LCP
 modem                           # linea de modem

   El siguiengte script, llamado /etc/ppp/pppserv habilitara pppd,
   para que actue como servidor:

 #!/bin/sh
 ps ax |grep pppd |grep -v grep
 pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing pppd, PID=' ${pid}
         kill ${pid}
 fi
 ps ax |grep kermit |grep -v grep
 pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing kermit, PID=' ${pid}
         kill -9 ${pid}
 fi

 # reset ppp interface
 ifconfig ppp0 down
 ifconfig ppp0 delete

 # enable autoanswer mode
 kermit -y /etc/ppp/kermit.ans

 # run ppp
 pppd /dev/tty01 19200

   Utilice el script /etc/ppp/pppservdown para detener el servidor:

 #!/bin/sh
 ps ax |grep pppd |grep -v grep
 pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing pppd, PID=' ${pid}
         kill ${pid}
 fi
 ps ax |grep kermit |grep -v grep
 pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'`
 if [ "X${pid}" != "X" ] ; then
         echo 'killing kermit, PID=' ${pid}
         kill -9 ${pid}
 fi
 ifconfig ppp0 down
 ifconfig ppp0 delete

 kermit -y /etc/ppp/kermit.noans

   El siguiente script de kermit (/etc/ppp/kermit.ans)
   habilita/deshabilita el modo de autorespuesta en su modem. Y debe
   verse algo similar a lo siguiente:

 set line /dev/tty01
 set speed 19200
 set file type binary
 set file names literal
 set win 8
 set rec pack 1024
 set send pack 1024
 set block 3
 set term bytesize 8
 set command bytesize 8
 set flow none

 pau 1
 out +++
 inp 5 OK
 out ATH0\13
 inp 5 OK
 echo \13
 out ATS0=1\13   ; cambiar esto a quedar out ATS0=0\13 si desea deshabilitar el modo
                 ; de autorespuesta
 inp 5 OK
 echo \13
 exit

   Un script llamado /etc/ppp/kermit.dial es utilizado para llamar y
   autentificarse en un host remoto. Es necesario que edite este
   fichero, de acuerdo a sus necesidades. Escriba su nombre de
   usuario (login) y contrasena (password) en este fichero, tambien
   sera necesario cambiar su metodo de conexion, de acuerdo a lo que
   se ajuste a sus necesidades.

 ;
 ; ingrese el dispositivo que esta apuntando a su modem:
 ;
 set line /dev/tty01
 ;
 ; escriba la velocidad del modem:
 ;
 set speed 19200
 set file type binary            ; full 8 bit file xfer
 set file names literal
 set win 8
 set rec pack 1024
 set send pack 1024
 set block 3
 set term bytesize 8
 set command bytesize 8
 set flow none
 set modem hayes
 set dial hangup off
 set carrier auto                ; Posteriormente SET CARRIER si es necesario
 set dial display on             ; despues SET DIAL si es necesario
 set input echo on
 set input timeout proceed
 set input case ignore
 def \%x 0                      
 goto slhup

 :slcmd                          ; cambio a modo de comando
 echo Put the modem in command mode.
 clear                           ; Limpieza del buffer de entrada
 pause 1
 output +++    
 input 1 OK\13\10                ; esperar para OK
 if success goto slhup
 output \13
 pause 1
 output at\13
 input 1 OK\13\10
 if fail goto slcmd              ; si el modem no responde Ok, intentar de nuevo

 :slhup                          ; colgar el telefono
 clear                           ; Limpieza del buffer de entrada
 pause 1
 echo Hanging up the phone.
 output ath0\13
 input 2 OK\13\10
 if fail goto slcmd              ; si no hay un OK como respuesta, poner el modem en modo de comando

 :sldial                         ; marcar el numero telefonico
 pause 1
 echo Dialing.
 output atdt9,550311\13\10               ; escriba el numero de telefono
 assign \%x 0                    ; asignar cero al contador

 :look
 clear                           ; Limpieza del buffer de entrada
 increment \%x                   ; Conteo de segundos
 input 1 {CONNECT }
 if success goto sllogin
 reinput 1 {NO CARRIER\13\10}
 if success goto sldial
 reinput 1 {NO DIALTONE\13\10}
 if success goto slnodial
 reinput 1 {\255}
 if success goto slhup
 reinput 1 {\127}
 if success goto slhup
 if < \%x 60 goto look
 else goto slhup

 :sllogin                        ; login
 assign \%x 0                    ; asignar cero al contador
 pause 1
 echo Looking for login prompt.

 :slloop
 increment \%x                   ; Conteo de segundos
 clear                           ; Limpieza del buffer de entrada
 output \13
 ;
 ; escriba su login prompt aqui:
 ;
 input 1 {Username: }
 if success goto sluid
 reinput 1 {\255}
 if success goto slhup
 reinput 1 {\127}
 if success goto slhup
 if < \%x 10 goto slloop         ; intentar 10 veces para obtener un login
 else goto slhup                 ; colgar y empezar de nuevo si a la decima falla

 :sluid
 ;
 ; escriba su nombre de usuario:
 ;
 output ppp-login\13
 input 1 {Password: }
 ;
 ; escriba su contrasena:
 ;
 output ppp-password\13
 input 1 {Entering SLIP mode.}
 echo
 quit

 :slnodial
 echo \7No dialtone.  Check the telephone line!\7
 exit 1

 ; local variables:
 ; mode: csh
 ; comment-start: "; "
 ; comment-start-skip: "; "
 ; end:

     --------------------------------------------------------------

25.4. Uso de PPP sobre Ethernet (PPPoE)

   Contribuido (tomado de
   http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) por Jim
   Mock.

   En esta seccion veremos como configurar PPP sobre una red Ethernet
   (PPPoE).

     --------------------------------------------------------------

  25.4.1. Configurando el kernel

   Ya no es necesario realizar una configuracion especial para que
   nuestro kernel cuente con soporte para PPPoE. Siempre y cuando el
   soporte de redes necesario se encuentre en el, ppp se encargara de
   cargarlo de una manera dinamica.

     --------------------------------------------------------------

  25.4.2. Editando el fichero ppp.conf

   He aqui un ejemplo de un fichero de configuracion ppp.conf
   completamente funcional:

 default:
   set log Phase tun command # puede anadir mas dispositivos si lo desea
   set ifaddr 10.0.0.1/0 10.0.0.2/0

 nombre_del_proveedor_del_servicio_de_internet:
   set device PPPoE:xl1 # sustituya xl1 con su dispositivo ethernet
   set authname SuNombreDeUsuario
   set authkey SuContrasena
   set dial
   set login
   add default HISADDR

     --------------------------------------------------------------

  25.4.3. Ejecutando PPP

   Estando en modo superusuario (root) puede ejecutar:

 # ppp -ddial nombre_del_proveedor_de_inet

     --------------------------------------------------------------

  25.4.4. Ejecutando PPP al inicio de sesion

   Anada las siguientes lineas a su archivo /etc/rc.conf:

 ppp_enable="YES"
 ppp_mode="ddial"
 ppp_nat="YES"   # siempre y cuando desee habilitar nat para su red local
 ppp_profile="nombre_del_proveedor_de_inet"

     --------------------------------------------------------------

  25.4.5. Diferenciando el uso del Servicio de PPPoE

   En ocasiones es necesario utilizar una pequena marca para
   diferenciar el servicio que vamos a utilizar para establecer la
   conexion. Las marcas ("tags")de servicio son utilizadas para
   distinguir entre diferentes servidores de una red, a los que nos
   podemos conectar utilizando PPPoE.

   Su proveedor de internet debe haberle provisto de la informacion
   necesaria para crear esta marca. Si esto no fue asi, puede
   solicitar a su proveedor que le brinde esta informacion.

   Como ultimo recurso, puede intentar el metodo sugerido por el
   programa Roarging Penguin PPPoE, que puede encontrarse en la
   coleccion de ports. Al utilizar este programa debe tener en mente,
   que este puede desconfigurar su modem por completo, por esta razon
   piense biena antes de utilizarlo. Simplemente instale el programa
   controlador del modem, provisto por su porveedor. Posteriormente,
   debe acceder al menu de Sistema del programa. El nombre de su
   perfil debe aparecer listado. Que normalmente es ISP.

   El nombre del perfil (marca del servicio) sera utilizada por la
   configuracion de PPPoE en el fichero de configuracion ppp.conf
   como el proveedor para la opcion del comando set device (puede ver
   la pagina de ayuda ppp(8) para mas 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.

   No olvide cambiar ISP por el nombre del perfil que le fue descrito
   anteriormente (por lo general el nombre de su Proveedor de
   Servicio de Internet).

   Para informacion adicional consulte:

     * Cheaper Broadband with FreeBSD on DSL por Renauld Waldura.

     --------------------------------------------------------------

  25.4.6. Uso de PPPoE en Casa con un Modem Dual ADSL 3Com

   Este modem no sigue el estandar establecido en el RFC 2516 (Un
   metodo que describe el uso de PPP por medio de un dispositivo
   Ethernet (PPoE), escrito por L. Mamakos, K. Lidl, J. Evarts, D.
   Carrel, D. Simone y R. Wheeler). En su lugar, el codigo de
   diferentes tipos de paquetes ha sido utilizado para el manejo del
   entorno Ethernet. Si cree que esto es incorrecto y que se debiera
   ajustar a las especificaciones de PPPoE, por favor comentelo en
   3Com.

   Para poder hacer que FreeBSD sea capaz de comunicarse con este
   dispositivo, se debe establecer un control de sistema (sysctl).
   Esto puede hacerse de forma automatica al momento del arranque,
   editando el fichero /etc/sysctl.conf:

 net.graph.nonstandard_pppoe=1

   o bien pude hacerse desde la linea de comandos, para un efecto
   inmediato, por medio del comando sysctl -w
   net.graph.nonstandard_pppoe=1.

   Desafortunadamente y dado que esto implica una configuracion
   general del sistema, por lo que no es posible comunicarnos con un
   dispositivo cliente -- servidor que utilice PPPoE y con un modem
   casero 3Com ADSL, al mismo tiempo.

     --------------------------------------------------------------

25.5. Uso de PPP sobre ATM (PPPoA)

   Lo siguiente describe como configurar PPP utilizando ATM, alias
   PPPoA. PPPoA es una alternativa muy comun entre proveedores de DSL
   en Europa.

     --------------------------------------------------------------

  25.5.1. Uso de PPPoA con un Alcatel Speedtouch USB

   El soporte bajo FreeBSD para este dispositivo se puede encontrar
   como un port, por que el firmware es distribuido bajo la licencia
   de Alcatel.

   Para instalar este software, simplemente utilice la coleccion de
   ports. Instale el port net/pppoa y siga las instrucciones
   provistas por el port.

     --------------------------------------------------------------

  25.5.2. Uso de mpd

   Puede usar mpd para conectarse a una gran variedad de servicios,
   en particular servicios pptp. Puede encontrar mpd en la coleccion
   de ports, bajo net/mpd.

   Primero debe instalar el port, y posteriormente configurar mpd
   para que se ajuste a sus necesidades y a la configuracion del
   proveedor. El port instala un conjunto de ficheros de
   configuracion de ejemplo, que estan bien documentados en
   PREFIX/etc/mpd/. Note que PREFIX se refiere al directorio donde
   sus ports son instalados, que normalmente es en /usr/local. Una
   guia completa en formato HTML, esta disponible una vez que se ha
   instalado el port. Esta se localiza en PREFIX/share/mpd/. Aqui
   tenemos un ejemplo simple de configuracion para conectarse a un
   servicio ADSL con mpd. La configuracion se divide en dos ficheros,
   primero tenemos el fichero mpd.conf.

 default:
      load adsl
 
  adsl:
      new -i ng0 adsl adsl
      set bundle authname usuario (1)
      set bundle password contrasena (2)
      set bundle disable multilink
     
      set link no pap actcomp protocomp
      set link disable chap
      set link accept chap
      set link keep-alive 30 10
     
      set ipcp no vjcomp
      set ipcp ranges 0.0.0.0/0 0.0.0.0/0
     
      set iface route default
      set iface disable on-demand
      set iface enable proxy-arp
      set iface idle 0
 
      open

   (1)
           El nombre de usuario para autentificar con su proveedor.
   (2)
           La contrasena para autentificar con su proveedor.

   El fichero mpd.links contiene informacion a cerca de la, o las
   conecciones, que desee establecer. Un ejemplo de mpd.links y que
   sea acompanante del ejemplo anterior, se muestra a continuacion.

 adsl:
      set link type pptp
      set pptp mode active
      set pptp enable originate incoming outcall
      set pptp self 10.0.0.140
      set pptp peer 10.0.0.138

   La conexion es facil de inicializarla, al ingresar los siguientes
   comandos como root.

 # mpd -b adsl

   El estatus de la conexion 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.

     --------------------------------------------------------------

  25.5.3. Uso de pptpclient

   Tambien 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
   seccion de ppp.conf, se muestra a continuacion. Para mayor
   informacion sobre las opciones de ppp.conf, consulte la pagina de
   ayuda de ppp; ppp(8).

 adsl:
   set log phase chat lcp ipcp ccp tun command
   set timeout 0
   enable dns
   set authname usuario (1)
   set authkey contrasena (2)
   set ifaddr 0 0
   add default HISADDR

   (1)
           Nombre de usuario de la cuenta DSL.
   (2)
           La contrasena de su cuenta.

     AvisoDebido a que debe poner su contrasena en el fichero
     ppp.conf en texto plano, debe asegurarse que nadie tenga acceso
     de lectura a este fichero. Los siguientes comandos se aseguran
     de que el fichero solo pueda se leido por root. Ve las paginas
     de ayuda chmod(1) y chown(8) para mayor informacion.

 # chown root:wheel /etc/ppp/ppp.conf
  # chmod 600 /etc/ppp/ppp.conf

   Esto abrira una sesion por medio de PPP con su ruteador DSL. Los
   modems Ethernet DSL cuentan con una direccion IP de LAN
   preconfigurada a la cual se puede conectar. En el caso del Alcatel
   Speedtouch, esta direccion es 10.0.0.138. La documentacion de su
   equipo debe indicarle que direccion utiliza. Para abrir el "tunel"
   e iniciar la sesion ppp, ejecute el siguiente comando.

 # pptp direccion proveedor

     Sugerencia: Puede anadir un simbolo de ampersand ("&") al final
     de este comando, ya que pptp no retorna al shell por default.

   Un dispositivo virtual tun sera creado, para interactuar con los
   procesos de pptp y ppp. Una vez que regrese al shell puede
   examinar la conexion por medio del siguiente comando.

 % ifconfig tun0
  tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
          inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00
          Opened by PID 918

   Si no le es posible conectarse, verifique la configuracion de su
   ruteador, que normalmente es accesible por medio de telnet o de su
   navegador web. Si aun no puede conectarse examine la salida que da
   el comando pptp y el contenido del fichero de registro (log) de
   ppp; /var/log/ppp.log.

     --------------------------------------------------------------

25.6. Uso de SLIP

   Contribucion Original por Satoshi Asami. Con comentarios por Guy
   Helmer y Piero Serini.

     --------------------------------------------------------------

  25.6.1. Configurando un cliente SLIP

   Lo siguiente es una forma de configurar FreeBSD para que utilice
   SLIP, en un red con direccion estatica. Para direcciones dinamicas
   (esto es, donde su direccion cambia cada vez que se conecta),
   probablemente sea necesario realizar algunos ajustes que complican
   la configuracion.

   En primer termino, es necesario determinar a que puerto serial
   esta conectado nuestro modem. Mucha gente opta por} contar con un
   enlace simbolico, tal como /dev//modem, que apunta al nombre real
   del dispositivo, /dev/cuaaN. Esto permite abstenerse de usar el
   nombre real del dispositivo, en caso de que sea necesario cambiar
   de puerto nuestro modem. Lo cual puede ser de mucha ayuda, ya que
   puede ser un fastidio tener que editar un monton de ficheros en
   /etc y ficheros de tipo .kermrc en todo el sistema!.

     Nota: /dev/cuaa0 es COM1, cuaa1 es COM2, etc.

   Asegurese de contar con la siguiente opcion en la configuracion de
   su kernel:

 pseudo-device   sl      1

   Esta opcion esta incluida en el archivo del kernel GENERIC, asi
   que no debe haber problema, claro esta, a menos que lo haya
   borrado intencionalmente.

     --------------------------------------------------------------

    25.6.1.1. Cosas Que Tiene Que Hacer Solo Una Vez

    1. Anada el nombre de su maquina, gateway, servidores de nombre a
       su fichero /etc/hosts. Este es un ejemplo de mi fichero:

 127.0.0.1               localhost loghost
 136.152.64.181          water.CS.Example.EDU water.CS water
 136.152.64.1            inr-3.CS.Example.EDU inr-3 slip-gateway
 128.32.136.9            ns1.Example.EDU ns1
 128.32.136.12           ns2.Example.EDU ns2

    2. Asegurese de que cuenta con la opcion hosts antes de la opcion
       bind, en su fichero /etc/host.conf. De lo contrario pueden
       ocurrir cosas graciosas en su sistema.

    3. Edite el fichero /etc/rc.conf.

         1. Especifique su nombre host al editar la linea que dice:

 hostname="minombre.mi.dominio"

            El nombre completo de su sistema para internet, debe ser
            escrito en este punto.

         2. Anada el dispositivo sl0 a la lista de dispositivos de
            red, al cambiar la linea que dice:

 network_interfaces="lo0"

            a quedar:

 network_interfaces="lo0 sl0"

         3. Anada los parametros de inicializacion del dispositivo
            sl0, al anadir la linea:

 ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"

         4. Especificque cual sera su ruteador por omision al editar
            la linea:

 defaultrouter="NO"

            a quedar:

 defaultrouter="slip-gateway"

    4. Edite su fichero /etc/resolv.conf (si no existe debe crearlo),
       a que contenga lo siguiente:

 domain CS.Ejemplo.EDU
 nameserver 128.32.136.9
 nameserver 128.32.136.12

       Como puede ver, lo anterior define el nombre de host, de su
       servidor de nombres. Claro esta, el nombre de dominio y las
       direcciones IP, dependen de su sistema especifico.

    5. Establezca la contrasena del superusuario root y de su simil
       toor (y de cualquier otro usuario que aun no cuente con la
       misma).

    6. Reinicie su sistema y asegurese que cuenta con el nombre de
       host (hostname) correcto.

     --------------------------------------------------------------

    25.6.1.2. Haciendo una Conexion con SLIP

    1. Marque el numero, teclee en el signo de comando slip, ingrese
       el nombre y la contrasena. Lo que se requiere ingresar,
       depende de su sistema. Si utiliza kermit, puede utilizar un
       script similar al siguiente:

 # kermit setup
 set modem hayes
 set line /dev/modem
 set speed 115200
 set parity none
 set flow rts/cts
 set terminal bytesize 8
 set file type binary
 # El siguiente macro se encarga de llamar e ingresar al sistema
 define slip dial 643-9600, input 10 =>, if failure stop, -
 output slip\x0d, input 10 Username:, if failure stop, -
 output silvia\x0d, input 10 Password:, if failure stop, -
 output ***\x0d, echo \x0aCONNECTED\x0a

       Claro esta, que debe cambiar el nombre y contrasen a quedar de
       acuerdo a sus necesidades. Despues de hacer esto, puede
       simplemente teclear slip en el simbolo de sistema (prompt) de
       kermit, para realizar la conexion.

         Nota: El dejar su contrasena en texto plano, en cualquier
         parte del sistema, generalmente es una mala idea. Hagalo
         bajo su propio riesgo.

    2. Deje a kermit en ese punto trabajando (puede suspenderlo
       tecleando Ctrl-z) y como root, teclee:

 # slattach -h -c -s 115200 /dev/modem

       Si puede hacer ping a cualquier host que se encuentre del otro
       lado del ruteador, usted esta conectado!. Si esto no funciona,
       puede intentar como argumento del comando slattach, la opcion
       -a en lugar de utilizar la optcion -c.

     --------------------------------------------------------------

    25.6.1.3. Como Terminar la Conexion

   Para terminar la conexion haga lo siguiente:

 # kill -INT `cat /var/run/slattach.modem.pid`

   esto terminaraa 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 pagina de ayuda de slattach indica que debe utilizar el comando
   ifconfig sl0 down, para marcar como terminado el uso del
   dispositivo, pero tal parece que esto no hace una gran diferencia
   para mi. (ifconfig sl0 da el mismo resultado.)

   En algunas ocasiones, puede que su modem se niegue a cortar la
   comunicacion (el mio lo hace a veces). Si ese es el caso,
   simplemente inicie de nuevo kermit y vuelva a salir. Normalmente
   en el segundo intento hay exito.

     --------------------------------------------------------------

    25.6.1.4. Problemas Comunes

   Si esto no funciona, sientase libre de preguntarme. Lo siguiente
   es una recapitulacion de los problemas que mas comunmente se
   presentan:

     * El no utilizar la opcion -c o -a con el comando slattach (Esto
       debiera se fatal, pero algunos usuarios han reportado que esto
       ha solucionado sus problemas.

     * Usar la opcion s10 en vez de usar la opcion sl0 (puede ser
       dificil ver la diferencia con algunos tipos de letras).

     * Intente ifconfig sl0 para visualizar el estatus de sus
       dispositivos de red. Por ejemplo, puede ser que obtenga algo
       similiar a lo siguiente:

 # ifconfig sl0
 sl0: flags=10<POINTOPOINT>
         inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00

     * Tambien el comando netstat -r le mostrara la tabla de ruteo,
       en caso de que obtenga el mensaje "no route to te host", al
       hacer ping. Un ejemplo de esto se muestra a continuacion:

 # netstat -r
 Routing tables
 Destination      Gateway            Flags     Refs     Use  IfaceMTU    Rtt    Netmasks:

 (root node)
 (root node)

 Route Tree for Protocol Family inet:
 (root node) =>
 default          inr-3.Example.EDU  UG          8   224515  sl0 -      -
 localhost.Exampl localhost.Example. UH          5    42127  lo0 -       0.438
 inr-3.Example.ED water.CS.Example.E UH          1        0  sl0 -      -
 water.CS.Example localhost.Example. UGH        34 47641234  lo0 -       0.438
 (root node)

       Esto es despues de que el sistema ha estado conectado por un
       tiempo. Los numeros pueden variar en su sistema.

     --------------------------------------------------------------

  25.6.2. Estableciendo un Servidor SLIP

   Este documento provee sugerencias, para establecer un servidor de
   SLIP, bajo FreeBSD, lo que generalmente significa configurar su
   sistema, para que de manera automatica inicie los servicios, al
   firmarse usuarios--clientes remotos en su sistema.

     --------------------------------------------------------------

    25.6.2.1. Prerequisitos

   Esta seccion es de naturaleza muy tecnica, asi que contar con
   antecedentes sobre esto es requerido. Este documento supone que
   usted cuenta con conocimientos sobre el protocolo de redes TCP/IP,
   y particularmente, redes y direcciones de nodos, mascaras de red,
   subneteo, ruteo y protocolos de ruteo, tal como RIP. El configurar
   servicios SLIP, en un servidor, requiere un conocimiento de estos
   conceptos, y si usted no esta familiarizado con estos, puede leer
   una copia, ya sea del libro de Craig Hunt; TCP/IP Networking
   Administration, publicado por O'Reilly & Associates, Inc. (Numero
   ISBN 0-937175-82-X), o alguno de los libros de Douglas Comer,
   sobre protocolos TCP/IP.

   Se da por un hecho, que usted ha instalado y configurado
   correctamente su(s) modem(s), asi como la configuracion de su
   sistema, para efecto de utilizar el mismo para realizar la
   conexion. Si usted no lo ha hecho, por favor lea el tutorial sobre
   configuracion de estos servicios; si cuenta con un navegador para
   la World-Wide Web, puede ver los tutoriales disponibles en
   http://www.FreeBSD.org/.

   Puede ser que tambien desee revisar las paginas de ayuda (man),
   sio(4) para informacion referente a los controladores de
   dispositivos de puertos en serie, y ttys(5), gettytab(5),
   getty(8), & init(8), para ver informacion relevante, sobre la
   configuracion de su sistema, para efecto de que acepte accesos
   (logins) por medio de un modem, y quizas stty(1) para informacion
   sobre los parametros de configuracion de puertos en serie (tal
   como clocal, que se utiliza para la conexion directa por medio de
   puertos seriales).

     --------------------------------------------------------------

    25.6.2.2. Echemos un Vistazo

   En su configuracion tipica, el desarrollo de FreeBSD como un
   servidor SLIP, funciona de la siguiente manera: un Usuario SLIP,
   se conecta del Servidor SLIP FreeBSD e ingresa al sistema con una
   identificacion especial, que utiliza /usr/sbin/sliplogin como
   shell del usuario. El programa sliplogin busca en el fichero
   /etc/sliphome/slip.hosts la linea que haya sido creada
   especialmente para el usuario, conecta la linea serial a una
   interfaz SLIP disponible y posteriormente ejecuta el script
   /etc/sliphome/slip.login, para configurar la interfaz SLIP.

     --------------------------------------------------------------

      25.6.2.2.1. Un Ejemplo de Acceso al Servidor SLIP

   Por ejemplo si la clave de acceso de un usuario SLIP fuese
   Shelmerg, la entrada del usuario Shelmerg, en el fichero
   /etc/master.passwd se vera algo similar a lo siguiente:

 Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin

   Cuando Shelmerg accese al sistema, el comando sliplogin, buscara
   en el fichero /etc/sliphome/slip.hosts, una linea, en la cual el
   ID (identificacion) del usuario coincida, por ejemplo, puede ser
   que en el fichero /etc/sliphome/slip.hosts exista una linea
   simliar a la siguiente:

 Shelmerg        dc-slip sl-helmer       0xfffffc00                autocomp

   El comando sliplogin encontrara la linea que coincida, enganchara
   la linea serial a cualquier interfaz SLIP disponible y
   posteriormente ejecutara /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 creara una
   configuracion, por medio de ifconfig, para la interfaz SLIP, a la
   cual sliplogin se ha adjuntado (la interfaz slip 0, que era el
   primer parametro dado en la lista de slip.login), para establecer
   la direccion local IP (dc-slip), la interfaz de la direcion IP
   Remota (sl-helmer), la submascara de red para la interfaz SLIP
   (0xfffffc00) y cualquier otra opcion adicional (autocomp). Si algo
   no va del todo bien, normalmente sliplogin guarda bastante
   informacion para depurar, por medio del demonio (daemon) syslog,
   que usualmente guarda dicha infomracion en /var/log/messages (vea
   la pagina de ayuda syslogd(8) asi como syslog.conf(5) y quizas el
   fichero /etc/syslog.conf, para ver que es lo que syslogd esta
   almacenando y donde es que lo almacena.

   OK, basta de ejemplos -- entremos de lleno en la configuracion del
   sistema.

     --------------------------------------------------------------

    25.6.2.3. Configuracion del Kernel

   El kernel de FreeBSD, por omision, cuenta con 2 dispositivos SLIP
   definidos (sl0 y sl1); usted puede utilizar netstat -i, para
   verificar si estos dispositivos se encuentran en el kernel de su
   sistema.

   Un ejemplo del resultado de netstat -i:

 Name  Mtu   Network     Address            Ipkts Ierrs    Opkts Oerrs  Coll
 ed0   1500  <Link>0.0.c0.2c.5f.4a         291311     0   174209     0   133
 ed0   1500  138.247.224 ivory             291311     0   174209     0   133
 lo0   65535 <Link>                            79     0       79     0     0
 lo0   65535 loop        localhost             79     0       79     0     0
 sl0*  296   <Link>                             0     0        0     0     0
 sl1*  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 aparece despues de
   sl0 y sl1 indica que los dispositivos no estan "trabajando".)

   Aun cuando el kernel cuente con los dispositivos, por omision el
   kernel de FreeBSD, no viene configurado para enviar paquetes (de
   hecho su sistema FreeBSD no trabajara como ruteador, por default)
   esto en base a los requerimientos para Internet, establecidos por
   los RFCs ( vea 1009 [Requerimentos para Pasarelas (Gateway) en
   Internet], 1122 [Requerimientos para hosts de Internet -- Capas de
   comunicacion] y quizas 1127 [RFC sobre Una Perspectiva de los
   Requerimientos de Hosts]). Si usted desea que su servidor SLIP
   sobre FreeBSD, opere como un ruteador, sera necesario que edite el
   fichero /etc/rc.conf y cambie la opcion gateway_enable, a quedar
   YES, esto habilitara esta funcion.

   Sera necesario que reinicie su sistema, para efecto de que estos
   cambios surtan efecto.

   Al verificar su fichero de configuracion del kernel
   (/sys/i386/conf/GENERIC), podra notar que cerca del final, hay una
   linea como la siguiente:

 pseudo-device sl 2

   Esta linea es la que define el numero de dispositivos SLIP
   disponibles en el kernel; el numero al final de la linea es el
   numero maximo de conecciones SLIP que puede manejar el servidor
   simultaneamente.

   Para ayuda con relacion a la configuracion y compilacion del
   kernel en su sistema FreeBSD, por favor refierase Capitulo 8 al
   apartado correspondiente.

     --------------------------------------------------------------

    25.6.2.4. Configuracion de Sliplogin

   Como se menciono anteriormente, existen tres ficheros en el
   directorio /etc/sliphome, que son parte de la configuracion de
   /usr/sbin/sliplogin (vea la pagina de ayuda sliplogin(8) de para
   ver la ayuda del comando sliplogin): slip.hosts, que es el fichero
   que define a los usuarios SLIP, asi como sus direcciones IP
   correspondientes; slip.login, que normalmente es utilizado para
   configurar la interfaz de SLIP; y (opcionalmente) slip.logout, que
   hace lo opuesto a slip.login, cuando la conexion serial ha
   terminado.

     --------------------------------------------------------------

      25.6.2.4.1. Configuracio de slip.hosts

   El fichero /etc/sliphome/slip.hosts contiene lineas, que al menos
   cuentan con cuatro partes, separadas por espacios en blanco:

     * Identificador (nombre) del usuario SLIP

     * Direccion Local (local para el servidor SLIP) de la liga a
       SLIP

     * Direccion Remota de la liga a SLIP

     * Mascara de red

   Las direcciones local y remota, pueden ser nombres del host (la
   resolucion de los mismos, es llevada a cabo, por medio de
   /etc/hosts o por el servidor de nombres de dominio (DNS),
   dependiendo de lo que haya especificado en el fichero
   /etc/host.conf), y la mascara de red puede ser un nombre, que
   puede ser resuelto revisando /etc/networks. En un sistema de
   ejemplo, el fichero /etc/sliphome/slip.hosts, puede verse asi:

 #
 # login local-addr      remote-addr     mask            opt1    opt2
 #                                               (normal,compress,noicmp)
 #
 Shelmerg  dc-slip       sl-helmerg      0xfffffc00      autocomp

   Al final de la linea puede ver que existen una o mas opciones.

     * normal -- sin compresion de los encabezados.

     * compress -- compresion de los encabezados.

     * autocomp -- compresion automatica, si el host remoto lo
       permite.

     * noicmp -- deshabilitar los paquetes ICMP (de tal forma que
       cualquier paquete enviado por "ping" seraa rechazado, en lugar
       de ocupar de su ancho de banda).

   La eleccion sobre la direccion local y remota depende si usted va
   a utilizar una conexion TCP/IP dedicada o bien si va a utilizar
   una conexion por medio de "proxy ARP" en su servidor SLIP (no es
   correcto "proxy ARP", pero es la terminologia utilizada en esta
   seccion para describirlo). Si usted no esta seguro que metodo
   manejar o como asignar la direccion IP, por favor refierase a
   alguno de los libros sobre TCP/IP, que se mencionan en los
   Prerequisitos de SLIP (Seccion 25.6.2.1) y/o consulte al
   administrador de IP de su red.

   Si usted piensa subnetear para los diferentes clientes SLIP, sera
   necesario que la direccion de la subred (subnet), salga de la
   direccion 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 estatica a la subred
   SLIP, por medio de su servidor SLIP en su ruteador mas cercano por
   IP.

   De otra forma, si usted piensa utilizar un metodo "proxy ARP",
   sera necesario que a sus clientes SLIP, se les asigne una
   direccion IP, que se encuentre dentro del rango que este
   utilizando para su subred Ethernet, y tambie sera necesario que
   haga algunos ajustes en los ficheros script
   /etc/sliphome/slip.login y en /etc/sliphome/slip.logout, para que
   usen arp(8), para que maneje la tabla ARP del servidor SLIP y
   llamados del proxy-ARP.

     --------------------------------------------------------------

      25.6.2.4.2. slip.login Configuracion

   El tipico 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
 #
 /sbin/ifconfig sl$1 inet $4 $5 netmask $6

   This slip.login file merely runs ifconfig for the appropriate SLIP
   interface with the local and remote addresses and network mask of
   the SLIP interface.

   If you have decided to use the "proxy ARP" method (instead of
   using a separate subnet for your SLIP clients), your
   /etc/sliphome/slip.login file will need to look something like
   this:

 #!/bin/sh -
 #
 #       @(#)slip.login  5.1 (Berkeley) 7/1/90

 #
 # generic login file for a slip line.  sliplogin invokes this with
 # the parameters:
 #      1        2         3        4          5         6     7-n
 #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
 #
 /sbin/ifconfig sl$1 inet $4 $5 netmask $6
 # Answer ARP requests for the SLIP client with our Ethernet addr
 /usr/sbin/arp -s $5 00:11:22:33:44:55 pub

   La linea adicional, arp -s $5 00:11:22:33:44:55 pub del script
   slip.login, crea una entrada ARP en la tabla del servidor SLIP.
   Esta entrada le indica al servidor SLIP que debe responder con la
   direccion MAC de su dispositivo Ethernet, cuando cualquier otro
   nodo IP en la red, solicite informacion a la IP del cliente SLIP.

   Al tomar en cuenta el ejemplo anterior, es importante que
   sustituya la direccion Ethernet MAC (00:11:22:33:44:55), con la
   direccion que corresponde a su tarjeta de red, o definitivamente
   su "proxy ARP" no va a funcionar!. Para efecto de conocer cual es
   la direccion MAC del dispositivo Ethernet (tarjeta de red), de su
   servidor SLIP, puede ejecutar el comando netstat -i, el cual
   tendra 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 direccion MAC de su dispositivo Ethernet, en
   este sistema es 00:02:c1:28:5f:4a -- los puntos que aparecen en la
   salida del comando netstat -i deben cambiarse por dos puntos, asi
   mismo debera de anteponerse un cero, a cada digito hexadecimal que
   aparezca solo (no en pares), de tal forma que convirtamos la
   direccion en lo que arp(8) requiere para trabajar; vea la pagina
   de ayuda arp(8), para ver informacion completa sobre su uso.

     Nota: Recuerde que cuando cree los ficheros
     /etc/sliphome/slip.login y /etc/sliphome/slip.logout, deben
     contar con permisos de ejecucion (chmod 755
     /etc/sliphome/slip.login /etc/sliphome/slip.logout), de otra
     forma estos scripts no podran llevar a cabo su funcion.

     --------------------------------------------------------------

      25.6.2.4.3. Configuracion de slip.logout

   El fichero /etc/sliphome/slip.logout no es indispensable (a menos
   que vaya a utilizar "proxy ARP"), pero si aun asi decide crearlo,
   el siguiente es un ejemplo basico del script slip.logout :

 #!/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

   Si usted esta utilizando "proxy ARP", es recomendable que le
   indique a /etc/sliphome/slip.logout, que desea eliminar la entrada
   ARP, para el cliente SLIP:

 #!/bin/sh -
 #
 #       @(#)slip.logout

 #
 # logout file for a slip line.  sliplogin invokes this with
 # the parameters:
 #      1        2         3        4          5         6     7-n
 #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
 #
 /sbin/ifconfig sl$1 down
 # Dejar de solicitar respuesta ARP al cliente SLIP
 /usr/sbin/arp -d $5

   El comando arp -d $5, elimina la entrada ARP, que slip.login de
   "proxy ARP" anadio al cliente SLIP al ingresar al sistema.

   Para esta mas seguros: asegurese de que el fichero
   /etc/sliphome/slip.logout cuenta con los permisos adecuados para
   su ejecucion, una vez que lo ha creado (ej. chmod 755
   /etc/sliphome/slip.logout) .

     --------------------------------------------------------------

    25.6.2.5. Consideraciones sobre el Enrutamiento

   Si usted no esta utilizando el metodo "proxy ARP", para efecto de
   rutear los paquetes entre sus clientes SLIP y el resto de la red
   (y quizas Internet), debera de hacer una de las siguientes dos
   acciones, o bien anadir direcciones estaticas, a su(s)
   ruteador(es) mas cercanos, para que se reenvien los paquetes de la
   subred de sus clientes SLIP, por medio de su servidor SLIP, o bien
   tendra 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.

     --------------------------------------------------------------

      25.6.2.5.1. Direcciones de Enrutamiento Estaticas

   Anadir direcciones estaticas de enrutamiento puede ser un problema
   (o imposible si usted no cuenta con la autoridad para hacerlo...).
   Si usted cuenta con una red de ruteo-multiple en su organizacion,
   algunos ruteadores, tales como los fabricados por Cisco y Proteon,
   puede ser que no sea suficiente con el hecho de configurar las
   rutas estaticas de su subred SLIP, sino que sea necesario indicar
   que rutas utilizar para informar a cerca de otras rutas, asi que
   algo de experiencia asi como determinacion para la resolucion de
   problemas seran necesarias para poner la ruta basada-en-
   ruteo-estatico a trabajar.

     --------------------------------------------------------------

      25.6.2.5.2. Ejecutando gated

   Una alternativa para los dolores de cabeza que pueden dar las
   redes con ruteo estatico, es intalar gated en su servidor SLIP
   bajo FreeBSD y configurarlo, para que utilice los protocolos de
   ruteo apropiados (RIP/OSPF/BGP/EGP) para informar a otros
   ruteadores, a cerca de su subred SLIP. Una vez que lo ha compilado
   e instalado, debera crear el fichero /etc/gated.conf, que
   configurara a gated; aqui hay un ejemplo, similar al que el autor
   utilizo en un servidor SLIP FreeBSD:

     Nota: gated es un software propietario y su codigo fuente no
     estara disponible al publico mas (mas informacion en el sitio
     gated). Esta seccion solo existe para asegurarse de la
     compatibilidad con aquellos que usan la versio 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 ;
 } ;

   En el ejemplo anterior, el fichero de configuracion gated.conf
   transmite informacion sobre la subred SLIP xxx.xxx.yy, por medio
   de RIP al dispositivo Ethernet; si usted esta utilizando un
   dispositivo de red, diferente de ed, sera necesario que modifique
   el parametro ed por el correspondiente. En este ejemplo, el
   fichero tambien realiza una busqueda por el fichero
   /var/tmp/gated.output, que es un fichero que nos sirve para
   depurar cualquier error que se presente en la actividad de gated;
   usted puede desactivar la opcion de depuracion (debug), si es que
   gated esta funcionando correctamente. Sera necesario que modifique
   xxx.xxx.yy., a quedar con la direccion correcta de su subred SLIP
   (asegurese de modificar tambien la mascara de red, en la clausula
   proto direct tambien).

   Una vez que ha instalado y configurado gated en su sistema,
   necesitara indicarle a FreeBSD que al iniciar el sistema, ejecute
   el script para gated, en lugar de ejecutar routed. La forma mas
   facil de hacer esto, es editar las variables de route y
   router_flags, en el fichero /etc/rc.conf. Por favor vea la pagina
   de ayuda de gated, para ver informacion sobre los parametros de la
   linea--de--comandos.

     --------------------------------------------------------------

                        Capitulo 26. Cortafuegos

   Texto de Joseph J. Barbish. Convertido a SGML y actualizado por
   Brad Davis.

     --------------------------------------------------------------

26.1. *

   Pendiente de traduccion

     --------------------------------------------------------------

                    Capitulo 27. Correo Electronico

   Escrito por Bill Lloyd. Reescrito por Jim Mock.

27.1. Sinopsis

   El "Correo Electronico", o "email", es una de las formas de
   comunicacion mas usadas hoy en dia. Este capitulo es una
   introduccion basica de como poner en marcha un servidor de correo
   en FreeBSD, aunque no es una guia completa y se han omitido muchos
   conceptos importantes. Si se necesita informacion exhaustiva sobre
   el tema puede recurrirse a los libros listados en Capitulo 31.

   Despues de leer este capitulo usted sabra:

     * Que software esta involucrado en el envio y recepcion de
       correo electronico.

     * Donde se encuentran en FreeBSD los ficheros basicos de
       configuracion de sendmail.

     * Como bloquear a los "spammers" y evitar el uso no autorizado
       de su servidor de correo.

     * Como instalar y configurar agentes de transferencia de correo
       (MTA) en su sistema, para reemplazar sendmail.

     * Como resolver problemas comunes en servidores de correo.

     * Como usar SMTP con UUCP.

     * Como usar correo con una conexion dialup.

     * Como configurar SMTP con autentificacion para mas seguridad.

   Antes de leer este capitulo deberia usted:

     * Configurar apropiadamente su conexion de red (Capitulo 29).

     * Configurar apropiadamente la informacion de DNS de su servidor
       de correo (Capitulo 29).

     * Saber como instalar software adicional (Capitulo 4).

     --------------------------------------------------------------

27.2. Utilizacion del correo electronico

   Existen varios elementos relacionados con el intercambio de correo
   electronico. A saber: El agente de usuario (Mail User Agent o
   MUA), El agente de transporte de correo (Mail Transport Agent o
   MTA), El DNS, Las carpetas de correo (Mailboxes), y por supuesto,
   la maquina servidora de correo (mail host).

     --------------------------------------------------------------

  27.2.1. El Agente de Usuario

   Entre las opciones mas conocidas tenemos: mutt, pine, elm, y mail,
   junto con programas con interfaz grafica del estilo de balsa o
   xfmail por nombrar unos pocos. Tambien existen lectores de correo
   basados en navegadores web. Los programas de correo basados en
   navegadores web actuan de pasarela para las transacciones de
   correo electronico, entregando dichas transacciones al "servidor
   de correo" local, llamando a uno de los agentes de transporte de
   correo disponibles en la maquina local, o entregando dichas
   transacciones a un agente de transporte remoto utilizando el
   protocolo TCP.

     --------------------------------------------------------------

  27.2.2. Agente de Transporte de Correo

   FreeBSD viene con sendmail por defecto, pero tambien se soportan
   otros daemones, entre los cuales se encuentran:

     * exim;

     * postfix;

     * qmail.

   El agente de transporte de correo normalmente posee dos
   funcionalidades, por un lado se responsabiliza de la recepcion y
   por otro se encarga de entregar el correo de salida. No es
   responsable de la recoleccion automatica de correo mediante la
   utilizacion de protocolos como POP o IMAP, ni se utiliza para que
   el usuario pueda acceder a las carpetas de correo locales. Para
   realizar estas otras tareas, se necesitan daemons adicionales.

     Aviso Versiones antiguas de sendmail poseen varios problemas de
     seguridad que pueden facilitar a un atacante el acceso local o
     remoto a la maquina que ejecuta sendmail. Para evitar dichos
     problemas de seguridad se recomienda utilizar una version
     actualizada de sendmail. Tiene mas opciones a la hora de elegir
     MTA en los Ports de FreeBSD.

     --------------------------------------------------------------

  27.2.3. Correo electronico y DNS

   El Sistema de Nombres de Dominio (en ingles DNS) y su
   correspondiente daemon (llamado named) constituyen una parte
   fundamental del procedimiento de entrega de correo electronico.
   Para entregar el correo electronico al destinatario adecuado el
   daemon servidor de correo busca el sitio remoto dentro del sistema
   de DNS.

   El DNS es la entidad responsable de asociar nombres con
   direcciones IP, pero ademas se encarga de almacenar informacion
   especifica relacionada con la entrega de correo mediante registros
   de tipo MX. Los registros MX (Mail eXchanger) especifican que
   maquina o maquinas estan encargadas de recibir correo electronico
   para un determinado nombre de dominio. En caso de no existir
   ningun registro MX para el dominio del destinatario, se busca
   informacion almacenada en registros de tipo A para enviar el
   correo al destino final.

   Se pueden consultar los registros MX para cualquier dominio
   utilizando el comando host(1), como se puede observar en el
   siguiente ejemplo:

 % host -t mx FreeBSD.org
         FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.org

     --------------------------------------------------------------

  27.2.4. Recepcion de correo

   La recepcion de correo electronico para su dominio se realiza
   mediante lo que se conoce como la maquina de correo (mail host).
   Esta maquina recoge todo el correo dirigido a su dominio y lo
   almacena en mbox (el metodo por defecto para el almacenamiento de
   correo) o en formato Maildir, dependiendo de la configuracion de
   la maquina. Una vez que el correo ha sido almacenado con exito se
   puede leer en local utilizando aplicaciones como mail(1) o como
   mutt, o de forma remota mediante un conjunto de protocolos tales
   como POP o IMAP. Esto significa que si usted va a leer el correo
   de forma local no necesita instalar ningun servidor de POP o IMAP.

     --------------------------------------------------------------

    27.2.4.1. Acceso a carpetas de correo remotas mediante POP e IMAP

   Para poder acceder a carpetas de correo de forma remota se
   necesita tener acceso a un servidor de POP o IMAP. Estos
   protocolos permiten a los usuarios conectarse a sus carpetas de
   correo desde ubicaciones remotas de una forma sencilla. Aunque
   ambos, POP y IMAP, permiten este acceso remoto IMAP ofrece algunas
   ventajas anadidas, algunas de las cuales son:

     * El acceso mediante IMAP permite almacenar los correos en el
       servidor remoto sin necesidad de extraerlos y tener que
       almacenarlos en local.

     * IMAP soporta actualizaciones concurrentes.

     * IMAP resulta ser extremadamente util bajo enlaces de baja
       velocidad puesto que permite a los usuarios recuperar la
       estructura de los mensajes sin necesidad de bajarse todo el
       contenido. Ademas puede realizar tareas tales como busquedas
       directas en el servidor con el fin de minimizar la utilizacion
       de la red.

   Para instalar un servidor de POP o de IMAP se deben dar los
   siguientes pasos:

    1. Seleccionar el servidor IMAP o POP que mejor cumpla a sus
       necesidades. Los siguientes servidores POP e IMAP son bien
       conocidos y son firmes candidatos para ello:

          * qpopper;

          * teapop;

          * imap-uw;

          * courier-imap;

    2. Instalar el daemon POP o IMAP de su eleccion desde el arbol de
       "ports".

    3. Modifique donde sea necesario /etc/inetd.conf para que el
       servidor POP o IMAP se ejecute automaticamente.

     Aviso Tenga en cuenta que tanto POP como IMAP transmiten
     informacion, en especial el usuario y la contrasena, en texto
     plano. Eso significa que si se desea seguridad en la transmision
     de la informacion a traves de la red se deben considerar
     mecanismos adicionales como por ejemplo el encapsulado de la
     sesion mediante ssh(1). El encapsulado de sesiones se explica en
     Seccion 14.11.8.

     --------------------------------------------------------------

    27.2.4.2. Acceso a carpetas de correo locales

   Las carpetas de correo pueden abrirse de forma local utilizando un
   agente de correo de usuario (MUA) en el servidor donde reside la
   carpeta. Se suelen usar los programas mutt or mail(1).

     --------------------------------------------------------------

  27.2.5. El Servidor de Correo (Mail Host)

   El servidor de correo es el nombre que se usa para identificar a
   la maquina responsable de la entrega y recepcion de correo
   electronico dentro de una organizacion. Esta maquina puede recibir
   correo de varios usuarios dentro de su dominio.

     --------------------------------------------------------------

27.3. Configuracion de sendmail

   Contribuido por Christopher Shumway.

   sendmail(8) es el agente de transporte de correo (MTA) por defecto
   de FreeBSD. La responsabilidad de sendmail consiste en aceptar
   correo de agentes de correo de usuario (MUA) y en entregar dichos
   correos al agente de transporte de correo apropiado, segun se
   especifique en su archivo de configuracion. Sendmail tambien
   acepta conexiones de red provinientes de otros agentes de
   transporte y puede depositar el correo recibido en carpetas
   locales o o entregarlo a otros programas.

   sendmail utiliza los siguientes ficheros de configuracion:

   +----------------------------------------------------------------+
   |          Filename          |             Function              |
   |----------------------------+-----------------------------------|
   | /etc/mail/access           | Base de datos de accesos de       |
   |                            | sendmail                          |
   |----------------------------+-----------------------------------|
   | /etc/mail/aliases          | Carpeta de alias                  |
   |----------------------------+-----------------------------------|
   | /etc/mail/local-host-names | Listados de maquinas para las que |
   |                            | sendmailacepta correo             |
   |----------------------------+-----------------------------------|
   | /etc/mail/mailer.conf      | Configuracion del programa de     |
   |                            | correo                            |
   |----------------------------+-----------------------------------|
   | /etc/mail/mailertable      | Tabla de entregas de correo       |
   |----------------------------+-----------------------------------|
   | /etc/mail/sendmail.cf      | Archivo de configuracion          |
   |                            | principal de sendmail             |
   |----------------------------+-----------------------------------|
   | /etc/mail/virtusertable    | Usuarios virtuales y tablas de    |
   |                            | dominio                           |
   +----------------------------------------------------------------+

     --------------------------------------------------------------

  27.3.1. /etc/mail/access

   La base de datos de accesos define que maquinas o direcciones IP
   pueden acceder al servidor de correo y quee clase de acceso tienen
   permitido. Las maquinas se listan junto con las opciones OK,
   REJECT, RELAY o simplemente junto con un mensaje de error que se
   entrega a la rutina de gestion de excepciones de sendmail. Las
   maquinas que se listan junto con la opcion OK, que es el valor por
   defecto, tienen permiso para enviar correo a la maquina servidora
   siempre y cuando la direccion de correo de destino sea la maquina
   servidora de correo. Las maquinas listadas junto con la opcion
   REJECT tienen el acceso prohibido a conexiones de correo
   electronico con el servidor. Por ultimo las maquinas que poseen la
   etiqueta RELAY para sus nombres tienen permitido enviar correo
   para cualquier destino a traves de la maquina servidora de correo.

   Ejemplo 27-1. Configuracion de la base de datos de acceso de
   sendmail

 cyberspammer.com                550 We don't accept mail from spammers
 FUENTE.DE.CORREO.INDISCRIMINADO@ 550 We don't accept mail from spammers
 otra.fuente.de.spam             REJECT
 okay.cyberspammer.com           OK
 128.32                          RELAY

   En el ejemplo se pueden observar cinco entradas. Los generadores
   de correo que coinciden con la parte izquierda de la tabla se ven
   afectados por la parte accion especificada en la parte derecha.
   Los primeros dos ejemplos emiten un codigo de error para la rutina
   de excepciones de sendmail. El mensaje de error se transmite a la
   maquina remota cuando se recibe un correo que coincide con la
   parte izquierda de la tabla. La siguiente entrada rechaza correo
   de una determinada maquina de internet, otra.fuente.de.spam. La
   siguiente entrada acepta conexiones de correo de la maquina
   okay.cyberspammer.com, lo cual es mas exacto que la linea de
   arriba de cyberspammer.com. Las coincidencias mas completas tienen
   precedencia sobre las menos especificas. La ultima entrada permite
   actuar como "relay" o pasarela de correo electronico para aquellas
   maquinas que posean una direccion IP que comience por 128.32.
   Estas maquinas podrian enviar correo destinado a otros servidores
   de correo utilizando el nuestro.

   Cuando se actualiza este fichero se debe ejecutar make dentro de
   /etc/mail/ para que se actualice la base de datos.

     --------------------------------------------------------------

  27.3.2. /etc/mail/aliases

   La base de datos de alias contiene una lista de directorios
   virtuales que son traducidas a otros usuarios, ficheros, programas
   o incluso otros alias. A continuacion se muestran unos pocos
   ejemplos de la sintaxis que se puede utilizar dentro del fichero
   /etc/mail/aliases:

   Ejemplo 27-2. Mail Aliases

 root: usuariolocal
 ftp-bugs: joe,eric,paul
 bit.bucket:  /dev/null
 procmail: "|/usr/local/bin/procmail"

   El formato del fichero es sencillo; el nombre de la carpeta de
   correo que aparece a la izquierda de los dos puntos se traduce
   al/los destinos de la derecha. El primer ejemplo simplemente
   traduce la carpeta root a la carpeta usuariolocal, la cual se
   examina de nuevo utilizando la misma base de datos de alias, y si
   no existe ninguna otra coincidencia el mensaje se entrega al
   usuario local usuariolocal. En el ejemplo siguiente se muestra una
   lista de correo. Todo correo que se envia a la carpeta ftp-bugs se
   traduce en un envio para tres carpetas locales diferentes: joe,
   eric y paul. Es importante senalar que tambien se pueden
   especificar carpetas remotas mediante la forma
   usuario@ejemplo.com. El siguiente ejemplo muestra la escritura del
   correo a un fichero, en este caso en /dev/null. El ultimo ejemplo
   muestra el envio de correo a un programa; en este caso el mensaje
   de correo se escribe en la entrada estandar del programa
   /usr/local/bin/procmail utilizando una tuberia (o " pipe") de
   UNIX.

   Cuando se actualiza este fichero se debe ejecutar make dentro de
   /etc/mail/ para actualizar la base de datos.

     --------------------------------------------------------------

  27.3.3. /etc/mail/local-host-names

   Este archivo es una lista de nombres de maquinas que sendmail(8)
   acepta como nombres locales. Se suele utilizar para escribir
   aquellos dominios o maquinas de los cuales sendmail va a recibir
   correo. Por ejemplo, si nuestro servidor de correo va a aceptar
   correo proveniente del dominio ejemplo.com y tambien de la maquina
   mail.ejemplo.com nuestro local-host-names deberia ser algo asi:

 ejemplo.com
 mail.ejemplo.com

   Cuando se actualiza este fichero sendmail(8) necesita ser
   reiniciado para que tenga en cuenta los cambios.

     --------------------------------------------------------------

  27.3.4. /etc/mail/sendmail.cf

   Archivo de configuracion principal de sendmail, controla el
   comportamiento global de sendmail, incluyendo cualquier tarea
   desde la reescritura de direcciones de correo electronico hasta la
   devolucion de mensajes de error a los servidores de correo
   remotos. Es evidente que con un abanico tan diverso el fichero de
   configuracion acaba por ser bastante complejo y sus detalles
   quedan fuera de los objetivos de esta seccion. Afortunadamente
   este fichero raras veces necesita ser modificado, al menos en lo
   que respecta a servidores de correo estandar.

   El fichero de configuracion principal de sendmail se puede
   construir a partir de m4(1), es decir, macros que se utilizan para
   definir caracteristicas y comportamientos especificos de sendmail.
   Se ruega al lector consultar /usr/src/contrib/sendmail/cf/README
   para obtener mas detalles acerca de las distintas macros que se
   pueden utilizar.

   Cuando se realizan cambios a este fichero sendmail debe ser
   reiniciado para que los cambios surtan efecto.

     --------------------------------------------------------------

  27.3.5. /etc/mail/virtusertable

   El fichero virtusertable asocia direcciones de correo
   pertenecientes a dominios y carpetas virtuales con carpetas
   reales. Estas carpetas pueden ser locales, remotas, alias
   definidos en /etc/mail/aliases o incluso ficheros.

   Ejemplo 27-3. Ejemplo de asociacion de correo de dominio virtual

 root@ejemplo.com                root
 postmaster@ejemplo.com          postmaster@noc.ejemplo.net
 @ejemplo.com                    joe

   En el ejemplo superior se observa una asociacion para el dominio
   ejemplo.com. Este fichero se procesa de arriba a abajo buscando la
   primera coincidencia. La primera entrada asocia root@ejemplo.com
   con la carpeta de correo local denominada root. La siguiente
   entrada asocia postmaster@ejemplo.com con la carpeta postmaster
   situada en la maquina noc.ejemplo.net. Por ultimo, si no se ha
   encontrado ninguna coincidencia para ejemplo.com se le asigna la
   ultima asociacion, la cual asocia cualquier mensaje de correo
   proveniente de ejemplo.com con la carpeta de correo local
   denominada joe.

     --------------------------------------------------------------

27.4. Sustitucion del Agente de Transferencia de Correo

   Escrito por Andrew Boothman. Informacion obtenida de correos
   escritos por Gregory Neil Shapiro.

   Como ya se ha comentado FreeBSD viene con sendmail ya instalado
   como agente de transferencia de correo por defecto. De esta forma
   sendmail se encarga de gestionar el correo entrante y saliente.

   No obstante, debido a distintas razones algunos administradores de
   sistemas prefieren utilizar otro MTA. Estas razones varian desde
   simplemente querer probar otros programas de transferencia de
   correo, hasta la necesidad de utilizar un determinado programa que
   hace uso de una funcion especifica de un agente determinado. Por
   suerte cualesquiera que sean estas razones FreeBSD posee un
   sencillo procedimiento para sustituir a sendmail.

     --------------------------------------------------------------

  27.4.1. Instalacion de un nuevo MTA

   Existen una amplia gama de MTA alternativos a sendmail. Un buen
   punto de partida es el Sistema de Ports de FreeBSD, donde se
   pueden localizar varios. Por supuesto el usuario tiene libertad
   para utilizar cualquier MTA, siempre y cuando se pueda ejecutar en
   FreeBSD sin problemas.

   Lo primero es instalar el nuevo MTA. Una vez que esta instalado
   normalmente se tiene la oportunidad para decidir si realmente
   cubre las necesidades y tambien se tiene la oportunidad de
   configurar el nuevo software antes de sustituir a sendmail. El
   usuario debe tener en cuenta que el nuevo MTA puede sobreescribir
   algunos binarios del sistema como por ejemplo /usr/bin/sendmail.
   En cualquier caso el nuevo software de correo suele entrar en
   funcionamiento con una configuracion por defecto.

   Por favor, recuerde que se recomienda leer la documentacion del
   MTA seleccionado para obtener mas informacion.

     --------------------------------------------------------------

  27.4.2. Desactivacion de la aplicacion sendmail

   El procedimiento utilizado para ejecutar sendmail cambio
   significativamente entre las releases 4.5-RELEASE y 4.6-RELEASE.
   De esta forma el procedimiento utilizado para la desactivacion hoy
   en dia es sutilmente distinto al utilizado en dichas
   distribuciones.

     --------------------------------------------------------------

    27.4.2.1. FreeBSD 4.5-STABLE antes de 2002/4/4 y anteriores
    (Incluyendo 4.5-RELEASE y anteriores)

   Introducir:

 sendmail_enable="NO"

   dentro de /etc/rc.conf. Esta variable desactiva el servicio de
   recepcion de correo de sendmail, pero salvo que se modifique (ver
   mas adelante) el fichero /etc/mail/mailer.conf sendmail todavia
   sera la aplicacion elegida para enviar correo electronico.

     --------------------------------------------------------------

    27.4.2.2. FreeBSD 4.5-STABLE desde de 2002/4/4 (Incluyendo
    4.6-RELEASE y posteriores)

   Para poder desactivar completamente sendmail haga lo siguiente:

 sendmail_enable="NONE"

   dentro del fichero /etc/rc.conf.

     Aviso Se desactiva el servicio de correo de salida de sendmail.
     Es importanque que se reemplace con un sistema de entrega de
     correo alternativo que sea totalmente funcional. En caso
     contrario funciones del sistema FreeBSD tales como periodic(8)
     no podran entregar sus resultados por correo eletronico tal y
     como normalmente hacen. Varias partes del sistema FreeBSD
     esperan disponer de un sistema de correo funcional compatible
     con sendmail. Si las aplicaciones continuan utilizando los
     binarios de sendmail para realizar envios de correo despues de
     su desactivacion el correo podria ser almacenado en una cola
     inactiva de sendmail, en cuyo caso nunca se entregaria.

   Si solo se quiere desactivar el servicio de correo de entrada de
   sendmail, basta con establecer la variable:

 sendmail_enable="NO"

   dentro de /etc/rc.conf. En rc.sendmail(8) tiene mas informacion
   sobre las opciones de arranque de sendmail.

     --------------------------------------------------------------

  27.4.3. Ejecucion del nuevo MTA en el arranque

   Existen dos metodos alternativos para ejecutar el nuevo MTA en el
   arranque, dependiendo de la version de FreeBSD que se este
   ejecutando.

     --------------------------------------------------------------

    27.4.3.1. FreeBSD 4.5-STABLE antes de 2002/4/11 (Incluyendo
    4.5-RELEASE y anteriores)

   Se debe anadir un script en /usr/local/etc/rc.d/ cuyo nombre
   termine en .sh y que sea ejecutable por root. El script debe
   aceptar los parametros start y stop. Cuando el sistema FreeBSD se
   esta inicializando, los scripts de arranque ejecutaran el
   siguiente comando:

 /usr/local/etc/rc.d/supermailer.sh start

   La misma orden se puede utilizar tambien para ejecutar el servidor
   de forma manual. Cuando el sistema se esta reiniciando los scripts
   del sistema ejecutan los ficheros ubicados en /usr/local/etc/rc.d/
   utilizando la opcion stop, en nuestro caso:

 /usr/local/etc/rc.d/supermailer.sh stop

   Dicho comando tambien se puede utilizar para detener el servidor
   de correo de forma manual cuando el sistema FreeBSD se ejecuta con
   normalidad.

     --------------------------------------------------------------

    27.4.3.2. FreeBSD 4.5-STABLE despues de 2002/4/11 (Incluyendo
    4.6-RELEASE y posteriores)

   Con las ultimas versiones de FreeBSD se puede utilizar el metodo
   anterior pero tambien se puede especificar

 mta_start_script="nombre_de_fichero"

   dentro de /etc/rc.conf, donde nombre_de_fichero es el nombre de
   algun script que se ejecuta en tiempo de arranque para inicializar
   el nuevo MTA.

     --------------------------------------------------------------

  27.4.4. Sustitucion de sendmail como el agente de transporte de correo
  predeterminado.

   El programa sendmail es tan imprescindible y es utilizado por tal
   multitud de programas en los sistemas UNIX que algunos programas
   simplemente asumen que sendmail se encuentra instalado y
   configurado dentro del sistema. Por esta razon varios MTAs
   alternativos proporcionan su propia implementacion de la interfaz
   de linea de comandos que posee sendmail; esto facilita que se
   puedan utilizar como sustitutos de sendmail sin mayores
   dificultades.

   Por lo tanto si desea utilizar un agente de transporte de correo
   alternativo debe asegurarse de que todo software que intente
   ejecutar binario de sendmail estandar, /usr/bin/sendmail,
   realmente ejecute el nuevo MTA en su lugar. Por fortuna FreeBSD
   proporciona un sistema llamado mailwrapper(8) que realiza
   precisamente esta tarea.

   Cuando sendmail esta funcionando se debe localizar algo como lo
   siguiente dentro del fichero /etc/mail/mailer.conf:

 sendmail         /usr/libexec/sendmail/sendmail
 send-mail       /usr/libexec/sendmail/sendmail
 mailq           /usr/libexec/sendmail/sendmail
 newaliases      /usr/libexec/sendmail/sendmail
 hoststat        /usr/libexec/sendmail/sendmail
 purgestat       /usr/libexec/sendmail/sendmail

   Esto significa que cuando cualquiera de estos comandos (por
   ejemplo sendmail mismamente) se ejecutan el sistema ejecutara en
   su lugar una copia del el sistema ejecuta en su lugar una copia
   del " mailwrapper" denominada sendmail que chequea el fichero
   mailer.conf y ejecuta /usr/libexec/sendmail/sendmail. Este sistema
   permite cambiar de una forma sencilla los binarios que se ejecutan
   realmente cuando se invocan las funciones de sendmail.

   Si se quiere que ejecutar
   /usr/local/supermailer/bin/sendmail-compat en lugar de sendmail se
   puede cambiar el fichero /etc/mail/mailer.conf para que contenga
   lo siguiente:

 sendmail         /usr/local/supermailer/bin/sendmail-compat
 send-mail       /usr/local/supermailer/bin/sendmail-compat
 mailq           /usr/local/supermailer/bin/mailq-compat
 newaliases      /usr/local/supermailer/bin/newaliases-compat
 hoststat        /usr/local/supermailer/bin/hoststat-compat
 purgestat       /usr/local/supermailer/bin/purgestat-compat

     --------------------------------------------------------------

  27.4.5. Ultimos Pasos

   Una vez que todo estaconfigurado a su gusto hay que matar los
   procesos de sendmail que ya no se necesitan y ejecutar los
   procesos pertenecientes al nuevo software de MTA, o utilizar la
   opcion mas sencilla: reiniciar la maquina. Reinicar la maquina nos
   brinda la oportunidad de comprobar que se ha configurado
   correctamente el arranque del sistema para que ejecute de forma
   automatica el nuevo MTA.

     --------------------------------------------------------------

27.5. Depuracion de Problemas

   27.5.1. ?Por que tengo que utilizar el FQDN para las maquinas de
   mi organizacion?

   27.5.2. sendmail dice "mail loops back to myself" (el correo
   vuelve a mis manos)

   27.5.3. ?Como puedo ejecutar un servidor de correo utilizando una
   maquina que se conecta a internet mediante modem analogico
   (dial-up) ?

   27.5.4. ?Por que me siguen saliendo mensajes de error del tipo
   "Relaying Denied" cuando se trata de enviar correo proveniente de
   otras maquinas?

   27.5.1. ?Por que tengo que utilizar el FQDN para las maquinas de
   mi organizacion?

   Probablemente se deba a que la maquina de correo se encuentra en
   un dominio diferente; si por ejemplo la maquina de correo se
   encuentra en foo.bar.edu y se desea alcanzar una maquina llamada
   mumble en el dominio bar.edu se tiene que referir a ella mediante
   un nombre de dominio completo ("fully-quailified domain name" o
   FQDN), en este caso mumble.bar.edu en lugar de referirse a ella
   simplemente como mumble.

   Tradicionalmente, la referencia incompleta era posible utilizando
   "resolvers" de BSD BIND. No obstante la version de BIND que en la
   actualidad se ofrece con FreeBSD ya no permite por defecto el uso
   de dichas abreviaturas salvo para aquellas maquinas que pertenecen
   al dominio al que su sistema pertenezca. Una maquina como mumble
   sera buscada como mumble.foo.bar.edu o la busqueda sera
   redireccionada al servidor de dominio raiz del DNS.

   Esto es distinto a lo que ocurria en versiones anteriores de BIND,
   donde la busqueda se producia a traves de mumble.bar.edu y de
   mumble.edu. Se recomienda consultar a la RFC 1535 para conocer el
   motivo que se considerara una practica erronea o incluso un
   agujero de seguridad.

   Una buena solucion a este problema puede ser incluir la siguiente
   linea

 search foo.bar.edu bar.edu

   en lugar de

 domain foo.bar.edu

   dentro del fichero /etc/resolv.conf. No obstante se debe asegurar
   de que el orden de busqueda no se expande mas alla del "limite
   entre la administracion local y la administracion publica", tal y
   como se le denomina en la RFC 1535.

   27.5.2. sendmail dice "mail loops back to myself" (el correo
   vuelve a mis manos)

   Esta pregunta se responde en las FAQ de sendmail de la siguiente
   forma:

 Estoy obteniendo los siguientes mensajes de error:

 553 MX list for domain.net points back to relay.domain.net
 554 <user@domain.net>... Local configuration error

 ?Como puedo solucionar esto?

 Usted ha especificado que el correo para el dominio (por ejemplo,
 para el dominio dominio.net) sea reenviado a una maquina determinada
 (en este caso relay.dominio.net), para lo que se utiliza un registro
 de DNS de tipo MX, pero la maquina que actua de relay no se
 reconoce a si misma como perteneciente al dominio dominio.net. 
 Se debe anadir dominio.net al fichero /etc/mail/local-host-names,
 que recibe el nombre de /etc/sendmail.cw en versiones de sendmail previas
 a la 8.10.  Se puede utilizar la macro FEATURE(use_cw_file) para indicar
 donde se encuentra el fichero local-host-names; tambien se
 puede anadir "Cw dominio.net" directamente
 al fichero /etc/mail/sendmail.cf
         

   Las FAQ de sendmail se pueden encontrar en
   http://www.sendmail.org/faq/ y son de lectura obligada si se
   quiere depurar el comportamiento y la configuracion de sendmail.

   27.5.3. ?Como puedo ejecutar un servidor de correo utilizando una
   maquina que se conecta a internet mediante modem analogico
   (dial-up) ?

   Se quiere conectar una maquina FreeBSD dentro de una LAN a
   Internet. La maquina FreeBSD sera una pasarela de correo para
   dicha LAN. La conexion mediante PPP no es dedicada.

   Existen al menos dos formas distintas de hacerlo. Una de ellas
   consiste en utilizar UUCP.

   Otra forma consiste en hacerse con un servidor de internet a
   tiempo completo para proporcionar servicios de agente de
   transporte secundario para nuestro dominio. Si por ejemplo el
   dominio de nuestra compania es ejemplo.com, nuestro proveedor de
   acceso a internet puede instalar lo siguiente en el DNS:

 ejemplo.com.          MX        10      ejemplo.com.
                       MX        20      ejemplo.net.

   Notese que el agente de correo primario es nuestro dominio,
   ejemplo.com, y ademas se encuentra configurado un agente de
   transporte secundario en la maquina ejemplo.net. En este caso
   solamente se debe especificar una maquina como receptor final de
   correo (anadiendo Cw ejemplo.com) al fichero /etc/mail/sendmail.cf
   de la maquina example.com)

   Cuando el sendmail que esta enviando el correo trata de entregar
   dicho correo primero intentara conectarse con nosotros
   (ejemplo.com) utilizando el enlace de modem. Lo mas probable es
   que la operacion termine despues de un tiempo de espera debido a
   que el enlace modem este caido. La aplicacion sendmail
   automaticamente entregara el correo al servidor especificado como
   agente de transporte de correo secundario (segundo registro MX),
   es decir, entregara el correo a nuestro proveedor de servicios de
   internet (ejemplo.net). El sitio MX secundario tratara de
   conectarse con nuestra maquina de una forma periodica con el
   objeto de entregar el correo a la maquina que actua como agente
   servidor de correo primario (ejemplo.com).

   Puede ser de mucha utilidad un script de "login" como el que se
   muestra a continuacion:

 #!/bin/sh
 # Ponme en /usr/local/bin/pppmiconexion
 ( sleep 60 ; /usr/sbin/sendmail -q ) &
 /usr/sbin/ppp -direct pppmiconexion

   Si vamos a crear un script de "login" separado para un usuario
   determinado se puede utilizar sendmail -qRejemplo.com en lugar del
   script anterior. Esto obliga a que se procesen de forma inmediata
   todos los correos que se encuentren en la cola de ejemplo.com.

   Vamos a dar una vuelta mas de tuerca a la situacion:

   Mensaje robado a la lista de correo de Proveedores de Servicios de
   Internet en FreeBSD.

 > Nosotros proporcionamos servicio de MX secundario a un cliente nuestro.
 > El cliente se conecta a nuestro servidor varias veces al dia
 > de  forma automatica para recoger sus correos para almacenarlos en
 > su servidor MX primario (nosotros no llamamos a su organizacion
 > justo cuando nos llega un correo suyo).
 > Nuestro sendmail envia la cola de correos cada 30 minutos. En
 > estos momentos nuestro cliente tiene que estar al menos 30 minutos
 > conectado para asegurarnos de que todo su correo ha sido enviado al
 > servidor MX primario.
 >
 > ?Existe algun comando que permita indicar a sendmail que
 > envie todos los correos de la cola cuando quiera el cliente?
 > El cliente no tiene permisos de superusuario en la maquina que
 > alberga nuestro agente de transporte, por supuesto.

 En la seccion de "privacy flags" del fichero sendmail.cf
 existe una definicion como esta:
 Opgoaway,restrictqrun

 Basta con eliminar restrictqrun para permitir que usuarios sin permisos de
 superusuario arranquen el procesamiento de la cola.
 Seria conveniente ademas que reordenaran los registros MX.
 Nosotros somos el primer MX para nuestros clientes.
 Ademas de esto hay que especificar:

 # Si somos el mejor MX para una determinada maquina, intenta
 # utilizarnos directamente en vez de generar un error de
 # configuracion local.
 OwTrue

 en el archivo de configuracion de sendmail.
 Mediante la configuracion anterior,
 una organizacion remota entregara sus correos directamente a
 usted, sin necesidad de intentar conectarse primero a traves de
 la conexion del cliente.  La etiqueta "OwTrue" se necesita para evitar
 que sendmail genere un mensaje de error. 
 A continuacion ustedes se encargan de entregar el
 correo a su(s) respectivo(s) cliente(s) tal como vienen haciendo.

 Esta configuracion solo funciona para
 "maquinas individuales",
 de tal forma que se necesita que el cliente especifique su servidor de correo
 mediante entradas de tipo A en el DNS.  En concreto se necesita una entrada de
 tipo A en el DNS para el dominio del cliente ("cliente.com").

   27.5.4. ?Por que me siguen saliendo mensajes de error del tipo
   "Relaying Denied" cuando se trata de enviar correo proveniente de
   otras maquinas?

   En las instalaciones del sistema FreeBSD por defecto sendmail se
   configura para enviar correo solamente desde la maquina en la cual
   se esta ejecutando. Por ejemplo si un servidor POP esta disponible
   los usuarios seran capaces de consultar su correo desde la
   universidad, el trabajo u otras localizaciones remotas, pero
   dichos usuarios podran enviar correo desde dichas ubicaciones. Es
   habitual que unos instantes despues del envio del correo dichos
   usuarios reciban un mensaje proveniente del MAILER-DAEMON con un
   error como "5.7 Relaying Denied".

   Existen varias formas de solventar este problema. La mas sencilla
   consiste en escribir la direccion IP de su proveedor de servicios
   dentro del fichero /etc/mail/relay-domains. Una forma rapida de
   hacerlo seria:

 # echo "un.isp.ficticio.com" > /etc/mail/relay-domains

   Despues de crear o editar dicho fichero se debe reiniciar
   sendmail. Esto funciona perfectamente si usted es el administrador
   del servidor y no desea enviar correo localmente o si prefiere
   utilizar un cliente de correo o cualquier otro sistema en otra
   maquina distinta a la que alberga el servidor de correo. Es muy
   util sobre todo cuando solamente se tienen una o dos direcciones
   de correo eletronico. Si hay en liza un gran numero de direcciones
   de correo, edite el fichero anterior con su editor de texto
   favorito y anada uno a uno los correspondientes dominios.

 un.isp.ficticio.com
 otro.isp.ficticio.net
 y.otro.isp.ficticio.org
 www.ejemplo.org

   Ahora, cualquier correo enviado a traves de su sistema por
   cualquier maquina que se encuentre en este fichero (siempre y
   cuando el usuario tenga una cuenta en nuestro sistema) podra ser
   enviado con exito. Es una manera elegante de permitir a los
   usuarios enviar correo eletronico desde nuestro servidor de correo
   sin permitir al resto del mundo que haga lo mismo (lo que se
   conoce como SPAM).

     --------------------------------------------------------------

27.6. Conceptos Avanzados

   La siguiente seccion trata conceptos mas especificos relacionados
   con la configuracion del correo y la implantacion del servicio de
   correo en una organizacion.

     --------------------------------------------------------------

  27.6.1. Configuracion Basica

   Por defecto debemos ser capaces de enviar correo a maquinas
   externas, siempre y cuando tengamos nuestro /etc/resolv.conf bien
   configurado o ejecutemos nuestro propio servidor de nombres. Si
   queremos que el correo para nuestra maquina se nos entregue en
   nuestra propia maquina, es decir, a nuestro propio sendmail, en
   lugar de tener que ir a recogerlo al servidor de correo de nuestra
   organizacion, podemos usar dos metodos:

     * Ejecutar nuestro propio servidor de nombres y comprar nuestro
       propio dominio. Por ejemplo FreeBSD.org

     * Conseguir la entrega de correo directa hacia nuestra maquina.
       Esto se logra entregando el correo a la direccion IP que se
       asocia al nombre de DNS de nuestra maquina. Por ejemplo
       ejemplo.FreeBSD.org.

   Independientemente de la opcion elegida para tener entrega directa
   en nuestra maquina debemos poseer una direccion IP estatica (a
   diferencia de las direcciones dinamicas, que son utilizadas en
   configuraciones donde se utiliza el protocolo PPP). Si nos
   encontramos detras de un cortafuegos se debe permitir el trafico
   SMTP (puerto 25) hacia nuestra maquina. Si ademas queremos recibir
   correo directamente en nuestra maquina se deben cumplir los
   siguientes requisitos:

     * Asegurar que el registro MX de menor numeracion de nuestro DNS
       apunta a la direccion IP de nuestra maquina.

     * Asegurar que no existe ninguna entrada MX en nuestro DNS para
       nuestra maquina. Es decir, mientras que el registro MX del
       punto anterior hace referencia al dominio administrativo que
       gestionamos con nuestro servidor de nombres, en este apartado
       se quiere destacar que no debe existir ningun registro MX
       especifico para el nombre concreto de nuestra maquina.

   Cumpliendo las dos puntualizaciones anteriores podemos recibir
   correo electronico mediante entrega directa en nuestra maquina.

   Por ejemplo:

 # hostname
 ejemplo.FreeBSD.org
 # host ejemplo.FreeBSD.org
 ejemplo.FreeBSD.org has address 204.216.27.XX

   Si se observa esta configuracion la entrega directa de correo para
   <su_login@ejemplo.FreeBSD.org> deberia funcionar sin problemas
   (suponiendo que sendmail se esta ejecutando correctamente en
   ejemplo.FreeBSD.org).

   Si en lugar de lo anterior ve algo como esto:

 # host ejemplo.FreeBSD.org
 ejemplo.FreeBSD.org has address 204.216.27.XX
 ejemplo.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.org

   Todos los correos enviados a nuestro host (ejemplo.FreeBSD.org)
   seran recogidos por hub bajo el mismo nombre de usuario en lugar
   de ser enviados directamente a nuestra maquina.

   La informacion anterior se gestiona utilizando el servidor de DNS.
   El registro de DNS que transporta la informacion de encaminamiento
   de correo eletronico es el registro Mail eXchange. Si no existe
   ningun registro MX el correo se entregara a la direccion IP que se
   obtenga de resolver el nombre de dominio que se encuentre a
   continuacion del nombre de usuario en la direccion de correo de
   destino (esto es, (despues de la @).

   En un cierto momento la entrada MX para freefall.FreeBSD.org tenia
   este aspecto:

 freefall                MX      30      mail.crl.net
 freefall                MX      40      agora.rdrop.com
 freefall                MX      10      freefall.FreeBSD.org
 freefall                MX      20      who.cdrom.com

   Como se puede observar, freefall tenia varias entradas MX. El
   numero de MX mas bajo es la maquina que recibe correo directamente
   si se encuentra disponible; si dicha maquina no esta accesible por
   algun motivo las otras maquinas (llamadas tambien "MXs de backup")
   aceptaran los mensajes temporalmente, y los transmitiran de nuevo
   cuando alguna maquina perteneciente a alguna entrada MX de
   numeracion mas baja se encuentre disponible y el proceso se
   repetira hasta que se alcance la maquina que tenga el registro MX
   mas bajo.

   Las organizaciones donde residen los servidores (MX) de backup
   deberian poseer acceso a internet de una forma independiente para
   minimizar el riesgo de perdida de conectividad. Nuestro ISP o
   cualquier otra organizacion independiente deberia poder
   proporcionarnos este servicio sin problemas.

     --------------------------------------------------------------

  27.6.2. Correo para Nuestro Dominio

   Para establecer un "mailhost" (servidor de correo) en nuestra
   organizacion debemos ser capaces de redirigir el correo destinado
   a cualquier maquina de nuestra organizacion hacia nuestro servidor
   de correo. Basicamente queremos "reclamar" como nuestro cualquier
   correo destinado a cualquier maquina de nuestro dominio (en este
   caso *.FreeBSD.org) y desviarlo a nuestro servidor de tal forma
   que los usuario lean su correo utilizando nuestra maquina
   servidora.

   Para hacer las cosas lo mas sencillas posible se debe crear una
   cuenta de usuario (con el mismo nombre de usuario) tanto en el
   servidor de correo como en la maquina del usuario o destinatario
   final del correo. adduser(8) puede usarse para ello.

   El servidor de correo debe funcionar como el agente de transporte
   predeterminado para todas las maquinas de nuestra organizacion.
   Esto se realiza mediante la siguiente configuracion del DNS:

 ejemplo.FreeBSD.org     A       204.216.27.XX           ; Workstation
                         MX      10 hub.FreeBSD.org      ; Mailhost

   Esta configuracion redirigira el correo para cualquier estacion de
   trabajo hacia nuestro servidor de correo sin que tengan
   importancia las direcciones IP asignadas mediante el registro de
   tipo A. Recordemos que el correo siempre se encamina utilizando
   primero los registros de tipo MX.

   Normalmente no podremos realizar esta configuracion salvo que
   estemos ejecutando nuestro propio servidor de DNS para nuestro
   dominio. Si no es el caso y no es posible ejecutar nuestro propio
   servidor de DNS debemos comunicarnos con nuestro proveedor de
   servicios o con quien pueda proporcionarnos servicio de DNS y
   solicitarle una modificacion como la anterior.

   Si ademas ofrecemos servicios de alojamiento virtual de correo la
   siguiente informacion puede resultar util. Asumiremos que tenemos
   un cliente con su propio dominio, por ejemplo cliente1.org y
   queremos que todo el correo enviado a cliente1.org sea redirigido
   hasta nuestro servidor de correo, mail.nuestroservidor.com. La
   entrada necesaria en el DNS deberia ser la siguiente:

 cliente1.org            MX      10      mail.nuestroservidor.com

   No necesitamos ningun registro de tipo A para cliente1.org si
   solamente queremos gestionar el correo para ese dominio.

     Nota: Tenga en cuenta que un ping a cliente1.org no funcionara a
     menos que exista un registro de tipo A para dicha maquina.

   La ultima cosa que debemos realizar en nuestro servidor de correo
   es comunicar a sendmail para que dominios y/o maquinas debe
   aceptar correo. Existen varias formas en las que se puede realizar
   esta tarea. Cualquiera de las siguiente funcionara:

     * Anadir las maquinas deseadas al fichero
       /etc/mail/local-host-names si se esta utlizando la macro
       FEATURE(use_cw_file). Si se esta utilizando una version de
       sendmail anterior a la 8.10 el fichero que se debe utilizar es
       /etc/sendmail.cw.

     * Anadir la linea Cwsu.servidor.com al fichero /etc/sendmail.cf
       o /etc/mail/sendmail.cf si se esta utilizando una version de
       sendmail posterior a la version 8.10.

     --------------------------------------------------------------

27.7. SMTP con UUCP

   La configuracion de sendmail que se proporciona con la
   distribucion de FreeBSD esta disenada para organizaciones que se
   conectan directamente a internet. Las organizaciones que deseen
   enviar y recibir sus correos utilizando UUCP deben instalar otro
   fichero de configuracion para sendmail.

   El ajuste de forma manual del archivo /etc/mail/sendmail.cf es un
   tema para expertos. La version 8 de sendmail genera ficheros de
   configuracion mediante el preprocesador m4(1), gracias al que las
   opciones de configuracion se pueden escribir utilizando un nivel
   de abstraccion mayor. Los archivos de configuracion de m4(1) se
   pueden encontrar en /usr/src/usr.sbin/sendmail/cf.

   Si no se instalo el sistema base con todas las fuentes el conjunto
   de ficheros de configuracion de sendmail se puede obtener a partir
   de un paquete de fuentes determinado. Suponiendo que tengamos el
   CDROM con el codigo fuente de FreeBSD montado se puede ejecutar:

 # cd /cdrom/src
 # cat scontrib.?? | tar xzf - -C /usr/src/contrib/sendmail

   Este comando extrae solamente unos pocos cientos de kilobytes. El
   fichero README que hay en el directorio cf puede servirle como una
   introduccion basica a la configuracion mediante m4(1).

   La mejor forma de soportar la entrega de correo mediante UUCP es
   utilizando la caracteristica mailertable. Esta caracteristica crea
   una base de datos que sendmail utiliza para tomar decisiones de
   encaminamiento.

   En primer lugar creamon el fichero .mc. El directorio
   /usr/src/usr.sbin/sendmail/cf/cf alberga varios ejemplos del
   mismo. Suponiendo que nuestro fichero configuracion se llama
   foo.mc para convertir dicho archivo en un fichero sendmail.cf
   valido basta con ejecutar lo siguiente:

 # cd /usr/src/usr.sbin/sendmail/cf/cf
 # make foo.cf
 # cp foo.cf /etc/mail/sendmail.cf

   Un fichero .mc suele tener este aspecto:

 VERSIONID(`Su numero de version') OSTYPE(bsd4.4)

 FEATURE(accept_unresolvable_domains)
 FEATURE(nocanonify)
 FEATURE(mailertable, `hash -o /etc/mail/mailertable')

 define(`UUCP_RELAY', su.relay.uucp)
 define(`UUCP_MAX_SIZE', 200000)
 define(`confDONT_PROBE_INTERFACES')

 MAILER(local)
 MAILER(smtp)
 MAILER(uucp)

 Cw    alias.de.su.servidor
 Cw    nombredesunodouucp.UUCP

   Las lineas que contienen accept_unresolvable_domains, nocanonify,
   y confDONT_PROBE_INTERFACES prohiben la utilizacion del DNS
   durante la entrega de correo. La clausula UUCP_RELAY es necesaria
   para soportar entrega mediante UUCP. Lo unico que hay que hacer es
   escribir un nombre de maquina en ese punto. Dicha maquina debe ser
   capaz de gestionar las direcciones del pseudo-dominio .UUCP; en la
   mayoria de los casos se escribe en este punto el nombre de la
   maquina perteneciente al proveedor de servicios que hace de relay.

   Una vez que tenemos esto configurado se necesita un fichero
   /etc/mail/mailertable. Si solamente tenemos un enlace con el
   exterior, que usamos para todos nuestro correos, basta una
   configuracion como la que se muestra a continuacion:

 #
 # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
 .                             uucp-dom:su.relay.uucp

   Un ejemplo mas complejo puede parecerse al siguiente:

 #
 # makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
 #
 horus.interface-business.de   uucp-dom:horus
 .interface-business.de        uucp-dom:if-bus
 interface-business.de         uucp-dom:if-bus
 .heep.sax.de                  smtp8:%1
 horus.UUCP                    uucp-dom:horus
 if-bus.UUCP                   uucp-dom:if-bus
 .                             uucp-dom:

   Las primeras tres lineas se encargan de manejar casos especiales
   en los que el correo dirigido directamente al dominio no se envia
   a la ruta por defecto sino a algun vecino UUCP para acortar el
   numero de saltos involucrados en la entrega de dichos correos. La
   siguiente linea gestiona el correo para el dominio ethernet local,
   el cual puede ser entregado utilizando SMTP. Finalmente los
   vecinos UUCP se mencionan en la notacion de pseudo-dominio .UUCP
   para permitir que un vecino UUCP receptor de correo pueda
   sobreescribir las reglas por defecto. La ultima linea siempre es
   un punto; se asocia con cualquier otra cosa que no ha sido tratada
   en reglas anteriores y donde se realiza entrega UUCP a un vecino
   UUCP que sirve como pasarela de correo universal para todo el
   mundo. Todos los nombres de maquinas bajo la clave uucp-dom: deben
   ser vecinos UUCP validos, lo cual se puede verificar utilizando el
   comando uuname.

   Recuerde que este fichero debe convertirse en una base de datos
   DBM antes de que usarse. El comando que se utiliza para realizar
   esta tarea se suele especificar como un comentario al principio
   del fichero mailertable. Cada vez que se modifique el fichero
   mailertable se debe ejecutar dicho comando.

   Un consejo final: si dudamos sobre una determinada ruta de
   encaminamiento de correo se puede ejecutar sendmail con el
   parametro -bt. Este parametro ejecuta sendmail en modo prueba de
   direcciones; simplemente basta con escribir 3,0 seguido por la
   direccion de correo de la que queremos comprobar su correcto
   encaminamiento. La ultima linea nos dice el agente de correo
   interno que se utiliza, la maquina de destino con que el agente
   sera invocado y la direccion (posiblemente traducida) de correo.
   Se puede abandonar este modo de funcionamiento escribiendo Ctrl+D.

 % sendmail -bt
 ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
 Enter <ruleset> <address>
 > 3,0 prueba@ejemplo.com
 canonify           input: foo @ example . com
 ...
 parse            returns: $# uucp-dom $@ su.relay.uucp $: prueba < @ ejemplo . com . >
 > ^D

     --------------------------------------------------------------

27.8. Configuracion para solamente enviar correo

   Escrito por Bill Moran.

   Existen multitud de casos en los que puede bastarnos con enviar
   nuestro correo a traves de una pasarela o relay. He aqui algunos
   de ellos:

     * Nuestra computadora es una maquina de escritorio, pero
       queremos ser capaces de utilizar programas como send-pr(1).
       Para ello se deberia utilizar el relay de nuestro ISP.

     * Nuestra computadora es un servidor que no gestiona correo de
       forma local, si no que necesita pasar todos los correos
       recibidos una pasarela que se encarga de su procesamiento y
       entrega final.

   Casi cualquier MTA es capaz de actuar como pasarela o relay. Por
   desgracia configurar un MTA para que solo gestione correo saliente
   puede ser muy complicado. Programas del estilo de sendmail y
   postfix son demasiado pesados para realizar solamente esta tarea.

   Si ademas estamos utilizando un servicio de acceso a internet
   tipico nuestro contrato puede prohibir explicitamente la ejecucion
   de un servidor de correo (o los puertos pueden estar filtrados).

   La forma mas sencilla de utilizar un servicio de pasarela es
   mediante la instalacion del port mail/ssmtp. Basta con ejecutar el
   siguiente comando como root:

 # cd /usr/ports/mail/ssmtp
 # make install replace clean

   Una vez que ha sido instalado mail/ssmtp podemos configurarlo
   mediante un fichero de solo cuatro lineas ubicado en
   /usr/local/etc/ssmtp/ssmtp.conf:

 root=sudireccionrealdecorreo@ejemplo.com
 mailhub=mail.ejemplo.com
 rewriteDomain=ejemplo.com
 hostname=_HOSTNAME_

   Debemos asegurarnos de que se utiliza una direccion de correo real
   para root. Se debe introducir nuestra pasarela de correo en lugar
   de mail.ejemplo.com (algunos ISP llaman a la pasarela "servidor de
   correo saliente" o simplemente "servidor SMTP").

   Debemos asegurarnos de que se desactiva sendmail mediante
   sendmail_enable="NONE" en /etc/rc.conf.

   mail/ssmtp acepta algunas otras opciones. Consulte el fichero de
   ejemplo que encontrara en /usr/local/etc/ssmtp; consulte tambien
   la pagina de manual de ssmtp, en la que hay mas ejemplos e
   informacion al respecto.

   Ejecutar ssmtp de esta forma permite que cualquier software de
   nuestra computadora que necesite enviar correo funcione sin
   problemas y a la vez poder cumplir con las normas estipuladas en
   el contrato con nuestro ISP. Al mismo tiempo evitamos el uso de
   nuestro servidor de correo por parte de " spammers".

     --------------------------------------------------------------

27.9. Utilizacion del correo con una conexion mediante modem analogico
(dial-up)

   Si se dispone de una direccion IP privada no es necesario realizar
   ningun ajuste a partir de la configuracion por defecto. Basta con
   asignar como nombre de nuestra maquina el nombre que tenemos
   registrado en el DNS y sendmail se encargara del resto.

   Por otra parte si utilizamos una conexion temporal a internet
   mediante PPP y se nos asigna una direccion IP de forma dinamica,
   lo mas normal es tener nuestras carpetas de correo alojadas en el
   servidor de correo de nuestro proveedor de servicios. Supongamos
   que el dominio de nuestro ISP es ejemplo.net y que nuestro nombre
   de usuario es usuario; ademas hemos llamado a nuestra user,
   ademas, hemos llamado a nuestra maquina bsd.home, y nuestro ISP
   nos ha comunicado que debemos utilizar como pasarela la maquina
   relay.ejemplo.net.

   Para recuperar correo de nuestra carpeta de correo se debe
   instalar un agente de recuperacion automatica de correo. fetchmail
   es una buena eleccion puesto que permite utilizar varios
   protocolos. Este programa esta disponible como un paquete y
   tambien desde la coleccion de ports (mail/fetchmail). Normalmente
   nuestro ISP proporciona POP POP. Si utilizamos ppp a nivel de
   usuario se puede recuperar automaticamente el correo cuando se
   establece la conexion ppp utilizando el fichero
   /etc/ppp/ppp.linkup:

 MYADDR:
 !bg su user -c fetchmail

   Si utilizamos sendmail (como se muestra mas adelante) para
   entregar correo a cuentas remotas probablemente queramos que
   sendmail procese nuestras colas de correo tan pronto como nuestra
   conexion de internet se establezca. Para ello escriba el siguiente
   comando tras el comando de fetchmail que hemos escrito antes en el
   fichero /etc/ppp/ppp.linkup:

   !bg su user -c "sendmail -q"

   Asumiendo que tenemos una cuenta para el usuario usuario en
   bsd.home. En el directorio "home" del usuario usuario en la
   maquina bsd.home debemos crear un fichero .fetchmailrc con el
   siguiente contenido:

 poll ejemplo.net protocol pop3 fetchall pass Secr3To

   Este fichero debe tener permisos de lectura solo para el propio
   dueno ya que contiene la contrasena de acceso a nuestra cuenta de
   POP en nuestro ISP ( Secr3To).

   Para poder enviar correo con la cabecera from: correcta, debemos
   decir a sendmail que utilice usuario@ejemplo.net en vez de
   usuario@bsd.home. Siguiendo con nuestro ejemplo es necesario
   decirle a sendmail que envie todo el correo a traves de la
   pasarela relay.ejemplo.net.

   El siguiente fichero de configuracion .mc debe ser suficiente para
   cumplir con las anteriores tareas:

 VERSIONID(`bsd.home.mc version 1.0')
 OSTYPE(bsd4.4)dnl
 FEATURE(nouucp)dnl
 MAILER(local)dnl
 MAILER(smtp)dnl
 Cwlocalhost
 Cwbsd.home
 MASQUERADE_AS(`ejemplo.net')dnl
 FEATURE(allmasquerade)dnl
 FEATURE(masquerade_envelope)dnl
 FEATURE(nocanonify)dnl
 FEATURE(nodns)dnl
 define(`SMART_HOST', `relay.ejemplo.net')
 Dmbsd.home
 define(`confDOMAIN_NAME',`bsd.home')dnl
 define(`confDELIVERY_MODE',`deferred')dnl

   En la seccion anterior se explica como convertir este fichero .mc
   en un fichero de configuracion para sendmail, sendmail.cf. No
   debemos olvidar reiniciar sendmail despues de mofidificar el
   fichero sendmail.cf.

     --------------------------------------------------------------

27.10. Autentificacion utilizando SMTP

   Escrito por James Gorham.

   La autentificacion mediante SMTP puede proporcionarnos diversas
   ventajas. Anade una capa adicional de seguridad a a sendmail y
   ademas proporciona a los usuarios moviles (usuarios que cambian de
   maquina) la posibilidad de mantener el mismo servidor de correo
   sin necesidad de reconfigurar sus agentes de usuario de correo
   cada vez que se trasladan.

    1. Instalar security/cyrus-sasl desde los ports. Se puede
       encontrar dicho port en security/cyrus-sasl.
       security/cyrus-sasl posee varias opciones en tiempo de
       compilacion pero para el metodo en particular que se va a
       explicar en esta seccion basta con asegurarse de seleccionar
       la opcion pwcheck.

    2. Despues de instalar security/cyrus-sasl, edite
       /usr/local/lib/sasl/Sendmail.conf (o creelo si no existe) y
       anada la siguiente linea:

 pwcheck_method: passwd

       Este metodo activa la autentificacion de sendmail contra
       nuestra base de datos de FreeBSD, passwd. Esto nos evita el
       problema de tener que crear un nuevo conjunto de usuarios y
       contrasenas para cada usuario que necesite validarse mediante
       SMTP y ademas nos permite mantener el mismo "login" y
       contrasena que los usuarios utilizan para acceder a sus
       cuentas para el acceso al correo electronico.

    3. Editar/etc/make.conf y anadir las siguientes lineas:

 SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
 SENDMAIL_LDFLAGS=-L/usr/local/lib
 SENDMAIL_LDADD=-lsasl

       Estas lineas proporcionan a sendmail las opciones de
       configuracion necesarias para enlazar con cyrus-sasl en tiempo
       de compilacion. Debemos asegurarnos de que cyrus-sasl ha sido
       instalado correctamente recompilar sendmail.

    4. Recompile sendmail utilizando el siguiente comando:

 # cd /usr/src/usr.sbin/sendmail
 # make cleandir
 # make obj
 # make
 # make install

       La compilacion de sendmail no deberia dar problemas siempre y
       cuando /usr/src no haya cambiado sustancialmente y siempre y
       cuando las bibliotecas compartidas necesarias se encuentren
       disponibles.

    5. Una vez que sendmail se ha compilado y reinstalado con
       correctamente debemos editar el fichero /etc/mail/freebsd.mc
       (o el fichero que se utilice como .mc de referencia. Hay
       administradores que escogen utilizar la salida de hostname(1)
       como el nombre del fichero .mc que se utiliza para la
       configuracion de sendmail por motivos de uniformidad ). Anada
       las siguientes lineas a dicho fichero:

 dnl set SASL options
 TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
 define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
 define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnl

       Estas opciones configuran los distintos metodos de que dispone
       sendmail para validar a los usuarios de correo. Si se desea
       utilizar otro metodo distinto a pwcheck por favor consulte la
       documentacion.

    6. Para terminar ejecutamos make(1) mientras nos encontramos
       dentro de /etc/mail. Este comando trata el fichero .mc y crea
       el fichero .cf correspondiente (con el mismo nombre que el
       anterior pero terminado en .cf). A continuacion se utiliza el
       comando make install restart, el cual copia el fichero .cf
       recien generado al fichero sendmail.cf y a continuacion
       reinicia sendmail. Para mas informacion sobre este proceso
       puede consultarse el contenido de /etc/mail/Makefile.

   Si todo lo anteriormente comentado ha funcionado correctamente
   deberiamos ser capaces de introducir la informacion de nuestro
   "login" en nuestro cliente de correo y enviar un mensaje de
   prueba. Para investigar mas a fondo estos temas se puede habilitar
   la opcion LogLevel de sendmail al valor 13 y observar
   detenidamente el archivo /var/log/maillog en busca de posibles
   mensajes de error.

   Puede ser necesario anadir las siguientes lineas al fichero
   /etc/rc.conf de modo que el servicio explicado en esta seccion se
   encuentre disponible automaticamente desde el arranque:

 sasl_pwcheck_enable="YES"
 sasl_pwcheck_program="/usr/local/sbin/pwcheck"

   Esto permite que la inicializacion de SMTP_AUTH se produzca
   durante el arranque del sistema.

   Para mas informacion por favor visite la pagina autentificacion
   SMTP de sendmail.

     --------------------------------------------------------------

27.11. Agente de Correo de Usuario

   Escrito por Marc Silver.

   Un agente de correo de usuario (MUA en ingles Mail User Agent) es
   una aplicacion que se utiliza para enviar y recibir correo. Coomo
   el correo electronico esta en constante evolucion y cada vez se
   vuelve mas complejo y con mas opciones, los MUAs son cada vez mas
   complejos y potentes. Esto permite a los usuarios disponer de
   mayor flexibilidad y funcionalidad. FreeBSD admite para muchisimos
   agentes de correo de usuario, todos los cuales pueden instalarse
   desde los Ports. Los usuarios pueden elegir entre lientes de
   correo con interfaz grafica como evolution o balsa o entre
   clientes basados en consola como mutt, pine o mail, e incluso
   utilizar interfaces web.

     --------------------------------------------------------------

  27.11.1. mail

   mail(1) es el agente de correo de usuario (MUA) que viene por
   defecto con FreeBSD. Es un MUA de consola que ofrece toda la
   funcionalidad basica necesaria para enviar y recibir correos,
   aunque resulta limitado limitado en su capacidad para manejar
   adjuntos y solamente soporta carpetas de correo locales.

   Aunque mail no soporta de forma nativa la interaccion con
   servidores de correo mediante POP o IMAP estas carpetas de correo
   remotas pueden descargarse a un fichero mbox local utilizando una
   aplicacion de descarga como fetchmail, que se describe en este
   mismo capitulo en (Seccion 27.12).

   Para enviar y recibir correo eletronico basta con ejecutar el
   comando mail. Veamos un ejemplo:

 % mail

   El contenido de la carpeta de usuario en el directorio /var/mail
   se leen automaticamente. Si la carpeta se encuentra vacia la
   aplicacion termina su ejecucion con un mensaje que indica que no
   ha podido encontrar correo. Una vez que la carpeta ha sido leida
   la interfaz de la aplicacion entra en funcionamiento y se muestra
   por pantalla un listado de los mensajes recuperados. Los mensajes
   se numeran automaticamente y pueden leerse como se observa en el
   siguiente ejemplo:

 Mail version 8.1 6/6/93.  Type ? for help.
 "/var/mail/marcs": 3 messages 3 new
 >N  1 root@localhost        Mon Mar  8 14:05  14/510   "test"
  N  2 root@localhost        Mon Mar  8 14:05  14/509   "user account"
  N  3 root@localhost        Mon Mar  8 14:05  14/509   "sample"

   Los mensajes se pueden leer utilizando el comando t de mail
   escribiendo a continuacion el numero del mensaje que queremos
   leer. En este ejemplo vamos a leer el primer correo:

 & t 1
 Message 1:
 From root@localhost  Mon Mar  8 14:05:52 2004
 X-Original-To: marcs@localhost
 Delivered-To: marcs@localhost
 To: marcs@localhost
 Subject: test
 Date: Mon,  8 Mar 2004 14:05:52 +0200 (SAST)
 From: root@localhost (Charlie Root)

 This is a test message, please reply if you receive it.

   Como podemos observar en el ejemplo anterior el comando t muestra
   el contenido del correo eletronico con todas sus cabeceras. Para
   mostrar el listado con todos los correos de nuevo, se debe
   utilizar la tecla h.

   Si el correo eletronico requiere una contestacion se puede
   utilizar la aplicacion mail para responder utilizando la tecla R o
   r. La tecla R indica a mail que conteste solo al origen
   (remitente) del correo, mientras que la tecla r tanto al remitente
   a los otros usuarios receptores del mensaje original. Ademas ambos
   comandos se pueden ejecutar escribiendo a continuacion el numero
   que identifica al mensaje que se quiere responder. Tras esto la
   respuesta puede redactarse , y se debe indicar el final del
   mensaje mediante un punto (.) a continuacion de un salto de linea.
   Veamos un ejemplo:

 & R 1
 To: root@localhost
 Subject: Re: test

 Thank you, I did get your email.
 .
 EOT

   Para enviar nuevos correos eletronicos se debe utilizar la tecla m
   seguida de la direccion de de correo del destinatario. Se pueden
   especificar varios destinatarios de correo separando cada
   direccion de correo con una coma ( , ). El asunto del mensaje de
   correo se puede escribir a continuacion seguido por el cuerpo del
   mensaje. El final del mensaje se especifica como en el caso
   anterior, utilizando un . tras un saldo de linea y pulsando la
   tecla "enter".

 & mail root@localhost
 Subject: I mastered mail

 Now I can send and receive email using mail ... :)
 .
 EOT

   Mientras nos encontremos dentro de la mail el comando ? puede
   utilizarse para mostrar la ayuda en linea aunque la principal
   fuente de informacion detallda sobre esta aplicacion es la pagina
   man mail(1).

     Nota: Tal y como se ha dicho ya la aplicacion mail(1) no fue
     disenada originalmente para gestionar adjuntos, por lo que su
     forma de gestionarlos resulta ser extremadamente mala. MUA mas
     modernos como mutt gestionan los adjuntos de correo de una forma
     mucho mas inteligente. Si se desea utilizar el comando mail el
     port converters/mpack le puede resultar bastante util.

     --------------------------------------------------------------

  27.11.2. mutt

   mutt es un agente de correo de usuario pequeno pero muy potente,
   funcional y con excelentes caracteristicas; veamos algunas:

     * La habilidad de agrupar mensajes en hilos.

     * Soporte de PGP para cifradon y firma digital de correos
       eletronicos.

     * Soporte de tipos MIME.

     * Soporte de gestion de correo en formato Maildir.

     * Altamente configurable por el usuario.

   Toda estas caracteristicas hacen de mutt uno de los agentes de
   correo mas avanzados del momento. Consulte http://www.mutt.org
   para mas informacion sobre mutt.

   La version estable de mutt se puede instalar usando el port
   mail/mutt mientras que la version de desarrollo esta en
   mail/mutt-devel. Una vez que se ha instalado el port, mutt puede
   ejecutarse mediante el siguiente comando:

 % mutt

   mutt lee automaticamente el contenido de la carpeta de correo del
   usuario dentro del directorio /var/mail y muestra por pantalla su
   contenido. Si el directorio esta vacio mutt quedara a la espera de
   los comandos que pueda pasarle el usuario. En el ejemplo que se
   muestra a continuacion puede verse como mutt facilita la lista de
   mensajes al usuario:

   Para leer un correo basta con seleccionarlo usando las teclas de
   cursor, y presionando la tecla Enter. Veamos como muestra mutt un
   correo electronico:

   Al igual que ocurre con mail(1) mutt permite que los usuarios
   contesten al remitente de cualquier mensaje asi como a los demas
   receptores. Para responder solo al remitente se puede utilizar la
   tecla r. Para responder a un grupo, es decir a todos los
   receptores y al remitente del correo eletronico pulse g.

     Nota: mutt tiene vi(1) como editor por defecto para crear y
     responder a los mensajes de correo eletronico. Si prefiere
     emplear otro editor modifique el valor de la variable editor en
     .muttrc.

   Para escribir un mensaje de correo presione la tecla m. Despues de
   escribir el asunto mutt ejecuta vi(1) y el cuerpo del mensaje
   puede escribirse. Una vez escrito el correo salga de vi y mutt se
   ejecutara de nuevo mostrando por pantalla un resumen del correo
   que esta a punto de ser enviado. Para enviar ese correo hay que
   pulsar y. Este es un ejemplo de uno de esos resumenes:

   mutt tambien contiene una amplia ayuda a la que se accede desde la
   mayoria de los menus pulsando la tecla ?. La primera lina de la
   pantalla tambien muestra las teclas de metodo abreviado cuando es
   posible utilizarlas.

     --------------------------------------------------------------

  27.11.3. pine

   pine es una aplicacion de correo enfocada a los usuarios
   principiantes o inexpertos pero tambien incluye algunas
   caracteristicas avanzadas.

     AvisoSe han descubierto en pine varias vulnerabilidades que
     pueden explotarse de forma remota. Esas vulnerabilidades
     permiten que atacantes remotos puedan ejecutar codigo como si
     fueran usuarios locales del sistema mediante el envio de correos
     con un formato determinado. Todos los problemas conocidos se han
     resuelto pero el codigo de pine esta escrito de una forma
     insegura y el "Security Officer" de FreeBSD opina que es
     probable que existan todavia vulnerabilidades sin descubrir. Si
     decide instalar pine debe asumir los riesgos que ello puede
     implicar.

   La version actual de pine se puede instalar utilizando el port
   mail/pine4. Una vez que se ha instalado pine se puede ejecutar
   mediante el siguiente comando:

 % pine

   La primera vez que se ejecuta pine se muestra un mensaje de
   bienvenida con una pequena introduccion a la herramienta junto con
   una peticion del equipo de desarrollo de pine en la que se
   solicita que se envie un correo de forma anonima un correo de
   forma anonima para que puedan hacerse una idea s de cuantos
   usuarios estan utilizando la herramienta. Para enviar dicho correo
   hay que presionar la tecla Enter, o bien puede pulsar la tecla E
   para salir de la ventana de bienvenida sin enviar dicho correo. A
   continuacion se muestra un ejemplo de la pagina de bienvenida:

   Los usuarios disponen de un menu principal, que puede navegarse
   utilizando las flechas. Este menu proporciona atajos para la
   composicion de nuevos correos, para navegar a traves de las
   carpetas de correo, e incluso para la administracion de la libreta
   de direcciones. Justo debajo del menu principal, se muestran las
   teclas de metodo abreviado (atajos) que pueden utilizarse en cada
   momento.

   El directorio por defecto que pine intenta abrir es inbox. Para
   ver el indice de todos los mensajes recibidos pulse la tecla I o
   seleccione la opcion de menu denominada MESSAGE INDEX como se
   muestra a continuacion:

   El indice muestra los mensajes en el directorio actual y puede
   navegarse en el utilizando las teclas del cursor. El mensaje
   seleccionado se puede leer presionando la tecla Enter.

   En la captura de pantalla que se muestra a continuacion se muestra
   un mensaje de ejemplo. Las teclas de atajo se muestran como
   referencia en la parte baja de la pantalla. Un ejemplo de dichas
   teclas de metodo abreviado es la tecla r que permite responder al
   mensaje que se muestra en dicho momento.

   La contestacion a un mensaje de correo eletronico en pine se
   realiza mediante el editor pico, que se instala por defecto junto
   con pine. pico permite navegar de forma sencilla por los distintos
   mensajes de correo y es ligeramente mas sencilla de manejar que
   vi(1), sobre todo para los usuarios noveles. Una vez que se ha
   escrito la replica al correo se envia pulsando la tecla Ctrl+X.
   pine pedira confirmacion antes de enviarlo.

   pine puede configurarse utilizando la entrada SETUP del menu
   principal. Se ruega consultar http://www.washington.edu/pine/ para
   obtener mas informacion.

     --------------------------------------------------------------

27.12. Manejo de fetchmail

   Escrito por Marc Silver.

   fetchmail es un cliente de IMAP y POP que permite a los usuarios
   descargar automaticamente el correo de cuentas remotas en
   servidores IMAP y POP y almacenarlos en carpetas de correo
   locales; una vez en local, se puede acceder a los correos de una
   forma mas sencilla y utilizando multitud de programas cliente.
   fetchmail se puede instalar a partir del port mail/fetchmail.
   Veamos algunas de sus caracteristicas mas utiles:

     * Suporte de POP3, APOP, KPOP, IMAP, ETRN y ODMR.

     * Puede reenviar correo utilizando SMTP lo que permite que las
       reglas de filtrado, reenvio y "aliasing" funcionen
       correctamente.

     * Se puede ejecutar en modo daemon comprobar periodicamente el
       correo entrante.

     * Puede recuperar correo de multiples carpetas y reenviarlos, en
       funcion de la configuracion establecida, a varios usuarios
       locales.

   Queda fuera del objetivo de este documento explicar todas las
   caracteristicas de fetchmail pero algunas de ellas se exponen a
   ontinuacion. fetchmail usa un fichero de configuracion denominado
   .fetchmailrc. Este fichero incluye informacion sobre el servidor
   de correo remoto y los datos necesarios para poder hacer login en
   el. Debido a la naturaleza sensible de la informacion que se
   almacena en dicho fichero se recomienda modificar los permisos
   para que sea de solo sea legible por su propietario. Lo conseguira
   mediante el siguiente comando:

 % chmod 600 .fetchmailrc

   El siguiente ejemplo muestra un fichero de configuracion
   .fetchmailrc. Este ejemplo sirve para automatizar la descarga del
   correo de un determinado usuario mediante POP. El fichero de
   configuracion hace que fetchmail se conecte a ejemplo.com
   utilizando como nombre de usuario joesoap y como contrasena XXX.
   En el ejemplo se asume que el usuario joesoap tambien es un
   usuario valido en el sistema local.

 poll ejemplo.com protocol pop3 username "joesoap" password "XXX"

   El siguiente ejemplo permite a fetchmail conectarse a multiples
   servidores POP e IMAP y redirige los correos a diferentes usuarios
   locales en funcion de la configuracion establecida:

 poll ejemplo.com proto pop3:
 user "joesoap", with password "XXX", is "jsoap" here;
 user "andrea", with password "XXXX";
 poll ejemplo.net proto imap:
 user "john", with password "XXXXX", is "myth" here;

   fetchmail se puede ejecutar en modo daemon mediante el parametro
   -d seguido seguido por un intervalo de tiempo (expresado en
   segundos) que indica cada cuanto tiempo debe fetchmail interrogar
   a los distintos servidores listados en .fetchmailrc. El siguiente
   ejemplo hace que fetchmail interroge cada 60 segundos:

 % fetchmail -d 60

   Se puede encontrar mas informacion sobre fetchmail en
   http://www.catb.org/~esr/fetchmail/.

     --------------------------------------------------------------

27.13. Uso de procmail

   Escrito por Marc Silver.

   procmail es una aplicacion increiblemente potente que se utiliza
   para filtrar el correo de entrada. Permite a los usuarios definir
   "reglas" que se asocian con correos entrantes y que realizan
   funciones concretas, como reencaminar el correo a carpetas o
   direciones alternativas. procmail se puede instalar utilizando el
   port mail/procmail. Una vez instalado, se puede integrar
   directamente en la mayoria de los MTAs; por favor, consulte la
   documentacion del MTA que utilice para saber mas sobre la
   integracion entre ambos. Por otro lado procmail se puede integrar
   con el MTA que prefiera de una forma sencilla anadiendo la
   siguiente linea al fichero .forward dentro del directorio home del
   usuario que desee usar procmail:

 "|exec /usr/local/bin/procmail || exit 75"

   La siguiente seccion muestra algunas reglas basicas de procmail,
   junto con una breve descripcion de las acciones que realizan.
   Estas reglas, y muchas otras se deben insertar dentro del fichero
   .procmailrc ubicado en el directorio home del usuario.

   En la pagina man de "procmailex" se explica la mayoria de estas
   reglas.

   Reenvio de todo el correo proveniente de usuario@ejemplo.com hacia
   la direccion externa correodefiar@ejemplo.com:

 :0
 * ^From.*usuario@ejemplo.com
 ! correodefiar@ejemplo.com

   Reenvio de todos los correos que ocupen menos de 1000 bytes a la
   direccion corredefiar@ejemplo2.com:

 :0
 * < 1000
 ! correodefiar@ejemplo2.com

   Envio de todos los correos dirigidos a opcional@ejemplo.com hacia
   una carpeta de correo llamada opcional:

 :0
 * ^TOopcional@ejemplo.com
 opcional

   Envio de todos los correos con un asunto que contenga la palabra
   "Spam" al dispositivo /dev/null:

 :0
 ^Subject:.*Spam
 /dev/null

   Una util receta para examinar mensajes de correo provenientes de
   listas de distribucion de FreeBSD.org y poner cada mensaje en el
   directorio apropiado en funcion del origen del mensaje:

 :0
 * ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
 {
         LISTNAME=${MATCH}
         :0
         * LISTNAME??^\/[^@]+
         FreeBSD-${MATCH}
 }

     --------------------------------------------------------------

                     Capitulo 28. Servidores de red

   Reorganizado por Murray Stokely.

28.1. *

   Pendiente de traduccion. Este capitulo incluye tambien parte del
   contenido del Capitulo 29, "networking" avanzado.

     --------------------------------------------------------------

                    Capitulo 29. Networking avanzado

   Networking avanzado

     --------------------------------------------------------------

29.1. Resumen

   Este capitulo cubre algunos de los servicios de red que se usan
   con mas frecuencia en sistemas UNIX. Para ser mas concretos este
   capitulo explica como definir, ejecutar, probar y mantener todos
   los servicios de red que utiliza FreeBSD. Se muestran ademas
   ejemplos de ficheros de configuracion que podra utilizar para sus
   propios quehaceres.

   Despues de leer este capitulo habremos aprendido:

     * Los conceptos basicos de pasarelas y "routers".

     * Como poner en funcionamiento dispositivos IEEE 802.11 y
       Bluetooth.

     * Como configurar FreeBSD para que actue como un "bridge".

     * Como poner en funcionamiento un sistema de ficheros en red con
       NFS.

     * Como realizar un arranque del sistema por red en maquinas sin
       disco duro.

     * Como ejecutar un servidor de informacion en red para compartir
       cuentas de usuario mediante NIS.

     * Como especificar parametros de configuracion automatica de red
       utilizando DHCP.

     * Como ejecutar un servidor de nombres de dominio.

     * Como sincronizar la hora y la fecha y ejecutar un servidor
       horario utilizando el protocolo NTP.

     * Como ejecutar un servicio de traduccion de direcciones de red.

     * Como gestionar el daemon inetd.

     * Como conectar dos computadoras a traves de PLIP.

     * Como habilitar IPv6 en una maquina FreeBSD.

     * Como configurar ATM sobre FreeBSD 5.X.

   Antes de leer este capitulo deberia usted:

     * Intentar comprender los conceptos basicos de los scripts de
       /etc/rc.

     * Familiarizarse con la terminologia basica de redes.

     --------------------------------------------------------------

29.2. Pasarelas y "routers"

   Escrito por Coranth Gryphon.

   Para que una maquina sea capaz de encontrar otra maquina remota a
   traves de la red debe existir mecanismo que describa como llegar
   del origen al destino. Este mecanismo se demonina routing o
   encaminamiento. Una "ruta" es un par definido de direcciones: una
   direccion de "destino" y una direccion de "pasarela". Este par
   indica que para llegar a dicho destino debe efectuarse una
   comunicacion previa con dicha pasarela. Exiten tres tipos
   distintos de destinos: maquinas individuales, subredes y "por
   defecto". La "ruta por defecto" se utiliza solamente cuando no se
   puede aplicar ninguna de las otras rutas existentes. El tema de
   las rutas por defecto se tratara mas adelante con mas detalle.
   Tambien existen tres tipos de pasarelas distintas: maquinas
   individuales, interfaces (tambien llamados "enlaces") y
   direcciones hardware de ethernet (direcciones MAC).

     --------------------------------------------------------------

  29.2.1. Ejemplo

   Para ilustrar diferentes aspectos del sistema de encaminamiento
   veamos el siguiente ejemplo obtenido mediante netstat.

 % netstat -r
 Routing tables

 Destination      Gateway            Flags     Refs     Use     Netif Expire

 default          outside-gw         UGSc       37      418      ppp0
 localhost        localhost          UH          0      181       lo0
 test0            0:e0:b5:36:cf:4f   UHLW        5    63288       ed0     77
 10.20.30.255     link#1             UHLW        1     2421
 ejemplo.com      link#1             UC          0        0
 host1            0:e0:a8:37:8:1e    UHLW        3     4601       lo0
 host2            0:e0:a8:37:8:1e    UHLW        0        5       lo0 =>
 host2.ejemplo.com link#1            UC          0        0
 224              link#1             UC          0        0

   Las primeras dos lineas especifican la ruta por defecto (la cual
   se comenta en la siguiente seccion) y la ruta de maquina local.

   La interfaz (columna Netif) que especifica esta tabla de rutas
   para el destino localhost se denomina lo0, y tambien se conoce
   como el dispositivo de " loopback" a de bucle de retorno. Esto
   viene a decir que el trafico no debe entregarse a la red puesto
   que dicho trafico va destinado a la misma maquina que lo origino.

   Lo siguiente que podemos observar son las direcciones que
   comienzan por 0:e0:. Son direcciones hardware de Ethernet,
   llamadas tambien se direcciones MAC. FreeBSD identifica
   automaticamente cualquier maquina (test0 en el ejemplo anterior)
   que se encuentre en la red local y crea una ruta del estilo que
   estamos comentando, para entregar el trafico directamente a traves
   del correspondiente interfaz Ethernet, en este caso ed0. Existe
   tambien un contador (Expire) asociado con este tipo de rutas que
   se usa para borrarlas cuando dicho contador expira. Las rutas para
   las maquinas de nuestra propia red de de area local se crean
   dinamicamente utilizando el protocolo ARP (Address Resolution
   Protocol o Protocolo de Resolucion de Direcciones), que se encarga
   de averiguar la direccion MAC que se corresponde con la direccion
   IP de la maquina destino.

   FreeBSD tambien utiliza rutas de subred para direccionar la subred
   local (10.20.30.255 es la direccion de broadcast para la subred
   10.20.30, y ejemplo.com es el nombre de dominio asociado con dicha
   subred.) La notacion link#1 se refiere a la primera tarjeta
   Ethernet de la maquina. En este tipo de redes no se especifica
   ningun interfaz en el campo de Netif.

   Las rutas de subredes aparecen cuando se asigna una direccion IP a
   una interfaz, utilizando una mascara de red. Tambien se pueden
   aprender dinamicamente utilizando demonios de encaminamiento, como
   routed. Por ultimo estas rutas pueden crearse manualmente de forma
   explicita; es lo que se conoce con el nombre de rutas estaticas.

   La linea de host1 se refiere a nuestra maquina, que el sistema
   identifica por la correspondiente direccion Ethernet de la tarjeta
   de red. FreeBSD sabe que debe utilizar la interfaz de loopback
   (lo0) en vez de enviar los paquetes a a traves de red.

   Las dos lineas que comienzan por host2 son ejemplos del uso de
   alias de ifconfig(8) alias (consultar la seccion sobre Ethernet
   para averiguar por que nos podria interesar hacer esto.) El
   simbolo => despues de la interfaz lo0 especifica que no solo
   estamos utilizando la interfaz de loopback, si no que ademas
   especifica que se trata de un alias. Estas rutas solo aparecen en
   las maquinas que implementan el alias, el resto de las maquinas de
   la subred local solamente poseeran una linea link#1 para dichas
   rutas.

   La ultima linea (destino de subred 224) trata sobre encaminamiento
   multicast, que cubriremos en otra seccion.

   Finalmente, se pueden observar varios atributos relacionados con
   las rutas en la columna de Flags. A continuacion se muestra una
   pequena tabla con el significado de algunos de esos de los
   atributos o "flags".

   U Up: La ruta esta activa.                                         
   H Host: El destino de la ruta es una unica maquina.                
     Gateway: Envia cualquier cosa para este destino a traves de la   
   G pasarela especificada, la cual decidira como encaminar el        
     paquete hasta que eventualmente se alcance el destino.           
   S Static: Esta ruta se configuro manualmente, y no se ha generado  
     de forma automatica por el sistema.                              
     Clone: Genera una nueva ruta para la maquina a la que nos        
   C queremos conectar basandose en la ruta actual. Este tipo de ruta 
     se utiliza normalmente en redes locales.                         
   W WasCloned: Indica una ruta que se auto-configuro basandose en    
     una ruta de red de area local con etiqueta Clone.                
   L Link: Esta ruta posee referencias a hardware de Ethernet.        

     --------------------------------------------------------------

  29.2.2. Rutas por defecto

   Cuando el sistema local necesita realizar una conexion con una
   maquina remota se examina la tabla de rutas para determinar si se
   conoce algun camino para llegar al destino. Si la maquina remota
   pertenece a una subred que sabemos como alcanzar (rutas clonadas)
   entonces el sistema comprueba si se puede conectar utilizando
   dicho camino.

   Si todos los caminos conocidos fallan al sistema le queda una
   unica opcion: la "ruta por defecto". Esta ruta esta constituida
   por un tipo especial de pasarela (normalmente el unico "router"
   presente en la red area local) y siempre posee el "flag" c en el
   campo de "flags". En una LAN, la pasarela es la maquina que posee
   conectividad con el resto de las redes (sea a traves de un enlace
   PPP, DSL, cable modem, T1 u otra interfaz de red.)

   Si se configura la ruta por defecto en una maquina que esta
   actuando como pasarela hacia el mundo exterior la ruta por defecto
   sera el "router" que se encuentre en posesion del proveedor de
   servicios de internet (ISP).

   Vamos a examinar un ejemplo que utiliza rutas por defecto. A
   continuacion se muestra una configuracion bastante comun:

 [Local2]  <--ether-->  [Local1]  <--PPP--> [ISP-Serv]  <--ether-->  [T1-GW]
      

   Las maquinas Local1 y Local2 se encuentran en nuestro sitio u
   organizacion. Local1 se conecta con un ISP a traves de una
   conexion de modem PPP. El servidor PPP del ISP se conecta a traves
   de una red de area local a otra pasarela utilizando una interfaz
   externa.

   Las rutas por defecto para cada una de las maquinas son las
   siguientes:

    Host  Default Gateway Interface 
   Local2 Local1          Ethernet  
   Local1 T1-GW           PPP       

   Una pregunta bastante frecuente es "?Por que (o como) hacer que la
   maquina T1-GW sea el "router" por defecto para Local1 en vez de
   que sea el servidor del ISP al cual se esta conectando?".

   Recordemos que, como la interfaz PPP esta utilizando una direccion
   de la red local del ISP en nuestro lado de la las rutas para
   cualquier otra maquina en la red local del proveedor se generaran
   de forma automatica. De este ya sabemos el modo de alcanzar la
   maquina T1-GW, de tal forma que no se necesita un paso intermedio
   para enviar trafico al servidor del ISP.

   Es frecuente utilizar la direccion X.X.X.1 como la direccion de la
   pasarela en la red local. Siguiendo con el ejemplo anterior, si
   nuestro espacio de direccionamiento local fuera la clase C
   10.20.30 y nuestro ISP estuviera utilizando 10.9.9 las rutas por
   defecto serian:

                Host                 Default Route    
   Local2 (10.20.30.2)            Local1 (10.20.30.1) 
   Local1 (10.20.30.1, 10.9.9.30) T1-GW (10.9.9.1)    

   Se puede especificar facilmente la entrada de la ruta por defecto
   utilizando el fichero /etc/rc.conf. En nuestro ejemplo en la
   maquina Local2, se anadio la siguiente linea en dicho fichero:

 defaultrouter="10.20.30.1"

   Tambien se puede hacer directamente desde la linea de ordenes
   mediante route(8):

 # route add default 10.20.30.1

   Para obtener mas informacion sobre la manipulacion de tablas de
   rutas se ruega consultar la pagina de manual route(8).

     --------------------------------------------------------------

  29.2.3. Maquinas con doble pertenencia (Dual Homed Hosts)

   Existe otro tipo de configuracion que debemos describir y que se
   produce cuando una maquina se situa en dos redes distintas al
   mismo tiempo. Tecnicamente hablando cualquier maquina que actua
   como pasarela (en el caso anterior utilizando un enlace de PPP)
   pertenece al tipo de maquinas con doble pertenencia, pero
   normalmente el termino solo se aplica para describir maquinas que
   se encuentran directamente conectadas con dos redes de area local.

   En un caso la maquina posee dos tarjetas de red Ethernet, cada una
   de ellas con una direccion de red independiente. En otro caso la
   maquina puede tener solo una tarjeta de red, pero utilizar "
   aliasing" (ifconfig(8)). El primer caso se utiliza cuando se
   necesita usar dos redes Ethernet al mismo tiempo mientras que el
   segundo caso se utiliza cuando se dispone de un unico segmento de
   red fisico pero se han definido dos redes logicas distintas

   En cualquier caso la tabla de rutas se construye de tal forma que
   cada subred sepa que la maquina es la pasarela definida definida
   ("inbound route") para la otra subred. Esta configuracion en la
   que la maquina actua como "router" entre las dos subredes se usa a
   menudo cuando queremos implementar filtrado de paquetes o
   cortafuegos seguridad en un sentido o en ambos.

   Si queremos que dicha maquina encamine paquetes entre las dos
   interfaces es necesario decirle a FreeBSD que active dicha
   funcionalidad. En la siguiente seccion se explica como hacerlo.

     --------------------------------------------------------------

  29.2.4. Construccion de un "route"

   Un "router" de red, tambien llamado pasarela o "route", es
   simplemente un sistema que reenvia paquetes desde un interfaz
   hacia otro interfaz. Los estandares Internet y el sentido comun
   aplicado a la ingenieria de redes impiden que FreeBSD incluya por
   defecto esta caracteristica. Se puede activar cambiando a YES el
   valor de la siguiente variable en el fichero rc.conf(5):

 gateway_enable=YES          # Set to YES if this host will be a gateway

   Esta opcion modificara la variable de sysctl(8)
   net.inet.ip.forwarding al valor 1. Si en algun momento se necesita
   detener el "router" de forma temporal basta con asignar a dicha
   variable el valor 0. Consulte sysctl(8) para mas detalles.

   Nuestro recien activado "router" necesita rutas para saber a donde
   debe enviar el trafico recibido. Si nuestra red es na se pueden
   definir rutas estaticas. FreeBSD incluye por defecto el daemon de
   encaminamiento BSD, routed(8), que admite RIP (version 1 y version
   2) e IRDP. El paquete net/zebra le permitira usar otros protocolos
   de encaminamiento dinamico como BGP v4, OSPF v2 y muchos otros. En
   caso de necesitar caracteristicas avanzadas de gestion puede usted
   recurrir a productos comerciales como GateD(R).

   Incluso cuando FreeBSD se configura del modo descrito no se cumple
   completamente con los estandares de Internet respecto a los
   "routers". Bastara no obstante para poder usarse.

     --------------------------------------------------------------

  29.2.5. Configuracion de rutas estaticas

   Escrito porAl Hoang.

    29.2.5.1. Configuracion manual

   Vamos a suponer que tenemos la siguiente topologia de red:

     INTERNET
       | (10.0.0.1/24) Router por defecto para Internet
       |
       |Interfaz xl0
       |10.0.0.10/24
    +------+
    |      | RouterA
    |      | (pasarela FreeBSD)
    +------+
       | Interfaz xl1
       | 192.168.1.1/24
       |
   +--------------------------------+
    Red Interna 1       | 192.168.1.2/24
                        |
                    +------+
                    |      | RouterB
                    |      |
                    +------+
                        | 192.168.2.1/24
                        |
                      Red Interna 2
        

   En este escenario RouterA es nuestra maquina FreeBSD que actua
   como pasarela para acceder al resto de internet. Tiene una ruta
   por defecto que apunta a 10.0.0.1 que le permite conectarse con el
   mundo exterior. Vamos a suponer tambien que RouterB se encuentra
   configurado de forma adecuada que sabe como llegar a cualquier
   sitio que necesite. Esto es sencillo viendo nuestra topologia de
   red, basta con anadir una ruta por defecto en la maquina RouterB
   utilizando 192.168.1.1 como "router".

   Si observamos la tabla de rutas de RouterA veremos algo como lo
   siguiente:

 % netstat -nr
 Routing tables

 Internet:
 Destination        Gateway            Flags    Refs      Use  Netif  Expire
 default            10.0.0.1           UGS         0    49378    xl0
 127.0.0.1          127.0.0.1          UH          0        6    lo0
 10.0.0/24          link#1             UC          0        0    xl0
 192.168.1/24       link#2             UC          0        0    xl1

   Con la tabla de rutas actual RouterA no es capaz de alcanzar la
   red interna 2. Esto es asi porque no posee ninguna ruta para la
   red 192.168.2.0/24. Una forma de mitigar esto es anadir de forma
   manual la ruta que falta. La siguiente orden anade la red interna
   2 a la tabla de rutas de la maquina RouterA utilizando 192.168.1.2
   como siguiente salto:

 # route add -net 192.168.2.0/24 192.168.1.2

   Ahora RouterA puede alcanzar cualquier maquina en la red
   192.168.2.0/24.

     --------------------------------------------------------------

    29.2.5.2. Como hacer la configuracion persistente

   El ejemplo anterior es perfecto en tanto que resuelve el problema
   de encaminamiento entre redes pero existe un problema. La
   informacion de encaminamiento desaparecera si se reinicia la
   maquina. La forma de evitarlo es anadir las rutas estaticas a
   /etc/rc.conf:

 # Anade la red interna 2 como una ruta estatica
 static_routes="redinterna2"
 route_internalnet2="-net 192.168.2.0/24 192.168.1.2"

   La variable de configuracion static_routes es una lista de cadenas
   separadas por espacios. Cada cadena identifica un nombre para la
   ruta que se desea definir. En el ejemplo anterior solamente se
   dispone de una cadena dentro de la variable static_routes. Esta
   cadena es redinterna2. A continuacion se anade otra variable de
   configuracion denominada route_redinterna2 donde se escriben todos
   los parametros de configuracion que normalmente utilizariamos
   normalmente utilizariamos con route(8). En el ejemplo que estamos
   comentando se utilizaria la siguiente orden:

 # route add -net 192.168.2.0/24 192.168.1.2

   De tal forma que la variable deberia contener "-net 192.168.2.0/24
   192.168.1.2".

   Como ya se ha comentado anteriormente podemos especificar mas de
   una cadena en la variable static_routes. Esto nos permite crear
   varias rutas estaticas. Las siguientes linas muestran un ejemplo
   donde se anaden rutas estaticas para las redes 192.168.0.0/24 y
   192.168.1.0/24 en un "router"imaginario:

 static_routes="red1 red2"
 route_red1="-net 192.168.0.0/24 192.168.0.1"
 route_red2="-net 192.168.1.0/24 192.168.1.1"

     --------------------------------------------------------------

  29.2.6. Propagacion de rutas

   Ya hemos comentado como se definen las rutas para el mundo
   exterior pero no hemos comentado nada sobre como haremos que el
   mundo exterior nos encuentre a nosotros.

   Tambien hemos aprendido que las tablas de rutas se pueden
   construir de tal forma que un grupo de trafico (perteneciente a un
   espacio de direcciones determinado) se reenvie a una maquina
   especifica de la red, que se encargara de reenviar los paquetes
   hacia adentro.

   Cuando se obtiene un espacio de direcciones para la organizacion
   el proveedor de servicios modifica sus tablas de rutas para que
   todo el trafico para nuestra subred se encamine a traves del
   enlace PPP hasta alcanzarnos. Pero ?como conocen las
   organizaciones dispersas a traves del pais que deben enviar los
   paquetes dirigidos a nosotros hacia nuestro ISP?

   Existe un sistema (muy similar al sistema de nombres de dominio,
   DNS) que se encarga de controlar todos los espacios de direcciones
   que se encuentran actualmente repartidos y que ademas define sus
   puntos de conexion con el "backbone" de internet. El "backbone"
   esta formado por las principales lineas de de comunicacion que se
   encargan de transportar el trafico de internet a traves del pais y
   del mundo entero. Cada maquina del "backbone" dispone de una copia
   de un conjunto maestro de tablas de rutas gracias a las cuales
   pueden dirigir el trafico para una red particular hacia una
   determinada red de transporte de dicho "backbone". Una vez en la
   red de transporte adecuada el trafico se encamina a traves de un
   numero indeterminado de redes de proveedores de servicio hasta que
   se alcanza la red de destino final.

   Una de las tareas que debe realizar el proveedor de servicio
   servicio consiste en anunciarse a las organizaciones del consiste
   en anunciarse a las organizaciones del "backbone" como el punto de
   conexion principal (y por tanto como el camino de entrada) para
   alcanzar las redes de sus clientes. Este proceso se denomina
   propagacion de rutas.

     --------------------------------------------------------------

  29.2.7. Solucion de problemas

   En algunas ocasiones surgen problemas con la propagacion de las
   rutas y algunas organizaciones son incapaces de conectarse con
   nuestra subred. Quiza la orden mas util para averiguar donde se
   esta interrumpiendo el sistema de encaminamiento sea
   traceroute(8). Se puede usar tambien cuando somos nosotros los que
   no podemos alcanzar alguna red externa (por ejemplo cuando ping(8)
   falla).

   traceroute(8) se ejecuta pasandole como parametro el nombre de la
   maquina remota a la que nos queremos conectar. Esta orden muestra
   por pantalla las maquinas que actuan de pasarela a lo largo del
   camino. El proceso termina bien porque se alcanza el destino o
   bien porque algun "router" intermedio no puede conectarse con el
   siguiente salto, o lo desconoce.

   Si quiere saber mas sobre esto consulte la pagina man de
   traceroute(8).

     --------------------------------------------------------------

  29.2.8. Rutas multicast

   FreeBSD soporta tanto aplicaciones multicast como encaminamiento
   multicast de forma nativa. Las aplicaciones multicast no necesitan
   ninguna configuracion especial en FreeBSD; estas aplicaciones se
   ejecutan tal cual. El encaminamiento multicast necesita para ser
   usado que se compile dicho soporte en el nucleo de FreeBSD:

 options MROUTING

   Se debe configurar ademas el daemon de encaminamiento multicast,
   mrouted(8), para establecer tuneles y ejecutar DVMRP utilizando
   /etc/mrouted.conf. Se pueden encontrar mas detalles sobre como
   realizar una configuracion de multicast en mrouted(8).

     --------------------------------------------------------------

29.3. Redes sin cables ("wireless")

   Escrito por Eric Anderson.

     --------------------------------------------------------------

  29.3.1. Introduccion

   Puede resultar muy util el ser capaz de utilizar una computadora
   sin la molestia de tener un cable de red colgando de la maquina en
   todo momento. FreeBSD puede utilizarse como un cliente de
   "wireless" e incluso como un "punto de acceso".

     --------------------------------------------------------------

  29.3.2. Modos de operacion Wireless

   Existen dos formas diferentes de configurar dispositivos wireless
   802.11: BSS e IBSS.

     --------------------------------------------------------------

    29.3.2.1. Modo BSS

   El modo BSS es el que se utiliza normalmente. Este modo tambien se
   denomina modo infraestructura. En esta configuracion se conectan
   un determinado numero de puntos de acceso a una red cableada. Cada
   red Cada red "wireless" posee su propio nombre. Este nombre es el
   SSID de la red.

   Los clientes "wireless" se conectan a estos puntos de acceso. El
   estandar IEEE 802.11 define el protocolo que se utiliza para
   realizar esta conexion. Un cliente "wireless" puede asociarse con
   una determinada red "wireless" especificando el SSID. Un cliente
   "wireless" tambien puede asociarse a cualquier red que se
   encuentre disponible; basta con no especificar ningun SSID.

     --------------------------------------------------------------

    29.3.2.2. Modo IBSS

   El modo IBSS, tambien conocido como modo ad-hoc, se ha disenado
   para facilitar las conexiones punto a punto. En realidad existen
   dos tipos distintos de modos ad-hoc. Uno es el modo IBSS, tambien
   conocido como modo ad-hoc o modo ad-hoc del IEEE. Este modo se
   encuentra especificado en el estandar IEEE 802.11. El segundo tipo
   se denomina modo ad-hoc de demostracion o modo ad-hoc de Lucent (y
   algunas veces, tambien se le llama simplemente modo ad-hoc, lo
   cual es bastante confuso). Este es el modo de funcionamiento
   antiguo, anterior al estandar 802.11, del modo ad-hoc deberia
   utilizarse solo en instalaciones propietarias. No profundizaremos
   mas sobre estos modos de funcionamiento.

     --------------------------------------------------------------

  29.3.3. Modo infraestructura

    29.3.3.1. Puntos de acceso

   Los puntos de acceso son dispositivos de red "wireless" que
   funcionan de forma equivalente a los "hubs" o concentradores,
   permitiendo que varios clientes " wireless" se comuniquen entre
   si. A menudo se utilizan varios puntos de acceso para cubrir un
   area determinada como una casa, una oficina u otro tipo de
   localizacion delimitada.

   Los puntos de acceso poseen tipicamente varias conexiones de red:
   la tarjeta "wireless" y una o mas tarjetas Ethernet que se
   utilizan para comunicarse con el resto de la red.

   Los puntos de acceso se pueden comprar como tales pero tambien se
   puede configurar un sistema FreeBSD para crear nuestro propio
   punto de acceso "wireless" utilizando un determinado tipo de
   tarjetas "wireless" que poseen tales capacidades de configuracion.
   Existe una gran cantidad de fabricantes de hardware que
   distribuyen puntos de acceso y tarjetas de red "wireless", aunque
   las capacidades de unos y otras varin.

     --------------------------------------------------------------

    29.3.3.2. Construccion de un punto de acceso basado en FreeBSD

     --------------------------------------------------------------

      29.3.3.2.1. Requisitos

   Para crear nuestro propio punto de acceso con FreeBSD debemos
   utilizar un determinado tipo de tarjeta "wireless". Por el
   momento, solo las tarjetas con el chip Prism nos permiten hacer un
   punto de acceso. Tambien vamos a necesitar una tarjeta para red
   cableada que sea soportada por el sistema (esto no es muy
   complicado dada la ingente cantidad de dispositivos de este tipo
   que funcionan en FreeBSD). Para este ejemplo vamos a suponer que
   queremos puentear (bridge(4)) todo el trafico entre la red
   cableada y la red inalambrica.

   El uso como punto de acceso "wireless" (tambien denominado hostap)
   funciona mejor con determinadas versiones del " firmware". Las
   tarjetas con chip Prism2 deben disponer de la version 1.3.4 (o
   superior) del " firmware". Los chips Prism2.5 y Prism3 deben
   disponer de la version 1.4.9 o superior del "firmware". Las
   versiones mas antiguas de estos " firmwares" pueden no funcionar
   correctamente. A dia de hoy la unica forma de actualizar el "
   firmware" de las tarjetas es usando las herramientas que
   proporciona el fabricante para Windows.

     --------------------------------------------------------------

      29.3.3.2.2. Puesta en marcha del sistema

   Primero debemos asegurarnos de que el sistema reconoce la tarjeta
   "wireless":

 # ifconfig -a
 wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
         inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
         ether 00:09:2d:2d:c9:50
         media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
         status: no carrier
         ssid ""
         stationname "nodo Wireless FreeBSD"
         channel 10 authmode OPEN powersavemode OFF powersavesleep 100
         wepmode OFF weptxkey 1

   No se preocupe si no entiende algo de la configuracion anterior,
   lo importante es asegurarse de que el sistema muestra algo
   parecido, lo cual nosindicara que la tarjeta "wireless" ha sido
   correctamente reconocida por FreeBSD. Si el interfaz inalambrico
   no es reconocido correctamente y se esta utilizando una tarjeta PC
   Card consulte pccardc(8) y pccardd(8), en las que tiene mucha
   informacion al respecto.

   A continuacion, para que podamos disponer de un "bridge" debera
   cargar el modulo del kernel bridge(4) por el sencillo
   procedimiento de ejecutar la siguiente orden:

 # kldload bridge

   No deberia aparecer mensaje de error alguno al ejecutar dicha
   orden. Si apareciera alguno quizas deba compilar el kernel del
   sistema con bridge(4) incluido. La seccion Bridging de este manual
   incluye informacion abundante para llevar a buen puerto esa tarea.

   Una vez que tenemos el soporte de "bridging" cargado debemos
   indicar a FreeBSD que interfaces se desean puentear. Para ello
   emplearemos sysctl(8):

 # sysctl net.link.ether.bridge=1
 # sysctl net.link.ether.bridge_cfg="wi0,xl0"
 # sysctl net.inet.ip.forwarding=1

   En FreeBSD 5.2-RELEASE y posteriores se deben emplear las
   siguientes opciones en lugar de las anteriormente expuestas:

 # sysctl net.link.ether.bridge.enable=1
 # sysctl net.link.ether.bridge.config="wi0,xl0"
 # sysctl net.inet.ip.forwarding=1

   Ahora es el momento de configurar la tarjeta de red inalambrica.
   La siguiente orden convierte la tarjeta en un punto de acceso:

 # ifconfig wi0 ssid mi_red channel 11 media DS/11Mbps mediaopt hostap up stationname "PA FreeBSD"
         

   La linea de ifconfig(8) levanta el interfaz wi0, configura el SSID
   con el valor de mi_red y tambien el nombre de la estacion como
   FreeBSD. La opcion media DS/11Mbps configura la tarjeta a 11Mbps.
   Esto es necesario para que cualquier valor que se necesite asignar
   a mediaopt surta efecto. La opcion mediaopt hostap situa el
   interfaz en modo punto de acceso. La opcion channel 11 configura
   la tarjeta para que use el canal de radio numero 11. En
   wicontrol(8) encontraraa rangos de canales validos para varios
   dominios regulatorios. Por favor, tenga en cuenta que no todos los
   canales son legales en todos los paises.

   Despues de esto deberiamos disponer de un punto de acceso
   completamente funcional y en ejecucion. Le animamos a consultar
   wicontrol(8), ifconfig(8) y wi(4) para mass informacion.

   Tambien le recomemdamos leer la seccion sobre cifrado que
   econtrara mas adelante.

     --------------------------------------------------------------

      29.3.3.2.3. Informacion de estado

   Una vez que el punto de acceso estaconfigurado resulta interesante
   poder obtener informacion acerca de los clientes que esten
   asociados. La persona encargada de la administracion del punto de
   acceso puede ejecutar cuando estime oportuno lo siguiente:

 # wicontrol -l
 1 station:
 00:09:b7:7b:9d:16  asid=04c0, flags=3<ASSOC,AUTH>, caps=1<ESS>, rates=f<1M,2M,5.5M,11M>, sig=38/15

   Lo que aqui se muestra indica que hay una unica estacion asociada
   y nos suministra sus parametros. Los valores de senal que se
   muestran se deben tomar solo como indicaciones aproximadas de la
   fuerza de dicha senal. Su traduccion a dBm u otras unidades varia
   segun la version del " firmware" de la tarjeta que se use.

     --------------------------------------------------------------

    29.3.3.3. Clientes

   Un cliente "wireless" es un sistema que se comunica con un punto
   de acceso o directamente con otro cliente "wireless".

   Generalmente los clientes "wireless" solo poseen un dispositivo de
   red: la tarjeta de red inalambrica.

   Existen varias formas de configurar un cliente " wireless" basadas
   en los distintos modos inalambricos, normalmente reducidos a BSS
   (o modo infraestructura, que requiere de un punto de acceso) y el
   modo IBSS (modo ad-hoc, o modo punto a punto). En nuestro ejemplo
   usaremos el mas famoso de ambos, el BSS, para comunicarnos con un
   punto de acceso.

     --------------------------------------------------------------

      29.3.3.3.1. Requisitos

   Solamente existe un requisito real para configurar un sistema
   FreeBSD como cliente inalambrico: usar una tarjeta de red
   inalambrica soportada por el sistema.

     --------------------------------------------------------------

      29.3.3.3.2. Ejecucion de un cliente inalambrico FreeBSD

   Para utilizar una red inalambrica se necesitan conocer algunos
   conceptos basicos de redes de redes wireless. En nuestro ejemplo
   queremos conectarnos a la red inalambrica mi_red y queremos
   hacerlo con el soporte de cifrado desactivado.

     Nota: En este ejemplo no se utiliza cifrado, lo cual resulta ser
     bastante peligroso. En la proxima seccion aprenderemos como
     activar el sistema de cifrado comun el los dispositivos
     inalambricos, por que resulta importante hacerlo y por que
     algunas tecnologias de cifrado no son suficientes para
     protegernos completamente.

   Asegurese de que FreeBSD reconoce su tarjeta de red inalambrica:

 # ifconfig -a
 wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7
         inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255
         ether 00:09:2d:2d:c9:50
         media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps)
         status: no carrier
         ssid ""
         stationname "FreeBSD Wireless node"
         channel 10 authmode OPEN powersavemode OFF powersavesleep 100
         wepmode OFF weptxkey 1

   A continuacion debemos especificar los parametros correctos para
   nuestra red:

 # ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid mi_red

   Sustituya 192.168.0.20 y 255.255.255.0 con una direccion IP y
   mascara de red que se adecuen con el espacio de direccionamiento
   de la red cableada. Recordemos que nuestro punto de acceso esta
   puenteando la red inalambrica y la red de cable, de modo que para
   el resto de dispositivos de la red el cliente inalabrico se
   muestra como un elemento mas de la red cableada.

   Llegados a este punto deberiamos poder hacer ping a las maquinas
   de la red cableada como si estuvieramos compartiendo el mismo
   enlace fisico cableado.

   Si se presentan problemas con la conexion inalambrica se puede
   comprobar si la tarjeta " wireless" se encuentra correctamente
   asociada (conectada) con el punto de acceso:

 # ifconfig wi0

   eberia devolver algun tipo de informacion entre la que deberiamos
   observar la siguiente linea:

 status: associated

   Si no aparece la palabra associated puede ser que nos encontremos
   fuera de la cobertura proporcionada por el punto de acceso o puede
   ser que necesitemos activar el cifrado, aunque estos no son los
   unicos problemas con los que nos podemos encontrar.

     --------------------------------------------------------------

    29.3.3.4. Cifrado

   El cifrado, tambien llamado codificacion, de una red inalambrica
   es un proceso importante porque, a diferencia de lo que ocurre con
   las redes cableadas convencionales, las redes inalambricas no se
   pueden restringir a un espacio fisico determinado. Los datos que
   viajan a traves de ondas de radio se difunden a traves de las
   paredes y alcanzan a los vecinos mas cercanos. Aqui es donde entra
   en en juego el sistema de cifrado. El cifrado se emplea para
   evitar que cualquiera pueda examinar los datos enviados a traves
   del aire.

   Los dos metodos mas comunes para realizar el cifrado de datos
   entre el cliente y el punto de acceso son WEP e ipsec(4).

     --------------------------------------------------------------

      29.3.3.4.1. WEP

   WEP son las siglas de Wired Equivalency Protocol. WEP es un un
   intento de crear redes inalambricas al menos tan seguras omo las
   redes cableadas o al menos de seguridad equivalente a dichas
   redes. Por desgracia el sistema WEP es debil y resulta bastante
   sencillo de romper. Esto significa que cuando se transmite
   informacion de caracter critico no se debe confiar unicamente en
   este sistema de cifrado.

   No obstante es mejor que no utilizar nada; puede activar WEP en el
   sistema que hace de punto de acceso mediante:

 # ifconfig wi0 inet up ssid
               mi_red wepmode on wepkey
               0x1234567890 media DS/11Mbps
               mediaopt hostap

   y en un cliente inalambrico mediante la siguiente orden:

 # ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid mi_red wepmode on wepkey 0x1234567890

   Por favor, tenga un poco de sentido comun y reemplace la clave
   0x1234567890 por otra clave menos obvia.

     --------------------------------------------------------------

      29.3.3.4.2. IPsec

   ipsec(4) es una herramienta mas robusta y potente para cifrar
   datos que se mueven a traves de una red. Es el mecanismo mas
   conveniente para asegurar los datos de una red inalambrica. Tiene
   mas informacion sobre el protocolo ipsec(4) y como utilizarlo en
   la seccion IPsec de este manual.

     --------------------------------------------------------------

    29.3.3.5. Herramientas

   No hay muchas herramientas disponibles si se quiere depurar y
   monitorizar redes inalambricas pero en el siguiente apartado
   mostraremos como utilizar algunas de ellas.

     --------------------------------------------------------------

      29.3.3.5.1. El paquete bsd-airtools

   El paquete bsd-airtools es un conjunto muy completo de
   herramientas "wireless" que se pueden utilizar para multitud de
   tareas, entre las cuales podemos citar citar el desciframiento de
   claves WEP, deteccion de puntos de de acceso, monitorizacion de la
   senal de radio, etc.

   El paquete bsd-airtools se puede instalar como "port" desde
   net/bsd-airtools. La informacion relacionada con los "ports" puede
   encontrarse en la seccion Capitulo 4 de este manual.

   El programa dstumbler es una herramienta que permite descubrir
   puntos de acceso y entre otras cosas muestra de forma grafica la
   relacion senal / ruido del enlace. Si se experimentan problemas
   para acceder a un determinado punto de acceso dstumbler puede ser
   muy util.

   Para probar la seguridad de la red inalambrica se puede usar
   "dweputils", concretamente las ordenes dwepcrack, dwepdump y
   dwepkeygen. Estas ordenes permiten determinar hasta que punto la
   seguridad que ofrece WEP es suficiente para nuestras necesidades.

     --------------------------------------------------------------

      29.3.3.5.2. Las utilidades wicontrol, ancontrol y raycontrol

   Mediante estas herramientas se puede controlar el comportamiento
   de la tarjeta de red inalambrica. En los ejemplos anteriores se ha
   utilizado wicontrol(8) debido a que la tarjeta de red del ejemplo
   utiliza el interfaz wi0. Si se posee una tarjeta "wireless" de
   Cisco dicha tarjeta se mostrara en el sistema mediante el interfaz
   an0 y por lo tanto la orden equivalente que se debe usar sera
   ancontrol(8).

     --------------------------------------------------------------

      29.3.3.5.3. ifconfig

   Con ifconfig(8) se puede utilizar unas cuantas de las opciones que
   se pueden usar con wicontrol(8), pero no obstante no posee todas
   las funcionalidades que proporciona wicontrol(8). Se recomienda
   leer ifconfig(8) para conocer los detalles de los parametros y
   opciones que admite.

     --------------------------------------------------------------

    29.3.3.6. Tarjetas de Red inalambricas soportadas

      29.3.3.6.1. Puntos de acceso

   Las unicas tarjetas que soportan el modo de funcionamiento
   funcionamiento BSS (pueden funcionar como puntos de acceso) son
   los dispositivos basados en el chip Prism 2, 2.5 o 3. Consulte
   wi(4) para ver una lista completa de ellos.

     --------------------------------------------------------------

      29.3.3.6.2. Clientes

   FreeBSD soporta casi todas las tarjetas inalambricas 802.11b
   802.11b que se encuentran actualmente en el mercado. La mayoria de
   las tarjetas basadas en los chips Prism, Spectrum24, Spectrum24,
   Hermes, Aironet y Raylink tambien funcionan en modo IBSS (modos
   ad-hoc, punto a punto y BSS).

     --------------------------------------------------------------

29.4. Bluetooth

   Escrito por Pav Lucistnik.

     --------------------------------------------------------------

  29.4.1. Introduccion

   Bluetooth es una tecnologia inalambrica que opera en banda de 2.4
   GHz (donde no se necesita licencia). Se trata de una tecnologia
   pensada para la creacion de redes de ambito personal (de cobertura
   reducida, normalmente de unos 10 metros). Las redes se suelen
   construir en modo "ad-hoc" utilizando dispositivos heterogeneos
   como telefonos moviles, dispositivos manuales ("handhelds") y
   computadoras portatiles. A diferencia de otras tecnologias
   inalambricas como Wi-Fi, Bluetooth ofrece perfiles de servicio mas
   detallados; por ejemplo un perfil para actuar como un servidor de
   ficheros basado en FTP, para la difusion de ficheros ("file
   pushing"), para el transporte de voz, para la emulacion de linea
   serie y muchos mas.

   La pila de Bluetooth en FreeBSD se implementa utilizando el
   entorno de Netgraph (vease netgraph(4)). La mayoria de los
   dispositivos USB Bluetooth se pueden utilizar mediante el
   controlador ng_ubt(4). Los dispositivos Bluetooth basados en el
   chip Broadcom BCM2033 estan soportados mediante los controladores
   ubtbcmfw(4) y ng_bt3c(4). Los dispositivos Bluetooth basados en la
   interfaz serie o de Rayos Infrarrojos (UART) se controlan mediante
   sio(4), ng_h4(4) y hcseriald(8). Este capitulo describe el uso de
   dispositivos Bluetooth USB. El soporte para Bluetooth se encuentra
   en las versiones de FreeBSD 5.0 y posteriores.

     --------------------------------------------------------------

  29.4.2. Instalacion del dispositivo

   Por defecto los controladores de los dispositivos Bluetooth se
   encuentran disponibles como modulos del kernel. Antes de enchufar
   el dispositivo Bluetooth se debe cargar el modulo correspondiente
   dentro del nucleo.

 # kldload ng_ubt

   Si el dispositivo Bluetooth se encuentra conectado cuando el
   sistema arranca se debe cargar el modulo modificando a tal efecto
   el fichero /boot/loader.conf.

 ng_ubt_load="YES"

   Al conectar el dispositivo Bluetooth aparecera en la consola (o en
   syslog) la siguiente informacion:

 ubt0: vendor 0x0a12 product 0x0001, rev 1.10/5.25, addr 2
 ubt0: Interface 0 endpoints: interrupt=0x81, bulk-in=0x82, bulk-out=0x2
 ubt0: Interface 1 (alt.config 5) endpoints: isoc-in=0x83, isoc-out=0x3,
       wMaxPacketSize=49, nframes=6, buffer size=294

   Se debe copiar /usr/share/examples/netgraph/bluetooth/rc.bluetooth
   a algun lugar mas conveniente, por ejemplo /etc/rc.bluetooth. Este
   script se usa para ejecutar y detener la pila Bluetooth del
   sistema. Se suele recomendar quitar la pila antes de desenchufar
   el dispositivo pero si no se hace no deberia producirse ningun
   desastre. Cuando se arranca la pila aparece un mensaje similar a
   este:

 # /etc/rc.bluetooth start ubt0
 BD_ADDR: 00:02:72:00:d4:1a
 Features: 0xff 0xff 0xf 00 00 00 00 00
 <3-Slot> <5-Slot> <Encryption> <Slot offset>
 <Timing accuracy> <Switch> <Hold mode> <Sniff mode>
 <Park mode> <RSSI> <Channel quality> <SCO link>
 <HV2 packets> <HV3 packets> <u-law log> <A-law log> <CVSD>
 <Paging scheme> <Power control> <Transparent SCO data>
 Max. ACL packet size: 192 bytes
 Number of ACL packets: 8
 Max. SCO packet size: 64 bytes
 Number of SCO packets: 8

     --------------------------------------------------------------

  29.4.3. Interfaz de la controladora de la maquina (HCI)

   La interfaz de la Controladora de la Maquina (Host Controller
   Interface) proporciona una interfaz de ordenes para la
   controladora de banda base y para el gestor de enlace, y permite
   acceder al estado del hardware y a los registros de control. Esta
   interfaz proporciona una capa de acceso homogenea para todos los
   dispositivos Bluetooth de banda base. La capa HCI de la maquina
   intercambia ordenes y datos con el firmware del HCI presente en el
   dispositivo Bluetooth. El driver de la capa de transporte de la
   controladora de la maquina (es decir, el driver del bus fisico)
   proporciona ambas capas de HCI la posibilidad de intercambiar
   informacion entre ellas.

   Se crea un nodo Netgraph de tipo HCI para cada dispositivo
   Bluetooth. El nodo Netgraph HCI se conecta normalmente con el nodo
   que representa el controlador del dispositivo Bluetooth de la
   maquina (sentido de bajada) y con el nodo Netgraph L2CAP en el
   sentido de subida. Todas las operaciones HCI se realizan sobre el
   nodo Netgraph HCI y no sobre el el nodo que representa al
   dispositivo. El nombre por defecto para el nodo HCI es
   "devicehci". Para obtener mas detalles, por favor consulte la
   pagina del manual de ng_hci(4).

   Una de las tareas mas importantes que se deben realizar es el
   descubrimiento automatico de otros dispositivos Bluetooth que se
   encuentren dentro del radio de cobertura. Esta operacion se
   denomina en ingles inquiry (consulta). Esta operacion o otras
   operaciones HCI relacionadas se realizan mediante la utilidad
   hccontrol(8). El siguiente ejemplo muestra como descubrir
   dispositivos en pocos segundos. Tenga siempre presente que un
   dispositivo remoto solo contesta a la consulta si se encuentra
   configurado en modo descubrimiento (discoverable mode).

 % hccontrol -n ubt0hci inquiry
 Inquiry result, num_responses=1
 Inquiry result #0
        BD_ADDR: 00:80:37:29:19:a4
        Page Scan Rep. Mode: 0x1
        Page Scan Period Mode: 00
        Page Scan Mode: 00
        Class: 52:02:04
        Clock offset: 0x78ef
 Inquiry complete. Status: No error [00]

   BD_ADDR es la direccion identificativa unica del dispositivo
   Bluetooth, similar a las direcciones MAC de las tarjetas Ethernet.
   Esta direccion se necesita para transmitir otro tipo de
   informacion a otros dispositivos. Se puede asignar un nombre mas
   significativo para los humanos en la variable BD_ADDR. El fichero
   /etc/bluetooth/hosts contiene informacion relativa a los
   dispositivos Bluetooth conocidos. El siguiente ejemplo muestra
   como obtener un nombre significativo para los humanos que fue
   asignado a un dispositivo remoto:

 % hccontrol -n ubt0hci remote_name_request 00:80:37:29:19:a4
 BD_ADDR: 00:80:37:29:19:a4
 Name: Pav's T39

   Si se realiza una consulta (inquiry) sobre el dispositivo
   Bluetooth remoto, dicho dispositivo identificara nuestro
   computador como "nombre.de.su.sistema (ubt0)". El nombre asignado
   al dispositivo local se puede modificar en cualquier momento.

   El sistema Bluetooth proporciona una conexion punto a punto (con
   solo dos unidades Bluetooth involucradas) o tambien una conexion
   punto multipunto. En el ultimo caso, la conexion se comparte entre
   varios dispositivos Bluetooth. El siguiente ejemplo muestra como
   obtener una lista de las conexiones de banda base activas en el
   dispositivo local:

 % hccontrol -n ubt0hci read_connection_list
 Remote BD_ADDR    Handle Type Mode Role Encrypt Pending Queue State
 00:80:37:29:19:a4     41  ACL    0 MAST    NONE       0     0 OPEN

   Resulta util disponer de un manejador de la conexion cuando se
   necesita terminar la conexion de banda base. Es importante
   recalcar que normalmente no es necesario realizar esta terminacion
   de forma manual. La pila Bluetooth puede concluir automaticamente
   las conexiones de banda base que se encuentren inactivas.

 # hccontrol -n ubt0hci disconnect 41
 Connection handle: 41
 Reason: Connection terminated by local host [0x16]

   Se ruega consultar la salida de la orden hccontrol help para
   obtener un listado completo de las ordenes HCI disponibles. La
   mayoria de estas ordenes no requiren privilegios de superusuario.

     --------------------------------------------------------------

  29.4.4. Protocolo de adaptacion y de control de enlace a nivel logico
  (L2CAP)

   El protocolo L2CAP (Logical Link Control and Adaptation Protocol)
   proporciona servicios de datos tanto orientados a conexion como no
   orientados a conexion a los protocolos de las capas superiores,
   junto con facilidades de multiplexacion y de segmentacion y
   reensamblaje. L2CAP permite que los protocolos de capas superiores
   puedan transmitir y recibir paquetes de datos L2CAP de hasta 64
   kilobytes de longitud.

   L2CAP se basa en el concepto de canales. Un canal es una conexion
   logica que se situa sobre la conexion de banda base. Cada canal se
   asocia a un unico protocolo. Cada paquete L2CAP que se recibe a un
   canal se redirige al protocolo superior correspondiente. Varios
   canales pueden operar sobre la misma conexion de banda base, pero
   un canal no puede tener asociados mas de un protocolo de alto
   nivel.

   Para cada dispositivo Bluetooth se cre un unico nodo Netgraph de
   tipo l2cap. El nodo L2CAP se conecta normalmente conectado al nodo
   Netgraph HCI (hacia abajo) y con nodos Bluetooth tipo "sockets"
   hacia arriba. El nombre por defecto para el nodo Netgraph L2CAP es
   "devicel2cap". Para obtener mas detalles se ruega consultar la
   pagina del manual ng_l2cap(4).

   l2ping(8) le sera muy util para hacer ping a otros dispositivos.
   Algunas implementaciones de Bluetooth no devuelven todos los datos
   que se envian, de tal forma que el valor 0 bytes que se observa a
   continuacion es normal:

 # l2ping -a 00:80:37:29:19:a4
 0 bytes from 0:80:37:29:19:a4 seq_no=0 time=48.633 ms result=0
 0 bytes from 0:80:37:29:19:a4 seq_no=1 time=37.551 ms result=0
 0 bytes from 0:80:37:29:19:a4 seq_no=2 time=28.324 ms result=0
 0 bytes from 0:80:37:29:19:a4 seq_no=3 time=46.150 ms result=0

   La herramienta l2control(8) se utiliza para realizar varias
   operaciones sobre los nodos L2CAP. Este ejemplo muestra como
   obtener la lista de conexiones logicas (canales) y la lista de
   conexiones de banda base (fisica) que mantiene el dispositivo
   local:

 % l2control -a 00:02:72:00:d4:1a read_channel_list
 L2CAP channels:
 Remote BD_ADDR     SCID/ DCID   PSM  IMTU/ OMTU State
 00:07:e0:00:0b:ca    66/   64     3   132/  672 OPEN
 % l2control -a 00:02:72:00:d4:1a read_connection_list
 L2CAP connections:
 Remote BD_ADDR    Handle Flags Pending State
 00:07:e0:00:0b:ca     41 O           0 OPEN

   Otra herramienta de diagnostico interesante es btsockstat(1).
   Realiza un trabajo similar a la orden netstat(1), pero en este
   caso para las estructuras de datos relacionadas con el sistema
   Bluetooth. A continuacion se muestra la informacion relativa a la
   misma conexion logica del ejemplo anterior.

 % btsockstat
 Active L2CAP sockets
 PCB      Recv-Q Send-Q Local address/PSM       Foreign address   CID   State
 c2afe900      0      0 00:02:72:00:d4:1a/3     00:07:e0:00:0b:ca 66    OPEN
 Active RFCOMM sessions
 L2PCB    PCB      Flag MTU   Out-Q DLCs State
 c2afe900 c2b53380 1    127   0     Yes  OPEN
 Active RFCOMM sockets
 PCB      Recv-Q Send-Q Local address     Foreign address   Chan DLCI State
 c2e8bc80      0    250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3    6    OPEN

     --------------------------------------------------------------

  29.4.5. Protocolo RFCOMM

   El protocolo RFCOMM proporciona emulacion de puertos serie a
   traves del protocolo L2CAP. Este protocolo se basa en el estandar
   de la ETSI denominado TS 07.10. RFCOMM es un protoclo de
   transporte sencillo, con soporte para hasta 9 puertos serie RS-232
   (EIATIA-232-E). El protocolo RFCOMM permite hasta 60 conexiones
   simultaneas (canales RFCOMM) entre dos dispositivos Bluetooth.

   Para los propositos de RFCOMM, un camino de comunicacion involucra
   siempre a dos aplicaciones que se ejecutan en dos dispositivos
   distintos (los extremos de la comunicacion). Entre ellos existe un
   segmento que los comunica. RFCOMM pretende cubrir aquellas
   aplicaciones que utilizan los puertos serie de las maquinas donde
   se ejecutan. El segmento de comunicacion es un enlace Bluetooth
   desde un dispositivo al otro (conexion directa).

   RFCOMM trata unicamente con la conexion de dispositivos
   directamente, y tambien con conexiones entre el dispositivo y el
   modem para realizar conexiones de red. RFCOMM puede soportar otras
   configuraciones, tales como modulos que se comunican via Bluetooth
   por un lado y que proporcionan una interfaz de red cableada por el
   otro.

   En FreeBSD el protocolo RFCOMM se implementa utilizando la capa de
   "sockets" de Bluetooth.

     --------------------------------------------------------------

  29.4.6. Enparejamiento de dispositivos

   Por defecto, la comunicacion Bluetooth no se valida, por lo que
   cualquier dispositivo puede en principio hablar con cualquier
   otro. Un dispositivo Bluetooth (por ejemplo un telefono celular)
   puede solicitar autenticacion para realizar un determinado
   servicio (por ejemplo para el servicio de marcacion por modem). La
   autenticacion de Bluetooth normalmente se realiza utilizando
   codigos PIN. Un codigo PIN es una cadena ASCII de hasta 16
   caracteres de longitud. Los usuarios deben introducir el mismo
   codigo PIN en ambos dispositivos. Una vez que el usuario ha
   introducido el PIN adecuado ambos dispositivos generan una clave
   de enlace. Una vez generada, la clave se puede almacenar en el
   propio dispositivo o en un dispositivo de almacenamiento externo.
   La siguiente vez que se comuniquen ambos dispositivos se
   reutilizara la misma clave. El procedimiento descrito hasta este
   punto se denomina emparejamiento (pairing). Es importante recordar
   que si la clave de enlace se pierde en alguno de los dispositivos
   involucrados se debe volver a ejecutar el procedimiento de
   emparejamiento.

   El daemon hcsecd(8) se encarga de gestionar todas las peticiones
   de autenticacion Bluetooth. El archivo de configuracion
   predeterminado se denomina /etc/bluetooth/hcsecd.conf. A
   continuacion se muestra una seccion de ejemplo de un telefono
   celular con el codigo PIN arbitrariamente fijado al valor "1234":

 device {
         bdaddr  00:80:37:29:19:a4;
         name    "Pav's T39";
         key     nokey;
         pin     "1234";
       }

   No existe ninguna limitacion en los codigos PIN a excepcion de su
   longitud. Algunos dispositivos (por ejemplo los dispositivos de
   mano Bluetooth) pueden obligar a escribir un numero predeterminado
   de caracteres para el codigo PIN. La opcion -d fuerza al daemon
   hcsecd(8) a permanecer ejecutadose en primer plano, de tal forma
   que se puede observar facilmente lo que ocurre. Si se configura el
   dispositivo Bluetooth remoto para aceptar el procedimiento de
   emparejamiento y se inicia la conexion con dicho dispositivo, el
   dispositivo remoto deberia decir que el procedimiento de
   emparejamiento se ha aceptado y deberia solicitar el codigo PIN.
   Si se introduce el mismo codigo PIN que se escribio en su momento
   en el fichero hcsecd.conf el procedimiento de emparejamiento y de
   generacion de la clave de enlace deberia terminar
   satisfactoriamente. Por otra parte el procedimiento de
   emparejamiento se puede iniciar en el dispositivo remoto. A
   continuacion se muestra un ejemplo de la salida del daemon hcsecd.

 hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist
 hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4
 hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
 hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists
 hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4

     --------------------------------------------------------------

  29.4.7. Protocolo de descubrimiento de servicios (SDP)

   El Protocolo de Descubrimiento de Servicios (Service Discovery
   Protocol o SDP) permite a las aplicaciones cliente descubrir la
   existencia de diversos servicios proporcionados por uno o varios
   servidores de aplicaciones, junto con los atributos y propiedades
   de los servicios que se ofrecen. Estos atributos de servicio
   incluyen el tipo o clase de servicio ofrecido y el mecanismo o la
   informacion necesaria para utilizar dichos servicios.

   SDP se basa en una determinada comunicacion entre un servidor SDP
   y un cliente SDP. El servidor mantiene una lista de registros de
   servicios, los cuales describen las caracteristicas de los
   servicios ofrecidos. Cada registro contiene informacion sobre un
   determinado servicio. Un cliente puede recuperar la informacion de
   un registro de servicio almacenado en un servidor SDP lanzando una
   peticion SDP. Si el cliente o la aplicacion asociada con el
   cliente decide utilizar un determinado servicio, debe establecer
   una conexion independiente con el servicio en cuestion. SDP
   proporciona un mecanismo para el descubrimiento de servicios y sus
   atributos asociados, pero no proporciona ningun mecanismo ni
   protocolo para utilizar dichos servicios.

   Normalmente, un cliente SDP realiza una busqueda de servicios
   acotada por determinadas caracteristicas. No obstante hay momentos
   en los que resulta deseable descubrir todos los servicios
   ofrecidos por un servidor SDP sin que pueda existir ningun
   conocimiento previo sobre los registros que pueda contener. Este
   proceso de busqueda de cualquier servicio ofrecido se denomina
   navegacion o browsing.

   El servidor Bluetooth SDP denominado sdpd(8) y el cliente de linea
   de ordenes sdpcontrol(8) se incluyen en la instalacion estandar de
   FreeBSD. El siguiente ejemplo muestra como realizar una consulta
   de navegacion una consulta de navegacion SDP.

 % sdpcontrol -a 00:01:03:fc:6e:ec browse
 Record Handle: 00000000
 Service Class ID List:
         Service Discovery Server (0x1000)
 Protocol Descriptor List:
         L2CAP (0x0100)
                 Protocol specific parameter #1: u/int/uuid16 1
                 Protocol specific parameter #2: u/int/uuid16 1

 Record Handle: 0x00000001
 Service Class ID List:
         Browse Group Descriptor (0x1001)

 Record Handle: 0x00000002
 Service Class ID List:
         LAN Access Using PPP (0x1102)
 Protocol Descriptor List:
         L2CAP (0x0100)
         RFCOMM (0x0003)
                 Protocol specific parameter #1: u/int8/bool 1
 Bluetooth Profile Descriptor List:
         LAN Access Using PPP (0x1102) ver. 1.0

   ... y asi sucesivamente. Resulta importante resaltar una vez mas
   que cada servicio posee una lista de atributos (por ejemplo en el
   canal RFCOMM). Dependiendo de los servicios que se quieran
   utilizar puede resultar necesario anotar algunos de los atributos.
   Algunas implementaciones de Bluetooth no soportan navegacion de
   servicios y pueden devolver una lista vacia. En este caso se puede
   intentar buscar algun servicio determinado. El ejemplo siguiente
   muestra como buscar el servicio OBEX Object Push (OPUSH):

 % sdpcontrol -a 00:01:03:fc:6e:ec search OPUSH

   En FreeBSD los servicios a clientes Bluetooth se suministran
   mediante el servidor sdpd(8).

 # sdpd

   La aplicacion local servidora que quiere proporcionar servicio
   Bluetooth a los clientes remotos puede registrar su servicio con
   el daemon SDP local. Un ejemplo de dicha aplicacion Un ejemplo de
   dicha aplicacion lo constituye el daemon rfcomm_pppd(8). Una vez
   ejecutado el daemon registra un servicio LAN de Bluetooth en el
   daemon SDP local.

   Se puede obtener la lista de servicios registrados con el servidor
   SDP local lanzando una consulta de navegacion SDP utilizando el
   canal de control local.

 # sdpcontrol -l browse

     --------------------------------------------------------------

  29.4.8. Acceso telefonico a redes (DUN) y acceso a redes mediante
  perfiles PPP (LAN)

   El perfil de Acceso Telefonico a Redes (Dial-Up Networking o DUN)
   se utiliza mayoritariamente con modems y telefonos celulares. Los
   escenarios cubiertos por este perfil se describen a continuacion:

     * Utilizacion de un telefono celular o un modem por una
       computadora para simular un modem sin cables que se conecte a
       un servidor de acceso telefonico a redes o para otros
       servicios de acceso telefonico relacionados;

     * Utilizacion de un telefono celular o un modem por un
       computador para recibir llamadas de datos.

   El Acceso a Redes con perfiles PPP (LAN) se puede utilizar en las
   siguientes situaciones:

     * Acceso LAN para un unico dispositivo Bluetooth;

     * Acceso LAN para multiples dispositivos Bluetooth;

     * Conexion de PC a PC (utilizando emulacion de PPP sobre una
       linea serie).

   En FreeBSD ambos perfiles se implementan bajo las ordenes ppp(8) y
   rfcomm_pppd(8), un encapsulador que convierte la conexion RFCOMM
   de Bluetooth en algo que puede ser utilizado por PPP. Antes de que
   se puedan utilizar los perfiles se debe definir una nueva etiqueta
   PPP en el fichero de configuracion /etc/ppp/ppp.conf. Consulte
   rfcomm_pppd(8) para ver algunos ejemplos.

   En el siguiente ejemplo se va a utilizar rfcomm_pppd(8) para abrir
   una conexion RFCOMM con un dispositivo remoto con BD_ADDR
   00:80:37:29:19:a4 sobre un canal RFCOMM basado en DUN (Dial-Up
   Networking). El numero de canal RFCOMM se obtiene a partir del
   dispositivo remoto a traves de SDP. Es posible especificar el
   canal RFCOMM a mano, en cuyo caso rfcomm_pppd(8) no realizara
   ninguna consulta SDP. Se puede utilizar la orden sdpcontrol(8)
   para descubrir el canal RFCOMM utilizado en el dispositivo remoto.

 # rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup

   Para proporcionar el servicio de Acceso a Redes a traves de PPP
   (LAN) se debe ejecutar el servidor sdpd(8). Se debe crear una
   nueva entrada en /etc/ppp/ppp.conf. Le rogamos que consulte
   rfcomm_pppd(8) y observe los ejemplos que se facilitan. Por ultimo
   se debe ejecutar el servidor PPP RFCOMM sobre un numero de canal
   RFCOMM adecuado. El servidor PPP RFCOMM registrara automaticamente
   el servicio LAN de Bluetooth con el servidor SDP local. El ejemplo
   que se muestra a continuacion describe como ejecutar el servidor
   PPP RFCOMM.

 # rfcomm_pppd -s -C 7 -l rfcomm-server

     --------------------------------------------------------------

  29.4.9. Perfil OBEX Object Push (OPUSH)

   OBEX es un protocolo muy utilizado para transferencias de ficheros
   sencillas entre dispositivos moviles. Su uso mas importante se
   produce en comuncaciones por infrarrojos, donde se utiliza para
   transferencia de ficheros genericos entre portatiles o
   dispositivos Palm y para enviar tarjetas de visita o entradas de
   la agenda entre telefonos celulares y otros dispositivos con
   aplicaciones PIM.

   El cliente y el servidor de OBEX se implementan como un paquete
   denominado obexapp disponible como " port" en comms/obexapp.

   El cliente OBEX se utiliza para introducir y para recuperar
   recuperar objetos del servidor OBEX. Un objeto puede por ejemplo
   ser una tarjeta de visita o una cita. El cliente OBEX puede
   obtener un numero de canal RFCOMM del dispositivo remoto
   utilizando SDP. Esto se hace especificando el nombre del servicio
   en lugar del numero de canal RFCOMM. Los nombres de servicios
   soportados son: IrMC, FTRN y OPUSH. Es posible especificar el
   canal RFCOMM como un numero. A continuacion se muestra un ejemplo
   de una sesion OBEX donde el objeto que posee la informacion del
   dispositivo se recupera del telefono celular y un nuevo objeto (la
   tarjeta de visita) se introduce en el directorio de dicho
   telefono.

 % obexapp -a 00:80:37:29:19:a4 -C IrMC
 obex> get
 get: remote file> telecom/devinfo.txt
 get: local file> devinfo-t39.txt
 Success, response: OK, Success (0x20)
 obex> put
 put: local file> new.vcf
 put: remote file> new.vcf
 Success, response: OK, Success (0x20)
 obex> di
 Success, response: OK, Success (0x20)

   Para proporcionar servicio de OBEX el servidor sdpd(8) debe estar
   en funcionamiento. Ademas se debe crear un directorio raiz donde
   todos los objetos van a ser almacenados. La ruta por defecto para
   el directorio raiz es /var/spool/obex. Por ultimo se debe ejecutar
   el servidor OBEX en un numero de canal RFCOMM valido. El servidor
   OBEX registra automaticamente el servicio de Object Push con el
   daemon SDP local. El ejemplo que se muestra a local. El ejemplo
   que se muestra a continuacion continuacion describe como ejecutar
   el servidor OBEX.

 # obexapp -s -C 10

     --------------------------------------------------------------

  29.4.10. Perfil de puerto serie (SP)

   El perfil de puerto serie (Serial Port o SP) permite que
   dispositivos Bluetooth realicen emulacion de RS232 (o similar). El
   escenario cubierto por este perfil trata con con aplicaciones
   comerciales que utilizan Bluetooth como un sustituto sustituto del
   cable, utilizando una capa de abstraccion que representa un puerto
   serie virtual.

   La aplicacion rfcomm_sppd(1) implementa el perfil Puerto Serie.
   Usa una pseudo tty como abstraccion de puerto serie virtual. El
   ejemplo de mas abajo muestra como conectarse a un servicio de
   dispositivo remoto de Puerto Serie. Observe que no necesita
   especificarse el canal RFCOMM: rfcomm_sppd(1) puede obtenerlo del
   dispotivo remoto via SDP. Si necesita especificarlo por alguna
   razon hagalo en la propia linea de ordenes.

 # rfcomm_sppd -a 00:07:E0:00:0B:CA -t /dev/ttyp6
 rfcomm_sppd[94692]: Starting on /dev/ttyp6...

   Una vez conectado el pseudo tty se puede utilizar como un puerto
   serie.

 # cu -l ttyp6

     --------------------------------------------------------------

  29.4.11. Solucion de problemas

    29.4.11.1. Un dispositivo remoto no puede conectarse

   Algunos dispositivos Bluetooh antiguos no soportan el cambio de
   cambio de roles. Por defecto, roles. Cuando FreeBSD acepta una
   nueva conexion por defecto intenta realizar un cambio de rol y
   convertirse en maestro. Dispositivos que no son capaces de
   realizar este cambio no pueden conectarse. Es interesante resaltar
   que el cambio de roles se realiza cuando se esta estableciendo una
   nueva conexion de tal forma que no es posible preguntar al
   dispositivo si soporta intercambio de roles. Existe una opcion HCI
   para desactivar el intercambio de roles en la parte local.

 # hccontrol -n ubt0hci write_node_role_switch 0

     --------------------------------------------------------------

    29.4.11.2. Algo va mal ?puedo ver exactamente que esta ocurriendo?

   Si, se puede. Utilice el paquete hcidump-1.5, que se puede
   descargar de aqui. La herramienta hcidump es similar a la
   herramienta tcpdump(1). Se puede utilizar para mostrar el
   contenido de los paquetes Bluetooth sobre el terminal y para
   volcar los paquetes Bluetooth a un fichero.

     --------------------------------------------------------------

29.5. Puenteado

   Escrito por Steve Peterson.

  29.5.1. Introduccion

   Algunas veces resulta util dividir una red fisica (como por
   ejemplo un segmento Ethernet) en dos segmentos de red separados,
   sin tener que crear subredes IP y sin utilizar una pasarela para
   comunicar ambos segmentos. El dispositivo que realiza esta funcion
   se denomina "bridge". Un sistema FreeBSD con dos interfaces de red
   puede actuar como un "bridge" o puente entre ambas.

   El "bridge" funciona de tal forma que aprende las direcciones de
   la capa MAC (direcciones Ethernet) de los nodos que se encuentran
   conectados a cada interfaz de red de tal forma que solo se reenvia
   trafico entre los segmentos de red cuando las direcciones fuente y
   destino se encuentran separadas en segmentos distintos.

   En varios aspectos se puede comparar un "bridge" con un "switch"
   de pocos puertos.

     --------------------------------------------------------------

  29.5.2. Situaciones donde el puenteado resulta adecuado

   Existen al menos dos situaciones tipicas donde se puede utilizar
   la funcionalidad proporcionada por los " bridges".

     --------------------------------------------------------------

    29.5.2.1. Trafico de gran volumen en un segmentos de red

   La primera situacion surge cuando nos encontramos con un segmento
   de red congestionado pero por las razones que sean no queremos
   subdividir la red e interconectar las nuevas subredes mediante un
   "route".

   Vamos a considerar un ejemplo de un periodico donde los
   departamentos editoriales y de produccion utilizan la misma
   subred. Los usuarios de la editorial utilizan el servidor A como
   servidor de ficheros y los de produccion utilizan el servidor B.
   Se Se utiliza una red Ethernet para conectar ambos departamentos y
   se ha detectado que la alta utilizacion del enlace esta
   ralentizando el funcionamiento de la red.

   Si los usuarios de la editorial pudieran agregarse en un segmento
   de red mientras que los usuarios de produccion se localizaran en
   otro se podrian conectar ambos segmentos mediante un "bridge".
   Solo se utilizara el "bridge" para encaminar trafico de red
   destinado a interfaces que se encuentren en el otro lado del
   "bridge", reduciendo de esta forma la congestion en cada nuevo
   segmento.

     --------------------------------------------------------------

    29.5.2.2. Cortafuegos de filtrado/conformacion de trafico

   La segunda situacion tipica se produce cuando se necesita un
   cortafuegos pero no la Traduccion de Direcciones de Red (NAT).

   A continuacion se muestra un ejemplo. Una pequena compania se
   comunica con su ISP utilizando DSL o ISDN. Dicha compania posee 13
   13 direcciones IP globalmente accesibles delegadas por su ISP y
   tiene 10 ordenadores en funcionamiento. En esta situacion un un
   cortafuegos basado en un "router" resulta dificil debido a la
   distribucion del espacio de direccionamiento disponible
   (subnetting).

   Un cortafuegos implementado sobre un "bridge" se puede utilizar en
   el camino de bajado desde el ISP hasta las oficinas de la compania
   sin necesidad de tener en cuenta ningun aspecto relacionado con la
   distribucion de las direcciones IP.

     --------------------------------------------------------------

  29.5.3. Configuracion de un "bridge"

    29.5.3.1. Seleccion de la interfaz de red

   Un "bridge" necesita al menos dos tarjetas de red situadas en dos
   segmentos de red para su funcionamiento. Por desgracia no todas
   las interfaces de red pueden usarse para el puenteo. Consulte
   bridge(4), ahin encontrara mas informacion sobre que tarjetas
   puede usar.

   Por favor, instale y pruebe las dos tarjetas de red antes de
   continuar.

     --------------------------------------------------------------

    29.5.3.2. Cambios en la configuracion del nucleo

   Para activar el soporte de "bridging" en el nucleo anada

 options BRIDGE

   al fichero de configuracion del nucleo y recompile el kernel.

     --------------------------------------------------------------

    29.5.3.3. Soporte de cortafuegos

   Si se desea utilizar el "bridge" como un cortafuegos, se debe
   anadir ademas la opcion IPFIREWALL. Lea el capilo de firewalls
   para obtener informacion general sobre como configurar el bridge
   para que actue ademas como cortafuegos.

   Si ademas queremos que los paquetes que no sean IP (por ejemplo
   paquetes ARP) puedan atravesar el "bridge" deberemos anadir la
   opcion IPFIREWALL_DEFAULT_TO_ACCEPT. Tenga en cuenta opcion
   modifica el comportamiento del cortafuegos de tal forma que por
   defecto aceptara cualquier paquete. Hay que tener cuidado para
   asegurarse de que el comportamiento esperado del cortafuegos, que
   reside en el conjunto de reglas que se hayan definido, no se vea
   afectado por este cambio.

     --------------------------------------------------------------

    29.5.3.4. Soporte de conformado de trafico

   Si se quiere utilizar el "bridge" como un conformador de trafico,
   es decir, como un elemento capaz de adaptar los distintos flujos
   segun determinados patrones, se debe anadir la opcion DUMMYNET a
   la configuracion del nucleo. Se ruega consultar dummynet(4) para
   obtener mas informacion al respecto.

     --------------------------------------------------------------

  29.5.4. Como activar el "bridge"

   Anadir la linea:

 net.link.ether.bridge=1

   en /etc/sysctl.conf para habilitar el soporte de "bridging" en
   tiempo de ejecucion y la linea:

 net.link.ether.bridge_cfg=if1,if2

   Para activar el "bridging" en las interfaces especificadas
   (sustituya if1 y if2 con los nombres de sus interfaces de red). Si
   deseamos filtrar los paquetes puenteados utilizando ipfw(8),
   debemos anadir tambien:

 net.link.ether.bridge_ipfw=1

   En FreeBSD 5.2-RELEASE y posteriores, se debe utilizar las
   siguientes lineas en lugar de las anteriores:

 net.link.ether.bridge.enable=1
 net.link.ether.bridge.config=if1,if2
 net.link.ether.bridge.ipfw=1

     --------------------------------------------------------------

  29.5.5. Informacion adicional

   Si queremos ser capaces de conectarnos al "bridge" mediante
   telnet(1) se puede asignar una direccion IP a una de las tarjetas
   de red del "bridge". Por amplio consenso se considera una mala
   idea asignar mas de una direccion IP al "bridge".

   Si poseemos varios "bridges" en nuestra red solamente puede
   existir un unico camino entre cualesquiera dos maquinas de nuestra
   red. Tecnicamente hablando esto significa que no existe soporte
   para gestion de enlace mediante mecanismos basados en arboles de
   recubrimiento minimos ("spanning tree").

   Un "bridge" puede anadir latencia a los tiempos de respuesta de la
   orden ping(8), especialmente cuando el trafico tiene que viajar de
   un segmento de red al otro.

     --------------------------------------------------------------

29.6. NFS

   Reorganizado y ampliado por Tom Rhodes. Escrito por Bill Swingle.

   FreeBSD soporta diversos sistemas de ficheros, uno de los cuales
   es el Sistema de Ficheros en Red, tambien conocido por su acronimo
   en ingles NFS. NFS permite compartir directorios y ficheros a
   traves de la red. Los usuarios del sistema NFS pueden acceder a
   ficheros que se encuentran fisicamente en maquinas remotas de una
   forma transparente, como si se tratara de ficheros locales.

   He aqui algunos los beneficios mas destacados que NFS proporciona:

     * Las estaciones de trabajo locales utilizan menos espacio de
       disco debido a que los datos se encuentran centralizados en un
       unico lugar pero pueden ser accedidos y modificados por varios
       usuarios, de tal forma que no es necesario replicar la
       informacion.

     * Los usuarios no necesitan disponer de un directorio " home" en
       cada una de las maquinas de la organizacion. Los directorios
       "home" pueden crearse en el servidor de NFS para
       posteriormente poder acceder a ellos desde cualquier maquina a
       traves de la infraestrutura de red.

     * Tambien se pueden compartir a traves de la red dispositivos de
       almacenamiento como disqueteras, CDROM y unidades ZIP. Esto
       puede reducir la inversion en dichos dispositivos y mejorar el
       aprovechamiento del hardware existente en la organizacion.

     --------------------------------------------------------------

  29.6.1. Como funciona NFS

   El sistema NFS esta dividido al menos en dos partes principales:
   un servidor y uno o mas clientes. Los clientes acceden de forma
   remota a los datos que se encuentran almacenados en el servidor.
   Para que el sistema funcione correctamente se deben configurar y
   ejecutar unos cuantos procesos.

     Nota: En FreeBSD 5.X se ha reemplazado portmap por rpcbind. de
     esta forma para los ejemplos que vamos a comentar a continuacion
     se recuerda que en FreeBSD 5.X se debe reemplazar cualquier
     instancia de portmap por rpcbind.

   El servidor de NFS debe ejecutar los siguientes daemones:

   Daemon                         Descripcion                         
   nfsd    El daemonNFS, que atiende peticiones de clientes NFS.      
   mountd  El daemon de montaje de NFS, que transporta las peticiones 
           que nfsd(8) realiza.                                       
   portmap El daemon portmapper permite que los clientes NFS puedan   
           descubrir que puerto esta utilizando el servidor de NFS.   

   El cliente tambien puede ejecutar un daemon conocido , como
   nfsiod. El daemon nfsiod atiende las peticiones provinientes del
   servidor NFS. Este daemon es opcional y sirve para mejorar el
   rendimiento pero no es necesario para el funcionamiento correcto
   del sistema. Se recomienda consultar nfsiod(8) para obtener mas
   informacion.

     --------------------------------------------------------------

  29.6.2. Configuracion de NFS

   La configuracion de NFS es un proceso relativamente sencillo. Para
   que los procesos anteriormente descritos se ejecuten en tiempo de
   arranque del sistema, basta con realizar paquenas modificaciones
   en /etc/rc.conf.

   En /etc/rc.conf del servidor de NFS se deben configurar las
   siguientes opciones:

 portmap_enable="YES"
 nfs_server_enable="YES"
 mountd_flags="-r"

   mountd se ejecuta automaticamente cuando se activa el servidor
   NFS.

   En el cliente debemos asegurarnos de que se encuentra activada la
   activada la siguiente opcion dentro de /etc/rc.conf:

 nfs_client_enable="YES"

   El archivo /etc/exports especifica los directorios o sistemas de
   ficheros que NFS exporta al exterior. Cada linea dentro de
   /etc/exports/ especifia un sistema de ficheros y que maquinas
   tienen derechos de acceso sobre dicho sistema. Ademas de los
   derechos de acceso se pueden definir otras opciones de acceso,
   tales como solo lectura o lectura y escritura. Existen multitud de
   opciones que pueden definirse sobre un directorio exportable pero
   en este manual solo se van a comentar unas pocas. Consulte
   exports(5) para obtener una descripcion mas detallada.

   Aqui se muestran algunos ejemplos de entradas para /etc/exports:

   El siguiente ejemplo proporciona una idea de como exportar
   sistemas de ficheros, aunque los parametros pueden diferir
   dependiendo de su entorno y su configuracion de red. En dicho
   ejemplo, se exporta el directorio /cdromm a tres maquinas que se
   encuentran en el mismo dominio que el servidor (de ahi que no se
   especifique ningun nombre de dominio para cada maquina) o que
   pueden estar dadas de alta en /etc/hosts. En cualquier caso la
   opcion -ro configura el sistema de ficheros de red como "solo
   lectura" ("read-only"). Con esta opcion los sistemas remotos no
   seran capaces de realizar cambios sobre el sistema de ficheros
   exportados.

 /cdrom -ro host1 host2 host3

   La siguiente linea exporta el directorio /home a tres maquinas
   utilizando direcciones IP. Esto resulta util cuando disponemos de
   una red privada pero no disponemos de ningun servidor de DNS
   configurado. Tambien se podria configurar /etc/hosts para que
   resolviera nombres de maquinas internos; consulte hosts(5) para
   obtener mas informacion al respecto. La opcion -alldirs permite
   que los subdirectorios del directorio /home tambien se puedan
   utilizar como puntos de montaje. En otras palabras, esto permite
   que los clientes puedan trabajar sobre los subdirectorios en los
   que esten realmente interesados.

 /home  -alldirs  10.0.0.2 10.0.0.3 10.0.0.4

   La siguiente linea exporta el directorio /a de tal forma que
   puedan acceder a dicho directorio dos maquinas situadas en
   distintos dominios. La opcion -maproot=root permite que el usuario
   root de la maquina cliente modifique los datos del sistema de
   ficheros en red como si fuera el usuario root del servidor. Si no
   se especifica la opcion -maproot=root el usuario root del cliente
   puede no poseer los permisos necesarios para realizar
   modificaciones en el sistema de ficheros.

 /a  -maproot=root  host.example.com box.example.org

   Para que un cliente pueda acceder al sistema de ficheros exportado
   debe poseer permisos para ello. Debemos asegurarnos de que el
   cliente se encuentra listado en /etc/exports.

   Dentro de /etc/exports cada linea representa informacion de
   exportacion de un sistema de ficheros para un determinado conjunto
   de maquinas. Una maquina solo puede aparecer una vez dentro de un
   sistema de ficheros exportable y el archivo solo puede tener una
   unica entrada por defecto. Por ejemplo, si suponemos que /usr es
   un unico sistema de ficheros la siguiente configuracion de
   /etc/exports seria incorrecta:

 /usr/src   client
 /usr/ports client

   Existe un sistema de ficheros, concretamente /usr, que posee dos
   lineas con reglas de exportacion para la misma maquina, client. El
   formato correcto para esta situacion seria el siguiente:

 /usr/src /usr/ports  client

   Las propiedades de un sistemas de ficheros que se exporta al
   exterior deben aparecer agrupadas bajo la misma linea. Lineas que
   no poseen ningun cliente se tratan como si tuvieran una unica
   maquina. Esto limita la forma en que pueden configurarse la
   exportaciones de sistemas de ficheros pero para la mayoria de la
   gente no suele ser un problema.

   El ejemplo que se muestra a continuacion es una muestra de una
   lista de exportacion correcta, donde /usr y /exports son sistemas
   de ficheros locales:

 # Exportar src y ports a cliente01 y cliente02, pero
 # solo el cliente01 tiene acceso root
 /usr/src /usr/ports -maproot=root    cliente01
 /usr/src /usr/ports               cliente02
 # Las maquinas cliente tienen acceso root y pueden montar todo lo que aparezca
 # en /exports.  Cualquier sistema puede montar /exports/obj en modo
 # solo lectura
 /exports -alldirs -maproot=root      cliente01 cliente02
 /exports/obj -ro

   Se debe reiniciar el daemon mountd siempre que se modifique el
   contenido del archivo /etc/exports para que los cambios surtan
   efecto. Esto se realiza enviando la senal HUP al proceso mountd:

 # kill -HUP `cat /var/run/mountd.pid`

   Tambien se puede reiniciar FreeBSD para que se cargue la nueva
   configuracion pero este mecanismo no resulta necesario si se
   ejecutan las ordenes como root, que ponen el servidor de NFS de
   nuevo en funcionamiento.

   En el servidor de NFS:

 # portmap
 # nfsd -u -t -n 4
 # mountd -r

   En el cliente de NFS:

 # nfsiod -n 4

   En este punto todo deberia estar preparado para poder anclar el
   sistema de ficheros remoto en la maquina cliente. En los
   siguientes ejemplos el nombre del servidor es server y el punto de
   montaje temporal utilizado por el cliente es client. Si se desea
   montar el sistema de ficheros de forma temporal o simplemente
   comprobar que la configuracion funciona sin problemas se puede
   ejecutar una orden como la que se muestra a continuacion con
   permisos de root en la maquina cliente:

 # mount server:/home /mnt

   Esta orden ancla el directorio /home del servidor en el directorio
   /mnt del cliente. Si todo funciona correctamente deberia poder
   entrar en el directorio /mnt del cliente y ver todos los ficheros
   que se encuentran en el directorio /home del servidor.

   Si queremos anclar automaticamente un sistema de ficheros remoto
   cuando la maquina esta arrancando se puede anadir una linea como
   la siguiente dentro de /etc/fstab:

 servidor:/home  /mnt    nfs     rw      0       0

   fstab(5) comenta todas las opciones disponibles.

     --------------------------------------------------------------

  29.6.3. Usos practicos

   El protocolo NFS tiene multiples usos practicos. Los mas tipicos
   se enumeran a continuacion:

     * Comparticion de la unidad de CDROM entre varias maquinas. Esto
       resulta ser mas barato y una forma mas conveniente para
       instalar software en varias maquinas.

     * En grandes redes puede ser mas adecuado configurar un servidor
       central de NFS en el cual se almacenen todos los "homes" de
       los distintos usuarios. Estos directorios se pueden exportar a
       traves de la red de tal forma que los usuarios pueden trabajar
       con el mismo directorio independientemente de la maquina que
       utilicen.

     * Varias maquinas pueden poseer el directorio
       /usr/ports/distfiles compartido. De este modo cuando
       necesitemos instalar un port en varias maquinas, se puede
       acceder rapidamente a las fuentes sin necesidad de bajarlas
       una vez para cada maquina.

     --------------------------------------------------------------

  29.6.4. Anclajes automaticos usando amd

   Escrito por Wylie Stilwell. Reescrito por Chern Lee.

   El daemon amd(8) ("the automatic mounter daemon", o daemon de
   montaje automatico) automaticamente ancla un sistema de ficheros
   remoto cuando se tiene que acceder a un fichero perteneciente a
   dicho sistema. Los sistemas de ficheros que permanecen inactivos
   durante un determinado periodo de tiempo son automaticamente
   desmontados por el mismo daemon. Este daemon proporciona una
   alternativa sencilla a la utilizacion de los montajes permanentes
   que normalmente se especifican a traves del fichero /etc/fstab.

   amd trabaja actuando como un servidor servidor de NFS para los
   directorios /host y /net. Cuando se accede a algun fichero ubicado
   bajo estos directorios amd busca el punto de montaje remoto y
   automaticamente lo monta. El directorio /net se utiliza para
   anclar sistemas de ficheros remotos especificados mediante
   direcciones IP, mientras que el directorio /host almacena aquellos
   sistemas de ficheros remotos que han sido especificados mediante
   un nombre de maquina.

   amd detecta cualquier intento de acceder a un fichero dentro del
   directorio /host/foobar/usr y se encarga de montar el sistema de
   ficheros remoto (/usr) en la maquina, en caso de que no estuviera
   ya anclado.

   Ejemplo 29-1. Anclaje de una exportacion utilizando amd

   showmount muestra los puntos de montaje que posee una maquina
   remota. Por ejemplo para conocer los montajes de un maquina
   llamada foobar, se puede utilizar:

 % showmount -e foobar
 Exports list on foobar:
 /usr                               10.10.10.0
 /a                                 10.10.10.0
 % cd /host/foobar/usr

   Como se observa en el ejemplo, showmount muestra el directorio
   /usr como una exportacion. Cuando se cambia el directorio actual
   al directorio /host/foobar/usr el daemon amd intenta resolver el
   nombre foobar y automaticamente ancla el sistema de ficheros
   remoto.

   El daemon amd se puede ejecutar a partir de los scripts de inicio,
   utilizando la siguiente linea del archivo de configuracion
   /etc/rc.conf:

 amd_enable="YES"

   Ademas, amd soporta opciones adicionales que pueden definirse
   mediante la variable amd_flags. Por defecto, la variable amd_flags
   posee las siguientes opciones:

 amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"

   El archivo /etc/amd.map define las opciones por defecto con las
   cuales se anclan los sistemas de ficheros remotos. El archivo
   /etc/amd.conf define algunas caracteristicas avanzadas para el
   daemon amd.

   Se ruega consultar las paginas del manual de amd(8) y de
   amd.conf(5) para obtener mas informacion.

     --------------------------------------------------------------

  29.6.5. Problemas de integracion con otras plataformas

   Escrito por John Lind.

   Determinados adaptadores Ethernet para sistemas basados en el bus
   ISA poseen restricciones que pueden producir serios problemas de
   red, en particular con el protocolo NFS. Estos problemas no son
   especificos de FreeBSD, pero los sistemas FreeBSD se ven afectados
   por ellos.

   El problema surge casi siempre cuando el sistema (FreeBSD) esta
   empotrado dentro de una red compuesta por estaciones de trabajo de
   alto rendimiento, como por ejemplo estaciones de Silicon Graphics
   y de Sun Microsystems. El montaje del sistema de ficheros remoto
   suele funcionar perfectamente y algunas operaciones sobre el el
   sistema de ficheros pueden tener e,xito pero de repente el el
   servidor que no responde a las peticiones del cliente, aunque
   peticiones y respuestas de otros clientes funcionan con normalidad
   y se continuan procesando. Esto sucede en los sistemas clientes,
   tanto en sistemas FreeBSD como en otras estaciones de trabajo. En
   muchos sistemas, lo unico que se puede hacer es resetear la
   maquina de forma abrupta, ya que el bloqueo producido por el
   protocolo NFS no se puede solucionar.

   Aunque la solucion "correcta" consiste en obtener un adaptador
   Ethernet con mayor rendimiento y capacidad, todavia se puede
   aplicar un parche sencillo que puede llegar a permitir un
   funcionamiento sin problemas. Si el sistema FreeBSD actua como
   servidor de NFS se puede incluir la opcion w=1024 cuando el
   ejecute una peticion de montaje sobre dicho servidor. Si FreeBSD
   dicho servidor. Si FreeBSD actua como cliente de NFS, se puede
   ejecutar mount(8) con el parametro -r=1024. Estas opciones se
   pueden especificar en el /etc/fstab del cliente para que entren en
   funcionamiento cuando se realicen montajes automaticos y tambien
   se puede utilizar el parametro -o de mount(8) cuando se realicen
   montajes manuales.

   Resulta apropiado resaltar que existe un problema totalmente
   distinto que algunas veces se confunde con el que acabamos de
   describir, que aparece cuando el servidor y los clientes se
   encuentran en redes diferentes. Si nos encontramos en esta
   situacion debemos asegurarnos de que nuestros " routers" estan
   encaminando correctamente los paquetes UDP que genera el protocolo
   NFS pues en caso contrario el sistema no funcionara,
   independientemente de los ajustes que se realicen en el cliente o
   en el servidor.

   En los siguientes ejemplos fastws es el nombre de una estacion de
   trabajo de altas prestaciones y freebox es el nombre de un sistema
   FreeBSD con un adaptador Ethernet de bajas prestaciones. Se
   pretende ademas exportar el directorio /sfcompartido (ver
   exports(5)) y el directorio /projecto. Tenga en cuenta que en
   cualquier caso puede resultar util definir opciones adicionales a
   las que que se muestran en el siguiente ejemplo, como pueden ser
   hard, soft o bg. Esto dependera de la aplicacion que utilice el
   sistema de ficheros remoto.

   Ejemplos de configuracion para el sistema FreeBSD (freebox) que
   actua como cliente. Configuracion del archivo /etc/fstab de
   freebox:

 fastws:/sfcompartido /projecto nfs rw,-r=1024 0 0

   Orden de ejecucion manual para freebox:

 # mount -t nfs -o -r=1024 fastws:/sfcompartido /projecto

   Ejemplos de configuracion para el sistema FreeBSD que actua como
   servidor. Configuracion de /etc/fstab de fastws:

 freebox:/sfcompartido /projecto nfs rw,-w=1024 0 0

   Orden de ejecucion manual para fastws:

 # mount -t nfs -o -w=1024 freebox:/sfcompartido /projecto

   Casi cualquier adaptador Ethernet de 16 bits permite operar sin
   operar sin las restricciones anteriores sobre el tamano de lectura
   o escritura especificado por defecto.

   Por si alguien estuviera interesado a continuacion se muestra el
   error que aparece en estos casos, lo cual explica por que decimos
   que el error resulta irrecuperable. NFS trabaja tipicamente con un
   tamano de "bloque" de 8 K (aunque se pueden producir fragmentos de
   menor tamano). Debido a que el maximo tamano de los paquetes
   Ethernet se encuentra alrededor de los 1500 bytes el "bloque" de
   NFS se trocea en varios paquetes Ethernet aunque desde el punto de
   vista del protocolo NFS se trata como si fuese un unico paquete.
   Los trozos deben reensamblarse en el destino y se debe enviar una
   confirmacion para el bloque recibido. Las estaciones de trabajo de
   altas prestaciones pueden soltar paquetes NFS de forma continua
   uno despues de otro, lo mas juntos posible. Por otro lado en las
   tarjetas de red mas pequenas y de menor capacidad puede ocurrir
   que un paquete recien llegado a la tarjeta sobreescriba
   informacion perteneciente a un paquete anterior antes de que
   llegue a ser transmitido completamente, de tal forma que al
   recibirse el bloque NFS no puede ser ni reconstruido ni ni
   reconocido. Como resultado de este proceso la maquina tratara de
   enviar el mismo paquete transcurridos unos instantes de espera,
   pero se trataran de enviar de nuevo los 8 K que constituyen un
   bloque NFS, y de esta forma se repetira el el proceso, asi hasta
   el infinito.

   Si se mantiene el tamano del bloque por debajo del tamano de
   paquete maximo de Ethernet, podemos asegurar que cualquier paquete
   Ethernet transporta un bloque NFS, el cual puede asentirse
   individualmente, evitando asi la explosion de paquetes y el
   eventual bloqueo del sistema.

   Desbordamientos circulares del "buffer" (" overruns") pueden
   producirse si nos encontramos con una estacion de trabajo de altas
   prestaciones que envia continuamente mucho trafico a un sistema
   convencional, pero con tarjetas Ethernet de buena calidad, estos
   desbordamientos resultan altamente improbables para el caso de los
   tamanos de bloque por defecto generados por el sistema NFS. Cuando
   se produce un desbordamiento, las unidades afectadas se
   retransmiten, y existe una gran probabilidad de que se reciban, se
   reensamblen y se confirmen.

     --------------------------------------------------------------

29.7. Ejecucion sin disco duro

   Actualizado por Jean-Franc,ois Dockes. Reorganizado y ampliado por
   Alex Dupre.

   Una maquina FreeBSD se puede arrancar a traves de la red y operar
   sin que necesite poseer ningun disco, utilizando sistemas de
   ficheros de un servidor de NFS. No se necesita realizar ninguna
   modificacion al sistema, salvo configurar determinados ficheros.
   Este tipo de sistemas se pueden configurar facilmente puesto que
   FreeBSD dispone de todos los elementos necesarios:

     * Existen al menos dos formas de cargar el nucleo del sistema
       operativo a traves de la red:

          * PXE: El sistema de Intel conocido como Preboot Execution
            Environment. Se trata de una especie de arranque
            inteligente a partir de una memoria de solo lectura (ROM)
            que se encuentra en algunas placas bases y tarjetas de
            red. Se puede obtener mas informacion en pxeboot(8).

          * El port etherboot (net/etherboot) genera codigo de solo
            lectura (codigo ROM) que se puede utilizar para arrancar
            maquinas a traves de la red. Dicho codigo se puede
            instalar en una memoria de arranque tipo PROM en algunas
            tarjetas de red o se puede cargar en una disquetera (o
            disco duro), y tambien en un sistema de ficheros MS-DOS
            que este en ejecucion. Varias tarjetas de red soportan
            este mecanismo.

     * Existe un script de ejemplo
       (/usr/share/examples/diskless/clone_root) que facilita la
       creacion y el mantenimiento del sistema de ficheros raiz de la
       estacion de trabajo en el servidor. La configuracion de este
       "script" se debe retocar ligeramente pero sirve como punto de
       partida para comenzar rapidamente.

     * Existen ficheros estandar de arranque bajo /etc que dan
       soporte al arranque de maquinas sin disco.

     * El "swapping", en caso de ser necesario, se puede realizar
       usando NFS y tambien usando un disco duro local.

   Existen varias formas de ejecutar una estacion de trabajo sin
   discos. En el proceso se involucran distintos elementos y la
   mayoria se pueden adaptar a las necesidades del usuario. A
   continuacion se describen variaciones sobre la configuracion de un
   sistema sin discos, haciendo incapie en la simplicidad y
   compatibilidad con los "scripts" de arranque de FreeBSD. El
   sistema que vamos a describir tiene las siguientes
   caracteristicas.

     * Las estaciones de trabajo sin disco utilizan un sistema de
       ficheros raiz de solo lectura y un sistema de ficheros
       compartido, tambien de solo lectura, bajo /usr.

       El sistema de ficheros raiz es una copia del sistema raiz
       estandar de FreeBSD (normalmente del sistema raiz del
       servidor), donde se sobreescriben algunos archivos de
       configuracion necesarios para la ejecucion sin discos y para
       la configuracion local especifica de la maquina objetivo.

       Las partes del sistema de ficheros raiz que tiene que tener
       permisos de lectura y escritura se superponen con los sistemas
       de ficheros mfs(8) (FreeBSD 4.X) o md(4). Cualquier cambio que
       se produzca en dichas partes se perdera cuando se reinicie el
       sistema.

     * El nucleo se transmite y se carga utilizando etherboot o bien
       PXE, dependiendo del hardware y los mecanismos que se
       soporten.

     AtencionComo se ha comentado con anterioridad estos sistemas son
     inseguros. Se debe confinar dentro de una red protegida y el
     resto de las maquinas por defecto no deben confiar en estos
     metodos.

   Toda la informacion que se presenta en esta seccion se ha probado
   utilizando FreeBSD 4.9-RELEASE y 5.2.1-RELEASE. El texto se
   encuentra estructurado principalmente para utilizacion en sistemas
   4.X. Se insertan notas para indicar cambios producidos en las
   versiones 5.X.

     --------------------------------------------------------------

  29.7.1. Conocimientos previos

   Configurar estaciones de trabajo sin discos es una operacion
   relativamente sencilla pero en la que pueden cometerse errores.
   Estos errores resultan algunas veces dificiles de diagnosticar
   debido a razones que vamos a exponer a continuacion. Por ejemplo:

     * Diferentes opciones de tiempo de compilacion pueden determinar
       comportamientos distintos en tiempo de ejecucion.

     * Los mensajes de error a menudo resultan cripticos o incluso no
       existen.

   Se se quieren resolver los posibles problemas que puedan surgir
   resulta muy util conocer el funcionamiento conceptual del
   mecanismo.

   Para que el arranque se produzca exitosamente se deben realizar
   varias operaciones:

     * La maquina necesita obtener algunos parametros iniciales,
       tales como su direccion IP, el fichero ejecutable, el nombre
       del servidor y la ruta raiz. Esto se realiza utilizando los
       protocolos DHCP o BOOTP. DHCP es una extension compatible del
       protocolo BOOTP y utiliza los mismos numeros de puertos y los
       mismos formatos de paquete basicos.

       Es posible configurar un sistema de tal forma que utilice
       solamente BOOTP. En el sistema base de FreeBSD se incluye el
       programa servidor bootpd(8).

       No obstante DHCP posee varias ventajas sobre BOOTP (archivos
       de configuracion mas limpios, posibilidad de ejecutar PXE,
       junto con otras caracteristicas que no se relacionan
       directamente con el tema que estamos tratando tratando) por lo
       que principalmente se va a describir la configuracion de DHCP,
       proporcionando ejemplos equivalentes en bootpd(8) siempre que
       sea posible. La configuracion de ejemplo se basa en el paquete
       software de ISC DHCP (en el servidor de prueba se instalo la
       version 3.0.1.r12).

     * La maquina sin disco necesita transferir uno o varios
       programas a la memoria local. Para ello se usa TFTP o bien
       NFS. La eleccion entre ambos se produce mediante la
       configuracion de la compilacion que se produce en varios
       lugares. Una fuente de error tipica aparece cuando se
       especifican ficheros con el protocolo incorrecto: TFTP
       normalmente transfiere todos los ficheros desde un unico
       directorio del servidor, de modo que espera nombres de
       ficheros relativos a dicho directorio. Por otro lado NFS
       necesita recibir rutas de fichero absolutas.

     * El kernel y los programas de arranque intermedios deben ser
       inicializados y ejecutados. Existen diferencias importantes en
       este area:

          * PXE carga pxeboot(8), una version modificada de la
            tercera fase del cargador de arranque de FreeBSD.
            loader(8) obtiene la mayoria de los parametros necesarios
            para arrancar el sistema y los deposita en variables de
            entorno del kernel antes de tranferir el control. En este
            caso es posible utilizar un un nucleo GENERIC .

          * etherboot carga directamente el directamente el nucleo
            con menos trabajo previo que el metodo anterior. Para
            ello se debe compilar un nucleo con ciertas opciones.

       PXE y etherboot funcionan muy bien en los sistemas 4.X. Dado
       que los nucleos de los sistemas 5.X permiten que el loader(8)
       realice mas tareas, se prefiere usar PXE.

       Si su BIOS y su tarjeta de red soportan PXE lo normal es
       utilizarlo. No obstante se puede arrancar un sistema 5.X
       utilizando etherboot.

     * Para acabar la tarea la maquina necesita acceder al sistema de
       ficheros. En todos los casos se utiliza NFS.

   No olvide consultar diskless(8).

     --------------------------------------------------------------

  29.7.2. Instrucciones de configuracion

    29.7.2.1. Configuracion utilizando ISC DHCP

   El servidor ISC DHCP puede responder tanto a peticiones de BOOTP
   como a peticiones de DHCP.

   ISC DHCP no forma parte de la version 4.9 de FreeBSD por lo que se
   debe instalar el port net/isc-dhcp3-server o el paquete
   correspondiente. Por favor, consulte Capitulo 4 para obtener mas
   informacion sobre los ports y los paquetes.

   Una vez que ISC DHCP se encuentra instalado necesita un fichero de
   configuracion para poder ejecutarse /usr/local/etc/dhcpd.conf). A
   continuacion se muestra un ejemplo comentado, donde la maquina
   margaux utiliza etherboot y la maquina corbieres utiliza PXE:

 default-lease-time 600;
 max-lease-time 7200;
 authoritative;

 option domain-name "example.com";
 option domain-name-servers 192.168.4.1;
 option routers 192.168.4.1;

 subnet 192.168.4.0 netmask 255.255.255.0 {
   use-host-decl-names on; (1)
   option subnet-mask 255.255.255.0;
   option broadcast-address 192.168.4.255;

   host margaux {
     hardware ethernet 01:23:45:67:89:ab;
     fixed-address margaux.example.com;
     next-server 192.168.4.4; (2)
     filename "/data/misc/kernel.diskless"; (3)
     option root-path "192.168.4.4:/data/misc/diskless"; (4)
   }
   host corbieres {
     hardware ethernet 00:02:b3:27:62:df;
     fixed-address corbieres.example.com;
     next-server 192.168.4.4;
     filename "pxeboot";
     option root-path "192.168.4.4:/data/misc/diskless";
   }
 }
          

   (1)
           Esta opcion indica a dhcpd que envie el valor que se
           encuentra en las declaraciones de host como el nombre de
           maquina para la maquina sin disco. Otra forma de hacer
           esto seria anadiendo una opcion option host-name margaux
           dentro de las declaraciones de maquina.
   (2)
           La directiva next-server selecciona el servidor de TFTP o
           de NFS que se debe utilizar para cargar el nucleo o el
           fichero cargador del nucleo (por defecto se utiliza la
           misma maquina que actua como servidor de DHCP).
   (3)
           La directiva filename define el archivo que etherboot o
           PXE cargara en el siguiente paso de ejecucion. Debe
           especificarse de acuerdo con el metodo de transferencia
           seleccionado. Etherboot se puede compilar para que use NFS
           o TFTP. El sistema FreeBSD se configura por defecto para
           NFS. PXE utiliza TFTP por lo que se utiliza una ruta
           relativa para especificar el nombre del fichero (esto
           puede depender de la configuracion del servidor de TFTP
           pero suele ser lo normal). Ademas PXE no carga el nucleo,
           lo hace pxeboot. Existen otras posibilidades interesantes,
           como cargar pxeboot desde el directorio /boot de una
           unidad de CD-ROM de FreeBSD (ya que pxeboot(8) puede
           cargar un nucleo GENERIC surge la posibilidad de utilizar
           PXE para arrancar desde una unidad de CD-ROM remota).
   (4)
           La opcion root-path define la ruta para el sistema de
           ficheros raiz utilizando la notacion tipica de NFS. Cuando
           se utiliza PXE, es posible dejar la direccion IP siempre y
           cuando no se active la opcion del nucleo de BOOTP. El
           servidor NFS sera en este caso el mismo que el servidor de
           TFTP.

     --------------------------------------------------------------

    29.7.2.2. Configuracion utilizando BOOTP

   A continuacion se muestra la configuracion equivalente utilizando
   bootpd (reducida a un unico cliente). Esta configuracion se debe
   situar en /etc/bootptab.

   Por favor, recuerde que etherboot se debe compilar con la opcion
   especifica de NO_DHCP_SUPPORT para que pueda utilizar BOOTP y que
   PXE requiere DHCP. La unica ventaja obvia de bootpd es que se
   encuentra disponible en el sistema base.

 .def100:\
   :hn:ht=1:sa=192.168.4.4:vm=rfc1048:\
   :sm=255.255.255.0:\
   :ds=192.168.4.1:\
   :gw=192.168.4.1:\
   :hd="/tftpboot":\
   :bf="/kernel.diskless":\
   :rp="192.168.4.4:/data/misc/diskless":

 margaux:ha=0123456789ab:tc=.def100
          

     --------------------------------------------------------------

    29.7.2.3. Preparacion de un programa de arranque con Etherboot

   La pagina web de Etherboot contiene una amplia documentacion
   enfocada principalmente a los sistemas Linux pero en cualquier
   caso contiene informacion que puede resultar util. En los
   siguientes parrafos se describe brevemente como se puede utilizar
   etherboot en un sistema FreeBSD.

   Lo primero es instalar el port o paquete net/etherboot. El port de
   etherboot esta en /usr/ports/net/etherboot. Si el arbol de ports
   esta instalado en el sistema basta con ejecutar make en dicho
   directorio. Por favor, lea Capitulo 4 para saber mas sobre los
   ports y los paquetes.

   Se puede modificar la configuracion de etherboot (por ejemplo,
   para que use TFTP en lugar de NFS) editando el fichero Config que
   se encuentra en el directorio fuente de etherboot.

   Para nuestros propositos se utilizara un disquete de arranque.
   Para utilizar otros metodos (PROM o un programa MS-DOS) por favor
   consulte la documentacion de etherboot.

   Para crear un disco de arranque se debe insertar un disco en la
   unidad de disquetes de la maquina donde se ha instalado etherboot,
   cambiar al directorio src dentro del arbol de directorios de
   etherboot y teclear:

 # gmake bin32/tipo_de_dispositivo.fd0
        

   tipo_de_dispositivo depende del tipo de tarjeta Ethernet que se
   encuentre instalada en la estacion de trabajo sin disco. Consulte
   el fichero NIC en el mismo directorio para determinar cual es el
   tipo_de_dispositivo que debe usted usar.

     --------------------------------------------------------------

    29.7.2.4. Arranque con PXE

   Por defecto el cargador pxeboot(8) carga, valga la redundancia, el
   kernel via NFS. El El cargador se puede compilar para que utilice
   TFTP en lugar de NFS especificando la opcion LOADER_TFTP_SUPPORT
   dentro de /etc/make.conf. Observe los comentarios de
   /etc/defaults/make.conf (o de /usr/share/examples/etc/make.conf
   para sistemas 5.X) para saber mas detalles.

   Existen otras dos opciones de make.conf no documentadas que pueden
   ser utiles para arrancar una maquina sin disco a traves del puerto
   serie: BOOT_PXELDR_PROBE_KEYBOARD y BOOT_PXELDR_ALWAYS_SERIAL
   (esta ultima solo existe en FreeBSD 5.X).

   Para utilizar PXE cuando arranca la maquina normalmente el usuario
   tiene que seleccionar la opcion Boot from network dentro del menu
   de opciones de la BIOS o pulsar un tecla de funcion cuando la
   maquina se esta inicializando.

     --------------------------------------------------------------

    29.7.2.5. Configuracion de servidores de TFTP y de NFS

   Si PXE o etherboot se encuentran configurados para utilizar TFTP
   se necesita activar tftpd en el servidor de ficheros:

    1. Crear un directorio desde el cual el daemon tftpd servira los
       ficheros, por ejemplo /tftpboot.

    2. Anadir la siguiente linea a /etc/inetd.conf:

 tftp    dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -l -s /tftpboot

         Nota: Parece que al menos algunas versiones de PXE utilizan
         la version TCP de TFTP. En este caso se puede anadir una
         segunda linea, donde se reemplace dgram udp por stream tcp.

    3. Indicar a inetd que vuelva a leer su fichero de configuracion:

 # kill -HUP `cat
                 /var/run/inetd.pid`

   Se puede situar el directorio tftpboot en cualquier parte del
   servidor. Debe asegurarse de que la localizacion se encuentra
   correctamente configurada tanto en inetd.conf como en dhcpd.conf.

   En todos los casos tambien resulta necesario activar el sistema de
   NFS y exportar los sistemas de ficheros adecuados, todo ello en el
   servidor de NFS.

    1. Anadir lo siguiente a /etc/rc.conf:

 nfs_server_enable="YES"

    2. Exportar el sistema de ficheros donde el directorio raiz sin
       disco se encuentra localizado anadiendo lo siguiente a
       /etc/exports (ajuste el punto de montaje de la unidad y
       sustituya margaux corbieres por el nombre de las estaciones de
       trabajo sin disco, segun corresponda):

 /data/misc -alldirs -ro margaux corbieres

    3. Indicar a mountd que vuelva a leer su archivo de
       configuracion. Si en un primer paso se ha configurado la
       activacion automatica del sistema de NFS en /etc/rc.conf lo
       mejor es reiniciar para que los cambios surtan efecto.

 # kill -HUP `cat
                 /var/run/mountd.pid`

     --------------------------------------------------------------

    29.7.2.6. Construccion de un kernel sin disco

   Si se utiliza etherboot, se necesita crear un archivo de
   configuracion para el kernel de la maquina sin disco que posea las
   siguientes opciones (ademas de las opciones del nucleo
   habituales):

 options     BOOTP          # Use BOOTP to obtain IP address/hostname
 options     BOOTP_NFSROOT  # NFS mount root filesystem using BOOTP info
        

   Puede resultar interesante utilizar ademas BOOTP_NFSV3,
   BOOT_COMPAT y BOOTP_WIRED_TO (consultar LINT en 4.X o NOTES en
   sistemas 5.X).

   Los nombres de estas opciones son nombres historicos y ligeramente
   confusos ya que permiten un uso indistinto tanto de DHCP como de
   BOOTP dentro del nucleo (tambien resulta posible forzar la
   utilizacion unica de o bien BOOTP o bien de DHCP).

   Contruir el nucleo (vea Capitulo 8) y copiarlo al lugar
   especificado en el archivo dhcpd.conf.

     Nota: Cuando se utiliza PXE, la construccion del nucleo con las
     opciones anteriores no resulta ser algo estrictamente necesario
     (aunque se recomienda). Activar dichas opciones provoca un mayor
     trafico de peticiones de DHCP durante el arranque del nucleo, lo
     que puede dar lugar a pequenas inconsistencias entre los nuevos
     valores y los los valores recuperados por pxeboot(8) en casos
     muy especificos. La ventaja de utilizarlas consiste en que como
     un efecto colateral se configurara el nombre de la maquina. De
     otro modo tendriamos que configurar dicho nombre mediante otro
     metodo por ejemplo mediante la configuracion especifica de la
     maquina cliente a traves del archivo rc.conf.

     Nota: Para que el nucleo se pueda cargar sin problemas con
     etherboot en sistemas 5.X dicho nucleo tiene que tener compilado
     el soporte para device hints. Para ello normalmente se
     especifica la siguiente opcion dentro del fichero de
     configuracion del nucleo (consulte los comentarios del fichero
     NOTES):

 hints           "GENERIC.hints"

     --------------------------------------------------------------

    29.7.2.7. Preparacion del sistema de ficheros raiz

   Se debe crear un sistema de ficheros raiz en las estaciones de
   trabajo sin disco, concretamente en la localizacion especificada
   por root-path dentro de dhcpd.conf. Las siguientes secciones
   describen dos formas de hacer esto.

     --------------------------------------------------------------

      29.7.2.7.1. Utilizacion del "script" clone_root

   Este es el modo mas rapido de crear un sistema de ficheros raiz,
   pero actulamente solo se encuentra soportado en FreeBSD 4.X. El
   "script" de shell se encuentra en
   /usr/share/examples/diskless/clone_root y debe ser configurado al
   menos para ajustar el lugar donde se construira el sistema de
   ficheros (concretamente la variable DEST).

   Consulte los comentarios que se encuentran al comienzo del
   "script" para conocer cuales son las instrucciones que debe
   seguir. Alli se explica como se construye el sistema de ficheros
   base y como determinados ficheros se pueden sobreescribir de
   manera selectiva por versiones especificas para funcionar sin
   discos, para toda una subred o para una maquina individual.
   Tambien alli se muestran ejemplos de los ficheros /etc/fstab y
   /etc/rc.conf para maquinas sin disco.

   Los archivos README que se encuentran dentro de
   /usr/share/examples/diskless contienen mucha informacion de base,
   que junto con el resto de ejemplos dentro del directorio diskless
   sirven para documentar un metodo de configuracion distinto del que
   se utiliza en clone_root y en los " scripts" del sistema de /etc,
   que resultan ser un tanto confusos. No obstante se pueden utilizar
   a modo de referencia, excepto si se prefiere utilizar el metodo
   que se describe en ellos, en cuyo caso se necesitara modificar y
   adaptar los "scripts" de forma adecuada.

     --------------------------------------------------------------

      29.7.2.7.2. Utilizacion del procedimiento estandar de make world

   Este metodo se puede utilizar tanto en FreeBSD 4.X o 5.X y se
   instalara un sistema completamente nuevo (no solo el sistema de
   ficheros raiz) dentro de DESTDIR. Basta con ejecutar el siguiente
   " script":

 #!/bin/sh
 export DESTDIR=/data/misc/diskless
 mkdir -p ${DESTDIR}
 cd /usr/src; make world && make kernel
 cd /usr/src/etc; make distribution

   Una vez ejecutado puede ser necesario ajustar los ficheros
   /etc/rc.conf y /etc/fstab que se encuentran en DESTDIR de acuerdo
   con nuestras necesidades.

     --------------------------------------------------------------

    29.7.2.8. Configuracion de la particion de intercambio

   En caso de ser necesario se puede acceder a un fichero de
   intercambio (swap) a traves del sistema NFS. Uno de los metodos
   tipicamente utilizados para realizar esta tarea ha sido retirado
   de la distribucion 5.X.

     --------------------------------------------------------------

      29.7.2.8.1. NFS swap en sistemas FreeBSD 4.X

   La ubicacion del fichero de intercambio y su tamano se puede
   especificar con las opciones FreeBSD-specific 128 y 129 de
   BOOTP/DHCP. A continuacion se muestran varios ejemplos de ficheros
   de de configuracion para ISC DHCP 3.0 o bootpd:

    1. Anadir las siguientes lineas al fichero dhcpd.conf:

 # Global section
 option swap-path code 128 = string;
 option swap-size code 129 = integer 32;

 host margaux {
   ... # Standard lines, see above
   option swap-path "192.168.4.4:/netswapvolume/netswap";
   option swap-size 64000;
 }
            

       swap-path es la ruta al directorio donde se instalaran los
       archivos de intercambio. Cada Cada fichero se denomina
       swap.direccion-ip-del-cliente.

       Versiones mas antiguas de dhcpd usaban una sintaxis del estilo
       de option option-128 "..., lo cual ya no esta soportado.

       /etc/bootptab normalmente utiliza la siguiente sintaxis:

 T128="192.168.4.4:/netswapvolume/netswap":T129=0000fa00

         Nota: El tamano del fichero dedicado a intercambio se debe
         expresar en /etc/bootptab en formato hexadecimal.

    2. En el servidor de ficheros NFS donde va a residir el fichero
       de "swap" se debe(n) crear dicho(s) fichero(s)

 # mkdir /volumenintercambiored/intercambiored
 # cd /volumenintercambiored/intercambiored
 # dd if=/dev/zero bs=1024 count=64000 of=swap.192.168.4.6
 # chmod 0600 swap.192.168.4.6
            

       192.168.4.6 es la direccion IP del cliente sin disco.

    3. En el servidor NFS anadir a /etc/exports la siguiente linea:

 /volumenintercambiored  -maproot=0:10 -alldirs margaux corbieres
            

       A continuacion indicar a mountd que vuelva a leer el fichero
       /etc/exports como se ha indicado anteriormente.

     --------------------------------------------------------------

      29.7.2.8.2. NFS swap en FreeBSD 5.X

   El nucleo no soporta la activacion del intercambio a traves de NFS
   en tiempo de arranque. De esta forma la "swap" se debe activar
   mediante los "scripts" montando un sistema de ficheros de
   lectura-escritura y creando y activando el fichero de intercambio.
   Para crear un fichero de intercambio de un determinado tamano se
   puede ejecutar lo siguiente:

 # dd if=/dev/zero of=/ruta/al/fichero/de/intercambio bs=1k count=1 oseek=100000

   Para activar el intercambio se tiene que anadir la siguiente linea
   al fichero de configuracion rc.conf:

 swapfile=/ruta/al/fichero/de/intercambio

     --------------------------------------------------------------

    29.7.2.9. Varios

      29.7.2.9.1. Ejecucion con un /usr de solo lectura

   Si la estacion de trabajo sin disco se configura para utilizar el
   sistema X-Window se tiene que ajustar el fichero de configuracion
   de xdm debido a que dicho fichero situa por defecto el fichero de
   "logs" de errores en el directorio /usr.

     --------------------------------------------------------------

      29.7.2.9.2. Uso de un servidor no-FreeBSD

   Cuando el servidor del sistema de ficheros raiz no ejecuta FreeBSD
   se tiene que crear un sistema de ficheros raiz sobre una maquina
   FreeBSD para despues copiarlo al servidor original mediante las
   ordenes tar o cpio.

   En esta situacion algunas veces surgen varios problemas
   relacionados con los dispositivos especiales que se encuentran en
   el directorio /dev debido a los diferentes tamanos de los enteros
   mayor/menor. Una solucion para este problema consiste en exportar
   un directorio del servidor no-FreeBSD, montar este directorio en
   la maquina FreeBSD anterior y ejecutar MAKEDEV en dicha maquina
   para crear las entradas de dispositivo correctas (FreeBSD 5.0 y
   posteriores utilizan devfs(5) para ubicar nodos de dispositivos de
   forma transparente para el usuario de tal modo que la ejecucion de
   MAKEDEV en estos sistemas no sirve para nada).

     --------------------------------------------------------------

29.8. RDSI

   la pagina de RDSI de Dan Kegel constituye un recurso de
   informacion bastante bueno sobre la tecnologia RDSI (ISDN en
   ingles) y sobre el hardware relacionado.

   A continuacion se comenta un esquema rapido sobre RDSI:

     * Si usted vive en Europa le puede resultar util leer la seccion
       sobre tarjetas RDSI.

     * Si se prevee utilizar RDSI principalmente para conectarse a
       Internet a traves de un Proveedor de Servicios utilizando un
       mecanismo de marcacion automatica no dedicado (dial-up), se
       puede echar un vistazo a los Adaptadores de Terminal. Dichos
       adaptadores proporciona la mayor flexibilidad y garantiza los
       minimos problemas en caso de cambio de cambio de proveedor.

     * Si estamos conectados a dos LAN o conectando a Internet con
       una conexion RDSI dedicada puede ser interesante considerar la
       opcion de usar un "router/bridge" unico.

   El coste es un factor importante a la hora de determinar que
   solucion se debe escoger. Las siguientes opciones se encuentran
   ordenadas desde las mas baratas hasta las mas caras.

     --------------------------------------------------------------

  29.8.1. Tarjetas RDSI

   Escrito por Hellmuth Michaelis.

   La implementacion de RDSI que posee FreeBSD soporta solamente el
   estandar DSS1/Q.931 (tambien conocido como Euro-RDSI) utilizando
   tarjetas pasivas. A partir de FreeBSD 4.4 se soportan tambien
   algunas tarjetas activas usando firmware que ademas soporta otros
   protocolos de senalizacion; esto tambien sucede con la primera
   tarjeta RDSI de acceso primario (PRI) soportada.

   El software isdn4bsd permite conectar con otras pasarelas RDSI
   utilizando IP sobre HDLC o bien PPP PPP sincrono: ambos mediante
   el uso del PPP del nucleo con isppp, una version modificada del
   controlador sppp(4) o mediante la utilizacion del PPP de entorno
   de usuario, ppp(8). Si se utiliza ppp(8) de entorno de usuario se
   pueden agrupar dos o mas canales B de RDSI (channel bonding).
   Existe tambien software que permite a una maquina responder a
   llamadas de telefono y algunas cosas mas como un modem de 300
   baudios.

   Cada vez se soportan mas tarjetas RDSI bajo FreeBSD y los informes
   existentes muestra que FreeBSD se utiliza con dichas tarjetas de
   forma satisfactoria en toda Europa y tambien en otras partes del
   mundo.

   Las tarjetas RDSI pasivas soportadas en FreeBSD son principalmente
   las que poseen el chip Infineon (antiguamente Siemens)
   ISAC/HSCX/IPAC. Tambien las tarjetas RDSI con los chips de Cologne
   (en bus ISA exclusivamente), tarjetas PCI con el chip Winbond
   W6692, algunas tarjetas con combinaciones de los chips Tiger
   300/320/ISAC y tambien algunas tarjetas basadas en chips
   propietarios como las AVM Fritz! PCI V.1.0 y AVM Fritz! PnP.

   Actualmente las tarjetas RDSI activas soportadas son las AVM B1
   (ISA y PCI) BRI, y las AVM T1 PCI PRI.

   Se puede consultar /usr/share/examples/isdn/ para obtener
   documentacion sobre isdn4bsd y tambien en la pagina principal de
   isdn4bsd, donde hay enlaces de ayuda, erratas y mucha mas
   informacion util, como por ejemplo el manual de isdn4bsd.

   Si se quiere anadir soporte para un protoclo RDSI distinto para
   una tarjeta RDSI que no se encuentra soportada o para mejorar
   isdn4bsd en algun aspecto por favor pongase en contacto con
   Hellmuth Michaelis <hm@FreeBSD.org>.

   Para realizar consultas referentes a la instalacion, configuracion
   y depuracion de problemas relacionados con isdn4bsd le
   recomendamos recurrir a la lista de correo freebsd-isdn.

     --------------------------------------------------------------

  29.8.2. Adaptadores de terminal RDSI

   Los Adaptadores de Terminal (TA), son para RDSI lo que los modems
   son para las lineas de telefono convencionales.

   La mayor parte de los TAs utilizan el conjunto de instrucciones AT
   de los modem Hayes y se pueden utilizar en lugar del modem.

   Un TA opera basicamente de igual forma que un modem,
   diferenciandose en que las velocidades de conexion y "throughput"
   son mucho mas grandes. La configuracion de PPP se realiza
   exactamente igual que para una configuracion de modem
   convencional.

   La ventaja principal de utilizar un TA para conectarse a un
   proveedor de servicios de internet consiste en que se puede usar
   PPP dinamico. Ya que el espacio de direcciones de IP se esta
   direcciones de IP se esta convirtiendo cada vez convirtiendo en un
   recurso cada di mas limitado y escaso los proveedores ya no desean
   proporcionar direcciones IP estaticas a sus clientes. No obstante
   la mayoria de los "routers standalone" no son capaces de adquirir
   direcciones IP dinamicas.

   Los TAs confian completamente en el daemon de PPP que se esta
   ejecutando para proporcionar fiabilidad y estabilidad en la
   conexion. De esta forma si se tiene configurado PPP se puede
   migrar facilmente de la utilizacion de modems analogicos al uso de
   RDSI. No obstante si existia algun problema con PPP antes de
   efectuar la migracion dichos problemas persistiran en RDSI.

   Si se desea maxima estabilidad se puede utilizar la opcion PPP, no
   el PPP a nivel de usuario.

   Se sabe que los siguientes TAs funcionan con FreeBSD:

     * Motorola BitSurfer y Bitsurfer Pro

     * Adtran

   La mayoria de los demas TAs probablemente tambien funcionen puesto
   que los fabricantes siempre tratan de que sus productos puedan
   aceptar la mayoria de las ordenes AT.

   El problema que existe con los TAs es que, como sucede con los
   modems, se necesita tener una buena tarjeta serie instalada en el
   sistema.

   Se recomienda consultar el tutorial FreeBSD Serial Hardware para
   obtener una comprension detallada del funcionamiento de los
   dispositivos serie en FreeBSD y para comprender las diferencias
   entre puertos serie sincronos y asincronos.

   Un TA que se ejecuta a traves de un puerto serie (asincrono) esta
   limitado a 115.2 Kbs, aunque la conexion RDSI sea de 128 Kbs. Para
   utilizar completamente el ancho de banda que RDSI proporciona, se
   debe conectar el TA a una tarjeta serie sincrona.

   No se engane creyendo que comprando un TA interno hara desaparecer
   los problemas sincronos/asincronos. Los TA internos simplemente
   disponen de un chip de puerto serie instalado de fabrica. Lo unico
   que se consigue con estos dispositivos es no tener que enchufarlos
   a la red eletrica ahorrando asi un enchufe y no tener que comprar
   un cable serie, pero los problemas dichos anteriormente
   permanecen.

   Una tarjeta asincrona con un TA resulta ser al menos tan rapida
   como un "router standalone" y si FreeBSD controla dicha tarjeta se
   puede adaptar mas facilmente.

   La eleccion de una tarjeta sincrona/TA versus un "router
   standalone" se trata en la mayoria de los casos de una cuestion
   cuasi-religiosa. Han existido diversas discusiones sobre este tema
   en varias listas de correo. Nosotros recomendamos que busque
   informacion en los historicos para para poder sopesar los pros y
   los contras que se han esgrimido en tales discusiones.

     --------------------------------------------------------------

  29.8.3. "bridges/routers" RDSI "Stand-alone"

   Los "bridges" o "routers" RDSI no son especificos de FreeBSD o de
   cualquier otro sistema operativo. Para una descripcion completa de
   la tecnologia de "bridge" y de pasarela de red por favor consulte
   cualquier libro sobre redes.

   En el contexto de esta seccion los terminos "router", pasarela y
   "bridge" se utilizaran indistintamente.

   Segun va bajando el coste de los " routers/bridges" RDSI su
   utilizacion entre el publico en general va en aumento. Un "router"
   RDSI es una pequena caja que se conecta directamente a la red
   Ethernet local y que gestiona sus propias conexiones con el
   "bridge/router" remoto. Posee un software preconfigurado para
   comunicarse via PPP y tambien utilizando otros protocolos de uso
   comun.

   Un router sopota una mayor tasa de paquetes (throughput) que un
   "standalone TA", ya que utiliza una conexion RDSI sincrona de
   forma completa.

   El problema principal que surge con los "routers" y los "bridges"
   RDSI es que la interoperatibilidad entre fabricantes muchas veces
   causa problemas. Si se esta planificando conectarse a un proveedor
   de servicios resulta conveniente discutir previamente con ellos
   las necesidades y requisitos.

   Si se tiene en mente conectar dos segmentos LAN tales como su LAN
   de casa y la LAN de su oficina RDSI proporciona la solucion mas
   simple y menos costosa de gestionar. Esto es asi porque al comprar
   usted mismo el equipamiento necesario para ambos extremos de la
   conexion tiene usted el control sobre el enlace y puede asegurar
   su correcto funcionamiento.

   Por ejemplo, si queremos conecar una computadora casera o una
   sucursal de la red de oficinas con la oficinal central, se puede
   utilizar una configuracion como la que se muestra a continuacion.

   Ejemplo 29-2. Sucursal o red domestica

   La red utiliza una topologia basada en bus con Ethernet tipo 10
   base 2 ("thinnet"). Se conecta, en caso de ser necesario, el
   "router" a la red cableada mediante un "transceiver" AUI/10BT.

 ---Estacion Sun
 |
 ---Sistema FreeBSD
 |
 ---Windows 95
 |
 Router Stand-alone
    |
 ISDN BRI line

   Si nuestra sucursal o red hogar esta compuesta unicamente por una
   computadora se puede utilizar un cable cruzado de par trenzado
   para conectar con el "router standalone" de forma directa.

   Ejemplo 29-3. Oficina central u otra LAN

   La red utiliza una topologia en estrella basada en Ethernet de 10
   base T ("Par Trenzado").

     -------Novell Server
     | H |
     |   ---Sun
     |   |
     | U ---FreeBSD
     |   |
     |   ---Windows 95
     | B |
     |___---Stand-alone router
                 |
         ISDN BRI line

   Una gran ventaja que poseen la mayoria de los "routers/bridges" es
   que pueden gestionar al mismo tiempo dos conexiones PPP
   independientes destinadas a dos organizaciones distintas. Esta
   funcionalidad no se proporciona en la mayoria de los TAs, excepto
   para determinados modelos (normalmente mas caros) que se fabrican
   con dos puertos serie. No confunda esto con la agrupacion de
   canales, MPP, etc.

   Esta caracteristica puede resultar muy util si, por ejemplo, se
   dispone de una conexion RDSI dedicada con la oficina y queremos
   introducirnos en ella pero no queremos utilizar otra linea RDSI en
   el trabajo. Un "router" situado en las instalaciones de la oficina
   puede gestionar una conexion de canal B dedicada (64 Kpbs) hacia
   internet y utilizar el otro canal B como una conexion de datos
   independiente. El segundo canal B se puede utilizar para marcacion
   remota ("dial-in" y " dial-out") o para agrupacion dinamica de
   canales (MPP, etc) en conjuncion con el primer canal B con el
   objetivo de obtener un mayor ancho de banda.

   Un "bridge" Ethernet permite transmitir mas trafico aparte del
   trafico IP. Se puede transmitir IPX/SPX o cualquier otro protocolo
   que se este utilizando.

     --------------------------------------------------------------

29.9. NIS/YP

   Escrito por Bill Swingle. Ampliado por Eric Ogren y Udo Erdelhoff.

  29.9.1. ?Que es esto?

   NIS, siglas de Network Information Services (Servicios de
   Informacion de Red), fue un servicio desarrollado por Sun
   Microsystems para centralizar la administracion de sistemas UNIX
   (originalmente SunOS). Actualmente se considera como un estandar
   de la industria; los principales sistemas tipo UNIX (Solaris,
   HP-UX, AIX(R), Linux, NetBSD, OpenBSD, FreeBSD, etc) implementan
   NIS.

   NIS tambien se conocia como el servicio de paginas amarillas pero
   debido a problemas legales debidos a la propiedad de marcas
   comerciales, Sun tuvo que cambiar el nombre. El antiguo termino
   ("Yellow Pages" o yp) todavia se ve y se utiliza con frecuencia.

   Se trata de un sistema cliente servidor basado en llamadas RPC que
   permite a un grupo de maquinas que se encuentran definidas dentro
   de un dominio administrativo NIS compartir un conjunto de ficheros
   de configuracion. Esto permite al administrador de sistemas por un
   lado configurar clientes NIS de forma minimalista y por otro lado
   centralizar la gestion de los ficheros de configuracion en una
   unica ubicacion (una sola maquina).

   Se trata de algo similar al sistema de dominio de Windows NT(R)
   aunque la implementacion interna no se puede comparar, la
   funcionalidad y el servicio obtenido son similares.

     --------------------------------------------------------------

  29.9.2. Terminos/procesos que debe usted conocer

   Existen varios conceptos y varios procesos de usuario que el
   usuario no versado en estos temas suele encontrarse la primera vez
   que se intenta implantar un servicio de NIS en FreeBSD, tanto si
   se intenta configurar un servidor como si se intenta configurar un
   cliente:

   +----------------------------------------------------------------+
   |      Term      |                  Description                  |
   |----------------+-----------------------------------------------|
   |                | Un servidor maestro de NIS y todos sus        |
   |                | clientes (incluyendo a sus servidores         |
   |                | esclavos) poseen el mismo nombre dominio NIS. |
   | NIS domainname | Al igual que ocurre con el nombre de dominio  |
   |                | de Windows NT, el nombre de dominio de NIS no |
   |                | tiene nada que ver con el nombre de dominio   |
   |                | de DNS.                                       |
   |----------------+-----------------------------------------------|
   |                | Debe ejecutarse para que se activen las       |
   |                | llamadas a procedimientos remotos (Remote     |
   | portmap        | Procedure Call o RPC) que son utilizadas por  |
   |                | NIS. Si portmap no se esta ejecutando no se   |
   |                | podra ejecutar ni clientes ni servidores de   |
   |                | NIS.                                          |
   |----------------+-----------------------------------------------|
   |                | "Asocia" un cliente con un servidor NIS.      |
   |                | Primeramente se lee el nombre de dominio NIS  |
   |                | del sistema y utilizando RPC se conecta con   |
   | ypbind         | el servidor. ypbind es la parte central de la |
   |                | comunicacion cliente servidor del sistema     |
   |                | NIS; si ypbind muere en una maquina cliente,  |
   |                | dicha maquina no podra acceder al servidor    |
   |                | NIS.                                          |
   |----------------+-----------------------------------------------|
   |                | Debe ejecutarse solamente en los servidores   |
   |                | NIS; se trata del proceso servidor de NIS. Si |
   |                | ypserv(8) muere, el servidor no sera capaz de |
   |                | responder a peticiones NIS (no obstante, si   |
   |                | se definen servidores NIS esclavos la         |
   |                | situacion puede recuperarse). Existen algunas |
   | ypserv         | implementaciones de NIS (no es el caso de     |
   |                | FreeBSD) que no intentan conectarse con otro  |
   |                | servidor si el servidor con otro servidor si  |
   |                | el servidor que se estaba que se estaba       |
   |                | utilizando muere. A menudo lo unico que se    |
   |                | puede hacer en estos casos es reiniciar el    |
   |                | servidor (el proceso o la propia maquina) o   |
   |                | el proceso ypbind del cliente.                |
   |----------------+-----------------------------------------------|
   |                | Otro proceso que solo debe ejecutarse en el   |
   |                | servidor maestro de NIS; se trata de un       |
   |                | daemon que permite a los clientes de NIS      |
   | rpc.yppasswdd  | modificar las contrasenas de los usuarios. Si |
   |                | no se ejecuta este daemon los usuarios        |
   |                | tendran que entrar en el servidor maestro de  |
   |                | NIS para cambiar sus contrasenas alli.        |
   +----------------------------------------------------------------+

     --------------------------------------------------------------

  29.9.3. ?Como funciona?

   Existen tres tipos de maquinas dentro del entorno NIS: los
   servidores maestros, los servidores esclavos y los clientes de
   NIS. Los servidores actuan como repositorios centrales para
   almacenamiento de informacion de configuracion. Los servidores
   maestros mantienen una copia maestra de dicha informacion,
   mientras que los servidores esclavos mantienen copias de la
   informacion maestra por motivos de redundancia. Los servidores se
   encargan de transmitir la informacion necesaria a los clientes a
   peticion de estos ultimos.

   De esta forma se pueden compatir mucha informacion contenida en
   varios archivos. Los ficheros master.passwd, group y hosts
   normalmente se comparten a traves de NIS. Siempre que un proceso
   en un cliente necesita informacion que, en caso de no utilizar
   NIS, se podria recuperar de ficheros locales, en este caso se
   envia una solicitud al servidor NIS con el que nos encontramos
   asociados.

     --------------------------------------------------------------

    29.9.3.1. Clases de maquinas

     * Servidor de NIS maestro. Este servidor, semejante a un
       controlador de dominio primario de Windows NT mantiene todos
       los archivos que utilizan los clientes. Los ficheros passwd,
       group y algunos otros se encuentran ubicados en el servidor
       maestro.

         Nota: Resulta posible configurar una maquina para que actue
         como servidor NIS maestro para mas de un dominio NIS. No
         obstante esta configuracion no se va a tratar en esta
         introduccion, en la cual asumimos un entorno NIS de tamano
         relativamente pequeno.

     * Servidores de NIS esclavos. Semejantes a los controladores de
       backup de Windows NT, los servidores NIS esclavos se utilizan
       para proporcionar redundancia en entornos de trabajo donde la
       disponibilidad del servicio resulta muy importante. Ademas se
       utilizan para distribuir la carga que normalmente soporta un
       servidor maestro: los clientes de NIS siempre se asocian con
       el servidor de NIS que posee mejor tiempo de respuesta, y esto
       y esto tambien incluye a los servidores de NIS esclavos.

     * Clientes NIS. Los clientes NIS, de forma semejante a las
       estaciones de trabajo de Windows NT, se validan contra un
       servidor NIS (en el caso de Windows NT se validan contra un
       controlador de dominio) para acceder al sistema.

     --------------------------------------------------------------

  29.9.4. Uso de NIS/YP

   Esta seccion trata sobre como configurar y poner en funcionamiento
   un entorno de NIS sencillo.

     Nota: Esta seccion supone que se esta utilizando utilizando
     FreeBSD 3.3 o posteriores. Las instrucciones dadas aqui
     probablemente funcionen tambien en cualquier version de FreeBSD
     superior a la 3.0 pero no podemos garantizar que esto sea asi.

     --------------------------------------------------------------

    29.9.4.1. Planificacion

   Vamos a suponer que somos el administrador de un pequeno
   laboratorio de una universidad. En este laboratorio, compuesto por
   15 maquinas FreeBSD, actualmente no existe ningun punto de
   administracion centralizada; cada maquina posee sus sus propios
   /etc/passwd y /etc/master.passwd. Estos ficheros se encuentran
   sincronizados el uno con el otro mediante intervencion manual; por
   tanto, cuando queramos anadir un usuario a nuestro laboratorio
   tendremos que ejecutar adduser en todas las maquinas. Claramente
   esta situacion tiene que cambiar, de tal forma que hemos decidido
   crear un dominio NIS en el laboratorio usando dos maquinas como
   servidores NIS.

   La configuracion de nuestro laboratorio deberia ser algo parecido
   a lo siguiente:

   +----------------------------------------------------------------+
   | Nombre de maquina | Direccion IP  |           Papel            |
   |-------------------+---------------+----------------------------|
   | ellington         | 10.0.0.2      | servidor NIS maestro       |
   |-------------------+---------------+----------------------------|
   | coltrane          | 10.0.0.3      | Servidor NIS esclavo       |
   |-------------------+---------------+----------------------------|
   | basie             | 10.0.0.4      | Estacion de trabajo del    |
   |                   |               | profesorado                |
   |-------------------+---------------+----------------------------|
   | bird              | 10.0.0.5      | maquina cliente            |
   |-------------------+---------------+----------------------------|
   | cli[1-11]         | 10.0.0.[6-17] | Resto de maquinas clientes |
   +----------------------------------------------------------------+

   Si se esta configurando un esquema de NIS por primera vez es una
   buena idea detenerse a pensar como queremos implantar el sistema.
   Existen varias decisiones que se deben tomar independientemente
   del tamano de nuestra red.

     --------------------------------------------------------------

      29.9.4.1.1. Eleccion del nombre de dominio NIS

   Este nombre puede no ser el "nombre de dominio" al que estamos
   acostumbrados. Resulta mas preciso llamarlo "nombre de dominio
   NIS". Cuando un cliente genera peticiones de NIS que llegan a
   todas las maquinas (broadcast) solicitando informacion se incluye
   el nombre de dominio NIS que tiene configurado. De esta forma,
   varios servidores de dominios distintos situados en la misma red
   pueden discriminar las peticiones recibidas. Se puede pensar en el
   nombre de dominio NIS como un identificador de grupos de maquinas
   que se encuentran relacionados administrativamente de alguna
   forma.

   Algunas organizaciones eligen utilizar su nombre de dominio de
   Internet como nombre de dominio NIS. Esto no se recomienda ya que
   puede causar confusion cuando se intentan depurar problemas de
   red. El nombre de dominio NIS deberia ser un nombre unico dentro
   de nuestra red y resulta mas util aun si el nombre elegido puede
   describir de alguna forma al conjunto de maquinas que representa.
   Por ejemplo el departamento de arte de la empresa Acme puede
   utilizar como nombre de dominio "acme-art". En nuestro ejemplo
   hemos utilizado el nombre test-domain.

   No obstante algunos sistemas operativos (de forma notable SunOS)
   utilizan como nombres de dominio nombres de Internet. Si se poseen
   maquinas con esta restriccion no queda mas remedio que utilizar
   los nombres de dominio de Internet como nombres de dominio NIS.

     --------------------------------------------------------------

      29.9.4.1.2. Requisitos fisicos de los servidores

   Existen varias cosas que debemos tener en cuenta cuando se
   selecciona una maquina para actuar como servidor NIS. Una de las
   caracteristicas desafortunadas del servicio de paginas amarillas
   es el alto nivel de dependencia que llegan a tener los clientes
   respecto del servidor de NIS. Si el cliente no puede contactar con
   el servidor NIS normalmente la maquina se queda en un estado
   totalmente inutilizable. La carencia de informacion de usuarios y
   grupos provoca que las maquinas se bloqueen. Con esto en mente
   debemos debemos asegurarnos de escoger un servidor de NIS que no
   se reinicie de forma habitual o uno que no se utilice para para
   desarrollar. Si se dispone de una red con poca carga puede
   resultar aceptable colocar el servidor de NIS en una maquina donde
   se ejecuten otros servicios pero en todo momento se debe tener
   presente que si por cualquier motivo el servidor de NIS quedara
   inutilizable afectaria a todas las maquinas de forma negativa.

     --------------------------------------------------------------

    29.9.4.2. Servidores NIS

   Las copias canonicas de toda la informacion que mantiene el
   sistema de paginas amarillas se almacenan en una unica maquina
   denominada servidor maestro de NIS. Las bases de datos utilizadas
   para almacenar la informacion se denominan mapeos NIS. En FreeBSD
   estas asociaciones o mapeos se almacenan en el directorio
   /var/yp/[nombrededominio] donde [nombrededominio] es el nombre del
   dominio de NIS que el servidor gestiona. Un unico servidor NIS
   puede gestionar varios dominios al mismo tiempo de forma que
   resulta posible tener varios directorios como el anterior, uno por
   cada dominio soportado. Cada dominio posee su conjunto de mapeos
   independiente y propio.

   Los servidores maestro y esclavos manejan todas las peticiones de
   a traves del daemon ypserv. ypserv se responsabiliza de recibir
   peticiones de los clientes NIS. Estas peticiones se traducen a una
   ruta dentro del servidor. Esta ruta localiza un fichero de base de
   datos determinado del servidor de NIS, y finalmente ypserv se
   encarga de transmitir la informacion de dicha base de datos de
   vuelta al cliente que la solicito.

     --------------------------------------------------------------

      29.9.4.2.1. Configuracion de un servidor de NIS maestro

   La configuracion de un servidor de NIS maestro puede resultar
   relativamente sencilla dependiendo de las necesidades que se
   tengan. FreeBSD viene preconfigurado por defecto con un servicio
   NIS. Todo lo que necesitamos es anadir la siguiente linea en
   /etc/rc.conf y FreeBSD se encarga del resto.

    1. nisdomainname="test-domain"

       Esta linea establece el nombre de dominio NIS como
       test-domain, cuando se realiza la configuracion de la red (por
       ejemplo, despues de un reinicio).

    2. nis_server_enable="YES"

       Esta variable indica a FreeBSD que ejecute los procesos
       necesarios para actuar como un servidor de NIS la proxima vez
       que se configure el subsistema de red.

    3. nis_yppasswdd_enable="YES"

       Esto permite activar el daemon rpc.yppasswdd el cual, como se
       ha mencionado anteriormente, permite a los usuarios realizar
       cambios de contrasena desde las maquinas clientes de NIS.

     Nota: Dependiendo de la configuracion de NIS podemos necesitar
     anadir algunas entradas mas. Consulte la seccion sobre
     servidores NIS que tambien actuan como clientes, mas adelante en
     el texto, para saber mas sobre esto.

   Una vez hecho esto todo lo que tenemos que hacer es ejecutar
   /etc/netstart como superusuario. Esta orden realiza los pasos de
   configuracion necesarios utilizando los valores de las variables
   definidas en /etc/rc.conf.

     --------------------------------------------------------------

      29.9.4.2.2. Inicializacion de los mapeos de NIS

   Las asociaciones o mapeos de NIS no son mas que ficheros de base
   de datos. Estos ficheros se generan a partir de los ficheros de
   configuracion contenidos en el directorio etc/ excepto para el
   caso del fichero etc/master.passwd. Esto es asi por una buena
   razon ya que no suele ser buena idea propagar las contrasenas de
   root y de otras cuentas de administracion a todos los servidores
   NIS del dominio. servidores NIS del dominio. Asi, antes de
   inicializar los mapeos se debe ejecutar:

 # cp /etc/master.passwd /var/yp/master.passwd
 # cd /var/yp
 # vi master.passwd

   Se deben borrar todas las entradas que hagan referencia a cuentas
   del sistema (bin, tty, kmem, games, etc), junto con cualquier
   cuenta que no deseemos que se transmita a los clientes NIS (por
   ejemplo la cuenta de root y cualquier otra cuenta con UID 0 (el
   del superusuario)).

     Nota: Asegurese de que /var/yp/master.passwd no se puede leer ni
     por grupos ni por el resto de usuarios (modo 600). Utilice chmod
     en caso de necesidad.

   Una vez hecho esto es hora de inicializar las asociaciones de NIS.
   FreeBSD incluye un "script" denominado ypinit para realizar esta
   tarea (consulte su pagina del manual para obtener mas
   informacion). Recuerde que este "script" se encuentra disponible
   en la mayoria de los sistemas UNIX, pero no en todos. En sistemas
   Digital UNIX/Compaq Tru64 UNIX se denomina ypsetup. Debido a que
   se pretende generar asociaciones para un servidor NIS maestro
   vamos a ejecutar ypinit con la opcion -m. A modo de ejemplo,
   suponiendo que todos los pasos comentados anteriormente se han
   realizado con exito, ejecute:

 ellington# ypinit -m test-domain
 Server Type: MASTER Domain: test-domain
 Creating an YP server will require that you answer a few questions.
 Questions will all be asked at the beginning of the procedure.
 Do you want this procedure to quit on non-fatal errors? [y/n: n] n
 Ok, please remember to go back and redo manually whatever fails.
 If you don't, something might not work.
 At this point, we have to construct a list of this domains YP servers.
 rod.darktech.org is already known as master server.
 Please continue to add any slave servers, one per line. When you are
 done with the list, type a <control D>.
 master server   :  ellington
 next host to add:  coltrane
 next host to add:  ^D
 The current list of NIS servers looks like this:
 ellington
 coltrane
 Is this correct?  [y/n: y] y

 [..salida de la generacion de mapeos..]

 NIS Map update completed.
 ellington has been setup as an YP master server without any errors.

   ypinit deberia haber creado el fichero /var/yp/Makefile a partir
   de /var/yp/Makefile.dist. Una vez creado este archivo presupone
   que se esta usando un entorno NIS con un unico servidor utilizando
   solamente maquinas FreeBSD. Debido a que test-domain posee tambien
   un servidor NIS esclavo se debe editar el fichero var/yp/Makefile:

 ellington# vi
               /var/yp/Makefile

   Se debe comentar la linea que dice:

 NOPUSH = "True"

   (si es que no se encuentra ya comentada).

     --------------------------------------------------------------

      29.9.4.2.3. Configuracion de un servidor NIS esclavo

   La configuracion de un servidor NIS esclavo resulta ser incluso
   mas sencilla que la del maestro. Basta con entrar en el servidor
   esclavo y editar /etc/rc.conf de foma semejante a como se realizo
   en el apartado anterior. La unica diferencia consiste en que ahora
   debemos utilizar la opcion -s cuando ejecutemos ejecutemos ypinit.
   A continuacion del parametro -s se debe especificar el nombre del
   servidor maestro de modo que la orden tendria que ser algo
   parecido a esto:

 coltrane# ypinit -s ellington test-domain

 Server Type: SLAVE Domain: test-domain Master: ellington

 Creating an YP server will require that you answer a few questions.
 Questions will all be asked at the beginning of the procedure.

 Do you want this procedure to quit on non-fatal errors? [y/n: n]  n

 Ok, please remember to go back and redo manually whatever fails.
 If you don't, something might not work.
 There will be no further questions. The remainder of the procedure
 should take a few minutes, to copy the databases from ellington.
 Transferring netgroup...
 ypxfr: Exiting: Map successfully transferred
 Transferring netgroup.byuser...
 ypxfr: Exiting: Map successfully transferred
 Transferring netgroup.byhost...
 ypxfr: Exiting: Map successfully transferred
 Transferring master.passwd.byuid...
 ypxfr: Exiting: Map successfully transferred
 Transferring passwd.byuid...
 ypxfr: Exiting: Map successfully transferred
 Transferring passwd.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring group.bygid...
 ypxfr: Exiting: Map successfully transferred
 Transferring group.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring services.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring rpc.bynumber...
 ypxfr: Exiting: Map successfully transferred
 Transferring rpc.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring protocols.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring master.passwd.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring networks.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring networks.byaddr...
 ypxfr: Exiting: Map successfully transferred
 Transferring netid.byname...
 ypxfr: Exiting: Map successfully transferred
 Transferring hosts.byaddr...
 ypxfr: Exiting: Map successfully transferred
 Transferring protocols.bynumber...
 ypxfr: Exiting: Map successfully transferred
 Transferring ypservers...
 ypxfr: Exiting: Map successfully transferred
 Transferring hosts.byname...
 ypxfr: Exiting: Map successfully transferred

 coltrane has been setup as an YP slave server without any errors.
 Don't forget to update map ypservers on ellington.

   En estos momentos debemos tener un nuevo directorio llamado
   /var/yp/test-domain. Las copias de los mapeos del servidor maestro
   se almacenan en dicho directorio. Es nuestra responsabilidad como
   administradores asegurar que dichas copias permanecen actualizadas
   en todo momento. La siguiente entrada en el archivo /etc/crontab
   del servidor esclavo se encarga de realizar esta tarea:

 20      *       *       *       *       root   /usr/libexec/ypxfr passwd.byname
 21      *       *       *       *       root   /usr/libexec/ypxfr passwd.byuid

   Estas dos lineas obligan al servidor esclavo a sincronizar los
   mapeos con el servidor maestro. Estas entradas no son obligatorias
   ya que el servidor maestro siempre intenta comunicar cualquier
   cambio que se produzca en sus asociaciones a todos los servidores
   esclavos ya que la informacion de, esclavos, ya que la informacion
   de, por ejemplo, contrasenas es de vital importancia para el
   funcionamiento de los sistemas que dependen del servidor. No
   obstante es una buena idea obligar a que se realicen estos cambios
   mediante las entradas anteriores. Esto resulta ser incluso mas
   importante en redes de sobrecargadas donde las actualizaciones de
   asociaciones pueden algunas veces no llegar a realizarse de forma
   completa.

   A continuacion se ejecuta /etc/netstart en el servidor esclavo de
   igual de igual forma que se hizo con el servidor maestro; esto
   relanza de nuevo el servidor de NIS.

     --------------------------------------------------------------

    29.9.4.3. Clientes NIS

   Un cliente de NIS establece lo que se conoce con el nombre de
   asociacion (bind en ingles) con un servidor NIS NIS determinado
   utilizando el daemon ypbind. ypbind comprueba el dominio por
   defecto del sistema (especificado mediante domainname) y comienza
   a enviar peticiones RPC a todos los elementos de la red local
   (broadcast). Estas peticiones especifican el nombre del dominio
   con el que se quiere establecer la asociacion. Si esta peticion
   alcanza una peticion alcanza un servidor NIS configurado para
   servir dicho dominio el servidor responde a la peticion e ypbind
   almacenara la direccion de dicho servidor. Si existen varios
   servidores disponibles (un maestro y varios esclavos, por
   ejemplo), ypbind utilizara la direccion del primero en responder.
   A partir de este punto el cliente dirigira el resto de sus
   peticiones NIS directamente a la direccion IP almacenada.
   Ocasionalmente ypbind envia un "ping" sobre el servidor para
   comprobar que en efecto se encuentra funcionando. Si no se recibe
   contestacion al ping dentro de un espacio de tiempo determinado
   ypbind marca el dominio como "sin asociar" y comienza de nuevo a
   inundar la red con la esperanza de localizar algun otro servidor
   NIS.

     --------------------------------------------------------------

      29.9.4.3.1. Configuracion de un cliente NIS

   La configuracion de un cliente FreeBSD de NIS resulta ser una
   operacion extremadamente sencilla.

    1. Editar el fichero /etc/rc.conf y anadir las siguientes lineas
       para establecer el nombre de dominio NIS y para que se ejecute
       ypbind al arranque de la red:

 nisdomainname="test-domain"
 nis_client_enable="YES"

    2. Para importar todas las entradas de contrasenas del servidor
       de NIS hay que eliminar todas las cuentas de usuario de
       /etc/master.passwd y utilizar vipw para anadir la siguiente
       linea al final de dicho fichero:

 +:::::::::

         Nota: Esta linea permite que cualquiera abra una cuenta en
         local, siempre que dicha cuenta se encuentre definida en las
         asociaciones de cuentas y contrasenas del servidor NIS.
         Existen varias formas de configurar los clientes NIS
         modificando esta linea. Consulte la seccion sobre netgroups
         que se encuentra mas adelante en este mismo texto. Si quiere
         saber mas puede consultar el libro de O'Reilly Managing NFS
         and NIS.

         Nota: Se debe mantener al menos una cuenta local (por
         ejemplo, una cuenta que no se importe a traves de NIS) en el
         fichero /etc/master.passwd y ademas dicha cuenta deberia ser
         miembro del grupo wheel. Si algo va mal con el procedimiento
         descrito esta cuenta se puede utilizar para entrar en la
         maquina cliente de forma remota para posteriormente
         convertirse en superusuario e intentar solucionar el
         problema.

    3. Para importar todas las entradas de grupo posibles del
       servidor NIS se debe anadir la siguiente linea al fichero
       /etc/group:

 +:*::

   Despues de completar estos pasos deberimos ser capaces de ejecutar
   ypcat passwd y ver la asociacion de contrasenas que se encuentra
   en el servidor de NIS

     --------------------------------------------------------------

  29.9.5. Seguridad en NIS

   En general cualquier usuario remoto puede realizar peticiones de
   RPC a ypserv(8) y recuperar los contenidos de las asociaciones de
   NIS siempre y cuando el usuario remoto conozca el nombre de
   dominio de NIS. Para evitar este tipo de transacciones no
   autorizadas, ypserv(8) soporta una caracteristica denominada
   "securenets" la cual se puede utilizar para limitar el acceso a un
   determinado conjunto de maquinas. En el arranque ypserv(8) intenta
   cargar la informacion de "securenets" a partir de un fichero
   denominado /var/yp/securenets.

     Nota: Esta ruta de fichero varia dependiendo del camino
     especificado con la opcion -p. Dicho fichero contiene entradas
     compuestas de, por un lado, un rango de red y por otro una
     mascara de red, separados por espacios en blanco. Las lineas que
     comienzan por "#" se consideran comentarios. A continuacion se
     muestra un ejemplo de un fichero "securenet":

 # admitir conexiones desde localhost -- obligatorio
 127.0.0.1     255.255.255.255
 # admitir conexiones desde cualquier host
 # on the 192.168.128.0 network
 192.168.128.0 255.255.255.0
 # admitir conexiones desde cualquier host
 # between 10.0.0.0 to 10.0.15.255
 # esto incluye las maquinas en el 'testlab'
 10.0.0.0      255.255.240.0

   Si ypserv(8) recibe una peticion de una direccion que coincide con
   alguna de las reglas especificadas en el fichero se procesa la
   peticion. Si no existe ninguna coincidencia la peticion se rechaza
   y se graba un mensaje de aviso. Si el archivo /var/yp/securnets no
   existe ypserv acepta conexiones de cualquier maquina.

   El programa ypserv tambien posee soporte para el paquete de Wietse
   Venema denominado tcpwrapper. Este paquete permite utilizar los
   ficheros de configuracion de tcpwrapper para realizar control de
   acceso en lugar de utilizar var/yp/securenets.

     Nota: Aunque ambos mecanismos de control de acceso proporcionan
     un grado de seguridad mayor que no utilizar nada resultan
     vulnerables a ataques de "falsificacion de IPs". El cortafuegos
     de la red donde se implanta el servicio de NIS deberia
     encargarse de bloquear el trafico especifico de dicho servicio.

     Los servidores que utilizan /var/yp/securenets pueden no prestar
     servicio a clientes NIS legitimos cuando se trabaja con
     implementaciones arcaicas de TCP/IP. Algunas de estas
     implementaciones ponen a cero todos los bits de maquina cuando
     se realizan broadcast y/o pueden fallar al especificar la
     mascara de red en el mismo caso, por citar algunos ejemplos.
     Mientras que algunos de estos problemas se pueden solucionar
     variando la configuracion del cliente en otros casos podemos
     vernos obligados a prescindir del cliente en cuestion o a
     prescindir del fichero var/yp/securenets.

     Se desaconseja la utilizacion de var/yp/securenets en un sistema
     con una implementacion arcaica de TCP/IP y puede suponer una
     perdida de funcionalidad para grandes zonas de la red.

     La utilizacion del paquete tcpwrapper incrementa la latencia del
     servidor NIS. El retardo adicional introducido puede ser lo
     suficientemente grande como para causar la expiracion de ciertos
     temporizadores de los programas clientes, especialmente en redes
     muy cargadas o con servidores de NIS lentos. Si se experimentan
     estos sintomas en varias maquinas clientes, puede ser
     conveniente convertir dichas maquinas en servidores NIS esclavos
     y obligarlas a asociarse con ellas mismas.

     --------------------------------------------------------------

  29.9.6. Prohibir el acceso a determinados usuarios

   En nuestro laboratorio de ejemplo existe una maquina denominada
   basie que actua solo como una estacion de trabajo para el
   profesorado. No queremos sacar a esta maquina del dominio NIS pero
   nos damos cuenta de que el fichero passwd que se encuentra en el
   servidor de NIS posee cuentas tanto para profesores como para
   alumnos. ?Que podemos hacer?.

   Existe una forma de prohibir el acceso a determinados usuarios
   sobre una determinada maquina incluso aunque se encuentren dados
   de alta en la base de datos de NIS. Para realizar esto todo lo que
   debemos hacer es anadir -nombredeusuario al final del fichero
   /etc/master.passwd en la maquina cliente donde nombredeusuario es
   el nombre de usuario del usuario al que queremos prohibirle el
   acceso. Esto se debe realizar a poder ser mediante vipw ya que
   vipw realiza comprobaciones de seguridad sobre los cambios
   realizados y ademas se encarga de reconstruir la base de datos de
   contrasenas cuando se termina la edicion. Por ejemplo, si
   quisieramos prohibir el acceso al usuario bill a la maquina basie
   hariamos:

 basie# vipw
 [anadimos -bill al final y salimos]
 vipw: rebuilding the database...
 vipw: done

 basie# cat /etc/master.passwd

 root:[password]:0:0::0:0:The super-user:/root:/bin/csh
 toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
 daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
 operator:*:2:5::0:0:System &:/:/sbin/nologin
 bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
 tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
 kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
 games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
 news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
 man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
 bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
 uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
 xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
 pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
 nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
 +:::::::::
 -bill

 basie#

     --------------------------------------------------------------

  29.9.7. Uso de Netgroups

   Escrito por Udo Erdelhoff.

   El metodo descrito en la seccion anterior funciona razonablemente
   bien si las reglas especiales se definen para un conjunto pequeno
   de usuarios y/o maquinas. En dominios admnistrativos grandes puede
   que se nos olvide prohibir el acceso a algun usuario en
   determinadas maquinas perdiendo de esta forma el principal
   beneficio de utilizar el servicio de paginas amarillas:
   administracion centralizada.

   La solucion creada por los desarrolladores de NIS se denomina
   netgroups. Su proposito se asemeja al concepto de grupos utilizado
   por los sistemas UNIX. La diferencia principal es la carencia de
   un identificador numerico y la habilidad para definir un
   "netgroup" que incluye tanto a cuentas de usuario como a otros
   "netgroups".

   Los netgroups se desarrollaron para gestionar redes grandes y y
   complejas con cientos de usuarios y maquinas. Por un lado esto es
   una Cosa Buena si nos encontramos en tal situacion pero por otro
   lado esta complejidad anadida hace que sea casi imposible de
   explicar a traves de ejemplos sencillos. El ejemplo que va a
   utilizar en lo que queda de seccion ilustrara este hecho.

   Vamos a suponer que la exitosa introduccion del servicio de
   paginas amarillas en nuestro laboratorio ha llamado la atencion de
   nuestros jefes. Nuestra siguiente tarea consiste en extender el
   dominio de NIS para que cubra otras maquinas del campus. Las
   tablas que se muestran a continuacion contienen los nombres de los
   nuevos usuarios y maquinas junto con una breve descripcion de
   ellas.

   +----------------------------------------------------------------+
   | Nombre del Usuario/usuarios |           Descripcion            |
   |-----------------------------+----------------------------------|
   | alpha, beta                 | Empleados normales del           |
   |                             | departamento de IT               |
   |-----------------------------+----------------------------------|
   | charlie, delta              | Los nuevos aprendices del        |
   |                             | departamento de IT               |
   |-----------------------------+----------------------------------|
   | echo, foxtrott, golf, ...   | Empleados normales               |
   |-----------------------------+----------------------------------|
   | able, baker, ...            | Los actuales internos            |
   +----------------------------------------------------------------+

   +----------------------------------------------------------------+
   | Nombre de la Maquina(s) |             Descripcion              |
   |-------------------------+--------------------------------------|
   | guerra, muerte, hambre, | Los servidores mas importantes. Solo |
   | peste                   | los empleados de IT pueden entrar en |
   |                         | estas maquinas                       |
   |-------------------------+--------------------------------------|
   | orgullo, avaricia,      | Servidores de menor importancia.     |
   | envidia, ira, lujuria,  | Todos los miembros del departamento  |
   | pereza                  | de IT pueden entrar en ellos.        |
   |-------------------------+--------------------------------------|
   | uno, dos, tres, cuatro, | Estaciones de trabajo ordinarias.    |
   | ...                     | Solo los empleados actuales pueden   |
   |                         | utilizar estas maquinas.             |
   |-------------------------+--------------------------------------|
   |                         | Una maquina muy vieja sin ningun     |
   | trashcan                | dato dato critico. Incluso los       |
   |                         | internos pueden utilizar esta        |
   |                         | maquina.                             |
   +----------------------------------------------------------------+

   Si se trata de implementar estas restricciones a nivel de usuario
   particular tendriamos que anadir una linea -usuario a cada fichero
   passwd del sistema para cada usuario que tuviera prohibido el
   acceso a dicho sistema. Si nos olvidamos de una sola entrada
   podrimos tener serios problemas. Puede ser factible realizar esta
   configuracion cuando se instala el servicio pero no obstante el
   riesgo que corremos al mantener este sistema de restricciones en
   el dia dia es muy alto. Despues de todo Murphy era un optimista.

   La gestion de esta situacion mediante netgroups ofrece varias
   ventajas. Cada usuario no tiene que tratarse de una forma
   individualizada; basta con anadir un usuario a uno o mas netgroups
   y posteriormente permitir o prohibir el acceso para todos los
   usuarios del netgroup. Si se anade una nueva maquina al servicio
   de NIS simplemente tendremos que definir restricciones de acceso
   para los netgroups definidos en la red. Si se anade un nuevo
   usuario bastara con anadir dicho usuario a un netgroup existente.
   Estos cambios son independientes unos de otros: se acabo la
   necesidad de aplicar la frase "por cada combinacion de usuario y
   maquina haga esto y esto". Si hemos planificado nuestro servicio
   de NIS cuidadosamente, solo tendremos que modificar un fichero de
   configuracion en un determinado servidor para permitir o denegar
   estos accesos.

   El primer paso consiste en la inicializacion de la asociacion o
   mapeo del netgroup. La orden de FreeBSD ypinit(8) no crea este
   mapeo por defecto pero una vez creado sera tenido en cuenta por la
   implementacion de NIS. Para crear una asociacion vacia simplemente
   escriba:

 ellington# vi /var/yp/netgroup

   y comienze a anadir contenido. En nuestro ejemplo necesitamos al
   menos cuatro netgroups: empleados de IT, aprendices de IT,
   empleados normales e internos.

 IT_EMP  (,alpha,test-domain)    (,beta,test-domain)
 IT_APP  (,charlie,test-domain)  (,delta,test-domain)
 USERS   (,echo,test-domain)     (,foxtrott,test-domain) \
         (,golf,test-domain)
 INTERNS (,able,test-domain)     (,baker,test-domain)

   IT_EMP, IT_APP etc. son los nombres de los netgroups. Cada
   conjunto delimitado por parentesis define una o mas cuentas como
   pertenecientes al netgroup. Existen tres campos definidos dentro
   de dichos de dichos grupos:

    1. El nombre de las maquinas donde los siguientes items son
       aplicables. Si no se especifica un nombre de maquina la
       entrada se aplica a todas las maquinas existentes. Si se
       especifica una maquina determinada entraremos en un mundo
       lleno de horrores y confusiones asi que mejor no hacerlo.

    2. El nombre de la cuenta que pertenece al netgroup que estamos
       definiendo.

    3. El dominio NIS donde reside la cuenta. Se pueden importar
       cuentas de otros dominios NIS (en caso de que usted pertenezca
       al extrano grupo de personas que gestionan mas de un dominio
       NIS.

   Cada uno de estos campos puede contener comodines. Consulte
   netgroup(5) para obtener mas detalles.

     Nota: No se deben utilizar nombres de los netgroups superiores a
     ocho caracteres, especialmente si las maquinas de nuestro
     dominio utilizan sistemas operativos variados. Los nombres son
     sensibles a las mayusculas/minusculas: se recomienda utilizar
     nombres en mayusculas para distinguirlos de los usuarios o
     maquinas.

     Algunos clientes de NIS (distintos de los clientes FreeBSD) no
     pueden gestionar netgroups con un gran numero de entradas. Por
     ejemplo algunas versiones antiguas de SunOS comienzan a
     presentar problemas si un netgroup contiene mas de quince
     entradas. Se puede solventar este problema creando varios
     sub-netgroups de como mucho quince usuarios y finalmente creando
     el verdadero netgroup compuesto por los sub-netgroups:

 BIGGRP1  (,joe1,domain)  (,joe2,domain)  (,joe3,domain) [...]
 BIGGRP2  (,joe16,domain)  (,joe17,domain) [...]
 BIGGRP3  (,joe31,domain)  (,joe32,domain)
 BIGGROUP  BIGGRP1 BIGGRP2 BIGGRP3

     Se puede repetir este proceso si se tienen que definir mas de
     225 usuarios dentro de un unico netgroup.

   La activacion y distribucion de nuestro nuevo mapeo NIS resulta
   sencillo:

 ellington# cd /var/yp
 ellington# make

   Esto genera las tres asociaciones NIS netgroup, netgroup.byhost y
   netgroup.byuser. Utilice ypcat(1) para comprobar si el nuevo mapeo
   NIS se encuentra disponible:

 ellington% ypcat -k netgroup
 ellington% ypcat -k netgroup.byhost
 ellington% ypcat -k netgroup.byuser

   La salida de la primera orden deberia parecerse a los contenidos
   del fichero /var/yp/netgroup. La segunda orden no mostrara ninguna
   salida salvo que se hayan especificado netgroups especificos para
   maquinas. La tercera orden se puede utilizar para obtener la lista
   de los netgroups a los que petenece un determinado usuario.

   La configuracion del cliente es bastante simple. Para configurar
   el servidor guerra se debe ejecutar vipw(8) y sustituir la linea

 +:::::::::

   por

 +@IT_EMP:::::::::

   Ahora solo se importan los datos para los usuarios que se
   encuentren definidos en el netgroup IT_EMP; dichos datos se
   importan en la base de datos de contrasenas de guerra y solo se
   permite el acceso a estos usuarios.

   Por desgraciaesta informacion tambien se aplica a la funcion ~ del
   shell y a todas las rutinas que traducen nombres de usuarios con
   los correspondientes identificadores numericos de usuario (uid).
   En otras palabras, la orden cd ~ no va a funcionar, ls -l muestra
   el identificador numerico en lugar del nombre de usuario y find .
   -user joe -print produce un error de " No such user" ("Usuario
   desconocido"). Para solucionar esto debemos importar todas las
   entradas de usuario en la maquina cliente NIS pero sin permitirles
   el acceso.

   Esto se puede realizar anadiendo otra linea al fichero
   /etc/master.passwd. Esta linea deberia contener lo siguiente:

   +:::::::::/sbin/nologin, lo que significa que se "importen todas
   las entradas pero que se reemplace el shell por /sbin/nologin". Se
   puede sustituir cualquier campo de la entrada de contrasenas
   especificando un valor concreto para dicho campo en el fichero
   local local /etc/master.passwd.

     AvisoAsegurese de que la linea +:::::::::/sbin/nologin se situa
     despues de +@IT_EMP:::::::::. Si esto no se cumple todas las
     cuentas de usuario importadas del servidor NIS poseeran
     /sbin/nologin como shell de acceso.

   Despues de este cambio si se introduce un nuevo empleado en el
   departamento de IT basta con cambiar una asociacion de NIS. Se
   podria aplicar una aproximacion similar para los servidores menos
   importantes sustituyendo la cadena +::::::::: en las versiones
   locales del fichero /etc/master.passwd por algo parecido a esto:

 +@IT_EMP:::::::::
 +@IT_APP:::::::::
 +:::::::::/sbin/nologin

   Las lineas correspondientes para las estaciones de trabajo
   normales podrian ser:

 +@IT_EMP:::::::::
 +@USERS:::::::::
 +:::::::::/sbin/nologin

   Y parece que todos nuestros problemas de gestion han desaparecido;
   hasta que unas semanas mas tarde se produce un cambio en la
   politica de gestion: el depatamento de IT comienza a alquilar
   interinos. Los interinos de IT pueden utilizar las estaciones de
   trabajo normales y los servidores menos importantes y los
   aprendices de IT pueden acceder a los servidores principales. No
   nos queda mas remedio que anadir un nuevo netgroup denominado
   IT_INTERN y anadir los nuevos interinos de IT a este nuevo grupo y
   comenzar a cambiar la la configuracion de cada maquina, una por
   una... Como dice el antiguo proverbio: "Errores en la
   planificacion centralizada conllevan grandes quebraderos de de
   cabeza globales".

   La habilidad que posee NIS para crear netgroups a partir de otros
   netgroups se puede utilizar para evitar la situacion anterior. Una
   posibilidad consiste en la creacion de netgroups basados en roles.
   Por ejemplo, se podria crear un netgroup denominado BIGSRV para
   definir las restricciones de acceso para los servidores
   importantes, otro grupo denominado USERBOX para las estaciones de
   trabajo... Cada uno de estos netgroups podria contener los
   netgroups que pueden acceder a dichas maquinas. Las nuevas
   entradas para nuestro mapeo NIS de netgroups seria algo asi:

 BIGSRV    IT_EMP  IT_APP
 SMALLSRV  IT_EMP  IT_APP  ITINTERN
 USERBOX   IT_EMP  ITINTERN USERS

   Este metodo de definir restricciones de acceso funciona
   razonablemente bien si podemos definir grupos de maquinas que
   posean restricciones semejantes. Por desgracia lo normal es que
   este caso resulta ser una excepcion mas que una regla. En la mayor
   parte de las ocasiones necesitaremos definir restricciones de
   acceso en funcion de maquinas individuales.

   Las definiciones de netgroups especificos para determinadas
   maquinas constituyen el segundo metodo que se puede utilizar para
   gestionar el cambio de politica del ejemplo que estamos
   explicando. En nuestro caso el fichero /etc/master.passwd de cada
   maquina contiene dos lineas que comienzan por "+". La primera de
   ellas anade un netgroup con las cuentas que pueden acceder a esa
   maquina, mientras que la segunda anade el resto de cuentas con
   shell el resto de cuentas con shell /sbin/nologin. Es una buena
   idea utilizar la version "todo en mayusculas" del nombre de
   maquina como el nombre del netgroup. En otras palabras, las lineas
   deberian ser como la siguiente:

 +@BOXNAME:::::::::
 +:::::::::/sbin/nologin

   Una vez que hemos completado esta tarea para todas las maquinas
   nunca mas resultara necesario modificar las versiones locales de
   /etc/master.passwd. Los futuros cambios se pueden gestionar
   simplemente modificando el mapeo o asociacion de NIS. A
   continuacion se muestra un mapeo de netgroups para el escenario
   que se esta explicando junto con algunas buenas ideas:

 # Definimos antes que nada los grupos de usuarios
 IT_EMP    (,alpha,test-domain)    (,beta,test-domain)
 IT_APP    (,charlie,test-domain)  (,delta,test-domain)
 DEPT1     (,echo,test-domain)     (,foxtrott,test-domain)
 DEPT2     (,golf,test-domain)     (,hotel,test-domain)
 DEPT3     (,india,test-domain)    (,juliet,test-domain)
 ITINTERN  (,kilo,test-domain)     (,lima,test-domain)
 D_INTERNS (,able,test-domain)     (,baker,test-domain)
 #
 # Ahora definimos unos pocos grupos basados en roles
 USERS     DEPT1   DEPT2     DEPT3
 BIGSRV    IT_EMP  IT_APP
 SMALLSRV  IT_EMP  IT_APP    ITINTERN
 USERBOX   IT_EMP  ITINTERN  USERS
 #
 # Y un grupo para tareas especiales
 # Permitimos a echo y golf acceso a nuestra maquina-anti-virus
 SECURITY  IT_EMP  (,echo,test-domain)  (,golf,test-domain)
 #
 # netgroups basados en maquinas
 # Nuestros servidores principales
 GUERRA   BIGSRV
 HAMBRE   BIGSRV
 # El usuario india necesita acceso a este servidor
 PESTE  BIGSRV  (,india,test-domain)
 #
 # Este es realmente importante y necesita mas restricciones de
 # acceso
 MUERTE     IT_EMP
 #
 # La maquina-anti-virus que mencionabamos mas arriba
 ONE       SECURITY
 #
 # Restringimos una maquina a un solo usuario
 TWO       (,hotel,test-domain)
 # [...otros grupos]

   Si estamos utilizando algun tipo de base de datos para gestionar
   cuentas de usuario debemos ser capaces de crear la primera parte
   del mapeo utilizando las herramientas proporcionadas por dicho
   sistema de base de datos. De este modo los nuevos usuarios tendran
   automaticamente derechos de acceso sobre las maquinas.

   Una ultima, por precaucion: puede no ser siempre aconsejable
   utilizar netgroups basados en maquinas. Si se estan desplegando,
   por ejemplo, un par de docenas o incluso cientos de maquinas
   identicas en laboratorios de estudiantes, es mejor utilizar
   netgroups basados en roles en lugar de netgroups basados en
   maquinas individuales para mantener el tamano de la asociacion NIS
   dentro de unos limites razonables.

     --------------------------------------------------------------

  29.9.8. Conceptos importantes a tener muy en cuenta

   Todavia quedan un par de cosas que tendremos que hacer de forma
   distinta a lo comentado hasta ahora en caso de encontrarnos dentro
   de un entorno de NIS.

     * Cada vez que deseemos anadir un usuario a nuestro laboratorio
       debemos anadirlo al servidor NIS maestro unicamente y es tarea
       fundamental del administrador acordarse de reconstruir los
       mapeos NIS. Si nos olvidamos de esto el nuevo usuario sera
       incapaz de acceder a ninguna maquina excepto al servidor NIS.
       Por ejemplo, si necesitaramos anadir el nuevo usuario jsmith
       al laboratorio tendriamos que ejecutar lo siguiente:

 # pw useradd jsmith
 # cd /var/yp
 # make test-domain

       Se puede ejecutar tambien adduser jsmith en lugar de pw
       useradd jsmith.

     * No introduzca las cuentas de administracion dentro de los
       mapeos de NIS. No es buena idea propagar cuentas y contrasenas
       de administracion a maquinas donde residen usuarios que
       normalmente no deberian poder acceder a dichas cuentas.

     * Mantenga el servidor maestro y esclavo de NIS seguros y
       minimize el tiempo de interrupcion del servicio. Si alguien
       fuera capaz de comprometer la integridad de estas maquinas o
       de apagarlas los usuarios del dominio no podrian acceder a sus
       cuentas en ningun sistema.

       Esto es la debilidad principal de cualquier sistema de
       administracion centralizada. Si no se protegen los servidores
       NIS tendremos frente a nosotros a una horda de usuarios
       bastante enfadados.

     --------------------------------------------------------------

  29.9.9. Compatibilidad con NIS v1

   El servicio ypserv de FreeBSD puede servir tambien a clientes NIS
   v1. La implementacion de NIS de FreeBSD solo utiliza el protocolo
   NIS v2 aunque otras implementaciones incluyen soporte para el
   protocolo v1 por razones de compatibilidad con sistemas antiguos.
   Los daemones ypbind suministrados con estos sistemas tratan de
   establecer una asociacion con un servidor NIS version 1 aunque
   puede que nunca la lleguen a utilizar (y pueden continuar
   realizando busquedas mediante broadcast incluso cuando reciben una
   respuesta de un servidor version 2). Tenga muy presente que
   mientras se soportan las llamadas normales de clientes v1, la
   version de ypserv actualmente suministrada no gestiona peticiones
   de transferencia de mapeos a traves de la version 1; en
   consecuencia no se puede utilizar como maestro o esclavo junto con
   servidores de NIS antiguos que solo soporten el protocolo v1. Por
   suerte quedan muy pocos servidores de este estilo en
   funcionamiento hoy en dia.

     --------------------------------------------------------------

  29.9.10. Servidores NIS que actuan tambien como clientes NIS

   Se debe tener cuidado cuando se ejecuta ypserv en un entorno
   multi-servidor donde las maquinas servidoras actuan tambien como
   maquinas clientes de NIS. Normalmente es una buena idea obligar a
   los servidores a que se asocien con ellos mismos mejor que
   permitirles emitir peticiones de asociacion en broadcast, lo que
   posiblemente terminara con los servidores asociados entre si. Se
   pueden producir extranos fallos si un servidor del que dependen
   otros deja de funcionar. Puede darse que los contadores de todos
   los clientes expiren e intenten asociarse a otro servidor, pero el
   retardo puede ser considerable y los fallos todavia podrin
   persistir debido a que los servidores se asocian continuamente los
   unos a los otros.

   Se puede obligar a una maquina a asociarse con un servidor en
   particular ejecutando ypbind con la opcion -S. Si no se quiere
   ejecutar esto manualmente cada vez que se reinice el servidor NIS
   se puede puede anadir la siguiente linea al fichero /etc/rc.conf:

 nis_client_enable="YES" # ejecuta tambien el soft cliente
 nis_client_flags="-S NIS domain,server"

   Consulte ypbind(8) para obtener mas informacion.

     --------------------------------------------------------------

  29.9.11. Formatos de contrasenas

   Uno de los problemas mas comunes que se encuentra la gente a la
   hora de implantar un servicio de NIS es la compatibilidad del
   formato de las contrasenas. Si nuestro servidor de NIS utiliza
   contrasenas cifradas mediante DES solo podra aceptar clientes que
   utilicen DES. Por ejemplo, si poseemos clientes de NIS Solaris en
   nuestra red casi seguro que necesitaremos utilizar contrasenas
   cifradas mediante DES.

   Para comprobar que formato utilizan los servidores y los clientes,
   se puede mirar en /etc/login.conf. Si la maquina se configura para
   utilizar cifrado de contrasenas mediante DES, entonces la clase
   por defecto debe poseer una entrada como la siguiente:

 default:\
         :passwd_format=des:\
         :copyright=/etc/COPYRIGHT:\
         [Se han omitido otras entradas]

   Otros posibles valores para caracteristica de passwd_format pueden
   ser blf y md5 (para utilizar los algoritmos Blowfish y MD5
   respectivamente).

   Se debe reconstruir la base de datos de acceso siempre que se
   modifique el fichero /etc/login.conf mediante la ejecucion de la
   siguiente orden como root:

 # cap_mkdb /etc/login.conf

     Nota: El formato de las contrasenas que ya se encuentran
     definidas en /etc/master.passwd no se actualizara hasta que el
     usuario cambie su contrasena, despues de que se haya
     reconstruido la base de datos de tipos de acceso.

   A continuacion para asegurarse de que las contrasenas se cifran
   con el formato seleccionado tambien debemos comprobar que la
   variable crypt_default dentro del fichero /etc/auth.conf da
   preferencia al formato de contrasena elegido. Por ejemplo cuando
   se utilizan contrasenas cifradas con DES la entrada debe ser:

 crypt_default   =       des blf md5

   Si se realizan los pasos anteriores en cada una de las maquinas
   clientes y servidoras de nuestro entorno NIS podemos asegurar que
   todas utilizan el mismo formato de contrasena dentro de nuestra
   red. Si se presentan problemas de validacion con determinados
   usuarios en una determinada maquina cliente se puede empezar a
   investigar sobre el asunto. Recuerde: si se quiere desplegar un
   servicio de paginas amarillas sobre un entorno de red heterogeneo
   probablemente se deba utilizar DES en todos los sistemas puesto
   que DES es el minimo comun denominador.

     --------------------------------------------------------------

29.10. DHCP

   Escrito por Greg Sutter.

  29.10.1. ?Que es DHCP?

   DHCP, el Protocolo de Configuracion Dinamica de Maquinas ("Dynamic
   Host Configuration Protocol"), especifica un metodo para
   configurar dinamicamente los parametros de red necesarios para que
   un sistema pueda comunicarse efectivamente. FreeBSD utiliza la
   implementacion de DHCP proporcionada por el Internet Software
   Consortium (ISC) de tal forma que toda la informacion relativa a
   la configuracion de DHCP se basa en la distribucion proporcionada
   por el ISC.

     --------------------------------------------------------------

  29.10.2. Contenido de esta seccions

   Esta seccion describe tanto los componentes de la parte servidora
   como los componentes de la parte cliente del sistema DHCP del ISC.
   El programa cliente, denominado forma parte por defecto de los
   sistemas FreeBSD y el programa servidor se puede instalar a partir
   del "port" net/isc-dhcp3-server. Las principales fuentes de
   informacion son las paginas de manual dhclient(8), dhcp-options(5)
   y dhclient.conf(5) junto con las referencias que se muestran a
   continuacion en esta misma seccion.

     --------------------------------------------------------------

  29.10.3. Como funciona

   Cuando el cliente de DHCP, dhclient, se ejecuta en una maquina
   cliente, valga la redundancia, comienza a enviar peticiones
   "broadcast" solicitando informacion de configuracion. Por defecto
   estas peticiones se realizan contra el puerto UDP 68. El servidor
   responde a traves del puerto UDP 67 proporcionando al cliente una
   direccion IP junto con otros parametros relevantes para el
   correcto funcionamiento del sistema en la red, tales como la
   mascara de red, el " router" por defecto y los servidores de DNS.
   Toda esta informacion se "presta" y es valida solo durante un
   determinado periodo de tiempo (configurado por el administrador
   del servidor de DHCP). De esta forma direcciones IP asignadas a
   clientes que ya no se encuentran conectados a la red pueden ser
   reutilizadas al pasar determinado periodo de tiempo.

   Los clientes de DHCP pueden obtener una gran cantidad de
   informacion del servidor. Se puede encontrar una lista completa en
   dhcp-options(5).

     --------------------------------------------------------------

  29.10.4. Integracion dentro de los sistemas FreeBSD

   FreeBSD se integra totalmente con el cliente DHCP del ISC,
   dhclient. Este soporte se proporciona tanto en el proceso de
   instalacion como en la instalacion por defecto del sistema base
   obviando la necesidad de poseer un conocimiento detallado de
   aspectos relacionados con la configuracion de redes siempre y
   cuando se disponga de servicio de DHCP en la red dada. dhclient se
   incluye en todas las distribuciones de FreeBSD desde la version
   3.2.

   sysinstall soporta DHCP. Cuando se configura la interfaz de red la
   primera pregunta es: " ?Quiere intentar configurar el interfaz
   mediante DHCP?". Si se responde afirmativamente se ejecutara
   dhclient y si tiene exito se procede con los siguientes pasos de
   configuracion rellenandose automaticamente las variables de
   arranque necesarias para completar la configuracion de la red.

   Existen dos cosas que se deben realizar de tal forma que nuestro
   sistema utilice la configuracion de red mediante DHCP al arrancar:

     * Asegurarse de que el dispositivo bpf se encuentra compilado en
       el kernel. Para ello basta anadir device bpf (pseudo-device
       bpf en los sistemas FreeBSD 4.X) al fichero de configuracion
       del kernel y recompilarlo e instalarlo. Para mas informacion
       sobre la construccion de nucleos consulte Capitulo 8.

       El dispositivo bpf se encuentra activado por defecto dentro
       del fichero de configuracion del nucleo (GENERIC que
       encontrara en su sistema FreeBSD de forma que si no se esta
       utilizando un fichero de configuracion del nucleo especifico
       (hecho a medida y/o por usted) no es necesario crear uno nuevo
       y se puede utilizar directamente GENERIC.

         Nota: Para aquellas personas especialmente preocupadas por
         la seguridad debemos advertir de que el dispositivo bpf es
         el dispositivo que las aplicaciones de captura de paquetes
         utilizan para acceder a los mismos (aunque dichas
         aplicaciones deben ser ejecutadas como root). DHCP requiere
         la presencia de bpf pero si la seguridad del sistema es mas
         importante que la configuracion automatica de la red no se
         recomienda instalar bpf en el nucleo.

     * Editar el fichero /etc/rc.conf para para incluir lo siguiente:

 ifconfig_fxp0="DHCP"

         Nota: Asegurese de sustituir fxp0 con el nombre de interfaz
         que desea que se configure dinamicamente, como se describe
         en Seccion 11.1.

       Si se utiliza una ubicacion distinta para dhclient o si se
       desea anadir opciones adicionales a dhclient se puede incluir,
       adaptandolo a las condiciones particulares de cada usuario, lo
       siguiente:

 dhcp_program="/sbin/dhclient"
 dhcp_flags=""

   El servidor de DHCP (dhcpd) forma parte del "port"
   net/isc-dhcp3-server. Este " port" tambien contiene la
   documentacion de ISC DHCP.

     --------------------------------------------------------------

  29.10.5. Ficheros

     * /etc/dhclient.conf

       dhclient necesita un fichero de configuracion denominado
       /etc/dhclient.conf. Normalmente este fichero solo contiene
       comentarios de forma que las opciones que se definen por
       defecto son razonablemente inocuas. Este fichero de
       configuracion se describe en la pagina de manual de
       dhclient.conf(5).

     * /sbin/dhclient

       dhclient se encuentra enlazado de forma estatica y reside en
       /sbin. La pagina de manual de dhclient(8) proporciona mas
       informacion sobre la orden dhclient.

     * /sbin/dhclient-script

       dhclient-script es el " script" de configuracion del cliente
       de DHCP especifico de FreeBSD. Tiene todos los detalles en
       dhclient-script(8) pero no necesita hacer ninguna modificacion
       en el para que todo funcione correctamente.

     * /var/db/dhclient.leases

       El cliente de DHCP mantiene una base de datos de prestamos en
       este fichero que se escribe de forma semejante a un "log". En
       dhclient.leases(5) puede consultar una explicacion ligeramente
       mas detallada.

     --------------------------------------------------------------

  29.10.6. Lecturas recomendadas

   El protocolo DHCP se describe completamente en RFC 2131. Tambien
   tiene mas informacion en dhcp.org.

     --------------------------------------------------------------

  29.10.7. Instalacion y configuracion de un servidor de DHCP

    29.10.7.1. Que temas se tratan en esta seccion

   Esta seccion proporciona informacion sobre como configurar un
   sistema FreeBSD de forma que actue como un servidor de DHCP
   utilizando la implementacion proporcionada por el Internet
   Software Consortium (ISC).

   La parte servidora del paquete proporcionado por el ISC no se
   instala por defecto en los sistemas FreeBSD pero se puede intalar
   como "port" desde net/isc-dhcp3-server. Consulte Capitulo 4 si
   necesita saber mas sobre la Coleccion de "ports".

     --------------------------------------------------------------

    29.10.7.2. Instalacion del servidor DHCP

   Para configurar un sistema FreeBSD como servidor de DHCP debe
   asegurarse de que el dispositivo bpf(4) esta compilado dentro del
   nucleo. Para ello basta anadir device bpf ( pseudo-device bpf en
   FreeBSD 4.X) al fichero de configuracion del nucleo y reconstruir
   el mismo. Si necesita saber mas sobre el proceso de compilar e
   instalar el nucleo consulte Capitulo 8.

   El dispositivo bpf ya se encuentra activado en el fichero de
   configuracion GENERIC del nucleo que se facilita con FreeBSD de
   tal forma que no resulta imprescindible crear un nucleo a medida
   para ejecutar DHCP.

     Nota: Para aquellas personas especialmente preocupadas por la
     seguridad debemos advertir de que el dispositivo bpf es el
     dispositivo que las aplicaciones de captura de paquetes utilizan
     para acceder a los mismos (aunque dichas aplicaciones deben ser
     ejecutadas como root). DHCP requiere la presencia de bpf pero si
     la seguridad del sistema es mas importante que la configuracion
     automatica de la red no se recomienda instalar bpf en el nucleo.

   El siguiente paso consiste en editar el fichero de ejemplo
   dhcpd.conf que se crea al instalar el "port" net/isc-dhcp3-server.
   Por defecto el fichero se llama /usr/local/etc/dhcpd.conf.sample,
   asi que se debe copiar este fichero a /usr/local/etc/dhcpd.conf y
   a continuacion realizar todos los cambios sobre este ultimo.

     --------------------------------------------------------------

    29.10.7.3. Configuracion del servidor de DHCP

   El fichero dhcpd.conf se compone de un conjunto de declaraciones
   que hacen referencia a maquinas y a subredes. Esto se entendera
   mejor mediante el siguiente ejemplo:

 option domain-name "ejemplo.com";(1)
 option domain-name-servers 192.168.4.100;(2)
 option subnet-mask 255.255.255.0;(3)

 default-lease-time 3600;(4)
 max-lease-time 86400;(5)
 ddns-update-style none;(6)

 subnet 192.168.4.0 netmask 255.255.255.0 {
   range 192.168.4.129 192.168.4.254;(7)
   option routers 192.168.4.1;(8)
 }

 host mailhost {
   hardware ethernet 02:03:04:05:06:07;(9)
   fixed-address mailhost.ejemplo.com;(10)
 }

   (1)
           Esta opcion especifica el dominio que se proporciona a los
           clientes y que dichos clientes utilizan como dominio de
           busqueda por defecto. Consulte resolv.conf(5) si necesita
           mas informacion sobre que significa el dominio de
           busqueda.
   (2)
           Esta opcion especifica la lista de servidores de DNS
           (seperados por comas) que deben utilizar los clientes.
   (3)
           La mascara de red que se proporciona a los clientes.
   (4)
           Un cliente puede solicitar un determinado tiempo de vida
           para el prestamo. En caso contrario el servidor asigna un
           tiempo de vida por defecto mediante este valor (expresado
           en segundos).
   (5)
           Este es el maximo tiempo que el servidor puede utilizar
           para realizar prestamos a los clientes. Si un cliente
           solicita un tiempo mayor como maximo se respondera con el
           valor aqui configurado, ignorandose la peticion de tiempo
           del cliente.
   (6)
           Esta opcion especifica si el servidor de DHCP debe
           intentar actualizar el servidor de DNS cuando se acepta o
           se libera un prestamo. En la implementacion proporcionada
           por el ISC esta opcion es obligatoria.
   (7)
           Esto indica que direcciones IP se pueden utilizar para ser
           prestadas a los clientes que las soliciten. Las
           direcciones IP pertenecientes a este rango, incluyendo los
           extremos, se pueden entregar a los clientes.
   (8)
           Declara cual es la pasarela por defecto que se
           proporcionara a los clientes.
   (9)
           Especifica la direccion MAC de una maquina, de tal forma
           que el servidor de DHCP pueda identificar a la maquina
           cuando realice una peticion.
   (10)
           Especifica que la maquina cliente deberia obtener siempre
           la misma direccion IP. Recuerde que se puede utilizar un
           nombre de maquina para esto ya que el servidor de DHCP
           resolvera el nombre por si mismo antes de devolver la
           informacion al cliente.

   Una vez que se ha acabado de configurar el fichero dhcpd.conf se
   puede proceder con la ejecucion del servidor mediante la siguiente
   orden:

 # /usr/local/etc/rc.d/isc-dhcpd.sh start

   Si posteriormente se necesitan realizar cambios en la
   configuracion anterior tenga en cuenta que el envio de la senal
   SIGHUP a la aplicacion dhcpd no provoca que se lea de nuevo la
   configuracion como suele ocurrir en la mayoria de los daemones.
   Tendra que enviar la senal SIGTERM para parar el proceso y
   posteriormente relanzar el daemon utilizando la orden anterior.

     --------------------------------------------------------------

    29.10.7.4. Ficheros

     * /usr/local/sbin/dhcpd

       dhcpd se encuentra enlazado de forma estatica y reside en el
       directorio /usr/local/sbin. La pagina de manual dhcpd(8) que
       se instala con el "port" le proporcionara mas informacion
       sobre dhcpd.

     * /usr/local/etc/dhcpd.conf

       dhcpd necesita un fichero de configuracion,
       /usr/local/etc/dhcpd.conf. Este fichero contiene toda la
       informacion relevante que se quiere proporcionar a los
       clientes que la soliciten, junto con informacion relacionada
       con el funcionamiento del servidor. Este fichero de
       configuracion se describe en la pagina del manual
       dhcpd.conf(5) que instala el " port".

     * /var/db/dhcpd.leases

       El servidor de DHCP mantiene una base de datos de prestamos o
       alquileres dentro de este fichero, que presenta un formato de
       fichero de "log". La pagina del manual dhcpd.leases(5) que se
       instala con el "port" proporciona una descripcion ligeramente
       mas larga.

     * /usr/local/sbin/dhcrelay

       dhcrelay se utiliza en entornos de red avanzados donde un
       servidor de DHCP reenvia una peticion de un cliente hacia otro
       servidor de DHCP que se encuentra localizado en otra subred.
       Si se necesita esta funcionalidad se debe instalar el "port"
       net/isc-dhcp3-server. La pagina del manual dhcrelay(8)
       proporcionada por el "port" contiene mas detalles sobre esto.

     --------------------------------------------------------------

29.11. DNS

   Enviado por Chern Lee.

  29.11.1. Resumen

   FreeBSD utiliza por defecto una version de BIND (Berkeley Internet
   Name Domain) que proporciona la implementacion mas comun del
   protocolo de DNS. DNS es el protocolo a traves del cual los
   nombres de maquinas se asocian con direcciones IP y viceversa. Por
   ejemplo una consulta preguntando por www.FreeBSD.org recibe una
   respuesta con la direccion IP del servidor web del Proyecto
   FreeBSD, mientras que una pregunta sobre ftp.FreeBSD.org recibe
   como respuesta la direccion IP correspondiente al servidor de FTP.
   El proceso inverso sucede de una forma similar. Una pregunta
   relativa a una determinada direccion IP se resuelve al nombre de
   la maquina que la posee. No se necesita ejecutar un servidor de
   DNS para poder realizar consultas y busquedas de DNS.

   El DNS se coordina de forma distribuida a traves de Internet
   utilizando un sistema en cierta forma complejo de servidores de
   nombres raiz autorizados y mediante otros servidores de nombres de
   menor escala que se encargan de replicar la informacion de
   dominios individuales con el objetivo de mejorar los tiempos de
   respuesta de busquedas reiteradas de la misma informacion.

   Este documento hace referencia a la version estable BIND 8.X. BIND
   9.X se puede instalar a traves del "port" net/bind9.

   El protocolo de DNS se encuentra definido en la RFC1034 y la
   RFC1035.

   El Internet Software Consortium (www.isc.org) se encarga de de
   mantener el software de BIND.

     --------------------------------------------------------------

  29.11.2. Terminologia

   Para comprender este documento se deben definir los siguientes
   terminos:

          Termino                         Definicion                  
   DNS directo (Forward  Asociacion de nombres de maquinas con        
   DNS)                  direcciones IP                               
   Origen                Se refiere al dominio cubierto por un        
                         determinado fichero de zona                  
   named, BIND, servidor Nombres tipicos que hacen referencia al      
   de nombres (name      paquete servidor de nombres de BIND de       
   server)               FreeBSD                                      
                         Un proceso del sistema que utilizan las      
   Resolver              aplicaciones para hacer preguntas al         
                         servidor de nombres.                         
   DNS inverso (Reverse  Lo contrario de lo que realiza el DNS        
   DNS)                  directo; asocia direcciones IP con nombres   
                         de maquinas                                  
                         El comienzo de la jerarquia de zonas de      
                         Internet. Todas las zonas surgen a partir de 
   Zona Raiz             una zona raiz de forma similar a como todos  
                         los directorios de un sistema de ficheros se 
                         encuentran a partir de un directorio raiz    
                         inicial.                                     
                         Un dominio individual, subdominio o porcion  
   Zona                  del DNS que se encuentra administrado por la 
                         misma autoridad.                             

   Ejemplos de zonas:

     * . es la zona raiz

     * org. es una zona localizada bajo la zona raiz

     * ejemplo.org es una zona localizada bajo la zona org.

     * foo.ejemplo.org. es un subdominio o una zona ubicada bajo la
       zona ejemplo.org.

     * 1.2.3.in-addr.arpa es una zona que referencia a a todas las
       direcciones IP que se encuentran dentro del espacio de
       direcciones de 3.2.1.*.

   Como se puede observar la parte mas especifica de una maquina
   aparece mas a la izquierda. Por ejemplo ejemplo.org es mas
   especifico que org. y del mismo modo org. es mas especifico que la
   zona raiz. El formato de cada parte del nombre de la maquina es
   muy similar al formato de un sistema de ficheros: el directorio
   /dev se encuentra dentro del directorio raiz, y asi sucesivamente.

     --------------------------------------------------------------

  29.11.3. Razones para ejecutar un servidor de nombres

   Los servidores de nombres normalmente son de dos tipos:
   autoritarios y de cache.

   Se necesita un servidor de nombres autoritario cuando:

     * uno quiere proporcionar informacion de DNS al resto del mundo
       respondiendo con informacion autoritaria a las consultas
       recibidas.

     * un dominio, por ejemplo ejemplo.org, esta registrado y se
       necesita anadir nombres de maquinas bajo dicho dominio.

     * un bloque de direcciones IP necesita entradas de DNS inversas
       (de IP a nombre de maquina).

     * un servidor de nombres de "backup", llamado esclavo, debe
       responder a consultas cuando el servidor primario se encuentre
       caido o inaccesible.

   Se necesita un servidor cache cuando:

     * un servidor de DNS local puede responder mas rapidamente de lo
       que se haria si se tuviera que preguntar al servidor de
       nombres externo.

     * se desea reducir el trafico global de red (se ha llegado a
       comprobar que el trafico de DNS supone un 5% o mas del total
       del trafico que circula por Internet).

   Cuando se pregunta por www.FreeBSD.org el " resolver" normalmente
   pregunta al servidor de nombres del ISP de nivel superior y se
   encarga de recibir la respuesta. Si se utiliza un servidor de DNS
   cache local la pregunta solo se dirige una unica vez hacia el
   exterior. Dicha pregunta la realiza el servidor cache. Posteriores
   consultas sobre el mismo nombres son respondidas directamente por
   este servidor.

     --------------------------------------------------------------

  29.11.4. Como funciona

   En FreeBSD el daemon de BIND se denomina named por razones obvias.

          Fichero                         Descripcion                 
   named                  El daemon de BIND                           
   ndc                    El programa de control del daemon           
   /etc/namedb            El directorio donde se almacena la          
                          informacion de las zonas de BIND            
   /etc/namedb/named.conf El archivo de configuracion del daemon      

   Los ficheros de zonas se encuentran normalmente bajo el directorio
   /etc/namedb y contienen la informacion que proporciona el servidor
   de nombres al resto de maquinas de Internet.

     --------------------------------------------------------------

  29.11.5. Ejecucion de BIND

   Debido a que BIND se instala por defecto la configuracion resulta
   ser bastante sencilla.

   Para asegurarnos de que el daemon se ejecuta al inicio del sistema
   se deben anadir las siguientes modificaciones en /etc/rc.conf:

 named_enable="YES"

   Para arrancar el daemon de forma manual (una vez configurado)

 # ndc start

     --------------------------------------------------------------

  29.11.6. Ficheros de configuracion

     --------------------------------------------------------------

    29.11.6.1. Uso de make-localhost

   Asegurese de hacer los siguiente

 # cd /etc/namedb
 # sh make-localhost

   para que se cree el archivo de zona inversa
   /etc/namedb/localhost.rev de forma apropiada.

     --------------------------------------------------------------

    29.11.6.2. /etc/namedb/named.conf

 // $FreeBSD$
 //
 // Consulte la pA!gina man de named(8) para mA!s detalles.  tiene
 // alguna vez la necesidad de configurar un servidor primario
 // asegA-oree de que entiende a la perfecciA^3n los detalles peliagudos
 // del funcionamiento del DNS.  Si hay errores, incluso triviales,
 // puede sufrir pA(c)rdidas de conectividad ogenerar cantidades ingentes
 // de trA!fico inA-otil hacia o desde Interne

 options {
         directory "/etc/namedb";

 // AdemA!s de con la lA!usula "forwarders" puedeobligar a su servidor
 // de nombres a que nunca lance bA-osquedas por su cuenta sino que
 // se las pida a sus "forwarders". Esto se hace del siguiente modo:
 //
 //      forward only;

 // Si su proveedor de acceso tiene a su alcance un servidor DNS
 // escriba aquA su direcciA^3n IP y descomente la lAneaPodrA! usar
 // su cachA(c) y por lo tanto reducir el trA!fico DNS de Internet.
 //

 /*
         forwarders {
                 127.0.0.1;
         };
 */

   Tal y como se dice en los comentarios del ejemplo para
   beneficiarnos de la cache se puede activar forwarders. En
   circunstancias normales un servidor de nombres busca de forma
   recursiva a traves de Internet tratando de localizar un servidor
   de nombres que sea capaz de responder una determinada pregunta. Si
   se activa esta opcion por defecto se pasa a preguntar primero al
   servidor de nombres especificado (servidor o servidores) pudiendo
   aprovecharse de la informacion de cache que dicho servidor tuviera
   disponible. Si el servidor de nivel superior al nuestro se
   encuentra congestionado puede merecer la pena la activacion de
   esta caracteristica de "redireccion" ya que se puede disminuir la
   carga de trafico que dicho servidor tiene que soportar.

     AvisoLa direccion IP 127.0.0.1 no funciona ai. Se debe cambiar
     esta direccion IP por un servidor de nombres valido.

         /*
          * Si hay un cortafuegos entre usted y los servidores de
          * nombres que quiere consultar tendrA! que descoentar la
          * siguiente directiva, "query-source".  Las versiones
          * anteriores de BIND siempre hacAan sus consultas a travA(c)s
          * del puerto 53 pero BIND 8.1 utiliza por defecto un puerto no
          * privilegiado.
          */
         // query-source address * port 53;

         /*
          * Si lo va a ejecutar en un "cajA^3n de arena" (o "sandbox")
          * tendrA! que declarar una uicaciA^3n diferente para el
          * fichero de volcado de named.
          */
         // dump-file "s/named_dump.db";
 };

 // Nota: lo siguiente serA! incluAdo en futuras versiones.
 /*
 host { any; } {
         topology {
                 127.0.0.0/8;
         };
 };
 */

 // La configuraciA^3n de secundarios se explica de modo secillo a
 // partir de aquA.
 //
 // Si activa un servidor de nombres local no olvide incluAr
 // 127.0.0.1 en su /etc/resolv.conf para que sea ese servidor el
 // primero al que se consulte.
 // AsegA-orese tambiA(c)n de activarlo en /etc/rc.con

 zone "." {
         type hint;
         file "named.root";
 };

 zone "0.0.127.IN-ADDR.ARPA" {
         type master;
         file "localhost.rev";
 };

 zone
 "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" {
         type master;
         file "localhost.rev";
 };

 // Nota: No use las direcciones IP que se muestran aquA, son falsas
 // y sA^3lo se usancomo demostraciA^3n y para una mejor comprensiA^3n.
 //
 // Ejemplo de entradas en la configuraciA^3n de secundarios.  Puede ser
 // conveniente convertirse en secundario al menos del dominio en cuya
 // zona estA! su dominio.  Cnsulte con su administrador de red para
 // que le facilite la direcciA^3n IP del servidor primario.
 //
 // No olvide incluAr la zona del bucle inverso (IN-ADDR.ARPA).  (Son
 // los primeros bytes de la direcciA^3n IP correspondiente, en orden
 // inverso, con ".IN-ADDR.ARPA" al final.)
 //
 // Antes de configurar una zona primara asegA-oresede haber comprendido
 // completamente cA^3mo funcionan DNS y BIND.  Hay errores que no son
 // visibles fA!cilmente.  La configuraciA^3n de un secundario es, por
 // el contrario, muchAsimo mA!s sencilla.
 //
 // Nota: No se limite a copiar los ejemplos de mA!s arriba. :-)
 // Utilice nombres y direcciones reales.
 //
 // ADVERTENCIA: FreeBSD ejecuta bind en un sandbok (observe los
 // parA!meros de named (named_flags) en rc.conf).  El directorio que
 // contiene las zonas secundarias debe tener permisos de escritura
 // para bind.  Le sugerimos la siguiente secuencia de ordenes:
 //
 //      mkdir /etc/namedb/s
 //      chown bind:bind /etc/namedb/s
 //      chmod 750 /etc/namedb/s

   Si quiere mas informacion sobre como ejecutar BIND en un "sandbox"
   consulte Ejecucion de named en un sandbox.

 /*
 zone "ejemplo.com" {
         type slave;
         file "s/ejemplo.com.bak";
         masters {
                 192.168.1.1;
         };
 };

 zone "0.168.192.in-addr.arpa" {
         type slave;
         file "s/0.168.192.in-addr.arpa.bak";
         masters {
                 192.168.1.1;
         };
 };
 */

   Dentro del fichero named.conf se muestran ejemplos de entradas de
   esclavo tanto para las zonas directas como para las inversas.

   Para cada nueva zona administrada se debe crear una entrada de
   zona dentro del fichero named.conf

   Por ejemplo la entrada de zona mas simple para el dominio
   ejemplo.org puede ser algo como esto:

 zone "ejemplo.org" {
         type master;
         file "ejemplo.org";
 };

   Esta zona es una zona maestra ( observe la linea de type, y
   mantiene la informacion de la zona en /etc/namedb/ejemplo.org tal
   como se indica en la linea de file.

 zone "ejemplo.org" {
         type slave;
         file "ejemplo.org";
 };

   En el caso del esclavo la informacion de la zona se transmite
   desde el servidor de nombres maestro y se almacena en el fichero
   especificado. Cuando el servidor maestro " muere" o no puede ser
   alcanzado el servidor de nombres esclavo puede responder a las
   peticiones debido a que posee la informacion de la zona.

     --------------------------------------------------------------

    29.11.6.3. Ficheros de zona

   A continuacion se muestra un fichero de una zona maestra para el
   dominio ejemplo.org, que se encuentra ubicado en
   /etc/namedb/ejemplo.org:

 $TTL 3600

 example.org. IN SOA ns1.ejemplo.org. admin.ejemplo.org. (
                         5               ; Serial
                         10800           ; Refresh
                         3600            ; Retry
                         604800          ; Expire
                         86400 )         ; Minimum TTL

 ; DNS Servers
 @       IN NS           ns1.ejemplo.org.
 @       IN NS           ns2.ejemplo.org.

 ; Machine Names
 localhost       IN A    127.0.0.1
 ns1             IN A    3.2.1.2
 ns2             IN A    3.2.1.3
 mail            IN A    3.2.1.10
 @               IN A    3.2.1.30

 ; Aliases
 www             IN CNAME        @

 ; MX Record
 @               IN MX   10      mail.ejemplo.org.

   Tenga muy en cuenta que todo nombre de maquina que termina en "."
   es tratado como si fuera un nombre de maquina completo mientras
   que cualquier otro nombre sin el "." final se trata como una
   referencia relativa al dominio de origen de la zona. Por ejemplo
   www se traduce a www + origen. En nuestro fichero de zona ficticio
   nuestro origen es ejemplo.org de forma que www se convierte en
   www.ejemplo.org

   El formato de un fichero de zona es el siguiente:

 nombrederegistro IN tipodeentrada valor

   Los registros de DNS que mas se utilizan son:

   SOA

           Comienzo de Zona con Autoridad (Start Of zone Authority)

   NS

           Un servidor de nombres con autoridad para una una
           determinada zona

   A

           Una direccion IP de una maquina

   CNAME

           El nombre canonico de una maquina para definir un alias

   MX

           mail exchanger

   PTR

           Un puntero a un nombre de dominio (utilizados para definir
           el DNS inverso)

 ejemplo.org. IN SOA ns1.ejemplo.org. admin.ejemplo.org. (
                         5               ; Serial
                         10800           ; Refresh after 3 hours
                         3600            ; Retry after 1 hour
                         604800          ; Expire after 1 week
                         86400 )         ; Minimum TTL of 1 day

   ejemplo.org.

           el nomre de dominio, tambien el origen para el fichero de
           zona

   ns1.ejemplo.org.

           el servidor de nombres primario/autoritario para esta zona

   admin.ejemplo.org.

           la persona responsable de esta zona; observe que la
           direccion de correo electronico aparece con la @
           sustituida por un punto. (<admin@ejemplo.org> se escribe
           admin.ejemplo.org)

   5

           el numero de serie del fichero. Este numero se debe
           incrementar cada vez que se modifique el fichero de zona.
           Muchos administradores prefieren un formato expresado del
           siguiente modo aaaammddss. 2001041002 significa (segun
           dicho formato) que el fichero se modifico por ultima vez
           el 04/10/2001 y se indica con los dos ultimos digitos (02)
           que es la segunda vez en el dia que se ha modificado el
           fichero. El numero de serie es importante ya que para
           avisar a los servidores de nombres esclavos de que se ha
           actualizado la zona.

 @       IN NS           ns1.ejemplo.org.

   Esta es una entrada de tipo NS. Cada servidor de nombres que
   contesta de forma autoritaria a las consultas de un determinado
   dominio debe tener una de estas entradas. El caracter @ se
   sustituye por ejemplo.org., es decir, se sustituye por el origen.

 localhost       IN A    127.0.0.1
 ns1             IN A    3.2.1.2
 ns2             IN A    3.2.1.3
 mail            IN A    3.2.1.10
 @               IN A    3.2.1.30

   El registro de tipo A hace referencia a nombres de maquinas . Como
   puede verse mas arriba ns1.ejemplo.org se resuelve a 3.2.1.2.
   Vemos que se utiliza otra vez el origen @, que significa que
   ejemplo.org se resuelve a 3.2.1.30.

 www             IN CNAME        @

   Los registros de nombres canonicos se utilizan normalmente como
   alias de maquinas. En el ejemplo www es un alias de ejemplo.org
   (3.2.1.30). CNAMEs se puede utilizar para proporcionar alias de
   nombres de maquinas, o tambien para proporcionar un mecanismo de
   vuelta ciclica ("round robin") de un nombre de maquina mapeado a
   un determinado conjunto de maquinas intercambiables.

 @               IN MX   10      mail.ejemplo.org.

   El registro MX indica que servidores de correo se encargan de
   recibir correos para esta zona. mail.example.org es el nombre del
   servidor de correo y 10 significa la prioridad de dicho servidor.

   Se pueden especificar varios servidores de correo con prioridades
   de, por ejemplo,3, 2 y 1. Un servidor de correo que intenta
   entregar correo para el dominio ejemplo.org primero intentara
   contactar con el servidor especificado en el registro MX de mayor
   prioridad, despues con el siguiente y asi sucesivamente hasta que
   lo logre entregar.

   Para los ficheros de zona de in-addr.arpa (DNS inverso) se utiliza
   el mismo formato excepto que se especifican registros PTR en lugar
   de registros A o CNAME.

 $TTL 3600

 1.2.3.in-addr.arpa. IN SOA ns1.ejemplo.org. admin.ejemplo.org. (
                         5               ; Serial
                         10800           ; Refresh
                         3600            ; Retry
                         604800          ; Expire
                         3600 )          ; Minimum

 @       IN NS   ns1.ejemplo.org.
 @       IN NS   ns2.ejemplo.org.

 2       IN PTR  ns1.ejemplo.org.
 3       IN PTR  ns2.ejemplo.org.
 10      IN PTR  mail.ejemplo.org.
 30      IN PTR  ejemplo.org.

   Este fichero proporciona las asociaciones de direcciones IP con
   nombres de maquinas adecuadas para nuestro dominio ficticio.

     --------------------------------------------------------------

  29.11.7. Servidor de nombres de cache

   Un servidor de nombres de tipo cache es un servidor de nombres que
   no es autoritario para ninguna zona. Simplemente realiza consultas
   por si mismo y recuerda las respuestas para futuros usos. Para
   configura uno de estos servidores se configura el servidor de la
   forma habitual pero se omite la inclusion de zonas.

     --------------------------------------------------------------

  29.11.8. Ejecucion de named en una " Sandbox"

   Para obtener una mayor seguridad se puede ejecutar named(8) como
   un usuario sin privilegios y configurarlo mediante chroot(8)
   dentro del directorio especificado como el directorio del
   "sandbox". Esto hace que cualquier cosa que se encuentre fuera de
   dicho directorio resulte inaccesible para el daemon named. En caso
   de que se comprometiera la seguridad de named esta restriccion
   puede ayudar a limitar el dano sufrido. FreeBSD dispone por
   defecto de un usuario y un grupo destinado a este uso: bind.

     Nota: Hay quien recomienda que en lugar de configurar named con
     chroot es mejor configurarlo dentro de jail(8). En esta seccion
     no se va a explicar esa alternativa.

   Debido a que named no va a poder acceder a nada que se encuentre
   fuera del directorio " sandbox" (y esto incluye cosas tales como
   bibliotecas compartidas, "sockets" de "log", etc) se debe efectuar
   una serie de cambios para que named pueda funcionar con
   normalidad. En la siguiente lista se supone que la ruta del
   "sandbox" es /etc/namedb y que no se ha modificado anteriormente
   dicho directorio. Por favor, ejecute los pasos que se muestran a
   continuacion:

     * Cree todos los directorios que named espera tener a su
       disposicion:

 # cd /etc/namedb
 # mkdir -p bin dev etc var/tmp var/run master slave
 # chown bind:bind slave var/*(1)

            (1)
                    named solamente necesita escribir en estos
                    directorios asi que eso es todo lo que debemos
                    crear.
     * Reorganizar y crear los archivos de configuracion de zona
       basicos:

 # cp /etc/localtime etc(1)
 # mv named.conf etc && ln -sf etc/named.conf
 # mv named.root master
 # sh make-localhost && mv localhost.rev localhost-v6.rev master
 # cat > master/named.localhost
 $ORIGIN localhost.
 $TTL 6h
 @       IN      SOA     localhost. postmaster.localhost. (
                         1       ; serial
                         3600    ; refresh
                         1800    ; retry
                         604800  ; expiration
                         3600 )  ; minimum
         IN      NS      localhost.
         IN      A               127.0.0.1
 ^D

            (1)
                    Esto permite que named pueda escribir al archivo
                    de log la hora correcta a traves del syslogd(8)
     * Si esta usando una version de FreeBSD anterior a 4.9-RELEASE
       se debe construir una copia estaticamente enlazada de
       named-xfer y copiarla dentro del directorio del "sandbox":

 # cd /usr/src/lib/libisc
 # make cleandir && make cleandir && make depend && make all
 # cd /usr/src/lib/libbind
 # make cleandir && make cleandir && make depend && make all
 # cd /usr/src/libexec/named-xfer
 # make cleandir && make cleandir && make depend && make NOSHARED=yes all
 # cp named-xfer /etc/namedb/bin && chmod 555 /etc/namedb/bin/named-xfer(1)

       Despuees de instalar la version estatica de named-xfer se
       deben realizar algunas tareas de limpieza para evitar dejar
       copias de bibliotecas o de programas en nuestros ficheros de
       fuentes:

 # cd /usr/src/lib/libisc
 # make cleandir
 # cd /usr/src/lib/libbind
 # make cleandir
 # cd /usr/src/libexec/named-xfer
 # make cleandir

            (1)
                    En algunas ocasiones este paso puede fallar. Si
                    es su caso ejecute lo siguiente:

 # cd /usr/src && make cleandir && make cleandir

                    y borre su directorio /usr/obj:

 # rm -fr /usr/obj && mkdir /usr/obj

                    Esto limpia cualquier "impureza" del arbol de
                    fuentes y si se repiten los pasos anteriores todo
                    deberia funcionar.

       Si se esta usando FreeBSD version 4.9-RELEASE o posterior el
       ejecutable de named-xfer del directorio /usr/libexec ya se
       encuentra enlazado estaticamente y se puede utilizar cp(1)
       para copiarlo directamente en nuestro "sandbox".

     * Cree el fichero dev/null de tal forma que named pueda verlo y
       pueda escribir sobre el:

 # cd /etc/namedb/dev && mknod null c 2 2
 # chmod 666 null

     * Enlace simbolicamente /var/run/ndc con
       /etc/namedb/var/run/ndc:

 # ln -sf /etc/namedb/var/run/ndc /var/run/ndc

         Nota: Esto simplemente evita el tener que especificar la
         opcion -c de ndc(8) cada vez que se ejecute. Dado que los
         contenidos de /var/run se borran al inicio del sistema, si
         se piensa que esto puede resultar util, se puede anadir esta
         orden al " crontab" del usuario root utilizando la opcion
         @reboot. Consulte crontab(5) para saber mas informacion
         sobre esto.

     * Configure syslogd(8) para que cree un "socket" de log
       adicional de tal forma que named pueda escribir sobre el.
       Anada -l /etc/namedb/dev/log a la variable syslogd_flags
       dentro del fichero /etc/rc.conf.

     * Reorganice la ejecucion de las aplicaciones named y chroot
       para que se ejecuten dentro del "sandbox" anadiendo lo
       siguiente al fichero/etc/rc.conf:

 named_enable="YES"
 named_flags="-u bind -g bind -t /etc/namedb /etc/named.conf"

         Nota: Recuerde que el fichero de configuracion
         /etc/named.conf tiene una ruta completa que comienza en el
         directorio del "sandbox"; por ejemplo, en la linea superior
         el fichero que aparece es en realidad
         /etc/namedb/etc/named.conf.

   El siguiente paso consiste en editar el fichero
   /etc/namedb/etc/named.conf de tal forma que named pueda conocer
   que zonas cargar y donde encontrarlas en disco. A continuacion se
   muestra un ejemplo comentado (cualquier cosa que no se comenta en
   el ejemplo es porque resulta igual que la configuracion del
   servidor de DNS del caso normal):

 options {
         directory "/";(1)
         named-xfer "/bin/named-xfer";(2)
         version "";             // No muestra la versiAn de BIND
         query-source address * port 53;
 };
 // ndc control socket
 controls {
         unix "/var/run/ndc" perm 0600 owner 0 group 0;
 };
 // A partir de aquAvan las zonas:
 zone "localhost" IN {
         type master;
         file "master/named.localhost";(3)
         allow-transfer { localhost; };
         notify no;
 };
 zone "0.0.127.in-addr.arpa" IN {
         type master;
         file "master/localhost.rev";
         allow-transfer { localhost; };
         notify no;
 };
 zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.int" {
         type master;
         file "master/localhost-v6.rev";
         allow-transfer { localhost; };
         notify no;
 };
 zone "." IN {
         type hint;
         file "master/named.root";
 };
 zone "private.example.net" in {
         type master;
         file "master/private.example.net.db";
         allow-transfer { 192.168.10.0/24; };
 };
 zone "10.168.192.in-addr.arpa" in {
         type slave;
         masters { 192.168.10.2; };
         file "slave/192.168.10.db";(4)
 };

   (1)
           La linea que contiene directory se especifica como /, ya
           que todos los ficheros que named necesita se encuentran
           dentro de este directorio (recuerde que esto es
           equivalente al fichero /etc/namedb de un usuario "normal".
   (2)
           Especifica la ruta completa para el binario named-xfer
           binary (desde el marco de referencia de named). Esto
           resulta necesario ya que por defecto named se compila de
           tal forma que trata de localizar named-xfer dentro de
           /usr/libexec.
   (3)
           Especifica el nombre del fichero (relativo a la linea
           (relativo a la linea ) directory anterior) donde named
           puede encontrar el fichero de zona para esta zona.
   (4)
           Especifica el nombre del fichero (relativo a la liena
           directory anterior) donde named deberia escribir una copia
           del archivo de zona para esta zona despues de recuperarla
           exitosamente desde el servidor maestro. Este es el motivo
           por el que en las etapas de configuracion anteriores
           necesitabamos cambiar la propiedad del directorio slave al
           grupo bind.

   Despues de completar los pasos anteriores reinicie el servidor o
   reinicie syslogd(8) y ejecute named(8) asegurandose de que se
   utilicen las nuevas opciones especificadas en syslogd_flags y
   named_flags. En estos momentos deberiamos estar ejecutando una
   copia de named dentro de un "sandbox".

     --------------------------------------------------------------

  29.11.9. Seguridad

   Aunque BIND es la implementacion de DNS mas utilizada existe
   siempre el asunto relacionado con la seguridad. De vez en cuando
   se encuentran agujeros de seguridad y vulnerabilidades.

   Es una buena idea suscribirse a CERT y a
   freebsd-security-notifications para estar al dia de los problemas
   de seguridad relacionados con named.

     Sugerencia: Si surge un problema nunca esta de mas actualizar
     los fuentes y recompilar los ejecutables desde dichas fuentes.

     --------------------------------------------------------------

  29.11.10. Lecturas recomendadas

   Las paginas del manual de BIND/named: ndc(8) named(8)
   named.conf(5)

     * Pagina oficial de ISC Bind

     * Preguntas mas frecuentes sobre BIND

     * Libro de O'Reilly "DNS and BIND", cuarta edicion

     * RFC1034 - Nombre de Dominio - Conceptos y Caracteristicas

     * RFC1035 - Nombres de Domninio - Implementacion y
       Especificacion

     --------------------------------------------------------------

29.12. NTP

   Escrito por Tom Hukins.

     --------------------------------------------------------------

  29.12.1. Resumen

   Segun pasa el tiempo el reloj de un computador esta expuesto a
   ligeros desplazamientos. NTP (Protocolo de Hora en Red, en ingles
   "Network Time Protocol") es un protocolo que permite asegurar la
   exactitud de nuestro reloj.

   Existen varios servicios de internet que confian y se pueden
   beneficiar de relojes de computadores precisos. Por ejemplo un
   servidor web puede recibir peticiones de un determinado fichero si
   ha sido modificado posteriormente a una determinada fecha u hora.
   Servicios como cron(8) ejecutan ordenes en determinados instantes.
   Si el reloj no se encuentra ajustado estas ordenes pueden
   ejecutarse fuera de la hora prevista.

   FreeBSD viene con el servidor NTP ntpd(8) que se puede utilizar
   para preguntar a otros servidores NTP, de tal forma que podemos
   ajustar nuestro reloj segun la hora de otros servidores e incluso
   proporcionar servicio de hora nosotros mismos.

     --------------------------------------------------------------

  29.12.2. Eleccion de los servidores de hora adecuados

   Para sincronizar nuestro reloj necesitamos comunicarnos con uno o
   mas servidores NTP. El administrador de nuestra red o nuestro
   proveedor de servicios de Internet muy posiblemente hayan
   configurado algun servidor NTP para estos propositos. Consulte la
   documentacion de que disponga. Existe una lista de servidores NTP
   publicamente accesibles que se pueden utilizar para buscar un
   servidor NTP que se encuentre geograficamente proximo. Asegurese
   de que conoce la politica de uso de estos servidores publicos ya
   que en algunos casos es necesario pedir permiso al administrador
   antes de de poder utilizarlos, principalmente por motivos
   estadisticos.

   Le recomendamos seleccionar servidores NTP que no se encuentren
   conectados entre si por si alguno de los servidores que use sea
   inaccesible o su reloj se averie. ntpd(8) utiliza las respuestas
   que recibe de otros servidores de una forma inteligente.
   servidores de una forma inteligente (Tiene a hacer mas caso a los
   mas fiables.

     --------------------------------------------------------------

  29.12.3. Configuracion de la maquina

     --------------------------------------------------------------

    29.12.3.1. Configuracion basica

   Si solamente deseamos sincronizar nuestro reloj cuando se arranca
   la maquina se puede utilizar ntpdate(8). Esto puede ser adecuado
   en algunas maquinas de escritorio que se reinician frecuentemente
   y donde la sincronizacion no suele ser un objetivo prioritario
   pero normalmente la mayoria de las maquinas deberian ejecutar
   ntpd(8).

   La utilizacion de ntpdate(8) en tiempo de arranque es tambien una
   buena idea incluso para las maquinas que ejecutan ntpd(8). El
   programa ntpd(8) modifica el reloj de forma gradual, mientras que
   ntpdate(8) ajusta directamente el reloj sin importar que tamano
   tenga la diferencia de tiempo existente entre la maquina y el
   servidor de tiempo de referencia.

   Para activar ntpdate(8) en tiempo de arranque, anada
   ntpdate_enable="YES" al fichero /etc/rc.conf. Tambien es necesario
   especificar todos los servidores que deseamos utilizar para
   realizar el proceso de sincronizacion y cualquier parametro que
   deseemos pasar a ntpdate(8) utilizando la variable ntpdate_flags.

     --------------------------------------------------------------

    29.12.3.2. Configuracion general

   NTP se configura mediante el archivo /etc/ntp.conf utilizando el
   formato descrito en ntp.conf(5). A continuacion se muestra un
   sencillo ejemplo:

 server ntplocal.ejemplo.com prefer
 server timeserver.ejemplo.org
 server ntp2a.ejemplo.net

 driftfile /var/db/ntp.drift

   La opcion server especifica que servidores se van a utilizar,
   especificando un servidor por linea. Si se especifica un servidor
   con el argumento prefer, como en ntplocal.ejemplo.com dicho
   servidor se prefiere sobre los demas. No obstante la respuesta de
   su servidor preferido se descartara si difiere sustancialmente de
   la respuesta recibida por parte del resto de los servidores
   especificados; en caso contrario solo se tendra en cuenta la
   respuesta del servidor preferido sin importar la informacion
   suministrada por el resto. El argumento prefer se utiliza
   normalmente en servidores NTP altamente precisos, como aquellos
   que poseen hardware de tiempo especifico.

   La opcion driftfile especifica que fichero se utiliza para
   almacenar el desplazamiento de la fracuencia de reloj de la
   maquina. El programa ntpd(8) utiliza este valor para
   automaticamente compensar el desvio que experimenta de forma
   natural el reloj de la maquina, permitiendo mantener una precision
   acotada incluso cuando se pierde la comunicacion con el resto de
   referencias externas.

   La opcion driftfile especifica que fichero se utiliza para
   almacenar la informacion sobre espuestas anteriores de servidores
   NTP. Este fichero contiene informacion util para la implementacion
   de NTP. No deberia ser modificada por ningun otro proceso.

     --------------------------------------------------------------

    29.12.3.3. Control de acceso al servidor NTP

   Por defecto nuestro servidor de NTP puede ser accedido por
   cualquier maquina de Internet. La opcion restrict se puede
   utilizar para controlar controlar que maquinas pueden acceder al
   servicio.

   Si queremos denegar el acceso a todas las maquinas existentes
   basta con anadir la siguiente linea a /etc/ntp.conf:

 restrict default ignore

   Si solo queremos permitir el acceso al servicio de hora a las
   maquinas de nuestra red y al menos tiempo nos queremos asegurar de
   que dichos clientes no pueden a su vez configurar la hora del
   servidor o utilizarse ellos mismos como nuevos servidores de hora
   basta con anadir lo siguiente en lugar de lo anterior:

 restrict 192.168.1.0 mask 255.255.255.0 notrust nomodify notrap

   donde 192.168.1.0 es la direccion IP de nuestra red y
   255.255.255.0 es la mascara de red.

   /etc/ntp.conf puede contener varias opciones de tipo restrict.
   Para mas detalles consulte la seccion Soporte de Control de Acceso
   de ntp.conf(5).

     --------------------------------------------------------------

  29.12.4. Ejecucion del servidor de NTP

   Para asegurarnos de que el servidor de NTP se ejecuta en tiempo de
   arranque se debe anadir la linea xntpd_enable="YES" al fichero
   /etc/rc.conf. Si deseamos pasar opciones adicionales a ntpd(8) se
   puede modificar la variable xntpd_flags del fichero /etc/rc.conf.

   Para ejecutar el servidor sin reiniciar la maquina ejecute ntpd
   junto con todos aquellos parametros que haya especificado en la
   variable de arranque xntpd_flags del fichero /etc/rc.conf. Por
   ejemplo:

 # ntpd -p /var/run/ntpd.pid

     Nota: Bajo FreeBSD 5.X se han renombrado algunas opciones del
     fichero /etc/rc.conf. Se debe reemplazar cualquier aparicion
     xntpd por por ntpd.

     --------------------------------------------------------------

  29.12.5. Utilizacion de ntpd junto con una conexion temporal a
  Internet

   El programa ntpd(8) no necesita una conexion permanente a Internet
   para poder funcionar correctamente. No obstante si la conexion a
   Internet se encuentra configurada con marcacion bajo demanda es
   una buena idea impedir que el trafico de NTP lance una marcacion
   automatica o que mantenga la conexion viva. Si se utiliza el PPP
   de entorno de usuario se pueden utilizar las directivas filter
   dentro del fichero /etc/ppp/ppp.conf para evitar esto. Por
   ejemplo:

  set filter dial 0 deny udp src eq 123
  # Evita que el trA!fico NTP inice una llamada saliente
  set filter dial 1 permit 0 0
  set filter alive 0 deny udp src eq 123
  Evita que el trA!ficoNTP entrante mantenga abierta la conexiA^3n
  set filter alive 1 deny udp dst eq 123
  Evita que el trA!fico NTP saliente mantenga abierta la conexiA^3n
  set filter alive 2 permit 0/0 0/0

   Para as detalles consulte la seccion PACKET FILTERING de ppp(8) y
   los ejemplos que se encuentran en /usr/share/examples/ppp/.

     Nota: Algunos proveedores de acceso a Internet bloquean paquetes
     que utilizan numeros de puertos bajos impidiendo que los
     paquetes de vuelta alcancen nuestra maquina.

     --------------------------------------------------------------

  29.12.6. Informacion adicional

   Hay documentacion sobre el servidor NTP en formato HTML en
   /usr/share/doc/ntp/.

     --------------------------------------------------------------

29.13. Traduccion de direcciones de red

   Escrito por Chern Lee.

  29.13.1. Overview

   El daemon de FreeBSD que se encarga de traducir direcciones de
   red, mas conocido como natd(8), es un daemon que acepta paquetes
   IP, modifica la direccion IP fuente de dichos paquetes y los
   reinyecta en el flujo de paquetes IP de salida. natd(8) ejecuta
   este proceso modificando la direccion de origen y el puerto de tal
   forma que cuando se reciben paquetes de contestacion natd(8) es
   capaz de determinar el destino real y reenviar el paquete a dicho
   destino.

   El uso mas comun de NAT es para Compartir la Conexion a Internet.

     --------------------------------------------------------------

  29.13.2. Configuracion

   Debido al pequeno espacio de direccionamiento que se encuentra
   actualmente disponible en IPv4 y debido tambien al gran aumento
   que se esta produciendo en cuanto a numero de usuarios de lineas
   de conexion a Internet de alta velocidad como cable o DSL la gente
   necesita utilizar cada vez mas la salida de Comparticion de
   Conexion a Internet. La caracteristica de poder conectar varios
   computadores a traves de una unica conexion y una unica direccion
   IP hacen de natd(8) una eleccion razonable.

   Cada vez con mas frecuencia un usuario tipico dispone de una
   maquina conectada mediante cable o DSL pero desearia utilizar
   dicha maquina como un " router" de acceso para el resto de los
   ordenadores de su red de area local.

   Para poder hacerlo la maquina (FreeBSD por supuesto) debe
   configurarse para actuar como pasarela. Debe tener al menos dos
   tarjetas de red, una para conectarse a la red de area local y la
   otra para conectarse con el "router" de acceso a Internet. Todas
   las maquinas de la LAN se conectan entre si mediante un "hub" o un
   " switch".

   _______       __________       ________
  |       |     |          |     |        |
  |  Hub  |-----| Client B |-----| Router |----- Internet
  |_______|     |__________|     |________|
      |
  ____|______
 |           |
 | Cliente A |
 |___________|

   Una configuracion como esta se utiliza frecuentemente para
   compartir el acceso a Internet. Una de las maquinas de la LAN esta
   realmente conectada a Internet. El resto de las maquinas acceden a
   Internet utilizando como "pasarela" la maquina inicial.

     --------------------------------------------------------------

  29.13.3. Configuracion

   Se deben anadir las siguientes opciones al fichero de
   configuracion del nucleo:

 options IPFIREWALL
 options IPDIVERT

   Ademas, segun se prefiera, se pueden anadir tambien las
   siguientes:

 options IPFIREWALL_DEFAULT_TO_ACCEPT
 options IPFIREWALL_VERBOSE

   Lo que viene a continuacion se tiene que definir en /etc/rc.conf:

 gateway_enable="YES"
 firewall_enable="YES"
 firewall_type="OPEN"
 natd_enable="YES"
 natd_interface="fxp0"
 natd_flags=""

                         Configura la maquina para que actue como     
   gateway_enable="YES"  "router" o pasarela de red. Se puede         
                         conseguir lo mismo ejecutando sysctl         
                         net.inet.ip.forwarding=1.                    
                         Activa las reglas de cortafuegos que se      
   firewall_enable="YES" encuentran definidas por defecto en          
                         /etc/rc.firewall y que entran en             
                         funcionamiento en el arranque del sistema.   
                         Especifica un conjunto de reglas de          
                         cortafuegos que permite el acceso a todos    
   firewall_type="OPEN"  los paquetes que se reciban. Consulte        
                         /etc/rc.firewall para obtener informacion    
                         sobre el resto de tipos de reglas que se     
                         pueden configurar.                           
                         Indica que interfaz se utiliza para reenviar 
   natd_interface="fxp0" paquetes (la interfaz que se conecta a       
                         Internet).                                   
                         Define cualesquiera otras opciones que se    
   natd_flags=""         deseen proporcionar a natd(8) en tiempo de   
                         arranque.                                    

   Si se definen las opciones anteriores, en el arranque del sistema
   el fichero /etc/rc.conf configurara las variables de tal forma que
   se ejecutaria natd -interface fxp0. Evidentemente esta orden
   tambien se puede ejecutar de forma manual.

     Nota: Tambien es posible utilizar un fichero de configuracion
     para natd(8) en caso de que deseemos especificar muchos
     parametros de arranque. Tendremos que declarar la ubicacion del
     fichero de configuracion mediante la inclusion de lo siguiente
     en /etc/rc.conf:

 natd_flags="-f /etc/natd.conf"

     El fichero /etc/natd.conf debe contener una lista de opciones de
     configuracion una opcion por linea. Por ejemplo, en el caso que
     se comenta en la siguiente seccion se utilizaria un fichero de
     configuracion con la siguiente informacion:

 redirect_port tcp 192.168.0.2:6667 6667
 redirect_port tcp 192.168.0.3:80 80

     Para obtener mas informacion sobre el fichero de configuracion
     se puede consultar la opcion -f que se describe en la pagina del
     manual de natd(8).

   Cada maquina (y cada interfaz) que se encuentra conectada a la LAN
   debe poseer una direccion IP perteneciente al espacio de
   direcciones IP privado tal y como se define en RFC 1918 y debe
   poseer como pasarela por defecto la direccion IP de la interfaz
   interna (la interfaz que se conecta a la LAN) de la maquina que
   ejecuta natd.

   Por ejemplo los clientes A y B se encuentran en la LAN utilizando
   las direcciones IP A192.168.0.2 y 192.168.0.3, respectivamente. La
   maquina que ejecuta natd posee la direccion IP 192.168.0.1 en la
   interfaz que se conecta a la LAN. El "router" por defecto tanto de
   A omo de B se establece al valor 192.168.0.1. La interfaz externa
   de la maquina que ejecuta natd, la interfaz que se conecta con
   Internet, no necesita de ninguna especial en relacion con el tema
   que estamos tratando en esta seccion.

     --------------------------------------------------------------

  29.13.4. Redireccion de puertos

   El incoveniente que se presenta con la utilizacion de natd(8) es
   que los clientes de la LAN no son accesibles desde Internet.
   Dichos clientes pueden establecer conexiones con el exterior pero
   no pueden recibir intentos de conexion desde pueden recibir
   intentos de conexion desde Internet. Esto supone un gran problema
   cuando se quieren ejecutar servicios de acceso global en una o
   varias maquinas de la red LAN. Una forma sencilla de solucionar
   parcialmente este problemma consiste en redirigir determinados
   puertos en el servidor natd hacia determinadas maquinas de la LAN.

   Supongamos por ejemplo que en A se ejecuta un servidor de IRC y
   que en B se ejecuta un servidor web. Para que funcione lo que
   hemos comentado anteriormente se tienen que redirigir las
   conexiones recibidas en los puertos 6667 (IRC) y 80 (web) a dichas
   maquinas, respectivamente.

   Se debe pasar la opcion -redirect_port a natd(8) con los valores
   apropiados. La sintaxis es como sigue:

   -redirect_port proto IPdestino:PUERTOdestino[-PUERTOdestino]
                  [aliasIP:]aliasPUERTO[-aliasPUERTO]
                  [IPremota[:PUERTOremoto[-PUERTOremoto]]]

   Continuando con el ejemplo anterior los valores serian:

     -redirect_port tcp 192.168.0.2:6667 6667
     -redirect_port tcp 192.168.0.3:80 80

   Esto redirigira los puertos tcp adecuados a las maquinas situadas
   en la LAN.

   La opcion -redirect_port se puede utilizar para indicar rangos de
   puertos en vez de puertos individuales. Por ejemplo, tcp
   192.168.0.2:2000-3000 2000-3000 redirige todas las conexiones
   recibidas desde los puertos 2000 al 3000 a los puertos puertos
   2000 a 3000 de la maquina A.

   Estas opciones se pueden utilizar cuando se ejecute directamente
   natd(8) se pueden situar en la variable natd_flags="" en
   /etc/rc.conf y tambien se pueden pasar mediante un archivo de
   configuracion.

   Para obtener mas informacion sobre opciones de configuracion por
   favor consulte natd(8)

     --------------------------------------------------------------

  29.13.5. Redireccion de direcciones

   La redireccion de direcciones es una caracteristica util si se
   dispone de varias direcciones IP pero todas ellas se ubican en una
   unica maquina. Gracias a esto natd(8) puede asignar a cada cliente
   de la red LAN su propia direccion IP externa. natd(8) reescribe
   los paquetes que salen de la red LAN con la direccion IP externa
   adecuada y redirige todo el trafico recibido de vuelta al cliente
   en funcion de la direccion IP de destino: esto se conoce como NAT
   estatico. Por ejemplo las direcciones IP 128.1.1.1, 128.1.1.2 y
   128.1.1.3 pertenecen al " router" natd. 128.1.1.1 se puede
   utilizar como la direccion IP externa del natd, mientras que
   128.1.1.2 y 128.1.1.3 se redirigen a los clientes A y B,
   respectivamente.

   La sintaxis de la opcion -redirect_address es la siguiente:

 -redirect_address IPlocal IPpublica

   IPlocal   La direccion IP interna del cliente de la LAN.           
   IPpublica La direccion IP externa que se corresponde con un        
             determinado cliente de la LAN.                           

   En nuestro ejemplo esta opcion se especificaria de la siguiente
   forma:

 -redirect_address 192.168.0.2 128.1.1.2
 -redirect_address 192.168.0.3 128.1.1.3

   De forma semejante a la opcion -redirect_port estos argumentos se
   pueden especificar directamente sobre la variable natd_flags=""
   del fichero /etc/rc.conf o tambien se pueden pasar via archivo de
   configuracion de natd. Si se utiliza redireccion de direcciones ya
   no es necesario utilizar redireccion de puertos ya que todos los
   paquetes que se reciben en una determinada direccion IP son
   redirigidos a la maquina especificada.

   Las direcciones IP externas de la maquina que ejecuta natd se
   deben activar y deben formar parte de un alias configurado sobre
   la interfaz externa que se conecta a Internet. Consulte rc.conf(5)
   para aprender a hacerlo.

     --------------------------------------------------------------

29.14. El "Superservidor" inetd

   Escrito por Chern Lee.

  29.14.1. Resumen

   inetd(8) se conoce como el "Super Servidor de Internet" debido a
   que gestiona las conexiones de varios daemones. Los daemones son
   programas que proporcionan servicios de red. inetd actua como un
   servidor de servidor de gestion de otros daemones. Cuando inetd(8)
   recibe una conexion se determina que daemon deberia responder a
   dicha conexion, se lanza un proceso que ejecuta dicho daemon y se
   le entrega el " socket". La ejecucion de una unica instancia de
   inetd reduce la carga del sistema en comparacion con lo que
   significaria ejecutar cada uno de los daemones que gestiona de
   forma individual.

   inetd se utiliza principalmente para lanzar procesos que albergan
   a otros daemones pero inetd tambien se utiliza para gestionar
   determinados protocolos triviales como chargen, auth y daytime.

   Esta seccion trata la configuracion basica de inetd a traves de
   sus opciones de linea de ordenes y utilizando su fichero de
   configuracion, denominado /etc/inetd.conf.

     --------------------------------------------------------------

  29.14.2. Configuraciones

   inetd se inicializa a traves del fichero /etc/rc.conf en tiempo de
   arranque. La opcion inetd_enable posee el valor NO por defecto,
   pero a menudo la aplicacion sysinstall la activa cuando se utiliza
   la configuracion de perfil de seguridad medio. Estableciendo

 inetd_enable="YES"

   o

 inetd_enable="NO"

   dentro de /etc/rc.conf se puede activar o desactivar la la
   ejecucion de inetd en el arranque del sistema.

   Se pueden ademas aplicar distintas opciones de linea de ordenes
   mediante la opcion inetd_flags.

     --------------------------------------------------------------

  29.14.3. Opciones de linea de ordenes

   sinopsis de inetd:

   inetd [-d] [-l] [-w] [-W] [-c maximo] [-C tasa] [-a direccion |
   nombre_de_host] [-p nombre_de_fichero] [-R tasa] [fichero de
   configuracion ]

   -d

           Activa la depuracion.

   -l

           Activa el "logging" de las conexiones efectuadas con
           ecute.

   -w

           Activa el recubrimiento de TCP para servicios externos
           (activado por defecto).

   -W

           Activa el recubrimiento de TCP para los servicios
           internos, ejecutados directamente por el daemon inetd
           (activado por defecto).

   -c maximo

           Especifica el maximo numero de invocaciones simultaneas de
           cada servicio; el valor por defecto es ilimitado. Se puede
           sobreescribir para cada servicio utilizando la opcion
           max-child.

   -C tasa

           Especifica el maximo numero de veces que se puede llamar a
           un servicio desde un direccion IP determinada por minuto;
           el valor por defecto es ilimitado. Se puede redefinir para
           cada servicio utilizando la opcion
           max-connections-per-ip-per-minute.

   -R tasa

           Especifica el maximo numero de veces que se puede invocar
           un servicio en un minuto; el valor por defecto es 256. Un
           valor de 0 permite un numero ilimitado de llamadas.

   -a

           Especifica una direccion IP a la cual se asocia y sobre la
           cual se queda esperando recibir conexiones. Puede
           declararse tambien un nombre de maquina, en cuyo caso se
           utilizara la direccion (o direcciones si hay mas de una)
           IPv4 o IPv6 que esten tras dicho nombre. Normalmente se
           usa un nombre de maquina cuando inetd se ejecuta dentro de
           un jail(8), en cuyo caso el nombre de maquina se
           corresponde con el entorno jail(8).

           Cuando se desea asociarse tanto a direcciones IPv4 como a
           direcciones IPv6 y se utiliza un nombre de maquina se
           necesita una entrada para cada protocolo (IPv4 o IPv6)
           para cada servicio que se active a traves de
           /etc/inetd.conf. Por ejemplo un servicio basado en TCP
           necesitaria dos entradas, una utilizando tcp4 para el
           protocolo IPv4 y otra con tcp6 para las conexiones a
           traves del procolo de red IPv6.

   -p

           Especifica un fichero alternativo en el cual se guarda el
           ID del proceso.

   Estas opciones se pueden declarar dentro de las variables
   inetd_flags del fichero /etc/rc.conf. Por defecto inetd_flags
   tiene el valor -wW, lo que activa el recubrimiento de TCP para los
   servicios internos y externos de inetd. Los usuarios inexpertos no
   suelen introducir estos parametros y por ello ni siquiera
   necesitan especificarse dentro de /etc/rc.conf.

     Nota: Un servicio externo es un daemon que se ejecuta fuera de
     inetd y que se lanza cuando se recibe un intento de conexion. Un
     servicio interno es un servicio que inetd puede servir
     directamente sin necesidad de lanzar nuevos procesos.

     --------------------------------------------------------------

  29.14.4. inetd.conf

   La configuracion de inetd se realiza a traves del ficherode
   configuracion /etc/inetd.conf.

   Cuando se realiza una modificacion en el fichero /etc/inetd.conf
   se debe obligar a inetd a releer dicho fichero de configuracion,
   lo cual se realiza enviando una senal "HANGUP" al proceso inetd
   como se muestra a continuacion:

   Ejemplo 29-4. Envio de una senal HANGUP a inetd

 # kill -HUP `cat /var/run/inetd.pid`

   Cada linea del fichero de configuracion especifica un daemon
   individual. Los comentarios se preceden por el caracter "#". El
   formato del fichero de configuracion /etc/inetd.conf es el
   siguiente:

 service-name
 socket-type
 protocol
 {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]
 user[:group][/login-class]
 server-program
 server-program-arguments

   A continuacion se muestra una entrada de ejemplo para el daemon
   ftpd para IPv4:

 ftp     stream  tcp     nowait  root    /usr/libexec/ftpd       ftpd -l

   service-name

           Este es el nombre del servicio que proporciona un
           determinado daemon. Se debe corresponder con el nombre del
           nombre de servicio que se declara en el fichero
           /etc/services. Este fichero determina sobre que puerto
           debe ponerse a escuchar inetd. Si se crea un nuevo
           servicio se debe especificar primero en /etc/services.

   socket-type

           Puede ser stream, dgram, raw o seqpacket. stream se debe
           utilizar obligatoriamente para daemones orientados a
           conexion (daemones TCP) mientras que dgram se utiliza en
           daemones basados en el protocolo de transporte UDP.

   protocol

           Uno de los siguientes:

           +---------------------------------------------+
           | Protocolo |           Explicacion           |
           |-----------+---------------------------------|
           | tcp, tcp4 | TCP IPv4                        |
           |-----------+---------------------------------|
           | udp, udp4 | UDP IPv4                        |
           |-----------+---------------------------------|
           | tcp6      | TCP IPv6                        |
           |-----------+---------------------------------|
           | udp6      | UDP IPv6                        |
           |-----------+---------------------------------|
           | tcp46     | TCP IPv4 e IPv6 al mismo tiempo |
           |-----------+---------------------------------|
           | udp46     | UDP IPv4 e IPv6 al mismo tiempo |
           +---------------------------------------------+

   {wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]

           wait|nowait indica si el daemon puede gestionar su propio
           "socket" o no. Los " sockets" de tipo dgram deben utilizar
           obigatoriamente la opcion wait mientras que los daemones
           basados en "sockets" de tipo "stream", los cuales se
           implementan normalmente mediante hilos, deberia utilizar
           la opcion nowait. La opcion wait normalmente entrega
           varios " sockets" a un unico daemon, mientras que la
           opcion nowait lanza un daemon "hijo" por cada nuevo "
           socket".

           El numero maximo de daemones " hijo" que puede lanzar
           inetd se puede especificar mediante la opcion max-child.
           Si se necesita por ejemplo un limite de diez instancias
           para un daemon en particular se puede especificar el valor
           10 justo despues de la opcion nowait.

           Ademas de max-child se puede activar otra opcion para
           limitar en numero maximo de conexiones que se aceptan
           desde un determinado lugar mediante la opcion
           max-connections-per-ip-per-minute. Esta opcion hace justo
           lo que su nombre indica. Un valor de, por ejemplo, diez en
           esta opcion limitaria cualquier maquina remota a un maximo
           de diez intentos de conexion por minuto. Esto resulta util
           para prevenir un consumo incontrolado de recursos y
           ataques de Denegacion de Servicio ("Denial of Service" o
           DoS) sobre nuestra maquina.

           Cuando se especifica este campo las opciones wait o nowait
           son obligatorias max-child y
           max-connections-per-ip-per-minute son opcionales.

           Un daemon de tipo "stream" sin la opcion max-child y sin
           la opcion max-connections-per-ip-per-minute simplemente
           especificaria la opcion nowait.

           El mismo daemon con el limite maximo de diez daemones
           "hijos" seria: nowait/10.

           La misma configuracion con un limite de veinte conexiones
           por direccion IP por minuto y un maximo total de diez
           daemones "hijos" seria: nowait/10/20.

           Todas estas opciones son utilizadas por el daemon fingerd
           que se muestra a continuacion a modo de ejemplo:

 finger stream  tcp     nowait/3/10 nobody /usr/libexec/fingerd fingerd -s

   user

           Este es el nombre de usuario con el que deberia ejecutarse
           un determinado daemon. Normalmente los daemones se suelen
           ejectar con permisos de root. Por motivos de seguridad,
           resulta bastante comun encontrarse con algunos servidores
           que se ejecutan bajo el usuario daemon o incluso por el
           usuario menos privilegiado de todos que es el usuario
           nobody.

   server-program

           La ruta completa de la localizacion del daemon que se
           quiere ejecutar cuando se recibe un intento de conexion.
           Si el daemon es un servicio proporcionado por el propio
           inetd se debe utilizar la opcion internal en su lugar.

   server-program-arguments

           Esto funciona en conjuncion con server-program, ya que
           especifica los argumentos, comenzando por argv[0], que se
           pasan al daemon cuando se le invoca. Si la linea de
           ordenes es mydaemon -d, midaemon -d deberia ser el valor
           de la opcion server-program-arguments. Si el daemon es un
           servicio interno se debe utilizar la utilizar la opcion
           internal en lugar de la que estamos comentando.

     --------------------------------------------------------------

  29.14.5. Seguridad

   Dependiendo del perfil de seguridad establecido cuando se instalo
   el sistema FreeBSD varios daemones de inetd pueden estar
   desactivados o activados. Si no se necesita un daemon determinado,
   no lo active. Especifique un "#" al comienzo de la linea del
   daemon que quiere desactivar y envie una senal hangup a inetd. No
   se aconseja ejecutar algunos daemones determinados (un caso tipico
   es fingerd) porque pueden proporcionar informacion valiosa para un
   atacante.

   Algunos daemones no presentan ninguna caracteristica de seguridad
   y poseen grandes o incluso no poseen tiempos de expiracion para
   los intentos de conexion. Esto permite que un atacante sature los
   recursos de nuestra maquina realizando intentos de conexion a una
   tasa relativamente baja contra uno de estos ingenuos daemones.
   Pueder ser una buena idea protegerse de esto utilizando las
   opciones max-connections-per-ip-per-minute y max-child para este
   tipo de daemones.

   El recubrimiento de TCP esta activado por defecto tal y como ya se
   ha comentado anteriormente. Consulte la pagina del manual de
   hosts_access(5) para obtener mas informacion sobre como aplicar
   restricciones relacionadas con TCP a los daemones invocados por
   inetd.

     --------------------------------------------------------------

  29.14.6. Varios

   daytime, time, echo, discard, chargen y auth son servicios que
   inetd proporciona de forma interna y propia.

   El servicio auth proporciona servicios de identificacion a traves
   de la red (ident, identd) y se puede configurar hasta en cierto
   grado.

   Consulte la pagina del manual de inetd(8) si quiere conocer todos
   los detalles.

     --------------------------------------------------------------

29.15. Linea IP paralela (PLIP)

   PLIP nos permite configurar TCP/IP a traves del puerto paralelo.
   Es util para conectar maquinas que no poseen tarjetas de red, o
   para instalar FreeBSD en ciertos viejos modelos de portatiles. En
   esta seccion se explica lo siguiente:

     * Construccion de un cable paralelo (laplink).

     * Conexion de dos computadores utilizando PLIP.

     --------------------------------------------------------------

  29.15.1. Construccion de un cable paralelo

   Se puede comprar un cable paralelo en cualquier tienda de
   componentes informaticos. No obstante si no es posible comprarlo o
   simplemente queremos saber como hacerlo nosotros mismos, en la
   siguiente tabla mostramos como hacer un cable de impresora
   paralelo.

   Tabla 29-1. Cableado de una conexion de cable paralelo para redes

   +------------------------------------------------------+
   | Nombre-A | Extremo-A | Extremo-B | Descr. | Post/Bit |
   |----------+-----------+-----------+--------+----------|
   | DATA0    | 2         | 15        | Data   | 0/0x01   |
   | -ERROR   | 15        | 2         |        | 1/0x08   |
   |----------+-----------+-----------+--------+----------|
   | DATA1    | 3         | 13        | Data   | 0/0x02   |
   | +SLCT    | 13        | 3         |        | 1/0x10   |
   |----------+-----------+-----------+--------+----------|
   | DATA2    | 4         | 12        | Data   | 0/0x04   |
   | +PE      | 12        | 4         |        | 1/0x20   |
   |----------+-----------+-----------+--------+----------|
   | DATA3    | 5         | 10        | Strobe | 0/0x08   |
   | -ACK     | 10        | 5         |        | 1/0x40   |
   |----------+-----------+-----------+--------+----------|
   | DATA4    | 6         | 11        | Data   | 0/0x10   |
   | BUSY     | 11        | 6         |        | 1/0x80   |
   |----------+-----------+-----------+--------+----------|
   | GND      | 18-25     | 18-25     | GND    | -        |
   +------------------------------------------------------+

     --------------------------------------------------------------

  29.15.2. Configuracion de PLIP

   En primer lugar debemos tener en nuesras manos un cable "
   laplink". A continuacion se debe comprobar que ambos sistemas
   poseen nucleos con soporte para el controlador lpt(4):

 # grep lp /var/run/dmesg.boot
 lpt0: <Printer> on ppbus0
 lpt0: Interrupt-driven port

   El puerto paralelo debe ser un puerto controlado por alguna "
   irq". En FreeBSD 4.X se deberia tener un linea como la siguiente
   en el fichero de configuracion del kernel:

 device ppc0 at isa? irq 7

   En FreeBSD 5.X el fichero /boot/device.hints debe contener las
   siguientes lineas:

 hint.ppc.0.at="isa"
 hint.ppc.0.irq="7"

   A continuacion se debe comprobar que el fichero de configuracion
   del nucleo posee una linea con device plip o tambien puede
   comprobar si se ha cargado el modulo del nucleo plip.ko. Tanto en
   un caso como en el otro, cuando se ejecute ifconfig(8) deberia
   aparecer el interfaz de red paralelo. En FreeBSD 4.X se muestra
   algo parecido a lo siguiente:

 # ifconfig lp0
 lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500

   y en FreeBSD 5.X:

 # ifconfig plip0
 plip0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500

     Nota: El nombre del dispositivo utilizado para la interfaz
     paralela es distinto en FreeBSD 4.X (lpX) y en FreeBSD 5.X
     (plipX).

   Enchufe el cable "laplink" en los interfaces de ambos
   computadores.

   Configure los parametros de la interfaz de red en ambas maquinas
   como root. Por ejemplo, si queremos conectar la maquina host1
   ejecutando FreeBSD 4.X con la maquina host2 que ejecuta
   FreeBSD 5.X:

                  host1 <-----> host2
 Direccion IP 10.0.0.1      10.0.0.2

   Configure la interfaz de host1 asi:

 # ifconfig lp0 10.0.0.1 10.0.0.2

   Configure la interfaz de host2 por medio de:

 # ifconfig plip0 10.0.0.2 10.0.0.1

   Tras esto deberia disponerse de una conexion totalmente funcional.
   Por favor, consulte lp(4) y lpt(4) si quiere saber mas.

   Ademas se debe anadir ambas maquinas al fichero /etc/hosts:

 127.0.0.1               localhost.mi.dominio localhost
 10.0.0.1                host1.mi.dominio host1
 10.0.0.2                host2.mi.dominio

   Para comprobar que efectivamente la conexion funciona se puede
   probar a hacer un ping desde cada maquina. Por ejemplo en la
   maquina host1:

 # ifconfig lp0
 lp0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1500
         inet 10.0.0.1 --> 10.0.0.2 netmask 0xff000000
 # netstat -r
 Routing tables

 Internet:
 Destination        Gateway          Flags     Refs     Use      Netif Expire
 host2              host1              UH          0       0       lp0
 # ping -c 4 host2
 PING host2 (10.0.0.2): 56 data bytes
 64 bytes from 10.0.0.2: icmp_seq=0 ttl=255 time=2.774 ms
 64 bytes from 10.0.0.2: icmp_seq=1 ttl=255 time=2.530 ms
 64 bytes from 10.0.0.2: icmp_seq=2 ttl=255 time=2.556 ms
 64 bytes from 10.0.0.2: icmp_seq=3 ttl=255 time=2.714 ms

 --- host2 ping statistics ---
 4 packets transmitted, 4 packets received, 0% packet loss
 round-trip min/avg/max/stddev = 2.530/2.643/2.774/0.103 ms

     --------------------------------------------------------------

29.16. IPv6

   Texto original de Aaron Kaplan. Reestructurado y ampliado por Tom
   Rhodes.

   IPv6 (tambien conocido como IPng o "IP de nueva generacion") es la
   nueva version del conocido protocolo de red IP, tambien llamado
   IPv4. Como sucede con el resto de los sistemas *BSD FreeBSD
   proporciona una implementacion de referencia que desarrolla el
   proyecto japones KAME. FreeBSD dispone de todo lo necesario para
   experimentar con el nuevo protocolo de red. Esta seccion se centra
   en conseguir configurar y ejecutar correctamente el protocolo
   IPv6.

   Al comienzo de los anos 90 la gente comenzo a preocuparse por el
   rapido consumo del espacio de direcciones de IPv4. Dada la
   expansion actual de Internet existen dos preocupaciones
   principales:

     * Agotamiento de las direcciones disponibles. Actualmente no se
       trata del principal problema debido al uso generalizado del
       del espacio de direccionamiento privado (10.0.0.0/8,
       192.168.0.0/24, etc.) junto con NAT.

     * El numero de entradas de las tablas de rutas comenzaba a ser
       imposible de manejar. Esto todavia es un problema prioritario.

   IPv6 trata de resolver estos problemas y algunos mas de la
   siguiente forma:

     * IPv6 posee un espacio de direccionamiento de 128 bits. En
       otras palabras, en teoria existen
       340,282,366,920,938,463,463,374,607,431,768,211,456
       direcciones disponibles. Esto significa que existen
       aproximadamente 6.67 * 10^27 direcciones IPv6 por metro
       cuadrado disponibles para todo el planeta Tierra.

     * Los "routers" solo almacenan direcciones de red agregadas asi
       que se reduce el numero de entradas para cada tabla de rutas a
       un promedio de 8192.

   Existen ademas muchas otras caracterisiticas interesantes que IPv6
   proporciona, como:

     * Autoconfiguracion de direcciones (RFC2462)

     * Direcciones anycast ("una-de-varias")

     * Soporte de direcciones multicast predefinido

     * IPsec (Seguridad en IP)

     * Estructura de la cabecera simplificada

     * IP movil

     * Mecanismos de traduccion de IPv6 a IPv4 (y viceversa)

   Si quiere saber mas sobre IPv6 le recomendamos que consulte:

     * Resumen de IPv6 en playground.sun.com

     * KAME.net

     * 6bone.net

     --------------------------------------------------------------

  29.16.1. Conceptos basicos sobre las direcciones IPv6

   Existen varios tipos distintos de direcciones IPv6: Unicast,
   Anycast y Multicast.

   Las direcciones unicast son direcciones bien conocidas. Un paquete
   que se envia a una direccion unicast deberin llega a la interfaz
   identificada por dicha direccion.

   Las direcciones anycast son sintacticamente indistinguibles de las
   direcciones unicast pero sirven para identificar a un conjunto de
   interfaces. Un paquete destinado a una direccion anycast llega a
   la interfaz "mas cercana" (en terminos de metrica de "routers").
   Las direcciones anycast solo se pueden utilizar en "routers".

   Las direcciones multicast identifican un grupo de interfaces. Un
   paquete destinado a una direccion multicast llega a todos los los
   interfaces que se encuentran agrupados bajo dicha direccion.

     Nota: Las direcciones IPv4 de tipo broadcast (normalmente
     xxx.xxx.xxx.255) se expresan en IPv6 mediante direcciones
     multicast.

   Tabla 29-2. Direcciones IPv6 reservadas

   +----------------------------------------------------------------+
   |                  | Longitud |              |                   |
   |  Direccion IPv6  |   del    | Descripcion  |       Notas       |
   |                  | Prefijo  |              |                   |
   |                  |  (Bits)  |              |                   |
   |------------------+----------+--------------+-------------------|
   | ::               | 128 bits | sin          | como 0.0.0.0 en   |
   |                  |          | especificar  | Pv4               |
   |------------------+----------+--------------+-------------------|
   |                  |          | direccion de | como las          |
   | ::1              | 128 bits | bucle local  | 127.0.0.1 en IPv4 |
   |                  |          | (loopback)   |                   |
   |------------------+----------+--------------+-------------------|
   |                  |          |              | Los 32 bits mas   |
   |                  |          | direcciones  | bajos contienen   |
   |                  |          | IPv6         | una direccion     |
   | ::00:xx:xx:xx:xx | 96 bits  | compatibles  | IPv4. Tambien se  |
   |                  |          | con IPv4     | denominan         |
   |                  |          |              | direcciones       |
   |                  |          |              | "empotradas."     |
   |------------------+----------+--------------+-------------------|
   |                  |          |              | Los 32 bits mas   |
   |                  |          |              | bajos contienen   |
   |                  |          | direcciones  | una direccion     |
   | ::ff:xx:xx:xx:xx | 96 bits  | IPv6         | IPv4. Se usan     |
   |                  |          | mapeadas a   | para representar  |
   |                  |          | IPv4         | direcciones IPv4  |
   |                  |          |              | mediante          |
   |                  |          |              | direcciones IPv6. |
   |------------------+----------+--------------+-------------------|
   |                  |          | direcciones  | equivalentes a la |
   | fe80:: - feb::   | 10 bits  | link-local   | direccion de      |
   |                  |          |              | loopback de IPv4  |
   |------------------+----------+--------------+-------------------|
   |                  |          | direcciones  | Equivalentes al   |
   | fec0:: - fef::   | 10 bits  | site-local   | direccionamiento  |
   |                  |          |              | privado de IPv4   |
   |------------------+----------+--------------+-------------------|
   | ff::             | 8 bits   | multicast    |                   |
   |------------------+----------+--------------+-------------------|
   |                  |          |              | Todas las         |
   |                  |          |              | direcciones IPv6  |
   |                  |          | direcciones  | globales se       |
   | 001 (base 2)     | 3 bits   | unicast      | asignan a partir  |
   |                  |          | globales     | de este espacio.  |
   |                  |          |              | Los primeros tres |
   |                  |          |              | bits siempre son  |
   |                  |          |              | "001".            |
   +----------------------------------------------------------------+

     --------------------------------------------------------------

  29.16.2. Lectura de las direcciones IPv6

   La forma canonica que se utiliza para representar direcciones IPv6
   es: x:x:x:x:x:x:x:x, donde cada "x" se considera un valor
   hexadecimal de 16 Bit. Por ejemplo
   FEBC:A574:382B:23C1:AA49:4592:4EFE:9982

   A menudo una direccion posee alguna subcadena de varios ceros
   consecutivos de forma que se puede abreviar dicha cadena (solo una
   vez, para evitar ambiguedades) mediante "::". Tambien se pueden
   omitir los ceros a la ceros a la izquierda dentro de un valor "x".
   Por ejemplo fe80::1 se corresponde con la forma canonica
   fe80:0000:0000:0000:0000:0000:0000:0001.

   Una tercera forma de escribir direciones IPv6 es utilizando la ya
   tradicional notacion decimal de IPv4 pero solamente para los 32
   bits mas bajos de la direccion IPv6. Por ejemplo 2002::10.0.0.1 se
   corresponderia con la representation hexadecimal canonica
   2002:0000:0000:0000:0000:0000:0a00:0001 la cual es equivalente
   tambien a escribir 2002::a00:1.

   A estas alturas el lector deberia ser capaz de comprender lo
   siguiente:

 # ifconfig

 rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
          inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255
          inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1
          ether 00:00:21:03:08:e1
          media: Ethernet autoselect (100baseTX )
          status: active

   fe80::200:21ff:fe03:8e1%rl0 es una direccion link-local
   autoconfigurada. Se construye a partir de la direccion MAC de la
   tarjeta de red.

   Si quiere saber mas sobre la estructura de las direcciones IPv6
   puede consultar RFC3513.

     --------------------------------------------------------------

  29.16.3. Establecimiento de conectividad

   Actualmente existen cuatro formas distintas de conectarse con
   otras maquinas y redes IPv6:

     * Unirse a la red experimental denominada 6bone

     * Obtener una red IPv6 a traves de nuestro proveedor de acceso a
       Internet. Consulte a su proveedor de servicios para para mas
       informacion.

     * Encapsulacion de IPv6 sobre IPv4 (RFC3068)

     * Utilizacion del "port" net/freenet6 si se dispone de una de
       una conexion de marcacion por modem.

   Vamos a explicar como conectarse al 6bone ya que parece ser la
   forma mas utilizada en la actualidad.

   En primer lugar se recomienda consultar el sitio web de 6bone para
   saber cual es la conexion del 6bone (fisicamente) mas proxima. Se
   debe escribir a la persona responsable de ese nodo y con un poco
   de suerte dicha persona respondera con con un conjunto de
   instrucciones y pasos a seguir para establecer la la conexion con
   ellos y a traves de ellos con el resto de los nodos IPv6 que
   forman parte del 6bone. Normalmente esta conexion se establece
   usando tuneles GRE (gif).

   Veamos un ejemplo tipico de configuracion de un de un tunel
   gif(4):

 # ifconfig gif0 create
 # ifconfig gif0
 gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
 # ifconfig gif0 tunnel MI_DIRECCIOn_IPV4  SU_DIRECCIOn_IPV4
 # ifconfig gif0 inet6 alias DIRECCIOn_DE-SALIDA_IPv6_DEL_TUNEL_ASIGNADO

   Sustituya las palabras en mayusculas por la informacion recibida
   del nodo 6bone al que nos queremos conectar.

   La orden anterior establece el tunel. Compruebe que el tunel
   funciona correctamente mediante ping(8). Haga un ping6(8) a
   ff02::1%gif0. Deberiamos recibir recibir "dos" respuestas.

     Nota: Para que el lector no se quede pensando en el significado
     significado de la direccion ff02:1%gif0 le podemos decir que se
     trata de de una direccion IPv6 multicast de tipo link-local.
     %gif0 no forma parte del protocolo IPv6 como tal sino que se
     trata de un detalle de implementacion relacionado con las
     direcciones link-local y se anade para especificar la interfaz
     de salida que se debe utilizar para enviar los paquetes de
     ping6(8). Como estamos haciendo ping a una direccion multicast a
     la que se unen todos los interfaces pertenecientes al mismo
     enlace deberia responder al ping tanto nuestro propio interfaz
     como el interfaz remoto.

   A continuacion se configura la ruta por defecto hacia nuestro
   enlace 6bone; observe que es muy semejante a lo que hay que hacer
   en IPv4:

 # route add -inet6 default -interface gif0
 # ping6 -n MI_UPLINK

 # traceroute6 www.jp.FreeBSD.org
 (3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max, 12 byte packets
      1  atnet-meta6  14.147 ms  15.499 ms  24.319 ms
      2  6bone-gw2-ATNET-NT.ipv6.tilab.com  103.408 ms  95.072 ms *
      3  3ffe:1831:0:ffff::4  138.645 ms  134.437 ms  144.257 ms
      4  3ffe:1810:0:6:290:27ff:fe79:7677  282.975 ms  278.666 ms  292.811 ms
      5  3ffe:1800:0:ff00::4  400.131 ms  396.324 ms  394.769 ms
      6  3ffe:1800:0:3:290:27ff:fe14:cdee  394.712 ms  397.19 ms  394.102 ms

   Esta captura de pantalla variara dependiendo de la localizacion de
   la maquina. Tras seguir estos pasos deberiamos poder alcanzar el
   sitio IPv6 de www.kame.net y ver la tortuga bailarina, que es una
   imagen animada que solo se muestra cuando se accede al servidor
   web utilizando el protocolo IPv6 (para ellos se encesita utilizar
   un navegador web que soporte IPv6, IPv6, por ejemplo www/mozilla o
   Konqueror, que forma parte de x11/kdebase3, o tambien con
   www/epiphany.

     --------------------------------------------------------------

  29.16.4. DNS en el mundo IPv6

   Existen dos tipos de registros de DNS para IPv6. No obstante el
   IETF ha declarado los registros A6 y CNAME como registros para uso
   experimental. Los registros de tipo AAAA son los unicos estandar a
   dia de hoy.

   La utilizacion de registros de tipo AAAA es muy sencilla. Se
   asocia el nombre de la maquina con la direccion IPv6 de la
   siguiente forma:

 NOMBREDEMIMAQUINA AAAA   MIDIRECCIONIPv6

   De igual forma que en IPv4 se utilizan los registros de tipo A. En
   caso de no poder administrar su propia zona de DNS se puede pedir
   esta configuracion a su proveedor de servicios. Las versiones
   actuales de bind (versiones 8.3 y 9) y el "port" dns/djbdns (con
   el parche de IPv6 correspondiente) soportan los registros de tipo
   AAAA.

     --------------------------------------------------------------

29.17. ATM en FreeBSD 5.X

   Escrito por Harti Brandt.

  29.17.1. Configuracion de IP clasico sobre ATM (PVCs)

   IP clasico sobre ATM (CLIP) es el metodo mas sencillo de utilizar
   ATM con IP. Se puede utilizar con conexiones conmutadas (SVC) y
   con conexiones permanentes (PVCs). En esta seccion se describe
   como configurar una red basada en PVCs.

     --------------------------------------------------------------

    29.17.1.1. Configuraciones en red mallada completa

   El primer metodo para configurar CLIP con PVCs consiste en
   conectar unas maquinas con otras mediante circuitos PVC dedicados.
   Aunque la configuracion parece sencilla llega a resultar imposible
   de manejar cuando se posee un numero grande de maquinas. El
   ejemplo que se muestra a continuacion supone que nuestra red posee
   cuatro maquinas y que cada una se conecta a la red ATM mediante
   una tarjeta de red ATM. El primer paso consiste en planificar las
   direcciones IP y las conexiones ATM que se van a configurar en las
   maquinas.

   Maquina Direccion IP  
   hostA   192.168.173.1 
   hostB   192.168.173.2 
   hostC   192.168.173.3 
   hostD   192.168.173.4 

   Para construir una red completamente mallada necesitamos una
   conexion ATM entre cada par de maquinas:

     Maquinas    Pareja VPI.VCI 
   hostA - hostB 0.100          
   hostA - hostC 0.101          
   hostA - hostD 0.102          
   hostB - hostC 0.103          
   hostB - hostD 0.104          
   hostC - hostD 0.105          

   Los valores VPI y VCI en cada extremo de la conexion pueden ser
   diferentes pero por simplicidad suponemos que son iguales. A
   continuacion necesitamos configurar las interfaces ATM en cada
   maquina:

 hostA# ifconfig hatm0 192.168.173.1 up
 hostB# ifconfig hatm0 192.168.173.2 up
 hostC# ifconfig hatm0 192.168.173.3 up
 hostD# ifconfig hatm0 192.168.173.4 up

   Suponiendo que la interfaz ATM es hatm0 en todas las maquinas.
   Ahora necesitamos configurar los PVCs en las maquinas (suponemos
   que ya se han configurado de forma correcta en el "switch" ATM,
   para lo cual puede ser necesario consultar el manual del
   "switch").

 hostA# atmconfig natm add 192.168.173.2 hatm0 0 100 llc/snap ubr
 hostA# atmconfig natm add 192.168.173.3 hatm0 0 101 llc/snap ubr
 hostA# atmconfig natm add 192.168.173.4 hatm0 0 102 llc/snap ubr

 hostB# atmconfig natm add 192.168.173.1 hatm0 0 100 llc/snap ubr
 hostB# atmconfig natm add 192.168.173.3 hatm0 0 103 llc/snap ubr
 hostB# atmconfig natm add 192.168.173.4 hatm0 0 104 llc/snap ubr

 hostC# atmconfig natm add 192.168.173.1 hatm0 0 101 llc/snap ubr
 hostC# atmconfig natm add 192.168.173.2 hatm0 0 103 llc/snap ubr
 hostC# atmconfig natm add 192.168.173.4 hatm0 0 105 llc/snap ubr

 hostD# atmconfig natm add 192.168.173.1 hatm0 0 102 llc/snap ubr
 hostD# atmconfig natm add 192.168.173.2 hatm0 0 104 llc/snap ubr
 hostD# atmconfig natm add 192.168.173.3 hatm0 0 105 llc/snap ubr

   Por supuesto que se pueden utilizar otras especificaciones de
   trafico siempre y cuando las tarjetas de red las soporten. En este
   caso la especificacion del tipo de trafico se completa con los
   parametros del trafico. Puede acceder a la ayuda de atmconfig(8)
   asi:

 # atmconfig help natm add

   y por supuesto en la pagina de manual de atmconfig(8).

   Se puede crear la misma configuracion utilizando el fichero
   /etc/rc.conf. Para la maquina hostA seria algo asi:

 network_interfaces="lo0 hatm0"
 ifconfig_hatm0="inet 192.168.173.1 up"
 natm_static_routes="hostB hostC hostD"
 route_hostB="192.168.173.2 hatm0 0 100 llc/snap ubr"
 route_hostC="192.168.173.3 hatm0 0 101 llc/snap ubr"
 route_hostD="192.168.173.4 hatm0 0 102 llc/snap ubr"

   El estado de todas las rutas CLIP se puede obtener en todo momento
   con:

 hostA# atmconfig natm show

                              V. Apendices

   Tabla de contenidos

   30. Como obtener FreeBSD

   31. Bibliografia

   A. Recursos en Internet

   32. PGP keys

   33. Actualizacion de FreeBSD

     --------------------------------------------------------------

                   Capitulo 30. Como obtener FreeBSD

   Como obtener FreeBSD

     --------------------------------------------------------------

30.1. Servidores FTP

    

     --------------------------------------------------------------

30.2. Uso de CVSup

    

     --------------------------------------------------------------

  30.2.1. Instalacion

    

     --------------------------------------------------------------

  30.2.2. Servidores

    

     --------------------------------------------------------------

    30.2.2.1. El fichero refuse

    

     --------------------------------------------------------------

                       Capitulo 31. Bibliografia

   Aunque las paginas del manual proveen la referencia definitiva
   para partes individuales del sistema operativo FreeBSD, son
   notorias por no ilustrar como poner todas las piezas juntas para
   hacer que todo el sistema operativo funcione facilmente. Debido a
   esto, no hay sustituto para un buen libro de administracion de
   sistemas UNIX y un buen manual de usuario.

     --------------------------------------------------------------

31.1. Libros y revistas especificas sobre FreeBSD

   Libros y revistas internacionales:

     * Usando FreeBSD (en Chino).

     * FreeBSD for PC 98'ers (en japones), publicado por SHUWA System
       Co, LTD. ISBN 4-87966-468-5 C3055 P2900E.

     * FreeBSD (en japones), publicado por CUTT. ISBN 4-906391-22-2
       C3055 P2400E.

     * Introduccion completa a FreeBSD (en japones), publicado por
       Shoeisha Co., Ltd. ISBN 4-88135-473-6 P3600E.

     * Kit personal del principiante UNIX FreeBSD (en japones),
       publicado por ASCII. ISBN 4-7561-1733-3 P3000E.

     * Manual FreeBSD (traduccion del japones), publicado por ASCII.
       ISBN 4-7561-1580-2 P3800E.

     * FreeBSD mit Methode (en aleman), publicado por Computer und
       Literatur Verlag/Vertrieb Hanser, 1998. ISBN 3-932311-31-0.

     * Manual de instalacion y utilizacion de FreeBSD (en japones),
       publicado por Mainichi Communications Inc..

   Libros y revistas en ingles:

     * The Complete FreeBSD, publicado por Walnut Creek CDROM.

     --------------------------------------------------------------

31.2. Guias 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

     * 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 ha escrito un Curso de introduccion a
       UNIX disponible en linea en formato HTML y postscript.

     * Jpman Project, Japan FreeBSD Users Group. FreeBSD User's
       Reference Manual (traduccion japonesa). Mainichi
       Communications Inc., 1998. ISBN4-8399-0088-4 P3800E.

     --------------------------------------------------------------

31.3. Guias 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, AEleen. 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. FreeBSD System
       Administrator's Manual (traduccion japonesa). Mainichi
       Communications Inc., 1998. ISBN4-8399-0109-0 P3300E.

     --------------------------------------------------------------

31.4. Guias 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. ISBN 0-13-326224-3

     * Kernighan, Brian and Dennis M. Ritchie. The C Programming
       Language.. PTR Prentice Hall, 1988. ISBN 0-13-110362-9

     * Lehey, Greg. Porting UNIX Software. 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

     * Stevens, W. Richard. Advanced Programming in the UNIX
       Environment. Reading, Mass. : Addison-Wesley, 1992 ISBN
       0-201-56317-7

     * Stevens, W. Richard. UNIX Network Programming. 2nd Ed, PTR
       Prentice Hall, 1998. ISBN 0-13-490012-X

     * Wells, Bill. ``Writing Serial Drivers for UNIX''. Dr. Dobb's
       Journal. 19(15), December 1994. pp68-71, 97-99.

     --------------------------------------------------------------

31.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 and Implementation of the
       4.3BSD UNIX Operating System. Reading, Mass. : Addison-Wesley,
       1989. ISBN 0-201-06196-1

     * Leffler, Samuel J., Marshall Kirk McKusick, The Design and
       Implementation of the 4.3BSD UNIX Operating System: Answer
       Book. Reading, Mass. : Addison-Wesley, 1991. ISBN
       0-201-54629-9

     * McKusick, Marshall Kirk, Keith Bostic, Michael J Karels, and
       John Quarterman. The Design and Implementation of the 4.4BSD
       Operating System. Reading, Mass. : Addison-Wesley, 1996. ISBN
       0-201-54979-4

     * Stevens, W. Richard. TCP/IP Illustrated, Volume 1: The
       Protocols. Reading, Mass. : Addison-Wesley, 1996. ISBN
       0-201-63346-9

     * Schimmel, Curt. Unix Systems for Modern Architectures.
       Reading, Mass. : Addison-Wesley, 1994. ISBN 0-201-63338-8

     * Stevens, W. Richard. TCP/IP Illustrated, Volume 3: TCP for
       Transactions, HTTP, NNTP and the UNIX Domain Protocols.
       Reading, Mass. : Addison-Wesley, 1996. ISBN 0-201-63495-3

     * Vahalia, Uresh. UNIX Internals -- The New Frontiers. Prentice
       Hall, 1996. ISBN 0-13-101908-2

     * Wright, Gary R. and W. Richard Stevens. TCP/IP Illustrated,
       Volume 2: The Implementation. Reading, Mass. : Addison-Wesley,
       1995. ISBN 0-201-63354-X

     --------------------------------------------------------------

31.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. ISBN 1-56592-148-8

     * Garfinkel, Simson. PGP Pretty Good Privacy O'Reilly &
       Associates, Inc., 1995. ISBN 1-56592-098-8

     --------------------------------------------------------------

31.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 corporacion Intel publica documentacion sobre sus CPUs,
       chipsets y estandares en su web para desarrolladores,
       normalmente en archivos con formato PDF.

     * Shanley, Tom. 80486 System Architecture. 3rd ed. Reading,
       Mass. : Addison-Wesley, 1995. ISBN 0-201-40994-1

     * Shanley, Tom. ISA System Architecture. 3rd ed. Reading, Mass.
       : Addison-Wesley, 1995. ISBN 0-201-40996-8

     * Shanley, Tom. PCI System Architecture. 3rd ed. Reading, Mass.
       : Addison-Wesley, 1995. ISBN 0-201-40993-3

     * Van Gilluwe, Frank. The Undocumented PC. Reading, Mass:
       Addison-Wesley Pub. Co., 1994. ISBN 0-201-62277-7

     --------------------------------------------------------------

31.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 known as the Jargon File

     * Salus, Peter H. A quarter century of UNIX. Addison-Wesley
       Publishing Company, Inc., 1994. ISBN 0-201-54777-5

     * Simon Garfinkel, Daniel Weise, Steven Strassmann. The
       UNIX-HATERS Handbook. IDG Books Worldwide, Inc., 1994. ISBN
       1-56884-203-1

     * Don Libes, Sandy Ressler Life with UNIX -- special edition.
       Prentice-Hall, Inc., 1989. ISBN 0-13-536657-7

     * The BSD family tree. 1997.
       ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/misc/bsd-family-tree
       o local on a FreeBSD-current machine.

     * The BSD Release Announcements collection. 1997.
       http://www.de.FreeBSD.org/de/ftp/releases/

     * Networked Computer Science Technical Reports Library.
       http://www.ncstrl.org/

     * Antiguas releases BSD procedentes del Computer Systems
       Research Group (CSRG). http://www.mckusick.com/csrg/: El
       paquete de 4 CDs cubre todas las versiones de BSD desde la
       1BSD hasta la 4.4BSD y 4.4BSD-Lite2 (pero no la 2.11BSD,
       desafortunadamente). El ultimo disco contiene el codigo fuente
       final y los archivos SCCS.

     --------------------------------------------------------------

31.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

     --------------------------------------------------------------

                    Apendice A. Recursos en Internet

   La velocidad del desarrollo de FreeBSD hace imposible el uso de
   medios impresos como forma de seguir los ultimos desarrollos. Los
   recursos electronicos son la mejor, y con frecuencia la unica,
   manera de estar informados de los ultimos avances. Dado que
   FreeBSD es sacado adelante mediante el trabajo de voluntarios la
   propia comunidad de usuarios suele ejercer las funciones de lo que
   seria un "departamento de soporte tecnico", siendo el correo
   electronico y USENET la manera mas efectiva de contactar con esa
   comunidad.

   Las formas de contacto con la comunidad de usuarios de FreeBSD
   estan detalladas a continuacion. Si usted sabe de algun otro medio
   que no figure aqui envielo por favor a lista de correo del
   proyecto de documentacion de FreeBSDpara que pueda ser incluida.

     --------------------------------------------------------------

A.1. Listas de correo

   Aunque la practica totalidad de los desarrolladores de FreeBSD
   leen USENET no podemos garantizar de modo rotundo que recibiremos
   sus dudas rapidamente (o siquiera que las recibamos) si usted las
   envia a uno de los grupos de comp.unix.bsd.freebsd.*. Enviando sus
   dudas a la lista de correo apropiada cumplira dos objetivos,
   llegar a los desarrolladores y a una audiencia especifica, lo que
   le asegurara la mejor (o al menos la mas rapida) respuesta.

   Las normas de las diversas listas estan al principio de este
   documento. Por favor, lea las normas antes de suscribirse o enviar
   correo a ninguna lista. Muchos suscriptores de nuestras listas
   reciben varios cientos de mensajes relacionados con FreeBSD cada
   dia y estableciendo las normas de uso de las listas intentamos
   mantener alto el interes de los mensajes que en ella circulan.
   Bajarlo haria fallar a las listas de correo como un medio de
   comunicacion efectivo para el proyecto.

   Todas las listas de correo son archivadas y se pueden hacer
   busquedas en ellas desde el servidor WWW de FreeBSD usando este
   enlace. El archivo ofrece la posibilidad de usar palabras clave,
   lo que lo convierte en una excelente manera de buscar respuestas a
   preguntas frecuentes y deberia ser consultado antes de enviar
   ninguna duda.

     --------------------------------------------------------------

  A.1.1. Indice de listas

   Listas generales:Las siguientes son listas generales de
   suscripcion libre (y muy recomendable):

         Lista                          Proposito                     
   cvs-all           Cambios realizados en el arbol de codigo de      
                     FreeBSD                                          
   freebsd-advocacy  Proselitismo de FreeBSD                          
   freebsd-announce  Sucesos importantes e hitos del proyecto         
   freebsd-arch      Debates de arquitectura y disenos                
   freebsd-bugs      Informes de errores                              
   freebsd-chat      Temas no tecnicos relacionados con la comunidad  
                     FreeBSD.                                         
   freebsd-config    Desarrollo de herramientas de instalacion y      
                     configuracion de FreeBSD                         
   freebsd-current   Debates acerca del uso de FreeBSD-current        
   freebsd-isp       Consultas de Proveedores de Servicios de         
                     Internet que usan FreeBSD                        
   freebsd-jobs      Oportunidades de trabajo y consultoria bajo      
                     FreeBSD                                          
   freebsd-newbies   Actividades y discusiones de nuevos usuarios de  
                     FreeBSD                                          
   freebsd-policy    Decisiones estrategicas del Core Team de         
                     FreeBSD. Bajo volumen y solo lectura             
   freebsd-questions Preguntas de usuarios y soporte tecnico          
   freebsd-stable    Debates acerca del uso de FreeBSD-stable         
   freebsd-test      Un sitio al que mandar sus mensajes de prueba en 
                     lugar de a una de las demas listas               

   Listas Tecnicas: Las siguientes listas son para debates tecnicos.
   Deberia leer cuidadosamente las normas de cada lista antes de
   suscribirse o enviar correos, dado que hay normas estrictas en
   cuanto a su uso y contenidos.

               Lista                           Proposito              
   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 auditoria del codigo    
                                  fuente                              
   freebsd-binup                  Diseno y desarrollo del sistema de  
                                  actualizacion binaria               
   freebsd-cluster                Uso de FreeBSD en entornos cluster  
   freebsd-database               Debates sobre uso de bases de datos 
                                  y su desarrollo bajo FreeBSD        
   freebsd-doc                    Creacion de documentacion sobre     
                                  FreeBSD                             
   freebsd-emulation              Emulacion de otros sistemas como    
                                  Linux/DOS/Windows                   
   freebsd-firewire               Debates tecnicos sobre Firewire     
                                  (iLink, IEEE 1394)                  
   freebsd-fs                     Sistemas de ficheros                
   freebsd-hackers                Debates tecnicos generales          
   freebsd-hardware               Debates generales sobre harware y   
                                  su uso en FreeBSD                   
   freebsd-i18n                   Internacionalizacion de FreeBSD     
   freebsd-ia64                   Porte de FreeBSD a los proximos     
                                  sistemas IA64 de Intel              
   freebsd-ipfw                   Debates tecnicos sobre el rediseno  
                                  del codigo del cortafuegos IP       
   freebsd-isdn                   Desarrolladores de RDSI             
   freebsd-java                   Desarrolladores de Java y personas  
                                  portando los JDK a FreeBSD          
   freebsd-libh                   La segunda generacion del sistema   
                                  de instalacion y paquetes           
   freebsd-mobile                 Debates sobre equipos portatiles    
   freebsd-mozilla                Porte de mozilla a FreeBSD          
   freebsd-multimedia             Aplicaciones multimedia             
   freebsd-new-bus                Debates tecnicos sobre la           
                                  arquitectura de bus                 
   freebsd-net                    Debates sobre el codigo fuente de   
                                  Redes y TCP/IP                      
   freebsd-platforms              Especifica sobre plataformas de     
                                  arquitectura no Intel               
   freebsd-ports                  Debates sobre la coleccion de ports 
   freebsd-ppc                    Porte de FreeBSD a PowerPC          
                                  Debates sobre Control de Calidad,   
   freebsd-qa                     generalmente al salir una nueva     
                                  release                             
   freebsd-realtime               Desarrollo de extensiones en tiempo 
                                  real en FreeBSD                     
   freebsd-scsi                   El subsistema SCSI                  
   freebsd-security               Temas de seguridad                  
   freebsd-security-notifications Avisos de seguridad                 
   freebsd-small                  Uso de FreeBSD en aplicaciones      
                                  embebidas                           
   freebsd-smp                    Debates sobre diseno de             
                                  Multiproceso [A]Simetrico           
   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 mas
   especializada (e interesada)y probablemente no son de interes para
   el publico en general. Es una buena idea tener una presencia
   estable en las listas tecnicas antes de suscribirse a alguna de
   las limitadas, de modo que se pueda entender la etiqueta de la
   comunicacion que en ellas se usa.

          Lista                          Proposito                    
   freebsd-core        FreeBSD Core Team                              
   freebsd-hubs        Mantenimiento de mirrors (mantenimiento de     
                       infraestructuras)                              
   freebsd-install     Desarrollo de la Instalacion                   
   freebsd-user-groups Coordinacion de grupos de usuarios             
   freebsd-www         Mantenimiento de www.FreeBSD.org               

   Listas Compendio:La mayoria de las listas citadas son accesibles
   como compendio. Los nuevos mensajes enviados a la lista son
   guardados y enviados como un unico correo cuando el archivo llega
   a un tamano 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   
   freebsd-database-digest  
   freebsd-hackers-digest   
   freebsd-ia64-digest      
   freebsd-isdn-digest      
   freebsd-java-digest      
   freebsd-questions-digest 
   freebsd-security-digest  
   freebsd-sparc-digest     
   freebsd-stable-digest    
   freebsd-test-digest      

   Listas CVS:Las siguientes listas son para gente interesada en
   llevar un seguimiento de los mensajes en el registro para conocer
   los cambios hechos en las diferentes areas del arbol de codigo
   fuente. Son listas de solo lectura y no se debe enviar correo a
   ellas.

    Lista  Area de codigo    Descripcion de area de codigo (codigo    
                                            fuente)                   
   cvs-all /usr/src       Todos los cambios al arbol de codigo        
                          (superconjunto)                             

     --------------------------------------------------------------

  A.1.2. Como suscribirse

   Todas las listas de correo estan en FreeBSD.org, de manera que
   para enviar correo a la lista "nombredelista" simplemente hay que
   escribir a <nombredelista@FreeBSD.org>. Desde ahi sera
   redistribuido a los miembros de la lista de correo a lo largo y
   ancho del mundo.

   Para suscribirse a una lista envie un correo a
   <majordomo@FreeBSD.org> incluyendo

 subscribe <listname> [<optional address>]

   en el cuerpo del mensaje. Por ejemplo, para suscribirse a
   freebsd-announce usted haria esto:

 % mail majordomo@FreeBSD.org
 subscribe freebsd-announce
 ^D

   Si quisiera suscribirse bajo otro nombre o enviar una peticion de
   suscripcion para una lista de correo local (un sistema muy
   eficiente si dispone de varias personas interesadas que tengan
   cuentas de correo en un mismo servidor !esto nos facilita mucho el
   trabajo!) esto es lo que debe hacer:

 % mail majordomo@FreeBSD.org
 subscribe freebsd-announce local-announce@ejemplo.com
 ^D

   Por ultimo, tambien es posible desuscribirse de una lista, obtener
   una lista de los suscriptores de una lista u obtener una lista de
   las listas de correo disponibles enviando otro tipo de mensajes de
   control a majordomo. Para obtener una lista completa de las
   ordenes disponibles haga esto:

 % mail majordomo@FreeBSD.org
 help
 ^D

   De nuevo quisieramos pedirle que procure mantener los debates de
   las listas tecnicas dentro de temas tecnicos. Si lo unico que
   usted quiere es recibir avisos importantes le sugerimos que se
   suscriba a freebsd-announce, que esta pensada para tener un
   trafico muy bajo.

     --------------------------------------------------------------

  A.1.3. Normas de las listas

   Todas las listas de correo de FreeBSD tienen ciertas normas
   elementales que han de ser respetadas por cualquiera que las use.
   Quien no se atenga a ellas recibira hasta dos (2) advertencias
   escritas del Postmaster de FreeBSD <postmaster@FreeBSD.org>,
   despues de las cuales, a la tercera falta, el suscriptor sera
   borrado de todas las listas de correo de FreeBSD y filtrado para
   evitar futuros envios. Lamentamos que esas normas y medidas sean
   necesarias, pero la Internet de hoy es, segun parece, un entorno
   bastante conflictivo, y mucha gente no se da cuenta de cuan
   fragiles son algunos de sus mecanismos.

   Normas a respetar:

     * El tema de cualquier envio debe atenerse al fin basico de la
       lista a la que se escribe, esto es, si la lista es sobre temas
       de debate tecnico sus envios deberian versar sobre temas
       tecnicos. Enviar mensajes irrelevantes o insultos solo sirve
       para deteriorar el valor de la lista de correo para sus
       miembros y no sera tolerado. Para discusiones libres sin un
       tema en particular esta la lista de correo freebsd-chat
       <freebsd-chat@FreeBSD.org>, que es libremente accesible y
       hecha para este proposito.

     * No se deberia enviar el mismo mensaje a mas de dos listas, y
       solamente a 2 cuando exista una necesidad manifiesta de
       escribir a ambas listas. Hay una gran cantidad de personas
       suscritas a mas de una lista y excepto para las mezclas mas
       esotericas (digamos "-stable & -scsi") no hay razon para
       enviar un mensaje a mas de una lista al mismo tiempo. Si le
       envian un mensaje en el que aparecen multiples listas de
       correo en la linea "Cc" de la cabecera, dicha linea debe ser
       recortada antes de que envie una respuesta. Usted es el
       responsable de sus propios envios cruzados, independientemente
       de quien fuese el remitente original.

     * No estan admitidos los ataques personales ni la blasfemia
       (dentro del contexto o como argumento) y eso incluye tanto a
       usuarios como a desarrolladores. Violaciones graves de la
       netiqueta, como reenviar o extractar mensajes privados sin
       permiso ni visos de tenerlo, esta mal visto, aunque no
       prohibido especificamente. Sin embargo, hay pocos casos en los
       que algo asi encaje en la tematica de una lista, por lo cual
       lo mas probable es recibir una advertencia (o ser expulsado)
       tan solo a causa de ello.

     * El anuncio de productos o servicios no relacionados con
       FreeBSD estan estrictamente prohibidas y conllevaran la
       inmediata expulsion de la lista si queda demostrado que el
       autor esta practicando el "spam" o envio de correo no
       solicitado.

   Normas de las listas individuales:

   FREEBSD-AFS

           Sistema de Ficheros Andrew

           Esta lista es para debates sobre el porte y uso de AFS, de
           CMU/Transarc

   FREEBSD-ANNOUNCE

           Sucesos importantes / hitos

           Esta es la lista de correo para gente interesada en
           recibir exclusivamente avisos de sucesos importantes
           dentro de FreeBSD. Esto incluye anuncios sobre SNAPSHOTS y
           otras versiones. Puede incluir tambien peticiones de
           voluntarios, etc. Es una lista de bajo volumen y
           estrictamente moderada.

   FREEBSD-ARCH

           Debates sobre arquitectura y diseno

           Esta lista es para debates sobre la arquitectura de
           FreeBSD. Los mensajes deberian mantenerse dentro del
           ambito tecnico para el que fue creada la lista. Serian
           ejemplos de temas aptos para esta lista:

              * Como reorganizar el sistema de construccion ("build")
                para poder tener varios procesos de construccion
                personalizados funcionando simultaneamente.

              * Que se necesita arreglar en el VFS para que funcionen
                las capas de Heidemann.

              * Como cambiar el dispositivo de control de interfaces
                para que sea posible utilizar los mismos
                controladores directamente en la mayoria de los buses
                y arquitecturas.

              * Como escribir un controlador de red.

   FREEBSD-AUDIT

           Proyecto de auditoria del codigo fuente

           Esta es la lista de correo del proyecto de auditoria del
           codigo fuente de FreeBSD. Aunque en principio fue puesta
           en marcha para cambios motivados por la seguridad su
           ambito fue ampliado a la revision de cualquier cambio en
           el codigo.

           En esta lista circula una gran cantidad de parches y
           probablemente no sea de interes para el tipico usuario de
           FreeBSD. Las discusiones de seguridad que no esten
           relacionadas con una parte especifica del codigo deben
           tener lugar en freebsd-security. Por otra parte se ruega a
           todos los desarrolladores que envien sus parches a esta
           lista para su revision, especialmente si atanen a una
           parte del sistema donde un error pudiera afectar
           seriamente a la integridad del sistema.

   FREEBSD-BINUP

           Proyecto de Actualizacion Binaria de FreeBSD

           Esta lista existe para facilitar el debate sobre el
           sistema de actualizacion binaria o binup. Caracteristicas
           de diseno, detalles de implementacion, parches, informes
           de error, informes de estado, peticiones de
           caracteristicas, "commit logs" y en general todo lo
           relacionado con binup es bienvenido.

   FREEBSD-BUGS

           Informe de errores

           Esta es la lista de correo para informar de errores en
           FreeBSD. Siempre que sea posible los errores deberian ser
           enviados mediante send-pr(1) o el interfaz WEB

   FREEBSD-CHAT

           Temas no tecnicos relacionados con la comunidad FreeBSD

           Esta lista contiene todos los mensajes sobre informacion
           no tecnica y social, contenidos que no tienen cabida en
           las demas listas. Eso incluye discusiones sobre si Julio
           Iglesias parece una gargola, sobre si escribir o no en
           mayusculas, quien esta bebiendo demasiado cafe, donde se
           elabora la mejor cerveza, quien esta fabricando cerveza en
           su sotano y asi sucesivamente. Pueden hacerse anuncios
           sobre actos importantes (como proximas fiestas, congresos,
           bodas, nacimientos, nuevos trabajos, etc.), pero las
           respuestas deben ser dirigidas a esta misma lista.

   FREEBSD-CORE

           FreeBSD Core Team

           Esta es la lista de correo interna para uso de los
           miembros del Core Team. Los mensajes pueden ser enviados a
           esta 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

           Esta es la lista de correo para usuarios de
           freebsd-current. Esto incluye advertencias sobre nuevas
           caracteristicas a ser incluidas en -current que afecten a
           todos los usuarios e instrucciones paso por paso que deben
           ser seguidas para mantener una instalacion -current.
           Cualquier usuario de "current" deberia suscribirse a esta
           lista. Esta es una lista de correo tecnica en la que se
           esperan contenidos estrictamente tecnicos.

   FREEBSD-CURRENT-DIGEST

           Debates sobre el uso de FreeBSD-current

           Este es el compendio de la lista freebsd-current. Consiste
           en que todos los mensajes enviados a freebsd-current son
           empaquetados y enviados periodicamente como un solo
           mensaje. Esta lista es de Solo-Lectura y no deberia
           recibir correo.

   FREEBSD-DOC

           Proyecto de Documentacion

           Esta lista de correo esta destinada a discusiones
           relacionadas con cuestiones y proyectos relacionados con
           la creacion de documentacion de FreeBSD. Los miembros de
           esta lista son llamados "El Proyecto de Documentacion de
           FreeBSD". La lista es abierta; !suscribase y contribuya!.

   FREEBSD-FIREWIRE

           Firewire (iLink, IEEE 1394)

           Esta lista de correo es para debates sobre diseno e
           implementacion del subsistema Firewire(tambien conocido
           como IEEE o iLink) en FreeBSD. Los temas incluyen de modo
           especifico los "standards", dispositivos de bus y sus
           protocolos, adaptacion de placas base, tarjetas y chips y
           la arquitectura e implementacion de codigo para soporte
           nativo.

   FREEBSD-FS

           Sistemas de ficheros

           Debates acerca del sistema de ficheros de FreeBSD. Esta es
           una lista de correo tecnica en la que se espera un
           contenido estrictamente tecnico.

   FREEBSD-GNOME

           GNOME

           Debates acerca del Entorno de Escritorio GNOME para
           sistemas de ficheros FreeBSD. Esta es una lista de correo
           tecnica en la que se espera un contenido estrictamente
           tecnico.

   FREEBSD-IPFW

           Cortafuegos IP

           Este es el foro de discusion tecnica dedicado al rediseno
           del codigo del cortafuegos IP de FreeBSD. Esta es una
           lista de correo tecnica en la que se espera un contenido
           exclusivamente tecnico.

   FREEBSD-IA64

           Porte de FreeBSD a IA64

           Esta es una lista de correo tecnica para personas que
           estan trabajando en el porte de FreeBSD a la plataforma
           IA-64 de Intel, para intercambiar problemas y soluciones
           alternativas. Cualquier persona interesada en seguir las
           discusiones tecnicas es bienvenida.

   FREEBSD-ISDN

           Comunicaciones RDSI

           Esta es la lista de correo para quienes participan en el
           desarrollo del soporte RDSI para FreeBSD.

   FREEBSD-JAVA

           Desarrollo Java

           Esta es la lista de correo sobre el desarrollo de
           aplicaciones Java importantes para FreeBSD y el porte y
           mantenimiento de los JDK.

   FREEBSD-HACKERS

           Debates tecnicos

           Este es un foro de debate tecnico relacionado con FreeBSD.
           Esta es la lista de correo tecnica primaria. Es para
           personas que estan trabajando en FreeBSD, solucionando
           problemas o para discutir soluciones alternativas. Las
           personas interesadas en seguir las discusiones tecnicas
           tambien son bienvenidas. Esta es una lista de correo
           tecnica en la cual se espera un contenido estrictamente
           tecnico.

   FREEBSD-HACKERS-DIGEST

           Technical discussions

           Este es el compendio de la lista de correo
           freebsd-hackers. Consiste en que todo el correo enviado a
           freebsd-hackers es empaquetado y enviado en un solo
           mensaje. Esta lista es de Solo Lectura y no se deberia
           enviar correo a ella.

   FREEBSD-HARDWARE

           Discusiones generales sobre hardware y FreeBSD

           Discusiones generales sobre tipos de hardware que funciona
           en FreeBSD, diferentes problemas y sugerencias sobre que
           comprar y que no.

   FREEBSD-HUBS

           Replicas

           Avisos y discusiones para personas que administran sitios
           replica.

   FREEBSD-INSTALL

           Discusiones sobre la instalacion

           Esta lista de correo es para discusiones sobre el
           desarrollo de la instalacion de FreeBSD en proximas
           versiones.

   FREEBSD-ISP

           Cuestiones de Proveedores de Servicios de Internet

           Esta lista de correo es para debates sobre temas
           relevantes para Proveedores de Servicios de Internet (ISP)
           que usan FreeBSD. Es una lista de correo tecnica y en ella
           se esperan contenidos estrictamente tecnicos.

   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 tecnicas de resolucion de
           problemas, busqueda y uso de recursos y peticiones de
           ayuda, como usar las listas de correo y que lista usar,
           charla en general, meter la pata, jactarse, compartir
           ideas, historias, soporte moral (pero no tecnico) e
           implicacion en la comunidad FreeBSD. Usamos
           freebsd-questions para enviar nuestros problemas y
           peticiones de soporte y usamos freebsd-newbies para
           conocer a gente que esta haciendo lo mismo que nosotros
           cuando eramos novatos.

   FREEBSD-PLATFORMS

           Porte a plataformas no Intel

           Cuestiones sobre plataformas diversas, debates generales,
           y propuestas para portes de FreeBSD para plataformas no
           Intel. Es una lista de correo tecnica y en ella se esperan
           contenidos estrictamente tecnicos.

   FREEBSD-POLICY

           Decisiones de funcionamiento interno del Core Team

           Es una lista de solo lectura y bajo volumen destinada a la
           toma de decisiones de funcionamento interno del Core Team
           de FreeBSD.

   FREEBSD-PORTS

           Debates sobre "ports"

           Debates acerca de la "coleccion de ports" (/usr/ports)de
           FreeBSD, propuestas de aplicaciones a portar,
           modificaciones a la infraestructura de ports y
           coordinacion general de esfuerzos. Esta es una lista de
           correo tecnica en la cual se esperan contenidos
           exclusivamente tecnicos.

   FREEBSD-QUESTIONS

           Preguntas de los usuarios

           Esta es la lista de correo para preguntas sobre FreeBSD.
           No deberia enviar preguntas del estilo de "como hacer" a
           las listas tecnicas salvo que el contenido sea claramente
           tecnico.

   FREEBSD-QUESTIONS-DIGEST

           Preguntas de los usuarios

           Este es el compendio de la lista de correo
           freebsd-questions. Consiste en que todos los mensajes
           enviados a freebsd-questions son empaquetados y enviados
           en un unico mensaje.

   FREEBSD-SCSI

           Subsistema SCSI

           Esta es la lista de correo para la gente que esta
           trabajando en el subsistema SCSI de FREEBSD. Esta es una
           lista de correo tecnica en la cual se esperan contenidos
           puramente tecnicos.

   FREEBSD-SECURITY

           Cuestiones de seguridad

           Cuestiones de seguridad informatica (DES, Kerberos,
           problemas de seguridad conocidos y sus soluciones, etc.)
           Esta es una lista de correo tecnica en la que se esperan
           contenidos puramente tecnicos.

   FREEBSD-SECURITY-NOTIFICATIONS

           Avisos de seguridad

           Avisos de problemas de seguridad en FreeBSD y sus
           soluciones. Esta no es una lista de discusion. La lista de
           discusion es freebsd-security.

   FREEBSD-SMALL

           Uso de FreeBSD en aplicaciones embebidas

           En esta lista se debaten temas relacionados con
           instalaciones de FreeBSD inusualmente pequenas y
           embebidas. Esta es una lista de correo tecnica en la cual
           se esperan contenidos estrictamente tecnicos.

   FREEBSD-STABLE

           Debates sobre el uso de FreeBSD-stable

           Esta es la lista de correo para los usuarios de
           freebsd-stable. Incluye avisos sobre nuevas
           caracteristicas a incluir en -stable que afectan a los
           usuarios e instrucciones paso por paso para permanecer
           usando la version -stable. Cualquiera que utilice FreeBSD
           "stable" deberia suscribirse a esta lista. Esta es una
           lista tecnica en la que se esperan contenidos puramente
           tecnicos.

   FREEBSD-STANDARDS

           Cumplimiento de C99 & POSIX

           Este es el foro para debates tecnicos relacionadas con el
           Cumplimiento de las normas C99 y POSIX en FreeBSD.

   FREEBSD-USER-GROUPS

           Lista de coordinacion de de grupos de usuarios

           Esta es la lista de correo de los coordinadores de los
           grupos locales de usuarios para discutir cuestiones entre
           ellos o con personas elegidas del Core Team. Esta lista de
           correo deberia estar limitada a resumenes de reuniones y
           coordinacion de proyectos que atanen a los Grupos de
           Usuarios.

   FREEBSD-VENDORS

           VENDORS

           Debates para la coordinacion entre el Proyecto FreeBSD y
           Distribuidores de software y hardware para FreeBSD.

     --------------------------------------------------------------

A.2. Grupos de noticias de Usenet

   Ademas de los dos grupos de noticias especificos de FreeBSD hay
   muchos otros en los cuales se habla sobre FreeBSD o son de algun
   modo interesantes para usuarios de FreeBSD.Hay un archivo donde
   hacer busquedas donde pueden encontrarse algunos de esos grupos de
   noticias por cortesia de Warren Toomey <wkt@cs.adfa.edu.au>.

     --------------------------------------------------------------

  A.2.1. Grupos de noticias especificos sobre BSD

     * comp.unix.bsd.freebsd.announce

     * comp.unix.bsd.freebsd.misc

     --------------------------------------------------------------

  A.2.2. Otros grupos de noticias interesantes sobre Unix

     * comp.unix

     * comp.unix.questions

     * comp.unix.admin

     * comp.unix.programmer

     * comp.unix.shell

     * comp.unix.user-friendly

     * comp.security.unix

     * comp.sources.unix

     * comp.unix.advocacy

     * comp.unix.misc

     * comp.bugs.4bsd

     * comp.bugs.4bsd.ucb-fixes

     * comp.unix.bsd

     --------------------------------------------------------------

  A.2.3. Sistema X Window

     * comp.windows.x.i386unix

     * comp.windows.x

     * comp.windows.x.apps

     * comp.windows.x.announce

     * comp.windows.x.intrinsics

     * comp.windows.x.motif

     * comp.windows.x.pex

     * comp.emulators.ms-windows.wine

     --------------------------------------------------------------

A.3. Servidores WWW

     * http://www.FreeBSD.org/ -- 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/ -- Canada/1.

     * http://www2.ca.FreeBSD.org/ -- Canada/2.

     * http://www3.ca.FreeBSD.org/ -- Canada/3.

     * http://www.cn.FreeBSD.org/ -- China.

     * http://www.cz.FreeBSD.org/ -- Republica 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.

     * 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/ -- Hungria.

     * http://www.is.FreeBSD.org/ -- Islandia.

     * http://www.ie.FreeBSD.org/ -- Irlanda.

     * http://www.jp.FreeBSD.org/www.FreeBSD.org/ -- Japon.

     * 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/ -- Rumania.

     * 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/ -- Republica Eslovaca.

     * http://www.si.FreeBSD.org/ -- Eslovenia.

     * http://www.es.FreeBSD.org/ -- Espana.

     * http://www.za.FreeBSD.org/ -- Sudafrica/1.

     * http://www2.za.FreeBSD.org/ -- Sudafrica/2.

     * http://www.se.FreeBSD.org/ -- Suecia.

     * http://www.ch.FreeBSD.org/ -- Suiza.

     * http://www.tw.FreeBSD.org/www.freebsd.org/data/ -- Taiwan.

     * http://www.tr.FreeBSD.org/ -- Turquia.

     * 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/Oregon.

     * http://www2.FreeBSD.org/ -- USA/Tejas.

     --------------------------------------------------------------

A.4. Direcciones de correo electronico

   Los siguientes grupos de usuarios de FreeBSD proveen a sus
   miembros de direcciones de correo. Dichos administradores se
   reservan el derecho de retirar el uso de la direccion si se abusa
   de ella de cualquier manera.

+-----------------------------------------------------------------------------------+
|                   | Recursos  |                              |                    |
|      Dominio      |  que se   |      Grupo de Usuarios       |   Administrador    |
|                   |suministran|                              |                    |
|-------------------+-----------+------------------------------+--------------------|
|ukug.uk.FreeBSD.org|Solo       |<freebsd-users@uk.FreeBSD.org>|Lee Johnston        |
|                   |redireccion|                              |<lee@uk.FreeBSD.org>|
+-----------------------------------------------------------------------------------+

     --------------------------------------------------------------

A.5. Cuentas shell

   Los siguientes grupos de usuarios facilitan cuentas shell a gente
   que apoya activamente el proyecto FreeBSD. Sus respectivos
   administradores se reservan el derecho de cancelar la cuenta y si
   se abusa de ella de algun modo.

+------------------------------------------------------------------------+
|                       |              | Servicios  |                    |
|       Servidor        |Tipo de acceso|   que se   |   Administrador    |
|                       |              |  ofrecen   |                    |
|-----------------------+--------------+------------+--------------------|
|                       |              |CVS de solo |                    |
|                       |              |lectura,    |                    |
|storm.uk.FreeBSD.org   |SSH only      |espacio web |Brian Somers        |
|                       |              |personal,   |<brian@FreeBSD.org> |
|                       |              |correo      |                    |
|                       |              |electronico |                    |
|-----------------------+--------------+------------+--------------------|
|                       |              |Correo      |                    |
|dogma.freebsd-uk.eu.org|Telnet/FTP/SSH|electronico,|Lee Johnston        |
|                       |              |espacio web,|<lee@uk.FreeBSD.org>|
|                       |              |FTP Anonimo |                    |
+------------------------------------------------------------------------+

     --------------------------------------------------------------

                         Capitulo 32. PGP keys

   En caso de que necesites verificar una firma o enviar un mail
   encriptado a alguno de los responsables o miembros del core team,
   aqui tienes una serie de claves para uso.

     --------------------------------------------------------------

32.1. Responsables

  32.1.1. Responsable de Seguridad de FreeBSD
  <security-officer@freebsd.org>

 FreeBSD Security Officer <security-officer@freebsd.org>
 Fingerprint = 41 08 4E BB DB 41 60 71  F9 E5 0E 98 73 AF 3F 11

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3i
            
 mQCNAzF7MY4AAAEEAK7qBgPuBejER5HQbQlsOldk3ZVWXlRj54raz3IbuAUrDrQL
 h3g57T9QY++f3Mot2LAf5lDJbsMfWrtwPrPwCCFRYQd6XH778a+l4ju5axyjrt/L
 Ciw9RrOC+WaPv3lIdLuqYge2QRC1LvKACIPNbIcgbnLeRGLovFUuHi5z0oilAAUR
 tDdGcmVlQlNEIFNlY3VyaXR5IE9mZmljZXIgPHNlY3VyaXR5LW9mZmljZXJAZnJl
 ZWJzZC5vcmc+iQCVAwUQMX6yrOJgpPLZnQjrAQHyowQA1Nv2AY8vJIrdp2ttV6RU
 tZBYnI7gTO3sFC2bhIHsCvfVU3JphfqWQ7AnTXcD2yPjGcchUfc/EcL1tSlqW4y7
 PMP4GHZp9vHog1NAsgLC9Y1P/1cOeuhZ0pDpZZ5zxTo6TQcCBjQA6KhiBFP4TJql
 3olFfPBh3B/Tu3dqmEbSWpuJAJUDBRAxez3C9RVb+45ULV0BAak8A/9JIG/jRJaz
 QbKom6wMw852C/Z0qBLJy7KdN30099zMjQYeC9PnlkZ0USjQ4TSpC8UerYv6IfhV
 nNY6gyF2Hx4CbEFlopnfA1c4yxtXKti1kSN6wBy/ki3SmqtfDhPQ4Q31p63cSe5A
 3aoHcjvWuqPLpW4ba2uHVKGP3g7SSt6AOYkAlQMFEDF8mz0ff6kIA1j8vQEBmZcD
 /REaUPDRx6qr1XRQlMs6pfgNKEwnKmcUzQLCvKBnYYGmD5ydPLxCPSFnPcPthaUb
 5zVgMTjfjS2fkEiRrua4duGRgqN4xY7VRAsIQeMSITBOZeBZZf2oa9Ntidr5PumS
 9uQ9bvdfWMpsemk2MaRG9BSoy5Wvy8VxROYYUwpT8Cf2iQCVAwUQMXsyqWtaZ42B
 sqd5AQHKjAQAvolI30Nyu3IyTfNeCb/DvOe9tlOn/o+VUDNJiE/PuBe1s2Y94a/P
 BfcohpKC2kza3NiW6lLTp00OWQsuu0QAPc02vYOyseZWy4y3Phnw60pWzLcFdemT
 0GiYS5Xm1o9nAhPFciybn9j1q8UadIlIq0wbqWgdInBT8YI/l4f5sf6JAJUDBRAx
 ezKXVS4eLnPSiKUBAc5OBACIXTlKqQC3B53qt7bNMV46m81fuw1PhKaJEI033mCD
 ovzyEFFQeOyRXeu25Jg9Bq0Sn37ynISucHSmt2tUD5W0+p1MUGyTqnfqejMUWBzO
 v4Xhp6a8RtDdUMBOTtro16iulGiRrCKxzVgEl4i+9Z0ZiE6BWlg5AetoF5n3mGk1
 lw==
 =ipyA
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

  32.1.2. Warner Losh <imp@FreeBSD.org>

 Warner Losh <imp@village.org>
         aka <imp@freebsd.org>
 Fingerprint = D4 31 FD B9 F7 90 17 E8 37 C5 E7 7F CF A6 C1 B9
 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.2

 mQCNAzDzTiAAAAEEAK8D7KWEbVFUrmlqhUEnAvphNIqHEbqqT8s+c5f5c2uHtlcH
 V4mV2TlUaDSVBN4+/D70oHmZc4IgiQwMPCWRrSezg9z/MaKlWhaslc8YT6Xc1q+o
 EP/fAdKUrq49H0QQbkQk6Ks5wKW6v9AOvdmsS6ZJEcet6d9G4dxynu/2qPVhAAUR
 tCBNLiBXYXJuZXIgTG9zaCA8aW1wQHZpbGxhZ2Uub3JnPokAlQMFEDM/SK1VLh4u
 c9KIpQEBFPsD/1n0YuuUPvD4CismZ9bx9M84y5sxLolgFEfP9Ux196ZSeaPpkA0g
 C9YX/IyIy5VHh3372SDWN5iVSDYPwtCmZziwIV2YxzPtZw0nUu82P/Fn8ynlCSWB
 5povLZmgrWijTJdnUWI0ApVBUTQoiW5MyrNN51H3HLWXGoXMgQFZXKWYiQCVAwUQ
 MzmhkfUVW/uOVC1dAQG3+AP/T1HL/5EYF0ij0yQmNTzt1cLt0b1e3N3zN/wPFFWs
 BfrQ+nsv1zw7cEgxLtktk73wBGM9jUIdJu8phgLtl5a0m9UjBq5oxrJaNJr6UTxN
 a+sFkapTLT1g84UFUO/+8qRB12v+hZr2WeXMYjHAFUT18mp3xwjW9DUV+2fW1Wag
 YDKJAJUDBRAzOYK1s1pi61mfMj0BARBbA/930CHswOF0HIr+4YYUs1ejDnZ2J3zn
 icTZhl9uAfEQq++Xor1x476j67Z9fESxyHltUxCmwxsJ1uOJRwzjyEoMlyFrIN4C
 dE0C8g8BF+sRTt7VLURLERvlBvFrVZueXSnXvmMoWFnqpSpt3EmN6TNaLe8Cm87a
 k6EvQy0dpnkPKokAlQMFEDD9Lorccp7v9qj1YQEBrRUD/3N4cCMWjzsIFp2Vh9y+
 RzUrblyF84tJyA7Rr1p+A7dxf7je3Zx5QMEXosWL1WGnS5vC9YH2WZwv6sCU61gU
 rSy9z8KHlBEHh+Z6fdRMrjd9byPf+n3cktT0NhS23oXB1ZhNZcB2KKhVPlNctMqO
 3gTYx+Nlo6xqjR+J2NnBYU8p =7fQV
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

32.2. Miembros del Core Team

  32.2.1. Satoshi Asami <asami@FreeBSD.org>

 Satoshi Asami <asami@cs.berkeley.edu>
           aka <asami@FreeBSD.ORG>
 Fingerprint = EB 3C 68 9E FB 6C EB 3F  DB 2E 0F 10 8F CE 79 CA

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.2

 mQCNAzPVyoQAAAEEAL7W+kipxB171Z4SVyyL9skaA7hG3eRsSOWk7lfvfUBLtPog
 f3OKwrApoc/jwLf4+Qpdzv5DLEt/6Hd/clskhJ+q1gMNHyZ5ABmUxrTRRNvJMTrb
 3fPU3oZj7sL/MyiFaT1zF8EaMP/iS2ZtcFsbYOqGeA8E/58uk4NA0SoeCNiJAAUR
 tCVTYXRvc2hpIEFzYW1pIDxhc2FtaUBjcy5iZXJrZWxleS5lZHU+iQCVAwUQM/AT
 +EqGN2HYnOMZAQF11QP/eSXb2FuTb1yX5yoo1Im8YnIk1SEgCGbyEbOMMBznVNDy
 5g2TAD0ofLxPxy5Vodjg8rf+lfMVtO5amUH6aNcORXRncE83T10JmeM6JEp0T6jw
 zOHKz8jRzygYLBayGsNIJ4BGxa4LeaGxJpO1ZEvRlNkPH/YEXK5oQmq9/DlrtYOJ
 AEUDBRAz42JT8ng6GBbVvu0BAU8nAYCsJ8PiJpRUGlrz6rxjX8hqM1v3vqFHLcG+
 G52nVMBSy+RZBgzsYIPwI5EZtWAKb22JAJUDBRAz4QBWdbtuOHaj97EBAaQPA/46
 +NLUp+Wubl90JoonoXocwAg88tvAUVSzsxPXj0lvypAiSI2AJKsmn+5PuQ+/IoQy
 lywRsxiQ5GD7C72SZ1yw2WI9DWFeAi+qa4b8n9fcLYrnHpyCY+zxEpu4pam8FJ7H
 JocEUZz5HRoKKOLHErzXDiuTkkm72b1glmCqAQvnB4kAlQMFEDPZ3gyDQNEqHgjY
 iQEBFfUEALu2C0uo+1Z7C5+xshWRYY5xNCzK20O6bANVJ+CO2fih96KhwsMof3lw
 fDso5HJSwgFd8WT/sR+Wwzz6BAE5UtgsQq5GcsdYQuGI1yIlCYUpDp5sgswNm+OA
 bX5a+r4F/ZJqrqT1J56Mer0VVsNfe5nIRsjd/rnFAFVfjcQtaQmjiQCVAwUQM9uV
 mcdm8Q+/vPRJAQELHgP9GqNiMpLQlZig17fDnCJ73P0e5t/hRLFehZDlmEI2TK7j
 Yeqbw078nZgyyuljZ7YsbstRIsWVCxobX5eH1kX+hIxuUqCAkCsWUY4abG89kHJr
 XGQn6X1CX7xbZ+b6b9jLK+bJKFcLSfyqR3M2eCyscSiZYkWKQ5l3FYvbUzkeb6K0
 IVNhdG9zaGkgQXNhbWkgPGFzYW1pQEZyZWVCU0QuT1JHPg==
 =39SC
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

  32.2.2. Jonathan M. Bresler <jmb@FreeBSD.org>

 Jonathan M. Bresler <jmb@FreeBSD.org>
 f16    Fingerprint16 = 31 57 41 56 06 C1 40 13  C5 1C E3 E5 DC 62 0E FB

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: PGPfreeware 5.0i for non-commercial use

 mQCNAzG2GToAAAEEANI6+4SJAAgBpl53XcfEr1M9wZyBqC0tzpie7Zm4vhv3hO8s
 o5BizSbcJheQimQiZAY4OnlrCpPxijMFSaihshs/VMAz1qbisUYAMqwGEO/T4QIB
 nWNo0Q/qOniLMxUrxS1RpeW5vbghErHBKUX9GVhxbiVfbwc4wAHbXdKX5jjdAAUR
 tCVKb25hdGhhbiBNLiBCcmVzbGVyIDxqbWJARnJlZUJTRC5PUkc+iQCVAwUQNbtI
 gAHbXdKX5jjdAQHamQP+OQr10QRknamIPmuHmFYJZ0jU9XPIvTTMuOiUYLcXlTdn
 GyTUuzhbEywgtOldW2V5iA8platXThtqC68NsnN/xQfHA5xmFXVbayNKn8H5stDY
 2s/4+CZ06mmJfqYmONF1RCbUk/M84rVT3Gn2tydsxFh4Pm32lf4WREZWRiLqmw+J
 AJUDBRA0DfF99RVb+45ULV0BAcZ0BACCydiSUG1VR0a5DBcHdtin2iZMPsJUPRqJ
 tWvP6VeI8OFpNWQ4LW6ETAvn35HxV2kCcQMyht1kMD+KEJz7r8Vb94TS7KtZnNvk
 2D1XUx8Locj6xel5c/Lnzlnnp7Bp1XbJj2u/NzCaZQ0eYBdP/k7RLYBYHQQln5x7
 BOuiRJNVU4kAlQMFEDQLcShVLh4uc9KIpQEBJv4D/3mDrD0MM9EYOVuyXik3UGVI
 8quYNA9ErVcLdt10NjYc16VI2HOnYVgPRag3Wt7W8wlXShpokfC/vCNt7f5JgRf8
 h2a1/MjQxtlD+4/Js8k7GLa53oLon6YQYk32IEKexoLPwIRO4L2BHWa3GzHJJSP2
 aTR/Ep90/pLdAOu/oJDUiQCVAwUQMqyL0LNaYutZnzI9AQF25QP9GFXhBrz2tiWz
 2+0gWbpcGNnyZbfsVjF6ojGDdmsjJMyWCGw49XR/vPKYIJY9EYo4t49GIajRkISQ
 NNiIz22fBAjT2uY9YlvnTJ9NJleMfHr4dybo7oEKYMWWijQzGjqf2m8wf9OaaofE
 KwBX6nxcRbKsxm/BVLKczGYl3XtjkcuJAJUDBRA1ol5TZWCprDT5+dUBATzXA/9h
 /ZUuhoRKTWViaistGJfWi26FB/Km5nDQBr/Erw3XksQCMwTLyEugg6dahQ1u9Y5E
 5tKPxbB69eF+7JXVHE/z3zizR6VL3sdRx74TPacPsdhZRjChEQc0htLLYAPkJrFP
 VAzAlSlm7qd+MXf8fJovQs6xPtZJXukQukPNlhqZ94kAPwMFEDSH/kF4tXKgazlt
 bxECfk4AoO+VaFVfguUkWX10pPSSfvPyPKqiAJ4xn8RSIe1ttmnqkkDMhLh00mKj
 lLQuSm9uYXRoYW4gTS4gQnJlc2xlciA8Sm9uYXRoYW4uQnJlc2xlckBVU2kubmV0
 PokAlQMFEDXbdSkB213Sl+Y43QEBV/4D/RLJNTrtAqJ1ATxXWv9g8Cr3/YF0GTmx
 5dIrJOpBup7eSSmiM/BL9Is4YMsoVbXCI/8TqA67TMICvq35PZU4wboQB8DqBAr+
 gQ8578M7Ekw1OAF6JXY6AF2P8k7hMcVBcVOACELPT/NyPNByG5QRDoNmlsokJaWU
 /2ls4QSBZZlb
 =zbCw
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

  32.2.3. Andrey A. Chernov <ache@FreeBSD.org>

 Andrey A. Chernov <ache@FreeBSD.org>
        aka <ache@nagual.pp.ru>
 Key fingerprint = 33 03 9F 48 33 7B 4A 15  63 48 88 0A C4 97 FD 49

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3ia

 mQCNAiqUMGQAAAEEAPGhcD6A2Buey5LYz0sphDLpVgOZc/bb9UHAbaGKUAGXmafs
 Dcb2HnsuYGgX/zrQXuCi/wIGtXcZWB97APtKOhFsZnPinDR5n/dde/mw9FnuhwqD
 m+rKSL1HlN0z/Msa5y7g16760wHhSR6NoBSEG5wQAHIMMq7Q0uJgpPLZnQjrAAUT
 tCVBbmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucHAucnU+iQCVAwUQM2Ez
 u+JgpPLZnQjrAQEyugP8DPnS8ixJ5OeuYgPFQf5sy6l+LrB6hyaS+lgsUPahWjNY
 cnaDmfda/q/BV5d4+y5rlQe/pjnYG7/yQuAR3jhlXz8XDrqlBOnW9AtYjDt5rMfJ
 aGFTGXAPGZ6k6zQZE0/YurT8ia3qjvuZm3Fw4NJrHRx7ETHRvVJDvxA6Ggsvmr20
 JEFuZHJleSBBLiBDaGVybm92IDxhY2hlQEZyZWVCU0Qub3JnPokAlQMFEDR5uVbi
 YKTy2Z0I6wEBLgED/2mn+hw4/3peLx0Sb9LNx//NfCCkVefSf2G9Qwhx6dvwbX7h
 mFca97h7BQN4GubU1Z5Ffs6TeamSBrotBYGmOCwvJ6S9WigF9YHQIQ3B4LEjskAt
 pcjU583y42zM11kkvEuQU2Gde61daIylJyOxsgpjSWpkxq50fgY2kLMfgl/ftCZB
 bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuaWV0enNjaGUubmV0PokAlQMFEDR5svDi
 YKTy2Z0I6wEBOTQD/0OTCAXIjuak363mjERvzSkVsNtIH9hA1l0w6Z95+iH0fHrW
 xXKT0vBZE0y0Em+S3cotLL0bMmVE3F3D3GyxhBVmgzjyx0NYNoiQjYdi+6g/PV30
 Cn4vOO6hBBpSyI6vY6qGNqcsawuRtHNvK/53MpOfKwSlICEBYQimcZhkci+EtCJB
 bmRyZXkgQS4gQ2hlcm5vdiA8YWNoZUBuYWd1YWwucnU+iQCVAwUQMcm5HeJgpPLZ
 nQjrAQHwvQP9GdmAf1gdcuayHEgNkc11macPH11cwWjYjzA2YoecFMGV7iqKK8QY
 rr1MjbGXf8DAG8Ubfm0QbI8Lj8iG3NgqIru0c72UuHGSn/APfGGG0AtPX5UK/k7B
 gI0Ca2po6NA5nrSp8tDsdEz/4gyea84RXl2prtTf5Jj07hflbRstGXK0MkFuZHJl
 eSBBLiBDaGVybm92LCBCbGFjayBNYWdlIDxhY2hlQGFzdHJhbC5tc2suc3U+iQCV
 AwUQMCsAo5/rGryoL8h3AQHq1QQAidyNFqA9hvrmMcjpY7csJVFlGvj574Wj4GPa
 o3pZeuQaMBmsWqaXLYnWU/Aldb6kTz6+nRcQX50zFH0THSPfApwEW7yybSTI5apJ
 mWT3qhKN2vmLNg2yNzhqLTzHLD1lH3i1pfQq8WevrNfjLUco5S/VuekTma/osnzC
 Cw7fQzCJAJUDBRAwKvwoa1pnjYGyp3kBARihBACoXr3qfG65hFCyKJISmjOvaoGr
 anxUIkeDS0yQdTHzhQ+dwB1OhhK15E0Nwr0MKajLMm90n6+Zdb5y/FIjpPriu8dI
 rlHrWZlewa88eEDM+Q/NxT1iYg+HaKDAE171jmLpSpCL0MiJtO0i36L3ekVD7Hv8
 vffOZHPSHirIzJOZTYkAlQMFEDAau6zFLUdtDb+QbQEBQX8D/AxwkYeFaYxZYMFO
 DHIvSk23hAsjCmUA2Uil1FeWAusb+o8xRfPDc7TnosrIifJqbF5+fcHCG5VSTGlh
 Bhd18YWUeabf/h9O2BsQX55yWRuB2x3diJ1xI/VVdG+rxlMCmE4ZR1Tl9x+Mtun9
 KqKVpB39VlkCBYQ3hlgNt/TJUY4riQCVAwUQMBHMmyJRltlmbQBRAQFQkwP/YC3a
 hs3ZMMoriOlt3ZxGNUUPTF7rIER3j+c7mqGG46dEnDB5sUrkzacpoLX5sj1tGR3b
 vz9a4vmk1Av3KFNNvrZZ3/BZFGpq3mCTiAC9zsyNYQ8L0AfGIUO5goCIjqwOTNQI
 AOpNsJ5S+nMAkQB4YmmNlI6GTb3D18zfhPZ6uciJAJUCBRAwD0sl4uW74fteFRkB
 AWsAA/9NYqBRBKbmltQDpyK4+jBAYjkXBJmARFXKJYTlnTgOHMpZqoVyW96xnaa5
 MzxEiu7ZWm5oL10QDIp1krkBP2KcmvfSMMHb5aGCCQc2/P8NlfXAuHtNGzYiI0UA
 Iwi8ih/S1liVfvnqF9uV3d3koE7VsQ9OA4Qo0ZL2ggW+/gEaYIkAlQMFEDAOz6qx
 /IyHe3rl4QEBIvYD/jIr8Xqo/2I5gncghSeFR01n0vELFIvaF4cHofGzyzBpYsfA
 +6pgFI1IM+LUF3kbUkAY/2uSf9U5ECcaMCTWCwVgJVO+oG075SHEM4buhrzutZiM
 1dTyTaepaPpTyRMUUx9ZMMYJs7sbqLId1eDwrJxUPhrBNvf/w2W2sYHSY8cdiQCV
 AwUQMAzqgHcdkq6JcsfBAQGTxwQAtgeLFi2rhSOdllpDXUwz+SS6bEjFTWgRsWFM
 y9QnOcqryw7LyuFmWein4jasjY033JsODfWQPiPVNA3UEnXVg9+n8AvNMPO8JkRv
 Cn1eNg0VaJy9J368uArio93agd2Yf/R5r+QEuPjIssVk8hdcy/luEhSiXWf6bLMV
 HEA0J+OJAJUDBRAwDUi+4mCk8tmdCOsBAatBBACHB+qtW880seRCDZLjl/bT1b14
 5po60U7u6a3PEBkY0NA72tWDQuRPF/Cn/0+VdFNxQUsgkrbwaJWOoi0KQsvlOm3R
 rsxKbn9uvEKLxExyKH3pxp76kvz/lEWwEeKvBK+84Pb1lzpG3W7u2XDfi3VQPTi3
 5SZMAHc6C0Ct/mjNlYkAlQMFEDAMrPD7wj+NsTMUOQEBJckD/ik4WsZzm2qOx9Fw
 erGq7Zwchc+Jq1YeN5PxpzqSf4AG7+7dFIn+oe6X2FcIzgbYY+IfmgJIHEVjDHH5
 +uAXyb6l4iKc89eQawO3t88pfHLJWbTzmnvgz2cMrxt94HRvgkHfvcpGEgbyldq6
 EB33OunazFcfZFRIcXk1sfyLDvYE
 =1ahV
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

  32.2.4. Jordan K. Hubbard <jkh@FreeBSD.org>

 Jordan K. Hubbard <jkh@FreeBSD.org>
 Fingerprint = 3C F2 27 7E 4A 6C 09 0A  4B C9 47 CD 4F 4D 0B 20

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3ia
  
 mQCNAzFjX0IAAAEEAML+nm9/kDNPp43ZUZGjYkm2QLtoC1Wxr8JulZXqk7qmhYcQ
 jvX+fyoriJ6/7ZlnLe2oG5j9tZOnRLPvMaz0g9CpW6Dz3nkXrNPkmOFV9B8D94Mk
 tyFeRJFqnkCuqBj6D+H8FtBwEeeTecSh2tJ0bZZTXnAMhxeOdvUVW/uOVC1dAAUR
 tCNKb3JkYW4gSy4gSHViYmFyZCA8amtoQEZyZWVCU0Qub3JnPokBFQMFEDXCTXQM
 j46yp4IfPQEBwO8IAIN0J09AXBf86dFUTFGcAMrEQqOF5IL+KGorAjzuYxERhKfD
 ZV7jA+sCQqxkWfcVcE20kVyVYqzZIkio9a5zXP6TwA247JkPt54S1PmMDYHNlRIY
 laXlNoji+4q3HP2DfHqXRT2859rYpm/fG/v6pWkos5voPKcZ2OFEp9W+Ap88oqw+
 5rx4VetZNJq1Epmis4INj6XqNqj85+MOOIYE+f445ohDM6B/Mxazd6cHFGGIR+az
 VjZ6lCDMLjzhB5+FqfrDLYuMjqkMTR5z9DL+psUvPlCkYbQ11NEWtEmiIWjUcNJN
 GCxGzv5bXk0XPu3ADwbPkFE2usW1cSM7AQFiwuyJAJUDBRAxe+Q9a1pnjYGyp3kB
 AV7XA/oCSL/Cc2USpQ2ckwkGpyvIkYBPszIcabSNJAzm2hsU9Qa6WOPxD8olDddB
 uJNiW/gznPC4NsQ0N8Zr4IqRX/TTDVf04WhLmd8AN9SOrVv2q0BKgU6fLuk979tJ
 utrewH6PR2qBOjAaR0FJNk4pcYAHeT+e7KaKy96YFvWKIyDvc4kAlQMFEDF8ldof
 f6kIA1j8vQEBDH4D/0Zm0oNlpXrAE1EOFrmp43HURHbij8n0Gra1w9sbfo4PV+/H
 U8ojTdWLy6r0+prH7NODCkgtIQNpqLuqM8PF2pPtUJj9HwTmSqfaT/LMztfPA6PQ
 csyT7xxdXl0+4xTDl1avGSJfYsI8XCAy85cTs+PQwuyzugE/iykJO1Bnj/paiQCV
 AwUQMXvlBvUVW/uOVC1dAQF2fQP/RfYC6RrpFTZHjo2qsUHSRk0vmsYfwG5NHP5y
 oQBMsaQJeSckN4n2JOgR4T75U4vS62aFxgPLJP3lOHkU2Vc7xhAuBvsbGr5RP8c5
 LvPOeUEyz6ZArp1KUHrtcM2iK1FBOmY4dOYphWyWMkDgYExabqlrAq7FKZftpq/C
 BiMRuaw=
 =C/Jw
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

  32.2.5. Poul-Henning Kamp <phk@FreeBSD.org>

 Poul-Henning Kamp <phk@FreeBSD.org>
 Fingerprint = A3 F3 88 28 2F 9B 99 A2  49 F4 E2 FA 5A 78 8B 3E

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3ia

 mQCNAzAdpMIAAAEEALHDgrFUwhZtb7PbXg3upELoDVEUPFRwnmpJH1rRqyROUGcI
 ooVe7u+FQlIs5OsXK8ECs/5Wpe2UrZSzHvjwBYOND5H42YtI5UULZLRCo5bFfTVA
 K9Rpo5icfTsYihrzU2nmnycwFMk+jYXyT/ZDYWDP/BM9iLjj0x9/qQgDWPy9AAUR
 tCNQb3VsLUhlbm5pbmcgS2FtcCA8cGhrQEZyZWVCU0Qub3JnPokAlQMFEDQQ0aZ1
 u244dqP3sQEBu4ID/jXFFeJgs2MdTDNOZM/FbfDhI4qxAbYUsqS3+Ra16yd8Wd/A
 jV+IHJE2NomFWl8UrUjCGinXiwzPgK1OfFJrS9Og1wQLvAl0X84BA8MTP9BQr4w7
 6I/RbksgUSrVCIO8MJwlydjSPocWGBeXlVjbZxXzyuJk7H+TG+zuI5BuBcNIiQCV
 AwUQMwYr2rNaYutZnzI9AQHiIQP/XxtBWFXaBRgVLEhRNpS07YdU+LsZGlLOZehN
 9L4UnJFHQQPNOpMey2gF7Y95aBOw5/1xS5vlQpwmRFCntWsm/gqdzK6rulfr1r5A
 y94LO5TAC6ucNu396Y4vo1TyD1STnRC466KlvmtQtAtFGgXlORWLL9URLzcRFd1h
 D0yXd9aJAJUDBRAxfo19a1pnjYGyp3kBAQqyA/4v64vP3l1F0Sadn6ias761hkz/
 SMdTuLzILmofSCC4o4KWMjiWJHs2Soo41QlZi1+xMHzV32JKiwFlGtPHqL+EHyXy
 Q4H3vmf9/1KF+0XCaMtgI0wWUMziPSTJK8xXbRRmMDK/0F4TnVVaUhnmf+h5K7O6
 XdmejDTa0X/NWcicmIkAlQMFEDF8lef1FVv7jlQtXQEBcnwD/0ro1PpUtlkLmreD
 tsGTkNa7MFLegrYRvDDrHOwPZH152W2jPUncY+eArQJakeHiTDmJNpFagLZglhE0
 bqJyca+UwCXX+6upAclWHEBMg2byiWMMqyPVEEnpUoHM1sIkgdNWlfQAmipRBfYh
 2LyCgWvR8CbtwPYIFvUmGgB3MR87iQCVAwUQMUseXB9/qQgDWPy9AQGPkwP/WEDy
 El2Gkvua9COtMAifot2vTwuvWWpNopIEx0Ivey4aVbRLD90gGCJw8OGDEtqFPcNV
 8aIiy3fYVKXGZZjvCKd7zRfhNmQn0eLDcymq2OX3aPrMc2rRlkT4Jx425ukR1gsO
 qiQAgw91aWhY8dlw/EKzk8ojm52x4VgXaBACMjaJAJUDBRAxOUOg72G56RHVjtUB
 AbL4A/9HOn5Qa0lq9tKI/HkSdc5fGQD/66VdCBAb292RbB7CS/EM07MdbcqRRYIa
 0+0gwQ3OdsWPdCVgH5RIhp/WiC+UPkR1cY8N9Mg2kTwJfZZfNqN+BgWlgRMPN27C
 OhYNl8Q33Nl9CpBLrZWABF44jPeT0EvvTzP/5ZQ7T75EsYKYiYkAlQMFEDDmryQA
 8tkJ67sbQQEBPdsEALCj6v1OBuJLLJTlxmmrkqAZPVzt5QdeO3Eqa2tcPWcU0nqP
 vHYMzZcZ7oFg58NZsWrhSQQDIB5e+K65Q/h6dC7W/aDskZd64jxtEznX2kt0/MOr
 8OdsDis1K2f9KQftrAx81KmVwW4Tqtzl7NWTDXt44fMOtibCwVq8v2DFkTJy
 =JKbP
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

  32.2.6. Rich Murphey <rich@FreeBSD.org>

 Rich Murphey <rich@FreeBSD.org>
 fingerprint = AF A0 60 C4 84 D6 0C 73  D1 EF C0 E9 9D 21 DB E4

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.2

 mQCNAy97V+MAAAEEALiNM3FCwm3qrCe81E20UOSlNclOWfZHNAyOyj1ahHeINvo1
 FBF2Gd5Lbj0y8SLMno5yJ6P4F4r+x3jwHZrzAIwMs/lxDXRtB0VeVWnlj6a3Rezs
 wbfaTeSVyh5JohEcKdoYiMG5wjATOwK/NAwIPthB1RzRjnEeer3HI3ZYNEOpAAUR
 tCRSaWNoIE11cnBoZXkgPHJpY2hAbGFtcHJleS51dG1iLmVkdT6JAJUDBRAve15W
 vccjdlg0Q6kBAZTZBACcNd/LiVnMFURPrO4pVRn1sVQeokVX7izeWQ7siE31Iy7g
 Sb97WRLEYDi686osaGfsuKNA87Rm+q5F+jxeUV4w4szoqp60gGvCbD0KCB2hWraP
 /2s2qdVAxhfcoTin/Qp1ZWvXxFF7imGA/IjYIfB42VkaRYu6BwLEm3YAGfGcSw==
 =QoiM
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

  32.2.7. John Polstra <jdp@FreeBSD.org>

 John D. Polstra <jdp@polstra.com>
 Fingerprint = 54 3A 90 59 6B A4 9D 61  BF 1D 03 09 35 8D F6 0D

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.2

 mQCNAzMElMEAAAEEALizp6ZW9QifQgWoFmG3cXhzQ1+Gt+a4S1adC/TdHdBvw1M/
 I6Ok7TC0dKF8blW3VRgeHo4F3XhGn+n9MqIdboh4HJC5Iiy63m98sVLJSwyGO4oM
 dkEGyyCLxqP6h/DU/tzNBdqFzetGtYvU4ftt3RO0a506cr2CHcdm8Q+/vPRJAAUR
 tCFKb2huIEQuIFBvbHN0cmEgPGpkcEBwb2xzdHJhLmNvbT6JAJUDBRAzBNBE9RVb
 +45ULV0BAWgiA/0WWO3+c3qlptPCHJ3DFm6gG/qNKsY94agL/mHOr0fxMP5l2qKX
 O6a1bWkvGoYq0EwoKGFfn0QeHiCl6jVi3CdBX+W7bObMcoi+foqZ6zluOWBC1Jdk
 WQ5/DeqQGYXqbYjqO8voCScTAPge3XlMwVpMZTv24u+nYxtLkE0ZcwtY9IkAlQMF
 EDMEt/DHZvEPv7z0SQEBXh8D/2egM5ckIRpGz9kcFTDClgdWWtlgwC1iI2p9gEhq
 aufy+FUJlZS4GSQLWB0BlrTmDC9HuyQ+KZqKFRbVZLyzkH7WFs4zDmwQryLV5wkN
 C4BRRBXZfWy8s4+zT2WQD1aPO+ZsgRauYLkJgTvXTPU2JCN62Nsd8R7bJS5tuHEm
 7HGmiQCVAwUQMwSvHB9/qQgDWPy9AQFAhAQAgJ1AlbKITrEoJ0+pLIsov3eQ348m
 SVHEBGIkU3Xznjr8NzT9aYtq4TIzt8jplqP3QoV1ka1yYpZf0NjvfZ+ffYp/sIaU
 wPbEpgtmHnVWJAebMbNs/Ad1w8GDvxEt9IaCbMJGZnHmfnEqOBIxF7VBDPHHoJxM
 V31K/PIoYsHAy5w=
 =cHFa
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

  32.2.8. Guido van Rooij <guido@FreeBSD.org>

 Guido van Rooij <guido@gvr.win.tue.nl>
 Fingerprint = 16 79 09 F3 C0 E4 28 A7  32 62 FA F6 60 31 C0 ED

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.2

 mQCNAzGeO84AAAEEAKKAY91Na//DXwlUusr9GVESSlVwVP6DyH1wcZXhfN1fyZHq
 SwhMCEdHYoojQds+VqD1iiZQvv1RLByBgj622PDAPN4+Z49HjGs7YbZsUNuQqPPU
 wRPpP6ty69x1hPKq1sQIB5MS4radpCM+4wbZbhxv7l4rP3RWUbNaYutZnzI9AAUR
 tCZHdWlkbyB2YW4gUm9vaWogPGd1aWRvQGd2ci53aW4udHVlLm5sPokAlQMFEDMG
 Hcgff6kIA1j8vQEBbYgD/jm9xHuUuY+iXDkOzpCXBYACYEZDV913MjtyBAmaVqYo
 Rh5HFimkGXe+rCo78Aau0hc57fFMTsJqnuWEqVt3GRq28hSK1FOZ7ni9/XibHcmN
 rt2yugl3hYpClijo4nrDL1NxibbamkGW/vFGcljS0jqXz6NDVbGx5Oo7HBByxByz
 iQCVAwUQMhmtVjt/x7zOdmsfAQFuVQQApsVUTigT5YWjQA9Nd5Z0+a/oVtZpyw5Z
 OljLJP3vqJdMa6TidhfcatjHbFTve5x1dmjFgMX/MQTd8zf/+Xccy/PX4+lnKNpP
 eSf1Y4aK+E8KHmBGd6GzX6CIboyGYLS9e3kGnN06F2AQtaLyJFgQ71wRaGuyKmQG
 FwTn7jiKb1aJAJUDBRAyEOLXPt3iN6QQUSEBATwQA/9jqu0Nbk154+Pn+9mJX/YT
 fYR2UqK/5FKCqgL5Nt/Deg2re0zMD1f8F9Dj6vuAAxq8hnOkIHKlWolMjkRKkzJi
 mSPEWl3AuHJ31k948J8it4f8kq/o44usIA2KKVMlI63Q/rmNdfWCyiYQEVGcRbTm
 GTdZIHYCOgV5dOo4ebFqgYkAlQMFEDIE1nMEJn15jgpJ0QEBW6kEAKqN8XSgzTqf
 CrxFXT07MlHhfdbKUTNUoboxCGCLNW05vf1A8F5fdE5i14LiwkldWIzPxWD+Sa3L
 fNPCfCZTaCiyGcLyTzVfBHA18MBAOOX6JiTpdcm22jLGUWBf/aJK3yz/nfbWntd/
 LRHysIdVp29lP5BF+J9/Lzbb/9LxP1taiQCVAwUQMgRXZ44CzbsJWQz9AQFf7gP/
 Qa2FS5S6RYKG3rYanWADVe/ikFV2lxuM1azlWbsmljXvKVWGe6cV693nS5lGGAjx
 lbd2ADwXjlkNhv45HLWFm9PEveO9Jjr6tMuXVt8N2pxiX+1PLUN9CtphTIU7Yfjn
 s6ryZZfwGHSfIxNGi5ua2SoXhg0svaYnxHxXmOtH24iJAJUDBRAyAkpV8qaAEa3W
 TBkBARfQBAC+S3kbulEAN3SI7/A+A/dtl9DfZezT9C4SRBGsl2clQFMGIXmMQ/7v
 7lLXrKQ7U2zVbgNfU8smw5h2vBIL6f1PyexSmc3mz9JY4er8KeZpcf6H0rSkHl+i
 d7TF0GvuTdNPFO8hc9En+GG6QHOqbkB4NRZ6cwtfwUMhk2FHXBnjF4kAlQMFEDH5
 FFukUJAsCdPmTQEBe74EAMBsxDnbD9cuI5MfF/QeTNEG4BIVUZtAkDme4Eg7zvsP
 d3DeJKCGeNjiCWYrRTCGwaCWzMQk+/+MOmdkI6Oml+AIurJLoHceHS9jP1izdP7f
 N2jkdeJSBsixunbQWtUElSgOQQ4iF5kqwBhxtOfEP/L9QsoydRMR1yB6WPD75H7V
 iQCVAwUQMZ9YNGtaZ42Bsqd5AQH0PAQAhpVlAc3ZM/KOTywBSh8zWKVlSk3q/zGn
 k7hJmFThnlhH1723+WmXE8aAPJi+VXOWJUFQgwELJ6R8jSU2qvk2m1VWyYSqRKvc
 VRQMqT2wjss0GE1Ngg7tMrkRHT0il7E2xxIb8vMrIwmdkbTfYqBUhhGnsWPHZHq7
 MoA1/b+rK7CJAJUDBRAxnvXh3IDyptUyfLkBAYTDA/4mEKlIP/EUX2Zmxgrd/JQB
 hqcQlkTrBAaDOnOqe/4oewMKR7yaMpztYhJs97i03Vu3fgoLhDspE55ooEeHj0r4
 cOdiWfYDsjSFUYSPNVhW4OSruMA3c29ynMqNHD7hpr3rcCPUi7J2RncocOcCjjK2
 BQb/9IAUNeK4C9gPxMEZLokAlQMFEDGeO86zWmLrWZ8yPQEBEEID/2fPEUrSX3Yk
 j5TJPFZ9MNX0lEo7AHYjnJgEbNI4pYm6C3PnMlsYfCSQDHuXmRQHAOWSdwOLvCkN
 F8eDaF3M6u0urgeVJ+KVUnTz2+LZoZs12XSZKCte0HxjbvPpWMTTrYyimGezH79C
 mgDVjsHaYOx3EXF0nnDmtXurGioEmW1J
 =mSvM
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

  32.2.9. Peter Wemm <peter@FreeBSD.org>

 Peter Wemm <peter@FreeBSD.org>
        aka <peter@spinner.dialix.com>
        aka <peter@haywire.dialix.com>
        aka <peter@perth.dialix.oz.au>
 Key fingerprint = 47 05 04 CA 4C EE F8 93  F6 DB 02 92 6D F5 58 8A

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3ia

 mQCNAy9/FJwAAAEEALxs9dE9tFd0Ru1TXdq301KfEoe5uYKKuldHRBOacG2Wny6/
 W3Ill57hOi2+xmq5X/mHkapywxvy4cyLdt31i4GEKDvxpDvEzAYcy2n9dIup/eg2
 kEhRBX9G5k/LKM4NQsRIieaIEGGgCZRm0lINqw495aZYrPpO4EqGN2HYnOMZAAUT
 tCVQZXRlciBXZW1tIDxwZXRlckBoYXl3aXJlLmRpYWxpeC5jb20+iQCVAwUQMwWT
 cXW7bjh2o/exAQEFkQP+LIx5zKlYp1uR24xGApMFNrNtjh+iDIWnxxb2M2Kb6x4G
 9z6OmbUCoDTGrX9SSL2Usm2RD0BZfyv9D9QRWC2TSOPkPRqQgIycc11vgbLolJJN
 eixqsxlFeKLGEx9eRQCCbo3dQIUjc2yaOe484QamhsK1nL5xpoNWI1P9zIOpDiGJ
 AJUDBRAxsRPqSoY3Ydic4xkBAbWLA/9q1Fdnnk4unpGQsG31Qbtr4AzaQD5m/JHI
 4gRmSmbj6luJMgNG3fpO06Gd/Z7uxyCJB8pTst2a8C/ljOYZxWT+5uSzkQXeMi5c
 YcI1sZbUpkHtmqPW623hr1PB3ZLA1TIcTbQW+NzJsxQ1Pc6XG9fGkT9WXQW3Xhet
 AP+juVTAhLQlUGV0ZXIgV2VtbSA8cGV0ZXJAcGVydGguZGlhbGl4Lm96LmF1PokA
 lQMFEDGxFCFKhjdh2JzjGQEB6XkD/2HOwfuFrnQUtdwFPUkgtEqNeSr64jQ3Maz8
 xgEtbaw/ym1PbhbCk311UWQq4+izZE2xktHTFClJfaMnxVIfboPyuiSF99KHiWnf
 /Gspet0S7m/+RXIwZi1qSqvAanxMiA7kKgFSCmchzas8TQcyyXHtn/gl9v0khJkb
 /fv3R20btB5QZXRlciBXZW1tIDxwZXRlckBGcmVlQlNELm9yZz6JAJUDBRAxsRJd
 SoY3Ydic4xkBAZJUA/4i/NWHz5LIH/R4IF/3V3LleFyMFr5EPFY0/4mcv2v+ju9g
 brOEM/xd4LlPrx1XqPeZ74JQ6K9mHR64RhKR7ZJJ9A+12yr5dVqihe911KyLKab9
 4qZUHYi36WQu2VtLGnw/t8Jg44fQSzbBF5q9iTzcfNOYhRkSD3BdDrC3llywO7Ql
 UGV0ZXIgV2VtbSA8cGV0ZXJAc3Bpbm5lci5kaWFsaXguY29tPokAlQMFEDGxEi1K
 hjdh2JzjGQEBdA4EAKmNFlj8RF9HQsoI3UabnvYqAWN5wCwEB4u+Zf8zq6OHic23
 TzoK1SPlmSdBE1dXXQGS6aiDkLT+xOdeewNs7nfUIcH/DBjSuklAOJzKliXPQW7E
 kuKNwy4eq5bl+j3HB27i+WBXhn6OaNNQY674LGaR41EGq44Wo5ATcIicig/z
 =gv+h
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

  32.2.10. Jo:rg Wunsch <joerg@FreeBSD.org>

 Type Bits/KeyID    Date       User ID
 pub  1024/76A3F7B1 1996/04/27 Joerg Wunsch <joerg_wunsch@uriah.heep.sax.de>
             Key fingerprint = DC 47 E6 E4 FF A6 E9 8F  93 21 E0 7D F9 12 D6 4E
                               Joerg Wunsch <joerg_wunsch@interface-business.de>
                               Joerg Wunsch <j@uriah.heep.sax.de>
                               Joerg Wunsch <j@interface-business.de>

 -----BEGIN PGP PUBLIC KEY BLOCK-----
 Version: 2.6.3ia

 mQCNAzGCFeAAAAEEAKmRBU2Nvc7nZy1Ouid61HunA/5hF4O91cXm71/KPaT7dskz
 q5sFXvPJPpawwvqHPHfEbAK42ZaywyFp59L1GaYj87Pda+PlAYRJyY2DJl5/7JPe
 ziq+7B8MdvbX6D526sdmcR+jPXPbHznASjkx9DPmK+7TgFujyXW7bjh2o/exAAUR
 tC1Kb2VyZyBXdW5zY2ggPGpvZXJnX3d1bnNjaEB1cmlhaC5oZWVwLnNheC5kZT6J
 AJUDBRA0FFkBs1pi61mfMj0BAfDCA/oCfkjrhvRwRCpSL8klJ1YDoUJdmw+v4nJc
 pw3OpYXbwKOPLClsE7K3KCQscHel7auf91nrekAwbrXv9Clp0TegYeAQNjw5vZ9f
 L6UZ5l3fH8E2GGA7+kqgNWs1KxAnG5GdUvJ9viyrWm8dqWRGo+loDWlZ12L2OgAD
 fp7jVZTI1okAlQMFEDQPrLoff6kIA1j8vQEB2XQEAK/+SsQPCT/X4RB/PBbxUr28
 GpGJMn3AafAaA3plYw3nb4ONbqEw9tJtofAn4UeGraiWw8nHYR2DAzoAjR6OzuX3
 TtUV+57BIzrTPHcNkb6h8fPuHU+dFzR+LNoPaGJsFeov6w+Ug6qS9wa5FGDAgaRo
 LHSyBxcRVoCbOEaS5S5EiQCVAwUQM5BktWVgqaw0+fnVAQGKPwP+OiWho3Zm2GKp
 lEjiZ5zx3y8upzb+r1Qutb08jr2Ewja04hLg0fCrt6Ad3DoVqxe4POghIpmHM4O4
 tcW92THQil70CLzfCxtfUc6eDzoP3krD1/Gwpm2hGrmYA9b/ez9+r2vKBbnUhPmC
 glx5pf1IzHU9R2XyQz9Xu7FI2baOSZqJAJUDBRAyCIWZdbtuOHaj97EBAVMzA/41
 VIph36l+yO9WGKkEB+NYbYOz2W/kyi74kXLvLdTXcRYFaCSZORSsQKPGNMrPZUoL
 oAKxE25AoCgl5towqr/sCcu0A0MMvJddUvlQ2T+ylSpGmWchqoXCN7FdGyxrZ5zz
 xzLIvtcio6kaHd76XxyJpltCASupdD53nEtxnu8sRrQxSm9lcmcgV3Vuc2NoIDxq
 b2VyZ193dW5zY2hAaW50ZXJmYWNlLWJ1c2luZXNzLmRlPokAlQMFEDIIhfR1u244
 dqP3sQEBWoID/RhBm+qtW+hu2fqAj9d8CVgEKJugrxZIpXuCKFvO+bCgQtogt9EX
 +TJh4s8UUdcFkyEIu8CT2C3Rrr1grvckfxvrTgzSzvtYyv1072X3GkVY+SlUMBMA
 rdl1qNW23oT7Q558ajnsaL065XJ5m7HacgTTikiofYG8i1s7TrsEeq6PtCJKb2Vy
 ZyBXdW5zY2ggPGpAdXJpYWguaGVlcC5zYXguZGU+iQCVAwUQMaS91D4gHQUlG9CZ
 AQGYOwQAhPpiobK3d/fz+jWrbQgjkoO+j39glYGXb22+6iuEprFRs/ufKYtjljNT
 NK3B4DWSkyIPawcuO4Lotijp6jke2bsjFSSashGWcsJlpnwsv7EeFItT3oWTTTQQ
 ItPbtNyLW6M6xB+jLGtaAvJqfOlzgO9BLfHuA2LY+WvbVW447SWJAJUDBRAxqWRs
 dbtuOHaj97EBAXDBA/49rzZB5akkTSbt/gNd38OJgC+H8N5da25vV9dD3KoAvXfW
 fw7OxIsxvQ/Ab+rJmukrrWxPdsC+1WU1+1rGa4PvJp/VJRDes2awGrn+iO7/cQoS
 IVziC27JpcbvjLvLVcBIiy1yT/RvJ+87a3jPRHt3VFGcpFh4KykxxSNiyGygl4kA
 lQMFEDGCUB31FVv7jlQtXQEB5KgD/iIJZe5lFkPr2B/Cr7BKMVBot1/JSu05NsHg
 JZ3uK15w4mVtNPZcFi/dKbn+qRM6LKDFe/GF0HZD/ZD1FJt8yQjzF2w340B+F2GG
 EOwnClqZDtEAqnIBzM/ECQQqH+6Bi8gpkFZrFgg5eON7ikqmusDnOlYStM/CBfgp
 SbR8kDmFtCZKb2VyZyBXdW5zY2ggPGpAaW50ZXJmYWNlLWJ1c2luZXNzLmRlPokA
 lQMFEDHioSdlYKmsNPn51QEByz8D/10uMrwP7MdaXnptd1XNFhpaAPYTVAOcaKlY
 OGI/LLR9PiU3FbqXO+7INhaxFjBxa0Tw/p4au5Lq1+Mx81edHniJZNS8tz3I3goi
 jIC3+jn2gnVAWnK5UZUTUVUn/JLVk/oSaIJNIMMDaw4J9xPVVkb+Fh1A+XqtPsVa
 YESrNp0+iQCVAwUQMwXkzcdm8Q+/vPRJAQEA4QQAgNNX1HFgXrMetDb+w6yEGQDk
 JCDAY9b6mA2HNeKLQAhsoZl4HwA1+iuQaCgo3lyFC+1Sf097OUTs74z5X1vCedqV
 oFw9CxI3xuctt3pJCbbN68flOlnq0WdYouWWGlFwLlh5PEy//VtwX9lqgsizlhzi
 t+fX6BT4BgKi5baDhrWJAJUDBRAyCKveD9eCJxX4hUkBAebMA/9mRPy6K6i7TX2R
 jUKSl2p5oYrXPk12Zsw4ijuktslxzQhOCyMSCGK2UEC4UM9MXp1H1JZQxN/DcfnM
 7VaUt+Ve0wZ6DC9gBSHJ1hKVxHe5XTj26mIr4rcXNy2XEDMK9QsnBxIAZnBVTjSO
 LdhqqSMp3ULLOpBlRL2RYrqi27IXr4kAlQMFEDGpbnd1u244dqP3sQEBJnQD/RVS
 Azgf4uorv3fpbosI0LE3LUufAYGBSJNJnskeKyudZkNkI5zGGDwVneH/cSkKT4OR
 ooeqcTBxKeMaMuXPVl30QahgNwWjfuTvl5OZ8orsQGGWIn5FhqYXsKkjEGxIOBOf
 vvlVQ0UbcR0N2+5F6Mb5GqrXZpIesn7jFJpkQKPU
 =97h7
 -----END PGP PUBLIC KEY BLOCK-----

     --------------------------------------------------------------

                 Capitulo 33. Actualizacion de FreeBSD

   Escrito por Tom Rhodes. Basado en notas facilitadas por Colin
   Percival.

33.1. Synopsis

   Hay un aspecto de FreeBSD que se ha mantenido inalterable desde el
   principio: la necesidad de utilizar aplicaciones y herramientas
   para obtener actualizaciones mayores y menores.

   Durante muchos anos los usuarios que querian actualizar su
   sistema, recabar parches de seguridad y conseguir actualizaciones
   de ports y packages sin estropear la forma de entender las cosas
   de la Coleccion de Ports estaban obligados a utilizar CVSup.

   CVSup sigue funcionando y ya hay una version de dicha aplicacion
   en lenguaje C, pero han aparecido nuevos metodos para conseguir
   actualizaciones del sistema.

   Herramientas como portsnap(8) y freebsd-update(8) han simplificado
   el proceso de actualizacion. Estos nuevos metodos la productividad
   al ofrecer una interfaz mas accesible a los usuarios. Alguna de
   estas nuevas herramientas puede ejecutarse desde cron(8),
   reduciendo la intervencion manual del administrador del sistema;
   esto es una buena noticia para quienes tienen que monitorizar
   cientos de maquinas.

   En este capitulo se explica como usar estos nuevos metodos y como
   pueden los usuarios y los administradores de sistemas aprovechar
   lo practico y facil de su uso.

   Una vez leido este capitulo sabra usted:

     * Que herramientas hay disponibles para actualizar el sistema y
       la Coleccion de Ports.

     * Como usar freebsd-update para aplicar parches de seguridad y
       aplicar actualizaciones mayores y menores de FreeBSD.

     * Como comparar el estado de un sistema instalado contra una
       copia confiable.

   Antes de leer este capitulo necesita:

     * Comprender lo basico de UNIX y FreeBSD (Capitulo 3).

     * Tener soltura con la configuracion y la compilacion del kernel
       (Capitulo 8).

     * Tener cierta familiaridad con la Coleccion de Ports y la
       instalacion de aplicaciones de terceros en FreeBSD (Capitulo
       4).

     * Experiencia con los diversos componentes de codigo que
       componen FreeBSD y como usar mergemaster(8) (Capitulo 23).

     --------------------------------------------------------------

33.2. FreeBSD Update

   La aplicacion de parches de seguridad es una parte importante del
   mantenimiento del software. Durante mucho tiempo en FreeBSD este
   proceso no era precisamente de los mas sencillos. Habia que
   aplicar los parches al codigo fuente, recompilarlo para
   convertirlo en binarios y despues reinstalar esos binarios.

   

   Ahora todo ha cambiado, FreeBSD ha incorporado una herramienta
   facil de usar llamada freebsd-update. Esta herramienta tiene dos
   funciones. La primera es permitir la aplicacion de actualizaciones
   de seguridad y erratas sin los pasos compilar e instalar. La
   segunda es poder aplicar actualizaciones de version mayores y
   menos.

     Nota: Hay actualizaciones binarias para todas las arquitecturas
     y versiones de FreeBSD soportadas por el equipo de seguridad; no
     obstante, ciertas caracteristicas (como las actualizaciones del
     sistema operativo, hacen imprescindible la ultima version de
     freebsd-update(8) y FreeBSD 6.3 o superior. Antes de actualizar
     a una nueva release consulte los avisos de la release actual; es
     posible que contenga informacion de su interes. Puede encontrar
     estos anuncios aqui: http://www.FreeBSD.org/releases/.

   Si esta usando crontab con freebsd-update tendra que dejar de
   hacerlo antes de proseguir con lo que vamos hacer. Puede instalar
   la ultima version de freebsd-update: descargue el tar.gz de la
   suguienteURL e instalelo del siguiente modo:

 # gunzip -c freebsd-update-upgrade.tgz | tar xvf -
 # mv freebsd-update.sh /usr/sbin/freebsd-update
 # mv freebsd-update.conf /etc

   No es necesario actualizar freebsd-update en las releases
   actuales.

     --------------------------------------------------------------

  33.2.1. El fichero de configuracion

   Algunos usuarios pueden querer retocar el fichero de configuracion
   para controlar mejor el proceso. Las opciones disponibles estan
   muy bien documentadas pero hay unas pocas, que veremos a
   continuacion, que quizas necesiten una explicacion un poquito mas
   mas detallada.

 # Components of the base system which should be kept updated.
 Components src world kernel

   Es decir:

 # Componentes del sistema base que deben mantenerse actualizados.
 Components src world kernel

   Este parametro controla que partes de FreeBSD deben actualizarse.
   Por omision se actualiza el codigo fuente del sistema, el sistema
   base y el kernel. Los componentes posibles son los mismos que se
   ofrecen durante la instalacion, es decir, que si se incluye en la
   lista de componentes a actualizar <<world/games>> se actualizaria
   la distribucion <<games>>. Si se incluye <<src/bin>> actualizara
   el codigo fuente bajosrc/bin.

   Lo mas razonable es dejar este parametro tal y como esta, puesto
   que modificarlo de cualquier obligara al usuario a incluir en la
   lista todos y cada uno de los elementos que quiera actualizar, lo
   cual puede tener consecuencias desastrosas si el codigo fuente y
   los binarios dejan de estar sincronizados.

 # Paths which start with anything matching an entry in an IgnorePaths
 # statement will be ignored.
 IgnorePaths

   Es decir:

 # Las rutas que esten detras de IgnorePaths seran ignoradas.
 IgnorePaths

   Puede incluir como /bin o /sbin para que esos directorios no se
   toquen durante la actualizacion si hay en ellos cambios que haya
   hecho usted.

 # Paths which start with anything matching an entry in an UpdateIfUnmodified
 # statement will only be updated if the contents of the file have not been
 # modified by the user (unless changes are merged; see below).
 UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile

   Es decir:

 # Las rutas que comiencen por algo que este tras UpdateIfUnmodified solamente
 # se actualizaran si el contenido del fichero no ha sido modificado
 # por el usuario (salvo que los cambios se hayan importado; siga
 # leyendo mas abajo.
 UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile

   Con esto actualizara los ficheros de configuracion que esten en
   los directorios especificados solamente si no han sido
   modificados. Cualquier cambio que el usuario pueda hacer en ellos
   anulara la actualizacion automatica de esos ficheros. Hay otra
   opcion, KeepModifiedMetadata, que le dice a freebsd-update que
   guarde los cambios que encuentre durante la mezcla de las
   versiones de los ficheros.

 # When upgrading to a new FreeBSD release, files which match MergeChanges
 # will have any local changes merged into the version from the new release.
 MergeChanges /etc/ /var/named/etc/

   Esto es:

 # Al actualizar a una nueva release de FreeBSD, en los ficheros que aparezcan
 # tras MergeChanges se mezclaran los cambios entre la version local y la de la nueva release.

 MergeChanges /etc/ /var/named/etc/

   Lista los directorios con ficheros de configuracion en los que
   freebsd-update deberia intentar mezclar cambios locales con los de
   la nueva version. El proceso de mezcla consiste en una serie de
   parches diff(1) similar a ejecutar mergemaster(8) pero con menos
   opciones: la mezcla se acepta, se abre un editor o freebsd-update
   se apaga. Si tiene alguna duda haga una copia de seguridad de /etc
   y acepte la mezcla. Consulte el Capitulo 23 si necesita mas
   informacion sobre la orden mergemaster.

 # Directory in which to store downloaded updates and temporary
 # files used by FreeBSD Update.
 # WorkDir /var/db/freebsd-update

   Esto es:

 # Directorios donde descargar actualizaciones y guardar ficheros temporales necesarios para FreeBSD Update.
 # WorkDir /var/db/freebsd-update

   En este directorio es donde van a parar todos los parches y los
   ficheros temporales. Cuando el usuario este haciendo una
   actualizacion de version este directorio puede llegar a ocupar un
   gigabyte.

 # When upgrading between releases, should the list of Components be
 # read strictly (StrictComponents yes) or merely as a list of components
 # which *might* be installed of which FreeBSD Update should figure out
 # which actually are installed and upgrade those (StrictComponents no)?
 # StrictComponents no

   Es decir:

 # Durante una actualizacion entre releases ?Debe leerse al When upgrading between releases, should the list of Components be
 # pie de la letra (StrictComponents yes) o simplemente como una lista
 # de componentes que *podrian* instalarse y de las cuales FreeBSD Update
 # tendra que decidir cuales estan instaladas y actualizarlas
 # (StrictComponents no)?
 # StrictComponents no

   Si pone yes freebsd-update asumira que la lista de Components esta
   completa y no intentara cambiar nada que no este en ella. Dicho de
   otro modo, freebsd-update intentara modificar cada fichero que
   aparezca en la lista Components.

     --------------------------------------------------------------

  33.2.2. Parches de seguridad

   Los parches de seguridad se almacenan en una maquina remota y se
   pueden descargar e instalar mediante la siguiente orden:

 # freebsd-update fetch
 # freebsd-update install

   Si se ha aplicado algun parche al kernel tendra que reiniciar. Si
   todo ha ido bien el sistema el sistema ya esta parcheado y
   freebsd-update puede ejecutarse como trabajo nocturno en cron(8).
   Esto se hace con una entrada en /etc/crontab:

 @daily                                  root    freebsd-update cron

   Esta entrada hara que una vez al dia se ejecutara freebsd-update.
   Al pasarle el argumento cron a freebsd-update solamente intentara
   saber si existen actualizaciones. Si hay parches disponibles los
   descargara automaticamente a disco local, pero no los instalara.
   El usuario root recibira un correo electronico avisandole de que
   puede aplicarlos.

   Si algo ha ido mal freebsd-update puede dar marcha atras al ultimo
   conjunto de cambios si le da la siguiente orden:

 # freebsd-update rollback

   Hecho esto el sistema tendra que reiniciarse si el kernel o
   cualquier modulo del kernel han sufrido modificaciones. De este
   modo FreeBSD podra cargar en memoria los nuevos binarios.

     Nota: freebsd-update solamente funciona con el kernel GENERIC.
     Si hace cualquier cambio a GENERIC o utiliza un kernel
     personalizado freebsd-update no podra cumplir su mision: en el
     primer caso fallara y en el segundo le mostrara un error.

     --------------------------------------------------------------

  33.2.3. Actualizaciones mayores y menores

   Este proceso borrara todos los ficheros de objeto viejos y las
   librerias que haran fallar la mayoria de las aplicaciones de
   terceros que tenga en el sistema. Le recomendamos que borre y
   reinstale todos sus ports o los actualice con
   ports-mgmt/portupgrade. Tambien le recomendamos que ejecute una
   compilacion de prueba con la siguiente orden:

 # portupgrade -af

   De esta forma se asegura de uqe todo se reinstalara correctamente.
   Recuerde que si asigna el valor yes a la variable de entorno BATCH
   respondera usted que si a todas las preguntas que puedan surgir y
   por tanto requerir intervencion manual durante el proceso de
   compilacion.

   Las actualizaciones a versiones mayores o menores pueden
   ejecutarse facilitando a freebsd-update la release a la que
   queremos llevar al sistema; veamos un ejemplo en el que vamos a
   actualizar a FreeBSD 6.3:

 # freebsd-update -r 6.3-RELEASE upgrade

   Una vez que la orden ha sido recibida freebsd-update lee el
   fichero de configuracion y la del sistema para recopilar toda la
   informacion necesaria para actualizar el sistema. Se le mostrara
   una pantalla con una lista con los componentes detectados y tamen
   con los que no han podido serlo. Veamos un ejemplo:

 Looking up update.FreeBSD.org mirrors... 1 mirrors found.
 Fetching metadata signature for 6.3-BETA1 from update1.FreeBSD.org... done.
 Fetching metadata index... done.
 Inspecting system... done.

 The following components of FreeBSD seem to be installed:
 kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games
 src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue
 src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin
 world/base world/info world/lib32 world/manpages

 The following components of FreeBSD do not seem to be installed:
 kernel/generic world/catpages world/dict world/doc world/games
 world/proflibs

 Does this look reasonable (y/n)? y

   Lo que mas o menos vendria a ser:

 Buscando replicas de update.FreeBSD.org ... encontrada 1 replica.
 Descargando firma de metadatos para 6.3-BETA1 from update1.FreeBSD.org... hecho.
 Descargando indice de metadatos... hecho.
 Inspeccion del sistema... hecho.

 Parece que estan instalados los siguientes componentes de FreeBSD:
 kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games
 src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue
 src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin
 world/base world/info world/lib32 world/manpages

 Parece que no estan instalados los siguientes componentes:
 kernel/generic world/catpages world/dict world/doc world/games
 world/proflibs

 ?Esta de acuerdo? (s/n) s

   A partir de aqui freebsd-update intentara descargar todos los
   ficheros necesarios para la actualizacion del sistema. En algunos
   casos le hara preguntas al usuario sobre que o como instalar.

   Una vez que todos los parches han sido descargados al disco duro
   local hay que aplicarlos, es decir, instalarlos. Este proceso
   puede llevar tiempo dependiendo de la velocidad y la carga de
   trabajo que este sacando adelante la maquina. Los ficheros de
   configuracion tendran que mezclarse: esta parte del proceso
   requiere intervencion del usuario cuando un fichero tenga que ser
   mezclado, o cuando aparezca un editor en pantalla para que haga
   una mezcla manual. Los resultados de cada mezcla que concluya
   satisfactoriamente se iran mostrando al usuario a medida que el
   proceso vaya avanzando. Si falla o se ignora alguna mezcla el
   proceso se interrumpira. Le recomendamos que haga una copia de
   seguridad de /etc y mezcle manualmente los ficheros importantes
   (como master.passwd o or group) cuando acabe con la actualizacion.

     Nota: En este punto el sistema sigue sin haber sufrido ningun
     cambio, pues todo el parcheo y las mezclas estan teniendo lugar
     en un directorio. Cuando todos los parches se hayan aplicado
     satisfactoriamente, todos los ficheros de configuracion hayan
     sido mezclados y parezca -desde todos los puntos de vista- que
     el proceso va del todo bien, los cambios tendran que ser
     aplicados por el usuario.

   Cuando el proceso este completo la actualizacion se aplicara al
   sistema con la siguiente orden:

 # freebsd-update install

   El kernel y los modulos del kernel se parchean en primer lugar.
   Tras esto hay que reiniciar la maquina. Debe usar la siguiente
   orden para reiniciar la maquina y poder asi cargar en memoria el
   nuevo kernel:

 # shutdown -r now

   Una vez que haya reiniciado el sistema arranque de nuevo
   freebsd-update. El estado del proceso se ha guardado, asi que
   freebsd-update no empezara desde cero, pero si que borrara todas
   las bibliotecas compartidas y ficheros objeto que ya no sean
   necesarios. Introduzca la siguiente orden:

 # freebsd-update install

     Nota: Dependiendo de si hay numeros de version de bibliotecas
     que hayan subido habra dos o tres pasos instalacion.

   Es necesario recompilar y reinstalar todo el software de terceros.
   La razon de esto es que el software que tiene instalado puede
   depender de bibliotecas que van a desaparecer durante el proceso
   de actualizacion. Puede utilizar la orden ports-mgmt/portupgrade
   para automatizar el proceso. Puede usar las siguientes ordenes
   para comenzar el proceso:

 # portupgrade -f ruby
 # rm /var/db/pkg/pkgdb.db
 # portupgrade -f ruby18-bdb
 # rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db
 # portupgrade -af

   Una vez terminado esto solamente queda usar una vez mas a
   freebsd-update. Utilice la siguiente orden para concluir el
   proceso de actualizacion:

 # freebsd-update install

   Reinicie la maquina y vera la nueva version de FreeBSD. El proceso
   ha terminado.

     --------------------------------------------------------------

  33.2.4. Comparacion de estado del sistema

   La orden freebsd-update puede utilizarse para comprobar el estado
   de una version instalada de FreeBSD contra una copia confiable.
   Esta opcion compara la version instalada de las utilidades del
   sistema, bibliotecas y ficheros de configuracion. Para ejecutar la
   comparacion ejecute la siguiente orden:

 # freebsd-update IDS >> outfile.ids

     AvisoAunque el nombre de la orden sea IDS bajo ningun concepto
     puede utilizarse como sustituto de un sistema de deteccion de
     intrusos [13] como security/snort. Dado que freebsd-update
     almacena datos en disco las posibilidades de manipulacion son
     evidentes. Puede reducirlas mediante kern.securelevel y
     guardando los datos de freebsd-update en un medio de solo
     lectura mientras no esten en uso. O puede hacer algo mejor aun,
     comparar el sistema con el contenido de un disco seguro, como un
     DVD o un dispositivo USB almacenado en sitio seguro.

   El sistema se va a revisar y se generara una lista de ficheros con
   sus respectivos valores hash sha256(1). Estos valores son los de
   la release y de la version instalada. La salida se envia al
   fichero outfile.ids porque pasa a una velocidad muy superior a la
   necesaria para poder leer el texto y muy rapidamente sobrepasa el
   tamano del bufer de la consola.

   Las lineas del fichero son ademas extremadamente largas, pero el
   formato de salida puede manejarse muy facilmente. Por ejemplo, si
   quiere obtener una lista de todos los ficheros diferentes de lo
   que aparece en la release utilice la siguiente orden:

 # cat update.ids | awk '{ print $1 }' | more
 /etc/master.passwd
 /etc/motd
 /etc/passwd
 /etc/pf.conf

   La salida del ejemplo no esta completa, hay muchos otros ficheros
   que diferiran. Algunos de estos ficheros tienen cambios normales,
   el fichero /etc/passwd es distinto porque se han anadido usuarios
   nuevos. En ciertos casos puede haber otros ficheros distintos,
   como modulos del kernel, que seran diferentes porque
   freebsd-update los habra actualizado. Si quiere excluir ficheros o
   directorios especificos use la opcion IDSIgnorePaths en
   /etc/freebsd-update.conf.

   Este sistema puede utilizarse como parte de un metodo muy
   elaborado de actualizacion aparte de lo que aqui se ha explicado.

     --------------------------------------------------------------

33.3. Portsnap: Una herramienta de actualizacion de la Coleccion de
Ports

   El sistema base de FreeBSD tiene una herramienta para la la
   actualizacion de la Coleccion de Ports: portsnap(8). Una vez
   ejecutada se conectara con un servidor remoto, verificara la firma
   de seguridad y descargara una copia nueva del arbol de ports. La
   firma segura se usa para verificar la integridad de todos los
   ficheros que se descargan para asegurarse de que no han sido
   modificados desde que fueron generados. Para descargar la ultima
   version de los ficheros que componen la Coleccion de Ports use la
   siguiente orden:

 # portsnap fetch
 Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found.
 Fetching snapshot tag from portsnap1.FreeBSD.org... done.
 Fetching snapshot metadata... done.
 Updating from Wed Aug  6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008.
 Fetching 3 metadata patches.. done.
 Applying metadata patches... done.
 Fetching 3 metadata files... done.
 Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done.
 Applying patches... done.
 Fetching 133 new ports or files... done.

   Este ejemplo muestra como portsnap(8) ha encontrado y verificado
   varios parches para los ports del sistema. Indica tambien que la
   aplicacion ya habia sido ejecutada. Si hubiera sido una primera
   ejecucion sencillamente se hubiera descargado la coleccion.

   Una vez que portsnap(8) ha obtenido los nuevos elementos de la
   Coleccion de Ports junto con los nuevos parches disponibles, y una
   vez que todos ellos han pasado la verificacion en local, ya
   podemos pasar a la instalacion, que efectuaremos con la siguiente
   orden:

   Los ficheros actualizados pueden ya instalarse tecleando lo
   siguiente:

 # portsnap extract
 /usr/ports/.cvsignore
 /usr/ports/CHANGES
 /usr/ports/COPYRIGHT
 /usr/ports/GIDs
 /usr/ports/KNOBS
 /usr/ports/LEGAL
 /usr/ports/MOVED
 /usr/ports/Makefile
 /usr/ports/Mk/bsd.apache.mk
 /usr/ports/Mk/bsd.autotools.mk
 /usr/ports/Mk/bsd.cmake.mk
 ...

   El proceso ha concluido y ya puede instalar o actualizar
   aplicaciones desde su flamante Coleccion de Ports.

     --------------------------------------------------------------

                                Colofon

   Este libro es el resultado del trabajo de cientos de colaboradores
   del "Proyecto de Documentacion de FreeBSD". El texto esta escrito
   en SGML de acuerdo al DTD DocBook y es formateado automaticamente
   en diferentes formatos de presentacion usando Jade, una
   herramienta DSSSL de software libre. Se han usado las hojas de
   estilo DSSSL de Norm Walsh con personalizacion de niveles para las
   instrucciones de presentacion de Jade. La version impresa de este
   documento no hubiese sido posible sin los programas TeX de Donald
   Knuth, LaTeX de Leslie Lamport y JadeTeX de Sebastian Rahtz.

  Notas

[1]  Esto es lo que i386 significa. Tenga en cuenta que incluso si no esta       
     ejecutando FreeBSD en una CPU Intel 386, este va a ser i386. No es el tipo  
     de su procesador, sino la <<arquitectura>> la que se muestra aqui.          
[2]  Los <<scripts>> de inicio son programas que FreeBSD ejecuta automaticamente 
     cuando arranca. Su funcion principal es preparar todo lo necesario para que 
     todo lo demas se ejecute, e iniciar cualquier servicio que tenga            
     configurado para ejecutarse en segundo plano algo utiles.                   
[3]  Tiene una descripcion bastante tecnica y correcta de todos los detalles de  
     la consola FreeBSD y los controladores de teclado pueden encontrarse en las 
     paginas de manual de syscons(4), atkbd(4), vidcontrol(1) y kbdcontrol(1).   
     No nos extenderemos en los detalles aqui, pero el lector interesado siempre 
     puede consultar dichas paginas de manual si quiere una explicacion mas      
     detallada y profunda de como funcionan estas cosas.                         
[4]  Esto no es del todo cierto (ciertas cosas no pueden ser interrumpidas. Por  
     ejemplo, si el proceso esta tratando de leer desde un fichero que esta en   
     otro sistema de la red, y el otro sistema no esta disponible por alguna     
     razon (por estar apagada, o que la red tenga un fallo), tenemos un caso de  
     lo que llamamos <<proceso ininterrumpible>>. Mas tarde, al proceso se le    
     acabara el tiempo de espera, generalmente pasados dos minutos. Tan pronto   
     como esto ocurra el proceso sera liquidado.                                 
[5]  Hay traduccion al castellano de este articulo. Esta aqui:                   
     http://www.freebsd.org/doc/es_ES.ISO8859-1/articles/problem-reports/article 
[6]  Bueno, a menos que conectes multiples terminales, pero dejaremos ese tema   
     para el Capitulo 24.                                                        
[7]  La -s hace que adduser sea silencioso por defecto. Mas tarde usamos -v      
     cuando queremos cambiar valores por defecto.                                
[8]  En FreeBSD la contrasena del login estandar puede ser de hasta 128          
     caracteres de longitud.                                                     
[9]  Este paso no es necesario en FreeBSD 6.0 y versiones posteriores.           
[10] Mantener el disco accesible a sistemas operativos que pudieran necesitar    
     acceder al mismo en algun momento.                                          
[11] Si quiere ayuda para seleccionar una contrasena segura que ademas sea facil 
     de recordar visite el sitio web Diceware Passphrase.                        
[12] Debe advertirse que comentar la entrada del fichero swap en fstab           
     probablemente le obligara a reestablecer una manera diferente de habilitar  
     el espacio de intercambio. Consulte Seccion 11.4 para mas informacion.      
[13] IDS son las siglas de sistema de deteccion de intrusos en ingles: Intrusion 
     Detection System.                                                           

     --------------------------------------------------------------

          Puede descargar este y muchos otros documentos desde
                ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Si tiene dudas sobre FreeBSD consulte la documentacion antes de escribir
                  a la lista <questions@FreeBSD.org>.
    Envie sus preguntas sobre la documentacion a <doc@FreeBSD.org>.
