# FreeBSD 2022 年第三季度状态报告

* 原文：[FreeBSD Quarterly Status Report Third Quarter 2022](https://www.freebsd.org/status/report-2022-07-2022-09/)
* 版本：2022 年 10 月 20 日
* 最后作者：Lorenzo Salvadore

这是 2022 年第三季度的季度报告，共包含 24 份报告，比上季度略少。

我注意到过去有些季度的报告数量要多得多：往往超过 30 份，有时甚至超过 40 份。因此，我想鼓励各位提交报告：报告有助于分享你的工作、寻求帮助、让更多人审查你的修改、让更多人测试你的软件、在需要向整个 FreeBSD 社区传达信息时触达更广泛的受众，还有许多其他用途。请不要害羞，不必担心自己英语不是母语或对 AsciiDoc 语法不熟练：季度团队将乐于向你提供所需的一切帮助。

另一方面，如果你确实没有什么可报告的，那么或许你会想加入下面描述的某个有趣项目，或者从中获得灵感去做一些新的事情，从而在未来有内容可以报告。

祝各位阅读愉快。

Lorenzo Salvadore，代表季度报告团队

## FreeBSD 团队报告

以下内容来自各官方及半官方团队，可在 [管理页面](https://www.freebsd.org/administration/) 查阅。

### FreeBSD 核心团队

联系方式：FreeBSD 核心团队 <<core@FreeBSD.org>>

FreeBSD 核心团队是 FreeBSD 的管理机构。

#### 已完成事项

**新任核心团队秘书**

核心团队全体成员公开感谢 Muhammad Moinur Rahman (bofh) 在过去两年中担任核心团队秘书。

核心团队批准 Sergio Carlavilla (carlavilla) 为新任核心团队秘书。

**处理 GDPR 删除请求的流程**

核心团队已在基金会律师的协助下审查了处理 GDPR 删除请求的流程。相关文档正在撰写中，完成后将予以发布。

**新的隐私政策**

核心团队正与 FreeBSD 基金会密切合作，更新隐私政策，以使其符合当前法律及与我们类似的网站的通行做法。

**Bruce Evans 纪念牌匾**

核心团队一致投票同意设置 Bruce Evans 纪念牌匾，牌匾上将标明其为 FreeBSD 联合创始人。

**EuroBSDCon 核心团队办公时间**

9 月 16 日星期五，新任核心团队在 [EuroBSDcon 2022 开发者峰会](https://wiki.freebsd.org/DevSummit/202209)上进行了展示。核心团队成员先后做了自我介绍，并简要介绍了本届任期的计划。与会者进行了讨论、问答，并提出了相关建议。

#### 提交权限

核心团队批准重新激活 Konrad Witaszczyk (def@) 的 src 提交权限。Konrad 目前在剑桥大学工作，负责 CheriBSD 的开发。

### FreeBSD 基金会

链接

[FreeBSD 基金会](https://www.freebsdfoundation.org/)

[技术路线图](https://freebsdfoundation.org/blog/technology-roadmap/)

[捐赠](https://www.freebsdfoundation.org/donate/)

[基金会合作计划](https://www.freebsdfoundation.org/FreeBSD-foundation-partnership-program/)

[FreeBSD 期刊](https://www.freebsdfoundation.org/journal/)

[基金会新闻与事件](https://www.freebsdfoundation.org/news-and-events/)

联系方式：Deb Goodkin <<deb@FreeBSDFoundation.org>>

FreeBSD 基金会是一家 501(c)(3) 非营利组织，致力于支持和推广全球 FreeBSD 项目及社区。个人和企业的捐款用于资助和管理软件开发项目、会议和开发者峰会。我们还为 FreeBSD 贡献者提供差旅补助，购买和支持硬件以改善和维护 FreeBSD 基础设施，并提供资源以改善安全、质量保证和发布工程工作。我们发布宣传材料以推广、教育和倡导 FreeBSD 项目，促进商业供应商与 FreeBSD 开发者之间的协作，最后，代表 FreeBSD 项目执行合同、许可协议以及其他需要合法实体的法律安排。

#### 筹款工作

首先，我想向所有为我们的工作提供资金捐助的人表示衷心感谢。我们 100% 依赖各位的捐款运营，因此每一笔捐助都能帮助我们继续以多种方式支持 FreeBSD，包括本状态报告中资助和发布的部分工作。

我们在五个主要领域支持 FreeBSD。软件开发是我们通过员工开发者和承包商资助的最大领域，他们负责实现新功能、支持 tier 1 平台、审查补丁以及修复问题。你可以在本报告的“操作系统改进”部分阅读我们完成的其中一些工作。FreeBSD 宣传是我们支持的另一个领域，旨在通过会议、在线和面对面的演讲以及教程和操作指南来传播 FreeBSD。我们购买和支持用于 FreeBSD 基础设施的硬件，以保障项目中的各项工作。基金会组织虚拟和面对面的活动，帮助连接和吸引社区成员分享知识并在项目上协作。最后，我们在需要时为项目提供法律支持，并保护 FreeBSD 商标。

我们今年的目标是至少筹集 1,400,000 美元，以实现约 2,000,000 美元的支出预算。进入 2022 年最后一个季度时，我们的捐款总额为 167,348 美元，因此我们仍然需要你的帮助。如果你今年尚未捐款，请考虑在 <https://freebsdfoundation.org/donate/> 捐款。我们还为较大的商业捐助者设立了合作伙伴计划。你可以在 <https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/> 了解更多信息。

#### 操作系统改进

在 2022 年第三季度，共有 300 个 src、36 个 ports 和 13 个 doc 树的提交将 FreeBSD 基金会列为赞助商。其中一些工作有专门的报告条目。

* FreeBSD 作为 Tier 1 cloud-init 平台
* Intel 无线网卡迈向 11ac
* LLDB 多进程调试支持
* FreeBSD 上的 OpenStack
* 在启用日志软更新的文件系统上支持快照

其他受资助的工作难以简明概括，涵盖从复杂的新功能到 src 树中各种错误修复。以下是一小部分示例，以展现上季度工作的风貌。

* 240afd8 makefs：添加 ZFS 支持

  允许用户将暂存的目录树创建为一个文件，该文件包含一个 ZFS 池，池中有一个或多个数据集，内容即为该目录树的内容。这对于在无需内核创建池的情况下制作虚拟机映像非常有用；`zpool create`需要 root 权限，目前在 Jail 中不允许执行。makefs -t zfs 还通过使用固定的伪随机数生成种子来提供可复现的映像，用于生成 GUID 和哈希盐值。makefs -t zfs 对机器资源的消耗相对较少。
* 36f1526 在 arm64 上添加实验性 16k 页面支持

  在 arm64 上添加初始 16k 页面支持。该功能为实验性，不保证与当前 4k 页面大小构建的用户空间或内核模块兼容。测试显示，在分配和释放大量内存的内核工作负载中效果良好，因为在最佳情况下，VM 子系统的调用次数仅需原来的四分之一。
* 1424f65 vm\_pager：移除默认分页器

  现已不再使用。保留 OBJ\_DEFAULT 标识符，但将其作为 OBJT\_SWAP 的别名，以方便外部代码使用。
* a889a65 eventtimer：修复定时器重新加载代码中的若干竞态条件

  在 handleevents() 中，先锁定定时器状态，再获取下一个事件的时间。并发的 callout\_cc\_add() 调用可能会改变下一个事件的时间，此竞态条件可能导致 handleevents() 设定一个过期时间，使得 callout 比预期更晚运行（延迟时间不定，最长可达空闲 hardclock 周期 1 秒）。

**bhyve 问题支持**

基金会签约 John Baldwin，让他专门投入时间处理 bhyve 出现的问题，特别是安全问题。以下是他本季度在此合同下的工作摘要。

* bb31aee bhyve virtio-scsi：避免对客户请求的越界访问。
* 62806a7 bhyve virtio-scsi：整理警告和调试输出。
* 7afe342 bhyve e1000：净化发送环索引。
* c94f30e bhyve：验证用于映射直通 BAR 的主机物理地址。
* 16bedf5 pci：添加辅助例程以遍历设备的 BAR。
* baf753c bhyve：支持直通设备的其他命名方案。
* fa46f37 bhyve e1000：跳过头部过小的数据包。
* e7439f6 bhyve xhci：在初始化端点时缓存 MaxPStreams 的值。

**RISC-V 改进**

本季度末，基金会签约 Mitchell Horne，以添加和改善对 RISC-V 硬件的支持。Mitchell 还将进行常规维护工作，如修复错误、处理报告、审查新代码更改以及改善源代码可读性和文档。

#### 持续集成与质量保证

基金会提供一名全职员工并资助项目，以改善 FreeBSD 项目的持续集成、自动化测试和整体质量保证工作。你可以在专门的条目中阅读本季度 CI 的活动。

#### FreeBSD 宣传与教育

我们的许多工作致力于项目宣传。这可能包括突出展示有趣的 FreeBSD 工作、制作文献和视频教程、参加活动或发表演讲。我们制作的文献目标是教授人们 FreeBSD 基础知识，帮助他们更轻松地采用或贡献 FreeBSD。除了参加活动并发表演讲外，我们还鼓励和帮助社区成员举办自己的 FreeBSD 活动、发表演讲或布置 FreeBSD 展台。

FreeBSD 基金会赞助全球范围内的许多会议、活动和峰会。这些活动可以是与 BSD 相关的、开源相关的，也可以是面向弱势群体的技术活动。我们支持以 FreeBSD 为重点的活动，以提供分享知识、合作开展项目以及促进开发者与商业用户之间协作的场所。这一切都有助于营造健康的生态系统。我们支持非 FreeBSD 活动，以推广和提高 FreeBSD 的知名度，扩大 FreeBSD 在不同应用中的使用，并为项目招募更多贡献者。我们继续参加线下和虚拟活动，并正在策划 11 月的供应商峰会。除了参加和策划虚拟活动外，我们还不断推出新的培训计划，并更新我们的[操作指南](https://freebsdfoundation.org/freebsd-project/resources/)库，以便让更多人尝试 FreeBSD。

以下是上季度我们所做的宣传和教育工作：

* 于 7 月 28 日至 30 日在加利福尼亚州洛杉矶的 Scale 19x 大会上举办了 FreeBSD 工作坊并设立展台。你可以在 [SCALE19X 会议报告](https://freebsdfoundation.org/blog/scale19x-conference-report/)中了解更多我们的参展情况。
* 赞助并参加了 7 月 30 日至 31 日在台湾举行的 [COSCUP](https://coscup.org/2022/en/)。
* 参加了 EuroBSDCon 开发者峰会，并赞助和参加了 9 月 15 日至 18 日在奥地利维也纳举行的 [EuroBSDcon 2022](https://2022.eurobsdcon.org/)。
* [赞助并在落基山计算领域女性庆典上发表了演讲](http://toilers.mines.edu/RMCWiC/2022/home.html)，2022 年 9 月 29 日至 30 日。Deb 的演讲幻灯片可在[此处](http://toilers.mines.edu/RMCWiC/2022/program.html)查看。
* 发布了 [FreeBSD 基金会 2022 年夏季更新](https://freebsdfoundation.org/news-and-events/newsletter/freebsd-foundation-summer-2022-update/)。
* 继续以管理员和导师的身份参与 Google Summer of Code。部分 Google Summer of Code 学生的访谈可在[此处](https://freebsdfoundation.org/our-work/latest-updates/)查看。
* 推出了新的 [FreeBSD 资源](https://freebsdfoundation.org/freebsd-project/resources/)页面，支持按主题类型、内容类型和难度级别进行搜索。
* 新博客文章：
  * 嘉宾文章：[FreeBSD 在科学领域的应用](https://freebsdfoundation.org/blog/guest-post-freebsd-in-science/)
  * [2022 年及未来的 FreeBSD 推广](https://freebsdfoundation.org/blog/advocating-for-freebsd-in-2022-and-beyond/)
  * [八月基金会筹款更新](https://freebsdfoundation.org/blog/august-foundation-fundraising-update/)
  * [在 Linux 和 FreeBSD 之间共享双许可驱动程序](https://freebsdfoundation.org/blog/sharing-dual-licensed-drivers-between-linux-and-freebsd/)
* 新的和已更新的操作指南：
  * [FreeBSD 快速指南：FreeBSD 上的视频播放](https://freebsdfoundation.org/blog/new-freebsd-quick-guide-video-playback-on-freebsd-quick-guide/)
  * [FreeBSD 上的二进制包管理](https://freebsdfoundation.org/resource/binary-package-management-on-freebsd/)

我们通过出版专业制作的 FreeBSD 期刊来帮助向全世界传播 FreeBSD 知识。正如我们之前提到的，FreeBSD 期刊现在是一份免费出版物。请在 <https://www.FreeBSDfoundation.org/journal/> 了解更多信息并获取最新期刊。

你可以在 <https://www.FreeBSDfoundation.org/news-and-events/> 了解我们曾参加及即将参加的活动。

#### 法律与 FreeBSD 知识产权

基金会拥有 FreeBSD 商标，我们有责任保护它们。我们还为核心团队提供法律支持，以调查出现的问题。

请访问 [https://www.FreeBSDFoundation.org](https://www.FreeBSDfoundation.org)，了解我们如何支持 FreeBSD 以及我们如何帮助你！

### FreeBSD 发布工程团队

链接

[FreeBSD 12.4-RELEASE 时间表](https://www.freebsd.org/releases/12.4R/schedule/)

[FreeBSD 13.2-RELEASE 时间表](https://www.freebsd.org/releases/13.2R/schedule/)

[FreeBSD 14.0-RELEASE 时间表](https://www.freebsd.org/releases/14.0R/schedule/)

[FreeBSD 开发快照](https://download.freebsd.org/snapshots/ISO-IMAGES/)

联系方式：FreeBSD 发布工程团队，<<re@FreeBSD.org>>

FreeBSD 发布工程团队负责设定和发布 FreeBSD 官方项目发布的发布计划、宣布代码冻结以及维护相应的分支等工作。

在 2022 年第三季度，发布工程团队继续为 **main**、**stable/13** 和 **stable/12** 分支提供每周开发快照构建。

此外，即将到来的 12.4、13.2 和 14.0 发布周期的时间表已在项目网站上公布。

赞助商：Rubicon Communications, LLC（“Netgate”） 赞助商：FreeBSD 基金会

### 集群管理团队

链接

[集群管理团队成员](https://www.freebsd.org/administration/#t-clusteradm)

联系方式：集群管理团队 <<clusteradm@FreeBSD.org>>

FreeBSD 集群管理团队成员负责管理项目用于同步分布式工作和通信的机器。本季度，团队完成了以下工作：

* 为 CI 系统添加了额外的存储空间。这将有助于存储更多构建产物。
* [VuXML](https://www.vuxml.org/freebsd/index.html) 已部署到所有官方镜像，加快了 `pkg audit` 功能。
* 一个新的（额外的）监控系统已就位。
* 一些老旧和有故障的机器已退役。
* 将若干服务迁移到较新的硬件。
* 常规的集群级软件升级。
* 常规的 FreeBSD.org 用户账户支持。
* 所有物理主机和镜像的常规磁盘及零部件支持（和更换）。

进行中的工作：

* git infra：添加 `--filter` 支持。
* 与 PowerPC 团队合作改进包构建器、universal 和 reference 机器。
* 在主要站点进行现场审计：清点备件和占据机柜空间的其他杂物。
* 与 Juniper 讨论为我们的主要站点捐赠新交换机。
* 规划主要站点的大规模网络升级。
* 集群更新（较长期项目）。

截至 2022-09-30，大多数集群机器运行 FreeBSD 13-STABLE 或 14-CURRENT，只有少数机器仍在运行 FreeBSD 12-STABLE。

我们正在寻找一个额外的欧洲全镜像站点（五台服务器）。请参阅[通用镜像布局](https://wiki.freebsd.org/Teams/clusteradm/generic-mirror-layout)了解我们的需求。我们也始终欢迎额外的单服务器镜像，特别是在欧洲。

### 持续集成

链接

[FreeBSD Jenkins 实例](https://ci.FreeBSD.org)

[FreeBSD CI 构建产物归档](https://artifact.ci.FreeBSD.org)

[FreeBSD Jenkins wiki](https://wiki.freebsd.org/Jenkins)

[托管 CI wiki](https://wiki.freebsd.org/HostedCI)

[第三方软件 CI](https://wiki.freebsd.org/3rdPartySoftwareCI)

[与 freebsd-testing@ 相关的工单](https://preview.tinyurl.com/y9maauwg)

[FreeBSD CI 仓库](https://github.com/freebsd/freebsd-ci)

dev-ci 邮件列表

联系方式：Jenkins 管理员 <<jenkins-admin@FreeBSD.org>>

联系方式：許立文 <<lwhsu@FreeBSD.org>>

联系方式：freebsd-testing 邮件列表

联系方式：IRC EFNet #freebsd-ci 频道

FreeBSD CI 团队维护 FreeBSD 项目的持续集成系统。CI 系统检查已提交的更改能否成功构建，然后对新构建的结果执行各种测试和分析。这些构建的产物被归档在构建产物服务器中，以备进一步的测试和调试需要。CI 团队成员检查失败的构建和不稳定的测试，并与相关领域的专家合作修复代码或调整测试基础设施。

在 2022 年第三季度，我们继续与项目中的贡献者和开发者合作，满足他们的测试需求，同时也继续与外部项目和公司合作，改进他们的产品和 FreeBSD。

重要已完成任务：

* 扩展构建产物存储空间，以支持更多类型的构建产物和更长的保留期。
* 在 EuroBSDcon 2022 开发者峰会上展示了测试/CI 状态更新。
* 添加 `main-powerpc-images` 和 `main-powerpcspe-images`。

进行中的任务：

* 设计和实现提交前 CI 构建和测试（以支持工作流工作组）。
* 设计和实现使用 CI 集群来构建发布产物，模拟发布工程的操作。
* 测试和合并 FreeBSD-ci 仓库中的拉取请求。
* 为贡献者和开发者简化 CI/测试环境设置。
* 设置 CI 暂存环境并将实验性任务放置其上。
* 整理 freebsd-ci 仓库中的脚本，为合并到 src 仓库做准备。
* 更新 wiki 上的文档。

开放或排队的任务：

* 收集和整理 CI 任务和想法。
* 为运行测试的虚拟机客户机设置公共网络访问。
* 实现使用裸机硬件运行测试套件。
* 添加针对 -CURRENT 的 drm ports 构建测试。
* 规划运行 ztest 测试。
* 添加更多外部工具链相关的任务。
* 提高硬件实验室的成熟度并添加更多测试硬件。
* 帮助更多软件在其 CI 流水线中获得 FreeBSD 支持（Wiki 页面：3rdPartySoftwareCI、HostedCI）。
* 与托管 CI 提供商合作以获得更好的 FreeBSD 支持。

请参阅 freebsd-testing@ 相关工单以了解更多 WIP 信息，欢迎加入我们的工作！

赞助商：FreeBSD 基金会

### Ports Collection

链接

[关于 FreeBSD Ports](https://www.FreeBSD.org/ports/)

[为 Ports 做贡献](https://docs.freebsd.org/en/articles/contributing/#ports-contributing)

[FreeBSD Ports 监控](http://portsmon.freebsd.org/)

[Ports 管理团队](https://www.freebsd.org/portmgr/)

[Ports 压缩包](http://ftp.freebsd.org/pub/FreeBSD/ports/ports/)

联系方式：René Ladan <<portmgr-secretary@FreeBSD.org>>

联系方式：FreeBSD Ports 管理团队 <<portmgr@FreeBSD.org>>

Ports 管理团队负责监督 Ports 树的整体方向、构建包以及人员事务。以下是上一季度的情况。

目前 Ports 树中约有 30,500 个 port。当前约有 2,800 个开放的 ports PR，其中 750 个未被分配。上一季度，main 分支有 151 位提交者提交了 9,137 次，2022Q3 分支有 61 位提交者提交了 589 次。相比两个季度前，port 数量略有增加，但（未分配的）ports PR 数量也略有增加，提交数量则略有减少。

在上一季度，我们欢迎 Felix Palmen (zirias@) 成为新的 ports 提交者，欢迎 Akinori MUSHA (knu@) 回归，并与 Olli Hauer (ohauer@) 告别。我们还欢迎 Luca Pizzamiglio (pizzamig@) 成为 portmgr 的正式成员。

上一季度 Ports 树中发生了一些重大变化：

`Created by`行已从每个 Makefile 的顶部移除，因为其中很多已经过时。

WWW 已从每个 pkg-descr 移动到每个 Makefile 中作为变量；以下是完成这项工作的 Stefan Eßer (se@) 的说明：

> 对 port 功能的描述应以一个提供更多信息（如最佳使用或配置实践）的网页 URL 结尾。此信息可以通过 `pkg query -e`（用于已安装的包）或 `pkg rquery -e`（用于可用的包）显示。URL 以前附加在 port 的 pkg-descr 文件末尾，前缀为`WWW:`，以便工具可以从描述中提取 URL。随着时间的推移，许多此类 URL 已经过时，因为 port 更新通常只修改 Makefile，而不修改 pkg-descr 文件。通过将这些 URL 的定义移到 Makefile 中，维护者更可能在 port 变更的同时更新 URL，工具也能更方便地访问它们。URL 现在被赋值给 Makefile 中的 WWW 宏，并可以通过在 port 目录中执行 `make -V WWW` 查询。处理包文件中描述的工具仍可正常工作，因为末尾的`WWW:`行是由 Makefile 中的 WWW 值生成的。

在 EuroBSDCon 期间，portmgr@ 召开了一次讨论会，主题是改善内核模块包的现状。讨论了多种可能性。

底层发生了以下变化：添加了一个新的 USES `vala`。Go 的默认版本已升级至 1.19。CMake 现在是一个 meta-port。添加了 Qt 6 的初步支持，版本为 6.3.2。Vim 不再安装系统级的 vimrc。

若干主要 port 已更新：pkg 1.18.4、Chromium 106.0.5249.91、Firefox 105.0.1、Firefox ESR 102.3.0、KDE Applications 22.8.1、KDE Frameworks 5.98、Rust 1.63.0、SDL 2.24.0、Xorg server 21.1.4（全面修订）。

## 项目

跨越多个类别的项目，从内核和用户空间到 Ports Collection 或外部项目。

### FreeBSD 上的 OpenStack

链接

[OpenStack](https://www.openstack.org/)

[FreeBSD 上的 OpenStack](https://github.com/openstack-on-freebsd)

联系方式：Chih-Hsin Chang <<starbops@hey.com>>

联系方式：許立文 <<lwhsu@FreeBSD.org>>

OpenStack 是一个开源云操作系统，适用于虚拟机和裸机等多种类型的资源。用户可以在开放的云平台上启动 FreeBSD 实例，但目前尚不能在 FreeBSD 主机上运行 OpenStack 控制平面。本项目的目标是将关键的 OpenStack 组件移植到 FreeBSD，使 FreeBSD 能够作为 OpenStack 主机运行。

自 2022 年年中以来，学术和工业研究团队一直在评估支持 CHERI 的 Morello 开发板。像 OpenStack 这样的资源编排平台可以提高此类开发板的配置、管理和回收的速度和成本效益。

自 2022 年 1 月起，Chih-Hsin Chang 一直在致力于将多个 OpenStack 组件移植到 FreeBSD 上运行，包括：

* Keystone（身份服务）
* Glance（镜像服务）
* Placement（资源跟踪和清单服务）
* Neutron（网络服务）
* Nova（计算服务）

其中一些项目仍处于重度开发阶段。例如，由于 Neutron 的设计，DHCP 服务器被放置在 Linux 网络命名空间内，需要在 FreeBSD 上找到替代方案（例如 `vnet`）并进行适配。大多数情况下，移植策略是绕过障碍以尽量减少影响。但像 oslo.privsep 这样的组件则需要真正的移植。oslo.privsep 基于 Linux 能力机制进行权限分离工作，目前我们只是绕过了 oslo.privsep 中所有与 Linux 能力相关的操作。因此，目前源代码和配置中存在大量临时性的处理。所有这些内容以及构建和安装步骤都将在项目仓库中收集。

在第四季度，Chih-Hsin 计划专注于移植 Neutron 和 Nova，以完成虚拟机生命周期操作。重点包括：

* DHCP 集成
* FreeBSD 桥接驱动/代理
* bhyve + Libvirt 集成

赞助商：FreeBSD 基金会

### FreeBSD 作为 Tier 1 cloud-init 平台

链接

[cloud-init 网站](https://cloud-init.io/)

[cloud-init 文档](https://cloudinit.readthedocs.io/en/latest/)

[cloud-init 持续重构](https://github.com/canonical/cloud-init/blob/main/WIP-ONGOING-REFACTORIZATION.rst)

联系方式：Mina Galić <<me+FreeBSD@igalic.co>>

cloud-init 是在云端配置服务器的标准方式。不幸的是，cloud-init 对除 Linux 以外的操作系统的支持相当薄弱，而 cloud-init 在 FreeBSD 上支持的缺失阻碍了云提供商将 FreeBSD 作为 Tier 1 平台提供。为解决这一问题，本项目旨在将 FreeBSD 的 cloud-init 支持提升至与 Linux 相当的水平。更广泛的计划是将支持推广到所有 BSD 系统。

项目交付成果包括：完成某些网络类的提取，实现 `ifconfig(8)` 和 `login.conf(5)` 解析器，实现 IPv6 配置，为 Azure 创建 `devd.conf(5)` 规则，以及在 FreeBSD 手册中编写关于将 FreeBSD 投入生产环境的文档。在此过程中，发现的任何与 BSD 相关的模块和文档错误也将一并修复。

有意帮助该项目的人可以通过 `net/cloud-init-devel` 来测试新功能和修复，该 port 将每周更新。此外，有 OpenBSD 和 NetBSD 使用和开发经验的人士也极其欢迎提供帮助。

赞助商：FreeBSD 基金会

## 用户空间

影响基本系统和其中程序的变更。

### bhyve 调试服务器增强

链接

[wiki 项目页面](https://wiki.freebsd.org/SummerOfCode2022Projects/DebugServerEnhancementsForBhyve)

[代码审查](https://reviews.freebsd.org/D36471)

联系方式：Bojan Novković <<bojan.novkovic@kset.org>>

该项目的目标是增强 bhyve 调试服务器的功能。一些与单步执行相关的现有功能依赖于 Intel 特有的 VM 机制，这严重削弱了 bhyve 在其他 x86 平台上的调试功能。第一个目标是扩展对 AMD 主机的单步执行支持。第二个目标是利用客户操作系统的硬件调试寄存器来支持硬件监视点。

该项目在 Google Summer of Code 计划下开展，于 7 月底左右完成。项目的 wiki 还包含关于若干已实现机制的详细文档。

变更摘要如下：

* 支持在 AMD 平台的虚拟机内放置软件断点，
* 支持在 AMD 平台上对虚拟机进行单步执行，
* 支持在 Intel 和 AMD 平台的虚拟机内放置硬件监视点。

欢迎任何反馈、评论和讨论，不胜感激。

赞助商：Google Summer of Code

### 重写 pjdfstest

链接

[Github](https://github.com/musikid/pjdfstest)

[博客](https://musikid.github.io/blog/rewrite-pjdfstest/)

联系方式：Alan Somers <<asomers@FreeBSD.org>>

早在 2007 年，Pawel Jakub Dawidek <<pjd@FreeBSD.org>> 编写了 pjdfstest，这是一个 POSIX 文件系统一致性测试工具。他最初编写它是为了验证 ZFS 到 FreeBSD 的移植，但后来它也被用于其他文件系统和其他操作系统。

今年，Sayafdine Said <<musikid@outlook.com>> 在 Google 的赞助下重写了它。新版本有以下改进：

* 可配置性更强，更适合与其他文件系统一起使用。
* 速度更快，很大程度上受益于上述可配置性。
* 测试用例隔离性更好，便于调试失败。
* 不再要求所有测试用例都以 root 权限运行。
* 测试用例可以在调试器中运行。
* 更易维护，重复代码更少。

仍有一些未完成的 PR 需要完善，但我们预计会很快完成并将 pjdfstest 添加到 ports collection 中。此后，/usr/tests 中的 ZFS 和 UFS 测试以及外部开发者的其他文件系统测试都可以使用它。

赞助商：Google Summer of Code

### LLDB 多进程调试支持的持续工作

链接

[Moritz Systems 项目描述](https://www.moritz.systems/blog/multiprocess-support-for-lldb/)

[进度报告 1](https://www.moritz.systems/blog/implementing-non-stop-protocol-compatibility-in-lldb/)

[进度报告 2](https://www.moritz.systems/blog/full-multiprocess-support-in-lldb-server/)

联系方式：Kamil Rytarowski <<kamil@moritz.systems>>

联系方式：Michał Górny <<mgorny@moritz.systems>>

根据上游的描述，“LLDB 是下一代高性能调试器。它构建为一组可重用的组件，大量利用了 LLVM 项目中已有的库，例如 Clang 表达式解析器和 LLVM 反汇编器。”

FreeBSD 在基本系统中包含 LLDB。此前的资助项目对 LLDB 进行了改进，使其成为基本系统中一个可靠的调试器，但相比当代的 GNU GDB，它仍有一些局限。

本项目于 2022 年 4 月启动，旨在实现对同时调试多个进程的完整支持。在项目开始时，LLDB 对多进程调试的支持非常有限。目前，服务器已经能够使用 GDB 远程串行协议的多进程扩展监控多个进程。客户端对应协议的工作正在进行中。项目完成后，LLDB 将能够同时跟踪任意数量的 fork 进程（相当于 GDB 的 `detach-on-fork off`）。

赞助商：FreeBSD 基金会

### DTrace：指令级动态追踪

链接

[Wiki 文章](https://wiki.freebsd.org/SummerOfCode2022Projects/InstructionLevelDynamicTracing)

[最终代码审查](https://reviews.freebsd.org/D36851)

联系方式：Christos Margiolis <<christos@FreeBSD.org>>

联系方式：Mark Johnston <<markj@FreeBSD.org>>

kinst 是一个新的 DTrace 提供者，允许对任意内核指令进行追踪。该提供者目前仅在 amd64 上实现，但我们计划未来也移植到其他架构。kinst 探针由 libdtrace 按需创建，几乎可以为内核中的每条指令创建探针。

探针的形式为：

```sh

kinst:<module>:<function>:<offset>

```

其中“module”是包含指定函数的内核模块，“function”是要追踪的内核函数，“offset”是特定指令的偏移量。省略“offset”会导致函数中的所有指令被追踪。省略“module”会导致 DTrace 搜索所有内核模块来查找该函数。

例如，要追踪 `amd64_syscall()` 中的第二条指令，首先确定第二条指令的偏移量：

```sh
# kgdb
(kgdb) disas /r amd64_syscall
Dump of assembler code for function amd64_syscall:
   0xffffffff809256c0 <+0>:  55                push   %rbp
   0xffffffff809256c1 <+1>:  48 89 e5  mov    %rsp,%rbp
   0xffffffff809256c4 <+4>:  41 57             push   %r15
```

偏移量为 1。然后，追踪它：

```sh
# dtrace -n 'kinst::amd64_syscall:1'
```

D 语言中还添加了一个新的“regs”关键字，提供对探针触发点 CPU 寄存器的只读访问。例如，在 `kinst::amd64_syscall:1` 探针触发时追踪帧指针（amd64 上的 `%rbp` 寄存器）的内容：

```sh
# dtrace -n 'kinst::amd64_syscall:1 {printf("0x%x", regs[R_RBP]);}'
```

kinst 的工作原理类似于 FBT（函数边界追踪）提供者：它在目标指令上放置一个断点，并挂接到内核的断点处理程序中。它比 FBT 更强大，因为它可以在函数内的任意位置创建探针，而不仅仅是在函数边界处。由于 kinst 必须能够追踪任意指令，它不会在软件中模拟大多数指令，而是让被追踪的线程执行该指令的副本，然后返回原始代码。

计划中的未来工作包括将 kinst 移植到其他平台（特别是 arm64 和 RISC-V），以及开发能够利用 kinst 通过内核调试符号追踪内联函数调用的工具。

赞助商：Google, Inc.（GSOC 2022）

## 内核

内核子系统/功能、驱动程序支持、文件系统等方面的更新。

### ENA FreeBSD 驱动程序更新

链接

[ENA README](https://github.com/amzn/amzn-drivers/blob/master/kernel/fbsd/ena/README.rst)

联系方式：Michal Krawczyk <<mk@semihalf.com>>

联系方式：David Arinzon <<darinzon@amazon.com>>

联系方式：Marcin Wojtas <<mw@FreeBSD.org>>

ENA（Elastic Network Adapter）是 Amazon Web Services（AWS）虚拟化环境中提供的智能 NIC。ENA 驱动程序支持多个发送和接收队列，根据所使用的实例类型，最高可处理 100 Gb/s 的网络流量。

自上次更新以来完成的工作：

* 将 ENA 驱动程序 v2.6.0 和 v2.6.1 上游化，包含：
* 修复第 6 代实例上重置后性能下降的问题，
* 修复启用 KASSERT 时的 netmap 虚假断言问题，
* 代码清理与代码风格修正，
* 日志改进，
* 修复 ENI 指标获取问题。

赞助商：Amazon.com Inc

### wtap(4) 增强

链接

[为 wtap wlan 模拟器添加 sta、hostap 和 adhoc 模式](https://wiki.freebsd.org/SummerOfCode2022Projects/WtapEnhancement)

联系方式：En-Wei Wu <<enweiwu@FreeBSD.org>>

联系方式：許立文 <<lwhsu@FreeBSD.org>>

联系方式：Bjoern A. Zeeb <<bz@FreeBSD.org>>

wtap(4) 是由 Monthadar Al Jaberi <<monthadar@gmail.com>> 和 Adrian Chadd <<adrian@FreeBSD.org>> 于 2012 年引入的 net80211(4) Wi-Fi 模拟器。它最初支持 802.11s mesh 模式并用于验证。

在 2022 年 Google Summer of Code 期间，En-Wei 一直在努力为其引入 sta、hostap、adhoc 和 monitor 模式。工作还包括使用 atf(7) 编写基于 wtap(4) 的 net80211(4) 基本测试。

更多详情请查看项目 wiki 页面。

赞助商：Google Summer of Code 赞助商：FreeBSD 基金会

### Intel 无线网卡迈向 11ac

链接

[Intel iwlwifi 状态 FreeBSD wiki 页面](https://wiki.freebsd.org/WiFi/Iwlwifi)

联系方式：Bjoern A. Zeeb <<bz@FreeBSD.org>>

该项目正在进行中，旨在支持 FreeBSD 上最新的 Intel 无线芯片组，使用由原生 net80211 和内核代码支持的 LinuxKPI 兼容代码。此外，还在努力支持 LinuxKPI 802.11 兼容代码中的 11n 和 11ac 标准，并填补原生 net80211 无线栈中主要在 11ac 方面的空白。

对于 Intel iwlwifi 无线驱动程序，过去几个月没有重大更新。我们已将固件更新到最新公开发布的版本，并修复了一些最明显的问题。对 D3 节能代码的支持也在进行中。LinuxKPI 兼容代码也获得了一些改进和修复，这些问题有时仅在某些代际的 iwlwifi 芯片组上才能观察到。

net80211 和 LinuxKPI 兼容代码中关于 11n 和 11ac 的变更目前公开发布较少，以免破坏基本支持。基于较新 802.11 标准的常量更新及其他无用户可见影响的更改已合并，功能性更改将在未来几个月内跟进，最初会隐藏在编译时选项或运行时选项之后。

改进和更新大部分已回合并入 stable/13，以便跟踪该分支的用户受益并帮助进行更多测试。有关开发的最新状态，请关注 freebsd-wireless 邮件列表并查阅 wiki 页面。

赞助商：FreeBSD 基金会

### 更多无线更新

链接

[Bjoern 的无线工作进行中页面](https://people.freebsd.org/~bz/wireless/)

[Realtek rtw88 状态 FreeBSD wiki 页面](https://wiki.freebsd.org/WiFi/Rtw88)

[Realtek rtw89 状态 FreeBSD wiki 页面](https://wiki.freebsd.org/WiFi/Rtw89)

[MediaTek mt76 状态 FreeBSD wiki 页面](https://wiki.freebsd.org/WiFi/Mt76)

[QCA ath11k 状态 FreeBSD wiki 页面](https://wiki.freebsd.org/WiFi/Ath11k)

联系方式：Bjoern A. Zeeb <<bz@FreeBSD.org>>

目前的开发主要由 Intel 的 iwlwifi 驱动推动（参见另一份报告）。俗话说“互相帮助”：对 Realtek 的 rtw89 驱动的工作帮助发现了 LinuxKPI 中一个困扰 iwlwifi 用户的问题。

本状态报告中主要涉及更多驱动程序，它们都需要更多的 LinuxKPI 支持。各项进行中的工作：

* Realtek 的 rtw88 PCI 已按现状合入源码树，在与 Hans Petter Selasky 在 EuroBSDCon 上进行富有成效的讨论后，针对 rtw88 USB Wi-Fi 适配器的 LinuxKPI USB 支持工作将继续。
* Realtek 的 rtw89 驱动已提交到 main 分支，但尚未连接到构建系统。扫描已经可以工作，但数据包尚未通过。将该驱动合入源码树已经方便了拥有该芯片组的用户进行测试，以识别更多未实现的 LinuxKPI 部分（其中一些也会帮助其他驱动），并减少了我的工作量。
* 下一个可能合入源码树的驱动将基于 MediaTek 的 mt76 驱动（针对 7921 和 7915），我已经让它能够编译并开始测试。
* 基于请求，我也在开发 ath11k 以支持 STA 模式，因为一些供应商似乎为笔记本电脑配备了这些芯片。

虽然其中一些工作明显受益于 FreeBSD 基金会为 iwlwifi 和更新标准支持所资助的工作，但其中很大一部分只是业余时间的工作。如果你对上述任何驱动感兴趣，我非常欢迎更多人参与其中。这可以包括：定期测试 main 分支的更新、编写文档和更新 wiki 页面、跟踪 PR、尝试补丁、帮助完成个别的 LinuxKPI 部分（无论是否涉及 802.11 工作），或者仅仅是调试个别驱动或芯片组的问题。

如果你有兴趣在上述任何一项中提供帮助，请给我发邮件。有关开发的最新状态，请关注 freebsd-wireless 邮件列表并查阅 wiki 页面（一旦有的话）。

### 在启用日志软更新的文件系统上支持快照

链接

[里程碑 1 核心更改](https://reviews.freebsd.org/D36491)

联系方式：Kirk McKusick <<mckusick@FreeBSD.org>>

本项目将使 UFS/FFS 文件系统快照在运行日志软更新时可用。

UFS/FFS 文件系统具有制作快照的能力。由于快照功能是在软更新编写之后添加的，因此它们与软更新完全集成。当 2010 年添加日志软更新时，它们从未与快照集成。因此，快照无法在运行日志软更新的文件系统上使用。

随着 ZFS 在 FreeBSD 上的支持，快照的重要性有所降低，因为 ZFS 可以快速轻松地制作快照。然而，仍有两种情况下 UFS 快照仍然重要。首先，它们允许对活动文件系统进行可靠的转储，从而避免了可能数小时的停机时间。其次，它们允许运行后台 fsck。类似于 ZFS 中 scrub 的需求，fsck 需要定期运行以发现未检测到的磁盘数据损坏。快照允许在活动文件系统上运行 fsck，而无需安排停机时间来运行它。

本项目有两个里程碑：

1. 在运行日志软更新时启用快照，并确保它们可用于在活动文件系统上进行后台转储。此里程碑应在 2022 年底前完成。
2. 扩展 fsck\_ffs，使其能够使用快照在运行日志软更新的文件系统上进行后台检查。此里程碑预计在 2023 年第三季度完成。

赞助商：FreeBSD 基金会

## 架构

更新平台特定功能，并引入对新硬件平台的支持。

### FreeBSD/Firecracker

链接

[Firecracker VM](https://firecracker-microvm.github.io/)

联系方式：Colin Percival <<cperciva@FreeBSD.org>>

Firecracker 是由 Amazon Web Services 开发的开源“microVM”；它为“无服务器”计算环境的需求而设计，特别注重安全性和极简性。

自 2022 年 6 月起，Colin Percival 一直致力于将 FreeBSD 移植到 Firecracker 环境中运行，并得到了其他 FreeBSD 开发者的重要协助。截至本季度报告，一组补丁正在等待审查，这些补丁共同添加了使 FreeBSD 在打过补丁的 Firecracker 版本中运行所需的支持。

在第四季度，Colin 计划完成将相关补丁提交到 FreeBSD，发布内核和磁盘映像以便其他 FreeBSD 用户可以尝试 Firecracker，并更新和合并添加 PVH 引导支持（FreeBSD 使用）的 Firecracker 补丁。

这项工作已经产生了“衍生”效益，揭示了加快 FreeBSD 引导过程的方法；由于其低开销和最小化环境，Firecracker 是在此方面工作的绝佳环境。

此项工作由 Colin 的 FreeBSD/EC2 Patreon 支持。

赞助商：<https://www.patreon.com/cperciva>

## 文档

文档树、手册页或新的外部书籍/文档中的值得注意的变更。

### 文档工程团队

链接

[FreeBSD 文档项目](https://www.freebsd.org/docproj/)

[FreeBSD 文档项目新贡献者入门](https://docs.freebsd.org/en/books/fdp-primer/)

[文档工程团队](https://www.freebsd.org/administration/#t-doceng)

联系方式：FreeBSD Doceng 团队 <<doceng@FreeBSD.org>>

doceng@ 团队是负责处理与 FreeBSD 文档项目相关的部分元项目问题的机构；更多信息请参见 [FreeBSD Doceng 团队章程](https://www.freebsd.org/internal/doceng/)。

上季度：

* 0mp@ 卸任 Doceng 秘书，fernapes@ 加入担任新任秘书。Doceng 感谢 0mp@ 的服务。
* eadler@ 的 doc 提交权限按他本人的请求进行了妥善保管。
* 为 doc 仓库添加了 git 提交消息模板。

待处理和讨论中的事项：

* 从网站和文档门户中移除过时的翻译。

#### FreeBSD 文档项目入门

* FDP 已扩展了关于商标处理的信息。
* Porter 手册：Haskell 程序移植文档已更新。
* WWW 从 pkg-descr 移动到 Makefile 的变更已记录。
* 在 port 框架中导入 Qt 6 库后，已添加相关的文档。

#### FreeBSD 在 Weblate 上的翻译

链接

[在 Weblate 上翻译 FreeBSD](https://wiki.freebsd.org/Doc/Translation/Weblate)

[FreeBSD Weblate 实例](https://translate-dev.freebsd.org/)

2022 年第三季度状态：

* 12 种语言
* 148 名注册用户
* Gasol Wu 加入了中文翻译团队。
* Alvaro Felipe Calle 加入了西班牙语翻译团队。

语言：

* 中文（简体）(zh-cn)（进度：8%）
* 中文（繁体）(zh-tw)（进度：4%）
* 荷兰语 (nl)（进度：1%）
* 法语 (fr)（进度：1%）
* 德语 (de)（进度：1%）
* 印度尼西亚语 (id)（进度：1%）
* 意大利语 (it)（进度：4%）
* 挪威语 (nb-no)（进度：1%）
* 波斯语 (fa-ir)（进度：3%）
* 葡萄牙语 (pt-br)（进度：16%）
* 西班牙语 (es)（进度：15%）
* 土耳其语 (tr)（进度：2%）

我们感谢所有参与翻译或审阅文档的贡献者。请在你们当地的用户组中推广这项工作，我们始终需要更多志愿者。

#### FreeBSD 手册页门户

联系方式：Sergio Carlavilla <<carlavilla@FreeBSD.org>>

手册页门户已重新设计，改用 mandoc(1) 进行渲染。门户预览已可用。已收集反馈并在可能的情况下予以处理。仍有一些非阻断性问题。Doceng@ 希望推进向新门户的迁移。

感谢所有审阅并提供了反馈的人。

#### FreeBSD 网站改版 - WebApps 工作组

联系方式：Sergio Carlavilla <<carlavilla@FreeBSD.org>>

该工作组负责创建新的 FreeBSD 文档门户并重新设计 FreeBSD 主网站及其组件。FreeBSD 开发者可以在 FreeBSD Slack 频道 #wg-www21 上关注和加入该工作组。

工作将分为四个阶段：

1. 文档门户重新设计 - 创建响应式新设计，支持全局搜索。（已完成）
2. 网站上的手册页重新设计 - 使用 mandoc 生成 HTML 页面的脚本。（已完成）
3. 网站上的 Ports 页面重新设计 - 用于创建应用程序门户的 Ports 脚本。（进行中）
4. FreeBSD 主网站重新设计 - 新设计，响应式，深色主题。（未开始）

## Ports

影响 Ports Collection 的变更，无论是涉及树中大部分的广泛变更，还是个别 port 本身的变更。

### Calendar-data：添加许可证

链接

[GitHub calendar-data 仓库](https://github.com/freebsd/calendar-data)

联系方式：Stefan Eßer <<se@FreeBSD.org>>

联系方式：Lorenzo Salvadore <<salvadore@FreeBSD.org>>

联系方式：Warner Losh <<imp@FreeBSD.org>>

port `deskutils/calendar-data` 包含 BSD calendar 程序的日历文件，由 se@ 维护。此 port 的数据位于 GitHub 仓库中，目前主要由 salvadore@ 维护。

大约两年前，基本仓库中的日历文件从那里移除，并在 GitHub 上创建了一个新仓库；另请参阅此关于创建相应 port 的 [Phabricator 审查](https://reviews.freebsd.org/D26956)。这一改进使日历文件能够独立于基本系统进行更新。

不幸的是，在创建仓库时，忘记为其添加许可证。这一问题已在本季度通过 salvadore@ 提交并由 imp@ 合并的[拉取请求](https://github.com/freebsd/calendar-data/pull/12)得到解决。由于数据最初来自 src 仓库，适用相同的许可证。

如果你过去曾以不同的许可证假设向日历文件贡献过内容，请通知我们，以便我们相应地许可你的贡献或将其移除。

### FreeBSD 上的 KDE

链接

[KDE FreeBSD](https://freebsd.kde.org/)

[KDE Community FreeBSD](https://community.kde.org/FreeBSD)

联系方式：Adriaan de Groot <<kde@FreeBSD.org>>

FreeBSD 上的 KDE 项目为 FreeBSD ports 树打包 KDE 社区的软件，以及依赖项和相关软件。该软件包括一个名为 KDE Plasma 的完整桌面环境（支持 X11 和 Wayland），以及数百个可在任何 FreeBSD 机器上使用的应用程序。

KDE 团队 (kde@) 是 desktop@ 和 x11@ 的一部分，构建软件栈以使 FreeBSD 成为美观且可用作日常图形化桌面机器的系统。

以下说明主要描述 KDE 的 ports，但也包含对整个桌面栈重要的内容。

#### Qt6 已登陆

KDE ports 中的重大新闻其实并非直接与 KDE 相关。Qt6 已登陆，这为我们迎接下一代基于 Qt 的应用程序做好了准备。现在可以使用 `USES=qt:6` 来选择新的 Qt 版本。一些 port 已被 flavor 化以使用新版本。

KDE 本身未受影响：上游针对 Qt6 的 KDE Frameworks 工作尚未完成。大多数 KDE Frameworks 将能在 Qt6 下编译，但这目前对 FreeBSD ports 并无实际意义。

通过 `devel/qt6` 你可以获得 Qt 6.4.0，于本季度末发布。

**KDE 栈**

KDE Gear 每季度发布一次，KDE Plasma 每月更新一次，KDE Frameworks 也每月发布一个新版本。这些（大型）更新在上游发布后不久便会登陆，不单独列出。

* KDE Frameworks 5 目前为 5.98 版本（2022 年 9 月的月度发布）。
* KDE Gear 目前为 22.08.1 版本（2022 年 9 月更新）。
* KDE Plasma 目前为 5.24.6 版本（2022 年 7 月更新）。注意，KDE Plasma 5.25 已在上游发布，但在登陆 ports 树之前正在等待修复（例如 KDE 错误跟踪器中的[此 KActivityManager 错误](https://bugs.kde.org/show_bug.cgi?id=457906)）。

**相关 Ports**

* `accessibility/qt5-speech` 现在支持多个后端，以及无后端选项，用于语音合成。
* `devel/cmake` 被重新组织，因此 `devel/cmake` 现在是一个 metaport，安装 `devel/cmake-core` 和 CMake 套件的其余部分。（感谢 diizzy@）
* CMake ports 也已更新到 3.24 版本，Ports 树中各处都有相应的更改。
* `net/qt5-network` 改进了与 libressl 的兼容性。
* `x11/plasma-wayland-protocols` 已更新，为下季度的 KDE Plasma Desktop 更新做准备。

### GCC：新维护者、GCC 12.2 及更多

链接

[GCC 项目](https://gcc.gnu.org)

[GCC 11 发布系列](https://gcc.gnu.org/gcc-11/)

[GCC 12 发布系列](https://gcc.gnu.org/gcc-12/)

联系方式：<toolchain@FreeBSD.org>

联系方式：Lorenzo Salvadore <<salvadore@FreeBSD.org>>

salvadore@ 接管了所有对应于受支持 GCC 版本的现有 port，即：`lang/gcc10`、`lang/gcc11`、`lang/gcc11-devel`、`lang/gcc12`、`lang/gcc12-devel` 和 `lang/gcc13-devel`。

目前，-devel port 每周更新一次，除非构建失败导致无法更新。当然，在后一种情况下，构建失败会尽快修复并报告给上游。

GCC 12.2 已发布。传统上，FreeBSD 等待 GCC 的第二个次要版本发布后再将其用作默认 GCC 版本，以便大多数需要用 GCC 编译的软件已经移植到最新主要版本。因此，将默认 GCC 版本更新到 12 的工作已经开始。

非常感谢 antoine@ 已经进行了第一次 exp-run，以及参与此过程的所有贡献者、维护者和提交者。

<https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265954>

关于 LTO 的讨论仍在继续，各方观点不一。如果你感兴趣，可以阅读最新的讨论：`lang/gcc11`：[构建时需要对 /tmp 消耗的警告](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=264697) 和 `lang/gcc11`：[构建卡住](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=266807)。提醒：LTO\_BOOTSTRAP 是一个默认启用的选项。如果你在自己的机器上构建 port 时其资源消耗无法接受，禁用此选项可让你获得更轻量的编译。

jbeich@ 提交了一个[补丁](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=265962)，以暴露非默认的 `-stdlib=libc++` 支持，该补丁已成功提交到所有相关的 port（gcc >= 11）。

diizzy@ [刷新了](https://reviews.freebsd.org/D36372) MASTER\_SITE\_GCC 变量中的镜像列表，同时移除了 ftp 镜像。如有需要，会回退到主 GCC 站点。

以下三项需要与上游 GCC 一起推进的更改仍然需要帮助（需要 GCC 源码和上游的专业知识，而非 port 框架知识）：

* 将 `lang/gcc11/patch-gets-no-more` 上游化
* 将 `lang/gcc11/patch-arm-unwind-cxx-support` 上游化
* <https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=256874>

### sysutils/lsof 重大升级

链接

[lsof 项目仓库](https://github.com/lsof-org/lsof)

联系方式：Larry Rosenman <<ler@FreeBSD.org>>

`sysutils/lsof` 进行了一次重大升级，不再查询 `/dev/kmem` 获取数据，改为使用用户空间 API。这花了很长时间才合入源码树，但终于完成了。它修复了 `lsof(8)`，使其自 13.0-RELEASE 以来首次重新支持 ZFS。这将使未来的维护变得更加容易。

致内核开发者：如果你所做的更改破坏了 lsof，请在 <https://github.com/lsof-org/lsof> 提交 GitHub 拉取请求。请测试对 lsof 使用的接口所做的任何更改，并确保它们仍然有效。这些应该现在都是用户空间接口，但请务必测试。

感谢 Warner Losh <<imp@FreeBSD.org>>、Mateusz Guzik <<mjg@FreeBSD.org>> 和 Ed Maste <<emaste@FreeBSD.org>> 帮助完成了这一重大更改的合入。

## 第三方项目

许多项目基于 FreeBSD 构建或在其项目中整合了 FreeBSD 的组件。由于这些项目可能对更广泛的 FreeBSD 社区具有价值，我们有时会在季度报告中包含这些项目提交的简要更新。FreeBSD 项目不对这些提交中任何声明的准确性或真实性作出任何保证。

### 容器与 FreeBSD：Pot、Potluck 和 Potman

链接

[Pot 组织 GitHub](https://github.com/bsdpot)

联系方式：Luca Pizzamiglio (Pot) <<pizzamig@freebsd.org>>

联系方式：Stephan Lichtenauer (Potluck) <<sl@honeyguide.eu>>

联系方式：Michael Gmelin (Potman) <<grembo@freebsd.org>>

Pot 是一个 Jail 管理工具，也通过 Nomad 支持编排。

上季度，pot 0.15.3 发布了。它包含一系列改进，如 `mount-out` 用于移除或卸载之前 `mount-in` 的文件夹或文件系统、`signal` 和 `exec` 命令、更好的 Jail 生命周期处理以及许多错误修复。

新版本的 Nomad 驱动 `nomad-pot-driver` 0.9.0 也已发布，增加了 signal 和 exec 支持以及稳定性修复。

Potluck 旨在成为 FreeBSD 和 Pot 版的 Docker Hub：一个 pot flavours 和完整容器镜像的仓库，用于 Pot 并在许多情况下用于 Nomad。

自上次状态报告以来，已提交了许多更改，包括对核心镜像（如 grafana、postgresql-patroni 或 loki）的许多修复和改进。此外，所有镜像已为 FreeBSD 13.1 和 12.3 重新构建，并使用了当前季度的包版本。

最后，Luca 在 EuroBSDCon 2022 上发表了题为 [How far a naive FreeBSD container implementation can go](https://2022.eurobsdcon.org/schedule) 的演讲，介绍了 Pot 的实现和生态系统。

一如既往，欢迎反馈和补丁。

***

最后修改于：2022 年 10 月 20 日，由 Lorenzo Salvadore 修改


---

# 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://book.bsdcn.org/status/2022/2022-q3.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.
