本报告包括了 2014 年 7 月至 9 月期间与 FreeBSD 相关的项目。这是计划中的 2014 年四个报告中的第三个。
2014 年第三季度是 FreeBSD 项目的又一个富有成效的季度。我们在多个 ARM 平台上做了大量工作,目标是在 FreeBSD 11 中将它们提升为 Tier 1 状态。各个移植团队也为提高 FreeBSD 作为桌面操作系统的状态而努力。与往常一样,性能改进在本报告中多次出现,许多改进可以通过用户基准测试来验证我们的结果。
感谢所有报告人所做的出色工作!
涉及 2014 年 10 月至 12 月期间的提交截止日期为 2015 年 1 月 7 日。
联系方式:FreeBSD 集群管理团队 <clusteradm@>
FreeBSD 集群管理团队由负责管理项目所依赖的机器的人员组成,这些机器用于协调分布式工作和通讯同步。在本季度,团队完成了以下工作:
实现了一个中央的 FreeBSD 集群特定软件包构建节点,使用 ports-mgmt/poudriere-devel,提供了从一个公共且已知正常配置中生成的一致的第三方二进制软件包集,供 FreeBSD 集群使用。
将所有在 FreeBSD 集群中运行的机器从各自不同的用户空间和内核配置转换为单一的基本系统配置。这使得实现了一个专门为 FreeBSD.org 定制的二进制更新机制,当前已在集群中部署。
该项目由 FreeBSD 基金会赞助。
联系方式:FreeBSD 发布工程团队 <re@FreeBSD.org>
FreeBSD 发布工程团队负责设定和发布官方项目发布的时间表、宣布代码冻结以及维护相应的分支等工作。
在 7 月中旬,FreeBSD 9.3-RELEASE 按照发布周期没有延迟地发布了。
在 8 月底,FreeBSD 10.1-RELEASE 的发布周期开始,截至本报告撰写时,预计将按计划进行。
作为发布周期的一部分,虚拟机映像的制作工作继续进行,支持各种云服务,如 Microsoft Azure、Amazon EC2 和 Google Compute Engine。
该项目由 FreeBSD 基金会赞助。
联系方式:Frederic Culot <portmgr-secretary@FreeBSD.org> 联系方式:Ports 管理团队 <portmgr@FreeBSD.org>
截至第三季度结束,ports 包含超过 24,000 个 Port,PR 数量低于 1,400。尽管夏季假期期间,ports 依然保持了活跃的活动,进行了超过 9,000 次提交,关闭了近 2,000 个 Port PR!
在第三季度,五名新开发者被授予了 ports 提交权限。没有其他人被收养为保护。
在管理方面,tabthorpe@ 决定在 7 月辞去其 portmgr 职务。第三季度无其他人员变动。
本季度还发布了第三季度分支,即 2014Q3。
在 QA 方面,进行了 34 次 exp-run 以验证敏感更新或清理。
最后,在第三季度,庆祝了 ports 的 20 周年,并为此事件发布了一段视频。
在第三季度,PR 前线做了大量工作,我们非常希望看到提交者在第四季度继续致力于尽可能关闭更多的 PR。
联系方式:FreeBSD 核心团队 <core@FreeBSD.org>
FreeBSD 核心团队是项目的“董事会”,负责决定项目的总体目标和方向,以及管理 FreeBSD 项目中的特定领域。
今年第三季度,在核心团队的活动方面相对安静。没有决定重大政策变更,但审查了授予提交权限的标准,并对现有要求进行了澄清和文档化,详细信息请参见 http://www.freebsd.org/internal/proposing-committers.html。
核心团队在此期间处理的其他事项:
与 Microsoft 确认可以将 DCTCP 包含到 FreeBSD 中。
将 git-beta.freebsd.org 从测试阶段提升为正式服务,并将其更名为 git.freebsd.org。
在引入 ASLR 和相关技术的持续工作中,调解了不同立场的贡献者和提交者之间的分歧。
与 FreeBSD 基金会合作,获得 XenForo 的许可,并与论坛管理员一起制定计划,将 FreeBSD 论坛迁移到 FreeBSD 集群,并切换到 XenForo。
在此期间,授予了三名提交权限,并为保护起见收回了两名提交权限。
联系方式:Shawn Webb <shawn.webb@hardenedbsd.org> 联系方式:Oliver Pinter <oliver.pinter@hardenedbsd.org>
地址空间布局随机化(ASLR)是一种计算机安全技术,旨在帮助缓解低级别漏洞,如缓冲区溢出。ASLR 随机化正在运行的应用程序的内存布局,以防止攻击者知道可利用漏洞在内存中的位置。
在过去几个月中,发生了很多事情。Shawn Webb 在 BSDCan 2014 和 EuroBSDCon 2014 上做了演讲,得到了广泛的支持和支持。在 EuroBSDCon 结束时,Ilya Bakulin 修复了 ARM 系统上的 ASLR 已知漏洞。Shawn Webb 和 Oliver Pinter 已经将我们的补丁提交到 Phabricator 代码审查系统。Shawn Webb 添加了一个 API,允许调试器禁用 ASLR 以支持确定性调试。Oliver Pinter 提升了我们 ASLR 实现的性能。进行了一个包构建的 exp-run,性能表现良好。Shawn Webb 提高了最大随机化位数至 20,并将默认值设置为 14。
Shawn Webb 和 Oliver Pinter 创建了 HardenedBSD 项目,作为他们为 FreeBSD 安全相关项目工作的 staging 区。
该项目由 SoldierX 赞助。
获取更多人测试和审查我们的补丁
进行更多性能测试
查明为何两个 Port 在 EXP-RUN 中失败。请涉及 Port 维护者。
在不同架构上进行测试(我们需要这方面的帮助)
联系方式:Cherry Mathew <cherry@FreeBSD.org>
该项目旨在为 FreeBSD 内核添加对在 amd64 系统上以 Xen 半虚拟化模式运行的支持。该项目终于达到了“概念验证”阶段,位于分支 projects/amd64_xen_pv。
鼓励对各种配置进行测试和提交错误报告!作者也在寻求赏金,以帮助完成此工作并评估潜在兴趣。如果感兴趣,请发送电子邮件。
PV 内核仍然受到大多数云服务提供商的支持,适用于各种配置,尽管预计在未来会逐步淘汰。
该项目由 Spectralogic Corporation(2012-2013)赞助。
大页面支持
SMP 支持
调试和清理
安全审查
性能优化
联系方式:Peter Grehan <grehan@FreeBSD.org> 联系方式:Neel Natu <neel@FreeBSD.org> 联系方式:John Baldwin <jhb@FreeBSD.org> 联系方式:Tycho Nightingale <tychon@FreeBSD.org> 联系方式:Allan Jude <freebsd@allanjude.com>
bhyve 是一个在 FreeBSD/amd64 平台上运行的虚拟化程序。当前,它支持运行 FreeBSD(8.x 或更高版本)、Linux i386/x64、OpenBSD i386/amd64 和 NetBSD/amd64 客户操作系统。当前的开发重点是启用其他客户操作系统并实现其他虚拟化程序中存在的功能。
自上次状态报告以来,已经取得了显著进展。最重要的是,所有这些工作已经 MFC 到 10-STABLE 分支,并将在 10.1 版本中包含。
AMD 处理器的支持正在 bhyve_svm SVN 项目分支中开发。该分支几乎与主线的 Intel VT-x 支持功能对等,并将很快提交到 -CURRENT。
本季度新增的功能包括:
对最新 Linux i386/x64、OpenBSD i386/amd64 和 NetBSD amd64 客户操作系统的支持。
使用 bhyvectl 强制重置和关闭客户机。
允许从命令行设置 SMBIOS UUID。
PCI MMIO 扩展配置空间访问。
改进的 AHCI 错误处理,遗留中断模式。
其他客户所需的指令仿真。
支持 FreeBSD/i386 中的双重错误(double-faults)遗留 x86 任务切换。
遗留的 PCI 中断,在没有 APIC 的情况下操作(OpenBSD 安装)。
客户内存默认不包括在核心转储中。
允许将客户 vCPU 固定到单独的主机 CPU。
Virtio RNG 设备仿真。
FreeBSD 手册中新增关于 bhyve 的章节。
改进文档。
为非 UEFI 感知客户提供 CSM BIOS 启动支持。
添加对 virtio-scsi 的支持。
改进 virtio-net,增加卸载功能,支持多个队列。
实现 Intel 82580 和 e1000 网卡仿真。
支持 Netmap。
灵活的网络后端:wanproxy,vhost-net。
转向单一进程模型,而不是 bhyveload 和 bhyve。
支持以非 root 用户运行 bhyve。
为流行的 VM 文件格式(VMDK、VHD、QCOW2)添加过滤器。
实现视频抽象层(基本系统不使用 X11 或 SDL)。
支持 VNC 作为视频输出。
支持暂停/恢复。
支持实时迁移。
支持嵌套 VT-x(在 bhyve 中运行 bhyve)。
支持其他架构(ARM、MIPS、PPC)。
联系方式:Sreenivasa Honnur <shonnur@chelsio.com> 联系方式:Edward Tomasz Napierała <trasz@FreeBSD.org>
在 FreeBSD 10.0 中发布了新的内核级 iSCSI 目标和发起栈的基础上,Chelsio Communications 开始开发一个卸载接口,以利用 Chelsio T4 和 T5 10 和 40 吉比特以太网适配器的硬件卸载能力。
该代码实现了目标和发起端的硬件 PDU 卸载。iSCSI 栈已被修改,提供一个硬件独立的卸载 API,允许将卸载驱动程序作为内核模块加载,并为系统管理员提供配置此功能的机制。该项目已进入测试阶段。代码将以 BSD 许可证发布,预计将在今年晚些时候完成,并将包含在 FreeBSD 10.2-RELEASE 中。
该项目由 Chelsio Communications 和 The FreeBSD Foundation 赞助。
完成测试
联系方式:Debian GNU/kFreeBSD 维护者 <debian-bsd@lists.debian.org>
Debian GNU/kFreeBSD 是由 Debian 发布的软件发行版,基于 FreeBSD 内核(而非 Linux)和 GNU libc。目前,约 90% 的 Debian 软件包库已移植到该系统,支持 amd64 和 i386 架构。它首次在 2011 年与 Debian “squeeze”一起发布,作为开发预览版本,在“wheezy”版本中再次出现,并希望在 2015 年初成为 Debian “jessie” 官方版本的一部分。
在 2003 年,有几次尝试在 FreeBSD 或 NetBSD 内核上引导一个最小的 Debian 系统,有些尝试还使用了原生的 BSD libc。最成功和持续时间最长的项目是由 Robert Millan 用 GNU libc 引导的“GNU/FreeBSD”chroot,Debian 大多数核心包都是与该 libc 兼容的。后来在名称中加上了“k”来反映它只使用 FreeBSD 的内核,其他大部分内容来自 Debian 的软件库。我们也根据需要打包了一些 FreeBSD 工具,以便能够启动并利用某些特性。
目前,由 Petr Salinger 维护 GNU libc 中的 FreeBSD 支持,他最近将其从基于 LinuxThreads 的旧线程实现转换为 NPTL,这与我们运行的软件兼容性更好。我们拥有 GNU 编译工具链以及 Clang 3.4;Perl、Python 和 Ruby;以及基于 FreeBSD 自有 Ports 的 OpenJDK 7。我们使用 linprocfs 来模拟 /proc,因为 Debian 的大部分软件期望此结构。Linuxulator 并非必需,但未来可能会有有趣的用途。移植工作目前主要集中在单个软件包的构建系统、预处理器 #ifdef 中未明确区分内核和 libc 的部分,或修复测试套件中假设 Linux 特定行为的部分。在这个过程中,我们还发现了一些 FreeBSD 内核的漏洞,包括 EN-14:06 / CVE-2014-3880。
GNU/kFreeBSD 已经在生产环境中使用,主要用于 Web 服务器、电子邮件服务器和文件服务器;其中一台机器已运行了 475 天,每天接收约 10,000 封电子邮件。得益于 FreeBSD 10.1 引入的新特性,它在桌面/笔记本电脑上的使用变得越来越实用。
KMS 图形支持使得 3D 游戏和高清视频播放表现出色。我们对 Intel 图形芯片组有很好的支持,但只有较旧的 nvidia Xorg 驱动程序。对于 radeonkms,Robert Millan 能够增加固件加载支持,以便将非自由二进制模块单独打包,而不需要包含在 Debian 的主库中。专有驱动程序对我们没有用,因为它们需要从源代码重新编译才能移植。
vt(4) 是 KMS 支持所必需的,以避免 VT 切换问题。但它还改善了控制台对非 ASCII 字符集的处理,我们期待着能为非拉丁字母脚本提供控制台字体。
我们已经支持 ZFS 一段时间了,甚至将其作为根/引导文件系统(使用 GRUB 2;Robert Millan 增加了 ZFS 支持,目前 FreeBSD 本身也能从中受益)。来自 OpenZFS 的增强功能,特别是 LZ4 压缩,结合更好的内存管理和 GEOM 改进,意味着 "jessie" 版本应该会带来明显的性能提升。
debian-installer 已经允许预设、无人值守的安装,并提供 PXE 引导的安装镜像。
virtio 驱动程序是 “jessie” 版本中的新特性,支持一些公共云。我们现在正在将 Xen domU 和 PVHVM 支持编译进我们的标准内核构建。
我们已经有用户空间工具来配置 PF 防火墙。作为实验,我们正在为即将发布的版本默认编译 IPSEC 支持,并希望能在当前的隐私和安全威胁面前发挥作用。
我们尝试支持在 FreeBSD 主机系统中使用 Debian GNU/kFreeBSD,并希望能够反向操作。某些 jail 工具尚未打包,但我们在 Debian Wiki 上有关于如何在 "wheezy" 中设置 jail 的文档,且这些文档是完全可用的。
我们目前使用的 init 系统是并行的 System V 风格 init,尽管 Debian GNU/Linux 将转向 systemd。对于下一个版本,我们可能会切换到 OpenRC,该系统已经大部分移植完成。
由于没有 systemd 或 udev,我们将无法在即将发布的版本中支持 GNOME 3.14。我们对 XFCE 有很好的支持,也有 KDE、LXDE 和最近打包的 MATE 桌面环境。Debian 软件库提供了许多其他 Xorg 窗口管理器,如 IceWM,还有数十种终端仿真器等。
随着 Debian “jessie”版本冻结的临近,我们欢迎大家测试 GNU/kFreeBSD,尝试将其用于任何有用的用途,并告知我们遇到的问题。可以在我们的项目邮件列表或 IRC 频道寻求帮助,也可以报告任何发现的错误。我们还有时间在发布前修复问题,并随时欢迎改进我们的文档。
联系方式:Kamil Czekirda <kczekirda@FreeBSD.org>
这是一个谷歌编程之夏项目,旨在提供一个非交互的 FreeBSD 网络安装过程。在第一部分中,为脚本化的 bsdinstall(8) 添加了一个实现。它支持如 KEYMAP、HOSTNAME、MIRROR、RELEASE、TIMEZONE、DAEMONS、ROOTPWHASH 和 USERS 等变量。还包括网络配置、ZFS 选项等。
项目的第二部分涉及通过 PXE 从网络引导 fai(完全自动安装程序)。创建了一个基于 mfsBSD 的安装镜像。在启动后,fai 会查找 DHCP 服务器的 bootfile-name
`参数,该参数告诉 fai bsdinstall 脚本的位置。fai 支持基于 MAC 的配置,如果不存在 MAC 配置文件,则使用默认配置。
该项目由 2014 年的谷歌编程之夏赞助。
文档编写,包括 HOWTO 和手册
在不同配置中进行更多测试
计划支持多个网络接口
Jenkins CI 服务器在 FreeBSD 集群中的应用
Jenkins 工作组在 DevSummit 上的讨论
Jenkins 在 BSDCan 上的演示
clang 静态分析器
FreeBSD 静态分析结果
BSD Now 第 44 期
livirt 和 bhyve
Kyua 测试框架
更新 FreeBSD 中 Jenkins 使用 JNA 4.1.0 的问题
为 Jenkins 升级 JNA 的拉取请求 #1
为 Jenkins 升级 JNA 的拉取请求 #2
用于测试 pkg 的 Jenkins 作业
Kyua 发现的 yacc bug
Jenkins 发现的 IPv6 多播 join() 问题
Kyua 快速入门指南
联系方式:Craig Rodrigues rodrigc@FreeBSD.org 联系方式:Jenkins 管理员 jenkins-admin@FreeBSD.org 联系方式:FreeBSD 测试组 freebsd-testing@FreeBSD.org
在 5 月,Craig Rodrigues 在 Ottawa 举办的 FreeBSD Devsummit 上领导了一个名为“Continuous Integration and Testing with Jenkins for FreeBSD”的工作组。Craig Rodrigues 还在 BSDCan 上做了 Jenkins 相关的演讲。
在 BSDCan 上,Craig Rodrigues 与 Julio Merino 讨论了如何更好地将 FreeBSD 测试工作与 Jenkins 和 Kyua 集成。经过这次讨论,Julio Merino 对 Kyua 测试框架进行了增强,加入了 kyua report-junit 命令。这个命令将 Kyua 测试结果转换为 JUnit XML 格式的测试报告,Jenkins 可以直接导入这些测试结果并美观地展示。
在 6 月,Craig Rodrigues 参加了 BSD Now 第 44 期的采访,采访内容涉及 Jenkins 和 FreeBSD 项目中的持续集成。
在 7 月,Craig Rodrigues 向 Bay Area FreeBSD Users Group (BAFUG) 提供了一场关于 Libvirt 和 bhyve 的演讲,内容基于他在 Jenkins 中使用这些技术的经验。
許立文设置了一个 Jenkins 作业,使用 LLVM 的 scan-build 工具对 FreeBSD 代码进行静态分析,并将结果发布在 scan.freebsd.org 上。
Steve Wills 修改了构建 pkg(8) 的 Jenkins 作业,使用 kyua report-junit 命令将 pkg(8) 测试结果整合到 Jenkins 中。
Anthony Williams 报告了 Jenkins 中捆绑的 Java Native Access (JNA) 库在 FreeBSD 上存在问题。这导致 Jenkins 使用 libpam 和其他使用 JNA 的插件时出现问题。Craig 针对此问题在 Jenkins 中提交了 JENKINS-24521,并为 Jenkins 提交了补丁,更新到 JNA 4.1.0 版本,该版本解决了 FreeBSD 上的问题。
Craig Rodrigues 致力于使用 Kyua 测试框架在 Jenkins 中自动运行 FreeBSD /usr/tests 目录中的测试。Craig Rodrigues 向 Julio Merino 提供了关于 Kyua 的反馈,Julio Merino 根据这些反馈修复了 Bugs 和增加了新特性。Craig Rodrigues 还对 FreeBSD 提交了一些修复,解决了部分测试失败的问题。其中一个测试仍然会导致 byacc 崩溃。该问题在 PR 193499 中进行了追踪。byacc 的维护者 Thomas E. Dickey 提交了补丁,已被提交到 FreeBSD。
Craig Rodrigues 分析了 Jenkins 启动时打开多播套接字时出现的一些错误原因,并与 Bruce M. Simpson 进行了讨论,该问题记录在 PR 193246 中。Java JDK 依赖于 Solaris 中的一项功能,允许使用 IPv4 多播地址映射到 IPv6 地址的方式打开 IPv4 多播套接字。在 Linux 上,JDK 本身进行了修改,以绕过这一问题。Bruce M. Simpson 表示,要使 FreeBSD 的 IPv6 栈行为像 Solaris 一样,需要一些工作。
Craig Rodrigues 开始编写 Kyua 快速入门指南,旨在帮助新用户编写和运行 Kyua 测试。Craig Rodrigues 正在寻求反馈,以帮助改进此指南。
将更多的修复(如 JNA 修复)提交到 Jenkins 上,以便 FreeBSD 使用。
自动构建 /usr/tests。
基于现有 FreeBSD Tinderbox 示例设置更多构建。
获取关于 Kyua 快速入门指南的反馈。
我们需要更多的人加入 freebsd-testing@FreeBSD.org 并提供帮助。我们特别需要具有 DevOps 和脚本经验的人来帮助我们设置更多的构建和测试。我们还希望与项目的其他部分进行集成,如 Phabricator。
联系方式:Edward Tomasz Napierała trasz@FreeBSD.org
当前自动挂载器 amd(8) 的局限性是 FreeBSD 用户反映的一个常见问题。为了应对这些问题,正在开发一个新的自动挂载器。
新的自动挂载器是一个清晰实现的功能,通常在其他 Unix 系统中也有,使用了适当的内核支持,并通过 autofs 文件系统实现。该自动挂载器支持标准的映射格式,并将与轻量级目录访问协议(LDAP)服务集成。
FreeBSD 基金会与企业和大学用户合作,测试新的自动挂载器在现有基于 LDAP 的环境中的表现,其中包括一些有成千上万条映射条目的环境。
该代码现已准备好使用,已提交到 11-CURRENT 和 10-STABLE,并将作为 10.1-RELEASE 的一部分发布。目前正在进行性能改进和修复可能的错误。
此项目由 FreeBSD 基金会赞助。
联系方式:Sean Bruno <sbruno@FreeBSD.org> 联系方式:Juergen Lock <nox@FreeBSD.org> 联系方式:Stacey Son <sson@FreeBSD.org>
FreeBSD 为一级架构的 i386 和 amd64 CPU 架构构建的软件包由一台性能非常高的机器完成。其他架构缺乏等效硬件,因此我们开始尝试使用 QEMU 的用户模式仿真,从 amd64 构建器交叉构建软件包。
我们已经从仅能生成软件包,发展到为 ARMv6 提供一个稳定的软件包仓库。
ports-mgmt/poudriere-devel 仍然是当前构建软件包的方法。有关方法的解释和细节,请参见之前的状态报告。
联系方式:Alexander Motin <mav@FreeBSD.org>
CAM 目标层 (CTL),作为内核 iSCSI 服务器的基础,支持 VMWare VAAI 和 Microsoft ODX 存储加速。这使得能够避免网络瓶颈,并提高大规模操作的存储效率,例如虚拟机(或大文件)的创建、初始化为零、复制、删除等。
VMWare VAAI 包括对以下原语/SCSI 命令的支持:原子测试与设置 (ATS) — 比较与写入命令;扩展复制(克隆)— SPC-3 子集的 XCOPY 命令;写相同(零)— 一组写相同命令;死区回收(删除)— UNMAP 命令。
Microsoft ODX 包括对以下 SCSI 命令的支持:填充令牌/使用令牌写入(SPC-4 扩展的 XCOPY)、写相同和 UNMAP。
所有 XCOPY 操作当前限制为单一存储主机。ODX 操作当前仅限于 iSCSI 磁盘。加速的主机间复制或从 Samba 共享文件的复制尚未实现,仍由发起者以传统方式处理。
该代码已提交到 FreeBSD 主分支和 stable/10 分支,并将出现在 FreeBSD 10.1 和 FreeNAS 9.2.1.8 / 9.3 版本中。
此项目由 iXsystems, Inc. 赞助。
完全支持精简配置,包括容量使用报告和阈值通知。
主机间 XCOPY 操作。
联系方式:Jason Edwards <sub.mesa@gmail.com>
ZFSguru 是一款多功能的服务器设备,重点在于存储。ZFSguru 起初是一个简单的 ZFS Web 界面前端,但随着时间的发展,已成长为一个拥有自己基础设施的 FreeBSD 派生项目。项目的范围也随着包含附加包而扩展,这些附加包增加了传统 NAS 功能之外的功能,类似于 FreeNAS 和 NAS4Free 等产品。ZFSguru 的目标是成为一款真正的多功能服务器设备,非常容易设置,并能够将新手和更有经验的用户聚集在一个用户界面中。项目的模块化特性防止了臃肿,同时仍允许轻松部署扩展功能。
第三季度的开发工作主要集中在新的构建基础设施上。这使得 ZFSguru 项目能够以更高的频率发布新的系统镜像以及附加服务,并且减少了手动干预。这应该能够腾出大量开发时间,专注于项目的核心部分:Web 界面。
此外,新的官方网站和论坛正在开发中,取代了旧式的功能有限的网站。新网站将与服务器数据库相连接,提供关于项目的实时更新。
另外,新的协作开发平台也在筹备中。为 GitLab 项目创建了一个服务附加包,GitLab 是流行的 GitHub 网站的替代品。我们选择托管自己的解决方案,而不是依赖 GitHub。回顾来看,这个决定证明是正确的。最近 GitHub 因 DCMA 下架项目的开发趋势,与 ZFSguru 项目所提倡的信息自由流动理念不符。通过托管我们自己的解决方案,我们避免了对第三方项目的依赖。
下一个任务是引入新的远程数据库结构,称为 GuruDB。这将加速 Web 界面,并引入服务公告,向用户传递重要通知,并宣布新的发布版本。
在 GuruDB 之后,迁移管理器是 Web 界面中仍然缺少的最后几个功能之一。该功能提供了一种简单的方式,通过执行新的干净安装来升级当前系统,同时将所有相关配置迁移到新安装中。它还允许用户“备份”所有系统配置到一个文件中,以便在其他机器上存储,以防出现问题。
关于 ZFSguru 项目的 2014 年开发进展的详细版本以及与新发布的 10.1-002 系统镜像相关的信息,请参见链接部分。
联系方式:Konstantin Belousov <kib@FreeBSD.org>
更新 Intel 显卡芯片组驱动(i915kms)以支持最新的 Linux 上游代码快照的项目仍在进行中。一个包含大量更新的补丁已发布,供测试以检测回归问题,但预计尚未能提供新的工作功能。GEM I/O ioctl 代码路径已修改,更加接近 Linux 的代码结构(以便未来导入)。
此项目由 FreeBSD 基金会赞助。
修复报告的最新补丁版本中的任何错误。
使 Haswell 图形与 Mesa 兼容。
联系方式:Ilya Bakulin <ilya@bakulin.de>
SDIO 是一种扩展现有 SD 卡标准的接口,允许将不同的外设连接到具有标准 SD 控制器的主机。目前市场上销售的外设包括 WLAN/BT 模块、摄像头、指纹识别仪和条形码扫描仪。SDIO 也用于在像 Chromebook 和 Wandboard 等产品中连接一些外设。
该项目当前的主要任务是重新实现现有的 MMC/SD 栈,采用 CAM 框架。这将使得能够利用经过充分测试的 CAM 锁定模型和调试功能。
该项目的第一版代码已上传到 Phabricator 进行审查。新栈能够附加到 SD 卡并使其处于操作状态。当前唯一支持的 SD 控制器驱动是 ti_sdhci,BeagleBone Black 使用此驱动。修改其他符合 SDHCI 的驱动不应该是难题。
此时,确实需要来自内核开发人员的反馈。这可以通过代码审查的方式进行。如果实现 CAM 感知 MMC 栈的方式被认为是正确的,那么接下来的任务是添加与 SD 卡交互的代码(例如,设置最佳传输速率)。
编写一个 CAM 外设驱动程序,实现与 FreeBSD disk(9) 的接口。它将通过 MMC XPT 层发送 MMC I/O 命令。
扩展 camcontrol(8),使其能够直接通过 pass(4) 向 MMC/SD 卡发送 MMC 特定命令,这将大大有助于为栈开发新特性。
修改 sdhci(4) 驱动程序以支持新栈。这是必要的,以便使用 PC 硬件而不仅仅是 BeagleBone Black 使用新栈。
联系方式:Ed Maste <emaste@FreeBSD.org> 联系方式:Nathan Whitehorn <nwhitehorn@FreeBSD.org>
统一扩展固件接口(UEFI)为 x86 和其他计算机提供引导和运行时服务。对于 x86 架构,它取代了传统的 BIOS。该项目将调整 FreeBSD 引导加载程序和内核启动过程,以与现代服务器、桌面和笔记本电脑上的 UEFI 固件兼容。
在过去的三个月里,Ed 和其他开发人员精炼了现有的 UEFI 支持,并将其合并到 stable/10 分支,以供即将发布的 FreeBSD 10.1 版本使用。
为了避免回归的风险,标准的 FreeBSD 10.1 安装映像仍然使用现有的分区方案,仅支持传统 BIOS 启动。带有 UEFI 启用的安装程序映像将在 10.1 中单独提供。
此项目由 FreeBSD 基金会赞助。
编写手动安装文档,包括双重启动配置。
为 ZFS 文件系统实现 boot1.efi。
添加对存储在非易失性内存(NVRAM)中的 UEFI 变量的支持。
调试与某些 UEFI 固件实现相关的启动失败。
支持安全启动。
联系方式:Aleksandr Rybalko <ray@FreeBSD.org> 联系方式:Ed Maste <emaste@FreeBSD.org> 联系方式:Ed Schouten <ed@FreeBSD.org> 联系方式:Jean-Sébastien Pédron <dumbbell@FreeBSD.org> 联系方式:Warren Block <wblock@FreeBSD.org>
vt(4)(即 Newcons)项目为传统的 syscons 系统控制台提供了替代方案。该项目带来了多项改进,包括与图形模式的更好集成和更广泛的字符集支持。
过去三个月中,vt(4) 的大量改进已经提交。Jean-Sébastien Pédron 修复了 vt_vga 上的显著性能回归,特别是在虚拟机上非常明显。Stefan Esser 对所有键盘映射文件进行了转换和清理,以便与 vt(4) 一起使用。
EFI 帧缓冲驱动程序和 ofwfb 驱动程序现在可以与 xf86-video-scfb X11 视频驱动程序配合使用,支持本地分辨率(尽管是未加速的)X。
所有修复和改进都已合并,并将在即将发布的 FreeBSD 10.1 版本中提供。
实现 vidcontrol(1) 支持的剩余功能。
编写 vt(4) 驱动程序和内核接口的手册页。
支持直接由 kbd 设备处理键盘(无需 kbdmux(4))。
CJK 字体。这项工作正在进行中。
默认切换到 vt(4)。
实现兼容模式,以便在 vt(4) 中使用单字节字符集/键码。
联系方式:John-Mark Gurney <jmg@FreeBSD.org>
该项目为 OpenCrypto 框架添加了对 AES-GCM 和 AES-CTR 加密模式的支持。现在,软件版本和基于 AES-NI 加速的版本均已功能正常。Ermal Luçi(eri@)正在为这些附加模式添加对 IPsec 的支持。
此项目由 FreeBSD 基金会和 Netgate 赞助。
为最常见的模式创建测试套件。
联系方式:Ganbold Tsagaankhuu <ganbold@FreeBSD.org>
对 IFC6410 板的初步支持工作因启动加载程序损坏而中断,但现在已重新开始。该板载有 Qualcomm Snapdragon S4 SoC,采用 Krait CPU。该 CPU 被认为是用于智能手机、平板电脑和智能本的“平台”。Krait 与 ARM Cortex-A15 CPU 很相似,且基于 ARMv7 指令集。以下外设正在工作:
Qualcomm 高速 UART 驱动,用于 MSM 7000/8000 系列芯片(已包含在源树中)
Krait 定时器
使 MMC 驱动程序正常工作。可能需要更多专家的帮助。
联系方式:Andrew Turner <andrew@FreeBSD.org>
直到最近,所有 ARM CPU 设计都是 32 位的。随着 ARMv8 架构的引入,ARM 添加了新的 64 位模式。该新模式被命名为 AArch64。Arm64 是 FreeBSD 在 AArch64 模式下移植到 ARMv8 CPU 的进行中版本。
自上次状态报告以来,FreeBSD 已开始执行用户态指令。这包括实现更多所需的内核功能以处理进程创建。使用 clang 编译用户态时,发现了基于系统的版本中的一些问题。预计这些问题将在 clang 3.5 导入时解决。
已添加对设备驱动程序的初步支持。这包括启动 bus_space 函数和中断处理。这使得可以使用来自 armv6 的现有定时器和中断控制器驱动程序,因为这些设备是相似的。FDT 数据现通过标准机制从加载程序传递到内核。
pmap 实现已更改为基于 amd64 代码。这解决了旧实现中的一些问题。
启动到多用户模式
使动态库工作
在实际硬件上进行测试
联系方式:Ed Maste <emaste@FreeBSD.org>
LLDB 是与 Clang/LLVM 相关的调试器项目。它支持 Mac OS X、Linux 和 FreeBSD 平台,Windows 支持正在开发中。它基于更大的 LLVM 项目中的现有组件,例如使用 Clang 的表达式解析器和 LLVM 的反汇编器。
过去三个月的工作主要是维护,确保 FreeBSD 上游 Port 继续构建,并及时处理测试套件的失败。
我计划在基本系统 Clang 更新到 3.5 后导入新的 LLDB 快照。此导入将包括一些上游的改进,例如:
能够为线程单步操作指定计数。
正在进行的 AArch64 开发。
lldb-gdbserver 调试存根的重大进展。
I/O 处理改进。
为大多数符号提供更快的 C++ 名称解码器。
作为谷歌编程之夏项目的一部分,已完成对 amd64 内核调试支持的概念验证实现。它尚未准备好提交,但将成为未来内核调试支持的基础。
该项目由 DARPA/AFRL、SRI International 和剑桥大学赞助。
将远程调试存根(lldb-gdbserver)从 Linux 移植到 FreeBSD。
添加对本地和核心文件内核调试的支持。
实现、修复或测试所有非 amd64 架构上的支持。
验证跨调试。
调查并修复测试套件的失败。
将 LLDB 打包为一个 Port,
对于工作架构,在基本系统中默认启用。
联系方式:Viktor Kuzutov <vkutuzov@accesssoftek.com>
LLVM 地址清理器(Asan)是一款快速的内存错误检测器,可以检测使用后释放错误和缓冲区溢出。它已被移植到 FreeBSD。LLVM 的主线版本已知在 FreeBSD 10.0 上通过了 LLVM 和 Asan 测试套件中的所有测试,且没有出现意外失败。
在 FreeBSD stable/10 上运行的 buildbot 已经建立。请参见链接部分。
为了使在 FreeBSD 上运行启用了清理器检查的程序成为可能,已添加新的 sysctl,名为 kern.proc_vmmap_skip_resident_count
。请参见链接部分。在 stable/10 上运行地址清理器检查时,必须将该 sysctl 设置为 1
。
类似的工作正在进行中,以将 FreeBSD 支持添加到线程清理器(Tsan)中,Tsan 可以检测并发程序中的数据竞争。
联系方式:John Baldwin <jhb@FreeBSD.org>
我已经为 amd64 编写了几个 SSE/AVX 优化版本的 libc 库例程。目前列表中包括 memcpy、memset 和 strlen。对于每个例程,我都编写了简单的回归测试,并在各种 AMD 和 Intel CPU 上执行了一些简单的微基准测试。
最简单的例程是 strlen,在微基准测试中看起来通常是一个成功。memcpy 和 memset 则更为棘手,因为不同的变体在不同的 CPU 上可能表现差异很大。
目前,我还没有相对于 libc 的补丁。待有了,这将适合更多的测试。我希望看到一些实际的基准测试,能够显示出可测量的改进,然后再将这些提交到代码库中。
创建一个包含修改后的 libc 的分支,并适合测试
联系方式:FreeBSD Python 团队 <python@FreeBSD.org>
FreeBSD Python 团队继续改进基于 Python 的软件在 FreeBSD 上的整体体验。
在过去的一季度,Port 基础设施中的 bsd.python.mk 部分已转换为更现代的 USES 格式。为了使基础设施更易于维护,并减轻 Port 维护者的复杂性,多个选项(如对 easy_install 的支持)已被弃用或移除。
Python Port 经过重构和简化,以提高可维护性,并解决因之前复杂且容易出错的构建过程所导致的长期问题。
Python 2 分支已更新为 Python 2.7.8,setuptools 更新为 5.5.1。
随着 pkg 1.3 的推出,安装不同 Python 版本的 Python 包和模块现在可以在包管理基础设施中支持。这使得我们可以删除之前需要的 Python 2 和 Python 3 的 Port 重复。
停用 Python 3 特定的 Port 重复。
将 Port 转换为新的 USES 语法。
更多任务可以在团队的 Wiki 页面上找到(见链接)。
想要参与的人员可以在 IRC 上打招呼,告诉我们他们的兴趣领域!
联系方式:FreeBSD GNOME 团队 <gnome@FreeBSD.org>
GNOME 是一种桌面环境和图形用户界面,运行在计算机操作系统之上。GNOME 是 GNU 项目的一部分,可以与各种类 Unix 操作系统一起使用,包括 FreeBSD。
MATE 是 GNOME 2 的一个分支。MATE Port 已更新为 1.8 版本。
GNOME 使用的矢量图形库 Cairo 已更新为 1.12。此更新使得 GNOME 3 的合并工作得以开始。我们目前正在进行测试构建,以找出因更新不兼容而导致的破损 Port,并修剪那些因不兼容更新而无法构建的 Port,
Gustau Perez 开始了 GNOME 下一个开发版本(3.15)的初步工作,准备为 GNOME 3.15 做准备。我们将完全跳过 3.14 版本。
完成 GNOME 3.12 的合并,并开始跟踪 GNOME 3.15(开发系列)。
联系方式:KDE 在 FreeBSD 团队 <kde@FreeBSD.org>
KDE 在 FreeBSD 团队专注于打包和确保 KDE 和 Qt 在 FreeBSD 上的体验尽可能好。
首先,我们很高兴地宣布,Alonso Schaich,这位长期为我们的实验性 area51 仓库做贡献的开发者,已成为一名 Port 提交者,由 KDE 在 FreeBSD 成员 Raphael Kubo da Costa (rakuco@) 和 Max Brazhnikov (makc@) 指导。
在过去的一个季度,团队持续保持大多数 KDE 和 Qt Port 的更新,主要涉及以下版本:
CMake 3.0.1 和 3.0.2
PyQt 4.11.1、SIP 4.16.2、QScintilla 2.8.3
DigiKam 4.2.0(在 area51 中)
KDE 4.13.3、4.14.0 和 4.14.1(在 area51 中)
KDE Telepathy 0.8.0(在 area51 中)
此外,Qt5 Port 的更新工作已开始,目标是更新至 5.3 系列,并计划在 Q4 将更新后的 Port 提交到我们的实验性 area51 仓库中。
更新过时的 Port,见链接中的 Portscout 条目以获取列表。
将我们在实验性仓库中积累的所有更新 Port 提交到 Ports 中。
联系方式:FreeBSD 图形团队 <x11@FreeBSD.org>
最新的图形堆栈(即,依赖 WITH_NEW_XORG
选项的 Ports )已在所有架构上启用。唯一的回归问题出现在使用 Intel GPU 且运行 FreeBSD 8.X 或 9.0 的用户中。这些版本缺少所需的内核驱动程序,因此 xf86-video-intel 无法正常工作(最后一个支持 UMS 的版本与 xserver 1.12 不兼容)。如果无法或不想更新 FreeBSD 工作站的用户,仍可以使用 xf86-video-vesa。Radeon GPU 用户如果没有 KMS 驱动程序(即,FreeBSD 9.3 之前的版本),可以使用 xf86-video-ati-ums 6.14.6 和 xserver 1.12。
旧版图形堆栈将在下次更新这些 Port 时被移除。请参阅链接中的公告。
硬件上下文支持已添加到 i915 驱动程序的 HEAD 和 10.1-RELEASE 中。这将使我们能够将 libglapi、libGL、dri、libEGL 和 libglesv2 Port 更新为更高版本的 Mesa。最新版本已经可以从我们的开发 Ports 中获取(见链接部分)。
Cairo 已更新至 1.12。此更新将使 FreeBSD GNOME 团队能够升级 pango 和 Gtk+ 3。不幸的是,更新也暴露出 xf86-video-intel 2.7.1 的问题,远比之前预期的更糟。
我们将参加 2014 年 10 月 8 日至 10 日在法国波尔多举行的 XDC 2014(X.Org 开发者大会)。目标是与主要使用 Linux 的图形堆栈开发者重新建立联系。我们将就 FreeBSD 上的图形堆栈当前状态进行演讲。请查看 XDC 网站(见链接部分)以获取节目和直播信息。
请参见 “Graphics” Wiki 页面,获取最新信息。
联系方式:FreeBSD Xfce 团队 <xfce@FreeBSD.org>
Xfce 是一个面向 Unix 和类 Unix 平台(包括 FreeBSD)的自由软件桌面环境。它旨在快速、轻量,并且在保持视觉吸引力和易用性的同时提供高效的用户体验。
Xfce 团队继续保持 Xfce 桌面每个组件的更新。因此,我们正在致力于下一个稳定版本(尚未确定发布日期)。本季度,Ports 中没有重大更新,除了外观上的一些变化。
即将到来的主要变化包括:
切换到 USES 框架
支持 GTK2 和 GTK3,默认使用 GTK2
一个类似 GNOME 的默认图标主题
增强的文档(手册、FAQ)
以下是开发仓库中的当前 Port 列表(见链接):
deskutils/xfce4-xkb-plugin 0.7.0
devel/xfce4-dev-tools 4.11.0
misc/xfce4-appfinder 4.11.0
multimedia/xfce4-parole 0.6.1 和 0.7.0
sysutils/garcon 0.3.0
sysutils/xfce4-settings 4.11.3
x11/libxfce4menu 4.11.1
x11/libxfce4util 4.11.0
x11-wm/xfce4-desktop 4.11.8
x11-wm/xfce4-panel 4.11.1
x11-wm/xfce4-session 4.11.0
另外,还有两个新 Port :
deskutils/xfce4-volumed-pulse 0.2.0
x11/xfce4-dashboard 0.2.3 和 0.3.2
更多详情请见我们的 Wiki 页面(见链接部分)。
完成对 ACPI 助手(xfce4-power-manager)的修补。
继续完善文档,特别是 Porter's Handbook,并创建 FAQ。
联系方式:Warren Block <wblock@FreeBSD.org>
ezjail 是一个非常流行的 Jail 管理工具,但在手册中仅被简单提及。这个新部分说明了基本的设置和使用方法。深入的示例展示了如何创建和配置 Jail。它也作为一个示例,演示如何在 Jail 中运行一个简单的缓存-only BIND。
联系方式:Michael Lucas <mwlucas@michaelwlucas.com>
Lucas 正在编写一系列小型的 FreeBSD 书籍。第一本书《FreeBSD Mastery: Storage Essentials》正在进行中,内容涉及 GEOM、gpart、MBR、UFS、GELI、GBDE、磁盘扇区对齐等。你可以在他的官方网站上预定此书并享受折扣,或者等待它正式出版并在所有主要的电子书零售商上销售。
请通过他的博客获取状态更新,或在 Twitter 上查看 @mwlauthor。
Lucas 需要加快写作进度。
联系方式:Allan Jude <allanjude@FreeBSD.org> 联系方式:Benedict Reuschling <bcr@FreeBSD.org> 联系方式:Warren Block <wblock@FreeBSD.org>
ZFS 是 FreeBSD 的一项重要功能,文档的质量应与其他重要功能相匹配。许多来自 Sun 和 Oracle 的原始文档已不复存在、已被移动,或者仅涉及 ZFS 的专有版本。OpenZFS 项目没有提供太多文档,而是为用户提供了一些链接,包括 FreeBSD 手册。新用户对 ZFS 有许多问题,但关于 ZFS 的错误建议远远超过正确的文档。
经过一年多的工作,一个新的 ZFS 章节已被添加到 FreeBSD 手册中。超过 20,000 个字说明了创建、管理和维护 ZFS 池的基本知识。还涉及了压缩、去重和委托等高级功能。该章节还包含了术语表,解释了 ZFS 特有的一些概念,并记录了可以用于调整的许多 sysctl 变量。
剩下的工作是 FAQ 部分,旨在帮助用户解决他们在使用 ZFS 时可能遇到的最常见问题或难题。我们希望听到其他用户对 FAQ 部分的经验、问题、误解、陷阱、障碍和建议。还计划添加一个用例部分,突出 ZFS 相较于传统文件系统的优势。
请将建议发送到文档邮件列表。
该项目由 ScaleEngine Inc. 赞助。
Matt Ahrens(ZFS 的共同创造者)进行技术审查
改进委托部分
改进调整部分,并涵盖最近添加的 sysctl
添加关于 Jail 和 jailed 属性的部分
添加 FAQ 部分
添加用例部分
一般编辑和审查
联系方式:Deb Goodkin <deb@FreeBSDFoundation.org>
FreeBSD 基金会是一家 501(c)(3) 非营利组织,致力于支持和推广 FreeBSD 项目及其全球社区。大部分资金用于支持 FreeBSD 开发项目、会议和开发者峰会,购买设备以扩展和改进 FreeBSD 基础设施,并为项目提供法律支持。
我们发布了 FreeBSD 期刊的第四期。截至目前,我们已有 4500 多个订阅。我们继续进行动态版支持的开发,该版本将很快推出。第五期也将很快发布。
基金会工作人员 Konstantin Belousov 完成了 PostgreSQL 性能调查项目。Kostik 重新运行了基准测试,因为配置错误可能影响了早期的结果。调查得出的改进已合并到 FreeBSD 10 开发分支中,并将在 10.1 版本中发布。Kostik 还提交了各种虚拟内存和文件系统的 bug 修复和改进。
在本季度,基金会工作人员 Edward Napierała 改进了基于 autofs 的自动挂载器,并在企业和大学环境中收集了测试反馈。该自动挂载器现已在 FreeBSD 开发分支中提供,并将在 FreeBSD 10.1 中包含。Edward 还支持 Chelsio 工程师准备 iSCSI 卸载支持,适用于 Chelsio 的 10 和 40 千兆以太网适配器。
我们的项目经理 Ed Maste 测试并将 UEFI 系统启动和新的 vt(4) 控制台工作集成到即将发布的 FreeBSD 10.1 版本的发布分支中。他提交了若干小的工具链和构建基础设施改进。他还为 FreeBSD Journal 撰写了一篇关于 LLDB 的文章,并在 EuroBSDCon 上展示了 LLDB 的工作成果。
FreeBSD 基金会系统管理员和发布工程师 Glen Barber 继续完成 9.3-RELEASE 版本的最终工作,并启动了 10.1-RELEASE 版本的工作。
工作继续进行,定期更新的 FreeBSD 开发快照构建已发布,涵盖多种支持的架构,包括 amd64、i386、ia64、powerpc、powerpc64、sparc64 和 arm。
此外,项目分支上已提交的工作允许在发布过程中默认生成 FreeBSD 虚拟机磁盘映像。
已制定计划,准备进行即将到来的安全启动工作。
为了支持 FreeBSD 基础设施,已经购买了更多硬件,部署在 NYI 和 Sentex。
我们宣布了基金会与 Cavium 的合作,将推出基于 FreeBSD 的 ARMv8 实现。
我们与 Oracle 签订了许可协议,以获取 Java 7 和 8 的 TCK(测试兼容性套件)。
Robert Watson 组织并主持了剑桥开发者峰会。我们为一名谷歌编程之夏学生提供了旅行赞助,使其能够参加峰会。
我们为一位组织和举办了阿根廷 BSDDay 的开发者提供了旅行赞助。
我们是 EuroBSDCon 2014 的金牌赞助商,并赞助了开发者峰会。我们为 FreeBSD 贡献者提供了 4 个旅行赞助,帮助他们支付参加会议的差旅费用。我们还派出了 6 名董事会成员/员工参加会议,并有一些成员做了演讲、教程,并主持了会议部分。我们在那里举行了秋季筹款活动,筹集了超过 2000 美元的捐款。
我们组织了硅谷供应商/开发者峰会,会议将于 11 月 3 日和 4 日举行。
Kirk McKusick、Robert Watson 和 George Neville-Neil 发布了《FreeBSD 操作系统设计与实现》第二版。
Kirk McKusick 在 EuroBSDCon 上进行了为期两天的 FreeBSD 内核教程,并发表了关于 ZFS 实现的演讲。
Dru Lavigne 参加了 Fossetcon:9 月 11-13 日(fossetcon.org)。
我们为即将到来的活动制作了新的招聘传单,包括 Grace Hopper 大会。
我们开始发送基金会的每月更新邮件,以便让 FreeBSD 社区了解我们为支持 FreeBSD 所做的一些工作。