FreeBSD 2016 年第四季度状态报告

引言

又一年过去了(另一年已经顺利开始,我们在忙着整理这份报告)。在过去两年里,我作为 monthly@ 团队的一员参与编写这些报告,亲眼见证了每个条目通过我的 emacs/vim。这些报告给了我一个关于 FreeBSD 发展的全貌,而光看提交邮件无法获得这样的视角;我也希望我们的读者能有同样的收获。

本季度继续带来许多坚定项目的进展以及新参与者的加入,还有一些项目在几季度的间歇后重新回归。希望大家阅读愉快,收获知识!

——Benjamin Kaduk

涉及 2017 年 1 月至 3 月期间的提交截止日期为 2017 年 4 月 7 日。

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

FreeBSD 发布工程团队负责为 FreeBSD 的正式项目发布设定和发布发布计划,宣布代码冻结,以及维护相应的分支等任务。

FreeBSD 发布工程团队与 FreeBSD 安全团队协作,最终完成了 FreeBSD 11.0-RELEASE 的发布。FreeBSD 11.0-RELEASE 于 2016 年 10 月 10 日宣布发布,约晚于原定计划四周。

FreeBSD 发布工程团队特别感谢 Colin Percival 和所有 FreeBSD 安全团队成员在确保面向用户的升级路径得到妥善处理和记录方面的额外努力。

该项目由 FreeBSD 基金会赞助。

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

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

Ports 已达 27,000 个 port,PR 数量略微增加,约为 2,250 个。其中 572 个 PR 未分配。上个季度共进行了 6,871 次提交,由 176 名提交者完成。与上个季度相比,打开的 PR 数量和未分配的 PR 数量都有轻微增加。

在上个季度,有两个 commit 权限被保留:jmg 在 19 个月的不活跃后恢复,edwin 按其请求自行退出。我们欢迎了三位新提交者:Nikolai Lifanov(lifanov)、Jason Bacon 和 Mikhail Pchelin(misha)。

在管理方面,adamw 和 feld 被选为新的 portmgr 成员,rene 被晋升为正式成员。feld 已经参与了 ports-secteam。

在基础设施方面,新增了两个 USES(lxqt 和 varnish)。一些默认版本也得到了更新:varnish 4(新)、GCC 从 4.8 升级至 4.9,Perl 从 5.20 升级至 5.24,Python 从 3.4 升级至 3.5。两个主要的 ports 在 12 月 31 日达到了生命周期终点并被移除:Perl 5.18 和 Linux Fedora 10(默认改为 Linux CentOS 6)。由于 FreeBSD 9.3、10.1 和 10.2 同样达到了生命周期终点,支持这些版本的 Ports 也已从树中移除。

一些主要的 port 已更新至最新版本:pkg 升级至 1.9.4,Firefox 升级至 50.1.0,Firefox-esr 升级至 45.6.0,Chromium 升级至 54.0.2840.100,Ruby 升级至 2.1.10 / 2.2.6 / 2.3.3。www/node 升级至 7 版;版本 6 被单独作为 www/node6 提供,支持长期维护。

幕后方面,antoine 进行了 39 次 exp-run,以验证包更新、框架变更以及基本系统的更改。bdrewery 安装了新的包构建器,并为 FreeBSD 11 增加了 mips、mips64 和 armv6 的构建。他还改进了包构建器的负载均衡、监控和自动化。

待办事项

  1. 如果你有一些空闲时间,请挑选一个 PR 进行测试并提交。

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

在 2016 年最后一个季度,核心团队主要关注的是如何保持安全团队的有效性。该团队主要需要更好的项目管理,以改善整体沟通并使其他成员能够专注于处理漏洞的技术方面。

为此,核心团队原则上同意由 FreeBSD 基金会或一些主要使用 FreeBSD 的公司聘请专人来承担这一角色。

核心团队确认,即使推迟了切换到打包基础发布机制的计划,新的支持模型也会在 11.0-RELEASE 发布时生效。关于新支持模型的详细信息,请访问 FreeBSD 网站的 安全页面

核心团队要求移除 Port misc/jive,理由是它没有其他功能,只是将文本变成令人反感的种族主义恶搞(译者注:Jive 是一款用于将普通英语文本转换成一种模仿美国黑人俚语(Jive)风格的工具。)。这一提议引起了争议,许多人认为这是从审查整个 Ports 的第一步。但核心团队的意图并非如此。核心团队的目标是帮助确保 FreeBSD 项目的将来,使其对所有贡献者都欢迎,不论种族、性别、性取向及其他不当歧视依据。虽然 misc/jive 可能曾被视为无害的娱乐,但今天它出现在 Ports 中,暗示的认可与 FreeBSD 项目的目标相悖。

市场营销团队和相关的 marketing@FreeBSD.org 邮件列表已经解散,原因是缺乏活动。发往 marketing@FreeBSD.org 的邮件将转发到 FreeBSD 基金会的市场营销团队。

核心成员 Allan Jude,已经担任 clusteradm 联系人,成为 clusteradm 的正式成员。

