github编辑

FreeBSD 2025 年第四季度状态报告

这是 2025 年第四期状态报告,共包含 28 个条目。

由于允许迟交会造成报告不断地延后数月发布,现已决定对此进行调整。从下个季度开始,将为报告的提交设定截止日期,即在该季度结束后次月的 14 天内,并且将对所有人都严格执行该截止日期,无论提交者还是团队。随后,将在汇总完成后尽快发布(可能在该月月底之前)完整的状态报告,内容仅包含在截止日期前提交的条目。

将不再催促提交报告。如果你错过了截止日期,请在下个季度提交一份更为全面的报告。

这一新策略应有助于确保每期报告的新鲜、相关和及时。

更多信息,请参见 https://docs.freebsd.org/en/articles/freebsd-status-report-process/#_timelinearrow-up-right

祝阅读愉快!

Lorenzo Salvadore

状态团队

FreeBSD 团队报告

可在 Administration Pagearrow-up-right 中找到来自各项官方和半官方团队的条目。

FreeBSD 基金会

链接:

FreeBSD 基金会arrow-up-right URL: https://freebsdfoundation.org/arrow-up-right

技术路线图arrow-up-right URL: https://freebsdfoundation.org/blog/technology-roadmap/arrow-up-right

捐赠arrow-up-right URL: https://freebsdfoundation.org/donate/arrow-up-right

基金会合作伙伴项目arrow-up-right URL: https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/arrow-up-right

FreeBSD 期刊arrow-up-right URL: https://freebsdfoundation.org/journal/arrow-up-right

基金会活动arrow-up-right URL: https://freebsdfoundation.org/our-work/events/arrow-up-right

联系方式:Deb Goodkin [[email protected]envelope]

FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于通过技术或非技术手段推动 FreeBSD 的发展。基金会完全依靠捐款资助,支持软件开发、基础设施、安全与协作工作;组织活动和开发者峰会;提供教育资源;并在法律事务中代表 FreeBSD 项目。

改进操作系统

在本季度,共有 346 次 src、72 次 ports 和 58 次 doc 提交由 FreeBSD 基金会资助。

有关上述提交开发工作的详细内容,请参阅以下报告:

其他亮点有:

  • 新增 kqueue1(KQUEUE_CPONFORK) 设施,用于在 fork 时将 kqueue 复制到子进程

  • exterror(9)arrow-up-right 基础设施,用于异步 io 和 geom

  • libuvmem(3)arrow-up-right 的用户态移植版本,源自 vmem(9)arrow-up-right

  • 修复匿名内存损坏问题

  • 针对组的细粒度支持以及手册页已回溯(MFC)到 14

  • 错误修复

  • 审查 MAC 系统

  • 启动对 S4(hibernate)支持的工作

  • 针对 VFS 的后台工作(尤其是支持 unionfs 变更)

基金会还支持着两项重大计划:笔记本支持与可用性项目(与 Quantum Leap Researcharrow-up-right 合作)以及由 Sovereign Tech Agencyarrow-up-right 委托的 infrastructure modernization projectarrow-up-right。有关这两项工作的背景信息,请参阅 2025Q1 季度状态报告arrow-up-right

我们已开始为 FreeBSD 连续第 22 次参与谷歌编程之夏arrow-up-right做准备。有兴趣贡献 project ideasarrow-up-right 或担任导师的人士,欢迎联系 [email protected]envelope

宣传

在 2025 年第四季度,我们的宣传工作重点在于扩展教育视频内容,吸引了前所未有的观众,将社区凝聚在一起举办了一次富有成效的供应商峰会,并回顾了那些有助于维持并提升人们对 FreeBSD 兴趣的工作。以下是基金会在 2025 年第四季度为 FreeBSD 部分宣传方式:

改进持续集成与工作流程

基金会聘用了一名全职员工,专门负责改进 FreeBSD 项目的持续集成系统和测试基础设施。

法律 / FreeBSD 知识产权

基金会持有 FreeBSD 商标,并有责任对其进行保护。我们还为核心团队提供法律支持,并调查出现的相关问题。

访问 https://freebsdfoundation.orgarrow-up-right 以了解我们如何支持 FreeBSD,以及我们如何为你提供帮助!

FreeBSD 发布工程团队

链接:

FreeBSD 15.0-RELEASE 公告arrow-up-right URL: https://www.freebsd.org/releases/15.0R/announce/arrow-up-right

FreeBSD 14.4-RELEASE 日程arrow-up-right URL: https://www.freebsd.org/releases/14.4R/schedule/arrow-up-right

FreeBSD 发布版本arrow-up-right URL: https://download.freebsd.org/releases/ISO-IMAGES/arrow-up-right

FreeBSD 开发快照arrow-up-right URL: https://download.freebsd.org/snapshots/ISO-IMAGES/arrow-up-right

联系方式:FreeBSD 发布工程团队,[[email protected]envelope]

FreeBSD 发布工程团队负责为 FreeBSD 官方项目发布制定并发布发布日程,宣布代码冻结并维护相应分支,以及其他相关工作。

团队管理了 15.0-RELEASE,并于 12 月完成了正式的 RELEASE 构建与发布公告;这是来自新分支 stable/15 的首个发布版本。作为其中的一部分,大量工作用于建立一套系统,以便为 15.0-RELEASE 基本系统安全地构建、签名和分发包仓库。

准备开始针对即将到来的 14.4-RELEASE 周期的规划。

发布工程团队继续为 mainstable/14stable/13 分支提供每周开发快照构建,同时开始为新的 stable/15 分支提供每周开发快照构建。

项目

包含多个类别的项目,从内核和用户空间到 Ports 或第三方项目。

Alpha-Omega 海滩清理项目

链接:

Alpha-Omega — Linux 基金会项目arrow-up-right URL: https://alpha-omega.devarrow-up-right

GitHub 上的 Alpha-Omegaarrow-up-right URL: https://github.com/ossf/alpha-omegaarrow-up-right

FreeBSD 基金会arrow-up-right URL: https://freebsdfoundation.orgarrow-up-right

来自 FreeBSD 基金会的项目仓库arrow-up-right URL: https://github.com/FreeBSDFoundation/alpha-omega-beach-cleaningarrow-up-right

联系方式:Pierre Pronchery [[email protected]envelope]

Alpha-Omega 的使命是推动关键开源项目和生态系统实现可持续的安全演进。在 2024 年与 FreeBSD 基金会成功合作——审计 bhyve 虚拟机监控器和 Capsicum 沙箱框架——之后,Alpha-Omega 再次选择了 FreeBSD,这次开展 Alpha Omega 海滩清理项目。这项新资助旨在整体提升 FreeBSD 基本系统中第三方软件的安全性和维护状况。FreeBSD 基金会获得了该资助,并负责管理和执行该项目。

自 2025Q3 上一份报告以来,完成了以下任务:

  • 依赖项清单

  • 安全风险评估

  • 提出优先级列表

  • 规划相应行动

  • 正式确定代码所有者

全局数据库文件是为该项目收集的信息,并与由德国 Sovereign Tech Agency 资助的 SBOM 计划协作完成。其结构在过去几个月中也已简化,但仍保持 YAML 格式。它仍然以 database.ymlarrow-up-right 的形式提供。

仓库中的 Go 程序 aobc-generate 更名为 aobc-tool。除之前的交付成果外,现在它还能够生成一组 SBOM 文件。这是通过 pkg-config 格式的中间文件完成的,然后借助 pkgconf 项目的 bomtool 程序将其转换为 SPDX:

这些信息包括为每个第三方组件所识别的相应代码所有者。aobc-tool 程序还能够为源代码树的给定部分建议已知的代码所有者。已于 2025 年 12 月联系所有已列出的代码所有者,以告知他们该项目,并确认他们与相关组件的关联。

目前收集到的反馈均为积极反馈,如建议将该工具打包进 FreeBSD ports。然而,目前看来,将该工具重写为适合纳入基本系统的形式(例如使用 Lua)更为合适。

最后,余下任务将持续执行至 2026 年第一季度结束:

  • 整合审查方法

  • 规划执行与协调

  • 最终报告

