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

FreeBSD 2024 年第二季度状态报告

引言

这是 2024 年的第二份状态报告,共包含 20 个条目。

这次状态报告的发布比平常困难许多:实际上已经延期发布了。问题在于,很多成员在 FreeBSD 项目内外都非常忙碌,因此某些报告迟到了,总报告的发布也就比往常晚。希望这只是一个例外,我们能在下一季度恢复正常,2024 年第三季度的报告预计于 2024 年 10 月发布。

祝阅读愉快。

Lorenzo Salvadore

代表状态团队

此致

FreeBSD 团队报告

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

FreeBSD 核心团队

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

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

202405 开发者峰会

核心团队在 202405 开发者峰会上发布了状态更新。详情请访问:https://wiki.freebsd.org/DevSummit/202405

Mike Karels 的逝世

我们沉痛地得知 Mike Karels 在近期逝世。我们向他的家人、朋友和社区表示诚挚的哀悼。Mike 是一位令人敬仰的开发者,我们将深深怀念他。

悼念 Mike Karels。

更多有关他的详细信息,请访问 FreeBSD 基金会:

https://freebsdfoundation.org/mike_karels/

2024 核心团队选举

第十二届核心团队任命了 Muhammad Moinur Rahman(bofh@)和 Allan Jude(allanjude@)为 2024 年核心团队选举的负责人。在 Allan 决定参选后,Moin 继续独立处理了所有选举事务。

选举结果公布于 6 月 12 日,选出了 8 名成员:

  • Allan Jude(allanjude@)

  • Dave Cottlehuber(dch@)

  • Gleb Smirnoff(glebius@)

  • 佐藤広生(hrs@)

  • 許立文(lwhsu@)

  • Mathieu Arnold(mat@)

  • Olivier Cochard(olivier@)

  • Tobias C. Berner(tcberner@)

Mike Karels 也参加了 2024 年核心团队选举,他在选举结果中位列前九。在讨论后,第十三届核心团队得出结论,由这八名成员组成新的团队。

第十三届核心团队于 6 月 12 日就任,并在 6 月 21 日和第十二届核心团队举行了交接会议。

FreeBSD 项目感谢即将卸任的第十二届核心团队成员在过去两年中的工作:

  • Baptiste Daroussin (bapt@)

  • Benedict Reuschling (bcr@)

  • Ed Maste (emaste@)

  • Greg Lehey (grog@)

  • John Baldwin (jhb@)

  • Emmanuel Vadot (manu@)

  • Mateusz Piotrowski (0mp@)

提交权限

  • 核心团队批准了 Osama Abboud(osamaabb@)的 src 提交权限

  • 核心团队重新启用了 Ryan Libby(rlibby@)的 src 提交权限

FreeBSD 基金会

链接:

FreeBSD 基金会

技术路线图

捐赠

基金会合作伙伴计划

FreeBSD 杂志

基金会活动

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

FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于服务和推广 FreeBSD 项目及全球社区,并推动 FreeBSD 的发展。我们通过技术手段和其他方式来达成这一目标。我们的资金完全来自个人和公司的捐献,这些资金将帮助我们维持:

  • 软件开发项目。在 FreeBSD 中开发功能和特性

  • 赞助和组织会议、开发者峰会。提供协作机会来推广 FreeBSD

  • 购买和提供硬件支持。改善和维护 FreeBSD 基础设施

  • 提供资源。改进安全性、质量保证和持续集成工作

  • 所需的材料和人员。推广、教育和宣传 FreeBSD

  • 商业供应商与 FreeBSD 开发者之间的合作

  • 代表 FreeBSD 项目执行合同、许可协议和其他需要认可法律实体的法律事项

在上个季度,我们协助庆祝了 FreeBSD 31 周年!FreeBSD 社区热衷于庆祝这样的里程碑事件。我们看到,不仅有越来越多的用户在社交媒体上分享他们的故事,许多商业用户也在积极推广他们的用例——并表达了他们对 FreeBSD 的热爱。看到 FreeBSD 的改进、用户和贡献者的增长,项目的发展真令人振奋。

在过去的几个季度,我们成立了技术、宣传和合作团队,以加快步伐,改进 FreeBSD 操作系统,提高其使用量、知名度,提升赞助支持我们工作的合作伙伴数量。

下面是每个团队的进展,可了解为服务我们所爱的社区和操作系统,我们所完成的工作。但首先,我想分享募款的进展。在上个季度,我们募集了 41,154 美元,募集目标是超过 2,000,000 美元。你可以在这里浏览我们 2024 年的预算,了解我们是如何使用你的捐款的:https://freebsdfoundation.org/wp-content/uploads/2024/03/Budget2024-Approved-Public.pdf。

有超过一半的预算直接用于改进 FreeBSD,并确保其安全性。如果发现安全漏洞,我们的软件开发人员可迅速介入,评估情况,并在需要时修改代码或提供临时解决方案。我们有一名全职开发人员主导持续集成工作,并研究改进测试代码的工具、提高测试覆盖率,帮助开发人员提高效率。我们还把更多资金用于宣传工作。比如编写内容来展现 FreeBSD 的优势和差异化特点,采访商业用户并记录其用例,推广社区所做的工作。

请考虑通过捐款来赞助我们的工作,以帮助保持 FreeBSD 的创新性、安全性和稳定性:https://freebsdfoundation.org/donate/。

