lunes, 27 de diciembre de 2010

FreeBSD una introducción necesaria.

Hace casi diez años me propusieron entrar a trabajar en un pequeño proveedor de servicios informáticos que ofrecía un buen salario además de algunas oportunidades de crecimiento. Un amigo me habló y quedamos en que pasaría a discutir los términos del contrato. Así lo hice, el día que llegué, para llegar a las oficinas de personal pasé por la puerta del un cuartito que luego supe que era el cuarto del servidor. Adentro había una máquina pequeña, un Pentium Pro con unos escasos 64 Mb de RAM y un disco de 20 Gb y abierta de la panza (una extraña costumbre de algunos administradores) en la que solo se distinguía una consola oscura que mostraba (después lo sabría) la salida de un ps.
Hasta ese día conocí que cosa era Unix, para ser mas exactos, FreeBSD (y conocí a los poetas huevos, también, y es que hay días en que todo sale bien). Varios años (y muchas madrugadas) mas tarde FreeBSD sigue siendo Unix para mi, el resto de los parientes son solo eso, parientes. Este post lo debía hace tiempo, sirva de introducción para los que no lo conocen, si quieren aprender, este es el camino. 
Aproveché que el último post terminó en FreeBSD, busque algún material que valiera la pena y encontré este.  Esta algo viejo, así que eliminé algunas referencias sobre las versiones, el resto es igualmente válido. Para dejarlos en contexto, el sistema está en la versión 8.1 (mantiene aún la rama legacy 7.3), en enero debe salir la 8.2 . El autor del original es Frank Pohlmann y pueden ver una referencia aquí.

Resumen: 
El sistema operativo FreeBSD es el gigante desconocido entre los sistemas operativos libres. Partiendo del proyecto 386BSD, es un UNIX ® extremadamente rápido como sistema operativo diseñado básicamente para arquitecturas Intel ® 386 y sus clones. En muchos sentidos, FreeBSD ha sido siempre el sistema operativo que GNU/Linux debería haber sido. Corre sin problemas en viejas máquinas Intel y en chips de 64 bits de AMD, y sirve terabytes de archivos al día en algunos de los servidores de archivo más grande en la tierra.

La familia de sistemas operativos Berkeley Software Distribution (BSD) se remontan al sistema operativo BSD UNIX creado y mantenido en la Universidad de California, Berkeley, desde finales de 1970. Hoy en día, la familia BSD se compone de cinco ramas principales, e incluso activistas de Linux que están cómodos con una gran cantidad de distribuciones, se encuentran desconcertados por el número de sabores de BSD que aparecen en un número cada vez mayor. Desde el año 2001, cuando la última rama importante - DragonFly BSD - inició, FreeBSD, OpenBSD, NetBSD, y Mac OS X representan una nueva oleada creativa en el mundo UNIX. Todos ellos son compatibles con POSIX. Todos presentan interfaces de línea de comandos similares para los usuarios. Todos usan núcleos (kernels) y librerías del sistema similares que resultan en modelos similares de programación y similares características de uso de aplicaciones.
Por razones legales, BSD no puede ser llamado un sistema UNIX, pero es ampliamente aceptado que los diferentes sabores de BSD representan al UNIX de código abierto. Sorprendentemente, a finales de 1980 y principios de 1990, ningún sistema operativo libre digno de ese nombre estaba disponibles para Macs o PCs. UNIX vivía en los mainframes y en la arquitectura SPARC. Las empresas de Unix propietarias han balcanizado la escena comercial de UNIX.

