For the complete documentation index, see llms.txt. This page is also available as Markdown.

FreeBSD 2024 年第四季度状态报告

引言

以下是 2024 年的第四份也是最后一份状态报告,共包含 44 项条目。

这表明:2024 年是成果丰硕又繁忙的一年。通常来说,年末几个月的工作节奏会有所放缓,因为人们会去度假,庆祝新年。但我们依然在许多方面取得了巨大进展,交付了诸多成果!

整理和编写这份报告花费的时间比预期更长,但等待是值得的。

感谢整个社区的卓越工作,特别感谢那些为本报告提供更新内容的贡献者!

祝你阅读愉快!

Chris Moerz,

代表状态团队

FreeBSD 团队报告

来自各官方及半官方团队的报告,见 管理页面。

FreeBSD 核心团队

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

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

与 FreeBSD 基金会的后续交流

核心团队于 2024 年 12 月 12 日与 FreeBSD 基金会进行了视频会议,跟进之前在 EuroBSDCon 期间于都柏林举行的线下会议。核心团队继续与基金会探讨如何加强合作,以及如何支持开发者和贡献者:

  • 下一轮社区调查

  • 确定核心团队希望基金会提供帮助的项目

  • 与基金会合作制定技术路线图

进行中的工作

核心团队目前正在处理以下事项:

  • 关于生成式 AI 生成的代码和文档的政策

FreeBSD 基金会

链接:

FreeBSD 基金会

技术路线图

捐赠

基金会合作伙伴计划

FreeBSD 期刊

基金会活动

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

FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于通过技术和非技术支持推动 FreeBSD 的发展。基金会完全由捐赠资助,支持软件开发、基础设施、安全及协作工作;组织活动和开发者峰会;提供教育资源;并在法律事务中代表 FreeBSD 项目。本报告仅介绍了 2024 年第四季度基金会支持 FreeBSD 的一部分工作。

我是 Deb Goodkin,代表基金会,首先要感谢这个了不起的社区!正是由于你的财务贡献,我们才能加大力度,承担一些重要项目,包括大规模、多阶段的软件开发工作、更大规模的安全改进,以及将持续至 2025 年的重要基础设施改进。此外,我们还加大了 FreeBSD 的推广力度,涉及了多个技术和社交媒体平台,并制作了更多内容来宣传和推广 FreeBSD。更多相关信息,请见下文。如果想深入了解我们在 2024 年的工作,请查看年底博客文章以及我在推广部分的年度回顾。

我们正在招聘!请查看我们的 职位页面,目前有解决方案专家(Solutions Specialist)和技术营销经理(Technical Marketing Manager)的职位空缺。此外,我们也在寻找兼职技术写作人员,并将很快提供另一个职位,敬请关注。

我们仍在确认 2024 年筹款的最终数字,截至目前,我们已筹集约 $1,324,000。你可能会想:既然已经是 2025 年了,为何还没有最终统计数据?首先,我们尚未收到所有邮戳日期为 2024 年的支票。其次,我们也在等待去年开具发票的几笔款项。我们将在下一季度的状态报告中公布最终报告。

感谢在第四季度提供财务支持的个人和机构!我们共收到 325 笔个人捐赠,总额为 $120,841;以及来自 6 家机构的资金支持,总计 $326,000。此外,我们还获得了硅谷社区基金(Silicon Valley Community Fund)的拨款。

此外,我要特别感谢一位匿名捐赠者,他希望我们帮助开发者获得 Framework 笔记本电脑。Pietro Cerutti 一直在协调这项工作,目前我们已几乎与 Framework 公司敲定了流程,以便开发者能够直接向他们下单。

我们还为 BSDCon AV 团队资助了近 $5,000 的音视频设备,以减少两次主要 BSD 会议每次所需租赁的设备数量。

现在回到我们的财务方面。我们将在第一季度发布 2024 年财务文件和报告。更新后的 2024 年第一至第三季度财务报告将于 1 月底前发布,并将更符合预算格式。2024 年最终财务报告将在第二季度初发布。今后,我们的预算和财务报告将更详细说明资金是如何分配到主要软件开发项目的。例如,我们将包含每季度在笔记本电脑项目上的支出情况。我们正在与会计师合作改进会计系统,以提高资金使用方式的透明度。

我们对 2025 年及 FreeBSD 日后的发展机遇感到兴奋,我们正在扩展团队,以支持抓住这些机遇所需的工作。然而,我们需要你的帮助来维持这一切。我们的投资最多只能支撑一到两年。如果你的公司致力于 FreeBSD 的长期可持续发展,请考虑提供资金支持,确保 FreeBSD 继续成为你所依赖的安全、可靠和创新的平台。不知道如何开口?请联系我们,我们可以帮助你完成流程。

请访问 https://freebsdfoundation.org/donate/ 进行捐赠。想了解我们的合作伙伴计划,请访问 https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/。

推广

在 2024 年第四季度,我们继续提高 FreeBSD 的知名度,宣传 FreeBSD 项目,展示用户故事,并为 FreeBSD 社区提供教育信息。以下是一些重要工作概述:

操作系统改进

在 2024 年第四季度,共有 382 个 src、135 个 ports 和 17 个 doc 提交标注 FreeBSD 基金会为赞助商。

基金会及其投资合作伙伴支持了四个主要项目:

其他项目:

基金会的其他开发团队成员也为 FreeBSD 做出了贡献,例如:

改进持续集成(CI)与工作流

作为我们对 FreeBSD 项目的持续支持的一部分,基金会安排了一名全职工作人员,专门负责 改进项目的持续集成系统和测试基础设施。

法务与 FreeBSD 知识产权

基金会持有 FreeBSD 商标,负责保护这些商标。同时,我们还为核心团队提供法律支持,以调查出现的问题。

请访问 https://freebsdfoundation.org 了解我们如何支持 FreeBSD 以及如何为你提供帮助!

FreeBSD 发行工程团队

链接:

FreeBSD 14.2-RELEASE 公告

FreeBSD 13.5-RELEASE 计划

FreeBSD RELEASE 版本

FreeBSD 开发快照

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

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

本季度,该团队管理了 14.2-RELEASE 的发布流程,最终于 12 月完成了官方 RELEASE 版本的构建和发布。目前,团队已开始规划即将推出的 13.5-RELEASE 版本,该版本预计将是旧版 stable/13 分支的最终版本。因此,它将包含 contrib 代码的更新和一些缺陷修复,但不太可能引入重大新功能。

除了以往发布的 ISO 和 U 盘镜像、VM 镜像、云端映像等,团队现在还提供了兼容 OCI(开放容器倡议)的容器镜像。

发行工程团队还持续为 main、stable/14 和 stable/13 分支提供每周开发快照构建。

集群管理团队

链接:

集群管理团队成员

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

FreeBSD 集群管理团队负责管理项目所依赖的计算机,用于镜像、同步工作和通信。

本季度,团队开展了以下工作:

  • 例行维护 FreeBSD.org 用户账户。

  • 例行维护和更换所有物理主机及镜像服务器的磁盘及其他组件。

  • 集群软件更新。

  • 将更多集群服务迁移至芝加哥。

  • 支持 Grimoirelab 仪表板项目。

集群软件更新

除软件包构建服务器和面向开发者的 dogfood 机器外(译者注:dogfood 是俚语,意为“自用自测”,即自己使用自己开发的产品),FreeBSD 集群大多运行 stable/X 分支。

截至撰写本文时,集群中共有 131 台物理机器。其中,54 台运行 current,61 台运行 stable/14,14 台运行 stable/13。目前正在将剩余的 stable/13 机器升级至 stable/14。而 stable/12 机器已经被列入退役计划,它们不再运行生产环境工作负载。剩余的机器计划在近期升级/退役。

集群中的 297 个 Jail 中,已有 222 个运行在 stable/14。

将集群服务迁移至芝加哥

今年早些时候,我们开始在芝加哥建立新的站点。本季度,我们开始退役位于新泽西的旧服务器,将服务迁移到芝加哥的新服务器。我们的长期目标是让芝加哥成为主要站点。这项工作仍需几个月才能完成。

FreeBSD 官方镜像站概览

当前镜像站包括:澳大利亚、巴西、德国、日本(两个完整镜像站)、马来西亚、南非、瑞典、台湾、英国(完整镜像站)、美国(加利福尼亚、芝加哥、新泽西〔主站点〕和华盛顿)。

我们的台湾镜像站正经历着长时间的宕机,预计将于 2025 年第一季度恢复上线。

此外,我们预计在 2025 年第一季度于加利福尼亚新增一个镜像站,由 Sonic 慷慨提供托管支持。

以下机构慷慨提供了硬件设备和网络连接支持:

我们始终欢迎新增官方镜像站。实践证明,在互联网交换点(IXP)托管镜像站在全球范围内非常有益,例如我们在澳大利亚、巴西和南非的现有镜像站。如果你所属或了解任何愿意赞助单独镜像服务器的机构,请联系我们。我们尤为希望在美国西海岸和欧洲各地拓展新的镜像站。

有关完整镜像站的规格,请参阅 通用镜像布局,有关单独镜像站的信息,请参阅 tiny-mirror。

赞助者:FreeBSD 基金会

持续集成

链接:

FreeBSD Jenkins 实例

FreeBSD CI Tinderbox 视图

FreeBSD CI 构建产物存档

托管 CI Wiki

第三方软件 CI

与 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 CI 代码仓库

dev-ci 邮件列表

联系方式:

Jenkins 管理员 <jenkins-admin@FreeBSD.org>

許立文 <lwhsu@FreeBSD.org>

freebsd-testing 邮件列表

IRC 频道:EFNet 上的 #freebsd-ci

在 2024 年第四季度,我们与项目贡献者和开发者合作,满足他们的测试需求。同时,我们与外部项目和公司合作,通过在 FreeBSD 上进行更多测试来改进他们的产品。

已完成的重要任务:

  • 更新 main 和 stable/14 的构建环境至 14.2-RELEASE

  • 更新 stable/13 的构建环境至 13.4-RELEASE

  • 修复了一个长期存在但未被发现的 pw(1) 在 Jail 设置中的使用错误

进行中的任务:

  • 设计、实现预提交 CI 构建与测试及基于 pull/merge-request 的系统(以支持 工作流工作组)

  • 设计并实现 CI 集群用于构建与发布工程相同的构建产物,从快照构建开始

  • 简化 CI/测试环境的设置流程,以便贡献者和开发者更易使用

  • 搭建 CI 预发布环境,并在其上运行实验性任务

  • 重新设计硬件测试实验室,并增加更多测试硬件

开放和待处理的任务:

  • 收集并整理 CI 任务与想法

  • 为运行测试的 VM 客户机设置公共网络访问

  • 在裸机上运行测试套件

  • 在 -CURRENT 版本上添加 drm port 构建测试

  • 帮助更多软件在其 CI 流程中支持 FreeBSD(相关 Wiki 页面:3rdPartySoftwareCI,HostedCI)

  • 与托管 CI 提供商合作,优化对 FreeBSD 的支持

请参阅 freebsd-testing@ 相关工单 了解更多进行中的任务,并欢迎加入我们的工作!

赞助者:FreeBSD 基金会

Ports

链接:

关于 FreeBSD Ports

参与 Ports

Ports 管理团队

Ports Tarball

联系方式:

Tobias C. Berner <portmgr-secretary@FreeBSD.org>

FreeBSD Ports 管理团队 <portmgr@FreeBSD.org>

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

在上季度,我们欢迎 Xavier Beaudouin (kiwi@) 成为新的 Ports 提交者。

根据索引数据,目前 Ports 中共有 36,332 款软件包(较上一季度的 36,504 个有所减少)。目前约有 3,368 个开放的 Ports PR(较上一季度的 3,379 个减少),其中 809 个尚未分配。

上个季度,main 分支共有 10,640 次提交(较上一季度的 11,594 次有减少),由 155 名提交者完成(比上一季度少 1 名)。2024Q4 分支共有 733 次提交(较上一季度的 832 次减少),由 61 名提交者完成(较上一季度的 78 名有减少)。

Ports 数量也有所下降(从 36,504 降至 36,332)。

main 分支最活跃的提交者:

过去三个月的主要软件升级:

  • Lazarus 默认版本切换至 3.6.0

  • PHP 默认版本切换至 8.3

  • Chromium 131.0.6778.204

  • Electron 33.3.0

  • Firefox 134.0

  • Firefox-esr 128.6.0

  • KDE Frameworks 6.9.0

  • KDE Plasma 6.2.4

  • Qt6 6.8.1

  • Python 3.9.21

  • Python 3.10.16

  • Python 3.11.11

  • Ruby 3.2.6

  • Ruby 3.3.6

  • Rust 1.83.0

  • SDL 2.30.10

  • SDL 3.1.6

  • Sway 1.10

新增的 USES 变量:

  • cl - 用于支持 Common Lisp Ports

  • java - 用于支持 Java

  • sbrk - 处理需要 sbrk() 的 Ports

在上个季度,Ports 管理团队进行了 14 次实验性构建(exp-run),以测试各类 Ports 升级及对 bsd.port.mk 的改动。

Bugmeister 团队

链接:

FreeBSD Bugzilla

联系方式:Bugmeister <bugmeister@FreeBSD.org>

在本季度,我们更接近于稳定状态,目前处理新提交的 PR 的速度有所提升。可参考以下链接:

Bugzilla 90 天数据统计

整体 PR 数量从 11,600+ 降至 11,000,这得益于多位成员的努力,他们整理了整个 PR 组(见下文)。

Mark Linimon 多次参与了与 src 提交者的视频会议。目前,他们正在进行一些实验,以了解哪些工作流程是可持续的。最近的一项工作是审阅最新提交的 src PR,你会注意到,过去几周的许多 PR 都被标记为请求反馈。

此外,Bugmeister 团队清理了 Bugzilla 数据库的元数据,具体包括:

  • 重新分配 Bug,避免将其指派给提交权限已被保留(safekept)的一年期内未活跃的开发者。

  • 清理基本系统(base)的 In Progress(处理中)状态 Bug,其中许多未被积极处理,目前数量降至 184。

    • Mark Linimon 特别指出,“指派给邮件列表”并不等于“正在进行中”。或许该问题已经讨论过,但我们目前并没有一个合适的状态来表示它(甚至可以认为这本身是个 Bug)。

    • 目前,我们将 In Progress 仅保留给真正处于开发状态的 Bug,数量已从过多降至仅剩少数。

  • 评估 mfc-stableN 相关 PR,特别是 mfc-stable12 相关 PR 已清除该标记。

    • 目的是确保元数据具有实际意义,比如:“某个提交已经完成,并需要评估是否需要 MFC(从 main 向后移植)”。

    • 目前,这类 PR 的数量已大幅减少。

  • 关闭大量 PR,标记为 Overcome By Events(时过境迁),主要依据:

    • 旧版本 + 包含关键字 boot

    • 旧版本 + 包含关键字 alpha 或 beta

  • 评估“PR 显示已提交”(可能是通过 Phabricator)但没有后续讨论的 PR。

    • 对于部分 PR,我们直接将其指派给相关开发者,并确保已正确设置 mfc-stable[13|14] 标记。

    • 仍然有许多 PR 已有提交,但后续仍有讨论,这类 PR 可能需要更多志愿者来整理。

  • 移除许多 PR 中的关键字 patch(补丁)。

    • 最佳情况下,补丁信息应通过附件的元数据自动推断。

    • 如果补丁是以内联文本方式提交,而非附件,则仍会保留关键字 patch。一些遗留的 GNATS 转换数据可能仍然包含此类内联补丁,但应尽量避免使用它们,因为自动化工具无法检测内联补丁。感谢我们的 triagers,特别是 Alexander Ziaee。

在最近的一些视频会议中,我们讨论了 Bugzilla 的后续发展。目前,Phabricator 已停止维护,但其支持的继任者已经出现。多个团队将需要协调,以评估新工具的适用性。

Jan Bramkamp 自愿承担“自动化 PR 采集及评估其是否仍然适用”任务,Mark Linimon 也将协助。

Clusteradm@ 团队成功抵御了一次恶意爬虫的攻击。在此期间,Bugzilla 因超时问题几乎无法使用,同时受影响的还有 wiki、cgit 等同一台服务器上的服务。

我们欢迎 Lexi(Discord ID: ivy)加入 Triage(分类)团队。

此外,作为第十三届核心团队的联络人,glebius 已添加了别名 bugmeister@。

参见 Bugzilla 搜索查询指南

新的 src 管理团队

联系方式:src 管理团队 <srcmgr@FreeBSD.org>

已由核心团队批准成立一个新的 源代码管理团队,负责管理 FreeBSD 源代码,类似于 Ports 管理团队和文档工程团队分别负责管理 Ports 和文档。初始团队成员包括 Ed Maste、Mark Johnston、John Baldwin 和 Warner Losh。src 管理团队目前的重点是寻找提高源代码开发者工作效率的方法,并尝试管理大量的 bug 报告和拉取请求(PR)。团队每两周举行一次会议,讨论与源代码相关的问题,并花时间处理 bug 报告和拉取请求。可在 GitHub 上查看 会议纪要。src 管理团队有 章程,并正在开发和记录帮助管理源代码树的政策。

在 2024 年 12 月,源代码管理团队举办了一次在线 bug 修复活动,共有 15 名开发者参与。我们花时间回顾了最近的 bug 报告,以及带有补丁的旧报告。团队计划每月举办此类活动,并希望后续向更广泛的参与者开放。