如果你是公司客户,请考虑成为合作伙伴!可在这里了解更多关于我们合作机会的信息:https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/。

操作系统改进

在 2024 年第二季度,由 FreeBSD 基金会赞助的提交有 204 个 src 提交、50 个 ports 提交和 11 个 doc 提交。

基金会正赞助着 13 个项目。

  • Christos Margiolis 持续改进着 FreeBSD 的音频栈,并为音频开发者提供有用的工具和框架,以促进在 FreeBSD 上的音频开发。详情请参阅条目 音频栈改进。

  • Pawel Dawidek 正处于为 OpenZFS 添加分层速率限制项目的最后阶段。详情请参阅 OpenZFS 的分层速率限制 报告条目和 OpenZFS 存储库中的 PR。

  • 长期合同聘用的 Olivier Certner 活跃在源代码树的多个部分:

    • rtprio(2):将每个运行队列的队列数由 64 更新为 256

    • UnionFS:审查了 Jason A. Harmening 所做的工作。Jason 的工作修复了许多锁问题(未加锁的野访问、死锁等),尤其是 unionfs_rename() ,并改进了锁逻辑。

    • vnode 回收与 ZFS ARC 回收:审查了 bug #275594 的修复,联系了上游以获取和测试反向移植补丁,发布了勘误通知并将其应用为 13.3-RELEASE-p2。开始长期改进 vnode 回收机制,并让 ZFS 传递正确信息。

    • ULE 调度器:已更新为在单个(而非 3 个)运行队列上工作,以符合 POSIX 有关不同 SCHED_FIFO/SCHED_RR 优先级数量的规定。

    • 杂项:多项(26 个)审查、ports 更新和研究 DRM 问题。

    • 在 FreeBSD 期刊上发表了 EuroBSDCon 2023 会议报告。

  • Pierre Pronchery 继续与基金会合作开展一项以安全为中心的项目,其中包括:

    • 致力于开发从 VuXML 到 OSV 的转换工具

    • 使用 security/osv-scanner 自动生成所有 ports 的 VuXML 报告

    • 针对 bhyve 运行 Coverity Scan 报告,协助改正报告发现的问题

  • AMD 和 FreeBSD 基金会的合作项目在继续进行——开发一款完善的 FreeBSD AMD IOMMU 驱动程序。该工作将使 FreeBSD 能够完全支持大于 256 个核心,并配备诸如 CPU 映射等功能,还将涉及 bhyve 集成。Konstantin Belousov 一直在该项目的多个方面开展工作,涉及驱动程序附加、寄存器定义、ACPI 表解析器和实用函数。需要完成的两个关键组件是上下文处理(主要是将 Intel DMAR 代码通用化)和分页表创建。待完成后,可以开启 AMD 驱动的使能位进行测试。要跟踪 Konstantin 的所有工作,请查找带有 Sponsored by Advanced Micro Devices (AMD) 和 The FreeBSD Foundation 的 src 提交。

  • 矢量数据包处理器(VPP)是一款开源的高性能用户空间网络栈,提供了快速的数据包处理,适用于软件定义网络和网络功能虚拟化应用。Tom Jones 即将完成该项目的部分工作——将 VPP 移植到 FreeBSD。代码已与 RG Nets(该工作的联合赞助商)共享,以进行广泛测试。

  • Björn Zeeb 持续改进着 FreeBSD 的无线网络功能。与上个季度一样,重点主要放在错误修复和稳定性改进上。Björn 逾 30 次的源代码提交大部分都是针对 LinuxKPI 和 net80211 代码的。

  • Philip Paeps 正按一份每月 20 小时、为期六个月的合同,持续使 FreeBSD 集群现代化。这项工作包括将更多服务器迁移到我们在芝加哥 NYI 的最新集群站点。

  • Moin Rahman 目前承担着两份合同。Moin 即将完成一份有关互联网安全中心(CIS)加固指南的工作,并继续致力于建立预提交 CI 系统。

  • Mina Galić 继续努力使 FreeBSD 上的 cloud-init 支持达到与 Linux 同等水平。

  • Mitchell Horne 在 FreeBSD 开发者峰会上展示了他的 RISC-V 工作。你可在报告条目 FreeBSD/riscv64 中阅读相关最新进展信息。

  • 有关把 OpenStack 组件移植到 FreeBSD 主机上的项目的最新进展,请参考报告条目 Chih-Hsin Chang 的 OpenStack on FreeBSD。

其他的基金会技术团队成员也为 FreeBSD 的开发做出了贡献。例如,Mark Johnston 与 Andrew Turner 一起编写了构建 arm64 bhyve 客户机的扁平化设备树(FDT)的基本例程。FDT 描述了客户机操作系统需要了解的各种硬件组件,如 CPU、内存、串口、PCIe 控制器、中断控制器和平台计时器。Ed Maste 提交了多项源代码修改,包括现代化 tzsetup(8) ,修正了 diff(1) 选项的问题。許立文和 Joe Mingrone 在兼顾日常职责之余,也为多个 ports 提供了更新和修复,处理了紧急安全问题。

FreeBSD 正在参加连续第 20 届谷歌编程之夏。今年夏天的 11 个项目 进展顺利。

持续集成与工作流改进

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

合作与研究

