Manual de FreeBSD

Proyecto de Documentación de FreeBSD

¡Bienvenido a FreeBSD!. Este manual cubre la instalación y uso diario de FreeBSD 7.1-RELEASE y FreeBSD 6.4-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 sitio 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.

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

  1. La redistribución del código fuente (SGML DocBook) debe contener esta información de copyright, esta lista de condiciones y el siguiente texto como las primeras líneas del fichero sin modificar.

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

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

FreeBSD is a registered trademark of the FreeBSD Foundation.

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

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

ARM is a registered trademark of ARM Limited.

Adaptec is a registered trademark of Adaptec, Inc.

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

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

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

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

CVSup is a registered trademark of John D. Polstra.

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

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

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

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

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

Linux is a registered trademark of Linus Torvalds.

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

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

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

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

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

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

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

Oracle is a registered trademark of Oracle Corporation.

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

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

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

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

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

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

MATLAB is a registered trademark of The MathWorks, Inc.

SpeedTouch is a trademark of Thomson.

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

VMware is a trademark of VMware, Inc.

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

Mathematica is a registered trademark of Wolfram Research, Inc.

XFree86 is a trademark of The XFree86 Project, Inc.

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

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


Tabla de contenidos
Prefacio
I. Primeros pasos
1. Introducción
1.1. Sinopsis
1.2. Bienvenido a FreeBSD
1.3. Acerca del Proyecto FreeBSD
2. Instalación de FreeBSD
2.1. Sinopsis
2.2. Requisitos de hardware
2.3. Tareas anteriores a la instalación
2.4. Inicio de la instalación
2.5. ¿Qué es sysinstall?
2.6. Asignación de espacio en disco
2.7. Elección de qué instalar
2.8. Elección del medio de instalación
2.9. El punto sin retorno
2.10. Después de la instalación
2.11. Solución de problemas
2.12. Guía avanzada de instalación
2.13. Cómo preparar su propio medio de instalación
3. Conceptos básicos de Unix
3.1. Sinopsis
3.2. Consolas virtuales y terminales
3.3. Permisos
3.4. Estructura de directorios
3.5. Organización de disco
3.6. Montaje y desmontaje de sistemas de ficheros
3.7. Procesos
3.8. Dæmons, señales y cómo matar procesos
3.9. Shells
3.10. Editores de texto
3.11. Dispositivos y nodos de dispositivos
3.12. Formatos binarios
3.13. Más información
4. Instalación de aplicaciones: «packages» y ports
4.1. Sinopsis
4.2. Aproximación a la instalación de software
4.3. Cómo encontrar aplicaciones
4.4. Uso del sistema de packages
4.5. Uso de la colección de ports
4.6. Después de instalar un port
4.7. Ports que no funcionan
5. El sistema X Window
5.1. Sinopsis
5.2. Entender X
5.3. Instalar X11
5.4. Configuración de X11
5.5. Uso de tipos en X11
5.6. El gestor de pantalla X
5.7. Entornos de escritorio
II. Tareas comunes
6. Aplicaciones de escritorio
6.1. Sinopsis
6.2. Navegadores
6.3. Productividad
6.4. Visores de documentos
6.5. Finanzas
6.6. Resumen
7. Sonido
7.1. Sinopsis
7.2. Identificar el dispositivo correcto
7.3. Recompilar el kernel
7.4. Crear y probar nodos de dispositivos
7.5. Problemas comunes
7.6. Audio MP3
8. Configuración del kernel de FreeBSD
8.1. Sinopsis
8.2. ¿Por qué construír un kernel propio?
8.3. Compilación e instalación de un kernel personalizado
8.4. El fichero de configuración
8.5. Creación de nodos para los dispositivos
8.6. En caso de que algo no funcione
9. Depurando el Kernel
9.1. Depuración de un Kernel Crash Dump con kgdb
9.2. Depurando un crash dump con DDD
9.3. Analisis Post-mortem de un Dump
9.4. Depuración En-línea del Kernel Usando DDB
9.5. Depuración En-Línea Usando El GDB remoto
9.6. Depurando Un Driver de Consola
10. Añadiendo Opciones a la Configuración de un Nuevo Kernel
10.1. ¿Qué son las Opciones del Kernel?
10.2. Ahora, ¿Qué Debo Hacer?
11. Imprimir
11.1. Sinopsis
11.2. Introducción
11.3. Configuración Básica
11.4. Configuración Avanzada de una Impresora
11.5. Uso de las Impresoras
11.6. Alternativas al Sistema de Impresión Estándar
11.7. Resolución de Problemas
12. Compatibilidad binaria con Linux
12.1. Sinopsis
12.2. Instalación
12.3. Instalación de Mathematica®
12.4. Instalación de Maple
12.5. Instalación de MATLAB®
12.6. Instalación de Oracle®
12.7. Instalación de SAP® R/3®
12.8. Temas avanzados
III. Administración del sistema.
13. Configuración y Adaptación del Sistema
13.1. Configuración de Tarjetas de Red
13.2. “Arrancar servicios”
13.3. “Soft Updates”
13.4. Añadir espacio swap
14. El proceso de arranque en FreeBSD
14.1. Sinopsis
14.2. El problema que representa arrancar el sistema
14.3. El RMA y las etapas de arranque uno, dos y tres
14.4. Interacción con el kernel durante el arranque
14.5. Device Hints
14.6. Init: inicialización del proceso de control
14.7. Secuencia de apagado
15. Usuarios y administración básica de cuentas
15.1. Sinopsis
15.2. Introducción
15.3. La cuenta superusuario
15.4. Cuentas de sistema
15.5. Cuentas de usuario
15.6. Modificación de cuentas
15.7. Limitar a los usuarios
15.8. Personalizar a los usuarios
15.9. Grupos
16. Seguridad
16.1. Sinopsis
16.2. Introducción
16.3. Asegurar FreeBSD
16.4. DES, MD5 y Crypt
16.5. Contraseñas de un solo uso
16.6. TCP Wrappers
16.7. KerberosIV
16.8. Kerberos5
16.9. OpenSSL
16.10. VPN sobre IPsec
16.11. OpenSSH
16.12. Listas de control de acceso a sistemas de ficheros
16.13. Monitorización de fallos de seguridad de aplicaciones
16.14. FreeBSD Security Advisories
16.15. Contabilidad de procesos
17. Jaulas
17.1. Sinopsis
17.2. Términos relacionados con las jaulas
17.3. Introducción
17.4. Creación y gestión de jaulas
17.5. Administración y personalización a fondo
17.6. Uso de las jaulas
18. Mandatory Access Control
18.1. Sinopsis
18.2. Términos clave en este capítulo
18.3. Explicación de MAC
18.4. Las etiquetas MAC
18.5. Configuración de módulos
18.6. El módulo MAC ifoff
18.7. El módulo MAC portacl
18.8. Políticas de etiquetas MAC
18.9. El módulo MAC partition
18.10. El módulo de seguridad multinivel MAC
18.11. El módulo MAC Biba
18.12. El módulo MAC LOMAC
18.13. Implementación de un entorno seguro con MAC
18.14. Otro ejemplo: Uso de MAC para restringir un servidor web
18.15. Depuración de errores en MAC
19. Auditoría de eventos de seguridad
19.1. *
20. Almacenamiento
20.1. Sinopsis
20.2. Nombres de dispositivo
20.3. Añadir discos
20.4. RAID
20.5. Dispositivos de almacenamiento USB
20.6. Creación y uso de medios ópticos (CD)
20.7. Crear y utilizar medios ópticos (DVDs)
20.8. Creación y uso de disquetes (floppies)
20.9. Creación y uso de cintas de datos
20.10. Respaldos en disquetes
20.11. Bases para respaldos
20.12. Sistemas de ficheros en red, memoria y respaldados en fichero
20.13. Instantáneas (“snapshots”) de sistemas de ficheros
20.14. Cuotas en sistemas de ficheros
20.15. Cifrado de particiones de disco
21. GEOM: Marco de trabajo modular de transformación de discos
21.1. Sinopsis
21.2. Introducción a GEOM
21.3. RAID0 - Distribución por bandas
21.4. RAID1 - Replicación
22. El Gestor de Volúmenes Vinum
22.1. Sinopsis
22.2. Los Discos son Demasiado Pequeños
22.3. Cuellos de Botella en el Acceso
22.4. Integridad de Datos
22.5. Objetos Vinum
22.6. Ejemplos
22.7. Esquema de Nombres de los Objetos
22.8. Configuración de Vinum
22.9. Uso de Vinum en el Sistema de Ficheros Raíz
23. Virtualización
23.1. *
24. Localización - Uso y configuración de I18N/L10N
24.1. Sinopsis
24.2. Lo básico
24.3. Uso de la localización
24.4. Compilación de programas con soporte para I18N
24.5. Localización de FreeBSD a idiomas específicos
25. Lo último de lo último
25.1. Sinopsis
25.2. FreeBSD-CURRENT vs. FreeBSD-STABLE
25.3. Sincronización de su código fuente
25.4. Uso de make world
25.5. Redes pequeñas
IV. Comunicaciones en red
26. Comunicaciones serie
26.1. Sinopsis
26.2. Introducción
26.3. Terminales
26.4. Servicio dial-in
26.5. Servicio dial-out
26.6. Configurando la consola serie
27. PPP y SLIP
27.1. Sinopsis
27.2. Uso de User PPP
27.3. Uso de Kernel PPP
27.4. Uso de PPP sobre Ethernet (PPPoE)
27.5. Uso de PPP sobre ATM (PPPoA)
27.6. Uso de SLIP
28. Cortafuegos
28.1. *
29. Correo Electrónico
29.1. Sinopsis
29.2. Utilización del correo electrónico
29.3. Configuración de sendmail
29.4. Sustitución del Agente de Transferencia de Correo
29.5. Depuración de Problemas
29.6. Conceptos Avanzados
29.7. SMTP con UUCP
29.8. Configuración para sólamente enviar correo
29.9. Utilización del correo con una conexión mediante módem analógico (dial-up)
29.10. Autentificación utilizando SMTP
29.11. Agente de Correo de Usuario
29.12. Manejo de fetchmail
29.13. Uso de procmail
30. Servidores de red
30.1. *
31. Networking avanzado
31.1. Resumen
31.2. Pasarelas y “routers”
31.3. Redes sin cables (“wireless”)
31.4. Bluetooth
31.5. Puenteado
31.6. NFS
31.7. Ejecución sin disco duro
31.8. RDSI
31.9. NIS/YP
31.10. DHCP
31.11. DNS
31.12. NTP
31.13. Traducción de direcciones de red
31.14. El “Superservidor” inetd
31.15. Línea IP paralela (PLIP)
31.16. IPv6
31.17. ATM en FreeBSD 5.X
V. Apéndices
32. Cómo obtener FreeBSD
32.1. Servidores FTP
32.2. Uso de CVSup
33. Bibliografía
33.1. Libros y revistas específicas sobre FreeBSD
33.2. Guías de usuario
33.3. Guías de administrador
33.4. Guías de programadores
33.5. El sistema operativo por dentro
33.6. Referencia de seguridad
33.7. Referencia de hardware
33.8. Historia de UNIX
33.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
34. PGP keys
34.1. Responsables
34.2. Miembros del Core Team
35. Actualización de FreeBSD
35.1. Synopsis
35.2. FreeBSD Update
35.3. Portsnap: Una herramienta de actualización de la Colección de Ports
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. Nombres y funciones de las imágenes de FreeBSD 6.X and 7.X
3-1. Códigos de dispositivos de disco
20-1. Convenciones para nombrar discos físicos
31-1. Cableado de una conexión de cable paralelo para redes
31-2. Direcciones IPv6 reservadas
Lista de figuras
2-1. Ejemplo de resultado de prueba de dispositivos
2-2. Menú de selección de país
2-3. Salir de Sysinstall
2-4. Selección de «Usage» en el menú principal de sysinstall
2-5. Selección del menú de documentación
2-6. El menú de documentación de sysinstall
2-7. Menú principal de sysinstall
2-8. Menú de esquemas de teclado de sysinstall
2-9. Menú principal de sysinstall
2-10. Opciones de sysinstall
2-11. Comenzar una instalación estándar
2-12. Elija en qué unidad usar FDisk
2-13. Un ejemplo de particionamiento típico con FDisk
2-14. Partición con FDisk usando el disco completo
2-15. Menú de gestores de arranque de sysinstall
2-16. Salir de la selección de unidad
2-17. El editor Disklabel
2-18. Editor Disklabel con valores por omisión
2-19. Liberar espacio para la partición raíz
2-20. Edición del tamaño de la partición raíz
2-21. Elegir el tipo de partición raíz
2-22. Elegir el punto de montaje del sistema de ficheros raíz
2-23. Editor Disklabel
2-24. Elección de distribuciones
2-25. Confirmar la elección de distribuciones
2-26. Choose Installation Media
2-27. Selección de un dispositivo Ethernet
2-28. Configuración de ed0
2-29. Edición de inetd.conf
2-30. Edición del mensaje de bienvenida de FTP
2-31. Edición de exports
2-32. Opciones de configuración de la consola del sistema
2-33. Opciones del salvapantallas
2-34. Retardo del salvapantallas
2-35. Salida del menú de configuración de la consola del sistema
2-36. Elección de región
2-37. Elección de país
2-38. Elección de zona horaria
2-39. Elija el protocolo que usa el ratón
2-40. Ajuste del protocolo del ratón
2-41. Configuración del puerto del ratón
2-42. Configuración del puerto del ratón
2-43. Arranque del dæmon del ratón
2-44. Prueba del dæmon del ratón
2-45. Categorías de «packages»
2-46. Selección de «packages»
2-47. Instalación de «packages»
2-48. Confirmación previa a la instalación de «packages»
2-49. Selección de «Añadir un usuario»
2-50. Añadir la información del usuario
2-51. Salir de la gestión de usuarios y grupos
2-52. Salir de la instalación
2-53. Primer nivel de servicios de red
2-54. Elegir el MTA del sistema
2-55. Configuración de Ntpdate
2-56. Segundo nivel de configuración de red
22-1. Organización Concatenada
22-2. Organización con “Striping”
22-3. Organización en RAID-5
22-4. Un Volumen Vinum Sencillo
22-5. Un Volumen Vinum Replicado
22-6. Un Volumen Vinum en “Striping”
22-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
3-1. Ejemplo de nombres de disco, «slice» y partición
3-2. Modelo conceptual de un disco
4-1. Descarga de un paquete manualmente e instalación en nuestro sistema
14-1. Pantalla boot0
14-2. Pantalla de boot2
14-3. Una consola insegura en /etc/ttys
15-1. Configuración de adduser
15-2. Eliminación interactiva de cuenta con rmuser
15-3. chpass interactivo ejecutado por el superusuario
15-4. chpass interactivo ejecutado por un usuario normal
15-5. Cambio de tu contraseña
15-6. Cambio de la contraseña de otro usuario como superusuario
15-7. Añadir un grupo usando pw(8)
15-8. Añadir a alguien a un grupo usando pw(8)
15-9. Determinar pertenencia a grupos con id(1)
16-1. Uso de SSH para crear un túnel seguro para SMTP
20-1. Utilizando dump a través de ssh
20-2. Uso de dump a través de ssh con RSH configurada
20-3. Un “script” para la creación de discos flexibles de arranque
20-4. Uso de vnconfig para montar una imagen de un sistema de ficheros bajo FreeBSD 4.X
20-5. Creación de una imagen nueva de un sistema de ficheros respaldado en un archivo con vnconfig
20-6. Uso de mdconfig para montar una imagen de un sistema de ficheros en FreeBSD 5.X
20-7. Creación de un disco respaldado en fichero con mdconfig
20-8. Configurar y montar un disco basado en un fichero con mdmfs
20-9. Disco de memoria md en FreeBSD 4.X
20-10. Creación de un nuevo disco basado en memoria con mdconfig
20-11. Creación de un nuevo disco basado en memoria con mdmfs
26-1. Agregando entradas de terminal a /etc/ttys
29-1. Configuración de la base de datos de acceso de sendmail
29-2. Mail Aliases
29-3. Ejemplo de asociación de correo de dominio virtual
31-1. Anclaje de una exportación utilizando amd
31-2. Sucursal o red doméstica
31-3. Oficina central u otra LAN
31-4. Envío de una señal HANGUP a inetd

Prefacio

A quién va dirigido este texto

La primera sección de este libro está pensada para guiar a los recién llegados a FreeBSD durante el proceso de instalación y presentarles los conceptos y convenciones que dan entidad a UNIX®. Para sacar provecho de esta sección lo único que el lector necesitará son ganas de explorar y habilidad para ir interiorizando nuevos conceptos a medida que le van planteando.

La siguiente sección, la segunda, mucho más extensa, es una referencia completa de todo tipo de temas de interés para administradores de sistemas FreeBSD. Es posible que alguno de esos capítulos requiera que previamente lea otros textos; si es el caso esto se anuncia en la sinopsis situada al principio de cada capítulo.

Hay una lista de fuentes de información adicionales en el Capítulo 33.

Cambios desde la segunda edición

Esta tercera edición es la culminación de más de dos años de trabajo de los miembros del FreeBSD Documentation Project. Estos son los cambios más importantes que encontrará en esta nueva edición:

Cambios desde la primera edición

La segunda edición fue la culminación de más de dos años de trabajo de los miembros del FreeBSD Documentation Project. Estos son los principales cambios que encontrará en esta edición:

Cómo se organiza este libro

Este libro se divide en cinco secciones lógicamente distintas. La primera, primeros pasos, trata sobre la instalación y el uso más básico de FreeBSD. Está pensada para que el lector los recorra en secuencialmente, aunque puede saltarse algunos si tratan sobre temas que le resulten familiares. La segunda sección, Tareas comunes, está dedicada a las características de FreeBSD que suelen utilizarse con más frecuencia. Esta sección, así como las siguientes, pueden leerse en cualquier orden. Cada capítulo comienza con una sinopsis sucinta en la que se describe el contenido del capítulo y qué es lo que se espera que sepa el lector antes de leerlo. Esto se hace para dar ocasión al lector ocasional a que elija el capítulo que más pueda interesarle. La tercera sección, Administración del sistema, trata sobre diversos aspectos de la administración del sistema. La cuarta sección, Redes y comunicaciones, está dedicada al “networking” y temas relacionados con los servidores. La quinta sección dispone de apéndices con información de referencia.

Capítulo 1, Presentación

Este capítulo, como su nombre indica, presenta FreeBSD al usuario. En él se cuenta la historia del Proyecto FreeBSD, sus objetivos y su modelo de desarrollo.

Capítulo 2, Instalación

Guía al usuario a través de un proceso completo de instalación. Se explican también algunos aspectos avanzados como la instalación a través de una consola serie.

Capítulo 3, Conceptos básicos de UNIX

Se explican los comandos más básicos y el funcionamiento del sistema operativo FreeBSD. Si ya se tiene experiencia con Linux u otro tipo de UNIX posiblemente sea este un capítulo que no deba leerse.

Capítulo 4, Instalación de aplicaciones

Se explica la instalación de software desarrollado por personas ajenas al proyecto, tanto mediante la innovadora “Colección de Ports” de FreeBSD como mediante paquetes binarios estándar (“packages”).

Capítulo 5, El sistema X Window

Describe el sistema X Windows en general y su uso en FreeBSD en particular. Describe también entornos de escritorio de uso común como KDE y GNOME.

Capítulo 6, Aplicaciones de escritorio

Se enumeran algunas aplicaciones de escritorio muy comunes, como navegadores web y suites ofimáticas, y cómo instalar estas aplicaciones en FreeBSD.

Capítulo 7, Multimedia

Trata sobre la configuración la reproducción de sonido y vídeo en su sistema. Describe también algunas aplicaciones de sonido y vídeo.

Capítulo 8, Configuración del kernel de FreeBSD

Explica bajo qué circunstancias tendrá que configurar un nuevo kernel y facilita instrucciones detalladas para la configuración, compilación e instalación de un kernel personalizado.

Capítulo 11, Imprimir

Describe la gestión de impresoras en FreeBSD, abarcando aspectos diversos como las páginas “banner”, las cuentas de impresión así como la configuración inicial.

Capítulo 12, Compatibilidad binaria con Linux

Describe las características de compatibilidad con Linux de FreeBSD. Incluye también instrucciones detalladas de instalación de varias aplicaciones Linux muy populares, como Oracle, SAP R/3 y Mathematica®.

Capítulo 13, Configuración y adaptación del sistema

Describe los parámetros que los administradores de sistemas tienen a su alcance para hacer que FreeBSD rinda al máximo. Describe también los diversos ficheros de configuración que se usan en FreeBSD y dónde están.

Capítulo 14, El proceso de arranque en FreeBSD

Describe el proceso de arranque de FreeBSD y explica cómo controlar este proceso mediante opciones de configuración.

Capítulo 15, Usuarios y administración básica de cuentas

Describe la creación y gestión de cuentas de usuario. Trata también sobre la limitación de recursos que puede aplicarse sobre los mismos, así como otras tareas administrativas.

Capítulo 16, Seguridad

Describe las abudantes herramientas diferentes que pueden ayudar a que su sistema FreeBSD esté y permanezca seguro. Entre ellas encontrará a Kerberos, IPsec y OpenSSH.

Capítulo 17, Jaulas

Describe el uso de jaulas en FreeBSD y el avance que este “framework” supone respecto al tradicional uso de chroot que se hacía en FreeBSD.

Capítulo 18, Mandatory Access Control

Explica qué es Mandatory Access Control (MAC) y cómo puede usarse este mecanismo para hacer más seguro FreeBSD

Capítulo 19, Auditoría de eventos de seguridad

Describe qué es la auditoría de eventos en FreeBSD cómo instalarla y configurarla y cómo pueden inspeccionarse y monitorizarse dichas auditorías.

Capítulo 20, Almacenamiento

Describe cómo gestionar medios de almacenamiento y sistemas de ficheros en FreeBSD, tanto discos físicos, arreglos RAID, medios ópticos o en cinta, como discos en memoria y sistemas de ficheros en red.

Capítulo 21, GEOM

Trata sobre el “framework” “GEOM” de FreeBSD y cómo configurar con él alguno de los diversos niveles de RAID que admite.

Capítulo 22, Vinum

Describe cómo usar Vinum, un gestor de volúmenes lógicos que permite tanto el uso de discos lógicos independientes de dispositivo, como RAID-0, RAID-1 y RAID-5 por software.

Capítulo 23, Virtualización

Describe los sistemas de virtualización disponibles en FreeBSD y cómo utilizarlos.

Capítulo 24, Localización

Describe el uso en FreeBSD de idiomas distintos del inglés. Trata tanto la localización del sistema como de las aplicaciones.

Capítulo 25, Lo último de lo último

Explica las diferencias existentes entre FreeBSD-STABLE, FreeBSD-CURRENT y las releases de FreeBSD. Describe también qué tipos de usuario pueden beneficiarse de seguir el desarrollo contínuo del sistema en su propia máquina y muestra el proceso a seguir.

Capítulo 26, Comunicaciones serie

Explica cómo conectar terminales serie y módems a su sistema FreeBSD tanto para conexiones entrantes como salientes.

Capítulo 27, PPP y SLIP

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

Capítulo 29, Correo electrónico

Detalla los distintos elementos que componen un servidor de correo electrónico y explica diversos aspectos sencillos de la configuración del servidor de correo más extendido: sendmail.

Capítulo 30, Servidores de red

En este capítulo encontrará instrucciones detalladas y ficheros de configuración de ejemplo que le permitirán configurar su sistema FreeBSD como servidor NFS, servidor de nombres, servidor NIS o de sincronización de hora.

Capítulo 28, Cortafuegos

Explica la filosofía que sustenta los cortafuegos por software y facilita información detallada sobre la configuración de los distintos cortafuegos disponibles en FreeBSD.

Capítulo 31, “Networking” avanzado

Describe diversos temas relacionados con el “networking”, desde compartir la conexión a Internet con otras máquinas de su LAN a diversos aspectos avanzados del encaminamiento de tráfico, pasando por las redes “wireless”, Bluetooth, ATM, IPv6 y mucho más.

Capítulo 32, Cómo conseguir FreeBSD

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

Capítulo 33, Bibliografía

Este libro toca tantos temas que es muy posible que el lector se quede a falta de una explicación más detallada. En la bibliografía muchos libros estupendos relacionados con el contenido de este texto.

Apéndice A, Recursos en Internet

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

Capítulo 34, PGP Keys

Lista las claves públicas PGP de varios desarrolladores de FreeBSD.

Convenciones usadas en este libro

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

Convenciones tipográficas

Cursiva

Se usa un tipo de letracursiva cuando se citan nombres de fichero, URL, texto en el que se quiere hacer énfasis y cuando un término técnico aparece por primera vez en el texto.

Tipografía de máquina de escribir

Se usa un tipo de letra de máquina de escribir cuando se muestran mensajes de error, comandos, variables de entorno, nombres de “ports”, nombres de máquina, nombres de usuario o de grupo, nombres de dispositivo, variables y cuando

Se usa un tipo de letra monospaced cuando se muestran mensajes de error, comandos, variables de entorno, nombres de “ports”, nombres de máquina, nombres de usuario o de grupo, nombres de dispositivo, variables y cuando se muestran fragmentos de código.

Negrita

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

Datos que introduce el usuario

Las claves se muestran en negrita para distinguirlas de cualquier otro texto. Las combinaciones de teclas que implican que sean pulsadas simultáneamente se muestran con el símbolo `+' entre una y otra, como en:

Ctrl+Alt+Supr

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

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

Ctrl+X, Ctrl+S

Esto significa que el usuario debe pulsar simultáneamente las teclas Ctrl y X y después pulsar simultáneamente Ctrl y S.

Ejemplos

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

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

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

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

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

% top

Agradecimientos

Este libro representa el esfuerzo de muchos cientos de personas del mundo entero. Tanto si fue en forma de correción de errores de contenido como gramaticales, o bien fue un capítulo entero lo que enviaron, toda contribución ha sido muy valiosa.

Varias compañías han colaborado en el desarrollo de este documento pagando a tiempo completo a varios autores, financiando la publicación, etc. En especial BSDi (posteriormente adquirida por Wind River Systems) pagaron a varios miembros del FreeBSD Documentation Project por trabajar en la mejora lo que fue la primera edición de este libro, que apareció en marzo de 2000 (ISBN 1-57176-241-8). Además de esto, Wind River Systems aportó el dinero para que otros autores pudieran realizar gran cantidad de mejoras en la estructura de creación de material listo para impresión y para pudieran añadir nuevos capítulos. Este trabajo culminó con la publicación de la segunda edición impresa en noviembre de 2001 (ISBN 1-57176-303-1). En 2003 y 2004 FreeBSD Mall, Inc, pagó a varios autores para que se dedicaran a lo que será la tercera edición.

I. Primeros pasos

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

  • Ofrecer una introducción a FreeBSD.

  • Guiar a través de una instalación de FreeBSD.

  • Explicar conceptos básica de Unix.

  • Explicar cómo instalar la gran cantidad de software de terceros disponible para FreeBSD.

  • Presentar una introducción al manejo de X Window, el sistema de ventanas de UNIX, y detallar cómo 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

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

1.1. Sinopsis

Gracias por su 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á:

  • 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 ordenadores Intel (x86 e Itanium®), AMD64, Alpha™ y Sun UltraSPARC®. Se está trabajando también en versiones para otras arquitecturas. También puede leer sobre la historia de FreeBSD, o sobre la distribución actual. Si cree que puede ayudar al proyecto de algún modo (desarrollando código, donando hardware, dinero, etc) consulte el artículo Contribuir 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 los recursos del sistema de un modo equitativo, incluso bajo la mayor de las cargas.

  • Servicios multiusuario que permiten a mucha gente usar un sistema FreeBSD 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 los recursos críticos del sistema de un uso abusivo.

  • Conexión de redes TCP/IP muy robusta, con soporte para estándares industriales como SCTP, DHCP, NFS, NIS, PPP, SLIP, IPSec e IPv6. Esto quiere decir que su sistema FreeBSD puede interactuar fácilmente con otros sistemas y hacer de servidor en una empresa, proporcionando servicios clave como NFS (acceso a ficheros remotos) y servicios de correo electrónico, o proporcinando la presencia en Internet de su organización mediante WWW, FTP, servicios de encaminamiento y cortafuegos.

  • La protección de memoria garantiza que las aplicaciones (o los usuarios) no se estorben los unos a los otros. Un error catastrófico en una aplicación no afecta al resto.

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

  • X Window System (X11R6), estándar de la industria, dota a los usuarios 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.

  • Hay en Internet miles y miles de aplicaciones listas para su uso. FreeBSD es compatible a nivel de código fuente con la mayoría de sistemas UNIX comerciales; por tanto la mayoría de aplicaciones requieren poco o ningún cambio para compilar en FreeBSD.

  • En Internet hay miles de aplicaciones fáciles de portar. El código fuente de FreeBSD es compatible con el de los sistemas UNIX comerciales más populares y por ello la mayoría de las aplicaciones tan sólo necesitan 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. Podrá encontrar muchos otros lenguajes avanzados para investigación y desarrollo tanto en la la Colección de Ports como en forma de packace.

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

  • Documentación exhaustiva 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áximas en situaciones de carga reales. Mientras que muchos de los gigantes comerciales se esfuerzan en dotar a los sistemas operativos para PC de esas características, rendimiento y fiabilidad, FreeBSD puede ofrecerlas ¡ya!

Los usos que pueda darle a FreeBSD se ven limitados tan sólo por tu imaginación. Desde el desarrollo de programas hasta la automatización de fábricas, desde control de inventarios hasta corrección de azimut de antenas de satélites remotos; Si puede hacerse con un UNIX comercial lo más seguro es que también pueda llevarse a cabo con FreeBSD. FreeBSD también hace buen uso de las literalmente miles de aplicaciones de alta calidad que se desarrollan en centros de investigación y universidades de todo el mundo, frecuentemente disponibles por poco o ningún coste. También existen aplicaciones comerciales, cuyo número aumenta cada dia.

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

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

    • Servidores FTP

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

    • Cortafuegos y pasarelas NAT (“enmascaramiento IP”).

    • Servidores de correo electrónico

    • USENET y BBSs

    • y muchos más.

    Con FreeBSD puede empezar fácilmente con un pequeño y económico PC de tipo 386 e ir actualizando su equipo hasta un tetraprocesador Xeon con almacenamiento RAID a medida que su proyecto crezca.

  • Educación: ¿Es 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 y diseño gráfico 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 de licencias especiales o de limitaciones acerca de lo que puede discutirse en foros públicos.

  • Redes: ¿Necesita un nuevo “router”? ¿Un servidor de nombres (DNS)? ¿Un cortafuegos que haga más segura su red interna? FreeBSD puede convertir ese PC 386 o 486 que tiene arrinconado en un “router” avanzado con sofisticadas capacidades de filtrado de paquetes.

  • Estación de trabajo X: FreeBSD es una magnífica elección como terminal X de bajo coste gracias al servidor libre X11. A diferencia de las terminales X FreeBSD permite ejecutar muchas aplicaciones en local si así se quiere, aligerando de este modo la carga soportada por el 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 incluye una completa colección de herramientas de desarrollo que incluyen el famoso compilador y depurador de C/C++ de GNU.

Puede conseguir FreeBSD tanto en forma de código fuente como binaria por FTP anónimo o en CDROM. Por favor, consulte el Capítulo 32 para más información.


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 básicos del Proyecto, una breve historia, sus objetivos y el modelo de desarrollo del mismo.


1.3.1. Breve historia de FreeBSD

Elaborado por Jordan Hubbard.

La 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 con uno de nuestros parches. Quizás haya quien recuerde que el primer nombre del proyecto fue “386BSD 0.5” o “386BSD Interim” debido a esto.

386BSD era el sistema operativo de Bill Jolitz, que hasta ese punto había estado sufriendo severamente las consecuencias de prácticamente un año que más valdría olvidar. A medida que el “patchkit” se iba haciendo haciendo más incómodo cada dia que pasaba, así que acordamos ayudar a Bill con una instantánea del sistema. Estos planes se vieron bruscamente interrumpidos cuando Bill Jolitz decidió repentinamente retirar su aprobación al proyecto sin dejar ninguna indicación clara de qué debía hacerse a continuación.

No tardamos mucho en decidir que el objetivo seguía valiendo la pena, aun sin el soporte de Bill, así que adoptamos el nombre de “FreeBSD”, una idea de David Greenman. Nuestros objetivos iniciales se fijaron tras consultar a los usuarios del sistema y cuando quedó claro que el proyecto estaba en marcha y que podía llegar a ser una realidad contacté con Walnut Creek CDROM con idea de mejorar los canales de distribución de FreeBSD y hacer m´s fácil llegar a aquellas personas que no tenían la suerte de tener acceso a Internet. Walnut Creek CDROM no solo nos ayudó con la idea de distribuir FreeBSD en CD; también facilitó al Proyecto una máquina en 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 en aquél momento un proyecto completamente desconocido, es bastante improbable que FreeBSD hubiera logrado tanto y tan rápido como ha logrado hasta el dia de 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 de trabajos proveniente de la Free Software Foundation. Fue un logro bastante apreciable para una primera versión; pronto 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 la Universidad de 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 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 repercutió sobre el Proyecto FreeBSD, a quienes se dio hasta julio de 1994 para dejar de sacar su producto basado en Net/2. Bajo los términos de aquel acuerdo se 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 ardua tarea de (literalmente) reinventarse a sí mismo a partir de partes nuevas y bastante incompletas de 4.4BSD-Lite. Las versiones “Lite” eran ligeras en parte porque el CSRG de Berkeley 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. Hasta noviembre de 1994 el proyecto al fin realizó esa transición; apareció FreeBSD 2.0 en la red y (a finales de diciembre) en CDROM. A pesar de no estar suficientemente pulida esta distribución fue un éxito significativo, al cual siguió el más robusto y fácil de instalar FreeBSD 2.0.5; era junio de 1995.

Sacamos FreeBSD 2.1.5 en Agosto de 1996; pareció ser suficientemente popular entre ISPs y otras comunidades comerciales como para que mereciera otra versión de la rama 2.1-STABLE. 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 puesta en mantenimiento, en esa rama (RELENG_2_1_0) sólo se harían ya mejoras en seguridad y se corregirían 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. A partir de la 3.X-STABLE salió 3.1 el 15 de febrero de 1999, 3.2 el 15 de mayo de 1999, 3.3 el 16 de septiembre de 1999, 3.4 el 20 de diciembre de 1999 y 3.5 el 24 de junio de 2000. Pocos dias después de esta apareció una actualización menor, la 3.5.1, que incorporaba parches de seguridad de última hora para Kerberos. Esa fue la última versión de la rama 3.X.

Hubo otra ramificación el 13 de Marzo de 2000 que dio lugar a la rama 4.X-STABLE. Ha habido varias versiones de la misma desde entonces: 4.0-RELEASE salió en marzo de 2000 y la última versión de la rama, 4.11-RELEASE, apareció en enero de 2005.

La largamente esperada 5.0-RELEASE se anunció el 19 de enero de 2003, culminando casi tres años de trabajo; esta versión situó a FreeBSD en el escenario del multiproceso avanzado y el soporte de hilos para las aplicaciones, e introdujo soporte para las plataformas UltraSPARC y ia64. Siguió a esta la versión 5.1 lanzada en Junio de 2003. La última versión de 5.X como la rama -CURRENT fué 5.2.1-RELEASE, que salió en febrero de 2004.

La rama RELENG_5, creada en agosto de 2004, desembocó en 5.3-RELEASE, que marcó el inicio de la rama de versiones 5-STABLE. La versión 5.5-RELEASE más reciente apareció en mayo de 2006. No aparecerán más versiones a partir de la rama RELENG_5.

El árbol se dividió de nuevo en julio de 2005, en esta ocasión para crear RELENG_6. 6.0-RELEASE, la primera versión de la rama 6.X, apareció en noviembre de 2005. 6.4-RELEASE apareció en Nov 2008. Irán apareciendo más versiones a partir de la rama RELENG_6.

La rama RELENG_7


1.3.2. Objetivos del Proyecto FreeBSD

Texto original de Jordan Hubbard.

Los objetivos del Proyecto FreeBSD son producir software que pueda usarse con cualquier propósito y sin ningún tipo de restricción. Muchos de nosotros participamos de forma significativa 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 no vamos a insistir en ello. Creemos que nuestra “misión” más importante y primordial es facilitar el acceso al código a cualquiera, para lo que quiera usarlo y de forma que se use tanto y para sacarle tanto provecho para sea posible. Creo que éste es uno de los objetivos más fundamentales del software libre y algo 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 para garantizar acceso al mismo, y no al contrario como es lo habitual. Debido a las complicaciones adicionales que pueden surgir en el uso comercial de software con licencia GPL preferimos que el software que incluyamos en el árbol venga bajo la licencia BSD, menos restrictiva, siempre y cuando sea una opción razonable.


1.3.3. El modelo de desarrollo de FreeBSD

Texto de Satoshi Asami.

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

Veamos unas cuantas cosas útiles sobre el Proyecto FreeBSD y su proceso de desarrollo, ya sea trabajando de forma independiente o en estrecha cooperación:

Los repositorios SVN y CVS

El árbol central de código de FreeBSD se ha mantenido mediante CVS (Concurrent Versions System, o sistema concurrente de versiones), una herramienta de control de código totalmente libre que forma parte de FreeBSD. En junio de 2008 el Proyecto adoptó SVN (Subversion). La necesidad de un cambio como este venía de largo a medida que las limitaciones técnicas que el uso de CVS imponía se iban haciendo más y más obvias con la rápida expansión del árbol de código y de la cantidad de historial de cambios que hay que almacenar y gestionar. Aunque el repositorio principal use SVN las aplicaciones del lado del cliente como CVSup y csup, que dependen de la infraestructura anterior basada en CVS, siguen funcionando normalmente; los cambios que se hacen en el repositorio SVN se van replicando en el repositorio CVS con este fin. Actualmente (octubre 2008) solamente el árbol central de código usa SVN. Los repositorios de documentación, WWW y Ports siguen usando still using CVS. El repositorio primario está alojado en una máquina en Santa Clara (California, EEUU), que constituye el original del que todas las réplicas (a las que llamamos a veces “mirrors”) son copias exactas actualizadas cada muy poco tiempo. El árbol SVN, que contiene también los árboles -CURRENT y -STABLE, puede replicarse muy fácilmente en local en su máquina. Consulte la sección Sincronización del árbol de código para más información.

La lista de committers

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

El Core Team de FreeBSD

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

Algunos miembros del Core Team tienen también áreas específicas de responsabilidad, pues se encargan de garantizar que grandes secciones del sistema funcionen según lo previsto. Hay una lista completa de desarrolladores de FreeBSD con sus áreas de responsabilidad en la lista de colaboradores. .

Nota: La mayoría de los miembros del Core Team trabaja de forma altruísta en el desarrollo de FreeBSD y no reciben beneficio económico del Proyecto; es por esto que “compromiso” no debe 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 esa es la gente que dedica su vida a FreeBSD en contra de lo que les aconseja su propio sentido común.

Contribuidores externos

Por último, y no por ello menos importante, el mayor grupo de desarrolladores está formado por los mismos usuarios, quienes constantemente nos aportan comentarios y corrección de errores. La mejor manera de seguir de cerca el desarrollo (al estilo descentralizado de FreeBSD) es suscribirse a la lista de correo de discusiones técnicas en FreeBSD, que es donde se habla de este tipo de cosas. Consulte el Apéndice A si necesita más información sobre las diferentes listas de correo de FreeBSD.

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

Aportar código no es la única manera de ayudar al proyecto; hay una lista completa de tareas pendientes en el sitio web del Proyecto FreeBSD.

En resumen, nuestro modelo de desarrollo está organizado como un conjunto de círculos concéntricos. El modelo centralizado está diseñado pensando el la comodidad de los “usuarios” de FreeBSD, que así tienen un modo sencillo de estar al dia con una base de código central y por supuesto no para excluir a quien quiera ayudar. Nuestro afán es ofrecer un sistema operativo estable con un gran conjunto de aplicaciones coherentes que los usuarios puedan instalar y usar fácilmente (y este modelo está dando buenos resultados)

Lo único que pedimos a quienes quieran unirse a nosotros como desarrolladores de FreeBSD es la misma dedicación que los integrantes actuales tienen.


1.3.4. En qué consiste el FreeBSD que distribuimos

FreeBSD es un sistema operativo libre y gratuito que se distribuye con el código fuente íntegro. Está basado en 4.4BSD-Lite y está diseñado para funcionar en sistemas Intel i386™, i486™, Pentium®, Pentium Pro, Celeron®, Pentium II, Pentium III, Pentium III, Pentium4 (o compatible), Xeon™, DEC Alpha y sistemas basados en SUN UltraSPARC. Está basado principalmente en software del grupo CSRG de la Universidad de Berkeley (California), y tiene mejoras importadas de NetBSD, OpenBSD, 386BSD y código creado al amparo de 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 solo aumenta el rendimiento sino que reduce el consumo de memoria de FreeBSD, haciendo que una configuración de 5 MB 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 RDSI (ISDN), soporte para ATM, FDDI, adaptadores Fast y Gigabit Ethernet (1000 Mbit), soporte mejorado para los últimos controladores Adaptec y cientos de correcciones de errores.

Además de la distribución base FreeBSD ofrece una colección de software con miles de programas de uso común. En el momento de escribir esto hay unos 19,000 “Ports” La lista de Ports comprende desde servidores HTTP (WWW), juegos, lenguajes de programación, editores, y prácticamente cualquier cosa. La colección de Ports completa requiere un espacio de aproximadamente 445 MB, todos ellos expresados como “deltas” de sus fuentes originales. Esto hace que nos sea mucho más fácil actualizar Ports y reduce notablemente 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 compile se descargará dinámicamente de un CDROM o un sitio FTP, de modo que sólo necesita el espacio necesario para compilar los ports que quiera. La mayoría de los ports también están precompilados como “packages”, que quienes no quieran compilar Ports pueden instalar con una simple orden: pkg_add. En el Capítulo 4 tiene más información sobre los “packages” y Ports.

Algunos documentos que pueden ser de ayuda en el proceso de instalación y al utilizar FreeBSD pueden también encontrarse en

En el directorio /usr/share/doc de cualquier máquina con una versión reciente de FreeBSD encontrará varios documentos que pueden serle de ayuda en el proceso de instalación o al usar FreeBSD. Para poder consultarlos utilice cualquier navegador para seguir estos enlaces:

El Handbook de FreeBSD

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

Las FAQ de FreeBSD

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

También puede 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 omisión en 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 los 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. Requisitos de hardware

2.2.1. Configuración mínima

La configuración mínima para instalar FreeBSD varía según la versión de FreeBSD y la arquitectura de hardware.

Tiene información sobre la confuración mínima en las Notas de Instalación que encontrará en la sección de Información de Releases del sitio web de FreeBSD. En la siguiente sección se facilita un resumen de dicha información. Dependiendo de cuál sea el método de instalación que elija para instalar FreeBSD necesitará un floppy, un lector de CDROM que pueda utilizar con FreeBSD o quizás un adaptador de red. Todo esto se explica en la Sección 2.3.7.


2.2.1.1. FreeBSD/i386 y FreeBSD/pc98

Tanto FreeBSD/i386 como FreeBSD/pc98 necesitan un procesador 486 o superior y un mínimo de 24 MB de RAM. Necesitará también al menos 150 MB de espacio libre en disco, que es lo que necesita la instalación mínima.

Nota: En sistemas muy antiguos la mayoría de las veces será de mucha más ayuda conseguir más RAM y espacio de disco que un procesador más rápido.


2.2.1.2. FreeBSD/alpha

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

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

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


2.2.1.3. FreeBSD/amd64

Hay dos tipos de procesadores capaces de ejecutar FreeBSD/amd64. La primera son los procesadores AMD64, entre los que están los AMD Athlon™64, AMD Athlon64-FX, AMD Opteron™ y los modelos superiores.

La segunda categoría de procesadores que pueden usar FreeBSD/amd64 es la de los procesadores de arquitectura EM64T de Intel®, por ejemplo las familias de procesadores Intel Core™ 2 Duo, Quad, y Extreme, y la secuencia de procesadores Intel Xeon 3000, 5000 y 7000.

Si tiene una máquina basada en una nVidia nForce3 Pro-150 tendrá que usar la configuración de la BIOS para deshabilitar IO ACPI. Si no tiene la opción de hacerlo tendrá que deshabilitar ACPI. Hay errores en el chipset Pro-150 para los que no hemos encontrado aún una solución.


2.2.1.4. FreeBSD/sparc64

Para instalar FreeBSD/sparc64 necesita una plataforma que esté soportada (consulte la Sección 2.2.2).

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


2.2.2. Hardware soportado

Cada versión de FreeBSD incluye una lista de hardware soportado en las «FreeBSD Hardware Notes». Este documento suele estar en un fichero llamado HARDWARE.TXT, que está en el directorio raiz del CDROM o distribución FTP, o en el menú de documentación de sysinstall. En este documento se listan los dispositivos de hardware que se sabe que funcionan con cada versión de FreeBSD y para qué arquitectura. En la página de Información de Releases del sitio web de FreeBSD encontrará copias de esta lista para diversas releases y arquitecturas.


2.3. Tareas anteriores a la instalación

2.3.1. Inventario de su sistema

Antes de instalar FreeBSD en su sistema debería hacer 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
...      

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


2.3.2. Haga una copia de seguridad de sus datos

Si la máquina 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.3.3. Decida 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 esto.


2.3.3.1. Esquemas de disco en FreeBSD/i386

Un disco de PC puede dividirse en varias partes. Estas partes reciben el nombre de partitions. Dado que FreeBSD internamente también tiene particiones la nomenclatura puede ser confusa muy rápidamente, así que estas partes del disco reciben el nombre de «disk slices» o sencillamente «slices» («rebanadas de disco»y «rebanadas» respectivamente). Por ejemplo, la versión de fdisk que usará FreeBSD con las particiones de disco de PC usa la palabra «slices» en lugar de «partitions». Debido a limitaciones de diseño la plataforma PC sólo admite cuatro particiones por disco. Dichas particiones reciben el nombre de particiones primarias. Esta limitación puede sortearse (y de ese modo disponer de más de cuatro particiones) gracias a que se creó un nuevo tipo de partición, las particiones extendidas. Un disco puede contener una única partición extendida. Dentro de ella pueden crearse particiones especiales, que reciben el nombre de particiones lógicas.

Cada partición tiene un identificador de partición (o partition ID), que es un número que se usa 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 sus descendientes, 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.

Para ello puede usar herramientas comerciales como PartitionMagic® o libres como GParted para redimensionar sus particiones y hacer sitio para FreeBSD. El directorio tools directory del CDROM de instalación contiene dos herramientas libres con las que puede hacer hacer esta redimensión: FIPS y PResizer. En el mismo directorio encontrará documentación de ambas. FIPS, PResizer y PartitionMagic pueden redimensionar particiones FAT16 y FAT32, que pueden encontrarse desde MS-DOS hasta Windows ME. Tanto PartitionMagic como GParted funcionan también en particiones NTFS. GParted forma parte de diversas distribuciones de «Live CD» de Linux, como SystemRescueCD.

Hay informes de problemas redimensionando particiones de Microsoft Vista. Le recomendamos tener a mano un disco de instalación de Vista cuando intente hacer esto. Lo dicho para cualquier otra tarea de mantenimiento de discos es válido aquí: tenga una copia de seguridad fiable y reciente a mano.

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:; de este modo vaciará la segunda partició y podrá usarla con 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.3.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 son consideradas iguales a otros discos duros SCSI.

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


2.3.4. Recopile los datos de la configuración de la red

Si pretende conectarse a alguna red durante la instalación de FreeBSD (por ejemplo si 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.3.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.3.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 tardará mucho más 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 módem

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


2.3.5. Consulte «FreeBSD Errata»

A pesar de que el proyecto FreeBSD hace todo lo humanamente posible para asegurarse de que cada «release» de FreeBSD es todo lo estable posible a veces 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 aparecen en lo que llamamos la FreeBSD Errata, que encontrará 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 «errata» de cada una de ellas, en la sección de información de «releases» del sitio web de FreeBSD.


2.3.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.3.7).

Si no dispone de los ficheros de instalación de FreeBSD debería consultar la 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 la Sección 2.3.7.


2.3.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 por 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 7.1-RELEASE para i386 están en from ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/7.1-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 suelen 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. Vuelque 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 disco y recuerde etiquetarlos 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. Puede descargar fdimage desde el directorio tools del sitio FTP de FreeBSD.

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

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

    En FreeBSD /dev/fd0 es la primera unidad de disquetes (la unidad A:). /dev/fd1 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.

Ya podemos instalar instalar FreeBSD.


2.4. Inicio de la instalación

Importante: 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 seguir adelante 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.4.1. El arranque

2.4.1.1. El arranque en i386

  1. Comience con su sistema apagado.

  2. Arranque el sistema. Durante el arranque 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 disminuir 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.3.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 pulse 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.4.1.2. Arranque en Alpha

  1. Comience con su sistema apagado.

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

  3. Si va a arrancar desde disquetes, tal y como se describe en la Sección 2.3.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ó 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.4.1.3. Arranque en Sparc64®

La mayoría de sistemas Sparc64® están configurados para arrancar automáticamente desde disco. Si quiere instalar FreeBSD tendrá que arrancar por red o desde un CDROM, lo que requiere que acceda a la PROM (OpenFirmware).

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

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

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

ok         (1)
ok {0}     (2)
(1)
Este es el prompt que verá en sistemas con una sola CPU.
(2)
Este prompt se usa en sistemas SMP; el dígito indica el número de la CPU activa.

Ponga el CDROM dentro de la unidad y teclée boot cdrom en el prompt de la PROM.


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

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

Pulse Bloq Despl (Scroll Lock) y ya puede revisar el búfer. Para moverse use las flechas o RePág y AvPág (PageUp y PageDown respectivamente). Pulse de nuevo Bloq Despl (Scroll Lock) cuando quiera salir del búfer.

Pruébelo, revise el texto que ha generado el kernel al probar los dispositivos del sistema. Verá un texto muy similar al de la Figura 2-1, aunque en su caso concreto se mostrarán los dispositivos que tenga su sistema.

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

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

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

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

En FreeBSD 6.2 y versiones siguientes verá tras la prueba de dispositivos verá lo que muestra la Figura 2-2. Utilice las flechas del teclado para elegir país, región o grupo. Cuando acabe pulse Intro, con lo que habrá elegido país y esquema de teclado. En cualquier momento puede salir de easily. It is also easy to exit the sysinstall y volver a empezar.

Figura 2-2. Menú de selección de país

Figura 2-3. Salir de Sysinstall

Para salir de sysinstall utilice las flechas del teclado 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/CDs/DVDs from the drives).

                            [ Yes ]    No

Si pulsa [ Yes ] y no retira el CDROM durante el reinicio el programa de instalación comenzará de nuevo.

Si está arrancando desde disquetes tendrá que retirar el floppy boot.flp antes de reiniciar.


2.5. ¿Qué es sysinstall?

sysinstall es la aplicación que el Proyecto FreeBSD creó para la instalación del sistema. Está orientada a consola y consta de diversos menús y pantallas que podrá usar para configurar y ejecutar el proceso de instalación.

El sistema de menús de sysinstall se controla mediante las flechas del teclado, Intro,el tabulador), Espacio y otras teclas. Tiene una descripción detallada de todas esas teclas y qué es lo que hacen en la información de uso de sysinstall.

Si quiere consultarla seleccione Usage y asegúrese de que el botón [Select] esté seleccionado (como se ven en la Figura 2-4) y pulse Intro.

Aparecerán las instrucciones de uso del sistema de menús. Una vez revisadas pulse Enter y volverá al menú principal.

Figura 2-4. Selección de «Usage» en el menú principal de sysinstall


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

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

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

Esto mostrará el menú de documentación.

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

Es muy importante qeu lea la documentación de sysinstall.

Si quiere consultar un documento seleccionelo 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 con las flechas y pulse Intro.


2.5.2. Selección del menú de esquemas de teclado

Si quiere cambiar el esquema de teclado seleccione el que Keymap y pulse Enter. Tendrá que hacer esto si su teclado no es el estándar en los EEUU.

Figura 2-7. Menú principal de sysinstall

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

En esta pantalla solamente se muestra una parte de la lista. Seleccione [ Cancel ] usando el tabulador si ha decido seguir usando el esquema de teclado por omisión y regresar al menú principal de instalación.

Figura 2-8. Menú de esquemas de teclado de sysinstall


2.5.3. Pantalla de opciones de instalación

Seleccione Options y pulse Intro.

Figura 2-9. Menú principal de sysinstall

Figura 2-10. Opciones de sysinstall

Los valores por omisión deberían bastar para la mayoría de usuarios. El número de «release» variará según sea la versión que se está instalando.

La descripción del elemento seleccionado aparecerá resaltada en azul en la parte baja de la pantalla. Observe que una de las opciones es Use Defaults, que devuelve todos los valores a los asignados por omisión al principio del proceso de instalación.

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

Si pulsa Q volverá al menú principal de la instalación.


2.5.4. Comenzar una instalación estándar

La instalación estándar (Standard) es la opción más adecuada para aquellas personas con poca o ninguna experiencia con UNIX o FreeBSD. Utilice las flechas para seleccionar Standard y pulse Intro; a partir de ahí comenzará la instalación.

Figura 2-11. Comenzar una instalación estándar


2.6. Asignación de espacio en disco

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


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

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

La BIOS es capz de abstraer el orden normal de los discos si hablamos de un PC en el que se 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 viene muy bien a los usuarios que tienen el «backup» del sistema más barato que existe, comprar un disco duro idéntico al primero y copiar periódicamente la primera unidad en la segunda mediante Ghost® o XCOPY. De este modo si la primera unidad falla, sufre el ataque de un virus o sufre las consecuencias de un fallo del sistema operativo sólo hay que decirle a la BIOS que interpole lógicamente las unidades. Es como intercambiar 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 permiten organizar hasta siete unidades SCSI de un modo muy similar.

Cualquiera que esté acostumbrado a usar las técnicas descritas se llevará una sorpresa al intentar usarlas 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 lugar a situaciones bastante chocantes, especialmente cuando las unidades son físicamente idénticas en geometría y han sido creadas como clones de datos la una de la otra.

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


2.6.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 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 las unidades de disco duro que el kernel ha econtrado al hacer el chequeo del sistema. La Figura 2-12 muestra un ejemplo de un sistema con dos discos IDE. Reciben los nombres de ad0 y ad2.

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

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

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

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 omisión que incorpora el kernel de FreeBSD, por lo que muestra las unidades ad0 y ad2. La máquina en la que se tomaron las capturas de pantalla tiene sendos discos IDE en ambos canales maestros de las dos controladoras y carece de discos en los canales esclavos.

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

La pantalla de FDisk se divide en tres partes.

La primera parte, que ocupa las dos primeras 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 las órdenes que pueden usarse en FDisk.

Figura 2-13. Un ejemplo de particionamiento típico con FDisk

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

Si desea usar FreeBSD en el resto del disco (lo que implica borrar todos los datos que pudiera haber en el disco una vez que le confirme a sysinstall que desea seguir adelante con la instalación) pulse A, que equivale a la opción Use Entire Disk (Utilizar el disco íntegro). Las «slices» que existieran se borrarán y serán 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-14. 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-14. Partición con FDisk usando el disco completo

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


2.6.3. Instalación de un gestor de arranque

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

  • Tiene más de un disco y ha instalado FreeBSD en cualquiera que no sea el primero.

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

Si FreeBSD va a ser el único sistema operativo en el sistema y va a instalarlo en el primer disco duro elija el gestor estándar (que, obviamente, está en la opción Standard). Elija None (ninguno) si va a usar algún otro gestor de arranque que sea capaz de arrancar FreeBSD.

Elija y pulse Intro.

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

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


2.6.4. 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-16. Salir de la selección de unidad

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

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


2.6.5. Creación de particiones con Disklabel

Tendrá que crear particiones dentro de las «slices» que haya creado. Recuerde que cada partición está asociada a una letra entre la a y la hy que las particiones b, c y d tienen significados heredados que tendrá que respetar.

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.

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

Tabla 2-2. Estructura de particiones del primer disco

Partición Sistema de ficheros Tamaño Descripción
a / 512 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 256 MB to 1024 MB El directorio /var contiene ficheros que están en continuo cambio, como «logs» y otros ficheros administrativos. Muchos de esos ficheros son una consecuencia 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 tienen similar patrón de accesos.
f /usr Resto del disco(al menos 2 GB) El resto de sus ficheros pueden almacenarse en /usr y sus subdirectorios.

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

Si va a instalar FreeBSD en más de un disco puede crear particiones el las demás «slices» que haya creado. La forma más fácil de hacerlo es creando dos particiones en cada disco, una para la swap y la otra para los sistemas de ficheros.

Tabla 2-3. Esquema de particiones para varios discos

Partición Sistema de ficheros Tamaño Descripción
b N/A Ver descripción 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 que haya elegido el esquema de particiones creelo en sysinstall. Verá este mensaje:

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

                                [  OK  ]
                          [ Press enter or space ]

Es decir:

                                 Message
 Debe crear particiones BSD dentro de las 'particiones
 fdisk' que acaba de crear.  Si tiene una cantidad de espacio en
 disco razonablemente grande (200MB o 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.

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

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-17. El editor Disklabel

Disklabel puede crear automáticamente particiones y asignarles tamaños por omisión. Estos tamaños se calculan con la ayuda de un algoritmo interno de dimensionamiento de particiones que analiza el tamaño del disco. Puede probarlo pulsando A. Verá una pantalla similar a la que aparece en la Figura 2-18. Dependiendo del tama˜o del disco que esté usando los valores por omisión pueden o no ser los apropiados. Esto no es algo de lo que deba preocuparse dado que no está obligado a aceptar esos valores por omisión.

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

Figura 2-18. Editor Disklabel con valores por omisión

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-19). Puede introducir el tamaño expresado en bloques de disco o como un número seguido de una M para expresarlo en megabytes, una G para usar gygabytes o una C si quiere expresarlo en cilindros.

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

El tamaño por omisión 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-20. Después pulse [ OK ].

Figura 2-20. 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-21. Esta primera partición contendrá un sistema de ficheros, así que seleccionamos FS y pulsamos Intro.

Figura 2-21. Elegir el tipo de partición raíz

Para acabar, dado que está creando un sistema de ficheros, tendrá que decirle a Disklabel dónde hay que montarlo. La pantalla se muestra en la Figura 2-22. El punto de montaje del sistema de ficheros raíz es /, así que tendrá que teclear /y luego pulsar Intro.

Figura 2-22. Elegir el punto de montaje del sistema de ficheros 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-23, aunque los valores pueden ser diferentes. Pulse Q para salir del editor.

Figura 2-23. Editor Disklabel


2.7. Elección de qué instalar

2.7.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. Las personas con poco o ninguna experiencia en UNIX o FreeBSD deberán elegir alguna de las opciones predefinidas que se les 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 más experiencia.

Si pulsa F1 podrá acceder a 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 tiene intención de instalar un interfaz gráfico de usuario tendrá que instalar una de las distribuciones cuyo nombre comienza por X. La configuración del servidor X y la selección de un entorno de escritorio son algunas de las tareas que tendrá una vez instalado FreeBSD. Tiene más información sobre la configuración de un servidor X en Capítulo 5.

La versión de X11 por omisión en FreeBSD es Xorg.

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 compilarlo consulte el Capítulo 8.

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-24, usando las flechas y pulsando Intro. Si el espacio en disco es limitado piense en usar alguna de las otras opciones. No pierda con ello demasiado tiempo puesto que el resto de distribuciones pueden añadirse en cualquier momento tras la intalación.

Figura 2-24. Elección de distribuciones


2.7.2. Instalación de la colección 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 7.1 los ports ocupan cerca de 445 MB en disco. Puede asumir tranquilamente que en las nuevas versiones del sistema irán ocupando más y más.

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

 This will give you ready access to over 19,000 ported software packages,
 at a cost of around 445 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 del usuario
 ¿Quiere instalar la colección de ports de FreeBSD?

 Tendrá acceso inmediato a más de 19,000 paquetes de software listos
 para usarse en FreeBSD, aunque necesitará cerca de 445 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 estar al tanto de las últimas 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-25. Confirmar la elección de distribuciones

Si ya ha elegido todo lo que necesita seleccione Exit con las flechas, asegúrese de que [ OK ] está seleccionado también y pulse Intro.


2.8. 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 la opción correspondiente y siga las instrucciones.

Pulse F1 si necesita acceder a la ayuda del medio de instalación elegido. Pulse Intro para regresar al menú de selección de medios.

Figura 2-26. Choose Installation Media

Tipos de instalación desde FTP: Hay tres tipos de instalación por FTP entre las que puede elegir: FTP activo, FTP pasivo o a través de 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 omisión) 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 un servidor FTP via un proxy HTTP».

Esta opción configura sysinstall para que use el protocolo HTTP (como si fuera un navegador web) para conectarse a un proxy en todas las operaciones FTP. El proxy 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 configurar 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 talycual.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://talycual.ejemplo.com:1234/pub/FreeBSD.

Dado accede al directorio /pub/FreeBSD de ftp.FreeBSD.org a través del proxy talycual.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.9. El punto sin retorno

A partir de aquí entramos en la instalación propiamente dicha. Esta es la última oportunidad antes de empezar a escribir datos en el disco duro.

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

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

 We can take no responsibility for lost disk contents!  

                             [ Yes ]    No

Es decir:

   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 irán mostrando mensajes durante el proceso para irle informando de cómo van las cosas.

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: 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 bastará con que elija No.

Si en algún momento quiere regresar a este programa escriba
sysinstall .

                                 [ OK ]

                      [  Pulse Intro  ]

Pulse Intro; pasaremos a acometer ciertas tareas posteriores a la instalación.

Si selecciona [ No ] y pulsa Intro la instalación se detendrá para evitar 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 y 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.10. Después de la instalación

Para poder terminar una instalación de FreeBSD que merezca tal nombre debemos responder todavía a unas cuantas preguntas. Para ello debemos entrar en la configuración antes de entrar en el nuevo sistema FreeBSD o una vez en dentro del sistema desde sysinstall, seleccionando Configure.


2.10.1. Network Device Configuration

Si ha tenido que configurar PPP para poder instalar desde FTP esta pantalla no aparecerá. Puede modificar la configuración tal y como se ha explicado más arriba.

Si necesita información sobre redes de área local y la configuración de FreeBSD necesaria para que haga de «gateway/router» consulte el Advanced Networking chapter.

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

                             [ Yes ]   No

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

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

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

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

                              Yes   [ No ]

En la red local del ejemplo el tipo de protocolo de Internet que 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 se hará en unos instantes.

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

                              Yes   [ No ]

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

Si selecciona [ Yes ] ejecutará dhclient y, si ha funcionado, completará los datos de configuración automáticamente. Para más información consulte la Sección 31.10.

La siguiente ilustración muestra la configuración de un dispositivo Ethernet en un sistema que cumplirá las funciones de «gateway» en una red local.

Figura 2-28. Configuración de ed0

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

Host

El nombre de la máquina; por ejemplo, k6-2.ejemplo.com.

Dominio

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

«Gateway»IPv4

La dirección IP del sistema que reenvia paquetes a destinos fuera de la red local. Debe rellenar este campo si esta función la realiza una máquina que forme parte de la red. Déjelo en blanco si el sistema es el enlace de su red con Internet. El «gateway» recibe también los nombres de puerta de enlace o ruta por omisión.

Servidor de nombres

Dirección IP de su servidor local de DNS. En la red del ejemplo no hay servidor DNS local así que 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 usará la dirección IP 192.168.0.1

Máscara de red

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

Opciones adicionales de ifconfig

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

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

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

                             [ Yes ]   No

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


2.10.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.10.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 consulte la Sección 31.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

Select [ Yes ] to continue.

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

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

                             [ Yes ]   No

Es decir:

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

Dicho esto ¿desea activar inetd?

                             [ Yes ]   No

Si selecciona [ Yes ] podrá añadir servicios borrando caracteres # al comienzo de las líneas correspondientes.

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

Una vez que haya añadido los servicios que quiera en el sistema pulse Esc y verá un menú en el que se le preguntará si quiere guardar los cambios.


2.10.4. Activar el acceso al sistema mediante SSH

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

Si selecciona [ Yes ] activará sshd(8), el dæmon de OpenSSH. De este modo será posible el acceso remoto y seguro al sistema. Para más información sobre OpenSSH visite Sección 16.11.


2.10.5. FTP anónimo

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

                              Yes    [ No ]

2.10.5.1. Rechazar el acceso al sistema mediante FTP anónimo

si acepta la respuesta por omisión ([ No ]) y pulsa Intro tenga en cuenta que los usuarios que tengan cuenta en la máquina podrán seguir accediendo al sistema.


2.10.5.2. Aceptar el acceso al sistema mediante FTP anónimo

Si decide aceptar conexiones FTP anónimas cualquiera podrá conectarse al sistema. Antes de activar esta opción debería meditar sobre las implicaciones de seguridad de esa decisión. Para más información sobre la seguridad y FreeBSD consulte el Capítulo 16.

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

This screen allows you to configure the anonymous FTP user.

The following configuration values are editable:

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

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

Comment: String describing this user in /etc/passwd


FTP Root Directory:

        Where files available for anonymous FTP will be kept.

Upload subdirectory:

        Where files uploaded by anonymous FTP users will go.

Es decir:

En esta pantalla puede configurar el usuario de FTP
        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 omisión el directorio raíz del ftp será /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-30. Edición del mensaje de bienvenida de FTP

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

Pulse Esc, aparecerá una ventana flotante con la opción por omisión de to a) leave editor (salir del editor). Pulse Intro si quiere salir y seguir con lo que estaba haciendo. Pulse Intro de nuevo para guardar los cambios que hubiera hecho.


2.10.6. Configuración de NFS

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


2.10.6.1. Servidor NFS

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

                              Yes    [ No ]

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

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

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

Es decir:

                               Mensaje
Hacer funcionar un servidor NFS implica que 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-31. 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 omisión le ofrecerá a) leave editor (es decir, salir del editor). Pulse Intro para salir del editor y seguir adelante.


2.10.6.2. Cliente NFS

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

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

                              Yes   [ No ]

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


2.10.7. Configuración de la consola del sistema

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

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

                              [ Yes ]  No

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

Figura 2-32. Opciones de 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-33. 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-34. Retardo del salvapantallas

Asigne el retardo del salvapantallas a su gusto, seleccione [ OK ] y pulse Intro para volver al menú de configuración de la consola del sistema.

Figura 2-35. Salida del menú de configuración de la consola del sistema

Seleccione Exit y pulse Intro para seguir adelante con la configuración necesaria tras la instalación.


2.10.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 EEUU.

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

                            [ Yes ]   No

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

Seleccione [ Yes ] y pulse Intro.

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

                              Yes   [ No ]

Seleccione [ Yes ] o [ No ] según esté configurado el reloj del sistema y pulse Intro.

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

Elija la zona adecuada mediante las flechas y pulse Intro.

Figura 2-37. Elección de país

Elija el país adecuado con las flechas y pulse Intro.

Figura 2-38. Elección de zona horaria

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

                            Confirmation 
            Does the abbreviation 'EDT' look reasonable?

                            [ Yes ]   No

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


2.10.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.10.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 PS/2, serial, or bus mouse?

                            [ Yes ]    No

Seleccione [ Yes ] si tiene un ratón que no sea USB o por el contrario seleccione [ No ] si tiene un ratón USB. Después pulse Intro.

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

Seleccione Type usando las flechas y pulse Intro.

Figura 2-40. Ajuste del protocolo 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-41. Configuración del puerto del ratón

Seleccione Port y pulse Intro.

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

El sistema de ejemplo tiene un ratóna PS/2, de forma que la configuración por omisión basta. Si quiere modificarla utilice las flechas y después pulseIntro.

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

Por último, utilice las flechas para elegir Enabley pulse Intro; así se activa y prueba el dæmon del ratón.

Figura 2-44. 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 funcione 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.10.11. Instalación de «packages»

Los «packages» son binarios precompilados; son una forma muy cómoda de instalar software.

Veamos la instalación de un «package» Este es un buen momento para instalar «packages» si así lo desea. De todos modos una vez concluida la instalación puede entrar cuando quiera a sysinstall e instalar lo que necesite.

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

                            [ Yes ]   No

Elija [ Yes ] y pulse Intro: verá la pantalla de selección de paquetes:

Figura 2-45. Categorías de «packages»

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

Todos los «packages» 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-46. Selección de «packages»

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

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

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

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

Figura 2-47. Instalación de «packages»

Utilice el tabulador y las flechas para seleccionar [ Install ] y pulse Intro. Se le pedirá que confirme que quiere instalar «packages»:

Figura 2-48. Confirmación previa a la instalación de «packages»

Si selecciona [ OK ] y pulsa Intro comenzará la instalación de «packages». 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 «packages» nos quedan unos toques finales a la configuración. Si no ha elegido ningún «package» y quiere regresar al menú de configuración seleccione Install de todos modos.


2.10.12. Añadir usuarios y 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 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

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

Figura 2-49. Selección de «Añadir un usuario»

Seleccione User con las flechas y y pulseIntro.

Figura 2-50. 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 del usuario (obligatorio).

UID

El ID numérico del usuario Déjelo en blanco si quiere el que 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 este campo con mucho cuidado.

Full name

El nombre completo del usuario (o un comentario descriptivo.

Member groups

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

Home directory

El directorio «home» del usuario; 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 /bin/sh, la shell por omisión.

En nuestro ejemplo no se eligió /bin/sh sino /usr/local/bin/bash, para lo cual hubo que instalar previamente la shell bash como «package». No intente usar una shell que no existe o no podrá acceder al sistema con ese usuario. La shell más habitual en el mundo BSD es /bin/tcsh, la «C shell».

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

Cuando haya terminado pulse [ OK ] y volverá al menú de gestión de grupos y usuarios.

Figura 2-51. 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 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.10.13. Asignar contraseña aroot Password

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

                         [ OK ] 

               [ Press enter or space ]

Es decir:

                        Mensaje
 Debe asignar la 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.

New password:
Retype new password :

La instalación proseguirá una vez que introduzca la contraseña correctamente dos veces.


2.10.14. Salir de la instalación

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

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

                              Yes   [ No ]

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

Figura 2-52. Salir de la instalación

Seleccione [X Exit Install] con las flechas y pulse Intro. Se le pedirá que confirme que quiere 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/CDs/DVDs from the drives).

                            [ Yes ]   No

Es decir:

            Petición del Confirmación al 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.

Seleccione [ Yes ] y extraiga el disquete si ha arrancado desde floppy. La unidad lectora de 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.

Si apareciera algún error durante el arranque consulte la Sección 2.10.16.


2.10.15. Configuración de servicios de red

Escrito por Tom Rhodes.

La configuración de servicios de red puede ser una tarea peliaguda para usuarios inexpertos si no tienen demasiados conocimientos en la materia. Todo lo relacionado con las redes (y ahí entra Internet) tiene una importancia crítica en cualquier sistema operativo moderno y FreeBSD no es una excepción. Es por esta razón que le será muy útil saber un poco sobre la conectividad en general de FreeBSD desde el momento mismo de la instalación y los servicios de que puede disponer.

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

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

Figura 2-53. Primer nivel de servicios de red

La primera opción, Interfaces, la hemos visto en la Sección 2.10.1, así que podemos ignorarla.

Si selecciona la opción AMD añadirá al sistema la aplicación montaje automático de dispositivos de BSD. Suele usarse junto con el protocolo NFS protocol (ver más adelante) para automatizar el montaje de sistemas de ficheros remotos. No es necesario que configure nada.

La siguiente opción es AMD Flags. Si la selecciona verá un menú emergente que le requerirá parámetros específicos de AMD. El menú dispone ya de un conjunto de opciones por omisión:

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

La opción -a fija el punto de montaje por omisión, en este caso /.amd_mnt. La opción -l indica el log por omisió, aunque si usa syslogd todos los datos de log se enviarán al dæmon de logs del sistema. El directorio /host se usa para montar sistemas de ficheros exportados desde una máquina remota, mientras que el directorio /net se usa para montar sistemas de ficheros exportados desde una dirección IP. El fichero /etc/amd.map define las opciones de exportación que AMD exporta por omisión.

La opción Anon FTP permite conexiones FTP anónimas. Seleccione esta opción si quiere utilizar la máquina como servidor servidor FTP anónimo. Tenga muy en cuenta los riesgos de seguridad que conlleva esta opción. Se le ofrecerá otro menú en el que se explican en profundidad los riesgos de seguridad y la configuración.

El menú de configuración Gateway preparará la máquina para que cumpla las funciones de pasarela, tal y como se ha explicado previamente. Puede utilizarlo también para desactivar la opción Gateway si la seleccionón sin querer durante la instalación.

La opción Inetd permite desactivar el dæmon inetd(8).

La opción Mail se usa para configurar el MTA (de Mail Transfer Agent, agente de transferencia de correo) del sistema. Si selecciona esta opción llegará al siguiente menú:

Figura 2-54. Elegir el MTA del sistema

Aquí se le pide que elija qué MTA quiere instalar en su sistema. Un MTA no es otra cosa que un servidor de correo que entrega correo electrónico a los usuarios del sistema o los que acceden a través de Internet.

Si selecciona Sendmail instalará el célebre sendmail, el MTA de FreeBSD por omisión. La opción Sendmail local hará que sendmail sea el MTA del sistema pero desactivará la capacidad de recibir correo entrante desde Internet. Las demás opciones, Postfix y Exim son en el fonodo similares a Sendmail. Ambas aplicaciones gestionan correo aunque hay usuarios que los elegirían como su MTA antes que sendmail.

Tras elegir un MTA (o si ha elegido no usar ninguno) el menú de configuración de red nos muestra la siguiente opción:NFS client.

La opción NFS client configura el sistema para comunicarse con servidores NFS. Un servidor NFS permite que, mediante el uso del protocolo NFS, otras máquinas de la red puedan acceder a sus sistemas de ficheros. Si no hay más máquinas en su red puede dejar la opción sin seleccionar. El sistema puede necesitar más configuración; consulte la Sección 31.6 para más información sobre cómo configurar el cliente y el servidor.

La siguiente opción es NFS server, que le permitirá configurar su sistema como servidor NFS. Con esta opción añadirá la información necesaria para el arranque de RPC, los servicios de llamada de procedimientos remotos. RPC se usa para coordinar conexiones entre sistemas y programas.

La siguiente opción es

La siguiente opción es Ntpdate, la sincronización de la hora. Al seleccionarla verá un menú como este:

Figura 2-55. Configuración de Ntpdate

Elija en el menú el servidor más cercano al lugar donde está la máquina. De este modo la sincronozación será más precisa, puesto que un servidor más lejano puede padecer de conexiones con más latencia.

La siguiente opción es PCNFSD. Esta opción instalará el «package» net/pcnfsd desde la colección de Ports. Es una aplicación muy útil que da servicios de autentificación NFS a sistemas que son incapaces de tenerlos por sí mismos, como por ejemplo el sistema operativo MS-DOS de Microsoft.

Si usa las flechas podrá ver más opciones:

Figura 2-56. Segundo nivel de configuración de red

Las aplicaciones rpcbind(8), rpc.statd(8) y rpc.lockd(8) utilities se utilizan en las llamadas de procesos remotos (RPC). rpcbind gestiona la comunicación entre servidores y clientes NFS; los servidores NFS lo necesitan para poder funcionar correctamente. El dæmon rpc.statd se comunica con el dæmon rpc.statd de otras máquinas para facilitar seguimiento de estado. La información de estado se deposita por omisión en /var/db/statd.status. La siguiente opción que vemos es rpc.lockd; si se selecciona facilita servicios de bloqueo de ficheros. Se suele usar conjuntamente con rpc.statd para monitorizar qué máquina pide bloqueos y con qué frecuencia. Si bien es cierto que estas dos útimas opciones son fantásticas para depuración, también lo es que no son necesarias para que clientes y servidores NFS funcionen correctamente.

El siguiente elemento de la lista es Routed, un dæmon de encaminamiento. routed(8) gestiona tablas de rutas, encuentra «routers» multicast y, bajo petición, facilita una copia de la tabla de rutas a cualquier máquina conectada físicamente a la red. Suele usarse principalmente en máquinas que hacen funciones de pasarela de una red local. Si la selecciona verá un menú en el que se le requerirá que indique la ubicación de la aplicación. Por omisión ya está configurada, así que basta que la confirme pulsando Intro key. Se le presentará un menú más, pidiendole esta vez parámetros que quiera proporcionarle a routed. Por omisión -q estará ya dispuesto y debería aparecer así en pantalla.

La siguiente opción que aparece es Rwhod; si la selecciona arrancará el dæmon rwhod(8) durante el arranque del sistema. La aplicación rwhod envía mensajes del sistema (en broadcast) periódicamente a través de la red, o si está en modo «consumer» los va recogiendo. Tiene más información en las páginas de manual de ruptime(1) y rwho(1).

La siguiente opción del menú está relacionada con el dæmon sshd(8). Se trata del servidor de shell segura de OpenSSH y le recomendamos encarecidamente su uso en lugar de los servidores telnet y FTP. El servidor sshd se usa para crear una conexión segura de una máquina a otra mediante conexiones cifradas.

La última opción es TCP Extensions, que activa las extensiones TCP definidas en las RFC 1323 y RFC 1644. En algunas máquinas puede acelerar conexiones, pero también puede haber conexiones que se pierdan. No se recomienda su uso en servidores, pero puede ser de utilidad en máquinas aisladas.

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


2.10.16. El arranque de FreeBSD

2.10.16.1. El arranque de FreeBSD/i386

Si todo ha ido bien debería ver una pantalla de mensajes pasando frente a usted hasta que llegue a lo que llamamos un «login prompt». Puede volver a ver los mensajes del arranque pulsando Bloq Deslp y usando RePág y AvPág. Pulsando Bloq Despl otra vez volverá al prompt.

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

Entre al sistema utilizando un nombre de usuario y contraseña que haya creado durante la instalación (en nuestro ejemplo rpratt). Evite entrar al sistema como root salvo en los casos en los que sea estrictamente necesario.

Este es un típico mensaje de arranque (se ha eliminado la información de la 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 claves RSA y DSA puede llevar su tiempo en máquinas lentas. Esto solamente sucede en el primer arranque después de la instalación. Los demás arranques serán más rápidos.

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


2.10.16.2. El arranque de FreeBSD/alpha

Una vez acabado el proceso de instalación podrá arrancar FreeBSD tecleando algo muy parecido a esto en el prompt de SRM:

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

>>>BOOT DKC0

Esto hace que el firmware arranque desde el disco especificado. Para que FreeBSD arranque automáticamente de ahí en adelante utilice lo siguiente:

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

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


2.10.17. El apagado de FreeBSD

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

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

Una vez que vea el mensaje de «Please press any key to reboot » puede apagar la máquina. Si pulsa cualquier tecla en lugar de apagar la máquina el sistema reiniciará.

También puede usar la combinación de teclas Ctrl+Alt+Supr para reiniciar el sistema, aunque no le recomendamos que lo haga durante el funcionamiento normal del sistema.


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 y respuestas para quienes quieren poder elegir en el arranque entre FreeBSD y MS-DOS.


2.11.1. Qué hacer si algo va mal

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

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

Si su hardware está soportado y sigue experimentando «cuelgues» u otro tipo de problemas tendrá que compilar un kernel personalizado. Esto le permitirá disponer de soporte que no está incluido en el kernel GENERIC. El kernel que se incluye en los discos de arranque está configurado asumiendo que la mayoría de los dispositivos van a funcionar con la configuración por omisión 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 cada cosa.

Es posible también que la prueba de un dispositivo que no está 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 controladores conflictivos.

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

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 para hacerlo, por ejemplo una actualización crítica. El proceso de actualización podría fallar, lo que puede acarrrear daños en el chip de la BIOS.


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

No puede usar sistemas de ficheros comprimidos con Double Space™. Deberá por lo tanto descomprimir el sistema de ficheros antes de acceder a los datos desde FreeBSD. Ejecute el Agente de compresión desde Inicio> Programas > Herramientas del sistema.

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

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

/dev/ad0sN  /dos  msdosfs rw  0    0

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

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

# mount_msdos /dev/ad0s1 /mnt

En el ejemplo el sistema de ficheros MS-DOS 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 darle suficiente información como para darle una idea completa de la estructura de particiones en la que está trabajando.

Nota: FreeBSD suele numerar las las «slices» (que es como decir los sistemas de ficheros MS-DOS) de un modo distinto al de otros sistemas operativos. Más concretamente, las particiones extendidas de MS-DOS suelen tener un número mayor de «slice» que las particiones primarias de MS-DOS. fdisk(8) le será de ayuda a la hora de determinar qué «slices» pertenecen a FreeBSD y cuáles a otros sistemas operativos.

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


2.11.3. Preguntas y respuestas de la resolución de problemas

2.11.3.1. Mi sistema se «cuelga» durante el arranque, o se comporta de modo extraño durante la instalación, o no llega a comprobar el funcionamiento del lector de disquetes.
2.11.3.2. Cuando voy a arrancar FreeBSD por primera vez después de la instalación el kernel carga y prueba mi hardware, pero se detiene y muestra mensajes como este:
2.11.3.3. Cuando voy a arrancar desde disco duro por primera vez tras la instalación de FreeBSD el prompt del gestor de arranque muestra F? en el menú de arranque y no pasa de ahí.
2.11.3.4. El sistema encuentra mi tarjeta de red ed(4) pero me dan errores de «timeout».

2.11.3.1. Mi sistema se «cuelga» durante el arranque, o se comporta de modo extraño durante la instalación, o no llega a comprobar el funcionamiento del lector de disquetes.

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

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

Tenga en cuenta que tendría que volver a hacerlo cada vez que el sistema arranque, así que añada hint.acpi.0.disabled="1" al fichero /boot/loader.conf. Tiene más información sobre el cargador de arranque en Sección 14.1.

2.11.3.2. Cuando voy a arrancar FreeBSD por primera vez después de la instalación el kernel carga y prueba mi hardware, pero se detiene y muestra mensajes como este:

changing root device to ad1s1a panic: cannot mount root

¿Cuál es el problema?

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

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

Cuando el disco de arranque no sea el primer disco del sistema FreeBSD necesitará un poco de ayuda para poderlo encontrar. Puede haber dos escenarios donde suceda esto y en ambos hay que decirle a FreeBSD, dónde encontrar el sistema de ficheros raíz. Esto se hace especificando el número de disco según la BIOS, el tipo de disco y el número de disco que FreeBSD le dará a ese disco.

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

FreeBSD está en el disco BIOS 1, de tipo ad y el número de disco FreeBSD es el 2, así que habrá que decir lo siguiente:

1:ad(2,a)kernel

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

El segundo escenario es el arranque desde un disco SCSI teniendo uno o más discos IDE en el sistema. En este caso el número de disco FreeBSD es más bajo que el número de disco BIOS. Si tiene dos discos IDE además del disco SCSI, el disco SCSI es el disco 2 de BIOS, del tipo da y para FreeBSD es el disco número disk number 0, so 0, así que tendrá que usar

2:da(0,a)kernel

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

Una vez que sabe con exactitud los valores que debe usar póngalos exactamente como los ha tecleado en /boot.config utilizando el editor de texto que prefiera. Salvo que se le diga lo contrario FreeBSD utilizará el contenido de este fichero decidiráel comportamiento por omisión del prompt de boot: prompt.

2.11.3.3. Cuando voy a arrancar desde disco duro por primera vez tras la instalación de FreeBSD el prompt del gestor de arranque muestra F? en el menú de arranque y no pasa de ahí.

La geometría del disco duro se configuró mal cuando se utilizó el editor de particiones durante la instalación. Ejecute el editor de particiones e introduzca la geometría del disco correctamente. Tendrá que reinstalar FreeBSD completamente dado que habrá cambiado la geometría del disco.

Si no encuentra la manera de saber cuál es la geometría correcta pruebe con esto: Cree una pequeña partición DOS al principio del disco e instale FreeBSD en el espacio de disco inmediatamente contiguo. El programa de instalación verá la partición DOS e intentará deducir la geometría correcta a partir de ahí; esto suele funcionar.

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

Si lo que está instalando es un servidor o máquina de escritorio dedicado a FreeBSD y no le preocupa que en el futuro cercano tenga que mantener la convivencia con DOS, Linux u otro sistema operativo siempre tiene la opción de utilizar el disco entero (la opción A en el editor de particiones). Es una opción no estándar gracias a la cual FreeBSD ocupa todo el disco, desde el primer sector al último. De este modo nos olvidamos de todos los problemas relacionados con la geometría de disco, pero le obliga a no poder instalar ningún otro sistema operativo aparte de FreeBSD en ese disco.

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

Lo más probable es que su tarjeta esté utilizando una IRQ distinta de la que debería estar usando según lo que aparece en /boot/device.hints . El controlador ed(4) no utiliza configuración does not use the «soft» por omisión (es decir, valores que se le suministren mediante EZSETUP bajo DOS) pero como casi todo en esta vida hay solución. En este caso, de hecho, hay dos.

Ponga el «jumper» de la tarjeta en una configuración «dura» (es posible que tenga que modificar la configuración del kernel debido a esto) o modifique el valor de la IRQ con el valor -1 del siguiente modo: by setting the hint hint.ed.0.irq="-1". Así le dirá al kernel que utilice la configuración «suave».

Hay otra posibilidad, que es cuando su tarjeta esté utilizando la IRQ 9, que suele compartir funciones con la IRQ 2, circunstancia que es con frecuencia causa de problemas (sobre todo cuando entra en escena una tarjeta VGA que utiliza justamente la IRQ 2). Le recomendamos encarecidamente que haga todo lo posible para no utilizar ni la IRQ 2 ni la IRQ 9.


2.12. Guía avanzada de instalación

Escrito por Valentino Vaschetto.

This section describes how to install FreeBSD in exceptional cases.


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

Es posible instalar FreeBSD en máquinas que no tengan teclado ni siquiera monitor conectado. De hecho no tienen por qué tener ni salida VGA. ¿Cómo es posible?, se preguntará: Haciendolo todo 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.3.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 disquete kern.flp en un sistema FreeBSD mediante mount(8).

    # mount /dev/fd0 /mnt
    

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

    # cd /mnt
    

    Aquí es donde enseñaremos al disquete a arrancar en la consola serie. Debe crearse un fichero llamado boot.config que contenga lo siguiente: /boot/loader -h. Con esto le pasamos cargador de arranque (el «bootloader») el parámetro necesario para que intente arrancar en una consola serie.

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

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

    # cd /
    # umount /mnt
    

    Y podemos extraer el disquete de la unidad.

  2. 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 disquete 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 teclado ni monitor

    Conéctese usando cu(1):

    # cu -l /dev/cuaa0
    

¿Ya está! Desde este momento ya puede controlar su máquina sin monitor ni teclado desde la sesión cu que acaba de abrir. El sistema le pedirá que introduzca el disco kern1.flp y después tendrá que elegir qué tipo de terminal va a utilizar. 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 haya comprado o hecho por sus propios medios.

Es posible que tengaque 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 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»). Dichas imágenes pueden copiarse a CD si dispone de una grabadora y usarse posteriormente para instalar FreeBSD. Si tiene una grabadora de CD y el ancho de banda no le supone un problema la forma 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-4. Nombres y funciones de las imágenes de FreeBSD 6.X and 7.X

    Nombre Contenido
    versión-RELEASE-arch-bootonly.iso Todo lo necesario para arrancar un kernel de FreeBSD y ejecutar la interfaz de instalación. Los ficheros que vayan haciendo falta tendrán que irse descargando por FTP o por algún otro medio.
    versión-RELEASE-arch-disc1.iso Todo lo necesario para instalar AFreeBSD y un «live filesystem», que le será muy útil (conjuntamente con la aplicación «Repair» de sysinstall.
    versión-RELEASE-arch-disc2.iso Todas las aplicaciones que puedan caber en un disco.
    versión-RELEASE-arch-docs.iso La documentacióN de FreeBSD.

    Descargue la imagen ISO de arranque (si existe para su plataforma) o la imagen del disco uno. No descargue ambas, puesto que el disco uno contiene todo lo que hay en la imagen ISO de arranque.

    Utilice la imagen ISO de arranque si su acceso a Internet es barato. Con ella podrá instalar FreeBSD e 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 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 20.6 (en particular la Sección 20.6.3 y la Sección 20.6.4).

    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.

Nota: Si lo que quiere hacer es crear una «release» personalizada de FreeBSD consulte el artículo Release Engineering.


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

Los discos de 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 el directorio /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 sistema 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 listas para pasar a los disquetes. Cada distribución debería 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 directorio7.1/base/.

La única distribución imprescindible es BIN. Guarde esta y todas las distribuciones que quiera instalar desde una partición MS-DOS bajo 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 empaquetados con tar y en una cinta. Veamos un ejemplo:

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

Cuando esté preparando la instalación 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. Before Installing over a Network

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.

El adaptador Ethernet es, debido a su velocidad de transferencia, la mejor 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 saber 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 omisión 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 usa 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 7.1 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 ve mensajes de “permission denied” seguramente no ha activado esto correctamente.


Capítulo 3. Conceptos básicos de Unix

Reescrito por Chris Shumway.

3.1. Sinopsis

El siguiente capítulo comprende la funcionalidad y órdenes básicas del sistema operativo FreeBSD. Gran parte de este material es relevante para cualquier sistema operativo tipo UNIX. Puede saltarse este capítulo si considera que ya conoce el funcionamiento de UNIX. Si no tiene experiencia previa con FreeBSD debería leer este capítulo con mucha atención.

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

  • Cómo usar las «consolas virtuales» de FreeBSD.

  • Cómo funcionan los permisos de fichero UNIX en relación con las banderas de fichero en FreeBSD.

  • La disposición de sistemas de ficheros por omisión en FreeBSD.

  • La organización de disco de FreeBSD.

  • Cómo montar y desmontar sistemas de ficheros.

  • Qué son los procesos, dæmons y señales.

  • Qué es una shell, cómo modificar sus variables de entorno por omisión.

  • Cómo utilizar editores de texto básicos.

  • Qué son los dispositivos y nodos de dispositivos.

  • Qué formato binario se usa en FreeBSD.

  • Cómo buscar información en las páginas de manual.


3.2. Consolas virtuales y terminales

FreeBSD puede utilizarse de muchas maneras. Una de ellas es tecleando órdenes en una terminal de texto. De este modo, mucha de la flexibilidad y poder de un sistema operativo UNIX está inmediatamente en sus manos cuando usa FreeBSD. Esta sección describe qué son «terminales» y «consolas» y cómo puede usarlas en FreeBSD.


3.2.1. La consola

Si no ha configurado FreeBSD para ejecutar automáticamente un entorno gráfico en el arranque, el sistema le presentará un «prompt» de entrada después del arranque, inmediatamente después de que los «scripts» de inicio terminen de ejecutarse. Verá algo similar a esto:

Additional ABI support:.
Local package initialization:.
Additional TCP options:.

Fri Sep 20 13:01:06 EEST 2002

FreeBSD/i386 (pc3.ejemplo.org) (ttyv0)

login:

Los mensajes pueden ser un poco diferentes en su sistema, pero verá algo similar. Las últimas dos líneas son las que nos interesan por el momento. La penúltima línea dice:

FreeBSD/i386 (pc3.ejemplo.org) (ttyv0)

Esta línea contiene información acerca del sistema que acaba de arrancar. Esta usted ante una consola «FreeBSD» que se ejecuta en un procesador Intel o compatible de la arquitectura x86[1]. El nombre de esta máquina (todas las máquinas UNIX tiene un nombre) es pc3.ejemplo.org, y usted está ahora ante su consola de sistema (la terminal ttyv0).

Para acabar, la última línea siempre es:

login:

Este es el lugar donde se usted tecleará su «nombre de usuario» para entrar en FreeBSD. La siguiente sección describe cómo hacerlo.


3.2.2. La entrada a FreeBSD

FreeBSD es un sistema multiusuario multiprocesador. Esta es la descripción formal que se suele dar a un sistema que puede ser utilizado por muchas personas diferentes, que simultáneamente ejecutan muchos programas en un sola máquina.

Cada sistema multiusuario necesita algún modo de distinguir a un «usuario» del resto. En FreeBSD (y en todos los sistemas operativos de tipo UNIX) esto se logra requiriendo que cada usuario «acceda» al sistema antes de poder ejecutar programas. Cada usuario tiene un nombre único (el «nombre de usuario») y una clave secreta, personal (la «contraseña»). FreeBSD preguntará por ambos antes de permitirle a un usuario ejecutar cualquier programa.

Justo después de que FreeBSD arranque y termine de ejecutar sus «scripts» de inicio [2], le presentará un «prompt» y solicitará un nombre válido de usuario:

login:

En este ejemplo vamos a asumir que su nombre de usuario es john. Teclée john en el «prompt» y pulse Intro. Debería presentársele un «prompt» donde introducir una «contraseña»:

login: john
Password:

Teclée ahora la contraseña de john y pulse Enter. La contraseña no se muestra en pantalla, pero no debe preocuparse por ello. Esto se hace así por motivos de seguridad.

Si ha tecleado su contraseña correctamente ya está usted en un sistema FreeBSD, listo para probar todas las órdenes disponibles.

Verá el MOTD (mensaje del día) seguido por un «prompt» (un caracter #, $ o %). Esto confirma que ha validado con éxito su usuario en FreeBSD.


3.2.3. Consolas múltiples

Ejecutar órdenes UNIX en una consola está bien, pero FreeBSD puede ejecutar muchos programas a la vez. Tener una consola donde se pueden teclear órdenes puede ser un desperdicio cuando un sistema operativo como FreeBSD puede ejecutar docenas de programas al mismo tiempo. Aquí es donde las «consolas virtuales» muestran su potencial.

FreeBSD puede configurarse para presentarle diferentes consolas virtuales. Puede cambiar de una de ellas a cualquier otra consola virtual pulsando un par de teclas en su teclado. Cada consola tiene su propio canal de salida, y FreeBSD se ocupa de redirigir correctamente la entrada del teclado y la salida al monitor cuando cambia de una consola virtual a la siguiente.

Se han reservado ciertas combinaciones especiales de teclas para pasar de unas consolas virtuales a otras en FreeBSD [3]. Puede utilizar Alt-F1, Alt-F2 y así sucesivamente hasta Alt-F8 para cambiar a una consola virtual diferente en FreeBSD.

Mientras está cambiando de una consola a la siguiente, FreeBSD se ocupa de guardar y restaurar la salida de pantalla. El resultado es la «ilusión» de tener varias pantallas y teclados «virtuales» que puede utilizar para teclear órdenes para que FreeBSD los ejecute. El programa que usted lanza en una consola virtual no deja de ejecutarse cuando la consola no está visible. Continúan ejecutándose cuando se cambia a una consola virtual diferente.


3.2.4. El fichero /etc/ttys

La configuración por omisión de FreeBSD iniciará con ocho consolas virtuales. No es una configuración estática por hardware, así que puede personalizar fácilmente su sistema para arrancar con más o menos consolas virtuales. El número y propiedades de las consolas virtuales están detallados en /etc/ttys.

En /etc/ttys es donde se configuran las consolas virtuales de FreeBSD. Cada línea no comentada de este fichero (líneas que no comienzan con un caracter #) contiene propiedades para una sola terminal o consola virtual. La versión por omisión de este fichero en FreeBSD configura nueve consolas virtuales y habilita ocho de ellas. Son las líneas que comienzan con ttyv:

# name  getty                           type    status          comments
#
ttyv0   "/usr/libexec/getty Pc"         cons25  on  secure
# Virtual terminals
ttyv1   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv2   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv3   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv4   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv5   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv6   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv7   "/usr/libexec/getty Pc"         cons25  on  secure
ttyv8   "/usr/X11R6/bin/xdm -nodaemon"  xterm   off secure

Consulte ttys(5) si quiere una descripción detallada de cada columna en este fichero y todas las opciones que puede usar para configurar las consolas virtuales.


3.2.5. Consola en modo monousuario

En la Sección 14.6.2 encontrará una descripción detallada de lo que es «modo monousuario». No importa que sólo exista una consola cuando ejecuta FreeBSD en modo monousuario. No hay otra consola virtual disponible. Las configuraciones de la consola en modo monousuario se pueden encontrar también en /etc/ttys. Busque la línea que comienza por console:

# name  getty                           type    status          comments
#
# Si la consola está marcada como "insecure", entonces init 
# le pedirá la contraseña de root al entrar a modo monousuario.
console none                            unknown off secure

Nota: Tal y como indican los comentarios por encima de la línea console, puede editar esta línea y cambiar secure por insecure. Si lo hace, cuando FreeBSD arranque en modo monousuario el sistema le pedirá la contraseña de root.

Tenga cuidado si cambia esto a insecure. Si olvida la contraseña de root arrancar en modo monousuario será con seguridad más complicado. Sigue siendo posible, pero será un poco difícil para alguien que no esté familiarizado con le proceso de arranque de FreeBSD y los programas involucrados en dicho proceso.


3.2.6. Cambio del modo de video de la consola

La consola FreeBSD por omisión tiene un modo de video que puede ajustarse a 1024x768, 1280x1024 o cualquier otra resolución que admita su chip gráfico y su monitor. Si quiere utilizar uno diferente tendrá que recompilar su kernel con estas dos opciones añadidas:

options VESA
options SC_PIXEL_MODE

Una vez recompilado el kernel con esas dos opciones en él determine qué modos de video admite su hardware; para ello use vidcontrol(1). Con lo siguiente le mostrará una lista de modos de video soportados:

# vidcontrol -i mode

La salida de esta orden es una lista de los modos de que admite su tarjeta. Para elegir uno de ellos tendrá que ejecutar vidcontrol(1) en una consola como root:

# vidcontrol MODE_279

Si el modo de video que ha elegido le parece adecuado puede configurarlo de forma permanente haciendo que funcione desde el momento del arranque; para ello debe editar /etc/rc.conf file:

allscreens_flags="MODE_279"

3.3. Permisos

FreeBSD, cuya raíz histórica es el UNIX BSD, se fundamenta en varios conceptos clave de UNIX. El primero y más importante es que FreeBSD es un sistema operativo multi-usuario. El sistema puede gestionar múltiples usuarios trabajando simultáneamente y en tareas que no guarden relación entre sí. El sistema se encarga de compartir y administrar peticiones de dispositivos de hardware, periféricos, memoria y tiempo de 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 usa para decidir quién puede leer, escribir y ejecutar un recurso. Estos permisos se guardan como octetos divididos en tres partes: una para el propietario del fichero, otra para el grupo al que el fichero pertenece, y otra para todos los demás grupos y usuarios. Veamos una representación numérica de esto:

Valor Permiso Listado de directorio
0 No leer, no escribir, no ejecutar ---
1 No leer, no escribir, ejecutar --x
2 No leer, escribir, no ejecutar -w-
3 No leer, escribir, ejecutar -wx
4 Leer, no escribir, no ejecutar r--
5 Leer, no escribir, ejecutar r-x
6 Leer, escribir, no ejecutar rw-
7 Leer, escribir, ejecutar rwx

Puede utilizar el parámetro de línea de órdenes -l de ls(1) para ver un listado largo que incluya una columna con información acerca de los permisos de fichero para el propietario, grupo y los demás. Por ejemplo, un ls -l en un directorio puede mostrar algo como esto:

% ls -l
total 530
-rw-r--r--  1 root  wheel     512 Sep  5 12:31 mifichero
-rw-r--r--  1 root  wheel     512 Sep  5 12:31 otrofichero
-rw-r--r--  1 root  wheel    7680 Sep  5 12:31 email.txt
...

Aquí está como se divide la primera columna de ls -l:

-rw-r--r--

El primer caracter (más a la izquierda) indica si este fichero es un fichero regular, un directorio, un dispositivo especial de caracter, un socket o cualquier otro dispositivo especial pseudo-ficheroa . En este caso, el - un fichero regular. Los siguientes tres caracteres, rw- en este ejemplo, dan los permisos para el propietario del fichero. Los siguientes tres caracteres, r--, dan los permisos para el grupo al que el fichero pertenece. Los últimos tres caracteres, r--, dan los permisos para el resto del mundo. Un guión indica que el permiso está desactivado. En el caso de este fichero, los permisos están asignados de tal manera que el propietario puede leer y escribir en el fichero, el grupo puede leer el fichero, y el resto del mundo sólo puede leer el fichero. De acuerdo con la tabla de arriba, los permisos para este fichero serían 644, donde cada dígito representa las tres partes de los permisos del fichero.

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 fichero que los programas pueden abrir, leer y en los que pueden escribir datos como si de cualquier otro fichero se tratara. Estos ficheros especiales de dispositivo se encuentran en el directorio /dev.

Los directorios también son tratados como ficheros. Tienen permisos de lectura, escritura y ejecución. El bit de ejecución en un directorio tiene un significado ligeramente distinto que para los ficheros. Cuando un directorio está marcado como ejecutable significa que se puede mirar dentro, se puede hacer un «cd» (cambiar directorio) a él. Esto también significa que dentro del directorio es posible acceder a ficheros cuyos nombres son conocidos (sujeto, claro está, a los permisos de los ficheros mismos).

En particular, para poder realizar un listado de directorio, el permiso de lectura debe ser activado en el directorio, mientras que para borrar un fichero del que se conoce el nombre es necesario tener permisos de escritura y ejecución en el directorio que contiene el fichero.

Existen 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 ficheros y cómo establecerlos, consulte chmod(1).


3.3.1. Permisos simbólicos

Escrito por Tom Rhodes.

Los permisos simbólicos, también conocidos como expresiones simbólicas, utilizan caracteres en lugar de valores octales para asignar permisos a ficheros o directorios. Las expresiones simbólicas utilizan la sintaxis de (quién) (acción) (permisos) mediante los siguientes valores:

Opción Letra Representa
(quién) u Usuario
(quién) g Grupo propietario
(quién) o Otro
(quién) a Todos («todo el mundo»)
(acción) + Añadir permisos
(acción) - Quitar permisos
(acción) = Activar permisos explícitamente
(permisos) r Lectura
(permisos) w Escritura
(permisos) x Ejecución
(permisos) t Bit Sticky («pegajoso»)
(permisos) s Activar UID o GID

Estos valores se aplican con chmod(1) de la misma manera que los anteriores, pero con letras. Por ejemplo, podría usar la siguiente orden para bloquear a otros usuarios el acceso a FICHERO:

% chmod go= FICHERO

Puede usarse una lista separada por comas cuando se quiera aplicar más de un conjunto de cambios a un fichero. Por ejemplo la siguiente orden eliminará los permisos de escritura de grupo y «mundo» a FICHERO, y añade permisos de ejecución para todos:

% chmod go-w,a+x FILE

3.3.2. Banderas de fichero en FreeBSD

Escrito por Tom Rhodes.

Además de los permisos de fichero previamente expuestos, FreeBSD permite el uso de «banderas de fichero». Estas banderas añaden un nivel de seguridad y control adicional a los ficheros, pero no a los directorios.

Las banderas de fichero añaden un nivel adicional de control sobre los ficheros ayudando a asegurar que en algunos casos ni siquiera root pueda eliminar o alterar ficheros.

Las banderas de fichero se modifican mediante chflags(1), gracias a una interfaz muy sencilla. Por ejemplo, para habilitar la bandera imborrable de sistema en fichero1, escriba lo siguiente:

# chflags sunlink fichero1

Y para dehabilitar la bandera imborrable de sistema, simplemente escriba la orden previa con «no» antes de sunlink. Observe:

# chflags nosunlink fichero1

Para ver las banderas de este fichero, utilice ls(1) con las opciones -lo:

# ls -lo fichero1
   

La salida debería ser como esta:

-rw-r--r--  1 trhodes  trhodes  sunlnk 0 Mar  1 05:54 fichero1

Varias banderas solo pueden ser añadidas o retiradas de ficheros por el usuario root. En otros casos, el propietario del fichero puede activar estas banderas. Se recomienda que para más información la persona encargada de la administración del sistema consulte las páginas de manual chflags(1) y chflags(2).


3.3.3. Los permisos setuid, setgid y sticky

Escrito por Tom Rhodes.

Además de los permisos que se han explicado hay más, hay tres tipos más que todos los administradores deberían conocer. Son los permisos setuid, setgid y sticky.

Estos permisos juegan un papel clave en ciertas operaciones UNIX puesto que facilitan funcionalidades que no se suelen permitir a los usuarios normales. Para comprenderlas totalmente hay que comprender la diferencia entre el ID real del usuario y el ID efectivo.

El ID del usuario real es el UID que arranca (y el propietario) del proceso. El UID efectivo es el ID bajo el que se ejecuta el proceso. Veamos un ejemplo; el programa passwd(1) se ejecuta con el ID real del usuario puesto que el usuario está cambiando su contraseña. Pero para poder manipular la base de datos de contraseñas debe ejecutarse con el ID efectivo del usuario root. De este modo es posible que los usuarios cambien su contraseña sin llegar a ver un error de “Permission Denied” (permiso denegado).

Nota: La opción nosuid de mount(8) hace que estos binarios den errores silenciosos, es decir, fallarán pero el usuario no recibirá ningún mensaje de error por ello. Esta opción no funciona siempre, pues, según la página man de mount(8), un «wrapper» nosuid puede sortear esta limitación.

El permiso setuid puede asignarse colocando un número cuatro (4) antes de los permisos. Se ve mejor con un ejemplo:

# chmod 4755 ejemplosuid.sh

Los permisos de ejemplosuid.sh deberían ser así:

-rwsr-xr-x   1 trhodes  trhodes    63 Aug 29 06:36 ejemplosuid.sh

Fíjese atentamente en la s que ha aparecido en los permisos del fichero, en la parte de los permisos del propietario; esa s está en donde estaría el bit de ejecución. Gracias a esto el funcionamiento de aplicaciones que necesitan permisos elevados, como passwd, pueden funcionar.

Si quiere ver un ejemplo con sus propios ojos abra dos terminales. En una arranque un proceso (ejecute) passwd con un usuario normal. Mientras la aplicación espera a que le de una nueva contraseña busque la información de usuario del proceso passwd en la tabla de procesos.

En la terminal A:

Changing local password for trhodes
Old Password:

En la terminal B:

# ps aux | grep passwd
trhodes  5232  0.0  0.2  3420  1608   0  R+    2:10AM   0:00.00 grep passwd
root     5211  0.0  0.2  3620  1724   2  I+    2:09AM   0:00.01 passwd

Tal y como se ha dicho, un usuario normal puede ejecutar passwd, pero en realidad está utilizando el UID efectivo de root.

El permiso setgid actúa del mismo modo que el setuid, pero afecta a los permisos del grupo. Cuando una aplicación funciona con esta configuración lo hace con los permisos del grupo al que pertenece el fichero, no los del usuario que ha arrancado el proceso.

Si quiere utilizar el permiso setgid debe situar un núnmero dos (2) al principio de los permisos que vaya a asignar mediante chmod.

# chmod 2755 ejemplosuid.sh

La nueva configuración tiene un aspecto muy similar a la que tenía antes, pero observe que la s de antes está ahora en el campo de los permisos de grupo:

-rwxr-sr-x   1 trhodes  trhodes    44 Aug 31 01:49 ejemplosuid.sh

Nota: En ambos ejemplos, incluso si el «script» en cuestión es ejecutable, no se va a ejecutar con un EUID distinto o un ID efectivo de usuario porque los «scripts» de shell no pueden acceder a la llama del sistema setuid(2).

Los dos permisos que acabamos de mostrar los bits de permisos (setuid y setgid) pueden reducir el nivel de seguridad haciendo que se escalen los permisos. Pero hay un tercer bit especial de permisos que puede ser de mucha ayuda para reforzar la seguridad del sistema: el sticky bit.

El sticky bit( que podríamos traducir como «bit pegajoso») aplicado a un directorio hace que solamente el propietario de un fichero pueda borrarlo. Esto evita el borrado de ficheros ajenos en directorios públicos como /tmp. Si quiere usarlo coloque un uno (1) antes de los permisos. Veamos un ejemplo:

# chmod 1777 /tmp

Para ver el ;sticky bit en acción usamos ls:

# ls -al / | grep tmp
drwxrwxrwt  10 root  wheel         512 Aug 31 01:49 tmp

El sticky bit es la letra t al final de los permisos.


3.4. Estructura de directorios

La jerarquía del sistema de ficheros de FreeBSD es fundamental para obtener una compresión completa del sistema. El concepto más importante a entender es el del directorio raíz, «/». Este directorio es el primero en ser montado en el arranque y contiene el sistema básico necesario para preparar el sistema operativo para su funcionamiento en modo multiusuario. El directorio raíz también contiene puntos de montaje para cualquier otro sistema de ficheros que se pretenda montar.

Un punto de montaje es un directorio donde se pueden insertar sistemas de ficheros al sistema de archivos raíz. Esto se explica con detalle en la Sección 3.5. Los puntos de montaje estándar incluyen /usr, /var, /tmp, /mnt y /cdrom. Estos directorios suelen corresponderse con entradas en /etc/fstab. /etc/fstab es una tabla que sirve de referencia al sistema y contiene los diferentes sistemas de ficheros y sus respectivos puntos de montaje. La mayoría de los sistemas de ficheros en /etc/fstab se montan automáticamente en el arranque gracias al «script» rc(8), a menos que contengan la opción noauto. Si quiere más información consulte la Sección 3.6.1.

Veremos ahora una descripción de los directorios más comunes. Si desea información más completa consulte hier(7).

Directorio Descripción
/ Directorio raíz del sistema de ficheros.
/bin/ Utilidades de usuario fundamentales tanto para el ambiente monousuario como para el multiusuario.
/boot/ Programas y ficheros de configuración necesarios durante el arranque del sistema operativo.
/boot/defaults/ Ficheros de configuración por omisión del arranque; ver loader.conf(5).
/dev/ Nodos de dispositivo; ver intro(4).
/etc/ Ficheros de configuración y «scripts» del sistema.
/etc/defaults/ Ficheros de configuración por omisión del sistema; ver rc(8).
/etc/mail/ Ficheros de configuración para agentes de transporte de correo como sendmail(8).
/etc/namedb/ Ficheros de configuración de named; ver named(8).
/etc/periodic/ «Scripts» que se ejecutan diariamente, semanalmente y mensualmente mediante cron(8); ver periodic(8).
/etc/ppp/ Ficheros de configuración de ppp; ver ppp(8).
/mnt/ Directorio vacío utilizado de forma habitual por administradores de sistemas como punto de montaje temporal.
/proc/ Sistema de ficheros de procesos; ver procfs(5), mount_procfs(8).
/rescue/ Programas enlazados estáticamente para restauraciones de emergencia; ver rescue(8).
/root/ Directorio local para la cuenta root.
/sbin/ Programas del sistema y utilidades fundamentales de administración para ambientes monousuario y multiusuario.
/tmp/ Ficheros temporales. El contenido de /tmp NO suelen conservarse después de un reinicio del sistema. Los sistemas de ficheros basados en memoria suelen montarse en /tmp Puede automatizarse mediante variables de tmpmfs en rc.conf(5) (o con una entrada en /etc/fstab; ver mdmfs(8), o para FreeBSD 4.X, mfs(8)).
/usr/ La mayoría de utilidades y aplicaciones de usuario.
/usr/bin/ Aplicaciones comunes, herramientas de programación y otras aplicaciones.
/usr/include/ Ficheros «include» estándar de C.
/usr/lib/ Bibliotecas.
/usr/libdata/ Ficheros de datos con diversas funciones.
/usr/libexec/ Dæmons del sistema y utilidades del sistema (ejecutados por otros programas).
/usr/local/ Ejecutables locales, bibliotecas, etc. también se usa como destino por omisión de la infraestructura de ports de FreeBSD. Dentro de /usr/local debe seguirse el esquema general definido en hier(7) para /usr. Las excepciones son el directorio man, que está directamente bajo /usr/local en lugar de debajo de /usr/local/share, y la documentación de los ports está en share/doc/port.
/usr/obj/ Arbol destino dependiente de arquitectura fruto de la compilación del árbol /usr/src.
/usr/ports La colección de Ports de FreeBSD (opcional).
/usr/sbin/ Dæmons del sistema y utilidades del sistema (ejecutados por usuarios del sistema).
/usr/share/ Ficheros independientes de arquitectura.
/usr/src/ Ficheros fuente BSD y/o local.
/usr/X11R6/ Ejecutables de la distribución X11R6, bibliotecas, etc (opcional).
/var/ Ficheros multipropósito de log, temporales, en tránsito y de «spool». En ocasiones se monta en /var un sistema de ficheros basado en memoria.
/var/log/ Diversos ficheros de log del sistema.
/var/mail/ Ficheros de buzones de correo de usuarios.
/var/spool/ Directorios diversos del sistema de spool de impresora y correo.
/var/tmp/ Ficheros temporales. Suelen conservarse tras el Estos ficheros suelen conservarse tras el reinicio del sistema, a menos que /var sea un sistema de ficheros basado en memoria.
/var/yp Mapas NIS.



3.5. Organización de disco

La unidad más pequeña que FreeBSD utiliza para ubicar ficheros es el nombre de fichero. Los nombres de fichero son sensibles a las mayúsculas, lo que significa que readme.txt y README.TXT son dos ficheros distintos. FreeBSD no utiliza la extensión (.txt) de un fichero para determinar si es un programa, o un documento o alguna otra forma de datos.

Los ficheros se almacenan en directorios. Un directorio puede estar vacío, o puede contener cientos de ficheros. Un directorio también puede contener otros directorios, permitiéndole contruir una jerarquía de directorios dentro de otro. Esto hace mucho más fácil la organización de sus datos.

Para referirse a ficheros o directorios se usa el nombre de archivo o de directorio, seguido por una barra, /, seguido por cualquier otro nombre de directorio que sea necesario. Si tiene un directorio tal, el cual contiene el directorio cual, el cual contiene el fichero readme.txt, entonces el nombre completo o ruta al fichero es tal/cual/readme.txt.

Los directorios y ficheros se almacenan en un sistema de ficheros. Cada sistema de ficheros contiene un sólo directorio en el nivel más elevado, que es el directorio raíz de ese sistema de ficheros. Este directorio raíz puede contener otros directorios.

Lo visto hasta ahora probablemente sea similar a cualquier otro sistema operativo que pueda haber utilizado, pero hay unas cuantas diferencias; por ejemplo, MS-DOS utiliza \ para separar nombres de fichero y directorio, mientras que Mac OS® usa :.

FreeBSD no utiliza letras de unidades, u otro nombre de unidad en la ruta. Por tanto, no podrá escribir c:/tal/cual/readme.txt en FreeBSD.

En FreeBSD, en cambio, un sistema de ficheros recibe el nombre de sistema de ficheros raíz. El directorio raíz del sistema de ficheros raíz se representa como /. Cualquier otro sistema de ficheros, por tanto, se monta bajo el sistema de ficheros raíz. No importa cuántos discos tenga en su sistema FreeBSD, cada directorio parecerá ser parte del mismo disco.

Suponga que tiene tres sistemas de ficheros, denominados A, B y C. Cada sistema de ficheros tiene un directorio raíz, el cual contiene otros dos directorios, llamados A1, A2 (y de la misma manera B1, B2 y C1, C2).

Usaremos A como sistema de ficheros raíz. Si usara ls para ver el contenido de este directorio vería dos subdirectorios, A1 y A2. El árbol de directorios sería como este:

Un sistema de ficheros debe montarse en un directorio de otro sistema de ficheros. Ahora suponga que monta el sistema de ficheros B en el directorio A1. El directorio raíz de B reemplaza a A1, y los directorios en B aparecen de esta manera:

Cualquier fichero que esté en el directorio B1 o B2 puede encontrarse con la ruta /A1/B1 o /A1/B2 según sea necesario. Cualquier fichero que esté en /A1 ha desaparecido temporalmente. Aparecerán de nuevo si B se desmonta de A.

Si B se monta en A2 entonces el diagrama se vería así:

y las rutas serían /A2/B1 y /A2/B2 respectivamente.

Pueden montarse sistemas de ficheros uno sobre otro. Continuando con el ejemplo anterior, el sistema de ficheros C podría montarse en el directorio B1 en el sistema de ficheros B, lo que nos llevaría a esto:

O C podría montarse directamente en el sistema de ficheros A, bajo el directorio A1:

Si está familiarizado con MS-DOS esto es similar, aunque no idéntico, a utilizar join.

Esto no es algo a lo deba usted dedicar tiempo de forma habitual. Normalmente creará sistemas de ficheros al instalar FreeBSD y decidirá dónde montarlos; lo más habitual es que no los cambie de sitio a menos que agregue un disco nuevo.

Es perfectamente posible tener un sistema de ficheros raíz extenso y no necesitar crear otros. Este esquema tiene unos cuantos inconvenientes y una ventaja:

Ventajas de disponer de múltiples sistemas de ficheros

  • Si dispone de varios sistemas de ficheros puede optar por usar distintas opciones de montaje. Por ejemplo, gracias a una planificación cuidadosa, el sistema de ficheros raíz puede montarse como sólo-lectura, haciendo imposible borrar sin querer o editar un fichero crítico. Al mantener separados sistemas de ficheros en los que los usuarios pueden escribir, como /home, de otros sistemas de ficheros también le permite montar con la opción nosuid; dicha opción previene que los bits suid/guid en los ejecutables almacenados en el sistema de ficheros tengan efecto, mejorando en cierto modo la seguridad.

  • FreeBSD optimiza automáticamente el esquema de ficheros en un sistema de ficheros, dependiendo de cómo el sistema de ficheros esté siendo utilizado. Uno que contenga muchos ficheros pequeños tendrá una optimización distinta de uno que contenga menos ficheros y más grandes. Si sólo tiene un gran sistema de ficheros no hay manera de aplicar esta optimización.

  • Los sistemas de ficheros de FreeBSD son muy robustos en caso de sufrir un caída eléctrica. De todas maneras, un fallo eléctrico en un momento crítico puede dañar la estructura del sistema de ficheros. Si reparte sus datos en múltiples sistemas de ficheros hará que sea más probable que el sistema arranque después de uno de esos fallos, haciéndole además más fácil la tarea de restaurarlo desde un respaldo si fuera necesario.

Ventajas de un sólo sistema de ficheros

  • Los sistemas de ficheros son de un tamaño fijo. Si crea un sistema de ficheros cuando instala FreeBSD y le da un tamaño específico, tal vez descubra más tarde que necesita hacer la partición más grande. Esto no es fácil de realizar sin hacer una copia de seguridad, crear de nuevo el sistema de ficheros con el nuevo tamaño y entonces restaurar los datos respaldados.

    Importante: FreeBSD dispone de growfs(8), que permite incrementar el tamanño de un sistema de ficheros «al vuelo», eliminando esta limitación.

Los sistemas de ficheros están alojados en particiones. Este es un detalle muy importante, puesto que el término partición no significa aquí lo mismo que en otros entornos (por ejemplo, en MS-DOS) debido a la herencia UNIX de FreeBSD. Cada partición se identifica con una letra desde a hasta h. Cada partición puede contener solamente un sistema de ficheros, lo que significa que los sistemas de ficheros suelen definirse mediante su punto de montaje en la jerarquía del sistema de ficheros o por la letra de la partición en la que están alojados.

FreeBSD también utiliza espacio de disco como espacio de intercambio (swap). El espacio de intercambio le brinda a FreeBSD memoria virtual. Esto permite al su sistema comportarse como si tuviera más memoria de la que realmente tiene. Cuando a FreeBSD se le agota la memoria mueve algunos de los datos que no está utilizando en ese momento al espacio de intercambio, y los vuelve a poner donde estaban (desplazando alguna otra cosa) cuando los necesita.

Algunas particiones tienen ciertas convenciones heredadas.

Partición Representación
a Normalmente contiene el sistema de ficheros raíz
b Normalmente contiene el espacio de intercambio (swap)
c Suele tener el mismo tamaño de la «slice» que la encierra. Esto permite a las utilidades que necesitan trabajar en toda la «slice» entera (por ejemplo durante una búsqueda de bloques dañados) trabajar en la partición c. Normalmente no debería usted crear un sistema de ficheros en esta partición.
d La partición d solía tuvo un significado especial asociado pero ya no lo tiene.

Cada partición que contiene un sistema de ficheros se almacena en lo que FreeBSD llama una «slice». «slice» es en FreeBSD lo que en otros ámbitos se denomina partición; es un hecho que deriva de los orígenes de FreeBSD como ya sabemos basado en UNIX.

Los números de «slice» muestran el nombre de dispositivo, al que precede una s y un número que puede ser un 1 u otro número mayor. Por lo tanto «da0s1» es la primera slice en la primera unidad SCSI. Sólo puede haber cuatro «slice» físicas en un disco, pero puede haber «slice» lógicas dentro «slice» físicas del tipo apropiado. Estas «slice»extendidas se numeran a partir de 5, así que «ad0s5» es la primera «slice» extendida en el primer disco IDE. Estos dispositivos se usan en sistemas de ficheros que se preve que ocupen una slice.

Tanto las «slice» y las unidades físicas «peligrosamente dedicadas», como otras unidades contienen particiones, que se designan mediante letras desde la a hasta h. Esta letra se añade al nombre del dispositivo. Se verá mucho mejor mediante ejemplos: «da0a» es la partición a en la primera unidad da y es una de esas a las que llamamos «peligrosamente dedicada». «ad1s3e» es la quinta partición en la tercera slice de la segunda unidad de disco IDE.

Para terminar, cada disco en el sistema tiene también su designación. El nombre de disco comienza por un código que indica el tipo de disco, luego un número, que indica qué disco es. A diferencia de las «slice», la numeración de discos comienza desde 0. Puede las numeraciones más comunes en el Tabla 3-1.

Cuando se hace referencia a una partición, FreeBSD necesita que también se nombre la «slice» y el disco que contiene la partició. Esto se hace con el nombre de disco, s, el número «slice» y por último la letra de la partición. Tiene varios casos en el Ejemplo 3-1.

En el Ejemplo 3-2 muestra un modelo conceptual del esquema de un disco que debería ayudarle a aclarar las cosas.

Antes de instalar FreeBSD tendrá que configurar las «slice» de disco, después crear particiones dentro de las «slice» que vaya a usar en FreeBSD y luego crear un sistema de ficheros (o swap) en cada partición y luego decidir cuál va a ser el punto de montaje del sistema de ficheros.

Tabla 3-1. Códigos de dispositivos de disco

Código Significado
ad Disco ATAPI (IDE)
da Disco de acceso directo SCSI
acd CDROM ATAPI (IDE)
cd CDROM SCSI
fd Disquete (floppy)

Ejemplo 3-1. Ejemplo de nombres de disco, «slice» y partición

Nombre Significado
ad0s1a La primera partición (a) en la primera slice (s1) en el primer disco IDE (ad0).
da1s2e La quinta partición (e) en la segunda slice (s2) en el segundo disco SCSI (da1).

Ejemplo 3-2. Modelo conceptual de un disco

Este diagrama muestra cómo ve FreeBSD el primer disco IDE en el sistema. Se asume que el disco es de 4 GB, y contiene dos «slices» de 2 GB (particiones MS-DOS). La primera partición contiene un disco MS-DOS, C:, y la segunda partición contiene una instalación de FreeBSD. Esta instalación de ejemplo tiene tres particiones, y una partición swap.

Cada una de las tres particiones tiene un sistema de ficheros. La partición a se utilizará para el sistema de ficheros raíz, e para la jerarquía del directorio /var, y f para la jerarquía del directorio /usr.


3.6. Montaje y desmontaje de sistemas de ficheros

El sistema de ficheros se visualiza mejor como un árbol enraizado, tal y como esá, en /. /dev, /usr y todos los demás directorios en el directorio raíz son raamas, las cuales pueden tener sus propias ramas, como /usr/local y así sucesivamente.

Existen varias razones para albergar algunos de estos directorios en sistemas de ficheros separados. /var contiene los directorios log/, spool/ y varios tipos de ficheros temporales y pueden llegar a desbordarse. Agotar el espacio del sistema de ficheros raíz no es nada bueno desde cualquier punto de vista, así que separar /var de de / es algo que debería hacerse siempre que sea posible.

Otra razón para meter ciertos árboles de directorios en otros sistemas de ficheros es si van a estar albergados en discos físicos separados, o si son discos virtuales separados, como un montaje por NFS en el caso de unidades de CDROM.


3.6.1. El fichero fstab

Durante el proceso de arranque los sistemas de ficheros listados en /etc/fstab se montan automáticamente (a menos que estén listados con la opción noauto).

/etc/fstab contiene una lista de líneas con el siguiente formato:

dispositivo       /punto-de-montaje punto de montaje     opciones      dumpfreq     passno
dispositivo

Un nombre de dispositivo (debe existir).

punto-de-montaje

Un directorio (que debe existir) en el que montar el sistema de ficheros.

tipo de sistema ficheros

El tipo de sistema de ficheros es un parámetro que interpretará mount(8). El sistema de ficheros por omisión de FreeBSD es ufs.

opciones

Ya sea rw para sistemas de ficheros de lectura-escritura, o ro para sistemas de ficheros de sólo lectura, seguido de cualquier otra opción que sea necesaria. Una opción muy habitual es noauto, que se suele usar en sistemas de ficheros que no se deben montar durante la secuencia de arranque. Tiene otras opciones en la página de manual de mount(8).

dumpfreq

dump(8) la usa para determinar qué sistema de ficheros requieren volcado. Si el campo no está declarado se asume un valor de cero.

passno

Determina el orden en el cual los sistemas de ficheros deben revisarse. Los sistemas de ficheros que hayan de saltarse deben tener su passno a cero. El sistema de ficheros raíz (que obviamente debe ser revisado antes que cualquier otro) debe tener su passno puesto a uno, y los demás sistemas de ficheros deben tener valores mayores que uno. Si más de un sistema de ficheros tiene el mismo passno fsck(8) tratará de revisarlos en paralelo en caso de ser posible.

Consulte la página de manual de fstab(5) para mayor información sobre el formato del fichero /etc/fstab y las opciones que contiene.


3.6.2. La orden mount

mount(8) es al fin y al cabo quien monta los sistemas de ficheros.

En su forma más básica se usa lo siguiente:

# mount dispositivo punto-de-montaje

Existe una gran cantidad de opciones (las encontrará todas en mount(8)) pero las más comunes son:

Opciones de montaje

-a

Montar todos los sistemas de ficheros que aparezcan en /etc/fstab, excepto aquellos marcados como «noauto», excluidos por el parámetro -t o aquellos que ya estén montados.

-d

Realizar todo excepto la llamada real de montaje del sistema. Esta opción es muy útil en caso de problemas si se combina con la opción -v para determinar qué es lo que mount(8) está haciendo realmente.

-f

Forzar el montaje de un sistema de ficheros inestable (por ejemplo uno que da errores tras un reinicio súbito, algo que es bastante peligroso), o forzar la revocación de accesos de escritura cuando se cambia el estátus de un sistema de archivos de lectura-escritura a só lectura.

-r

Montar el sistema de ficheros como sólo lectura. Esto es idéntico a utilizar el argumento ro (rdonly para versiones anteriores a FreeBSD 5.2) en la opción -o.

-t tipo de sistema de ficheros

Montar un sistema de ficheros dado con el tipo de sistema de ficheros, o montar solamente sistemas de ficheros del tipo dado si se proporciona la opción -a.

«ufs» es el sistema de ficheros por omisión.

-u

Actualizar puntos de montaje en el sistema de ficheros.

-v

Mostrar mayor información.

-w

Montar el sistema de ficheros como lectura-escritura.

La opción -o toma una lista las siguientes opciones separada por comas:

nodev

No interpretar dispositivos especiales en el sistema ficheros. Es una opción de seguridad que puede ser muy útil.

noexec

No permitir la ejecución de binarios en este sistema de ficheros. Esta también es una opción de seguridad útil.

nosuid

No interpretar bits setuid o setgid en el sistema de ficheros. Esta también es una opción de seguridad útil.


3.6.3. La orden umount

umount(8) toma como parámetro un punto de montaje, un nombre de dispositivo, o la opción -a o -A.

Todas las formas toman -f para forzar el desmontaje y -v para mostrar más información. Tenga muy en cuenta que usar -f no suele ser una forma recomendable de proceder. Desmontar a la fuerza los sistemas de ficheros puede acarrear el congelar la máquina o dañar los datos en el sistema de ficheros.

-a y -A se usan para desmontar todos los sistemas de ficheros montados, con la ventaja de poder elegir el tipo de sistema de ficheros que se use tras -t. De todas maneras -A no trata de desmontar el sistema de ficheros raíz.


3.7. Procesos

FreeBSD es un sistema operativo multitarea. Esto significa que parece como si más de un programa se estuviera ejecutando al mismo tiempo. Cada programa uno de esos programas que se está ejecutando en un momento dado se denomina proceso. Cada orden que ejecuta iniciará al menos un proceso nuevo, y hay muchos procesos que se están que se están ejecutando en todo momento, manteniendo el sistema en funcionamiento.

Cada proceso tiene un identificador individual consistente en un número llamado ID del proceso, o PID, y al igual que sucede con los ficheros, cada proceso tiene un propietario y un grupo. La información de propietario y grupo se usa para determinar qué ficheros y dispositivos puede abrir el proceso mediante los permisos de fichero explicados anteriormente. La mayoría de los procesos también tiene un proceso padre. El proceso padre es el proceso que los inició. Por ejemplo, si está tecleando órdenes en la shell, la shell es un proceso, y cualquier orden que usted ejecute también lo será. De este modo cada proceso que ejecute tendrá como proceso padre a su shell. La excepción es un proceso especial llamado init(8). init es siempre el primer proceso, así que su PID siempre es 1. El kernel arranca automáticamente init en el arranque de FreeBSD.

Hay dos órdenes particularmente útiles para ver los procesos en el sistema, ps(1) y top(1). ps se usa para mostrar una lista estática de los procesos que se ejecutan en el sistema en es momento, y puede mostrar sus PID, cuánta memoria está usando, la línea de órdenes con la que fueron iniciados y muchas más cosas. top despliega todos los procesos que se están ejecutando y actualiza la pantalla cada pocos segundos para que pueda ver lo que está haciendo su sistema.

Por omisión ps solo le muestra las órdenes que están ejecutando y que sean propiedad de su usuario. Por ejemplo:

% ps
  PID  TT  STAT      TIME COMMAND
  298  p0  Ss     0:01.10 tcsh
 7078  p0  S      2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393  p0  I      0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
48630  p0  S      2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi
48730  p0  IW     0:00.00 (dns helper) (navigator-linux-)
72210  p0  R+     0:00.00 ps
  390  p1  Is     0:01.14 tcsh
 7059  p2  Is+    1:36.18 /usr/local/bin/mutt -y
 6688  p3  IWs    0:00.00 tcsh
10735  p4  IWs    0:00.00 tcsh
20256  p5  IWs    0:00.00 tcsh
  262  v0  IWs    0:00.00 -tcsh (tcsh)
  270  v0  IW+    0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
  280  v0  IW+    0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
  284  v0  IW     0:00.00 /bin/sh /home/nik/.xinitrc
  285  v0  S      0:38.45 /usr/X11R6/bin/sawfish

Como puede ver en este ejemplo la salida de ps(1) está organizada en columnas. PID es el ID de proceso anteriormente expuesto. Los PIDs se asignan a partir del 1 y hasta 99999, y vuelven a comenzar desde el 1 otra cuando se terminan los números. La columna TT muestra la tty en la que el programa se está ejecutando; podemos ignorarla tranquilamente por el momento. STAT muestra el estado del programa; de momento también podemos ignorarlo. TIME es la cantidad de tiempo que el programa ha se ha estado ejecutando en la CPU (generalmente no es el tiempo transcurrido desde que se inició el programa, ya que la mayoría de los programas pasan mucho tiempo esperando antes de que necesiten gastar tiempo en la CPU. Finalmente, COMMAND es la línea de órdenes que se empleó para ejecutar el programa.

ps(1) admite muchas opciones sobre la información que se desea ver. Uno de los conjuntos más útiles es auxww. a muestra información acerca de todos los procesos ejecutándose, no solamente los suyos. u despliega el nombre de usuario del propietario del proceso, así como el uso de memoria. x despliega información acerca de los procesos dæmon y ww hace que ps(1) despliegue la línea de órdenes completa, en lugar de truncarla cuando es demasiado larga para caber en la pantalla.

La salida de top(1) es similar. Veamos un ejemplo:

% top
last pid: 72257;  load averages:  0.13,  0.09,  0.03    up 0+13:38:33  22:39:10
47 processes:  1 running, 46 sleeping
CPU states: 12.6% user,  0.0% nice,  7.8% system,  0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse

  PID USERNAME PRI NICE  SIZE    RES STATE    TIME   WCPU    CPU COMMAND
72257 nik       28   0  1960K  1044K RUN      0:00 14.86%  1.42% top
 7078 nik        2   0 15280K 10960K select   2:54  0.88%  0.88% xemacs-21.1.14
  281 nik        2   0 18636K  7112K select   5:36  0.73%  0.73% XF86_SVGA
  296 nik        2   0  3240K  1644K select   0:12  0.05%  0.05% xterm
48630 nik        2   0 29816K  9148K select   3:18  0.00%  0.00% navigator-linu
  175 root       2   0   924K   252K select   1:41  0.00%  0.00% syslogd
 7059 nik        2   0  7260K  4644K poll     1:38  0.00%  0.00% mutt
...

La salida está dividida en dos secciones. La cabecera (las primeras cinco líneas) muestra el PID del último proceso en ejecutarse, la carga promedio del sistema (una medida de la carga del sistema), el «uptime» del sistema (tiempo desde el último reinicio) y la hora actual. Las otras cifras en la cabecera se relacionan con cuántos procesos hay en ejecución en el sistema (47 en este caso), cuánta memoria y espacio de intercambio (swap) está en uso, y cuánto tiempo está el sistema en diferentes estados de CPU.

Más abajo hay una serie de columnas con información similar a la salida de ps(1). Igual que antes, puede usted ver el PID, el nombre de usuario, la cantidad de tiempo de CPU en uso y la orden que se ejecutó. top(1) también mostrará por omisión la cantidad de espacio de memoria que emplea cada proceso. Está dividido en dos columnas, una para el tamaño total y otra para el tamaño residente (el tamaño total es cuánta memoria ha necesitado la aplicación y el tamaño residente es cuánta se está usando en ese momento concreto). En este ejemplo puede verse que Netscape® requerido casi 30 MB de RAM, pero actualmente solo está usando 9 MB.

top(1) actualiza automáticamente el listado cada dos segundos, pero este lapso puede cambiarse mediante la opción s.


3.8. Dæmons, señales y cómo matar procesos

cuando ejecuta un editor es fácil controlarlo, decirle que cargue ficheros y demás. Puede hacerse porque el editor permite ese control y porque el editor depende de una terminal. Algunos programas no están diseñados para ejecutarse entradas continuas por parte del usuario, así que se desconectan de la terminal a la primera oportunidad. Por ejemplo, un servidor web pasa todo el dia respondiendo peticiones web y normalmente no necesita que usted le haga caso. Los programas que transportan correo electrónico de un sitio a otro son otro ejemplo de esta clase de aplicación.

Llamamos a estos programas dæmons. Los Dæmons eran personajes de la mitología griega; no eran ni buenos ni malos, eran pequeños espíritus sirvientes que, en gran medida, hacían cosas útiles por la humanidad. Algo muy parecido a cómo los servidores web y los servidores de correo hacen hoy día tantas cosas útiles para nosotros. Por eso, desde hace mucho tiempo la mascota de BSD es ese dæmon de aspecto tan ufano con su tridente y su cómodo calzado deportivo.

Hay una norma según la cual se da nombre a los programas que suelen ejecutarse como dæmons con una «d» final. BIND es el dæmon de nombres de Berkeley (y el programa que en realidad se ejecuta se llama named); el servidor web Apache se llama httpd, el dæmon de «spool» de impresora de línea es lpd y así sucesivamente. Se trata de un acuerdo, no una ley férrea; por ejemplo el dæmon principal de correo de Sendmail se llama sendmail, y no maild, como podría suponerse visto lo precedente.

Algunas veces necesitará comunicarse con un dæmon. Estas comunicaciones se denominan señales; es posible comunicarse con un dæmon (o con cualquier otro proceso ejecutándose) mandándole una señal. Existen diversos tipos de señales diferentes que puede mandar: algunas tienen un significado especial, otras son interpretadas por la aplicación y la documentación de la aplicación le dirá cómo interpreta la señal esa aplicación). Solamente puede enviar una señal a un del que sea usted propietario. Si manda una señal a un proceso de otro usuario con kill(1) o kill(2) verá un mensaje del sistema en el que se le comunica que no tiene permiso para hacer tal cosa. La excepción a esto es el usuario root, que puede mandar señales a los procesos de cualquier usuario del sistema.

FreeBSD también enviará señales de aplicación en determinados casos. Si una aplicación está mal escrita y trata de acceder a memoria a la que no está previsto que acceda FreeBSD manda al proceso la señal Violación de segmento (SIGSEGV). Si una aplicación ha utilizado la llamada de sistema alarm(3) para ser avisada después de que un periodo de tiempo haya transcurrido se le mandará la señal de alarma (SIGALRM), y así sucesivamente.

Hay dos señales que pueden usarse para detener un proceso, SIGTERM y SIGKILL. SIGTERM es la manera amable de matar un proceso; el proceso puede recibir la señal, darse cuenta que usted quiere que se apague, cerrar cualquier fichero de log que pueda tener abierto y generalmente terminar cualquier tarea que esté realizando en ese momento antes de apagarse. En algunos casos un proceso puede incluso ignorar SIGTERM si se encuentra inmerso en una tarea que no puede ser interrumpida.

Por el contrario, un proceso no puede ignorar una señal

SIGKILL. Esta es la señal «No me importa lo que estás haciendo, detente ahora mismo». Si manda un SIGKILL a un proceso FreeBSD detendrá ese proceso inmediatamente.[4].

Otras señales que puede usar: SIGHUP, SIGUSR1 y SIGUSR2. Son señales de propósito general, y aplicaciones diferentes pueden hacer cosas diferentes cuando se utilicen.

Suponga que ha cambiado el fichero de configuración de su servidor web; es un buen momento para decirle al servidor web que lea y aplique la configuración. Podría detener y reiniciar httpd, pero esto implicaría un período breve de suspensión del servicio de su servidor web, lo cual puede no ser asumible. La mayoría de los dæmons fueron creados pensando en que fueran capaces de responder a la señal SIGHUP releyendo su fichero de configuración. En lugar de matar y reiniciar httpd le podría mandar la señal SIGHUP. Dado que no hay una manera estándar para responder a estas señales, diferentes dæmons tendrán diferente comportamiento, así que asegúrese de leer la documentación del dæmon en cuestión.

Las señales se envian mediante kill(1), como puede verse en el siguiente ejemplo.

Envío de una señal a un proceso

Este ejemplo muestra como enviar una señal a inetd(8). El fichero de configuración de inetd es /etc/inetd.conf e inetd releerá dicho fichero de configuración cuando se le envíe un SIGHUP.

  1. Identifique el ID de proceso del proceso al que quiere enviarle la señal mediante ps(1) y grep(1). grep(1) se usa para buscar cadenas de texto de su elección en la salida estándar. Puede ejecutarse como un usuario normal, mientras que inetd(8) se ejecuta como root, así que debe pasarle los parámetros ax a ps(1).

    % ps -ax | grep inetd
      198  ??  IWs    0:00.00 inetd -wW
    

    Vemos que el PID de inetd(8) es 198. En algunos casos grep inetd también puede aparecer en esta salida. Esto se debe a la manera en que ps(1) tiene que encontrar la lista de procesos ejecutándose.

  2. Utilice kill(1) para enviar la señal. Debido a que inetd(8) está siendo ejecutado po root tendrá que usar primero su(1) para volverse root.

    % su
    Password:
    # /bin/kill -s HUP 198
    

    Del mismo modo que la mayoría de órdenes UNIX kill(1) no imprimirá ninguna salida si ha funcionado bien. Si envía una señal a un proceso del que no es el propietario verá lo siguiente: “kill: PID: Operation not permitted”. Si no teclea bien el PID puede enviar la señal a un proceso equivocado, lo cual puede ser malo, o si tiene suerte, habrá enviado la señal a un proceso que no está en uso y verá el sistema le dir´ “kill: PID: No such process”.

    ¿Por qué utilizar /bin/kill?: Muchas shells incorporan su propio kill; esto es, el shell mandará la señal directamente, en lugar de ejecutar /bin/kill. Esto puede ser útil pero las diferentes shells tienen diferentes sintaxis para especificar el nombre de la señal que envían. En lugar de tratar de aprederse todas ellas, es más fácil simplemente usar /bin/kill ... sea la que sea la shell que prefiera usar.

El envío de otras señales es muy similar; sustituya TERM o KILL en la línea de órdenes según sea necesario.

Importante: Matar procesos aleatorios en el sistema es una mala idea. En particular, init(8), ID de proceso 1, es muy especial. Ejecutar /bin/kill -s KILL 1 es una manera rápida de apagar su sistema. Siempre revise dos veces los argumentos con los que ejecuta kill(1) antes de pulsar Intro.


3.9. Shells

En FreeBSD gran parte del trabajo diario se hace en una interfaz de línea de órdenes llamada shell. El trabajo principal de la shell es ir recibiendo órdenes mediante un canal de entrada y ejecutarlos. Muchas shells también tienen funciones integradas para ayudar ayudar con las tareas diarias como manipulación de ficheros, gestión de archivos con expresiones regulares, edición en la propia línea de órdenes, macros de órdenes y variables de entorno. FreeBSD incluye diversas shells, como sh, el shell Bourne y tcsh, el shell C mejorado. Hay muchas otras shells disponibles en la colección de ports de FreeBSD, como zsh y bash.

¿Qué shell usar? es una cuestión de gustos. Si va a programar en C puede preferir usar una shell tipo C, como tcsh. Si viene del mundo Linux o si es nuevo en la interfaz de línea de órdenes de UNIX puede probar con bash. Tenga en cuenta que cada shell posee unas propiedades únicas que pueden o no funcionar con su entorno de trabajo preferido y que puede usted elegir qué shell usar.

Una de las propiedades comunes de las shell es que completan los nombres de fichero. Una vez que ha introducido las primeras letras de una orden o del nombre de un fichero, se puede hacer que la shell complete automáticamente el resto de la orden o nombre de fichero pulsando la tecla Tab. Veamos un ejemplo. Suponga que tiene dos ficheros llamados talcual y tal.cual. Usted quiere borrar tal.cual. Lo que habría que teclear es: rm ta[tabulador].[tabulador].

La shell mostraría en pantalla rm ta[BIP].cual.

El [BIP] es la campana de la consola, es decir, la shell está diciéndome que no pudo completar totalmente el nombre de fichero porque hay más de una coincidencia. Tanto talcual como tal.cual comienzan por ta, pero solo se pudo completar hasta tal. Si se teclea ., y de nuevo tabulador la shell es capaz de añadir el resto del nombre de fichero.

Otra función de la shell son las variables de entorno. Las variables de entorno son parejas de valores clave almacenados en el espacio de entorno del shell. Este espacio puede ser leído por cualquier programa invocado por la shell y por lo tanto contiene mucha configuración de programas. Esta es una lista de las variables de entorno más comunes y su significado:

Variable Descripción
USER Nombre de usuario en el sistema.
PATH Lista de directorios, separados por punto y coma, en los que se buscan ejecutables.
DISPLAY Nombre de red de la pantalla X11 a la que conectarse, si está disponible.
SHELL La shell actual.
TERM El nombre de la terminal del usuario. Se usa para determinar las características de la terminal.
TERMCAP Base de datos donde encontrar los códigos de escape necesarios para realizar diferentes funciones en la terminal.
OSTYPE Tipo de sistema operativo. Por ejemplo, FreeBSD.
MACHTYPE Arquitectura de CPU en la que se está ejecutando el sistema.
EDITOR El editor de texto preferido por el usuario.
PAGER El paginador de texto preferido por el usuario.
MANPATH Lista de directorios separados por punto y coma en los que se buscan páginas de manual.

Establecer una variable de entorno difiere ligeramente de shell a shell. Por ejemplo, en las shells al estilo C como tcsh y csh, se usa setenv para establecer las variables de entorno. Bajo shells Bourne como sh y bash, se usa export para establecer las variables de entorno actuales. Por ejemplo, para establecer o modificar la variable de entorno EDITOR (bajo csh o tcsh) la siguiente orden establece EDITOR como /usr/local/bin/emacs:

% setenv EDITOR /usr/local/bin/emacs

Bajo shells Bourne:

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

También se puede hacer que la mayoría de las shells muestren el contenido de una variable de entorno situando el carácter $ delante del nombre de la variable en la línea de órdenes. Por ejemplo, echo $TERM mostrará cualquiera que sea el valor que haya establecido para $TERM, porque la shell expande el valor de $TERM y se lo pasa al programa echo.

Las shells manejan muchos caracteres especiales, llamados metacaracteres, como representaciones especiales de datos. El más común es el caracter *, que representa cualquier número de caracteres en un nombre de fichero. Estos metacaracteres especiales se pueden usar para la expansión de nombres de fichero. Por ejemplo, teclear echo * es casi lo mismo que introducir ls porque la shell toma todos los ficheros que coinciden con * y se los pone en la línea de órdenes para que echo los vea.

Para evitar que la shell interprete estos caracteres especiales pueden escamotearse anteponiéndoles una contrabarra (\). echo $TERM imprime el nombre de terminal que esté usando. echo \$TERM imprime $TERM, literalmente.


3.9.1. Cómo cambiar su shell

La manera más fácil de cambiar de shell es mediante chsh. chsh le colocará dentro del editor que esté configurado en la variable de entorno EDITOR; si no la ha modificado, el sistema ejecutará vi, el editor por omisión. Cambie la línea «Shell:» según sus gustos.

También se le puede suministrar a chsh la opción -s; ésto establecerá la shell sin necesidad de entrar en el editor de texto. Si por ejemplo quiere que bash sea su shell por omisión puede configurarlo del siguiente modo:

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

Ejecutar chsh sin parámetros y editar la shell desde ahí también funciona.

Nota: La shell que se desee usar debe estar incluida en /etc/shells. Si se ha instalado una shell desde la colección de ports esto deberí estar hecho automáticamente. Si ha instalado la shell manualmente, tendrá usted que realizar el cambio oportuno en /etc/shells.

Por ejemplo, si instaló manualmente bash y lo ubicó en /usr/local/bin debería hacer lo siguiente:

# echo "/usr/local/bin/bash" >> /etc/shells

Hecho esto vuelva a ejecutar chsh.


3.10. Editores de texto

Gran parte de la configuración de FreeBSD se realiza modificando ficheros de texto, así que le conviene familiarizarse con alguno de ellos. FreeBSD viene con unos cuantos como parte del sistema base y encontrará muchos más en la colección de ports.

El editor de textos más sencillo y fácil de aprender es uno llamado ee, cuyo nombre proviene del inglés «easy editor» (editor fácil). Para iniciar ee se debe teclear en la línea de órdenes ee nombre-de-fichero, donde nombre-de-fichero es el nombre del fichero que se quiere editar. Por ejemplo, para editar /etc/rc.conf teclée ee /etc/rc.conf. Una vez dentro de ee todas las órdenes para manipular las funciones del editor están listadas en la parte superior de la pantalla. El caracter ^ representa la tecla Ctrl del teclado, por lo tanto ^e significa la combinación de teclas Ctrl+e. Para salir de ee pulse la tecla Esc y elija abandonar («leave») el editor. El editor preguntará entonces si quiere conservar los cambios si el fichero hubiera sido modificado.

FreeBSD viene también con editores de texto mucho más potentes, como vi, como parte del sistema base, mientras que otros editores, como Emacs y vim son parte de la colección de ports de FreeBSD (editors/emacs y editors/vim). Estos editores son muchísimo más poderosos, pero tienen la desventaja de ser un poco más complicados de aprender a manejar. De cualquier manera si planea hacer mucho trabajo de edición de texto, aprender a usar un editor de texto más poderoso como vim o Emacs le ahorrará muchísimo más tiempo a la larga.


3.11. Dispositivos y nodos de dispositivos

Dispositivo es un término utilizado la mayoría de las veces para actividades relacionadas con hardware del sistema, como discos, impresoras, tarjetas gráficas y teclados. Cuando FreeBSD arranca, la mayoría de lo que FreeBSD despliega son dispositivos en el momento de ser detectados. Si lo desea, puede volver a ver todos los mensajes que el sistema emite durante el arranque consultando /var/run/dmesg.boot.

Por ejemplo, acd0 es la primera unidad CDROM IDE, mientras que kbd0 representa el teclado.

En un sistema operativo UNIX debe accederse a la mayoría de estos dispositivos a través de ficheros especiales llamados nodos de dispositivo, que se encuentran en el directorio /dev.


3.11.1. Creación de nodos de dispositivo

Cuando agregue un nuevo dispositivo a su sistema, o compile soporte para dispositivos adicionales, puede que necesite crear uno o más nodos de dispositivo.


3.11.1.1. DEVFS Dispositivo de sistema de ficheros (DEVice File System)

El dispositivo de sistema de ficheros, o DEVFS, ofrece acceso a dispositivos del espacio de nombres del kernel en el espacio de nombres del sistema de ficheros global. En lugar de tener que crear y modificar nodos de dispositivo, DEVFS se encarga del mantenimiento dinámico de este sistema de fichero.

Consulte devfs(5) si quiere más información.


3.12. Formatos binarios

Para poder entender por qué FreeBSD utiliza el formato elf(5) primero debe saber ciertas cosas sobre los tres formatos de ejecutables «dominantes» en UNIX:

  • a.out(5)

    El formato objeto de UNIX más antiguo y «clásico». Utiliza una cabecera corta y compacta con un número mágico al inicio que se usa frecuentemente para identificar el formato (vea a.out(5) para más información). Contiene tres segmentos cargados: .text, .data, y .bss además de una tabla de símbolos y una tabla de cadena («strings»).

  • COFF

    El formato objeto de SVR3. La cabecera consiste en una tabla de sección, para que pueda tener más contenido además de las secciones .text, .data, y .bss.

  • elf(5)

    Es el sucesor de COFF; dispone de secciones múltiples y valores posibles de 32-bits o 64-bits. Una gran desventaja: ELF fué también diseñado asumiendo que solamente existiría una ABI por cada arquitectura de sistema. Esa suposición es en realidad bastante incorrecta y ni siquiera en el mundo comercial SYSV (el cual tiene al menos tres ABIs: SVR4, Solaris y SCO) se puede dar por buena.

    FreeBSD trata de solucionar este problema de alguna manera ofreciendo una herramienta para marcar un ejecutable ELF conocido con información acerca de la ABI con la que funciona. Si quiere más información consulte la página de manual de brandelf(1).

FreeBSD viene del campo «clásico» y ha utilizado el formato a.out(5), una tecnología usada y probada en muchas de muchas generaciones de versiones de BSD hasta el inicio de la rama 3.X. Aunque era posible compilar y ejecutar binarios nativos ELF (y kernels) en un sistema FreeBSD desde algún tiempo antes de esto, FreeBSD al principio se mantuvo «contra corriente» y no cambió a ELF como formato por defecto. ¿Por qué? Bueno, cuando el mundo Linux efectuó su dolorosa transición a ELF no fué tanto por huir del formato a.out como por su inflexible mecanismo de bibliotecas compartidas basado en tablas de saltos, que hacía igual de difícil la construcción de bibliotecas compartidas tanto para los desarrolladores como para los proveedores. Ya que las herramientas ELF disponibles ofrecían una solución al problema de las bibliotecas compartidas y eran vistas por mucha gente como «la manera de avanzar», el costo de migración fué aceptado como necesario y se realizó la transición. El mecanismo de bibliotecas compartidas de FreeBSD está diseñado de manera más cercana al estilo del sistema de bibliotecas compartidas de SunOS™ de Sun y, como tal, es muy sencillo de utilizar.

Entonces, ¿por qué existen tantos formatos diferentes?

En un tiempo muy, muy lejano, existía hardware simple. Este hardware tan simple soportaba un sistema pequeño, simple. a.out era idóneo para el trabajo de representar binarios en este sistema tan simple (un PDP-11). A medida que la gente portaba UNIX desde este sistema simple, retuvieron el formato a.out debido a que era suficiente para los primeros portes de UNIX a arquitecturas como 68k de Motorola, VAXen, etc.

Entonces algún brillante ingeniero de hardware decidió que si podía forzar al software a hacer algunos trucos sucios podría sortear ciertos obstáculos del diseño y permitir al núcleo de su CPU correr más rápidamente. Aunque estaba hecho para trabajar con este nuevo tipo de hardware (conocido entonces como RISC), a.out no estaba bien adaptado para este hardware, así que varios formatos fueron desarrollados para obtener un rendimiento mayor de este hardware que el podía extraerse del limitado y simple formato a.out. Así fué cómo COFF, ECOFF y algunos otros formatos más extraños fueron inventados y sus limitaciones exploradas hasta que se fué llegando a la elección de ELF.

Además, el tamaño de los programas estaba volviendose gigante y los discos (y la memoria física) eran relativamente pequeños, así que el concepto de una biblioteca compartida nació. El sistema VM también se volvió más sofisticado. A pesar de que todos estos avances se hicieron utilizando el formato a.out, su utilidad se iba reduciendo paulatinamente con cada nueva opción. Además, la gente quería cargar cosas dinámicamente en el momento de ejecución, o descartar partes de su programa después de que el código de inicio se ejecutara para ahorrar memoria principal y espacio de swap. Al volverse más sofisticados los lenguajes, la gente empezó a ver la necesidad de introducir código antes del inicio del programa de forma automática. Se hicieron muchos hacks al formato a.out para permitir que todas estas cosas sucedieran y lo cierto es que por un tiempo funcionaron. Pero a.out no estaba para solucionar todos estos problemas sin incrementar la carga y complejidad del código. Aunque ELF resolvía muchos de estos problemas, en ese momento hubiera sido terrible dejar de lado un sistema que funcionaba, así que ELF tuvo que esperar hasta que fué más doloroso permanecer con a.out que migrar a ELF.

De todas maneras, con el paso del tiempo las herramientas de compilación de las que FreeBSD derivó las suyas (en especial el ensamblador y el cargador) evolucionaron en dos árboles paralelos. El árbol FreeBSD FreeBSD añadió bibliotecas compartidas y corrigió algunos errores. La gente de GNU (que fueron quienes escribieron estos programas) los reescribió y añadieron una forma más simple de disponer de compiladores cruzados («cross compilers»), el uso de diferentes formatos, etc. Aunque mucha gente quería compiladores cruzados con FreeBSD como «blanco» no hubo suerte, porque los fuentes que que FreeBSD tenía para as y ld no estaban listos para cumplir esa tarea. La nueva cadena de herramientas GNU (binutils) soporta compilación cruzada, ELF, bibliotecas compartidas, extensiones C++, etc. Además, muchos proveedores están liberando binarios ELF y es algo muy bueno que FreeBSD los pueda ejecutar.

ELF es más expresivo que a.out y permite un sistema base más extensible. Las herramientas ELF están mejor mantenidas y ofrecen soporte de compilación cruzada, muy importante para mucha gente. ELF puede ser un poco más lento que a.out, pero tratar de medirlo puede ser difícil. También existen numerosos detalles que son diferentes entre los dos en cómo gestionan páginas, cómo gestionan código de inicio, etc. Ninguna es muy importante, pero las diferencias existen. Con el tiempo, el soporte para a.out será eliminado del kernel GENERIC y es muy posible que se elimine del kernel la posibilidad de ejecutar tales binarios una vez que la necesidad de usar programas a.out haya pasado.


3.13. Más información

3.13.1. Páginas de manual

La documentación más exhaustiva de FreeBSD está en las páginas de manual. Casi todos los programas del sistema vienen con un breve manual de referencia explicando el funcionamiento básico y sus diferentes argumentos. Estos manuales pueden revisarse mediante man. El uso de man es simple:

% man orden

orden es el nombre de la orden sobre la que que desea saber más. Por ejemplo, para más información sobre ls escriba:

% man ls

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

  1. Comandos de usuario.

  2. Llamadas al sistema y números de error.

  3. Funciones en las bibliotecas de C.

  4. Controladores de dispositivo.

  5. Formatos de fichero.

  6. Juegos y demás pasatiempos.

  7. Información sobre temas diversos.

  8. Comandos relacionados con el mantenimiento del sistema y su funcionamiento.

  9. Desarrolladores del Kernel.

En algunos casos, el mismo tema puede aparecer en más de una sección del manual en línea. Por ejemplo, existe una orden de usuario chmod y una llamada del sistema chmod(). En este caso se le puede decir a man cuál desea consultar especificando la sección:

% man 1 chmod

Esto desplegará la página de manual de la orden de usuario chmod. Las referencias a una sección concreta del manual en línea tradicionalmente suelen colocarse entre paréntesis en la documentación escrita, por lo tanto chmod(1) se refiere a la orden de usuario chmod y chmod(2) se refiere a la llamada de sistema.

Esto está muy bien si se conoce el nombre del programa y simplemente se quiere saber como usarlo. Pero ¿y si no puede recordar el nombre de la orden? Se puede usar man para que realice una búsqueda mediante palabras clave en las descripciones de programas utilizando el argumento -k:

% man -k mail

Dicha orden mostrará una lista de órdenes que contengan la palabra clave «mail» en sus descripciones. Esto es funcionalmente equivalente a usar apropos.

Así que, ¿está viendo todos esos programas tan atractivos en /usr/bin pero no tiene ni la menor idea de lo que la mayoría de ellos hace? Haga lo siguiente:

% cd /usr/bin
% man -f *

o

% cd /usr/bin
% whatis *

que hace exactamente lo mismo.


3.13.2. Ficheros de información GNU: info

FreeBSD incluye muchas aplicaciones y utilidades producidas por la FSF (Free Software Foundation). Además de con las correspondientes páginas de manual, estos programas vienen con documentos de hipertexto más detallados, llamados ficheros info, los cuales pueden ser visualizados con info, o si tiene instalado emacs, con el modo info de emacs.

Si quiere utilizar la orden info(1) teclée:

% info

Para una breve introducción teclée h. Cuando necesite una referencia rápida, teclée ?.


Capítulo 4. Instalación de aplicaciones: «packages» y ports

4.1. Sinopsis

FreeBSD viene con 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 «packages»(paquetes) binarios. Cualquiera de los dos sistemas puede usarse para instalar las versiones más recientes, de forma local o directamente desde la red.

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

  • Cómo instalar packages binarios de software de terceros.

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

  • Cómo eliminar packages o ports instalados previamente.

  • Cómo sobreescribir los valores por omisión que utiliza la colección de ports.

  • Cómo encontrar la aplicación adecuada.

  • Cómo actualizar aplicaciones.


4.2. Aproximación a la instalación de software

Si 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. Desempaquetar el software de su formato de distribución (normalmente en un «tarball» comprimido con compress(1), gzip(1) o bzip2(1)).

  3. Consultar 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 se distribuye como fuente, compilarlo. Esto puede requerir que editemos el fichero Makefile o que ejecutemos el «script» configure, entre otras cosas.

  5. Instalar y probar el software.

Y esto solamente si todo marcha bien. Si está instalando un software que no ha sido portado específicamente para FreeBSD, puede que sea necesario editar el código para que funcione correctamente.

Si lo desea puede continuar instalando software de la forma «tradicional» en FreeBSD, aunque FreeBSD dispone de dos tecnologís que le pueden ahorrar gran cantidad de tiempo y esfuerzo: los packages y los ports. En el momento de escribir esto existen más de 19,000 aplicaciones de terceros.

En cualquier aplicación el paquete de FreeBSD es un solo fichero que tiene que descargar. Los paquetes contienen copia de los programas binarios precompilados de la aplicación, así como cualquier fichero de configuración o documentación. Los paquetes descargados se pueden manipular con las herramientas de gestión de paquetes de FreeBSD: pkg_add(1), pkg_delete(1), pkg_info(1), etc. Instalar una aplicación nueva puede realizarse con una sola orden.

Un port de FreeBSD es una colección de ficheros diseñada para automatizar el proceso de compilación desde el código fuente.

Recuerde que existen ciertos pasos que deberá llevar a cabo para compilar un programa por usted mismo (descargar, desempaquetar, parchear, compilar e instalar). Los ficheros que conforman un port permiten que el sistema se encargue de todo esto. Usted ejecuta un conjunto simple de órdenes y el código fuente se descarga, desempaqueta, parchea, compila e instala.

De hecho el sistema de ports también se puede usar para crear paquetes que posteriormente se pueden manipular con pkg_add y las demás utilidades de gestión de packages 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 biblioteca específica esté instalada. Tanto la biblioteca como la aplicación existen en FreeBSD como paquete o port. Si utiliza pkg_add o el sistema de ports para instalar la aplicación ambos notarán que la biblioteca no está instalada y procederán a instalarla antes que nada.

Dado que ambas tecnologís son similares quizás se pregunte por qué FreeBSD se toma la molestía de contar con ambas. Los Packages y los Ports tienen sus propias ventajas, así que cuál utilizar dependerá de su elección en cada momento.

Ventajas de los Paquetes

  • El fichero tarball de un package es normalmente más pequeño que el tarball con el código fuente de la aplicación.

  • Los paquetes no requieren compilación. En el caso de aplicaciones grandes, como Mozilla, KDE, o GNOME este detalle puede ser importante, especialmente si usa un equipo lento.

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

Ventajas de los Ports

  • Normalmente los paquetes se compilan con opciones conservadoras, en virtud del gran número de equipos donde se instalarán. Al instalar como port puede usted editar las preferencias para (por ejemplo) generar código específico para un procesador Pentium IV o Athlon.

  • Algunas aplicaciones tienen opciones sobre lo que pueden y lo que no pueden hacer. Por ejemplo Apache se puede configurar con una gran variedad de opciones. Al compilarlo desde los ports usted no tiene por que aceptar las opciones predefinidas, puede seleccionar que opciones desea.

    En algunos casos existen varios paquetes para la misma aplicación con diferentes opciones. Por ejemplo, Ghostscript está disponible como paquete ghostscript y como paquete ghostscript-nox11, dependiendo de si usted cuenta o no con servidor X11. En este caso decidir puede ser sencillo e incluso pueden facilitarse packages con ambas opciones, pero elegir se puede volver un problema si hay más de una o dos opciones de compilación.

  • Las condiciones de la licencia de algunas aplicaciones prohiben la distribución de binarios. Solo permiten la distribución del código fuente.

  • Existe gente que no confía en los binarios. Al menos puede usted (en teoría) revisar el código fuente y localizar problemas potenciales.

  • Si tiene parches locales necesitará el código fuente para poder aplicarlos.

  • Hay gente a la que le gusta tener el código fuente para poder leerlo en ratos de ocio, modificarlo, tomar partes prestadas (cuando la licencia lo permite, claro está), etc.

Para tener constancia de los ports actualizados, suscríbase a la lista de correo sobre los ports de FreeBSD y a la lista de correo sobre errores en los ports de FreeBSD.

Aviso Antes de instalar cualquier aplicación consulte http://vuxml.freebsd.org para comprobar los posibles problemas de seguridad relacionados con ella.

También puede instalar security/portaudit que automáticamente comprobará las vulnerabilidades conocidas de todas las aplicaciones instaladas; también lo comprobará antes de compilar cualquier port. Mientras tanto, puede usar portaudit -F -a después de instalar algunos packages.

El resto de este capítulo le explicará cómo usar los ports y los packages para instalar software de terceros en FreeBSD.


4.3. Cómo encontrar aplicaciones

Antes de poder instalar cualquier software debe saber qué es lo que quiere instalar y cómo se llama la 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 lista (actualizada y que admite búsquedas) de todas las aplicaciones disponibles para FreeBSD en la dirección http://www.FreeBSD.org/ports/ . Esta base esta dividida en categorías, y puede buscar por nombre (si lo sabe) o bien listar 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 «seguir» uno o más ports, sobre los que le enviarán un correo cada vez que se actualicen.

  • Si no conoce el nombre de la aplicación que desea pruebe a usar un sitio como FreshMeat (http://www.freshmeat.net/) para encontrar una aplicación; después consulte el sitio web de FreeBSD para ver si la aplicación ha sido portada.

  • Si sabe el nombre exacto del port y solo necesita saber en qué categoria está puede usar whereis(1). Simplemente escriba whereis fichero, donde fichero es el programa que quiera instalar. Si está en su sistema, le dirá dónde está:

    # whereis lsof
    lsof: /usr/ports/sysutils/lsof
    

    Esto nos dice que lsof (una utilidad de sistema) está en el directorio /usr/ports/sysutils/lsof.

  • Otra forma de encontrar un port en particular es usando el mecanismo de búsqueda integrado en la colección de ports. Para poder usar esta opción de búsqueda debe estar en el directorio /usr/ports. Una vez en ese directorio ejecute make search name=nombre-del-programa, donde nombre-del-programa es el nombre del programa que desea encontrar. Por ejemplo, si busca lsof:

    # cd /usr/ports
    # make search name=lsof
    Port:   lsof-4.56.4
    Path:   /usr/ports/sysutils/lsof
    Info:   Lists information about open files (similar to fstat(1))
    Maint:  obrien@FreeBSD.org
    Index:  sysutils
    B-deps: 
    R-deps:
    

    Debe prestar especial atención a la línea «Path:»de la salida, porque es la que indica dónde puede encontrar el port. El resto de información no se necesita para instalar el port.

    Si quiere hacer una bú,squeda más a fondo utilice make search key=cadena donde cadena es el término que busca. Podrá buscar nombres de ports, comentarios, descripciones y dependencias; también se puede usar para encontrar ports que tengan relación con algún tema en particular si no conoce el nombre del programa que busca.

    En ambos casos la cadena de búsqueda no distingue entre mayúsculas y minúsculas. Buscar «LSOF» dará los mismos resultados que buscar «lsof».


4.4. Uso del sistema de packages

Texto de Chern Lee.

4.4.1. Instalar un package

Puede usar pkg_add(1) para instalar un package de FreeBSD desde un fichero local o desde un servidor remoto vía red.

Ejemplo 4-1. Descarga de un paquete manualmente 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 no tiene una fuente local de packages (por ejemplo un CDROM de FreeBSD) probablemente la mejor opción sea utilizar el argumento -r de pkg_add(1), que hará que determine automáticamente el formato del objeto correcto, para posteriormente descargarlo e instalarlo desde un FTP.

# pkg_add -r lsof

En el ejemplo anterior el package correspondiente se descargará e instalará sin intervención del usuario. Si desea utilizar una réplica («mirror») de packages que no sea el sitio principal de FreeBSD solo tiene configurar la variable de entorno PACKAGESITE correctamente para sobreescribir el sitio predefinido. pkg_add(1) utiliza fetch(1) para descargar los ficheros, tomando como referencia varias variables de entorno, como FTP_PASSIVE_MODE, FTP_PROXY y FTP_PASSWORD. Quizás deba modificar alguna de estas si se encuentra detrás de un cortafuegos, o usa un proxy FTP/HTTP. Consulte fetch(3) si quiere ver una lista completa. Observe también que en el ejemplo anterior usamos lsof en vez de lsof-4.56.4. Cuando usamos la opción de descarga remota no es necesario especificar la versión del paquete. pkg_add(1) descargará automáticamente la última versión de la aplicación.

Nota: pkg_add(1) descargará la última versión de su aplicación si usa FreeBSD-CURRENT o FreeBSD-STABLE, pero si usa una versión -RELEASE, descargará la versión del package que se construyó con dicha versión. Es posible configurar esto sobreescribiendo la variable de entorno PACKAGESITE.

Los packages se destribuyen en formatos .tgz y .tbz. Puede encontrarlos en ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/, o en la distribución de FreeBSD en CD-ROM. Todos los CDs en el set de 4 CDs de FreeBSD (y en el PowerPak, etc.) contienen packages en el directorio /packages. La estructura de los packages es similar a la del arbol de /usr/ports. Cada categoría tiene su propio directorio, y todos los paquetes se pueden encontrar dentro del directorio All.

La estructura del directorio de packageckages es idéntica a la de los ports, y funcionan como un todo para conformar el sistema de paquetes/ports.


4.4.2. Eliminar un package

Para eliminar un package instalado en el sistema utilice pkg_delete(1).

# pkg_delete xchat-1.7.1

4.4.3. Miscelánea

Toda la información de los packages se guarda en /var/db/pkg. Ahíl encontrará la lista completa de paquetes instalados y las descripciones de los mismos.


4.5. Uso de la colección de ports

La siguiente sección incluye las instrucciones básicas para instalar o eliminar programas mediante la Colección de Ports de su sistema.


4.5.1. Cómo obtener la Colección de Ports

Para poder instalar ports primero debe hacerse, obviamente, con la Colección de Ports--; en esencia está compuesta por Makefiles, parches y ficheros con la descripción de los ports y está en /usr/ports.

Cuando instaló su sistema FreeBSD el programa sysinstall le preguntó si querí instalar la Colección de Ports. Si contestó que no siga estas instrucciones:

Mediante CVSup

Este es un método rápido de conseguir y mantener una copia de la Colección de Ports al dia mediante el protocolo CVSup. Si quiere saber más sobre CVSup consulte Uso de CVSup.

Nota: La implementación del protocolo CVSup que se incluye en FreeBSD se llama csup. Apareció en FreeBSD 6.2. Los usuarios de releases anteriores de FreeBSD puden instalar net/csup como port o package.

Asegúrese de que /usr/ports está vacío antes de ejecutar csup por primera vez. Si ya tiene la Colección de Ports porque la ha instalado por otros medios csup no purgará los parches de ports eliminados.

  1. Ejecute csup:

    # csup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile
    

    Cambie cvsup.FreeBSD.org por algún otro servidor CVSup que tenga cerca. Consulte Réplicas CVSup (Sección 32.2.2), donde encontrará una lista completa de las réplicas CVSup.

    Nota: Puede usar una versión de ports-supfile confeccionada a su gusto, por ejemplo para evitar tener que indicarle el nombre del servidor CVSup a mano.

    1. Haga lo siguiente: como root copie /usr/share/examples/cvsup/ports-supfile en otro sitio, por ejemplo /root o su directorio /home.

    2. Edite ports-supfile.

    3. Reemplace CHANGE_THIS.FreeBSD.org por un servidor CVSup que esté cerca de donde esté usted. Consulte Réplicas CVSup (Sección 32.2.2) si necesita ver una lista completa de las mismas.

    4. Ejecute csupdel siguiente modo:

      # csup -L 2 /root/ports-supfile
      
  2. Al ejecutar csup(1) descargará y aplicará todos los cambios recientes que haya sufrido la Colección de Ports, pero tenga en cuenta que no actualizará ninguno de los ports que ya tenga instalados en su sistema.

Mediante portsnap

Portsnap es un método alternativo de distribuir la Colección de Ports. Se incluyó por primera vez en FreeBSD 6.0. Puede instalar portsnap(8) en versiones anteriores de FreeBSD como port (ports-mgmt/portsnap) o como package:

# pkg_add -r portsnap

En uso de portsnap encontrará detallado el funcionamiento de Portsnap features.

  1. Puede saltarse esta paso a partir de FreeBSD 6.1-RELEASE y en versiones recientes de Portsnap (port o package). /usr/ports se creará automáticamente la primera vez que ejecute portsnap(8). En versiones anteriores de portsnap había que crear un /usr/ports vacío si no existía previamente:

    # mkdir /usr/ports
    
  2. Descargue una instantánea comprimida de la Colección de Ports en /var/db/portsnap. Hecho esto puede desconectar de Internet si quiere.

    # portsnap fetch
    
  3. Si está ejecutando Portsnap por vez primera debe extraer la instantánea en /usr/ports:

    # portsnap extract
    

    Si ya tiene un /usr/ports y solamente está actualizando su árbol de ports ejecute lo siguiente:

    # portsnap update
    

Mediante Sysinstall

Este método implica el uso de sysinstall para instalar la Colección de Ports.

  1. Como usuario root ejecute sysinstall (/stand/sysinstall en cualquier versión previa a FreeBSD 5.2); del siguiente modo:

    # sysinstall
    
  2. Posiciónese en la opción Configure y pulse Intro.

  3. Seleccione la opción Distributions y pulse Intro.

  4. Seleccione la opción ports y pulse la barra espaciadora.

  5. Seleccione el medio de instalación deseado (CDROM, FTP, etc.)

  6. Diríjase a la opción Exit y pulse Intro.

  7. Pulse X para salir de sysinstall.


4.5.2. Instalación de ports

Al hablar de la Colección de Ports lo primero que hay que explicar es a qué nos referimos cuando hablamos de un «esqueleto» (skeleton). El esqueleto de un port es un conjunto mínimo de ficheros que indican a FreeBSD cómo compilar e instalar un programa. Cada esqueleto incluye:

  • Un Makefile. Este Makefile contiene diversas sentencias que le indican al sistema cómo compilarlo y dónde instalarlo en su sistema.

  • Un fichero distinfo. Este fichero contiene información sobre los ficheros que se debe descargar para poder compilar el programa, así como el identificador «checksum», que se usa para comprobar mediante md5(1) que la descarga ha sido correcta y que el la integridad del fichero está garantizada.

  • Un directorio files. Este directorio contiene los parches necesarios para compilar e instalar el programa en su sistema FreeBSD. Básicamente los parches son pequeños ficheros que especifican cambios en ficheros concretos. Su formato es en texto plano y suelen decir cosas como «borra la línea 10» o «Cambia la línea 26 por esto». Estos parches también se conocen como «diffs» ya que se generan con diff(1).

    Es posible que este directorio tambié contenga algún otro fichero necesario para compilar e instalar el port.

  • Un fichero pkg-descr. Es una descripción más detallada del programa. En algunas ocasiones ocupa varias líneas.

  • Un fichero pkg-plist. Es una lista de todos los ficheros que instalará el port. También le indica al sistema de ports qué ficheros eliminar durante la desinstalación del programa.

Algunos ports tienen otros ficheros, como pkg-message. El sistema de ports los usa para gestionar situaciones especiales. Si desea conocer los detalles, incluso sobre los ports en general, consulte el libro FreeBSD Porter's Handbook.

El port incluye las instrucciones necesarias para obtener software a partir del código fuente, pero no incluye el código. Puede obtener el código desde un CDROM o desde Internet. El código se distribuye del modo que el autor estime oportuno. Normalmente es un fichero tar comprimido con gzip, pero puede comprimirse con otra herramienta o incluso no estar comprimido. El código del programa, venga como venga, se llama «distfile». A continuación veremos los dos métodos de instalación de un port.

Nota: Debe ser el usuario root para instalar ports.

AvisoAntes de instalar cualquier port asegúrese de tener la Colección de Ports actualizada y de comprobar en http://vuxml.freebsd.org/ la existencia de posibles problemas de seguridad que pudiera tener el port.

Puede realizar la comprobación de seguridad con portaudit antes de instalar cualquier aplicación. Esta herramienta está la Colección de Ports (security/portaudit). Le rogamos que al menos considere ejecutar portaudit -F antes de instalar un port nuevo para que descargue la nueva base de datos de vulnerabilidades. Durante la comprobación diaria de seguridad actualizará la base de datos y hará una auditoría del sistema. Para más información lea las páginas de manúal de portaudit(1) y periodic(8).

La Colección de Ports asume que tiene usted conexión con Internet. Si no es así tendrá que disponer de una copia del distfile en /usr/ports/distfiles.

El primer paso es ubicarse en el directorio del port que desea instalar:

# cd /usr/ports/sysutils/lsof

Una vez en el directorio lsof puede ver el esqueleto del port. El siguiente paso es compilar el port. Solamente tiene que teclear typing make en el prompt. Una vez hecho verá algo como esto:

# make
>> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
>> Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===>  Extracting for lsof-4.57
...
[La salida de la descompresión se ha eliminado]
...
>> Checksum OK for lsof_4.57D.freebsd.tar.gz.
===>  Patching for lsof-4.57
===>  Applying FreeBSD patches for lsof-4.57
===>  Configuring for lsof-4.57
...
[La salida de la configuración se ha eliminado]
...
===>  Building for lsof-4.57
...
[La salida de la compilación se ha eliminado]
...
#

Una vez que acabe la compilación se le devolverá el control del prompt. El siguiente paso es instalar el port. Para ello bastará con que añada una palabra aa la orden onto the make: esa palabra es install:

# make install
===>  Installing for lsof-4.57
...
[La salida de la instalación se ha eliminado]
...
===>   Generating temporary packing list
===>   Compressing manual pages for lsof-4.57
===>   Registering installation for lsof-4.57
===>  SECURITY NOTE:
      This port has installed the following binaries which execute with
      increased privileges.
#

Una vez que vuelva usted al prompt podrá ejecutar la aplicación que acaba de instalar. Dado que lsof es un programa que se ejecuta con privilegios altos se le ha mostrado una advertencia de seguridad. Durante la compilación e instalación es posible que hayan aparecido otros.

Le recomendamos que borre el directorio que contiene todos los ficheros temporales necesarios durante la compilación. No solo consume valioso espacio en disco sino que puede dar problemas cuando vaya a actualizar el port a una versión más reciente.

# make clean
===>  Cleaning for lsof-4.57
#

Nota: Puede ahorrarse teclear dos pasos si para instalar un port teclea make install clean en lugar de make, make install y make clean as three separate steps.

Nota: Algunas shells mantienen una caché de órdenes disponibles en los directorios que aparecen en la variable de entorno PATH con el fin de acelerar las operaciones de búsqueda de ejecutables de esas órdenes. Si usa una de esas shells tendrá que utilizar la orden rehash tras instalar un port o no podrá ejecutar aplicaciones recién instaladas. Esta orden funciona en shells como tcsh. Utilice hash -r en shells sh. Para más información consulte la documentación de su shell.

Algunos DVD-ROM de terceros, como el FreeBSD Toolkit de FreeBSD Mall contienen distfiles. Puede usarlos con la Colección de Ports. Monte el DVD-ROM en /cdrom. Si utiliza un punto de montaje diferente asigne a CD_MOUNTPTS el valor adecuado. Los distfiles se irán copiando automáticamente a medida que vayan siendo necesarios.

Nota: Por favor, tenga en cuenta que la licencia de unos cuantos ports muy concretos no permite su distribución en CD-ROM. Puede deberse a que es necesario rellenar un formulario de registro antes de descargarlo, porque la redistribución no esté permitida o por otra razón. Si quiere instalar un port que no está en el CD-ROM tendrá que tener salida a Internet.

El sistema de ports utiliza fetch(1) para descargar ficheros; en este proceso intervienen varias variables de entorno, como FTP_PASSIVE_MODE, FTP_PROXY, y FTP_PASSWORD. Si está detrás de un cortafuegos tendrá que asignar valores a una o más de estas variables, así como si necesita utilizar un proxy FTP/HTTP. Consulte fetch(3), donde econtrará una lista detallada.

La opción make fetch se creó para los usuarios que no disponen de conexión contínua. Ejecute esta orden en el directorio raíz (/usr/ports) y se descargarán todos los ficheros necesarios. Esta orden también funciona en directorios situados más abajo, por ejemplo /usr/ports/net. Tenga en cuenta que si un port depende de librerías u otros ports éstos distfiles no no se descargarán, a menos que reemplace fetch por fetch-recursive, que se encargará de descargar todas las dependencias de cada port.

Nota: Si quiere compilar todos los ports de una categoría y de una sola vez ejecutando la orden make en el directorio raíz, de muy similar manera que lo que se acaba de ver con makefetch. Tenga en cuenta que esto es bastante peligroso porque algunos ports no pueden coexistir. También se dan casos de ports que instalan instalan dos ficheros diferentes con el mismo nombre.

En algunos casos (raros) el usuario tendrá que descargar los tarball de un sitio que no es el que se guarda en la variable de entorno MASTER_SITES (el sitio desde el que se descargan todos los demás normalmente). Puede sobreescribir la opción MASTER_SITES con la siguiente orden:

# cd /usr/ports/directory
# make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch

In this example we change the MASTER_SITES option to ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/.

Nota: Algunos ports permiten (o incluso exigen) que se le faciliten opciones de compilación para activar o desactivar partes de la aplicación que no se necesiten, determinadas opciones de seguridad, etc. Casos típicos de esto son www/mozilla, security/gpgme, and mail/sylpheed-claws. Cuando debe usted tomar este tipo de decisiones se le muestra un mensaje con las opciones disponibles.


4.5.2.1. Sobreescribir directorios por omisión de ports

Algunas veces es útil (u obligatorio) utilizar un directorio de trabajo o un «target» distinto al que tenemos por omisión. Las variables de entorno WRKDIRPREFIX y PREFIX pueden sobreescribirse según nuestra conveniencia. Veamos un ejemplo:

# make WRKDIRPREFIX=/usr/home/ejemplo/ports install

compilará el port en /usr/home/ejemplo/ports y lo instalará en /usr/local.

# make PREFIX=/usr/home/ejemplo/local install

lo compilará en /usr/ports y lo instalará en /usr/home/ejemplo/local.

Y por supuesto,

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

combinará ambas; (ocupa demasiado para mostrarlo en una página, pero la idea general queda clara).

Puede asignar valores a estas variables del mismo modo que a cualquier otra de su entorno. Consulte la documentación de su shell para más información.


4.5.2.2. Uso de imake

Algunos ports que usan imake (un componente del Sistema X Window) no funcionan correctamente con PREFIX e insistirán en instalarse en /usr/X11R6. Del mismo modo algunos ports de Perl ignoran PREFIX y se instalan en el árbol de Perl. Hacer que estos ports respeten PREFIX es difícil y a veces imposible.


4.5.2.3. Reconfigurar ports

Al compilar ciertos ports se le presentará un menú basado en ncurses en el cual podrá elegir entre más o menos opciones de compilación. No es raro que los usuarios quieran volver a usar ese menú para añadir, quitar o cambiar opciones una vez que el port ya está compilado. Hay bastantes formas de hacerlo. Una manera es entrar al directorio que contiene el port y teclear containing the port and type make config, que hará que se le presente de nuevo el menú con las opciones que estuvieran seleccionadas previamente. Otra opción es usar la orden make showconfig, que le mostrará todas las opciones de configuración del port. Hay otra opción más, make rmconfig, que borrará todas las opciones que estuvieran seleccionadas y le permitirá por tanto empezar desde cero. Todas estas opciones y muchas más las encontrará descritas con gran detalle en ports(7).


4.5.3. Cómo desinstalar ports

Ahora que sabe instalar ports probablemente quiera saber cómo eliminarlos; puede que haya instalado alguno y posteriormente se haya dado cuenta de que ha instalado el port incorrecto. Vamos a desinstalar el port del ejemplo anterior (que, para todos aquellos que no estaban atentos, era lsof). Igual que al instalar ports, lo primero que debemos hacer es ubicarnos en el directorio del port que deseamos eliminar del sistema, en nuestro caso /usr/ports/sysutils/lsof. Los ports se desinstalan exactamente igual que los packages; esto se explica en la seccióN de packages) utilizando la orden pkg_delete(1):

# pkg_delete lsof-4.57

4.5.4. Actualización de ports

Antes de nada necesita ver una lista de ports instalados de los cuales exista una nueva versión en la Colección de Ports. Utilice pkg_version(1):

# pkg_version -v

4.5.4.1. /usr/ports/UPDATING

Una vez actualizada la Colección de Ports (y antes de intentar actualizar ningún port) debe consultar /usr/ports/UPDATING. Este fichero describe todas las novedades, problemas que pueden encontrarse y pasos que deben seguir los usuarios al actualizar un port; hay cambios de formato, cambios de ubicación de ficheros de configuración o incompatibilidades con versiones anteriores.

Si UPDATING se contradice de cualquier modo con lo que lea aquí tenga muy encuenta que lo que aparezca en UPDATING tiene prioridad absoluta.


4.5.4.2. Actualización de ports con portupgrade

La aplicación portupgrade se diseñó para actualizar fácilmente los ports instalados en un sistema. Puede instalarla desde el port ports-mgmt/portupgrade. La instalación es como al de cualquier otro port, use la orden make install clean command:

# cd /usr/ports/ports-mgmt/portupgrade
# make install clean

Compruebe la lista de ports instalados con pkgdb -F y arregle todas las inconsistencias que aparezcan. Le recomendamos que haga esta comprobación de forma regular y siempre antes de una actualización.

Si ejecuta portupgrade -a portupgrade intentará actualizar todos y cada uno de los ports instalados en su sistema. Utilice el parámetro -i si quiere que le pida confirmación antes de actualizar cada uno de los ports.

# portupgrade -ai

Si solamente quiere actualizar una sola aplicación (y no absolutamente todos los ports) utilice la orden <portupgrade nombre-de-aplicación. Añada el modificador -R si quiere que portupgrade actualice antes todos los ports de los que depende la aplicación en cuestión.

# portupgrade -R firefox

Si quiere usar packages en lugar de ports use el modificador -P flag. Con esta opción portupgrade busca en los directorios locales que aparezcan en PKG_PATH o descarga los packages desde un sitio remoto si es que no los encuentra en local. Si es imposible encontrar los packages ni en local ni en remotoportupgrade utilizará ports. Si no quiere usar ports pase lo que pase utilice el modificador -PP.

# portupgrade -PP gnome2

Si quiere solamente descargar los distfiles (o los packages, usando -P) sin compilar ni instalar nada, use -F. Para más información consulte portupgrade(1).


4.5.4.3. Actualización de ports con portmanager

Portmanager es otra aplicación pensada para la actualización sencilla de ports instalados en el sistema. Puede encontrarla en ports-mgmt/portmanager:

# cd /usr/ports/ports-mgmt/portmanager
# make install clean

Puede actualizar todos los ports que tenga instalados con una sola orden:

# portmanager -u

Si usa el modificador -ui se le pedirá confirmación a cada paso que Portmanager vaya a dar. Portmanager también puede usarse para instalar nuevos ports. A diferencia del habitual make install clean actualizará todos los ports que dependan antes de compilar e instalar ese port que queramos instalar.

# portmanager x11/gnome2

Si aparecen problemas con las dependencias del port que quiere instalar puede usar Portmanager para recompilar todos ello en el orden correcto. Una vez que acabe el port que estaba dando problemas será también recompilado.

# portmanager graphics/gimp -f

Para más información consulte portmanager(1).


4.5.4.4. Actualización de ports con portmaster

Portmaster es otra aplicación para actualizar ports. Portmaster se diseñó para que utilizara las herramientas del sistema «base» (es decir, no depende de otros ports) y utiliza la información que se almacena en el directorio /var/db/pkg/ para determinar qué port es el que hay que actualizar. Puede encontrarlo en ports-mgmt/portmaster:

# cd /usr/ports/ports-mgmt/portmaster
# make install clean

Portmaster agrupa los ports en cuatro categorías:

  • «Root ports» (no tienen dependencias, ningún port depende de ellos)

  • «Trunk ports» (no tienen dependencias, otros ports dependen de ellos)

  • «Branch ports» (tienen dependencias, otros ports dependen de ellos)

  • «Leaf ports» (tienen dependencias, ningún port depende de ellos)

Puede ver una lista de los ports instalados y buscar actualizaciones para ellos usando el modificador -L :

# portmaster -L
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
        ===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
        ===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
        ===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports

===>>> 137 total installed ports
        ===>>> 83 have new versions available

Con la siguiente orden puede actualizar todos los ports del sistema:

# portmaster -a

Nota: Por omisión Portmaster guardará una copia de seguridad (un package) de cada port antes de borrarlo. Si la instalacióN de la nueva versión funciona Portmaster borrará el package. Si utiliza -b le dirá a Portmaster que no borre automáticamente el package. Si usa el modificador -i arrancará Portmaster en modo interactivo, lo que significa que le pedirá confirmación antes de actualizar cada port.

Si se encuentra con errores durante el proceso de actualización puede utilizar el modificador -f para actualizar o recompilar todos los ports:

# portmaster -af

También puede usar Portmasterpara instalar nuevos ports en el sistema, actualizando todas sus dependencias antes de compilar e instalar el nuevo port:

# portmaster shells/bash

Por favor, consulte portmaster(8) para más información.


4.5.5. Los ports y el espacio en disco

Usar la Colección de Ports consume mucho espacio de disco según pasa el tiempo. Por culpa de la tendencia del árbol de ports a crecer sin parar le recomendamos que después de compilar e instalar sofware desde los ports recuerde limpiar los directorios temporales work mediante la orden make clean. Puede limpiar de un plumazo los directorios temporales de toda la Colección de Ports con la siguiente orden:

# portsclean -C

Rápidamente acumulará gran cantidad de viejas distribuciones de código en distfiles. Puede borrarlos a mano, pero también puede usar la siguiente orden para borrar todos los distfiles que no tengan relación con ningún port:

# portsclean -D

También puede borrar todos los distfiles sin relación con ningún port instalado en el sistema:

# portsclean -DD

Nota: portsclean forma parte de la «suite» portupgrade.

No olvide borrar los ports instalados una vez que deja de necesitarlos. Hay una herramienta muy útil para ayudar a automatizar esta tarea: ports-mgmt/pkg_cutleaves.


4.6. Después de instalar un port

Una vez que ha instalado una nueva aplicación normalmente deberáa leer toda la documentación que incluya, editar los ficheros de configuración necesarios, asegurarse de que la aplicación se ejecute al arrancar el sistema (si es un dæmon)etc.

Obviamente los pasos exactos para configurar cada aplicación son distintos de una a otra. De cualquier forma, si acaba de instalar aplicación y se pregunta «¿Y ahora qué?» estos consejos puede que le ayuden:

  • Use pkg_info(1) para ver qué ficheros se instalaron y dónde. Por ejemplo, si instalón el paquete Un-Package 1.0.0, lo siguiente:

    # pkg_info -L un-package-1.0.0 | less
    

    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; bajo el directorio doc/ podrá encontrar información más detallada.

    Si no está seguro de qué versión del paquete ha instalado, teclée:

    # pkg_info | grep -i un-package
    

    y verá todos los paquetes que se llaman un-package. Reemplace un-package en la línea de órdenes que tenga que usar en su caso.

  • Una vez que ha identificado las páginas de manual de la aplicación revíselas mediante man(1). Revise también los ficheros de configuración, así como cualquier otro tipo de documentación que venga con el software.

  • Si la aplicación tiene sitio web visítelo. Es muy posible que encuentre más documentación, listas de preguntas frecuentes (FAQ), etc. Si no sabe cuál puede ser la dirección del sitio web examine la salida de la orden

    # pkg_info un-package-1.0.0
    

    a veces incluye una línea WWW:, que contiene la dirección del sitio web de la aplicación.

  • Los ports que deben arrancar con el sistema (como los servidores de Internet) normalmente instalaran un «script» de ejemplo en /usr/local/etc/rc.d. Debe revisar este «script» para comprobar que todo sea correcto, editarlo o renombrarlo si fuera necesario. Consulte Cómo arrancar servicios para más información.


4.7. Ports que no funcionan

Si encuentra un port que no funciona hay varias cosas que puede hacer:

  1. Consulte en la Base de datos de informes de error si ya se ha publicado un parche que lo solucione. Si es el caso puede aplicar aplicar el parche en su sistema.

  2. Pida ayuda al responsable del mantenimiento (conocido como «mantainer») del port. Teclée make maintainer o consulte el Makefile del port si no sabe cuál es la dirección de correo del «mantainer». Recuerde que debe incluir el nombre y la versión del port. Envíe la línea que contiene $FreeBSD: al principio del Makefile del port y salida con el error que obtiene al intentar usar la aplicación.

    Nota: Algunos ports no son responsabilidad de un individuo sino de una lista de correo. Muchas, aunque no todas, tienen un aspecto parecido a . Por favor, téngalo en cuenta cuando envie ese correo sobre el port que no funciona.

    Hay un caso especial: Los ports que tienen como «mantainer» en realidad no son responsabilidad de nadie. Los parches y el soporte, en caso de existir, vienen de la comunidad de usuarios y desarrolladores que están suscritos a la lista. Por cierto, siempre hacen falta más voluntarios.

    Si no recibe respuesta utilice send-pr(1) para enviar un informe de errores. Consulte Cómo escribir informes de error) [5]

  3. Arreglarlo. El «Porter's Handbook» incluye información detallada sobre la infraestructura de los ports, así que puede arreglar un port roto o incluso enviar su propio port.

  4. Descargue el paquete de algún sitio FTP. El servidor «principal» de la colección de paquetes está en el directorio de paquetes de ftp.FreeBSD.org pero asegúrese de mirar antes en la réplica más próxima. Esta es una forma de instalar aplicaciones más fácil y más rápida. Instale el paquete mediante pkg_add(1).


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. Después de FreeBSD 5.3-RELEASE el sistema X Window pasó a ser 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. Si quiere información sobre la configuración de XFree86 o versiones anteriores de Xorg consulte las versiones archivadas del «Handbook» de FreeBSD en http://docs.FreeBSD.org/doc/.

Para mas información del hardware de vídeo que X11 soporta consulte la página web de Xorg.

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

  • Cuáles son 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 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 de los ficheros de configuración, órdenes 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 interactúan, pero un conocimiento básico hace posible el sacarle más provecho a 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 todos 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 puede usar el término «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 en la máquina 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 se ejecutarán en el mismo sistema. Sin embargo, es perfectamente posible ejecutar el servidor X en un sistema de escritorio menos potente y ejecutar las aplicaciones X (los clientes) en, por ejemplo, la potente y cara 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 sistema. Es posible ejecutar un servidor X en Microsoft Windows o en el Mac OS de Apple; de hecho hay varias aplicaciones libres y comerciales que hacen exactamente eso.

A partir de FreeBSD 5.3-RELEASE, el servidor X que se instala con FreeBSD es Xorg, que es libre y se distribuye bajo una licencia muy similar a la de FreeBSD. 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 normas». Esto significa que X no impone cómo debe hacerse una tarea. 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, qué 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 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 un dialecto del 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 claramente qué ventana está activa.

Una política muy popular es la de «click to focus». Este es el modelo que utiliza Microsoft Windows, en el que una ventana se convierte en activa al recibir un clic del 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 (focus-follows-mouse)

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 sloppy-focus

Esta política es una pequeña extensión de «el-foco-sigue-al-ratón». En «el-foco-sigue-al-ratón» si el ratón se mueve sobre la ventana raíz (o fondo) 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 click-to-focus

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 de hacer herramientas en vez de normas y se extiende a los «widgets» que se ven en la pantalla de cada aplicación.

«Widget» es un término que abarca todos los objetos en el interfaz de usuario que pueden pulsarse con el ratón manipularse de alguna manera: botones, «check boxes», 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 homogéneo. 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 usan un conjunto de «widgets» con mejor aspecto, o Qt, utilizado por KDE, o GTK+, que usa el proyecto GNOME. Se intenta que el aspecto del escritorio de UNIX sea parecido, lo que hace la vida más fácil al usuario novato.


5.3. Instalar X11

Xorg es la implementación de X11 por omisión en FreeBSD. Xorg está basado en código de XFree86 4.4RC2 y X11R6.6. La versión de Xorg que se distribuye actualmente en la Colección de Ports de FreeBSD es la 7.3.

Para compilar e instalar Xorg desde la colección de ports:

# cd /usr/ports/x11/xorg 
# make install clean

Nota: Si quiere compilar e instalar Xorg entero, asegúrese de tener como mínimo 2GB de espacio disponible.

Si lo prefiere puede instalar Xorg con packages. Cuando utilice la capacidad de pkg_add(1) para instalar packages que descargue remotamente recuerde que no debe escribir el número de versión. pkg_add(1) descargará automáticamente la última versión de la aplicación..

Veamos qué es lo que hay que hacer para descargar e instalar el package de Xorg:

# pkg_add -r xorg

Nota: El anterior ejemplo instala la distribución X11 completa, es decir, servidores, clientes, tipos de letra, etc. Hay packages y ports con cada uno de esos elementos por separado.

En el resto del capítulo se explica cómo configurar X11 y cómo configurar un entorno de escritorio que le resulte productivo.


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 encontrar normalmente en la documentación que viene con el monitor o en la web del fabricante. Se necesitan dos rangos de números: la frecuencia de refresco horizontal y la vertical.

El chipset de la tarjeta de vídeo define qué controlador utilizará X11 para comunicarse 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.

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 para que el usuario conozca las limitaciones del sistema.


5.4.2. Configurar X11

A partir de la versión 7.3 Xorg puede funcionar sin utilizar fichero de configuración; basta con teclear en el prompt:

% startx

Si no funciona, o si la configuración por omisión no es aceptable, hay que configurar X11 a mano.

Nota: Ciertos entornos de escritorio como GNOME, KDE o XFce tienen herramientas que permiten al usuario configurar fácilmente parámetros de la pantalla como la resolución. Si la configuración por omisión no sirve y tiene idea de instalar un entorno de escritorio puede seguir adelante tranquilamente con la instalación del entorno de escritorio y utilice la herramienta que el software que instale le facilite.

La configuración de X11 es un proceso que consta de múltiples pasos. El primero es generar un fichero inicial de configuración. Como superusuario teclee:

# Xorg -configure

Esto generará un fichero de configuración bastante esquemático pero completo en /root llamado xorg.conf.new (si ha utilizado su(1) o ha entrado directamente como superusuario afectará al valor que tenga la variable de directorio $HOME). X11 intentará probar el hardware gráfico del sistema y escribir un fichero de configuración en el que registrar los controladores de dispositivo adecuados para hacer funcionar el harware que haya detectado.

El siguiente paso es probar el fichero generado para verificar si Xorg puede funcionar con el hardware gráfico del sistema. Para ello teclee:

# Xorg -config xorg.conf.new

Si aparece una rejilla negra y gris junto con el cursor del ratón con forma de X es que la configuración ha tenido éxito. Para salir de la prueba pulse simultáneamente Ctrl+Alt+Retroceso.

Nota: Si el ratón no funciona tendrá que configurarlo antes de continuar. Consulte la Sección 2.10.10 en el capítulo de instalación de FreeBSD.

Después modifique el fichero xorg.conf.new 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"

Agrege a su xorg.conf.new la resolución por omisión 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 omisión. 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 El nombre exacto del fichero de «log» puede variar entre Xorg.0.log y Xorg.8.log y así sucesivamente.

Si todo ha ido bien ha llegado el momento de ubicar el fichero de configuración donde Xorg(1) pueda encontrarlo. Puede dejarlo en /etc/X11/xorg.conf o /usr/local/etc/X11/xorg.conf.

# cp xorg.conf.new /etc/X11/xorg.conf

El proceso de configuración de X11 ha concluido. Arranque Xorg mediante startx(1). Puede también arrancar el servidor X11 utilizando xdm(1).

Nota: Existe también una herramienta gráfica de configuración en X11, xorgcfg(1). Permite definir de forma interactiva su configuració mediante la elección de los controladores y las opciones adecuadas. Este programa también puede usarse desde consola mediante la orden xorgcfg -textmode. Para más información consulte la página de manual de xorgcfg(1).

Puede usar también xorgconfig(1). Este programa es una herramienta orientada a consola que es bastante menos atractiva para el usuario, pero que puede funcionar en situaciones en las que otras herramientas no sirven.


5.4.3. 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. Consulte la página de manual de agp(4) para más información.

Hecho esto podrá configurar el hardware como cualquier otra tarjeta gráfica. Tenga en cuenta que si en un sistema que no tenga el controlador agp(4) intenta cargar el módulo del kernel con kldload(8) no va a funcionar. El controlador tiene necesariamente que estar en el kernel desde el mismo momento del arranque, cosa que puede obtenerse bien compilando un nuevo kernel, bien utilizando /boot/loader.conf.


5.4.3.2. Añadir una pantalla panorámica a nuestro sistema

A lo largo de esta sección se asumen unos mínimos de soltura con ciertos aspectos de configuración avanzada. Si Si las herramientas estándar de configuración que se han descrito previamente no le ayudan a tener una configuración funcional busque en los ficheros de log, ahí encontrará información suficiente para lograrlo. Tendrá que utilizar un editor de texto a lo largo de estas instrucciones.

Los formatos actuales de pantalla panorámica, (también conocidas como «Widescreen», WSXGA, WSXGA+, WUXGA, WXGA, WXGA+, etc, soportan formatos de 16:10 y 10:9 o aspectos-tasa que pueden ser problemáticos. Veamos algunos ejemplos de resoluciones de pantalla en formatos 16:10:

  • 2560x1600

  • 1920x1200

  • 1680x1050

  • 1440x900

  • 1280x800

At some point, it will be as easy as adding one of these resolutions as a possible Mode in the Section "Screen" as such:

Section "Screen"
Identifier "Screen0"
Device     "Card0"
Monitor    "Monitor0"
DefaultDepth 24
SubSection "Display"
    Viewport  0 0
    Depth     24
    Modes     "1680x1050"
EndSubSection
EndSection

Xorg se basta y se sobra para recabar la información de resolución de su pantalla panorámica mediante la información I2C/DDC, así que sabe qué frecuencias y resoluciones puede manejar el monitor.

Si esas ModeLines no existen en los controladores tendrá usted que ayudar un poco a Xorg. Lea atentamente el contenido de /var/log/Xorg.0.log; de él podrá extraer suficiente información como para crear un ModeLine que funcione. Todo lo que tiene que hacer es buscar información que se parezca a esta:

(II) MGA(0): Supported additional Video Mode:
(II) MGA(0): clock: 146.2 MHz   Image Size:  433 x 271 mm
(II) MGA(0): h_active: 1680  h_sync: 1784  h_sync_end 1960 h_blank_end 2240 h_border: 0
(II) MGA(0): v_active: 1050  v_sync: 1053  v_sync_end 1059 v_blanking: 1089 v_border: 0
(II) MGA(0): Ranges: V min: 48  V max: 85 Hz, H min: 30  H max: 94 kHz, PixClock max 170 MHz

Esta información se llama información EDID. Para crear una ModeLine a partir de estos datos solamente tiene que poner los números en el orden correcto:

ModeLine <name> <clock> <4 horiz. timings> <4 vert. timings>

Así que la ModeLine en la Section "Monitor" del ejemplo tendría este aspecto:

Section "Monitor"
Identifier      "Monitor1"
VendorName      "Bigname"
ModelName       "BestModel"
ModeLine        "1680x1050" 146.2 1680 1784 1960 2240 1050 1053 1059 1089
Option          "DPMS"
EndSection

Como ve, con un poco de edición hemos culminado la tarea y X debería ya poder arrancar sin problemas en su nuevo monitor panorámico.


5.5. Uso de tipos en X11

Escrito por Murray Stokely.

5.5.1. Tipos Type1

Los tipos que X11 incluye por omisión no son precisamente ideales para las aplicaciones típicas. Los tipos grandes para presentaciones aparecen dentados y con un aspecto poco profesional, mientras que los tipos pequeños en Netscape son prácticamente ilegibles. Sin embargo hay varios tipos de letra libres Type1 de alta calidad (PostScript®) que se pueden usar con X11. Por ejemplo los tipos URW (x11-fonts/urwfonts) incluyen una versión de alta calidad de los tipos 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 completos para usarse como tipos de pantalla. Además X11 se puede configurar para usar tipos 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 tipos TrueType.

Para instalar los tipos Type1 desde los ports ejecute las siguientes órdenes:

# cd /usr/ports/x11-fonts/urwfonts
# make install clean

Proceda del mismo modo con los FreeFonts o cualesquiera otras. Para que el servidor X las detecte añada la siguiente línea al fichero de configuración de X (/etc/X11/xorg.conf:

FontPath "/usr/X11R6/lib/X11/fonts/URW/"

o bien desde una emulación de terminal durante una sesión X ejecute

% 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 en el caso de 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: consulte la sección de anti-aliasing.


5.5.2. Tipos TrueType®

Xorg se diseñó pensando en que utilizara tipos 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 debe añadir la siguiente línea a la sección "Module" del fichero /etc/X11/xorg.conf.

Load "freetype"

Ahora haga un directorio para los tipos TrueType (por ejemplo /usr/X11R6/lib/X11/fonts/TrueType) y copie todos los tipos TrueType en este directorio. Recuerde que los tipos TrueType no se pueden coger directamente de un Macintosh®; tienen que estar en formato UNIX/MS-DOS/Windows para usarlas con X11. Una vez que los ficheros se hayan copiado en este directorio use ttmkfdir para crear un fichero fonts.dir, para que el representador de tipos de X sepa que se han instalado estos ficheros nuevos. ttmkfdir forma parte de la Colección de Ports de FreeBSD: x11-fonts/ttmkfdir.

# cd /usr/local/lib/X11/fonts/TrueType
# ttmkfdir -o fonts.dir

Ahora añada el directorio TrueType a la ruta de tipos. Esto es igual que lo anteriormente descrito sobre los tipos Type1. Ejecute:

% xset fp+ /usr/local/lib/X11/fonts/TrueType
% xset fp rehash

o añada una línea FontPath en su /etc/X11/xorg.conf.

Esto es todo. Ahora Netscape, Gimp, StarOffice y el resto de aplicaciones X debieran reconocer los tipos TrueType instalados. Los tipos muy pequeños (como el texto en una pantalla con alta resolución viendo una página web) y los tipos muy grandes (Dentro de StarOffice) se verán muchísimo mejor ahora.


5.5.3. Tipos Anti-Aliasing

Actualizado por Joe Marcus Clarke.

Los «tipos anti-aliasing» han estado en X11 desde XFree86 4.0.2. Aunque la configuración de los tipos era incómoda antes de XFree86 4.3.0. A partir de XFree86 4.3.0 todos los tipos de X11 que se encuentren en /usr/local/lib/X11/fonts/ y ~/.fonts/ 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é tipos «anti-aliasing» o configurar las propiedades «anti-aliasing» crée (o edite, si ya existe) el fichero /usr/local/etc/fonts/local.conf. Se pueden modificar diversas opciones avanzadas del sistema de tipos Xft usando este fichero; esta 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 todos los tipos en /usr/local/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/local/etc/fonts/local.conf:

<dir>/ruta/de/mis/tipos</dir>

Después de añadir los nuevos tipos, y en especial los nuevos directorios de tipos, debe ejecutar la siguiente orden para reconstruir la caché de tipos:

# fc-cache -f

Los «tipos 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 los tipos 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 algunos tipos también podría ser inapropiado con «anti-aliasing», por ejemplo en el caso de KDE. Una posible solución para esto es forzar que el espacio entre los tipos 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 «tipos fixed» como "mono"); añada también lo siguiente:

         <match target="pattern" name="family">
             <test qual="any" name="family">
                 <string>mono</string>
             </test>
             <edit name="spacing" mode="assign">
                 <int>100</int>
             </edit>
         </match>     

Algunos tipos, como Helvetica, podrían tener problemas con «anti-aliasing». Normalmente esto se manifiesta en tipos que parecen cortados 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 puede 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>. Si no lo hace los cambios que haya hecho serán ignorados.

Los tipos por omisión que vienen con X11 no son los ideales para «anti-aliasing». Puede encontrar otros mucho mejores en el port x11-fonts/bitstream-vera. Este port instalará el fichero /usr/local/etc/fonts/local.conf si aun no se ha creado. Si el fichero existe el port creara el fichero /usr/local/etc/fonts/local.conf-vera. Combine el contenido de este fichero con /usr/local/etc/fonts/local.conf y los tipos Bitstream reemplazarán automáticamente los tipos por defecto por 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 pantallas LCD sería deseable un muestreo de subpixel, que consiste en configurar los componentes (separados horizontalmente) rojo, verde y azul para mejorar la resolución horizontal; los resultados pueden ser impresionantes. Para habilitarlo añada la siguiente línea a local.conf:

        <match target="font">
            <test qual="all" name="rgba">
                <const>unknown</const>
            </test>
            <edit name="rgba" mode="assign">
                <const>rgb</const>
            </edit>
        </match>
     

Nota: Dependiendo del tipo de pantalla rgb podría ser bgr o vrgb o vbgr: experimente y elija cuál de ellos 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 es capaz de hacerlo, así que KDE entero puede usar «tipos anti-aliasing». GTK+ y GNOME también pueden usar «tipos anti-aliasing» mediante el «applet» «Font» (consulte Sección 5.7.1.3 para más detalle). Por omisión Mozilla 1.2 y versiones siguientes usarán automáticamente «tipos anti-aliasing». Para deshabilitarlos 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 la gestión de sesiones. Esto es útil en diferentes situaciones, 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 configuraciones posibles para ejecutar clientes y servidores X en diferentes equipos conectados a una red. XDM dispone de un interfaz gráfico para elegir a qué pantalla se quiere conectar y pedir la información de autentificación como el nombre de usuario y le contraseña.

XDM ac6túa como proveedor de la misma funcionalidad que getty(8) (consulte Sección 26.3.2 para más detalles). Esto quiere decir que se encarga de las entradas al sistema en la pantalla a la que está conectado y arranca el gestor de sesiones para que lo utilice el usuario (normalmente un gestor de ventanas X). XDM espera a que el programa termine, envía la señal de que el usuario ha terminado y que se le 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 está en /usr/local/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 la Sección 26.3.2.1. Por omisión hay una línea en /etc/ttys que permite arrancar el dæmon XDM en una terminal virtual:

ttyv8   "/usr/local/bin/xdm -nodaemon"  xterm   off secure

Por omisión esta entrada está deshabilitada; para habilitarla cambie el campo 5 de off a on y reinicie init(8) usando los pasos descritos en la Sección 26.3.2.2. El primer campo es el nombre de la terminal que que gestiona el programa, ttyv8. Es decir, XDM empezará a ejecutarse en la terminal virtual número 9.


5.6.3. Configuración de XDM

El directorio de configuración de XDM está en /usr/local/lib/X11/xdm. En este directorio hay varios ficheros que se usan para intervenir en el comportamiento y la apariencia de XDM. Normalmente tendrá estos ficheros:

Fichero Descripción
Xaccess Reglas de acceso para clientes.
Xresources Recursos de X por omisión.
Xservers Lista de pantallas locales y remotas a gestionar.
Xsession «script» por omisión 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» que se usan 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 omisión 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 unos campos para que introduzca«Login:» y «Password:» debajo. Este es un buen punto de partida para aprender a cambiar el aspecto de las pantallas de XDM.


5.6.3.1. Xaccess

El protocolo para conectar con las pantallas controladas por XDM se llama «X Display Manager Connection Protocol» (XDMCP). Este fichero es un conjunto de reglas para controlar las conexiones XDMCP desde otros equipos. Por defecto permite a cualquier cliente conectar, pero eso no importa a menos que xdm-config se cambie para escuchar conexiones remotas. La configuración básica no permite conexiones desde ningún cliente.


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. Xservers

Una lista de pantallas remotas entre las que elegir.


5.6.3.4. 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.5. 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.6. xdm-config

Este fichero contiene las opciones por defecto aplicables a todas las pantallas que gestiona la instalación.


5.6.3.7. xdm-errors

Este fichero contiene la salida de los servidores X que XDM intente arrancar. Si alguna pantalla que XDM intente arrancar se cuelga por alguna 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 omisión se aplican restricciones. Si quiere que XDM escuche conexiones comente la siguiente 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 «#». Puede aplicar controles más restrictivos. Consulte las opciones de ejemplo en Xaccess y la página de manual de xdm(1).


5.6.5. Alternativas a XDM

Hay algunas alternativas al programa por defecto XDM. Una de ellas, kdm (que se incluye con KDE) se describe más adelante 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 como KDE o GNOME.


5.7.1. GNOME

5.7.1.1. Acerca de GNOME

GNOME es un entorno de escritorio amigable que permite a los usuarios una 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

GNOME puede instalarse fácilmente utilizando packages precompilados 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, es decir, como port:

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

La manera más fácil de arrancar GNOME es con GDM, el gestor de pantalla de GNOME. GDM, que se instala con el escritorio GNOME al ser parte del mismo (aunque venga desactivado por omisión) se activa añadiendo gdm_enable="YES" a /etc/rc.conf. Tras reiniciar, GNOME arrancará automáticamente al acceder al sistema; no es necesario configurar nada más.

Puede arrancar GNOME también desde la línea de órdenes configurando adecuadamente un fichero llamado .xinitrc. Si ya tiene un .xinitrc personalizado tendrá que reemplazar la línea que arranca el gestor de ventanas anterior por otra que contenga /usr/local/bin/gnome-session. Si no ha modificado el fichero previamente basta con que teclée lo siguiente:

% echo "/usr/local/bin/gnome-session" > ~/.xinitrc

Después teclée startx y debería iniciarse el entorno de escritorio GNOME.

Nota: Si utiliza un gestor de pantalla antíguo, como XDM, lo anteriormente descrito no funcionará. Cree un fichero ejecutable .xsession con la misma orden en él. Edite el fichero y sustituya la orden para iniciar su actual gestor de ventanas por /usr/local/bin/gnome-session:

% echo "#!/bin/sh" > ~/.xsession
% echo "/usr/local/bin/gnome-session" >> ~/.xsession
% chmod +x ~/.xsession

Otra 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 cómo hacerlo para kdm, el gestor de pantalla de KDE.


5.7.1.3. Tipos «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 la Sección 5.5.3. Una vez configurado el software es posible utilizar «anti-aliasing» en el entorno de escritorio GNOME. Sólamente tiene que ir a Applications->Desktop Preferences->Font, y seleccione entre Best shapes, Best contrast, o Subpixel smoothing (LCDs). En el caso de una aplicación Gtk+ que no forme parte del escritorio GNOME asigne a la variable de entorno GDK_USE_XFT un valor de 1 antes de arrancar el programa.


5.7.2. KDE


5.7.2.1. Acerca de KDE

KDE es un entorno de escritorio contemporáneo y fácil de usar. Veamos alguna de las cosas que KDE brinda al usuario:

  • Un bello escritorio contemporáneo.

  • Un escritorio completamente transparente en red.

  • Un sistema de ayuda integrado que facilita un acceso adecuado y consistente a la ayuda durante el uso del escritorio KDE y sus aplicaciones.

  • Un aspecto consistente de todas las aplicaciones KDE.

  • Menús y barras de herramientas estándares, 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 útiles aplicaciones KDE.

KDE incluye un navegador web llamado Konqueror, que es un sólido competidor del resto de navegadores web existentes en sistemas UNIX. Puede encontrar más información sobre KDE en el sitio web de KDE. Si quiere información específica y recursos sobre KDE en FreeBSD consulte el sitio web del equipo de KDE en FreeBSD.

Hay dos versiones de KDE en FreeBSD: la versión 3 lleva ya bastante tiempo en el sistema y es muy estable en todos los sentidos. La versión 4, la nueva generación de KDE, también está en los ports. Si quiere puede instalar ambas versiones simultáneamente.


5.7.2.2. Instalación de KDE

Igual que sucede con GNOME o cualquier otro entorno de escritorio puede instalarlo como package o desde la Colección de Ports:

Si quiere instalar como package KDE3 (desde la red) escriba:

# pkg_add -r kde

Si quiere instalar como package KDE4 (desde la red) escriba:

# pkg_add -r kde4

pkg_add(1) descargará automáticamente la versión más reciente de la aplicación.

Si lo que desea es compilar KDE3 desde el código fuente utilice el árbol de ports:

# cd /usr/ports/x11/kde3
# make install clean

Si lo que desea es compilar KDE4 desde el código fuente utilice el árbol de ports:

# cd /usr/ports/x11/kde4
# make install clean

Una vez instalado KDE debe indicarle al servidor X cómo iniciar la aplicación para que se convierta en el gestor de ventanas por defecto. Edite .xinitrc:

Para KDE3:

% echo "exec startkde" > ~/.xinitrc

Para KDE4:

% echo "exec /usr/local/kde4/bin/startkde" > ~/.xinitrc

A partir de ahora cuando se llame al sistema X Window con startx el escritorio será KDE.

Si utiliza un gestor de pantalla, como por ejemplo xdm, la configuración es ligeramente diferente. En vez de lo antedicho edite .xsession. Las instrucciones para kdm se decribirán más adelante en este capítulo.


5.7.3. Más detalles sobre KDE

Una vez KDE está instalado en el sistema la mayoría de las cosas se pueden ir descubriendo utilizando las páginas de ayuda o sencillamente a golpe de ratón en los diversos menús. Los usuarios de Windows y Mac® se sentiráan como en casa.

La mejor referencia para KDE es la documentación «on-line». KDE incluye su propio navegador, Konqueror, docenas de útiles aplicaciones 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 sistemas multiusuario puede querer ofrecer a sus usuarios una pantalla de bienvenido que se les presente al acceder al sistema. Tal y como se ha explicado previamente puede usar XDM. De todos modos KDE incluye su propia alternativa, alternative, kdm, diseñado pensando en ser más atractivo y tener más opciones que ofrecer en el momento del acceso al sistema. Más concretamente ofrece a los usuarios la posibilidad de elegir mediante un menú qué entorno de escritorio (KDE, GNOME, o cualquier otro) quiere ejecutar el usuario una vez validado.

Si quiere activar kdm debe modificar la entrada de ttyv8 en /etc/ttys. La línea debe quedar del siguiente modo:

Si va a usar KDE3:

ttyv8 "/usr/local/bin/kdm -nodaemon" xterm on secure

En el caso de KDE4:

ttyv8 "/usr/local/kde4/bin/kdm -nodaemon" xterm on secure

5.7.4. XFce

5.7.4.1. Acerca de XFce

XFce es un entorno de escritorio basado en el «toolkit» GTK utilizado por GNOME pero es mucho 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 utilizando el ratón, con arrastrar y soltar, etc.

  • Panel principal similar al de CDE, con menús, «applets» y accesos directos a las aplicaciones.

  • Gestor de ventanas integrado, gestor de ficheros, gestor de sonido, módulo de compatibilidad con GNOME, y muchas cosas más.

  • Aspecto configurable (utiliza GTK).

  • Rápido, ligero y eficiente: ideal para máquinas viejas, lentas o máquinas con memoria limitada.

Puede encontrar 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 escriba:

# pkg_add -r xfce4

También puede compilarlo desde el código gracias a 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 la orden /usr/local/bin/startxfce4; puede configurar el gestor de pantalla para permitir elegir el escritorio en el momento de acceder al sistema tal y como se ha explicado en la sección de kdm.

II. Tareas comunes

Una vez tratados los aspectos más básicos, pasaremos a detallar alguna de las características más utilizadas de FreeBSD:

  • Introducción a algunas de las aplicaciones de escritorio más útiles y extendidas: 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 personalizado en FreeBSD, lo que le permitirá añadir nuevas funcionalidades al 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. Aplicaciones de escritorio

Escrito por Christophe Juniet.

6.1. Sinopsis

FreeBSD puede ejecutar gran número de aplicaciones de escritorio, como navegadores y procesadores de texto. La mayoría de ellas están disponibles como packages o se pueden compilar automáticamente desde la colección de ports. Muchos usuarios nuevos esperan encontrar este tipo de aplicaciones en su escritorio. Este capítulo mostrará cómo instalar de forma fácil algunas aplicaciones populares, bien como packages o desde la colección de ports.

Tenga en cuenta que cuando se instalan programas desde los ports se compilan desde el código fuente. Esto puede tardar muchísimo tiempo, dependiendo de qué esté compilando y la potencia de proceso de su máquina. Si compilar una o más aplicaciones le requiere una cantidad de tiempo desmesurada para sus necesidades recuerde que puede instalar la mayoría de programas de la Colección de Ports como packages precompilados.

FreeBSD tiene compatibilidad binaria con Linux, así que muchas aplicaciones originariamente desarrolladas para Linux existen también para su escritorio. Le recomendamos encarecidamente que lea el Capítulo 12 antes instalar aplicaciones Linux. Muchos de los ports que usan la compatibilidad binaria de Linux empiezan por «linux-». Recuérdelo cuando busque un port en particular, por ejemplo con whereis(1). En el siguiente texto se asume que ha habilitado usted la compatibilidad binaria de Linux antes de instalar aplicaciones de Linux.

Estas son las categorías que cubre este capítulo:

  • Navegadores (como Mozilla, Netscape, Opera, Firefox, Konqueror)

  • Productividad (como KOffice, AbiWord, The GIMP, OpenOffice.org)

  • Visores de documentos (como Acrobat Reader®, gv, Xpdf, GQview)

  • Finanzas (como GnuCash, Gnumeric, Abacus)

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

Si quiere más información sobre cómo conseguir un entorno un entorno multimedia en FreeBSD consulte el Capítulo 7. Si quiere configurar y usar el correo electrónico consulte el Capítulo 29.


6.2. Navegadores

FreeBSD no trae ningún navegador preinstalado, pero en el directorio www de la colección de ports tiene muchos navegadores listos para instalar. Si no tiene tiempo para compilarlo todo (esto puede requerir muchísimo tiempo en algunos casos) muchos de ellos están disponibles como packages.

KDE y GNOME ya proporcionan navegadores HTML. Consulte la Sección 5.7 para más información sobre cómo configurar estos escritorios.

Si busca navegadores ligeros tiene en la colección de ports www/dillo, www/links, o www/w3m.

Esta sección cubre estas aplicaciones:

Nombre de aplicación Recursos necesarios Instalación desde los Ports Dependencias importantes
Mozilla pesado pesado Gtk+
Opera ligero ligero Versiones para FreeBSD y Linux disponibles. La versión de Linux depende de la compatibiliad binaria de Linux y de linux-openmotif.
Firefox medio pesado Gtk+
Konqueror medio pesado KDE Librerís

6.2.1. Mozilla

Mozilla es una navegador moderno y estable que dispone de soporte completo en FreeBSD: dispone de un motor de presentación de HTML muy ajustado a los estándares, tiene cliente de correo electrónico, lector de noticias e incluso ofrece un editor de páginas HTML por si quiere crear páginas web. Los usuarios de Netscape encontrarán semejanzas con la suite Communicator, dado que ambos navegadores comparten parte de la base de desarrollo.

En máquinas lentas, con una CPU de velocidad inferior a 233MHz o con menos de 64MB de RAM, Mozilla puede consumir demasiados recursos para poder utilizarse. Puede usar el navegador Opera, mucho más ligero, que se describe más adelante en este mismo capítulo.

Si no puede o no quiere compilar Mozilla por algún motivo, el equipo de FreeBSD GNOME ya lo ha hecho por usted. Instale el package desde la red del siguiente modo:

# pkg_add -r mozilla

Si no hay package disponible y tiene suficiente tiempo y espacio en el disco puede obtener el código de Mozilla, compilarlo e instalarlo en su sistema. Esto se hace con:

# cd /usr/ports/www/mozilla
# make install clean

El port de Mozilla se asegura de que se inicialice adecuadamente ejecutando la configuración del registro «chrome» con privilegios de root, aunque si quiere instalar algún añadido como «mouse gestures» (gestos del ratón) tendrá que ejecutar que correr Mozilla como root para que se instale correctamente.

Una vez efectuada la instalación de Mozilla no es necesario ser root por más tiempo. Puede arrancar Mozilla como navegador escribiendo:

% mozilla

Puede arrancarlo directamente como lector de correo y noticias del siguiente modo:

% mozilla -mail

6.2.2. Firefox

Firefox es un navegador de nueva generación basado en el código fuente de Mozilla. Mozilla es una suite completa de aplicaciones en la que encontrará un navegador, un cliente de correo, un cliente de chat y muchas otras. Firefox es solamente un navegador, lo que hace que sea mucho más pequeño y ligero.

Puede instalarlo como package del siguiente modo:

# pkg_add -r firefox

Si prefiere compilar el código fuente e instalarlo desde los ports puede hacer esto otro:

# cd /usr/ports/www/firefox
# make install clean

6.2.3. Firefox, Mozilla y el «plugin» Java

Nota: En esta sección y en la siguiente asumiremos que ya ha instalado Firefox o Mozilla.

La FreeBSD Foundation disponde una licencia de Sun Microsystems que le permite distribuir binarios FreeBSD del Java Runtime Environment (JRE™) y del Java Development Kit (JDK™). Puede descargar packages binarios para FreeBSD desde el sitio webde la FreeBSD Foundation.

Para añadir soporte Java™ a Firefox o Mozilla tiene que instalar el port the java/javavmwrapper. Después descargue el package Diablo JRE desde http://www.freebsdfoundation.org/downloads/java.shtml e instálelo con pkg_add(1).

Arranque su navegador, introduzca about:plugins en la barra de navegación y pulse Intro. Verá una página con una lista de los «plugins» que tenga instalados; el «plugin» Java debería ser uno de los que aparezcan. Si no es así ejecute (como root) lo siguiente

# ln -s /usr/local/diablo-jre1.6.0/plugin/i386/ns7/libjavaplugin_oji.so \
  /usr/local/lib/browser_plugins/

y reinicie su navegador.


6.2.4. Opera

Opera es un navegador muy rápido, completo y que cumple con los estándares. Hay dos versiones: la versión «nativa» de FreeBSD y la versión que se ejecuta bajo la emulación de Linux. Para cada sistema operativo hay una versión gratuita que muestra publicidad y otra sin publicidad que se puede comprar en la página web de Opera.

Para navegar por la web con la versión para FreeBSD de Opera tendrá que instalar el package:

# pkg_add -r opera

Algunos sitios FTP no tienen todos los paquetes, pero puede instalarlo desde la Colección de Ports:

# cd /usr/ports/www/opera
# make install clean

Si quiere instalar la versión de Linux de Opera ponga linux-opera en lugar de opera en los atnteriores ejemplos. La versión de Linux es útil en situaciones donde se necesitan «plugins» de los que sólo hay versiones para Linux, como Adobe Acrobat Reader. En todos los demás aspectos las versiones de FreeBSD y Linux son iguales.


6.2.5. Konqueror

Konqueror forma parte de KDE pero también se puede instalar y usar independienmente de KDE instalando x11/kdebase3. Konqueror es mucho más que un navegador, también es gestor de ficheros y visor multimedia.

Konqueror también trae un conjunto de «plugins», disponibles en misc/konq-plugins.

Konqueror también soporta Flash, hay un tutorial en http://freebsd.kde.org/howto.php.


6.3. Productividad

Cuando se trata de productividad, normalmente los nuevos usuarios piensan en una buena suite ofimática o un procesador de textos amigable. Mientras que algunos entornos de escritorio como KDE ofrecen una suite ofimática propia, no hay una aplicación por defecto. FreeBSD permite usar todo lo que se necesite sin importar qué entorno de escritorio use.

Esta sección cubre estas aplicaciones:

Nombre de la aplicación Recursos necesarios Instalación desde los ports Dependencias importantes
KOffice ligero pesado KDE
AbiWord ligero ligero Gtk+ o GNOME
The Gimp ligero pesado Gtk+
OpenOffice.org pesado enorme GCC 3.1, JDK 1.3, Mozilla

6.3.1. KOffice

La comunidad de KDE ha dotado su entorno de escritorio con una suite ofimática totalmente independiente de KDE. Incluye los 4 componentes estándar que se pueden encontrar en otras suites ofimáticas. KWord es el procesador de textos, KSpread es la hoja de cálculo, KPresenter se encarga de las presentaciones y Kontour le permite dibujar documentos gráficos.

Antes de instalar el último KOffice asegúrese de que tiene una versión actualizada de KDE.

Para instalar KOffice como un paquete ejecute la siguiente orden:

# pkg_add -r koffice

Si el paquete no está disponible puede usar la colección de ports. Por ejemplo, para instalar KOffice para KDE3 haga lo siguiente:

# cd /usr/ports/editors/koffice-kde3
# make install clean

6.3.2. AbiWord

AbiWord es un procesador de textos libre con un aspecto parecido a Microsoft Word. Es útil para escribir documentos, cartas, informes, notas, etc. Es muy rápido, tiene muchas opciones y es muy amigable.

AbiWord puede importar o exportar muchos formatos de fichero, incluyendo algunos propietarios como Microsoft .doc.

AbiWord está disponible como package. Si quiere instalarlo haga lo siguiente:

# pkg_add -r AbiWord2

Si el package no está disponible por el motivo que fuere puede instalarlo desde la colección de Ports. La colección de ports debería estar más actualizada:

# cd /usr/ports/editors/AbiWord2
# make install clean

6.3.3. The GIMP

GIMP es un programa de manipulación de imágenes muy sofisticado que le permitirá también crearlas y retocarlas. Puede usarlo como un programa de dibujo sencillo o como una sofisticada herramienta de retoque fotográfico. Admite una gran cantidad de «plug-ins» y tiene opciones tan interesantes como una interfaz para «scripts». GIMP puede leer y escribir un gran número de formatos de fichero. Soporta escáners y tabletas gráficas.

Instale el package mediante la siguiente orden:

# pkg_add -r gimp

Si su servidor FTP no tiene este package puede usar la colección de ports. El directorio graphics de la colección de ports también contiene The Gimp Manual. Si quiere instalarlo haga lo siguiente:

# cd /usr/ports/graphics/gimp
# make install clean
# cd /usr/ports/graphics/gimp-manual-pdf
# make install clean

Nota: El directorio graphics de la colección de ports tiene la versión de desarrollo de GIMP en graphics/gimp-devel. Hay una versión en HTML de The Gimp Manual en graphics/gimp-manual-html.


6.3.4. OpenOffice.org

OpenOffice.org incluye todas las aplicaciónes esenciales en una completa suite ofimática: un procesador de textos, una hoja de cálculo, un gestor de presentaciones y un programa de dibujo. Su interfaz de usuario es muy parecida a otras suites ofimáticas y puede importar y exportar diversos formatos muy extendidos. Está disponible en diversos idiomas; el proceso de internacionalización incluye interfaces, correctores ortográficos y diccionarios.

El procesador de textos de OpenOffice.org usa un fichero XML nativo para aumentar la portabilidad y la eficiencia. El programa de hojas de cálculo tiene un lenguaje de macros y puede usarse desde bases de datos externas. OpenOffice.org es estable y hay versiones nativas para Windows, Solaris™, Linux, FreeBSD, y Mac OS X. Tiene más información sobre OpenOffice.org en la página web de OpenOffice. Si quiere información específica para FreeBSD, o si quiere bajar directamente los packages use la página web de FreeBSD OpenOffice Porting Team.

Para instalar OpenOffice.org ejecute:

# pkg_add -r openoffice

Nota: Si usa una versión -RELEASE de FreeBSD todo lo antedicho funcionará. Si usa cualquier otra versión visite el sitio web del FreeBSD OpenOffice.org Porting Team, desde el cual podrá descargar e instalar el package más adecuado e instalarlo mediante pkg_add(1). En este sitio web encontrará tanto una versión current como la de desarrollo.

Una vez instalado el package escriba la siguiente orden para ejecutar OpenOffice.org:

% openoffice.org

Nota: En el primer arranque se le harán diversas preguntas se creará un directorio .openoffice.org2 en su «home».

Si no hay packages de OpenOffice.org disponibles siempre tiene la opción de compilar el port. Tenga muy en cuenta que necesitará gran cantidad de espacio en disco y que este port necesita una cantidad de tiempo monstruosa para efectuar la compilación.

# cd /usr/ports/editors/openoffice.org-2
# make install clean

Nota: Si quiere compilar una de las muchas versiones que existen en idiomas distintos del inglés sustituya la orden anterior por la que se muestra a continuación:

# make LOCALIZED_LANG=su_idioma install clean

Sustituya su_idioma por el código ISO del idioma que quiera. Tiene una lista de códigos de idioma disponibles dentro del directorio del port en files/Makefile.localized.

Hecho esto puede ejecutar OpenOffice.org con la orden:

% openoffice.org

6.4. Visores de documentos

Desde la aparición de UNIX han ido apareciendo formatos de documento de lo más diverso, alguno de los cuales se ha hecho muy popular. Los visores de documentos estándar que requieren no tienen por qué estar en el sistema base. En esta sección veremos cómo instalar estos visores.

Esta sección cubre las siguientes aplicaciones:

Nombre de la aplicación Recursos necesarios Instalación desde los ports Dependencias importantes
Acrobat Reader ligero ligero Compatibilidad binaria de Linux
gv ligero ligero Xaw3d
Xpdf ligero ligero FreeType
GQview ligero ligero Gtk+ o GNOME

6.4.1. Acrobat Reader®

Muchos documentos se distribuyen en formato PDF, siglas de «Portable Document Format». Uno de los visores recomendados para este tipo de ficheros es Acrobat Reader, un producto de Adobe para Linux. Dado que FreeBSD puede ejecutar binarios de Linux también existe para FreeBSD.

Para instalar Acrobat Reader 7 desde la Colección de Ports ejecute:

# cd /usr/ports/print/acroread7
# make install clean

No hay package debido a las restricciones que impone la licencia del software.


6.4.2. gv

gv es un visor de PostScript y PDF. Tiene su origen en ghostview pero tiene un aspecto bastante mejorado gracias a la librería Xaw3d. Es rápido y tiene una interfaz limpia. gv tiene muchas opciónes como orientación, tamaño del papel, escalado o antialias. Casi todas las operaciones se pueden realizar desde el teclado o desde el ratón.

Para instalar gv como package ejecute:

# pkg_add -r gv

Si no puede obtener el package puede usar la colección de ports:

# cd /usr/ports/print/gv
# make install clean

6.4.3. Xpdf

Si quiere un visor de PDF pequeño, Xpdf es un visor ligero y eficiente. Requiere muy pocos recursos y es muy estable. Usa los tipos estándar de X y no depende de Motif ni de ningún otro «toolkit» de X.

Para instalar el package de Xpdf use la siguiente orden:

# pkg_add -r xpdf

Si el paquete no está disponible o prefiere usar la colección de ports ejecute:

# cd /usr/ports/graphics/xpdf
# make install clean

Una vez que la instalación haya concluido puede lanzar Xpdf; use el botón derecho del ratón para activar el menú.


6.4.4. GQview

GQview es un visor de imágenes. Puede ver un fichero con un click, lanzar un editor externo, obtener imágenes de previsualización y muchas cosas más. También tiene un modo de presentación y admite algunas opciones básicas de manipulación de ficheros. Puede gestionar colecciones de imágenes y encontrar ficheros duplicados con facilidad. GQview puede mostrar las imágenes a pantalla completa y está preparado para la internacionalización.

Si quiere instalar el paquete de GQview ejecute:

# pkg_add -r gqview

Si el paquete no está disponible o prefiere usar la colección de ports ejecute:

# cd /usr/ports/graphics/gqview
# make install clean

6.5. Finanzas

Si por algun motivo quisiera gestionar sus finanzas personales en su escritorio FreeBSD hay algunas aplicaciones potentes y sencillas de utilizar que puede instalar. Algunas de ellas son compatibles con formatos muy extendidos como documentos de Quicken® o Excel.

Esta sección cubre las siguientes aplicaciones:

Nombre de aplicación Recursos necesarios Instalación desde los ports Dependencias importantes
GnuCash ligero pesado GNOME
Gnumeric ligero pesado GNOME
Abacus ligero pesado Tcl/Tk
KMyMoney ligero pesado KDE

6.5.1. GnuCash

GnuCash es parte del afán de GNOME por ofrecer aplicaciones de uso sencillo pero a la vez potentes a los usuarios. Con GnuCash, puede gestionar sus ingresos y sus gastos, sus cuentas bancarias o sus acciones. Tiene una interfaz intuitiva pero muy profesional.

GnuCash dispone de un registro elegante, un sistema jerárquico de cuentas, muchos atajos de teclado y métodos de autocompletado. Puede dividir una transacción en varias partes más detalladas. GnuCash puede importar y mezclar ficheros QIF de Quicken. También admite muchos formatos internacionales de fecha y moneda.

Para instalar GnuCash en su sistema ejecute:

# pkg_add -r gnucash

Si el paquete no está disponible puede usar la colección de ports:

# cd /usr/ports/finance/gnucash
# make install clean

6.5.2. Gnumeric

Gnumeric es una hoja de cálculo que forma parte del entorno de escritorio GNOME. Implementa una «predicción» automática de la entrada del usuario de acuerdo con el formato de celda y un sistema de completado automático para múltiples secuencias. Puede importar ficheros de un gran número de formatos muy extendidos, como Excel, Lotus 1-2-3 o Quattro Pro. Gnumeric soporta gráficas mediante el programa de gráficas math/guppi. Tiene un gran n´mero de funciones internas y permite todos los formatos normales de celda como número, moneda, fecha, hora y muchos más.

Para instalar Gnumeric como package ejecute:

# pkg_add -r gnumeric

Si el package no está disponible puede usar la colección de ports del siguiente modo:

# cd /usr/ports/math/gnumeric
# make install clean

6.5.3. Abacus

Abacus es una hoja de cálculo pequeña y fácil de usar. Tiene muchas funciones útiles en varios ámbitos como la estadística, las finanzas y las matemáticas. Puede importar y exportar ficheros con formato Excel. Abacus puede generar ficheros PostScript.

Para instalar Abacus como package ejecute:

# pkg_add -r abacus

Si no hay package al alcance puede usar la colección de ports:

# cd /usr/ports/deskutils/abacus
# make install clean

6.6. Resumen

FreeBSD está muy extendido en ISP por su alto rendimiento y estabilidad, pero también se puede usar a diario como escritorio. Hay miles de aplicaciones disponibles como packages o ports con las que puede crear un escritorio que cubra todas sus necesidades.

Aqui hay un resumen de todas las aplicaciones cubiertas en este cápitulo:

Nombre De La Aplicación Nombre Del Paquete Nombre Del Port
Mozilla mozilla www/mozilla
Opera opera www/opera
Firefox firefox www/firefox
KOffice koffice-kde3 editors/koffice-kde3
AbiWord AbiWord2 editors/AbiWord2
GIMP gimp graphics/gimp
OpenOffice.org openoffice editors/openoffice-1.1
Acrobat Reader acroread print/acroread7
gv gv print/gv
Xpdf xpdf graphics/xpdf
GQview gqview graphics/gqview
GnuCash gnucash finance/gnucash
Gnumeric gnumeric math/gnumeric
Abacus abacus deskutils/abacus
KMyMoney kmymoney2 finance/kmymoney2

Capítulo 7. Sonido

Contributed by Moses Moore.

7.1. Sinopsis

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 ficheros 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 ficheros MP3.

  • Cómo convertir pistas de audio CD en ficheros de datos.

Antes de leer éste capítulo debería:

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


7.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. Esta 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 controlador 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.


7.2.1. Tarjetas Creative, Advance, y ESS Sound

Si tiene una de las siguientes tarjetas debe añadir:

device pcm

a su fichero 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 fichero 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. Consulte la página de manual de sbc(4) 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 esta sección. Recomendamos que se actualice a la última versión -STABLE antes de intentar usar ésta tarjeta.


7.2.2. Tarjetas Gravis UltraSound

Para una tarjeta PnP ISA, necesitará añadir:

device pcm
device gusc

al fichero 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 fichero de configuración de su kernel. Puede necesitar cambiar la IRQ u otro tipo de datos para que ajusten con su tarjeta. Consulte la página de manual de gusc(4) para más información.


7.2.3. Tarjetas Crystal Sound

Para tarjetas Crystal necesitará añadir:

device pcm
device csa

al fichero de configuración de su kernel.


7.2.4. Soporte Genérico

Para tarjetas PnP ISA o tarjetas PCI, necesitará añadir:

device pcm

al fichero 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 fichero de configuración del kernel. Puede necesitar cambiar la IRQ u otros parámetros para que ajusten con su tarjeta.


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

7.3. Recompilar el kernel

Una vez conseguido el fichero de configuración del kernel que necesita debe recompilar el kernel. Por favor consulte el capítulo Sección 8.3 del manual para más información.


7.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 de la orden hay algún error en los pasos previos. Si esto sucede vuelva a su fichero de configuración del kernel y asegúrese de que ha elegido el dispositivo adecuado. Consulte la sección de problemas para más opciones.

Si al ejecutar la orden 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: Las órdenes 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.


7.5. Problemas comunes

7.5.1. ¡Recibo un error "unsupported subdevice XX" !
7.5.2. ¡Tengo un error "sb_dspwr(XX) timed out" !
7.5.3. ¡Tengo un error "bad irq XX"!
7.5.4. Me da un error “nombre_del_error>xxx: gus pcm not attached, out of memory.” ¿Por qué me pasa ésto?

7.5.1. ¡Recibo un error "unsupported subdevice XX" !

Uno o más nodos de dispositivos no se crearon correctamente. Repita los pasos anteriores.

7.5.2. ¡Tengo un error "sb_dspwr(XX) timed out" !

El puerto I/O que ha puesto no es el correcto.

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

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


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


7.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 órdenes.

mpg123 puede usarse indicándole un dispositivo de sonido concreto y el fichero MP3 en la línea de órdenes 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.


7.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. Esto se hace convirtiendo los datos raw CDDA (CD Digital Audio) en fichero 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, la siguiente orden (como root) convertirá un CD entero en ficheros 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 de la orden 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.


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

Partiendo de ficheros WAV previamente extraídos, la siguiente orden 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 fichero MP3. Puede encontrar más opciones consultando el manual de lame.


7.6.4. Decodificando MP3

Para grabar un CD de audio desde ficheros 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 ficheros.

  7. Cargue el fichero 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 fichero.

  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 fichero 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 8. Configuración del kernel de FreeBSD

Actualizado y reestructurado por Jim Mock. Contribución original por Jake Hamby.

8.1. Sinopsis

El kernel de FreeBSD es el corazón del sistema operativo. Es el responsable de la gestión y control de la memoria, reforzamiento de los controles de seguridad, gestión de redes acceso a dispositivos, y muchas cosas más. Aunque FreeBSD es un sistema dinámico y configurable en ciertas ocasiones sigue siendo necesario reconfigurar y recompilar un kernel hecho a la medida de nuestras necesidades.

Una vez leido este capítulo usted sabrá:

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

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

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

  • Cómo instalar su nuevo kernel.

  • Cómo crear los ficheros en /dev que pudieran ser necesarios.

  • Cómo resolver algunos problemas si algo sale mal.


8.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.


8.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 órdenes, 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. compilaciócion del 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. compilación del kernel de una “nueva” forma

  1. Diríjase 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 órdenes; 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.


8.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 números: 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 la orden 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[6]. 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 la orden 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: 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 biblioteca 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.


8.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 la siguientes orden 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.


8.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 la orden config de como resultado un error:

Si 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 fichero de configuración (al que llamamos “MYKERNEL”). Afortunadamente 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 órdenes. Asegúrese de que la palabra clave se ha escrito correctamente al compararla con la que corresponde al fichero GENERIC o alguna otra referencia.

Cuando make falla:

Cuando 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 un error al instalarlo (cuando 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, órdenes como ps(1) no trabajarán correctamente. La orden para “desbloquear” el fichero del kernel que instala la orden 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 la orden:

# 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 órdenes de sistema, como ps(1) y vmstat(8) ya no van a funcionar. Deberá recompilar la biblioteca 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 9. Depurando el Kernel

Contribución de Paul Richards y Jörg Wunsch


9.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)


9.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.


9.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.


9.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.


9.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.


9.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 10. 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.


10.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.


10.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 11. Imprimir

Aportado por Sean Kelly. Reestructurado y actualizado por Jim Mock.

11.1. Sinopsis

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 8).


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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 .


11.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.


11.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:

11.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:

11.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

11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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).


11.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.


11.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”.


11.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.


11.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

11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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

11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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.


11.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

11.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
   

11.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.


11.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.


11.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!


11.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.


11.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).


11.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.


11.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 12. Compatibilidad binaria con Linux

Reestructurado y actualizado por Jim Mock. Escrito por Brian N. Handy y Rich Murphey.

12.1. Sinopsis

FreeBSD proporciona compatibilidad de binarios con muchos otros sistemas operativos tipo UNIX, incluyendo Linux. Puede estarse preguntando ¿por qué necesita FreeBSD ejecutar binarios de Linux? La respuesta a esa pregunta es muy simple. Muchos desarrolladores y compañías desarrollan sólo para Linux, ya que últimamente es el blanco de todas las miradas dentro del mundo de las tecnologís de la información. Esto hace que la comunidad FreeBSD tenga que exigir a esas compañías y desarrolladores que produzcan versiones nativas de sus aplicaciones para FreeBSD. El problema es que la mayoría de esas compañías no suelen saber realmente cuánta gente utilizaría su producto si existieran esas versiones para FreeBSD, y la mayoría continúa desarrollando únicamente para Linux. Vista la situación ¿que puede hacer un usuario de FreeBSD? Aquí es donde entra en juego la compatibilidad binaria con Linux.

Para expresarlo en pocas palabras, dicha compabitilidad permite a los usuarios de FreeBSD cerca del 90% de las aplicaciones de Linux sin tener que modificarlas en absoluto. Entre estas está StarOffice, la versión Linux de Netscape, Adobe® Acrobat®, RealPlayer®, VMware, Oracle, WordPerfect®, Doom, Quake y muchas más. En determinados casos los binarios Linux rinden mejor en FreeBSD que en Linux.

Existen, por desgracia, ciertas características específicas de Linux que no funcionan en FreeBSD. Los binarios Linux no funcionarán en FreeBSD si recurren a llamadas específicas de i386 como la activación del modo virtual 8086.

Tras leer este capítulo sabrá:

  • cómo activar la compatibilidad binaria con Linux en su sistema.

  • cómo instalar bibliotecas compartidas de Linux que pueda necesitar.

  • cómo instalar aplicaciones de Linux en su sistema FreeBSD.

  • cuáles son los detalles de la implementación de compatibilidad binaria con Linux en FreeBSD.

Antes de leer este capítulo es necesario que sepa:


12.2. Instalación

La compatibilidad binaria con Linux no está activada por defecto. La forma más sencilla de habilitarla es cargar el KLD (“objeto cargable en el kernel”) linux. Como usuario root proceda del siguiente modo:

# kldload linux

Si quiere que la compatibilidad con Linux esté siempre activada tendrá que añadir la siguiente línea en /etc/rc.conf:

linux_enable="YES"

Utilice kldstat(8) para verificar que el KLD esté cargado:

% kldstat
Id Refs Address    Size     Name
 1    2 0xc0100000 16bdb8   kernel
 7    1 0xc24db000 d000     linux.ko

Si por alguna razón no desea o no puede cargar el KLD, entonces puede enlazar estaticamente la compatibilidad de binarios Linux en el kernel agregando options COMPAT_LINUX a su archivo de configuración del kernel. Entonces instale su nuevo kernel como se describe en Capítulo 8.


12.2.1. Instalación de bibliotecas de ejecución Linux

Puede hacerse de dos maneras, ya sea usando el port linux_base, o instalándolas de forma manual.


12.2.1.1. Instalación usando el port linux_base

Este es con mucho el método mas sencillo para instalar bibliotecas de ejecución. Es como instalar cualquier otro port desde la colección de ports. Es tan sencillo como esto:

# cd /usr/ports/emulators/linux_base
# make install distclean

Hecho esto debería disponer de compatibilidad binaria con Linux. Algunos programas pueden “quejarse” por la presencia de versiones antiguas de algunas bibliotecas del sistema. En general esto no es un problema muy grave.

Nota: Pueden existir múltiples versiones del port emulators/linux_base disponibles correspondientes a distintas versiones de diversas distribuciones de Linux. Tendrá que instalar el port que más se ajuste a las necesidades de las aplicaciones de Linux que quiera instalar.


12.2.1.2. Instalación manual de bibliotecas

Si, por el motivo que fuese, no tiene instalada la colección de ports puede instalar las bibliotecas que necesite de forma manual. Necesitará las bibliotecas compartidas Linux de las que depende el programa y el enlazador en tiempo de ejecución (“runtime linker”). Necesitará también crear un directorio /compat/linux donde alojar las bibliotecas Linux en su sistema FreeBSD Cualquier biblioteca compartida a la que haya recurrido un programa de Linux ejecutado en FreeBSD buscará en primer lugar en dicho directorio. Por lo tanto, si se carga un programa Linux, por ejemplo /lib/libc.so, FreeBSD intentará en primer lugar abrir /compat/linux/lib/libc.so y, si no existe, lo intentará con /lib/libc.so. Las bibliotecas compartidas deben instalarse en /compat/linux/lib en lugar de las rutas que el ld.so de Linux proporcione.

En general, necesitará buscar las bibliotecas compartidas de las que los binarios Linux dependen sólamente las primeras veces que instale un programa Linux en su FreeBSD. Más adelante tendrá un conjunto suficiente de bibliotecas compartidas Linux en su sistema para poder ejecutar binarios Linux sin que tenga que hacer nada más.


12.2.1.3. Cómo instalar bibliotecas compartidas adicionales

¿Que pasaría si instalara el port linux_base y su aplicación todavía tuviera problemas debido a bibliotecas compartidas que no encuentra en el sistema? ¿Cómo saber qué bibliotecas compartidas necesitan los binarios Linux? Básicamente hay dos posibilidades (para poder ejecutar las siguientes instrucciones necesitará estar como root.

Si tiene acceso a un sistema Linux busque en él qué bibliotecas necesita la aplicación, y cópielas a su sistema FreeBSD. Veamos unos ejemplos:

Asumiremos que utilizó FTP para conseguir los binarios Linux de Doom, y los puso en un sistema Linux. Para ver qué bibliotecas compartidas necesitará ejecute ldd linuxdoom:

% ldd linuxdoom
libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29

Necesitaría todos los ficheros de la segunda columna, y tendrá que ponerlos en /compat/linux con los nombres de la primera columna como enlaces simbólicos apuntando hacia ellos. De este modo tendría en su sistema FreeBSD los siguientes ficheros:

/compat/linux/usr/X11/lib/libXt.so.3.1.0
/compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3.1.0
/compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0
/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29

Nota: Recuerde que si ya tiene una biblioteca compartida Linux con un número de versión mayor que coincida con la primera columna de la salida de ldd no necesitará copiar el fichero que aparece en la última columna; el que tiene debería funcionar, aunque se aconseja copiar la biblioteca compartida de todas maneras si es una nueva versión. Puede eliminar la vieja siempre que haga que el enlace simbólico apunte a la nueva. Si tiene estas bibliotecas en su sistema:

/compat/linux/lib/libc.so.4.6.27
/compat/linux/lib/libc.so.4 -> libc.so.4.6.27

y un binario requiere una versión más reciente (como indica la siguiente salida de ldd):

libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29

si solo ve una o dos versiones desfasadas en los últimos dígitos no se preocupe de copiar /lib/libc.so.4.6.29, el programa debería funcionar bien con una versión ligeramente antigua. De todas formas, si así lo prefiere, puede reemplazar libc.so, y el resultado sería este:

/compat/linux/lib/libc.so.4.6.29
/compat/linux/lib/libc.so.4 -> libc.so.4.6.29

Nota: El mecanismo de enlazado simbólico sólamente es necesario con binarios Linux. El enlazador en tiempo de ejecución de FreeBSD se encarga de buscar él mismo las versiones correctas, así que no tendrá que preocuparse usted de hacerlo.


12.2.2. Instalar binarios ELF Linux

Los binarios ELF algunas veces requieren un paso extra de “marcado”. Si trata de ejecutar un binario ELF no marcado, recibirá un mensaje de error como el siguiente:

% ./mi-binario-elf
ELF binary type not known
Abort

Para ayudar al kernel de FreeBSD a distinguir entre un binario ELF de FreeBSD y uno de Linux, utilice brandelf(1).

% brandelf -t Linux mi-binario-elf-de-linux

Las herramientas GNU se encargan de ubicar automáticamente la marca apropiada en los binarios ELF, por lo tanto este paso será innecesario en un futuro próximo.


12.2.3. Configuración de la resolución de nombres de equipos

Si el DNS no funciona u obtiene este mensaje:

resolv+: "bind" is an invalid keyword resolv+:
"hosts" is an invalid keyword

Necesitará un fichero /compat/linux/etc/host.conf con el siguiente contenido:

order hosts, bind
multi on

Significa que /etc/hosts seráanalizado en primer lugar y después se usará DNS. Si /compat/linux/etc/host.conf no está instalado, las aplicaciones Linux usan el /etc/host.conf de FreeBSD y chocan con la sintaxis (incompatible) de FreeBSD. Borre bind de su /etc/resolv.conf si no tiene configurado un servidor de nombres.


12.3. Instalación de Mathematica®

Actualizado para Mathematica 4.X por Murray Stokely. Fusionado con textos de Bojan Bistrovic.

Este documento describe el proceso de instalación de la versión para Linux de Mathematica 4.X en un sistema FreeBSD.

La versión para Linux de Mathematica funciona perfectamente bajo FreeBSD, aunque los binarios liberados por Wolfram necesitan “marcarse” para que FreeBSD sepa que tiene que utilizar la ABI Linux para ejecutarlos.

La versión para Linux de Mathematica o la versión de Mathematica para estudiantes puede pedirse a Wolfram en su sitio web, http://www.wolfram.com/.


12.3.1. Marcado de los binarios Linux

Los binarios Linux están en el directorio Unix del CDROM de Mathematica que distribuye Wolfram. Debe copiar este árbol de directorios a su disco duro para más tarde marcar los binarios Linux con brandelf(1) y así poder ejecutar el instalador:

# mount /cdrom
# cp -rp /cdrom/Unix/ /directorio_local/
# brandelf -t Linux /directorio_local/Files/SystemFiles/Kernel/Binaries/Linux/*
# brandelf -t Linux /directorio_local/Files/SystemFiles/FrontEnd/Binaries/Linux/*
# brandelf -t Linux /directorio_local/Files/SystemFiles/Installation/Binaries/Linux/*
# brandelf -t Linux /directorio_local/Files/SystemFiles/Graphics/Binaries/Linux/*
# brandelf -t Linux /directorio_local/Files/SystemFiles/Converters/Binaries/Linux/*
# brandelf -t Linux /directorio_local/Files/SystemFiles/LicenseManager/Binaries/Linux/mathlm
# cd /directorio_local/Installers/Linux/
# ./MathInstaller

También puede activar el marcado por defecto de binarios ELF a Linux para todos los binarios no marcados procediendo del siguiente modo:

# sysctl kern.fallback_elf_brand=3

Esto hará que FreeBSD asuma que los binarios ELF utilicen la ABI Linux y por lo tanto podrá ejecutar el instalador directamente desde el CDROM.


12.3.2. Cómo obtener una contraseña de Mathematica

Antes de que pueda ejecutar Mathematica necesitará que Wolfram le facilite una contraseñ, que se corresponderá con la “ID de su máquina”.

Una vez que haya instalado las bibliotecas de compatibilidad en tiempo de ejecución y descomprimido Mathematica ejecute mathinfo en el directorio de instalación; él buscará el “ID de su máquina”. Este ID de máquina es en realidad la dirección MAC de su primera tarjeta de red.

# cd /directorio_local/Files/SystemFiles/Installation/Binaries/Linux
# mathinfo
disco.ejemplo.com 7115-70839-20412

Al registrarse en Wolfram, ya sea por correo, teléfono o fax, le proporcionarán la “ID de máquina” y le responderán con la correspondiente contraseña, compuesta por grupos de números. Use estos números cuando ejecute Mathematica por primera vez, exactamente como lo haría en cualquier otra plataforma de Mathematica.


12.3.3. Ejecución del Frontend de Mathematica a través de la red

Mathematica utiliza algunas fuentes especiales para mostrar ciertos caracteres que no suelen estar presentes en otros conjuntos de fuentes estándar (integrales, sumatorias, letras griegas, etc). El protocolo X requiere que estas fuentes se instalen en local. Tendrá que copiar estas fuentes desde el CDROM o desde un equipo donde ya haya instalado Mathematica a su máquina local. Estas fuentes suelen estar en /cdrom/Unix/Files/SystemFiles/Fonts en el CDROM, o /usr/local/mathematica/SystemFiles/Fonts en su disco duro. Las fuentes que necesitaremos están en los subdirectorios Type1 y X. Hay varias formas de utilizarlas, tal y como se describe más adelante.

La primera manera es copiarlas a uno de los directorios de fuentes en /usr/X11R6/lib/X11/fonts. Esto implica tener que editar fonts.dir y añadir los nombres de las fuentes, sin olvidar cambiar el número de fuentes en la primera línea. También puede hacerlo de otro modo: ejecute mkfontdir(1) en el directorio donde haya copiado las fuentes.

La segunda manera de hacerlo es copiar los directorios a /usr/X11R6/lib/X11/fonts:

# cd /usr/X11R6/lib/X11/fonts
# mkdir X
# mkdir MathType1
# cd /cdrom/Unix/Files/SystemFiles/Fonts
# cp X/* /usr/X11R6/lib/X11/fonts/X
# cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
# cd /usr/X11R6/lib/X11/fonts/X
# mkfontdir
# cd ../MathType1
# mkfontdir

Añada los nuevos directorios de fuentes a su ruta de fuentes:

# xset fp+ /usr/X11R6/lib/X11/fonts/X
# xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
# xset fp rehash

Si utiliza el servidor Xorg, puede hacer que estos directorios de fuentes se carguen automáticamente añadiéndolos a su fichero xorg.conf.

Nota: Si usa XFree86, el fichero de configuración es XF86Config.

Si todavía no tiene un directorio /usr/X11R6/lib/X11/fonts/Type1, puede cambiar el nombre del directorio MathType1 (que aparece en el ejemplo de arriba) a Type1.


12.4. Instalación de Maple

Escrito por Aaron Kaplan. Gracias a Robert Getschmann.

Maple es un programa comercial de matemáticas similar a Mathematica. Puede adquirir este software en http://www.maplesoft.com/; tras registrarlo recibirá un fichero de licencia. Si quiere instalar este software en FreeBSD siga los siguienes pasos:

  1. Ejecute el “script” de shell INSTALL desde el lugar de instalación del producto. Elija la opción “RedHat” cuando le pregunte el programa de instalación. Un típico directorio de instalación puede ser /usr/local/maple.

  2. Si no lo ha hecho ya, pida una licencia para Maple a Maple Waterloo Software (http://register.maplesoft.com/) y cópiela a /usr/local/maple/license/license.dat.

  3. Instale el gestor de licencias FLEXlm ejecutando el “script” de shell de instalación INSTALL_LIC que viene con Maple. Introduzca el nombre de su máquina (el servidor de licencias lo necesita).

  4. Parchée el fichero /usr/local/maple/bin/maple.system.type con lo siguiente:

       ----- snip ------------------
    *** maple.system.type.orig      Sun Jul  8 16:35:33 2001
    --- maple.system.type   Sun Jul  8 16:35:51 2001
    ***************
    *** 72,77 ****
    --- 72,78 ----
              # the IBM RS/6000 AIX case
              MAPLE_BIN="bin.IBM_RISC_UNIX"
              ;;
    +     "FreeBSD"|\
          "Linux")
              # the Linux/x86 case
            # We have two Linux implementations, one for Red Hat and
       ----- snip end of patch -----
    

    Por favor, tenga presente que después de "FreeBSD"|\ no debe haber ningún espacio en blanco.

    Este parche le dice a Maple que tome a “FreeBSD” como un tipo de sistema Linux. El “script” de shell bin/maple llama al “script” de shell bin/maple.system.type, que a su vez recurre a uname -a para saber el nombre del sistema operativo. Dependiendo de éste sabrá qué binarios utilizar.

  5. Inicio del servidor de licencias.

    El siguiente “script”, sito en /usr/local/etc/rc.d/lmgrd.sh, le permitirá arrancar lmgrd:

       ----- snip ------------
    
    #! /bin/sh
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin
    PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX
    export PATH
    
    LICENSE_FILE=/usr/local/maple/license/license.dat
    LOG=/var/log/lmgrd.log
    
    case "$1" in
    start)
        lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2
        echo -n " lmgrd"
        ;;
    stop)
        lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2
        ;;
    *)
        echo "Usage: `basename $0` {start|stop}" 1>&2
        exit 64
        ;;
    esac
    
    exit 0
       ----- snip ------------
    
  6. Prueba de arranque de Maple:

    % cd /usr/local/maple/bin
    % ./xmaple
    

    Debería funcionar perfectamente. Si es así aún le queda un último paso: escribir a Maplesoft y decirles que sería genial una versión nativa para FreeBSD.


12.4.1. Problemas frecuentes

  • El gestor de licencias FLEXlm puede ser una herramienta difícil de usar. Si la necesita, tiene más información sobre él en http://www.globetrotter.com/.

  • lmgrd tiene una reconocida fama de ser muy meticuloso en todo lo relacionado con el fichero de licencia; suele generar volcados de memoria si se encuentra con algún problema. Un fichero de licencia correcto tiene que parecerse mucho a este:

    # =======================================================
    # License File for UNIX Installations ("Pointer File")
    # =======================================================
    SERVER chillig ANY
    #USE_SERVER
    VENDOR maplelmg
    
    FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \
             PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \
             ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \
             SN=XXXXXXXXX
    

    Nota: El número de serie y la clave han sido sobreescritos con X. chillig es el nombre de un equipo.

    Puede editar el fichero de licencia siempre que no toque la línea “FEATURE” (que está protegida por la clave de la licencia).


12.5. Instalación de MATLAB®

Escrito por Dan Pelleg.

Este documento describe el proceso de instalación de la versión para Linux de MATLAB® version 6.5 en un sistema FreeBSD. En general funciona bastante bien, excepción hecha de Java Virtual Machine (consulte la Sección 12.5.3).

La versión Linux de MATLAB puede pedirse directamente en el sitio de The MathWorks, http://www.mathworks.com. Tiene que recibir también el fichero de licencia o instrucciones de cómo crearlo. Al hacer su pedido aproveche para decirles que deberían pensar en una versión nativa de su software para FreeBSD.


12.5.1. Instalación de MATLAB

Para instalar MATLAB haga los siguiente:

  1. Inserte el CD de instalación y móntelo. Conviértase en root e inicie la de instalación:

    # /compat/linux/bin/sh /cdrom/install
    

    Sugerencia: El instalador es gráfico. Si obtiene errores acerca de no ser capaz de abrir un display, teclée setenv HOME ~USUARIO, donde USUARIO es el nombre del usuario con el que hizo su(1).

  2. Teclée /compat/linux/usr/local/matlab donde el instalador le pida el directorio raíz de MATLAB.

    Sugerencia: Esto le facilitará la entrada de datos durante el resto de la instalación. Introduzca lo siguiente en el “prompt” de su shell: set MATLAB=/compat/linux/usr/local/matlab

  3. Edite el fichero de licencia tal y como consta en las instrucciones de la licencia de MATLAB.

    Sugerencia: Puede tenerlo ya editado y copiado a $MATLAB/license.dat desde antes de que el instalador se lo pida.

  4. Complete el proceso de instalación.

La instalación MATLAB ha finalizado. Los siguientes pasos aplicarán el “pegamento” necesario para conectarlo a su sistema FreeBSD.


12.5.2. Inicio del administrador de licencias

  1. Crée los enlaces simbólicos que necesitan los “scripts” del administrador de licencias:

    # ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW
    # ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW
    
  2. Crée un fichero de inicio en /usr/local/etc/rc.d/flexlm.sh. El siguiente ejemplo es una versión modificada del $MATLAB/etc/rc.lm.glnx86 que viene con la distribución de MATLAB. Los cambios que se han hecho en él obedecen a la ubicación de los ficheros y el arranque del administrador de licencias bajo emulación de Linux.

    #!/bin/sh
    case "$1" in
      start)
            if [ -f /usr/local/etc/lmboot_TMW ]; then
                  /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u username && echo 'MATLAB_lmgrd'
            fi
            ;;
      stop)
        if [ -f /usr/local/etc/lmdown_TMW ]; then
                /compat/linux/bin/sh /usr/local/etc/lmdown_TMW  > /dev/null 2>&1
        fi
            ;;
      *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;
    esac
    
    exit 0
    

    Importante: El fichero debe ser ejecutable:

    # chmod +x /usr/local/etc/rc.d/flexlm.sh
    

    Tendrá que reemplazar el nombre de usuario que se ha incluido en nuestro ejemplo por un nombre de usuario válido en su sistema (que no sea root).

  3. Arranque el administrador de licencias:

    # /usr/local/etc/rc.d/flexlm.sh start
    

12.5.3. Enlace el entorno de ejecución Java

Cambie el enlace del entorno de ejecución Java (JRE) a uno que funcione bajo FreeBSD:

# cd $MATLAB/sys/java/jre/glnx86/
# unlink jre; ln -s ./jre1.1.8 ./jre

12.5.4. Creación de un “script” de arranque para MATLAB

  1. Coloque el siguiente “script” de arranque en /usr/local/bin/matlab:

    #!/bin/sh
    /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"
    
  2. Escriba chmod +x /usr/local/bin/matlab.

Sugerencia: Dependiendo de su versión de emulators/linux_base tal vez obtenga errores al ejecutar este “script”. Para evitarlo edite /compat/linux/usr/local/matlab/bin/matlab y cambie la línea en la que aparece:

if [ `expr "$lscmd" : '.*->.*'` -ne 0 ]; then

(en la versión 13.0.1 es en la línea 410) por esta otra línea:

if test -L $newbase; then

12.5.5. Creación de un “script” para detener MATLAB

Dicho “script” solucionará el problema existente con las dificultades para detener MATLAB correctamente.

  1. Crée un fichero llamado $MATLAB/toolbox/local/finish.m y ponga en él una sola línea:

    ! $MATLAB/bin/finish.sh
    

    Nota: $MATLAB debe escribirse literalmente.

    Sugerencia: En el mismo directorio encontrará los ficheros finishsav.m y finishdlg.m, que le permiten guardar su trabajo antes de salir de la aplicación. Si quiere usar alguno de ellos, inserte la línea de arriba inmediatamente después del comando save.

  2. Crée un fichero $MATLAB/bin/finish.sh con el siguiente contenido:

    #!/usr/compat/linux/bin/sh
    (sleep 5; killall -1 matlab_helper) &
    exit 0
    
  3. El fichero tiene que ser ejecutable:

    # chmod +x $MATLAB/bin/finish.sh
    

12.5.6. Uso de MATLAB

Desde este momento está usted en disposición de teclear matlab y empezar a usarlo.


12.6. Instalación de Oracle®

Escrito por Marcel Moolenaar.

12.6.1. Prefacio

Este texto describe el proceso de instalación de Oracle 8.0.5 y Oracle 8.0.5.1 Enterprise Edition para Linux en una máquina FreeBSD.


12.6.2. Instalación del entorno Linux

Debe tener instalados los ports emulators/linux_base y devel/linux_devtools desde Si tiene dificultades con estos ports es posible que tenga que usar los paquetes o quizás versiones más antiguas de dichas aplicaciones que encontrará en la colección de ports.

Si quiere usar el agente inteligente también tendrá que instalar el paquete Tcl de Red Hat, tcl-8.0.3-20.i386.rpm. El comando genérico para instalar paquetes con el port oficial RPM (archivers/rpm) es:

# rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm paquete

La instalación de dicho paquete no debe generar ningún error.


12.6.3. Creación del entorno Oracle

Antes de instalar Oracle, tendrá que configurar un entorno apropiado. Este documento solamente explica lo que hay que hacer especialmente para utilizaa la versión de Linux para Oracle en FreeBSD, no lo que figura en la guía de instalación de Oracle.


12.6.3.1. Personalización del kernel

Tal y como consta en la guía de instalación de Oracle, debe configurar la cantidad máximo de memoria compartida. No utilice SHMMAX en FreeBSD. SHMMAX se calcula a partir de SHMMAXPGS y PGSIZE, así que defina SHMMAXPGS. Todas las demás opciones pueden usarse tal y como se describe en la guía. Por ejemplo:

options SHMMAXPGS=10000
options SHMMNI=100
options SHMSEG=10
options SEMMNS=200
options SEMMNI=70
options SEMMSL=61

Configure estas opciones para que se ajusten al uso que pretenda darle a Oracle.

Asegúrese también de las siguientes opciones están en el fichero de configuración de su kernel:

options SYSVSHM #SysV shared memory
options SYSVSEM #SysV semaphores
options SYSVMSG #SysV interprocess communication

12.6.3.2. Cuenta Oracle

Crée una cuenta oracle según el procedimiento habitual de creación de usuarios. La cuenta oracle, empero, tiene algo especial, puesto que debe teer una shell de Linux. Añada /compat/linux/bin/bash a /etc/shells y asigne a la cuenta oracle lo siguiente /compat/linux/bin/bash como shell por defecto.


12.6.3.3. Entorno

Además de las variables normales para Oracle, como ORACLE_HOME y ORACLE_SID, debe configurar las siguientes variables de entorno:

Variable Valor
LD_LIBRARY_PATH $ORACLE_HOME/lib
CLASSPATH $ORACLE_HOME/jdbc/lib/classes111.zip
PATH /compat/linux/bin /compat/linux/sbin /compat/linux/usr/bin /compat/linux/usr/sbin /bin /sbin /usr/bin /usr/sbin /usr/local/bin $ORACLE_HOME/bin

Le aconsejamos configurar todas las variables de entorno en .profile. Veamos un ejemplo completo:

ORACLE_BASE=/oracle; export ORACLE_BASE
ORACLE_HOME=/oracle; export ORACLE_HOME
LD_LIBRARY_PATH=$ORACLE_HOME/lib
export LD_LIBRARY_PATH
ORACLE_SID=ORCL; export ORACLE_SID
ORACLE_TERM=386x; export ORACLE_TERM
CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip
export CLASSPATH
PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin
PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin
PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin
export PATH

12.6.4. Instalación de Oracle

Debido a una pequeña inconsistencia en el emulador Linux tendrá que crear un directorio llamado .oracle en /var/tmp antes de iniciar el instalador. Haga que sea propiedad del usuario oracle. Ahora deberí poder instalar Oracle sin ningún problema. Si no es así revise su distribución Oracle y/o su configuración. Una vez finalizada la instalación de Oracle, aplique los parches que se detallan en las dos siguientes subsecciones.

Un problema que se da con una cierta frecuencia es que el adaptador del protocolo TCP no está correctamente instalado. Como consecuencia, no puede iniciarse ningún escucha TCP. Esto le ayudará a resolver el problema:

# cd $ORACLE_HOME/network/lib
# make -f ins_network.mk ntcontab.o
# cd $ORACLE_HOME/lib
# ar r libnetwork.a ntcontab.o
# cd $ORACLE_HOME/network/lib
# make -f ins_network.mk install

No se olvide de ejecutar root.sh de nuevo


12.6.4.1. Cómo parchear root.sh

Durante la instalación de Oracle algunas acciones que requieren ser ejecutadas como root deben almacenarse en un “script” de shell llamado root.sh. Dicho “script” está en el directorio orainst. Aplique el siguiente parche a root.sh para que utilice la ruta correcta de chown o ejecute el “script” bajo una shell nativa de Linux.

*** orainst/root.sh.orig Tue Oct 6 21:57:33 1998
--- orainst/root.sh Mon Dec 28 15:58:53 1998
***************
*** 31,37 ****
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/bin/chown
#
# Define variables to be used in this script
--- 31,37 ----
# This is the default value for CHOWN
# It will redefined later in this script for those ports
# which have it conditionally defined in ss_install.h
! CHOWN=/usr/sbin/chown
#
# Define variables to be used in this script

Si no está instalando Oracle desde un CD puede parchear las fuentes de root.sh. Es rthd.sh y está en el directorio orainst, en el árbol de fuentes.


12.6.4.2. Cómo parchear genclntsh

El “script” genclntsh se usa para crear una biblioteca de cliente compartida y para construir los demos. Al aplicar el siguiente parche comentará la definición de PATH:

*** bin/genclntsh.orig Wed Sep 30 07:37:19 1998
--- bin/genclntsh Tue Dec 22 15:36:49 1998
***************
*** 32,38 ****
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst
--- 32,38 ----
#
# Explicit path to ensure that we're using the correct commands
#PATH=/usr/bin:/usr/ccs/bin export PATH
! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH
#
# each product MUST provide a $PRODUCT/admin/shrept.lst

12.6.5. Ejecución de Oracle

Una vez seguidas estas instrucciones podrá ejecutar Oracle como si la hubiera instalado Linux.


12.7. Instalación de SAP® R/3®

Escrito por Holger Kipp. Versión original convertida a SGML por Valentino Vaschetto.

Las instalaciones de sistemas SAP en FreeBSD no tienen soportadas de SAP. SAP sólamente ofrece soporte para plataformas certificadas.


12.7.1. Introducción

Este texto expone una forma de instalar un SAP R/3 System con una Oracle Database para Linux en una máquina FreeBSD, incluyendo la instalación de FreeBSD y Oracle. Se muestran dos configuraciones diferentes:

  • SAP R/3 4.6B (IDES) con Oracle 8.0.5 en FreeBSD 4.3-STABLE

  • SAP R/3 4.6C con Oracle 8.1.7 en FreeBSD 4.5-STABLE

Aunque este documento trate de describir todos los pasos importantes con detalle no ha sido escrito como sustituto de las guías de instalación de Oracle y SAP R/3.

Por favor, consulte la documentación de SAP R/3 que se incluye en la edición para Linux de SAP y las preguntas específicas sobre Oracle, así como los recursos que estén a su disposición sobre Oracle y SAP OSS.


12.7.2. Software

Durante la instalación de SAP se han utilizado los siguientes CD-ROM:


12.7.2.1. SAP R/3 4.6B, Oracle 8.0.5

Nombre Número Descripción
KERNEL 51009113 SAP Kernel Oracle / Installation / AIX, Linux, Solaris
RDBMS 51007558 Oracle / RDBMS 8.0.5.X / Linux
EXPORT1 51010208 IDES / DB-Export / Disco 1 de 6
EXPORT2 51010209 IDES / DB-Export / Disco 2 de 6
EXPORT3 51010210 IDES / DB-Export / Disco 3 de 6
EXPORT4 51010211 IDES / DB-Export / Disco 4 de 6
EXPORT5 51010212 IDES / DB-Export / Disco 5 de 6
EXPORT6 51010213 IDES / DB-Export / Disco 6 de 6

También utilizamos el CD de Oracle 8 Server (versión pre-producción 8.0.5 para Linux, versión de kernel 2.0.33), que no es realmente necesario y FreeBSD 4.3-STABLE (a unos cuantos días de la liberación de 4.3-RELEASE).


12.7.2.2. SAP R/3 4.6C SR2, Oracle 8.1.7

Nombre Número Descripción
KERNEL 51014004 SAP Kernel Oracle / SAP Kernel Version 4.6D / DEC, Linux
RDBMS 51012930 Oracle 8.1.7/ RDBMS / Linux
EXPORT1 51013953 Release 4.6C SR2 / Export / Disco 1 de 4
EXPORT1 51013953 Release 4.6C SR2 / Export / Disco 2 de 4
EXPORT1 51013953 Release 4.6C SR2 / Export / Disco 3 de 4
EXPORT1 51013953 Release 4.6C SR2 / Export / Disco 4 de 4
LANG1 51013954 Release 4.6C SR2 / Language / DE, EN, FR / Disco 1 de 3

Según los idiomas que quiera usar es posible que necesite otros CD de idiomas. Sólo hemos utilizado DE y EN, así que nos bastó con el primer CD. Para su información, los números de los cuatro CD EXPORT son idénticos. Los tres CD de idiomas también tienen el mismo número, aunque esto es distinto en los CD de la versión 4.6B IDES. Al escribir este texto (20.03.2002) ejecutamos la instalación en FreeBSD 4.5-STABLE (20.03.2002).


12.7.3. Notas SAP

Las siguientes notas han resultado ser muy útiles durante la instalación, así que le recomendamos encarecidamente que las lea antes de instalar SAP R/3:


12.7.3.1. SAP R/3 4.6B, Oracle 8.0.5

Número Título
0171356 Software SAP en Linux: Comentarios esenciales
0201147 INST: 4.6C R/3 Inst. en UNIX - Oracle
0373203 Actualización / Migración Oracle 8.0.5 --> 8.0.6/8.1.6 LINUX
0072984 Versión de Digital UNIX 4.0B para Oracle
0130581 R3SETUP step DIPGNTAB terminates
0144978 Su sistema no ha sido instalado correctamente
0162266 Preguntas y consejos para R3SETUP en Windows NT / W2K

12.7.3.2. SAP R/3 4.6C, Oracle 8.1.7

Número Título
0015023 Inicializar tabla TCPDB (RSXP0004) (EBCDIC)
0045619 R/3 y diversos idiomas o tipos de letra
0171356 Software SAP en Linux: Comentarios esenciales
0195603 RedHat 6.1 Enterprise version: Problemas habituales
0212876 La nueva herramienta de archivado SAPCAR
0300900 Linux: Released DELL Hardware
0377187 RedHat 6.2: Observaciones importantes
0387074 INST: R/3 4.6C SR2 Instalación en UNIX
0387077 INST: R/3 4.6C SR2 Inst. en UNIX - Oracle
0387078 Software SAP en UNIX: Dependencias de OS 4.6C SR2

12.7.4. Requisitos de hardware

El siguiente equipo es suficiente para la instalación de un sistema SAP R/3. Si pretende darle uso de producción necesitará un estudio más detallado:

Componente 4.6B 4.6C
Procesador Pentium III 800MHz x 2 Pentium III 800MHz x 2
Memoria 1GB ECC 2GB ECC
Espacio en disco 50-60GB (IDES) 50-60GB (IDES)

Para su uso en producción le recomendamos procesadores Xeon con una caché grande, discos de alta velocidad (SCSI, controlador de RAID por hardware), USV y ECC-RAM. Un espacio en disco tan grande se debe al sistema IDES preconfigurado, que crea ficheros de base de datos de 27 GB durante la instalación. Este espacio también es suficiente para sistemas de producción iniciales y datos de aplicación.


12.7.4.1. SAP R/3 4.6B, Oracle 8.0.5

Este es el hardware que utilizamos al escribir este texto: placa base dual con 2 procesadores Pentium III a 800 MHz, adaptador SCSI Adaptec® 29160 Ultra160 (para acceder a una unidad de cinta 40/80 GB DLT y CDROM), Mylex® AcceleRAID™ (2 canales, firmware 6.00-1-00 con 32 MB RAM). La controladora Mylex RAID tiene conectados dos discos duros de 17 GB (replicados) y cuatro discos duros de 36 GB (RAID nivel 5).


12.7.4.2. SAP R/3 4.6C, Oracle 8.1.7

Para esta instalación se usó un DellPowerEdge™ 2500: placa base dual con 2 procesadores Pentium III a 1000 MHz (256 kB de Caché), 2 GB PC133 ECC SDRAM, controladora RAID PERC/3 DC PCI con 128 MB y una unidad EIDE DVD-ROM. La controladora RAID tiene conectados dos discos duros 18 GB (replicados) y cuatro discos duros de 36 GB (RAID nivel 5).


12.7.5. Instalación de FreeBSD

Lo primero que tiene que hacer es instalar FreeBSD. Hay muchas formas de hacerlo. Nosotros instalamos FreeBSD 4.3 desde un FTP y FreeBSD 4.5 desde el CD de la distribución. Si necesita más información sobre los medios de instalación de FreeBSD consulte la Sección 2.13.


12.7.5.1. Esquema de disco

Quisimos hacer el proceso lo más simple posible, así que usamos el esquema de disco de SAP R/3 46B y SAP R/3 46C SR2. Sólo cambiamos los nombres de dispositivos debido a que las instalaciones tuvieron lugar en en hardware diferente (/dev/da y /dev/amr respectivamente. Si se utiliza una AMI MegaRAID®, vería en pantalla /dev/amr0s1a en lugar de /dev/da0s1a):

Sistema de ficheros Tamaño (bloques de 1k) Tamaño (GB) Montado en
/dev/da0s1a 1.016.303 1 /
/dev/da0s1b   6 swap
/dev/da0s1e 2.032.623 2 /var
/dev/da0s1f 8.205.339 8 /usr
/dev/da1s1e 45.734.361 45 /compat/linux/oracle
/dev/da1s1f 2.032.623 2 /compat/linux/sapmnt
/dev/da1s1g 2.032.623 2 /compat/linux/usr/sap

Configure e inicialice antes que nada las dos unidades lógicas con el software Mylex o PERC/3 RAID. El software puede iniciarse durante la fase de arranque del BIOS.

Por favor, tenga en cuenta que el esquema de disco que utilizamos difiere ligeramente de las recomendaciones de SAP, ya que SAP sugiere montar los subdirectorios Oracle (y algunos otros) por separado. Decidimos crearlos como subdirectorios reales para simplificar.


12.7.5.2. make world y un nuevo Kernel

Descargue las fuentes -STABLE más recientes. Ejecute make world y genere su kernel personalizado. Recuerde incluir en él tanto los parámetros del kernel requeridos por SAP R/3 como por Oracle.


12.7.6. Instalación del entorno Linux

12.7.6.1. Instalación del sistema base Linux

Primero instale el port linux_base (como root):

# cd /usr/ports/emulators/linux_base
# make install distclean

12.7.6.2. Instalación del entorno de desarrollo Linux

El entorno de desarrollo Linux es imprescindible si quiere instalar Oracle en FreeBSD según se explica en la Sección 12.6:

# cd /usr/ports/devel/linux_devtools
# make install distclean

El entorno de desarrollo Linux sólo ha de ser instalado si sigue el proceso para instalar SAP R/3 46B IDES. No es necesario si Oracle DB no está reenlazado (relinked) con el sistema FreeBSD. Este sería su caso si está usa el fichero comprimido tar de Oracle de un sistema Linux.


12.7.6.3. Instalación los RPM necesarios

Necesitará soporte PAM para iniciar el programa R3SETUP. Durante la primera instalación de SAP en FreeBSD 4.3-STABLE intentamos instalar PAM con todas las dependencias y finalmente forzamos la instalación del paquete PAM, y funcionó. En SAP R/3 4.6C SR2 forzamos la instalación del RPM PAM, que también funcionó, así que parece que las dependencias no lo son tanto:

# rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \
pam-0.68-7.i386.rpm

Para que Oracle 8.0.5 pueda lanzar el agente inteligente, también tendremos que instalar el paquete Tcl de RedHat tcl-8.0.5-30.i386.rpm (si no, en reenlazado durante la instalación de Oracle no funcionará). Existen otros aspectos relacionados con el reenlazado de Oracle a tener en cuenta durante la instalación, pero esos atañen a la versión para Linux de Oracle y no son específicos de FreeBSD.


12.7.6.4. Sugerencias

Seguramente es una buena idea añadir linprocfs a /etc/fstab. Consulte linprocfs(5) para más información. Otro parámetro que debería configurar es kern.fallback_elf_brand=3 en /etc/sysctl.conf.


12.7.7. Creación del ambiente SAP R/3

12.7.7.1. Creación de los sistemas de ficheros y puntos de montaje necesarios

Para una instalación sencilla es suficiente con crear los siguientes sistemas de ficheros:

punto de montaje tamaño en GB
/compat/linux/oracle 45 GB
/compat/linux/sapmnt 2 GB
/compat/linux/usr/sap 2 GB

También es necesario crear algunos enlaces. Si no, el instalador SAP se tendrá problemas, ya que buscará los siguientes enlaces:

# ln -s /compat/linux/oracle /oracle
# ln -s /compat/linux/sapmnt /sapmnt
# ln -s /compat/linux/usr/sap /usr/sap

Veamos unos cuantos errores que es posible que se le presenten durante la instalación (en este caso con el sistema PRD y la instalación de SAP R/3 4.6C SR2):

INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200
    Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to
    /sapmnt/PRD/exe. Creating if it does not exist...

WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400
    Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file
    /compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The
    program cannot go on as long as this link exists at this
    location. Move the link to another location.

ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0
    can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content
    '/sapmnt/PRD/exe'

12.7.7.2. Creación de usuarios y directorios

SAP R/3 necesita dos usuarios y tres grupos. Los nombres de usuario dependen del “SAP system ID” (SID), y consisten en tres letras. Algunos de estos SID están reservados por SAP (por ejemplo SAP y NIX. Tiene una lista completa de ellos en la documentación de SAP). Para la instalación de IDES usamos IDS y para la instalación de 4.6C SR2 PRD, dado que ese sistema está pensado para un uso de producción. Tenemos por lo tanto los siguientes grupos (Los ID de grupo pueden ser diferentes, estos son sólamente los valores que utilizamos en nuestra instalación):

ID de grupo nombre de grupo descripción
100 dba Administrador de base de datos
101 sapsys Sistema SAP
102 oper Operador de base de datos

En una instalación por defecto de Oracle, solo se usa el grupo dba. Puede usarse el grupo oper como grupo el grupo dba (consulte la documentación de Oracle y SAP para más información).

También necesitaremos los siguientes usuarios:

ID de usuario nombre de usuario nombre genérico grupo grupos adicionales descripción
1000 idsadm/prdadm sidadm sapsys oper Administrador SAP
1002 oraids/oraprd orasid dba</