Oasis Linux
(git.sr.ht)- oasis es un sistema Linux pequeño que enlaza estáticamente todo el software del sistema base, con una orientación más cercana a BSD que a una distribución Linux familiar
- Todos los paquetes se construyen con samurai y generan manifiestos con scripts en Lua, por lo que el costo inicial de empaquetado es alto, pero ofrece builds predecibles y reproducibles, además de builds incrementales que cruzan los límites entre paquetes
- Usa BearSSL como biblioteca de TLS y criptografía del sistema, y emplea BearSSL en todo el sistema mediante el soporte nativo de BearSSL en libcurl y libtls-bearssl
- oasis no tiene gestor de paquetes: en su lugar, se configura con especificaciones que definen qué archivos de qué paquetes incluir, y el sistema de build registra el árbol resultante del sistema de archivos en un repositorio git para fusionarlo en
/o traerlo desde otra máquina - Mantener
/etclo bastante simple como para poder entenderlo por completo, y compilar con el compilador cproc, mucho más pequeño y más estricto con el estándar ISO C que gcc o clang, son objetivos principales
Resumen de oasis
- oasis es un sistema Linux pequeño, bastante distinto de otros sistemas operativos basados en Linux más conocidos, y con una orientación más cercana a BSD
- Todo el software del sistema base está enlazado estáticamente, e incluso incluye el servidor de pantalla velox y el navegador web netsurf
- Usa mecanismos más simples que el enlazado dinámico, elimina los problemas de actualización de bibliotecas y crea binarios completamente autocontenidos que se pueden copiar fácilmente a otros sistemas
Build y bootstrap
- Todos los paquetes se construyen con samurai, y los manifiestos de build se generan con scripts en Lua
- Este enfoque implica un costo inicial de empaquetado considerable, pero un costo de mantenimiento bajo, tiempos de build casi óptimos, builds predecibles y reproducibles, menos dependencias en tiempo de build y builds incrementales que cruzan los límites entre paquetes
- Para el bootstrap basta con cualquier sistema POSIX que tenga git, lua, curl, una utilidad sha256, utilidades estándar de compresión y un compilador cruzado
x86_64-linux-musl - Esto también simplifica la compilación cruzada desde sistemas no Linux como macOS u OpenBSD
TLS, configuración de paquetes y expansión del sistema
- BearSSL se usa como biblioteca de TLS y criptografía del sistema
- BearSSL es muy pequeño y está muy bien escrito, pero no ha sido adoptado ampliamente
- Gracias al soporte nativo de BearSSL en libcurl y a libtls-bearssl, una implementación alternativa de libtls basada en BearSSL, oasis usa BearSSL en todo el sistema
- Solo algunos paquetes opcionales siguen necesitando LibreSSL
- oasis no tiene gestor de paquetes
- En su lugar, se configura mediante especificaciones que definen qué archivos de qué paquetes incluir en el sistema, y el sistema de build registra el árbol resultante del sistema de archivos en un repositorio git
- Este resultado puede fusionarse en
/o traerse desde otra máquina - Aunque busca ofrecer un sistema completo, como hay mucho software libre que no encaja bien con sus objetivos, en vez de crear y mantener un repositorio nuevo de miles de paquetes eligió integrarse con pkgsrc y nix
- Esto permite mantener el sistema base pequeño y enfocado, mientras se amplía el sistema con el software necesario
Configuración y enfoque de implementación en C
- Una de las directrices de oasis es mantener el directorio
/etclo bastante simple como para que el administrador del sistema pueda entenderlo completo y personalizarlo adecuadamente - El archivo más complejo en la configuración predeterminada es el script de inicialización del sistema
/etc/rc.init, y tiene apenas 16 líneas - Un objetivo importante de oasis es compilarse con el compilador de C cproc, mucho más estricto con el estándar ISO C que gcc o clang y varios órdenes de magnitud más pequeño
- Este trabajo aún está en progreso, pero todos los paquetes principales y la mayoría de los demás paquetes ya se compilan correctamente con cproc
Principios
- La complejidad del software debe medirse incluyendo todas las dependencias transitivas
- Los ejecutables deben estar enlazados estáticamente
- Los componentes de software deben permitir una personalización o modificación sencilla
- El código fuente de los paquetes debe referenciarse mediante URL o submódulos de git, y no incluirse directamente
/etcdebe ser lo bastante simple como para poder entenderlo por completo- Los parches deben estar bien organizados y bien explicados, y siempre deben aplicarse limpiamente
Instalación e imagen de QEMU
- La guía de instalación está en la wiki
- oasis es un proyecto ambicioso y todavía queda mucho por hacer
- El usuario debe sentirse cómodo compilando su propio kernel y ajustando el sistema cuando surjan problemas
- Se ofrece una imagen de QEMU para probarlo sin instalarlo directamente
- Dentro del archivo están el sistema de archivos raíz, el kernel de Linux y un script para ejecutar qemu
- También se incluye un
README.mdcon información de uso:./runlo ejecuta en modo gráfico y./run -sen modo serial
Selección del software incluido
- oasis usa implementaciones de bibliotecas y herramientas más pequeñas y simples siempre que es posible
- Las elecciones principales son las siguientes
- musl en lugar de glibc
- sbase en lugar de coreutils
- ubase en lugar de util-linux
- pigz en lugar de gzip
- mandoc en lugar de man-db
- bearssl en lugar de openssl
- oksh en lugar de bash
- sdhcp en lugar de dhclient o dhcpcd
- vis en lugar de vim o emacs
- byacc en lugar de bison
- perp y sinit en lugar de sysvinit o systemd
- netsurf en lugar de chromium o firefox
- samurai en lugar de ninja
- velox en lugar de Xorg
- netbsd-curses en lugar de ncurses
- Estos paquetes están agrupados en sets lógicos
- La lista completa puede consultarse en el directorio pkg
- Aunque no esté el software que buscas, es muy probable que puedas instalarlo a través de pkgsrc o nix
Canales de contacto
- La lista de correo está en ~mcf/oasis@lists.sr.ht
- El canal de IRC es
#oasisen libera.chat - Puede usarse para preguntas, parches y discusión general
1 comentarios
Opiniones en Lobste.rs
Impresiona que esté completamente enlazado de forma estática
no enlaces bash cuando estás enojado ♪
bashRecuerdo haber visto este proyecto por ahí de 2020, antes de que Wayland terminara de asentarse
Ya entonces me pareció bastante impresionante que estuvieran haciendo una distribución completamente enlazada de forma estática que incluso incluía su propio servidor de pantalla, y es aún más genial que siga vivo
Aquí están las capturas de pantalla: https://github.com/oasislinux/oasis/wiki
Estaría bien que las pusieran en el README
Es bastante impresionante que sea completamente enlazado de forma estática
Casi todos mis proyectos también están enlazados estáticamente, aunque con excepciones en lo gráfico como el servidor X u OpenGL/Vulkan
También vale la pena echar un vistazo rápido a la lista de alternativas de bibliotecas/software más simples que propone Oasis
Aprendí muchísimo sobre Linux instalando Oasis en una laptop
Eso sí, hay que mentalizarse bien, y no es fácil, sobre todo al configurar pkgsrc para usar sway u otro escritorio Wayland
La versión suckless de coreutils tampoco es compatible con mucho software, así que hay que anticipar problemas
Lo que más me gustó fue que era muy fácil depurar y entender todo el espacio de usuario, y como enfoque para construir un sistema reproducible se siente mucho menos mágico que nix
BearSSL lleva mucho tiempo sin una versión nueva, pero de vez en cuando recibe commits, y el mes pasado hubo varios
Eso sí, todavía no soporta TLS 1.3, así que fue eliminado de curl 8.15 el año pasado, aunque TLS 1.2 sigue considerándose seguro
Del lado de curl también existía la preocupación de que, si había tan pocos commits recientes y correcciones de bugs, quizá no podía haber usuarios satisfechos, pero Thomas respondió: “Perdón por no haber logrado meter suficientes bugs en mi código. La próxima vez intentaré hacerlo más descuidado”
El README citado corresponde a una versión vieja, y en 0.6 se explica que BearSSL se considera software en nivel beta, que la mayoría de las funciones planeadas ya están implementadas y que usarlo en producción es bastante atrevido, pero no una locura total
En mi opinión, el estándar de Thomas Pornin para lo que llama “software de calidad beta” es más alto que lo que la mayoría consideraría listo para producción