授权紧急修正 11.0 发布说明,因为它给出了误导性的信息,暗示才刚刚添加 802.11n 无线支持,而这一误解在媒体中被重复报道。实际上,FreeBSD 多年来就已经支持 802.11n,公告应该说支持已被添加到许多额外的设备驱动程序中。

关于改进 Unicode 支持的提案仍在讨论中。FreeBSD 已符合标准,但该提案建议转向 __STDC_ISO_10646 实现,类似于 Linux glibc 当前使用的方式。对此新方法的技术优缺点意见不一。

还有一些常见的关于许可证和其他法律事务的询问:

  • 关于为基本系统创建 GPLv3 覆盖层的计划,在启用外部工具链构建世界系统进展快于预期的情况下被搁置。

  • 网站上的商标页面已更新,显示当前商标的所有者及其批准的形式。

  • 在缺少工具提取和总结所有相关信息的情况下,BSD 许可证中的要求“以二进制形式分发的重分发必须在文档和/或其他随发行版提供的材料中重现上述版权声明、条件列表以及以下免责声明”通过提供包含嵌入版权声明的系统源代码的 tarball 来履行。

  • 欧盟法院的“被遗忘权”仅适用于搜索引擎,FreeBSD 项目并不属于其中,因此无需采取任何行动。

  • 核心团队密切关注 LLVM 项目内关于许可证变更的讨论,如果该变更实施,可能需要审计整个 Ports,发现所有包含与 libc++ 链接的二进制文件的软件包,并确保它们的许可证与 LLVM 兼容。然而,迹象表明 LLVM 项目不会采纳此类变更。

  • 固件许可证中的“开源例外”条款意味着为 Nvidia Jetson TK1 XHCI 设备提交“二进制 blob”驱动是可以接受的。

在本季度,有四位新的 commit 权限被授予。请欢迎 Dexuan Cui、David Bright、Konrad Witaszczyk 和 Piotr Stefaniak。我们遗憾地看到 Edwin Lansing 放弃了他的 commit 权限,并退出了 portmgr。

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

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

以下是我们上个季度帮助 FreeBSD 的一些亮点:

筹款工作

我们的工作完全由你的捐款赞助。2016 年,我们共筹集了 1,527,540 美元,来自 1471 位捐赠者!感谢所有捐款的人,帮助我们在 2017 年继续支持全球 FreeBSD 项目和社区的工作!你可以通过以下链接为我们的 2017 年筹款活动捐款:https://www.FreeBSDfoundation.org/donate/

改进操作系统

基金会通过聘请技术人员来维护和改进关键内核子系统、添加新功能并修复问题,从而提升 FreeBSD 操作系统。这还包括赞助一些独立的项目,如 arm64 移植、blacklistd 访问控制守护进程和 VIMAGE 支持的集成,确保 FreeBSD 继续作为研究、教育、计算和产品等领域的可行解决方案。

去年支持的大型项目包括:

  • 移植 arm64

  • 集成 VIMAGE

  • 工具链工作

  • blacklistd 访问控制守护进程

基金会团队在 11 月的董事会会议期间,制定了 2017-2018 年的技术发展路线图。

员工和董事会成员继续每两周举行一次会议,促进个人在不同技术领域的协作。

你可以通过阅读 Ed Maste、Konstatin Belousov 和 Edward Napierala 的个人更新,了解我们提供的更多支持。

发布工程

基金会提供了一名全职员工来领导发布工程工作。过去几年,这为及时和可靠的发布提供了保障。

上个季度,我们的全职员工与 FreeBSD 发布工程团队和安全团队合作,完成了 11.0-RELEASE 的最终工作。他还为 12-CURRENT 快照构建添加了 powerpcspe 架构的支持,并继续进行 pkg(8) 基本系统打包工作。他还继续在本季度内生产 10-STABLE、11-STABLE 和 12-CURRENT 开发快照构建。

你可以通过阅读发布工程团队的状态更新,了解我们为其提供的更多支持。

支持 FreeBSD 基础设施

基金会提供硬件和支持,以改善 FreeBSD 基础设施。今年,我们购买了以下硬件,以改善构建、持续集成和平台流程:

  • 一台服务器,将持续集成过程中的构建时间从一个小时减少到 20 分钟。你可以在这里了解更多信息:https://ci.FreeBSD.org/

  • 两台 ThunderX 服务器,用于 FreeBSD/arm64 架构的本地包构建。

  • 两台服务器,用于改进发布工程构建。

  • 四台服务器,用于改进包构建。

  • 四台作为构建从属机的服务器,以增加持续集成过程中的构建数量。

FreeBSD 宣传与教育

我们的工作有很大一部分致力于为 FreeBSD 项目进行宣传。这包括推广他人基于 FreeBSD 所做的工作;制作宣传材料,向人们介绍 FreeBSD,帮助他们更轻松地开始使用 FreeBSD 或贡献于项目;以及参加并鼓励其他 FreeBSD 贡献者志愿组织 FreeBSD 活动、在 FreeBSD 展台上值班、并进行 FreeBSD 演讲。