该计划已于 11 月向源代码管理团队进行了介绍。其意见和反馈将在项目的最后阶段予以考虑。

每月报告已提交给 alpha-omega,并如之前一样可在 GitHub 上查看,2025 年arrow-up-right,以及即将提供的 2026 年arrow-up-right

赞助方:Alpha-Omega、FreeBSD 基金会

将 VuXML 转换为开源漏洞数据库

链接:

用于 pkg 的 FreeBSD OSV 数据库arrow-up-right URL: https://github.com/illuusio/freebsd-osv/blob/main/db/freebsd-osv.jsonarrow-up-right

2025 年 FreeBSD 漏洞(Markdown/Commonmark 格式)arrow-up-right URL: https://github.com/illuusio/freebsd-osv/tree/main/md/2025arrow-up-right

Lua OSV 工具arrow-up-right URL: https://github.com/illuusio/freebsd-osv/blob/main/bin/osvf-tool.luaarrow-up-right

Python VuXML 到 OSV 转换工具arrow-up-right URL: https://github.com/illuusio/freebsd-osv/blob/main/bin/convert_vuxml.pyarrow-up-right

pkg 的 OSV PRarrow-up-right URL: https://github.com/freebsd/pkg/pull/2558arrow-up-right

OSV Schema 拉取请求arrow-up-right URL: https://github.com/ossf/osv-schema/pull/237arrow-up-right

用于跟踪 Google OSV GitHub 仓库中 OSV 集成的 OSV issuearrow-up-right URL: https://github.com/google/osv.dev/issues/3901arrow-up-right

FreeBSD PURL 工作arrow-up-right URL: https://github.com/package-url/purl-spec/pull/496arrow-up-right

联系方式:Tuukka Pasanen [[email protected]envelope]

自 5 月以来,始终在进行着开源漏洞数据库的工作。该工作的目标是生成 OSV 数据库,并淘汰旧的 VuXML 数据库格式。

目前有测试数据库和针对 pkg(8)arrow-up-right 的拉取请求。可以从 VuXML 更新该测试数据库并转换为 OSV JSON 格式。已完成用于更新、创建供 pkg 使用的合并数据库文件的所需工具。还可导出为 Commonmark 格式,其在 GitHub 上可正常渲染。

此外,已在 OSV Schema 中实现对 FreeBSD 的上游支持,使得 OSV 文件可以根据官方来源进行验证。同时也在推进 PURL 相关工作,目前进展缓慢。

如果你希望为该项目提供帮助,这是若干任务:

  • 验证从 VuXML 到 OSV 的转换是否准确

  • 验证 pkg 是否可以使用 OSV 数据库且生成了正确输出

赞助方:FreeBSD 基金会

FreeBSD 软件物料清单

链接:

pkgconf PR 429(添加 spdxtool)arrow-up-right URL: https://github.com/pkgconf/pkgconf/pull/429arrow-up-right

SPDX Lite 3.0.1 文档arrow-up-right URL: https://spdx.github.io/spdx-spec/v3.0.1/arrow-up-right

FreeBSD SPDX 3.0.1 JSON-LD 文件:FreeBSD.jsonldarrow-up-right URL: https://github.com/FreeBSDFoundation/alpha-omega-beach-cleaning/blob/illuusio/update-licenses/json-ld/FreeBSD.jsonldarrow-up-right

生成 SBOM 的源文件arrow-up-right URL: https://github.com/illuusio/freebsd-src/tree/freebsd-sbom/share/sbomarrow-up-right

SBOM 许可证收集当前状态(Markdown 文件)arrow-up-right URL: https://github.com/FreeBSDFoundation/alpha-omega-beach-cleaning/blob/illuusio/update-licenses/license.mdarrow-up-right

向 Makefile 添加 sbom 目标及所需 Lua 脚本arrow-up-right URL: https://reviews.freebsd.org/D53318arrow-up-right

用于处理特定 FreeBSD ports 目标的 make 命令输出的 Lua 函数arrow-up-right URL: https://reviews.freebsd.org/D53317arrow-up-right

向 FreeBSD ports 树添加 Lua Logging 模块并引入 Lua 函数和模块arrow-up-right URL: https://reviews.freebsd.org/D53316arrow-up-right

联系方式:Tuukka Pasanen [[email protected]envelope]

自 5 月以来,软件物料清单(SBOM)项目始终在进行着,其目标是提供必要的工具,以便从 FreeBSD Ports 和基本系统生成 SBOM。

2025Q4 的一项主要进展是将 spdxtool 合入了上游的 pkgconf。该回溯代码可确保在 pkgconf 的下一个版本中,pkgconf 工具能够成为具备符合 SPDX Lite 3.0.1 配置文件的 SBOM 创建工具。

另一项重要工作是收集构成 FreeBSD 基本系统一部分的应用程序信息。这些应用程序主要位于 FreeBSD git 仓库中的目录 usr.binusr.sbinsbinbin 中。FreeBSD Alpha Omega 海滩清理项目在此过程中发挥了关键作用,因为它收集了有关第三方库和应用程序的信息,我也为此做出了贡献。现在有 Lua 脚本和一个文件,可以生成 pkgconf 的 spdxtool 所需的文件,亦可导出为 SPDX JSON-LD 格式。

可以在我复刻的 FreeBSD src 树中找到使用这些收集到的信息和当前原始数据的工具。主要而言,现在收集并处理了所有包含 SPDX-License-Identifier 的 C 文件和头文件。

此外,还曾尝试为 FreeBSD Ports 的每个包回溯合入 SBOM 生成功能,但该工作已停滞,且需要更新。

如果你希望为此工作提供帮助:

  • 为 FreeBSD src 下的 C 文件和头文件添加 SPDX-License-Identifier 头。

  • 验证当前文件中 SPDX-License-Identifier 的正确性。

  • 验证已收集的信息是否准确。目前,所有在第 1、7 和 8 节中具有 man 手册页的工具均完成添加,其描述通过脚本从 man 手册页中提取。这些内容可能存在错误。

赞助方:FreeBSD 基金会

为 bhyve 提供完整的 CPUID 控制

联系人:Hans Rosenfeld [[email protected]envelope]

简介

通常,操作系统内核以及某些用户空间库和程序需要知道它们运行的 CPU 型号以及可用的架构特性。在基于 x86 的平台上,CPUID 指令可用于查询 CPU 的所有这些信息。

在虚拟机环境中,并非主机 CPU 报告的所有信息都应提供给 VM 客户端,需要修改某些 CPU 信息(如系统拓扑信息)来匹配 VM 配置,同时还需要报告一些额外的信息,但物理 CPU 并不支持,例如虚拟机管理程序标识。

因此,作为其正常操作的一部分,bhyve 为其 VM 客户端模拟 x86 CPUID 指令。目前,大部分来自主机 CPU 的 CPUID 信息会传递给 VM 客户端,同时会屏蔽掉部分特性,并且还报告了关于虚拟机管理程序、其能力和配置的综合信息。目前在 bhyve 中,这些均尚不可显式配置。

动机

对为 VM 客户端模拟的 CPUID 信息的完全控制,具有多种重要用途:

VM 迁移

为了在不同 VM 主机之间迁移正在运行或暂停的 VM,通常要求两个相关的 VM 主机都运行在相同或至少特性兼容的主机 CPU 系列、型号和步进上。即使是 CPU 型号和步进的细微差异也可能导致可用特性集不同。

控制客户端 VM 的 CPUID 信息能让操作员限制 VM 使用所有可能运行的 VM 主机共享的 CPU 特性子集,这也可以基于抽象的 x86 架构级别,而非物理的 CPU 型号。

这一功能目前在 Linux 上由 QEMU/KVM 支持,在 bhyve 中提供等效支持是实现完整功能 VM 在线迁移的关键一步。

固定 CPU 型号

某些软件会检查 CPU 系列/型号/步进以及 CPU 品牌字符串来确保软件兼容性。由于 VM 迁移或 VM 主机硬件变化而造成这些参数的变化,会被检测出系统变化,可能会禁用专有软件许可证。能够使用预定义的 CPU 型号(无论基于真实 CPU 还是架构子集)可完全规避此问题。

