FreeBSD 2017 年 1-3 月状态报告

引言

虽然这些项目中的一些表明它们是“计划 B”或“尝试 III”,但许多仍然坚持其最初的计划,所有项目都取得了令人印象深刻的成果。请享受这份涵盖 2017 年第一季度的精彩报告集。

——Benjamin Kaduk

提交涉及 2017 年 4 月至 6 月期间的报告的截止日期是 2017 年 7 月 7 日。

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

核心团队的主要职能是确保 FreeBSD 项目的长期可持续性。其重要任务之一是确保开发者之间的互动保持和谐,从而使 FreeBSD 项目对新人具有吸引力。

通常,核心团队的这类活动大多数是在私下进行的——轻声劝告,适时调解,偶尔进行严厉的警告。大部分时候,这样的措施已经足够。

不幸的是,在这一季度,我们遇到了一个私下努力未能达到预期效果的情况,最终我们不得不将一名开发者除名。这位开发者是一位非常有才华的程序员,对 Ports 做出了重大贡献。尽管如此,portmgr 认为他具有足够的破坏性和激烈的个性,因此在他们的判断下,为了 FreeBSD 项目的整体利益,最好与他断绝联系,核心团队支持了这一决定。我们对这一不幸结局感到遗憾,但我们依然相信这是为了保护社区的性质所必须采取的步骤。

在更为积极的方面,核心团队一直在研究一个提案,旨在表彰那些对 FreeBSD 项目做出重要贡献的个人,尽管他们目前(或许“还”)不适合成为新的提交者。除了通过提交大量优质错误报告、提供补丁和自愿维护 Port 等方式表彰贡献者之外,这一提案还将考虑那些通过组织 FreeBSD 相关活动或通过社交媒体推广 FreeBSD 来做出贡献的人。核心团队的这一提案很快将正式宣布。

在 1 月,核心秘书进行了一项工作,联系了所有在过去 18 个月内未活动的源代码提交者,并劝说他们,如果近期没有计划恢复在 FreeBSD 上的工作,应该交还提交权限。这本应是一个例行职能——“死神”——旨在确保提交权限的持有者名单与活跃的提交者名单基本同步。这个常规过程在几年前停止了,因此我们需要清理名单,才可以重新启动。最终,这项工作使得大约 20 名开发者归还了他们的提交权限。

在本季度,没有授予新的提交权限。

核心团队还在探讨制作 10.4-RELEASE 的可能性。这目前不在计划之中,但由于自 10.3-RELEASE 以来,stable/10 分支已经进行了一些重要工作,因此一些开发者和 FreeBSD 用户希望看到这一版本的发布。另一方面,这将对安全团队增加额外的支持负担,包括维护那些已被上游宣布为过时的软件版本,特别是 OpenSSL。作为偶数版本的 10.4-RELEASE 将具有“正常”而非“扩展”的生命周期,这意味着它不应该导致 stable/10 分支的支持生命周期延长。

另外,核心团队安排了关闭旧的、基本不活跃的 marketing@FreeBSD.org 邮件列表,并将其剩余的活动转交给 FreeBSD 基金会。

核心团队还要求 clusteradm 关闭对 freefall.freebsd.org 上 finger 服务器的全球访问。许多开发者在 FreeBSD 密码数据库的 GECOS 字段中包含了电话号码等详细信息,这些信息通过 finger 服务器会暴露出来,而如今通常认为公开暴露这些信息是不妥的。finger 仍然可以在 freefall.freebsd.org 内部使用。核心团队建议,GECOS 数据应仅限于你的全名,并已更新标准的“新提交者”邮件模板,以反映这一点。

核心团队正在寻找新的志愿者来帮助管理项目的各个团队。特别是,Postmaster 和安全团队急需新成员。安全团队的新成员招募工作正在进行中,但任何有兴趣加入任何团队的人都鼓励直接向核心团队或相关团队表达意愿。

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

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

我们的工作 100% 依赖你的捐赠。我们以 Intel 和 NetApp 的大额捐赠开启了新的一年,帮助我们在上个季度筹集了超过 40 万美元!我们与新老商业用户进行了讨论,帮助促进合作,解释项目如何运作,并请求财务捐助,以帮助我们保持 FreeBSD 作为他们依赖的创新、安全和可靠的操作系统。请考虑今天就捐款!https://www.FreeBSDfoundation.org/donate/

