# Mark Johnston 的 BSDCan 2025 旅行报告

* 原文：[BSDCan 2025 Trip Report – Mark Johnston](https://freebsdfoundation.org/blog/bsdcan-2025-trip-report-mark-johnston/)
* 2025 年 7 月 11 日
* 作者：Mark Johnston

FreeBSD 基金会赞助我前往渥太华参加 BSDCan 2025 会议及 FreeBSD 开发者峰会。如往常一样，开发者峰会在 6 月 11 日和 12 日举行，为期两天，随后在 13 日和 14 日举办正式会议。按照惯例，我从多伦多乘火车前往渥太华参加 BSDCan，这次带来了我的 ARM Morello 台式机，以便在 Brooks Davis 关于 CHERI 的演讲中使用，并演示将其支持回溯到 FreeBSD。Ed Maste 善意地帮我运送了设备，这让我的行程轻松许多；回程时，我不得不将其放在超大行李箱中随火车携带。我以前从未尝试过这样运输台式机，当我回家后发现它仍然可以正常启动时，我感到相当安心。

开发者峰会的第一天主要以演讲为主，中间安排了充足的休息时间，方便大家交流或进行一些副项目开发。会议期间，我通常会在休息时间和晚上在 90U 的黑客休息室处理一个到两个小项目，这次是针对内核调试的 GDB 脚本，灵感来自与我们尊敬的 pf 维护者 Kristof 的讨论。撰写本文时，我还未完成会议期间想要完成的工作，但很快会完成。

第一天早上的主要亮点是例行的核心小组动态，会中 FreeBSD 核心小组的成员汇报了各类议题。特别引起我注意的是关于在 FreeBSD 项目中使用基于 LLM（大型语言模型）的编程工具的草案政策。简单总结，该政策禁止将 LLM 生成的代码纳入项目，但允许在开发过程中以其他方式使用 LLM，例如帮助审查补丁、撰写提交信息或其他非显式许可的内容。该政策旨在避免将来源不明的代码“污染”FreeBSD 项目，众所周知，许多 LLM 模型训练数据中包含与 BSD 许可不兼容的代码，目前法律上尚缺乏明确先例表明将其输出纳入项目是绝对安全的。

表面上看，这似乎是合理的政策：它试图在保持项目许可完整性（对重要的 \*BSD 用户吸引力很大）与使用新工具辅助开发之间取得平衡。尽管近期 LLM 编程的热度略显夸张，我确实发现它们在某些工作类型中很有用\[\*]。在随后的讨论中，我对会议室中普遍持消极态度感到有些失望。然而，核心小组的做法公平公正，也与其他大型开源项目保持一致，我对未来几年开发者的动态很感兴趣。我的个人观点是——撇开许可问题——我们应鼓励资深开发者在愿意的情况下尽可能利用 LLM。长期从事 OSS 的开发者已经习惯于审查和修改非自己编写的代码，我认为这种怀疑精神足以对低质量 LLM 输出进行把关。

午餐后，Verisign 的 Rick Miller 发表了关于在核心互联网 DNS 基础设施中使用 FreeBSD 的深度防御策略的演讲。他讲解了操作系统多样性在提升安全性方面的作用，以及为什么 FreeBSD 是其中一个理想候选操作系统。作为此策略的一部分，Verisign 在其基础设施中同时使用 Linux 和 FreeBSD，并在不同操作系统上使用不同的应用框架，以进一步降低对单一技术栈的依赖。具体来说，虽然 Verisign 的应用在 Linux 上使用 DPDK，在 FreeBSD 上可以使用 Netmap 框架实现类似的底层网络硬件访问。Rick 还介绍了 Linux 与 FreeBSD 各自存在的内核安全漏洞，但我认为大多数 CVE 级别的内核漏洞高度依赖操作系统，尤其是内存安全漏洞。Verisign 对此策略的全面投入令人印象深刻，我希望未来能看到更多类似案例。

在 Rick 的演讲之后，我和其他 FreeBSD srcmgr（源代码管理）团队成员做了类似早晨核心小组动态的报告，介绍了源代码管理团队的工作及正在解决的问题。特别值得注意的是，我们呼吁潜水者（lurkers）加入团队并参与会议，即便不是正式成员，也能参与源代码管理的讨论及 bug/PR 分拣工作。我们收到了许多感兴趣的开发者反馈，现在几周后，源代码管理的双周会议参与人数从通常的四人增加到九人。

开发者峰会第二天，我参加了 Brooks Davis 有关 CHERI 的演讲，以及将其支持回溯到 FreeBSD 的动机。整个演讲使用我从多伦多带来的 ARM Morello 系统；KDE 桌面堆栈直到用于渲染幻灯片的 PDF 查看器都运行在纯 capability 模式下，所有 C 指针都用 CHERI 能力表示。在此模式下，许多内存安全漏洞会导致应用以确定性崩溃关闭，而非暴露给利用。Brooks 介绍了几个正在进行的商业 CHERI 硬件项目，通常基于 RISC-V，并讲解了从 CheriBSD 上游到 FreeBSD 的路径。CheriBSD 含有一些大规模改动，其中部分无法上游；混合模式下，内核作为典型 aarch64 二进制运行，同时支持纯 capability 用户空间应用。这些补丁较为 hack，需要对内核操作的所有用户空间指针进行显式标注。演讲中，Brooks 还展示了若干 CHERI 特性，尤其是 CheriBSD 的基于库的隔离（c18n）。

在主会议期间，我参加了不少精彩演讲，个人亮点包括：

* **ELF Nightmares, GOTs, PLTs and Relocations Oh My** – John Baldwin 展示了 ELF 二进制执行过程中静态和运行时链接器使用的数据结构，涉及 PLT 函数调用间接跳转等复杂概念，并提供了出色的可视化演示，有助于理解。
* **ABI Stability in FreeBSD** – ShengYi Hung 介绍了新工具 ctfdiff，可比较两个文件的 CTF（Compact C Type Format）数据，检测类型定义和函数签名差异，辅助判断内核变更是否影响出树内核模块的二进制接口。演讲后，围绕如何使用该工具展开了热烈讨论，我提出了比较内核模块与目标内核 CTF 类型图的方法，以减少误报。
* **Improvements to FreeBSD KASAN** – Zhuo Ying Jiang Li 分析了 FreeBSD KASAN 实现的若干不足，并提出解决方案。KASAN 利用编译器插装和小型运行时组件检测内核内存安全漏洞。她指出两个主要问题：一是 UMA slab 中对象间未插入填充，二是已释放对象未隔离，这会降低 KASAN 检测 use-after-free（UAF，释放后重用漏洞）的能力。她提出通过修改 UMA 解决这些问题，并讨论了利用现有 UMA 特性进行优化的策略。我期待这些补丁尽快被上游采纳。

非常感谢 FreeBSD 基金会赞助我的此次行程。

\[\*] 不管怎样，此报告均未借助大型语言模型辅助撰写。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://translated-articles.bsdcn.org/2025-nian/mark.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