修改虚拟机管理程序标识

某些软件(如 Nvidia 驱动)会检查虚拟机管理程序标识以匹配特定已知值。Bhyve 自我标识为 bhyve bhyve,而 KVM 报告 KVMKVMKVM\0\0\0。虽然能在每个 VM 基础上通过命令行切换修改 bhyve 的虚拟机管理程序标识,但利用完整 CPUID 控制实现此功能会更加自然,且设计更为清晰。

特性屏蔽与架构降级/升级

能够轻松降级或升级 CPU 型号,或屏蔽单个特性位,可为操作系统和应用程序开发与测试提供便利。

bhyve 当前的 CPUID 控制状态

在 illumos 上的 bhyve 中,用于 CPUID 控制的 vmm 内核部分的基础实现存在了多年。此代码由 Oxide 编写,用于其基于 FreeBSD/bhyve 内核组件移植到 illumos 的 Propolis 虚拟机管理程序,未使用任何 bhyve 的用户空间代码。

与 illumos 上所有 bhyve 改进一样,CPUID 控制的 vmm 内核代码采用 CDDL 和 BSD 双许可证。在 FreeBSD 上已根据 BSD 许可证移植到 bhyve。作为概念验证,bhyve 用户空间已实现了 CPUID 控制的新配置选项,展示了 bhyve 上完整 CPUID 控制的潜力。

项目概述

该项目的持续工作旨在将现有概念验证工作集成到 FreeBSD,添加以下可用性功能:

  • 用户友好的配置方法,可根据需要覆盖单个位、部分或整个 CPUID 功能,同时保留其余主机 CPUID 信息或预定义 CPUID 配置

  • 用户友好的配置方法,用于设置 bhyve 报告的虚拟机管理程序标识

  • 一组基于常见 x86 架构级别的预定义 CPUID 配置,也可包括少量物理 CPU 型号的 CPUID 数据,并提供了用户友好的方法(为 VM 选择其中之一)

赞助方:FreeBSD 基金会

基础设施现代化

联系人:Ed Maste [[email protected]envelope]

联系人:Alice Sowerby [[email protected]]

该项目于 2024 年第三季度启动,由 Sovereign Tech Agency 委托,预算为 745,000 美元,支出截止至 2025 年底。主要目标是改善基本系统、Ports 和软件包的安全工具,更新项目基础设施以加快开发速度,增强构建安全性,使新开发者更易上手。

更多详细信息和更新,请访问新的项目信息仓库arrow-up-right

2025 年第四季度动态

截至 2025 年 12 月底,所有五个工作包均已完成,项目已结束。撰写本文时(12 月中旬),部分内容仍在审查,这些内容已移交给基金会工作人员来适当落地。

工作包 A:偿还技术债务

该工作包于 2025 年 9 月完成。项目成功与 FreeBSD 项目源管理团队的搭建同步进行,该团队创建并嵌入了新的流程,使缺陷管理更简便且可持续。

工作范围由源代码管理团队共同制定。

工作项如下:

工作包 B:零信任构建

该工作包使 FreeBSD 能够可重复构建,且无需 root 权限。

详细范围由核心团队、源代码管理团队、安全团队共同制定。

工作项如下:

  • 必须完成

    • 所有源码发布构建案例/工件均无需 root(已完成)

    • Src 工件的可重复构建(已完成)

    • 正式化并记录 make worldrelease.sh(正在审查)

  • 应该完成

    • 从编排工具中移除权限(由于中期可能采用替代方案而取消范围)

    • 将构建脚本移入公共仓库(正在审查)

    • 处理依赖关系(已完成)

  • 可选完成

    • 环境标准化(正在审查)

    • Ports 的可重复构建(正在审查)

    • CI 验证可重复性(正在审查)

    • 记录文档,允许第三方确认可重复性(正在审查)

工作包 C:CI/CD 自动化

该工作包通过现代化和安全化现有 CI/CD 系统,并将其扩展至覆盖 FreeBSD Ports 中的第三方软件包,从而改善了 CI/CD 自动化,简化了新旧软件的交付和运维。

详细范围由核心团队、源代码管理团队、安全团队、文档工程团队共同制定。

工作项如下:

  • 必须完成

    • 提高提交质量(正在审查)

    • 预合并 CI(已完成)

    • 环境元数据(已完成)

    • 将 CI 扩展到 Ports 树(正在审查)

    • CI 威胁模型(正在审查)

    • CI 管理流程(正在审查)

    • 记录文档(正在审查)

  • 应该完成

    • 第三方互操作性(正在审查)

    • 测试中自动化分析(正在审查)

    • 测试用例管理(正在审查)

  • 可选完成

    • 精细调试(正在审查)

工作包 D:改进 Ports 和软件包的安全性

该工作包以多种方式提高了 FreeBSD Ports 和软件包的安全性。我们增加了对 OSV(开源漏洞)格式的支持,这是一种标准化描述安全漏洞的方式。我们还构建了基本工具,从全球安全数据库下载漏洞信息,特别关注 NIST 通用平台枚举(CPE)字典。

现在,工具 pkg(8)arrow-up-right 可以创建和读取 CPE 字符串,但尚未支持 CPE JSON 格式。我们为 CPE 和 OSV 解析编写了新测试用例,并更新了现有的 pkg(8)arrow-up-right 安全审计测试。此外,我们创建了一个测试仓库,将 FreeBSD 漏洞数据转换为 OSV 格式,可与 pkg(8)arrow-up-right 配合使用。该测试仓库已进行准确性审查,现在,从旧 FreeBSD VuXML 格式转换到新 OSV 格式的过程得到了简化。

详细范围由核心团队、Port 管理团队、安全团队、pkg 管理团队共同制定。

工作项如下:

  • 必须完成

    • 新数据库格式(已完成)

    • 设置 2+ 个数据库实例(因时间限制取消)

    • 将数据从旧数据库迁移到新数据库(概念验证完成)

    • pkg(8)arrow-up-right 中添加对新格式的支持(已完成)

    • 回溯上游(已完成)

    • 按需生成 SBOM(正在审查)

    • 记录如何设置构建和测试目标(正在审查)

    • 集成第三方测试目标(因时间限制取消)

    • 持续测试(正在审查)

  • 可选完成

    • 提供 CI 工件(因时间限制取消)

工作包 E:改进软件物料清单(SBOM)

该工作包为生成 FreeBSD 软件物料清单(SBOM)的工具和流程提供了基础改进。

我们进行了修改(目前正在审查),将基本系统和 Ports 树的单个来源数据整合为统一的高级视图。我们还创建了工具,可扫描 FreeBSD 源代码树来生成覆盖整个软件栈的 SBOM 报告。

FreeBSD Ports 树已有良好的 SBOM 元数据和成熟的包依赖跟踪工具,因此我们为 Ports 提供的 SBOM 解决方案已成熟并进入审查阶段。然而,FreeBSD 基本系统使用完全不同的构建系统,SBOM 信息分散在整个仓库中。主要挑战是将所有依赖和包信息集中到一处。因此,FreeBSD 基本系统的 SBOM 创建仍处于技术预览阶段,目前仅提供示例数据。

已委托一项 2026 年初的后续项目,以在基础元素上构建完整、健壮的 SBOM 解决方案。

详细范围由核心团队、Port 管理团队、安全团队、发布工程团队、pkg 管理团队共同制定。

工作项如下:

  • 必须完成

    • 评估更广泛生态系统中可用的项目/解决方案(已完成)

    • 提出 SBOM 目标解决方案(正在审查)

    • 在 CI 中生成 SBOM(如每周构建)(因时间限制取消)

    • 作为发布过程的一部分生成 SBOM 工件(部分完成)

    • 按需生成 SBOM 工件(正在审查)

    • 汇总现有数据(正在审查)

    • 记录并解释所做决策(正在审查)

  • 可选完成

    • 与其他类似项目进行合作(已完成)

