Capítulo 13. Preguntas varias

13.1. FreeBSD usa más espacio de swap que Linux. Porqué?
13.2. ¿Porqué usar (que son) a.out y ELF como formatos ejecutables?
13.3. ¿Porqué chmod no puede cambiar los permisos de los links?
13.4. ¿Porqué están los nombres de usuario restringidos a 8 caracteres?
13.5. ¿Puedo ejecutar binarios DOS bajo FreeBSD?
13.6. ¿Qué es sup, y como lo uso?
13.7. ¿Existen herramientas de ahorro de energía en FreeBSD?
13.8. ¿Qué significa "MFC"?
13.9. ¿Qué significa "BSD"?

13.1. FreeBSD usa más espacio de swap que Linux. Porqué?

No lo hace. Deberías pensar "Porque mi swap parece lleno?". Si esto es lo que realmente querías decir, es por que poniendo los datos en swap en luar de descartarlos, hace que sea más rápido recuperarlos que si el paginador tuviese que ir a través del sistema de archivos y usar bloques sin modificar desde un ejecutable.

La cantidad actual de páginas que puedes tener en el core en una sola vez no es reducida; las páginas sin usar son desplazadas como sea necesario.

13.2. ¿Porqué usar (que son) a.out y ELF como formatos ejecutables?

Para entender por que FreeBSD usa el formato a.out, debes saber primero un poco sobre los tres formatos dominantes actualmente en UNIX:

  • a.out

    El antiguo y clásico formato de objeto. Usa una corta y compacta cabecera con un número mágico en el inicio que es usado para caracterizar el formato (mira en a.out(5) para más detalles). Contiene tres segmentos cargados: .text, .data y .bss más una tabla de símbolos y una tabla de cadenas de carácteres.

  • COFF

    El formato de objeto SVR3. La cabecera comprime una sección de tablas, de manera que puedas tener más de una sola sección .test, .data y .bss

  • ELF

    El sucesor de COFF, ofreciendo múltiples secciones y valores posibles de 32 o 64 bits. Un problema importante: ELF fue diseñado con la presunción de que solo existiría un único ABI por arquitectura de sistema. Esta presunción actualmente es incorrecta, incluso en el mundo comercial (el cual tiene al menos tres ABIs: SVR4, Solaris y SCO).

    FreeBSD intenta solucionar este problema de manera que provee de una utilidad para marcar un ejecutable ELF con información sobre el ABI con el que es compatible. Para más información, mira el man de brandelf.



FreeBSD viene del sistema clásico y tradicionalmente ha utilizado el formato a.out, una tecnología probada y testeada a través de muchas generaciones de releases de BSD. También es posible construir y ejecutar binarios nativos ELF (y kernels) en sistemas FreeBSD. FreeBSD inicialmente se resistió al salto de cambiar a ELF como su formato por defecto. Porqué?, bien, cuando el mundo Linux hizo su transición a ELF no era nada fácil abandonar el formato ejecutable a.out debido a su inflexible mecanismo de tablas basadas en librerías compartidas. Esto hizo muy difícil para los fabricantes y desarrolladores la creación de librerías compartidas. A partir del momento en el que se ofrecieron una serie de herramientas que ofrecían la solución al problema de las librerías compartidas, el coste de la migración fue aceptado como necesario y la transición se hizo.

En el caso de FreeBSD, el mecanismo de librerías compartidas esta más basado en el estilo de SunOS, mucho más sencillo de usar. De todas maneras, empezando con la version 3.0, FreeBSD soportará oficialmente binarios ELF como el formato por defecto. Aunque pensamos que el formato ejecutable a.out nos ha servidor muy bién, la gente de GNU, que hacen las herramientas de compilación que usamos, ha dejado de dar soporte para el formato a.out. Esto nos ha forzado a mantener dos versiones divergentes del compilador y lincador.

13.3. ¿Porqué chmod no puede cambiar los permisos de los links?

Tienes que usar -H o -L junto con la opción -R para que funcione. Para más información, mira la página de chmod y de symlink.

