           Preguntas mas frecuentes de FreeBSD 4.X, 5.X y 6.X

  Proyecto de documentacion de FreeBSD

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

   Esta es la FAQ de FreeBSD version 4.X, 5.X y 6.X. Todas las
   secciones estan dirigidas a FreeBSD 4.0 y superiores. Los
   capitulos con <XXX> estan bajo construccion. Si estas interesado
   en colaborar en este proyecto, envia un e-mail a la lista de
   distribucion del proyecto de documentacion de FreeBSD (en ingles)
   lista de correo del proyecto de documentacion de FreeBSD o a la
   direccion doc@es.FreeBSD.org en castellano. La ultima version de
   este documento esta siempre disponible en el Mirror en espanol de
   FreeBSD. Puede obtenerse como un unico archivo en formato HTML via
   HTTP o en formato texto, PostScript o PDF desde el servidor FTP de
   FreeBSD. Tambien se pueden hacer busquedas en las FAQ.

   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.

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

   Tabla de contenidos

   1. Introduccion

   2. Instalacion

   3. Compatibilidad hardware

   4. Problemas

   5. Aplicaciones Comerciales

   6. Aplicaciones de usuario

   7. Configuracion del Kernel

   8. Administracion de sistema

   9. El sistema X Windows y las consolas virtuales

   10. Networking

   11. PPP

   12. Comunicaciones serie

   13. Preguntas varias

   14. Solo para hackers serios de FreeBSD

   15. AGRADECIMIENTOS

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

                        Capitulo 1. Introduccion

   !Bienvenido a la FAQ de FreeBSD 4.X-6.X!

   Como es habitual con las FAQ de los grupos de noticias (USENET),
   este documento pretende abarcar las preguntas mas frecuentes
   referentes al sistema operativo FreeBSD (!y por supuesto
   contestarlas!). Pensadas en un principio para reducir el trafico y
   evitar que se hagan las mismas preguntas una y otra vez, las FAQ
   se han convertido en un valorado recurso de obtencion de
   informacion.

   Todo el esfuerzo se ha hecho en intentar que esta FAQ sea lo mas
   informativa posible; si tienes cualquier comentario o sugerencia,
   por favor, envia un correo a lista de correo del proyecto de
   documentacion de FreeBSD.

   1.1. ?Que es FreeBSD?

   1.2. ?Cual es el objetivo del Proyecto FreeBSD?

   1.3. ?Tiene la licencia FreeBSD alguna restriccion?

   1.4. ?Puede FreeBSD remplazar mi sistema operativo actual?

   1.5. ?Por que se llama FreeBSD?

   1.6. ?Cuales son las diferencias entre FreeBSD y NetBSD, OpenBSD y
   otros sistemas operativos BSD libres?

   1.7. ?Cual es la ultima version de FreeBSD?

   1.8. ?Que es FreeBSD-CURRENT?

   1.9. ?Que significa FreeBSD-STABLE?

   1.10. ?Cuando se realizan las releases de FreeBSD?

   1.11. ?Quien es responsable de FreeBSD?

   1.12. ?Donde puedo conseguir FreeBSD?

   1.13. ?Como puedo instalar un mirror de FreeBSD?

   1.14. ?Donde encuentro informacion sobre las listas de
   distribucion de FreeBSD?

   1.15. ?Donde encuentro informacion sobre el ano 2000 (Y2K) en
   FreeBSD?

   1.16. ?Que grupos de noticias estan disponibles sobre FreeBSD?

   1.17. ?Hay algun canal IRC (Internet Relay Chat) sobre FreeBSD?

   1.18. Libros sobre FreeBSD

   1.19. ?Como accedo a la base de datos de Problem Report?

   1.20. ?Donde puedo obtener versiones ASCII/PostScript de la FAQ?

   1.21. ?Donde puedo obtener versiones ASCII/PostScript del
   Handbook?

   1.22. El Handbook en ASCII no esta en texto plano!

   1.23. Me gustaria ser Mirror del web de FreeBSD!

   1.24. Me gustaria traducir la documentacion.

   1.25. Otras fuentes de informacion.

   1.1. ?Que es FreeBSD?

   De manera resumida, FreeBSD es un sistema operativo tipo UNIX(R)
   para plataformas Alpha/AXP, AMD64 e Intel EM64T, i386 IA-64, PC-98
   y UltraSPARC basado en "4.4BSD-Lite" de la Universidad de Berkeley
   en California. Tambien esta indirectamente basado en el port de
   Net/2 para i386 de Berkeley, conocido como "386BSD", realizado por
   William Jolitz's. Una descripcion mas detallada de FreeBSD y de
   como puede trabajar, se encuentra en FreeBSD home page.

   FreeBSD es usado por companias, proveedores de Internet,
   profesionales de la informatica, estudiantes y usuarios
   particulares de todo el mundo en su trabajo, educacion y ocio.
   Puedes ver a algunos de ellos en FreeBSD Gallery.

   Para informacion mas detallada sobre FreeBSD, por favor mira en
   FreeBSD Handbook.

   1.2. ?Cual es el objetivo del Proyecto FreeBSD?

   El objetivo del Proyecto FreeBSD es proveer software que pueda ser
   usado en todos los ambitos sin ningun tipo de atadura. Muchos de
   nosotros estamos significativamente involucrados en el desarrollo
   del codigo (y del proyecto) y no seria cierto decir que no
   esperabamos o esperamos algun tipo de financiacion, pero
   definitivamente no estamos preparados para insistir en ello.
   Creemos que nuestra primera y principal "mision" es proporcionar
   el codigo libremente, y en cualquier ambito, para que el codigo se
   difunda lo mas posible y genere los mayores beneficios. Esto es,
   creemos en uno de los objetivos fundamentales del Software Libre y
   lo apoyamos de manera incondicional.

   El codigo fuente de los programas registrados bajo la GNU General
   Public License (GPL) o la GNU Library General Public License
   (LGPL), se proporciona bajo las condiciones fijadas por esas
   licencias. Debido a complicaciones adicionales en el uso comercial
   de Software GPL, intentamos reemplazar ese software por otros
   registrados bajo la licencia FreeBSD,menos estricta y mas
   permisiva.

   1.3. ?Tiene la licencia FreeBSD alguna restriccion?

   Si. Las restricciones no controlan el uso del codigo. Cualquier
   duda puede ser contestada leyendo la licencia. Esta misma puede
   ser resumida de la siguiente manera:

     * No establecerse asi mismo como autor.

     * No culpar al proyecto en caso de no funcionar.

   1.4. ?Puede FreeBSD remplazar mi sistema operativo actual?

   Para la mayor parte de la gente, si. Aunque esta pregunta no se
   contesta tan facilmente.

   La mayoria de las personas no usa realmente un sistema operativo.
   Usan aplicaciones. Las aplicaciones son las que en realidad usan
   el sistema operativo. FreeBSD esta disenado para proveer un
   ambiente robusto y listo para aplicaciones. Soporta una gran
   variedad de exploradores de web, suites de oficina, lectores de
   correo electronico, programas de graficos, ambientes de
   programacion, servidores y casi todo lo que se desee. La mayor
   parte de estas aplicaciones pueden ser encontradas en la Coleccion
   de Ports.

   Si se requiere de una aplicacion solamente disponible para un
   sistema operativo, simplemente no puede cambiar ese sistema
   operativo. Aunque muy probablemente encuentre una aplicacion muy
   parecida en FreeBSD. Si lo que se desea es una solida oficina o un
   servidor de Internet, una estacion de trabajo confiable, o
   solamente la habilidad de trabajar sin interrupciones, FreeBSD
   seguramente hara lo que usted necesita. Una gran cantidad de
   usuarios alrededor del mundo, incluyendo novatos y usuarios de
   UNIX experimentados usan FreeBSD como su sistema operativo.

   Si se desea migrar a FreeBSD desde algun otro ambiente UNIX, usted
   ya sabe mas de lo que se necesita. Si su constumbre es un sistema
   operativo grafico como Windows o viejas versiones de Mac OS, usted
   tendra que invertir mas tiempo aprendiendo la forma en la que UNIX
   hace las cosas. Este FAQ y el FreeBSD Handbook son excelentes
   lugares donde empezar.

   1.5. ?Por que se llama FreeBSD?

     * Este sistema debe ser usado libremente, sin coste alguno
       incluso para fines comerciales.

     * El codigo fuente completo del sistema operativo es de libre
       distribucion, y se han establecido el menor numero posible de
       restricciones para su uso, distribucion e incorporacion a
       otras aplicaciones (comerciales o no).

     * Cualquier persona que tenga alguna sugerencia de mejora y/o
       "parche" de algun "bug", es libre de enviar el codigo y que
       este sea anadido al codigo fuente de la distribucion original
       (sujeto a una o dos condiciones obvias).

   Para todos nuestros lectores cuyo primer lenguaje no sea el
   ingles, aclaremos que la palabra "free" es usada en dos sentidos,
   uno significando "sin coste" y el otro "puedes hacer lo que
   quieras". Aparte de una o dos cosas que no puedes hacer con el
   codigo de FreeBSD, por ejemplo decir que lo has escrito, realmente
   puedes hacer lo que quieras con el.

   1.6. ?Cuales son las diferencias entre FreeBSD y NetBSD, OpenBSD y
   otros sistemas operativos BSD libres?

   James Howard escribio una buena explicacion para DaemonNews,
   acerca de la historia y las diferencias entre los diferentes
   proyectos, llamada The BSD Family Tree, la cual puede contestar
   esta pregunta.

   1.7. ?Cual es la ultima version de FreeBSD?

   La version 4.9R es la ultima -STABLE; fue declarada definitiva (a
   partir de ahora "release") en Diciembre de 2003.

   Brevemente explicado, -STABLE esta dirigido a proveedores de
   Internet y otros usuarios corporativos que quieren estabilidad y
   una sucesion tranquila en los cambios y actualizaciones a las
   nuevas versiones y sus mejoras. Solo debes usar la rama -CURRENT
   si estas seguro de estar preparado para su mayor "volatilidad"
   (relativa a -STABLE).

   Las versiones Release se hacen cada varios meses. Aunque mucha
   gente mantiene mas al dia los fuentes de FreeBSD (lee las
   preguntas en FreeBSD-CURRENT y FreeBSD-STABLE, ello esta pensado
   para gente que se considere preparada para seguir el desarrollo
   continuo del codigo fuente.

   1.8. ?Que es FreeBSD-CURRENT?

   FreeBSD-CURRENT es la version de desarrollo del sistema operativo,
   la cual acabara siendo la version FreeBSD-STABLE. Como es de
   suponer, esta version es de interes solo para los desarrolladores
   que trabajan en el sistema y "masoquistas" de la programacion.
   Mira la seccion correspondiente en el handbook para saber como
   funciona esta opcion.

   Si no estas familiarizado con el sistema operativo o no eres capaz
   de identificar la diferencia entre un problema real y un problema
   temporal, no deberias usar FreeBSD-CURRENT. Esta rama a veces
   avanza muy rapidamente y puede no ser compilable durante unos
   dias. La gente que usa FreeBSD-CURRENT es capaz de analizar los
   problemas y solo comunicarlos si son motivo de errores. Preguntas
   como "al ejecutar make world obtengo un error referente a grupos"
   en la lista de distribucion -CURRENT pueden quedar fuera de lugar.

   Una release snapshot corresponde al desarrollo de la rama
   -CURRENT; distribuciones en CDROM de esta version estan
   disponibles. Los objetivos de cada release snapshot son:

     * Comprobar la ultima version del software de instalacion.

     * Dar a la gente que le gustaria usar la version -CURRENT, pero
       que no tiene el tiempo suficiente para seguir el ritmo diario
       de actualizaciones, una manera facil de poder instalarla en su
       sistema.

     * Preservar un punto de referencia fijado en el codigo en
       cuestion, solo en caso de que ``rompamos'' algo realmente
       importante. (De todas maneras, el CVS normalmente previene de
       que cosas tan horribles como estas puedean suceder :)

     * Asegurar que las nuevas caracteristicas desarrolladas puedan
       ser comprobadas suficientemente por el mayor numero de gente.

   No se garantiza que ningun snapshot pueda ser considerado "calidad
   de produccion". Para conseguir estabilidad y un sistema
   garantizado, tendras que usar las versiones release.

   Las release snapshot estan directamente disponibles en
   ftp://current.FreeBSD.org/pub/FreeBSD/ y son generadas un promedio
   de una vez por dia para las ramas 4.0-CURRENT y 3.0-STABLE.

   1.9. ?Que significa FreeBSD-STABLE?

   Cuando la version de FreeBSD 2.0.5 fue declarada release,
   decidimos dividir el desarrollo de FreeBSD en dos ramas. Una rama
   fue llamada -STABLE, otra -CURRENT. FreeBSD-STABLE esta previsto
   para provedores de Internet y otras empresas para las que no
   resultan deseables cambios repentinos o experimentales.
   FreeBSD-CURRENT, por otra parte, ha sido la linea comun desde la
   release 2.0, llegando hasta 5.2.1-RELEASE (y mas alla). Se espera
   que 5-STABLE sea creado a la salida de 5.3-RELEASE y es entonces
   cuando FreeBSD-CURRENT pasara a ser 6-CURRENT. Aqui hay un pequeno
   grafico ASCII para ayudar a entender este sistema de desarrollo:

                  2.0
                   |
                   |
                   |  [2.1-STABLE]
  *BRANCH*       2.0.5 -> 2.1 -> 2.1.5 -> 2.1.6 -> 2.1.7.1  [2.1-STABLE termina]
                   |                            (Mar 1997)
                   |
                   |
                   |  [2.2-STABLE]
  *BRANCH*       2.2.1 -> 2.2.2-RELEASE -> 2.2.5 -> 2.2.6 -> 2.2.7 -> 2.2.8 [termina]
                   |       (Mar 1997)    (Oct 97) (Abr 98) (Jul 98) (Dic 98)
                   |
                   |
                3.0-SNAPs  (comenzado Q1 1997)
                   |
                   |
                3.0-RELEASE (Oct 1998)
                   |
                   |  [3.0-STABLE]
  *BRANCH*      3.1-RELEASE  (Feb 1999) -> 3.2 -> 3.3 -> 3.4 -> 3.5 -> 3.5.1
                   |                     (May 1999) (Sep 1999) (Dic 1999) (Junio 2000) (Julio 2000)
                   |
                   |  [4.0-STABLE]
  *BRANCH*        4.0  (Mar 2000) -> 4.1 -> 4.1.1 -> 4.2 -> 4.3 -> 4.4 -> ... later 4.X releases ...
                   |
                   |              (Julio 2000)   (Sep 2000)   (Nov 2000)
                5.0-RELEASE (Enero 2003)
                   |
                   |
                5.1-RELEASE (Junio 2003)
                   |
                   |
                5.2-RELEASE
                   |
                   |
                5.2.1-RELEASE (Febrero 2004)
                  \|/
                   +
           [5-CURRENT continua]

   La version 2.2-STABLE fue retirada con el release 2.2.8. La rama
   3-STABLE fue terminada con la release 3.5.1, la ultima release de
   3.X. Los unicos cambios que se le podrian hacer son arreglos en la
   seguridad.

   4-STABLE es actualmente el branch -STABLE en desarrollo. El ultimo
   release en branch 4-STABLE es 7.3-RELEASE, el cual fue hecho en
   March 2010.

   La rama 5-CURRENT progresa lentamente hacia la creacion de la rama
   5-STABLE. Ver ?Que es FreeBSD-CURRENT? para mas informacion sobre
   esta rama.

   1.10. ?Cuando se realizan las releases de FreeBSD?

   El Grupo de ingenieria de releases <re@FreeBSD.org> publica una
   nueva version de FreeBSD cada 4 meses aproximadamente. Las fechas
   de las nuevas versiones se anuncian por adelantado, con la
   finalidad de que los desarrolladores trabajando en el sistema
   sepan cuando deben terminar sus proyectos para ser probados e
   integrados en el sistema. Hay un periodo de prueba para cada
   release, para asegurar que los nuevos cambios introducidos en el
   sistema no comprometan la estabilidad de la version. Algunos
   usuarios califican esta precaucion como una de las mejores
   caracteristicas de FreeBSD, aunque esperar el alcance de -STABLE
   puede ser un poco frustrante.

   Mas informacion en el proceso de las releases (incluyendo fechas y
   releases futuras) puede ser encontrada en la pagina de release
   engineering.

   Para personas que quieran o necesiten mas emocion, diariamente se
   crean snapshots binarios de la misma manera.

   1.11. ?Quien es responsable de FreeBSD?

   Las decisiones clave concernientes al proyecto FreeBSD como la
   direccion a seguir y quien esta autorizado a anadir codigo a la
   distribucion original, se hace a traves de un grupo de unas 17
   personas llamado core team. Existe tambien un grupo de unas 150
   personas o committers que tambien estan autorizadas a realizar
   cambios directamente sobre la distribucion original.

   De todas maneras, la cambios importantes son discutidos en las
   listas de distribucion en las que no existen restricciones sobre
   quien participa en las discusiones.

   1.12. ?Donde puedo conseguir FreeBSD?

   Todas las versiones release de FreeBSD estan disponibles via ftp
   anonimo en el servidor FTP de FreeBSD:

     * Para la actual 3.X-STABLE release, 3.5.1-RELEASE mira en
       3.5.1-RELEASE.

     * La ultima 5.X release, 8.0-RELEASE puedes encontrarla en el
       directorio 8.0-RELEASE.

     * Para la actual 4-STABLE release, 8.0-RELEASE, mira en
       directorio 7.3-RELEASE.

     * 4.X snapshots son construidos diariamente.

     * 5.0 Snapshot releases son hechas una vez al dia a partir de la
       rama -CURRENT, siendo este un servicio puramente para
       desarrolladores.

   Mas informacion acerca de como obtener FreeBSD en CD, DVD, y otros
   medios en el Handbook .

   1.13. ?Como puedo instalar un mirror de FreeBSD?

   Puedes encontrar informacion acerca de como instalar un mirror de
   FreeBSD en el articulo Mirroring FreeBSD.

   1.14. ?Donde encuentro informacion sobre las listas de
   distribucion de FreeBSD?

   Puedes encontrar toda la informacion en la seccion de listas del
   Handbook.

   1.15. ?Donde encuentro informacion sobre el ano 2000 (Y2K) en
   FreeBSD?

   Tienes toda la informacion disponible en la pagina Y2K de FreeBSD

   1.16. ?Que grupos de noticias estan disponibles sobre FreeBSD?

   Puedes encontrar toda la informacion en la seccion de news del
   Handbook.

   1.17. ?Hay algun canal IRC (Internet Relay Chat) sobre FreeBSD?

   Si, muchas de las grandes redes de IRC tienen canales de chat de
   FreeBSD.

     * El canal #FreeBSD en EFNet es un forum de FreeBSD, pero no
       acudas alli para obtener soporte tecnico o contar tus penas
       sobre como leer las paginas man ;). Es un canal de chat, de
       principio a fin, y los temas que se tratan suelen ser cosas
       como sexo, deportes o armas nucleares. !Estas avisado!.
       Disponible en el servidor irc.chat.org.

     * El canal #FreeBSD en DALNET esta disponible en el servidor
       irc.dal.net en USA y irc.eu.dal.net en Europa.

     * El canal #FreeBSD en UNDERNET esta disponible en
       us.undernet.org en USA y eu.undernet.org en Europa. Igual que
       en EFNET, no hagas preguntas tecnicas. Es un canal de chat, no
       de soporte.

     * El canal #FreeBSD en HybNet. Este canal es un canal de ayuda.
       Puedes encontrar la lista de servidores en el website de
       HybNet.

   Cada uno de estos canales es diferente y no estan conectados entre
   ellos. Sus estilos de chat difieren, por lo que podris probarlos
   todos para ver cual te gusta mas.

   1.18. Libros sobre FreeBSD

   El libro de Greg Lehey's ``Installing and Running FreeBSD'' esta
   disponible en Walnut Creek y se vende con el CDROM 2.2.5. Hay
   tambien un libro mas completo titulado ``The Complete FreeBSD'',
   el cual tiene manuales adicionales e incluye el CDROM 2.2.6.
   Deberia estar disponible en las mejores librerias.

   Hay un proyecto de documentacion de FreeBSD con el que puedes
   contactar (o mejor, participar), en la lista de distribucion doc:
   <doc@FreeBSD.org>. En esta lista se tratan todos los temas
   referentes a la documentacion de FreeBSD. Para verdaderas
   preguntas sobre FreeBSD, existe la lista question:
   <questions@FreeBSD.org>.

   Esta disponible un ``manual'' (handbook a patir de ahora) de
   FreeBSD, y se puede encontrar en: El Handbook de FreeBSD. Ten en
   cuenta que este es un trabajo en constante desarrollo y
   actualizacion, por lo que algunas secciones podrian estar
   incompletas.

   Teniendo en cuenta que FreeBSD 2.2.x esta basado en la version
   Berkeley 4.4BSD-Lite2, la mayoria de manuales de 4.4BSD con
   aplicables a FreeBSD 2.2.x. O'Reilly y Asociados publican estos
   manuales:

     * 4.4BSD System Manager's Manual By Computer Systems Research
       Group, UC Berkeley 1st Edition June 1994, 804 pages ISBN:
       1-56592-080-5

     * 4.4BSD User's Reference Manual By Computer Systems Research
       Group, UC Berkeley 1st Edition June 1994, 905 pages ISBN:
       1-56592-075-9

     * 4.4BSD User's Supplementary Documents By Computer Systems
       Research Group, UC Berkeley 1st Edition July 1994, 712 pages
       ISBN: 1-56592-076-7

     * 4.4BSD Programmer's Reference Manual By Computer Systems
       Research Group, UC Berkeley 1st Edition June 1994, 886 pages
       ISBN: 1-56592-078-3

     * 4.4BSD Programmer's Supplementary Documents By Computer
       Systems Research Group, UC Berkeley 1st Edition July 1994, 596
       pages ISBN: 1-56592-079-1

   Una descripcion de estos puede ser encontrada via WWW en:

   Descripcion de libros sobre 4.4BSD

   Para profundizar mas en la organizacion del kernel de 4.4BSD, no
   puedes ir mal con los siguientes:

   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

   Un buen libro en administracion de sistemas es:

   Evi Nemeth, Garth Snyder, Scott Seebass & Trent R. Hein, ``Unix
   System Administration Handbook'', Prentice-Hall, 1995 ISBN:
   0-13-151051-7

   NOTA Asegurate de conseguir la segunda edicion, con cubierta roja
   y no la primera.

   Este libro cubre las necesidades basicas, asi como TCP/IP, DNS,
   NFS,SLIP/PPP, sendmail, INN/NNTP, impresion, etc,. Es caro,
   (aproximadamente unos US$45-$55), pero vale la pena. Tambien
   incluye un CD-ROM con los fuentes de varias herramientas, muchas
   de las cuales estan incluidas, tambien, en la version 2.2.6R
   (CDROM) de FreeBSD, incluso incluyendo versiones mas modernas.

   1.19. ?Como accedo a la base de datos de Problem Report?

   La base de datos de Problem Report puede ser consultada via web a
   traves de la direccion query. Tambien pueden ser enviados via web
   a traves de la direccion envio. El comando send-pr(1) tambien
   puede ser usado para el envio de reporte de problemas.

   1.20. ?Donde puedo obtener versiones ASCII/PostScript de la FAQ?

   La FAQ actualizada esta disponible en el servidor Web de FreeBSD o
   en cualquiera de los mirrors en formato PostScript y texto (7 bits
   ASCII y 8 bits Latin-1).

   Formato PostScript (unos 370KB):

     * http://www.FreeBSD.org/FAQ/FAQ.ps

   Formato ASCII (unos 220KB):

     * http://www.FreeBSD.org/FAQ/FAQ.ascii

   Formato texto ISO 8859-1 (unos 220KB):

     * http://www.FreeBSD.org/FAQ/FAQ.latin1

   1.21. ?Donde puedo obtener versiones ASCII/PostScript del
   Handbook?

   El Hansbook actualizado esta disponible en el servidor Web de
   FreeBSD o en cualquiera de los mirrors en formato PostScript y
   texto (7 bits ASCII y 8 bits Latin-1).

   Formato PostScript (unos 1.7MB):

     * http://www.FreeBSD.org/handbook/handbook.ps

   Formato ASCII (unos 1080KB):

     * http://www.FreeBSD.org/handbook/handbook.ascii

   Formato texto ISO 8859-1 (unos 1080KB):

     * http://www.FreeBSD.org/handbook/handbook.latin1

   1.22. El Handbook en ASCII no esta en texto plano!

   Cierto, las versiones ASCII y Latin1 del Handbook no estan
   estrictamente en formato de texto plano; contienen caracteres de
   control de impresion asumiendo que el documento sera enviado a una
   impresora. Si necesitas tenerlos en un formato leible, pasa el
   archivo por el programa col:

             
   $ col -b < inputfile > outputfile
             

   1.23. Me gustaria ser Mirror del web de FreeBSD!

   Hay multiples maneras de hacer mirror de las paginas web.

     * Usando CVSUP: Puedes obtener todo el contenido del web usando
       el programa CVSUP desde el servidor cvsup.FreeBSD.org. Anade
       esta linea a tu archivo de configuracion de cvsup:

       www release=current hostname=/home base=/usr/local/etc/cvsup
       prefix=/usr/local/www/data/www.FreeBSD.org delete old use-rel-suffix
                     

     * Usando rsync: Mira en la pagina de mirrors para mas
       informacion.

     * Usando mirror de FTP: Puedes bajarte la copia de los
       contenidos del web usando tu herramienta favorita de mirror de
       FTP. Simplemente empieza en
       ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/www.

   1.24. Me gustaria traducir la documentacion.

   Bueno, no podemos pagar, pero quizas te enviemos un CD-ROM o una
   camiseta y anadiremos tu nombre en la seccion ``Contributors'' del
   Handbook si nos envias una traduccion de la documentacion.

   1.25. Otras fuentes de informacion.

   Los siguientes grupos de news contienen temas relacionados con
   FreeBSD y sus usuarios:

     * comp.unix.bsd.FreeBSD.announce (moderada)

     * comp.unix.bsd.FreeBSD.misc

     * comp.unix.bsd.misc

   Recursos Web:

     * The FreeBSD Home Page.

     * Si tienes un portatil asegurate de pasar por Tatsumi
       Hosokawa's Mobile Computing page.

     * Informacion sobre SMP (Symmetric MultiProcessing), soporte de
       SMP.

     * Informacion sobre aplicaciones multimedia. Si estas interesado
       especificamente en el chip Bt848 de video captura, entonces
       sigue este link.

   El handbook de FreeBSD tiene una completa bibliografia en la
   seccion bibliografia la cual recomendamos leer si estas interesado
   en comprar libros actuales relacionados con estos temas.

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

                        Capitulo 2. Instalacion

   2.1. ?Que archivo necesito para instalar FreeBSD?

   2.2. !Ayuda!, La imagen del disco de arranque no cabe en un floppy

   2.3. ?Donde puedo encontrar las instrucciones de instalacion de
   FreeBSD?

   2.4. ?Que necesito para poder ejecutar FreeBSD?

   2.5. Solo tengo 4Mb de RAM. ?Puedo instalar FreeBSD?

   2.6. ?Como puedo hacer mi propio disco de instalacion?

   2.7. ?Puedo tener mas de un sistema operativo en mi PC?

   2.8. ?Puede Windows 95 coexistir con FreeBSD?

   2.9. Windows 95 desinstalo mi boot manager! ?Como lo recupero?

   2.10. ?Puedo instalar FreeBSD en un disco con sectores erroneos?

   2.11. Ocurren cosas extranas cuando arranco con el disco de
   instalacion

   2.12. !Ayuda! !No puedo instalar desde una cinta!

   2.13. Conexion de dos maquinas FreeBSD via puerto paralelo (PLIP)

   2.14. ?Puedo instalar FreeBSD en mi portatil sobre PLIP (Parallel
   Line IP)?

   2.15. ?Que geometria debo usar para mis discos?

   2.16. ?Existe alguna restriccion en como dividir el disco?

   2.17. ?Que hay sobre los ``disk managers''?

   2.18. Cuando arranco FreeBSD obtengo ``Missing Operating System''

   2.19. No puedo pasar del prompt `F?'.

   2.20. Tengo >16MB de RAM. ?Puede causar esto problemas?

   2.21. ?Necesito instalar todo el codigo fuente?

   2.22. ?Necesito crear un nuevo kernel?

   2.23. Vivo fuera de USA. ?Puedo usar la encriptacion DES?

   2.24. El ``boot disc'' arranca pero se cuelga en la pantalla
   ``Probing Devices...''

   2.25. Aparece el siguiente error ``panic: can't mount root'' al
   reiniciar el computador despues de la instalacion

   2.26. ?Cual es el limite de memoria?.

   2.27. ?Cual es el limite del sistema de archivos FFS?

   2.28. ?Como puedo poner archivos de 1TB en un disquete?

   2.29. He compilado un nuevo kernel y al arrancar aparece el error
   "archsw.readin.failed".

   2.1. ?Que archivo necesito para instalar FreeBSD?

   Generalmente solo es necesario un disco de 1,44Mb con una imgen
   del archivo floppies/boot.flp. Arranca con este disco para
   comenzar con el programa de instalacion, el cual se encargara de
   realizar todas las operaciones necesarias (gestion de TCP/IP,
   cintas, CDROMs, floppies, particiones DOS y cualquier cosa
   necesaria para realizar la instalacion).

   Si necesitas bajarte las distribuciones (para una instalacion
   desde una particion DOS por ejemplo), estas son las distribuciones
   minimas que necesitaras:

     * bin/

     * manpages/

     * compat*/

     * doc/

     * src/ssys.*

   Todas las instrucciones sobre este procedimiento y una ampliacion
   de la documentacion se puede encontrar en Instalacion de FreeBSD.

   2.2. !Ayuda!, La imagen del disco de arranque no cabe en un floppy

   Un floppy de 1.44MB puede contener hasta 1474560 bytes de datos.
   La imagen de arranque es exactamente de 1474560 bytes.

   Los errores mas comunes en la preparacion de disco de arranque
   son:

     * No bajarse la imagen en modo binario cuando se usa FTP.

       Algunos clientes FTP intentan bajar por defecto los archivos
       en modo ASCII e intentan cambiar los caracteres de final de
       linea recibidos por el que utilice el sistema cliente. Esto
       corrompera inevitablemente la imagen de arranque. Revisa el
       tamano de la imagen: si no es exactamente el mismo tamano del
       archivo existente en el servidor, la imagen no servira.

       Solucion: teclea binary en la linea de comandos del FTP
       despues de conectar y antes de empezar a bajar la imagen.

     * Usando el comando copy de DOS (o cualquier herramienta GUI
       equivalente) para transferir la imagen a un disquete.

       Programas como copy no funcionaran para la transferencia de la
       imagen a un disco. La imagen tiene el contenido completo del
       disco, pista por pista, y no esta pensada para ser trasladada
       a un disquete como un archivo normal. Tienes que hacer una
       transferencia ``raw'' usando herramientas de bajo nivel como
       fdimage o rawrite, descritas en la guia de instalacion de
       FreeBSD.

   2.3. ?Donde puedo encontrar las instrucciones de instalacion de
   FreeBSD?

   Las instrucciones de instalacion estan en Instalacion de FreeBSD.

   2.4. ?Que necesito para poder ejecutar FreeBSD?

   Necesitaras un PC con 386 o superior, 5 Mb o mas de memoria RAM y
   al menos 60 Mb de espacio en disco duro. Puede funcionar con
   tarjetas graficas de bajo nivel (Hercules), pero para poder
   ejecutar X11R6 es necesario una tarjeta VGA o superior.

   2.5. Solo tengo 4Mb de RAM. ?Puedo instalar FreeBSD?

   FreeBSD 2.1.7 fue la ultima version de FreeBSD que podia ser
   instalada en un sistema de 4Mb. Las nuevas versiones de FreeBSD,
   como la 2.2, necesitan al menos 5Mb para poder ser instaladas.

   Todas las versiones de FreeBSD, incluyendo la 3.0, funcionaran en
   sistemas con 4Mb de RAM, lo que no puedes ejecutar es la
   instalacion en sistemas con 4Mb. Puedes anadir memoria extra para
   el proceso de instalacion, y una vez instalado, volver a los 4Mb.
   Tambien puedes instalar tu disco en una maquina con mas de 4Mb,
   realizar la instalacion y reponer el disco en su maquina con 4Mb.

   Hay algunas situaciones en las que FreeBSD 2.1.7 no se instalara
   en sistemas con 4Mb. Para ser exactos: no se instalara con 640Kb
   de memoria base + 3Mb de memoria extendida. Si tu placa base puede
   remapear algo de la memoria ``perdida'' fuera de los 640Kb a la
   region de 1Mb, entonces aun podras instalar FreeBSD 2.1.7.

   Intenta entrar en el setup de tu BIOS y busca la opcion ``remap''.
   Activala. Quizas tendras que desactivar la opcion de ROM
   shadowing.

   Es mas facil anadir en la maquina 4Mb de memoria para la
   instalacion. Crea un kernel unicamente con las opciones que
   necesites y vuelve a quitar los 4Mb anadidos.

   Tambien puedes instalar la version 2.0.5 y a continuacion
   actualizar tu sistema a la 2.1.7 con la opcion ``upgrade'' del
   programa de instalacion de la version 2.1.7.

   Despues de la instalacion, si te creas un kernel personalizado,
   funcionara en 4Mb. Algunos fueron capaces de arrancar con 2Mb
   (aunque despues el sistema era incapaz de hacer nada mas :-))

   2.6. ?Como puedo hacer mi propio disco de instalacion?

   Realmente, no hay una manera para solo hacer un disco de
   instalacion personalizado. Hay algun codigo en
   /usr/src/release/floppies/Makefile que supuestamente es para hacer
   solo un disco de instalacion personalizado, pero no esta realmente
   testeado todavia.

   2.7. ?Puedo tener mas de un sistema operativo en mi PC?

   Echa un vistazo en La pagina multi-OS.

   2.8. ?Puede Windows 95 coexistir con FreeBSD?

   Instala primero Windows 95 y despues FreeBSD. El boot manager de
   FreeBSD se encargara de darte la opcion de arrancar con cualquiera
   de los dos sistemas. Si lo haces al reves, Windows 95 borrara el
   boot manager sin hacer ninguna pregunta previa. Si ocurre esto,
   pasa a la siguiente seccion.

   2.9. Windows 95 desinstalo mi boot manager! ?Como lo recupero?

   Puedes reinstalar el boot manager que viene con FreeBSD de dos
   maneras:

     * Ejecutando el DOS, entra en el directorio tools/ de tu
       distribucion de FreeBSD y busca el archivo bootinst.exe.
       Ejecutalo de la siguiente manera:

       bootinst.exe boot.bin

       Y el boot manager estara reinstalado.

       Arranca con el disco de instalacion de FreeBSD y entra en la
       seccion ``Custom Installation''. Selecciona ``Partition''.
       Escoge el disco en el cual debe estar instalado el boot
       manager, y cuando entres en el editor de particiones, sin
       hacer ningun cambio, selecciona (W)rite. Seras preguntado para
       confirmar la accion, responde ``si'', y cuando estes en la
       ventana de ``Boot manager selection'' asegurate de seleccionar
       ``Boot Manager''. Esto reescribira el boot manager en el
       disco. Ahora, sal del programa de instalacion y rearranca el
       computador de la manera habitual.

   2.10. ?Puedo instalar FreeBSD en un disco con sectores erroneos?

   La gestion de sectores erroneos por parte de FreeBSD no esta
   desarrollada todavia al 100% y desgraciadamente debemos decirte
   que si tienes discos IDE o ESDI con gran cantidad de sectores
   erroneos, FreeBSD no es para ti. De todas maneras, te aconsejamos
   que antes de descartar la instalacion, hagas un intento.

   2.11. Ocurren cosas extranas cuando arranco con el disco de
   instalacion

   Si observas cosas como que la maquina se ``cuelga'' o se
   reinicializa espontaneamente cuando intentas arrancar con el disco
   de instalacion, aqui tienes tres preguntas que debes responder tu
   mismo:

    1. ?Estas usando un disco nuevo, recien formateado y libre de
       errores, o estas usando el disco de publicidad que venia con
       la revista que lleva guardada varios meses debajo de la cama?

    2. ?Descargaste por ftp la imagen del disco en modo binario?...
       (no te preocupes ya que hasta el mejor de nosotros, por lo
       menos una vez, ha descargado un archivo en modo ASCII).

    3. Si estas usando uno de esos nuevos sistemas operativos como
       Windows 95 o Windows NT, debes arrancar la maquina en modo DOS
       puro, ya que parece ser que los Windows no se llevan bien con
       los programas que escriben directamente sobre los dispositivos
       hardware, como hace el programa de creacion de discos de
       instalacion de FreeBSD.

   Han habido informaciones referentes a problemas al bajar el disco
   de instalacion con Netscape, por lo que te recomendamos que uses
   un programa diferente como cliente de ftp.

   2.12. !Ayuda! !No puedo instalar desde una cinta!

   Si estas instalando la version 2.1.7R desde una cinta, debes crear
   esa cinta con un tamano de bloque de tar de 10 (5120 bytes). El
   tamano por defecto de los bloques tar es de 20 (10240 bytes), y
   las cintas creadas con este tamano por defecto no pueden ser
   usadas para instalar FreeBSD 2.1.7R; con estas cintas tendras un
   error referente a un tamano de registro demasiado grande.

   2.13. Conexion de dos maquinas FreeBSD via puerto paralelo (PLIP)

   Coge un cable de laplink y asegurate que ambos computadores tienen
   un kernel que soporta el puerto paralelo.

         
   $ dmesg | grep lp
   lpt0 at 0x378-0x37f irq 7 on isa
   lpt0: Interrupt-driven port
   lp0: TCP/IP capable interface
             

   Conecta el cable en los dos puertos paralelos.

   Configura los parametros de red para el interfaz lp0 (como root)
   en ambas maquinas. Por ejemplo, si quieres conectar la maquina max
   y moritz:

                    
   max <-----> moritz
   Direccion IP   10.0.0.1      10.0.0.2
             

   En el arranque de max

           
   # ifconfig lp0 10.0.0.1 10.0.0.2
             

   En el arranque de moritz

           
   # ifconfig lp0 10.0.0.2 10.0.0.1
             

   Esto es todo!!. Por favor, lee los man de lp(4) y lpt(4).

   Tambien deberias anadir las maquinas en el archivo /etc/hosts:

        
   127.0.0.1               localhost.my.domain localhost
   10.0.0.1                max.my.domain max
   10.0.0.2                moritz.my.domain moritz
             

   Para asegurarte que funciona haz:

   en max:

   $ 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
   moritz              max              UH          4   127592       lp0
             

   $ ping -c 4 moritz
   PING moritz (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

   --- moritz 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
             

   2.14. ?Puedo instalar FreeBSD en mi portatil sobre PLIP (Parallel
   Line IP)?

   Conecta los dos computadores usando Laplink mediante el puerto
   paralelo y usa las siguientes caracteristicas:

               
   +----------------------------------------+
   |A-name A-End   B-End   Descr.  Port/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 -            |
   +----------------------------------------+
             

   Mira tambien esta nota en la pagina de informatica movil.

   2.15. ?Que geometria debo usar para mis discos?

   (Por geometria de un disco, entendemos el numero de cilindros,
   cabezales y sectores por pista en el disco - de ahora en adelante
   nos referiremos por conveniencia a estos parametros como C/H/S.
   Asi es como trabaja el BIOS de los PC's para gestionar la
   lectura/escritura.

   Por alguna razon, esto parece crear mucha confusion. Ante todo, la
   geometria fisica de un disco SCSI es totalmente irrelevante ya que
   FreeBSD trabaja en terminos de bloques de disco. Con discos IDE,
   FreeBSD trabaja en terminos de C/H/S, pero todos los discos
   modernos convierten estos datos en referencias internas de
   bloques.

   Para discos SCSI, la geometria a usar depende de si tenemos
   activado en la controladora el soporte de translacion (comunmente
   conocido como "soporte para discos mayores de 1GB" o algo
   similar). Si esta opcion esta desactivada, entonces usa N
   cilindros, 64 cabezales y 32 sectores por pista, donde N es la
   capacidad del disco en MB. Por ejemplo, para un disco de 2GB, los
   parametros correctos serian 2048 cilindros, 64 cabezales y 32
   sectores.

   Si el soporte de translacion esta activado y la capacidad del
   disco es mayor de 1GB, usa M cilindros, 63 cabezales (*no* 64), y
   255 sectores, donde M es la capacidad del disco en MB dividida por
   7.844238. Para nuestro ejemplo de un disco de 2GB, los parametros
   serian 261 cilindros, 62 cabezales y 255 sectores.

   Si no estas seguro sobre los parametros a usar, o FreeBSD falla al
   detectar la geometria correcta del disco durante la instalacion,
   el metodo mas simple para solucionar este problema es crear una
   pequena particion DOS en el disco. Entonces, la geometria deberia
   ser detectada correctamente (y siempre puedes borrar esa particion
   desde el ``editor de particiones'' si no quieres mantenerla).

   Alternativamente, existe una utilidad de libre distribucion
   incluida en FreeBSD llamada pfdisk.exe (situada en el directorio
   tools del CD-ROM de distribucion o en cualquiera de los servidores
   ftp) que nos dice la geometria del disco usada por el sistema
   operativo DOS. Lo unico que tenemos que hacer es introducir los
   datos obtenidos en el editor de particiones de FreeBSD.

   2.16. ?Existe alguna restriccion en como dividir el disco?

   Si. Debes asegurarte de que la particion raiz esta por debajo del
   cilindro 1024, para que el BIOS pueda arrancar el kernel desde
   ella. (Esta es una limitacion del BIOS de los PCs, no de FreeBSD).

   Para discos SCSI, esto implica que la particion raiz debe estar
   instalada en los primeros 1024MB (o en los primeros 4096MB si la
   translacion extendida esta activada). Para discos IDE, la
   particion raiz debe estar en los primeros 504MB.

   2.17. ?Que hay sobre los ``disk managers''?

   FreeBSD reconoce el disk manager Ontrack. Otros disk managers no
   estan soportados.

   Si quieres usar el disco solo con FreeBSD no necesitas el disk
   manager. Solo configura el disco para el espacio maximo que pueda
   manejar el BIOS (usualmente 504MB), y FreeBSD se encargara de
   averiguar cuanto espacio tienes realmente. Si estas usando un
   disco antiguo con controladora MFM, necesitaras decirle
   explicitamente a FreeBSD cuantos cilindros puede usar.

   Si quieres usar el disco con FreeBSD y otro sistema operativo,
   todavia puedes hacerlo sin necesitar un disk manager; solo
   asegurate de que la particion raiz de FreeBSD y la particion de
   arranque del otro sistema operativo estan en los primeros 1024
   cilindros. Si eres cuidadoso, una particion raiz de 20MB deberia
   ser suficiente.

   2.18. Cuando arranco FreeBSD obtengo ``Missing Operating System''

   Esto es un clasico conflicto entre FreeBSD y DOS u otro sistema
   operativo sobre sus ideas de geometria.. Tendras que reinstalar
   FreeBSD, pero teniendo en cuenta la informacion que te damos mas
   arriba sobre este asunto.

   2.19. No puedo pasar del prompt `F?'.

   Este es otro problema descrito en el parrafo anterior. La
   geometria de tu BIOS y los datos de configuracion de FreeBSD no
   coinciden. Si tu controladora o BIOS soporta la translacion de
   cilindros (tambien conocido como "soporte para discos de mas de
   1GB"), intenta activar/desactivar esta opcion y reinstala FreeBSD.

   2.20. Tengo >16MB de RAM. ?Puede causar esto problemas?

   Aparte del rendimiento, no. FreeBSD 2.X tiene buffers que permiten
   al ``bus mastering controller'' acceder a mas de 16MB. (Esto solo
   es aplicable si estas usando dispositivos ISA).

   Tambien mira la seccion maquinas con >64M si tienes esta cantidad
   de memoria o si usas maquinas Compaq u otro BIOS que no da
   correctamente la cantidad de memoria disponible.

   2.21. ?Necesito instalar todo el codigo fuente?

   En general, no. De todas maneras, te recomendamos que instales,
   por lo menos, el kit de codigo fuente base, el cual incluye muchos
   de los archivos aqui mencionados, y el kit sys, que incluye el
   codigo fuente del kernel. No hay nada en el sistema que requiera
   el codigo fuente para funcionar, a excepcion del programa de
   configuracion de kernel config. Con la excepcion de las fuentes
   del kernel, nuestra estructura esta disenada para que puedas
   montar una unidad en solo lectura via NFS en la que exista el
   codigo fuente, y aun asi, ser capaz de compilar los nuevos
   binarios. (Debido a las restriciones de los fuentes del kernel,
   recomendamos que no montes estos en /usr/src directamente, sino en
   cualquier otra parte del disco con los links simbolicos apropiados
   para duplicar la estructura principal del arbol de directorios
   original),

   Teniendo los fuentes on-line y sabiendo como crear un sistema con
   ellas (compilar), te haremos mucho mas facil la actualizacion a
   futuras versiones de FreeBSD.

   Para seleccionar autenticamente un subconjunto del codigo fuente,
   usa la opcion Custom del menu desde el menu Distributions de la
   herramienta de instalacion. El script src/install.sh instalara
   solo partes de la distribucion del codigo fuente dependiendo de
   los parametros (argumentos) que se le pasen.

   2.22. ?Necesito crear un nuevo kernel?

   La creacion de un nuevo kernel era, originariamente, un paso
   requerido en la instalacion de FreeBSD, pero en las versiones mas
   recientes nos hemos beneficiado de la introduccion de una
   herramienta de configuracion de kernel mucho mas amigable. Cuando
   en el prompt de arranque de FreeBSD (boot:), usamos el parametro
   "-c", llegamos a una pantalla de configuracion visual la cual
   permite configurar las opciones del kernel para la mayoria de
   tarjetas ISA.

   Todavia es recomendable la creacion de un nuevo kernel conteniendo
   solo los drivers que nos sean necesarios para ahorrar un poco de
   RAM, pero no es estrictamente necesario para la mayoria de
   sistemas.

   2.23. Vivo fuera de USA. ?Puedo usar la encriptacion DES?

   Si no es absolutamente necesario que uses la encriptacion DES,
   puedes usar la encriptacion por defecto de FreeBSD para una mejor
   seguridad, y sin restricciones de importacion. La encriptacion por
   defecto de los passwords en FreeBSD esta basada en MD5, y es
   necesario un mayor uso intensivo de CPU con programas de
   descubrimiento de passwords que en DES. La unica razon para no
   usar hoy en dia la encriptacion MD5 seria usar un sistema de
   passwords compartidos entre sistemas FreeBSD y no FreeBSD.

   Puesto que el algoritmo de encriptacion DES no puede ser
   legalmente exportado fuera de USA, los usuarios externos a USA NO
   deberian descargar este software desde los servidores FTP situados
   en USA.

   Existe una alternativa para la biblioteca de encriptacion, basada
   en el codigo escrito en Australia por David Burren. Este codigo
   esta disponible en algunos mirrors de FreeBSD fuera de USA. El
   codigo fuente de la biblioteca de encriptacion, y los binarios de
   los programas que la usan pueden encontrarse en los siguientes
   servidores FTP:

   South Africa

           ftp://ftp.internat.FreeBSD.org/pub/FreeBSD
           ftp://storm.sea.uct.ac.za/pub/FreeBSD

   Brazil

           ftp://ftp.iqm.unicamp.br/pub/FreeBSD

   Finland

           ftp://nic.funet.fi/pub/unix/FreeBSD/eurocrypt

   Los usuarios de fuera de USA no deben descargar ningun software de
   encriptacion de servidores situados en USA, ya que de no seguir
   esta norma los responsables de esos servidores podrian verse
   envueltos en importantes problemas legales.

   Se esta desarrollando una distribucion no estadounidense de
   Kerberos, cuyas versiones actuales pueden obtenerse via ftp
   anonimo en braae.ru.ac.za.

   Existe tambien una lista de distribucion para la discusion de
   software de encriptacion externo a USA. Para mas informacion envia
   un e-mail con una simple linea diciendo "help en el cuerpo del
   mensaje a:

   <majordomo@braae.ru.ac.za>.

   2.24. El ``boot disc'' arranca pero se cuelga en la pantalla
   ``Probing Devices...''

   Si tienes instalado un ZIP o un Jaz IDE, desconectalo e intentalo
   de nuevo. El disco de arranque puede haberse confundido con los
   discos. Una vez el sistema este instalado, puedes volver a
   conectar los dispositivos. Esperamos que esto sea arreglado en las
   proximas releases.

   2.25. Aparece el siguiente error ``panic: can't mount root'' al
   reiniciar el computador despues de la instalacion

   Este error proviene de la confusion entre los bloques de arranque
   y lo que ve el kernel en los discos. El error se suele manifestar
   en sistemas con dos discos IDE, con los discos duros dispuestos
   como master o ''single'' en controladoras diferentes, estando
   FreeBSD instalado en la controladora IDE secundaria. Los bloques
   de arranque piensan que el sistema esta instalado en wd1 (el
   segundo disco en el BIOS) mientras el kernel asigna el primer
   disco de la controladora secundaria wd2. Despues de la deteccion
   de dispositivos, el kernel intenta montar lo que los bloques de
   arranque piensan que es el disco de arranque, wd1, cuando
   realmente es el wd2, y falla.

   Para solucionar el problema, haz una de las siguientes cosas:

    1. En el prompt de arranque (boot:), pon 1:wd(2,a)kernel y
       presiona Enter. Si el sistema arranca, ejecuta el comando:

       echo "1:wd(2,a)kernel" > /boot.config
                     

       para actualizar la cadena de arranque por defecto.
    2. Mueve el disco de FreeBSD a la controladora IDE primaria para
       que los discos sean consecutivos.

    3. Crea un nuevo kernel, modifica las lineas de configuracion de
       wd de la siguiente manera:

       controller      wdc0    at isa? port "IO_WD1" bio irq 14 vector wdintr
       disk            wd0     at wdc0 drive 0
       # disk          wd1     at wdc0 drive 1 # comment out this line

       controller      wdc1    at isa? port "IO_WD2" bio irq 15 vector wdintr
       disk            wd1     at wdc1 drive 0 # change from wd2 to wd1
       disk            wd2     at wdc1 drive 1 # change from wd3 to wd2
                     

       Instala el nuevo kernel: Si moviste los discos y quieres
       recuperar la configuracion previa, reemplaza los discos en la
       configuracion deseada y rearranca el sistema. Tu sistema
       deberia arrancar sin problemas.

   2.26. ?Cual es el limite de memoria?.

   Para memoria, el limite (teorico) es de 4 gigabytes. Un gigabyte
   ha sido comprobado y funciona sin problemas: generalmente no se
   pueden comprar equipos i386 que soporten mas cantidad de memoria.

   2.27. ?Cual es el limite del sistema de archivos FFS?

   Para sistemas de archivos FFS, el maximo teorico esta en 8
   terabytes (bloques de 2G), o 16TB para el tamano de bloque por
   defecto de 8K. En la practica hay un limite ``blando'' de 1
   terabyte, pero con pequeaas modificaciones son posibles (y
   existen) sistemas de archivos de 4 terabytes.

   El tamano maximo de un unico archivo FFS es aproximadamente de 1
   Gbloque (4TB) si el tamano del bloque es de 4K.

   maxfilesize
   ----------------------------------
                   2.2.7    3.0
   fs block size   -stable  -current  works  should-work
   -------------   -------  --------  -----  -----------
   4K              4T-1       4T-1    4T-1   4+T
   8K              32+G       8T-1    32+G   16T-1
   16K             128+G      16T-1   128+G  32T-1
   32K             512+G      32T-1   512+G  64T-1
   64K             2048+G     64T-1   2048+G 128T-1
             

   Cuando el tamano del bloque del sistema de archivos es de 4K, los
   bloques triple-indirectos funcionan y el limite total deberia
   venir determinado por el numero maximo de bloques que puede ser
   representado usando los bloques triple-indirectos (aproximadamente
   1K^3 + 1K^2 + 1K), pero el limite total lo establece un limite
   (incorrecto) de 1G-1 en el numero de bloques. El limite en el
   numero de bloques deberia ser de 2G-1, pero estos numeros de
   bloque son inalcanzables cuando los bloques del sistema de
   archivos son de 4K.

   2.28. ?Como puedo poner archivos de 1TB en un disquete?

   El tamano maximo de un archivo no depende directamente del tamano
   maximo del disco. El tamano maximo del disco es de 1TB. Es una
   ventaja que el tamano del archivo pueda ser mayor que el tamano
   del disco.

   El siguiente ejemplo crea un archivo con un tamano de 1TB usando
   32K de espacio de disco (3 bloques indirectos y 1 bloque de datos)
   en una pequena particion raiz.

   ttyv0:bde@alphplex:/tmp/q> cat foo
   df .
   dd if=/dev/zero of=z bs=1 seek=`echo 2^43 - 2 | bc` count=1
   ls -l z
   du z
   df .
   ttyv0:bde@alphplex:/tmp/q> sh foo
   Filesystem  1024-blocks     Used    Avail Capacity  Mounted on
   /dev/sd0a         64479    27702    31619    47%    /
   1+0 records in
   1+0 records out
   1 bytes transferred in 0.000187 secs (5346 bytes/sec)
   -rw-r--r--  1 bde  bin  8796093022207 Sep  7 16:04 z
   32      z
   Filesystem  1024-blocks     Used    Avail Capacity  Mounted on
   /dev/sd0a         64479    27734    31587    47%    /
   ttyv0:bde@alphplex:/tmp/q> exit
             

   Bruce Evans, septiembre de 1998

   2.29. He compilado un nuevo kernel y al arrancar aparece el error
   "archsw.readin.failed".

   Puedes arrancar especificando el kernel directamente en la segunda
   fase del boot, pulsando cualquier tecla cuando veas el simbolo |
   justo antes de que se arranque el cargador (loader). Mas
   especificamente, has actualizado los fuentes para tu kernel, y lo
   has creado y actualizado a partir de ellos sin hacer un ``make
   world''. Asi no funciona. Haz un ``make world''.

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

                  Capitulo 3. Compatibilidad hardware

   3.1. ?Que tipo de discos duros soporta FreeBSD?

   3.2. ?Que controladoras SCSI estan soportadas?

   3.3. ?Que lectores CD-ROM soporta FreeBSD?

   3.4. ?Soporta FreeBSD discos ZIP?

   3.5. ?Soporta FreeBSD JAZ, EZ y otros discos removibles?

   3.6. ?Que tarjetas serie multipuerto estan soportadas por FreeBSD?

   3.7. Tengo un tipo de raton no habitual. ?Como lo configuro?

   3.8. ?Como uso mi raton PS/2 (``mouse port'' o ``teclado'')?

   3.9. ?Es posible hacer uso del raton fuera de X Windows?

   3.10. ?Como hago un cut & paste con el raton en una consola de
   texto?

   3.11. Mi raton tiene una rueda de desplazamiento y botones. ?Puedo
   usarlo?

   3.12. ?Como uso el mouse/trackball/touchpad en mi portatil?

   3.13. ?Que tipo de dispositivos de cinta estan soportados?

   3.14. ?Soporta FreeBSD ``tape changers''?

   3.15. ?Que tarjetas de sonido estan soportadas por FreeBSD?

   3.16. No obtengo sonido de la tarjeta es1370 con driver pcm

   3.17. ?Que tarjetas de red soporta FreeBSD?

   3.18. No tengo coprocesador matematico - ?es malo?

   3.19. ?Que otros dispositivos soporta FreeBSD 2.X?

   3.20. ?Soporta FreeBSD la administracion de energia en mi
   portatil?

   3.21. Los sistemas Micron se bloquean al arrancar

   3.22. Tengo una de las controladoras Adaptec mas modernas y
   FreeBSD no puede encontrarla

   3.23. Tengo un modem interno Plug & Play y FreeBSD no lo encuentra

   3.24. ?Como obtengo el prompt ``boot:'' en una consola serie?

   3.25. ?Por que no funciona mi tarjeta de red PCI 3Com con mi
   computador Micron?

   3.26. ?Soporta FreeBSD el multiprocesamiento simetrico (SMP)?

   3.1. ?Que tipo de discos duros soporta FreeBSD?

   FreeBSD soporta discos duros EIDE y SCSI (con controladoras
   compatibles; mira en la siguiente seccion), y todos los discos que
   usen el interface original ``Western Digital'' (MFM, RLL, ESDI y
   por supuesto IDE). Algunas controladoras ESDI que usan interfaces
   propietarios quiza no funcionen correctamente.

   3.2. ?Que controladoras SCSI estan soportadas?

   FreeBSD soporta las siguientes controladoras SCSI:

   Adaptec

           AH-1505 <ISA> AH-152x Series <ISA> AH-154x Series <ISA>
           AH-174x Series <EISA> Sound Blaster SCSI (AH-152x compat)
           <ISA> AH-2742/2842 Series <ISA/EISA> AH-2820/2822/2825
           Series (Narrow/Twin/Wide) <VLB> AH-294x and aic7870 MB
           controllers (Narrow/Twin/Wide) <PCI> AH-394x
           (Narrow/Twin/Wide)

   Buslogic

           BT-445 Series <VLB> BT-545 Series <ISA> BT-742 Series
           <EISA> BT-747 Series <EISA> BT-946 Series <PCI> BT-956
           Series <PCI>

   Future Domain

           TMC-950 Series <ISA>

   PCI Generic

           NCR 53C81x based controllers <PCI> NCR 53C82x based
           controllers <PCI> NCR 53C860/75 based controllers <PCI>

   ProAudioSpectrum

           Zilog 5380 based controllers <ISA> Trantor 130 based
           controllers <ISA>

   DTC

           DTC 3290 EISA SCSI in AHA-154x emulation.

   Seagate

           ST-01/02 Series <ISA>

   UltraStor

           UH-14f Series <ISA> UH-24f Series <EISA> UH-34f Series
           <VLB>

   Western Digital

           WD7000 <ISA> <No scatter/gather>

   3.3. ?Que lectores CD-ROM soporta FreeBSD?

   Esta soportado cualquier disco SCSI conectado a una controladora
   soportada

   Los siguientes interfaces de CD-ROM propietarios tambien estan
   soportados:

     * Mitsumi LU002 (8bit), LU005 (16bit) and FX001D (16bit 2x
       Speed).

     * Sony CDU 31/33A

     * Sound Blaster Non-SCSI CD-ROM

     * Matsushita/Panasonic CD-ROM

     * ATAPI compatible IDE CD-ROMs

   Todas las tarjetas no SCSI son conocidas por ser extremadamente
   lentas comparadas con los discos SCSI, y algunos CDROM ATAPI quiza
   no funcionen correctamente.

   A partir de la version 2.2 de FreeBSD en CDROM de Walnut Creek se
   soporta el arranque directo (boot) desde el propio CD.

   3.4. ?Soporta FreeBSD discos ZIP?

   FreeBSD soporta los ZIP SCSI externos. Las unidades ZIP solo
   pueden funcionar en los ID's SCSI 5 y 6, pero si el BIOS de tu
   controladora lo soporta, puedes arrancar desde el. No sabemos que
   controladoras dejan arrancar desde ID's diferentes de la 0 o 1...
   mira en tu documentacion y hazmelo saber si te funciona.

   Los discos Zip ATAPI (IDE) estan soportados en FreeBSD 2.2.6 y
   releases posteriores.

   FreeBSD ha incluido el soporte de discos ZIP por puerto paralelo
   desde la version 3.0. Si estas usando una version actualizada,
   debes asegurarte de que tu configuracion del kernel incluye los
   drivers scbus0, da0, ppbus0 y vp0 (el kernel GENERIC los contiene
   todos excepto vp0). Con todos estos drivers presentes, el disco
   por puerto paralelo deberia estar disponible como /dev/da0s4. Los
   discos se pueden montar usando mount /dev/da0s4 /mnt o (para
   discos dos) mount_msdos /dev/da0s4 /mnt.

   Tambien mira en discos removibles, y esta nota en 'formatting'.

   3.5. ?Soporta FreeBSD JAZ, EZ y otros discos removibles?

   Aparte de la version IDE de EZ, todos estos son dispositivos SCSI,
   por lo que deberian funcionar sin problemas ya que FreeBSD los
   toma como discos SCSI y el IDE EZ tambien deberia funcionar sin
   problemas ya que se toma como un disco IDE estandar.

   No estoy seguro de como soporta FreeBSD el cambio de soporte
   mientras esta funcionando. Deberas, desde luego, desmontar la
   unidad antes de poder cambiar el soporte, y estar seguro de que
   todas las unidades externas estan encendidas antes de arrancar el
   computador con FreeBSD para que este pueda reconocerlas.

   Mira esta nota en 'formatting'.

   3.6. ?Que tarjetas serie multipuerto estan soportadas por FreeBSD?

   Hay una lista de ellas en la seccion dispositivos varios del
   manual (handbook).

   Algunas tarjetas ``sin nombre'' tambien han funcionado,
   especialmente las que dicen ser compatibles AST.

   Mira la pagina sio para obtener mas informacion sobre la
   configuracion de estas tarjetas.

   3.7. Tengo un tipo de raton no habitual. ?Como lo configuro?

   FreeBSD soporta el ``bus mouse'' y el ``InPort bus mouse'' de
   fabricantes como Microsoft, Logitech y ATI. El driver de mouse
   estia compilado en el kernel GENERIC (kernel por defecto que carga
   el sistema). Si estas haciendote un kernel a medida que incluya el
   driver de raton, asegurate de anadir la siguiente linea en el
   archivo de configuracion del kernel:

           
   device mse0 at isa? port 0x23c tty irq5 vector mseintr
             

   3.8. ?Como uso mi raton PS/2 (``mouse port'' o ``teclado'')?

   Si estas usando una version reciente de FreeBSD, el driver
   necesario, psm, esta incluido y activado en el kernel. El propio
   kernel deberia detectar tu raton PS/2 en el momento de arrancar.

   Si estas usando una version antigua, solo tienes que activarlo en
   la configuracion del kernel en el momento de la instalacion del
   sistema. Si este ya esta instalado, escribe -c en el prompt boot:
   y activalo. Por defecto, este driver esta desactivado.

   Si estas usando alguna de las versiones mas antiguas, tendras que
   anadir la siguiente linea en el archivo de configuracion del
   kernel y compilar uno nuevo:

           
   device psm0 at isa? port "IO_KBD" conflicts tty irq 12 vector psmintr
             

   Mira la seccion configuracion del kernel si no tienes experiencia
   en la creacion de nuevos kernel.

   Una vez que el kernel detecta correctamente el dispositivo psm0 al
   arrancar, asegurate de que existe una entrada en /dev para este
   dispositivo. Puedes hacerlo tecleando:

           
   cd /dev; sh MAKEDEV psm0
             

   3.9. ?Es posible hacer uso del raton fuera de X Windows?

   Si estas usando el driver por defecto de la consola, syscons,
   puedes usar el raton en las consolas de texto para realizar ``cut
   & paste''. Ejecuta el demonio (daemon) de raton moused y arranca
   el raton en la consola virtual:

           
   moused -p /dev/xxxx -t yyyy 
   vidcontrol -m on
             

   donde xxxx es el nombre del dispositivo del raton e yyyy es un
   tipo de protocolo para el raton. Mira en moused para saber los
   tipos de protocolo soportados.

   Si quieres ejecutar el demonio moused automaticamente al arrancar
   el sistema, activa las siguientes variables en /etc/sysconfig
   (para version 2.2.1).

   mousedtype="yyyy"
   mousedport="xxxx"
   mousedflags=""
             

   En versiones 2.2.2 o superiores, activa las siguientes variables
   en /etc/rc.conf.

   moused_type="yyyy"
   moused_port="xxxx"
   moused_flags=""
             

   A partir de la version 2.2.6, el demonio del raton es capaz de
   determinar automaticamente el protocolo correcto a utilizar. Solo
   tienes que especificar auto como el protocolo a usar.

   Cuando el demonio de raton esta funcionando, el acceso al raton
   necesita coordinarse con otros programas como X Window. Mira en
   esta seccion para mas informacion.

   3.10. ?Como hago un cut & paste con el raton en una consola de
   texto?

   Una vez que tengas el demonio del raton funcionando (mira la
   seccion anterior, pulsa el boton 1 (izquierdo) y mueve el raton
   para seleccionar la region de texto. A continuacion, pulsa el
   boton 2 (medio) o 3 (derecho) para hacer un paste (pegar) de la
   region seleccionada en el lugar en el que tengamos situado el
   cursor.

   En versiones 2.2.6 o superiores, pulsando el boton 2 hara un paste
   del texto seleccionado. Pulsando el boton 3 extenderemos la region
   seleccionada de texto. Si tu raton no tiene el boton medio, puedes
   emularlo o ``remapear'' (reconfigurar) los botones de tu raton con
   las opciones del demonio moused. Mira en moused para mas
   informacion.

   3.11. Mi raton tiene una rueda de desplazamiento y botones. ?Puedo
   usarlo?

   La respuesta es, desafortunadamente, ``depende''. Estos ratones
   con caracteristicas adicionales requieren en muchos casos drivers
   propios y especializados. A no ser que el driver de dispositivo o
   el programa de usuario tenga soporte especifico, el raton se
   comportara como un raton normal y corriente.

   3.12. ?Como uso el mouse/trackball/touchpad en mi portatil?

   Por favor, mira en la respuesta anterior. Mira tambien esta nota
   en la seccion de computadores portatiles.

   3.13. ?Que tipo de dispositivos de cinta estan soportados?

   FreeBSD soporta unidades SCSI, QIC-36 (con interfaz QIC-02) y
   QIC-40/80 (interfaz floppy). Esto inclye dispositivos de 8mm
   (conocidos como Exabyte) y dispositivos DAT. Los QIC-40/80 son
   conocidos por su lentitud.

   Algunos de los dispositivos de 8mm primitivos no son totalmente
   compatibles con SCSI2 por lo que puede que no funcionen
   correctamente en FreeBSD.

   3.14. ?Soporta FreeBSD ``tape changers''?

   FreeBSD 2.2 soporta SCSI changers usando el dispositivo ch y el
   comando chio. Los detalles acerca de como controlar realmente el
   changer se encuentran en chio.

   3.15. ?Que tarjetas de sonido estan soportadas por FreeBSD?

   FreeBSD soporta las tarjetas SoundBlaster, SoundBlaster Pro,
   SoundBlaster 16, Pro Audio Spectrum 16, AdLib y Gravis Ultrasound.
   Hay tambien soporte limitado para la tarjeta MPU-401 y compatibles
   midi. Las tarjetas SoundBlaster 16 ASP todavia no son soportadas.
   El Microsoft Sound System si esta soportado.

   NOTA: !Esto es solo para sonido! Este driver no soporta CD-ROMs,
   SCSI o joysticks en estas tarjetas, a excepcion de la
   SoundBlaster. El interface SCSI de SoundBlaster y algunos CD-ROMs
   no SCSI estan soportados, pero no podras arrancar el sistema desde
   ellos.

   3.16. No obtengo sonido de la tarjeta es1370 con driver pcm

   Puedes ejecutar el siguiente mandato cada vez que arranques el
   sistema:

   mixer pcm 100 vol 100 cd 100

   3.17. ?Que tarjetas de red soporta FreeBSD?

   Mira la seccion de tarjetas Ethernet en el manual para una lista
   mas completa.

   de driver

           DEC DC21x40 and compatible PCI controllers (including
           21140 100bT cards)

   ed driver

           NE2000 and 1000 WD/SMC 8003, 8013 and Elite Ultra (8216)
           3Com 3c503 HP 27247B and 27252A And clones of the above

   le driver

           DEC EtherWORKS II and EtherWORKS III controllers

   ie driver

           AT&T EN100/StarLAN 10 3COM 3c507 Etherlink 16/TP NI5210
           Intel EtherExpress

   is driver

           Isolan AT 4141-0 Isolink 4110

   el driver

           3com 3c501 (does not support Multicast or DMA)

   eg driver

           3com 3c505 Etherlink/+

   ze driver

           IBM PCMCIA credit card adapter

   lnc drive

           Lance/PCnet cards (Isolan, Novell NE2100, NE32-VL)(*)

   ep driver

           3com 3c509 (Must disable PNP support on card)

   cx driver

           Cronyx/Sigma multiport Sync/Async (Cisco and PPP framing)

   zp driver

           3Com PCMCIA Etherlink III (aka 3c589)(A-C only)

   fea driver

           DEC DEFEA EISA FDDI controller

   fpa driver

           DEC DEFPA PCI FDDI controller

   fe driver

           Fujitsu MB86960A/MB86965A Ethernet cards

   NOTA Los drivers marcados con (*) pueden tener problemas.

   NOTA: 3C598D NO esta soportada todavia.

   NOTA: FreeBSD tambien soporta TCP/IP sobre lineas paralelo. En
   estos momentos, no somos compatibles con otras versiones, pero
   esperamos corregirlo en un futuro cercano. Encontraras mas
   informacion sobre este tema en la pagina man de lp(4).

   NOTA: Algunas de estas tarjetas requieren una particion DOS en el
   disco duro para ejecutar el programa de configuracion.

   3.18. No tengo coprocesador matematico - ?es malo?

   NOTA: Esto solo afectara a los computadores 386/486SX/486SLC. El
   resto de los microprocesadores tienen un coprocesador integrado.

   En general, esto no causara problemas, pero hay circunstancias en
   las que pudieras echarlo de menos, especialmente si trabajas en
   entorno X Window. Si puedes, te recomendamos que compres uno y lo
   instales en tu computador.

   3.19. ?Que otros dispositivos soporta FreeBSD 2.X?

   Aqui hay una lista de drivers que no se han podido catalogar en
   las categorias anteriores.

   b004.c

           Driver for B004 compatible Transputer boards

   ``ctx'' driver

           Driver for CORTEX-I Frame grabber

   ``gp'' driver

           Driver for National Instruments AT-GPIB and AT-GPIB/TNT
           boards

   ``pca'' driver

           Driver for PC speakers to allow the playing of audio files

   ``spigot'' driver

           Driver for the Creative Labs Video Spigot

   gsc driver

           Driver for the Genuis GS-4500 Hand scanner

   joy driver

           Driver for a joystick

   labpc driver

           Driver for National Instrument's Lab-PC and Lab-PC+

   ``uart'' driver

           Stand-alone 6850 UART for MIDI

   psm driver

           PS/2 mouse port

   tw.c

           Driver for the X-10 POWERHOUSE

   3.20. ?Soporta FreeBSD la administracion de energia en mi
   portatil?

   FreeBSD soporta APM en algunas maquinas. Por favor, mira en el
   archivo de configuracion del kernel LINT y busca la parabra APM

   3.21. Los sistemas Micron se bloquean al arrancar

   Algunas placas base Micron tienen una implementacion de PCI en el
   BIOS que no es estandar, lo que provoca que FreeBSD no pueda
   encontrar los dispositivos PCI en las direcciones en las que
   deberian estar.

   Desactiva la opcion ``Plug and Play Operating System'' en el BIOS
   para solucionar el problema. Puedes encontrar mas informacion en:
   http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron

   3.22. Tengo una de las controladoras Adaptec mas modernas y
   FreeBSD no puede encontrarla

   Las nuevas controladoras Adaptec con chipset de la serie AIC789x
   estan soportados bajo la nueva CAM SCSI que hace su debut en la
   version 3.0 de FreeBSD. Los parches para las versiones 3.0-CURRENT
   y 2.2-STABLE estan en:
   ftp://ftp.FreeBSD.org/pub/FreeBSD/development/cam/. Un disco de
   arranque con soporte CAM esta disponible en:
   http://www.FreeBSD.org/~abial/cam-boot/. En ambos casos lee el
   archivo README antes de empezar.

   3.23. Tengo un modem interno Plug & Play y FreeBSD no lo encuentra

   Necesitaras anadir el ID del modem PnP a la lista de ID PnP en el
   driver serie. Para activar el soporte PnP, compila un nuevo kernel
   con controller pnp0 en el archivo de configuracion y rearranca el
   sistema. El kernel mostrara en pantalla los IDs de todos los
   dispositivos PnP que encuentre. Copia el ID del modem en la tabla
   del archivo /sys/i386/isa/sio.c, sobre la linea 2777. Busca la
   cadena "SUP1310" en la estructura "siopnp_ids[]" para encontrar la
   tabla. Genera un nuevo kernel, instalalo y rearranca. Tu modem
   deberia ser encontrado.

   Quiza tengas que configurar manualmente los dispositivos PnP
   usando el comando ``pnp'' en la configuracion de arranque usandolo
   de la siguiente manera:

      
   pnp 1 0 enable os irq0 3 drq0 0 port0 0x2f8
           

   3.24. ?Como obtengo el prompt ``boot:'' en una consola serie?

    1. Crea un nuevo kernel con options COMCONSOLE.

    2. Crea el archivo /boot.config y pon -P como unico texto en el
       archivo.

    3. Desconecta el teclado del computador.

   Mira el archivo /usr/src/sys/i386/boot/biosboot/README.serial para
   mas informacion.

   3.25. ?Por que no funciona mi tarjeta de red PCI 3Com con mi
   computador Micron?

   Algunas placas base Micron tienen una implementacion de PCI en el
   BIOS que no es estandar, lo que provoca que FreeBSD no pueda
   encontrar los dispositivos PCI en las direcciones en las que
   debieran estar.

   Para solucionar el problema, desactiva la opcion ``Plug and Play
   Operating System'' en el BIOS.

   Puedes encontrar mas informacion sobre este problema en
   http://cesdis.gsfc.nasa.gov/linux/drivers/vortex.html#micron

   3.26. ?Soporta FreeBSD el multiprocesamiento simetrico (SMP)?

   SMP solo esta soportado a partir de la version 3.0-STABLE

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

                         Capitulo 4. Problemas

   4.1. Tengo bloques erroneos en mi disco duro!

   4.2. FreeBSD no reconoce mi Bustek 742a EISA SCSI!

   4.3. Mi controladora SCSI HP Netserver's no es detectada!

   4.4. ?Que ocurre con la controladora IDE CMD640?

   4.5. Tengo mensajes como ``ed1: timeout''.

   4.6. Cuando monto el CDROM, obtengo ``Incorrect super block''.

   4.7. Cuando monto un CDROM, obtengo ``Device not configured''.

   4.8. Mi impresora es ridiculamente lenta. ?Que puedo hacer?

   4.9. Mis programas ocasionalmente mueren con errores ``Signal
   11''.

   4.10. Cuando arranco, la pantalla queda negra!

   4.11. Tengo 128MB de RAM pero el sistema solo usa 64MB.

   4.12. FreeBSD 2.0 aborta con ``kmem_map too small!''

   4.13. ``CMAP busy panic'' al arrancar con un nuevo kernel.

   4.14. ahc0: brkadrint, Illegal Host Access at seqaddr 0x0

   4.15. Sendmail dice ``mail loops back to myself''

   4.16. No funcionan correctamente las aplicaciones a pantalla
   completa en maquinas remotas

   4.17. Aparece el mensaje de error "calcru: negative time..."

   4.1. Tengo bloques erroneos en mi disco duro!

   Los discos SCSI deberian ser capaces de marcar estos bloques
   erroneos automaticamente para que no presenten problemas. Algunos
   discos, por alguna razon desconocida, se venden con esta
   caracteristica desactivada.

   Para activar esta opcion, tendras que editar una de las opciones
   del dispositivo, lo que puede ser hecho con FreeBSD tecleando el
   siguiente comando (como root):

           
   scsi -f /dev/rsd0c -m 1 -e -P 3
             

   y cambiando los valores de AWRE y ARRE de 0 a 1:-

           
   AWRE (Auto Write Reallocation Enbld):  1
   ARRE (Auto Read Reallocation Enbld):  1
             

   Para otros tipos de discos, dependes de las caracteristicas de los
   sistemas operativos. Desafortunadamente, el comando "bad144" que
   se incluye en FreeBSD, necesita ser desarrollado mas en
   profundidad.

   Se supone que los discos IDE incluyen de serie la posibilidad de
   "remapear" los bloques danados; si tienes documentacion de tu
   disco, podras ver si esta opcion esta activada o desactivada.

   4.2. FreeBSD no reconoce mi Bustek 742a EISA SCSI!

   Esta informacion es especifica para la tarjeta 742a, pero puede
   ser aplicable a otras tarjetas Buslogic. (Bustek = Buslogic)

   Existen dos versiones de la tarjeta 742a. Son revisiones de
   hardware A-G y H. La letra de revision esta situada despues del
   numero de ensamblaje. La 742a tiene 2 ROMs, una es el BIOS y la
   otra es el Firmware. FreeBSD no se fija en la version de BIOS de
   la tarjeta, pero si en la de Firmware. Buslogic te enviara una
   actualizacion de de las ROMs si te pones en contacto con su
   departamento tecnico. La BIOS y el Firmware son distribuidas de
   manera inseparable. Deberias tener la version de Firmware mas
   actualizada para la revision de hardware de tu tarjeta.

   Las tarjetas con revision A-G solo pueden aceptar BIOS/Firmware
   2.41/2.21. La revision H y superiores pueden aceptar las versiones
   mas actuales 4.70/3.37. La diferencia entre las versiones de
   Firmware es que la 3.38 soporta "round robin".

   Las tarjetas Buslogic tienen un numero de serie serigrafiado en
   ellas. Si tienes una revision de hardware antigua, puedes llamar
   al departamento de RMA de Buslogic y darles el numero de serie de
   la tarjeta para intentar cambiarla por una revision superior del
   hardware.

   FreeBSD 2.1 solo soporta revisiones de Firmware 2.21 o superiores.
   Si tienes una version inferior, tu tarjeta no sera reconocida como
   Buslogic. Quizas sea reconocida como una Adaptec 1540. Las
   primeras versiones de Firmware de Buslogic contienen una modo de
   emulacion de la AHA1540.

   Si tienes una revision de hardware antigua y consigues una mas
   actual (2.21), necesitaras chequear la posicion del jumper W1 y
   asegurarte que esta en la posicion B-C (por defecto esta en B-C).

   4.3. Mi controladora SCSI HP Netserver's no es detectada!

   Este es un problema ya conocido. Las controladoras SCSI EISA
   integradas en la placa base en las maquinas HP Netserver, ocupan
   el slot numero 11. El espacio de direcciones para los slots EISA
   >=10 colisionan con los espacios de direcciones asignados para los
   dispositivos PCI, y la autoconfiguracion de FreeBSD no maneja esta
   situacion demasiado bien.

   Lo mejor que puedes hacer es pretender que no existan clases de
   rangos de direcciones :), cambiando el valor de la opcion del
   kernel EISA_SLOTS a un valor de 12. Configura y compila un nuevo
   kernel como se describe en la entrada correspondiente del manual.

   Por supuesto, esto presenta un pequeno problema. Para poder
   solucionarlo, es necesario un truco en la utilidad de
   configuracion. No uses el interface "visual", simplemente teclea
   lo siguiente en la linea de comando de la utilidad

   eisa 12
   quit
             

   Esperamos que en las proximas versiones tengamos solucionados
   estos temas.

   4.4. ?Que ocurre con la controladora IDE CMD640?

   No funciona. No puede manejar comandos en los dos canales
   simultaneamente.

   Hay una solucion posible y se activa automaticamente si tu sistema
   usa este chip. Para mas detalles, referirse al man del driver de
   discos (man 4 wd).

   Si todavia estas usando FreeBSD 2.2.1 o 2.2.2 con una controladora
   IDE CMD640 y quieres usar el segundo canal, crea un nuevo kernel
   con options "CMD640" activada. Esta es la opcion por defecto en la
   version 2.2.5 y superiores.

   4.5. Tengo mensajes como ``ed1: timeout''.

   Esto, normalmente es causado por conflictos de interrupciones (por
   ejemplo, dos tarjetas usando la misma IRQ). Las versiones
   anteriores a la 2.0.5R eran tolerantes con los problemas de
   conflictos de IRQ. A partir de esa version, los conflictos de IRQ
   ya no son tolerados. Arranca con la opcion -c y cambia la entrada
   correspondiente a tu tarjeta.

   Si estas usando conectores BCN en tu tarjeta de red, el mensaje de
   error puede ser debido a una mala terminacion de la red. Para
   chequear esto, conecta un terminador directamente a la salida BNC
   de la tarjeta (sin cable) y mira si el mensaje desaparece.

   4.6. Cuando monto el CDROM, obtengo ``Incorrect super block''.

   Tienes que indicar el tipo de dispositivo que quieres montar. Por
   defecto mount asumira que el dispositivo que quieres montar es
   ``ufs''. Si quieres montar un CDROM, tienes que especificar -t
   cd9660. Esto hace que el sistema asuma que tiene que montar un
   sistema de archivos con formato ISO 9660 que es lo que los CDROM
   deben tener.

   Como ejemplo, si quieres montar una unidad CDROM, /dev/cd0c, bajo
   /mnt, tienes que ejecutar

   mount -t cd9660 /dev/cd0c /mnt
             

   Ten en cuenta que el nombre de tu dispositivo (/dev/cd0c en este
   ejemplo) puede ser diferente dependiendo del interface que estes
   usando. El comando anterior puede ser acortado tecleando:

   mount_cd9660 /dev/cd0c /mnt
             

   4.7. Cuando monto un CDROM, obtengo ``Device not configured''.

   Esto, generalmente, significa que no hay ningun disco en el lector
   de CDROM. Tambien puede significar que el lector no es visible
   para el bus. Chequea que esta bien configurado en lo referente a
   master/slave si es IDE (ATAPI).

   Algunas veces un CDROM SCSI puede "desaparecer" por que no ha
   tenido tiempo suficiente para responder a un reset del bus. Si
   tienes un CDROM SCSI, anade la siguiente linea en el archivo de
   configuracion del kernel y recompilalo.

   options "SCSI_DELAY=15"
             

   4.8. Mi impresora es ridiculamente lenta. ?Que puedo hacer?

   Si es paralelo, y el unico problema es la lentitud, intenta
   configurar el puero de impresora en modo "polled":

   lptcontrol -p
             

   Algunas impresoras nuevas de HP son conocidas por no trabajar
   correctamente en modo de interrupcion, aparentemente debido (y
   todavia no exactamente entendido), a un problema de "timing".

   4.9. Mis programas ocasionalmente mueren con errores ``Signal
   11''.

   Esto puede ser por hardware erroneo (memoria, placa base, etc).
   Intenta ejecutar algun programa de test de memoria. Ten en cuenta
   que es posible que tu memoria pase el test del programa que uses,
   pero que falle en algunas condiciones de uso, como en compilacion
   de kernel.

   La FAQ SIG11 (listada mas abajo) apunta a problemas de lentitud de
   memoria. Incrementa el numero de "wait states" en tu BIOS o
   instala una memoria mas rapida.

   Tambien puedes intentar desactivar el cache de placa base en el
   BIOS y comprueba si se resuelve el problema.

   Hay una extensa FAQ en the SIG11 problem FAQ

   4.10. Cuando arranco, la pantalla queda negra!

   Este es un problema conocido con las tarjetas de video ATI Mach
   64. El problema es que esta tarjeta usa la direccion 2e8, tambien
   usada por el puerto serie 4. Debido a un bug (feature?) en el
   driver sio.c , este "tocara" este puerto aunque no este instalado
   o este desactivado.

   Hasta que el problema sea fijado, puedes hacer esto:

    1. Teclea -c en el prompt de arranque. Esto te llevara a la
       seccion de configuracion del kernel.

    2. Desactiva sio0, sio1, sio2 y sio3 (todos ellos). De esta
       manera, el driver sio no se activa.

    3. Teclea exit para seguir arrancando.

   Si quieres ser capaz de usar tus puertos serie, tendras que
   compilar un nuevo kernel con la siguiente modificacion:
   /usr/src/sys/i386/isa/sio.c. Busca la cadena 0x2e8 y borra esta
   cadena y la coma anterior (manten la coma siguiente). Ahora,
   compila un nuevo kernel de la manera habitual.

   Despues de realizar estos cambios, puedes encontrarte aun que las
   X Window no funcionan correctamente. Algunas tarjetas de video
   modernas ATI Mach 64 (especialmente la ATI Mach Xpression) no
   funcionan con la version actual de XFree86; la pantalla se queda
   negra cuando arrancas las X o ocurren cosas extranas en su
   funcionamiento. Puedes instalar una version beta del nuevo
   servidor X que trabaja mejor, situada en el servidor XFree86 y
   seguir los links hasta el download. Coge los siguientes archivos:

   AccelCards, BetaReport, Cards, Devices, FILES, README.ati,
   README.FreeBSD, README.Mach64, RELNOTES, VGADriver.Doc,
   X312BMa64.tgz

   Reemplaza los viejos archivos por las nuevas versiones y asegurate
   de ejecutar de nuevo xf86config.

   4.11. Tengo 128MB de RAM pero el sistema solo usa 64MB.

   Debido a la forma que tiene FreeBSD de "ver" el tamano de memoria
   en el BIOS, solo puede detectar 16 bits (65535 Kbytes = 64MB) (o
   menos... algunas BIOS fijan el tamano de la memoria a 16MB).

   Para solucionar este problema, tienes que usar la opcion del
   kernel indicada mas adelante. Hay una manera de ver la informacion
   completa sobre memoria en el BIOS, pero no tenemos espacio en los
   bloques de arranque (bootblocks) para hacerlo. Por ahora, tenemos
   que trabajar con la opcion del kernel.

   options "MAXMEM=<n>"

   Donde n es tu memoria en Kilobytes. Para 128MB, tendrias que usar
   131072.

   4.12. FreeBSD 2.0 aborta con ``kmem_map too small!''

   Nota El mensaje deberia ser ``mb_map too small!''

   La parada indica que el sistema no tiene memoria virtual
   suficiente para los buffers de red (especificamente, clusters
   mbuf). Puedes incrementar la cantidad de memoria virtual
   disponible para los clusters mbuf anadiendo:

   options "NMBCLUSTERS=<n>"

   al archivo de configuracion del kernel, donde <n> es un numero en
   el rango 512-4096, dependiendo del numero de conexiones tcp
   simultaneas que necesites soportar. Te recomendamos intentar con
   2048. Puedes monitorizar el numero de clusters mbuf en uso con la
   orden netstat -m.

   4.13. ``CMAP busy panic'' al arrancar con un nuevo kernel.

   El programa que intenta detectar archivos /var/db/kvm_*.db puede
   fallar y provocar el "panic" en el arranque.

   Si esto ocurre, arranca en mono-usuario y haz:

   rm /var/db/kvm_*.db
             

   4.14. ahc0: brkadrint, Illegal Host Access at seqaddr 0x0

   Esto significa un conflicto con una controladora Ultrastor SCSI.

   Durante el proceso de arranque, entra en el menu de configuracion
   del kernel y desactiva el dispositivo uha0.

   4.15. Sendmail dice ``mail loops back to myself''

   Esto esta contestado en la FAQ de sendmail de la siguiente manera:

               * Tengo el error "Local configuration error" :

               553 relay.domain.net config error: mail loops back to myself
               554 <user@domain.net>... Local configuration error

               Como puedo solventar el problema?

               Has intentado enviar un mail al dominio domain.net y que sea
               reenviado a un host especifico (en este caso relay.domain.net)
               usando un registro MX, pero la maquina que tiene que aceptar
               ese mail, no reconoce el domimio como propio. Anade
               domain.net al archivo /etc/sendmail.cw (si estas usando
               FEATURE(use_cw_file) o anade "Cw domain.net" al archivo
               sendmail.cf
             

   La version actual de la FAQ de sendmail puede ser encontrada en
   comp.mail.sendmail, comp.mail.misc, comp.mail.smail, comp.answers,
   y news.answers. Tambien puedes recibir una copia enviando un mail
   a mail-server@rtfm.mit.edu con el comando "send
   usenet/news.answers/mail/sendmail-faq" en el cuerpo del mensaje.

   4.16. No funcionan correctamente las aplicaciones a pantalla
   completa en maquinas remotas

   Quizas la maquina remota tiene el tipo de terminal diferente de
   cons25 que es el usado por la consola de FreeBSD.

   Hay diferentes maneras de solucionar este problema:

     * Despues de hacer el login en la maquina remota, configura la
       variable SHELL como ANSI o sco.

     * Usa el emulador VT100 como screen local. screen te permite la
       posibilidad de ejecutar multiples y concurrentes sesiones
       desde un terminal.

     * Instala la base de datos del terminal cons25 en la maquina
       remota.

     * Lanza las X y haz el login en la maquina remota desde xterm.

   4.17. Aparece el mensaje de error "calcru: negative time..."

   Esto puede ser causado por varios problemas de hardware o software
   relacionados con las interrupciones. Utilizar TCP/IP sobre el
   puerto paralelo con un MTU muy grande es una buena manera de
   provocar este error. Las tarjetas graficas aceleradoras tambien lo
   pueden provocar, teniendo que revisar la interrupcion utilizada
   por la tarjeta.

   El efecto de este error es que los procesos mueren con el mensaje
   "SIGXCPU exceeded cpu time limit".

   Para FreeBSD 3.0 y posteriores desde el 29 de Noviembre de 1998:
   si el problema no puede fijarse de otra manera, la solucion es
   poner la variable sysctl a:

   sysctl -w kern.timecounter.method=1
             

   Esto puede significar un impacto en el rendimiento del sistema,
   pero considerando la causa del problema, probablemente no lo
   notaras. Si el problema persiste, manten la variable sysctl a uno
   y anade la opcion "NTIMECOUNTER" en tu kernel para aumentar su
   valor. Si finalmente llegas a un valor de "NTIMECOUNTER=20" el
   problema no esta resuelto, y las interrupciones estan demasiado
   saturadas para ofrecer un buen rendimiento.

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

                  Capitulo 5. Aplicaciones Comerciales

   NOTA Esta seccion esta todavia poco desarrollada, por lo que
   esperamos que las companias nos ayuden a completarla :) . El grupo
   de FreeBSD no tiene ningun interes financiero en ninguna de las
   empresas aqui listadas, simplemente estan como servicio publico (y
   creemos que el interes comercial por FreeBSD puede tener efectos
   muy positivos en la viabilidad a largo termino). Animamos a las
   empresas desarrolladoras de software que nos envien su informacion
   para ser incluidas en esta lista.

   5.1. ?Donde puedo obtener Motif para FreeBSD?

   5.2. ?Donde puedo conseguir CDE para FreeBSD?

   5.3. ?Hay algun servidor X comercial de altas prestaciones?

   5.4. ?Hay algun sistema de base de datos para FreeBSD?

   5.5. ?Puedo usar Oracle en FreeBSD?

   5.1. ?Donde puedo obtener Motif para FreeBSD?

   Contacta con Apps2go para una distribucion de Motif ELF 2.1 para
   FreeBSD.

   Esta distribucion incluye:

     * OSF/Motif manager, xmbind, panner, wsm.

     * Kit de desarrollo con uil, mrm, xm, xmcxx, includes y archivos
       Imake.

     * Librerias ELF estaticas y dinamicas (para usar con FreeBSD 3.0
       y posteriores).

     * Applets demostrativos.

   Asegurate de especificar que deseas la distribucion para FreeBSD
   cuando hagas el pedido. Tambien se distribuyen versiones para
   NetBSD y OpenBSD por Apps2go. La distribucion solo esta disponible
   por FTP.

   Mas informacion

           Pagina web de Apps2go

   o

           Ventas o Soporte

   o

           telefono (817) 431 8775 o +1 817 431-8775

   Contacta con Metro Link para obtener una distribucion de Motif 2.1
   ELF o a.out para FreeBSD.

   Esta distribucion incluye:

     * OSF/Motif manager, xmbind, panner, wsm.

     * Kit de desarrollo con uil, mrm, xm, xmcxx, includes y archivos
       Imake.

     * Librerias estaticas y dinamicas (especifica ELF para FreeBSD
       3.0 y superior o a.out para FreeBSD 2.2.8 o anterior).

     * Applets demostrativos.

     * Paginas man preformateadas.

   Asegurate de especificar que deseas la distribucion para FreeBSD
   cuando hagas el pedido. Tambien se distribuyen versiones para
   Linux por Metro Link. La distribucion esta disponible en CDROM o
   via FTP.

   Contacta con Xi Graphics para una distribucion de Motif a.out 2.0
   para FreeBSD.

   Esta distribucion incluye:

     * OSF/Motif manager, xmbind, panner, wsm.

     * Kit de desarrollo con uil, mrm, xm, xmcxx, includes y archivos
       Imake.

     * Librerias estaticas y dinamicas (para usar con FreeBSD 2.2.8 y
       anteriores).

     * Applets demostrativos.

     * Paginas man preformateadas.

   Asegurate de especificar que deseas la distribucion para FreeBSD
   cuando hagas el pedido. Tambien se distribuyen versiones para BSDI
   y Linux por Xi Graphics. La distribucion se hace en cuatro
   disquetes... en el futuro esto se cambiara por una version en
   CDROM unificada.

   5.2. ?Donde puedo conseguir CDE para FreeBSD?

   Contacta con Xi Graphics para la distribucion CDE 1.0.10 para
   FreeBSD. Incluye Motif 1.2.5, y puede ser usada con Motif 2.0.

   Este es un CDROM unificado para FreeBSD y Linux.

   Xi Graphics ya no vende el CDE para FreeBSD.

   KDE es un entorno grafico "open source" similar a CDE en muchos
   aspectos.

   5.3. ?Hay algun servidor X comercial de altas prestaciones?

   Si, Xi Graphics y Metro Link venden el producto Accelerated-X para
   FreeBSD y otros sistemas basados en Intel.

   La oferta de Metro Link es un servidor X de altas prestaciones que
   ofrece una facil configuracion usando el conjunto de herramientas
   "FreeBSD Package", soporte de multiples tarjetas de video
   concurrentes y solo se distribuye en formato binario desde su FTP.
   Mencionar que la oferta de Metro Link esta disponible por el
   razonable precio de $39.

   Metro Link tambien vende el Motif ELF y a.out para FreeBSD.

   Mas informacion

           Web de Metro Link

   o

           Ventas o Soporte.

   o

           Telefono (954) 938-0283 o +1 954 938-0283

   La oferta de Xi Graphics es un servidor X de altas prestaciones
   que ofrece una facil configuracion, soporte para multiples
   tarjetas de video concurrentes, y solo se distribuye en formato
   binario, en una distribucion en disquetes unificada para FreeBSD y
   Linux. Xi Graphics tambien ofrece un servidor X de altas
   prestaciones para computadores portatiles.

   Hay una distribucion demo para testear (version 5.0).

   Xi Graphics tambien vende el Motif y CDE para FreeBSD.

   Mass informacion

           Web de Xi Graphics WWW

   o

           ventas o Soporte

   o

           Telefono (800) 946 7433 o +1 303 298-7478.

   5.4. ?Hay algun sistema de base de datos para FreeBSD?

   Si!. Mira en la seccion Productos Comerciales del web de FreeBSD.

   Tambien te recomendamos que mires en la seccion Bases de Datos de
   la coleccion de Ports.

   5.5. ?Puedo usar Oracle en FreeBSD?

   Si. Las siguientes paginas te explican como configurar el Oracle
   de Linux en FreeBSD:

     * http://www.scc.nl/~marcel/howto-oracle.html

     * http://www.lf.net/lf/pi/oracle/install-linux-oracle-on-FreeBSD

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

                  Capitulo 6. Aplicaciones de usuario

   6.1. ?Donde estan las aplicaciones?

   6.2. ?Donde encuentro la libreria libc.so.3.0?

   6.3. Ghostscript tiene muchos errores con mi 386/486SX.

   6.4. Cuando ejecuto una aplicacion SCO/iBCS2, falla en socksys.

   6.5. ?Como configuro INN (Internet News) para mi maquina?

   6.6. ?Que version de Microsoft FrontPage debo usar?

   6.7. ?FreeBSD soporta Java?

   6.8. ?Porque no puedo compilar este port en mi maquina 3.x-stable?

   6.9. ?Donde encuentro ld.so?

   6.1. ?Donde estan las aplicaciones?

   Por favor, mira en la seccion de ports para obtener informacion
   sobre programas y aplicaciones que han sido portados a FreeBSD. En
   estos momentos la lista llega a los 1800 creciendo dia a dia, por
   lo que te recomendamos que la visites habitualmente o te
   subscribas a la lista de distribucion FreeBSD-announce para las
   actualizaciones periodicas de nuevas aportaciones.

   La mayoria de programas estan disponibles tanto para la rama 2.2
   como para la 3.x y 4.0, y muchos de ellos deberian funcionar en
   sistemas 2.1.x. Cada vez que se realiza una release de FreeBSD, se
   incluye un snapshot del arbol de aplicaciones en el directorio
   ports/.

   Tambien trabajamos con el concepto de "package", que es,
   esencialmente una distribucion binaria "zipada" con una pequena
   informacion extra que realiza la instalacion del programa
   automaticamente. Un package puede ser instalado y desinstalado
   facilmente sin tener que saber los detalles de archivos o
   configuraciones que esto conlleva.

   Usa el menu de instalacion de "packages" en /stand/sysinstall
   (bajo la opcion post-configuration del menu principal) o ejecuta
   el comando pkg_add(1) con el package que estas interesado en
   instalar. Los package pueden ser identificados por su extension
   .tgz. En la distribucion de CDROM existe un directorio
   packages/All en la que se encuentran todos los packages
   disponibles. Tambien pueden conseguirse en la red en los
   siguientes servidores:

   para 2.2.8-RELEASE/2.2-stable

           ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/i386/packages-2.2.8/

   para 3.4-release/3.4-stable

           ftp://ftp.FreeBSD.ORG/pub/FreeBSD/ports/i386/packages-3-stable/

   para 4.0-current

           ftp://ftp.FreeBSD.ORG/pub/FreeBSD/ports/i386/packages-4-current/

   o en tu mirror mas cercano.

   Ten en cuenta que no todos los ports estan disponibles como
   packages. Es siempre buena idea visitar periodicamente la
   direccion ftp.FreeBSD.org.

   6.2. ?Donde encuentro la libreria libc.so.3.0?

   Estas intentando ejecutar un package para version 2.2/3.x/4.0 en
   un sistema de version 2.1.x. Por favor, mira en la seccion
   anterior y usa el package adecuado para tu sistema.

   6.3. Ghostscript tiene muchos errores con mi 386/486SX.

   No tienes coprocesador matematico, verdad? Necesitaras anadir el
   emulador matematico en tu kernel; puedes hacerlo anadiendo lo
   siguiente en el archivo de configuracion del kernel:

   options GPL_MATH_EMULATE
             

   NOTA Necesitaras eliminar la opcion MATH_EMULATE.

   6.4. Cuando ejecuto una aplicacion SCO/iBCS2, falla en socksys.

   Primero necesitas editar el archivo /etc/sysconfig (o
   /etc/rc.conf) y en la ultima seccion cambiar la siguiente variable
   a YES:

           
   # Set to YES if you want ibcs2 (SCO) emulation loaded at startup
   ibcs2=NO
             

   El kernel caragara el modulo ibcs2 al arrancar.

   A continuacion necesitaras configurar /compat/ibcs2/dev de la
   siguiente manera

   lrwxr-xr-x  1 root  wheel         9 Oct 15 22:20 X0R@ -> /dev/null
   lrwxr-xr-x  1 root  wheel         7 Oct 15 22:20 nfsd@ -> socksys
   -rw-rw-r--  1 root  wheel         0 Oct 28 12:02 null
   lrwxr-xr-x  1 root  wheel         9 Oct 15 22:20 socksys@ -> /dev/null
   crw-rw-rw-  1 root  wheel   41,   1 Oct 15 22:14 spx
             

   Solo necesitas el socksys para ir a /dev/null e imitar la apertura
   y cierre de archivos. El codigo en -current gestionara el resto.
   Esto es mucho mas limpio que la manera en la que se hacia antes.
   Si quieres el driver spx para un conexion, define SPX_HACK cuando
   compiles el kernel.

   6.5. ?Como configuro INN (Internet News) para mi maquina?

   Despues de la instalacion del package o port de inn, un excelente
   lugar para empezar es Dave Barr's INN Page donde encontraras las
   FAQ de INN.

   6.6. ?Que version de Microsoft FrontPage debo usar?

   Usa el Port. Una version pre-parcheada para Apache esta disponible
   en la coleccion de ports.

   6.7. ?FreeBSD soporta Java?

   Si. Por favor, mira en http://www.FreeBSD.org/java/.

   6.8. ?Porque no puedo compilar este port en mi maquina 3.x-stable?

   Si utilizas una version de FreeBSD que ha quedado ligeramente
   anticuada con respecto a -stable o -current necesitaras el kit de
   actualizacion de ports disponible en
   http://www.FreeBSD.org/ports/. Si tienes una version actualizada,
   es posible que alguien haya modificado el port de manera que este
   compile en -current pero no en -stable. Por favor, envia un
   informe de error con el comando send-pr(1) ya que la coleccion de
   ports esta pensada para que funcione tanto en las ramas -stable
   como -current.

   6.9. ?Donde encuentro ld.so?

   Si quieres ejecutar aplicaciones a.out como Netscape en sistemas
   con formato de ejecucion ELF como FreeBSD 3.1-RELEASE o
   posteriores, necesitaras la libreria /usr/libexec/ld.so y algunas
   otras en formato a.out. Estas librerias estan incluidas en la
   distribucion compat22. Usa /stand/sysinstall o el script
   install.sh en el subdirectorio compat22 e instalala. Tambien
   deberian consultarse los archivos ERRATA de FreeBSD 3.1-R y 3.2-R.

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

                  Capitulo 7. Configuracion del Kernel

   7.1. Me gustaria personalizar mi kernel. ?Es dificil?

   7.2. La compilacion del kernel falla por "_hw_float is missing."

   7.3. Conflicto de interrupciones con tarjeta serie multi-port.

   7.4. ?Como activo el soporte para discos QIC-40/80?

   7.1. Me gustaria personalizar mi kernel. ?Es dificil?

   No!, primero, necesitas la distribucion completa de fuentes o, por
   lo menos, la distribucion de fuentes del kernel. De esta manera
   tienes los fuentes necesarios para crearte un nuevo kernel. Al
   contrario que muchos Unix comerciales, nosotros tenemos la
   politica de NO vender nuestro kernel en formato binario.

   La instalacion de los fuentes ocupa un poco mas de espacio, pero
   te permite consultar los fuentes del kernel en caso de dificultad
   o entender que esta ocurriendo realmente en la ejecucion del
   sistema.

   Una vez tienes instalada la distribucion completa de fuentes, o
   por lo menos la del kernel, haz lo siguiente como root:

    1. cd /usr/src/sys/i386/conf

    2. cp GENERIC MYKERNEL

    3. vi MYKERNEL

    4. config MYKERNEL

    5. cd ../../compile/MYKERNEL

    6. make depend

    7. make all

    8. make install

    9. reboot

   El paso 2 no es necesario si todavia tienes un archivo de
   configuracion del kernel de una release anterior de FreeBSD 2.X. -
   simplemente, copia el archivo antiguo y examinalo cuidadosamente
   para asegurar que no haya cambiado la sintaxis da algun driver, o
   haya alguno anticuado.

   Un buen archivo de configuracion para consultar es LINT, el cual
   contiene ejemplos documentados para todas las posibles opciones
   del kernel. El archivo de configuracion GENERIC se usa para crear
   el kernel "por defacto" que es el que estaras usando si no has
   creado ninguno nuevo.

   Si no necesitas hacer ningun cambio al archivo GENERIC, puedes
   saltar al paso 3, donde personalizas el kernel para tu sistema. El
   paso 8 solo debe ejecutarse si los pasos 6 y 7 se han realizado de
   manera satisfactoria. Esto copiara una imagen del nuevo kernel a
   /kernel y realizara una copia del antiguo kernel en /kernel.old.
   Es muy importante recordar esto por si el nuevo kernel falla en
   algun momento - puedes seleccionar kernel.old en el prompt de
   arranque. Al hacer un reboot, por defecto se cargara el nuevo
   kernel.

   Si la compilacion en el paso 7 falla por alguna razon, es
   recomendable que empieces desde el paso 4 substituyendo GENERIC
   por MYKERNEL. Si puedes generar el kernel GENERIC, significa que
   algo en tu archivo de configuracion es incorrecto (o has
   decubierto un bug). Si la compilacion del kernel GENERIC falla,
   posiblemente tengas los fuentes corruptos.

   Finalmente, si necesitas ver los mensajes originales de arranque
   del sistema para compilar un nuevo kernel, ejecuta el comando
   dmesg. Este comando debe imprimir en pantalla todos los mensajes
   producidos por el kernel al arrancar, los cuales te pueden servir
   en la configuracion de tu nuevo kernel.

   NOTA Recomendamos hacer un historial fechado de los kernel que
   vayas creando, de la manera kernel.YYMMDD una vez esten
   funcionando correctamente. De esta manera, si la proxima vez que
   juegues con el kernel algo no funciona, puedes arrancar desde el
   ultimo kernel correcto. Esto es especialmente importante si ahora
   estas arrancando desde una controladora no soportada por el kernel
   GENERIC (si, experiencia personal).

   7.2. La compilacion del kernel falla por "_hw_float is missing."

   Dejame adivinar. Has borrado npx0 de tu archivo de configuracion
   porque no tienes coprocesador matematico, no? Mal hecho :-) El
   dispositivo npx0 es OBLIGATORIO. Aunque no tengas coprocesador,
   debes incluir el dispositivo npx0

   7.3. Conflicto de interrupciones con tarjeta serie multi-port.

   Cuando compilo el kernel con drivers para tarjetas serie
   multipuerto, el sistema me dice que solo el primer puerto es
   testeado y el resto son obviados debido a conflictos de
   interrupcion. Como soluciono esto?

   El problema en este caso es que FreeBSD tiene codigo interno que
   evita caidas del sistema por conflictos de hardware o software. La
   manera de solucionar esto es dejar en blanco la entrada
   correspondiente a la irq en todos los puertos excepto en uno. Aqui
   tienes un ejemplo:

           #
           # Multiport high-speed serial line - 16550 UARTS
           #
           device sio2 at isa? port 0x2a0 tty irq 5 flags 0x501 vector siointr
           device sio3 at isa? port 0x2a8 tty flags 0x501 vector siointr
           device sio4 at isa? port 0x2b0 tty flags 0x501 vector siointr
           device sio5 at isa? port 0x2b8 tty flags 0x501 vector siointr
           

   7.4. ?Como activo el soporte para discos QIC-40/80?

   Necesitas "descomentar" la siguiente linea en el archivo generico
   de configuracion (o anadirla en tu propio archivo), anade un flags
   0x1 en la linea fdc y recompila.

   controller  fdc0  at isa? port "IO_FD1" bio irq 6 drq 2 flags 0x1 vector fdintr
   disk        fd0   at fdc0 drive 0                       ^^^^^^^^^
   disk        fd1   at fdc0 drive 1
   #tape       ft0   at fdc0 drive 2
   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
           

   A continuacion, crea un nuevo dispositivo llamado /dev/ft0
   entrando en el directorio /dev y ejecutando el comando:

           sh ./MAKEDEV ft0
           

   Para el primer dispositivo. ft1 para el segundo y asi para todos
   los dispositivos de este tipo que tengas.

   Tendras un dispositivo llamado /dev/ft0, al cual puedes escribir a
   traves de un programa especial de manejo llamado ft - mira el man
   en ft para mas detalles.

   Versiones anteriores a la -current tenian algunos problemas al
   encontrase con cintas en mal estado; si tienes problemas en los
   que parece que la cinta se rebovina siempre al llegar al mismo
   lugar, intenta utilizar la ultima version del programa ft que
   encontraras en /usr/src/sbin/ft en -current.

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

                 Capitulo 8. Administracion de sistema

   8.1. ?Donde estan los archivos de configuracion de arranque del
   sistema?

   8.2. ?Como anado un usuario facilmente?

   8.3. ?Como puedo anadir mi nuevo disco a FreeBSD?

   8.4. Tengo un nuevo disco removible, ?como lo uso?

   8.5. ?Como monto una particion secundaria DOS?

   8.6. ?Puedo montar otros sistemas de archivos bajo FreeBSD?

   8.7. ?Como puedo usar el "NT loader" para arrancar FreeBSD?

   8.8. ?Como arranco FreeBSD y Linux desde LILO?

   8.9. ?Como arranco FreeBSD y Linux usando BootEasy?

   8.10. ?Puede un disco "dedicado" provocar problemas?

   8.11. ?Como puedo anadir mas espacio de swap?

   8.12. Tengo problemas para poner en marcha mi impresora.

   8.13. Mi teclado no coincide con los caracteres de pantalla.

   8.14. Las cuotas de usuario no funcionan correctamente.

   8.15. Mi ccd no funciona correctamente

   8.16. ?Porque no puedo editar el disklabel en mi ccd?

   8.17. ?Soporta FreeBSD primitivas IPC System V?

   8.18. ?Como uso sendmail para envio de mail UUCP?

   8.19. ?Como configuro el correo para conexiones NO permanentes a
   Internet?

   8.20. Olvide el password de Root!!

   8.21. ?Como mantengo el control sobre Control-Alt-Delete?

   8.22. ?Como reformateo archivos de texto DOS a UNIX?

   8.23. ?Como puedo hace "kill" de procesos por nombre?

   8.24. ?Porque el su no me dejar ser root al no estar en el ACL?

   8.25. ?Como desinstalo Kerberos?

   8.26. ?Como anado pseudoterminales a mi sistema?

   8.27. ?Como puedo releer el archivo /etc/rc.conf y relanzar
   /etc/rc sin tener que hacer un reboot?

   8.28. ?Que es un sandbox?

   8.1. ?Donde estan los archivos de configuracion de arranque del
   sistema?

   De la version 2.0.5R a la 2.2.1R, el archivo principal de
   configuracion es /etc/sysconfig. Todas las opciones son
   especificadas en este archivo y otros como /etc/rc y
   /etc/netstart.

   Mira en el archivo /etc/sysconfig y cambia los valores para tu
   sistema. Este archivo esta comentado para ayudar en la
   configuracion

   En versiones posteriores a la 2.2.1 y 3.0 el archivo
   /etc/sysconfig fue renombrado como rc.conf. La sintaxis tambien
   fue retocada para ser mas descriptiva. El archivo /etc/netstart
   tambien fue renombrado como /etc/rc.network para que todos los
   archivos de configuracion puedan ser copiados con el comando cp
   /usr/src/etc/rc* /etc.

   /etc/rc.local existe como siempre y deberia ser usado para
   arrancar servicios locales adicionales como INN o programas
   propios.

   El archivo /etc/rc.serial es para la inicializacion de puertos
   serie.

   El archivo /etc/rc.i386 es para especificaciones propias de Intel,
   como la emulacion iBCS2 o la configuracion de la consola del
   sistema.

   A partir de la version 2.1.0R, tambien puedes tener un directorio
   en el que instalar archivos de arranque locales especificado en
   /etc/sysconfig (o /etc/rc.conf):

           # Localizacion de los archivos de arranque locales.
           local_startup=/usr/local/etc/rc.local.d
           

   Cada archivo acabado en .sh sera ejecutado en orden alfabetico.

   Si quieres asegurarte de un cierto orden en la ejecucion sin tener
   que cambiar todos los nombres de los archivos, puedes usar un
   esquema similar al siguiente con digitos al principio del nombre
   de cada archivo:

           10news.sh
           15httpd.sh
           20ssh.sh
           

   Puede ser visto como "malo" (o SysV :-)) pero nos provee de un
   esquema regular para programas anadidos localmente sin tener que
   hacer ediciones complicadas del archivo /etc/rc.local. Muchos de
   los ports/packages asumen que /usr/local/etc/rc.d es un directorio
   de arranque local.

   8.2. ?Como anado un usuario facilmente?

   Usa el comando adduser. Para opciones mas avanzadas, usa el
   comando pw

   Para borrar a un usuario, usa el comando rmuser.

   8.3. ?Como puedo anadir mi nuevo disco a FreeBSD?

   Consultar el Tutorial de Formateo de Discos en www.FreeBSD.org.

   8.4. Tengo un nuevo disco removible, ?como lo uso?

   Se trate de un disco removible como un ZIP o EA (o un floppy, si
   quieres usarlo de esta manera), o un nuevo disco duro, una vez
   instalado y reconocido por el sistema, y tengas tu
   cartridge/floppy/etc en su interior, las cosas son como para la
   mayoria de dispositivos.

   (esta seccion esta basada en Mark Mayo's ZIP FAQ)

   Si es un disco ZIP o floppy, y esta formateado en DOS, puedes usar
   el comando:

           
   mount -t msdos /dev/fd0c /floppy
           

   Si es un floppy, o este:

           
   mount -t msdos /dev/da2s4 /zip
           

   para un disco ZIP con la configuracion de fabrica.

   Para otros discos, mira como configurarlos usando fdisk o
   /stand/sysinstall.

   El resto de ejemplos seran para un disco ZIP en da2, el tercer
   disco SCSI.

   A no ser que se trate de un floppy o disco removible, lo que
   planeas compartir con otros usuarios, es aconsejable convertir el
   formato de archivos a BSD. Obtendras nombre de archivos largos,
   como minimo doblaras la velocidad de acceso del disco, y mucha mas
   estabilidad. Antes, necesitas rehacer las particiones. Puedes usar
   el comando fdisk o la utilidad /stand/sysinstall. Si es un disco
   pequeno que quieres dedicar enteramente a FreeBSD, solo tienes que
   eliminar la FAT y tabla de particiones, y usar el sistema de
   particiones de FreeBSD:

           
   dd if=/dev/zero of=/dev/rda2 count=2
   disklabel -Brw da2 auto
           

   Puedes usar el comando disklabel o /stand/sysinstall para crear
   multiples particiones BSD.

   Finalmente, crea un nuevo sistema de archivos:

           
   newfs /dev/rda2c
           

   y montalo:

           
   mount /dev/da2c /zip
           

   Seria una buena idea anadir una linea como esta en el archivo
   /etc/fstab para que solo tengas que teclear "mount /zip" las
   siguientes veces.

           
   /dev/da2c /zip ffs rw,noauto 0 0
           

   8.5. ?Como monto una particion secundaria DOS?

   Las particiones DOS secundarias se encuentran despues de TODAS las
   particiones primarias. Por ejemplo, si tienes una particion "E"
   como la segunda particion DOS en el segundo disco SCSI, necesitas
   crear los archivos especiales para el dispositivo 5 en /dev, y
   despues montar /dev/da1s5:

           
   # cd /dev
   # ./MAKEDEV da1s5
   # mount -t msdos /dev/da1s5 /dos/e
           

   8.6. ?Puedo montar otros sistemas de archivos bajo FreeBSD?

   Digital UNIX UFS CDROMs pueden ser montados directamente en
   FreeBSD. Montar particiones de disco de Digital UNIX y otros
   sistemas que soportan UFS puede ser mas complejo, dependiendo de
   los detalles de la particion de disco del sistema operativo en
   cuestion.

   Linux: 2.2 y posteriores soportan particiones ext2fs. Mira
   mount_ext2fs para mas informacion.

   NT: Existe un driver de solo lectura de NTFS para FreeBSD. Para
   mas informacion, mira este tutorial de Mark Ovens en
   http://www.users.globalnet.co.uk/~markov/ntfs_install.html.

   8.7. ?Como puedo usar el "NT loader" para arrancar FreeBSD?

   La idea general es que copies el primer sector de la particion
   root nativa de FreeBSD en un archivo en la particion DOS/NT.
   Asumiento que nombras a ese archivo como c:\bootsect.bsd puedes
   editar el archivo c:\boot.ini para conseguir algo como esto:

           
   [boot loader]
   timeout=30
   default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
   [operating systems]
   multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows NT"
   C:\BOOTSECT.BSD="FreeBSD"
   C:\="DOS"
           

   Este proceso asume que DOS, NT, FreeBSD o cualquier otro sistema
   ha sido instalado en sus respectivas particiones en el mismo
   disco. En nuestro caso, DOS y NT estan en la primera particion y
   FreeBSD en la segunda. Instalamos FreeBSD para arrancarlo desde su
   particion nativa y no desde el disco MBR.

   Monta un floppy formateado en DOS bajo la particion /mnt.

           
   dd if=/dev/rda0a of=/mnt/bootsect.bsd bs=512 count=1
           

   Rearranca en DOS o NT. Copia el archivo bootsect.bsd y/o el
   archivo bootsect.lnx del floppy a C:\. Modifica los atributos a
   boot.ini con:

           
   attrib -s -r c:\boot.ini
           

   Edita y anade las lineas apropiadas del boot.ini mostrado
   enteriormente de ejemplo, y vuelve a poner los atributos
   originales:

           
   attrib +s +r c:\boot.ini
           

   Si FreeBSD esta arrancando desde el MBR, restauralo desde el
   comando fdisk despues de reconfigurarlos para arrancar desde sus
   particiones nativas.

   8.8. ?Como arranco FreeBSD y Linux desde LILO?

   Si tienes FreeBSD y Linux en el mismo disco, solo tienes que
   seguir las instrucciones de instalacion de LILO para arrancar un
   sistema operativo no Linux. Brevemente, son estas:

   Arranca Linux, y anade las siguientes lineas en el archivo
   /etc/lilo.conf:

         
   other=/dev/hda2
   table=/dev/hda
   label=FreeBSD
           

   (Asumiendo que tu particion FreeBSD es conocida por Linux como
   /dev/hda2). A continuacion, ejecuta lilo como root y ya deberia
   estar.

   Si FreeBSD esta en otro disco, necesitas anadir
   ``loader=/boot/chain.b'' al archivo lilo.conf. Por ejemplo:

         
   other=/dev/sdb4
   table=/dev/sdb
   loader=/boot/chain.b
   label=FreeBSD
           

   En algunos casos necesitaras especificar el numero de disco en
   BIOS para que el cargador del boot funcione correctamente desde el
   segundo disco. Por ejemplo, si tu disco SCSI con FreeBSD es visto
   por el BIOS como disco 1, en el prompt del cargador de arranque
   necesitaras especificar:

         
   Boot: 1:da(0,a)/kernel
           

   En FreeBSD 2.2.5 y posteriores, puedes configurar boot(8) para que
   haga esto automaticamente.

   El Linux+FreeBSD mini-HOWTO es una buena referencia para las
   opciones de interoperabilidad entre FreeBSD y Linux.

   8.9. ?Como arranco FreeBSD y Linux usando BootEasy?

   Instala el LILO al inicio de la particion de arranque del Linux en
   lugar de hacerlo en el "Master Boot Record". Asi podras arrancar
   el LILO desde BootEasy.

   Si estas usando Windows-95 y Linux, tambien es recomendable hacer
   esto para simplificar el arranque de Linux en caso de que sea
   necesaria una reinstalacion del Windows-95 (ya que no quiere
   convivir con otros sistemas operativos en el mismo Master Boot
   Record).

   8.10. ?Puede un disco "dedicado" provocar problemas?

   El proceso de instalacion nos permite elegir dos metodos
   diferentes de particionar un disco. El sistema por defecto hace
   que el disco sea compatible con otros sistemas operativos en la
   misma maquina, usando las tablas de entrada de fdisk (llamadas
   "slices" en FreeBSD). Opcionalmente, podemos instalar un
   boot-selector que nos permite seleccionar el sistema operativo con
   el que queremos arrancar.

   Mientras este es el caso mas com&un para gente proveniente del
   mundo de PC, para la gente proveniente del mundo Unix y quienes
   quieren instalar una maquina para funcionar con FreeBSD y solo
   FreeBSD, es mas habitual usar el sistema de reservar todo el
   espacio del disco para un solo sistema operativo. Si seleccionas
   "A)ll FreeBSD" en el editor de fdisk de la utilidad sysinstall, y
   respondes la siguiente pregunta con "No", usaras este ultimo
   sistema. Ten en cuenta que usando este sistema no te permitira la
   instalacion de ningun otro sistema operativo o selector de
   arranque (boot manager).

   Entonces, ?por que se llama "peligroso"?. Un disco en este modo no
   contiene lo que las utilidades normales de un PC considerarian una
   tabla de particion de archivos valida. Dependiendo del diseno de
   estas aplicaciones, puede que danen el sector de arranque una vez
   entren en contacto con el disco. Por lo menos una BIOS Award usada
   por maquinas HP Netservers (pero no solo por ellos) es concocida
   por ignorar los disco duros que no contengan lo que el BIOS
   entiende por una tabla de archivos valida.

   Para volver un disco "peligrosamente dedicado" a formato estandar
   de PC, hay basicamente dos opciones. La primera es, escribes
   suficientes bytes NULL sobre el MBR para hacer que las siguientes
   instalaciones crean que estan en un disco sin usar. Puedes hacer
   esto asi:

           
   dd if=/dev/zero of=/dev/rda0 count=15
           

   Alternativamente, puedes hacer:

           
   fdisk /mbr
           

   que instalara un nuevo master boot record.

   8.11. ?Como puedo anadir mas espacio de swap?

   La mejor manera es incrementar el tamano de tu particion de swap,
   o usar esta excusa para anadir un otro disco nuevo.

   Anadir swap en discos separados hace las cosas mas rapidas que
   simplemente anadir swap en el mismo disco. Como ejemplo, si estas
   compilando codigo fuente en un disco, y el swap esta en otro
   disco, es mucho mas rapido que si el swap y la compilacion se
   realizaran en el mismo disco. Esto es cierto especificamente para
   discos SCSI.

   Los discos IDE no son capaces de permitir el acceso a ambos discos
   en el mismo canal al mismo tiempo (FreeBSD no soporta el modo 4,
   ya que todas las I/O de discos IDE son "programadas").

   Es realmente muy mala idea instalar el swap sobre NFS a no ser que
   trabajes en una red muy rapida con un muy buen servidor.

   Aqui hay un ejemplo para un archivo de swap de 64Mb /usr/swap0,
   piensa que puedes usar el nombre que quieras).

   Asegurate que el kernel esta compilado con la linea

           
   pseudo-device   vn 1   #Vnode driver (turns a file into a device)
           

   en tu archivo de configuracion. El kernel GENERIC la contiene.

    1. crea un vn-device

                 
       cd /dev
       sh ./MAKEDEV vn0
                   

    2. crea un swapfile (/usr/swap0)

                 
       dd if=/dev/zero of=/usr/swap0 bs=1024k count=64
                   

    3. activa el archivo de swap en /etc/rc.conf

                 
       swapfile="/usr/swap0"   # Set to name of swapfile if aux swapfile desired.
                   

    4. rearranca la maquina.

   Para activar el archivo de swap inmediatamente teclea

           
   vnconfig -ce /dev/vn0c /usr/swap0 swap
           

   8.12. Tengo problemas para poner en marcha mi impresora.

   Por favor, revisa la seccion de impresoras del manual. Cubre la
   mayoria de posibles problemas. Pasate por esta seccion.

   8.13. Mi teclado no coincide con los caracteres de pantalla.

   El programa de control de teclado tiene una opcion para cargar el
   mapa de teclado. En el directorio /usr/share/syscons/keymaps hay
   diferentes archivos de mapas de teclado. Selecciona el que
   corresponde a tu sistema y cargalo.

           
   kbdcontrol -l uk.iso
           

   Tanto el directorio /usr/share/syscons/keymaps como la extension
   .kbd son asumidas por la orden kbdcontrol.

   Esto puede ser configurado en /etc/sysconfig (o rc.conf). Mira los
   comentarios correspondientes en el propio archivo.

   En la version 2.0.5R y posteriores, todo lo referente a fuentes,
   teclado, etc esta en /usr/share/examples/syscons.

   Actualmente se soportan los siguientes mapas de teclado:

     * Belgian ISO-8859-1

     * Brazilian 275 keyboard Codepage 850

     * Brazilian 275 keyboard ISO-8859-1

     * Danish Codepage 865

     * Danish ISO-8859-1

     * French ISO-8859-1

     * German Codepage 850

     * German ISO-8859-1

     * Italian ISO-8859-1

     * Japanese 106

     * Japanese 106x

     * Latin American

     * Norwegian ISO-8859-1

     * Polish ISO-8859-2 (programmer's)

     * Russian Codepage 866 (alternative)

     * Russian koi8-r (shift)

     * Russian koi8-r

     * Spanish ISO-8859-1

     * Swedish Codepage 850

     * Swedish ISO-8859-1

     * Swiss-German ISO-8859-1

     * United Kingdom Codepage 850

     * United Kingdom ISO-8859-1

     * United States of America ISO-8859-1

     * United States of America dvorak

     * United States of America dvorakx

   8.14. Las cuotas de usuario no funcionan correctamente.

    1. No actives las cuotas en '/',

    2. Pon el archivo de cuotas en el sistema de archivos en el que
       se vayan a forzar las cuotas de usuario:

                 
       FS      QUOTA FILE
       /usr    /usr/admin/quotas
       /home   /home/admin/quotas
                 ...
                   

   8.15. Mi ccd no funciona correctamente

   El sintoma es:

           
   # ccdconfig -C
   ccdconfig: ioctl (CCDIOCSET): /dev/ccd0c: Inappropriate file type or format
   #
           

   Esto actualmente ocurre cuando estas intentando concatenar las
   particiones c'. El driver ccd requiere que la particion sea del
   tipo FS_BSDFFS. Edita la etiqueta del disco (disklabel) que estas
   intentando concatenar y cambia el tipo de particion a '4.2BSD'.

   8.16. ?Porque no puedo editar el disklabel en mi ccd?

   El sintoma es:

           
   # disklabel ccd0
   (it prints something sensible here, so let's try to edit it)
   # disklabel -e ccd0
   (edit, save, quit)
   disklabel: ioctl DIOCWDINFO: No disk label on disk;
   use "disklabel -r" to install initial label
   #
           

   Esto es porque el disklabel retornado por el ccd es actualmente
   uno que no corresponde con el real. Puedes resolver este problema
   escribiendo explicitamente:

           
   # disklabel ccd0 > /tmp/disklabel.tmp
   # disklabel -Rr ccd0 /tmp/disklabel.tmp
   # disklabel -e ccd0
   (ahora funcionara)
           

   8.17. ?Soporta FreeBSD primitivas IPC System V?

   Si, FreeBSD las soporta. Estas incluyen memoria compartida,
   mensajes y semaforos. Necesitas anadir las siguientes lineas en la
   configuracion de tu kernel para activarlas.

           
   options    SYSVSHM
   options    "SHMMAXPGS=64"   # 256Kb of sharable memory
   options    SYSVSEM          # enable for semaphores
   options    SYSVMSG          # enable for messaging
           

   Recompila e instala.

   NOTA: Quizas necesites incrementar SHMMAXPGS a un numero como 4096
   (16M) si quieres usar GIMP. 256K es suficiente para la memoria
   compartida en X11R6.

   8.18. ?Como uso sendmail para envio de mail UUCP?

   La configuracion de sendmail incluida en FreeBSD esta preparada
   para sistemas que conectan directamente con Internet. Los sistemas
   que quieran usar UUCP para el envio de mail deben utilizar otro
   archivo de configuracion.

   Retocar /etc/sendmail.cf manualmente esta considerado algo para
   puristas. La version 8 de sendmail incluye un nuevo sistema de
   configuracion llamado m4, en el cual la configuracion se realiza
   en un nivel mas alto. Deberias usar los archivos de configuracion
   situados en

           
   /usr/src/usr.sbin/sendmail/cf
           

   Si no instalaste tu sistema con el codigo fuente completo, el
   paquete de configuracion de sendmail esta en una distribucion
   aparte. Asumiendo que tienes tu CD-ROM montado, haz:

           
   cd /usr/src
   tar -xvzf /cdrom/dists/src/ssmailcf.aa
           

   No te preocupes, solo son unos cientos de kilobytes de tamano. El
   archivo README en el directorio cf puede servir como introduccion
   a la configuracion del m4.

   Para envio y recepcion va UUCP, te aconsejamos usar la opcion
   mailertable. Se basa en una base de datos que sendmail puede usar
   como base para tomar las decisiones de enrutado del mail.

   Primero tienes que crear tu archivo .mc. Estos archivos se
   encuentran en el directorio /usr/src/usr.sbin/sendmail/cf/cf. Si
   miras, encontraras algunos ejemplos. Asumiendo que tu archivo se
   llama foo.com, todo lo que necesitas hacer para convertirlo en un
   archivo sendmail.cf valido es:

           
   cd /usr/src/usr.sbin/sendmail/cf/cf
   make foo.cf
   cp foo.cf /etc/sendmail.cf
           

   Un archivo tipico .mc seria algo como:

           
             include(`../m4/cf.m4')
             VERSIONID(`Your version number')
             OSTYPE(bsd4.4)

             FEATURE(nodns)
             FEATURE(nocanonify)
             FEATURE(mailertable)

             define(`UUCP_RELAY', your.uucp.relay)
             define(`UUCP_MAX_SIZE', 200000)

             MAILER(local)
             MAILER(smtp)
             MAILER(uucp)

             Cw    your.alias.host.name
             Cw    youruucpnodename.UUCP
           

   Las opciones nodns y nocanonify previenen del uso del DNS durante
   el trafico de correo. La clausula UUCP_RELAY se necesita por
   razones imperiosas, no preguntes :). Simplemente pon un nombre de
   maquina de Internet que sea capaz de gestionar pseudo-dominios
   .UUCP; mas sencillo, entraras el mail relay de tu ISP.

   Una vez hayas hecho esto, necesitas el archivo llamado
   /etc/mailtertable. Un ejemplo tipico seria:

           
             #
             # makemap hash /etc/mailertable.db < /etc/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:sax
           

   Como puedes ver, esto es parte de un archivo real. Las tres
   primeras lineas manejan casos especiales donde el correo dirigido
   a un dominio no debe ser enviado a traves de la ruta por defecto,
   si no a traves de un UUCP vecino para acortar el path de envio. La
   siguiente linea gestiona el mail del dominio local para que sea
   enviado via SMTP. Finalmente, los vecinos UUCP son anotados en la
   parte .UUCP pseudo-domains, para poder sobreescribir las reglas
   por defecto. La ultima linea es siempre un punto, que indica el
   mail gateway hacia el resto del mundo. Todos los nombres de nodos
   detras de uucp-dom: deben ser vecinos validos UUCP.

   Como recordatorio de que este archivo debe ser convertido a una
   base de datos DBM antes de ser usada, la linea de comandos para
   realizar esta operacion esta puesta como un comentario al inicio
   del archivo. Siempre tienes que ejecutar este comando cada vez que
   realices algun cambio en tu mailtertable.

   Si no tienes la seguridad de que una ruta de correo vaya a
   funcionar correctamente, recuerda la opcion -bt de sendmail. Esta
   opcion arranca el sendmail en modo test; simplemente entra 0,
   seguido por la direccion de mail sobre la que quieres testear la
   ruta. La ultima linea te indica el agente interno, el host de
   destino y la direccion (posiblemente traducido). Sal de este modo
   tecleando Control-D.

           
             j@uriah 191% sendmail -bt
             ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
             Enter <ruleset> <address>
             > 0 foo@interface-business.de
             rewrite: ruleset  0   input: foo @ interface-business . de
             ...
             rewrite: ruleset  0 returns: $# uucp-dom $@ if-bus $: foo \
             < @ interface-business . de >
             > ^D
             j@uriah 192%
           

   8.19. ?Como configuro el correo para conexiones NO permanentes a
   Internet?

   Si tienes una direccion IP fija en la conexion, no necesitaras
   ajustar nada de lo que ya viene por defecto. Configura tu hostname
   como el nombre asignado a tu IP de Internet y sendmail hara el
   resto.

   Si tienes direcciones IP asignadas dinamicamente y usas una
   conexion ppp a Internet, probablemente tendras un buzon en el
   servidor de correo de tu proveedor. Supongamos que el dominio de
   tu proveedor es myisp.com, y tu nombre de usuario es user.
   Supongamos tambien que has llamado a tu maquina bsd.home y que tu
   proveedor te ha indicado que uses la maaquina relay.myISP.com como
   mail realy (gateway).

   Para poder recoger el correo de tu buzon necesitaras instalar un
   agente de recogida de correo. Fetchmail es una buena opcion ya que
   soporta diferentes protocolos. Normalmente se usa POP3. Puedes
   recoger automaticamente tu correo al realizar la conexion
   anadiendo la siguiente linea en el archivo /etc+ppp/ppp.linkup:

           
               MYADDR:
               !bg su user -c fetchmail
           

   Asumimos que tienes una cuenta para user en bsd.home. En el home
   directory de user en bsd.home, crea el archivo .fetchmailrc:

           
             poll myISP.com protocol pop3 fetchall pass MySecret;
           

   No hace falta decir que este archivo no debe ser "leible" por
   nadie excepto user ya que contiene el password MySecret.

   Para enviar el correo con la cabecera from: correcta, debes
   decirle al sendmail que use <user@myISP.com> en lugar de
   <user@bsd.home>. Tambien deberias decirle al sendmail que envie
   todo el correo saliente a traves de relay.myISP.com, para una
   transmision mucho mas rapida.

   El siguiente archivo .mc debe ser suficiente:

           
             VERSIONID(`bsd.home.mc version 1.0')
             OSTYPE(bsd4.4)dnl
             FEATURE(nouucp)dnl
             MAILER(local)dnl
             MAILER(smtp)dnl
             Cwlocalhost
             Cwbsd.home
             CwmyISP.com
             MASQUERADE_AS(`myISP.com')dnl
             FEATURE(allmasquerade)dnl
             FEATURE(masquerade_envelope)dnl
             FEATURE(nocanonify)dnl
             FEATURE(nodns)dnl
             define(SMART_HOST, `relay.myISP.com')
             DmmyISP.com
             define(`confDOMAIN_NAME',`myISP.com')dnl
             define(`confDELIVERY_MODE',`deferred')dnl
          

   Mira en la seccion anterior para los detalles de como convertir
   este archivo .mc en un sendmail.cf. No te olvides de rearrancar
   sendmail despues de cada actualizacion del archivo sendmail.cf.

   8.20. Olvide el password de Root!!

   Tranquilo!!!. Simplemenre rearranca tu sistema, teclea -s en el
   prompt de arranque para entrar en modo monousuario. En la pregunta
   sobre el shell a usar, pulsa ENTER. Aparecera un prompt #. Teclea
   mount -u / para remontar tu sistema de archivos en modo de
   lectura/escritura y a continuacion teclea mount -a para montar
   todos los sistemas de archivos. Ejecura passwd root para cambiar
   el password de root. Teclea exit para continuar normalmente con el
   arranque.

   8.21. ?Como mantengo el control sobre Control-Alt-Delete?

   Edita el mapa de teclado que estas usando para la consola y
   reemplaza las palabras boot por nop. El mapa de teclado por
   defecto es /usr/share/syscons/keymaps/us.iso.kbd. Por supuesto si
   usas otro mapa de teclado adecuado a tu pais, tendrias que
   editarlo.

   8.22. ?Como reformateo archivos de texto DOS a UNIX?

   Simplemente usando este comando de perl:

             perl -i.bak -npe 's/\r\n/\n/g' file ...
           

   file es el archivo a procesar. La modificacion se hace en el
   propio archivo dejando el original grabado con extension .bak.

   Alternativamente puedes usar el comando tr(1)

   tr -d '\r' < dos-text-file > unix-file

   dos-text-file es el archivo que contiene el texto DOS mientras que
   unix-file contendra la salida convertida. Este sistema puede ser
   mas rapido que usar perl.

   8.23. ?Como puedo hace "kill" de procesos por nombre?

   Usa killall(1).

   8.24. ?Porque el su no me dejar ser root al no estar en el ACL?

   El error proviene de sistema del autentificacion distribuida
   Kerberos. El problema no es fatal pero si molesto. Puedes ejecutar
   el comando su con la opcion -K, o desinstalar Kerberos como se
   describe en la siguiente seccion.

   8.25. ?Como desinstalo Kerberos?

   Para eliminar Kerberos del sistema, reinstala la distribucion bin
   de la release que estes usando. Si tienes el CDROM, puedes montar
   el cd (asumiremos que esta en /cdrom) y ejecutar:

             cd /cdrom/bin
             ./install.sh
           

   8.26. ?Como anado pseudoterminales a mi sistema?

   Si tienes muchos usuarios de telnet, ssh, X, o de consola,
   probablemente terminaras desbordando el numero de pseudoterminales
   del sistema. Aqui tienes como anadir mas:

    1. Compila e instala un nuevo kernel com la linea

             
                     pseudo-device pty 256
                   

       en el archivo de configuracion.

    2. Ejecuta el comando

           
                     # cd /dev
                     # ./MAKEDEV pty{1,2,3,4,5,6,7}
                   

       para crear 256 nodos de dispositivo para los nuevos
       terminales.

    3. Edita el archivo /etc/ttys y anade una linea para cada uno de
       los 256 terminales. Estas lineas deben seguir la estructura de
       las entradas existentes, algo como esto:

             
                     ttyqc none network
                   

       El orden de la designacion de letras es tty[pqrsPQRS][0-9a-v],
       usando una expresion regular.

    4. Rearranca el sistema con el nuevo kernel, y lo tendras listo
       para funcionar.

   8.27. ?Como puedo releer el archivo /etc/rc.conf y relanzar
   /etc/rc sin tener que hacer un reboot?

   Entra en modo monousuario y a continuacion vuelve a modo
   multiusuario.

   En la consola haz:

       
             # shutdown now
             (Nota: sin -r o -h)

             # return
             # exit
           

   8.28. ?Que es un sandbox?

   Sandbox es un termino de seguridad. Puede significar dos cosas:

     * Un proceso que es situado en el interior de una serie de muros
       virtuales disenados como prevencion e imposibilitar el acceso
       al sistema principal en caso de que alguien comprometa la
       seguridad de ese proceso.

       Se dice que el proceso es capaz de "jugar" entre los muros.
       Esto significa que se supone que nada de lo que haga el
       proceso referente a la ejecucion de codigo, puede ser capaz de
       romper los muros, asi no es necesario hacer auditorias
       detalladas de su codigo para poder conocer todo lo referente a
       los riesgos de seguridad del proceso.

       Los muros pueden, por ejemplo, un userid. Esta es la
       definicion usada en las paginas man de seguridad y del
       programa named.

       Veamos como ejemplo el servicio 'ntalk' (consultar
       /etc/inetd.conf). Este servicio solia ejecutarse con el userid
       de root. Ahora se ejecuta con el userid tty. El usuario tty
       esta disenado para ser usado como usuario sandbox,
       dificultando asi la tarea de un intruso que haya conseguido
       penetrar en el sistema a traves del servicio ntalk. De esta
       manera, el intruso solo puede afectar a los servicios,
       programas o procesos propiedad del usuario tty.

     * Un proceso que se ha situado en el interior de una simulacion
       de la maquina. Esto es mas hard-core. Basicamente, significa
       que alguien que sea capaz de penetrar en el proceso, creera
       que ha penetrado en el sistema principal, pero de hecho, ha
       penetrado en una simulacion de esa maquina y no puede
       modificar ningun dato real.

       El sistema mas comun de conseguir esto es crear un entorno
       simulado en un subdirectorio y ejecutar los procesos en ese
       subdirectorio mediante chroot (la raiz "/" para ese proceso es
       este directorio, no la raiz "/" real del sistema).

       Otro sistema habitual es montar un sistema de archivos de solo
       lectura y a continuacio,n crear un nivel de sistema de
       archivos por encima del anterior que de al proceso la
       sensacion de encontrarse en un sistema de archivos de
       lectura/escritura. El proceso creera que es capaz de escribir
       esos archivos, pero solo el proceso ve los efectos; otros
       procesos del sistema no ven absolutamente nada.

       Se intenta crear este tipo de sandbox totalmente transparentes
       para que el usuario (o intruso) no se de cuenta que esta en
       el.

   UNIX implementa dos tipos de sandboxes. Uno es a nivel de
   procesos, y el otro es a nivel de usuarios (userid).

   Cada proceso UNIX es totalmente independiente de cualquier otro
   proceso UNIX. Un proceso no puede modificar el espacio de
   direcciones de otro. Es diferente a los sistemas Windows en los
   que un proceso puede sobreescribir facilmente el espacio de
   direcciones de otro proceso, probocando una caida de la maquina.

   Un proceso UNIX es propiedad de un userid determinado. Si el
   userid no es el usuario root, este solo podra acceder a los
   procesos de su propiedad, evitando la intrusion en procesos
   ajenos. El userid tambien se usa como sistema de proteccion para
   datos grabados en disco.

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

       Capitulo 9. El sistema X Windows y las consolas virtuales

   9.1. Quiero ejecutar las X, ?como lo hago?

   9.2. ?Porque no funciona mi raton con las X?

   9.3. Los menus de X Window y cajas de dialogo no funcionan bien.

   9.4. ?Que es una consola virtual y como creo mas?

   9.5. ?Como accedo a las consolas virtuales desde X?

   9.6. ?Como arranco XDM desde el archivo /etc/ttys?

   9.7. Cuando arranco xconsole obtengo "Couldn't open console".

   9.8. Mi raton PS/2 no funciona bien en X.

   9.9. Mi raton PS/2 de MouseSystems no funciona.

   9.10. Cuando compilo una aplicacion X. imake no puede encontrar el
   archivo imake.tmpl. ?Donde esta?

   9.11. ?Como invierto los botones del raton?

   9.12. ?Como instalo un "splash screen" y donde los consigo?

   9.1. Quiero ejecutar las X, ?como lo hago?

   La manera mas facil es, simplemente, especificar que quieres usar
   las X durante el proceso de instalacion.

   Entonces, lee y sigue la documentacion de la herramienta
   xf86config, la cual te ayuda a configurar el sistema XFree86 sobre
   las caracteristicas propias de tu sistema (tarjeta de video ,
   raton, etc).

   Quizas te interesaria investigar y probar el servidor Xaccel,
   disponible a un precio muy razonable. Mira en la seccion Xi
   Graphics o Metro Link para mas detalles.

   9.2. ?Porque no funciona mi raton con las X?

   Si estas usando syscons (el driver de consola por defecto), puedes
   configurar FreeBSD para soportar un raton en cada consola virtual.
   Para evitar conflictos con las X, syscons soporta un dispositivo
   virtual llamado /dev/sysmouse. Todos los eventos recibidos desde
   el mouse real son escritos en el dispositivo sysmouse, usando el
   protocolo MouseSystems. Si quieres usar el raton en una o mas
   consolas virtuales y usar las X, te recomendamos la siguiente
   configuracion:

           
             /etc/rc.conf:
               moused_type=ps/2          # or whatever your actual type is
               moused_port=/dev/psm0     # or whatever your real port is
               moused_flags=

             /etc/XF86Config
               Section Pointer
                   Protocol "MouseSystems"
                   Device   "/dev/sysmouse"
                    .....
           

   Hay gente que prefiere usar /dev/mouse bajo X. Para que esto
   funcione, /dev/mouse debe estar lincado a /dev/sysmouse:

           
             # cd /dev
             # rm -f mouse
             # ln -s sysmouse mouse
           

   9.3. Los menus de X Window y cajas de dialogo no funcionan bien.

   Intenta desactivar la tecla Num Lock.

   Si tu tecla Num Lock esta activada por defecto al arrancar el
   sistema, deberias anadir la siguiente linea en la seccion Keyboard
   del archivo XF86Config.

           
             # Let the server do the NumLock processing.  This should only be
             # required when using pre-R6 clients
                 ServerNumLock
           

   9.4. ?Que es una consola virtual y como creo mas?

   Las consolas virtuales te permiten tener sesiones simultaneas en
   la misma maquina sin necesidad de tener montajes complicados como
   una red o ejecucion de X.

   Cuando el sistema arranca, mostrara el prompt de login en el
   monitor una vez finalizado el mismo. Puedes entonces teclear tu
   login y password y empezar a trabajar (o jugar), en la primera
   consola virtual.

   En algun momento, es probablemente querras iniciar otra sesion ,
   por ejemplo, para mirar la documentacion de un programa que estas
   ejecutando, o para leer el correo mientras esperas que termine una
   sesion ftp que tienes establecida. Solo haz Alt-F2 y encontraras
   un prompt un prompt de login esperandote en la segunda "consola
   virtual". Cuando quieras volver a la sesion original, solo tienes
   que pulsar Alt-F1.

   La instalacion por defecto de FreeBSD tiene tres consolas
   virtuales activadas, y Alt-F1, Alt-F2 y Alt-F3 cambian entre
   ellas.

   Para activar mas consolas virtuales, edita /etc/ttys y anade
   tantas entradas como consolas virtuales quieras a partir de ttyv4,
   despues del comentario "Virtual Terminals":

           
           # Edit the existing entry for ttyv3 in /etc/ttys and change
           # "off" to "on".
           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/libexec/getty Pc"         cons25  on secure
           ttyv9   "/usr/libexec/getty Pc"         cons25  on secure
           ttyva   "/usr/libexec/getty Pc"         cons25  on secure
           ttyvb   "/usr/libexec/getty Pc"         cons25  on secure
           

   Utiliza tantas consolas como quieras o necesites. Cuantas mas
   consolas tengas, mas recursos utilizas; esto puede ser importante
   si tienes 8MB de RAM o menos. Tambien te puede interesar cambiar
   el modo secure a insecure.

   NOTA IMPORTANTE si quieres usar un servidor X DEBES dejar, al
   menos, un terminal virtual sin usar (o desactivado).

   La manera mas facil de desactivar una consola es "apagarla". Por
   ejemplo, para desactivar el terminal 12, cambia esto:

           
             ttyvb   "/usr/libexec/getty Pc"         cons25  on secure
           

   por esto:

           
             ttyvb   "/usr/libexec/getty Pc"         cons25  off secure
           

   Si tu teclado solo tiene 10 teclas de funcion, tendras que acabar
   con:

           
             ttyv9   "/usr/libexec/getty Pc"         cons25  off secure
             ttyva   "/usr/libexec/getty Pc"         cons25  off secure
             ttyvb   "/usr/libexec/getty Pc"         cons25  off secure
           

   (Tambien puedes, simplemente, borrar estas lineas.)

   Una vez has editado el archivo /etc/ttys, el siguiente paso es
   asegurarte de que tienes suficientes dispositivos de terminales
   virtuales. La manera mas facil de hacerlo es:

           
             # cd /dev
             # ./MAKEDEV vty12                 # For 12 devices
           

   A continuacion, la manera mas facil de activar las consolas
   virtuales es rearrancar el sistema. Si, realmente no quieres
   rearrancarlo, puedes para el servidor de X Window y ejecutar (como
   root):

           
             kill -HUP 1
           

   Es imperativo que pares el servidor de X Window si esta
   funcionando, antes de ejecutar este comando. Si no lo haces,
   parecera que tu sistema esta parado/colgado despues de ejecutar el
   comando kill.

   9.5. ?Como accedo a las consolas virtuales desde X?

   Si la consola esta actualmente mostrando X Window, puedes usar
   Ctrl-Alt-F1, etc, para cambiar entre las consolas virtuales. Ten
   en cuenta que una vez pases de una consola X Window a un terminal
   virtual, solo tienes que usar la tecla Alf- para volver a conmutar
   entre terminales virtuales o volver a las X. No necesitas pulsar
   la tecla Ctrl. Si usas la tecla Ctrl para volver a las X en alguna
   de las releases antiguas, puedes encontrarte que la consola de
   texto esta bloqueada. Pulsa la tecla Ctrl de nuevo para
   desbloquearla.

   9.6. ?Como arranco XDM desde el archivo /etc/ttys?

   Existen dos escuelas sobre como arrancar el xdm . Una escuela
   arranca el xdm desde el archivo /etc/ttys usando el ejemplo dado,
   mientras que la otra simplemente arranca el xdm desde el archivo
   rc.local o desde un script X.sh en /usr/local/etc/rc.d. Ambos
   metodos son igualmente validos, y uno puede funcionar en
   situaciones que el otro no. En ambos casos el resultado es el
   mismo: el sistema X Window lanzara un prompt de login grafico.

   El metodo ttys tiene la ventaja de documentar en que vty se
   lanzaran las X pasando la responsabilidad de rearrancar el
   servidor X al hacer el logout al proceso init. El metodo rc.local
   hace mas facil terminar con el proceso xdm en caso de problemas
   con el servidor X.

   Si arrancamos desde rc.local, xdm debe ser arrancado sin
   argumentos (como un daemon). xdm debe arrancar DESPUES del proceso
   getty, o ambos entraran en conflicto bloqueando la consola. La
   mejor manera de evitar este problema es tener un script que
   retrase el arranque de xdm durante 10 segundos.

   Una version previa de esta FAQ decia que debias anadir el terminal
   virtual usado por las X al archivo
   /usr/X11R6/lib/X11/xdm/Xservers. Esto no es necesario: las X
   usaran el primer terminal virtual que encuentre libre.

   9.7. Cuando arranco xconsole obtengo "Couldn't open console".

   Si arrancas las X con startx, los permisos en /dev/console no
   seran cambiados, resultando en cosas como que xterm -C y xconsole
   no funcionen.

   Esto se debe a la manera en que son fijados los permisos de la
   consola. En un sistema multiusuario, podemos no querer que
   cualquier usuario pueda escribir en la consola de sistema. Para
   usuarios que realizan logins directamente desde una maquina con un
   VTY, existe el archivo fbtab para resolver estos problemas.

   Asegurate de que existe al menos una linea como esta sin comentar:

           
             /dev/ttyv0 0600 /dev/console
           

   Esta en /etc/fbtab y asegurara que cualquiera que realice un login
   en /dev/ttyv0 sera el propietario de la consola.

   9.8. Mi raton PS/2 no funciona bien en X.

   Tu raton y el driver de raton quizas esten fuera de
   sincronizacion.

   En versiones 2.2.5 y anteriores, conmutando entre sesiones X y
   sesiones de terminales virtuales, podia provocar una
   desincronizacion. Si el problema ocurre muy amenudo, deberias
   anadir la siguiente opcion en el archivo de configuracion de tu
   kernel y recompilarlo.

           
             options PSM_CHECKSYNC
           

   Mira la seccion creando un kernel si no tienes experiencia en
   compilar nuevos kernels.

   En versiones 2.2.6 y posteriores, el chequeo de sincronizacion es
   realizado de otra manera, y es estandar en el driver de raton
   PS/2. Aun asi, en casos extranos puedes llegar a ver mensajes de
   error de sincronizacion como este:

           
             psmintr: out of sync (xxxx != yyyy)
           

   y parecer que tu raton no funciona adecuadamente.

   Si esto ocurre, desactiva el codigo de chequeo de sincronizacion
   poniendo los flags del driver PS/2 a 0x100. Entra en UserConfig
   poniendo la opcion -c en el prompt de arranque:

           
             boot: -c
           

   Entonces, en la linea de comando de UserConfig, teclea:

           
             UserConfig> flags psm0 0x100
             UserConfig> quit
           

   9.9. Mi raton PS/2 de MouseSystems no funciona.

   Hemos recibido reportes de que algunos modelos de ratones PS/2 de
   MouseSystems solo trabajan si estan configurados en modo "alta
   resolucion".

   Desafortunadamente no hay solucion para versiones 2.0.x y 2.1.x.
   En versiones 2.2.x, aplica el siguiente parche en
   /sys/i386/isa/psm.c y compila un nuevo kernel.

   diff -u psm.c.orig psm.c
   @@ -766,6 +766,8 @@
        if (verbose >= 2)
     log(LOG_DEBUG, "psm%d: SET_DEFAULTS return code:%04x\n",
         unit, i);
   +    set_mouse_resolution(sc->kbdc, PSMD_RES_HIGH);
   +
    #if 0
        set_mouse_scaling(sc->kbdc);  /* 1:1 scaling */
        set_mouse_mode(sc->kbdc); /* stream mode */
           

   En versiones 2.2.6 o posteriores, especifica el flag 0x04 al
   driver PS/2 para poner el raton en modo de alta resolucion. Entra
   en UserConfig:

           
             boot: -c
           

   y en la linea de comandos teclea:

           
             UserConfig> flags psm0 0x04
             UserConfig> quit
           

   Mira en la seccion anterior para posibles causas de problemas con
   los ratones.

   9.10. Cuando compilo una aplicacion X. imake no puede encontrar el
   archivo imake.tmpl. ?Donde esta?

   Imake.tmpl es parte del package Imake, una aplicacion estandar de
   compilacion de X. Tanto Imake como headers y otros archivos
   necesarios para compilar aplicaciones X estan en la distribucion
   de programacion X. Puedes instalarla desde el sysinstall o
   manualmente desde los archivos de la distribucion X.

   9.11. ?Como invierto los botones del raton?

   Ejecuta el comando xmodmap -e "pointer = 3 2 1" desde el archivo
   .xinitrc o .xsession.

   9.12. ?Como instalo un "splash screen" y donde los consigo?

   Justo antes de la publicacion de FreeBSD 3.1 se anadio una nueva
   caracteristica que permite mostrar "splash screens" durante los
   mensajes de arranque del sistema. Los "splash screen" deben ser un
   bitmap de 256 colores (*.BMP) o ZSoft PCX (*.PCX). Ademas, deben
   tener una resolucion de 320x200 o inferior para poder trabajar en
   controladoras VGA estandares. Si se compila el soporte VESA en el
   kernel, se pueden usar bitmaps de hasta 1024x768. Recordar que el
   soporte de VESA requiere que la opcion VM86 sea compilada en el
   kernel. El soporte actual de VESA puede ser compilado directamente
   en el kernel con la opcion de configuracion VESA o cargando el
   modulo kld VESA durante el arranque.

   Para usar un "splash screen" necesitas modificar los archivos de
   inicio que controlan el proceso de arranque de FreeBSD. Estos
   archivos cambiaron con FreeBSD 3.2, asi que ahora existen dos
   maneras de cargar un "splash screen":

     * FreeBSD 3.1

       El primer paso es encontrar una version bitmap de tu "splash
       screen". La release 3.1 solo soporta bitmaps de Windows. Una
       vez hayas elegido tu "splash screen" copiala en
       /boot/splash.bmp. A continuacion necesitas tener un archivo
       /boot/loader.rc que contenga las siguientes lineas:

                   
                     load kernel
                     load -t splash_image_data /boot/splash.bmp
                     load splash_bmp
                     autoboot
                   

     * FreeBSD 3.2+

       Ademas de soportar los "splash screens" en formato PCX,
       FreeBSD 3.2 incluye un mejor sistema de configuracion del
       proceso de arranque. Si quieres, puedes usar el metodo
       senalado para FreeBSD 3.1. Si lo haces, y quieres usar PCX,
       reemplaza splash_bmp con splash_pcx. Si por el contrario
       quieres usar la nueva configuracion de arranque, necesitas
       crear un archivo /boot/loader.rc que contenga las siguientes
       lineas:

                  
                     include /boot/loader.4th
                     start
                   

       y otro archivo /boot/loader.conf que contenga lo siguiente:

                  
                     splash_bmp_load="YES"
                    bitmap_load="YES"
                   

       Esto asume que estas usando /boot/splash.bmp como tu "splash
       screen". Si quieres usar un archivo PCX, copialo a
       /boot/splash.pcx, crea un archivo /boot/loader.rc como se ha
       indicado anteriormente, y crea un /boot/loader.conf que
       contenga:

                  
                     splash_pcx_load="YES"
                     bitmap_load="YES"
                     bitmap_name="/boot/splash.pcx"
                   

   Ahora todo lo que necesitas es un "splash screen". Puedes navegar
   por una inmejorable galeria en
   http://www.cslab.vt.edu/~jobaldwi/splash/.

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

                        Capitulo 10. Networking

   10.1. ?Donde puedo encontrar informacion sobre "diskless booting"?

   10.2. ?Puede una maquina FreeBSD ser usada como router dedicado?

   10.3. ?Puedo conectar mi Win95 con Internet a traves de FreeBSD?

   10.4. ?Por que falla la compilacion del ultimo BIND del ISC?

   10.5. ?Soporta FreeBSD SLIP y PPP?

   10.6. ?Soporta FreeBSD NAT o Masquerading?

   10.7. No puedo crear el dispositivo /dev/ed0!

   10.8. ?Como puedo configurar alias de ethernets?

   10.9. ?Como hago para usar el otro puerto de una 3C503?

   10.10. Tengo problemas con NFS desde/hacia FreeBSD.

   10.11. ?Porque no puedo hacer NFS-mount desde Linux?

   10.12. ?Porque no puedo hacer NFS-mount desde una Sun?

   10.13. Tengo problemas usando ppp contra maquinas NeXTStep.

   10.14. ?Como activo soporte de IP multicast?

   10.15. ?Que tarjetas de red estan basadas en el chipset DEC PCI?

   10.16. ?Porque tengo que usar el FQDN para hosts en mi servidor?

   10.17. ``Permission denied'' para todas las operaciones de red.

   10.18. ?Cuanto tiempo retrasa IPFW el trafico?

   10.19. ?Como puedo redirigir peticiones de una maquina a otra?

   10.20. ?Donde puedo conseguir una herramienta de control de ancho
   de banda?.

   10.21. ?Porque aparece "/dev/bpf0: device not configured"?

   10.1. ?Donde puedo encontrar informacion sobre "diskless booting"?

   "Diskless booting" significa que una maquina FreeBSD sea arrancada
   sobre una red, y lea los archivos necesarios de un servidor y no
   desde su disco duro. Para mas detalles, por favor, lee la seccion
   diskless booting del manual

   10.2. ?Puede una maquina FreeBSD ser usada como router dedicado?

   Los estandares de Internet y las buenas practicas de ingenieria
   nos prohiben proveer el forward de paquetes en la distribucion
   estandar. Aun asi, puedes activar esta opcion cambiando la
   siguiente variable a YES en el archivo rc.conf:

           
             gateway_enable=YES          # Set to YES if this host will be a gateway
           

   Esta opcion pondra la variable sysctl net.inet.ip.forwarding a 1.

   En muchos casos tambien necesitaras ejecutar un proceso de rutado
   para indicar la existencia en la red de tu router; FreeBSD incluye
   el daemon estandar de rutado BSD routed, aunque en situaciones mas
   complejas quizas quieras usar GaTeD disponible en
   http://www.gated.org/

   Es nuestro deber advertirte que estando FreeBSD configurado de
   esta manera, no cumple completamente con todos los estandares de
   routers de Internet, pero es suficiente para uso ordinario.

   10.3. ?Puedo conectar mi Win95 con Internet a traves de FreeBSD?

   Tipicamente, la gente que pregunta esto tiene dos pc's en casa,
   uno con FreeBSD y otro con Win95; la idea es usar FreeBSD para
   conectar a Internet y luego ser capaz de acceder a Internet desde
   el computador con Windows 95. Este es realmente un caso especial
   de la pregunta anterior.

   Hay un util documento disponible que explica como configurar
   FreeBSD como un Router PPP

   NOTA: Esto requiere, al menos, tener dos direcciones IP fijas
   disponibles, y posiblemente tres o mas, dependiendo del numero de
   maquinas que quieras conectar. Como alternativa, si no tienes una
   direccion IP fija, puedes usar una de las subredes privadas e
   instalar un proxy como SQUID y The TIS firewall toolkit en tu
   FreeBSD.

   Mira tambien la seccion natd.

   10.4. ?Por que falla la compilacion del ultimo BIND del ISC?

   Hay un conflicto entre el archivo cdefs.h incluido en la
   distribucion de BIND y el distribuido con FreeBSD. Solo tienes que
   borrar compat/include/sys/cdefs.h.

   10.5. ?Soporta FreeBSD SLIP y PPP?

   Si. Mira las paginas man de slattach, sliplogin, pppd y ppp. pppd
   y ppp soportan conexiones entrantes y salientes. Sliplogin trabaja
   exclusivamente con conexiones entrantes y slattach con conexiones
   salientes.

   Estos programas son descritos en las siguientes secciones del
   manual:

     * Handbook entry on SLIP (server side)

     * Handbook entry on SLIP (client side)

     * Handbook entry on PPP (kernel version)

     * Handbook entry on PPP (user-mode version)

   Si solo tienes acceso a Internet a traves de un "shell account",
   quizas quieras mirar el package slirp. Puede darte un (limitado)
   acceso a servicios como ftp y http.

   10.6. ?Soporta FreeBSD NAT o Masquerading?

   Si tienes una red local (una o mas maquinas), pero solo se te ha
   asignado una unica direccion IP desde tu proveedor de Internet (o
   si recibes las direcciones de manera dinamica), te interesa mirar
   el programa natd. Natd te permite conectar una red entera a
   Internet usando solamente una direccion IP.

   El programa ppp tiene una funcionalidad similar incluida, a traves
   del parametro -alias. La libreria alias es usada en ambos casos.

   10.7. No puedo crear el dispositivo /dev/ed0!

   En el sistema de trabajo de red de Berkeley, los interfaces de red
   solo son directamente accesibles por el codigo del kernel. Por
   favor, mira el archivo /etc/rc.network y los man de los programas
   de red alli mencionados. Si esto te deja totalmente confundido,
   entonces tendrias que conseguir algun libro de administracion de
   red de cualquier sistema operativo basado en BSD; con algunas
   excepciones significativas, administrar el sistema de red en
   FreeBSD es basicamente igual que en SunOS 4.0 o Ultrix.

   10.8. ?Como puedo configurar alias de ethernets?

   Anade ``netmask 0xffffffff'' en el comando ifconfig como el
   siguiente:

           
             ifconfig ed0 alias 204.141.95.2 netmask 0xffffffff
           

   10.9. ?Como hago para usar el otro puerto de una 3C503?

   Si quieres usar los otros puertos, tendras que especificar
   parametros adicionales en el comando ifconfig. El puerto por
   defecto es link0. Para usar el puerto AUI en lugar del BSN, usa
   link2. Estos flags tendrian que ser especificados usando las
   variable ifconfig_* en el archivo /etc/rc.conf.

   10.10. Tengo problemas con NFS desde/hacia FreeBSD.

   Algunas tarjetas de red son mejores que otras y algunas veces
   pueden causar problemas con aplicaciones de uso intensivo de red
   como NFS

   Mira la entrada en el manual de NFS para mas informacion sobre
   este tema.

   10.11. ?Porque no puedo hacer NFS-mount desde Linux?

   Algunas versiones de NFS para Linux solo aceptan peticiones para
   montar unidades hechas desde un puerto privilegiado; intenta:

           
             mount -o -P linuxbox:/blah /mnt
           

   10.12. ?Porque no puedo hacer NFS-mount desde una Sun?

   Las estaciones de trabajo Sun con SunOS 4.x solo aceptan
   peticiones de montar unidades hechas desde puertos privilegiados;
   intenta

           
             mount -o -P sunbox:/blah /mnt
           

   10.13. Tengo problemas usando ppp contra maquinas NeXTStep.

   Intenta desactivar las extensiones TCP en
   url="http://www.FreeBSD.org/cgi/man.cgi?rc.conf"
   name="/etc/rc.conf"> cambiando la siguiente variable a NO:

           
             tcp_extensions=NO
           

   Las maquinas Xylogic's Annex tambien tienen este problema, por lo
   que tienes que hacer el mismo cambio para conectar con ellas.

   10.14. ?Como activo soporte de IP multicast?

   Las operaciones multicast estan totalmente soportadas en FreeBSD
   2.0 y superiores. Si quieres usar tu maquina como router
   multicast, necesitaras cargar el modulo de kernel ip_mrouted_mod y
   ejecutar el programa mrouted.

   Para mas informacion:

   Producto        Descripcion             Donde
   --------------- ----------------------- ---------------------------------------
   faq.txt Mbone FAQ ftp.isi.edu:/mbone/faq.txt
   imm/immserv IMage Multicast  ftp.hawaii.edu:/paccom/imm.src.tar.Z
            for jpg/gif images.
   nv Network Video. ftp.parc.xerox.com:
            /pub/net-reseach/exp/nv3.3alpha.tar.Z
   vat LBL Visual Audio Tool. ftp.ee.lbl.gov:
            /conferencing/vat/i386-vat.tar.Z
   wb LBL White Board. ftp.ee.lbl.gov:
            /conferencing/wb/i386-wb.tar.Z
   mmcc MultiMedia Conference ftp.isi.edu:
            Control program /confctrl/mmcc/mmcc-intel.tar.Z
   rtpqual Tools for testing the ftp.psc.edu:/pub/net_tools/rtpqual.c
            quality of RTP packets.
   vat_nv_record
   Recording tools for vat ftp.sics.se:archive/vat_nv_record.tar.Z
            and nv.
           

   10.15. ?Que tarjetas de red estan basadas en el chipset DEC PCI?

   Aqui tienes una lista hecha por Glen Foster:

           
           Fabricante      Modelo
           ----------------------------------------------
           ASUS            PCI-L101-TB
           Accton          ENI1203
           Cogent          EM960PCI
           Compex          ENET32-PCI
           D-Link          DE-530
           Dayna           DP1203, DP2100
           DEC             DE435, DE450
           Danpex          EN-9400P3
           JCIS            Condor JC1260
           Linksys         EtherPCI
           Mylex           LNP101
           SMC             EtherPower 10/100 (Model 9332)
           SMC             EtherPower (Model 8432)
           TopWare         TE-3500P
           Zynx            ZX342
           

   10.16. ?Porque tengo que usar el FQDN para hosts en mi servidor?

   Probablemente el host estara en un dominio diferente; por ejemplo,
   si estas en el dominio foo.bar.edu y quieres encontrar un host
   llamado "mumble" en el dominio bar.edu, tendras que llamarlo por
   su nombre de dominio, "mumble.bar.edu", en vez de solo "mumble".

   Tradicionalmente, esto era permitido por los resolvers BIND BSD.
   La version actual de bind que se incluye en FreeBSD no resuelve
   abreviaciones de nombres para hosts fuera de nuestro dominio.

   10.17. ``Permission denied'' para todas las operaciones de red.

   Si tienes el kernel compilado con la opcion IPFIREWALL . debes
   tener en cuenta que la politica por defecto es denegar
   explicitamente todos los paquetes que no estan explicitamente
   permitidos.

   Si involuntariamente has desconfigurado el firewall de tu sistema,
   puedes restaurar la operatibilidad de la red tecleando el
   siguiente comando como usuario root:

           
             ipfw add 65534 allow all from any to any
           

   Para mas informacion en la configuracion del firewall de FreeBSD,
   mira la seccion del manual.

   10.18. ?Cuanto tiempo retrasa IPFW el trafico?

   Esta respuesta depende mucho en las reglas definidas y en la
   version del procesador. Para la mayoria de aplicaciones que tienen
   que ver con la ethernet y pequenas reglas, la respuesta es,
   practicamente nada.

   Aqui tienes una lista de cosas a tener en cuenta para crear reglas
   de filtrado eficientes:

     * Poner una regla "established" al inicio para manejar la
       mayoria de trafico TCP. No pongas ninguna regla allow tcp
       antes de esta.

     * Pon las reglas mas usadas antes de las menos usadas (sin
       modificar la permisividad del firewall). Puedes ver cuales son
       las reglas mas usadas examinando los contadores de paquetes
       con la orden ipfw -a l.

   10.19. ?Como puedo redirigir peticiones de una maquina a otra?

   Puedes redirigir peticiones FTP (y otros servicios) con el package
   "socket", disponible en la coleccion de ports categoria
   "sysutils". Simplemente tienes que reemplazar la linea del
   servicio correspondiente en el archivo /etc/services de la
   siguiente manera:

   ftp stream tcp nowait nobody /usr/local/bin/socket socket ftp.foo.com ftp
           

   donde "ftp.foo.com" y "ftp" son la maquina y puerto de destino.

   10.20. ?Donde puedo conseguir una herramienta de control de ancho
   de banda?.

   Existen dos herramientas de control de ancho de banda para
   FreeBSD. ALTQ es gratis; Bandwidth Manager de Emerging
   Technologies es un producto comercial.

   10.21. ?Porque aparece "/dev/bpf0: device not configured"?

   El driver Berkeley Packet Filter (bpf) necesita ser activado para
   ejecutar programas que lo utilizan. Anade esto al archivo de
   configuracion de tu kernel y crea uno nuevo:

            
             pseudo-device bpfilter         # Berkeley Packet Filter
           

   A continuacion, despues de rearrancar tendras el dispositivo. Esto
   puede hacerse entrando en el directorio /dev y ejecutando el
   siguiente comando:

       
             # sh MAKEDEV bpf0
          

   Por favor, mira la entrada correspondiente en el handbook para mas
   informacion sobre la creacion de dispositivos.

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

                            Capitulo 11. PPP

   11.1. El ppp no funciona. ?Que estoy haciendo mal?

   11.2. Ppp se bloquea al ejecutarlo

   11.3. PPP no quiere marcar en modo -auto

   11.4. ?Que significa "No route to host"?

   11.5. Mi conexion se corta pasados 3 minutos

   11.6. Mi conexion se corta en situaciones de carga

   11.7. Mi conexion se corta en periodos aleatorios

   11.8. No ocurre nada despues del mensaje Login OK

   11.9. Sigo teniendo errores sobre el parametro magic

   11.10. Las negociaciones LCP continuan hasta que se cierra la
   conexion

   11.11. Ppp se bloquea al conectar

   11.12. Ppp se bloqua al abrir un shell de test

   11.13. Ppp sobre un cable null-modem no funciona

   11.14. ?Por que llama sin motivo el ppp en modo -auto?

   11.15. ?Que significan estos errores CCP?

   11.16. PPP se cuelga durante transferencia de archivos con errores
   I/OP

   11.17. ?Por que ppp no loguea la velocidad de la conexion?

   11.18. Ppp ignora el caracter `\' en mi chat script

   11.19. Ppp produce un seg-fault, pero no veo el archivo ppp.core

   11.20. El proceso que fuerza una llamada en modo auto nunca
   funciona

   11.21. ?Porque muchos juegos no funcionan con el parametro -alias?

   11.22. ?Ha hecho alguien una lista de puertos utiles?

   11.23. ?Que son los errores FCS?

   11.24. Nada de esto me ayuda - Estoy desesperado !

   11.1. El ppp no funciona. ?Que estoy haciendo mal?

   Primero deberias leer el man de ppp y la seccion de PPP del
   handbook. Activa los logs con el comando

           
             set log Phase Chat Connect Carrier lcp ipcp ccp command
           

   Este comando deberia ser tecleado en el prompt del ppp o incluirse
   en el archivo de configuracion /etc/ppp/ppp.conf (al inicio de la
   seccion default es el mejor lugar). Asegurate que el archivo
   url="http://www.FreeBSD.org/cgi/man.cgi?syslog.conf"
   name="/etc/syslog.conf"> contiene las siguientes lineas:

           !ppp
           *.*              /var/log/ppp.log
           

   y que el archivo /var/log/ppp.log existe. Puedes encontrar mucha
   informacion sobre lo que esta pasando en las conexiones con el
   archivo de log.

   Si tu version de ppp no entiende el comando "set log" deberias
   bajarte la ultima version. Esta compilara sin problemas en FreeBSD
   2.1.5 y superiores.

   11.2. Ppp se bloquea al ejecutarlo

   Esto ocurre normalmente por que no se puede resolver el nombre de
   la maquina. La mejor manera de solucionar este problema es
   asegurarse que el sistema use en primer lugar el archivo
   /etc/hosts para hacer la resolucion de nombres. Para ello, basta
   con editar el archivo /etc/host.conf y poner la linea hosts en
   primer lugar. A continuacion, simplemente hay que anadir una linea
   para la maquina local en el archivo /etc/hosts. Si no existe una
   red local, modificar la linea localhost:

   127.0.0.1 foo.bar.com foo localhost
           

   Anadir otra linea para la maquina local. Consultar las paginas man
   relevantes para mas detalles.

   Ahora se deberia poder ejecutar el siguiente mandato de forma
   satisfactoria ping -c1 `hostname`.

   11.3. PPP no quiere marcar en modo -auto

   Primero, asegurate de tener una ruta por defecto. Ejecutando el
   comando url="http://www.FreeBSD.org/cgi/man.cgi?netstat">
   name="netstat -rn"> deberias ver dos entradas como estas:

   Destination        Gateway            Flags     Refs     Use     Netif Expire
   default            10.0.0.2           UGSc        0        0      tun0
   10.0.0.2           10.0.0.1           UH          0        0      tun0
           

   Esto es asumiendo que hayas usado las direcciones del manual, la
   pagina man o del archivo de ejemplo ppp.conf.sample. Si no tienes
   una ruta por defecto, puede ser por que estes usando una version
   antigua de ppp que no entiende la palabra HISADDR en el archivo
   ppp.conf. Si tu version de ppp es de antes de FreeBSD 2.2.5,
   cambia la linea

             add 0 0 HISADDR
           

   por otra diciendo

             add 0 0 10.0.0.2
           

   Otra razon para la inexistencia de la ruta por defecto es que sin
   darte cuenta hayas creado un default router en el archivo
   /etc/rc.conf (anteriormente llamado /etc/sysconfig) y hayas
   omitido la linea

             delete ALL
           

   en el archivo ppp.conf. Si es este el caso vuelve a la seccion
   configuracion final del sistema en el handbook.

   11.4. ?Que significa "No route to host"?

   Este error se debe normalmente a la falta de la seccion

             
               MYADDR:
               delete ALL
               add 0 0 HISADDR
           

   en el archivo /etc/ppp/ppp.linkup. Esto es solo necesario si
   tienes una direccion IP dinamica o no sabes la direccion de tu
   gateway. Si estas usando el modo interactivo, puedes teclear lo
   siguiente despues de entrar en packet mode:

             
             delete ALL
             add 0 0 HISADDR
           

   Pasate por la seccion PPP y direcciones IP dinamicas del handbook
   para mas informacion.

   11.5. Mi conexion se corta pasados 3 minutos

   El timeout de ppp por defecto es de 3 minutos. Se puede ajustar
   con la linea:

             set timeout NNN
           

   Donde NNN es el numero de segundos de inactividad antes de cerrar
   la conexion. Si NNN es 0, la conexion no se cerrara nunca por
   timeout. Es posible poner este comando en el archivo ppp.conf, o
   teclearla en el prompt del modo interactivo. Tambien es posible
   ajustarla en cualquier momento mientras la conexion este activa
   conectando al socket del servidor ppp usando telnet o pppctl.
   Leete el man de ppp para mas detalles.

   11.6. Mi conexion se corta en situaciones de carga

   Si tienes la opcion Link Quality Reporting (LQR) configurada es
   posible que demasiados paquetes LQR se pierdan entre tu maquina y
   el remoto. PPP deduce que la linea es mala y corta la conexion. En
   versiones anteriores a la 2.2.5 de FreeBSD, LQR estaba activado
   por defecto. Ahora esta desactivado por defecto. LQR puede ser
   activado con la linea

             disable lqr
           

   11.7. Mi conexion se corta en periodos aleatorios

   Algunas veces, en lineas telefonicas de baja calidad o con mucho
   ruido, o lineas con la opcion de llamada en espera activada, el
   modem corta la conexion por que piensa (erroneamente) que ha
   perdido la portadora.

   Hay una opcion en muchos modems para determiar la tolerancia a
   perdidas temporales de portadora. En un USR Sportster por ejemplo,
   esta es medida por el registro S10 en decimas de segundo. Para
   hacer que tu modem sea mas resistente, puedes anadir la siguiente
   secuencia "send-expect" a la cadena de llamada:

             set dial "...... ATS10=10 OK ......"
           

   Mira en el manual de tu modem para mas detalles.

   11.8. No ocurre nada despues del mensaje Login OK

   En versiones anteriores a FreeBSD 2.2.5, una vez estaba la
   conexion establecida, ppp espera a que el remoto inicie la
   negociacion LCP (Line Control Protocol). Muchos proveedores de
   Internet no iniciaran la negociacion esperando que sea el cliente
   el que lo haga. Para forzar al ppp a iniciar el LCP, usa la
   siguiente linea:

             set openmode active
           

   Nota: Normalmente no hay problemas si las dos partes inician la
   negocioacion LCP, ya que el modo abierto (open mode) esta activo
   por defecto. De todas maneras, la siguiente seccion explica cuando
   pueden haber problemas.

   11.9. Sigo teniendo errores sobre el parametro magic

   Ocasionalmente, justo despues de la conexion, puedes ver mensajes
   en el log referentes a "magic number is the same". Algunas veces,
   estos mensajes son inofensivos, y otras veces uno de los dos
   extremos finaliza la conexion. Algunas implementaciones de ppp no
   pueden solucionar este problema, y, aunque parezca que la conexion
   esta establecida, veras repetidas peticiones y aceptaciones de
   configuracion en el archivo de log hasta que una de las dos partes
   cierra la conexion.

   Esto ocurre normalmente en servidores con disco lentos que tienen
   problemas para gestionar eficientemente los puertos serie. Tambien
   existen informes de problemas en conexiones mediante slip. La
   razon es que en el tiempo que tarda el servidor en salir del getty
   y ejecutar el ppp, el cliente manda los paquetes de inicio LCP. Al
   estar el ECHO todavia activo en el puerto del servidor, el cliente
   ppp lo unico que ve son sus propios paquetes "reflejados" por el
   servidor.

   Una parte de la negociacion LCP es establecer un numero magico
   para cada una de los dos extremos de las conexiones para que los
   "reflejos" puedan ser detectados. El protocolo dice que cuando el
   remoto intenta negociar el mismo "magic number", se debe enviar un
   NAK para seleccionar un nuevo "magic number". Durante el periodo
   de tiempo que el servidor tiene el ECHO activado en el puerto, el
   cliente ppp envia paquetes LCP, ve que el mismo "magic" vuelve en
   el paquete reflejado y lo da como no valido (envia NAK). Este
   todavia ve el paquete reflajado con NAK (lo que significa que el
   ppp debe cambiar su "magic"). Esto produce un enorme numero de
   cambios de "magic number" que son introducidos en el buffer tty
   del servidor. Tan pronto como el ppp arranca en el servidor, es
   bombardeado con cambios de "magic numbers" e inmediatamente decide
   que ya ha realizado el numero suficiente de negociaciones LCP y
   corta la conexion. Mientras tanto, el cliente, que ya no ve los
   paquetes reflejados, recibe sin problemas la desconexion del
   servidor y tambien cierra la conexion.

   Esto puede ser resuelto permitiendo que el remoto inicie la
   negociacion, poniendo la siguiente linea en el archivo ppp.conf:

             set openmode passive
           

   Esto indica al ppp que espere a que el servidor comience la
   negociacion LCP. Es posible que algunos servidores nunca inicien
   la negociacion. Si este es el caso, puedes hacer algo como:

             set openmode active 3
           

   Esto le indica al ppp que sea pasivo durante 3 segundos, y despues
   comience a enviar peticiones LCP. Si el remoto envia peticiones
   durante este periodo, ppp respondera inmediatamente sin esperar
   los 3 segundos establecidos.

   11.10. Las negociaciones LCP continuan hasta que se cierra la
   conexion

   Existe actualmente un problema de implementacion en ppp en la que
   no asocia las respuestas LCP, CCP & IPCP con sus peticiones
   originales. Como resultado, si una implementacion ppp es mas lenta
   durante 6 segundos que la remota, la remota enviara dos peticiones
   de configuracion LCP adicionales. Esto es fatal.

   Considera dos implementaciones, A y B. A empieza a enviar
   peticiones LCP inmediatamente despues de conectar y B tarda 7
   segundos en arrancar. Cuando B arranca, A ha enviado 3 peticiones
   LCP. Estamos asumiendo que la linea tiene el ECHO desactivado, si
   no, veriamos los problemas de "magic number" descritos en el
   apartado anterior. B envia un REQ, y a continuacion envia un ACK
   al primer REQ de A. Esto resulta en que A entra en modo OPENED y
   envia un ACK (el primero) a B. Mientras, B devuelve dos ACKs mas
   en respuesta a los dos REQs adicionales enviados por A antes de
   que B arrancase .B recibe el primer ACK de A y entra en modo
   OPENED. A recibe el segundo ACK de B y vuelve al estado REQ-SENT,
   enviando otro (el cuarto) REQ. Entonces recibe el tercer ACK y
   entra en modo OPENED. Mientras, B recibe el cuarto REQ de A,
   produciendo que vuelva de nuevo al estado ACK-SENT y enviando otro
   (el segundo) REQ y (cuarto) ACK. A recibe el REQ, entra en modo
   REQ-SENT y envia otro REQ. Inmediatamente recibe el siguiente ACK
   y entra en OPENED.

   Esto pasa hasta que una de las partes piensa que ya ha realizado
   suficientes reintentos y corta la conexion.

   La mejor manera de evitar esto es configurar una de las partes de
   manera pasiva - que es, hacer que una de las partes espere a que
   la otra comience la negociacion. Esto puede realizarse con el
   comando:

             
             set openmode passive
           

   Se debe tener cuidado con esta opcion. Tambien se puede usar:

             
           set stopped N
           

   para limitar el numero de veces que ppp espera a que el remoto
   comience la negociacion. Alternativamente, puedes user el comando:

             
             set openmode active N
           

   donde N es el numero de segundos que espera antes de empezar la
   negociacion. Mira en el manual para mas detalles.

   11.11. Ppp se bloquea al conectar

   Antes de la version 2.2.5 era posible que la conexion se corte
   nada mas iniciarse debido a un problema en la negociacion de
   compresion Predictor1. Esto solo pasa si las dos partes intentan
   negociar con diferentes protocolos de control de compresion (CCP).
   Este problema ya esta corregido, pero si estas usando una version
   antigua de ppp, el problema puede solucionarse con la linea

             
             disable pred1
           

   11.12. Ppp se bloqua al abrir un shell de test

   Cuando ejecutas el comando shell o !, ppp ejecuta un shell (o si
   has pasado argumentos, ppp ejecutara esos argumentos). Ppp
   esperara a que se complete el comando antes de continuar. Si
   intentas usar la conexion ppp mientras se ejecuta el comando,
   parecera que la conexion se ha colgado. Esto es por que ppp esta
   esperando a que se complete la ejecucion del comando.

   Si quieres ejecutar comandos como este, usa el comando !bg en su
   lugar. Esto ejecutara el comando en background, y ppp continua sin
   problemas con la conexion.

   11.13. Ppp sobre un cable null-modem no funciona

   No hay manera que ppp detecte automaticamente que una conexion
   directa se ha cortado. Es debido a las lineas que se usan en un
   cable serie null-modem. Cuando usamos este tipo de conexion, LQR
   deberia estar siempre activada con el comando

             enable lqr
           

   LQR es aceptado por defecto si es negociado por el remoto.

   11.14. ?Por que llama sin motivo el ppp en modo -auto?

   Si ppp llama inesperadamente, debes determinar la causa, y poner
   filtros (dfilters) para prevenir esas llamadas.

   Para determinar la causa, usa la siguiente linea:

             set log +tcp/ip
           

   Esto guardara todo el trafico que pase a traves de la conexion. La
   proxima vez que se realice una llamada no deseada, podras ver la
   causa convenientemente guardada.

   Ahora puedes desactivar las llamadas producidas por esa causa.
   Usualmente, este tipo de problemas se debe a consultas de DNS.
   Para prevenir que las consultas de DNS puedan establecer
   conexiones usa la siguiente linea (esto no hara que los paquetes
   de DNS queden parados cuando la conexion esta establecida):

             set dfilter 1 deny udp src eq 53
             set dfilter 2 deny udp dst eq 53
             set dfilter 3 permit 0/0 0/0
           

   Esto no siempre es aconsejable, ya que puede afectar a la
   capacidad de realizar conexiones bajo demanda - muchos programas
   necesitan hacer una consulta al DNS antes de poder realizar
   cualquier operacion.

   En el caso del DNS, deberias determinar que es lo que esta
   intentando realizar esas consultas de DNS. Muchas veces, sendmail
   es el culpable. Debes asegurarte configurar el sendmail de manera
   que no realice ninguna consulta al DNS. Mira la seccion
   Configuracion de correo para tener mas detalles acerca de como
   crear una archivo propio de configuracion de sendmail. Tambien
   deberias anadir la siguiente linea en tu archivo .mc:

             define(`confDELIVERY_MODE', `d')dnl
           

   Esto hara que sendmail encole todo el correo hasta que no se
   procese la cola (usualmente, sendmail es invocado con "-bd -q30m",
   indicandole que procese la cola cada 30 minutos) o hasta que se
   ejecuta el comando "sendmail -q" (por ejemplo, desde el archivo
   ppp.linup).

   11.15. ?Que significan estos errores CCP?

   Sigo viendo los siguientes errores en el archivo de log:

             CCP: CcpSendConfigReq
             CCP: Received Terminate Ack (1) state = Req-Sent (6)
           

   Esto es porque ppp esta intentando negociar compresion Predictor1,
   y el remoto no quiere negociar ningun tipo de compresion. Estos
   mensajes son sin importancia, pero si quieres eliminarlos, puedes
   desactivar la compresion Predictor1 localmente:

             disable pred1
           

   11.16. PPP se cuelga durante transferencia de archivos con errores
   I/OP

   En la version FreeBSD 2.2.2 y anteriores, habia un problema en el
   driver tun que no permitia paquetes entrantes con un tamano mayor
   que el MTU del interface. La recepcion de un paquete mayor que el
   MTU resulta en un error IO que es logueado via syslogd.

   La especificacion PPP dice que un MRU de 1500 siempre deberia ser
   aceptada como minimo, a pesar de lo que se negocie mediante LCP,
   de todas maneras, es posible que hayas disminuido el MTU por
   debajo de 1500 y tu proveedor te este enviando paquetes de 1500,
   haciendo que tu conexion se bloquee.

   El problema puede solucionarse haciendo que el tamano del MTU
   nunca sea inferior a 1500 bajo FreeBSD 2.2.2 y anteriores.

   11.17. ?Por que ppp no loguea la velocidad de la conexion?

   Para loguear todas las lineas de "conversacion" de tu modem, debes
   activar la siguiente opcion:

             set log +connect
           

   Esto hara que ppp loguee todo hasta la ultima cadena "expect"
   pedida.

   Si quieres ver la velocidad de tu conexion y usas PAP o CHAP (y
   por lo tanto no tienes nada que "chatear" despues del CONNECT en
   el script de marcado), debes estar seguro de indicarle al ppp que
   espera la linea "CONNECT con algo como esto:

             set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 4 \"\" ATZ OK-ATZ-OK ATDT\\T TIMEOUT 60 CONNECT \\c \\n"
           

   Aqui, tenemos nuestro CONNECT, enviamos nada, y esperamos un salto
   de linea, forzando al ppp que lea la respuesta del CONNECT.

   11.18. Ppp ignora el caracter `\' en mi chat script

   PPP lee cada linea de los archivos de configuracion para poder
   interpretar cadenas como set phone "123 456 789" correctamente.
   Para especificar un caracter ``"'', debes usar la contrabarra
   (``\'').

   Cuando el interprete lee cada argumento, reinterpreta el argumento
   para buscar alguna secuencia especial de escape como ``\P'' o
   ``\T''. Como resultado de esta doble lectura, recuerda que has de
   usar el numero correcto de escapes (contrabarras).

   Si quieres enviar un caracter ``\'' a tu modem, necesitas hacer
   algo como:

             set dial "\"\" ATZ OK-ATZ-OK AT\\\\X OK"
           

   resultando en la siguiente secuencia:

             ATZ
             OK
             AT\X
             OK
           

   o

             set phone 1234567
             set dial "\"\" ATZ OK ATDT\\T"
           

   resultando en la siguiente secuencia:

             ATZ
             OK
             ATDT1234567
           

   11.19. Ppp produce un seg-fault, pero no veo el archivo ppp.core

   Ppp (o cualquier otro programa de este tipo), nunca deberian hacer
   un core dump. Por que ppp funciona con un id de usuario 0, el
   sistema operativo no escribira la imagen del core en disco. Si ppp
   termina con errores de "segmentation violation" o cualquier otra
   senal que normalmente causa un core dumped, y quieres poder hacer
   un debug de ese core, asegurate de usar la ultima version de ppp,
   y haz lo siguiente:

             $ tar xfz ppp-*.src.tar.gz
             $ cd ppp*/ppp
             $ echo STRIP= >>Makefile
             $ echo CFLAGS+=-g >>Makefile
             $ make clean all
             $ su
             # make install
             # chmod 555 /usr/sbin/ppp
           

   Ahora tendras instalada una version "debuggable" de ppp. Tendras
   que ser root para poder ejecutar ppp ya que todos sus privilegios
   han sido revocados. Cuando arranques ppp, acuerdate del directorio
   en el que te encuentras.

   Ahora, cuando ppp recibe una violacion de segmentacion , creara un
   archivo core llamado ppp.core. A continuacion , deberias hacer lo
   siguiente:

             $ su
             # gdb /usr/sbin/ppp ppp.core
             (gdb) bt
             .....
             (gdb) f 0
             .....
             (gdb) i args
             .....
             (gdb) l
             .....
           

   Toda esta informacion puede hacer posible diagnosticar el
   problema. Si estas familiarizado con gdb, puedes encontrar otras
   pistas como que causo el dump y las direcciones y valores de las
   variables mas relevantes.

   11.20. El proceso que fuerza una llamada en modo auto nunca
   funciona

   Este es un problema conocido cuando ppp esta configurado para
   negociar una IP dinamica local con el remoto. Este problema ha
   sido solucionado en la ultima version - busca en el man la palabra
   iface.

   El problema era que cuando el programa inicial llama a connect(2),
   el IP del interface tun es asignado al punto final del socket. El
   kernel crea el primer paquete saliente y establece la conexion.
   Si, como resultado de la asignacion dinamica de IP, la direccion
   del interface es cambiada, el punto final del socket original sera
   invalido. Los siguientes paquetes enviados al remoto normalmente
   seran descartados. Aun si no lo son, cualquier respuesta no sera
   enrutada hacia la maquina de origen por que la direccion IP de la
   maquina de origen ha cambiado.

   Hay varias maneras teoricas de solucionar este problema. Lo mejor
   seria que el remoto reasignase la misma IP si fuese posible :-) La
   version actual de ppp hace esto, pero otras muchas
   implementaciones no.

   El metodo mas sencillo desde nuestra parte, seria no cambiar nunca
   la IP del interface tun, pero por el contrario, cambiar todos los
   paquetes salientes de manera que la ip de origen es cambiada del
   IP del interface a la IP negociada, instantaneamente. Esto es,
   esencialmente, lo que hacen libalias(3) y el parametro -alias de
   ppp.

   Otra alternativa (y probablemente la mas eficaz) es implementar
   una llamada al sistema que cambie todos los sockets de una IP a
   otra. Ppp deberia usar esta llamada para modificar los sockets de
   todos los programas existentes cuando una nueva direccion IP es
   negociada. La misma llamada de sistema podria ser usada para
   clientes dhcp cuando son forzados a rehacer sus sockets.

   Una tercera opcion es permitir que un interface se active sin IP.
   Los paquetes salientes tendrian un IP de 255.255.255.255 hasta que
   el primer SIOCAIFADDR ioctl este hecho. Esto permitiria que ppp
   cambiase el IP de origen, pero solo si el socket es
   255.255.255.255 y solo el IP y el checksum necesitan cambiar.
   Esto, de todas maneras, requiere tocar el kernel para que puede
   enviar paquetes incorrectos a un interface mal configurado.

   11.21. ?Porque muchos juegos no funcionan con el parametro -alias?

   La razon por la que muchos de los juegos no funcionan es por que
   la maquina externa intentara abrir una conexion o enviar paquetes
   UDP (no solicitados) a la maquina interna. El software "alias" no
   sabe que esos paquetes debrin enviarse a la maquina interna.

   Para que las cosas funcionen, asegurate que la unica cosa que esta
   funcionando es el software con el que tienes problemas, entonces
   ejecuta tcpdump en el interface tun del gateway o ejecuta el log
   tcp/ip del ppp ("set log +tcp/ip" en el gateway.

   Cuando arrancas el software que no funciona, deberis ver paquetes
   que pasan a traves del gateway. Cuando algo vuelve del exterior,
   sera rechazado (ese es el problema). Apunta el numero de puerto de
   esos paquetes y cierra el software que no funciona. Haz esto
   varias veces para comprobar si el numero de puerto se repite. Si
   es asi, la siguiente linea en el archivo de configuracion del ppp
   /etc/ppp/ppp.conf hara que las cosas funcionen:

            alias port proto internalmachine:port port
          

   donde "proto" puede ser "tcp" o "udp", "internalmachine" es la
   maquina a la que quieres que los paquetes sean enviados y "port"
   es el numero de puerto de destino de los paquetes.

   No podras usar ese software en otras maquinas sin modificar el
   comando anterior, y ejecutar el software simultaneamente en dos
   maquinas internas no sera posible - despues de todo, el mundo
   exterior esta viendo a toda tu red como una sola maquina.

   Si los numeros de puertos no se repiten, hay tres opciones mas:

   1) Desarrollar el soporte en libalias. Ejemplos de estos "casos
   especiales" los puedes encontrar en
   /usr/src/lib/libalias/alias_*.c (alias_ftp.c es un buen
   prototipo). Esto usualmente supone leer ciertos paquetes salientes
   conocidos, identificando la instruccion que le indica a la maquina
   exterior que inicie una conexion con la maquina interna en un
   puerto especifico (aleatorio) y configurar un "ruta" en la tabla
   de alias para que los paquetes siguientes sepan donde ir.

   Esta es la solucion mas dificil, pero es la mejor y hara que el
   software funcione con multiples maquinas.

   2) Usar un proxy. La aplicacion debe soportar socks5 por ejemplo,
   o (como en el caso del "cvsup") deberia tener una opcion "pasiva"
   que evita que el remoto intente abrir conexiones con la maquina
   local.

   3) Redireccionar todo el trafico a la maquina interna usando
   "alias addr". Esta es la solucion mas sencilla.

   11.22. ?Ha hecho alguien una lista de puertos utiles?

   Todavia no, pero se podria hacer, si hay interes. En cada ejemplo,
   internal debe ser reemplazado por la direccion IP de la maquina
   que va a estar jugando.

     * Quake

       alias port udp internal:6112 6112

       Alternativamente, quizas estes interesado en mirar en el
       www.battle.netsoporte de Quake a traves de proxy">.

     * Quake 2

       alias port udp internal:27901 27910

     * Red Alert

       alias port udp internal:8675 8675

       alias port udp internal:5009 5009

     * Half Life

       alias port udp internal:27005 27015

     * PCAnywhere 8.0

       alias port udp internal:5632 5632

       alias port tcp internal:5631 5631

   11.23. ?Que son los errores FCS?

   FCS significa Frame Check Sequence. Cada paquete ppp tiene un
   checksum anadido para asegurar que los datos que se reciben son
   los datos que han sido enviados. Si el FCS de un paquete entrante
   es incorrecto, el paquete es rechazado y se incremente el contador
   HDLC FCS. Los valores de error HDLC se pueden visualizar usando el
   comando show hdlc.

   Si tu conexion es mala (o si tu driver serie esta rechazando
   paquetes), veras errores FCS ocasionales. En general no tienes
   porque preocuparte de ellos. Si tienes un modem externo, asegurate
   que el cable esta correctamente aislado de interferencias - esto
   deberia erradicar el problema.

   Si tu conexion se corta tan pronto como has conectado y ves gran
   cantidad de errores FCS, puede ser por que ti conexion no es de 8
   bits. Asegurate de que tu modem no esta usando control de flujo
   (XON/XOFF) por software. Si tu conexion de datos debe usar control
   de flujo por software, usa el comando set accmap 0x000a0000 para
   indicar al ppp que "escape" los caracteres ^Q y ^S.

   Otra razon para ver muchos errores FCS puede ser que el remoto
   haya dejado de "hablar" PPP. Deberis activar el log asincrono para
   determinar si los datos entrantes son de un login o un prompt de
   shell. Si tienes un prompt de shell en el extremo de la conexion,
   es posible terminar el ppp sin cortar la conexion usando el
   comando close clp (usando el comando term podras conectar de nuevo
   con el shell de la maquina remota.

   Si no hay nada en el log que indique por que se ha terminado la
   conexion, deberis preguntar al administrador del sistema remoto
   porque ha terminado la sesion.

   11.24. Nada de esto me ayuda - Estoy desesperado !

   Si todo falla, envia toda la informacion que puedas, incluyendo
   los archivos de configuracion, como arrancas el ppp, las partes
   relevantes del archivo de log y la salida del comando netstat -rn
   (antes y despues de la conexion) a la lista de distribucion
   FreeBSD-questions@FreeBSD.org, a la lista de FreeBSD en castellano
   o al grupo de news comp.unix.bsd.FreeBSD.misc y alguien te ayudara
   a solucionar los problemas.

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

                   Capitulo 12. Comunicaciones serie

   Esta seccion responde las preguntas mas frecuentes sobre las
   comunicaciones serie con FreeBSD. PPP y SLIP se tratan en la
   seccion Networking.

   12.1. ?Como se si FreeBSD ha encontrado mis puertos serie?

   12.2. ?Como se si FreeBSD ha encontrado mi modem interno?

   12.3. He actualizado a 2.0.5 y mi tty0X no existen!

   12.4. ?Como accedo a los puertos serie en FreeBSD?

   12.5. ?Como activo el soporte de tarjetas serie multipuerto?

   12.6. ?Puede manejar FreeBSD tarjetas multipuerto compartiendo
   irq?

   12.7. ?Puedo cambiar los parametros serie por defecto para un
   puerto?

   12.8. ?Como puedo activar logins de entrada en mi modem?

   12.9. ?Como puedo conectar un dumb terminal a un FreeBSD?

   12.10. ?Porque no puedo ejecutar tip o cu?

   12.11. Mi modem hayes no esta soportado. ?Que puedo hacer?

   12.12. ?Como puedo introducir estos comandos AT?

   12.13. El simbolo @ no funciona correctamente!

   12.14. ?Como puedo llamar desde la linea de comandos?

   12.15. ?Tengo que teclear la velocidad cada vez que hago esto?

   12.16. Accedo a diferentes hosts a traves de un servidor de
   terminales.

   12.17. ?Puede tip intentar mas de una linea para cada lugar?

   12.18. ?Porque tengo que teclea CTRL+P dos veces para enviar
   CTRL+P una vez?

   12.19. De repente, todo lo que tecleo es en mayusculas

   12.20. ?Como puedo hacer transferecia de archivos con tip?

   12.21. ?Como puedo usar zmodem con tip?

   12.22. FreeBSD parece que no puede encontrar mis puertos series
   aun cuando la configuracion es correcta.

   12.1. ?Como se si FreeBSD ha encontrado mis puertos serie?

   Cuando el kernel de FreeBSD arranca, testeara los puertos serie
   del sistema que esten configurados en el kernel. Puedes estar
   atento a los mensajes de la consola o ejecutar el comando:

           dmesg | grep sio
           

   una vez el sistema este en funcionamiento.

   Aqui tienes un ejemplo del resultado de la ejecucion del comando:

           sio0 at 0x3f8-0x3ff irq 4 on isa
           sio0: type 16550A
           sio1 at 0x2f8-0x2ff irq 3 on isa
           sio1: type 16550A
           

   Esto muestra dos puertos serie. El primero en la irq 4 usando la
   direccion 0x3f8, y tiene una UART 16550A. El segundo usa el mismo
   tipo de chip pero esta en la irq 3 y usa la direccion 0x2f8. Los
   modems internos son tratados como puertos serie, exceptuando que
   siempre tienen un modem adjuntado al puerto.

   El kernel GENERIC incluye soporte para dos puertos serie usando la
   misma irq y direccion que en el ejemplo anterior. Si estas
   opciones no son correctar para tu sistema, o si has anadido modems
   internos o tienes mas puertos serie de los que estan configurados
   en el kernel, solo tienes que reconfigurar el kernel. Mira en la
   seccion about building a kernel para mas detalles.

   12.2. ?Como se si FreeBSD ha encontrado mi modem interno?

   Respondido en la seccion anterior.

   12.3. He actualizado a 2.0.5 y mi tty0X no existen!

   No te preocupes, han sido integrados en los dispositivos ttydX.
   Tendras que modificar algunos archivos antiguos de configuracion.

   12.4. ?Como accedo a los puertos serie en FreeBSD?

   El tercer puerto serie, sio2 (conocido como COM3 en DOS), esta en
   /dev/cuaa2 para dispositivos de salida (dial-out) y en /dev/ttyd2
   para dispositivos de entrada (dial-in). Cual es la diferencia
   entre estas dos clases de dispositivos?.

   Usas los ttydX para los entrantes. Al abrir /dev/ttydX en
   "blocking mode", un proceso esperara para que el dispositivo cuaaX
   correspondiente se vuelva inactivo. Cuando abres un dispositivo
   cuaaX, se asegura de que el puerto serie no esta en uso por un
   dispositivo ttydX. Si el puerto esta disponible, se lo "roba" al
   dispositivo ttydX. Al mismo tiempo, el dispositivo cuaaXX no se
   preocupa de la deteccion de portadora. Con este esquema, y un
   modem en respuesta automatica, puedes recibir usuarios remotos y
   puedes hacer conexiones externas con el mismo modem, mientras el
   sistema se preocupa de evitar los posible conflictos.

   12.5. ?Como activo el soporte de tarjetas serie multipuerto?

   Otra vez, en la seccion de configuracion del kernel tienes la
   informacion. Para una tarjeta multipuerto, pon una linea sio para
   cada puerto serie de la tarjeta en el archivo de configuracion del
   kernel. Especifica la irq y vector solo en una de las lineas.
   Todos los puertos de la tarjeta compartiran la misma irq. Por
   consistencia, usa el ultimo puerto serie para especificar la irq.
   De la misma manera, especifica la opcion COM_MULTIPORT.

   El siguiente ejemplo es para una tarjeta AST 4-port en la irq 7:

           options "COM_MULTIPORT"
           device sio4 at isa? port 0x2a0 tty flags 0x781
           device sio5 at isa? port 0x2a8 tty flags 0x781
           device sio6 at isa? port 0x2b0 tty flags 0x781
           device sio7 at isa? port 0x2b8 tty flags 0x781 irq 7 vector siointr
           

   Los flags indican que el puerto master tiene un numero menor de 7
   (0x700), los diagnosticos estan activados durante el testeo
   (0x080), y los puertos comparten una irq (0x001).

   12.6. ?Puede manejar FreeBSD tarjetas multipuerto compartiendo
   irq?

   Todavia no. Tendras que usar una irq diferente para cada tarjeta.

   12.7. ?Puedo cambiar los parametros serie por defecto para un
   puerto?

   El dispositivo ttydX (o cuaaX) es el que querras abrir para tus
   aplicaciones. Cuando un proceso abre el dispositivo, tendra una
   serie de configuraciones I/O por defecto. Puedes ver estas
   configuraciones con el comando:

           stty -a -f /dev/ttyd1
           

   Cuando le cambias la configuracion a este dispositivo, este cambio
   se mantiene hasta que el dispositivo se cierra. Cuando se reabre,
   vuelve a la configuracion por defecto. Para hacer cambios sobre la
   configuracion por defecto, puedes abrir y ajustar las opciones del
   "estado inicial" del dispositivo. Por ejemplo, para poner el
   dispositivo tty5 en modo CLOCAL, 8 bits, y contro del flujo
   XON/XOFF, haz

           stty -f /dev/ttyid5 clocal cs8 ixon ixoff
           

   Un buen lugar para hacer esto es en /etc/rc.serial. Ahora, una
   aplicacion tendra esta configuracion por defecto cuando abra el
   puerto ttyd5.

   Tambien puedes prevenir o limitar ciertos cambios que pretenda
   hacer una aplicacion. Para ello, ajusta el "lock state" del
   dispostivo. Por ejemplo, para bloquear la velocidad del puerto
   ttyd5 a 57600 bps, haz:

           stty -f /dev/ttyld5 57600
           

   Ahora, una aplicacion que abre ttyd5 e intenta cambiar la
   velocidad del puerto no podra hacerlo.

   Naturalmente, deberias hacer que el estado inicial y el estado de
   bloqueo sean solo de escritura para el usuario root. El script
   MAKEDEV NO hace esto cuando crea el dispositivo.

   12.8. ?Como puedo activar logins de entrada en mi modem?

   Quieres hacerte proveedor de Internet, eh?. Primero, necesitaras
   uno o mas modems que puedan responder automaticamente. Tu modem
   necesitara activar el carrier-detect solo cuando detecte una
   portadora y no tenerla activada continuamente. Necesitara cortar
   la comunicacion y resetearse el mismo cuando la linea DTR pase de
   on a off. Probablemente usaria RTS/CTS para el control de flujo.
   Finalmente, debe usar una velocidad constante entre el computador
   y el mismo, pero deberia negociar la velocidad entre el mismo y el
   modem remoto.

   Para muchos modems compatibles Hayes, este comando creara estas
   configuraciones y las grabara en la memoria no volatil:

           AT &C1 &D3 &K3 &Q6 S0=1 &W
           

   Mira la seccion enviar comandos AT para saber como enviar estas
   configuraciones al modem sin necesidad de un programa terminal de
   DOS.

   A continuacion, anade una linea en el archivo /etc/ttys para el
   modem. Este archivo lista todos los puertos en los que el sistema
   operativo esperara los logins. La linea seria como esta:

           ttyd1 "/usr/libexec/getty std.57600" dialup on insecure
           

   Esta linea indica que el segundo puerto serie /dev/ttyd1 tiene un
   modem conectado, la velocidad es de 57600 bps y sin paridad
   (std.57600. El tipo de terminal para este puerto es "dialup". El
   puerto esta "on" y es inseguro (lo que significa que los logins
   como root no son permitidos).

   Muchos usuarios, ponen un sus archivos .profile o .login un prompt
   para el tipo de terminal. El ejemplo muestra el puerto como
   inseguro. Para ser root en ese puerto, hacer el login como un
   usuario normal, y ejecutar el comando su. Si en lugar de inseguro,
   el terminal es seguro (secure), puedes hacer login como root
   directamente.

   Despues de modificar el archivo /etc/ttys, necesitas lanzar una
   senal HUP al proceso init:

           kill -HUP 1
           

   Esto fuerza al proceso init a releer el archivo /etc/ttys. El
   proceso init arrancara los procesos getty en todos los puertos
   configurados como "on". Puedes ver si los logins estan disponibles
   en los puertos tecleando:

           ps -ax | grep '[t]tyd1'
           

   deberias ver algo como:

           747 ??  I      0:00.04 /usr/libexec/getty std.57600 ttyd1
           

   12.9. ?Como puedo conectar un dumb terminal a un FreeBSD?

   Si estas usando otro computador como terminal en tu sistema
   FreeBSD, usa un cable null modem entre los dos puertos serie. Si
   ya estas usando un terminal, mira en las instrucciones del mismo.

   A continuacion, modifica el archivo /etc/ttys Por ejemplo, si
   estas instalando un terminal WYSE-50 en el quinto puerto serie,
   usa una linea como esta:

           ttyd4 "/usr/libexec/getty std.38400" wyse50 on secure
           

   Este ejemplo muestra que el puerto /dev/ttyd4 tiene un terminal
   Wyse50 conectado a 38400 bps sin paridad y los logins de root son
   permitidos.

   12.10. ?Porque no puedo ejecutar tip o cu?

   En tu sistema, los programas tip y cu son probablemente
   ejecutables solo por uucp y el grupo dialer. Puedes usar el grupo
   dialer para controlar quien tiene acceso al modem o sistemas
   remotos. Solo tienes que anadirte tu mismo al grupo dialer.

   Alternativamente, puedes dejar que todos los usuarios de tu
   sistema ejecuten tip y cu tecleando:

           # chmod 4511 /usr/bin/cu
           # chmod 4511 /usr/bin/tip
           

   12.11. Mi modem hayes no esta soportado. ?Que puedo hacer?

   Actualmente, el man de tip esta anticuado. Hay un dialer Hayes
   generico. Solo usa ``at=hayes'' en tu archivo /etc/remote.

   El driver Hayes no es tan desarrollado como para reconocer algunas
   de las caracteristicas avanzadas de los modems modernos, mensajes
   como BUSY, NO DIALTONE o CONNECT 115200 lo pueden confundir.
   Deberias anular estos mensajes cuando uses tip (utilizando la
   cadena ATX0&W).

   Tambien, el timeout de llamada para tip esta en 60 segundos. Tu
   modem deberia usar algo menor, o tip puede pensar que hay un
   problema de comunicacion. Intenta con ATS7=45&W.

   12.12. ?Como puedo introducir estos comandos AT?

   Haz lo que se llama una entrada directa en el archivo /etc/remote.
   Por ejemplo, si tu modem esta conectado al primer puerto serie,
   /dev/cuaa0, escribe la siguiente linea:

           cuaa0:dv=/dev/cuaa0:br#19200:pa=none
           

   Usa la velocidad mas alta que soporte tu modem en la seccion br. A
   continuacion teclea tip cuaa0 y estaras conectado al modem.

   Si no existe el dispositivo /dev/cuaa0 en tu sistema , teclea lo
   siguiente:

           # cd /dev
           # ./MAKEDEV cuaa0
           

   O usa el comando cu como root con los siguientes parametros:

           # cu -l``line'' -s``speed''
           

   con line siendo el puerto serie (por ejemplo /dev/cuaa0>) y speed
   siendo la velocidad (por ejemplo 57600. Cuando termines de entrar
   los comandos AT, pulsa la tecla . para salir.

   12.13. El simbolo @ no funciona correctamente!

   El simbolo @ en la opcion de numeros de telefono indica a tip que
   busque en el archivo phone(5) un numero de telefono determinado.
   Pero el simbolo <@> es tambien un caracter especial en otros
   archivos y opciones como /etc/remote. Pon una contrabarra junto al
   caracter:

           pn=\@
           

   12.14. ?Como puedo llamar desde la linea de comandos?

   Pon lo que se llama una entrada generica en el archivo
   /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 puedes hacer cosas como tip -115200 5551234. Si prefieres
   usar cu antes que tip, usa una entrada generica de cu:

           cu115200|Use cu to dial any number at 115200bps:\
           :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du:
           

   y teclea ``cu 5551234 -s 115200''.

   12.15. ?Tengo que teclear la velocidad cada vez que hago esto?

   Pon una entrada para tip1200 o cu1200, pero puedes usar la
   velocidad que mejor se amolde a tus necesidades. tip piensa que
   una buena velocidad por defecto es 1200 bps ya que busca una
   entrada tip1200. No tienes por que usar 1200 bps.

   12.16. Accedo a diferentes hosts a traves de un servidor de
   terminales.

   En lugar de esperar a que estes conectado y teclear CONNECT <host>
   cada vez, usa la opcion cm de tip. Por ejemplo, estas entradas en
   el archivo /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/cua02:br#38400:at=hayes:du:pa=none:pn=5551234:
           

   Esto hara que puedas teclear tip pain o tip muffin para conectarte
   a las maquinas pain o muffin.

   12.17. ?Puede tip intentar mas de una linea para cada lugar?

   Este es un problema habitual en universidades con diferentes
   lineas de modem y unos cientos de usuarios intentado usarlas...

   Haz una entrada para tu universidad en el archivo /etc/remote y
   usa <\@> para la opcion pn:

           big-university:\
           :pn=\@:tc=dialout
           dialout:\
           :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none:
           

   Entonces, lista los numeros de telefono de la universidad en el
   archivo /etc/phones:

           big-university 5551111
           big-university 5551112
           big-university 5551113
           big-university 5551114
           

   tip intentara cada uno de estos numeros en el orden en el que
   esten listados. Si quieres que se realicen reintentos, ejecuta tip
   en una bucle while.

   12.18. ?Porque tengo que teclea CTRL+P dos veces para enviar
   CTRL+P una vez?

   CTRL+P es el caracter por defecto de "forzar", usado para
   indicarle al programa tip que el proximo caracter es un dato
   literal. Puedes configurar el caracter "forzar" a cualquier otro
   caracter con el escape ~s, el cual significa "poner una variable".

   Teclea ~sforce=<single-char> seguido de una nueva linea.
   <single-char> es cualquier caracter simple. Si dejas libre
   <single-char> entonces el caracter de forzar es el caracter nul,
   al cual puedes acceder tecleando CTRL+2 o CTRL+SPACE. Un valor mas
   adecuado para <single-char> es SHIFT+CTRL+6, el cual solo es usado
   en algunos servidores de terminales.

   Puedes tener el caracter de forzar donde quieras, especificando lo
   siguiente en tu archivo $HOME/.tiprc

           force=<single-char>
           

   12.19. De repente, todo lo que tecleo es en mayusculas

   Has debido pulsar CTRL+A, tip tiene este caracter especial para
   gente que tenga la tecla caps-lock estropeada. Usa ~s como en la
   seccion anterior y pon la variable "raisechar" a un valor
   razonable. De hecho, puedes ponerla al mismo valor que que el
   caracter de forzar, si no esperas usar estas caracteristicas.

   Aqui hay un ejemplo del archivo .tiprc perfecto para usuarios de
   Emacs que necesiten teclear CTRL+2 y CTRL+A muchas veces:

           force=^^
           raisechar=^^
           

   El simbolo ^^ es SHIFT+CTRL+6.

   12.20. ?Como puedo hacer transferecia de archivos con tip?

   Si estas conectado con otro sistema UNIX, puedes enviar y recibir
   archivos con ~p (put) y ~t (take). Estos comandos ejecutan cat y
   echo en el sistema remoto para aceptar y enviar archivos. La
   sintaxis es:

           ~p <local-file> [<remote-file>]
           ~t <remote-file> [<local-file>]
           

   No hay chequeo de errores, por lo que es mejor usar otro protocolo
   como zmodem.

   12.21. ?Como puedo usar zmodem con tip?

   Primero, instala uno de los programas zmodem de la coleccion de
   ports (por ejemplo lrzsz y rzsz).

   Para recibir archivos, inicia el programa de envio en la parte
   remota. A continuacion, pulsa enter y teclea ~C rz'' (or ``~C
   lrz'' si instalaste lrzsz) para empezar a recibir localmente.

   Para enviar archivos, inicia el programa de recepcion en la parte
   remota. A continuacion pulsa enter y teclea ~C sz <files>'' (o ~C
   lsz <files>) para enviarlos al sistema remoto.

   12.22. FreeBSD parece que no puede encontrar mis puertos series
   aun cuando la configuracion es correcta.

   Las placas bases y tarjetas con UARTs de Acer no son detectadas
   correctamente por FreeBSD durante la fase de deteccion serie.
   Obten un parche de www.lemis.com para solucionar el problema.

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

                     Capitulo 13. Preguntas varias

   13.1. FreeBSD usa mas espacio de swap que Linux. Porque?

   13.2. ?Porque usar (que son) a.out y ELF como formatos
   ejecutables?

   13.3. ?Porque chmod no puede cambiar los permisos de los links?

   13.4. ?Porque estan los nombres de usuario restringidos a 8
   caracteres?

   13.5. ?Puedo ejecutar binarios DOS bajo FreeBSD?

   13.6. ?Que es sup, y como lo uso?

   13.7. ?Existen herramientas de ahorro de energia en FreeBSD?

   13.8. ?Que significa "MFC"?

   13.9. ?Que significa "BSD"?

   13.1. FreeBSD usa mas espacio de swap que Linux. Porque?

   No lo hace. Deberias pensar "Porque mi swap parece lleno?". Si
   esto es lo que realmente querias decir, es por que poniendo los
   datos en swap en luar de descartarlos, hace que sea mas rapido
   recuperarlos que si el paginador tuviese que ir a traves del
   sistema de archivos y usar bloques sin modificar desde un
   ejecutable.

   La cantidad actual de paginas que puedes tener en el core en una
   sola vez no es reducida; las paginas sin usar son desplazadas como
   sea necesario.

   13.2. ?Porque usar (que son) a.out y ELF como formatos
   ejecutables?

   Para entender por que FreeBSD usa el formato a.out, debes saber
   primero un poco sobre los tres formatos dominantes actualmente en
   UNIX:

     * a.out

       El antiguo y clasico formato de objeto. Usa una corta y
       compacta cabecera con un numero magico en el inicio que es
       usado para caracterizar el formato (mira en a.out(5) para mas
       detalles). Contiene tres segmentos cargados: .text, .data y
       .bss mas una tabla de simbolos y una tabla de cadenas de
       caracteres.

     * COFF

       El formato de objeto SVR3. La cabecera comprime una seccion de
       tablas, de manera que puedas tener mas de una sola seccion
       .test, .data y .bss

     * ELF

       El sucesor de COFF, ofreciendo multiples secciones y valores
       posibles de 32 o 64 bits. Un problema importante: ELF fue
       disenado con la presuncion de que solo existiria un unico ABI
       por arquitectura de sistema. Esta presuncion actualmente es
       incorrecta, incluso en el mundo comercial (el cual tiene al
       menos tres ABIs: SVR4, Solaris y SCO).

       FreeBSD intenta solucionar este problema de manera que provee
       de una utilidad para marcar un ejecutable ELF con informacion
       sobre el ABI con el que es compatible. Para mas informacion,
       mira el man de brandelf.

   FreeBSD viene del sistema clasico y tradicionalmente ha utilizado
   el formato a.out, una tecnologia probada y testeada a traves de
   muchas generaciones de releases de BSD. Tambien es posible
   construir y ejecutar binarios nativos ELF (y kernels) en sistemas
   FreeBSD. FreeBSD inicialmente se resistio al salto de cambiar a
   ELF como su formato por defecto. Porque?, bien, cuando el mundo
   Linux hizo su transicion a ELF no era nada facil abandonar el
   formato ejecutable a.out debido a su inflexible mecanismo de
   tablas basadas en librerias compartidas. Esto hizo muy dificil
   para los fabricantes y desarrolladores la creacion de librerias
   compartidas. A partir del momento en el que se ofrecieron una
   serie de herramientas que ofrecian la solucion al problema de las
   librerias compartidas, el coste de la migracion fue aceptado como
   necesario y la transicion se hizo.

   En el caso de FreeBSD, el mecanismo de librerias compartidas esta
   mas basado en el estilo de SunOS, mucho mas sencillo de usar. De
   todas maneras, empezando con la version 3.0, FreeBSD soportara
   oficialmente binarios ELF como el formato por defecto. Aunque
   pensamos que el formato ejecutable a.out nos ha servidor muy bien,
   la gente de GNU, que hacen las herramientas de compilacion que
   usamos, ha dejado de dar soporte para el formato a.out. Esto nos
   ha forzado a mantener dos versiones divergentes del compilador y
   lincador.

   13.3. ?Porque chmod no puede cambiar los permisos de los links?

   Tienes que usar -H o -L junto con la opcion -R para que funcione.
   Para mas informacion, mira la pagina de chmod y de symlink.

   CUIDADO la opcion -R hace un chmod RECURSIVO. Ten cuidado aal
   especificar directorios o symlinks con chmod. Si quieres cambiar
   los permisos de un directorio referenciado por un symlink, usa
   chmod sin ninguna opcion y sigue el symlink con una barra /. Por
   ejemplo, si foo es un symlink al directorio bar, y quieres cambiar
   los permisos de foo /actualmente bar), deberias hacer algo como
   esto:

           
             chmod 555 foo/
           

   Con la barra, chmod seguira el symlink, foo, para cambiar los
   permisos del directorio bar.

   13.4. ?Porque estan los nombres de usuario restringidos a 8
   caracteres?

   Pensaras que es facil y suficiente con cambiar UT_NAMESIZE y
   reconstruir el kernel, y todo volvera a funcionar.
   Desafortunadamente hay aplicaciones y programas (incluyendo
   herramientas de sistema) que tienen en el propio codigo (no
   siempre 8 o 9, pero si 15 o 20) en estructuras, buffers... y
   romperia los clientes de NIS de Sun y sin duda existirian otros
   problemas interactuando con otros sistemas UNIX.

   En FreeBSD 3.0 y superiores, se ha incrementado el numero maxmimo
   de caracteres a 16 y todas esas utilidades con longitud de
   caracteres prefijada han sido encontradas y arregladas. El hecho
   de que este cambio afectase a muchas areas del sistema es el
   motivo por el que el cambio no se ha hecho hasta la version 3.0.

   Si eres absolutamente cuidadoso y quieres arreglas tu mismo este
   problema en versiones anteriores, edita el archivo
   /usr/include/utmp.h y cambia el parametro UT_NAMESIZE a la
   longitud que desees. Tambien debes editar el archivo
   /usr/include/sys/param.h y poner el valor de MAXLOGNAME al mismo
   que UT_NAMESIZE. Finalmente, recompila los fuentes, no te olvides
   que el contenido de /usr/include es actualizado cada vez!. En su
   lugar, cambia los archivos apropiados en /usr/src/..

   13.5. ?Puedo ejecutar binarios DOS bajo FreeBSD?

   Si, empezando en la version 3.0 puedes usar la emulacion DOS
   rundos de BSDI, la cual ha sido integrada y mejorada. Envia un
   mail a la Lista de discusion de emulacion en FreeBSD si estas
   interesado en participar en la evolucion de esta caracteristica.

   Para sistemas pre-3.0 hay una pequena utilidad llamada pcemu en la
   coleccion de puertos que emula un 8088 y suficientes servicios de
   BIOS para ejecutar aplicaciones de modo texto. Requiere el sistema
   de X Window.

   13.6. ?Que es sup, y como lo uso?

   SUP significa Software Update Protocol, y fue desarrollado por CMU
   para mantener sus arboles de desarrollo sincronizados. Nosotros lo
   usabamos para manterner el servidor central sincronizado con otros
   servidores remotos.

   SUP no es amigo del ancho de banda, y ha sido retirado. El metodo
   actual recomendado para mantener tus fuentes actualizados es CVSup

   13.7. ?Existen herramientas de ahorro de energia en FreeBSD?

   FreeBSD usa la instruccion HLT (halt) cuando el sistema esta
   (idle) para reducir el consumo de energia. Si tienes la opcion APM
   (Automatic Power Management) configurado, FreeBSD puede poner la
   cpu en modo de baja energia.

   13.8. ?Que significa "MFC"?

   MFC es un acronimo para "Merges From -CURRENT". Es usado en los
   logs de CVS para indicar que un cambio se ha migrado de la rama
   CURRENT a la rama STABLE.

   13.9. ?Que significa "BSD"?

   Pertenece a un lenguaje secreto que solo sus miembros conoces. No
   tiene traduccion literal, pero basta con decir que su traduccion
   esta entre, "Equipo de Formula-1", "Los Pinguinos son un buen
   aperitivo", y "Tenermos mejor sentido del humor que Linux" :-)

   Seriamente, BSD es un acronimo de "Berkeley Software
   Distribution", el cual es el nombre que el CSRG de Berkeley
   (Computer Systems Research Group) escogio para sus distribuciones
   de Unix.

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

            Capitulo 14. Solo para hackers serios de FreeBSD

   14.1. ?Que son SNAPs y RELEASEs?

   14.2. ?Como puedo hacerme mi propia release personalizada?

   14.3. ?Como creo discos de instalacion personalizados?

   14.4. ``make world'' destruye mis binarios instalados.

   14.5. Cuando mi sistema arranca, dice (bus speed defaulted).

   14.6. ?Puedo seguir la rama current con acceso limitado a
   Internet?

   14.7. ?Como partir la distribucion en archivos de 240k?

   14.8. ?He escrito una extension del kernel, a quien la envio?

   14.9. ?Como se detectan e inicializan las tarjetas ISA y PnP?

   14.10. ?Soporta FreeBSD arquitecturas diferentes a x86?

   14.11. Necesito un numero de dispositivo para un driver propio

   14.12. Alternativas a la politica de directorios

   14.13. Obtener todo lo posible de un "kernel panic"

   14.14. dlsym() no funciona con ejecutables ELF!

   14.15. Incrementando o reduciendo el espacio de direcciones del
   kernel

   14.1. ?Que son SNAPs y RELEASEs?

   Hay actualmente tres ramas activas/semi-activas en el desarrollo
   de FreeBSD y en su CVS Repository:

     * RELENG_2_2 AKA 2.2-stable AKA "2.2 branch"

     * RELENG_3 AKA 3.x-stable AKA "3.0 branch"

     * HEAD AKA -current AKA 4.0-current

   HEAD no es una rama actual, como las otras dos, es simplemente una
   constante simbolica para la version de desarrollo actual a la cual
   nos referimos simplemente como -current.

   Actualmente, -current es el desarrollo de la version 4.0 y la rama
   3.0-stable es RELENG_3, separada de -current en Enero de 1999.

   14.2. ?Como puedo hacerme mi propia release personalizada?

   Para hacer una release necesitas hacer tres cosas: primero,
   necesitas usar un kernel con el driver vn configurado. Anade esto
   a tu archivo de configuracion del kernel y crea un nuevo kernel:

           
             pseudo-device vn         #Vnode driver (turns a file into a device)
           

   Segundo, debes tener las herramientas del CVS a mano. Para hacer
   esto, puedes usar CVSUP pero en tu supfile pon el nombre de la
   release a cvs y borra cualquier tag campo de fecha:

           *default prefix=/home/ncvs
           *default base=/a
           *default host=cvsup.FreeBSD.org
           *default release=cvs
           *default delete compress use-rel-suffix

           ## Main Source Tree
           src-all
           src-eBones
           src-secure

           # Other stuff
           ports-all
           www
           doc-all
           

   A continuacion ejecuta cvsup -g supfile para tener todos los bits
   correctos en tu computador.

   Finalmente, necesitas una buena cantidad de espacio vacio para
   crear en el la release. Digamos que esta en /algun/disco/grande y
   en el ejemplo anterior has dejado los archivos del CVS en
   /home/ncvs:

           
           setenv CVSROOT /home/ncvs        # or export CVSROOT=/home/ncvs
           cd /usr/src/release
           make release BUILDNAME=3.0-MY-SNAP CHROOTDIR=/algun/disco/grande/release
           

   Una release completa sera creada en /algun/disco/grande/ y tendras
   una instalacion completa de tipo FTP en /algun/disco/grande/R/ftp
   cuando acabes. Si quieres crear tu SNAP usando otra rama de
   desarrollo diferente de -current, puedes anadir RELEASETAG=SOMETAG
   a la linea de comando anterior de creacion de la release. Por
   ejemplo, RELEASETAG=RELENG_2_2 crearia un snapshot 2.2 GAMMA.

   14.3. ?Como creo discos de instalacion personalizados?

   El proceso completo de creacacion de discos de instalacion y
   archivos fuentes y binarios esta automatizado por varios targets
   en /usr/src/release/Makefile. La informacion alli contenida
   deberia ser suficiente para que puedas empezar. Falta decir que
   este proceso necesita la ejecucion del comando "make world" y
   quizas te use mucho tiempo y espacio en disco.

   14.4. ``make world'' destruye mis binarios instalados.

   Si, esta es la idea general; como su nombre sugiere, "make world"
   rehace todos los binarios del sistema, de manera que puedas estar
   seguro de tener un entorno limpio y consistente al final (que es
   por lo que tarda tanto).

   Si la variable de entorno DESTDIR esta definida mientras se
   ejecuta make world o make install, los binarios creados nuevamente
   seran depositados en un arbol de directorios identico al
   instalado, y a partir de ${DESTDIR}. Algunas combinaciones
   aleatorias de modificaciones de librerias compartidas y programas
   pueden causar que falle el make world.

   14.5. Cuando mi sistema arranca, dice (bus speed defaulted).

   Las controladoras SCSI Adaptec 1542 permiten al usuario configurar
   su velocidad de acceso al bus en software. Versiones anteriores
   del driver de la 1542 intentaban determinar la velocidad mas alta
   factible y configurar la Adaptec a esta. Nos hemos encontrado con
   que esto hace fallar el sistema de algunos usuarios, por lo que
   tienes que definir la opcion de configuracion del kernel TUNE_1542
   para que esto ocurra. En algunos sistemas puede que puede hacer
   que los discos vayan mas rapidos, pero en otros puede que los
   datos queden corrompidos.

   14.6. ?Puedo seguir la rama current con acceso limitado a
   Internet?

   Si, puedes hacerlo sin bajarte todo el codigo fuente usando la
   utilidad CTM.

   14.7. ?Como partir la distribucion en archivos de 240k?

   Los sistemas BSD mas modernos tienen una opcion -b para partir que
   les permite partir los archivos en tamanos arbitrarios.

   Aqui hay un ejemplo de /usr/src/Makefile.

           bin-tarball:
           (cd ${DISTDIR}; \
           tar cf - . \
           gzip --no-name -9 -c | \
           split -b 240640 - \
           ${RELEASEDIR}/tarballs/bindist/bin_tgz.)
           

   14.8. ?He escrito una extension del kernel, a quien la envio?

   Por favor, mira en como enviar codigo.

   Y gracias por pensar en nosotros!

   14.9. ?Como se detectan e inicializan las tarjetas ISA y PnP?

   Brevemente, hay unos cuantos puertos de entrada/salida a los que
   todas las tarjetas PnP responden cuando el computador pregunta si
   hay alguien ahi. Asi, cuando comienza la rutina de prueba de PnP,
   pregunta si hay alguna tarjeta PnP presente y todas las tarjetas
   responden con su numero de modelo a una lectura I/O del mismo
   puerto. Asi el codigo de prueba puede conocer el ID de cada
   tarjeta (asignado por Microsoft/Intel).

   Los ID's son dos campos de 32 bits (2^64) + 8 bits de checksum.
   Los primeros 32 bits son el identificador del fabricante. No se ha
   dicho publicamente, pero parece estar asumido que diferentes tipos
   de tarjeta del mismo fabricante pueden tener diferentes id's de
   fabricante. La idea de necesitar 32 bits solo para los fabricantes
   parece un poco excesiva.

   La parte baja de 32 bits son un numero de serie, direccion
   ethernet, algo que haga a la tarjeta unica. El fabricante no debe
   producir nunca una segunda tarjeta que tenga los mismos 32 bits de
   la parte baja, aunque los 32 bits de la parte alta sean
   diferentes. Asi puedes tener multiples tarjetas del mismo tipo en
   la misma maquina y los 64 bits seran unicos para cada tarjeta.

   Los grupos de 32 bits nunca pueden ser todos cero. Esto permite
   mostrar todos los bits no-cero durante la busqueda binaria
   inicial.

   Una vez el sistema ha identificado todos los ID's de las tarjetas
   presentes, reactivaraa cada tarjeta, una tras otra (a traves de
   los mismos puertos I/O), y encontrara los recursos que cada
   tarjeta necesita, que opciones de interrupcion estan disponibles,
   etc. Se realiza un escaneo sobre todas y cada una de las tarjetas
   presentes para conocer esta informacion.

   Esta informacion se combina con la informacion de los archivos ECU
   del disco y con las BIOS MLB. El soporte PnP de ECU y las BIOS
   para hardware en el MLB usualmente es sintetico, y los perifericos
   no hacen PnP genuino. De todas maneras, examinando la informacion
   del BIOS mas la informacion ECU, la rutina de prueba puede causar
   que los dispositivos que no son PnP puedan evitar a esos
   dispositivos que el codigo de prueba no puede volver a posicionar.

   Asi, los dispositivos PnP son visitados una vez mas y se les
   asigna su I/O, DMA, IRQ, direcciones del mapa de memoria. Los
   dispositivos apareceran en esas direcciones y permaneceran en
   ellas hasta que se vuelva a reinicializar la maquina.

   Todo el proceso se ha simplificado mucho, pero espero que hayas
   podido hacerte una idea del proceso.

   14.10. ?Soporta FreeBSD arquitecturas diferentes a x86?

   Diferentes grupos de personas han expresado su interes en trabajar
   en un port multi-arquitectura de FreeBSD y FreeBSD/AXP (ALPHA) es
   un ejemplo de ese esfuerzo realizado, ahora disponible en forma de
   3.0 SNAPshot release en ftp://ftp.FreeBSD.org/pub/FreeBSD/alpha.
   El port de ALPHA funciona actualmente en diferentes tipos de
   maquinas ALPHA, entre ellas, AlphaStation, AXPpci, PC164, Miata y
   Multia. Este port todavia no se considera una release completa y
   no lo sera hasta que exista una coleccion completa de herramientas
   de instalacion y una distribucion completa en cdrom para
   instalacio, incluyendo un numero razonable de ports y packages
   funcionales. FreeBSD/AXP debe considerarse software de calidad
   BETA en estos momentos. Para mas informacion del proyecto,
   subscribete a la <FreeBSD-alpha@FreeBSD.org> lista de correo.

   Tambien se ha expresado interes en un port de FreeBSD para
   arquitectura SPARC. Subscribete a <FreeBSD-sparc@FreeBSD.org> la
   lista si estas interesado en participar en el proyecto. Para
   discusiones generales en nuevas arquitecturas, participa en la
   lista <FreeBSD-platforms@FreeBSD.org>.

   14.11. Necesito un numero de dispositivo para un driver propio

   Esto depende de si quieres hacer que el driver este publicamente
   disponible. Si la respuesta es afirmativa, por favor, envianos una
   copia del codigo fuente del driver y las modificaciones apropiadas
   del archivo files.i386, un ejemplo de configuracion y el codigo
   apropiado de MAKEDEV para crear cualquier archivo especial que use
   tu dispositivo. Puedes enviar todo lo necesario a
   <FreeBSD-hackers@FreeBSD.org>.

   14.12. Alternativas a la politica de directorios

   En respuesta a esta pregunta de politicas alternativas para los
   directorios, el esquema que esta actualmente en uso no ha cambiado
   desde que lo escribi en 1983. Escribi esa politica para el sistema
   de archivos rapido original, y nunca se ha revisado. Trabaja bien
   manteniendo los grupos de cilindros. Como muchos de vosotros
   habreis notado, el rendimiento es muy pobre con "find". Muchos
   sistemas de archivos son creados desde archivos que fueron creados
   por una primera busqueda en profundidad (tambien conocido como
   ftw). Estos directorios terminan esparcidos a traves de los grupos
   de cilindros. Si conociesemos el numero total de directorios a
   crear, la solucion seria crear (total / fs_ncg) por grupo de
   cilindros antes de moverlos. Obviamente, tendriamos que crear
   algun tipo de heuristica para adivinar este numero. Usando un
   numero pequeno fijo (como puede ser 10) haria de orden de
   magnitud. Para diferencial restores de operaciones normales
   (cuando el algoritmo actual es probablemente mas sensible), podris
   usar el clustering hasta 10 si fueran todos hechos dentro de una
   ventana de diez segundos. De cualquier manera, mi conclusion es
   que este es un area para la experimentacion.

   Kirk McKusick, Septiembre 1998

   14.13. Obtener todo lo posible de un "kernel panic"

   [Esta seccion fue extraida de un mensaje escrito por Bill Paul en
   la lista FreeBSD-current por Dag-Erling Coidan Smo/rgrav, quien a
   fijado algunos errores y anadido algunos comentarios entre
   corchetes]

   From: Bill Paul <wpaul@skynet.ctr.columbia.edu>
           Subject: Re: the fs fun never stops
           To: ben@rosengart.com
           Date: Sun, 20 Sep 1998 15:22:50 -0400 (EDT)
           Cc: current@FreeBSD.org
           

   [<ben@rosengart.com> envio el siguiente panic]

   > Fatal trap 12: page fault while in kernel mode
           > fault virtual address   = 0x40
           > fault code              = supervisor read, page not present
           > instruction pointer     = 0x8:0xf014a7e5
                                           ^^^^^^^^^^
           > stack pointer           = 0x10:0xf4ed6f24
           > frame pointer           = 0x10:0xf4ed6f28
           > code segment            = base 0x0, limit 0xfffff, type 0x1b
           >                         = DPL 0, pres 1, def32 1, gran 1
           > processor eflags        = interrupt enabled, resume, IOPL = 0
           > current process         = 80 (mount)
           > interrupt mask          =
           > trap number             = 12
           > panic: page fault
           

   [Cuando] ves un mensaje como este, no es suficiente con solo
   reproducirlo y enviarlo. El valor del puntero de instrucciones que
   he marcado arriba es importante; desafortunadamente, depende de la
   configuracion. En otras palabras, el valor varia dependiendo de la
   imaden de kernel exacta que se use. Si estas usando el kernel
   GENERIC de uno de los snapshots, entonces es posible que alguien
   pueda seguir la funcion problematica, pero si estas usando un
   kernel personalizado, entonces solo tu puedes decirnos donde ha
   ocurrido el fallo.

   Tendrias que hacer lo siguiente:

     * Anotar el valor del puntero de la instruccion. Ten en cuenta
       la parte 0x8: al inicio no es significante en este caso: es la
       parte 0xf0xxxxxx la que queremos.

     * Cuando el sistema rearranca, haz lo siguiente:

                     % nm /kernel.that.caused.the.panic | grep f0xxxxxx
                   

       donde f0xxxxxx es el valor del puntero de la instruccion. El
       problema es que no obtendras una busqueda exacta ya que los
       simbolos en la tabla de simbolos del kernel son para los
       puntos de entrada de las funciones y la direccion del puntero
       de la instruccion estara en algun lugar dentro de una funcion,
       no al principio. Si no obtienes un resultado exacto, omite el
       ultimo digito del valor del puntero de la instruccion e
       intentalo otra vez, por ejemplo:

                     % nm /kernel.that.caused.the.panic | grep f0xxxxx
                   

       Si esto no da ningun resultado, elimina otro digito. Repite la
       operacion hasta que obtengas algun tipo de salida. El
       resultado sera una lista de posibles funciones que causan el
       panic. Este no es un sistema muy exacto de busqueda de
       errores, pero es mejor que nada.

   Veo gente que constantemente envia mensajes de panics como este,
   pero raramente veo que alguien se tome el tiempo de buscar la
   coincidencia entre el puntero de instruccion y una funcion en la
   tabla de simbolos del kernel.

   La mejor manera de hacer el seguimiento de la causa de un panic es
   capturar un "crash dump", usando gdb(1) para hacer una traza del
   "crash dump". Por supuesto, esto depende de que gdb(1) funcione
   correctamente en -current, lo que no puedo garantizar (recuerdo
   que alguien ha comentado que el nuevo gdb(1) en formato ELF no
   manejaba bien los "dumps" de un crash del kernel; alguien deberia
   mirar esto antes de que la 3.0 salga del estado beta).

   En cualquier caso, el metodo que normalmente uso es este:

     * Crear un archivo de configuracion de kernel, opcionalmente
       anadiendo 'options DDB' si piensas que necesitas el debugger
       del kernel por algun motivo. (Uso esto principalmente para
       configurar puntos de salida si sospecho que existe alguna
       condicion que crea un loop infinito).

     * Usar config -g KERNELCONFIG para crear el directorio de
       configuracion del kernel.

     * cd /sys/compile/KERNELCONFIG; make

     * Esperar a que el kernel termine de compilar.

     * cp kernel kernel.debug

     * strip -d kernel

     * mv kernel /kernel.orig/

     * cp kernel /

     * reboot

   [Nota: ahora que los kernels de FreeBSD 3.x son ELF por defecto
   debes usar strip -g en lugar de strip -d. Si por algun motivo tu
   kernel es aun a.out, usa strip -aout -d.]

   Ten en cuenta que TU NO QUIERES ARRANCAR CON UN KERNEL QUE TIENE
   TODOS LOS SIMBOLOS DE DEBUG EN EL. Un kernel compilado con -g
   puede llegar facilmente a los 10MB de tamano. No tienes que
   arrancar esta iman masiva, solo lo necesitas para poder usar
   despues gdb(1) (gdb(1) quiere la tabla de simbolos). Al contrario,
   quieres mantener una copia de la imagen completa y crear una
   segunda imagen con los simbolos de debug desactivados usando strip
   -d. Es esta segunda imagen la que quieres arrancar.

   Para asegurarte de capturar un "crash dump", necesitas editar el
   archivo /etc/rc.conf y apuntar dumpdev a tu particion de swap.
   Esto hara que el script rc(8) use el comando dumpon(8) para
   activar los "crash dumps". Tambien puedes ejecutar manualmente
   dumpon(8). Despues de un panic, el "crash dump" puede ser
   recuperado usando savecore(8); si dumpdev esta en /etc/rc.conf, el
   script rc(8) ejecutara savecore(8) automaticamente y pondra el
   "crash dump" en /var/crash.

   NOTA: los "crash dumps" de FreeBSD suelen tener el mismo tamano
   que la cantidad total de memoria fisica del sistema. Esto
   significa que si tienes 64MB de RAM, obtendras un "crash dump" de
   64MB. Debido a esto, tienes que asegurarte de tener suficiente
   espacio libre en /var/crash. Alternativamente puedes ejecutar
   savecore(8) manualmente y hacer la recuparacion en otro directorio
   donde tengas mas espacio libre. Es posible limitar el tamano del
   "crash dump" usando options MAXMEM=(foo) para indicar la cantidad
   de memoria que el kernel puede ocupar. Por ejemplo, si tienes
   128MB de RAM, puedes limitar el uso de memoria del kernel a 16MB
   para que el "crash dump" sea de 16MB y no de 128MB.

   Una vez hayas recuperado el "crash dump", puedes obtener una traza
   del stack con gdb(1) de la manera siguiente:

             % gdb -k /sys/compile/KERNELCONFIG/kernel.debug /var/crash/vmcore.0
             (gdb) where
           

   Es posible que aparezcan muchas lineas de informacion: es una
   buena idea usar el comando script(1) para capturarlas todas.
   Usando la imagen del kernel con todos los simbolos de debug deberi
   mostrar la linea exacta de codigo fuente del kernel donde ha
   ocurrido el panic. Normalmente, tienes que leer la traza del stack
   de abajo hacia arriba para poder conocer la secuencia exacta de
   eventos que han provocado el crash. Tambien puedes usar gdb(1)
   para mostrar los contenidos de las diferentes variables o
   estructuras para examinar el estado del sistema en el momento del
   crash.

   Ahora, si eres realmente curioso y tienes un segundo computador,
   puedes configurar gdb(1) para hacer un debug remoto de manera que
   puedes usar gdb(1) en un sistema para revisar el kernel de otro
   sistema, de la misma manera que lo harias en la maquina local.

   [Bill anade: "Olvide mencionar una cosa: si tienes DDB activado,
   puedes forzar un panic (y un crash dump) tecleando "panic" en el
   prompt del ddb. Es posible que el debugger se pare durante la fase
   del panic. Si esto ocurre, teclea "continue" y el crash dump
   finalizara"]

   14.14. dlsym() no funciona con ejecutables ELF!

   Las herramientas ELF no hacen por defecto que los simbolos
   definidos en un ejecutable sean visibles por el linker dinamico.
   Consecuentemente, dlsym() buscara en datos obtenidos desde
   llamadas a dlopen(NULL, flags), lo que provoca que no se
   encuentren esos simbolos.

   Si quieres buscar, usando dlsym() simbolos presentes en el
   ejecutable principal de un proceso, necesitas linkar el ejecutable
   usando la opcion -export-dynamic en el linkador ELF.

   14.15. Incrementando o reduciendo el espacio de direcciones del
   kernel

   Por defecto, el espacio de direcciones del kernel es de 256MB en
   FreeBSD 3.x y 1GB en FreeBSD 4.x. Si gestionas un servidor de red
   muy cargado (por ejemplo, servidores FTP o HTTP con mucho
   trafico), es posible que notes que 256MB no es suficiente.

   Asi que... como incremento el espacio de direcciones?. Hay dos
   aspectos a tener en cuenta. Primero, necesitas indicarle al kernel
   que reserve una mayor parte del espacio de direcciones para el
   mismo. Segundo, ya que el kernel se carga al inicio del espacio de
   direcciones, necesitas disminuir la direccion de carga.

   El primer aspecto lo solucionamos incrementando el valor de NKPDE
   en src/sys/i386/include/pmap.h. Esta es una entrada de ejemplo
   para 1GB de espacio de direcciones:

             #ifndef NKPDE
             #ifdef SMP
             #define NKPDE                   254     /* addressable number of page tables/pde's */
             #else
             #define NKPDE                   255     /* addressable number of page tables/pde's */
             #endif  /* SMP */
             #endif
           

   Para encontrar el valor correcto de NKPDE, divide el espacio de
   direcciones deseado (en megabytes) por cuatro, despues resta uno
   por UP y dos por SMP.

   Para solucionar el segundo aspecto, necesitas calcular la
   direccion correcta de carga: simplemente resta el tamano del
   espacio de direcciones (en bytes) de 0x100100000; el resultado es
   0xc0100000 para 1GB de espacio de direcciones. Ajusta LOAD_ADDRESS
   en src/sys/i386/conf/Makefile.i386 a ese valor; a continuacion pon
   el contador al inicio de la seccion listado en
   src/sys/i386/conf/kernel.script al mismo valor, como sigue:

             OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
             OUTPUT_ARCH(i386)
             ENTRY(btext)
             SEARCH_DIR(/usr/lib); SEARCH_DIR(/usr/obj/elf/home/src/tmp/usr/i386-unknown-FreeBSDelf/lib);
             SECTIONS
             {
               /* Read-only sections, merged into text segment: */
               . = 0xc0100000 + SIZEOF_HEADERS;
               .interp     : { *(.interp)    }
           

   Reconfigura y compila el kernel. Probablemente tengas problemas
   con top(1), ps(1) y programas asi haciendo un make world deberin
   solucionarse esos problemas (o una recompilacion manual de libkvm,
   ps y top despues de copiar el pmap.h parcheado a /usr/include/vm/.

   NOTA: el tamano del espacio de direcciones debe ser un multiplo de
   cuatro megabytes.

   [David Greenman anade: Pienso que el espacio de direcciones del
   kernel necesita ser una potencia de 2, pero no estoy totalmente
   seguro.]

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

                      Capitulo 15. AGRADECIMIENTOS

       Si ves algun problema o error en esta FAQ, o quieres enviar
       informacion para que sea anadida, por favor, envia 
       un mail a la direccion faq-es@es.FreeBSD.org. Apreciamos tu 
       informacion e interes, y no podemos hacer una FAQ mejor 
       sin tu ayuda.

                                         FreeBSD Spanish Documentation Project.
     

   Cristobal Talavera (cristobal@es.FreeBSD.org)

           Por haber obtenido la libertad :)

   David Casademunt (david@es.FreeBSD.org)

           No hay hardware que se le resista.

   Nik Clayton (nik@FreeBSD.org)

           Gracias a su ayuda todo esto ha sido posible.

   Nexus Comunicacaciones (www.ncsa.es)

           Por mantener el mirror y darme las facilidades para hacer
           todo esto.

   Oscar Colet (oscarc@abaforum.es)

           Por aguantar lo que tiene que aguantar.

   Jordan Hubbard

           Actualizaciones y entradas ocasionales.

   Doug White

           Recopilaciones y respuestas en FreeBSD-questions.

   Joerg Wunsch

           Recopilaciones y respuestas en las news.

   Garrett Wollman

           Redes.

   Jim Lowe

           Informacion sobre multicast.

   Peter da Silva

           "Machaca de las teclas" de FreeBSD FAQ

   The FreeBSD Team

           De todo.

   y para todos los que hemos olvidado, disculpas y muchas gracias
   por todo!.

   Jesus Rodriguez jesusr@FreeBSD.org

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

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