# FreeBSD 2020 年第三季度状态报告

* 原文链接：<https://www.freebsd.org/status/report-2020-07-2020-09.html>

## 简介

本报告涉及了 2020 年 7 月至 9 月期间与 FreeBSD 相关的项目，这是计划中的四份报告中的第三份。

这一季度带来了 FreeBSD 项目和社区的一系列新增内容和变更，涉及多个团队和人员，涉及了从架构、持续集成、无线网络和驱动程序，到 drm、桌面以及第三方项目的工作，还有几份团队报告，以及其他许多无法一一列举的有趣话题。

由于全球仍然受到疫情影响，我们希望这份报告能够提醒大家，尽管我们身处不同地方，但人们依然可以通过合作完成优秀的工作。

我们希望你在阅读这份报告时能感到和我们在制作它时一样的兴趣。

Daniel Ebdrup Jensen，代表季度团队。

## [FreeBSD 团队报告](https://www.freebsd.org/status/report-2020-07-2020-09.html#FreeBSD-Team-Reports)

来自各个官方和半官方团队的条目，详情请见 [管理页面](https://www.freebsd.org/administration.html)。

### [FreeBSD 基金会](https://www.freebsd.org/status/report-2020-07-2020-09.html#FreeBSD-Foundation)

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

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

以下是我们上个季度为支持 FreeBSD 所做的一些亮点：

#### 疫情对基金会的影响

与其他组织一样，我们为所有员工制定了在家工作的政策，并对员工出差进行了临时禁令。我们继续支持社区和项目，但由于一些优先事项的变化以及部分员工子女照料的限制，我们的部分工作和响应可能会有所延迟。

#### 合作伙伴关系与商业用户支持

我们帮助促进商业用户与 FreeBSD 开发者之间的合作。我们还与公司会面，讨论他们的需求，并将这些信息反馈给项目组。毫不奇怪，由于在第三季度的居家令以及我们公司出差禁令的结合，面对面的会议几乎不存在。然而，团队仍然能够继续与我们的合作伙伴和商业用户进行虚拟会议。这些会议帮助我们了解 FreeBSD 在一些应用中的使用情况。

我们目前正在安排第四季度的 Zoom 公司会议，如果你希望与我们安排会议，请联系我们。

#### 筹款努力

上季度我们筹集了 $192,874.43！感谢那些伸出援手的个人和组织，帮助我们赞助我们的努力。我们特别感谢 Arm 在上季度的慷慨捐助，帮助我们将 2020 年的筹款总额提升至 $ 521,000。我们希望其他组织能效仿 Arm，回馈支持我们继续支持 FreeBSD。

这是一个充满挑战的时期，我们非常感激每一笔从 $5 到 $ 150,000 的捐款。我们仍然在这里，倾尽全力支持 FreeBSD！

我们的资金 100% 来自捐款，这些资金用于 FreeBSD 的软件开发、全球范围内的 FreeBSD 推广、确保 FreeBSD 安全、持续集成改进、赞助与 BSD 相关的计算机会议（即使是虚拟活动！）、为项目提供法律支持以及其他多个领域。

请考虑 [捐款以帮助我们继续并扩大对 FreeBSD 的支持](https://www.freebsdfoundation.org/donate/)。

我们还提供了合作伙伴计划，为我们的较大商业捐助者提供更多福利。了解更多关于 [合作伙伴计划](https://www.freebsdfoundation.org/FreeBSD-foundation-partnership-program/) 的信息，并与你的公司分享！

#### 操作系统改进

许多 FreeBSD 基金会的赞助项目在第三季度启动、继续进行或完成了项目，包括：

* 持续改进 WiFi 和 Linux KPI 层。
* Linuxulator 应用兼容性。
* 更新 DRM / 显卡驱动。
* OpenZFS 的 Zstd 压缩。
* 在线 RAID-Z 扩展。
* 为 FreeBSD 现代化 LLDB 目标支持。

你可以在其他季度报告中找到大部分项目的更多详细信息。

工作人员还参与了多个大型项目的工作，包括：

* 运行时动态链接器 (rtld) 和内核 ELF 加载器的改进。
* 重写 UNIX 域套接字锁定。
* 构建基础设施。
* 支持 Open 系统调用路径处理 O\_BENEATH 和 O\_RESOLVE\_BENEATH。
* arm64 支持。
* 迁移到 Git 仓库。

许多项目也在其他季度报告中有详细条目。

工作人员还在许多方面投入了大量的努力，不仅限于大型单独项目。这些工作包括协助代码审查、错误报告筛选、安全报告筛选和建议处理、解决 syzkaller 报告、以及在工具链、开发者工具、虚拟内存内核子系统、低级 x86 基础设施、套接字和协议等功能领域的持续维护和修复。

#### 滑铁卢大学合作项目

随着转向在家工作，基金会决定再次聘请三名滑铁卢大学的合作项目学生，参与 2020 年秋季学期（9 月至 12 月）。Tiger 返回参加第二学期，并加入了新学生 Yang 和 Zac。学期项目包括继续进行 ELF 工具链工作、将 Capsicum 应用于其他实用工具、测试和集成 FreePBX 和 Asterisk VOIP 软件、pkgbase，以及探索容器化工具。

#### 持续集成与质量保证

基金会为改善持续集成、自动化测试以及 FreeBSD 项目的整体质量保证工作，提供了一名全职工作人员，并赞助相关项目。

在 2020 年第三季度，基金会工作人员继续改进并监控项目的 CI 基础设施，并与专家合作修复测试发现的构建失败和回归问题。专用虚拟机主机的设置已完成，新的功能开发和 CI 阶段环境正在进行中。我们还与项目中的其他团队合作，满足他们的测试需求。例如，非 x86 架构的测试现已定期运行，提升了嵌入式系统的 CI。我们还与许多外部项目和公司合作，改进它们的产品与 FreeBSD 之间的 CI 集成。

有关完成的工作项和详细信息，请参阅本报告中的 FreeBSD CI 部分。

#### 支持 FreeBSD 基础设施

基金会提供硬件和支持，以改善 FreeBSD 的基础设施。在上一季度，我们继续支持位于全球各地的 FreeBSD 硬件。我们协调了纽约互联网公司（NYI）芝加哥设施与 clusteradm 之间的合作，开始为我们计划购买的一些新 FreeBSD 硬件做好准备。NYI 慷慨地为项目提供免费支持。我们还与 Bridgewater 站点的新所有者进行了联系，该站点是 FreeBSD 大部分基础设施的所在地。

我们为支持项目基础设施所做的一些采购包括：

* Spamhaus 垃圾邮件过滤软件，用于限制邮件列表中的垃圾邮件量。
* 5 台应用服务器，用于运行 Bugzilla、Wiki、网站、CGI、Phabricator、托管 Git 等任务。
* 1 台服务器，用于替换旧的 pkg 服务器，并提供更多的 IOPS，以避免在高峰时段磁盘无法跟上请求量导致的性能下降。
* 1 台服务器，用于加速 exp-runs。
* 1 台服务器，用于更频繁地构建软件包。

#### FreeBSD 宣传与教育

我们的大部分工作都致力于为项目进行宣传。这包括推广其他人使用 FreeBSD 所做的工作；制作宣传材料，教人们了解 FreeBSD，并帮助简化开始使用 FreeBSD 或为项目做贡献的路径；参加并组织其他 FreeBSD 贡献者志愿者运行 FreeBSD 事件、设立 FreeBSD 展台和进行 FreeBSD 演讲。

FreeBSD 基金会赞助了全球多个会议、活动和峰会。这些活动可以是 BSD 相关的、开源的或面向弱势群体的技术活动。我们支持 FreeBSD 相关的活动，为知识分享提供平台，推动项目合作，并促进开发人员与商业用户之间的合作，所有这些都为创建一个健康的生态系统提供支持。我们还支持非 FreeBSD 活动，以促进和提高 FreeBSD 的知名度，增加 FreeBSD 在不同应用中的使用，并招募更多贡献者参与项目。正如我们行业中的大多数人所经历的，COVID-19 已经使我们的面对面活动暂停。除了参加虚拟活动，我们还在持续开展新的培训计划，并更新我们的操作指南，以便更多人尝试 FreeBSD。

请查看我们在上一季度进行的一些宣传和教育工作：

* 启动了 FreeBSD Fridays 101 课堂系列。课程包括 FreeBSD 入门、FreeBSD 安装教程、安全性入门、ZFS 入门等。过去的课程视频和即将举行的活动日程可在 [这里](https://freebsdfoundation.org/freebsd-fridays/) 找到。
* 参加并在 OSI 的 "State of the Source" 会议上进行了演讲。该活动于 2020 年 9 月 9 日至 11 日以虚拟方式举行。
* 启动了 [FreeBSD 基金会网站的重新设计](https://freebsdfoundation.org/blog/weve-got-a-new-look/)。
* [宣布](https://freebsdfoundation.org/news-and-events/latest-news/freebsd-foundation-celebrates-20th-anniversary/) FreeBSD 基金会成立 20 周年。
* 作为谷歌编程之夏 2020 的管理员参与其中。
* 继续推广 FreeBSD Office Hours 系列，包括举办我们自己的基金会主办的办公时间。关于这些一小时课程的视频可以在项目的 [YouTube 频道](https://www.youtube.com/c/FreeBSDProject) 上找到。你可以观看我们的视频 [这里](https://www.youtube.com/watch?v=Ji4ux4FWpRU)。
* [采访了](https://freebsdfoundation.org/blog/freebsd-core-team-10-in-review/) 离任的 FreeBSD 核心团队成员，了解他们对任期的看法。
* 开始与 FreeBSD 供应商峰会规划委员会合作，准备 [2020 年 11 月的供应商峰会](https://wiki.freebsd.org/DevSummit/202011)。
* 在 It's FOSS 文章中宣传了基金会的 20 周年和我们支持 FreeBSD 项目的工作。 [FreeBSD 基金会庆祝 20 年支持和促进 FreeBSD 项目](https://itsfoss.com/freebsd-foundation-20-years/)。
* 为 Fosslife 撰写了 [FreeBSD 入门指南](https://www.fosslife.org/beginners-guide-freebsd)。
* 承诺作为媒体赞助商赞助 All Things Open。
* 承诺作为青铜级赞助商赞助 OpenZFS 开发者峰会。
* 成为国际 RISC-V 会员。
* 承诺在 10 月 20 日的 nerdear.la 会议上做 FreeBSD 演讲。

请通过我们的 [每月通讯](https://www.freebsdfoundation.org/news-and-events/newsletter/) 了解我们最新的工作。

Netflix 在我们的最新 [贡献者案例研究](https://freebsdfoundation.org/wp-content/uploads/2020/10/netflixcasestudy_final.pdf) 中提供了关于他们如何以及为什么使用 FreeBSD 的更新。

我们通过出版专业制作的 FreeBSD 期刊来帮助全球教育大家了解 FreeBSD。正如之前提到的，FreeBSD 期刊现在是免费出版物。可以在 <https://www.FreeBSDfoundation.org/journal/> 了解更多并访问最新的期刊。

你可以在 <https://www.FreeBSDfoundation.org/news-and-events/> 了解更多我们参加的活动和即将举行的活动。

#### 法律/FreeBSD 知识产权

基金会持有 FreeBSD 商标，保护商标是我们的责任。我们还为核心团队提供法律支持，帮助调查出现的问题。我们在 2020 年 7 月 1 日更新了我们的 [商标使用条款和条件](https://freebsdfoundation.org/legal/trademark-usage-terms-and-conditions/)。

请访问 [FreeBSD 基金会的网站](http://www.freebsdfoundation.org/) 了解我们如何支持 FreeBSD 以及我们如何帮助你！

#### 其他

我们欢迎 Andrew Wafaa 和 Kevin Bowling 加入我们的董事会，帮助管理基金会并引导我们制定战略方向。关于我们新董事会成员的 [更多信息](https://freebsdfoundation.org/blog/freebsd-foundation-welcomes-new-board-members-2/) 可在我们的网站上找到。

### [FreeBSD 发布工程团队](https://www.freebsd.org/status/report-2020-07-2020-09.html#FreeBSD-Release-Engineering-Team)

| 链接                                                                               |
| -------------------------------------------------------------------------------- |
| [FreeBSD 12.2-RELEASE 时间表](https://www.freebsd.org/releases/12.2R/schedule.html) |
| [FreeBSD 12.2 测试构建](https://www.freebsd.org/where.html#helptest)                 |
| [FreeBSD 开发快照](https://download.freebsd.org/ftp/snapshots/ISO-IMAGES/)           |

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

FreeBSD 发布工程团队负责设置和发布 FreeBSD 官方项目发布的时间表，宣布代码冻结并维护相关分支等工作。

在 2020 年第三季度，发布工程团队开始了 12.2-RELEASE 的工作，这是 stable/12 分支的第三个版本。

截至目前，已发布了两个 BETA 构建，并预计将发布第三个 BETA 构建，仍在时间表中。

12.2-RELEASE 循环将持续到 10 月，计划发布两个 RC 构建，RC3 将根据需要安排。12.2-RELEASE 目前计划于 10 月 27 日最终发布。

除了 12.2-RELEASE，发布工程团队的 Glen Barber 完成了发布构建工具和脚本的工作，以为从 Subversion 到 Git 的转换做好准备，为 13.0-RELEASE 循环做准备。目前没有计划将这些更改合并到稳定分支中；正如在 Git 工作小组中讨论的那样，我们认为在稳定分支上进行这样的更改对用户基础以及下游的 FreeBSD 用户来说将过于干扰。最近，13.0-CURRENT 的开发快照已从项目中的 Git 仓库中构建，而 12.x 和 11.x 的进一步快照将继续从 Subversion 构建。

此外，整个季度内，发布了多个 *head*、*stable/12* 和 *stable/11* 分支的开发快照构建。

最后，发布工程团队感谢 Marius Strobl 曾在团队中的辛勤付出；由于时间限制，他最近辞去了副 RE 负责人职位。团队欢迎 Colin Percival，接受了这个角色。

这项工作由 Rubicon Communications, LLC（netgate.com）和 FreeBSD 基金会赞助。

### [集群管理团队](https://www.freebsd.org/status/report-2020-07-2020-09.html#Cluster-Administration-Team)

| 链接                                                                   |
| -------------------------------------------------------------------- |
| [集群管理团队成员](https://www.freebsd.org/administration.html#t-clusteradm) |

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

FreeBSD 集群管理团队负责管理项目依赖的机器，这些机器用于同步分布式工作和通信。在本季度，团队开展了以下工作：

* 与 FreeBSD 基金会合作，更新用于 Web 服务、镜像和软件包构建服务器的硬件。
* 禁用软件包镜像的目录索引，以解决机器的性能问题。
  * 后来放宽了这一限制，允许对父目录进行索引，但仍然禁止大型软件包目录的索引。
* 持续的系统管理工作：
  * 提交者的账户管理。
  * 关键基础设施的备份。
  * 跟进第三方软件的安全更新。

进行中的工作：

* 设置马来西亚（KUL）镜像站。
* 设置巴西（BRA）镜像站。
* 审查服务 jail 和服务管理员的操作。
* 构建 aarch64 和 powerpc64 软件包的基础设施。
  * PowerPC64 POWER9 上的 NVMe 问题阻止双插槽机器作为 pkg 构建机使用。
  * FreeBSD 基金会赞助的 pkg 构建机驱动升级测试（SSD）。
  * Aarch64 参考机器的启动问题。
* 新的 NYI.net 赞助的位于芝加哥地区的共置空间。
* 与 Git 工作组合作，为 Git 仓库做准备。
* 寻找更多符合要求的供应商，以适应 [通用镜像布局](https://wiki.freebsd.org/Teams/clusteradm/generic-mirror-layout) 或 [小型镜像](https://wiki.freebsd.org/Teams/clusteradm/tiny-mirror)。

### [持续集成](https://www.freebsd.org/status/report-2020-07-2020-09.html#Continuous-Integration)

| 链接                                                               |
| ---------------------------------------------------------------- |
| [FreeBSD Jenkins 实例](https://ci.freebsd.org/)                    |
| [FreeBSD 硬件测试实验室](https://ci.freebsd.org/hwlab)                  |
| [FreeBSD CI 工件存档](https://artifact.ci.freebsd.org/)              |
| [FreeBSD CI 每周报告](https://hackmd.io/@FreeBSD-CI)                 |
| [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)           |

联系方式：Jenkins 管理员 <<jenkins-admin@FreeBSD.org>>\
联系方式：許立文 <<lwhsu@FreeBSD.org>>

联系方式：[freebsd-testing 邮件列表](https://lists.freebsd.org/mailman/listinfo/freebsd-testing)\
联系方式：IRC #freebsd-ci 频道（EFNet）

FreeBSD CI 团队负责维护 FreeBSD 项目的持续集成系统。CI 系统首先检查提交的更改是否能够成功构建，然后对新构建的结果执行各种测试和分析。这些构建的工件会被存档在工件服务器中，以供进一步的测试和调试需求。CI 团队成员检查失败的构建和不稳定的测试，并与相关领域的专家合作，修复代码或调整测试基础设施。这些工作的详细信息可以在 [每周 CI 报告](https://hackmd.io/@FreeBSD-CI) 中找到。

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

重要变更：

* 所有非 x86 测试构建现在每天 22:00 UTC 会触发一次新的构建；由于在 qemu 中运行所有测试需要大量时间，这一工作之前并不频繁进行。正在进行改进测试执行速度和并行性的工作。以下是受影响的工作列表：
  * [FreeBSD HEAD 在 ARMv7 上的测试构建](https://ci.freebsd.org/job/FreeBSD-head-armv7-test/)。
  * [FreeBSD HEAD 在 AArch64 上的测试构建](https://ci.freebsd.org/job/FreeBSD-head-aarch64-test/)。
  * [FreeBSD HEAD 在 MIPS64 上的测试构建](https://ci.freebsd.org/job/FreeBSD-head-mips64-test/)。
  * [FreeBSD HEAD 在 PowerPC64 上的测试构建](https://ci.freebsd.org/job/FreeBSD-head-powerpc64-test/)。
  * [FreeBSD HEAD 在 RISC-V64 上的测试构建](https://ci.freebsd.org/job/FreeBSD-head-riscv64-test/)。
* 构建和测试结果将很快发送到 [dev-ci 邮件列表](https://lists.freebsd.org/mailman/listinfo/dev-ci)。非常感谢反馈和分析帮助！
  * 已设置专门用于运行使用配置的虚拟机的构建器，这提高了稳定性并减少了执行时间。
  * 在 OpenZFS 导入后，[FreeBSD-head-amd64-test\_zfs](https://ci.freebsd.org/job/FreeBSD-head-amd64-test_zfs) 的结果发生了变化；我们鼓励大家检查并修复失败和跳过的测试用例。

新增的工作：

* [FreeBSD HEAD 在 PowerPC64LE 上的 CI 构建](https://ci.freebsd.org/job/FreeBSD-head-powerpc64le-build/)。

进行中的工作：

* 在 [此处](https://hackmd.io/@FreeBSD-CI/freebsd-ci-todo) 收集和整理 CI 任务和想法。
* 测试和合并 [FreeBSD-ci 仓库](https://github.com/freebsd/freebsd-ci/pulls) 中的拉取请求。
* 设计和实现预提交 CI 构建和测试。
* 减少为贡献者和开发者设置 CI/测试环境的程序。
* 设置 CI 阶段环境并将实验性工作放置其中。
* 为运行测试的虚拟机来宾设置公共网络访问。
* 在裸金属硬件上实施自动化测试。
* 为 -CURRENT 构建 drm Port 测试。
* 计划运行 ztest 和网络堆栈测试。
* 增加更多与外部工具链相关的工作。
* 改进硬件实验室，使其更加成熟并增加更多硬件。
* 帮助更多第三方软件通过托管 CI 解决方案在 FreeBSD 上进行 CI 测试。
* 与托管 CI 提供商合作，提供更好的 FreeBSD 支持。

请查看与 freebsd-testing@ 相关的工单，了解更多进行中的工作，欢迎加入我们的努力！\
赞助商：FreeBSD 基金会

### [Ports](https://www.freebsd.org/status/report-2020-07-2020-09.html#Ports-Collection)

| 链接                                                                                                       |
| -------------------------------------------------------------------------------------------------------- |
| [关于 FreeBSD Ports](https://www.freebsd.org/ports/)                                                       |
| [为 Ports 做贡献](https://www.freebsd.org/doc/en_US.ISO8859-1/articles/contributing/ports-contributing.html) |
| [FreeBSD Ports 监控](http://portsmon.freebsd.org/index.html)                                               |
| [Ports 管理团队](https://www.freebsd.org/portmgr/index.html)                                                 |

联系方式：René Ladan <<portmgr-secretary@FreeBSD.org>>\
联系方式：FreeBSD Ports 管理团队 <<portmgr@FreeBSD.org>>

Ports 管理团队负责监督 Ports 的整体方向、构建包以及人事事务。以下是过去一个季度的工作进展。

我们突破了 Ports 40,000 个 port 的里程碑，目前大约有 40,400 个 port。上个季度，HEAD 分支有 9335 次提交，2020Q3 分支有 481 次提交，分别由 167 和 63 个提交者完成。目前有 2525 个未解决的问题报告，其中 595 个没有指派负责人。与上个季度相比，这意味着活动略有下降，同时未解决的 PR 稍有增加。

在过去的季度里，我们欢迎了 Rainer Hurling (rhurlin@)，同时也向 Kevin Lo (kevlo@) 和 Grzegorz Blach (gblach@) 告别。

过去三个月，我们为 Perl（5.32）、PostgreSQL（12）和 PHP（7.4）更新了默认版本。许多软件包也进行了更新：Firefox 更新到 81.0.1，Chromium 更新到 84.0.4147.135，Gnome 更新到 3.36，Xorg 更新到 1.20.9，Qt5 更新到 5.15.0，Emacs 更新到 27.1，KDE Frameworks 更新到 5.74.0，pkg 本身更新到 1.15.8。

始终不知疲倦的 antoine@ 进行了 30 次 exp-runs 来测试 port 版本更新，涉及了以下多种内容：

* 将 base 中的 byacc 更新到 20200330。
* 检查 sed 命令 `y` 的平衡性。
* 使用括号。
* 删除现已冗余的 `port` 参数（来自 USES=readline）。

### [FreeBSD Office 团队 - 2020 年第三季度报告](https://www.freebsd.org/status/report-2020-07-2020-09.html#FreeBSD-Office-team3rd-quarter-2020-report)

| 链接                                                   |
| ---------------------------------------------------- |
| [FreeBSD Office 项目](https://wiki.freebsd.org/Office) |

联系方式：FreeBSD Office 团队 ML <<office@FreeBSD.org>>\
联系方式：Dima Panov <<fluffy@FreeBSD.org>>\
联系方式：許立文 <<lwhsu@FreeBSD.org>>

FreeBSD Office 团队致力于开发一系列办公软件套件和工具，如 OpenOffice 和 LibreOffice。

本季度的工作集中在为所有 FreeBSD 用户提供最新稳定版的 LibreOffice 套件及其配套应用。

* 除了将旧的稳定分支更新到最新的 6.4.x 版本外，当前的 Ports 现在还提供了功能完整的最新 7.0.1 套件。
* 保守用户可以通过切换到使用 all-in-one port editors/libreoffice6 来保留 6.4.x 稳定版本，甚至可以启用 i18n 语言包（默认关闭）。该版本将至少更新至 7.1.0 发布为止。

我们正在寻找有意帮助项目的人。所有不稳定的 LibreOffice 快照工作都被暂存到我们的 [WIP 仓库](https://github.com/lwhsu/freebsd-ports-libreoffice)。 [已开 bug 列表](https://bugs.freebsd.org/bugzilla/buglist.cgi?bug_status=open\&email1=office%40FreeBSD.org\&emailassigned_to1=1\&emailcc1=1\&emailreporter1=1\&emailtype1=substring\&query_format=advanced\&list_id=374316) 包含所有已报告的问题，亟需关注。补丁、评论和反对意见都欢迎通过邮件列表和 Bugzilla 提交。

### [FreeBSD 图形团队状态报告](https://www.freebsd.org/status/report-2020-07-2020-09.html#FreeBSD-Graphics-Team-status-report)

| 链接                                                |
| ------------------------------------------------- |
| [项目 GitHub 页面](https://github.com/FreeBSDDesktop) |

联系方式：FreeBSD 图形团队 <<x11@freebsd.org>>\
联系方式：Niclas Zeising <<zeising@freebsd.org>>

FreeBSD X11/图形团队负责维护 FreeBSD 图形栈的底层部分。这包括显卡驱动程序、图形库（如 MESA OpenGL 实现）、X.org xserver 及其相关库和应用程序，以及 Wayland 和相关库及应用程序。

自上次报告以来，FreeBSD 图形栈和相关库进行了多次更新。

最值得注意的是，MESA 相关的 port 已经转向使用 meson 构建系统，而不是基于 autotools 的系统。这是因为 Mesa 上游已经弃用并移除了 autotools 构建系统，这为进一步更新 Mesa 版本铺平了道路。尽管在初次更新后需要进行一些小的修正，但这次更新已经成功，并使得 FreeBSD 的 mesa port 能够进一步更新和改进。

此外，`xorg-server` 和 `libX11` 也进行了若干安全修复，因此这些 port 已更新以解决这些问题。

在此期间，FreeBSD 12 进行了更改，以提高与使用 udev/evdev 和 libinput 的输入设备的兼容性。这一更改去除了本地配置的需求，并使大多数鼠标、触摸板和键盘开箱即用。该更改将在即将发布的 FreeBSD 12.2 版本中包含。

同时，图形和输入栈中的各种库也进行了多次更新，多个用户空间驱动程序也已更新。像 `libdrm` 和 `libevdev` 等库已更新，以包括由团队成员开发并添加到上游的新的 FreeBSD 支持。

此外，持续的工作确保了各种 drm-kmod port 和包的最新状态，主要是响应不同 FreeBSD 版本的变化。

我们还继续按计划召开双周会议。

有兴趣帮助的人员可以通过 <x11@FreeBSD.org> 邮件列表与我们联系，或者在我们的 [gitter 聊天](https://gitter.im/FreeBSDDesktop/Lobby) 中找到我们。我们也可以在 EFNet 的 #freebsd-xorg 频道中找到。

我们在 [GitHub](https://github.com/FreeBSDDesktop) 上也有一个团队区域，你可以在其中找到我们的工作仓库。

## [项目](https://www.freebsd.org/status/report-2020-07-2020-09.html#Projects)

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

### [FreeBSD 在微软 HyperV 和 Azure 上的应用](https://www.freebsd.org/status/report-2020-07-2020-09.html#FreeBSD-on-Microsoft-HyperV-and-Azure)

| 链接                                                                |
| ----------------------------------------------------------------- |
| [FreeBSD 在微软 Azure 上的文章](https://wiki.freebsd.org/MicrosoftAzure) |
| [FreeBSD 在微软 HyperV 上的文章](https://wiki.freebsd.org/HyperV)        |

联系方式：FreeBSD 集成服务团队 <<bsdic@microsoft.com>>\
联系方式：Wei Hu <<whu@FreeBSD.org>>\
联系方式：許立文 <<lwhsu@FreeBSD.org>>

Li-Wen 正在处理与 Azure 相关的 FreeBSD 发布代码，涵盖 -CURRENT、12-STABLE 和 11-STABLE 分支。该进行中的工作可以在 [这里](https://reviews.freebsd.org/D23804) 找到。[Azure Marketplace 上的 11.4-RELEASE 镜像](https://azuremarketplace.microsoft.com/marketplace/apps/thefreebsdfoundation.freebsd-11_4) 已发布。我们正在测试 releng/12.2 分支，并将在 12.2-RELEASE 发布后尽快将其发布到 Azure Marketplace。

该项目由 FreeBSD 基金会赞助，微软提供资源支持。

### [在非 FreeBSD 主机上构建 FreeBSD](https://www.freebsd.org/status/report-2020-07-2020-09.html#Building-FreeBSD-on-non-FreeBSD-hosts)

| 链接                                                    |
| ----------------------------------------------------- |
| [Wiki](https://wiki.freebsd.org/BuildingOnNonFreeBSD) |

联系方式：Alex Richardson <<arichardson@freebsd.org>>

直到最近，FreeBSD 只能在 FreeBSD 主机上构建。然而，许多流行的免费 CI 工具仅能在 Linux 和 macOS 上构建，因此无法用于构建 FreeBSD 基本系统。此外，即使构建机器不是运行 FreeBSD，跨平台构建 FreeBSD 以用于远程机器或仿真器有时也会很有用。该项目的目标是能在 Linux 和 macOS 主机上构建基本系统。

我在 2017 年开始了这个项目，旨在允许在许多参与 [CHERI 项目](http://www.cheri-cpu.org/) 的 Linux 服务器和桌面上构建 [CheriBSD](https://github.com/CTSRD-CHERI/cheribsd)。最初的几个补丁于 2018 年提交到上游（见 2018q3 报告），我很快将完整的补丁并到 CheriBSD 中。在过去的两年里，我慢慢地将剩余的补丁提交到上游，并最终在本报告的时间点提交了最后一个必需的更改。

截至 2020 年 9 月，应该可以使用 `buildworld` 和 `buildkernel` make 目标，在 macOS 和 Linux 主机上构建一个完全功能的 FreeBSD 安装。我们在我们的持续集成系统中使用此方法来构建和测试多个架构的 CheriBSD 磁盘映像。我还将一个 [GitHub Actions](https://github.com/features/actions) 配置提交到上游，构建一个 amd64 内核大约需要 10 分钟。这将确保可以轻松检测到破坏跨平台构建的更改。

将跨平台构建的更改提交到上游，导致了构建系统的清理。例如，我们现在 [不再需要使用 lorder.sh](https://reviews.freebsd.org/rS365836) 来构建库，这稍微加快了链接步骤。可移植性和引导更改也使得从旧版本升级变得更加容易，因为我们不再依赖于 `/usr/include` 中的主机头文件与目标系统的匹配（例如，在引导 localedef 等时）。

尽管在 Linux 和 macOS 上构建的支持仍应视为实验性，但在许多情况下应该能够正常工作。如果你想尝试一下，以下命令行应能在安装了 LLVM 10（或更新版本）包的 Linux 和 macOS 系统上成功构建 amd64 world：`MAKEOBJDIRPREFIX=/somewhere ./tools/build/make.py TARGET=amd64 TARGET_ARCH=amd64 buildworld`。必须使用 `./tools/build/make.py` 包装脚本来执行构建，因为大多数 Linux 和 macOS 系统不附带适当版本的 bmake。如果你遇到任何问题，请告诉我。

赞助：DARPA

### [Git 迁移工作组](https://www.freebsd.org/status/report-2020-07-2020-09.html#Git-Migration-Working-Group)

| 链接                                                                         |
| -------------------------------------------------------------------------- |
| [Git 转换工具仓库](https://github.com/freebsd/git_conv)                          |
| [FreeBSD-git 邮件列表](https://lists.freebsd.org/mailman/listinfo/freebsd-git) |
| [Beta 文档 git 仓库](https://cgit-beta.freebsd.org/doc)                        |
| [Beta ports git 仓库](https://cgit-beta.freebsd.org/ports)                   |
| [Beta src git 仓库](https://cgit-beta.freebsd.org/src)                       |

联系方式：Ed Maste <<emaste@FreeBSD.org>>\
联系方式：Warner Losh <<imp@FreeBSD.org>>\
联系方式：Ulrich Spörlein <<uqs@FreeBSD.org>>

FreeBSD 正在从 Subversion 迁移到 Git 的工作持续进行。Ulrich 已经解决了 svn2git 中所有已知的问题，并能够绕过 Subversion 历史中的不一致元数据和强制提交问题。

我们仍需编写额外的文档，并完成提交钩子的安装（例如，限制分支创建，或确保 cherry-pick 提交中有适当的数据）。

我们预计在 10 月底之前开放 beta 仓库，以测试提交。这将允许测试提交钩子，并允许开发人员测试访问权限并熟悉 git 操作。此仓库中的提交将被删除，并且仓库将在最终迁移之前至少重新创建一次。

有兴趣参与 Git 迁移的人，鼓励订阅 [FreeBSD-git 邮件列表](https://lists.freebsd.org/mailman/listinfo/freebsd-git)，并测试 beta 的 src、ports、doc 仓库。

你也可以查看 Git 转换工具仓库中的 wiki、问题、README 和其他文档：[Git 转换工具仓库](https://github.com/freebsd/git_conv)。

我们目前预计在 11 月中旬过渡到 src 和 doc 仓库。对 ports 仓库的额外调查和实验仍在进行中。

赞助：FreeBSD 基金会（部分）

### [更新 Linux 兼容层](https://www.freebsd.org/status/report-2020-07-2020-09.html#Linux-compatibility-layer-update)

联系方式：Edward Tomasz Napierala <<trasz@FreeBSD.org>>\
联系方式：Mark Johnston <<markj@FreeBSD.org>>

早期的 Linux 兼容层工作主要集中在代码清理和改进诊断工具上。现在的工作重点已经转向修复实际的应用程序。目前的进展正在 [Linux 应用程序状态 Wiki 页面](https://wiki.freebsd.org/LinuxApps) 上跟踪。最初的重点是不涉及 X11 的应用程序，主要是因为它们通常更容易测试和调试，并且修复的错误不具有应用程序特定性。

本季度的基金会赞助工作包括实现 devfs(5) 的一个解决方法，以修复 jail/chroot 内的 gettynam(3)，以及修复缺失的 splice(2) 系统调用，这导致 grep 和 autotools 出现问题。报告给用户空间的 Linux 版本已提升至 3.10.0，这与 RHEL 7 中提供的内核匹配，并且对于 IBM DB2 数据库的安装成功至关重要。现在已经支持 Oracle 数据库所需的 BLKPBSZGET ioctl。同时，增加了对 kcov(4) 的支持，这是 syzcaller 所必需的；以及对 syzcaller 报告的多个问题的修复，如 futex 锁泄漏。还进行了更多清理，包括将一些与 Linux 兼容层特定的错误处理功能从系统调用的快速代码路径中移除。sysutils/debootstrap Port 已更新至版本 1.0.123，提供了一种创建 Debian 或 Ubuntu jail 的简单方法。最后，还对 [文档](https://wiki.freebsd.org/LinuxJails) 做了一些改进。

大多数这些更改已经合并到 FreeBSD 12-STABLE 中，以便与 12.2-RELEASE 一同发布。

其他开发人员的参与度有所增加；其中包括 termios 性能修复、改进的 memfd 支持、实现 `CLOCK_MONOTONIC_RAW`（Steam 所需）、madvise 改进、新的 `compat.linux.use_emul_path` sysctl。还在持续追踪 Steam 和 WebKit 相关故障的原因，修复首先在 [linuxulator-steam-utils](https://github.com/shkhln/linuxulator-steam-utils/wiki/Compatibility) 中实现。

赞助：FreeBSD 基金会

### [改进 LLDB 调试器](https://www.freebsd.org/status/report-2020-07-2020-09.html#LLDB-Debugger-Improvements)

| 链接                                                                                       |
| ---------------------------------------------------------------------------------------- |
| [Moritz 系统项目概述](https://www.moritz.systems/blog/lldb-debugger-improvements-for-freebsd/) |
| [Git 仓库](https://github.com/moritz-systems/llvm-project)                                 |

联系方式：Kamil Rytarowski <<kamil@moritz.systems>>\
联系方式：Michał Górny <<mgorny@moritz.systems>>

FreeBSD 内置 LLDB，这是 LLVM 家族中的调试器，作为基本系统的一部分。目前，与 GNU GDB 调试器相比，LLDB 存在一些限制，尚不能完全替代。它依赖于 LLDB 中一个过时的插件模型，导致技术债务不断增加。该项目旨在使 LLDB 更接近完全替代 GDB 的功能，因此为 FreeBSD 提供一个现代化的调试器，供软件开发人员使用。

传统的单体目标支持调试的应用程序与调试器处于同一进程空间中。现代 LLDB 插件方法（用于其他支持的目标）则在单独的 lldb-server 进程中执行目标进程。这提高了可靠性，并简化了 LLDB 本身的进程/线程模型。此外，远程和本地调试将使用相同的方法执行。

在完成迁移到新进程模型后，该项目还将包括审查 LLDB 测试套件的结果，并在时间允许的情况下修复测试。预计该工作将在 2020 年完成。

项目进度分为三个里程碑，每个里程碑大约需要一个月的时间：

1. 为 x86\_64 引入新的 FreeBSD 远程进程插件，提供基本支持并提交到 LLVM 上游。
2. 确保并添加项目中要求的特性（进程启动、进程附加（pid）、进程附加（name）、用户空间核心文件、断点、观察点、线程、远程调试）对 FreeBSD/amd64 和 FreeBSD/i386 的支持。
3. 迭代 LLDB 测试。检测并在时间允许的情况下修复 bugs。确保每个未修复和已知问题的 bug 报告。添加缺失的 man 页面，并更新 FreeBSD 手册。

我们即将完成第一个里程碑。新的插件正在成型，已经能够运行简单的单线程程序。支持的特性包括单步执行、断点、内存和寄存器 I/O（针对 amd64）。两个插件可以同时支持。如果设置了环境变量 `FREEBSD_REMOTE_PLUGIN`，或者直接启动 lldb-server，则使用新插件。否则，出于兼容性原因，仍然使用旧插件。待新插件成熟，我们计划在其移植到的架构上无条件启用它。

赞助：FreeBSD 基金会

### [在 FreeBSD 中的使用 Lua](https://www.freebsd.org/status/report-2020-07-2020-09.html#Lua-usage-in-FreeBSD)

联系方式：Ed Maste <<emaste@FreeBSD.org>>\
联系方式：Kyle Evans <<kevans@FreeBSD.org>>\
联系方式：Ryan Moeller <<freqlabs@FreeBSD.org>>

在本季度，flua（FreeBSD Lua）[被添加](https://svnweb.freebsd.org/base/?view=revision\&revision=r364182) 以支持 `require` 来加载由基本系统提供的 .lua 模块。flua 还 [获得了支持](https://svnweb.freebsd.org/base/?view=revision\&revision=r364222) 以加载二进制模块。

关于 [libjail 绑定](https://reviews.freebsd.org/D26080) 的审核也已经提交，正在等待审核。libjail 是如果想要在 flua 中编写 jail 管理工具的关键组件。

有兴趣在 FreeBSD 中使用 Lua 的人可以联系讨论其他项目想法。以下是一些有潜力的项目，这些模块尚未启动，但可能会非常有用（按顺序排列）：

* libcrypt
* libexpat
* libnv
* libxo

此外，还有一些脚本，如果移植到 flua 上，效果会很好：

* certctl(8)

### [实现 NFS over TLS](https://www.freebsd.org/status/report-2020-07-2020-09.html#NFS-over-TLS-implementation)

联系方式：Rick Macklem <<rmacklem@freebsd.org>>

为了提高 NFS 的安全性，我预计将成为 RFC 的一份互联网草案，规定使用 TLS 1.3 来加密用于 NFS 的 Sun RPC 连接的所有数据流量。

尽管 NFS 一直能够使用 sec=krb5p 来加密传输中的数据，但这需要一个 Kerberos 环境，因此未得到广泛采用。它还要求在软件中执行加密/解密，因为只有 RPC 消息中的 NFS 参数被加密。由于内核 TLS 可以使用硬件辅助来提高性能，并且不需要 Kerberos，待实现可用，NFS over TLS 可能会得到更广泛的采用。

此项目的编码工作现已完成。所有必需的 NFS 和内核 RPC 代码更改已经提交到 -CURRENT。现在认为守护进程已完成，但仍将保留在 base/projects/nfs-over-tls 目录中，直到 -CURRENT 包含内核 TLS 支持的 OpenSSL 库。如果这在 FreeBSD-13 中没有实现，希望经过修补的 OpenSSL 和守护进程可以成为 Port。

为了支持像笔记本电脑这样的客户端，执行 TLS 握手的守护进程现在可以选择处理来自站点本地 CA 的客户端 X.509 证书。现在已经有 exports(5) 选项，要求客户端提供有效的 X.509 证书。

尽管设置系统以进行测试仍然有些不便，[文档已经提供，供那些想帮助测试的人使用](https://people.freebsd.org/~rmacklem/nfs-over-tls-setup.txt)。

当前实现的主要限制是它使用 TLS1.2 而不是 TLS1.3。预计随着 KERN\_TLS rx 补丁的发布，TLS1.3 的支持将得到实现。

非常欢迎第三方测试。

### [FreeBSD 上的 syzkaller](https://www.freebsd.org/status/report-2020-07-2020-09.html#syzkaller-on-FreeBSD)

联系方式：Mark Johnston <<markj@FreeBSD.org>>

有关 syzkaller 的介绍，请参见 2019q1 季度报告中的 syzkaller 条目。

syzkaller，特别是公共的 syzbot 实例，继续在 FreeBSD 内核中发现错误。这些错误已经在 VFS 名称缓存、TCP 和 SCTP 栈、pf(4)、Unix 域套接字实现和 Linuxulator 等子系统中得到修复。

FreeBSD 基金会赞助了一些工作，以启用跨操作系统模糊测试。这使得可以使用 syzkaller 的 Linux 目标来模糊测试 Linuxulator。这个努力迅速找到了几个错误；待支持提交到上游，我们希望能够利用 syzbot 来获得对 Linux 系统调用接口的持续测试，除了本地和 32 位兼容性接口之外。

还做了一些工作，使得可以在 FreeBSD jail 中运行 syzkaller，最终目的是简化将包含所有运行 syzkaller 所需内容的二进制镜像分发到新主机的过程。目前需要执行多个设置步骤，使得部署过程有些麻烦。

赞助：FreeBSD 基金会

## [内核](https://www.freebsd.org/status/report-2020-07-2020-09.html#Kernel)

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

### [DRM 驱动程序更新](https://www.freebsd.org/status/report-2020-07-2020-09.html#DRM-Drivers-Update)

| 链接                                               |
| ------------------------------------------------ |
| [drm-kmod](https://github.com/freebsd/drm-kmod/) |

联系方式：Emmanuel Vadot <<manu@FreeBSD.Org>>

已经更新 FreeBSD 13-CURRENT 的 drm 驱动程序，以匹配 Linux 5.4.62。随后，graphics/drm-current-kmod 也已更新，以跟进这一 Linux 的 LTS 版本。

目前，graphics/drm-devel-kmod 也在跟踪该版本，但将在不久的将来更新为 Linux drm 驱动程序的更高版本。

已从 Port 中移除大量的 linuxkpi 代码，或已用 BSD 许可证的实现替代。

赞助：FreeBSD 基金会

### [DTS 更新](https://www.freebsd.org/status/report-2020-07-2020-09.html#DTS-Update)

联系方式：Emmanuel Vadot <<manu@FreeBSD.org>>

DTS 文件（设备树源文件）已更新，HEAD 分支与 Linux 5.8 保持同步，12-STABLE 分支与 Linux 5.6 保持同步。

### [改进 DesignWare 以太网适配器驱动程序](https://www.freebsd.org/status/report-2020-07-2020-09.html#DesignWare-Ethernet-adapter-driver-improvements)

| 链接                                                       |
| -------------------------------------------------------- |
| [WIP 分支](https://github.com/gonzoua/freebsd/tree/rk_eth) |

联系方式：Oleksandr Tymoshenko <<gonzo@FreeBSD.org>>

DesignWare 以太网适配器 IP 被广泛应用于 Rockchip 和 Allwinner 的 SoC。该驱动程序进行了以下修复：

* 初始化时钟，而不是依赖 u-boot 来执行正确的操作。
* 检测媒体类型并相应地调整控制器配置。
* 增加对 RMII PHY 模式的支持。

尚未提交的更改包括通过增加对多段 mbuf 传输的支持来优化性能。下一步是尝试通过使用中断合并来进一步提升性能。

### [谷歌编程之夏’20 项目 - eBPF XDP 钩子](https://www.freebsd.org/status/report-2020-07-2020-09.html#Google-Summer-of-Code%E2%80%9920-ProjecteBPF-XDP-Hooks)

| 链接                                                                         |
| -------------------------------------------------------------------------- |
| [Github 差异链接](https://github.com/Ankurk99/freebsd/tree/ebpf-import)        |
| [项目 Wiki](https://wiki.freebsd.org/SummerOfCode2020Projects/eBPFXDPHooksl) |

联系方式：Ankur Kothiwal <<ankur@freebsd.org>>

eBPF eXpress Data Path (XDP) 允许运行 eBPF 程序来尽早过滤接收的包，从而避免在执行过滤之前的额外处理开销。该项目的目标是扩展现有的 FreeBSD 网络驱动程序（例如 VirtIO if\_vtnet）以便在处理新接收的数据包时调用 eBPF 程序。简而言之，使用 XDP 时，驱动程序必须根据程序指定的操作来对数据包进行处理：PASS（接受并正常处理）、DROP（丢弃）、TX（发送）或 REDIRECT（重定向）。还将实现 eBPF 辅助函数和映射，以帮助包过滤。

已实现功能：

* 在接口注册到 pfil 时注册 eBPF 探针。
* 激活 eBPF 探针。
* 创建钩子并将其链接到 pfil 头部，当 eBPF XDP 探针被激活并成功列出 XDP 探针时。
* 创建 xdp\_rx 函数，将接收到的数据包传递给 eBPF 程序，以便进一步处理。该函数将返回 XDP 操作：DROP 和 PASS。
* 注册 xdp 钩子并将其链接到 pfil 头部。
* 编写一个 eBPF 程序来处理（当前丢弃和传递）ICMP 流量——这是为了测试钩子是否正常工作。
* 编写加载程序函数，将 ICMP 过滤程序加载到内核中。

未来工作：

* 当前只能将 XDP 钩子附加到 PASS 和 DROP 数据包——钩子分离的工作尚未完成。
* 实现 XDP 动作以“TX”和“REDIRECT”数据包。

最终交付物：

* 实现了 XDP 钩子以传递和丢弃数据包。
* 创建了一个加载程序，将 eBPF 程序附加到内核。
* 一个测试程序，用于丢弃 ICMP 过滤器。

此代码是在 2020 年谷歌编程之夏（GSoC）的指导下完成的，由 Ryan Stone（rstone@）提供指导。FreeBSD 的 eBPF 实现仍在进行中，目前 FreeBSD 尚不支持 eBPF。eBPF 的基础实现是 2018 年 GSoC 项目的一部分，并且仍在开发中。该项目基于该实现，因此只有当 FreeBSD 支持 eBPF 时，XDP 实现才会合并到 FreeBSD 源代码中。

目前，该代码正在进行中，并已合并到 Ryan Stone 的 [支持 eBPF 实现的分支](https://github.com/rysto32/freebsd/tree/ebpf-import)。

赞助：谷歌编程之夏

### [更新 FreeBSD ENA 驱动程序](https://www.freebsd.org/status/report-2020-07-2020-09.html#ENA-FreeBSD-Driver-Update)

| 链接                                                                                    |
| ------------------------------------------------------------------------------------- |
| [ENA README](https://github.com/amzn/amzn-drivers/blob/master/kernel/fbsd/ena/README) |

联系方式：Michal Krawczyk <<mk@semihalf.com>>\
联系方式：Artur Rojek <<ar@semihalf.com>>\
联系方式：Marcin Wojtas <<mw@semihalf.com>>

ENA（Elastic Network Adapter）是亚马逊 Web 服务（AWS）虚拟化环境中的智能网卡。ENA 驱动程序支持多个发送和接收队列，并且可以处理高达 100 Gb/s 的网络流量，具体取决于使用的实例类型。

自上次更新以来完成的工作：

* 修复当 ENA 集成到内核二进制文件时的编译问题。
* 将 ENA v2.2.0 驱动程序合并到 FreeBSD 12.2。

进行中的工作：

* 添加功能，允许读取额外的 ENI（Elastic Network Interface）度量信息，关于带宽/包每秒（BW/pps）超限的情况。
* 引入完整的内核 RSS API 支持。
* 允许重新配置 RSS 间接表和哈希键。
* 评估并原型化驱动程序移植到 iflib 框架的工作。

赞助：亚马逊公司

### [支持 IPSec 扩展序列号（ESN）](https://www.freebsd.org/status/report-2020-07-2020-09.html#IPSec-Extended-Sequence-Number-\(ESN\)-support)

联系方式：Grzegorz Jaszczyk <<jaz@semihalf.com>>\
联系方式：Patryk Duda <<pdk@semihalf.com>>\
联系方式：Marcin Wojtas <<mw@semihalf.com>>

扩展序列号（ESN）是 IPSec 的扩展，定义在 [RFC4303 第 2.2.1 节](https://tools.ietf.org/html/rfc4303#section-2.2.1) 中。它使得能够实现高速度的 IPSec 实现，在标准的 32 位序列号不足以满足需求时，ESN 提供了解决方案。ESN 的一个关键特性是，仅低 32 位的序列号会通过网络传输。高 32 位由发送方和接收方维护。此外，高位位也包含在完整性检查值（ICV）字段的计算中。

ESN 支持包含以下内容：

* 修改现有的反重放算法，以满足 ESN 要求。
* 当禁用 ESN 时，在 UINT32\_MAX 的 80% 时触发软生命周期过期。
* 实现对加密软引擎中包括 ESN 进行支持，支持加密模式和认证模式（例如，AES-CBC 和 SHA256 HMAC），以及组合模式（例如，AES-GCM）。
* 在 AES-NI 引擎中实现支持，支持加密模式和认证模式，以及组合模式。

自上次更新以来完成的工作：

* 调整加密部分的实现，以适应重新设计的开放加密框架。
* 将核心 ESN 实现从加密驱动程序移到 netipsec 层。
* 利用新引入的 crp\_aad 机制来支持组合模式。
* 引入了一些小修复和改进。

待办事项

* 完成 Phabricator 中的审查过程，并将补丁合并到树中。

赞助：Stormshield

### [支持 NXP ARM64 SoC](https://www.freebsd.org/status/report-2020-07-2020-09.html#NXP-ARM64-SoC-support)

联系方式：Marcin Wojtas <<mw@semihalf.com>>\
联系方式：Artur Rojek <<ar@semihalf.com>>\
联系方式：Dawid Gorecki <<dgr@semihalf.com>>

Semihalf 团队开始为 FreeBSD 提供 [NXP LS1046A SoC](https://www.nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/qoriq-layerscape-arm-processors/qoriq-layerscape-1046a-and-1026a-multicore-communications-processors:LS1046A) 的支持。

LS1046A 是一款四核 64 位 ARMv8 Cortex-A72 处理器，集成了数据包处理加速和高速外设，包括 10 Gb 以太网、PCIe 3.0、SATA 3.0 和 USB 3.0，适用于广泛的网络、存储、安全和工业应用。

自上次更新以来完成的工作：

* 上游提交了 QorIQ SDHCI 驱动程序（r365054）。

目前，Semihalf 上游提交活动已完成。主要的非树支持组件包括：

* DPAA 网络控制器支持。
* QSPI 控制器支持。

它们可以在 11.2-RELEASE 上工作，但仍然需要大量的工作以适应 FreeBSD-CURRENT。

赞助：Alstom Group

### [PowerPC64LE 架构的新增支持](https://www.freebsd.org/status/report-2020-07-2020-09.html#Addition-of-PowerPC64LE-Architecture)

| 链接                                                                               |
| -------------------------------------------------------------------------------- |
| [早期笔记](https://lists.freebsd.org/pipermail/freebsd-ppc/2020-August/012043.html)  |
| [公告](https://lists.freebsd.org/pipermail/freebsd-ppc/2020-September/012098.html) |

联系方式：Brandon Bergren <<bdragon@freebsd.org>>

自 r366063 起，-CURRENT 中为 POWER8 和 POWER9 机器提供了对小端 PowerPC64（PowerPC64LE）的实验性支持。

在 2010 年，当 FreeBSD 移植到 PowerPC64 时，平均用户使用的是 G5 PowerMac，这是一台纯大端机器。

当时，虽然 32 位 PowerPC 机器可以在小端模式下运行，同时 POWER6 和 POWER7 也支持小端，但在内核级管理中所涉及的复杂性以及固件支持的缺乏，使得其不适合广泛支持。

IBM 在设计 POWER8 时，主要关注点之一是改进小端支持，使其与大端支持平等。

这一改进使得在传统上主要是大端平台的环境中，支持小端操作系统变得可行。

到了 2020 年，得益于 Raptor Blackbird 的普及，许多用户能够负担得起 POWER9，部分 POWER8 硬件也变得容易获取，再加上 IBM 对 POWER 小端的未来重点关注，现代显卡和图形环境中的大端支持逐渐衰退，因此对 FreeBSD 在 POWER 上的 小端版本的需求增加。

随着 FreeBSD/PowerPC64 在 2019 年过渡到 ELFv2 ABI，作为 2019q4 PowerPC 在 Clang 上努力的一部分，最后一个重大障碍被清除。

由于没有其他人从事该工作，而且我具备所需的技能，因此我决定在一个周末实验一个小端内核，看看移植的难度。

结果比我预期的要简单得多。三天后，我在 qemu 中获得了控制台支持，再经过一周的调试后，我已经能在硬件上完全运行了。

现在，FreeBSD PowerPC64LE 已经成为基于系统的实验性 MACHINE\_ARCH，并且在快速发展中。

大端 PowerPC64 仍然是未来可预见的首选平台，且不会被弃用。

赞助：Tag1 Consulting, Inc.

### [ure - 更新 USB 3.0 千兆以太网驱动程序](https://www.freebsd.org/status/report-2020-07-2020-09.html#ureUSB-3.0-Gigabit-Ethernet-Driver-update)

| 链接                                                                                           |
| -------------------------------------------------------------------------------------------- |
| [svn 提交：r365648](https://svnweb.freebsd.org/changeset/base/365648)                           |
| [FreeBSD-SA-20:27.ure](https://www.freebsd.org/security/advisories/FreeBSD-SA-20:27.ure.asc) |
| [D25809 对 if\_ure 的重大更新](https://reviews.freebsd.org/D25809)                                 |

联系方式：John-Mark Gurney <<jmg@FreeBSD.org>>

ure 是处理 RealTek 以太网适配器的驱动程序，包括 RTL8153 USB 3.0 千兆以太网适配器。它在许多以太网加密狗和扩展坞中使用。

在此次更新之前，驱动程序的速度受限。在我的测试中，我只能达到大约 91Mbps。这个限制是因为每次 USB 传输只能传输一个数据包。USB 的传输限制为每秒 8000 次传输（1500 字节/包 *8000 包/秒* 8 位/字节 = 96 Mbps）。对于快速以太网（RTL8152，100Mbps），这个速度是可以接受的，但对于支持千兆以太网的设备，这就成为了瓶颈。

此次更新增加了在单个 USB 传输中发送和接收多个数据包、VLAN 硬件标记以及启用 TCP 和 UDP 校验和卸载的功能。这样，千兆以太网的速度提高到了大约 940 Mbps。

在进行此项工作时，发现了驱动程序中的一个安全漏洞。由于设备寄存器设置不当，在某些设备上，数据包会被不应该分段，从而导致驱动程序无法正确处理。这允许攻击者生成大帧（例如 ping 数据包或大 TCP 传输），并将任意数据包注入到网络堆栈中。这可能使攻击者伪造来自其他机器的流量，并绕过 VLAN 保护。有关更多信息，请参阅 SA。

作为此次工作的一个部分，创建了一个脚本，用于运行测试以验证驱动程序的基本功能（无选项），然后遍历每个选项，确保它们能正常工作。该脚本将在未来发布。

如果你有兴趣提供帮助或测试，请与我联系。

### [VXLAN 的无状态硬件卸载](https://www.freebsd.org/status/report-2020-07-2020-09.html#Stateless-hardware-offloads-for-VXLANs)

| 链接                                                                         |
| -------------------------------------------------------------------------- |
| [r365867](https://svnweb.freebsd.org/base?view=revision\&revision=r365867) |
| [r365868](https://svnweb.freebsd.org/base?view=revision\&revision=r365868) |
| [r365869](https://svnweb.freebsd.org/base?view=revision\&revision=r365869) |
| [r365870](https://svnweb.freebsd.org/base?view=revision\&revision=r365870) |
| [r365871](https://svnweb.freebsd.org/base?view=revision\&revision=r365871) |
| [RFC6935](https://tools.ietf.org/html/rfc6935)                             |

联系方式：Navdeep Parhar <<np@FreeBSD.org>>

VXLAN（虚拟扩展局域网）是一种隧道协议，其中虚拟局域网的第二层流量被封装在 UDP 中，并通过层 3 网络在 VTEP（VXLAN 隧道端点）之间传输。传输中的流量有两组网络头部：封装头部和被封装的流量头部。FreeBSD 支持 VXLAN，通过 if\_vxlan(4) 实现。

现代的网络接口卡（NIC）通常支持头部校验和插入与验证、传输中的 TSO（TCP 分段卸载）以及接收时的 RSS（接收侧负载分配）。但默认情况下，它们仅对最外层的头部进行操作。一些网络接口卡也能操作内层封装的数据帧。上面列出的提交允许 if\_vxlan(4) 利用这些支持。

r365867 和 r365868 添加了新的 mbuf 校验和标志和 ifnet 能力。r365870 实现了新功能的内核部分，并更新了 if\_vxlan(4) 以便使用它们。r365871 在 cxgbe(4) 驱动程序中实现了对新功能的支持。

VXLAN 和其他使用 UDP 的隧道协议明确允许外层 UDP 头部的零校验和，即使在 IPv6 下也是如此。r365869 添加了支持配置一个 UDP/IPv6 Port，以允许零校验和。

这项工作由 Chelsio Communications 赞助，并使用 cxgbe(4) 支持的 T6（Terminator 6）NIC 进行实现和测试。目前可以在 13.0-CURRENT（head）中使用，未来将在 12-STABLE 中提供。

可以像往常一样创建 VXLAN，并且如果底层物理接口支持 VXLAN 无状态卸载，将自动启用校验和和 TSO 功能。使用 ifconfig 列出、禁用和启用 VXLAN 接口上的校验和功能。若发现问题，请使用 <https://bugs.freebsd.org/bugzilla/> 报告。

未来工作：

* 从驱动程序的接收例程直接调用 vxlan 输入例程。
* 在 if\_vxlan(4) 中增加 LRO 支持。
* 支持 GENEVE。

赞助商：Chelsio Communications

### [更新无线](https://www.freebsd.org/status/report-2020-07-2020-09.html#Wireless-updates)

| 链接                                                                                   |
| ------------------------------------------------------------------------------------ |
| [freebsd-wireless 邮件列表](https://lists.freebsd.org/mailman/listinfo/freebsd-wireless) |
| [athp GitHub 仓库](https://github.com/erikarn/athp)                                    |

联系方式：Adrian Chadd <<adrian@FreeBSD.org>>\
联系方式：Bjoern A. Zeeb <<bz@FreeBSD.org>>

以下工作已在 FreeBSD HEAD 中完成（部分已在 Q2 中），并已合并到 12.2-BETA2，包括针对更好的 11n 和即将推出的 11ac 支持的 net80211 和驱动程序更新。

具体来说，这包括 ath(4) 更新、部分 run(4) 的 11n 支持、otus(4) 的 11n 支持、A-MPDU、A-MSDU、A-MPDU+A-MSDU 和 Fast 帧选项、扫描修复、增强的 jails 中 PRIV 检查、恢复父设备名称打印、改进即将到来的 VHT 支持、许多底层基础设施改进、新设备 ID 和调试工具更新。

如果有机会，请在发布前进行测试。

#### Atheros 11ac 驱动程序 athp

在过去的三个月里，athp(4) 驱动程序的 ath10k 移植进展顺利。Adrian 报告了以下重要更改：

* 实现了每节点的传输缓冲，这对于正确的 hostap 和 QCA6174 行为至关重要。
* 修复了忽略发送某些管理帧的问题；空数据帧被过滤掉，导致不希望出现的 hostap 行为。
* 传输路径重构减少了代码重复。
* 固件启动 / VAP 跟踪修复，确保 VAP 创建 / ifconfig up 后，第一 VAP 不会停用。
* 修正了 hostap 模式 PHY 配置，现在允许非 VHT 站点与 VHT AP 正常关联并交换数据。
* 在驱动程序中增加了加密密钥配置缓存，确保 ieee80211\_key 详细信息在密钥删除后仍然可用；net80211 在驱动程序任务完成固件命令之前会重用或释放状态。

#### 新的 Intel 无线设备支持

完成了将 net80211 支持集成到 LinuxKPI 兼容层中的初步工作，以启动无线部分。此外，上游代码更改和问题的解决与审查工作已开始。一个方面是尝试将大多数编译时更改上游到 iwlwifi 驱动程序，另一个方面是解决冲突的 LinuxKPI 更改，以避免破坏 DRM 图形驱动程序。Bjoern 希望在一些问题得到解决后，能尽快回到关注无线部分，并产生新的快照。

#### rtw88 和 brcmfmac

随着 Intel 驱动程序移植和 LinuxKPI 的进展，rtw88 和较低程度的 brcmfmac 移植也受益于此。最近，Bjoern 还获得了一块 brcmfmac PCIe 卡，并开始为其移植支持。目前，这仍然是一个闲暇时间的项目。

Bjoern 的工作由 Rubicon Communications, LLC（以 "Netgate" 名义运营）和 FreeBSD 基金会赞助。

### [ZSTD 压缩在 ZFS 中的应用](https://www.freebsd.org/status/report-2020-07-2020-09.html#ZSTD-Compression-in-ZFS)

联系方式：Allan Jude <<allanjude@freebsd.org>>

Zstandard（ZSTD）是一种现代高性能的压缩算法，旨在提供与 gzip 相同的压缩比，同时提供更好的性能。ZSTD 已在 FreeBSD 中用于多个其他用途，包括压缩内核崩溃转储、作为 gzip 或 bzip 的替代品压缩日志文件，以及后续版本的 pkg(8)。

这项将 ZSTD 完全集成到 ZFS 中的工作由 FreeBSD 基金会赞助。

在第三季度，ZSTD 集成到 OpenZFS 的工作已经在上游 OpenZFS 仓库中完成，并且新的 OpenZFS 2.0 代码库已导入 13-CURRENT。此项目的已完成里程碑：

* 将 ZSTD 1.4.5 导入 OpenZFS，使用了最近上游 zstd 功能，使其更容易嵌入 zstd 到其他项目中。
* 更改了压缩级别的跟踪和继承方式。
* 通过嵌入式块头保存和恢复压缩级别。
* 还在嵌入式块头中存储了使用的 zstd 版本，以确保向后兼容。由于 zstd 可能会对块进行更强的压缩，如果升级了 zstd，块的校验和可能不匹配。
* 添加了测试，确保 zstd 压缩和元数据能够在 ZFS 复制中存活。
* 解决了 L2ARC 和 ZFS 本地加密可能发生的负面交互问题。
* 修复了如果禁用压缩 ARC 特性时 L2ARC 的 bug。
* 改进了 ZFS 特性激活代码，以确保 zstd 无法创建导致旧版本 ZFS 崩溃的池。

通过这些更改，升级后的池可以使用 zstd 或 zstd-fast 对数据进行压缩，支持多种不同的压缩级别。这将允许存储管理员选择最适合其需求的性能与压缩之间的权衡。

剩余任务：

* 在 FreeBSD 手册的 ZFS 章节中增加关于 zstd 的部分。
* 创建更多关于选择适当压缩级别的文档。
* 完成 FreeBSD 启动加载器中的 ZSTD 支持（Warner Losh <imp@freebsd.org>）。

赞助商：FreeBSD 基金会

## [架构](https://www.freebsd.org/status/report-2020-07-2020-09.html#Architectures)

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

### [CheriBSD 2020 Q3](https://www.freebsd.org/status/report-2020-07-2020-09.html#CheriBSD-2020-Q3)

联系方式：Alex Richardson <<arichardson@FreeBSD.org>>\
联系方式：Andrew Turner <<andrew@FreeBSD.org>>\
联系方式：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-MIPS、CHERI-RISC-V 和 Arm 即将发布的实验性 Morello 处理器（预计在 2021 年底发布）。CheriBSD 是一款研究型操作系统，拥有一个稳定的基线实现，许多新的研究功能已经或正在被合并到其中：

* **Arm Morello** - 我们正在准备开源 CheriBSD 对 Arm Morello 架构的适配。Morello 分支正在更新为最新的 CheriBSD 基线，补丁正在审查中，以便上游到我们的开源仓库。CheriBSD 目前可以在 Morello 模拟器上启动并运行静态链接的 CheriABI 二进制文件，动态链接支持正在进行中，操作系统和工具链的 bug 也在修复中。我们计划在 2020 年 10 月中旬发布一个 CheriBSD/Morello 的首个快照，并与其他开源的 Morello 软件一起发布，但我们的目标是 2020 年 12 月发布一个更加成熟和可用的实现。
* **内核空间的空间内存安全（纯能力内核）** - 当前的 CheriBSD 内核是一个混合的 C 程序，其中只有指向用户空间的指针是 CHERI 能力。这确保内核遵循应用程序运行时的意图，且无法用于绕过应用程序指针的边界。我们已经开发并即将合并一个纯能力内核，其中所有的指针都是经过适当边界限定的能力。这大大减少了缓冲区溢出的机会。这种空间内存安全为未来的工作奠定了基础，如设备驱动程序的隔离和内核的时间安全性。
* **用户空间堆的时间内存安全（Cornucopia）** - CHERI 能力提供了必要的特性，以启用对已释放指针的有效且高效的撤销。通过 [Cornucopia](https://www.cl.cam.ac.uk/research/security/ctsrd/pdfs/2020oakland-cornucopia.pdf)，我们实现了一个轻量级的撤销框架，提供了防止“重新分配后使用”错误的保护，平均开销低于 2%。我们计划在接下来的一年里进一步降低这些开销，并将此功能合并到主线的 CheriBSD 中。
* 我们一直在致力于更新来自布加勒斯特理工大学的 arm64 bhyve，以便将其提交到 FreeBSD。我们已经将初步的修改上游到 FreeBSD，以支持这一工作。
* **FreeBSD 基线改进** - 我们正在将各种 bug 修复和 PCIe 支持的改进上游到 FreeBSD，还为 N1SDP 和 Morello SoC 上的系统 MMU（SMMU）提供了支持。我们已经上游了支持从 macOS 和 Linux 跨平台构建 FreeBSD（有一些限制；请参见关于跨构建的单独条目）。我们还修复了 RISC-V ABI 的实现 bug。

#### CHERI 文档和练习

* 我们发布了 [能力硬件增强的 RISC 指令集：CHERI 指令集架构（版本 8）](https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-951.pdf)。主要变化包括将 CHERI-RISC-V 提升为非实验性，并讨论了 Arm 的 Morello 原型。
* 我们开发了一套 [对抗性 CHERI 练习和任务](https://ctsrd-cheri.github.io/cheri-exercises)，旨在向安全研究人员介绍 CHERI 保护功能。

### [FreeBSD/RISC-V 项目](https://www.freebsd.org/status/report-2020-07-2020-09.html#FreeBSD/RISC-V-Project)

| 链接                                     |
| -------------------------------------- |
| [Wiki](https://wiki.freebsd.org/riscv) |

联系方式：Mitchell Horne <<mhorne@FreeBSD.org>>\
联系方式：[freebsd-riscv 邮件列表](https://lists.freebsd.org/mailman/listinfo/freebsd-riscv)\
联系方式：IRC #freebsd-riscv 在 freenode 上

FreeBSD/RISC-V 项目为在 [RISC-V 指令集架构](https://riscv.org/) 上运行 FreeBSD 提供支持。

本季度，我们修复了多个重要的 bug。我们识别并解决了系统中的几个挂起问题，还修复了 QEMU 中实现平台级中断控制器（Platform Level Interrupt Controller）的 bug。这个修复已包含在新的 `devel/qemu50` 和 `devel/qemu-devel` Port 中。

这些修复的最终结果是，现在可以可靠地在 QEMU 中运行测试套件，并且可以顺利完成。整个运行过程需要几个小时，因此已配置 CI 每天运行一次这个任务。目前，我们正在积极努力缩短整个测试套件的运行时间。

我们创建了一个新的 u-boot Port：`sysutils/u-boot-qemu-riscv64`。此变体可以作为辅助引导程序，与 OpenSBI 一起加载并启动 FreeBSD 的 `loader(8)`，从 EFI 系统分区中启动。

下个季度，可能会有更多修复来解决一些失败的测试用例。

## [Ports](https://www.freebsd.org/status/report-2020-07-2020-09.html#Ports)

涉及 Ports 的更改，无论是对大多数树进行的广泛更改，还是对单个 Port 的修改。

### [更新 grub-bhyve](https://www.freebsd.org/status/report-2020-07-2020-09.html#Update-to-grub-bhyve)

| 链接                                                   |
| ---------------------------------------------------- |
| [grub-bhyve Git 仓库](https://gitlab.com/ctuffli/grub) |

联系方式：Chuck Tuffli <<chuck@freebsd.org>>

bhyve 是 FreeBSD 和其他操作系统中用于运行虚拟机的虚拟化程序。当不使用启动 ROM（即 UEFI）时，用户必须为 bhyve 加载来宾操作系统。对于非 FreeBSD 来宾，加载程序是修改版的 GNU GRUB（即 GNU GRand Unified Bootloader），它与 bhyve 进行接口。这项工作旨在更新基础的 GRUB 代码到最新版本，并提高 FreeBSD 上的可用性。

当前的 [grub-bhyve](https://www.freshports.org/sysutils/grub2-bhyve/) 基于旧版 GRUB（大约是 2015 年的版本），因此缺少一些更新的功能，如 XFS 文件系统和 [syslinux](https://www.syslinux.org/) 支持。通过此次更新，现在安装 CentOS 等操作系统时，不再需要额外步骤来更改默认文件系统为 XFS 以外的其他文件系统。

在内部，代码已重新结构化，成为一个独立的“平台”，这应使其更容易与上游开发保持同步。最大的改进是能够自动找到并加载来宾磁盘映像中的 GRUB 配置文件。通过这个更改，用户无需创建设备映射文件或指定使用哪个 Linux 内核或 initrd 镜像。更重要的是，如果来宾镜像更新了其 GRUB 配置（例如，在更新内核后），在调用 grub-bhyve 时不需要做任何更改。请注意，这个功能需要一个新的“disk”选项：

```sh
## grub-bhyve --disk=/zroot/vms/u18-mini/disk0.img --vm=u18-mini
```

自动配置文件检测与 GRUB 配置文件（例如 CentOS、Ubuntu）以及 syslinux 配置（例如 Alpine）兼容。对于冒险者来说，grub-bhyve Git 仓库的 blscfg 分支上有对 Fedora 的 BootLoaderSpec（即 `blscfg`）的实验性支持。

该代码已经在一些 Linux 变体上进行了测试，但仍需要更广泛的测试（和 bug 报告！）。新版本没有 Port，但可以在 FreeBSD 上轻松构建。在克隆/下载源代码后，运行：

```bash
$ PYTHON=python3.7 ./bootstrap $ MAKE=gmake ./configure --with-platform=bhyve $ gmake
```

生成的二进制文件 `grub-bhyve` 将位于 `grub-core/` 目录中。如果你成功使用或遇到问题，请告知我。

### [FreeBSD 上的 KDE](https://www.freebsd.org/status/report-2020-07-2020-09.html#KDE-on-FreeBSD)

| 链接                                                         |
| ---------------------------------------------------------- |
| [KDE FreeBSD](https://freebsd.kde.org/)                    |
| [KDE Community FreeBSD](https://community.kde.org/FreeBSD) |

联系方式：Adriaan de Groot <<kde@FreeBSD.org>>

KDE on FreeBSD 项目的目标是将 KDE 社区发布的所有软件打包到 FreeBSD 的 Ports 中。这些软件包括一个完整的桌面环境 KDE Plasma、一个名为 [KDevelop](https://www.kdevelop.org/) 的 IDE、一个名为 [Kontact](https://kontact.kde.org/) 的 PIM 套件以及其他数百个可以在任何 FreeBSD 机器上使用的应用程序。

随着几乎全在线时代的延续，KDE 社区转变了工作方式，开始参与在线活动。每年的大会 [Akademy](https://akademy.kde.org/2020/) 也通过视频会议的形式在线进行。同时，软件的发布依然在继续，因此本季度 kde@ 团队做了以下工作：

* 将计划于 2020 年 10 月正式发布的 KDE Plasma 下一版本的 beta 版本，放入了 [Area51 开发树](https://community.kde.org/FreeBSD/Setup/Area51)。Area51 是 FreeBSD Ports 的一个分支，用于进行 KDE Port 的新开发。
* 每月的 KDE Plasma 桌面更新按时且安全地发布。
* 本季度内发布了三次 KDE Frameworks 5 版本，包括一个新的框架来处理 DAV 作业。
* 6 月的应用更新及其 .1 版本略微延迟发布，但带来了通常的 KDE 应用程序和库更新。
* 一个新的 [Digikam](https://www.digikam.org/) 版本在发布当天就进入了 Ports。
* 一个新的 [KDevelop](https://www.kdevelop.org/) 版本在发布后一天进入 Ports。这个更新修复了多个与重构支持相关的崩溃问题。
* Qt 更新到了 Qt 5.15，这是 Qt5 系列的最后一个 LTS 版本，预计将发布 bug 修复版本，但下一个主要版本将是 Qt 6。

在基础设施方面，8 月对 CMake 和 ninja 进行了小幅更新。像往常一样，kde@ 团队继续支持 xorg@ 和 gnome@ 团队在 FreeBSD 上维护 Free Desktop 堆栈，包括 XOrg、poppler 和 xdg-utils。一个新的 `MAINTAINER` 组 desktop@ 已经创建，用于共享维护这个共享堆栈。

随着 Python2 的弃用临近，QtWebEngine 的构建系统（它本身是 Chromium 的一个分支）已成为第四季度的一个紧迫问题，未来几个月无疑将消耗大量时间。

## [文档](https://www.freebsd.org/status/report-2020-07-2020-09.html#Documentation)

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

### [DOCNG 在 FreeBSD 上](https://www.freebsd.org/status/report-2020-07-2020-09.html#DOCNG-on-FreeBSD)

| 链接                                                                     |
| ---------------------------------------------------------------------- |
| [DOCNG 网站仓库](https://gitlab.com/carlavilla/freebsd-hugo-website)       |
| [DOCNG 文档仓库](https://gitlab.com/carlavilla/freebsd-hugo-documentation) |
| [DOCNG 分享仓库](https://gitlab.com/carlavilla/freebsd-hugo-data)          |

联系方式：Sergio Carlavilla <<carlavilla@FreeBSD.org>>

Doc New Generation 项目旨在将网站和所有现有文档转换为 Hugo/AsciiDoctor。目前，几乎所有内容都已转换，你可以在仓库中查看。

使用 Hugo 和 AsciiDoctor 的目标是减少学习曲线，让人们可以快速开始使用我们的文档系统。使用 Hugo 的其他好处是，我们可以使用除 AsciiDoctor 之外的其他技术，如 MarkDown、RST、Pandoc 等。

剩余的任务包括：

* 完成一些书籍的 AsciiDoctor 转换。
* 对 CSS 进行一些调整以实现响应式设计。
* 为 AsciiDoctor 扩展添加索引表格和图形功能。
* 进行一次全面审查。

迁移的具体日期尚待讨论。欢迎提交补丁、评论和异议。

## [第三方项目](https://www.freebsd.org/status/report-2020-07-2020-09.html#Third-Party-Projects)

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

### [Potluck - pot 的 flavor 与镜像仓库](https://www.freebsd.org/status/report-2020-07-2020-09.html#PotluckFlavour-&-Image-Repository-for-pot)

| 链接                                                      |
| ------------------------------------------------------- |
| [Potluck 仓库与项目](https://potluck.honeyguide.net/)        |
| [Potluck 在 GitHub 上](https://github.com/hny-gd/potluck) |
| [pot 项目](https://pot.pizzamig.dev/)                     |

联系方式：Stephan Lichtenauer <<sl@honeyguide.eu>>

pot 是一个 jail 管理工具，[还支持通过 nomad 进行编排](https://www.freebsd.org/news/status/report-2020-01-2020-03.html#pot-and-the-nomad-pot-driver)。

Potluck 旨在成为 FreeBSD 和 pot 的资源库，类似于 Dockerhub 对于 Linux 和 Docker 的作用：一个用于 pot 的 flavor 和完整镜像的仓库。

在上个季度，我们创建了一组初始的 Nomad、Consul 和 Traefik 镜像，这些镜像足以直接运行一个简单的虚拟数据中心。[一篇三部分的文章系列，解释如何设置这个环境](https://honeyguide.eu/posts/virtual-dc1/) 也已经发布。

此外，我们还创建了适合通过 Nomad 和 Consul 在这种环境中进行调度的现成镜像，例如 BackupPC 或 Postfix 备份 MX 服务。

未来计划包括增加更多镜像，并在现有镜像中暴露更多配置选项，以实现更灵活的使用。

除了常规的反馈和测试，我们非常欢迎更多的 flavor 和补丁！

赞助商：Honeyguide GmbH & Honeyguide Group (Pty) Ltd

### [Puppet](https://www.freebsd.org/status/report-2020-07-2020-09.html#Puppet)

| 链接                                                                                 |
| ---------------------------------------------------------------------------------- |
| [Puppet](https://puppet.com/docs/puppet/latest/puppet_index.html)                  |
| [Puppet 的 FreeBSD Slack 渠道](https://puppetcommunity.slack.com/messages/C6CK0UGB1/) |
| [Bolt](https://puppet.com/docs/bolt/latest/bolt.html)                              |
| [Choria](https://choria.io/)                                                       |

联系方式：Puppet 团队 <<puppet@FreeBSD.org>>

自几年前我们上次发布状态报告以来，puppet@ 团队定期更新了各种 Puppet Port，以跟进 Puppet 4、Puppet 5 和 Puppet 6 的上游发布。Puppet 4 在达到 EOL 后被移除。

最近，团队努力增强 Facter 4，以便它可以作为 Facter 3 在 FreeBSD 上的替代品。Facter 4 是 Facter 3 的 Ruby 重写版本，而 Facter 3 则是 Facter 2 的 C++ 重写版本，Facter 2 最初是用 Ruby 编写的。因此，我们有两个 Facter Port：sysutils/facter 是 C++ 实现（Facter 3），sysutils/rubygems-facter 是 Ruby 实现（几周前已更新为 Facter 4）。Puppet 5 和 Puppet 6 Port 现在允许选择使用哪个版本的 Facter。Facter 4 将成为 Puppet 7 的默认版本，预计 Puppet 7 将很快发布。

我们正在准备添加 Puppet 7 Port（sysutils/puppet7），以及 PuppetServer 7（sysutils/puppetserver7）和 PuppetDB 7（databases/puppetdb7）Port。

关于编排，大多数 Marionette Collective Port 已被弃用，最后一个组件 sysutils/mcollective 也预计将很快被弃用：Marionette Collective 在 Puppet 6 中已不再提供，Bolt 已作为轻量级替代品提供。

Bolt 已经在 Port 树中可用，作为 sysutils/rubygems-bolt。如果你仍在使用 Marionette Collective，建议你关注 Choria，它很快将作为 sysutils/choria 进入 Port 树。Choria 是 Marionette Collective 的直接演变，允许平滑过渡。Choria 进入 Port 树后，Marionette Collective 将被弃用。
