domingo, 3 de junio de 2012

FreeBSD, un mundo aparte

FreeBSD es una exhuberante bestia un tanto desconocida por los hispanos pero muy conocida en EEUU principalmente por su origen dado que se hizo en USA y procedente de BSD, el mejor sistema antes construido y desarrollado en la Universidad de Berkeley, California, la única universidad pública con un reconocimiento mundial a cualquier nivel.

BSD, elaborado en la década de los 80-90 nace en el seno de ésta universidad gracias a un permiso para "prestarles" el código fuente de UNIX para fines académicos otorgado por los Laboratorios Bell pertenecientes a la compañía AT&T y que, posteriormente todo acabará en un conflicto entre la empresa y la institución académica, siendo ésta la que gana la demanda.

El sistema BSD llegó hasta la versión 4.4 con dos versiones, una llamada BSD-Encumbered destinada para la graciosita empresita de AT&T favoreciédose del trabajo de los alumnos de la universidad y otra llamada 4.4 BSD-Lite de la cuál se basa FreeBSD y otros sistemas como OpenBSD y NetBSD, además de haber dejado un legado importante en implementaciones como el manejo de memoria virtual paginado por demanda, el control de trabajos, el Fast FileSystem y el protocolo TCP/IP (casi todas las implementaciones de TCP derivan de la de 4.4BSD-Lite) entre otras tal y como dice la Wikipedia.

Bueno, ante todo, decimos que FreeBSD está constituido por dos partes, una llamada kernel, y otra world. El kernel es el núcleo que interactuará con el hardware para poder ser usado en nuestra máquina de forma virtual (no física), y así usar programas como Firefox, LibreOffice... y la parte "world" traducido al español como "mundo" es la suma de aplicaciones del propio sistema haciendo que ambos, en conjunto, formen un sistema operativo.
A diferencia de BSD con Linux es que en Linux sin tener el ramal de software de GNU no es posible su funcionamiento, si acaso funcionará con GCC y Bash poco más...

Mencionamos que el sistema recién instalado, solo consume 14MB de memoria RAM en caso de ser 64 bits, y menos en un sistema de 32 bits, así como su comportamiento con entornos como KDE que solo llegan a consumir hasta ¡400MB de RAM! o Gnome con 200MB aproximadamente incluyendo los servicios para ambos escritorios y X.org junto con los drivers de NVIDIA en mi caso... osea es bastante potente y sabe economizar los recursos del PC usando un kernel genérico como si no.

Destacamos la versatilidad para obtener el código fuente y para mirarlo desde nuestro navegador Web favorito todo el código fuente de FreeBSD, los "ports" o colección de puertos de éste sistema así como la versión de 4.4BSD-Lite, todo muy accesible para cualquier persona, y no solo es fácil leerlo, sino también su descarga, si te encuentras ya sea en un "port" o en una carpeta del código fuente, puedes generar automáticamente un archivo comprimido para que lo descargues sin necesidad de estar descargando fichero por fichero. (Ésto en Debian por ejemplo me ha sido imposible, a pesar de tanta libertad que promueven no veo el enlace a su código fuente por ningún sitio).
Además de ofrecer sus propias páginas de manuales online o "man pages" en inglés para acceder desde cualquier lugar con conexión  así como su extenso y gran manual de la documentación llamado "Handbook" que también puede descargarse en múltiples formatos como .pdf, .html, .ps... para leerlo en nuestro samrtphone, PC, tablet...

No obstante, éste sistema tiene hasta cuatro formas para obtener software, sea de código abierto, libre o privativo. Una es haciendo uso de los paquetes binarios que son generados en formato .tbz y que pueden ser instalados mediante el comando pkg_add(1), otra forma es haciendo uso de la grandiosa y valiosa colección de puertos de éste sistema en la que contiene hasta 23814 programas a compilar (proceso para generar binarios) y posteriormente instalar desde el código fuente gracias a un conjunto de scripts y carpetas revisados que facilitan el proceso compilación e instalación, además de hacer uso de un menú en ncurses para facilitar qué opciones queremos que sean compiladas con el programa cuando es disponible. De igual forma disponemos de un gestor de paquetes llamado pbi_add(1) creado y desarrollado por PC-BSD, sistema que usa FreeBSD como base y modificado para ser usado para usuarios finales, en el que facilita la instalación de aplicaciones nuevas o más actualizadas que las oficiales que son obtenidas con pkg_add(1) facilitando así no tener que compilar para poder usar aplicaciones más recientes. Y por último tenemos a pkgsrc, un sistema de gestión de paquetes desarrollado y portado por NetBSD para su uso en sistemas como FreeBSD, Linux, OpenBSD... que permite instalar programas de forma binaria o mediante código fuente semejante a la colección de puertos.