在第二季度,基金会的合作负责人 Greg Wallace 参加了在西雅图举行的开源峰会活动。在那里,他参与了 Doug Rabson 关于 FreeBSD OCI Runtime Extension 工作组工作的演讲。你可以在这里查看。Greg 还利用此次活动与多家重要科技公司建立起联系,推动重大联合技术项目。Greg 为这次活动的撰文在此。

其他需求强烈的功能也正在继续开发。RG Nets 和其他公司在将 CUDA 及相关 AI 栈组件引入 FreeBSD 方面取得了很大进展。基金会正在寻求协调 FreeBSD 用户的方法,帮助在 FreeBSD 上提供多种 AI 技术的支持。一个想法是推出 FreeBSD AI 实验室,从支持者那里募集资金,用以全面支持 FreeBSD 上的 CUDA,完善 DPU(数据处理器)驱动支持。如果你想支持此项倡议,请联系我们。

我们还在继续借力 FreeBSD 社区的卓越工作——使 FreeBSD 支持 .NET,从而使其下游依赖项能够更好地支持 FreeBSD。关于这方面的更多信息即将发布。

感谢 Alpha-Omega 慷慨资助,FreeBSD 基金会委托 Synactiv 对重要子系统进行了两次代码审计。Alpha-Omega 是一项开源项目,其使命是通过推动对最关键的开源软件项目和生态系统的可持续安全改进来保护社会。可以在这里找到我们最近的月进展。代码审计将在七月完成,然后我们将进行流程审计,并启动双因素身份验证(2FA)试点。

在一、二季度,Greg 参与了几次有关各种政府法规的会议。今年三月,他代表 FreeBSD 参加了 美国网络安全和基础设施安全局(CISA)为期两天的开源软件(OSS)安全峰会,与其他 开放政策联盟(Open Policy Alliance,OPA)成员 一道参会。此前,Greg 与 OPA 合作,就美国政府如何支持开源安全性和可持续性向 CISA 的征求意见稿(RFC)提交了意见。在六月,FreeBSD 基金会加入了 Eclipse 基金会的 开放监管合规工作组(Open Regulatory Compliance Working Group)。该工作组旨在加速开发所需的网络安全流程,以实现监管合规,同时为整个开源社区提供了技术讨论的中立环境。

我们非常高兴地欢迎 Alice Sowerby 成为合同兼职的合作伙伴项目经理。Alice 是一位经验丰富、技能多元的领导者,目前活跃于多个开源领域。她是 CHAOSS 播客的联合主持人,也是 OSPO 书籍 TODO 小组审查团队的主席。Alice 正在为 Alpha-Omega、OCI FreeBSD Runtime Extension WG 和企业工作组等合作伙伴计划负责项目规划和管理工作。

宣传

在 2024 年第二季度,我们持续提升 FreeBSD 的受关注度,宣传 FreeBSD 的发展,展示用户,为 FreeBSD 社区带来教育信息。以下是我们的一些努力成果:

法律与 FreeBSD 知识产权

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

访问 https://freebsdfoundation.org,了解我们怎样保护 FreeBSD 和帮助你!

FreeBSD 发布工程团队

链接:

FreeBSD 14.1-RELEASE 公告

FreeBSD 13.4-RELEASE 计划

FreeBSD RELEASE

FreeBSD 开发快照

联系方式:FreeBSD 发布工程团队,re@FreeBSD.org

FreeBSD 发布工程团队负责安排和公布 FreeBSD 正式项目版本的发布时间表,宣布代码冻结并维护相应的分支等工作。

发布工程团队悼念了 Mike Karels 的逝世。Mike Karels 曾是 FreeBSD 副发布工程负责人,在去世前几天,他曾同意担任 13.4-RELEASE 的发布工程师。

发布工程团队管理了 14.1-RELEASE,且在 6 月完成了最终发布构建和公告。在今年第二季度,团队新增了成员:Ed Maste(副发布工程负责人)、Dave Cottlehuber、John Hixson、Mahdi Mokhtari、Doug Rabson、Muhammad Moinur Rahman。正规划 13.4-RELEASE 的发布周期。

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

集群管理团队

链接:

集群管理团队成员

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

FreeBSD 集群管理团队成员负责管理 FreeBSD 项目所需的机器,以便同步 FreeBSD 分布式工作和通信。

本季度,团队完成了以下工作:

  • 定期服务 FreeBSD.org 用户账户。

  • 为所有物理机和镜像不断地提供(和更换)磁盘和组件。

  • 更新集群软件。

  • 将集群服务迁移到芝加哥。

集群软件更新

除了软件包构建器和面向开发者的机器(“dogfood”),大多数 FreeBSD 集群都跟踪着 stable/X 分支。在本季度,我们开始将 stable/13 主机迁移到 stable/14。

在撰写本文时,集群中有 133 台物理机,其中 48 台运行着 current,64 台已更新到 stable/14。剩余的机器将在不久的将来进行升级或下线。在集群的 290 个 Jail 中,有 206 个运行着 stable/14。

将集群服务迁移到芝加哥

在年初,我们开始在芝加哥建立新站点。在本季度,我们开始下线新泽西州的旧机器,将服务迁移到芝加哥。我们的长期目标是使芝加哥成为我们的主要站点。完成此工作还需数月时间。

