# FreeBSD 2023 年第二季度状态报告

* 原文：[FreeBSD Status Report Second Quarter 2023](https://www.freebsd.org/status/report-2023-04-2023-06/)

这是 2023 年第二份状态报告，共有 37 份报告。

如你所见，我们的报告数量比上季度有所增加。这是个好消息，也彰显了 FreeBSD 社区的活跃程度，以及大家始终致力于提供高质量软件的努力。

特别请注意，夏季已到，不要错过我们谷歌编程之夏学生分享的精彩项目。

祝阅读愉快。

Lorenzo Salvadore

代表状态团队敬上。

## FreeBSD 团队报告

可在 [管理页面](https://www.freebsd.org/administration/) 查阅来自各官方及半官方团队的条目。

### FreeBSD 核心团队

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

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

#### 2023 年 5 月 开发峰会

核心团队在 5 月 17–18 日的 FreeBSD 开发者峰会上展示了动态更新。可在 <https://wiki.freebsd.org/DevSummit/202305> 查看演示文稿。

#### FreeBSD 14

核心团队正在与其他团队协作，确保 FreeBSD 14.0-RELEASE 拥有最高质量标准。

核心团队对 [14 版本不再支持](https://www.freebsd.org/platforms/) riscv64sf（64 位 RISC-V 软浮点）表示无异议。

#### 同 FreeBSD 基金会的会议

核心团队与 FreeBSD 基金会持续定期会面，讨论 FreeBSD 的管理、开发及后续发展。核心团队与基金会董事会及员工举行了两次会议，讨论基金会如何协助核心团队及整个项目。

#### Matrix 即时通讯方案

在 2023 年 5 月 开发峰会的核心团队动态中，其中一个主要议题是提出新的项目沟通解决方案。

目前，由集群管理员设置了测试实例 `matrix-dev.FreeBSD.org`。所有开发者可使用 Kerberos 凭证访问该实例，一些公开聊天室可通过 Matrix 的联合功能加入。请注意，此实例仅用于测试和评估，不保证备份或可用性。

核心团队仍在讨论该服务的范围和管理方式，并收集社区反馈。

#### 行为准则委员会

行为准则委员会（conduct@）目前由核心团队管理。

#### 提交权限

核心团队批准了 Christos Margiolis (christos@) 的 src 提交权限。

### FreeBSD 基金会

链接：

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

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

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

[基金会合作计划](https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/) URL: <https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/>

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

[基金会新闻与活动](https://www.freebsdfoundation.org/news-and-events/) URL: <https://www.freebsdfoundation.org/news-and-events/>

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

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

#### FreeBSD 生日快乐，三十岁了

二十三年来，我们始终自豪地支持这个非凡的操作系统及其充满活力的社区，并期待在将来的日子里继续提供支持。在本次进展中，我们将概述基金会在多个领域对 FreeBSD 的贡献。内容涵盖项目开发举措，其中一些已有详细报告。此外，我们还将展示对 FreeBSD 的推广工作、促进社区参与的努力，以及拓展合作伙伴关系的进展。最后，我们将探讨为争取更多资金而开展的持续工作，从而能够投入更多资源来填补项目中的空白。

#### 筹款工作

本季度，我们在与商业 FreeBSD 用户的互动方面取得了重大进展。为了增强与现有及潜在商业用户的合作关系，我们聘请了 Greg Wallace 担任合作与研究总监。他的主要目标是扩大与商业用户的合作。从就任以来，Greg 就全力以赴，在一个季度内会见了众多公司。这些交流提供了宝贵的洞见，让我们了解 FreeBSD 的实际应用情况、用户面临的挑战以及项目可以改进的领域。通过了解这些方面，我们可以更明智地决定资金分配，并认识到 FreeBSD 的独特优势。此外，该职位还负责开展研究，以探索目标市场、探索 FreeBSD 的新机会，并确保我们的声音在相关讨论中被听到。关于 Greg 的目标和成就的更多细节，可参见下面的状态更新。

基金会对所有为支持我们工作的捐赠者表示衷心感谢。除了众多个人捐赠外，我们很高兴收到了 NetApp 和黑莓的大额捐赠。此外，我们还获得了 Tarsnap、iXsystems 和 LPI 对 FreeBSD 开发者峰会的赞助。这些赞助大大帮助了抵消开支，并使我们能够为参会者提供可承受的注册费用。

今年我们的预算约为 2,230,000 美元，其中包括对 FreeBSD 推广和软件开发的增加支出。超过一半的预算用于直接改善 FreeBSD 和保持其安全性的工作。

通过设立专职负责合作伙伴的岗位，我们能够有效强调投资我们工作的意义，并向公司展示项目的长期可持续性。

您的支持在我们的使命中起着关键作用，我们对您对 FreeBSD 社区的承诺深表感谢。请考虑为我们 2023 年的筹款活动捐赠！<https://www.freebsdfoundation.org/donate/>

对于重要的商业捐赠者，我们有 [FreeBSD 基金会合作计划](https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/)，该计划成立于 2017 年。

#### 合作伙伴计划

大家好，我是 Greg Wallace。今年四月初，我加入基金会，担任合作与研究总监。[这篇博客介绍了我和这个职位](https://freebsdfoundation.org/blog/freebsd-foundation-welcomes-new-team-members/)。在合作方面，我专注于与使用 FreeBSD 的公司建立联系。我已经会见了几家公司，了解它们如何使用 FreeBSD。其中一些会谈产生了潜在合作的讨论。我会继续了解有趣的 FreeBSD 用户公司，并主动联系它们。

我的目标是与每一家使用 FreeBSD 的公司取得联系，倾听它们的故事。如果你属于此类公司且我们尚未联系，请在 [我的日程](https://calendly.com/greg-freebsdfound/30min) 上安排通话。

本季度其他合作相关活动包括：

* 我制作了 [这些幻灯片](https://docs.google.com/presentation/d/1tDCpbfxbqIucmJF6H15vK-ETrQsCMOVtxoqLem_V0Z0/edit?usp=sharing)，介绍了与基金会合作如何推动 FreeBSD 的发展。如果你对改进这些幻灯片有建议，或希望我向你的组织进行展示，请 [发邮件给我](mailto:greg@freebsdfoundation.org) 或 [安排通话](https://calendly.com/greg-freebsdfound/30min)。欢迎随意分享此演示文稿，无论是部分还是全部内容。
* 我与基金会同事合作，为向行业分析师的演示制作了多份行业特定的使用案例幻灯片。
* 我还在寻求包括以下机构的资助机会：
  * NSF 安全与可信赖网络空间（SaTC）
  * 主权科技基金（Sovereign Tech Fund）
  * NGI

在研究方面，我的总体目标是确保社区的所有专业知识能够在全球关于计算性能、安全性和能源效率的讨论中得到体现。作为一个社区，我们有很多内容可以贡献。

到目前为止，我一直在跟踪并参与以下讨论：

* [欧洲开放论坛](https://openforumeurope.org/open-source/)
* [CHIPS 研究与开发](https://www.nist.gov/chips/research-and-development-program)

如果你有研究想法或希望在该领域合作，请 [发邮件给我](mailto:greg@freebsdfoundation.org) 或 [安排通话](https://calendly.com/greg-freebsdfound/30min)。

#### 改进操作系统

在 2023 年第二季度，共有 339 个 src、155 个 Ports 和 20 个 doc 树提交标注 FreeBSD 基金会为赞助方。其中部分及其他基金会赞助的工作在单独报告条目中有所描述：

* [持续集成](https://www.freebsd.org/status/report-2023-04-2023-06/#_continuous_integration)
* [作为一级 cloud-init 平台的 FreeBSD](https://www.freebsd.org/status/report-2023-04-2023-06/#_freebsd_as_a_tier_1_cloud_init_platform)
* [基本系统中的 OpenSSL 3](https://www.freebsd.org/status/report-2023-04-2023-06/#_openssl_3_in_base)
* [FreeBSD 上的 OpenStack](https://www.freebsd.org/status/report-2023-04-2023-06/#_openstack_on_freebsd)
* [使用 ktrace(1) 的安全沙箱](https://www.freebsd.org/status/report-2023-04-2023-06/#_security_sandboxing_using_ktrace1)
* [amd64 SIMD 增强](https://www.freebsd.org/status/report-2023-04-2023-06/#_simd_enhancements_for_amd64)

以下是其他基金会赞助工作的示例：

* 修复 \[fsck\_ffs(8)(<https://man.freebsd.org/cgi/man.cgi?query=fsck\\_ffs\\&sektion=8\\&format=html>) 的 Bug
* 修复 \[killpg(2)(<https://man.freebsd.org/cgi/man.cgi?query=killpg\\&sektion=2\\&format=html>) 的 Bug
* 改进 hwpmc
* 改进 vmm
* LLVM 16 与 OpenSSL 3.0 的 Ports 修复与解决方案
* 将 Port kinst 移植到 RISC-V 及相关 DTrace 工作
* 更新 libfido2 到版本 1.9.0
* 各类 LinuxKPI 802.11 改进
* 各类 RISC-V 改进
* 从版本 4.9.3 更新并导入 tcpdump 至版本 4.99.4

可在 [基金会项目页面](https://freebsdfoundation.org/our-work/projects/) 查看当前及以往基金会承包工作的状态。

基金会技术团队成员于 5 月 17–18 日在加拿大渥太华举行的开发者峰会上进行了展示，包括主持谷歌编程之夏、[FreeBSD 基金会](https://wiki.freebsd.org/DevSummit/202305?action=AttachFile\&do=view\&target=FreeBSD_Foundation_Devsummit_Spring_2023_Day_2.pdf) [技术评审](https://wiki.freebsd.org/DevSummit/202305?action=AttachFile\&do=view\&target=FreeBSD_Foundation_Devsummit_Spring_2023_Day_2_part1.pdf) 和 [工作流](https://docs.google.com/presentation/d/e/2PACX-1vSnEW5Z0ttQOAeqEEY8KHkfiRGeFUm4i8XrYsfY8TNYD%E2%80%94%E2%80%8Byx1P6MUu2_u-mCcpe6PMMITjeDIgT31CC/pub) 工作组会议。Pierre Pronchery 介绍了 [BSD 驱动程序协调](https://www.bsdcan.org/events/bsdcan_2023/schedule/speaker/89-pierre-pronchery/)，En-Wei Wu 讨论了与基金会合同完成的 [wtap 工作](https://www.bsdcan.org/events/bsdcan_2023/schedule/session/139-add-operating-modes-to-wtap4/)。

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

基金会提供全职员工并资助项目，以改进 FreeBSD 项目的持续集成、自动化测试及整体质量保证工作。关于持续集成的工作，可在专门报告条目中阅读更多内容。

#### 宣传工作

我们的大部分工作都致力于 FreeBSD 项目的推广。这可能包括突出展示有趣的 FreeBSD 工作、制作文献和视频教程、参加活动或进行演讲。我们制作的文献旨在教授人们 FreeBSD 基础知识，并帮助他们更轻松地采纳或贡献 FreeBSD。除了参加和演讲外，我们还鼓励并协助社区成员举办自己的 FreeBSD 活动、做演讲或管理 FreeBSD 展台。

FreeBSD 基金会在全球范围内赞助许多会议、活动和峰会。这些活动可能与 BSD 相关、开源相关，或是面向弱势群体的技术活动。我们支持以 FreeBSD 为中心的活动，以提供知识分享、项目协作和促进开发者与商业用户合作的平台，从而维持健康的生态系统。我们支持非 FreeBSD 活动，以宣传和提高 FreeBSD 的认知度，增加其在不同应用中的使用，并招募更多贡献者加入项目。我们很高兴大部分活动能够回归线下参与。除了参加和策划活动，我们还在持续开展新的培训计划，并更新我们的 [使用指南](https://freebsdfoundation.org/freebsd-project/resources/)，以方便更多人尝试 FreeBSD。

以下是我们在推广和教育方面的一些工作：

* 协助组织并参加了 2023 年 5 月 17-18 日在加拿大安大略渥太华举办的 [开发者峰会](https://wiki.freebsd.org/DevSummit/202305)
* 在 2023 年 5 月 17-20 日举办的 [BSDCan](https://www.bsdcan.org/2023/) 中设立展台并赞助手提袋
  * 可在 [博客](https://freebsdfoundation.org/our-work/latest-updates/) 查看行程报告
* 在 BSDCan 庆祝项目 30 周年，提供蛋糕及特刊 [FreeBSD 期刊 30 周年纪念版](https://freebsdfoundation.org/past-issues/freebsd-30th-anniversary-special-edition/)
* 在 2023 年 7 月 13-16 日于美国俄勒冈州波特兰的 [FOSSY](https://sfconservancy.org/fossy/) 安排 FreeBSD 研讨会与讲座
* 确认对 2023 年 9 月 14-17 日在葡萄牙科英布拉举行的 [EuroBSDCon 2023](https://2023.eurobsdcon.org/) 的银级赞助
* 确认对 2023 年 10 月 15-17 日在美国北卡罗来纳州罗利举行的 [All Things Open](https://2023.allthingsopen.org/) 展位支持
* 开始规划 FreeBSD 秋季厂商峰会
* 欢迎两位 [新团队成员](https://freebsdfoundation.org/blog/freebsd-foundation-welcomes-new-team-members/)：Greg Wallace 和 Pierre Pronchery
* 发布 [4 月](https://freebsdfoundation.org/news-and-events/newsletter/freebsd-foundation-update-april-2023/) 和 [6 月](https://freebsdfoundation.org/news-and-events/newsletter/12518/) 通讯
* 通过特别视频和博客文章庆祝 [FreeBSD 日](https://freebsdfoundation.org/national-freebsd-day/) 及项目 30 周年纪念，活动日期为 6 月 19 日及当周
* 其他博客文章：
  * [EuroBSDCon 2023 差旅补助申请开启](https://freebsdfoundation.org/blog/eurobsdcon-2023-travel-grant-application-now-open/) - 注意：申请截止日期为 2023 年 8 月 2 日
  * [AsiaBSDcon 行程报告](https://freebsdfoundation.org/blog/asiabsdcon-2023-trip-report/)
* FreeBSD 新闻报道：
  * [信息世界：FreeBSD 30 周年快乐！](https://freebsdfoundation.org/news-and-events/latest-news/infoworld-happy-30th-freebsd/)

我们通过发布专业制作的 FreeBSD 期刊，帮助全球了解 FreeBSD。正如之前提到的，FreeBSD 期刊现免费发行。了解更多信息及访问最新期刊，请访问 <https://www.freebsdfoundation.org/journal/>。

更多关于我们参加的活动及即将举办的活动信息，可访问 [https://www.FreeBSDfoundation.org/news-and-events/](https://www.freebsdfoundation.org/news-and-events/)。

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

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

访问 [https://www.freebsdfoundation.org](https://www.freebsdfoundation.org/) 了解更多关于我们如何支持 FreeBSD 及如何提供帮助的信息。

### FreeBSD 发布工程团队

链接：

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

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

[FreeBSD 发行版](https://download.freebsd.org/releases/ISO-IMAGES/) URL: <https://download.freebsd.org/releases/ISO-IMAGES/>

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

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

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

在 2023 年第二季度，团队继续推进 13.2-RELEASE 工作。13.2 周期严格遵循预定计划，最终在四月中旬完成了三次额外 RC 构建及 RELEASE 构建和公告。

在与项目管理内各团队协调后，发布工程团队重新审视了即将到来的 14.0-RELEASE 原始计划，主要因部分工作尚在进行中。更新后的计划经过讨论和微调，以应对部分问题，并最终在 FreeBSD 项目网站上发布。新计划将 14.0-RELEASE 目标定于 2023 年 10 月。

团队继续为 `main`、`stable/13` 和 `stable/12` 分支提供每周开发快照构建。注意，今后将不再针对 `stable/12` 提供快照构建。

赞助方：Tarsnap

赞助方：FreeBSD 基金会

### 集群管理团队

链接：

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

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

FreeBSD 集群管理团队成员负责管理项目依赖的机器，用于同步其分布式工作和通信。

本季度，团队完成了以下工作：

* 定期支持 FreeBSD.org 用户账户。
* 定期维护（含替换）所有物理主机和镜像的磁盘及部件。
* 启用 FreeBSD 项目管理镜像对 [https://www.FreeBSD.org](https://www.freebsd.org/) 和 [https://docs.FreeBSD.org](https://docs.freebsd.org/) 的镜像同步。
* 集群刷新，将所有主机和 jail 升级至 14-CURRENT、13-STABLE 和 12-STABLE 的最新版本。

#### 正在进行的工作

* 主要站点的大规模网络升级
  * 新的 [Juniper](https://www.juniper.net/) 交换机已到达主站点以替换旧设备。感谢 Juniper 的捐赠。
* 更换主站点及部分镜像的旧服务器
  * 除了损坏的 CI 服务器外，还有几台旧服务器存在损坏磁盘和故障电源问题。此任务与 FreeBSD 基金会及捐助方/赞助方合作完成。
* 安装新的 CI（持续集成）机器，这些机器由包构建器重新利用。
* 审查运行在 FreeBSD 集群中的服务的备份配置。

#### FreeBSD 官方镜像概览

当前镜像位置包括：澳大利亚、巴西、德国、日本（两个完整镜像站）、马来西亚、南非、中国台湾、英国（完整镜像站）、美国—加利福尼亚、新泽西（主站）、华盛顿。

硬件及网络连接由以下机构慷慨提供：

* [Bytemark Hosting](https://www.bytemark.co.uk/)
* [BroadBand Tower, Inc 云与 SDN 实验室](https://www.bbtower.co.jp/en/corporate/)
* [國立陽明交通大學資訊工程學系](https://www.cs.nycu.edu.tw/)
* [Equinix](https://deploy.equinix.com/)
* [澳大利亚互联网协会](https://internet.asn.au/)
* [互联网系统联盟](https://www.isc.org/)
* [INX-ZA](https://www.inx.net.za/)
* [KDDI Web Communications Inc](https://www.kddi-webcommunications.co.jp/english/)
* [马来西亚研究与教育网络](https://www.mohe.gov.my/en/services/research/myren)
* [Metapeer](https://www.metapeer.com/)
* [NIC.br](https://nic.br/)
* [Your.Org](https://your.org/)
* [365 Data Centers](https://365datacenters.com/)

法兰克福单服务器镜像是欧洲主要镜像站，在带宽和使用量上居首。

我们仍在欧洲寻找额外完整镜像站（五台服务器），以替换英国完整镜像站的旧服务器。

在全球互联网交换点（澳大利亚、巴西、南非）设立单镜像的模式效果良好；如果你了解或就职于相关机构并能赞助单镜像服务器，请联系我们。美国（西海岸）和欧洲（任意地点）为优选地点。

请参阅 [通用镜像布局](https://wiki.freebsd.org/Teams/clusteradm/generic-mirror-layout) 获取完整镜像站规格，以及 [tiny-mirror](https://wiki.freebsd.org/Teams/clusteradm/tiny-mirror) 获取单镜像站信息。

### 持续集成

链接：

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

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

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

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

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

[与 freebsd-testing@ 相关的工单](https://bugs.freebsd.org/bugzilla/buglist.cgi?bug_status=%3Cem%3Eopen%3C/em%3E\&email1=testing%40FreeBSD.org\&emailassigned_to1=1\&emailcc1=1\&emailtype1=equals) URL: [https://bugs.freebsd.org/bugzilla/buglist.cgi?bug\_status=*open*\&email1=testing%40FreeBSD.org\&emailassigned\_to1=1\&emailcc1=1\&emailtype1=equals](https://bugs.freebsd.org/bugzilla/buglist.cgi?bug_status=%3Cem%3Eopen%3C/em%3E\&email1=testing%40FreeBSD.org\&emailassigned_to1=1\&emailcc1=1\&emailtype1=equals)

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

[dev-ci 邮件列表](https://lists.freebsd.org/subscription/dev-ci) URL: [https://lists.FreeBSD.org/subscription/dev-ci](https://lists.freebsd.org/subscription/dev-ci)

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

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

联系方式：[freebsd-testing 邮件列表](https://lists.freebsd.org/mailman/listinfo/freebsd-testing)

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

在 2023 年第二季度，我们与项目贡献者和开发者合作，满足其测试需求。同时，我们也与外部项目和公司合作，通过在 FreeBSD 上进行更多测试来提升他们的产品质量。

已完成的重要任务：

* 新增 [FreeBSD-stable-13-amd64-gcc12\_build](https://ci.freebsd.org/job/FreeBSD-stable-13-amd64-gcc12_build/) 作业。
* main 和 stable/13 分支的构建环境已更新到 13.2-RELEASE，stable/12 分支更新为 12.4-RELEASE。
* 使用 gcc12 的 \*-build 作业已将失败报告发送至 [dev-ci 邮件列表](https://lists.freebsd.org/subscription/dev-ci)。
* 在 [BSDCan 2023 开发者峰会](https://wiki.freebsd.org/DevSummit/202305) 上展示 Testing/CI 状态更新。

正在进行的任务：

* 设计并实现 pre-commit CI 构建和测试（支持 [workflow 工作组](https://gitlab.com/bsdimp/freebsd-workflow)）
* 设计并实现使用 CI 集群构建发行产物（如发布工程操作）
* 简化贡献者和开发者的 CI/测试环境配置
* 设置 CI 阶段环境并运行实验性作业
* 整理 freebsd-ci 仓库脚本，为合并到 src 仓库做准备
* 改进硬件测试实验室并增加测试硬件
* 合并 [D38815](https://reviews.freebsd.org/D38815)
* 合并 [D36257](https://reviews.freebsd.org/D36257)

开放或排队任务：

* 收集并整理 [CI 任务和想法](https://hackmd.io/@FreeBSD-CI/freebsd-ci-todo)
* 为运行测试的虚拟机提供公共网络访问
* 使用裸机硬件运行测试套件
* 为 -CURRENT 构建 drm ports 测试
* 计划运行 ztest 测试
* 帮助更多软件在其 CI 流程中支持 FreeBSD（Wiki 页面：[3rdPartySoftwareCI](https://wiki.freebsd.org/3rdPartySoftwareCI)、[HostedCI](https://wiki.freebsd.org/HostedCI)）
* 与托管 CI 提供商合作，提升 FreeBSD 支持

更多 WIP 信息请参见 [freebsd-testing@ 相关工单](https://bugs.freebsd.org/bugzilla/buglist.cgi?bug_status=%3Cem%3Eopen%3C/em%3E\&email1=testing%40FreeBSD.org\&emailassigned_to1=1\&emailcc1=1\&emailtype1=equals)，欢迎加入我们的工作！

赞助方：FreeBSD 基金会

### Ports

链接：

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

[Ports 贡献指南](https://docs.freebsd.org/en/articles/contributing/#ports-contributing) URL: <https://docs.freebsd.org/en/articles/contributing/#ports-contributing>

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

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

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

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

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

Ports 管理团队负责把控 Ports 的整体方向、构建包以及人员事务。本季度工作情况如下：

当前 Ports 中共有 34,400 余款 port。现有 3,019 个开放的 ports PR，其中 746 个尚未分配。本季度 `main` 分支由 151 名提交者完成 10,439 次提交，`2023Q2` 分支由 55 名提交者完成 745 次提交。与上一季度相比，ports 数量略有增加，开放 PR 数量略有减少，ports 提交数量有所增加。

本季度，我们欢迎 Tom Judge（tj@）回归，同时告别 Steve Wills（swills@），Steve 也曾是 portmgr 成员。作为 portmgr 潜水者项目的一部分，我们欢迎 Ronald Klop（ronald@）、Renato Botelho（garga@）和 Matthias Andree（mandree@）加入。

Portmgr 已恢复在源码中引入子包的工作，但仍有多项内容需要完善。

在软件方面，pkg 更新至 1.19.2，Firefox 更新至 114.0.2，Chromium 更新至 114.0.5735.198，KDE Gear 更新至 23.04.2。本季度，antoine@ 进行了 23 次 exp-run 来测试包更新，调整 CPU\_MAXSIZE 至 1024，修复 devel/cmake-core 在 armv7 上的失败，并为 USES=meson 添加 `--auto-features=enabled`。最后，Ports Tree 已更新以支持 FreeBSD-CURRENT 上的 LLVM 16 和 OpenSSL 3。

### 项目

这些项目跨越多个类别，从内核和用户空间到 Ports 和第三方项目。

### Cirrus-CI

链接： [FreeBSD Cirrus-CI 仓库](https://cirrus-ci.com/github/freebsd/) URL: <https://cirrus-ci.com/github/freebsd/>

[FreeBSD src CI](https://cirrus-ci.com/github/freebsd/freebsd-src) URL: <https://cirrus-ci.com/github/freebsd/freebsd-src>

[FreeBSD doc CI](https://cirrus-ci.com/github/freebsd/freebsd-doc) URL: <https://cirrus-ci.com/github/freebsd/freebsd-doc>

联系方式：Brooks Davis <brooks@FreeBSD.org>

联系方式：Ed Maste <emaste@FreeBSD.org>

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

Cirrus-CI 是一项托管的持续集成服务，为开源项目提供 Linux、Windows、macOS 和 FreeBSD 上的 CI 服务。它补充了我们的 Jenkins CI 基础设施，支持包括 GitHub RP 和 FreeBSD fork 测试在内的其他用例。我们在 2019 年将 Cirrus-CI 配置添加到 FreeBSD src 源码，在 2020 年添加到 doc。许多托管在 GitHub 的 FreeBSD 项目（如 drm-kmod、kyua、pkg 和 poudriere）也使用 Cirrus-CI。

Cirrus-CI 配置持续进行维护更新（迁移至最新 FreeBSD 发行镜像）。在 src tree 中，我们增加了一些额外检查，确保在需要时更新生成的文件（`make sysent` 和 `make makeman`），并检查缺失目录。我们还增加了使用 Clang/LLVM 16 工具链包进行构建的作业，与基本系统中 Clang 版本保持一致。GCC 作业现在默认在 GitHub 镜像上运行，适用于所有提交。

赞助方：美国国防高级研究计划局

赞助方：FreeBSD 基金会

### FreeBSD 内核中的 BATMAN 支持

链接：

[Wiki 页面](https://wiki.freebsd.org/SummerOfCode2023Projects/CallingTheBatmanFreeNetworksOnFreeBSD) URL: <https://wiki.freebsd.org/SummerOfCode2023Projects/CallingTheBatmanFreeNetworksOnFreeBSD>

\[源代码（RP)(<https://github.com/obiwac/freebsd-gsoc/pull/1>) URL: <https://github.com/obiwac/freebsd-gsoc/pull/1>

联系方式：Aymeric Wibo <obiwac@FreeBSD.org>

BATMAN（Better Approach to Mobile Ad-hoc Networking，即连网络优化方案）是 Freifunk 项目开发并使用的路由协议，用于（主要是无线）多跳自组网络。Freifunk 是一项由德国发起的城市级开放 WiFi 网络计划，基于网络中立性原则。BATMAN 的目标是完全去中心化协议；网络中的任何节点都无需了解或关心整个网络的拓扑结构。

该协议在 Linux 上通过内核模块 `batman-adv` 提供支持，本项目旨在将其引入 FreeBSD，包括内核模块本身，以及创建 BATMAN 网络所需的用户空间网络库和工具。

目前，接口创建及交互（Linux 和 FreeBSD 用户空间均支持）已可工作，数据包传输功能部分可用，但尚不完整。batadv 接口的支持已加入 \[ifconfig(8)(<https://man.freebsd.org/cgi/man.cgi?query=ifconfig\\&sektion=8\\&format=html)。>

导师：[Mahdi Mokhtari](mailto:mmokhi@FreeBSD.org)

赞助方：2023 谷歌编程之夏

### 使 LinuxBoot 支持 FreeBSD

联系方式：Warner Losh <imp@bsdimp.com>

链接：

[LinuxBoot 项目](https://www.linuxboot.org/) URL: <https://www.linuxboot.org/>

[BSDCan 2023 kboot 演讲幻灯片](https://docs.google.com/presentation/d/1N5Jp6XzYWv9Z9RhhETC-e6tFkqRHvp-ldRDW_9h2JCw/edit?usp=sharing) URL: <https://docs.google.com/presentation/d/1N5Jp6XzYWv9Z9RhhETC-e6tFkqRHvp-ldRDW_9h2JCw/edit?usp=sharing>

LinuxBoot 是一项旨在创建清洁、稳健、可审计且可重复的启动固件的项目。最初作为谷歌的一个特定项目，它已经发展为支持所有使用 Linux 启动最终操作系统的启动环境。许多平台现在支持该环境，有时甚至是唯一可用的启动环境。此外，一些嵌入式设备的 LinuxBoot 环境是硬编码的，难以更改，因此能够从 Linux 启动 FreeBSD 是非常有价值的。

旧的 Sony PlayStation 3 平台使用名为 `kboot` 的引导加载器从其 Linux 内核启动 FreeBSD（所有这些都早于 LinuxBoot 项目）。该代码已被大幅增补，并通过可替换的每架构插件变得通用。正常的 FreeBSD **/boot/loader** 被构建为 Linux 二进制文件，用于读取 FreeBSD 内核、模块和可调参数，将它们放入内存，就像运行在预启动环境中一样，然后使用 \[kexec\_load(2)(<https://man.freebsd.org/cgi/man.cgi?query=kexec\\_load\\&sektion=2\\&format=html>) 将映像加载到 Linux 内核并执行特殊重启。对于支持 UEFI 的系统，它会将 UEFI 内存表和指向 UEFI 运行时服务的指针传递给新内核。

它支持从主机文件系统、主机块设备上的任意 \[loader(8)(<https://man.freebsd.org/cgi/man.cgi?query=loader\\&sektion=8\\&format=html>) 支持的文件系统（包括跨多个设备的 pool）、内存盘映像以及通过网络下载的文件加载数据。可任意混合使用。例如，配置覆盖可以从主机文件系统加载，而内核从专用存储（如 NVME）或 RAM 磁盘映像加载。它支持通过 stdin/stdout 运行的主机控制台，并支持显式指定路径，例如 `/dev/nvme0ns1:/boot/loader/gerbil.conf`。还支持 ZFS 启动环境，包括一次性启动功能。

现在 FreeBSD/aarch64 可以在 LinuxBoot 环境中从 Linux 启动，功能与 \[loader.efi(8)(<https://man.freebsd.org/cgi/man.cgi?query=loader.efi\\&sektion=8\\&format=html>) 相当。为 GICv3 提供了内存布局工作补丁 ([D40902](https://reviews.freebsd.org/D40902))。

FreeBSD/amd64 支持正在进行中，约完成 80%。由于 amd64 是较早的平台，它对引导加载器提供内核所需数据的要求更多。在 BIOS 环境中，内核无法从长模式获取这些数据，因此必须由引导加载器提供。尽管 UEFI 和 ACPI 提供了获取方式，但许多数据仍需引导加载器提供。内核初始化时可能会 panic，因为尚未发现和实现所有前提条件。

PowerPC 可以构建，但其状态未知。尝试获取合适的 PlayStation 3 对作者来说过于耗时。

#### 需要帮助

1. 编写 \[loader.kboot(8)(<https://man.freebsd.org/cgi/man.cgi?query=loader.kboot\\&sektion=8\\&format=html>) 文档，包括使用方法、镜像创建方式及当前可行的用例。
2. 完成 amd64 支持。
3. 统一 kboot 与 efi 的 elf 架构特定元数据代码，解决编译时差异和构建基础设施问题。
4. 增加 riscv64 支持。
5. PowerPC 测试（自重构开始后未测试）。
6. 编写脚本，将 EDK-II 镜像（例如从 QEMU）重新打包为带 FreeBSD Linux 内核的 linux-boot 镜像，用于 CI 测试。
7. 在 coreboot LinuxBoot 上测试。

赞助方：奈飞

### 改进内核模块 LLDB

链接：

[谷歌编程之夏 Wiki 项目](https://wiki.freebsd.org/SummerOfCode2023Projects/LLDBKernelModuleImprovement) URL: <https://wiki.freebsd.org/SummerOfCode2023Projects/LLDBKernelModuleImprovement>

[项目代码库](https://github.com/aokblast/freebsd-src/tree/lldb_dynamicloader_freebsd_kernel) URL: <https://github.com/aokblast/freebsd-src/tree/lldb_dynamicloader_freebsd_kernel>

联系方式：Sheng-Yi Hong <aokblast@FreeBSD.org>

FreeBSD 项目使用 LLVM 作为工具链，LLVM 自带 LLDB 调试器。用户空间调试功能已完善，但内核空间仍需改进，其中之一是 LLDB 内核模块调试功能——解析内核核心转储提供的已加载模块数据并加载模块对象。目标是为 LLDB 实现此插件，目前作为谷歌编程之夏项目进行中。

当前仍在进行调试和开发中。

赞助方：2023 谷歌编程之夏

## 用户空间

对基本系统及其程序的变更。

### 基本系统中的 OpenSSL 3

链接：

[OpenSSL 下载](https://www.openssl.org/source/) URL: <https://www.openssl.org/source/>

[OpenSSL 3.0 发布](https://www.openssl.org/blog/blog/2021/09/07/OpenSSL3.Final/) URL: <https://www.openssl.org/blog/blog/2021/09/07/OpenSSL3.Final/>

[openssl-fipsinstall](https://www.openssl.org/docs/man3.0/man1/openssl-fipsinstall.html) URL: <https://www.openssl.org/docs/man3.0/man1/openssl-fipsinstall.html>

联系方式：Pierre Pronchery <pierre@freebsdfoundation.org>

Pierre 负责将 OpenSSL 3 导入基本系统。OpenSSL 提供了通用加密和安全通信库，是 SSL/TLS 协议的开源实现。其广泛应用于邮件、即时通讯、VoIP 和全球 Web（HTTPS）服务。Apache 和 nginx 等 Web 服务器使用 OpenSSL，其合计市场份额超过 50%，凸显 OpenSSL 在互联网基础设施中的重要性。

OpenSSL 1.1 自 2016 年 8 月发布以来，已被大多数 Linux 和 BSD 系统采用，并通过 LTS 支持。然而官方支持将在今年 9 月中旬结束，因此紧急需要采用其继任者 3.0 分支。

OpenSSL 3 完全切换至 Apache License 2.0，增加了 provider 模块概念，将过时算法隔离到 *legacy* 模块，可通过 *fips* 模块使用标准 FIPS 功能并获得认证。更新的库需要应用重新编译，部分 API 已弃用，但可显式调用旧 API 以支持过渡。FreeBSD 已配置部分库和应用请求 OpenSSL 1.1 API，以便平滑迁移至 OpenSSL 3 原生 API。

虽然更新对小块输入的性能有一定影响，但 1 KB 及以上块影响不大。FIPS provider 仍需手动步骤，FreeBSD 正在寻找默认可用的解决方案。

赞助方：FreeBSD 基金会

### Linux 兼容层更新

链接：

[Linux 兼容层状态 Wiki](https://wiki.freebsd.org/Linuxulator) URL: <https://wiki.freebsd.org/Linuxulator>

[Linux 应用状态 Wiki](https://wiki.freebsd.org/LinuxApps) URL: <https://wiki.freebsd.org/LinuxApps>

联系方式：Dmitry Chagin <dchagin@FreeBSD.org>

该项目旨在提升 FreeBSD 执行未修改 \[linux(4)(<https://man.freebsd.org/cgi/man.cgi?query=linux\\&sektion=4\\&format=html>) 二进制程序的能力。

自 [cbbac5609115](https://cgit.freebsd.org/src/commit/?id=cbbac5609115) 起，实现了在 amd64 上跨信号传递保留 FPU xsave 状态，从而支持带抢占调度的现代 golang 程序。

新增功能允许在 \[namei(9)(<https://man.freebsd.org/cgi/man.cgi?query=namei&>

### Service Jail — rc.d 服务的自动 jail

链接：

[D40369: 扩展 /usr/bin/service 以支持设置 ENV 变量](https://reviews.freebsd.org/D40369) URL: <https://reviews.freebsd.org/D40369>

[D40370: rc.d 服务自动 jail 的基础设施](https://reviews.freebsd.org/D40370) URL: <https://reviews.freebsd.org/D40370>

[D40371: 自动 service jail：为服务在自动 jail 中的完整功能做一些配置](https://reviews.freebsd.org/D40371) URL: <https://reviews.freebsd.org/D40371>

联系方式：Alexander Leidinger <netchild@FreeBSD.org>

Service jail 扩展了 \[rc(8)(<https://man.freebsd.org/cgi/man.cgi?query=rc\\&sektion=8\\&format=html>) 系统，使 rc.d 服务可以自动被 jail。服务 jail 会继承父主机或父 jail 的文件系统，但默认使用 jail 的其他所有限制（进程可见性、受限网络访问、文件系统挂载权限、sysvipc 等）。额外配置可以允许继承父节点的 IP、sysvipc、内存页锁定，以及使用 bhyve 虚拟机监控器 (\[vmm(4)(<https://man.freebsd.org/cgi/man.cgi?query=vmm\\&sektion=4\\&format=html))。>

例如，如果想将 `local_unbound` 放入 service jail 并可通过 IPv4 和 IPv6 访问，只需在 \[rc.conf(5)(<https://man.freebsd.org/cgi/man.cgi?query=rc.conf\\&sektion=5\\&format=html>) 中添加：

```ini
local_unbound_svcj_options=net_basic
local_unbound_svcj=YES
```

虽然这种方式不具备使用独立文件系统和 IP/VNET 的手动 jail 的全部安全优势，但配置更加简单，同时提供了一些 jail 的安全好处，例如隐藏同一用户的其他进程。

上述链接中的补丁是对 [2019 年我所展示内容](https://lists.freebsd.org/pipermail/freebsd-jail/2019-February/003710.html) 的重写。主要区别在于引入了 ENV 变量以便更合理地追踪，这也需要修改 \[service(8)(<https://man.freebsd.org/cgi/man.cgi?query=service\\&sektion=8\\&format=html)。>

作者计划在 `stable/14` 分支之前提交 [D40369](https://reviews.freebsd.org/D40369)。[D40370](https://reviews.freebsd.org/D40370) 和 [D40371](https://reviews.freebsd.org/D40371) 将在 14.0 发布后提交，并希望获得更多审查意见。

### 使用 [ktrace(1)](https://man.freebsd.org/cgi/man.cgi?query=ktrace\&sektion=1\&format=html) 的安全沙箱

链接：

[ktrace 分支](https://github.com/jakesfreeland/freebsd-src/tree/ff/ktrace) URL: <https://github.com/jakesfreeland/freebsd-src/tree/ff/ktrace>

联系方式：Jake Freeland <jfree@FreeBSD.org>

#### 使用 [ktrace(1)](https://man.freebsd.org/cgi/man.cgi?query=ktrace\&sektion=1\&format=html) 进行 Capsicum 化

本报告介绍了对 [ktrace(1)](https://man.freebsd.org/cgi/man.cgi?query=ktrace\&sektion=1\&format=html) 的扩展，该扩展可记录尚未进行 Capsicum 化的程序的能力（capability）违规行为。

Capsicum 化的第一步逻辑是确定程序在哪些地方触发了能力违规。可以通过查看源码并移除与 Capsicum 不兼容的代码来解决，但这种方法既繁琐，又要求开发者熟悉所有能力模式下不允许的操作。

另一种方法是使用 [ktrace(1)](https://man.freebsd.org/cgi/man.cgi?query=ktrace\&sektion=1\&format=html) 自动发现违规行为。[ktrace(1)](https://man.freebsd.org/cgi/man.cgi?query=ktrace\&sektion=1\&format=html) 工具可以记录指定进程的内核活动。Capsicum 违规发生在内核内部，因此 [ktrace(1)](https://man.freebsd.org/cgi/man.cgi?query=ktrace\&sektion=1\&format=html) 可通过 `-t p` 选项记录并返回程序违规的额外信息。

传统上，程序必须进入能力模式才能报告违规。当调用受限系统调用时，它会失败并返回 `ECAPMODE: Not permitted in capability mode`。如果开发者在做错误检查，程序很可能因此终止。这使得违规追踪不太方便，因为 [ktrace(1)](https://man.freebsd.org/cgi/man.cgi?query=ktrace\&sektion=1\&format=html) 只能报告第一个能力违规，之后程序就会结束。

幸运的是，新的 [ktrace(1)](https://man.freebsd.org/cgi/man.cgi?query=ktrace\&sektion=1\&format=html) 扩展可以在程序 **未** 进入能力模式时记录违规。这意味着开发者无需修改程序即可进行能力违规追踪，程序仍能正常获取资源并执行。

#### 违规追踪示例

下面的 `cap_violate` 程序尝试触发 [ktrace(1)](https://man.freebsd.org/cgi/man.cgi?query=ktrace\&sektion=1\&format=html) 可以捕获的每一种违规行为：

```sh
# ktrace -t p ./cap_violate
# kdump
1603 ktrace   CAP   system call not allowed: execve
1603 foo      CAP   system call not allowed: open
1603 foo      CAP   system call not allowed: open
1603 foo      CAP   system call not allowed: open
1603 foo      CAP   system call not allowed: open
1603 foo      CAP   system call not allowed: readlink
1603 foo      CAP   system call not allowed: open
1603 foo      CAP   cpuset_setaffinity: restricted cpuset operation
1603 foo      CAP   openat: restricted VFS lookup: AT_FDCWD
1603 foo      CAP   openat: restricted VFS lookup: /
1603 foo      CAP   system call not allowed: bind
1603 foo      CAP   sendto: restricted address lookup: struct sockaddr { AF_INET, 0.0.0.0:5000 }
1603 foo      CAP   socket: protocol not allowed: IPPROTO_ICMP
1603 foo      CAP   kill: signal delivery not allowed: SIGCONT
1603 foo      CAP   system call not allowed: chdir
1603 foo      CAP   system call not allowed: fcntl, cmd: F_KINFO
1603 foo      CAP   operation requires CAP_WRITE, descriptor holds CAP_READ
1603 foo      CAP   attempt to increase capabilities from CAP_READ to CAP_READ,CAP_WRITE
```

前七条“system call not allowed”记录并非直接源自程序代码 `cap_violate`，而是由 FreeBSD 的 C 运行时库触发的。当你使用 `-t np` 选项同时追踪 namei 转换和能力违规时，这一点就显而易见：

```sh
# ktrace -t np ./cap_violate
# kdump
1632 ktrace   CAP   system call not allowed: execve
1632 ktrace   NAMI  "./cap_violate"
1632 ktrace   NAMI  "/libexec/ld-elf.so.1"
1632 foo      CAP   system call not allowed: open
1632 foo      NAMI  "/etc/libmap.conf"
1632 foo      CAP   system call not allowed: open
1632 foo      NAMI  "/usr/local/etc/libmap.d"
1632 foo      CAP   system call not allowed: open
1632 foo      NAMI  "/var/run/ld-elf.so.hints"
1632 foo      CAP   system call not allowed: open
1632 foo      NAMI  "/lib/libc.so.7"
1632 foo      CAP   system call not allowed: readlink
1632 foo      NAMI  "/etc/malloc.conf"
1632 foo      CAP   system call not allowed: open
1632 foo      NAMI  "/dev/pvclock"
1632 foo      CAP   cpuset_setaffinity: restricted cpuset operation
1632 foo      NAMI  "ktrace.out"
1632 foo      CAP   openat: restricted VFS lookup: AT_FDCWD
1632 foo      NAMI  "/"
1632 foo      CAP   openat: restricted VFS lookup: /
1632 foo      CAP   system call not allowed: bind
1632 foo      CAP   sendto: restricted address lookup: struct sockaddr { AF_INET, 0.0.0.0:5000 }
1632 foo      CAP   socket: protocol not allowed: IPPROTO_ICMP
1632 foo      CAP   kill: signal delivery not allowed: SIGCONT
1632 foo      CAP   system call not allowed: chdir
1632 foo      NAMI  "."
1632 foo      CAP   system call not allowed: fcntl, cmd: F_KINFO
1632 foo      CAP   operation requires CAP_WRITE, descriptor holds CAP_READ
1632 foo      CAP   attempt to increase capabilities from CAP_READ to CAP_READ,CAP_WRITE
```

实际上，能力模式总是在 C 运行时库初始化之后才会进入，因此程序永远不会触发那前七条违规记录。我们之所以看到它们，是因为 [ktrace(1)](https://man.freebsd.org/cgi/man.cgi?query=ktrace\&sektion=1\&format=html) 在程序启动前就开始记录违规信息。

这个演示清楚地表明，违规追踪并不总是完美的。它是检测受限系统调用的有用指南，但不一定完全反映程序在能力模式下的实际行为。在能力模式中，违规等同于错误；它们提示应停止执行。而违规追踪忽略了这一建议，仍然继续执行，因此可能会报告无效的违规。

下方示例追踪了工具 \[unzip(1)(<https://man.freebsd.org/cgi/man.cgi?query=unzip\\&sektion=1\\&format=html)（未进行> Capsicum 化）的违规情况：

```sh
# ktrace -t np unzip foo.zip
Archive:  foo.zip
creating: bar/
extracting: bar/bar.txt
creating: baz/
extracting: baz/baz.txt
# kdump
1926 ktrace   CAP   system call not allowed: execve
1926 ktrace   NAMI  "/usr/bin/unzip"
1926 ktrace   NAMI  "/libexec/ld-elf.so.1"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/etc/libmap.conf"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/usr/local/etc/libmap.d"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/var/run/ld-elf.so.hints"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/lib/libarchive.so.7"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/usr/lib/libarchive.so.7"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/lib/libc.so.7"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/lib/libz.so.6"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/lib/libbz2.so.4"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/usr/lib/libbz2.so.4"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/lib/liblzma.so.5"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/usr/lib/liblzma.so.5"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/lib/libbsdxml.so.4"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/lib/libprivatezstd.so.5"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/usr/lib/libprivatezstd.so.5"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/lib/libcrypto.so.111"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/lib/libmd.so.6"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/lib/libthr.so.3"
1926 unzip    CAP   system call not allowed: readlink
1926 unzip    NAMI  "/etc/malloc.conf"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/dev/pvclock"
1926 unzip    NAMI  "foo.zip"
1926 unzip    CAP   openat: restricted VFS lookup: AT_FDCWD
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/etc/localtime"
1926 unzip    NAMI  "bar"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    CAP   system call not allowed: mkdir
1926 unzip    NAMI  "bar"
1926 unzip    NAMI  "bar"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    NAMI  "bar/bar.txt"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    NAMI  "bar/bar.txt"
1926 unzip    CAP   openat: restricted VFS lookup: AT_FDCWD
1926 unzip    NAMI  "baz"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    CAP   system call not allowed: mkdir
1926 unzip    NAMI  "baz"
1926 unzip    NAMI  "baz"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    NAMI  "baz/baz.txt"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    NAMI  "baz/baz.txt"
1926 unzip    CAP   openat: restricted VFS lookup: AT_FDCWD
```

对于 \[unzip(1)(<https://man.freebsd.org/cgi/man.cgi?query=unzip\\&sektion=1\\&format=html>) 的违规追踪输出，更接近开发者第一次对自己程序进行追踪时所看到的情况。大多数程序都会链接到库。在此例中，\[unzip(1)(<https://man.freebsd.org/cgi/man.cgi?query=unzip\\&sektion=1\\&format=html>) 链接了 \[libarchive(3)(<https://man.freebsd.org/cgi/man.cgi?query=libarchive\\&sektion=3\\&format=html)，这一点在追踪结果中得到了体现：>

```sh
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/lib/libarchive.so.7"
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/usr/lib/libarchive.so.7"
```

\[unzip(1)(<https://man.freebsd.org/cgi/man.cgi?query=unzip\\&sektion=1\\&format=html>) 的违规记录出现在 C 运行时违规之后：

```sh
1926 unzip    NAMI  "foo.zip"
1926 unzip    CAP   openat: restricted VFS lookup: AT_FDCWD
1926 unzip    CAP   system call not allowed: open
1926 unzip    NAMI  "/etc/localtime"
1926 unzip    NAMI  "bar"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    CAP   system call not allowed: mkdir
1926 unzip    NAMI  "bar"
1926 unzip    NAMI  "bar"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    NAMI  "bar/bar.txt"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    NAMI  "bar/bar.txt"
1926 unzip    CAP   openat: restricted VFS lookup: AT_FDCWD
1926 unzip    NAMI  "baz"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    CAP   system call not allowed: mkdir
1926 unzip    NAMI  "baz"
1926 unzip    NAMI  "baz"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    NAMI  "baz/baz.txt"
1926 unzip    CAP   fstatat: restricted VFS lookup: AT_FDCWD
1926 unzip    NAMI  "baz/baz.txt"
1926 unzip    CAP   openat: restricted VFS lookup: AT_FDCWD
```

在这个例子中，\[unzip(1)(<https://man.freebsd.org/cgi/man.cgi?query=unzip\\&sektion=1\\&format=html>) 正在重建压缩包中的文件结构。违规产生的原因是 `AT_FDCWD` 值在 capability 模式下不能使用。这些违规的大部分可以通过在进入 capability 模式前先打开 `AT_FDCWD`（当前目录），然后将该描述符传递给 \[openat(2)(<https://man.freebsd.org/cgi/man.cgi?query=openat\\&sektion=2\\&format=html)、\\[fstatat(2)(https://man.freebsd.org/cgi/man.cgi?query=fstatat\\&sektion=2\\&format=html>) 和 \[mkdirat(2)(<https://man.freebsd.org/cgi/man.cgi?query=mkdirat\\&sektion=2\\&format=html>) 作为相对引用来解决。

违规追踪虽然不能自动 Capsicumize 程序，但它是开发者工具箱中的另一种工具。使用 [ktrace(1)](https://man.freebsd.org/cgi/man.cgi?query=ktrace\&sektion=1\&format=html) 对程序进行追踪只需几秒钟，结果几乎总是 Capsicum 沙箱化程序的良好起点。

赞助方：FreeBSD 基金会

### NVMe-oF（NoF，基于 Fabrics 的 NVMe）

链接：

[nvmf2 分支](https://github.com/bsdjhb/freebsd/tree/nvmf2) URL: <https://github.com/bsdjhb/freebsd/tree/nvmf2>

联系人：John Baldwin <jhb@FreeBSD.org>

NVMe-oF 能通过网络 fabric 使用 NVMe 协议与存储设备通信。这类似于使用 iSCSI 通过网络导出存储设备。

目前 NVMe-oF 定义了 Fibre Channel、RDMA 和 TCP 的网络传输方式。

nvmf2 分支的工作包括用户态库 (**lib/libnvmf**)，该库包含传输抽象及 TCP 传输实现。还修改了 \[nvmecontrol(8)(<https://man.freebsd.org/cgi/man.cgi?query=nvmecontrol\\&sektion=8\\&format=html)，添加> 'discover'、'connect' 和 'disconnect' 命令来管理远程控制器连接。

分支还包含内核态的 Fabric 实现。**nvmf\_transport.ko** 提供传输抽象，位于 nvmf 主机（SCSI 术语中的 initiator）与各个传输之间。**nvmf\_tcp.ko** 实现 TCP 传输层。**nvmf.ko** 实现 NVMe over Fabrics host（initiator），连接远程控制器并将远程命名空间导出为磁盘设备。与 NVMe PCI-e 驱动 \[nvme(4)(<https://man.freebsd.org/cgi/man.cgi?query=nvme\\&sektion=4\\&format=html>) 类似，命名空间通过 **/dev/nvmeXnsY** 设备导出，仅支持简单操作，同时通过 CAM 导出为 ndaX 磁盘设备。不同于 \[nvme(4)(<https://man.freebsd.org/cgi/man.cgi?query=nvme\\&sektion=4\\&format=html)，\\[nvmf(4)(https://man.freebsd.org/cgi/man.cgi?query=nvmf\\&sektion=4\\&format=html>) 不支持 \[nvd(4)(<https://man.freebsd.org/cgi/man.cgi?query=nvd\\&sektion=4\\&format=html>) 驱动。\[nvmecontrol(8)(<https://man.freebsd.org/cgi/man.cgi?query=nvmecontrol\\&sektion=8\\&format=html>) 可用于远程命名空间和控制器，例如获取日志页、显示 identify 信息等。

需要注意的是，\[nvmf(4)(<https://man.freebsd.org/cgi/man.cgi?query=nvmf\\&sektion=4\\&format=html>) 当前实现较简单，一些错误处理仍为待办事项 O。如果发生错误，队列（及其网络连接）会被丢弃，但设备仍保留，I/O 请求暂停。可使用 `nvmecontrol reconnect` 重新连接网络连接以恢复操作。与 iSCSI 使用持久守护进程 (\[iscsid(8)(<https://man.freebsd.org/cgi/man.cgi?query=iscsid\\&sektion=8\\&format=html>)) 不同，重连需手动进行。

当前代码非常新，可能不够健壮，尚不适合生产环境。经验丰富且愿意承担内核 panic 导致数据丢失风险的用户，可自行测试 NVMe-oF。

下一主要任务是实现 Fabrics 控制器（SCSI 术语中的 target），可能先在用户态实现简单版本，再实现内核 offload 数据处理的“真实”版本，并与 \[ctld(8)(<https://man.freebsd.org/cgi/man.cgi?query=ctld\\&sektion=8\\&format=html>) 集成，以便通过单个配置文件和守护进程导出 iSCSI 或 NVMe 磁盘设备。这可能需要对 ctld 进行重构，以降低 iSCSI 特定性。控制器端开发还可验证传输独立层中当前未充分测试的 API 设计。预计在此步骤完成前，不会将 NVMe over Fabrics 的更改合并到主树。

赞助方：Chelsio Communications

### 内核

更新内核子系统/功能、驱动支持、文件系统等。

### 改进启动性能

链接：

[Wiki 页面](https://wiki.freebsd.org/BootTime) URL: <https://wiki.freebsd.org/BootTime>

[BSDCan 演讲幻灯片](https://www.bsdcan.org/events/bsdcan_2023/sessions/session/116/slides/44/BSDCan23-Firecracker.pdf) URL: \[<https://www.bsdcan.org/events/bsdcan\\_2023/sessions/session/116/slides/44/BSDCan23->

Firecracker.pdf]\(<https://www.bsdcan.org/events/bsdcan\\_2023/sessions/session/116/slides/44/BSDCan23-Firecracker.pdf>)

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

Colin 正在协调加速 FreeBSD 启动过程的工作。

近期的工作从 EC2 转向 Firecracker 虚拟机管理器，其提供非常简化的环境；将启动流程精简到最低限度，更容易识别剩余耗时并进一步优化。

通过对 FreeBSD 和 Firecracker 的一些实验性补丁，现在可以在 20 毫秒内启动 FreeBSD 内核。

部分近期改进在 Colin 的 *Porting FreeBSD to Firecracker* BSDCan 演讲中有讨论。

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

### 启动加载程序的 CI 测试平台

链接：

[FreeBSD 谷歌编程之夏 Wiki 页面](https://wiki.freebsd.org/SummerOfCode2023Projects/CITestHarnessForBootloader) URL: <https://wiki.freebsd.org/SummerOfCode2023Projects/CITestHarnessForBootloader>

[GitHub 项目链接](https://github.com/mightyjoe781/freebsd-src/tree/bootloader-smk/tools/boot/bootloader_test) URL: <https://github.com/mightyjoe781/freebsd-src/tree/bootloader-smk/tools/boot/bootloader_test>

联系人：Sudhanshu Mohan Kashyap <smk@FreeBSD.org>

FreeBSD 支持多种架构、文件系统和磁盘分区方案。该项目旨在编写 Lua 脚本，用于测试所有一、二线支持架构组合的启动加载程序，并报告任何损坏的组合和预期功能。如果时间允许，脚本还可进一步集成到现有构建基础设施（Jenkins 或 GitHub Actions），生成测试结果的综合报告。

当前，开发者的修改可能会影响操作系统在特定环境下的启动能力。这些脚本可以保证修改不会导致测试环境出现回退问题。脚本设计高效，成本远低于现有的完整的 `make universe` 测试，因此开发者可以经常使用，并能无成本地集成到 CI 流程中。

目前脚本开发进展顺利，但仍需收集各类 QEMU 配置以测试不同环境。如有可用的 FreeBSD 版本 QEMU 配置，请发送至 <smk@FreeBSD.org>。

赞助方：2023 谷歌编程之夏项目

### FreeBSD 内核物理内存压缩

链接：

[谷歌编程之夏项目 Wiki 页面](https://wiki.freebsd.org/SummerOfCode2023Projects/PhysicalMemoryAntiFragmentationMechanisms) URL: <https://wiki.freebsd.org/SummerOfCode2023Projects/PhysicalMemoryAntiFragmentationMechanisms>

[差异修订 D40575](https://reviews.freebsd.org/D40575) URL: <https://reviews.freebsd.org/D40575>

[差异修订 D40772](https://reviews.freebsd.org/D40772) URL: <https://reviews.freebsd.org/D40772>

联系人：Bojan Novković <bnovkov@FreeBSD.org>(%[bnovkov@FreeBSD.org](mailto:5Bbnovkov@FreeBSD.org)(mailto:<bnovkov@FreeBSD.org>))

现代 CPU 架构通过支持大页提升性能，但由于物理内存碎片严重，大页分配可能失败。本项目实现物理内存压缩，以在运行系统中主动减少碎片化，作为谷歌编程之夏项目的一部分，目标是在虚拟内存子系统中增加多种防碎片机制。

差异修订 [D40575](https://reviews.freebsd.org/D40575) 实现了量化物理内存碎片程度的指标。[D40772](https://reviews.freebsd.org/D40772) 实现了物理内存压缩，并添加了守护进程，用于监控系统并在需要时执行压缩。

未来计划包括设计基准测试套件、运行测试，并根据评审和测试结果调整代码。该项目仍在进行中，欢迎测试、评审和反馈。

赞助方：2023 谷歌编程之夏项目

### 提高 MAXCPU

链接：

[Review D36838: amd64: 将 MAXCPU 从 256 提升至 1024](https://reviews.freebsd.org/D36838) URL: <https://reviews.freebsd.org/D36838>

联系人：Ed Maste <emaste@FreeBSD.org>(%[emaste@FreeBSD.org](mailto:5Bemaste@FreeBSD.org)(mailto:<emaste@FreeBSD.org>))

当前 amd64 和 arm64 FreeBSD 内核默认支持最多 256 个 CPU。通过设置 `MAXCPU` 内核选项，可为自定义内核增加更多核心支持。但未来 FreeBSD 14 生命周期中，更高核数的系统将越来越常见，因此计划将默认 MAXCPU 提升至 1024，以支持大核数系统“开箱即用”。

已完成的修改包括修复 `cpuset_t` 的用户态最大值为 1024，并避免使用静态 MAXCPU 大小数组，改为按需分配内存。

后续工作包括继续减少静态 MAXCPU 分配，并解决超高核数系统的可扩展性瓶颈，目标是在 FreeBSD 14 发布时提供稳定 ABI 和 KBI，支持大 CPU 数量。

赞助方：FreeBSD 基金会

### 移植 SquashFS 到 FreeBSD 内核

链接：

[Wiki 页面](https://wiki.freebsd.org/SummerOfCode2023Projects/PortSquashFuseToTheFreeBSDKernel) URL: <https://wiki.freebsd.org/SummerOfCode2023Projects/PortSquashFuseToTheFreeBSDKernel>

[源码](https://github.com/Mashijams/freebsd-src/tree/gsoc/squashfs) URL: <https://github.com/Mashijams/freebsd-src/tree/gsoc/squashfs>

联系人：Raghav Sharma <raghav@FreeBSD.org>

SquashFS 是一种只读文件系统，可高效压缩整个文件系统或单个目录，自 2009 年起 Linux 内核内置支持，在嵌入式 Linux 中广泛使用。该项目目标是为 FreeBSD 内核增加 SquashFS 支持，使其能够从内存中的 SquashFS 文件系统启动。

当前驱动兼容 FreeBSD 13.2，能正确解析 SquashFS 磁盘文件，并支持 \[mount(8)(<https://man.freebsd.org/cgi/man.cgi?query=mount\\&sektion=8\\&format=html)。该驱动支持多种压缩方式（zstd、lzo2、zlib> 等），与 Linux SquashFS 兼容。

未来计划包括添加目录、文件、扩展属性和符号链接的读取支持。项目仍在进行中，由 [Chuck Tuffli](mailto:chuck@FreeBSD.org) 指导，预计在谷歌编程之夏项目结束前完成。

赞助方：2023 谷歌编程之夏项目

### 改进 Pf

链接：

[D40911](https://reviews.freebsd.org/D40911) URL: <https://reviews.freebsd.org/D40911>

[D40861](https://reviews.freebsd.org/D40861) URL: <https://reviews.freebsd.org/D40861>

[D40862](https://reviews.freebsd.org/D40862) URL: <https://reviews.freebsd.org/D40862>

[D40863](https://reviews.freebsd.org/D40863) URL: <https://reviews.freebsd.org/D40863>

[D40864](https://reviews.freebsd.org/D40864) URL: <https://reviews.freebsd.org/D40864>

[D40865](https://reviews.freebsd.org/D40865) URL: <https://reviews.freebsd.org/D40865>

[D40866](https://reviews.freebsd.org/D40866) URL: <https://reviews.freebsd.org/D40866>

[D40867](https://reviews.freebsd.org/D40867) URL: <https://reviews.freebsd.org/D40867>

[D40868](https://reviews.freebsd.org/D40868) URL: <https://reviews.freebsd.org/D40868>

[D40869](https://reviews.freebsd.org/D40869) URL: <https://reviews.freebsd.org/D40869>

[D40870](https://reviews.freebsd.org/D40870) URL: <https://reviews.freebsd.org/D40870>

联系人：Kajetan Staszkiewicz <vegeta@tuxpowered.net>

联系人：Naman Sood <naman@freebsdfoundation.org>

联系人：Kristof Provost <kp@FreeBSD.org>

\[pf(4)(<https://man.freebsd.org/cgi/man.cgi?query=pf\\&sektion=4\\&format=html>) 是 FreeBSD 中的防火墙之一，也是最流行的防火墙之一，由 OpenBSD 项目创建并移植到 FreeBSD。

#### 回溯 OpenBSD 语法

Kajetan 引入了 OpenBSD 风格的“scrub”操作语法，可用于“match”和“pass”规则。现有规则仍受支持，但现在也支持 OpenBSD 风格的“scrub”配置。

#### pfsync 协议版本控制

现在可以配置 \[pfsync(4)(<https://man.freebsd.org/cgi/man.cgi?query=pfsync\\&sektion=4\\&format=html>) 的协议版本，能在不同内核版本之间进行状态同步的同时进行协议更改，从而支持新功能。

#### pfsync: IPv6 传输

现在也可以通过 IPv6 传输 pfsync 流量。该功能由 Naman 完成 Luiz Amaral 开始的工作。

#### SCTP

pf 正在进行对 SCTP 的支持，包括端口号过滤、状态跟踪、pfsync 故障切换以及对被拒绝连接返回 ABORT 数据块。

赞助方：InnoGames GmbH

赞助方：Orange Business Services

赞助方：FreeBSD 基金会

### 网络接口 API（IfAPI）

链接：

[原项目页面](https://wiki.freebsd.org/projects/ifnet) URL: <https://wiki.freebsd.org/projects/ifnet>

联系人：Justin Hibbits <jhibbits@FreeBSD.org>

IfAPI（前身为 DrvAPI）始于 2014 年，目标是隐藏 \[ifnet(9)(<https://man.freebsd.org/cgi/man.cgi?query=ifnet\\&sektion=9\\&format=html>) 结构，使网络驱动通过访问器函数访问成员，从而无需重新编译驱动即可更改网络栈，并可能允许单个驱动支持多个 FreeBSD 版本。

该目标已在基本系统中实现，但仍需更新一些 ports 以使用 IfAPI。可使用 **tools/ifnet/convert\_ifapi.sh** 自动完成大部分转换。文档尚在编写中，但仍需协助整理 \[ifnet(9)(<https://man.freebsd.org/cgi/man.cgi?query=ifnet\\&sektion=9\\&format=html>) 的内容，目前部分信息已过时。

赞助方：Juniper Networks, Inc.

### 让 Netgraph 无锁化

链接：

[Wiki 页面](https://wiki.freebsd.org/SummerOfCode2023Projects/LocklessSynchronizationBetweenNodesInNetgraph) URL: <https://wiki.freebsd.org/SummerOfCode2023Projects/LocklessSynchronizationBetweenNodesInNetgraph>

[代码仓库](https://github.com/zinh88/epoch-netgraph) URL: <https://github.com/zinh88/epoch-netgraph>

联系人：Zain Khan <zain@FreeBSD.org>

Netgraph 通过将内核对象（节点）组织为图并使用 hook 连接，实现自定义或复杂网络功能。节点可对输入数据包执行操作，并将输出发送给其他节点。在 SMP 前的环境中，线程总能立即调用节点函数，但并发引入了节点忙碌的可能性，同时数据包路径可能因节点或 hook 被移除而引用已释放对象。

现有代码通过拓扑读写互斥锁防止结构重组导致的问题。项目目标是恢复类似单线程时的流畅数据流，使数据在重组事件中无需等待，同时保证内核安全。

FreeBSD 提供了基于 Epoch 的并发安全数据结构和机制，该项目利用 Epoch 实现安全回收。由于修改基本系统，还会影响消息队列、引用计数等设计。

项目涉及大量测试，目前只移除了部分拓扑保护锁并在 VM 上测试简单图，硬件测试将在 4 核以上系统进行。

赞助方：2023 谷歌编程之夏项目

### 架构

更新平台特定功能并支持新硬件平台。

### amd64 SIMD 增强

链接：

[SIMD 调度框架草案](https://reviews.freebsd.org/D40693) URL: <https://reviews.freebsd.org/D40693>

[项目提案](http://fuz.su/~fuz/freebsd/2023-04-05_libc-proposal.txt) URL: <http://fuz.su/~fuz/freebsd/2023-04-05_libc-proposal.txt>

联系人：Robert Clausecker <clausecker@FreeBSD.org>

SIMD 指令集（如 SSE、AVX、NEON）在现代计算机中广泛使用，可为许多应用提供性能优势。本项目旨在提供常用 libc 函数（主要为 \[string(3)(<https://man.freebsd.org/cgi/man.cgi?query=string\\&sektion=3\\&format=html)）的> SIMD 加速版本，加速大部分 C 程序。

每个函数将提供最多四个实现：

* **标量**：为 amd64 优化，但不使用 SIMD
* **基线**：使用 SSE 和 SSE2，或 **x86-64-v2** 实现，使用 SSE4.2 前所有扩展
* **x86-64-v3**：使用 AVX 和 AVX2
* **x86-64-v4**：使用 AVX-512F/BW/CD/DQ

用户可通过设置 `AMD64_ARCHLEVEL` 环境变量选择 SIMD 增强级别。

当前项目仅针对 amd64，但未来可能扩展至 arm64 等架构。

赞助方：FreeBSD 基金会

### 将 mfsBSD 集成到发布构建工具中

链接：

[Wiki 文章](https://wiki.freebsd.org/SummerOfCode2023Projects/IntegrateMfsBSDIntoTheReleaseBuildingTools) URL: <https://wiki.freebsd.org/SummerOfCode2023Projects/IntegrateMfsBSDIntoTheReleaseBuildingTools>

\[项目仓库（integrate-mfsBSD-building 分支)(<https://github.com/soobinrho/freebsd-src/tree/integrate-mfsBSD-building>) URL: <https://github.com/soobinrho/freebsd-src/tree/integrate-mfsBSD-building>

联系人：Soobin Rho <soobinrho@FreeBSD.org>

#### 什么是 mfsBSD？

“mfsBSD 是一套工具，用于创建小型但功能完整的基于 mfsroot 的 FreeBSD 发行版，将所有文件存储在内存（MFS，Memory File System）中，并可从硬盘、USB 存储设备或光盘加载。它可用于无盘系统、恢复分区以及远程覆盖其他操作系统等多种用途。”

[Martin Matuska](mailto:mm@FreeBSD.org) 是 [mfsBSD 白皮书](https://people.freebsd.org/~mm/mfsbsd/mfsbsd.pdf) 的作者，同时也是 [mfsBSD 仓库](https://github.com/mmatuska/mfsbsd) 的维护者。

#### 目标

本项目在 src/release makefile 中为 -current 和 -stable 版本的 mfsBSD 镜像创建每周快照的额外目标。目前仅生成发布版本的 mfsBSD 镜像，这可能导致其与基础工具不同步。本项目旨在解决这一问题。

#### 时间与地点

这是 2023 谷歌编程之夏项目，官方编码周期为 2023 年 5 月 29 日至 2023 年 8 月 28 日。作为开源社区的新手，作者欢迎在项目仓库中提供所有评论、建议或 RP，期间所有代码均在此维护。

导师：[Juraj Lutter](mailto:otis@FreeBSD.org) 和 [Joseph Mingone](mailto:jrm@FreeBSD.org)

赞助方：2023 谷歌编程之夏项目

## 云计算

更新云相关功能并支持新云平台。

### 作为 cloud-init 一级平台的 FreeBSD

链接：

[cloud-init 官网](https://cloud-init.io/) URL: <https://cloud-init.io/>

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

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

联系人：Mina Galić <freebsd@igalic.co>

cloud-init 是云服务器的标准初始化方式，但对非 Linux 系统支持较差，FreeBSD 缺乏 cloud-init 支持阻碍了其成为一级平台。本项目旨在使 FreeBSD 的 cloud-init 支持与 Linux 持平，并计划逐步覆盖所有 BSD 系统。

本季度进展：

* 临时网络类已重写并实现平台无关，可用于多个云提供商初始化临时网络。
* cloud-init 已在 Vultr 成功测试，希望下一版本可推动 Vultr 将 FreeBSD 镜像切换为 cloud-init。
* 扩展了 BSD 的 rsyslog 支持，并为 cloud-init 的 ds-identify 添加了 rc 脚本，实现零配置启动速度大幅提升：ds-identify 首先快速猜测云提供商，cloud-init 使用该猜测而非遍历全部提供商。用户可通过删除 `/usr/local/etc/rc.d/dsidentify` 禁用，并提供自定义列表，进一步节省启动时间。

下一步计划包括继续网络重构任务，并为 FreeBSD 添加 LXD 支持，以纳入 CI 测试，这涉及 [LXD](https://github.com/canonical/lxd/pull/11761) 和 [FreeBSD virtio 子系统](https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=271793) 的工作。

欢迎早期测试者访问 [net/cloud-init-devel](https://cgit.freebsd.org/ports/tree/net/cloud-init-devel/) 并报告 bug。自上次报告以来，cloud-init 的 bug 跟踪已从 Launchpad 转移到 GitHub。

赞助方：FreeBSD 基金会

### FreeBSD 上的 OpenStack

链接：

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

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

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

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

项目目标是移植 OpenStack 核心组件（如 keystone、nova、neutron），使 FreeBSD 可作为 OpenStack 主机。

本季度成果：

* 移植 `nova-novncproxy` 和 `nova-serialproxy`，增加实例控制台访问方式
* 将开发环境从物理机迁移至虚拟机
* 解决实例内部网络连接问题
* 可启动多个实例
* 从 Python 3.8 移植至 3.9

下季度计划继续优化控制台代理服务，使整体流程更流畅。

POC 构建指南可在 [docs 仓库](https://github.com/openstack-on-freebsd/docs) 查阅，每个 OpenStack 组件的补丁版本均在同一 GitHub 组织下。

欢迎项目贡献者先检查文档并提供反馈。

赞助方：FreeBSD 基金会

### 在 Microsoft HyperV 与 Azure 上的 FreeBSD

链接：

[微软 Azure FreeBSD wiki](https://wiki.freebsd.org/MicrosoftAzure) URL: <https://wiki.freebsd.org/MicrosoftAzure>

[微软 HyperV FreeBSD wiki](https://wiki.freebsd.org/HyperV) URL: <https://wiki.freebsd.org/HyperV>

联系人：微软 FreeBSD 集成服务团队 <bsdic@microsoft.com>

联系人：freebsd-cloud 邮件列表

联系人：FreeBSD Azure 发布工程团队 <releng-azure@FreeBSD.org>

联系人：Wei Hu <whu@FreeBSD.org>

联系人：Souradeep Chakrabarti <schakrabarti@microsoft.com>

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

本季度工作重点为 ARM64 架构支持及向 [Azure community gallery](https://learn.microsoft.com/azure/virtual-machines/share-gallery-community) 构建和发布镜像。测试镜像示例：

* FreeBSD-CURRENT-testing
* FreeBSD-CURRENT-gen2-testing
* FreeBSD-CURRENT-arm64-testing

使用方法：创建虚拟机时，在“Select an Image”步骤选择“Community Images (PREVIEW)”并搜索 `FreeBSD`。

进行中的任务：

* 自动化镜像构建与发布并合并到 src/release/
* 构建和发布基于 ZFS 的 Azure Marketplace 镜像（已合并到 main，可通过 `VMFS=zfs` 创建）
* 构建并发布 Hyper-V gen2 VM 镜像至 Azure Marketplace
* 构建并发布快照版本至 Azure community gallery

上述任务由 FreeBSD 基金会赞助，微软提供部分资源。

微软的 Wei Hu 与 Souradeep Chakrabarti 承担以下任务：

* 将 Hyper-V 客户端支持移植至 aarch64
  * [Bug 267654](https://bugs.freebsd.org/267654)
  * [Bug 272461](https://bugs.freebsd.org/272461)

待完成任务：

* 更新微软 Learn 上 FreeBSD 相关文档
* 支持 [Azure Pipelines](https://azure.microsoft.com/products/devops/pipelines/) 的 FreeBSD
* 更新 [Azure agent port](https://www.freshports.org/sysutils/azure-agent) 至最新版本
* 回溯 [Azure agent 本地修改](https://github.com/Azure/WALinuxAgent/pull/1892)

赞助方：微软（针对 Microsoft 团队人员及资源）

赞助方：FreeBSD 基金会（其余任务）

### EC2 上的 FreeBSD

链接： [FreeBSD/EC2 Patreon](https://www.patreon.com/cperciva) URL: <https://www.patreon.com/cperciva>

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

可在 x86（Intel 与 AMD）和 ARM64（Graviton）EC2 实例上运行 FreeBSD。工作仍在继续，以确保新发布的实例类型能够得到支持，包括最近宣布的 M7a“EPYC”实例，这些实例将在 FreeBSD 14.0-RELEASE 中获得支持。

每周 FreeBSD 快照最近已从“UEFI”启动模式更改为“UEFI Preferred”启动模式，从而在支持“裸机”和“上一代”不兼容 UEFI 的实例类型的同时，享受 UEFI 带来的启动性能提升。此更改将在 FreeBSD 14.0-RELEASE 中体现。

EC2 启动脚本最近已更新以支持 IMDSv2，该更新也将在 FreeBSD 14.0-RELEASE 中生效。

若 FreeBSD 13.2 用户需要这些更新，作者可提供 FreeBSD“13.2-RELEASE plus updates”AMI。

此工作由 Colin 的 FreeBSD/EC2 Patreon 赞助。

## 文档

文档树、手册页或新外部书籍/文档中的显著变更。

### 文档工程团队

链接：

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

[新贡献者文档指南](https://docs.freebsd.org/en/books/fdp-primer/) URL: <https://docs.freebsd.org/en/books/fdp-primer/>

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

联系人：FreeBSD 文档工程团队 <doceng@FreeBSD.org>

文档工程团队负责处理与 FreeBSD 文档工程团队相关的元项目事务；更多信息请参见 [文档工程团队章程](https://www.freebsd.org/internal/doceng/)。

本季度：

* fernape@ 被任命为新成员
* [www/gohugo](https://cgit.freebsd.org/ports/tree/www/gohugo/) Port 维护权已转交给文档工程团队，因其是文档基础设施关键部分，该决定已与前维护者达成一致
* 改进了翻译工作流程（如下节所述）

#### Port 开发者手册

新增 [`USES=nextcloud`](https://cgit.freebsd.org/doc/commit/?id=634a34b7bb37650e4f8fcbea9fd7428b3f5b911a)。

#### FDP 指南

新增一章介绍 Weblate，用于 [新贡献者 FreeBSD 文档项目指南](https://docs.freebsd.org/en/books/fdp-primer/weblate/)。该章节详细说明加入 FreeBSD 翻译团队的步骤，包括在线 Weblate 和离线翻译，提供高效翻译、校对和测试的实用建议，并指导贡献者如何将翻译正式提交到文档仓库，实现无缝集成。

#### FreeBSD Weblate 翻译

链接：

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

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

**2023 年第二季度状态**

* 支持 15 种语言
* 注册用户 183 人
* [新 Weblate 服务器](https://lists.freebsd.org/archives/freebsd-translators/2023-April/000111.html)

FreeBSD Weblate 实例现运行在专用服务器上，显著提高速度和翻译效率，特别感谢 ebrandi@ 提供硬件升级。

**语言进展**

* 中文（简体）(zh-cn) 进度：7%
* 中文（繁体）(zh-tw) 进度：3%
* 荷兰语 (nl) 进度：1%
* 法语 (fr) 进度：1%
* 德语 (de) 进度：1%
* 印尼语 (id) 进度：1%
* 意大利语 (it) 进度：5%
* 韩语 (ko) 进度：32%
* 挪威语 (nb-no) 进度：1%
* 波斯语 (fa-ir) 进度：3%
* 波兰语 进度：1%
* 葡萄牙语 (pt-br) 进度：22%
* 僧伽罗语 (si) 进度：1%
* 西班牙语 (es) 进度：33%
* 土耳其语 (tr) 进度：2%

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

#### FreeBSD 手册工作组

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

[正在重写网络章节](https://reviews.freebsd.org/D40546)。

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

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

工作组负责创建新的 FreeBSD 文档门户和重新设计 FreeBSD 主网站及其组件。开发者可在 FreeBSD Slack 频道 #wg-www21 跟进并加入。工作分为四个阶段：

1. 文档门户重新设计 创建响应式新设计，并增加全局搜索功能。（*已完成*）
2. Web 上手册页重新设计 使用 mandoc 生成 HTML 页面脚本。（*已完成*）公共实例：[https://man-dev.FreeBSD.org](https://man-dev.freebsd.org/)
3. Web 上 Ports 页面重新设计 Ports 脚本创建应用门户。（*进行中*）
4. FreeBSD 主网站重新设计 新设计，响应式并支持暗色主题。（*进行中*）

## Ports

涉及 Ports 的变更，无论是影响整个树的重大变动，还是单个 Port 的更新。

### FreeBSD 上的 KDE

链接：

[KDE/FreeBSD initiative](https://freebsd.kde.org/) URL: <https://freebsd.kde.org/>

[FreeBSD — KDE Community Wiki](https://community.kde.org/FreeBSD) URL: <https://community.kde.org/FreeBSD>

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

FreeBSD 上的 KDE 项目为 Ports 树打包了 CMake、Qt 以及 KDE 社区的软件。这些软件包括完整的桌面环境 KDE Plasma（支持 X11 与 Wayland）以及数百款可在任意 FreeBSD 机器上使用的应用程序。

KDE 团队 (kde@) 是 desktop@ 和 x11@ 的一部分，构建软件栈，使 FreeBSD 在日常使用中成为美观且可用的图形桌面工作站。下文主要介绍 KDE 相关的 Ports，但也包括对整个桌面栈重要的项目。

#### 基础设施

更新 Qt5 Ports：

* [devel/qt5-webengine](https://cgit.freebsd.org/ports/tree/devel/qt5-webengine/) 修复了在 Clang 16 下构建的问题，为即将发布的 FreeBSD 14 做准备。
* [devel/qt5-qmake](https://cgit.freebsd.org/ports/tree/devel/qt5-qmake/) 修复了在 Qt 未安装系统上安装 qmake 会引发异常的边缘情况。

更新 Qt6 Ports：

* [devel/qt6-tools](https://cgit.freebsd.org/ports/tree/devel/qt6-tools/) 修复了在 Clang 16 下构建的问题，为 FreeBSD 14 发布做准备。

[accessibility/at-spi2-core](https://cgit.freebsd.org/ports/tree/accessibility/at-spi2-core/) Port（桌面辅助技术关键组件）已更新至 2.48.0，并改进了对非 X11 桌面的支持，提升了 Wayland 系统兼容性。感谢 Jan Beich 的贡献。

[graphics/poppler](https://cgit.freebsd.org/ports/tree/graphics/poppler/) Port（许多 PDF 查看器的基础）更新至 23.05。

[ports-mgmt/packagekit-qt](https://cgit.freebsd.org/ports/tree/ports-mgmt/packagekit-qt/) Port 新增到树中，为 FreeBSD 图形化包管理器铺路。

#### KDE 栈

KDE Gear 每季度发布，KDE Plasma 每月更新，KDE Frameworks 也每月发布新版本。上述更新在上游发布后不久即可在 Ports 中体现。

* KDE Frameworks 更新到 5.105、5.106 与 5.107
* KDE Gear 更新至 23.04.0，并随即发布 .1 与 .2 修复版本
* KDE Plasma Desktop 更新至 5.27.4，随后发布 .5 与 .6 修复版本

#### 相关 Port

弃用：

* [graphics/ikona](https://cgit.freebsd.org/ports/tree/graphics/ikona/)（Rust + Qt 图标查看器）上游已放弃
* [polish/kadu](https://cgit.freebsd.org/ports/tree/polish/kadu/)（曾在波兰流行的聊天应用）已弃用
* [sysutils/plasma5-ksysguard](https://cgit.freebsd.org/ports/tree/sysutils/plasma5-ksysguard/)（系统监控应用）上游弃用，将不再更新

更新：

* [astro/kstars](https://cgit.freebsd.org/ports/tree/astro/kstars/) 更新至 3.6.4
* [devel/qcoro](https://cgit.freebsd.org/ports/tree/devel/qcoro/) 更新至 0.9.0
* [devel/qtcreator](https://cgit.freebsd.org/ports/tree/devel/qtcreator/) 更新至 10.0.2
* [games/gcompris-qt](https://cgit.freebsd.org/ports/tree/games/gcompris-qt/) 更新至 3.2
* [graphics/kphotoalbum](https://cgit.freebsd.org/ports/tree/graphics/kphotoalbum/) 更新至 5.10.0
* [net-im/tokodon](https://cgit.freebsd.org/ports/tree/net-im/tokodon/) 加入 KDE Gear
* [textproc/kdiff3](https://cgit.freebsd.org/ports/tree/textproc/kdiff3/) 更新至 1.10.1

新软件：

* [devel/kommit](https://cgit.freebsd.org/ports/tree/devel/kommit/)（Git 客户端）新增，为 gitklient 的重命名
* [multimedia/kasts](https://cgit.freebsd.org/ports/tree/multimedia/kasts/) KDE 社区新推出的播客收听应用
* [textproc/arianna](https://cgit.freebsd.org/ports/tree/textproc/arianna/) KDE 社区新推出的移动电子书阅读器，可用于阅读 FreeBSD 文档

### FreeBSD 上的 GCC

链接：

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

[GCC 10 发行系列](https://gcc.gnu.org/gcc-10/) URL: <https://gcc.gnu.org/gcc-10/>

[GCC 11 发行系列](https://gcc.gnu.org/gcc-11/) URL: <https://gcc.gnu.org/gcc-11/>

[GCC 12 发行系列](https://gcc.gnu.org/gcc-12/) URL: <https://gcc.gnu.org/gcc-12/>

[GCC 13 发行系列](https://gcc.gnu.org/gcc-13/) URL: <https://gcc.gnu.org/gcc-13/>

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

上游发布了 [GCC 13](https://gcc.gnu.org/gcc-13)。如上次报告所述，计划从 GCC 13 第一个版本开始尝试更新 GCC\_DEFAULT，因此本季度大部分工作为此做准备。

GCC 13.1（首个 GCC 13 版本）发布后，在 Ports 树中创建了两个新 Port：

* [lang/gcc13](https://cgit.freebsd.org/ports/tree/lang/gcc13/) 跟踪 GCC 13 发布
* [lang/gcc14-devel](https://cgit.freebsd.org/ports/tree/lang/gcc14-devel/) 跟踪 GCC 14 上游快照

#### \*-devel Ports

启用对 .init\_array 与 .fini\_array 的支持。FreeBSD 自提交 [83aa9cc00c2d](https://cgit.freebsd.org/src/commit/?id=83aa9cc00c2d83d05a0efe7a1496d8aab4a153bb) 起已支持。

i386、amd64 与 aarch64 默认 bootstrap 选项已从 LTO\_BOOTSTRAP 回退到 STANDARD\_BOOTSTRAP：

* LTO bootstrap 在这些架构上产生过多包构建失败
* LTO\_BOOTSTRAP 仍可供需要的用户使用

这些更改将向生产 Ports 推送。

#### 生产 Ports

上游已发布 GCC 13，新建 Port [lang/gcc13](https://cgit.freebsd.org/ports/tree/lang/gcc13/)。GCC 11 与 12 已更新，上游计划发布 GCC 10 新版本，所有对应 Ports 需更新。

为简化维护者和用户工作，计划同时测试并更新以下内容：

* [lang/gcc10](https://cgit.freebsd.org/ports/tree/lang/gcc10/)、[lang/gcc11](https://cgit.freebsd.org/ports/tree/lang/gcc11/)、[lang/gcc12](https://cgit.freebsd.org/ports/tree/lang/gcc12/) 更新
* 将 GCC\_DEFAULT 更新为 13
* 在生产 Ports 启用 .init\_array 与 .fini\_array
* 将生产 Ports 的 bootstrap 从 LTO\_BOOTSTRAP 切换回 STANDARD\_BOOTSTRAP

优势：

* 测试次数更多但实验运行更少
* Ports 用户构建次数更少

### Puppet

链接：

[Puppet](https://puppet.com/docs/puppet/latest/puppet_index.html) URL: <https://puppet.com/docs/puppet/latest/puppet_index.html>

联系人：Puppet 团队 <puppet@FreeBSD.org>

Puppet 是一款自由软件配置管理工具，由 Puppet Server 提供信任源，以领域特定语言描述机器的预期配置，Puppet Agent 在每个节点上确保实际配置与预期匹配。可选 PuppetDB 用于高级架构和配置依赖关系管理。

Puppet 团队维护 Puppet 及相关工具的 Ports。

* Puppet 8 最近发布，并已加入 Ports 树
* Puppet 6 已到达生命周期终点并弃用，建议用户升级到 Puppet 7 或 Puppet 8

目前，Puppet 7 仍为依赖 Puppet 的 Ports 默认版本。Puppet 社区正在努力确保各种模块与最新代码兼容，当前升级到 Puppet 8 可能存在挑战。随着模块更新完成，预计几个月后将 Puppet 8 设为默认版本。

### FreeBSD 上的 MITRE Caldera

链接：

[MITRE Caldera](https://caldera.mitre.org/) URL: <https://caldera.mitre.org/>

[Red Canary](https://www.redcanary.com/) URL: <https://www.redcanary.com/>

联系人：José Alonso Cárdenas Márquez <acm@FreeBSD.org>

MITRE Caldera 是一家网络安全平台，用于轻松自动化对手模拟、辅助红队手动操作以及自动化事件响应。

它基于 MITRE ATT\&CK® 框架构建，是 MITRE 的一项活跃研究项目。

MITRE Caldera ([security/caldera](https://cgit.freebsd.org/ports/tree/security/caldera/)) 于 2023 年 4 月加入 Ports 树。该 Port 支持 [Atomic Red Team Project](https://github.com/redcanaryco/atomic-red-team)，可通过 [MITRE Caldera atomic plugin](https://github.com/mitre/atomic) 使用。

该工作的主要目标是提升 FreeBSD 作为信息安全或网络安全平台的可见性。

此外，你可以使用 <https://github.com/alonsobsd/caldera-makejail> 或 <https://github.com/AppJail-makejails/caldera>（来自 [AppJail](https://github.com/DtxdF/AppJail)）轻松测试 MITRE Caldera 基础设施。AppJail 是一款便于从命令行管理 jail 容器的好工具。

欢迎有兴趣的人参与项目。

当前版本：4.2.0

#### 待办事项

* 增加 Caldera 测试基础设施 makejail
* 将 FreeBSD 添加到 MITRE Caldera 官方支持平台中，参见 <https://github.com/mitre/caldera/pull/2752>
* 将 FreeBSD 添加到 Red Canary 官方支持平台中，参见 <https://github.com/redcanaryco/atomic-red-team/pull/2450>

### FreeBSD 上的 Wazuh

链接：

[Wazuh](https://www.wazuh.com/) URL: <https://www.wazuh.com/>

联系人：José Alonso Cárdenas Márquez <acm@FreeBSD.org>

Wazuh 是一家免费开源平台，用于威胁预防、检测和响应，可保护本地、虚拟化、容器化及云环境中的工作负载。

Wazuh 解决方案由端点安全代理和管理服务器组成。管理服务器收集并分析代理收集的数据。Wazuh 与 [Elastic Stack](https://www.elastic.co/elastic-stack/) 和 [OpenSearch](https://opensearch.org/) 完全集成，提供搜索引擎和数据可视化工具，用户可通过其浏览安全告警。

将 Wazuh 移植到 FreeBSD 的工作开始于 [Michael Muenz](mailto:m.muenz@gmail.com)，他自 2021 年 9 月首次将 [security/wazuh-agent](https://cgit.freebsd.org/ports/tree/security/wazuh-agent/) 加入 Ports 树。2022 年 7 月，我接管该 Port，并开始移植其他 Wazuh 组件。

目前，所有 Wazuh 组件已移植或适配：[security/wazuh-manager](https://cgit.freebsd.org/ports/tree/security/wazuh-manager/)、[security/wazuh-agent](https://cgit.freebsd.org/ports/tree/security/wazuh-agent/)、[security/wazuh-server](https://cgit.freebsd.org/ports/tree/security/wazuh-server/)、[security/wazuh-indexer](https://cgit.freebsd.org/ports/tree/security/wazuh-indexer/)、[security/wazuh-dashboard](https://cgit.freebsd.org/ports/tree/security/wazuh-dashboard/)。

在 FreeBSD 上，[security/wazuh-manager](https://cgit.freebsd.org/ports/tree/security/wazuh-manager/) 与 [security/wazuh-agent](https://cgit.freebsd.org/ports/tree/security/wazuh-agent/) 从 Wazuh 源代码编译，[security/wazuh-indexer](https://cgit.freebsd.org/ports/tree/security/wazuh-indexer/) 基于 [textproc/opensearch](https://cgit.freebsd.org/ports/tree/textproc/opensearch/) 改编，用于存储代理数据。[security/wazuh-server](https://cgit.freebsd.org/ports/tree/security/wazuh-server/) 对配置文件进行了 FreeBSD 定向适配。运行时依赖包括 [security/wazuh-manager](https://cgit.freebsd.org/ports/tree/security/wazuh-manager/)、[sysutils/beats8](https://cgit.freebsd.org/ports/tree/sysutils/beats8/)（filebeat）和 [sysutils/logstash8](https://cgit.freebsd.org/ports/tree/sysutils/logstash8/)。[security/wazuh-dashboard](https://cgit.freebsd.org/ports/tree/security/wazuh-dashboard/) 使用适配的 [textproc/opensearch-dashboards](https://cgit.freebsd.org/ports/tree/textproc/opensearch-dashboards/) 以及从 Wazuh 源代码生成的 wazuh-kibana-app 插件。

该工作的主要目标同样是提升 FreeBSD 在信息安全或网络安全平台中的可见性。

此外，你可以使用 <https://github.com/alonsobsd/wazuh-makejail> 或 <https://github.com/AppJail-makejails/wazuh>（来自 [AppJail](https://github.com/DtxdF/AppJail)）轻松测试 Wazuh 单节点基础设施（All-in-one）。

欢迎有兴趣的人参与项目。

当前版本：4.4.4

#### 待办事项

* 增加 Wazuh 集群模式基础设施 makejail（进行中）
* 将 FreeBSD 添加到 Wazuh Inc 官方支持平台；参见 <https://github.com/wazuh/wazuh-kibana-app/pull/5413>
* 添加 FreeBSD SCA 策略（进行中）

## 第三方项目

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

### PkgBase.live

链接：

[网站](https://alpha.pkgbase.live/) URL: <https://alpha.pkgbase.live/>

[源码](https://codeberg.org/pkgbase) URL: <https://codeberg.org/pkgbase>

联系人：Mina Galić <freebsd@igalic.co>

PkgBase.live 是 FreeBSD [PkgBase 项目](https://wiki.freebsd.org/PkgBase) 的非官方仓库，目前已恢复服务。

该服务灵感来自 <https://up.bsd.lv/>，曾为 STABLE 与 CURRENT 分支提供 \[freebsd-update(8)(<https://man.freebsd.org/cgi/man.cgi?query=freebsd-update\\&sektion=8\\&format=html)。up.bsd.live> 暂停服务，使 PkgBase.live 恢复更显必要。

目前提供构建版本：

* FreeBSD 13.2-RELEASE
* FreeBSD 13-STABLE
* FreeBSD 14-CURRENT

支持平台：

* amd64
* aarch64
* armv7
* i386

RISCv64 暂时未提供。

硬件为 Vultr 的高性能 VPS。服务器与运行构建任务及提供包的 jails 均为“自托管”，安装并通过 PkgBase 保持最新。

由于尚未在 FreeBSD jails 中配置 Vultr IPv6，PkgBase.live 暂不支持 IPv6。如有经验，请联系管理员。

硬件由 FreeBSD 社区成员赞助。

### FreeBSD 容器管理：Pot、Potluck 与 Potman

链接：

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

联系人：

Luca Pizzamiglio (Pot) <pizzamig@FreeBSD.org>

Bretton Vine (Potluck) <bv@honeyguide.eu>

Michael Gmelin (Potman) <grembo@FreeBSD.org>

Pot 是一款 jail 管理工具，同时支持通过 Nomad 进行编排 [详细](https://www.freebsd.org/news/status/report-2020-01-2020-03/#pot-and-the-nomad-pot-driver)。

本季度发布 [Pot 0.15.5](https://github.com/bsdpot/pot/releases/tag/0.15.5)，包含多项 bug 修复与 \[属性设置功能（如 jail sysctl 变量)(<https://github.com/bsdpot/pot/pull/263)，将在> 2023Q3 季度包集中提供。

Potluck 旨在成为 FreeBSD 与 Pot 的 Dockerhub，即提供 Pot 风格及完整容器镜像的仓库，可与 Pot 或 Nomad 一道使用。

所有 Potluck 容器已重新构建为基于 FreeBSD 13.2 的镜像，并通过 [Pot signify](https://github.com/bsdpot/pot/pull/242) 签名。

撰写了 [《在 FreeBSD 上使用 Ansible、Pot 等构建虚拟数据中心的初学者指南》](https://honeyguide.eu/posts/ansible-pot-foundation/)，说明如何通过 Ansible playbook 部署基于 Pot 与 Potluck 的复杂环境，包括示例节点如 MariaDB、Prometheus、Grafana、nginx、OpenLDAP 或 Traefik，以及由 Nomad 与 Consul 管理的容器编排。

Pot 团队提交的 [Nomad 安全性改进补丁](https://github.com/hashicorp/nomad/pull/13343) 已被上游接受，将作为 Nomad 1.6.0 的一部分。Nomad 是调度器与编排器，支持通过 [sysutils/nomad-pot-driver](https://cgit.freebsd.org/ports/tree/sysutils/nomad-pot-driver/) 使用 Pot。

欢迎反馈与补丁。

赞助商：Honeyguide Group