以下是我们去年在宣传和教育方面的一些工作亮点:

  • 参加/赞助了全球 24 个活动

  • 向 15 位开发者提供了差旅赞助

  • 创建并更新了营销宣传资料,包括:

    • 更新版 FreeBSD 10 宣传册

    • 新版 TeachBSD 明信片,用于宣传该项目 *谷歌编程之夏宣传单

    • FreeBSD 11 宣传册

    • 更新版招聘宣传单

    • 更新版参与方式宣传单

    • FreeBSD 作为研究平台宣传单

  • 创建了一系列 FreeBSD 使用指南:

    • 使用 VirtualBox 安装 FreeBSD(Mac/Windows)

    • 在 FreeBSD 上安装桌面环境

    • 为树莓派安装 FreeBSD

    • 安装 PC-BSD 作为主操作系统

    • FreeBSD 设置技巧

  • 获取了新的推荐信:

    • Accelerations Systems

    • NeoSmart Technologies

    • Chelsio Communications

    • Crescent River Port Pilots' Association

    • IXC

    • Stormshield

  • 更新了 FreeBSD 项目和基金会的品牌形象:

    • 新版 FreeBSD 基金会网站和 logo

    • 更新版品牌资产页面,包含更多关于 FreeBSD 项目和 FreeBSD 基金会 logo 的信息。

我们已在 https://www.FreeBSDfoundation.org/journal/ 发布了 9 月/10 月和 11 月/12 月期的期刊。

此外,我们还发布了每月通讯,突出了支持 FreeBSD 所做的工作,介绍即将举行的活动,并提供其他信息,帮助你了解我们如何支持 FreeBSD 项目和社区:https://www.FreeBSDfoundation.org/news-and-events/newsletter/

会议与活动

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

我们支持专注于 FreeBSD 的活动,旨在为知识共享提供场所,促进项目合作,并推动开发者与商业用户之间的合作。所有这些有助于提供一个健康的生态系统。我们支持非 FreeBSD 活动,目的是推广并提高 FreeBSD 的知名度,增加 FreeBSD 在不同应用中的使用,并吸引更多的贡献者参与项目。

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

  • Ohio LinuxFest,10 月,俄亥俄州哥伦布市

  • Grace Hopper 2016,10 月,德克萨斯州休斯顿市

  • 中国开源年会 2016 10 月,中国北京

  • Bay Area FreeBSD Vendor and Developer's Summit 和 MeetBSD 2016,11 月,加利福尼亚州伯克利市

  • USENIX LISA '16,12 月,马萨诸塞州波士顿市

  • 开源中国 OSC 源创会年终盛典 2016 12 月,中国北京

你可以在此查看我们支持的 2016 年所有会议的完整列表:https://www.FreeBSDfoundation.org/blog/recap-of-2016-advocacy-efforts/

法律/FreeBSD 知识产权

基金会持有 FreeBSD 商标,保护这些商标是我们的责任。我们继续审查请求并授权使用商标。我们还为核心团队提供法律支持,以调查某些专利的状态。

FreeBSD 社区参与

我们的市场营销总监 Anne Dickison 一直在监督项目行为规范的重写工作,旨在帮助打造一个安全、包容和欢迎的社区。更新后的行为规范和报告指南正在进行最终审核,预计将在 2017 年第一季度交给核心团队批准。

请访问 http://www.FreeBSDfoundation.org 了解我们如何支持 FreeBSD,以及我们如何帮助你!

FreeBSD 上的 Ceph

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

Ceph 是一款分布式对象存储和文件系统,旨在提供卓越的性能、可靠性和可扩展性:

  • 对象存储 Ceph 提供通过原生语言绑定或 radosgw(一个兼容 S3 和 Swift 的 REST 接口)无缝访问对象。

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

  • 文件系统 Ceph 提供一个符合 POSIX 标准的网络文件系统,旨在提供高性能、大容量存储,并与传统应用程序最大兼容。

我开始研究 Ceph,是因为使用 HAST 解决方案结合 CARP 和 ggate 并未完全满足我的需求。我计划运行一个 Ceph 存储集群,其中存储节点使用 ZFS,用户站点将在 RBD 磁盘上运行 bhyve,这些磁盘存储在 Ceph 中。

FreeBSD 上的 Ceph 构建包括 Ceph 提供的大部分工具。请注意,由于 FreeBSD 目前没有 RBD,依赖于 RBD 的功能无法使用。

