E:\> tools\fdimage floppies\kern.flp A:
Manual de FreeBSD
This translation may be out of date. To help with the translations please access the FreeBSD translations instance.
Marcas registradas
FreeBSD es una marca registrada de la Fundación FreeBSD
IBM, AIX, OS/2, PowerPC, PS/2, S/390, y ThinkPad son marcas registradas de International Business Machines Corporation en los Estados Unidos de América, otros países, o ambos.
IEEE, POSIX, y 802 son marcas registradas del Institute of Electrical and Electronics Engineers, Inc. en los Estados Unidos de América.
Red Hat, RPM, son marcas registradas de Red Hat, Inc. en los Estados Unidos de América y otros países.
3Com y HomeConnect son marcas registradas de 3Com Corporation.
Adobe, Acrobat, Acrobat Reader, Flash y PostScript son marcas registradas o marcas comerciales de Adobe Systems Incorporated en los Estados Unidos de América y/o otros países.
Apple, AirPort, FireWire, iMac, iPhone, iPad, Mac, Macintosh, Mac OS, Quicktime, y TrueType son marcas comerciales de Apple Inc., registradas en los Estados Unidos de América y otros países.
Intel, Celeron, Centrino, Core, EtherExpress, i386, i486, Itanium, Pentium, y Xeon son marcas registradas de ntel Corporation o sus subsidiarias en los Estados Unidos de América y otros países.
Linux es una marca registrada de Linus Torvalds.
Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media y Windows NT son marcas registradas o marcas comerciales de Microsoft Corporation en los Estados Unidos de América y/o otros países.
Motif, OSF/1, y UNIX son marcas registradas y IT DialTone y The Open Group son marcas comerciales de The Open Group en los Estados Unidos de América y otros países.
Sun, Sun Microsystems, Java, Java Virtual Machine, JDK, JRE, JSP, JVM, Netra, OpenJDK, Solaris, StarOffice, SunOS y VirtualBox son marcas comerciales o marcas registradas de Sun Microsystems, Inc. en los Estados Unidos de América y otros países.
RealNetworks, RealPlayer, and RealAudio son marcas registradas de RealNetworks, Inc.
Oracle es una marca registrada de Oracle Corporation.
3ware es una marca registrada de 3ware Inc.
ARM es una marca registrada de ARM Limited.
Adaptec es una marca registrada de Adaptec, Inc.
Heidelberg, Helvetica, Palatino, y Times Roman son marcas registradas o marcas comerciales de Heidelberger Druckmaschinen AG en los Estados Unidos de América y otros países.
Intuit y Quicken son marcas registradas y/o marcas registradas de servicios de Intuit Inc., o uno de sus subsidiarios, en los Estados Unidos de América y otros países.
LSI Logic, AcceleRAID, eXtremeRAID, MegaRAID y Mylex son marcas registradas o marcas comerciales de LSI Logic Corp.
MATLAB es una marca registrada de The MathWorks, Inc.
SpeedTouch es una marca comercial de Thomson.
VMware es una marca comercial de VMware, Inc.
Mathematica es una marca registrada de Wolfram Research, Inc.
Ogg Vorbis y Xiph.Org son marcas comerciales de Xiph.Org.
XFree86 es una marca comercial de The XFree86 Project, Inc.
Muchos de los nombres usados por los fabricantes y vendedores para diferenciar sus productos son designados como marcas comerciales. Allí donde estos nombres aparezcan en este documento y el Proyecto FreeBSD fuera consciente de la alegación de marca comercial, los nombres tienen a continuación el símbolo “™” o “®”.
Tabla de contenidos
Resumen
¡Bienvenido a FreeBSD! Este manual cubre la instalación y uso diario de FreeBSD 12.1-RELEASE and FreeBSD 11.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á interesado en colaborar en este proyecto envíe 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 puede encontrarla en diferentes formatos y opciones de compresión en el servidor FTP de FreeBSD o en las numerosas réplicas. Si prefiere una copia en papel de este manual puede comprarla en FreeBSD Mall. También es posible hacer búsquedas en este manual.
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 Bibliografía.
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:
Configuración y Adaptación del Sistema, configuración y adaptación del sistema, ha sido ampliado con nuevos datos sobre el sistema de gestión de energía y recursos ACPI, la utilidad del sistema
cron
y más opciones de personalización del kernel.Seguridad, seguridad, ha sido ampliado con información sobre redes privadas virtuales (VPN), listas de control de accesos al sistema de ficheros (más conocidas por ACL) e información sobre avisos de seguridad.
Mandatory Access Control, Mandatory Access Control (MAC), es un capítulo nuevo. En él se expone qué es MAC y de qué forma puede utilizarse en FreeBSD como complemento de la seguridad del sistema.
Almacenamiento, almacenamiento, se ha ampliado con información sobre dispositivos USB de almacenamiento, instantáneas ("snapshots") de sistemas de ficheros, sistemas de ficheros basados en ficheros y en red, y particiones de disco cifradas.
El Gestor de Volúmenes Vinum, Vinum, es un capítulo nuevo. Describe el uso de Vinum, un gestor de volúmenes lógicos que permite disponer de discos lógicos independientes de dispositivo, así como de RAID-0, RAID-1 y RAID-5 por software.
Se ha añadido una sección de depuración de problemas al PPP y SLIP.
Correo electrónico, correo electrónico, ha sido ampliado con información sobre el uso de MTA alternativos, autentificación SMTP, UUCP, fetchmail, procmail así como otros temas avanzados relacionados con el correo.
Servidores de red, servidores de red, es un capítulo nuevo. En él se incluye información sobre la configuración de Apache HTTP Server, ftpd y cómo configurar Samba para su uso con clientes Microsoft® Windows®. Ciertas partes de Networking avanzado, se han trasladado a este capítulo para dar más solidez al contenido.
Networking avanzado, incluye en esta edición nuevos datos sobre el uso de dispositivos Bluetooth® en FreeBSD, la configuración de redes "wireless" y el "networking" ATM (Asynchronous Transfer Mode).
Se ha creado un glosario para disponer de una ubicación centralizada donde encontrar definiciones de términos técnicos que se utilizan a lo largo del libro.
Las tablas e imágenes que aparecen en el libro han experimentado diversas mejoras estáticas.
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:
Se ha creado un índice completo.
Todos los esquemas ASCII han sido reemplazados por diagramas gráficos.
Se ha añadido una sinopsis estándar a cada capítulo donde se ofrece un breve sumario del contenido del capítulo y qué se espera que sepa el lector para poder sacarle provecho.
Se ha reorganizado de forma lógica el contenido en tres partes: "primeros pasos", "administración del sistema " y "apéndices".
La Instalación de FreeBSD ("instalación de FreeBSD") ha sido reescrito completamente e incluye gran cantidad de capturas de pantalla para facilitar su comprensión a los nuevos usuarios.
Los Conceptos básicos de Unix ("conceptos básicos de UNIX®") se ha ampliado con más información sobre procesos, dæmons y señales.
El Instalación de aplicaciones: «packages» y ports ("instalación de aplicaciones") incluye información sobre la gestión de paquetes binarios.
El El sistema X Window, ("El sistema X Window") ha sido reescrito totalmente, con especial énfasis en el uso de modernas tecnologías de escritorio como KDE y GNOME en XFree86™ 4.X.
El El proceso de arranque en FreeBSD ("El proceso de arranque de FreeBSD") ha sido ampliado.
El Almacenamiento ("Almacenamiento") ha sido el fruto de refundir el contenido de lo eran dos capítulos sobre "discos" y "copias de seguridad". Pensamos que estos temas eran más fáciles de entender si se trataban en un mismo capítulo. Se ha añadido también una sección sobre RAID (tanto hardware como software).
El Comunicaciones serie ("communicaciones serie") ha sido reorganizado y actualizado completamente con información sobre FreeBSD 4.X y 5.X.
El PPP y SLIP ("PPP y SLIP") ha sido actualizado en gran parte.
Se han añadido muchas secciones nuevas al Networking avanzado ("Networking avanzado").
El Correo Electrónico ("correo electrónico" incluye ahora más información sobre la configuración de sendmail.
El Compatibilidad binaria con Linux ("compatibilidad conLinux®") se ha ampliado con información sobre la instalación de Oracle® y SAP® R/3®.
En esta segunda edición se incluyen también estos nuevos contenidos:
Configuración y adaptación del sistema (Configuración y Adaptación del Sistema).
Multimedia (Multimedia)
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.
- Introducció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.
- Instalación de FreeBSD
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.
- 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.
- Instalación de aplicaciones: «packages» y ports
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").
- 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.
- 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.
- 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.
- 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.
- 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.
- 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®.
- 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.
- 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.
- 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.
- 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.
- 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.
- Mandatory Access Control
Explica qué es Mandatory Access Control (MAC) y cómo puede usarse este mecanismo para hacer más seguro FreeBSD
- 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.
- 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.
- GEOM: Marco de trabajo modular de transformación de discos
Trata sobre el "framework""GEOM" de FreeBSD y cómo configurar con él alguno de los diversos niveles de RAID que admite.
- El Gestor de Volúmenes 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.
- Virtualización
Describe los sistemas de virtualización disponibles en FreeBSD y cómo utilizarlos.
- Localización - Uso y configuración de I18N/L10N
Describe el uso en FreeBSD de idiomas distintos del inglés. Trata tanto la localización del sistema como de las aplicaciones.
- 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.
- Comunicaciones serie
Explica cómo conectar terminales serie y módems a su sistema FreeBSD tanto para conexiones entrantes como salientes.
- PPP y SLIP
Describe cómo usar en FreeBSD PPP, SLIP o PPP sobre Ethernet para conexiones a sistemas remotos.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 letra_cursiva_ 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 letramonospaced
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.
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.
Parte 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
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 su 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 Cómo obtener FreeBSD para más información.
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
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. 11.2-RELEASE apareció en June 28, 2018. Irán apareciendo más versiones a partir de la rama RELENG_6.
La rama RELENG_7
1.3.2. Objetivos del Proyecto FreeBSD
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
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. .
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 Recursos en Internet 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, Pentium®4 (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 36000 "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 3 GB, 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 Instalación de aplicaciones: «packages» y ports 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 el directorio /usr/shared/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
- Las FAQ de FreeBSD
También puede ver la copia original (y más frecuentemente actualizada) en http://www.FreeBSD.org/.
Capítulo 2. Instalación de FreeBSD
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.
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 Preparación del medio de arranque.
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.
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 Hardware soportado) 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.
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 Athlon™64-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 Hardware soportado).
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:
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.
El 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. |
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.
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:
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.
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 ©. 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:
Dirección IP
Dirección IP de la pasarela («gateway», «puerta de enlace»)
Nombre del sistema («hostname»)
Dirección IP del servidor DNS
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:
El número de teléfono de su ISP a través del que accederá a Internet
El COM: el puerto al que está conectado su módem
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:
Un CDROM o DVD
Una partición DOS en la propia computadora
Una cinta SCSI o QIC
Discos floppy
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: (Preparación del medio de arranque).
Si no dispone de los ficheros de instalación de FreeBSD debería consultar la Cómo preparar su propio medio de instalación, 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 Preparación del medio de arranque.
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.
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:
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 12.0-RELEASE para i386™ están en from ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/i386/12.0-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.
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.
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.
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.
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
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™
Comience con su sistema apagado.
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.
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.
Si ha elegido arrancar desde disquete, tal y como se describe en Preparación del medio de arranque, 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: .. Los discos no se introdujeron lo suficientemente pronto en el proceso de arranque. Déjelos insertados y reinicie su sistema. .. Los cambios que hizo en la BIOS no han funcionado. Debería repetir los pasos previos hasta que dé con la opción correcta. .. Su BIOS en concreto no admite el arranque el arranque desde el medio que ha elegido.
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.
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
Comience con su sistema apagado.
Encienda su computadora y espera un mensaje de arranque en el monitor.
Si va a arrancar desde disquetes, tal y como se describe en la Preparación del medio de arranque, 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 ''
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.flp y pulse Intro.
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 un BREAK
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 Ejemplo de resultado de prueba de dispositivos, aunque en su caso concreto se mostrarán los dispositivos que tenga su sistema.
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 kernel GENERIC, 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 Menú de selección de país. 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.


Para salir de sysinstall utilice las flechas del teclado para seleccionar
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 Selección de «Usage» en el menú principal de sysinstall) y pulse Intro.
y asegúrese de que el botón Select esté seleccionado (como se ven en laAparecerán las instrucciones de uso del sistema de menús. Una vez revisadas pulse Enter y volverá al menú principal.

2.5.1. Selección del menú de documentación
Una vez en el menú principal seleccione
con las flechas del teclado y pulse Enter.
Esto mostrará el menú de documentación.
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
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
y pulse Enter. Tendrá que hacer esto si su teclado no es el estándar en los EEUU.
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.
2.5.3. Pantalla de opciones de instalación
Seleccione
y pulse Intro.

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
, 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 (
) es la opción más adecuada para aquellas personas con poca o ninguna experiencia con UNIX® o FreeBSD. Utilice las flechas para seleccionar y pulse Intro; a partir de ahí comenzará la instalación.
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
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 (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 Elija en qué unidad usar FDisk muestra un ejemplo de un sistema con dos discos IDE. Reciben los nombres de ad0 y ad2.

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 Un ejemplo de particionamiento típico con FDisk.
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.

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 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 Partición con FDisk usando el disco completo. 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.

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
). Elija (ninguno) si va a usar algún otro gestor de arranque que sea capaz de arrancar FreeBSD.Elija y pulse Intro.

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

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 h
y 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.
Partición | Sistema de ficheros | Tamaño | Descripción |
---|---|---|---|
| / | 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 /. |
| 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. |
| /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. |
| /usr | Resto del disco(al menos 2 GB) | El resto de sus ficheros pueden almacenarse en /usr y sus subdirectorios. |
Los 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 |
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.
Partición | Sistema de ficheros | Tamaño | Descripción |
---|---|---|---|
| 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 |
| /discon | Resto del disco | El resto del disco puede dejarse en una sola partición. Esto podría ubicarse simplemente en la partición |
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 El editor Disklabel 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.

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 Editor Disklabel con valores por omisión. 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.
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. |

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 Liberar espacio para la partición raíz). 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.

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 Edición del tamaño de la partición raíz. Después pulse OK.

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 Elegir el tipo de partición raíz. Esta primera partición contendrá un sistema de ficheros, así que seleccionamos y pulsamos Intro.

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 Elegir el punto de montaje del sistema de ficheros raíz. El punto de montaje del sistema de ficheros raíz es /, así que tendrá que teclear /
y luego pulsar Intro.

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 Editor Disklabel, aunque los valores pueden ser diferentes. Pulse Q para salir del editor.

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 El sistema X Window.
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 Configuración del kernel de FreeBSD.
Evidentemente el sistema más versátil es aquél que lo tiene todo. Si dispone de espacio de disco suficiente seleccione Elección de distribuciones, 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.
, como se muestra en la
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 Instalación de aplicaciones: «packages» y ports 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 12.0 los ports ocupan cerca de 3 GB 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 24,000 ported software packages,
at a cost of around 500 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 24,000 paquetes de software listos
para usarse en FreeBSD, aunque necesitará cerca de 500 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.