En el principio existía la 386BSD
En 1993, hubo dos acontecimientos que cambiarían la escena UNIX permanentemente: Fue fundado el grupo NetBSD, y el kit de parches 386BSD fue revivido. Diez años antes, los desarrolladores de BSD UNIX habían sido reclutados desde las filas de la UC Berkeley y de los estudiantes de doctorados, el dinero había llegado en gran parte de la Defense Advanced Research Projects Agency (DARPA), pero la financiación estaba llegando a su fin. El proyecto 386BSD se creó en 1985 como un intento de ejecutar BSD UNIX en chips de Intel. El primer lanzamiento no se produjo antes de 1989, y por diversas razones, el proyecto terminó por convertirse en un sistema operativo de referencia publicado por el Dr. Dobb's Journal en julio de 1992. Conocido como 386BSD 0.1, experimentó 250.000 descargas.

El 386BSD se basó principalmente en las ideas de Bill y Lynne Jolitz para mejorar los propios conceptos sobre los que se basó UNIX. Se suponía que fuera libre, pero el soporte a un sistema operativo completo prácticamente por su cuenta resultó estar más allá de los Jolitzes. El sistema perdió frente a una armada de programadores que se unieron a un estudiante finlandés casi desconocido para ayudarlo a construir Linux.

La historia de FreeBSD
Otro grupo que llevó a término la visión original de portar BSD UNIX a los chips de Intel fue formado en el año 1993. Basándose en los trabajos anteriores de Bill Jolitz, la version 1.0 de FreeBSD fue lanzada en diciembre de 1993. Jordan Hubbard, dirigió y condujo el proyecto, administrando la infraestructura de gestión ya un grupo de colaboradores que llegó a 200 desarrolladores a principios de 1997. Se supone que FreeBSD llegará a su versión 8.2 a finales de enero próximo y es sin duda el más importante de todos los sistemas UNIX libres. FreeBSD no es un clon de UNIX, sino un sistema que no sólo funciona como UNIX, sino que ademas su funcionamiento interno y el sistema de APIs son compatibles con UNIX .
FreeBSD hoy no es el sistema que años atrás solo operaba sobre Intel-/AMD. También se ejecuta en máquinas SPARC64 y tiene una historia bastante larga en arquitecturas Alpha . Si un usuario de BSD está interesado en chips corriendo Mac OS X, se puede cambiar a Darwin OS, el núcleo de código abierto de Mac OS X, que a su vez se basa en gran parte en la version 5.0 de FreeBSD y sus sucesores. NetBSD, por supuesto, ha estado funcionando en todas las arquitecturas de Mac desde 1995.

Que es FreeBSD que no es Linux?
FreeBSD es un sistema operativo, no sólo un núcleo. Esta afirmación no significa tanto como solía, sin embargo, dado que la noción misma de un kernel es bastante arbitraria. En un contexto de UNIX, significa que los usuarios no pueden acceder a ciertas bibliotecas y ejecutables después de que el arranque ha terminado. El kernel gestiona el hardware para las aplicaciones, a pesar de que hoy en día muchos sistemas operativos de tipo UNIX trasladan a nivel de usuario algunos hilos que se ocupan de administrar recursos para el kernel. Usted puede asumir con seguridad que cualquier cosa que los usuarios no puedan acceder durante el tiempo de ejecución forma parte del kernel. Esto no significa que los usuarios no pueden influir en el comportamiento del núcleo. Algunas utilidades pueden informar y gestionar la administración de memoria, por ejemplo, y están definitivamente en el ámbito del usuario. Estas utilidades se comunican a través de la API del sistema, que no forma parte del núcleo, aunque es claramente parte del sistema operativo. FreeBSD, por supuesto, incluye todas estas y muchas otras utilidades y aplicaciones que tienen que ver con las características de las redes y hardware.

