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.