FreeBSD 官方镜像概览

目前的镜像服务器分布在以下地点:澳大利亚、巴西、德国、日本(两个完整镜像站点)、马来西亚、南非、瑞典、台湾、英国(完整镜像站点)、美国加利福尼亚州、芝加哥、新泽西(主站点)和华盛顿。

硬件和网络连接由以下组织慷慨提供:

我们始终欢迎新的官方镜像加入。我们发现了由全球互联网交换中心分发的单一镜像站的好处,我们现有的澳大利亚、巴西和南非的镜像证明了这一点。如果你与有意赞助单一镜像服务器的组织有所联系,或知道这样的组织,请联系我们。我们尤为关注美国西海岸和整个欧洲地区。

查看 通用镜像布局 可获取完整镜像站点规格,tiny-mirror 可了解单一镜像站点。

赞助者:FreeBSD 基金会和 Netzkommune

持续集成

链接:

FreeBSD Jenkins 实例

FreeBSD CI Tinderbox 视图

FreeBSD CI 工件存档

托管 CI 维基

第三方软件 CI

freebsd-testing@ 相关问题

FreeBSD CI 存储库

dev-ci 邮件列表

联系方式:

Jenkins 管理员 jenkins-admin@FreeBSD.org

許立文 lwhsu@FreeBSD.org

freebsd-testing 邮件列表

EFNet 上的 IRC #freebsd-ci 频道

在 2024 年第二季度,我们与项目贡献者和开发人员合作,帮助他们解决测试需求。同时,我们与外部项目和公司合作,推动他们在 FreeBSD 上做更多测试来改进产品。

已完成的重要任务:

正在进行的任务:

  • 设计和实施基于 CI 的构建和测试以及拉取/合并请求系统(以支持 工作流程工作组)

  • 正在进行概念验证系统。

  • 设计和实施使用 CI 集群构建发布工件,如发布工程所做的那样,从快照构建开始

  • 简化贡献者和开发人员设置 CI/test 环境的流程

  • 设置 CI 阶段环境并将实验性作业置于其上

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

已列出和待进行的任务:

  • 收集和整理 CI 任务和想法

  • 为运行测试的 VM 虚拟机设置公网访问

  • 实现使用裸金属硬件运行测试套件

  • 添加面向 -CURRENT 的 drm Port 构建测试

  • 计划运行 ztest 测试

  • 帮助更多软件在其 CI 管道中获得 FreeBSD 支持(维基页面:3rdPartySoftwareCI,HostedCI)

  • 与托管 CI 提供商合作以更好地支持 FreeBSD

请参阅 freebsd-testing@ 相关问题 了解更多进行中的信息,不要犹豫,加入这个工作吧!

赞助者:FreeBSD 基金会

Ports

链接:

联系方式:

Tobias C. Berner portmgr-secretary@FreeBSD.org

FreeBSD Ports 管理团队 portmgr@FreeBSD.org

Ports 管理团队负责把握 Ports 的整体方向、构建软件包以及人员管理等事项。以下是上季度发生的情况。

根据索引,目前 Ports 中共有 32,471 个 ports。目前约有 3,497 个正在进行的 ports PR。上季度,在主分支上有 160 位提交者进行了 10,525 次提交,在 2024Q2 分支上有 107 位提交者进行了 1,771 次提交。同上一季度相比,对 main 分支的提交数量大幅减少(从 12,991 次下降),对季度分支的反向移植也有所减少(从 888 次下降)。ports 数量则有所增加(从 32,244 增加)。

最活跃的 main 分支提交者是:

  • sunpoet:3739 次提交

  • yuri:1450 次提交

  • jbeich:491 次提交

  • eduardo:220 次提交

  • bofh:200 次提交

  • diizzy:197 次提交

  • rene:188 次提交

  • fernape:156 次提交

  • jhale:133 次提交

  • arrowd:129 次提交

在过去三个季度中,ports 中发生了很多变化,以下是一些主要软件的更新情况:

  • pkg 更新到 1.21.3

  • lazarus 的默认版本切换到 3.4.0

  • fpc 的默认版本切换到 3.2.3

  • python 的默认版本切换到 3.11

  • chromium 从 123.0.6312.86 更新到 126.0.6478.126

  • firefox 从 124.0.1 更新到 127.0.2

  • firefox-esr 从 115.9.0 更新到 115.12.1

  • rust 从 1.77.0 更新到 1.79.0

  • sdl2 从 2.6.3 更新到 2.8.2

  • wlroots 从 0.17.2 更新到 0.17.4

  • wine 从 8.0.2 更新到 9.0

  • wine-devel 从 9.4 更新到 9.11

  • xorg-server 从 21.1.11 更新到 21.1.13

  • qt5 从 5.15.13 更新到 5.15.14

  • qt6 从 6.6.3 更新到 6.7.2

  • kf5 从 5.115.0 更新到 5.116.0

  • kf6 从 6.0.0 更新到 6.3.0

  • plasma6 从 6.0.2 更新到 6.1.1

在上季度,pkgmgr@ 做了 24 次实验性运行,测试了各种 ports 更新、ports 默认版本更新、子软件包支持和基本系统变更。

项目

这些项目涉及了多个类别,从内核和用户空间到 Ports 和外部项目。

音频栈改进

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