Si comparas el contenido de una descarga completa del núcleo de Linux y una descarga de FreeBSD, ambas tendrían mucho en común. Ambas tienen pilas IP, rutinas de gestión de memoria, implementaciones del sistema de archivos, y así sucesivamente. La jerarquía del sistema de archivos tiene orígenes similares demostrables, y la mayoría de las aplicaciones de línea de comandos tienen nombres idénticos y semánticas similares. Las implementaciones reales tienen un aspecto un tanto diferente, por supuesto, pero aún así sería capaz de ver que ambos sistemas tienen orígenes conceptuales similares. Una diferencia importante de arquitectura reside en la manera de FreeBSD lee y escribe archivos en el llamado búfer de caché, el cual (en sentido estricto) ni siquiera existe como una entidad separada de la memoria virtual. Linux siempre ha administrado los tamaños de búfer de caché de forma automática, pero sus rutinas de gestión de memoria de trabajan diferente a las de FreeBSD.

El árbol de Ports y el sistemas de archivos:
FreeBSD funciona inmediatamente después de haber sido instalado. Funciona porque un sistema FreeBSD instala un sistema funcionando mediante el instalador de FreeBSD, también conocido como sysinstall, y utiliza un sistema de gestión de paquetes que tiene claros orígenes en UNIX. Pero FreeBSD va mucho más allá de eso: La gestión de paquetes ha sido completamente racionalizada, los paquetes binarios y fuentes no están sujetos a los caprichos diarios del sistema de gestión de paquetes de Linux, una aflicción común a las distribuciones de Linux. FreeBSD integra la gestión de paquetes y las actualizaciones con el sistema de ports, lo que le permite ejecutar la descarga del código fuente y la compilación en un solo procedimiento. Se podría argumentar que Debian tiene ventajas similares, pero no hay que olvidar que Debian es un sistema operativo cuyo basamento en el kernel de Linux es meramente accidental. Hurd (se refiere al núcleo de GNU) y el núcleo de NetBSD funcionarían igual de bien, siempre que el proyecto Debian recordara actualizar los paquetes.

El sistema de ficheros de FreeBSD es también algo que recuerda su pasado BSD UNIX: es conocido como el FFS (fast file system) o UFS (Unix File system). Los usuarios son más propensos a interactuar con la parte FFS del sistema de archivos, que regula el acceso a archivos y directorios. La versión 2 de UFS, que fue liberada en el 2003, establece los límites del sistema de archivos y las estructuras de datos básicos que organizan el acceso a disco puro (raw disk). UFS y FFS están también disponibles en NetBSD y OpenBSD. Los sistemas de archivos con Journaling más conocidos de Linux, Reiser File System (Reiser FS) y Journaling File System (JFS), no están disponibles en FreeBSD, sobre todo por razones de seguridad. UFS tiene la ventaja adicional de la estabilidad y (ahora) la escalabilidad debido a que su comportamiento y rendimientos están basados en mas de dos décadas de investigaciones.

Seguridad y compatibilidad:
Otros beneficios que puede influir en su elección para tomar a FreeBSD más en serio. Aunque no está en la misma liga que OpenBSD en materia de seguridad a nivel de código, FreeBSD viene con un formidable despliegue de mecanismos de seguridad que funcionan out-of-the-box. Dado que en FreeBSD, es posible agregar controles de acceso de ajuste fino y a políticas de seguridad que tienen su origen en el proyecto financiado por DARPA TrustedBSD. FreeBSD soporta módulos de listas de control de acceso (ACL) y de control de acceso obligatorio (MAC). Este último es, por supuesto, accesible sólo a los administradores de sistemas, pero permite a las pequeñas empresas desplegar redes con medidas de seguridad finamente ajustadas y aplicadas a los subconjuntos del sistema de contacto con el mundo exterior. UFS V2 tiene un excelente soporte de ACL a través de atributos extendidos, si ud requiere ACLs en UFS V1 deberá configurarla por separado.
Si ud se ha introducido en los misterios de Linux, probablemente le preocupe tener aplicaciones disponibles para, por ejemplo, SuSE Linux y Mac OS X, pero no necesita una fuente independiente de binarios para FreeBSD. FreeBSD es capaz de ejecutar un módulo de compatibilidad binaria con Linux, que debe habilitar en el momento de instalación o desde la línea de comandos. Para esto requerirá también las librerías de tiempo de ejecución de Linux , pero estas se pueden añadir desde la colección de Ports.
Por supuesto, FreeBSD ejecuta todos los entornos de escritorio basados en el sistema X Windows, tales como el escritorio KDE y el escritorio de GNU Network Object Model Environment (GNOME). FreeBSD solía ser la versión de elección de usuario para escritorios de UNIX hasta llegó OS X (basado en FreeBSD). Todavía ofrece a los usuarios de UNIX que operan bajo presupuestos limitados una muy buena oferta y no requiere licencias adicionales cuando se configura como servidor o como cliente.


