Manual de FreeBSD

Proyecto de Documentación de FreeBSD

¡Bienvenido a FreeBSD!. Este manual cubre la instalación y uso diario de FreeBSD 5.3-RELEASE y FreeBSD 4.10-RELEASE. Este manual está en constante evolución y es el resultado del trabajo de muchas personas. Algunas secciones no están completas y otras necesitan ser actualizadas. Si estás interesado en colaborar en este proyecto, envía un mensaje de correo electrónico a lista de correo del proyecto de documentación de FreeBSD. La última versión de este documento está siempre disponible en el servidor World Wide Web de FreeBSD. También está disponible en diferentes formatos y opciones de compresión en el servidor FTP de FreeBSD o en los numerosos mirrors. Si se prefiere disponer de una copia en papel de este manual, se puede adquirir en FreeBSD Mall. También es posible realizar búsquedas en este manual.

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

  1. Redistributions of source code (SGML DocBook) must retain the above copyright notice, this list of conditions and the following disclaimer as the first lines of this file unmodified.

  2. Redistributions in compiled form (transformed to other DTDs, converted to PDF, PostScript, RTF and other formats) must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

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

FreeBSD is a registered trademark of Wind River Systems, Inc. This is expected to change soon.

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

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

ARM is a registered trademark of ARM Limited.

Adaptec is a registered trademark of Adaptec, Inc.

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

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

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

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

CVSup is a registered trademark of John D. Polstra.

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

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

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

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

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

Linux is a registered trademark of Linus Torvalds in the United States.

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

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

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

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

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

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

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

Oracle is a registered trademark of Oracle Corporation.

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

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

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

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

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

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

MATLAB is a registered trademark of The MathWorks, Inc.

SpeedTouch is a trademark of Thomson

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

VMware is a trademark of VMware, Inc.

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

Mathematica is a registered trademark of Wolfram Research, Inc.

XFree86 is a trademark of The XFree86 Project, Inc.

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

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


Tabla de contenidos
I. Primeros pasos
1. Introducción
1.1. Sinópsis
1.2. ¡Bienvenido a FreeBSD!
1.3. Acerca del proyecto FreeBSD
2. Instalación de FreeBSD
2.1. Sinopsis
2.2. Tareas anteriores a la instalación
2.3. Inicio de la instalación
2.4. Introducción a sysinstall
2.5. Asignación de espacio en disco
2.6. Elección de qué instalar
2.7. Elección del medio de instalación
2.8. El punto sin retorno
2.9. Después de la instalación
2.10. Hardware soportado
2.11. Solución de problemas
2.12. Guía de instalación avanzada
2.13. Cómo preparar su propio medio de instalación
3. Conceptos Básicos de Unix
3.1. Sinópsis
3.2. Permisos
3.3. Estructura de directorios
3.4. Intérpretes de órdenes (Shells)
3.5. Editores de texto
3.6. Para más información
4. Instalación de Aplicaciones: Paquetes y Ports
4.1. Sinópsis
4.2. Aproximación a la Instalación de Software
4.3. Localizando su Aplicación
4.4. Usando el Sistema de Paquetes
4.5. Usando la Colección de Ports
4.6. Actividades Post-Instalación
4.7. Resolución de Problemas
5. El sistema X Window
5.1. Sinopsis
5.2. Entender X
5.3. Instalar X11
5.4. Configuración de X11
5.5. Uso de ``fuentes'' en X11
5.6. El gestor de pantalla X
5.7. Entornos de escritorio
II. Tareas comunes
6. Sonido
6.1. Sinópsis
6.2. Identificar el Dispositivo Correcto
6.3. Recompilar el Kernel
6.4. Crear y Probar Nodos de Dispositivos
6.5. Problemas Comunes
6.6. Audio MP3
7. Configuración del Kernel de FreeBSD
7.1. Sinópsis
7.2. ¿Por qué Construír un Kernel Propio?
7.3. Compilación e Instalación de un Kernel Personalizado
7.4. El Fichero de Configuración
7.5. Creación de Nodos para los Dispositivos
7.6. En Caso de que Algo No Funcione
8. Depurando el Kernel
8.1. Depuración de un Kernel Crash Dump con kgdb
8.2. Depurando un crash dump con DDD
8.3. Analisis Post-mortem de un Dump
8.4. Depuración En-línea del Kernel Usando DDB
8.5. Depuración En-Línea Usando El GDB remoto
8.6. Depurando Un Driver de Consola
9. Añadiendo Opciones a la Configuración de un Nuevo Kernel
9.1. ¿Qué son las Opciones del Kernel?
9.2. Ahora, ¿Qué Debo Hacer?
10. Imprimir
10.1. Sinópsis
10.2. Introducción
10.3. Configuración Básica
10.4. Configuración Avanzada de una Impresora
10.5. Uso de las Impresoras
10.6. Alternativas al Sistema de Impresión Estándar
10.7. Resolución de Problemas
11. Emulación Linux
III. Administración del sistema.
12. Configuración y Adaptación del Sistema
12.1. Configuración de Tarjetas de Red
13. El Proceso de Arranque en FreeBSD
13.1. Sinópsis
13.2. El Problema que representa Arrancar el Sistema
13.3. El RMA, y las Etapas de Arranque Uno, Dos y Tres
13.4. Interacción con el Kernel Durante el Arranque
13.5. Device Hints
13.6. Init: Inicialización del Proceso de Control
13.7. Secuencia de Apagado
14. Usuarios y administración básica de cuentas
14.1. Sinópsis
14.2. Introducción
14.3. La cuenta superusuario
14.4. Cuentas de sistema
14.5. Cuentas de usuario
14.6. Modificación de cuentas
14.7. Limitar a los usuarios
14.8. Personalizar a los usuarios
14.9. Grupos
15. Seguridad
15.1. Sinópsis
15.2. Introducción
15.3. Asegurando FreeBSD
16. Discos
16.1. Uso de Sysinstall
16.2. Utilización de la línea de comandos
16.3. * Discos no tradicionales
16.4. Creación de CDs
17. El Gestor de Volúmenes Vinum
17.1. Sinópsis
17.2. Los Discos son Demasiado Pequeños
17.3. Cuellos de Botella en el Acceso
17.4. Integridad de Datos
17.5. Objetos Vinum
17.6. Ejemplos
17.7. Esquema de Nombres de los Objetos
17.8. Configuración de Vinum
17.9. Uso de Vinum en el Sistema de Ficheros Raíz
18. Localización
19. Lo último de lo último
19.1. Sinópsis
19.2. FreeBSD-CURRENT vs. FreeBSD-STABLE
19.3. Sincronización de su código fuente
19.4. Uso de make world
IV. Comunicaciones en red
20. Comunicaciones Serie
20.1. Introducción
20.2. Terminales
21. PPP y SLIP
21.1. Sinópsis
21.2. Uso de User PPP
21.3. Uso de Kernel PPP
21.4. Uso de PPP sobre Ethernet (PPPoE)
21.5. Uso de PPP sobre ATM (PPPoA)
21.6. Uso de SLIP
22. Correo Electrónico
22.1. Sinópsis
22.2. Utilización del correo electrónico
22.3. Configuración de sendmail
22.4. Sustitución del Agente de Transferencia de Correo
22.5. Depuración de Problemas
22.6. Conceptos Avanzados
22.7. SMTP con UUCP
22.8. Configuración para sólamente enviar correo
22.9. Utilización del correo con una conexión mediante módem analógico (dial-up)
22.10. Autentificación utilizando SMTP
22.11. Agente de Correo de Usuario
22.12. Manejo de fetchmail
22.13. Uso de procmail
23. Networking Avanzado
23.1. Resumen
23.2. Pasarelas y Encaminadores
23.3. Redes sin cables (``wireless'')
23.4. Bluetooth
23.5. Puenteado
23.6. NFS
23.7. Ejecución sin Disco Duro
23.8. RDSI
23.9. NIS/YP
23.10. DHCP
23.11. DNS
23.12. NTP
23.13. Traducción de Direcciones de Red
23.14. El ``Super Servidor'' inetd
23.15. Línea IP Paralela (PLIP)
23.16. IPv6
23.17. ATM en FreeBSD 5.X
V. Apéndices
24. Cómo obtener FreeBSD
24.1. Servidores FTP
25. Bibliografía
25.1. Libros y revistas específicas sobre FreeBSD
25.2. Guías de usuario
25.3. Guías de administrador
25.4. Guías de programadores
25.5. El sistema operativo por dentro
25.6. Referencia de seguridad
25.7. Referencia de hardware
25.8. Historia de UNIX
25.9. Diarios y revistas
A. Recursos en Internet
A.1. Listas de Correo
A.2. Grupos de Noticias de Usenet
A.3. Servidores WWW
A.4. Direcciones de Correo Electrónico
A.5. Cuentas Shell
26. PGP keys
26.1. Responsables
26.2. Miembros del Core Team
Colofón
Lista de tablas
2-1. Ejemplo de inventario de dispositivos
2-2. Estructura de particiones del primer disco
2-3. Esquema de particiones para varios discos
2-4. Perfiles de seguridad posibles
2-5. Nombre de las imágenes ISO de FreeBSD y su significado
23-1. Cableado de una Conexión de Cable Paralelo para Redes
23-2. Direcciones IPv6 Reservadas
Lista de figuras
2-1. Menú de configuración del kernel
2-2. El interfaz visual de configuración de dispositivos del kernel
2-3. Lista expandida de controladores
2-4. Configuración de controladores sin conflictos
2-5. El menú principal de sysinstall
2-6. Un ejemplo de resultado de prueba de dispositivos
2-7. Seleccionar la salida de sysinstall
2-8. Uso de la selección en el menú principal de de sysinstall
2-9. Selección del menú de documentación
2-10. El menú de documentación de sysinstall
2-11. Menú principal de sysinstall
2-12. Menú de mapas de teclado de sysinstall
2-13. Menú principal de sysinstall
2-14. Opciones de sysinstall
2-15. Comienzo de una instalación estándar
2-16. Elija en qué unidad usar FDisk
2-17. Particionamiento típico con FDisk
2-18. Partición con FDisk usando el disco completo
2-19. Menú de gestores de arranque de sysinstall
2-20. Salir de la selección de unidad
2-21. El editor Disklabel
2-22. Editor Disklabel con los valores por defecto
2-23. Liberar espacio para la partición raíz
2-24. Edición del tamaño de la partición raíz
2-25. Elija el tipo de partición raí
2-26. Elija el punto de montaje del s. f. raíz
2-27. Editor Disklabel, sysinstall
2-28. Elegir distribuciones
2-29. Confirmar distribuciones
2-30. Elección del medio de instalación.
2-31. Selección de un dispositivo Ethernet
2-32. Configuración de ed0
2-33. Edición de inetd.conf
2-34. Configuración por defecto del FTP anónimo
2-35. Edición del mensaje de bienvenida de FTP
2-36. Edición de exports
2-37. Opciones de los perfiles de seguridad
2-38. Opciones de configuración de la consola del sistema
2-39. Opciones del salvapantallas
2-40. Retardo del salvapantallas
2-41. Salida de la configuración de la consola
2-42. Elección de región
2-43. Elija país
2-44. Elija su zona horaria
2-45. Elija el protocolo que usa el ratón
2-46. Ajuste del procolo del ratón
2-47. Configuración del puerto del ratón
2-48. Configuración del puerto del ratón
2-49. Arranque del dæmon del ratón
2-50. Prueba del dæmon del ratón
2-51. Configuración de la red, primera parte
2-52. Selección del MTA por defecto
2-53. Configuración de ntpdate
2-54. Configuración de la red; segunda parte
2-55. Menú de selección del método de configuración
2-56. Elección del escritorio por defecto
2-57. Selección de categoría de paquetes
2-58. Selección de paquetes
2-59. Instalación de paquetes
2-60. Confirmación previa a la instalación de paquetes
2-61. Seleccione ``Añadir usuario''
2-62. Añadir la información del usuario
2-63. Salir de la gestión de usuarios y grupos
2-64. Salir de la instalación
17-1. Organización Concatenada
17-2. Organización con ``Striping''
17-3. Organización en RAID-5
17-4. Un Volumen Vinum Sencillo
17-5. Un Volumen Vinum Replicado
17-6. Un Volumen Vinum en ``Striping''
17-7. Un Volumen Vinum Replicado y en ``Striping''
Lista de ejemplos
2-1. Uso de una partición sin cambiar nada
2-2. Reducir una partición existente
4-1. Descarga de un Paquete e Instalación en nuestro sistema
13-1. Pantalla boot0
13-2. Pantalla de boot2
13-3. Una Consola Insegura en /etc/ttys
14-1. Configuración de adduser
14-2. Eliminación interactiva de cuenta con rmuser
14-3. chpass interactivo ejecutado por el superusuario
14-4. chpass interactivo ejecutado por un usuario normal
14-5. Cambio de tu contraseña
14-6. Cambio de la contraseña de otro usuario como superusuario
14-7. Añadir un grupo usando pw(8)
14-8. Añadir a alguien a un grupo usando pw(8)
14-9. Determinar pertenencia a grupos con id(1)
22-1. Configuración de la base de datos de acceso de sendmail
22-2. Mail Aliases
22-3. Ejemplo de asociación de correo de dominio virtual
23-1. Anclaje de una Exportación utilizando amd
23-2. Sucursal o Red Hogar
23-3. Oficina Central u Otra LAN
23-4. Envío de una señal de tipo HANGUP a inetd

I. Primeros pasos

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

  • Realizan una introducción a FreeBSD.

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

  • Explican información básica sobre Unix.

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

  • Introducen en el manejo de X Window, el sistema de ventanas de UNIX® y detallan como configurar un entorno de escritorio más productivo.

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


Capítulo 1. Introducción

Restructured, reorganized, and parts rewritten by Jim Mock.

1.1. Sinópsis

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

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

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

  • La historia del Proyecto FreeBSD.

  • Los objetivos del Proyecto FreeBSD.

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

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


1.2. ¡Bienvenido a FreeBSD!

FreeBSD es un sistema operativo basado en 4.4BSD-Lite para la arquitectura Intel (x86) y sistemas basados en DEC Alpha. Se está trabajando también en versiones para otras arquitecturas. Para una breve perspectiva general de FreeBSD consulta la siguiente sección. Puedes también leer sobre la historia de FreeBSD, o sobre la distribución actual. Si estás interesado en contribuir de algún modo al proyecto (código, hardware, billetes sin marcar), mírate el artículo Contribuír a FreeBSD.


1.2.1. ¿Qué puede hacer FreeBSD?

FreeBSD tiene muchas características notables. Algunas de ellas son:

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

  • Servicios multiusuario que permiten a mucha gente usar un sistema FreeBSD simultáneamente para distintas cosas. Ésto significa, por ejemplo, que los periféricos del sistema como impresoras y dispositivos de cinta son compartidos adecuadamente por varios usuarios del sistema o la red, y que pueden establecerse límites sobre recursos concretos para usuarios o grupos de usuarios, protegiendo de este modo al sistema de posibles abusos.

  • Conexión de redes TCP/IP muy robusta, con soporte para estándares industriales como SLIP, PPP, NFS, DHCP, y NIS. Esto quiere decir que tu máquina FreeBSD puede interoperar fácilmente con otros sistemas y hacer de servidor en una empresa, proporcionando importantes funciones como NFS (acceso a ficheros remotos) y servicios de correo electrónico, o poniendo a tu organización en Internet con WWW, FTP, servicios de enrutado y cortafuegos.

  • La protección de memoria garantiza que las aplicaciones (o los usuarios) no pueden interferirse. Un error fatal en una aplicación no afecta al resto.

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

  • X Window System (X11R6), estándar de la industria, provee a los usuarios de una interfaz gráfica (GUI) por el coste de una tarjeta VGA y un monitor comunes, y viene con los fuentes completos.

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

  • Miles de aplicaciones listas para ser usadas se hallan disponibles en la colección de ports y paquetes. ¿Para qué buscar en la red si puedes encontrarlo todo aquí mismo?

  • Miles de aplicaciones fáciles de portar se encuentran disponibles en Internet. FreeBSD tiene un código fuente compatible con el de los más populares sistemas Unix comerciales y por ello la mayoría de las aplicaciones tan sólo necesitan unos pocos cambios, si es que necesitan alguno, para compilar.

  • El diseño de la memoria virtual con paginación bajo demanda y de la ``caché unificada de VM/buffer'' satisface a aplicaciones que requieren grandes cantidades de memoria de forma eficiente aun dando respuestas interactivas a otros usuarios.

  • Soporte para SMP en máquinas con múltiples CPUs.

  • Una colección completa de herramientas de desarrollo en C, C++, Fortran, y Perl. Muchos más lenguajes adicionales para investigación y desarrollo avanzados se encuentran también disponibles en la colección de ports y paquetes.

  • Disponer del código fuente del sistema entero significa contar con el mayor nivel de control posible sobre tu entorno. ¿Para qué ligarte a una solución propietaria a la merced de un fabricante cuando puedes tener un verdadero sistema abierto?

  • Extensa documentación en línea.

  • ¡Y mucho más!

FreeBSD está basado en la versión 4.4BSD-Lite del Computer Systems Research Group (CSRG) de la Universidad de California en Berkeley, y continúa la distinguida tradición de desarrollo de sistemas BSD. Además del excelente trabajo del CSRG, el Proyecto FreeBSD ha invertido miles de horas en ajustar el sistema para conseguir un rendimiento y una fiabilidad máximos en situaciones de carga reales. Mientras que muchos de los gigantes comerciales se esfuerzan en dotar a los sistemas operativos para PCs de esas características, rendimiento y fiabilidad, FreeBSD puede ofrecerlas ¡ya!

Las posibles aplicaciones en las que puede usarse FreeBSD están en verdad limitadas tan sólo por tu imaginación. Desde desarrollo de programas hasta automatización de fábricas, desde control de inventarios hasta corrección de azimut de antenas de satélites remotos; si puede realizarse con un UNIX comercial lo más seguro es que también pueda llevarse a cabo con FreeBSD. FreeBSD también se beneficia de las literalmente miles de aplicaciones de alta calidad desarrolladas en centros de investigación y universidades de todo el mundo, frecuentemente disponibles por poco o ningún coste. También se dispone de aplicaciones comerciales, cuyo número aumenta cada día.

Dado que el código fuente de FreeBSD está disponible, el sistema puede ser también personalizado en un grado nunca visto para aplicaciones o proyectos especiales, y de maneras generalmente no posibles con los sistemas operativos de la mayoría de los fabricantes comerciales. Aquí damos tan sólo una muestra de aplicaciones en las que se está actualmente usando FreeBSD:

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

    • servidores FTP

    • Servidores web (estándares o seguros [SSL])

    • Cortafuegos y pasarelas NAT (``enmascaramiento IP'').

    • Servidores de correo electrónico

    • USENET y BBSs

    • Y más...

    Con FreeBSD puedes empezar fácilmente con un económico 386 e ir actualizando tu equipo hasta un tetraprocesador Xeon con almacenamiento RAID a medida que tu proyecto crezca.

  • Educación: ¿Eres estudiante de informática o de algún campo relacionado con la ingeniería? No hay mejor modo de estudiar sistemas operativos, arquitectura de computadores y redes que la experiencia a bajo nivel que FreeBSD puede aportar. Para aquéllos cuyo principal interés en los ordenadores no es otro que el de poder realizar su trabajo existe una serie de paquetes gratuitos de CAD, matemáticas, diseño gráfico, etc., que hacen de FreeBSD un sistema verdaderamente útil.

  • Investigación: Encontrándose disponible el código fuente del sistema entero, FreeBSD es una excelente plataforma para la investigación en sistemas operativos y otras ramas de la informática. El hecho de que FreeBSD esté disponible gratuítamente hace posible que grupos remotos puedan colaborar con ideas o compartan desarrollos sin tener que preocuparse de acuerdos en licencias especiales o de limitaciones acerca de lo que puede discutirse en foros públicos.

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

  • Estación de trabajo X: FreeBSD es una magnífica elección como terminal X de bajo coste, ya sea usando el libremente disponible servidor XFree86 o uno de los excelentes servidores comerciales de X Inside. A diferencia de las terminales X, FreeBSD permite ejecutar muchas aplicaciones localmente, si así se quiere, aligerando de este modo la carga soportada por un servidor central. FreeBSD puede incluso arrancar ``sin disco'', permitiendo que las estaciones sean aún más económicas y fáciles de administrar.

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

Los fuentes y binarios de FreeBSD se hallan disponibles en CDROM y por FTP anómimo. Por favor, consulte Capítulo 24 para más información sobre cómo conseguir FreeBSD.


1.2.2. ¿Quién usa FreeBSD?

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

y muchos más.


1.3. Acerca del proyecto FreeBSD

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


1.3.1. Breve historia de FreeBSD

Contributed by Jordan Hubbard.

La génesis del proyecto FreeBSD se remonta a comienzos de 1993, en parte como una extensión del ``Unofficial 386BSD Patchkit'' debida a los tres últimos coordinadores del patchkit: Nate Williams, Rod Grimes y yo mismo.

Nuestro objetivo original era producir una instantánea de 386BSD intermedia para arreglar una serie de problemas que no se podían solventar vía patchkits. Algunos quizá recordéis que el primer nombre del proyecto fue ``386BSD 0.5'' o ``386BSD Interim'' en referencia a ese hecho.

386BSD era el sistema operativo de Bill Jolitz, que hasta ese punto había estado sufriendo severamente las consecuencias de prácticamente un año que más vale olvidar. A medida que el patchkit se iba haciendo más incómodo día a día, nosotros estuvimos unánimente de acuerdo en que algo se tenía que hacer y decidimos ayudar a Bill ofreciendo esta instantánea ``limpia'' como ínterin. Aquellos planes fueron bruscamente interrumpidos cuando Bill Jolitz de repente decidió retirar su aprobación al proyecto sin ninguna indicación clara de lo que en su lugar debería hacerse.

No tardamos mucho en decidir que el objetivo seguía valiendo la pena, aun sin el soporte de Bill, y fue así que adoptamos el nombre ``FreeBSD'', debido a David Greenman. Nuestros objetivos iniciales se fijaron una vez consultamos a los usuarios del sistema, y cuando quedó claro que el proyecto estaba en marcha y que podía llegar a ser una realidad contacté con Walnut Creek CDROM con la idea de mejorar los canales de distribución de FreeBSD en CD, pero fueron más allá y nos facilitaron una máquina con la que trabajar y una conexión rápida a Internet. Sin la fe casi sin precedentes que tuvo Walnut Creek CDROM en lo que era por aquel tiempo un proyecto completamente desconocido, es bastante improbable que FreeBSD hubiera logrado tanto y tan rápido como ha logrado hoy por hoy.

La primera distribución en CDROM (y disponible por la red) fue FreeBSD 1.0, publicado en diciembre de 1993. Estaba basado en la cinta de U.C. Berkeley del 4.3BSD-Lite (``Net/2''), con bastantes componentes de 386BSD y la Free Software Foundation. Fue un logro bastante razonable para una primera versión, y le siguió FreeBSD 1.1 en mayo de 1994, que tuvo un gran éxito.

Por entonces se formaron unos inesperados nubarrones en el horizonte ya que Novell y U.C. Berkeley resolvieron el largo juicio acerca del estatus legal de la cinta de Berkeley Net/2. Una condición del acuerdo fue la concesión por parte de U.C. Berkeley de que una gran parte de Net/2 era código ``gravado'' y propiedad de Novell, quien a su vez lo había adquirido de AT&T anteriormente. Berkeley obtuvo a cambio de Novell el ``beneplácito'' para que 4.4BSD-Lite, cuando saliera, fuera declarado como no-gravado y se instara a los usuarios de Net/2 a cambiar. Esto incluía a FreeBSD, y se dio hasta julio de 1994 para dejar de sacar su propio producto basado en Net/2. Bajo los términos de aquel acuerdo se le permitía al proyecto sacar una última versión antes de la fecha límite: esa versión fue FreeBSD 1.1.5.1.

FreeBSD tuvo entonces que acometer la árdua tarea de literalmente reinventarse a sí mismo a partir de trozos nuevos y bastante incompletos de 4.4BSD-Lite. Las versiones ``Lite'' eran ligeras en parte porque el CSRG de Berkeley quitó grandes partes del código necesario para construir un sistema que pudiera arrancar (debido a diversos requisitos legales) y porque la versión del 4.4 para Intel era muy incompleta. No fue hasta noviembre de 1994 que el proyecto realizó esa transición, en ese punto sacó FreeBSD 2.0 en la red y en CDROM (a finales de diciembre). A pesar de no estar suficientemente pulida, esta distribución fue un éxito significativo y le siguió el más robusto y fácil de instalar FreeBSD 2.0.5 en junio de 1995.

Sacamos FreeBSD 2.1.5 en agosto de 1996, y pareció ser suficientemente popular entre ISPs y otras comunidades comerciales como para que mereciera otra versión de la rama 2.1-STABLE. Ésa fue FreeBSD 2.1.7.1, publicada en febrero de 1997, que marcó el final de la línea principal de desarrollo en 2.1-STABLE. Una vez en modo mantenimiento, en esa rama (RELENG_2_1_0) sólo se harían ya mejoras en seguridad y correcciones de errores críticos.

FreeBSD se ramificó desde la línea principal de desarrollo (``-CURRENT'') en noviembre de 1996 como la rama RELENG_2_2, y la primera versión completa (2.2.1) salió en abril de 1997. Se hicieron más versiones de la rama 2.2 en verano y otoño de 1997, la última de las cuales (2.2.8) apareció en noviembre de 1998. La primera versión 3.0 oficial salió en octubre de 1998 y marcó el inicio del fin de la rama 2.2.

El árbol se ramificó de nuevo el 20 de enero de 1999, dando lugar a las ramas 4.0-CURRENT y 3.X-STABLE. De la 3.X-STABLE, 3.1 salió el 15 de febrero de 1999, 3.2 el 15 de mayo de 1999, 3.3 el 16 de septiembre de 1999, 3.4 el 20 de diciembre de 1999, y 3.5 el 24 de junio de 2000, a la que siguió pocos días después una actualización menor, la 3.5.1, que incorporaba mejoras de seguridad de última hora para Kerberos. Ésa fue la última versión de la rama 3.X.

Hubo otra ramificación el 13 de marzo de 2000, que dió lugar a la rama 4.X-STABLE, considerada ahora la "actual rama -stable". Han habido varias versiones de la misma desde entonces: 4.0-RELEASE salió en marzo de 2000, 4.3 en abril de 2001, y 4.4 en septiembre de 2001. Habrá más versiones de la rama 4.X-STABLE (RELENG_4) entrado 2002.

Proyectos a largo plazo siguen teniendo lugar en la rama (principal) 5.0-CURRENT, e instantáneas de la 5.0 en CDROM (y, naturalmente, en la red) se hallan contínuamente disponibles desde el servidor de instantáneas a medida que el trabajo progresa.


1.3.2. Objetivos del Proyecto FreeBSD

Contributed by Jordan Hubbard.

Los objetivos del Proyecto FreeBSD son proveer software que pueda ser usado con cualquier propósito y sin compromiso alguno. Muchos de nosotros participamos significativamente en el código (y en el proyecto) y ciertamente no nos importaría recibir una pequeña compensación económica de vez en cuando, pero decididamente no estamos dispuestos a insitir en ello. Creemos que nuestra más importante y primordial ``misión'' es dar código a todo el que venga, y para lo que quiera, de manera que el código sea tan usado y dé tanto provecho como sea posible. Creo que éste es uno de los objetivos más fundamentales del software libre y uno que nosotros apoyamos con entusiasmo.

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


1.3.3. El modelo de desarrollo de FreeBSD

Contributed by Satoshi Asami.

El desarrollo de FreeBSD es un proceso muy abierto y flexible, estando FreeBSD construído literalmente a partir de las contribuciones de centenares de personas de todo el mundo, como puede verse en nuestra lista de contribuidores. Estamos constantemente a la búsqueda de nuevos desarrolladores e ideas, y aquéllos interesados en vincularse más al proyecto tan sólo tienen que ponerse en contacto con nosotros en lista de discusiones técnicas en FreeBSD. La lista lista de avisos importantes del Proyecto FreeBSD también se halla disponible para quienes deseen dar a conocer a otros usuarios de FreeBSD grandes áreas de trabajo.

Cosas útiles de saber sobre el Proyecto FreeBSD y su proceso de desarrollo, ya sea trabajando de forma independiente on en estrecha cooperación:

El repositorio CVS

El árbol de código fuente central de FreeBSD se mantiene con CVS (Concurrent Versions System), una herramienta de control de versiones de código fuente que se halla libremente disponible y viene con FreeBSD. El repositorio CVS principal reside en una máquina en Santa Clara California (EEUU), desde la que es replicado a numerosos mirrors distribuidos por todo el mundo. El árbol del CVS, así como los árboles -CURRENT y -STABLE que se extraen del mismo, pueden ser replicados fácilmente en tu máquina también. Por favor, consulta la sección Sincronización del árbol de código fuente para más información sobre cómo hacerlo.

La lista de committers

Los committers son gente que tienen permisos de escritura en el árbol del CVS, y están por tanto autorizados a realizar modificaciones en los fuentes de FreeBSD (el término ``committer'' viene del comando commit de cvs(1), que sirve para subir nuevos cambios al repositorio del CVS). La mejor manera de enviar aportaciones para que sean revisadas por los committers es usar el comando send-pr(1), aunque si pareciera que algo va mal en el sistema también puedes enviar correo electrónico a lista de correo para 'committers' de FreeBSD.

El core team de FreeBSD

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

Algunos miembros del core team tienen también áreas de responsabilidad específicas, en cuanto a que se encargan de garantizar que cierta parte extensa del sistema funciona según lo previsto. Hay una lista completa de desarrolladores de FreeBSD con sus áreas de responsabilidad respectivas, consulta la Lista de contribuidores.

Nota: La mayoría de los miembros del core team son voluntarios a la hora de desarrollar FreeBSD y no se benefician económicamente del proyecto, por ello ``compromiso'' no debería confundirse con ``soporte garantizado''. La anterior analogía de la ``junta directiva'' en realidad no es del todo exacta, quizá fuera más acertado decir que ésa es la gente que dedica su vida a FreeBSD ¡en contra de lo que les aconseja su propio juicio!

Contribuidores externos

Por último, y no por ello menos importante, el mayor grupo de desarrolladores está formado por los mismos usuarios, quienes constantemente aportan ``feedback'' y corrección de errores. La principal manera de estar en contacto con el más descentralizado desarrollo de FreeBSD es suscribirse a lista de discusiones técnicas en FreeBSD (ver información sobre listas de distribución) donde se discuten ese tipo de cosas.

La lista de contribuidores es larga y no cesa de crecer, así que ¿por qué no te apuntas y contribuyes a FreeBSD hoy mismo?

Aportar código no es la única manera de contribuir al proyecto; tienes un lista más completa de cosas que hay que hacer en el sitio web del Proyecto FreeBSD.

En resumen, nuestro modelo de desarrollo está organizado como un conjunto de círculos concéntricos. El modelo centralizado está diseñado para conveniencia de los ``usuarios'' de FreeBSD, que así tienen un modo sencillo de estar al día con una base de código central, ¡no para excluir a contribuidores potenciales!. Nuestro deseo es presentar un sistema operativo estable con un gran conjunto de aplicaciones coherentes que los usuarios puedan instalar y usar fácilmente, y este modelo funciona bien para lograrlo.

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


1.3.4. La actual distribución FreeBSD

FreeBSD está libremente disponible, todo el código fuente de la distribución basada en 4.4BSD-Lite para sistemas bajo Intel i386, i486, Pentium Pro, Celeron, Pentium II, Pentium III (o compatible) y DEC Alpha. Está principalmente basado en software i386™, i486™, Pentium®, Pentium Pro, Celeron®, Pentium II, Pentium III, Pentium 4 (o compatible), Xeon™, DEC Alpha™ y sistemas basados en Sun UltraSPARC®. Está principalmente basado en software del grupo CSRG de U.C. Berkeley, con algunas mejoras provenientes de NetBSD, OpenBSD, 386BSD, y la Free Software Foundation.

Desde la versión 2.0 de FreeBSD de finales del 94, el rendimiento, conjunto de funcionalidades, y estabilidad del sistema han mejorado drásticamente. El último cambio consiste en un rediseño del sistema de memoria virtual con una caché unificada de VM/buffer que no sólo aumenta el rendimiento, sino que también reduce el consumo de memoria de FreeBSD, haciendo que una configuración de 5MB sea un mínimo más aceptable. Otras mejoras incluyen soporte completo para clientes y servidores NIS, soporte para transacciones TCP, llamada bajo demanda PPP, soporte para DHCP integrado, un subsistema SCSI mejorado, soporte para ISDN, soporte para ATM, FDDI, adaptadores Fast y Gigabit Ethernet (1000Mbit), soporte mejorado para los últimos controladores Adaptec, y cientos de correcciones de errores.

También hemos considerado los comentarios y sugerencias de muchos de nuestros usuarios y hemos intentado ofrecer lo que esperamos sea un proceso de instalación más sensato y fácil de entender. ¡Tu ``feedback'' sobre este proceso (en constante evolución) es especialmente bienvenido!

Además de las distribuciones base, FreeBSD ofrece una colección de software con miles de programas comúnmente solicitados. ¡En el momento de escribir esto hay unos 10,500 ports! La lista de ports comprende desde servidores HTTP (WWW), hasta juegos, lenguages, editores, y prácticamente cualquier cosa intermedia. La colección de ports completa requiere un espacio de aproximadamente 100MB, todos ellos expresados como ``deltas'' de sus fuentes originales. Esto hace que nos sea mucho más fácil actualizar ports, y reduce de un modo importante el espacio en disco que necesitaba la anterior colección de ports 1.0. Para compilar un port uno simplemente se sitúa bajo el directorio del programa que desea instalar, escribe make install, y deja que el sistema se encargue del resto. La distribución original completa de cada port que construyes se recupera dinámicamente de un CDROM o un sitio FTP, de modo que sólo necesitas el espacio usado para construir los ports que tu quieras. La mayoría de los ports también están disponibles precompilados en ``paquetes'', que pueden instalarse con un simple comando (pkg_add) para aquéllos que no quieran compilar sus propios ports a partir de los fuentes.

Algunos documentos que pueden ser de ayuda en el proceso de instalación y al utilizar FreeBSD pueden también encontrarse en el directorio /usr/share/doc de cualquier máquina bajo FreeBSD 2.1 o posterior. Puedes ver los manuales que están instalados en local con cualquier navegador que pueda mostrar HTML vía las siguientes URLs:

El manual de FreeBSD

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

Las FAQ de FreeBSD

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

También puedes ver la copia original (y más frecuentemente actualizada) en http://www.FreeBSD.org/.


Capítulo 2. Instalación de FreeBSD

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

2.1. Sinopsis

FreeBSD dispone de un programa en modo texto muy fácil de usar llamado sysinstall. Es el programa de instalación por defecto de FreeBSD, pero quien decida distribuir FreeBSD tiene todo el derecho de facilitar un sistema de instalación propio si así lo desea. Este capítulo trata sobre cómo usar sysinstall para instalar FreeBSD

Tras leer este capítulo sabrá usted:

  • Cómo crear unos discos de instalación de FreeBSD

  • Cómo interpreta (y subdivide) FreeBSD sus discos duros.

  • Cómo arrancar sysinstall.

  • Qué preguntas le hará sysinstall, qué significan y cómo responderlas.

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

  • Leer la lista de hardware soportado que se suministra con la con la versión de FreeBSD que va a instalar y verificar que su hardware está en dicha lista.

Nota: En general éstas instrucciones de instalación han sido escritas para computadoras de arquitectura i386 (``PC compatible''). En algunos puntos concretos se darán instrucciones específicas para otras plataformas (por ejemplo Alpha). A pesar de que esta guía se intenta mantener todo lo al día que es posible puede que se encuentre con pequeñas diferencias entre el programa de instalación y lo que aquí se le muestra. Le sugerimos que use este capítulo como una guía general más que como un manual literal de instalación.


2.2. Tareas anteriores a la instalación

2.2.1. Inventario de su sistema

Antes de instalar FreeBSD en su sistema debería completar un inventario de los componentes de su computadora. El sistema de instalación de FreeBSD le mostrará los componentes (discos duros, tarjetas de red, unidades de CDROM, etc.) con sus datos de modelo y fabricante. FreeBSD tratará también de determinar la configuración correcta para dichos dispositivos, lo que incluye información sobre las IRQ y el uso de puertos IO. A causa de la ingente variedad de hardware para PC este proceso no siempre se puede culminar con éxito y es posible que deba corregir las decisiones de FreeBSD retocando la configuración.

Si ya dispone de otro sistema operativo instalado, como Windows® o Linux, puede usar los recursos que dicho o dichos sistemas operativos le faciliten para determinar exactamente qué hardware tiene y cómo está configurado. Si tiene del todo claro qué configuración está usando una tarjeta de expasión concreta es posible que pueda encontrar esos datos impresos en la propia tarjeta. Es muy habitual el uso de las IRQ 3, 5 y 7 y las direcciones de los puertos IO suelen representarse con números hexadecimales, como 0x330.

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

Tabla 2-1. Ejemplo de inventario de dispositivos

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

2.2.2. Haga una copia de seguridad de sus datos

Si la computadora en la que va a instalar FreeBSD contiene datos que desea conservar por algún motivo asegúrese de haber hecho una copia de seguridad de los mismos y de que esa copia es de fiar antes de instalar FreeBSD. El sistema de instalación de FreeBSD le mostrará una advertencia antes de modificar datos en su disco pero una vez que el proceso ha comenzado no hay manera de dar marcha atrás.


2.2.3. Dónde instalar FreeBSD

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

Si por el contrario necesita que FreeBSD coexista con otros sistemas operativos tendrá que comprender cómo se almacenan los datos en el disco duro y cómo le afecta todo esto.


2.2.3.1. Esquemas de disco en i386

Un disco de PC puede dividirse en varias partes. Estas partes reciben el nombre de particiones. Por razones de diseño los PC sólo admiten cuatro particiones por disco. Esas particiones se denominan particiones primarias. Para evitar esa limitación y poder usar más de cuatro particiones se creó un nuevo tipo de partición, las particiones extendidas. Cada disco sólo puede contener una partición extendida. Pueden crearse particiones especiales, llamadas particiones lógicas, dentro de esta partición extendida.

Cada partición tiene un identificador de partición (o partition ID), que es un número usado para identificar el tipo de datos que alberga la partición. Las particiones FreeBSD tienen como identificador de partición 165.

Normalmente cada sistema operativo que vaya a utilizar identificará las particiones de un modo propio. Por ejemplo DOS, y descendientes suyos como Windows, asignan a cada partición primaria y lógica una letra de unidad a partir de C:.

FreeBSD debe instalarse en una partición primaria. FreeBSD puede albergar todos los datos que necesita, incluyendo cualquier fichero que pueda usted crear, en esta partición. Si tiene usted varios discos duros puede crear particiones para que FreeBSD las use en todos ellos o en algunos nada más. Al instalar FreeBSD debe usar al menos una partición. Puede usar una partición vacía que haya preparado o puede usar también una partición que contenga datos que no desea conservar.

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

Si tiene una partición sobrante puede usarla, pero puede verse en la necesidad de reducir una o más de las particiones que está usando.

Una instalación mínima de FreeBSD cabrí en sólo 100 MB de disco pero tenga en cuenta que apenas quedaría espacio para los ficheros que quiera crear. Un mínimo más realista sería de 250 MB si no pretende usar entorno gráfico y 350 MB o más si quiere usar un interfaz gráfico de usuario. Si quiere instalar gran cantidad de software para usarlo en FreeBSD sin duda necesitará más espacio.

Puede usar aplicaciones comerciales como PartitionMagic® para ajustar el tamaño de sus particiones y hacer sitio a FreeBSD. El directorio tools del CDROM contiene dos aplicaciones libres que puede usar para éste fin: FIPS y PResizer. En el propio directorio puede encontrar documentación para ambas aplicaciones. FIPS, PResizer y PartitionMagic pueden redimensionar las particiones FAT16 y FAT32 -- que se usan de MS-DOS® a Windows ME. PartitionMagic es la única aplicación conocida que pueda redimensionar particiones NTFS.

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

Ejemplo 2-1. Uso de una partición sin cambiar nada

Supongamos que tiene una máquina con un sólo disco de 4 GB que ya tiene una versión de Windows instalada y que ese disco está dividido en dos unidades, C: y D:, cada una de las cuales tiene un tamaño de 2 GB. Tiene 1 GB de datos en C: y 0.5 GB de datos en D:.

Esto significa que su disco duro tiene dos particiones, una por cada letra de unidad. Copie todos sus datos de D: en C: y habrá dejado limpia su segunda partición, dejándola lista para FreeBSD

Ejemplo 2-2. Reducir una partición existente

Suponga que tiene una máquina con un sólo disco de 4 GB que contiene una versión de Windows instalada. Cuando instaló Windows creó una gran partición, lo que le dió como resultado una unidad C: de 4 GB. Está usando 1.5 GB de espacio y quiere que FreeBSD tenga 2 GB de espacio.

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

  1. Haga una copia de sus datos de Windows y después reinstale Windows, eligiendo una partición de 2 GB en el momento de la instalación.

  2. Utilice alguna herramienta del estilo de PartitionMagic que se han descrito antes para reducir el tamaño de su partición de Windows.


2.2.3.2. Estructura de discos en Alpha

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

Siguiendo las normas de los manuales de Digital / Compaq todos los datos suministrados a SRM se muestran en mayúsculas. SRM no distingue entre mayúsculas y minúsculas.

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

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

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

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

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


2.2.4. Recolección de los detalles de la configuración de la red

Si pretende conectarse a alguna red durante la instalación de FreeBSD (por ejemplo, pretende hacerlo desde un sitio FTP o mediante un servidor NFS), tendrá que conocer la configuración de su red. Durante la instalación se le pedirán esos datos para que FreeBSD pueda conectarse a la red y realizar la instalación.


2.2.4.1. Conexión a una red Ethernet o a un módem Cable/DSL

Necesitará la siguiente información si va a conectarse a una red Ethernet o si tiene una conexión a Internet a través de una adaptador Ethernet via cable o DSL:

  1. Dirección IP

  2. Dirección IP de la pasarela (``gateway'', ``puerta de enlace'')

  3. Nombre del sistema (``hostname'')

  4. Dirección IP del servidor DNS

  5. Máscara de subred

Si no conoce estos datos póngase en contacto con su administrador de sistemas o con su proveedor de servicios. Es que le digan que tal información se asigna automáticamente mediante DHCP. Si es así, anótelo.


2.2.4.2. Conexión mediante módem

Si usted se conecta con su ISP mediante un módem tradicional sigue pudiendo instalar FreeBSD a través de Internet, el problema es que le resultará bastante más largo que por otros medios.

Necesitará saber:

  1. El número de teléfono de su ISP a través del que accederá a Internet

  2. El COM: el puerto al que está conectado su su módem

  3. Su nombre de usuario y su contraseña de acceso a Internet


2.2.5. Consulte ``FreeBSD Errata''

A pesar de que el proyecto FreeBSD hace todo lo humanamente posible para asegurarse de que cada ``release'' de FreeBSD es todo lo estable posible a veces algún error logra entrar en escena. En contadísimas ocasiones esos errores llegan a afectar al proceso de instalación. Cuando esos errores son ubicados y corregidos se anotan en FreeBSD Errata, en el sitio web de FreeBSD. Debería consultar este texto antes de la instalación para asegurarse de que no hay problemas de última hora de los que deba preocuparse.

Tiene información sobre las ``releases'', incluyendo la lista de erratas de cada una de ellas, en la sección de información de ``releases'' del sitio web de FreeBSD.


2.2.6. Obtención de los ficheros de instalación de FreeBSD

El proceso de instalación de FreeBSD permite instalar FreeBSD desde ficheros ubicados en cualquiera de los siguientes sitios:

Medios locales

  • Un CDROM o DVD

  • Una partición DOS en la propia computadora

  • Una cinta SCSI o QIC

  • Discos floppy

Red

  • Un sitio FTP, saliendo a través de un cortafuegos o usando un proxy HTTP si fuera necesario

  • Un servidor NFS

  • Una conexión serie o a través de una cable paralelo

Si ha adquirido FreeBSD en CD o DVD ya tiene todo lo que necesitará, puede pasar a la siguiente sección: (Sección 2.2.7).

Si no dispone de los ficheros de instalación de FreeBSD debería consultar Sección 2.13, donde se explica cómo preparar la instalación de FreeBSD desde cualquiera de los medios listados anteriormente. Tras leer esa sección puede volver aquí y leer Sección 2.2.7.


2.2.7. Preparación del medio de arranque

El proceso de instalación de FreeBSD comienza por arrancar su sistema mediante el instalador de FreeBSD: no es un programa que pueda ejecutar desde otro sistema operativo. Su sistema suele arrancar usando el sistema operativo que está instalado en su disco duro pero puede también ser configurado para que lo haga desde un floppy ``arrancable''. Las computadoras más modernas pueden también arrancar desde un CDROM introducido en la unidad CDROM.

Sugerencia: Si tiene FreeBSD en CDROM o DVD (por haberlo comprado o haberlo preparado especialmente usted) y su sistema puede arracar desde CDROM o DVD (suele ser una opción de BIOS llamada ``Boot Order'' o algo similar) puede saltarse esta sección. Las imágenes de CDROM o DVD de FreeBSD permiten arrancar desde ellas y pueden emplearse para instalar FreeBSD sin ninguna preparación especial.

Siga estos pasos para crear las imágenes que le permitirán arrancar desde floppy:

  1. Consiga las imágenes de arranque desde floppy

    Los discos de arranque se encuentran en el directorio floppies/ del medio de instalación o pueden descargarse desde el directorio correspondiente de ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/<arch>/<version>-RELEASE/floppies/. Reemplace <arch> y <version> con la arquitectura y la versión de FreeBSD que quiera instalar. Por ejemplo, las imágenes de arranque desde floppy para FreeBSD 5.3-RELEASE para i386 están en from ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/5.3-RELEASE/floppies/.

    Las imágenes de floppy tienen la extensión .flp. El directorio floppies/ contiene diferentes imágenes y las que usted necesitará dependerán de la versión de FreeBSD que vaya a instalar y, en algunos casos, del hardware en el que lo va a instalar. En la mayoría de de los casos solamente usará dos ficheros: kern.flp y mfsroot.flp. La instalación en algunos sistemas concretos requerirá controladores de dispositivo adicionales, que se encuentran en la imagen drivers.flp. Consulte README.TXT en el propio directorio, ahí encontrará la información más reciente sobre las imágenes.

    Importante: Su programa de FTP debe usar modo binario para descargar las imágenes. Algunos navegadores web son conocidos por usar el modo texto ( o ASCII). He aquí lo primero a comprobar si no puede arrancar desde los disquetes que ha creado.

  2. Preparación de los discos floppy

    Tendrá que preperar un disquete por cada imagen que descargue. Es imprescindible que esos discos carezcan de errores. La forma más sencilla de asegurarlo es formatearlos usted. No confíe en disquetes preformateados. La herramienta de formateo de Windows no le advertirá del hallazgo de bloques defectuosos, si encuentra alguno sencillamente lo marcará como ``defectuoso'' y lo ignorará. Le recomendamos que use disquetes nuevos si decide usar este procedimiento de instalación.

    Importante: Si instenta instalar FreeBSD y el programa de instalación falla, se queda congelado o sucede alguna otra catástrofe uno de las primeras cosas de las que sospechar son los disquetes. Escriba los ficheros de imagen en discos nuevos e inténtelo de nuevo.

  3. Escriba los ficheros de imagen en discos floppy (`` disquetes'')

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

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

    Si las imágenes están en el CDROM y su CDROM es la unidad E: ejecute lo siguiente:

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

    Repita el proceso con cada fichero .flp reemplazando cada vez el disquete y recuerde etiquetar los discos con el nombre del fichero que ha copiado en cada uno. Modifique la línea del comando donde sea necesario, adaptándola al lugar donde tenga usted los ficheros .flp. fdimage puede descargarse desde el directorio tools del sitio FTP de FreeBSD.

    Si va a crear los disquetes en un sistema UNIX (por ejemplo otro sistema FreeBSD) puede utilizar dd(1) para escribir las imágenes en los discos. En FreeBSD deberí ejecutar:

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

    En FreeBSD /dev/fd0 es la primera unidad de disquetes (la unidad A:). /dev/fd1 sería la unidad B: y así sucesivamente. Otras versiones de UNIX pueden asignar nombres diferentes a las unidades de disquetes, consulte la documentación de su sistema si lo estima oportuno.

Ya podemos instalar instalar FreeBSD.


2.3. Inicio de la instalación

Importante: Por defecto la instalación no efectúa ningún cambio en su disco o discos duros hasta la aparición del siguiente mensaje:

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

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

We can take no responsibility for lost disk contents!

Es decir:

Última oportunidad: ¿Seguro que quiere proseguir con la instalación? 

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

¡No podemos responsabilizarnos de datos perdidos!

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


2.3.1. El arranque

2.3.1.1. El arranque en i386

  1. Comience con su sistema apagado.

  2. Arranque el sistema. Durante el arranque deberí mostrarse la opción para entrar en la BIOS, normalmente mediante las teclas F2, F10, Del, o Alt+S. Utilice la tecla o combinación de las mismas que se le indique en pantalla. En algunos casos el sistema puede mostrar un gráfico durante el arranque. Pulsar Esc suele disminuír en esos casos el tamaño del gráfico y le permitirá ver los mensajes del arranque.

  3. Encuentre el parámetro que controla desde qué dispositivos arranca el sistema. Normalmente se llama ``Boot Order'' y suele presentarse como una lista de dispositivos, como Floppy, CDROM, First Hard Disk, etc.

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

    Haga los cambios necesarios, guarde los cambios y salga. El sistema debería reiniciarse.

  4. Si ha elegido arrancar desde disquete, tal y como se describe en Sección 2.2.7, uno de ellos será el primer disco de arranque, probablemente el que contiene kern.flp. Introduzca ese disco en su unidad de disquetes.

    Si va a arrancar desde CDROM tendrá que arrancar el sistema e introducir el CDROM en cuanto tenga ocasión.

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

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

    2. Los cambios que hizo en la BIOS no han funcionado. Debería repetir los pasos previos hasta que dé con la opción correcta.

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

  5. FreeBSD comenzará a arrancar. Si está arrancando desde CDROM debería ver algo parecido a esto (se ha omitido la información de número de versión):

    Verifying DMI Pool Data ........
    Boot from ATAPI CD-ROM :
     1. FD 2.88MB  System Type-(00)
    Uncompressing ... done
    
    BTX loader 1.00 BTX version is 1.01
    Console: internal video/keyboard
    BIOS drive A: is disk0
    BIOS drive B: is disk1
    BIOS drive C: is disk2
    BIOS drive D: is disk3
    BIOS 639kB/261120kB available memory
    
    FreeBSD/i386 bootstrap loader, Revision 0.8
    
    /kernel text=0x277391 data=0x3268c+0x332a8 |
    
    |
    Hit [Enter] to boot immediately, or any other key for command prompt.
    Booting [kernel] in 9 seconds... _
    

    Si arranca desde floppy verá algo parecido a esto (se ha omitido la información de número de versión):

    Verifying DMI Pool Data ........ 
    
    BTX loader 1.00  BTX version is 1.01 
    Console: internal video/keyboard 
    BIOS drive A: is disk0 
    BIOS drive C: is disk1 
    BIOS 639kB/261120kB available memory 
    
    FreeBSD/i386 bootstrap loader, Revision 0.8 
    
    /kernel text=0x277391 data=0x3268c+0x332a8 |
    
    Please insert MFS root floppy and press enter:
    

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

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

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

    Dicho y hecho: espere diez segundos o pulse Enter. Esto lanzará el menú de configuración del kernel.


2.3.1.2. Arranque en Alpha

  1. Comience con su sistema apagado.

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

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

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

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

    >>>BOOT DKA0 -FLAGS '' -FILE ''
    
  4. FreeBSD comenzará a arrancar. Si está arrancando desde disquete llegado un cierto punto verá usted este mensaje:

    Please insert MFS root floppy and press enter:
    

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

  5. Tanto si arrancón desde disquete como desde CDROM el proceso de arranque llegará a este punto:

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

    Dicho y hecho: Espere diez segundos o pulse Enter. Esto iniciará el menú de configuración del kernel.


2.3.2. Configuración del kernel

Nota: A partir de FreeBSD 5.0 y siguientes userconfig ha sido sustituido por el método device.hints(5). Para más información sobre device.hints(5) consulte Sección 13.5

El kernel es el núcleo del sistema operativo. Es el responsable de muchas cosas como el acceso a todos los dispositivos que pueda tener en el sistema, como discos duros, tarjetas de red, tarjetas de sonido, etc. Cada dispositivo que administra el kernel de FreeBSD tiene un controlador (``driver'') asociado. Cada controlador tiene un nombre de dos o tres letras como sa, que es el controlador de acceso secuencial SCSI, o sio, el controlador I/O Serie (que gestiona los puertos COM).

Cuando arranca el kernel cada controlador chequea el sistema para saber si el hardware que él soporta existe en el sistema. Si es así el controlador configura el hardware y lo convierte en accesible para el resto del kernel.

Se suele llamar a este chequeo device probing (``prueba de controladores''). Por desgracia no siempre es posible ejecutarlo correctamente. Ciertos controladores de hardware no coexisten muy bien y probar un dispositivo físico concreto puede dejar otro en un estado inconsistente. La culpa es de una limitación básica del diseño del PC.

Muchos dispositivos antíguos reciben el nombre de ISA (el opuesto de los dispositivos PCI). La especificación ISA exige que cada dispositivo tenga cierta información escrita en él, normalmente el número de IRQ y la dirección de puerto IO que el controlador usa. Esta información suele asignarse mediante jumpers físicos en la propia tarjeta y también con un programa de DOS.

Esto era con frecuencia un foco de problemas porque no era posible tener dos dispositivos que compartieran la misma IRQ o dirección de puerto.

Los nuevos dispositivos siguen la especificación PCI, que no requiere esto, de forma que se supone que los dispositivos cooperarán con la BIOS y que se les puede asignar qué IRQ o qué dirección de puerto IO usarán.

Si tiene algún dispositivo ISA en su sistema el controlador de FreeBSD que manejará ese dispositivo necesitará ser configurado con la IRQ y la dirección de puerto que le haya asignado usted al dispositivo. Esta es la razón de que le recomendáramos mantener una lista de su hardware (consulte Sección 2.2.1), le puede ser útil.

Por desgracia las IRQ y los puertos de memoria que usan algunos controladores provocan conflictos. Esto se debe a que algunos dispositivos ISA vienen de fábrica con IRQ y direcciones de memoria que provocan conflictos. Los controladores de FreeBSD, por defecto, tienden intencionadamente a replicar los valores por defecto de los fabricantes para que la mayoría de dispositivos funcionen sin intervención por nuestra parte.

Esto casi nunca es un problema en el uso diario de FreeBSD. Su sistema raramente tendrá dos dispositivos hardware que choquen porque uno de ellos no funcionará (independientemente del sistema operativo que use).

Cuando sí que es un problema es al instalar FreeBSD porque el kernel que se usa durante la instalación ha de contener el máximo posible de controladores, de forma que pueda funcionar en la mayor variedad posible de hardware. Esto conlleva que algunos de esos controladores tendrán configuraciones conflictivas. Los dispositivos se prueban en un orden estricto y si tiene usted en el sistema un dispositivo que es probado muy tarde dentro del proceso, pero choca con uno que ha sido probado al principio, su hardware podría no funcionar o no se probado correctamente cuando instale FreeBSD.

A causa de esto lo primero que tiene ocasión de hacer al instalar FreeBSD es ver la lista de controladores que hay configurados en el kernel; desde ella puede desactivar algunos si no tiene dispositivos que los necesiten o confirmar (y modificar) la configuración si tiene el dispositivo pero la configuración por defecto está equivocada.

Probablemente esto suena mucho más complicado de lo que en realidad es.

La Figura 2-1 muestra el primer menú de configuración del kernel. Le recomendamos que elija la opción Start kernel configuration in full-screen visual mode (``Arrancar el modo visual de configuración del kernel a pantalla completa''), puesto que es el interfaz más sencillo para nuevos usuarios.

Figura 2-1. Menú de configuración del kernel

La pantalla de configuración del kernel (Figura 2-2) se divide en cuatro secciones:

  1. Una lista (que puede ocultarse) con todos los controladores marcados como ``activo'', subdividida a su vez en grupos como Storage (almacenamiento) y Network (Red). Cada controlador muestra una descripción, su nombre de dos o tres letras y la IRQ y la dirección de memoria que usa el controlador. Además, si un controlador activo choca con otro controlador activo aparece CONF junto al nombre del controlador. Esta sección muestra también el total de controladores con conflictos que hay activados.

  2. Los controladores marcados como inactivos. Permanecen en el kernel pero no buscarán su dispositivo cuando arranque el kernel. Se subdividen en grupos de la misma manera que la lista de controladores activos.

  3. Detalles más exhaustivos sobre el controlador seleccionado, incluyendo su IRQ y dirección de puerto de memoria.

  4. Información sobre los atajos de teclado que pueden emplearse en pantalla.

Figura 2-2. El interfaz visual de configuración de dispositivos del kernel

No se preocupe por los conflictos que aparezcan puesto que algo así era de esperar. Tenga en cuenta que todos los controladores están activados y, como ya se ha dicho, algunos entrarán en conflicto con otros.

Ahora tendrá que moverse por la lista de controladores resolviendo conflictos.

Resolución de conflictos de dispositivos

  1. Pulse X. Esto expandirá toda la lista de controladores para que pueda verlos todos. Tendrá que usar las flechas del teclado para moverse arriba y abajo por la lista de controladores activos.

    La Figura 2-3 muestra lo que sucede al pulsar X.

    Figura 2-3. Lista expandida de controladores

  2. Desactive todos los controladores de dispositivos que no no tenga. Para desactivar un controlador, márquelo con las flechas y pulse Del. El controlador pasa a la lista Inactive Drivers (Controladores Inactivos).

    Si ha desactivado sin querer un controlador que necesita pulse Tab para pasar a la lista Inactive Drivers, seleccione el controlador que había desactivado y pulse Enter para devolverlo a la lista activa.

    AvisoNo desactive sc0. Controla la pantalla y lo necesitará a menos que esté instalando a través de un cable serie.

    AvisoSólo desactive atkbd0 si está usted usando un teclado USB. Si tiene un teclado normal debe mantener atkbd0.

  3. Si no aparecen conflictos puede saltar este paso. Si aparecen conflictos, tendrá que examinarlos. Si no tienen la indicación de ``allowed conflict'' (conflicto asumido) en el área de mensajes, tendrá que cambiar la IRQ/dirección en la que se está probando el dispositivo o la IRQ/dirección debe cambiarse en el propio hardware.

    Para cambiar la IRQ y la dirección del puerto IO del controlador seleccione el dispositivo y presione Intro. El cursor pasará a la tercera sección de la pantalla y podrá usted cambiar los valores. Debería introducir los valores de IRQ y dirección de memoria que obtuvo cuando hizo su inventario de hardware. Pulse Q para finalizar la edición de la configuración del dispositivo y volver a la lista de controladores activos.

    Si no está seguro de qué debiera poner puede probar con -1. Algunos controladores de dispositivo de FreeBSD pueden probar el hardware para averiguar los valores de correctos que deben usar para su configuración y el valor de -1 los configura para ello.

    El procedimiento para cambiar la dirección en el hardware varía de un dispositivo a otro. En algunos dispositivos puede ser necesario extraer físicamente la tarjeta del sistema y ajustar la configuración de los ``jumpers''. Otras tarjetas pueden venir con un disquete para DOS que contiene programas a través de los cuales es posible reconfigurar la tarjeta. En cualquier caso tendrá que recurrir a la documentación del dispositivo. Cuando tenga todos los detalles puede volver a la instalación de FreeBSD una vez reconfigurada su tarjeta.

  4. Una vez subsanados todos los conflictos debería poder ver una pantalla similar a Figura 2-4.

    Figura 2-4. Configuración de controladores sin conflictos

    La lista de controladores activos ahora es mucho más corta, como puede ver. Sólo se muestran los controladores necesarios para gestionar el hardware de que disponemos.

    Ahora pueden guardarse los cambios hechos en la configuración y pasar al siguiente punto de la instalación. Pulse Press Q para salir del interfaz de configuración de dispositivos. Verá este mensaje:

    Save these parameters before exiting? ([Y]es/[N]o/[C]ancel)
    

    Responda Y para guardar los parámetros en memoria (se guardarán en disco al finalizar la instalación) y comenzará el chequeo del sistema. Tras mostrar en pantalla los resultados en texto negro sobre blanco, sysinstall mostrará su menú principal. (Figura 2-5).

    Figura 2-5. El menú principal de sysinstall


2.3.3. Revisión de los resultados de la prueba de de dispositivos

Es posible revisar los últimos cientos de líneas que se han mostrado en pantalla, pues se almacenan en un `` buffer'' con ese propósito.

Pulse Bloq Despl (Scroll Lock) y ya puede revisar el buffer. Para moverse puede usar las flechas o RePág y AvPág ( PageUp y PageDown respectivamente). Pulse de nuevo Bloq Despl cuando quiera salir del ``buffer''.

Pruébelo, revise el texto que generó el kernel tras probar los dispositivos. Verá un texto muy similar a Figura 2-6, aunque en su caso concreto el texto diferirá al mostrar los dispositivos que tenga usted en su sistema.

Figura 2-6. Un ejemplo de resultado de prueba de dispositivos

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

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

Compruebe cuidadosamente que FreeBSD haya encontrado todos los dispositivos que debe encontrar. Si no se lista algún dispositivo, FreeBSD no lo ha encontrado. Si el controlador del dispositivo requería configuración de IRQ y puerto de memoria compruebe que los datos que introduzco eran correctos.

Si necesita retocar algo en el chequeo de dispositivos UserConfig no tiene más que salir de sysinstall y arrancarlo de nuevo. Tampoco es mala idea del todo si no está muy familiarizado con el proceso de instalación de FreeBSD.

Figura 2-7. Seleccionar la salida de sysinstall

Use las flechas para seleccionar Exit Install en el menú de la pantalla principal de instalación. Aparecerá el siguiente mensaje:

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

                            [ Yes ]    No

El programa de instalación comenzará de nuevo si deja el CDROM en la unidad y ha seleccionado [ Yes ].

Si va a arrancar desde disquetes tendrá que retirar el floppy mfsroot.flp e introducir en la unidad kern.flp antes de reiniciar.


2.4. Introducción a sysinstall

sysinstall es la herramienta de instalación que proporciona el Proyecto FreeBSD. Es orientado a pantalla y se divide en diferentes menús y pantallas que puede usar para configurar y controlar el proceso de instalación.

El sistema de menús de sysinstall puede recorrerse y manejarse a través del teclado: Intro, Espacio, las flechas y otras teclas. Tiene una descripción detallada de las funciones de de esas teclas en la ayuda de sysinstall.

Si quiere consultarla seleccione Usage y que el botón [Select] está seleccionado, tal y como se describe en Figura 2-8, y luego pulse Intro.

Se le mostrarán las instrucciones para poder usar los menús. Una vez revisadas puede pulsar Intro para regresar al menú principal.

Figura 2-8. Uso de la selección en el menú principal de de sysinstall


2.4.1. Selección del menú de documentación

Desde el menú principal seleccione Doc con las flechas y pulse Intro.

Figura 2-9. Selección del menú de documentación

Esto mostrará el menú de documentación

Figura 2-10. El menú de documentación de sysinstall

Es muy importante que lea la documentación que incluye sysinstall.

Si desea consultar un documento selecciónelo con las flechas y pulse Intro. Cuando acabe pulse de nuevo Intro y volverá al menú de documentación.

Si desea regresar al menú principal de la instalación seleccione Exit y pulse Intro.


2.4.2. Selección del menú de mapas de teclado

Si quiere cambiar su esquema de teclado seleccione mediante las flechas Keymap y pulse Intro. Haga esto si su teclado no sigue el estándar de los EEUU de América.

Figura 2-11. Menú principal de sysinstall

La elección de un mapa de teclado se hace del siguiente modo: seleccione uno de la lista mediante las flechas arriba/abajo y pulse Espacio. Si pulsa Espacio de nuevo anulará la selección. Cuando esté seguro con su elección seleccione [ OK ] mediante las flechas y pulse Intro.

En esta pantalla sólo se presenta parte de la lista. Seleccione [ Cancel ] mediante Tabulador si quiere seguir usando el mapa de teclado por defecto y regresar al menú principal de instalación.

Figura 2-12. Menú de mapas de teclado de sysinstall


2.4.3. Pantalla de opciones de instalación

Seleccione Options y pulse Intro.

Figura 2-13. Menú principal de sysinstall

Figura 2-14. Opciones de sysinstall

Los valores por defecto deberín ser adecuados para la mayoría de usuarios. El número de `` release'' puede variar según la versión que esté instalando.

La descripción de lo que haya elegido aparecerá al final de la pantalla resaltado en azul. Tenga en cuenta que una de las opciones es Use Defaults (``Usar la configuración por defecto'') y todos los valores a sus valores de partida.

Pulse F1 si quiere leer la pantalla de ayuda de las opciones que se le ofrecen.

Pulse Q para volver al menú principal de instalación.


2.4.4. Comenzar una instalación estándar

La instalación Standard es la opción más recomendable para recién llegados a UNIX y FreeBSD. Mediante las flechas seleccione Standard y para comenzar la instalación pulse Intro.

Figura 2-15. Comienzo de una instalación estándar


2.5. Asignación de espacio en disco

Lo primero que tiene que hacer es asignar espacio en disco para FreeBSD y marcar dicho espacio de modo que sysinstall pueda dejarlo listo para su uso. Para ello necesita saber cómo espera FreeBSD encontrar la información del disco.


2.5.1. Numeración de unidades desde el punto de vista de la BIOS

Antes de que instale y configure FreeBSD en su sistema hay una cosa más de la que preocuparse, especialmente si tiene más de un disco duro.

La BIOS es capaz de abstraer el orden normal de los discos si hablamos de un PC en el que se está ejecutando un sistema operativo ``BIOS-dependiente'' como MS-DOS o Microsoft® Windows, que admiten esos cambios sin problemas. Tal cosa permite al usuario arrancar desde un disco duro distinto del llamado ``maestro principal''. Esto es muy conveniente en el caso de algunos usuarios que han encontrado el sistema más simple y barato de disponer de un sistema ``backup'': un segundo disco duro idéntico y copiar periódicamente la primera unidad en la segunda mediante Ghost® or XCOPY . Así, si la primera unidad falla, sufre el ataque de algún virus o padece las consecuencias de un defecto del sistema operativo, sólo tiene que decirle a BIOS que interpole lógicamente las unidades. Es como si intercambiara las conexiones de los discos sin tener que abrir la caja del sistema.

En sistemas más caros a veces pueden encontrarse· controladoras SCSI que incorporan extensiones BIOS, que permite organizar hasta siete unidades SCSI de un modo muy similar.

Cualquiera que esté acostumbrado a usar tales técnicas puede recibir una sorpresa al intentar practicarlas en FreeBSD. FreeBSD no usa la BIOS y no tiene en cuenta en absoluto la ``notación de unidades lógicas desde el punto de vista de la BIOS''. Esto puede dar situaciones bastante chocantes, especialmente cuando las unidades son físicamente idénticas en geometría y han sido creadas como clones de de tados la una de la otra.

Si va a usar FreeBSD recuerde siempre devolver a la BIOS a los valores de numeración ``natural'' antes de la instalación y déjelos ahí. Si tiene que intercambiar unidades hágalo, pero a la vieja usanza: abra la caja y toque los ``jumpers'' y los cables todo lo que sea menester.


2.5.2. Creación de ``slices'' con FDisk

Nota: Aún no ha hecho modificaciones en su disco duro. Si cree que ha cometido algún error y quiere comenzar de nuevo puede hacerlo, salga de los menús de sysinstall e inténtelo de nuevo o pulse U para ejecutar la opción Undo (deshacer). Si se pierde o no sabe cómo salir siempre puede sencillamente apagar su sistema.

Si ha elegido iniciar una instalación estándar sysinstall le mostrará el siguiente mensaje:

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

                      [ Press enter or space ]

Es decir:

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

                      [ Pulse Intro o Espacio ]

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

Figura 2-16. Elija en qué unidad usar FDisk

Quizás esté preguntándose por qué ad1 no aparece por ningún lado. ¿Acaso hemos pasado algo por algo?

Veamos lo que ocurriría si tuviera usted dos discos duros IDE, uno como maestro de la primera controladora IDE y el otro como maestro de la segunda controladora IDE. Si FreeBSD asignara números de unidad en el orden en el que las encuentra, en el ejemplo habríamos visto ad0 y ad1 (y además todo funcionaría perfectamente.

Pero si tuviera usted que añadir un tercer disco, digamos como esclavo de la primera controladora IDE, tendría que llamarse ad1 y el disco que antes era ad1 pasaría a llamarse ad2. Los nombres de dispositivo (como por ejemplo ad1s1a) se usan para ubicar sistemas de ficheros, así que podría encontrarse con que alguno de sus sistemas de ficheros no está donde debiera y tendría que modificar la configuración de su FreeBSD.

Para evitar este problema el kernel puede configurarse para asignar nombres a discos IDE basándose en dónde están en lugar de hacerlo por el orden en el que los encuentra. Según dicho esquema el disco maestro de la segunda contoladora IDE siempre será ad2, incluso si no existen dispositivos ad0 o ad1.

Ésta es la configuración por defecto del kernel de FreeBSD, por lo que se muestran las unidades ad0 y ad2. El sistema en el que se tomaron las capturas de pantalla tiene sendos discos IDE en ambos canales maestros de las dos controladoras y carece de discos en los canales esclavos.

Seleccione el disco en el que desea instalar FreeBSD y pulse [ OK ]. FDisk arrancará y verá una pantalla similar a la que muestra la Figura 2-17.

La pantalla de FDisk se divide en tres partes.

La primera parte, que ocupa las dos primeras líneas de la pantalla, muestra los detalles del disco que seleccionemos, el nombre que FreeBSD le da, la geometría del disco y el tamaño total del disco.

La segunda parte muestra las ``slices'' que haya en el disco, dónde comienzan y acaban, cu´l es su tamaño, qué nombre les da FreeBSD, su descripción y subtipo. Este ejemplo muestra dos pequeñas ``slices'' sin usar; las ``slices'' (del inglés ``rebanadas'') son un tipo de esquema estructural de los discos de PC. También muestra una gran ``slice'' FAT, que casi con total seguridad aparecerá como C: en MS-DOS / Windows, y una ``slice'' extendida, que podría contener otras letras de unidad de MS-DOS / Windows.

La tercera parte muestra los comandos que pueden usarse en FDisk.

Figura 2-17. Particionamiento típico con FDisk

Lo que deba hacer a partir de ahora dependerá mucho de la forma en la que quiera distribuír su disco.

Si desea usar FreeBSD en el resto del disco (lo que implica borrar todos los datos que pudiera haber en el disco una vez que le confirme a sysinstall que desea seguir adelante con la instalación) pulse A, que equivale a la opción Use Entire Disk (Utilizar el disco íntegro). Las ``slices'' que existieran serán borradas y reemplazadas por un pequeño área de disco marcado como sin usar (otro recurso de la estructura de disco de los PC) y tras él una gran ``slice'' destinada a FreeBSD. Ahora marque la partición FreeBSD que acaba de crear como arrancable: pulse S. La pantalla que verá ha de ser muy similar a la Figura 2-18. Observe la A en la columna Flags: indica que la ``slice'' es activa y se arrancará desde ella.

Si desea borrar una ``slice'' para hacer más sitio a FreeBSD selecciónela mediante las flechas y pulse D. Después pulse C y verá un mensaje en el que se le pedirá el tamaño de la ``slice'' que va a crear. Introduzca los datos apropiados y pulse Intro. El valor por defecto en ésta pantalla es el de la ``slice'' más grande que pueda crear en el disco, que debería ser la mayor parte del disco que queda sin usar o el tamaño del disco duro completo.

Si ha hecho sitio para FreeBSD (quizás con una herramienta como PartitionMagic) puede pulsar press C y crear una nueva ``slice''. Verá de nuevo un mensaje en el que se le pedirá que escriba el tamaño de la ``slice'' que va a crear.

Figura 2-18. Partición con FDisk usando el disco completo

Cuando acabe pulse Q. Recuerde que de momento sysinstall está guardando la información de los cambios que está haciendo pero aún no los está escribiendo en el disco.


2.5.3. Instalación de un gestor de arranque

Ha llegado el momento de instalar un gestor de arranque. Debería instalar el gestor de arranque de FreeBSD si:

  • Tiene más de un disco y ha instalado FreeBSD en un disco distinto del primero.

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

Si FreeBSD va a ser el único sistema operativo en el sistema y va a instalarse en el primer disco duro debería elegir el gestor de arranque Standard. Elija None si va a usar algún otro gestor de arranque a través del cual pueda arrancar FreeBSD.

Elija y pulse Intro.

Figura 2-19. Menú de gestores de arranque de sysinstall

La pantalla de ayuda (que puede consultarse en cualquier momento pulsando F1) trata sobre los problemas con los que puede encontrarse al intentar compartir el disco duro entre distintos sistemas operativos.


2.5.4. Creación de ``slices'' en otra unidad

Si hay más de una unidad de disco el programa de instalación volverá a la pantalla ``Select Drives'' (``selección de unidades'') una vez elegido el gestor de arranque. Si quiere instalar FreeBSD en más de un disco seleccione aquí ese otro disco y repita el proceso con las ``slices'' mediante FDisk.

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

Figura 2-20. Salir de la selección de unidad

La tecla Tabulador hace pasar el cursor de la última unidad seleccionada, [ OK ] y [ Cancel ].

Pulse una vez el Tabulador para pasar el cursor hasta ·[ OK ] y luego pulse Intro para proseguir con la instalación.


2.5.5. Creación de particiones con Disklabel

Debe crear particiones dentro de las ``slices'' que acaba de crear. Recuerde que cada partición está asociada a una letra de a a h y que las particiones b, c y d tienen significados heredados que debería tener en cuenta.

Ciertas aplicaciones pueden optimizar su rendimiento de un esquema de particiones concreto, sobre todo si hace particiones repartidas en más de un disco. Si embargo si esta es su primera instalación de FreeBSD no necesita dedicarle demasiado tiempo a decidir cómo partir el disco duro. Es mucho más importante que instale FreeBSD y empiece a aprender a usarlo. Siempre estáa tiempo de reinstalar FreeBSD y cambiar su esquema de particiones cuando esté más familiarizado con el sistema operativo.

Este esquema tiene cuatro particiones: una para la swap tres para los sistemas de ficheros.

Tabla 2-2. Estructura de particiones del primer disco

Partición Sistema de ficheros Tamaño Descripción
a / 100 MB Este es el sistema de ficheros raíz. el resto de sistemas de ficheros se montarán en algún punto de este sistema raíz. 100 MB es un tamaño razonable para él. No es el mejor sitio para almacenar muchos datos y la instalación de FreeBSD escribirá cerca de 40 MB de datos en ella. El resto del espacio es para datos temporales y por si futuras versiones de FreeBSD necesitan más espacio en /.
b N/A 2-3 x RAM

Esta partición es el espacio de memoria de intercambio (o ``swap'') del sistema. La elección de la cantidad correcta de swap es casi un arte en sí mismo. Hay una regla básica que es asignar a la swap el doble o el triple de MB de los que haya en la memoria física (RAM) del sistema. Debería tener al menos 64 MB de swap así que si tiene menos de 32 MB de RAM asígnele a su swap 64 MB.

Si tiene más de un disco puede poner espacio swap en cada disco. FreeBSD usará ambas swap con el resultado de acelerar notablemente el intercambio de páginas de memoria. Calcule el total de swap que necesita (por ejemplo 128 MB) y divida esa cantidad por el número de discos que tenga (por ejemplo dos) y ya tiene la cantidad de espacio que debe destinar a swap en cada uno de sus discos. En nuestro ejemplo 64 MB de swap por disco.

e /var 50 MB El directorio /var contiene ficheros que están en contínuo cambio, como ficheros de ``log'' y otros ficheros administrativos. Muchos de esos ficheros son una consecuencia de o son de gran ayuda para el correcto funcionamiento diario de FreeBSD. FreeBSD ubica dichos ficheros en ese sistema de ficheros para optimizar el acceso a los mismos sin afectar a otros ficheros ni directorios que que tienen similar patrón de accesos.
f /usr Resto del disco El resto de sus ficheros pueden almacenarse en /usr y sus subdirectorios.

Si va a instalar FreeBSD en más de un disco tendrá que crear particiones en las demás ``slices'' que haya configurado. La forma más sencilla de hacerlo es crear dos particiones en cada disco, una para la swap y la otra para sistemas de ficheros.

Tabla 2-3. Esquema de particiones para varios discos

Partición Sistema de ficheros Tamaño Descripción
b N/A See description Tal y como se ha explicado, puede repartir su espacio swap entre varios discos. Aunque piense que la partición a está libre la costumbre (y se dice que ``las costumbres son leyes'') dicta que el espacio swap reside en la partición b.
e /discon Resto del disco El resto del disco puede dejarse en una sola partición. Esto podría ubicarse simplemente en la partición a en lugar de en la e. Sin embargo la costumbre dice que la partición a de una ``slice'' está reservada para el sistema de ficheros que ha de albergar el sistema de ficheros raíz (/). No tiene por qué seguir la costumbre pero tenga en cuenta que sysinstall sí que lo hace, así que si la sigue sabe que está haciendo una instalación más limpia. Puede montar los sistemas de ficheros donde prefiera; este ejemplo le sugiere que los monte como directorios /discon, donde n es un número que cambia en cada disco. Por supuesto que puede usar el esquema que prefiera.

Una vez elegido el esquema de particiones creelo con sysinstall. Se le mostrará el siguiente mensaje:

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

                                [  OK  ]
                          [ Press enter or space ]

Es decir:

                                 Message
 Debe crear particiones BSD dentro de las 'particiones 
 fdisk' que acaba de crear.  Si tiene una cantidad de espacio en 
 disco razonablemente grande (200MB o más) y no tiene necesidades 
 especiales puede simplemente usar el comando (A)uto para asignar 
 el espacio automáticamente. Si tiene necesidades más concretas o 
 simplemente no le gusta la estructura que le da (A)uto, pulse 
 F1 y obtendrá más información sobre la creación manual de 
 la estructura.

                                [  OK  ]
                          [ Pulse Intro o Espacio ]

Al pulsar Intro arrancará el editor de particiones de FreeBSD, Disklabel.

LaFigura 2-21 muestra lo que verá cuando arranque Disklabel. La pantalla se divide en tres partes.

Las primeras líneas muestran el nombre del disco en el que estamos haciendo cambios y el de la ``slice'' que contiene las particiones que estamos creando (Disklabel las muestra bajo Partition name (``nombre de partición'') en lugar de hacerlo como ``slices''). Vemos también ahí la cantidad de espacio libre en la ``slice'', esto es, el espacio que hay asignado a la ``slice'' pero que aún no ha sido asignado a ninguna partición.

En la mitad de la pantalla se muestran las particiones que se han creado, el nombre de los sistemas de ficheros que contiene cada partición, sus tamaños y algunas opciones relacionadas con la creación de sistemas de ficheros.

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

Figura 2-21. El editor Disklabel

Disklabel puede crear automáticamente particiones y asignarles también tamaños por defecto. Pruébelo, pulse A. Verá una pantalla similar a la que aparece en la Figura 2-22. Dependiendo del tamaño del disco que esté usando esos valores por defecto pueden o no ser los apropiados. Esto no es algo de lo que deba preocuparse puesto que no es obligatorio aceptar los valores por defecto.

Nota: A partir de FreeBSD 4.5 la estructura de directorios asigna su propia partición a /tmp en lugar de formar parte de /. Esto ayuda a evitar un desbordamiento de la partición / debido a ficheros temporales.

Figura 2-22. Editor Disklabel con los valores por defecto

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

Vamos a crear la primera partición (a, montada como / o raíz). Seleccione la ``slice'' adecuada y pulse C. Aparecerá un diálogo pidiéndole que escriba el tamaño de la nueva partición (como se muestra en la in Figura 2-23). Puede introducir el tamaño expresado en bloques de disco o como un número seguido de una M para megabytes, una G para gygabytes o una C para cilindros.

Nota: A partir de FreeBSD 5.X es posible hacer lo siguiente: elegir UFS2 mediante la opción Custom Newfs (Z), marcar partes del disco con Auto Defaults y modificarlas con la opción Custom Newfs o añadir la opción -O 2 en el momento de su creación. No olvide añadir -U a SoftUpdates si usa la opción Custom Newfs.

Figura 2-23. Liberar espacio para la partición raíz

El tamaño por defecto que se muestra creará una partición que ocupe el resto de la ``slice''. Si va a usar los tamaños de partición que se daban en el ejemplo anterior borre el texto existente pulsando Retroceso; escriba 64M, como se puede ver en la Figura 2-24. Ahora pulse [ OK ].

Figura 2-24. Edición del tamaño de la partición raíz

Una vez elegido el tamaño de la partición tendrá que elegir si esta partición ha de contener un sistema de ficheros o espacio swap y escribir lo que corresponda en una pantalla como la que se muestra en la Figura 2-25. Esta primera partición contendrá un sistema de ficheros, así que seleccione FS y pulse Intro.

Figura 2-25. Elija el tipo de partición raí

Dado que está creando un sistema de ficheros tendrá que especificarle a Disklabel dónde quiere montar el sistema de ficheros. La pantalla se muestra en la Figura 2-26. El punto de montaje del sistema de ficheros raíz es /, así que escriba / y pulse Intro.

Figura 2-26. Elija el punto de montaje del s. f. raíz

La pantalla le mostrará ahora la partición que acaba de crear. Repita el procedimiento todas las veces que necesite con las demás particiones. Cuando cree la partición swap no se le pedirá el punto de montaje puesto que las particiones swap nunca se montan como tales. Cuando cree la última partición, /usr, puede dejar el tamaño que se le sugiere, esto es, usar el resto del espacio en la ``slice''.

La última pantalla del editor Disklabel será muy parecida a la Figura 2-27, aunque los valores pueden ser diferentes. Pulse Q para salir del editor.

Figura 2-27. Editor Disklabel, sysinstall


2.6. Elección de qué instalar

2.6.1. Elección del tipo de instalación

La elección de qué tipo de instalación debe hacer depende enormemente del uso que se va a dar al sistema y del espacio de disco disponible. El rango de opciones predefinidas está entre hacer la instalación más pequeña posible o instalarlo todo. Aquellos que sean nuevos en UNIX y/o FreeBSD deberán seguramente elegir alguna de las predefinidas que se le ofrecen, a las que llamaremos distribuciones, de ``distribution set'' tal y como aparecen en el menú de sysinstall. Una instalación ·a medida es algo más adecuado para para usuarios con algo más de experiencia.

Pulse F1 si quiere obtener más información sobre las opciones de tipo de instalación y qué contiene cada distribución. Cuando acabe de consultar la ayuda pulse Intro y volverá al al menú de selección de instalación de distribuciones.

Si quiere instalar un interfaz gráfico de usuario deberá elegir una distribución cuyo nombre comienza por X. La configuración de XFree86 y la selección de un escritorio es una de las tareas post-instalación.

La versión por defecto de XFree86 que se instala depende de la viersión de FreeBSD que instale. En versiones de FreeBSD anteriores a 4.6 se instala XFree86 3.X; en las versiones FreeBSD 4.6 y posteriores se instala XFree86 4.X.

El mejor sitio para saber si su tarjeta gráfica está soportada es el sitio web de XFree86. Si su tarjeta gráfica no está soportada por la versión que se instala con FreeBSD deberá seleccionar e instalar una distribución sin X. Tras la instalación del sistema puede instalar y configurar una versión más reciente de XFree86 desde los ports.

Si preve compilar un kernel a medida selecciones la opción que incluye el código fuente. Para más información sobre las razones por las que debe compilarse un kernel a medida y sobre cómo compilar uno de esos kernel, consulte el Capítulo 7.

Evidentemente el sistema más versátil es aquél que lo tiene todo. Si dispone de espacio de disco suficiente seleccione All, como se muestra en la Figura 2-28, usando las flechas y pulsando Intro. Si el espacio en disco es limitado piense en usar alguna de las otras opciones. No pierda con ello demasiado tiempo puesto que el resto de distribuciones pueden añadirse en cualquier momento tras la intalación.

Figura 2-28. Elegir distribuciones


2.6.2. Instalación del árbol de ports

Tras seleccionar la distribución elegida se le presentará la opción de instalar el árbol de ports, o Colección de Ports de FreeBSD. Los ports son una forma fácil y cómoda de instalar software. El árbol de ports no contiene el código fuente necesario para compilar software; es una gran colección de ficheros que automatiza la descarga, la compilación y la instalación de paquetes de software de todo tipo. El Capítulo 4 explica con detalle cómo utilizar los ports.

El programa de instalación no comprueba si tiene espacio suficiente. Seleccione esta opción si dispone de sitio en el disco. En FreeBSD 5.3 los ports ocupan cerca de 300 MB en disco. Puede asumir tranquilamente un número mayor en versiones más reciente de FreeBSD.

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

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

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

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

                              [ Yes ]     No

Es decir:

 Petición de confirmación por parte del usuario
 ¿Quiere instalar la colección de ports de FreeBSD?

 Tendrá acceso inmediato a más de 10,500 paquetes de software listos 
 para usarse en FreeBSD, aunque necesitará cerca de 300 MB de 
 espacio en disco como mínimo y posiblemente mucho más 
 si descarga los 'tarballs' de código fuente (aunque si tiene los CD 
 extra de una versión de FreeBSD en CD/DVD puede montarlos en /cdrom, de forma 
 que esto dejaría de ser un problema).

 La colección de ports es un recurso extremadamente valioso y es muy 
 recomendable que la instale en su partición /usr, así que debería 
 responder Sí a la siguiente pregunta.

 Si quiere conocer las últimas entradas novedades y las últimas 
 entradas en la colección de ports visite: 
     http://www.FreeBSD.org/ports

                              [ Yes ]     No

Seleccione [ Yes ] con las flechas e instale los ports o [ No ] para obviar la pregunta. Pulse Intro para seguir con la instalación. Volvemos al menú de elección de distribuciones.

Figura 2-29. Confirmar distribuciones

Ahora puede seleccionar Exit Exit con las flechas; asegúrese de que [ OK ] está seleccionado y pulse Intro.


2.7. Elección del medio de instalación

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

Si quiere usar otro método de instalación seleccione una opción y siga las instrucciones.

Pulse F1 para acceder a la ayuda en línea del medio de instalación elegido. Pulse Intro para regresar al menú de selección de medio.

Figura 2-30. Elección del medio de instalación.

Modos de instalación por FTP: Hay tres tipos de instalación via FTP que puede usar: FTP activo, FTP pasivo y via un proxy HTTP.

FTP Activo: Install from an FTP server, es decir: ``Instalar desde un servidor FTP''

Esta opción hará que todas las transferencias FTP usen el modo ``Activo''. No funcionará a través de cortafuegos pero seguramente funcionará con viejos servidores FTP que no soportan el modo pasivo. Si su conexión se cuelga cuando usa el modo pasivo (el modo por defecto) pruebe el modo activo.

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

Esta opción configura sysinstall para que use el modo ``Pasivo'' para todas las operaciones FTP. Esto permite al usuario pasar a través de cortafuegos que no permiten conexiones entrantes a puertos TCP aleatorios.

FTP via un proxy HTTP: Install from an FTP server through a http proxy, es decir ``Instalar desde un servidor FTP via un proxy http''

Esta opción configura sysinstall para usar el el protocolo HTTP (como si fuera un navegador web) para conectarse a un proxy en todas las operaciones FTP. El proxy traducirá las peticiones del usuario de forma que pasarán a través de un cortafuegos que no permita ningún tipo de conexiones FTP pero ofrezca un proxy HTTP. Tendrá que suministrar los datos del proxy además de los del servidor FTP.

Si quiere usar un servidor proxy FTP tendrá que usar el nombre del servidor con el que realmente quiere conectar como nombre de usuario seguido de un signo ``@''. Veamos un ejemplo. Quiere usted instalar desde ftp.FreeBSD.org a través del servidor proxy FTP foo.ejemplo.com, que escucha en el puerto 1024.

Vaya al menú opciones, ponga ftp@ftp.FreeBSD.org como nombre de usuario FTP, y su dirección de correo electrónico como contraseña. El medio de instalación será FTP (o FTP pasivo si el proxy lo permite) y la URL ftp://foo.ejemplo.com:1234/pub/FreeBSD.

Dado accede al directorio /pub/FreeBSD de ftp.FreeBSD.org a través del proxy foo.ejemplo.com puede usted instalar desde ésta máquina, que irá descargando los ficheros que necesite desde ftp.FreeBSD.org a medida que el proceso de instalación los vaya requiriendo.


2.8. El punto sin retorno

The installation can now proceed if desired. This is also the last chance for aborting the installation to prevent changes to the hard drive.

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

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

 We can take no responsibility for lost disk contents!  

                             [ Yes ]    No

Es decir:

   Petición de confirmación del usuario
 ¡Última oportunidad!.  ¿SEGURO que quiere seguir con la instalación?

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

 No podemos asumir nigún tipo de responsabilidad por datos que pierda.

                             [ Yes ]    No

Seleccione [ Yes ] y pulse Intro.

La instalación tardará más o menos tiempo según la distribución que haya elegido, el medio de instalación y la velocidad del sistema. Se le mostrarán mensajes durante el proceso para irle informando.

Cuando acabe la instalación verá un mensaje como este:

                               Message 

Congratulations! You now have FreeBSD installed on your system. 

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

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

                                 [ OK ] 

                      [  Press enter to continue  ]

Es decir:

                               Mensaje 

         ¡Enhorabuena! Ha instalado FreeBSD en su sistema.

Ahora terminaremos la configuración del sistema.  Si hay alguna 
opción que no quiere configurar sencillamente elija No.

Si en algún momento quiere regresar a este programa pulse 
/stand/sysinstall .

                                 [ OK ]

                      [  Pulse Intro  ]

Tras pulsar Intro pasará a la configuración posterior instalación.

Si selecciona [ No ] y pulsa Intro la instalación se detendrá para no hacer más modificaciones en su sistema. Verá el el siguiente mensaje.

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

                                 [ OK ]

Es decir:

                                Mensaje
La instalación ha finalizado con errores.  Puede moverse por la 
pantalla de mensajes de depuración de VTY1 tras pulsar la tecla 
de Bloqueo de Pantalla.  También puede elegir "No" en el próximo
menú y volver a los menús de instalación para repetir cualquier 
operación que haya fallado.

                                 [ OK ]

Este mensaje se ha generado porque no se ha instalado nada. Pulse Intro para volver al menún principal y salir de la instalación.


2.9. Después de la instalación

Para poder terminar una instalación debemos responder todavía a unas cuantas preguntas. Estas opciones se nos presentarán de nuevo entrando en la configuración antes de entrar en el nuevo sistema FreeBSD o una vez en él mediante /stand/sysinstall, seleccionando Configure.


2.9.1. Configuración de dispositivos de red

Si ha tenido que configurar PPP para poder hacer una instalación via FTP no se le mostrará la siguiente pantalla.

Si necesita información detallada sobre Redes de Área Local y la configuración necesaria para que FreeBSD haga de ``gateway/router'' consulte el capítulo Advanced Networking .

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

                             [ Yes ]   No

Selecciones [ Yes ] y pulse Intro si quiere configurar dispositivos de red; si no quiere, seleccione [ No ].

Figura 2-31. Selección de un dispositivo Ethernet

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

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

                              Yes   [ No ]

En la red local del ejemplo el tipo de protocolo de Internet que había (IPv4) parecía más que suficiente así que se eligió [ No ].

Si puede conectar con alguna red IPv6 mediante un servidor RA elija ·[ Yes ] y pulse Intro. La búsqueda de servidores RA llevará unos instantes.

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

                              Yes   [ No ]

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

Si selecciona [ Yes ] se ejecutará dhclienty , si ha funcionado, encontrará los datos de configuración de la red automáticamente. Para más información consulte la Sección 23.10.

La siguiente ilustración muestra la configuración de un dispositivo Ethernet en un sistema que hará de ``gateway'' para una red local.

Figura 2-32. Configuración de ed0

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

Host

El nombre totalmente cualificado del sistema (``fully-qualified hostname'') k6-2.example.com en este caso.

Dominio

El nombre del dominio al que pertenece su máquina, en este caso example.com.

``gateway'' IPv4

La dirección IP del sistema que reenvía paquetes a destinos fuera de la red local. Debe rellenar este campo si esta función la realiza una máquina que forma parte de la red. Déjelo en blanco si el sistema es el enlace con Internet para su red. El ``gateway'' IPv4 es conocido también como puerta de enlace o ruta por defecto.

Servidor de nombres

Dirección IP de su servidor DNS local. Dado que en la red del ejemplo no se dispone de un servidor DNS local se ha introducido la dirección IP del servidor DNS del proveedor de Internet: 208.163.10.2 .

Dirección IPv4

En este interfaz se usón la dirección IP 192.168.0.1

Netmask

En esta red local se usa un bloque de redes de Clase C (192.168.0.0 - 192.168.255.255). La máscara de red es, por tanto, también para una red de Clase C: (255.255.255.0).

Opciones adicionales de ifconfig

Cualquier tipo de opción que quiera añadir a su interfaz mediante ifconfig. en nuestro caso no había ninguna.

Use Tab to select [ OK ] when finished and press Enter.

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

                             [ Yes ]   No

Seleccione [ Yes ] y pulse Intro si quiere conectar inmediatamente su sistema a la red mediante el o los interfaces que acaba de configurar, pero recuerde que aún tendrá que reiniciar la máquina.


2.9.2. Configuración del ``gateway''

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

                              [ Yes ]    No

Si el sistema hará de enlace de la red local y reenviará paquetes entre otras máquinas elija [ Yes ] y pulse Intro. Si la máquina es un nodo de una red elija [ No ] y pulse Intro.


2.9.3. Configuración de servicios de Internet

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

                               Yes   [ No ]

Si selecciona [ No ] varios servicios de la máquina, como telnetd y otros, no se activarán. Eso significa que los usuarios remotos no podrán acceder al sistema mediante telnet. Los usuarios locales, en cambio, podrán acceder a sistemas remotos mediante telnet.

Dichos servicios pueden activarse en cualquier momento editando /etc/inetd.conf con el editor de texto que prefiera. Para más información sobre esto consulte la Sección 23.14.1.

Seleccione [ Yes ] si desea configurar estos servicios durante la instalación. Se le mostrará el siguiente mensaje:

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

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

                             [ Yes ]   No

Es decir:

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

Dicho esto ¿desea activar inetd?

                             [ Yes ]   No

Seleccione [ Yes ].

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

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

                             [ Yes ]   No

Es decir:

      Petición de confirmación por parte del usuario
inetd(8) depende de su fichero de configuración,  /etc/inetd.conf, donde 
se declara qué servicios de Internet se activarán.  El inetd.conf(5) por 
defecto de FreeBSD trae todos los servicios desactivados, así que deben ser 
activados uno a uno en el fichero de configuración para que funcionen, 
incluso una vez que inetd(8) ya esté activado.  Recuerde que los servicios 
IPv6 se activan aparte de los servicios IPv4.

Elija [Yes] si quiere abrir /etc/inetd.conf en un editor y [No] si 
quiere dejarlo como está.

                             [ Yes ]   No

Si elige [ Yes ] podrá añadir servicios de un modo muy sencillo: borre el caracter # del principio de la línea donde esté el servicio que quiera activar.

Figura 2-33. Edición de inetd.conf

Una vez añadidos servicios deseados, pulse Escape y verá un menú en el que se le preguntará si quiere guardar los cambios.


2.9.4. FTP Anónimo

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

                              Yes    [ No ]

2.9.4.1. Rechazar el FTP anónimo

Si elige la respuesta por defecto ([ No ]) y pulsa Intro tenga en cuenta que los usuarios con cuenta en la máquina pueden seguir accediendo a ella mediante FTP.


2.9.4.2. Dar acceso FTP anónimo

Si lo activa cualquiera podrá conectarse anónimamente a su máquina con FTP. Debería plantearse las implicaciones de seguridad antes de activar tal cosa. Tiene más información sobre seguridad en el Capítulo 15.

Si quiere activar el FTP anónimo seleccione [ Yes ] con las flechas y pulse Intro. Verá la siguiente pantalla (o una muy similar):

Figura 2-34. Configuración por defecto del FTP anónimo

Para ver la ayuda pulse F1:

This screen allows you to configure the anonymous FTP user.

The following configuration values are editable:

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

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

Comment: String describing this user in /etc/passwd


FTP Root Directory:

        Where files available for anonymous FTP will be kept.

Upload subdirectory:

        Where files uploaded by anonymous FTP users will go.

Es decir:

En esta pantalla puede configurar el usuario de FTP 
        anónimo.

Puede editar los siguientes valores de la configuración:

UID:     El ID del usuario que quiere asignar al usuario anónimo de 
         de FTP.  Todos los ficheros que se suban le  pertenecerán.

Group:   El grupo al que pertenecerá el usuario FTP anónimo.

Comment: La descripción del usuario en /etc/passwd


FTP Root Directory:

        Dónde se guardarán contenidos para los usuarios anónimos.

Upload subdirectory:

        Dónde se guardarán los ficheros que suban los usuarios 
    de FTP anónimo.

Por defecto en directorio raíz del ftp se irá en /var. Si no hay sitio suficiente para lo que prevea que va a necesitar puede usar /usr, puede poner el Directorio Raíz de FTP en /usr/ftp.

Cuando haya terminado con la configuración pulse Intro.

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

                              [ Yes ]    No

Si selecciona [ Yes ] y pulsa Intro arrancará automáticamente un editor y podrá crear un mensaje que verá los usuarios de FTP anónimo al conectarse a la máquina.

Figura 2-35. Edición del mensaje de bienvenida de FTP

Vemos en acción un editor de texto llamado ee. Puede cambiar el mensaje ahora mismo o hacerlo en cualquier otro momento con el editor de texto que prefiera. Observe el nombre del fichero y su ubicación en la parte baja de la pantalla.

Pulse Escape y aparecerá una ventana flotante con la opción por defecto de a) leave editor (salir del editor). Pulse Intro si quiere salir y continuar. Pulse Intro de nuevo si quiere guardar los cambios si es que hizo alguno.


2.9.5. Configuración de NFS

NFS (``Network File System'' o Sistema de Ficheros en Red) le permite compartir ficheros a través de una red. Una máquina puede configurarse como servidor, como cliente y como ambos. Para más información consulte la Sección 23.6.


2.9.5.1. NFS Server

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

                              Yes    [ No ]

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

Si ha elegido [ Yes ] verá un mensaje emergente indicando que debe crearse el fichero exports.

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

Es decir:

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

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

Figura 2-36. Edición de exports

Puede editar el fichero ahora mismo o más tarde con el editor de texto que prefiera. Observe que el nombre del fichero y su ubicación aparecen en la parte de abajo de de la pantalla.

Pulse Escape, aparecerá un mensaje emergente que por defecto le ofrecerá a) leave editor (es decir, salir del editor). Pulse Intro para salir del editor y seguir adelante.


2.9.5.2. Cliente NFS

El cliente NFS hace que su máquina pueda acceder a servidores NFS.

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

                              Yes   [ No ]

Seleccione con las flechas la opción que prefiera ( [ Yes ] o [ No ] ) y pulse Intro.


2.9.6. El Perfil de seguridad

un ``perfil de seguridad'' es un conjunto de opciones de configuración que intenta suministrar el grado de seguridad deseado activando y desactivando ciertos programas entre otras cosas. Cuanto más restrictivo es el perfil de seguridad menos programas activa por defecto. Se trata de uno de los principios básicos de la seguridad: ejecuta sólamente lo que necesites.

Por favor, tenga muy en cuenta que un perfil de seguridad es sólamente una configuración por defecto. Todos los programas pueden activarse y desactivarse una vez que haya instalado FreeBSD modificando o añadiendo las líneas correspondientes en /etc/rc.conf. Para más información consulte rc.conf(5).

La siguiente tabla muestra qué proporciona cada perfil de seguridad. Las columnas son las opciones que tiene para cada perfil de seguridad y las filas son los programas o características que el perfil activa o desactiva.

Tabla 2-4. Perfiles de seguridad posibles

  Extremo Moderado
sendmail(8) NO
sshd(8) NO
portmap(8) NO ES POSIBLE [a]
Servidor NFS NO
securelevel(8) [b] NO
Notas de Tabla:
a. portmapper se activa en la propia instalación si la máquina va a disponer de un cliente o o un servidor NFS.
b. Si elige un perfil de seguridad que implante un nivel de seguridad ``Extremo'' o ``Alto'' debe ser consciente de las implicaciones. Por favor, lea init(8) y ponga especial atención en el significado de los niveles de seguridad o puede encontrarse más tarde con problemas bastante serios.
                       User Confirmation Requested
 Do you want to select a default security profile for this host (select
 No for "medium" security)? 

                            [ Yes ]    No

Seleccionando [ No ] y pulsando después Intro asignará al sistema un perfil de seguridad medio.

Si selecciona [ Yes ] y pulsa Intro podrá elegir otro perfil de seguridad.

Figura 2-37. Opciones de los perfiles de seguridad

Pulse F1 para consultar la ayuda. Pulse Intro y volverá al menú de selección.

Use las flechas para elegir Medium a menos que con total seguridad otro nivel de seguridad sea lo que necesite. Una vez seleccionado [ OK ] pulse Intro.

Según qué tipo de perfil se haya elegido verá un mensaje de confirmación diferente.

                                 Message

Moderate security settings have been selected.

Sendmail and SSHd have been enabled, securelevels are
disabled, and NFS server setting have been left intact.
PLEASE NOTE that this still does not save you from having
to properly secure your system in other ways or exercise
due diligence in your administration, this simply picks
a standard set of out-of-box defaults to start with.

To change any of these settings later, edit /etc/rc.conf

                                  [OK]

Es decir:

                                 Mensaje

Ha elegido un perfil de seguridad medio.

Sendmail y SSHd han sido activados, los 'securelevels' han 
sido desactivados y el NFS no se ha tocado.  POR FAVOR, 
TENGA EN CUENTA que esto no le exime de asegurar correctamente 
su sistema mediante otras técnicas o ejercicios diligentes 
de administración.  Esto simplemente le da una norma 
que funciona para usarla como punto de partida.

Edite /etc/rc.conf para modificar la configuración.

                                  [OK]
                                 Message

Extreme security settings have been selected.

Sendmail, SSHd, and NFS services have been disabled, and
securelevels have been enabled.
PLEASE NOTE that this still does not save you from having
to properly secure your system in other ways or exercise
due diligence in your administration, this simply picks
a more secure set of out-of-box defaults to start with.

To change any of these settings later, edit /etc/rc.conf

                                  [OK]

Es decir:

                                 Mensaje

Ha seleccionado un perfil de seguridad extremo.

Se han desactivado los servicios de sendmail, SSHd y NFS. 
Se han activado los 'securelevels'.
POR FAVOR, TENGA EN CUENTA QUE esto no le exime de asegurar 
correctamente su sistema mediante otras técnicas o ejercicios 
diligentes de administración.  Esto simplemente le da una 
norma que funciona para usarla como punto de partida.

Edite /etc/rc.conf para modificar la configuración.

                                  [OK]

Pulse Intro para proseguir con la configuración posterior a la instalación.

Aviso¡Los perfiles de seguridad no son varitas mágicas! Aunque use un perfil de seguridad extremo tendrá que estar al día en cuestiones de seguridad: lea alguna lista de correo adecuada (como la Sección A.1), use contraseñas robustas y hablando en general, conozca y aplique prácticas seguras.


2.9.7. Configuración de la consola del sistema

La consola tiene unos cuantos parámetros que puede configurar aquí mismo.

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

                              [ Yes ]  No

Seleccione [ Yes ] y pulse Intro para ver y configurar las opciones.

Figura 2-38. Opciones de configuración de la consola del sistema

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

Figura 2-39. Opciones del salvapantallas

Desplácese arriba y abajo con las flechas por la lista de salvapantallas y elija el que prefiera pulsando Intro sobre él. Se le mostrará de nuevo el menú de configuración de la consola.

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

Figura 2-40. Retardo del salvapantallas

El valor del retardo del salvapantallas puede ajustarse aquí a voluntad; seleccione [ OK ] y pulse Intro para regresar al menú de configuración de la consola.

Figura 2-41. Salida de la configuración de la consola

Seleccione Exit y pulse Intro para poder seguir con la configuración del sistema.


2.9.8. Configuración de la zona horaria

Si su sistema tiene correctamente configurada la zona horaria podrá corregir cualquier automáticamente cualquier cambio horario regional, así como cumplir adecuadamente con otras funciones relacionadas con zonas horarias.

El ejemplo que se muestra en las capturas de pantalla es de una máquina ubicada en la zona horaria del Este de los Estados Unidos.

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

                            [ Yes ]   No

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

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

                              Yes   [ No ]

Seleccione [ Yes ] o [ No ] según sea la configuración del sistema y pulse Intro.

Figura 2-42. Elección de región

Elija la región que corresponda moviéndose con las flechas y pulsando Intro cuando sea conveniente.

Figura 2-43. Elija país

Elija el país que más se adapte a su situación geográfica exacta y pulse Intro.

Figura 2-44. Elija su zona horaria

Elija la zona horaria que le corresponda con las flechas y pulse Intro.

                            Confirmation 
            Does the abbreviation 'EDT' look reasonable?

                            [ Yes ]   No

Confirme si la abreviatura de la zona horaria es correcta. Si es así pulse Intro y siga adelante.


2.9.9. Compatibilidad con Linux

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

                            [ Yes ]   No

Si selecciona [ Yes ] y pulsa Intro podrá ejecutar software Linux en FreeBSD. La instalación añadirá los paquetes necesarios para poder tener compatibilidad binaria con Linux.

Si realiza la instalación por FTP la máquina necesitará conectarse a Internet. A veces los servidores ftp no tienen todas las distribuciones, de forma que si no puede instalar la distribución de compatibilidad con Linux no se preocupe, puede probar con otro servidor o instalarla más tarde.


2.9.10. Configuración del ratón

Esta opción le permitirá cortar y pegar texto en consola y en otros programas mediante un ratón de tres botones. Consulte moused(8) si usa uno de 2 botones, es posible emular ese tercer botón. En el siguiente ejemplo veremos la configuración de un ratón ``no USB'' (es decir, PS/2 o de puerto COM):

                      User Confirmation Requested 
         Does this system have a non-USB mouse attached to it?

                            [ Yes ]    No

Seleccione [ Yes ] en el caso de un raón no USB o [ No ] si tiene un ratón USB y pulse Intro.

Figura 2-45. Elija el protocolo que usa el ratón

Seleccione Type mediante las flechas y pulse Intro.

Figura 2-46. Ajuste del procolo del ratón

En el ejemplo se ha usado un ratón PS/2, así que Auto era correcto. Para cambiar el protocolo use las flechas para moverse por el menú y elegir otra opción. Para salir seleccione [ OK ] y pulse Intro.

Figura 2-47. Configuración del puerto del ratón

Seleccione Port y pulse Intro.

Figura 2-48. Configuración del puerto del ratón

Este sistema tiene un ratón PS/2, de forma que la configuración por defecto (PS/2) basta. Si quiere modificarla use las flechas y pulse Intro.

Figura 2-49. Arranque del dæmon del ratón

Para terminar, seleccione con las flechas Enable (activar) y pulse Intro: así se activa y prueba el dæmon del ratón.

Figura 2-50. Prueba del dæmon del ratón

Mueva el ratón un poco por la pantalla hasta asegurarse de que el cursor responde adecuadamente. Si todo es correcto seleccione [ Yes ] y pulse Intro. Si hay algo que no funciona correctamente seleccione [ No ] e inténtelo con otras opciones de configuración.

Seleccione Exit y pulse Intro para volver a la configuración del sistema.


2.9.11. Configuración de servicios adicionales de red

La configuración de servicios de red puede ser una verdadera pesadilla para el usuario poco experimentado, sobre todo si las redes son un campo que no conoce demasiado bien. Las redes, incluyendo Internet, son un campo de vital importancia en todo lo relacionado con los sistemas operativos modernos y entre ellos por supuesto que está FreeBSD; por lo tanto le resultará muy útil tener unas nociones de las vastas funciones de red que puede desarrollar FreeBSD. El hacerlo durante la instalación sirve para asegurar que los usuarios tienen al menos una comprensión aproximada de los diversos servicios de que pueden disponer.

Los servicios de red son programas que aceptan conexiones de cualquiera en la red. Se han hecho todos los esfuerzos posibles para que ningún programa haga nada ``malo'' pero por desgracia los programadores no son perfectos y a lo largo de los años han aparecido casos de errores en servicios de red que han sido aprovechados por atacantes para hacer todo tipo de maldades. Es muy importante que active sólamente los servicios de red que sabe que necesita. Si duda, lo mejor es que no arranque un servicio de red que no sabe si necesita. Recuerde que siempre puede activar ese servicio cuando se asegure de que lo necesite ejecutando sysinstall o modificando /etc/rc.conf.

Si selecciona la opción Networking verá un menú muy similar a este:

Figura 2-51. Configuración de la red, primera parte

La primera opción, Interfaces, se describió en la Sección 2.9.1, así que podemos ignorarla.

Si elige AMD activará la utilidad de montaje automática de BSD. Normalmente se usa junto con NFS (ver más adelante) para montar automáticamente sistemas de ficheros remotos. No hay más configuración que podamos hacer además de activar o desactivar el servicio.

En la siguiente línea vemos la opción AMD Flags. Si la selecciona aparecerá un menú emergente para que configure los parámetros de AMD. El menú contiene un conjunto de opciones por defecto:

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

La opción -a ajusta el punto de montaje, en este caso /.amd_mnt. La opción -l declara el fichero ``log'' por defecto. Por otra parte, si se usa syslogd toda la actividad de ``logs'' se enviará al dæmon de ``logs'' del sistema. El directorio /host se usa para montar un sistema de ficheros exportado por un sistema remoto, mientras que el directorio /net se usa para montar un sistema de ficheros que se exporta desde una direccón IP. El fichero /etc/amd.map define las opciones de exportación por defecto de AMD.

La opción Anon FTP permite conexiones FTP anónimas. Seleccione esta opción para convertir su sistema en un servidor FTP anónimo. Tenga en cuenta las implicaciones de seguridad de tal hecho. Se le mostrará otro menú para explicarle en profundidad los riesgos de seguridad y la configuración.

El menú de configuración Gateway le servirá para configurar su sistema como un ``gateway'' tal y como se ha descrito previamente. También puede usarse para desactivar la opción Gateway si por error la seleccionón durante el proceso de instalación.

La opción Inetd puede usarse para configurar o desactivar totalmente el dæmon inetd(8) como se ha descrito antes.

La opción Mail se usa para configurar el MTA (``Mail Transfer Agent'', o Agente de Transferencia de Correo) por defecto del del sistema. Si selecciona ésta opción verá el siguiente menú:

Figura 2-52. Selección del MTA por defecto

Aquí puede elegir qué MTA instalar en el sistema. Un MTA es ni más ni menos que un servidor de correo que gestiona el correo electrónico para usuarios del sistema o incluso del resto de Internet.

Si selecciona Sendmail instalará el ya tradicional sendmail, que es el MTA por defecto de FreeBSD. La opción Sendmail local hará que sendmail sea el MTA por defecto pero desactiva su función de recibir correo entrante desde Internet. Las otras opciones disponibles, Postfix y Exim funcionan de forma similar a Sendmail. Ambos gestionan correo electrónico, aunque hay usuarios que prefieren una de esas alternativas a usar sendmail como MTA.

Tras seleccionar un MTA (o quizás haya elegido no usar MTA) aparecerá la siguiente opción del menú de configuración de la red: NFS client.

La opción NFS client configurará el sistema para que pueda comunicarse con un servidor via NFS. Un servidor NFS hace que sus sistemas de ficheros sean accesibles para otras máquinas a través de la red mediante el protocolo NFS. Si el suyo es un sistema que no va a conectarse a ninguna red puede dejar la opción como está. Es posible que el sistema necesite ser configurado más adelante; consulte la Sección 23.6, donde hay más información sobre la configuración como cliente y como servidor.

La siguiente opción es NFS server, que le permitirá convertir el sistema en un servidor NFS. También añade la información necesaria para el arranque de servicios RPC. RPC se usa para coordinar conexiones entre máquinas y programas.

La siguiente en la lista es la opción Ntpdate, relacionada con la gestión de la sincronización del reloj del sistema. Si la selecciona verá un menú como este:

Figura 2-53. Configuración de ntpdate

Desde este menú elija el servidor más próximo a su ubicación geográfica. Al elegir un servidor más próximo hace que la sincronización sea más fiable que contra un servidor más lejano, que puede tener una latencia más alta en las conexiones.

La siguiente opción es PCNFSD. Esta opción instalará el paquete net/pcnfsd desde la colección de ports. Es una aplicación muy útil que facilita servicios de autenticación en NFS para sistemas que son incapaces de darla por sí mismos, léase el sistema operativo MS-DOS de Microsoft.

Ahora baje un poco por la pantalla y vea el resto el opciones:

Figura 2-54. Configuración de la red; segunda parte

rpcbind(8), rpc.statd(8) y rpc.lockd(8) se usan en (RPC). rpcbind gestiona la comunicación entre servidores y clientes NFS; es una parte imprescindible del sistema si se quiere que un servidor NFS funcione correctamente. El dæmon rpc.statd interactúa con el dæmon rpc.statd de otros servidores y proporciona monitorización de estado. Los informes que suministra suelen encontrarse en /var/db/statd.status. La siguiente opción que encontramos es rpc.lockd que, si se activa, proporciona servicios de bloqueo de ficheros. Se suele utilizar mediante rpc.statd para monitorizar qué hosts están pidiendo bloqueos y con quén frecuencia lo hacen. Aunque estas dos últimas opciones son fantásticas para la depuración de problemas no son necesarias para el funcionamiento de clientes y servidores NFS.

Si sigue avanzando en la lista se encontrará con Routed, el dæmon de enrutado. routed(8) gestiona bajo petición las tablas de rutas de cualquier host físicamente conectado a la red. Suele usarse en sistemas que hacen de ``gateway'' de una red local. Si lo selecciona se le presentará un menú en el que se le pedirá la ubicación de la aplicación. Viene definida por defecto y puede aprobarla pulsando Intro. Se le presentarán entonces otro menú, en el que podrá incluír ``flags'' (parámetros) a routed. La opción por defecto es -q y debería constar ya en pantalla.

La siguiente es la opción Rwhod que, una vez activada, arrancará el dæmon rwhod(8) en el arranque del sistema. La aplicación rwhod enviará periódicamente (en modo ``broadcast'') mensajes de sistema a través de la red, o los recogerá si se le configura en modo ``consumer''. Tiene más información sobre esto en ruptime(1) y rwho(1).

La penúltima opción del menú es el dæmon sshd(8). Se trata del servidor de shell segura de OpenSSH y su uso es del todo recomendable en lugar de telnet y FTP. El servidor sshd se emplea para crear conexiones seguras entre hosts mediante conexiones cifradas.

Para terminar tenemos la opción TCP Extensions. Activa las extensiones TCP definidas en los RFC 1323 y RFC 1644. Aunque en muchos sistemas activar TCP Extensions puede acelerar las conexiones puede provocar que se rechacen algunas. No se recomienda hacerlo, por tanto, en servidores pero puede ser beneficioso en otros casos.

Ahora que ha configurado los servicios de red puede seleccionar Exit y pasar a la siguiente sección de la configuración.


2.9.12. Configuración del servidor X

Si quiere usar un interfaz gráfico de usuario como KDE, GNOME, u otros, tendrá que configurar un servidor X.

Nota: Si necesita ejecutar XFree86 como un usuario distinto de root tendrá que instalar x11/wrapper. Viene instalado por defecto en FreeBSD 4.7 y siguientes; en versiones anteriores puede instalarse desde el menú de selección de paquetes.

Consulte el sitio web de XFree86 para saber si su tarjeta gráfica está soportada.

                      User Confirmation Requested 
        Would you like to configure your X server at this time?

                            [ Yes ]   No

Aviso Es imprescindible que disponga de las especificaciones de su monitor y su tarjeta gráfica. La configuración incorrecta puede dañar su hardware. Si no dispone de la información necesaria elija [ No ] y configure su servidor X cuando recopile los datos necesarios. Cuando sea posible ejecute /stand/sysinstall, elija Configure y en ese menú elija XFree86. Si configura mal en servidor X puede dejar el sistema congelado. Suele decirse que la configuración del servidor X es una tarea que debe acometerse una vez que la la instalación ha terminado.

Si dispone de los datos de su tarjeta gráfica y de su monitor puede pasar a la configuración de su servidor X: seleccione [ Yes ] y pulse Intro.

Figura 2-55. Menú de selección del método de configuración

Hay varios métodos de configuración del servidor X. Use las flechas para seleccionar el método que prefiera y pulse Intro. Lea atentamente todos los mensajes que se le muestren.

Los métodos xf86cfg y xf86cfg -textmode pueden oscurecer la pantalla y tardar unos segundos en arrancar. No se impaciente.

Vamos a ver un ejemplo de uso de la herramienta de configuración xf86config. Las opciones de configuración dependerán del hardware presente en el sistemay seguramente en su caso serán diferentes de las que aquí se muestran:

                                Message
 You have configured and been running the mouse daemon. 
 Choose "/dev/sysmouse" as the mouse port and "SysMouse" or
 "MouseSystems" as the mouse protocol in the X configuration utility. 

                                 [ OK ]

                      [ Press enter to continue ]

Esto indica que el dæmon del ratón que hemos configurado con anterioridad ha sido detectado. Pulse Intro y prosigamos.

Al arrancar xf86config se mostrará una breve introducción:

This program will create a basic XF86Config file, based on menu selections you
make.

The XF86Config file usually resides in /usr/X11R6/etc/X11 or /etc/X11. A sample
XF86Config file is supplied with XFree86; it is configured for a standard
VGA card and monitor with 640x480 resolution. This program will ask for a
pathname when it is ready to write the file.

You can either take the sample XF86Config as a base and edit it for your
configuration, or let this program produce a base XF86Config file for your
configuration and fine-tune it.

Before continuing with this program, make sure you know what video card
you have, and preferably also the chipset it uses and the amount of video
memory on your video card. SuperProbe may be able to help with this.

Press enter to continue, or ctrl-c to abort.

Si pulsa Intro arrancará la configuración del ratón. Siga las instrucciones y elija ``Mouse Systems'' como protocolo del ratón y /dev/sysmouse como el puerto del ratón incluso en el caso de que tenga un ratón PS/2, como el de la ilustración.

First specify a mouse protocol type. Choose one from the following list:

 1.  Microsoft compatible (2-button protocol)
 2.  Mouse Systems (3-button protocol) & FreeBSD moused protocol
 3.  Bus Mouse
 4.  PS/2 Mouse
 5.  Logitech Mouse (serial, old type, Logitech protocol)
 6.  Logitech MouseMan (Microsoft compatible)
 7.  MM Series
 8.  MM HitTablet
 9.  Microsoft IntelliMouse

If you have a two-button mouse, it is most likely of type 1, and if you have
a three-button mouse, it can probably support both protocol 1 and 2. There are
two main varieties of the latter type: mice with a switch to select the
protocol, and mice that default to 1 and require a button to be held at
boot-time to select protocol 2. Some mice can be convinced to do 2 by sending
a special sequence to the serial port (see the ClearDTR/ClearRTS options).

Enter a protocol number: 2

You have selected a Mouse Systems protocol mouse. If your mouse is normally
in Microsoft-compatible mode, enabling the ClearDTR and ClearRTS options
may cause it to switch to Mouse Systems mode when the server starts.

Please answer the following question with either 'y' or 'n'.
Do you want to enable ClearDTR and ClearRTS? n

You have selected a three-button mouse protocol. It is recommended that you
do not enable Emulate3Buttons, unless the third button doesn't work.

Please answer the following question with either 'y' or 'n'.
Do you want to enable Emulate3Buttons? y

Now give the full device name that the mouse is connected to, for example
/dev/tty00. Just pressing enter will use the default, /dev/mouse.
On FreeBSD, the default is /dev/sysmouse.

Mouse device: /dev/sysmouse

El siguiente punto es la configuración del teclado. En nuestro ejemplo tenemos un teclado genérico de 101 teclas. Puede usar cualquier variedad del mismo tipo o simplemente pulsar Intro y aceptar el modelo por defecto.

Please select one of the following keyboard types that is the better
description of your keyboard. If nothing really matches,
choose 1 (Generic 101-key PC)

  1  Generic 101-key PC                                
  2  Generic 102-key (Intl) PC                         
  3  Generic 104-key PC                                
  4  Generic 105-key (Intl) PC                         
  5  Dell 101-key PC                                   
  6  Everex STEPnote                                   
  7  Keytronic FlexPro                                 
  8  Microsoft Natural                                 
  9  Northgate OmniKey 101                             
 10  Winbook Model XP5                                 
 11  Japanese 106-key                                  
 12  PC-98xx Series                                    
 13  Brazilian ABNT2                                   
 14  HP Internet                                       
 15  Logitech iTouch                                   
 16  Logitech Cordless Desktop Pro                     
 17  Logitech Internet Keyboard                        
 18  Logitech Internet Navigator Keyboard              
 19  Compaq Internet                                   
 20  Microsoft Natural Pro                             
 21  Genius Comfy KB-16M                               
 22  IBM Rapid Access                                  
 23  IBM Rapid Access II                               
 24  Chicony Internet Keyboard                         
 25  Dell Internet Keyboard                            

Enter a number to choose the keyboard.

1


Please select the layout corresponding to your keyboard


  1  U.S. English                                      
  2  U.S. English w/ ISO9995-3                         
  3  U.S. English w/ deadkeys                          
  4  Albanian                                          
  5  Arabic                                            
  6  Armenian                                          
  7  Azerbaidjani                                      
  8  Belarusian                                        
  9  Belgian                                           
 10  Bengali                                           
 11  Brazilian                                         
 12  Bulgarian                                         
 13  Burmese                                           
 14  Canadian                                          
 15  Croatian                                          
 16  Czech                                             
 17  Czech (qwerty)                                    
 18  Danish                                            

Enter a number to choose the country.
Press enter for the next page

1


Please enter a variant name for 'us' layout. Or just press enter
for default variant

us


Please answer the following question with either 'y' or 'n'.
Do you want to select additional XKB options (group switcher,
group indicator, etc.)? n

Ahora pasaremos a la configuración del monitor. No supere las limitaciones de su monitor o puede dañarlo de forma irreparable. Si tiene dudas espere a disponer de todos los datos y luego configure su monitor.

Now we want to set the specifications of the monitor. The two critical
parameters are the vertical refresh rate, which is the rate at which the
whole screen is refreshed, and most importantly the horizontal sync rate,
which is the rate at which scanlines are displayed.

The valid range for horizontal sync and vertical sync should be documented
in the manual of your monitor. If in doubt, check the monitor database
/usr/X11R6/lib/X11/doc/Monitors to see if your monitor is there.

Press enter to continue, or ctrl-c to abort.



You must indicate the horizontal sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range.

It is VERY IMPORTANT that you do not specify a monitor type with a horizontal
sync range that is beyond the capabilities of your monitor. If in doubt,
choose a conservative setting.

    hsync in kHz; monitor type with characteristic modes
 1  31.5; Standard VGA, 640x480 @ 60 Hz
 2  31.5 - 35.1; Super VGA, 800x600 @ 56 Hz
 3  31.5, 35.5; 8514 Compatible, 1024x768 @ 87 Hz interlaced (no 800x600)
 4  31.5, 35.15, 35.5; Super VGA, 1024x768 @ 87 Hz interlaced, 800x600 @ 56 Hz
 5  31.5 - 37.9; Extended Super VGA, 800x600 @ 60 Hz, 640x480 @ 72 Hz
 6  31.5 - 48.5; Non-Interlaced SVGA, 1024x768 @ 60 Hz, 800x600 @ 72 Hz
 7  31.5 - 57.0; High Frequency SVGA, 1024x768 @ 70 Hz
 8  31.5 - 64.3; Monitor that can do 1280x1024 @ 60 Hz
 9  31.5 - 79.0; Monitor that can do 1280x1024 @ 74 Hz
10  31.5 - 82.0; Monitor that can do 1280x1024 @ 76 Hz
11  Enter your own horizontal sync range

Enter your choice (1-11): 6

You must indicate the vertical sync range of your monitor. You can either
select one of the predefined ranges below that correspond to industry-
standard monitor types, or give a specific range. For interlaced modes,
the number that counts is the high one (e.g. 87 Hz rather than 43 Hz).

 1  50-70
 2  50-90
 3  50-100
 4  40-150
 5  Enter your own vertical sync range

Enter your choice: 2

You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names.

The strings are free-form, spaces are allowed.
Enter an identifier for your monitor definition: Hitachi

Ahora elegiremos un controlador para la tarjeta gráfica en una lista. Si ha pasado de largo su tarjeta siga pulsando Intro y la lista volverá a pasar por pantalla desde el principio. Veamos un fragmento de la lista:

Now we must configure video card specific settings. At this point you can
choose to make a selection out of a database of video card definitions.
Because there can be variation in Ramdacs and clock generators even
between cards of the same model, it is not sensible to blindly copy
the settings (e.g. a Device section). For this reason, after you make a
selection, you will still be asked about the components of the card, with
the settings from the chosen database entry presented as a strong hint.

The database entries include information about the chipset, what driver to
run, the Ramdac and ClockChip, and comments that will be included in the
Device section. However, a lot of definitions only hint about what driver
to run (based on the chipset the card uses) and are untested.

If you can't find your card in the database, there's nothing to worry about.
You should only choose a database entry that is exactly the same model as
your card; choosing one that looks similar is just a bad idea (e.g. a
GemStone Snail 64 may be as different from a GemStone Snail 64+ in terms of
hardware as can be).

Do you want to look at the card database? y



288  Matrox Millennium G200 8MB                        mgag200
289  Matrox Millennium G200 SD 16MB                    mgag200
290  Matrox Millennium G200 SD 4MB                     mgag200
291  Matrox Millennium G200 SD 8MB                     mgag200
292  Matrox Millennium G400                            mgag400
293  Matrox Millennium II 16MB                         mga2164w
294  Matrox Millennium II 4MB                          mga2164w
295  Matrox Millennium II 8MB                          mga2164w
296  Matrox Mystique                                   mga1064sg
297  Matrox Mystique G200 16MB                         mgag200
298  Matrox Mystique G200 4MB                          mgag200
299  Matrox Mystique G200 8MB                          mgag200
300  Matrox Productiva G100 4MB                        mgag100
301  Matrox Productiva G100 8MB                        mgag100
302  MediaGX                                           mediagx
303  MediaVision Proaxcel 128                          ET6000
304  Mirage Z-128                                      ET6000
305  Miro CRYSTAL VRX                                  Verite 1000

Enter a number to choose the corresponding card definition.
Press enter for the next page, q to continue configuration.

288

Your selected card definition:

Identifier: Matrox Millennium G200 8MB
Chipset:    mgag200
Driver:     mga
Do NOT probe clocks or use any Clocks line.

Press enter to continue, or ctrl-c to abort.



Now you must give information about your video card. This will be used for
the "Device" section of your video card in XF86Config.

You must indicate how much video memory you have. It is probably a good
idea to use the same approximate amount as that detected by the server you
intend to use. If you encounter problems that are due to the used server
not supporting the amount memory you have (e.g. ATI Mach64 is limited to
1024K with the SVGA server), specify the maximum amount supported by the
server.

How much video memory do you have on your video card:

 1  256K
 2  512K
 3  1024K
 4  2048K
 5  4096K
 6  Other

Enter your choice: 6

Amount of video memory in Kbytes: 8192

You must now enter a few identification/description strings, namely an
identifier, a vendor name, and a model name. Just pressing enter will fill
in default names (possibly from a card definition).

Your card definition is Matrox Millennium G200 8MB.

The strings are free-form, spaces are allowed.
Enter an identifier for your video card definition:

Ahora hay que ajustar los modos de video y las resoluciones que les corresponden. Normalmente se usan rangos de 640x480, 800x600 y 1024x768, pero depende de la potencia de la tarjeta gráfica, el tamaño del monitor y la comodidad de la vista de quien decide. Al elegir la profundidad de color procure elegir la más alta que admita su tarjeta.

For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:

"640x480" "800x600" "1024x768" "1280x1024" for 8-bit
"640x480" "800x600" "1024x768" "1280x1024" for 16-bit
"640x480" "800x600" "1024x768" "1280x1024" for 24-bit

Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.

 1  Change the modes for 8-bit (256 colors)
 2  Change the modes for 16-bit (32K/64K colors)
 3  Change the modes for 24-bit (24-bit color)
 4  The modes are OK, continue.

Enter your choice: 2

Select modes from the following list:

 1  "640x400"
 2  "640x480"
 3  "800x600"
 4  "1024x768"
 5  "1280x1024"
 6  "320x200"
 7  "320x240"
 8  "400x300"
 9  "1152x864"
 a  "1600x1200"
 b  "1800x1400"
 c  "512x384"

Please type the digits corresponding to the modes that you want to select.
For example, 432 selects "1024x768" "800x600" "640x480", with a
default mode of 1024x768.

Which modes? 432

You can have a virtual screen (desktop), which is screen area that is larger
than the physical screen and which is panned by moving the mouse to the edge
of the screen. If you don't want virtual desktop at a certain resolution,
you cannot have modes listed that are larger. Each color depth can have a
differently-sized virtual screen

Please answer the following question with either 'y' or 'n'.
Do you want a virtual screen that is larger than the physical screen? n



For each depth, a list of modes (resolutions) is defined. The default
resolution that the server will start-up with will be the first listed
mode that can be supported by the monitor and card.
Currently it is set to:

"640x480" "800x600" "1024x768" "1280x1024" for 8-bit
"1024x768" "800x600" "640x480" for 16-bit
"640x480" "800x600" "1024x768" "1280x1024" for 24-bit

Modes that cannot be supported due to monitor or clock constraints will
be automatically skipped by the server.

 1  Change the modes for 8-bit (256 colors)
 2  Change the modes for 16-bit (32K/64K colors)
 3  Change the modes for 24-bit (24-bit color)
 4  The modes are OK, continue.

Enter your choice: 4



Please specify which color depth you want to use by default:

  1  1 bit (monochrome)                                
  2  4 bits (16 colors)                                
  3  8 bits (256 colors)                               
  4  16 bits (65536 colors)                            
  5  24 bits (16 million colors)                       

Enter a number to choose the default depth.

4

Para concluír, salvamos la configuración teniendo cuidado de guardarla como /etc/XF86Config.

I am going to write the XF86Config file now. Make sure you don't accidently
overwrite a previously configured one.

Shall I write it to /etc/X11/XF86Config? y

Si la configuración falla puede volver a intentarlo seleccionando [ Yes ] cuando vea el siguiente mensaje:

          User Confirmation Requested
The XFree86 configuration process seems to have
failed.  Would you like to try again?

             [ Yes ]         No

Si tiene problemas al configurar XFree86 seleccione [ No ] y pulse Enter para seguir con el proceso de instalación. Una vez instalado el sistema puede ejecutar (siempre como root) las aplicaciones de configuración de línea de comandos xf86cfg -textmode o xf86config. Hay un método más para configurar XFree86 que se describe en el Capítulo 5. Si decide no configurar XFree86 el siguiente menú será el de selección de paquetes.

Por defecto existe una combinación de teclas que ``matará'' el servidor X: Ctrl+Alt+Retroceso. Ejecútela si hay algún error en la configuración o para evitar dan˜ar el hardware.

Existe también una combinación de teclas que permite pasar de un modo de video a otro: Ctrl+Alt++ o Ctrl+Alt+-.

Una vez tiene XFree86 en marcha puede ajustar el ``display'' a lo ancho,a lo alto y puede centrarlo con xvidtune.

Puede que aparezca alguna advertencia relacionada con una mala configuración y el daño que puede hacer a su hardware: hágale caso. Si tiene alguna duda, no configure nada. Puede usar los controles del monitor para ajustar el comportamiento de X Window. Puede haber algunas diferencias cuando vuelva al modo texto pero es mejor eso que dañar su equipo.

Lea xvidtune(1) antes de ajustar nada.

Tras una instalación correcta de XFree86 vendrá la elección de un escritorio por defecto.


2.9.13. Selección de un Escritorio X por defecto

Hay una enorme variedad de gestores de ventanas, y los hay de todos los tipos. Hay entornos muy básicos y hay entornos completos de escritorio con una enorme cantidad de software. Los hay que requieren poca memoria y muy poco espacio en disco, mientras que los más completos requieren muchos más recursos. La forma ideal de determinar cuál es el que mejor le va es que pruebe unos cuantos. Puede instalarlos como paquetes o desde los ports.

Puede elegir uno de los más usados y configurarlo para que sea su escritorio por defecto. Así podrá comenzar en cuanto acabe con la instalación.

Figura 2-56. Elección del escritorio por defecto

Seleccione un escritorio con las flechas y pulse Intro. El escritorio que haya elegido se instalará.


2.9.14. Instalación de paquetes

Los paquetes son binarios precompilados y son una forma muy cómoda de instalar software.

Veamos la instalación de un paquete. Puede instalar más paquetes si lo desea. Una vez concluída la instalación puede instalar paquetes desde /stand/sysinstall.

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

                            [ Yes ]   No

Seleccione [ Yes ] y pulse Intro: verá las pantallas de selección de paquetes.

Figura 2-57. Selección de categoría de paquetes

Los paquetes presentes en el medio de instalación que esté accesible en cada momento son los únicos que se pueden instalar.

Todos los paquetes disponibles en el medio se mostrarán al seleccionar la categoría All. Elija una categoría y pulse Intro.

Al seleccionar una categoría aparecerá un menú con los paquetes disponibles existentes en la misma:

Figura 2-58. Selección de paquetes

Hemos elegido la shell bash. Seleccione tantos paquetes como quiera instalar y pulse la tecla Espacio. Se mostrará una breve descripción de cada paquete en la esquina inferior izquierda de la pantalla.

Pulsando el Tabulador desplazará el cursor entre el último paquete que haya seleccionado, [ OK ] y [ Cancel ].

Cuando haya seleccionado todos los paquetes que quiera instalar pulse Tabulador una sola vez para que el cursor pase a [ OK ] y pulse Intro, lo que le llevará al menú de selección de paquetes.

Las flechas ``izquierda'' y ``derecha'' pueden usarse para mover el cursor entre [ OK ] y [ Cancel ]. Use esto para seleccionar [ OK ] y pulsar Intro para volver al menú de selección de paquetes.

Figura 2-59. Instalación de paquetes

Seleccione [ Install ] con el Tabulador y las flechas y pulse Intro. Se le pedirá que confirme que quiere instalar los paquetes:

Figura 2-60. Confirmación previa a la instalación de paquetes

Si selecciona [ OK ] y pulsa Intro comenzará la instalación de paquetes. Irán apareciendo mensajes relacionados con los diversos procesos de instalación hasta que se cumplan todos. Esté atento por si aparecieran mensajes de error.

Tras la instalación de paquetes nos quedan unos toques finales a la configuración. Si no ha elegido ningún paquete y quiere regresar al menú de configuración seleccione Install de todos modos.


2.9.15. Añadir Usuarios/Grupos

Deberí al menos añadir un usuario al sistema para poder usarlo para acceder al sistema una vez reiniciado sin tener que recurrir a root. La partición raíz suele ser pequeña y ejecutar aplicaciones como root tiene a llenarla rápidamente. Pero hay un peligro mucho mayor:

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

                            [ Yes ]   No

Es decir:

     Petición de confirmación por parte del usuario
 ¿Quiere añadir algún usuario al sistema? Le sugerimos que añada al menos 
 uno para usted puesto que trabajar como "root" es peligroso (es fácil 
 hacer algo con consecuencias en todo el sistema).

                            [ Yes ]   No

Elija [ Yes ] y pulse Intro para añadir un usuario.

Figura 2-61. Seleccione ``Añadir usuario''

Seleccione User con las flechas y pulse Intro.

Figura 2-62. Añadir la información del usuario

A medida que vaya seleccionando los campos ayudándose del Tabulador se le irán mostrando las siguientes descripciones en la parte baja de la pantalla:

Login ID

El nombre de usuario (obligatorio).

UID

El ID numérico del usuario (déjelo en blanco si quiere que el sistema lo asigne automáticamente).

Group

El grupo al que pertenecerá el usuario. (déjelo en blanco si quiere que el sistema lo asigne automáticamente).

Password

La contraseña del usuario (rellene con cuidado este campo.

Full name

El nombre completo del usuario (o un comentario descriptivo sobre él/ella).

Member groups

Los grupos a los que este usuario pertenece.

Home directory

El directorio ``home'' del usuario. (déjelo en blanco si quiere que el sistema lo asigne automáticamente).

Login shell

La shell con la que el usuario accederá al sistema. (Déjela en blanco si le sirve la opción por defecto, esto es, /bin/sh).

En el ejemplo se cambió /bin/sh por /usr/local/bin/bash para poder usar la shell bash que previamente se ha instalado. No intente usar una shell que no exista o no podrá acceder al sistema. La shell más común en entornos BSD es la ``C shell'', /bin/tcsh.

El usuario se añadió también al grupo wheel para que pueda convertirse en superusuario, es decir, con privilegios de root.

Cuando haya terminado pulse [ OK ] y el menú de gestión de usuarios y grupos aparecerá de nuevo:

Figura 2-63. Salir de la gestión de usuarios y grupos

Los grupos también pueden añadirse en este momento si fuera necesario. También puede hacerse desde /stand/sysinstall una vez culminada la instalación.

Cuando haya acabado de añadir usuarios seleccione Exit con las flechas y pulse Intro y siga con la instalación.


2.9.16. Asigne la contraseña de root

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

                         [ OK ] 

               [ Press enter to continue ]

Es decir:

                        Mensaje
 Ahora debe asignar la contraseña del administrador del sistema. 
 Esta es la contraseña que usará cuando acceda al sistema como 
 "root".

                         [ OK ]

                    [ Pulse Intro ]

Pulse Intro y asígnele una contraseña a root.

Tendrá que escribir la contraseña correctamente dos veces. No hay necesidad de decirle que es importante que recuerde esa contraseña.

Changing local password for root. 
New password : 
Retype new password :

La instalación continuará una vez que haya introducido las contraseñas correctamente.


2.9.17. Salir de la instalación

Si tiene que configurar algo más en la red o en cualquier otro sitio puede hacerlo ahora mismo (o más tarde una vez reiniciado el sistema) desde /stand/sysinstall.

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

                              Yes   [ No ]

Seleccione [ No ] con las flechas y pulse Intro para volver al menú principal de la instalación.

Figura 2-64. Salir de la instalación

Seleccione [X Exit Install] con las flechas y pulse Intro. Se le pedirá confirmación antes de salir de la instalación:

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

                            [ Yes ]   No

Es decir:

            Confirmación por parte del usuario
 ¿Seguro que quiere salir?  El sistema reiniciará (compruebe que 
 ha retirado los disquetes de la unidad).

                            [ Yes ]   No

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

El sistema reiniciará, esté atento por si aparece algún mensaje de error.


2.9.18. El arranque de FreeBSD

2.9.18.1. El arranque de FreeBSD en i386

Si todo ha ido bien verá pasar una larga lista de mensajes hasta que llegue al ``login prompt'' (es decir, donde podrá escribir un nombre de usuario y una contraseña para acceder al sistema). Puede leer detenidamente ese mensajes pulsando Bloq Despl y usando RePág y AvPág. Pulse Bloq Despl cuando quiera para regresar al prompt.

Es posible que el mensaje completo no pueda mostrarse debido a limitaciones del buffer pero puede verlo desde la línea de comandos escribiendo dmesg.

Entre al sistema con el nombre de usuario y la contraseña que escribió durante la instalación (en el ejemplo rpratt). Evite acceder al sistema como root excepto cuando sea necesario hacerlo.

Veamos un típico mensaje de arranque (se han omitido los datos de versión):

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

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

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

login: rpratt 
Password:

La generación de las llaves RSA y DSA puede llevar cierto tiempo, especialmente en sistemas lentos. No se preocupe por ello porque esto sólo ha de hacerse en el primer arranque tras una instalación. Los demás arranques del sistema serán mucho más rápidos.

Si se configuró el servidor X y se eligió escritorio por defecto puede teclear startx y usarlos.


2.9.18.2. Arranque de FreeBSD en Alpha

Una vez que el proceso de instalación ha terminado podrá arrancar FreeBSD escribiendo algo parecido a esto en el prompt de SRM:

>>>BOOT DKC0

Esto indica al firmware que arranque desde el disco especificado. Para que FreeBSD arranque automáticamente en el el futuro use los siguientes comandos:

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

Los mensajes de arranque serán muy similares (pero no idénticos a los que se producen en el arranque de FreeBSD en i386.


2.9.19. Apagar FreeBSD

Es muy importante apagar correctamente el sistema operativo. No se trata de pulsar el botón ``power''. Lo primero que debe hacer es convertirse en superusuario escribiendo su en la línea de comandos e introduciendo la contraseña de root. Tenga en cuenta que sólo podrá hacer tal cosa si el usuario es miembro del grupo wheel. Si no, puede acceder al sistema como root y teclear shutdown -h now.

It is important to properly shutdown the operating system. Do not just turn off power. First, become a superuser by typing su at the command line and entering the root password. This will work only if the user is a member of the wheel group. Otherwise, login as root and use shutdown -h now.

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

Es decir:

Se ha detenido el sistema operativo.
Por favor, pulse cualquier tecla y el sistema se reiniciará.

Una vez que ha aparecido el mensaje ``Please press any key to reboot.'' puede apagar el sistema tranquilamente. Si pulsa cualquier tecla en vez de apagar la máquina, el sistema se reiniciará.

También puede usar la combinación de teclas Ctrl+Alt+Supr para reiniciar el sistema pero recuerde que no es la forma más recomendable de hacerlo.


2.10. Hardware soportado

FreeBSD funciona en una gran variedad de PC con buses ISA, VLB, EISA y PCI y procesadores ``x86'' de los tipos Intel, AMD, Cyrix y NexGen, además de en máquinas con procesadores Compaq Alpha. FreeBSD funciona en unidades ESDI e IDE genéricas, gran cantidad de controladoras SCSI, tarjetas PCMCIA, dispositivos USB, así como tarjetas serie y de red. FreeBSD soporta el bus MCA (microcanal) de IBM.

En cada ``release'' de FreeBSD se facilita una lista de hardware soportado, dentro de las llamadas ``FreeBSD Hardware Notes''. Normalmente el texto está en un fichero llamado HARDWARE.TXT que puede encontrarse en el nivel más alto del CDROM o de la distribución FTP, así como en el menú de documentación de sysinstall. En la lista aparece, clasificada por arquitecturas, el hardware del que se han recibido informes de funcionamiento en cada ``release'' de FreeBSD. Puede encontrar copias de esas listas de hardware soportado (para diversas arquitecturas y de todas las ``releases'' en la página de Información de ``releases'' del sitio web de FreeBSD.


2.11. Solución de problemas

Esta sección trata sobre la solución de problemas habituales durante la instalación que la comunidad de usuarios ha documentado. Hay también unas cuantas preguntas ya respuestas para quienes quieren elegir en el arranque entre FreeBSD y MS-DOS.


2.11.1. Qué hacer si algo va mal

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

Consulte la lista de hardware soportado y asegúrese de que su hardware debería funcionar con su versión de FreeBSD.

Si su hardware está soportado y sigue experimentando ``cuelgues'' u otro tipo de problemas resetée su computadora y cuando se le ofrezca la opción de configuración visual del kernel, elíjala. De este modo podrá obtener una información mucho más precisa sobre su hardware y lo que es más más importante, le suministrará toda esa información al sistema. El kernel que se encuentra en los discos de arranque se configura asumiendo que la mayoría de los dispositivos van a funcionar con la configuración por defecto que traen de fábrica (en términos de IRQ, direcciones IO y canales DMA). Si su hardware ha sido reconfigurado quizás tendrá que usar el editor de configuración para decirle a FreeBSD dónde encontrar las cosas.

Es posible también que la prueba de un dispositivo que no existe en el sistema cause problemas más tarde al probar un dispositivo que sí está en la máquina. Si ese puede ser su caso desactive las pruebas de de controladores conflictivos.

Nota: Algunos problemas de instalación pueden evitarse o al menos aliviarse actualizando el firmware de varios tipos de componentes de hardware; esto es especialmente cierto en el caso de las placas base. El firmware de las placas base se llama también BIOS y la mayoría de las placas base y de los fabricantes de computadoras tienen un sitio web, en el que pueden encontrarse actualizaciones e información sobre cómo usarlas.

La mayoría de los fabricantes recomienda que no se actualice la BIOS de la placa base a menos que tenga una buena razón, por ejemplo una actualización crítica. El proceso de actualización puede ir mal, lo que pueden significar daños en el chip de la BIOS.

Aviso No desactive controladores que vaya a necesitar durante la instalación, como el de pantalla (sc0). Si la instalación se congela o falla misteriosamente tras salir del editor de configuración probablemente se debe a que a quitado o cambiado algo que no debía. Reinicie e inténtelo de nuevo.

En el modo de configuración puede:

  • Listar los controladores de dispositivos que hay instalados en el kernel.

  • Desactivar controladores de hardware que no está presente en el sistema.

  • Cambiar IRQ, DRQ y direcciones de puertos IO que utilice algún controlador de dispositivo.

Tras ajustar el kernel a su configuración de hardware escriba Q; esto hará que arranque con la nueva configuración. Una vez que haya concluído la instalación cualquier cambio que haga en el modo configuración será permanente, así que no tendrá que repetirlo cada vez que arranque el sistema. En cualquier caso es muy posible que tenga que compilar un kernel a medida.


2.11.2. Convivencia con particiones MS-DOS® que ya existín previamente

Tarde o temprano muchos usuarios se ven en la tesitura de instalar FreeBSD en un PC en el que ya había instalado alguno de los sistemas operativos de Microsoft. Para esos casos FreeBSD dispone de una aplicación llamada FIPS. Esta aplicación se encuentra en el directorio tools del CDROM de instalación y puede descargarse desde cualquiera de las réplicas de FreeBSD.

 FIPS permite dividir una partición MS-DOS en uso en dos partes, preservando la partición original y permitiendo instalar en la segunda parte, que está libre. Antes de nada tendrá que desfragmentar la partición MS-DOS mediante el Desfragmentador de discos (desde el ``Explorador'', pulse el botón derecho del ratón sobre el disco duro y elija ``desfragmentar su disco duro''), o use Norton Disk Tools. Una vez hecho puede ejecutar FIPS. Le pedirá ciertos datos que necesita para funcionar, usted sólo tiene que seguir las instrucciones en pantalla. Después puede reiniciar el sistema e instalar FreeBSD en el espacio libre que acaba de crear. Consulte el menú Distributions, le vendrá muy bien una estimación de cuánto espacio libre necesitará para la instalación que quiere.

Existe también un producto muy útil: PartitionMagic, de PowerQuest (http://www.powerquest.com). Este programa tiene muchas más posibilidades que FIPS y es muy recomendable si suele instalar y desinstalar sistemas operativos con una cierta frecuencia. Cuesta dinero, así que si su idea es instalar FreeBSD y dejarlo instalado probablemente FIPS es más que suficiente.


2.11.3. Uso de sistemas de ficheros MS-DOS y Windows®

Cuando se escribe este texto FreeBSD no soporta sistemas de ficheros comprimidos con Double Space™. Deberá por lo tanto descomprimir el sistema de ficheros antes de acceder a los datos desde FreeBSD. Para ello ejecute el Agente de compresión situado en el menú Inicio> Programas > Herramientas del sistema.

FreeBSD soporta sistemas de ficheros MS-DOS. Para ello deberá usar mount_msdos(8) con los parámetros correctos ( en FreeBSD 5.X use mount_msdosfs(8)) El uso más frecuente de estas aplicaciones es parecido a lo siguiente:

# mount_msdos /dev/ad0s1 /mnt

En el ejemplo que se muestra el sistema de ficheros MS-DOS está en la primera partición del primer disco duro. La situación en su sistema puede ser diferente: compruebe la salida de dmesg y mount. Deberían suministrarle suficiente información como para darle una idea de la estructura de particiones en la que está trabajando.

Nota:  Los sistemas de ficheros MS-DOS extendidos suelen ``mapearse'' tras las particiones FreeBSD. En otras palabras, el número de ``slice'' puede ser superior que el que FreeBSD está usando. Veamos un ejemplo: la primera partición MS-DOS puede ser /dev/ad0s1, la partición FreeBSD puede ser /dev/ad0s2, mientras que la partición extendida MS-DOS puede ser /dev/ad0s3. Esto puede ser un poco confuso al principio.

Las particiones NTFS pueden montarse de un modo muy parecido mediante mount_ntfs(8).


2.11.4. Preguntas y respuestas para usuarios de Alpha

En esta sección encontrará unas cuantas preguntas frecuentes sobre la instalación de FreeBSD en sistemas Alpha.

2.11.4.1. ¿Puedo arrancar desde ARC o desde la consola BIOS de Alpha?
2.11.4.2. ¡Socorro, no tengo espacio! ¿Debo borrarlo todo primero?
2.11.4.3. ¿Puedo montar mis sistemas de ficheros Compaq Tru64 o VMS?

2.11.4.1. ¿Puedo arrancar desde ARC o desde la consola BIOS de Alpha?

No. FreeBSD al igual que sucede con Compaq Tru64 y VMS, sólo puede arrancar desde la consola SRM.

2.11.4.2. ¡Socorro, no tengo espacio! ¿Debo borrarlo todo primero?

Por desgracia .

2.11.4.3. ¿Puedo montar mis sistemas de ficheros Compaq Tru64 o VMS?

En este momento no.


2.12. Guía de instalación avanzada

Escrito por Valentino Vaschetto.

Esta sección trata sobre la instalación de FreeBSD en casos excepcionales.


2.12.1. Instalación de FreeBSD en un sistema sin monitor o teclado

Ésta instalación es conocida como ``instalación sin cabeza'', porque la máquina en la que está intentando instalar FreeBSD no tiene un monitor conectado; quizás ni siquiera tiene salida VGA. ¿Cómo es posible?, se preguntará: A través de una consola serie. Una consola serie consiste básicamente en usar otro sistema como la pantalla y el teclado de una máquina. Siga las instrucciones de creación de los disquetes que se detallan en la Sección 2.2.7.

Tendrá que modificar esos disquetes para que arranquen en la consola serie; siga estas instrucciones:

  1. Modificación de los disquetes de arranque para que permitan el arranque en la consola serie

    Si arrancara con los disquetes que acaba de crear FreeBSD arrancaría en el modo normal de instalación. Lo que queremos es que FreeBSD arranque en una consola serie, así que hemos de montar el floppy kern.flp en un sistema FreeBSD mediante mount(8).

    # mount /dev/fd0 /mnt
    

    Una vez montado el floppy entre en el directorio /mnt :

    # cd /mnt
    

    Aquí es donde enseñaremos al floppy a arrancar en la consola serie. Debe crearse un fichero llamado boot.config que contenga lo siguiente: /boot/loader -h. Con esto le pasamos a al ``bootloader'' (el cargador de arranque) la ``flag'' de arrancar en una consola serie.

    # echo "/boot/loader -h" > boot.config
    

    Una vez configurado correctamente nuestro floppy lo desmontamos con umount(8):

    # cd /
    # umount /mnt
    

    Y podemos extraer el floppy de la unidad.

  2. Conexión del cable modem

    Tiene que conectar un cable módem nulo entre dos máquinas. Un cable serie normal no funcionará, necesitará un cable módem nulo porque tiene cruzado alguno de los hilos.

  3. Arranque de la instalación

    Podemos iniciar la instalación. Introduzca el floppy kern.flp en la unidad de disquetes de la máquina en la que quiere hacer la instalación y encienda la máquina.

  4. La conexión a su ``máquina sin cabeza''

    Conéctese mediante cu(1):

    # cu -l /dev/cuaa0
    

 ¡Ya está! Desde ahora debería ser capaz de controlar su ``máquina sin cabeza'' mediante su sesión cu. El sistema de instalación le avisará de que debe introducir el floppy mfsroot.flp y después le preguntará por el tipo de terminal que prefiere usar. Elija la consola en color de FreeBSD y ¡buena suerte con la instalación!.


2.13. Cómo preparar su propio medio de instalación

Nota:  Para evitar la repetición ``disco FreeBSD'' será en adelante un CDROM o un DVD de FreeBSD que usted ha comprado o ha hecho por sus propios medios.

Puede darse la circunstancia de que tenga que crear su propio medio de instalación de FreeBSD. Puede tratarse de un medio físico como una cinta o una fuente para que sysinstall pueda obtener los ficheros que vaya necesitando, como un sitio FTP local, o bien puede tratarse de una partición MS-DOS.

Por ejemplo:

  • Tiene muchas máquinas conectadas a una red local y un sólo disco FreeBSD. Quiere crear un sitio FTP local con el contenido del disco FreeBSD y que desde él sus máquinas obtengan los ficheros en lugar de tener que conectarse a Internet.

  • Tiene un disco FreeBSD y FreeBSD no reconoce su unidad CD/DVD pero MS-DOS/Windows sí. Quiere copiar los ficheros de instalación de FreeBSD a una partición DOS en el mismo mismo sistema y luego instalar FreeBSD usando esos ficheros.

  • El sistema en el que quiere instalar FreeBSD no tiene unidad CD/DVD ni tarjeta de red pero puede conectar un cable paralelo o un cable serie ``Laplink'' a una computadora que sí que tiene.

  • Quiere crear una cinta desde la que se pueda instalar FreeBSD.


2.13.1. Creación de un CDROM de instalación

Con cada ``release'' el proyecto FreeBSD libera dos imágenes de CDROM (``imágenes ISO''). Esas imágenes pueden copiarse a CD (``quemadas'' o ``tostadas'') en CD si dispone de una grabadora de CD, y usarse posteriormente para instalar FreeBSD. Si tiene una grabadora de CD y el ancho de banda no le supone un problema la forma más fácil de instalar FreeBSD es esta.

  1. Descargar la imagen ISO correcta

    Puede descargar las imágenes ISO de cada ``release'' desde ftp://ftp.FreeBSD.org/pub/FreeBSD/ISO-IMAGES-arquitectura/versión o desde la réplica más próxima. Sustituya arquitectura y versión por lo que corresponda.

    Ese directorio contendrá normalmente las siguientes imágenes:

    Tabla 2-5. Nombre de las imágenes ISO de FreeBSD y su significado

    Nombre de fichero Contenido
    versión-mini.iso Todo lo que necesita para instalar FreeBSD.
    versión-disc1.iso Todo lo necesario para instalar FreeBSD así como un gran número de paquetes de software.
    versión-disc2.iso Un sistema de ficheros ``live'' (es decir, ejecutable desde CD) que ejecutado en conjunción con la aplicación ``Repair'' de sysinstall. Una copia del árbol CVS FreeBSD. Un gran número de paquetes de software.

    Descargue la imagen mini ISO o la imagen del disco uno. No descargue ambas, puesto que el disco uno contiene todo lo que hay en la imagen mini ISO.

    Use la mini ISO si su acceso a Internet es barato. Con ella podrá instalar FreeBSD y podrá instalar todo tipo de software descargándolo como paquetes/ports (consulte el Capítulo 4) cuando lo precise.

    Utilice la imagen del disco uno si quiere disponer en el propio disco de una selección bastante completa de paquetes de software.

    Si tiene acceso de alta velocidad a Internet las demás imágenes de disco son útiles pero no esenciales.

  2. Escribir los CD

    Si va a grabar los CD en un sistema FreeBSD consulte la Sección 16.4 (en particular la Sección 16.4.1 y la Sección 16.4.2).

    Las imágenes se hacen en un formato ISO estándar; si va a grabarlas en cualquier otra plataforma no debería tener problemas para hacerlo cualquiera que sea la aplicación que use para grabar CD.


2.13.2. Creación de un sitio FTP local a partir de un disco FreeBSD

Los discos FreeBSD tienen la misma estructura que los sitios FTP. Esa circunstancia le facilitará mucho la tarea de crear un sitio FTP local para uso de otras máquinas de su red durante la instalación de FreeBSD.

  1. Monte el CDROM en /cdrom del sistema que va a albergar el sitio FTP.

    # mount /cdrom
    
  2. Cree una cuenta apta para FTP anónimo en /etc/passwd editando /etc/passwd con vipw(8). Añádale lo siguiente:

    ftp:*:99:99::0:0:FTP:/cdrom:/nonexistent
    
  3. Compruebe que el servicio FTP está activado en /etc/inetd.conf.

Ahora cualquier máquina capaz de conectarse a su sistema a través de una red puede elegir como medio de instalación ``FTP'' y escribir ftp://su máquina tras seleccionar ``Other'' en el menú de sitios FTP.

Aviso Acabamos de exponer una buena solución para usar en un sistema de su propia red y que además está protegido por un cortafuegos. Si ofrece servicios FTP a máquinas de Internet (y no de su red local) expone su computadora a caer bajo la atención de ``crackers'' y otras variedades de indeseable. Le recomendamos encarecidamente que siga a rajatabla políticas sensatas de seguridad.


2.13.3. Creación de disquetes de instalación

Si quiere instalar FreeBSD desde disquetes (cosa que, de antemano, le sugerimos que no haga) bien sea porque FreeBSD no soporta cierto componente necesario de su sistema o sencillamente porque insiste en querer hacer las cosas de la manera más difícil, tendrá que tener a mano unos cuantos disquetes.

Como mínimo necesitará tantos disquetes de 1.44 MB o 1.2 MB como hagan falta para dar cabida a todos los ficheros que hay en bin. Recuerde la entrada ``binary distribution'' (distribución binaria) durante la instalación. Si está generando los disquetes en DOS debe formatearlos con FORMAT de MS-DOS. Si está usando Windows puede usar el Explorador para formatear disquetes: botón derecho del ratón sobre la unidad A: y elija ``Formatear''.

 No confíe en el preformateo de fábrica de los disquetes. Formatéelos usted de nuevo, sólo para asegurarse. La mayoría de los problemas de los que se ha informado se han debido a formateos defectuosos, téngalo en cuenta.

Si puede crear los disquetes en una máquina FreeBSD un formateo sigue sin ser una mala idea, pero no necesitará crear un sistema de ficheros DOS en cada floppy. Use disklabel y newfs para crear un sistema de ficheros UFS en los disquetes tal y como se muestra aquí (en un floppy de 1.44 MB y 3.5") :

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

Nota:  Tendrá que usar fd0.1200 y floppy5 si usa discos de 5.25" y 1.2 MB.

Ahora puede montarlos y escribir en ellos igual que en cualquier otro sistema de ficheros del sistema.

Tras el formateo de los disquetes pasamos a llenarlos. Los ficheros necesarios para crear la distribución se dividen en partes de tamaño regular de modo que cinco de ellas entren en otros tantos disquetes de 1.44 MB. Empaquete tantos ficheros como pueda en cada uno hasta que tenga todas las distribuciones que necesita lista para pasar a los disquetes. Cada distribución debería ir ir en un subdirectorio del floppy, por ejemplo a:\bin\bin.aa, a:\bin\bin.ab, etc.

Una vez en el menú de selección de medio de instalación elija Floppy y siga las instrucciones.


2.13.4. Instalación desde una partición MS-DOS

Copie los ficheros de la distribución en un directorio llamado freebsd en el directorio raíz de la partición, por ejemplo c:\freebsd. La estructura de directorios del sitio FTP o el CDROM debe reproducirse parcialmente en este directorio, así que le sugerimos que use xcopy si está copiando los datos desde un CD. En el siguiente ejemplo vamos a preparar una instalación mínima de FreeBSD:

C:\> md c:\freebsd
C:\> xcopy e:\bin c:\freebsd\bin\ /s
C:\> xcopy e:\manpages c:\freebsd\manpages\ /s

Se ha asumido que C: es donde tiene espacio libre y E: es donde tiene montada su unidad CDROM.

Si no tiene unidad CDROM puede descargar la distribución desde ftp.FreeBSD.org. Cada distribución dispone de su propio directorio; por ejemplo, la distribución base está en el directorio5.3/base/.

Nota:  En las versiones 4.X y anteriores de FreeBSD la distribución ``base'' se llamaba ``bin''. Corrija donde corresponda los comandos que se dan como ejemplo en el párrafo anterior si está usted usando alguna de las versiones citadas.

La única distribución imprescindible es BIN. Guarde esta y todas las distribuciones que quiera instalar desde una partición MS-DOS bajo under c:\freebsd.


2.13.5. Creación de una cinta de instalación

La instalación desde cinta es probablemente el método más fácil, casi tanto como una instalación desde una réplica FTP o desde un CDROM. Lo único que el programa de instalación necesita es que los ficheros estén·empaquetador con tar y en una cinta. Veamos un ejemplo:

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

Cuando esté preparando la instalació tenga la precaución de dejar sitio suficiente en algún directorio temporal (accesible en ese momento) para dejar todos los ficheros que hubiera en la cinta de instalación. A causa del acceso secuencial propio del diseño de las cintas este método de instalación requiere un poco de almacenamiento temporal.

Nota:  Recuerde que antes de arrancar desde el disquete de arranque la cinta debe estar en la unidad. La prueba de hardware de la instalación no encontraría la cinta.


2.13.6. Antes de arrancar a través de una red

Hay tres tipos de instalación a través de una red disponibles en FreeBSD: Puerto serie (SLIP o PPP), puerto paralelo (PLIP (cable ``laplink'')) y Ethernet (mediante un interfaz Ethernet estándar o algunos PCMCIA).

El protocolo SLIP es bastante primitivo y destinado en su origen a enlaces directos, como un cable serie entre un sistema portátil (``laptop'') y otra computadora. El enlace debe ser directo puesto que la instalación a través de SLIP no permite llamadas telefónicas; para ello tendrá que usar PPP, que deberí intentar usar en lugar de SLIP sea cual sea la circunstancia.

Si va a usar un módem PPP es casi su única opción. Tenga a mano la información de su proveedor de servicios (ISP) puesto que se le van a pedir unos cuantos datos sobre él bastante pronto.

Si usa PAP o CHAP al conectar con su ISP (en otras palabras, si conecta su Windows con su ISP sin usar un ``script'') sólo tiene que escribir dial en el prompt de ppp prompt. Además tendrá que saber cómo llamar a su ISP mediante los ``comandos AT'' propios de su módem, puesto que PPP dispone de un emulador de terminal bastante escaso. Consulte la parte relacionada con user-ppp del handbook y las FAQ. Si tiene problemas puede redirigir la salida a pantalla mediante set log local ....

Si hay posibilidad de conectar directamente con otra máquina FreeBSD (2.0-R o posterior) quizás fuera razonable instalar a través de un cable paralelo ``laplink''. La tasa de transferencia es mucho más alta de lo que suele ser en una línea serie (más de 50 kbytes/s), lo que puede hacer la instalación muchísimo más rápida.

Un adaptador Ethernet es siempre una buena elección. FreeBSD soporta la mayoría de los adaptadores Ethernet. Tiene una lista de dispositivos soportados en las notas de hardware de cada ``release'' de FreeBSD. Si disponde alguno de los adaptadores Ethernet PCMCIA soportados por FreeBSD recuerde que debe estar presente en el sistema antes de que el sistema arranque. Por desgracia FreeBSD no soporta aún la inserción en caliente de tarjetas PCMCIA durante la instalación.

Tendrá que conocer también la dirección IP de la red, la máscara de red correcta para la clase de su red y el nombre de su máquina. Si va a instalar mediante una conexión PPP y no tiene IP estática no se preocupe, su ISP puede asignarle una IP temporal dinámicamente. Su administrador de sistemas seguramente puede ayudarle con la configuración de su red. Si va a intentar conectarse con otras máquinas mediante sus nombres en lugar de sus direcciones IP necesitará los datos de un servidor de nombres y es posible que necesite también la dirección de un ``gateway'' (si usa PPP vale con la dirección IP de su proveedor). Si va a instalar por FTP a través de un proxy HTTP necesitará la dirección del proxy. Si no sabe qué pueden significar todas (o la mayoría) de estas preguntas hable con su administrador de sistemas o con su ISP antes de intentar instalar FreeBSD de esta forma.


2.13.6.1. Antes de instalar via NFS

La instalación por NFS es bastante sencilla. Sólo tendrá que copiar los ficheros de la distribución a un servidor NFS, seleccionar NFS como medio de instalación y apuntar a los contenidos a donde los haya copiado.

si el servidor sólo soporta ``puertos privilegiados'' (que suele ser la configuración por defecto en estaciones de trabajo Sun) tendrá que seleccionar la opción NFS Secure en el menú ``Options'' antes de comenzar con la instalación.

Si una tarjeta Ethernet de mala calidad y está experimentando velocidades de transferencia muy bajas puede probar con el parámetro NFS Slow.

Para que la instalación via NFS funcione el servidor debe permitir el montaje de subdirectorios. Por ejemplo, si su distribución FreeBSD 5.3 está en ziggy:/usr/archive/stuff/FreeBSD el servidor ziggy tendrá que permitir que pueda montarse /usr/archive/stuff/FreeBSD, no simplemente como /usr o /usr/archive/stuff.

En el fichero /etc/exports de FreeBSD eso puede controlarse mediante la opción -alldirs. Puede que otros servidores NFS requieran de parámetros diferentes. Si recibe mensajes de ``permission denied'' seguramente no ha activado esto correctamente.


Capítulo 3. Conceptos Básicos de Unix

Reescrito por Chris Shumway.

3.1. Sinópsis

El siguiente capítulo cubre la funcionalidad y órdenes básicas del sistema operativo FreeBSD. Mucho de este material es relevante para cualquier sistema operativo tipo UNIX. Si es nuevo en FreeBSD, seguramente querrá leer este capítulo cuidadosamente.

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

  • Cómo usar la ``consola virtual'' de FreeBSD.

  • Cómo trabajan los permisos de ficheros en UNIX.

  • La disposición de archivos de sistema en FreeBSD por defecto.

  • Cómo montar y desmontar archivos de sistema.

  • Qué son los procesos, demonios y señales.

  • Qué es una cónsola (shell) y como cambiar el ambiente de su entorno (login).

  • Cómo usar editores de texto basicos.

  • Qué son los dispositivos y nodos de dispositivos.

  • Qué formato binario se utiliza en FreeBSD.

  • Cómo leer los manuales para más información.


3.2. Permisos

FreeBSD, cuya raiz histórica es el UNIX BSD, tiene sus fundamentos basados en varios conceptos clave de UNIX. El primero, y más remarcado, es que FreeBSD es un sistema operativo multi-usuario. El sistema puede manejar varios usuarios trabajando todos simultáneamente y en tareas que no guardan relación entre sí. El sistema es el responsable de compartir y administrar peticiones de dispositivos de hardware, periféricos, memoria y tiempo de Unidad Central de Proceso (CPU) de manera equitativa para cada usuario.

Debido a que el sistema es capaz de soportar múltiples usuarios, todo lo que el sistema administra tiene un conjunto de permisos que gobiernan quién puede leer, escribir y ejecutar el elemento. Estos permisos se guardan como octetos divididos en tres partes: una para el propietario del archivo, otra para el grupo al que el archivo pertenece, y otra para cualquier otro. Esta representación numérica funciona así:

Valor Permiso Listado de Directorio
0 No leer, no escribir, no ejecutar ---
1 No leer, no escribir, ejecutar --x
2 No leer, escribir, no ejecutar -w-
3 No leer, escribir, ejecutar -wx
4 Leer, no escribir, no ejecutar r--
5 Leer, no escribir, ejecutar r-x
6 Leer, escribir, no ejecutar rw-
7 Leer, escribir, ejecutar rwx

Si se muestra un listado expandido de directorio mediante ls -l, se mostrarán en una columna los permisos de fichero para el propietario, grupo y todos los demás. Veamos como se descompone:

-rw-r--r--

El primer carácter, de izquierda a derecha, es un carácter especial que indica si se trata de un archivo normal, un directorio, un dispositivo especial de tipo carácter o bloque, un socket, o cualquier otro dispositivo de pseudo-archivo. Los siguientes tres caracteres, expresados como rw- muestran los permisos para el propietario del archivo. Los siguientes tres caracteres, r-- muestran los permisos para el grupo al que el archivo pertenece. Los últimos tres caracteres, r--, muestran los permisos para el resto del mundo. Un guión indica que el permiso está desactivado. En el caso de este archivo, los permisos están asignados de tal manera que el propietario puede leer y escribir en el archivo, el grupo puede leer el archivo, y el resto del mundo sólo puede leer el archivo. De acuerdo con la tabla que se muestra más arriba, los permisos para este archivo serían 644, donde cada cifra representa las tres partes de los permisos del archivo.

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

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

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


3.3. Estructura de directorios

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

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

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


3.4. Intérpretes de órdenes (Shells)

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

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

Una de las propiedades comunes de un shell es que completa los nombres de archivo. Dada la introducción de las primeras letras de una orden o del nombre de un archivo, se puede hacer que el shell complete automáticamente el resto de la orden o el nombre del archivo pulsando la tecla TAB. Aquí va un ejemplo. Supongamos que se tienen dos archivos llamados foobar y foo.bar. Se quiere borrar foo.bar. Lo que habría que teclear es: rm fo[TAB].[TAB].

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

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

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

Variable Descripción
USER Nombre de usuario con el que se ha entrado al sistema.
PATH Lista de directorios, separada por puntos y coma, en los que se busca ejecutables.
DISPLAY Nombre en la red de la pantalla de X11 a la que conectarse, si se encuentra disponible.
SHELL El shell actual.
TERM El nombre del terminal del usuario. Se usa para determinar las posibilidades del terminal de datos.
TERMCAP Base de datos donde encontrar los códigos de escape necesarios para realizar diferentes funciones en el terminal.
OSTYPE Tipo de sistema operativo. Por ejemplo, FreeBSD.
MACHTYPE Arquitectura de la CPU en la que el sistema se está ejecutando.
EDITOR El editor de texto preferido por el usuario.
PAGER El paginador de texto preferido por el usuario.
MANPATH Lista de directorios en los que se busca páginas de manual, separados por puntos y coma.

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

% setenv EDITOR /usr/local/bin/emacs

Bajo los shells tipo Bourne (Bourne Shells):

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

También se puede hacer que la mayoría de los shells muestren el contenido de una variable de entorno situando el carácter $ delante del nombre de la variable desde la línea de órdenes. Por ejemplo, echo $TERM mostrará cualquiera que sea el valor que se le haya establecido a TERM, porque el shell expande el valor de TERM y se lo pasa al programa echo.

Los shells manejan muchos caracteres especiales, llamados meta-caracteres, como representaciones especiales de datos. El mas común es el carácter *, que representa cualquier número de caracteres en un nombre de archivo. Estos meta-caracteres especiales se pueden usar para la expansión de nombres de archivos. Por ejemplo, teclear echo * es casi lo mismo que introducir ls porque el shell recoge todos los archivos que coinciden con * y se los pone en la línea de órdenes a echo para que los vea.

Para evitar que el shell interprete estos caracteres especiales, se pueden salvar poniendo el carácter contrabarra (\) delante de ellos. echo $TERM muestra cualquiera que sea el valor establecido para el terminal que estamos usando. echo \$TERM muestra $TERM tal cual.


3.4.1. Cambiando de shell

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

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

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

Ejecutar chsh sin parámetros y cambiar el shell desde allí tambien funcionaría.

Nota: El shell que se desee usar debe figurar en el archivo /etc/shells. Si se ha instalado un shell desde la colección de ports, entonces esto ya se habrá realizado. Si se ha instalado manualmente el shell, se debe realizar el cambio pertinente.

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

# echo "/usr/local/bin/bash" >> /etc/shells


Y entonces volver a ejecutar chsh.


3.5. Editores de texto

Gran parte de la configuración de FreeBSD se realiza modificando archivos de texto. A causa de esto, es una buena idea familiarizarse con un editor de texto. FreeBSD viene con unos cuantos como parte del sistema base y muchos más se encuentran disponibles en la colección de ports.

El editor de textos más fácil y rápido de aprender es uno llamado ee, cuyo nombre proviene del inglés "easy editor" (editor fácil). Para iniciar ee se debería teclear en la línea de órdenes ee filename, donde filename es el nombre del archivo que deseamos editar. Por ejemplo, para editar /etc/rc.conf, tecléese ee /etc/rc.conf. Una vez dentro de ee, todas las posibles órdenes para manipular las funciones del editor se presentan en la parte superior de la pantalla. El carácter acento circunflejo ^ representa a la tecla de control en el teclado, o sea que ^e significa pulsar simultáneamente la tecla control y la letra e. Para abandonar ee, se debe pulsar la tecla escape y elegir abandonar (leave) el editor. El editor preguntará entonces si se desean conservar los cambios si el archivo hubiera sido modificado.

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


3.6. Para más información

3.6.1. Páginas de manual

La documentación más exhaustiva de FreeBSD se encuentra en la forma de páginas de manual. Casi todos los programas del sistema vienen con un sucinto manual de referencia explicando el funcionamiento básico y los diferentes argumentos. Estos manuales pueden ser revisados con el programa man. El uso del programa man es sencillo:

% man command

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

% man ls

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

  1. Órdenes/programas de usuario.

  2. LLamadas de sistema y códigos numéricos de error.

  3. Funciones de las librerías de C.

  4. Manejadores de Dispositivos.

  5. Formatos de Archivos.

  6. Juegos y otros divertimentos.

  7. Información miscelánea.

  8. Programas relativos al mantenimiento y operación del sistema.

  9. Desarrolladores del Kernel.

En algunos casos, el mismo epígrafe puede aparecer en más de una sección del manual en línea. Hay, por ejemplo, un programa de usuario llamado chmod y una llamada de sistema chmod(). En este caso se le puede especificar a man cuál se desea especificando la sección:

% man 1 chmod

Esto nos mostrará la página del manual en línea del programa de usuario chmod. Las referencias a una sección concreta del manual en línea se sitúan tradicionalmente entre paréntesis en la documentación impresa, de tal manera que chmod(1) se refiere al programa de usuario chmod y chmod(2) se refiere a la llamada de sistema.

Esto está muy bien si se conoce el nombre del programa y simplemente se quiere saber cómo usarlo. Pero, ¿qué si se recuerda el nombre del programa? Se puede usar man para que realice una búsqueda mediante palabras clave en las descripciones de programas usando el argumento -k:

% man -k mail

Con esta orden se nos mostrará una lista de programas que contienen la palabra clave ``mail'' en sus descripciones. Ésto equivale a usar el programa apropos.

Si se está mirando todos esos curiosos programas que residen en /usr/bin y no se tiene ni puñetera idea de que narices hacen realmente, hágase un sencillo:

% cd /usr/bin
% man -f *

o

% cd /usr/bin
% whatis *

que hace exactamente lo mismo.


3.6.2. Archivos de información GNU

FreeBSD incluye muchas aplicaciones y utilidades producidas por la Free Software Foundation (FSF). De manera adicional a las páginas de manual estos programas vienen con documentos de hipertexto más detallados, llamados archivos info, que pueden ser revisados con el programa info o, si se ha instalado emacs, el modo "info" de emacs.

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

% info

Para una descripción breve, tecléese h. Para una referencia rápida de un programa, tecléese ?.


Capítulo 4. Instalación de Aplicaciones: Paquetes y Ports

4.1. Sinópsis

FreeBSD esta colmado de una excelente colección de herramientas de sistema, como parte del sistema base. A pesar de esto, existe gran cantidad de cosas que uno requiere hacer para poner las cosas realmente en marcha, para lo cual se necesita instalar software adicional de terceros. FreeBSD ofrece dos tecnologías complementarias para instalar software de terceros en nuestro sistema: la Colección de Ports de FreeBSD y Paquetes binarios. Cualquiera de los dos sistemas puede ser usado para instalar las versiones más recientes, de forma local o directamente desde la red.

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

  • Como instalar paquetes binarios de software de terceros.

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

  • Como eliminar paquetes o ports instalados previamente.


4.2. Aproximación a la Instalación de Software

Si usted ha usado un sistema UNIX con anterioridad, sabrá que el procedimiento típico para instalar software de terceros es algo similar a esto:

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

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

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

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

  5. Instalar y probar el software.

Y esto solamente si todo marcha bien. Si usted esta instalando un software que no ha sido creado específicamente para FreeBSD, puede que sea necesario editar el código para que trabaje correctamente.

Si usted lo desea, puede continuar instalando software de la forma ``tradicional'' bajo FreeBSD. Aunque FreeBSD le provee de dos tecnologís que le pueden ahorrar gran cantidad de tiempo y esfuerzo: los paquetes y ports. Al momento de escribir esto, existen más de 10,500 aplicaciones de terceros, que estan disponibles de esta manera.

Los paquetes de FreeBSD, para cualquier aplicación, son un simple fichero que debe descargar. Los paquetes contienen copia de binarios pre-compilados de la aplicación, así como cualquier fichero de configuración necesario o documentación. Los paquetes descargados, pueden ser manipulados con los comandos de manejo de paquetes de FreeBSD, tales como: pkg_add(1), pkg_delete(1), pkg_info(1), etc. El instalar una aplicación nueva puede realizarse con un simple comando.

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

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

De hecho, el sistema de ports también se puede usar para crear paquetes que posteriormente manipule con pkg_add y las otras utilidades del manejo de paquetes que veremos en breve.

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

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

Beneficios de los Paquetes

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

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

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

Beneficios del Sistema de Ports

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

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

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

  • Las condiciones de licenciamiento de algunas aplicaciones, prohiben la distribución de binarios. Solo permiten la distribución del código fuente.

  • Existe gente que no confia en los binarios. Al menos con el código fuente, usted puede (en teoría) revisarlo y localizar problemas potenciales.

  • Si cuenta con parches locales, necesitará el código fuente para poder aplicarlos.

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

Para poder estar actualizado en sus ports, suscribase a lista de correo de los ports de FreeBSD.

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


4.3. Localizando su Aplicación

Antes de poder instalar cualquier software, usted debe saber que desea instalar y como se llama dicha aplicación.

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

  • El sitio web de FreeBSD mantiene una base actualizada de todas las aplicaciones disponibles para FreeBSD, en la dirección http://www.FreeBSD.org/ports/ . Esta base esta segmentadas por categorías, y usted puede buscar por nombre (si lo sabe) o bien listas las aplicaciones disponibles en cierta categoría.

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

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


4.4. Usando el Sistema de Paquetes

Contribuido porChern Lee.

4.4.1. Instalando un Paquete

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

Ejemplo 4-1. Descarga de un Paquete e Instalación en nuestro sistema

# ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230-     This machine is in Vienna, VA, USA, hosted by Verio.
230-         Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp> get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375       00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp> exit
# pkg_add lsof-4.56.4.tgz

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

# pkg_add -r lsof

En el ejemplo anterior, el paquete correspondiente será descargado e instalado sin mayor intervención del usuario. pkg_add(1) utiliza fetch(1) para descargar los ficheros, que toma como referencia varias variables de entorno, que incluyen FTP_PASSIVE_MODE, FTP_PROXY y FTP_PASSWORD. Quizás deba modificar alguna de estas, si se encuentra detrás de un firewall, o bien usar un proxy FTP/HTTP. Vea la página de ayuda fetch(3) para una lista completa. También puede notar que en el ejemplo anterior usamos lsof en vez de lsof-4.56.4. Cuando hacemos uso de ``fetch'' de forma remota, la versión del paquete debe ser removida. El programa pkg_add(1) obtendrá automáticamente la versión más reciente.

Los paquetes son distribuidos en formato .tgz y .tbz. Puede encontrarlos en ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/, o bien, en el CDROM de FreeBSD. Cada CD de la distribución de 4 CDs (y del PowerPak, etc) contiene los paquetes en el directorio /packages. El orden de dicho directorio, es similar al árbol de /usr/ports. Cada categoría cuenta con su subdirectorio, y todos los paquetes estan disponibles en el directorio All.

La estructura del directorio de paquetes es identica a la de ports; estos trabajan en conjunto para formar el sistema de paquetes/ports.


4.4.2. Eliminando un Paquete

Para eliminar un paquete previemante instalado, utilice la utilidad pkg_delete(1).

# pkg_delete xchat-1.7.1

4.4.3. Manejo de Paquetes

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

# pkg_info
cvsup-16.1          A general network file distribution system optimized for CV
docbook-1.2         Meta-port for the different versions of the DocBook DTD
...

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

# pkg_version
cvsup                       =
docbook                     =
...

Los símbolos de la segunda columna, nos indican la edad relativa de la versión instalada, comparada con la versión disponible en el árbol local de ports.

Símbolo Significado
= La versión del paquete instalado es igual a la versión del árbol local de ports.
< La versión instalada es más antigua a la versión del árbol local de ports.
> La versión instalada es más reciente que la que se encuentra en el árbol local de ports (probablemente el árbol de ports esta desactualizado).
? El paquete instalado no se ha localizado en el índice (index) de los ports.
* Existen multiples versiones del paquete.

4.4.4. Miscelaneos

Toda la información relacionada con los paquetes, se guarda en el directorio /var/db/pkg. Los paquetes instalados, así como una descripción de los mismos, puede encontrarse en este subdirectorio.


4.5. Usando la Colección de Ports

La siguiente sección le provee de las instrucciones básicas para instalar o eliminar programas de su sistema, usando la Colección de Ports.


4.5.1. Obteniendo la Colección de Ports

Antes de poder instalar ports, primero debe de hacerse de la Colección de Ports-- que escencialmente esta compuesta de ficheros Makefiles, parches y ficheros con la descripción de los ports, ubicados en /usr/ports.

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

Metodo por Sysinstall

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

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

    # /stand/sysinstall
    
  2. Posicionese en la opción Configure, y presione Enter.

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

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

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

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

  7. Siga los menus para salir de sysinstall.

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

Metodo por CVSup

Este es un metodo rápido de obtener la Colección de Ports usando CVSup. Si desea mantener su árbol de ports actualizado, o bien, aprender más acerca de CVSup, lea los documentos comentados anteriormente.

  1. Instale el port net/cvsup. Vea Instalación de CVSup para mádetalles.

  2. Como usuario root, copie el fichero /usr/share/examples/cvsup/ports-supfile a una nueva ubicación, como puede ser el directorio /root o bien su propio directorio home.

  3. Edite el fichero ports-supfile.

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

  5. Ejecute cvsup:

    # cvsup -g -L 2 /root/ports-supfile
    
  6. Al ejecutar esto posteriormente, se descargaran las actualizaciones de la Colección de Ports.


4.5.2. Instalando Ports

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

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

  • Un fichero distinfo. Este fichero contiene información de los ficheros que debe ser descargados para efecto de compilar el programa, así como el identificador checksum, para asegurarse se han descargado correctamente, sin corrupciones usando md5(1).

  • Un directorio files. Este directorio contiene los parches necesarios para compilar e instalar en su sistema FreeBSD. Básicamente, los parches son pequeños ficheros, que incluyen algunos cambios. Estos son en formato de texto plano, y básicamente dicen cosas como ``Remove line 10'' (Remover la línea 10) o ``Change line 26 to this...'' (Cambiar la línea 26 por esto...). Los parches también son conocidos como ``diffs'', ya que son generados por el programa del mismo nombre; diff(1).

    Es posible que este directorio tambié contenga algun otro fichero necesario para compilar e instalar el port.

  • Un fichero pkg-comment. Este es una descripcion del programa en una sola línea.

  • Un fichero pkg-descr. Esta es una descripcion más detallada del programa. En ocasiones multi-línea.

  • Un fichero pkg-plist. Esta es una lista de todos los ficheros que serán instalados por el port. También le indica al sistema de ports qué ficheros eliminar en caso de una desinstalación.

Algunos ports cuentan con otros ficheros, tal como pkg-message. El sistema de ports usa estos, para manejar situaciones especiales. Si desea saber más detalles al respecto, o bien de ports en general, vea el libro FreeBSD Porter's Handbook.

Ahora que tiene suficientes antecedentes sobre que hacer con la Colección de Ports, esta listo para instalar su primer port. Existen dos formas de lllevar esto a cabo, y cada una de ellas se explican a continuación.

Pero, antes de que podamos proceder con la instalación, usted necesita seleccionar un port para instalar. Existen varias formas de hacer esto, siendo el metodo más sencillo los ports listados en el sitio web de FreeBSD. Puede navegar entre los ports listados ahí o bien, usar la función de buscar en el sitio. Cada port incluye una descripción, para que pueda leer un poco acerca de cada port antes de decidirse a instalarlo.

Otro metodo es por medio del comando whereis(1). Simplemente teclee whereis fichero, donde fichero es el programa que desea instalar. Si se encuentra en su sistema, se le indicara donde se localiza, tal como:

# whereis lsof
lsof: /usr/ports/sysutils/lsof

Esto nos indica que lsof (una utilidad de sistema) puede encontrarse en /usr/ports/sysutils/lsof.

Incluso otra forma de encontrar un port en particular, es usando el mecanismo de búsqueda incluido en el sistema de ports. Para efecto de usar esta habilidad, debe estar situado en el directorio /usr/ports. Una vez que este ahí, ejecute make search name=nombre-del-programa donde nombre-del-programa es el nombre del programa que desea encontrar. Por ejemplo, si busca lsof:

# cd /usr/ports
# make search name=lsof
Port:   lsof-4.56.4
Path:   /usr/ports/sysutils/lsof
Info:   Lists information about open files (similar to fstat(1))
Maint:  obrien@FreeBSD.org
Index:  sysutils
B-deps: 
R-deps:

De esta información, la parte que debe prestar atención es la que se refiere a la ruta, esto es; la línea ``Path:'', en virtud de que esta le indica la ubicación del programa. El resto de la información no es necesaria para la instalación, por lo que no se verá aqui.

Para una búsqueda más profunda, puede usar el comando make search key=cadena donde cadena es algun texto a buscar. Esto busca nombres de ports, descripciones y dependencia y puede usarse para buscar ports que se relacionan a un determinado texto, si no sabe el nombre del port que esta buscando.

En ambos casos, la búsqueda es indistinto el uso de mayúsculas o minusculas. El buscar ``LSOF'' y ``lsof'' arrojaran los mismos resultados.

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

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


4.5.2.1. Instalando Ports desde un CDROM

Los CDROMs oficiales del Proyecto de FreeBSD, ya no incluyen distfiles. Estos ocupan gran espacio, que en su lugar se ha usado para incluir paquetes precompilados. CDROMs como el PowerPak de FreeBSD, si inlcuyen distfiles, y puede ordenar estos de distribuidores como FreeBSD Mall. Esta sección asume que usted cuenta con un juego de CDROMs de FreeBSD.

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

# cd /usr/ports/sysutils/lsof

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

# make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from file:/cdrom/ports/distfiles/.
===>  Extracting for lsof-4.57
...
[extraction output snipped]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[configure output snipped]
...
===>  Building for lsof-4.57
...
[compilation output snipped]
...
#

Note que una vez que ha terminado la compilación, regresara a la línea de comandos. El siguiente paso es instalar el port. Para efecto de instalarlo, simplemente debemos añadir una palabra al comando make, y esa palabra es install:

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

Una vez que regrese a la línea de comandos, le será posible ejecutar la aplicación que recien instalo. Dado que el programa lsof se ejecuta con privilegios, nos aparece una advertencia de seguridad. Debe tomar nota de cualquier otra advertencia que aparezca durante la compilación e instalación.

Nota: Puede ahorrarse algo de tiempo al ejecutar make install en un solo comando, en lugar de ejecutar make y make install en dos pasos diferentes.

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

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


4.5.2.2. Instalando Ports desde Internet

Como en la sección anterior, en este sección se asume que usted cuenta con una conexión activa a Internet. Si no es así, deberá de llevar a cabo la instalación por medio de CDROM, o ponga una copia del distfile en /usr/ports/distfiles manualmente.

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

Los pasos que implica son identicos:

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

Como puede ver, la única diferencia es la línea que indica de donde esta descargando el sistema el código.

El sistema de ports utiliza fetch(1) para descargar los ficheros, que hace uso de varias variables de entorno, como son FTP_PASSIVE_MODE, FTP_PROXY, y FTP_PASSWORD. Puede ser necesario que modifique una o más de estas, si se encuentra detrás de un cortafuegos (firewall), o si requiere usar de un proxy FTP/HTTP. Vea la página de ayuda fetch(3) para una lista completa de las opciones.

La opción make fetch se provee para usuarios que no pueden estar conectados constantemente. Solo se tiene que ejecutar el comando en /usr/ports y los ficheros requeridos serán descargados. Este comando funciona también en subdirectorios, por ejemplo: /usr/ports/net. Si el port tiene dependencias en librerias u otros ports, esta orden no descargará los distfiles de estos ports. Remplace fetch por fetch-recursive si se quiere descargar las dependencias de otro port.

Nota: Es posible compilar los ports por categoria, o todos si se desea, ejecutando la orden make en /usr/ports usando el ya descrito método de makefetch . Esto puede resultar peligroso ya que algunos ports no pueden coexistir. En otros casos, algunos ports pueden instalar dos diferentes ficheros bajo el mismo nombre.

Puede darse el caso que se necesite descargar los tarballs de otro sitio diferente a MASTER_SITES (de donde se descargan los ficheros). Es posible renombrar la opción MASTER_SITES de la siguiente manera:

# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE= \
        ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

En este ejemplo cambiamos la opción MASTER_SITES a ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.

Algunos ports permiten (o requieren) que se provea opciones de compilación que pueden habilitar/deshabilitar partes de la aplicación que no son necesarias, algunas opciones de seguridad y otros arreglos. Algunos ejemplos de estos son www/mozilla, security/gpgme y mail/sylpheed-claws. Se notificará con un mensaje cuando opciones como estas estan disponibles.


4.5.2.3. Rehubicando el directorio de Ports

Algunas veces es útil (o necesario) usar diferentes distfiles y directorio de ports. Las variables PORTSDIR y PREFIX pueden sustituir los recursos por defecto. Por ejemplo:

# make PORTSDIR=/usr/home/example/ports install

Esto compilará el port en /usr/home/example/ports y lo instalará en /usr/local.

# make PREFIX=/usr/home/example/local install

Esto compilará el port en /usr/ports y lo instalará en /usr/home/example/local.

Y claro,

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

Combinará los dos (demasiado largo para escribirlo completamente, pere debe darle una idea general).

Es posible también cambiar estas variables como parte su su entorno. Lea el manual de su consola (shell) para hacerlo.


4.5.2.4. Usando imake

Algunos ports que usan imake (como parte del Sistema X Windows) no funcionan correctamente con PREFIX, e insistirá en instalar en /usr/X11R6. Al igual, algunos ports de Perl ignoran PREFIX e instalan en el árbol de Perl. Hacer que estos ports respeten PREFIX es una tarea difícil y hasta imposible.


4.5.3. Eliminando Ports Instalados

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

# cd /usr/ports/sysutils/lsof
# make deinstall
===>  Deinstalling for lsof-4.57

Esto fué sencillo. Ha eliminado lsof de su sistema. Si desea reinstalarlo, lo puede hacer al ejecutar make reinstall estando en el directorio /usr/ports/sysutils/lsof.

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


4.6. Actividades Post-Instalación

Una vez que ha instalado una nueva aplicación, normalmente deberá leer la documentación incluida, editar los ficheros de configuración necesarios, asegurarse de que la aplicación se ejecute al arrancar el sistema (si es un daemonio), etc.

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

  • Use pkg_info(1) para ver que ficheros se instalaron y donde. Por ejemplo, si recien instaló el paquete FooPackage 1.0.0, el siguiente comando:

    # pkg_info -L foopackage-1.0.0 | less
    

    le mostrará los ficheros instalados por el paquete. Preste especial atención a los ficheros en el directorio man/ que son las páginas de ayuda y los del directorio etc/, que contiene los ficheros de configuración, y bajo el directorio doc/ podrá encontrar información más detallada.

    Si no esta seguro de cual es la versión del paquete instalado, simplemente teclee algo así

    # pkg_info | grep foopackage
    

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

  • Una vez que ha identificado donde se localizan las paginas de ayuda de la aplicación, reviselas usando man(1). De forma similar revise los ficheros de configuración de ejemplo (N. de T. Generalmente estos ficheros son aquellos que tienen la terminación .sample), así como cualquier documentación adicional que se incluya.

  • Si la aplicación cuenta con un sitio web, visitelo en busca de documentación adicional, ficheros de preguntas frecuentes (FAQ), etc. Si no esta seguro del sitio web, vea la salida del comando

    # pkg_info foopackage-1.0.0
    

    este incluye en ocasiones una línea WWW:, que describe el sitio web de la aplicación.


4.7. Resolución de Problemas

La siguiente sección cubre algunas de las preguntas más frecuentes relacionadas a la colección de ports, y algunas técnicas básicas para la resolución de problemas, así como que hacer si encontramos un port roto.


4.7.1. Algunas Preguntas y Respuestas

4.7.1.1. ¿Qué no es una discusión acerca de módems?
4.7.1.2. ¿Qué es un parche (patch)?
4.7.1.3. ¿Qué es eso de tarballs?
4.7.1.4. ¿Y un checksum?
4.7.1.5. He hecho lo que se indica para compilar ports desde un CDROM y funciona de maravilla hasta que he intentado instalar el port de Kermit.
4.7.1.6. Ya hice esto, pero cuando intento guardarlo en el subdirectorio /usr/ports/distfiles obtengo un error diciendo algo acerca de que no cuento por los permisos.
4.7.1.7. ¿El esquema de ports trabaja solamente si se tiene todo en /usr/ports? Mi administrador de sistema dice que todo lo debo tener en /u/people/guests/wurzburger, pero parece que no funciona de esta manera.
4.7.1.8. No cuento con un CDROM de FreeBSD, pero me gustaría contar con todos los ficheros tar a la mano en mi sistema, para no tener que descargarlos cada vez que deseo instalar un port. ¿Hay alguna forma de obtener todos de una sola vez?
4.7.1.9. Tengo conocimiento de que probablemente es más rápido descargar los ficheros tarball desde un servidor réplica (mirror) de FreeBSD, más cercano. ¿Existe alguna forma de indicarle al port que descargue los ficheros de un servidor diferente a los listados en MASTER_SITES?.
4.7.1.10. Quisiera saber cuales son los ficheros que make va a necesitar antes de los descargue.
4.7.1.11. ¿Existe alguna forma de detener la compilación del port? Deseo editar un poco el código, antes de instalarlo, pero es un poco cansado tener que verlo y pulsar Ctrl+C a cada momento.
4.7.1.12. Estoy tratando de hacer mi propio port, y quiero poder detener el proceso, hasta que verifique que mis parches funcionan correctamente. ¿Existe algo similar a make extract, pero para parches?
4.7.1.13. He escuchado que algunas opciones del compilador pueden causar errores. ¿Es cierto? ¿Cómo puedo asegurarme de compilar los ports con las opciones correctas?
4.7.1.14. Existen muchos ports y es difícil encontrar el que quiero. ¿Existe en algún lado una lista de los ports disponibles?
4.7.1.15. Deseo instalar el port foo pero de repente el sistema se detuvo y comenzo a compilar el port bar. ¿Qué esta pasando?
4.7.1.16. He instalado el programa grizzle desde los ports y francamente es un desperdicio de espacio en disco. Quiero eliminarlo, pero no se donde se instalaron sus ficheros. ¿Alguna pista?
4.7.1.17. Aguarda un momento, ¿Se supone que uno debe saber el numero de versión para usar este comando? Hablando en serio, no esperas que recuerde todo esto, ¿o si?
4.7.1.18. Hablando de espacio en disco, el directorio de ports parece que ocupa mucho espacio. ¿Es seguro eliminar algo de este directorio?
4.7.1.19. He intentado eso y aun cuento con los tarballs o como se llamen, en el directorio distfiles. ¿Puedo eliminarlos también?
4.7.1.20. Me gusta contar con muchos, muchos programas para jugar con ellos. ¿Existe una forma de instalar todos los ports en un solo paso?
4.7.1.21. OK, he intentado esto, pero como supuse que tomaria mucho tiempo, lo deje corriendo y me fui a dormir. En la mañana al ver mi computadora, solo había terminado tres ports y medio. ¿He hecho algo incorrectamente?.
4.7.1.22. Realmente no me interesa pasar todo el dí frente al monitor. ¿Alguna mejor idea?
4.7.1.23. En mi trabajo usamos frobble, que se encuentra la Colección de Ports, pero lo hemos editado un poco, para que se ajuste a nuestras necesidades. ¿Existe alguna forma de hacer nuestro paquete, para poder distribuirlo más facilmente en nuestros sitios?.
4.7.1.24. Esto de los ports es muy inteligente. Estoy deseperado por saber ¿Cúal es el secreto?

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

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

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

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

4.7.1.3. ¿Qué es eso de tarballs?

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

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

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

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

4.7.1.4. ¿Y un checksum?

Es un numero generado por la suma de los datos en el fichero que desea consultar. Si alguno de los caracteres cambia, el checksum ya no será igual al total, de tal suerte que esta simple comparación le permite detectar una diferencia.

4.7.1.5. He hecho lo que se indica para compilar ports desde un CDROM y funciona de maravilla hasta que he intentado instalar el port de Kermit.

# make install
>> cku190.tar.gz doesn't seem to exist on this system.
>> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/.

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

Como se explico en la sección Instalando Ports desde un CDROM, algunos ports no se pueden incluir en CDROM, debido a restricciones de licenciamiento. Kermit es un ejemplo de esto. Los términos de la licencia de Kermit, no permiten su inclusión en el CDROM, así que tendrá descargarlo ``a mano'', una disculpa!.

La razón por la cual obtiene esos mensajes de error, es por que no cuenta con una conexión a Internet en ese momento. Una vez que lo haya descargado de alguno de los sitios disponibles (MASTER_SITES listados en el fichero Makefile), puede continuar con el proceso de instalación.

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

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

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

4.7.1.7. ¿El esquema de ports trabaja solamente si se tiene todo en /usr/ports? Mi administrador de sistema dice que todo lo debo tener en /u/people/guests/wurzburger, pero parece que no funciona de esta manera.

Puede usar las variables PORTSDIR y PREFIX, para indicarle al mecanismo de ports que directorios utilizar. Por ejemplo;

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

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

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

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

Y claro esta que,

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

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

Algunos ports que usan imake(1) (una parte del Sistema de Ventanas X) no trabajan bien con PREFIX, e insistiran en instalar todo bajo /usr/X11R6. De forma similar, algunos ports de Perl ignoran la variable PREFIX y proceden a instalar bajo el árbol de Perl. Hacer que estos ports respeten la variable PREFIX es una tarea difícil si no imposible.

Si no le agrada estar tecleando todo esto cada vez que desea instalar un port, es una buena idea incluir estas variables en sus variables de entorno. Lea la documentación de su shell para ver las instrucciones para hacer esto.

4.7.1.8. No cuento con un CDROM de FreeBSD, pero me gustaría contar con todos los ficheros tar a la mano en mi sistema, para no tener que descargarlos cada vez que deseo instalar un port. ¿Hay alguna forma de obtener todos de una sola vez?

Para obtener todos y cada uno de los ficheros tar de la Colección de Ports, haga lo siguiente:

# cd /usr/ports
# make fetch

Para todos los tarball de un directorio concreto haga:

# cd /usr/ports/directorio
# make fetch

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

4.7.1.9. Tengo conocimiento de que probablemente es más rápido descargar los ficheros tarball desde un servidor réplica (mirror) de FreeBSD, más cercano. ¿Existe alguna forma de indicarle al port que descargue los ficheros de un servidor diferente a los listados en MASTER_SITES?.

Claro. Por ejemplo, si usted sabe que ftp.FreeBSD.org esta más próximo que los servidores listados en MASTER_SITES, haga lo siguiente:

# cd /usr/ports/directorio
# make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

4.7.1.10. Quisiera saber cuales son los ficheros que make va a necesitar antes de los descargue.

make fetch-list desplegara una lista de los ficheros necesarios para la compilación del port.

4.7.1.11. ¿Existe alguna forma de detener la compilación del port? Deseo editar un poco el código, antes de instalarlo, pero es un poco cansado tener que verlo y pulsar Ctrl+C a cada momento.

Puede usar el comando make extract, con el cual se detendra el proceso, una vez que se han descargado y extraido los ficheros necesarios.

4.7.1.12. Estoy tratando de hacer mi propio port, y quiero poder detener el proceso, hasta que verifique que mis parches funcionan correctamente. ¿Existe algo similar a make extract, pero para parches?

Si, make patch es lo que usted busca. Quizás la opción PATCH_DEBUG le sea de gran utilidad. Y por cierto, gracias por su esfuerzo!

4.7.1.13. He escuchado que algunas opciones del compilador pueden causar errores. ¿Es cierto? ¿Cómo puedo asegurarme de compilar los ports con las opciones correctas?

Si, con la versión 2.6.3 de gcc (que es la versión distribuida con FreeBSD 2.1.0 y 2.1.5), la opción -O2 puede ocasionar un código con errores, a menos que utilice también la opción -fno-strength-reduce (la mayoría de los ports no hacen uso de la opción -O2). Usted debe poder indicarle al compilador las opciones, con algo similar a:

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

o bien, editando el fichero /etc/make.conf, pero desafortunadamente no todos los ports respetan esto. La mejor forma es ejecutar make configure, y después dirijirse al directorio con el código fuente e inspeccionar y editar el fichero Makefile, pero esto puede ser tedioso si se cuenta con muchos subdirectorios, y en cada uno su propio fichero Makefile.

Lac opciones que por default utiliza el compilador de FreeBSD son muy conservadoras, por lo que si no las ha modificado, no debe tener problemas.

4.7.1.14. Existen muchos ports y es difícil encontrar el que quiero. ¿Existe en algún lado una lista de los ports disponibles?

Vea el fichero INDEX, localizado en /usr/ports. Si desea, también puede buscar en la Colección de Ports por medio de una palabra clave. Por ejemplo, puede encontrar ports relevantes al lenguaje de programación LISP usando:

% cd /usr/ports
% make search key=lisp

4.7.1.15. Deseo instalar el port foo pero de repente el sistema se detuvo y comenzo a compilar el port bar. ¿Qué esta pasando?

El port foo necesita algo del port bar -- por ejemplo, si foo utiliza gráficos, es posible que bar cuente con librerías con rutinas para procesar gráficos. O bien bar puede ser una herramienta necesaria para compilar el port foo.

4.7.1.16. He instalado el programa grizzle desde los ports y francamente es un desperdicio de espacio en disco. Quiero eliminarlo, pero no se donde se instalaron sus ficheros. ¿Alguna pista?

No hay problema, simplemente teclee:

# pkg_delete grizzle-6.5

Otra alternativa es teclear:

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

4.7.1.17. Aguarda un momento, ¿Se supone que uno debe saber el numero de versión para usar este comando? Hablando en serio, no esperas que recuerde todo esto, ¿o si?

No del todo, lo puede saber haciendo:

# pkg_info -I 'grizzle*'
Information for grizzle-6.5:
grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up
arcade game.

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

4.7.1.18. Hablando de espacio en disco, el directorio de ports parece que ocupa mucho espacio. ¿Es seguro eliminar algo de este directorio?

Asi es, si ha instalado un programa y esta seguro de que ya no necesita el código fuente, no hay una razón para contar con él. La forma más segura de hacer esto es:

# cd /usr/ports
# make clean

este comando revisará todos los subdirectorios, y procederá a eliminar todo lo que encuentre, salvo los esqueletos del port.

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

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


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

Si, si esta totalmente seguro de que ha terminado con ellos, también los puede eliminar. Estos se pueden eliminar manualmente, o bien usando el comando make distclean.

4.7.1.20. Me gusta contar con muchos, muchos programas para jugar con ellos. ¿Existe una forma de instalar todos los ports en un solo paso?

Simplemente haga:

# cd /usr/ports
# make install

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

4.7.1.21. OK, he intentado esto, pero como supuse que tomaria mucho tiempo, lo deje corriendo y me fui a dormir. En la mañana al ver mi computadora, solo había terminado tres ports y medio. ¿He hecho algo incorrectamente?.

No, el problema es que algunos ports requieren preguntarle cosas que no podemos contestar por usted (por ejemplo; ``¿En qué tipo de papel desea imprimir, en A4 o en Carta?''), y requieren de alguien que les dé respuesta.

4.7.1.22. Realmente no me interesa pasar todo el dí frente al monitor. ¿Alguna mejor idea?

OK, haga lo siguiente antes de irse a la cama/trabajo/el parque local:

# cd /usr/ports
# make -DBATCH install

Con esta opción se instalarán todos los ports que no requieren intervención del usuario. Una vez que regrese, haga:

# cd /usr/ports
# make -DINTERACTIVE install

para terminar el trabajo.

4.7.1.23. En mi trabajo usamos frobble, que se encuentra la Colección de Ports, pero lo hemos editado un poco, para que se ajuste a nuestras necesidades. ¿Existe alguna forma de hacer nuestro paquete, para poder distribuirlo más facilmente en nuestros sitios?.

No hay problema, asumiendo que usted sabe como crear los parches de sus cambios, puede hacer lo siguiente:

# cd /usr/ports/algunlugar/frobble
# make extract
# cd work/frobble-2.8
[Aplicar sus parches]
# cd ../..
# make package

4.7.1.24. Esto de los ports es muy inteligente. Estoy deseperado por saber ¿Cúal es el secreto?

No hay secreto, simplemente vea los ficheros bsd.port.mk y bsd.port.subdir.mk que se localizan en /usr/ports/Mk/.

(Los lectores que tiene aversión a los scripts de shell, se les aconseja abstenerse de ver los ficheros de este directorio.)


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

Si se encuentra con port que no trabaj como lo esperaba, existen varias alternativas, que incluyen:

  1. Arreglelo!! El libro Porter's Handbook incluye información detallada de la infraestructura de los "Ports", de tal forma que pueda arreglar los ports que ocasionalmente estan defectuosos o inclusive para crear y enviar su propio port!

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

  3. Descargue el paquete de un servidor FTP cercano. La colección ``maestra'' de paquetes se localiza en ftp.FreeBSD.org en el directorio de paquetes, pero asegurese primero de verificar en un servidor réplica (mirror)!. Es mas seguro que estos trabajen, a que tener que compilar las fuentes, también es más rápido. Use el programa pkg_add(1) para instalar paquetes en su sistema.


Capítulo 5. El sistema X Window

Actualizado al servidor X11 de X.Org por Ken Tom y Marc Fonvieille.

5.1. Sinopsis

FreeBSD usa X11 para proporcionar una potente interfaz gráfica. X11 es una implementación de código abierto del sistema X Window que incluye Xorg y XFree86. En las versiones de FreeBSD hasta FreeBSD 4.10-RELEASE y FreeBSD 5.3-RELEASE el sistema X window que se instalará por defecto es XFree86, el servidor X11 distribuido por el proyecto XFree86. Despues de FreeBSD 5.3-RELEASE el sistema X Window ha cambiado a Xorg, el servidor X11 distribuido por la fundación X.Org.

Este capítulo cubre la instalación y configuración de X11 poniendo énfasis en Xorg.

Para mas información del hardware de vídeo que X11 soporta consulte la página web de Xorg o XFree86.

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

  • Los diferentes componentes del sistema X Window y como interoperan.

  • Cómo instalar y configurar X11.

  • Cómo instalar y usar diferentes gestores de ventanas.

  • Cómo usar fuentes (tipos de letra) TrueType® en X11.

  • Como preparar su sistema para iniciar la sesión de forma gráfica (XDM).

Antes de leer este capítulo debería:

  • Saber cómo instalar software de terceros (Capítulo 4).

Nota: Este capítulo cubre la instalación y configuración de los servidores X11 Xorg y XFree86. La mayoría, ficheros de configuración, comandos y sintaxis son idénticos. En los casos en que haya diferencias se mostrará la sintaxis de Xorg y XFree86.


5.2. Entender X

Usar X por primera vez puede resultar chocante para alguien familiarizado con otros entornos gráficos, como Microsoft Windows o Mac OS®.

No es necesario entender todos los detalles de los diferentes componentes de X y como interaccionan, un conocimiento básico hace posible obtener mayor provecho de la potencia de X.


5.2.1. ¿Por qué X?

X no es el primer sistema de ventanas escrito para UNIX pero es el más popular de ellos. El equipo original que desarrolló X trabajó en otro sistema de ventanas antes de escribir X. Ese sistema se llamó ``W'' (de ``Window'' que significa ventana en inglós). X era solo la siguiente letra en el alfabeto Romano.

X se puede llamar ``X'' ``X Window System'', ``X11'' y de otras formas. También es posible usar el termino ``X Windows'' para describir X11 si lo que quiere es ofender a algunas personas; si quiere saber más sobre esto consulte X(7).


5.2.2. El modelo cliente/servidor de X

X fue diseñado desde el principio pensando en redes y adoptó un modelo ``cliente-servidor''.

En el modelo de X el ``servidor X'' se ejecuta sobre el ordenador que tiene el teclado, monitor y ratón. El servidor es responsable de manejar la pantalla, la entrada de datos a través del teclado, el ratón, etc. Cada aplicación X (como una XTerm o Netscape®) es un ``cliente''. Un cliente manda mensajes al servidor como ``Por favor dibuja una ventana en estas coordenadas'' y el servidor devuelve mensajes como ``El usuario ha pulsado el botón OK''.

Sí solo hay un ordenador involucrado, como en una casa o una pequeńa oficina, el servidor X y los clientes X seguramente correran en el mismo ordenador. Sin embargo, es perfectamente posible correr el servidor X en un ordenador de escritorio menos potente, y correr las aplicaciones X (los clientes) en, por ejemplo, la potente y cara máquina que sirve la oficina. En este panorama la comunicación entre el cliente X y el servidor tiene lugar a través de la red.

Esto confunde a algunas personas, porque la terminología es exactamente opuesta a lo que ellos esperan. Ellos esperan que el ``servidor X'' sea la máquina grande que hay en el sótano y que el ``cliente X'' sea la máquina de su mesa.

Es importante que recuerde que el servidor X es la máquina con el monitor y el teclado y que los clientes X son los programas que muestran las ventanas.

No hay nada en el protocolo que obligue a que el cliente y el servidor tengan que usar el mismo sistema operativo o incluso que estén en el mismo ordenador. Es posible ejecutar un servidor X en Microsoft Windows o en el Mac OS de Apple; de hecho hay varias aplicaciones libres y comerciales que hacen exactamente eso.

A partir de FreeBSD 5.3-RELEASE, el servidor X que se instala con FreeBSD es Xorg que es libre y se distribuye bajo una licencia muy similar a la de FreeBSD. También hay servidores X comerciales para FreeBSD.


5.2.3. El gestor de ventanas

La filosofía de diseño de X es más parecida a la de UNIX: ``herramientas, no política''. Esto significa que X no impone cómo una tarea debe hacerse. En lugar de eso proporciona herramientas al usuario y es responsabilidad suya decidir qué hacer con ellas.

Esta filosofía se extiende a X; no impone como deben verse las ventanas en la pantalla, cómo moverlas con el ratón, que teclas deberían usarse para moverse entre ventanas (por ejemplo Alt+Tab, en Microsoft Windows), cómo deben ser las barras de título en cada ventana, si tienen o no botón de cierre, etc.

En lugar de eso X delega esta responsabilidad en una aplicación llamada ``gestor de ventanas''. Hay docenas de gestores de ventanas disponibles para X: AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker, etc. Cada uno de estos gestores de ventanas tiene un aspecto diferente; algunos soportan ``escritorios virtuales''; otros permiten personalizar las teclas para manejar el escritorio; otros tienen un botón de ``Inicio'' o algo similar; otros tienen ``diseńos modificables'', permitiendo un cambio completo del aspecto mediante un nuevo diseńo. Estos gestores de ventanas, y muchos otros, están disponibles en la categoría x11-wm de los ports.

Además, los entornos de escritorio KDE y GNOME tienen sus propios gestores de ventanas integrados con el escritorio.

Cada gestor de ventanas tiene diferentes mecanismos de configuración; en algunos debe escribir el fichero de configuración a mano, otros tienen herramientas gráficas para la mayor parte de la configuración; y al menos uno (Sawfish) tiene un fichero de configuración escrito en el lenguaje Lisp.

Política de foco: Otra responsabilidad del gestor de ventanas es la ``política de foco'' del ratón. Todos los sistemas de ventanas necesitan algo para elegir una ventana activa que recibirá los eventos y también debieran indicar visiblemente que ventana esta activa.

Una política familiar podría ser ``clic-para-foco''. Este es el modelo utilizado por Microsoft Windows, en el que una ventana se convierte en activa al recibir un clic del ratón.

X no tiene ninguna política de foco. En lugar de eso el gestor de ventanas controla qué ventana tiene el foco en todo momento. Los diferentes gestores de ventanas tienen diferentes políticas de foco. Todos soportan la política ``clic-para-foco'' y la mayoría de ellos también soportan otros métodos.

Las políticas de foco más populares son:

el-foco-sigue-al-ratón

La ventana que esta bajo el puntero del ratón es la ventana que tiene el foco. No es necesario que la ventana esté encima de las demás ventanas. El foco se cambia al apuntar a otra ventana, aunque no es necesario hacer clic en ella.

foco-descuidado

Esta política es una pequeńa extensión de ``el-foco-sigue-al-ratón''. Con ``el-foco-sigue-al-ratón'', si el ratón se mueve sobre la ventana raíz (o fondo) entonces ninguna ventana tiene el foco y las pulsaciones del teclado se perderán. Con la política ``foco-descuidado'' el foco sólo cambia cuando el cursor entra en una nueva ventana y no cuando sale de la ventana actual.

click-para-foco

La ventana activa se selecciona con un clic del ratón. La ventana se puede ``levantar'' y aparecer delante de las demás ventanas. Todas las pulsaciones de teclado serán redirigidas a esa ventana aunque el cursor se mueva a otra ventana.

Muchos gestores de ventanas soportan otras políticas o variaciones de estas. Consulte la documentación del propio gestor de ventanas.


5.2.4. Widgets

La idea de X es hacer herramientas en vez de política y se extiende a los ``widgets'' que se ven en la pantalla de cada aplicación.

``Widget'' es un término para todos los objetos en el interfaz de usuario que pueden ser pulsados con el ratón o manipulados de alguna forma: botones, ``check boxes'', iconos, listas, etc. Microsoft Windows los llama ``controles''.

Microsoft Windows y Mac OS de Apple tienen una política de ``widgets'' muy rígida. Se supone que los desarrolladores de aplicaciones comparten el aspecto. En X no se consideró imponer un estilo gráfico o un conjunto de ``widgets'' al que adherirse.

Como resultado no se puede esperar que las aplicaciones de X tengan un aspecto común. Hay varios conjuntos de ``widgets'' y variaciones muy populares como el ``widget'' Athena creado en el MIT, Motif® (donde los ``widgets'' de Microsoft Windows fueron modelados, con todos los bordes biselados y tres tonos de gris), OpenLook, y otros.

Las aplicaciones más modernas de X hoy en día usan un conjunto de ``widgets'' con mejor aspecto, o Qt, usado por KDE, o GTK+, usado por el proyecto GNOME. Se intenta que el aspecto del escritorio de UNIX sea parecido, lo que hace la vida más fácil al usuario novato.


5.3. Instalar X11

Se puede instalar Xorg o XFree86 en FreeBSD. A partir de FreeBSD 5.3-RELEASE Xorg es la implementación X11 por defecto para FreeBSD. Xorg es el servidor X11 de la distribución X11R6.7 lanzado por la fundación X.Org. X11R6.7 esta basado en el código de XFree86 4.4RC2 y X11R6.6. La fundación X.Org lanzó X11R6.7 en abril de 2004.

Para compilar e instalar Xorg desde la colección de ports:

# cd /usr/ports/x11/xorg 
# make install clean

Nota: Para compilar e instalar Xorg completamente, asegúrese de tener como mínimo 2GB de espacio disponible.

Para compilar e instalar XFree86 4.X desde la colección de ports:

# cd /usr/ports/x11/XFree86-4
# make install clean

También, X11 se puede instalar directamente desde paquetes. También existen paquetes binarios para usar con la herramienta pkg_add(1). Cuando se usa la opción de bajar binarios de pkg_add(1) la versión del paquete no se tiene que especificar. pkg_add(1) descargará automáticamente la última versión de la aplicación.

Así que para descargar e instalar el paquete de Xorg simplemente escriba:

# pkg-add -r XFree86

Nota: Los ejemplos anteriores instalará la distribución completa de X11 incluyendo servidores, clientes, ``fuentes'', etc. También hay paquetes separados y ports para las diferentes partes de X11.

El resto de este capítulo explicará cómo configurar X11 y cómo instalar un entorno de escritorio productivo.


5.3.1. Cómo Sustituír XFree86 por Xorg

Como con cualquier port debería usted consultar el fichero /usr/ports/UPDATING para ver los cambios. En este fichero se incluyen instrucciones para convertir su sistema de XFree86 a Xorg.

Use CVSup para actualizar su árbol de ports antes de intentar cualquier migración de este estilo. También necesitará instalar sysutils/portupgrade.

Ańada en su /etc/make.conf la variable X_WINDOW_SYSTEM=xorg. Esto asegura que su sistema sepa que sistema X window se esta usando. La antigua variable XFREE86_VERSION esta obsoleta y se ha reemplazado con la variable X_WINDOW_SYSTEM.

Hecho esto use los siguientes comandos:

# pkg_delete -f /var/db/pkg/imake-4* /var/db/pkg/XFree86-*
# cd /usr/ports/x11/xorg
# make install clean
# pkgdb -F

El comando pkgdb(1) es parte del software portupgrade y actualizará varias dependencias del paquete.

Nota: Si desea compilar Xorg al completo asegúrese de tener como mínimo 2GB de espacio disponible.


5.4. Configuración de X11

Escrito por Christopher Shumway.

5.4.1. Antes de empezar

Antes de configurar X11 necesitará la siguiente información sobre el sistema:

  • Especificaciones del monitor

  • Chipset de la tarjeta de vídeo

  • Memoria de la tarjeta de vídeo

X11 usa las especificaciones del monitor para determinar la resolución y la frecuencia de refresco a la que funcionará. Estas especificaciones se pueden obtener de la documentación que viene con el monitor o de la web del creador. Se necesitan dos rangos de números: la frecuencia de refresco horizontal y vertical.

El chipset de la tarjeta de vídeo define que controlador utilizará X11 para hablar con el hardware gráfico. Con la mayoría de chipsets es posible detectarlo automáticamente pero es útil saberlo en caso de que la detección automática no funcione de forma correcta.

La memoria de la tarjeta gráfica determina la resolución y la profundidad de color a la que el sistema funcionará. Es importante saberlo, así el usuario conoce las limitaciones del sistema.


5.4.2. Configurar X11

La configuración de X11 es un proceso de varios pasos. El primer paso es generar una configuración inicial. Como super usuario simplemente ejecute:

# Xorg -configure

En el caso de XFree86 escriba:

# XFree86 -configure

Esto generará el esqueleto del fichero de configuración de X11 en el directorio /root con el nombre xorg.conf.new (si usted usó su(1) o hizo un login directo afecta a la variable $HOME). En XFree86 este fichero de configuración se llama XF86Config.new. El programa X11 intentará encontrar el hardware gráfico del sistema y escribirá el fichero de configuración que cargará los controladores adecuados que se han detectado.

El siguiente paso es probar la configuración para verificar que Xorg puede trabajar con el hardware gráfico del sistema. Escriba:

# Xorg -config xorg.conf.new

Los usuarios de XFree86 deben escribir:

# XFree86 -xf86config XF86Config.new

Si aparece una rejilla negra y gris junto con el cursor del ratón de X la configuración ha tenido éxito. Para salir de la prueba pulse Ctrl+Alt+Retroceso a la vez.

Nota: Si el ratón no funciona tendrá que configurarlo antes de continuar. Consulte Sección 2.9.10 en el capítulo de instalación de FreeBSD.

Después, modifique xorg.conf.new (o XF86Config.new si está utilizando XFree86) a su gusto. Abra el fichero con un editor de texto como emacs(1) o ee(1). Primero ańada las frecuencias del monitor. Estas suelen estar expresadas en frecuencia de refresco horizontal y vertical. Estos valores se ańaden al fichero xorg.conf.new en la sección "Monitor":

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
        HorizSync    30-107
        VertRefresh  48-120
EndSection

Las palabras HorizSync y VertRefresh podrían no existir en el fichero de configuración. Si no existen es necesario ańadirlas con la frecuencia horizontal correcta puesta después de la palabra HorizSync y la frecuencia vertical correcta después de la palabra VertRefresh. En el ejemplo anterior se pusieron las frecuencias del monitor.

X permite usar las características DPMS (Energy Star) con los monitores que lo soportan. El programa xset(1) controla el ``timeout'', y puede forzar los modos ``standby'', suspendido, o apagado. Si desea habilitar las características DPMS para su monitor tendrá que ańadir la siguiente línea en la sección monitor:

        Option       "DPMS"

Mientras el fichero de configuración xorg.conf.new (o XF86Config.new) sigue abierto en el editor seleccione la resolución por defecto y la profundidad de color deseada. Esto se define en la sección "Screen":

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Viewport  0 0
                Depth     24
                Modes     "1024x768"
        EndSubSection
EndSection

La palabra DefaultDepth describe la profundidad de color a la que arrancará por defecto. Esto puede sobrescribirse con el argumento -bpp de Xorg(1) (o XFree86(1)). La palabra Modes describe la resolución a la que funcionará para esa profundidad de color. Observe que sólo los modos estándar VESA están soportados por el hardware gráfico. En el ejemplo anterior la profundidad de color es 24 bits por pixel. En esta profundidad de color la resolución aceptada es 1024 por 768 pixels.

Para acabar guarde el fichero de configuración y pruébelo usando el modo de prueba descrito anteriormente.

Nota: Una de las herramientas disponibles para ayudarle con el proceso de solución de problemas es el fichero de ``logs'', que contiene información de cada dispositivo al que el servidor X11 se conecta. Los ``logs'' (o bitácoras) de Xorg se pueden encontrar en /var/log/Xorg.0.log (los ``logs'' de XFree86 se pueden encontrar en XFree86.0.Log). El nombre exacto del fichero de ``log'' puede variar entre Xorg.0.log y Xorg.8.log y así sucesivamente.

Si todo es correcto el fichero de configuración tiene que instalarse en un lugar donde Xorg(1) (o XFree86(1)) lo encuentre. Este lugar es normalmente /etc/X11/xorg.conf o /usr/X11R6/etc/X11/xorg.conf (para XFree86 es /etc/X11/XF86Config o /usr/X11R6/etc/X11/XF86Config).

# cp xorg.conf.new /etc/X11/xorg.conf

Para XFree86:

# cp XF86Config.new /etc/X11/XF86Config

El proceso de configuración de X11 ahora está completo. Para arrancar XFree86 4.X con startx(1), instale el port x11/wrapper.   Xorg incluye el c´digo del ``wrapper'' y no necesita que se instale el port del ``wrapper''. El servidor X11 también se puede arrancar mediante xdm(1).

Nota: También hay una herramienta gráfica para configurar xorgcfg(1) ( xf86cfg(1) para XFree86) que viene con la distribución X11. Permite definir la configuración de forma interactiva y elegir los controladores y las opciones adecuadas. Este programa también se puede usar desde consola con el comando xorgcfg -textmode. Para mas información consulte las páginas del manual xorgcfg(1) y xf86cfg(1).

También existe una herramienta llamada xorgconfig(1) ( xf86config(1) para XFree86). Este programa es una utilidad de consola que es menos atractiva para el usuario pero que puede funcionar en situaciones donde las otras herramientas no sirven.


5.4.3. Configuración avanzada

5.4.3.1. Configuración de chipsets gráficos Intel® i810

Para configurar los chipsets integrados Intel i810 es necesario el interfaz de programación AGP agpart para que X11 pueda usarla. El controlador agp(4) viene con el kernel GENERIC desde 4.8-RELEASE y 5.0-RELEASE. En las versiones anteriores es necesario ańadir la siguiente línea:

device agp

en el fichero de configuración de su kernel y recompilarlo. Aunque quizá prefiera cargar el módulo del kernel agp.ko automáticamente con loader(8) al arrancar. Si es su caso simplemente ańada la siguiente línea a /boot/loader.conf:

agp_load="YES"

Si usted usa FreeBSD 4.X o alguna versión anterior es necesario crear el fichero de dispositivo para el interfaz de programación. Para crear el fichero de dispositivo AGP ejecute MAKEDEV(8) en el directorio /dev:

# cd /dev
# sh MAKEDEV agpart

Nota: En FreeBSD 5.X o posterior no necesita ejecutar este comando debido a que devfs(5) lo hace automáticamente.

Esto permitirá la configuración del hardware como si fuese cualquier otra tarjeta. Tenga en cuenta que en sistemas sin el controlador agp(4) compilado intentar cargarlo con kldload(8) no funcionará. Este controlador tiene que estar compilado en el kernel o cargarse en el arranque mediante /boot/loader.conf.

Si esta usando XFree86 4.1.0 (o superior) y obtiene mensajes sobre símbolos sin resolver como fbPictureInit, pruebe añadiendo la siguiente línea después de Driver "i810" en el fichero de configuración de X11:

Option "NoDDC"

5.5. Uso de ``fuentes'' en X11

Escrito por Murray Stokely.

5.5.1. Fonts Type1

Las ``fuentes'' que vienen por defecto con X11 no son ideales para las aplicaciones típicas. Las ``fuentes'' largas para presentaciones aparecen dentadas y con un aspecto poco profesional y las ``fuentes'' pequeñas en Netscape son prácticamente ilegibles. Sin embargo hay varias ``fuentes'' libres Type1 de alta calidad (PostScript®) que se pueden usar con X11. Por ejemplo las ``fuentes'' URW (x11-fonts/urwfonts) incluyen una versión de alta calidad de las fuentes estándar Type 1 (Times Roman®, (Helvetica®, (Palatino®, y muchas otras). Las Freefonts (x11-fonts/freefonts ) incluyen muchas más pero la mayoría están pensadas para usarse con software gráfico como el Gimp y no son lo bastante completas para usarse como ``fuentes'' de pantalla. Además X11 se puede configurar para usar ``fuentes'' TrueType con un esfuerzo mínimo. Para más detalles sobre esto consulte la página del manual X(7) o la sección de fuentes TrueType.

Para instalar las anteriores ``fuentes'' Type1 desde los ports ejecute los siguientes comandos:

# cd /usr/ports/x11-fonts/urwfonts
# make install clean

Proceda del mismo modo con las FreeFonts o cualesquiera otras. Para que el servidor X las detecte ańada la siguiente línea al fichero de configuración de las X en /etc/X11/ (xorg.conf para Xorg y XF86Config para XFree86):

FontPath "/usr/X11R6/lib/X11/fonts/URW/"

o bien desde la interfaz de comandos en una sesión X:

% xset fp+ /usr/X11R6/lib/X11/fonts/URW
% xset fp rehash

Esto funcionará hasta que la sesión X se cierre a menos que lo ańada a su fichero de inicio (~/.xinitrc para una sesión startx normal o ~/.xsession si hace login desde un gestor gráfico como XDM). Una tercera forma sería usando el nuevo fichero /usr/X11R6/etc/fonts/local.conf: mire la sección de anti-aliasing.


5.5.2. Fonts TrueType®

Tanto XFree86  4.X como Xorg se diseñaron para soportar ``fuentes'' TrueType. Hay dos módulos diferentes que pueden habilitar esta opción. El módulo freetype se usa en en este ejemplo porque es más consistente con el resto de ``back-ends'' de representación. Para habilitar el módulo freetype solo ańada la siguiente línea a la sección "Module" del fichero /etc/X11/xorg.conf o /etc/X11/XF86Config.

Load "freetype"

Para XFree86 3.3.X hace falta un servidor de ``fuentes'' TrueType separado. Normalmente se usa Xfstt para este propósito. Para instalar Xfstt, simplemente instale el port x11-server/Xfstt.

Ahora haga un directorio para las fuentes TrueType (por ejemplo /usr/X11R6/lib/X11/fonts/TrueType) y copie todas las fuentes TrueType en este directorio. Recuerde que las ``fuentes'' TrueType no se pueden coger directamente de un Macintosh®; tienen que estar en formato UNIX/MS-DOS/Windows para usarlas con X11. Una vez que los ficheros se hayan copiado en este directorio use ttmkfdir para crear un fichero fonts.dir, para que el representador de fuentes de X sepa que se han instalado estos ficheros nuevos. ttmkfdir esta disponible desde los ports de FreeBSD como x11-fonts/ttmkfdir.

# cd /usr/X11R6/lib/X11/fonts/TrueType
# ttmkfdir > fonts.dir

Ahora ańada el directorio TrueType a la ruta de ``fuentes''. Esto es igual que lo anteriormente descrito las ``fuentes'' Type1: ejecute:

% xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
% xset fp rehash

o ańada una línea FontPath al fichero xorg.conf (o XF86Config).

Esto es todo. Ahora Netscape, Gimp, StarOffice y el resto de aplicaciones X debieran reconocer las ``fuentes'' TrueType instaladas. Las fuentes muy pequeńas (como el texto en una pantalla con alta resolución viendo una página web) y las ``fuentes'' muy grandes (Dentro de StarOffice) se verán muchísimo mejor ahora.


5.5.3. Fonts Anti-Aliased

Actualizado por Joe Marcus Clarke.

Las ``fuentes anti-aliasing'' han estado disponibles en X11 desde XFree86 4.0.2. Aunque la configuración de las ``fuentes'' era incómoda antes de XFree86 4.3.0. A partir de XFree86 4.3.0 todas las ``fuentes'' de X11 que se encuentren en /usr/X11R6/lib/X11/fonts/ y ~/.fonts/ están disponibles automáticamente para aplicaciones que soporten Xft. No todas las aplicaciones soportan Xft pero muchas ya tienen soporte Xft. Ejemplos de aplicaciones que lo soportan son Qt 2.3 o superior (el ``toolkit'' del escritorio KDE), GTK+ 2.0 o superior (el ``toolkit'' del escritorio GNOME ) y Mozilla 1.2 o superior.

Para controlar qué ``fuentes'' son ``anti-aliasing'' o configurar las propiedades ``anti-aliasing'' crée (o edite, si ya existe) el fichero /usr/X11R6/etc/fonts/local.conf. Se pueden modificar diversas opciones avanzadas del sistema de fuentes Xft usando este fichero; esta sección describe solo algunas posibilidades simples. Para más detalles consulte fonts-conf(5).

Este fichero tiene que estar en formato XML. Preste especial atención a las mayúsculas y minúsculas y asegúrese de que las etiquetas están cerradas correctamente. El fichero empieza con la típica cabecera XML seguida de una definición DOCTYPE y después la etiqueta <fontconfig>:

        <?xml version="1.0"?>
        <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
        <fontconfig>
     

Como se ha dicho antes todas las fuentes en /usr/X11R6/lib/X11/fonts/ y en ~/.fonts/ están ya disponibles para las aplicaciones que soporten Xft. Si usted desea ańadir otro directorio además de estos dos árboles de directorios ańada una línea similar a esta en el fichero /usr/X11R6/etc/fonts/local.conf:

<dir>/path/to/my/fonts</dir>

Después de ańadir las nuevas ``fuentes'', y en especial los nuevos directorios de ``fuentes'', debería usted ejecutar el siguiente comando para reconstruir la caché de ``fuentes'':

# fc-cache -f

Las ``fuentes anti-aliasing'' hacen los bordes ligeramente borrosos, lo que hace que el texto muy pequeńo sea más legible y elimina los escalones del texto grande pero puede causar fatiga visual aplicada al texto normal. Para excluir las ``fuentes'' de menos de 14 puntos del ``anti-aliasing'' incluya las siguientes líneas:

        <match target="font">
            <test name="size" compare="less">
                <double>14</double>
            </test>
            <edit name="antialias" mode="assign">
                <bool>false</bool>
            </edit>
        </match>
        <match target="font">
            <test name="pixelsize" compare="less" qual="any">
                <double>14</double>
            </test>
            <edit mode="assign" name="antialias">
                <bool>false</bool>
            </edit>
        </match>

El espacio entre algunas ``fuentes'' también podría ser inapropiado con ``anti-aliasing''. Esto parece un problema con KDE en particular. Una posible solución para esto es forzando que el espacio entre las ``fuentes'' sea 100. Ańada las siguientes líneas:

       <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>fixed</string>
             </test>
             <edit name="family" mode="assign">
                 <string>mono</string>
             </edit>
          </match>
          <match target="pattern" name="family">
              <test qual="any" name="family">
                  <string>console</string>
              </test>
              <edit name="family" mode="assign">
                  <string>mono</string>
              </edit>
          </match>

(Esto selecciona los otros nombres comunes para ``fuentes fixed'' como "mono") y después ańada:

         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>mono</string>
             </test>
             <edit name="spacing" mode="assign">
                 <int>100</int>
             </edit>
         </match>     

Algunas ``fuentes'', como Helvetica, podrían tener problemas con ``anti-aliasing''. Normalmente esto se manifiesta como una ``fuentes'' que parece cortada verticalmente por la mitad. En el peor de los casos podría causar que el funcionamiento de aplicaciones como Mozilla se interrumpiese. Para evitar esto considere ańadir lo siguiente a local.conf:

         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>Helvetica</string>
             </test>
             <edit name="family" mode="assign">
                 <string>sans-serif</string>
             </edit>
         </match>       

Una vez que haya terminado de editar local.conf asegúrese de que el fichero termina con la etiqueta </fontconfig>. No hacer esto causará que sus cambios sean ignorados.

Las ``fuentes'' por defecto que vienen con X11 no son las ideales para ``anti-aliasing''. Unas mucho mejores pueden encontrarse en el port x11-fonts/bitstream-vera. Este port instalará el fichero /usr/X11R6/etc/fonts/local.conf si aun no se ha creado. Si el fichero existe el port creara el fichero /usr/X11R6/etc/fonts/local.conf-vera. Combine el contenido de este fichero con /usr/X11R6/etc/fonts/local.conf y las fuentes Bitstream reemplazarán automáticamente las ``fuentes'' por defecto con X11 Serif, Sans Serif y Monospaced.

Por si esto fuera poco los usuarios pueden ańadir sus propios ajustes mediante sus ficheros personales .fonts.conf. Los usuarios que deseen hacerlo deberán crear un fichero ~/.fonts.conf. Este fichero tiene que estar también en formato XML.

Un último punto: con una pantalla LCD sería deseable un muestreo de subpixel. Esto básicamente trata los componentes (separados horizontalmente) rojo, verde y azul para mejorar la resolución horizontal; los resultados pueden ser impresionantes. Para habilitar esto ańada la siguiente línea al fichero local.conf:

        <match target="font">
            <test qual="all" name="rgba">
                <const>unknown</const>
            </test>
            <edit name="rgba" mode="assign">
                <const>rgb</const>
            </edit>
        </match>
     

Nota: Dependiendo del tipo de pantalla rgb podría ser bgr o vrgb o vbgr: experimente y elija cual funciona mejor.

Una vez concluido el proceso ``anti-aliasing'' se debería activar la próxima vez que arranque X, aunque los programas necesitan saber como utilizarlo. En este momento el ``toolkit'' Qt sabe, así que KDE entero puede usar ``fuentes anti-aliasing'' (consulte Sección 5.7.3.2 en KDE para más detalle). GTK+ y GNOME también pueden usar ``fuentes anti-aliasing'' mediante ``Font'' (consulte Sección 5.7.1.3 para más detalle). Por defecto Mozilla 1.2 o superior usará automáticamente ``fuentes anti-aliasing''. Para deshabilitarlas recompile Mozilla usando el parámetro -DWITHOUT_XFT.


5.6. El gestor de pantalla X

Escrito por Seth Kingsley.

5.6.1. Descripción

El gestor de pantalla X (XDM) es una parte opcional del sistema X Window que se usa para el manejo de sesiones. Esto es útil para diferentes situaciones tales como ``Terminales X'' con escritorios mínimos y grandes servidores de red. Como X Window System es independiente del protocolo y de la red hay muchas posibles configuraciones para ejecutar clientes y servidores X en diferentes equipos conectados a una red. XDM da un interfaz gráfico para elegir a qué pantalla se quiere conectar y pedir la información de autenticación como el nombre de usuario y le contraseńa.

Piense en XDM como proveedor de la misma funcionalidad que la utilidad getty(8) (consulte Sección 20.2.1 para más detalles). Esto quiere decir que se encarga de los ingresos del sistema en la pantalla a la que está conectado y arranca el gestor de sesiones para el usuario (normalmente un gestor de ventanas X). XDM entonces espera a que este programa termine, seńalando que el usuario ha terminado y que se debería desconectar de la pantalla. En este punto XDM puede mostrar las pantallas de entrada al sistema y de selección de pantalla para que el siguiente usuario intente acceder al sistema.


5.6.2. Uso de XDM

El dæmon XDM se encuentra en /usr/X11R6/bin/xdm. Este programa se puede arrancar en cualquier momento como root y empezará a gestionar la pantalla X en la máquina local. Si se quiere que XDM arranque cada vez que la máquina se encienda puede hacerlo añadiendo una entrada a /etc/ttys. Para más información sobre el formato y uso de este fichero consulte Sección 20.2.1.2. Hay una línea en el fichero /etc/ttys por defecto para arrancar el dæmon XDM en una terminal virtual:

ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

Por defecto esta entrada esta deshabilitada; para habilitarla cambie el campo 5 de off a on y reinicie init(8) usando los pasos descritos en Sección 20.2.1.1. El primer campo es el nombre de la terminal que este programa manejará: ttyv8. Esto significa que XDM empezará a ejecutarse en la terminal virtual número 9.


5.6.3. Configurar XDM

El directorio de configuración de XDM esta en /usr/X11R6/lib/X11/xdm. En este directorio hay varios ficheros usados para cambiar el comportamiento y la apariencia de XDM. Normalmente encontrará estos ficheros:

Fichero Descripción
Xaccess Reglas de acceso para clientes.
Xresources Recursos de X por defecto.
Xservers Lista de pantallas locales y remotas a gestionar.
Xsession ``script'' por defecto para el acceso al sistema.
Xsetup_* ``script'' para lanzar aplicaciones antes del acceso al sistema.
xdm-config Configuración de todas las pantallas de este equipo.
xdm-errors Errores generados por el programa servidor.
xdm-pid El ID de proceso del XDM que está funcionando.

En este directorio también hay unos cuantos programas y ``scripts'' usados para arrancar el escritorio cuando XDM se está ejecutando. El objetivo de cada uno de estos ficheros será descrito brevemente. La sintaxis exacta y el uso de todos estos ficheros se describe en xdm(1).

La configuración por defecto es una simple ventana rectangular de acceso al sistema con el nombre de la máquina en la parte superior en un tipo de letra grande y ``Login:'' y ``Password:'' debajo. Este es un buen punto para aprender a cambiar el aspecto de las pantallas de XDM.


5.6.3.1. Xaccess

El protocolo para conectar con las pantallas controlada por XDM se llama X Display Manager Connection Protocol (XDMCP). Este fichero es un conjunto de reglas para controlar las conexiones XDMCP desde otros equipos. Por defecto permite a cualquier cliente conectar pero eso no importa a menos que xdm-config se cambie para escuchar conexiones remotas.


5.6.3.2. Xresources

Este es el fichero de opciones por defecto para el selector de pantalla y acceso al sistema. Aquí es donde se puede modificar la apariencia del programa de ``login''. El formato es idéntico al fichero de opciones por defecto descrito en la documentación de X11.


5.6.3.3. Xsession

Este es el ``script'' de sesión que por defecto XDM arrancará después de que el usuario acceda al sistema. Normalmente cada usuario tendrá una versión personalizada del ``script'' de sesión en ~/.xsession que sobreescribe el ``script'' por defecto.


5.6.3.4. Xsetup_*

Estos se arrancarán automáticamente antes de que se muestre el interfaz de selección o de acceso al sistema. Hay un ``script'' por cada gestor de ventanas disponible llamados Xsetup_ seguido por el número de pantalla local (por ejemplo Xsetup_0). Normalmente estos ``scripts'' arrancan uno o dos programas en segundo plano, por ejemplo xconsole.


5.6.3.5. xdm-config

Este fichero contiene las opciones por defecto aplicables a todas las pantallas que gestiona esta instalación.


5.6.3.6. xdm-errors

Este fichero contiene la salida de los servidores X que XDM intente arrancar. Si alguna pantalla que XDM intente arrancar se cuelga por alguna razón este es un buen sitio para buscar los mensajes de error. Estos mensajes también se escriben en el fichero ~/.xsession-errors del usuario en cada sesión.


5.6.4. Ejecutar un servidor de pantalla a través de la red

Para que otros clientes puedan conectar al servidor de pantalla edite las reglas de acceso y habilite la escucha en la conexión. Por defecto tiene valores restrictivos. Para hacer que XDM escuche conexiones primero comente una línea en el fichero xdm-config:

! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort:     0

y después reinicie XDM. Recuerde que los comentarios en los ficheros de opciones por defecto comienzan con el carácter``!'' en vez del típico ``#''. Sería deseable usar accesos de control mas restrictivos. Mire las opciones de ejemplo en Xaccess, y la página del manual xdm(1).


5.6.5. Alternativas a XDM

Hay algunas alternativas al programa por defecto XDM. Una de ellas, kdm, (que se incluye con KDE) se describe después en este capítulo. kdm ofrece muchas ventajas visuales y funcionalidad para permitir a los usuarios elegir su gestor de ventanas en el momento del acceso al sistema.


5.7. Entornos de escritorio

Escrito por Valentino Vaschetto.

Está sección describe los diferentes entornos de escritorio disponibles para X en FreeBSD. Un ``entorno de escritorio'' puede ser cualquier cosa que vaya desde un simple gestor de ventanas hasta una completa ``suite'' de aplicaciones de escritorio tales como KDE o GNOME.


5.7.1. GNOME

5.7.1.1. Sobre GNOME

GNOME es un entorno de escritorio amigable que permite a los usuarios una configuración fácil de sus sistemas. GNOME incluye un panel (para iniciar las aplicaciones y mostrar su estado), un escritorio (donde pueden colocarse los datos y las aplicaciones), un conjunto de herramientas y aplicaciones de escritorio estándar y un conjunto de convenciones para facilitar la creación de aplicaciones que sean consistentes y colaboren unas con otras. Los usuarios de otros sistemas operativos o entornos pueden sentirse como en casa utilizando el poderoso entorno gráfico GNOME. Encontrará más información sobre GNOME en FreeBSD en la página del Proyecto FreeBSD GNOME.


5.7.1.2. Instación de GNOME

La manera más sencilla de instalar GNOME es escogerlo en el menú ``Desktop Configuration'' durante el proceso de instalación de FreeBSD tal y como se describe en Sección 2.9.13 del capítulo 2. También puede instalarse fácilmente desde paquetes pre-compilados o desde la colección de ports:

Para instalar el paquete de GNOME desde la red, simplemente teclee:

# pkg_add -r gnome2

Para compilar GNOME a partir del código fuente utilice el árbol de ports:

# cd /usr/ports/x11/gnome2
# make install clean

Una vez GNOME esté instalado debe indicarle al servidor X como iniciar GNOME para convertirlo en el gestor de ventanas predeterminado. Sí dispone ya de un archivo .xinitrc personalizado simplemente sustituya la línea que inicia su actual gestor de ventanas por /usr/X11R6/bin/gnome-session. Si entonces no pasa nada extrańo con su fichero de configuración basta con que teclee:

% echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrc

Después teclee startx y debería iniciarse el entorno de escritorio GNOME.

Nota: Sí está utilizando un gestor de pantalla como XDM lo anterior no funcionará. Cree un archivo ejecutable .xsession con el mismo comando en él. Para hacerlo edite el archivo y sustituya el comando para iniciar su actual gestor de ventanas por /usr/X11R6/bin/gnome-session:

% echo "#!/bin/sh" > ~/.xsession
% echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession
% chmod +x ~/.xsession

Otra opción es configurar el gestor de pantalla para que permita seleccionar el gestor de ventanas durante el acceso; la sección de detalles de KDE explica como hacerlo para kdm, el gestor de pantalla de KDE.


5.7.1.3. ``Fonts Anti-aliased'' en GNOME

X11 soporta ``anti-aliasing'' a través de la extensión ``RENDER''. Gtk+ 2.0 y superiores (el ``toolkit'' utilizado por GNOME) disponen de esta funcionalidad. La configuración del ``anti-aliasing'' se describe en Sección 5.5.3. Una vez configurado el software es posible utilizar ``anti-aliasing'' en el entorno de escritorio GNOME. Sólamente vaya a Applications->Desktop Preferences->Font, y seleccione entre Best shapes, Best contrast, o Subpixel smoothing (LCDs). Para una aplicación Gtk+ que no forme parte del escritorio GNOME, establece la variable de entorno GDK_USE_XFT a 1 antes de iniciar el programa.


5.7.2. KDE


5.7.2.1. Sobre KDE

KDE es un entorno de escritorio contemporáneo y fácil de usar. Alguna de las cosas que KDE brinda al usuario son:

  • Un bello escritorio contemporáneo

  • Un escritorio completamente transparente en red

  • Un sistema de ayuda integrado que facilita un adecuado y consistente acceso a la ayuda durante el uso del escritorio KDE y sus aplicaciones

  • Un aspecto consistente de todas las aplicaciones KDE

  • Menús y barras de herramientas estándar, teclas programables, esquemas de color, etc.

  • Internacionalización: KDE está disponible en más de 40 idiomas

  • Un diálogo de configuración del escritorio centralizado y consistente

  • Un gran número de aplicaciones KDE útiles.

KDE posee una suite ofimática basada en la tecnología KDE ``KParts'' que consta de una hoja de cálculo, una aplicación para presentaciones, un organizador, un cliente de notícias y mucho más. KDE también viene con un navegador web llamado Konqueror, un sólido competidor frente a otros navegadores existentes en los sistemas UNIX. Puede encontrarse más información sobre KDE en el sitio web de KDE . Para información específica y recursos de KDE en FreeBSD consulte el sitio web del equipo FreeBSD-KDE.


5.7.2.2. Instalar KDE

Igual que con GNOME o cualquier otro entorno de escritorio la manera más fácil de instalar KDE es escogerlo en el menú ``Desktop Configuration'' durante el proceso de instalación de FreeBSD tal y como se describe en Sección 2.9.13 del capítulo 2. Una vez más el software puede ser fácilmente instalado desde un paquete binario o desde la colección de ports:

Para instalar el paquete binario KDE desde la red simplemente teclee:

# pkg_add -r kde

pkg_add(1) debería descargar automáticamente la última versión de la aplicación.

Si lo que desea es compilar KDE desde el código fuente utilice el árbol de ports:

# cd /usr/ports/x11/kde3
# make install clean

Después de haber instalado KDE debe indicarle al servidor X como iniciar esta aplicación para que se convierta en el gestor de ventanas por defecto. Esto se consigue editando el fichero .xinitrc:

% echo "exec startkde" > ~/.xinitrc

A partir de ahora cuando se llame al sistema X Window con startx el escritorio debería ser KDE.

Sí utiliza un gestor de pantalla, como por ejemplo xdm, la configuración es ligeramente diferente. En vez de lo antedicho edite el fichero .xsession. Las instrucciones para kdm se decribirán más adelante en este capítulo.


5.7.3. Más detalles sobre KDE

Ahora que KDE está instalado en el sistema muchas cosas se pueden descubrir mediante las páginas de ayuda o solamente seńalando y haciendo clic en los diversos menús. Los usuarios de Windows o Mac® deberían sentirse como en casa.

La mejor referencia para KDE es la documentación on-line. KDE viene con su propio navegador, Konqueror, docenas de aplicaciones útiles y una extensa documentación. El resto de esta sección trata sobre cuestiones técnicas que son difíciles de aprender mediante una exploración al azar.


5.7.3.1. El gestor de pantalla de KDE

El administrador de un sistema multiusuario puede desear ofrecer a sus usuarios la bienvenida con una pantalla de acceso gráfico. Puede utilizarse xdm tal y como se ha descrito anteriormente. Sin embargo KDE incluye una alternativa, kdm, diseńada para parecer atractiva e incluye más opciones durante el acceso. En concreto los usuarios pueden escoger fácilmente (vía menú) qué entorno de escritorio (KDE, GNOME, o cualquier otro) se ejecutará después de acceder al sistema.

Para empezar ejecute el panel de control KDE, kcontrol, como root. Generalmente se considera inseguro ejecutar el entorno X como root, así que puede ejecutar el gestor de ventanas como un usuario normal, para después abrir una terminal (por ejemplo xterm o sin ir más lejos konsole, incluido en KDE). Conviértase en root con su (el usuario debe estar presente en el grupo wheel en /etc/group) y entonces teclee kcontrol.

Haga clic en el icono de la izquierda con el nombre System, después en Login manager. A la derecha hay varias opciones de configuración que el manual de KDE explica detalladamente. Haga clic en sessions a la derecha. Luego haga clic en New type para ańadir varios gestores de ventanas y entornos de escritorio. Esto solo son etiquetas, así que puede poner KDE y GNOME en vez de startkde o gnome-session. Incluya una etiqueta failsafe.

Pruebe también con otros menús: son bonitos y se explican por sí mismos. Cuando haya terminado haga clic en Apply en la parte inferior y salga del panel de control.

Para asegurarse de que kdm entiende lo que las etiquetas (KDE, GNOME etc) significan edite los ficheros utilizados por XDM.

Nota: En KDE 2.2 esto ha cambiado: kdm ahora usa sus propios ficheros de configuración. Por favor, consulte la documentación de KDE 2.2 para más detalles.

En una terminal, como root, edite el fichero /usr/X11R6/lib/X11/xdm/Xsession. Hay una sección como esta hacia la parte central:

case $# in
1)
        case $1 in
        failsafe)
                exec xterm -geometry 80x24-0-0
                ;;
        esac
esac

Hay que ańadir unas pocas líneas a esta sección. Asumiendo que las etiquetas usadas fuesen ``KDE'' y ``GNOME'', use lo siguiente:

case $# in
1)
        case $1 in
        kde)
                exec /usr/local/bin/startkde
                ;;
        GNOME)
                exec /usr/X11R6/bin/gnome-session
                ;;
        failsafe)
                exec xterm -geometry 80x24-0-0
                ;;
        esac
esac

Para que el fondo de escritorio de KDE se mantenga a la hora de acceder al sistema los usuarios se debe ańadir la siguiente línea a /usr/X11R6/lib/X11/xdm/Xsetup_0:

/usr/local/bin/kdmdesktop

Ahora debe asegurarse de que kdm esté activado en /etc/ttys para que arranque en el siguiente inicio del sistema. Solo tiene que seguir las instrucciones de la sección anterior en XDM y cambie las entradas del programa /usr/X11R6/bin/xdm por /usr/local/bin/kdm.


5.7.3.2. ``Fonts anti-aliased''

X11 soporta ``anti-aliasing'' mediante su extensión ``RENDER'', y a partir de la versión 2.3, Qt (el ``toolkit'' usado por KDE) soporta esta extensión. La configuración de esto se describe en la Sección 5.5.3 en ``fuentes X11 antialiasing''. Así, con software al día, es posible usar ``fuentes anti-aliasing'' en el escritorio KDE. Solo vaya al menú de KDE y busque Preferences->Look and Feel->Fonts y haga clic en el ``check box'' Use Anti-Aliasing for Fonts and Icons. Para una aplicación que no forme parte de KDE es necesario poner la variable de entorno QT_XFT a true antes de arrancar el programa.


5.7.4. XFce

5.7.4.1. Sobre XFce

XFce es un entorno de escritorio basado en el ``toolkit'' GTK utilizado por GNOME pero es mucho más ligero y está pensado para aquellos que quieran un escritorio sencillo, eficiente y fácil de utlizar y configurar. Visualmente es muy parecido a CDE, que podemos encontrar en sistemas UNIX comerciales. Alguna de las caracterésticas de XFce son:

  • Un escritorio sencillo y fácil de utilizar

  • Completamente configurable vía ratón con arrastrar y soltar, etc

  • Panel principal similar al de CDE, con menos, ``applets'' y accesos directos a las aplicaciones

  • Gestor de ventanas integrado , gestor de ficheros, gestor de sonido, módulo de compatibilidad con GNOME, y otras mucho más.

  • Aspecto configurable (desde que utiliza GTK)

  • Rápido, ligero y eficiente: ideal para máquinas viejas/lentas o máquinas con limitaciones de memoria

Puede encontrarse más información sobre XFce en el sitio web de XFce.


5.7.4.2. Instalar XFce

En el momento de escribir este texto existe un paquete binario para XFce. Para instalarlo simplemente escriba:

# pkg_add -r xfce4

También puede compilarlo desde el código usando la colección de ports:

# cd /usr/ports/x11-wm/xfce4
# make install clean

Para indicar al servidor X que use XFce la próxima vez que arranque simplemente escriba lo siguiente:

% echo "/usr/X11R6/bin/startxfce4" > ~/.xinitrc

La próxima vez que arranque X XFce será el escritorio. Como antes, si se usa un gestor de pantalla como xdm cree un .xsession tal y como se ha descrito en la anterior sección en GNOME, pero con el comando /usr/X11R6/bin/startxfce4; Puede configurar el gestor de pantalla para permitir elegir el escritorio en el momento de acceder al sistema tal y como se ha explicado en esta sección en kdm.

II. Tareas comunes

Ahora que se han cubierto los esquemas básicos, parte del Handbook de FreeBSD cubre algunas de las características más usadas de FreeBSD:

  • Introducción a algunas de las aplicaciones de escritorio: navegadores, herramientas de productividad, visores de documentos, etc.

  • Introducción a algunas de las herramientas multimedia de FreeBSD.

  • Explicación de cómo crear un kernel de FreeBSD personalizado para obtener nuevas funcionalidades en el sistema.

  • Descripción en detalle del sistema de impresión tanto en entornos de escritorio como en impresoras conectadas en red.

  • Cómo ejecutar aplicaciones de Linux en FreeBSD.

Algunos de los capítulos recomiendan lecturas de capítulos anteriores, lo que se indica al inicio de cada capítulo.


Capítulo 6. Sonido

Contributed by Moses Moore.

6.1. Sinópsis

FreeBSD soporta una amplia variedad de tarjetas de sonido, lo que permite disfrutar de sonido de alta fidelidad en su sistema. Ésto incluye la posibilidad de grabar y reproducir archivos de audio tanto en los formatos MPEG Audio Layer 3 (MP3), WAV y Ogg Vorbis, así como muchos otros. La Colección de Ports de FreeBSD contiene también aplicaciones que le permitirán editar audio previamente grabado, añadir efectos de sonido y controlar dispositivos MIDI.

Tras leer éste capítulo usted debería saber:

  • Cómo identificar su tarjeta de sonido

  • Cómo configurar su sistema de modo que su tarjeta de sonido sea reconocida.

  • Confirmar el funcionamiento de su tarjeta usando herramientas de muestreo.

  • Cómo enfrentarse a problemas de configuración de sonido.

  • Cómo reproducir y crear archivos MP3.

  • Cómo convertir pistas de audio CD en archivos de datos.

Antes de leer éste capítulo debería:

  • Saber configurar e instalar un nuevo kernel (Capítulo 7).


6.2. Identificar el Dispositivo Correcto

Antes de empezar, debería conocer el modelo de su tarjeta, el chip que usa y si es PCI o ISA. FreeBSD soporta una amplia gama de tarjetas PCI e ISA. Si no encuentra su tarjeta en la siguiente lista consulte la página pcm(4) del manual. Ésta no es una lista completa pero incluye muchas de las tarjetas más comunes.

  • Crystal 4237, 4236, 4232, 4231

  • Yamaha OPL-SAx

  • OPTi931

  • Ensoniq AudioPCI 1370/1371

  • ESS Solo-1/1E

  • NeoMagic 256AV/ZX

  • Sound Blaster Pro, 16, 32, AWE64, AWE128, Live

  • Creative ViBRA16

  • Advanced Asound 100, 110, and Logic ALS120

  • ES 1868, 1869, 1879, 1888

  • Gravis UltraSound

  • Aureal Vortex 1 or 2

El driver a usar en el kernel depende del tipo de tarjeta que vaya a usar. La sección siguiente contiene información sobre qué añadir a la configuración del kernel que necesita.


6.2.1. Tarjetas Creative, Advance, y ESS Sound

Si tiene una de las siguientes tarjetas debe añadir:

device pcm

a su archivo de configuración del kernel. Si tiene una tarjeta ISA PnP también tendrá que añadir:

device sbc

Para una tarjeta ISA non-PnP añada:

device pcm
device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15

al archivo de configuración de su kernel. Los detalles de configuración de arriba son por defecto. Debería cambiar la IRQ u otros parámetros para hacerlos coincidir con su tarjeta. Vea la página sbc(4) del manual para más información.

Nota: La Sound Blaster Live no está soportada en FreeBSD 4.0 salvo que se instale un parche, cosa que está fuera del cometido de ésta sección. Recomendamos que se actualice a la última versión -STABLE antes de intentar usar ésta tarjeta.


6.2.2. Tarjetas Gravis UltraSound

Para una tarjeta PnP ISA, necesitará añadir:

device pcm
device gusc

al archivo de configuración de su kernel. Si tiene una ISA non-PnP necesitará añadir:

device pcm
device gus0 at isa? port 0x220 irq 5 drq 1 flags 0x13

al archivo de configuración de su kernel. Puede necesitar cambiar la IRQ u otro tipo de datos para que ajusten con su tarjeta. Vea la página gusc(4) del manual para más información.


6.2.3. Tarjetas Crystal Sound

Para tarjetas Crystal necesitará añadir:

device pcm
device csa

al archivo de configuración de su kernel.


6.2.4. Soporte Genérico

Para tarjetas PnP ISA o tarjetas PCI, necesitará añadir:

device pcm

al su archivo de configuración de su kernel. Si tiene una tarjeta ISA non-PnP que no tenga un ``bridge driver'' tendrá que añadir:

device pcm0 at isa? irq 10 drq 1 flags 0x0

a su archivo de configuración del kernel. Puede necesitar cambiar la IRQ u otros parámetros para que ajusten con su tarjeta.


6.2.5. Tarjetas de Sonido integradas

Algunos sistemas con dispositivos de sonido integrados en la placa base pueden requerir la siguiente opción en el fichero de configuración del kernel:

options PNPBIOS

6.3. Recompilar el Kernel

Una vez conseguido el archivo de configuración del kernel que necesita debe recompilar el kernel. Por favor consulte el capítulo Sección 7.3 del manual para más información.


6.4. Crear y Probar Nodos de Dispositivos

Tras reiniciar, acceda al sistema y escriba dmesg | grep pcm tal y como se muestra aquí:

# dmesg | grep pcm
pcm0: <SB16 DSP 4.11> on sbc0

La salida que muestre su sistema puede ser diferente. Si no hay dispositivos pcm en la salida del comando hay algún error en los pasos previos. Si le sucede ésto vuelva a su archivo de configuración del kernel y asegúrese de que ha elegido el dispositivo adecuado. Consulte la sección de problemas para opciones adicionales.

Si al ejecutar el comando anterior encontró pcm0 ejecute lo siguiente como root:

# cd /dev
# sh MAKEDEV snd0

Si encontró pcm1 haga igual que que en el paso anterior reemplazando snd0 con snd1.

Nota: Los comandos anteriores no van a crear dispositivos /dev/snd!

MAKEDEV creará un grupo de device nodes, incluyendo:

Dispositivo Descripción
/dev/audio dispositivo de audio compatible con SPARC
/dev/dsp Dispositivo para voz digital
/dev/dspW Como /dev/dsp pero con muestreo de 16 bits
/dev/midi Dispositivo midi de acceso Raw
/dev/mixer Dispositivo Mezclador
/dev/music Interfaz para secuenciador de nivel 2
/dev/sequencer Dispositivo secuenciador
/dev/pss Interfaz para dispositivos programables

Si todo ha ido bien debería tener una tarjeta de sonido funcionando. Si no es así lea la siguiente sección.


6.5. Problemas Comunes

6.5.1. ¡Recibo un error "unsupported subdevice XX" !
6.5.2. ¡Tengo un error "sb_dspwr(XX) timed out" !
6.5.3. ¡Tengo un error "bad irq XX"!
6.5.4. Me da un error ``nombre_del_error>xxx: gus pcm not attached, out of memory.'' ¿Por qué me pasa ésto?

6.5.1. ¡Recibo un error "unsupported subdevice XX" !

Uno o más nodos de dispositivos no se crearon correctamente. Repita los pasos anteriores.

6.5.2. ¡Tengo un error "sb_dspwr(XX) timed out" !

El puerto I/O que ha puesto no es el correcto.

6.5.3. ¡Tengo un error "bad irq XX"!

La IRQ que ha puesto no es la correcta. Asegúrese de que la IRQ que pone la la IRQ de la tarjeta son la misma.

6.5.4. Me da un error ``nombre_del_error>xxx: gus pcm not attached, out of memory.'' ¿Por qué me pasa ésto?

No hay memoria libre que se pueda asignar a éste dispositivo.


6.6. Audio MP3

Contributed by Chern Lee.

El formato MP3 (MPEG Layer 3 Audio) se aproxima mucho a la calidad de sonido del CD, así que no hay razón para privar a su sistema FreeBSD de disfrutar de él.


6.6.1. Reproductores de MP3

Con mucho el reproductor de MP3 más popular para XFree86 es XMMS, (X Multimedia System). Puede usar skins de WinAmp en XMMS puesto que el interfaz gráfico es casi idéntico al de la aplicación de Nullsoft. XMMS también tiene soporte nativo de plugins.

XMMS puede instalarse desde el port audio/xmms o como package.

El interfaz de XMMS es intuitivo e incluye lista de canciones, ecualizador gráfico y muchas más cosas. Aquellos que conozcan WinAmp encontrarán XMMS fácil de usar.

Existe una alternativa; el port audio/mpg123 es un reproductor MP3 en línea de comandos.

mpg123 puede usarse indicándole un dispositivo de sonido concreto y el archivo MP3 en la línea de comandos como se muestra aquí:

# mpg123 -a /dev/dsp1.0 GrandesÉxitos-DeAlguno.mp3 
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!





Playing MPEG stream from BT - GrandesÉxitos-DeAlguno.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo

/dev/dsp1.o debe reemplazarse por el dispositivo dsp que tenga en su sistema.


6.6.2. Extracción de Pistas de CD Audio

Antes de convertir una pista o todo un CD a MP3 la información de audio del CD debe pasar al disco duro. Ésto se hace convirtiendo los datos raw CDDA (CD Digital Audio) en archivos WAV.

El programa cdda2wav, que es parte del port sysutils, se usa para la extracción del audio de los Discos Compactos y de la información asociada con éste.

Con el CD en la unidad, el siguiente comando (utilizado como root) convertirá un CD entero en archivos WAV individuales, uno por pista:

# cdda2wav -D 0,1,0 -B

La opción -D 0,1,0 indica el dispositivo SCSI 0,1,0, que se corresponde con la salida del comando cdrecord -scanbus.

Para extraer pistas individuales utilice la opción -t como se vé aquí:

# cdda2wav -D 0,1,0 -t 7

Ésta opción trata la séptima pista del CD de audio. Para tratar un rango de pistas, por ejemplo las pistas de la uno a la siete, especifique el rango:

# cdda2wav -D 0,1,0 -t 1+7

cdda2wav sólo soporta unidades CDROM SCSI. Para unidades IDE utilice audio/cdd o alguna otra entre las variadas aplicaciones que hay en la colección de ports de audio.


6.6.3. Creando Archivos MP3

Hoy día el codificador MP3 por excelencia es el lame. Lame Puede encontrarse en audio/lame en el árbol de ports.

Usando archivos WAV previamente extraídos, el siguiente comando convierte audio01.wav en audio01.mp3:

# lame -h -b 128 \
--tt "Título de Copla o Cantar" \
--ta "Grupo, Solista o Coral Sinfónica" \
--tl "Título del Ãlbum" \
--ty "2001" \
--tc "Autor de la extracción y paso a MP3" \
--tg "Genre" \
audio01.wav audio01.mp3

Los 128 kbits pasan por ser el estándar ``de facto'' usado en el ratio de bits de los MP3 al uso. Muchos prefieren mayores calidades, 160 e incluso 192. A mayor ratio de bits, mayor espacio requerido en el disco --pero la calidad también será mayor--. La opción -h utiliza el modo ``más calidad pero algo más lento''. Opciones que empiezan por --t indican etiquetas ID3, que suelen incluír información sobre la canción que se incluye en el archivo MP3. Puede encontrar más opciones consultando el manual de lame.


6.6.4. Decodificando MP3

Para grabar un CD de audio desde archivos MP3 debe convertir éstos a un formato WAV no comprimido. Tanto XMMS como mpg123 soportan la conversión de MP3 a un formato de fichero no comprimido.

Escribiendo a disco desde XMMX:

  1. Ejecute XMMS.

  2. Botón derecho del ratón en la ventana para acceder al menú de XMMS.

  3. Elija Preferences en Opctions.

  4. Cambie Output Plugin a ``Disk Writer Plugin''.

  5. Pulse Configure.

  6. Elija un directorio en el que guardar los archivos.

  7. Cargue el archivo MP3 en XMMS normalmente, con el volumen al 100% y las opciones de ecualización desactivadas.

  8. Pulse Play -- parecerá que XMMS está reproduciendo música pero no sonará nada. Lo que está haciendo es volcar el MP3 a un archivo.

  9. No olvide volver a poner el Output Plugin como estaba antes cuando quiera volver a escuchar MP3.

Escribiendo la salida en mpg123:

  1. Escriba mpg123 -s audio01.mp3 > audio01.pcm

XMMS genera un archivo en formato WAV, mientras que mpg123 convierte MP3 a datos audio raw PCM. Ambos formatos pueden usarse con cdrecord o burncd para crear un CDROM de audio.

Consulte "creating-cds" para más información acerca del uso de grabadoras de CD en FreeBSD.


Capítulo 7. Configuración del Kernel de FreeBSD

Actualizado y reestructurado por Jim Mock. Contribución original por Jake Hamby.

7.1. Sinópsis

El kernel de FreeBSD es el corazón del sistema operativo. Es responsable del manejo y control de la memoria, reforzamiento de los controles de seguridad, manejo de redes, acceso a dispositivos, y mucho más. Mientras que FreeBSD se torna a un sistema más dinámico y configurable, en ocasiones es aún necesario reconfigurar y recompilar un kernel hecho a la medida de nuestras necesidades.

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

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

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

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

  • Como instalar un kernel nuevo.

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

  • Como resolver algunos problemas, si algo sale mal.


7.2. ¿Por qué Construír un Kernel Propio?

Tradicionalmente FreeBSD ha contado con lo que se conoce como un kernel ``monolítico''. Esto quiere decir que el kernel era un gran y único programa que soportaba una lista previa de dispositivos, y que si se deseaba modificar el comportamiento del kernel, se debia compilar un nuevo kernel, y reiniciar el sistema con el nuevo kernel.

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

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

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

Nota: N de T.: El kernel GENERIC es el kernel ``GENERICO'' que instala el sistema por default, del cual su fichero de configuracion lleva el mismo nombre.

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

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

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


7.3. Compilación e Instalación de un Kernel Personalizado

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

Nota: Si no existe el directorio /usr/src/sys en su sistema, quiere decir que las fuentes del kernel no fueron instaladas. La forma más sencilla de hacer esto es mediante el programa /stand/sysinstall, siendo usuario root, y seleccionando Configure, posteriormente Distributions, después src y finalmente sys. Si a usted no le agrada mucho utilizar sysinstall, y tiene acceso a un CDROM ``oficial'' de FreeBSD, entonces puede instalar las fuentes, por medio de la línea de comandos, de la siguiente forma:

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

Posteriormente, dirijase al directorio arch/conf y copie el fichero de configuración GENERIC con el nombre que desee. Por ejemplo:

# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL

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

Sugerencia: El guardar su fichero de configuración directamente bajo el directorio /usr/src, puede ser una mala idea. Si usted esta experimentando problemas, puede ser tentador simplemente eliminar /usr/src y comenzar de nuevo. Cinco segundos después de haber hecho esto, se dará cuenta de que ha eliminado el fichero de configuración de su kernel.

Una alternativa es guardar este fichero de configuración en cualquier otra parte y crear un enlace simbólico al fichero localizado bajo el directorio i386.

Por ejemplo:

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

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

Ahora edite el fichero de configuración MYKERNEL, con su editor de textos favorito. Si se trata de una instalación reciente probablemente el único editor disponible sea vi, del cual es complicado explicar su uso detallado en este documento, pero existen bastantes libros que detallan su uso, puede ver algunos en la bibliografía. De cualquier manera FreeBSD ofrece un editor de uso muy sencillo, llamado ee, el cual, si usted es principiante, será el editor de su elección. Sientase en libertad de modificar los comentarios en la parte superior, para que reflejen su configuración o bien los cambios realizados, para diferenciarlo del fichero GENERIC.

Si ha compilado un kernel, bajo SunOS o algun otro sistema operativo BSD, seguramente la información de este fichero le será muy familiar. Por otro lado, si usted esta emigrando de otros sistemas operativos como DOS, el fichero GENERIC puede parecerle intimidante, así que siga las instrucciones descritas en El Fichero de Configuración detenidamente y con sumo cuidado.

Nota: Asegurese siempre de verificar el fichero /usr/src/UPDATING, antes de realizar cualquier actualización del sistema, en el caso de que se sincronice con el source-tree, para contar con la última versión de FreeBSD. El fichero /usr/src/UPDATING cuenta con toda la información importante, relacionada con actualizaciones. Al ser distribuida con FreeBSD, esta información deberá estar más actualizada que la provista por el handbook.

Ahora es momento de llevar a cabo la compilación del código fuente del kernel. Existen dos procedimientos para llevar esto a cabo, y el que usted utilice dependerá del por que esta personalizando su kernel, así como la versión de FreeBSD que este utilizando.

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

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

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

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

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

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

    # /usr/sbin/config MYKERNEL
    
  2. Cambie de ruta, hacia el directorio de compilación.

    # cd ../../compile/MYKERNEL
    
  3. Compile el kernel.

    # make depend
    # make
    
  4. Instale el nuevo kernel.

    # make install
    

Procedimiento 2. Compilando el kernel de una ``nueva'' forma

  1. Dirijase al directorio /usr/src .

    # cd /usr/src
    
  2. Compile el kernel.

    # make buildkernel KERNCONF=MYKERNEL
    
  3. Instale el nuevo kernel.

    # make installkernel KERNCONF=MYKERNEL
    

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

Si usted aun no ha actualizado su sistema fuente (``source tree'') (no ha ejecutado CVSup, CTM o bien usado anoncvs), entonces deberia utilizar la siguiente secuencia de comandos; config, make depend, make, make install.

El kernel nuevo será copiado al directorio raíz como /kernel y el antiguo kernel, será renombrado como /kernel.old. Ahora deberá reiniciar su sistema, utilizando su nuevo kernel. En caso de que se presente algun problema, hay algunos consejos para la resolución de problemas, al final de este capítulo. Asegurese de leer la sección que explica como recuperar el sistema, en caso de que su kernel no desee ``bootear''.

Nota: Si usted ha añadido nuevos dispositivos (tales como tarjetas de sonido) puede ser necesario que deba crear los ficheros de dispositivos, bajo el directorio /dev, antes de poder utilizarlos. Para más información al respecto, revise la sección "Creación de Ficheros de Dispositivos" más adelante en este capítulo.


7.4. El Fichero de Configuración

En realidad el formato general de un fichero de configuración es simple. Cada línea contiene una palabra clave con uno o más argumentos. Para efecto de simplificar, la mayoría de las líneas contienen sólo un argumento. Cualquier cosa que precede a # es considerado como un comentario, y por lo tanto es ignorado. La siguiente sección describe cada palabra clave, en el orden que normalmente encontrará en el fichero GENERIC, aunque algunas palabras claves han sido agrupadas de acuerdo a su uso (como es el caso de lo que se refiere a redes), aun cuando las podrá encontrar dispersas en el fichero GENERIC. Una mayor lista de opciones, así como explicaciones detalladas de cada dispositivo, podrán encontrarse en el fichero de configuración de ayuda LINT, localizado en el mismo subdirectorio que GENERIC. Si usted tiene alguna duda sobre si es necesaria alguna línea u opción, consulte el fichero LINT.

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

Este requerimiento ha sido removido, desde la rama 4.X, que es la que estamos cubriendo en este libro, por lo que si usted cuenta con un sistema anterior a 4.X, revise los ficheros /usr/src/sys/i386/conf/LINT y /usr/src/sys/i386/conf/GENERIC de su sistema para ver algunos ejemplos.

A continuación encontrará un ejemplo del fichero GENERIC, con algunos comentarios adicionales para aclaraciones donde haya sido necesario. Este ejemplo debe ser igual, o muy simlar, a su copia localizada en /usr/src/sys/i386/conf/GENERIC . Para ver mas detalles sobre las posibles opciones del kernel, vea el fichero /usr/src/sys/i386/conf/LINT.

Nota: N de T: En virtud de que el fichero que usted encontrará en su sistema es un fichero en inglés ;), he decidido dejar lo que corresponde al fichero GENERIC, tal como usted lo verá, y sólo traducir los comentarios previos de cada opción. En caso de que algún comentario del fichero sea traducido (por claridad), favor de considerarlo como un ``extra'', que no encontrará en su fichero original. Gracias por su comprensión.

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

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

machine        i386

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

cpu          I386_CPU
cpu          I486_CPU
cpu          I586_CPU
cpu          I686_CPU

Lo anterior especifíca el tipo de procesador con que cuenta su sistema. En este caso puede dejar varias opciones (por ejemplo en el caso de que no este seguro si su procesador es I586_CPU o bien I686_CPU), de cualquier forma para un kernel personalizado siempre es preferible especificar el tipo de procesador con que cuenta su sistema. Si usted no esta seguro del tipo de procesador con que cuenta su sistema, puede utilizar el comando dmesg, para ver los mensajes de envió el kernel al arrancar el sistema, y donde podrá ver como detecto el CPU.

La arquitectura Alpha cuenta con diferentes valores para el cpu. Los cuales incluyen:

cpu          EV4
cpu          EV5

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

ident          GENERIC

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

maxusers          n

La opción maxusers, establece el tamaño de un numero importante de tablas del sistema. Este numero supuestamente debe ser muy similar al numero de usuarios que usted espera ejecutar simultaneamente en su sistema.

Comenzando con FreeBSD 4.5, el sistema automáticamente configurará esta opción para usted, si es que explicitamente le asigna el valor de 0 a esta opción[1]. Si usted esta utilizando una versión de FreeBSD anterior, o bien usted desea controlar este parámetro, deberá establecer cuando menos un valor de 4, especialmente si usted utiliza el Sistema de Ventanas X, o compila software. La razón de esto es que una de las tablas más importantes que controla maxusers, es la que controla el numero máximo de procesos que se pueden ejecutar simultaneamente en el sistema, lo cual se establece como; 20 + 16 * maxusers, por lo que si establece este valor como 1, quiere decir que podrá ejecutar 36 procesos simultaneamente, incuyendo los de inicio, algo así como 18, y los 15 que se ejecutaran al arrancar el Sistema de Ventanas X. Incluso una simple tarea, como leer una pagina de ayuda man, incia como nueve procesos, para efecto de filtrar, descomprimir y visualizar. Establecer un valor de 64 a maxusers, le permitira ejecutar 1044 procesos simultaneamente, que debe ser suficiente para casi cualquier uso. De cualquier forma, si llega a notar su tabla de proc llena (proc table full), al tratar de iniciar algún proceso, o bien esta ejecutando un servidor con bastantes usuarios simultaneos (como ftp.FreeBSD.org), siempre puede incrementar este numero y recompilar su kernel.

Nota: La opción maxusers no limita el numero de usuarios que pueden ingresar al sistema. Simplemente establece valores, para el tamaño de varias tablas del sistema, a valores razonables, considerando el numero de usuarios que usted espera tener en su sistema y el numero de procesos que cada uno de estos usuarios requiere correr. Una palabra clave que efectivamente limita el numero de logins remotos, es pseudo-device pty 16 .

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

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

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

Este es el dispositivo genérico de TCP/IP, loopback. Si usted hace telnet o FTP a localhost (ej. 127.0.0.1), el enlace se realiza por medio de este pseudo-dispositivo. Este es obligatorio.

Todo lo que veremos a continuación, es más o menos opcional. Vea las notas debajo de cada opción, para más información al respecto.

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

Mediante esta línea podemos indicarle al kernel que simule un co-procesador matemático, si su maquina no cuenta con uno (386 o 486SX). Si usted cuenta con una 486DX, o una 387 o 486SX (con chip separado de 387 o 487), o más actual (Pentium, Pentium II, etc.), puede comentar esta línea sin problemas (N de T. Para comentar las líneas de este fichero deberá agregar el simbolo # antes de la línea, con lo cual la línea será ignorada).

Nota: La rutina de emulación del co-procesador matemático que viene con FreeBSD, no es muy exacta. Si usted no cuenta con un co-procesador metamático, y requiere la mayor exactitud posible, es recomendable que modifique esta opción a quedar como GPL_MATH_EMULATE, para usar el soporte de GNU, que no se incluye por omisión, por cuestiones de licencia.

options          INET          #InterNETworking

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

options          INET6          #IPv6 communications protocols

Esto habilita los protocolos de comunicación IPv6.

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

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

options          UFS_DIRHASH  #Improve performance on big directories

Esta opción incluye código para acelerar las operaciones del disco duro en directorios de gran tamaño, aunque esto implique sacrificar algo de memoria adicional. Usted normalmente dejaria esta opción si es para un servidor grande o bien una estación de trabajo interactiva y eliminarlo si esta utilizando FreeBSD en un sistema pequeño donde es importante conservar la memoria o bien si la velocidad del disco duro no es tan importante, tal como un firewall.

options          SOFTUPDATES  #Enable FFS soft updates support

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

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

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

/dev/ad1s2b    /tmp mfs rw 0 0

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

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

El sistema de ficheros de red. A menos de que planee montar particiones desde un servidor Unix através de TCP/IP, esta línea puede ser comentada.

options          MSDOSFS      #MSDOS Filesystem

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

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

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

options          PROCFS       #Process filesystem

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

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

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

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

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

options          UCONSOLE            #Allow users to grab the console

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

options          USERCONFIG          #boot -c editor

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

options          VISUAL_USERCONFIG   #visual boot -c editor

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

options          KTRACE              #ktrace(1) support

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

options          SYSVSHM             #SYSV-style shared memory

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

options          SYSVSEM             #SYSV-style semaphores

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

options          SYSVMSG             #SYSV-style message queues

Soporte para mensajes de System V. Nuevamente, sólo añadirá unos cientos de bytes a su kernel.

Nota: El comando ipcs(1) le mostrará cualquier proceso que haga uso de estas componentes de System V.

options    P1003_1B        #Posix P1003_1B real-time extensions
options     _KPOSIX_PRIORITY_SCHEDULING

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

options        ICMP_BANDLIM        #Rate limit bad replies

Esta opción permite a ICMP manejar errores,en cuanto al límite de ancho de banda a utilzar. Es recomendable dejar esta opción tal cual, en virtud de que le permite protejer su sistema contra ataques de paquetes de Negación de Servicio (Denial of Service - DoS).

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

Las opciones anteriores son necesarias si desea soporte para SMP.

device          isa

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

device          eisa

Incluya esta opción, si cuenta con una tarjeta madre de tipo EISA. Esto habilita la autodetección y configuración del soporte para los dispositivos que hacen uso del bus EISA.

device          pci

Incluya esta opción si cuenta con una tarjeta madre basada en PCI. Esto habilita la auto-detección de las tarjetas PCI y de los canales a utilizar en los buses PCI e ISA.

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

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

device          ata

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

device          atadisk                 # ATA disk drives

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


device          atapicd                 # ATAPI CDROM drives

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

device          atapifd                 # ATAPI floppy drives

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

device          atapist                 # ATAPI tape drives

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

options         ATA_STATIC_ID           #Static device numbering

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

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

Utilice estos para sistemas antiguos no-PCI.

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

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

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

# SCSI peripherals
device          scbus      # SCSI bus (required)
device          da         # Direct Access (disks)
device          sa         # Sequential Access (tape etc)
device          cd         # CD
device          pass       # Passthrough device (direct SCSI
access)

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

# RAID controllers
device          ida        # Compaq Smart RAID
device          amr        # AMI MegaRAID
device          mlx        # Mylex DAC960 family

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

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

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

device          atkbd0     at atkbdc? irq 1

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

device          psm0       at atkbdc? irq 12

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

device          vga0        at isa?

El controlador para la tarjeta de video.

# splash screen/screen saver
pseudo-device          splash

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

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

El dispositivo sc0 es el controlador por defaault, que recuerda a la consola SCO. Dado que la mayoría de los programas de pantalla--completa, accesan a su consola por medio de una librería de base de datos para terminales, como termcap, no debe importar si utiliza este o bien vt0, el controlador de compatibilidad de VT220. Si cuando accesa al sistema, tiene problemas para manejar programas que utilizan pantalla completa, cuando ingrese al sistema, establezca su variable TERM a scoansi.

# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device          vt0     at isa?
#options         XSERVER          # support for X server on a vt console
#options         FAT_CURSOR       # start with block cursor
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options         PCVT_SCANSET=2   # IBM keyboards are non-std

Este es el controlador de consola compatible con VT220, anteriormente compatible con VT100/102. Este sirve para algunas laptops que tienen incompatibilidad de hardware con sc0. También es recomendable establecer su variable de entorno TERM como vt100 o vt220. Este controlador ha probado ser de gran utilidad en diferentes máquinas en una red, donde las entradas para termcap o terminfo para el dispositivo sc0 no están disponibles -- vt100 debe estar disponible en practicamente cualquier plataforma.

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

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

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

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

# Serial (COM) ports
device          sio0     at isa? port IO_COM1 flags 0x10 irq 4
device          sio1     at isa? port IO_COM2 irq 3
device          sio2     at isa? disable port IO_COM3 irq 5
device          sio3     at isa? disable port IO_COM4 irq 9

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

Nota: Si usted cuenta con un módem interno conectado al puerto COM4 y un puerto serial en COM2, deberá cambiar el IRQ del módem al 2 (por alguna obscura razón el IRQ 2 = IRQ 9), de manera que pueda accederlo desde FreeBSD. Si usted cuenta con una tarjeta serial de puertos múltiples, verifique la página de ayuda sio(4) para más información sobre los valores que debe utilizar en estas líneas. Algunas tarjetas de video (principalmente aquellas basadas en chips S3) utilizan direcciones de E/S de la forma 0x*2e8, y dado que muchos chips no decodifican completamente el espacio de dirección de E/S de 16-bit, se congelan con estas tarjetas, haciendo que el uso del puerto COM4 sea prácticamente imposible.

Es necesario que cada puerto serial cuente con su propia dirección IRQ (a menos que este utilizando una tarjeta de puertos múltiples, donde se permite el compartir IRQs), así que los IRQs que por default manejan los puertos COM3 y COM4, no pueden ser utilizados.

# Parallel port
device          ppc0    at isa? irq 7

Esta es la interfaz para el puerto paralelo ISA.

device          ppbus      # Parallel port bus (required)

Provee soporte para el bus del puerto en paralelo.

device          lpt        # Printer

Soporte para impresoras de puerto en paralelo.

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

device          plip       # TCP/IP over parallel

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

device          ppi        # Parallel port interface device

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

#device         vpo        # Requires scbus and da

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

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

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

# PCI Ethernet NICs that use the common MII bus controller code.
device          miibus     # MII bus support

El soporte del bus MII, es requerido por algunas tarjetas de red Ethernet PCI 10/100, específicamente aquellas con transistores dependientes de MII o bien aquellos con transistores que operan igual que MII. El añadir el soporte device miibus al fichero de configuración del kernel nos permite contar con soporte para todos los dispositivos API genericos de MII y controladores de PHY, incluyendo los genéricos de PHY para los cuales no hay un controlador específico.

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

Controladores que utilizan el código del bus MII.

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

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

pseudo-device   ether         # Ethernet support

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

pseudo-device   sl      1     # Kernel SLIP

El dispositivo sl es el soporte para SLIP. El cual casi ha sido suplantado por PPP, que es más sencillo de configurar, más adecuado para conexiones de módem a módem y más poderoso. El numero posterior a sl, especifíca cuantas sesiones simultaneas se pueden soportar por SLIP.

pseudo-device   ppp     1     # Kernel PPP

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

pseudo-device   tun           # Packet tunnel.

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


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

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

pseudo-device   md            # Memory ``disks''

Pseudo-dispositivos para la memoria de discos.

pesudo-device   gif

o

pseudo-device   gif     4     # IPv6 and IPv4 tunneling

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

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

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

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

Este es el Filtro de Paquetes de Berkeley. Este pseudo-dispositivo permite a las interfaces de red colocarse en modo promiscuo, capturando cada paquete en una transmisión de red (ej. una Ethernet). Estos paquetes pueden ser capturados y examinados por medio del programa tcpdump(1).

Nota: La opción bpf pseudo-device también es utilizada por dhclient(8) para obtener la dirección IP del ruteador por default (gateway). Si usted utiliza DHCP, deje esta opción habilitada.

# USB support
#device         uhci          # UHCI PCI->USB interface
#device         ohci          # OHCI PCI->USB interface
#device         usb           # USB Bus (required)
#device         ugen          # Generic
#device         uhid          # ``Human Interface Devices''
#device         ukbd          # Keyboard
#device         ulpt          # Printer
#device         umass         # Disks/Mass storage - Requires scbus and da
#device         ums           # Mouse
# USB Ethernet, requires mii
#device         aue           # ADMtek USB ethernet
#device         cue           # CATC USB ethernet
#device         kue           # Kawasaki LSI USB ethernet

Soporte para varios dispositivos USB.

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


7.5. Creación de Nodos para los Dispositivos

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

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

device acd0

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

# sh MAKEDEV acd0

Cuando este script termine, encontrará que ahora existen los ficheros acd0c y racd0c en el directorio /dev, de tal forma que sabrá que se ha ejecutado con exito.

Para tarjetas de sonido, debe ejecutar el siguiente comando para crear las entradas correspondientes:

# sh MAKEDEV snd0

Nota: Si existen otras personas con acceso a su sistema, cuando cree ficheros-nodo para dispositivos tales como tarjetas de sonido, es recomendable proteger estos dispositivos, añadiendolos al fichero /etc/fbtab. Vea la página de ayuda fbtab(5) para más información al respecto.

El procedimiento mencionado puede servirle para añadir cualquier otro dispositivo no-generico o bien que no exista en el fichero /usr/src/sys/i386/conf/GENERIC, para el cual no existan las entradas apropiadas.

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


7.6. En Caso de que Algo No Funcione

Existen cinco tipos de problemas que se pueden presentar al momento de estar personalizando/compilando un kernel. Estas son:

Que el comando config de como resultado un error:

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

config: line 17: syntax error

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

Cuando el comando make falla:

Cuando el comando make da como resultado un error, generalmente es indicio de que el fichero de configuración tiene un error, pero que este error no es tan grave como para que config lo detecte. Revise nuevamente su fichero y si aun así no puede detectar el error, envíe un correo a lista de correo para preguntas generales sobre FreeBSD adjuntando el fichero personalizado de su kernel, y debiese ser diagnosticado rápidamente.

Al instalar el nuevo kernel se presenta una falla

Si el kernel termino de compilarse correctamente, pero presenta una falla al instalarlo (esto es cuando el comando make install o make installkernel da como resultado un Error), lo primero que es necesario revisar, es si su sistema esta ejecutandose en securelevel 1 o mayor (vea init(8)). Aqui lo que sucede es que la instalación del kernel intenta remover la ``marca'' (flag) de inmutable del kernel actual y colocar dicha marca al nuevo kernel. Y en virtud de que securelevel 1 o mayor evita que dicha marca sea removida de cualquier fichero del sistema, la instalación del nuevo kernel debe ser realizada en securelevel 0 o menor.

El nuevo kernel no arranca:

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

Nota: Recuerde que si tiene problemas para personalizar su kernel, es recomendable asegurarse de contar con un kernel de tipo GENERIC, o algún otro que tenga la seguridad de su funcionamiento y que tenga un nombre que no será borrado en la siguiente compilación de kernel. No puede confiar en el kernel.old, ya que en cada instalación de un nuevo kernel, este se sustituye con el último kernel instalado, que pudiese se un kernel no funcional. También recuerde que, en cuanto le sea posible, debe mover el kernel funcional a la ubicación correcta del kernel, o bien, comandos como ps(1) no trabajarán correctamente. El comando para ``desbloquear'' el fichero del kernel que instala el comando make (para efecto de usar permanentemente otro kernel) es:

# chflags noschg /kernel

Si no puede ejecutar esto, probablemente su sistema se este ejecutando en un valor mayor a cero de securelevel(8). Edite la línea kern_securelevel del fichero /etc/rc.conf y establezca este valor como -1, y reinicie su sistema. Posteriormente puede regresar este al valor original, cuando este contento con su nuevo kernel.

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

# chflags schg /kernel
El kernel funciona, pero ps ha dejado de funcionar!:

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


Capítulo 8. Depurando el Kernel

Contribución de Paul Richards y Jörg Wunsch


8.1. Depuración de un Kernel Crash Dump con kgdb

Aquí se dan instrucciones para hacer funcionar la depuración del kernel sobre un crash dump. En ellos se asume que usted tiene suficiente espacio de swap para un crash dump. Si usted tiene varias particiones de swap y la primera es demasiado pequeña para albergar un dump, puede configurar su kernel para que use un dispositivo alternativo (en la línea config kernel=, o puede especificar una alternativa usando el comando dumpon(8). La mejor manera de usar dumpon(8) es asignar la variable dumpdev en /etc/rc.conf. Generalmente usted va a querer especificar uno de los dispositivos de swap especificados en /etc/fstab. Actualmente no se soportan dumps a dispositivos que no sean de swap, como por ejemplo una unidad de cinta. Configure su kernel usando config -g. Vea Configuración del Kernel para más detalles sobre la configuración del kernel FreeBSD.

Use el comando dumpon(8) para decirle al kernel donde hacer el dump (Tenga en cuenta que esto debera hacerse luego de configurar la partición como dispositivo de swap usando swapon(8)). Esto se hace normalmente usando los archivos /etc/rc.conf y /etc/rc. Como alternativa se puede fijar el dispositivo usando la cláusula dump en la línea config de su archivo de configuración del kernel. Esta práctica esta en desuso y sólo debería ser usada para obtener un dump de un kernel que falla durante el inicio.

Nota: En adelante, el término kgdb se referirá al gdb corriendo en ``kernel debug mode''. Esto puede lograrse ya sea iniciando al gdb con la opción -k, o enlazandolo y arrancandolo con el nombre kgdb. Esto no se hace por default, y la idea está basicamente en desuso ya que a la gente de GNU no le gusta que sus herramientas se comporten distinto cuando se las llama por otro nombre. Esta posibilidad podrá perfectamente ser descontinuada en futuras versiones.

Una vez que el kernel ha sido compilado haga una copia, digamos kernel.debug, y luego corra strip -g sobre el original. Instale el original normalmente. Usted tambien podría instalar el kernel sin hacer el strip, pero los tiempos de busqueda de algunos programas en la tabla de símbolos aumentarán sensiblemente, y dado que el kernel se carga completo en memoria durante el inicio y no puede intercambiarse a disco luego, se desperdiciarán varios megabytes de memoria.

Si usted esta probando un nuevo kernel, por ejemplo tipeando el nombre del nuevo kernel en el prompt de inicio, pero necesita arrancar otro para tener su sistema funcionando de nuevo, arranquelo solo en modo monousuario usando la opción -s en el prompt de inicio , y luego siga los siguientes pasos:

# fsck -p
# mount -a -t ufs       # asi su file system para /var/crash se puede escribir
# savecore -N /kernel.panicked /var/crash
# exit                  # ...a modo multiusuario

Esto instruye a savecore(8) que use otro kernel para la extracción de nombres de símbolo. De otro modo usaria el kernel en uso y probablemente no haga nada ya que los símbolos del kernel y los del dump son diferentes.

Ahora, luego de un crash dump, vaya a /sys/compile/WHATEVER y corra kgdb. desde kgdb haga:

symbol-file kernel.debug
exec-file /var/crash/kernel.0
core-file /var/crash/vmcore.0
y voila, ya puede depurar el crash dump usando las fuentes del kernel como lo hace con cualquier otro programa.

A continuación se muestra el log de una sesión de kgdb que ilustra el procedimiento. Las líneas fueron numeradas para referencia, y las largas fueron cortadas para mejorar la legibilidad. Mas alla de esto es el registro de un error real tomado durante el desarrollo del driver pcvt de consola.

 1:Script started on Fri Dec 30 23:15:22 1994
 2:# cd /sys/compile/URIAH
 3:# kgdb kernel /var/crash/vmcore.1 
 4:Reading symbol data from /usr/src/sys/compile/URIAH/kernel
...done.
 5:IdlePTD 1f3000
 6:panic: because you said to!
 7:current pcb at 1e3f70
 8:Reading in symbols for ../../i386/i386/machdep.c...done.
 9:(kgdb) where
10:#0  boot (arghowto=256) (../../i386/i386/machdep.c line 767)
11:#1  0xf0115159 in panic ()
12:#2  0xf01955bd in diediedie () (../../i386/i386/machdep.c line 698)
13:#3  0xf010185e in db_fncall ()
14:#4  0xf0101586 in db_command (-266509132, -266509516, -267381073)
15:#5  0xf0101711 in db_command_loop ()
16:#6  0xf01040a0 in db_trap ()
17:#7  0xf0192976 in kdb_trap (12, 0, -272630436, -266743723)
18:#8  0xf019d2eb in trap_fatal (...)
19:#9  0xf019ce60 in trap_pfault (...)
20:#10 0xf019cb2f in trap (...)
21:#11 0xf01932a1 in exception:calltrap ()
22:#12 0xf0191503 in cnopen (...)
23:#13 0xf0132c34 in spec_open ()
24:#14 0xf012d014 in vn_open ()
25:#15 0xf012a183 in open ()
26:#16 0xf019d4eb in syscall (...)
27:(kgdb) up 10
28:Reading in symbols for ../../i386/i386/trap.c...done.
29:#10 0xf019cb2f in trap (frame={tf_es = -260440048, tf_ds = 16, tf_\
30:edi = 3072, tf_esi = -266445372, tf_ebp = -272630356, tf_isp = -27\
31:2630396, tf_ebx = -266427884, tf_edx = 12, tf_ecx = -266427884, tf\
32:_eax = 64772224, tf_trapno = 12, tf_err = -272695296, tf_eip = -26\
33:6672343, tf_cs = -266469368, tf_eflags = 66066, tf_esp = 3072, tf_\
34:ss = -266427884}) (../../i386/i386/trap.c line 283)
35:283                             (void) trap_pfault(&frame, FALSE);
36:(kgdb) frame frame->tf_ebp frame->tf_eip
37:Reading in symbols for ../../i386/isa/pcvt/pcvt_drv.c...done.
38:#0  0xf01ae729 in pcopen (dev=3072, flag=3, mode=8192, p=(struct p\
39:roc *) 0xf07c0c00) (../../i386/isa/pcvt/pcvt_drv.c line 403)
40:403             return ((*linesw[tp->t_line].l_open)(dev, tp));
41:(kgdb) list
42:398        
43:399             tp->t_state |= TS_CARR_ON;
44:400             tp->t_cflag |= CLOCAL;  /* cannot be a modem (:-) */
45:401     
46:402     #if PCVT_NETBSD || (PCVT_FREEBSD >= 200)
47:403             return ((*linesw[tp->t_line].l_open)(dev, tp));
48:404     #else
49:405             return ((*linesw[tp->t_line].l_open)(dev, tp, flag));
50:406     #endif /* PCVT_NETBSD || (PCVT_FREEBSD >= 200) */
51:407     }
52:(kgdb) print tp
53:Reading in symbols for ../../i386/i386/cons.c...done.
54:$1 = (struct tty *) 0x1bae
55:(kgdb) print tp->t_line
56:$2 = 1767990816
57:(kgdb) up
58:#1  0xf0191503 in cnopen (dev=0x00000000, flag=3, mode=8192, p=(st\
59:ruct proc *) 0xf07c0c00) (../../i386/i386/cons.c line 126)
60:       return ((*cdevsw[major(dev)].d_open)(dev, flag, mode, p));
61:(kgdb) up
62:#2  0xf0132c34 in spec_open ()
63:(kgdb) up
64:#3  0xf012d014 in vn_open ()
65:(kgdb) up
66:#4  0xf012a183 in open ()
67:(kgdb) up
68:#5  0xf019d4eb in syscall (frame={tf_es = 39, tf_ds = 39, tf_edi =\
69: 2158592, tf_esi = 0, tf_ebp = -272638436, tf_isp = -272629788, tf\
70:_ebx = 7086, tf_edx = 1, tf_ecx = 0, tf_eax = 5, tf_trapno = 582, \
71:tf_err = 582, tf_eip = 75749, tf_cs = 31, tf_eflags = 582, tf_esp \
72:= -272638456, tf_ss = 39}) (../../i386/i386/trap.c line 673)
73:673             error = (*callp->sy_call)(p, args, rval);
74:(kgdb) up
75:Initial frame selected; you cannot go up.
76:(kgdb) quit
77:# exit
78:exit
79:
80:Script done on Fri Dec 30 23:18:04 1994

Comentarios al listado anterior:

línea 6:

Este es un dump tomado desde el DDB (vea abajo), a partir del comentario del panic ``because you said to!'', y un listado de la pila bastante largo; la razón incial para entrar al DDB fue un trap de falta de pagina.

línea 20:

Esta es la ubicación de la función trap() en el listado de la pila.

línea 36:

Se fuerza el uso de un nuevo marco de pila; esto ya no es necesario ahora. Actualmente se supone que los marcos de pila apuntan a las ubicaciones correctas, aun en caso de un trap. (No tengo un dump más nuevo a mano <g>, mi kernel no ha hecho un panic desde hace bastante tiempo.) Mirando al código en la línea 403 del código fuente, hay una alta probabilidad de que la referencia al puntero ``tp'' sea erronea, o el acceso al arreglo estuviera fuera de sus límites.

línea 52:

El puntero se ve sospechoso, pero contiene una dirección válida.

línea 56:

De todos modos, obviamente apunta a basura, asi que encontramos nuestro error! (Para los que no esten familiarizados con esa pieza de código en particular: tp->t_line hace referencia a la disciplina de línea de este dispositivo de consola, el cual debe ser un entero por demás pequeño)


8.2. Depurando un crash dump con DDD

Tambien es posible examinar un crash dump del kernel con un debugger gráfico como ddd. Agregue la opción -k a la línea de comando del ddd que usaría normalmente. Por ejemplo;

# ddd -k /var/crash/kernel.0 /var/crash/vmcore.0

De esta manera usted debería poder analizar el crash dump usando la interfaz gráfica del ddd.


8.3. Analisis Post-mortem de un Dump

Que sucede si un kernel hace un dump de su memoria que usted no esperaba, y por lo tanto no estaba compilado usando config -g? No todo esta perdido aquí. Do not panic!

Nota: N.del T.: El autor hace un juego con la palabra panic! que prefiero dejar sin traducir.

Por supuesto, aun necesita habilitar los crash dumps. Vea más arriba las opciones que debe especificar para esto.

Vaya a su directorio de configuración del kernel (/usr/src/sys/arq/conf) y edite su archivo de configuración. Quite las marcas de comentario (o agregue, si no existe) la siguiente línea

makeoptions    DEBUG=-g                #Build kernel with gdb(1) debug symbols

Recompile el kernel. Algunos otros archivos seran recompilados, por ejemplo trap.o, a causa del cambio de la fecha del archivo Makefile. Con un poco de suerte, la opción -g no cambiará nada del código generado, al final usted tendra un kernel con el mismo código que tiene problemas ahora pero con ciertos símbolos para depuración. Por lo menos usted debería verificar el tamaño anterior y el nuevo con el comando size(1). Si hay diferencia probablemente sea el momento de darse por vencido.

Ahora puede examinar el dump como se describió anteriormente. Los símbolos pueden estar incompletos para algunas partes, como se puede ver en el listado de pila del ejemplo anterior donde algunas funciones se muestran sin numeros de línea ni listas de argumentos. Si necesita más símbolos borre los archivos objeto apropiados y repita la sesión de kgdb hasta que haya averiguado lo suficiente.

No se garantiza que todo esto funcione, pero irá bastante bien la en mayoría de los casos.


8.4. Depuración En-línea del Kernel Usando DDB

Si bien el kgdb provee un muy alto nivel de interfaz de usuario como depurador post-mortem, hay cosas que no puede hacer. Siendo las más importantes poder marcar puntos de interrupción y ejecutar código del kernel paso a paso.

Si usted necesita hacer una depuración a bajo nivel de su kernel hay disponible un debugger en-línea llamado DDB. Permite poner puntos de interrupción, ejecutar paso a paso las funciones del kernel, examinar y cambiar variables, etc. Sin embargo, no puede acceder al código fuente del kernel y sólo tiene acceso a los símbolos globales y estáticos, no a toda la información de depuración como el kgdb.

Para configurar su kernel para que incluya el DDB, agregue la opción

options DDB
a su archivo de configuración, y recompile (vea Configuración del Kernel para más detalles sobre como configurar el kernel de FreeBSD.)

Nota: Notese que si usted tiene una versión vieja del boot block, sus símbolos de debugger podrían no ser cargados. Actualize su boot block; los mas recientes cargan los símbolos del DDB automágicamente.

Una vez que su kernel con DDB esta corriendo, hay varias maneras de entrar al DDB. La primera y más temprana es tipear la opción -d directamente en el prompt de inicio. El kernel se iniciará en modo de depuración e ingresará al DDB antes de cualquier detección de dispositivos. De aquí en adelante usted podrá depurar hasta las funciones probe/attach de los dispositivos.

El segundo escenario es una combinación de teclas, generalmente Ctrl-Alt-Esc. En el caso de las syscons, esto puede modificarse, algunos mapas de teclado distribuidos lo hacen, por lo que hay que prestar atención. Hay disponible una opción para consolas en puertos serie que permite el uso de la señal BREAK en la línea para entrar al DDB (options BREAK_TO_DEBUGGER en el archivo de configuración del kernel). Esto no es el default ya que hay un montón de adaptadores serie dando vueltas que generan condiciones BREAK sin necesidad, por ejemplo cuando se desenchufa el cable.

La tercera forma es que un panic salte al DDB si el kernel está configurado para usarlo. Por este motivo, no es recomendable configurar un kernel con DDB para una máquina funcionando sin atención.

Los comandos del DDB se asemejan remotamente a algunos de los del gdb. Lo primero que usted probablemente necesite hacer es poner un punto de interrupción:

b nombre-de-función
b dirección

Por default los números se toman en hexadecimal, pero para distinguirlos de los nombres de símbolo los números hexadecimales que empiezan con las letras a-f se deben preceder con 0x (para los demás números esto es opcional). Tambien se admiten expresiones sencillas, por ejemplo: nombre-de-función + 0x103.

Para que el kernel interrumpido continue ejecutandose, solo tipee:

c

Para ver un listado de la pila, use:

trace

Nota: Notese que cuando se entra al DDB con una combinación de teclas el kernel está atendiendo una interrupción, por lo que el listado de la pila podría no serle de mucha utilidad.

Si quiere quitar un punto de interrupción, use

del
del expresión-dirección-de-memoria

La primera forma se aceptará inmediatamente despues de llegar a un punto de interrupción, y borra el punto actual. La segunda puede quitar cualquier punto de interrupción, pero se debe especificar la dirección exacta; esta se puede obtener de:

show b

Para ejecutar el kernel paso a paso, intente:

s

Esto entrará dentro de las funciones, pero puede hacer que DDB las siga hasta llegar a la instrucción de retorno correspondiente usando:

n

Nota: Esto es distinto de la instrucción next del gdb; es más parecido a la instrucción finish.

Para examinar los datos en la memoria use (por ejemplo):

x/wx 0xf0133fe0,40
x/hd db_symtab_space
x/bc termbuf,10
x/s stringbuf
para acceder a palabras/medias palabras/bytes, y para mostrar en hexadecimal/decimal/caracteres/strings. El número luego de la coma es la cantidad de objetos. Para mostrar los siguientes 0x10 items, simplemente use:

x ,10

Del mismo modo, use

x/ia foofunc,10
para desensamblar las primeras 0x10 instrucciones de foofunc, y mostrarlas junto con su desplazamiento desde el comienzo de foofunc.

Para modificar memoria, use el comando write:

w/b termbuf 0xa 0xb 0
w/w 0xf0010030 0 0

El modificador (b/h/w) especifica el tamaño de los datos a ser escritos, la primera expresión a continuación es la dirección donde escribir y el resto es interpretado como datos para escribir en las direcciones de memoria sucesivas.

Si quiere conocer el valor actual de los registros del procesador, use:

show reg

O, puede mostrar un solo registro usando:

p $eax
y modificarlo haciendo:

set $eax new-value

Si usted quisiera llamar alguna función del kernel desde el DDB, solo debe decir:

call func(arg1, arg2, ...)

El valor devuelto será impreso en la pantalla.

Para un resumen de los procesos corriendo al estilo ps(1) use:

ps

Usted ya ha examinado la causa de que su kernel falle, y quiere reiniciar su equipo. Recuerde que, dependiendo de lo severo de las fallas que ocurrieron, algunas partes del kernel podrían no funcionar como se espera. Siga una de las siguientes acciones para apagar y reiniciar su equipo:

call diediedie()

Esto causará que su kernel haga un crash dump y reinicie, asi luego podrá analizar el dump a un nivel más alto con el kgdb. Este comando suele tener que acompañarse por otra instrucción continue. Para hacer esto hay un alias: panic.

call boot(0)

La cual podría ser una buena manera de apagar ordenadamente el sistema, hacer un sync() de todos los discos, y finalmente reiniciar. En tanto las interfaces de disco y de filesystem del kernel no esten dañadas, esta podría ser una buena manera de hacer un apagado bastante prolijo.

call cpu_reset()

Es la ultima salida de los desastres y es practicamente lo mismo que presionar el Gran Boton Rojo.

Si usted necesita un breve sumario de los comandos, tipee:

help

De todos modos, es altamente recomendable tener una copia impresa de la página ddb(4) del manual a mano antes de la sesión de depuración. Recuerde que es bastante difícil leer el manual en línea mientras se está ejecutando el kernel paso a paso.


8.5. Depuración En-Línea Usando El GDB remoto

Esta característica ha sido soportada desde FreeBSD 2.2, y ya está en verdad muy bien pulida.

El GDB ha soportado depuración remota desde hace mucho tiempo. Esto se hace usando un protocolo muy simple a traves de una línea serie. A diferencia de los otros metodos descriptos anteriormente, hacen falta dos máquinas para hacer esto. Una va a proveer el entorno de depuración, incluyendo todos los archivos fuente, y una copia del ejecutable del kernel con todos los símbolos y la otra será la máquina a depurar que simplemente corre una copia de exactamente el mismo kernel (pero sin los símbolos de depuración).

Usted debería configurar el kernel en cuestión con config -g, incluir DDB en la configuración, y compilarla como siempre. Esto arrojará un ejecutable enorme, debido a la información de depuración. Copie este kernel a la máquina a depurar, quitele los simbolos con strip -x, e inicielo usando la opción -d en el prompt de inicio. Conecte el primer puerto serie de la máquina a cualquier puerto serie de la máquina que correrá el debugger. Ahora en la máquina que corre el debugger, vaya al directorio de compilación del kernel a depurar, y arranque el gdb:

% gdb -k kernel
GDB is free software and you are welcome to distribute copies of it
 under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.16 (i386-unknown-freebsd),
Copyright 1996 Free Software Foundation, Inc...
(kgdb)

Inicie la sesión de depuración remota haciendo (asumiendo que se usa el primer puerto serie):

(kgdb) target remote /dev/cuaa0

Ahora en la máquina a depurar (que entró al DDB justo antes de empezar a detectar los dispositivos), tipee:

Debugger("Boot flags requested debugger")
Stopped at Debugger+0x35: movb  $0, edata+0x51bc
db> gdb

El DDB responderá diciendo:

Next trap will enter GDB remote protocol mode

Cada vez que tipee gdb, el modo se alternará entre el GDB remoto y el DDB local. Para forzar un siguiente trap inmediatamente, simplemente tipee s (avanza un paso). la máquina del debugger ahora ganará control sobre el kernel a depurar:

Remote debugging using /dev/cuaa0
Debugger (msg=0xf01b0383 "Boot flags requested debugger")
    at ../../i386/i386/db_interface.c:257
(kgdb)

Esta sesión puede usarse casi como cualquier otra sesión de GDB, incluyendo acceso completo al código fuente, ejecutarlo en modo-gud dentro de una ventana de Emacs (lo cual brinda la posibilidad de mostrar automáticamente el código fuente en otra ventana de Emacs) etc.

El GDB remoto tambien puede usarse para depurar LKMs. Primero compile el LKM con los simbolos de depuración:

# cd /usr/src/lkm/linux
# make clean; make COPTS=-g

Luego instale esta versión del módulo en la máquina a depurar, carguelo y use modstat para averiguar donde fue cargado:

# linux
# modstat
Type     Id Off Loadaddr Size Info     Rev Module Name
EXEC      0   4 f5109000 001c f510f010   1 linux_mod

Tome la dirección de carga (loadaddr) del módulo y sumele 0x20 (probablemente para contar el encabezado a.out). Esta es la dirección donde el código del módulo fue reubicado. Use el comando add-symbol-file en el GDB para informarle al debugger acerca del módulo:

(kgdb) add-symbol-file /usr/src/lkm/linux/linux_mod.o 0xf5109020
add symbol table from file "/usr/src/lkm/linux/linux_mod.o" at
text_addr = 0xf5109020? (y or n) y
(kgdb)

Ahora tiene acceso a todos los símbolos en el LKM.


8.6. Depurando Un Driver de Consola

Dado que el DDB necesita un driver de consola sobre el que correr, las cosas son mas complicadas si lo que falla es el propio driver de consola. Usted podría entonces recordar el uso de una consola en puerto serie (ya sea con un sector de inicio modificado, o especificando -h en el prompt Boot:) y colgar una terminal estándar en su primer puerto serie. El DDB funciona en cualquier driver de consola configurado, por supuesto tambien en una consola de puerto serie.


Capítulo 9. Añadiendo Opciones a la Configuración de un Nuevo Kernel

Contribuido por Jörg Wunsch.

Nota: Es importante que antes de leer este documento, usted este familiarizado con la sección de configuració del kernel.


9.1. ¿Qué son las Opciones del Kernel?

Básicamente el uso de las opciones del kernel se encuentran descritas en la sección de configuración del kernel. También existe una explicación de opciones ``históricas'' y de ``nuevo-estilo''. La meta final es que eventualmente todas las opciones soportadas por el kernel sean del nuevo-estilo, de tal forma que para las personas que acertadamente ejecutan make depend en el directorio de compilación de su kernel, después de ejecutar config(8), el proceso de compilación detectará automáticamente las opciones modificadas, y sólo recompilará los ficheros donde sea necesario. Eliminando el anterior directorio de compilación en cada ocasión que se ejecute config(8) como es llevado a cabo ahora.

Básicamente, una opción del kernel no es otra cosa que la definición de un macro del preprocesador C para el proceso de compilación del kernel. Para efecto de hacer que la compilación sea realmente opcional, la parte que corresponde a la fuente del kernel (o bien el fichero kernel.h), debe ser escrita teniendo en mente, el uso de las opciones del kernel, por ejemplo, las opciones por omisión pueden modificarse con la opción config. Esto normalmente se lleva a cabo con algo como esto:

#ifndef ESTA_OPCION
#define ESTA_OPCION (algun_valor_por_default)
#endif /* ESTA_OPCION */

De esta forma cuando un administrador indica otro valor en su fichero de configuración, deja sin efecto el valor que se tiene originalmente por default, y lo substituye con este nuevo valor. Claramente el nuevo valor será utilizado como substituto en el código fuente, cuando el preprocesador se ejecute, por lo que debe de tratarse de una expresión válida para el lenguaje C, sin importar el contexto en el que se haya estado usando el valor por default.

También es posible crear opciones de menor valor, que simplemente habilitan o deshabilitan una parte particular del código, al encerrarlo en él

#ifdef ESTA_OPCION

[su código aqui]

#endif

Simplemente al incluir ESTA_OPCION en su fichero de configuración (con o sin valor alguno), activará la parte del código que haya ingresado.

Para la gente que este familiarizada con el lenguaje C, inmediatamente podrá darse cuenta de que todo pudiera ser tratado como una ``opción de configuración'', donde cuando menos se tiene una simple referencia del tipo #ifdef... Por otro lado, es poco probable que alguien especifique

options        aunno,nodefinida

en su fichero de configuración, y que posteriormente se pregunten por que fallo la compilación del kernel.

Es claro que, el uso de nombres arbitrarios para las opciones, hacen muy difícil el poder rastrear su uso en el código del kernel. Lo anterior es el razonamiento detrás del esquema de opciones de nuevo-estilo, donde cada opción se localiza en un fichero .h diferente dentro del directorio de compilación del kernel, los cuales por convicción son llamados opt_foo.h. De esta manera se pueden crear las dependencias dispuestas por Makefile, y el comando make puede determinar que debe ser recompilado, cuando una opción ha cambiado.

Aun con esto los mecanismos del estilo-viejo, tienen una ventaja para las opciones locales o quizás para las opciones de experimentación, que cuentan con un periodo de vida corto: en virtud de que es fácil añadir un nuevo #ifdef al código fuente del kernel, lo cual ya lo ha hecho una opción de configuración del kernel. En este caso, al utilizar esta opción, el administrador, es responsable por completo, al tener conocimiento de las implicaciones que tiene usarla (y probablemente el forzar la recompilación de ciertas partes del kernel). Una vez que la transición de todas las opciones soportadas por el kernel ha finalizado, config(8) advertirá cuando una opción no soportada aparezca en el fichero de configuración, y no procederá a incluirlo en el fichero Makefile del kernel.


9.2. Ahora, ¿Qué Debo Hacer?

Lo primero es, editar el fichero sys/conf/options (o bien sys/<arch>/conf/options. <arch>, por ejemplo; /sys/i386/conf/options.i386), y seleccionar un fichero opt_foo.h que mejor describa la nueva opción, para su inclusión.

Si ya existiese alguno, que se acerce al propósito de la nueva opción, debe elegir ese. Por ejemplo, opciones que modifiquen el comportamiento global del subsistema SCSI, pueden incluirse en opt_scsi.h. Por default, con el simple hecho de mencionar una opción en el fichero apropiado, digamos FOO, implica que el valor correspondiente a esta opción se localiza en el fichero correspondiente opt_foo.h. Por otro lado, esto puede modificarse al especificar el nombre de otro fichero.

Si el fichero opt_foo.h para la nueva opción no existiera, invente un nuevo nombre. Creelo de manera que sea intuitivo, con significado, y comente la nueva sección en el fichero options[.<arch>]. En la ejecución de config(8), este automágicamente reconocerá los cambios, y creará ese fichero, la próxima vez que se ejecute. La mayoría de las opciones deberán incluirse como encabezados por si mismos..

El hecho de incluir muchas opciones, dentro de un solo fichero opt_foo.h, tendrá como resultado la creación de un buen numero de ficheros del kernel, durante la compilación, cuando sólo se haya realizado un cambio en alguna de las opciones del fichero de configuración del kernel, por esta razón es conveniente conservar cada opción en su propio fichero opt_.

Finalmente, averigue las dependencias que existen para la nueva opción. A menos que la nueva opción sea de nueva creación, y no exista en ninguna parte, la siguiente alternativa es su amiga, para efecto de encontrar dependencias:

% 
      find /usr/src/sys -type f | xargs fgrep NUEVA_OPCION
     

El comando anterior dará como resultado un listado de ficheros que tienen dependecia, dirijase a todos esos ficheros y añada lo siguiente, en la parte superior (como encabezado), antes de todo lo que se refiere a #include <xxx.h>.

#include "opt_foo.h"

El seguir este orden es de suma importancia, en virtud de que las opciones pueden modificar el comportamiento, por omisión, de los ficheros normales del tipo ``#include'' (N de T: librerís de encabezado), si estos son del tipo:

 #ifndef NUEVA_OPCION #define NUEVA_OPCION (algo)
    #endif

El añadir una opción que substituye algún encabezado, en ficheros del sistema (por ejemplo; un fichero que se localiza en /usr/include/sys/) da como resultado casi siempre un error. El fichero opt_foo .h no puede ser incluido en esos ficheros, en virtud de que generaran un conflicto más serio, con sus propios encabezados, pero si no son incluidos, al momento de que se deseen utilizar, se puede obtener un valor inconsistente para esta opción. Si, existen antecedentes de esto en este momento, pero eso no lo hace más correcto.


Capítulo 10. Imprimir

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

10.1. Sinópsis

FreeBSD puede ser utilizado para imprimir en una gran variedad de impresoras, desde las antiguas impresoras de matriz de punto, hasta las más modernas impresoras laser, y todo lo que existe en medio de estas, permitiendole crear impresiones de alta calidad, desde cualquier aplicación que este utilizando.

FreeBSD también puede ser configurado para actuar como servidor de impresión en una red; en esta modalidad, FreeBSD puede recibir peticiones de impresión de una gran cantidad de computadoras, incluyendo computadoras corriendo FreeBSD, Windows y MacOS. FreeBSD verifica que un trabajo sea impreso a la vez, y puede mantener estadísticas sobre que usuario y maquina son los que más imprimen, insertar una página de aviso (``titulares'' o ``páginas de encabezado''), antes de cada trabajo para verificar de quien es cada impresión, y más.

Al concluir el presente capítulo, usted sabrá:

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

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

  • Como habilitar encabezados, o titularess en sus impresiones.

  • Como imprimir en impresoras conectadas a otras computadoras

  • Como imprimir en impresoras conectadas directamente a la red.

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

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

  • Como solucionar problemas de impresión comunes.

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

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


10.2. Introducción

Para efecto de poder utilizar impresoras con FreeBSD, es necesario que configure estas, para trabajar con el sistema de cola de impresión de Berkeley, también conocido como Sistema de Cola LPD. Este es el sistema de control de impresión estándar en FreeBSD. Este capítulo introduce en el sistema LPD, llamado comunmente sólo LPD, e introduce en la configuración del mismo.

Si usted esta familiarizado con el sistema de cola de impresión LPD, o bien, con algun otro sistema de impresión, puede saltar a la sección Configurando el sistema de Cola de Impresión.

La aplicación LPD es responsable de controlar todo lo que se refiere a impresión. Es responsable de un gran numero de cosas, tales como:

  • Controla el acceso a las impresoras conectadas directamente al ordenador y las impresoras conectadas a otras máquinas de la red.

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

  • Previene el hecho de que varios usuarios accesen a la impresora al mismo tiempo, al mantener un orden en la cola de impresión (``queue'') para cada impresora.

  • Puede imprimir encabezados (``header'') (también conocidos como titularess o páginas de aviso), de tal forma que los usuarios identifiquen fácilmente sus impresiones, de una pila de impresiones.

  • Se ocupa de los parámetros para impresoras conectadas a puertos seriales.

  • Puede enviar trabajos de impresión por medio de una red, a una cola LPD de una maquina remota.

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

  • Puede mantener un registro por uso de la impresora.

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


10.2.1. ¿Por qué utilizar una Cola de Impresión?

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

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

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

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


10.3. Configuración Básica

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

  • Vea la sección Configuración Simple de una Impresora, para aprender a conectar una impresora, indicarle a LPD como comunicarse con ella, e imprimir ficheros de texto plano en dicha impresora.

  • Vea la sección Configuración Avanzada de una Impresora, para ver como imprimir gran variedad de formatos especiales, imprimir encabezados, para imprimir por medio de una red, controlar acceso a las impresoras y crear cuentas de impresión.


10.3.1. Configuración Simple de una Impresora

La presente sección le mostrará como instalar físicamente la impresora, así como el software de LPD para usar dicha impresora. Le mostrará lo básico de:

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

  • La sección Instalación de Software, le muestra como instalar y configurar el fichero de configuración de LPD (/etc/printcap).

Si usted esta instalando una impresora que utiliza protocolos de red para imprimir en lugar de una conexión directa a su puerto serial o paralelo, vea la sección Impresoras con Interfaces de Red para Secuencia de Datos.

Aun cuando esta sección se llama ``Configuración Simple de una Impresora'', puede resultar un tanto complicada. Conseguir que su impresora trabaje con su ordenador y con la cola de impresión LPD es la parte más compleja. Las opciones avanzadas, tal como imprimir encabezados y crear cuentas, son sencillas una vez que su impresora está trabajando.


10.3.1.1. Instalación Física

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

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


10.3.1.1.1. Puertos y Cables

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

  • La interfaz serial, utiliza el puerto serial de su computadora para enviar datos a la impresora. La interfaz serial es común en la industria de la computación y los cables existen disponibles facilmente e incluso sencillos de hacer. En ocasiones las interfaces seriales requieren de cables especiales y posiblemente cierta configuración compleja de opciones de comunicación.

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

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

En términos generales los interfaces seriales son más lentos que las interfaces en paralelo. Por otro lado los interfaces en paralelo sólo ofrecen comunicación de una vía (de la computadora a la impresora), mientras que los seriales ofrecen de dos vías. Gran cantidad de recientes impresoras y puertos paralelos, pueden comunicarse en ambas direcciones bajo FreeBSD, cuando se utiliza un cable compatible con IEEE1284.

Normalmente, el único escenario donde requiere de una comunicación de ambas vías con la impresora, es cuando la impresora maneja PostScript. Las impresoras que manejan PostScript detallan gran cantidad de información. De hecho, los trabajos PostScript, son programas enviados a la impresora; los cuales no requieren de papel y pueden enviar la salida directamente a la computadora. PostScript utiliza una comunicación de dos vías, para informar al ordenador de los problemas que se puedan presentar, tal como errores en los programas PostScript o papeles atascados. Sus usuarios pueden apreciar este tipo de información. Más allá de esto, la mejor forma de contabilizar con impresoras PostScript, es utilizando dos vías de comunicación: usted solicita a la impresora el conteo de impresiones (esto es, todas las impresiones hechas en su vida), posteriormente envia el trabajo del usuario y repite la solicitud de conteo. Resta los dos valores obtenidos y sabra cuanto debe cobrar al usuario por uso de papel.


10.3.1.1.2. Puertos Paralelos

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

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


10.3.1.1.3. Puertos Seriales

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

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

  • Un cable de módem conecta cada pin del conector de un extremo, con el conector del otro extremo, de manera directa. Este tipo de cable también se le conoce como cable ``DTE-a-DCE''.

  • Un cablde de módem-nulo conecta de fomra directa algunos pins, algunos otros son compartidos (envia datos para recibir datos, por ejemplo), y algunos otros internamente son deshabilitados en los conectores. Este tipo de cable también se le conoce como cable ``DTE-a-DTE''.

  • Un cable de impresora serial, sólo es requerido por algunas impresoras poco comunes, es similar al cable de módem-nulo, pero este envia señales a su contraparte, en lugar de que internamente se deshabilite.

También es necesario que configure los parámetros de comunicación para la impresora, nomralmente esto lo realiza desde los controles de la misma o interruptores DIP en la impresora. Selecciones el bps (bits por segundo y en ocasiones llamado velocidad de baudio) más alto, que tanto su ordenador como impresora soporten. Seleccione 7 u 8 bits de datos; la paridad establezcala en: ninguna, igual o aleatoria y 1 o 2 en bits de paro. También seleccione un protocolo para el control de flujo, que puede ser: ninguno o XON/XOFF (también conocido como ``in-band'' o ``software''). Recuerde las opciones que haya seleccionado en esta parte, para la configuración del software, que veremos en la siguiente sección.


10.3.1.2. Configuración del Software

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

Aqui presentamos un resumen de los pasos necesarios:

  1. Configure su kernel, si es necesario, para habilitar el uso del puerto al que esta conectado su impresora. En la sección Configuración del Kernel encontrará toda la información necesaria, para llevar esto a cabo.

  2. Establecer en modo de comunicación el puerto en paralelo, si es que esta usando dicho puerto. La sección Estableciendo el Modo de Comunicación en el Puerto en Paralelo le da detalles al respecto.

  3. Compruebe si el sistema operativo puede enviar datos a la impresora. La sección Verificando la Comunicación con la Impresora le puede dar detalles sobre como hacer esto.

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


10.3.1.2.1. Configuración del Kernel

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

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

# dmesg | grep sioN

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

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

entonces su kernel ya cuenta con soporte para el puerto.

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

# dmesg | grep lptN

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

lpt0 at 0x378-0x37f on isa

entonces su kernel cuenta con soporte para el puerto.

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

Para añadir soporte para el puerto serial, vea la sección en Configuración del Kernel. Para añadir soporte para el puerto paralelo, vea esa sección y la siguiente sección.


10.3.1.3. Añadiendo Dispositivos de Puertos en /dev

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

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

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

  2. Cambiar su posición al directorio /dev de la siguiente forma:

    # cd /dev
    
  3. Teclear:

    # ./MAKEDEV PUERTO
    

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

  4. Teclee:

    # ls -l PUERTO
    

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


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

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

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

  • El método a petición le indica al sistema operativo que constantemente le pregunte a la impresora si esta lista para recibir datos. Una vez que ha obtenido respuesta, el kernel comienza a transferir los datos.

Normalmente el método por medio de interruptores es más rápido, pero nos ocupa un preciado IRQ. Se sabe que algunas impresoras nuevas de HP no funcionan muy bien con este método aparentemente debido (sin que aun se entienda el por que) a un problema de tiempos. Estas impresoras necesitan el método a petición. Es conveniente que utilice el método que se ajuste a sus necesidades. Algunas impresoras funcionan en ambos métodos, pero son dolorosamente lentas usando el método por medio de interruptores.

Para establecer el método de comunicación, puede hacerlo de dos formas: configurando su kernel o bien, utilizando el programa lptcontrol(8).

Para establecerlo configurando su kernel, deberá:

  1. Editar su fichero de configuración del kernel. Busque una línea que contenga lpt0, si esta no existe añadala. Si esta configurando su segundo puerto en paralelo, use lpt1. Para un tercer puerto paralelo utilice lpt2 y así sucesivamente.

    • Si desea utilizar el modo por medio de interruptor, añada el especificador de irq:

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

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

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

      device lpt0 at isa? port? tty vector lptintr
      
  2. Guarde el fichero. Posteriormente termine el proceso de configuración, recompilación e instalación del kernel, después reinicie el sistema. Vea Configuración del Kernel para más información al respecto.

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

  1. Teclee:

    # lptcontrol -i -d /dev/lptN
    

    para indicar el modo por medio de interruptor para lptN.

  2. Teclee:

    # lptcontrol -p -d /dev/lptN
    

    para establecer el modo a petición para lptN.

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


10.3.1.3.2. Verificando la Comunicación de la Impresora

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

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

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

%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Is this thing working?) show
showpage

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

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


10.3.1.3.2.1. Verificando Impresoras en Paralelo

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

Para probar una impresora en paralelo:

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

  2. Enviar datos a la impresora.

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

      # lptest > /dev/lptN
      

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

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

      # cat > /dev/lptN
      

      Posteriormente, línea por línea teclee el programa, cuidadosamente en virtud de que no puede editar una línea ya que presionado la tecla RETURN o ENTER. Una vez que ha terminado de introducir el programa, presiona las teclas CONTROL+D, o cualquier tecla que funcione para efecto de especificar un fin de fichero.

      Otra manera de hacer esto, es guardar el programa en un fichero y teclear:

      # cat fcihero > /dev/lptN
      

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

En este punto debe ver alguna impresión. No se preocupe si el texto no aparece bien; es algo que arreglaremos más adelante.


10.3.1.3.2.2. Verificando una Impresora Serial

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

Para probar una impresora conectada el puerto serial:

  1. Cambiar a root usando su(1).

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

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

    Donde puerto es el dispositivo usado por el puerto serial (ttyd0, ttyd1, etc.), bps se refiere a la velocidad, en bits-por-segundo, a la que se comunica la impresora, y paridad es la paridad requerida por la impresora (ya sea even, odd, none o zero).

    Nota: N de T: Las opciones de paridad se han dejado en inglés, en virtud de que así deberán especificarse en la configuración.

    He aqui un ejemplo para una impresora conectada por medio de un puerto serial, el tercer puerto a 19200 bps, sin paridad:

    printer:dv=/dev/ttyd2:br#19200:pa=none
    
  3. Conectarse a la impresora por medio de tip(1). Teclee:

    # tip printer
    

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

  4. Envio de datos a la impresora.

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

      % $lptest
      
    • Si es una impresora PostScript o que utilice otro lenguaje, entonces envie un pequeño programa a la impresora. Teclee el programa, línea por línea, muy cuidadosamente ya que algunas teclas, como la de retroceso son significativas para la impresora. Puede ser que también necesite un caracter especial para marcar el fin-de-fichero y que la impresora sepa que ha recibido el programa completo. Para impresoras PostScript, utilice las teclas CONTROL+D.

      Otra variante es, guardar el programa en un fichero y teclear:

      % >fichero
      

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

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


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

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

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

El formato que mantiene el fichero printcap(5) es muy concreto. Utilice su editor de texto favorito para hacer cambios en /etc/printcap. El formato es idéntico al que guardan los ficheros que describen capacidades, tal como /usr/share/misc/termcap y /etc/remote. Para ver mayor información con respecto al formato, vea la página de ayuda cgetent(3).

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

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

  2. Desactive el encabezado de páginas (el cual esta activado por default), al insertar la característica sh; vea la sección Eliminando las Páginas de Encabezados para más información al respecto.

  3. Cree un directorio para la cola, y especifique su ubicación con la característica sd; vea la sección Creando el Directorio de la Cola para mayor información.

  4. Ubique el dispositivo /dev a usar por la impresora e indiquelo en el fichero /etc/printcap con la característica lp; vea la sección Identificando el Dispositivo de Impresión para mayor información. Así mismo, si la impresora esta conectada a un dispositivo serial, utilice las características fs, fc, xs y xc para establecer los parámetros de comunicación; esto se detalla en la sección Configurando los Parámetros de Comunicación de la Cola de Impresión.

  5. Instalar un filtro de entrada de texto plano; vea la sección Instalando un Filtro de Texto para más detalles.

  6. Probar la configuración, al imprimir algo con el comando lpr(1). Para más detalles vea las secciones Probando la Configuración y Resolución de Problemas.

Nota: Las impresoras basadas en un lenjuaje, tal como PostScript, no pueden imprimir texto plano directamente. Los pasos de configuración mencionados anteriormente, así como las siguientes secciones, asumen que si usted cuenta con una impresora de este tipo, sólo va a imprimir ficheros que la impresora puede manejar.

Normalmente los usuarios esperan poder imprimir texto plano a cualquier impresora conectada al sistema. Los programas que usan como interfaz de impresión a LPD, asumen lo mismo. Si usted cuenta con una impresora basada en lenguaje y desea poder imprimir en el lenguaje de la impresora así como texto plano, es importante considerar que debe añadir un paso adicional a los mencionados anteriormente: instalar un programa de conversión detexto-plano-a-PostScript (u otro lenguaje). La sección Acomodando Trabajos de Texto Plano en Impresoras PostScript le indica como debe hacerse esto.


10.3.1.4.1. Nombrando la Impresora

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

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

También, como práctica común, se suele asignar el último alias a la descripción completa de la impresora, incluyendo marca y modelo.

Una vez que ha seleccionado un nombre y algunos aliases, ingreselos en el fichero /etc/printcap. El nombre de la impresora deberá colocarse en la columna izquierda máxima. Separe cada alias con una barra vertical e incluya dos puntos después del último alias.

En el siguiente ejemplo, comenzaremos con el esqueleto del fichero /etc/printcap, que define dos impresoras (una de matriz Diablo 630 y una impresora laser PostScript Panasonic KX-P4455):

#
#  Fichero /etc/printcap para el host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:

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

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


10.3.1.4.2. Eliminando las Páginas de Encabezados

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

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

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

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

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


10.3.1.4.3. Creando el Directorio de la Cola

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

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

También es una buena costumbre crear el directorio con el mismo nombre que tenga la impresora, como se muestra a continuación:

# mkdir /var/spool/nombre-impresora

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

# mkdir /var/spool/lpd
# mkdir /var/spool/lpd/rattan
# mkdir /var/spool/lpd/bamboo

Nota: Si a usted le preocupa la privacidad de los trabajos que imprimen los usuarios, puede que desee proteger el directorio de cola, de tal forma que no sea de acceso público. Los directorios de cola deben pertenecer al usuario daemon y grupo daemon, y debe contar con permisos de lectura, escritura y navegación por estos y nadie más. Haremos esto para nuestros ejemplos:

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

Finalmente, debe indicar a LPD acerca de estos directorios, en el fichero /etc/printcap. Esta indicación se hace por medio de la característica sd :

#
#  Fichero /etc/printcap para el host rose - incluyendo directorios de cola
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:

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

Notese que el nombre de la impresora inicia en la primer columna mientras que el resto debe contar con sangría de un tabulador y todas las líneas, excepto la última, terminar con una diagonal invertida.

En el caso de que usted no especifique directorio alguno con sd, el sistema de cola usara como default /var/spool/lpd .


10.3.1.4.4. Identificando el Dispositivo de Impresión

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

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

En el ejemplo que hemos visto, asumiremos que rattan esta conectada al primer puerto paralelo, y bamboo en el sexto puerto serial; he aqui lo que tendriamos que añadir a /etc/printcap:

#
#  Fichero /etc/printcap para el host rose - identificando los dispositivos a usar
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:

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

Si usted no indica la característica lp en el fichero /etc/printcap, LPD usará el dispositivo /dev/lp por default. El dispositivo /dev/lp actualmente no existe en FreeBSD.

Si la impresora que esta instalando esta conectada a un puerto en paralelo, puede saltar la siguiente parte y dirijirse a la sección Instalando un Filtro de Texto. De otra manera, asegurese de seguir las instrucciones de la siguiente sección.


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

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

  • Le permite probar diferentes parámetros de comunicación, con el simple hecho de modificar el fichero /etc/printcap; con lo cual no es necesario recompilar el programa filtro.

  • Habilita el sistema de cola de impresión para hacer uso del mismo programa filtro, para varias impresoras que pueden contar con diferentes configuraciones de comunicación.

Para efecto de controlar los parámetros de comunicación por medio de un puerto serial, con la característica lp, en el fichero /etc/printcap, utilizarmos lo siguiente:

br#bps-velocidad

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

fc#limpiar-bits

Limpia la marca de bits, donde limpiar-bits afecta en la estructura de sgttyb una vez que se ha entablado la comunicación con el dispositivo.

fs#establece-bits

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

xc#limpia-bits

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

xs#establece-bits

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

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

Cuando LPD abre el canal de comunicación con el dispositivo especificado por lp, lee la marca de bits en la estructura sgttyb; limpia cualquier bit en la característica fc y establece bits en la característica fs, para posteriormente aplicar la configuración resultante. El mismo procedimiento se sigue en el modo de bits local.

Ahora añadamos la impresora de ejemplo que esta conectada al puerto serial numero seis. La velocidad de bps la estableceremos en 38400 bps. Para las marcas de bits usaremos TANDEM, ANYP, LITOUT, FLUSHO, y PASS8. Para el modo local de bits, estableceremos LITOUT y PASS8 :

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

10.3.1.4.6. Instalando un Filtro de Texto

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

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

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

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

/bin/cat && exit 0
exit 2

Haga el fichero ejecutable:

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

Ahora indiquele a LPD que lo use, al añadirlo con la característica if, en el fichero /etc/printcap. Este filtro, lo vamos a añadir en ambas impresoras de nuestro ejemplo, en el fichero /etc/printcap:

#
#  Fichero /etc/printcap para host rose - añadiendo el filtro de texto
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\ 
        :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

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

10.3.1.4.7. Encienda LPD

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

lpd_enable="YES"

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

# lpd

10.3.1.4.8. Probando la Configuración

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

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

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

Teclee:

# lptest 20 5 | lpr -Pnombre-impresora

Donde nombre-impresora es uno de los nombres (o alias) que aparecen especificados en el fichero /etc/printcap para las impresoras. Para probar con la impresora por default, teclee lpr(1) sin la opción -P. Nuevamente, si esta probando una impresora que espera recibir PostScript, envie un programa PostScript en ese lenguaje, en lugar de usar lptest(1). Puede hacer esto poniendo el programa en un fichero y tecleando lpr fichero.

Para una impresora PostScript, usted debe visualizar el resultado del programa. Si esta usando lptest(1), entonces su resultado debe verse algo similar a lo siguiente:

!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678

Para más pruebas de la impresora, intente descargar programas más largos (para impresoras basadas en un lenguaje) o ejecutar lptest(1) con diferentes opciones. Por ejemplo lptest 80 60 producirá 60 líneas de 80 caracteres cada una.

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


10.4. Configuración Avanzada de una Impresora

Esta sección describe el uso de filtros para formatos especiales, encabezados de página, impresión en red, y restricción de uso de la impresora por cuenta.


10.4.1. Filtros

Aun cuando LPD maneja con protocolos de red, controles de acceso, requisiciones y otros aspectos de la impresión, la mayor parte del trabajo real se lleva a cabo por los filtros. Los Filtros son programas que se comunican con la impresora y controlan las dependendcias de su dispositivo y requerimientos especiales. En el ejemplo de la impresora simple, instalamos un muy sencillo filtro de texto plano--un ejemplo extremadamente sencillo que debiese trabajar con la mayoría de las impresoras (en la sección Instalando un Filtro de Texto).

De cualquier manera, para tomar ventaja de la conversión de formatos, cuentas de impresión, trucos específicos de las impresoras y demás, es importante saber como trabajan los filtros. En virtud de que todos estos aspectos son la responsabilidad de estos filtros. Y la mala noticia es, que la mayor parte del tiempo usted debe proveerse de estos filtros. La buena noticia es normalmente estos ya existen disponibles; y cuando no, son sencillos de escribir.

FreeBSD tambié cuenta con un /usr/libexec/lpr/lpf, que trabaja con muchas impresoras que pueden imprimir texto plano. (Maneja caracteres de regreso y tabulador en el fichero, así como conteo, pero se puede decir que eso es todo). Existen también una gran cantidad de filtros y componentes de estos, disponibles en la Colección de Ports de FreeBSD.

He aqui lo que encontrará en esta sección:

  • La sección Como Trabajan los Filtros intenta dar un repaso general al papel que juegan los filtros en el proceso de impresión. Es importante que lea esta sección para ver que sucede ``tras bambalinas'' cuando LPD usa filtros. Este conocimiento puede ayudarle a anticiparse y resolver problemas que puede encontrar cuando instala más y más filtros en cada impresora.

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

  • PostScript es un formato de salida muy popular. Incluso algunas personas (yo, incluido) escriben código PostScript directamente. Pero las impresoras PostScript son caras. La sección Simulando PostScript en Impresoras No-PostScript le indica como puede hacer, para que una impresora no-PostScript, acepte e imprima datos PostScript. Es recomendable que lea esta sección si cuenta con una impresora no-PostScript.

  • La sección Filtros de Conversión, le indica la forma en que puede automatizar la conversión de ciertos formatos específicos de ficheros, tal como gráficos o datos de un determinado tipo, a un formato que la impresora puede entender. Después de leer esta sección usted podrá configurar su impresora de tal forma que los usuarios puedan teclear lpr -t para imprimir datos troff o lpr -d para imprimir datos de tipo TeX DVI, o bien lpr -v para imprimir datos de imagen y así sucesivamente. Recomiendo la lectura de esta sección.

  • La sección Filtros de Salida explica todo acerca de las utilidades que no son muy usadas de LPD: filtros de salida. A menos que usted haya habilitado la impresión de páginas de encabezado (vea Páginas de Encabezado), puede saltar toda esta sección.

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


10.4.1.1. Como Trabajan los Filtros

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

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

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

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

  • El filtro de texto, erroneamente llamado filtro de entrada en la documentación de LPD, este se encarga de manejar la impresión de texto simple. Piense en este como en el filtro por default. LPD espera que todas las impresoras puedan imprimir texto plano y es el filtro de texto, el que se encarga de manejar los caracteres de retroceso y tabulador, de tal forma que la impresora no se confunda. Si en su sistema se debe llevar un conteo de impresiones, el filtro de texto también debe llevar un conteo de páginas impresas, normalmente al llevar la cuenta de las líneas impresas y comparandolas con el numero de líneas soportadas por página. El filtro de texto se comienza con los siguientes argumentos:

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

    donde
    -c

    aparece si el trabajo se envio utilizando lpr -l

    anchura

    es el valor de la característica pw (ancho de página), indicado en /etc/printcap, por default se usa un valor de 132

    longitud

    es el valor de la característica pl (longitud de página), por default su valor es 66

    sangrado

    se refiere a los espacios que se considerarán para lpr -i, por default es 0.

    login

    es el nombre de la cuenta del usuario que imprime el trabajo

    host

    es el nombre del host, del cual se ha enviado el trabajo de impresión

    fichero-act

    es el nombre del fichero contador, de la característica af.



  • Un filtro de conversión convierte un formato específico, a uno que la impresora puede plasmar en un papel. Por ejemplo, datos de tipo ditroff no pueden imprimirse directamente, pero puede instalar un filtro de conversión para ficheros ditroff, de tal forma que los datos ditroff se conviertan a un formato que entiende la impresora. La sección Filtros de Conversión explica todo lo que usted necesita saber sobre ellos. Los filtros de conversión también requieren de llevar un conteo, si usted requiere de este control. Los filtros de conversión se inicializan con estos argumentos:

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

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

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

    nombre-filtro -wancho -llargo

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

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

exit 0

Esto es si el resultado de la impresión es satisfactorio.

exit 1

Si el filtro falló en la impresión, pero desea que LPD intente de nuevo el trabajo de impresión. LPD reiniciará el filtro si sale con esta clave.

exit 2

Si el filtro falla imprimiendo el fichero y no desea que LPD lo intente de nuevo. LPD desechará el fichero.

El filtro de texto /usr/libexec/lpr/lpf que viene con FreeBSD, toma ventaja de los argumentos de ancho y largo, para determinar cuando alimentar la impresora y como llevar el conteo de uso de la impresora. Utiliza el host y login, así como el fichero de conteo, para llevar el control de este registro.

Si usted esta buscando adquirir filtros, verifique que ellos son compatibles con LPD. Si lo son, deberan soportar los argumentos descritos anteriormente. Si usted planea escribir filtros para uso general, entonces creelos pensando en soportar estos argumentos y códigos de salida.


10.4.1.2. Acomodando Trabajos de Texto Plano en Impresoras PostScript

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

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

¿Cómo se hace esto?

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

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

:if=/usr/local/libexec/psif:

También deberá especificar la característica rw; que le indica a LPD abrir la impresora en modo de lectura-escritura.

Si usted cuenta con una impresora PostScript, conectada a un puerto paralelo (y por lo tanto no cuenta con la comunicación de dos vías con la impresora, que lprps requiere), puede utilizar el siguiente script de shell como filtro de texto:

#!/bin/sh
#
#  psif - Imprime PostScript o texto plano en impresoras PostScript
#  Script version; NO la version que viene con lprps
#  Instalado en /usr/local/libexec/psif
#

read first_line
first_two_chars=`expr "$first_line" : '\(..\)'`

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

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


10.4.1.3. Simulando PostScript en Impresoras No-PostScript

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

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

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

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

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

#
#  Trate a LF como CR+LF:
#
printf "\033&k2G" || exit 2

#
#  Read first two characters of the file
#
read first_line
first_two_chars=`expr "$first_line" : '\(..\)'`

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

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

exit 2

Finalmente, necesita notificar a LPD de la característica if, que corresponde al filtro a utilizar:

:if=/usr/local/libexec/ifhp:

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


10.4.1.4. Filtros de Conversión

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


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

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

% dvips fichero-prueba.dvi
% lpr fichero-prueba.ps

Al instalar un filtro de conversión, podemos omitir llevar a cabo la conversión manual, y permitir que LPD se haga cargo por nosotros. Ahora, cada vez que generemos un fichero DVI, sólo estaremos a un paso de su impresión:

% lpr -d fichero-prueba.dvi

Con esto le hemos indicado a LPD que haga la conversión del fichero DVI. Esto se lleva a cabo por medio de la opción -d. La sección Opciones de Formato y Conversión enumera las opciones de conversión.

Por cada una de las opciones que desea que una impresora reconozca, instale un filtro de conversión y señale su ruta en el fichero /etc/printcap. Un filtro de conversión es como el filtro de texto usado en la configuración de una impresora simple (vea la sección Instalando un Filtro de Texto para una referencia) excepto de que en lugar de imprimir texto plano, el filtro convierte el fichero a un formato que la impresora puede entender.


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

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

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

Tipo de Fichero Característica /etc/printcap Opción lpr
cifplot cf -c
DVI df -d
plot gf -g
ditroff nf -n
FORTRAN texto rf -f
troff rf -f
raster vf -v
texto plano if ninguna, -p, o -l

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

A pesar de lo que otros puedan opinar, formatos como texto de FORTRAN o plot, son probablemnte obsoletos. A su gusto, usted puede encontrar nuevos usos de estos formatos, así como a cualquier otro con el simple hecho de instalar los filtros adecuados. Por ejemplo, supongamos que desea imprimir ficheros de tipo Printerleaf (que son ficheros generados por el programa de promoción de escritorio Interleaf) de forma directa, pero que nunca imprime ficheros plot. Podría instalar un filtro de conversión de Printerleaf bajo la característica gf y posteriormente educar a sus usuarios a que utilicen el comando lpr -g para llevar a cabo ``impresiones de ficheros Printleaf''.


10.4.1.4.3. Instalando Filtros de Conversión

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

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

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

#
#  Fichero /etc/printcap para host rose - añadiendo df a bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

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

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

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

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


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

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

Este ejemplo es de un filtro de conversión raster (bueno, de hecho se trata de un fichero GIF), para una impresora Hewlett Packard LaserJet III-Si:

#!/bin/sh
#
#  hpvf - Convierte ficheros GIF a HP/PCL, posteriormente los imprime
#  Instalado en /usr/local/libexec/hpvf
                  
PATH=/usr/X11R6/bin:$PATH; export PATH
giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
    && exit 0 \
    || exit 2

Esto trabaja convirtiendo el fichero GIF a cualquier tipo de fichero mapa portable, y conviritendo eso a un mapa en escala de grises, y ese mapa de regreso a un fichero portable de mapa de bits, y finalmente eso a datos compatibles con HP/PCL, entendible por la impresora LaserJet.

Aqui esta un ejemplo del fichero /etc/printcap usando el filtro anterior, con la impresora mencionada.

#
#  Fichero /etc/printcap para el host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
        :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
        :if=/usr/local/libexec/hpif:\
        :vf=/usr/local/libexec/hpvf:

El siguiente script es un filtro de conversión de datos de tipo troff desde un sistema groff, para la impresora PostScript denominada bamboo:

#!/bin/sh
#
#  pstf - Convierte datos de troff tipo groff a PS, y los imprime.
#  Instalado en /usr/local/libexec/pstf
#
exec grops | /usr/local/libexec/lprps "$@"

El script de arriba, nuevamente hace uso del comando lprps, para manejar la comunicación con la impresora. Si la impresora se encontrase en un puerto paralelo, usariamos el siguiente script:

#!/bin/sh
#
#  pstf - Convierte datos groff a PS, y los imprime.
#  Instalado en /usr/local/libexec/pstf
#
exec grops

Eso es todo. Aqui presentamos la entrada necesaria en /etc/printcap para habilitar el filtro:

:tf=/usr/local/libexec/pstf:

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

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

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

Y añadiremos esta línea al fichero /etc/printcap para la impresora teak, para efecto de habilitar el filtro:

:rf=/usr/local/libexec/hprf:

Aqui presentamos el último ejemplo que puede resultar algo complicado. Vamos a añadir un filtro DVI para la impresora LaseJet teak comentada anteriormente. Primero, la parte sencilla: actualizaremos /etc/printcap con la ubicación del filtro DVI:

:df=/usr/local/libexec/hpdf:

Ahora la parte complicada: crar el filtro. Para eso, vamos a necesitar un programa de conversión de DVI-a-LaserJet/PCL. La Colección de Ports de FreeBSD (vea La Colección de Ports) cuenta con uno, el nombre del paquete es: dvi2xx. Al instalar este programa, nos brinda la funcionalidad que buscamos, dvilj2p, el cual convierte ficheros DVI a ficheros compatibles con LaserJet IIp, LaserJet III y LaserJet 2000 y códigos compatibles.

El programa dvilj2p hace que el filtro hpdf sea más complejo, en virtud de que dvilj2p no puede leer desde la entrada estandar. Este desea trabajar desde un nombre de fichero. Y lo que es peor, es que el nombre del fichero debe contar con la terminación .dvi, de tal forma que usar /dev/fd/0 como entrada estandar representa un problema. Esto lo podremos solucionar, creando un enlace (simbólico) de un fichero temporal (uno que su tenga como extensión .dvi) a /dev/fd/0, y por tanto forzando a dvilj2p a leer la entrada estandar.

El único punto negativo que nos queda por resolver, es que no podemos utilizar /tmp para el enlace temporal. Los enlaces simbólicos son propiedad del grupo y usuario bin. El filtro de ejecuta como usuario daemon. Y el directorio /tmp cuenta con el bit ``pegajoso'' activado. El filtro puede crear el enlace, pero no podrá limpiarlo una vez que termine y eliminarlo, ya que pertenece a un usuario diferente.

En lugar de esto, el filtro creará el enlace simbólico en el directorio de trabajo actual, el cual será el directorio de la cola de impresión (especificado en /etc/printcap por la característica sd). Este lugar es perfecto para que los filtros hagan su trabajo, especialmente que aqui existe más espacio (algunas veces) en disco duro, que bajo el directorio /tmp.

Finalmente, aqui presentamos el filtro:

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

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

#
#  Definir una funcion para limpiar nuestros ficheros temporales.  Estos existen
#  en el directorio de trabajo actual, el cual servira para la cola de impresion de
#  la impresora.
#
cleanup() {
   rm -f hpdf$$.dvi
}

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

#
#  Si el usuario elimina el trabajo, LPD enviara un SIGINT, para que SIGINT
#  (y algunas otros avisos) limpien despues de nosotros.
#
trap cleanup 1 2 15 

#
#  Asegurarse de que no estamos creando un conflicto con ficheros existentes.
#
cleanup

#
#  Crear el enlace de la entrada DVI a la entrada estandar (el fichero a imprimir).
#
ln -s /dev/fd/0 hpdf$$.dvi || fatal "Cannot symlink /dev/fd/0"

#
#  Hacer  LF = CR+LF
#
printf "\033&k2G" || fatal "Cannot initialize printer"

# 
#  Convertir e imprimir.  Regresar valor de dvilj2p no parece my confiable, 
#  asi que es ignorado.
#
dvilj2p -M1 -q -e- dfhp$$.dvi

#
#  Limpiar y salir
#
cleanup
exit 0

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

Todos estos filtros de conversión realizan una gran labor en pro de sus labores de impresión, pero con el inconveniente de que cada usuario debe especificar cual filtro es el que se debe utilizar (cuando se invoca el comando lpr(1)). Si sus usarios no son lo que podemos llamar aficionados a la computación, el especificar que filtro utilizar puede volverse algo molesto. Y lo que es peor, el uso de un filtro inadecuado puede causar que su impresora termine imprimiendo cientos de hojas de papel de manera incorrecta.

En lugar de instalar filtros de conversión, quizás le interese intentar que su filtro de texto (dado que es el filtro por default) determine que tipo de fichero se esta enviando a imprimir y automáticamente ejecute el filtro adecuado. En este caso, herramientas como file pueden ser de mucha utilidad. Claro esta, puede que algunos tipos de ficheros puede ser difícil determinar de que tipo son, pero siempre puede contar con filtros especiales para ellos.

La Colección de Ports de FreeBSD cuenta con un filtro de texto que ejecuta de forma automática la conversión, llamado apsfilter. Este puede detectar texto plano, PostScript y ficheros DVI, ejecutar la conversión adecuada e imprimir.


10.4.1.5. Filtros de Salida

El sistema de cola de impresión de LPD soporta otro tipo de filtros, que aun no hemos explicado aqui: un filtro de salida. Un filtro de salida esta diseñado para imprimir texto plano únicamente, como el filtro de texto, pero de una forma más simplificada. Si usted esta usando un filtro de salida pero no filtro de texto, entonces:

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

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

  • En el filtro de salida, LPD no utiliza como argumento el nombre de usuario o host, por lo tanto no esta diseñado para llevar un conteo por usuario. De hecho, este sólo maneja dos argumentos:

    nombre-filtro -wancho -llargo

    Donde ancho es tomado de la característica pw y largo es tomado de la característica pl, para la impresora en cuestión.

Es importante que no se deje seducir por la simplicidad del filtro de salida. Si usted desea que cada fichero de un trabajo sea impreso en una página diferente, el filtro de salida no hará este trabajo. Utilice un filtro de texto (también conocido como filtro de entrada); vea la sección Instalando un Filtro de Texto . Mas allá, el filtro de salida es de hecho más complicado en ese aspecto dado que examina la cadena de bytes que se ha enviado, para buscar alguna marca especial y enviarse señas él mismo, a nombre de LPD.

De cualquier forma, un filtro de salida es necesario si usted desea páginas de encabezado y requiere de enviar un secuencia de escape u otras cadenas de inicialización para habilitar la impresión de encabezados. (Aunque también es trivial si desea cobrar de acuerdo a las páginas encabezado de cada usuario, dado que LPD no otorga información del usuario o host, al filtro de salida.)

En una sola impresora, LPD permite el uso tanto del filtro de salida como el filtro de texto. En cuyo caso, LPD iniciará el filtro de salida para imprimir las páginas de encabezado (vea la sección Páginas de Encabezado) únicamente. Posteriormente LPD espera que el filtro de salida se detenga por sí mismo al enviarle dos bytes al filtro: ASCII 031 seguido de ASCII 001. Cuando un filtro de salida recibe estos dos bytes (031, 001), deberá pararse, enviandose a sí mismo una señal SIGSTOP. Una vez que LPD ha terminado de ejecutar otros filtros, reiniciará el filtro de salida, el enviarle una señal SIGCONT.

Si existe un filtro de salida, pero no existe un filtro de texto y LPD esta trabajando con un trabajo en texto plano, LPD utilizará el filtro de salida para hacer el trabajo. Como se comento anteriormente, el filtro de salida imprimirá cada fichero del trabajo en secuencia, sin intervención de alimentación u otras ventajas con lo que al papel se refiere, y seguramente que esto no es lo que usted desea. En casi todos los casos usted necesitará un filtro de texto.

El programa lpf, que comentamos anteriormente como un filtro de texto, también es capaz de ejecutar un filtro de salida. Si desea un trabajo rápido-y-sucio del filtro de salida, pero no desea que se escriban bytes de detección, ni envien códigos, puede usar lpf. También puede incluir lpf en un script de shell, para que controle cualquier código de inicialización que la impresora requiera.


10.4.1.6. lpf: Un Filtro de Texto

El programa /usr/libexec/lpr/lpf que viene con los binarios de FreeBSD, como un filtro de texto (filtro de entrada) que puede darle sangía a los trabajos (usando la opción lpr -i), que permite el envío literal de caracteres (con el comando lpr -l), ajusta la posición de impresión para caracteres de retroceso y tabulador, y contabiliza las páginas impresas. También puede funcionar como un filtro de salida.

lpf se ajusta a la configuración de gran cantidad de impresoras. Y aunque no tiene la habilidad de enviar secuencias de inicialización a la impresora, es muy sencillo escribir un script de shell para llevar a cabo la inicialización y posteriormente ejecutar lpf.

Para efecto de que lpf lleve un conteo correcto, requiere que se tengan los valores adecuados de las características pw y pl, en el fichero /etc/printcap. En base a estos, determina cuanto texto puede existir en una página y cuantas páginas existen en el trabajo de un usuario. Para mayor información al respecto, vea la sección Contabilidad del Uso de la Impresora.


10.4.2. Páginas de Encabezado

Si usted cuenta con gran cantidad de usuarios, y todos imprimiendo en varias impresoras, entonces sería conveniente considerar las páginas de encabezado como un mal necesario.

Las páginas de encabezados, también conocidas como titulares o páginas de aviso identifican a quien pertenece el trabajo enviado a imprimir, una vez que han sido impresos. Normalmente estas son impresas en letras grandes y de color negro remarcado (negritas), y quizás con bordes decorativos, de tal forma que puedan distinguirse entre el resto de las páginas enviadas a imprimir. Estas permiten a los usuarios localizar rápidamente sus impresiones. El obvio lado negativo de estas páginas es que se debe imprimir una hoja adicional, por cada trabajo enviado a la impresora, su utilidad efímera, no dura más que unos minutos, terminando en una bandeja de reciclaje. (Note que las páginas de encabezado se imprimen con cada trabajo enviado a la impresora, no con cada página impresa, de tal manera que el deperdicio de papel no es tan grave.)

El sistema LPD puede proveerle de las páginas de encabezado de forma automática para sus impresiones, si su impresora soporta de la impresión de texto plano directamente. Si usted cuenta con una impresora PostScript, necesitará un programa externo para generar estas páginas; vea la sección Páginas de Encabezado en Impresoras PostScript.


10.4.2.1. Habilitando las Páginas de Encabezado

En la sección Configuración Simple de una Impresora, deshabilitamos la impresión de estas páginas al especificar sh (que son siglas en inglés para ``supress header'', algo así como ``eliminar encabezados'') en el fichero /etc/printcap. Para efecto de habilitar la impresión de páginas de encabezado, simplemente elimine la característica sh del fichero.

¿Suena demasiado fácil, verdad?

Efectivamente. Es probable que deba proveer de un filtro de salida, para efecto de que se mande la cadena de inicialización a la impresora. Aqui tenemos un ejemplo de un filtro de salida para impresoras compatibles con PCL de Hewlett Packard:

#!/bin/sh
#
#  hpof - Filtro de salida para impresoras compatibles con Hewlett Packard PCL
#  Instalado en /usr/local/libexec/hpof

printf "\033&k2G" || exit 2
exec /usr/libexec/lpr/lpf

Especifique la ruta del filtro de salida, en la característica of. Vea la sección Filtros de Salida para más información al respecto.

Aqui podrá ver un ejemplo de un fichero /etc/printcap para la impresora teak que trabajamos anteriormente; hemos añadido las páginas de encabezado, así como el filtro de salida mencionado anteriormente:

#
#  /etc/printcap for host orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
        :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
        :if=/usr/local/libexec/hpif:\
        :vf=/usr/local/libexec/hpvf:\
        :of=/usr/local/libexec/hpof:

Ahora, cuando los usuarios impriman sus trabajos a la impresora teak, ellos obtendrán una página de encabezado por cada trabajo que manden a imprimir. Si los usuarios desean pasar un tiempo buscando sus impresiones, pueden deshabilitar la impresión de esta página con el comando lpr -h; para más información sobre las opciones de lpr(1), vea la sección Opciones de Páginas de Encabezado.

Nota: El sistema LPD envia a la impresora un caracter de alimentación de página. Si su impresora utiliza un caracter diferente de alimentación de página, especifíquelo en el fichero /etc/printcap, bajo la característica ff.


10.4.2.2. Controlando las Páginas de Encabezado

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

      k                   ll       ll
      k                    l        l
      k                    l        l
      k   k     eeee       l        l     y    y
      k  k     e    e      l        l     y    y
      k k      eeeeee      l        l     y    y
      kk k     e           l        l     y    y
      k   k    e    e      l        l     y   yy
      k    k    eeee      lll      lll     yyy y
                                               y
                                          y    y
                                           yyyy


                                   ll
                          t         l        i
                          t         l
       oooo    u    u   ttttt       l       ii     n nnn     eeee
      o    o   u    u     t         l        i     nn   n   e    e
      o    o   u    u     t         l        i     n    n   eeeeee
      o    o   u    u     t         l        i     n    n   e
      o    o   u   uu     t  t      l        i     n    n   e    e
       oooo     uuu u      tt      lll      iii    n    n    eeee









      r rrr     oooo     ssss     eeee
      rr   r   o    o   s    s   e    e
      r        o    o    ss      eeeeee
      r        o    o      ss    e
      r        o    o   s    s   e    e
      r         oooo     ssss     eeee







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

Después de esta página, LPD manda un caracter de alimentación de página, para que el trabajo sea impreso en una hoja blanca nueva (a menos que cuente con sf (por sus siglas en inglés ``supress form feed'', que es ``eliminación de alimentación de página'') en el fichero /etc/printcap).

Si lo prefiere, LPD puede generar un encabezado pequeño; puede hacer esto, al especificar sb en el fichero /etc/printcap. La página de encabezado que será impresa se vera así:

rose:kelly  Job: outline  Date: Sun Sep 17 11:07:51 1995

Por default, LPD imprime la página de encabezado en primer término y posteriormente el trabajo. Para cambiar este comportamiento, es necesario incluir la característica hl (encabezado a lo último por sus siglas en inglés), en el fichero /etc/printcap.


10.4.2.3. Conteo de P´ginas de Encabezado

Cuando se utiliza la utilidad integrada de conteo de LPD, refuerza el paradigma de que; cuando se refiere al conteo de impresiones: las páginas de encabezados deben ser sin coto alguno.

¿Por qué?

Por que el filtro de salida es el único programa externo que puede llevar un conteo de las páginas impresas, cuando tiene el control, y este no es provisto con información de un usuario o host o algun fichero contador, de tal forma que no tiene idea de a quien cargar estas impresiones. Tampoco es conveniente, simplemente ``cargar una impresión'' al total de las impresiones del filtro de texto o filtro de conversión (esos que cuentan con información del usuario y host), esto en virtud de que los usuarios pueden suprimir el uso de estas páginas con lpr -h. Esto implica que se le podrían cobrar hojas que ellos no imprimieron. Básicamente el comando lpr -h sería la opción preferida de los usuarios concientes del sistema, pero usted no puede ofrecer incentivo alguno para que se utilice.

Tampoco es una buena alternativa que cada filtro genere sus páginas de encabezado (y por lo tanto poder cobrar por ellas). Si los usuarios desean suprimirlas usando la opción lpr -h, aún obtendrán estas páginas y les serán cobradas, en virtud de que LPD no tiene transfiere la opción -h a los filtros.

Así que, ¿Qué opciones tenemos?

Usted puede:

  • Aceptar el paradigma de LPD y no cobrar por las páginas de encabezado.

  • Instalar una alternativa a LPD, tal como LPRng. La sección Alternativas al Sistema de Impresión Estándar le informa sobre otros programas que puede utilizar, que sustituyan a LPD.

  • Escribir un filtro de salida inteligente. Normalmente, un filtro de salida no esta diseñado para hacer otra cosa, que no sea inicializar la impresora o bien hacer alguna conversión sencilla de caracteres. Esta diseñado para páginas de encabezado y trabajos en texto plano (cuando no existe algun filtro de texto (entrada)). Pero cuando si existe un filtro de texto, para los trabajos en texto plano, entonces LPD sólo hará uso del filtro de salida para las páginas de encabezado. Y el filtro de salida puede pasar el texto de la página encabezado generado por LPD, para determinar el usuario y el host al cual se le cobrará dicha impresión. El único problema con este metodo es que el filtro de salida aún no sabe que fichero usar para llevar la cuenta de las impresiones (la característica af no pasa el nombre del fichero), pero si usted cuenta con un fichero establecido para llevar esta cuenta, puede incluirlo en el código del filtro de salida. Para efecto de facilitar este paso, utilice la característica sh (encabezado corto) del fichero /etc/printcap. Nuevamente, todo esto podría resultar muy complicado, y los usuarios estaran muy agradecidos con el generoso administrador del sistema que genera las páginas de encabezado gratis.


10.4.2.4. Páginas de Encabezado en Impresoras PostScript

Como se ha descrito anteriormente, LPD puede generar páginas encabezado en texto plano para gran cantidad de impresoras. Claro esta, que PostScript no puede imprimir texto plano directamente, de tal forma que la habilidad de imprimir estas páginas de LPD, es inservible--o casi.

Una forma obvia de crear las páginas de encabezado, es hacer que cada filtro de conversión y de texto, creen sus páginas de encabezado. Los filtros deberán utilizar el nombre de usuario y host, para generar esta página personalizada. Lo malo de este metodo es que los usuarios siempre obtendrán una página de encabezado, aun cuando usen en sus impresiones lpr -h.

Exploremos este metodo. El siguiente script considera tres argumentos (nombre del login del usuario, nombre del host, y nombre del trabajo) y genera una página simple de encabezado PostScript:

#!/bin/sh
#
#  make-ps-header - crea una pagina de encabezado PostScript a stdout
#  Instalado en /usr/local/libexec/make-ps-header
#

#
#  Estas son unidades PostScript (72 a la pulgada).  Modifiquelo para A4 o 
#  cualquier tamano de papel que este utilizando.
#
page_width=612
page_height=792
border=72

#
#  Verificar argumentos
#
if [ $# -ne 3 ]; then
    echo "Usage: `basename $0` <user> <host> <job>" 1>&2
    exit 1
fi

#
#  Salvar estos, principalmente para lectura de PostScript, mas abajo.
#
user=$1
host=$2
job=$3
date=`date`

#
#  Enviar el codigo PostScript a la salida estandar.
#
exec cat <<EOF
%!PS

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

%
%  Crear un grueso y poco placentero borde alrededor del borde de la pagina.
%
$border $border moveto
$page_width $border 2 mul sub 0 rlineto
0 $page_height $border 2 mul sub rlineto
currentscreen 3 -1 roll pop 100 3 1 roll setscreen
$border 2 mul $page_width sub 0 rlineto closepath
0.8 setgray 10 setlinewidth stroke 0 setgray

%
%  Desplegar nombre de login del usuario, bonito largo y prominente
%
/Helvetica-Bold findfont 64 scalefont setfont
$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
($user) show

%
%  Ahora mostrar los aburridos detalle generales
%
/Helvetica findfont 14 scalefont setfont
/y 200 def
[ (Job:) (Host:) (Date:) ] {
200 y moveto show /y y 18 sub def }
forall

/Helvetica-Bold findfont 14 scalefont setfont
/y 200 def
[ ($job) ($host) ($date) ] {
        270 y moveto show /y y 18 sub def
} forall

%
% Eso es todo
%
restore
showpage
EOF

Ahora, cada uno de los filtros de conversión y de texto, pueden invocar este script, para en primer lugar generar esta página y después imprimir el trabajo del usuario. Aqui tenemos el filtro de conversión DVI que revisamos anteriormente en este documento, modificado para generar páginas de encabezado:

#!/bin/sh
#
#  psdf - DVI to PostScript printer filter
#  Installed in /usr/local/libexec/psdf
#
#  Invoked by lpd when user runs lpr -d
#
                
orig_args="$@"

fail() {
    echo "$@" 1>&2
    exit 2
}

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

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

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

Note como el filtro debe pasar los argumentos en orden, para efecto de determinar el nombre de usuario y host. El procedimiento para los otros filtros de conversión es identico. El filtro de texto tiene una pequeña variación (vea la sección Como Trabajan los Filtros).

Como hemos mencionado anteriormente, este esquema simplemente nos sirve para deshabilitar la opción ``eliminar encabezados'' (la opción -h) de lpr. Si los usuarios desean salvar algunos arboles (o algunos centavos si usted cobra por estas páginas), no podrán deshabilitar esta opción, ya que cada filtro imprimirá una página de encabezado con cada trabajo impreso.

Para permitir que los usuarios desactiven las páginas de encabezado en cada trabajo, será necesario que utilice el truco del que hablamos en la sección Conteo de Páginas de Encabezado: escribir un filtro de salida que pase la página generada por LPD y produzca una versión PostScript de la misma. Si el usuario utiliza lpr -h, entonces LPD no generará una página encabezado, y tampoco su filtro de salida. De otra forma, su filtro de salida tomará los datos de LPD y enviará el código PostScript apropiado para la impresión de la página de encabezado.

Si usted cuenta con una impresora PostScript conectada a un puerto serial, puede usar lprps, que cuenta con un filtro de salida, psof, que hace lo mencionado. Note que psof no cobra por las páginas de encabezado.


10.4.3. Impresión en Red

FreeBSD cuenta con soporte para impresión en red: envío de trabajos a impresoras remotas. La impresión en red, normalmente se cuenta con dos escenarios:

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

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

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

    • Puede contar con soporte para envío de datos por medio de la conexión de red. En este caso, usted ``conecta'' la impresora a un host de la red, al hacer responsable, a dicho host, de la administración de los trabajos en la cola de impresión y su envio a la impresora. La sección Impresoras con Interfaces de Red para Secuencia de Datos le da algunos consejos y sugerencias sobre como instalar estas impresoras.


10.4.3.1. Impresoras Instaladas en Hosts Remotos

El sistema de cola de impresión de LPD cuenta con soporte integrado para enviar trabajos de impresión a un host remoto que cuente con LPD (o alguna sistema compatible con LPD). Esta habilidad le permite instalar una impresora en un host, y hacerla accesible desde otros hosts. También es útil con impresoras que cuentan con interfaces de red que comprenden el protocolo de LPD.

Para habilitar la funcionalidad de impresión remota, primero instale la impresora en un host, que será el host de impresión. Esto lo podemos hacer utilizando los pasos descritos en la sección Configuración Simple de una impresora. Realice cualquier configuración adicional adicional que se requiera, de acuerdo a lo descrito en la sección Configuración Avanzada de una Impresora. Asegurese de probar la impresora y de que esta funcionando correctamente, así como las funciones de LPD que haya habilitado. También asegurese de que el host local cuenta con autorización para usar el servicio de LPD en el host remoto (vea la sección Restricción de Trabajos de Impresoras Remotas).

Si usted esta utilizando una impresora que cuenta con un dispositivo de red, compatible con LPD, entonces el host de impresión mencionado más adelante, será la misma impresora, y el nombre de la impresora será el nombre que usted le haya asignado a la impresora. Vea la documentación que incluye su impresora y/o el dispositivo de impresión en red para detalles al respecto.

Sugerencia: Si usted esta utilizando una impresora LaserJet Hewlett Packard entonces la impresora nombre automáticamente hará la conversión de LF a CRLF, de tal forma que no será necesario el uso del script hpif.

Y de esta manera, para los hosts que desee que tengan acceso a la impresora, deberá crear una entrada en su fichero /etc/printcap, que contenga lo siguiente:

  1. Nombre la entrada como desee. Para simplificar, quizás desee darle el mismo nombre y alias usado en el host de impresión.

  2. La característica lp dejela en blanco, de manera explícita (:lp=:).

  3. Cree un directorio para la cola de impresión y especifique su ruta en la característica sd. LPD utilizará este directorio para almacenar los trabajos antes de que sean enviados al host de impresión.

  4. Añada el nombre del host de impresión a la característica rm.

  5. Añada el nombre de la impresora en el host de impresión en la característica rp.

Eso es todo. No es necesario listar los filtros de conversión, dimensiones de la página, o algo adicional en el fichero /etc/printcap.

Aqui tenemos un ejemplo. El host rose cuenta con dos impresoras, bamboo y rattan. Vamos a habilitar a usuarios en el host orchid para que puedan imprimir en esas impresoras. Aqui tenemos el fichero /etc/printcap para el host orchid (usado en la sección Habilitando las Páginas de Encabezado). Ya cuenta con la entrada para la impresora teak; y hemos añadido las entradas para las impresoras del host rose:

#
#  Fichero /etc/printcap para el host orchid - anadiendo impresoras 
#  (remotas) del host rose
#

#
#  teak es impresora local; esta conectada directamente a orchid:
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
        :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
        :if=/usr/local/libexec/ifhp:\
        :vf=/usr/local/libexec/vfhp:\
        :of=/usr/local/libexec/ofhp:

#
#  rattan esta conectada a rose; envio de trabajos para rattan en rose:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:

#
#  bamboo tambien esta conectada a rose:
#
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:

Posteriormente, sólo necesitamos crear los directorios para la cola de impresión en el host orchid:

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

Ahora los usuarios de orchid pueden imprimir en rattan y bamboo. Si, por ejemplo, un usuario en orchid teclea

% lpr -P bamboo -d sushi-review.dvi
el sistema de cola de LPD en el host orchid, copiará el trabajo al directorio de cola /var/spool/lpd/bamboo y notará que se trata de un trabajo DVI. Tan pronto como el host rose tenga espacio en el directorio de cola de impresión de bamboo, los dos LPDs transferirán el fichero a rose. El fichero quedará en espera en la cola de rose hasta que sea impreso. Este será convertido de DVI a PostScript (dado que bamboo es una impresora PostScript), en rose.


10.4.3.2. Impresoras con Interfaces de Red para Secuencia de Datos

Comunmente, cuando usted adquiere una tarjeta de red para impresoras, puede obtener dos versiones: una que emula la cola de impresión (que son las de mayor valor), o bien, otra que simplemente le permite recibir datos tal como lo hace un puerto serial o paralelo (la versió económica). Esta sección le explica como utilizar la versión económica. Para el uso de la versión de mayor valor, vea la sección Impresoras Instaladas en Hosts Remotos.

El formato del fichero /etc/printcap le permite especificar que puerto serial o paralelo utilizar, y (en caso de que utilice un puerto serial) la velocidad de baudio, si utiliza control de flujo, retraso en tabulador, conversión de nuevas líneas y más. Pero no hay manera de indicar la conexión de una impresora que escucha en un puerto TCP/IP u otro puerto de red.

Para efecto de enviar datos a una impresora en red, usted necesita crear un programa de comunicación que pueda ser llamado desde un filtro de texto o de conversión. Aqui tenemos un ejemplo de dicho programa: el script netprint, que toma todos los datos de la entrada estandar y los envia a un impresora conectada a la red. Hemos especificado el nombre de host de la impresora como primer argumento y el puerto al que esta conectado como segundo argumento, en netprint. Note que este tipo de soporte sólo trabaja en una vía (de FreeBSD a la impresora); gran cantidad de impresoras cuentan con soporte de ambas vías, y quizás desee tomar ventaja de esto (para obtener estatus de impresión, contabilidad, desempeño, etc.).

#!/usr/bin/perl
#
#  netprint - Filtro de texto para impresoras en red
#  Instalado en /usr/local/libexec/netprint
#
$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";

$printer_host = $ARGV[0];
$printer_port = $ARGV[1];

require 'sys/socket.ph';

($ignore, $ignore, $protocol) = getprotobyname('tcp');
($ignore, $ignore, $ignore, $ignore, $address)
    = gethostbyname($printer_host);

$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);

socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
    || die "Can't create TCP/IP stream socket: $!";
connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
while (<STDIN>) { print PRINTER; }
exit 0;

Una vez hecho este script, podemos utilizarlo en varios filtros. Supongamos que contamos con la impresora de línea Diablo 750-N conectada a la red. La impresora acepta datos para impresión en el puerto 5100. El nombre de host que tiene la impresora es scrivener. El filtro de texto a usar quedaría de la siguiente manera:

#!/bin/sh
#
#  diablo-if-net - Filtro de texto para la impresora Diable en `scrivener' usando
#  el puerto 5100.   Instalado en /usr/local/libexec/diablo-if-net
#
exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100

10.4.4. Restricción del Uso de la Impresora

Esta sección le da información sobre la restricción en el uso de la impresora. El sistema de LPD le permite controlar quien puede acceder a la impresora de ambas formas, local y remota, si los usuarios pueden imprimir múltiples copias, que tan grandes pueden ser los trabajos de impresión, y limitar el tamaño de la cola de impresión.


10.4.4.1. Restricción de Copias Multiples

El sistema de LPD le facilita a los usuarios el imprimir múltiples copias de un mismo fichero. Los usuarios pueden usar (por ejemplo) lpr -#5 para imprimir 5 copias de cada fichero enviado. El hecho de que esto sea bueno o no es algo que depende de usted.

Si usted siente que las copias múltiples causan trabajo inecesario a su impresora, puede deshabilitar la opción -# de lpr(1), al incluir la característica sc en su fichero /etc/printcap. Cuando los usuarios utilicen la opción -# al momento de imprimir, verán el siguiente aviso:

lpr: multiple copies are not allowed

Recuerde que si usted a configurado una impresora para su acceso de forma remota (vea la sección Impresoras Instaladas en Hosts Remotos), será necesario que también cuente con la característica sc en el fichero /etc/printcap del host remoto, o bien, los usuarios aun podrán hacer uso de la opción -#, al usar un host diferente.

Aqui presentamos un ejemplo. Este es un ejemplo del fichero /etc/printcap, del host rose. La impresora rattan es ``de batalla'' por lo que permitiremos las copias múltiples, pero la impresora laser bamboo es más delicada por lo que vamos a deshabilitar las copias múltiples, al añadir la característica sc:

#
#  Fichero /etc/printcap del host rose - restringe copias multiples en bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

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

Ahora, tambié debemos añadir la característica sc en el fichero /etc/printcap del host orchid (y ya que estamos en eso, deshabiltemos las copias múltiples para la impresora teak):

#
#  Fichero /etc/printcap del host orchid - sin copias multiples para la
#  impresora local teak o impresora remota bamboo
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
        :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
        :if=/usr/local/libexec/ifhp:\
        :vf=/usr/local/libexec/vfhp:\
        :of=/usr/local/libexec/ofhp:

rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:

bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
        :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:

Al incluir la característica sc, hemos prevenido el uso de lpr -#, pero eso no previene el uso de lpr(1) gran cantidad de veces, o el envío del mismo trabajo varias veces, tal como:

% lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign

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


10.4.4.2. Restricción de Acceso a Impresoras

Usted puede controlar quien puede imprimir y en que impresoras, haciendo uso del mecanismo de grupos de Unix y de la característica rg en el fichero /etc/printcap. Simplemente añada en un grupo determinado, a los usuarios que desea puedan imprimir en cierta impresora, y después añada el nombre del grupo a la característica rg.

Todos los usuarios que no pertenezcan a este grupo (incluyendo al superusuario (root)), y que deseen imprimir en la impresora controlada, les aparecerá este mensaje: ``lpr: Not a member of the restricted group''

De la misma forma que hicimos con sc (la eliminación de copias múltiples), con rg deber´ indicarla en los hosts remotos que tengan acceso a sus impresoras si lo cree conveniente (vea la sección Impresoras Instaladas en Hosts Remotos).

Por ejemplo, vamos a permitir que cualquiera imprima en rattan, pero solo aquellos que forman parte del grupo artistas podrán usar la impresora bamboo. Nuevamente tenemos el fichero /etc/printcap para el host rose:

#
#  Fichero /etc/printcap del host rose - grupo restringido para bamboo
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

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

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

Nota: Sólo puede haber un grupo restringido por impresora.


10.4.4.3. Controlando el Tamaño de los Trabajos Enviados

Si usted cuenta con gran cantidad de usuarios accesando sus impresoras, probablemente necesite establecer un límite máximo en el tamaño que deban tener los trabajos enviados a imprimir. Después de todo, sólo existe tanto espacio libre en el sistema de ficheros como el que se tiene en los directorios de cola, y también usted debe asegurarse de que exista el espacio suficiente para otros usuarios.

El sistema de LPD, le permite especificar un monto maximo de tamaño en bytes para un trabajo, con la característica mx. Las unidades están indicadas en blques BUFSIZ, que son de 1024 bytes. Si usted le agrega un cero a esta característica, no habrá límite en el tamaño de los trabajos que se puedan enviar a imprimir; por otro lado, si no se especifica la característica mx, el límite por default será de 1000 bloques.

Nota: El límite es válido para los ficheros del trabajo, y no para el tamaño total del trabajo.

El sistema de LPD no rehusará imprimir los trabajos que exceden el límite, en su lugar procederá con la impresión hasta el límite indicado. El resto del trabajo quedará descartado. El hecho de que este comportamiento sea correcto o no, aun es tema de debate.

Ahora permitamonos incluir límites a nuestras impresoras de ejemplo rattan y bamboo. En virtud de que esos ``artistas'' tienden a imprimir grandes trabajos en PostScript, los vamos a limitar a cinco megabytes. En la impresora de línea no vamos a especificar límite:

#
#  Fichero /etc/printcap del host rose
#

#
#  Sin limite de tamano en el trabajo:
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:mx#0:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:

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

Nuevamente, los límites aplican sólo para los usuarios locales. Si se han configurado las impresoras para su acceso de forma remota, los usuarios que accesen remotamente no tendrán esta limitante. Para efecto de que esto sea válido en los usuarios remotos, deberá agregar la característica mx en el fichero /etc/printcap de los hosts remotos. Vea la sección Impresoras Instaladas en Hosts Remotos para mayor información sobre la instalación de impresoras en red.

Existe otra forma especializada para limitar el tamaño de los trabajos, desde impresoras remotas, vea la sección Restricción de Trabajos de Impresoras Remotas.


10.4.4.4. Restricción de Trabajos de Impresoras Remotas

El sistema de cola de LPD cuenta con varios metodos para restringir la impresión de trabajos enviados por hosts remotos:

Restricciones del Host

Haciendo uso de los ficheros /etc/hosts.equiv y /etc/hosts.lpd, usted puede controlar el LPD local, para determinar de que hosts remotos se acepten conexiones. En este caso, LPD verifica, en caso de una petición, que el host remoto se encuentre listado en agluno de estos dos ficheros. Si no es así, LPD rechazará la petición.

El formato de estos ficheros es simple: el nombre de un host por línea. Note que el fichero /etc/hosts.equiv también es usado por el protocolo ruserok(3), y afecta programas como rsh(1) y rcp(1), así que tenga cuidado al editarlo.

Por ejemplo, este es el fichero /etc/hosts.lpd del host rose:

orchid
violet
madrigal.fishbaum.de

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

Restricciones de Tamaño

Usted puede controlar cuanto espacio libre se requiere, en el sistema de fichero donde se localiza el directorio del sistema de impresión. Cree un fichero llamado minfree, en el directorio local de la cola de impresión. En ese fichero añada un numero que representa el numero de bloques libres que deben haber en el disco (512 bytes), para efecto de aceptar un trabajo de forma remota.

Esto permite asegurarle que los usuarios remotos no llenaran su disco duro. Esto también puede usarse para dar cierta prioridad a los usuarios locales: ya que podrá colocar sus trabajos en espera en la cola de impresión, hasta que la cantidad de espacio libre sea inferior a la indicada en el fichero minfree.

Por ejemplo, incluyamos a minfree en la impresora bamboo. Para esto, primero examinamos el fichero /etc/printcap, para encontrar los datos de la impresora; aqui tenemos la entrada de bamboo:

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

El directorio de la cola de impresión es indicado por la característica sd. Vamos a dejar tres megabytes (que son 6144 bloques de disco) como espacio libre que debe existir en el sistema de ficheros, para que LPD acepte trabajos remotos:

# echo 6144 > /var/spool/lpd/bamboo/minfree
             
Restricciones por Usuario

Usted puede controlar que usuarios remotos pueden imprimir en impresoras locales, al incluir la característica rs en /etc/printcap. Cuando rs aparece en la entrada de una impresora que esta conectada localmente, LPD aceptará trabajos de usuarios remotos, siempre y cuando el usuario que ha enviado el trabajo, tenga alguna cuenta, con el mismo nombre de usuario en el host local. De otra forma LPD no hará el trabajo.

Esta característica es particularmente útil en medios donde (por ejemplo) existen varias areas que comparten una red, y algunos usuarios traspasan las fronteras departamentales. Al otorgarles una cuenta en su sistema, pueden hacer uso de sus impresoras, desde su propio departamento de sistemas. Si solo desea permitirles hacer uso de sus impresoras y no de los recursos de su sistema, puede asignarles cuentas ``tontas'' (token accounts), que no cuentan con un directorio home y con un un shell inservible como /usr/bin/false.


10.4.5. Contabilidad del Uso de la Impresora

Así que usted requiere de cobrar por las impresiones. ¿Y por qué no?, el papel y la tinta cuestan dinero. Y también están los costos de mantenimiento--las impresoras estan llenas de partes móviles que tienden a descomponerse. Usted ha analizado sus impresoras, los patrones de uso, y costos de mantenimiento y ha llegado a un costo por-página (o por-pie, por-metro, o por-loquesea). Ahora bien, ¿Cómo empezar a llevar una contabilidad de las impresiones?.

Bueno, la mala noticia es que LPD no provee de mucha ayuda en esta area. El conteo depende en gran parte en el tipo de impresora con que usted cuenta, el formato en que se imprime y de sus requerimientos para cobrar por el uso de la impresora.

Para implementar un contador, deberá modificar el filtro de texto (para cobrar por impresiones en texto plano) y los filtros de conversión (para cobrar por impresiones en otro formato), para efecto de llevar un conteo de páginas o peticiones a la impresora para imprimir. Esto no podrá llevarse a cabo con un simple filtro de salida, dado que no puede llevar un conteo. Vea la sección Filtros.

En términos generales existen dos formas de hacer esto:

  • El contador periodico es la forma más comun, quizás por que es la más sencilla. Cuando alguien envia una impresión, el filtro registra el usuario, host y numero de páginas en un fichero contador. Cada mes, semestre, año o cualquier periodo de tiempo que prefiera, puede revisar estos ficheros, de tal forma que sepa cuantas impresiones ha realizado cada usuario y poder cobrar por las mismas. Después de limpiar estos ficheros puede empezar un nuevo periodo de cero.

  • El contador por tiempo es menos conocido, quizás por su dificultad de uso. Este metodo hace que sus filtros cobren al usuario por sus impresiones, en cuanto hacen uso de las impresoras. Como las cuotas de disco, el conteo es inmediato. Con esto, usted puede prevenir que usuarios impriman cuando sus cuentas están en numeros rojos, y quizás en cierto modo proveer a sus usuarios de una forma de verificar sus ``cuotas de impresión''. Pero este metodo requiere de uso de bases de datos, para dar seguimiento a los usuarios y sus cuotas.

El sistema de cola de LPD cuenta con soporte para ambos metodos: en virtud de que usted debe proveer los filtros (bueno, casi todo el tiempo), también debe proveer del código para el contador. Pero hay un lado positivo: usted cuenta con una enorme flexibilidad en cuanto a metodos de contabilidad se refiere. Por ejemplo, puede utilizar un contador periodico o por tiempo. Usted selecciona que información debe quedar registrada: nombre de usuario, nombre del host, tipo de trabajo, páginas impresas, medidas del papel usado, tiempo que duro en imprimir el trabajo, y así sucesivamente. Y para hacer esto, sólo debe modificar sus filtros.


10.4.5.1. Contabilidad de Impresiones Rápida y Sucia

FreeBSD cuenta con dos programas que pueden auxiliarlo para instalar un simple contador periodico. Ellos son; el filtro de texto lpf, descrito en la sección lpf: un Filtro de Texto, y pac(8), un programa para reunir y totalizar la información de los ficheros de contador de impresiones.

Como se menciono en la sección de filtros (Como Trabajan los Filtros), LPD inicia los filtros de texto y conversión con el nombre del fichero contador a usar en la línea de comando del filtro. Los filtros pueden usar este argumento para saber en donde registrar la información. El nombre de este fichero se indica en la característica af del fichero /etc/printcap, y si no se indica su ruta completa, se hará referencia al directorio de la cola de impresión.

LPD inicia lpf con los argumentos de alto y ancho del papel (tomados de pw y pl). lpf usa estos argumentos para determinar cuanto papel será necesario. Una vez enviado el fichero a impresión, se escribe en el fichero contador un registro. Este registro es así:

2.00 rose:andy
3.00 rose:kelly
3.00 orchid:mary
5.00 orchid:mary
2.00 orchid:zhang

Deberá usar un fichero contador para cada impresora, dado que lpf no cuenta con una lógica de bloqueo de ficheros incluida, y dos lpf escribiendo al mismo tiempo en un fichero podrian corromperlo. Una forma segura para garantizar el uso de ficheros distintos por impresora, es usar af=acct en el fichero /etc/printcap. De esta forma contaremos con el fichero contador de cada impresora por separado, en el directorio de la cola de impresión, en un fichero llamado acct.

Cuando sea el momento de cobrar a los usuraios, ejecute el programa pac(8). Sólo dirijase al directorio de cola, del cual desea recabar la información y teclee pac. Usted obtendrá un resumen similar al siguiente:

  Login               pages/feet   runs    price
orchid:kelly                5.00    1   $  0.10
orchid:mary                31.00    3   $  0.62
orchid:zhang                9.00    1   $  0.18
rose:andy                   2.00    1   $  0.04
rose:kelly                177.00  104   $  3.54
rose:mary                  87.00   32   $  1.74
rose:root                  26.00   12   $  0.52

total                     337.00  154   $  6.74

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

-Pimpresora

De que impresora hacer el resumen. Esta opción funciona, solo si existe una ruta absoluta, en la característcia af del fichero /etc/printcap.

-c

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

-m

Ignorar el nombre de host. Con esta opción, el usuario smith del host alpha, es el mismo usuario smith del host gamma. Sin esta opción, se consideran usuarios diferentes.

-pprecio

Computar cargos con tal precio en dólares por página o por pie, en lugar del precio tomado de la característica pc del fichero /etc/printcap, o dos centavos (precio por default). Puede indicar el precio como un numero de punto flotante.

-r

Invertir el orden de acomodo.

-s

Crear un fichero de resumen y reiniciar el fichero contador.

nombre ...

Imprimir la información del usuario nombre unicamente.

En el resumen que genera pac(8) por default, podrá observar el numero de páginas impresas por cada usuario desde diferentes hosts. Si en su sitio, el host no es importante (por que los usuarios pueden usar cualquier host), ejecute pac -m, para producir el siguiente resumen:

  Login               pages/feet   runs    price
andy                        2.00    1   $  0.04
kelly                     182.00  105   $  3.64
mary                      118.00   35   $  2.36
root                       26.00   12   $  0.52
zhang                       9.00    1   $  0.18

total                     337.00  154   $  6.74

Para calcular el monto adeudado, pac(8) utiliza la característica pc del fichero /etc/printcap (que por default utiliza 200, o 2 centavos por página). Especifique en cientos de centavos el precio a cobrar por página o por pie, que desea cobrar, en esta característica. Puede reemplazar este valor cuando ejecuta pac(8) con la opción -p. Las unidades de esta opción estan expresadas en dólares, y no en cientos de centavos. Por ejemplo,

# pac -p1.50
hace que cada página tenga un costo de un dolar con cincuenta centavos. Realmente se puede exceder en las utilidades usando esta opción.

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


10.4.5.2. ¿Cómo Contabilizar las Páginas Impresas?

Para efecto de que pueda obtener un conteo más cercano a la realidad, necesita poder determinar cuanto papel utiliza cada trabajo. Este es el problema esencial del conteo de impresiones.

Para impresiones en texto, este problema no es tan difícil de resolver: puede contabilizar el numero de líneas que tiene un trabajo y dividirlas entre el numero de líneas totales por página que maneja la impresora. No olvide contabilizar los retrocesos del fichero que sobreimprimen líneas, o de las largas líneas lógicas que se justifican en en una o más líneas físicas.

El filtro de texto lpf (introducido en lpf: un Filtro de Texto) toma en cuenta todas estas cosas cuando hace el conteo. Si usted esta escribiendo un filtro de texto que requiere contabilizar, quizás desee examinar el código fuente del lpf.

Pero, ¿Cómo manejar otros formatos?

Bueno, para conversiones DVI-a-LaserJet o DVI-a-PostScript, puede hacer que su filtro pase la información de salida a dvilj o dvips y ver cuantas páginas fueron convertidas. Puede hacer cosas similares con otros formatos y filtros de conversión.

Pero estos metodos sufren del hecho de que la impresora puede no imprimir estas páginas. Po ejemplo, se pueden atorar, acabarse la tinta, o explotar--y el usuario de todas formas se le cobrará.

Entonces, ¿qué puede hacer?

Sólo existe una forma segura de llevar un conteo confiable. Adquiera una impresora que pueda indicarle cuanto papel utiliza, y conectela por medio de un puerto serial o en red. Casi todas las impresoras PostScript cuentan con soporte para esto. Existen otras marcas u modelos que también cuentan con el soporte (por ejemplo, las impresoras en red Imagen laser). Modifique los filtros de estas impresoras para que lleven un conteo de las oáginas impresas y que almacenen los registros basados en el valor only. No se requiere de un conteo de líneas o de examinar el fichero de errores.

Claro esta que usted puede ser muy generoso y no cobrar por las impresiones.


10.5. Uso de las Impresoras

Esta sección le indica como usar las impresoras que ha instalado con FreeBSD. Aqui tenemos los comandos de usuario mas comunes:

lpr(1)

Imprime trabajos

lpq(1)

Verifica los trabajos pendientes

lprm(1)

Elimina un trabajo de la cola de impresión

También se cuenta con un comando de administración, lpc(8), descrito en la sección Administración de la Cola de Impresión de LPD, usado para controlar las impresoras y sus peticiones.

Las tres opciones lpr(1), lprm(1), y lpq(1), aceptan el argumento -Pimpresora para especificar en que impresora realizar la impresión/petición, de acuerdo a lo indicado en /etc/printcap. Esto le permite imprimir, remover o consultar los trabajos en varias impresoras. Si no usa el argumento -P, estos comandos haran uso de la impresora especificada en la variable de entorno PRINTER. Finalmente, si no cuenta con la variable de entorno PRINTER definida, estos comandos utilizarán la impresora por default, que es lp.

Por lo tanto, el termino impresora por default, hace referencia a la impresora definida en la variable de entorno PRINTER, o en su defecto a la impresora nombrada lp, cuando no este definida la variable de entorno PRINTER.


10.5.1. Trabajos de Impresión

Para imprimir un fichero, teclee:

% lpr fichero ...

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

% lpr /etc/host.conf /etc/hosts.equiv

Para seleccionar una impresora, teclee:

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

Este ejemplo imprime una larga lista del directorio actual, en la impresora nombrada rattan:

% ls -l | lpr -P rattan

En virtud de que no se le paso fichero alguno para imprimir a lpr(1), lpr toma los datos de la entrada estandar, que en este caso es la salida del comando ls -l.

EL comando lpr(1) también puede aceptar gran variedad de opciones para controlar el formato, aplicar conversiones a los ficheros, generar copias multiples, etc.. Para mayor información, vea la sección Opciones de Impresión.


10.5.2. Verificando los Trabajos

Cuando usted utiliza lpr(1) para imprimir, los datos que desea imprimir se colocan juntos en un paquete llamado ``trabajo de impresión'', el cual es enviado al sistema de cola de LPD. Cada impresora cuenta con un orden de impresión de trabajos, y su trabajo espera su turno en este orden, junto con otros trabajos suyos y de otros usuarios. El criterio del orden será los primeros-en-llegar son los primeros-en-salir.

Para ver los trabajos pendientes de la impresora por default, teclee lpq(1). Para una impresora en especial, use la opción -P. Por ejemplo, el comando

% lpq -P bamboo
le muestra los trabajos pendientes de la impresora bamboo. Aqui tenemos un ejemplo de la salida del comando lpq:

bamboo is ready and printing
Rank   Owner    Job  Files                              Total Size
active kelly    9    /etc/host.conf, /etc/hosts.equiv   88 bytes
2nd    kelly    10   (standard input)                   1635 bytes
3rd    mary     11   ...                                78519 bytes

Esto muestra que hay tres trabajos en espera, para bamboo. El primer trabajo enviado por el usuario kelly, tiene asignado en ``numero de trabajo'' 9. Cada trabajo en una impresora, se le asigna un numero único. La mayor parte del tiempo puede ignorar el numero de trabajo, pero este será necesario en caso de que desee cancelar el trabajo; vea la sección Eliminando Trabajos para mas detalles al respecto.

El trabajo numero nueve consiste en dos ficheros; al pasar varios trabajos a lpr(1), estos son tratados como parte de un solo trabajo. Este es el trabajo actual, activo (note la palabra active bajo la columna ``Rank''), que quiere decir, que la impresora debe estar imprimiendo este trabajo. El segundo trabajo consiste en datos pasados al comando lpr(1) por la entrada estandar. El tercer trabajo proviene del usuario mary; que es un trabajo mucho mas grande. La ruta que esta tratando de ser descrita es muy larga, de tal forma que lpq(1) solo lo representa con tres puntos.

La primer línea de la salida de lpq(1) también es de utilidad: esta le indica que esta haciendo la impresora en este momento (o cuando menos, que es lo que LPD piensa que la impresora esta haciendo).

El comando lpq(1) tambien cuenta con la opción -l, para generar una salida mas detallada. Aqui tenemos un ejemplo de lpq -l:

waiting for bamboo to become ready (offline ?)
kelly: 1st               [job 009rose]
       /etc/host.conf                    73 bytes
       /etc/hosts.equiv                  15 bytes

kelly: 2nd               [job 010rose]
       (standard input)                  1635 bytes

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

10.5.3. Eliminando Trabajos

Si cambia de parecer con respecto a imprimir un trabajo, puede eliminarlo de los trabajos pendientes, con el comando lprm(1). Incluso puede usar el comando lprm(1) para elminar un trabajo activo, pero algunos o todos los demas trabajos aun seran impresos.

Para eliminar un trabajo de la impresoras por default, primero use lpq(1) para saber el numero de trabajo. Despué teclee:

% lprm numero-trabajo

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

% lprm -P bamboo 10

El comando lprm(1) cuenta con algunas opciones:

lprm -

Elimina todos los trabajos (de la impresora por default) y que le pertenezcan a usted.

lprm usuario

Elimina todos los trabajos (de la impresora por default) que pertenecen a usuario. El superusuario puede eliminar trabajos de otros: usted solo puede eliminar sus trabajos.

lprm

Cuando no se pasa ningun nombre de usuario, o -, en la línea de comando, lprm(1) elimina el trabajo activo de la impresora por default, si este le pertenece. El superusuario puede eliminar cualquier trabajo activo.

Simplemente use la opción -P con las opciones comentadas, para que apliquen en una impresora especifica. Por ejemplo, el siguiente comando elimina todos los trabajos pendientes del usuario actual en la impresora rattan:

% lprm -P rattan -

Nota: SI usted esta trabajando en una red, el comando lprm(1), solo le permitira eliminar trabajos del host del cual se enviaron dichos trabajos, incluso si la impresora esta habilitada desde otros hosts. La siguiente secuencia de comandos demuestra esto:

% lpr -P rattan mifichero
% rlogin orchid
% lpq -P rattan
Rank   Owner      Job  Files                          Total Size
active seeyan     12    ...                           49123 bytes
2nd    kelly      13   mifichero                      12 bytes
% lprm -P rattan 13
rose: Permission denied
% logout
% lprm -P rattan 13
dfA013rose dequeued
cfA013rose dequeued
   

10.5.4. Más alla del Texto Plano: Opciones de Impresión

El comando lpr(1) cuenta con soporte para multiples opciones que controlan el formato del texto, conversión de gráficos y otros formatos, producción de copias multiples, manejo de los trabajos, y más. Esta sección describe estas opciones.


10.5.4.1. Opciones de Formato y Conversión

Las siguientes opciones de lpr(1) controlan el formato de los ficheros en el trabajo. Utilice estas opciones si el trabajo no es de texto plano o si desea dar formato al texto plano por medio de la utilidad pr(1).

Por ejemplo, el siguiente comando imprime un fichero DVI (desde un sistema de escritura TeX) llamado fish-report.dvi a la impresora bamboo:

% lpr -P bamboo -d fish-report.dvi

Estas opciones aplican para todos los ficheros dentro del trabajo, por lo que no debe mezclar (por decir) ficheros DVI y ditroff en el mismo trabajo. Para hacer esto, envie los trabajos a imprimir por separado, usando la opción que corresponda a cada trabajo.

Nota: Todas estas opciones, excepto -p y -T requieren de filtros de conversión instalados para la impresora destino. Por ejemplo, la opción -d requiere de un filtro para DVI. La sección Filtros de Conversión le da más detalles al respecto.

-c

Imprimir ficheros cifplot.

-d

Imprimir ficheros DVI.

-f

Imprimir ficheros de texto FORTRAN.

-g

Imprimir datos plot.

-inumero

Sangrar la salida con el numero de columnas indicado; si omite numero, el numero será de 8 columnas. Esta opción trabaja bien solo con algunos filtros de conversión.

Nota: No debe dejar espacios entre la opción -i y el numero.

-l

Imprimir datos de texto literal, incluyendo caracteres de control.

-n

Imprimir datos ditroff (troff independiente del dispositivo).

-p

Formatear el texto plano con pr(1) antes de imprimir. Vea pr(1) para más información.

-T titulo

Use titulo en la cabecera de pr(1), en lugar del nombre del fichero. Esta opción solo tiene efecto cuando se usa con -p.

-t

Imprimir datos troff.

-v

Imprimir datos raster.

Aqui tenemos un ejemplo: este comando imprime una bonita y formateada versión de la página de ayuda de ls(1), en la impresora por default:

% zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t

El comando zcat(1) descomprime la fuente de la página de ayuda ls(1) y lo pasa al comando troff(1), que le da formato y crea la salida GNU troff, la cual es pasada a lpr(1), que envia el trabajo a la cola de LPD. Como usamos la opción -t con lpr(1), el sistema de cola va a convertir la salida GNU troff a datos entendibles para la impresora, cuando se imprime.


10.5.4.2. Opciones para Manejar los Trabajos

Las siguientes opciones de lpr(1), le indican a LPD que debe manejar el trabajo de una forma especial:

-# copias

Producir un numero de copias de cada fichero en el trabajo, en vez de una sola copia. Un administrador puede inhabilitar esta oprción para reducir el desgaste de la impresora y alentar el uso de la fotocopiadora. Vea la sección Restriccón de Copias Multiples.

Este ejemplo imprime tres copias de parser.c seguido de tres copias de parser.h en la impresora por default:

% lpr -#3 parser.c parser.h
-m

Enviar correo después de completar el trabajo. Con esta opción, el sistema LPD enviara un correo a su cuenta cuando termina de imprimir. En su mensaje, le informará si el trabajo termino con exito o si hubo algun error, y (normalmente) que tipo de error fué.

-s

No copie el fichero al directorio de la cola, en su lugar crear un enlace simbolico.

Si usted esta imprimiendo un trabajo de gran tamaño, quizás esta es una buena opción. Esta opción le ahorra espacio en el directorio de cola (donde su trabajo puede terminar con el espacio libre donde reside su directorio). Esta opción también le ahorra tiempo, en virtud de que LPD no tendrá que copiar todos y cada uno de los bytes del trabajo al directorio.

Aunque esto tiene su inconveniente: dado que LPD estará haciendo uso del fichero original, no lo podrá modificar o eliminar hasta que termine la impresión.

Nota: Si usted esta en un entorno de red, LPD eventualmente copiará ficheros del host local al host remoto, así que la opción -s le puede ahorrar espacio solo en el directorio del host local, no en los remotos. Aun con esto, la opcion es de gran utilidad.

-r

Eliminar los ficheros del trabajo, una vez que hayan sido copiados al directorio de la cola, o después de que hayan sido impresos, cuando se use la opción -s. Tenga cuidado con esta opción!


10.5.4.3. Opciones de Páginas de Encabezado

Cuando alguna de las siguientes opciones son pasadas a lpr(1), ajustan el texto que normalmente aparece en la página encabezado del trabajo. Si las páginas de encabezado son suprimidas, estas opciones no tendrán efecto alguno. Vea la sección Páginas de Encabezado para más información sobre la configuración de las Páginas de Encabezado.

-C texto

Reemplazar el nombre del host del encabezado con este texto. Normalmente el nombre del host es el nombre del host del cual se esta imprimiendo.

-J texto

Reemplazar el nombre del trabajo en el encabezado con este texto. Normalmente el nombre del trabajo es el nombre del primer fichero del trabajo, o stdin si esta imprimendo de la entrada estandar.

-h

No imprimir página de encabezado.

Nota: En algunos sitios esta opción puede no tenere efecto alguno, debido al metodo usado para generar las páginas de encabezado. Vea la sección Páginas de Encabezado para más detalles.


10.5.5. Administración de la Cola de Impresión de LPD

Como administrador de sus impresoras, usted deberá instalarlas, configurarlas, y probarlas. Con el comando lpc(8) usted podrá interactuar con las impresoras de una forma más completa. Con lpc(8) usted podrá

  • Iniciar y detener las impresoras

  • Habilitar y deshabilitar sus trabajos pendientes

  • Modificar el orden de los trabajos pendientes.

Primero, una nota de terminología: si una impresora es detenida, no podrá contar con una cola de trabajos pendientes. Los usuarios podrán enviar sus trabajos, que quedarán en espera hasta que la impresora se iniciada o su cola de trabajos pendientes sea purgada.

Si la cola de trabajos pendientes es deshabilitada, ningun usuario (excepto root) podrá enviar trabajos a la impresora. Una cola de trabajos pendientes habilitada, permitirá el envio de trabajos. Una impresora puede ser iniciada para una cola de trabajos que esta deshabilitada, en cuyo caso continuará imprimiendo los trabajos de la cola de trabajos pendientes, hasta que ya no exista ninguno.

En general, usted debe de contar con privilegios de root para hacer uso del comando lpc(8). Los usuarios comunes solo pueden usar lpc(8) para verificar el estatus de una impresora y para reiniciar una impresora detenida.

Aqui tenemos un resumen de los comandos de lpc(8). La mayor parte de estos comandos usan el argumento nombre-impresora para indicarle en cual debe operar. Como este argumento puede usar all, para indicarle que opere en todas las impresoras listadas en el fichero /etc/printcap.

abort nombre-impresora

Cancelar el trabajo actual y detener la impresora. Los usuarios podrán aun enviar sus trabajos si la cola de pendientes esta habilitada.

clean nombre-impresora

Eliminar ficheros viejos del directorio de cola de impresión. Ocasionalmente, los ficheros que ya han sido impresos no son eliminados correctamente por LPD, particularmente si hubo errores durante la impresión o si se realizaron otros trabajos administrativos durante la misma. Este comando localiza ficheros que no pertenecen al directorio y los elimina.

disable nombre-impresora

Deshabilita la cola de pendientes para nuevos trabajos. Si la impresora esta activa, se continuan imprimiendo los trabajos en la cola de pendientes. El superusuario (root) siempre podrá enviar trabajos, incluso cuando se use esta opción.

Este es un comando útil cuando se esta probando una nueva impresora o instalando un filtro: deshabilitar la cola de pendientes y enviar los trabajos como root. Otros usuarios no podrán enviar trabajos, hasta que la impresora haya sido configurada correctamente y se re-habilite la cola de pendientes, con el comando enable.

down nombre-impresora mensaje

Usar el comando down para una impresora, equivale a usar el comando disable seguido del comando stop. El mensaje que se ingrese, aparecerá como el estatus de la impresora, cada vez que un usuario verifique su estatus con lpq(1) o con lpc status.

enable nombre-impresora

Habilitar la cola de pendientes. Los usuarios pueden enviar sus trabajos pero la impresora no imprimira nada hasta que se inicializada.

help nombre-del-comando

Mostrar la ayuda del comando nombre-del-comando. Si no se indica el nombre-del-comando, se muestra un resumen de los comandos disponibles.

restart nombre-impresora

ReIniciar la impresora. Los usuarios comunes pueden usar esta opción en caso de que por alguna razón LPD se paralice, pero no pueden iniciar una impresora detenida con algunos de los comandos stop o down. El comando restart es equivalente a ejecutar abort seguido del comando start.

start nombre-impresora

Iniciar la impresora. La impresora comenzará a imprimir los trabajos en la cola de pendientes.

stop nombre-impresora

Detiene la impresora. La impresora terminará el trabajo actual y dejará de imprimir. Aun cuando la impresora esta detenida, los usuarios pueden enviar sus trabajos a la cola de pendientes de la impresora.

topq nombre-impresora trabajo-o-usuario

Modificar el orden de la cola de pendientes de la impresora nombre-impresora, colocando los trabajos con el identificador trabajo o que pertenecen al usuario usuario, en primer lugar de la cola. Para este comando no puede hacer uso de la opción all en lugar de nombre-impresora.

up nombre-impresora

Usar el comando up en una impresora; es lo opuesto al comando down. Equivalente a start seguido del comando enable.

lpc(8) acepta estos comandos desde la línea de comandos. Si no ingresa aglun comando, lpc(8) entra en modo interactivo, donde puede ingresar los comandos hasta que teclee exit, quit o fin-del-archivo (EOF).


10.6. Alternativas al Sistema de Impresión Estándar

Si ha estado leyendo este manual desde el principio, para este momento usted ha aprendido practicamente todo lo que debe saber del sistema LPD que viene con FreeBSD. Y ha podido observar algunas de sus debilidades, lo que naturalmente nos lleva a la pregunta: ``¿Qué otros sistema de impresión existen (y que trabajen bajo FreeBSD)?''.

LPRng

LPRng, que presumiblemente significa ``LPR: the Next Generation'' (``LPR: la Siguiente Generación''), es PLP completamente hecho de nuevo. Patrick Powell y Justin Mason (el encargado principal de PLP) colaboraron en crear LPRng. El principal sitio de LPRng es http://www.astart.com/lprng/LPRng.html.


10.7. Resolución de Problemas

Una vez que hizo la simple prueba con lptest(1), puede ser que haya obtenido uno de los siguientes resultados, en vez de la correcta impresión:

Trabajo, después de un tiempo; o no expulso completamente la hoja.

La impresora llevo a cabo la impresión, pero espero bastante o bien finalmente no hizo nada. De hecho, es posible que haya sido necesario presionar en su impresora el botón para poner a la impresora EN LINEA o bien de ALIMENTACION DE PAGINA.

Si este es el caso, su impresora esperaba a ver si exisitian más datos para imprimir, antes de comenzar con la impresión. Para arreglar este problema puede hacer que su filtro de texto envie al final un caracter de ALIMENTACION DE PAGINA o cualquiera que sea necesario para la impresora. Esto normalmente es suficiente para que la impresora imprima todos los datos restantes en su buffer interno. También es recomendable verificar que cada trabajo enviado se haya impreso en una página completa, de tal forma que el siguiente trabajo no comience en la mitad de la última página del trabajo previo.

El siguiente ShellScript se puede utilizar como reemplazo de /usr/local/libexec/if-simple, para imprimir un caracter de alimentación de página:

#!/bin/sh
#
# if-simple - Filtro de texto simple para lpd
# Instalado en /usr/local/libexec/if-simple
#
# Simplemente manda la entrada a la salida estandar. 
# Ignora los argumentos del filtro.
# Escribe un caracter de alimentacion de pagina (\f) despues de imprimir.

/bin/cat && printf "\f" && exit 0
exit 2
Se produce un ``efecto de escalera.''

Usted obtiene la siguiente impresión:

!"#$%&'()*+,-./01234
                "#$%&'()*+,-./012345
                                 #$%&'()*+,-./0123456

Usted es otra víctima del efecto de escalera, causada por el conflicto de interpretación, sobre cual caracter indica la nueva línea. Los sistemas operativos estilo-Unix, usan un caracter sencillo: código ASCII 10, alimentación de línea (LF). MS-DOS, OS/2 y otros utilizan un par de caracteres, código ASCII 10 y código ASCII 13 (retorno de carrete o CR). Muchas impresoras usan la forma de MS-DOS, para representar los saltos de líneas.

Cuando usted imprime con FreeBSD, su texto hace uso del caracter de nueva línea. La impresora, una vez que detecta el caracter de nueva línea, avanza el papel una línea, pero manteniendo la misma posición horizontal, para la impresión del siguiente caracter. Para eso es el caracter de retorno de carrete: para mover la posición horizontal al borde izquierdo del papel.

Aqui tenemos lo que FreeBSD desea que haga su impresora:

Impresora recibe CR Impresora imprime CR
Impresora recibe LF Impresora imprime CR + LF

Aqui tenemos algunas formas de llevar esto a cabo:

  • Usar los botones de configuración de la impresora o el panel de control, para modificar su interpretación de estos caracteres. Verifique el manual de su impresora para ver como hacer esto.

    Nota: Si cuenta con otro sistema operativo en su maquina, ademas de FreeBSD, quizás sea necesario reconfigurar la impresora, para usar la interpretación de los caracteres de CR y LF del otro sistema operativo. Puede escoger una de las otras soluciones que se comentan más adelante.

  • Puede hacer que el controlador serial de FreeBSD, automáticamente convierta LF en CR+LF. Claro esta, que esta alternativa funciona solo en impresoras seriales. Para habilitar esta habilidad, establezca el bit CRMOD, en la característica fs del fichero /etc/printcap para la impresora.

  • Envie un código de escape a la impresora para que temporalmente de un tratamiento diferente a los caracteres LF. Consulte el manual de su impresora para ver los códigos de escape soportados por su impresora. Una vez que localice el código correcto, modifique su filtro de texto, para que se envie este código primero y después el trabajo a imprimir.

    Aqui tenemos un ejemplo de un filtro de texto, para impresoras compatibles con PCL de Hewlett-Packard. Este filtro hace que la impresora trate a LF como LF + CR; posteriormente envia el trabajo de impresión; y por último envia un caracter de alimentación de página, para expulsar la última página del trabajo. Este filtro debiese funcionar con casi todas las impresoras Hewlett Packard.

    #!/bin/sh
    #
    # hpif - Filtro de texto simple para lpd e impresoras compatibles con HP-PCL
    # Instalado en /usr/local/libexec/hpif
    #
    # Pasa la entrada estandar a la salida estandar. 
    # Ignora todos los argumentos del filtro.
    # Le indica a la impresora que debe tratar a LF como si fuera CR+LF.
    # Expulsa la ultima pagina cuando ha terminado.
    
    printf "\033&k2G" && cat && printf "\033&l0H" && exit 0
    exit 2
    

    Aqui tenemos un ejemplo de /etc/printcap para un host llamado orchid. Solo cuenta con una impresora conectada al puerto paralelo, una Hewlett Packard LaserJet 3Si, llamada teak. Se esta usando el script anterior como filtro de texto:

    #
    #  Fichero /etc/printcap del host orchid
    #
    teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
            :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
            :if=/usr/local/libexec/hpif:
    
Cada línea se sobreescribe.

La impresora no avanza ninguna línea. Todas las líneas son impresas una sobre otra en un solo renglón.

Este problema es lo ``opuesto'' al efecto de escalera, descrito anteriormente, y es poco común. En algun lugar, los caracteres de LF, que usa FreeBSD para indicar un salto de línea, la impresora los identifica como CR, de tal forma que regresa el punto de impresión al borde del papel, pero sin saltar al siguiente renglón.

Utilice los botones de la impresora o el panel de control, para forzar a que la impresora interprete de la siguiente manera los caracteres LF y CR:

Impresora recibe Impresora imprime
CR CR
LF CR + LF
Al imprimir se pierden caracteres.

Mientras imprime, algunos caracteres no son impresos en cada línea. El problema puede agravarse conforme se usa la impresora, perdiendo más y más caracteres.

El problema es que la impresora no puede mantener el ritmo al cual la computadora envia los datos por medio de la línea serial (este problema no se debiese presentarse en impresoras conectadas al puerto paralelo). Existen dos formas de solucionar este problema:

  • Si la impresora cuenta con soporte para el control de flujo XON/XOFF, haga que FreeBSD lo utilice, al especificar el bit TANDEM en la característica fs.

  • Si la impresora cuenta con soporte para el control de flujo externo (carrier), especifique el bit MDMBUF en la característica fs. Asegurese de que el cable utilizado para conectar la impresora a la computadora cuenta con soporte para este tipo de control de flujo.

  • Si la impresora no cuenta con soporte para el control de flujo, use una combinación de los bits NLDELAY, TBDELAY, CRDELAY, VTDELAY y BSDELAY en la característica fs, para añadir el retraso apropiado en la cadena de información enviada a la impresora.

Solo imprime basura.

La impresora imprime lo que parece ser basura al azar, pero no el texto deseado.

Esto normalmente es otro síntoma de una configuración incorrecta en los parámetros de comunicación de una impresora serial. Verifique el rango de bps en la característica br y la paridad de bits en fs y fc; asegurese de que la impresora use los mismos datos especificados en el fichero /etc/printcap.

No sucede nada.

Si no sucede nada, probablemente el problema es con FreeBSD y no con su hardware. Incluya un fichero de registros (log), con la característica lf, en la entrada de su impresora en el fichero /etc/printcap. Por ejemplo, aqui esta la entrada de rattan, con la característica lf :

rattan|line|diablo|lp|Diablo 630 Line Printer:\
        :sh:sd=/var/spool/lpd/rattan:\
        :lp=/dev/lpt0:\
        :if=/usr/local/libexec/if-simple:\
        :lf=/var/log/rattan.log

Posteriormente, intente imprimir de nuevo. Verifique el fichero de registros (en nuestro ejemplo, /var/log/rattan.log) para buscar cualquier mensaje de error que aparezca. Basado en ese mensaje trate de resolver el problema.

Si no especifica la característica lf, entonces LPD utilizará /dev/console como la salida por default.


Capítulo 11. Emulación Linux

Emulación Linux

III. Administración del sistema.

Los restantes capítulos de este Manual de FreeBSD cubren todos los aspectos de administración de un sistema FreeBSD. Cada capítulo comienza describiendo lo que será aprendido una vez finalizada la lectura, explicando también los conocimientos mínimos necesarios para un entendimiento satisfactorio.

Estos capítulos están diseñados para ser leídos cuando se necesita la información. No es necesario leerlos en un determinado orden ni tampoco es necesario leerlos todos antes de comenzar con el uso de FreeBSD.


Capítulo 12. Configuración y Adaptación del Sistema

Configuración y Adaptación del Sistema


12.1. Configuración de Tarjetas de Red

Pendiente de Traducción


Capítulo 13. El Proceso de Arranque en FreeBSD

13.1. Sinópsis

Al proceso de inicio del sistema y carga del sistema operativo se le conoce como ``mecanismo de arranque'' (bootstrap), o simplemente ``arranque'' (booting). El proceso de arranque de FreeBSD provee de gran flexibilidad al configurar lo que ocurre cuando se inicia el sistema, permitiendole seleccionar de diferentes sistemas operativos instalados en el mismo ordenador, o inclusive diferentes versiones del mismo sistema oprativo o kernels instalados.

Este capítulo detalla las opciones de configuración que puede manejar y como personalizar el proceso de arranque de FreeBSD. Esto incluye todo lo que sucede hasta que el kernel de FreeBSD comienza con la comprobación de dispositivos y se inicializa init(8). En caso de que usted desconozca cuando ocurre todo esto, esto sucede cuando el color del texto que aparece al iniciar el sistema, cambia de blanco a gris.

Una vez que concluya con la lectura de este capítulo, usted sabrá:

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

  • Las opciones que puede manejar con los componentes del mecanismo de arranque de FreeBSD, para controlar el proceso de inicio del sistema.

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


13.2. El Problema que representa Arrancar el Sistema

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

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

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

Si usted sólo cuenta con un sistema operativo instalado en su disco duro, el RMA estándar será suficiente. Este RMA buscará la primer partición del disco que pueda arrancar, y posteriormente ejecutará el código restante de dicha partición, para efecto de completar la carga del sistema operativo.

Si usted cuenta con varios sistemas operativos instalados en su disco, entonces puede hacer uso de un RMA diferente, uno que despliegue una lista de los diferentes sistemas operativos, y le permita escoger cual de ellos desea que se cargue. FreeBSD cuenta con un RMA de este tipo que puede ser instalado, así como otros distribuidores de sistemas operativos cuentan con RMAs alternativos.

En el caso de FreeBSD, el resto del mecanismo de arranque, está dividido en tres etapas. La primer etapa es ejecutada por al RMA, que sabe lo suficiente como para poner a la computadora en un estado específico y ejecutar la segunda etapa. La segunda etapa puede hacer un poco más que esto, antes de ejecutar la tercer etapa. La tercer etapa finaliza el trabajo de carga del sistema operativo. El trabajo es dividido en tres etapas, debido a las limitantes que tiene una PC, en cuanto al tamaño de los programas a ejecutar, durante las etapas uno y dos. El encadenar estas tareas, le permiten a FreeBSD contar con un arrancador más flexible.

Posteriormente el kernel es inicializado y comienza con la comprobación de dispositivos, y prepararlos para su uso. Una vez que el proceso de arranque del kernel ha finalizado, el kernel transfiere el control al proceso de usuario init(8), quien se asegura de que los discos se encuentren en buen estado para su uso. Posteriormente init(8) inicia la configuración fuente a nivel de usuario, que monta los sistemas de ficheros, configura las tarjetas de red para que pueden comunicarse en la red, y comunmente inicia todos los procesos que normalmente son ejecutados en un sistema FreeBSD al arrancar el mismo.


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

13.3.1. RMA, /boot/boot0

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

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

Ejemplo 13-1. Pantalla boot0

F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1

Default: F2

Es sabido que otros sistemas, en particular Windows 95, sobreescriben el RMA con el suyo. Si esto le sucede, o bien desea reemplazar su RMA actual con el RMA de FreeBSD, entonces puede utilizar los siguientes comandos.

# fdisk -B -b /boot/boot0 dispositivo

Donde dispositivo es aquel, desde el cual usted pretende arrancar el sistema, tal como ad0 para el disco conectado al primer IDE, ad2 para el disco maestro conectado al IDE secundario, da0 para el primer disco SCSI, y así sucesivamente.

Por otro lado, si usted es un usuario de Linux, y prefiere que la aplicación LILO controle el proceso de arranque, puede editar el fichero /etc/lilo.conf para incluir a FreeBSD, o bien seleccionar la opción Leave The Master Boot Record Untouched durante el proceso de instalación. Si ha instalado el gestor de arranque de FreeBSD, puede arrancar Linux y modificar el fichero de configuración de LILO, /etc/lilo.conf, añadiendo la siguiente opción:

other=/dev/hdXY
table=/dev/hdb
loader=/boot/chain.b
label=FreeBSD

lo que permitirá el arranque de FreeBSD y Linux, por medio de LILO. En nuestro ejemplo hemos utilizado XY para especificar el disco utilizado y su partición. Si usted utiliza un sistema SCSI, deberá cambiar /dev/hdXY por algo similar a /dev/sdXY, que nuevamente utiliza la sintáxis XY. La opción loader=/boot/chain.b puede omitirse si usted cuenta con ambos sistemas operativos en el mismo disco. Una vez que esto se ha completado, puede ejecutar /sbin/lilo -v para que se actualicen los cambios en el sistema, lo cual deberá verificarse con los mensajes que aparezcan en pantalla.

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


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

Conceptualmente las estapas uno y dos, son parte del mismo programa, en la misma área del disco. Por cuestiones de espacio se han dividido en dos, pero estas siempre se instalaran de manera conjunta.

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

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

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

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

Ejemplo 13-2. Pantalla de boot2

>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:

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

# disklabel -B partición

Donde partición es el disco y partición del cual pretende arrancar el sistema, tal como ad0s1 para la primer partición del disco Mastro--Primario.

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


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

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

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


13.3.3.1. Flujo del Programa Cargador

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

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

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


13.3.3.2. Comandos Internos del Cargador

A continuación se presentan los comandos más comunes del cargador. Para ver una descripción detallada de los mismos, por favor consulte la página de ayuda loader(8)

autoboot segundos

Procede a iniciar el arranque del sistema, si es que no es interrumpido el periodo dado, en segundos. Despliega una cuenta regresiva, y el tiempo dado es de 10 segundos.

boot [-opciones] [nombre_del_kernel]

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

boot-conf

Rehace la configuración automática de modulos en función a las variables definidas, como sucede al arrancar. Esta opción sólo tiene sentido utilizarla, si en primer lugar hemos usado el comando unload, y hemos modificado alguna variable, siendo lo más común el kernel.

help [tema]

Muestra la ayuda de un tema específico, que lee del fichero /boot/loader.help. Si el tema que se indica es index, entonces se mostrará una lista de todos los temas disponibles.

include fichero ...

Procesa el fichero que se ha especificado. El fichero es leido e interpretado línea por línea. Cualquier error detendrá inmediatamente al comando include.

load [-t tipo] fichero

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

ls [-l] [ruta]

Despliega un listado de todos los ficheros que se localizan en la ruta especificada, o en el directorio raíz, si es que no se le especifica ruta alguna. Si se utiliza la opción -l, también se mostrara el tamaño de los ficheros.

lsdev [-v]

Nos muestra una lista de todos los dispositivos desde los cuales puede ser posible cargar modulos. Si se incluye la opción -v, el listado que se obtiene cuenta con más detalle.

lsmod [-v]

Despliega los módulos cargados. Si se utiliza la opción -v, se mostraran más detalles.

more fichero

Despliega el contenido del fichero especificado, haciendo una pausa a cada numero determinado de LINEAS mostradas.

reboot

Reinicia el sistema de forma inmediata.

set variable, set variable=valor

Especifica los valores de las variables de entorno del cargador.

unload

Remueve todos los módulos cargados.


13.3.3.3. Ejemplos de Uso del Cargador

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

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

    boot -s
    
  • Para descargar su kernel usual y sus módulos correspondientes, y posteriormente cargar su kernel anterior (o cualquier otro):

    unload
    load kernel.old
    

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

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

    unload
    set kernel="kernel.old"
    boot-conf
    
  • Para cargar un escrito de configuración (script que de forma automática hará todo lo que normalmente hace usted de forma manual al momento de ejecutarse el configurador de arranque):

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

13.4. Interacción con el Kernel Durante el Arranque

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


13.4.1. Opciones de Arranque del Kernel

He aqui las opciones de arranque más comunes:

-a

durante la inicialización del kernel, pregunta por los dispositivos a utilizar, para montar el sistema de ficheros raíz.

-C

arranque desde una unidad de CDROM.

-c

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

-s

arranca el sistem en modo mono-usuario.

-v

imprime mensajes informativos durante el arranque del kernel

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


13.5. Device Hints

Escrito por Tom Rhodes.

Pendiente de Traducción


13.6. Init: Inicialización del Proceso de Control

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


13.6.1. Secuencia Automática de Reinicio

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


13.6.2. Modo Mono-Usuario

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

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

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

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

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

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


13.6.3. Modo Multi-Usuario

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


13.6.3.1. Configuración-Fuente(rc)

La configuración fuente lee la configuración por default del fichero /etc/defaults/rc.conf, y detalles específicos del sistema desde el fichero /etc/rc.conf, y posteriormente procede a montar los sistemas de ficheros del sistema, descritos en /etc/fstab, iniciar servicios de red, así como varios demonios del sistema, para finalmente ejecutar los escritos (scripts) de configuración instalados por paquetes, localmente.

La página de ayuda rc(8) es una buena referencia para conocer más de este tipo de ficheros, así como examinar los mismos ficheros.


13.7. Secuencia de Apagado

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


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

Contributed by Neil Blakey-Milner.

14.1. Sinópsis

FreeBSD permite que varios usuarios usen el mismo ordenador. Obviamente, sólo uno de estos usuarios puede sentarse frente al monitor y al teclado en un momento dado [2] , pero cualquier número de usuarios puede entrar por la red para hacer su trabajo. Para usar el sistema cada usuario ha de tener una cuenta.

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

  • Cuáles son las diferencias entre las distintas cuentas de usuario en sistemas FreeBSD.

  • Cómo añadir cuentas.

  • Cómo eliminar cuentas.

  • Cómo cambiar detalles de las cuentas, como el nombre completo del usuario, o su shell preferida.

  • Cómo establecer límites por cuenta, para controlar los recursos como memoria o tiempo de CPU que las cuentas y grupos de cuentas pueden emplear.

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

Antes de leer este capítulo deberías:

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


14.2. Introducción

Todos los accesos al sistema se consiguen vía cuentas, y todos los procesos son ejecutados por usuarios, por ello la administración de usuarios y cuentas es de una gran importancia en sistemas FreeBSD.

Cada cuenta en un sistema FreeBSD tiene cierta información asociada que la identifica.

Nombre de usuario

El nombre de usuario como se le entraría al prompt login:. Los nombres de usuario han de ser únicos en la computadora; no puede haber dos usuarios con el mismo nombre de usuario. Existen algunas reglas para la creación de nombres de usuario válidos documentadas en passwd(5); típicamente se usarían nombres de usuario de a lo sumo ocho caracteres, todos ellos en minúscula.

Contraseña

Cada cuenta tiene una contraseña asociada. La contraseña puede ser vacía, en cuyo caso no se requerirá ninguna para acceder al sistema. Esto normalmente es una mala idea; cada cuenta debería tener una constraseña no vacía.

Identificador de usuario (UID)

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

Identificador de grupo (GID)

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

Clase de login

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

Tiempo de cambio de contraseña

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

Tiempo de expiración de cuentas

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

Nombre completo de usuario

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

Directorio home

El directorio home es el camino completo de un directorio en el sistema en el que el usuario se hallará cuando entre. Una convención usual consiste en poner todos los directorios home en /home/nombre_de_usuario o en /usr/home/nombre_de_usuario. Los usuarios guardarían sus archivos personales en sus directorios home, y en cualquier directorio que creasen allí.

Shell de usuario

La shell provee el entorno por defecto mediante el cual los usuarios interactúan con el sistema. Existen varios tipos de shell y los usuarios experimentados tendrán sus propias preferencias, que pueden expresarse en la configuración de su cuenta.

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


14.3. La cuenta superusuario

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

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

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

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


14.4. Cuentas de sistema

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

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

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


14.5. Cuentas de usuario

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

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

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


14.6. Modificación de cuentas

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

Comando Resumen
adduser La aplicación de línea de comandos recomendada para añadir nuevos usuarios.
rmuser La aplicación de línea de comandos recomendada para eliminar usuarios.
chpass Una herramienta flexible para modificar la base de datos de usuarios.
passwd Una herramienta de línea de comandos simple para cambiar contraseñas de usuario.
pw Una herramienta potente y flexible para modificar cualquier aspecto de las cuentas de usuario.

14.6.1. adduser

adduser es un programa simple para añadir usuarios. Crea entradas en los archivos de sistema passwd y group. También crea un directorio home para el nuevo usuario, copia allí ficheros de configuración por defecto (``dotfiles'') de /usr/share/skel, y opcionalmente puede enviar al usuario un mensaje de bienvenida.

Para crear el fichero inicial de configuración usa adduser -s -config_create. [3] A continuación configuramos valores por defecto para adduser y creamos nuestra primera cuenta de usuario, dado que utilizar root para uso normal del sistema es pernicioso y peligroso.

Ejemplo 14-1. Configuración de adduser

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

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

Ok, let's go.
Don't worry about mistakes. I will give you the chance later to correct any input.
Enter username [a-z0-9_-]: jru
Enter full name []: J. Random User
Enter shell csh date no sh tcsh zsh [zsh]: 
Enter home directory (full path) [/home/jru]: 
Uid [1001]: 
Enter login class: default []: 
Login group jru [jru]: 
Login group is ``jru''. Invite jru into other groups: guest no 
[no]: wheel
Enter password []: 
Enter password again []: 

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

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

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

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


14.6.2. rmuser

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

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

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

  3. Mata todos los procesos pertenecientes al usuario.

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

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

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

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

  8. Finalmente, elimina el nombre de usuario de todos aquellos grupos a los que pertenece en /etc/group.

    Nota: Si un grupo queda vacío y el nombre del grupo coincide con el del usuario, el grupo es eliminado; esto complementa la creación de grupos por usuario de adduser(8).



rmuser no puede ser usado para eliminar cuentas de superusuario, dado que algo así es casi siempre señal de masiva destrucción.

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

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

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

14.6.3. chpass

chpass cambia información de los usuarios en base de datos como contraseñas, shells y datos personales.

Los administradores del sistema, como el superusuario, son los únicos que pueden modificar la información y contraseñas de otros usuarios con chpass.

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

Ejemplo 14-3. chpass interactivo ejecutado por el superusuario

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

Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:

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

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

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

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


14.6.4. passwd

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

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

Ejemplo 14-5. Cambio de tu contraseña

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

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

# passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: done

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


14.6.5. pw

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


14.7. Limitar a los usuarios

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

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

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

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

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

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

coredumpsize

El tamaño de un fichero core generado por un programa está, por razones obvias, subordinado a otros límites sobre uso de disco (p. ej., filesize, o cuotas de disco). Aun y así, se usa frecuentemente como un método menos severo de controlar consumo de espacio de disco, dado que los usuarios no generan ficheros core por ellos mismos, y a menudo no los borran, activar este límite puede evitar que agoten el espacio de disco de que disponen si algún programa grande (p. ej., emacs) deja de funcionar abruptamente.

cputime

Ésta es la máxima cantidad de tiempo de CPU que los procesos de un usuario pueden consumir.

Nota: Éste es un límite sobre el tiempo de CPU consumido, no el porcentaje de uso de CPU que se muestra en algunos campos de top(1) y ps(1). Un límite de ese tipo no es posible a día de hoy, y sería bastante inútil: un compilador --probablemente una tarea legítima-- puede usar prácticamente el 100% de la CPU durante algún tiempo con facilidad.



filesize

Éste es el tamaño máximo que puede llegar a tener un fichero del usuario. A diferencia de las cuotas de disco, este límite se especifica para ficheros individuales, no para el conjunto de todos los archivos que posee.

maxproc

Éste es el máximo número de procesos que un usuario puede ejecutar a la vez, incluidos tanto los procesos en primer plano como los procesos en segundo plano. Por razones obvias, este límite no puede ser mayor que el límite de sistema especificado por kern.maxproc sysctl. Obsérvese también que si asignamos un valor demasiado bajo a este límite podemos mermar la productividad de un usuario: frecuentemente es útil entrar múltiples veces en el sistema o ejecutar pipelines. Algunas tareas, como compilar largos programas, lanzan múltiples procesos (p. ej., make(1), cc(1), y demás preprocesadores intermedios).

memorylocked

Ésta es la máxima cantidad de memoria que un proceso puede haber solicitado tener bloqueada en memoria principal (p. ej., ver mlock(2)). Algunos programas críticos para el sistema, como amd(8), se quedan bloqueados en la memoria principal de manera que en caso de ser llevados a swap no contribuyan a la basura del sistema si hay algún problema.

memoryuse

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

openfiles

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

sbsize

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

stacksize

Éste es el tamaño máximo que puede alcanzar la pila de un proceso. Por sí solo no es suficiente para limitar la cantidad de memoria que puede usar un programa; en consecuencia, debería ser usado junto con otros límites.

Hay unas pocas cosas más a recordar cuando establecemos límites de recursos. A continuación vienen algunas recomendaciones, sugerencias, y comentarios varios.

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

  • Aunque el /etc/login.conf que viene con el sistema tiene valores razonables para la mayoría de los límites, sólo tú, el administrador, puedes saber lo que es apropiado para tu sistema.

  • A los usuarios del X Window System (X11) probablemente se les debería conceder más recursos que al resto. X11 de por sí consume muchos recursos, pero además contribuye a que los usuarios ejecuten más programas simultáneamente.

  • Recuerda que hay muchos límites que aplican a procesos individuales, no al usuario en general. Por ejemplo, poner openfiles a 50 significa que cada uno de los procesos que ejecute un usuario puede abrir a lo máximo 50 ficheros. Así, la cantidad de ficheros que un usuario puede abrir es el valor de openfiles multiplicado por el valor de maxproc. Esto también aplica al uso de memoria.

Para más información acerca de límites de recursos y clases y capacidades de login en general, consulta las páginas de manual relevantes: cap_mkdb(1), getrlimit(2), login.conf(5).


14.8. Personalizar a los usuarios

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


14.9. Grupos

Un grupo es simplemente una lista de usuarios. Los grupos se identifican por su nombre de grupo y gid (ID de grupo). En FreeBSD (y en la mayoría de sistemas Unix), los dos factores que tiene en cuenta el núcleo para decidir si un proceso puede hacer algo es su ID de usuario y la lista de grupos a los que pertenece. A diferencia del ID de usuario, un proceso tiene una lista de grupos asociados. En ocasiones encontrarás menciones al "ID de grupo" de un usuario o de un proceso; la mayoría de las veces referirán simplemente al primero de los grupos de la lista.

La correspondencia entre nombres e IDs de grupo está en /etc/group. Se trata de un fichero de texto plano con cuatro campos separados por el signo dos puntos. El primer campo es el nombre de grupo, el segundo la contraseña encriptada, el tercero el ID de grupo, y el cuarto la lista de miembros separados por comas. Puede ser editado a mano sin peligro (¡suponiendo, por supuesto, que no se cometan errores de sintaxis!). Para una descripción más completa de la sintaxis, ver la página de manual group(5).

Si no quieres editar /etc/group manualmente, puedes usar el comando pw(8) para añadir y modificar grupos. Por ejemplo, para añadir un grupo llamado teamtwo y luego confirmar que existe puedes usar:

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

# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:

El número 1100 en el ejemplo anterior es el ID de grupo del grupo teamtwo. Ahora mismo teamtwo no tiene miembros, y es por tanto bastante inútil. Cambiemos eso invitando a jru a formar parte del grupo teamtwo.

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

# pw groupmod teamtwo -M jru
# pw groupshow teamtwo
teamtwo:*:1100:jru

El argumento de la opción -M es una lista con los usuarios que son miembros del grupo separados por comas. Sabemos de secciones anteriores que el fichero de contraseñas también contiene un grupo para cada usuario. El usuario es automáticamente añadido a la lista de grupos por el sistema; no constará como miembro cuando usemos el comando groupshow con pw(8), pero sí cuando la información se consulte con id(1) u otra herramienta similar. En otras palabras, pw(8) sólo manipula el fichero /etc/group; nunca tratará de leer datos adicionales de /etc/passwd.

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

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

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

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


Capítulo 15. Seguridad

Gran parte de este capítulo ha sido tomado del manual de security(7) por Matthew Dillon.

15.1. Sinópsis

Este capítulo proveera una introducción básica a los conceptos de seguridad de sistema y algunos temas avanzados en FreeBSD. Muchos de los temas se pueden aplicar a la seguridad del sistema asi como también a la de Internet en general. Internet ya no es un lugar ``amistoso'' en el cual cada quién desea ser un buen vecino. Asegurar su sistema es imprecindible para proteger sus datos, característica intelectual, tiempo, y mucho mas de las manos de hackers y similares.

FreeBSD proporciona un arcenal de utilidades y mecanisimos para asegurar la integridad y la seguridad de su sistema y red.

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

  • Conceptos básicos de seguridad, con respecto a FreeBSD.

  • Sobre algunos mecanisimos de encriptación disponibles en FreeBSD, como DES y MD5.

  • Como instalar KerberosIV en versiones anteriores a 5.0.

  • Como instalar Kerberos5 en versiones posteriores a 5.0.

  • Como crear cortafuegos usando IPFW.

  • Como configurar IPsec y crear un VPN entre computadoras FreeBSD/Windows.

  • Como configurar y usar OpenSSH, implementación de SSH en FreeBSD.

  • Como configurar y cargar los modulos de extensión de control de acceso usando TrustedBSD MAC Framework.

  • Que sistema de archivos ACLs son y como usarlos.

  • Como utilizar las publicaciones de advertencias de seguridad en FreeBSD.

Antes de leer este capítulo, usted debe saber:

  • Conceptos básicos de FreeBSD y el Internet.


15.2. Introducción

La seguridad es una función que comienza y termina con el administrador de sistema. Mientras que los sistemas multi-usuario BSD UNIX tienen una inherente seguridad, el trabajo de construir y mantener mecanismos de seguridad adicionales para mantener a los usuarios de manera ``honesta'' es probablemente una de las unicas tareas del administrador del sistema. Los sistemas son tan seguros como uno los haga, los problemas de seguridad compiten con la necesidad humana de conveniencia. Los sistemas UNIX en general, son capaces de correr una gran cantidad de procesos simultáneos, de los cuales muchos de estos son servidores - lo que significa que entidades externas pueden conectarse y ``hablar'' con ellos. Asi como las mini-computadoras del ayer se convirtieron en los ahora escritorios de trabajo, y las computadoras se interconectaron, la seguridad cada ves se hace un problema mas grande.

La seguridad es mejor implementada como ``cebolla'' en capas. Basicamente, lo que se quiere hacer es crear la mayor cantidad posible de convenientes capas de seguridad para luego cuidadosamente monitorear el sistema para detectar intrusos. No es conveniente sobreconstruir la seguridad, ya que esta interferira con el aspecto de detección, y la detección es uno de los mas importantes aspectos de cualquier mecanismo de seguridad. Por ejemplo, no tiene mucho sentido usar los flags de schg (ver chflags(1)) en cada sistema binario, ya que mientras este puede protejer los binarios temporalmente, hace que el algun cambio hecho por un atacante sea difícil de detectar y puede resultar que el mecanismo de seguridad no detecte al atacante en lo absoluto.

La seguridad del sistema depende también de estar preparado para diferentes formas de ataque, incluyendo intentos de quebrar el sistema, o hacer un sistema inservible, pero no intentos de comprometer al usuario root (``quebrar root''). Los problemas de seguridad estan separados en diferentes categorias:

  1. Ataques de Negación de servicio (DoS).

  2. Compromisos en cuentas de usuarios.

  3. Compromisos de root por medio de servidores accesibles.

  4. Compromisos de root por medio de cuentas de usuarios.

  5. Creación de puertas de entrada.

Un ataque de negación de servicio es una acción que priva al sistema de los recursos requeridos. Generalmente, los ataques DoS son mecanismos de fuerza bruta que intentan quebrar el sistema forzando sus servidores. Algunos ataques DoS intentan aprovecharse de bugs en la red para quebrar el sistema con un solo paquete. Esto puede ser solucionado aplicando en el kernel una actualización que arregle el bug. Los ataques en servidores muchas veces pueden ser solucionados aplicando opciones apropiadas para limitar la carga del sistema en condiciones adversas. Los ataques de fuerza bruta en redes son mas complicados. Los ataques con paquetes enmascarados, por ejemplo, son casi imposible de detener, el cual puede desconectar el sistema de Internet. Pueden no quebrar el sistema, pero saturaran la conexión a Internet.


15.3. Asegurando FreeBSD

Comando vs. Protocolo: A través de este documento usaremos el texto en negrita para referirnos a un comando o aplicación. Esto se utiliza para casos tales como ssh, puesto que es tanto un protocolo como un comando.

Las siguientes secciones cubrirán los métodos para asegurar su sistema FreeBSD que fueron mencionados en la sección anterior a este capítulo.


15.3.4. Asegurando la cuenta root y las cuentas de staff

Antés que nada, no se preocupe en asegurar las cuentas del staff si aun no ha asegurado la cuenta root. La mayor parte de los sistemas tienen asignada una clave de acceso a la cuenta root. Lo primero que usted debe asumir es que la contraseña siempre está comprometida. Esto no significa que tenga que eliminar la contraseña. La contraseña es casi siempre necesaria para el acceso a la cónsola de la computadora. Esto significa que usted no debe permitir utilizar la contraseña fuera de la cónsola o usarla posiblemente con el comando su(1). Por ejemplo, cerciorese de que sus ptys sean correctamente especificados como inseguros en el archivo /etc/ttys para rechazar conexiones directas a root vía telnet o rlogin. Si se usan otros servicios tales como sshd, asegurese de que las conexiones directas a root estén deshabilitadas. Es posible hacer esto editando el fichero /etc/ssh/sshd_config, asegurando que PermitRootLogin esté fijado como NO. Considere cada método de acceso - Servicios como FTP puedes tener problemas de seguridad. Las conexiones directas a root deben ser sólo permitidas físicamente en la cónsola de sistema.

Por supuesto, como administrador de sistema usted debe poder acceder como root, y nosotros tenemos algunas formas de conseguirlo. Nos aseguraremos de que éstas formas tengan autenticación adicional. Una de las formas de hacer root accesible es agregar cuentas apropiadas del staff al grupo wheel (en /etc/group). Se permite a los miembros del staff puestos en el grupo wheel usar el comando su para acceder root. Nunca debe dar a miembros del staff acceso nativo a wheel cuando se crea la cuenta. Las cuentas del staff deben estar colocadas en grupos de staff, para después agregar a aquellos deseados al grupo wheel en el fichero /etc/group. Solamente a aquellos que realmente se necesiten en este grupo deben ser agregados. Es también posible usar un método de autentificación tal como Kerberos, utilizar el fichero .k5login en la cuenta root para permitir a ksu(1) que root no necesite a nadie en el grupo wheel. Esta puede ser una mejor solución puesto que el mecanismo de wheel todavía permite al intruso romper root, si el intruso ha conseguido quebrar el archivo de contraseñas y el grupo del staff. Mientrás que usar el mecanismo de wheel es mejor que no tener nada en lo absoluto, no es necesariamente la opción mas segura.

Una manera indirecta de asegurar las cuentas del staff y usar el acceso a root de ultima instancia es usar un método de acceso alternativo conocido como ``starring''. Este método marca las contraseñas cifradas con un solo ``*''. Este comando actualizará fichero de /etc/master.passwd y la base de datos de usuario/contraseña para desabilitar los logins con autentificación de contraseña.

Una cuenta del staff como esta:

foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh

Debe ser cambiada a:

foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/home/local/bin/tcsh

Este cambio evitará que las conexiones normales ocurran, ya que la contraseña cifrada nunca coincidirá con ``*''. Habiendo hecho esto, los miembros del staff deberán usar otros métodos de autentificación como kerberos(1) o ssh(1), usando pares de claves públicas/privadas. Al usar algo como Kereberos, uno debe asegurar generalmente las máquinas que corran los servidores Kereberos, asi como también su estación de trabajo. Al usar pares de claves públicas/privadas con ssh, uno debe asegurar generalmente la máquina usada para hacer el login (generalmente una estación de trabajo). Una capa adicional de protección se puede agregar a los pares de claves públicas/privadas protegiendolas con contraseña en el momento de crearlas con ssh-keygen(1). Pudiendo ``marcar'' las contraseñas de las cuentas del staff también garantiza que los miembros del staff solamente pueden acceder al sistema por medio de un método seguro. Esto fuerza a los miembros del staff a acceder al sistema usando solamente formas seguras y conexiones cifradas para todas sus sesiones, lo que protege de una de las vulnerabilidades más usadas por los intrusos.


Capítulo 16. Discos

Escrito por David O'Brien 26 de Abril de 1998

Supongamos que queremos añadir un nuevo disco SCSI a una máquina que en la actualidad sólo tiene un único disco. En primer lugar, apague el ordenador e instale el disco siguiendo las instrucciones del fabricante del ordenador, de la controladora y del propio disco. A causa de la diversidad de procedimientos para hacer esto, los detalles exceden el ámbito de este documento.

Entre en el sistema como el usuario root. Una vez que haya instalado el disco, inspeccione /var/run/dmesg.boot para asegurarse de que el nuevo disco ha sido encontrado. Continuando con nuestro ejemplo, el disco recientemente añadido será da1 y lo montaremos en /1 (si está usted añadiendo un disco IDE, sustituya da por wd).

Como FreeBSD funciona en ordenadores compatibles con el IBM-PC, debe tener en cuenta las particiones de la BIOS del PC. Estas son diferentes de las particiones tradicionales de tipo BSD. Un disco de PC puede tener hasta cuatro entradas para particiones de tipo BIOS. Si el disco va a ser realmente dedicado a FreeBSD, puede usted emplear el modo dedicado (dedicated). En otro caso, FreeBSD tendrá que alojarse en una de las particiones de la BIOS. FreeBSD llama a las particiones de la BIOS slices, para no confundirlas con las particiones tradicionales de tipo BSD. También puede usted usar slices en un disco que esté dedicado a FreeBSD, pero en un ordenador que además tenga otro sistema operativo instalado. Esto es así para no confundir a la utilidad fdisk del otro sistema operativo.

En el caso de utilizar slices, el disco será añadido como /dev/da1s1e. Esto se lee del siguiente modo: disco SCSI, unidad número 1 (segundo disco SCSI), slice 1 (partición 1 de la BIOS) y partición e de tipo BSD. En el caso de utilizar el modo dedicado, el disco será añadido, simplemente, como /dev/da1e.


16.1. Uso de Sysinstall

Puede utilizar /stand/sysinstall para crear y etiquetar particiones en un disco nuevo usando sus intuitivos menús. Bien entre en el sistema como el usuario root, o bien utilice el comando su. Ejecute /stand/sysinstall y seleccione el menú Configure. Dentro del menú FreeBSD Configuration Menu, baje hasta seleccionar la opción Partition. A continuación, se le debería mostrar una lista de los discos duros instalados en su sistema. Si no aparece da1, deberá usted comprobar la instalación física del disco y la salida del comando dmesg almacenada en el archivo /var/run/dmesg.boot.

Seleccione da1 para pasar al editor de particiones FDISK Partition Editor. Pulse A para usar el disco entero para FreeBSD. Cuando se le pregunte si quiere mantener el disco compatible con la instalación de algún sistema operativo en el futuro (``remain cooperative with any future possible operating systems'') conteste afirmativamente (YES). Escriba los cambios en el disco pulsando W. Ahora salga del editor FDISK pulsando q. A continuación se le preguntará acerca del sector de inicio del disco (MBR, Master Boot Record). Como está usted añadiendo un disco a un sistema que ya se encuentra en funcionamiento, seleccione la opción None (esta opción deja el MBR intacto).

A continuación llegará al Disk Label Editor. Aquí es donde creará las particiones de estilo tradicional BSD. Un disco puede tener hasta ocho particiones, designadas a-h. Algunas de las etiquetas de las particiones tienen usos especiales. La etiqueta a se utiliza para la partición raíz (/, root partition). Por tanto, sólo su disco de sistema (es decir, aquel desde el cual arranca el sistema) debería tener una partición a. La etiqueta b se utiliza para particiones de swap (memoria virtual) y es posible tener varios discos con particiones de swap. La etiqueta c representa a todo el disco utilizado en modo dedicado, o a todo el slice de FreeBSD si es que utilizamos el modo slice. Las restantes etiquetas son para uso general.

El editor de etiquetas (de particiones) de Sysinstall utiliza la etiqueta e para particiones que no son root ni swap. Dentro del editor de etiquetas de particiones, cree un único sistema de archivos pulsando C. Cuando se le pregunte si será un sistema de archivos (FS, file system) o swap, elija FS e indique un punto donde montarlo (por ejemplo, /mnt). Cuando añada un disco una vez instalado FreeBSD, Sysinstall no creará la entrada correspondiente en /etc/fstab, por lo que no resulta importante el punto que indique para montar el disco.

En este momento, ya puede escribir en el disco la información de las particiones y sus etiquetas y crear un sistema de archivos. Para ello pulse W. Ignore cualquier error de Sysinstall que le informe de que no pudo montar la nueva partición. Ya puede salir del editor de etiquetas de particiones y de Sysinstall.

El último paso consiste en editar /etc/fstab para añadir una entrada para el nuevo disco.


16.2. Utilización de la línea de comandos


16.2.2. Modo Dedicado

Si no va a compartir el nuevo disco con otro sistema operativo, puede usar el modo dedicado (dedicated). Recuerde que este modo puede confundir a los sistemas operativos de Microsoft; no obstante, estos no causarán ningún daño. En cambio, el OS/2 de IBM se ``apropiará'' de cualquier partición que encuentre y que no reconozca.

# dd if=/dev/zero of=/dev/rda1 bs=1k count=1
# disklabel -Brw da1 auto
# disklabel -e da1               # creamos la partición `e'
# newfs -d0 /dev/rda1e
# mkdir -p /1
# vi /etc/fstab               # añadimos una entrada para /dev/da1e
# mount /1

Un método alternativo resulta:

# dd if=/dev/zero of=/dev/rda1 count=2
# disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin
# newfs /dev/rda1e
# mkdir -p /1
# vi /etc/fstab                   # añadimos una entrada para  /dev/da1e
# mount /1

16.4. Creación de CDs

Pendiente de Traducción


16.4.1. burncd

Si dispone de una grabadora de CD ATAPI puede usar burncd para grabar la imagen ISO en un CD. burncd forma parte del sistema base y está en /usr/sbin/burncd. El uso es muy simple pues tiene solamente unas cuantas opciones:

# burncd -f unidad_de_cd
 data ficheroimagen.iso fixate

grabará una copia de ficheroimagen en unidad_de_cd. El dispositivo por defecto es /dev/acd0 (o /dev/acd0c en FreeBSD 4.X). Consulte burncd(8) para conocer las opciones de velocidad de grabación, expulsión del CD al acabar la grabación y cómo grabar datos de audio.


16.4.2. cdrecord

Pendiente de Traducción


Capítulo 17. El Gestor de Volúmenes Vinum


17.2. Los Discos son Demasiado Pequeños

Texto Original de Greg Lehey.

17.3. Cuellos de Botella en el Acceso

Figura 17-1. Organización Concatenada



Figura 17-2. Organización con ``Striping''




17.4. Integridad de Datos

Figura 17-3. Organización en RAID-5




17.6. Ejemplos


17.6.1. El Fichero de Configuración

Figura 17-4. Un Volumen Vinum Sencillo




17.6.2. Increased Resilience: Mirroring

Figura 17-5. Un Volumen Vinum Replicado




17.6.3. Optimización del Rendimiento

Figura 17-6. Un Volumen Vinum en ``Striping''




17.6.4. Resilience and Performance

Figura 17-7. Un Volumen Vinum Replicado y en ``Striping''




17.7. Esquema de Nombres de los Objetos

  • The control devices /dev/vinum/control and /dev/vinum/controld, which are used by vinum(8) and the Vinum daemon respectively.


Capítulo 18. Localización

Localización


Capítulo 19. Lo último de lo último

Restructured, reorganized, and parts updated by Jim Mock. Original work by Jordan Hubbard, Poul-Henning Kamp, John Polstra, y Nik Clayton.

19.1. Sinópsis

FreeBSD está en desarrollo continuo entre versiones. Para los que quieran estar en lo último de lo último, hay varias formas de sincronizar tu sistema con el último desarrollo fácilmente. ¡Estás advertido-- lo último de lo último no es para cualquiera! Este capítulo te ayudará a decidir si quieres seguir el sistema de desarrollo o quedarte en algunas de las versiones publicadas.

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

  • La diferencia entre las dos ramas de desarrollo; FreeBSD-STABLE y FreeBSD-CURRENT.

  • Cómo mantener tu sistema al día con CVSup, CVS, o CTM.

  • Cómo reconstruir y reinstalar el sistema base entero con make world.

Antes de leer este capítulo, deberías:

  • Disponer correctamente tu conexión de red (Capítulo 23).

  • Saber cómo instalar programas adicionales de terceros. (Capítulo 4).


19.2. FreeBSD-CURRENT vs. FreeBSD-STABLE

Hay dos ramas de desarrollo de FreeBSD; FreeBSD-CURRENT y FreeBSD-STABLE. Esta sección explicará un poco sobre cada una y describirá cómo mantener tu sistema al día entre cada árbol respectivo. FreeBSD-CURRENT será discutida primero, luego FreeBSD-STABLE.


19.2.1. Manteniendo la versión Current.

Al leer esto, ten en cuenta que FreeBSD-CURRENT es el ``lo más reciente'' del desarrollo y que si tú eres nuevo en FreeBSD, deberías pensartelo muy mucho antes de ejecutarlo.


19.2.1.1. ¿Qué es FreeBSD-CURRENT?

FreeBSD-CURRENT es, literalmente, nada más que una instantánea diaria sobre el trabajo en el código fuente para el FreeBSD. Esto incluye trabajo cambiante, cambios experimentales y mecanismos transitorios que podrían estar o no presentes en la próxima versión del programa. Mientras la mayoría de nosotros compilamos casi a diario el FreeBSD-CURRENT las fuentes, Hay períodos de tiempo en que las fuentes son literalmente incompilables. Estos problemas son solucionados tan pronto como es posible, pero si las fuentes del FreeBSD-CURRENT son un desastre o una bendición su utilidad puede ser literalmente una cuestión de en que momento del período de 24 horas dado las grabaste.


19.2.1.2. ¿Quién necesitaFreeBSD-CURRENT?

FreeBSD-CURRENT está disponible generalmente para tres grupos de interés principales:

  1. Miembros del grupo FreeBSD que están activamente trabajando en alguna parte del código fuente del árbol y para los que mantenerse ``current'' es un requisito absoluto.

  2. Miembros del FreeBSD grupo que son activos probadores, con el propósito de pasar tiempo trabajando en los problemas para asegurarse de que FreeBSD-CURRENT se mantiene tan cuerdo como sea posible. También hay gente que desea hacer sugerencias típicas en cambios y en la dirección principal del FreeBSD.

  3. Miembros externos FreeBSD o algún grupo que desea mantener un ojo en las cosas y usa las fuentes del "current" por motivos de referencia (reference) (Ej. para leer, no ejecutar). Estas personas también hacen comentarios ocasionales o contribuyen al código.


19.2.1.3. ¿Qué No es FreeBSD-CURRENT?

  1. Un rápido sistema de seguimiento para conseguir pre-distribuciones porque has oido que hay alguna nueva funcionalidad interesante dentro y quieres ser el primero del barrio en tenerla.

  2. Un sistema rápido de tener los fallos solucionados.

  3. En ningún caso ``asistencia oficial'' por nuestra parte. Nosotros nos esforzamos sinceramente en ayudar a la gente en alguna de las tres situaciones. Nosotros ``habilitamos'' FreeBSD-CURRENT pero simplemente no tenemos tiempo para dar asistencia técnica. Esto no es porque seamos de alguna forma mala gente que no quiere ayudar a los demás (ni siquiera estaríamos haciendo FreeBSD si lo fueramos), es simplemente porque no podemos responder 400 mensajes al día y en realidad trabajamos en FreeBSD! Si nos dan a escoger entre mejorar el FreeBSD y responder montones de preguntas, la mayoría de los desarrolladores y usuarios, problamente opten por lo primero.


19.2.1.4. Usando FreeBSD-CURRENT

  1. Unirse a FreeBSD-CURRENT lista de correo y al lista de correo de mensajes de committs CVS de FreeBSD . No es sólo una buena idea, es esencial. Si no estás en el FreeBSD-CURRENT lista de correo, no verás los comentarios que la gente hace sobre la situación del sistema current y por esto probablemente terminarás tropezando con un montón de problemas que otros ya han encontrado y solucionado. Casi más importante, te perderás importantes boletines que podrían ser fundamentales para la continuidad de la salud de tu sistema.

    La lista de correolista de correo de mensajes de committs CVS de FreeBSD te permitirá ver el apunte en el registro de "commits" por cada cambio que se realice junto con información pertinente sobre posibles efectos secundarios.

    Para unirte a estas listas, envía un correo a and indicando lo siguiente en el cuerpo del mensaje:

    subscribe freebsd-current
    subscribe cvs-all
    

    Opcionalmente,puedes también ponerhelp y Majordomo te enviará ayuda completa sobre como suscribirse o desuscribirse a las varias listas de correo que asistimos.

  2. Graba las fuentes desde ftp.FreeBSD.org. Puedes hacer esto de varias maneras:

    1. Usa el programa cvsup con este supfile. Este es el método más recomendable, ya que te permite grabar la colección entera una vez y a partir de entonces sólo lo que cambie desde entonces.Mucha gente ejecuta cvsup from cron y mantiene actualizadas sus fuentes automáticamente. Tienes que adaptar la muestra de supfile de arriba y configurar cvsup a tu entorno.Si quieres ayuda para hacer esta configuración, teclea:

      # pkg_add -f
      ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/All/cvupit-3.0.tgz
      
    2. Usa ftp. El código fuente del árbol del FreeBSD-CURRENT está siempre ``exportado'' en: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/. Algunos de nuestros servidores FTP también permiten grabar los árboles enteros comprimidos/tarred. ej. Mira:

      usr.bin/lex
      

      Puedes hacer lo siguiente para conseguir el directorio completo como un archivo tar:

      ftp> cd usr.bin
      ftp> get lex.tar
      
    3. Usa la aplicació CTM. Si tienes muy mala conexión (conexiones caras o sólo acceso para correo electrónico) CTMes una opción. Sin embargo es muy complicado y puede darte archivos rotos. Por eso se usa raramente, lo que incrementa la posibilidad de que no funcione durante largos periodos de tiempo. Te recomendamos usar CVSup para cualquiera con un modem de 9600bps modem o una conexión más rapida.

  3. Si estás grabando las fuentes para ejecutarlas y no sólo leerlas, entonces graba todo el FreeBSD-CURRENT, no sólo algunos trozos. La razón es que varias partes de las fuentes dependen de actualizaciones de otros sitios, y tratar de compilar sólo una proció casi te garantiza meterte en problemas.

    Antes de compilar FreeBSD-CURRENT, lee con cuidado Makefile en /usr/src Deberías al menos ejecutar un make world la primera vez como parte del proceso de actualización. Leer el FreeBSD-CURRENT lista de correo te mantendrá al día en otros procedimientos de arranque que a veces se convierten en necesarios cuando nos acercamos a la siguiente versión.

  4. ¡Participa! Si estas usando FreeBSD-CURRENT, queremos saber lo que tienes que decir sobre él, especialmente si tienes sugerencias para mejoras o arreglos de fallos. Recibimos tus sugerencias con más entusiasmo si incluyes el código correspondiente!


19.2.2. Manteniendo Stable con FreeBSD

19.2.2.1. ¿Qué es FreeBSD-STABLE?

FreeBSD-STABLE es nuestra rama de desarrollo con la que hacemos las versiones principales. Los cambios van a esta rama con un ritmo diferente, asumiendo que han ido primero a FreeBSD-CURRENT para probarse. Esta es aun una rama de desarrolllo, aunque, y esto significa en cualquier momento, las fuentes deFreeBSD-STABLE pueden o no ser adecuadas para un propósito determinado. Es simplemente otro camino en la ingeniería del desarrollo, no un recurso para usuarios finales.


19.2.2.2. ¿Quién necesita FreeBSD-STABLE?

Si estás interesado en seguir o en contribuir al proceso de desarrollo de FreeBSD, especialmente en lo relativo a la próxima``point'' release de FreeBSD, entonces deberías considerar seguir FreeBSD-STABLE.

Aunque es verdad que algunos arreglos de seguridad van tambien a la rama FreeBSD-STABLE , tú no necesitas seguir FreeBSD-STABLE para hacerlo. Cada notificación de seguridad de FreeBSD explica como solucionar el problema en la versión que afecta. [4] seguir una rama de desarrollo sólo por razones de seguridad es seguramente también traer una gran cantidad de cambios no deseados.

Aunque nosotros nos esforzamos para asegurar que la rama FreeBSD-STABLE compila y funciona en cualquier ocasión, esto no puede garantizarse, ya que el código es desarrollado en FreeBSD-CURRENT antes de incluirlo en FreeBSD-STABLE, más gente usa FreeBSD-STABLE que FreeBSD-CURRENT, asi que es inevitable que algunos errores se encuentren alguna vez en FreeBSD-STABLE que no eran evidentes en FreeBSD-CURRENT.

Por estas razones, nosotros no recomendamos que sigas ciegamenteme FreeBSD-STABLE, y es especialmente importante que no actualices algun servidor importante a FreeBSD-STABLE sin probar primero el código en tu entorno de desarrollo.

Si no tienes los recursos para hacer esto entonces te aconsejamos que ejecutes la más reciente distribución de FreeBSD, y uses el mecanismo de actualización binaria entre distribución y distribución.


19.2.2.3. Usando FreeBSD-STABLE

  1. Únete a lista de correo sobre FreeBSD-STABLE. Esto te mantendrá informado de las dependencias de construcción que puedan aparecer en FreeBSD-STABLE o cualquier otra cuestión que requiera especial atención. Los desarrolladores harán los anuncios en esta lista de correo cuando estén contemplando algun arreglo polémico o actualización, dando a los usuarios la oportunidad de responder si tienen alguna cuestión que plantear respecto al cambio propuesto.

    La lista de correo lista de correo de mensajes de committs CVS de FreeBSD te permitirá ver el apunte del commit log para cada cambio tal como se hace junto con la posible información sobre los efectos secundarios.

    Para apuntarse a estas listas, envía un correo a y especifica lo siguiente en el cuerpo del mensaje:

    subscribe freebsd-stable
    subscribe cvs-all
    

    Opcionalmente, puedes indicar help y Majordomo te enviará ayuda completa sobre como suscribirte y desuscribirte a las otras listas que mantenemos.

  2. Si estás instalando un nuevo sistema y quieres que sea lo más estable posible, puedes grabar simplemente la última rama con la instantánea más antigua de ftp://releng4.FreeBSD.org/pub/FreeBSD/ and install it like any other release.

    Si ya estas usando una versión previa de FreeBSD y quieres actualizar via fuentes entonces puedes hacerlo fácilmente desde ftp.FreeBSD.org. Esto puede hacerse de tres maneras:

    1. Usa el programa cvsup con this supfile. Este es el sistema recomendado, ya que te permite grabar la colección entera una vez y a partir de entonces sólo lo que cambie. Algunos usan cvsup from cron para mantener las fuentes al día autom´ticamente. Para una interface bastante sencilla para esto, simplemente teclea:

      # pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz
      
    2. Usa ftp. Las fuentes de árbol para el FreeBSD-STABLE están siempre ``exported'' en: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/

      Algunos de nuestros servidores de FTP permiten tambien grabar los árboles completos compressed/tarred. ej. Mira:

      usr.bin/lex
      

      Puedes hacer lo siguiente para conseguir el directorio como archivo tar:

      ftp> cd usr.bin
      ftp> get lex.tar
      
    3. Usa CTM. Si no tienes una conexió rápida y barata a Internet,este es el método que debería considerar usar.

  3. Básicamente, si necesitas acceso rápido bajo demanda a la fuente y el ancho de banda no es una consideración , usa cvsup o ftp. De otro modo, usa CTM.

  4. Antes de compilarFreeBSD-STABLE, lee el Makefile en /usr/src con cuidado. Deberías al menos ejecutar un make world la primera vez como parte del proceso de instalaci´n.Leyendo ellista de correo sobre FreeBSD-STABLE te mantendrá al día en los otros procedimientos de arranque que alguna vez pueden llegar a ser necesarios cuando nos acercamos a la siguiente versión.


19.3. Sincronización de su código fuente

Hay varias formas de usar una conexión de Internet (o de correo) para estar al día en cualquier area dada de las fuentes del proyecto FreeBSD, o en todas las areas, dependiendo de lo que te interese. Los servicios primarios que ofrecemos son Anonymous CVS, CVSup, y CTM.

AvisoAunque es posible actualizar sólo partes del código fuente del arbol, el único procedimiento de actualización que prestamos es actualizar el arbol entero y recompilarlo a la vez junto al espacio del usuario (ej., todos los programas que se ejecutan en el espacio del usuario, tales como los que están en /bin y /sbin) y las fuentes del kernel. Actualizar sólo parte del código fuente del arbol, sólo el kernel, o sólo el area de usuario trae a menudo problemas.Estos problemas pueden ir desde errores de compilación hasta kernel panics o corrupción de datos.

Anonymous CVS and CVSup usa el modelo pull para actualizar las fuentes. En caso de CVSup el usuario (o un cron script) invoca el programa cvsup, y este interactua con el servidor cvsupd en algún lugar para traer los archivos actualizados. Las actualizaciones que recibes lo están al minuto y tú las consigues cuando, y sólo cuando, las quieras. Puedes fácilmente restringir tus actualizaciones a los archivos o directorios que te interesen. Las actualizaciones se crean sobre la marcha por el servidor según lo que tienes o quieras tener. Anonymous CVS es bastante mas simple que CVSup que es sólo una extensión de CVS que permite retirar los cambios directamente desde un repositorio (repository) CVS remoto. CVSup puede hacer esto mucho más eficientemente, pero Anonymous CVS es más fácil de usar.

CTM, por otro lado, no compara las fuentes que tienes interactivamente con las del archivo master o de otro que retires..En vez de eso, un script que identifica los cambios en los archivos se ejecuta varias veces al día en la maquina maestra CTM, cualquier cambio detectado, sellado con una secuencia de números y codificado para transmitirlo en correo ( sólo en ASCII imprimible). Una vez recibido, estos``CTM deltas'' pueden ser manipulados por la utilidad ctm_rmail(1) que automáticamente decodifica, verifica y aplica los cambios a la copia de las fuentes del usuario. Este proceso es más eficiente que CVSup, y pone menos presión en nuestros recursos de servidor ya que es un modelo de empujar en vez de tirar .

Hay otros aspectos a tener en cuenta, por supuesto. Si descuidadamente barres trozos de tu archivo, CVSup te detectará y reconstruirá las porciones dañadas. CTM no hace esto, y si borras algún trozo de las fuentes del árbol (y no has hecho una copia de respaldo) entonces tendrás que partir de cero ( desde el más reciente CVS ``base delta'') y reconstruirlo todo con CTM o, con anoncvs, simplemente borrará los malos bits (bad bits) y resincronizarás


19.4. Uso de make world

Una vez que has sincronizado las fuentes de tu árbol local con alguna versión determinada deFreeBSD (FreeBSD-STABLE, FreeBSD-CURRENT, y asi) puedes usar las fuentes del árbol para reconstruir el sistema.

Haciendo una copia de respaldoNunca se hace suficiente hincapié sobre lo importante que es hacer una copia de respaldo de tu sistema antes de hacer esto. Aunque reconstruir world es (siempre que sigas estas instrucciones) una tarea fácil de hacer, habrá veces que inevitablemente cometas errores, o cuando errores hechos por otros en las fuentes del árbol inutilice tu sistema haciendolo inarrancable.

Asegúrate de haber hecho una copia de respaldo. Y ten un diskette de reparación a mano. ¡Probablemente no tengas nunca que usarlo, pero es mejor asegurarse que lamentarlo!

Suscribete a la lista de correo correctaLas ramas FreeBSD-STABLE and FreeBSD-CURRENT son , por naturaleza, en desarrollo . La gente que contribuye a FreeBSD son humanos, y los errores ocasionalmente ocurren.

Algunos de estos errores pueden ser poco dañinos, que sólo causan que tu sistema imprima una nueva señal de diagnostico. O el cambio puede ser catastrófico, e inutilizar tu sistema inarrancable o destruir tu sistema de archivos ( o algo peor).

Si un problema como este ocurre, un ``heads up'' es enviado a la lista de correo apropiada, explicando la naturaleza del problema y a que sistema afecta. Y un ``all clear'' anuncio es enviado cuando el problema ha sido resuelto.

Si intentas seguir FreeBSD-STABLE o FreeBSD-CURRENT y no lees la lista de correo sobre FreeBSD-STABLE o la FreeBSD-CURRENT lista de correo respectivamente, entonces estás buscando problemas.


19.4.1. Lee /usr/src/UPDATING

Antes de hacer nada mas, lee /usr/src/UPDATING (o el archivo equivalente dondequiera que tengas una copia del código fuente). Este archivo puede contener importante información sobre problemas que puedes encontrarte, o indicar el orden en que debes ejecutar ciertas ordenes.) Si UPDATING contradice algo que leas aqui, UPDATING tiene preferencia.

Importante: Leer UPDATING no es un sustituto aceptable a la suscripcion a la lista adecuada, como se describió antes. Los dos requisitos son complementarios no exclusivos.


19.4.2. Comprueba /etc/make.conf

Examina los archivos /etc/defaults/make.conf y /etc/make.conf. El primero contiene algunas definiciones por defecto - la mayoría de las cuales ya se han comentado. Para hacer uso de ellas cuando reconstruyas tu sistema desde las fuentes, añadelas a /etc/make.conf. Ten en cuenta que cualquier cosa que añadas a /etc/make.conf se usa cada vez que ejecutas make, así que es una buena idea colocarles algo sensato para tu sistema.

Un usario típico querrá probablemente copiar las líneas CFLAGS y NOPROFILE encontradas en /etc/defaults/make.conf a /etc/make.conf y ponerles un comentario.

Examina las otras definiciones (COPTFLAGS, NOPORTDOCS y sucesivamente) y decide si son importantes para ti.


19.4.3. Actualiza /etc/group

Este directorio /etc contiene una gran parte de la información sobre la configuración de tu sistema ,asi como scripts que se ejecutan al iniciarse el sistema. Algunos de estos scripts cambian de versión en versión de FreeBSD.

Algunos de estos archivos de configuración son usados en el funcionamiento del día a día del sistema. En particular, /etc/group.

Ha habido ocasiones durante la instalación de ``make world'' que se ha supuesto la existencia de ciertos nombres de usuario o grupos. Cuando se lleva a cabo una actualizacion es probable que alguno de estos grupos no existan. Esto causa problemas cuando actualizas. para>

El ejemplo más reciente de esto es cuando el grupo ``ppp'' (llamado despues ``network'') fue añadido. A los usarios les falló el proceso de instalación cuando partían del subsistema ppp fueron instaladas usando un nombre de grupo inexistente (para ellas).

La solución es examinar /usr/src/etc/group y comparar su lista con la tuya.Si hay algún grupo en el nuevo archivo que no están en tu archivo entonces cópialos encima. De la misma forma, deberías renombrar cualquier grupo en /etc/group que tenga la misma GID pero un nombre diferente para aquellas en /usr/src/etc/group.

Sugerencia: Si te sientes particularmente paranoico, puedes comprobar tu sistema para ver que archivos pertenecen al grupo que estas renombrando o borrando.

# find / -group GID -print

mostrará todos los ficheros que pertenecen al grupo GID (que puede ser o un nombre de grupo o una ID numérica de grupo).


19.4.4. Cambiando a modo Monousuario

Puede que quieras compilar el sistema en modo monousuario.Aparte del beneficio obvio de hacer que las cosas vayan más rapido , reinstalar el sistema tocará un montón de archivos importantes del sistema, todos los binarios standard del sistema, bibliotecas incluso archivos y demás. Cambiar estas cosas en un sistema en funcionamiento (especialmente si en ese momento hay usuarios activos en el sistema) es ganas de meterse en lios.

Otro método es compilar el sistema en modo multiusuario y luego cambiar a modo monousuario para la instalación.Si te gustaría hacerlo de esta forma, simplemente retrasa los siguientes pasos hasta que hayas completado la construcción.

Como superusuario, ejecuta

# shutdown now

desde un sistema en funcionamiento, al que cambiará a modo monousuario.

Alternativamente, reinicia el sistema, y en el boot promt, introduce la -s flag. El sistema se reiniciará en modo monousuario.En el promt de la shell deberías ejecutar:

# fsck -p
# mount -u /
# mount -a -t ufs
# swapon -a

Esto comprueba los sistemas de archivos, remounts / lectura/escritura, mounts, todos los sistemas de archivos UFS referenciados en /etc/fstab y entonces hace los cambios indicados.


19.4.5. Quita /usr/obj

Mientras algunas partes son reconstruidas ellas se colocan en directorios que (por defecto) estan bajo /usr/obj. Los directorios shadow estos bajo /usr/src.

Puedes acelerar el proceso ``make world'' y posiblemente ahorrarte dolores de cabeza por las dependencias quitando este directorio también.

Algunos archivos bajo /usr/obj pueden tener colocada la señal inmutable (immutable flag set) (mira chflags(1) para mas información) que deberá ser quitada primero.

# cd /usr/obj
# chflags -R noschg *
# rm -rf *

19.4.6. Recompilar la fuente

19.4.6.1. Guardando la salida (Output)

Es una buena idea guardar la salida que obtienes cuando se ejecuta make(1) en otro archivo. Si algo sale mal tendrás una copia del mensaje de error.Aunque esto puede no ayudarte en el diagnóstico de que ha salido mal, puede ser útil si mandas tu problema a una de las listas de FreeBSD .

La forma más fácil de hacer esto es usar la orden script(1) , con un parámetro que indique el nombre del archivo donde guardar los datos de salida.Podrías hacer esto inmediatamente antes de reconstruir world, y luego teclear exit cuando el proceso ha terminado.

# script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out   
# make TARGET
... compile, compile, compile ...     
# exit
Script done, ...

Si haces esto, no guardes el output en /tmp. Este directorio podria ser vaciado en el proximo arranque. Un lugar mejor para almacenarlo es en /var/tmp (como en el ejemplo anterior) o en el directorio home de root.


19.4.6.2. Compilar e instalar el Sistema Base (Base System)

Debes estar en /usr/src directory...

# cd /usr/src

(a menos que, por supuesto, tu código fuente este en otra parte, en ese caso cambia a ese directorio).

Para reconstruir world utiliza el make(1) command. Esta orden lee las instrucciones desde el Makefile, que describe como el programa que comprende el FreeBSD debe ser reconstruido.

El formato general de la línea de ordenes que teclearás es como sigue:

# make -x -DVARIABLE target

En este ejemplo, -x es una opción que pasarías a make(1). Mira la pagina del manual de make(1) para un ejemplo de las opciones que puedes pasar.

-DVARIABLE pasa una variable a el Makefile. El comportamiento de Makefile esta controlado por esas variables.Estas son las mismas variables como estan colocadas en /etc/make.conf, y esto proporciona otra forma de disponerlas.

# make -DNOPROFILE=true target

es otra forma de indicar que las bibliotecas indicadas no se construyan, y corresponde con el

NOPROFILE=    true
#    Avoid compiling profiled libraries

Las líneas en /etc/make.conf.

target dicen a make(1) que quieres hacer. Cada Makefile define un número de diferentes ``objetivos'', y la elección de esos objetivos determina lo que ocurre.

Algunos objetivos estan listados en Makefile, pero no significa que puedas ejecutarlos En vez de eso, se usan por el proceso de consrucción para romper los pasos necesarios para reconstruir el sistema en un número de sub-pasos.

La mayoría de las veces, no necesitas pasar ningun parametro a make(1), y asi tu orden se parecerá a esto:

# make target

A partir de la versión 2.2.5 de FreeBSD (en realidad, se creó por primera vez en la FreeBSD-CURRENT branch, y luego posteriormente colocado en FreeBSD-STABLE a mitad de camino entre 2.2.2 y 2.2.5) el objetivo (target) world se ha dividido en dos. buildworld y installworld.

Como el nombre implica, buildworld construye un nuevo árbol bajo /usr/obj, y installworldinstala este árbol en una máquina con la versión current.

Esto es muy útil por dos motivos.Primero, te permite construir de forma segura, sabiendo que ningún componente del sistema current será afectado. La construcción es ``self hosted''. Por esto puedes con seguridad ejecutar buildworld en una m6aacute;quina funcionado en modo multiusuario sin miedo a efectos indeseados.Aunque aun es recomendable que ejecutes installworld en modo monousuario.

En segundo lugar, permite usar NFS mounts para actualizar multiples m6aacute;quinas en tu red. Si tienes tres máquinas, A, B y C que quieres actualizar, ejecuta make buildworld y make installworld en A. B y C deben luego mount NFS /usr/src y /usr/obj desde A, y puedes luego ejecutar make installworld para instalar los resultados de la construcción en B y C.

Aunque el world target aún exista, se recomienda firmemente que no lo uses.

Ejecutar

# make buildworld

Ahora es posible especificar un opción -j make lo que provocará varios procesos simultaneos. Esto es lo mas útil en máquinas con multiples CPU. Sin embargo, ya que el proceso de compilación es IO bound mas que CPU bound es también útil en máquinas con una sóla CPU.

En una típica máquina mono-CPU ejecutarías:

# make -j4 buildworld

make(1) tendrías mas de 4 procesos ejecutandose en cada momento. La evidencia empírica comentada en las listas de correo muestran que esto da el mejor resultado.

Si tienes una máquina multi-CPU y estas usando un kernel configurado SMP prueba valores entre 6 y 10 y mira como se aceleran las cosas.

Estas advertido de que esto es aún experimental y que hacer commits al código fuente del árbol puede ocasionalmente romper esta posibilidad. Si world falla al compilar usando este parámetro intentalo de nuevo sin él, antes de informar de los problemas.


19.4.6.3. Momento (Timings)

Muchos factores influyen en el tiempo de construcción, pero generalmente un Pentium 3 500 Mhz con 128 MB de RAM tardara 2 horas en construir el árbol FreeBSD-STABLE , sin trucos o cortes durante el proceso. Un árbol FreeBSD-CURRENT tardará algo mas.


19.4.7. Compilar e instalar un nuevo Kernel

Para sacar el máximo provecho de nuestro sistema debemos recompilar el kernel. Esto es prácticamente una necesidad, ya que ciertas estructuras de memoria podrían haber cambiado y ciertos programas como ps(1) y top(1) fallarán hasta que el kernel y la versiones del código fuente sean la misma.

El modo más simple y seguro de hacer esto es construir e instalar un kernel basado en GENERIC. Mientras GENERIC puede no teer todos los dispositivos necesarios para tu sistema, debe tener todo lo necesario para arrancar tu sistema de nuevo en modo monousuario. Esta es una buena prueba de que el nuevo sistema funciona correctamente. Después de hacer el arranque desde GENERIC y verificar que el sistema funciona puedes luego construir un nuevo kernel basado en el archivo de configuración de tu kernel normal.

Si estas actualizando de FreeBSD 4.0 a superior entonces el procedimiento standard de construcción de kernel (descrito Capítulo 7) es desaconsejable.En vez de eso deberías, ejecutar estas ordenes

# cd /usr/src
# make buildkernel
# make installkernel

Si estás actualizando a una versión de FreeBSD por debajo de 4.0 usa el procedimiento de construcción standard del kernel. Sin embargo, se recomienda que uses una nueva versión de config(8), usando una línea de ordenes como esta.

# /usr/obj/usr/src/usr.sbin/config/config KERNELNAME

19.4.8. Arranca en Modo Usuario Único

Deberías arrancar en modo usuario único para probar como funciona el nuevo kernel.Haz esto siguiendo las instrucciones en Sección 19.4.4.


19.4.9. Instalar los Nuevos Binarios del Sistema

Si estuvieses construyendo una version de FreeBSD suficientemente reciente como para haber usado make buildworld entonces deberías usar ahora el installworldpara instalar el nuevo sistema de binarios.

Ejecuta

# make installworld

Nota: Si especificaste variables en la línea de orden make buildworld deberías poner las mismas variables en la línea de orden de make installworld . Esto no es necesariamente cierto para otras opciones; por ejemplo, , -j nunca debe ser usada con installworld.

Por ejemplo, si ejecutaste:

# make -DNOPROFILE=true buildworld

debes instalar los resultados con:

# make -DNOPROFILE=true installworld

de otro modo, instalaría bibliotecas seleccionadas que no habían sido construidas durante la fase make buildworld .


19.4.10. Actualización de archivos no actualizados por make world

Rehacer el world no actualizará ciertos directorios (en particular, /etc, /var y /usr) con los archivos de configuración nuevos o cambiados.

El medio más simple para actualizar estos archivos es usar mergemaster(8), aunque es posible hacerlo manualmente si lo prefieres. Nosotros te recomendamos fervientemente usar mergemaster(8), aunque, si lo haces entonces puedes saltar a la siguiente sección , puesto que mergemaster(8) es muy simple de usar. Deberías leer la página del manual primero, y hacer una copia de respaldo de /etc por si algo va mal.

Si deseas hacer la actualización manualmente no basta con que copies los archivos de /usr/src/etc a /etc y que funcione. Algunos de estos archivos deben ser ``instalados'' primero. Esto es porque el directorio/usr/src/etc no es una copia de lo que tu directorio /etc debería parecer. Además, hay archivos que deberían estar en /etc que no están en /usr/src/etc.

El medio más sencillo de hacer esto a mano es instalar los archivos en un nuevo directorio y luego trabajar con ellos buscando las diferencias.

Haz una copia de tu existente /etcAunque en teoría nada va a tocar este directorio automáticamente, es mejor estar seguros. Así que copia tu existente /etc en lugar seguro. Algo como:

# cp -Rp /etc /etc.old

-R hace una copia recursiva , -p almacena los tiempos, propiedad de los archivos y cosas así.

Necesitas construir el grupo de directorios que hagan el papel de / para instalar el nuevo /etc y otros archivos dentro. /var/tmp/root es una elección razonable, y también se requiere un número de subdirectorios debajo de este.

# mkdir /var/tmp/root
# cd /usr/src/etc
# make DESTDIR=/var/tmp/root distrib-dirs distribution

Esto construirá la necesaria estructura de directorio e intalará los archivos.Un montón de directorios que habrán sido creados bajo /var/tmp/root estan vacios y deberan ser borrados. Una forma muy f6aacute;cil de hacerlo es:

# cd /var/tmp/root
# find -d . -type d | xargs rmdir 2>/dev/null

Así quitamos todos los directorios vacios. (El error standard es redirigido a /dev/null para prevenir las advertencias sobre directorios que no están vacios.)

/var/tmp/root ahora contiene todos los archivos que deberían estar colocados en lugares adecuados bajo /. Ahora tienes que ir a cada archivo y determinar cuánto difieren de tus archivos exiting.

Date centa que algunos de los archivos que se habrán instalado en /var/tmp/root tienen un leading ``.''. En el momento de escribir esta documentación los únicos archivos como estos son los archivos de inicio de la shell en /var/tmp/root/ y /var/tmp/root/root/, aunque podría haber otros (dependiendo de cuando leas esto.Asegurate de usar ls -a para capturarlos.

El sistema más fácil para hacerlo es usar diff(1) para comparar los dos ficheros.

# diff /etc/shells /var/tmp/root/etc/shells

Esto te mostrará las diferencias entre tu archivo /etc/shellsy el nuevo archivo /etc/shells . Úsalos para decidir si fusionas con los cambios que hayas hecho o si lo copias encima de tu viejo archivo.

Nombra el Nuevo Directorio de Root (/var/tmp/root) con un Sello temporal (time stamp), de esta forma puedes comparar fácilmente las diferencias entre versiones: Reconstruir frecuentemente el world significa que actualizas /etc tambien frecuentemente, lo que puede ser un poco pesado.

Puedes acelerar este proceso manteniendo una copia del último grupo de archivos cambiados que hayas fusionado en /etc. El siguiente metodo te da una idea de como hacer esto.

  1. Make the world como normal. Cuando quieras actualizar /etcy los otros directorios, dále al directorio de destino un nombre basado en la fecha actual. Si estuvieses haciendo esto el 14 de Febrero de 1998 harías lo siguiente.

    # mkdir /var/tmp/root-19980214
    # cd /usr/src/etc
    # make DESTDIR=/var/tmp/root-19980214 \
        distrib-dirs distribution
    
  2. Añade los cambios del directorio según lo explicado arriba.

    No quites el directorio /var/tmp/root-19980214 cuando hayas acabado.

  3. Cuando hayas descargado la ultima versión de las fuentes y las hayas rehecho, sigue el paso 1.Esto te dará un nuevo directorio, que podría llamarse /var/tmp/root-19980221 (si esperas una semana entre las actualizaciones).

  4. Tu puedes ahora ver las diferencias que se han hecho en esa semana intermedia usando diff(1) puedes usar diff para buscar recursivamente las diferencias entre los dos directorios.

    # cd /var/tmp
    # diff -r root-19980214 root-19980221
    

    Típicamente, este conjunto de diferencias serán más pequeñas que las que hay entre /var/tmp/root-19980221/etc y /etc. Como las diferencias son menores, es más fácil enviar esos cambios hasta tu directorio /etc .

  5. Ahora puedes quitar el más viejo de los dos directorios /var/tmp/root-*.

    # rm -rf /var/tmp/root-19980214
    
  6. Repite el proceso cada vez que necesites añadir un cambio a /etc.

Puedes usar date(1) para automatizar la generación de los nombres de directorio.

# mkdir /var/tmp/root-`date "+%Y%m%d"`

19.4.11. Actualiza /dev

DEVFS: Si estás usando DEVFS esto no sería necesario.

En la mayoría de los casos, la herramienta mergemaster(8) se dar6aacute; cuenta cuando es necesario actualizar dispositivos y se ofrecerá a hacerlo automáticamente. Estas instrucciones te dirán como hacerlo manualmente.

Por motivos de seguridad, este es un proceso con varios pasos.

  1. Copia /var/tmp/root/dev/MAKEDEV en /dev.

    # cp /var/tmp/root/dev/MAKEDEV /dev
    

    Si usaste mergemaster(8) para actualizar /etc, entonces tu script MAKEDEV debería haberse actualizado ya, aunque no hace daño si lo compruebas (con diff(1))y lo copias manualmente si fuese necesario.

  2. Ahora, toma una instantánea de tu actual /dev. Esta instantánea necesita contener los permisos, propiedades, números mayores y menores de cada archivo, pero no debería contener un sello temporal (time stamp) La forma más fácil de hacerlo es usar awk(1) para sacar alguna información.

    # cd /dev
    # ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.out
    
  3. Rehacer todos los dispositivos.

    # sh MAKEDEV all
    
  4. Copia otra instantánea del directorio , esta vez en /var/tmp/dev2.out. Ahora mira entre esos dos archivos por si se te olvido crear algun dispositivo. No debería haber ninguno, pero es mejor estar seguro que lamentarlo.

    # diff /var/tmp/dev.out /var/tmp/dev2.out
    

    Podrás detectar más fácilmente discrepancias en las cuotas del disco que tienen que ver con mandatos tales como

    # sh MAKEDEV sd0s1
    
    Para recrear las entradas a las cuotas. Tus circunstancias especificas pueden variar.


19.4.12. Actualiza /stand

Nota: Este paso se incluye para completar. Puede omitirse sin miedo.

Para terminar completamente , podrías querer actualizar los archivos en /stand tan bien. Estos archivos consisten en enlaces sostenidos (hard links) a el binario /stand/sysinstall. Este binario debería estar enlazado estáticamente, para que pueda funcionar cuando ningún otro sistema de archivos (y en particular /usr)haya sido montado.

# cd /usr/src/release/sysinstall
# make all install

19.4.13. Reinicio

Ya esta hecho. Despues de que hayas verificado que todo parece estar en el lugar adecuado puedes reiniciar el sistema. Un simplefastboot(8) lo hará.

# fastboot

19.4.14. Finalizado

Deberías tener ahora tu sistema operativo actualizado con exito. Felicidades.

Si las cosas fueron ligeramente mal, es facil reconstruir una parte del sistema. Por ejemplo, si accidentalmente borraste /etc/magic como parte de la actualización o al añadir algo a /etc, la orden (command) file(1) dejara de funcionar. En ese caso, el arreglo sería ejecutar:

# cd /usr/src/usr.bin/file
# make all install

19.4.15. Preguntas

19.4.15.1. ¿Es necesario rehacer world en cada cambio?
19.4.15.2. ¿Cuando compilo falla con montones de señales de error 11 (u otro número de señal). ¿Qué ha ocurrido?
19.4.15.3. ¿Puedo quitar /usr/obj cuando he terminado?
19.4.15.4. ¿Puede continuarse una construcción interrumpida?
19.4.15.5. ¿Puedo usar una máquina comomaster para actualizar montones de maquinas (NFS)?
19.4.15.6. ¿Cómo acelero making the world?
19.4.15.7. ¿Queé hago si algo sale mal?

19.4.15.1. ¿Es necesario rehacer world en cada cambio?

No hay una respuesta fácil para esto, depende de la naturaleza del cambio. Por ejemplo, si sólo ejecutaste CVSup, y mostró las siguientes líneas mientras se actualizaba ,

src/games/cribbage/instr.c
src/games/sail/pl_main.c
src/release/sysinstall/config.c
src/release/sysinstall/media.c
src/share/mk/bsd.port.mk

Probablemente no merezca la pena reconstruir world entero. Puedes ir a los subdirectorios apropiados y make all install, y ya esta. Pero si el cambio fue mayor, por ejemplo src/lib/libc/stdlib entonces deberías o rehacer world, o al menos aquellas de sus partes que estan estáticamente unidas (asi como cualquier otra cosa que hayas añadido y que esté unida estáticamente).

Es cuestión de que elijas. Podrías estar contento ejecutando make world digamos cada quincena , y dejar que los cambios se acumulen hasta ese día. O quizá quieras hacerlo sólo a aquellas que hayan cambiado, y tengas confianza en haber comprobado todas las dependencias.

Y, por supuesto, todo esto depende de cada cuánto tiempo actualices y si estas usando la versión stable o current.

19.4.15.2. ¿Cuando compilo falla con montones de señales de error 11 (u otro número de señal). ¿Qué ha ocurrido?

Esto normalmente es una indicación de problemas de máquina. Al ejecutar make world ((Re)making world) se produce una sobrecarga del ordenador, que frecuentemente desencadena problemas de memoria.Esto se manifiesta cuando el compilador agoniza recibiendo señales extrañas.

Un indicador seguro de esto, es si puedes repetir el make y muere en un punto diferente del proceso.

En este cambio hay poco que puedas hacer excepto comenzar a probar los compenentes de tu máquina para saber cual es el que falla.

19.4.15.3. ¿Puedo quitar /usr/obj cuando he terminado?

La respuesta corta es si.

/usr/obj contiene todos los archivos binarios (object files) que se produjeron durante la fase de compilación.Normalmente, uno de los primeros pasos en el proceso ``make world'' es quitar este directorio y hacer uno nuevo. En este caso, mantener /usr/obj después de haber terminado no tiene mucho sentido, y liberarás un buen montón de espacio de disco (alrededor de 340MB).

Aunque, si sabes lo que haces puedes hacer que ``make world'' se salte este paso. Esto hará que la consiguiente construcción vaya más rápido, ya que la mayor parte de las fuentes no necesitarán recompilarse. La parte molesta de esto es que pueden provocarse problemas de dependencias, haciendo que la construcción falle de forma rara. Esto genera alboroto en las listas de correo, cuando una persona se queja de que su construcción ha fallado, sin darse cuenta de que es porque ha intentado acortar demasiado.

Si quieres vivir peligrosamente entonces haz make world, pasando la definición NOCLEAN , como esto:

# make -DNOCLEAN world

19.4.15.4. ¿Puede continuarse una construcción interrumpida?

Esto depende de como de lejos llegaste hasta encontar el problema.

En general (y esto no es una regla fija) El proceso ``make world'' construye nuevas copias de herramientas esenciales (como gcc(1), y make(1)) y el sistema de bibliotecas. Estas herramientas y bibliotecas estan entonces instaladas.Las nuevas herramientas y bibliotecas son usadas para reconstruirse a si mismas, y son instaladas de nuevo.El sistema entero (incluyendo ahora programas normales como ls(1) or grep(1))es entonces reconstruido con el nuevo sistema de archivos.

Si estas al final del proceso, y lo sabes (porque has mirado los resultados que estuviste guardando) entonces puedes (bastante seguramente) hacer

... fix the problem ...
# cd /usr/src
# make -DNOCLEAN all

Esto no deshará el trabajo de los previos ``make world''.

Si ves el mensaje

--------------------------------------------------------------
Building everything..
--------------------------------------------------------------
en la salida ``make world'' entonces es probablemente bastante seguro hacer eso.

Si tu no ves ese mensaje, o no estas seguro, entonces es siempre mejor estar seguro que lamentarse, y comenzar otra vez desde el principio.

19.4.15.5. ¿Puedo usar una máquina comomaster para actualizar montones de maquinas (NFS)?

Esto es una tarea bastante sencilla, y puede ahorrar horas de compilacion en muchas máquinas.Simplemente ejecuta buildworld en una máquina central, y entonces NFS monta /usr/src y /usr/obj en la máquina remota y installworld alli.

19.4.15.6. ¿Cómo acelero making the world?

  • Ejecuta en modo monousuario.

  • Pon /usr/src y /usr/obj en sistemas de archivos diferentes en discos separados. Si es posible, pon esos discos en controladoras de discos separadas.

  • Aún mejor, pon esos sistemas de archivos a través de multiples discos usando ccd(4)

  • Desactiva el perfil (coloca ``NOPROFILE=true'' en /etc/make.conf). Casi seguro que no lo necesitas.

  • También en /etc/make.conf, coloca CFLAGS a algo como ``-O -pipe''. La optimización ``-O2'' es mucho más lenta y la diferencia de optimización entre ``-O'' y ``-O2'' es normalmente poco importante. ``-pipe'' permite que el compilador utilice tuberias (pipes) antes que archivos temporales lo que ahorra accesos al disco (a expensas de memoria).

  • Pon la opción -j<n> para hacer que se ejecuten multiples procesos en paralelo.Esto ayuda se tenga un procesador o varios.

  • El sistema de archivos que contiene /usr/src puede ser montado ( o vuelto a montar) con la opción noatime . Esto evita al sistema de archivos el grabar la hora de acceso al archivo. Probablemente no te haga falta esta información para nada.

    # mount -u -o noatime /usr/src
    

    AvisoEste ejemplo supone que /usr/src esta en su propio sistema de archivo.Si no está (Por ejemplo, si es parte de /usr ) Entonces necesitarás el punto de montaje de ese sistema de archivos, y no /usr/src.



  • El sistema de archivos que contiene/usr/obj puede montarse (o volverse a montar) con la opción ``async''. Esto hace que el disco escriba de modo asíncrono. En otras palabras, el grabar se completa inmediatamente, y el dato es escrito en el disco unos pocos segundos después.Esto hace que las grabaciones se agrupen juntas y puede ser una gran aceleración del funcionamiento.

    AvisoTen en cuenta que esta opción hace el sistema de archivos más fragil.Con esta opción hay un incremento de posibilidades, si la corriente falla, de que el sistemas de archivos sea irrecuperable cuando la m6aacute;quina se reinicie.

    Si /usr/obj es lo único en este sistema de archivos entonces no hay problema.Si tienes otros datos valiosos entonces asegúrate de tener copias recientes antes de habilitar esta opción.

    # mount -u -o async /usr/obj
    

    AvisoComo arriba, si/usr/objno está en su propio sistema de archivos, reemplazalo en el ejemplo con el nombre del apropiado punto de montaje.

19.4.15.7. ¿Queé hago si algo sale mal?

Asegurate de que tu entorno no tiene extrañas cruft de construcciones anteriores.Esto es suficiente.

# chflags -R noschg /usr/obj/usr
#rm -rf  /usr/obj/usr
#cd  /usr/src
# make cleandir
#make cleandir

Sí , make cleandir realmente debería ejecutarse dos veces.

Entonces comienza el proceso de nuevo, empezando con make buildworld.

Si aún tienes problemas, envía el error y la salida de uname -aa lista de correo para preguntas generales sobre FreeBSD. ¡Prepárate para contestar preguntas sobre tu setup

IV. Comunicaciones en red

FreeBSD es uno de los sistemas operativos más usados como servidores en red de alto rendimiento. Los siguientes capítulos cubren:

  • Comunicaciones serie

  • PPP y PPP sobre Ethernet

  • Correo electrónico

  • Servidores de red

  • Otros aspectos avanzados de red

Estos capítulos están diseñados para ser leidos cuando sea necesario. No tienen porque leerse en un determinado orden o leerlos todos antes de poder usar FreeBSD en un entorno de red.


Capítulo 20. Comunicaciones Serie

Pendiente de Traducción


20.1. Introducción

20.1.1. Terminología

Pendiente de Traducción


20.1.2. Cables y Puertos

Pendiente de Traducción


20.2. Terminales

Escrito por Sean Kelly.

Pendiente de Traducción


Capítulo 21. PPP y SLIP

Reestructurado, reorganizado, y actualizado por Jim Mock.

21.1. Sinópsis

FreeBSD cuenta con un gran numero de formas para conectar una computadora a otra. Para establecer una red o una conección a Internet por medio de un módem, o bien, permitir a otras computadoras conectarse por medio de este, se requiere del uso de PPP o SLIP. Este capítulo describe en detalle como configurar los servicios de comunicación para llevar esto a cabo.

Una vez que haya leido este capítulo, usted sabrá:

  • Como configurar User PPP.

  • Como configurar Kernel PPP.

  • Como configurar PPPoE (PPP over Ethernet*).

  • Como configurar PPPoA (PPP over ATM*).

  • Como instalar y configurar un cliente y servidor SLIP.

N. de T.: En estricto sentido esto se refiere a contar con la conexión por medio de un dispositivo Ethernet, o bien ATM, pero debido a que usted encontrará estos metodos en su sistema, como PPPoE o bien PPPoA, se han dejado los conceptos ``literales'' del documento original. Espero que no sea un problema.

Antes de leer este capítulo, usted debiese:

  • Estar familiarizado con la terminología básica de redes.

  • Comprender lo básico y el propósito de una conección por módem SLIP y/o PPP.

Puede ser que usted se pregunte cual es la principal diferencia entre User PPP y kernel PPP. La respuesta es sencilla; el método User PPP procesa la entrada y salida de datos en userland (ver nota siguiente) en lugar de hacerlo en el kernel. Esto es algo desgastante, en términos del manejo de datos entre userland y el kernel, pero permite, por mucho, un mejor desempeño e implementación de PPP. User PPP utiliza el dispositivo tun para comunicarse con el mundo exterior, mientras que kernel--ppp, utiliza el dispositivo ppp.

En el desarrollo de este capítulo, se hará referencia a User PPP, simplemente como ppp, a menos de que sea necesaria hacer una distinción entre este y otro software de PPP, como es el caso de pppd. Así mismo, si en el desarrollo del capítulo no se señala lo contrario, todos los comandos explicados, deberán ser ejecutados como root.

N. de T. : Cuando se habla de "userland" se hace referencia a todo aquello que *no* forma parte del kernel y que en el caso de código de programa, se ejecuta en modo usuario, ya que el código del kernel se ejecuta en modo kernel, supervisor, o bien en modo privilegiado de ejecución. En lo sucesivo este término será utilizado tal cual.


21.2. Uso de User PPP

Originalmente contribuido por Brian Somers. Con apoyo de Actualizado y reestructurado porNik Clayton, Dirk Frömberg, Peter Childs, y Tom Rhodes.

21.2.1. User PPP

21.2.1.1. Aclaraciones

Este documento asume que usted cuenta con lo siguiente:

  • Una cuenta activa con un Proveedor del Servicio de Internet (ISP--por sus siglas en inglées), que usted utliza para conectarse.

  • Adicionalmente, un módem o algún otro dispositivo, conectado a su sistema, y configurado correctamente, que le permite realizar la conexión con su ISP.

  • El número telefónico de su proveedor.

  • Su nombre de usuario y contraseña. (Ya sea un nombre de usuario y/o contraseña estilo UNIX, o bien para uso por medio de PAP o CHAP)

  • La dirección IP de uno o más servidores de nombres (DNS). Normalmente, estos serán provistos por su proveedor de Internet. Si su proveedor no le ha dado esta información, puede utilizar la opción enable dns en su fichero ppp.conf, para indicarle a ppp que configure el DNS por usted. Esta característica depende del sistema de negociación de DNS que mantenga su proveedor de Internet.

La siguiente información puede ser que haya sido provista por su proveedor de servicios de internet, pero no es completamente necesaria:

  • La dirección IP del gateway (pasarela de salida) de su PSI. El gateway es la máquina a la cual usted se conectará y será la ruta por default. Si usted no cuenta con esta información, puede inventar uno y al intentar conectarse, el servidor de su PSI, este nos indicará cual es el valor correcto.

    Esta dirección IP, es referida por ppp como HISADDR.

  • La mascara de red (netmask) que debe utilizar. Si su PSI no le ha provisto de una, puede utilizar sin problema 255.255.255.255.

  • Si su PSI, le ha provisto de una dirección de IP estática y un nombre de host, puede capturarla. De otra forma podemos dejar que el servidor asigne cualquier IP que corresponda.

Si usted no cuenta con alguna de la información que hemos comentado, le recomendamos contactar con su PSI para requerirla.

Nota: En el transcurso de la presente sección, algunos ejemplos muestran el contenido de archivos de configuración los cuales presentan una numeración. Estos números sirven como ayuda y referencia a cada línea, pero estos no deben de estar presentes en el archivo original. Una sangría adecuada, así como espacios adecuados, también son de suma importancia.


21.2.1.2. Preparando el Kernel

Como se comento anteriormente, la aplicación ppp utiliza el dispositivo tun. Si este dispositivo no ha sido compilado dentro del kernel, ppp lo cargará como módulo cuando sea requerido. El dispositivo tun es dinámico, de tal forma que se generara de acuerdo a la demanda que tenga (usted no esta limitado por el kernel).

Nota: Vale la pena hacer notar que el controlador tun, crea los dispositivos de acuerdo a sus necesidades, por lo que el comando ifconfig -a, no necesariamente mostrará los dispositivos tun.


21.2.1.3. Verificando el dispositivo tun

Bajo circunstancias normales, la mayoría de los usuarios sólo utilizaran un dispositivo tun (/dev/tun0). En lo sucesivo podemos hacer referencia a tun0 con la expresión tunN donde N es el número que corresponde en su sistema.

Para instalaciones de FreeBSD que no tienen el habilitado el DEVFS la existencia de tun0 debe ser verificada (esto no es necesario si se cuenta habilitada la opción DEVFS ya que los nodos de dispositivos seán creados en función a las necesidades).

La forma más sencilla de verificar si el dispositivo tun0 se encuentra configurado correctamente, es la de rehacer el dispositivo. Para hacer esto simplemente siga los siguientes pasos:

# cd /dev
# sh MAKEDEV tun0

Si usted necesita 16 dispositivos tun en su kernel, deberá crearlos. Esto puede hacerse de la siguiente manera:

# cd /dev
# sh MAKEDEV tun15

21.2.1.4. Configuración de la Resolución de Nombres

La resolución es la parte del sistema que busca una dirección IP en los nombres de servidores (host) y viceversa. Puede ser configurado para que busque en "mapas" que describen la IP del servidor en uno de dos lugares, el primero es un archivo llamado /etc/hosts. Lea hosts(5) para más información al respecto. El segundo es el Servicio de Nombres de Dominio de Internet (DNS-Internet Domain Name Service), el cual es una base de datos de distribución. Para mayor información con respecto a los DNS, referirse a dns.

La resolución de nombres es un sistema que por medio de llamadas, realiza el mapeo de nombres, pero es necesario inidicarle donde debe buscar la información. Para versiones de FreeBSD anteriores a la 5.0, esto es hecho al editar el archivo /etc/host.conf. La versión 5.0 de FreeBSD utiliza el archivo /etc/nsswitch.conf.


21.2.1.4.1. Edición del archivo /etc/host.conf

Para versiones de FreeBSD anteriores a la 5.0, este archivo debe contener las siguientes dos líneas (en este orden):

hosts
bind

Esto le indica a la resolución que busque en primer término en el archivo /etc/hosts, y posteriormente en el DNS, si el nombre no fué localizado


21.2.1.4.2. Editando el archivo /etc/nsswitch.conf

Para versiones de FreeBSD 5.0 y posteriores, este archivo debe contener, al menos, la siguiente línea:

hosts: files, dns

Esto le indica a la resolución de nombres, que busque en primer lugar en el archivo /etc/hosts, y en caso de que el nombre no haya sido localizado, busque en el DNS.


21.2.1.4.3. Editando el archivo /etc/hosts

Este archivo puede contener direcciones IP, así como el nombre de las máquinas de su red local. Como mínimo debe contar con la información de la máquina que correrá ppp. Asumiendo que su ordenador se llama foo.bar.com con la dirección IP 10.0.0.1, el archivo /etc/hosts debiese contener:

127.0.0.1  localhost.bar.com   localhost
::1 localhost.bar.com   localhost
10.0.0.1    foo.bar.com     foo

Las primeras dos líneas definen el alias del localhost, como sinónimo de la maquina actual. Independientemente de su propia dirección IP, la dirección IP en estas líneas siempre debe ser 127.0.0.1 y ::1. La última línea especifica el nombre foo.bar.com (asi como foo para acortarlo), para la dirección 10.0.0.1.

Nota: La dirección 127.0.0.1 y el nombre localhost son conocidos como direcciones "loopback" las cuales hacen un "loopback" (salto de regreso) a la maquina local.

Si su proveedor de Internet, le asigna una dirección IP fija, asín como un nombre, y usted no lo utiliza como nombre del host, añada esto también al archivo /etc/hosts.


21.2.1.4.4. Editando el archivo /etc/resolv.conf

El archivo /etc/resolv.conf, le indica a la resolución de nombres, como comportarse. Normalmente deberá de incluir la(s) siguiente(s) línea(s):

domain ejemplo.com
nameserver x.x.x.x
nameserver y.y.y.y

Donde x.x.x.x y y.y.y.y deben reemplazarse con las direcciones IP de los servidores DNS, de su ISP. Puede ser que esta información se la hayan entregado al suscribirse o no, pero una rápida llamada a su ISP debe resolver esto.

Tambié puede configurar su sistema, de tal forma que syslog(3) provee de un login para su conección por PPP. Sólo añada:

     !ppp
      *.*        /var/log/ppp.log

al fichero /etc/syslog.conf. En la mayoría de los casos esto funciona bien.


21.2.1.5. Configuración Automática de PPP

Ambos, ppp así como pppd (la implementación del kernel para PPP), utilizan la configuración de los archivos localizados en el directorio /etc/ppp. Ejemplos para ppp, pueden encontrarse en: /usr/share/examples/ppp/.

Para efecto de configurar correctamente ppp, es necesario editar varios ficheros, dependiendo de sus necesidades. La manera en que edite dichos archivos, depende en la forma que utilice su PSI (Proveedor de Servicios de Internet) para brindarle conexión, ya sea por medio de una dirección IP estática o bien una IP dinámica (ya sea que cada vez que se conecta obtiene una nueva dirección).


21.2.1.5.1. PPP y direcciones de IP estáticas (fijas)

Será necesario editar el archivo de configuración; /etc/ppp/ppp.conf. Y deberá quedar de una manera similar al ejemplo que se describe a continuación.

Nota: Las líneas que terminan con :, deben comenzar en la primer columna del archivo -- el resto de las líneas deberán utilizar sangría como se muestra, utilizando espacios o bien el tabulador. La mayor parte de la información que requiere ingresar aqui, se mostro en el marcado manual anterior.

1     default:
2       set log Phase Chat LCP IPCP CCP tun command
3       ident user-ppp VERSION (built COMPILATIONDATE)
4       set device /dev/cuaa0
5       set speed 115200
6       set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \
7                 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"
8       set timeout 180
9       enable dns
10
11    provider:
12      set phone "(123) 456 7890"
13      set authname foo
14      set authkey bar
15      set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp"
16      set timeout 300
17      set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0
18      add default HISADDR
Línea 1:

Identifica la entrada por omisión a utilizar. Los comandos descritos en esta parte, serán ejecutados de manera automática cuando se ejecute ppp.

Línea 2:

Habilita los par´metros de acceso. Cuando la configuración trabaja sin problemas, esta línea deberá quedar de la siguiente forma:

set log phase tun
para efecto de evitar avisos masivos del sistema (logs).

Línea 3:

Esta línea le indica a PPP como identificarse ante el puerto. PPP se identifica, si tiene algun problema para efecto de establecer la conexión, en esta identificación, PPP provee de cierta información que puede resultar util para detectar el probelma.

Línea 4:

Le indica a PPP cual es el dispositivo a utilizar para realizar la conexión, o bien al que esta conectado el módem. El dispositivo COM1 es /dev/cuaa0 y COM2 es /dev/cuaa1.

Línea 5:

Establece la velocidad a utilizar en la conexión. Si la velocidad de 115200 no trabaja correctamente (la cual deberia con cualquier módem normal), intente con una velocidad inferior, como puede ser 38400.

Líneas 6 y 7:

La cadena de inicialización. El modo User PPP, utiliza y espera enviar-recibir, la información utilizando una sintaxis similar a la descrita en el programa chat(8). Favor de consultar la página de ayuda para conocer las opciones de este lenguaje.

Nota: Este comando continua en la siguiente línea, para facilitar su lectura. Cualquier comando en el archivo ppp.conf puede utilizar este formato, siempre y cuando el último caracter de la línea sea una diagonal invertida "\".

Línea 8:

Establece el tiempo de espera que debe tratar de realizar la conexión. Por omisión se establecen 180 segundos, por lo que esta línea se deja por pura estética.

Línea 9:

Esta línea le indica a PPP, que solicite confirmación al puerto, sobre la configuración de la resolución local. Si usted esta corriendo un servidor local de nombres, deberá comentar o eliminar esta línea.

Línea 10:

Una línea en blanco, para facilitar la lectura. Las líneas en blanco son ignoradas por PPP.

Línea 11:

Identifica el incio de datos para un ``proveedor'' determinado, de servicios de internet. Este podrá ser cambiado por el nombre de su ISP, de tal forma que en lo sucesivo utilice la opción load ISP, para iniciar una sesión.

Línea 12:

Indica el numero telefónico del proveedor. Pueden indicarse varios numeros a utilizar, utilizando el signo de dos puntos (:) o bien la barra (|) como separador. La diferencia entre estos dos separadores, es detallada en el ppp(8). Pero en resumen, se puede decir que si se desean utilizar varios numeros de manera aleatoria se debe utilizar los dos puntos, pero si se desea siempre utilizar el primer numero y en caso de falla el siguiente y así sucesivamente, se debe utilizar la barra. Es importante que todo lo que se refiere a numeros telefonicos, este entre comillas como se muestra. Es importante que si piensa usar espacios en los numeros, haga uso de estas comillas ("). La falta de estas pueden ocasionar un simple error.

Líneas 13 y 14:

Identifica el nombre de usuario y su contraseña. Cuando uno se conecta utilizando un login de tipo Unix, estos valores hacen referencia al comando set login, utilizando las variables \U y \P. Cuando la conexión es utilizando algún metodo como PAP o CHAP, estos valores, son utilizados al momento de la autentificación.

Línea 15:

Si usted esta utilizando el metodo PAP o CHAP, no habrá un login en este punto, y esta línea deberá ser comentada (utilizando el símbolo # al principio de la línea) o bien eliminada por completo. Vea la parte Autentificación con PAP y CHAP para más detalles.

La cadena de acceso (login), utiliza la misma sintáxis que se utiliza en la cadena de marcado. En este ejemplo, la cadena sirve para un servicio, en el cual el inicio de sesión se ve algo así como lo siguiente:

Proveedor de servicios X
login: foo
password: bar
protocol: ppp

Es recomendable editar el script, para que se ajuste a sus propias necesidades. Cuando cree este script por primera vez, asegurese de haber habilitado la parte que se refiere a al acceso por medio de ``chat'', para efecto de poder dar seguimiento al curso de la conexión y la resolución de la misma.

Línea 16:

Establece el tiempo por defecto en el que se perderá la conexión (en segundos). En este caso la conexión será cortada de forma automática, después de 300 segundos de inactividad. Si no desea habilitar esta función establezca este valor en cero o bien utilice el comando en línea -ddial.

Línea 17:

Indica la dirección de la interfaz. La cadena que aparece como x.x.x.x., debe se cambiada por la dirección asignada por su PSI. La línea que aparece como y.y.y.y., debe se substituida por la direcció IP especificada por su PSI, como servidor de salida o pasarela (gateway)(la maquina a la cual se va a conectar). Si su PSI no le ha indicado una dirección de este tipo, puede utilizar 10.0.0.2/0. Si usted necesita utilizar una dirección ``aleatoria'', asegurese de crear el fichero /etc/ppp/ppp.linkup, siguiendo las instrucciones de PPP y las direcciones de IP Dinámicas, para su llenado. Si esta línea es omitida, ppp, no podrá ejecutarse en el modo -auto.

Línea 18:

Añade una ruta por omisión al servidor de salida de su PSI. La palabra especial HISADDR se reemplaza con la dirección del gateway indicado por su PSI, que esta en la línea 9, de otra forma HISADDR no será inicializado.

Si no desea ejecutar ppp en modo -auto, esta línea deberá pasar al archivo ppp.linkup.

No hay necesidad de editar el archivo ppp.linkup si usted cuenta con una dirección IP estática y se esta ejecutando ppp en modo -auto, en virtud de que para efecto de realizar la conexión sus mapas de ruteo debe estar correctas. De cualquier forma puede ser que usted desee ejecutar algun programa/comando, posterior a la conexión. Este es explicado con más detalle posteriormente, cuando se vea el ejemplo de sendmail.

Ejemplo de los archivos de configuración, se pueden encontrar en el directorio; /usr/share/examples/ppp.


21.2.1.5.2. PPP y direcciones de IP Dinámicas (Variables)

Si su proveedor de servicios, no le asigna una dirección de IP fija, será necesario configurar a ppp, de tal forma que al momento de realizar la conexión, negocie tanto la dirección local, como la remota. Esto se lleva a cabo al ``adivinar'' una dirección IP y permitiendo a ppp que la establezca correctamente, usando el Protocolo de Configuración de IP (IPCP), una vez que se ha conectado. La configuración que debe tener el archivo ppp.conf, es la misma que la utilizada en PPP y direcciones de IP fijas, salvo el siguiente cambio:

17      set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255

Una vez más, no debe incluir el numero de línea, este sólo es una referencia. Así mismo deberá existir sangrado, de cuando menos 1 espacio.

Línea 17:

El numero siguiente a la diagonal (/), es el numero de bits de la dirección en la cual ppp insistirá en conectarse. Puede ser que usted desee utilizar numeros de IP que sean más apropiados, para ajustar a sus necesiadades, pero el ejemplo descrito anteriormente siempre podrá utilizarse.

El último argumento (0.0.0.0), le indica a PPP, que inicie las negociaciones, utilizando como dirección 0.0.0.0, en lugar de que utilice 10.0.0.1, lo cual es necesario con algunos proveedores. No utilice la dirección 0.0.0.0 como el primer argumento, para el comando set ifaddr, ya que impide que PPP configure de forma correcta el sistema, cuando se utiliza en modo -auto.

Si usted no esta ejecutando PPP en modo -auto, deberá editar su archivo /etc/ppp/ppp.linkup. El archivo ppp.linkup, es utilizado una vez que se ha realizado la conexión. En este punto, ppp habrá negociado una dirección de interfaz, y será posible ahora, añadir las entradas para la las tablas de ruteo:

1     provider:
2      add default HISADDR
Línea 1:

Al establecer (ppp) una conexión, buscará en ppp.linkup una entrada, de acuerdo a las siguientes reglas. Primero, tratar de encontrar una entrada que sea igual a la utilizada en el archivo ppp.conf. Si esto falla, buscar una IP con la dirección de nuestro gateway. Esta entrada es una etiqueta de tipo IP, de cuatro-octetos. Si aun después de esto no se ha detectado la entrada correcta, buscar la entrada MYADDR.

Línea 2:

Esta línea le indica a ppp que añada una ruta por omisión, que este dirigida hacia HISADDR. HISADDR será reemplazada, con la IP del gateway, como se negocio por IPCP.

Para ver un detalle más preciso de esto, puede consultar la entrada de pmdemand en los archivos de ejemplo /usr/share/examples/ppp/ppp.conf.sample así como /usr/share/examples/ppp/ppp.linkup.sample.


21.2.1.5.3. Recibiendo Llamadas Externas

Cuando se configure ppp, para recibir llamadas externas, en una maquina conectada a un LAN (Red de Area Local), debe decidir si se va a permitir el envío de paquetes a la LAN. Si es así, debe asignar un numero de IP de su red local y utilizar el comando enable proxy en el archivo de configuracion /etc/ppp/ppp.conf. También deberá asegurarse que en su archivo /etc/rc.conf cuente con la línea:

gateway_enable="YES"



21.2.1.5.3.1. ¿Qué getty utilizar?

El enlace Configurando FreeBSD para Servicios de Marcado provee de una buena descripció, sobre la configuración de estos servicios, basado en getty(8).

Una alternativa para el comando getty es mgetty , el cual es una versión más inteligente de getty diseñada para servicios de marcado telefonico.

Una de las principales ventajas de mgetty es que, de hecho platica con los modems, esto es, significativo, ya que si el puerto esta desactivado en su /etc/ttys el modem no responderá el llamado.

Las últimas versiones de mgetty (de la 0.99beta y sucesivas), tambi&ea