FreeBSD 的音频栈是个不怎么受关注和开发的领域,因为它在很大程度上处于无人维护的状态,虽然其质量较高,但仍有改进空间——缺乏音频开发框架,缺少用户空间实用程序,内核驱动也有若干错误。这个项目旨在覆盖这些领域,因此这更多的是一项全面改进项目,而非实现特定功能。

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

未来的工作包括:

  • 实现实用程序 audio(8),类似于 mixer(8)。

  • 实现一款蓝牙设备管理实用程序。

  • 改进 mixer(3) 和 mixer(8)。

  • 在需要的地方改进文档和测试套件。

  • 尝试找到一种更好的(理想情况下,自动化的)方式来处理 snd_hda(4) pin 修补。这个实验性尝试可能不会得到实际的工作结果。

你还可以在 freebsd-multimedia@ 中跟踪开发进程,我会在那里发布周期报告。

赞助者:FreeBSD 基金会

FreeBSD GitHub PR 报告

链接:

GitHub 工作组 wiki 页面

FreeBSD 基本系统 PRs

联系方式:Warner Losh imp@FreeBSD.org

FreeBSD 项目一直在尝试通过 GitHub PR 接受贡献。在过去的一年里,我们从中学到了很多东西,并制定了一些与 PR 相关的规则。总体来说,PR 应该仅针对用户可见的内容、对项目有正向作用并且已准备就绪的改动,当然最终审核除外。

当前状态:

  • 我们能够通过每周最少一次的手动处理,来跟上 PR 的进度。

  • 我们发现手动处理过程繁琐且易错。

  • 我们可以在测试分支中分阶段处理多个 PR,以便批量进行测试。

  • 我们可以自动合并结果,以在 GitHub 基础设施中显示 PR 已合并。

我们需要在以下方面的帮助来自动化处理流程:

  • 添加上下文相关的自动化测试(例如,对 man 页进行 igor 测试)。

  • 添加能够测试启动生成镜像的构建/安装测试。

  • 将常见任务(如校正 man 页)自动化到阶段性处理过程。

  • 为一级架构的阶段性分支添加简单的冒烟测试(smoke testing)。

  • 研究是否可以选择性地集成 Jenkins 测试,以扩大我们可以接受的变更规模。

  • 将 Bugzilla 问题报告和 Phabricator 审查进行集成。

  • 通过自动化对 PR 中常见错误的反馈,来改善提交者在 GitHub 上的体验。

  • 创建提交者清单以减少错误。

  • 提供有关优秀 PR 的报告,尤其是那些频繁参与的优质 PR 贡献者。

我们正在 FreeBSD 的 Discord 服务器上的 #github-hacking 频道协调工作。欢迎加入我们来贡献你的力量,或只是聊一聊 FreeBSD。

待一切调整好,我们希望能通过宣传来鼓励贡献者至少在基本系统上使用 GitHub PR。我们需要更多开发人员来审查 FreeBSD 的 GitHub PR。待自动化成熟并全面展开,我们还将需要更多开发人员来审查和合并 PR。我们真切希望以这一努力,改善 FreeBSD 的贡献体验,并从社区收到有用的修复。

用户空间

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

Capsicum-rs

链接:

在 GitHub 上的 capsicum-rs capsicum-net 在 GitHub 上

联系方式:Alan Somers asomers@FreeBSD.org

Capsicum 是一款轻量级的操作系统能力和沙盒框架,采用混合能力系统模型。