BSD en el Mac:
BSD en la arquitectura Mac es algo ya viejo. UNIX ha estado funcionando en arquitecturas Mac durante más tiempo. Casi nadie recuerda en aquellos días, pero hubo una época en que una versión de AT & T UNIX corría en las máquinas de Apple Quadra. A finales de 1980, esta versión de UNIX era conocida como Apple UNIX, y que representaba la oferta de Apple para una parte del espacio de servidores UNIX. Apple UNIX nunca se adaptó a la nueva arquitectura PowerPC, pero corrió bastante bien en chips Motorola 68x00. Obviamente, el código era propietario, requiriendo por lo general un mínimo de inversión de cuatro cifras. Podríamos consolarnos con el hecho de que incluso una luminaria tan exaltada como Bill Joy  desestimó el Mac a mediados de la década de 1980 como una máquina de la que nadie en el mundo UNIX se preocupaba. Hum, así fue.

Cuando 386BSD llegó en 1991, Mac no estaba lejos de las mentes de algunas personas. Brad Grantham, Kesteloot Lawrence, y Caputo Chris lograron portar 386BSD a la arquitectura Mac. A finales de 1992, BSD UNIX había encontrado un nuevo hogar en un Mac II, a pesar de la ruptura simultánea de BSD, UNIX comenzaba a ser visto en su momento como una necesidad, más que una posibilidad: Los problemas legales en torno a AT & T y UC Berkeley hicieron la liberación de los proyectos BSD UNIX una necesidad tanto técnica como legal. Sigue siendo notable, sin embargo, que en una de las arquitecuras iniciales de Macintosh corrieran un Unix libre antes de que el chip de Intel tuviera un sabor BSD dedicado a el. 386BSD nunca tuvo la intención de hacer mucho excepto sugerir que UNIX debería ir en el chip de Intel. No funcionó muy bien la mas de las veces y en realidad nunca llegó a la versión 1.0.
En el verano de 1993, Allen Briggs y Finch Michael empezaron a fusionar NetBSD V0.8 y MacBSD para evitar la balcanización antes de que se convertiera en un problema grave. Después de todo, las guerras UNIX estaban frescas en la mente de todos, y NetBSD pareció un proyecto digno para tratar de incorporar tantas arquitecturas como fueran posibles bajo el manto de BSD. Para la época en que salió NetBSD V1.0, el proyecto NetBSD/mac68k estaba establecido firmemente, y desde entonces ha estado creciendo fuerte.
El proyecto NetBSD/macppc es de una cosecha mas reciente. El port para PowerPC se incluyó entre los ports de NetBSD en 1999, aunque todas las arquitecturas post-1995 estaban incluidas. Soporta todas las arquitecturas Mac desde PowerPC 604.
OpenBSD/macppc se basa en el código de NetBSD, a pesar de que le tomó un poco más de tiempo al projecto OpenBSD tener un port en pleno funcionamiento. Por razones obvias, el proyecto FreeBSD se mantuvo al margen, centrándose en cambio en el soporte de Intel y AMD, aunque el código de FreeBSD ha estado funcionando en arquitecturas Macintosh desde Darwin - fue liberado el núcleo de OSS de Mac OS X. Esto parece menos relevante en estos días, ya que Apple ha anunciado el soporte de la arquitectura Intel. Pero hay una considerable superposición entre FreeBSD y el desarrollo de Darwin, y varios desarrolladores de FreeBSD son empleados de Apple.

