oasis
oasis 是一个小型 Linux 系统。
它可能与您熟悉的其他基于 Linux 的操作系统有很大不同,更接近于 BSD。
它有许多独特的特性,使其与其他操作系统区分开来:
- 完全静态链接。
基础系统中的所有软件都是静态链接的,包括显示服务器(velox)和网页浏览器(netsurf)。与动态链接相比,这是一种更简单的机制,消除了升级库时的问题,并产生完全独立的二进制文件,可以轻松复制到其他系统。
- 快速构建且100% 可重现。
所有软件包都使用 samurai 构建,构建清单由 Lua 脚本 生成。这涉及相当大的前期打包成本,但维护成本最小,并提供了许多优势,包括接近最优的构建时间、可预测和可重现的构建、减少构建时依赖,以及跨软件包边界的增量构建。
- 最小引导依赖。
任何具有 git、lua、curl、sha256 工具、标准压缩工具和 x86_64-linux-musl
交叉编译器的 POSIX 系统都可以用于引导 oasis。这使得交叉编译变得非常简单,即使是在非 Linux 系统(如 macOS 或 OpenBSD)上也可以进行。
- BearSSL 是系统的 TLS 和加密库。
BearSSL 非常小巧且编写优秀,但未被广泛采用。通过使用 libcurl(现在已经原生支持 BearSSL)和 libtls-bearssl(基于 BearSSL 的另一种 libtls 实现),oasis 在整个系统中使用 BearSSL。只有 少数可选软件包 仍然需要 LibreSSL。
- 无包管理器。
相反,您可以配置一组 规范,指定从哪些软件包中包含哪些文件到您的系统中,然后构建系统将生成的文件系统树写入 git 仓库。这可以合并到 /
中,或从另一台机器拉取。
- 与操作系统无关的包系统良好集成。
尽管目标是提供一个完整的系统,但还有很多自由软件与我们的目标不太匹配。oasis 不试图构建和维护另一个包含数千个软件包的仓库,而是与 pkgsrc 和 nix 配合良好。这使得用您可能需要的软件轻松扩展系统变得容易,同时保持基础系统小巧专注。
-
极其简单的系统配置。 指导原则是"/etc"目录应该简单到系统管理员能够完全理解并适当定制。默认配置中最复杂的文件是系统初始化脚本"/etc/rc.init",仅有16行。
-
主要遵循ISO C标准。
oasis的一个主要目标是使用cproc构建,这是一个比gcc或clang更严格遵守ISO C标准的C编译器,体积也小得多。尽管这仍是一项进行中的工作,但所有核心包以及大多数其他包都已能成功用cproc构建。
原则
- 软件复杂度的衡量应包括所有传递依赖。
- 可执行文件应静态链接。
- 软件组件应易于定制和/或修改。
- 包的源码应通过URL或git子模块引用,而非直接包含。
- "/etc"应简单到可以被完全理解。
- 补丁应组织良好,有清晰的描述,并且总能干净地应用。
安装
安装指南可在wiki上找到。
但请记住,oasis是一个雄心勃勃的项目,还有很多工作要做。用户应该能够自如地构建自己的内核,并在出现问题时修补系统。如果遇到困难,我随时乐意提供帮助。
QEMU
如果你想在不自行安装的情况下尝试oasis,这里有一个可用的QEMU镜像。
压缩包中包含根文件系统、Linux内核和一个启动qemu的脚本。还有一个"README.md"文件,提供了使用说明。简而言之,使用"./run"以图形模式启动,使用"./run -s"以串行模式启动。
软件
oasis尽可能使用更小、更简单的库和工具实现:
- 用musl替代glibc
- 用sbase替代coreutils
- 用ubase替代util-linux
- 用pigz替代gzip
- 用mandoc替代man-db
- 用bearssl替代openssl
- 用oksh替代bash
- 用sdhcp替代dhclient或dhcpcd
- 用vis替代vim或emacs
- 用byacc替代bison
- 用perp和sinit替代sysvinit或systemd
- 用netsurf替代chromium或firefox
- 用samurai替代ninja
- 用velox替代Xorg
- 用netbsd-curses替代ncurses
这些包被分组为逻辑集合,完整列表可在pkg目录中找到。
如果你喜欢的软件不在列表中,请记住你很可能仍可以通过pkgsrc或nix安装它。
联系
有一个邮件列表位于[~mcf/oasis@lists.sr.ht](https://github.com/oasislinux/oasis/blob/master/mailto:~mcf/oasis@lists.sr.ht,以及一个IRC频道位于[libera.chat](https://github.com/oasislinux/oasis/blob/master/ircs://irc.libera.chat:6697的#oasis频道。欢迎使用这些平台提出问题、提交补丁或进行一般讨论。