基金会通过雇佣技术人员来改进 FreeBSD 操作系统,维护和改进关键的内核子系统,添加新特性和功能,并修复问题。我们的贡献还包括赞助独立的项目赠款,如 arm64 移植、blacklistd 访问控制守护进程和 VIMAGE 支持的集成,确保 FreeBSD 继续成为一个可行的解决方案,适用于研究、教育、计算、产品等多个领域。

本季度的项目开发亮点包括:

  • 基金会赞助了 168 次提交,涉及了 src 树(基本系统)开发分支,涉及三名员工和四名赠款接收者/其他开发者。

  • 多个赞助的项目,包括 cfumass 项目,现已提交到 FreeBSD-HEAD,改进了 blacklistd 守护进程和 FreeBSD/arm64 平台。

  • 员工贡献,包括改进工具链和构建工具组件、运行时库、arm64、mips64 以及 32 位和 64 位 x86 架构、发布映像构建工具、打包基础以及 VM 子系统的 bug 修复。

  • 64 位 inode 项目的重大进展,几乎准备提交。

FreeBSD 宣传与教育

我们的大量工作致力于为项目进行宣传。这包括推广他人用 FreeBSD 完成的工作;制作宣传材料,帮助人们了解 FreeBSD,并使他们更容易开始使用 FreeBSD 或为项目做出贡献;以及参加并邀请其他 FreeBSD 贡献者志愿组织 FreeBSD 活动、管理 FreeBSD 展台并进行 FreeBSD 演讲。

在过去一个季度中,我们的宣传与教育工作的亮点包括:

  • 在以下活动中推广 FreeBSD:FOSDEM、SCALE、AsiaBSDcon 和 FOSSASIA

  • 推广 BSDCan、SCALE、USENIX LISA、vBSDcon 和 EuroBSDcon 的参与征集

  • 在社交媒体上推广谷歌编程之夏活动并为人们制作海报,鼓励他们在大学张贴

  • 发布 FreeBSD 新面孔故事:Joseph Kong

  • 与 USENIX 协会和 SNIA 建立了市场营销合作伙伴关系

  • 发布并推广了 2017 年 1 月/2 月的 FreeBSD 期刊:https://www.FreeBSDfoundation.org/journal/

  • 在博客上发布了每月的开发项目更新

  • 在 OSCON 上为 FreeBSD 设置展台并推广可用的折扣

会议和活动

FreeBSD 基金会赞助了全球许多会议、活动和峰会。这些活动可以是 BSD 相关的、开源的,或面向少数群体的技术活动。

我们支持 FreeBSD 相关的活动,旨在提供一个共享知识的平台,促进开发者与商业用户之间的合作,共同开展项目;这一切有助于提供健康的生态系统。我们支持非 FreeBSD 相关的活动,目的是推广并提高人们对 FreeBSD 的认知,增加 FreeBSD 在不同应用中的使用,并招募更多贡献者加入项目。

我们还赞助和/或参加了以下活动:

  • FOSDEM FreeBSD 开发者峰会(赞助)

  • AsiaBSDCon —— 日本东京(赞助)

  • 在加利福尼亚州圣克拉拉组织并举办了 FreeBSD 存储峰会

  • 理事会成员 Philip Paeps 在 FOSSASIA 上做了 FreeBSD 演讲

  • 参加了 FOSSASIA、FOSDEM 和 SCALE

发布工程

基金会为发布工程提供了一名全职员工来领导这项工作。近年来,这一做法提供了及时且可靠的发布版本。本季度的一些亮点包括:

  • 持续为 12-CURRENT、11-STABLE 和 10-STABLE 分支生产每周的开发快照。

  • 发布了 FreeBSD 11.1-RELEASE 的初步发布计划,已在项目网站上公布。

法律/FreeBSD 知识产权

基金会拥有 FreeBSD 的商标,并负责保护这些商标。我们继续审查请求并授予使用商标的许可。

有关我们如何支持 FreeBSD 的更多细节,请查阅我们的第一季度通讯!

联系: René Ladan <portmgr-secretary@FreeBSD.org>

联系: FreeBSD Ports 管理团队 <portmgr@FreeBSD.org>

目前,Port 数量距离 30,000 个还差 500 个。当前的 PR 数量接近 2,400 个,其中 620 个未分配。在过去的一个季度中,共有 167 名提交者提交了 6656 次提交。Port 数量和未分配的 PR 数量在过去一个季度都有所增加。