委托机构:Sovereign Tech Agency

Parthenope — 设计与理念

链接:

Parthenope 仓库arrow-up-right URL: https://gitlab.com/alfix/parthenopearrow-up-right

联系人:Alfonso Sabato Siciliano [[email protected]envelope]

Parthenope 是一款模块化、两步式的 FreeBSD 操作系统安装程序,主要使用 Lua 编写。安装过程分为两个阶段:

  1. 第一步,通过各种交互界面生成配置文件和安装命令。

  2. 第二步,根据先前创建的文件进行实际的系统安装。

该项目简单、可扩展且灵活,旨在支持多种前端、语言、安装模式(“Auto”“Easy”和“Expert”)、交互级别以及日志选项。

Parthenope 起初是个人项目,用于回答一个简单问题:“在我的笔记本上安装 FreeBSD 时,我希望有哪些功能?”此后,它发展为开源工具,任何人都可以使用、适配和扩展来满足自己的需求。

本季度进展:

  • 在 EuroBSDCon 2025 上展示了动机、概念验证以及部分截图预览,幻灯片arrow-up-right

  • 对 ISO 镜像生成脚本和国际化子系统进行了重构。

  • 创建了公共仓库。

目前尚无法安装 FreeBSD。下一步工作包括:

  • 重构配置文件。

  • 重构子系统:日志、模式、第二阶段等。

  • 实现安装程序组件:分区工具、网络管理、日期/时间等。

在初始阶段,唯一的前端将是文本用户界面,非常类似于 FreeBSD 默认安装程序 bsdinstall。未来将添加额外前端。

QEMU vmm 加速器支持

链接:

项目链接arrow-up-right URL: https://wiki.freebsd.org/SummerOfCode2025Projects/VMMAcceleratorSupportForQEMUarrow-up-right

代码(FreeBSD 分支)arrow-up-right URL: https://github.com/dumrich/freebsd-srcarrow-up-right

代码(QEMU 分支)arrow-up-right URL: https://github.com/dumrich/qemu.gitarrow-up-right

联系人:Abhinav Chavali [[email protected]envelope]

概述

本项目旨在为 QEMU 实现 vmm(4)arrow-up-right 加速器后端。通过将 QEMU 与 FreeBSD 原生虚拟机管理程序基础设施接口对接,用户可以使用硬件虚拟化扩展(VMX/SVM)以接近原生的性能运行虚拟机,类似于 KVM 在 Linux 上的功能。这将 QEMU 丰富的设备模拟生态与 FreeBSD 内核虚拟机管理程序的性能结合起来。

状态

该后端目前功能已完善,可使用单个 vCPU 启动 FreeBSD 客户端。建立了用于将 QEMU 与 libvmmapi 接口对接的核心基础设施。关键点是,现在成功使用内核的 vmm 实现了中断控制器(8259 PIC、IOAPIC、LAPIC),而非用户空间模拟。

待办事项与社区协助

虽然主要工作已完成,但仍有关键领域需要社区贡献以便将其合并至上游:

  • 客户端 SMP 支持:目前客户端仅限 1 个 vCPU。我们希望获得协助,以调试后端现有的循环/线程处理,从而启用多 CPU 支持。

  • 设备卸载:RTC 和 HPET 定时器目前仍由 QEMU 在用户空间模拟。需要重新设计来使用内核版本的 vmm,以期获得更高性能和正确性。

  • 一般稳定性:就像任何虚拟机管理程序后端那样,我们需要在不同客户操作系统类型上进行边界情况测试和压力测试的协助。

感谢谷歌的赞助,以及 FreeBSD 项目提供的指导和贡献系统的机会。

赞助方:2025 谷歌编程之夏

Sylve — FreeBSD 的统一系统管理平台

链接:

GitHubarrow-up-right URL: https://github.com/AlchemillaHQ/Sylvearrow-up-right

CIarrow-up-right URL: https://sylve-ci.alchemilla.ioarrow-up-right

Discordarrow-up-right URL: https://discord.gg/bJB826JvXKarrow-up-right

联系人:Hayzam Sherif [[email protected]envelope]

Sylve 是现代化的 FreeBSD 统一系统管理平台,灵感来自 Proxmox。它提供了集成的 Web 界面,用于管理虚拟机(通过 Bhyve)、Jail、ZFS 存储、网络和防火墙。

后端使用 Go 实现,前端使用 SvelteKit、Tailwind CSS 和 ShadCN UI 组件构建。

该项目强调最小系统占用。默认仅需以下软件包:

可选运行时依赖,仅在使用对应功能时需要:

2025 年第四季度进展亮点

存储

  • ZFS 管理:我们现在使用 GitHub - gzfsarrow-up-right,它是对 zfs/zpool/zdb CLI 的 Go 封装,提供了完整的 ZFS 池和数据集创建与管理支持。和以前的实现相比,性能和可靠性都有所提升。

  • 虚拟机和 Jail 存储管理:在初始化期间,用户可选择 VM(磁盘/zvols)和 Jail(数据集)创建所在的池,将在后台自动完成所有磁盘/数据集的创建。

Jail

  • 添加了对 Linux Jail 的支持,以支持使用 FreeBSD Linux 兼容层。用户可通过 Web 界面创建、管理和监控 Linux Jail。目前仍为实验性,但已在 Rocky Linux 和 Alpine 上进行了海量测试。

  • 对 Jail 进行了多项改进,在创建/编辑/查看完整 Jail 时,为用户提供了更多选项。

虚拟机

  • Cloud-Init 支持:Sylve 现在支持 Cloud-Init 自动化 VM 配置。用户可在创建/编辑 VM 时提供 Cloud-Init 配置。

  • 串口控制台:实现了基于 Web 的虚拟机串口控制台,使用户可直接通过 Sylve UI 访问 VM 控制台。

网络

工具

下载器现在支持自动解压多种归档格式,包括 .tar.gz、.zip、.xz 和 .bz2,并能将磁盘镜像自动转换为 raw 格式。

综合

Sylve 现需 FreeBSD 15.0 或更高版本,因为依赖 Jail 元数据和 ZFS v2.4.0+,其中包含我们依赖的多条命令的 JSON 输出。

平台还进行了大量 UI/UX 改进、性能优化和漏洞修复,如:

  • 使用 EChartsarrow-up-right 改进图表性能和交互性

  • 增强无障碍功能,确保符合 WCAG 标准

  • 国际化(i18n)支持,通过 Wuchalearrow-up-right 实现了 UI 的印地语(hi)翻译

  • 后端优化,加快数据检索并减少加载时间

  • 移除若干前端依赖(尤其是 tanstack),采用更轻量替代方案以减小包体积并提高加载速度

路线图更新

部分集群工作仍在进行。待完成后,将发布完整项目文档,并开始打包 Sylve,使其可通过 pkg 简便安装。

我们还在 Sylve 单仓库内开发新的紧密集成备份系统,实现虚拟机、Jail 和配置的简单备份与恢复。

赞助方:FreeBSD 基金会

内核

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

改进挂起/恢复

链接:

博客arrow-up-right URL: https://obiw.ac/s0ix/arrow-up-right

BSDCan 关于 s2idle/S0ix 的演讲arrow-up-right URL: https://youtu.be/RCjPc4X2Edcarrow-up-right

睡眠测试镜像arrow-up-right URL: https://people.freebsd.org/~obiwac/s0ix/arrow-up-right

s2idle/S0ix + AMD SMU 栈概览arrow-up-right URL: https://reviews.freebsd.org/D48721arrow-up-right

联系人:obiwac [[email protected]envelope]

FreeBSD 正在新增对挂起到空闲(suspend-to-idle)和 S0ix 睡眠的支持。

这将使现代 Intel 和 AMD 笔记本(部分不支持 ACPI S3 睡眠)能够进入低功耗状态,从而延长电池续航。

在 FreeBSD 15 上,Framework 13 AMD Ryzen 7040 系列笔记本现在能半可靠地进入 S0i3。

