En el contexto del Software Libre, Blob binario (en inglés Binary blob) es un término peyorativo para un objeto cargado en el núcleo de un sistema operativo de código abierto o libre, sin tener su respectivo código fuente disponible.
Cuando los fabricantes de hardware proveen una documentación técnica completa de sus productos, los desarrolladores de sistemas operativos son capaces de escribir controladores para tales dispositivos e incluirlos en los núcleos de sus sistemas operativos. Sin embargo algunos proveedores de hardware tales como Nvidia no proveen la documentación técnica necesaria para desarrollar tales controladores, en cambio los mismos proporcionan los controladores ya compilados (blobs binarios); esta práctica es más común en controladores para placas aceleradoras de video, dispositivos de redes y controladores de disco RAID.
Cuando los desarrolladores no tienen acceso tanto a la documentación ni al código de los controladores de algún dispositivo, algunos proyectos de sistemas operativos, incluyendo NetBSD, FreeBSD, DragonFly BSD, y algunas distribuciones GNU con Linux, aceptan blobs binarios como una ruta rápida para implementar las funcionalidades faltantes o mejoradas que estos blobs binarios proveen.
Los proyectos OpenBSD y Liberty BSD tienen la notable política de no aceptar ningún blob binario dentro de su árbol de código, previniendo potenciales agujeros de seguridad indetectables e irreparables y a su vez demostrar la transparencia y libertad de su sistema.
Entre las distribuciones GNU/Linux, gNewSense, Trisquel, Parabola son las más conocidas por su activa oposición en contra de los blobs binarios. La fundación para el software libre esta activamente luchando en contra de los blobs binarios y recomienda gNewSense.
Para hacer uso de los blobs binarios disponibles para otros sistemas operativos, algunos proyectos incluyen wrappers, los cuales permiten usar controladores escritos para otros sistemas operativos ajenos al mismo.
Hay un buen número de razones por la cual blobs binarios pueden causar problemas:
El firmware no es usualmente considerado un blob binario, sin embargo la Fundación para el Software Libre ha comenzado una campaña para la adopción de firmwares y BIOS abiertos por parte de los fabricantes.
Prácticamente todo el mundo utiliza sus computadoras con firmware de inicialización privativos, llenos de blobs, esto representa desventajas, ya mencionadas más arriba, pero al tratarse de un software de bajo nivel (firmware), tiene más desventajas, ya que es el primer software que se inicializa al encender la computadora, también inicializa todos los periféricos, un sistema operativo, y a menudo se le insertan puertas traseras a propósito o contiene errores involuntarios, que pueden ser explotados por los mismos fabricantes, fabricantes terceros, o algunos "hackers malintencionados" (no confundir con palabra "hacker"(persona que ama programar o/y modificar programas), ya que a menudo en los medios de comunicación llaman a los "piratas" o "hackers malintencionados" como simplemente "hackers"). Los fabricantes responsables de programar software de inicialización, a menudo dejan de dar soporte muy rápido (sacar actualización o/y introducir, o/y mejorar características). Todos estos fabricantes se niegan a dar código fuente de sus programas, por lo tanto a cualquier usuario le resulta "prácticamente" imposible: corregir errores, revisar vulnerabilidades, revisar calidad de código fuente, reducir o incrementar tamaño del software (este último es importante cuando se quiera sustituir chip SPI flash (el que contiene el firmware de inicialización con todas sus regiones) por uno de mayor tamaño (ej.:16MiB), y escribir ceros para rellenar el espacio, y posteriormente flashear el ROM compilado)...Esto último, en un futuro no lejano (y en versiones estables), podría dar la implementación de ejecutar un sistema operativo entero (ej.:GNU con Linux) desde chip SPI. Solo las personas especializadas y las más talentosas podrían pensar en practicar ingeniería inversa a un software de inicialización, probablemente perdiendo mucho tiempo, ya que aportarían poco, dado la cantidad inmensa de hardware que existe en el mundo de segunda mano y nuevo, probablemente la mejora seria solo para un equipo específico.
Aunque Google (criticado por el espionaje tan masivo y por colaboración con NSA) tiene muy buenos proyectos que dan mucha libertad a los usuarios, y uno de sus proyectos es Coreboot, que viene ya pre-instalado en (todos, algunos o muchos) sus Chromebooks. Si bien, da mucha libertad a sus usuarios, pero ninguno de sus equipos puede ser certificado por Free Software Foundation con su certificación oficial "respects your freedom". Como se puede observar, la lista de hardware que cumple con la certificación, es extremadamente reducida. Coreboot y los Chromebooks no cumplen con la certificación, ya sus sistema operativo, "núcleo" Linux y firmware de inicialización, siguen conteniendo algunos blobs binarios. Los Chromebooks suelen llevar hardware que necesita blobs difícil de reemplazar, como por ejemplo los chips Wifi (en algunos o todos Chromebooks vienen soldados o con conexiones propietarias), muy problemáticos, ya que solo tarjetas Atheros (no todas, ni muy modernas) funcionan sin blobs binarios, y son todo un deseo para el que quiere ejecutar cualquiera de los sistemas operativos que no proporcionen software privativo (software no libre que priva a sus usuarios de sus libertades). En computadoras portátiles son fácilmente sustituibles estas tarjetas wifi, ya que se conectan a un puerto "MiniPCI Express" (PCI_Express), universal en los ordenadores portátiles modernos, pero si se trata de una laptop nueva, probablemente se anule la garantía al haber accedido al interior del equipo. Estas tarjetas son muy fáciles de encontrar en mercados de segunda mano, y suelen ser muy baratas.
Otro problema de los Chromebooks, un problema que para algunas personas no se considera como tal, es el chip gráfico (encargado de mostrar la imagen, gráficos en la pantalla, de aceleración 2d y 3d), el fabricante se niega a dar código fuente o alguna documentación sobre el funcionamiento de su hardware. Por lo tanto, aunque existe un proyecto que practica ingeniería inversa al software de este chip gráfico, el driver de código abierto no consigue aceleración 3d. Los únicos chips gráficos que no requieren ejecutar software privativo (firmwares privativos) para funcionar correctamente, son chips gráficos de Intel (anteriores a Skylake) y Nvidia (anteriores a Maxwell 2g(segunda generación de Maxwell))(Los chips gráficos "Kepler", de Nvidia, funcionan maravillosamente con drivers "Nouveau" (un gran trabajo de unas personas ingeniosas) y estos chips gráficos (Kepler) pueden ser re-clockeados ("reclock" *ver nota)(No confundir con overclock, downclock, underclock...), aunque solo se hace manualmente. Es genial pensar en chips gráficos de la marca AMD, pero sería un error, aunque algunos de sus chips gráficos pueden ejecutar sus drivers open-source con un rendimiento muy considerable, sin embargo todos los chips gráficos ATI/AMD necesitan software privativo para funcionar, un blob de datos necesita ser ejecutado, sin este blob el cualquier chip gráfico ATI/AMD se vuelve prácticamente inusable. Si alguien lo pone en duda, puede comprobarlo corriendo un sistema operativo compuesto solo por software libre, o ejecutando un kernel sin dicho blob. Por lo tanto, si se desea utilizar sistema operativo GNU con Linux en un Chromebook, se recomienda usar un entorno de escritorio como LXDE o XFCE, porque no requieren aceleración 3d.
*-Reclock: poner el chip gráfico y memoria a sus relojes máximos "de fábrica" (nada de overclock) (se recomienda siempre la versión más reciente (pero estable) de "núcleo Linux"("núcleo de Linux": no existe tal cosa)), esto en drivers oficiales de Nvidia se hace automáticamente en el momento de requerir más potencia, como al momento de ejecutar un juego o un juego que requiera gráficos 3d. En el momento de poca o ninguna carga (un pstate de idle), los relojes vuelven al "pstate" más bajo. El reclock con driver Nouveau es capaz de elevar las frecuencias de reloj de memoria y core, tan bien como lo hace el de Nvidia (aunque manualmente), y obtener un rendimiento similar al blob de Nvidia sin ejecutar software privativo. Mucha gente se ha quejado del mal rendimiento de driver Nouveau (tirando la toalla y acabando por instalar software privativo de Nvidia), pero en el momento actual solo Kepler ofrece un reclock manual de core y memoria correctos, los demás chips gráficos de Nvidia, si ejecutan Nouveau, se quedan con un pstate el más bajo, o pstate de idle(reposo). Aunque Maxwell 1g (primera generación de Maxwell), se le ha logrado ya hacer reclock al core, pero sin memoria es de poca utilidad. Códigos de chips gráficos de Nvidia
Una gran ventaja de los Chromebooks, es su procesador, ARM, es muy popular en los dispositivos móviles y de bajo consumo, donde la autonomía es importante, y por su TDP, con lo cual se calientan muy poco y no precisan de disipadores grandes ni de ventiladores. Procesadores de arquitectura ARM poseen importante ventaja al no llevar Microcódigo (Microcode updates, muy bien conocidas en cuanto a Intel), en los Chromebook el sustituto es Circuito integrado. También cabe mencionar que los Chromebooks (todos, muchos o algunos) de fábrica llevan software libre en el EC (también conocido como "controlador empotrado" o "embebido", que principalmente se usa en ordenadores portátiles, y son los responsables de hacer con control y manejo de teclado (interno), apertura y cierre de la tapa, cualquier interruptor, leds indicadores, teclas de acceso rápido, botones, luces de asistencia (si están disponibles)...). El principal problema de Microcodigo de procesadores Intel, es que nadie puede saber (Excepto Intel) que hace además de lo que se supone que hace, el usuario está abandonado ante los pies de Intel (AMD tiene sistemas homólogos). El problema viene con el gran riesgo en cuanto a privacidad y seguridad con sistemas de administración remota de Intel, bien conocidos como Intel Active Management Technology (para ver las posibilidades oficiales que tiene, ver párrafo "Features"). También, a partir de las series "i" de Intel (a partir de 2010), junto al mismo procesador y chip gráfico, en el mismo cilicio integra otro procesador (considerado uno de los rootkits más sofisticados, que deja en ridículo cualquier rootkit conocido en cuanto al software malévolo).
En internet se puede encontrar muchísima más información sobre el procesador secundario de Intel, basta poner palabras clave en su buscador favorito como: "Intel ME backdoor", "Intel ME", "Intel ME rootkit", "Intel ME privacy", "Intel ME surveillance", "Intel vpro backdoor", "Intel ME Security"...
Para solucionar la mayoría de los problemas expuestos arriba, existe un firmware de inicialización muy estricto, que no permite integración de ningún tipo de blob binario, se llama Libreboot, este proyecto está compuesto por Software Libre (no confundir con la iniciativa Open-Source), y forma parte del Proyecto GNU desde 14 de mayo de 2014.
Se sabe que Libreboot procede de Coreboot, y se considera distribución de Coreboot. Libreboot es la versión estable de Coreboot.
Libreboot es un reemplazo de BIOS, firmwares de inicialización propietarios, EFI o UEFI privativos. Libreboot es un firmware de inicialización que inicializa el hardware, carga el bootloader para seleccionar y cargar un sistema operativo. También es una BIOS de código abierto, pero no se identifica con el movimiento Open-Source del Coreboot. Se exige mencionar que Libreboot es software libre. La primera computadora en soportar este software es una Thinkpad x60 (por aquel entonces marca registrada de IBM), por desgracia nunca fue distribuida oficialmente con un software de inicialización libre.
Al nacer Libreboot, este no tenía ningún nombre, y principalmente se le llama como "versión deblobeada de Coreboot". Una de las intenciones de Libreboot es hacerlo más fácil de usar, de obtener y compilar que Coreboot. Asegurándose de que absolutamente cualquier usuario obtenga la libertad deseada.
Libreboot tiene unas ventajas enormes frente a una BIOS propietaria: