Lobsters | 📄 原文链接 | 2026-07-22 collected

Linux 内核将支持 $ORIGIN(通过 eBPF 实现)

source: fzakaria.com — 2026-07-20

概述

作者在 Nix 生态中推动可重定位二进制文件的方案:让 Linux 内核在 PT_INTERP 和 shebang 中支持 $ORIGIN。最初提议在 VFS 子系统中直接添加支持,但 VFS 维护者 Christian Brauner 提出了更优雅的方案——通过 eBPF 和 binfmt_misc 实现可编程的解释器选择。最终方案允许用 BPF 程序动态决定可执行文件的解释器路径,不仅支持 $ORIGIN,还能完全替代传统的 QEMU binfmt_misc 注册脚本,实现任意复杂的解释器选择逻辑。

核心要点

  • 通过 eBPF + binfmt_misc 实现可编程的解释器选择,替代了传统的关键词匹配方式。
  • 一个简单的 BPF 程序即可实现 $ORIGIN 支持:从二进制路径推导出 loader 位置,动态设置 PT_INTERP。
  • VFS 维护者 Christian Brauner 在度假期间给出了 初版补丁草案,展现了内核社区对此方案的认可。
  • 该方案还解决了传统 binfmt_misc 的 进程身份透明性问题——解释器会成为进程本身,影响 argv[0] 和 /proc/。

金句

Since we can now programmatically select our interpreter based on anything in the file, we can do quite a lot.
back to Lobsters