本报告涉及了 2020 年 10 月至 12 月期间的 FreeBSD 相关项目,是计划中的四个季度报告中的第四个。
这一季度完成了大量工作,包括但不限于涉及多个架构(如 x86、aarch64、riscv 和 ppc64)以及基础和 Port 的工作,内核变化(如矢量化 aio、路由查找和多路径、替代的 random(4) 实现、内核转储的 zstd 集成、日志压缩、zfs 以及 pkg(8) 的准备工作),以及 wifi 改动、工具链变化(如新工具 elfctl 实用程序),直到更大的变化(如 git 迁移和将文档从 DocBook 移至 Hugo/AsciiDoctor),还有许多其他无法在引言中一一提及的内容。
本报告包含 42 项条目,虽然这些条目并没有提供生命、宇宙和一切的答案,但如果没有所有参与工作的人同时为报告编写条目,这一切都不可能实现。因此,季度团队要感谢他们,否则我们就没有事情可做。
请注意,涵盖 1 月至 3 月期间的提交截止日期为 3 月 31 日。
我们希望你在阅读时能像我们编写报告时一样享受其中。 Daniel Ebdrup Jensen,代表季度团队。
来自各种官方和半官方团队的条目,你可以在管理页面找到。
联系人:Deb Goodkin <deb@FreeBSDFoundation.org>
FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于支持和促进全球 FreeBSD 项目和社区。基金会的资金来自个人和企业捐赠,主要用于赞助和管理软件开发项目、会议和开发者峰会,并为 FreeBSD 贡献者提供旅行赞助。基金会还购买和支持硬件,以改善和维护 FreeBSD 基础设施,提供资源以改善安全性、质量保证和发布工程工作;发布营销材料以推广、教育和宣传 FreeBSD 项目;促进商业供应商与 FreeBSD 开发者之间的合作;并代表 FreeBSD 项目执行合同、许可协议及其他需要合法实体的法律安排。
以下是我们上个季度帮助 FreeBSD 的一些亮点:
像大多数组织一样,我们将所有员工转为居家办公。我们还对员工出差实施了临时禁令,这对我们的产出影响不大,因为大多数会议都转为线上进行。尽管我们的部分工作和响应可能因优先事项的变化以及一些员工的有限托儿服务而有所延迟,但我们依然继续支持社区和项目。
我们帮助促进商业用户与 FreeBSD 开发者之间的合作。我们还与公司会面,讨论他们的需求,并将这些信息反馈给项目方。不出所料,由于居家令和第四季度公司出差禁令,面对面的会议没有举行。然而,团队能够继续与我们的合作伙伴和商业用户通过虚拟方式进行会议。这些会议帮助我们了解 FreeBSD 在某些应用中的使用情况。
我们帮助规划和组织的一项活动,促进了供应商/开发者的互动,就是每年举办的湾区供应商峰会。我们不打算让疫情阻止我们举办这一宝贵的年度活动,所以我们将其转为线上!根据我们从供应商社区收到的反馈,了解他们希望我们如何组织此活动以便为他们带来益处,我们决定在 11 月举办三天半的线上活动。一个意外的结果是,来自世界各地的更多商业用户参加了此次活动。由于供应商/开发者峰会通常是邀请制的,我们决定向全球的 FreeBSD 贡献者开放观看直播的机会。由于此次活动的成功和热烈反响,我们计划在 6 月或 7 月再举办一次。
我们想借此机会感谢去年所有捐款帮助我们筹集资金的个人和公司。截至撰写本文时,我们筹集了 1,235,926 美元,最终的筹款总额将在 1 月中旬确定。为我们提供慷慨捐款的公司包括 Arm、NetApp、Netflix、Juniper Networks、Beckhoff、VMware、Stormshield、Tarsnap 和 Google。我们还要感谢 Koum 家族基金会为我们颁发的大额赞助,以及 Nginx 员工的慷慨捐款。
我们真正感激这些大额捐款,它们对我们能为项目做出多少贡献产生了最大影响。然而,最令我们感动的还是个人捐款。那些捐款的人信任我们会将他们的个人捐款(无论大小)投资于改善操作系统和项目。作为你捐款的管理者,我们要感谢你对我们的信任,并感谢你对将 FreeBSD 打造成最佳平台的承诺,这个平台涵盖产品、教育、研究、计算等多个领域。
你将在本报告中了解我们如何使用你的捐款进行第四季度工作,并通过本报告中的单独报告了解更多信息。
虽然我们知道这是第四季度的报告,但我们对 2021 年的计划充满期待,包括扩展我们的软件开发团队!我们将很快发布高级软件开发人员和项目协调员的职位描述。
请考虑为我们提供捐款,帮助我们继续和增加对 FreeBSD 的支持: https://www.FreeBSDfoundation.org/donate/.
我们还设有合作伙伴计划,为我们的较大商业捐助者提供更多福利。了解更多信息,请访问 https://www.FreeBSDfoundation.org/FreeBSD-foundation-partnership-program/ 并与你的公司分享!
在过去的一个季度中,基金会提供了许多项目赞助,你可以在本报告的其他条目中阅读有关 OpenZFS Zstd 支持、Linuxulator 应用程序兼容性改进、LLDB 目标支持、测试实验室基础设施和 WiFi 项目的相关内容。
基金会在 2020 年秋季学期从滑铁卢大学聘请了六名合作学生和一名实习生。前合作学生 Tiger 回来了,新的学生 Yang 和 Zac 也首次加入了我们。
Tiger 在代码覆盖指导的内核模糊测试工具 Syzkaller 上进行改进,添加了新的系统调用定义,使 Syzkaller 能够扩展其测试的代码。已经有多个 FreeBSD 内核 bug 修复是通过这项工作实现的。Tiger 还为 ELF 工具链的二进制实用程序集贡献了许多改进,并在工具链中运行其他工具套件的测试提供了支持。
Zac 对 pkg 包管理工具进行了改进,调查并提交了 FreePBX 在 FreeBSD 上的支持补丁,并研究了编译器支持以解决堆栈冲突漏洞。
Yang 研究并修复了内核 Skein-1024 汇编实现的编译错误(此实现由 ZFS 使用),然后着手多个与 Capsicum 相关的项目:将 Capsicum 应用到 sort(1),实现一个 Capsicum 服务来执行实用工具,最后与 Game of Trees (got) 版本控制系统的开发者合作,调整其以支持 Capsicum。
我们的实习生 Ka Ho 集中精力改善 FreeBSD 的桌面体验。他修复并改进了 FreeBSD 上的许多 OBS(Open Broadcaster Software)项目,致力于 Firefox 上的 FreeBSD 本地音频支持,添加了一个允许用户空间音频程序列出音频设备的功能。他还移植了 fcitx5 输入法框架。
基金会的五名员工在 2020 年继续在多个项目中做出贡献,包括持续的运营任务(包括 Git 工作组和安全团队)和软件开发。
员工们回应了报告的安全漏洞和发布 errata,准备了补丁,并参与了安全建议过程。我们还致力于前瞻性的安全漏洞缓解工作。Syzkaller 也提供了许多内核问题报告,这些报告促使基金会赞助了 bug 修复。我们还解决了多个与 FreeBSD/arm64 相关的问题,推动其朝着 Tier-1 架构的发展方向迈进。
我们参与了代码审查,支持社区成员将更改集成到 FreeBSD 中,并对提交的 bug 报告进行了筛查。
我们为许多内核和用户空间子系统贡献了增强功能,包括 x86 pmap 层、ELF 运行时链接器和内核加载程序、Capsicum 沙盒框架和 Casper 服务、线程库、一些 RISC-V 更改、构建系统、工具链和 freebsd-update、网络栈稳定性改进、机器相关优化、新的内核接口、DTrace bug 修复、文档改进等。
基金会提供了一名全职员工,并赞助项目,旨在改善 FreeBSD 项目的持续集成、自动化测试以及整体质量保证工作。
在 2020 年第四季度,基金会员工继续改进和监控项目的 CI 基础设施,并与专家合作修复构建失败和测试中发现的回归问题。工作重点是提交前的测试和 CI 阶段环境的开发。另一个主要工作项目是进行版本控制系统(VCS)的迁移,将源代码和文档源从 Subversion 转换为 Git。还有许多正在进行的任务,如分析并改进非 x86 平台的测试。
有关已完成的工作项目和详细信息,请参阅本报告中的 FreeBSD CI 部分。
基金会为改进 FreeBSD 基础设施提供硬件和支持。上个季度,我们继续支持位于全球各地的 FreeBSD 硬件。我们协调了 NYI 芝加哥新设施与 clusteradm 之间的工作,开始为我们计划购买的一些新 FreeBSD 硬件准备该设施。NYI 慷慨地为项目提供这一支持。我们还与 NYI Bridgewater 站点的新所有者进行了联系,该站点是现有 FreeBSD 基础设施的主要所在地。
上个季度,我们为支持基础设施购买的一些设备包括:
5 台应用服务器,用于运行 Bugzilla、Wiki、网站、CGI、Phabricator、托管 Git 等任务。
1 台服务器,用于替换旧的 pkg 服务器,它将提供更多的 IOPS,避免在高峰时段由于磁盘无法跟上请求量而导致的延迟。
1 台服务器,用于 exp-runs,并加速它们的处理速度。
1 台服务器,用于更频繁地构建包。
我们的大部分工作致力于为项目进行宣传。这包括推广他人使用 FreeBSD 所做的工作;制作宣传材料以教育公众了解 FreeBSD,并帮助简化开始使用 FreeBSD 或参与项目的路径;以及参加活动并邀请其他 FreeBSD 贡献者志愿主持 FreeBSD 活动、在 FreeBSD 展台上值班并进行 FreeBSD 演讲。
FreeBSD 基金会赞助全球许多会议、活动和峰会。这些活动可能与 BSD 相关,或者是面向科技领域、开源或弱势群体的技术活动。我们支持 FreeBSD 相关活动,以帮助提供一个分享知识的场所,促进项目合作,并推动开发人员与商业用户之间的合作,这有助于形成健康的生态系统。我们也支持非 FreeBSD 活动,以推广和提高 FreeBSD 的认知度,增加 FreeBSD 在不同应用中的使用,并招募更多的贡献者参与项目。
虽然由于疫情,我们仍无法参加线下会议,但我们能够参加新场所的虚拟活动,并促成了首次线上 FreeBSD 供应商峰会。除了参加和规划虚拟活动外,我们还在不断推进新的培训计划,并更新我们的操作指南,以帮助更多人尝试使用 FreeBSD。
查看我们上个季度在宣传和教育方面所做的一些工作:
继续举办 FreeBSD Fridays 系列的 101 课程。主题包括 Capsicum 入门、Bhyve 入门、DTrace 入门等。过去会议的视频可以在 这里 查找。我们将在 2021 年初推出新一季课程。
在 10 月 20 日的 nerdear.la 大会上进行了 FreeBSD 演讲。
在 FossBytes 文章中宣传了基金会的 20 周年:20 Years of The FreeBSD Foundation
继续推广 FreeBSD Office Hours 系列。每周一小时的会议视频可以在项目的 YouTube 频道 查找。有关更多信息,请参见本报告中的 Office Hours 部分。
添加了两个新的操作指南:Contributing FreeBSD Documentation 和 How to Submit a Bug Report。
与组织委员会合作,举办了 2020 年 11 月供应商峰会。
宣传了 FreeBSD 在 CHERI 和 ARM 的 Morello 处理器中的应用:use of FreeBSD
为 Fosslife 撰写了 FreeBSD 初学者指南。
作为媒体赞助商赞助了 All Things Open。
以铜牌赞助了 OpenZFS 开发者峰会。
申请了 FOSDEM 2021 的虚拟展位。
承诺参加线上 Apricot 2021。
通过我们的通讯,保持关注我们的最新工作:https://www.freebsdfoundation.org/news-and-events/newsletter/
奈飞在我们最新的贡献者案例研究 中更新了他们使用 FreeBSD 的原因和方式。
我们通过发布专业制作的 FreeBSD 期刊来帮助全球了解 FreeBSD。如前所述,FreeBSD 期刊现在是免费的出版物。了解更多并访问最新的期刊,请访问 https://www.FreeBSDfoundation.org/journal/
你可以在 https://www.FreeBSDfoundation.org/news-and-events/ 查找我们参加的活动和即将举行的活动。
基金会持有 FreeBSD 商标,保护这些商标是我们的责任。我们还为核心团队提供法律支持,以调查出现的问题。
请访问 http://www.FreeBSDfoundation.org 了解我们如何支持 FreeBSD 以及我们如何帮助你!
联系方式:FreeBSD 发布工程团队 <re@FreeBSD.org>
FreeBSD 发布工程团队负责设置和发布 FreeBSD 官方项目发布的时间表,宣布代码冻结并维护相应的分支等工作。
在 2020 年第四季度,发布工程团队完成了 12.2-RELEASE 的工作,这是 stable/12 分支的第三个发布版本,于 10 月 27 日发布。感谢所有参与人员为此版本所付出的辛勤努力。
此外,在整个季度中,针对 head、stable/12 和 stable/11 分支发布了几个开发快照构建。13.0-CURRENT 的开发快照构建最近已从项目中的 Git 树中构建,而 12.x 和 11.x 的进一步快照构建将继续从 Subversion 构建。随着 2020 年的结束,正在为即将发布的 13.0 版本做进一步准备,这将是第一个来自 Git 的版本。
这项工作大部分由 Rubicon Communications, LLC(netgate.com)和 FreeBSD 基金会赞助。
联系方式:集群管理团队 <clusteradm@FreeBSD.org>
FreeBSD 集群管理团队负责管理项目所依赖的机器,以确保分布式工作和通信的同步。本季度,团队完成了以下工作:
完成了马来西亚镜像站点的搭建,该站点由 马来西亚研究与教育网络 慷慨提供托管。来自大洋洲和部分亚洲的流量现在转向此镜像站,而不再从远离的站点(如日本和加利福尼亚)获取。
将包构建机器升级到 2020 年 10 月中旬的 head 版本。
将集群中的开发机器(freefall、ref* 和 universe*)升级到 2020 年 10 月中旬的 head 版本。
在新泽西站点安装了八台新的 x86 服务器:五台应用服务器、两台包构建器和一台镜像服务器。
新的镜像服务器已投入生产(pkg0.nyi.freebsd.org)。
两台包构建器已投入生产。
两台应用服务器已投入生产,分别作为 Git 源和 cgit Web 前端。
在新泽西站点安装了两台新的 aarch64 服务器,目前两台服务器正在构建 aarch64 包。
修复了 powerpc64 包的镜像同步问题。
重建了英国镜像服务器(pkg0.bme.freebsd.org)上的 ZFS 池,以提高 I/O 并行性。这应该能改善尤其在高峰时段的下载性能。
持续的系统管理工作:
提交者账户管理。
关键基础设施的备份。
跟进第三方软件的安全更新。
进行中的工作:
为 Web 服务进行硬件更新,为 NYI 提供备份版本控制系统。
将 FreeBSD 集群中的生产机器升级到 12.2
截至 2020 年 12 月中旬,大部分机器已完成升级。
剩余机器将在服务迁移到新硬件后退役/重新利用。
支持 Git 迁移和基础设施设置。
powerpc pkgbuilder/ref/universal 机器。
为澳大利亚设置新的镜像站点,托管方为 IX Australia。
设置巴西(BRA)镜像站点。
审查服务 jail 和服务管理员操作。
联系方式:Jenkins 管理员 <jenkins-admin@FreeBSD.org> 联系方式: 許立文 <lwhsu@FreeBSD.org>
联系方式:freebsd-testing 邮件列表 联系方式:EFNet 上的 IRC #freebsd-ci 频道
FreeBSD CI 团队负责维护 FreeBSD 项目的持续集成系统。CI 系统首先检查已提交的更改是否可以成功构建,然后对新构建的结果进行各种测试和分析。这些构建的工件会被存档到工件服务器,以便进一步测试和调试。CI 团队成员会检查失败的构建和不稳定的测试,并与相关领域的专家合作,修复代码或调整测试基础设施。这些工作的详细信息可以在 每周 CI 报告 中找到。
在 2020 年第四季度,我们继续与项目中的贡献者和开发者合作,满足他们的测试需求,并与外部项目和公司保持合作,以改进他们的产品和 FreeBSD。
重要变化:
文档任务已更改为使用 Git,以跟随版本控制系统的迁移:
https://ci.freebsd.org/job/FreeBSD-doc-main-igor/ 感谢 Brandon Bergren (bdragon@)
head 和 stable/12 构建环境已升级到 12.2-RELEASE
新增任务:
进行中的工作:
跟随版本控制系统迁移,修改 src 任务以使用 Git - PR 已 提供 感谢 Brandon Bergren (bdragon@)
收集并整理 CI 任务和想法 这里
测试并合并 FreeBSD-ci 仓库中的拉取请求
设计并实现 pre-commit CI 构建和测试
减少 CI/测试环境设置程序,方便贡献者和开发者
设置 CI 阶段环境,并将实验性任务放入其中
为运行测试的虚拟机客机设置公共网络访问
在裸机硬件上实现自动化测试
添加 drm Port 构建测试,针对 -CURRENT
计划运行 ztest 和网络堆栈测试
添加更多与外部工具链相关的任务
改进硬件实验室,使其更加成熟,并添加更多硬件
帮助更多软件在其 CI 管道中获得 FreeBSD 支持,查看 Wiki 页面:3rdPartySoftwareCI、HostedCI
与托管 CI 提供商合作,提供更好的 FreeBSD 支持
构建和测试结果将很快发送到 dev-ci 邮件列表,非常感谢反馈和帮助分析!
有关更多进行中的工作信息,请查看与 freebsd-testing@ 相关的工单,欢迎加入我们的工作! 赞助商:FreeBSD 基金会
联系方式:René Ladan <portmgr-secretary@FreeBSD.org> 联系方式:FreeBSD Ports 管理团队 <portmgr@FreeBSD.org>
Ports 管理团队负责监督 Ports 的整体方向、构建包以及人员事务。以下是上个季度的情况。
上个季度的统计数据如下:
41500 个 ports(包括 flavors)
2516 个未处理的 PR,其中 625 个未分配
164 名提交者对 HEAD 分支进行了 8715 次提交
59 名提交者对 2020Q4 分支进行了 420 次提交
与第三季度相比,PR 统计数据基本保持不变。尽管提交者人数相同,但提交次数略有减少。Ports 数量稳步增长,这次增长了接近 4%。
在上个季度,我们迎来了新的 ports 提交者 Juray Lutter (otis@),并与 cpm、jadawin、knu、araujo、mmokhi 和 scottl 告别。
传统上,合并到季度 ports 分支(这些分支是 HEAD 树的保守版本)需要获得 Ports 安全团队(ports-secteam@)或 portgmr@ 的批准。已经有一些经过测试的提交获得了普遍批准,包括修正拼写错误和将网页浏览器升级到最新版本。从去年 12 月起,所有 ports 提交者都可以自行合并,这减轻了 ports-secteam@ 的负担。
由于专利问题在不同法域中有不同的影响,专利限制已从许可框架中移除。
上个季度,多个 ports 的默认版本进行了更新:
librsvg2:在支持的平台上为 rust
,其他平台为 legacy
Mono:5.10
FPC 切换到 3.2.0
GCC 切换到 10(适用于 powerpc64le)
Lazarus 切换到 2.0.10
Ruby 切换到 2.7.X
Samba 切换到 4.12
在上个季度,新增虚拟类别:education
,适用于帮助用户学习某一主题和帮助考试的 ports。
已用 Lua 重写关键字 @shell 和 @sample ,这使其符合 root-dir 标准(见 pkg -r),并确保它们在 Capsicum 沙盒中运行。
上个季度,多个面向用户的 ports 也进行了更新:
Firefox 84.0.1
Firefox-esr 78.6.0
Chromium 87.0.4280.88
Ruby 2.7.2
Qt5 5.15.2
XFce 4.16
一如既往,antoine@ 继续忙于运行 exp-runs,本季度共 37 次,测试内容包括:
各种 ports 升级
修改 sys/cdefs.h 基础文件
向大多数框架脚本中添加 set pipefail
以尽早捕获错误
更改默认语言环境为 C.UTF-8
将 bsdgrep 用作 /usr/bin/grep
联系方式:Allan Jude <allanjude@freebsd.org> 联系方式:Ed Maste <emaste@freebsd.org>
在 2020 年最后一个季度,我们举行了三次办公时间会议。
第一次由核心团队主持,时间安排适合亚洲和澳大利亚地区,讨论了包括过渡到 git、为项目团队招募成员和核心团队待办事项列表等话题。
第二次由 git 过渡团队主持,回答了与过渡到 git 以及它如何影响项目工作流相关的问题。
第三次由 bhyve 维护者 Peter Grehan 和 John Baldwin 主持,介绍了最近的开发工作,并回答了关于 bhyve 的问题。
项目正在寻找志愿者主持未来的办公时间会议,并欢迎大家提供话题建议。我们还希望改进系统,允许人们提前提交问题,以便我们在有专家参与时,能够最大程度地利用他们的知识。
你可以在 FreeBSD Wiki 上找到未来办公时间的安排以及过去办公时间的视频。
赞助商:ScaleEngine Inc.
涵盖多个类别的项目,从内核和用户空间到 Ports 或外部项目。
联系方式:Ed Maste <emaste@FreeBSD.org> 联系方式:Kyle Evans <kevans@FreeBSD.org> 联系方式:Baptiste Daroussin <bapt@FreeBSD.org>
FreeBSD 项目的一个长期目标是使基本系统迁移到现代的、无版权或更宽松许可的组件。在本季度,以下组件已成功移除或替换:
以下组件尚未被认领。部分替换前景可能列在上述链接的 Wiki 页面上。有兴趣的人员可以评估选项并重新启动讨论:
dialog
gcov(内核)
以下组件已指定主要调查员来协调工作。请注意,部分完成通常意味着组件在某些方面兼容,但可能需要评估和补丁,以实现与正在替换的组件的平衡。
diff3(如有兴趣,请联系 bapt@)
联系方式: 許立文 <lwhsu@FreeBSD.org> 联系方式:Warner Losh <imp@FreeBSD.org> 联系方式:Ed Maste <emaste@FreeBSD.org> 联系方式:Ulrich Spörlein <uqs@FreeBSD.org>
Git 工作组基本完成了 doc 和 src(基本系统)树从 Subversion 迁移到 Git 的工作,时间定在 2020 年 12 月。我们目前正在处理一些小的遗留问题,并准备进行 Ports 的迁移。
我们设置了新的主机来作为 Git 仓库和镜像,并开发了提交钩子,用于限制对不同分支的提交、生成提交邮件以及类似的需求。
doc 树的迁移发生在 12 月 8 日和 9 日。转换后,需要对文档构建基础设施进行一些小的调整。
src 树的迁移发生在 12 月 20 日至 23 日之间,涉及主分支;接下来的一个星期里,还进行了其他一些任务,包括启用稳定分支、更新供应商(贡献者)代码以及 Git->svn 网关。我们将稳定分支的提交转换为 Subversion,适用于 stable/11 和 stable/12 分支及相关的发布分支。这允许跟随稳定分支或发布的 FreeBSD 用户继续使用现有的流程和工具。
一个实验性的 Git 转换版本的 Ports 可以通过上面链接获得。Ports 的迁移面临一些独特的挑战(这些挑战不会对 doc 或 src 仓库产生同样的影响),因此仍在进行额外的工作。迁移 Ports 的时间窗口是在每个季度分支前,所以我们预计在 2021 年 3 月底进行迁移。在接下来的几个月里,欢迎大家测试实验性 Ports 仓库。
开发者和用户与 FreeBSD 仓库交互的过程文档目前可以在 Warner 的 GitHub 仓库中找到。该文档将在文档项目的 asciidoc 转换后移至 FreeBSD 开发者手册或其他适当的位置。
工作组正在实验两种与 Git 服务器或仓库兼容的宽松许可工具。Game of Trees 是一个与 Git 仓库兼容的版本控制系统,由 Stefan Sperling 和一些 OpenBSD 开发者以及其他贡献者开发。
John Mehr 的 gitup 是一个最小的、无依赖的程序,用于克隆并同步本地树与远程仓库。它适用于那些本来可以通过像 portsnap 这样的工具完成的用例。
赞助商:FreeBSD 基金会(部分赞助)
联系方式:Edward Tomasz Napierala <trasz@FreeBSD.org>
Linux 兼容层改进工作已经进行两年,得到了 FreeBSD 基金会的赞助,涉及了几个不同的项目赞助,以及社区的贡献。该项目的目标是提升 FreeBSD 执行未修改 Linux 二进制文件的能力。目前的进展可在 Linux 应用状态 Wiki 页面 上追踪。工作现已从命令行应用转向桌面应用。
在本季度,除了扩展 fuse(4),使其能够运行 Linux FUSE 服务器(这是运行 AppImages 所必需的事项之一),FreeBSD 基金会赞助的工作不多。基金会赞助的工作将持续到 2021 年第一季度,确保 13.0-RELEASE 版本中 Linuxulator 以良好状态发布。
Conrad Meyer 做出了非常重要的贡献,包括支持 SO_PASSCRED
setsockopt(2),prctl(2) 标志 PR_SETDUMPABLE
和 PR_GETDUMPABLE
,以及 CLONE_FS
和 CLONE_FILES
的处理。结合一些清理和改进,这些工作使 Linux 版 Chromium 可用;它已在 Netflix 和 Spotify 客户端中进行了测试。然而,它仍然需要在命令行上传递三个标志(--no-sandbox --no-zygote --in-process-gpu
)以解决缺失的功能。此外,现在支持 name_to_handle_at(2)
和 open_by_handle_at(2)
系统调用。还为未识别的套接字选项提供了更好的调试消息。
赞助商:FreeBSD 基金会
联系方式:Kamil Rytarowski <kamil@moritz.systems> 联系方式:Michał Górny <mgorny@moritz.systems>
LLDB 项目基于 LLVM 和 Clang 提供的库,提供了一个现代化的调试器。它使用 Clang 的 AST 和表达式解析器、LLVM JIT、LLVM 反汇编器等,使得调试体验“开箱即用”。它的速度非常快,比 GNU 调试器 GDB 许可更加宽松。
LLDB 是 macOS 上 Xcode 中的默认调试器,支持桌面和 iOS 设备及模拟器上的 C、Objective-C 和 C++ 调试。
FreeBSD 将 LLDB 包含在基本系统中。目前,它与 GNU GDB 调试器相比存在一些限制,尚未提供完整的替代方案。它曾依赖于 LLDB 中的一个过时插件模型,这在技术上造成了积累的债务。该项目旨在使 LLDB 更接近于 GDB 的完全替代品,因此为 FreeBSD 提供了一个现代化的调试器,供软件开发人员使用。
传统的单体目标支持使调试的应用程序和调试器在同一进程空间中执行。现代的 LLDB 插件方法,应用于其他支持的目标,将目标进程放在单独的 lldb-server 进程中执行。这提高了可靠性,并简化了 LLDB 本身的进程/线程模型。此外,本地和远程调试现在采用相同的方法进行。
在迁移到新的进程模型后(支持 32 位和 64 位 x86 CPU),项目集中在审查 LLDB 测试套件的结果,并根据时间修复测试。
在 Moritz Systems 的工作过程中,FreeBSD 项目获得了大量重要改进,包括内核、用户空间基础库(动态加载器)和 LLVM 工具链对 FreeBSD 支持的改进。
这些引入的变化预计将在 LLDB 12.0 中发布,并在适用的情况下出现在 FreeBSD 13.0 中。
FreeBSD/LLDB 开发人员和高级用户的整体体验,已达到其他环境中的相同水平。此外,专注于 FreeBSD 的工作还带来了通用改进,增强了 LLDB 对 Linux 和 NetBSD 的支持。
赞助商:FreeBSD 基金会
联系方式:Alexander Sideropoulos <Alexander.Sideropoulos@netapp.com> 联系方式:Allan Jude <allan@klarasystems.com>
NetApp 开始了一个工作,将 ONTAP 代码行中的 bug 修复和其他改进上游化到 FreeBSD。这些变更使 FreeBSD 社区受益,提供了 NetApp 过去几年所做的许多修复,同时使 NetApp 能够减少在将最新的 FreeBSD 变更引入 ONTAP 树时所需的定制工作。
NetApp 与 Klara 合作推动该项目,帮助识别需要上游化的有趣和有用的变更,并根据需要重新调整和通用化这些变更,以使其适合上游化,并引导它们通过 FreeBSD 的代码审查流程。
在第四季度,Klara 代表 NetApp 在 FreeBSD 内核的多个子系统中进行了 40 次上游修复,包括 geom、dev、amd64、net、kern、netinet 和树中的其他几个区域。
NetApp 打算在 2021 年继续赞助这一工作。
赞助商:NetApp
联系方式:Rick Macklem <rmacklem@freebsd.org>
为了提高 NFS 的安全性,名为《默认情况下远程过程调用加密的方向》的互联网草案指定使用 TLS 1.3 来加密用于 NFS 的 Sun RPC 连接上的所有数据流量。
尽管 NFS 已经能够使用 sec=krb5p 来加密网络上的数据,但这需要 Kerberos 环境,因此未被广泛采用。它还要求加密/解密在软件中进行,因为只有 RPC 消息中的 NFS 参数被加密。由于内核 TLS 能够利用硬件加速来提升性能,并且不需要 Kerberos,NFS over TLS 可能会在实现可用后得到更广泛的采用。
该项目的编码工作现已完成。所有需要的 NFS 和内核 RPC 代码变更已提交至 head/current 内核,并将包含在 FreeBSD13 中。现在可以从一个依赖于 security/openssl-devel port 的 Openssl3 构建守护进程,该版本包含对 ktls 的支持补丁。该守护进程的 Port 名为 sysutils/nfs-over-tls,应该很快提交到 Port 框架中。与此同时,可以按照 https://people.freebsd.org/~rmacklem/nfs-over-tls-setup.txt 中的说明轻松获取该 Port。
为了支持像笔记本电脑这样的客户端,执行 TLS 握手的守护进程可以选择处理来自站点本地 CA 的客户端 X.509 证书。现在的 exports(5) 选项要求客户端提供有效的 X.509 证书。如果证书中存储了“用户名”并且用于将所有 RPC 凭证映射到该用户,则可能违反了互联网草案。只有在提供 "-u" 命令行选项时,rpc.tlsservd(8) 才启用此功能。
代码现在可以进行测试。请参见:https://people.freebsd.org/~rmacklem/nfs-over-tls-setup.txt
设置用于测试的系统仍然需要从最近的 head/FreeBSD13 源代码构建自定义内核,并安装守护进程的 Port,如上述文档所述。
当前实现的主要限制是它使用 TLS1.2 而不是互联网草案中要求的 TLS1.3。待 KERN_TLS rx 补丁包含对 TLS1.3 的支持,这一点应有所改变。
非常感谢进行第三方测试。
联系方式:Gordon Bergling <gbe@FreeBSD.org>
OpenBSM 是 FreeBSD 的一个关键组件,提供操作系统的审计功能。OpenBSM 已经被整合到 FreeBSD 和 macOS 中。目前,Apple 和 FreeBSD 都对 OpenBSM 框架做出了更改,这些更改还没有上游化。这个小项目旨在整合这些更改,并将它们上游化到 OpenBSM GitHub 仓库,以便之后将这两项开发工作合并到 FreeBSD 中。该项目的难点在于手动比较,因为 Apple 没有提供任何变更日志。
我目前正在处理 macOS Catalina 的源代码,希望 Apple 会在 FreeBSD 13 发布之前,及时发布 macOS Big Sur 的源代码。
联系方式:Dimitry Andric <dim@FreeBSD.org> 联系方式:Ed Maste <emaste@FreeBSD.org>
在 10 月份,Clang/LLVM 更新至 11.0.0,随后从上游获得了一些 bug 修复,包括对多个 Tier-2 架构的改进。我们还启用了 -fstack-clash-protection
标志,以启用编译器对“栈冲突”漏洞的缓解,并与上游协调。
FreeBSD 对 LLDB 的上游支持在过去的一个季度中有了显著改善,具体内容在本报告的其他部分中详细介绍。这些改进将在 2021 年初,LLVM 更新至 12.0 时,纳入 FreeBSD 基本系统。如前所述,我们还移除了过时的 GDB 6.1.1 版本。
ELF 工具链进行了多个 bug 修复,还支持 readelf -z
(处理压缩的 ELF 调试部分),并对 addr2line 进行了改进,使其在没有其他调试信息的情况下,基于标签进行报告。我们正在努力将这些改动上游化到 ELF 工具链项目中。
在 ELF 工具链的各个组件中,存在一些开放问题和改进机会。欢迎在这些领域做出贡献。
赞助商:FreeBSD 基金会(部分赞助)
内核子系统/功能、驱动程序支持、文件系统等的更新。
联系方式:Michal Krawczyk <mk@semihalf.com> 联系方式:Artur Rojek <ar@semihalf.com> 联系方式:Marcin Wojtas <mw@semihalf.com>
ENA(Elastic Network Adapter)是 Amazon Web Services(AWS)虚拟化环境中的智能网卡。ENA 驱动程序支持多个发送和接收队列,并且可以处理最多 100 Gb/s 的网络流量,具体取决于使用的实例类型。
自上次更新以来的完成工作:
将 ENA v2.3.0 驱动程序 MFC 到 FreeBSD 11-STABLE 分支
将 ENA v2.3.0 驱动程序 MFC 到即将发布的 FreeBSD 12-STABLE 分支
添加一个功能,允许读取关于超出带宽/包每秒(BW/pps)限制的额外 ENI(Elastic Network Interface)指标
为 ENA 驱动程序文件添加 SPDX 许可证标签
为 ENA 驱动程序添加 Rx 偏移量(硬件特性)支持
修复 ENA 设备的完成描述符对齐问题——在某些平台上,ENA 需要 4k 对齐
正在进行的工作:
引入完整的内核 RSS API 支持
允许重新配置 RSS 间接表和哈希键
将驱动程序移植到 iflib 框架的原型
赞助商:Amazon.com Inc
联系方式:Bjoern A. Zeeb <bz@FreeBSD.org>
英特尔无线驱动程序更新项目旨在支持更新的芯片组,并且在第一阶段将车站端升级至 11ac。
在过去几个月中,已实现 net80211 与 Linux 驱动程序 KPI 之间的连接代码,并且扫描功能已正常工作。目前,重点是通过另一方驱动一个状态机,并在 net80211 和 Linux 兼容代码之间同步状态。
此外,驱动程序和固件已从上游源更新,以支持 AX210 硬件代,并且已经经过测试,可以连接。
希望在报告发布时,身份验证和关联功能已经正常工作,并且基本数据包传递功能也将很快可用。
赞助商:FreeBSD 基金会
联系方式:Conrad Meyer <cem@FreeBSD.org> 联系方式:FreeBSD CSPRNG 小组 <csprng@FreeBSD.org>
自 FreeBSD 11 起,默认的 random(4)
实现基于 Ferguson 和 Schneier 于 2003 年提出的 Fortuna 设计。总体来说,Fortuna 会将熵积累到一系列池中,并根据某些标准从这些池中重新种子一个生成器。
2019 年,Ferguson(微软)发布了一篇关于 Windows 10 系统随机数生成器设计的白皮书。Fenestras X 是一个基于发布的 Windows 10 设计的 random(4)
实现。
Fenestras X / Windows 10 设计与 Fortuna 相似,因此最有趣的是描述它们之间的差异:
Fenestras X 具有每个 CPU 的生成器,且从根生成器种子。Fortuna 只有根生成器。这一变化消除了多个核心上运行的 random(4)
读取器之间的锁争用。
Fenestras X 中的生成器形成了一个从根 RNG 开始的树。当读取时,生成器会有效地检查其父生成器是否已使用更新的熵重新种子。如果是,子生成器会在执行读取操作之前重新种子自己。这与 arc4random(9)
和用户空间的 arc4random(3)
集成。
Fenestras X 生成器是缓冲的。小于某个任意阈值(当前为 128 字节)的请求会从缓冲区提供服务。缓冲区中读取的字节会在被消耗时被安全地擦除。如果请求消耗的字节超过缓冲区中的可用字节,缓冲区将会刷新。这有效分摊了重新密钥和从加密 CTR 模式密码生成输出的成本,尤其是 AES 非常慢。
还有其他重要的差异,感兴趣的读者可以阅读 Ferguson 的白皮书,它简短易读。如需了解 FreeBSD 实现的更多信息,请参见 SVN 提交信息——特别是 r366620
。
Fenestras X 实现已在 CURRENT
中提供,但默认情况下是禁用的。(默认实现仍为 Fortuna。)目前,你必须在自定义内核配置中设置 RANDOM_FENESTRASX
选项,并重新构建内核以使用新设计。目前没有已知的 bug 或相对于 Fortuna 实现的弱点。
未来的工作和行动呼吁:
欢迎进行更多的设计审查、实现审查和测试。
额外的熵源:我们可以使用白皮书中描述的一些源的实现,在 Fortuna 和 Fenestras X 中,尤其是我们缺少一个抖动熵源。
联系方式:Kristof Provost <kp@freebsd.org>
pf 的性能并不如预期。在使用 hwpmc 工具进行一些调查后,最终发现缓存行为非常差。最长_lat_cache.miss 事件提供了非常有用的信息。
事实证明,这主要是由于 pf 在状态、规则和接口中进行数据包和字节计数造成的。
pf 代码采取了非常简单的方法,使用一个简单的 uint64_t 变量并在每个数据包上递增。缺点是,当多个核心同时执行时,CPU 必须非常频繁地将其写入内存,这大大减慢了数据包处理速度。幸运的是,counter(9) 框架正是为这种情况设计的。
另一个复杂因素是,pf 对其内部数据使用与从用户空间配置相同的结构定义。为了避免破坏用户空间,这些数据结构已经解耦。也就是说,原本用于通过 ioctl() 接口设置规则并在处理数据包时评估规则的 pf_rule,现在仅用于配置。新的 pf_krule 结构用于评估数据包。这使我们可以更改 pf_krule 结构,将 uint64_t 更改为 counter_u64_t,而不会影响用户空间。
Olivier Cochard-Labbé 测试了所有的变更,并发现(取决于硬件)吞吐量有了显著的提升。
赞助商:Orange Business Services
联系方式:Alexander Chernikov <melifaro@FreeBSD.org>
这项工作添加了一个 FIB 查找框架,允许在路由表上动态附加自定义的 IP 查找算法。它允许使用更高效的查找算法,并根据路由表中的路由数动态选择。最后,它提供了一个修改版的 DIR-24-8 实现,用于 IPv4/IPv6,加速了大 FIB 用例的 IP 查找。
这项工作是更大规模的路由子系统现代化工作的一部分。
FreeBSD 在低端和高端设备上运行不同的工作负载,因此每种情况有不同的网络和内存需求。具有少数路由的小型设备与具有完整视图的路由器是不同的。IPv4 查找与 IPv6 查找也有所不同。条件可能会动态变化:系统可能会被重新配置为接收完整视图,而不是默认路由。
目前,FreeBSD 使用基数树(压缩的二叉树)来执行所有单播路由操作,包括路由查找。基数树的实现需要在每个项目中存储密钥长度,从而允许使用 sockaddrs,透明支持几乎所有地址族。这种灵活性是有代价的:基数树相对较慢,不适合缓存,并且会在热路径中添加锁。最后,基数树与系统的其他部分紧密耦合,使得切换到其他东西变得困难。
概述
模块化 FIB IP 查找框架旨在解决灵活性和性能需求。
它将系统基数树作为“控制平面”的事实来源,简化实际算法的实现。它允许动态加载新算法作为内核模块,并抽象出大多数操作系统特定的细节,从而减少算法的“胶水”代码。它通过动态选择最匹配的算法,自动适应当前系统状态。
以下是默认提供的算法。
IPv4:
bsearch4(在特别设计的 IP 数组中进行无锁二进制查找),适用于小 FIB(少于 16 条路由)
radix4_lockless(无锁不可变基数树,每次路由表变化时重新创建),适用于小 FIB(少于 1000 条路由)
radix4(基本系统基数树后端)
dpdk_lpm4(基于 DPDK DIR24-8 的查找),无锁数据结构,优化用于大 FIB(D27412)
IPv6:
radix6_lockless:无锁不可变基数树,每次路由表变化时重新创建,适用于小 FIB(少于 1000 条路由)
radix6:现有系统基数树的封装
dpdk_lpm6:基于 DPDK DIR24-8 的查找,无锁数据结构,优化用于大 FIB(D27412)
性能变化
微基准(i7-7660U,单核查找,2048 个目的地,基准代码见 D27604)。
IPv4:
8 条路由:radix4:约 20mpps,radix4_lockless:约 25mpps,bsearch4:约 69mpps,dpdk_lpm4:约 67mpps
70 万条路由:radix4_lockless:3.3mpps,dpdk_lpm4:46mpps
IPv6:
8 条路由:radix6_lockless:约 20mpps,dpdk_lpm6:约 70mpps
10 万条路由:radix6_lockless:约 14mpps,dpdk_lpm6:约 57mpps
转发性能:
+10-15% IPv4:小 FIB,bsearch4
+25% IPv4:全视图,dpdk_lpm4
+20% IPv6:全视图,dpdk_lpm6
联系方式:Alexander Chernikov <melifaro@FreeBSD.org>
这项工作旨在实现可扩展的路由多路径支持,并默认启用它。它弥补了与其他现代网络操作系统之间长期存在的功能差距。
这项工作是持续推进的路由子系统现代化努力的一部分。
最初的 FreeBSD 多路径实现 RADIX_MPATH
于 2008年 添加。它基于基数树的更改,并将多路径路由表示为一个链式路径的链表。该实现未完全完成和测试,导致许多崩溃报告。
与多路径相关的更改基于引入下一跳的概念。下一跳是独立的数据结构,包含执行数据包转发所需的信息。它们在路由之间共享,提供了更多预计算的高效缓存数据,同时需要更少的内存。有兴趣的读者可以在 D24141 中找到更详细的描述。另一个概述可以在有关 Linux 内核实现的 Nexthop 对象讲座 中找到。
多路径实现通过引入下一跳组进一步扩展了下一跳的概念。下一跳组实际上是根据每个下一跳的相对权重编译的下一跳数组。
每个路由都有指向下一跳或下一跳组的指针,从而解耦了查找算法与路由栈内部的关系。下一跳和下一跳组都是不可变的,并使用 epoch(9)-支持的回收机制。
下一跳对象 (D24232) [完成]
引入下一跳对象 [完成]
将旧的 KPI 用户转换为新的 KPI [完成]
将路由缓存转换为下一跳缓存 [完成]
将 rtentry
结构体字段访问转换为 nhop 字段访问 [完成]
消除旧的查找 KPI 并隐藏 rtentry
结构体 [完成]
多路径路由 (D26449) [完成]
将控制平面客户切换为使用 (rtentry, nexthop) 对,而不是仅使用 rtentry,从而允许透明地进行多路径更改 [完成]
引入下一跳组对象 [完成]
为 RIB(路由信息库)操作函数添加多路径支持 [完成]
添加流量生成的功能以启用负载均衡 [完成]
路由守护进程支持
添加 net/bird 对多路径路由的支持 [未开始]
通过 rtsock 添加显式的下一跳/下一跳组控制 [进行中]
与 FRR 开发人员合作,添加基于下一跳的路由控制 [未开始]
联系方式:Scott Long <scottl@freebsd.org>
该项目实现了 Thunderbolt3 和 USB4 的驱动栈。这些技术与 USB3 及其之前的版本有根本性的不同,因此需要为主机接口适配器和拓扑结构以及配置管理层编写全新的驱动程序。在其最基本的层面,TBT3/USB4 拓扑表现为 PCI 桥接和总线,而附加的设备表现为 PCI 设备、USB3 设备或 DisplayPort 设备。早期的 TBT3 控制器甚至不会出现在系统拓扑中,除非插入 TBT3 设备。这些早期的 TBT3 系统还实现了一种安全策略,旨在防止未授权或恶意设备,但该方案已被证明无效,并且已从后续的 TBT3 和 USB4 实现中移除。除了安全控制,TBT3/USB4 栈还控制电源管理和拓扑热插拔。
FreeBSD 驱动当前支持 Alpine Ridge 和 Ice Lake TBT3 控制器,并能执行基本的安全验证和拓扑感知。USB4 支持以及完整的连接管理器和电源管理支持仍在开发中。当前的驱动将在 2021 年 1 月初提交至 FreeBSD。
虽然此项工作没有得到赞助,但得到了 FreeBSD 基金会和 Netgate 的鼓励和支持。
联系方式:Alan Somers <asomers@FreeBSD.org>
POSIX 异步 I/O(AIO)是对文件和设备进行异步输入输出操作的功能。FreeBSD 的实现效率较高,尤其在写入磁盘文件时。但标准 API 中一个长期存在的缺陷是缺少矢量化函数。也就是说,缺少异步版本的 pwritev(2)
和 preadv(2)
。一个常见的解决方法是使用 lio_listio(2)
,但它有一些缺点:对程序员来说更麻烦,可能会在部分操作完成时提前返回,且需要更多的系统调用,无法保证操作按顺序完成。
本季度,我添加了两个新的系统调用:aio_writev(2)
和 aio_readv(2)
。它们与非矢量化版本的工作方式相同,但它们接受一个 iovec
元素的数组,就像 pwritev
和 preadv
一样。虽然无法与 lio_listio
一起使用,但未来可能会添加支持。
联系方式:Allan Jude <allanjude@freebsd.org>
Zstandard(ZSTD)是一种现代高性能的压缩算法,旨在提供与 gzip 相当的压缩比,同时提供更好的性能。ZSTD 已在 FreeBSD 中广泛应用于多种用途,包括压缩内核崩溃转储、替代 gzip 或 bzip 用于压缩日志文件,以及未来版本的 pkg(8)。
这项将 ZSTD 完全集成到 ZFS 中的工作由 FreeBSD 基金会赞助。
在过去的四个季度中,集成 ZSTD 到 OpenZFS 的最终任务已经完成。
该项目的已完成里程碑:
在 FreeBSD 引导加载程序中集成 ZSTD(Warner Losh imp@freebsd.org)
在 FreeBSD 手册 ZFS 章节中添加关于 ZSTD 的说明
撰写了 FreeBSD 期刊文章,解释选择合适压缩级别时的考虑因素
集成更改后,监控 bug 报告并进行修复
有了这些更改,现在可以从使用 zstd 或 zstd-fast 压缩的池启动。做一个对比,标准的 FreeBSD 13 安装(没有调试符号)未压缩时为 1175 MB,而使用 LZ4 压缩后为 570 MB(2.15x),但使用 ZSTD 的默认级别 3 时仅为 417 MB(3.00x),并且在最大级别 19 时仅为 374 MB(3.36x)。
赞助商:FreeBSD 基金会
更新平台特定功能并引入对新硬件平台的支持。
联系方式:Mitchell Horne <mhorne@FreeBSD.org>
为了推动 arm64 架构晋升为 Tier-1 状态,开展了通过 freebsd-update(1)
测试构建和提供发布和补丁级更新的工作。经过调查,得出结论:该过程只需要很少的更改;更新构建脚本需要做一个小调整,bsdiff(1)
工具中有一个小 bug 已修复。希望项目能够在 FreeBSD 13.0 发布时开始为该平台提供安全更新,消除用户需要从源代码编译更新的要求。
本季度,arm64 支持新增了 ossl(4)
加密驱动。该驱动通过利用 OpenSSL 的汇编例程加速 SHA-1 和 SHA-2 的加密操作。这些例程会检测并使用 CPU 支持的优化指令。该支持通过 cryptodev(4)
设备和内核中使用 crypto(9)
接口的消费者(如 IPSec 身份验证头协议和内核 TLS)受益。
最后,已完成向内核的 gdb(4)
接口添加必要的机器相关代码工作。这使得能够通过串行线使用 gdb(1)
进行远程调试。
赞助商:FreeBSD 基金会
联系方式:Mitchell Horne <mhorne@FreeBSD.org>
联系方式:freebsd-riscv 邮件列表 联系方式:IRC #freebsd-riscv 在 freenode 上
FreeBSD/RISC-V 项目为在 RISC-V 指令集架构 上运行 FreeBSD 提供支持。
本季度,提交者和贡献者共同推动了一些改进和错误修复。以下是一些小的更新:
添加了 riscv64 LINT 内核配置及 CI 任务 (FreeBSD-head-riscv64-LINT
)
将 emulators/riscv-isa-sim
切换至官方上游并更新至 2020-11-02 快照
创建了 sysutils/u-boot-sifive-fu540
,为 HiFive Unleashed 提供的 u-boot 移植
改进了 SBI 扩展支持
本季度,RISC-V 的软件包构建工作取得了进一步进展。通过修复与大依赖项 devel/python-setuptools
和 devel/glib20
相关的构建和运行时问题,解决了几千个被跳过的软件包。当前正在进行的工作是解决其他重要软件包(如 devel/nspr
和 databases/sqlite3
)中的错误。通过解决这些小问题,超过 15000 个软件包现在可以使用 qemu-user-static 在该平台上构建。
最后,12 月发布了首个 riscv64
每周开发快照。这包括常规的 memstick 安装程序、虚拟机映像和通用 SD 卡映像。虽然仍需做一些小调整,但这标志着该平台的重大进步,并降低了运行 FreeBSD/RISC-V 系统的入门门槛。这也意味着 FreeBSD 13 可能成为该架构的首个可下载版本。对于那些有兴趣亲自试用虚拟机映像的人,可以查看维基上的快速入门说明。
影响基本系统及其程序的更改。
联系方式:Alan Somers <asomers@FreeBSD.org>
长期以来,经典的 ping 命令仅支持 IPv4。一个独立的工具 ping6 最初由 WIDE 编写作为开发 IPv6 的研究工具。作为研究工具,它不需要 IPv4 支持,但从那时起,它被无数开发者和系统管理员广泛使用。
ping 和 ping6 的分离一直是一个持久的抱怨。尽管这两个命令几乎完全相同,但需要两个独立的命令,令人烦恼。本季度,我合并了 Ján Sučan 的谷歌编程之夏工作,将这两个命令合并。现在,ping 可以根据 -4 和 -6 开关或目标格式处理任意协议。为了向后兼容,还提供了 ping6 的硬链接。
赞助商:谷歌编程之夏
影响 Ports 的更改,无论是对大多数树进行的全面更改,还是对单个 Port 本身的更改。
联系方式:Adriaan de Groot <kde@FreeBSD.org>
FreeBSD 上的 KDE 项目旨在将 KDE 社区制作的所有软件打包进 FreeBSD Ports 中。该软件包括一个完整的桌面环境,称为 KDE Plasma、图形应用程序、即时通讯工具、视频编辑套件,以及一个茶计时器和数百个可以在任何 FreeBSD 机器上使用的其他应用程序。
KDE 团队(kde@)是 desktop@ 和 x11@ 的一部分,致力于构建使 FreeBSD 成为美观且可作为日常桌面图形机使用的软件栈。
本季度,kde@ 团队完成了以下工作:
完成了 10 月、11 月和 12 月的 KDE 应用程序和 KDE Plasma 更新
完成了所有双周发布的 KDE Frameworks 更新
将 Qt 更新至 5.12.2,包括 Qt5 WebEngine
跟进了两次 cmake 补丁发布
跟进了一个 ninja 补丁发布
此外,还有大量的基础设施工作和各个应用程序的更新,KDE 社区也推出了一个新的 Matrix 客户端,尽管这些我们通常未能管理并写入报告,所以本报告较为简短,主要列出了重点事项。我们度过了一段愉快的时光,追逐了对我们最有用的事物,并顺利度过了这一年。期待明年能再次与 FreeBSD 的人们见面。
我(adridg@)特别感谢 Kai Knoblich (kai@) 在 WebEngine 上的努力:这是一个庞大且令人头痛的代码库,感谢他的工作,现在我们已经更新到最新版本。
联系方式:FreeBSD Office 团队邮件列表 <office@FreeBSD.org> 联系方式:Dima Panov <fluffy@FreeBSD.org> 联系方式: 許立文 <lwhsu@FreeBSD.org>
FreeBSD Office 团队致力于多个与办公相关的软件套件和工具的工作,如 OpenOffice 和 LibreOffice。
本季度的工作重点是为所有 FreeBSD 用户提供 LibreOffice 套件及其伴随应用程序的最新稳定版本。
最新和季度 ports 分支更新了 LibreOffice 套件,从 7.0.1 到 7.0.4 版本,所有 Tier 1 架构的编译补丁,并更新了所有相关库。我们的一些本地和关键构建补丁已经提交并被上游接受。
与此同时,我们的 WIP 仓库已经迁移到新的位置,使用官方的 github.org/freebsd 资源。
WIP 仓库还进行了重大更新,目前包括 LibreOffice 套件的开发版本 7.1.0.0.beta1。计划于 2021 年 3 月发布正式版本。
我们正在寻找有意帮助该项目的人。所有不稳定的 LibreOffice 快照工作都已在我们的 WIP 仓库 中进行。 开放的错误列表 包含了所有需要关注的已提交问题。欢迎在邮件列表和 Bugzilla 中提交补丁、评论或异议。
联系方式:Mark Linimon <linimon@FreeBSD.org>
自上次报告 FreeBSD 在非 x86 架构上 Port 的状态以来,已经有一段时间了。
传统上,我们将这些架构称为“二级架构”。然而,aarch64 和 powerpc64 有意向成为一级架构。此外,尽管 riscv64 目前是三级架构,但它也有意向成为二级架构。
最大的新闻是,得益于 FreeBSD 基金会(以及 Philip Paeps 的协助),FreeBSD 现在拥有两台新的 aarch64 机器,替代了之前那台年久失修的机器。从 8 月以来,我们首次再次拥有了最新的 aarch64 包。
多亏了上述工作,以及 Emmanuel Vadot 和其他人的努力,aarch64 Port 中的一些比特腐化问题已被修复。
Piotr Kubaj (pkubaj@) 继续对 powerpc64(大端) Port 进行质量保证。目前几乎所有可以构建的 Port 都已完成构建。Linux Port 和一些图形驱动程序除外。除此之外,powerpc64 已达到与 amd64 的平衡。
Piotr 还开始了将 powerpc64le(小端)与 powerpc64 对齐的工作。尽管许多 powerpc64 的源代码提交者(包括本文作者)偏爱大端,但事实是,图形能力要接近 x86 的平衡,最可行的路径是小端架构。
Mark Linimon (linimon@) 已开始在 riscv64 上进行自己的 Port 测试构建,以确定整体可构建性。令人惊讶的是,许多 Port 确实可以构建。感谢许多已在 riscv64 上工作的贡献者,包括 John Baldwin (jhb@) 提供的 LLVM 修复,现在我们已经能够构建大约 20,000 个包。注意:这些包是 非官方的,不保证其可用性。
Kyle Evans (kevans@) 在追踪 qemu 中的比特腐化问题方面的工作,对 aarch64 和 riscv64 的工作起到了关键作用。所有用户都被鼓励更新到最新版本。
不幸的是,mips/mips64 需要大量工作。devel/libffi 在 mips64 上无法构建,几乎阻塞了整个 Ports 的一半。
待办事项
我们需要 riscv64 的用户实际测试已经构建的包(目前它们仅被测试为可构建性)。有兴趣的用户请联系 linimon@。
如果有人仍然在使用 mips/mips64 进行除最简单任务外的其他工作,我们欢迎补丁。
联系方式:René Ladan <portmgr-secretary@FreeBSD.org> 联系方式:FreeBSD Ports 管理团队 <portmgr@FreeBSD.org>
自 2020 年 1 月起,Python 2.7 在经过多年的扩展后达到了生命周期的终点。Portmgr 随后启动了从 Ports 中逐步淘汰 Python 2.7 的项目,并在 2020 年 12 月 31 日标记 lang/python27 为过期。去年,约有 740 个 Port 从 Ports 中移除,因为它们与 Python 3 不兼容,主要是因为这些 Port 要么未维护,要么已被上游放弃。
在此过程中,有几个例子表明,尽管上游仍在活跃,但由于资源问题,尚未将软件升级到 Python 3。一个明显的例子是 www/chromium 及其衍生软件,如 devel/electron7 和 www/qt5-webengine。Portmgr 当前正在研究如何在保持 Chromium 和 KDE 5 功能的同时,尽量减少 Python 2.7 对 Ports 的影响。由于 FreeBSD 集群本身的各种软件包也使用了 Python 2.7,portmgr 开始与相关方协调升级计划。目前,仍有 40 个 Port 直接依赖于 Python 2.7 进行构建或运行,还有若干间接依赖的 Port。所有这些 Port 最终应升级到 Python 3,或被移除,理想情况下应该在今年完成。
Portmgr 正在清理不需要 Python 2.7 的 Port 中的 Python 2.7 代码。新的 Port 不应再使用 Python 2.7,例如,它们不应包含 USES=python,而应使用类似 USES=python:3.6+ 的配置。
因此,尽管这一过程看起来相当具有侵入性,但不可能再继续支持 Python 2.7。随着时间的推移,可能会出现安全漏洞,而这些漏洞可能无法得到修复,因为 Python 软件基金会已经不再支持 Python 2.7。其他问题是,随着时间推移,软件会过时,从而失去作为开发工具包的一部分的有效性。
需要帮助:
协调与邮局管理员的合作,隔离或迁移 mail/mailman
协调与集群管理员(?)合作,升级 svnweb 和我们的 wiki
联系方式:Xfce 团队 <xfce@FreeBSD.org> 联系方式:Guido Falsi <madpilot@FreeBSD.org>
FreeBSD Xfce 团队 (xfce@) 致力于确保 Xfce 桌面环境在 FreeBSD 上的维护和完全功能。
在本季度,Xfce 团队很高兴地将 Xfce 4.16 引入 FreeBSD Ports !
以下是 Xfce 4.16 发布的亮点:
面板现在支持暗黑模式(默认启用)和动画自动隐藏过渡
新增了一个名为 statustray
的面板插件,结合了 StatusNotifier 和传统 Systray 项目
显示对话框中新增了分数缩放支持(对 HiDPI 显示器非常有用)
"关于 Xfce" 对话框中新增了一个标签,显示基本的系统信息,如 CPU 或 GPU 类型
设置管理器改善了搜索和筛选功能
所有设置对话框现在使用 Gtk 绘制的窗口装饰(客户端侧装饰)
“Mime 设置”和“首选应用程序”对话框合并为“默认应用程序”对话框
Thunar 文件管理器现在支持暂停复制/移动操作,并支持排队的文件传输
为 .epub(电子书格式)生成缩略图功能已添加到 tumbler
新的默认壁纸和图标主题
应用程序查找器现在可按“frecency”排序应用程序——这是一种结合了频率和近期性的排序方式
从所有组件和插件中删除了对 GTK2 的支持
更多细节,请参考 Xfce 4.16 上游发布公告。由于 GTK2 和 libxfce4gui 支持被移除,某些面板插件和库将被删除,因为它们不再与 Xfce 4.16 兼容:
deskutils/orage
deskutils/xfce4-volumed
print/xfce4-print
science/xfce4-equake-plugin
x11/xfce4-embed-plugin
x11/xfce4-quicklauncher-plugin
x11/xfce4-wmdock-plugin
x11-toolkits/libxfce4gui
警告:不幸的是,这次更新可能会暴露出 pkg 中的一个 bug,导致升级后 libexo 包中的文件丢失。为避免此问题,请在升级其他包之前,单独先升级 libexo 包,如 UPDATING 记录 20210102 所述。
特别感谢 riggs@、Olivier Duchateau duchateau.olivier@gmail.com、woodsb02@、Sergey Dyatko sergey.dyatko@gmail.com 和 ehaupt@ 的帮助与贡献。
文档树、手册页或外部书籍/文档中的值得注意的变化。
联系方式:Danilo G. Baio <dbaio@FreeBSD.org> 联系方式:Edson Brandi <ebrandi@FreeBSD.org>
为了寻找新的贡献者,2020 年 9 月/10 月期的 FreeBSD 期刊刊登了一篇关于如何成为 FreeBSD 翻译者的文章。
在这一年里,我们收到了新贡献者的加入;人数持续增长,我们几乎每天都在 Weblate 平台上收到翻译。
11 种语言(1 种新语言)
116 个注册用户(自 2020 年第一季度以来新增 69 名用户)
语言
简体中文 (zh_CN)
繁体中文 (zh_TW)
荷兰语 (nl_NL) - 新增
法语 (fr_FR)
德语 (de_DE)
意大利语 (it_IT)
挪威语 (nb_NO)
波斯语 (fa_IR)
葡萄牙语 (pt_BR)
西班牙语 (es_ES)
土耳其语 (tr-TR)
我们感谢所有贡献者,无论是翻译还是审阅文档。同时,请帮助在你的本地用户组中推广这项工作,我们总是需要更多志愿者。
联系方式:Sergio Carlavilla <carlavilla@FreeBSD.org>
Doc New Generation 项目已完成。切换日期定为 1 月 23 日,星期六。
使用 Hugo 和 AsciiDoctor 的目的是降低学习曲线,让人们能够快速开始为我们的文档系统做贡献。使用 Hugo 的其他好处是我们可以使用除了 AsciiDoctor 之外的其他技术,如 MarkDown、RST、Pandoc 等。
你可以找到 正在更新 FreeBSD 文档项目简介为 Hugo/AsciiDoctor 的工作进展。
不易分类的对象。
联系方式:Alan Somers <asomers@FreeBSD.org>
FreeBSD 的 nfsstat(8) 工具提供了大量的统计信息,但我希望通过 Prometheus 来监控它们。虽然屏幕抓取 --libxo 输出是可行的,但某些统计数据在预处理时干扰了我的 Prometheus 处理。因此,我编写了一个单独的工具,发布内核提供的原始统计数据。在此过程中,我还发现并修复了一些 nfsstat 中的 bug。如果有人感兴趣,我可以为它添加一个 Port。
赞助商:Axcient
许多项目基于 FreeBSD 或将 FreeBSD 的组件整合到他们的项目中。由于这些项目可能对更广泛的 FreeBSD 社区感兴趣,我们有时会在季度报告中包含这些项目提交的简要更新。FreeBSD 项目并不对这些提交中任何声明的准确性或真实性作出任何保证。
联系方式:Vincent Milum Jr <freebsd@darkain.com>
VMWare 是一家生产商业虚拟机监视器的公司,其 vSphere ESXi 虚拟机监视器支持 AMD64 和 i386 架构。在 10 月初,他们发布了一款面向 ARM Aarch64 的技术演示虚拟机监视器,适用于 ARM ServerReady 硬件以及如树莓派 4b(4GB 和 8GB 款)等单板计算机。这个新虚拟机监视器被称为 VMWare ESXi-ARM Fling。
自 ESXi-ARM Fling 发布以来,已经对虚拟机监视器和 FreeBSD 进行了工作,使它们之间的兼容性更好。尽管这些工作最初是为了让这两者更好地协同工作,但总体来说,这些工作已经变得更加通用,旨在支持 Aarch64 的裸机安装以及在其他虚拟机监视器如 QEMU 上运行 FreeBSD。
Twitter 用户 astr0baby 就是在这个工作的基础上,在新的 Apple M1 系统上的 QEMU 下运行 FreeBSD 。
在 ESXi-ARM Fling 发布时,要让 FreeBSD 在其下运行,需要将 Aarch64 预制的 VMDK 文件上传到虚拟机监视器存储,并运行一系列 CLI 命令将磁盘映像转换为支持的文件格式。最初的工作是使 FreeBSD Aarch64 ISO 可引导,并包括完成安装过程所需的驱动程序。通过这种方式,用户可以使用与 AMD64 或 i386 在 ESXi 下相同的方法进行 FreeBSD Aarch64 的全新安装。
CD-ROM 驱动程序的包含恰好错过了 FreeBSD 12.2-RELEASE 的截止日期。然而,第一个发布的 12.2-STABLE Aarch64 构建中已包含该驱动程序。FreeBSD 13-CURRENT 也包含了该驱动程序。因此,只有 12-STABLE 和 13-CURRENT 支持全新的 CD ISO 安装。
下一步是使虚拟硬件的主要组件正常工作。这包括添加更多的 USB 控制器、vmxnet 虚拟网卡,以及将 pvscsi Para-Virtual SCSI 驱动程序添加到 Aarch64 GENERIC 中。
ESXi-ARM Fling 的虚拟 UEFI 中存在已知的 bug,导致无法从 pvscsi 启动,因此目前启动设备必须位于虚拟机内附加到 SATA 控制器的虚拟磁盘上。
ESXi-ARM Fling 使用了一种新的虚拟 SVGA 设备,目前在任何平台上都没有工作驱动程序,因为规格尚未最终确定。因此,目前只有 efi-fb/scfb 可用于控制台和 Xorg。
VMCI 驱动程序目前完全无法编译。该驱动程序包含一些 x86 汇编代码,需要转换为 ARM。这将是任何有汇编语言转换经验的人可以深入研究的一个很好的领域!
在 ESXi-ARM Fling 发布时,存在一个虚拟机监视器 bug,导致 FreeBSD 中只能使用 1 个 vCPU。此问题现已修复,允许使用最多 8 个 vCPU。超过这个数量需要一个 FreeBSD 补丁,该补丁由 VMWare 开发者 Cypou 编写。
目前已修复/正常工作的事项:
从 CD ISO 镜像启动
虚拟 USB 2.0 控制器
虚拟 USB 3.1 控制器
虚拟 USB 键盘
虚拟 USB 鼠标
vmxnet3 虚拟网卡
pvscsi Para-Virtual SCSI 存储控制器
open-vm-tools 客户虚拟机工具
Xorg 增强鼠标驱动程序(未测试)
多核 CPU(最多 8 个 vCPU)
仍然存在问题:
从 pvscsi 启动
Xorg SVGA 驱动程序
vmci 虚拟机通信接口
多核 CPU(超过 8 个 vCPU)
所有这些工作都使得在 Aarch64 Port 集合上的工作变得更容易,因为它提供了一个高质量的虚拟化开发和测试环境。该环境已被用于更新 ZeroTier Port 和 Facebook 的 RocksDB,后者用于 MariaDB Port。
FreeBSD 现在有一个 Discord 聊天!关于 Aarch64 的 FreeBSD 讨论可以在我们的 #embedded 频道中进行。尽管这个频道的名字是“嵌入式”,我们讨论的是所有级别的 ARM 开发,从大型服务器到虚拟化环境,再到单板计算机。
联系方式:Christer Edwards <christer.edwards@gmail.com>
Bastille 是一个开源系统,用于自动化在 FreeBSD 上容器化应用程序的部署和管理。
Bastille 模板自动化容器设置,允许你根据需要轻松复制容器。
Bastille 可在 Port 中作为 sysutils/bastille
使用。
在 2020 年第四季度,Bastille 合并了一些令人兴奋的新功能。更改包括:
完全采用先前的实验性 Bastillefile 格式
新的 config
子命令
默认包含并默认应用的模板
支持 -CURRENT 主机上的 -CURRENT jail
支持 64 位主机上的 32 位容器
模板中支持动态参数和变量定义
超过二十个 bug 修复和一般改进
更多关于 Bastille 发布 的详细信息。upstream 已更新为 0.8.202010101
(最新版本)。ports(sysutils/bastille
)已更新为 0.7.20200414
。
联系方式: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 - 10 月,我们发布了一个移植到 Arm Morello 架构的 CheriBSD 开发者预览版本。这个版本支持动态链接的运行时,功能上基本可用。它是从一个开发分支切出来的,目前正在将该分支的内容合并到 CheriBSD 主线中。我们预计将在 2021 年初从这个分支发布新版本。
内核空间内存安全(纯能力内核)- 当前的 CheriBSD 内核是一个混合 C 程序,其中只有指向用户空间的指针是 CHERI 能力指针。这确保了内核遵循应用程序运行时的意图,并且不能用来突破应用程序指针的边界。我们已经开发并将很快合并一个纯能力内核,其中内核中的所有指针都是适当界定的能力指针。这大大减少了缓冲区溢出的机会。这种空间内存安全为未来的工作奠定了基础,比如设备驱动程序隔离和内核时序安全。
用户空间堆时序内存安全(Cornucopia)- CHERI 能力提供了必要的特性,使得可以高效地撤销已释放的指针。通过 Cornucopia,我们实现了一个轻量级的撤销框架,提供了对重新分配后使用指针的保护,平均开销低于 2%。我们计划在接下来的一年里进一步降低这些开销,并将该功能合并到 CheriBSD 主线。
与 FreeBSD 上游同步 - 本季度,我们花费了相当多的时间与 FreeBSD-CURRENT 同步。到 12 月初,我们已完成同步。当前的合并工作暂停,正在处理 Morello 和纯能力内核的变更。在此期间,我们进行了基于 FreeBSD 树的旧版导出和新 FreeBSD Git 仓库的测试合并。该过程顺利进行,预计影响较小。
我们一直在更新来自布加勒斯特 Politehnica 大学的 arm64 bhyve,并将其提交到 FreeBSD。我们已向上游提交了初步更改,以帮助支持这一工作。
联系方式:John-Mark Gurney <jmg@FreeBSD.org>
嵌入式实验室项目的目标是使单板计算机(SBC)和其他设备更容易为开发人员所使用。尽管单板计算机通常价格低廉,但维护它们的成本并不便宜,包括保持更新所需的时间成本、支持它们的基础设施等。
该项目的目标是支持和增强现有的 CI 工作,同时使开发人员能够更容易地在一块或多块不同的开发板上测试他们的代码和更改。
待工作[大致]完成,我将托管一个实验室,所有拥有 FreeBSD.org 账户的人都可以免费使用。有关此信息将在接近启动时发送。
架构的核心部分是,每当通过 API 预定一块开发板时,都会创建一个新的 jail,其中包含串口控制台 tty、互联网访问接口以及一个连接到开发板以太网端口的接口(假设有以太网端口)。这为每次运行提供了一个干净的系统,并能完全控制网络接口,以支持网络启动和其他开发。该 jail 会安装与开发板匹配的基本 FreeBSD 包。
API 的一部分还将允许为调试提供电源循环控制。这个部分相对可扩展,因此添加额外模块以提供更多支持应该不困难。
API 还支持在 jail 中运行交互式命令。这将使得控制环境的脚本编写变得更容易,例如直接运行一个 expect 脚本对接串口控制台,或在 jail 中运行一个脚本。
该项目进展顺利,目前已集成并运行一块 Pine64 A64-LTS 开发板。开发板的预定和释放功能正常运行,并且可以通过 API 在 jail 中运行命令。电源控制功能已启用,目前使用 PoE 智能交换机控制电源。
由于电源问题,使用 SDWire 与该环境配合的工作停滞。USB 不适用于电源隔离,这导致电源控制出现问题。目前使用的开发板 A64-lTS 配备的是一个光隔离的 USB 串口适配器,确保电源控制不会出现问题。但是,我尚未找到适用于高速 USB 的解决方案。我认为切断 USB 电缆的 VBUS(电源)线可能会允许精细的电源控制,但尚未进行测试。
赞助商:FreeBSD 基金会
联系方式:Dan Langille <dan@langille.org>
FreshPorts 及其姊妹网站 FreshSource 已经报道 FreeBSD 提交了 20 年。它们涉及了所有提交,而不仅仅是 Port。
FreshPorts 跟踪提交,并从 Port 的 Makefile 中提取数据,创建一个对 Port 开发者和 Port 用户有用的信息数据库。
例如, https://www.freshports.org/security/acme.sh/ 显示了该 Port 的历史,从 2017 年 5 月开始。
成为 git 准备状态的工作大部分已经完成。src 和 doc 的提交已经流入 devgit.freshports.org。有些问题仍需处理,但并不影响提交流入数据库。
亚马逊已捐赠了足够的资源,以便尝试将 FreshPorts 运行在 AWS 上。我需要以下方面的帮助:
使 IPv6 正常工作
与 RDS 配合工作
如果你能提供帮助,请与我联系。谢谢!
联系方式:Simon Peter <probono@puredarwin.org>
联系方式:#helloSystem
在 irc.freenode.net
,并已镜像到 Matrix 上的 #helloSystem:matrix.org
helloSystem 是基于 FreeBSD 配置的桌面操作系统,专注于简洁、优雅和可用性。其设计遵循“少即是多”的哲学。它是为“普通人”设计的,旨在让从一个拥有全局菜单栏、使用 Command 键而非 Control 键、并且应用程序封装在 .app 包中的操作系统迁移过来的用户能感到轻松。
helloSystem 源于对现有开源桌面环境 可用性缺陷 的不满。选择 FreeBSD 作为基础是因为它提供了一个一致的基本系统,而不是 缺乏共同平台的分散发行版。
helloSystem 旨在提供一个“开箱即用”的用户体验,在该体验中,非技术用户可以使用系统而无需打开终端、无需配置任何内容,也无需在系统启动时看到黑底白字的滚动文本。采用的技术包括 DNS-SD/Zeroconf(也称为 Bonjour)、IPP Everywhere(也称为 AirPrint)、eSCL(也称为 AirScan)等。
现已提供预发布的可安装 Live ISO 镜像。
在多个领域需要帮助,特别是:
FreeBSD/kernel:允许将系统放入只读磁盘映像,并使用可写覆盖层,例如使用 unionfs
Qt、Python:为 FreeBSD/OpenZFS 功能编写各种易用的前端,例如 Disk Utility.app
测试和修复错误
联系方式:Kirill Ponomarev <krion@FreeBSD.org> 联系方式:Oleg Ginzburg <olevole@olevole.ru>
K8S-bhyve 是一个开源项目,主要集中在以更加灵活和舒适的方式,在 FreeBSD/bhyve 上部署和使用 Kubernetes。我们计划提供分布式的多数据中心环境,或者只是具有原生 PV/PVC 支持的独立集群。
在 2020Q4,我们制作并发布了 k8s-bhyve 镜像,你可以通过 ISO/memstick 进行安装,也可以通过 bsdinstall 进行安装。
联系方式:Puppet 团队 <puppet@FreeBSD.org>
自几个月前的上次状态报告以来,FreeBSD Ports 已新增 Choria(sysutils/choria)编排工具,以及 Puppet 平台 7,包括 Puppet Agent(sysutils/puppet7)、Puppet Server(sysutils/puppetserver7)和 PuppetDB(databases/puppetdb7)。
Puppet 旧版本(5 和 6)仍然保留在 Ports 中,以便平滑过渡,但请注意,Puppet 5 很快就会结束生命周期,并且由于不兼容 FreeBSD 提供的最新生态系统(即与最新版本的 Ruby 不兼容,并且依赖于不再可用的旧 FreeBSD 原语),建议尽快更新到至少 Puppet 6。
依赖 Puppet 的 Port (例如 sysutils/rubygem-bolt)已经更新,增加了选项以选择依赖的 Puppet 版本。目前默认版本为 Puppet 6,但我们计划在几周内将默认版本切换为 Puppet 7,预计在 Puppet 5 结束生命周期时进行切换。