睡眠类型和 sysctl 代码已提交,其中修复了一个回归问题(D53909arrow-up-right)。由于现有 ACPI D 状态代码存在问题,导致某些之前可正常工作的设备无法进入 S3,因此为 S0ix 所需的 D 状态相关提交被回滚,但这些似乎不影响上述机器进入 S0i3。对 D 状态代码进行了清理和修复,但只要不影响目标机器进入 S0i3,这并非优先事项。

审核了 s2idle 和 SPMC 修订版本(分别为 D48734arrow-up-rightD48387arrow-up-right),并进行了一些准备工作以便提交。已进行新的探索性修订来实现 s2idle 循环(D54406arrow-up-rightD54410arrow-up-right)以及必要的调度器更改(D54407arrow-up-rightD54409arrow-up-right)。

在从 S0i3 恢复时出现一些问题,似乎仅在加载 USB4 驱动时发生,正在调查相关问题。

提供了预构建的睡眠测试镜像,可在机器上轻松测试 S0i3 进入。详细说明见 网页arrow-up-right

关于链接,博客文章仍为过时内容。

赞助方:FreeBSD 基金会

改进音频栈

联系人:Christos Margiolis [[email protected]envelope]

自 2024 年第一季度以来,我一直在进行着音频栈相关工作。下面是之前的状态报告:

2024Q1arrow-up-right URL: https://www.freebsd.org/status/report-2024-01-2024-03/#_audio_stack_improvementsarrow-up-right

2024Q2arrow-up-right URL: https://www.freebsd.org/status/report-2024-04-2024-06/#_audio_stack_improvementsarrow-up-right

2024Q3arrow-up-right URL: https://www.freebsd.org/status/report-2024-07-2024-09/#_audio_stack_improvementsarrow-up-right

2024Q4arrow-up-right URL: https://www.freebsd.org/status/report-2024-10-2024-12/#_audio_stack_improvementsarrow-up-right

2025Q1arrow-up-right URL: https://www.freebsd.org/status/report-2025-01-2025-03/#_audio_stack_improvementsarrow-up-right

2025Q2arrow-up-right URL: https://www.freebsd.org/status/report-2025-04-2025-06/#_audio_stack_improvementsarrow-up-right

2025Q3arrow-up-right URL: https://www.freebsd.org/status/report-2025-07-2025-09/#_audio_stack_improvementsarrow-up-right

上次报告arrow-up-right以来的重要工作:

您也可以在 freebsd-multimedia@arrow-up-right 关注开发过程,我会定期发布报告。

赞助方:FreeBSD 基金会

LinuxKPI 802.11 与原生无线动态

链接:

支持 MediaTek 无线网卡arrow-up-right URL: https://github.com/FreeBSDFoundation/proj-laptop/issues/66arrow-up-right

支持 Realtek 无线网卡arrow-up-right URL: https://github.com/FreeBSDFoundation/proj-laptop/issues/99arrow-up-right

联系人:Bjoern A. Zeeb [[email protected]envelope]

联系人:FreeBSD 无线邮件列表 [[email protected]envelope]

本报告关注在 FreeBSD 上使用宽松许可的 Linux 无线驱动(大多未修改)以及为原生 net80211 栈准备支持新标准的工作。

更新驱动

由于厂商对 Linux v6.16 的更新在上季度因 drm-kmod 冲突以及随后 Nvidia DRM 问题而停滞,我们在 9 月 15.0-RELEASE 截止前,更新到了基于 v6.17 的驱动。不幸的是,多项修复未能及时纳入发布。随后,我们还修复了 graphics/drm-515-kmodarrow-up-right ,还修正了 LinuxKPI 代码来恢复 mlx5en 的 SR-IOV 功能。

12 月我们开始跟踪 Linux v6.18 的部分驱动。后续可能直接升级到 v6.19-rcN,从而受益于上游的改进。

固件

随着驱动更新到新版本,一些固件文件也需要更新。以前用于 iwlwifi(4)arrow-up-right 的自动化方法不再适用,因此我们现在尽量获取所有可用文件,同时尽可能将其分类为不同版本。port wifi-firmware 框架完全改为了仅提供纯固件文件,不再内置内核模块。这意味着,更新内核不再需要更新软件包,(在大多数情况下)可独立更新固件。无论是否支持,其他驱动的固件也已更新。

Intel iwlwifi 支持

实现了一些错误修复,正式将主要涉及新版 iwlwifi(4)arrow-up-right 的 mvm 子驱动拆分为 mvm 与 mld。此外,修复了对 1x1 网卡(如 AX101)的支持问题,该卡在 11n 和 11ac 模式下会发生固件崩溃。

Mediatek mt76 芯片组支持

在找到可用于开发的 MT7922 网卡的笔记本(非 Framework 笔记本主 WiFi 插槽)后,10 天内即可实现基本速率数据包传输。mt76 驱动仍受 LinuxKPI struct page 冲突和后续 page pool 工作阻塞。为 drm-kmod master 分支提交了 pull request,以提前处理 struct page 变更可能导致的冲突。支持 11n 与 11ac 速率的工作仍在进行。后续将添加更多 mt76 支持的芯片组,可能下一个为 MT7925。

Realtek rtw88 与 rtw89 11n 和 11ac 支持

部分 Realtek 芯片组在 LinuxKPI 兼容实现上存在无法工作、崩溃问题。至少 rtw88(4)arrow-up-right 芯片组无法正常关联或扫描,rtw89(4)arrow-up-right 驱动有时会导致内核 panic。相关改进工作正在进行。同时,正在开发这些驱动的 802.11n 与 802.11ac 速率支持。BlockACK 支持已完成,rtw89(4)arrow-up-right 接收端表现良好,但发送端仍停留在基础速率,这可能是由于新驱动下行调用导致的,我们现在开始在 LinuxKPI 中支持这些调用以期解决问题。

赞助方:FreeBSD 基金会

GENEVE 隧道

链接:

为 Geneve 添加支持 (RFC8926)arrow-up-right URL: https://reviews.freebsd.org/D54172arrow-up-right

联系人:Seyed Pouria Mousavizadeh Tehrani [[email protected]envelope]

我从事实现 GENEVE 隧道的工作有三个月了,目前处于审查阶段。GENEVE 在 L3 (IP/UDP) 下层之上为租户系统创建了通用网络虚拟化隧道接口,可使用 GENEVE 协议提供第 2 层(以太网)或第 3 层服务。

已完成工作如下:

  • 支持 IPv4 和 IPv6 的单播和多播下层。

  • 支持 Jail 以及每个 VNET 的 geneve 隧道。

  • 支持 RXCSUM/TXCSUM/TSO 卸载功能。

  • 支持继承及配置 ToS、TTL 和 DF 值。

  • 支持 if_geneve 的 NETLINK/WITHOUT_NETLINK。

  • 更新 ifconfig,使其支持使用 NETLINK 创建和修改 if_geneve 隧道。

  • 编写 geneve(4)arrow-up-right 手册页,再更新 ifconfig(8)arrow-up-right 来内置 geneve 参数。

  • 编写测试。

支持 geneve 实现的依赖与相关审查:

此次审查规模较大,因为我在提交前实现了其他平台已有的功能。你可以在 Phabricator 上进行审查,提供反馈来加快进程。

内核 Rust 支持

链接:

rust KPI 仓库arrow-up-right URL: https://github.com/ayrtonm/freebsd-kpi-rsarrow-up-right

virtio 声卡 Rust 驱动arrow-up-right URL: https://github.com/ayrtonm/freebsd-src/tree/virtio_sndarrow-up-right

联系人:Ayrton Muñoz [[email protected]envelope]

我一直在为内核添加对 Rust 的支持,还尝试使用 Rust 编写设备驱动。Rust 可以通过类型系统强制执行关于指针使用的规则,而这些规则在 C 中通常是隐含的,造成了开发者额外的心智负担。虽然 Rust 无法规避所有错误,但它可以帮助开发者减少这些负担,更专注于实现核心功能。

