# FreeBSD 2014 年第二季度状态报告

* 原文链接：<https://www.freebsd.org/status/report-2014-04-2014-06.html>

## 引言

本报告涉及了 2014 年 4 月至 6 月期间与 FreeBSD 相关的项目。这是 2014 年计划中的四个报告中的第二份。

2014 年第二季度对于 FreeBSD 项目来说是一个非常忙碌且富有成效的时期。新的 FreeBSD 核心团队已选举产生，FreeBSD Ports 管理团队分支了第二个季度的 stable 分支，FreeBSD 发布工程团队正在完成 FreeBSD 9.3-RELEASE 的周期，许多令人兴奋的新功能也已被加入到 FreeBSD 中。

感谢所有报告员的出色工作！本报告包含 24 个条目，希望你喜欢阅读。

提交报告的截止日期为 2014 年 10 月 7 日，报告内容涵盖 2014 年 7 月至 9 月的时间段。

## [FreeBSD 团队报告](https://www.freebsd.org/status/report-2014-04-2014-06.html#FreeBSD-Team-Reports)

### [FreeBSD 核心团队](https://www.freebsd.org/status/report-2014-04-2014-06.html#FreeBSD-Core-Team)

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

FreeBSD 核心团队相当于项目的“董事会”，负责决定项目的整体目标和方向，并管理 FreeBSD 项目领域的具体事务。

本季度核心团队的工作涉及了一些深远的政策审查，以及对项目开发方法论的重大变化。

5 月，发布了新的发布政策，并在 BSDCan 开发者大会上由 John Baldwin 进行了介绍。该政策的核心思想是，每个主要的发行分支（例如 10.X）将至少支持五年，但每个分支上的单独小版本（如 10.0-RELEASE）将在规定的时间间隔发布，并且仅支持最新的小版本。

另一个重大变化未获批准。当对核心团队选举过程进行的章程修改进行投票时，该提案未能达到法定人数。

6 月，项目中长时间进行的替换缺陷跟踪系统的项目终于完成。从 6 月 3 日起，FreeBSD 项目已切换到 Bugzilla 作为其缺陷跟踪系统。所有 GNATS PR 的历史记录都被保留下来，因此无需重新开启旧的工单。当前仍在进行工作，以复制以前应用于 GNATS 的一些集成调整，但所有必要的功能已经实现，项目已经开始受益于 Bugzilla 带来的新功能。

本期间还举行了选举，选举产生了下一个两年任期的核心团队成员。我们要感谢即将退休的核心成员为项目做出的贡献。新的核心团队延续了以往核心团队的工作：大约一半的成员来自上届核心团队，几位前核心团队成员也在暂别后重新加入。当前核心团队包括两位 FreeBSD 基金会董事会成员和另外一位基金会工作人员，有助于项目顶层的协调。与此同时，核心秘书角色由一位新的志愿者接任。

其他活动包括为 FreeBSD 源代码树中的软件提供许可证条款咨询，以及监督 postmaster 和 clusteradm 的成员变动。

本季度发放了三张新的 src 提交权限卡，并保管了一张权限卡。

### [FreeBSD Ports 管理团队](https://www.freebsd.org/status/report-2014-04-2014-06.html#FreeBSD-Port-Management-Team)

