FreeBSD 2022 年第四季度状态报告

新的一年已经开始,以下是 2022 年的最后一份状态报告,包括 34 个报告。你还会注意到,首次引入了一个新的类别:云计算类别。随着 FreeBSD 紧跟最新的 IT 技术,涉及云计算的项目不断取得进展,因此它们被认为值得在状态报告中拥有自己的类别。

新类别并不是状态报告中唯一的变化。实际上,状态团队正在重新审视自己的工作流程,以提高效率。如果你是报告提交者,请确保仔细阅读状态团队编写的报告以及下一次报告征集邮件,以便了解最新的变动。

祝你阅读愉快。

Lorenzo Salvadore,代表状态团队。

FreeBSD 团队报告

可以在 管理页面 中找到来自各种官方和半官方团队的条目。

FreeBSD 核心团队

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

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

项目

核心团队章程

当前的核心团队与一些前核心团队成员正在一起草核心团队章程。12 月 3 日至 4 日,团队在美国举行了面对面的会议,讨论新章程。代表团将在 2023 年第一季度向核心团队其他成员展示并讨论细节。该代表团还于 12 月 5 日与 FreeBSD 基金会董事会进行了会议,讨论了合作细节。

实验性 Matrix 即时通讯解决方案

核心团队正在评估 Matrix 作为项目的即时通讯工具。这将使项目的沟通渠道不再依赖第三方服务。该服务将在稍后的日期提供给 FreeBSD 社区,以测试并评估其有效性。

提交者指南

弃用 BSD-2-Clause-FreeBSD,改用 BSD-2-Clause。有关更多信息,请参阅 提交内容

提交权限

  • 核心团队批准了 Zhenlei Huang (zlei@) 的 src 提交权限

  • 核心团队批准了 Corvin Köhne (corvink@) 的 src 提交权限

  • 核心团队批准了 Sumit Saxon (ssaxena@) 的 src 提交权限

  • 核心团队批准了恢复 Paweł Jakub Dawidek (pjd@) 的源代码提交权限。

FreeBSD 基金会

链接: FreeBSD 基金会 链接:https://www.freebsdfoundation.org 技术路线图 链接:https://freebsdfoundation.org/blog/technology-roadmap/ 捐赠 链接:https://www.freebsdfoundation.org/donate/ 基金会合作伙伴计划 链接:https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/ FreeBSD Journal 链接:https://www.freebsdfoundation.org/journal/ 基金会新闻与活动 链接:https://www.freebsdfoundation.org/news-and-events/

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

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

筹款工作

感谢所有在 2022 年做出财务贡献的人!我们仍在统计总额,很快就会公布最终数字。遗憾的是,我们未能达到筹款目标,这进一步强调了我们需要一个专门的人员来鼓励组织投资 FreeBSD。我们很快将雇佣一名人员来协助这一工作。

在本季度的状态报告中,你将读到我们在第四季度赞助的许多领域,以改进 FreeBSD 并宣传项目(我们主要的两个资金支出领域)。请查看关于内部和外部赞助项目的报告,如 FreeBSD 上的 Openstack、启用基于日志的软更新的文件系统快照、FreeBSD 作为 Tier 1 cloud-init 平台和 FreeBSD/riscv64 改进。此外,我们还提供了大量的社区参与和教育机会,无论是虚拟的还是面对面的!

如果你想帮助我们继续我们的努力,请考虑为我们 2023 年的筹款活动捐款!https://www.freebsdfoundation.org/donate/

我们还为大型商业捐赠者提供合作伙伴计划。你可以在 https://freebsdfoundation.org/our-donors/freebsd-foundation-partnership-program/ 阅读更多信息。

操作系统改进

在 2022 年最后一个季度,218 次源代码提交、45 次 Port 提交和 12 次文档树提交都标明了基金会为赞助方。这些工作在基金会赞助下也提交到了 FreeBSD 以外的代码库,例如,cloud-init 项目。一些由基金会赞助的工作在单独的报告条目中进行了描述:

  • FreeBSD 作为一级 cloud-init 平台

  • OpenStack 在 FreeBSD 上的项目更新

  • 无线报告

  • 启用使用日志化软更新的文件系统快照

其他基金会在 src 树中的工作包括:

持续集成和质量保证

基金会提供全职员工并赞助项目,以改善 FreeBSD 项目的持续集成、自动化测试和整体质量保证工作。你可以在单独的报告条目中阅读关于该工作的最新活动。

FreeBSD 宣传和教育

我们的大部分工作都专注于项目的宣传。这可能包括突出展示有趣的 FreeBSD 工作、制作文献和视频教程、参加活动或做演讲。我们制作的文献旨在教授 FreeBSD 基础知识,并帮助人们更轻松地走向采用或贡献的道路。除了参加和做演讲外,我们还鼓励并帮助社区成员举办自己的 FreeBSD 活动、做演讲或管理 FreeBSD 展台。

FreeBSD 基金会赞助全球许多会议、活动和峰会。这些活动可能与 BSD 相关、开放源代码,或面向弱势群体的技术活动。我们支持 FreeBSD 专注的活动,以提供一个分享知识、共同开展项目、促进开发人员与商业用户合作的场所,这一切都有助于提供一个健康的生态系统。我们还支持非 FreeBSD 活动,旨在推广并提升 FreeBSD 的认知,增加其在不同应用中的使用,并招募更多的贡献者参与项目。我们将继续亲自参加和虚拟参加活动,并计划举办 11 月的供应商峰会。除了参加和计划虚拟活动,我们还在不断推进新的培训计划,并更新我们的 操作指南,以便吸引更多的人尝试 FreeBSD。

查看我们上个季度的一些宣传和教育工作:

我们通过发布专业制作的 FreeBSD 期刊来帮助教育世界了解 FreeBSD。如前所述,FreeBSD 期刊现在是免费的出版物。了解更多信息并访问最新期刊,请访问 https://www.freebsdfoundation.org/journal/

你可以通过访问 https://www.freebsdfoundation.org/news-and-events/ 了解我们参加的活动和即将举行的活动。

法律/FreeBSD 知识产权

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

请访问 https://www.freebsdfoundation.org 了解更多关于我们如何支持 FreeBSD 以及我们如何为你提供帮助的信息!

FreeBSD 发布工程团队

链接: FreeBSD 12.4-RELEASE 时间表 链接:https://www.freebsd.org/releases/12.4R/schedule/ FreeBSD 12.4-RELEASE 公告 链接:https://www.freebsd.org/releases/12.4R/announce/ FreeBSD 13.2-RELEASE 时间表 链接:https://www.freebsd.org/releases/13.2R/schedule/ FreeBSD 14.0-RELEASE 时间表 链接:https://www.freebsd.org/releases/14.0R/schedule/ FreeBSD 开发快照 链接:https://download.freebsd.org/snapshots/ISO-IMAGES/

联系:FreeBSD 发布工程团队 <re@FreeBSD.org>

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

在 2022 年第四季度,发布工程团队完成了 12.4-RELEASE 版本周期的工作。这是 stable/12 分支的最终版本。在发布周期中,仅需要一个 BETA 版本和两个 RC(发布候选)版本;总体而言,发布周期非常顺利,并于 12 月 5 日成功发布。

在 2022 年第四季度,发布工程团队继续为 mainstable/13stable/12 分支提供每周开发快照版本。

在 2023 年第一季度,发布工程团队将开始处理即将发布的 13.2-RELEASE。

赞助商: Rubicon Communications, LLC ("Netgate") FreeBSD 基金会

集群管理团队