Hay que destacar la posibilidad de hacer uso de aplicaciones o programas que están para Linux en FreeBSD haciendo uso de compatibilidad binaria, es decir, podemos usar emerge (sistema de gestión de paquetes de Gentoo), Opera o Firefox para Linux... sin necesidad de tener una partición o máquina virtual con Linux y todo ésto de forma nativa. Y En cuánto a "emular" puede hacerse uso de WINE para ejecutar aplicaciones de Windows en él.

Sin embargo, hay mucho trabajo por hacer dado que también muchos programadores sólo desempeñan o quieren desempeñarse en sistemas donde apunten los mercados como es el caso de Linux, Mac OS X, Windows... y por lo tanto, hay muchas personas que deben adaptar las opciones de compilación, generar parches y scripts para que esas aplicaciones o programas puedan ser usados en él por eso no vemos tantas aplicaciones, programas en su ramal de software... y es un poco lamentable...

No obstante y debemos entender que FreeBSD se diseñó con el propósito de servir, de ahí su lema "Power to Serve" que traducido al español es "El poder de servir" lo que hace referencia a un sistema para servidores y no para uso de escritorio, o usuarios finales. Teniendo pequeñas limitaciones en el sistema gráfico como por ejemplo la no existencia de drivers o controladores privativos por parte de AMD Graphics, y que sólo pueden ser usados los libres, por otra parte en la red solo habiendo un único gestor de redes y conexiones desarrollado y portado por el sistema operativo PCBSD para FreeBSD, aunque es entendible en parte de que al ser un sistema elaborado para servidores no haga uso de este tipo de utilidades porque un sevidor siempre está conectado y prioritariamente de forma cableada, o por la parte técnica como no hacer posible la suspensión de muchos ordenadores por no tener el ACPI bien pulido.

De igual forma, están disponibles los drivers privativos por parte de NVIDIA y poco a poco se está solventando el problema del ACPI gracias en parte a iXsystems. Parece increíble, que, aunque no fuese un sistema operativo para escritorio, o para trabajar de forma diaria con programas como Firefox, LibreOffice, Pidgin... porque su objetivo sea para servidores, se está haciendo una labor tremenda para brindarle y otorgarle esta capacidad.

Por otra parte, podemos destacar un método un tanto particular y exclusivo para servidores, o para hacer pruebas llamado jails o jaulas. Ésta implementación consiste en "crear" y hacer funcionar un "clon" del sistema en nuestro propio sistema de forma nativa, es decir, no hacemos para nada uso de virtualización pudiendo así ahorrar en recursos físicos y virtuales además de poderlos gestionar de una forma más sencilla y en tan solo una ventana de terminal. (ésto es un poco en parte lo que intenta hacer Fedora con VirtSandBox, no sé si lo vieron de aquí y lo decidieron "copiar").
Las jails, aparte de ahorrar recursos y hardware, proveen un "clon" de tu sistema bastante seguro siguiendo y pasando por diferentes niveles de seguridad como no poder hacer uso de determinados componentes físicos, acceder al sistema base principal... y no solo eso, si no que éstas se dividen para hacer un uso específico, existen las jaulas, para solo ejecutar determinados servicios como Apache, MySQL... o clones enteros de FreeBSD como antes hemos dicho aumentando la versatibilidad de ésta implementación.
También son usadas para ver como juegan atacantes o "hackers negros" atraídos por honeypots que pueden ser instalados en ellas, y en caso de ser atacados claro, observar qué hacen sin dañar ninguna parte de nuestro sistema exceptuando la jaula. PCBSD hace uso de ellas para mantener su sistema base intacto y poder instalar y posteriormente ejecutar programas dentro de ellas como Stellarium, Kmess, GIMP...

FreeBSD así como los sistemas derivados de BSD como NetBSD, OpenBSD, FreeNAS, pfSense son distribuídos todos bajo licencia BSD dando como resultado mucha más libertad que la licencia GPL que va siendo más restrictiva de versión a versión. Ésta licencia permite entre muchas cosas facilitar la libertad tanto del autor del programa/software así como el de las empresas evitando las restricciones de la licencia GPL, como por ejemplo poder modificar y redistribuir el software como libre o no libre e incorporarlo en proyectos privativos o sistemas no libres como hace Mac OS X. Gracias a ésto, FreeBSD puede incorporar software no libre, o de licencias específicas como la CDDL, e incorporar software licenciado en cualquier licencia de código abierto en su sistema, como es el caso del tan famoso, querido y deseado por muchos sistema de ficheros ZFS desarrollado por la vieja Sun, ahora Oracle, en FreeBSD pudiéndose instalar desde PCBSD u otros proyectos como mfsBSD...

