在加拿大温哥华不列颠哥伦比亚大学(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。
At the FOSSY conference held at the University of British Columbia (UBC) in Vancouver, Canada, Timothy Sample delivered a talk on bootstrappable builds in the "Toolchains and Other Development Tools" track 1. He explained how to construct the entire modern Linux user space from a minimal seed program to ensure complete traceability of code origins and prevent trust attacks similar to those described by Ken Thompson 1. Highlighting existing solutions, Sample noted that the initial bootstrap seed for GNU Guix was a 250MB statically linked blob, which has now been reduced to approximately 256 bytes using the hex0 program 1. Additionally, the live-bootstrap project has demonstrated a 182-step bootstrap process to build a foundational Linux system 1.
Sample also introduced Germ (Germ Lisp), a new tool he is developing to simplify the bootstrap chain and replace the existing Mes approach 1. Germ is a roughly 2.25KB binary program capable of running almost-Scheme, implementing Guile Scheme (effectively R7RS Scheme) with a complete syntax-case macro system while removing unnecessary features like floating-point numbers 1. Despite its potential, Germ currently faces performance and portability challenges compared to Mes 1. Specifically, Mes takes about 100 seconds to compile itself on Sample's desktop, or around 60 seconds with an experimental bytecode compiler, whereas Germ takes about 140 to 150 seconds to compile Mes 1. Furthermore, Germ currently only supports the x86_64 architecture, while Mes supports Arm and RISC-V 1. In a related note on bootstrapping other languages, Sample mentioned that Rust's bootstrap currently starts with the C++ mrustc to build Rust 1.54 or 1.56, while the modern Rust version is 1.97 1.
评论
还没有评论,欢迎留下第一条。