Derivados de FreeBSD:
Como la mayoría de sistemas operativos con una larga historia, FreeBSD ha producido una generosa descendencia. Es posible iniciar un sistema FreeBSD desde un CD sin tener que compilar y producir el CD. El trabajo ya está hecho con el bastante maduro sistema LiveCD FreeSBIE (Free System Burned in Economy), basado a su vez en FreeBSD . Si les parece riesgoso usar parte del disco duro y sobre escribir el Master Boot Record (MBR) , es un punto de partida perfecto para empezar a probar FreeBSD.
DragonFly BSD está basado en la edición de FreeBSD V4.x , pero no está pensado en absoluto para el usuario medio. La mención a sistemas de archivos en clusters seguros para redes - no es probablemente el tipo de problemas que buscan los usuarios novatos de Unix. DragonFly BSD fue fundada por el gurú de la memoria virtual residente de FreeBSD Matt Dillon y trata de implementar un enfoque completamente nuevo para el sistema de archivos seguro y la gestión de memoria.

Existe un proyecto además cuyo objetivo es humanizar el uso del sistema. Se llama PCBSD y tienen un sistema de instalación de aplicaciones llamado PBI que  convierte la tarea a veces ingrata de instalación de aplicaciones en FreeBSD en un asunto de simples clics. 

El problema de la documentación:
No es habitual hablar de la documentación de los sistemas operativos UNIX ya que dicha documentación tiende a ser tan ilegible, como intrínsecamente interesante y útil. La documentación de FreeBSD es una gran excepción a esta regla, ya que no prestan mucha atención al viejo estilo de las páginas del manual o copian el estilo de organización de la documentación de UNIX.
La documentación de FreeBSD está disponible como un libro conciso, en Internet y en papel, que cubre todos y cada uno de los aspectos del sistema en un estilo agradable y considerado. Esto no supone mucha familiaridad con los sistemas UNIX y, de hecho, ha sido utilizado provechosamente por los neófitos de UNIX. Enseña el milagro de una instalación sencilla de FreeBSD, pero también da una introducción clara a los porqués de la compilación del kernel de FreeBSD o al como asegurar una instalación de FreeBSD. Es interesante ver lo que omite la documentación - por ejemplo, Perl y Apache - y lo que incluye - como el demonio del sistema de servidores de nombre de Berkeley (BIND) y el gestor de almacenamiento Vinum, específico de FreeBSD. Vinum implementa la administración de discos virtuales y puede hacer frente a RAID 0, RAID 1 y RAID 5.

El sistema operativo del administrador:
Es posible describir el sistema operativo FreeBSD como un sistema operativo para administradores de red: Es rápido, con soporte de SMP, y bien integrado con un gran número de herramientas de redes. Sin embargo, FreeBSD es tan hábil y rápido ejecutándose en computadoras portátiles, o corriendo aplicaciones de oficina, y ejecutando clientes de correo y bases de datos. Sus rutinas de instalación son lo bastante simples para que un usuario avanzado de Microsoft ® Windows ® se sienta cómodo. También tiene mucho que ofrecer a los usuarios de Linux, simplemente debido a que gracias a su modo de compatibilidad binaria, las aplicaciones nativas para Linux se ejecutan sin cambios. FreeBSD es extremadamente escalable y ejecuta la mayoría de las aplicaciones escritas para versiones de Linux o BSD. Aun así no asuma que FreeBSD es la navaja suiza de los sistemas operativos libres: No es ni tan seguro como OpenBSD ni tan escalable como se concibe la futura versión de Open Solaris. Sin embargo, compite con cualquier sistema operativo - comercial o libre - para chips de Intel y, en muchos casos, proporciona una plataforma más estable y escalable que cualquiera de sus competidores más cercanos.

Recursos.