链接: 集群管理团队成员 链接:https://www.freebsd.org/administration/#t-clusteradm

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

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

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

  • 定期的集群软件升级 完成了两次全面升级,以修复和防止一些影响性问题(FreeBSD-EN-22:25.tcp 和 FreeBSD-EN-22:28.heimdal)。

  • 定期支持 FreeBSD.org 用户账户

  • 定期为所有物理主机和镜像站点提供硬盘和零部件支持(及更换)

  • 在我们的主站点进行站点审计

    • 对占用机柜空间的备件和其他杂项进行盘点。

    • 对电源分配单元(PDU)/电源插座使用情况进行盘点,并识别故障的电源单元(PSU)。

  • 识别并修复影响项目的主要 DNS 问题 托管在 HE.net 上的主 DNS 服务器发生了几天的故障,新的 DNS 服务器在全球范围内部署。感谢我们的赞助商 Metapeer 提供了 anycast 基础设施。

  • 在德国法兰克福部署新的镜像站点 替代了我们在阿姆斯特丹的镜像站点(该站点已停用)。前后镜像由 Equinix 托管和赞助。

  • 重用三台损坏的 CI 机器的零部件 目前没有替换,预计很快进行集群刷新。

  • 与 PowerPC 团队合作,改进 PowerPC 集群机器

    • 通过 FreeBSD 基金会购买的零部件,包括主板、NVMe 和 Power 9 CPU。

    • 修复并重新部署了前期的包构建机,作为 powerpc 和 powerpc64 包构建机。

    • 重新安装前期的 devref 机器,作为新的 powerpc64le 包构建机。

    • 集群目前只运营这两台 PowerPC 机器。

  • 多轮释放集群机器中的磁盘空间

  • 为邮件列表搭建实验性搜索引擎:https://lists.freebsd.org/search

  • 修复邮件列表归档器中的 bug,解决了一些链接损坏问题 所有邮件列表归档已重新生成。

正在进行的工作:

  • 在主站点进行大规模网络升级 新的 Juniper 交换机已到达主站点,用以替换旧设备。感谢 Juniper 的捐赠。

  • 替换主站点和一些镜像站点的旧服务器 除了损坏的 CI 服务器外,我们还拥有几台磁盘损坏和电源单元故障的旧服务器。此任务与 FreeBSD 基金会以及捐赠者/赞助商共同进行。

  • 为邮件列表搜索引擎创建新数据库,以支持通过 Mailman 时期的邮件归档进行搜索

FreeBSD 官方镜像站概览:

目前的镜像位置包括澳大利亚、巴西、德国、日本(两个完整镜像站点)、马来西亚、南非、台湾、英国(完整镜像站点)、美国(加利福尼亚、新泽西[主站点]、华盛顿)。

硬件和网络连接得到了以下单位的慷慨提供:

法兰克福单服务器镜像站点现在是欧洲的主要带宽和使用量镜像站。

我们仍在寻找一个新的完整镜像站点(五台服务器),以替代英国完整镜像站点的旧服务器。

我们在全球的互联网交换点(如澳大利亚、巴西和南非)看到单一镜像站点的模式非常好;如果你了解或在这些地方工作,能够赞助一个单一的镜像服务器,请联系我们。美国(西海岸)和欧洲(任何地方)是优选地点。

请参见 通用镜像站布局 以了解完整镜像站点规格,tiny-mirror 了解单一镜像站点的详细信息。

持续集成

链接: FreeBSD Jenkins 实例 链接:https://ci.FreeBSD.org FreeBSD CI 工件归档 链接:https://artifact.ci.FreeBSD.org FreeBSD Jenkins 维基 链接:https://wiki.FreeBSD.org/Jenkins 托管 CI 维基 链接:https://wiki.FreeBSD.org/HostedCI 第三方软件 CI 链接:https://wiki.FreeBSD.org/3rdPartySoftwareCI 与 freebsd-testing@ 相关的票务 链接:https://preview.tinyurl.com/y9maauwg FreeBSD CI 仓库 链接:https://github.com/freebsd/freebsd-ci dev-ci 邮件列表 链接:https://lists.FreeBSD.org/subscription/dev-ci

联系人:Jenkins 管理员 <jenkins-admin@FreeBSD.org> 联系人:許立文 <lwhsu@FreeBSD.org> 联系人:freebsd-testing 邮件列表 联系人:IRC #freebsd-ci 频道(EFNet)

FreeBSD CI 团队负责维护 FreeBSD 项目的持续集成系统。CI 系统检查提交的更改是否能成功构建,然后对新构建的结果进行各种测试和分析。这些构建的工件被存档在 工件服务器 中,以供进一步的测试和调试需求使用。CI 团队成员会检查构建失败和不稳定的测试,并与该领域的专家合作,修复代码或调整测试基础设施。

在 2022 年第四季度,我们继续与项目中的贡献者和开发者合作,满足他们的测试需求,并继续与外部项目和公司合作,改进他们的产品和 FreeBSD。

重要的已完成任务:

正在进行的任务:

  • 设计和实现提交前 CI 构建和测试(以支持 工作流工作组

  • 设计和实现使用 CI 集群构建发布工件,就像发布工程团队做的那样

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

  • 设置 CI 阶段环境,并将实验性任务放置在其中

  • 组织 freebsd-ci 仓库中的脚本,为合并到 src 仓库做准备

  • 改进硬件测试实验室,并添加更多硬件以供测试

待处理或排队的任务:

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

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

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

  • 添加 drm Port 构建测试,针对 -CURRENT 进行测试

  • 计划运行 ztest 测试

  • 添加更多外部工具链相关任务

  • 帮助更多软件在其 CI 流水线中获得 FreeBSD 支持(维基页面:3rdPartySoftwareCIHostedCI

  • 与托管 CI 提供商合作,提供更好的 FreeBSD 支持

请参见 freebsd-testing@ 相关的票务 获取更多正在进行的工作信息,并随时加入我们!

赞助商:FreeBSD 基金会

Ports

链接: 关于 FreeBSD Ports 链接:https://www.FreeBSD.org/ports/ 贡献 Ports 链接:https://docs.freebsd.org/en/articles/contributing/#ports-contributing FreeBSD Ports 监控 链接:http://portsmon.freebsd.org/ Ports 管理团队 链接:https://www.freebsd.org/portmgr/ Ports Tarball 链接:http://ftp.freebsd.org/pub/FreeBSD/ports/ports/

联系人:René Ladan <portmgr-secretary@FreeBSD.org> 联系人:FreeBSD Ports 管理团队 <portmgr@FreeBSD.org>

Ports 管理团队负责监督 Ports 的整体方向、构建软件包(通过其附属团队 pkgmgr)和人事事务。以下是过去一个季度的工作内容。

目前,Ports 中有 31,000 余个 Port。当前大约有 2900 个开放的 Port PR,其中近 800 个未分配。上个季度,主分支上有 159 个提交者提交了 8194 次提交,而 2022Q4 分支上有 53 个提交者提交了 657 次提交。与前一个季度相比,这意味着可用 Port 数量略有增加,但开放 PR 的数量也增加,同时提交的次数有所减少。

在人事方面,我们欢迎了 Ronald Klop (ronald@),并告别了 bar@ 和 bhughes@。我们在成功的潜伏期后,欢迎 pizzamig@ 成为新官方成员。我们还欢迎了三名新的潜伏者:bofh@、ler@ 和 ygy@。

Portmgr 团队分为 portmgr 和 pkgmgr。新的 pkgmgr 团队,目前由 antoine@ 和 bdrewery@ 组成,负责构建软件包并维护软件包构建集群。

引入了四个新的 USES:

  • llvm 用于规范化 Port对 LLVM 的依赖

  • luajit 用于选择 LuaJIT 运行时

  • octave 用于帮助 Port依赖于 Octave 和 Octave-Forge

  • tex 用于定义 TeX 及其各种组件的依赖

以下是默认版本的更新:

  • Firebird 更新到 3.0

  • GCC 更新到 12

  • Lazarus 更新到 2.2.4

  • Lua 更新到 5.4

  • PHP 更新到 8.1

  • Samba 更新到 4.13

  • Varnish 更新到 6

  • LuaJIT 新增,并为 PowerPC64 设置为 "luajit-openresty",其他架构设置为 "luajit-devel"

引入了三个新特性:PIE、RELRO 和 BIND_NOW。每个 Port 可以通过设置变量 <feature>_UNSAFE 选择退出这些特性。用户可以通过设置 WITH_<feature>WITHOUT_<feature> 来全局启用或禁用这些特性。

以下是更新到新版本的主要 Port:

  • Chromium 108.0.5359.124

  • Electron 18.3.11、19.0.15 和 21.2.0

  • Firefox 108.0.1

  • Firefox-ESR 102.6.0

  • gcc 12

  • KDE Plasma 5.24.7,Frameworks 5.101.0,Applications 22.12.0

  • Qt 5.15.7 和 6.4.1

  • Rust 1.66.0

  • SDL 2.26.1

  • Sway 1.8

  • wlroots 0.16.1

  • Wine 7.0.1

exp-run 报告已恢复。在上个季度,antoine@ 运行了 38 次 exp-run 来:

  • 测试 Port 更新

  • 更改默认版本

  • 识别 Port 中对 IPPROTO_DIVERT 的使用

  • 支持在 FreeBSD 14 中使用 Python PF_DIVERT

状态报告:新工作流程

链接: FreeBSD 状态报告 链接:https://www.freebsd.org/status/ 状态报告 GitHub 仓库 链接:https://github.com/freebsd/freebsd-quarterly

联系人:<status@FreeBSD.org>

新工作流程的目标

本季度,状态团队与 doceng@ 就改进工作流程进行了讨论。特别是,团队试图将其 GitHub 仓库合并到 FreeBSD doc/ 仓库中。

进行此更改的原因如下:

  • 拥有两个独立的仓库需要花费一些时间确保两者同步,这一过程目前是手动完成的。例如,查看 https://github.com/freebsd/freebsd-quarterly/commit/4b8255e604dd0513e841aa8f3dce7741e78b999c 等提交,其提交信息并不清晰地说明正在做什么,除非花更多时间正确复制提交信息;

  • FreeBSD doc/ 仓库是自托管的,而状态仓库托管在 GitHub 上。由于自托管仓库的内容是镜像的,合并仓库后不会失去任何可见性。

还发现了一些关于团队名称的不一致:团队曾被称为 quarterlyquarterly status teamstatusstatus teammonthly 等。所以这个问题也在解决中。

请注意,我们仍在进行这些更改,可能无法在下一个季度内完成。状态团队将确保及时更新所有报告提交的信息,以便你始终知道如何提交报告。

团队命名

由于 quarterly 可能既指季度报告,也指季度分支,仅使用 quarterly 可能在某些上下文中引起混淆。quarterly-status 也可能是一个不好的选择,因为报告发布的频率可能在未来需要变化。因此,选择了仅使用 status:这是正确的,因为季度状态报告包含有关 FreeBSD 开发状态的信息,具有与其 FreeBSD 网站部分 一致的频率中立性。

以下 电子邮件地址已创建

  • 状态团队的主要联系地址现在是 <status@FreeBSD.org>。发送到 quarterly@FreeBSD.org 的邮件仍会到达团队,但建议使用新地址;

  • 状态报告提交的电子邮件地址现在是 <status-submissions@FreeBSD.org>。发送到 quarterly-submissions@FreeBSD.org 的邮件仍会到达团队,但建议使用新地址;

  • quarterly-calls 邮件列表已更名为 status-calls。如果你已经订阅了 quarterly-calls,则无需重新订阅。

报告提交

将提供三种提交报告的方式:

在这些渠道上的审阅过程将按照通常的方式进行。

其他变更

  • 仓库合并将需要重新设计一些现有工具,以更好地与 FreeBSD doc/ 仓库的现有结构集成。

  • 待新工作流程实施完成,将归档 状态报告 GitHub 仓库

项目

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

控制台屏幕阅读器基础设施

链接: 控制台语音服务守护进程 链接:https://reviews.freebsd.org/D35776 控制台屏幕阅读器的内核支持 链接:https://reviews.freebsd.org/D35754 基本系统可访问性愿望清单 链接:https://wiki.freebsd.org/Accessibility/Wishlist/Base

联系人:Hans Petter Selasky <hps@selasky.org> 联系人:FreeBSD 可访问性讨论 <freebsd-accessibility@freebsd.org>

该项目旨在为 FreeBSD 提供一个非常基础的屏幕阅读器,供在控制台模式下(无 GUI)使用。这是一个重要的第一步,帮助使用语音访问计算机的系统管理员,避免他们之前需要第二台计算机运行终端模拟器来安装或配置 FreeBSD 服务器或基于字符的桌面计算机。

2022 年的第三和第四季度,项目进行了基本设计和一些功能测试,结果看起来很有前景,并发布了详细的测试请求和安装程序

此项目需要以下方面的帮助:

  • 代码审查

  • 可用性测试

  • 与 FreeBSD 安装程序的集成。

赞助商:NVIDIA 网络(用于内核开发部分)

Vessel - FreeBSD 的集成应用容器

链接: Vessel 链接:https://github.com/ssteidl/vessel

联系人:Shane Steidley <ssgriffonuser@gmail.com>

Vessel 是什么?

Vessel 的目标是向应用开发者展示 FreeBSD 的许多强大功能。Vessel 实现这个目标的方式包括:

  • 提供一个“类似 Docker”的接口,让大多数应用开发者都能熟悉,用于构建、运行、发布和拉取容器镜像。

  • 紧密集成 FreeBSD 系统级接口(如 kqueue 进程跟踪、信号处理、devd.seqpacket、rctl、cpuset)来管理运行中的 jail 。

Vessel 与其他 jail 管理系统有何不同?

已经有一些出色的 jail 管理系统。这些现有系统非常擅长配置 jail 的运行时环境(如 ZFS 数据集、网络、资源控制等)。然而,环境配置完成后, jail 只是通过 exec 调用交给 jail 程序。

除了 jail 配置和创建外,Vessel 旨在迈出下一步,实施一个事件循环,基于系统事件管理 jail 。每个 jail 旁边都运行一个 Vessel 实例,帮助进行管理。这使得“胖 jail ”和单进程 jail 可以在前台运行,并由 vessel-supervisor 进行管理。

为什么要创建 Vessel?

Vessel 已经做了几年作为一个副项目。我最初开始它是因为它是一个有趣的爱好项目,并且我感到类似的东西居然没有现成的。现在它已经成为一个可行的工具,我在所有项目中都使用它。我相信它也会对其他人有用。

需要帮助吗?

帮助总是受欢迎的。它是一个有趣的项目,因为它涉及到 FreeBSD 的多个部分。

  • 仅使用它并报告 GitHub 上的任何错误就非常有帮助。

  • 任何有趣的事情,我也很乐意帮助大家入门。

使 NFS 服务器能够在 vnet jail 中运行

链接: 主代码补丁 链接:https://people.freebsd.org/~rmacklem/vnet.patch 简单的设置文档 链接:https://people.freebsd.org/~rmacklem/nfsd-vnet-prison-setup.txt

联系人:Rick Macklem <rmacklem@freebsd.org>

FreeBSD 的一些用户提出了在 vnet jail 中运行 NFS 服务器的需求。这变成了一个小项目,现在我已经有了一个可以实现此目标的补丁。它目前可通过上面的链接进行测试,或者在 Phabricator 上作为 D37519 进行测试。如果没有这个补丁,NFS 服务器无法在 jail 中运行。

上述补丁没有包括在 vnet jail 中运行 rpc.tlsservd(8)nfsuserd(8) 守护进程的能力。我现在已经有补丁允许这些守护进程与 mountd(8)nfsd(8) 一起在 vnet jail 中运行,但我希望在添加对 rpc.tlsservd(8)nfsuserd(8) 的支持之前,先将上述补丁合并到主分支中。

目前,代码需要进行审查和测试。希望在接下来的几周内完成,以便将补丁提交到 main 分支,并可能也会 MFC 到 stable/13

待办事项

Pytest 对 FreeBSD 测试框架的支持

链接: 初始审查 链接:https://reviews.freebsd.org/D31084 测试示例 链接:https://cgit.freebsd.org/src/tree/tests/examples/test_examples.py

联系人:Alexander Chernikov <melifaro@FreeBSD.org>

atf(7) 的原生 pytest 支持增强了 FreeBSD 测试套件的功能。

Pytest 通过减少模板代码的编写量来简化测试编写。它相对于现有的 atf-c 和 atf-shell 绑定具有几个优势。其中最重要的是测试参数化,它允许通过几乎不写任何代码来提高覆盖率。另一个优势是丰富的断言系统,提供详细的错误描述。Python 的 atf(7) 支持附带了一些抽象化的库,用于处理一些常见任务。例如,在 VNET jail 内运行测试,使用 epair(4) 只需添加一行代码。这类助手在网络领域尤其有用,在那里,具有复杂 VNET 设置的测试并不罕见。

当前状态

Python 支持已经提交到 HEAD 版本。目前,大约 80 个测试使用 Python 框架,并且数量还在增长。示例测试已被提交,用于展示典型情况的处理。

下一步

  • 增加框架的采纳

  • 将一些旧的 Python/shell 测试重写为 pytest(欢迎提供帮助)

用户空间

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

基本系统 OpenSSH 更新

链接: OpenSSH 链接:https://www.openssh.com/ OpenSSH 9.1 发布说明 链接:https://www.openssh.com/txt/release-9.1

联系人:Ed Maste <emaste@freebsd.org>

OpenSSH,一个远程登录和文件传输工具集,已从版本 9.0p1 更新到 9.1p1,更新已经包含在 FreeBSD 基本系统中。

该更新已合并到稳定分支,并在 FreeBSD 12.4 中提供,并将出现在即将发布的 FreeBSD 13.2 中。

一系列错误修复和小幅改进已提交至 OpenSSH 上游,这一过程将在后续更新中继续进行。

赞助商:FreeBSD 基金会

内核

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

在使用日志化软更新的文件系统上启用快照

链接: 里程碑 1 核心更改 链接:https://reviews.freebsd.org/D36491

联系人:Kirk McKusick <mckusick@FreeBSD.org>

该项目的目标是在启用日志化软更新的情况下,使 UFS/FFS 文件系统能够进行快照。

首先,背景介绍。自 1990 年代中期以来,软更新已在 UFS/FFS 中提供。它们消除了大多数同步磁盘写入的需求,并保持文件系统的状态足够一致,以便在崩溃后可以将其恢复在线,而无需运行 fsck(8)。然而,它可能错误地假设某些块仍在使用,而实际上它们是空闲的。因此,最终仍然需要将文件系统下线并运行 fsck(8) 来回收这些丢失的块。运行 fsck(8) 的时间取决于文件系统中的文件数量和文件系统的大小。大型文件系统可能需要数小时才能完成 fsck(8)。

启用日志化可以将 fsck(8) 在崩溃后清理文件系统的时间减少到几秒钟。使用日志化时,崩溃后恢复的时间取决于崩溃前一分钟内文件系统中的活动量。日志恢复时间通常只有几秒钟,且通常不会超过一分钟。

使用日志化的缺点是,写入日志会给包含文件系统的存储介质增加额外的写入负载。因此,写密集型工作负载会导致运行日志化的文件系统的吞吐量降低。

像所有日志化文件系统一样,日志恢复仅会修复日志已知的问题。具体来说,如果发生介质错误,日志将无法识别,因此无法修复。因此,在使用日志化时,仍然需要每隔几个月或在文件系统发生崩溃后,运行一次完整的 fsck 来检查和修复由介质故障引起的任何错误。

完整的 fsck(8) 通常在下线文件系统上执行。然而,也可以通过在实时文件系统的快照上运行 fsck(8) 来进行。当在实时文件系统上后台运行 fsck(8) 时,在后台 fsck(8) 运行时,文件系统的性能大约是正常的 50%。在 UFS 文件系统上运行完整的 fsck 等同于在 ZFS 文件系统上运行 scrub。

该项目的第一阶段已经完成。现在,在启用日志化软更新的情况下,可以进行快照,并且这些快照可以用于在实时文件系统上执行后台转储。

该项目的第二阶段是扩展 fsck(8),使其能够使用快照在启用日志化软更新的文件系统上进行后台检查。预计该阶段将在 2023 年第三季度完成。

赞助商:FreeBSD 基金会

更新无线

链接: Bjoern 的无线工作进展页面 链接:https://people.freebsd.org/~bz/wireless/

联系人:Bjoern A. Zeeb <bz@FreeBSD.org>

在这个季度,公开可见的工作不多,并且承认进展稍显缓慢。但在幕后,无线工作正在两个方面进行:

  • 11n、11ac 和 wpa,

  • 更多的驱动程序和固件,问题,测试,以及为此填补的空白。

尽管新标准的主要开发和 Intel iwlwifi 驱动程序的工作得到了 FreeBSD 基金会的赞助,但我发现自己现在也花费了大量私人时间在 Realtek rtw88 和 rtw89、Atheros 和 Mediatek mt76(7921 和 7915)驱动程序上。为了不破坏其他驱动程序,我在裸机和使用 bhyve 虚拟机的 passthru 测试中花费了更多时间,并且支持的芯片组数量在不断增加。即使是同一驱动程序支持的不同(代)芯片组,有时在相同的更改下也会表现不同。

我还收到了一次关于为已有驱动程序以及即将发布的更多驱动程序添加固件的问题的讨论。需要解决的“鸡与蛋”问题是如何确保在发布媒体上提供固件;没有固件,许多现代笔记本电脑在安装时的默认配置下将无法进行任何外部通信。这将是一个需要更大讨论的话题,涉及如何为其他驱动程序解决固件问题,但这将是另一个时间和地点的讨论。

稍微晚些时候,我已经开始将 LinuxKPI 和 802.11 更改推送到树中,工作将在年末继续,2023 年初时,更多前述的剩余驱动程序也将加入到树中。

目前需要解决的主要问题之一是,至少在两个驱动程序上,固件在接口下线/上线周期中崩溃的问题。

幸运的是,在过去的几周里,在我呼吁帮助之后,许多人站出来希望帮助处理各种驱动程序(特别是 Realtek 和 Mediatek)。我希望在我赶上进度并推动工作后,进展能够再次加速。

再次感谢所有进行测试、提供调试输出、发送反馈或使用这些驱动程序的人。

要了解开发的最新状态,请使用 freebsd-wireless 邮件列表,并查看着陆页面,该页面提供了每个驱动程序状态的所有 wiki 页面链接。

赞助商:FreeBSD 基金会

链接: 初步评审 链接:https://reviews.freebsd.org/D36002 Netlink 讲座 链接:https://static.ipfw.ru/files/netlink.pdf

联系人:Alexander Chernikov <melifaro@FreeBSD.org>

Netlink 是一个在 RFC 3549 中定义的通信协议。它是一个异步的基于 TLV 的协议,提供内核和用户空间之间的 1 对 1 和 1 对 多 的通信。Netlink 当前在 Linux 内核中用于修改、读取和订阅几乎所有的网络状态。接口状态、地址、路由、防火墙、规则、FIB 等都通过 Netlink 进行控制。

POSIX 定义了基础功能/系统调用的 API,但对于大量的协议/设备级别/子系统级别的 ioctl 并没有类似的标准。每个子系统/驱动程序都自行发明自己的协议、处理格式和兼容性。扩展性是网络控制平面中的一个显著问题。例如,在不破坏兼容性的情况下,很难为路由套接字消息添加属性。

Netlink 通过提供一个标准的通信层和易于扩展的消息格式化,提供了统一性。它可以作为一个“中介”,自动将来自不同来源的请求数据合并为单个请求(例如:接口状态转储)。Netlink API 降低了应用程序开发者支持 FreeBSD 的门槛,同时提供了所需的扩展性。

当前状态

Netlink 已经被提交到 HEAD。该代码实现了 NETLINK_ROUTE 子系统和 NETLINK_GENERIC 框架的一个子集。

NETLINK_ROUTE 支持路由、下一跳和链路层地址的添加/删除/替换操作。对于接口地址和接口,部分支持已实现。

Linuxulator 对 Netlink 的支持已经提交到 HEAD。可以使用未修改的 iproute2 工具中的 ip 来操作路由、下一跳、地址和接口。

提供便捷抽象的简单用户空间库 snl(3) 已经提交到 HEAD。

第一个第三方软件 BIRD 添加了实验性的 FreeBSD Netlink 支持

下一步

  • 将 Netlink 添加到 GENERIC

  • 使 netstat/route/arp/ndp/ifconfig 使用 Netlink 接口(欢迎提供帮助)

  • 将 FreeBSD Netlink 支持添加到 FreeRangeRouting(FRRouting (FRR))的 Port 中。

向 ddb 添加基本的 CTF 支持

链接: diff 1 链接:https://reviews.freebsd.org/D37898 diff 2 链接:https://reviews.freebsd.org/D37899

联系人:Bojan Novković <bojan.novkovic@kset.org>

该项目的目标是扩展 ddb 内核调试器,使用内核的紧凑 C 类型格式(CTF)数据,并利用新增的功能在 ddb 中实现一个漂亮打印命令。

由于执行环境的限制(没有 IO 或内存分配),ddb 无法使用现有的内核链接方法来检索内核的 CTF 数据。因此,第一个补丁添加了在启动时加载内核 CTF 数据的功能,并添加了一种新的内核链接方法,用于从 ddb 访问 CTF 数据。第二个补丁添加了一个使用 CTF 数据的基本接口,并构建了一个基于新增接口的漂亮打印命令。

欢迎任何反馈、评论和评审,我们将不胜感激。

架构

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

CheriBSD 22.12 发布

链接: CheriBSD 链接:https://www.cheribsd.org CheriBSD 公告列表 链接:https://lists.cam.ac.uk/sympa/info/cl-cheribsd-announce

联系人:Brooks Davis <brooks@FreeBSD.org> 联系人:Edward Tomasz Napierala <trasz@FreeBSD.org> 联系人:George Neville-Neil <gnn@FreeBSD.org> 联系人:Jessica Clarke <jrtc27@FreeBSD.org> 联系人:John Baldwin <jhb@FreeBSD.org> 联系人:Robert Watson <rwatson@FreeBSD.org> 联系人:Ruslan Bukin <br@FreeBSD.org>

CheriBSD 扩展了 FreeBSD,实现了 CHERI 指令集扩展所支持的内存保护和软件隔离功能。目前有两个活动的 CHERI 保护模型架构实现:CHERI-RISC-V 和 Arm 的 Morello。CHERI-x86 的初步设计也在开发中。CheriBSD 是一个研究操作系统,具有一个稳定的基线实现,已将各种新的研究功能合并或正在合并。

我们发布了 CheriBSD 的 22.12 版本,包括:

  • 基线 FreeBSD 操作系统更新至 2022 年 8 月。

  • Direct Rendering Manager (DRM,直接渲染管理器) 和 Panfrost 设备驱动程序的内存安全适配,这些驱动程序使基于 Morello 的桌面系统可以使用板载 GPU 和 HDMI。这些驱动程序可以与混合内核或纯能力内核一起使用。

  • 一组初步的图形和桌面 CheriABI 软件包,如 Wayland 和 KDE 部分,帮助你启动一个内存安全的桌面环境。这些组件仍在积极开发中,我们预计在 CheriBSD 发布后继续更新软件包。

  • 一个早期的研究原型,基于库的隔离,实现了一个替代的运行时链接器,运行库中的共享对象。该实现仍在进行中,旨在为需要轻松访问原型的其他协作机构提供研究支持。它既不完整也不打算作为安全方案使用。

  • 改进了实验性堆内存安全支持的插件化,虽然尚未合并到主开发分支,但现在通过下载 Microsoft 提供的替代内核和堆分配器库,使用起来更加方便。

  • 更新版的 GDB,支持 Morello 指令并检查内存标签。

  • 对 ZFS 文件系统的 Alpha 支持,包括对启动环境的支持。

改进 FreeBSD/riscv64

链接: Wiki 首页 链接:https://wiki.freebsd.org/riscv

联系人:Mitchell Horne <mhorne@FreeBSD.org>

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

本季度,我恢复了对 FreeBSD 的 RISC-V 架构支持(riscv64)的改进工作。工作主要集中在一些小的 bug 修复和改进以及工具的开发上。处理并关闭了一些已知的 panic 和 bug 报告。

在性能工具方面,发现并解决了在 riscv64 上使用 DTrace 时出现的一些问题。具体而言,stack() 函数生成的回溯未被正确捕获。首先,修改了编译器标志,确保内核模块始终使用帧指针,这样就可以按预期展开内核堆栈。其次,对 profilefbt 提供程序中的机器相关 DTrace 代码进行了调整,确保每个回溯中显示正确数量的帧。现在,DTrace 可以用于准确地捕获该平台上的性能数据,从而生成 flamegraphs。

我还开始将 hwpmc(4) 驱动移植到该平台。与其他 ISA 不同,RISC-V 并未标准化 CPU 必须支持的计数器事件,也没有为内核提供可访问的可编程事件选择寄存器。为了解决这个问题,提供了一个 SBI “性能监控单元”扩展,为管理此类功能提供了一个抽象接口。新的 hwpmc(4) 类被编写为使用该接口。目前一代 RISC-V 硬件支持递增性能计数器,但缺乏启用 PMC 采样所需的计数器溢出中断。

工作预计将在下个季度继续进行。除了正在进行的工作外,接下来将重点关注以下领域:

  • 对更新的 OS 级扩展(如基于页面的内存类型(Svpbmt))的支持

  • 系统性能分析。

赞助商:FreeBSD 基金会

在 FreeBSD riscv64 上运行 Go

链接: golang 官方网站 链接:https://github.com/golang/go FreeBSD riscv64 github 仓库 链接:https://github.com/MikaelUrankar/go/tree/freebsd_riscv64 FreeBSD riscv64 golang 问题 链接:https://github.com/golang/go/issues/53466

联系人:Mikaël Urankar <mikael@FreeBSD.org> 联系人:Dmitri Goutnik <dmgk@FreeBSD.org>

关于为 FreeBSD riscv64 添加支持的提案已被接受,补丁已合并。Go 语言在 FreeBSD riscv64 上的支持将会出现在 Golang v1.20 中(预计于 2023 年 2 月发布)。

在 Xen 上运行 FreeBSD/ARM64

链接: Xen 项目 链接:https://www.xenproject.org/ FreeBSD Wiki 上的 Xen 页面 链接:https://wiki.freebsd.org/Xen

联系人:Elliott Mitchell <ehem+freebsd@m5p.com>

Xen 是一个开源的虚拟机监控器。Xen 是最早的虚拟机监控器之一,支持多种操作系统。从 FreeBSD 8.0 开始,GENERIC FreeBSD/x86 就能够在 Xen 上运行。在 FreeBSD 被移植到 Xen 上时,开始着手研究在 ARM 上运行 Xen。多年来,Linux 已经能够在 Xen/ARM 上稳定运行,但 FreeBSD 一直没有提供此支持。

能够在 Xen 上运行 FreeBSD/ARM64 意味着任何能够运行 Xen 的系统也可以运行 FreeBSD。值得注意的是,树莓派 4B 配备了 Xen 可用的硬件(GICv3)。如果你能接受 Linux 来处理硬件,你就可以使用 Raspberry Pi 4B 的所有硬件。

2014 年,Julien Grall 做了一个 FreeBSD/ARM64 在 Xen 上运行的概念验证,但这从未经过完善以供发布。在过去的两年中,我一直在努力将这一功能加入到 FreeBSD 的代码库中,以便发布版本的 FreeBSD/ARM64 能在 Xen 上运行。目前,所有需要与 x86 Xen 源代码共享的更改已经过审查(并非所有审查都在 Phabricator 上)。现在,正在等待 Roger Pau Monné 的测试,然后将其提交到 FreeBSD 的代码库中。

我现在急需一位对 FreeBSD 在 ARM64 上的中断子系统有深入了解的人来审查(并提交)ARM 特定部分。我的构建大多数时候都能成功,失败的情况大多是 FreeBSD 代码库中的临时问题。一些重要问题需要解决,涉及到 FreeBSD 的中断子系统。

有很大的希望能在 FreeBSD 14.0 中为 DomU(无特权)操作提供 FreeBSD/ARM64 的支持。短期内,FreeBSD/ARM 和 FreeBSD/RISC-V 也有可能在 Xen 上运行。目前没有计划让 FreeBSD/ARM64 作为控制虚拟机运行(有人可以尝试赞助这一工作)。

致谢

感谢 Julien Grall <julien@xen.org> 提供的概念验证。 感谢 Roger Pau Monné <royger@FreeBSD.org> 审查涉及 x86 的更改。 感谢 Mitchell Horne <mhorne@FreeBSD.org> 帮助解决 FreeBSD/ARM64 的各种问题,并解决了 FreeBSD/ARM64 的一个关键问题。

云平台

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

FreeBSD 在微软 Hyper-V 和 Azure 上的运行

链接: 关于微软 Azure 的文章(FreeBSD wiki) 链接:https://wiki.freebsd.org/MicrosoftAzure 关于微软 Hyper-V 的文章(FreeBSD wiki) 链接:https://wiki.freebsd.org/HyperV

联系人:微软 FreeBSD 集成服务团队 <bsdic@microsoft.com> 联系人:freebsd-cloud 邮件列表 联系人:FreeBSD Azure 发布工程团队 <releng-azure@FreeBSD.org> 联系人:Wei Hu <whu@FreeBSD.org> 联系人:許立文 <lwhsu@FreeBSD.org>

在本季度,12.4-RELEASE 镜像 已发布至 Azure Marketplace。

进行中的工作任务:

  • 自动化镜像构建和发布过程,并合并到 src/release/

  • 构建并发布基于 ZFS 的镜像到 Azure Marketplace

    • 所有必需的代码已经合并到主分支,可以通过指定 VMFS=zfs 来创建基于 ZFS 的镜像。

    • 需要使构建过程更加自动化,并与发布工程团队协作,开始生成快照。

  • 构建并发布 Hyper-V gen2 虚拟机镜像到 Azure Marketplace

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

Wei Hu 和他的微软同事们正在进行以下由微软赞助的任务:

待办事项

赞助方:微软,赞助 Wei Hu 及其团队的工作和其他资源 赞助方:FreeBSD 基金会,赞助其他所有工作

FreeBSD 作为 Tier 1 cloud-init 平台

链接: cloud-init 网站 链接:https://cloud-init.io/ cloud-init 文档 链接:https://cloudinit.readthedocs.io/en/latest/ cloud-init 持续重构 链接:https://github.com/canonical/cloud-init/blob/main/WIP-ONGOING-REFACTORIZATION.rst

联系人:Mina Galić <me+FreeBSD@igalic.co>

cloud-init 是云中服务器配置的标准方式。不幸的是,cloud-init 对 Linux 以外操作系统的支持相当薄弱,FreeBSD 缺乏 cloud-init 支持,成为云服务提供商想要将 FreeBSD 作为一级平台时的障碍。为了解决这一问题,本项目旨在将 FreeBSD 的 cloud-init 支持提升到与 Linux 相同的水平。更广泛的计划是将支持扩展到所有 BSD 系统。

第一个里程碑已交付。除了修复了许多 bug,我们还合并了一个 ifconfig(8) 解析器,允许我们检索所有网络设备的所有信息,类似于在 Linux 上通过解析 /sys/class/net/<dev>/ 的内容来完成的方式。在接下来的几周中,该项目将与 Azure 开发人员对接,进行一些关键的重构工作。这将使我们的新解析器进一步融入 cloud-init 的主要执行路径。

有兴趣参与该项目的人可以通过 net/cloud-init-devel 来帮助测试新特性和修复,每当我们进行重要提交时,该模块都会更新。此外,拥有 OpenBSD 和 NetBSD 经验的人员也非常欢迎参与帮助。

赞助方:FreeBSD 基金会

FreeBSD 上的 OpenStack

链接: OpenStack 链接:https://www.openstack.org FreeBSD 上的 OpenStack 链接:https://github.com/openstack-on-freebsd

联系人:Chih-Hsin Chang <starbops@hey.com> 联系人:許立文 <lwhsu@FreeBSD.org>

OpenStack 是一个开源云操作系统,用于不同资源类型,如虚拟机和裸金属机器。用户可以在开放云平台上启动 FreeBSD 实例,但目前无法在 FreeBSD 主机上运行 OpenStack 控制平面。本项目旨在移植 OpenStack 的关键组件,使 FreeBSD 能够作为 OpenStack 主机运行。

在 2022 年第四季度,我们几乎完成了关键 OpenStack 组件的移植工作。组成一个基本 OpenStack 集群的大多数组件/服务现在都可以在 FreeBSD 主机上运行,包括:

  • Keystone(身份服务)

    • keystone 服务器

  • Glance(镜像服务)

    • glance-api

  • Placement(资源跟踪和库存服务)

    • placement-api

  • Neutron(网络服务)

    • neutron-server

    • neutron-metadata-agent

    • neutron-dhcp-agent

    • neutron-openvswitch-agent

  • Nova(计算服务)

    • nova-api

    • nova-conductor

    • nova-scheduler

    • nova-compute

    • nova-novncproxy

构建 POC 的逐步文档可以在 docs 仓库中找到。

在设计中,大多数 OpenStack 组件为底层实现提供了一个抽象层。对于 nova,我们选择将 libvirt 驱动与启用的 bhyve 虚拟化类型相结合。对于 neutron,则使用 openvswitch 机制驱动。我们解决了与 Libvirt、bhyve 和 Open vSwitch 组合相关的多个运行时依赖和移植问题,且付出了最小的努力。我们仍然有很多工作要做,以便将这些更改提交到 OpenStack 上游。

待办事项包括:

  • 为 FreeBSD 环境开发 oslo_privsep 模块的适当替代执行路径

  • 为 nova-compute 的 libvirt 驱动开发新的虚拟化类型 bhyve

  • neutron/agent/freebsd 下为 FreeBSD 开发 IP 库

在 2023 年的前几周,我们将重点突破实例启动路径的最后一英里,并完成 POC 站点构建的文档。我们还将尝试将移植工作重新基于 OpenStack 的主分支(目前是 Xena)。

有兴趣参与该项目的人可以首先通过安装指南帮助检查文档。

赞助方:FreeBSD 基金会

文档

文档树、手册页或新的外部书籍/文档中的重要更改。

文档工程团队

链接: FreeBSD 文档项目 链接:https://www.freebsd.org/docproj/ FreeBSD 文档项目新贡献者指南 链接:https://docs.freebsd.org/en/books/fdp-primer/ 文档工程团队 链接:https://www.freebsd.org/administration/#t-doceng

联系人:FreeBSD Doceng 团队 <doceng@FreeBSD.org>

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

在上个季度:

  • crees@ 和 zeising@ 的文档已被保存。

待办事项和讨论中的事项:

Port 开发者手册:

手册中新增了两个 USES 选项:

此外:

FreeBSD 在 Weblate 上的翻译

链接:在 Weblate 上翻译 FreeBSD 链接:FreeBSD Weblate 实例

2022 第四季度状态

  • 12 种语言

  • 150 名注册用户

语言

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

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

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

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

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

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

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

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

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

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

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

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

我们感谢所有通过翻译或审阅文档做出贡献的人员。

请帮助在你的本地用户组中推广这一努力;我们始终需要更多的志愿者。

FreeBSD 网站改版 - WebApps 工作小组

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

该工作小组负责创建新的 FreeBSD 文档门户,并重新设计 FreeBSD 主网站及其各个组件。FreeBSD 开发者可以通过 FreeBSD Slack 渠道 #wg-www21 跟进并加入该工作小组。工作将分为四个阶段:

  1. 文档门户的重新设计 创建一个新的设计,具有响应式布局和全局搜索功能。(已完成)

  2. 网站上的手册页重新设计 使用 mandoc 生成 HTML 页面的脚本。(已完成) 公共实例: https://man-dev.FreeBSD.org

  3. 网站上的 Ports 页面重新设计 用于创建应用程序门户的 Port 脚本。(进行中)

  4. FreeBSD 主网站的重新设计 新设计,响应式布局并支持暗色主题。(进行中)

FreeBSD 演示文稿和论文

链接: FreeBSD 演示文稿和论文 链接:https://papers.FreeBSD.org

联系人:Allan Jude <allanjude@FreeBSD.org> 联系人:Greg White <gkwhite@gmail.com> 联系人:許立文 <lwhsu@FreeBSD.org> 联系人:Philip Paeps <philip@FreeBSD.org>

在本季度,以下事件的演示文稿和论文已被添加:

  • BSDCan 2022

  • EuroBSDCon 2022

待办事项

  • 查找并上传缺失的 FreeBSD 相关演示文稿和论文

  • 开放问题 中列出的问题

Ports

影响 Ports 的更改,无论是涉及大多数树的广泛更改,还是单个 Port 本身的更改。

FreshPorts - 需要帮助

链接: FreshPorts 链接:https://freshports.org/ FreshPorts 博客 链接:https://news.freshports.org/

联系人:Dan Langille <dvl@FreeBSD.org>

FreshPorts 和 FreshSource 已经报道了 FreeBSD 提交 20 年,它们涵盖所有提交,而不仅仅是 Ports。

FreshPorts 跟踪提交并从 Port 的 Makefile 中提取数据,创建对 Port 维护者和 Port 用户有用的信息数据库。

例如,https://www.freshports.org/security/acme.sh/ 展示了 acme.sh Port 的历史,从 2017 年 5 月开始。

转换后端代码库

这个话题涉及 FreshPorts 的代码库。前端(网站)几年前已从 Subversion 转换为 Git,而后端处理 FreeBSD 提交并更新数据库仍然使用 Subversion。我已经想要将这些代码库转换为 Git 很长时间了。

我希望能得到帮助。将提供代码库副本,你将其转换为多个 Git 仓库(每个仓库一个)。这些将被上传到 https://github.com/FreshPorts(我们的 GitHub 项目)。

现有的 Subversion 仓库如下:

  • ingress(后端代码)

  • 数据库架构

  • 后端 - 监控代码

  • packaging - 用于生成新 tarball 的脚本(通过 Git 已废弃)

  • daemontools - 现已更名,因为脚本使用了 daemon(8)

  • periodics - 由 periodic(8) 启动的脚本

  • ports - 用于 FreeBSD 软件包,安装上述内容。

我不会永远管理 FreshPorts

已经 22 年过去了,我知道其他人最终必须接手。我希望现在就开始这个过程。FreshPorts 有几个方面:

  • FreeBSD 管理(更新操作系统和软件包)

  • 前端代码(网站 - 主要是 PHP)

  • 后端代码(提交处理 - Perl、Python、shell)

  • 数据库设计(PostgreSQL)。

与应用程序和操作系统相比,数据库的更改并不频繁,维护工作也较少。网站基本上是自我运行的。偶尔,FreeBSD Ports 基础设施的更改会破坏某些东西或需要修改,但通常没有紧急修复的必要。这不是一个庞大的时间投入。虽然 FreshPorts 不是复杂的应用程序,但也不是简单的。

PortsDB:将 Ports 导入 SQLite 数据库的程序

链接: PortsDB 链接:https://github.com/yurivict/freebsd-portsdb/

联系人:Yuri Victorovich <yuri@FreeBSD.org>

我开发了 PortsDB 项目,将 FreeBSD Ports 导入 SQLite 数据库。该 Port 为 ports-mgmt/portsdb

数据库可以在约 20 分钟内完全重建,之后可以通过几秒钟快速更新新提交。

当前数据库每小时更新一次:https://people.freebsd.org/~yuri/ports.sqlite

PortsDB 可用于通过 SQL 查询 Port,作为一个关系数据库。像 Repology、FreshPorts、Portscout 等外部服务可以使用 PortsDB 访问 Ports 中的信息。

用户可以轻松查找损坏的 Port、 Port 重复项,或查找他们维护的所有使用 gmake 的 Port 等多种查询。这些查询通过 grep Ports 并不容易执行。

跨数据库查询也很容易进行。它们可以结合 PortsDB、/var/db/pkg/repo-FreeBSD.sqlite/var/db/pkg/local.sqlite

运行 PortsDB 所需做的仅是执行 ./import.sh,然后在拉取更多提交到 Ports 仓库后执行 ./update.sh

提供了周期性脚本,可以简化与 cron 的集成。同时还包含多个现成的 SQL 查询。

PortsDB 旨在解决的一个特定问题是修复 Repology 显示的错误 FreeBSD Ports 版本。Repology 使用的 Port INDEX 缺少一些必要的信息,这导致 Repology 无法区分真实版本和中间版本以及虚假版本。PortsDB 应该能帮助 Repology 解决这个问题。

FreeBSD 上的 KDE

链接: KDE FreeBSD 链接:https://freebsd.kde.org/ KDE Community FreeBSD 链接:https://community.kde.org/FreeBSD

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

KDE 在 FreeBSD 项目为 FreeBSD Ports 打包 CMake、Qt 和 KDE Community 的软件。这些软件包括一个完整的桌面环境 KDE Plasma(支持 X11 和 Wayland),以及可以在任何 FreeBSD 机器上使用的数百个应用程序。

KDE 团队(kde@)是 desktop@ 和 x11@ 的一部分,构建软件栈,使 FreeBSD 成为美观且适合日常使用的图形桌面机器。以下是主要关于 KDE 的 Port,也包括对整个桌面栈至关重要的项目。

基础设施

  • CMake Port 现在共享一个单一版本号。各种构建标志已更新,以适应 FreeBSD Port构建:在某些情况下,发布标志被忽略,调试标志被应用,这是不希望的。CMake 现在还拒绝在 Port 构建期间获取远程源代码。

  • Qt 版本现在为 Qt 5.15.7(KDE 使用)和 Qt 6.4.1。Ports 中的一些应用程序现在有 Qt5 和 Qt6 的“口味”。

KDE 栈

KDE Gear 每季度发布一次,KDE Plasma 每月更新一次,KDE Frameworks 也有每月的新版本。这些(大型)更新会在上游发布后不久到达,并且不会单独列出。

  • KDE Frameworks 5 现在是版本 5.101(2022 年 12 月的最新月度发布)。这可能是“Frameworks 5”系列的最后一次发布,因为下一个主要系列即将到来。

  • KDE Gear 现在是版本 22.12.0(2022 年 12 月更新)。

  • KDE Plasma 现在是版本 5.24.7(2022 年 10 月更新)。

注意,KDE Plasma 5.25 已在上游发布,但仍在等待修复,才能进入 Ports(例如,这个 KActivityManager 错误 在 KDE 的错误追踪器中)。

相关 Port

Xfce 在 FreeBSD 上

链接: Xfce 4.18 上游发布公告 链接:https://xfce.org/about/news/?post=1671062400 Xfce 元 Port 在 FreshPorts 上 链接:https://www.freshports.org/x11-wm/xfce4

联系人:Xfce 团队 <xfce@FreeBSD.org> 联系人:Guido Falsi <madpilot@FreeBSD.org>

FreeBSD Xfce 团队(xfce@)致力于确保 Xfce 桌面环境在 FreeBSD 上得到维护并完全集成。

本季度,Xfce 团队成员很高兴地迎来了 Xfce 4.18 版本加入 FreeBSD Ports !

此次新版本包括了环境各个部分的许多改进,尤其是在 Thunar 文件管理器方面。

此外,多个上游软件包现在也包括了此前出现在 Ports 中的补丁。

欲了解更多详情,请参考 Xfce 4.18 上游发布公告

FreeBSD 上的 Pantheon 桌面

链接: elementary OS 链接:https://elementary.io 开发仓库 链接:https://codeberg.org/olivierd/freebsd-ports-elementary

联系人:Olivier Duchateau <duchateau.olivier@gmail.com>

Pantheon 桌面环境是为 elementary OS 设计的。它建立在 GNOME 技术(如 Mutter、GTK 3 和 4)之上,并且是用 Vala 编写的。其目标是为用户提供一个全新的桌面体验。

要求 13.1-RELEASE 或更高版本,因为几个核心组件依赖于 deskutils/xdg-desktop-portal

该仓库包含 Mk/Uses 框架 elementary.mk,官方应用程序,以及依赖于 x11-toolkits/granite 的精选 Port。

自上次报告以来,我们更新了相关 Port,尤其是:

顶端面板(wingpanel)和控制中心(switchboard)的电源管理插件已完成。

一个新的 switchboard 插件也已可用,net/switchboard-plug-sharing。已移植 Rygel,GNOME UPnP/DLNA 服务。

提交了其他补丁以支持低级库,如:

待办事项

  • 改进文档。

  • 继续处理用户设置。

FreeBSD 上的 Budgie 桌面

链接: Buddies of Budgie 新闻 链接:https://blog.buddiesofbudgie.org/ 开发仓库 链接:https://codeberg.org/olivierd/freebsd-ports-budgie

联系人:Olivier Duchateau <duchateau.olivier@gmail.com>

Budgie 最初作为前 Evolve OS 的默认桌面环境开发。从 10.6.x 版本开始,进行了许多改进,旨在实现“平台无关性”。

它构建在 GNOME 技术之上,如 GTK >= 3、GLib、Mutter、libpeas。

目标是为最终用户提供一个全新的桌面。我已提交 2 个审核(D37224D37286 到 FreeBSD Porter’s Handbook),以便提交者可以导入它。

这些审核内容包括:

  • Mk/Uses 框架 budgie.mk

  • 新的虚拟类别 (budgie)

  • 6 个应用程序

  • 图标主题 x11-themes/tela-icon-theme

在本季度,我还提交了几个与此桌面相关的补丁,尤其是:

这些错误依然未解决:

待办事项

  • 在 FreeBSD 手册中添加对 LightDM 的支持。

GCC 在 FreeBSD 上

链接: GCC 项目 链接:https://gcc.gnu.org GCC 11 版本系列 链接:https://gcc.gnu.org/gcc-11/ GCC 12 版本系列 链接:https://gcc.gnu.org/gcc-12/

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

更新 GCC 默认版本至 12

非常感谢 antoine@ 运行必要的 exp-runs,并感谢所有参与该过程的贡献者、维护者和提交者。

正如上个季度所提到的,FreeBSD 通常会等待 GCC 每个主要版本的第二个小版本发布,才更新 GCC 默认版本。然而,下次我希望尽早更新默认版本,尤其是当 GCC 13 的第一个小版本发布时。等待第二个小版本发布的理由是为了让其他操作系统(特别是 Linux 发行版)先行发现、报告和修复 bugs,这样 FreeBSD 可以主要集中在 FreeBSD 特有的情况。然而,这也意味着上游的软件开发者很少听到 FreeBSD 的反馈,且大多是关于 FreeBSD 特有的问题,这使得我们的操作系统有可能被认为是次要且不重要的。

我希望随着 FreeBSD 向其他项目贡献的数量增加,软件作者能更加重视支持 FreeBSD。当然,我明白这将意味着所有 Ports 维护者将面临更多工作,我将尽力帮助他们。

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=2659548

解决同时安装多个 GCC 版本的冲突

现在,lang/gcc11lang/gcc12 可以同时安装。这对于更新 GCC 默认版本尤为重要,因为有些 Port 暂时需要使用 GCC 11 编译。

但请注意,目前你的系统上一次只能安装一个 -devel GCC Port。这是因为我仅对标准 Port 进行了修补;对于 -devel Port,我预计上游很快会通过使用 FreeBSD 用户提交的补丁我自己的补丁,或采用其他解决方案来修复该问题。

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=257060

D 语言

由于 diizzy 的努力,D 语言现在已在 lang/gcc11lang/gcc11-devel 中启用。我计划在更高版本的 GCC 中也添加对 D 语言的支持,但由于引导问题,这不像在 GCC 11 中那样容易实现:从 GCC 12 开始,D 编译器 GDC 需要一个工作中的 GDC 来构建。

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=266825

使用 -fsanitize=address 时崩溃

使用 GCC 编译并启用 -fsanitize=address 选项的软件报告出现崩溃问题。我已修复了 lang/gcc11lang/gcc11-devellang/gcc12lang/gcc12-devel 的相关问题,目前仍在处理 lang/gcc13-devel

使用地址 sanitizer 需要禁用 ASLR。由于 GCC 获取我正在修改的代码来自 LLVM,且 LLVM 也包含在 FreeBSD 的源代码库中,并附带一些改进 ASLR 检测并在必要时自动禁用 ASLR 重新运行程序的补丁,因此我也正在合并这些补丁。

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=267751

生物学 Port 的另一个里程碑

链接: Biolibc-tools 链接:https://github.com/auerlab/biolibc-tools Fast And Simple Differential Analysis 链接:https://github.com/auerlab/fasda

联系人:Jason Bacon <jwb@FreeBSD.org>

生物学类别的 Port 继续增长和成熟,并在 2022 年第四季度达到另一个里程碑,推出了 rna-seq 元 Port。

基因组学领域,或更广义地说,生物信息学领域,常被称为计算科学的“蛮荒西部”。分析通常受到缺乏清晰文档和部署与使用软件的困难的困扰。许多科学软件开发者并不了解包管理器简化他们和用户工作的重要性。因此,许多科学软件都使用即兴的“穴居人”安装方式,这种方式涉及过于复杂且不可靠的构建系统,要么捆绑依赖项,要么试图与随机的安装版本一起使用。

一直以来,工作都在进行,目的是使 FreeBSD Port 成为科学软件部署的示范。它现在包含了许多生物研究中最常用的开源应用程序的坚实核心。

本季度完成了 RNA-Seq 分析工具链的构建。RNA-Seq 用于测量 RNA 的丰度,从而反映基因活性,通常用于组织样本分析。现在,所有进行典型 RNA-Seq 分析所需的工具都可以通过以下命令在 FreeBSD 上安装:

pkg install rna-seq

这包括许多成熟的现有工具以及在 FreeBSD 上开发的新工具,如 FASDA 和 biolibc-tools,它们是一些传统 RNA-Seq 流程中比较麻烦的工具的易用替代品。

传统上,RNA-Seq 的软件部署通常需要几周甚至更长时间,而现在只需在 FreeBSD 上执行一条命令,就可以在几分钟内完成。科学家们可以将时间用于科学研究,而不必为 IT 问题而困扰。

第三方项目

许多项目以 FreeBSD 为基础,或将 FreeBSD 的组件融入他们的项目中。由于这些项目可能对广泛的 FreeBSD 社区感兴趣,我们有时会在季度报告中包含这些项目提交的简短更新。FreeBSD 项目对于这些提交中的任何声明的准确性或真实性不作任何声明。

容器与 FreeBSD:Pot、Potluck 和 Potman

链接: Pot 在 GitHub 上的组织 链接:https://github.com/bsdpot

联系人:Luca Pizzamiglio (Pot) <pizzamig@freebsd.org> 联系人:Stephan Lichtenauer (Potluck) <sl@honeyguide.eu> 联系人:Michael Gmelin (Potman) <grembo@freebsd.org>

Pot 是款 jail 管理工具,也支持通过 Nomad 进行编排

在上个季度,pot 0.15.4 发布了。此次更新包含了许多改进,如签名 pot 镜像,以及许多 bug 修复。此外,我们欢迎两位新的 pot 贡献者:@zilti@reezer

另外,现在还可以使用新的 Ansible pot

Potluck 的目标是成为 FreeBSD 和 pot 的“Dockerhub”,类似于 Docker 对于 Linux 的作用:提供一个 pot 风味和完整容器镜像的仓库,供 pot 使用,且在许多情况下也可与 Nomad 一起使用。

正如你所看到的,我们在过去的季度非常活跃,此次更新包括对 NextcloudJitsi 镜像的改进。

此外,我们还为 sccache-dist 服务器(用于分布式编译 Rust 和 C++ 的 sccache 服务器组件)添加了基于 pot 的 FreeBSD 支持,并且它将成为即将发布的 sccache 0.4.0 的一部分,参见 mozilla/sccache#1184。发布后,这将通过 devel/sccache 提供。

这意味着可以在 FreeBSD 上构建 Rust 项目,并将其目标定位于一个集群机器,这也可能与 poudriere 集成。

最后,Luca 在 EuroBSDCon 2022 上的演讲现已在 YouTube 上可用。

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

最后更新于

这有帮助吗?