我已接管了为 Capsicum 提供 Rust 绑定的库,并扩展了对 libcasper(3) 和 cap_net(3) 的支持。这个库已经在 net-mgmt/nfs-exporter 和一个支持 TLS 的 FTP 服务器中使用了(该 FTP 服务器是闭源的,但所有有趣的部分都位于开源库中,示例服务器在 https://github.com/bolcom/libunftp/tree/master/crates/unftp-sbe-fs/examples)。

赞助者:Axcient

服务 jail——自动将 rc.d 服务放入 jail

链接:

Service Jails rc-article 部分

联系方式:Alexander Leidinger netchild@FreeBSD.org

服务 jail 扩展了 rc(8) 系统,使其能够自动将 rc.d 服务放入 jail。服务 jail 继承了父主机或 jail 的文件系统,但默认情况下使用 jail 的所有其他限制(进程可见性、受限网络访问、文件系统挂载权限、sysvipc 等)。额外配置允许继承父主机的 IP、sysvipc、内存页面锁定以及使用 bhyve 虚拟机监视器 (vmm(4))。

基本系统基础设施和基本系统 rc.d 服务已提交到 15-current,rc 文章也已同步更新到文档。下一步是扩展 ports 中的服务,使其能够利用这一功能。

如果你想将诸如 nginx 放入服务 jail 并允许 IPv4 和 IPv6 访问,只需将 rc.conf(5) 更改为:

尽管它不具有独立文件系统和 IP/VNET 的手动 Jail 设置那样的安全优势,但它更容易设置,同时带来了一些 Jail 的安全性优势,如对同一用户隐藏其余进程。

欢迎一切测试和反馈(即使只是“service X 在服务 jail 中正常工作”)。

内核

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

OpenZFS 的分层速率限制

链接:

PR

联系方式:Pawel Dawidek pawel@dawidek.net

速率限制能限制每个数据集的带宽和元数据操作的数量。

分层速率限制能在共享环境中实现细粒度的资源控制,例如单个 ZFS 池为多个独立的虚拟机或 jail 提供数据的场景。

由于限制是分层的,它们的执行方式类似于配额属性:子数据集须受父数据集的限制。

可以使用六个新属性来配置限制:limit_bw_read、limit_bw_write、limit_bw_total、limit_op_read、limit_op_write、limit_op_total

limit_bw_* 属性分别限制数据集及其子数据集可以消耗的读取、写入或总带宽。这些限制以 B/s 为单位。limit_op_* 属性限制数据集及其子数据集可以生成的读取、写入或总的元数据操作数量。这些限制以每秒运算次数(operations per second,OPS)为单位。

这些限制适用于文件系统和 ZFS 卷(及快照)。

已完成起步工作,PR 已提交审核。

赞助者:Klara Systems

赞助者:FreeBSD 基金会

低成本条件执行机制

链接:

FreeBSD wiki

联系方式:

Marko Vlaić mvlaic@freebsd.org

Bojan Novković (导师) bnovkov@freebsd.org

该项目旨在实现一种低成本的条件执行机制,类似于 Linux 中的接口 static_key。当前的工作名称是 zcond,即零成本条件。其目的是减少在性能敏感的内核代码路径中,少用功能的开销。特别是,目标是以下简单结构的代码块:

类似代码块可能会在频繁执行的代码中产生性能开销。

该机制的驱动用例是跟踪(如 wiki 中所述),但该项目将研究此机制更广的可应用领域。

该机制的核心是运行时指令热补丁,使其高度依赖于架构。由于内核指令在运行时被覆盖,因此必须尤为关注安全性。更多详细信息和实现思路可以在 项目 wiki 中找到。随着项目的推进,将会产生更多关于实现和设计决策的文档。

项目的目标是为 x86-64 架构开发出一个可用的机制实现。然后,将其应用于现有的内核代码,并进行基准测试。若基准测试结果良好,再移植到其他架构。

该项目是 谷歌编程之夏 2024 的一部分。项目仍处于早期阶段,但一切反馈都将受到高度重视。

需要帮助

  • 关于机制、API 和实现的普通反馈

  • 欢迎提出跟踪以外的更多使用案例

  • 代码审查

  • 命名建议

赞助者:Google LLC(谷歌编程之夏 2024)

架构

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

FreeBSD/riscv64

链接:

Wiki 主页

联系方式:

Mitchell Horne mhorne@FreeBSD.org

Ruslan Bukin br@FreeBSD.org

Jari Sihvola jsihv@gmx.com

FreeBSD/RISC-V 项目正在为 RISC-V 指令集架构 提供支持。

BSDCan 开发者峰会更新

在 6 月的开发者峰会上,Mitchell 作为 BSDCan 2024 的一部分,展示了 FreeBSD/riscv64 平台的状态。演讲讨论了跟上不断发展的 RISC-V ISA 的挑战,并简述了一些可用的目标硬件。虽然形式较为非正式,但可在 YouTube 上观看。

https://www.youtube.com/watch?v=O7zW7Z9U0ns

StarFive JH7110 SoC, VisionFive v2

正在进行 FreeBSD JH7110 RISC-V SoC 的开发工作。该 SoC 搭载于几款现有的 RISC-V 单板计算机。主要支持对象是 VisionFive v2,但这项工作可能会对类似硬件如 Pine64 Star64 和 Milk-V Mars 有益。

目前,在 CURRENT 中开发完成了一部分。已完成的内容包含:

  • 串口

  • clk/reset 驱动

  • MMC/SD

下一个目标是实现以太网支持,这需要对 if_eqos 驱动进行增补。代码已功能就绪,但仍在审查中。

这项工作由 Jari 进行,Mitchell 负责审查、测试和集成。

https://wiki.freebsd.org/riscv/StarFive

T-HEAD(平头哥)和 XuanTie(玄铁)CPU 支持

如开发者峰会演讲中所述,这些 CPU 有多个使用障碍。问题主要来自于开发商的定制修改:带有自定义缓存管理指令的非一致性设备 I/O,以及自定义(不规范)的基于页面的内存类型实现。这些特殊之处要求对 pmap、busdma 和早期启动代码进行困难且侵入性变更。

同时,我们看到基于这些 IP 的硬件越来越多,因此支持成为一个反复出现的问题和动力。

正在进行基于页面的内存类型的工作,并预计很快会在 CURRENT 中实施。此功能允许为单独的虚拟内存页面分配特定属性,例如缓存要求。riscv64 pmap 已增补以支持官方的 RISC-V Svpbmt 扩展和 T-HEAD 版本的 PBMT。这些可选编码不兼容,但提供了类似的功能。

对设备一致性和缓存管理挑战的工作将在下个季度开始。

希望这些基础工作最终能够支持可用的 RISC-V 硬件,如:

  • Allwinner D1 (Nehza)

  • Sipeed Lichee Pi 4A

  • Beagle-V Ahead

  • Milk-V Pioneer

RISC-V 虚拟化(Hypervisor)支持

对 bhyve/vmm(4) 中的 RISC-V 虚拟化实验支持正在积极开发。目前,可以使用单 vCPU VM,且虚拟机能启动到多用户模式。

注意:“H”(Hypervisor,虚拟化扩展)未被任何现有已知的或即将出现的 RISC-V 硬件实现。软件模拟器(如 Spike、QEMU)完全支持它。

https://wiki.freebsd.org/riscv/bhyve

赞助者:FreeBSD 基金会(mhorne 的工作)

赞助者:UKRI(br 的工作)

云计算

更新云特定功能,并支持新的云平台。

在 Microsoft HyperV 和 Azure 上的 FreeBSD

链接:

FreeBSD wiki 上的 Microsoft Azure 文章

FreeBSD wiki 上的 Microsoft HyperV 文章

联系方式:

Microsoft FreeBSD 集成服务团队 bsdic@microsoft.com

freebsd-cloud 邮件列表

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

Wei Hu whu@FreeBSD.org

Souradeep Chakrabarti schakrabarti@microsoft.com

許立文 lwhsu@FreeBSD.org

在本季度,我们在 Azure Marketplace 上发布了 14.1-RELEASE。来自 Microsoft 的 Souradeep Chakrabarti 改进了 Azure 中的 TLB 刷新机制。

正在进行的任务:

以上任务由 FreeBSD 基金会赞助,Microsoft 提供资源支持。

待办事项

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

赞助者:FreeBSD 基金会(其他所有事宜)

FreeBSD 上的 OpenStack

链接:

OpenStack

FreeBSD 上的 OpenStack

联系方式:

Chih-Hsin Chang starbops@hey.com

許立文 lwhsu@FreeBSD.org

FreeBSD 上的 OpenStack 项目旨在将 OpenStack 云基础设施同 FreeBSD 操作系统集成,利用 FreeBSD 的独特功能,同时保持与 OpenStack 标准的兼容性。

在 2024 年第二季度,我们的项目进展得到了显著推进。我们的一项关键活动是参加 BSDCan 2024,在会上介绍了 “迈向稳健的基于 FreeBSD 的云:移植 OpenStack 组件”。这次演讲提高了项目的知名度,并吸引了潜在贡献者的关注。

我们将当前的单节点概念验证(POC)站点扩展到了三节点设置。涉及详细的环境设置和网络规划。此外,我们开始将基础迁移到 FreeBSD 15.0-CURRENT,以确保我们的项目与 FreeBSD 的最新进展保持一致。

我们还开始将手动安装步骤和代码补丁转化为 FreeBSD ports,以简化用户将来的安装流程。另一个重大里程碑是启动了在 FreeBSD 实例和 OpenStack Ironic 的服务主机上进行裸机供应的工作。

展望下个季度,我们将专注于完善这些进展,进一步增强项目的稳健性和易用性。特别是,我们计划将 OpenStack 组件从 Xena 版更新到更新版本,因为 Xena 已进入“不再维护”阶段,并将很快达到 EOL。我们欢迎社区的建议和贡献,以帮助我们实现目标。

赞助者:FreeBSD 基金会

文档

文档树、手册页和新的外部书籍和文档中的重要变更。

文档工程团队

FreeBSD 文档项目

FreeBSD 文档项目新贡献者入门指南

文档工程团队

联系方式:FreeBSD Doceng 团队 doceng@FreeBSD.org

doceng@ 团队处理与 FreeBSD 文档项目相关的一些元项目问题;更多信息请参见 FreeBSD Doceng 团队章程。

文档变更

在本季度,文档的多个部分得到了更新,比如删除了对已移除 port 的引用、修正了错别字、更新了链接并改进了 asciidoc。

以下是本季度的三个突出贡献:

在 Weblate 上的 FreeBSD 翻译

在 Weblate 上翻译 FreeBSD

FreeBSD Weblate 实例

2024 年第二季度状态

  • 17 个团队语言

  • 214 名注册用户

9 名新译者加入了 Weblate:

  • BFR (de_DE)

  • Elwood (de_DE)

  • Freebsd-Freund (de_DE)

  • MSantos (pt)

  • SINF-KEN (fr_FR, nl_NL)

  • aperechnev (ru)

  • edsonwolf

  • fdecunta (es_ES)

  • wheatfox (zh_CN, zh_HANS)

语言进展

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

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

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

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

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

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

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

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

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

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

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

  • 波兰语 (进度:2%)

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

  • 葡萄牙语 (pt-br) (进度:22%)

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

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

感谢所有为翻译和审阅文档做出贡献的人。

请将这一努力帮助推广到你当地的用户组,我们始终需要更多的志愿者。

DocEng 维护的包

在本季度,doceng@ 维护的包进行了以下工作:

未解决问题

在 bugzilla 中有 3 个分配给 doceng@ 的待解决 PR:

在本季度,doceng@ 关闭了 3 个 PR:

Ports

影响 Ports 的变更,无论是影响大部分软件的普遍变更还是单个 Port 本身。

FreeBSD 上的 GCC

链接:

GCC 项目

GCC 11 发布系列

GCC 12 发布系列

GCC 13 发布系列

GCC 14 发布系列

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

上游已发布 GCC 14.1。因此,已创建了 Port lang/gcc-14,同时创建了 lang/gcc15-devel,该 Port 跟踪着最新的开发 GCC 版本。之前的 GCC 主要版本也正在更新。

与之前报告中的计划相反,本季度在现有 GCC Port 的错误修复工作不多。这是因为,我发现上游对在 FreeBSD 上支持 GCC 的兴趣有所增加,但 GCC 的源代码在我们的平台上仍无法开箱即用,需大量补丁,这些补丁在我们的 Ports 中。因此,有必要集中精力将所有这些补丁推送到上游,最好一次性进行,而不是像之前那样逐个处理,再定期运行测试套件,来修复所有失败的测试。同时,我正在开发一个新的自动化设置,以尽可能高效地构建和测试所有受支持的 GCC 版本,包括从源代码(不使用 Port)构建 GCC。所有这些都显著减缓了常规的 GCC Port 维护工作(-devel Port 的用户可能已经注意到更新频率降低),但我相信,这最终会带来回报。

还需注意的是,Robert Clausecker 已为 riscv64 架构启用 lang/gcc11、lang/gcc12 和 lang/gcc13,因为这些 Port 在 15-CURRENT 上构建良好。

FreeBSD 上的 KDE

链接:

KDE/FreeBSD 计划

FreeBSD—KDE 社区 Wiki

联系方式:Adriaan de Groot kde@FreeBSD.org

FreeBSD 上的 KDE 项目负责把 CMake、Qt 及 KDE 社区的软件打包到 FreeBSD Ports。这些软件包括了一款完整的桌面环境,即 KDE Plasma(支持 X11 和 Wayland),以及数百个可在 FreeBSD 机器上使用的应用程序。KDE 团队 是 desktop@ 的一部分,构建软件堆栈,使 FreeBSD 成为美观且可用的日常图形桌面工作站。

我们上季度没有发布报告,在此期间,KDE 社区庆祝了 KDE Frameworks 6、KDE Plasma 6 和 KDE Gear 的 KDE Megarelease。最新的软件仍未在 FreeBSD 上提供,正在等待更多测试和某些集成工作。

基础设施

CMake 已更新多次,现在是版本 3.29.6,为上游的最新版本。Port 中的 CMake 现在支持为测试设置并行构建。

Qt5 现在处于长期支持状态,仅偶尔更新。5.15.14 的更新以及 WebEngine 到 5.15.17 的更新已在 5 月完成。

Qt6 和 Qt 的 Python 绑定库 PySide 均已更新到 6.7.2 版本。

KDE 堆栈

KDE Gear、Plasma 和 Frameworks 的发布非常规律。这些更新只是零散地进入 FreeBSD Ports,原因是兼容问题和测试工作滞后。

  • KDE Frameworks 更新到版本 6.3.0

  • KDE Plasma 6 桌面更新到版本 6.0.4

  • KDE Gear 6 尚未移植到 Ports

相关 Port

KDE 生态系统包含了大量的 Port,大多数由 kde@ 维护,所有 Port 都建立在 Qt 和 KDE Frameworks 的共享基础上。KDE 团队 根据需要更新所有这些 Port。本季度 KDE 团队再次感谢 Tobias C. Berner、Gleb Popov 和 Jason E. Hale 来保持最新状态。

FreeBSD Erlang 生态系统 Port 的更新

链接:

FreeBSD Erlang Wiki

Erlang/OTP 语言

Elixir 语言

Gleam 语言

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

Erlang 运行时系统,通常称为 BEAM,为 FreeBSD ports 中的多种编程语言和应用程序提供运行时支持。

2024 年的显著变化包括:

  • 添加 OTP27(最新发布的 Erlang 运行时)、Elixir 1.17 和 Gleam 1.20

  • 2024 年至今已有超过 57 个点发布更新

  • 改进了 Erlang Port 的内联文档

  • 将 RabbitMQ Port 迁移到由通用 UNIX 构建,从而与 Elixir 的构建时依赖解耦。这使得 RabbitMQ 可以迁移到最新支持的发布版本。RabbitMQ 用户需要每季度更新,以避免停留在不再受支持的 Erlang/OTP + RabbitMQ 发布版本上

请注意,由于上游 Erlang OTP 团队仅承诺支持两个最新的主要版本,OTP26-27 正不断地收到点更新,但较旧的 Erlang 运行时版本现在不太可能获得安全和错误修复。

在 2024 年第三季度,Erlang 团队计划:

  • 将基本的 lang/erlang Port 迁移到 OTP26,并更新相关依赖

欢迎其他测试和社区贡献,请在邮件列表中联系,尤其是,如果你能够帮助测试特定的 Port 更新。

第三方项目

有许多项目基于 FreeBSD,融入了 FreeBSD 组件。由于这些项目可能引发 FreeBSD 社区的广泛关注,我们有时会在季度报告中包含这些项目提交的简要进展。FreeBSD 项目对这些提交中的任何声明的准确性和真实性不做任何担保。

FreeBSD 与容器:Pot、Potluck 和 Potman

链接:

在 GitHub 上的 Pot 组织

联系方式:

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,提供 Pot flavor 和完整的容器镜像,用于 Pot 和许多情况下的 Nomad。

本季度没有发布新的 Pot 。

然而,Potluck 镜像再次看到了一些更新。所有镜像均已为新的季度包重构建,添加了一个新的 Opensearch 容器。额外的功能、更新和修复已提交到了 PostgreSQL-Patroni 和 Nomad-Server-TLS 等容器。

目前共有 58 个容器镜像和模板可用。

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

赞助者:Nikulipe UAB、Honeyguide Group

最后更新于