No obstante, el sistema puede aprovecharse de la incorporación o la portabilidad de programas de otros sistemas BSD como OpenBSD y NetBSD pudiendo así, usarse software como el simple y seguro cortafuegos de OpenBSD pf(4), IPSEC... (OpenBSD es un sistema ultra seguro, con seguridad proactiva que lo caracterizan por ser el sistema libre más seguro en el mundo).

Asimismo, hay que nombrar a la incorporación del compilador clang/LLVM en el sistema para sustuir a la vieja versión que trae por defecto (gcc (GCC) 4.2.1 20070831 patched [FreeBSD]) porque los nuevos compiladores GCC están licenciados bajo GPLv3 y es una licencia horrible tanto para los autores como para las empresas, por ello, se hará provecho de este compilador que al parecer también trae y rinde bastante bien según varios benchmarks o testeos, que se han hecho en Phoronix y por parte de usuarios particulares que reportan sus estadísticas que podemos encontrar en FreeBSD Forum... Además, si usas una tarjeta gráfica NVIDIA con núcleos CUDA, podrías aprovechar en un futuro dichos núcleos para agilizar la compilación con clang/LLVM dado que NVIDIA está invirtiendo en ello.

Por otro lado,una cosa que me llama la atención es que en FreeBSD o los sistemas Net/Open BSD no son pagados por empresas como sucede en Linux que el 75% del desarrollo del núcleo es pagado por ellas como nos comenta Computer Weekly en su noticia "Linux Foundation: 75% of kernel development done by paid developers". Sino que él se nutre gracias sobretodo mucho voluntariado, y a empresas como iXsystems, Google, root labs, McAffe y las que donen o quieran donar así como particulares que pueden verse listadas en las donaciones de la "FreeBSD Foundation".

¿y tú?, ¿qué opinas?, ¿te atreverías a probarlo?

Referencias:
Artículo original en Fusion is Freedom publicado por netSys para y por el mundo

6 comentarios:

  1. Es un sistema impresionante, nunca terminas de aprender tantas y tantas cosas que te ofrece. Tengo 8 años administrando servers bsd y puedo decir que ha sido el mejor sistema que me ha dejado grandes satisfacciones como administrador de sistemas operativos Linux/BSD

    ResponderEliminar
  2. Linux 32 bit KDE: 250 de ram (Fedora 16)
    Linux 64 bit KDE: 340 de ram (Fedora 16)
    Linux 32 bit gnome 2.28: 121 de ram (Scientific Linux 6.2 kernel 3.4.5)
    Router-Modem-ADSL: 3MB de ram, kernel 2.6.21, sistema Fedora 6, marca, Amper.

    Sin comentarios, BSD es muy lindo, calidad, etc, pero Linux es un sistema mas avanzado, escalable, con un toma y daca enorme, contribuciones desde hace años de multiples empresas, etc. FreeBSD va a terminar muriendo, o bien siendo solo para algunos pocos servidores.

    No comparto lo de "mejor".... pero bueno, son gustos.

    ResponderEliminar
  3. Yo mismo lo he usado en mi portátil, no en servers(de momento), y ahora tengo montado un PC para trastear con el kernel y demás...

    Por otra parte, cabe añadir la gran seguridad que tiene FreeBSD (por no hablar de OpenBSD, aunque ese es el objetivo de ese proyecto), básicamente es uno de los sistemas operativos más seguros del mundo...

    En fin, BSD, para mí, lo mejor. (Cuando sea capaz, me gustaría contribuir al proyecto como programador).

    Saludos a FreeBSD Spain,
    Un usuario español

    ResponderEliminar
  4. Me interesa el tema de la compatibilidad binaria con Linux:
    tendra el mismo rendimiento sobre BSD que sobre Linux una aplicacion escrita para Linux?
    Saludos...

    ResponderEliminar
    Respuestas
    1. Hola!

      Según el Handbook, menciona que hay aplicaciones que obtienen mayor rendimiento que en el propio sistema, pero creo que eso era cuando usaba Linuxulator con el kernel 2.4 emulado, porque tenía las syscalls completas, pero ahora, hay muchas que no han sido empezadas, por tanto, mejor que optes por un Linux.

      Saludos!

      Eliminar
  5. He trabajado con servidores Windows y Linux, y había escuchado del freeBSD, pero hasta hoy me he dado un tiempo para averiguar de que se trata. Hace mucho tiempo ya he programado en c/c++ y me gustaría usar mis conocimientos para poder aportar un granito de arena al freeBSD y demostrar la potencia que puede tener. Si alguien me dice por donde comenzar, sería fenomenal.

    ResponderEliminar