公告

FujoOS公布日延期,以仓库发布为准

文档 兼容 FUJR 容器

FUJR 容器

ELF、PE、Mach-O 都是 CPU 的执行格式。FUJR(.run)不是——它是这个项目自己的打包容器,用来把程序、资源与权限声明装在一个文件里。

结构

内容
MAGIC容器魔数,用于快速识别与拒绝。
MANIFEST权限与能力声明:api.subsystems、文件系统名字空间、网络白名单。这是“打包即权限”的载体。
EMBED内嵌载荷。首行是 shebang 时按 .shell 处理。
DATA资源节,最多 8 项。模型卡(M31)就走这里。
FNV校验和。

工具

工具 用途
tools/fujopack.py打包成 .run
fujorun作为 initrd 的装载器,支持多模块
fujopack / fujorun Rust同一格式的 Rust 实现
这就是那 39 KB 的由来。 FUJR 容器此前有五处平行实现,合计约 39 KB 代码,改一处要记得改四处。它是 L0 单一真源要收拢的第一批目标之一——收拢之后,容器布局只声明一次。见 L0 一节。

为什么值得单独存在

因为“程序”和“程序被允许做什么”在这套设计里是同一件事的两面。把它做成容器而不是配置项,意味着权限声明会随程序一起分发、一起签名、一起被拒绝——而不是靠运行时读一个可能不存在的配置文件。

相关: .run 与 fujo-sandbox 的关系见 架构 · 进程与隔离;L0 收拢的细节见 语言 · L0 单一真源