FreeBSD 2025 年第三季度状态报告

这是 2025 年第三份状态报告,共 36 项条目。

一如既往,由于部分重要报告送达延迟,报告的发布速度较缓。对此我们深表歉意,但大多数成员都是志愿者,我们都尽力而为。

所幸志愿者的人数似乎有增加的趋势:在上季度,我注意到许多新社区成员对参与 FreeBSD 项目表现出浓厚兴趣。这无疑将提升整个开发工作的效率,如制作状态报告。

许多新加入的成员都会带着这样的问题来找我们:“我该如何开始?”这里不是回答这个问题的地方,但实际上已经有一份指南专门为此编写。你可以在这里找到它。此外,时刻记住:将 FreeBSD 作为主力系统使用,用 FreeBSD 来运行 Web 服务,在虚拟机上安装部署,在参与 FreeBSD 开发时鼎力相助!!如果你发现了 bug,也不要忘记报告

祝阅读愉快!

Lorenzo Salvadore

代表状态团队敬上

FreeBSD 团队报告

来自各官方及半官方团队的条目,常见管理页面

FreeBSD 核心小组

联系方式:FreeBSD 核心小组 [email protected]

FreeBSD 核心小组是 FreeBSD 的管理机构。

已办事项

核心小组完成了以下事项:

  • EuroBSDCon 核心会议

    • dch、glebius、hrs、rene 参加了会议。

    • dch 发表了题为“Core Team: Personal Perspective(核心小组:个人视角)”的演讲。

  • 从 FreeBSD 网站移除 X/Twitter 链接

    • 核心小组收到询问,是否可以从项目网站移除 X/Twitter 的链接。

    • 由于这些账号未被使用,核心小组认为移除是可行的。

    • FreeBSD 仍需控制这些账号,以防被他人滥用。

    • 如果 FreeBSD 项目和基金会中有人能够良好管理这些社交账号,可以重新添加链接。

  • 基金会提议的隐私友好型网站分析

    • 一个想法是比较 freebsd.org 与 freebsdfoundation.org 的流量情况。

    • 核心小组与文档工程团队合作并已部署。

  • 核心小组与 FreeBSD 基金会正在合作发布 2025 年社区调查结果。

正在进行的工作

核心小组目前正在处理以下事项:

  • 核心小组正在创建一个工作组,以重组文档工程团队(doceng)。

  • 提交者指导方针/规则

    • 由开发者的咨询提出。

    • 核心小组发现已有部分文档,但应向文档工程团队、portmgr 和 srcmgr 征求更多意见。

  • 核心小组选举与任期变更

    • 根据社区反馈,优选方式是分阶段的核心任期。

    • 一个想法是每年评估核心小组的一半,而不是每两年可能会轮换整个核心小组,以免正在进行的工作和经验丢失。

    • 一些开发者对此有强烈意见(例如每年轮换三分之一核心成员,而不是每两年轮换全部核心成员),并希望参与讨论。

    • 为此需要修改章程,标准要求较高。

    • 社区中有人建议仅修改章程,因为核心小组在法律上不代表任何人,这真的是好主意吗?

    • 此议题在 2025 年 BSDCan 开发者峰会的核心会议上讨论过。

    • 核心小组正持续努力,以建立核心小组的阶段任期。

  • FreeBSD 项目连续性

  • 由开发者的咨询提出。

  • 需要(更新的)文档说明如何重建关键系统,以确保 FreeBSD 项目的业务连续性。覆盖三个方面:

    • 项目自身的业务连续性(关键人员或基础设施丢失)

    • FreeBSD 终端用户的复制方案

    • 发布工程的工作流程,以及各团队受影响情况

  • 目前过多知识依赖口传记忆,需要收集、整理并记录。

  • 主权技术基金工作的一个成果是发布文档已经撰写(在文档库的 releng 文章旁),但某些边缘情况仍缺失。

  • 提交者 GECOS 字段与化名

    • 有开发者提出是否可以使用化名作为提交者名称的问题。

    • 更高的关注点在于如何处理版权问题。

    • 核心小组认为使用化名并不被支持,因为会增加文书工作难度和集群访问的恢复难度,同时建议强调使用真实姓名的好处。

    • 化名可能带来的另一个问题是身份共享,例如供应商提交权限情况下,谁将成为发言人?

  • AI 政策

    • 核心小组正在起草关于使用 AI 和大型语言模型(LLM)的政策。

    • 此过程中还计划咨询其他团体,例如基金会法律顾问,以及 Linux 和其他开源社区中从事相关工作的人员。

    • 开发者和外部贡献者对版权、代码来源保障、最佳实践和“常识”存在多种问题,并讨论了 AI(辅助)工具可以做什么与不可以做什么。

    • BSDCan 和 EuroBSDCon 后有许多后续讨论,核心小组正在组织并总结这些讨论。

FreeBSD 基金会

链接:

FreeBSD 基金会 URL: https://freebsdfoundation.org/

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

捐赠 URL: https://freebsdfoundation.org/donate/

基金会合作计划 URL: https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/

FreeBSD Journal URL: https://freebsdfoundation.org/journal/

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

联系方式:Deb Goodkin [email protected]

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

改进操作系统

本季度,FreeBSD 基金会赞助了 451 个 src 提交、71 个 ports 提交和 25 个 doc 提交。

以下报告条目描述了大部分提交的开发工作:

其他亮点包括:

  • 改进了虚拟内存可扩展性,使多个进程可并行加载共享库。

  • 提高了 UFS 在超大文件系统(超过 20 亿个 inode)上的可靠性。

  • 支持超过 4 TB 内存的系统,包括针对 57 位地址空间(LA57)架构重新设计的内核虚拟地址(KVA)布局。

  • fork(2) 的 Kqueue 继承。

  • 新增保护机制 (noshutdown),防止意外系统关机。

  • 文件系统重命名操作更简化、更可靠。

  • 修复了低内存条件下 amd64 pmap 内核 panic。

  • 修复了 timeout(1) 中的多种竞态条件。

  • 新增 EXTERROR(9) 接口,标准化外部应用报告详细错误信息的方式。

基金会还持续支持着两个重大项目:笔记本支持与可用性项目(与 Quantum Leap Research 合作)以及由 Sovereign Tech Agency 委托的基础设施现代化项目。有关这两个项目的背景,请参阅 2025 第一季度状态报告

在基金会管理下,FreeBSD 连续第 21 年参与了 谷歌编程之夏 (GSoC) 项目。所有 12 个项目均已成功完成。

其中四位谷歌编程之夏参与者贡献了报告条目:

宣传工作

2025 年第三季度的宣传工作包括在开源活动中代表 FreeBSD、制作更多技术教程,以及为即将于 2025 年 11 月举行的 FreeBSD 供应商峰会做准备。以下是基金会在 2025 年第三季度为 FreeBSD 宣传所采取的一些举措:

改进持续集成与工作流

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

法律/FreeBSD 知识产权

基金会持有 FreeBSD 商标,并负责保护这些商标。同时为核心小组提供法律支持,以调查相关问题。

更多关于基金会如何支持 FreeBSD 及提供帮助的信息,请访问 https://freebsdfoundation.org

FreeBSD 发布工程团队

链接:

FreeBSD 15.0-RELEASE 时间表 URL: https://www.freebsd.org/releases/15.0R/schedule/

FreeBSD 发布 URL: https://download.freebsd.org/releases/ISO-IMAGES/

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

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

FreeBSD 发布工程团队负责制定并发布官方项目版本的发布时间表,宣布代码冻结,并维护相应分支等工作。

团队管理了 15.0-RELEASE 周期的前半段,目标是 12 月发布官方 RELEASE 版本及公告。值得注意的是,这期间涉及大量与 pkgbase 相关的工作。

发布工程团队继续为 mainstable/14stable/13 分支提供每周开发快照构建。

Ports

链接:

关于 FreeBSD Ports URL: https://www.FreeBSD.org/ports/

贡献 Ports URL: https://docs.freebsd.org/en/articles/contributing/#ports-contributing

Ports 管理团队 URL: https://www.freebsd.org/portmgr/

Ports 压缩包 URL: http://ftp.freebsd.org/pub/FreeBSD/ports/ports/

联系方式:Tobias C. Berner [email protected]

联系方式:FreeBSD Ports 管理团队 [email protected]

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

上季度,我们欢迎 Älven (alven@) 和 Tiago Gashiba (tiga@) 成为新的 ports 提交者,并告别了六位提交者。同时,在成功完成潜水者计划后,Dan Langille (dvl@) 晋升为正式 portmgr 成员。

根据索引,目前 Ports 中共有 37,163 个 ports(上季度为 36,605)。当前大约有 3,428 个(上季度为 3,330)开放 ports PR,其中 821 个尚未分配。上季度,main 分支由 156 位(上季度 157 位)提交者完成 8,738 个(上季度 10,924)提交;2025Q3 分支由 61 位(上季度 56 位)提交者完成了 898 次(上季度 770)提交。

主分支最活跃的提交者为:

在过去三个月中,Ports 发生了大量变化,主要软件升级包括:

  • pkg 2.3.1

  • 新增 USES: zig

  • Lazarus 默认版本切换至 4.2(非开发版,非 aarch64)

  • Perl 默认版本切换至 5.42

  • Chromium 140.0.7339.207

  • 新增 Electron 37 和 38

  • Firefox 143.0.3

  • Firefox-esr 140.3.1

  • KDE Applications 25.08.1

  • KDE Frameworks 6.18.0

  • KDE Plasma 6.4.5

  • Ruby 3.4.6

  • Rust 1.89.0

  • SDL 3.2.22

在上季度,pkgmgr@ 进行了 12 次实验性构建,来测试源代码更改和各类 ports 升级。

项目

覆盖多个类别的项目,从内核与用户空间到 Ports 或第三方项目。

Framework 笔记本支持

链接:

FreeBSD Wiki 上的 Framework Laptop 页面 URL: https://wiki.freebsd.org/Laptops/Framework_Laptop/

在 Framework 系统上安装和使用 FreeBSD 的指南 URL: https://github.com/FrameworkComputer/freebsd-on-framework

跟踪工单:Framework Laptop 功能支持、Bug 和改进 URL: https://bugs.freebsd.org/262152

联系方式:

Daniel Schaefer [email protected]

許立文 [email protected]

ShengYi Hong [email protected]

Framework Computer Inc. 在多个方面大力支持 FreeBSD 项目,包括向基金会提供工程样品用于测试和兼容性工作。

基金会继续改进着整体笔记本支持,Framework 笔记本是笔记本支持与可用性项目目标平台之一。

2025 年二、三季度,在 Framework 台北办公室举办了两次黑客马拉松,以测试新发布和开发中的产品上的 FreeBSD。

  • 4 月:继续测试 Framework Laptop 12 和 Framework Desktop 对开发中的 15.0 支持,包括以太网支持、串行控制台访问等。

  • 9 月:测试 Framework Laptop 16 AMD Ryzen AI 300 系列,包括 NVIDIA 图形模块。ShengYi 修复了对该款的声音支持