团队计划在 2025 年上半年开发一个类似于 Ports 管理团队的见习者计划。

项目

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

基础设施现代化

联系方式:

Ed Maste <emaste@FreeBSD.org>

Alice Sowerby <alice@freebsdfoundation.org>

该项目始于 2024 年第三季度,由 Sovereign Tech Agency 委托,预算为 745,000 美元,计划在大约一年内完成。主要目标是提升基本系统、Ports 和软件包的安全工具,更新项目的基础设施以加速开发,增强构建安全性,并简化新开发者的入门过程。

第四季度更新:

  • 工作包 A:偿还技术债务。基金会与源代码管理团队合作,定制并部署了多个仪表板,用于概览 FreeBSD 项目的 bug 积压情况。这些仪表板由我们的项目合作伙伴 Bitergia 使用开源工具 GrimoireLab 创建,并按照团队的规格设计。基金会工作人员将这些仪表板托管在 FreeBSD 部署上,访问地址为 https://grimoire.freebsd.org/。可以在 https://github.com/freebsd/grimoire 上找到更多有关仪表板的信息。 src 管理团队还使用这些仪表板支持他们处理 bug 报告的新方法,这些仪表板已成为协作修复 bug 活动的关键工具。

  • 工作包 B:零信任构建,工作包 C:CI/CD 自动化。基金会与 FreeBSD 项目内的各个关键行政和管理团队合作,共同界定了这两个项目的范围。计划于 1 月开始,并将在第二、三季度结束。

  • 工作包 D:Ports 和软件包中的安全控制,工作包 E:改进软件物料清单(SBOM)。这两个项目尚未开始,分别计划在 2 月和 3 月启动。

委托机构:Sovereign Tech Agency

笔记本电脑支持与可用性改进项目

联系方式:

Ed Maste <emaste@FreeBSD.org>

Alice Sowerby <alice@freebsdfoundation.org>

该项目始于 2024 年第四季度,受 FreeBSD 基金会和 Quantum Leap Research 资助。项目预算为 750,000 美元,计划在一到两年内完成。项目的目标是改善 WiFi、音频可用性、挂起和恢复功能、图形和蓝牙等关键功能。团队还将创建清晰的文档和逐步指南,帮助用户使用新功能。

第四季度更新:

赞助者:FreeBSD 基金会

赞助者:Quantum Leap Research

FreeBSD 基金会的安全工程

链接:

FreeBSD 基金会发布由 Alpha-Omega 项目资助的 bhyve 和 Capsicum 安全审计

FreeBSD 安全审计如何改善我们的安全文化

ORC WG 的主页

FreeBSD 基金会:联系我们

开源漏洞架构 (OSV Schema)

ossf/osv-schema 工具:导入 VuXML 转换工具

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

我在 FreeBSD 基金会的任务继续围绕 FreeBSD 项目的安全工程工作。

首先,我们继续处理 bhyve 和 Capsicum 的源代码审计结果,记录并研究如何防范类似问题再次发生并减轻其影响。这包括与 FreeBSD 项目贡献相关的过程,以及与 Alpha-Omega 在即将到来的 2025 年 FOSDEM 大会期间,在 BSD Devroom 举行联合演讲的准备工作。

与此同时,我与开放监管合规工作组(ORC WG)保持联系,多个利益相关方正在共同编写有关欧盟新引入的《网络弹性法案》(CRA)的常见问题解答。这与我们同 OpenSSF 的持续合作有关,特别是自我评估计划;请注意,FreeBSD 基金会可以为部署 FreeBSD 的项目提供相关协助。

最后,我们正在研究将 OSV 工具集成到 FreeBSD 生态系统中的可能性。

赞助者:FreeBSD 基金会

安全审计

联系方式:

Ed Maste <emaste@FreeBSD.org>

Alice Sowerby <alice@freebsdfoundation.org>

该项目始于 2024 年第二季度,由 Alpha-Omega 资助,预算为 $137,500,历时约六个月,目前已完成。重点是对关键子系统 bhyve 和 Capsicum 进行代码审计,并对开发过程进行安全审计。资金用于聘请专业的进攻性安全公司进行代码审计,雇佣开发者解决发现的问题,以及基金会工作人员在两个审计中的工作。

第四季度进展

项目已完成。

代码审计和 后续报告 在相关的安全通告发布后公开。

已完成过程审计。该审计由 FreeBSD 基金会工作人员创建,他们进行了一次外联活动,收集有关当前 FreeBSD 开发过程的信息。咨询的团队包括:安全团队、源代码管理团队、集群管理员、发布工程团队。

信息通过一份在线详尽调查收集,调查围绕现有的安全性分析框架进行。各团队被要求描述当前的开发流程并评估现有的安全实践,同时提出改进建议。

基金会工作人员整理并汇总了各方的回应,并将其撰写成报告。报告已由最初的受访者审阅以确保准确性。

该报告现将提供给安全团队及其他上述提到的团队,以及基金会执行团队。这将成为在未来更多安全项目规划和资助时,识别投资和优先事项的有用工具。

该报告主要用于 FreeBSD 项目和基金会的规划目的,因此没有计划向外部发布。感兴趣的读者应联系安全团队申请报告副本。

要了解更多关于该项目的信息,查看历史月度更新,访问:https://github.com/ossf/alpha-omega/tree/main/alpha/engagements/2024/FreeBSD。

赞助者:Alpha Omega 项目

支持 Framework 笔记本

链接:

FreeBSD Wiki 上的 Framework 笔记本页面

在 Framework 系统上安装和使用 FreeBSD 的指南

跟踪问题:Framework 笔记本:功能支持、错误和改进

联系方式:

Daniel Schaefer <dhs@frame.work>

許立文 <lwhsu@FreeBSD.org>

Sheng-Yi Hong <aokblast@FreeBSD.org>

长期以来,Framework 在许多方面对 FreeBSD 项目表现出友好态度,包括为基金会提供工程样品以供测试并支持工作。

自 2024 年夏季以来,Framework 在台北办公室举办了几场小型黑客松,测试不同型号的 Framework 笔记本及外设上运行 FreeBSD。

Sheng-Yi 正在使用 Framework Computer 提供的笔记本增加更多设备支持,例如:d3b05d0ea10a:为 Meteor Lake 添加 smbus 和 i2c 设备 ID。

来自 Framework Computer Inc 的 Daniel 在 Framework Computer 的 GitHub 组织下创建了一个仓库,以记录安装笔记和其他信息。他修复了指纹识别器(libfprint),不仅仅是为 Framework 提供支持,而是为 FreeBSD 提供通用支持。他还在为 FreeBSD 的许多相关驱动程序提供支持和修复。

在 11 月,基金会人员和一些 FreeBSD 开发者访问了 Framework 的旧金山办公室,召开会议检查当前的 FreeBSD 支持状态,并讨论未来的合作计划。

基金会将继续致力于改善通用的笔记本支持,并将 Framework 作为 目标平台之一 用于 笔记本支持和可用性项目。

赞助者:FreeBSD 基金会(支持許立文的工作)

赞助者:Framework Computer Inc(支持 Daniel 的工作、硬件和空间支持)

用户空间

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

受 pkgbase 推动的 pkg 改进

联系方式:Isaac Freund <ifreund@freebsdfoundation.org>

阻碍 pkgbase 项目 进展的一些问题,源于 pkg(8) 的缺陷。我在 pkg 上的主要工作目标是铲除 pkgbase 进展的阻碍。然而,即使用户不使用 pkgbase,所有 pkg 的用户也将受益。

已经 重写 pkg 的安装/升级/删除任务调度器,此重写是为了应对 PR259785 的问题。新的调度器将调度问题建模为有向图,仅在必要时为打破图中的循环而将升级任务拆分为删除/安装两个部分。这种形式化的模型提供了强有力的顺序保证,而旧的调度器未能提供这些,并且避免了不必要的升级任务拆分。它还修复了旧调度器长期存在的错误,旧调度器会中途放弃,导致整个升级失败。新的调度器已包含在 pkg 版本 1.21.99.3 (pkg-devel) 中。

本季度我的其余工作与 pkg 的自动跟踪共享库依赖有关,而 pkgbase 强烈依赖这一功能。最初的动机问题是 PR265061,但要清晰地解决这个问题,必须对 pkg 跟踪共享库的方式做出更根本的改变。

通过 pkg-create(8) 创建软件包时,pkg 会扫描包含的文件,并根据找到的可执行文件/共享库生成 shlibs_provided/shlibs_required 列表。在我的更改之前,pkg 会使用主机系统的 elf 提示文件作为 pkg-create 的输入,以便从生成的 shlibs_required 列表中过滤掉由基本系统提供的共享库。选项 ALLOW_BASE_SHLIBS 会禁用此过滤,以便构建 pkgbase 软件包。