在过去的季度里,我们迎来了 7 名新提交者:Eugene Grosbein (eugen)、Johannes Dieterich (jmd)、Larry Rosenman (ler)、Mahdi Mokhtari (mmohki)、Matthew Rezny (rezny)、Tobias Kortkamp (tobik) 和 Vladimir Kondratyev (wulf)。dumbbell@ 已经是 src 提交者,并获得了 Ports 的扩展权限。我们还迎回了 krion@ 和 miwi@。我们还暂时保管了 6 位:itetcu@、leeym@、mva@、olivierd@、pgollucci@ 和 sanpei@。

portmgr 的成员没有变化。

antoine@ 负责了 USES=samba,以准备移除已经过时的 Port Samba 3.6并用现代版本替换它们。新的默认版本包括:FreePascal 3.0.2、Ruby 2.3 和 Samba 4.4。创建了一个新的变量 USE_LOCALE,用于将 LANG 和 LC_ALL 环境变量添加到所有构建中。现在,可以通过新的 EXTRA_PATCH_TREE 变量添加树外补丁。对无效的 OPTIONS_SINGLE 选项的错误信息进行了改进。

上个季度的一些重要 Port 更新包括:pkg 1.10.1、linux c6_64、Firefox 52.0.2、Chromium 57.0.2987.110、GCC 4.9.4、Gnome 3.18.0、Xorg 1.18.4、Qt 4.8.7 和 5.7.1、以及 PHP 7.1。

antoine@ 执行了 31 次 exp-runs 测试版本更新和底层更改。

待办事项

  1. 未分配和开放的 PR 数量仍在增长,因此如果你有空闲时间,请关闭其中一些。

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

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

FreeBSD 发布工程团队继续为 12-CURRENT、11-STABLE 和 10-STABLE 分支发布每周的开发快照。

此外,FreeBSD 11.1-RELEASE 时间表已添加到项目网站。请注意,网站上的时间表仍然可能会发生变化。

该项目由 FreeBSD 基金会赞助。

联系: Willem Jan Withagen <wjw@digiware.nl>

Ceph 是个分布式对象存储和文件系统,旨在提供出色的性能、可靠性和可扩展性。

  • 对象存储 Ceph 提供无缝访问对象,可以通过原生语言绑定或 radosgw(一种与 S3 和 Swift 应用程序兼容的 REST 接口)访问。

  • 块存储 Ceph 的 RADOS 块设备(RBD)提供对跨整个存储集群条带化和复制的块设备映像的访问。

  • 文件系统 Ceph 提供 POSIX 兼容的网络文件系统,旨在提供高性能、大数据存储,并最大限度地兼容遗留应用程序。

我开始研究 Ceph,是因为 HAST 解决方案与 CARP 和 ggate 并没有达到我的预期。但我的目标是运行一个由 ZFS 运行的存储节点的 Ceph 存储集群。用户站点将运行 bhyve,使用存储在 Ceph 中的 RBD 磁盘。

为 FreeBSD 编译将构建大多数可用的 Ceph 工具。

自上次报告以来的重要进展:

  • 最重要的变化是提交了一个 Port:net/ceph-devel。然而,它还不包含 ceph-fuse。

  • 预计将定期更新 Port ceph-devel,下一个更新将在四月。

  • ceph-fuse 已经可以工作,允许在 FreeBSD 系统上挂载 CephFS 文件系统并执行正常操作。

  • ceph-disk prepare 和 activate 在 ZFS 上的 FileStore 工作,可以轻松创建 OSD。

  • RBD 实际上是可以构建的,并且可以用来管理 RADOS 块设备。

  • 删除了大多数与 Linux 相关的依赖项——只有 /bin/bash 还在。

要在 FreeBSD 系统上运行,请运行 pkg install net/ceph-devel,或克隆 https://github.com/wjwithagen/ceph,并通过在检出根目录中运行 ./do_freebsd.sh 来手动构建。

尚未包含的部分:

  • KRBD:内核 Rados 块设备已在 Linux 内核中实现,但尚未在 FreeBSD 内核中实现。可能可以使用 ggated 作为模板,因为它执行类似的操作,只不过是在两个磁盘之间。它也有一个用户空间的对应部分,可以促进开发。

  • BlueStore:FreeBSD 和 Linux 有不同的 AIO API,这种不兼容性需要解决。此外,FreeBSD 中讨论了 aio_cancel 在所有设备类型下无法正常工作的问题。

  • CephFS 作为本地文件系统:尽管 ceph-fuse 可以工作,但对于重负载来说,拥有内核实现可能更有优势。Cython 尝试访问 struct dirent 中的内部字段,这导致无法编译。