Si ya ha elegido todo lo que necesita seleccione
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
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.

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.
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 Vaya al menú opciones, ponga Dado accede al directorio /pub/FreeBSD de |
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 .
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.

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 DHCP.
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.

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 Resumen.
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.

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 ]
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 Seguridad.
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.

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
(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 NFS.
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.

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á
(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.

Una opción que suele elegirse es el uso del salvapantallas. Elija
y luego pulse Intro.
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
otra vez. Busque en el menú de opciones del salvapantallas y pulse Intro. Aparecerá un mensaje en pantalla:
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.

Seleccione
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.

Elija la zona adecuada mediante las flechas y pulse Intro.

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

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.

Seleccione
usando las flechas y pulse Intro.
En el ejemplo se ha usado un ratón PS/2, así que
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.
Seleccione
y pulse Intro.
El sistema de ejemplo tiene un ratóna
, de forma que la configuración por omisión basta. Si quiere modificarla utilice las flechas y después pulseIntro.
Por último, utilice las flechas para elegir
y pulse Intro; así se activa y prueba el 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
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:

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
. Elija una categoría y pulse Intro.Al seleccionar una categoría aparecerá un menú con los paquetes disponibles existentes en la misma:

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».

Utilice el tabulador y las flechas para seleccionar Install y pulse Intro. Se le pedirá que confirme que quiere instalar «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.

Seleccione
con las flechas y y pulseIntro.
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.

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
con las flechas y pulse Intro y siga con la instalación.2.10.13. Asignar contraseña a root
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.

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.
Si apareciera algún error durante el arranque consulte la El arranque de FreeBSD.
2.10.15. Configuración de servicios de red
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:

La primera opción, Network Device Configuration, así que podemos ignorarla.
, la hemos visto en laSi selecciona la opción
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
. 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
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
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 si la seleccionón sin querer durante la instalación.La opción inetd(8).
permite desactivar el dæmonLa opción
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ú:
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
instalará el célebre sendmail, el MTA de FreeBSD por omisión. La opción hará que sendmail sea el MTA del sistema pero desactivará la capacidad de recibir correo entrante desde Internet. Las demás opciones, y son en el fonodo similares a . 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:
.La opción NFS para más información sobre cómo configurar el cliente y el servidor.
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 laLa siguiente opción es
, 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 sincronización de la hora. Al seleccionarla verá un menú como este:
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:

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 ; 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(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(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
, 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ú (
)a o vuelva a sysinstall seleccionando dos veces 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.
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
> > .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.
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.
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 Sinopsis.
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:
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
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
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 Preparación del medio de arranque.
Tendrá que modificar esos disquetes para que arranquen en la consola serie; siga estas instrucciones:
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.
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.
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.
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
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.
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 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 Instalación de aplicaciones: «packages» y ports) 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.
Escribir los CD
Si va a grabar los CD en un sistema FreeBSD consulte la Creación y uso de medios ópticos (CD) (en particular la burncd y la cdrecord).
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.
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.
Monte el CDROM en el directorio /cdrom del sistema que va a albergar el sitio FTP.
# mount /cdrom
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
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.
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
Tendrá que usar |
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
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 directorio12.0/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.
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 12.0 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
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. 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 , 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 . 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 Modo monousuario 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
Tal y como indican los comentarios por encima de la línea Tenga cuidado si cambia esto a |
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 |
|
2 | No leer, escribir, no ejecutar |
|
3 | No leer, escribir, ejecutar |
|
4 | Leer, no escribir, no ejecutar |
|
5 | Leer, no escribir, ejecutar |
|
6 | Leer, escribir, no ejecutar |
|
7 | Leer, escribir, ejecutar |
|
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
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
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
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).
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
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 del que se pueden colgar sistemas de ficheros adicionales en un sistema padre (que suele ser el directorio raíz). Esto se explica con detalle en la Organización de disco. Los puntos de montaje estándar son, por ejemplo, /usr, /var, /tmp, /mnt y /cdrom. Estos directorios suelen corresponderse con entradas en /etc/fstab. /etc/fstab es una tabla que sirve de referencia al sistema y contiene los diferentes sistemas de ficheros y sus respectivos puntos de montaje. La 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 El fichero fstab.
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 |
/etc/periodic/ | «Scripts» que se ejecutan diariamente, semanalmente y mensualmente mediante cron(8); ver periodic(8). |
/etc/ppp/ | Ficheros de configuración de |
/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 |
/sbin/ | Programas del sistema y utilidades fundamentales de administración para ambientes monousuario y multiusuario. |
/tmp/ | Ficheros temporales. El contenido de /tmpNO 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/shared/ | 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:
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.
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.
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 |
---|---|
| Normalmente contiene el sistema de ficheros raíz |
| Normalmente contiene el espacio de intercambio (swap) |
| 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 |
| La partición |
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 Códigos de dispositivos de disco.
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 de nombres de disco, «slice» y partición.
En el Modelo conceptual de un disco 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.
Código | Significado |
---|---|
ad | Disco ATAPI (IDE) |
da | Disco de acceso directo SCSI |
acd | CDROM ATAPI (IDE) |
cd | CDROM SCSI |
fd | Disquete (floppy) |
Nombre | Significado |
---|---|
| La primera partición ( |
| La quinta partición ( |
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, oro
para sistemas de ficheros de sólo lectura, seguido de cualquier otra opción que sea necesaria. Una opción muy habitual esnoauto
, 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 supassno
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 mismopassno
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:
-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 estado de un sistema de ficheros de lectura-escritura a solo 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 ficherosMontar 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 getenv(3) 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..
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.
Procedure: 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
.
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ámetrosax
a ps(1).% ps -ax | grep inetd 198 ?? IWs 0:00.00 inetd -wW
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 volverseroot
.% su # /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 |
El envío de otras señales es muy similar; sustituya TERM
o KILL
en la línea de órdenes según sea necesario.
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 |
---|---|
| Nombre de usuario en el sistema. |
| Lista de directorios, separados por punto y coma, en los que se buscan ejecutables. |
| Nombre de red de la pantalla X11 a la que conectarse, si está disponible. |
| La shell actual. |
| El nombre de la terminal del usuario. Se usa para determinar las características de la terminal. |
| Base de datos donde encontrar los códigos de escape necesarios para realizar diferentes funciones en la terminal. |
| Tipo de sistema operativo. Por ejemplo, FreeBSD. |
| Arquitectura de CPU en la que se está ejecutando el sistema. |
| El editor de texto preferido por el usuario. |
| El paginador de texto preferido por el usuario. |
| 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.
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
Hecho esto vuelva a ejecutar |
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®:
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.
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:
Comandos de usuario.
Llamadas al sistema y números de error.
Funciones en las bibliotecas de C.
Controladores de dispositivo.
Formatos de fichero.
Juegos y demás pasatiempos.
Información sobre temas diversos.
Comandos relacionados con el mantenimiento del sistema y su funcionamiento.
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:
Descargar el software, que puede distribuirse en formato de código fuente o binario.
Desempaquetar el software de su formato de distribución (normalmente en un «tarball» comprimido con compress(1), gzip(1) o bzip2(1)).
Consultar la documentación (quizás un fichero INSTALL o README, o los ficheros del subdirectorio doc/) para ver como instalar el software.
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.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ías 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 36000 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.
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.
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.
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 |
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 buscalsof
:# 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
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.
# 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.
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 |
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.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:
Procedure: 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.
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.
Ejecute
csup
:# csup -L 2 -h cvsup.FreeBSD.org /usr/shared/examples/cvsup/ports-supfile
Cambie cvsup.FreeBSD.org por algún otro servidor CVSup que tenga cerca. Consulte Réplicas CVSup (Servidores), donde encontrará una lista completa de las réplicas CVSup.
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.
Haga lo siguiente: como
root
copie /usr/shared/examples/cvsup/ports-supfile en otro sitio, por ejemplo /root o su directorio /home.Edite ports-supfile.
Reemplace CHANGE_THIS.FreeBSD.org por un servidor CVSup que esté cerca de donde esté usted. Consulte Réplicas CVSup (Servidores) si necesita ver una lista completa de las mismas.
Ejecute
csup
del siguiente modo:# csup -L 2 /root/ports-supfile
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.
Procedure: 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
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
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
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
Procedure: Mediante Sysinstall
Este método implica el uso de sysinstall para instalar la Colección de Ports.
Como usuario
root
ejecutesysinstall
(/stand/sysinstall
en cualquier versión previa a FreeBSD 5.2); del siguiente modo:# sysinstall
Posiciónese en la opción
y pulse Intro.Seleccione la opción
y pulse Intro.Seleccione la opción
y pulse la barra espaciadora.Seleccione el medio de instalación deseado (CDROM, FTP, etc.)
Diríjase a la opción
y pulse Intro.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.
Debe ser el usuario |
Antes 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á en la Colección de Ports (security/portaudit). Le rogamos que al menos considere ejecutar |
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 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 a la orden 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
#
Puede ahorrarse teclear dos pasos si para instalar un port teclea |
Algunas shells mantienen una caché de órdenes disponibles en los directorios que aparecen en la variable de entorno |
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.
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 se descargarán, a menos que reemplace fetch
por fetch-recursive
, que se encargará de descargar todas las dependencias de cada port.
Si quiere compilar todos los ports de una categoría y de una sola vez ejecutando la orden |
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
En este ejemplo vamos a darle a la opción MASTER_SITES
el valor ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/
.
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 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 remoto portupgrade 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
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 |
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 Portmaster para instalar nuevos ports en el sistema, actualizando todas sus dependencias antes de compilar e instalar el nuevo port:
# portmaster shells/bash
Por favor, consulte portmaster(8) para 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
|
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:
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.
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.Algunos ports no son responsabilidad de un individuo sino de una lista de correo. Muchas, aunque no todas, tienen un aspecto parecido a freebsd-nombredelalista@FreeBSD.org. Por favor, téngalo en cuenta cuando envie ese correo sobre el port que no funciona.
Hay un caso especial: Los ports que tienen como «mantainer» freebsd-ports@FreeBSD.org en realidad no son responsabilidad de nadie. Los parches y el soporte, en caso de existir, vienen de la comunidad de usuarios y desarrolladores que 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)
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.
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
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 (Instalación de aplicaciones: «packages» y ports).
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 getenv(3)) 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:
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.7.
Para compilar e instalar Xorg desde la colección de ports:
# cd /usr/ports/x11/xorg
# make install clean
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
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
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.
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.
Si el ratón no funciona tendrá que configurarlo antes de continuar. Consulte la Configuratión del ratón 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
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).
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 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
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 getenv(3) 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 getenv(3), 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
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>
Dependiendo del tipo de pantalla |
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 Tipos «Anti-aliased» en GNOME 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
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 Configuración 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 Agregando una entrada a /etc/ttys. 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 Forzar init a que relea /etc/ttys. 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.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
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.
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 Tipos Anti-Aliasing. Una vez configurado el software es posible utilizar «anti-aliasing» en el entorno de escritorio GNOME. Sólamente tiene que ir a , 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.
Parte 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
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 Compatibilidad binaria con Linux 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, getenv(3), 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:
Saber como instalar software de terceros (Instalación de aplicaciones: «packages» y ports).
Saber como instalar software de Linux (Compatibilidad binaria con Linux).
Si quiere más información sobre cómo conseguir un entorno un entorno multimedia en FreeBSD consulte el Multimedia. Si quiere configurar y usar el correo electrónico consulte el crossref:[mail,Correo Electrónico].
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 Entornos de escritorio para más información sobre cómo configurar estos escritorios.
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 getenv(3) 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™
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 web de 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
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
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
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
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:
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 |
| |
Opera |
| |
Firefox |
| |
KOffice |
| |
AbiWord |
| |
GIMP |
| |
OpenOffice.org |
| |
Acrobat Reader® |
| |
gv |
| |
Xpdf |
| |
GQview |
| |
GnuCash |
| |
Gnumeric |
| |
Abacus |
| |
KMyMoney |
|
Capítulo 7. Multimedia
7.1. Sinopsis
FreeBSD admite una gran 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 y controlar dispositivos MIDI.
Tras unas cuantas pruebas podrá reproducir ficheros de video y DVD en FreeBSD. La cantidad de aplicaciones disponibles para codificar, convertir y reproducir los diversos soportes de video es más limitada que lo que hay disponible para el sonido. Por ejemplo, en el momento de escribir este texto no hay en la Colección de Ports de FreeBSD una buena aplicación que permita pasar datos de un formato a otro, el equivalente a lo que hay en el campo del sonido con audio/sox. A pesar de eso la situación en este área está cambiando rápidamente.
Este capítulo muestra los pasos necesarios para configurar una tarjeta de sonido. La configuración e instalación de X11 (El sistema X Window) habrá solucionado ya todos los problemas que hubiera podido darle su tarjeta gráfica, aunque quizás haya algún pequeño detalle que añadir para mejorar la reproducción.
Tras leer éste capítulo sabrá usted:
Cómo configurar su sistema de modo que su tarjeta de sonido sea reconocida por el mismo.
Confirmar el funcionamiento de su tarjeta usando herramientas de muestreo.
Cómo enfrentarse a problemas de configuración de sonido.
Cómo reproducir y crear ficheros MP3 y otros.
Cómo gestiona el video el servidor X.
Identificar unos cuantos ports para reproducir y codificar video que le darán muy buenos resultados.
Cómo reproducir DVD y ficheros .mpg y .avi.
Cómo convertir CD y DVD en ficheros de datos.
Cómo configurar una tarjeta de TV.
Cómo configurar un escáner de imágenes.
Antes de leer éste capítulo debería:
Saber configurar e instalar un nuevo kernel (Configuración del kernel de FreeBSD).
Si intenta montar un cd con mount(8) provocará (como mínimo) un error en el sistema, pero puede llegar a provocar un kernel panic. Dichos soportes tienen codificaciones especiales sustancialmente diferentes de los típicos sistemas de ficheros ISO. |
7.2. Configuración de la tarjeta de sonido
7.2.1. Configuración del sistema
Antes de nada tendrá que saber a ciencia cierta el modelo de tarjeta que tiene, qué chip utiliza y si es PCI o ISA. FreeBSD admite una amplia variedad de tarjetas, tanto PCI como ISA. Consulte la lista de dispositivos de sonido que puede usar en FreeBSD en las Hardware Notes. Las «Hardware Notes» le dirán también qué controlador es el que hace funcionar su tarjeta.
Para poder usar su dispositivo de sonido en FreeBSD tiene que cargar el controlador de dispositivo adecuado, cosa que puede hacerse de dos maneras. La forma más fácil es cargar el módulo del kernel correspondiente a su tarjeta de sonido mediante kldload(8). Puede hacerlo en su shell con la siguiente orden
# kldload snd_emu10k1
o añadiendo la línea apropiada al fichero /boot/loader.conf:
snd_emu10k1_load="YES"
Ambos ejemplos son para una tarjeta de sonido Creative SoundBlaster® Live!. Encontrará una lista de módulos de sonido que puede cargar del mismo modo en /boot/defaults/loader.conf. Si no está del todo seguro sobre el controlador que debe usar pruebe con el módulo snd_driver:
# kldload snd_driver
Se trata de un «metacontrolador» que carga en memoria todos los controladores más habituales. De este modo acelerará notablemente el proceso de detectar cuál es el controlador perfecto para su hardware. También puede cargar todos los controladores de sonido desde /boot/loader.conf.
Si quiere saber qué controlador se corresponde con su tarjeta de sonido una vez cargado el «metadriver» snd_driver debe comprobar el contenido de /dev/sndstat mediante la orden cat /dev/sndstat
.
El segundo método es compilar de forma estática el soporte para su tarjeta de sonido dentro de un kernel personalizado. En la siguiente sección encontrará la información necesaria para añadir a su kernel el soporte que necesita su hardware. Para más información sobre la compilación de un kernel consulte el Configuración del kernel de FreeBSD.
7.2.1.1. Configuración de un kernel personalizado con soporte de sonido
Lo primero que hay que hacer es añadir el controlador del «framework» de sonido sound(4) al kernel; tendrá que añadir la siguiente línea a su fichero de configuración del kernel:
device sound
Una vez hecho esto tiene que añadir el soporte para su tarjeta de sonido. Evidentemente tendrá que saber exactamente qué controlador es el que hace funcionar su tarjeta. Consulte la lista de dispositivos de sonido soportados que encontrará en las Hardware Notes y elija el controlador perfecto para su tarjeta. Por ejemplo una una tarjeta de sonido Creative SoundBlaster® Live! usará el controlador snd_emu10k1(4). Siguiendo con el ejemplo, si queremos añadir soporte para esta tarjeta agregaremos lo siguiente:
device snd_emu10k1
Por favor, lea la página de manual del controlador si tiene dudas con la sintaxis. La sintaxis específica para la configuración en el kernel de cada tarjeta de sonido soportada existente puede encontrarse también en /usr/src/sys/conf/NOTES.
Las tarjetas ISA no PnP pueden requerir que se le facilite al kernel la información de la configuración de la tarjeta (IRQ, puerto de E/S, etc). Esto se hace modificando el fichero /boot/device.hints. Durante el proceso de arranque loader(8) leerá este fichero y le pasará los parámetros al kernel. Veamos un ejemplo: una vieja tarjeta Creative SoundBlaster® 16 ISA no PnP utilizará el controlador snd_sbc(4) junto con snd_sb16
. En el caso de esta tarjeta habrá que añadir las siguientes líneas al fichero de configuración del kernel
device snd_sbc device snd_sb16
y añadir lo siguiente a /boot/device.hints:
hint.sbc.0.at="isa" hint.sbc.0.port="0x220" hint.sbc.0.irq="5" hint.sbc.0.drq="1" hint.sbc.0.flags="0x15"
La tarjeta del ejemplo usa el puerto de E/S 0x220
I/O port y la IRQ 5
.
La sintaxis a utilizar en /boot/device.hints se explica en la página de manual de sound(4) y en la del controlador en cuestión.
En el ejemplo se muestran los parámetros por omisión. En ciertos casos habrá que usar otra IRQ o usar otros parámetros para hacer funcionar la tarjeta de sonido. Consulte la página de manual de snd_sbc(4) para más información sobre esta tarjeta.
7.2.2. Cómo probar su tarjeta de sonido
Una vez que haya reiniciado con su kernel personalizado, o tras cargar el mólo del kernel necesario la tarjeta de sonido aparecerá en el búfer de mensajes del sistema (dmesg(8)); deberí ser algo muy parecido a esto:
pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>
Puede comprobar el estado de la tarjeta de sonido en el fichero /dev/sndstat:
# cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz 16384
kld snd_ich (1p/2r/0v channels duplex default)
El resultado en su sistema seguramente será distinto. Si no aparecen dispositivos pcm revise todo el proceso a ver dónde está el error. Revise su fichero de configuración del kernel nuevamente y compruebe que eligió el controlador de dispositivo adecuado. Tiene una lista de problemas habituales en la Problemas habituales.
Si todo ha ido bien ya tiene una tarjeta de sonido funcionando en su sistema. Si los pins de salida de sonido de su CD-ROM o DVD-ROM están colocados correctamente puede poner un CD en la unidad y reproducirlo con cdcontrol(1).
% cdcontrol -f /dev/acd0 play 1
Hay muchas aplicaciones como audio/workman que le ofrecerán un interfaz más amigable. Si quiere escuchar ficheros MP3 puede instalar, por ejemplo, audio/mpg123.
Hay otra via aún más rápida de probar su tarjeta de sonido. Envíe datos a to /dev/dsp del siguiente modo:
% cat fichero > /dev/dsp
donde fichero puede ser cualquier fichero. Esta orden producirá ruido, lo que confirmará que la tarjeta de sonido funciona.
Puede manejar los niveles de la tarjeta de sonido con mixer(8). Tiene todos los detalles en la página de manual de mixer(8).
7.2.2.1. Problemas habituales
Error | Solution |
---|---|
| El puerto de E/S no ha sido configurado correctamente. |
| No ha elegido correctamente la IRQ. Asegúrese de que la IRQ que ha elegido y la IRQ del sonido son la misma. |
| No queda memoria suficiente en el sistema para poder usar el dispositivo. |
| Compruebe si hay otra aplicación utilizando (y por tanto ocupando) el dispositivo. Escriba |
7.2.3. Cómo utilizar múltiples fuentes de sonido
Disponer de múltiples fuentes de sonido puede ser muy útil, por ejemplo cuando esound o artsd no permiten compartir el dispositivo de sonido con otra aplicación.
FreeBSD permite hacerlo gracias a los Virtual Sound Channels (canales virtuales de sonido
), que se activan mediante sysctl(8). Los canales virtuales permiten multiplexar la reproducción de sonido de su tarjeta mezclando el sonido en el kernel.
El número de canales virtuales se configura utilizando dos sysctl; como root
escriba lo siguiente:
# sysctl hw.snd.pcm0.vchans=4
# sysctl hw.snd.maxautovchans=4
En el ejemplo anterior se han creado cuatro canales virtuales, una cantidad muy razonable para el uso normal. hw.snd.pcm0.vchans
es el número de canales virtuales de que dispone pcm0; puede configurarlo en cuanto el dispositivo sea reconocido por el sistema. hw.snd.maxautovchans
es el número de canales virtuales que se le asignan a un nuevo dispositivo de audio cuando se conecta al sistema mediante kldload(8). Puesto que el módulo pcm puede cargarse independientemente de los controladores de hardware hw.snd.maxautovchans
puede almacenar cuántos canales virtuales tienen asignados los dispositivos que se vayan conectando al sistema.
No es posible modificar el número de canales virtuales de un dispositivo que esté en marcha. Cierre antes todos los programas que estén utilizando el dispositivo, como reproductores de música o dæmons de sonido. |
Si no usa devfs(5) tendrá que configurar sus aplicaciones para que apunten a /dev/dsp0.x, donde x es un número entre 0 y 3 si hw.snd.pcm.0.vchans
tiene un valor de 4 como en el ejemplo anterior. Si se estuviera usando devfs(5) en el ejemplo anterior cualquier programa que pidiera /dev/dsp0 sería atendido de forma totalmente transparente.
7.2.4. Asignación a los canales de mezcla de valores por omisión
Los valores por defecto de los distintos canales de mezcla están fijados en el código del controlador pcm(4). Hay distintas aplicaciones y dæmons que le permitirán asignar valores al mezclador y que permanezcan entre uso y uso, pero no es una solución demasiado limpia. Puede asignar valores por omisión a las mezclas a nivel de controlador definiendo los valores apropiados en /boot/device.hints. Veamos un ejemplo:
hint.pcm.0.vol="50"
Esto asignará al canal de volumen un valor por omisión de 50 al cargar el módulo pcm(4).
7.3. Sonido MP3
El formato MP3 (MPEG Layer 3 Audio) llega casi al nivel de calidad del CD, por lo que no hay motivo por el deba faltar en su escritorio FreeBSD.
7.3.1. Reproductores de MP3
El reproductor de MP3 para X11 más extendido es, de lejos, XMMS (X Multimedia System). Puede usar en él «skins»de Winamp puesto que el interfaz gráfico de XMMS es casi idéntico al de Nullsoft Winamp. XMMS incluye también soporte nativo para «plug-ins».
Puede instalar XMMS como port (multimedia/xmms) o como package.
La interfaz de XMMS es intuitiva e incluye una lista de reproducción, un ecualizador gráfico y muchas otras cosas. Si está acostumbrado a WinampXMMS le será muy fácil de usar.
El port audio/mpg123 es un reproductor MP3 que se usa desde la shell.
Puede especificarle desde la misma línea de órdenes a mpg123 el dispositivo de sonido que debe usar y el fichero MP3 que debe reproducir. Veamos un ejemplo:
# mpg123 -a /dev/dsp1.0 ASaber-GrandesÉxitos.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
Playing MPEG stream from ASaber-GrandesÉxitos.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
Sustituya /dev/dsp1.0 por el dispositivo dsp que haya en su sistema.
7.3.2. Extracción de pistas de sonido de un CD
Antes de convirtir una pista o todo un CD a MP3 la información sonido debe volcarse al disco duro. Esto se hace convirtiendo los datos «raw CDDA» (CD Digital Audio) a ficheros WAV.
La herramienta cdda2wav
, que forma parte del port sysutils/cdrtools, permite la extracción de información de sonido en CD así como la información asociada a él.
Con el CD en la unidad la siguiente orden (como root
) un CD entero en ficheros WAV individuales, uno por pista:
# cdda2wav -D 0,1,0 -B
cdda2wav soporta unidades CDROM ATAPI (IDE). En el caso de unidades IDE especifique el número de dispositivo en el lugar correspondiente al núro de unidad SCSI. Por ejemplo, para extraer la pista 7 desde una unidad IDE:
# cdda2wav -D /dev/acd0 -t 7
La opción -D 0,1,0
indica el dispositivo SCSI 0,1,0, que corresponde con la salida de cdrecord -scanbus
.
Para extraer pistas de forma selectiva use la opción -t
:
# cdda2wav -D 0,1,0 -t 7
Esta opción extrae la séptima pista de un CDROM de sonido. Si quiere extraer un rango de pistas, por ejemplo las pistas de la uno a la siete, declare el rango del siguiente modo:
# cdda2wav -D 0,1,0 -t 1+7
La herramienta dd(1) le permite también extraer pistas de sonido desde unidades ATAPI; consulte la Copiar CD de audio para más información.
7.3.3. Codificación de MP3
Hoy por hoy el codificador de MP3 por antonomasia es lame. Puede encontrar lame en audio/lame.
Partiendo de ficheros WAV previamente extraidos la siguiente orden convierte audio01.wav en audio01.mp3:
# lame -h -b 128 \
--tt "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 "Estilo" \
audio01.wav audio01.mp3
Los 128 kbits pasan por se el estándar de ratio de bits de los MP3, aunque puede que usted sea de los que prefieren calidades más altas, 160 o incluso 192. A mayor ratio de bits, más espacio en disco necesitará, aunque la calidad también será mayor. La opción -h
usa el modo «más calidad pero algo más lento». Las opciones que empiezan por --t
indican etiquetas ID3, que suelen contener información de la canción que contiene el fichero MP3. Tiene información sobre otras opciones de codificación en la página de manual de lame.
7.3.4. Decodificación de MP3
Para grabar un CD de sonido desde ficheros MP3 hay que convertirlos a formato WAV no comprimido. Tanto XMMS como mpg123 soportan la conversión de MP3 a un formato de fichero no comprimido.
Escritura a disco desde XMMS:
Arranque XMMS.
Botón derecho del raón en la ventana para acceder al menú de XMMS.
Elija
Preferences
enOptions
.Cambie el «Output Plugin» a «Disk Writer Plugin».
Pulse
Configure
.Elija un directorio en el que guardar los ficheros descomprimidos.
Cargue el fichero MP3 en XMMS de la forma habitual, pero asegúrese de tener el volumen al 100% y las opciones de ecualización desactivadas.
Pulse
Play
- parecerá que XMMS está reproduciendo música pero no sonará nada. Lo que está haciendo es volcar el MP3 a un fichero.Recuerde que antes de poder volver a escuchar ficheros MP3 de nuevo tendrá que devolver el «Plugin de salida» por omisión a la posición inicial.
Escritura de la salida estándar en mpg123:
Ejecute
mpg123 -s audio01.mp3 > audio01.pcm
XMMS genera un fichero WAV, mientras que mpg123 convierte MP3 a datos de sonido raw PCM. Puede usar cdrecord con ambos formatos para crear CD de sonido. Tendrá que usar burncd(8) para raw PCM. Si lo que tiene son ficheros WAV escuchará un ligero clic al principio de cada pista: se trata de la cabecera del fichero WAV. Puede eliminar esta cabecera mediante SoX (que puede instalar como port desde audio/sox o si lo prefiere como package):
% sox -t wav -r 44100 -s -w -c 2 pista.wav pista.raw
Consulte la Creación y uso de medios ópticos (CD) para más información sobre el uso de grabadoras de CD en FreeBSD.
7.4. Reproducción de vídeo
La reproducción de vídeo es un área muy nueva y en la que se producen grandes cambios a gran velocidad. Tenga paciencia. Aquí no va a ser todo tan sencillo como al configurar el sonido.
Antes de comenzar es imprescindible que sepa con certeza cuál es el modelo de su tarjeta gráfica y qué chip usa. Tanto Xorg como XFree86™ soportan gran cantidad de tarjetas gráficas, pero de pocas se puede decir que den un buen rendiemiento de reproducción. Puede consultar una lista de extensiones que el servidor X puede hacer funcionar en su tarjeta ejecutando xdpyinfo(1) desde una sesión X11.
Le recomendamos que tenga a mano un fichero MPEG no muy grande para usarlo en las pruebas que haga con los diversos reproductores y opciones. Algunos reproductores de DVD buscarán por omisión soportes DVD en /dev/dvd (algunos incluso tienen fijado en el código el nombre de dicha unidad) seguramente le resultará útil ejecutar los siguientes enlaces simbólicos:
# ln -sf /dev/acd0 /dev/dvd
# ln -sf /dev/acd0 /dev/rdvd
Tenga en cuenta que debido al diseño de devfs(5) los enlaces creados a mano no sobrevivirán a un reinicio del sistema. Para que así suceda tras cada reinicio debe añadir las siguientes líneas a /etc/devfs.conf:
link acd0 dvd link acd0 rdvd
Además, el descifrado de DVD (una tarea que hará necesario llamar a funciones especiales de los DVD-ROM) requiere permisos de escritura en unidades DVD.
Le recomendamos que aumente la memoria compartida del interfaz X11, para lo cual tendrá que incremente los valores asignados a varias sysctl(8):
kern.ipc.shmmax=67108864 kern.ipc.shmall=32768
7.4.1. Cómo determinar las características de video
Hay varias formas de reproducir vídeo en X11, pero cuál de ellas sea la que funcione depende en gran medida del hardware que intervenga. Cada uno de los métodos que se describen más son mejores o peores según en qué hardware se ejecute. Además el procesamiento de video en X11 es un asunto que está recibiendo mucha atención últimamente y en cada nueva versión de Xorg y de XFree86™ no es extraño encontrar avances significativos.
Veamos una lista de interfaces de vídeo muy comunes:
X11: salida normal de X11 utilizando memoria compartida.
XVideo: una extensión del interfaz X11 que permite la reproducción de vídeo en las ventanas de X11.
SDL: Simple Directmedia Layer.
DGA: Direct Graphics Access (
acceso directo a gráficos
.SVGAlib: capa de consola de gráficos a bajo nivel.
7.4.1.1. XVideo
Xorg y XFree86™ 4.X tienen una extensión llamada XVideo (también conocida como Xvideo, Xv o xv) que permite reproducir vídeo en ventanas del sistema X11 a través de un tipo de aceleración especial. Dicha extensión ofrece una calidad de reproducción muy alta incluso en máquinas muy cortas de recursos.
Utilice xvinfo
para saber qué extensión está utilizando:
% xvinfo
XVideo is supported for your card if the result looks like:
X-Video Extension version 2.2
screen #0
Adaptor #0: "Savage Streams Engine"
number of ports: 1
port base: 43
operations supported: PutImage
supported visuals:
depth 16, visualID 0x22
depth 16, visualID 0x23
number of attributes: 5
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 2110)
"XV_BRIGHTNESS" (range -128 to 127)
client settable attribute
client gettable attribute (current value is 0)
"XV_CONTRAST" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_SATURATION" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_HUE" (range -180 to 180)
client settable attribute
client gettable attribute (current value is 0)
maximum XvImage size: 1024 x 1024
Number of image formats: 7
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x36315652 (RV16)
guid: 52563135-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x3e0, 0x7c00
id: 0x35315652 (RV15)
guid: 52563136-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x7e0, 0xf800
id: 0x31313259 (Y211)
guid: 59323131-0000-0010-8000-00aa00389b71
bits per pixel: 6
number of planes: 3
type: YUV (packed)
id: 0x0
guid: 00000000-0000-0000-0000-000000000000
bits per pixel: 0
number of planes: 0
type: RGB (packed)
depth: 1
red, green, blue masks: 0x0, 0x0, 0x0
Tenga en cuenta que los formatos que aparecen en el listado (YUV2, YUV12, etc) no aparecen en todas las implementaciones de de XVideo y su ausencia puede despistar a algunos reproductores.
Si el resultado se parece mucho a esto
X-Video Extension version 2.2
screen #0
no adaptors present
lo más probable es que su tarjeta no soporte XVideo.
Si su tarjeta gráfica no soporta XVideo lo único que significa es que para su sistema será más complicado alcanzar los requisitos computacionales necesarios para el procesamiento de vídeo. Dependiendo de la tarjeta gráfica y el procesador que tenga es posible que de todos modos pueda salvar la papeleta. Consulte la sección sobre recursos avanzados en la Lecturas adicionales.
7.4.1.2. Simple Directmedia Layer
SDL (Simple Directmedia Layer) se creó pensando en una capa que permitiera aplicaciones fáciles de portar entre las plataformas Microsoft® Windows®, BeOS y UNIX® y que permitiera al mismo tiempo un uso eficiente del sonido y el vídeo. La capa SDL ofrece abstracción de hardware a bajo nivel, lo que a veces puee ser más eficiente que la propia interfaz X11.
SDL está en devel/sdl12.
7.4.1.3. Direct Graphics Access
«Direct Graphics Access» es una extensión de X11 que permite que un programa sortée el servidor X y acceda directamente al «framebuffer». Utiliza memoria de bajo nivel, así es imprescindible que se ejecute como root
.
Puede probar y analizar el rendimiento de la extensión DGA con dga(1). Al ejecutar dga
la pantalla cambia de color cada vez que pulsa una tecla. Para salir de la aplicación pulse q.
7.4.2. Ports y packages relacionados con el vídeo
Esta sección expone el software existente en la Colección de Ports de FreeBSD que puede usar para la reproducción de vídeo. La reproducción de vídeo es un área del desarrollo de software donde hay muchísima actividad, de manera que las características de más de una de las aplicaciones que vamos a describir pueden ser distintas.
Lo primero que hay que conocer es el importante detalle de que la mayoría de las aplicaciones de vídeo que funcionan en FreeBSD se desarrollaron para Linux. Muchas de esas aplicaciones todavía están en versiones beta. Estos son algunos de los problemas que puede encontrarse durante el uso de software de vídeo en FreeBSD:
Una aplicación no puede reproducir un fichero que ha generado otra aplicación distinta.
Una aplicación no puede reproducir un fichero que ella misma a generado.
La misma aplicación ejecutándose en dos máquinas distintas, compilada en cada una de esas máquinas; la reproducción del mismo fichero da resultados diferentes.
El uso de un filtro aparentemente trivial como es redimensionar una imagen aplicando una escala da como fruto un resultado horroroso debido a que la rutina encargada de aplicarla es defectuosa.
Que una aplicación de volcados de memoria («core dumps»).
La documentación no se instala con el port, pero sí que existe en la web o en el directorio work del port.
La mayoría de estas aplicaciones muestra síntomas evidente de «Linuxismo», es decir, hay problemas derivados del modo en el que se implementan las bibliotecas en las distribuciones de Linux, o del hecho de que ciertas características del kernel de Linux han sido dadas por omnipresentes por los autores de las aplicaciones. Estos problemas no siempre han sido advertidas y solucionadas de algún modo por los responsables de los ports, lo que puede desembocar en problemas como:
El uso de /proc/cpuinfo para detectar las características del procesador.
El uso erróneo de los hilos puede causar que ciertos programas se cuelguen al intentar cerrarse en lugar de cerrarse correctamente.
Software que aún no está en la Colección de Ports de FreeBSD usado frecuentemente con la aplicación.
Hasta ahora los autores de las aplicaciones han colaborado de buen grado con los responsables de los ports para hacer más sencillo el trabajo de portar estas aplicaciones a FreeBSD.
7.4.2.1. MPlayer
MPlayer es un reproductor de vídeo desarrollado muy recientemente y con un desarrollo rapidísimo. Los objetivos del equipo MPlayer son la velocidad y la flexibilidad en Linux y otros sistemas Unix. El proyecto comenzó cuando el fundador del equipo se cansó de padecer el pobre rendimiento de los reproductores de vídeo que había disponibles en ese momento. Hay quien dice que el interfaz gráfico fue sacrificado en pos de un diseño más ligero, aunque una vez que se acostumbre a las opciones desde la línea de órdenes y a los atajos de teclado todo irá como la seda.
7.4.2.1.1. Compilación de MPlayer
Encontrará MPlayer en multimedia/mplayer. MPlayer ejecuta una serie de pruebas de hardware durante el proceso de compilación, dando como resultado un binario que no tiene por qué funcionar en otros sistemas. Recuerde, por tanto, compilar la aplicación como port y no utilice el package binario. Además hay múltiples parámetros que puede pasarle a make
, tal y como verá al comenzar la compilación:
# cd /usr/ports/multimedia/mplayer
# make
N - O - T - E
Take a careful look into the Makefile in order
to learn how to tune mplayer towards you personal preferences!
For example,
make WITH_GTK1
builds MPlayer with GTK1-GUI support.
If you want to use the GUI, you can either install
/usr/ports/multimedia/mplayer-skins
or download official skin collections from
http://www.mplayerhq.hu/homepage/dload.html
Las opciones por omisión del port deberían bastar para la mayoría de los usuarios, aunque si va a necesitar el codec XviD tendrá que especificar WITH_XVID
en la línea de órdenes. La unidad de DVD por defecto se puede definir con la opción WITH_DVD_DEVICE
si la opción por omisión, /dev/acd0, no le sirve.
En el momento de escribir esto el port de MPlayer genera la documentación en formato HTML y dos ejecutables: mplayer
y mencoder
, que es una herramienta para recodificar vídeo.
La documentación en HTML de MPlayer es muy informativa. Si el lector no cubre todas sus dudas sobre hardware de vídeo e interfaces con el contenido de este capítulo la documentación de MPlayer es el sitio donde debe buscar. Si quiere más información sobre el soporte de vídeo en UNIX® el mejor sitio para consultar es, sin duda alguna, la documentación de MPlayer.
7.4.2.1.2. Uso de MPlayer
Los usuarios de MPlayer deben crear un subdirectorio .mplayer en su «home». Para crear este directorio (necesario para el funcionamiento de la aplicación) teclée lo siguiente:
% cd /usr/ports/multimedia/mplayer
% make install-user
Las opciones de mplayer
para la línea de órdenes se detallan en la página de manual. Si necesita todavía más detalles consulte la documentación en HTML. En esta sección se va a explicar solamente lo más básico.
Para reproducir el fichero ficherodeprueba.avi, mediante una de las diversas interfaces de vídeo utilice la opción -vo
:
% mplayer -vo xv ficherodeprueba.avi
% mplayer -vo sdl ficherodeprueba.avi
% mplayer -vo x11 ficherodeprueba.avi
# mplayer -vo dga ficherodeprueba.avi
# mplayer -vo 'sdl:dga' ficherodeprueba.avi
Merece la pena que pruebe todas, puesto que el rendimiento relativo depende en gran medida de muchos factores y será muy distinto el resultado dependiendo del hardware.
Si quiere reproducir un DVD sustituya ficherodeprueba.avi por dvd://N -dvd-device DISPOSITIVO
, donde N es el número de título que quiere reproducir y DISPOSITIVO es el nodo de dispositivo del DVD-ROM. Veamos un ejemplo: para reproducir el título 3 desde /dev/dvd ejecutaremos:
# mplayer -vo xv dvd://3 -dvd-device /dev/dvd
La unidad de DVD por omisión puede definirse durante la compilación del port de MPlayer con la opción |
Consulte los atajos de teclado para parar la reproducción, ponerla en pausa, etc. consulte la salida de mplayer -h
o mejor aún lése la página de manual.
Hay otras opciones que le resultarán de interés para la reproducción: -fs -zoom
, para la reproducción a pantalla completa y -framedrop
, que mejora el rendimiento.
Para evitar que la línea de órdenes se haga demasiado larga puede crear un fichero .mplayer/config e introducir en él las opciones que quiera usar desde el arranque de la aplicación:
vo=xv fs=yes zoom=yes
Para terminar, puede usar mplayer
para extraer un título de un DVD a un fichero .vob. Por ejemplo, si quiere extraer el segundo título de un DVD escriba esto:
# mplayer -dumpstream -dumpfile salida.vob dvd://2 -dvd-device /dev/dvd
El fichero de salida, salida.vob, un MPEG y puede manipularlo con las aplicaciones que se describen en esta sección.
7.4.2.1.3. mencoder
Antes de empezar a usar mencoder
le recomendamos que se familiarice con las opciones que se detallan en la documentación HTML. Hay también una página de manual, pero no es de mucha utilidad sin la documentación HTML. Hay una ingente cantidad de formas de mejorar la calidad, reducir el ratio de bits y cambiar formatos; alguno de esos pequeños trucos pueden marcar la diferencia entre un buen y un mal rendimiento. Le mostramos un par de ejemplos por los que puede empezar. El primero es una simple copia:
% mencoder entrada.avi -oac copy -ovc copy -o salida.avi
Ciertas combinaciones erróneas de opciones en la línea de órdenes pueden dar como fruto un fichero de salida que no puede reproducir ni siquiera el propio mplayer
, así que si lo que quiere es extraer datos a un fichero siga usando tranquilamente la opción -dumpfile
de mplayer
.
Para convertir entrada.avi con codificación MPEG4 y audio con codificación MPEG3 (necesitará audio/lame):
% mencoder entrada.avi -oac mp3lame -lameopts br=192 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq -o salida.avi
El fichero de salida puede verse con mplayer
y con xine
.
Si sustituye entrada.avi por dvd://1 -dvd-device /dev/dvd
y lo ejecuta como root
puede recodificar un título de DVD directamente. Es posible que el resultado no sea muy satisfactorio tras los primeros intentos, así que le recomendamos que vuelque el título a un fichero y haga todas las pruebas que necesite sobre ese fichero.
7.4.2.2. El reproductor de vídeo xine
El reproductor de vídeo xine es un ambicioso proyecto que tiene como meta ofrecer no solamente una aplicación de vídeo «todo en uno», sino crear una biblioteca base reutilizable y un ejecutable modular que puede ampliarse mediante «plugins». Existe como package y también como port: multimedia/xine.
El reproductor xine está todavía en mantillas, pero sus primeros pasos están siendo muy interesantes. xine requiere o una CPU rápida o una tarjeta gráfica, o bien soporte para la extensión XVideo. El GUI es intuitivo, aunque un tanto pedestre.
En el momento de escribir esto xine no incorpora ningún módulo de entrada que sirva para reproducir DVD codificados con CSS. Hay versiones compiladas por terceros que tienen módulos que lo permiten, pero ninguna de ellas está en la Colección de Ports de FreeBSD.
Comparado con MPlayerxine deja las cosas más hechas para el usuario, pero al mismo tiempo pone más difícil el control exhaustivo sobre todo lo que pasa. El reproductor xine da un mejor rendimiento en interfaces XVideo.
Por omisión xine arranca con un intefaz gráfico de usuario. Los menús pueden usarse para abrir un fichero en concreto:
% xine
También puede invocar la aplicación desde la línea de órdenes para que reproduzca un fichero inmediatamente y sin utilizar el GUI:
% xine -g -p fichero.avi
7.4.2.3. Las herramientas transcode
transcode no es un reproductor, sino una suite de herramientas para recodificar (también se podría usar la palabra «transcodificar», de ahí su nombre) ficheros de sonido y de vídeo. Con transcode es posible fundir ficheros de video y reparar ficheros deteriorados desde la línea de órdenes y en las interfaces de flujo stdin/stdout.
Puede configurar gran cantidad de opciones en el momento de la compilación de multimedia/transcode; le recomendamos que use la siguiente línea de órdenes para compilar transcode:
# make WITH_OPTIMIZED_CFLAGS=yes WITH_LIBA52=yes WITH_LAME=yes WITH_OGG=yes \
WITH_MJPEG=yes -DWITH_XVID=yes
La configuración que le proponemos deberí satisfacer a la mayoría de los usuarios.
Veamos un ejemplo ilustrativo de las posibilidades de transcode
: convertir un fichero DivX en un fichero PAL MPEG-1 (PAL VCD):
% transcode -i input.avi -V --export_prof vcd-pal -o output_vcd
% mplex -f 1 -o output_vcd.mpg output_vcd.m1v output_vcd.mpa
Puede reproducir el fichero MPEG resultante, output_vcd.mpg, con MPlayer. Si quiere también puede grabar el fichero en un CD-R y tendrá un VideoCD, aunque para eso tendrá que instalar multimedia/vcdimager y sysutils/cdrdao.
Consulte la página de manual de transcode
, pero no olvide consultar también el wiki de transcode, en el que encontrará más información y muchos ejemplos.
7.4.3. Lecturas adicionales
El desarrollo de las diversas aplicaciones de vídeo disponibles en FreeBSD avanza rápidamente. Es muy posible que en un futuro cercano la mayoría de los problemas de los que hemos hablado aquí hayan sido resueltos. Mientras tanto quien quiera exprimir las capacidades de FreeBSD en las áreas del sonido y el vídeo tendrán que recopilar la información repartida en varias FAQ y tutoriales y utilizar unos cuantos programas diferentes. En esta sección se le proponen al lector interesado varias fuentes de información adicional.
La documentación de MPlayer contiene una gran cantidad de información técnica. Cualquiera que quiera alcanzar un alto grado de conocimiento en vídeo sobre UNIX® debe consultar esa documentación. La lista de correo de MPlayer es sumamente hostil hacia quien no se ha molestado en leer la documentación antes de preguntar, así que si va a enviar informes de errores a esa lista, por favor, léase la documentación..
El texto xine HOWTO contiene un capítulo sobre mejora del rendimiento que afecta a todos los reproductores.
Hay unas cuantas aplicaciones muy prometedoras que el lector debería al menos probar:
Avifile, que encontrará en los ports:multimedia/avifile.
Ogle, también en la colección de ports: multimedia/ogle.
multimedia/dvdauthor, una aplicación libre para la producción de contenidos en DVD.
7.5. Configuración de tarjetas de TV
7.5.1. Introducción
Las tarjetas de TV le permiten ver en su sistema emisiones de TV tradicionales o incluso por cable. La mayoría aceptan vídeo compuesto mediante RCA o una entrada de S-video; algunas de estas tarjetas incorporan también un sintonizador de radio FM.
FreeBSD puede utilizar tarjetas de TV PCI que tengan el chip Brooktree Bt848/849/878/879 o el chip de captura de vídeo Conexant CN-878/Fusion 878a gracias al controlador bktr(4). Asegúrese de que la tarjeta tiene un sintonizador que esté soportado: consulte la lista de sintonizadores soportados que encontrará en la página de manual de bktr(4).
7.5.2. Añadir el controlador
Poder usar la tarjeta tendrá que cargar el controlador bktr(4). Una forma de hacerlo es añdir la siguiente línea al fichero /boot/loader.conf:
bktr_load="YES"
También puede hacerlo compilando estáticamente el soporte para la tarjeta de TV en su kernel; añada las siguientes líneas al fichero de configuración de su kernel:
device bktr device iicbus device iicbb device smbus
Es necesario incluir todas esas lineas adicionales porque los componentes de la tarjeta están conectados entre sí por un bus I2C. Hecho esto compile e instale su nuevo kernel.
Una vez añadido el soporte de la tarjeta al sistema tendrá que reiniciar. Durante el arranque deberían aparecer rastros de su tarjeta de TV. Veamos un ejemplo:
bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0 iicbb0: <I2C bit-banging driver> on bti2c0 iicbus0: <Philips I2C bus> on iicbb0 master-only iicbus1: <Philips I2C bus> on iicbb0 master-only smbus0: <System Management Bus> on bti2c0 bktr0: Pinnacle/Miro TV, Philips SECAM tuner.
Es obvio que estos mensajes serán distintos según sea el hardware del que se trate. Asegúrese de que el sistema detecta correctamente el sintonizador. Se puede sobreescribir alguno de los parámetros detectados por el sistema mediante MIB sysctl(8) y opciones del fichero de configuración del kernel. Si por ejemplo quiere obligar al sintonizador para que se comporte como un Phillips SECAM añada lo siguiente al fichero de configuración de su kernel:
options OVERRIDE_TUNER=6
Puede utilizar directamente sysctl(8):
# sysctl hw.bt848.tuner=6
Consulte en bktr(4) y en /usr/src/sys/conf/NOTES si necesita más detalles sobre las opciones disponibles.
7.5.3. Aplicaciones útiles
Tendrá que instalar una de estas aplicaciones para poder utilizar su tarjeta de TV:
multimedia/fxtv ofrece «TV en una ventana» y captura de imagen/sonido/vídeo.
multimedia/xawtv: otra aplicación de TV; ofrece lo mismo que fxtv.
misc/alevt decodifica y reproduce videotexto y teletexto.
audio/xmradio permite utilizar el sintonizador de radio FM que incorporan algunas tarjetas de TV.
audio/wmtune, una aplicación de escritorio muy útil para el uso de sintonizadores de radio.
Hay más aplicaciones útiles en la Colección de de Ports de FreeBSD.
7.5.4. Solución de problemas
Si tiene algún problema con su tarjeta de TV compruebe en primer lugar que el chip de captura de vídeo y el sintonizador realmente funcionan con el controlador bktr(4) y si ha utilizado las opciones de configuración más adecuadas. Si necesita más ayuda o necesita respuestas sobre su tarjeta de TV puede recurrir a la lista de correo Lista de correo sobre multimedia en FreeBSD.
7.6. Escáneres de imágenes
7.6.1. Introducción
El acceso a escáneres de imágenes en FreeBSD funciona gracias a la APISANE (siglas de «Scanner Access Now Easy», «el acceso a escáneres ahora es fácil»), disponible en la Colección de Ports de FreeBSD. SANE utiliza también ciertos controladores de FreeBSD para acceder al hardware del escáner.
FreeBSD puede utilizar tanto escáneres SCSI como USB. Asegúrese de que el suyo funciona con SANE antes de intentar ningún tipo de configuración. SANE tiene una lista de dispositivos soportados donde encontrará información actualizada sobre hasta dónde funciona el escáner y su estatus. La página de manual de uscanner(4) incluye una listas de escáneres USB que funcionan con SANE.
7.6.2. Configuración del kernel
Como ya se ha dicho tanto los interfaces USB como las SCSI funcionan. Según sea el interfaz de su escáner necesitará un tipo diferente de controlador:
7.6.2.1. Interfaz USB
El kernel GENERIC incluye por omisión los controladores de dispositivo necesarios para poder usar escáneres USB. Si va a personalizar su kernel asegúrese de que esto está en el fichero de configuración del mismo:
device usb device uhci device ohci device uscanner
Según cual sea el chipset de su placa base tendrá que usar device uhci
o device ohci
, aunque si tiene ambos no tendrá problemas por eso.
Si por cualquier motivo no quiere recompilar su kernel y su kernel no es el GENERIC puede cargar el módulo controlador de dispositivo uscanner(4) con kldload(8):
# kldload uscanner
Si quiere cargar este módulo cada vez que arranque el sistema debe añadir la siguiente línea a /boot/loader.conf:
uscanner_load="YES"
Tras reiniciar con el kernel correcto (o una vez que el módulo esté cargado) conecte su escáner USB. Debe aparecer en el «buffer» de mensajes del sistema (dmesg(8)) un mensaje una línea como la siguiente:
uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2
La línea del ejemplo muestra que nuestro escáner está utilizando el nodo de dispositivo /dev/uscanner0.
7.6.2.2. Interfaz SCSI
Si su escáner tiene un interfaz SCSI es importante saber qué controladora SCSI incorpora. El chipset SCSI que tenga influirá en la configuración del kernel que tenga que personalizar. El kernel GENERIC tiene controladores de dispositivo para las controladoras SCSI más comunes. Consulte el fichero NOTES y añada la línea correcta al fichero de configuración de su kernel. Tendrá que añadir también la siguiente línea:
device scbus device pass
Una vez compilado e instalado el kernel correctamente tiene ya que ver sus nuevos dispositivos en el «buffer» de mensajes del sistema:
pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfers
Si su escáner estaba apagado durante el arranque puede forzar manualmente la detección si ejecuta una búsqueda de buses SCSI con camcontrol(8):
# camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successful
El escáner aparecerá en la lista de dispositivos SCSI:
# camcontrol devlist
<IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)
Tiene todos los detalles sobre los dispositivos SCSI en las páginas de manual de scsi(4) y camcontrol(8).
7.6.3. Configuración de SANE
El sistema SANE se divide en dos partes: los «backends» (graphics/sane-backends) y los «frontends» (graphics/sane-frontends). Los «backends» facilitan el acceso al escáner propiamente dicho. La lista de dispositivos que funcionan con SANE le dirá qué «backend» hará funcionar su escáner de imágenes. No hay más remedio que identificar correctamente el «backend» de su escáner para poder usarlo. Los «frontends» ofrecen una interfaz gráfica para escanear (xscanimage).
Lo primero que hay que hacer es instalar el port o package de graphics/sane-backends. Después ejecute la orden sane-find-scanner
para comprobar el funcionamiento de la detección de escáneres del sistema SANE:
# sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3
En la salida de la orden anterior se le mostrará el tipo de interfaz del escáner y el nodo de dispositivo a través del cual el sistema accede a él. Es posible que no aparezcan la marca y el modelo, pero eso no tiene importancia.
Algunos escáneres USB necesitan que les instale un «firmware»; esto se explica en la página de manual del «backend» correspondiente. También debe leer las páginas de manual sane-find-scanner(1) y linprocfs(7). |
Ahora hay que comprobar que el «frontend» de escaneo puede identificar el escáner. Por omisión los «backends» de SANE incorporan una herramienta de línea de órdenes llamada sane(1), que le mostrará una lista de dispositivos e incluso una captura de imagen desde la shell. La opción -L
muestra una lista de escáners:
# scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scanner
Si el software no lanza ningún mensaje, o si el mensaje indica que no se han encontrado escáneres significa que sane(1) no puede identificar su escáner. Si este es el caso tendrá que editar el fichero de configuración del «backend»y definir en él el escáner que quiera utilizar. Encontrará todos los ficheros de configuración de los «backends» en el directorio /usr/local/etc/sane.d/. Este problema con la identificación del hardware es relativamente frecuente con ciertos modelos de escáneres USB.
Por ejemplo, con el escáner que hemos usado en la Interfaz USB la orden sane-find-scanner
nos da la siguiente información:
# sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0
El escáner ha sido detectado sin problemas, utiliza el interfaz USB y está conectado al nodo de dispositivo /dev/uscanner0 . Ahora comprobaremos que podemos identificar correctamente el escáner:
# scanimage -L
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).
No hemos podido identificar el escáner, así que hemos de editar el fichero /usr/local/etc/sane.d/epson.conf. Estamos usando el modelo de escáner EPSON Perfection® 1650, así que ya sabemos que el escáner utilizará el «backend» epson
. Lea atentamente los comentarios que hay en los ficheros de configuración de los «backends». Lo que hay que hacer es muy sencillo: basta con comentar las líneas en las que aparecen interfaces que no sean el perfecto para su escáner. En nuestro caso comentaremos todas las líneas que comiencen por scsi
puesto que nuestro escáner tiene interfaz USB. Después de esto hay que añadir una lína al final del fichero declarando el interfaz y el nodo de dispositivo que se van a usar. En el caso del ejemplo esto es lo que añadimos:
usb /dev/uscanner0
Por favor, lea los comentarios que encontrará en el fichero de configuración del «backend» y la pángina de manual de del «backend» si necesita más información sobre la sintaxis que debe usar. Hecho esto podemos verificar si ya podemos identificar el escáner:
# scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scanner
Hemos identificado nuestro escáner USB. Ni tiene importancia si la marca y modelo que hemos visto no coinciden con nuestro escáner. Lo único realmente importante es el campo `epson:/dev/uscanner0'
, que nos da el nombre correcto del «backend» y el nodo de dispositivo correcto.
Una vez que scanimage -L
llega a ver al escáner hemos terminado con la configuración. El dispositivo está listo para escanear imángenes.
sane(1) permite ejecutar una captura de imágen desde la línea de órdenes, pero siempre es mejor utilizar un interfaz gráfico de usuario para estas tareas. SANE ofrece un interfaz gráfico simple pero eficiente: xscanimage (graphics/sane-frontends).
Otro «frontend» gráfico para escanear que se ha hecho muy popular es Xsane (graphics/xsane). Este «frontend» tiene características muy avanzadas como varios modos de escaneo (fotocopia, fax, etc.), corrección de color, escaneo de imágenes por lotes, etc. Ambas aplicaciones pueden utilizarse además como «plugins» de GIMP.
7.6.4. Dar acceso al escáner a otros usuarios
Todo lo que se ha mostrado en esta sección se ha ejecutado con privilegios de root
. Lo normal es que haya otros usuarios que tengan que tener acceso al escáner. Un usuario que quiera usar el escáner tiene que tener acceso de lectura y escritura al nodo de dispositivo que usa el escáner. Por ejemplo, nuestro escáner USB utiliza el nodo de dispositivo /dev/uscanner0 propiedad del grupo operator
. Al añadir al usuario joe
al grupo operator
éste podrá acceder al escáner:
# pw groupmod operator -m joe
Para más información sobre el uso de pw(8) lea su página de manual. Tendrá también que configurar correctamente los permisos de escritura (0660 o 0664) en el nodo de dispositivo /dev/uscanner0; por omisión los miembros del grupo operator
sólo tienen acceso de lectura en este nodo de dispositivo. Añada las siguientes líneas al fichero lines to the /etc/devfs.rules:
[system=5] add path uscanner0 mode 660
Ahora añada lo siguiente a /etc/rc.conf y reinicie la máquina:
devfs_system_ruleset="system"
Para más información sobre lo que acaba de leer consulte la página de manual de devfs(8).
Por seguridad debería pensarse dos veces el hecho mismo de añadir cualquier usuario a un grupo y muy especialmente al grupo |
Capítulo 8. Configuración del kernel de FreeBSD
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. FreeBSD es un sistema dinámico y configurable, pero a veces sigue siendo necesario reconfigurar y recompilar un kernel hecho a la medida de nuestras necesidades.
Una vez leido este capítulo sabrá usted:
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 resolver algunos problemas si algo sale mal.
8.2. ¿Qué razones hay para compilar un kernel personalizado?
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 se comunicaba con una lista previa de dispositivos, y que si se deseaba modificar el comportamiento del kernel se debía compilar un nuevo kernel y reiniciar el sistema con el nuevo kernel.
Hoy en día FreeBSD evoluciona muy rápidamente hacia un modelo donde la funcionalidad del kernel se basa en módulos, los cuales pueden cargarse y descargarse dinámicamente de acuerdo a las necesidades del kernel. Esto permite al kernel adaptarse al nuevo hardware que sale al mercado (como las tarjetas PCMCIA en sistemas portátiles), o bien añadir nuevas funcionalidades al kernel que no eran al compilarlo la vez anterior. Esto es lo que conocemos como kernel modular.
A pesar de lo dicho aún es necesario llevar a cabo cierta configuración estática en la configuración del kernel. A veces se debe a que la funcionalidad del sistema está tan ligada al kernel que no puede hacerse mediante carga dinámica de módulos. En otros casos puede tratarse simplemente de que nadie ha programado un módulo para esa funcionalidad concreta que pueda cargarse dinámicamente en el kernel.
Compilar un kernel personalizado es uno de los ritos de iniciación más importantes a los que los usuarios de casi todos los BSD han de enfrentarse. Este proceso lleva su tiempo, pero le aportará grandes beneficios a su sistema FreeBSD. A diferencia del kernel GENERIC, con el que puede funcionar una cantidad apabullante de hardware disponible en el mercado, un kernel personalizado contiene únicamente lo necesario para que funcione el hardware de su sistema. Obviamente esto tiene sus ventajas:
Mayor rapidez en el arranque del sistema. Dado que el kernel sólo tiene que probar el hardware que realmente está en el sistema el tiempo que necesitará para arrancar se reducirá visiblemente.
Menor uso de memoria. Generalmente un kernel personalizado utiliza menos memoria que un kernel
GENERIC
, lo cual es importante ya que el kernel debe encontrarse siempre en memoria real. Por ésta razón un kernel personalizado puede ser de gran utilidad en sistemas con una cantidad limitada de memoria RAM.Hacer funcionar hardware específico. Un kernel personalizado le permite añadir al sistema dispositivos como tarjetas de sonido, que no están incluidas en el kernel
GENERIC
.
8.3. Inventario de hardware del sistema
Antes de aventurarnos en la configuración del kernel nunca está de más disponer de un inventario completo del hardware que hay en la máquina. En los casos en los que FreeBSD no es el sistema operativo principal de la máquina puede conseguir el inventario consultando la configuración de otro sistema operativo. Por ejemplo, el Gestor de dispositivos de Microsoft® suele contener información importante sobre los dispositivos que haya en la máquina. El Gestor de dispositivos está en el panel de control.
Algunas versiones de Microsoft® Windows® tienen un icono de Sistema con forma de pantalla desde el que se puede acceder al Gestor de dispositivos. |
Si no hay otro sistema operativo en la máquina el administrador tendrá que conseguir la información por su cuenta. Una forma de hacerlo es mediante dmesg(8) y man(1). La mayoría de los controladores de dispositivo que hay en FreeBSD tienen una página de manual, que suele incluir una lista del hardware que puede hacer funcionar. En la prueba del sistema durante el arranque va apareciendo una lista del harware que hay en la máquina. Por ejemplo, las siguientes líneas indican que el controlador psm ha encontrado un ratón:
psm0: <PS/2 Mouse> irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: [ITHREAD] psm0: model Generic PS/2 mouse, device ID 0
Puede añadir este controlador al fichero de configuración de su kernel personalizado o cargarlo utilizando loader.conf(5).
A veces los datos que muestra dmesg
solamente muestran mensajes del sistema en lugar de la salida de la prueba de arranque. En esos casos puede ver la verdadera salida de dmesg
en el fichero /var/run/dmesg.boot.
Otro método para identificar el hardware del sistema es usar pciconf(8), que tiene una salida mucho más verbosa. Veamos un ejemplo:
ath0@pci0:3:0:0: class=0x020000 card=0x058a1014 chip=0x1014168c rev=0x01 hdr=0x00 vendor = 'Atheros Communications Inc.' device = 'AR5212 Atheros AR5212 802.11abg wireless' class = network subclass = ethernet
Este fragmento, obtenido con pciconf -lv
muestra cómo el controlador ath ha encontrado un dispositivo Ethernet inalámbrico. Escriba man ath
para consultar la página de manual de ath(4).
La opción -k
de man(1) le suministrará valiosa información. Sigamos con el ejemplo anterior:
# man -k Atheros
Con esto obtendremos una lista de páginas de manual que contienen esa palabra en particular:
ath(4) - Atheros IEEE 802.11 wireless network driver ath_hal(4) - Atheros Hardware Access Layer (HAL)
Una vez que tenemos nuestra flamante lista de hardware del sistema el proceso de compilar un kernel personalizado debería parecer un poco menos inquietante.
8.4. Controladores del kernel, subsistemas y módulos
Antes de compilar un kernel personalizado conviene pensar antes los motivos. Si lo que se necesita es añadir hardware específico al sistema es posible que sea posible utilizarlo mediante un módulo.
Los módulos del kernel están en el directorio /boot/kernel y se pueden cargar dinámicamente en un kernel en funcionamiento con kldload(8). La mayoría, por no decir todos, los controladores del kernel tienen un módulo específico y una página de manual. Por ejemplo, en la sección anterior hablábamos del controlador Ethernet inalámbrico ath. La página de manual de este dispositivo contiene la siguiente información:
Alternatively, to load the driver as a module at boot time, place the following line in loader.conf(5): if_ath_load="YES"
Si hace lo que dice ahí, es decir, añadir la línea if_ath_load="YES"
al fichero /boot/loader.conf hará que el módulo se cargue dinámicamente cada vez que el sistema arranque.
Hay casos, no obstante, en los que no existe el módulo correspondiente. Esto sucede con ciertos subsistemas y con controladores muy importantes, como por ejemplo el de FFS, que necesita el kernel. Igual sucede con la posibilidad de utilizar redes (INET). Por desgracia, en estos casos la única forma de saber si hace falta un controlador es buscar el módulo.
Es sumamente fácil quitar un dispositivo o una opción del kernel y encontrarse de manos a boca con un kernel que no funciona. Por ejemplo, si elimina el controlador ata(4) del fichero de configuración del kernel un sistema que utilice unidades de disco ATA no podrá arrancar a menos que se añada la línea correspondiente al fichero loader.conf. Si tiene dudas busque el módulo y deje el kernel como está. |
8.5. 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 que también podemos acceder desde /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 propiamente dicha del mismo, 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, amd64, ia64, powerpc, sparc64 o pc98 (una arquitectura alternativa, similar a PC y 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 en las que FreeBSD puede funcionar. Observe la organización lógica de la estructura de los directorios, con cada dispositivo utilizable en el sistema, sistema de ficheros y opciones, cada cosa en su propio subdirectorio.
A lo largo de este capítulo asumiremos que está utilizando la arquitectura i386, puesto que sobre ella son los ejemplos que vamos a ir exponiendo. Si no es este su caso debe hacer los cambios adecuados a su arquitectura de hardware en las rutas que vayamos utilizando.
Si no existe el directorio /usr/src/sys en su sistema quiere decir que no están instaladas las fuentes del kernel. La forma más sencilla de tenerlas es mediante
|
Ahora vaya al 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 MIKERNEL
Por tradición el nombre se escribe con mayúsuculas y si tiene varias maquinas FreeBSD, con diferente hardware es recomendable darle a cada kernel el mismo nombre que la máquina en la que va a ejecutarse. En este ejemplo usaremos el nombre de MIKERNEL .
Guardar su fichero de configuración directamente bajo el directorio /usr/src, puede que no sea una idea muy astuta. Si empieza a tener problemas puede ser muy tentador borrar /usr/src y comenzar desde cero. Cinco segundos después de haber hecho esto se dará cuenta de que ha eliminado el fichero de configuración de su kernel, en el que quizás llevaba horas trabajando. Le proponemos una alternativa: guardar su fichero de configuración cualquier otro sitio y crear un enlace simbólico al fichero que hay en el directorio i386. Por ejemplo:
|
Ahora edite el fichero de configuración MIKERNEL 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. FreeBSD dispone de un editor de uso muy sencillo, llamado ee; si es usted principiante le será de mucha ayuda. Cambie los comentarios al principio del fichero con algo que refleje los cambios realizados o al menos para diferenciarlo del fichero GENERIC.
Si ha compilado un kernel en SunOS™ o algún otro sistema operativo BSD seguramente la mayor parte de fichero le será muy familiar. Si viene usted 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.
Asegúrese siempre de verificar el fichero /usr/src/UPDATING antes de realizar cualquier actualización del sistema si ha sincronizado sus fuentes para disponer de la última versión de los mismos. En el fichero /usr/src/UPDATING está toda la información importante sobre las actualizaciones. Al distribuirse con FreeBSD dicha información deberá estar más actualizada que la que hay en este mismo texto. |
Ahora es momento de llevar a cabo la compilación del código fuente del kernel.
Vaya al directorio /usr/src:
# cd /usr/src
Compile el kernel:
# make buildkernel KERNCONF=MIKERNEL
Instale el nuevo kernel:
# make installkernel KERNCONF=MIKERNEL
Es imprescindible que disponga del código fuente completo de FreeBSD para poder compilar el kernel. |
Por omisión, si compila un kernel personalizado todos los módulos del kernel serán recompilados también. Si quiere que la actualización de su kernel sea mucho más rápida o compilar solamente ciertos módulos personalizados, edite kernel modules will be rebuilt as well. /etc/make.conf antes de compilar el kernel: MODULES_OVERRIDE = linux acpi sound/sound sound/driver/ds1 ntfs Esta variable crea una lista de módulos listos para ser compilados, sin tocar los demás. WITHOUT_MODULES = linux acpi sound/sound sound/driver/ds1 ntfs Esta variable crea una lista de módulos que serán excluidos del proceso de compilación. Hay otras variables que pueden resultarle útiles durante este proceso; consulte la página de manual de make.conf(5). |
El nuevo kernel se copiará al directorio raíz como /kernel y el kernel viejo tendrá el nombre de /kernel.old. Ahora reinicie su sistema para poder probar su nuevo kernel. En caso de que se presente algun problema hay algunos consejos para la resolución de problemas al final de este capítulo. Asegúrese de leer la sección que explica cómo recuperar el sistema en caso de que su kernel no quiera arrancar.
Ciertos ficheros relacionados con el proceso de arranque, como loader(8)y su configuración, se guardan en /boot. Los módulos personalizados o de terceros se suelen guardar en /boot/kernel, aunque debe tener presente que es muy importante que los módulos y el kernel estén sincronizados. Si intenta usar módulos con un kernel para el que no están destinados puede haber errores o incluso producirse intesatabilidades. |
8.6. El fichero de configuración
El formato de un fichero de configuración es bastante simple. Cada línea contiene una palabra clave con uno o más argumentos. Para simplificar, hay muchas líneas que solamente contienen un argumento. Cualquier cosa detrás de un \#
se considerará un comentario y en consecuencia será ignorado. Las siguientes secciones describen todas las palabras clave en el orden en el que aparecen en GENERIC. Si quiere una lista exhaustiva de de opciones dependientes de arquitectura y de dispositivos puede consultar el fichero NOTES en el mismo directorio donde está el fichero GENERIC. Si quiere ver las opciones independientes de arquitectura consulte /usr/src/sys/conf/NOTES.
Puede generar un fichero que contenga todas las opciones disponibles en un kernel. Esto es algo que solamente se usa para hacer pruebas. Si quiere generarlo ejecute, como
|
A continuación veremos un ejemplo de fichero de configuración de un kernel GENERIC al que se han añadido comentarios adicionales donde se ha visto que era necesario abundar un poco para mayor claridad. Este ejemplo es igual (o, en el peor de los casos, casi igual) que la copia del mismo que tiene usted en /usr/src/sys/i386/conf/GENERIC.
machine i386
Esta es la arquitectura de la máquina. Debe ser alpha
, amd64
, i386
, ia64
, pc98
, powerpc
o sparc64
.
cpu I486_CPU cpu I586_CPU cpu I686_CPU
Las opciones anteriores definen el tipo de CPU que haya en su sistema. Puede dejar varias líneas de CPU (si, por ejemplo, no está seguro de usar I586_CPU
o I686_CPU
), pero si está personalizando su kernel es mucho mejor que solamente ponga la CPU que tenga. Si no está seguro de la CPU que tiene busque en los mensajes de arranque que se guardan en /var/run/dmesg.boot.
ident GENERIC
Este es el identificador del kernel. Modifíquelo para que cuadre con el nombre que le haya dado a su kernel, es decir, MIKERNEL
si ha seguido los ejemplos anteriores. El valor que asigne a la cadena ident
será el que se muestre cuando arranque con su kernel, así que es útil darle a su kernel un nombre distintivo que permita distinguirlo fácilmente de otros, por ejemplo, si está compilando un kernel experimental.
#To statically compile in device wiring instead of /boot/device.hints #hints "GENERIC.hints" # Default places to look for devices.
device.hints(5) se usa para configurar opciones de controladores de dispositivo. La ubicación por defecto en la que loader(8) buscará durante el arranque es /boot/device.hints. Si usa la opción hints
puede compilar el contenido de device.hints en su kernel, lo que hará innecesario crear ese fichero en /boot.
makeoptions DEBUG=-g # Build kernel with gdb(1) debug symbols
El proceso normal de compilación en FreeBSD incluye información de depuración de errores si se compila un kernel con la opción -g
, que activa la información de depuración de errores al pasar a gcc(1).
options SCHED_4BSD # 4BSD scheduler
El planificador de tareas tradicional y por omisión de FreeBSD. Déjelo como está.
options PREEMPTION # Enable kernel thread preemption
Permite que hilos que están en el kernel puedan asociarse con hilos cuya prioridad sea más alta. Ayuda con la interactividad y permite que los hilos interrumpidos puedan ejecutarse antes en lugar de tener que esperar.
options INET # InterNETworking
Networking. Deje esto como está, incluso si no tiene en mente conectar la máquina a una red. Muchos programas necesitan al menos disponer de lo que se llama «loopback networking» (esto es, poder efectuar conexiones de red con su propia máquina) así que tener esto es obligatorio.
options INET6 # IPv6 communications protocols
Activa los protocolos de comunicación IPv6.
options FFS # Berkeley Fast Filesystem
El sistema de ficheros básico para discos duros. Debe dejarlo como está si pretende poder arrancar desde disco duro.
options SOFTUPDATES # Enable FFS Soft Updates support
Activa Soft Updates en el kernel, lo que acelerará los accesos de escritura a sus discos. Esta funcionalidad la facilita el kernel, pero debe activarse para cada disco de forma específica. Revise la salida de mount(8) y verá si Soft Updates está activado en los discos de su sistema. Si no aparece la opción soft-updates
actívela mediante tunefs(8) (para sistemas de ficheros ya existentes) o newfs(8) (en el caso de sistemas de ficheros nuevos).
options UFS_ACL # Support for access control lists
Esta opción activa en el kernel las listas de control de acceso. Consiste en el uso de atributos extendidos y UFS2 junto con las características que se describen detalladamente en la Listas de control de acceso a sistemas de ficheros. Las ACL por omisión están activadas, y no deben desactivarse del kernel una vez que hayan sido usadas en un sistema de ficheros puesto que eliminará las listas de control de acceso y el modo en el que se protegen esos ficheros de un modo totalmente fuera de control.
options UFS_DIRHASH # Improve performance on big directories
This option includes functionality to speed up disk operations on large directories, at the expense of using additional memory. You would normally keep this for a large server, or interactive workstation, and remove it if you are using FreeBSD on a smaller system where memory is at a premium and disk access speed is less important, such as a firewall.
options MD_ROOT # MD is a potential root device
Esta opción permite que la partición raíz esté en un disco virtual basado en memoria.
options NFSCLIENT # Network Filesystem Client options NFSSERVER # Network Filesystem Server options NFS_ROOT # NFS usable as /, requires NFSCLIENT
NFS, el sistema de ficheros en red. Salvo que tenga intención de montar particiones de sistemas de ficheros UNIX® de un servidor a través de TCP/IP puede comentar estas opciones.
options MSDOSFS # MSDOS Filesystem
El sistema de ficheros MS-DOS®. Salvo que tenga en mente montar particiones de disco duro con formato DOS durante el arranque puede comentar esta opción. En caso de necesidad esta funcionalidad se cargará automáticamente. También tiene a su emulators/mtools, que le permitirá acceder a disquetes DOS sin tener que montarlos y desmontarlos (y ni siquiera requiere MSDOSFS
).
options CD9660 # ISO 9660 Filesystem
El sistema de ficheros ISO 9660 para CDROM. Coméntelo si no tiene unidad CDROM o solamente monta CD muy de vez en cuando; cuando lo necesite el sistema lo cargará dinámicamente. Los CD de sonido no utilizan este sistema de ficheros.
options PROCFS # Process filesystem (requires PSEUDOFS)
El sistema de ficheros de procesos. Es un sistema de ficheros "simulado" que se monta en /proc y permite a programas como ps(1) suministrar más información sobre qué procesos están ejecutándose. En la mayoaría de los casos no es necesario usar PROCFS
, puesto que la mayoría de las herramientas de monitorización y depuración han sido adaptadas para que funcionen sin PROCFS
. De hecho aunque lo instale el sistema no lo montará por omisión.
options PSEUDOFS # Pseudo-filesystem framework
Los kernel 6.X pueden usar PSEUDOFS
al utilizar PROCFS
.
options GEOM_GPT # GUID Partition Tables.
Con esta opción se puede tener una gran cantidad de particiones en un único disco.
options COMPAT_43 # Compatible with BSD 4.3 [KEEP THIS!]
Compatibilidad con 4.3BSD. Déjelo como está; ciertos programas pueden comportarse de formas muy extrañas si comenta esta opción.
options COMPAT_FREEBSD4 # Compatible with FreeBSD4
FreeBSD 5.X en sistemas i386™ y Alpha necesita esta opción para poder usar aplicaciones compiladas en versiones antiguas de FreeBSD que utilizan, por tanto, llamadas al sistema más antiguas. Esta opción no es necesaria en plataformas en las que funciona FreeBSD desde 5.X, como ia64 y sparc64.
options COMPAT_FREEBSD5 # Compatible with FreeBSD5
Esta opción hace falta en sistemas FreeBSD 6.X y versiones posteriores para poder ejecutar aplicaciones compiladas en FreeBSD 5.X, que usan interfaces de llamada al sistema FreeBSD 5.X.
options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI
Hace que el kernel haga una pausa de 5 segundos antes de probar los dispositivos SCSI del sistema. Si solamente tiene discos IDE puede ignorar esta opción, o también puede asignarle un valor menos para evitar el retardo en el arranque. Si lo hace y FreeBSD tiene problemas para reconocer dispositivos SCSI en el sistema es obvio que tendrá que incrementar el valor.
options KTRACE # ktrace(1) support
Activa las trazas en el kernel, algo muy útil para la depuración de errores.
options SYSVSHM # SYSV-style shared memory
Facilita memoria compartida System V. El uso más habitual es la extensión XSHM de X, que utiliza la mayoría de programas que hacen uso intensivo de los gráficos para incrementar la velocidad. Si usa X es casi seguro que le vendrá bien esta opción.
options SYSVMSG # SYSV-style message queues
Mensajes System V. Esta opción añade solamente unos cuantos bytes al kernel.
options SYSVSEM # SYSV-style semaphores
Semáforos System V. No es demasiado frecuente que se utilicen, pero solamente añaden unos cuantos cientos de bytes al kernel.
La opción |
options _KPOSIX_PRIORITY_SCHEDULING # POSIX P1003_1B real-time extensions
Extensiones en tiempo real añadidas en 1993 POSIX®. Ciertas aplicaciones de la Colección de Ports las utilizan, por ejemplo StarOffice™.
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
This option is required to allow the creation of keyboard device nodes in /dev.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
Giant es un mecanismo de exclusión mutua («sleep mutex») que protege un gran conjunto de recursos del kernel. Hoy en dia no es asumible tener un cuello de botella así por el impacto que tiene en el rendimiento, así que está siendo reemplazado por bloqueos que protegen los recursos de manera individual. ADAPTIVE_GIANT
hace que Giant sea incluido en un conjunto de «mutextes» que va rotando Esto es, cuando un hilo quiere bloquear el Giant mutex (pero ya está bloqueado por un hilo de otra CPU) el primer hilo seguirá ejecutándose a la espera de que se libere el bloqueo. Generalmente el hilo volverá al estado de reposo y esperará hasta que aparezca otra oportunidad de ejecutarse. Si no está seguro de lo que está haciendo es mejor que deje esta opción tal y como está.
Tenga en cuenta que en FreeBSD 8.0-CURRENT y versiones siguientes todos los «mutexes» son adaptables por omisión, salvo que se use la opción |
device apic # I/O APIC
El dispositivo apic activa la E/S APIC en la entrega de interrupciones. El dispositivo apic puede usarse tanto en kernels para un procesador (UP) como para sistemas multiprocesador (SMP). Si añada options SMP
funcionará en sistemas multiprocesador.
El dispositivo apic existe solamente en la arquitectura i386, de modo que no debe usarse esta línea en otras arquitecturas. |
device eisa
Use esta opción si tiene una placa base EISA. Activa la detección automática y permite la configuración de todos los dispositivos que estén en el bus EISA.
device pci
Use esta opción si tiene una placa PCI. Permite la detección automática de tarjetas PCI y permite la configuración entre el bus ISA y el PCI.
# Floppy drives device fdc
Este dispositivo es el controlador de la unidad de disquetes.
# ATA and ATAPI devices device ata
Este controlador permite utilizar dispositivos ATA y ATAPI. Si añade al kernel one device ata
éste detectará cualquier dispositivo ATA/ATAPI PCI que conecte a una máquina moderna.
device atadisk # ATA disk drives
Si usa device ata
tendrá que añadir también esto para poder usar unidades de disco ATA.
device ataraid # ATA RAID drives
Si usa device ata
tendrá que añadir también esto para poder usar unidades de disco ATA RAID.
device atapicd # ATAPI CDROM drives
Si usa device ata
tendrá que añadir también esto para poder usar unidades ATAPI CDROM.
device atapifd # ATAPI floppy drives
Si usa device ata
tendrá que añadir también esto para poder usar unidades de disquete ATAPI.
device atapist # ATAPI tape drives
Si usa device ata
tendrá que añadir también esto para poder usar unidades de cinta ATAPI.
options ATA_STATIC_ID # Static device numbering
Con esta opción hace que el número de controladores sea estático; si no se usa los números de dispositivo se asignan dinámicamente.
# SCSI Controllers device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices options AHC_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~128k to driver. device ahd # AHA39320/29320 and onboard AIC79xx devices options AHD_REG_PRETTY_PRINT # Print register bitfields in debug # output. Adds ~215k to driver. device amd # AMD 53C974 (Teckram DC-390(T)) device isp # Qlogic family #device ispfw # Firmware for QLogic HBAs- normally a module device mpt # LSI-Logic MPT-Fusion #device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (newer chipsets + those of `ncr') device trm # Tekram DC395U/UW/F DC315U adapters device adv # Advansys SCSI adapters device adw # Advansys wide SCSI adapters device aha # Adaptec 154x SCSI adapters device aic # Adaptec 15[012]x SCSI adapters, AIC-6[23]60. device bt # Buslogic/Mylex MultiMaster SCSI adapters device ncv # NCR 53C500 device nsp # Workbit Ninja SCSI-3 device stg # TMC 18C30/18C50
Controladoras SCSI. Coméntelas si no las tiene en su sistema. Si en su sistema tiene solamente unidades IDE puede borrarlas todas. Las líneas *_REG_PRETTY_PRINT
son opciones de depuración de errores de sus respectivos controladores de dispositivo.
# SCSI peripherals device scbus # SCSI bus (required for SCSI) device ch # SCSI media changers device da # Direct Access (disks) device sa # Sequential Access (tape etc) device cd # CD device pass # Passthrough device (direct SCSI access) device ses # SCSI Environmental Services (and SAF-TE)
Periféricos SCSI. Estos también puede borrarlos sin problemas si no los tiene en su sistema o si solamente tiene hardware IDE.
El controlador USB umass(4) (y unos cuantos controladores más) utilizan el subsistema SCSI aunque no sean dispositivos SCSI reales. No elimine el subsistema SCSI del kernel si va a utilizar cualquiera de estos controladores. |
# RAID controllers interfaced to the SCSI subsystem device amr # AMI MegaRAID device arcmsr # Areca SATA II RAID device asr # DPT SmartRAID V, VI and Adaptec SCSI RAID device ciss # Compaq Smart RAID 5* device dpt # DPT Smartcache III, IV - See NOTES for options device hptmv # Highpoint RocketRAID 182x device rr232x # Highpoint RocketRAID 232x device iir # Intel Integrated RAID device ips # IBM (Adaptec) ServeRAID device mly # Mylex AcceleRAID/eXtremeRAID device twa # 3ware 9000 series PATA/SATA RAID # RAID controllers device aac # Adaptec FSA RAID device aacp # SCSI passthrough for aac (requires CAM) device ida # Compaq Smart RAID device mfi # LSI MegaRAID SAS device mlx # Mylex DAC960 family device pst # Promise Supertrak SX6000 device twe # 3ware ATA RAID
Controladoras RAID que pueden utilizarse en FreeBSD. Si no las tiene en su sistema puede borrarlas.
# atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc # AT keyboard controller
El controlador de teclado (atkbdc
) ofrece servicios de E/S con teclados AT y ratones PS/2. El controlador de teclado (atkbd
) y el controlador de ratón PS/2 (psm
) necesitan este dispositivo.
device atkbd # AT keyboard
El controlador atkbd
, junto con el controlador atkbdc
, permiten utilizar el teclado AT 84 u otros tipos de teclados AT mejorados que se conecten mediante el controlador de teclado AT.
device psm # PS/2 mouse
Utilice este dispositivo si conecta su ratón en el puerto PS/2.
device kbdmux # keyboard multiplexer
Funcionalidad básica para múltiples teclados. Si no tiene en mente usar más de un teclado en el sistema puede borrar esta línea sin mayor problema.
device vga # VGA video card driver
El controlador de la tarjeta gráfica.
device splash # Splash screen and screen saver support
«Splash screen» en el arranque. Los salvapantallas necesitan este dispositivo.
# syscons is the default console driver, resembling an SCO console device sc
sc
por omisión es el controlador de dispositivo de la consola; se parece mucho a una consola de SCO. Dado que muchos programas de pantalla completa acceden a la consola a través de la biblioteca de bases de datos de terminal termcap no tiene demasiada importancia si usa vt
, el controlador de consola compatible VT220
. Cuando acceda al sistema asigne a su variable TERM
el valor scoansi
si los programas a pantalla completa tienen algún problema para acceder a la consola.
# Enable this for the pcvt (VT220 compatible) console driver #device vt #options XSERVER # support for X server on a vt console #options FAT_CURSOR # start with block cursor
El controlador de dispositivo VT220-compatible; es compatible con VT100/102, anterior a él. Funciona bien en ciertos sistemas portátiles que adolecen de incompatibilidad de harware con sc
. Asigne a su variable de entorno TERM
el valor vt100
o vt220
cuando acceda al sistema. Este controlador le puede ser de utilidad si tiene que acceder a gran cantidad de máquinas a través de una red, una situación en la que suele suceder que termcap o terminfo no están ahí para que las use sc
. vt100
, por el contrario, debería aparecer en práticamente cualquier plataforma.
device agp
Utilice esta opción si tiene en el sistema una tarjeta AGP. Activará AGP y también AGP GART si su tarjeta puede usarla.
# Power management support (see NOTES for more options) #device apm
Gestión avanzada de la energía. Muy útil en sistemas portátiles. Viene desactivada por omisión en el kernel GENERIC .
# Add suspend/resume support for the i8254. device pmtimer
Controlador del reloj para eventos de gestión de la energía, como APM y ACPI.
# PCCARD (PCMCIA) support # PCMCIA and cardbus bridge support device cbb # cardbus (yenta) bridge device pccard # PC Card (16-bit) bus device cardbus # CardBus (32-bit) bus
Dispositivos PCMCIA. Si el sistema es portátil necesita tener esto activado.
# Serial (COM) ports device sio # 8250, 16[45]50 based serial ports
Estos son los puertos serie a los que se conoce como puertos COM en entornos MS-DOS®/Windows®.
Si tiene un módem interno en COM4 un puerto serie en COM2 tendrá que asignar a la IRQ del módem el 2 (por razones técnicas ignotas IRQ2 = IRQ 9) para que pueda acceder al dispositivo desde FreeBSD. Si tiene una tarjeta serie multipuerto consulte la página de manual de sio(4) si quiere más detalles sobre los valores que debe añadir a /boot/device.hints. Algunas tarjetas gráficas (sobre todo las que usan chips S3) utilizan direcciones IO del tipo Es necesario que cada puerto serie tenga una IRQ única (salvo que use una tarjeta multipuerto que permita compartir interrupciones), así que las IRQ de COM3 y de COM4 no se pueden utilizar. |
# Parallel port device ppc
El interfaz del puerto paralelo de bus ISA.
device ppbus # Parallel port bus (required)
El bus del puerto paralelo.
device lpt # Printer
Permite usar el puerto paralelo para conectar impresoras.
Necesitará disponer de los tres anteriores para poder utilizar impresoras mediante el puerto paralelo. |
device plip # TCP/IP over parallel
Este controlador es para la interfaz de red a través del puerto paralelo.
device ppi # Parallel port interface device
La E/S de propósito general (conocida también como "puerto geek") + E/S IEEE1284.
#device vpo # Requires scbus and da
Este dispositivo se usa con unidades Iomega Zip. Necesita scbus
y da
. El mejor rendimiento se alcanza con el uso de los puertos en modo EPP 1.9.
#device puc
Puede utilizar este dispositivo si tiene una tarjeta PCI "tonta" (por puerto serie o paralelo) que funcione mediante el controlador puc(4).
# PCI Ethernet NICs. device de # DEC/Intel DC21x4x (Tulip) device em # Intel PRO/1000 adapter Gigabit Ethernet Card device ixgb # Intel PRO/10GbE Ethernet Card device txp # 3Com 3cR990 (Typhoon) device vx # 3Com 3c590, 3c595 (Vortex)
Diversos controladores para tarjetas de red PCI. Puede borrar todas las que no estén en su sistema.
# PCI Ethernet NICs that use the common MII bus controller code. # NOTE: Be sure to keep the 'device miibus' line in order to use these NICs! device miibus # MII bus support
El poder utilizar bus MII es necesario para ciertas tarjetas Ethernet PCI 10/100, más concretamente las que usan transceptores compatibles con MII o implementan interfaces de control de transceptores que funcionan como si fueran MII. Si incluye device miibus
al kernel dispondrá de la API miibus genérica y todos los controladores PHY, incluyendo uno que hará funcionar hardware que, siendo del tipo PHY, no está bajo ninguno de los controladores PHY específicos.
device bce # Broadcom BCM5706/BCM5708 Gigabit Ethernet device bfe # Broadcom BCM440x 10/100 Ethernet device bge # Broadcom BCM570xx Gigabit Ethernet device dc # DEC/Intel 21143 and various workalikes device fxp # Intel EtherExpress PRO/100B (82557, 82558) device lge # Level 1 LXT1001 gigabit ethernet device msk # Marvell/SysKonnect Yukon II Gigabit Ethernet device nge # NatSemi DP83820 gigabit ethernet device nve # nVidia nForce MCP on-board Ethernet Networking device pcn # AMD Am79C97x PCI 10/100 (precedence over 'lnc') device re # RealTek 8139C+/8169/8169S/8110S device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (Starfire) device sis # Silicon Integrated Systems SiS 900/SiS 7016 device sk # SysKonnect SK-984x & SK-982x gigabit Ethernet device ste # Sundance ST201 (D-Link DFE-550TX) device stge # Sundance/Tamarack TC9021 gigabit Ethernet device ti # Alteon Networks Tigon I/II gigabit Ethernet device tl # Texas Instruments ThunderLAN device tx # SMC EtherPower II (83c170 EPIC) device vge # VIA VT612x gigabit ethernet device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (Boomerang, Cyclone)
Controladores que utilizan el código del controlador de bus MII.
# ISA Ethernet NICs. pccard NICs included. device cs # Crystal Semiconductor CS89x0 NIC # 'device ed' requires 'device miibus' device ed # NE[12]000, SMC Ultra, 3c503, DS8390 cards device ex # Intel EtherExpress Pro/10 and Pro/10+ device ep # Etherlink III based cards device fe # Fujitsu MB8696x based cards device ie # EtherExpress 8/16, 3C507, StarLAN 10 etc. device lnc # NE2100, NE32-VL Lance Ethernet cards device sn # SMC's 9000 series of Ethernet chips device xe # Xircom pccard Ethernet # ISA devices that use the old ISA shims #device le
Controladores Ethernet ISA. Consulte /usr/src/sys/i386/conf/NOTES para más detalles sobre qué tarjetas hace funcionar qué controlador.
# Wireless NIC cards device wlan # 802.11 support
802.11 genérico. Necesitará esta línea si va a usar redes inalámbricas.
device wlan_wep # 802.11 WEP support device wlan_ccmp # 802.11 CCMP support device wlan_tkip # 802.11 TKIP support
Criptografía en dispositivos 802.11. Necesita estas líneas si quiere utilizar criptografía y protocolos de seguridad 802.11.
device an # Aironet 4500/4800 802.11 wireless NICs. device ath # Atheros pci/cardbus NIC's device ath_hal # Atheros HAL (Hardware Access Layer) device ath_rate_sample # SampleRate tx rate control for ath device awi # BayStack 660 and others device ral # Ralink Technology RT2500 wireless NICs. device wi # WaveLAN/Intersil/Symbol 802.11 wireless NICs. #device wl # Older non 802.11 Wavelan wireless NIC.
Diversas tarjetas inalámbricas.
# Pseudo devices device loop # Network loopback
El dispositivo de «loopback» para TCP/IP. Si accede por telnet o FTP or FTP to localhost
también conocido como 127.0.0.1
) lo hará a través de este dispositivo. Es imprescindible tenerlo en el sistema.
device random # Entropy device
Generador de números criptográficamente seguro.
device ether # Ethernet support
ether
solo es necesario si tiene alguna tarjeta Ethernet. Incluye código genérico del protocolo Ethernet.
device sl # Kernel SLIP
sl
permite utilizar SLIP. Ha sido sustituido casi totalmente por PPP, que es más fácil de usar, está mejor capacitado para la conexión de módem a módem y es, en general, claramente mejor.
device ppp # Kernel PPP
Este dispositivo incluye en el kernel la capacidad de gestionar conexiones de llamada entrante «dial-up». Hay también una versión de PPP implementada como aplicación de usuario; utiliza tun
y ofrece más flexibilidad y características como la llamada bajo petición.
device tun # Packet tunnel.
Este dispositivo lo usa el software PPP de usuario. Consulte la sección sobre PPP de este mismo libro.
device pty # Pseudo-ttys (telnet etc)
Este dispositivo es una "pseudoterminal", o un puerto de entrada al sistema simulado. Se usa en sesiones entrantes de telnet
y rlogin
; también lo usan xterm y otras aplicaciones, entre las que encontramos a Emacs.
device md # Memory disks
Pseudodispositivos de disco basados en memoria.
device gif # IPv6 and IPv4 tunneling
Este dispositivo implementa túneles de IPv6 sobre IPv4, IPv4 sobre IPv6, IPv4 sobre IPv4 e IPv6 sobre IPv6. El dispositivo gif
se puede clonar a sí mismo, así que los nodos de dispositivo se van creando a medida que van haciendo falta.
device faith # IPv6-to-IPv4 relaying (translation)
Este pseudodispositivo captura paquetes que se le hayan enviado y los dirige hacia el dæmon de traducción IPv4/IPv6.
# The `bpf' device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! # Note that 'bpf' is required for DHCP. device bpf # Berkeley packet filter
El filtro de paquetes de Berkeley. Este pseudodispositivo permite poner interfaces de red en modo promíscuo, lo que significa que capturan todos los paquetes que circulen por una red broadcast (por ejemplo una Ethernet). Dichos paquetes pueden guardarse en disco para su posterior examen mediante tcpdump(1) (el análisis con tcpdump(1) no puede hacerse directamente también).
El dispositivo bpf(4) también lo usa dhclient(8) para obtener direcciones IP del encaminador (gateway) por omisión. Si usa DHCP deje esta opción como está. |
# USB support device uhci # UHCI PCI->USB interface device ohci # OHCI PCI->USB interface device ehci # EHCI PCI->USB interface (USB 2.0) device usb # USB Bus (required) #device udbp # USB Double Bulk Pipe devices device ugen # Generic device uhid # Human Interface Devices device ukbd # Keyboard device ulpt # Printer device umass # Disks/Mass storage - Requires scbus and da device ums # Mouse device ural # Ralink Technology RT2500USB wireless NICs device urio # Diamond Rio 500 MP3 player device uscanner # Scanners # USB Ethernet, requires mii device aue # ADMtek USB Ethernet device axe # ASIX Electronics USB Ethernet device cdce # Generic USB over Ethernet device cue # CATC USB Ethernet device kue # Kawasaki LSI USB Ethernet device rue # RealTek RTL8150 USB Ethernet
Diversos dispositivos USB.
# FireWire support device firewire # FireWire bus code device sbp # SCSI over FireWire (Requires scbus and da) device fwe # Ethernet over FireWire (non-standard!)
Diversos dispositivos Firewire.
Tiene más información y una lista con más dispositivos que funcionan en FreeBSD consulte /usr/src/sys/i386/conf/NOTES.
8.6.1. Configuraciones con grandes cantidades de memoria (PAE)
Las máquinas que tienen configuraciones con grandes cantidades de memoria necesitan acceder a más de 4 gigabytes de espacio de direcciones KVA (User+Kernel Virtual Address). Debido a esta limitación Intel añadió a las CPU Pentium® Pro y modelos posteriores la posibilidad de acceso al espacio de direcciones físicas de 36 bits.
PAE (Physical Address Extension) a las CPU Intel® Pentium® Pro y los modelos posteriores configuraciones de memoria de hasta 64 gigabytes. Para poder aprovechar esto en FreeBSD existe la opción del kernel PAE
, disponible en todas las versiones modernas de FreeBSD. A causa de esta limitación de memoria en los Intel no hay nada que distinga de algún modo la memoria situada por debajo del límite de los 4 gigabytes. La memoria que esté por encima de los 4 gigabytes se coloca en el «pool» de memoria disponible.
Si quiere activar PAE en el kernel tiene que añadir la siguiente liínea al fichero de configuración del kernel:
options PAE
En FreeBSD PAE solamente existe en procesadores Intel® IA-32. Hemos de advertirle de que PAE no ha sido probado todo lo necesario, así que debe considerarse de calidad beta, sobre todo si se le compara con otras características de FreeBSD. |
PAE en FreeBSD tiene varias limitaciones:
Un solo proceso no puede acceder a más de 4 gigabytes de espacio VM.
No puede cargar módulos KLD en un kernel que tenga PAE activado debido a las diferencias existentes entre el «framework» de compilación del módulo y el del kernel mismo.
Los controladores de dispositivo que utilizan el interfaz bus_dma(9) pueden provocar corrupción de datos en un kernel con PAE activado, una excelente razón para no utilizarlos. Esta es la razón de que FreeBSD incorpore un fichero de configuración de un kernel PAE del que se han extraído todos los módulos que se sabe que no funcionan en un kernel con PAE activado.
Algunos «system tunables» determinan el uso de recursos de memoria basándose en la memoria física disponible. Estos «tunables» pueden asignar más memoria de la que realmente debieran debido a que el sistema PAE está íntimamente ligado a cantidades bastante importantes de memoria. Un ejemplo de esto es la sysctl
kern.maxvnodes
, que controla el número máximo de vnodes permitidos en el kernel. Le recomendamos que ajuste este y otros tunables dentro valores razonables.Es posible que tenga que aumentar el espacio virtual de direcciones del kernel (el KVA) o reducir la cantidad de recursos exclusivos del kernel que se utilicen exhaustivamente (ver más arriba) para evitar que KVA literalmente se ahogue. La opción del kernel
KVA_PAGES
permite incrementar el espacio KVA.
8.7. Qué hacer si algo va mal
Hay cuatro categorías de problemas que podemos encontrarnos en el proceso de compilación de un kernel personalizado:
- Fallo de
config
Si config(8) falla cuando le pasa la descripción de su kernel seguramente ha cometido algún pequeño error. Por suerte config(8) les mostrará el número de la línea que le está dando problemas, así que no tendrá mayor problema para localizarla. Veamos un ejemplo:
config: line 17: syntax error
Si ve algo así asegúrese de que ha tecleado la palabra clave que hay en esa lína. Compare la de su fichero de configuración del kernel con la de GENERIC.
- Fallo de
make
If the
make
command fails, it usually signals an error in your kernel description which is not severe enough for config(8) to catch. Again, look over your configuration, and if you still cannot resolve the problem, send mail to the lista de correo para preguntas generales sobre FreeBSD with your kernel configuration, and it should be diagnosed quickly.- El kernel no arranca:
Si su nuevo kernel no arranca o no reconoce sus dispositivos de hardware no desespere. FreeBSD dispone de excelentes mecanismos de recuperación ante kernels defectuosos. Elija el kernel con el que quiere arrancar en el gestor de arranque de FreeBSD. Puede acceder al gestor de arranque en el momento en el que aparece el menú de arranque. Elija la opción número seis, "Escape to a loader prompt" option, Escriba en el prompt
unload kernel
y después escribaboot /boot/kernel.old/kernel
, o el nombre de cualquier otro kernel que tenga en el sistema y del que sepa que puede fiarse. Si va a reconfigurar un kernel es una buenísima idea guardar un kernel que sepa que funciona.Tras arrancar con un kernel de fiar verifique el fichero de configuración e intente de nuevo una compilación. El fichero /var/log/messages es una fuente de información muy valiosa puesto que registra, entre otras cosas, todos los mensajes que deja el kernel cada vez que hay un arranque satisfactorio. dmesg(8) le mostrará los mensajes que el kernel ha generado durante el último arranque.
Si tiene problemas compilando un kernel recuerde que es de vital importancia que guarde una copia de un kernel GENERIC u otro del que pueda fiarse y que (esto es muy importante) tenga un nombre distinto de kernel.old para evitar que el sistema lo borre una vez que termine una nueva compilación. No puede confiar en su kernel kernel.old porque al instalar un nuevo kernel (que aún no sabe si será el que funcione tal y como espera de él) el kernel kernel.old se sobreescribe con el kernel que instale. Otra cosa importante es que copie ese kernel de fiar a /boot/kernel, o ciertas herramientas como ps(1) no funcionarán. Basta con que haga lo siguiente:
# mv /boot/kernel /boot/kernel.malo # mv /boot/kernel.bueno /boot/kernel
- El kernel funciona, pero ps(1) no
Si el kernel que tiene instalado es de una versión de FreeBSD y las utilidades del sistema son de otra, por ejemplo un kernel -CURRENT en una -RELEASE, hay muchas herramientas de monitorización del sistema como ps(1) y vmstat(8) no funcionarán. Ejecute un make buildworld y un make install world con la misma versión de código fuente con la que ha compilado su kernel. Esta es una de las razones por las que no es una idea demasiado buena utilizar versiones diferentes de kernel y de sistema operativo.
Capítulo 9. Imprimir
9.1. Sinopsis
FreeBSD puede utilizarse para imprimir en una gran variedad de impresoras, desde las antiguas impresoras de matriciales hasta las más modernas impresoras laser y todo lo que existe entre unas y otras, con lo que podrá imprimir con una calidad muy alta desde cualquier aplicación.
FreeBSD puede usarse también como servidor de impresión en red; FreeBSD puede recibir peticiones de impresión de una gran cantidad de sistemas, bien sean FreeBSD, Windows® y Mac OS®. FreeBSD se encarga de los trabajos se vayan imprimiendo uno tras otro y puede mantener estadísticas sobre qué usuarios y qué máquinas están imprimiendo más, generar páginas de «encabezado» para colocarlas antes de cada trabajo y distinguir así de quién es la impresión, etc.
Tras leer el presente capítulo sabrá usted:
Cómo configurar la cola de impresión en FreeBSD.
Cómo instalar filtros de impresión para gestionar diversos trabajos especiales como la conversión de documentos a formatos aptos para su impresora.
Cómo habilitar encabezados en sus impresiones.
Cómo imprimir en impresoras conectadas a otras máquinas.
Cómo imprimir en impresoras conectadas directamente a la red.
Cómo controlar restricciones de impresión, como por ejemplo limitaciones del tamaño de trabajos o evitar que ciertos usuarios puedan imprimir.
Cómo mantener estadísticas de impresión y cuentas de usuario de impresión.
Cómo solucionar los problemas de impresión más comunes.
Antes de leer este capítulo usted debería:
Saber cómo compilar e instalar un kernel personalizado (Configuración del kernel de FreeBSD).
9.2. Introducción
Si quiere utilizar impresoras con FreeBSD debe configurarlas de forma que funcionen con el sistema de cola de impresión de Berkeley, también conocido como sistema de cola LPD. Es el sistema de control de impresión estándar en FreeBSD. Este capítulo trata sobre el sistema LPD, al que en adelante nos referiremos simplemente como LPD, y le introducirá en la configuración del mismo.
Si está familiarizado con el sistema de cola de impresión LPD, o bien con algún otro sistema de impresión, puede pasar a la sección Configuración del sistema de cola de impresión.
LPD se encarga de controlar todo lo relacionado con la impresión, lo que en consecuencia implica encargarse de lo siguiente:
Controlar el acceso a las impresoras conectadas directamente al sistema y a impresoras conectadas a otras máquinas de la red.
Permitir que ciertos usuarios puedan enviar ficheros para su impresión; estos envíos reciben el nombre de trabajos ("jobs").
Evita que usuarios diferentes accedan a la impresora al mismo tiempo manteniendo un orden estricto en la cola de impresión de cada impresora.
Imprimir encabezados de forma que los usuarios puedan distinguir fácilmente los trabajos que han impreso.
Se ocupa de los parámetros para impresoras conectadas a puertos serie.
Enviar trabajos de impresión a través de una red a la cola LPD de una máquina remota.
Ejecutar filtros especiales para formatear trabajos que requieren la gestión de lenguajes de impresión o impresoras de diferentes características.
Mantener un registro del uso de la impresora.
Gracias al fichero de configuración (/etc/printcap) y mediante programas especiales de filtrado puede hacerse que el sistema LPD cumpla todas las tareas citadas o si lo prefiere solo unas cuantas; además puede hacerlo en una gran variedad de impresoras.
9.2.1. ¿Por qué utilizar una cola de impresión?
Si es usted la única persona que usa el sistema se estará por qué preocuparse de utilizar un sistema de cola de impresión si es evidente que no necesita restricciones de acceso, encabezados ni cuentas de impresión. Puede utilizar el acceso directo a impresión, pero debería utilizar una cola de impresión por las siguientes razones:
El sistema LPD ejecuta los trabajos en segundo plano, esto es, no tiene que esperar a que la impresora procese los datos para seguir trabajando.
LPD puede procesar un trabajo de forma que pase por filtros, añadir cabeceras de fecha y hora o convertir un fichero de formato especial (por ejemplo TeX DVI) a un formato que la impresora entienda y que no tenga usted que ocuparse de ello manualmente.
Muchos programas, tanto libres como comerciales, desde los que se puede imprimir están hechos pensando en que haya disponible un sistema de impresión. Una vez que configure un sistema de colas podrá utilizar software que ya tiene instalado y preparar el campo para el que instale en el futuro.
Capítulo 10. Compatibilidad binaria con Linux
10.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 getenv(3), 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á usted:
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:
cómo instalar software de terceros (Instalación de aplicaciones: «packages» y ports).
10.2. Instalación
La compatibilidad binaria con Linux no viene activada por omisión. 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 estáticamente la compatibilidad de binarios Linux en el kernel agregando options COMPAT_LINUX
a su fichero de configuración del kernel. Luego instale su nuevo kernel como se describe en Configuración del kernel de FreeBSD.
10.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.
10.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 de 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. Generalmente esto no suele ser un problema muy grave.
Pueden coexistir 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. |
10.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.
10.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
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
y un binario requiere una versión más reciente (como indica la siguiente salida de
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 actualizar libc.so; el resultado sería este:
|
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. |
10.2.2. Instalar binarios ELF Linux
Los binarios ELF algunas veces requieren un paso extra de "marcado". Si trata de ejecutar un binario ELF no marcado 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.
10.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.
10.3. Instalación de Mathematica®
Este documento describe el proceso de instalación de la versión para Linux de Mathematica® 5.X en un sistema FreeBSD.
Puede pedir a Wolfram, el fabricante, La versión para para Linux de Mathematica® o la versión de Mathematica® para estudiantes en su sitio web, http://www.wolfram.com/.
10.3.1. El instalador de Mathematica®
Lo primero que tiene que hacer es decirle a FreeBSD que los binarios de Mathematica® para Linux utilizan la ABI Linux. La forma más sencilla de hacerlo es marcar por omisión todos los binarios sin marcas como Linux ELF.
# sysctl kern.fallback_elf_brand=3
Hecho esto FreeBSD asumirá que cualquier binario sin marca que encuentre utiliza la ABI Linux; de este modo podrá ejecutar el binario directamente desde el CDROM.
Copie el fichero MathInstaller en su disco duro
# mount /cdrom
# cp /cdrom/Unix/Installers/Linux/MathInstaller /directoriolocal/
Edite este fichero y sustituya la primera línea, /bin/sh
, por /compat/linux/bin/sh
para asegurarnos de que lo que ejecute el instalador sea la verión de sh(1) de Linux. El siguiente paso es sustituir todos los Linux)
por FreeBSD)
con un editor de texto on con el script que encontrará en la siguiente sección. Esto se hace para ayudar al instalador de Mathematica®, el cual en un cierto momento invoca a uname -s
para determinar el sistema operativo, a tratar a FreeBSD como si fuera un sistema operativo muy similar a Linux. Hecho todo esto, cuando ejecute MathInstaller
podrá instalar Mathematica®.
10.3.2. Modificación de los ejecutables de Mathematica®
Debe modificar los scripts de shell que Mathematica® creó durante la instalación antes de usarlos. Si eligió ubicar en /usr/local/bin los ejecutables de Mathematica® verá que en ese directorio hay enlaces simbólicos a ficheros como math, mathematica, Mathematica y MathKernel. En cada uno de esos ficheros debe sustituir Linux)
por FreeBSD)
con un editor de texto o bien con el siguiente script de shell:
#!/bin/sh cd /usr/local/bin for i in math mathematica Mathematica MathKernel do sed 's/Linux)/FreeBSD)/g' $i > $i.tmp sed 's/\/bin\/sh/\/compat\/linux\/bin\/sh/g' $i.tmp > $i rm $i.tmp chmod a+x $i done
10.3.3. Cómo obtener una contraseña de Mathematica®
Cuando arranque Mathematica® por primera vez se le pedirá una contraseña. Si Wolfram no le ha enviado ya necesita un "machine ID", para lo cual debe ir al directorio de instalación y ejecutar mathinfo
. Este "machine IDE" se obtiene de la dirección MAC de la primera tarjeta Ethernet de la máquina y tiene como objetivo que no pueda ejecutar Mathematica® en más de una máquina.
Durante el proceso de registro en Wolfram (ya sea por correo electrónico, teléfono o fax) les dará el "machine ID" y Wolfram le enviará una contraseña relacionada con él, consistente en grupos de números.
10.3.4. Ejecución del «frontend» de Mathematica® través de una red
Mathematica® usa unos cuantos tipos especiales para mostrar caracteres que no están en ningún conjunto estándar de tipos: integrales, sumas, letras griegas, etc. El protocolo X exige que los tipos estén instalados en local, es decir, tiene que copiar los tipos del CDROM o la máquina desde la que ha instalado Mathematica® a su máquina. Los tipos están en el directorio del CDDROM /cdrom/Unix/Files/SystemFiles/Fonts y se supone que deben estar en su disco duro en el directorio /usr/local/mathematica/SystemFiles/Fonts. Los tipos están realmente en los subdirectorios Type1 y X. Hay varias formas de utilizarlos.
La primera es copiarlos en uno de los directorios de tipos que hay en /usr/X11R6/lib/X11/fonts, antes de lo cual tendrá que añadir a fonts.dir los nombres de los tipos; tendrá también que cambiar el número de tipos en la primera línea. Por otra parte, todo esto puede hacerse ejecutando mkfontdir(1) en el directorio donde haya copiado los tipos.
La segunda forma de utilizar estos tipos es copiarlos bajo /usr/X11R6/lib/X11/fonts:
# cd /usr/X11R6/lib/X11/fonts
# mkdir X
# mkdir MathType1
# cd /cdrom/Unix/Files/SystemFiles/Fonts
# cp X/* /usr/X11R6/lib/X11/fonts/X
# cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1
# cd /usr/X11R6/lib/X11/fonts/X
# mkfontdir
# cd ../MathType1
# mkfontdir
Añada los nuevos directorios de tipos a su ruta de tipos:
# xset fp+ /usr/X11R6/lib/X11/fonts/X
# xset fp+ /usr/X11R6/lib/X11/fonts/MathType1
# xset fp rehash
Si usa el servidor Xorg puede cargar los tipos automáticamente añadiéndolos al fichero xorg.conf.
En servidores XFree86™ el fichero de configuración es XF86Config. |
Si no tiene ya en su sistema un directorio /usr/X11R6/lib/X11/fonts/Type1 puede cambiarle el nombre al directorio MathType1 del ejemplo anterior por Type1.
10.4. Instalación de Maple™
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:
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. /usr/local/maple es un buen sitio para instalar el software.
Si no lo ha hecho ya, solicite una licencia para Maple™ a Maple Waterloo Software (http://register.maplesoft.com/) y cópiela a /usr/local/maple/license/license.dat.
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).
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 -----
Tenga muy presente que después de
"FreeBSD"|\
no debe haber ningún espacio en blanco.Este parche le dice a Maple™ que interprete "FreeBSD" como un tipo de sistema Linux. El "script" de shell bin/maple llama al "script" de shell bin/maple.system.type, que a su vez recurre a
uname -a
para dictaminar el nombre del sistema operativo. Dependiendo de cuál sea sabrá qué binarios utilizar.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 ------------
Prueba de arranque de Maple™:
% cd /usr/local/maple/bin % ./xmaple
Todo 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.
10.4.1. Problemas frecuentes
El gestor de licencias FLEXlm puede ser un tanto difícil de usar. En caso de necesitarla tiene más información 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
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).
10.5. Instalación de MATLAB®
Este documento describe el proceso de instalación de la versión para Linux de MATLAB® version 6.5 en FreeBSD. En general funciona bastante bien, excepción hecha de Java Virtual Machine™ (consulte la Enlace del entorno de ejecución Java™).
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 sería muy buena idea que ofrecieran una versión nativa de su software para FreeBSD.
10.5.1. Instalación de MATLAB®
Para instalar MATLAB® haga lo siguiente:
Inserte el CD de instalación y móntelo. Conviértase en
root
e inicie la instalación:# /compat/linux/bin/sh /cdrom/install
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).Teclée
/compat/linux/usr/local/matlab
donde el instalador le pida el directorio raíz de MATLAB®.Esto último 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
Edite el fichero de licencia tal y como consta en las instrucciones de la licencia de MATLAB®.
Puede tenerlo ya editado y copiado a $MATLAB/license.dat desde antes de que el instalador se lo pida.
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.
10.5.2. Inicio del administrador de licencias
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
Crée un fichero de inicio en /usr/local/etc/rc.d/flexlm.sh. El siguiente ejemplo es una versión modificada de $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 nombre-de-usuario && echo 'MATLAB_lmgrd' fi ;; stop) if [ -f /usr/local/etc/lmdown_TMW ]; then /compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1 fi ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac exit 0
El fichero debe ser ejecutable:
# chmod +x /usr/local/etc/rc.d/flexlm.sh
Tendrá que reemplazar la entrada nombre-de-usuario de nuestro ejemplo por un nombre de usuario válido en su sistema (que no sea
root
).Arranque el administrador de licencias:
# /usr/local/etc/rc.d/flexlm.sh start
10.5.3. Enlace del entorno de ejecución Java™
Cambie el enlace del entorno de ejecución Java™ (JRE) a uno que funcione en FreeBSD:
# cd $MATLAB/sys/java/jre/glnx86/
# unlink jre; ln -s ./jre1.1.8 ./jre
10.5.4. Creación de un "script" de arranque para MATLAB®
Coloque el siguiente "script" de arranque en /usr/local/bin/matlab:
#!/bin/sh /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@"
Escriba
chmod +x /usr/local/bin/matlab
.
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 |
10.5.5. Creación de un "script" para detener MATLAB®
Este "script" solucionará las dificultades que pueda tener para detener MATLAB® correctamente.
Crée un fichero llamado $MATLAB/toolbox/local/finish.m y ponga en él una sola línea con este texto:
! $MATLAB/bin/finish.sh
$MATLAB
debe escribirse tal cual.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 de
save
.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
El fichero tiene que ser ejecutable:
# chmod +x $MATLAB/bin/finish.sh
10.6. Instalación de Oracle®
10.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.
10.6.2. Instalación del entorno Linux
Debe tener instalados los ports emulators/linux_base y devel/linux_devtools. Si tiene dificultades con estos ports es posible que tenga que usar los paquetes o 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. La orden genérica para instalar paquetes con el port oficial de 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.
10.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 utilizar la versión de Linux para Oracle® FreeBSD, no lo que figura en la guía de instalación de Oracle®.
10.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áxima 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 describen 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 que 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
10.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
/compat/linux/bin/bash como shell por omisión.
10.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 |
---|---|
|
|
|
|
|
|
Le aconsejamos configurar todas las variables de entorno en .profile. Veamos un ejemplo completo:
ORACLE_BASE=/oracle; export ORACLE_BASE ORACLE_HOME=/oracle; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib export LD_LIBRARY_PATH ORACLE_SID=ORCL; export ORACLE_SID ORACLE_TERM=386x; export ORACLE_TERM CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip export CLASSPATH PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin export PATH
10.6.4. 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
. Hecho esto deberí poder instalar Oracle® sin ningún problema. Si no es así revise su distribución Oracle® y 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 ninguna escucha TCP, a las que también se les llama directamente «listeners». 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.
10.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. Se llama rthd.sh y está en el directorio orainst del árbol de fuentes.
10.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
10.7. Instalación de SAP® R/3®
Las instalaciones de sistemas SAP® en FreeBSD no reciben soporte técnico de SAP®. SAP® solamente lo ofrece si se usan plataformas certificadas.
10.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.
10.7.2. Software
Durante la instalación de SAP® se han utilizado los siguientes CD-ROM:
10.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).
10.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).
10.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®:
10.7.3.1. SAP® R/3® 4.6B, Oracle® 8.0.5
Número | Título |
---|---|
0171356 | SAP Software on Linux: Essential Comments |
0201147 | INST: 4.6C R/3 Inst. on UNIX - Oracle |
0373203 | Update / Migration Oracle 8.0.5 -→ 8.0.6/8.1.6 LINUX |
0072984 | Release of Digital UNIX 4.0B for Oracle |
0130581 | R3SETUP step DIPGNTAB terminates |
0144978 | Your system has not been installed correctly |
0162266 | Questions and tips for R3SETUP on Windows NT / W2K |
10.7.3.2. SAP® R/3® 4.6C, Oracle® 8.1.7
Número | Título |
---|---|
0015023 | Initializing table TCPDB (RSXP0004) (EBCDIC) |
0045619 | R/3 with several languages or typefaces |
0171356 | SAP Software on Linux: Essential Comments |
0195603 | RedHat 6.1 Enterprise version: Known problems |
0212876 | The new archiving tool SAPCAR |
0300900 | Linux: Released DELL Hardware |
0377187 | RedHat 6.2: important remarks |
0387074 | INST: R/3 4.6C SR2 Installation on UNIX |
0387077 | INST: R/3 4.6C SR2 Inst. on UNIX - Oracle |
0387078 | SAP Software on UNIX: OS Dependencies 4.6C SR2 |
10.7.4. Requisitos de hardware
El siguiente equipo es suficiente para la instalación de un sistema SAP® R/3®. Si pretende darle uso productivo necesitará hacer un estudio detallado de sus necesidades:
Componente | 4.6B | 4.6C |
---|---|---|
Procesador | Pentium® III 800MHz x 2 | Pentium® III 800MHz x 2 |
Memoria | 1GB ECC | 2GB ECC |
Espacio en disco | 50-60GB (IDES) | 50-60GB (IDES) |
Para su uso en 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 bases 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.
10.7.4.1. SAP® R/3® 4.6B, Oracle® 8.0.5
Este es el hardware que utilizamos al escribir este texto: placa base dual con 2 procesadores Pentium® III a 800 MHz, adaptador SCSI Adaptec® 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).
10.7.4.2. SAP® R/3® 4.6C, Oracle® 8.1.7
Para esta instalación se usó un Dell™ PowerEdge™ 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).
10.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 Cómo preparar su propio medio de instalación.
10.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. Solo cambiamos los nombres de dispositivo debido a que las instalaciones tuvieron lugar en hardware diferente (/dev/da y /dev/amr respectivamente. Si utiliza una AMI MegaRAID® verá 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 de BIOS.
Por favor, tenga en cuenta que el esquema de disco que utilizamos difiere ligeramente de las recomendaciones de SAP®, ya que SAP® sugiere montar los subdirectorios Oracle® (y algunos otros) por separado. Decidimos crearlos como subdirectorios reales para simplificar.
10.7.5.2. make world
y un nuevo kernel
Descargue las fuentes -STABLE más recientes. Ejecute make world
y compile su kernel personalizado. Recuerde incluir en él tanto los parámetros del kernel requeridos por SAP® R/3® como los que necesita Oracle®.
10.7.6. Instalación del entorno Linux
10.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
10.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 Instalación de Oracle®:
# cd /usr/ports/devel/linux_devtools
# make install distclean
El entorno de desarrollo Linux solo ha de instalarse si sigue el proceso para instalar SAP® R/3® 46B IDES. No es necesario si Oracle® DB no 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.
10.7.6.3. Instalación de 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, cuando lo reenlace 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 atañen a la versión para Linux de Oracle® y no son específicos de FreeBSD.
10.7.6.4. Sugerencias
Le recomendamos 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.
10.7.7. Creación del entorno SAP® R/3®
10.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® 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 se le pueden presentar 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'
10.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 solamente 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 omisión de Oracle® solo se usa el grupo dba
. Puede usar el grupo oper
como 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 | oper | Administrador Oracle® |
Al añadir dichos usuarios mediante adduser(8) tenga en cuenta que debe incluir las siguientes entradas (observe la shell y el directorio home) al crear el "administrador SAP®":
Name: sidadm Password: ****** Fullname: SAP Administrator SID Uid: 1000 Gid: 101 (sapsys) Class: Groups: sapsys dba HOME: /home/sidadm Shell: bash (/compat/linux/bin/bash)
y para el "Administrador Oracle®":
Name: orasid Password: ****** Fullname: Oracle Administrator SID Uid: 1002 Gid: 100 (dba) Class: Groups: dba HOME: /oracle/sid Shell: bash (/compat/linux/bin/bash)
Esto también incluye al grupo oper
en caso de que esté usando el grupo dba
y el grupo oper
.
10.7.7.3. Creación de directorios
Estos directorios se crean como sistemas de ficheros independientes. Esto depende totalmente de sus necesidades. Nosotros decidimos crearlos como directorios ya que todos están en el mismo RAID 5:
Primero vamos a configurar los propietarios y los derechos de algunos directorios (como root
):
# chmod 775 /oracle
# chmod 777 /sapmnt
# chown root:dba /oracle
# chown sidadm:sapsys /compat/linux/usr/sap
# chmod 775 /compat/linux/usr/sap
Luego vamos a crear directorios como el usuario orasid
. Estos serán todos subdirectorios de /oracle/SID:
# su - orasid
# cd /oracle/SID
# mkdir mirrlogA mirrlogB origlogA origlogB
# mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6
# mkdir saparch sapreorg
# exit
Para la instalación de Oracle® 8.1.7 tendrá que crear unos cuantos directorios más:
# su - orasid
# cd /oracle
# mkdir 805_32
# mkdir client stage
# mkdir client/80x_32
# mkdir stage/817_32
# cd /oracle/SID
# mkdir 817_32
El directorio client/80x_32 tiene que tener exactamente este nombre. No sustituya la x por un número ni por ninguna otra cosa. |
En el tercer paso creamos directorios como usuario sidadm
:
# su - sidadm
# cd /usr/sap
# mkdir SID
# mkdir trans
# exit
10.7.7.4. Entradas en /etc/services
SAP® R/3® requiere algunas entradas en /etc/services que es posible que no estén correctamente activadas durante la instalalación. Añada las siguientes entradas (necesita al menos las entradas correspondientes al número de instancia, en este caso, 00
. No hará ningún daño añadir todas las entradas de 00
hasta 99
para dp
, gw
, sp
y ms
). Si va a utilizar un SAProuter o necesita acceder a SAP® OSS, también necesitará 99
, ya que el puerto 3299 se usa generalmente para el proceso SAProuter en el sistema destino:
sapdp00 3200/tcp # SAP Dispatcher. 3200 + Instance-Number sapgw00 3300/tcp # SAP Gateway. 3300 + Instance-Number sapsp00 3400/tcp # 3400 + Instance-Number sapms00 3500/tcp # 3500 + Instance-Number sapmsSID 3600/tcp # SAP Message Server. 3600 + Instance-Number sapgw00s 4800/tcp # SAP Secure Gateway 4800 + Instance-Number
10.7.7.5. Locales necesarios
SAP® requiere al menos dos locales que no forman parte de la instalación por defecto de RedHat. SAP® dispone de los paquetes RPMs que pueda necesitar; puede descargalos desde su FTP, aunque tenga en cuenta que solo pueden acceder al mismo los clientes con acceso OSS). Consulte la nota 0171356, que contiene una lista de los RPM que necesitará.
También puede crear enlaces (por ejemplo desde de_DE y en_US ), pero no se lo recomendamos si pretende configurar un sistema de producción (no obstante, hemos de reconocer que a nosotros nos ha funcionado con el sistema IDES sin ningún problema). Necesitará al menos los siguientes locales:
de_DE.ISO-8859-1 en_US.ISO-8859-1
Haga los enlaces de esta manera:
# cd /compat/linux/usr/shared/locale
# ln -s de_DE de_DE.ISO-8859-1
# ln -s en_US en_US.ISO-8859-1
Si no están habrá algunos problemas durante la instalación. Si se ignoran (es decir, si configura el STATUS
de los pasos relacionados con esos locales a OK
en el fichero CENTRDB.R3S) será imposible entrar al sistema SAP® sin tener que recurrir a ciertas triquiñuelas.
10.7.7.6. Personalización del kernel
Los sistemas SAP® R/3® necesitan muchos recursos, por eso hemos añadido los siguientes parámetros al fichero de configuración de su kernel:
# Set these for memory pigs (SAP and Oracle): options MAXDSIZ="(1024*1024*1024)" options DFLDSIZ="(1024*1024*1024)" # System V options needed. options SYSVSHM #SYSV-style shared memory options SHMMAXPGS=262144 #max amount of shared mem. pages #options SHMMAXPGS=393216 #use this for the 46C inst.parameters options SHMMNI=256 #max number of shared memory ident if. options SHMSEG=100 #max shared mem.segs per process options SYSVMSG #SYSV-style message queues options MSGSEG=32767 #max num. of mes.segments in system options MSGSSZ=32 #size of msg-seg. MUST be power of 2 options MSGMNB=65535 #max char. per message queue options MSGTQL=2046 #max amount of msgs in system options SYSVSEM #SYSV-style semaphores options SEMMNU=256 #number of semaphore UNDO structures options SEMMNS=1024 #number of semaphores in system options SEMMNI=520 #number of semaphore identifiers options SEMUME=100 #number of UNDO keys
Puede consultar los valores mínimos en la documentación de SAP®. Como no hay detalles sobre Linux, consulte para mayor información la sección de HP-UX (32-bit). El sistema de instalación 4.6C SR2 tiene más memoria principal, asín que los segmentos compartidos pueden ser más extensos tanto para SAP® como para Oracle®; elija, por tanto, un número mayor de páginas de memoria compartida.
En la instalación por omisión de FreeBSD 4.5 en i386™, configure |
10.7.8. Instalación de SAP® R/3®
10.7.8.1. Preparación de los CDROM
Hay que montar y desmontar muchos CD-ROM durante la instalación. Si tiene suficientes unidades de CDROM, podría montarlos todos. Nosotros decidimos copiar el contenido de los CD-ROM a los directorios correspondientes:
/oracle/SID/sapreorg/nombre-cd
Donde nombre-cd era KERNEL, RDBMS, EXPORT1, EXPORT2, EXPORT3, EXPORT4, EXPORT5 y EXPORT6 para la instalación 4.6B/IDES, y KERNEL, RDBMS, DISK1, DISK2, DISK3, DISK4 y LANG para la instalación 4.6C SR2. Todos los nombres de fichero en los CDs montados deben estar en mayúsculas; si no es así use la opción -g
al montar. Utilice lo siguiente:
# mount_cd9660 -g /dev/cd0a /mnt
# cp -R /mnt/* /oracle/SID/sapreorg/nombre-cd
# umount /mnt
10.7.8.2. Ejecución del "script" de instalación
Primero tendrá que preparar un directorio install:
# cd /oracle/SID/sapreorg
# mkdir install
# cd install
Una vez arrancado el "script" de instalación copiará casi todos los ficheros relevantes en el directorio install:
# /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH
La instalación IDES (4.6B) incluye un sistema de demostración SAP® R/3® totalmente personalizado, así que hay seis CD EXPORT en lugar de solo tres. La plantilla de instalación CENTRDB.R3S está pensada para una instancia central estándar (R/3® y base de datos), no la instancia central IDES, así que hay que copiar el CENTRDB.R3S correspondiente del directorio EXPORT1. Si no lo hace R3SETUP
solo pedirá tres CD EXPORT.
La nueva versión de SAP® 4.6C SR2 incluye cuatro CDs EXPORT. El fichero de parámetros que controla los pasos de la instalación es CENTRAL.R3S. A diferencia de versiones versiones anteriores, no existen patrones de instalación por separado para una instancia central con o sin base de datos. SAP® utiliza un patrón separado para la instalación de la base de datos. Para reiniciar la instalación después es suficiente reiniciarla con el fichero original.
Durante y después de la instalación, SAP® necesita que hostname
devuelva sólamente el nombre del sistema, no el nombre cualificado de dominio. Configure el nombre del equipo de ese modo, o active un alias mediante alias hostname='hostname -s'
para orasid
y para sidadm
(y para root
al menos durante los pasos de la instalación realizados como root
). También puede configurar los ficheros .profile y .login de los usuarios que se crean durante la instalación SAP®.
10.7.8.3. Inicio de R3SETUP
4.6B
Asegúrese de que LD_LIBRARY_PATH
esté configurada correctamente:
# export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib
Inicie R3SETUP
como root
desde el directorio de instalación:
# cd /oracle/IDS/sapreorg/install
# ./R3SETUP -f CENTRDB.R3S
El "script" le preguntará algunas cosas; le mostramos aquí entre corchetes la respuesta por defecto, y después la respuesta que nosotros introdujimos:
Pregunta | Por omisión | Entrada |
---|---|---|
Enter SAP System ID | [C11] | IDSIntro |
Enter SAP Instance Number | [00] | Intro |
Enter SAPMOUNT Directory | [/sapmnt] | Intro |
Enter name of SAP central host | [troubadix.domain.de] | Intro |
Enter name of SAP db host | [troubadix] | Intro |
Select character set | [1] (WE8DEC) | Intro |
Enter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.6 | 1Intro | |
Extract Oracle Client archive | [1] (Yes, extract) | Intro |
Enter path to KERNEL CD | [/sapcd] | /oracle/IDS/sapreorg/KERNEL |
Enter path to RDBMS CD | [/sapcd] | /oracle/IDS/sapreorg/RDBMS |
Enter path to EXPORT1 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT1 |
Directory to copy EXPORT1 CD | [/oracle/IDS/sapreorg/CD4_DIR] | Intro |
Enter path to EXPORT2 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT2 |
Directory to copy EXPORT2 CD | [/oracle/IDS/sapreorg/CD5_DIR] | Intro |
Enter path to EXPORT3 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT3 |
Directory to copy EXPORT3 CD | [/oracle/IDS/sapreorg/CD6_DIR] | Intro |
Enter path to EXPORT4 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT4 |
Directory to copy EXPORT4 CD | [/oracle/IDS/sapreorg/CD7_DIR] | Intro |
Enter path to EXPORT5 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT5 |
Directory to copy EXPORT5 CD | [/oracle/IDS/sapreorg/CD8_DIR] | Intro |
Enter path to EXPORT6 CD | [/sapcd] | /oracle/IDS/sapreorg/EXPORT6 |
Directory to copy EXPORT6 CD | [/oracle/IDS/sapreorg/CD9_DIR] | Intro |
Enter amount of RAM for SAP + DB | 850Intro (en Megabytes) | |
Service Entry Message Server | [3600] | Intro |
Enter Group-ID of sapsys | [101] | Intro |
Enter Group-ID of oper | [102] | Intro |
Enter Group-ID of dba | [100] | Intro |
Enter User-ID of sidadm | [1000] | Intro |
Enter User-ID of orasid | [1002] | Intro |
Number of parallel procs | [2] | Intro |
Si no ha copiado los CD a su disco duro el instalador SAP® no podrá encontrar el CD que necesite (identifica los contenidos mediante fichero LABEL.ASC de cada CD) y por lo tanto le pedirá que introduzca y monte el CD, o que confirme o introduzca la ruta de montaje.
CENTRDB.R3S puede contener algún error. En nuestro caso, solicitó el CD EXPORT4 más de una vez, pero se le indicó la clave correcta (6_LOCATION, luego 7_LOCATION, etc), así que pudimos continuar introduciendo los valores correctos.
Aparte de algunos problemas que se detallan más adelante deberíamos ir llegando a la instalación del software de base de datos Oracle®.
10.7.8.4. Iniciar R3SETUP
4.6C SR2
Asegúrese de que LD_LIBRARY_PATH
esté correctamente configurada. Tenga en cuenta de que es un valor diferente de la instalación 4.6B con Oracle® 8.0.5:
# export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib
Arranque R3SETUP
como el usuario root
desde el directorio de instalación:
# cd /oracle/PRD/sapreorg/install
# ./R3SETUP -f CENTRAL.R3S
El "script" le preguntará algunas cosas. Le presentamos la respuesta por omisión entre corchetes y después la respuesta que dimos nosotros):
Pregunta | Por omisión | Entrada |
---|---|---|
Enter SAP System ID | [C11] | PRDIntro |
Enter SAP Instance Number | [00] | Intro |
Enter SAPMOUNT Directory | [/sapmnt] | Intro |
Enter name of SAP central host | [majestix] | Intro |
Enter Database System ID | [PRD] | PRDIntro |
Enter name of SAP db host | [majestix] | Intro |
Select character set | [1] (WE8DEC) | Intro |
Enter Oracle server version (2) Oracle 8.1.7 | 2Intro | |
Extract Oracle Client archive | [1] (Yes, extract) | Intro |
Enter path to KERNEL CD | [/sapcd] | /oracle/PRD/sapreorg/KERNEL |
Enter amount of RAM for SAP + DB | 2044 | 1800Intro (in Megabytes) |
Service Entry Message Server | [3600] | Intro |
Enter Group-ID of sapsys | [100] | Intro |
Enter Group-ID of oper | [101] | Intro |
Enter Group-ID of dba | [102] | Intro |
Enter User-ID of | [1002] | Intro |
Enter User-ID of | [1000] | Intro |
LDAP support | 3Intro (no support) | |
Installation step completed | [1] (continue) | Intro |
Choose installation service | [1] (DB inst,file) | Intro |
La creación de usuarios da un error durante la instalación en las fases OSUSERDBSID_IND_ORA (al crear al usuario orasid
) y OSUSERSIDADM_IND_ORA (al crear el usuario sidadm
).
Más adelante hablaremos de cierto problemas que aún tenemos pendientes, pero ha llegado el momento de instalar el software de base de datos Oracle®.
10.7.9. Instalación de Oracle® 8.0.5
Consulte los Readme de Oracle® y las notas de de SAP® sobre Linux y Oracle® DB por si hubiera algo que le pueda afectar. La mayoría de los problemas, por no decir todos, tienen su origen en bibliotecas incompatibles.
Para mayor información sobre la instalación de Oracle® diríjase al capítulo de instalación de Oracle®.
10.7.9.1. Instalación de Oracle® 8.0.5 con orainst
Si quiere instalar Oracle® 8.0.5 necesitará unas cuantas bibliotecas para el enlazado, ya que Oracle® 8.0.5 fué enlazado con una glibc antigua (la de RedHat 6.0), pero RedHat 6.1 usa una nueva glibc. Tendrá que instalar los siguientes paquetes para asegurarse que el reenlazado funcione:
compat-libs-5.2-2.i386.rpm
compat-glibc-5.2-2.0.7.2.i386.rpm
compat-egcs-5.2-1.0.3a.1.i386.rpm
compat-egcs-c++-5.2-1.0.3a.1.i386.rpm
compat-binutils-5.2-2.9.1.0.23.1.i386.rpm
Para más información consulte las notas correspondientes de SAP® o los Readme de Oracle®. Si no es posible (durante la instalación no tuvimos tiempo suficiente para ello), se podrían utilizar los binarios originales, o los binarios reenlazados de un sistema original RedHat.
Instale el paquete Tcl de RedHat para compilar el agente inteligente. Si no puede conseguir tcl-8.0.3-20.i386.rpm debería funcionar una versión más reciente, por ejemplo tcl-8.0.5-30.i386.rpm para RedHat.
Aparte del reenlazado, la instalación es muy sencilla:
# su - oraids
# export TERM=xterm
# export ORACLE_TERM=xterm
# export ORACLE_HOME=/oracle/IDS
# cd $ORACLE_HOME/orainst_sap
# ./orainst
Confirme todas las pantallas con Intro hasta que el software esté instalado; todas excepto en la que debe quitar la marca de instalación al visualizador de textos Oracle® en línea, ya que no existe para Linux. Oracle® intentará, gracias a esto, reenlazar con i386-glibc20-linux-gcc
en lugar de gcc
, egcs
o i386-redhat-linux-gcc
.
Debido a la falta de tiempo decidimos usar los binarios de una versión Oracle® 8.0.5 PreProduction, después de que nuestro primer intento de que funcionara la versión del CD RDBMS fallara y viendo que encontrar y utilizar los RPM correctos hubiera sido una pesadilla.
10.7.9.2. Instalación de Oracle® 8.0.5 "Pre-production Release" para Linux (Kernel 2.0.33)
La instalación es bastante fácil. Monte el CD e inicie el instalador. Le preguntará por la ubicación del directorio home de Oracle®, y copiará en él todos los binarios. (Nosotros no eliminamos los restos de una instalación RDBMS anterior que no terminó de llegó a terminar).
Tras esto la base de datos Oracle® puede arrancar.
10.7.10. Instalación desde el fichero comprimido de Linux Oracle® 8.1.7
Descomprima el fichero oracle81732.tgz (creado en el directorio de instalación en un sistema Linux) y descomprímalo en /oracle/SID/817_32/.
10.7.11. Continúe con la instalación SAP® R/3®
Revise las configuraciones del entorno de los usuarios idsamd
(sidadm) y oraids
(orasid). Ambos deben tener los ficheros .profile, .login y .cshrc con hostname
correctamente configurado. En caso que el nombre del sistema sea el nombre cualificado completo tendrá que cambiar hostname
a hostname -s
en los tres ficheros anteriormente citados.
10.7.11.1. Carga de la base de datos
Hecho esto puede rearrancar R3SETUP
o volver a arrancar la instalación (dependiendo si eligió salir o no). R3SETUP
crea las tablas y carga los datos (en 46B IDES, desde EXPORT1 a EXPORT6, en 46C desde DISK1 a DISK4) mediante R3load
.
Cuando se termina la carga de la base de datos (que puede llevar un par de horas) se le pedirán algunas contraseñas. En una instalación de prueba puede usar unas contraseñas de compromiso. (use una contraseña de verdad si le preocupa siquiera ligeramente la seguridad):
Pregunta | Entrada |
---|---|
Enter Password for sapr3 | sapIntro |
Confirum Password for sapr3 | sapIntro |
Enter Password for sys | change_on_installEnter |
Confirm Password for sys | change_on_installEnter |
Enter Password for system | managerIntro |
Confirm Password for system | managerIntro |
Aquí tuvimos problemas con dipgntab
en la instalación de 4.6B.
10.7.11.2. Las escuchas
Arranque las escuchas de Oracle® con el usuario orasid
de la siguiente manera:
% umask 0; lsnrctl start
Si no lo hace así verá un error ORA-12546, ya que los sockets no tendrán los permisos correctos. Consulte la nota 072984 de SAP®.
10.7.11.3. Actualización de tablas MNLS
Si tiene previsto importar idiomas que no sean Latin-1 en SAP® tiene que actualizar las tablas "Multi National Language Support". Tiene más información sobre esto en las notas de SAP® OSS 15023 y 45619. Si no es su caso puede saltarse esta parte de la instalación de SAP®.
Aunque no necesite soporte MNLS sigue siendo necesario que revise la tabla TCPDB y que la inicialice si no lo ha hecho ya. Consulte las notas 0015023 y 0045619 de SAP® para más información. |
10.7.12. Pasos para después de la instalación
10.7.12.1. Solicitar una licencia SAP® R/3®
Tiene que solicitar una licencia de SAP® R/3®. No tendrá más remedio, puesto que la licencia temporal que se usa durante la instalación tiene un límite de validez de cuatro semanas. Necesitará la llave hardware. Entre al sistema como usuario idsadm
y ejecute saplicense
:
# /sapmnt/IDS/exe/saplicense -get
Si ejecuta saplicense
sin parámetros verá una lista de opciones. Una vez que tenga la licencia en su poder la podrá instalar del siguiente modo:
# /sapmnt/IDS/exe/saplicense -install
Se le solicitará que introduzca los siguientes valores:
SAP SYSTEM ID = SID, 3 caracteres CUSTOMER KEY = llave hardware, 11 caracteres INSTALLATION NO = instalación, 10 caracteres EXPIRATION DATE = yyyymmdd, normalmente "99991231" LICENSE KEY = licencia, 24 caracteres
10.7.12.2. Crear usuarios
Cree un usuario dentro del cliente 000 (es necesario para algunas tareas que requieren hacerse dentro del cliente 000, pero con un usuario que no sea ni sap*
ni ddic
). Nosotros solemos elegir para este usuario el nombre de wartung
(o service
, ambos "servicio" en castellano). Los perfiles son sap_new
y sap_all
. Para mayor seguridad las contraseñas para usuarios por defecto dentro de todos los clientes deben cambiarse (incluidos los usuarios sap*
y ddic
).
10.7.12.3. Configurar sistema de transporte, perfil, modos de operación, etc.
Dentro del cliente 000 y con un usuario que no sea ddic
ni sap*
, haga al menos lo siguiente:
Tarea | Transacción |
---|---|
Configurar sistema de transporte, por ejemplo como Stand-Alone Transport Domain Entity | STMS |
Crear / editar perfil para el sistema | RZ10 |
Mantener modos de operación e instancias | RZ04 |
Todos estos (y muchos más) pasos para ejecutar después de la instalación se explican de forma detallada en las guías de instalación de SAP®.
10.7.12.4. Editar initsid.sap (initIDS.sap)
El fichero /oracle/IDS/dbs/initIDS.sap contiene la copia de seguridad del perfil de de SAP®. Aquí es donde debe definir el tamaño de la cinta a utilizar, tipo de conpresión, etc. Las siguientes modificaciones nos permitirían ejecutar sapdba
/ brbackup
:
compress = hardware archive_function = copy_delete_save cpio_flags = "-ov --format=newc --block-size=128 --quiet" cpio_in_flags = "-iuv --block-size=128 --quiet" tape_size = 38000M tape_address = /dev/nsa0 tape_address_rew = /dev/sa0
Explicación:
compress
: La cinta que usamos es una HP DLT1 que tiene compresión por hardware.
archive_function
: Define el comportamiento por omisión del almacenaje de los logs de Oracle®: los nuevos ficheros de log se guardan en cinta, los ficheros de log que ya han sido guardados se guardan de nuevo y luego se borran. Así se evitan muchos problemas si necesita recuperar la base de datos y una de las cintas está dañada.
cpio_flags
: por omisión se usa -B
, que asigna un tamaño de bloque de 5120 Bytes. HP recomienda un tamaño de bloque de 32 K como mínimo; usamos --block-size=128
para que sea de 64 K. Necesitaremos usar --format=newc
porque tenemos números de inodo mayores a 65535. La última opción (--quiet
) se necesita ya que brbackup
se queja en cuanto cpio
imprime los números de bloque guardados.
cpio_in_flags
: Parámetros necesarios para cargar datos desde la cinta. El formato es reconocido automáticamente.
tape_size
: La capacidad de almacenaje de la cinta. Por razones de seguridad (nosotros usamos compresión por hardware) el valor es ligeramente menor que el valor real.
tape_address
: El dispositivo (que no permite el rebobinado) que se usará con cpio
.
tape_address_rew
: El dispositivo (que permite el rebobinado) que se usará con cpio
.
10.7.12.5. Aspectos de la configuración una vez concluida la instalación
Los siguientes parámetros SAP® deben personalizarse una vez concluída la instalación (los ejemplos son para IDES 46B, 1 GB de memoria):
Nombre | Valor |
---|---|
ztta/roll_extension | 250000000 |
abap/heap_area_dia | 300000000 |
abap/heap_area_nondia | 400000000 |
em/initial_size_MB | 256 |
em/blocksize_kB | 1024 |
ipc/shm_psize_40 | 70000000 |
SAP® Note 0013026:
Nombre | Valor |
---|---|
ztta/dynpro_area | 2500000 |
SAP® Note 0157246:
Nombre | Valor |
---|---|
rdisp/ROLL_MAXFS | 16000 |
rdisp/PG_MAXFS | 30000 |
En un sistema con 1 GB de memoria y los parámetros arriba expuestos puede esperarse encontrar un consumo de memoria similar al siguiente: Mem: 547M Active, 305M Inact, 109M Wired, 40M Cache, 112M Buf, 3492K Free |
10.7.13. Problemas durante la instalación
10.7.13.1. Reiniciar R3SETUP
una vez arreglado el problema
R3SETUP
se detiene si encuentra un error. Si ha revisado los logs y ha corregido el error reinicie R3SETUP
; hágalo seleccionando la opción REPEAT en el paso donde R3SETUP
se detuvo.
Cuando quiera reiniciar R3SETUP
inícielo con el fichero R3S correspondiente:
# ./R3SETUP -f CENTRDB.R3S
en el caso de 4.6B, o con
# ./R3SETUP -f CENTRAL.R3S
en 4.6C; no importa si el error ocurrió con CENTRAL.R3S o con DATABASE.R3S.
En algunas etapas, No olvide iniciar también la escucha de Oracle® (como |
10.7.13.2. OSUSERSIDADM_IND_ORA durante R3SETUP
Si R3SETUP
se queja en este etapa edite la plantilla R3SETUP
que esté usando en ese momento (CENTRDB.R3S (en 4.6B) o CENTRAL.R3S o DATABASE.R3S (en 4.6C)). Ubique [OSUSERSIDADM_IND_ORA]
o busque la única entrada STATUS=ERROR
y edite los siguientes valores:
HOME=/home/sidadm (was empty) STATUS=OK (had status ERROR)
Hecho esto, reinicie R3SETUP
.
10.7.13.3. OSUSERDBSID_IND_ORA durante R3SETUP
Es posible que R3SETUP
se queje también en esta etapa. El error aquí es similar al de la fase OSUSERSIDADM_IND_ORA. Edite la plantilla R3SETUP
que esté usando (CENTRDB.R3S (en 4.6B) o CENTRAL.R3S o DATABASE.R3S (en 4.6C)). Ubique [OSUSERDBSID_IND_ORA]
o busque la única entrada STATUS=ERROR
y edite los siguientes valores en esa sección:
STATUS=OK
Hecho esto reinicie R3SETUP
.
10.7.13.4. oraview.vrf FILE NOT FOUND
durante la instalación de Oracle®
No ha dejado sin seleccionar la opción de instalar el visualizador de texto en línea de Oracle® antes de iniciar la instalación. Está seleccionado para ser instalado, aunque la aplicación no existe para Linux. Deje sin seleccionar el producto en el menú de instalación de Oracle® y reinicie la instalación.
10.7.13.5. TEXTENV_INVALID
durante R3SETUP
, o inicio de RFC o SAPgui
Si se encuentra con este error significa que falta el locale correcto. La nota 0171356 de SAP® contiene una lista de RPM que deben instalarse (p.ej. saplocales-1.0-3, saposcheck-1.0-1 para RedHat 6.1). En caso de que ignore todos los errores relacionados y configure los STATUS
correspondientes de ERROR
a OK
(en CENTRDB.R3S) cada vez que R3SETUP
se queje y simplemente reinicie R3SETUP
; el sistema SAP® no estará configurado correctamente y no podrá conectarse al sistema con SAPgui, aunque el sistema pueda arrancar. Si intenta conectar con el antiguo SAPgui de Linux recibirá los siguientes mensajes:
Sat May 5 14:23:14 2001 *** ERROR => no valid userarea given [trgmsgo. 0401] Sat May 5 14:23:22 2001 *** ERROR => ERROR NR 24 occured [trgmsgi. 0410] *** ERROR => Error when generating text environment. [trgmsgi. 0435] *** ERROR => function failed [trgmsgi. 0447] *** ERROR => no socket operation allowed [trxio.c 3363] Speicherzugriffsfehler
Este comportamiento se debe a que SAP® R/3® es incapaz de asignar correctamente un locale y tampoco puede configurarse a sí mismo correctamente (faltan entradas en algunas tablas de la base de datos). Añada las siguientes entradas al fichero DEFAULT.PFL y podrá conectarse a SAP® (vea la nota 0043288):
abap/set_etct_env_at_new_mode = 0 install/collate/active = 0 rscp/TCP0B = TCP0B
Reinicie el sistema SAP®. Puede conectar al sistema, aunque la configuración de idioma o de país puede que no funcione como se espera de ella. Una vez corregidas las configuraciones de país (y proporcionados los locales adecuados) puede eliminar estas entradas de DEFAULT.PFL y el sistema SAP® puede reiniciarse.
10.7.13.6. ORA-00001
Este error solo aparece con Oracle® 8.1.7 en FreeBSD 4.5. Se debe a que la base de datos Oracle® no puede inicializarse correctamente y se viene abajo, dejando semáforos y memoria compartida en el sistema. El siguiente intento de iniciar la base de datos produce el error ORA-00001.
Encuéntrelos con ipcs -a
y elimínelos con ipcrm
.
10.7.13.7. ORA-00445 (Brackground Process PMON Did Not Start)
Este error tuvo lugar con Oracle® 8.1.7. Aparece si se arranca la base de datos con el "script" startsap
(por ejemplo startsap_majestix_00
) con el usuario prdadm
.
Una solución (entre otras) es iniciar la base de datos con el usuario oraprd
en lugar de hacerlo con svrmgrl
:
% svrmgrl
SVRMGR> connect internal;
SVRMGR> startup;
SVRMGR> exit
10.7.13.8. ORA-12546 (Start Listener with Correct Permissions)
Inicie la escucha de Oracle® como usuario oraids
con la siguiente orden:
# umask 0; lsnrctl start
De no ser así puede encontrarse con el error ORA-12546, ya que los sockets no tendrán los permisos adecuados. Consulte la nota de SAP® 0072984.
10.7.13.9. ORA-27102 (Out of Memory)
Este error ocurre al tratar de usar valores mayores a 1 GB (1024x1024x1024) en MAXDSIZ
y DFLDSIZ
. Recibiremos, además, este otro error: Linux Error 12: Cannot allocate memory
.
10.7.13.10. [DIPGNTAB_IND_IND] during R3SETUP
Consulte la nota de SAP® 0130581 de (R3SETUP
step (DIPGNTAB
terminates). Por alguna razón durante la instalación específica IDES el proceso de instalación no usaba el nombre de sistema correcto SAP®"IDS" sino la cadena vacía ""
. Esto provocaba algunos errores menores en el acceso a directorios, ya que las rutas se generan dinámicamente en base a dicho SID (en este caso IDS). En lugar de ejecutar los accesos del siguiente modo :
/usr/sap/IDS/SYS/... /usr/sap/IDS/DVMGS00
se usaron las siguientes rutas:
/usr/sap//SYS/... /usr/sap/D00
Para continuar con la instalación creamos un enlace y un directorio adicional:
# pwd
/compat/linux/usr/sap
# ls -l
total 4
drwxr-xr-x 3 idsadm sapsys 512 May 5 11:20 D00
drwxr-x--x 5 idsadm sapsys 512 May 5 11:35 IDS
lrwxr-xr-x 1 root sapsys 7 May 5 11:35 SYS -> IDS/SYS
drwxrwxr-x 2 idsadm sapsys 512 May 5 13:00 tmp
drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans
Encontramos una descripción de este comportamiento en las notas de SAP®. (0029227 y 0008401). En la instalación de SAP® 4.6C no tuvimos estos problemas.
10.7.13.11. [RFCRSWBOINI_IND_IND] during R3SETUP
Durante la instalación de SAP® 4.6C nos encontramos con este error, cuyo origen está en un error que tuvo lugar anteriormente durante la propia instalación. Busque en sus ficheros de log y corrija el problema.
Si despues de buscar en los logs el error resulta ser el correcto (revise las notas de SAP®), puede poner el STATUS
del paso donde se produce el error de ERROR
a OK
(en el fichero CENTRDB.R3S) y reiniciar R3SETUP
. Una vez finalizada la instalación, tiene que ejecutar el informe RSWBOINS
de la transacción SE38. Consulte la nota SAP® 0162266 para más información sobre las fases RFCRSWBOINI
y RFCRADDBDIF
.
10.7.13.12. [RFCRADDBDIF_IND_IND] during R3SETUP
Aquí sucede lo mismo de antes, asegúrese, revisando los logs, de que la causa de este error no esté en algún problema previo.
Si en la nota de SAP® 0162266 está la solución ponga el STATUS
del paso donde se produce el error de ERROR
a OK
(en el fichero CENTRDB.R3S) y reinicie R3SETUP
. Una vez finalizada la instalación ejecute el informe RADDBDIF
desde la transacción SE38.
10.7.13.13. sigaction sig31: File size limit exceeded
Este error ocurrió durante el inicio del proceso SAP®disp+work. Si inicia SAP® con el "script" startsap
se inician los subprocesos que se separan y hacen el "trabajo sucio" de iniciar el resto de procesos de SAP®, pero es importante saber que el propio "script" no notará si algo ha ido mal.
Puede revisar si los procesos SAP® se iniciaron correctamente con ps ax | grep SID
, que le proporcionará una lista de todos los procesos de Oracle® y de SAP®. Si parece que algunos procesos no están, o si no puede conectarse al sistema SAP® revise los logs que encontrará en /usr/sap/SID/DVEBMGSnr/work/. Los ficheros que debe revisar son dev_ms y dev_disp.
La señal 31 aparece si la cantidad de memoria compartida asignada a Oracle® y SAP® supera la definida dentro del fichero de configuración del kernel y puede resolverse usando un valor mayor:
# larger value for 46C production systems: options SHMMAXPGS=393216 # smaller value sufficient for 46B: #options SHMMAXPGS=262144
10.7.13.14. Start of saposcol
Failed
Hay algunos problemas con el programa saposcol
(version 4.6D). El sistema SAP® utiliza saposcol
para recoger datos del rendimiento del sistema. Este programa no es necesario para usar el sistema SAP®, así que el problema puede considerarse como poco importante. La versión más antigua (4.6B) funciona, pero no recoge todos los datos (muchas llamadas devolverán un 0, por ejemplo el uso de CPU).
10.8. Temas avanzados
Si siente curiosidad por saber cómo funciona la compatibilidad con Linux esta es la sección que debe leer. La mayor parte de lo que sigue está basado casi en su totalidad en un mensaje enviado por Terry Lambert tlambert@primenet.com a la lista Lista de charla de FreeBSD (Message ID: <199906020108.SAA07001@usr09.primenet.com>
).
10.8.1. ?Cómo funciona?
FreeBSD dispone de una abstracció denominada "cargador de clase en ejecución". Esto no es más que un bloque de código incrustado en la llamada execve(2) del sistema.
Históricamente las plataformas UNIX® disponían de un único cargador de binarios, que en última instancia (fallback) recurría al cargador #!
para ejecutar cualesquiera intérpretes o scripts de la shell. Ese cargador único examinaba el número mágico (generalmente los 4 u 8 primeros bytes del fichero) para ver si era un binario reconocible por el sistema y, en tal caso, invocaba al cargador binario.
Si no era de tipo binario, la llamada execve(2) devolvía un error y la shell intentaba empezar a ejecutarlo como órdenes shell, tomando por defecto como punto de partida "la shell actual, sea cual sea".
Posteriormente se pensó en hacer una modificación de manera que sh(1) examinara los dos primeros caracteres, de modo que si eran :\n
se llamaba a la shell csh(1) en su lugar (parece ser que en SCO fueron los primeros en utilizar ese truco).
Lo que ocurre ahora es que FreeBSD dispone de una lista de cargadores, en lugar de uno solo. FreeBSD recorre esa lista de cargadores, con un cargador genérico #!
que sabe reconocer los intérpretes en base a los caracteres que siguen al siguiente espacio en blanco, con /bin/sh como último recurso.
Para dar soporte a la ABI ("Application Binary Interface") de Linux, FreeBSD interpreta el número mágico como un binario ELF ("Executable and Linking Format"): En este punto no hace distinción entre FreeBSD, Solaris™, Linux® o cualquier otro SO que tenga un tipo de imagen ELF.
El cargador ELF busca entonces una marca (brand) especial, una sección de comentarios en la imagen ELF que no está presente en los binarios ELF de SVR4/Solaris™.
Para que los binarios de Linux funcionen deben estar marcados con brandelf(1) como tipo Linux
:
# brandelf -t Linux file
Hecho esto el cargador ELF verá la marca Linux
en el fichero.
Cuando el cargador ELF ve la marca Linux
sustituye un puntero en la estructura proc
. Todas las llamadas del sistema se indexan a través de este puntero (en un sistema UNIX® tradicional sería el «array» de estructura sysent[]
que contiene las llamadas del sistema). Además, el proceso se marca con unos indicadores ("flags") para que el vector trampa del código de envío señales lo maneje de una forma determinada, así como otros arreglos (menores) que serán utilizados por el módulo Linux del kernel.
El vector de llamada del sistema Linux contiene, entre otras cosas, una lista de entradas sysent[]
cuyas direcciones residen en el módulo del kernel.
Cuando el binario Linux realiza una llamada al sistema, el código trampa extrae el puntero a la función de la llamada del sistema de la estructura proc
, y así obtiene los puntos de entrada a las llamadas del sistema Linux, no las de FreeBSD.
Además, el modo Linux cambia la raíz de las búsquedas de una forma dinámica. En efecto, esto es lo que hace la opción union
cuando se monta un sistema de ficheros (¡y que no es lo mismo que el sistema de ficheros unionfs
!). Primero se hace un intento de buscar el fichero en el directorio /compat/linux/ruta-original y solo después, si lo anterior falla, se repite la búsqueda en el directorio /ruta-original. Esto permite que se puedan ejecutar binarios que necesitan de otros binarios (por ejemplo las herramientas de programación ("toolchain") de Linux pueden ejecutarse en su totalidad bajo la ABI de Linux). Esto significa también que los binarios Linux pueden cargar y ejecutar binarios FreeBSD si los binarios Linux equivalentes no se hallan presentes y que se puede poner una orden uname(1) en el árbol de directorios /compat/linux para poder estar seguros de que los binarios Linux no puedan decir que no estaban ejecutándose en Linux.
En efecto, hay un kernel Linux en el kernel FreeBSD; las distintas funciones subyacentes que implementan todos los servicios proporcionados por el kernel son idénticas en ambas, las tablas de entradas de llamadas del sistema en FreeBSD y en Linux: operaciones del sistema de ficheros, operaciones de memoria virtual, envío de señales IPC System V, etc. La única diferencia es que los binarios FreeBSD reciben sus funciones de conexión ("glue") y los binarios Linux las suyas (la mayoría de los sistemas operativos más antiguos solo tienen sus propias funciones de conexión: direcciones de funciones en un "array" de estructura sysent[]
estática y global, en lugar de direcciones de funciones que se extraen a partir de un puntero inicializado dinámicamente en la estructura proc
del proceso que hace la llamada).
?Cuál es entonces la ABI nativa de FreeBSD? No importa. Básicamente, la única diferencia es (ahora mismo; esto podría cambiar y probablemente lo hará en una release futura) que las funciones de conexión de FreeBSD están enlazadas estáticamente en el kernel mientras que las de Linux pueden estarlo también estáticamente o se puede acceder a ellas por medio de un módulo del kernel.
Bien, pero ?de verdad es esto una emulación? No. Es una implementación ABI, no una emulación. No hay un emulador involucrado (ni un simulador, para adelantarnos a la siguiente pregunta).
Entonces ?por qué a veces se le llama "emulación Linux"? ¡Para hacer más difícil el vender FreeBSD! En serio, se debe a que la primera implementación se hizo en un momento en que realmente no había ninguna palabra distinta a esa para describir lo que se estaba haciendo; decir que FreeBSD ejecutaba binarios Linux no era cierto si no se compilaba el código o se cargaba un módulo; hacía falta una forma de describir todo esto y acabamos usando "emulador Linux".
Parte III: Administración del sistema.
Los restantes capítulos de este libro cubren todos los aspectos de administración de un sistema FreeBSD. Cada capítulo comienza describiendo lo que será aprendido una vez finalizada la lectura, explicando también los conocimientos mínimos necesarios para una comprensión satisfactoria del texto.
Estos capítulos están diseñados para leerse cuando se necesita la información. No es necesario leerlos en un determinado orden ni es necesario leerlos todos antes de comenzar a usar FreeBSD.
Capítulo 12. El proceso de arranque en FreeBSD
12.1. Sinopsis
Al proceso de inicio del sistema y carga del sistema operativo se le conoce como "mecanismo de arranque" (bootstrap), o simplemente "arranque" (booting). El proceso de arranque de FreeBSD provee de gran flexibilidad al configurar lo que ocurre cuando se inicia el sistema, permitiendole seleccionar de diferentes sistemas operativos instalados en el mismo ordenador, o inclusive diferentes versiones del mismo sistema oprativo o kernels instalados.
Este capítulo detalla las opciones de configuración que puede manejar y como personalizar el proceso de arranque de FreeBSD. Esto incluye todo lo que sucede hasta que el kernel de FreeBSD comienza con la comprobación de dispositivos y se inicializa init(8). En caso de que usted desconozca cuando ocurre todo esto, esto sucede cuando el color del texto que aparece al iniciar el sistema, cambia de blanco a gris.
Una vez que concluya con la lectura de este capítulo, usted sabrá:
Cuales son los componentes del mecanismo de arranque de FreeBSD, y como es que interactuan entre sí.
Las opciones que puede manejar con los componentes del mecanismo de arranque de FreeBSD, para controlar el proceso de inicio del sistema.
Sólo x86 El presente capítulo describe únicamente el proceso de inicio, para sistemas FreeBSD que corren en plataformas Intel x86. |
12.2. El problema que representa arrancar el sistema
El encender una computadora e iniciar el sistema operativo, trae consigo un dilema interesante. Por definición, la computadora no sabe hacer nada, hasta que el sistema operativo ha sido cargado. Esto incluye la ejecución de programas desde el disco duro. Así que este es el dilema; si la computadora no sabe hacer nada hasta que se cargue el sistema operativo, y el sistema operativo es un conjunto de programas que residen en el disco duro, ?Cómo es que arranca el sistema operativo?
Este problema se asemeja a un problema del libro Las Aventuras del Barón Munchausen. Donde un personaje ha caido parcialmente en un hoyo, y ha podido salir al tomarse de las cintas de sus botas y jalarse hacia fuera. En los años mozos de la computación, el término utilizado para hablar sobre el proceso de carga del sistema operativo era mecanismo de arranque (bootstrap), que por efectos de simplificación ahora conocemos como "arranque" (booting).
En equipos con arquitectura x86, el Sistema Básico de Entrada/Salida (BIOS) es el responsable de cargar el sistema operativo. Para hacer esto, el BIOS busca en el disco duro el Registro Maestro de Arranque (RMA) (N de T. Conocido como MBR-Master Boot Record), el cual debe localizarse en un lugar específico del disco. El BIOS cuenta con suficiente información, para cargar y ejecutar el RMA, y asumir que el RMA puede encargarse del resto de las tareas necesarias en la carga del sistema operativo.
Si usted sólo cuenta con un sistema operativo instalado en su disco duro, el RMA estándar será suficiente. Este RMA buscará la primer partición del disco que pueda arrancar, y posteriormente ejecutará el código restante de dicha partición, para efecto de completar la carga del sistema operativo.
Si usted cuenta con varios sistemas operativos instalados en su disco, entonces puede hacer uso de un RMA diferente, uno que despliegue una lista de los diferentes sistemas operativos, y le permita escoger cual de ellos desea que se cargue. FreeBSD cuenta con un RMA de este tipo que puede ser instalado, así como otros distribuidores de sistemas operativos cuentan con RMAs alternativos.
En el caso de FreeBSD, el resto del mecanismo de arranque, está dividido en tres etapas. La primer etapa es ejecutada por al RMA, que sabe lo suficiente como para poner a la computadora en un estado específico y ejecutar la segunda etapa. La segunda etapa puede hacer un poco más que esto, antes de ejecutar la tercer etapa. La tercer etapa finaliza el trabajo de carga del sistema operativo. El trabajo es dividido en tres etapas, debido a las limitantes que tiene una PC, en cuanto al tamaño de los programas a ejecutar, durante las etapas uno y dos. El encadenar estas tareas, le permiten a FreeBSD contar con un arrancador más flexible.
Posteriormente el kernel es inicializado y comienza con la comprobación de dispositivos, y prepararlos para su uso. Una vez que el proceso de arranque del kernel ha finalizado, el kernel transfiere el control al proceso de usuario init(8), quien se asegura de que los discos se encuentren en buen estado para su uso. Posteriormente init(8) inicia la configuración fuente a nivel de usuario, que monta los sistemas de ficheros, configura las tarjetas de red para que pueden comunicarse en la red, y comunmente inicia todos los procesos que normalmente son ejecutados en un sistema FreeBSD al arrancar el mismo.
12.3. El RMA y las etapas de arranque uno, dos y tres
12.3.1. RMA, /boot/boot0
El RMA de FreeBSD, se localiza en /boot/boot0. Este es una copia del RMA, ya que el RMA real debe localizarse en una parte especial del disco duro, fuera de la área de FreeBSD.
El fichero boot0 es muy simple, dado que el programa en el sólo puede ser de 512 bytes. Si usted ha instalado el RMA de FreeBSD y ha instalado varios sistemas operativos en sus discos duros, entonces al momento de arrancar el sistema, visualizará una pantalla similar a la siguiente.
F1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1
Default: F2
Es sabido que otros sistemas, en particular Windows 95, sobreescriben el RMA con el suyo. Si esto le sucede, o bien desea reemplazar su RMA actual con el RMA de FreeBSD, entonces puede utilizar las siguientes órdenes.
# fdisk -B -b /boot/boot0 dispositivo
Donde dispositivo es aquel, desde el cual usted pretende arrancar el sistema, tal como ad0 para el disco conectado al primer IDE, ad2 para el disco maestro conectado al IDE secundario, da0 para el primer disco SCSI, y así sucesivamente.
Por otro lado, si usted es un usuario de Linux, y prefiere que la aplicación LILO controle el proceso de arranque, puede editar el fichero /etc/lilo.conf para incluir a FreeBSD, o bien seleccionar la opción Leave The Master Boot Record Untouched
durante el proceso de instalación. Si ha instalado el gestor de arranque de FreeBSD, puede arrancar Linux y modificar el fichero de configuración de LILO, /etc/lilo.conf, añadiendo la siguiente opción:
other=/dev/hdXY table=/dev/hdb loader=/boot/chain.b label=FreeBSD
lo que permitirá el arranque de FreeBSD y Linux, por medio de LILO. En nuestro ejemplo hemos utilizado XY para especificar el disco utilizado y su partición. Si usted utiliza un sistema SCSI, deberá cambiar /dev/hdXY por algo similar a /dev/sdXY, que nuevamente utiliza la sintáxis XY. La opción loader=/boot/chain.b
puede omitirse si usted cuenta con ambos sistemas operativos en el mismo disco. Una vez que esto se ha completado, puede ejecutar /sbin/lilo -v
para que se actualicen los cambios en el sistema, lo cual deberá verificarse con los mensajes que aparezcan en pantalla.
N de T: La opción mencionada como; |
12.3.2. Etapa uno, /boot/boot1, y etapa dos, /boot/boot2
Conceptualmente las estapas uno y dos, son parte del mismo programa, en la misma área del disco. Por cuestiones de espacio se han dividido en dos, pero estas siempre se instalaran de manera conjunta.
Estas son localizadas en el sector de arranque, de la partición de arranque, que es donde boot0, o cualquier otro programa del espera encontrar el programa que dará continuación al proceso de arranque. Los ficheros localizados bajo el directorio /boot son copias de los ficheros reales, que se localizan fuera del sistema de ficheros de FreeBSD.
El fichero boot1 es muy simple, en virtud de que sólo puede tener un tamaño de 512 bytes, y conocer simplemente del etiquetador de discos de FreeBSD (disklabel), el cual almacena la información de las particiones, para efecto de localizar y ejecutar boot2.
El fichero boot2 es un poco más sofisticado, y comprende lo suficiente del sistema de ficheros de FreeBSD como para localizar ficheros en el, y puede proveer una interfaz simple, para seleccionar el kernel o cargador que deberá ejecutarse.
En virtud de que el cargador (loader) es mucho más sofisticado, y provee una configuración de arranque más sencilla de utilizar, boot2 la ejecuta normalmente, una vez que ha terminado de solicitar el arranque del kernel directamente.
>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:
Si alguna vez requiere reemplazar los ficheros boot1 y boot2 instalados, utilice disklabel(8).
# disklabel -B partición
Donde partición es el disco y partición del cual pretende arrancar el sistema, tal como ad0s1 para la primer partición del disco Mastro-Primario.
Modo peligrosamente dedicado Si sólo utiliza el nombre del disco, tal como ad0, al usar disklabel(8) creará un disco peligrosamente dedicado, sin partición alguna. Seguramente esto no es lo que desea hacer, así que asegurese dos veces antes de presionar la tecla Return cuando utilice disklabel(8). |
12.3.3. Etapa tres, /boot/loader (cargador de arranque)
El cargador es la etapa final de las tres etapas del mecanismo de arranque, y esta localizado en el sistema de ficheros, normalmente como /boot/loader.
El cargador pretende ser un metodo amistoso de configuración, utilizando una serie de órdenes integradas de fácil uso, respaldado por un intérprete más poderoso, con una serie de órdenes de mayor complejidad.
12.3.3.1. Flujo del programa cargador
Durante la inicialización del sistema, el cargador hará una comprobación en busca de una consola y discos, y sabra de que disco se encuentra arrancando. Establecerá las variables necesarias, y posteriormente es iniciado el intérprete donde se pueden introducir órdenes desde un "script" o de manera interactiva.
Posteriormente el cargador leerá el fichero /boot/loader.rc, que por default lee la información del fichero /boot/defaults/loader.conf que a su vez, establece las variables correspondientes y verifica en el fichero /boot/loader.conf los cambios locales que se hayan hecho, para establecer valores de las variables modificadas. Una vez llevado a cabo esto, loader.rc actua sobre estas variables, cargando cualquier módulo y kernel seleccionado.
Finalmente, y por default, el cargador hace una pausa contando 10 segundos y en espera de que al presionar una tecla se interrumpa el proceso, de no ser así, procederá a arrancar el kernel. En el caso de que al hacer esta pausa, se haya presionado una tecla (diferente de Return), el proceso será interrumpido y se nos mostrará un "prompt", que entiende el conjunto de órdenes de fácil-uso, y donde el usuario puede ajustar ciertas variables, cargar y descargar todos los módulos, y también arrancar o reiniciar el sistema.
12.3.3.2. Órdenes internas del cargador
A continuación se presentan las órdenes más comunes del cargador. Para ver una descripción detallada de los mismos, por favor consulte la página de manual de loader(8)
- autoboot segundos
Procede a iniciar el arranque del sistema, si es que no es interrumpido el periodo dado, en segundos. Despliega una cuenta regresiva, y el tiempo dado es de 10 segundos.
- boot [-opciones] [nombre_del_kernel]
Procede a iniciar el kernel de manera inmediata, con las opciones dadas, si es que fuera el caso y el kernel especificado, si es que se especifica alguno.
- boot-conf
Rehace la configuración automática de modulos en función a las variables definidas, como sucede al arrancar. Esta opción sólo tiene sentido utilizarla, si en primer lugar hemos usado
unload
, y hemos modificado alguna variable, siendo lo más común elkernel
.- help [tema]
Muestra la ayuda de un tema específico, que lee del fichero /boot/loader.help. Si el tema que se indica es
index
, entonces se mostrará una lista de todos los temas disponibles.- include fichero …
Procesa el fichero que se ha especificado. El fichero se lee e interpreta línea por línea. Cualquier error detendrá inmediatamente a include.
- load [-t tipo] fichero
Carga el kernel, modulo del kernel, o el fichero del tipo dado, en base al fichero especificado. Cualquier argumento que se añada, será pasado al fichero.
- ls [-l] [ruta]
Despliega un listado de todos los ficheros que se localizan en la ruta especificada, o en el directorio raíz, si es que no se le especifica ruta alguna. Si se utiliza la opción
-l
, también se mostrara el tamaño de los ficheros.- lsdev [-v]
Nos muestra una lista de todos los dispositivos desde los cuales puede ser posible cargar modulos. Si se incluye la opción
-v
, el listado que se obtiene cuenta con más detalle.- lsmod [-v]
Despliega los módulos cargados. Si se utiliza la opción
-v
, se mostraran más detalles.- more fichero
Despliega el contenido del fichero especificado, haciendo una pausa a cada numero determinado de
LINEAS
mostradas.- reboot
Reinicia el sistema de forma inmediata.
- set variable
Especifica los valores de las variables de entorno del cargador.
- unload
Remueve todos los módulos cargados.
12.3.3.3. Ejemplos de uso del cargador
He aqui unos ejemplos prácticos sobre el uso correcto del cargador.
Para arrancar simplemente su kernel usual, pero en modo mono-usuario, deberá hacer lo siguiente:
boot -s
Para descargar su kernel usual y sus módulos correspondientes, y posteriormente cargar su kernel anterior (o cualquier otro):
unload load kernel.old
Puede utilizar kernel.GENERIC para referirse al kernel generico actual que viene con la instalación, o bien puede utilizar kernel.old para hacer referencia al kernel anterior (por ejemplo, cuando ha actualizado su sistema o ha recompilado su propio kernel).
Utilice lo siguiente para cargar sus módulos actuales con otro kernel:
unload set kernel="kernel.old" boot-conf
Para cargar un escrito de configuración (script que de forma automática hará todo lo que normalmente hace usted de forma manual al momento de ejecutarse el configurador de arranque):
load -t escrito_de_configuración /boot/kernel.conf
12.4. Interacción con el kernel durante el arranque
Una vez que el kernel ha sido iniciado, ya sea por el cargador (que es lo común) o bien por boot2 (sobrepasando el cargador), examinará las opciones de arranque, en busca de cambios, y ajustar su comportamiento en caso de ser necesario.
12.4.1. Opciones de arranque del kernel
He aqui las opciones de arranque más comunes:
-a
durante la inicialización del kernel, pregunta por los dispositivos a utilizar, para montar el sistema de ficheros raíz.
-C
arranque desde una unidad de CDROM.
-c
ejecuta UserConfig, la utilidad de configuración de arranque del kernel.
-s
arranca el sistem en modo mono-usuario.
-v
imprime mensajes informativos durante el arranque del kernel
Existen otras opciones de arranque, por favor vea la página de ayuda boot(8) para más información al respecto. |
12.6. Init: inicialización del proceso de control
Ya que el kernel ha finalizado de arrancar, pasará el control a un proceso de usuario llamado init
, el cual se localiza en /sbin/init, o bien en la ruta especificada por la variable de entorno init_path
del cargador.
12.6.1. Secuencia automática de reinicio
La secuencia automática de reinicio se asegura de que los sistemas de ficheros disponibles en el sistema sean consistentes. Si no lo son, y el programa fsck
no puede arreglar estas inconsistencias, init
envia el sistema a modo monousuario, de tal forma que el administrador pueda ingresar en él y arreglar los problemas directamente.
12.6.2. Modo monousuario
A este modo se puede llegar por medio de la secuencia automática de reinicio, o por medio de la opción -s
en el arranque de usuario o al establecer la variable boot_single
en el cargador.
También desde el modo multi-usuario se puede acceder, al utilizar shutdown
sin la opción de reinicio (-r
) o la de apagado (-h
) del sistema.
Si la consola del sistema esta configurada de modo inseguro
en el fichero /etc/ttys, entonces el sistema solicitará la contraseña del superusuario
(root), antes de ingresar al sistema en modo mono-usuario.
# name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off insecure
Una consola |
12.6.3. Modo multiusuario
En el caso de que init
encuentre en buen estado al sistema de ficheros, o una vez que el usuario ha terminado del modo mono-usuario, el sistema entrará al modo multi-usuario, en donde comienzan los ficheros de configuración-fuente del sistema.
12.6.3.1. Configuración-Fuente(rc)
La configuración fuente lee la configuración por default del fichero /etc/defaults/rc.conf, y detalles específicos del sistema desde el fichero /etc/rc.conf, y posteriormente procede a montar los sistemas de ficheros del sistema, descritos en /etc/fstab, iniciar servicios de red, así como varios demonios del sistema, para finalmente ejecutar los escritos (scripts) de configuración instalados por paquetes, localmente.
La página de ayuda rc(8) es una buena referencia para conocer más de este tipo de ficheros, así como examinar los mismos ficheros.
Capítulo 13. Usuarios y administración básica de cuentas
13.1. Sinopsis
FreeBSD permite que varios usuarios usen el mismo ordenador. Obviamente, sólo uno de estos usuarios puede sentarse frente al monitor y al teclado en un momento dado , pero cualquier número de usuarios puede entrar por la red para hacer su trabajo. Para usar el sistema cada usuario ha de tener una cuenta.
Después de leer este capítulo sabrás:
Cuáles son las diferencias entre las distintas cuentas de usuario en sistemas FreeBSD.
Cómo añadir cuentas.
Cómo eliminar cuentas.
Cómo cambiar detalles de las cuentas, como el nombre completo del usuario, o su shell preferida.
Cómo establecer límites por cuenta, para controlar los recursos como memoria o tiempo de CPU que las cuentas y grupos de cuentas pueden emplear.
Cómo usar grupos para facilitar la administración de cuentas.
Antes de leer este capítulo deberías:
Entender los conceptos básicos de Unix y FreeBSD (Conceptos básicos de Unix).
13.2. Introducción
Todos los accesos al sistema se consiguen vía cuentas, y todos los procesos son ejecutados por usuarios, por ello la administración de usuarios y cuentas es de una gran importancia en sistemas FreeBSD.
Cada cuenta en un sistema FreeBSD tiene cierta información asociada que la identifica.
- Nombre de usuario
El nombre de usuario como se le entraría al prompt
login:
. Los nombres de usuario han de ser únicos en la computadora; no puede haber dos usuarios con el mismo nombre de usuario. Existen algunas reglas para la creación de nombres de usuario válidos documentadas en passwd(5); típicamente se usarían nombres de usuario de a lo sumo ocho caracteres, todos ellos en minúscula.- Contraseña
Cada cuenta tiene una contraseña asociada. La contraseña puede ser vacía, en cuyo caso no se requerirá ninguna para acceder al sistema. Esto normalmente es una mala idea; cada cuenta debería tener una constraseña no vacía.
- Identificador de usuario (UID)
El UID es un numero entre 0 y 65536 que sirve para identificar unívocamente al usuario en el sistema. Internamente, FreeBSD usa el UID para identificar usuarios y cualquier comando de FreeBSD que permita especificar un nombre de usuario convertirá éste al UID antes de trabajar con él. Esto significa que puedes tener varias cuentas con nombres de usuario distintos pero con el mismo UID. En lo que a FreeBSD respecta, tales cuentas son un solo usuario. Es improbable que alguna vez tengas que hacer algo así.
- Identificador de grupo (GID)
El GID es un número entre 0 y 65536 que sirve para identificar unívocamente el grupo principal al cual pertenece un usuario. Los grupos son un mecanismo para controlar el acceso a recursos del sistema en base al GID, en vez del UID. Esto puede reducir significativamente el tamaño de algunos ficheros de configuración. Un usuario puede pertencer a más de un grupo.
- Clase de login
Las clases de login son una extensión al mecanismo de grupos que ofrecen una mayor flexibilidad a la hora de adaptar el sistema a distintos usuarios.
- Tiempo de cambio de contraseña
Por defecto FreeBSD no obliga a los usuarios a cambiar su contraseña periódicamente. Se puede requerir esto a determinados usuarios, haciendo que algunos o todos deban cambiar sus contraseñas al cabo de cierto periodo de tiempo.
- Tiempo de expiración de cuentas
Por defecto las cuentas en FreeBSD no expiran. Si estás creando cuentas que sabes que van a tener un tiempo limitado de vida, por ejemplo, las cuentas de los estudiantes de una escuela, entonces puedes especificar cuándo expiran. Una vez vencido su tiempo de expiración una cuenta no puede ser usada para entrar en el sistema, si bien sus directorios y archivos serán conservados.
- Nombre completo de usuario
El nombre de usuario identifica unívocamente a una cuenta para FreeBSD, pero no refleja su verdadero nombre necesariamente. Esta información puede ser asociada a la cuenta.
- Directorio home
El directorio home es el camino completo de un directorio en el sistema en el que el usuario se hallará cuando entre. Una convención usual consiste en poner todos los directorios home en /home/nombre_de_usuario o en /usr/home/nombre_de_usuario. Los usuarios guardarían sus archivos personales en sus directorios home, y en cualquier directorio que creasen allí.
- Shell de usuario
La shell provee el entorno por defecto mediante el cual los usuarios interactúan con el sistema. Existen varios tipos de shell y los usuarios experimentados tendrán sus propias preferencias, que pueden expresarse en la configuración de su cuenta.
Existen principalmente tres tipos de cuentas; la cuenta de superusuario, las cuentas de usuarios del sistema, y las de usuarios. La cuenta de superusuario, normalmente llamada root
, se usa para administrar el sistema sin limitaciones en los privilegios. Los usuarios del sistema utilizan servicios del mismo. Finalmente, las cuentas de usuarios son usadas por gente real, aquellos que entran, leen correo, etcétera.
13.3. La cuenta superusuario
La cuenta superusuario, normalmente llamada root
, viene preconfigurada para facilitar la administración del sistema, y no debería ser utilizada para tareas cotidianas como enviar o recibir correo, exploración general del sistema, o programación.
Esto es así porque el superusuario, a diferencia de las cuentas de usuario, puede operar sin límites, y un mal uso de la cuenta de superusuario puede conllevar desastres espectaculares. Las cuentas de usuario no pueden destruir el sistema por un error, por ello es generalmente mejor utilizar cuentas de usuario normales cuando sea posible, a no ser que especialmente necesites privilegios extra.
Deberías comprobar siempre un par o tres de veces los comandos que ejecutas como superusuario, ya que un espacio de más o un carácter omitido pueden significar una pérdida de datos irreparable.
Así pues, lo primero que deberías hacer después de leer este capítulo es crear una cuenta sin privilegios de uso general para ti si aún no la tienes. Esto aplica tanto si trabajas en una máquina con varios usuarios como si trabajas en una máquina con un solo usuario. Más adelante, en este mismo capítulo, explicamos cómo crear cuentas adicionales, y cómo cambiar de usuario normal a superusuario.
13.4. Cuentas de sistema
Los usuarios de sistema son aquéllos que corren servicios como DNS, correo, servidores web, etc. Esto es así por seguridad; si todos los servicios corrieran como superusuario podrían actuar sin ninguna restricción.
Algunos ejemplos de usuarios de sistema son daemon
, operator
, bind
(para el DNS), y news
. Con frecuencia, los administradores de sistemas crean el usuario httpd
para que ejecute los servidores web que instalan.
nobody
es el usuario de sistema sin privelegios genérico. No obstante, es importante tener en cuenta que cuantos más servicios use nobody
, más ficheros y procesos estarán asociados con dicho usuario, y en consecuencia más privilegiado será.
13.5. Cuentas de usuario
Las cuentas de usuario constituyen la principal vía de acceso al sistema para la gente real. Estas cuentas aíslan al usuario del entorno, impidiendo que pueda dañar al sistema o a otros usuarios, y permitiendo a su vez que pueda personalizar su entorno sin que esto afecte a otros.
Cada persona que acceda a tu sistema debería tener una sola cuenta de usuario. Esto te permite averiguar quién está haciendo qué, evita que interfieran las configuraciones de distintos usuarios, que unos puedan leer el correo de otros, etcétera.
Cada usuario puede configurar su entorno para acomodarlo al uso que hace del sistema, utilizando shells, editores, atajos de teclado e idioma alternativos.
13.6. Modificación de cuentas
Existe una variedad de comandos disponible en el entorno Unix para modificar cuentas de usuario. Los comandos más comunes se hallan resumidos a continuación, seguidos de ejemplos más detallados de su uso.
Comando | Resumen |
---|---|
| La aplicación de línea de comandos recomendada para añadir nuevos usuarios. |
| La aplicación de línea de comandos recomendada para eliminar usuarios. |
| Una herramienta flexible para modificar la base de datos de usuarios. |
| Una herramienta de línea de comandos simple para cambiar contraseñas de usuario. |
| Una herramienta potente y flexible para modificar cualquier aspecto de las cuentas de usuario. |
13.6.1. adduser
adduser
es un programa simple para añadir usuarios. Crea entradas en los archivos de sistema passwd y group. También crea un directorio home para el nuevo usuario, copia allí ficheros de configuración por defecto ("dotfiles") de /usr/shared/skel, y opcionalmente puede enviar al usuario un mensaje de bienvenida.
Para crear el fichero inicial de configuración usa adduser -s -config_create
. A continuación configuramos valores por defecto para adduser y creamos nuestra primera cuenta de usuario, dado que utilizar root
para uso normal del sistema es pernicioso y peligroso.
# adduser -v
Use option ``-silent'' if you don't want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
Enter your default shell: csh date no sh tcsh zsh [sh]: zsh
Your default shell is: zsh -> /usr/local/bin/zsh
Enter your default HOME partition: [/home]:
Copy dotfiles from: /usr/shared/skel no [/usr/shared/skel]:
Send message from file: /etc/adduser.message no
[/etc/adduser.message]: no
Do not send message
Use passwords (y/n) [y]: y
Write your changes to /etc/adduser.conf? (y/n) [n]: y
Ok, let's go.
Don't worry about mistakes. I will give you the chance later to correct any input.
Enter username [a-z0-9_-]: jru
Enter full name []: J. Random User
Enter shell csh date no sh tcsh zsh [zsh]:
Enter home directory (full path) [/home/jru]:
Uid [1001]:
Enter login class: default []:
Login group jru [jru]:
Login group is ``jru''. Invite jru into other groups: guest no
[no]: wheel
Enter password []:
Enter password again []:
Name: jru
Password: ****
Fullname: J. Random User
Uid: 1001
Gid: 1001 (jru)
Class:
Groups: jru wheel
HOME: /home/jru
Shell: /usr/local/bin/zsh
OK? (y/n) [y]: y
Added user ``jru''
Copy files from /usr/shared/skel to /home/jru
Add another user? (y/n) [y]: n
Goodbye!
#
En resumen, cambiamos la shell por defecto a zsh (una shell alternativa incluida en la colección de ports), y deshabilitamos el envío de un mensaje de bienvenida a nuevos usuarios. Luego grabamos la configuración, creamos una cuenta para jru
, y nos aseguramos de que jru
esté en el grupo wheel
(de modo que puede asumir el papel de root
vía el comando su
).
La contraseña que escribes no se muestra, tampoco se muestran asteriscos. Asegúrate de no entrar dos veces una contraseña equivocada. |
Usa |
13.6.2. rmuser
Puedes usar rmuser
para eliminar completamente del sistema a un usuario. rmuser
efectúa los siguientes pasos:
Elimina la entrada del usuario en crontab(1) (si tiene alguna).
Elimina las tareas at(1) pertenecientes al usuario.
Mata todos los procesos pertenecientes al usuario.
Elimina al usuario del fichero local de contraseñas del sistema.
Borra el directorio home del usuario (si le pertenece).
Elimina los archivos de correo entrante del usuario de /var/mail.
Borra todos los ficheros del usuario de áreas en las que se guardan archivos temporales como /tmp.
Finalmente, elimina el nombre de usuario de todos aquellos grupos a los que pertenece en /etc/group.
Si un grupo queda vacío y el nombre del grupo coincide con el del usuario, el grupo es eliminado; esto complementa la creación de grupos por usuario de adduser(8).
rmuser
no puede ser usado para eliminar cuentas de superusuario, dado que algo así es casi siempre señal de masiva destrucción.
Por defecto existe un modo interactivo que intenta asegurar que uno sabe lo que hace.
# rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/tcsh
Is this the entry you wish to remove? y
Remove user's home directory (/home/jru)? y
Updating password file, updating databases, done.
Updating group file: trusted (removing group jru -- personal group is empty) done.
Removing user's incoming mail file /var/mail/jru: done.
Removing files belonging to jru from /tmp: done.
Removing files belonging to jru from /var/tmp: done.
Removing files belonging to jru from /var/tmp/vi.recover: done.
#
13.6.3. chpass
chpass
cambia información de los usuarios en base de datos como contraseñas, shells y datos personales.
Los administradores del sistema, como el superusuario, son los únicos que pueden modificar la información y contraseñas de otros usuarios con chpass
.
Cuando no le pasamos más opciones, salvo un nombre de usuario opcional, chpass
muestra un editor con información de usuario. Cuando se sale del editor la base de datos de usuarios se actualiza con la nueva información.
#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1000
Gid [# or name]: 1000
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
Un usuario normal puede modificar un pequeño subconjunto de esta información, y sólo para sí mismo.
#Changing user database information for jru.
Shell: /usr/local/bin/tcsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
|
13.6.4. passwd
passwd
es el comando que se usa normalmente para cambiar tu propia contraseña como usuario o, como superusuario, la de otros usuarios.
Los usuarios han de introducir su contraseña original antes de cambiarla para prevenir que gente no autorizada pueda hacerlo cuando no se encuentren en la consola. |
% passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database...
passwd: done
# passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database...
passwd: done
Como ocurre con |
13.6.5. pw
pw(8) es una utilidad de línea de comandos para crear, eliminar, modificar, y mostrar usuarios y grupos. Hace de interfaz a los archivos del sistema de usuarios y grupos. pw
tiene un conjunto de opciones de línea de comandos bastante potente que lo hacen adecuado para su uso en scripts de shell, aunque los nuevos usuarios puede que lo encuentren algo más complicado que el resto de comandos que presentamos aquí.
13.7. Limitar a los usuarios
En un sistema multiusuario es probable que no confíes en que el sistema no vaya a ser dañado por ningún usuario.
Las cuotas de disco permiten al administrador decirle al sistema de ficheros qué cantidad de espacio de disco puede utilizar un usuario; además, ofrecen una manera rápida de comprobar el uso de disco de un usuario sin tener que calcularlo cada vez. Las cuotas se estudian en el capítulo de quotas.
El resto de límites de recursos incluyen cantidad de CPU, memoria, y otros recursos que el usuario puede utilizar.
Las clases de login se definen en /etc/login.conf. La semántica precisa está fuera del alcance de esta sección, pero se describe con detalle en la página de manual login.conf(5). Es suficiente decir que cada usuario es asignado a una clase de login (default
por defecto), y que cada clase de login tiene un conjunto de capacidades asociado. Una capacidad de login es un par nombre=valor
, donde nombre es un identificador conocido y valor una cadena de texto arbitraria que se procesa en función del nombre. Establecer clases y capacidades de login es bastante sencillo y también se describe en login.conf(5).
Los límites de recursos son diferentes de las capacidades de login en dos sentidos. En primer lugar, para cada límite existe un límite blando (actual) y uno duro. Un límite blando puede ser ajustado por el usuario o una aplicación, pero no puede ser más alto que el límite duro. Éste último puede ser disminuido por el usuario pero nunca aumentado. En segundo lugar, la mayoría de los límites de recursos aplican a un usuario concreto por proceso, no globalmente. Nótese, no obstante, que estas diferencias vienen impuestas por cómo se tratan los límites específicamente, no por la implementación del marco de capacidades de login (es decir, en realidad no constituyen un caso especial de capacidades de login).
Sin más, a continuación veremos los límites de recursos más comúnmente usados (el resto, junto con el resto de capacidades de login, puede encontrarse en login.conf(5)).
coredumpsize
El tamaño de un fichero core generado por un programa está, por razones obvias, subordinado a otros límites sobre uso de disco (p. ej.,
filesize
, o cuotas de disco). Aun y así, se usa frecuentemente como un método menos severo de controlar consumo de espacio de disco, dado que los usuarios no generan ficheros core por ellos mismos, y a menudo no los borran, activar este límite puede evitar que agoten el espacio de disco de que disponen si algún programa grande (p. ej., emacs) deja de funcionar abruptamente.cputime
Ésta es la máxima cantidad de tiempo de CPU que los procesos de un usuario pueden consumir.
Éste es un límite sobre el tiempo de CPU consumido, no el porcentaje de uso de CPU que se muestra en algunos campos de top(1) y ps(1). Un límite de ese tipo no es posible a día de hoy, y sería bastante inútil: un compilador -probablemente una tarea legítima- puede usar prácticamente el 100% de la CPU durante algún tiempo con facilidad.
filesize
Éste es el tamaño máximo que puede llegar a tener un fichero del usuario. A diferencia de las cuotas de disco, este límite se especifica para ficheros individuales, no para el conjunto de todos los archivos que posee.
maxproc
Éste es el máximo número de procesos que un usuario puede ejecutar a la vez, incluidos tanto los procesos en primer plano como los procesos en segundo plano. Por razones obvias, este límite no puede ser mayor que el límite de sistema especificado por
kern.maxproc sysctl
. Obsérvese también que si asignamos un valor demasiado bajo a este límite podemos mermar la productividad de un usuario: frecuentemente es útil entrar múltiples veces en el sistema o ejecutar pipelines. Algunas tareas, como compilar largos programas, lanzan múltiples procesos (p. ej., make(1), cc(1), y demás preprocesadores intermedios).memorylocked
Ésta es la máxima cantidad de memoria que un proceso puede haber solicitado tener bloqueada en memoria principal (p. ej., ver mlock(2)). Algunos programas críticos para el sistema, como amd(8), se quedan bloqueados en la memoria principal de manera que en caso de ser llevados a swap no contribuyan a la basura del sistema si hay algún problema.
memoryuse
Ésta es la mayor cantidad de memoria que un proceso puede consumir en todo momento. Incluye tanto memoria normal como uso de swap. No se trata de un límite para restringir el consumo de memoria en general, pero es un buen comienzo.
openfiles
Ésta es la máxima cantidad de archivos que un proceso puede tener abiertos. En FreeBSD, los archivos se usan tambien para representar sockets y canales IPC; así, cuida de no poner este límite demasiado bajo. A nivel de sistema, el límite para esto lo define
kern.maxfiles sysctl
.sbsize
Éste es el límite de cantidad de memoria de red, y por lo tanto mbufs, que un usuario puede consumir. Se originó como respuesta a un viejo ataque DoS que creaba muchos sockets, pero puede ser usado en general para limitar las comunicaciones por red.
stacksize
Éste es el tamaño máximo que puede alcanzar la pila de un proceso. Por sí solo no es suficiente para limitar la cantidad de memoria que puede usar un programa; en consecuencia, debería ser usado junto con otros límites.
Hay unas pocas cosas más a recordar cuando establecemos límites de recursos. A continuación vienen algunas recomendaciones, sugerencias, y comentarios varios.
Los procesos que se ponen en marcha cuando arranca el sistema por /etc/rc están asignados a la clase de login
daemon
.Aunque el /etc/login.conf que viene con el sistema tiene valores razonables para la mayoría de los límites, sólo tú, el administrador, puedes saber lo que es apropiado para tu sistema.
A los usuarios del X Window System (X11) probablemente se les debería conceder más recursos que al resto. X11 de por sí consume muchos recursos, pero además contribuye a que los usuarios ejecuten más programas simultáneamente.
Recuerda que hay muchos límites que aplican a procesos individuales, no al usuario en general. Por ejemplo, poner
openfiles
a 50 significa que cada uno de los procesos que ejecute un usuario puede abrir a lo máximo 50 ficheros. Así, la cantidad de ficheros que un usuario puede abrir es el valor deopenfiles
multiplicado por el valor demaxproc
. Esto también aplica al uso de memoria.
Para más información acerca de límites de recursos y clases y capacidades de login en general, consulta las páginas de manual relevantes: cap.mkdb(1), getrlimit(2), login.conf(5).
13.8. Personalizar a los usuarios
La localización es un entorno establecido por el administrador o el usuario para dar soporte a distintos lenguajes, juegos de caracteres, estándares sobre fechas y horas, etcétera. Éste tema se trata en el capítulo Localización.
13.9. Grupos
Un grupo es simplemente una lista de usuarios. Los grupos se identifican por su nombre de grupo y gid (ID de grupo). En FreeBSD (y en la mayoría de sistemas Unix), los dos factores que tiene en cuenta el núcleo para decidir si un proceso puede hacer algo es su ID de usuario y la lista de grupos a los que pertenece. A diferencia del ID de usuario, un proceso tiene una lista de grupos asociados. En ocasiones encontrarás menciones al "ID de grupo" de un usuario o de un proceso; la mayoría de las veces referirán simplemente al primero de los grupos de la lista.
La correspondencia entre nombres e IDs de grupo está en /etc/group. Se trata de un fichero de texto plano con cuatro campos separados por el signo dos puntos. El primer campo es el nombre de grupo, el segundo la contraseña encriptada, el tercero el ID de grupo, y el cuarto la lista de miembros separados por comas. Puede ser editado a mano sin peligro (¡suponiendo, por supuesto, que no se cometan errores de sintaxis!). Para una descripción más completa de la sintaxis, ver la página de manual group(5).
Si no quieres editar /etc/group manualmente, puedes usar el comando pw(8) para añadir y modificar grupos. Por ejemplo, para añadir un grupo llamado teamtwo
y luego confirmar que existe puedes usar:
# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:
El número 1100
en el ejemplo anterior es el ID de grupo del grupo teamtwo
. Ahora mismo teamtwo
no tiene miembros, y es por tanto bastante inútil. Cambiemos eso invitando a jru
a formar parte del grupo teamtwo
.
# pw groupmod teamtwo -M jru
# pw groupshow teamtwo
teamtwo:*:1100:jru
El argumento de la opción -M
es una lista con los usuarios que son miembros del grupo separados por comas. Sabemos de secciones anteriores que el fichero de contraseñas también contiene un grupo para cada usuario. El usuario es automáticamente añadido a la lista de grupos por el sistema; no constará como miembro cuando usemos el comando groupshow
con pw(8), pero sí cuando la información se consulte con id(1) u otra herramienta similar. En otras palabras, pw(8) sólo manipula el fichero /etc/group; nunca tratará de leer datos adicionales de /etc/passwd.
% id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)
Como puedes ver, jru
es miembro de los grupos jru
y teamtwo
.
Capítulo 14. Seguridad
14.1. Sinopsis
Este capítulo contiene una introducción básica a los conceptos de seguridad del sistema, unas cuantas normas básicas de uso y algunos avanzados del tema en FreeBSD. Muchos de los temas expuestos se aplican a la seguridad del sistema y de Internet en general. Internet ya no es aquél lugar "amistoso" en el que todo el mundo se comportaba como un buen ciudadano. Si quiere proteger sus datos, su propiedad intelectual, su tiempo y muchas más cosas de manos malintencionadas debe hacer que su sistema sea seguro.
FreeBSD proporciona un variado arsenal de utilidades y mecanismos para asegurar la integridad y la seguridad de su sistema y red.
Después de leer este capítulo:
conocerá conceptos básicos de la seguridad relacionados con FreeBSD.
Tendrá información sobre los diversos mecanismos de cifrado disponibles en FreeBSD, entre los cuales están DES y MD5.
Sabrá cómo configurar la autentificación de contraseñas de un solo uso.
Sabrá cómo configurar TCP Wrappers y usarlos con
inetd
.Sabrá cómo instalar KerberosIV en versiones de FreeBSD anteriores a 5.0.
Sabrá cómo instalar Kerberos5 en versiones de FreeBSD posteriores a 5.0.
Podrá configurar IPsec y crear una VPN entre máquinas FreeBSD/Windows®.
Sabrá cómo configurar y utilizar OpenSSH, la implementación de SSH en FreeBSD.
Sabrá en qué consisten las ACL del sistema de ficheros y cómo utilizarlas.
Sabrá cómo usar Portaudit, con la que podrá auditar el software que instale desde la desde la colección de ports.
Sabrá cómo sacar partido de los avisos de seguridad que publica FreeBSD.
Podrá hacerse una idea clara de en qué consiste la contabilidad de procesos y de cómo activarla en FreeBSD.
Antes de leer este capítulo:
Comprender conceptos básicos de FreeBSD e Internet.
En otras secciones de este manual se cubren aspectos adicionales sobre seguridad. Por ejemplo, MAC (controles de acceso obligatorio) se explica en el Mandatory Access Control y los cortafuegos en el Cortafuegos.
14.2. Introducción
La seguridad es un trabajo que que comienza y termina en el administrador de sistema. Aunque que los sistemas multiusuario BSD UNIX® posean una seguridad inherente, el trabajo de construir y mantener mecanismos de seguridad adicionales para que los usuarios sean aún más "honestos" es probablemente una de las mayores tareas de la administración de sistemas. Los sistemas son tan seguros como uno los haga, y no hay que olvidar que los problemas de seguridad compiten con la comodidad a la que tendemos los humanos. Los sistemas UNIX® son capaces de ejecutar una gran cantidad de procesos simultáneamente, muchos de los cuales son servidores, lo que significa que las entidades externas pueden conectarse y "hablar" con ellos. Del mismo modo que las minicomputadoras de ayer se convirtieron en los sistemas de escritorio de hoy en día, la seguridad se va convirtiendo en un problemas más y más acuciante.
La seguridad bien entendida se implementa en capas, a la manera de una "cebolla". Básicamente lo que se hace es crear la mayor cantidad posible de capas de seguridad, para más tarde monitorizar el sistema en busca de intrusos. No es conveniente exagerar la seguridad, ya que interferiría con la detección, y la detección es uno de los aspectos más importantes de cualquier mecanismo de seguridad. Por ejemplo, no tiene mucho sentido activar la bandera schg
(consulte chflags(1)) en cada binario del sistema, ya que aunque protegería en cierto modo los binarios, haría que cualquier cambio que pudiera realizar un atacante una vez dentro del sistema fuera más difícil de detectar o incluso hacerlo del todo imposible.
La seguridad del sistema depende también de estar preparados para distintos tipos de ataque, incluyendo intentos de "tirar" la máquina o dejarla en un estado inutilizable, pero que no impliquen intentos de comprometer el usuario root
Los problemas de seguridad pueden dividirse en diferentes categorías:
Ataques de denegación de servicio (DoS).
Comprometer cuentas de usuarios.
Comprometer root a través de servidores accesibles.
Comprometer root desde cuentas de usuario.
Creación de puertas traseras ("Backdoors").
Un ataque de denegación de servicio es una acción que priva al sistema de los recursos requeridos para su funcionamiento normal. Generalmente, los ataques DoS son mecanismos de fuerza bruta que intentan "tumbar" el sistema o hacerlo inutilizable sobrecargando la capacidad de sus servidores o de la pila de red. Algunos ataques DoS intentan aprovechar errores en la pila de red para "tumbar" el sistema con un solo paquete. Estos últimos únicamente pueden solucionarse aplicando al kernel una actualización que subsane el error. Los ataques a servidores muchas veces pueden solucionarse configurando las opciones apropiadas para limitar la carga del sistema en condiciones adversas. Los ataques de fuerza bruta a redes son más complicados. Los ataques con paquetes enmascarados, por ejemplo, son casi imposibles de detener, a menos que desconecte el sistema de Internet. Puede ser que no "tiren" el sistema, pero saturarán la conexión a Internet.
Comprometer una cuenta de usuario es mucho más común que un ataque DoS. Muchos administradores de sistemas todavía ejecutan servidores estándar telnetd, rlogind, rshd y ftpd en sus máquinas. Estos servidores, por defecto no operan a través de conexiones cifradas. El resultado es que se si se tiene una base de usuarios de tamaño medio, tarde o temprando la contraseña de uno (o más) de sus usuarios será descubierta durante sus accesos al sistema desde ubicaciones remotas.(que es, por otra parte, la forma más común y más cómoda de acceder a un sistema). El administrador de sistemas atento analizará sus logs de acceso remoto en busca de direcciones origen spspechosas, incluso entre los accesos al sistema.
Se debe asumir siempre que, una vez que el atacante tiene acceso a una cuenta de usuario, el atacante puede comprometer la cuenta root
. En realidad en un sistema bien mantenido y asegurado el acceso a una cuenta de usuario no necesariamente da al atacante acceso a root
. Esta precisión es importante porque sin acceso a root
el atacante difícilmente podrá esconder sus huellas; podrá, como mucho, hacer poco más que sembrar el caos en los ficheros del usuario o "tirar" la máquina. Comprometer cuentas de usuario es muy común porque los usuarios tienden a no tomar las precauciones que toma el administrador.
Los administradores de sistemas deben tener presente que existen muchas formas potenciales de comprometer la cuenta root
de una máquina. El atacante puede conocer la contraseña de root
, el atacante puede encontrar un error en un servidor que se ejecuta como root y ser capaz de comprometer root
a través de una conexión de red a ese servidor; puede ser que el atacante sepa de la existencia de un error en un programa suid-root que le permita comprometer root
una vez dentro de una cuenta de usuario. Si un atacante encuentra la manera de comprometer la cuenta root
de una máquina puede que no necesite instalar una puerta trasera. Muchos de los agujeros root
encontrados y cerrados hasta la fecha implican una cantidad considerable de trabajo para el atacante limpiando todo después del ataque, así que la mayoría de los atacantes instalan puertas traseras. Una puerta trasera facilita al atacante una forma sencilla de recuperar el acceso de root
al sistema, pero también proporciona al administrador de sistemas inteligente una forma de detectar la intrusión. Si hace imposible a un atacante la instalación de una puerta trasera puede estar actuando en detrimento de su seguridad, porque no cerrará el agujero que el atacante encontró para accder al sistema la primera vez que lo hizo.
Las medidas de seguridad se implementan en un modelo multicapa (tipo "cebolla"), que puede categorizarse del siguiente modo:
Asegurar
root
y cuentas administrativas.Asegurar los servidores que se ejecuten como
root
los binarios suid/sgid.Asegurar cuentas de usuario.
Asegurar el fichero de contraseñas.
Asegurar el núcleo del kernel, los dispositivos en bruto y el sistema de ficheros.
Detección rápida de cambios hechos al sistema.
Paranoia.
La siguiente sección de este capítulo tratará los puntos de arriba con mayor profundidad.
14.3. Asegurar FreeBSD
Orden vs. protocolo En este capítulo usaremos el texto en negrita para referirnos a una orden o aplicación, y una fuente en |
Las siguientes secciones cubren los métodos a seguir para asegurar su sistema FreeBSD que se mencionados en la sección anterior de este capítulo.
14.3.1. Asegurar la cuenta root
y las cuentas administrativas
En primer lugar, no se moleste en asegurar las cuentas administrativas (o "staff") si no ha asegurado la cuenta root
. La mayoría de los sistemas tienen una contraseña asignada para la cuenta root
. Lo primero que se hace es asumir que la contraseña está siempre amenazada. Esto no significa que deba eliminar la contraseña. La contraseña es casi siempre necesaria para el acceso por consola a la máquina; significa que no se debe permitir el uso de la contraseña fuera de la consola o, mejor aún, mediante su(1). Por ejemplo, asegúrese de que sus ptys aparezcan como inseguras en el fichero /etc/ttys, con lo que hará que los accesos como root
vía telnet
o rlogin
no sean posibles. Si utiliza otros tipos de login como sshd asegúrese de que los accesos al sistema como root
estén también deshabilitados. Para ello edite su /etc/ssh/sshd_config y asegúrese de que PermitRootLogin
esté puesto a NO
. Estudie cada método de acceso: hay servicios como FTP que frecuentemente son origen de grietas en la estructura del sistema. El acceso directo como usuario root
sólamente debe permitirse a través de la consola.
Es evidente que, como administrador del sistema, debe usted tener la posibilidad de acceder a root
, así que tendrá que abrir algunos agujeros, pero debe asegurarse de que estos agujeros necesiten contraseñas adicionales para verificar su correcto uso. Puede hacer que root
sea accesible añadiendo cuentas administrativas al grupo wheel
(en /etc/group). El personal que administra los sistemas que aparezcan en el grupo en el grupo wheel
pueden hacer su
a root
. Nunca debe de proporcionar al personal administrativo el acceso nativo a wheel
poniéndolos en el grupo wheel
en su entrada de contraseña. Las cuentas administrativas deben colocarse en un grupo staff
, y agregarse después al grupo wheel
en /etc/group. Sólo aquellos administradores que realmente necesiten acceder a root
deben pertenecer al grupo wheel
. También es posible, mediante un método de autentificación como Kerberos, usar el fichero .k5login en la cuenta root
para permitir un ksu(1) a root
sin tener que colocar a nadie en el grupo wheel
. Puede ser una mejor solución, ya que el mecanismo wheel
aún permite a un atacante comprometer root
si el intruso ha conseguido el fichero de contraseñas y puede comprometer una cuenta de administración. Recurrir al mecanismo wheel
es mejor que no tener nada, pero no es necesariamente la opción más segura.
Una manera indirecta de asegurar las cuentas de staff y el acceso a root
es utilizar un método de acceso alternativo: es lo que se conoce como "estrellar" las contraseñas cifradas de las cuentas administrativas. Use vipw(8) para reemplazar cada contraseña cifrada por un sólo caracter asterisco (“*”). Esto actualizará /etc/master.passwd y la base de datos de usuario/contraseña y deshabilitará los accesos al sistema validados mediante contraseñas.
Veamos una cuenta administrativa típica:
foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh
y cómo debería quedar:
foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh
Este cambio evitará que se efectúen logins normales, ya que la contraseña cifrada nunca se corresponderá con “*”. Hecho esto, el personal de administración tendrá que usar otro mecanismo de validación como kerberos(1) o ssh(1) que use un par de llave pública/privada. Si decide usar algo como Kerberos tendrá que asegurar la máquina que ejecuta los servidores Kerberos y su estación de trabajo. Si usa un par de llave pública/privada con ssh, debe asegurar la máquina desde desde la que se hace el login (normalmente nuestra estación de trabajo). Puede añadir una capa adicional de protección al par de llaves protegiéndolas con contraseña al crearlo con ssh-keygen(1). El "estrellado" de las contraseñas administrativas también garantiza que dicho personal sólo pueda entrar a través de métodos de acceso que haya usted configurado. Así obligará al personal administrativo a usar conexiones seguras, cifradas, en todas sus sesiones, lo que cierra un importante agujero de seguridad al que recurren muchos intrusos: usar un sniffer (olfateador) de red desde una máquina que le permita hacer tal cosa.
Los mecanismos de seguridad más indirectos también asumen que está validando su identidad desde un servidor más restrictivo un servidor menos restrictivo. Por ejemplo, si su máquina principal ejecuta toda clase de servidores su estación de trabajo no debe ejecutar ninguno. Para que su estación de trabajo sea razonablemente segura debe ejecutar los mínimos servidores posibles, si es posible ninguno, y debe usar un salvapantallas protegido por contraseña. Es evidente que un atancante con acceso físico al sistema puede romper cualquier barrera de seguridad que se disponga. Es un problema a tener en cuenta, pero la mayoría de las intrusiones tienen lugar de forma remota, a través de la red, por parte de gente que no tiene acceso físico a su estación de trabajo ni a sus servidores.
Usar Kerberos le ofrece también el poder de deshabilitar o cambiar la contraseña para una cuenta administrativa en un lugar, y que tenga un efecto inmediato en todas las máquinas en las cuales ese administrador pueda tener una cuenta. Si una de esas cuentas se ve comprometida la posibilidad para cambiar instantáneamente su contraseña en todas las máquinas no debe ser desestimada. Con contraseñas distintas, el cambio de una contraseña en N máquinas puede ser un problema. También puede imponer restricciones de re-contraseñas con Kerberos: no sólo se puede hacer un ticket de Kerberos que expire después de un tiempo, sino que el sistema Kerberos puede requerir al usuario que escoja una nueva contraseña después de cierto tiempo (digamos una vez al mes).
14.3.2. Asegurar servidores que se ejecutan como root
y binarios SUID/SGID
Un administrador de sistemas prudente sólo ejecutará los servidores que necesita, ni uno más ni uno menos. Dese cuenta de que los servidores ajenos son los más propensos a contener errores. Por ejemplo, ejecutando una versión desfasada de imapd o popper es como dar una entrada universal de root
al mundo entero. Nunca ejecute un servidor que no haya revisado cuidadosamente. Muchos servidores no necesitan ejecutarse como root
. Por ejemplo, los dæmons ntalk, comsat y finger pueden ejecutarse en una caja de arena (sandbox) especial de usuario. Una caja de arena no es perfecta, a menos que pase por muchos problemas, pero la aproximación de cebolla a la seguridad prevalece aún y todo: Si alguien es capaz de penetrar a través de un servidor ejecutándose en una caja de arena, todavía tendrá que salir de la caja de arena. Cuantas más capas tenga que romper el atacante menor será la posibilidad de éxito que tenga. Se han encontrado vías de entrada a root
en virtualmente todos los servidores que se haya ejecutado como root
, incluyendo servidores básicos del sistema. Si está tiene una máquina a través de la cual la gente sólo entra por sshd, y nunca entra por telnetd, rshd, o rlogind apague esos servicios.
FreeBSD ejecuta por defecto ntalkd, comsat y finger en una caja de arena. Otro programa que puede ser candidato para ejecutarse en una caja de arena es named(8). /etc/defaults/rc.conf contiene las directrices necesarias (con comentarios) para usar named en una caja de arena. Dependiendo de si está instalando un nuevo sistema o actualizando un sistema ya existente, las cuentas especiales de usuario que usan estas cajas de arena puede que no estén instaladas. El administrador de sistemas prudente debe investigar e implementar cajas de arena para servidores siempre que sea posible.
Existen numerosos servidores que no se suelen ejecutar en cajas de arena: sendmail, imapd, ftpd, y otros. Existen alternativas para algunos de ellos, pero instalarlas puede requerir más trabajo del que tal vez esté dispuesto a realizar (el factor comodidad ataca de nuevo). Tal vez tenga que ejecutar estos servidores como root
y depender de otros mecanismos para detectar intrusiones que puedan tener lugar a través de ellos.
Los otros grandes agujeros potenciales de root
que encontramos en un sistema son los binarios suid-root y sgid. La mayoría de estos binarios, como rlogin, están en /bin, /sbin, /usr/bin o /usr/sbin. Aunque no hay nada absolutamente seguro los binarios suid y sgid del sistema por defecto pueden considerarse razonablemente seguros. Aún así, de vez en cuando aparecen agujeros root
en estos binarios. En 1998 se encontró un agujero root
en Xlib
, que hacía a xterm (que suele ser suid) vulnerable. Es mejor prevenir que curar, y el administrador de sistemas prudente restringirá los binarios suid, que sólo el personal de administración debe ejecutar, a un grupo especial al que sólo dicho personal pueda acceder, y deshacerse de cualquier binario suid (chmod 000
) que no se use. Un servidor sin pantalla generalmente no necesita un binario xterm. Los binarios sgid pueden ser igual de peligrosos. Si un intruso logra comprometer un binario sgid-kmem, el intruso podría leer /dev/kmem y llegar a leer el fichero cifrado de contraseñas, poniendo en compromiso potencial cualquier cuenta con contraseña. Por otra parte, un intruso que comprometa el grupo kmem
puede monitorizar las pulsaciones de teclado que se envien a través de ptys, incluyendo las ptys a las que acceden usuarios que emplean métodos seguros. Un intruso que comprometa el grupo tty
puede escribir en la pty de casi cualquier usuario. Si un usuario ejecuta un programa de terminal o un emulador capaz de simular un teclado, el intruso podría generar un flujo de datos que provoque que la terminal del usuario muestre una orden en pantalla, orden que el usuario ejecutará.
14.3.3. Asegurar las cuentas de usuario
Las cuentas de usuario suelen ser las más difíciles de asegurar. Aunque puede imponer restricciones de acceso draconianas a su personal administrativo y "estrellar" sus contraseñas, tal vez no pueda hacerlo con todas las cuentas de todos sus usuarios. Si mantiene el control en un grado suficiente quizás lo logre y sea capaz de hacer que las cuentas de sus usuarios sean seguras. Si no, tendrá que ser más cuidadoso (aún) en la monitorización de esas cuentas. Usar ssh y Kerberos en cuentas de usuario da más problemas debido al soporte técnico y administrativo que requerirá, pero sigue siendo mejor solución que un fichero de contraseñas cifradas.
14.3.4. Asegurar el fichero de contraseñas
La única manera segura es ponerle *
a tantas contraseñas como sea posible y utilizar ssh o Kerberos para acceder a esas cuentas. Aunque el fichero cifrado de contraseñas (/etc/spwd.db) sólo puede ser legible para root
, puede que un intruso consiga acceso de lectura a ese fichero, incluso sin haber alcanzado el acceso de escritura como root.
Sus "scripts" de seguridad deben buscar siempre cambios en el fichero de contraseñas (consulte Revisión de integridad de ficheros más abajo) e informar de ellos.
14.3.5. Asegurar el Kernel, dispositivos en bruto y el sistema sistema de ficheros
Si un atacante compromete root
puede hacer cualquier cosa, pero hay ciertas cosas que puede usted preparar para "curarse en salud". Por ejemplo, la mayoría de los kernel modernos tienen un dispositivo de los Kernels modernos tienen un integrado un dispositivo de paquetes. En FreeBSD se llama bpf. Un intruso típico tratará de ejecutar un "sniffer" de paquetes en una máquina comprometida. No debería darle a ese intruso tal recurso, y la mayoría de los sistemas no necesitan el dispositivo bpf.
Pero si desactiva el dispositivo bpf todavía tendrá que preocuparse por /dev/mem y /dev/kmem. Desde ellos el intruso podría en dispositivos de disco en bruto. También hay que tener muy en cuenta una opción del kernel llamada cargador de módulos, kldload(8). Un intruso con iniciativa puede usar un módulo KLD para instalar su propio dispositivo bpf, u otro dispositivo que le permita el "sniffing" en un kernel en ejecución. Para prevenir estos problemas debe ejecutar el kernel en un nivel de seguridad mayor, al menos en securelevel 1. Puede configurar el securelevel mediante una sysctl
en la variable kern.securelevel
. Una vez que tiene su securelevel a 1, los accesos de escritura a dispositivos en bruto se denegarán y se impondrán las banderas especiales schg
. También debe cerciorarse de activar la bandera schg
en binarios críticos para el arranque, directorios y scripts (dicho de otro modo, todo aquello que se ejecuta antes de que se active el securelevel). Puede ser que todo esto sea una exageración, sobre todo teniendo en cuenta que la actualización del sistema se complica bastante a medida que se incrementa el nivel de seguridad. Puede ejecutar el sistema a un nivel de seguridad superior pero no activar la bandera schg
en cada fichero y directorio del sistema. Otra posibilidad es montar / y /usr como sólo lectura. Recuerde que siendo demasiado draconiano en aquello que busca proteger puede dificultar mucho la detección de una intrusión.
14.3.6. Revisión de integridad de ficheros: binarios, ficheros de configuración, etc.
Cuando se piensa de proteccón, sólo se puede proteger la configuración central del sistema y los ficheros de control hasta el momento en el que el factor comodidad salta a la palestra. Por ejemplo, si usa chflags
para activar el bit schg
en la mayoría de los ficheros de / y /usr probablemente sea contraproducente; puede proteger los ficheros haciéndolo, pero también cierra una vía de detección. La última capa de su modelo de seguridad tipo cebolla es quizás la más importante: la detección. El resto de su estructura de seguridad será inútil (o peor aún, le proporcionará un sentimiento de seguridad totalmente infundado) si no puede detectar posibles intrusiones. La mitad del trabajo de la cebolla es alentar al atacante, en lugar de detenerlo, para darle a la parte de la ecuación de detección una oportunidad de atraparlo con las manos en la masa.
La mejor manera de detectar una intrusión es buscar ficheros modificados, perdidos, o cuya presencia o estado sea inesperado. La mejor forma de buscar ficheros modificados es desde otro sistema (que muchas veces es centralizado) con acceso restringido. Escribir sus "scripts" de seguridad en un sistema "extraseguro" y con acceso restringido los hace casi invisibles a posibles atacantes, y esto es algo muy importante. potenciales, y esto es importante. Para poderle sacar el máximo partido debe proporcionar a esa máquina con acceso restringido un acceso preferente al contenido de las otras máquinas de su entorno; suele hacerse mediante la importación vía NFS de sólo lectura de las demás máquinas, o configurando pares de llaves ssh para acceder a las otras máquinas desde la que tiene el acceso restringido. Si exceptuamos el tráfico de red, NFS es el método menos visible y le permite monitorizar los sistemas de ficheros de cada máquina cliente de forma prácticamente indetectable. Si su servidor de acceso restringido está conectado a las máquinas clientes a través de un concentrador o a través de varias capas de encaminamiento el método NFS puede ser muy inseguro, por lo que ssh puede ser la mejor opción, incluso con las huellas de auditoría que ssh va dejando.
Una vez que le da a una máquina de acceso restringido (al menos) acceso de lectura a los sistemas cliente que va a monitorizar, tendrá que escribir "scripts" para efectuar la monitorización. Si va a usar un montaje NFS puede escribir "scripts" utilizando simples herramientas del sistema como find(1) y md5(1). Es aconsejable ejecutar MD5 físicamente en los ficheros de las máquinas cliente al menos una vez al día, y comprobar los ficheros de control (los que hay en /etc y /usr/local/etc) con una frecuencia incluso mayor. Si aparecen discrepancias al compararlos con la información basada en MD5 que la máquina de acceso restringido usa como base debe hacer una comprobación inmediata y profunda. Un buen "script" también debe buscar binarios que sean suid sin razón aparente, y ficheros nuevos o borrados en particiones del sistema como / y /usr.
Si usa ssh en lugar de NFS será mucho más complicado escribir el "script" de seguridad. En esencia, tiene que pasar por scp
los "scripts" a la máquina cliente para poder ejecutarlos, haciéndolos visibles; por seguridad, también tendrá que pasar vía scp
los binarios (por ejemplo find) que utilizan dichos "scripts". El cliente ssh de la máquina cliente puede estar ya bajo el control del intruso. Con todo y con eso, puede ser necesario usar ssh si trabaja sobre enlaces inseguros, también es mucho más difícil de manejar.
Un buen "script" de seguridad buscará también cambios en la configuración de los ficheros de acceso de usuarios y miembros del personal de administración: .rhosts, .shosts, .ssh/authorized_keys, etc; en resumen, ficheros fuera del rango de revisión MD5
.
Si tiene que vérselas con una cantidad enorme de espacio en disco para usuarios le llevará mucho tiempo recorrer cada fichero de cada partición. En su caso sería una buena idea configurar mediante opciones de montaje la deshabilitación de binarios y dispositivos suid en esas particiones. Revise las opciones nodev
y nosuid
de mount(8). Debería comprobarlos de todas maneras al menos una vez por semana, ya que el objeto de esta capa es detectar intrusiones, efectivas o no.
La contabilidad de procesos (vea accton(8)) es una opción con una carga relativamente ligera para el sistema operativo, y puede ayudarle como mecanismo de evaluación tras una intrusión. Es especialmente útil para rastrear cómo consiguión realmente acceder el intruso al sistema (asumiendo que el fichero esté intacto después de la intrusión).
Los "scripts" de seguridad deben procesar los logs, y los propios logs deben generarse de la forma más segura posible: un syslog remoto puede ser muy útil. Un intruso trata de cubrir sus huellas, los logs son un recurso crítico cuando el administrador de sistemas intenta determinar la hora y el método de la intrusión inicial. La ejecución de la consola del sistema en un puerto serie y recolectar la información de forma periódica en una máquina segura de monitorización de consolas es una forma de cumplir esta tarea.
14.3.7. Paranoia
Un poco de paranoia nunca está de más. Como norma, un administrador de sistemas puede añadir cualquier tipo de mecanismo de seguridad siempre y cuando no afecte a la comodidad, y puede añadir mecanismos de seguridad que sí afecten a la comodidad si tiene una buena razón para hacerlo. Más aún, un administrador de seguridad debe mezclar un poco de ambas cosas: si sigue al pie de la letra las recomendaciones que se dan en este documento también está sirviendo en bandeja de plata al posible atancante su metodología. Ese posible atacante también tiene acceso a este documento.
14.3.8. Ataques de denegación de servicio
Esta sección cubre ataques de denegación de servicio. Un ataque DoS suele consistir en un ataque mediante paquetes. NO hay mucho que pueda hacerse contra un ataque mediante paquetes falsificados ("spoofed") que busque saturar su red, pero puede limitar el daño asegurándose de que los ataques no tiren sus servidores.
Limitación de forks en el servidor.
Limitación de ataques "springboard" (ataques de respuesta ICMP, ping broadcast, etc.)
Caché de rutas del kernel.
Un típico ataque DoS contra un servidor con instancias (forks) sería tratar de provocar que el servidor consuma procesos, descriptores de fichero y memoria hasta tirar la máquina. inetd (consulte inetd(8)) dispone de varias opciones para limitar este tipo de ataque. Recuerde que aunque es posible evitar que una máquina caiga, generalmente no es posible evitar que un servicio sea vea interrumpido a causa el ataque. Consulte la página de manual de inetd atentamente y sobre todo estudie las las opciones -c
, -C
, y -R
. Observe que los ataques con direcciones IP falsificadas sortearán la opción -C
de inetd, así que debe usar una combinación de opciones. Algunos servidores autónomos ("standalone") cuentan con parámetros de autolimitación de instancias.
Sendmail tiene la opción -OMaxDaemonChildren
, que tiende a funcionar mucho mejor que las opciones de límite de carga de sendmail debido al retraso que provoca la carga. Debe especificar un parámetro MaxDaemonChildren
al inicio de sendmail que sea lo suficientemente alto como para gestionar la carga esperada, pero no tan alto que la computadora no pueda absorber tal número de sendmails sin caerse de boca. También es prudente ejecutar sendmail en modo de cola (-ODeliveryMode=queued
) y ejecutar el dæmon (sendmail -bd
) de manera independiente de las ejecuciones de cola (sendmail -q15m
). Si a pesar de todo necesita entregas en tiempo real puede ejecutar la cola a un intervalo menor, como -q1m
, pero asegúrese de especificar una opción MaxDaemonChildren
razonable para ese sendmail y así evitar fallos en cascada.
Syslogd puede recibir ataques directos y se recomienda encarecidamente que utilice la opción -s
siempre que sea posible, y si no la opción -a
.
También debe ser extremadamente cuidadoso con servicios de conexión inversa como el ident inverso de TCP Wrapper, que puede recibir ataques directos. No se suele usar el ident inverso de TCP Wrapper por esa misma razón.
Es una muy buena idea proteger los servicios internos de acceso externo protegiéndolos vía con un cortafuegos en los routers de frontera. La idea es prevenir ataques de saturación desde el exterior de la LAN, y no tanto para proteger servicios internos de compromisos root
basados en red. Configure siempre un cortafuegos exclusivo, esto es, "restringir todo menos los puertos A, B, C, D y M-Z". De esta manera restringirá todos sus puertos con números bajos excepto ciertos servicios específicos como named (si es el servidor primario de una zona), ntalkd, sendmail, y otros servicios accesibles desde Internet. Si configura el cortafuegos de la otra manera (como un cortafuegos inclusivo o permisivo), tiene grandes posibilidades de que olvide "cerrar" un par de servicios, o de que agregue un nuevo servicio interno y olvide actualizar el cortafuegos. Puede incluso abrir el rango de números de puerto altos en el cortafuegos para permitir operaciones de tipo permisivo sin comprometer sus puertos bajos. Recuerde también que FreeBSD le permite controlar el rango de números de puerto utilizados para asignación dinámica a través de las numerosas net.inet.ip.portrange
de sysctl
(sysctl -a | fgrep portrange
), lo cual también facilita la complejidad de la configuración de su cortafuegos. Por ejemplo, puede utilizar un rango normal primero/último de 4000 ó 5000, y un rango de puerto alto de 49152 a 65535; bloquée todo por debajo de 4000 (excepto para ciertos puertos específicos accesibles desde Internet, por supuesto).
Otro ataque DoS común es llamado ataque "springboard": atacar un servidor de forma que genere respuestas que lo sobrecarguen, sobrecarguen la red local o alguna otra máquina. Los ataques más comunes de este tipo son los ataques ICMP ping broadcast. El atacante falsifica paquetes ping enviados a la dirección broadcast de su LAN simulando que la dirección IP origen es la de la máquina que desean atacar. Si sus routers de frontera no están configurados para lidiar con pings a direcciones de broadcast su LAN termina generando suficientes respuestas a la dirección origen falsificada como para saturar a la víctima, especialmente cuando el atacante utiliza el mismo truco en varias docenas de direcciones broadcast en varias docenas de redes diferentes a la vez. Se han medido ataques de broadcast de más de ciento veinte megabits. Un segundo tipo de ataque "springboard" bastante común se da contra el sistema de informe de error de ICMP. Un atacante puede saturar la conexión entrante de red de un servidor mediante la construcción de paquetes que generen respuestas de error ICMP, provocando que el servidor sature su conexión saliente de red con respuestas ICMP. Este tipo de ataque también puede tumbar el servidor agotando sus "mbufs", especialmente si el servidor no puede drenar lo suficientemente rápido las respuestas ICMP que genera. El kernel de FreeBSD tiene una opción de compilación llamada ICMP_BANDLIM
, que limita la efectividad de este tipo de ataques. La última gran categoría de ataques "springboard" está relacionada con ciertos servicios de inetd, como el servicio de eco udp. El atacante simplemente imita un paquete UDP con el puerdo de eco del servidor A como dirección de origen, y el puerto eco del servidor B como dirección de destino, estando ambos servidores en la misma LAN. Un atacante puede sobrecargar ambos servidores y la propia LAN inyectando simplemente un par de paquetes. Existen problemas similares con el puerto chargen. Un administrador de sistemas competente apagará todos estos servicios internos de verificación de inetd.
Los ataques con paquetes falsificados pueden utilizarse también para sobrecargar la caché de rutas del kernel. Consulte los parámetros de sysctl net.inet.ip.rtexpire
, rtminexpire
, y rtmaxcache
. Un ataque de paquetes falsificados que utiliza una dirección IP origen aleatoria provocará que el kernel genere una ruta temporal en caché en su tabla de rutas, visible con netstat -rna | fgrep W3
. Estas rutas suelen expiran en 1600 segundos más o menos. Si el kernel detecta que la tabla de rutas en caché es ya demasiado grande reducirá dinámicamente rtexpire
, pero nunca la reducirá a un valor que sea menor que rtminexpire
. Esto nos presenta dos problemas:
El kernel no reacciona con suficiente rapidez cuando un servidor ligeramente cargado es atacado.
El
rtminexpire
no es lo suficientemente bajo para que el kernel sobreviva a un ataque sostenido.
Si sus servidores están conectados a Internet mediante mediante una línea T3 o superior puede ser prudente corregir manualmente rtexpire
y rtminexpire
por medio de sysctl(8). Nunca ponga ambos parámetros a cero (a menos que desée estrellar la máquina). Configurar ambos parámetros a 2 segundos debería bastar para proteger de ataques la tabla de rutas.
14.3.9. Otros aspectos del acceso con Kerberos y SSH
Existen un par de detalles con respecto a Kerberos y ssh que debe analizar sy pretende usarlos. Kerberos V es un excelente protocolo de protocolo de autentificación, pero hay errores en la versión kerberizada de telnet y rlogin que las hacen inapropiadas para gestionar flujos binarios. Ademé Kerberos no cifra por defecto una sesión a menos que utilice la opción -x
. ssh cifra todo por defecto.
ssh funciona bastante bien en todos los casos, con la sola salvedad de que por defecto reenvía llaves de cifrado. Esto significa que si usted tiene una estación de trabajo segura, que contiene llaves que le dan acceso al resto del sistema, y hace ssh a una máquina insegura, sus llaves se pueden utilizar. Las llaves en sí no se exponen, pero ssh crea un puerto de reenvío durante el login, y si un atacante ha comprometido el root
de la máquina insegura, puede utilizar ese puerto para usar sus llaves y obtener acceso a cualquier otra máquina que sus llaves abran.
Le recomendamos que, siempre que sea posible, use ssh combinado con Kerberos en los login de su personal de administración. para logins de staff. Puede compilar ssh con soporte de Kerberos. Esto reducirá su dependencia de llaves ssh expuestas, al mismo tiempo que protege las contraseñas vía Kerberos. Las llaves ssh deben usarse sólamente para tareas automáticas desde máquinas seguras (algo que Kerberos no hace por incompatibilidad). Recomendamos también que desactive el reenvío de llaves en la configuración de ssh, o que use la opción from=IP/DOMAIN
que ssh incluye en authorized_keys; así la llave sólo podrá ser utilizada por entidades que se validen desde máquinas específicas.
14.4. DES, MD5 y Crypt
Cada usuario de un sistema UNIX® tiene una contraseña asociada a su cuenta. Parece obvio que estas contraseñas sólo deben ser conocidas por el usuario y por el sistema operativo. Para que estas contraseñas permanezcan en secreto se cifran con lo que se conoce como un "hash de una pasada", esto es, sólo pueden ser fácilmente cifradas pero no descifradas. En otras palabras, lo que acabamos de decir es tan obvio que ni siguiera es verdad: el propio sistema operativo no sabe cuál es realmente la contraseña. Lo único que conoce es la versión cifrada de la contrasenña. La única manera de obtener la contraseña en "texto plano" es por medio de una búsqueda de fuerza bruta en el espacio de contraseñas posibles.
Por desgracia la única manera segura de cifrar contraseñas cuando UNIX® empezó a hacerlo estaba basada en DES, ("Data Encryption Standard", "estándar de cifrado de datos"). Esto no era un gran problema para usuarios residentes en los EEUU, pero el código fuente de FreeBSD no se podía exportar desde los EEUU, así que FreeBSD hubo de buscar una forma de complir las leyes de EEUU y al mismo tiempo mantener la compatibilidad con otras variantes de UNIX® que que todavía utilizaban DES.
La solución fué dividir las bibliotecas de cifrado para que los usuarios de EEUU pudieran instalar las bibliotecas DES pero los usuarios del resto del mundo tuvieran un método de cifrado que pudiera ser exportado. Así es como FreeBSD comenzó a usar MD5 como su método de cifrado por defecto. MD5 se considera más seguro que DES, así que se mantiene la opción de poder instalar DES por motivos de compatibilidad.
14.4.1. Cómo reconocer su mecanismo de cifrado
En versiones anteriores a FreeBSD 4.4 libcrypt.a era un enlace simbólico que apuntaba a la biblioteca que se usaba para el cifrado. En FreeBSD 4.4 se cambió libcrypt.a para ofrecer una biblioteca hash configurable de validación de contraseñas. Actualmente la biblioteca permite funciones hash DES, MD5 y Blowfish. FreeBSD utiliza por defecto MD5 para cifrar contraseñas.
Es muy sencillo identificar qué método usa FreeBSD para cifrar. Una forma es examinando las contraseñas cifradas en /etc/master.passwd. Las contraseñas cifradas con el hash MD5 son más largas que las cifradas con el hash DES, y también comienzan por los caracteres $1$
. Las contraseñas que comienzan por $2a$
están cifradas con la función hash de Blowfish. Las contraseñas DES no tienen ninguna característica particular, pero son más cortas que las contraseñas MD5, y están codificadas en un alfabeto de 64 caracteres que no incluye el caracter $
; es por esto que una cadena relativamente corta que comience con un signo de dólar es muy probablemente una contraseña DES.
El formato de contraseña a usar en nuevas contraseñas se define en /etc/login.conf mediante passwd_format
, pudiendo tener los valores des
, md5
o blf
. Consulte la página de manual login.conf(5) para más información.
14.5. Contraseñas de un solo uso
S/Key es un esquema de contraseña de un solo uso basado en una función de hash de sentido único. FreeBSD utiliza el hash MD4 por compatibilidad, pero otros sistemas usan MD5 y DES-MAC. S/Key forma parte del sistema base de FreeBSD desde la versión 1.1.5 y se usa también en un número creciente de otros sistemas operativos. S/Key es una marca registrada de Bell Communications Research, Inc.
A partir de la versión 5.0 de FreeBSD S/Key fué reemplazado por su equivalente OPIE ("One-time Passwords In Everything", "Contraseñas de un solo uso para todo"). OPIE usa por defecto hash MD5.
En esta sección se explican tres tipos de contraseña. La primera es la típica contraseña al estilo UNIX® o Kerberos; las llamaremos "contraseñas UNIX®". El segundo tipo es la contraseña de un solo uso, que se genera con el programa key
de S/Key o con opiekey(1) de OPIE, y que aceptan los programas keyinit
, opiepasswd(1), y el prompt de login; llamaremos a esta una "contraseña de un solo uso". El último tipo de contraseña es la contraseña secreta que le da usted a los programas key
/opiekey
(y a veces keyinit
/opiepasswd
), que se usa para generar contraseñas de un solo uso; a estas las llamaremos "contraseñas secretas", o simplemente "contraseña".
La contraseña secreta no tiene nada que ver con su contraseña UNIX®; pueden ser la misma, pero no es recomendable. Las contraseñas secretas S/Key y OPIE no están limitadas a 8 caracteres como las contraseñas UNIX® antiguas, pueden ser tan largas como se quiera. Las contraseñas con frases de seis o siete palabras muy largas son bastante comunes. El funcionamiento del sistema S/Key o el OPIE es en gran parte completamente independiente del sistema de contraseñas UNIX®.
Además de la contraseña hay dos datos que son importantes para S/Key y OPIE. Uno es lo que se conoce como "semilla" o "llave", que consiste en dos letras y cinco dígitos. El otro dato importante se llama la "cuenta de iteración", que es un número entre 1 y 100. S/Key genera la contraseña de un solo uso concatenando la semilla y la contraseña secreta, aplica el hash MD4/MD5 tantas veces como especifique la cuenta de iteración y convierte el resultado en seis palabras cortas en inglés. Estas seis palabras en inglés son su contraseña de un solo uso. El sistema de autentificación (principalmente PAM) mantiene un registro del uso de contraseñas de un solo uso, y el usuario puede validarse si el hash de la contraseña que proporciona es igual a la contraseña previa. Como se utiliza un hash de sentido único es imposible generar futuras contraseñas de un solo uso si una contraseña que ya ha sido usada fuera capturada; la cuenta de iteración se reduce después de cada login correcto para sincronizar al usuario con el programa login. Cuanto la iteración llega a 1, S/Key y OPIE deben reinicializar.
Hay tres programas involucrados en cada uno de estos sistemas. Los programas key
y opiekey
aceptan una cuenta iterativa, una semilla y una contraseña secreta, y generan una contraseña de un solo uso o una lista consecutiva de contraseñas de un solo uso. Los programas keyinit
y opiepasswd
se usan respectivamente para inicializar S/Key y OPIE, y para cambiar contraseñas, cuentas iterativas o semillas; toman ya sea una frase secreta, o una cuenta iterativa y una contraseña de un solo uso. Los programas keyinfo
y opieinfo
examinan los ficheros de credenciales correspondientes (/etc/skeykeys o /etc/opiekeys) e imprimen la cuenta iterativa y semilla del usuario invocante.
Explicaremos cuatro tipos de operaciones diferentes. La primera es usar keyinit
o opiepasswd
a través de una conexión segura para configurar contraseñas de un solo uso por primera vez, o para cambiar su contraseña o semilla. La segunda operación es utilizar keyinit
o opiepasswd
a través de una conexión insegura, además de usar key
u opiekey
sobre una conexión segura para hacer lo mismo. La tercera es usar key
/opiekey
para conectarse a través de una conexión insegura. La cuarta es usar opiekey
o key
para generar numerosas llaves, que pueden ser escritas para llevarlas con usted al ir a algún lugar desde el que no se puedan hacer conexiones seguras a ningún sitio.
14.5.1. Inicialización de conexiones seguras
Para inicializar S/Key por primera vez cambie su contraseña, o cambie su semilla mientras está conectado a través de una conexión segura (esto es, en la consola de una máquina o vía ssh); use keyinit
sin ningún parámetro:
% keyinit
Adding unfurl:
Reminder - Only use this method if you are directly connected.
If you are using telnet or rlogin exit with no password and use keyinit -s.
Enter secret password:
Again secret password:
ID unfurl s/key is 99 to17757
DEFY CLUB PRO NASH LACE SOFT
En OPIE se utiliza opiepasswd
:
% opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COED
En Enter new secret pass phrase:
o Enter secret password:
, debe introducir una contraseña o frase. Recuerde que no es la contraseña que utilizará para entrar, se usará para generar sus llaves de un solo uso. La línea "ID" da los parámetros de su instancia en particular: su nombre de login, la cuenta iterativa y semilla. En el momento del login el sistema recordará estos parámetros y los presentará de nuevo para que no tenga que recordarlos. La última línea proporciona las contraseéas de un solo uso que corresponden a esos parámetros y su contraseña secreta; si fuera a hacer login de manera inmediata, debería usar esta contraseña de una sola vez.
14.5.2. Inicialización de conexiones inseguras
Para inicializar o cambiar su contraseña secreta a través de una conexión insegura, necesitará tener alguna conexión segura a algún lugar donde pueda ejecutar key
u opiekey
; puede ser gracias a un accesorio de escritorio o en una Macintosh®, o un prompt de shell en una máquina en la que confíe. Necesitará también una cuenta iterativa (100 probablemente sea un buen valor), y puede usar su propia semilla, o usar una generada aleatoriamente. Siguiendo con la conexión insegura (hacia la máquina que está inicializando), ejecute keyinit -s
:
% keyinit -s
Updating unfurl:
Old key: to17758
Reminder you need the 6 English words from the key command.
Enter sequence count from 1 to 9999: 100
Enter new key [default to17759]:
s/key 100 to 17759
s/key access password:
s/key access password:CURE MIKE BANE HIM RACY GORE
En OPIE debe usar opiepasswd
:
% opiepasswd
Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 498 to4268 ext
Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
otp-md5 499 to4269
Response: LINE PAP MILK NELL BUOY TROY
ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROY
Para aceptar la semilla por defecto (la que el programa keyinit
llama key
, "llave", para terminar de complicar las cosas), pulse Enter. Antes de introducir una una contraseña de acceso cambie a su conexión o accesorio de escritorio S/Key y dele el mismo parámetro:
% key 100 to17759
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <secret password>
CURE MIKE BANE HIM RACY GORE
O para OPIE:
% opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT
Vuelva a la conexión insegura y copie la contraseña de un solo uso generada al programa que quiera usar.
14.5.3. Generación una sola contraseña de un solo uso
Una vez que ha inicializado S/Key u OPIE, cuando haga login verá un "prompt" parecido al siguiente:
% telnet ejemplo.com
Trying 10.0.0.1...
Connected to ejemplo.com
Escape character is '^]'.
FreeBSD/i386 (ejemplo.com) (ttypa)
login: <username>
s/key 97 fw13894
Password:
O, en el caso de OPIE:
% telnet ejemplo.com
Trying 10.0.0.1...
Connected to ejemplo.com
Escape character is '^]'.
FreeBSD/i386 (ejemplo.com) (ttypa)
login: <nombre_de_usuario>
otp-md5 498 gr4269 ext
Password:
Como una nota aparte, el "prompt" de S/Key y OPIE cuenta con una opción útil (que no se muestra aquí): si pulsa Enter en el "prompt" de contraseña el "prompt" activará el eco para que pueda ver en pantalla lo que teclea. Esto puede ser extremadamente útil si está tecleando una contraseña a a mano o desde un la lista impresa.
Ahora necesitará generar su contraseña de un sólo uso para responder a este "prompt" de login. Debe hacerlo en un sistema digno de confianza y en el que pueda ejecutar key
u opiekey
. Existen versiones DOS, Windows® y también para Mac OS®. Ambos usarán la cuenta iterativa y la semilla como opciones de línea de órdenes. Puede cortarlas y pegarlas desde el "prompt" de login de la máquina en la que se está identificando.
En el sistema de confianza:
% key 97 fw13894
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password:
WELD LIP ACTS ENDS ME HAAG
Con OPIE:
% opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT
Ahora que tiene su contraseña de un solo uso puede proceder con el login:
login: <nombre_de_usuario>
s/key 97 fw13894
Password: <Enter para activar el eco>
s/key 97 fw13894
Password [echo on]: WELD LIP ACTS ENDS ME HAAG
Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ...
14.5.4. Generación de múltiples contraseñas de un solo uso
A veces usted hay que ir a lugares donde no hay acceso a una máquina de fiar o a una conexión segura. En estos casos, puede utilizar key
y opiekey
para generar previamente numerosas contraseñas de un solo uso para, una vez impresas, llevárselas a donde hagan falta. Por ejemplo:
% key -n 5 30 zz99999
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <secret password>
26: SODA RUDE LEA LIND BUDD SILT
27: JILT SPY DUTY GLOW COWL ROT
28: THEM OW COLA RUNT BONG SCOT
29: COT MASH BARR BRIM NAN FLAG
30: CAN KNEE CAST NAME FOLK BILK
O para OPIE:
% opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <secret password>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHI
El -n 5
pide cinco llaves en secuencia, la opción 30
especifica que ese debe ser el último número de iteración. Observe que se imprimen en el orden inverso de uso. Si es realmente paranoico escriba los resultados a mano; si no, puede enviar la salida a lpr
. Observe que cada línea muestra la cuenta iterativa y la contraseña de un solo uso; puede ir tachando las contraseñas según las vaya utilizando.
14.5.5. Restricción del uso de contraseñas UNIX®
S/Key puede implantar restricciones en el uso de contraseñas UNIX® basándose en el nombre de equipo, nombre de usuario, puerto de terminal o dirección IP de una sesión de login. Consulte el fichero de configuración /etc/skey.access. La página de manual de skey.access(5) contiene más información sobre el formato del fichero y detalla también algunas precauciones de seguridad que hay que tener en cuenta antes de basar nuestra seguridad en este fichero.
Si /etc/skey.access no existiera (por defecto es así en sistemas FreeBSD 4.X) todos los usuarios podrán disponer de contraseñas UNIX®. Si el fichero existe se exigirá a todos los usuarios el uso de S/Key, a menos que se configure de otro modo en skey.access. En todos los casos las contraseñas UNIX® son admiten en consola.
Aquí hay un ejemplo del fichero de configuración skey.access que muestra las tres formas más comunes de configuración:
permit internet 192.168.0.0 255.255.0.0 permit user fnord permit port ttyd0
La primera línea (permit internet
) permite a usuarios cuyas direcciones IP origen (las cuales son vulnerables a una falsificación) concuerden con los valores y máscara especificados utilizar contraseñas UNIX®. Esto no debe usarse como mecanismo de seguridad, sino como medio de recordarle a los usuarios autorizados que están usando una red insegura y necesitan utilizar S/Key para la validación.
La segunda línea (permit user
) permite al nombre de usuario especificado, en este caso fnord
, utilizar contraseñas UNIX® en cualquier momento. Hablando en general, esto solo debe ser usado por gente que no puede usar el programa key
, como aquellos con terminales tontas o refractarios al aprendizaje.
La tercera línea (permit port
) permite a todos los usuarios validados en la línea de terminal especificada utilizar contraseñas UNIX®; esto puede usarse para usuarios que se conectan mediante "dial-ups".
OPIE puede restringir el uso de contraseñas UNIX® basándose en la dirección IP de una sesión de login igual que lo haría S/Key. El fichero que gestiona esto es /etc/opieaccess, que está incluído por defecto en sistemas FreeBSD 5.0 o posteriores. Revise opieaccess(5) para más información sobre este fichero y qué consideraciones de seguridad debe tener presentes a la hora de usarlo.
Veamos un ejemplo de opieaccess:
permit 192.168.0.0 255.255.0.0
Esta línea permite a usuarios cuya dirección IP de origen (vulnerable a falsificación) concuerde con los valores y máscara especificados, utilizar contraseñas UNIX® en cualquier momento.
Si no concuerda ninguna regla en opieaccess se niegan por defecto los logins no-OPIE.
14.6. TCP Wrappers
Cualquiera que esté familiarizado con inetd(8) probablemente haya oído hablar de TCP Wrappers, pero poca gente parece comprender completamente su utilidad en un entorno de red. Parece que todos quieren instalar un cortafuegos para manejar conexiones de red. Aunque un cortafuegos tiene una amplia variedad de usos hay cosas que un cortafuegos no es capaz de gestionar, como el envío de texto como respuesta al creador de la conexión. El software TCP hace esto y más. En las siguientes secciones se explicarán unas cuantas opciones de TCP Wrappers y, cuando sea necesario, se mostrarán ejemplos de configuraciones.
El software TCP Wrappers extiende las habilidades de inetd
para ofrecer soporte para cada servidor dæmon bajo su control. Utilizando este método es posible proveer soporte de logs, devolver mensajes a conexiones, permitir a un dæmon aceptar solamente conexiones internas, etc. Aunque algunas de estas opciones pueden conseguirse gracias a un cortafuegos, no sólo añadirá una capa extra de seguridad, sino que irá más allá del nivel de control ue un cortafuegos puede ofrecerle.
Las brillantes capacidades de TCP Wrappers no deben considerarse una alternativa a un buen cortafuegos. TCP Wrappers puede usarse conjuntamente con un cortafuegos u otro sistema de de seguridad, pues ofrece una capa extra de protección para el sistema.
Ya que es una extensión de la configuración de inetd
, se da por hecho que el lector ha leído la sección configuración de inetd.
Aunque los programas ejecutados por inetd(8) no son exactamente "dæmons" tradicionalmente han recibido ese nombre. Dæmon es, por tanto, el término que usaremos en esta sección. |
14.6.1. Configuración inicial
El único requisito para usar TCP Wrappers en FreeBSD es que el servidor inetd
se inicie desde rc.conf con la opción -Ww
(es la configuración por defecto). Por descontado, se presupone que /etc/hosts.allow estará correctamente configurado, pero syslogd(8) enviará mensajes a los logs del sistema si no es así.
A diferencia de otras implementaciones de TCP Wrappers, se ha dejado de usar hosts.deny. Todas las opciones de configuración deben ir en /etc/hosts.allow. |
En la configuración más simple las políticas de conexión de dæmons están configuradas ya sea a permitir o bloquear, dependiendo de las opciones en /etc/hosts.allow. La configuración por defecto en FreeBSD consiste en permitir una conexión a cada dæmon iniciado por inetd
. Es posible modificar esta configuración, pero explicaremos cómo hacerlo después de exponer la configuración básica.
La configuración básica tiene la estructura dæmon : dirección : acción
, donde dæmon
es el nombre de dæmon que inicia inetd
. La dirección
puede ser un nombre de equipo válido, una dirección IP o IPv6 encerrada en corchetes ([ ]). El campo acción puede ser permitir o denegar para el dar el acceso apropiado. Tenga presente que la configuración funciona en base a la primera regla cuya semántica concuerde; esto significa que el fichero de configuración se lee en orden ascendente hasta que concuerde una regla. Cuando se encuentra una concordancia se aplica la regla y el proceso se detendrá.
Existen muchas otras opciones pero estas se explican en una sección posterior. Una línea de configuración simple puede generarse mediante datos así de simples. Por ejemplo, para permitir conexiones POP3 mediante el dæmon mail/qpopper, añada las siguientes líneas a hosts.allow:
# This line is required for POP3 connections: qpopper : ALL : allow
Despues de añadir esta línea tendrá que reiniciar inetd
. Use kill(1) o use el parámetro restart de /etc/rc.d/inetd.