在我的修改之后,pkg-create 不再读取主机系统的 elf 提示文件,基本系统的共享库会包含在生成的 shlibs_required 列表中。当 pkg-install(8)/pkg-upgrade(8)/等调用求解器时,在非 pkgbase 系统上,pkg 会通过扫描 /lib 和 /usr/lib 来生成基本系统提供的共享库列表,并将其作为求解器的输入。在 pkgbase 系统上,pkgbase 软件包提供所有基本系统的共享库。

这使得选项 ALLOW_BASE_SHLIBS 不再需要。它还改进了 Port 软件包与 pkgbase 软件包之间的集成,因为现在跟踪了 Port 软件包对 pkgbase 软件包的共享库依赖,而不是忽略这些依赖。最后,这一变化显著简化了 pkg 的代码库并提高了可移植性。此修改已在 https://github.com/freebsd/pkg/pull/2386 中实现,但尚未包含在 pkg 发布版本中。

通过该更改以及其他 内部改进,我成功添加了对 lib32 和 Linuxulator 共享库的跟踪支持,这应该解决了最初促使我在 pkg 的共享库处理上工作的 PR265061 问题。此支持已在 https://github.com/freebsd/pkg/pull/2387 中实现,但尚未包含在 pkg 发布版本中。

赞助者:FreeBSD 基金会

FreeBSD 安装程序的进展

链接:

改善 FreeBSD 安装程序的修复能力