Daniel 已在 FreeBSD 上修复了 fwupd (#9220, #9221, #9223) 并恢复了 FreeBSD CI。这些工作已包含在 fwupd 2.0.16 发布中。

赞助情况:

  • 許立文和 ShengYi 的工作由 FreeBSD 基金会赞助

  • Daniel 的工作由 Framework Computer Inc. 赞助,含硬件和场地支持

基础设施现代化

联系方式:

Ed Maste [email protected]

Alice Sowerby [email protected]

该项目启动于 2024 年第三季度,由德国主权技术基金委托,预算为 745,000 美元,预计期限至 2025 年底。主要目标是改进基本系统、Ports 和软件包的安全工具,更新项目基础设施以加快开发速度,增强构建安全性,并让新开发者更容易上手。

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

第三季度动态

五个工作包均在进行中,预计在 2025 年 12 月底完成,届时项目将结束。

工作包 A:偿还技术债务

截至 2025 年 9 月,该工作包已完成。该项目与 FreeBSD 项目源代码管理团队的建立同步进行,团队创建并嵌入了新的流程,使 Bug 管理更容易、更可持续。委托的 Bug 积压仪表板仍可使用,有助于更清晰地理解积压情况。

8 月,在 Open Source Summit Europe 举办了专题讨论,将该工作向更广泛的观众分享。基金会两名项目人员(Alice Sowerby 和 Moin Rahman)参与了讨论,与两位来自 Bitergia 的代表共同介绍了 GrimoireLab 的实现。(FreeBSD 项目源代码管理团队成员未能参加。)

基金会将持续与源代码管理团队定期沟通,至少直到 2025 年底,以确保理解 FreeBSD 的长期价值。

该工作范围与 srcmgr@ 共同制定。具体工作项如下:

工作包 B:零信任构建(Zero Trust Builds)

该工作包旨在改进工具和流程,以支持 FreeBSD 的零信任构建。通过扩展现有组件,使 FreeBSD 项目能够在不需要任何特殊权限的情况下构建发布产物(如软件包集、ISO 镜像等)。

详细范围由 FreeBSD 核心小组、srcmgr@、secteam@ 共同制定。工作项如下:

  • 必须完成

    • 所有源码发布构建案例/产物无需 root 权限(已完成)

    • 源码产物可重复构建(正在进行)

    • make worldrelease.sh 进行规范化和文档撰写(审查中)

  • 应该完成

    • 去除编排工具的特权(未开始)

    • 将构建脚本迁入公共仓库(正在进行)

    • 处理依赖关系(正在进行)

  • 可选完成

    • 环境标准化(正在进行)

    • Ports 可重复构建(正在进行)

    • CI 验证可重复性(正在进行)

    • 撰写文档以便第三方确认可重复性(未开始)

工作包 C:CI/CD 自动化

该工作包旨在改进 CI/CD 自动化,通过现代化和安全化现有 CI/CD 系统,并扩展到 FreeBSD Ports 的第三方软件包,从而简化新旧软件的交付和运维。

详细范围由核心小组、srcmgr@、portmgr@、文档工程团队共同制定。

  • 必须完成

    • 提高提交质量(已完成)

    • 预合并 CI(已完成)

    • 环境元数据(正在进行)

    • 将 CI 扩展到 Ports 树(正在进行)

    • CI 威胁模型(正在进行)

    • CI 管理流程(正在进行)

    • 撰写文档(未开始)

  • 应该完成

    • 第三方互操作性(正在进行)

    • 测试中自动化分析(正在进行)

    • 测试用例管理(正在进行)

  • 可选完成

    • 精细化调试(正在进行)

工作包 D:Ports 与软件包安全改进

该工作包旨在现代化和扩展 FreeBSD Ports 与软件包的安全控制,包括:从 VuXML 漏洞数据库迁移到 OSV 或类似现代格式;开发软件包审计后台和服务器,以可靠地从全球机构数据库获取漏洞数据(任何格式,如 JSON - NIST)并生成分析;改进 FreeBSD Ports 的 CI 工具。

详细范围由 FreeBSD 核心小组、portmgr@、pkgmgr@、secteam@ 共同制定。

  • 必须完成

    • 新数据库格式(正在进行)

    • 设置 2 个以上数据库实例(未开始)

    • 从旧数据库迁移数据到新数据库(正在进行)

    • 在 pkg(8) 中支持新格式(正在进行)

    • 上游参与(正在进行)

    • 按需生成 SBOM(未开始)

    • 文档化构建和测试目标的设置方法(未开始)

    • 集成第三方测试目标(未开始)

    • 持续测试(未开始)

  • 可选完成

    • 提供 CI 产物(未开始)

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

该工作包旨在改进现有工具并实现新的 FreeBSD 软件物料清单(SBOM)相关工具和流程,包括:

  • 开发工具,将树中各个源码的来源数据/标记汇总为更高层级视图;

  • 开发工具以解析/审查/检查 FreeBSD 源码树,生成完整、整体的报告,作为整个软件栈的 SBOM;

  • 扩展 pkg,使其能够对通过 ports/软件包安装的软件实现上述功能。

详细范围由 FreeBSD 核心小组、portmgr@、pkgmgr@、secteam@、releng@ 共同制定。

  • 必须完成

    • 评估更广泛生态系统中可用的项目/解决方案(正在进行)

    • 提出 SBOM 目标解决方案(正在进行)

    • 在 CI 中生成 SBOM(例如每周构建)(正在进行)

    • 在发布流程中生成 SBOM 作为产物(正在进行)

    • 按需生成 SBOM 产物(正在进行)

    • 汇总现有数据(正在进行)

    • 记录并说明所作决策(正在进行)

  • 可选完成

    • 与其他类似项目进行合作(正在进行)

委托单位:主权技术基金

Alpha-Omega 海滩清理项目

链接:

Alpha-Omega — Linux 基金会项目 URL: https://alpha-omega.dev

在 GitHub 的 Alpha-Omega URL: https://github.com/ossf/alpha-omega

FreeBSD 基金会 URL: https://freebsdfoundation.org

FreeBSD 基金会项目仓库 URL: https://github.com/FreeBSDFoundation/alpha-omega-beach-cleaning

联系人:Pierre Pronchery [email protected]

Alpha-Omega 的使命是推动关键开源项目和生态系统的可持续安全改进。在 2024 年与 FreeBSD 基金会成功合作——审计 bhyve 虚拟机管理程序和 Capsicum 沙箱框架之后——Alpha-Omega 再次选择了 FreeBSD,启动本次 Alpha-Omega 海滩清理项目。该新资助旨在普遍改善 FreeBSD 基本系统中第三方软件的安全性和维护性。FreeBSD 基金会收到资助后负责管理和执行该项目。

任务清单如下:

  • 依赖关系清单

  • 安全风险评估

  • 提出优先级列表

  • 制定相应行动计划

  • 正式化代码所有者

  • 集成审核方法

  • 执行与协调计划

  • 最终报告

首批交付成果已发布在专用 GitHub 仓库:

欢迎帮助完善已收集的信息,或改进 FreeBSD 的其他方面!

最终,每月报告会提交并公开在 GitHub 上。

赞助:Alpha-Omega,FreeBSD 基金会

STA 工作包 C:CI/CD 自动化

联系人:Siva Mahadevan [email protected]

在本季度,作为主权技术基金(STA)委托的基础设施现代化工作的一部分,我一直在处理 in-tree CI Makefile 目标。我还致力于在我们的一级架构(amd64 和 aarch64)上使 CI 测试报告保持干净状态。本报告是对总体主权技术基金状态报告的补充,将更详细地描述已完成的工作。

改进 tests/ci

src 树中的 tests/ci 子目录由 Moin Rahmancommit: Add preliminary in-tree CI infrastructure for developers 中引入,旨在为开发者提供一种简便方式来复现 我们的 Jenkins 集群 执行的 CI 测试。在本季度,团队完成了以下改进:

新功能:

Bug 修复:

通过这些改进,开发者可以以 root 身份运行 CI,例如:

# 完全并行的 CI:
make ci

# 单线程 CI
make PARALLEL_JOBS=1 ci

# 单线程 CI,运行 kyua-test(1) 所述的部分测试
make PARALLEL_JOBS=1 KYUA_TEST_FILTERS='/path/to/testcase /path/to/another:testname1' ci

# 运行冒烟(启动)测试
make CITYPE=smoke ci

测试用例管理

Tinderbox 报告自上季度的一次 运行 起,我们支持的平台在 CI 中出现失败。随着未解决问题积压越来越多,用户和开发者就更难注意到新的失败,并将其定位到具体的提交。

为了配合 tests/ci 的 CI/CD 自动化改进,同时借助 Bricoler 进行更细粒度的调查,我着手清理一级架构上的失败测试积压。以下补丁和 Bug 报告是这一(仍在进行中的)工作的成果:

提交的新 Bug 报告,用于跟踪失败或不稳定的测试:

取消 CI 中被错误跳过的测试:

测试用例元数据修复:

将测试标记为“预期失败”(xfail),当前仍在进行中:

工具支持(正在进行)

为了更快地捕捉错误,我没有完全依赖 Jenkins 更新测试报告,而是每天多次运行本地 CI。为此,我开发了一些工具以加快测试和调试周期。目前我维护的(尚未提交)工具包括:

赞助:FreeBSD 基金会

安装 pkgbase 系统支持

联系人:Isaac Freund [email protected]

FreeBSD 15.0 快照安装镜像(disc1.iso、dvd1.iso)现在内置了离线的 pkgbase 包,而非传统的发行版 tar 压缩包。这使得在无网络环境下也能安装 pkgbase 系统成为可能。

用于构建 FreeBSD 15.0 虚拟机和云镜像的 pkgbase 系统补丁正在审核中,很快将会合并。将虚拟机和云镜像切换为 pkgbase 是使 pkgbase 成为 FreeBSD 15.0 默认安装路径的最后一个重要步骤。

赞助:FreeBSD 基金会

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

链接:

GitHub URL: https://github.com/AlchemillaHQ/Sylve

CI URL: https://sylve-ci.alchemilla.io

Discord URL: https://discord.gg/bJB826JvXK

联系人:Hayzam Sherif [email protected]

Sylve 是一个现代化、统一的 FreeBSD 系统管理平台,灵感来自 Proxmox。我们的目标是提供一个集成的 Web 界面,用于管理虚拟机(通过 Bhyve)、Jail、ZFS 存储、网络和防火墙。后端使用 Go 实现,前端采用 SvelteKit 搭配 Tailwind CSS 和 ShadCN UI 组件。

该项目强调系统占用最小化,目前仅需 sysutils/smartmontoolssysutils/tmuxlibvirtsamba419swtpm 作为运行时依赖。

第三季度进展亮点

集群管理

Sylve 现已支持简单集群,实现单界面管理(SPOG, Single-Pane-of-Glass)体验。该多主设计基于 hashicorp/raft 和 SQLite,可让用户从单一界面管理多节点。

网络管理

  • 网络对象:子网、主机和 MAC 地址现在被视为一等对象。用户可以在虚拟机、Jails 和交换机间创建并复用它们。

  • 手动交换机:现可将现有 FreeBSD 桥接导入 Sylve,并作为交换机进行管理。

存储管理

  • 引入全新文件浏览器,用于管理每个节点的本地文件系统(复制、剪切、删除等)。

  • ZFS 池现支持全面的健康监控,包括特殊 vdev(缓存、日志等)的监控。

  • ZFS 数据集查看和编辑性能显著提升。

  • 可直接从 UI 将镜像写入 ZFS zvol。

  • Samba 集成:用户可创建 Samba 共享,并新增全面审计日志以追踪文件共享活动。

身份认证

  • 可直接在 UI 中创建和管理用户,包括 Samba 用户。

  • 用户组也可在 UI 中创建和管理。

虚拟机

  • 支持完整的虚拟机编辑(存储、网络、PCI 设备等)。

  • 提供 TPM 支持(通过 swtpm),在 UI 和 API 中均可使用,该功能仍处于实验阶段。

  • 支持复用现有原始磁盘。

  • 增加虚拟机 Wake-on-LAN 功能。

Jail

  • 完整支持厚 Jail(创建、编辑、查看)。

  • 已实现 CPU 和 RAM 资源限制。

  • Jail 网络支持继承配置和基于交换机的(手动/标准)设置。

路线图更新

由于社区需求,第三季度的重点放在集群管理,而非防火墙和网络服务。以下功能已推迟至第四季度:

  • 防火墙规则配置

  • DHCP 支持

  • 集成 WireGuard VPN

当前路线图计划在返回网络服务之前,先完成集群功能并支持外部存储备份(例如 S3)。

欢迎贡献、测试和反馈。如果你有兴趣参与,可以考虑帮助:

  • UI 测试和可访问性反馈

  • 通过 GitHub 提交 Bug 报告和功能请求

赞助:FreeBSD 基金会与 Alchemilla(开发和基础设施支持)

FreeBSD 每周 Git

链接:

FreeBSD 每周 Git URL: https://freebsd-git-weekly.tarsnap.net/

联系人:Graham Percival [email protected]

FreeBSD 每周 Git 是针对 FreeBSD 源代码树 的每周提交列表,按“文档”、“硬件支持”、“测试”和“内核”等类别进行分类。

我们的目标是让开发者和用户更方便地跟踪对自己相关的 FreeBSD 变更,而无需订阅 dev-commits-src-main 邮件列表再查看每一条提交。

未来,这些报告可能会包含摘要或更多信息,但目前我们重点是确定哪种分类方式对 FreeBSD 社区最有用。

每周报告自 2025-09-01 起开始发布。

赞助:Tarsnap Backup Inc.

2025 年 7 月 德国柏林 FreeBSD 黑客松

链接:

活动页面 URL: https://wiki.freebsd.org/Hackathon/202507

日期:2025 年 7 月 12 日(周六)和 13 日(周日)

地点:Chaos Computer Club Berlin

我们受邀在柏林 Chaos Computer Club 的会场举办为期两天的黑客松。完整报告可见此处

大约 30 名参与者进行了以下项目的开发:

用户空间

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

ACPI Lua 绑定

链接:

GitHub URL: https://www.github.com/kpowkitty/freebsd-src

PR: libsa: 添加 isprint() URL: https://www.github.com/freebsd/freebsd-src/pull/1740

PR: loader: 移动 ACPI RSDP 检测 URL: https://www.github.com/freebsd/freebsd-src/pull/1843

PR: efi: 创建 libacpi URL: https://www.github.com/freebsd/freebsd-src/pull/1818

PR: liblua: ACPICA Lua 绑定 URL: https://www.github.com/freebsd/freebsd-src/pull/1819

联系人:Kayla Powell(又名 Kat)[email protected]

导师:Warner Losh [email protected]

项目简介

在 2025 年谷歌编程之夏中,我在 Warner Losh 的指导下进行了 ACPI Lua 绑定项目开发。ACPI(高级电源与配置接口)用于在操作系统层管理电源,而非仅在 BIOS 中。项目目标是在 amd64 平台的 bootloader 中将 ACPI 功能暴露给 Lua,并计划后续支持 arm64 平台。

成果

  • Lua 是一种更简单、高级的脚本语言,可加速开发。

  • 减少了 bootloader 中与 ACPI 相关的猜测工作。

  • 用户可在进入内核前查询和操作 ACPI 数据,从而在引导加载阶段即可控制配置。

备注

如果在 loader 中存在任何我提供的接口无法支持的 ACPI 专用用例,请联系我,我会尽力提供支持。目前,这是我计划在谷歌编程之夏中提交到源代码树的接口,因此任何额外的工作都需在之后进行,但我对此非常感兴趣(并建议大家进行增补)。

当前状态

  • 已完成:

    • 在 amd64 loader 中初始化 ACPICA

      • OsdMemory.c

      • osunixxf.c

      • AcpiInitializeSubsystem

      • AcpiInitializeTables

      • AcpiEnableSubsystem(在精简硬件模式下启用事件)

      • AcpiLoadTables

      • AcpiWalkNamespace

      • AcpiEvaluateObject

      • AcpiAttachData

      • AcpiGetData

      • AcpiDetachData

    • Lua 绑定

      • lacpi_walk.c

        • 用户可以遍历并读取命名空间节点

      • lacpi_object.c

        • 用户可以评估对象

      • lacpi_data.c

        • 用户可以附加、获取和分离节点数据

      • 手册页

  • 未来计划:

    • lacpi_walk.c (V2)

      • 命名空间打印格式

    • lacpi_walk.c (V3)

      • 遍历命名空间的策略

    • arm64 兼容

设计约束

loader 旨在保持轻量并为内核做准备。为此,其 ACPI 初始化功能被缩减了 130 个函数。这些函数被筛选为在上述接口中非必要或在 loader 中不可实现。包括:

  • AcpiInitializeObjects

  • AcpiInstallNotifyHandler

  • AcpiRemoveNotifyHandler

部分函数需要根据 loader 的受限库进行存根处理(尤其在 osunixxf.c 中)。部分函数需要处理物理地址而非虚拟内存映射(尤其在 OsdMemory.c 中)。

测试

  • 进行了确认测试,验证 ACPI 命名空间在 loader 中(C 与 Lua)及内核中(C)均能正确初始化,并通过对比结果确认。

  • 进行了回归测试,确保在所有架构上 FreeBSD 构建正常。

  • 对 Lua 绑定进行了单元测试,验证其功能正常。

赞助:2025 谷歌编程之夏

发布 Geomman

链接:

geomman GitLab 仓库 URL: https://gitlab.com/brauliorivas/geomman

geomman Port URL: https://www.freshports.org/sysutils/geomman

联系人:Braulio Rivas [email protected]

Geomman 是一款基于 sade(8) 的分区工具(TUI),提供了更多功能,例如复制、粘贴分区,创建 ext 文件系统,或使用 geli(8) 加密分区。

Geomman 对新手和经验丰富的用户都很有价值,因为它提供了完整统一的分区和磁盘管理。

自上次报告以来,Geomman 新增功能包括:

  • 扩展 UFS、NTFS、ext2、ext3 和 ext4 文件系统

  • 缩小 NTFS、ext2、ext3 和 ext4 文件系统

  • 新分区对话框:用户可以可视化选择空闲空间以粘贴或移动分区,该功能已添加到 bsddialog

  • 创建 exFAT、NTFS、ext2、ext3 和 ext4 文件系统

  • 检查上述所有文件系统

此外,还新增了两个 GEOM 相关功能:

  • 对新分区进行标签 glabel(8)

  • 对新分区进行加密 geli(8),支持可选“keyfile”和“passphrase”(或 passfile)

最后,在 Robert Clausecker 的帮助下,我们发布了 Port geomman ,让用户可以尝试使用。

后续工作包括:

  • 将 Geomman 原生集成到 FreeBSD(用户空间)

  • 添加 ZFS 管理功能

赞助:2025 谷歌编程之夏

改进 Sockstat UI

链接:

Sockstat UI Improvements wiki URL: https://wiki.freebsd.org/SummerOfCode2025Projects/SockstatUIImprovements

自动列宽调整 PR URL: https://github.com/freebsd/freebsd-src/pull/1720

重新引入 -w 选项 PR URL: https://github.com/freebsd/freebsd-src/pull/1746

cap-getnameinfo 微优化 PR URL: https://github.com/freebsd/freebsd-src/pull/1753

Libxo 支持 PR URL: https://github.com/freebsd/freebsd-src/pull/1770

撤销 SCTP 连接中 path-state 的错误使用 PR URL: https://github.com/freebsd/freebsd-src/pull/1799

完成 libxo 集成 PR URL: https://github.com/freebsd/freebsd-src/pull/1806

修复 libxo 集成后的端口解析问题 PR URL: https://github.com/freebsd/freebsd-src/pull/1807

联系人:Damin Rido [email protected]

Sockstat 是 FreeBSD 中的命令行工具,用于显示打开的网络套接字的详细信息。然而,其传统的固定宽度格式在处理长地址时不易阅读。本项目通过引入动态列宽和 libxo 的结构化输出支持,对 sockstat 进行了改进。通过这些增强功能,用户可以更轻松地在终端中阅读输出,或将数据导出为 JSON、XML 或 HTML 等格式,以便脚本处理和与外部工具集成。

sockstat 的改进分为两个阶段。第一阶段,将固定宽度布局替换为动态列宽,采用双遍算法确保对齐和可读性,包括处理长套接字地址的情况。重新定义了选项 -w,用于启用宽输出并自动调整列宽,同时保持与默认终端显示的兼容性。第二阶段,集成了 libxo 支持,通过将 printf() 调用替换为 xo_emit(),应用适当的字段标记,并使用 libxo 工具验证输出。手册页也更新以记录 libxo 集成。此改动在保留传统可读格式的同时,提供了机器可读的结构化输出。

在 sockstat 转换之后,发现 parse_ports 函数存在问题。由于其复杂性,为确保行为正确,对该函数添加了单元测试。问题通过修复函数并引入单元测试集得到解决。此外,代码库重构,将 sockstat.c 重命名为 main.c

本项目属于 2025 谷歌编程之夏的一部分,对 sockstat 进行了现代化改造,使其更易用,并更适合自动化工作流的集成。

赞助:2025 谷歌编程之夏

FreeBSD 15 中进程凭据的组相关变更

链接:

T2 2025 状态报告 URL: https://www.freebsd.org/status/report-2025-04-2025-06/#_ucred_group_changes_in_freebsd_15_0

initgroups(3):向后兼容实现及手册页更新 URL: https://cgit.freebsd.org/src/commit/?id=9dc1ac869196

修改 getgroups(2) 手册页的主要提交 URL: https://cgit.freebsd.org/src/commit/?id=4be38acc826f

修改 setgroups(2) 手册页的主要提交 URL: https://cgit.freebsd.org/src/commit/?id=6d22cd6b5f8b

联系人:Olivier Certner [email protected]

联系人:Kyle Evans [email protected]

从 FreeBSD 15 开始:

  1. setgroups(2)getgroups(2) 系统调用的行为略有变化。 出于谨慎考虑,即便几乎所有现有应用程序仍能正常运行,我们仍建议对您维护或使用的相关应用程序进行审核,如下所述。

  2. 登录时进程的组成员资格从密码和组数据库中获取的方式略有变化:登录用户的初始数值组 ID(来自密码数据库)现在会自动加入补充组,即使该用户在组数据库中并未被明确列为该组成员。

  3. 内核将有效组 ID 存储在 struct ucred 的新字段 cr_gid 中,而不是与补充组存储在同一数组 cr_ngroups[]

setgroups(2)getgroups(2) 系统调用将仅作用于调用进程的补充组,而不再将有效组 ID 作为数组参数的第一个元素。initgroups(3) 函数的实现保持不变,仍依赖 setgroups(2),因此 不再 设置进程的有效组 ID,而是将其 basegid 参数包含在补充组中。

这些变更的部分原因是使 FreeBSD 的行为与 GNU/Linux、NetBSD、OpenBSD 以及基于 illumos 的操作系统完全一致。因此,几乎所有可移植应用程序应该已经兼容 FreeBSD 的新行为,并能继续正常工作,甚至在此过程中得到修复(见上文链接的状态报告中的 OpenSSH 示例)。然而,建议移植者、系统管理员和用户对使用 setgroups(2)getgroups(2)initgroups(3) 的应用程序进行审核,注意以下要点:

  • 应用程序应在使用 setgroups(2)initgroups(3) 的同时使用 setgid(2)setegid(2) 来设置有效组 ID。 如果没有这样做,则必须添加这些调用,否则受影响的应用程序在 FreeBSD 15 及以后将无法设置有效组 ID。

  • 使用 getgroups(2) 的应用程序不应将返回数组的第一个元素视为特殊元素,而应像对待其他补充组一样处理。 如果仍然这样做,需要修改为通过 getegid(2) 获取有效组 ID,并将 getgroups(2) 返回的所有组仅作为补充组处理。

已在 stable/14stable/15 中更新所有更改函数的手册页,以说明和对比新旧行为,并新增了 SECURITY CONSIDERATIONS 节,说明变更原因及注意事项。

提供了向后兼容的实现,以便在 FreeBSD 14 或更早版本编译的应用程序仍能看到旧行为并正常工作。仅当内核使用 COMPAT_FREEBSD14 编译时可用,而默认的 GENERIC 内核即包含此选项。

我们已修复将有效组 ID 与补充组分开存储在内核中可能产生的所有不良影响,例如:

  • 某些安全策略或访问检查可能会忽略有效组 ID 或第一个补充组(数值最小的组 ID),从而影响基于组 ID 的进程可见性限制、can debugcan export KTLS keys 检查、mac_do(4)mac_bsdextended(4) 安全策略,以及部分硬件设施的访问控制(跟踪:hwt(4);性能监控:hwpmc(4))及 NFS 共享。

  • 进程凭据报告可能遗漏有效组 ID,影响所有 procstat -s 的变体(对运行中的进程、核心文件或系统核心转储)、ddb(4)

赞助:FreeBSD 基金会

控制台字体 Gallant 获得重大升级

链接:

Gallant 项目 URL: https://github.com/NanoBillion/gallant

联系人:Jens Schweikhardt [email protected]

vt(4) 控制台字体 “gallant” 在 -CURRENT 和 14-STABLE 中进行了扩展。Unicode 字形数量从 502 个增加到 4500 余个。老用户们熟知并喜爱这款字体,因为曾在 Sun SPARCstations 启动时使用过它。

主要新增内容:

  • 希腊字母

  • 西里尔字母

  • 国际音标扩展

  • 扩展拉丁字符

  • 什锦符号

  • 大量箭头

  • 大量数学符号

  • 类字母符号和封闭字母数字

  • 像素级完美框线绘制

  • 货币符号

  • 更多标点符号

  • 足够的片假名以显示 コンニチハ(你好)

  • Powerline 字形,位于私有使用区 U+e0a0

欢迎贡献更多语言支持。可以通过 Gallant 项目 参与贡献。

不仅如此!如果你不使用控制台字体,仅使用 X11,也能体验 Gallant 的魅力:通过新 Ports x11-fonts/gallant 并运行:

xterm -fa '' -fn '*-gallant-*'

查看 X11 下可用的字形,运行:

xfd -fn '*-gallant-*'

内核

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

改进音频栈

联系人:Christos Margiolis [email protected]

自 2024Q1 起,我一直在从事音频栈相关工作。以下是之前的状态报告:

2024Q1 2024Q2 2024Q3 2024Q4 2025Q1 2025Q2

上次报告以来的重要工作:

  • virtual_oss 审核为基本系统的 port:D52308D52365D52366D52426 等。

  • snd_hda(4) 声音重定向补丁 (D50070) 几近完成。

  • 更多 sound(4) 清理、修复与改进。

  • 增加了更多开箱即用的笔记本支持。

  • 为 FreeBSD 期刊撰写了 2025 BSDCan 旅行报告。

  • 正在撰写 FreeBSD 期刊音频专题文章。

你也可以关注 freebsd-multimedia@ 邮件列表,我会定期发布开发报告。

赞助:FreeBSD 基金会

DRM 驱动

链接:

更新到 Linux 6.10 DRM 驱动 URL: https://github.com/freebsd/drm-kmod/pull/371

联系人:Jean-Sébastien Pédron [email protected]

DRM 驱动是用于集成和独立显卡的内核驱动,它们在 Linux 内核中维护,我们将其移植到 FreeBSD。截至本报告,移植的仅有 AMD 和 Intel DRM 驱动(NVIDIA FreeBSD 驱动为专有,由 NVIDIA 提供)。

我们每次移植一个 Linux 版本,这样可以更频繁地发布更新,也方便移植和调试,因为相比跨越多个版本跳跃,版本差异更小。

本季度由于假期,工作进展较慢。Linux 6.10 的 DRM 驱动已完成移植。但仍存在一些需要处理的问题:

  • amdgpu 驱动与 vt(4) 的集成出现回归,加载驱动后控制台会变黑,但图形会话仍能正常工作。

  • linuxkpi 中对 radix-tree 的支持发生了重大变化,需要进一步测试。

  • 提交到 linuxkpisiphash 代码尚未可用。

GitHub 上的 PR 及相关 freebsd-src 分支可能尚未包含最新版本,直到编译和加载失败的问题解决为止。

这些更新目前针对 FreeBSD 16-CURRENT 开发分支,但 linuxkpi 的更改应回移植到 FreeBSD 15-STABLE。

以下 PR 目前尚未获得足够的评审和测试,因此仍在进行中:

这些功能显然是为了支持基于 wlroots 的 Wayland 合成器与 Vulkan API 的使用(参见 Bug 286311)。wlroots 也需要补丁,因为目前它仅在 Linux 上预期这些功能。

两个 PR 都依赖于 linuxkpi 的补丁,相关补丁已在 PR 中链接。

本工作由 FreeBSD 基金会赞助,作为笔记本和桌面项目的一部分。

赞助:FreeBSD 基金会

DRM 驱动的性能下降与卡顿修复

链接:

主要 PR URL: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=277476

drm-kmod GitHub issue URL: https://github.com/freebsd/drm-kmod/issues/302

联系人:Olivier Certner [email protected]

使用 Port drm-kmod 中 amdgpu DRM 驱动的 AMD GPU 用户,尤其是从 v5.15 (drm-515-kmod) 开始,自至少 2024 年 5 月以来,一直经历着缓慢的性能下降和系统卡顿。代码分析表明,近期基于 Intel 的 GPU(13 代及以上)可能也受到影响。我们很高兴地宣布,据我们所知,这些问题已经全部得到修复。

我们建议用户在 mainstable/15stable/14 分支上测试最新的 FreeBSD 代码。这些修复将包含在即将发布的 15.0 和 14.4 版本中。对于 14.3,可能会发布勘误通知和补丁,以便用户无需等待 14.4(预计将于明年 3 月发布)。额外的修复也将进入 drm-kmod Ports(见下文)。

调查显示,这些问题的核心在于对过于频繁、且通常并非真正必要的物理连续内存分配请求在快速路径中的不当处理。基本上,DRM 的 TTM 组件尝试分配尽可能物理连续的显存页池,以减少相应的 TLB 条目数量。它通过循环操作完成:首先尝试使用 __GFP_NORETRY 标志分配高阶页,如果失败,再逐步回退到最小页(见 ttm_pool_alloc())。

第一个问题是我们的 LinuxKPI 未处理 Linux 的标志 __GFP_NORETRY,会强行尝试满足首批请求(即高阶页请求),使用昂贵的机制获取或生成连续内存,如果没有现成的可用页。Mathieu(邮箱 [email protected])提出的第一次修复,移除了这一过程中对内存压缩的调用(即放弃调用 vm_page_reclaim_contig())。随后,该修复进一步完成,通过阻止 VM 系统尝试打破内存保留,这些保留是一个推测性机制的一部分,旨在自动触发大页(superpages)的使用。

另一个问题来自我们 LinuxKPI 的演进。为了更好地符合 Linux 的行为,kmalloc() 被修改为总是返回物理连续的内存。不幸的是,在我们的实现中依赖 kmalloc()kvzalloc()(从概念上来说是错误的,但最初在实践中无害)并未在此过程中切换为依赖 kvmalloc(),实际上将大块的零初始化页面分配变成了昂贵的物理连续分配。

使用 dtrace 对性能下降进行了初步分析。结果显示,失败分配操作的相当一部分执行时间花费在尝试在同一 NUMA 域内进行多次分配上。对 VM 域迭代器代码的分析揭示了多处缺陷,尤其是导致在常见的单域机器情况下多次(最多 4 次)重新检查同一域,而对于新尝试没有任何额外成功保障。在此过程中还修复了一些其他 VM 域问题,例如确保分配请求在任何情况下都优先选择不处于低内存状态的域。至于成功的分配,它们会触发无用的页面属性更改,从而导致昂贵的 TLB 清空操作。

最后,针对 amdgpu 驱动,且仅影响基于 Carrizo、Polaris 和 Vega M 的 AMD GPU,将一个不必要的物理连续临时分配替换为常规分配,使剩余的、相对短暂但明显的卡顿消失。与上述情况不同,此更改属于 Port drm-kmod 的代码,并已包含在 Ports 的最新版本更新中。请确认你的软件包版本——drm-510-kmoddrm-515-kmoddrm-61-kmoddrm-66-kmod——分别大于或等于 5.10.163.*_135.15.160.*_86.1.128.*_76.6.25.*_6,其中 * 表示构建系统上的 __FreeBSD_version 值。

此工作由 FreeBSD 基金会赞助,作为笔记本项目的一部分。

赞助:FreeBSD 基金会

LinuxKPI 802.11 与原生无线更新

联系人:Bjoern A. Zeeb [email protected]([email protected](mailto:[email protected]))

联系人:FreeBSD 无线邮件列表 [email protected]([email protected](mailto:[email protected]))

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

针对基于 Mediatek mt76 的 PCIe 网卡的支持工作仍在进行中。

LinuxKPI 802.11 (linuxkpi_wlan(4)) 更新已提交,用于改进扫描和信标处理,并提高稳定性。

LinuxKPI 更新还用于导入更新版本的 iwlwifi(4)rtw88(4)rtw89(4) 驱动。针对基于 LinuxKPI 的无线驱动的挂起与恢复功能已有可能的解决方案,但需要社区测试和反馈。此前两项更新因树外 drm LinuxKPI PCI 冲突而被阻塞,问题在 EuroBSDCon 2025 前刚刚解决,因此相关工作很可能会在 25Q4 初期出现。

我在 EuroBSDCon 2025 上就无线技术进行了演讲,并与来自 NetBSD 和 OpenBSD 的无线开发者进行了深入交流。

目前对 brcmfmac 支持的兴趣再次上升,同时对 ath11k 的请求也在增加。

赞助:FreeBSD 基金会

改进 mac_do(4) 与 mdo(1)

链接:

Wiki 页面 URL: https://wiki.freebsd.org/SummerOfCode2025Projects/MacDoAndMDoImprovements

提交至 mdo(1) 支持细粒度凭证切换请求 URL: https://cgit.freebsd.org/src/commit/?id=3ca1e69028ac

联系人:Kushagra Srivastava [email protected]

联系人:Olivier Certner [email protected]

mac_do(4)/mdo(1) 项目旨在允许受控的进程凭证切换,而无需使用 setuid 可执行文件,而是利用 FreeBSD 的 MAC 框架。更多信息请参阅相关手册页,以及 T3 2024T4 2024 的状态报告。

作为 2025 谷歌编程之夏的一部分,Kushagra 对 mac_do(4)(内核)和 mdo(1)(用户空间)进行了增补工作。

已改进的 [mac_do(4)] 功能

  • 每个 jail 配置授权可执行文件:管理员可为每个 jail 指定允许请求凭证切换的可执行文件列表,而不局限于硬编码的 /usr/bin/mdo

  • 支持传统的凭证修改系统调用:允许 mac_do(4) 评估对 setuid(2)setgid(2)setgroups(2) 及相关函数的调用,并将其视为完整的凭证切换。

已改进的新 [mdo(1)] 功能

  • 支持细粒度指定目标组(选项 -g-G-s):可继承当前凭证或密码和组数据库中某个用户的凭证,并可显式覆盖任何用户 ID、组 ID 及辅助组。

  • 提供选项 --print-rule:切换到显示规则目标部分示例的模式,以匹配所请求的凭证。

其中,mdo(1) 的新细粒度凭证切换请求功能已提交,并将在 15.0 和 14.4 中可用。其他功能最可能在 14.4 之前进入 stable/14,但由于需要更多审查和部分修改,可能无法出现在 15.0 中。

这些改进将使 mac_do(4)mdo(1) 更加灵活和实用,实现无需依赖 setuid 可执行文件的安全凭证切换,并实现与 jail 的强集成。

赞助:谷歌(2025 谷歌编程之夏)

赞助:FreeBSD 基金会

改进挂起/恢复

链接:

博客 URL: https://obiw.ac/s0ix/

BSDCan 关于 s2idle/S0ix 的演讲 URL: https://youtu.be/RCjPc4X2Edc

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

工作仓库 URL: https://github.com/obiwac/freebsd-s0ix/tree/everything

s2idle/S0ix + AMD SMU 堆栈最新提交 URL: https://reviews.freebsd.org/D48721

联系人:obiwac [email protected]

挂起到 idle 和 S0ix 睡眠支持正在被添加到 FreeBSD 中。

这将能让现代 Intel 和 AMD 笔记本(其中一些不支持 ACPI S3 睡眠)进入低功耗状态,从而延长电池寿命。

在 FreeBSD 15 上,Framework 13 AMD Ryzen 7040 系列笔记本的 S0i3 进入现在已经可靠可用。这需要对 LinuxKPI 的 DRM 进行修改,以判断系统是打算进入 S3 还是 S0ix:D51591

这些更改进一步需要创建通用的睡眠类型,独立于 ACPI。目前并非所有更改都已提交,但将创建新的 sysctl hw.power.*,用于选择各种睡眠状态切换请求的睡眠类型。

amdsmu 驱动程序、一些 ACPI 修改和修复,以及 amdgpio 中的 GPIO 中断处理已被提交。

现在提供了预构建的睡眠测试镜像,可方便地在机器上测试 S0i3 进入。详细说明可在网页上查看。

关于链接,博客文章条目仍然是过时的。

赞助:FreeBSD 基金会

改进 USB 内核调试

联系人:Tom Jones [email protected]

XHCI USB 控制器提供了一种模式,使其可用作系统调试接口。XHCI 调试使用一条特殊的 USB 3 数据线,其中 VBUS、D+ 和 D- 被断开。该功能可用于对 FreeBSD 内核进行实时调试,从而研究导致系统视频控制台锁定的问题,而无法使用其他替代方案(如串口控制台)时尤其有用。这种情况通常发生在调试图形驱动问题时。

Hiroki Sato 开发了对 XHCI 调试接口的支持,并以一些正在进行的 git 分支形式提供。这一实现使 FreeBSD 能够同时作为 Debug Host 和 Debug Target,从引导程序到内核均支持调试。

在本季度,XHCI 调试的 Debug Host 部分已提交到 FreeBSD main 并将在 FreeBSD 15 中可用。Debug Host 驱动使 FreeBSD 机器能够调试作为 Debug Target 的 Linux 和 Windows 系统。已从补丁系列中拆分出来 Debug Host 驱动,以便从 FreeBSD 15 调试 FreeBSD 16 及以后版本。

XHCI 调试的 Debug Target 部分在本季度也有进展,改进了引导程序与内核之间的接口,并解决了从 Target 发送数据时的锁定问题。Host 实现剩余的工作是使 XHCI 调试在启动早期作为控制台可用,并将部分方法转换为使用 bus space 分配。

在下个季度,我计划更新开发者手册中关于内核调试的章节。

赞助:FreeBSD 基金会

架构

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

FreeBSD 上香蕉派 R64 的驱动开发

链接:

Wiki URL: https://wiki.freebsd.org/arm/Bananapi

联系人:Martin Filla [email protected]

介绍

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

FreeBSD 的支持现状

  • 已实现部分:

    • UART 驱动

    • 时钟管理(clocks)

    • Pinctrl/GPIO 驱动 — GPIO 部分正在积极开发中

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

    • 以太网交换芯片 mt7531 驱动

    • 以太网 mt7622 驱动

其他关键组件—以太网、USB、SATA、WiFi 等尚未实现。

技术背景与重要性

FreeBSD 对香蕉派 R64 的支持仍处于早期阶段—UART 和时钟驱动已存在,但 PLL clock 驱动仍在开发中,GPIO 驱动也在开发中—而大多数关键子系统尚未实现。

开发路线图

  • 实现缺失的驱动程序

    • USB(XHCI/OTG)

    • SATA / AHCI

    • WiFi(可能为 MediaTek MT7615)

    • GPIO 子系统

结论

FreeBSD 对香蕉派 R64 的支持仍处于早期阶段——UART 和时钟驱动已存在,但 PLL clock(锁相环时钟)驱动仍在开发中,GPIO 驱动也在开发中——大多数关键子系统尚未实现。发布可用的代码和工件,并与 FreeBSD 社区积极合作,将是使该开发板在 FreeBSD 下达到可用状态的关键。

云平台

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

改进 nuageinit

联系人:Baptiste Daroussin [email protected]

联系人:Jesús Daniel Colmenares Oviedo [email protected]

cloud-init 启发,nuageinit 是纯 Lua 编写的脚本,用于为 FreeBSD 添加 cloud-init 兼容性。借助 rc(8) 框架的 firstboot 功能,它可以在系统启动早期运行,并且只运行一次。

近几个月已经进行了修复和改进:

  • 补充了已有参数的缺失文档。

  • 增加了更多测试用例。

  • 当未指定 match 规则时,设备配置 ID 可用作接口。

  • 实现了 network.ethernets.{id}.match.name 参数。

  • 实现了 network.ethernets.{id}.wakeonlan 参数。

  • 实现了 network.ethernets.{id}.set-name 参数。

  • 实现了 network.ethernets.{id}.match.driver 参数。

  • 实现了 network.ethernets.{id}.mtu 参数。

  • 实现了 nameservers 参数。

  • 支持 security/doas

  • 允许使用 network-config 文件中的网络参数。

这些改进已提交至分支:stable/14、stable/15 和 main。

如果计划使用 nuageinit,请注意每个镜像会定期生成并发布在以下站点:

提交记录:ba5df7a95b0be1a7f19969f3330fa5cc9b795230b29a829e8

文档

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

文档工程团队

链接:

FreeBSD 文档项目 URL: https://www.freebsd.org/docproj/

FreeBSD 文档项目新贡献者入门指南 URL: https://docs.freebsd.org/en/books/fdp-primer/

文档工程团队 URL: https://www.freebsd.org/administration/#t-doceng

联系人:FreeBSD 文档工程团队 [email protected]

文档工程团队团队负责处理与 FreeBSD 文档项目相关的一些元项目问题;更多信息请参阅 FreeBSD Doceng 团队章程

团队变动:

  • 文档工程团队欢迎 ziaee@ 作为新成员(lurker,潜水者)。

  • ebrandi@ 晋升为正式文档工程团队成员。

在上一季度:

  • vladlen@ 获得翻译提交权限,导师为 maxim@。

  • andy@ 的文档提交权限重新激活,导师为 carlavilla@ 和 maxim@。

文档变更

  • 手册

    • X11 章节已更新并重构

多个文档中进行了风格和内容修正。

  • 文档仓库:

    • 添加了 macOS 26.0 的手册页

    • 更新了 macOS 14.8 和 15.7 的手册页

    • 添加了 Debian 13.0.0 的手册页

在 Weblate 上的 FreeBSD 翻译

在 Weblate 上翻译 FreeBSD URL: https://wiki.freebsd.org/Doc/Translation/Weblate

FreeBSD Weblate 实例 URL: https://translate-dev.freebsd.org/

2025 年第三季度状态

语言

  • 简体中文 (zh_CN)(进度:7%)

  • 繁体中文 (zh_TW)(进度:3%)

  • 荷兰语 (nl_NL)(进度:1%)

  • 法语 (fr_FR)(进度:1%)

  • 德语 (de_DE)(进度:1%)

  • 希腊语(进度:1%)

  • 印度尼西亚语(进度:1%)

  • 意大利语 (it_IT)(进度:4%)

  • 韩语(进度:29%)

  • 书面挪威语(进度:1%)

  • 波斯语(进度:3%)

  • 波兰语(进度:1%)

  • 葡萄牙语(进度:0%)

  • 巴西葡萄牙语(进度:23%)

  • 俄语(完成:100%)

  • 西班牙语(进度:35%)

  • 土耳其语 (tr_TR)(进度:1%)

我们感谢所有参与翻译或审校文档的贡献者。

同时,请在本地用户组中推广这一工作,我们始终需要更多志愿者。

文档工程团队维护的 Port

在本季度,文档工程团队维护的 Port 完成了以下工作:

  • www/gohugo:更新至 0.151.0

未解决的问题

在 Bugzilla 中有 1 个分配给文档工程团队的开放 PR:

  • 267274 Please remove the zh-CN Handbook of the current FreeBSD website(请移除当前 FreeBSD 网站上的中文手册)

FreeBSD 俄语文档项目

链接:

FAQ URL: https://docs.freebsd.org/ru/books/faq/

网站 URL: https://www.freebsd.org/ru/

FreeBSD 俄语文档项目站点 URL: https://github.com/freebsd-doc-ru/freebsd-doc/discussions

联系人:Andrey Zakhvatov [email protected]

联系人:Vladlen Popolitov [email protected]

FreeBSD 俄语文档项目的当前目标是提供 FreeBSD 文档中最重要部分(FAQ、手册、网站内容)的最新俄语翻译。为讲俄语的用户提供高质量的官方技术资料,并提升操作系统在全球的使用率至关重要。我们希望此项目能获得俄语 FreeBSD 社区的支持,并推动翻译材料的增加。

在 2025 年 9 月,两名提交者获得提交了权限,可将俄语翻译文档写入 FreeBSD 文档树:

在上一季度:

  • Weblate 上的文本已完成 100% 翻译。

  • 47 个文档中已有 31 个更新到最新版本(来源:docs.FreeBSD.org/ru),其余文档正在审核中,等待提交。

本报告对在本季度对提交进行审核的同事表示感谢(通过 Phabricator 或邮件):

下季度计划:

  • 完成文档(书籍和文章)的审核和提交流程

  • 恢复 www.FreeBSD.org 上的俄语页面

  • 审核手册页翻译的可行性及操作机制

如果希望参与,请查阅 官方翻译指南

我们欢迎您协助翻译以下材料:

  • 网页内容

Ports

对 Ports 的变更,包括影响整个树的大范围更变更,或单个 Port 的变更。

用 Freepascal/Lazarus 编写的 bhyve 管理 GUI

链接:

Bhyvemgr URL: https://github.com/alonsobsd/bhyvemgr/

联系人:José Alonso Cárdenas Márquez [email protected]

Bhyvemgr 是一款用 Freepascal/Lazarus 在 FreeBSD 上编写的 bhyve 管理 GUI。它需要一些工具,大部分已安装在基本系统中,部分需从 Ports/Packages 安装。其主要目标是作为桌面应用,为桌面用户提供简单快速的方式,在 FreeBSD 主机上设置和运行虚拟机。

本季度,Bhyvemgr 进行了大量 Bug 修复和改进。

主要新增功能包括:

  • 为 FreeBSD >=1403000 添加 swtpm 支持。

  • 为 FreeBSD >=1500023 添加 x86.verbosemsr 设置。

  • 添加 IPv6 支持,利用 dns/dnsmasq 提供更完善的 IPv6 支持。当启用 Use_IPv6 时,会向 dnsmasq 添加 host-record。

  • 在 Bhyve Manager 设置中添加桥接 IPv6 计算器,用于计算应分配给桥接接口的 IPv6。详细信息请查看 README。

  • 添加从 Cloud 或 VM 镜像创建虚拟机的支持。当选择“Create a virtual disk from image”选项时,会显示新页面,包括镜像下载器(支持 img.xz、raw.xz、qcow2.xz、qcow2、img 和 raw 文件)。

  • 添加 Cloud init/Nuageinit 配置文件支持。

  • 添加 image 最小配置所用的 user-data、network-config 和 meta-data 模板。

  • 添加 user-data、network-config 和 meta-data 示例文件。

  • 当从“Create Virtual Machine/Image”表单选择文件配置时,支持定义静态 IPv4 地址。

  • 在“Settings”中添加选择镜像路径目录的新选项,用于存储解压后的镜像文件。默认目录为 ~/.bhyvemgr

  • 添加定义 qemu-img 路径文件的新选项。

  • 添加国际化支持,初始支持英语、简体中文(感谢 ykla)和西班牙语翻译。

  • 增强日志记录支持。

  • 增强剪贴板支持。

Bhyvemgr 支持 aarch64(从 15-PRERELEASE 到 16-CURRENT)和 amd64(从 FreeBSD 13.x 到 16-CURRENT)。此外,sysutils/bhyvemgr 可从 Ports 或 pkg 二进制安装,支持 gtk2、qt5 或 qt6 界面。

欢迎有兴趣参与或支持该项目的人士。

赞助:https://paypal.me/alonsocbsd

当前版本:1.12.0

容器编排:Overlord、Director、AppJail 及 cloud-init

链接:

AppJail on GitHub URL: https://github.com/DtxdF/AppJail

Director on GitHub URL: https://github.com/DtxdF/Director

Overlord on GitHub URL: https://github.com/DtxdF/Overlord

Makejails URL: https://github.com/AppJail-makejails

联系人:Jesús Daniel Colmenares Oviedo [email protected]

AppJail 是一款完全用 POSIX shell 和 C 编写的开源 BSD-3 许可框架,用于使用 FreeBSD jails 创建隔离、可移植且易于部署的环境,其行为类似于应用程序。

Director 是一款工具,用于在 AppJail 上运行多 jail 环境,通过简单的 YAML 规范进行配置。Director 文件用于定义组成应用程序的一个或多个 jail 的配置。一旦拥有 Director 文件,就可以通过单条命令 appjail-director up 创建并启动应用程序。

Overlord 是面向 GitOps 的快速分布式 FreeBSD jail 编排器。你可以定义一个文件,描述在集群上运行的服务,部署可在几秒至几分钟内完成。该编排工具使用 AppJailDirector,甚至可以创建使用 vm-bhyve 的虚拟机。其理念是“用代码部署”,一次创建文件,可多次部署。通过树状链式系统,Overlord 可在连接系统上无限共享资源部署 jail。更多使用 Overlord 的文章请参见 wiki

近期关于 Overlord 的文章

Makejails 是用于自动创建 jail 的简单文本文件,是 AppJail 的常用功能。目前已有许多 Makejails 创建并托管在 Centralized Repository,以下是近期创建的部分:

赞助:https://www.patreon.com/appjail

提升对 bhyve 虚拟机管理器的 libvirt 支持

链接:

CI for libvirt/bhyve on FreeBSD URL: https://empt1e.blogspot.com/2025/09/ci-for-libvirtbhyve-on-freebsd.html

联系人:Roman Bogorodskiy [email protected]

已完成工作

  • 已合并对基于 pf(4) 的 NAT 网络 的支持,自 libvirt 11.7.0 起可用。

  • 从 libvirt 11.7.0 起,域使用统计报告功能已可用。

  • TCP 控制台支持自 libvirt 11.6.0 起可用。

  • libvirt 测试项目 libvirt-tck 现在能够成功运行针对 bhyve 驱动的域、网络和存储测试。

下一季度计划

  • 使用 hooks 测试扩展 libvirt-tck 测试。

  • 添加对以下功能的支持:

    • 启动顺序配置

    • TPM 设备

    • 快照/恢复到 bhyve 驱动(目标功能,可能会延迟到下一季度)

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

赞助:FreeBSD 基金会

改善 FreeBSD 上的 OpenJDK 支持

链接:

Project description URL: https://freebsdfoundation.org/project/improving-openjdk-on-freebsd/

Project repository URL: https://github.com/freebsd/openjdk

联系人:

Harald Eilertsen [email protected]

FreeBSD Java 邮件列表 [email protected]

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

Java 是许多高性能、关键企业系统的重要运行时环境。确保基于 Java 的应用程序在 FreeBSD 上能够正确、高效运行,对于维持 FreeBSD 作为企业及各类组织可靠、具有吸引力的平台至关重要。

本季度实现的主要工作和里程碑:

  • OpenJDK 24 Port 已 更新至 OpenJDK 24.0.2,随后又 一次更新 ,包括服务能力代理(serviceability agent)的多项修复以及针对大规模 Elastic 和 OpenSearch 工作负载的性能改进。服务能力改进修复了在附加到其他 JVM 时的符号和线程查找问题,并修复了 FreeBSD 上 Java 调试器加载核心文件的问题。

  • OpenJDK 23 Port 已 更新,增加了 IPv6 双栈套接字支持(与 OpenJDK 24 类似),并提供 Elastic 和 OpenSearch 的性能改进。

  • OpenJDK 81721 已更新至上游最新版本,同时新增了 OpenJDK 21 JRE 单独安装 Port

  • 由 Ronald Klop 调试并修复了导致某些旧版本 Java 在特定 FreeBSD 版本的官方 pkg 构建失败的构建问题。

赞助:FreeBSD 基金会

FreeBSD 上的 KDE

链接:

KDE/FreeBSD 计划 URL: https://freebsd.kde.org/

FreeBSD — KDE 社区 Wiki URL: https://community.kde.org/FreeBSD

联系方式:FreeBSD 上的 KDE 邮件列表 [email protected]

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

我们错过了上一个季度的状态报告。本报告包含第二季度的所有变化。

基础设施

CMake 已更新至 3.31.9,为 3.x 系列的最新版本。Ninja 已更新至 1.13.1。

Qt6 已更新至 6.9.2。Qt6 工具包的两个 Python 绑定也已更新到最新版本:

  • PyQt6:更新至 6.9.1

  • PySide6:更新至 6.9.2

给 Port graphics/qt6-wayland 打了补丁,修复了 Plasma 在 Wayland 下右键点击桌面时的崩溃问题。

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

www/qt5-webengine Port 已更新至 5.15.19,包含 Chromium 135.0.7049.95 的安全补丁。然而,Qt5 WebEngine 组件始终基于 Chromium 87.0.4280.144,此版本已是 4 年多前。底层 Chromium 的安全更新已经停止,使用需自担风险。

KDE 软件栈

KDE Frameworks、Plasma 和 Gear 的发布非常规律。KDE 团队 会在上游发布后不久将这些更新移植到 FreeBSD。

  • KDE Frameworks 已更新至 6.18.0。

  • KDE Plasma 桌面已更新至 6.4.5。

  • KDE Gear 已更新至 25.08.1。

Plasma 6.5 Beta(6.4.90)已完成移植,但尚未提交到主 Ports 树。

带有 Linux NetworkManager 桩实现的 Port net-mgmt/kf6-networkmanager-qt 已添加,以便移植第三方软件。

相关 Ports

KDE 团队 维护了大量 Ports,并根据需要进行更新。根据 Portscout 的数据,过时的 Ports 不到 0.7%。

KDE 团队感谢 Dima PanovGleb PopovJason E. HaleKenneth RapleeLoïc BartolettiMax Brazhnikov 对保持 Ports 更新所做的贡献。同时,KDE 团队感谢 Harley(IRC 上的 SponiX)分享他的构建机器。

FreeBSD 上的 GCC

链接:

GCC 项目 URL: https://gcc.gnu.org/

GCC 13 发行系列 URL: https://gcc.gnu.org/gcc-13/

GCC 14 发行系列 URL: https://gcc.gnu.org/gcc-14/

GCC 15 发行系列 URL: https://gcc.gnu.org/gcc-15/

GCC 16 发行系列 URL: https://gcc.gnu.org/gcc-16/

联系方式:Lorenzo Salvadore [email protected]

在本报告撰写时,将 GCC 默认版本从 13 更新到 14 的 exp-run 已接近完成:只剩下最后一个 PR 未合并。希望在你阅读本文时,该更新已经完成。不过需要提醒的是,最新的 GCC 主版本是 GCC 15,因此我们仍然落后一个版本。当然,后续还会准备另一次 exp-run,将 GCC_DEFAULT 更新到 GCC 15,但不会立即执行。我会等待一段时间,以确保 GCC_DEFAULT=14 的更新确实如预期般生效,同时处理与 GCC Ports 相关的其他问题。

另一个重要变化涉及引导构建(bootstrapping)。GCC Ports 之前状态不一致:有些 Ports 需要选择 bootstrap 选项,而有些则不需要。现在所有 GCC Ports 都允许在不选择任何 bootstrap 选项的情况下构建,就像过去一样。

问题在于,使用 FreeBSD 默认编译器(clang)构建 GCC 并非完全受支持。由于我知道许多用户希望在不进行 bootstrap 的情况下构建 GCC,因此我没有像最初计划的那样强制要求,而是保留了该选项,但会从无 bootstrap 构建中移除所有无法成功构建的功能。用户需自行确保不需要与无 bootstrap 构建不兼容的功能。

目前,jit 是唯一被排除在无 bootstrap 构建之外的功能。默认 bootstrap 选项为 STANDARD_BOOTSTRAP,因此来自官方 FreeBSD 包仓库的用户将能够获得完整构建,所有受支持功能均可使用。

更多细节请参见提交 5ee63cc45413954077b2b0c0546b8342585b41ba62f186cdf6e9689f30e854a0e23482c552c851a2 以及 邮件

Valgrind:为 15.0-RELEASE 做准备

链接:

Valgrind 主页 URL: https://www.valgrind.org/

Valgrind 新闻 URL: https://www.valgrind.org/docs/manual/dist.news.html

arm64 Port URL: https://github.com/paulfloyd/freebsdarm64_valgrind

联系方式:Paul Floyd [email protected]

我已经一年多没有提交报告了。总体而言,这是个好消息,因为意味着没有出现重大问题。之前我提到 aarch64 支持即将到来,实际上在 2024 年 4 月中旬已经实现。

我为 Valgrind 添加了一个小工具脚本 vgscript。它的工作方式类似于 pstack(在 FreeBSD 上为 bstack):你提供一个 PID,它会生成该进程的堆栈跟踪。如果你对 Valgrind 进程使用 bstack,你将看到 Valgrind 的调用堆栈,这对你可能没用。而使用 vgstack 对 Valgrind PID 执行,则会打印在 Valgrind 下运行的测试程序的调用堆栈。

如果你经常使用 Valgrind,请查看我在论坛发布的调查问卷(如果尚未填写)。链接

Valgrind 3.26 计划在 2025 年 10 月底发布,devel/valgrind 将在之后不久更新。

devel/valgrind-devel 将在我修复 FreeBSD 15.0 相关问题时得到一次(或多次)更新。

在 FreeBSD 15.0 上仍存在的主要问题:

  • aarch64:使用 Valgrind 配合 gdb/vgdb 时存在问题。按 Ctrl-C 中断 Valgrind 下运行的进程不起作用,Valgrind 会断言崩溃。

  • aarch64:一个已知的旧问题,涉及线程内存初始化,过去不常发生,现在似乎更频繁。

  • amd64:可能类似于前面 gdb/vgdb 中断进程的问题,但这次是 select 返回了“不可实现”的值。

  • amd64:setcred 的测试会多出一个“Conditional jump”错误信息。

上述大多数问题对于非 gdb/vgdb 重度用户而言影响不大。

以下是自上次报告(2024 年第一季度)以来的修复列表:

  • 为 libc、libc 和 libstdc 函数添加了若干抑制(suppressions)

  • 改进了 setcontest 参数检查

  • 一些 aio_* 修复

  • 系统调用 _sysctlname 检查名称参数长度错误

  • kcmpgetrlimitusageclose_rangefchrootsetcredexterrctlinotify_add_watch_atinotify_rm_watchjail_attach_jdjail_remove_jd 添加新的系统调用封装

  • 开始改进 ioctl 参数检查

  • 修复 Valgrind 自检模式

  • 支持 aarch64 的 auxv AT_HWCAPAT_CHERI_STATSAT_HWCAP3AT_HWCAP4

  • 显著增强了 Valgrind 文件描述符检查,包括 FreeBSD

  • 移除一些我无法在 FreeBSD 10 上测试的旧代码

  • 尽可能移除 FreeBSD 版本相关代码,降低日常维护成本,但使版本无关的回归测试更困难

  • 关闭文本处理期间故意泄漏锁的检查

  • 系统调用 sigwait 未正确处理其非典型返回值

  • 改进 utrace 系统调用参数检查

  • amd64:系统调用参数 7 和 8 交换(事实证明参数 8 不再需要,已移除)

  • amd64:添加 sysarch 子命令 AMD64_SET_TLSBASEAMD_GET_TLSBASE

  • 减少在静默模式(-q)下打印的警告

  • 改进 sysctl kern.proc.pathname 检查

  • 支持 mmap 的 MAP_STACK 和 MAP_GUARD

  • 系统调用 open* 在尝试写入 guest exe 时现在会报错

  • 系统调用 sigwaitsigwaitingfo 对 NULL 参数的接受过于宽松

  • 许多 *at 系统调用(如 faccessat)未检查目录 fd 是否为 Valgrind 保留的文件描述符之一

  • 函数 memalign 现在接受大小为 0

一款新的 WiFi 管理工具:wutil

链接:

源代码 URL: https://github.com/MainKt/wutil

Port URL: https://www.freshports.org/net/wutil

联系方式:Muhammad Saheed [email protected]

net/wutil 是一款 WiFi 管理工具,支持大部分 wpa_supplicant(8) 的站点模式操作(扫描、连接或断开无线网络,以及管理已知网络等),提供更友好的操作界面。它还会自动管理和更新 wpa_supplicant.conf(8),对包含 Unicode 字符的 SSID 也能很好地处理。

wutil(8) 提供了命令行界面(CLI),而 wutui(8) 提供终端用户界面(TUI)。wutui 的构建未依赖任何 TUI 库,仅通过在 uncooked 终端原始模式下拼写 ANSI 转义序列,并结合 kqueue(2) 事件循环实现。两个工具都通过 wpa_supplicant 的控制套接字接口进行通信。此外,它还依赖 net/libifconfig 来处理接口相关功能。

后续我计划支持来自 hostapd(8) 的 AP 模式操作,清理 TUI 组件,并可能逐步摆脱 wpa_supplicant,自行处理认证。

wutil 已经可以通过 Ports 安装,欢迎试用!GitHub 上非常欢迎贡献、Bug 报告和功能请求。

导师: Aymeric WiboGetz Mikalsen

赞助:2025 谷歌编程之夏

最后更新于

这有帮助吗?