FreeBSD 2015 年第二季度状态报告
FreeBSD 2015 年第二季度状态报告
介绍
2015 年第二季度,从 4 月到 6 月,是 FreeBSD 又一个忙碌的时期。此次报告是我们迄今为止发布的最大的一期。
集群和发布工程团队继续改善支持 FreeBSD 构建、维护和安装的结构。项目内容涉及了从安全性和性能改进到虚拟化和存储设备等各个领域。新增了内核驱动程序和功能,同时 FreeBSD 在各种 ARM 架构上的运行工作也在快速推进。Ports 在扩展的同时,也修复了问题并增加了功能。外部项目如 pkgsrc 也开始关注增加支持。文档工作是一个重要的焦点,尤其是对于那些刚接触 FreeBSD 的人来说,这一点经常受到赞扬。BSDCan 2015 取得了巨大成功,将许多失眠的夜晚转化为更强大的灵感。
和往常一样,这些活动中的很大一部分是由 FreeBSD 基金会直接赞助的。该项目作为一流操作系统的地位,离不开基金会过去和现在的辛勤工作。
这些报告的数量和详细程度只能给我们一个微小的视角,去看到所有正在发生的事情。FreeBSD 的开发有着巨大的工作量,时刻进行着包括 bug 修复、功能改进、重写代码和新代码导入等持续工作。这项工作既艰难又耗时,而且往往没有得到应有的认可。我们应当花一点时间,感谢那些不仅在这里列出的贡献者,还有那些使 FreeBSD 成为一个高效而有用操作系统的最终用户、bug 提交者、Ports 维护者、编码者、安全分析员、基础设施捍卫者、爱好者、科学家、设计师、提问者、回答者、规则制定者、测试人员、文档作者、系统管理员、教条主义者、反叛者和疯狂的天才。如果你正在阅读这篇报告,你也是其中的一员。谢谢你。
——Warren Block
本报告由 Benjamin Kaduk 和 Warren Block 编写。请在 2015 年 10 月 7 日之前提交 2015 年第三季度(7 月到 9 月)的状态报告。
联系方式:FreeBSD 集群管理团队 <clusteradm@>
FreeBSD 集群管理团队负责管理项目依赖的机器,以便其分布式工作和通信能够保持同步。在本季度,团队在 FreeBSD 基础设施之外做了大量的工作,这些工作有些是外界可见的,有些则不可见。
将 FreeBSD 开发人员使用的参考机器迁移到 FreeBSD 基金会在 New York Internet 购买的新机器上
将电子邮件服务(以及单点故障的情况)从处理该任务超过 18 年的机器迁移到新的、专用的服务安装上
重组了基础设施,将由 svn.freebsd.org 托管的仓库服务通过 GeoDNS 支持的镜像提供,并且所有镜像都使用单一的官方 SSL 证书
在目前的八个全球地理位置上,提高了公共和非公共服务的多站点冗余性
尽管其中大量的工作由志愿者推动,但资源(时间和硬件)得到了 FreeBSD 基金会的慷慨支持。
该项目由 FreeBSD 基金会赞助(提供时间和硬件)。
联系方式:FreeBSD 发布工程团队 <re@FreeBSD.org>
FreeBSD 发布工程团队负责设定和发布官方项目版本的发布计划,宣布代码冻结,以及维护相应的分支等工作。
FreeBSD 10.2-RELEASE 的发布周期从 6 月中旬开始,预计最终版本将在 8 月下旬发布。正如本季度的状态更新所显示的,FreeBSD 10.2-RELEASE 将是一次非常令人激动的发布。
本季度,FreeBSD 发布工程团队非常忙碌,重点放在了为更多硬件提供支持并与第三方托管服务商(即“云”托管)进行集成。
在 Andrew Turner 将 FreeBSD 移植到 arm64(aarch64)架构的工作基础上,发布工程的构建工具被更新,以生成 FreeBSD/aarch64 内存棒镜像和虚拟机镜像,用于 Qemu(emulators/qemu-devel)模拟器。目前,Qemu 虚拟机镜像需要一个外部 EFI 文件才能启动。有关如何启动 FreeBSD/aarch64 虚拟机镜像的详细信息,请查看相关的 FreeBSD 开发快照公告邮件存档。
在上个季度,构建工具的多个部分进行了重写,以实现更大的可扩展性和更精细的控制,这简化了新虚拟机镜像所需的代码。
与多个开发者合作,发布工程构建工具被更新,以支持更多的托管提供商,并提供了自动上传(以及在可能的情况下发布)FreeBSD 虚拟机镜像的机制。
本季度,除了对 Microsoft Azure 平台的现有支持外,构建工具还原生支持:
Amazon EC2(感谢 Colin Percival)
Google Compute Engine(感谢 Steve Wills)
Vagrant/Hashicorp Atlas(感谢 Brad Davis)
FreeBSD 发布工程团队要感谢这些开发者为实现这一目标所做的所有工作,特别感谢 Marcel Moolenaar 对 mkimg(1) 工具的贡献,尤其是在添加对各种请求的文件格式支持方面。
除了虚拟机构建工具的增强外,构建代码的重构也投入了大量工作,用于生成 FreeBSD/arm 镜像。
现在,FreeBSD 发布工程工具原生支持生成 FreeBSD/arm 镜像,而不需要外部构建工具,这一过程大致类似 Crochet 工具(由 Tim Kientzle 编写)如何工作的方式。在 Ian Lepore、Warner Losh、Andrew Turner、Luiz Otavio O Souza 和大量来自 freebsd-arm@FreeBSD.org 邮件列表的贡献者们的支持、投入和建议下,FreeBSD 发布工程工具现在可以原生支持生成 FreeBSD/arm 镜像。
目前,构建工具支持为以下平台构建 FreeBSD/arm 镜像:
BEAGLEBONE
CUBOX/HUMMINGBOARD
GUMSTIX
树莓派 B
树莓派 2(仅限 FreeBSD-CURRENT)
PANDABOARD
WANDBOARD
FreeBSD 发布工程团队要感谢这些人的支持和贡献,特别感谢 Tim Kientzle 对 Crochet 工具的贡献。如果没有它,我们可能无法为目前能够支持的各个板卡生成镜像。
有关自 10.1-RELEASE 以来 FreeBSD 的其他变更信息,请参阅 FreeBSD 10.1-STABLE 发布说明(这将成为 10.2-RELEASE 的发布说明)。
此外,Glen Barber 想感谢 Jim Thompson 提供了一块 BeagleBone Black 板(替代了不再工作的那块),以及 Benjamin Perrault 提供了一块 PandaBoard ES,它们都用于本地测试构建工具生成的镜像。
最后,Glen Barber 还要感谢 FreeBSD 基金会的支持,并为提供了实现本报告中提到的所有项目所需的资源(时间和硬件)表示感谢。
该项目由 FreeBSD 基金会赞助。
联系方式:FreeBSD 核心团队 <core@FreeBSD.org>
FreeBSD 核心团队构成了项目的“董事会”,负责决定项目的总体目标和方向,并管理 FreeBSD 项目领域的具体事务。
为了吸引新的开发者加入 FreeBSD,核心团队有一个政策,即提供最新的开发工具和服务。核心团队长期以来一直鼓励 FreeBSD 提交者充分利用项目的 Phabricator 实例,地址为 https://reviews.FreeBSD.org,现在也支持 Phabricator 管理员开放账户注册,供任何感兴趣的人使用。
进一步的开发计划包括设置 FreeBSD.org 的 OAuth 2 提供者,并允许通过 OAuth 风格的单点登录(SSO)访问大多数基于 Web 的 FreeBSD 服务。开发者和公众成员还可以使用来自 GitHub、Twitter 或 Google 等其他提供商的凭据来认证自己,以访问 FreeBSD 的 Web 服务。
Mark Murray 提出了一个长期存在的问题,即他在对 random(9) 提出的更改进行安全审查时遇到了困难。这是内核中一个极其敏感的安全领域,任何错误都可能带来灾难性的后果。核心团队成功地召集了多个审查员,并在简化设计、消除一些复杂的代码和减少潜在攻击面方面取得了显著进展。工作仍在继续,核心团队对引入具有加密领域专业知识的外部审查员持开放态度。
Dag-Erling Smørgrav 于 5 月底辞去了安全官。核心团队对他的离职表示遗憾,但一致高兴地欢迎他的提名人、前副手李鑫担任继任者。李鑫随后任命 Gleb Smirnoff(他也是核心团队的现任成员)为新副手。在他们和核心团队的共同努力下,关于如何改进项目对安全问题响应的讨论中有一些相当激进的想法。
6 月中旬,提出了对 style(9) 的更改,并引发了激烈的讨论。Warner Losh 在 Phabricator 上进行了一项非正式的民意调查,并且该更改在几天内获得了批准和提交。不幸的是,由于投票方式和时间安排问题,提出了投诉,核心团队被要求进行裁定。自愿撤回此修改后,重新进行了民意调查并延长了投票时间,最终该更改得到了批准。
在此期间,我们授予了两位新提交者权限,保留了一位提交者的权限。欢迎 Chris Torek 和 Mariusz Zaborski 加入团队,我们对 Steve Kargl 决定离开表示遗憾。
联系方式:Shawn Webb <shawn.webb@hardenedbsd.org> 联系方式:Oliver Pinter <oliver.pinter@hardenedbsd.org> 联系方式:HardenedBSD <core@hardenedbsd.org>
HardenedBSD 是 FreeBSD 的一个下游发行版,旨在实现利用缓解和安全技术。HardenedBSD 开发团队专注于几个关键功能,其中之一就是地址空间布局随机化(ASLR)。ASLR 是一种计算机安全技术,有助于缓解诸如缓冲区溢出等低级漏洞。ASLR 随机化运行中应用程序的内存布局,从而防止攻击者知道给定漏洞在内存中的位置。
在过去的一个季度,HardenedBSD 团队完成了 ASLR 的核心实现。我们实现了真正的栈随机化,并加入了随机栈间隙。此更改使我们能够将 42 位熵应用到栈中,这是所有操作系统中最高的。我们默认将 amd64 上的 hardening.pax.aslr.stack_len
sysctl(8) 设置为 42。
我们还随机化了虚拟动态共享对象(VDSO)。VDSO 是内核和用户空间之间共享的一个或多个内存页面。在 amd64 上,它包含信号触发器和定时代码(例如 gettimeofday(4)
)。
通过这两项更改,ASLR 的实现现已完成。不过,仍然有一些任务需要继续工作。我们需要更新文档并改进一些代码。我们的 ASLR 实现已经在 HardenedBSD 中投入生产,并且运行稳定。
此外,我们目前正在进行筹款活动,以帮助我们建立非营利组织并进行硬件更新。我们收到了社区的很多帮助,我们非常感激。我们还需要更多的支持,帮助项目更进一步。我们期待与 FreeBSD 项目合作,提供卓越的安全性。
该项目由 SoldierX 赞助。
待办事项
更新
aslr(4)
手册页和维基页面。改进共享对象加载顺序功能,使用 Michael Zandi 的改进。
将 ASLR 工作移植到 vanilla FreeBSD。包括 FreeBSD 开发者要求的定制工作。
关闭 Phabricator 上的现有审查。
为 ASLR 补丁中的各个逻辑部分打开多个小型审查。
对 HardenedBSD 10-STABLE 进行特别的回溯,以供 OPNSense 使用。
在 HardenedBSD 中调试 golang 段错误。任何帮助都会很有价值。
联系方式:Peter Grehan <grehan@FreeBSD.org> 联系方式:Neel Natu <neel@FreeBSD.org> 联系方式:Tycho Nightingale <tychon@FreeBSD.org> 联系方式:Allan Jude <freebsd@allanjude.com> 联系方式:Alexander Motin <mav@FreeBSD.org> 联系方式:Marcelo Araujo <araujo@FreeBSD.org>
bhyve 是一个运行在 FreeBSD/amd64 平台上的虚拟机管理程序。目前,它支持运行 FreeBSD(8.x 或更高版本)、Linux i386/x64、OpenBSD i386/amd64 和 NetBSD/amd64 客户操作系统。当前的开发重点是支持更多的客户操作系统并实现其他虚拟机管理程序中发现的特性。
在 BSDCan 2015 上举行 bhyve BoF
在 BSDCan 2015 的午餐时间,举行了一个 bhyve 的 BoF(Birds of a Feather)会议,约有 60 人参加。
Michael Dexter 演示了在 bhyve 中运行的 Windows Server 2012。
讨论中出现的常见主题包括:bhyve 配置、libvirt 与 OpenStack 集成、最佳实践、bhyve 与 ZFS、额外的客户支持和实时迁移。
谷歌编程之夏2015
多个与 bhyve 相关的提案被提交到 2015 年的谷歌编程之夏,其中四个提案被接受:
本季度,bhyve 做了以下改进:
GEOM 存储后端现在能够与 bhyve 正常工作。
设备模型增强和新的指令仿真,以支持 Windows 客户操作系统。
通过在不需要时禁用队列通知来提升 virtio-net 性能。
dtrace FBT 提供程序现在能够与 vmm.ko 正常工作。
Marcelo Araujo 和 Allan Jude 创建了一个粗略的补丁,使 bhyve 能够解析配置文件,以取代现有的通过命令行调用进行配置的方法。由于 bhyve 的快速发展,配置文件变得更加复杂。现正在讨论一种新的配置文件设计,并将支持最终引入 bhyve 的插件架构。
待办事项
改进文档。
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)。
联系方式:Allan Jude <AllanJude@FreeBSD.org> 联系方式:Dmitry Chagin <dchagin@FreeBSD.org> 联系方式:Ed Maste <emaste@FreeBSD.org> 联系方式:Edward Tomasz Napierała <trasz@FreeBSD.org> 联系方式:Johannes Meixner <xmj@FreeBSD.org> 联系方式:FreeBSD 仿真团队 <emulation@FreeBSD.org>
FreeBSD 仿真团队对 FreeBSD 的 Linux 兼容层进行了大量打磨。经过一年半的时间,Dmitry Chagin 对 Linux 二进制兼容层的更改已被合并到 FreeBSD 11.0-CURRENT。在将超过 115 项独立更改合并到 base/head 之前,Ed Maste 和 Edward Tomasz Napierała 帮助审查并改进了代码质量。
目前已开始将这些更改回溯到 FreeBSD 10-STABLE,计划在当前的 10.2 发布周期内完成。我们希望在 10.2-PRERELEASE 转为 10.2-RELEASE 之前,完成这一回溯工作。
与此相关,Allan Jude 上传并改进了一个最近的差异修订,最终将导致我们为 CentOS 6 提供 32 位和 64 位的 Port。Port 审查活动从 BSDCan 大会的开发者峰会开始,并将在剑桥开发者峰会期间继续广泛进行。
我们预计在 2015 年第四季度,能够提供兼容 Fedora 10、CentOS 6 32 位和 CentOS 6 64 位的框架。
求助:贡献
人们可以通过在 FreeBSD 11.0-CURRENT 系统上测试 CentOS 64 位更改,来贡献给仿真团队的工作。遇到任何 bug 或异常,欢迎通过 Bugzilla 进行报告。
对于有抱负的人来说:我们计划开始着手开发 CentOS 7 框架。CentOS7 仅支持 64 位,使用更新的内核,并采用 systemd,因此这项工作仍处于高度实验阶段。我们希望在 2016 年第二季度拥有一个可用的 Port。
该项目由 Perceivon Hosting Inc.、ScaleEngine Inc. 和 FreeBSD 基金会赞助。
待办事项
在 11.0-CURRENT 上测试 64 位 Linux 仿真。
将 64 位 Linux 仿真回溯到 10-STABLE。
审查并合并 64 位 CentOS 6 Port 的更改。
创建/大幅更新现有的 64 位 CentOS 7 Port。
任何希望联系的人可以随时与仿真团队成员联系。同样,也欢迎向仿真团队邮箱 emulation@FreeBSD.org 发送邮件。
联系方式:Max Gurtovoy <maxg@mellanox.com> 联系方式:Sagi Grimberg <sagig@mellanox.com>
基于在 FreeBSD 10.0 中发布的内核内 iSCSI 启动器堆栈以及最近添加的 iSCSI 卸载接口,Mellanox Technologies 开始开发 iSCSI 扩展 RDMA (iSER) 启动器支持,以利用 Mellanox 的 10、40、56 和 100 Gigabit IB/Ethernet 适配器的硬件卸载能力来实现高效的数据传输。
远程直接内存访问(RDMA)已被证明对存储应用有极大的价值。RDMA 基础设施提供了零复制、CPU 卸载、可靠传输、网络整合等多种好处。iSER 协议消除了传统 iSCSI/TCP 堆栈中的一些瓶颈,提供低延迟和高吞吐量,非常适合对延迟敏感的工作负载。
该项目包括一个新的 ICL 模块,实施 iSER 启动器。iSCSI 堆栈略作修改,以支持一些额外的特性,如异步 IO 完成、未映射的数据缓冲区和数据传输卸载。用户将能够通过 iscsictl 选择 iSER 作为 iSCSI 传输。
该项目目前处于测试阶段,最近的更新包括:
基于 11-CURRENT(r284921)进行重构
增加了通过 iSER 的发现支持
支持高可用性(HA)和自动会话重建
将 iSER 从 iSCSI 模块中拆分
此外,iser 驱动程序已经并且仍在进行彻底的测试。测试套件包括:
流量测试
文件系统测试
合规性测试
流量故障切换/回退
会话恢复
动态模块加载/卸载
代码已准备好合并,将根据 BSD 许可证发布。
该项目由 Mellanox Technologies 赞助。
联系方式:Nigel Williams <njwilliams@swin.edu.au>
多路径 TCP(MPTCP)是 TCP 的一种扩展,允许在标准 TCP 会话中使用多个网络接口。新地址的添加和数据在这些接口上的调度对 TCP 应用程序而言是透明的。
该项目的目标是提供一个 MPTCP 内核补丁,能够与参考 MPTCP 实现进行互操作,并对网络研究提供额外的增强功能。
该补丁现已支持 MPTCP 协议的核心机制(多地址操作、数据级重传等)。
最近的更新包括改进的套接字选项处理和部分日志输出的转移到 DTRACE。该补丁已更新为支持 r285254 版本的 HEAD。
一个补丁(v0.5)目前正在测试中,并将在不久后公开发布,计划在此之后更频繁地发布进一步的补丁。
该项目由 FreeBSD 基金会赞助。
待办事项
完成文档和测试,以准备发布 v0.5 补丁。
发布技术报告,概述 v0.5 补丁的实现。
联系方式:Robert Watson <rwatson@FreeBSD.org> 联系方式:Christian Brueffer <brueffer@FreeBSD.org> 联系方式:TrustedBSD 审计邮件列表 <trustedbsd-audit@TrustedBSD.org>
OpenBSM 是一个 BSD 许可的 Sun 基础安全模块(BSM)API 和文件格式的实现。它是 FreeBSD 和 Mac OS X 中 CAPP 审计实现的用户空间部分。此外,审计跟踪处理工具预计也能在 Linux 上运行。
经过一段时间的沉寂后,该项目正在慢慢恢复进展。OpenBSM 源代码库已从 FreeBSD 的 Perforce 服务器迁移到 GitHub。我们希望这将使代码更加易于访问,并激励外部贡献。除了仓库迁移外,还启用了使用 Travis CI 的自动构建测试,并已开始为新版本发布做初步准备。
待办事项
在不同版本的 Mac OS X 和 Linux 上测试 GitHub 上的代码,尤其是在 Mac OS X 10.9(Mavericks)及更新版本上的测试将非常有帮助。
联系方式:Franco Fichtner <franco@opnsense.org> 联系方式:Ad Schellevis <ad@opnsense.org> 联系方式:Jos Schellevis <jos@opnsense.org>
OPNsense 是 pfSense 的一个分支,旨在迅速而紧密地跟随 FreeBSD 的代码库和生态系统,同时保留父项目强大的防火墙功能。新的 15.7 版本包括了一些改进,例如完全基于 pkg 的固件升级和打包、每周安全更新、用 IPFW/dummynet 替代基于 ALTQ 的流量整形、以及将 LibreSSL 集成作为 OpenSSL 的替代方案,达到了生产环境可用的水平。
我们欢迎贡献者和测试者加入,参与重新设计插件支持、根据现代编码标准(MVC)重构 GUI 以及进行权限分离的工作。
该项目由 Deciso 赞助。
联系方式:Edward Tomasz Napierała <trasz@FreeBSD.org>
FreeBSD 长期以来缺乏的一项功能是能够使用临时的 rootfs 启动系统,配置内核以访问真实的 rootfs,然后用真实的 root 替换临时 root。在 Linux 中,这项功能被称为 pivot_root。reroot 项目旨在提供类似的功能,不过是通过稍微更具用户友好的方式:rerooting。从用户的角度来看,系统会执行部分关机,杀死所有进程并卸载 rootfs,然后执行部分启动,挂载新的 rootfs,运行 init,并像往常一样运行启动脚本。
该项目已经进入后期实施阶段。一个工作原型已完成,正在进行重写工作,以更具架构友好的方式实现。
该项目由 FreeBSD 基金会赞助。
待办事项
完成调试工作
联系方式:Jason Edwards <sub.mesa@gmail.com>
ZFSguru 是一款多功能的服务器设备,特别强调存储。ZFSguru 最初是 ZFS 的一个简单 Web 界面前端,但后来发展成为一个具有自己基础设施的 FreeBSD 派生版本。随着项目的推进,功能也得到了扩展,增加了插件包,使其功能超出了类似 FreeNAS 和 NAS4Free 等传统 NAS 功能的范畴。ZFSguru 旨在成为一款真正的多功能服务器设备,极易设置,能够将新手和更有经验的用户聚集在一个统一的用户界面中。项目的模块化特性避免了膨胀的风险,同时仍然允许轻松部署扩展功能。
ZFSguru 项目接近发布 0.3 版本,这对该项目来说是一个重要的里程碑。在这个新版本中,主要的工作已经集中在基础设施上。概述如下:
新的构建基础设施使得可以以半自动的方式频繁发布系统镜像和服务。
新的 GuruDB 数据库支持更多的系统镜像和服务器,并提供良好的缓存,以加速页面加载。
重新设计了安装过程,并新增了除了已支持的 Root-on-ZFS 外的 Root-on-RAM 和 Root-on-Media 发行版。
将提供 LiveCD 和 USB 镜像。USB 镜像还支持 UEFI 启动,支持与常规 MBR 启动并存。
许多重新设计的库和 Web 界面新增功能。
许多服务改进,例如新的 Gnome 3 图形环境。
ZFSguru 0.3 版本将于 8 月 1 日发布。
联系方式:Warner Losh <imp@FreeBSD.org>
这是 Dallas Semiconductor 1-Wire 总线的内核驱动实现,以通用方式进行。虽然温度传感器是最初支持的唯一设备,但其他设备应该也能容易地添加。支持在一个总线上连接多个设备,支持正常模式和超速模式。
多个温度传感器经过良好测试,但存在较高的位错误率。有迹象表明这是由于读取位时的时间问题。代码编写得足够健壮,能够通过重试来应对该问题,错误率足够低,几个重试可以掩盖许多边缘问题。
待办事项
实现超速设备。为 owc 添加超速功能,并提供一种方法,让呈现驱动知道何时可以安全使用超速 ROM 命令。
实现身份识别设备。此设备只有类别为 1,没有寄存器。
实现非 FDT 的 gpiobus 附加。
测试超速时序。
实现其他附件,如串口或专用 1-Wire 控制器。
使用系统时钟实现更精确的延迟,以改善错误率。
使用 GPIO 引脚的中断模式定时线路的过渡,确定位值,而不是忙等待。对写 1 和写 0 操作使用 FreeBSD 的细粒度睡眠来做相同的操作。
审查上面链接中的代码。
在除 RPi、RPi 2 或 BeagleBone Black 之外的设备上测试代码。
在除了 armv6 之外的架构上测试代码。
实现简化的温度模式,其中 convert_t 命令被广播,回调读取总线上检测到的所有设备的值。
实现寄生电源模式。
联系方式:John-Mark Gurney <jmg@FreeBSD.org>
PCI Express(PCIe)热插拔用于笔记本电脑和服务器中,允许外设在系统运行时插入或移除。笔记本电脑通常通过 ExpressCard 插槽或 Thunderbolt 接口提供 PCIe 热插拔。ExpressCard 已内置 USB 支持,FreeBSD 已经支持,但像千兆以太网适配器和 eSATA 卡等 ExpressCard PCIe 设备仅在启动时支持,移除可能会导致 FreeBSD 崩溃。
该项目的目标是允许这些设备在 FreeBSD 运行时插入和移除。此工作将提供支持添加和移除设备的基本基础设施,尽管预计还需要额外的工作来更新单个驱动程序,以支持热插拔。
当前的测试重点是让一个简单的 UART 设备能够正常工作。基本的热插拔功能已实现。
补丁集现已在 github.com 上提供。
该项目由 FreeBSD 基金会赞助。
待办事项
通过保存/恢复必要的寄存器,使挂起/恢复功能正常工作。这应该通过 r281874 来解决。
确保在挂起时移除设备,以便在机器挂起期间进行的硬件更改能够正确处理。
改进状态转换的处理方式,可能通过使用适当的状态机。
联系方式:Ed Schouten <ed@FreeBSD.org>
CloudABI 是一个紧凑的类 UNIX 运行时环境,完全基于基于能力的安全性(Capsicum)。所有与这一模型不兼容的特性都已被移除。使用纯能力基础环境的优势包括提高安全性、可测试性和可重用性。CloudABI 应该能够使任意第三方可执行文件在 FreeBSD 上直接运行,而不会影响系统安全性,使其成为集群/云计算设置的良好构建模块。有关更详细的解释,请参阅 GitHub 上的项目。
上个月,我为 FreeBSD Ports 添加了许多软件包。我们现在拥有一个完整的 C/C++ 交叉编译器,可以非常容易地安装(devel/cloudabi-toolchain)。我还导入了一个名为 cloudabi-run 的工具,可以用来安全地启动程序,只授予程序配置文件中列出的文件和网络套接字的访问权限(sysutils/cloudabi-utils)。
我还将一些内核空间的修改导入到了 FreeBSD 源树中,用于执行 CloudABI 程序。在这些更改导入完成后,只需加载一个内核模块,就可以执行 CloudABI 程序。目前,GitHub 上的 "cloudabi" 分支仍然是必需的。
该项目由荷兰的 Nuxi 赞助。
待办事项
美化内核空间的修改并提交审核。
完成 Linux 和 NetBSD 内核的补丁集,并将其提交给相关的维护者。
联系方式:Konstantin Belousov <kib@FreeBSD.org>
进程上下文标识符(PCID)是英特尔处理器的一个性能增强特性,随着 Sandy Bridge 微架构的推出。它允许 TLB 同时缓存多个地址空间的翻译信息,并使操作系统的上下文切换代码能够避免在进程切换时刷新 TLB。每个缓存的翻译都会带有某个上下文标识符,在上下文切换时,操作系统指示处理器哪个上下文将变为活跃。该特性通过避免刷新 TLB,略微减少了上下文切换时间,更重要的是减少了线程在上下文切换后的热身期。
FreeBSD 已经使用了 PCID,但现有的实现存在一些缺点。amd64 pmap(虚拟内存子系统的机器相关部分)维护了一个位图,记录了所有加载了给定地址空间翻译的 CPU,并避免了在上下文切换时刷新 TLB。该位图用于在操作系统需要执行 TLB 无效化时,将处理器间中断定向到标记的 CPU。旧实现的最大缺点是 TLB 无效化中断(IPI)的增加,因为该位图只能增长,直到执行完整的 TLB 清除操作。这增加了 TLB 的频率,从而抵消了在大型机器上避免刷新 TLB 的积极效果。其次,pmap 和上下文代码中的位图维护非常复杂,导致了错误。这些问题导致 PCID 特性默认被禁用。
新的 PCID 实现使用了 U. Vahalia 书中《深入理解 UNIX 系统内核》所述的算法。例如,MIPS pmap 就使用该算法为软件管理的 TLB 条目分配地址空间标识符(ASID)。pmap 维护了一个每个 CPU 的生成计数,当在 CPU 上激活上下文时,生成计数会分配给下一个未使用的 PCID。TLB 无效化包括重置生成计数,这会导致在执行上下文切换时重新分配 PCID。因此,新的实现发出的 TLB 清除中断(IPI)数量与不使用 PCID 的 pmap 相同。
重写的 PCID 还包括将地址空间切换代码从汇编语言移到 C 语言源代码中,使得算法更加易于理解和验证。
在 Haswell 机器上使用 hwpmc(4) 进行的测量表明,新的实现将 TLB 未命中率降低了最多 10 倍,并且没有增加 TLB 清除中断(IPI)。
该重写已通过提交 r282684 被合并到主干中。
注意
AMD 处理器不支持主机分页的 PCID 特性(AMD 为 SVM 使用 ASID)。但是,AMD 处理器很可能会透明地缓存不同地址空间的 TLB 翻译,并通过嗅探写入页表来使缓存失效。
该项目由 FreeBSD 基金会赞助。
联系方式:Konstantin Belousov <kib@FreeBSD.org>
ACPI 规范定义了 CPU 的 Cx 状态,这些是空闲状态。进入状态的方法以及一些信息(如状态离开延迟)由 _CST ACPI 方法返回。为了节省能源并减少不必要的加热,操作系统会在 CPU 无需执行工作时进入 Cx 状态。C0 是非空闲状态,而 C1、C2 和 C3(由 ACPI 定义)分别代表具有逐渐增加的能效的空闲状态,但也伴随着更高的离开延迟,且可能带来更大的二次成本。例如,C1 是通过执行 HLT 指令进入的,没有架构可见的副作用,而进入 C3 会使 CPU 缓存丢失,通常需要特殊的芯片组编程来正确处理 I/O 设备对 CPU 的请求。不要混淆 Cx、Px 和 Sx:Cx 状态仅在系统处于完全操作状态 S0 时才有意义;Px 状态仅在系统未处于空闲状态 C0 时才有意义。
现代英特尔 CPU 使用专用指令 MWAIT 进入 Cx(x >= 1)状态,这会使 CPU 进入指定的低功耗状态,直到 CPU 总线逻辑观察到特定的写操作。还有一个互补的 MONITOR 指令,用于设置监视的总线地址。进入 Cx 状态的传统端口 I/O 方法通过 CPU 微码进行仿真,微码会拦截端口 I/O 操作,并在内部执行 MWAIT。使用 MWAIT 作为进入 Cx 的方法需要遵循处理器特定的程序,这些程序通过 _CST 中的供应商特定扩展传达给操作系统。操作系统在调用 _CST 时必须指示它已经准备好支持 MWAIT。使用 MWAIT 的声称好处包括减少离开空闲状态的延迟,并且可以看到比常规 ACPI 规范定义的更深的状态。然而,现代英特尔平台报告的深层状态仍然是 C2,以避免不必要的总线主控避免。
新代码向 ACPI 请求英特尔供应商特定的 _CST
扩展,解析这些扩展,并在可用时使用 MWAIT Cx 进入方法。此更改已提交为 r282678 到主干。
对于 Linux,英特尔提供了一种驱动程序,该驱动程序不依赖于 ACPI 表来使用 MWAIT 进入 Cx 状态。对于所有 Core2 之后的英特尔 CPU,驱动程序包含了 Cx 模式延迟和缺陷的说明,消除了对正确 BIOS 信息的依赖,因为 BIOS 信息通常是不正确的。几个人曾考虑过将 Linux 驱动程序移植到 FreeBSD,但所有评估者独立得出结论,认为如果没有英特尔的直接参与,该方法无法维持。
在此工作过程中,大约 500 行在 i386 和 amd64 版本之间的空闲处理代码被移到了一个通用位置 x86/x86/cpu_machdep.c。现在,i386 和 amd64 的 machdep.c 文件仅包含唯一的机器相关例程。这个进展得益于 John Baldwin 消除了不再维护的 Xen PVM i386 Port。
该项目由 FreeBSD 基金会赞助。
联系方式:Warner Losh <imp@FreeBSD.org>
将 ARMv6 转换为硬浮点的计划包括创建一个新的 MACHINE_ARCH。对我来说,这看起来是权宜之计,但不够优雅。操作系统可以轻松地运行软浮点和硬浮点二进制文件,只要相应的库可用。
作为实验,我一直在研究从 FreeBSD 11.0 开始生成硬浮点二进制文件的难度,并探讨这一过程可能导致的问题。我最感兴趣的是源代码、对 Port 的影响以及从 FreeBSD 10.X 升级到 11 版本时的二进制/包升级问题。
如果成功,这将使项目能够更快地摆脱软浮点默认设置。用户从 FreeBSD 10 升级后,将自动升级为硬浮点。所有支持的 ARMv6 和 ARMv7 处理器都具有硬件浮点,因此这对绝大多数用户来说不会构成问题。此外,许多构建脚本了解所有的 MACHINE_ARCH 值,不更改 MACHINE_ARCH 可以让这些脚本继续运行,而无需额外修改。
我已经完成了大约四分之三的工作,调查了这一可能性并编写了解决目前遇到问题的代码。
该实验的风险是可能会遇到无法预见的依赖关系。这可能迫使我们采用原始的硬浮点迁移计划。
这个实验的希望是,以最小的对用户和他们当前构建脚本和流程的影响,为在 FreeBSD 11 中使用更优的硬浮点铺平道路。如果用户需要在 FreeBSD 11.0 上运行 FreeBSD 10.X ARMv6 软浮点二进制文件,将确保与 libsoft 任务的向后兼容性。待新的硬浮点包投入使用,包应自动更新。
待办事项
在 ld.so 中添加安全带,以避免跨线程使用不同浮点实现的库。
Clang 应正确标记硬浮点与软浮点的 .os 文件。这是一个小问题,因为 ld 会正确处理。
完成 libsoft,类似于 lib32。
提交修补程序,切换 ARMv6 构建的软浮点到硬浮点。某些额外的代码可能需要用于构建软浮点。
联系方式:Dominik Ermel <der@semihalf.com> 联系方式:Wojciech Macek <wma@semihalf.com> 联系方式:Michal Stanek <mst@semihalf.com> 联系方式:Zbigniew Bodek <zbb@semihalf.com>
自上次报告以来,ThunderX 已经获得了 SMP 支持,FreeBSD 现在可以在 48 个实际 ARMv8 CPU 核心上运行!这一新功能的引入基于 Andrew Turner 和 Robin Randhawa 提交的初步基础工作,以仿真作为主要目标。
Semihalf 的工作集中在硬件方面,包括:
对更新的通用中断控制器 GICv3 的多核支持
多项 bug 修复:
pmap(9) - 内存属性和 TLB 管理
locore.S - 次级核心初始化
IPI(处理器间中断)
每 CPU 定时器
早期 UMA 分配的大小
缓存维护
异常处理
堆栈问题
针对 ThunderX 的特定更改和缺陷
这些支持功能在 FreeBSD 2015 开发者峰会期间公开展示,由 Semihalf 和 FreeBSD 基金会共同演示。Cavium 的 ThunderX 服务器 CRB(客户参考板)现在能够通过 PCIe 网络卡从硬盘和 NFS 根启动 SMP FreeBSD。该示例设置现已在 FreeBSD 测试集群上提供,托管于 Sentex Communications。
ThunderX 支持更改目前正在进行审查,并将整合到主干 FreeBSD 中。
该项目由 FreeBSD 基金会、ARM Ltd.、Cavium 和 Semihalf 赞助。
待办事项
将 ThunderX 支持上游到 FreeBSD 主干
支持 ThunderX 的多插槽配置(通过一致性网络连接的 96 个 CPU)
实现 VNIC 支持(ThunderX 网络控制器)
联系方式:Andrew Turner <andrew@FreeBSD.org> 联系方式:Ed Maste <emaste@FreeBSD.org> 联系方式:Ruslan Bukin <br@FreeBSD.org>
自上次状态报告以来,FreeBSD 对 AArch64 (arm64) 架构的构建支持已提交到 Subversion。这一支持最初针对的是 qemu,经过评审后,已添加更多硬件支持。
已添加对 ACPI、SMP、DTrace 和 hwpmc 的支持。ACPI 能够枚举设备并进入挂载根文件系统的提示符。为了进入用户空间,仍然需要进一步的工作。SMP 已在 qemu 上进行过两核测试,正在努力支持在硬件上实现 SMP。hwpmc 驱动程序支持 ARM 的 Cortex-A53、Cortex-A57 和 Cortex-A72 核心。
Poudriere 已与用户模式 qemu 配合使用,以测试构建包的功能。超过 14,000 个 Port 已成功构建。此次首次运行中发现并修复了多个问题。这些修复应能解除约 5,000 个额外 Port 的构建限制。
该项目由 FreeBSD 基金会、ABT Systems Ltd 和 ARM Ltd 赞助。
待办事项
移植到更多的 SoC(系统级芯片)
在原生硬件上测试 Poudriere
联系方式:Baptiste Daroussin <bapt@FreeBSD.org>
pw(8) 是用于创建、删除和修改用户的工具。自创建以来,这个工具大部分时间没有进行修改,但它需要更新。
已经完成了大量的清理工作:
代码去重
通过将代码拆分成更小的函数来减少复杂性
重用现有的基础代码:
使用 sbuf(9) 处理缓冲字符串
使用 stringlist(3) 处理字符串数组
使用 gr_utils(来自 libutil)替代自制的组操作
使用 strptime(3) 解析时间字符串
对大多数输入选项添加了验证,修复了一些由于错误使用 atoi(3) 导致的严重 bug
添加了许多回归测试,确保所有这些更改不会引入回归问题
新增了一个功能:pw -R rootdir cmd,允许跨系统操作用户。
待办事项
进一步清理代码。
添加更多回归测试。
是否支持 LDAP?
联系方式:FreeBSD 上的 KDE 团队 <kde@FreeBSD.org>
FreeBSD 上的 KDE 团队专注于打包工作,并确保在 FreeBSD 上的 KDE 和 Qt 体验尽可能好。
Brad Davis 一直在致力于 CMake 的工作,最终将 CMake 更新到了 3.2.3 版本,并提交到了 Ports 中。
在本季度,我们更新了以下 Port:
CMake 3.2.3(已提交到 Ports )
Qt 4.8.7(已提交到 area51)
Qt 5.4.1(已提交 Ports 中的精细调整)
待办事项
更加努力推进与 Qt5 相关的 Port:KDE Frameworks 5(目前由 Tobias Berner 工作中)和 PyQt 5。
联系方式:Bryan Drewery <bdrewery@FreeBSD.org> 联系方式:Ports 管理团队 <portmgr@FreeBSD.org> 联系方式:Sean Bruno <sbruno@FreeBSD.org>
x86 软件包
在 FreeBSD 基金会提供更多构建服务器的帮助下,我们已将软件包的构建频率从每周增加到大约每隔一天一次。当前为所有支持的版本和从 Port 主分支的 i386 和 amd64 提供软件包,并且为 FreeBSD 10.1 和 9.3 版本分支提供季度软件包。
我们使用八台不同的系统来构建软件包。构建过程已完全自动化,并且现在具有更高的容错能力。有关此过程的更多详细信息将会在即将发布的 FreeBSD Journal 文章中提供。大约有 11 台服务器用于每日测试构建。为了简化所有人查找这些构建的状态和结果,Bryan Drewery 开发了 pkg-status.FreeBSD.org。该网站的目的是显示所有系统和构建的几乎实时数据。它目前处于 beta 阶段,并且会随着时间的推移进行改进。撰写本文时,网站暂时不可用,但很快将恢复。
ARM/MIPS 软件包
FreeBSD 基金会为该项目购买了服务器,开始构建并提供 ARM 和 MIPS 软件包。这些软件包目前是通过使用 QEMU 从 x86 系统构建的。有关此过程的更多详细信息,可以参考 BSDCan 2015 演讲。这项工作由 Sean Bruno 主导,并得到了许多人的帮助,包括但不限于 Juergen Lock、Stacey Son、Ed Maste、Peter Wemm、Alexander Kabaev、Adrian Chadd、Baptiste Daroussin、Bryan Drewery、Dimitry Andric、Andrew Turner、Warner Losh、Ian Lapore 和 Brooks Davis。
我们目前正在为 mips、mips64 和 armv6 构建主分支的软件包。每个软件包的构建大约需要一到两周时间,使用 QEMU 构建。它们将基于最佳努力提供,暂时在 pkg.FreeBSD.org 的默认仓库中提供。
该项目由 FreeBSD 基金会赞助(软件包构建硬件)。
待办事项
Portmgr 在 BSDCan 会议上开会,决定默认的软件包集应该基于 Ports 季度分支提供。这将默认提供更稳定的软件包,并允许希望使用最新版本的用户使用主分支软件包。季度分支每三个月从主分支完全更新一次,并且接收安全性和关键修复。朝着这一计划的推进也需要改变我们更新季度分支的方式。更多细节将在稍后提供。
QEMU 的性能和稳定性持续改进。Ports 中的本地交叉构建支持需要更多的工作和测试,才能使其可行。
当前的软件包构建每隔一天通过 crontab 运行。有些构建需要两小时(增量构建),而有些完整构建可能需要多达 30 小时。一个开放任务是实现更好的操作系统 ABI 检查,以查看是否可以进行增量构建,或者当有 SA/EN 发布时是否需要完全重建。对此的详细计划可以在 https://lists.freebsd.org/pipermail/freebsd-arch/2015-April/017025.html 中找到。 另一个开放任务是实现一个主队列协调器,在所有其他构建完成后立即开始下一个构建。这也将有助于改善 pkg-status 网站的视图。
联系方式:Frederic Culot <portmgr-secretary@FreeBSD.org> 联系方式:FreeBSD Ports 管理团队 <portmgr@FreeBSD.org>
截至第二季度末,Ports 中包含近 25,000 个 Port,PR 数量约为 1,800。与上一季度相比,本季度的活动更多,共有 153 名活跃提交者进行了近 8,000 次提交。另一方面,关闭的问题报告数量略有下降,修复的不到 1,700 个问题报告。
在第二季度,几个提交权限被暂时保管,原因是有超过 18 个月未活动(clsung, dhn, obrien, tmseck),或者是提交者要求(sahil)。两位新开发者获得了 Port 提交权限(Michael Moll - mmoll@,Bernard Spil - brnrd@)。
在管理方面,pgollucci@ 在 6 月开始了为期四个月的 portmgr-lurker 角色,第二季度期间,portmgr 团队没有做出任何更动。
本季度还发布了第二个季度分支,即 2015Q2。在此分支上,39 名提交者应用了 305 个补丁,比上个季度更新的次数翻了两倍。
在质量保证方面,进行了 30 次 exp-run 测试,以验证敏感更新或清理。其中值得注意的变化包括更新 pkg 1.5.4、三个新 USES(waf, gnustep, jpeg)、Perl 默认版本切换为 5.20、Ruby 切换为 2.1.6、Firefox 38.0.6 和 Chromium 43.0.2357.130。
待办事项
与上一季度一样,本季度对树进行了大量工作,更新了主要 Port,并关闭了比 2015 Q1 更多的 PR,但和往常一样,任何额外的帮助都将备受赞赏!
联系方式:FreeBSD 图形团队 <freebsd-x11@FreeBSD.org>
由于图形团队成员在本季度缺乏空闲时间,只有少数改进得以完成。
我们的 Ports 口开发树仍然保留 Mesa 10.6 的更新,并进行了一些清理和修复。(在上一季度报告中为 10.5。)最初我们计划在 7 月初提交更新,但由于 FreeBSD 8.4-RELEASE 的 EOL 被推迟到 7 月 31 日,因此我们将在 7 月底发布测试人员邀请,更新将在 8 月初提交。当然,用户仍然可以通过使用 mesa-next 分支从 Ports 开发树直接获取并进行测试。
一些与 X.Org 相关的 Port 进行了较小的更新,已提交到 Ports。
由于缺乏空闲时间,i915 内核驱动更新在本季度没有进展。幸运的是,工作可以在 Q3 恢复,并希望在 2015 年 9 月准备好进行测试。
更新后的 DRM 设备独立代码已经合并到 stable/10 分支。这意味着它将在即将发布的 FreeBSD 10.2-RELEASE 中提供。
最近,托管我们博客的网站频繁宕机。撰写本文时,它再次无法访问。我们在网站上次正常时导出了数据,因此我们可能会迁移到其他系统。当然,URL 也将发生变化。
待办事项
请参阅图形 wiki 页面以获取最新的信息。
联系方式:Gerald Pfeifer <gerald@FreeBSD.org> 联系方式:David Naylor <dbn@FreeBSD.org>
本季度对 wine-devel Port 进行了七次更新,该 Port 紧密跟踪上游开发,同时更新了其辅助 Port(wine-gecko-devel 和 wine-mono-devel):
稳定版发布:1.6.2(1 次 Port 修订)
开发版发布:1.7.40 至 1.7.46
i386-wine-devel Port 为 FreeBSD 8.4、9.1+、10.1+ 和 CURRENT 构建了 amd64 包。
取得的成就包括:
将 wine-compholio 重命名为 wine-staging(与上游开发一致)。
未来 Wine 的开发将专注于:
将 getdirentries(2) 补丁添加到 wine-devel Port。
重新开发并将 getdirentries(2) 补丁提交到上游。
重新开发并将 kernel32 Makefile 补丁提交到上游。
为 i386-wine Port 添加对 pkg 1.5 的支持(目前库冲突阻止了支持)。
为 Windows 64 位上的 Windows 32 位(WoW64)添加支持:
将 i386-wine Port 简化为仅包含 WoW64 所需的组件。
将 i386-wine Port 重命名为 wow64。
在 amd64 上构建时,使 wine Port 依赖于 wow64 Port。
调查并验证 Wine64 和 WoW64 之间的交互。
调查可能的更新方法,适用于需要预编译的 wow64 Port,以及如何通过 wine Port 进行更新。
维护和改进 Wine 是一项重大任务,直接影响 FreeBSD 上的最终用户(包括许多游戏玩家)。如果你有兴趣提供帮助,请与我们联系。我们将非常乐意接受补丁、建议关注的领域或进行交流。
待办事项
开放任务和已知问题(请参见 Wine wiki)
FreeBSD/amd64 集成(请参见 i386-Wine wiki)
将 Windows 32 位移植到 Windows 64 位(WoW64)
联系方式:FreeBSD Xfce 团队 <xfce@FreeBSD.org>
Xfce 是一款适用于 Unix 和类 Unix 平台(如 FreeBSD)的自由软件桌面环境,旨在提供快速、轻量的体验,同时保持良好的视觉效果和易用性。
在本季度,团队保持了以下应用程序的最新版本:
audio/xfce4-pulseaudio-plugin 0.2.3
deskutils/orage 4.12.1
deskutils/xfce4-notes-plugin 1.8.1
misc/xfce4-weather-plugin 0.8.6
science/xfce4-equake-plugin 1.3.7
sysutils/xfburn 0.5.4
sysutils/xfce4-power-manager 1.5.0(已提交到 Ports),1.5.2(已提交到开发仓库)
x11/libexo 0.10.6
x11/xfce4-dashboard 0.4.2
x11-fm/thunar 1.6.10
x11-wm/xfce4-desktop 4.12.2
x11-wm/xfce4-wm 4.12.3
www/midori 0.5.10
Mathieu Arnold (mat@) 提交了 PR 197878,更新了《Porter's Handbook》中的 Xfce 部分。
我们还跟踪了不稳定版本(可在我们的实验仓库中找到):
sysutils/garcon 0.5.0(支持 GTK2 和 GTK3 工具包)
x11/xfce4-dashboard 0.5.0
x11/xfce4-hotcorner-plugin 0.0.2(新插件)
待办事项
为 sysutils/xfce4-power-manager 创建使用文档(需要一些关注,PR 199166)。 在 1.5.1 版本中引入了一些隐藏功能,我们也支持 ConsoleKit2(sysutils/consolekit 的一个分支),因此需要为用户提供帮助。
联系方式:FreeBSD 文档团队 <freebsd-doc@FreeBSD.org>
在 BSDCan 举行的开发者峰会的两天前,举行了一个文档工作组会议。我们讨论了文档团队可以抓住的一些最大机会。
现代化我们的翻译系统再次成为一个重要话题。让翻译者更容易完成工作至关重要。翻译使 FreeBSD 对非英语用户更加可访问,而这些人和翻译者本身往往会在其他领域成为有价值的技术贡献者。我们在这一领域取得了一些进展,希望很快能带来更多消息。
如何让人们更容易为文档做出贡献也是一个重要话题。目前,我们使用 DocBook XML 来编写文章和书籍,使用 mdoc(7) 来编写手册页。这些标记语言对于新用户来说并不友好。有一些更简单的文档标记语言,如 reStructured Text (RST)、Markdown 和 AsciiDoc,它们学习和使用的时间更少。事实上,这些标记系统彼此相似。这些系统往往更多地面向视觉外观,而非我们当前系统的语义标记,尽管可能有方法来解决这个问题。
继续以使贡献更容易为主题,我们还讨论了是否可以更容易地授予对 FreeBSD Wiki 的访问权限,从而促进用户贡献。设置 Wiki 后,自动帐户创建滥用迫使我们限制了访问。如何在允许提交的同时保持提交信息的质量,是一个棘手的问题。
由于所使用的标记系统,审核文档的质量变得困难。Annotator 是一个 JavaScript 系统,允许为现有网页添加注释。这将使我们能够对文档网页进行内容审核。审阅者将看不到标记,因此可以专注于信息是否准确和完整。为了达到预期效果,我们需要一些关于 Ports 和测试的帮助。
待办事项
完成 Annotator 后端存储组件的 Port。最好选择开销最低、许可证最开放的版本。欢迎熟悉 Python 和 JavaScript Web 开发的人提供帮助。
联系方式:Michael Lucas <mwlucas@michaelwlucas.com>
第一本 ZFS 书籍现已在你喜欢的书店上架。你可以在 zfsbook.com 找到大量链接。
关于《FreeBSD 精通:高级 ZFS》和《FreeBSD 精通:特种文件系统》的工作也在顺利进行中。Lucas 希望能在下次状态报告之前完成并发布 FMAZ。
联系方式:Warren Block <wblock@FreeBSD.org>
随着六月末计划的闰秒临近,Bartek Rutkowski 和其他人提出了关于 FreeBSD 如何处理闰秒的问题。近年来,闰秒给其他操作系统带来了严重问题,因此引起了合理的关注。
有人合理地指出,FreeBSD 之前也遇到过闰秒问题,这次也会没问题。不过,缺乏已报告的问题并不能替代对期望结果和如何判断系统是否准备好的说明。
为了回应关注,并为未来的闰秒提供资源,几位专家经受了不断的质询,最终将结果整理成了一篇简短的文章。除了平息可能发生的恐慌外,这篇文章还因展示了 FreeBSD 的成熟和准备情况而获得了网络上的积极反馈。
我们感谢 Peter Jeremy、Poul-Henning Kamp、Ian Lepore、李鑫、Warner Losh 和 George Neville-Neil 的耐心和专业知识。
待办事项
编写其他简短的文章,介绍 FreeBSD 做得非常好的方面,特别是那些让系统管理员生活更轻松的功能,或者在其他系统上遇到的问题如何在 FreeBSD 上得到解决,甚至被变成了非问题。
联系方式:FreeBSD 文档工程团队 <doceng@FreeBSD.org>
在 2015 年第二季度,新增了两位文档提交者。
Mathieu Arnold 是 FreeBSD Ports 管理团队的成员。在过去的一年中,他负责了许多大型且复杂的更新,以保持 Porter's Handbook 的时效性,并继续更新这一重要文档。
Anne Dickison 是 FreeBSD 基金会的市场营销总监。她将专注于更新和改善 FreeBSD 主网站。
我们欢迎这两位新提交者,并期待他们的更多贡献!
联系方式:Björn Heidotting <bhd@FreeBSD.org> 联系方式:Johann Kois <jkois@FreeBSD.org> 联系方式:Benedict Reuschling <bcr@FreeBSD.org>
FreeBSD 德语文档项目负责维护 FreeBSD 文档的德语翻译,如手册和网站。
在 2015 年第二季度,我们成功赶上了手册的翻译工作。现在,两个章节已与其英文参考章节同步:文件系统和 ZFS。前者主要由 Björn Heidotting 在他的导师过程中完成,后者由 Benedict Reuschling 完成,并得到了 Björn 的宝贵修正。
此外,我们还更新了许多早期 SVN 版本的翻译标记。这将帮助我们概览每个章节的未完成工作。我们正在努力通过脚本将其集成到我们的网站中,这样人们就可以看到哪些章节需要更多的工作或最为更新。
Johann 还更新了 FreeBSD 文档项目指南,以便愿意帮助我们的翻译者能够以德语阅读相关信息。他还努力恢复了以前托管在其他地方的文档项目网站,现在它已与德语版的 FreeBSD.org 网站重新连接,并具有相同的外观和感觉。
偶尔,仍然有人联系并提供帮助。我们乐于帮助新手了解翻译过程,期待更多的贡献。即使是小小的更新也能带来很大的变化。如果你考虑帮助,请与我们联系。
待办事项
继续将手册和网站翻译成德语。
集成一个脚本,将未完成的工作显示在德语文档网页上。
联系方式:Pedro Giffuni <pfg@FreeBSD.org> 联系方式:Oliver Pinter <op@FreeBSD.org>
作为今年谷歌编程之夏的一部分,我们为 libc 添加了 _FORTIFY_SOURCE
扩展的支持。此扩展利用 GCC 的 builtin_object_size
信息,防止现有代码中的缓冲区溢出。编译器和 C 库可以有效地检测出一些常见的编程错误。
一个混合版本的 NetBSD 和 Android 实现已经移植,目前正在进行大量测试。在 FreeBSD 上,这段代码已经发现了两个小错误。另一方面,FreeBSD 代码库对于测试这个框架非常有用。
该项目由谷歌编程之夏项目赞助。
待办事项
使用 GCC 进行代码审查和更多的 buildworld 测试。
集成测试,特别是在非 x86 平台上。
文档:该框架在 GNU libc 上相对流行,但我们仍需要改进文档。
测试并可能与 Port 进行集成。
我们需要重新安排谷歌编程之夏项目,因为我们原本预期在这个项目上花费的时间较少。
联系方式:Tiwei Bie <btw@FreeBSD.org> 联系方式:Hiren Panchasara <hiren@FreeBSD.org>
该项目的目标是设计并实现一个基础设施,以验证网络栈中的多个队列行为是否符合预期。
它主要包括扩展 tap(4),以提供与硬件多队列网络卡相同的 RSS 行为,开发使用多队列 tap(4) 和 socket(2) 的简单测试应用程序,在网络栈的每一层添加钩子,以收集每个环路、每个 CPU 和每个层级的统计信息,并扩展 netstat(1) 来报告这些统计数据。
目前,该项目的大部分内容已经实现,重点在于代码审查和 API/KPI 冻结。
该项目由谷歌编程之夏2015 赞助。
联系方式:Dan Langille <dvl@FreeBSD.org>
BSDCan 是一场为从事 4.4BSD 系统及相关项目的人士举办的会议,于 6 月 12 日和 13 日在加拿大安大略省渥太华举行。其前的 6 月 10 日和 11 日举行了为期两天的 FreeBSD 开发者峰会。
这是历届 BSDCan 中规模最大的一届,参会人数超过 280 人,比 2014 年增加了 40 多人。演讲者和演讲的数量也创下纪录。为了提供更多的并行演讲选择,会议增加了一个额外的会议室和“专场”。社交媒体对整个会议的反响非常积极。
由 Stephen Bourne 主讲的主题演讲非常受欢迎。由于太多人参与,主会场无法容纳所有与会者,特设了一个带有实时视频的溢出房间来容纳额外的人员。视频 在前十二天内已经有超过 6300 次观看。
Andrew Tanenbaum 关于 使用微内核重新实现 NetBSD 的演讲也非常受欢迎,甚至到了站着听的程度。
还有许多其他精彩的演讲,建议你浏览上述链接中的播放列表。
活动不仅限于演讲。每晚,开发者们都会在“黑客休息室”中合作与互动,共同推进项目。今年,嵌入式项目特别受欢迎,FreeBSD 被直接安装在无线路由器上。
非常成功且人气爆棚的闭幕活动在 Lowerton Brewery 举行,为整个会议画上了圆满的句号。
我们要感谢所有为 BSDCan 2015 的成功作出贡献的人,并期待明年再会!
联系方式:Sevan Janiyan <venture37@geeklan.co.uk>
pkgsrc 是 NetBSD 项目对 FreeBSD Ports 的一个分支,重点是可移植性和多平台支持。目前,pkgsrc 支持在 23 个不同的平台上从单一代码树构建包,包括 FreeBSD。
虽然在大多数使用场景中 pkgsrc 不是 Ports 的替代品,但它在混合平台环境中具有独特的地位,在这些环境中,软件需要在所有系统中保持相同版本,并以一致的方式构建,从而避免用户手动构建程序或重新实现构建机制。
在最近的 2015Q2 版本 发布之后,现在可以在 FreeBSD 10.1-RELEASE 上生成超过 14000 个包(比上个季度的 12800 个有所增加)。
目前正在进行将 pkg 支持添加到 pkgsrc 的工作。
待处理任务:
改进平台支持,在 FreeBSD 中跳过已捆绑在基本系统中的 libusb。这是目前导致最大问题的因素。
扩展到 -STABLE 和 -CURRENT 分支,并在可能的情况下支持 amd64 以外的架构。提供此类机器的 shell 访问权限将非常有帮助(非特权账户即可)。
联系方式:Deb Goodkin <deb@FreeBSDFoundation.org>
FreeBSD 基金会是一个 501(c)(3) 非营利组织,致力于支持和推广全球范围内的 FreeBSD 项目和社区。资金来源于个人和企业捐款,用于赞助和管理开发项目、会议和开发者峰会,并为 FreeBSD 开发者提供差旅赞助。基金会购买硬件以改善和维护 FreeBSD 基础设施,并发布 FreeBSD 白皮书和营销材料,宣传、教育并倡导 FreeBSD 项目。基金会还代表 FreeBSD 项目执行合同、许可协议及其他需要合法实体的法律安排。
以下是我们在过去一个季度内帮助 FreeBSD 项目的一些亮点:
我们是 BSDCan 2015 的铂金赞助商,并且是渥太华开发者和供应商峰会的赞助商。我们很高兴为 12 名 FreeBSD 贡献者提供了差旅赞助,使他们能够参加会议,并有机会与其他 FreeBSD 贡献者面对面交流。你可以在 这里 阅读一些他们的旅行报告。 为了庆祝我们的 15 周年,我们提供了美味的 FreeBSD 蛋糕,会议参与者纷纷享用。 基金会的各位成员做了报告,参加了报告,参与了文档冲刺,致力于改进 FreeBSD,工作在我们的展位上,并花时间与社区成员讨论我们如何帮助 FreeBSD。 基金会成员做了以下报告:
Anne Dickison: "FreeBSD Advocacy: How you can spread the word"
Kirk McKusick: "An Introduction to the Implementation of ZFS"
George Neville-Neil: "Measure Twice, Code Once" 和 "Cambridge L41: Teaching Advanced Operating Systems with FreeBSD"
Ed Maste: "The LLDB Debugger in FreeBSD" ,Ed Maste 还主持了供应商峰会。
Dru Lavigne 在 LinuxFest Northwest 2015 推广并做了 FreeBSD 演讲。
我们已经承诺赞助几个即将到来的会议:vBSDCon、womENcourage 2015、EuroBSDCon 2015、Grace Hopper 会议、BSDCon Brasil、剑桥开发者峰会和 OpenZFS。你还可以在 7 月 21-23 日的 OSCON 和 9 月 21-24 日的 SNIA 存储开发者会议上找到我们。
募款 到目前为止,我们已从超过 500 位捐赠者那里筹集了 361,000 美元。Juniper 成为金级捐赠者。我们正在积极接触商业 FreeBSD 用户,争取 Silver-plus 捐款,并向大型科技公司请求独立的女性技术人员资金,帮助我们吸引更多女性加入 FreeBSD 项目。我们还向公司申请资金以支持我们的 FreeBSD 教育工作。
我们很高兴在 4 月份在科罗拉多州接待了 Groff the BSD Goat。
基础设施支持 基金会赞助了近 50,000 美元的设备,以支持 FreeBSD 基础设施。大部分资金用于纽约互联网公司(NYI)设施的新服务器和升级。我们派 Glen Barber 前往安装新服务器。你可以阅读 他的旅行报告。
宣传工作 FreeBSD Journal 拥有超过 9200 名订阅者,续订率为 98%。我们的市场营销总监 Anne Dickison 忙于为项目提供宣传工作。她帮助提供了更多 FreeBSD 的宣传材料,包括酷炫的 I Choose FreeBSD 贴纸和非常受欢迎的 I Love FreeBSD 临时纹身,这些在会议上提供。我们发布了四月、五月和六月的基金会通讯,突出展示了基金会支持 FreeBSD 的工作。这些通讯还包括公司对 FreeBSD 的推荐、FreeBSD 将要宣传的即将到来的活动,以及 FreeBSD 贡献者分享的《战壕之中》文章。
基金会的一个重要责任是保护 FreeBSD 的知识产权(IP),包括保护 FreeBSD 的商标。我们已授权多个公司使用 FreeBSD 商标,支持 FreeBSD 项目。要获得商标使用许可,相关方必须同意我们的 商标使用条款和条件。
项目开发工作 George Neville-Neil 与新大学合作,推广 FreeBSD 课程,其中包括乔治华盛顿大学、约翰霍普金斯大学和加利福尼亚大学圣克鲁兹分校。他还与 Verisign 合作,准备在 vBSDCon 上举行的 DevSummit 会议。并与 ARM 合作,在 8 月的 ARM 合作伙伴会议上安排了与 18 家硬件和半导体厂商的会谈。 Ed Maste 继续管理 FreeBSD/arm64 移植项目,并继续更新 FreeBSD 基本系统中的 ELF 工具链工具,整合了上游项目的修复,以解决 strip 工具的问题。Ed 还调查并修复了 FreeBSD 安装程序中新 vt(4) 控制台的一系列未解决问题。 员工 Edward Napierała 向 stable/10 分支提交了多个错误修复合并,以纳入 FreeBSD 10.2 版本,并继续研究支持根文件系统运行时切换的项目。他合并了大量改进到 autofs 自动挂载守护进程,并通过审查大量补丁集支持 FreeBSD 开发者 Dmitry Chagin 在 64 位 Linux 二进制兼容性的工作。这些更改已提交到 FreeBSD 的 Subversion 树,并将在 FreeBSD 11.0 中发布。 员工 Konstantin Belousov 继续开发 Intel DMA 重映射(DMAR)和进程上下文标识符(PCID)基础设施项目。Kostik 还为 FreeBSD 的多个方面做出了贡献:虚拟内存子系统的稳定性改进、运行时加载器中选项处理的兼容性改进、线程库的改进和 GDB 调试器的增强。 Glen Barber,基金会员工,同时也是项目的发布工程师,以下是他为项目所做的工作亮点:
在 11-CURRENT 版本的发布构建代码中新增了支持 FreeBSD/aarch64(arm64)内存棒镜像和虚拟机磁盘镜像的功能,以便在 Qemu 中使用。
与 Colin Percival 和 Brad Davis 合作,测试并完善发布构建代码,以支持构建 Amazon EC2 镜像和 Hashicorp Atlas 的 Vagrant 镜像。
重新设计了 FreeBSD/arm 构建代码,提供了现有镜像(BEAGLEBONE、RPI-B、PANDABOARD、WANDBOARD)的全原生构建基础设施,并新增了对更多镜像(GUMSTIX、CUBOX/HUMMINGBOARD)的支持。
编写了多个额外工具,以减少发布工程中多个领域的人工错误,包括生成 FTP 镜像所用的文件系统层次结构、增强发布工程内部构建脚本的功能,并支持自动上传和发布虚拟机镜像。
在参加 BSDCan 2015 时,Glen 与多个开发者和团队就多项事项进行了合作,例如讨论使用 pkg(8) 打包基本系统、将 FreeBSD 服务器迁移到基金会为 NYI 设施购买的新机器,并讨论 FreeBSD 构建基础设施的未来增强。
启动了 10.2-RELEASE 发布周期。
联系方式:Eric McCorkle <emc2@metricspace.net>
已经对启用 UEFI 的 boot1.efi 和 loader.efi 进行了修改,以支持从 ZFS 文件系统加载和启动。该补丁当前已在 buildworld 上成功工作,并且在一台带有 ZFS 分区的测试机器上成功启动。此外,启用了 ZFS 的 loader.efi 可以作为链式加载程序与 ZFS 启用的 GRUB 一起使用。
对 boot1.efi 的工作还对代码进行了重新组织,将特定于文件系统的部分分离到模块化框架中。
待办事项
需要对以下使用情况进行更多测试:使用 GRUB+loader.efi 的 ZFS,使用 boot1+loader.efi 的 ZFS,使用 boot1+loader.efi 的 UFS(以测试 boot1.efi 的模块化)。
让 boot1.efi 在探测文件系统之前检查分区类型 GUID。
获取补丁被上游接受并提交。
最后更新于
这有帮助吗?