编程之夏 2024 - 改进带修复和升级能力的安装程序 (#1395)

bsdinstall: 在实时环境中添加 pkg 安装支持 (#1424)

bsdinstall: 向安装程序菜单添加修复脚本 (#1427)

笔记本电脑和桌面工作组

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

作为 2024 年编程之夏项目的一部分,我有幸指导葉君政(化名“Leaf”)实现了一些额外功能。目标是增加对修复或更新现有 FreeBSD 安装的支持,同时允许在实时环境中安装软件包。这项工作已经整合为三个不同的 PR,托管在 GitHub 上。尽管某些方面可能仍然需要进一步打磨才能合并,但将安装程序镜像显著扩展为潜在的救命工具已经触手可及。

鉴于目前正在努力改善 FreeBSD 对笔记本电脑和桌面使用的支持,这一点尤为相关。在这种背景下,我目前正在恢复工作,着手开发安装程序的图形版本。最紧迫的挑战包括使其适合集成到下一个重大版本中。

结合上述两个计划应该有助于 FreeBSD 在现代操作系统中缩小与竞争对手的差距,无论是在企业应用还是在笔记本和桌面使用方面。

赞助者:FreeBSD 基金会

内核

内核子系统/功能、驱动支持、文件系统等方面的进展。

改进音频栈

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

FreeBSD 音频栈并未像其他领域那样吸引大量关注和开发,因为它在很大程度上缺乏维护,尽管其质量较高,但仍有改进空间——从缺少音频开发框架,到缺少的用户空间工具,以及与内核驱动相关的 bug。该项目旨在覆盖所有这些领域,因此,它更像是一个综合性改进项目,而非某个特定功能的实现。

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

后续工作有:

  • 更多 bug 修复、优化和一般改进。

  • 实现通用的 MIDI 层,类似于 pcm/,并改进/现代化 MIDI 代码库。

  • 实现了一款蓝牙设备管理工具。

  • 对 virtual_oss 进行补丁和改进。

  • 尝试自动化 snd_hda(4) 引脚修补。

  • 研究 SOF/DMIC 支持。

你也可以在 freebsd-multimedia@ 跟踪开发进程,我会定期发布报告。

赞助者:FreeBSD 基金会

mac_do(4)、setcred(2)、mdo(1)

联系方式:

Olivier Certner <olce.freebsd.statusreports@certner.fr>

Baptiste Daroussin <bapt@FreeBSD.org>

本项目旨在通过利用我们的 MAC 框架,实现受控的进程凭证过渡,而无需使用 setuid 可执行文件。有关总体介绍,请参阅 上一季度的报告。由于这是进展报告,我们仅在此简要回顾大纲。

简而言之,本项目包括两个组件:

  • mac_do(4) 是内核模块,检查凭证过渡请求,并授权与管理员配置的规则匹配的请求。

  • mdo(1) 是用户空间程序,充当希望以更改凭证启动其他进程的进程与 mac_do(4) 之间的中介,其功能是仅授权特定的更改。setcred(2) 是它们之间新的系统调用,能让用户空间原子地请求各种凭证更改,使得 mac_do(4) 可以根据初始凭证和最终目标凭证之间的过渡来做出决定。

所有必要的提交和 MAC/do 相关的变更已通过审核,并且所有提交最终已推送到 FreeBSD 的主分支,包括以新手册页形式提供的 setcred(2) 文档以及对 mac_do(4) 进行的更改,以匹配新的 sysctl(8) 控制选项和规则语法。

规则现在可以更精细地表达哪些组被允许出现在给定 UID 或 GID 的结果凭证中,特别是可以指定最终凭证可以、必须或不得包括哪些目标主组和附加组。请查阅 mac_do(4) 以了解新语法和示例。

后续工作(没有特定的顺序和时间框架)可能包括:

  • 对于 mac_do(4) 组件:

    • 目前,它只能为从 /usr/bin/mdo 可执行文件生成的进程授予凭证过渡。调整此路径的可能性也许对自定义轻量级 Jail 布局很有意义。拥有多个此类路径的能力是能够将 mac_do(4) 与其他授予凭证的程序(如 sudo(1) 和 doas(1))一起使用的一个缺失环节。

    • 目前 mac_do(4) 只能在通过新 setcred(2) 请求时授予新凭证,因为它需要看到当前凭证和期望的最终凭证以做出决定。然而,每次调用传统和标准的凭证更改函数,如 setuid(2)、seteuid(2) 等,都可以被视为一次(有限的)完整过渡,mac_do(4) 可以对此进行决策。此功能可以更精细地控制向 root 的过渡,并且结合前一点的功能,可安装和使用不需要 setuid 位的凭证授予程序。然而,要充分发挥这个新版本的 mac_do(4) 模块的功能,还需要修改这些程序以使用 setcred(2)。

  • 对于 mdo(1) 组件:

    • 与 mac_do(4) 的规则相比,目前可以请求的凭证过渡相对有限。将其功能扩展为以下几个方面会很有用:

      • 指定目标组(主组或附加组)的任何列表,可能基于用户名(隐式列表来自 /etc/passwd 和 /etc/group 的内容),但允许一些调整(例如排除最终凭证中的特定组)。

      • 仅允许更改组。

      • 在某些情况下,在调用 setcred(2) 前请求口令。这会削弱 mac_do(4)/mdo(1) 组合的安全范式,因为它将依赖于用户空间来完成部分门控过程,但在许多情况下似乎是可以接受的。

      • 增加一种模式,用于生成与某些用户的口令和组数据库内容相对应的规则目标部分。

我们欢迎对这个新版本以及上述后续工作的一切反馈。

赞助者:FreeBSD 基金会

赞助者:Kumacom SARL

改进挂起/恢复

链接:

博客

工作分支

联系方式:obiwac <obiwac@freebsd.org>

正在将 suspend-to-idle 和对 S0ix 睡眠的支持添加到 FreeBSD 中。

这将使现代英特尔和 AMD 笔记本电脑(例如 AMD 和较新的英特尔 Framework 笔记本电脑)能够进入低功耗状态,从而提升电池寿命,部分笔记本电脑不支持 ACPI S3 睡眠。

英特尔的 Ben Widawsky 从 2018 年开始致力于此项目,但他的工作从未完成,现在已经过时。如今,这项工作已被接手,首要目标是到 1 月底使 Framework 13 AMD Ryzen 7040 系列的挂起/恢复功能正常工作。计划在 FOSDEM 上进行初步结果的演讲。

目前,已经可以解析 AMD 上所有的设备电源约束,系统能进入低功耗状态。

赞助者:FreeBSD 基金会

用于 MBIM USB 4G/5G 调制解调器的驱动程序 umb(4)

链接:

UMB(4) - OpenBSD 设备驱动手册

UMB(4) - NetBSD 内核接口手册

Bug 263783 - USB MBIM:对 LTE/4G USB 调制解调器的支持

引入网络驱动程序 USB umb(4)

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

移动宽带接口模型(MBIM)是一种与网络 USB 设备进行通信的协议,通过移动宽带网络传输数据包。实现此协议将支持一系列 USB 设备,提供连接到移动网络的功能,如 4G、5G 及其后续技术发展。

该协议的首个实现是在 2016 年为 OpenBSD 完成的,命名为 umb(4)。我本人在 2019 年将其移植到 NetBSD,并且之后被雇佣使其与 OPNSense 兼容,并获准在 2022 年将其作为开源发布。不幸的是,到了这个时候,FreeBSD 中的一些更改实际上使驱动程序无法使用,直到修复才能合并。

在本季度,我成功地提供了一个新版本并确认其工作正常(感谢 Mike 和 Zhenlei!)。该版本目前正在 Phabricator 中审查,作为 D48167 提交。该提交仍然基于 2020 年的代码,并且落后于 OpenBSD 自那时以来的进展。因此,它目前仅支持 IPv4。然而,我认为保持审查简单,专注于设计决策和集成,然后逐步导入自那时以来 OpenBSD 上游的改进(尤其是 IPv6 支持)是明智的。

在当前形式下,驱动程序已从原本作为 OPNSense 插件的非内核模块,修改为内核模块及其伴随的二进制文件 umbconfig(8)。这个管理二进制文件有效地允许配置 umb(4) 驱动程序,超出 ifconfig(8) 的功能:可以设置 PIN 和 PUK 代码、APN、用户名/口令和漫游参数,并跟踪连接情况(网络提供商、速度等)。

如果你希望亲自体验并获得由该驱动程序支持的硬件,最重要的功能是支持 MBIM 规范。OpenBSD 的手册页提供了应符合标准的设备列表;请注意,有些设备需要预先配置才能有效地暴露 MBIM 接口。确切的程序是供应商特定的,也可能取决于设备的型号和当前配置。你应参阅你设备的文档,了解所需的完整步骤。

赞助者:FreeBSD 基金会

LinuxKPI 802.11 无线进展

链接:

分类无线问题报告

驱动概览

联系方式:

Bjoern A. Zeeb <bz@FreeBSD.org>

FreeBSD 无线邮件列表 <wireless@FreeBSD.org>

目前有多个无线项目正在进行,本报告重点介绍了在 FreeBSD 上尽可能直接使用宽松许可的 Linux 无线驱动的工作。

以前直接提交到 FreeBSD src.git 的驱动程序已被补录至供应商分支并合并到主分支。这使得维护和识别本地更改变得更加容易。 iwlwifi(4)、rtw88(4) 和 rtw89(4) 驱动程序已更新至与 Linux 6.11 兼容。

已经移植了驱动程序 rtw89(4) ,它进入源代码有一段时间了,并已成功进入到构建中。感谢社区的努力,之前妨碍其工作的两个 bug 已经解决。

已更新 Ports 中的无线固件,并添加了一个 flavor。已增强发布构建框架,能将固件包安装到发行介质中。安装程序增加了:能在已安装的系统上运行 fwget(8) 来安装固件。这一系列改进确保了可以从安装程序直接使用带有外部固件的(无线)驱动程序,并立即在已安装的系统上运行,无需其他连接方式。通过此框架,后续可以轻松地以类似 iwlwifi(4)、rtw88(4) 和 rtw89(4) 的方式添加更多驱动程序的支持。这些改进首次随 14.2-RELEASE 发布。

在解决了许多前置请求之后,时间用于改进 LinuxKPI 框架中的 HT(802.11n) 和 VHT(802.11ac),以实现驱动程序和 net80211 之间的同步。硬件加密卸载以及 A-MPDU RX/BA 卸载也在年底前得到了处理。这两项改进对于实现 iwlwifi(4) 更高的吞吐量目标至关重要。

一个半年前的 bug 在未被注意到的情况下阻碍了 rtw88(4) 在主分支和 stable/14 中扫描后的数据包发送,现已收到补丁进行修复。

2025 年第一季度的工作应包括:

  • 完成基础的 HT 和 VHT 支持,和

  • 完成通用 LinuxKPI 802.11 挂起/恢复支持的代码

赞助者:FreeBSD 基金会

无线进展

联系方式:

Tom Jones <thj@FreeBSD.org>

FreeBSD 无线邮件列表 <wireless@FreeBSD.org>

在 FreeBSD 基金会 的支持下,本季度我开始着手将 WiFi 驱动 iwx 从 OpenBSD 移植到 FreeBSD(通过 Haiku)。驱动 iwx 支持许多受 iwlwifi 支持的芯片组,但 OpenBSD 的开发者决定为这些设备实现一款新驱动,而不是让原有驱动变得更加复杂。

目前,OpenBSD 上的 iwx 驱动支持以站点(station)模式运行 80211abgn 和 ac,但尚不支持 ax 速率。该项目的目标是从 OpenBSD 引入一款可维护的驱动程序,并逐步增加支持,直到我们在 FreeBSD 中拥有一款支持 80211ac(并可能支持 80211ax)的原生驱动。

目前,驱动程序支持 80211a 和 80211g,并能够充分利用这些标准所提供的速率的实际限制(大约 28Mbit 下载和 25Mbit 上传)。该驱动程序正在积极开发,并进展迅速。

下个季度的计划是添加对高吞吐量速率的支持,实施监控模式,并稳定驱动程序,准备进行公开测试。

待驱动程序足够稳定,将在 freebsd-current 和 freebsd-wireless 邮件列表中发布测试请求。

赞助者:FreeBSD 基金会

FreeBSD 上 Syzkaller 的改进

链接:

google/syzkaller

联系方式:

Jian-Lin Li <ljianlin99@gmail.com>

許立文 <lwhsu@FreeBSD.org>

Syzkaller 是一款操作系统内核模糊测试工具,可以查找内核中的漏洞。

本项目旨在改进 FreeBSD 上 Syzkaller 的支持。基于现有的用于 Linux 的 WiFi 模糊测试工具,我们为 FreeBSD 草拟了一款 WiFi 模糊测试工具。我们计划使用 wtap(4),一款用于测试的虚拟 WiFi 驱动程序,来支持 WiFi 模糊测试。

一些设计细节包括:

  • 为 wtap 引入一个新命令 netlink,以实现帧注入,这是 WiFi 模糊测试的关键。

  • 在 Syzkaller 中初始化 wtap 设备以进行 WiFi 模糊测试。

我们正在开发一些原型,并与一些专家讨论可行的设计方案。项目进展不大。我们希望在接下来的几个月里有更多的进展。

赞助者:FreeBSD 基金会

FreeBSD V4L2 与 USB 视频类内核驱动

链接:

公共开发仓库

上游合并准备仓库

联系方式:

Alvin Chen <weike_chen@dell.com>

許立文 <lwhsu@FreeBSD.org>

本项目旨在开发 FreeBSD UVC(USB video class,USB 视频类)内核驱动,并遵循 V4L2 API,以便能够轻松把大多数 Linux 摄像头软件移植到 FreeBSD。

当前代码仍在整理中,待完善后将提交至官方审核系统。

目前,Dell ThinOS 团队正在开发 MIPI 摄像头支持,包括 Intel XPU。

赞助者:戴尔科技(开发支持)

赞助者:FreeBSD 基金会(上游合并协助)

架构

更新平台特定功能,并为新硬件平台提供支持。

支持 Pinephone Pro

链接:

Codeberg 上的仓库

联系方式:Toby Kurien <toby@tobykurien.com>

将 FreeBSD 移植到 Pinephone Pro 的项目正在进行中。该项目的目标是逐步支持 Pinephone Pro 的各个组件,以便将来该设备可能作为一款高度移动化的 FreeBSD 设备使用。

本季度:

  • 实现了 RK818 电源管理 IC 的驱动程序,使设备调节器得以启用。

  • 还实现了实时时钟的驱动程序,使系统能在重启之间维持时间。

  • 编写了 RK818 电池充电器和电池监控器的驱动程序,使电池能够通过 USB 充电,并通过 sysctl 获取一些电池信息,如电压和充电状态。

  • 已更新代码仓库,包含如何编译自定义内核和设备树的脚本和文档,并将其补丁应用到 FreeBSD 15-CURRENT 镜像中,以便在 Pinephone Pro 上启动。

下一步是启用基于 UEFI 的帧缓冲支持,以启用屏幕输出,启用 USB 即插即用功能,这可能允许插入 USB 键盘/以太网。还将考虑移植 WiFi 的 Linux 驱动程序。鼓励任何有兴趣的人与我们联系。欢迎更多反馈和测试人员。

如果你希望参与,请查看 FreeBSD 论坛上的此帖。

赞助者:Honeyguide Group

云端

更新云端特定功能,并为新的云平台提供支持。

在微软 HyperV 和 Azure 上 FreeBSD 的支持

链接:

微软 Azure 上的 FreeBSD 文章

微软 HyperV 上的 FreeBSD 文章

联系方式:微软 FreeBSD 集成服务团队 <bsdic@microsoft.com>

freebsd-cloud 邮件列表

联系方式:

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

Wei Hu <whu@FreeBSD.org>, <weh@microsoft.com>

Souradeep Chakrabarti <schakrabarti@microsoft.com>

Colin Su <yuas@microsoft.com>

許立文 <lwhsu@FreeBSD.org>

本季度,我们在 Azure Marketplace 发布了 14.2-RELEASE。

Colin Su 在 FreeBSD 2024 秋季峰会上介绍了关于 Azure DevOps 管道的内容。

来自微软的 Souradeep Chakrabarti 添加了一个特性,用于在 Hyper-V 和 Azure 上使用超调用进行 TLB shootdown。

Wei Hu 定位到了在最新 Azure v6 VM SKU 上启动 FreeBSD 时缺失 CDROM 设备的根本原因,因为 V6 类型仅向虚拟机操作系统提供 NVMe 磁盘。他将继续修复 FreeBSD MANA 网卡设备的 bug。

进行中的任务:

待办任务:

赞助者:Microsoft(为微软内部人员提供赞助,并为其他人员提供资源)

赞助者:FreeBSD 基金会(提供其他所有资源)

FreeBSD 上的 OpenStack

链接:

OpenStack

FreeBSD 上的 OpenStack

联系方式:

Chih-Hsin Chang <starbops@hey.com>

許立文 <lwhsu@FreeBSD.org>

FreeBSD 上的 OpenStack 项目旨在将 OpenStack 云基础设施的功能与 FreeBSD 的强大特性相结合。我们的目标是利用 FreeBSD 的独特功能,同时确保与 OpenStack 操作的兼容性。

在第四季度,我们的主要目标是通过建立一个新的环境来最终完成里程碑 1 中承诺的任务,以展示一个可行的概念验证(POC)站点。然而,同时建立另一个基于 FreeBSD Jail 的部署环境,使我们在网络设计和调优上花费了大量时间。幸运的是,我们在本季度末成功建立了物理机上虚拟机的外部网络连接。剩下的挑战是让虚拟机能够通过 cloud-init 自动获取 IP 地址。

另外,我们尝试从基于 Linux 的 OpenStack 获取虚拟机的域 XML,以便与用于 bhyve 虚拟机的 XML 进行比较。这些域 XML 由 Libvirt 使用,定义了每个虚拟机的配置和操作参数。比较两者之间的差异有助于开发“bhyve 串口控制台通过 TCP”功能。

在明年的第一季度,我们将继续完成与里程碑 1 相关的任务。此外,我们将继续开发 FreeBSD Ports 以支持 OpenStack 组件,进一步整合和增强系统的功能。

赞助者:FreeBSD 基金会

容器与 FreeBSD:云原生构建包

联系方式:Robert Gogolok <gogolok@gmail.com>

云原生构建包 (CNBs) 将应用程序源代码转换为容器镜像。这些镜像可以在所有云平台上运行。通过构建包,组织可以将容器构建最佳实践的知识集中在一个专业团队中,而不是让组织内的应用程序开发人员单独维护他们自己的 Dockerfile。

几周前,我开始研究 FreeBSD 对构建包的支持。我的目标是在接下来的几个月内,推出可用的 lifecycle 和 pack 工具版本。

此前曾有尝试将 FreeBSD 支持引入构建包,例如对 lifecycle 的支持:

在查看这些更改后,我决定首先引入一些通用的清理步骤,以保持 FreeBSD 所需的变更尽可能小。

这使以下更改成功集成:

通过这些步骤,现在能在 FreeBSD 上编译 lifecycle。

接下来的步骤是:

  • 为 lifecycle 提供缺失的 FreeBSD 功能。

  • 进一步研究 FreeBSD 作为 lifecycle 构建目标的可行性。

  • 研究并使工具 pack 能在 FreeBSD 上编译和运行。

  • 通过 FreeBSD ports 提供 lifecycle/pack。

  • 探讨为一些流行语言提供 FreeBSD 构建包的想法,类似于 paketo 构建包。

EC2 上的 FreeBSD

链接:

EC2 启动性能随时间变化

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

可在 amd64(英特尔和 AMD)和 arm64(Graviton)EC2 实例上运行 FreeBSD。

在过去一个季度中,ZFS AMI 的首次启动性能有了显著改善,例如,15.0 base AMI 在 amd64 上的启动时间从约 22 秒减少到约 11 秒。现在能自动生成、发布启动性能的图表;典型的启动时间为 base 和 small AMI 约 9-12 秒,而 cloud-init AMI 为 14-18 秒。

在 Graviton 系统上,EC2 的 shutdown 和 reboot 操作现在已按预期工作(从 FreeBSD 14.2 开始)。在 Graviton 系统上,热插拔新设备(例如 EBS 卷)在 HEAD 中也能正常工作,相关支持预计将在 FreeBSD 14.3 版本合并。

赞助者:亚马逊

赞助者:https://www.patreon.com/cperciva

文档

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

文档工程团队

链接:

FreeBSD 文档项目

链接:

FreeBSD 文档项目新贡献者指南

链接:

文档工程团队

联系方式:FreeBSD 文档工程团队 <doceng@FreeBSD.org>

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

文档变更

  • 手册:

    • 添加有关自定义内核配置的警告。

    • 提及 Rocky Linux 9 用户空间。

    • 在 VMware 相关的设置指南中添加备注。

  • 提交者指南:记录“Discussed with”,改进“Fixes:”元数据。

  • Port 开发者手册:记录新的变量 TCL_ 。

  • 网站:删除土耳其语链接。

  • 文档库:

    • 添加 OpenBSD 7.6 手册页。

    • 更新 Debian 11/12 手册页。

Weblate 上 FreeBSD 的翻译

链接:

在 Weblate 上翻译 FreeBSD

链接:

FreeBSD Weblate 实例

2024 第四季度状态

  • 18 支语言团队

  • 215 名注册用户

1 位新翻译员加入 Weblate:

  • Sean Markham (西班牙语)

语言进展

  • 简体中文 (zh-cn) (进度:14%)

  • 繁体中文 (zh-tw) (进度:11%)

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

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

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

  • 希腊语 (el) (进度:1%)

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

  • 意大利语 (it) (进度:11%)

  • 韩语 (ko) (进度:30%)

  • 挪威语 (nb-no) (进度:1%)

  • 波斯语 (fa-ir) (进度:6%)

  • 波兰语 (进度:2%)

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

  • 巴西葡萄牙语 (pt-br) (进度:31%)

  • 僧伽罗语 (进度:1%)

  • 西班牙语 (es) (进度:39%)

  • 智利西班牙语 (进度:0%)

  • 土耳其语 (tr) (进度:5%)

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

请帮助在你的本地用户组推广此工作;我们始终需要更多的志愿者。

文档工程团队维护的软件包

在本季度,文档工程团队维护的以下软件包进行了更新:

  • www/gohugo:更新至 0.140.2

  • misc/freebsd-doc-ja:修复构建问题

待解决问题

在 Bugzilla 中有 1 个分配给文档工程团队的未解决 PR:

  • 276923 www/gohugo 在 poudriere 中的链接错误

Ports

涉及 Ports 的更改,无论是影响整个 Ports 的大规模更改,还是单个 Port 的更改。

Ports 无障碍性——弱视用户颜色支持

链接:

项目 Wiki 页面

联系方式:

FreeBSD 无障碍邮件列表 <freebsd-accessibility@FreeBSD.org>

Alfonso Sabato Siciliano <asiciliano@FreeBSD.org>

FreeBSD 通过 Ports 为用户和管理员提供了一种简便的应用程序安装方式。Ports 提供了成千上万的 Port;Port 配置是其核心功能之一。在构建和安装之前,可以配置 Port。命令 make config 使用文本用户界面(TUI)以交互方式设置 Port 选项。

最近,弱视用户(主要是白内障患者)要求新增功能,便于轻松改变 TUI 的颜色。已实现多个功能,可改变颜色,例如:通过设置环境变量将 UI 设置为黑白模式,或者在运行时通过读取配置文件来设置颜色。所有这些功能自版本 0.6.2 起都已在 portconfig(1) 中说明。

需要注意的是,盲人用户可以参考 PortOptsCLI - Ports 无障碍性,2023 年第三季度状态报告 来使用 Ports。

欢迎提出建议和新想法。如果可能,请将报告发送至 FreeBSD 无障碍性邮件列表,以便共享并跟踪公开讨论。

赞助者:FreeBSD 基金会

容器和 FreeBSD:AppJail、Director、OCI 等

链接:

AppJail GitHub

Director GitHub

LittleJet GitHub

Reproduce GitHub

联系方式:Jesús Daniel Colmenares Oviedo <DtxdF@disroot.org>

AppJail 是一款基于 BSD-3 许可证的开源框架,完全用 POSIX shell 和 C 编写,用于通过 FreeBSD Jail 创建隔离、便携且易于部署的环境,且这些环境表现得像一个应用程序。

Director 是一款工具,用于通过简单的 YAML 配置文件在 AppJail 上运行多 Jail 环境。Director 文件用于定义构成应用程序的一个/多个 Jail 的配置。有了 Director 文件后,就可以通过命令 appjail-director up 来创建并启动应用程序。

LittleJet 是一款开源的、易于使用的编排工具,用于管理、部署、扩展和互联全球各地的 FreeBSD Jail。

他们的目标是通过提供一个统一的界面,简化系统管理员和开发人员的工作,自动化 Jail 工作流,并结合 FreeBSD 的基本工具。

AppJail 及其所有元项目广泛遵循 The Ephemeral Concept,该概念有助于使 Jail 更新/升级变得更加容易,因为它们变得可丢弃。该概念在 AppJail 中实现后,我一直在广泛使用它来部署 Jail 服务。

尽管一直有很多优秀的人在研究 OCI,但本月的重点话题是 OCI,以及与此技术在 FreeBSD 中的进展,使其能够在 AppJail 中实现。最新版本添加了更多有用的功能,改进了现有功能,并且 实现了 OCI。

我还在不断添加更多 Makejails,这是个简单的文本文件,用于自动化部署服务到 Jail。如果你想贡献代码,可以访问我在 GitHub 上创建的组织 The Centralized Repository。最近的改进是将 BuildBot 实现为 AppJail 镜像的 CI/CD,因此对 BuildBot 跟踪的仓库所做的任何更改都会生成新的任务来构建和部署镜像到镜像站。如果镜像站不可用, appjail-reproduce 可以用来利用你自己的资源构建镜像。

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

改进 FreeBSD Ports 中的 Common Lisp 基础设施

联系方式:Joe Mingrone <jrm@FreeBSD.org>

Common Lisp(CL)是一种通用的多范式编程语言,最早在 1980 年代初期构思。尽管它比许多现代编程语言更早,但它仍然是许多不同项目的可行选择。一个当代的例子是 Grammarly,这是一个广泛使用的语法引擎,据说是用 CL 实现的,能够每秒处理超过一千个句子。

FreeBSD 的 ports 已经提供了 CL 支持多年。最初的工作由 Henrik Motakef 于 2003 年贡献,然后由 Jimmy Olgeni 强化和维护。该基础设施使得使用 ASDF 构建和安装 CL 库成为可能,从而可以加载多个 CL 实现的已编译目标代码文件(fasl),而不会发生冲突。

然而,多年来许多问题悄然出现。仅剩一个 CL 实现受支持,即 SBCL,而用户遇到了长期存在的 bug,例如 ASDF 版本冲突和加载树外库时的写入错误。此外,由于大多数基础设施代码都包含在 Port devel/cl-asdf 中,依赖关系管理非常繁琐。

本季度对 FreeBSD CL 基础设施进行了久违的更新。主要结果是用户可以再次轻松且可靠地在 FreeBSD 上使用 CL。例如,在 SBCL 下安装并加载流行的 Alexandria 库,只需要几个简单步骤。

类似的步骤可以用于加载另外两个新支持的实现: CCL 和 CLISP。大多数用户可能会更倾向于使用 Port fasl,尽管并没有强制要求。由于 ASDF 现在配置为回退到其默认的缓存机制,即将 fasl 写入 ${HOME} 下的缓存,用户还可以安装不带 Port fasl 的 CL 源代码 Port,或从树外加载 CL 源代码。

此更新的其他亮点包括:

详细信息,请参考以下提交日志:

计划在解决 ASDF 输出翻译问题后添加对 ECL 的支持,并为其他 CL 库创建 Port。欢迎反馈、测试和贡献。

赞助者:FreeBSD 基金会

FreeBSD Erlang 生态系统 Port 进展

链接:

FreeBSD Erlang wiki

Erlang/OTP 语言

Elixir 语言

Gleam 语言

联系方式:FreeBSD Erlang 邮件列表 <erlang@FreeBSD.org>

Erlang 运行时系统,通常称为 BEAM,提供了运行时环境,许多编程语言和应用程序都使用它,可以在 FreeBSD Ports 中找到这些应用程序。

在 2024 年的最后一次更新中,Erlang 生态系统团队忙于进行以下工作:

  • 对所有 Erlang/OTP 版本进行定期更新,以保持最新。

  • 更新了 Elixir 1.18.1、Gleam 1.6.3 和 RabbitMQ。

RabbitMQ 用户需要每季度更新,以避免停留在 Erlang/OTP + RabbitMQ 的不受支持版本上,而没有受支持的迁移路径。

请注意,由于上游的 Erlang OTP 团队只承诺支持两个最新的主要版本,OTP26-27 现在越来越多地收到点更新,但对于旧版 Erlang 运行时版本则不再更新,后者现在不太可能得到安全和 bug 修复。

Erlang 团队将把默认的 Erlang 运行时更新为 OTP26,并更新 lang/erlang,以及常见的依赖项和工具。

欢迎进行更多的测试和社区贡献;如果你能够帮助测试特定 Port 的更新,请通过邮件列表联系我们。

改进 FreeBSD 上的 OpenJDK

链接:

项目简介

联系方式:Harald Eilertsen <haraldei-fbsd@anduin.net>

该项目旨在通过与上游 OpenJDK 社区的合作,改善 FreeBSD 上对 Java 的支持,同时与 FreeBSD 社区合作,推动必要的更改和补充,确保完全支持 FreeBSD。

由于这是一个新项目,目前尚无太多进展报告,但迄今为止已取得以下成就:

赞助者:FreeBSD 基金会

FreeBSD 上的 Xfce

链接:

Xfce 4.20 上游发布公告

在 FreshPorts 上的 Xfce 元 Port

联系方式:

Xfce 团队 <xfce@FreeBSD.org>

Guido Falsi <madpilot@FreeBSD.org>

FreeBSD Xfce 团队(xfce@)致力于确保 Xfce 桌面环境在 FreeBSD 上的维护和功能完备。

本季度,Xfce 团队成员很高兴地欢迎 Xfce 4.20 加入 FreeBSD Ports!

此版本增加了许多稳定性改进和一些新功能。

该版本的上游工作重点是为 Wayland 支持做好代码库准备。

该版本带来了实验性的 Wayland 支持,尽管并非所有组件都已迁移,因此可能无法正常工作。

欲了解更多详细信息,请参阅 Xfce 4.20 上游发布公告。

FreeBSD 上的 LXQt

链接:

LXQt 项目

LXQt 项目 GitHub

联系方式:LXQt 团队 <lxqt@FreeBSD.org>

LXQt 是一款先进、易于使用且快速的桌面环境,基于 Qt 技术。它为重视简洁性、速度和直观界面的用户量身定制。与大多数桌面环境不同,LXQt 也能在低性能的机器上正常运行。

在本季度,元 Port x11-wm/lxqt 已更新至 2.1.0。此次更新为 LXQt 桌面增加了初步的 Wayland 支持。你可以 在此阅读一些发布亮点。

欢迎任何有兴趣帮助该项目的人。

当前版本:2.1.0

FreeBSD 上的 GCC

链接:

GCC 项目

GCC 11 版本系列

GCC 12 版本系列

GCC 13 版本系列

GCC 14 版本系列

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

将 GCC 默认版本从 13 更新到 14 的 exp-run 正在推进中。像往常一样,感谢所有参与的人员。

如果你维护着任何受影响的 Port,或想帮助准备和测试一些补丁,可以考虑在受影响的 Port 中将 -fpermissive 添加到 CFLAGS 作为临时解决方案:GCC 14 将一些警告转化为错误,这是导致许多构建失败的原因。参数 -fpermissive 会将这些错误转换回警告。然而,更好的方法是让上游更新其代码,以完全消除这些警告,从而不再需要 -fpermissive,可能需要 FreeBSD Ports 维护人员的支持。如果上游不再维护代码,可能是时候弃用该 Port 了。

一些错误修复也已完成,主要是上游修复:

感谢所有帮助解决这些问题的人。

Tor 浏览器

链接:

Tor 项目主页

GitLab 仓库

联系方式:Martin Filla <freebsd@sysctl.cz>

自上次报告以来,FreeBSD 上的 Tor 浏览器构建和打包工作取得了明显进展。此外,Tor 浏览器的版本已更新为 14.0.3,现已可以从 Tor 浏览器下载页面 和我们的 分发目录 下载。

此更新包含了对 Firefox 的重要安全更新,确保用户能够受益于增强的安全性和隐私功能。扩大 FreeBSD 兼容性仍然是优先事项,以便为平台提供无缝且原生的隐私解决方案。

新功能:Tor 浏览器版本 14.0.3 包含:

  • 基于 Firefox 128.5.0esr。

  • 从 Firefox 133 回溯的安全修复。

  • 针对平台的更新,如禁用 macOS 上的 Microsoft SSO 和更新 Android 的 GeckoView。

  • 在构建系统中将 Go 更新至 1.22.9。

需要帮助:为了进一步推进,需要以下方面的帮助:

代码审查:确保补丁符合所需的编码和安全标准。 测试:需要志愿者在 FreeBSD 上测试 Tor 浏览器 14.0.3 以识别边缘情况。 修复 bug:鼓励熟悉 FreeBSD 和 Firefox 代码库的开发人员解决已知问题。

反馈:如果发现 bug 或有改进此版本的建议,请通过 GitLab 仓库 或提供的联系电子邮件告知我们。

社区版 Greenbone 漏洞管理

链接:

Greenbone

Greenbone GitHub

联系方式:José Alonso Cárdenas Márquez <acm@FreeBSD.org>

Greenbone Community Edition (GVM) 包含 Greenbone Vulnerability Management 软件栈的实际源代码,也被称为 OpenVAS 扫描器,它提供了 160,000 多个漏洞测试的安全源、一款漏洞管理应用程序等。

在本季度,元 Port security/gvm 已更新至 24.1.2。此次更新包括以下内容:

可以使用 AppJail、makejail 和 https://github.com/AppJail-makejails/greenbone-openvas 进行快速的 GVM Jail 安装测试。

欢迎一切有兴趣帮助该项目或捐赠 aarch64 设备进行测试的人。

当前版本:24.1.2

FreeBSD 上的 Wazuh

链接:

Wazuh

联系方式:José Alonso Cárdenas Márquez <acm@FreeBSD.org>

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

Wazuh 解决方案包括一个端点安全代理,部署到被监控的系统,以及一款管理服务器,用于收集和分析代理收集的数据。此外,Wazuh 已完全与 Elastic Stack 或 OpenSearch Stack 集成,提供一个搜索引擎和数据可视化工具,使用户能够浏览其安全警报。

经过一段长时间的停滞,Port 已更新为 Wazuh 版本 4.9.2。此版本的 Wazuh 使用 Python 3.11 代替 3.10,并包括一些新特性:

  • 支持获取 Port 信息,

  • 支持获取进程信息,

  • 改进的内存信息,

  • FreeBSD 解码器和规则文件,以及

  • FreeBSD 安全配置评估文件,适用于 13.x、14.x 和 15-CURRENT。

此外,FreeBSD Port 包括了一个自定义版本的 wazuh-dashboard-plugins,以更好地与 FreeBSD 集成。

可以通过遵循 Wazuh AppJail-Makejails 教程轻松在 Jail 中安装 Wazuh。

欢迎任何有兴趣帮助该项目或捐赠 aarch64 设备进行测试/打包的人。

当前版本:4.9.2

待办事项:

  • 添加 Wazuh 集群模式基础设施 AppJail makejails

  • 向 FreeBSD Wazuh 代理添加漏洞检测支持

  • 将 FreeBSD 添加为 Wazuh Inc 官方支持的平台

  • 将 FreeBSD SCA 策略更新为新的 FreeBSD CIS 基准

一款用 Freepascal/Lazarus 编写的 bhyve 管理 GUI

链接:

Bhyvemgr

联系方式:José Alonso Cárdenas Márquez <acm@FreeBSD.org>

Bhyvemgr 是一款在 FreeBSD 上用 Freepascal/Lazarus 编写的 bhyve 管理 GUI。它需要一组主要安装在基本系统上的工具,以及一些从 Ports/软件包安装的工具。该应用程序旨在帮助桌面用户轻松快捷地在 FreeBSD 主机上设置和运行虚拟机。

在本季度,对 Bhyvemgr 进行了许多 bug 修复和改进。

添加的部分新功能包括:

  • 能在 CURRENT 上通过软件 (swtpm) 使用可信平台模块 (TPM)

  • 支持 Bootvars

  • 可修改 BIOS、系统、主板和机箱信息

  • 几乎所有桌面环境都支持系统托盘图标(已在 Plasma、Gnome、Xfce、LXQt 和 IceWM 中测试)

Bhyvemgr 仅支持 15-CURRENT 上的 aarch64 和 FreeBSD 13.x 至 15-CURRENT 上的 amd64。此外,bhyvemgr 可以:

  • 从 Ports 编译和安装,

  • 通过 pkg 安装,并支持 gtk2、qt5 和 qt6 界面。

欢迎任何有兴趣帮助或支持该项目的人。

当前版本:1.3.1

待办事项:

  • 在实际的 aarch64 硬件上进行测试(欢迎捐赠 aarch64 设备进行测试)

  • 添加串口设备支持

BSD-USER 4 LINUX

联系方式:Maksym Sobolyev <sobomax@FreeBSD.org>

链接:

项目页面

工具集

bsd-user-4-linux 项目将 QEMU 的 BSD 用户模式仿真移植到 Linux。主要目标是在现代 Linux 系统上运行未修改的 FreeBSD 二进制文件。此外,该项目还旨在提供多平台容器镜像,包含功能完备的 FreeBSD 环境和现成的 GitHub Actions 模板。

当前状态:

  • 初始移植成功运行 make -jN buildworld。

  • 大多数命令行工具按预期工作(如 sh、bash、find、grep、git、clang 等)。

  • GitHub Actions 流水线 为以下平台构建 x86_64 仿真镜像:

    • linux/386

    • linux/amd64

    • linux/arm/v5

    • linux/arm64/v8

下一步:

  • 实现容器集成。

你如何提供帮助:

  • 使用你偏好的工具链进行测试,报告问题或贡献修复。

  • 构建并测试非 x86_64 仿真镜像(例如,在 Linux/x86_64 上运行 FreeBSD/arm64)。代码在 BSD 上有效,但需要在 Linux 上测试。

  • 支持我们在 Patreon。

赞助者:Sippy Software, Inc.

第三方项目

许多项目在 FreeBSD 的基础上构建或将 FreeBSD 的组件集成到他们的项目中。由于这些项目可能对更广泛的 FreeBSD 社区感兴趣,我们有时会在季度报告中包含这些项目提交的简短更新。FreeBSD 项目不对这些提交中任何声明的准确性或真实性做出任何表示。

笔记本电脑和桌面工作组 (LDWG)

链接:

桌面邮件列表

维基页面

联系方式:Chris Moerz <freebsd@ny-central.org>

2024 年 10 月,笔记本电脑和桌面工作组 (LDWG) 正式成立,并亲切地被称为“Ludwig”。这一倡议为社区提供了一个协作平台,旨在促进开发、测试、知识交流和 FreeBSD 在笔记本电脑和台式电脑上的推广。欢迎所有有兴趣的人加入。

工作范围:

  • 内容创建:为关心 FreeBSD 在笔记本电脑和台式机上的应用的利益相关者开发录音、文章、教程、文档和系统配置。

  • 鼓励贡献:邀请开发人员、测试人员和行业专家,提升 FreeBSD 在笔记本电脑和台式机上的可用性。

  • 促进合作:推动代码贡献、测试工作、操作支持和硬件见解。

  • 支持用户故事和持续项目:协助创建、验证、优先排序和交付 FreeBSD 基金会“笔记本”投资工作包中识别的用户故事。

2024 年 11 月 16 日,LDWG 举行了首次虚拟会议。参与者包括开发者、贡献者、Discord 社区管理员、用户和 FreeBSD 基金会成员,体现了 FreeBSD 在笔记本电脑和台式机上的广泛兴趣。会议幻灯片、会议纪要和录音可在工作组的 维基页面 查阅。

会议期间,工作组识别了以下领域的优先缺口和潜在改进:

  • 控制台

  • 桌面环境

  • 文档

  • 硬件

    • 图形

    • 无线(WiFi 和蓝牙)

    • USB/雷电

  • 安装程序

  • 性能

  • 软件和 Ports 可用性

所有活动都已记录在 工作组的工作表 中。工作组鼓励一切有兴趣贡献的人添加自己的名字。如果有任何计划中的或正在进行的工作,请将其写到工作表中。

Alice Sowerby 提供了关于 基金会的笔记本项目 的更新,强调了需要志愿者来支持测试工作。

工作组正在进行一项 在线调查,以收集非参与者的反馈。调查将持续到 1 月的下次线上会议,届时将呈现并讨论结果。

希望在会议中见到你!

容器与 FreeBSD:Pot、Potluck 和 Potman

链接:

Pot 在 GitHub 上的组织

联系方式:

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

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

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

Pot 是一款 Jail 管理工具,还支持通过 Nomad 进行编排。Potluck 旨在成为 FreeBSD 和 Pot 的 Dockerhub,就像 Dockerhub 对 Linux 和 Docker 的作用一样:一个 Pot flavor 和完整容器镜像的仓库,供 Pot 使用,在许多情况下也可以与 Nomad 一起使用。

在本季度,Pot 没有发布新版本。该工具已经稳定,且已在生产环境中使用了一段时间。

Potluck 获得了一个新的 Netbox 镜像。此外,多个镜像也进行了改进和 bug 修复,例如改进了 syslog-ng 的集成。

最后,所有镜像已经多次重建:针对 FreeBSD 14.1,包含了安全修复,然后针对 14.2 和新的季度软件包再次重建。

一如既往,欢迎提供反馈和补丁。

赞助者:Nikulipe UAB,Honeyguide Group

最后更新于