自上次报告以来,最显著的进展如下:

  • RBD 现在可以构建,并可用于管理 RADOS 块设备(RADOS BLOCK DEVICE)。

  • 当前选择的工具所有测试都已完成,尽管所需的(小的)补丁尚未合并到主干。

  • Ceph 现在只支持通过 CMake 构建。

  • 线程/轮询代码已为简单的套接字代码重写,现在使用自管道代替使用一个奇怪的 Linux shutdown() 信号特性。

  • EventKqueue 代码被修改,以解决“特性”,即启动线程会销毁 kqueue 句柄。此代码刚刚完成,因此尚未提交到主存储库。

  • 我们调查了 FreeBSD 和 Linux 在 SO_REUSEADDR 和 SO_REUSEPORT 方面的差异。幸运的是,这些代码仅在测试期间使用,因此禁用这些特性仅会延迟测试进展。

  • 一个 jenkins 实例正在定期测试 ceph/ceph/master 和 wjwithagen/ceph/wip.FreeBSD,进行定期的可构建性和测试验证:http://cephdev.digiware.nl:8180/jenkins/

构建先决条件

Ceph 的编译和构建已在 12-CURRENT 上通过 clang 3.9.0 进行了测试,但考虑到使用 clang 3.7.0 构建 11-RELEASE 也应该可行,预计同样可以正常工作。有趣的是,当 12-CURRENT 使用 clang 3.8.0 时,效果不如 3.7.0 或 3.9.0 好。10-STABLE 中的 clang 3.4 不具备编译所需的能力。