待办事项

  1. 运行集成测试,看看 FreeBSD 守护进程是否能与 Linux Ceph 平台配合工作。

  2. 编译并测试用户空间 RBD(Rados 块设备)。目前它可以工作,但测试仍然有限。

  3. 调查并查看是否可以开发类似于 ggate 的内核 RBD 设备。

  4. 调查密钥存储,它可以嵌入 Linux 内核,但目前阻止了 Cephfs 和其他部分的构建。首先需要确定它是否真的必要,还是只有 KRBD 需要它。

  5. 调度器信息目前没有使用,因为 Linux 和 FreeBSD 的调度器工作方式不同。但在某个时候,这将需要一些关注(在 src/common/Thread.cc 中)。

  6. 改进 Ceph 堆栈中 FreeBSD 的初始化脚本,既用于测试目的,也用于在生产机器上运行 Ceph。针对 ceph-disk 和 ceph-deploy 进行工作,使其更兼容 FreeBSD 和 ZFS。

  7. 构建测试集群并开始在其上运行一些 teuthology 集成测试。Teuthology 想要构建自己的 libvirt,但这与 FreeBSD 已经拥有的所有软件包不完全兼容。这里有许多细节需要解决。

  8. 设计一个虚拟磁盘实现,可以与 bhyve 一起使用并附加到 RBD 映像。

联系方式:Christian Brueffer <brueffer@FreeBSD.org>

联系方式:Robert Watson <rwatson@FreeBSD.org>

联系方式:TrustedBSD 审计邮件列表 <trustedbsd-audit@TrustedBSD.org>

OpenBSM 是一个 BSD 许可下实现的 Sun 基本安全模块(BSM)API 和文件格式。它是 FreeBSD 和 Mac OS X 中 CAPP 审计实现的用户空间部分。此外,审计日志处理工具也预计能在 Linux 上工作。

