# FreeBSD 2019 年第四季度状态报告

* 原文链接：<https://www.freebsd.org/status/report-2019-10-2019-12.html>

## 引言

这是 2019 年的最后一份季度报告。如你在上次报告中所记得的，我们更改了时间表：现在我们收集每个季度最后一个月的报告，并在下一个月编辑和发布完整的文档。因此，这里涵盖的是 2019 年 10 月至 12 月的时期。

如果你认为 FreeBSD 社区在圣诞季度活跃度较低，那么你将很高兴发现自己错了：快速浏览总结就能看出，过去几个月做了大量工作。

祝你阅读愉快！

——Lorenzo Salvadore

## [FreeBSD 团队报告](https://www.freebsd.org/status/report-2019-10-2019-12.html#FreeBSD-Team-Reports)

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

### [FreeBSD 核心团队](https://www.freebsd.org/status/report-2019-10-2019-12.html#FreeBSD-Core-Team)

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

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

* Bruce D. Evans (bde) 的妹妹 Julie Saravanos 给核心团队发来了悲痛的消息，Bruce 于 2019 年 12 月 18 日去世，享年 68 岁。Bruce 是社区中深受尊敬的成员，曾在核心团队工作，并做出了 5000 余次提交。Bruce 对我们文化的影响深远，以至于出现了新的术语。这是 Poul-Henning Kamp 发给 Julie 的一段话摘录：

  > 我不记得初次与 Bruce 沟通的确切时间，但大约是在 1980 年代末通过“UseNET”的方式。但我可以确定地说，很少有人比 Bruce 更激励我，或者比 Bruce 更提升我的编程水平，特别是在接下来半生的时间里。
  >
  > 所有大型项目都会发明自己的词汇，而在 FreeBSD 中，有两个新词就是“Brucification”和“Brucified”。
  >
  > “Brucification”意味着收到一封简短而礼貌的邮件，指出有时微妙的缺陷或忽视的细节，在源代码更改中发现的问题。它不一定是严重问题，甚至可能对任何人来说都不是问题，但无论如何，还是错了，应该修复。批评往往比原本的改动要长得多。
  >
  > 如果忽略了 brucifications，你就有可能被“brucified”，这意味着收到一份详细列出每个错误、失误、拼写错误、缺点、不合理的决策、值得怀疑的选择、风格违规和思维上的粗心的清单，通常会用一针见血的幽默表达出来。
  >
  > 最让人沮丧的是，Bruce 的批评完全合理且准确。我只能回忆起一两次能够回应“抱歉 Bruce，你错了……” - 我承认，在那些罕见的日子里，我觉得应该在我的键盘上刻一个记号。
  >
  > 我们收到的最后一封来自 Bruce 的邮件很好地展示了他为项目提供的深厚知识和洞察力：
  >
  > <https://docs.freebsd.org/cgi/getmsg.cgi?fetch=1163414+0+archive/2019/svn-src-all/20191027.svn-src-all>
* 12.1 版本献给了另一位在 2019 年四季度去世的 FreeBSD 开发者 Kurt Lidl。FreeBSD 基金会有一篇关于 Kurt 的纪念页面。<https://www.freebsdfoundation.org/blog/in-memory-of-kurt-lidl/>

  我们向 Bruce 和 Kurt 的家人表示深切的慰问。
* 核心团队已记录了项目的支持层级政策。<https://www.freebsd.org/doc/en_US.ISO8859-1/articles/committers-guide/archs.html>
* 核心团队批准了 James Clarke 的源代码提交权限。Brooks Davis (brooks) 将指导 James，John Baldwin (jhb) 将共同指导。
* 项目的第一次文档季结束时结果不理想。工作未能完成，且未能与作者建立联系。未支付报酬，资金已被留作后续工作使用。
* 谷歌编程之夏项目已完成。关于七个被接受项目的信息可以在维基页面上找到。<https://wiki.freebsd.org/SummerOfCode2019Projects>
* Adam Weinberger (adamw) 被加入到 conduct@ 邮件列表中。Adam 在个人事务中展现了能力、理解力和公正性。
* 許立文 (lwhsu) 在收到本地社区成员关于项目国际化政策的更新报告后联系了核心团队。进行了长时间的讨论，以确定如何重申项目在政治争议中的中立立场。对文档进行了更新，并决定未来的任何更改都需要明确的核心团队批准。<https://www.freebsd.org/internal/i18n.html>
* 在 Edward Napierała (trasz) 的提名下，核心团队投票批准 Daniel Ebdrup (debdrup) 和 Lorenzo Salvadore (salvadore) 成为项目成员。Daniel 和 Lorenzo 在过去几个季度一直在参与季度报告的工作。
* 核心团队发起的 Git 转换工作组在 2019 年最后一个季度继续开会。其报告仍在筹备中。

### [FreeBSD 基金会](https://www.freebsd.org/status/report-2019-10-2019-12.html#FreeBSD-Foundation)

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

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

以下是我们帮助 FreeBSD 的一些亮点：

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

我们帮助促进商业用户与 FreeBSD 开发者之间的合作。我们还会与公司会面，讨论他们的需求，并将这些信息反馈给项目。在第四季度，Ed Maste 和 Deb Goodkin 与美国的一些商业用户进行了会面。这不仅对上述内容有益，而且帮助我们了解 FreeBSD 的一些应用场景。我们还能够在湾区供应商/开发者峰会和欧洲开源峰会期间与大量商业用户见面。这些场所为与商业和个人用户以及 FreeBSD 贡献者会面提供了绝佳机会。

#### 筹款努力

在 2019 年，我们重点支持了项目最需要帮助的几个关键领域。第一个领域是软件开发。无论是聘请 FreeBSD 开发者参与 Wi-Fi 支持等项目，还是提供内部员工快速实现硬件解决方案，我们都积极参与，帮助保持 FreeBSD 的创新性、安全性和可靠性。软件开发还包括支持开发流程的工具和基础设施，团队成员正在领导持续集成工作，并积极参与集群管理和安全团队的工作。

我们的倡导工作重点是招募新用户和贡献者加入项目。我们参加并参与了 38 个会议和活动，覆盖 21 个国家。从做 FreeBSD 演讲和工作坊，到提供展位，我们与成千上万的与会者进行了 1 对 1 的交流。

我们的旅行也为我们提供了直接与 FreeBSD 商业用户、个人用户、贡献者以及未来的 FreeBSD 用户/贡献者交流的机会。我们看到来自这些组织和个人对 FreeBSD 的使用和兴趣有所增加。这些会议让我们有机会了解组织的需求以及他们和其他个人正在做的工作。这些信息帮助我们确定需要赞助的工作内容。

