Oasis – un pequeño sistema Linux enlazado estáticamente

Un sistema Linux minimalista llamado Oasis, construido en torno al enlazado estático y a alternativas más pequeñas para herramientas comunes, está despertando interés entre desarrolladores que quieren binarios diminutos, reproducibles y autocontenidos para usos como dispositivos embebidos, imágenes inmutables y depuración en entornos hostiles. Gran parte del debate se centra en las compensaciones entre enlazado estático y dinámico —simplicidad, portabilidad y menor infierno de dependencias frente a uso de memoria, mecanismos de actualización y soporte de complementos—, así como en musl frente a glibc en términos de tamaño, corrección y rendimiento. Los comentaristas también señalan desafíos en torno a los controladores de GPU, las bibliotecas TLS y la cultura de gestión de dependencias, y argumentan que las prácticas actuales intensivas en contenedores son en parte una respuesta a debilidades históricas en los ecosistemas de bibliotecas compartidas.

Objetivos del proyecto y decisiones de diseño

  • Oasis es un pequeño sistema Linux enlazado estáticamente que favorece implementaciones simples y minimalistas de herramientas comunes: musl en lugar de glibc, sbase/ubase en lugar de coreutils/util-linux, oksh en lugar de bash, mandoc en lugar de man-db, netbsd-curses en lugar de ncurses, Netsurf en lugar de navegadores pesados, y herramientas de init/build más pequeñas.
  • Se lo considera un sucesor espiritual de sta.li y de otros sistemas inspirados por “suckless”.

Casos de uso

  • Entre los usos sugeridos están las imágenes inmutables, los dispositivos embebidos y los nodos de Kubernetes, donde resultan atractivos los binarios totalmente autónomos y enlazados estáticamente.
  • Algunos lo ven ideal para desplegar herramientas en dispositivos Linux embebidos con pocos recursos o heterogéneos sin preocuparse por las versiones de bibliotecas locales.
  • Otros se preguntan qué ofrece frente a distribuciones más convencionales o al enlazado dinámico; para algunos, es “interesante pero poco claro” más allá de escenarios de nicho o embebidos.

Sistema de construcción y reproducibilidad

  • Oasis usa Samurai (una herramienta de construcción compatible con Ninja) y pone énfasis en compilaciones completas del sistema rápidas y reproducibles.
  • Un comentarista describió haber logrado construir Oasis con Bazel para obtener compilaciones del sistema operativo distribuidas, incrementales y reproducibles; esto dio lugar a una comparación más amplia entre Bazel y Nix.
  • Se elogia a Nix por sus compilaciones basadas en hashes y con direccionamiento por contenido, así como por el caché distribuido, pero se lo critica por la granularidad gruesa de las compilaciones y por un mayor sobrecoste por derivación dentro de los proyectos.

Debate sobre enlazado estático vs dinámico

  • A favor del enlazado estático:
    • Simplifica el despliegue y evita el “infierno de dependencias”; es bueno para binarios portables, contenedores y sistemas restringidos.
    • Con musl y LTO, el tamaño por binario puede seguir siendo pequeño; los enlazadores pueden eliminar código no utilizado.
    • Es aceptable reconstruir/revincular todo cuando se actualizan bibliotecas, especialmente con una compilación de árbol único.
  • A favor del enlazado dinámico:
    • Mejor compartición de RAM, parcheado de seguridad más fácil (actualizar una sola biblioteca compartida) y herramientas maduras.
    • El enlazado estático tiene peculiaridades: orden de constructores, desajustes de ABI/versiones y mayor huella total de memoria en algunas cargas de trabajo.
  • Varios señalan que las prácticas modernas de contenedores ya duplican imágenes completas del sistema operativo, por lo que el “bloat” del enlazado estático preocupa menos a algunos, aunque no a todos.

musl, BearSSL y bibliotecas alternativas

  • musl es elogiada por su pequeño tamaño, portabilidad, semántica más simple y facilidad para enlazado estático; los críticos citan errores antiguos de DNS, peor rendimiento de malloc y un comportamiento más peculiar frente a glibc.
  • La licencia importa: la licencia permisiva de musl simplifica el enlazado estático en comparación con la LGPL de glibc.
  • BearSSL es cuestionada porque se describe a sí misma como “beta” y carece de TLS 1.3; otros argumentan que los números de versión no señalan de forma fiable la preparación para producción y mencionan bibliotecas ampliamente usadas con versiones <1.0 en otros sitios.

Aspectos prácticos y limitaciones

  • Se informa que una antigua imagen de Oasis para QEMU ronda los 360 MB; los enlaces de las imágenes oficiales actuales estuvieron temporalmente caídos.
  • Los controladores de GPU se destacan como un gran problema sin resolver para un SO completamente estático: la mayoría de los diseños realistas siguen requiriendo componentes dinámicos o pilas de GPU basadas en IPC.
  • Netsurf es admirado por su minimalismo, pero sus enlaces de documentación parecen desactualizados; la cobertura de renderizado percibida es limitada.