在本季度,OpenBSM 增加了对 UUIDs 在 BSM 日志中的实验性支持。一个使用此功能的 DTrace 审计提供者作为 DARPA CADETS 项目的一部分已开发并正在审查中(https://reviews.FreeBSD.org/D10149)。在 OpenBSM GitHub 仓库中,已通过 TravisCI 为 Coverity 静态分析添加了支持。此外,OpenBSM 1.2-alpha5 版本已合并至 FreeBSD HEAD 分支。

该项目部分由 DARPA/AFRL 赞助。

待办事项

  1. 在不同版本的 FreeBSD、Mac OS X 和 Linux 上测试最新版本。特别是希望在 Mac OS X 最新版本上进行测试。

  2. 修复通过 GitHub 和 FreeBSD bug 跟踪器报告的问题。

  3. 实现 GitHub 上 TODO 列表中提到的功能。

联系方式:Ed Schouten <ed@FreeBSD.org>

CloudABI 是一个框架,可以更轻松地开发强沙盒化的应用程序。它是一个编程环境,专门使用 FreeBSD 的 Capsicum 功能。任何与 Capsicum 不兼容的功能都已完全删除,这意味着更容易确定代码如何调整才能在沙盒环境下正确运行。从本质上讲,你只需要修补代码直到它能成功编译。

去年,我们成功地将许多令人兴奋的库移植到了 CloudABI。亮点包括意识到沙盒的版本,如 BoostLevelDB。现在这些库已经可以使用,我们可以将重点转向移植完整的应用程序。

在 2 月下旬,比特币参考实现的主要开发者之一联系了我们,因为他非常希望创建一个更好地保护免受安全漏洞的比特币副本。如果网络/共识代码中的安全漏洞允许攻击者窃取你本地钱包中的币,你是不会想要这样的漏洞的!

由于我认为这是一个很好地展示 CloudABI 强大功能的用例,所以我已将解决比特币开发者报告的任何问题作为首要任务。比特币移植完成后,我们希望提供其二进制包。

该项目由荷兰 Nuxi 赞助。

待办事项

  1. 尽管使比特币能够运行已经非常棒,但不要让这件事分散我们将其他软件移植过来的注意力!你是某个软件的维护者吗?它能从沙盒化中受益吗?确保尝试使用 CloudABI 工具链构建它!

  2. 其中一款已移植到 CloudABI 的软件是 Memcached。你是 Memcached 的用户吗?如果是,欢迎尝试 CloudABI 版本的沙盒化 Memcached!

  3. 目前,CloudABI 可以运行用 C、C++ 和 Python 编写的软件。你希望看到其他编程语言也能在 CloudABI 上工作吗?请提供帮助!

联系方式:Marius Strobl <marius@FreeBSD.org>

在 r315430 中,eMMC 分区支持已添加到 FreeBSD 12 的 mmc(4) 和 mmcsd(4) 中。除了用户数据区(即默认分区)外,eMMC v4.41 及以后的设备还可以提供:

  • 1 个增强型用户数据区分区

  • 2 个启动分区

  • 1 个 RPMB(回放保护内存块)分区

  • 4 个通用分区(可选地具有增强或扩展属性)

除了简单地将 eMMC flash 设备进行子划分,或像某些 Intel NUC 上那样将 UEFI 代码放入启动分区外,分区支持的另一个用例是启用伪 SLC 模式,这是 eMMC 芯片制造商通常与增强型用户数据区和/或通用分区的“增强”属性关联的功能。

为了能够对 eMMC 设备进行分区,r315430 还为 mmcsd(4) 添加了一个与 Linux 兼容的 ioctl(2) 接口。这使得在 FreeBSD 上可以使用 GNU mmc-utils(在 ports 中作为 sysutils/mmc-utils 提供)。除了分区 eMMC 设备外,mmc 工具还可以用来查询 eMMC flash 的寿命估计和预 EOL 信息,以及查询 SD 卡的一些基本信息。

购买者请注意:对 eMMC 设备进行分区是一次性操作。

此外,为了使 eMMC flash 设备更易于使用,r315598 在 mmc(4) 和 sdhci(4) 中添加了对 DDR(双数据速率)总线速度模式的支持,最大支持 52 MHz(DDR52),这将在 FreeBSD 12 中出现。与先前最大支持的高速模式(52 MHz)相比,DDR52 模式将所测试的 eMMC 芯片的性能从约 45 MB/s 提升到约 80 MB/s。

目前,DDR52 模式已启用对 Intel Apollo Lake、Bay Trail 和 Braswell 芯片组中的 eMMC 控制器的支持。但需要注意的是,Apollo Lake 变种的 eMMC 和 SDHCI 控制器偶尔会由于硅缺陷而锁死(这与是否运行 DDR52 模式无关)。对于这个问题,目前唯一可行的解决方法是实现对 sdhci(4) 中 ADMA2 模式的支持(目前,sdhci(4) 只支持受限的 SDMA 模式或根本不支持 DMA)。

然而,r315598 还为使用更快的传输模式与 eMMC 设备和 SD 卡分别进行了基础设施和大量代码更新,即 eMMC 的 HS400ES 和 SD 卡的 UHS-I 模式最高可达 SDR104。

计划将这些更改合并回 FreeBSD 10 和 11。

待办事项

  1. 添加对 eMMC HS200、HS400 和 HS400ES 传输模式的支持。

  2. 添加对 SD 卡 UHS-I 传输模式(SDR12 到 SDR104)的支持。

  3. 使 mmcsd(4) 更加健壮,并正确遵循现有功能的相关规范,例如:计算和处理擦除超时,执行 SEND_STATUS 当 CMD6 被调用并返回 R1B 响应时,处理现有代码未修复的部分,确保代码正确检查并处理返回码等。

联系方式:Christian Brueffer <brueffer@FreeBSD.org> 联系方式:Robert Watson <rwatson@FreeBSD.org> 联系方式:TrustedBSD 宣布邮件列表 <trustedbsd-announce@TrustedBSD.org>

TrustedBSD 项目是一个开源社区,致力于为开源的 FreeBSD 操作系统开发先进的安全功能。该项目始于 2000 年 4 月,开发了对扩展属性、访问控制列表(ACL)、UFS2、OpenPAM、安全事件审计、OpenBSM、灵活的内核访问控制框架、强制访问控制和 GEOM 存储层的支持。此项工作的成果不仅出现在 FreeBSD 中,还出现在 NetBSD、OpenBSD、Linux 以及 Apple 的 Mac OS X 和 iOS 操作系统中。如今,项目仍在继续维护和增强 FreeBSD 中这些成熟的功能。

在本季度,TrustedBSD 项目从 FreeBSD 的 Perforce 服务器迁移到了 GitHub。这一转变得以实现,得益于 Alexis Sarghel,他拥有 GitHub 上的用户账户 trustedbsd ,并慷慨地将该账户转交给了 TrustedBSD 项目。目前,托管 TrustedBSD 网站和 SEBSD 仓库的代码库已经完成迁移。

联系方式:Sepherosa Ziehau <sepherosa@gmail.com>

联系方式:Hongjiang Zhang <honzhan@microsoft.com>

联系方式:Dexuan Cui <decui@microsoft.com>

联系方式:Kylie Liang <kyliel@microsoft.com>

已实现 SR-IOV 支持。目前,我们仅在 Mellanox ConnectX-3 VF 卡上进行测试,尽管存在一些问题(Bug 216493: https://bugs.FreeBSD.org/bugzilla/show_bug.cgi?id=216493)。

UEFI 虚拟机(即 Hyper-V 第 2 代虚拟机)更新:

  1. 修复了加载器问题(Bug 211746)后,UEFI 虚拟机现在可以在禁用安全启动的情况下启动;

  2. 已添加合成键盘驱动程序。目前它仅存在于 HEAD 版本,但计划很快会合并到 stable/10 和 stable/11 版本中;

  3. 修复了 SCSI DVD 检测问题(Bug 218248)。没有修复时,虚拟机会启动失败。

该项目由微软赞助。

联系方式:Jeb Cramer <jeb.j.cramer@intel.com>

联系方式:Eric Joyner <eric.joyner@intel.com>

联系方式:Krzysztof Galazka <krzysztof.galazka@intel.com>

此次驱动更新适用于 Intel ix/ixv 和 ixl/ixlv 网络驱动程序,并包括对几款新硬件发布的支持。

ix/ixv:

  • 增加对基于 Denverton 平台的 X553 SoC 设备的支持

ixl/ixlv:

  • 增加对基于 Lewisburg 芯片组的 X722 10G SoC 设备的支持

  • 增加即将推出的 iWarp 驱动程序的接口,支持 X722 设备

  • 增加对 XXV710 25G 设备的支持

待办事项

  1. ix/ixv 的 iflib 支持目前正在 Phabricator 中审查。它将重新设计以包括 D5213。

  2. ixl/ixlv 的 iflib 支持初步工作正在进行中。

联系方式:Dimitry Chagin <dchagin@FreeBSD.org>

联系方式:Edward Tomasz Napierała <trasz@FreeBSD.org>

联系方式:Mahdi Mokhtari <mmokhi@FreeBSD.org>

在本季度,我们很高兴地宣布 Linux 兼容层实现了两项(仅部分)工作。

我们添加了一个新的占位符标记 UNIMPLEMENTED,用于区分 Linux 内核本身未实现的系统调用和我们目前未实现的系统调用。现在,我们的 linux_dummy.c 文件对于新手来说更加清晰,他们可以快速了解到哪些领域可以开始着手工作。

此外,我们为 Linux 兼容层 添加了对两个新系统调用的支持,分别是 preadv 和 pwritev。

待办事项

  1. 我们计划实现 execveat 系统调用,以便将其添加到本地 FreeBSD 系统调用表中,然后将其移植/封装以便在Linux 兼容层 中使用。

联系方式:Ilya Bakulin <kibab@FreeBSD.org>

该项目的目标是使用 CAM 框架重新实现现有的 MMC/SD 堆栈。这将允许利用经过充分测试的 CAM 锁定模型和调试功能。此外,还可以处理由插入的卡片生成的中断,这是实现 SDIO 接口的前提。SDIO 支持对于与许多开发板上的 WiFi/BT 模块进行通信(例如 Raspberry Pi 3)是必要的。

新堆栈还将具备从用户空间应用程序通过 cam(3) 发送 SD 命令的支持。这将使得在用户空间构建设备驱动程序成为可能,同时也能大大简化调试。

新堆栈能够附加到 SD 卡并将其带到可操作状态,从而可以对卡进行读写操作。

该堆栈已在 Beaglebone Black 和 Wandboard Quad 平台上进行了测试。

目前代码正在为纳入 FreeBSD 源代码树做准备。cam(3) 正在扩展以支持 SDIO 特定功能(读取寄存器、管理中断等)。

待办事项

  1. 将代码集成到 FreeBSD HEAD 版本中,以便进行测试。

  2. 开始为基于 Broadcom 的 WLAN 芯片(见于树莓派 3 和 Wandboard)编写驱动程序。

  3. 开始为基于 Marvell 的 WLAN 芯片(见于 GlobalScale Dreamplug 和一些 Chromebook)编写驱动程序。

联系方式:Rick Macklem <rmacklem@FreeBSD.org>

并行 NFS(pNFS)是 NFSv4 协议的扩展,允许在单一逻辑挂载中对多个文件服务器执行文件访问,数据访问有可能并行发生。使用中的 pNFS“布局”指定了分割方式,元数据操作在主服务器上执行,批量数据操作(读取/写入/设置属性等)通过客户端与数据服务器之间的布局特定方案进行。

我第一次使用 GlusterFS 尝试构建 pNFS 服务器失败了。虽然它能工作,但性能非常差,无法使用。这次被我称为“B 计划”的尝试,仅使用 FreeBSD,配置一个 FreeBSD 服务器处理元数据操作,并配置多个 FreeBSD 服务器提供数据服务。支持 pNFS 文件布局的 NFSv4.1 客户端将能够直接读取和写入数据服务器,从而分散 RPC 负载,并允许超越单个 FreeBSD NFS 服务器的增长。

目前不支持 Flex 文件布局或镜像功能。我希望在接下来的一年左右使用 Flex 文件布局添加镜像支持。条带化也不支持,但目前我没有实现它的计划。

计划 B 现在运行得相当好,预计将在 4 月底之前提供测试。届时我将通过 freebsd-fs@FreeBSD.org 邮件列表宣布如何进行测试。

待办事项

  1. 待可用,将需要其他人的测试。

联系方式:Justin Hibbits <jhibbits@FreeBSD.org>

Book-E 平台现已支持 64 位模式(powerpc64)。它包括一个 63 位地址空间拆分,但页表目录列表使用空洞扩展到完整的地址空间,在地址空间中留有重复的页映射空隙。未来可能会有所改变。

与 AIM powerpc64 移植一样,Book-E 还支持运行 powerpc(32 位)二进制文件,并且已经测试了 32 位 init 和 64 位 shell。

支持多个 SoC 驱动程序,然而 dTSEC 以太网控制器尚未得到支持。正在进行工作以支持它。

包括了 QORIQ64 配置,目标是 Freescale 的 P5 和 T* 系列 SoC。

感谢 Juniper Networks 提供补丁,支持较旧的 FreeBSD 版本,促进了此移植工作,并为 pmap 更改的奇特情况提供了历史背景。

待办事项

  1. 将 dTSEC 驱动程序移植到 64 位。参考驱动程序中有假设操作在 32 位环境中进行。可能会更容易移植 Linux 驱动程序,这样也能为 ARM 支持该以太网控制器。

  2. 利用指针对齐来从页表中挤出更多位;应该可以在每一层至少挤出 3 位。

联系方式:Marcin Wojtas <mw@semihalf.com>

联系方式:Zbigniew Bodek <zbb@semihalf.com>

Marvell Armada38x 平台的支持正在进行最终测试和生产化。重构和清理进展顺利,补丁在 HEAD 上正常工作,准备提交到上游。

已完成的具体任务包括:

  • 平台基准测试和低级优化(内部总线,L1/L2 缓存预取)——已提交

  • 启用 PL310 L2 缓存控制器——目前正在审查中

  • NETA 测试、优化和 PHY 处理重构

  • e6000sw PHY 处理重构和修复

  • 修复并启用性能计数器支持

  • 修复定时器并将看门狗支持提取到单独的驱动程序

  • 加密驱动程序修复——已合并

  • AHCI 控制器支持——已合并

  • 热管理驱动程序——已合并

  • 合并对新板(SolidRun ClearFog 和 DB-88F6285-AP)的附加支持

该项目由 Stormshield 和 Semihalf 赞助。

待办事项

  1. 提交剩余的修复和驱动程序。

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

很久以前,在 FreeBSD 5 时代,曾经有一个 FreeBSD 移植到 s390(32 位)和 s390x(64 位)的初步尝试,在仿真器中偶尔能够启动到 init。

为了重振 s390x/systemz 工作,我开始尝试使用 clang/llvm 3.9 来构建 FreeBSD s390x。目前,使用外部 binutils 已经可以构建 world 和一个 GENERIC 内核框架(但尚未执行任何操作)。

这项初步工作的主要想法是允许逐步添加必要的特定架构代码。搭建好构建框架后,第三方开发者可以简单地输入 make,即可贡献代码,而不需要了解 FreeBSD 构建的具体细节。在进行一些清理并将其更新为更近期的 HEAD 后,我计划将当前的工作推送到公共仓库,以促进协作。

待办事项

  1. 编写一个 wiki 页面,列出基于当前工作和来自 arm64 与 riscv 的经验需要完成的每个架构的特定任务。

  2. 实现用户空间和内核的每个架构的差距。

  3. 寻找方式获得 IBM 的 zPDT 或更好的仿真器,以便于实现、测试和调试。

联系方式:Mahdi Mokhtari <mmokhi@FreeBSD.org>

联系方式:Mark Felder <feld@FreeBSD.org>

本季度,MySQL 的新开发版 MySQL 8.0 已经加入 Ports。它引入了许多新特性,尽管我们不得不对其中一些部分重新打补丁,这些部分由 MySQL 从 MySQL 5.7 合并过来。

我们还将 MySQL 5.6 更新到其最新版本,并关闭了许多与之相关的 PR,主要是关于使用 FreeBSD 提供的库版本而不是捆绑的副本。当然,也有许多安全更新。

我们还可以报告,之前一些用户在使用 MySQL 时遇到的必须指定 ${mysql_optfile} 的问题,现在已经在所有 MySQL 版本(5.6、5.7 和 8.0)中解决。现在,初始化脚本将会搜索所有默认位置,以便兼容多种用于配置文件的位置,只有在所有位置都搜索完毕后,才会报告错误。

待办事项

  1. 测试新版本并报告问题。

联系方式:Jean-Sébastien Pédron <dumbbell@FreeBSD.org> 联系方式:Thomas Zander <riggs@FreeBSD.org>

在 Ports 中,Rust 已更新至 1.16.0,Cargo 更新至 0.17.0,这是截至写作时的最新版本。

lang/rust-nightly 也已更新为 2 月的快照,并且现在在 i386 上启用。虽然它稍微滞后于上游版本,但 Rustup 在 FreeBSD 上运行良好,若你需要尝试 Rust 的任何版本或频道。

已经开始在非 x86 架构上引导 Rust 的工作。提交并接受了为 FreeBSD/aarch64 添加支持的补丁。FreeBSD/sparc64 正在进行中。Port lang/rust-nightly 也正在调整,以便在 FreeBSD/aarch64 上原生编译。这项工作尤为重要,因为 Firefox 很快将要求 Rust。如果你想帮助,请参考上述链接的指南。

编译器 rustc 在编译错误时有时会崩溃。因此,需要做一些工作来提高稳定性。

lang/rust* 和 devel/cargo 之间有一些代码重复。这些 Makefile 需要进行一些清理。可能需要创建一个 USES=rust Makefile 帮助器。

待办事项

  1. 在更多平台上引导 Rust。

  2. 调查编译器崩溃问题。

  3. 创建 USES=rust Makefile 帮助器,简化 Port Rust 和 Cargo 。

  4. 调查如何加快 lang/rust* 的编译速度。

联系方式:Renè Ladan <rene@FreeBSD.org> 联系方式:Remko Lodder <remko@FreeBSD.org>

目前已开始通过 po 系统对 FreeBSD 手册进行荷兰语初步翻译。虽然我们有一个(过时的)版本的手册可通过旧的 XML 文件获取,但我们现在正在尝试通过 PO 文件重新整理内容。

Rene 已经开始翻译两篇文章,并为 FDP-Primer 做了一些字符串翻译,而 Remko 已开始着手手册的翻译。如果你认为可以提供帮助,请给 Rene 和 Remko 发送电子邮件,以便我们开始协调工作。

此外,由于我们已经有来自 XML 文件的翻译集,因此很有兴趣看看是否可以将它们轻松合并到 PO 结构中。如果你对此有任何想法,请尽快与我们联系。

该项目部分由 Snowè B.V. 赞助。

待办事项

  1. 确定如何将当前的 XML 翻译合并到 nl_NL.po 文件中。

  2. 将翻译合并到 .po 文件中。

  3. 将剩余的开放项目更新到 po 文件中。

  4. 从主仓库中删除旧的/过时的翻译文件,并使用 po 和 book.xml 文件生成荷兰语手册及其他文件。

  5. 确定是否也可以通过 PO 系统翻译 htdocs 页面。

最后更新于

这有帮助吗?