本报告涉及了 2013 年 10 月至 12 月期间与 FreeBSD 相关的项目。这是 2013 年计划中的四份报告中的最后一份。
2013 年最后一个季度对 FreeBSD 社区来说非常活跃,就像之前的几个季度一样。FreeBSD 在 ARM 架构的系统芯片(如 Cubieboard、Rockchip、Snapdragon、S4、Freescale i.MX6 和 Vybrid VF6xx)上的运行取得了许多进展。FreeBSD 也在成为一个更好的 Xen 和亚马逊弹性计算云(Amazon Elastic Compute Cloud,简称 EC2)平台。FreeBSD 计划成为 OpenStack 的全支持计算主机。I/O 堆栈再次通过改进 CAM 和 GEOM 子系统以及更好地适应 UMA 缓存到系统内存约束对 ZFS 的支持,在多处理器系统上获得了性能提升。FreeBSD 基金会在本季度做得非常出色,许多他们赞助的项目,如 VT-d 和 UEFI 支持、iSCSI 堆栈、Capsicum 和 auditdistd 即将完成。同时,新的项目如 Automounter 和 Intel GPU 更新刚刚启动。Newcons 项目已并入-CURRENT,这将使我们能够最终在 Ports 中使用 X.Org 的最新版本。还在进行的工作包括通过 Jenkins 和 Kyua 改进测试。这是 FreeBSD 用户和开发者们激动人心的时刻!
感谢所有报告人员的出色工作!本报告包含 37 项内容,希望你喜欢阅读。
提交报告的截止日期是 2014 年 4 月 7 日,涵盖 2014 年 1 月至 3 月期间的内容。
联系人: FreeBSD 集群管理团队 <admins@>
FreeBSD 集群管理团队负责管理项目依赖的机器,以便于其分布式工作和通信的同步。在 2013 年最后一个季度,他们继续进行 FreeBSD 集群在所有站点的日常维护。
除了日常维护任务外,还处理了与集群相关的其他事项。一些事项包括:
为 Kyua 测试框架添加了几台机器。
更换了故障的硬件,托管各种 Web 服务。
与 FreeBSD 安全官和 Port 管理团队协调,实施了签名的二进制包。
将 redports.org 的机器添加到集群管理团队管理的机器列表中。
与 Yandex 的联系人开始讨论增加二进制包和 Subversion 代码库的镜像站点。
联系人: FreeBSD 核心团队 <core@FreeBSD.org>
FreeBSD 核心团队是该项目的董事会,负责决定项目的整体目标和方向,以及管理 FreeBSD 项目各个领域。
在 2013 年第四季度,核心团队终于实现了之前的目标——启动了基于 pkg(8) 的二进制软件包的官方仓库。核心团队还统一了所有项目仓库的提交权限到期政策,允许提交者在 18 个月内不活动,之后其提交权限将自动进入保管状态。接着,还对失去所有提交权限的提交者的集群账户进行了暂停扩展,这有助于通过暂时禁用不活动账户来提高项目服务器集群的安全性。除了上述努力,Thomas Abthorpe 还复兴了 Grim Reaper 服务,以帮助执行前述政策。
在 John Baldwin、佐藤広生等人的工作下,基本系统源代码中的许多许可证已被重新审视和清理。此外,核心团队希望通过引入定期的自动化许可证检查,并为开发者提供有关许可问题的指导方针,来改善这一情况。John Baldwin 和 David Chisnall 一直在指导 FreeBSD 图形团队的工作,帮助他们在与 FreeBSD 10.x 切换到 Newcons 协调的同时,迁移到 X.Org 和相关软件的较新版本。
对于 src 仓库来说,这是一个繁忙的季度。核心团队非常高兴地欢迎 Jordan K. Hubbard (jkh) 回归,他最近重返 FreeBSD 事业,并加入了 iXsystems,担任 FreeNAS 的项目经理和发布工程师。除此之外,还为新开发者提供了三个提交权限,两个提交者被升级,一个提交权限被暂时保管,另一个提交权限被重新激活。
联系人: FreeBSD Ports 管理团队 <portmgr@FreeBSD.org>
FreeBSD Ports 是 FreeBSD 操作系统的包管理系统,提供了一种简单且一致的方式来安装软件包。FreeBSD Ports 目前包含大约 24,500 个 Port,而 PR 数量已超过 1,900 个。
FreeBSD Ports 管理团队确保 FreeBSD Port 开发者社区提供一个功能齐全、稳定、最新的 Ports。其次要责任是协调提交者和开发者之间的工作。作为这些工作的部分内容,我们在 2013 年第四季度新增了三名提交者,收回了三名提交者的提交权限以进行保管,并重新启用了一个提交权限。
在测试大型更改方面持续进行努力,每周最多进行八次,包括对代码树的广泛更改、基础设施的现代化以及基本的质量保证(QA)测试。我们进行了多次 10.0-RELEASE 的测试,以确保发布时可以提供最大数量的软件包。
现在我们已经有了 8.3、8.4、9.1、9.2、10.0 和 -CURRENT 的 pkg(8) 包,托管在 pkg.FreeBSD.org 上。在这段时间里,pkg(8) 也进行了进一步增强,包括安全包签名功能。
从 11 月 1 日开始,Ports 管理团队启动了一个 portmgr-lurkers 试点项目,允许 Port 提交者志愿协助 Ports 管理团队,为期四个月。首批候选人是 Mathieu Arnold (mat) 和 Antoine Brodin (antoine)。
我们还在 redports.org 上进行持续维护,包括 QAT 测试、 Port 和安全更新。
如之前所述,许多 PR 仍在等待处理;我们希望看到一些提交者专注于关闭尽可能多的 PR!
http://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
http://lists.freebsd.org/mailman/listinfo/ctm-src-10
http://lists.freebsd.org/mailman/listinfo/ctm-src-10-fast
联系人: FreeBSD 邮件管理员团队 <postmaster@FreeBSD.org>
在 2013 年第四季度,FreeBSD 邮件管理员团队实现了以下事项,这些事项可能对公众有兴趣:
退役了 freebsd-aic7xxx 邮件列表。
创建了一个图形团队别名,应 Niclas Zeising 的要求。
与 FreeBSD Ports 管理团队合作,设置了 portmgr-lurkers,使 Port 管理员可以自行在这两个别名之间移动地址。
创建了与新的 stable/10 分支相关的列表:svn-src-stable-10、ctm-src-10 和 ctm-src-10-fast。
按 Bernhard Fröhlich 的要求,将 vbox 别名重定向到仿真列表。
继续讨论当前及可能的未来邮件和垃圾邮件过滤。
解散了 lua 邮件列表,并将其转交给 Baptiste Daroussin,应 Matthias Andree 和 Baptiste Daroussin 的要求。
修改了 ports-secteam 列表的版主/管理员,应 Dag-Erling Smørgrav 的要求。
协助 Warren Block 更新了提交者指南中的 “FreeBSD 的 OpenPGP 密钥” 部分。
联系人: FreeBSD 发布工程团队 <re@FreeBSD.org>
FreeBSD 发布工程团队正在完成 10.0-RELEASE 版本周期。由于两次临时发布候选版本的构建,每次构建都解决了最终版本中需要包含的重要修复,发布周期发生了变化。
预计 FreeBSD 10.0-RELEASE 版本周期将在 1 月中旬完成,大约比原计划晚了 8 周。
http://www.bsdstore.ru/
https://github.com/olevole/cbsd
联系人: Oleg Ginzburg <olevole@olevole.ru>
CBSD 是又一种 FreeBSD jail 管理解决方案,旨在将多种功能(如 racct(8)、vnet、zfs(8)、carp(4) 和 hastd(8))结合成一个工具。这提供了一种更全面的方式来构建应用服务器,使用预安装的 jail 和典型的软件集,并且配置工作量最小。
网站和文档的正确英文翻译。
联系人: Craig Rodrigues <rodrigc@FreeBSD.org>
在 2013 年 11 月的 FreeBSD 供应商峰会上,展示了 Craig Rodrigues 在 iXsystems 从事持续集成和测试工作的成果。Craig 的演讲描述了 iXsystems 如何使用现代最佳实践来构建和测试 FreeNAS 代码。Jenkins 是一个用于持续构建和集成的框架,数百家公司都在使用它。BHyve(BSD Hypervisor)是 FreeBSD 10 中将包含的新虚拟机系统。Webdriver 是一个用于测试 Web 应用程序的 Python 工具包。通过结合这些技术,iXsystems 正在开发一个现代化且复杂的工作流,用于测试和提高 FreeNAS 的质量。
FreeBSD 基金会的 Ed Maste 对这项工作表现出了兴趣,并基于此兴趣,正在将其移植到 FreeBSD。目前,FreeBSD 集群中已经为此分配了一台机器,并设置了基于 bhyve(4) 的虚拟机,并安装了 Jenkins。剩余工作仍在进行中。
完成 Jenkins 的设置。
向 Jenkins 添加更多构建。
将测试集成到 Jenkins。
联系人: Alexander Motin <mav@FreeBSD.org>
CAM 和 GEOM 多处理器可扩展性改进项目已完成。相关代码已提交至 FreeBSD 主干,并已合并至 stable/10 分支;将出现在 10.1-RELEASE 中。
作为该项目的一部分,cam(4)(ATA/SCSI 子系统)已进行了更细粒度的锁定,以更好地利用多核系统。此外,geom(4)(块存储子系统)的锁定也得到了优化,并且实现了新的直接调度功能,将负载分配到多个线程和处理器之间,并减少了上下文切换的次数。
感谢这些 cam(4) 和 geom(4) 的改动,在现代硬件上,峰值 I/O 速率已经翻倍,达到了 1,000,000 IOPS!
该项目由 iXsystems, Inc. 赞助。
一些 CAM 控制器驱动(SIMs)也可以进行优化,以便更好地利用这个项目,利用新的锁定模型和来自多个中断线程的直接命令完成。
链接
联系人: Adrian Chadd <adrian@freebsd.org>
过去六个月,iwn(4) 进行了大量工作:
新硬件支持:2xxx、6xxx、1xx 系列硬件。
修复了许多 bug,包括扫描、关联、EAPOL 相关的修复。
iwn(4) 现在通过 net80211 速率控制代码本地支持 802.11n 速率,而不再将非 11n 速率映射为 11n 速率。
由于 net80211 每次扫描一个频道,目前仍存在一些扫描挂起问题,需要解决。
发送、接收、扫描和校准代码需要从 if_iwn.c 中重构,移至独立的源文件。
似乎仍存在一些问题,特别是在 2.4 GHz 与 5 GHz 关联尝试时,可能会导致固件断言,尤其是在 Intel 4965 网卡上。
联系人: Konstantin Belousov <kib@FreeBSD.org>
该项目将更新 Intel 图形芯片组驱动程序 i915kms,更新为 Linux 上游代码的最新快照。该更新将提供至少 1.5 年的 Intel 团队的 bug 修复,并引入对最新硬件的支持,特别是 Haswell 和 ValleyView。IvyBridge 的代码也将进行更新。此外,还计划添加一些更新 X.Org 和 Mesa 所需的功能。
该项目由 FreeBSD 基金会赞助。
https://wiki.freebsd.org/Native%20iSCSI%20target
联系人: Edward Tomasz Napierała <trasz@FreeBSD.org>
iSCSI 是一种流行的块存储协议。在这个项目下,已经实现了一个新的、快速且可靠的基于内核的 iSCSI 启动器(客户端)和目标(服务器)。
在 10 月到 12 月期间,工作重点是性能和可扩展性。目标和启动器现在将负载分配到多个内核线程上,并且锁定已被优化,以减少竞争。这使得多核处理器得到了更好的利用。
iSER 支持的工作仍在进行中。所有这些优化将逐步合并到主干,预计在 2 月合并,并最终合并到 stable/10 中,最后出现在 10.1-RELEASE 中。
该项目由 FreeBSD 基金会赞助。
联系人: Edward Tomasz Napierała <trasz@FreeBSD.org>
已经开始研究和原型化一个新项目,旨在实现 autofs(4) —— 一个自动挂载文件系统 —— 及其用户空间对应程序 automountd(8)。该项目的目标是提供与 Linux、MacOS X 和 Solaris 上的自动挂载程序非常相似的用户体验,包括使用相同的映射格式。自动挂载程序还将与目录服务(如 LDAP)集成。
该项目由 FreeBSD 基金会赞助。
联系人: Ed Maste <emaste@FreeBSD.org>
统一可扩展固件接口(UEFI)为 x86 计算机提供启动和运行时服务,是传统 BIOS 的替代品。此项目将使 FreeBSD 加载器和内核启动过程适应现代服务器、桌面和笔记本电脑中使用的 UEFI 固件。
在 2013 年,FreeBSD 基金会赞助了 Benno Rice 完成一个小项目,旨在改进 UEFI 启动加载程序。最终成果是在 UEFI 项目分支中完成了一个可行的概念验证,但还没有准备好合并到 FreeBSD 主干中。
Ed Maste 继承了这个原始工作,并在 Konstantin Belousov 的审查反馈下,开始准备将其集成到 FreeBSD 主干中。一些更改已经合并到主干,剩余的更改将在进一步完善后合并。
Intel 提供了一块主板和 CPU,用于该项目,这对解决在使用 QEMU 模拟器测试时未出现的 bug 非常有帮助。
该项目由 FreeBSD 基金会赞助。
解决 32 位与 64 位 libstand(3) 构建问题。
合并内核解析 EFI 内存映射元数据。
将 EFI 帧缓冲与 vt(9)(也称为 Newcons)集成。
将 efiloader 连接到构建流程。
记录双启动配置的手动安装方法。
将 UEFI 配置与 FreeBSD 安装程序集成。
支持安全启动。
联系人: Alexander Motin <mav@FreeBSD.org>
在 FreeBSD 中,ZFS 和 NFS 的性能曾经不理想,因此我们最近调查了一些可能的改进路径。uma(9) 内存分配器缓存代码已得到改进,更好地适应系统内存的限制。结合前几年在虚拟内存子系统方面做出的其他改进,现在可以安全地使用 uma(9) 缓存。在 ZFS 中,ZIO/ARC 的使用可以通过 vfs.zfs.zio.use_uma 加载器(8) 调整参数来启用,amd64 架构默认启用,推荐使用。在所有架构上,uma(9) 缓存用于 LZ4 压缩缓冲区,且不受限制地启用,因为它没有严重的缺陷。在具有多个 CPU 的系统上,这些更改使基准测试的性能翻倍。
NFS 服务器栈的多个区域(RPC、FHA、DRC)获得了许多修复和性能优化,显著提高了性能,并在多个测试中减少了 CPU 使用率。结合上述 ZFS 内存分配器的更改,成功达到了 200K NFS 块读取 IOPS 和 55K SPEC NFS IOPS。
这些代码已提交到主干。uma(9) ZFS 的提交已经合并到 stable/10,剩余的也将在不久后合并。
该项目由 iXsystems, Inc. 赞助。
在收到较为密集的 READDIRPLUS NFS 请求时,SPEC NFS 测试会遇到文件系统层面多个全局锁的锁竞争问题。修复此问题可以进一步提高大型系统的性能。
联系人: Aleksandr Rybalko <ray@FreeBSD.org> 联系人: Ed Maste <emaste@FreeBSD.org> 联系人: Ed Schouten <ed@FreeBSD.org>
通常称为 Newcons,vt(9) 是现有的、较老的虚拟终端仿真器 syscons(4) 的现代替代品。该项目最初是由于 syscons(4) 缺乏 Unicode 支持而开始的,后来扩展以支持内核模式切换(KMS)的新需求。
该项目现在接近完成,并已准备好进行更广泛的测试,因为相关代码已合并到 FreeBSD 主干中。因此,可以通过在内核配置文件中替换以下两行来轻松测试 vt(9):
替换为:
主要亮点:
支持 Unicode。
支持 CJK 字符的双宽字符。
类 xterm(1) 的终端仿真。
支持内核模式设置(KMS)驱动程序(i915kms、radeonkms)。
支持每个终端窗口使用不同的字体。
简化的驱动程序。
受支持架构和硬件的简要状态:
amd64(VGA/i915kms/radeonkms)— 工作正常。
ARM 帧缓冲 — 工作正常。
i386(VGA/i915kms/radeonkms)— 工作正常。
IA64 — 未测试。
MIPS — 未测试。
PPC 和 PPC64 — 工作正常,但尚未支持 X.Org。
SPARC — 在某些硬件上工作正常(例如,Ultra 5)。
vesa(4) — 进行中。
i386/amd64 nVidia 驱动程序 — 需要测试。
Xbox 帧缓冲驱动程序 — 需要测试。
已知问题:
从 X.Org 切换到 vty0 时,遇到严重错误事件将无法工作。
某些硬件(例如 Lenovo X220)在 i915kms 预加载时会出现黑屏。
滚动可能较慢;
更改字体时,屏幕边界未清除。
在 VirtualBox 中使用 gallant12x22 字体时 vt(9) 会发生死锁。
该项目由 FreeBSD 基金会赞助。
在 /usr/share/ 下为 vt(9) 创建子目录,用于存储键盘映射和字体。
实现 vidcontrol(1) 支持的剩余功能。
编写 vt(9) 手册页。
支持由设备 kbd 直接处理的键盘(无需 kbdmux(4))。
CJK 字体(进行中)。
联系人: Grzegorz Bernacki <gjb@semihalf.com> 联系人: Michał Dubiel <md@semihalf.com> 联系人: Rafał Jaworowski <raj@semihalf.com>
OpenStack 是云操作系统,可以控制数据中心的大型计算、存储和网络资源。OpenContrail 是一个网络虚拟化(SDN)解决方案,包括一个网络控制器、一个虚拟路由器和一个分析引擎,可以与 OpenStack 或 CloudStack 等云编排系统集成。
此项工作的目标是使 FreeBSD 成为 OpenStack 的完全支持计算主机,并使用 OpenContrail 虚拟化网络。主要开发领域如下:
OpenStack 计算驱动程序(nova-compute)用于 FreeBSD bhyve(4) 虚拟机管理程序。
OpenContrail vRouter(转发平面内核模块)移植到 FreeBSD。
集成和性能优化。
目前的开发状态包括一个在 FreeBSD 主机上运行的 OpenStack 演示,计算节点组件正在运行:
本地的 bhyve(4) 虚拟机管理程序通过 nova-compute 组件启动客户实例,并通过 nova-network 组件提供客户之间的简单网络连接。
nova-network 方法(基于本地主机桥接)在 OpenStack 中已经逐渐过时,仅用于演示和概念验证目的,而未探索所有可能的功能。
主要目标是转向基于 OpenContrail 的网络,从而与现代 OpenStack 网络 API(“neutron”)兼容。
该项目由 Juniper Networks, Inc. 赞助。
决定如何将 bhyve(4) 与 nova-compute 集成,既可以通过本地方式,也可以通过 libvirt 管理层集成。
联系人: Ganbold Tsagaankhuu <ganbold@FreeBSD.org>
Cubieboard 是一款基于 AllWinner A10 SoC 的单板计算机,广泛应用于廉价平板电脑、手机和媒体 PC。第二版的主要改进是将 AllWinner A10 SoC 替换为 AllWinner A20,后者包含 2 个 ARM Cortex-A7 MPCore CPU 和 2 个 Mali-400 GPU(Mali-400MP2)。在过去几个月里,FreeBSD 移植工作继续进行,EMAC 10/100 以太网驱动程序也做了一些工作(见链接)。该驱动程序现在状态良好,但 RX 端速度较慢,且需要一个外部 DMA 驱动程序来在这种情况下使用。
联系人: Ian Lepore <ian@freebsd.org>
i.MX 系列是 Freescale 半导体公司为多媒体应用设计的一系列基于 ARM 架构的微处理器,重点是低功耗。i.MX6x 系列基于 ARM Cortex A9 单核、双核或四核。对此的初步支持已提交到主干,并合并到 stable/10。i.MX6 系列所有成员(单核、双核和四核)都已得到支持,但多核 SoC 上的 SMP 支持尚未启用。
初步的驱动程序支持包括:
USB(EHCI)
以太网(千兆)
SD 卡
串口
初步硬件调试在 Wandboard 硬件上进行,更多信息请查看链接部分的 freebsd-arm 上的公告。
为其他片上硬件编写驱动程序,包括 I2C、SPI、AHCI、音频和视频。
为 FreeBSD-crochet 脚本添加支持,生成 Wandboard 映像。
http://svnweb.freebsd.org/changeset/base/258057
联系人: Ruslan Bukin <br@freebsd.org>
为 Freescale Vybrid VF6xx 异构 ARM Cortex-A5/M4 系统芯片(SoC)添加了基本的支持,并提交到 FreeBSD 主干。Vybrid VF6xx 系列是基于 Cortex-A5 架构的新型低功耗 ARM SoC 板的实现。Vybrid 设备非常适合用于简单的人机界面(HMI)应用、工业设备的安全控制、能量转换应用(如电动机驱动和电源逆变器)、坚固的有线和无线连接,以及控制如机器人和工业车辆等移动电池驱动系统。
已支持的设备驱动程序:
NAND 闪存控制器(NFC)
USB 增强主机控制器接口(EHCI)
通用输入输出(GPIO)
通用异步收发传输器(UART)
还支持:
通用中断控制器(GIC)
MPCore 定时器
ffec 以太网驱动程序
为多种基于 VF5xx 和 VF6xx 的开发板添加支持。
扩展设备驱动程序支持,包括帧缓冲和其他设备。
http://svnweb.freebsd.org/changeset/base/256949
联系人: Ganbold Tsagaankhuu <ganbold@FreeBSD.org>
Rockchip 是一系列主要用于嵌入式系统应用的 SoC(系统级集成电路),广泛应用于智能手机、平板电脑、电子书、机顶盒、媒体播放器、个人视频播放器和 MP3 播放器等移动娱乐设备。由于其从 MP3/MP4 播放器市场的演变,大多数 Rockchip IC 都具有先进的媒体解码逻辑,但缺乏集成的蜂窝无线电基带。对 Rockchip RK3188(四核 Cortex A9)SoC 的初步支持已提交到主干。现在,FreeBSD 已在 Radxa Rock 上运行,并支持以下外设:
已存在的 DWC OTG 驱动程序(主机模式)
GPIO
还进行了一些工作,支持 Qualcomm Snapdragon S4 SoC,该 SoC 特点是 Krait CPU,作为智能手机、平板电脑和智能书设备的“平台”使用。Krait 与 ARM Cortex-A15 CPU 非常相似,也基于 ARMv7 指令集。编写了一个最小的控制台驱动程序,现在可以在串行控制台上看到 FreeBSD 的启动信息。定时器驱动程序也正常工作,启动现在停留在 mountroot 提示符处。
联系人: Colin Percival <cperciva@freebsd.org>
Amazon 机器镜像(AMI)是一种特殊类型的虚拟设备,用于在 Amazon 弹性计算云("EC2")内创建虚拟机。它作为 EC2 服务部署的基本单元。此类 AMI 可用于 8.3-RELEASE 及以后的 FreeBSD 版本,以及 FreeBSD 10.0 的每个 ALPHA、BETA 和 RC。从 FreeBSD 10.0-BETA1 开始,FreeBSD/EC2 镜像运行“完全支持”的 FreeBSD 二进制文件,并且从 FreeBSD 10.0-RC1 开始,FreeBSD/EC2 镜像包括一个“configinit”系统,用于通过 EC2 用户数据进行自动配置。
由于旧实例类型(m1、m2、c1、t1)的限制,这些实例类型需要使用“Windows”标签的镜像;但是,所有最近的实例类型——m3(通用)、c3(高 CPU)和 i2(高 I/O)——都支持以“unix”价格使用 FreeBSD。
该平台的维护者认为它已经准备好用于生产环境。
将构建 FreeBSD AMI 的任务移交给发布工程团队。
争取亚马逊将“FreeBSD”添加到 EC2 支持的平台列表中,以便它不再显示为“Other Linux”。
联系人: Roger Pau Monné <royger@FreeBSD.org> 联系人: Justin T. Gibbs <gibbs@FreeBSD.org>
Xen 是一个原生(裸金属)虚拟机监控程序,提供服务,允许多个计算机操作系统在同一计算机硬件上并发执行。Xen 4.4 将引入一种名为 PVH 的虚拟化模式——在 HVM(完全虚拟化)容器中的 PV(半虚拟化)。这本质上是一个使用半虚拟化驱动程序进行启动和 I/O 的半虚拟化客户端。除此之外,它还使用硬件虚拟化扩展,无需仿真。
在合并了改善 Xen PVHVM 支持的更改后,工作已转向使 FreeBSD 支持 PVH DomU。补丁已发布,并经过几轮审查,补丁系列看起来已接近准备好合并到主干。此外,FreeBSD PVH Dom0 支持的初步补丁也已发布。目前发布的系列仅专注于使 FreeBSD 作为 Dom0 启动并能够与硬件交互。
该项目由 Citrix Systems R&D 和 Spectra Logic Corporation 赞助。
完成对 PVH DomU 支持的审查并提交。
开发 PVH Dom0 支持。
http://svnweb.freebsd.org/changeset/base/257251
http://svnweb.freebsd.org/changeset/base/259512
联系人: Konstantin Belousov <kib@FreeBSD.org>
输入/输出内存管理单元(IOMMU)是一种内存管理单元(MMU),它将支持直接内存访问(DMA)的 I/O 总线连接到主内存;因此,I/O 虚拟化由芯片组执行。一个 IOMMU 的示例是图形地址重映射表(GART),该表由 AGP 和 PCIe 显卡使用。英特尔已发布了一种名为虚拟化技术的 IOMMU 技术规范,用于定向 I/O,简称 VT-d。
VT-d 驱动程序已提交到主干和 stable/10,因此 busdma(9) 现在可以利用 VT-d。此功能默认禁用,但可以通过 loader(8) 可调选项 hw.dmar.enable
启用——有关更多信息,请参见链接。接下来的计划包括通过测试并为特定问题提供解决方案来增加对这种硬件的支持,并添加下一代英特尔 IOMMU 的功能。希望现有和新的 VT-d 用户将很快开始使用该驱动程序。
该项目由 FreeBSD 基金会赞助。
联系人: Pawel Jakub Dawidek <pjd@FreeBSD.org>
auditdistd(8) 守护进程负责通过 TCP/IP 网络安全且可靠地分发审计日志文件。目前,守护进程使用传输层安全性(TLS)进行通信,但仅验证服务器端证书,基于证书的指纹。正在进行的工作将使其能够使用客户端证书,并支持更完整的公钥基础设施,包括在每个级别上验证整个证书链,包括撤销检查。今后,auditdistd(8) 将仅支持 TLSv1.2 和 PFS 模式。此外,还将能够将审计日志文件发送到多个接收方。
该工作预计将于 2014 年 2 月初完成。
该项目由 FreeBSD 基金会赞助。
联系人: Pedro Giffuni <pfg@FreeBSD.org>
FreeBSD 基本系统中的 GCC 编译器正在逐步弃用,目前仅在一些 Tier-2 平台上使用。虽然 Clang 在许多方面更优秀,但在完全弃用 GCC 之前,我们仍无法使用它带来的所有新功能。作为一个过渡解决方案,来自 Apple GCC 和其他来源的多个 bug 修复和特性已被移植到我们版本的 GCC 4.2.1,以提高与 Clang 的兼容性。FreeBSD 的 GCC 增加了更多警告和一些增强功能,如 -Wmost 和 -Wnewline-eof。现在还提供了 Apple 的 blocks 扩展的实现,这对增强 FreeBSD 对 Apple Grand Central Dispatch(GCD)的支持非常有用。
正在考虑将主干的更新合并到 stable/9,但这会默认禁用嵌套函数,因此需要评估对 Ports 的影响。
不再计划在基本系统中继续开发 GCC 4.2。
联系人: Allan Jude <freebsd@allanjude.com> 联系人: Devin Teske <dteske@FreeBSD.org> 联系人: Warren Block <wblock@FreeBSD.org>
BSDInstall 自 FreeBSD 9.0-RELEASE 起成为默认的安装程序,但它无法利用 FreeBSD 最优秀的特性之一——ZFS。
ZFSBoot 项目始于 2013 年 EuroBSDCon,并于 12 月达到稳定状态,刚好赶上 FreeBSD 10.0-RELEASE。目前,ZFSBoot 实现了根文件系统在 ZFS 上,并支持 4k 分区对齐、可选强制 4k 扇区、可选 geli(8) 全盘加密和启动环境支持。
作为 ZFSBoot 的一部分,BSDInstall 本身也进行了多次更新,包括增强的调试功能、更多脚本化支持、新的键盘映射选择菜单,以及其他一些小改动,以简化安装过程。新的键盘映射菜单允许用户在继续之前测试所选的键盘映射,确保它是期望的映射。网络配置对话框也做了一些小改动,使无线接口的识别更加简便。
还计划一些附加功能。用户应能够在交互式菜单中创建附加数据集并调整所有数据集的属性。还应集成 BSDConfig,以允许用户安装软件包以及其他先前由 sysinstall 提供的功能。
交互式数据集编辑器。
数据集属性编辑器。
考虑使用 shell geom(4) 解析器。
BSDConfig 集成。
将 UFS 作为文件系统选项,允许用户创建加密的 UFS 安装。
可选地将启动池设为 UFS 或驻留在 USB 设备上。
进一步简化安装过程。
http://freebsdfoundation.blogspot.com/2013/12/freebsd-foundation-announces-capsicum.html
联系人: Pawel Jakub Dawidek <pjd@FreeBSD.org>
Capsicum 是一款轻量级的操作系统能力和沙箱框架,实现了混合能力系统模型。Casper 守护进程使沙箱应用程序能够使用通常在能力模式沙箱中不可用的功能。
Casper 守护进程、libcasper、libcapsicum(3)、libnv(3) 以及 Casper 服务(system.dns、system.grp、system.pwd、system.random 和 system.sysctl)已经提交到 FreeBSD 主干。主干中的 tcpdump(8) 工具现在使用 system.dns 服务进行 DNS 查询。主干中的 kdump(1) 工具现在使用 system.pwd 和 system.grp 服务将用户和组标识符转换为用户和组名称。
目前正在进行的工作包括将更多应用程序进行沙箱化。如果你有兴趣帮助提高 FreeBSD 的安全性,并想了解 Capsicum 和 Casper,可以随时联系 Pawel——他可以提供需要沙箱化的候选程序。
该项目由 FreeBSD 基金会赞助。
联系人: Colin Percival <cperciva@freebsd.org>
通过 sysutils/panicmail Port,现在已经建立了一种机制,用于自动提交内核 panic 报告到一个中央位置。希望这能像其他操作系统中的类似系统一样有用,帮助开发人员识别常见的 panic,从而更快地解决问题。
在这个机制启用的前两个月,已经报告了 28 次内核 panic。虽然这个数量还远远不够,但仍然鼓励读者安装 sysutils/panicmail Port 并按照说明启用它。
获取更多系统设置为自动提交 panic 报告!
联系人: Julio Merino <jmmv@FreeBSD.org>
FreeBSD 测试套件项目旨在为 FreeBSD 提供一个全面的测试套件,既易于开箱即用,也适用于系统开发过程中。测试套件安装在 /usr/tests/ 中,使用 kyua(1) 命令行工具(在 Ports 中的 devel/kyua)来运行。
拥有一个易于使用并且可以持续运行的测试套件的好处是显而易见的:回归问题可以更早发现,发布工程团队可以在决定发布之前更好地评估代码树的质量。此外,由于我们选择安装测试程序,我们允许任何终端用户在其特定硬件配置上对新安装的系统进行基本检查——这是部署生产服务器时非常有吸引力的功能。
在过去的几个月里,我们已向构建系统添加了支持构建和安装各种类型测试程序的必要部分。为了展示这些功能,添加了一些测试程序,并将其他程序从旧的测试树(tools/regression/)迁移到新的测试布局中。
当前的测试套件应视为一个概念验证:它仅由一小组测试程序组成,目标是在大规模迁移现有测试代码和/或导入外部测试之前,先搭建好基础设施。
作为这项工作的组成部分,发布了两个新的 Kyua 版本。特别值得关注的是,新增了一个符合 TAP 的后端,以便现有的 tools/regression/ 中的测试可以最小化努力地集成到测试套件中。
截至 12 月 31 日,基础的持续测试基础设施已启动并运行,请参见链接部分查看主页。有关更多信息,请参阅相关公告和博客文章(也在链接部分)。
我们有三台机器用于测试集群。目前,只有一台机器在使用中,持续测试 amd64 架构的主干和 stable/10。我们需要弄清楚如何合理地并行使用其他机器——但初步简单的方法可能是测试不同架构(借助 QEMU)。
与上述任务相关,Kyua 报告引擎需要进行大量调优,以使报告更加简洁和清晰。理想情况下,Kyua 应该能够将不同运行的结果合并到一个位置,并生成连贯的报告。修复这一问题是高优先级任务。
已提议在 AsiaBSDCon 2014 上进行关于为 FreeBSD 编写测试的教程。提案的结果尚未确定,但敬请关注!
移植更多测试到新的测试套件中。一个测试套件如果不验证内容,那就是无用的。我们会在所有基本功能完成并简化迁移过程后,发布帮助请求。
https://wiki.freebsd.org/lldb
联系人: Ed Maste <emaste@FreeBSD.org>
LLDB 是 LLVM 项目家族中的调试器。它支持 Mac OS X、Linux 和 FreeBSD,并正在进行对 Windows 的支持工作。
在 2013 年的最后一个季度,LLDB 获得了对 FreeBSD 上多线程进程的实时(基于 ptrace(2))调试支持。初步的 FreeBSD MIPS 目标支持也已提交,同时对 LLDB 基础设施进行了许多字节序修复。
FreeBSD 树中的 LLDB 快照已更新至 r196322。目前默认禁用,计划在 Clang 3.4 导入后启用 amd64 架构。暂时,可以通过在 src.conf(5) 中添加 WITH_LLDB=
来启用。
该项目由 DARPA/AFRL、SRI International 和剑桥大学赞助。
更新树内快照,以便在 Clang 3.4 导入后构建。
修复 amd64 断点。
测试并修复 i386 平台。
实现 FreeBSD ARM 支持。
添加内核调试支持(实时本地和远程调试,以及核心文件调试)。
修复剩余的测试套件故障。
在 amd64 架构上默认启用。
联系人: FreeBSD Python 团队 <python@FreeBSD.org>
Python 是一种广泛使用的通用高级编程语言。对于许多操作系统来说,Python 是标准组件;它也随 FreeBSD 一起提供。在过去的一个季度里,FreeBSD Python Port 方面取得了许多进展。
devel/py-distribute Port 已被更新的 devel/py-setuptools Port 所替代,后者带来了许多功能,简化了安装 Python 包的方法。这个更改还促使我们现在通过 Setuptools 安装所有内容,这与 PyIP 有些相似,并允许我们对 distutils 安装行为进行一些重要的清理。
隐式的 lang/python 构建和运行时依赖已从 Ports 基础设施中移除。现在每个 Port 都依赖于特定的 Python 版本,或者依赖于 lang/python 元 Port。这防止了依赖 Python 2.x 或 Python 3.x 且仅使用 python 命令的 Port 出现兼容性问题,因为该命令可能指向用户选择的一个不兼容的版本。
lang/python27 Port 已更新到版本 2.7.6,lang/python33 Port 已更新到版本 3.3.3,lang/pypy Port 已更新到版本 2.2.1。
我们目前正在为同一个 Port 支持不同的 Python 版本工作相关基础设施。大部分工作已经完成,正在进行测试,待确认无误后即可集成。
制定高层次且轻量级的 Python Port 政策。
添加对更细粒度依赖关系的支持(例如 >=1.0 或 <2.0)。
探索如何添加 pip 支持。
将所有 USE_PYDISTUTILS=easy_install 条目转换为 yes,并移除 Ports 基础设施中的 easy_install。
更多任务请参见团队的 Wiki 页面(见链接)。
联系人: FreeBSD GNOME 团队 <gnome@FreeBSD.org>
GNOME 是一种桌面环境和图形用户界面,运行在计算机操作系统之上。GNOME 是 GNU 项目的一部分,可以与各种类 Unix 的操作系统一起使用,包括 FreeBSD。
在本季度,MATE 1.6 终于被导入到 Ports 中,这要感谢 Jeremy Messenger 的努力。MATE 是一个从现已不再维护的 GNOME 2 代码库分叉出来的桌面环境,因此它基本上是 GNOME 2 的替代品。希望保留 GNOME 2 作为桌面的用户被建议切换到 MATE,因为 GNOME 2 将在不久的将来被 GNOME 3 替代。这个切换会提前宣布,以便人们有时间转移到 MATE,如果他们还没有这么做的话。完整的基于 MATE 的桌面环境可以通过 x11/mate Port 安装,或者如果需要最小化安装,可以通过 x11/mate-base。
我们的主页相当过时,正在进行 GNOME 3.6 的更新。部分更新工作包括将旧的 GNOME 移植指南重写并更新为《Porter's Handbook》的一章。
另一个为 FreeBSD 上的前沿 GNOME 构建做好准备的重要任务是迁移到 JHbuild,并添加一些自定义规则。这是为了更快速地发现并修复其他 BSD 系统上的编译问题。
仍需整理 GNOME 2 Port,评估哪些 GNOME 2 组件将被删除或用其更新的 GNOME 3 版本替换。此任务当前暂停,直到我们能将文档整理到足够好的程度,以便收集问题并记录迁移过程,包括如何在不希望进行升级时避免迁移。(这并不意味着我们不希望了解有关升级的问题)。
帮助 X11 团队处理 Cairo 1.12,因为下一个版本的 GNOME 3(3.12)将需要更新版本的 Pango 和 GTK 3。
联系人: KDE FreeBSD 团队 <kde@FreeBSD.org>
KDE 是一个国际自由软件社区,开发了一整套跨平台应用程序,旨在运行在 Linux、FreeBSD、Solaris、Microsoft Windows 和 OS X 系统上。KDE/FreeBSD 团队继续改善 KDE 软件和 Qt 在 FreeBSD 上的使用体验。
在过去的一个季度里,团队保持了大多数 KDE 和 Qt Port 的更新,涉及的版本包括:
KDE SC (area51): 4.11.2, 4.11.3, 4.11.4
Qt: 4.8.5 和 5.2 (area51)
PyQt: 4.10.3;SIP: 4.15.2;QScintilla2: 2.8
Qt Creator 2.8.0
KDevelop: 4.5.2
Calligra: 2.7.5
CMake: 2.8.12, 2.8.12.1
因此,根据 PortScout 的数据,我们的团队现在有 464 个 Port (比 473 个有所减少),其中 88.15% 的 Port 是最新的(比 98.73% 略有下降)。iXsystems Inc. 继续为团队提供机器,用于构建包和测试更新。iXsystems Inc. 已为 KDE/FreeBSD 团队提供支持相当长一段时间,我们对此非常感激。
像往常一样,团队一直在寻找更多的测试人员和 Port 移植者,所以请联系我们或访问我们的主页(见链接)。在以下任务上,更多的帮助尤为有用:消除对已废弃的 HAL 项目的依赖,并提供与 KDE 的 Bluedevil 蓝牙接口的集成。
更新过时的 Port,详见链接中的列表。
继续推进 KDE 4.12 和 Qt 5。
确保整个 KDE 堆栈(包括 Qt)与 Clang 和 libc++ 正常构建和工作。
移除对 HAL 的依赖。
联系人: Gerald Pfeiffer <gerald@FreeBSD.org> 联系人: David Naylor <dbn@FreeBSD.org>
Wine 是一个自由和开源的软件应用程序,旨在允许为 Microsoft Windows 设计的应用程序在类 Unix 操作系统上运行,如 FreeBSD。Wine/FreeBSD 团队继续改善 Wine 在 FreeBSD 上的使用体验。
在 2013 年第四季度,团队通过移植更新了 Wine:
稳定版本:1.6 和 1.6.1
开发版本:1.7.4 到 1.7.8
这些 Port 包括为 amd64 架构构建的包(可通过 Ports 获取)。
Wine Port 已经随着 Ports 的变化保持更新,并且做了一些改进:
默认使用 Clang 构建(通过 USES=compiler:c11)。
条件性的 X11 支持(默认启用;允许 Wine 的无头实例)。
支持 Staging 和其他 Port 最佳实践。
需要支持以改善 Wine 在 FreeBSD 上的体验。关键领域包括修复回归问题、添加复制保护方案支持以及修复在 FreeBSD/amd64 上使用 Wine 时的回归问题。
打开任务和已知问题(详见维基页面)。
FreeBSD/amd64 集成(详见 i386-Wine 维基页面)。
移植 WoW64 和 Wine64。
联系人: FreeBSD X11 团队 <x11@FreeBSD.org>
新的图形栈 (WITH_NEW_XORG) 现在在 head 上默认构建,并作为二进制包通过官方的 FreeBSD pkg(8) 仓库提供给 11-CURRENT。主要更新如下:
X.Org 服务器 1.12。
Mesa 9.1。
最新的 Intel 和 Radeon X.Org 驱动,完全使用 FreeBSD 9.x(Intel)和 FreeBSD 10.x(Radeon)中提供的 KMS 内核驱动。
这一变化使得 X.Org 在基于最近的 Intel 和 Radeon GPU 的工作站和笔记本电脑上可以开箱即用。FreeBSD 10.x 将在几周或几个月内跟进。
一些软件开始要求 Cairo 1.12,例如 GTK+ 3.10 和 Pango。不幸的是,这个版本的 Cairo 会触发旧 Intel 驱动(2.7.1,当未设置 WITH_NEW_XORG 时安装)的一个错误,导致显示故障。关于这一点,已在 freebsd-x11 邮件列表上发布了 "Call For Testers" 邮件(见链接),以收集有关其他配置(新 Intel 驱动和非 Intel 驱动)的行为信息。截至撰写本文时,收到的报告表明有改进,或者至少没有注意到变化。
为了更好地管理像 WITH_NEW_XORG 和上面提到的 Cairo 1.12 之类的变化,我们在 freebsd-x11 邮件列表上询问是否有人仍然在桌面计算机上使用 FreeBSD 8.x,并询问为何不升级到 FreeBSD 9.x 或 10.x。截至目前,我们收到的答案很少。
FreeBSD 10.x 中的 Radeon KMS 驱动现在被认为是稳定的,尤其是在集成 GPU 已正确初始化之后。接下来的步骤之一是将其合并到 stable/9 中。
创建了一个 "Graphics" 维基文章(见链接),以集中和协调 Port 和内核方面的工作。它包含以下重要信息:
团队的路线图。
支持的硬件矩阵。
升级到 KMS 的指南。
项目状态和结果。
这个起始页面指向项目和主题特定的文章,那里有更详细的信息。
报告为什么你仍在桌面上使用 FreeBSD 8.x,为什么不能升级到 FreeBSD 9.x 或 10.x。
报告在你的系统上更新 Cairo 1.12 的情况。
请查看 “Graphics” 维基页面以获取最新信息。
联系人: FreeBSD Xfce 团队 <xfce@FreeBSD.org>
Xfce 是一款自由软件桌面环境,适用于 Unix 和类 Unix 平台,如 FreeBSD。它旨在快速、轻量,同时保持视觉吸引力和易用性。FreeBSD Xfce 团队在本季度保持了大多数 Xfce Port 的更新,并修复了许多问题。
目前,以下组件及其版本可用:
应用程序:
Orage (4.10.0)
Midori (0.5.6)
xfce4-terminal (0.6.3)
xfce4-parole (0.5.3, 0.5.4)
面板插件:
xfce4-whiskermenu-plugin (1.2.0, 1.2.1, 1.2.2, 1.3.0)
xfce4-mailwatch-plugin (1.2.0)
xfce4-wmdock-plugin (0.6.0)
我们帮助 Midori 的上游从 Waf(Python 脚本)切换到 CMake。Xfce 现在也支持 Gtk2、Gtk3 和新的 WebKitGtk API,后者来自 2.x 分支,目前在我们的 Ports 中尚不可用。大多数 Port 现在使用阶段目录,只有一些插件尚未转换。
我们还移除了过时的 Port :
x11-themes/lila-xfwm4 (Xfwm4 主题)
multimedia/xfce4-media (多媒体播放器)
net-im/xfce4-messenger-plugin
此外,我们密切跟踪了 Xfce 核心组件和 Parole 的开发。请参阅链接以获取有关如何升级这些库的文档。
修复 Midori 在 DragonFly 上的构建,通过 DPorts。
修复 Granite 框架(它是 Gtk 的扩展,Midori 使用它)在 FreeBSD 10 和 head 上的构建。这些主要是 LLVM 错误。
为 Orage 添加对 Berkeley DB 5 及更高版本的支持。
联系人: Deb Goodkin <deb@FreeBSDFoundation.org>
FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于支持和推广全球 FreeBSD 项目和社区。大部分资金用于支持 FreeBSD 开发项目、会议和开发者峰会,购买设备以扩展和改善 FreeBSD 基础设施,并为项目提供法律支持。
我们举行了年终筹款活动,目前仍在处理捐款,并将在 1 月中旬公布最终数字。我们非常感谢在 2013 年通过捐款支持我们和项目的所有个人和组织。我们已经开始了 2014 年的筹款工作。
以下是过去一季度的一些亮点:
我们赞助或正在赞助以下项目:
上一季度完成的项目:Capsicum、Casper 守护进程和 Intel I/O 内存管理单元驱动程序。
正在进行的项目:内核原生 iSCSI 堆栈、网络堆栈第2层现代化、UEFI 启动、更新的 vt(9) 系统控制台。
上一季度开始的项目:自动挂载器、Intel 图形驱动更新。
继续开展 FreeBSD Journal 的工作,我们的在线 FreeBSD 杂志,将于 1 月 27 日首次发布(见链接)。
赞助、组织并主持了湾区开发者峰会。
赞助并参加了首次举办的 vBSDCon,会议取得了令人印象深刻的出席率。
赞助并参加了 OpenZFS 开发者峰会。
在以下会议中代表基金会:北卡罗来纳州罗利的 All Things Open 会议和华盛顿特区的 LISA 会议。
赞助了在旧金山举行的 FreeBSD 20周年庆典。
参加了 11 月在布宜诺斯艾利斯举行的 ICANN 会议,并在 ccNSO 技术日上简要介绍了 FreeBSD 10.0 中从 BIND 到 unbound 的变更。
与几家公司会面,讨论它们对 FreeBSD 的使用、它们希望在 FreeBSD 中看到的支持,并协助它们与项目的合作。
购买了一台 80 核服务器,放置在 Sentex,由项目用于稳定性、可扩展性和性能的改进。这是基金会向项目开发者提供这种硬件的重大进步。它将让我们测试在 80 个同时核心和 1TB RAM 下的扩展性。它还将用于对大工作负载(如大数据库等)进行性能分析。
在 Sentex 增加了第二个机架。
我们收到了 VMware, Inc. 的承诺,提供 BSD 许可的驱动程序。它们还承诺每年提供银级捐赠。
成为 Google Compute 的受信测试者。
为纽约国际公司赞助了一个项目,制作一份白皮书,标题为《使用 FreeBSD 的托管服务》。
最后,我们发布了半年度新闻通讯(见链接),重点介绍了我们在 2013 年支持 FreeBSD 项目和社区所做的工作。