Linux 内核将通过 eBPF 支持 $ORIGIN 动态解释器路径
来源:fzakaria.com — 2026-07-20
📋 概述
Farid Zakaria 在 TacoSprint 2026 期间发起了在 Linux 内核中支持 $ORIGIN 的提案。最初只想让 PT_INTERP 和 shebang 支持 $ORIGIN 来实现 Nix 的可重定位二进制,最终在 VFS 维护者 Christian Brauner 的帮助下发展为一个更优雅的方案:通过 eBPF 程序在 binfmt_misc 中实现可编程的解释器选择。
🔑 核心要点
- 最初提案:让 Linux 内核的PT_INTERP 和 shebang支持 $ORIGIN 动态路径
- VFS 维护者 Christian Brauner 提出用 eBPF 实现可编程解释器选择的更通用方案
- 最终方案:eBPF 程序作为struct_ops挂载到 binfmt_misc,在内核中验证并 JIT 编译执行
- 用简单的 eBPF 程序即可实现 $ORIGIN 支持:检查 ELF 魔数,然后用 bpf_path_d_path 构造路径
- 受益者不仅是 Nix:Buck、Bazel 等构建系统都需要非固定的解释器路径
💡 金句
我只是想加个 $ORIGIN 支持,结果得到了一个可以编程选择 ELF 解释器的内核机制。Christian 甚至在度假时给出了第一版草案——这就是开源协作的魔力。
👍 0👎 0
← 返回 Lobsters 首页