当前,Rust KPI 仍在开发中,尚不稳定,但它们不依赖于更广泛的 Rust 生态系统及不稳定语言特性/API。这意味着它们最终应能提供与 C KPI 等效的稳定性,升级到新 Rust 工具链不应引入破坏性变更。它也提供了与 C 同等的透明度,明确何时发生分配,因为使用的是非分配子集的 Rust 标准库arrow-up-right。不同内核子系统可能需要 Rust 封装,但这些可以基于 rust KPI 仓库提供的基础功能构建。

自 2024 年末以来,我零散地进行了实验性开发,主要发生在 rust KPI 仓库中。该仓库还提供了用于 config(8)arrow-up-right / 构建系统集成的 Makefile 和补丁。对开发者而言,最容易构建和尝试的驱动是我的 virtio 声卡驱动arrow-up-right。部分接口仍在变化,但该驱动已足够在 QEMUarrow-up-right 中播放音乐。该分支还包含可复用的 Rust 封装,可用于其他 virtio 设备或声卡/PCM 驱动。

目前仅支持 x86-64 和 aarch64 架构。LLVM 支持的其他架构可在有需求时添加,但我最初希望专注于少数使用场景。除了 QEMU,我还在 ARM64 Apple 硬件上测试 Rust 驱动,涉及一些我在 2024 年开始的 WIP 驱动的绿色字段部分移植到 Rust,包括 M2 MacBook 键盘的 DockChannel HID 驱动。

预计到 2026 年初,Rust KPI 将足够稳定,能让开发者尝试编写新代码。它们不会完美,但会尽量兼容现有驱动的期望,并符合 Rust 开发者的使用习惯。同时,预计在 2026 年上半年,Apple 驱动将恢复到最初 C WIP 的功能水平。

改进 USB 内核调试

联系人:Tom Jones [[email protected]envelope]

XHCI USB 控制器提供了一种模式,可作为系统调试接口使用。XHCI 调试模式使用特殊的 USB 3 数据线,其中断开了 VBUS、D+ 和 D-。通过该功能可用于对 FreeBSD 内核进行实时调试,用于排查导致系统视频控制台锁死的问题,且在没有可替代方案(如串口控制台)时尤其有用——例如在调试图形驱动问题时就可能出现上述情况。

Hiroki Satoenvelope 开发了 XHCI 调试接口支持,并以一些开发中 git 分支的形式提供。该实现使 FreeBSD 可同时作为调试主机(Debug Host)和调试目标(Debug Target),支持从加载器到内核的全程调试。

本季度,对 XHCI 调试主机端接口进行了大量调试工作。设计了一块定制板,支持 Type-C 的两种调试模式:XHCI 调试和 Type-C 调试配件模式(DAM)。DAM 为 Type-C 接口提供了替代模式,在部分设备(如 2025 Framework 笔记本和桌面机)上,该模式可访问 SOC UART 进行调试。

为了完成完整的 XHCI Type-C 适配器和更完整的 DAM 适配器,仍需进一步对硬件进行改进。

为加载器部分的实现创建了评审,提取了若干更改,合并入了源码树。

赞助:FreeBSD 基金会

架构

更新平台特定功能,增加对新硬件平台的支持。

香蕉派 R64 FreeBSD 驱动开发

链接:

Wikiarrow-up-right URL: https://wiki.freebsd.org/arm/Bananapiarrow-up-right

联系人:Martin Filla [[email protected]envelope]

简介

香蕉派 R64 是一块基于 MediaTek MT7622 的开发板(ARM Cortex-A53,双核约 1.35 GHz),搭载 4× 千兆 LAN、1× 千兆 WAN、Wi-Fi(4×4n)、蓝牙 5.0,以及多种外设接口(UART、SPI、I²C、GPIO、SATA、mini-PCIe、eMMC 等)。

FreeBSD 支持现状

已实现:

  • UART 驱动

  • 时钟管理(clocks)

  • Pinctrl

  • 存储控制器(eMMC/SD/MMC)驱动

  • 以太网交换机 mt7531 驱动

  • 以太网 mt7622 驱动

  • XHCI 驱动

  • 看门狗驱动

  • RTC 驱动

  • RNG 驱动

  • Pciecfg 驱动

  • SysIRQ 驱动

开发路线图

待实现驱动:

  • USB3 / T-PHY

  • SATA / AHCI / T-PHY

  • Wi-Fi(可能是 MediaTek MT7615)

  • GPIO 子系统

  • I²C

  • SPI

  • PWM

  • PCIE

正在开发的驱动:

  • T-PHY

文档

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

可访问性手册

链接:

FreeBSD 可访问性手册arrow-up-right URL: https://docs.freebsd.org/en/books/accessibility/arrow-up-right

联系人:

FreeBSD 可访问性邮件列表 [[email protected]envelope]

Alfonso Sabato Siciliano [[email protected]envelope]

近期报告中,新版可访问性手册已发布并完成评审。该手册旨在记录 FreeBSD 中可用的辅助技术,涵盖基本系统和 Ports Collection。

本季度工作:

当前手册主要概述了视觉障碍相关的辅助技术,是 FreeBSD 基金会赞助的 Vision Accessibility 项目的一部分。手册结构为两部分、六章:

  1. 帮助(Help) — 介绍了如何通过适当的 FreeBSD 沟通渠道有效请求帮助。

  2. 虚拟终端(Virtual Terminal) — 记录 FreeBSD 虚拟控制台(vt(4)arrow-up-right)的视觉可访问性功能。

  3. 颜色(Colors) — 解释配置颜色方案,包括高对比度主题和环境光调节屏幕颜色。

  4. 低视力(Low Vision) — 概述图形桌面环境中为低视力用户提供的辅助工具,如屏幕放大器、可读字体及缩放功能。

  5. 失明(Blindness) — 描述为盲人用户设计的辅助技术,重点是屏幕阅读器及兼容工具。

  6. 开发(Development) — 为开发者提供资源,使其软件可访问、测试可访问性并改善视觉障碍用户支持。

手册在主观上避免使用图片,尽量减少非纯文本元素,旨在提高与辅助技术的兼容性。欢迎提供建议和新思路,可将反馈发送至 FreeBSD 可访问性邮件列表,以便公开讨论和跟踪。

赞助:FreeBSD 基金会

FreeBSD Git 每周动态

链接:

FreeBSD Git Weeklyarrow-up-right URL: https://freebsd-git-weekly.tarsnap.net/arrow-up-right

联系人:

Graham Percival [[email protected]envelope]

FreeBSD Git 每周动态提供了 FreeBSD 源码树arrow-up-right 的提交列表,按“文档”、“硬件支持”、“测试”和“内核”等类别分类。对于希望一次性查看三个月开发情况的用户,也提供了季度汇总。

该项目旨在帮助开发者和用户便捷跟踪 FreeBSD 的相关更新,无需订阅 dev-commits-src-main 邮件列表,也不用查看每条提交。

邮件列表:[email protected]arrow-up-right,用于每期报告公告。

赞助:Tarsnap Backup Inc.

FreeBSD 俄语文档项目

链接:

FreeBSD 官方俄语网站arrow-up-right URL: https://www.freebsd.org/ru/arrow-up-right

FAQarrow-up-right URL: https://docs.freebsd.org/ru/books/faq/arrow-up-right

项目讨论区arrow-up-right URL: https://github.com/freebsd-doc-ru/freebsd-doc/discussionsarrow-up-right

联系人:

Andrey Zakhvatov [[email protected]envelope]

Vladlen Popolitov [[email protected]envelope]

FreeBSD 俄语文档项目旨在为 FreeBSD 提供最新的俄语翻译,包括 FAQ、手册和网站内容,以支持俄语用户并提升全球操作系统的使用率。

上季度工作成果:

  • Weblate 中的所有文本已完成翻译,覆盖了近期所有变更。

  • 完成了剩余文档的审查与更新,47 个文档(书籍和文章)均已在 俄语文档站点arrow-up-right 得到同步。

  • www.FreeBSD.org/ruarrow-up-right 的俄语版已恢复,约 90% 页面得到了更新。

  • 新闻、活动公告及媒体链接均已翻译并发布;2025 年 1 月起,勘误通告和安全公告也开始提供俄语版。

  • FreeBSD 15.0 发布文档(发布说明、Errata 等)已与英文原版同步翻译为俄语。

  • FreeBSD man 页翻译项目已启动,目前处于早期阶段,示例见 GitHubarrow-up-right

