Folia
← 返回头版

Bootstrappable Builds: How and Why

在加拿大温哥华不列颠哥伦比亚大学(UBC)举办的 FOSSY 会议上,Timothy Sample 在“Toolchains and Other Development Tools”轨道发表了关于可引导构建(bootstrappable builds)的演讲 1。他阐述了如何从极小的种子程序逐步构建整个现代 Linux 用户空间,以确保代码来源完全可追溯,并防止类似 Ken Thompson 描述的信任攻击 1。

演讲介绍了 GNU Guix 和 live-bootstrap 项目的现有方案 1。GNU Guix 最初的引导种子是一个 250MB 的静态链接 blob,现已缩小至约 256 字节的 hex0 程序 1。live-bootstrap 项目展示了 182 步引导过程,以构建基础 Linux 系统 1。此外,Sample 提及 Rust 的引导目前从 C++ 的 mrustc 开始构建 Rust 1.54 或 1.56,而现代 Rust 版本为 1.97 1。

Timothy Sample 重点展示了其正在开发的新工具 Germ(Germ Lisp),旨在简化引导链并替代现有的 Mes 方案 1。Germ 是一个大小约 2.25KB 的二进制程序,可以运行 almost-Scheme 1。它实现了 Guile Scheme(有效为 R7RS Scheme),去除了浮点数等不需要的特性,并包含完整的 syntax-case 宏系统 1。目前 Germ 仅支持 x86_64 架构,编译 Mes 约需 140 至 150 秒 1。作为对比,Mes 支持 Arm 和 RISC-V 架构,在其桌面上编译自身约需 100 秒,使用实验性字节码编译器约需 60 秒 1。


评论