CUIDADO la opción -R hace un chmod RECURSIVO. Ten cuidado aal especificar directorios o symlinks con chmod. Si quieres cambiar los permisos de un directorio referenciado por un symlink, usa chmod sin ninguna opción y sigue el symlink con una barra /. Por ejemplo, si foo es un symlink al directorio bar, y quieres cambiar los permisos de foo /actualmente bar), deberías hacer algo como esto:

        
          chmod 555 foo/
        



Con la barra, chmod seguira el symlink, foo, para cambiar los permisos del directorio bar.

13.4. ¿Porqué están los nombres de usuario restringidos a 8 caracteres?

Pensarás que es fácil y suficiente con cambiar UT_NAMESIZE y reconstruir el kernel, y todo volverá a funcionar. Desafortunadamente hay aplicaciones y programas (incluyendo herramientas de sistema) que tienen en el propio código (no siempre 8 o 9, pero si 15 o 20) en estructuras, buffers... y rompería los clientes de NIS de Sun y sin duda existirían otros problemas interactuando con otros sistemas UNIX.

En FreeBSD 3.0 y superiores, se ha incrementado el número máxmimo de carácteres a 16 y todas esas utilidades con longitud de carácteres prefijada han sido encontradas y arregladas. El hecho de que este cambio afectase a muchas áreas del sistema es el motivo por el que el cambio no se ha hecho hasta la versión 3.0.

Si eres absolutamente cuidadoso y quieres arreglas tu mismo este problema en versiones anteriores, edita el archivo /usr/include/utmp.h y cambia el parámetro UT_NAMESIZE a la longitud que desees. También debes editar el archivo /usr/include/sys/param.h y poner el valor de MAXLOGNAME al mismo que UT_NAMESIZE. Finalmente, recompila los fuentes, no te olvides que el contenido de /usr/include es actualizado cada vez!. En su lugar, cambia los archivos apropiados en /usr/src/..

13.5. ¿Puedo ejecutar binarios DOS bajo FreeBSD?

Sí, empezando en la versión 3.0 puedes usar la emulación DOS rundos de BSDI, la cual ha sido integrada y mejorada. Envía un mail a la Lista de discusión de emulación en FreeBSD si estás interesado en participar en la evolución de esta característica.

Para sistemas pre-3.0 hay una pequeña utilidad llamada pcemu en la colección de puertos que emula un 8088 y suficientes servicios de BIOS para ejecutar aplicaciones de modo texto. Requiere el sistema de X Window.

13.6. ¿Qué es sup, y como lo uso?

SUP significa Software Update Protocol, y fue desarrollado por CMU para mantener sus árboles de desarrollo sincronizados. Nosotros lo usabamos para manterner el servidor central sincronizado con otros servidores remotos.

SUP no es amigo del ancho de banda, y ha sido retirado. El método actual recomendado para mantener tus fuentes actualizados es CVSup

13.7. ¿Existen herramientas de ahorro de energía en FreeBSD?

FreeBSD usa la instrucción HLT (halt) cuando el sistema está (idle) para reducir el consumo de energía. Si tienes la opción APM (Automatic Power Management) configurado, FreeBSD puede poner la cpu en modo de baja energía.

13.8. ¿Qué significa "MFC"?

MFC es un acrónimo para "Merges From -CURRENT". Es usado en los logs de CVS para indicar que un cambio se ha migrado de la rama CURRENT a la rama STABLE.

13.9. ¿Qué significa "BSD"?

Pertenece a un lenguaje secreto que solo sus miembros conoces. No tiene traducción literal, pero basta con decir que su traducción está entre, "Equipo de Fórmula-1", "Los Pinguinos son un buén aperitivo", y "Tenermos mejor sentido del humor que Linux" :-)

Seriamente, BSD es un acrónimo de "Berkeley Software Distribution", el cual es el nombre que el CSRG de Berkeley (Computer Systems Research Group) escogió para sus distribuciones de Unix.

Puede descargar éste y muchos otros documentos desde ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Si tiene dudas sobre FreeBSD consulte la documentación antes de escribir a la lista <questions@FreeBSD.org>.
Envíe sus preguntas sobre la documentación a <doc@FreeBSD.org>.