在 2019 年，你的捐赠帮助我们继续支持 FreeBSD 的关键领域，包括：

* 操作系统改进：提供员工立即响应紧急问题，并实现新功能和特性，使 FreeBSD 保持创新和稳定。
* 提升和增加测试覆盖率、持续集成和自动化测试，提供全职软件工程师，确保你获得最高质量、安全且可靠的操作系统。
* 安全：提供工程资源，增强安全团队的能力和响应速度，让你在安全问题出现时能够放心。
* 通过我们的全球 FreeBSD 外展和倡导工作，增加 FreeBSD 贡献者和用户的数量，包括扩展到中国、印度、非洲和新加坡等地区。
* 在更多会议、聚会和全球大学提供 FreeBSD 工作坊和演讲。
* 提供诸如开发者和供应商峰会以及公司访问等机会，促进商业用户与 FreeBSD 开发者之间的合作，并推动更改进入 FreeBSD 源代码树，创造一个更大更健康的生态系统。

我们今年取得了许多成就，但我们仍然只是一个小型的 501(c)(3) 组织，专注于支持 FreeBSD，而不是像许多其他开源基金会那样的贸易组织。

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

我们还设有合作伙伴计划，为我们的较大商业捐赠者提供更多的福利。请访问 [FreeBSD 基金会合作伙伴计划](https://www.freebsdfoundation.org/FreeBSD-foundation-partnership-program/) 获取更多信息，并与你的公司分享！

#### 改进操作系统

基金会通过我们的全职技术员工、承包商和项目赞助接收者支持软件开发项目，以改进 FreeBSD。它们维护和改进关键的内核子系统，添加新特性和功能，并修复漏洞。

在 10 月至 12 月之间，有 236 次提交到 FreeBSD 源代码仓库，标记为 FreeBSD 基金会赞助。这大约占此期间所有提交的 10%。其中一些项目在季度报告中有独立条目，因此在此不再重复，其他项目则简要描述如下。

如往常一样，基金会员工 Konstantin Belousov 提交了大量关于 UFS、NFS、tmpfs、VM 系统和 Intel x86 底层的错误修复和改进。Kostik 还提交了运行时链接器（rtld）的改进，并参与了大量的代码审查，帮助将其他开发者的更改集成到代码库中。

在他改进 Linuxulator 环境中的调试工具工作基础上，Edward Napierała 将 Linux 测试项目（LTP）集成到了 FreeBSD 的 CI 系统中，并向 Linuxulator 提交了多个小的错误修复。

Mark Johnston 继续为 Syzkaller 系统调用模糊测试工具的基础设施工作，并提交了许多由其发现的问题的修复。Mark 提交了 RISC-V 基础设施、网络栈、性能和锁定、以及 x86 pmap 的改进。

Mark 还为驱动程序 iwm 添加了对较新 Intel WiFi 芯片组的支持，从而为 Lenovo X1 Carbon 第 7 代及其他现代笔记本电脑提供了 WiFi 支持。

Ed Maste 提交了许多构建基础设施的改进和清理工作，包括 vt 控制台修复（解决键盘映射问题）、一些 blacklistd 更新、文档更新以及其他小的更改。Ed 还提交了一些工作，以为从 FreeBSD 源代码树中移除 GCC 4.2.1 做准备，计划在 2020 年第一季度进行。

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

基金会提供了一个全职员工，致力于改进我们的自动化测试、持续集成和整体质量保证工作。

在 2019 年第四季度，基金会员工继续改进项目的 CI 基础设施，并与贡献者合作修复构建和测试用例的失败问题。我们还与项目中的其他团队合作，满足他们的测试需求，并与许多外部项目和公司合作，改进它们对 FreeBSD 的支持。我们新增了几个 CI 工作，并上线了 [FreeBSD 硬件测试实验室](https://ci.freebsd.org/hwlab)。

我们在基金会的博客上发布了 [2019 年回顾：CI 和测试进展](https://www.freebsdfoundation.org/blog/2019-in-review-ci-and-testing-advancements/)。

请参阅本报告的 FreeBSD CI 部分，了解已完成的工作项和详细信息。

#### 支持 FreeBSD 基础设施

基金会提供硬件和支持，以改进 FreeBSD 基础设施。上个季度，我们继续支持分布在全球各地的 FreeBSD 硬件。

#### FreeBSD 倡导与教育

我们的大部分努力都致力于为项目进行倡导。这包括推广他人在 FreeBSD 上所做的工作；制作倡导性材料，帮助人们了解 FreeBSD，并使得开始使用 FreeBSD 或为项目贡献变得更容易；以及参加并帮助其他 FreeBSD 贡献者志愿组织 FreeBSD 事件、管理 FreeBSD 展台并进行 FreeBSD 演讲。

FreeBSD 基金会赞助了全球范围内的许多会议、活动和峰会。这些活动可以是 BSD 相关的、开源的，或是面向少数群体的技术活动。我们支持以 FreeBSD 为重点的活动，帮助提供一个共享知识的平台，促进项目合作，并促进开发者与商业用户之间的合作。所有这些都有助于建立健康的生态系统。我们还支持非 FreeBSD 相关的活动，以宣传和提升 FreeBSD 的知名度，增加 FreeBSD 在不同应用中的使用，并招募更多的贡献者加入项目。

以下是我们上个季度所做的一些倡导和教育工作：

* 在加利福尼亚州圣克拉拉组织了 2019 年湾区 FreeBSD 供应商和开发者峰会
* 在中国上海的 COSCON '19 上进行了演讲
* 代表 FreeBSD 参加了位于北卡罗来纳州罗利的 All Things Open 2019
* 为位于俄勒冈州波特兰的 LISA '19 提供了行业合作伙伴赞助
* 作为银牌赞助商参加了位于加利福尼亚州旧金山的 OpenZFS
* 在科罗拉多州戈尔登的矿业学院进行了技术演讲
* 在华盛顿州西雅图的 Seagl 上介绍并代表 FreeBSD
* 在法国里昂的 Open Source Summit Europe 上进行了演讲
* 承诺赞助 2020 年澳大利亚黄金海岸的 LinuxConfAu，并举办 FreeBSD Mini-Conf
* 受邀在比利时布鲁塞尔的 FOSDEM '20 上的 BSD Dev Room 进行演讲
* 受邀在比利时布鲁塞尔的 FOSDEM '20 上设立展台
* 承诺赞助 2020 年新加坡的 FOSSASIA
* 承诺在加利福尼亚州帕萨迪纳的 SCALE 18x 上举办 FreeBSD Day

我们继续制作 FreeBSD 倡导材料，帮助人们推广 FreeBSD。了解更多我们在 2019 年为 FreeBSD 进行倡导的努力：[2019 年回顾：FreeBSD 倡导](https://www.freebsdfoundation.org/blog/2019-in-review-advocacy/)

我们的“FreeBSD Faces”系列回来了。查看最新的一篇文章：Mahdi Mokhtari：[Faces of FreeBSD 2019 - Mahdi Mokhtari](https://www.freebsdfoundation.org/blog/faces-of-freebsd-2019-mahdi-mokhtari/)

阅读我们在会议上的冒险经历以及我们的会议回顾和旅行报告，了解更多信息：[基金会月刊](https://www.freebsdfoundation.org/news-and-events/newsletter/)

我们通过出版专业制作的 FreeBSD 期刊来帮助世界了解 FreeBSD。如前所述，FreeBSD 期刊现在是免费的。了解更多并访问最新期刊：[FreeBSD Journal](https://www.freebsdfoundation.org/journal/)

你可以通过访问 [基金会新闻和事件页面](https://www.freebsdfoundation.org/news-and-events/) 了解我们参加的活动和即将举行的活动。

我们继续与新的网站开发者合作，帮助我们改进网站。工作已经开始，使社区成员更容易找到信息，并提高网站的效率。

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

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

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

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

| 链接                                                                               |
| -------------------------------------------------------------------------------- |
| [FreeBSD 12.1-RELEASE 时间表](https://www.freebsd.org/releases/12.1R/schedule.html) |
| [FreeBSD 12.1-RELEASE 公告](https://www.freebsd.org/releases/12.1R/announce.html)  |
| [FreeBSD 开发快照](https://download.freebsd.org/ftp/snapshots/ISO-IMAGES/)           |

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

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

FreeBSD 发布工程团队继续推进 12.1-RELEASE 的工作，该工作自 9 月 6 日开始。这个发布周期是从 Subversion 仓库中进行的首次“无冻结”发布，也是消除开发分支上硬性代码冻结要求的试验平台。

12.1-RELEASE 的发布周期于 11 月 4 日开始了最终构建，之前有三次 BETA 构建和两次 RC 构建。原计划包含的 RC3 构建最后决定不再需要。

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

这项工作大部分由 Rubicon Communications, LLC (netgate.com) 和 FreeBSD 基金会赞助。

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

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

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

FreeBSD 集群管理团队由负责管理项目用于分布式工作和同步通信的机器的人员组成。本季度，团队完成了以下工作：

* 升级 `ref11-{amd64,i386}.freebsd.org` 至 11.3-STABLE r353313
* 持续进行系统管理工作：
  * 为新提交者创建账户。
  * 备份关键基础设施。
  * 跟进第三方软件的安全更新。

正在进行的工作：

* 审查服务 Jail 和服务管理员操作。
* 南非镜像（JINX）进行中。
* PowerPC64 Power9 上的 NVME 问题，阻止双插槽机器作为 pkg 构建器使用。
* 为 pkg 构建器测试驱动升级（SSD），由 FreeBSD 基金会提供。
* Aarch64 参考机器的启动问题。
* 新的 NYI.net 赞助的芝加哥地区共址空间。
* 为 CI 阶段环境设置新主机。
* 计划如何增加新的半官方 pkg 镜像。

### [持续集成](https://www.freebsd.org/status/report-2019-10-2019-12.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-testing 邮件列表](https://lists.freebsd.org/mailman/listinfo/freebsd-testing) |
| [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 CI 团队维护 FreeBSD 项目的持续集成系统及相关任务。CI 系统定期检查提交的更改是否能够成功构建，然后执行各种测试并分析结果。构建任务的结果会归档到工件服务器，以供进一步的测试和调试需求。CI 团队成员会检查构建失败和测试不稳定的问题，并与该领域的专家合作，修复代码或调整测试基础设施。相关工作的详细信息可见于 [每周 CI 报告](https://hackmd.io/@FreeBSD-CI)。

在 2019 年第四季度，我们与项目中的贡献者和开发人员合作，满足他们的测试需求，并与许多外部项目和公司合作，提升他们对 FreeBSD 的支持。[FreeBSD 硬件测试实验室](https://ci.freebsd.org/hwlab) 本季度上线。目前该项目仍在进行中，我们正在合并不同的版本，并将其与主 CI 服务器更紧密地集成。我们也在努力使这一工作更易于复现。

正在进行的工作：

* 在 <https://hackmd.io/bWCGgdDFTTK\\_FG0X7J1Vmg> 收集和整理 CI 任务和想法
* 设置 CI 阶段环境并将实验任务放入其中
* 在裸金属硬件上实施自动化测试
* 针对 -CURRENT 构建 drm Port 测试
* 测试并合并 [GitHub 上的 pull 请求](https://github.com/freebsd/freebsd-ci/pulls)
* 计划运行 ztest 和网络堆栈测试
* 通过托管 CI 解决方案帮助更多第三方软件在 FreeBSD 上进行 CI 测试
* 增加 LTP 测试任务
* 增加非 x86 测试任务
* 增加外部工具链相关的任务

有关更多的工作进展信息，请查看与 freebsd-testing@ 相关的工单。

该项目由 FreeBSD 基金会赞助。

## [项目](https://www.freebsd.org/status/report-2019-10-2019-12.html#Projects)

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

### [IPSec 扩展序列号 (ESN) 支持](https://www.freebsd.org/status/report-2019-10-2019-12.html#IPSec-Extended-Sequence-Number-\(ESN\)-support)

联系：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 的关键特点是，只有低位的 32 位序列号会通过网络传输，高位的 32 位由发送方和接收方维护。此外，高位的位会包含在完整性检查值 (ICV) 字段的计算中。

扩展序列号支持包括以下内容：

* 修改现有的反重放算法以满足 ESN 要求
* 当 ESN 被禁用时，在 UINT32\_MAX 的 80% 处触发软生命周期过期
* 在加密软件引擎中实现支持将 ESN 包含到 ICV 中，无论是在加密和认证模式（例如 AES-CBC 和 SHA256 HMAC），还是在组合模式（例如 AES-GCM）中
* 在 AES-NI 引擎中实现支持将 ESN 包含到 ICV 中，无论是在加密和认证模式，还是在组合模式中

剩余工作：

* 上游补丁的反重放算法
* 在重新设计的开放加密框架稳定后，调整加密部分的实现

该项目由 Stormshield 赞助。

### [实现 NFS 版本 4.2](https://www.freebsd.org/status/report-2019-10-2019-12.html#NFS-Version-4.2-implementation)

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

RFC-7862 描述了 NFS 版本 4 协议的一个新小版本。此项目实现了这个新的小版本。

NFS 版本 4 小版本 2 协议为 NFS 添加了几个可选功能，如支持 SEEK\_DATA/SEEK\_HOLE，服务器上完成的文件复制避免了数据通过网络传输，并支持 posix\_fallocate() 和 posix\_fadvise()。这些功能有望提高某些应用程序的性能。

此项目基本完成。代码更改现已全部提交到 head/current，并将在 FreeBSD 13 中发布。

欢迎其他人进行测试。要进行测试，需要一个最新的 head/current 系统。客户端挂载需要使用 "minorversion=2" 挂载选项来启用该协议。NFS 服务器默认启用 NFSv4.2。

### [DTS 更新](https://www.freebsd.org/status/report-2019-10-2019-12.html#DTS-Update)

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

已更新 DTS 文件（设备树源），与 Linux 5.4 的 HEAD 分支和 12-STABLE 分支的 5.2 版本保持一致。亦已导入 RISC-V 架构的 DTS 文件。

### [RockChip 支持](https://www.freebsd.org/status/report-2019-10-2019-12.html#RockChip-Support)

联系：<<freebsd-arm@FreeBSD.Org>>

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

联系：Michal Meloun <<mmel@FreeBSD.Org>>

RockChip RK3399 现在支持 USB3，但某些配置（如设备模式）仍不受支持，不过主机模式应该能在任何板子上工作。

已经提交了对 SPI 的支持，启用了与 SPI 闪存交互的能力（如果存在的话）。

已添加对 RK808 PMIC（电源管理 IC）所有调节器的支持。

现在支持所有时钟，完成了时钟和复位的实现，以前仅支持来自具有驱动程序的设备的时钟。

TS-ADC（温度传感器 ADC）现在已支持，这为通过 sysctl hw\.temperature 读取 CPU 和 GPU 的温度提供了能力。

已提交并验证了初步的 PCIe 支持，在多个不同的板子上都能正常工作。已知的工作设备包括 NVMe 设备和不使用 PCIe 开关或桥接功能的 PCIe 卡。

现在支持 RK3328 和 RK3399 上的 SD 卡检测。如果板子使用 GPIO 进行卡检测而非内部检测机制，仍然存在一些问题。

### [从 RE VMDK 镜像创建虚拟 FreeBSD 应用程序](https://www.freebsd.org/status/report-2019-10-2019-12.html#Creating-virtual-FreeBSD-appliances-from-RE-VMDK-images)

| 链接                                                        |
| --------------------------------------------------------- |
| [freebsd-mkova](https://github.com/gonzoua/freebsd-mkova) |

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

OVA 是用于打包和分发虚拟应用程序的文件格式：预配置的虚拟机镜像。虚拟应用程序文件包含完整的虚拟机信息，如 CPU 数量、内存大小、虚拟设备列表，还包括磁盘镜像。像 VirtualBox 或 VMWare 这样的应用程序可以导入 OVA 文件；这个过程可以轻松地自动化。

freebsd-mkova 是一个命令行工具，用于使用 FreeBSD RE 提供的 VMDK 镜像创建 OVA 文件。目前，仅支持指定有限的属性：虚拟机名称、CPU 数量、内存大小和磁盘大小。该工具也只对 VMDK 文件格式进行了初步的合理性检查，假设它是一个单一的稀疏文件，且需要转换为流优化格式。该脚本可以扩展以使硬件配置更加灵活，并使 VMDK 解析器更加健壮。

## [内核](https://www.freebsd.org/status/report-2019-10-2019-12.html#Kernel)

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

### [SoC 音频框架和 RK3399 音频驱动](https://www.freebsd.org/status/report-2019-10-2019-12.html#SoC-audio-framework-and-RK3399-audio-drivers)

| 链接                                                                    |
| --------------------------------------------------------------------- |
| [rk3399\_audio](https://github.com/gonzoua/freebsd/tree/rk3399_audio) |

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

大多数现代片上系统和开发板都支持音频，但这是 FreeBSD 驱动开发者忽视的领域之一。单板计算机的音频管道最常见的架构包括两个 DAI（数字音频接口）：CPU 和编解码器，通过串行总线连接。

CPU DAI 是一个 SoC IP 块，用于处理样本：通过 FIFO 或 DMA 请求从驱动程序获取播放样本，或提供录音样本给驱动程序。音频样本通过串行总线离开（或到达）SoC，通常是 I2S，连接到编解码器 DAI。

编解码器 DAI 是一个外部（SoC 外部）芯片，包含一个或多个 DAC/ADC 块，以及混音器、放大器，可能还有更专门的设备，如滤波器和/或音效。编解码器的模拟部分连接到麦克风/耳机/扬声器。在 SBC 上，编解码器通常通过两种接口与 SoC 通信：数据路径，通过该路径音频样本传输，以及控制接口，用于读取/写入芯片寄存器并配置其行为。最常见的选择分别是 I2S 和 I2C 总线。

对于启用 FDT 的设备，音频管道被描述为一个虚拟 DTB 节点，具有指向 CPU 和编解码器设备的链接，并指定 CPU 和编解码器芯片将使用的数据格式和时钟详细信息。它还可以有多个 CPU/编解码器配对。

使用 Firefly-RK3399 作为测试设备，我能够为 RK3399 SoC 实现 I2S 驱动（PIO 模式，仅播放）、Realtek 的 RT5640 芯片驱动（仅耳机播放 + 混音控制）和 SoC 音频框架的基础轮廓。部分 rk\_i2s 和框架代码来自 Jared McNeill 为 NetBSD 开发的代码。在我的 WIP 分支上，我可以播放 mp3 音频并控制播放音量。

目前缺失的主要功能是录音支持、多链路音频卡、DMA 支持。其中最关键的是 DMA 支持。在当前实现中，所有缓冲区管理都放置在 ausoc 层，这对于 DMA 来说是行不通的，因为只有 CPU DAI 驱动才能了解内存限制和访问机制。目前 RK3399 的支持状态并不允许轻松实现 rk\_i2s 的 DMA 传输，但我计划在添加录音支持后立即研究此问题，录音支持的工作量应该不大。

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

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

联系：FreeBSD 集成服务团队 <<bsdic@microsoft.com>>

联系：Wei Hu <<whu@FreeBSD.org>>

联系人：許立文 <<lwhsu@FreeBSD.org>>

Wei 正在为 FreeBSD 开发 HyperV Socket 支持。HyperV Socket 提供了一种方式，使主机和客户机可以使用常见的套接字接口进行通信，而无需网络支持。Azure 中的某些功能要求客户机支持 HyperV Socket。

计划在 2 月底前提交代码。

该项目由微软赞助。有关 HyperV Socket 的详细信息，请参见 [HyperV Socket 文档](https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/make-integration-service)

Li-Wen 和 Wei 正在改进 FreeBSD 在 Azure 上的发布。期间，Wei 发布了 [11.3-RELEASE on Azure](https://azuremarketplace.microsoft.com/en-us/marketplace/apps/microsoftostc.freebsd-11-3?tab=Overview)。Li-Wen 正在处理与 Azure 相关的 FreeBSD 发布代码，涉及 -CURRENT 和 12-STABLE 分支。

该项目由微软和 FreeBSD 基金会赞助。

### [FreeBSD 在 EC2 ARM64 上的应用](https://www.freebsd.org/status/report-2019-10-2019-12.html#FreeBSD-on-EC2-ARM64)

| 链接                                                                                       |
| ---------------------------------------------------------------------------------------- |
| [FreeBSD/ARM 12 在 AWS 市场](https://aws.amazon.com/marketplace/pp/B081NF7BY7)              |
| [FreeBSD/EC2 Patreon](https://www.patreon.com/cperciva)                                  |
| [M6G 与 M5 buildworld 成本/时间性能比较](https://twitter.com/cperciva/status/1206688489518985216) |

联系：Colin Percival <<cperciva@FreeBSD.org>>

2018 年 11 月，Amazon Web Services 宣布推出首个基于 ARM64 平台的 Elastic Compute Cloud（EC2）实例。虽然 FreeBSD 支持 ARM64 平台，但在这些特定虚拟机上运行需要一些额外的工作，不过到 2019 年 4 月，Release Engineering 团队每周发布的快照构建已包含用于 FreeBSD HEAD 的 ARM64 AMI。

2019 年 11 月，FreeBSD 12.1 发布，其中包含首个 `RELEASE` 版本的 FreeBSD EC2/ARM64 AMI。几周后，FreeBSD/ARM64 作为新产品被加入 AWS 市场。

在 2019 年 12 月的 re:Invent 会议上，Amazon 宣布推出第二代 ARM64 实例，分别称为 `Graviton 2` 和 `M6G`。这些实例比第一代 ARM64 EC2 实例更为强大，性能价格比约为 `M5` 系列 x86 EC2 实例的 40%；现有的 FreeBSD 12.1 和 HEAD AMI 可以直接在这些实例上运行。

目前正在进行的工作旨在提高这些实例的内核锁定可扩展性；在高并行度（例如 buildworld -j64）下，G6M 实例的 \`sys:user\`\` 比率比同等大小的 M5 实例高约 1.5 倍，这表明这里还有改进空间。

最近已识别出两个问题，可能与 ACPI 相关：

* EC2 的 `StopInstance` API 调用（即 ACPI "电源按钮" 通知）无法触发 FreeBSD 关机；这会导致 EC2 超时并进行 "硬关闭"。
* 热插拔/拔出 EBS 卷通常通过 ACPI 设备通知进行，但在此情况下无法正常工作。

如果有熟悉 ARM64 和 ACPI 的开发人员提供帮助，将不胜感激。

该项目由 FreeBSD/EC2 Patreon 赞助。

### [更新 FreeBSD ENA 驱动](https://www.freebsd.org/status/report-2019-10-2019-12.html#ENA-FreeBSD-Driver-Update)

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

联系：Michal Krawczyk <<mk@semihalf.com>>\
联系：Maciej Bielski <<mba@semihalf.com>>\
联系：Marcin Wojtas <<mw@semihalf.com>>

ENA（Elastic Network Adapter）是 Amazon Web Services（AWS）虚拟化环境中可用的智能网络接口卡。ENA 驱动程序支持多个传输和接收队列，并能够处理高达 100 Gb/s 的网络流量，具体取决于使用的实例类型。

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

* 将驱动程序 v2.1.0 版本提交到上游，包括：
  * Netmap 支持
  * 驱动程序结构重构（将数据路径代码与初始化代码分离）
  * 修复因长时间重置导致的保持活动超时
  * 通过启用内存映射为 WC，使 arm64 实例启用 LLQ 模式

正在进行的工作：

* ENA v2.2.0 版本发布，新增 bug 修复、功能和其他改进

该项目由 Amazon.com Inc. 赞助。

## [架构](https://www.freebsd.org/status/report-2019-10-2019-12.html#Architectures)

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

### [PowerPC 在 Clang 上的应用](https://www.freebsd.org/status/report-2019-10-2019-12.html#PowerPC-on-Clang)

联系：Justin Hibbits <<jhibbits@freebsd.org>>\
联系：Brandon Bergren <<bdragon@freebsd.org>>\
联系：Alfredo Dal'Ava J.nior <<alfredo.junior@eldorado.org.br>>

在年底之前，所有三个 PowerPC 目标（powerpc、powerpc64、powerpcspe）都已切换到 Clang 作为基础编译器。这项工作跨越了几乎一整年，涉及了多个人。32 位 PowerPC 平台（powerpc、powerpcspe）仍然需要 GNU ld，但 powerpc64 使用 LLD 作为基础链接器。其他两个平台将在 LLD 准备好后进行迁移，预计将在未来几个月内完成。

随着 Clang 和 LLD 的切换，powerpc64 还切换到了 ELFv2，这是一种最初针对 Linux powerpc64le（小端）设计的现代 ABI，但该 ABI 本身是与字节序无关的；然而，ELFv2 与 ELFv1 二进制不兼容。FreeBSD 在所有 powerpc 目标上仍然使用大端字节序。

### [NXP ARM64 SoC 支持](https://www.freebsd.org/status/report-2019-10-2019-12.html#NXP-ARM64-SoC-support)

联系：Marcin Wojtas <<mw@semihalf.com>>\
联系：Artur Rojek <<ar@semihalf.com>>

Semihalf 团队开始为 [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) 提供 FreeBSD 支持。

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

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

* QSPI
* 网络性能改进

待办事项

* 上游提交已开发的功能。预计这项工作将在 2020 年第一季度提交/合并到 HEAD。

该项目由 Alstom Group 赞助。

## [用户空间程序](https://www.freebsd.org/status/report-2019-10-2019-12.html#Userland-Programs)

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

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

联系：Edward Tomasz Napierala <<trasz@FreeBSD.org>>

Linux Test Projects 测试的 Linux 二进制文件现在是 [FreeBSD 持续集成基础设施](https://ci.freebsd.org/) 的一部分。这使得跟踪 Linux 兼容层的改进进展和检测回归变得更加容易。

在这一层有相当多的改进，涉及从更新的 linux(4) 手册页，到新的 linux rc 脚本（现在可以挂载 Linux 特定文件系统或设置 ELF 回退 brand），到新的系统调用，再到一些小的改进，例如使 ^T 对 Linux 二进制文件有效。

从用户的角度来看，在运行 13-CURRENT 时，Linux jail 现在基本工作正常：你可以使用 CentOS 8 的二进制文件通过 SSH 登录到 jail，运行 screen(1)、Emacs、Postgres、OpenJDK 11，使用 `yum upgrade...` 当然，还有一些事情需要继续改进：

* 由 chuck@ 提出的补丁使得 Linux 二进制文件的 core dump 功能得以实现；这将使调试更加容易
* 有待审查的补丁包括添加 [扩展属性支持](https://reviews.freebsd.org/D13209)、[fexecve(2) 系统调用](https://reviews.freebsd.org/D10275)、[sendfile](https://reviews.freebsd.org/D19917)；它们需要完成并提交
* 有超过 [400 个失败的 LTP 测试](https://ci.freebsd.org/job/FreeBSD-head-amd64-test_ltp/)。其中一些是误报，一些是易于修复的 bug，一些则需要添加新的系统调用。任何帮助都是欢迎的。

该项目由 FreeBSD 基金会赞助。

## [Ports](https://www.freebsd.org/status/report-2019-10-2019-12.html#Ports)

影响 Ports 的变化，无论是涉及大多数树的广泛更改，还是单个 Port 的更改。

### [Ports](https://www.freebsd.org/status/report-2019-10-2019-12.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 的整体方向、构建包和人员事务。本条目显示了过去一个季度发生的变化。

2019Q4 结束时，共有 38,200 个 Port 和 2180 个打开的 PR，其中有 470 个 PR 尚未分配。上个季度，共有 157 位提交者向 HEAD 分支提交了 7907 个提交，61 位提交者向 2019Q4 分支提交了 358 个提交。这表明活动相较于前一个季度有所增加。

在过去的一个季度，我们迎来了 Oleksii "Alex" Samorukov (samm@) 和 Scott Long (scottl@，已经是源代码提交者) 作为新的 Port 提交者。我们也告别了 az@、brd@、dtekse@、eadler@ 和 johans@。

一些 Port 的默认版本发生了变化：Lazarus 更新至版本 2.0.6，Samba 更新至 4.10，Python 更新至 3.7。Web 浏览器也收到了更新：Chromium 更新至版本 78.0.3904.108，Firefox 更新至版本 72.0，其 ESR 版本更新至 68.4.0。最后，Qt 栈更新至版本 5.13.2。

还进行了一些现代化工作：删除了 "palm" 类别以及虚拟 "ipv6" 类别。现在 IPv6 支持（除了 IPv4）被认为是常态。最后，CentOS 6 的 Port 在其 CentOS 7 对应版本成为默认之后被移除。

一如既往，antoine@ 很高兴接受你的 exp-runs，这次总共有 30 次，涉及了各种 Port 和框架更新、默认版本更新，以及 OpenJDK 6 和 OpenJRE 6 的移除。

### [FreeBSD 上的 KDE](https://www.freebsd.org/status/report-2019-10-2019-12.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* 项目为 FreeBSD 打包了 KDE 社区制作的软件。这些软件包括完整的桌面环境、艺术应用程序 [https://kdenlive.org](https://kdenlive.org/) 以及数百个可以在任何 FreeBSD 桌面机器上使用的其他应用程序。

KDE Frameworks 的月度发布、KDE Plasma Desktop 的修复发布以及 KDE Plasma Desktop 的季度功能发布都在上游发布后不久进入了 Ports。KDE 应用程序的月度修复发布也及时进入了树中。

得益于 Dima Panov，Digikam 发布了新版本。我们希望这次更新能解决上个季度发布更新所引发的不稳定问题。

本季度，[打开的 bug 列表](https://bugs.freebsd.org/bugzilla/buglist.cgi?bug_status=New\&bug_status=Open\&bug_status=In%20Progress\&bug_status=UNCONFIRMED\&email1=kde%40FreeBSD.org\&emailassigned_to1=1\&emailtype1=substring\&f0=OP\&f1=OP\&f2=product\&f3=component\&f4=alias\&f5=short_desc\&f7=CP\&f8=CP\&f9=assigned_to\&j1=OR\&j_top=OR\&o2=substring\&o3=substring\&o4=substring\&o5=substring\&o9=substring\&query_format=advanced\&v2=kde%40\&v3=kde%40\&v4=kde%40\&v5=kde%40\&v9=kde%40\&human=1) 增长到 32 个，包含一些奇怪的构建失败。我们欢迎详细的 bug 报告和补丁。KDE 打包更新在 [GitHub 上的 ports 仓库副本](https://github.com/freebsd/freebsd-ports-kde/) 中准备，然后合并到 SVN 中。我们也欢迎在此提交拉取请求。

### [Java on FreeBSD](https://www.freebsd.org/status/report-2019-10-2019-12.html#Java-on-FreeBSD)

| 链接                                                                         |
| -------------------------------------------------------------------------- |
| [OpenJDK 11 仓库在 FreeBSD GitHub](https://github.com/freebsd/openjdk-jdk11u) |

联系人：Greg Lewis <<glewis@FreeBSD.org>>

在 Q4，FreeBSD Java 移植工作相比前几个季度更新较少。然而，以下变更值得一提：

* 更新了 OpenJDK 8u232、11.0.5 和 13.0.1 的 ports
* 移除了已经结束生命周期的 Java 6、9 和 10 的 ports
* 修复了 Java 11+ 的远程调试问题
* 修复了 Java 11+ 运行外部进程的问题

本项目由 FreeBSD 基金会赞助。

### [Electron 和 VSCode](https://www.freebsd.org/status/report-2019-10-2019-12.html#Electron-and-VSCode)

| 链接                                                            |
| ------------------------------------------------------------- |
| [Electron port](https://github.com/tagattie/FreeBSD-Electron) |
| [VSCode port](https://github.com/tagattie/FreeBSD-VSCode)     |

联系人：Hiroki Tagato <<tagattie@yandex.com>> 联系人：Luca Pizzamiglio <<pizzamig@FreeBSD.org>>

Electron 是一款流行的框架，用于使用 JavaScript、HTML 和 CSS 构建桌面应用程序。几个月前，electronjs 被添加到 Ports 中。目前支持版本 4.x 和 6.x。

在上个季度，一款流行的应用程序 —— 强大的 VSCode 编辑器也被添加到 Ports 中。VSCode 基于 electron 6.x。

atom 是另一款流行的编辑器，仍在开发中，基于 electron 4.x。

非常感谢 Hiroki 的辛勤工作，也感谢 Antoine 支持特殊的 poudriere 配置，用于构建 VSCode。

### [Bastille](https://www.freebsd.org/status/report-2019-10-2019-12.html#Bastille)

| 链接                                                         |
| ---------------------------------------------------------- |
| [Bastille GitHub](https://github.com/BastilleBSD/bastille) |
| [Bastille 模板](https://gitlab.com/bastillebsd-templates)    |
| [Bastille 网站](https://bastillebsd.org/)                    |

联系人：Christer Edwards <<christer.edwards@gmail.com>>

#### 什么是 Bastille？

Bastille 是一个开源系统，用于在 FreeBSD 上自动化部署和管理容器化应用程序。

Bastille 使用 FreeBSD jails 作为容器平台，并添加模板自动化，以创建类似 Docker 的容器化软件集合。模板集合目前验证了 30-40 个来自 Ports 的应用程序，且还在增长！

模板负责安装、配置、启用和启动软件，为构建容器化堆栈提供自动化方式。

Bastille 可在 sysutils/bastille 中找到。

#### 2019 Q4 状况

在 2019 年第四季度，Bastille 发布了三个版本（2019 年共发布了十个版本）。这些更新的亮点包括：

* 支持“瘦”型（共享基础）和“厚”型（独立基础）jails
* 支持模板系统中的 INCLUDE 和 FSTAB
* 支持共享和独立基础 jails 的升级
* 所有官方模板的 GitLab CI/CD 测试
* 自动模板验证和 CVE 扫描
* 专用 pf 表，用于私人 IP jails

Bastille 社区贡献有所增加，新增了六位 GitHub 贡献者。这些人慷慨地改进了错误检查、发布验证（sha256）、防火墙功能、灵活的网络配置以及对资源限制的初步支持！

我们要感谢 2019 年所有为 Bastille 做出贡献的人。你们的支持非常棒！

### [通用包装工具 (upt)](https://www.freebsd.org/status/report-2019-10-2019-12.html#Universal-Packaging-Tool-\(upt\))

| 链接                                                 |
| -------------------------------------------------- |
| [Upt 仓库](https://framagit.org/upt/)                |
| [Upt 本身](https://framagit.org/upt/upt/)            |
| [FreeBSD 后端](https://framagit.org/upt/upt-freebsd) |

联系：Upt 邮件列表 <<upt@framalistes.org>>\
联系：<<#upt-packaging>>

通用包装管理器（upt）是一个工具，旨在轻松地将来自常见上游包档案（例如 <https://rubygems.org/>）的软件移植到包括 FreeBSD 在内的各种操作系统。

已有许多类似的工具：pytoport（为 PyPI 包创建 FreeBSD ports）、gem2deb（将 Ruby gem 创建为 Debian 包）等。

这些工具与 upt 的主要区别在于，upt 使用模块化设计，允许它处理来自多种来源的包，并通过插件支持多种操作系统。你可以通过安装 sysutils/py-upt、sysutils/py-upt-pypi 和 sysutils/py-upt-freebsd 来尝试 upt。如果你想要打包 "upt-cran"，它托管在 PyPI 上，可以像这样操作：

```c
## upt package -f pypi -b freebsd -o /usr/ports/sysutils/ upt-cran

$ tree /usr/ports/sysutils/py-upt-cran /usr/ports/sysutils/py-upt-cran |-- Makefile |-- distinfo `-- pkg-descr

$ cat sysutils/py-upt-cran/Makefile ## $FreeBSD$

PORTNAME= upt-cran DISTVERSION= 0.1 CATEGORIES= sysutils python MASTER_SITES= CHEESESHOP PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}

MAINTAINER= python@FreeBSD.org COMMENT= CRAN frontend for upt

LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/XXX

RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}lxml>0:devel/py-lxml@${PY_FLAVOR}  ${PYTHON_PKGNAMEPREFIX}requests>0:www/py-requests@${PY_FLAVOR}  ${PYTHON_PKGNAMEPREFIX}upt>0:sysutils/py-upt@${PY_FLAVOR} TEST_DEPENDS= ${PYTHON_PKGNAMEPREFIX}requests-mock>0:www/py-requests-mock@${PY_FLAVOR}

USES= python USE_PYTHON= autoplist distutils

.include <bsd.port.mk>
```

注意，Rubygems 和 CPAN 前端也可用（sysutils/py-upt-rubygems 和 sysutils/py-upt-cpan）。

欢迎提交关于这个新工具的错误报告和评论。

### [FreeBSD 上的 Wine](https://www.freebsd.org/status/report-2019-10-2019-12.html#Wine-on-FreeBSD)

| 链接                                 |
| ---------------------------------- |
| [Wine 主页](https://www.winehq.org/) |

联系：Gerald Pfeifer <<gerald@FreeBSD.org>>

自上次季度报告以来，已经发生了很多变化。Wine 4 版本系列已在我们的树中存在近一年，并且表现得相当稳定。无论是该 Port 还是 wine-devel（追踪每两周发布的开发版），都进行了定期的基础设施调整和小幅改进，尤其是在非默认选项方面。

现在，我们需要帮助！

WoW64（或 Wine on Wine 64）允许在一个安装中运行 32 位和 64 位 Windows 应用程序。一位志愿者提出了以下建议：

* 用于 lib32 附加库的一般框架 <https://reviews.freebsd.org/D16830>
* 直接使用我们的 Wine Port 的方法 <https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242625>

但我们缺乏足够的专业知识和设施来正确审查、测试和维护这些工作。

如果你能够帮助将（至少其中一个）这些工作整合到树中，请帮忙！如果你愿意承担 emulators/wine\* 的共同维护或独立维护，这也是一个选项。

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

许多项目建立在 FreeBSD 之上或将 FreeBSD 组件纳入其项目中。由于这些项目可能对更广泛的 FreeBSD 社区有兴趣，我们有时会在季度报告中简要更新这些项目。FreeBSD 项目不对这些提交中的任何声明的准确性或真实性做出任何保证。

### [sysctlbyname-improved](https://www.freebsd.org/status/report-2019-10-2019-12.html#sysctlbyname-improved)

| 链接                                                                                       |
| ---------------------------------------------------------------------------------------- |
| [gitlab.com/alfix/sysctlbyname-improved](https://gitlab.com/alfix/sysctlbyname-improved) |

联系：Alfonso Sabato Siciliano <<alfonso.siciliano@email.com>>

FreeBSD 内核维护着一个管理信息库（MIB），其中的每个组件（对象）代表系统的一个参数。sysctl() 系统调用通过其对象标识符（OID）来查找 MIB 中的对象，并调用其处理程序来获取或设置该参数的值。

sysctlbyname() 系统调用（或旧函数）接受对象的名称（而不是其 OID）来识别它。该项目的目的是允许 sysctlbyname() 处理：

* 一个 CTLTYPE\_NODE 具有非 NULL 处理程序，例如 "kern.proc.pid."；
* 一个对象，其某些级别名称等于 '0' 字符，例如 "security.jail.param.allow\.mount."；

提供了一个 sysctlbyname() 的克隆：sysctlbyname\_improved()，其实现核心是一个新的 sysctl 内部节点，用于通过其名称获取节点的 OID，并最终扩展其输入以包含处理程序；这两个功能都可以通过 *sysutils/sysctlbyname-improved-kmod* 安装。这个内部节点也被 *devel/libsysctlmibinfo2* 用户空间库中的 sysctlmif\_oidinputbyname() 函数使用，并可以通过 sysctlinfo 接口的 SYSCTLINFO\_BYNAME 宏进行处理（在上一季度的状态报告中有所描述）。

### [pot 和 nomad pot 驱动程序](https://www.freebsd.org/status/report-2019-10-2019-12.html#pot-and-the-nomad-pot-driver)

| 链接                                                            |
| ------------------------------------------------------------- |
| [Nomad pot 驱动程序](https://github.com/trivago/nomad-pot-driver) |
| [Pot 项目](https://github.com/pizzamig/pot)                     |
| [minipot](https://github.com/pizzamig/minipot)                |

联系人：Luca Pizzamiglio <<pizzamig@FreeBSD.org>>\
联系人：Esteban Barrios <<esteban.barrios@trivago.com>>

pot 工具增加了对私有桥接的支持：一组 Jail 现在可以使用专用桥接，而不是公共桥接，从而提高了隔离性。此外，发现并修复了几个小错误，并增加了对启动/停止钩子脚本的前置/后置支持。

nomad pot 驱动程序增加了对 nomad 重启而无需排空的支持，并改进了配置稳定性。

新增了一个名为 minipot 的 Port：该 Port 将安装配置文件和依赖项，将 FreeBSD 机器转换为单节点集群。它将安装 nomad、consul、pot、nomad pot 驱动程序和 traefik，且已经配置好并准备使用。

在工具方面，进行了实验性工作，允许在其他操作系统（Linux 和 Mac）上创建和运行 pot 镜像（FreeBSD Jail），采用类似于 Docker machine 的方法。我们希望尽快提供此工具。

下一步：

* 为 pot 添加双栈 IP 支持
* 为 nomad pot 驱动程序添加私有桥接支持
* 改进创建镜像的可用性

此项目由 trivago N.V. 赞助。

### [7 天挑战](https://www.freebsd.org/status/report-2019-10-2019-12.html#7-Days-Challenge)

| 链接                                                             |
| -------------------------------------------------------------- |
| [7 天挑战](https://wiki.freebsd.org/MichaelCrilly/7dayschallenge) |

联系人：Michael Crilly <<mike@opsfactory.com.au>>

7 天挑战是一个教育性项目，旨在帮助人们更轻松地入门 FreeBSD。

该项目将结合教程、指南和操作步骤，快速吸引用户使用 FreeBSD，帮助他们实现特定的目标，并且更多地了解 FreeBSD。

主要目标是展示 FreeBSD 作为现代操作系统在当今以云为中心的自动化商业模型中的相关性和能力。

此项目由 OpsFactory Pty Ltd（澳大利亚）赞助。

### [NomadBSD](https://www.freebsd.org/status/report-2019-10-2019-12.html#NomadBSD)

| 链接                                                              |
| --------------------------------------------------------------- |
| [NomadBSD 网站](https://www.nomadbsd.org/)                        |
| [NomadBSD Github](https://www.github.com/NomadBSD/NomadBSD)     |
| [NomadBSD 开发者邮件列表](https://www.freelists.org/list/nomadbsddevs) |

联系人：NomadBSD 团队 <<info@NomadBSD.org>>

NomadBSD 是一个基于 FreeBSD 的持久性 live 系统，适用于 USB 闪存驱动器。它具有自动硬件检测和设置功能，配置为即插即用的桌面系统，同时也可以用于数据恢复、教育用途或测试 FreeBSD 的硬件兼容性。

在发布一个候选版本后，NomadBSD 团队于 12 月 7 日发布了 NomadBSD 1.3 版本。此版本基于 FreeBSD 12.1，修复了许多错误，并新增了许多包和功能。新功能包括可以将 NomadBSD 安装到 ZFS 上，并在 VirtualBox 中运行时使用自动配置。

NomadBSD 团队为 1.3 版本开发并添加了新工具：nomadbsd-dmconfig 用于选择显示管理器主题，nomadbsd-adduser 用于添加新用户帐户，DSBBg 用于更改背景图片。所有这些工具都使用 Qt 工具包。

在第四季度，我们增加了两个位于法国和德国的镜像，并感谢 nosheep.fr 和 fau.de 的支持。

我们正在寻找帮助该项目的人。我们非常欢迎各方面的帮助：

* 程序界面的翻译
* 设计艺术作品
* 编程新工具，扩展现有工具
* 测试和错误报告/用户体验及功能建议
* 欧洲以外的镜像

待办事项

* 支持磁盘分区上的安装，并添加分区编辑器 GUI
* 完整的磁盘加密
* 添加用户友好的网络管理器