| 链接                                                                        |
| ------------------------------------------------------------------------- |
| [http://www.FreeBSD.org/ports/](http://www.freebsd.org/ports/)            |
| <http://www.freebsd.org/doc/en_US.ISO8859-1/articles/contributing-ports/> |
| <http://portsmon.freebsd.org/index.html>                                  |
| <http://www.freebsd.org/portmgr/index.html>                               |
| <http://blogs.freebsdish.org/portmgr/>                                    |
| <http://www.twitter.com/freebsd_portmgr/>                                 |
| <http://www.facebook.com/portmgr>                                         |
| <http://plus.google.com/communities/108335846196454338383>                |

联系人：Frederic Culot <<portmgr-secretary@FreeBSD.org>>\
联系人：FreeBSD Ports 管理团队 <<portmgr@FreeBSD.org>>

Ports 渐渐逼近 25,000 个 Port 的门槛，而 PR 计数略低于 1800。

在第二季度，我们增加了三位新的提交者，保管了一张提交权限卡，并恢复了一个提交权限卡。

5 月，Frederic Culot 替代 Thomas Abthorpe 成为 portmgr 秘书，Steve Wills 成为 portmgr 团队成员。

从 7 月 1 日起，portmgr-lurkers 的第三批成员开始在 portmgr 团队执行为期四个月的活跃任务。接下来的两位候选人是 William Grzybowski 和 Nicola Vitale。

本季度还发布了第二个季度分支，即 2014Q2。这个分支不仅为 10（如 2014Q1）构建，还为 9（包括 i386 和 amd64）构建了版本。

#### 待办事项

1. 如前所述，许多 PR 仍然停滞不前，我们希望看到提交者致力于尽可能关闭这些 PR。

### [FreeBSD 发布工程团队](https://www.freebsd.org/status/report-2014-04-2014-06.html#FreeBSD-Release-Engineering-Team)

| 链接                                                                            |
| ----------------------------------------------------------------------------- |
| [FreeBSD 9.3-RELEASE 时间表](http://www.freebsd.org/releases/9.3R/schedule.html) |
| [FreeBSD 开发快照](http://ftp.freebsd.org/pub/FreeBSD/snapshots/ISO-IMAGES/)      |

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

FreeBSD 发布工程团队负责设定和发布 FreeBSD 官方版本的发布时间表，宣布代码冻结，并维护相关分支等工作。

在 5 月初，FreeBSD 9.3-RELEASE 周期进入了代码冻结阶段。FreeBSD 9.3-RELEASE 周期已接近尾声，9.3-RC3 构建即将开始。9.3-RC3 计划作为此版本周期的最终发布候选版本，在本文撰写时，9.3-RELEASE 应按计划发布。

目前正在进行将嵌入式架构支持集成到发布构建过程中的工作。目前，支持多个 ARM 内核，特别是 Raspberry Pi、BeagleBone 和 WandBoard。

此外，还在进行为虚拟机制作镜像的工作，作为发布周期的一部分，支持包括微软 Azure、Amazon EC2 和谷歌 Compute Engine 在内的各种云服务。

该项目由 FreeBSD 基金会赞助。

## [项目](https://www.freebsd.org/status/report-2014-04-2014-06.html#Projects)

### [Chelsio iSCSI 卸载支持](https://www.freebsd.org/status/report-2014-04-2014-06.html#Chelsio-iSCSI-Offload-Support)

链接

联系人：Sreenivasa Honnur <<shonnur@chelsio.com>>

基于 FreeBSD 10.0 发布的新内核 iSCSI 目标和发起堆栈，Chelsio Communications 开始开发一个卸载接口，以利用 Chelsio T4 和 T5 10G 和 40G 以太网适配器的硬件卸载功能。

当前的代码实现了发起端卸载的工作原型，目标端卸载的开发也将很快开始。该代码将以 BSD 许可证发布，预计将在今年晚些时候完成并提交到 FreeBSD-HEAD，并可能在 2015 年初的 FreeBSD 版本中发布。

#### 待办事项

1. 完成发起端卸载的测试和调试。
2. 开始开发目标端卸载。
3. 创建硬件无关的卸载 API，基于目标端和发起端概念验证实现的经验。

### [CUSE4BSD](https://www.freebsd.org/status/report-2014-04-2014-06.html#CUSE4BSD)

| 链接                                                      |
| ------------------------------------------------------- |
| [提交记录](http://svnweb.freebsd.org/changeset/base/266581) |

联系人：Hans Petter Selasky <<hselasky@FreeBSD.org>>

所谓的 CUSE4BSD 已经被导入到 FreeBSD-11 的基本系统中。CUSE 是用户空间字符设备（character device in userspace）的缩写。CUSE 库是 devfs(8) 内核功能的封装，通过 /dev/cuse 公开。为了使其正常工作，CUSE 内核代码必须在内核配置文件中启用，或作为模块单独加载。请点击提交记录链接获取更多信息。

### [FreeBSD 和 2014 年编程之夏计划](https://www.freebsd.org/status/report-2014-04-2014-06.html#FreeBSD-and-Summer-of-Code-2014)

| 链接                                          |
| ------------------------------------------- |
| <http://gsoc.freebsd.org/>                  |
| <https://wiki.freebsd.org/SummerOfCode2014> |

联系人：Gavin Atkinson <<gavin@FreeBSD.org>>\
联系人：Glen Barber <<gjb@FreeBSD.org>>\
联系人：Wojciech Koszek <<wkoszek@FreeBSD.org>>

今年，FreeBSD 收到了 39 个项目提案，其中许多提案质量非常高。经过艰难的筛选过程，将这些提案缩小到我们所分配的名额，最终选择了 16 个项目参与谷歌编程之夏计划 2014 年与 FreeBSD 的合作。

所选项目涉及 FreeBSD 的多个领域，涉及基本系统和 ports 基础设施、用户空间和内核等方面。我们有学生在进行防火墙优化、ports 打包工具、嵌入式系统、调试基础设施、改进的 Unicode 支持、加载器和安装程序的增强等多个方向的工作。我们目前已经过了今年分配时间的一半，非常期待将这些项目产生的代码整合到 FreeBSD 中。

这是 FreeBSD 第十次参与谷歌编程之夏计划，我们感谢谷歌接纳我们作为参与组织。

### [新的自动挂载工具](https://www.freebsd.org/status/report-2014-04-2014-06.html#New-Automounter)

链接

联系人：Edward Tomasz Napierała <<trasz@FreeBSD.org>>

当前自动挂载工具 amd(8) 的缺陷是许多 FreeBSD 用户反映的一个重复问题。为了应对这些问题，正在开发一个新的自动挂载工具。

该自动挂载工具是个净室设计实现，提供在大多数其他 Unix 系统中可用的功能，使用通过 autofs 文件系统实现的适当内核支持。自动挂载工具支持标准映射格式，并将与轻量级目录访问协议（LDAP）服务集成。

该项目目前处于早期测试阶段。经过一些关键组件（特别是 autofs 文件系统）的额外审查后，将发布补丁，作为更广泛测试请求的一部分。在修复报告的问题后，代码将提交到 FreeBSD 11-CURRENT。预计它将在 FreeBSD 10.2 版本中发布。

该项目由 FreeBSD 基金会赞助。

#### 待办事项

1. 修复与 fts(3) 的不良交互。
2. 调试与 Kerberos NFS 挂载相关的问题。

### [pkg(8)](https://www.freebsd.org/status/report-2014-04-2014-06.html#pkg\(8\))

| 链接                                                           |
| ------------------------------------------------------------ |
| [pkg(8) 的主要 Git 仓库](https://github.com/freebsd/pkg)          |
| [报告 pkg(8) 相关问题的首选位置](https://github.com/freebsd/pkg/issues) |

联系人：Baptiste Daroussin <<bapt@FreeBSD.org>>\
联系人：Bryan Drewery <<bdrewery@FreeBSD.org>>\
联系人：Matthew Seaman <<matthew@FreeBSD.org>>\
联系人：Vsevolod Stakhov <<vsevolod@FreeBSD.org>>\
联系人：pkg 邮件列表 <<freebsd-pkg@FreeBSD.org>>

pkg(8) 是 FreeBSD 的新软件包管理工具。它现在是支持的唯一软件包管理工具，适用于从 10.0-RELEASE 开始的 FreeBSD 版本，包括即将发布的 9.3-RELEASE。pkg(8) 可用于所有当前支持的版本。对旧版 pkg\_tools 的支持计划在 2014 年 9 月初停止。

pkg(8) 1.3 的发布即将来临。此版本包括了依赖关系求解器的重大改进。现在，我们可以：

* 切换 Perl 或 PHP 等版本，并自动解决与这些版本相关的依赖冲突。无需手动切换软件包源。
* 更加优雅地处理复杂的升级或安装场景。
* 将操作沙箱化，以处理新下载的数据，直到可以通过检查软件包签名来验证其可信度。
* 处理提供与需求式的依赖关系。例如，我们可以说“此软件包需要使用 Web 服务器”，并允许通过 apache、nginx 或其他任何提供 Web 服务器功能的替代方案来满足该依赖。

在下一版本发布之后，我们正在进行一项工作，允许在依赖规则中使用版本范围，并处理一些“外部”软件包仓库的选择，如 CPAN、CTAN 或 PyPi。

计划使用 pkg(8) 来打包基本系统。除了其他好处外，这将允许编写一个通用安装程序：只需下载一个安装映像，然后可以从中安装任何可用的 FreeBSD 版本，包括快照。

我们还打算在 Ports 中使用 pkg(8)，在软件包构建时处理构建依赖。这样做可以通过下载二进制包来安装构建依赖，这意味着可以安装一个带有自定义选项的软件包，而无需编译其他内容，从而节省时间。

#### 待办事项

1. 我们严重缺乏全面的测试环境。将自动回归测试集成到开发周期中已成为一项紧迫任务。
2. 我们需要测试人员在尽可能多的不同使用场景中运行 pkg 开发版本，并将他们的反馈报告到 <freebsd-pkg@freebsd.org> 邮件列表或我们的 GitHub 问题列表中。

### [QEMU bsd-user 启用的 Port 构建](https://www.freebsd.org/status/report-2014-04-2014-06.html#QEMU-bsd-user-Enabled-Ports-Building)

| 链接                                                   |
| ---------------------------------------------------- |
| [技术概述](https://wiki.freebsd.org/QemuUserModeHowTo)   |
| [Ports 构建状态](http://dirty.ysv.freebsd.org/)          |
| [合作的主仓库](https://github.com/seanbruno/qemu-bsd-user) |

联系人：Stacey Son <<sson@FreeBSD.org>>\
联系人：Juergen Lock <<nox@FreeBSD.org>>\
联系人：Sean Bruno <<sbruno@FreeBSD.org>>

`ports-mgmt/poudriere-devel` Port 可以通过模拟器构建 Port。需要在运行 poudriere-devel 之前配置杂项二进制图像激活程序。

可以通过完整的仿真生成 ARMV6、MIPS32 和 MIPS64 包。有几个软件包会阻塞构建的完整运行。可以在“Port 构建状态”链接中查看。

要通过仿真构建软件包，在当前版本或最新的 stable/10 上：

克隆 GitHub 仓库，并切换到 `bsd-user` 分支。然后运行：

```sh
./configure --static \
--target-list="arm-bsd-user i386-bsd-user \
mips-bsd-user mips64-bsd-user mips64el-bsd-user \
mipsel-bsd-user ppc-bsd-user ppc64-bsd-user sparc-bsd-user \
sparc64-bsd-user x86_64-bsd-user"

gmake; gmake install
```

然后设置 `binmiscctl` 工具进行一些黑客操作，以重定向 armv6 二进制文件的执行到 qemu：

```sh
binmiscctl add armv6 --interpreter \ "/usr/local/bin/qemu-arm" --magic \ "\x7f\x45\x4c\x46\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02 \
\x00\x28\x00" --mask "\xff\xff\xff\xff\xff\xff\xff\x00\xff\xff\xff\xff \
\xff\xff\xff\xff\xfe\xff\xff\xff" --size 20 --set-enabled
```

从 ports 安装 `poudriere-devel`。它知道如何设置这些内容。

创建一个 poudriere jail 来执行所有操作：

```sh
poudriere jail -c -j 11armv632 -m svn -a armv6 \
-v head
```

现在在该 jail 上运行 poudriere 以构建所有 Port：

```sh
poudriere bulk -j 11armv632 -a
```

将 Ports 挂载到 jail 中：

```sh
mkdir /usr/local/poudriere/jails/11armv632/usr/ports
mount -t nullfs /usr/ports /usr/local/poudriere/jails/11armv632/usr/ports
```

要进入 jail，执行：

```sh
mount -t devfs devfs /usr/local/poudriere/jails/11armv632/dev
chroot /usr/local/poudriere/jails/11armv632/
```

#### 待办事项

1. **PPC 在 AMD64 上的仿真**：这是一个进行中的工作，因为在大端硬件上运行 `bsd-user` 二进制文件时似乎存在一些严重问题。Justin Hibbits 正在处理此问题。
2. **SPARC64 在 AMD64 上的仿真**：此功能无法使用，并且立即出现段错误。我们正在寻找能帮助解决这一问题的人。
3. **外部工具链，XDEV 支持**：目前部分支持使用 AMD64 工具链生成其他架构的二进制文件（例如，使用 AMD64 工具链构建 MIPS64 包）。我们目前正在追踪 `ports-mgmt/pkg` 的链接问题。感谢 Warner Losh、Baptiste Daroussin 和 Dimitry Andric 帮助解决这一问题，以使 XDEV 目标变得可用。
4. **信号处理**：MIPS/ARMV6 目标在构建 `devel/p5-Sys-SigAction` 时仍然显示失败。
5. **大量文档更新需求**：这些修改实际上使得能够进入 MIPS 或 ARMv6 环境，并使用本地工具链和库为目标平台原型化软件。

### [RPC/NFS 和 CTL/iSCSI 性能优化](https://www.freebsd.org/status/report-2014-04-2014-06.html#RPC/NFS-and-CTL/iSCSI-Performance-Optimizations)

联系人：Alexander Motin <<mav@FreeBSD.org>>

FreeBSD 的 RPC 栈作为其 NFS 服务器的基础，进行了多项优化以提高性能和 SMP 可扩展性。算法优化减少了处理开销，同时改进的锁机制使其能够在不显著出现锁竞争的情况下扩展到至少 40 个处理器核心。结合其他内核优化，NFS 请求的峰值速率增加了多倍，在现代硬件上达到了每秒 60 万个请求。

作为新内核 iSCSI 服务器基础的 CAM Target Layer（CTL）也进行了多项锁机制优化，使其峰值请求速率从约 20 万提高到约 60 万 IOPS，预计能够达到每秒 100 万个请求的速率。这个速率足以完全饱和两个 10Gbit 以太网链路，且请求大小为 4KB。相比之下，使用相同硬件和等效配置的 `net/istgt`（用户级 iSCSI 服务器）仅显示了 10 万 IOPS。

另外，CTL 功能的改进工作仍在进行中。它已支持四个 VMware VAAI 存储加速原语中的三个（`net/istgt` 支持 2 个），而目标是在未来几个月内实现完全的 VAAI 支持。

凭借所有这些改进，以及 CAM、GEOM、ZFS 和其他内核领域的早期改进，FreeBSD 10.1 可能会成为有史以来最快的存储版本。;)

这些项目由 iXsystems, Inc. 赞助。

### [ZFSguru](https://www.freebsd.org/status/report-2014-04-2014-06.html#ZFSguru)

| 链接                                               |
| ------------------------------------------------ |
| <http://zfsguru.com/>                            |
| <http://zfsguru.com/news/stateoftheproject/2014> |

联系人：Jason Edwards <<sub.mesa@gmail.com>>

ZFSguru 是一个多功能服务器设备，强调存储功能。ZFSguru 最初是一个简单的 ZFS Web 界面前端，但后来发展成为一个具有自己基础设施的 FreeBSD 衍生版。随着项目的扩展，增加了可附加的软件包，提供了超越传统 NAS 功能的功能，这些功能类似于 FreeNAS 和 NAS4Free。ZFSguru 旨在成为一个真正的多功能服务器设备，极易设置，并能将初学者和更有经验的用户结合在一个用户界面中。项目的模块化特点避免了臃肿的风险，同时仍然能轻松部署扩展功能。

今年第一季度的开发为 Samba 和 NFS 提供了拖放权限管理，而第二季度的开发重点是加强项目的基础设施。一个名为“Mesa”的新库和工具包解决方案正在开发中，它为项目提供了更清晰的基础。正在设置一个新的主服务器来提供安全的远程服务，该服务器位于一个高速数据中心。最重要的是，新的系统构建基础设施取得了显著进展，并很快能够为用户提供自动化的系统构建。这不仅提高了系统发布的频率，还释放了大量开发时间，可以用于项目的其他领域。

此外，正在开发一个新的官网和论坛，以取代功能有限的老旧网站。新网站将与服务器数据库链接，提供有关项目的实时更新。

另外，正在开发一个新的协作开发平台。GitLab 项目为该服务创建了一个附加组件，它是流行的 GitHub 网站的替代品。选择托管自己的解决方案，而不是依赖 GitHub 本身。事后看来，这个决定是正确的。最近 GitHub 在接到 DMCA 下架请求后删除了项目，这与 ZFSguru 项目提倡的自由信息流通理念不符。通过托管自己的解决方案，我们避免了对第三方项目的依赖。

预计在项目基础设施重建后，Web 界面的开发工作将继续进行。新的功能，如 GuruDB 和 Service Bulletins，将在服务器基础设施与 Web 界面之间建立更紧密的联系。迁移管理器是 Web 界面中最后缺失的功能之一。此功能提供了一种通过执行新的干净安装来升级当前系统的简单方法，但会将所有相关配置迁移到新安装中。它还允许将所有系统配置备份到一个文件，并存储在另一台机器上，以防出现问题。

有关该项目更详细的状态报告，可以通过 [stateoftheproject](https://www.freebsd.org/status/report-2014-04-2014-06.html#ZFSguru) 链接找到。

## [内核](https://www.freebsd.org/status/report-2014-04-2014-06.html#Kernel)

### [PostgreSQL 性能改进](https://www.freebsd.org/status/report-2014-04-2014-06.html#PostgreSQL-Performance-Improvements)

| 链接                                                |
| ------------------------------------------------- |
| <https://www.kib.kiev.ua/kib/pgsql_perf_v2.0.pdf> |

联系人：Konstantin Belousov <<kib@FreeBSD.org>>

对 FreeBSD-CURRENT 上最新版本 9.3 的 PostgreSQL 性能进行了分析。确定了阻碍在 40 核机器上良好可扩展性的问题，并提出了解决瓶颈的原型更改。

上面的 URL 提供了一篇详细解释问题和解决方案的论文，并附有展示可扩展性影响的图表。

该项目由 FreeBSD 基金会赞助。

### [在 Fiasco.OC 微内核上运行 FreeBSD 作为应用程序](https://www.freebsd.org/status/report-2014-04-2014-06.html#Running-FreeBSD-as-an-Application-on-Top-of-the-Fiasco.OC-Microkernel)

| 链接                                                                                                           |
| ------------------------------------------------------------------------------------------------------------ |
| [L4 微内核系列](http://en.wikipedia.org/wiki/L4_microkernel_family)                                               |
| [FreeBSD Wiki 上的项目概述（在 FreeBSD DevSummit 剑桥会议上的简短演讲）](https://wiki.freebsd.org/201407DevSummit/BSDUserspace) |

联系人：Ilya Bakulin <<ilya@bakulin.de>>

Fiasco.OC 属于 L4 微内核家族。微内核仅为其上运行的应用程序提供最低限度的服务，不同于传统内核，后者包含复杂的代码，如 IP 栈和设备驱动程序。这使得在 CPU 的特权模式中运行的代码量显著减少，从而提高了安全性，同时仍能提供可接受的性能水平。

在微内核上运行操作系统内核，可以利用为该操作系统开发的任何软件。操作系统内核与其他微内核应用程序（如实时组件）一起在用户模式下并行运行。多个操作系统，每个操作系统都有自己的用户空间应用程序，甚至可以并行运行，从而构建出严格分离公司数据和私人数据处理的产品。

该项目旨在将 FreeBSD 移植到 Fiasco.OC 微内核上，Fiasco.OC 是由德累斯顿工业大学开发的高性能 L4 微内核。现有的 OpenBSD 和 Linux 移植作为参考。这将使得在基于 L4 的项目中使用像 ZFS 这样的 FreeBSD 独特功能成为可能。

#### 待办事项

1. 完成将 L4OpenBSD/amd64 移植开源的工作，这是由 genua mbh 进行的，仍在进行中。
2. 发布基于 L4OpenBSD 代码的 L4FreeBSD 移植的源代码。
3. 改进该移植，首先的任务是使 pmap(9) 模块能够与 L4 微内核的内存分配服务兼容。

### [SDIO 驱动程序](https://www.freebsd.org/status/report-2014-04-2014-06.html#SDIO-Driver)

| 链接                                                         |
| ---------------------------------------------------------- |
| [FreeBSD Wiki 上的 SDIO 项目页面](https://wiki.freebsd.org/SDIO) |
| [源代码](https://github.com/kibab/freebsd/tree/mmccam)        |

联系人：Ilya Bakulin <<ilya@bakulin.de>>

SDIO 是一种扩展现有 SD 卡标准的接口，它允许通过标准 SD 控制器将不同的外设连接到主机。目前市场上销售的外设包括 WLAN/BT 模块、相机、指纹识别器和条形码扫描器。此外，SDIO 也用于连接如 Chromebook 和 Wandboard 等产品中的某些外设。正在开发用于 Marvell SDIO WLAN/BT（Avastar 88W8787）模块的驱动程序原型，使用现有的 Linux 驱动作为参考。

SDIO 卡的检测和初始化已经完成。大多数必要的总线方法已经实现并进行了测试。

WiFi 驱动程序能够将固件加载到卡中并初始化它。MMC 堆栈的重写作为 CAM 框架的传输层正在进行中。这将允许使用经过充分测试的 CAM 锁机制和调试功能。

#### 待办事项

1. SDIO 堆栈：完成 CAM 迁移。MMC/SD 卡的初始化已在 XPT 层实现，但由于缺乏实现外设驱动和 CAM MMC 的 SIM 设备驱动程序，无法使用实际硬件进行测试。计划使用修改版的 BeagleBone Black SDHCI 控制器驱动作为 SIM，并使用修改版的 mmcsd(4) 作为外设驱动。
2. Marvell SDIO WiFi：连接到 FreeBSD 网络栈，编写代码实现所需的功能（如发送/接收数据、网络扫描等）。

### [TMPFS 稳定性](https://www.freebsd.org/status/report-2014-04-2014-06.html#TMPFS-Stability)

联系人：Konstantin Belousov <<kib@FreeBSD.org>> 联系人：Peter Holm <<pho@FreeBSD.org>>

使用 stress2 内核测试套件对 tmpfs(5) 进行了广泛的测试。发现的问题已经调试并修复。

大多数问题与 vnode 和节点生命周期的交互有关，最终导致例如卸载竞争和 `dotdot` 查找错误等问题。

该项目由 FreeBSD 基金会赞助。

### [UEFI 启动](https://www.freebsd.org/status/report-2014-04-2014-06.html#UEFI-Boot)

| 链接                                                    |
| ----------------------------------------------------- |
| [FreeBSD UEFI Wiki 页面](https://wiki.freebsd.org/UEFI) |
| [FreeBSD 快照](http://www.freebsd.org/snapshots/)       |

联系人：Ed Maste <<emaste@FreeBSD.org>>\
联系人：Nathan Whitehorn <<nwhitehorn@FreeBSD.org>>

统一扩展固件接口（UEFI）为 x86 和其他计算机提供启动和运行时服务。对于 x86 架构，UEFI 替代了传统的 BIOS。该项目将调整 FreeBSD 的加载程序和内核启动过程，以兼容现代服务器、桌面和笔记本电脑上的 UEFI 固件。

Ed 和 Nathan 在过去三个月中完成了多项集成任务。Nathan 添加了一个第一阶段加载程序 boot1.efi，用于支持从 UFS 文件系统链式加载其余系统。这使得 UEFI 启动过程能够与 BIOS 启动过程类似地进行。Nathan 还为 FreeBSD 安装程序和发布镜像创建脚本添加了 UEFI 支持。

EFI 帧缓冲需要 vt(4) 系统控制台——由于没有为传统的 syscons(4) 控制台实现帧缓冲驱动程序，Ed 为 UEFI 启动路径添加了自动选择 vt(4) 的功能。

现在快照已经构建为双模式镜像，应该能够通过 BIOS 和 UEFI 启动。我们的计划是将 UEFI 和 vt(4) 的工作合并到 stable/10 分支中，以便在 FreeBSD 10.1-RELEASE 中发布。

该项目由 FreeBSD 基金会赞助。

#### 待办事项

1. 编写手动安装文档，包括双启动配置。
2. 为 ZFS 文件系统实现 boot1.efi。
3. 添加对存储在非易失性内存（NVRAM）中的 UEFI 变量的支持。
4. 调试与某些 UEFI 固件实现的启动故障。
5. 支持安全启动。

### [更新的 vt(4) 系统控制台](https://www.freebsd.org/status/report-2014-04-2014-06.html#Updated-vt\(4\)-System-Console)

| 链接                                             |
| ---------------------------------------------- |
| [项目 Wiki 页面](https://wiki.freebsd.org/Newcons) |

联系人：Aleksandr Rybalko <<ray@FreeBSD.org>>\
联系人：Ed Maste <<emaste@FreeBSD.org>>\
联系人：Ed Schouten <<ed@FreeBSD.org>>\
联系人：Warren Block <<wblock@FreeBSD.org>>

vt(4)（即 Newcons）项目提供了一个替代传统 syscons 系统控制台的方案。它带来了多项改进，包括与图形模式的更好集成以及更广泛的字符集支持。

自上次 [报告](http://www.freebsd.org/news/status/report-2014-01-2014-03.html#Updated-vt%284%29-System-Console) 以来，vt(4) 增加了早期驱动程序选择的功能。vt(4) 在大多数内核子系统初始化之前选择最成功探测到的驱动程序。此外，为了促进从 syscons(4) 向 vt(4) 的迁移，现在支持内核中的多个虚拟终端子系统。用户可以通过设置内核环境变量来选择使用的虚拟终端系统，方法是设置 `kern.vty=sc` 或 `kern.vty=vt`。

amd64 和 i386 平台的 GENERIC 内核配置现在默认包含 syscons(4) 和 vt(4)。此配置计划也将出现在 FreeBSD 10.1-RELEASE 中。

该项目最终获得了 man 页面，因此现在 vt(4) 不仅是项目名称，还是指向其文档的链接。特别感谢 Warren Block 的贡献。

主要亮点：

* 支持 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 驱动——不支持。应使用 VGA（计划支持 VESA）。
* Xbox 帧缓冲驱动——将被删除，因不再使用。

该项目由 FreeBSD 基金会赞助。

#### 待办事项

1. 实现 vidcontrol(1) 支持的其余功能。
2. 为 vt(4) 驱动程序和内核接口编写手册页。
3. 支持直接由 kbd 设备处理键盘输入（不通过 kbdmux(4)）。
4. 支持 CJK 字体（此项正在进行中）。
5. 解决某些架构上的性能问题。
6. 将 vt(4) 设置为默认。
7. 为 vt(4) 转换键盘映射。
8. 实现兼容模式，以便在 vt(4) 中使用单字节字符集/键码。

## [架构](https://www.freebsd.org/status/report-2014-04-2014-06.html#Architectures)

### [FreeBSD/arm64](https://www.freebsd.org/status/report-2014-04-2014-06.html#FreeBSD/arm64)

| 链接                                               |
| ------------------------------------------------ |
| <http://svnweb.freebsd.org/base/projects/arm64/> |

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

Arm64 是 FreeBSD 移植到 ARMv8 CPU 的项目名称，该 CPU 在 AArch64 模式下运行。直到最近，所有 ARM CPU 设计都仅支持 32 位。随着 ARMv8 架构的引入，ARM 增加了新的 64 位模式，这个新模式被命名为 AArch64。

自上次状态报告以来，在 ARM 基础模型上启动 FreeBSD 取得了很大进展。一个初步的 pmap 实现已经完成。通过这个实现，FreeBSD 可以进入机器独立的启动代码。必要的 autoconf 函数已被添加，允许 FreeBSD 开始调度任务。最后，添加了 cpu\_switch 和 copystr 函数。通过这两个功能，FreeBSD 可以启动到 mountroot 提示符。

关于支持异常（包括中断）的工作也已经开始。这将允许更多开发人员开始编写设备驱动程序。

#### 待办事项

1. 完成异常和中断处理
2. 从 UEFI 读取设备树或 ACPI 表
3. 在真实硬件上进行测试

## [Ports](https://www.freebsd.org/status/report-2014-04-2014-06.html#Ports)

### [FreeBSD Python Ports](https://www.freebsd.org/status/report-2014-04-2014-06.html#FreeBSD-Python-Ports)

| 链接                                                     |
| ------------------------------------------------------ |
| [FreeBSD Python 团队页面](https://wiki.freebsd.org/Python) |
| [IRC 频道](irc://freebsd-python@irc.freenode.net)        |

联系人：FreeBSD Python 团队 <<python@FreeBSD.org>>

我们很高兴宣布，基于最近引入到 Ports 框架中的 USES=uniquefiles 特性，Python 包支持在不同版本的 Python 之间无冲突地并行构建和安装。一个 Python 包现在可以被标记为在同一主机上并行为不同 Python 版本构建和安装。然而，构建工具尚不支持此特性，Python 团队将与 portmgr 和 pkg 开发人员紧密合作，以在全局 Ports 和 Packages 范围内启用此支持。

在五月和六月期间，进行了大量清理工作，移除最后与 easy\_install 相关的部分。七月初，我们提交了最终的更改，完全从 Ports 框架中移除了 easy\_install 的支持。这极大地简化了基础设施，并让我们能够以更少的精力进行现代化和维护。

我们添加了 Python 3.4，移除了 Python 3.1（在其生命周期结束后），更新了 setuptools 包到 5.1 版本，并将 PyPy 的开发版本更新至 2.3.1。最新的 Python 2.7.8 和更新的 setuptools 即将合并到代码库中。

我们的上游合并工作继续取得积极进展，简化了维护并减少了复杂性。

展望未来，最重要的优先事项之一是尽早遵循 USES 框架，并为将新的 Python 相关 Ports 成到代码库中制定一致的维护者政策。

#### 待办事项

1. 将 bsd.python.mk 迁移到 USES 框架。
2. 制定一个高级别且轻量级的 Python Ports 政策。
3. 为细粒度依赖（例如 >= 1.0,< 2.0）添加支持。
4. 查看添加 pip（Python 包索引）支持需要做什么。
5. 为 Python ports 添加默认的 QA 目标和函数（TEST\_DEPENDS，回归测试等）。
6. 更多任务可以在团队的 Wiki 页面找到（见链接）。
7. 想要参与的朋友可以来 IRC 频道打个招呼，告诉我们你感兴趣的内容！

### [KDE/FreeBSD](https://www.freebsd.org/status/report-2014-04-2014-06.html#KDE/FreeBSD)

| 链接                                          |
| ------------------------------------------- |
| [KDE/FreeBSD 主页](http://freebsd.kde.org/)   |
| [area51](http://freebsd.kde.org/area51.php) |

联系人：KDE/FreeBSD 团队 <<kde@FreeBSD.org>>

KDE/FreeBSD 团队继续改进 KDE 软件和 Qt 在 FreeBSD 下的体验。

在本季度，团队保持了大多数 KDE 和 Qt ports 的最新状态，主要更新了以下版本：

* KDE SC：4.12.5；工作空间：4.11.9

根据 PortScout 的数据，kde@ 目前有 526 个 ports（与之前相同），其中 84.63% 是最新的（相比之前的 98.86% 略有下降）。iXsystems Inc. 继续为团队提供机器，用于构建包和测试更新。iXsystems Inc. 为 KDE/FreeBSD 团队提供支持已经有很长时间，我们对此表示感谢。

像往常一样，团队始终在寻找更多的测试人员和 Port 开发人员，所以请通过 <kde@FreeBSD.org> 联系我们，并访问我们的主页 [http://FreeBSD.kde.org](http://freebsd.kde.org/)。尤其希望能有更多人参与移除已废弃的 HAL 项目依赖，并为 KDE 的 Bluedevil 蓝牙接口提供集成。

#### 待办事项

1. 更新过时的 ports，详见 [PortScout](http://portscout.freebsd.org/kde@freebsd.org.html) 中的列表
2. 移除对 HAL 的依赖

### [FreeBSD 上的图形堆栈](https://www.freebsd.org/status/report-2014-04-2014-06.html#The-Graphics-Stack-on-FreeBSD)

| 链接                                                                                                  |
| --------------------------------------------------------------------------------------------------- |
| [图形堆栈路线图和支持的硬件矩阵](https://wiki.freebsd.org/Graphics)                                                |
| [WITH\_NEW\_XORG 仓库发布公告](http://lists.freebsd.org/pipermail/freebsd-announce/2014-July/001570.html) |
| [与 Ports 相关的开发仓库](http://trillian.chruetertee.ch/ports/browser/trunk)                               |

联系人：FreeBSD 图形团队 <<x11@FreeBSD.org>>

本季度我们普遍时间紧迫，各方面的进展比预期的要慢。

目前，使用 WITH\_NEW\_XORG 构建的替代 pkg(8) 仓库已经可用。这可以缓解用户需要使用 WITH\_NEW\_XORG 重建 Port 的问题。请参阅上面的公告，了解更多信息。

由于 Jan Kokemüller 的贡献，现在 Radeon 32 位 ioctl 在 64 位主机上工作正常。这在 FreeBSD 9.x 和 11 上通过 Wine 和《星际争霸 II》得到了成功测试。为使其与 WITH\_NEW\_XORG 一起工作，需要对 emulators/i386-wine-devel 进行修改，并创建了一个新 Port libtxc\_dxtn，以支持《星际争霸 II》使用的纹理压缩。目前我们还没有时间进一步完善这些内容，因此仍然需要手动操作。

DRM 通用代码更新已准备好，但它会破坏当前的 i915 驱动程序。因此，必须先更新 i915 驱动程序，然后才能提交。

与上次状态报告相比，OpenCL 测试程序现在运行良好，这要归功于 libc++ 和 Clang 的升级和修复。不幸的是，相关 Port 仍未准备好提交到 Ports 中。

#### 待办事项

1. 请参阅“Graphics”wiki 页面以获取最新信息。

### [文档](https://www.freebsd.org/status/report-2014-04-2014-06.html#Documentation)

#### [季度状态报告](https://www.freebsd.org/status/report-2014-04-2014-06.html#Quarterly-Status-Reports)

联系人：季度状态报告团队 <<monthly@FreeBSD.org>>

这些季度状态报告帮助 FreeBSD 社区及时了解项目内外的动态。报告内容包括 FreeBSD 团队的更新、正在开发的新特性、基于 FreeBSD 开发的产品以及 FreeBSD 相关事件等，欢迎大家提供相关信息。

自上次报告以来，月度团队一直在忙碌工作，长期的组织者 Gábor Páli 已经从团队中退下——感谢 Gábor 所做的所有辛勤工作！这一变化使得报告的准备工作有所滞后，因此发布项目的通知也相对较晚。为了填补这一空缺，Warren Block 和 Benjamin Kaduk 被加入了 monthly@ 团队，与 Glen Barber、Gavin Atkinson、Ed Maste 和其他团队成员一起准备此次报告。特别感谢 Glen 在同时发布 9.3-RELEASE 的过程中，承担了大部分工作！

下一个周期比你想象的要来得更快！Q3 报告的提交截止日期是 2014 年 10 月 7 日。

此项目由 FreeBSD 基金会赞助。

#### 待办事项

1. 提交 Q4 2014 的报告至 <monthly@FreeBSD.org>！

### [杂项](https://www.freebsd.org/status/report-2014-04-2014-06.html#Miscellaneous)

#### [FreeBSD 对 OpenStack 和 OpenContrail 的主机支持](https://www.freebsd.org/status/report-2014-04-2014-06.html#FreeBSD-Host-Support-for-OpenStack-and-OpenContrail)

链接：

<http://www.openstack.org>

<http://www.opencontrail.org>

<https://github.com/Semihalf/openstack-devstack>

<https://github.com/Semihalf/openstack-nova>

<https://github.com/Semihalf/contrail-vrouter>

<https://blueprints.launchpad.net/nova/+spec/freebsd-compute-node>

联系人：Grzegorz Bernacki <<gjb@semihalf.com>>\
联系人：Michal Dubiel <<md@semihalf.com>>\
联系人：Dominik Ermel <<der@semihalf.com>>\
联系人：Rafal Jaworowski <<raj@semihalf.com>>

OpenStack 是一个云操作系统，控制数据中心中大规模的计算、存储和网络资源。

OpenContrail 是一个网络虚拟化（SDN）解决方案，包括网络控制器、虚拟路由器和分析引擎，可以与像 OpenStack 或 CloudStack 这样的云编排系统集成。

该工作的目标是使 FreeBSD 成为完全支持 OpenStack 的计算主机，使用 OpenContrail 进行网络虚拟化。主要开发领域包括：

* bhyve 的 Libvirt 虚拟化驱动程序。
* 通过 libvirt 计算驱动程序支持 bhyve 和整体 FreeBSD 平台的 nova-compute 支持。
* OpenContrail vRouter（转发平面内核模块）端口到 FreeBSD。
* OpenContrail Agent（网络控制器节点）端口到 FreeBSD。
* 集成与性能优化。

自上次报告以来，已经完成了以下工作，这些工作使得在 FreeBSD 主机上使用 OpenContrail 进行网络虚拟化的 OpenStack 计算节点演示得以实现：

* 将 OpenContrail vRouter 内核模块移植到 FreeBSD（仅支持 MPLS over GRE 模式）。
* 将 OpenContrail Agent 移植到 FreeBSD。
* 带有 OpenContrail 解决方案支持的 FreeBSD 版本 Devstack 安装/配置脚本（仅计算节点组件）。

在 BSDCan2014 的 DevSummit 上展示了这一演示。此外，还在波兰克拉科夫组织了一场关于该主题的 Meetup。

该项目由 Juniper Networks 赞助。

### [FreeBSD 基金会](https://www.freebsd.org/status/report-2014-04-2014-06.html#The-FreeBSD-Foundation)

| 链接                                            |
| --------------------------------------------- |
| <http://www.freebsdfoundation.org/>           |
| [FreeBSD Journal](http://freebsdjournal.com/) |

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

FreeBSD 基金会是一家 501(c)(3) 非营利组织，致力于支持和推广 FreeBSD 项目和全球社区。大部分资金用于支持 FreeBSD 开发项目、会议和开发者峰会，购买设备以扩展和改善 FreeBSD 基础设施，并为项目提供法律支持。

我们发布了 FreeBSD Journal 的第三期。目前已有超过 2700 个订阅。我们继续推进数字版的开发，允许订阅者在不同的网页浏览器中阅读杂志，包括运行在 FreeBSD 上的浏览器。这将在 7 月/8 月的 Journal 期刊中提供。

我们聘请了 Anne Dickison，作为自由职业者担任新的市场总监，帮助我们推广基金会和项目。

年度董事会会议于 5 月在加拿大渥太华举行。董事和管理人员进行了选举，并进行了长期规划。我们讨论了我们的愿景、核心价值观、项目路线图和短期目标。我们还与核心团队会面，讨论了角色和责任、项目路线图以及我们能做些什么来帮助项目。

我们是 BSDCan 的 Gold+ 赞助商，会议于 5 月 16-17 日举行，并为开发者提供了 7 个旅行赞助，用于参加会议。我们还为开发者和供应商峰会提供了赞助。

Justin Gibbs 在 FreeBSD 用户的内部技术峰会上做了 FreeBSD 演讲。此类公司访问帮助用户更好地理解项目结构，并为我们提供了一个机会，向外界传达 FreeBSD 开发者的工作内容，同时了解不同公司如何使用 FreeBSD，以及他们希望支持的内容。我们可以促进公司与 FreeBSD 开发者之间的合作。

我们代表 FreeBSD 出席了 Great Wide Open（4 月 2-3 日，greatwideopen.org）、Texas LinuxFest（6 月 13-14 日，texaslinuxfest.org）和 SouthEast LinuxFest（6 月 20-22 日，southeastlinuxfest.org）。

为支持 Sentex 的升级，购买了硬件。部署了一台新的高容量 1Gbps 交换机，以便在测试实验室中添加更多系统。主文件服务器和开发盒子已升级，允许更多用户同时使用实验室。

我们购买了硬件，包括软件包构建器和一台更大的服务器，使 NYI 成为所有项目系统的完整副本，类似于 Yahoo Inc. 和 ISC 的现有系统。

我们与律师合作，创建了基金会与个人之间的 NDA，以便为第三方 NDA 提供支持。这允许需要访问专有文档的开发者通过基金会进行访问，并通过 NDA 获取权限。

FreeBSD 基金会的系统管理员和发布工程师 Glen Barber 继续为嵌入式设备（如 Raspberry Pi、ZedBoard 和 BeagleBone）生成定期更新的 FreeBSD/arm 快照。

除了从 head/ 和 stable/ 分支生成每周的开发快照外，在 Ed Maste 的反馈和帮助下，Glen 完成了生成发布镜像的工作，这些镜像默认将为用户空间和内核提供调试文件，供 FreeBSD 项目的 FTP 镜像使用。请注意，由于镜像大小原因，调试文件将不会包含在 bootonly.iso、disc1.iso 或 dvd1.iso 镜像中。

基金会工作人员 Konstantin Belousov 完成了对 FreeBSD 上 PostgreSQL 性能不佳问题的调查。调查发现了 FreeBSD 内核的可扩展性问题，相关的改进工作正在进行中。

一些先前完成的基金会赞助项目收到了增强或附加的工作。ARM 超页项目在去年完成，但现在在 FreeBSD-CURRENT 中默认启用。许多稳定性修复和增强已提交到内核中的 iSCSI 堆栈。iSCSI 项目已在 FreeBSD 10.0 中发布。许多稳定性修复和增强已提交，并将在 FreeBSD 10.1 中包含。

基金会赞助的工作包括继续进行 autofs 自动挂载守护进程、UEFI 启动支持、更新的 vt(4) 系统视频控制台、虚拟机镜像和 Intel 图形驱动更新。在 4 月到 6 月期间，基金会赞助的工作为 FreeBSD 提交了 226 个补丁。