感谢以下同事在本季度在提交审查中的贡献:

下季度计划:

  • 完成俄语网站剩余页面的更新。

  • 建立可持续工作流程,确保翻译内容(新闻、活动、媒体、勘误、安全公告)及时更新并发布。

  • 在 Weblate 可用后尽快翻译新出版的《FreeBSD 可访问性手册》。

  • 持续推进 FreeBSD man 页的翻译工作。

如希望参与翻译,请参考 官方翻译指南arrow-up-right

欢迎协助翻译以下材料:

  • 网站页面

  • man 页

Ports

影响 Ports 的更改,包括影响整个 Ports 的重大调整或单个 Port 的更新。

FreeBSD HPC Ports 现代化:Slurm 25.11 与独立 PMIx/PRRTE

链接:

sysutils/slurm-wlm: 23.11.7 → 25.11.0arrow-up-right URL: https://cgit.freebsd.org/ports/commit/?id=1536bac0dd26d81e315652929b8bfaff9c136089arrow-up-right

net/pmix: Exascale 进程管理接口 (PMIx)arrow-up-right URL: https://www.freshports.org/net/pmix/arrow-up-right

net/prrte: PMIx 参考运行环境 (PRRTE)arrow-up-right URL: https://www.freshports.org/net/prrte/arrow-up-right

sysutils/py-clustershell: 高效集群管理的 Python 框架arrow-up-right URL: https://www.freshports.org/sysutils/py-clustershell/arrow-up-right

Kavocado 月度状态报告 – FreeBSD HPC 备注arrow-up-right URL: https://kavocado.net/reports/arrow-up-right

联系人:Generic Rikka [[email protected]envelope]

本季度,主要工作集中在使 FreeBSD 成为现代 HPC 集群的实际目标,通过更新 Slurm + PMIx + PRRTE 栈的关键组件,使其作为一级 Ports 可用。

已完成工作

  • sysutils/slurm-wlmarrow-up-right 从 23.11.7 更新至 25.11.0,跟踪上游最新的长期维护系列,大幅减少 FreeBSD 所需的本地补丁数量。

  • 更新 Slurm 的 rc.d 脚本,使 slurmctldslurmd 更好地整合到典型 FreeBSD 部署中(可配置的配置/日志目录、pid 文件、状态和清理助手)。

  • 引入独立 Port net/pmixarrow-up-rightnet/prrtearrow-up-right,并将 net/openmpiarrow-up-right 改为使用这些独立运行时,而非 OpenMPI 自带的副本,使 FreeBSD 在与许多 Linux HPC 发行版的 MPI 运行时分发方式更加一致。

  • 添加 sysutils/py-clustershellarrow-up-right,它是一款广泛用于可扩展集群管理的 Python 框架,为 FreeBSD 用户提供了与生产 HPC 系统常用工具一致的体验。

正在进行的工作

后续计划

  • 持续跟踪上游 Slurm、PMIx 和 PRRTE 发布,使 FreeBSD 保持对现代 MPI/Slurm 栈的可用性。

  • 撰写 FreeBSD 上“参考”Slurm + OpenMPI + PMIx + PRRTE 配置文档,降低新站点在 HPC 环境中尝试 FreeBSD 的门槛。

  • 识别并解决 FreeBSD 特有的 Bug 或回归,确保软件栈在 FreeBSD 上保持功能完整且稳健。

FreeBSD 上的 GCC

链接:

GCC 项目arrow-up-right URL: https://gcc.gnu.org/arrow-up-right

GCC 13 版本系列arrow-up-right URL: https://gcc.gnu.org/gcc-13/arrow-up-right

GCC 14 版本系列arrow-up-right URL: https://gcc.gnu.org/gcc-14/arrow-up-right

GCC 15 版本系列arrow-up-right URL: https://gcc.gnu.org/gcc-15/arrow-up-right

GCC 16 版本系列arrow-up-right URL: https://gcc.gnu.org/gcc-16/arrow-up-right

联系人:Lorenzo Salvadore [[email protected]envelope]

本季度 FreeBSD 上的 GCC 几乎没有变化。

主要新闻是 将 GCC 默认版本从 13 更新到 14 的 exp-runarrow-up-right 最终完成了。由于在最新 FreeBSD 版本上 port emacs 中发生的一些 segmentation fault(段错误),这一过程比预期耗时更长。由于 GCC_DEFAULT 的更新拖延了很久,因此选择暂时将 port emacs 固定在 GCC 13,以便该个别 Port 的 bug 不会阻止 ports 树的其他部分默认使用更新的 GCC 版本。更多信息请参见 PR 288303arrow-up-right

GCC 15 已位于在我们的 ports 树中,将 GCC_DEFAULT 更新到 15 的过程将很快开始。

改进 bhyve 虚拟机监控器的 libvirt 支持

链接:

libvirt:Bhyve 驱动arrow-up-right URL: https://libvirt.org/drvbhyve.htmlarrow-up-right

联系人:Roman Bogorodskiy [[email protected]envelope]

已完成工作

  • libvirt/bhyve 驱动:

    • 添加了 NVMe 设备支持。

    • 添加了 PCI 直通支持。

    • 添加了 SLIRP 网络支持。

    • 添加了更多配置选项:SATA nmrr/RPM、NVMe 队列、VNC 等待。

  • 启用了 libvirt-tck hooksarrow-up-right 测试。

下季度计划

  • 添加支持(有针对性,但可能延至下季度):

    • 启动顺序配置。

    • TPM 设备。

    • 完整的挂起/恢复支持。

    • arm64 支持。

    • virtio-scsi 支持。

    • 客户机 NUMA 配置支持。

  • 改进 FreeBSD 上的 virt-manager 支持。

赞助方:FreeBSD 基金会

改进 FreeBSD 上的 OpenJDK

链接:

项目概述arrow-up-right URL: https://freebsdfoundation.org/project/improving-openjdk-on-freebsd/arrow-up-right

项目仓库arrow-up-right URL: https://github.com/freebsd/openjdkarrow-up-right

联系人:

Harald Eilertsen [[email protected]envelope]

FreeBSD Java 邮件列表 [[email protected]envelope]

该项目的目标是改进 FreeBSD/amd64 和 FreeBSD/arm64 上的 OpenJDK 支持。

Java 是许多高性能、关键企业系统的重要运行环境。确保基于 Java 的应用程序在 FreeBSD 上正确、高效地运行,对于确保 FreeBSD 继续成为企业、各类企业和组织的可行且有吸引力的平台非常重要。

本季度达成的事项/里程碑如下:

  • 发布了 port OpenJDK 25,随后更新至 OpenJDK 25.0.1arrow-up-right。感谢 Greg Lewis 和 Kurt Miller 的帮助。

  • 为 port OpenJDK 25 添加了 FLAVORS headlessjrearrow-up-right。可允许仅构建和安装无 GUI 的 JDK 或仅 Java 运行时环境(无编译器或开发工具)。也可以组合使用,仅安装 headless-jre 变体。这在服务器环境或资源受限环境中非常有用,在这些环境中无需完整的 JDK 和工具。计划将这些 FLAVORS 扩展到其余 OpenJDK port。

  • 向上游提交了 修复arrow-up-right,解决了使用 jemalloc 或其他不使用 C 标准对齐要求 强对齐解释arrow-up-right 的分配器时的无效内存对齐问题。在 FreeBSD 上使用 java.lang.foreign.Arena API 分配小型堆外内存段时,这会导致问题。该修复将包含在 OpenJDK 26 中。

  • 弃用上游 不再支持的 OpenJDK portarrow-up-right。这些 ports 将在 2026 年上半年逐步过期并移除,仅保留 LTS 版本和最新维护的 ports。