以下设置可以在 FreeBSD 上启动 Ceph:

  1. 安装 bash 并将其链接到 /bin。

  2. 不再需要向 /usr/include/errno.h 中添加 ENODATA 的定义。

  3. 克隆 GitHub 仓库(http://github.com/wjwithagen/ceph.git)并检出 wip.FreeBSD 分支。

  4. 运行 ./do_FreeBSD.sh 开始构建。

不再使用旧的通过 automake 构建的方法;详情请参阅 README.FreeBSD。

尚未包含的部分:

  • KRBD:内核 Rados 块设备(KRBD)在 Linux 内核中实现,但在 FreeBSD 内核中尚未实现。也许可以考虑使用 ggated 作为模板,因为它做的事情与 KRBD 类似,只是在两个磁盘之间进行。它还有一个用户空间的对应部分,可以简化开发工作。

  • BlueStore:FreeBSD 和 Linux 有不同的 AIO API,需要解决这种不兼容问题。此外,FreeBSD 中存在关于 aio_cancel 无法正常工作的问题,涉及某些设备类型。

  • CephFS:Cython 尝试访问 struct dirent 中的一个内部字段,导致编译失败。

  • 用于验证上述功能正确性的测试也被排除在测试集之外。

待办事项

  1. 运行集成测试,查看 FreeBSD 守护进程是否能在 Linux Ceph 平台上正常工作。

  2. 编译并测试用户空间的 RBD(Rados 块设备)。目前它是可用的,但测试范围有限。

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

  4. 调查密钥存储(keystore),它可以在 Linux 内核中嵌入,目前它阻止了 CephFS 和一些其他组件的构建。首先需要确认它是否真的需要,或者只有 KRBD 需要它。

  5. 调度器信息目前未使用,因为 FreeBSD 和 Linux 的调度器工作方式有所不同。但在某个时间点,这将需要关注 src/common/Thread.cc 中的相关部分。

  6. 将 FreeBSD 的 /etc/rc.d 初始化脚本集成到 Ceph 堆栈中。这有助于测试,也能在生产机器上运行 Ceph。

  7. 构建一个测试集群,并开始在其上运行一些 teuthology 集成测试。

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

OpenBSM

联系人: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 上工作。

本季度开发活动有所增加,得益于 DARPA CADETS 项目,发布了 OpenBSM 1.2 alpha 5 版本。本次发布的更新包括:支持指定内核的最大审计队列长度、为支持 Capsicum 的 FreeBSD 和其他系统提供审计减小(auditreduce(1))和审计打印(praudit(1))的沙箱支持,以及为更多 FreeBSD 系统调用添加事件标识符。完整的更改列表可在 GitHub 上的 NEWS 文件中查看。此新版本将很快合并到 FreeBSD 的主干(HEAD)和支持的稳定(STABLE)分支中。

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

待办事项

  1. 在不同版本的 FreeBSD、Mac OS X 和 Linux 上测试新发布的版本。特别是,如果能在最新版本的 Mac OS X 上进行测试,将不胜感激。

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

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

Prometheus 的 Sysctl Exporter

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

Prometheus 是一款开源监控系统,最初由 SoundCloud 在 2012 年构建。自 2016 年以来,该项目已成为 Cloud Native Computing Foundation 的一部分,与 Kubernetes 等其他项目一起。

Prometheus 通过定期发送 HTTP GET 请求来抓取其目标。目标响应时会发送包含度量和样本值的键值对。Prometheus 有一个查询语言 PromQL,可用于聚合样本值并指定告警条件。像 Grafana 这样的工具可以用来创建基于这些查询的精美仪表板。

Prometheus 项目提供了一个名为 node_exporter 的工具,用于收集基本的系统度量,并通过 HTTP 服务这些数据。该工具相对复杂,因为它需要从许多不同的来源提取度量。在 Linux 上,/proc 中的文件没有统一格式,这意味着每个内核框架都需要编写自定义收集器。

在 FreeBSD 上,情况要好得多,因为通过 sysctl 导出的数据已经以结构化的方式存在,可以轻松转换为 Prometheus 的度量格式。因此,本项目的目标是提供一个通用的 sysctl 导出器,涵盖整个 sysctl 树。这不仅可以避免不必要的膨胀和间接性,还可以使内核开发人员的工作变得更加轻松。通过 Prometheus,内核开发人员可以轻松地通过(暂时)向内核添加计数器来绘制事件发生的时间图。

sysctl exporter 的初始版本已在 12 月被集成到 FreeBSD 基本系统中。它可以通过在 inetd.conf 中取消注释示例来运行。不幸的是,由于它依赖于对 sysctl(9) 的 KBI 破坏性更改,因此无法将此导出器合并回 FreeBSD 10.x/11.x。

待办事项

  1. 你是否正在使用 Prometheus,或者有兴趣使用它?一定要尝试 Prometheus 和这个 sysctl 导出器!

  2. 如果我们创建一套有用的告警规则并将其放入 /usr/share/examples 中,那会很好。例如,如何使用这个导出器来监控基于 GEOM 的 RAID 数组的状态?这样的信息是否通过 sysctl 导出?

  3. Prometheus 使用了一种非常巧妙的格式来导出直方图。直方图对于表示完成某些事件所需的时间(例如,磁盘操作)非常有用。是否可以将直方图作为 sysctl 的原生数据类型添加?如果可以,是否有可能在不获取任何内核锁的情况下实现它们?

FreeBSD 上的图形堆栈

联系人:FreeBSD 图形团队 <FreeBSD-x11@FreeBSD.org> 联系人:Matthew Macy <mmacy@nextbsd.org>

在圣诞节和新年期间,FreeBSD 图形支持取得了良好的进展,通过将 Linux 4.9 的 DRM (用于 i915 和 amdgpu) 导入到 GitHub 仓库的 drm-next 分支中。amdgpu KMS 驱动程序已经有了一定的可用性,虽然仍存在一些主要已知问题。该驱动程序现在支持从 Southern Islands 到 Polaris 的显卡。4.9 更新还似乎修复了 i915 在去年夏季 4.8 合并中引入的回归问题。drm-next 分支现在支持 Intel 集成显卡,直到 Kaby Lake CPU。为了在 CURRENT 上实现开箱即用的支持,大多数分支本地的虚拟内存(VM)更改已被撤销,并且图形故障处理程序已转换为使用 pg_populate。这个新接口成为了导致 i915 崩溃和在集成显卡上 amdgpu 严重伪影的几个回归问题的源头。Mark Johnston (markj@) 自愿分析这些问题,请大家支持并鼓励 Mark,帮助将该项目推进到完成阶段。

xserver-mesa-next-udev 分支已为 ports 开发仓库创建,并包含 Mesa 13.0 以及针对较新 AMD 显卡的修复。该分支使用了 libudev-devd shim 的一个 Fork,并将 Mesa 更加接近 Linux 上游。我计划继续更新 drm 和 amdgpu(用于我的桌面,并可能长期用于 GPGPU 计算),同时与 Mark 一起解决 i915 中存在的现有错误(假设批准了两位新的维护者)。然而,Linux i915 的开发者似乎在积极探索可能的实现方式和使用 Linux 内部 API,使得追踪上游变得极为耗时。我正在帮助某人学习如何将 Linux 发布版本中的部分更改移植到 FreeBSD,希望他能接管 drm-next i915 的维护工作。假设上述问题得到解决,计划为标准的 amd64 CURRENT 安装创建 LinuxKPI、DRM 和 KMS 驱动程序的移植版本。结合相关图形端口的升级,这将为新的 AMD 和 Intel 显卡提供实验性的支持。

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

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

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

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

该项目为在 Hyper-V 虚拟化环境中运行的 FreeBSD 系统提供了原生虚拟化接口,改进了传统模拟设备的性能。

已实现每个环的轮询、多数据包 RNDIS 消息和系统 RSS 集成,进一步优化了 Hyper-V 网络驱动程序的吞吐量和延迟。

实现了虚拟机实时备份(目前仅支持 UFS),该功能依赖的 VSS(卷影复制服务)已实现。

实现了 PCIe 直通,且用于实现 NIC SR-IOV 的补丁正在 Phabricator 上审核。

已实现 vDSO 支持,以加速 gettimeofday(2) 操作。

Azure 上的 FreeBSD 11.0 镜像(https://azure.microsoft.com/en-us/marketplace/partners/microsoft/FreeBSD110/)现已可用,此外还有现有的 10.3 镜像。

我们修复了 SCSI 磁盘有时无法连接的问题,解决了 bug 215171([Hyper-V] 无法附加来自 Win2008R2/Win2012/Win2012R2 LUN 8 的 SCSI 磁盘)。

此项目由微软提供赞助。

联系人:Oleksandr Tymoshenko <gonzo@FreeBSD.org>

MinnowBoard 是一款基于 Atom 的 x86 主板(Intel E38xx 系列 SoC),采用便于开发者使用的形态:提供了便捷的引脚访问,可以使用标准总线(GPIO、SPI 或 I2C)连接外设。这些总线在 ARM/MIPS 世界中比在 x86 中更为常见,因此虽然 FreeBSD 可以顺利启动,但 MinnowBoard 上缺乏对这些总线的支持。

从 r310645 开始,HEAD 支持通过 ig4(4)、bytgpio(4) 和 intelspi 驱动程序支持这三种总线。ig4(4) 和 bytgpio(4) 的更改已回溯移植到 11-STABLE;intelspi 将在几周内合并到主分支。

联系人:Ganbold Tsagaankhuu <ganbold@FreeBSD.org>

已提交了在 FreeBSD 中支持 Allwinner 消费者红外接口的必要更改。目前支持接收(RX)端,驱动程序使用 evdev 框架。该功能已在使用 dfrobot 简单红外遥控器的 Cubieboard2(A20 SoC)上进行了测试。

联系人:Andrew Turner <andrew@FreeBSD.org>

联系人:Oleksandr Tymoshenko <gonzo@FreeBSD.org>

已添加支持从内核访问浮点寄存器的功能。此功能使用与 i386 和 amd64 相同的 KPI。这将允许处理可能修改浮点状态的场景,例如调用 UEFI 时。

已向内核添加对可选的 ARMv8 AES 指令的支持。此功能利用了存储和恢复浮点状态的能力。测试显示,ThunderX 硬件上的 AES 性能显著提高。

Cortex 字符串的 memcpy 和 memmove 函数已导入到内核。这些是这两个常用函数的优化实现。

FreeBSD 现在能够在 SoftIron Overdrive 3000 上使用 ACPI 启动。为此所需的更改已提交至 Phabricator 进行审核。这些更改包括启用 SMP 的启动,以及支持所有当前支持的设备。

已提交对 Raspberry Pi 3 的支持。大部分设备已正常工作,唯独 WiFi 和蓝牙不支持,因为它们通过尚未支持的 SDIO 总线连接。

该项目由 FreeBSD 基金会和 ABT Systems Ltd. 提供赞助。

联系人:Colin Percival <cperciva@FreeBSD.org>

本报告涉及了自上次 FreeBSD/EC2 状态报告(2015Q1)以来的工作进展。

FreeBSD/EC2 现在已成为常规 FreeBSD 版本构建的一部分,快照和版本会自动上传并复制到所有可用区域。由于法律限制,目前不包括 GovCloud 或中国(北京)地区;任何希望在这些地区使用 FreeBSD 的用户,鼓励联系作者。

AWS Marketplace 报告称,大约有 800 名用户在运行大约 2000 个 FreeBSD EC2 实例。这并未计算通过 EC2 API 和控制台直接启动的 EC2 实例数量,实际使用量可能更大,但至少提供了一个使用量的下限。

FreeBSD 11.0-RELEASE 支持 EC2 C3、C4、R3、I2、D2 和 M4(不包括 m4.16xlarge)实例的“增强网络”功能。这提供了比旧版 EC2 实例和旧版本 FreeBSD 上的虚拟网络更高的网络性能。

FreeBSD 11.0-RELEASE 及之后版本还使用间接段磁盘 I/O,在保持相同或更低延迟的情况下,提供大约 20% 更高的吞吐量,并支持 128-vCPU 的 x1.32xlarge 实例类型。

FreeBSD 现在支持 Amazon 简单系统管理服务(“运行命令”)。

待办事项

  1. 完成对 FreeBSD/EC2 版本所用帐户的待定重组。

  2. 通过 P2、R4、X1 和 m4.16xlarge 实例中新的弹性网络适配器(ENA)支持“第二代增强网络”。

  3. 提供通过简单系统管理服务改进功能的工具:列出已安装的软件包,检查更新,添加/删除用户,[你最喜欢的系统管理员任务在这里]。

  4. 为 EC2 的 IPv6 网络支持 FreeBSD/EC2 默认配置的支持。

  5. 继续进行 FreeBSD 的 NFS 客户端与 Amazon 弹性文件系统(NFS-as-a-service)之间的互操作性测试。

联系人:Tim Kientzle <kientzle@FreeBSD.org> 联系人:Martin Matuska <mm@FreeBSD.org>

Libarchive 是一款 BSD 许可证的归档和压缩库,最初作为 FreeBSD 的一部分开发。它支持多种输入和输出格式,并包括三个命令行工具:bsdcat、bsdcpio 和 bsdtar。FreeBSD 的 tar 和 cpio 工具直接来自 Libarchive,许多其他重要工具,如 ar、unzip 和 pkg 包管理器,也使用了 libarchive 的功能。

2016 年,Libarchive 的开发集中在修复 bug 和代码清理上,包括修复几个关键的安全问题。已引入与 Travis CI 和 Jenkins 的自动化测试,且 libarchive 已添加到 Google OSS-Fuzz 项目中。模糊测试帮助发现了许多隐藏问题,如缓冲区溢出和内存泄漏。

在过去几个月中,NFSv4 ACL 支持已完成并合并到 FreeBSD-CURRENT,支持 pax 和受限 pax(bsdtar 的默认格式)格式。现在可以将 NFSv4 ACL 条目存储到 tar 归档中并恢复。

待办事项

  1. 在不同平台和版本上进行更广泛的 CI 测试。目前,仅对 11.0-RELEASE-amd64 进行通过 Jenkins 自动化作业的测试。

  2. 由于每次提交到 libarchive 可能会影响 FreeBSD ports 的构建过程,因此触发(半)自动化的 exp-run 测试以检查 Ports 的能力将非常有用。

联系人:Baptiste Daroussin <bapt@FreeBSD.org> 联系人:Ed Maste <emaste@FreeBSD.org>

可重复构建是一组软件开发实践,旨在从可读的源代码到计算机使用的二进制代码创建一个可验证的路径。如果给定相同的源代码、构建环境和构建指令,任何方都可以重现完全相同的所有指定工件的位对位副本,则该构建是可重复的。

Baptiste Daroussin 和 Ed Maste 参加了去年十二月在柏林举办的第二届可重复构建峰会。我们讨论了操作系统供应商(包括其他 BSD 和 Linux 发行版)共同关心的问题。

峰会后,已对 FreeBSD 基本系统进行了更改,以解决导致不可重复构建的源问题。目前,尽管仍需要一些非默认设置,但可以完全可重复地构建 FreeBSD 基本系统(包括内核和用户空间)。

大约 80% 的 Ports 能够实现可重复构建,部分补丁仍在进行中。现在基本系统已可以可重复构建,重点将转向 Ports 的构建。

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

待办事项

  1. 将 FreeBSD ports 构建集成到 reproducible-builds.org 持续集成基础设施中。

  2. 将可重复构建补丁集成到 Ports 中。

  3. 调查个别 ports 中的不可重复构建源。

联系人:John Baldwin <jhb@FreeBSD.org> 联系人:Luca Pizzamiglio <luca.pizzamiglio@gmail.com>

devel/gdb port 已更新至 GDB 7.12。

7.12 包括与跟踪 vfork() 相关的额外修复。这些修复中的一些依赖于对内核中 ptrace() 的更改,以报告当 vfork() 的父进程恢复时的新 ptrace 停止。

已提交支持 FreeBSD/mips 用户空间二进制文件的补丁。这些补丁以及支持调试 FreeBSD/mips 内核的补丁,应该很快会被添加到 port 中。

待办事项

  1. 查明为什么 powerpc kgdb 目标无法展开堆栈超出初始帧。

  2. 为更多平台(arm、aarch64)添加对上游 gdb 的支持,包括用户空间和 kgdb。

  3. 为调试 powerpc 向量寄存器添加支持。

  4. 添加对 $_siginfo 的支持。

  5. 实现 info proc 命令。

  6. 实现 info os 命令。

  7. 调试与 kill 命令相关的 gdb 卡顿问题。

联系人:Rafael Espíndola <rafael.espindola@gmail.com> 联系人:Ed Maste <emaste@FreeBSD.org>

LLD 是 LLVM 项目家族中的链接器。它是一个高性能链接器,支持 ELF、COFF 和 Mach-O 对象格式。其目标是与每种文件格式常用的链接器兼容。对于 ELF 格式,这是 GNU 二进制文件描述符(BFD)ld 和 GNU gold。然而,LLD 的作者并不受制于严格的兼容性要求,尤其是在可能影响性能或期望功能的地方。

在过去的一个季度中,LLD 开发者取得了显著进展。通过对 LLD 和 FreeBSD 的更改,我们达到了一个重要的里程碑:现在可以使用 LLD 链接整个 FreeBSD/amd64 基本系统(包括内核和用户空间)。

现在基本系统已经可以使用 LLD 进行链接,我们开始调查使用 LLD 链接 Ports 中的应用程序。在这个过程中,我们发现了 LLD 和一些 FreeBSD ports 中的局限性或 bug。通过几个正在进行中的补丁,我们可以使用 LLD 在 amd64 上链接约 95% 的 Ports。

该项目由 FreeBSD 基金会赞助。

待办事项

  1. 修复 libtool 以检测 LLD,并传递与 GNU ld 和 gold 相同的命令行参数。

  2. 调查剩余的 amd64 ports 构建失败问题。

  3. 调查并改善 LLD 在 arm64、i386、arm 和其他非 amd64 架构上的表现。

  4. 进行广泛的测试。

联系人:Gerald Pfeifer <gerald@FreeBSD.org> 联系人:Andreas Tobler <andreast@FreeBSD.org> 联系人:Antoine Brodin <antoine@FreeBSD.org>

期待已久的 GCC 4.9 更新已作为 Ports 中默认的 GCC 版本(lang/gcc port,Makefile 中的 USE_GCC=yes)发布,取代了 GCC 4.8。这带来了许多改进;详情请参见 https://gcc.gnu.org/gcc-4.9/changes.html

lang/gcc49 已迁移到 GCC 4.9.4 发布版本,标志着 GCC 4.9 分支和发布系列的结束。

(是的,这意味着我们应该尽快为 lang/gcc 实现下一个版本的更新。此更新本身是直接的,但任何在处理破损 ports 时提供的帮助都将非常有用——如果你愿意帮忙,请告诉我们!)

lang/gcc6 已更新至 GCC 6.2 和 GCC 6.3,带来了大量修复,现在应该适合生产使用。

待办事项

  1. 将 lang/gcc(因此包括 USE_GCC=yes)更新至 GCC 5。

  2. 为 AArch64 提供支持。

联系人:Olivier Duchateau <olivierd@FreeBSD.org> 联系人:Jesper Schmitz Mouridsen <jesper@schmitz.computer>

LXQt 是 LXDE(轻量级桌面环境)的 Qt 移植版,也是其即将发布的版本。它是 LXDE-Qt 和 Razor-qt 项目合并的产物。

移植工作仍然处于进行中:LXQt 需要 Plasma 5 的一些组件,这是 KDE 的新主要工作环境。

我们已导入了一些核心组件(需要更新至 x11/qterminal 0.7.0):

  • devel/lxqt-build-tools

  • devel/liblxqt

  • devel/qtxdg

  • x11/libfm-qt

独立应用程序:

  • graphics/lximage-qt

  • x11-fm/pcmanfm-qt

我们还更新了以下内容:

待办事项

  1. 改进 sysutils/lxqt-admin 中的支持(特别是日期和时间设置)。

联系人:Mono on FreeBSD 团队 <mono@FreeBSD.org>

在本季度中,Mono 项目中的许多 ports 已被更新:

  • Mono: 4.6.2.7

  • MonoDevelop: 6.1.1.15, 6.1.2.44

  • FSharp: 4.0.1.20

已扩展 USE=mono 以便更容易使用 Nuget 包。此扩展已被 FSharp、MonoDevelop 和 OpenRA 采用。

已开始移植微软开源的 .NET Core。感谢另一个团队的工作,coreclr 和 corefx 的原生组件已支持 FreeBSD,但仍需要进一步的工作以引导构建过程并编译托管代码。

待办事项

  1. 移植 .NET Core。

  2. 测试 Mono 补丁。

联系人:Gerald Pfeifer <gerald@FreeBSD.org> 联系人:David Naylor <dbn@FreeBSD.org>

Wine 的稳定版本(即 emulators/wine)在过去的半年中发布了三个维护版本,现已默认启用 Xinerama 支持(适用于多屏显示)和 GNUTLS(例如 Evernote 或魔兽世界需要的支持)。

开发版本(即 emulators/wine-devel)已稳步进展,并达到了 Wine 2.0 的 RC 阶段。我们期待着很快发布新版本,结合了年度活跃开发的进展与稳定的发布特性。

待办事项

  1. 移植 WoW64。

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

Xfce 是一个适用于 Unix 和类 Unix 平台(如 FreeBSD)的自由软件桌面环境。它旨在快速且轻量,同时具有良好的视觉效果和易用性。

在本季度,团队已将以下应用程序保持最新:

  • audio/xfce4-mpc-plugin 0.5.0(已提交至 devel 仓库)

  • deskutils/xfce4-notifyd 0.3.4

  • graphics/ristretto 0.8.1

  • sysutils/xfce4-diskperf-plugin 2.6.0

  • sysutils/xfce4-battery-plugin 1.1.0(已提交至 devel 仓库)

  • sysutils/xfce4-fsguard-plugin 1.1.0(已提交至 devel 仓库)

  • sysutils/xfce4-netload-plugin 1.3.0(已提交至 devel 仓库)

  • sysutils/xfce4-systemload-plugin 1.2.0(已提交至 devel 仓库)

  • sysutils/xfce4-wavelan-plugin 0.6.0(已提交至 devel 仓库)

  • x11/xfce4-clipman-plugin 1.4.1

  • x11/xfce4-conf 4.12.1

  • x11/xfce4-dashboard 0.6.1

  • x11/xfce4-terminal 0.8.2

  • x11/xfce4-whiskermenu-plugin 1.6.2

  • x11-clocks/xfce4-datetime-plugin 0.7.0(已提交至 devel 仓库)

  • x11-wm/xfce4-panel 4.12.1

  • www/xfce4-smartbookmark-plugin 0.5.0(已提交至 devel 仓库)

我们还跟进了不稳定版本(在我们的实验仓库中提供):

  • sysutils/xfce4-settings 4.13.0(需要 Gtk+ > 3.20)

  • x11/libexo 0.11.2

  • x11/xfce4-whiskermenu-plugin 2.0.3

待办事项

  1. 应用在 D8416 中讨论的变更(简化 port Makefile 中的 MASTER_SITES 宏)。

  2. 提交稳定版面板插件。

最后更新于

这有帮助吗?