2015 年第三季度(7 月至 9 月)又是 FreeBSD 活动频繁的时期:这是连续第二个季度,我们发布了迄今为止最大的一期报告。
基金会再次在 FreeBSD 项目中发挥重要作用,不仅在会议上提供开发者和推广者的支持,还赞助了集群管理团队用于保持系统运行的大部分硬件,并赞助了许多 FreeBSD 的开发项目。本季度,我们还听取了由 2015 谷歌编程之夏(谷歌编程之夏2015)赞助的一些学生项目的汇报,这些项目涉及了从启动加载程序到增强 ARM 支持等多个方面,但它们的完成进度差异较大。部分谷歌编程之夏项目的成果已经提交至代码库,而其他一些项目则需要更多关注,以帮助新贡献者在返回课堂后继续推进。
ZFS 和网络堆栈继续是 FreeBSD 的强项,本季度两者都进行了积极的维护和功能改进。arm64 的重大工作继续进行,这可能使其迈向一级架构状态的晋升,而 RISC-V 架构的新移植在短时间内取得了显著进展。但不仅仅是 FreeBSD 的强项和令人兴奋的新领域得到了关注;本周期内,一些被认为是稳定不变的基础设施部分也得到了改善和更新,包括 truss 和 (k)gdb 的显著改进,手册页工具的新实现,网站的新面貌,以及一个全新的文档翻译系统,大大降低了入门门槛。
尽管这份报告篇幅创纪录,但它并未也无法涵盖报告期间 FreeBSD 所做的所有工作——有许多小型的 bug 修复不足以在此提及,开发者也忙于新项目的开发,未能写下之前项目的报告。FreeBSD 的持续活动不仅仅是提交代码到 Subversion 的开发者,也包括测试未发布代码或报告已发布代码 bug 的用户,参与邮件列表和论坛的用户,他们彼此帮助解决问题。即使是在 IRC 上的聊天讨论远离频道的主题,也为 FreeBSD 社区贡献了一份力量;正是这个社区的高效与互助,构成了 FreeBSD 本身有效性和有用性的关键所在。对于报告中列出的所有开发者,乃至整个社区的每一位成员,感谢你们让 FreeBSD 成为一款伟大的操作系统。
——Ben Kaduk
请在 2016 年 1 月 7 日之前提交 2015 年第四季度(10 月至 12 月)的状态报告。
联系方式:FreeBSD 集群管理团队 <clusteradm@>
FreeBSD 集群管理团队负责管理 FreeBSD 项目所依赖的机器,这些机器支撑着项目的分布式工作和通信同步。
我们的主要集群已经在加利福尼亚托管多年。我们正在进行的项目是将核心功能迁移到新泽西州的一个正式托管地点。这是一次硬件更新,也是资源优化和服务连续性的整合。
为了实现这一目标,背后有大量的工作。最初的集群是在一个共同共享、假定安全的网络环境中实现的,NFS 到处可用。这种结构并不适合跨地理位置分布,特别是在需要互联网传输时。大部分工作是将服务重建为独立的、可移植的组件,这些组件不依赖于共享网络访问,并且足够安全,可以在不安全的互联网中使用。
本季度亮点:
许多内部分发系统从 rsync 转为使用 syncthing
的分发网格。
我们实施了更多的代码/数据签名基础设施,并增加了带外验证。
新的 32 核参考构建主机已上线。
内部的 admbugs 从 bugzilla 4.4 升级到 5.0,并为 bugmeister 团队提供了可用的包。
最终从 varnish3 升级到 varnish4。
我们清理了 hub.FreeBSD.org,这是 2012 年安全事件的最后幸存者。
vuxml 和传统的 portaudit 构建系统已转换为组件并集成。
https://download.FreeBSD.org/ 接近完成(请勿使用,直到正式宣布)。
引入了一个台湾节点,用于 pkg、ftp、svn 和 vuxml 镜像。
由于数据损坏 bug,我们将一个 freebsd-update 镜像从 lighttpd 转换为 nginx。
我们完成了从旧集群分离 svn 仓库,并将其迁移到新位置。
正在进行中:
该集群运行的是混合的 11-current 和 10-stable 版本,作为我们的 "eat our own dogfood" 项目的一部分。为了保持该项目的有效性,我们每月会进行集群刷新,以跟进当前代码。
我们每隔几天构建一次内部基本系统快照,每天构建一次包。
我们还为非集群管理服务提供支持,包括 jenkins、reviews、portsnap、freebsd-update、bugzilla、包构建器、git 和 mercurial。这些支持内容从维护 SSL 前端到操作服务器、分发数据或构建运行的包/二进制文件不等。
联系方式:FreeBSD 发布工程团队 <re@FreeBSD.org>
FreeBSD 发布工程团队负责设定和发布 FreeBSD 官方项目发布的版本计划,宣布代码冻结,以及维护相应的分支等工作。
在 8 月中旬,FreeBSD 发布工程团队发布了 FreeBSD 10.2-RELEASE,提前两周完成,比原定计划要早。
FreeBSD 发布工程团队感谢所有在发布周期中测试了 BETA 和 RC 构建版本并报告问题的人员。
在 FreeBSD 核心团队的批准下,FreeBSD 发布工程团队任命 Marius Strobl 为副负责人。
本项目由 FreeBSD 基金会赞助。
联系方式:FreeBSD 核心团队 <core@FreeBSD.org>
本季度,核心团队处理的最大任务是开发并发布新的行为规范。行为规范说明了人们在所有 FreeBSD 官方通信渠道上的行为预期,以及开发者和其他与项目相关的人员在代表项目公开场合时应遵守的行为准则。
行为规范得到了广泛的好评,并引发了社区的许多评论和改进建议,其中许多已经被采纳。
核心团队接下来的任务是恢复 Babak Farrokhi 的 Ports 提交权限。Babak 目前居住在伊朗。几年前,法律建议认为允许伊朗居民的贡献可能会违反美国的贸易制裁。在经过几年后,核心团队被要求重新审视这个问题。在律师的建议下,核心团队决定恢复伊朗居住者的提交权限。
CTM 服务进行了安全审查。鉴于缺乏常规的真实性检查使得注入简单的 exploit 代码相对容易,因此该服务被认为过于危险,无法继续作为 FreeBSD 基本系统的官方部分。CTM 的用户非常少,但他们仍可以通过 Ports 安装 CTM 来继续使用。
核心团队得知 ISC 停止了其托管服务,这导致了需要迅速重新规划将 FreeBSD 集群的关键部分迁移到该数据中心的计划。集群管理团队已接管此事,并取得了进展。
核心团队还接到了关于 NextBSD 的咨询,询问是否应该将其作为 FreeBSD 项目的未来方向。核心团队的立场是,NextBSD 是个有趣的项目,我们将其视为与其他 BSD 项目一样,可能提供有价值的好点子。然而,我们目前没有将 NextBSD 作为 FreeBSD 官方发行版的计划。
除了这些问题,核心团队还处理了各种日常事务。本季度,我们发放了三个新的源代码提交权限,没有收回任何提交权限以供保管。欢迎 Allan Jude、Marcelo Araujo 和 Andriy Voskoboinyk 加入。
联系方式:John-Mark Gurney <jmg@FreeBSD.org>
automtud 脚本能 FreeBSD 机器向支持 Jumbo 帧的机器发送 Jumbo 帧,同时对其他机器使用正常大小的帧。
使用 Jumbo 帧有多种优势,例如减少协议开销。它还意味着 TCP 流的分段会减少,尽管 TSO 帮助缓解了这种分段的弊端。在 LRO 不太有效的情况下,将接收更少的数据包。
目前该脚本退出时不会恢复系统到原始状态。这意味着你必须在停止脚本后手动更改接口的 MTU 并删除主机路由。
修复各种以太网驱动程序,以更好地支持 Jumbo 帧。尽管大多数以太网驱动程序支持 scatter/gather,但它们使用的是物理连续区域,这可能导致资源短缺。
需要更多的测试来确保一切按预期运行。这意味着在运行脚本时,所有机器之间的通信应正常工作,不会出现延迟或连接问题。检查 vmstat -z | grep mbuf
,确保这些问题不是由于以太网驱动程序的问题导致的 jumbo_9k 或 jumbo_16k 缓冲区耗尽。
联系方式:Peter Grehan <grehan@FreeBSD.org> 联系方式:Neel Natu <neel@FreeBSD.org> 联系方式:Tycho Nightingale <tychon@FreeBSD.org> 联系方式:Allan Jude <freebsd@allanjude.com> 联系方式:Michael Dexter <editor@callfortesting.org>
bhyve 是款运行在 FreeBSD/amd64 平台上的虚拟机管理程序。目前,它可以运行 FreeBSD(8.x 或更高版本)、Linux i386/x64、OpenBSD i386/amd64、NetBSD/amd64、Illumos 和 Windows Vista/7/8/10/2008r2/2012r2/2016 x64 虚拟机操作系统。当前的开发重点是支持更多的虚拟机操作系统并实现其他虚拟机管理程序中存在的特性。
在 2015 年 vBSDCon 会议期间,举行了一个结合了 bhyve 和 ZFS 的 BoF(Birds of a Feather)讨论会,由 Michael Dexter 和 Allan Jude 主持。有关 bhyve 的问题包括实时迁移、暂停/恢复支持以及使用 ZFS 的配置。
有三个与 bhyve 相关的项目被选为 2015 年的谷歌编程之夏项目:NE2000 设备仿真、将 bhyve 移植到 ARM、以及支持 ptnetmap。
本季度 bhyve 的主要增强功能是支持外部固件,以及移植了 Intel edk2 UEFI 固件。这使得 bhyve 能够在无头模式下运行 Windows 和 Illumos。
改进文档。
bhyveucl
是一个进行中的脚本,用于基于 libUCL 配置文件启动 bhyve 实例。更多信息请见 https://github.com/allanjude/bhyveucl。
添加对 virtio-scsi 的支持。
提供灵活的网络后端:wanproxy,vhost-net。
支持以非 root 用户身份运行 bhyve。
为流行的虚拟机文件格式(VMDK、VHD、QCOW2)添加过滤器。
实现视频抽象层(不依赖于 X11 或 SDL)。
支持暂停/恢复。
实现实时迁移。
支持嵌套 VT-x(在 bhyve 中运行 bhyve)。
支持其他架构(ARM、MIPS、PPC)。
联系方式:Dimitry Andric <dim@FreeBSD.org> 联系方式:Ed Maste <emaste@FreeBSD.org> 联系方式:Roman Divacky <rdivacky@FreeBSD.org> 联系方式:Davide Italiano <davide@FreeBSD.org>
我们已将 clang、llvm、lldb、compiler-rt 和 libc++ 更新到 3.7.0 版本。所有这些都包含了许多改进。有关详细信息,请查看链接中的发布说明。这使我们完全跟上了这些项目的最新上游版本。同时,Ed Maste 正在处理从 llvm.org 导入 libunwind。
像 3.5.x 和 3.6.x 版本一样,这些组件需要 C++11 支持才能构建。目前,FreeBSD 10.0 及以后版本提供了该支持,至少在 x86 上是如此。目前尚无明确计划将这些版本合并到任何稳定分支,因为这样做会给常规升级场景带来困难。
感谢 Ed Maste 和 Andrew Turner 在这次导入中的帮助,也感谢 Antoine Brodin 提供的多个 Port exp-run。
在第一次 Port exp-run 中,发现了一些重大问题,其中一个是 clang 错误导致在某些情况下 pow()
生成浮动点异常。这进而导致 libpng 无法构建,另一个问题出现在 libjpeg-turbo 中,由于未定义行为导致的错误。这两个问题花费了一些时间修复,之后进行了第二次 exp-run,这次结果约有十几个新的 Port 失败。对于几乎所有这些新的失败,已经提交了修复,并链接到原始 PR 201377 进行 exp-run。
提交 PR 201377 相关依赖的 Port 修复。
测试并报告新工具链的相关问题。
联系方式:George Neville-Neil <gnn@FreeBSD.org>
随着 DTrace 的出现,我们能够用静态定义的跟踪点(SDTs)替换许多内核调试选项,例如 TCPDEBUG。现已将跟踪点添加到系统中,以复制 TCPDEBUG 内核选项的功能。无需添加新的内核选项——它们是任何包含 DTrace 的内核的标准配置,DTrace 已包含在 10.X 和 HEAD 的默认 GENERIC 内核中。
该项目由 Limelight Networks 赞助。
联系方式:Michael Gmelin <freebsd@grem.de>
Acer C720 Chromebook 是一款价格实惠(不到 $200)且功能强大的小型笔记本,运行 FreeBSD 后提供高达六小时的电池续航。它是一款非常适合旅行和编程的机器。该设备完全可用,所有基本设备都能正常工作:键盘、触摸板、光传感器、背光控制、VESA 模式下的显示(快速)、通过 HDMI 的外接显示(仅支持 VESA 镜像模式)、声音、USB 接口、SD 卡槽、摄像头和 Atheros 无线。
本季度,该项目扩展了先前在启动过程和键盘驱动程序以及 smbus(4) 驱动程序上的工作。新增了三个驱动程序:用于 I2C 总线的 ig4(4)、用于触摸板的 cyapa(4) 和用于环境光传感器的 isl(4)。
大部分开发工作最初是在 2014 年底完成的。自那时以来,补丁得到了大幅改进并合并到了 HEAD,因此所有相关设备均能在无需手动补丁的情况下正常工作。
对于无法运行 HEAD 的用户,提供了一个回溯补丁至 10.2-RELEASE。
感谢所有在此过程中提供帮助的人。没有你们的帮助,我是做不到的(你们知道自己是谁)。
联系方式:Alexander Motin <mav@FreeBSD.org>
当 Copan/SGI 最初开发 CAM Target Layer (CTL) 时,支持高可用性集群(HA)。不幸的是,HA 代码的许多部分未随主源代码一起发布。现在,缺失的部分已从头实现、修复并改进。
该代码支持双节点 HA 和异步 LUN 单元访问(ALUA)的四种模式:
没有节点间互联的 Active/Unavailable 模式,次节点只能报告其存在。
Active/Standby 模式,次节点仅处理基本的 LUN 发现和预留,并通过互联与主节点同步状态和命令执行。
Active/Active 模式,两个节点都处理命令并访问备份存储,通过互联与主节点同步状态和命令执行。
Active/Active 模式,次节点无法访问备份存储,而是充当代理,将所有命令通过互联传递给主节点执行。
如果与主节点的互联连接丢失,次节点进入过渡状态,类似于 Unavailable,无法响应大多数请求,但会使发起者等待恢复或集群故障转移。
CTL 还进行了大量其他改进,包括支持 CD/DVD 驱动器和可移动磁盘的仿真、实时 LUN 重新配置等。
该代码已提交到 FreeBSD head,并最近合并到 stable/10 分支。
该项目由 iXsystems, Inc. 赞助。
联系人:Nigel Williams <njwilliams@swin.edu.au>
多路径 TCP(MPTCP)是对 TCP 的扩展,它允许在一个标准 TCP 会话中使用多个网络接口。新地址的添加以及数据的调度在 TCP 应用层的角度是透明的。
该项目的目标是提供一个 MPTCP 内核补丁,使其能够与参考实现的 MPTCP 进行互操作,并进行一些额外的增强,以帮助网络研究。
v0.5 补丁已经发布,这是重新编写实现的第一个补丁。我们正在记录新的设计并解决社区提供的反馈。
目前,工作已开始改善输入处理,因为当前的接收和重组段的方法导致了连接关闭时的一些不稳定性和停滞。改进将涉及重新使用子流接收缓冲区,并使用 upcall 来排队 MP 层重组任务,而不需要对 MP 控制块加锁。改进还应允许绕过 mptcp_usrreq 以支持标准 TCP 连接。
MPTCP 提交历史已与 hg-beta.FreeBSD.org 同步,我们已将代码库放在 BitBucket 上(见链接)。未来的补丁发布将在那里标记。该树现在每周与 FreeBSD 主干合并。更新的 v0.51 补丁已准备好发布。
该项目由 FreeBSD 基金会赞助。
发布 v0.51 补丁。
完善文档并在 BitBucket 仓库中填充问题跟踪器。
在进一步测试前改善接收端代码。
准备一份详细说明当前补丁设计的技术报告。
联系人:Mihai Carabas <mihai@FreeBSD.org> 联系人:Peter Grehan <grehan@FreeBSD.org>
今年夏天,我们开始将 bhyve 移植到 ARMv7 平台。ARM 处理器的低级例程已被重写,同时尽力保持最初为 x86 架构创建的虚拟化 API。我们成功地启动了一个 FreeBSD 客户机,直到初始化中断为止。为了实现虚拟化中断和计时器,仍然需要做一些工作。我们在完成中断和计时器后,计划移植到实际硬件平台(Cubie2)。
虚拟化中断和计时器。
移植到实际硬件平台。
为 ARM 上的 bhyve 创建 SMP 支持。
移植到 ARMv8。
联系人:Edward Tomasz Napierala <trasz@FreeBSD.org>
FreeBSD 长期以来缺乏一个功能:能够在启动时使用临时根文件系统,配置内核以访问真实根文件系统,然后替换临时根文件系统为真实根文件系统。在 Linux 中,这种功能称为 pivot_root。reroot 项目旨在以稍微更用户友好的方式提供类似的功能。简单来说,从用户的角度来看,只需运行 reboot -r
。系统执行部分关机,杀死所有进程并卸载根文件系统,然后部分启动,挂载新的根文件系统,运行 init 并照常执行启动脚本。
项目的内核部分已经提交到 11-CURRENT,用户空间部分正在“最后修饰”阶段,预计很快会提交。计划将该功能合并到 stable/10 分支,并计划将 reroot 支持包含在 FreeBSD 10.3 中。
该项目由 FreeBSD 基金会赞助。
联系人:FreeBSD 图形团队 <freebsd-x11@FreeBSD.org>
Mesa Port 已更新到 10.6.8。同时,Port 经过了重大修订,确保所有 Port 都已正确配置。双版本支持已被移除,所有支持的 FreeBSD 版本只使用一个 Mesa 版本。提供离屏版本的 libosmesa Port 已合并到 Mesa 框架中。
Mesa Port 中的另一个重大新增功能是 OpenCL。现在有两个基于 GPU 的 OpenCL 实现:支持的 Radeon 显卡使用 lang/clover,支持的 Intel 显卡(目前仅限 Ivybridge)使用 lang/beignet。感谢 Johannes Dieterich、O. Hartmann 和 Koop Mast 的努力使这一切得以实现。
Mesa 更新完成后,我们可以将相同的更新程序应用到 X.Org 服务器。目前的版本是 1.14,更新到 1.17 的版本已经准备好,预计很快提交。
在内核方面,i915 更新取得了进展。驱动程序已能加载。有人报告说 X.Org 服务器启动成功,但 Mesa 并不正常,因此加速功能尚未启用。如果你想测试,说明将发布在 i915 更新文章的 wiki 页面(见链接)。目前,我们只能接受补丁,但不能提供支持。
我们参加了两次会议:2015 年多伦多的 XDC 和 2015 年斯德哥尔摩的 EuroBSDcon。报告将发布在博客上。
查看图形 wiki 页面获取最新信息。
联系人:Jonathan de Boyne Pollard <J.deBoynePollard-newsgroups@NTLWorld.COM>
nosh 项目是一套系统级实用程序,用于初始化、运行和关闭 BSD 系统,以及管理守护进程、终端和日志。它取代了 BSD init 和 NetBSD rc.d 系统,借鉴了 Solaris SMF 的命名里程碑、daemontools-encore 的服务控制/状态机制、UCSPI 和 IBM AIX 的服务与系统管理分离机制。它包含一系列兼容性机制,包括为其他系统的熟悉命令提供的适配层,以及自动导入机制,该机制从 /etc/fstab、/etc/rc.conf{,.local}、/etc/ttys 等文件中提取现有的配置数据,应用到其本地服务定义并创建额外的本地服务。它是可移植的(包括到 Linux),且具有可组合性,提供了从 systemd Linux 迁移的路径,并且不需要新的内核 API。它提供干净的服务环境、服务间的顺序和依赖关系、并行启动与关机(包括 fsck)、严格大小限制且自动旋转的日志、将服务管理器作为“子收割者”,并使用 kevent(2) 进行事件驱动的并行处理。
过去几个月,导入机制得到了增长,版本 1.18(7 月发布)提供了完整的 /etc/fstab 和 /etc/ttys 导入功能,版本 1.21(10 月发布)则支持导入 PC-BSD Warden 和 FreeBSD 9 jail 机制,以及 gbde 和 geli 挂载/卸载机制。它还增加了每当源文件发生变化时自动重新生成 host.conf 和 sysctl.conf 的功能。
过去几个月的其他发展包括完全独立的关机支持,不再依赖外部工具集提供的关机命令,以及一整套二进制包。从版本 1.20 开始,可以使用预编译的二进制包在 FreeBSD 和 Linux 上运行一个完全由 nosh 管理的系统。
剩下的最大任务是:创建足够的本地服务捆绑包和辅助工具,完全取代 rc.d 系统。这项工作已取得很大进展,最初的目标列表中的 157 项现在只剩下 39 项。这些项比较复杂,因此最需要帮助。
仍有一些 rc 脚本应当容易转换,比如将 /etc/rc.d/gptboot
和 /etc/rc.d/growfs
转换为单次服务,/etc/rc.d/routing
和 /etc/rc.d/kldxref
。
FreeBSD 的 /etc/rc.d/bluetooth
长达 360 多行。2011 年,Iain Hibbert 为 NetBSD 编写了一个“更简单的”蓝牙脚本,也许可以作为 nosh 转换的简单基础。
为 FreeBSD 的内核添加支持,传递 -b 参数给 PID 1,并支持 loader 中的变量 boot_bare
,以便提供类似于 Linux 的“紧急”(即使没有加载 shell dotfiles)和“救援”模式引导。
为 FreeBSD 的 fsck(8) 添加支持,输出机器可读的进度报告到指定的文件描述符,这样 nosh 就能为多个并行执行的 fsck 提供进度条。nosh 在 Linux 上已经提供此功能,fsck(8) 也提供机器可读的输出。
确定何时需要触发配置导入系统,例如当 bsdconfig 更改配置文件时,并为导入外部配置更改创建必要的钩子。
调查 FreeBSD/PC-BSD 如何通过利用 nosh 包机制进行改进。
联系人:Ed Maste <emaste@freebsd.org> 联系人:Marcel Moolenaar <marcel@freebsd.org>
在过去一季度中,提交了若干 UEFI 错误修复,提升了与不同 UEFI 实现的兼容性。这些修复包括改进 EFI 的 vt(4) 帧缓冲驱动程序 efifb,以便处理具有高分辨率显示和不寻常帧缓冲跨度值的系统。特别是,这些改进提高了与许多近期 Apple MacBook Pro 和其他 Mac 设备的兼容性。
在各种 UEFI 实现上测试 FreeBSD 主分支和 FreeBSD-STABLE 快照。
联系人:Alexander Motin <mav@FreeBSD.org>
ZFS 代码库进行了大规模合并,现在与最新的 Illumos 保持同步。此次更新包括以下内容:
LZ4 已成为默认压缩算法。
提升了预取性能,加快了发送/接收速度。
将 L2ARC 的内存使用量减少了近 50%。
改进了 I/O 聚合。
在发送/接收流中进行了细粒度的校验和。
减少了具有大量数据集的池的导入时间。
重新设计并简化了预测性预取机制。
该代码已提交至 FreeBSD 主分支,并已成功合并到 stable/10 分支。
联系人:Eric McCorkle <eric@metricspace.net>
已修改支持 UEFI 的 boot1.efi 和 loader.efi,以支持从 ZFS 文件系统加载和启动,如前一份报告所述。ZFS 启用的 loader.efi 可在使用 ZFS 启用的 GRUB 时作为链式加载程序。
在这一季度,已报告了若干成功的测试,涉及简单的 ZFS 配置,既包括 boot1.efi 和 loader.efi,也包括 GRUB 和 loader.efi。
对于使用补丁过的 boot1.efi 和 loader.efi 的 UFS 配置,也已报告成功的测试。
需要更多复杂的 ZFS 配置的测试报告,如包含日志/L2ARC vdev、镜像、条带化和 raidz 的配置。
在获得成功报告后,补丁需要进行审查并提交。
联系人:John-Mark Gurney <jmg@FreeBSD.org>
PCI Express (PCIe) 热插拔用于笔记本电脑和服务器,允许在系统运行时添加或移除外设设备。笔记本电脑通常将热插拔 PCIe 用作 ExpressCard 插槽或 Thunderbolt 接口。ExpressCard 已经内建了 USB 支持,FreeBSD 已经支持该功能,但像千兆以太网适配器和 eSATA 卡这样的 ExpressCard PCIe 设备仅在启动时得到支持,且其移除可能会导致 FreeBSD 崩溃。
该项目的目标是允许在 FreeBSD 正在运行时插入和移除这些设备。此工作将提供支持添加和移除设备的基本基础设施,但预计仍需进一步更新各个驱动程序以支持热插拔。
当前测试集中在使简单的 UART 设备功能正常。基本的热插拔功能目前已经可用。
该项目的补丁集现已发布在 github.com 上。
此项目由 FreeBSD 基金会赞助。
通过保存和恢复必要的寄存器,使挂起/恢复功能可用。这应通过 r281874 解决。
确保在挂起时移除设备,以避免如果设备在机器挂起时被替换为其他设备时系统出现问题。
改进状态转换处理方式,可能通过使用适当的状态机。
联系人:Stanislaw Kardach <kda@semihalf.com> 联系人:Zyta Racia <zr@semihalf.com>
该项目旨在为 LiquidIO 系列高性能可编程加速 10/40 千兆以太网网卡添加支持。当前开发的内核驱动程序支持基于 CN6640 和 CN6880 的 PCIe 卡,启用了以下功能:
一个 CNNIC API,用于控制/与智能网卡进行交互,包括:
处理在同一设备上运行的多个并发应用
请求/应答机制,支持(非)同步、有序/无序通信
远程内存操作
设备关闭/重置
一个利用 CNNIC API 和 Cavium 提供的网卡固件的基本网卡模块。此模块提供:
单队列/多队列 TX
硬件 TCP/UDP 校验和卸载
大接收卸载
混杂模式
基于 Sysctl 的设备统计和配置视图
通过用户构建的模块和 FreeBSD 的 firmware(9) 机制加载自定义固件。
该项目目前正在内部开发,并准备提交到上游。计划在 FreeBSD 11 中提供此功能。
此项目由 Cavium 和 Semihalf 赞助。
将代码提交到 FreeBSD 主分支。
联系人:Ed Schouten <ed@FreeBSD.org>
CloudABI 是一个类 POSIX 运行时环境,使用 Capsicum 作为唯一的访问控制机制。CloudABI 允许开发更坚固的、更易于测试且更易于跨系统迁移的软件,能够更好地防范安全漏洞。
截至 8 月,运行 CloudABI 程序所需的所有内核修改已被集成到 FreeBSD 主分支中。加载 cloudabi64 内核模块后,你可以直接从 shell 运行 CloudABI 程序,或使用 cloudabi-run 工具(sysutils/cloudabi-utils)。cloudabi-run 允许以更结构化的方式将套接字、文件和目录注入启动的程序中。
与此同时,已经开始开发一个包含跨编译的 CloudABI 实用程序和库的 Ports。该框架旨在为多种操作系统生成本地包,使得无论操作系统是否实际支持 CloudABI,都可以在任何操作系统上开发 CloudABI 应用程序。
如果你对 CloudABI 感兴趣,务必访问 GitHub 上的项目页面,观看会议上的讲座录音,或者等待即将发布的 FreeBSD Journal 版本,其中将介绍一篇关于 CloudABI 的文章。
此项目由荷兰的 Nuxi 赞助。
当前 CloudABI 仅适用于 amd64。将 CloudABI 移植到如 aarch64 等其他架构是有意义的。
CloudABI 目前仅已集成到 FreeBSD。如果我们能够将 CloudABI 支持提交到其他操作系统,应该可以在多个操作系统上运行相同的二进制文件,而无需重新编译。
CloudABI Ports 目前只有 60 个包。虽然这些包已包含一些有趣软件的构建模块,但我们始终欢迎扩展。
联系人:Roger Pau Monné <royger@FreeBSD.org> 联系人:Julien Grall <julien.grall@citrix.com>
Xen 是一种采用微内核设计的虚拟机管理程序(Hypervisor),提供服务使多个操作系统能够在同一计算机硬件上并发执行。FreeBSD 在 x86 架构下作为客户机的 Xen 支持在 8 版本中引入,ARM 支持目前正在开发中。FreeBSD 作为 amd64 Xen 主机(Dom0)的支持已在 HEAD 中提供。
在 x86 平台上,本季度的大部分工作集中在实现 Xen 中的 PVH。因此,大部分活动发生在虚拟机管理程序内部。为了实现干净的 PVH 实现,相关补丁已发布,目标是在下一个 Xen 版本(4.7)中合并。待完成,工作将继续,向 FreeBSD 和 Xen 添加新功能,以实现与传统 PV 客户机/主机的功能对等。
除此之外,工作正在进行中,以从 Linux 导入新的 netfront 驱动程序,以支持新功能,如分离事件通道和多队列支持。
在 ARM 平台上,本季度的工作集中在使 FreeBSD/arm64 能够作为 Xen 客户机启动。目前的活动是将补丁上游化,以准备 Xen 驱动程序支持 arm64。这包括对控制台驱动程序的重构。
此项目由 Citrix Systems R&D 赞助。
通用化事件通道代码,以便在 ARM 上使用。
提高后端(netback, blkback)性能。
与上游 Xen 合作,改进 PVH 并使其稳定。
改进通用的跳跃缓冲区代码,支持 blkfront 驱动程序的对齐要求,以处理未映射的 BIOS。
联系人:Jim Harris <jimharris@FreeBSD.org> 联系人:Conrad Meyer <cem@FreeBSD.org>
一个新的驱动程序 ioat(4) 已经添加到代码库中。ioat(4) 支持英特尔的 I/O 加速技术(I/OAT)设备,这些设备通常出现在一些英特尔服务器系统中。
这些设备是 DMA 卸载引擎,可以通过将内存复制从主 CPU 卸载到 I/OAT 单元,加速一些 I/O 密集型应用程序。此加速并非透明的;应用程序必须进行适配以利用硬件。
某些 I/OAT 型号支持更高级的复制模式,如 XOR;这些模式在 ioat(4) 驱动程序中尚未得到支持。
此项目由英特尔公司和 EMC / Isilon 存储部门赞助。
进一步测试,特别是在 BDXDE 以外的多种设备型号上(寻求志愿者)。
对更高级的复制模式提供支持。
联系人:George Neville-Neil <gnn@FreeBSD.org> 联系人:John-Mark Gurney <jmg@FreeBSD.org> 联系人:Ermal Luçi <eri@FreeBSD.org>
现已在 GENERIC 内核配置中默认启用 IPsec,并且正在进行多种方式的加速工作。最新的变化包括由 John-Mark Gurney、Ermal Luçi 和 George V. Neville-Neil 添加的 AES 模式,包括硬件和软件两种方式。部分工作还包括使用 netperf 项目中的 Conductor 进行的更多基准测试。结果已在 BSDCan 和 vBSDcon 上报告,更多内容将在 EuroBSDcon 和 BSDCon Brasil 上展示。
此项目由 Netgate 和 FreeBSD 基金会赞助。
性能改进和其他调整工作仍在进行中。
联系人:Konstantin Belousov <kib@FreeBSD.org> 联系人:Alan Cox <alc@FreeBSD.org> 联系人:Bruce Evans <bde@FreeBSD.org>
原子操作有两个基本目的。首先,它们是表达同步算法的构建块,以机器无关的方式使用高级语言来实现。实质上,原子操作抽象了 FreeBSD 运行的各种架构所支持的不同构建块,使得通过隐藏硬件级别的细节,更容易开发和理解无锁代码。
原子操作还提供了屏障操作,允许软件控制现代处理器中乱序执行和推测执行对内存的影响,以及编译器的优化。这一功能对多线程软件尤为重要,例如 FreeBSD 内核,在多处理器通过共享主内存通信的系统上运行时。
每个机器架构定义一个内存模型,指定乱序执行和推测执行对内存可能产生的影响。更精确地说,它指定了机器在优化性能时可能可见地重新排序内存访问的程度。不幸的是,架构的数量几乎与内存模型的数量一样多。例如,IA32 或 Sparcv9 TSO 等架构是相对强序的,而 PowerPC 或 ARM 等架构则非常宽松。实际上,原子操作为 FreeBSD 的机器无关代码定义了一个非常宽松的抽象内存模型,可以在任何这些架构上有效实现。
大多数 FreeBSD 的开发和测试仍然发生在 x86 机器上,结合 x86 强序内存模型,这导致了原子操作,特别是屏障的使用错误。换句话说,代码没有正确写入 FreeBSD 的抽象内存模型,但 x86 架构的强序性掩盖了这一事实。受到错误使用原子操作影响的架构通常不太流行或可用性有限,且因原子操作误用导致的错误很难诊断。
该项目的目标是审计和升级无锁设施的使用,希望在这些错误在实际环境中被发现之前进行修复。
FreeBSD 定义了自己的原子操作集,就像许多其他操作系统一样。但与其他操作系统不同,FreeBSD 根据释放一致性模型来建模原子操作和屏障,这也被称为获取/释放模型。这与 C11 和 C++11 语言标准使用的模型相同,并且是新 64 位 ARM 架构使用的模型。尽管 C11 和 FreeBSD 原子操作在语法上有所不同,但它们本质上共享相同的语义。因此,关于 C11 内存模型及使用 C11 原子操作表达的算法的教程可以在 FreeBSD 中轻松重用。
C11 的一个设施是缺失的,那就是 屏障。屏障是双向的屏障操作,现有的原子+屏障访问无法表达它们。它们在 r285283 中被添加。
由于 x86 处理器实现的强内存模型,atomic_load_acq() 和 atomic_store_rel() 可以通过普通的加载和存储指令实现,仅需要编译器屏障,不需要额外的排序约束。atomic_store_rel() 的这种简化在 r236456 中完成。atomic_load_acq() 的更改在 r285934 中完成,经过仔细审查内核和用户空间中所有使用的情况,以确保没有遗留依赖于更强实现的情况。
在 x86 上,唯一允许的内存访问重新排序是加载可以与旧的存储重排序到不同的位置。这是由于在微架构级别使用了存储缓冲区。因此,为确保 x86 上的顺序一致性行为,需要发出存储/加载屏障,这可以通过 MFENCE 指令或任何锁定的读-修改-写操作来完成。后者是英特尔和 AMD 的优化指南推荐的方式。需要注意的是,通过精心选择由锁定的 RMW 操作修改的临时内存位置,可以通过避免虚假的数据依赖来减少屏障的成本。相应的优化在 r284901 中提交。
atomic(9) 手册页由于错误和含糊不清的陈述,常常导致困惑。最重要的问题在 r286513 和 r286784 中得到了解决。
以下是我们对原子操作误用的预防性修复示例,这些错误只有在弱序机器上才能显现出来:
一个非常重要的无锁算法,在内核和 libc 中都使用了,是实现于 kern/kern_tc.c 和用户空间 __vdso_gettimeofday 的时间保持功能。该算法依赖于 x86 的完全存储顺序(TSO)行为,已在 r284178 和 r285286 中修复。
kern/kern_intr.c 中的无锁更新到 it_need 指标已在 r285607 中修正。
kern/subr_smp.c:smp_rendezvous_cpus() 中的问题,未能保证对其他 CPU 上更新的可见性,已在 r285771 中修复。
pthread_once() 的实现已在 r287556 中修复,增加了缺失的屏障。
此项目由 FreeBSD 基金会赞助(Konstantin Belousov 的工作)。
联系人:Dominik Ermel <der@semihalf.com> 联系人:Wojciech Macek <wma@semihalf.com> 联系人:Zbigniew Bodek <zbb@semihalf.com>
Cavium 的 ThunderX 是一款高性能的 64 位 ARMv8 CPU,配置可支持每个封装最多 48 个核心。ThunderX 是 FreeBSD/arm64 移植工作的初始参考平台。
Semihalf 赞助的 ThunderX 支持工作带来了全新的功能,包括:
多插槽操作:FreeBSD 现在可以在一块双节点 ThunderX 服务器板上运行,支持总共 96 个 CPU 核心!
虚拟网络接口卡驱动:VNIC 驱动由 4 个部分组成(BGX、MDIO、物理和虚拟功能),是 FreeBSD 中第二个利用 SR-IOV 功能的驱动程序。ThunderX 现在能够使用内置网络接口,速率为 1–40 Gbps。
此外,之前引入的功能已经得到改进并提交到 HEAD。这包括:
内部和外部控制器的 PCIe 驱动
ITS(中断转换服务)修复
ThunderX 的平台特定更改
对内核的其他各种修复(PCI、UMA 等)
剩余的功能正在审查中,很快将整合到 HEAD。不过,GENERIC 内核已经支持并可以在 ThunderX 上运行。
此项目由 FreeBSD 基金会、ARM Ltd.、Cavium 和 Semihalf 赞助。
将剩余功能上游化:
插槽支持、VNIC 驱动和 PCIe 修复
联系人:Andrew Turner <andrew@FreeBSD.org>
HiKey 是 Linaro 96boards 计划下的一款低成本 ARMv8 开发板,搭载 HiSilicon Kirin 6220 处理器,具有 8 个 ARMv8 核心和 1GB 内存。
FreeBSD 已成功移植到 HiKey,并提供了最小的驱动集。截至本报告时,FreeBSD 支持 micro-SD 卡槽和 USB 主机,能够从 SD 卡启动并进入多用户模式,使用最新的 arm64 快照。
内核缺少一些设备驱动,但对于那些有兴趣在 ARMv8 硬件上测试 FreeBSD 的用户来说,已具备可用状态。
此项目由 ABT Systems Ltd 和 ARM Ltd 赞助。
为 SDIO 和板载 WiFi 添加驱动。
修复 MMC 驱动以访问 eMMC。
支持 USB OTG 模式。
支持 HDMI 显示。
添加热管理功能。
联系人:Andrew Turner <andrew@FreeBSD.org> 联系人:Ed Maste <emaste@FreeBSD.org>
对 arm64 内核进行了大量清理和修复工作,包括异常处理、异步信号、ddb 和 pmap 的修复。ddb 已更新,以更好地处理可能已被取消映射的内存访问。pmap 代码通过实现所需的更多功能得到了更完善的支持。
SMP 方面的进一步工作意味着 FreeBSD 现在可以在 Cavium ThunderX 平台的所有 48 个核心上启动。这包括对 ARM GICv3 中断控制器的支持,并修复了内存映射,使其可以在多个 CPU 之间共享。
测试套件已在 qemu 和硬件上运行。大多数测试用例都通过了,约有 30 个测试失败或出错。关于剩余测试用例问题的诊断工作仍在进行中。
此项目由 FreeBSD 基金会和 ABT Systems Ltd 赞助。
移植到更多的 SoC。
联系人:Ruslan Bukin <br@FreeBSD.org> 联系人:Arun Thomas <arun.thomas@baesystems.com> 联系人:Ed Maste <emaste@FreeBSD.org>
RISC-V 是 UC Berkeley 设计的开源指令集架构(ISA),它对所有使用者开放,无需支付费用或签订许可证协议。RISC-V 团队计划提供自由开放的 BSD 许可的 CPU 设计。
Ruslan Bukin(剑桥大学)现在已将 FreeBSD 移植到 RISC-V 模拟器,并成功启动到单用户 shell。该移植工作才刚刚开始两个月,仍处于进行中阶段,在达到可以提交的状态之前需要进行大量重构和清理。然而,短时间内取得了非凡的进展。移植工作还提出了一些待改进的 ISA 方案。
该移植当前使用 GNU 工具链(GCC 和 binutils),并在 Spike 模拟器上运行。Clang/LLVM 和相关工具中对 RISC-V 的改进需求很大。
此项目由国防高级研究计划局和美国空军研究实验室赞助。
联系人:Baptiste Daroussin <bapt@FreeBSD.org>
mandoc 是一套编译 mdoc 的工具,mdoc 是 BSD 手册页常用的 roff 宏语言。
mandoc 是 FreeBSD head 上 manpages 的默认渲染器。本季度,apropos(1) 工具被切换为使用 mandoc 的版本,提供了一种新的数据库格式(使用 SQLite),并带来了更强大、更细粒度的手册页搜索功能。
虽然 mandoc 对手册页非常有效,我们还提供了许多其他格式为 roff 的文档。正在研究 Heirloom 工具链以替代 base 中的 groff。Heirloom nroff 工具链有多个优点:它具有非常好的 Unicode 支持和与 groff 的良好兼容性。
大量工作已完成,测试了所有 base 系统中的 roff 文档(包括 manpages),并且上游对报告的 bug 修复非常积极。
soelim(1) 工具已被替换为一个 BSD 许可的版本,它足够好,能够与所有可用的 roff 工具链配合工作,以便于过渡。这个版本的 soelim(1) 工具最初仅为 FreeBSD 编写,现在已成为 mandoc 工具套件的一部分。
与 OpenBSD 的 Ingo Schwarze 协作,col(1) 工具已被清理并更新,以便能够识别输入流中的 SUSv2 风格的 escape-digit 和 BSD 风格的 escape-control-char 序列。
checknr(1) 工具已被清理和扩展,以支持现代 roff(7) 宏,包括同步来自 NetBSD 和 Heirloom doctools 版本的代码。
在测试新工具链时,发现了许多 roff 修复,应用于文档和 man 页。
联系人:FreeBSD pkg 团队 <pkg@FreeBSD.org>
pkg 1.6.0 已发布。自 pkg 1.5 以来做了许多改进:
依赖解决器大大改进
三方合并代码修复了很多问题
pkg add 现在可以在依赖行中不指定版本也能工作
pkg check -d 现在还会检查所需的库
改进了对部分升级的支持
改进了 zsh 完成支持
改进了对 Linux 的支持:所有回归测试现在在 Linux 上通过
消息现在可以根据上下文显示,始终显示特定消息,或仅在安装、升级(根据上一版本)或卸载时显示
@keywords 现在支持新的条目以添加上下文感知的消息
增加了生成 graphiz 的 dot 格式表示求解器问题的能力
pkg search 现在默认显示匹配包的 pkg-comments
大量 bug 修复和代码清理
改进了交叉安装支持
为文件列表增加优先级概念,确保某些文件优先替换。这是打包 base 的一个阻碍因素。
调查将 openssl 替换为 mbedtls。
联系人:Baptiste Daroussin <bapt@FreeBSD.org> 联系人:Allan Jude <allanjude@FreeBSD.org>
sesutil(8) 最初创建的目的是为大多数热插拔硬盘机箱提供一种更通用的方法来闪烁“定位”LED。
该工作基于 Matthew Jacob 在 2000 年创建的原始 SES 工具,这些工具一直可以在源代码树的 share/examples 部分找到,但默认并未构建。
新的实用工具在原始代码的基础上增加了许多非常有用的功能:
打印所有连接到 SES 控制器的对象的映射
将设备名称 (/dev/da5) 映射到 SES 插槽编号
按照 SES 插槽编号或设备名称闪烁硬盘的定位和/或故障 LED
检查整个 SES 控制器的状态
此项目由 Gandi 和 ScaleEngine Inc. 赞助。
在更多硬件上测试 sesutil(8)。
诊断一个问题,即定位命令有时需要发送两次才能激活 LED。
增加对 libxo 输出类型的支持。
联系人:John Baldwin <jhb@FreeBSD.org> 联系人:Bryan Drewery <bdrewery@FreeBSD.org>
truss 的 ABI 特定后端与核心的接口进行了重构,减少了重复的代码。这引发了更多后续工作,增加了对更多 ABI 的支持,包括 aarch64 和 CloudABI。
ptrace(2) 已扩展以返回更多关于当前执行系统调用的信息。这恢复了 truss 早期版本中的行为:知道所有系统调用的正确参数数量。
truss 中的 fork 跟踪支持已重新设计,改为使用 ptrace(2) 中的原生 fork 跟踪,而不是为每个被跟踪进程的子进程创建一个新的 truss 进程。
上个季度还增加了对更多参数解码的支持。
创建一个新的 libsysdecode 库,用于存放 truss(1) 和 kdump(1) 之间共享的代码。
解码更多系统调用参数。
为 freebsd32 系统调用添加适当的系统调用解码规范。
实现一个用于 FreeBSD/amd64 上 64 位 Linux 二进制文件的 ABI。
联系人:John Baldwin <jhb@FreeBSD.org>
支持在 FreeBSD 上跟踪 fork 后的子进程已实现并合并到 GDB 的主分支,并包含在 GDB 7.10 中。
移植 kgdb 到更新版本的 gdb 的工作仍在继续。amd64、i386、powerpc、powerpc64 和 sparc64 后端已经完成移植,现在可以通过 devel/gdb port 中的新 KGDB 选项使用。
libkvm 的 MD 后端已被重写,以支持跨调试崩溃转储,amd64 和 i386 的 kgdb 目标也已重新设计,以支持跨调试。这些更改使得 i386 和 amd64 的 kgdb 二进制文件能够交叉调试对方架构的 vmcore。libkvm 的这部分更改尚未在树中,但正在等待更多测试。
在除了 amd64、i386 和 powerpc64 之外的平台上测试 libkvm 更改。
找出为什么 powerpc kgdb 目标无法解压初始帧之后的堆栈。
为更多平台(arm、mips、aarch64)添加支持,支持 upstream gdb 用于用户空间和 kgdb。
为 FreeBSD 编写一个新的 1:1-only 线程目标,并将其提交给 upstream。
增加对调试 powerpc 向量寄存器的支持。
联系人:Torsten Zühlsdorff <ports@toco-domains.de> 联系人:Michael Fausten <ports@michael-fausten.de>
GitLab 是一款基于 Web 的 Git 仓库管理器,具有许多功能,超过 100,000 个组织使用,包括 NASA 和阿里巴巴。它也是 FreeBSD Wiki 上 Wanted Ports
列表中的一个长期存在的条目。
在过去的一个月中,GitLab 的引入工作稳步推进,最终导致了添加新 Port 的 PR。除了 Philip M. Gollucci 正在处理的众多依赖项外,已经完成了大量的工作。与许多新的或更新的 rubygems 一起,Rails 4.1 被复活了。许多提交者参与了这一过程,并引导我们解决了各种问题和陷阱。
由于依赖项数量众多——我们几乎达到了 100——进展需要一些时间。同时,GitLab 的新版本已经发布,需要更多的依赖项和更新。此版本的工作仍在进行中,但首要目标是将最新的稳定版本(7.14 分支)引入 Ports。
此项目由德国杜塞尔多夫的 anyMOTION GRAPHICS GmbH 赞助。
关闭所有依赖项的 PR。
提交 GitLab Port 本身。
更新 Port 到 8.x 分支的最新版本。
联系人:FreeBSD GNOME 团队 <freebsd-gnome@FreeBSD.org>
FreeBSD GNOME 团队维护着 FreeBSD 上的 GNOME、MATE 和 CINNAMON 桌面环境及图形用户界面。GNOME 3 是 GNU 项目的一部分。MATE 是 GNOME 2 桌面的一个分支。CINNAMON 是一个使用 GNOME 3 技术但具有 GNOME 2 外观和感觉的桌面环境。
本季度,GNOME 3.16 和 MATE 1.10 已被提交到 Ports,并进行了增量改进。已撰写并提交了关于在单个 Port 的 Makefile 中使用 USE_GNOME 的章节,并加入了 Porter's Handbook。
GNOME 3.18 已经移植。然而,在提交到 Ports之前,还需要解决一些问题。
FreeBSD GNOME 网站需要更新。工作正在进行中,以改善它。
请对 Porter 手册中关于 USE_GNOME 功能的章节提供反馈并提出改进建议。
继续研究阻碍 GNOME 3.18 提交的问题。
联系人:KDE on FreeBSD 团队 <kde@FreeBSD.org>
总体而言,本季度我们更新了以下 Port :
CMake 3.3.1 (r396266)
Qt 4.8.7 (r397043)
QtCreator 3.5.0 (r395935)
修正了 Qt5-ports 中的一些依赖关系、拼写错误和 plist(r396044-r396047),由 Ralf Nolden 发现
在我们的开发仓库中,我们完成了以下工作:
将 PyQt4 绑定更新到 4.11.4,并添加了 qt5 绑定 5.5,Guido Falsi 贡献并由 Tobias Berner 修改(area51)
更新 qt5 到 5.5.0。Ralf Nolden 提供了一些有用的新 Port,例如 lang/qt5-l10n(area51/qt-5.5)
plasma5 分支已与 KDE 上游保持同步,并包含 Frameworks 5.14.0、Plasma Desktop 5.4.2 和 Applications 15.08.1 的 Port (area51/plasma5)
将 plasma5 分支的内容合并到 Ports 中。(这是对几乎所有 KDE 应用程序的重大更新,因此欢迎测试者参与。)
完成 PyQt5 的工作。
移植 qt5-webengine。Qt-5.5 可能是最后一个发布 www/webkit-qt5 Port 的版本。
联系:Olivier Duchateau <olivierd@FreeBSD.org>
Node.js 是一个基于 Chrome 的 JavaScript 运行时构建的平台,旨在轻松构建快速、可扩展的网络应用程序。它采用事件驱动、非阻塞的 I/O 模型,使其轻量且高效,非常适合在分布式设备上运行的数据密集型实时应用程序。
此项目的目标是使安装 npm 包注册表 中的模块变得简单。
目前,存储库包含超过 100 个新的 Port,特别包括:
CoffeeScript(一个可以转译为 JavaScript 的编程语言)
node-gyp(允许构建 Node.js 插件,通常用 C 或 C++ 编写)
Request(简化的 HTTP 客户端)
我们还为 Port 移植编写了几个辅助工具,这些工具可在我们的实验性存储库中使用。
引入 grunt.js(以及相关模块),JavaScript 任务运行器。
在 USES 框架中加强对 node-gyp 的支持。
联系:Frederic Culot <portmgr-secretary@FreeBSD.org> 联系:FreeBSD Ports 管理团队 <portmgr@FreeBSD.org>
截至第三季度末,Ports中包含超过 25,000 个 Port,PR 数量超过 2,000 个。暑期期间,Ports的活动比前一季度减少,120 名活跃提交者完成的提交不到 7,000 次。不幸的是,关闭的问题报告数量也显著减少,第三季度修复的问题报告不到 1,500 个。
第三季度,有几个提交者的提交权限被暂时保留,其中包括由于超过 18 个月未活跃(fluffy)或提交者请求保留的权限(xmj、stefan、brix)。一名新开发者获得了 Port 提交权限(Jason Unovitch,junovitch@FreeBSD.org),并且一名回归提交者(Babak Farrokhi)恢复了提交权限。
在管理方面,第三季度 Ports 管理团队没有做出任何变动。
在 QA 方面,进行了 25 次 exp-run 操作来验证敏感的更新或清理工作。其中显著的变更包括更新 pkg 至 1.6、移除 automake14 以及对 doxygen(1.8.10)、gnome3(3.16)、cmake(3.3.1)和 Qt4(4.8.7)等多个重要 Port 的更新。默认的 jdk 也被设置为 openjdk8。基础设施方面的一些变更包括新增了选项辅助工具:opt_VARS、opt_VARS_OFF、opt_IMPLIES 和 opt_PREVENTS,同时移除了一些宏,如 UNIQUENAME 和 LATEST_LINK。
我们想提醒大家,Ports是由志愿者建立和维护的,非常感谢任何帮助。这个问题比以往更为紧迫,因为问题报告的数量似乎没有停止增长。所以,如果你使用 Ports 或包,请考虑参与进来,提供帮助!对于现有的 Port 维护者来说,如果你能考虑下一步,帮助指导一些新手,传授你对 Ports的内部知识,那将非常棒。如果你已经在做这些工作,非常感谢你!
联系:Alexey Dokuchaev <danfe@FreeBSD.org>
与一级架构架构相比,二级架构架构上的 Ports 通常收到较少的关注,尽管过去曾在不同时间进行过几次构建,并在当时将出现问题的 Port 标记为有问题。
一些二级架构平台,如 PowerPC 和 ARM,最近在 FreeBSD 和编译器方面有了显著改进,但由于该树在集群中的重建不够频繁,因此怀疑许多 Port 虽然标记为 BROKEN
,但实际上现在能够成功构建和运行。
在过去几周,已经修复了 26 个在 PowerPC 上确实存在问题的 Port,58 个曾被错误标记为 BROKEN
的 Port (遗留问题)被标记为可用,仍有不到 40 个 Port 存在问题,需进一步处理。
Ports 可以通过更频繁地针对二级架构系统进行清理来受益。
最近针对 QEMU 支持的仿真器以及备受期待的 Port 交叉构建工作,是将 FreeBSD 包与基本系统架构支持统一的重要步骤。
联系:FreeBSD Xfce 团队 <xfce@FreeBSD.org>
Xfce 是一个为 Unix 和类 Unix 平台(如 FreeBSD)提供的自由软件桌面环境。它旨在快速、轻量,同时保持视觉上的吸引力和易用性。
在本季度,团队更新了以下应用程序:
science/xfce4-equake-plugin 1.3.8
sysutils/xfce4-power-manager 1.5.2
x11/libexo 0.10.7
x11/xfce4-embed-plugin 1.6.0
x11/xfce4-verve-plugin 1.1.0
x11/xfce4-whiskermenu-plugin 1.5.1
x11-wm/xfce4-desktop 4.12.3
www/midori 0.5.11
我们还在跟踪不稳定的版本(可在我们的实验性存储库中找到):
sysutils/xfce4-panel-switch 1.0.2(用于备份面板布局的工具)
x11/xfce4-dashboard 0.5.1
在主干分支中,x11-wm/xfce4-panel 包含了一个支持 sysutils/xfce4-panel-switch 的补丁(可以通过面板首选项使用)。
测试新的稳定版本 GLib 2.46.x,并启用 kqueue/kevent 后端(在修订版 r393663 中已禁用)。目前,许多功能已损坏,特别是在 Thunar、xfce4-panel 和 Xfdashboard 中。
联系:FreeBSD 文档团队 <freebsd-doc@FreeBSD.org> 联系:FreeBSD 翻译团队 <freebsd-translators@FreeBSD.org> 联系:Warren Block <wblock@FreeBSD.org>
FreeBSD 文档翻译过程已经有一段时间需要现代化。现有的过程对于翻译人员来说,更新翻译非常困难。
在 Benedict Reuschling、Shaun McCance、Ryan Lortie、佐藤広生 等人的帮助下,新的 PO 翻译系统在 8 月份宣布投入使用。
PO 翻译处理翻译过程中的大部分繁杂工作。翻译人员不需要跟踪上游英文版本的提交。实际的翻译工作变得更快更简单。PO 编辑器可以显示文档的翻译进度。如果某个字符串已有翻译,可以轻松重复使用。
早期测试非常成功。大多数问题涉及到发现并记录新流程,而不是修复错误。新的英文文档翻译已经提交。
我们肯定会有更多的变化和改进,但该系统已经可以正常工作。我们将继续探索如何在翻译团队和整个项目之间共享工作。现在,能够使用 PO 软件的初步难关已克服,这项工作变得更加轻松。
继续测试。这个系统对我们来说是新的,必然会出现一些错误和意外结果。
改进有关如何使用新 PO 翻译的文档。许多内容涉及旧系统中很少发生的情况,如添加完全新的语言目录。
为现有文档添加新的翻译。现在,创建和更新翻译文档的工作量大大减少。现有和新翻译人员正在更新和添加英文文档的翻译。
探索如何生成并与语言团队的其他成员或外部翻译者共享翻译记忆。
测试新的 PO 编辑器,如 Pootle 和 Virtaal。
确定允许翻译人员提交翻译的权限方法。
开发并测试用于翻译手册页的代码。
联系:Warren Block <wblock@FreeBSD.org>
FreeBSD 网站的外观在多年里基本保持不变。像其他遗留系统一样,它很难进行修改。它被大量使用,因此容易受到琐碎讨论的影响。
CSS 将读者字体的大小缩小到了他们所请求的大小。它指定了硬编码的字体和对象大小(以像素为单位)。在宽屏显示器上,只有屏幕的中间三分之一被使用。硬件与此版本网站创建时的环境有所不同。屏幕变得更大、更宽,分辨率也在同一时间提高了。
是时候改变了。字体大小设置为百分比,且没有小于 100% 的字体。主框的宽度更改为 90%。做了一些其他小调整。这些有限的更改产生了一个更符合读者设置、更加易读且展示更多信息的渲染网站。
尽管没有更改内容,但外观的变化如此之大,以至于一些观众认为我们重新设计了网站。得知如此多人使用它,令人欣慰。我们还要感谢大家的反馈,反馈几乎完全是积极的,并且几乎没有琐碎讨论。
修复 CSS 中的其他过时假设。或者重新设计整个网站。然而,这比看起来要复杂和雄心勃勃得多。
联系:Luiz Otavio O Souza <loos@FreeBSD.org> 联系:Pratik Singhal <ps06756@gmail.com>
Allwinner A10 和 A20 芯片是 ARM CPU,广泛应用于日益普及的开发板和其他设备,如 Cubieboard/Cubieboard 2 和 Banana Pi。
随着 Pratik Singhal 结束其谷歌编程之夏项目,我们的 A10 和 A20 支持得到了改善。Pratik 帮助实现和测试了 Allwinner 芯片的 SD 卡和 SATA 支持。
Luiz Otavio O Souza 添加了对 A20 上 dwc 网络接口的支持,支持千兆速率。
Glen Barber 慷慨地为 Cubieboard 2 和 Banana Pi 添加了官方 FreeBSD 镜像支持。
该项目部分由 2015 谷歌编程之夏赞助。
一些驱动程序仍然缺失:音频、视频/HDMI/帧缓存、红外、I2C、SPI、PWM。
修复 if_dwc 以提高性能。
联系:Michal Ratajsky <michal@FreeBSD.org> 联系:Brooks Davis <brooks@FreeBSD.org>
FreeBSD 包含了多个与文件系统层次结构描述(以 mtree(5) 格式)的程序。这些描述,也叫做规范,具有广泛的用途,从自动创建目录结构到安全审计等。
每个程序,即 mtree、bsdtar、install 和 makefs,都有自己对 mtree 格式的实现。这不仅增加了维护负担,还使得互操作性变得困难,因为每个实现只支持格式的有限子集。
该项目的目标是创建一个新的 libmtree 库,实现 mtree 格式的所有功能,并封装为一个所有列出程序都可以使用的表达性 API。我们还希望 libmtree 具有可移植性,因为 mtree 格式的主要用户之一是 libarchive,它实现了大多数的 bsdtar 功能。
目前,库功能已完整,已准备好下载并吸引大家的关注。我们还决定将 mtree 程序与之捆绑。捆绑的 mtree 程序也已经为更好的可移植性进行了修改。
项目包括修改 libarchive、install 和 makefs 以使用 libmtree。这些修改过的版本也已经可用。
请参阅 Wiki 页面了解更多信息、下载位置以及使用 libmtree API 的示例。
该项目由 2015 谷歌编程之夏赞助。
测试和审查库代码及 API,及对程序所做的修改。
修复 Wiki 页面中提到的已知问题。
联系:Tiwei Bie <btw@FreeBSD.org> 联系:Hiren Panchasara <hiren@FreeBSD.org> 联系:George Neville-Neil <gnn@FreeBSD.org> 联系:Robert Watson <rwatson@FreeBSD.org>
该项目的目标是设计和实现基础设施,以验证网络堆栈的多个队列行为是否按预期功能运行。
目前,项目的大部分已经实现。它主要由两部分组成:
一个通用机制,用于收集每个环、每个 CPU 的统计数据,这些数据可以被所有网卡驱动程序使用,并扩展 netstat(1) 以报告这些统计数据。
一组网络堆栈行为测试程序,包含:
一个虚拟多队列以太网接口(vme)
基于 vme 的 UDP 数据包生成器
基于 socket(2) 的 UDP 服务器
基于 lwip 和 vme 的 TCP 客户端
基于 socket(2) 的 TCP 服务器
然而,它仍需进一步完善,以使其适合提交到 FreeBSD 主干。
该项目由 2015 谷歌编程之夏赞助。
联系:Colin Lord <clord@FreeBSD.org>
FreeBSD 引导加载器已经使用 Ficl 3 很长时间。该项目的目的是将使用的 Ficl 版本更新为 Ficl 4。Ficl 4 不仅速度更快,而且内存占用更小,这对于引导加载器来说是两个重要的优势。
作为谷歌编程之夏项目的一部分,我工作在导入 Ficl 4 源代码,以便让引导加载器运行 Ficl 4。夏季的前半部分是设置我的测试环境,整理树中的源代码位置,并修改构建文件以指向新的位置。完成这部分工作后,需要修改源代码,使其能够正确构建,并重新添加一些 FreeBSD 特有的 Ficl 3 部分。不幸的是,在完成这些任务后,发现了 Ficl 项目中的一些 bug,这延迟了引导加载器更新,因此项目未完成。Illumos 项目也遇到了类似的 Ficl 4 问题,因此我从他们那里得到了很多有用的建议,但由于开学,我没能投入太多时间修复 bug。
该项目由 2015 谷歌编程之夏赞助。
联系:Deb Goodkin <deb@FreeBSDFoundation.org>
FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于支持和推广 FreeBSD 项目及全球社区。资金来自个人和企业捐赠,用于赞助和管理开发项目、会议和开发者峰会,并为 FreeBSD 开发者提供差旅补助。基金会购买硬件以改进和维护 FreeBSD 基础设施,并发布 FreeBSD 白皮书和营销资料,促进、教育和宣传 FreeBSD 项目。基金会还代表 FreeBSD 项目执行合同、许可协议和其他需要合法实体的法律安排。
以下是我们上个季度为帮助 FreeBSD 所做的一些工作:
Anne Dickison 和 Deb Goodkin 参加了 OSCON,推广 FreeBSD。
Robert Watson 组织并主持了 2015 年剑桥 FreeBSD 开发者峰会(“BSDCam”)。我们为两位 FreeBSD 开发者提供了差旅补助,以便他们参加峰会。三位基金会董事会/员工成员也参加了会议。
George V. Neville-Neil 参加了 ARM 合作伙伴会议,会上与 15 家硅片和系统供应商会面,介绍 FreeBSD 的独特特性,并与那些构建和部署 ARM 硬件的公司建立合作关系。
George 和 Robert Watson 在剑桥合作,开发了更多基于 FreeBSD 的本科和硕士教学材料。部分项目资金由基金会提供。
George 计划并主持了 2015 年 vBSDCon 开发者峰会。
我们很自豪成为 2015 年 vBSDCon 的赞助商,会议于 9 月 11-13 日在华盛顿特区举行。George V. Neville-Neil 和 Ed Maste 在大会上发表了“支持 BSD 项目”的演讲。Dru Lavigne、Glen Barber、George V. Neville-Neil 和 Ed Maste 参加并代表基金会出席了 vBSDCon 和随后的 FreeBSD 开发者峰会。许多人在我们的展台停留并做出了捐款,这是一个与人面对面交流和合作的好机会。
Cheryl Blain 和 John Baldwin 在 2015 年 9 月 21-24 日于加利福尼亚州圣克拉拉举行的 SNIA 存储开发者大会上推广基金会和 FreeBSD。基金会也是该活动的赞助商。
我们赞助 Andy Turner 参加了 9 月 21-25 日在旧金山举办的 Linaro Connect。
Ed Maste,我们的项目开发总监,参加了在加拿大安大略省多伦多举行的 X.Org 开发者大会(XDC)。
我们赞助了 2015 年 nginx 大会,并派遣了 FreeBSD 社区成员 John Baldwin 参加。
George Neville-Neil 继续筹备 2015 年硅谷供应商峰会,并确保了场地。
Benedict Reuschling 和 Erwin Lansing 帮助筹划并组织了 EuroBSDCon FreeBSD 开发者峰会,包括设置工作组、确保场地,并制作 T 恤。
Benedict 帮助组织了 FreeBSD 黑客松,并与 Dru Lavigne 一起参加了在德国埃森的 Linuxhotel 举办的活动。这是一个成功的周末,大家修复了 bug 并与他人合作。
Dru Lavigne 于 7 月 29-31 日在德国柏林教授了 FreeBSD 课程。
我们是 2015 年 womENcourage 会议的赞助商,会议于 9 月 24-26 日在瑞典乌普萨拉举行。Dru 是关于“开源作为职业道路”小组讨论的主持人,所有小组成员都是 FreeBSD 贡献者,包括 Dan Langille、Allan Jude、Benedict Reuschling 和 Deb Goodkin。我们还在招聘会设有展台,与许多学生和教授讨论了将 FreeBSD 作为替代实习的好处、在大学课堂上教授 FreeBSD 以及在他们的学校举办 FreeBSD 活动。Dan 举办了“如何为开源项目做贡献”的工作坊。Deb 参加了这个工作坊,并启动了关于在 BSD 和非 BSD 会议上提供类似工作坊的讨论。该工作坊将名为“如何为 FreeBSD 做贡献”,参与者将学习如何为项目贡献文档。
我们继续发布每月通讯,保持社区了解我们所做的工作,包括事件回顾、推荐、项目更新和即将举行的活动。我们收到了来自 Microsoft、NYCBus 和 ScaleEngine 的推荐信。我们还继续与公司合作,获取他们对 FreeBSD 使用的推荐信。
Anne Dickison 重新启动了“FreeBSD 面孔”系列,并与 FreeBSD 贡献者一起编写他们的故事。她还继续制作更多的 FreeBSD 周边商品和宣传材料,推广 FreeBSD,并通过我们的社交渠道和新合作伙伴进行宣传。
我们达到了 2015 年的目标:10,000 位 FreeBSD Journal 订阅者,并在我们的网站上发布了新的 Open Journal 文章,帮助推广该期刊。我们还开始提供新的订阅捆绑包,你可以购买所有 2014 年的期刊。7/8 月号已发布。
Justin T. Gibbs 开始在科罗拉多州博尔德市的一所中学教授为期一学期的 FreeBSD 课程。我们正在使用 BeagleBone Black (BBB) 运行 FreeBSD,并将其连接到 Mac 和 PC。我们得到了来自内部以及项目的大力支持,以确保 FreeBSD 映像能够在 BBB 上运行,并与 Mac 和 PC 配合使用。这是与社区成员的一个伟大的合作努力,也将帮助未来的课程能够支持廉价的平台来教授 FreeBSD。
我们继续致力于创建 FreeBSD 课程,计划为半天的工作坊准备,预计将在春季末推出。
我们为项目提供了法律支持,包括授予某些用户和公司许可,以便他们将 FreeBSD 标志放置在其网站和营销材料上。
我们与商业用户会面,了解他们希望在 FreeBSD 中看到的功能,并帮助将 FreeBSD 开发者与商业用户连接,以促进合作。
FreeBSD 基金会员工和发布工程师 Glen Barber 在这个季度非常忙碌,参与了多个 FreeBSD 项目的关键工作。以下是一些亮点:
清理代码并修复多个发布构建代码部分的 bug,并完成了自动上传云提供商映像的支持,这些更新在代码冻结前合并到 stable/10 分支。10.2-RELEASE 的周期持续了 9 周,从代码冻结期开始。
与 FreeBSD 发布工程团队合作,发布了两版 BETA 构建和三版 RC 构建,10.2-RELEASE 的最终版本在 8 月中旬发布,提前两周完成。
与 FreeBSD 集群管理员团队合作,协助进行多个 FreeBSD 基础设施的更新和增强。
联系:Jason Edwards <jason@zfsguru.com>
ZFSguru 最初是 ZFS 的前端,但已发展成为一款多功能的服务器设备,具有其独特的功能。尽管该项目仍处于早期开发阶段,但它已经提供了其他项目所没有的多个独特功能。与类似的项目不同,ZFSguru 并未剥离基础操作系统的任何部分,这意味着 ZFSguru 行为上像一个普通的 FreeBSD 安装,因此非常灵活。其 Web 界面旨在将新手和高级用户结合在一起,提供易于使用的基本功能,也包括更有经验的用户所欣赏的高级功能。该项目的模块化特性有效防止了臃肿的问题,同时仍能轻松部署扩展功能。
2015 年 8 月 15 日,ZFSguru 发布了版本 0.3。新版本的一些亮点:
新的构建基础设施允许以半自动化的方式频繁发布系统映像和服务。
新的 GuruDB 数据库支持越来越多的系统映像和服务器,并提供良好的缓存以加速页面加载。
安装程序经过了全面的重构。
除了 LiveCD 之外,现在还提供 USB 映像。USB 映像支持传统的 MBR 启动代码和 UEFI 启动。
Web 界面中的许多库已被重构,此外还对 Web 界面进行了许多其他改进。
对可选附加服务做了许多改进,例如新的 Gnome 3 图形环境。
7 月、8 月和 9 月期间取得的其他进展:
已发布系统映像构建 001、002、003 和 004,适用于所有受支持的分支:10.0、10.1、10.2、10.3 (-STABLE) 和 11.0 (-CURRENT)。
开始了 0.4 版 Web 界面的开发,重点改进了 Web 界面的网络支持。
开始了新的 Web 界面视觉主题的开发。新界面可能会包含在即将发布的 0.4 版中。
正在准备新的主服务器,预计将在 12 月投入使用。
新网站正在开发中,预计将在 2016 年 1 月 1 日上线。
新的 Gnome 3 桌面并不适用于所有用户,仍然存在一些问题。任何能够诊断这些问题的人都可以尝试使用 Gnome 3 LiveCD。更多信息请参见链接的论坛帖子。
有几个 Port 在我们的构建基础设施中编译失败,需提交 bug 报告以便上游修复。
预计在第四季度发布“项目状态 2015”报告,为项目的未来发展提供概述。