其他说明:

  • 花了一些时间研究 getrlimitusage(2) 系统调用的历史arrow-up-right,发现它自版本 14.2 起可用,尽管 man 页显示首次出现于版本 15。另见 emaste 的相关评审arrow-up-right。这一点很重要,因为 上季度的性能改进arrow-up-right依赖该系统调用。确认其对所有当前维护的 FreeBSD 版本可用,意味着不需要保留回退到效率较低方式的代码。

  • 对 Mac OS X Hotspot Serviceability Agent 调试设施的更新破坏了 BSD 实现。由于历史原因,这些实现共享相同的源文件和目录,尽管实现上略有不同。已经开始 工作arrow-up-right 将 OS X 代码移至独立实现,以便可以在 BSD 实现上进行开发而不互相干扰。

  • 重启了在 ports 系统中更改 OpenJDK 构建引导方式的工作。由于弃用未维护的 ports 打破了依赖前一个 OpenJDK 版本构建当前版本的假设,这项工作再次显得重要。新的引导机制必须在现有 ports 过期前到位。

  • 本季度初我失去了 Aarch64 测试系统的访问权限,因此无法如期在该架构上进行测试。目前情况已解决,我正在设置新系统以进行构建和测试。

赞助方:FreeBSD 基金会

将 OpenJDK 21 设为默认 JAVA_VERSION

链接:

问题 272855arrow-up-right URL: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=272855arrow-up-right

工作进度跟踪表arrow-up-right URL: https://docs.google.com/spreadsheets/d/17hmRQ0ShY4SHHVEkQBVxqK2G88fPZLriTzO26zXdjC4/edit?usp=sharingarrow-up-right

联系人:Ronald Klop [[email protected]envelope]

FreeBSD ports 中的默认 JAVA_VERSION 仍然是 OpenJDK 8。现在是时候升级到更现代的版本,如 OpenJDK 21。需要测试并修复所有使用 Java 构建或运行的 ports,或者在 port 中将 JAVA_VERSION 固定为最新支持版本。

该工作正在通过 PR 272855 和 Google Sheet 跟踪。已经修复了超过一半在测试运行中失败的 ports。

有 Java 和 ports 系统经验的人可以参与帮助。我认为在 2026 年 2 月让 ports 适配 JAVA_VERSION=21 是合理的。

计划:

  • 检查最后 12 个 ports,创建 PR 或提交

  • 提交因维护者反馈超时的 PR

  • 请求再一次 exp-run

  • 完成后,提升 JAVA_VERSION

FreeBSD 上的 KDE

链接:

KDE/FreeBSD 项目arrow-up-right URL: https://freebsd.kde.org/arrow-up-right

FreeBSD — KDE 社区 Wikiarrow-up-right URL: https://community.kde.org/FreeBSDarrow-up-right

联系人:FreeBSD 上的 KDE 邮件列表 [[email protected]envelope]

FreeBSD 上的 KDE 项目为 ports 树打包 CMake、Qt 以及来自 KDE 社区的软件。软件包括完整桌面环境 KDE Plasma(适用于 X11 和 Wayland)以及数百个可在任何 FreeBSD 机器上使用的应用程序。KDE 团队envelope 隶属于 desktop@envelope,构建软件栈,使 FreeBSD 成为美观且可作为日常图形桌面工作站使用的平台。

基础设施

CMake 更新至 3.31.10。Ninja 更新至 1.13.2。

Qt6、PyQt6 和 PySide6 更新至 6.10.1。

Qt5 更新至 5.15.18 KDE 补丁集。Qt5 的上游标准支持已正式结束。这可能是 FreeBSD 上 Qt5 的最后一次更新。

KDE 栈

KDE Frameworks、Plasma 和 Gear 发布非常规律。KDE 团队envelope 在上游发布后不久即可落地更新。

  • KDE Frameworks ports 更新至 6.21.0。

  • KDE Plasma 桌面更新至 6.5.4。

  • KDE Gear 更新至 25.12.0。

随着 KDE Gear 25.12.0,最后两个应用程序最终迁移至 Qt6,KDE 栈已不再依赖 Qt5 包。精简了 Port x11/kdearrow-up-right,不再为 Qt5 和 GTK2 应用安装 Plasma 6 集成插件。如果需要,仍可通过 port x11/plasma6-plasmaarrow-up-right 安装。

改进了对 Plasma/Wayland 的支持,可作为日常驱动替代 Plasma/X11 使用。

相关 Port

KDE 团队envelope 维护近 730 个 port,并根据需要进行更新。根据 portscoutarrow-up-right,仅有 1% 的 port 已过时。

KDE 团队感谢 Gleb PopovenvelopeJason E. HaleenvelopeLoïc BartolettienvelopeMax Brazhnikovenvelope 的持续更新工作。KDE 团队感谢 Harley(IRC 上的 SponiX)提供的构建机器。

使用 Bazel 构建 MongoDB 8.0

链接:

MongoDB 8.0 portarrow-up-right URL: https://www.freshports.org/databases/mongodb80/arrow-up-right

Bazel 8 PRarrow-up-right URL: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=287546arrow-up-right

联系人:Ronald Klop [[email protected]envelope]

MongoDB 是生产级的 NoSQL 数据库。多年来,我们的 ports 提供着社区版的 MongoDB。MongoDB 被 ports 中的多个 WiFi 控制器软件使用,如 Unifi 和 Omada。在 MongoDB 8.0.13 中,构建系统从 SCons 改为 Bazel。

我们在 Bugzilla 中有 Bazel 版本 8(PR 287546)。使用该版本开始构建 MongoDB 8.0,但构建很快就出现错误。

由于 MongoDB 8.0 port 的安全问题,将 port 升级到最新版本变得非常重要。

我正在寻找具有 Bazel 构建经验的人帮助。

  • 联系我。

  • 使用 Bazel 8 设置构建环境。

  • 编译并修复。

  • 提交以便合并!

OpenVox(Puppet)

链接:

Vox Pupuliarrow-up-right URL: https://voxpupuli.org/arrow-up-right

OpenVox GitHub 组织arrow-up-right URL: https://github.com/OpenVoxProject/arrow-up-right

Vox Pupuli GitHub 组织arrow-up-right URL: https://github.com/voxpupuli/arrow-up-right

联系人:Puppet 团队 [[email protected]envelope]

OpenVox(Puppet)是一款自由软件配置管理工具,由信任源(OpenVox Server)组成,描述机器的预期配置的领域特定语言,以及每个节点上的代理(OpenVox Agent),确保实际配置符合预期。可选数据库(OpenVoxDB)可用于报告和描述高级模式,其中一台机器的配置依赖于另一台机器的配置。

今年在 Puppet 领域发生了诸多变化。Perforce 宣布其对开源贡献的重大变更arrow-up-right 后,终止了 Puppet 开源版本(OSS Puppet),建议用户切换到 Puppet Enterprise(长期存在的闭源版本)或 Puppet Core(新的闭源版本,封闭开发,仅在签署最终用户许可协议(EULA)后可访问arrow-up-right)。Vox Pupuli 社区尝试与 Perforce 协商,但未成功。因此,Vox Pupuli 接管了 Apache-2.0 授权的 Puppet 代码的维护,继续更新、提供包,而不再依赖 Perforce。由于“Puppet”名称属于 Perforce,该项目重命名为“OpenVox”,避免用户将旧不再维护的开源 Puppet 与 OpenVoxProject 维护的新版本混淆。

为配合这些变化,FreeBSD ports 添加了多个 port:

它们是旧 port 的直接替代:虽然软件包名为“openvox”,服务名称暂时保持不变。要切换,只需安装它们,并在 pkg 提示移除旧软件包并安装新软件包时选择 Yes。无需其他操作:之前使用 Puppet 的模块应继续在 OpenVox 上工作。

今年 Puppet 7 到达了生命周期终点,从 FreeBSD ports 中删除了对应的 port。Puppet 7 是最后一个能在 C 版本与 Ruby 版本 facter 之间选择的版本,因此也删除了 C 版本 port (sysutils/facterarrow-up-right)。由于 Puppet 8 的旧 port 不再更新,将很快被弃用,亦遵从同样的命运。

最后更新于