FreeBSD 2013 年 4-6 月状态报告
引言
本报告涉及了 2013 年 4 月至 6 月期间与 FreeBSD 相关的项目。这是计划在 2013 年发布的四份报告中的第二份。
过去三个月对于 FreeBSD 开发者社区来说异常活跃,期间举办了包括 BSDCan 和与之联合举行的 FreeBSD 开发者峰会(详细内容请参见单独的报告,BSDCan 开发者峰会特别篇)以及 BSD-Day 2013 等活动。此外,FreeBSD 系统在各个方面都有了改进。桌面用户会高兴地注意到,在改善 AMD GPU 状态以及让与内核模式设置相关的控制台交互——这一功能是近期 xorg 驱动所必需的——方面有了进展,同时,关于让二进制包更易于使用的工作也在继续。开发者将注意到我们工具链的持续改进,新调试器正在准备集成。服务器用户将受益于内核虚拟化支持和可扩展性方面的各种改进。当然,FreeBSD 系统如果没有可在其上运行的应用程序是无法存在的,而这一季度,Port 团队成员为确保用户有广泛的桌面和开发环境选择而不懈努力,其中包括 GNOME、KDE、Xfce 和 Haskell 团队的亮点内容。
感谢所有报告员的卓越工作!本报告包含 33 个条目,希望你能享受阅读。
涵盖 2013 年 7 月至 9 月期间内容的提交截止日期为 2013 年 10 月 7 日。
联系方式:FreeBSD 核心团队 <core@FreeBSD.org>
在 2013 年第二季度,核心团队批准了新的安全官员 Dag-Erling Smørgrav 以及他的副手李鑫。核心团队感谢即将离任的安全官员 Simon Nielsen 为该职位所作的贡献。Peter Wemm 负责主导 FreeBSD 集群的重组和管理工作,在核心团队的批准下,Glen Barber 和 Ryan Steinmetz 被迎接加入集群管理团队。
基于 Martin Wilke 的建议和经验,核心团队还支持设立一位 Ports 管理者和发布工程师之间的联络人角色,以改善他们的沟通,特别是在准备发布版本时。核心团队欢迎 Bryan Drewery 担任此角色。
响应 Eitan Adler 的请求,核心团队同意从基本系统中移除 CVS,紧接着由 Peter Wemm 实现并导入了一版轻量级的 Subversion 工具。
本季度共为 3 名新开发者发放了源码提交权限,另外 1 名现有的提交者获得了权限延续。
联系方式:FreeBSD 邮件管理员团队 <postmaster@FreeBSD.org>
在 2013 年第二季度,FreeBSD 邮件管理员团队实施了以下可能引起公众关注的事项:
在 clusteradm 的帮助下,发现 unbound(在 mx1 和 mx2 上使用的解析器)被配置为执行 DNSSEC 验证,这意味着如果签名区失败验证,unbound 将拒绝使用该信息。这导致一位用户在区域签名刷新之前无法与 FreeBSD.org 交换电子邮件。
创建了 freebsd-dtrace 邮件列表,这是 George Neville-Neil 提出的请求。
复活了 freebsd-testing 邮件列表,这是 Garrett Cooper 提出的请求。
创建了 freebsd-tex 邮件列表,这是佐藤広生提出的请求。
针对另一条评论,即如果灰名单(greylisting)是原因,我们的消息拒绝提示不够清晰,重新措辞了该提示。
扩展了 secteam 可接受的 MIME 类型,包括以下类型,以便发送加密邮件:
application/pgp-encrypted
application/pkcs7-encrypted
application/x-pkcs7-encrypted
multipart/encrypted
开始用 freebsd-gecko 替代 freebsd-mozilla。
联系方式:FreeBSD 发布工程团队 <re@FreeBSD.org>
FreeBSD 8.4-RELEASE 版本周期已于 2013 年 6 月 7 日完成,约比原定计划晚了两个月。发布后发现的任何问题,请务必阅读 Errata 通知。
FreeBSD 9.2-RELEASE 版本的过程将于 2013 年 7 月 6 日开始。如果没有出现任何关键问题,预计 FreeBSD 9.2-RELEASE 将在 8 月底或 9 月初发布。
鼓励跟踪 FreeBSD 9.X 分支的用户尽可能测试 -BETA 和 -RC 版本,并将反馈和问题报告到 freebsd-stable 邮件列表。
联系方式:FreeBSD 安全团队 <secteam@FreeBSD.org>
在 4 月 15 日,Dag-Erling Smørgrav 和李鑫接任 FreeBSD 项目的安全官员,团队在 6 月迎回了 Qing Li。此报告简要总结了安全团队从 4 月至 6 月末的工作。
安全团队发布了以下安全公告:
FreeBSD-SA-13:05.nfsserver: NFS 服务器(nfsd(8))中的输入验证不足,由 Adam Nowacki 报告。
FreeBSD-SA-13:06.mmap: 通过 mmap() 提升特权,由 Konstantin Belousov 报告。
安全团队还贡献了以下勘误通知:
FreeBSD-EN-13:02.vtnet: 在 QEMU 1.4.0 及更高版本中,当配置多个 MAC 地址时,帧无法正确转发到 vtnet(4)(在 8.4-RELEASE 中),由 Julian Stecklina 报告。
FreeBSD-EN-13:01.fxp: 在 8.4-RELEASE 中,初始化 fxp(4) 网络接口时与 dhclient(8) 发生无限循环,由 Michael L. Squires 报告。
根据 Baptiste Daroussin 的请求,安全团队还审查了 Poudriere 的源代码,这是一个计划用于在 FreeBSD 集群上生成 pkg(8)(“新风格”)包的 Port 构建和测试系统。
联系方式:Kris Moore <kmoore@FreeBSD.org>
PC-BSD 和 TrueOS 向“滚动发布”模式的迁移进展迅速。我们已经实现了自己的软件包仓库,完全基于 pkg(8),并且每月更新两次,同时还托管了专用的 freebsd-update(8) 系统。除了 9.1-RELEASE 的 ISO 镜像,我们还开始创建 9-STABLE 分支,并使用 freebsd-update(8) 每月推送最新的世界和内核二进制文件。
我们目前正在为桌面和服务器实现 ZFS 启动环境。用户可以将更新或实验版本安装到独立的 ZFS 克隆中,并在启动时选择要运行的版本,这为升级前的测试提供了一个简便的方式。
联系方式:Klaus Ohrhallinger <k@7he.at>
FreeBSD VPS 是基于操作系统级虚拟化的实现,支持像实时迁移这样的高级特性。该项目最近已经作为项目分支被导入到项目的 Subversion 仓库中。目前代码仍处于 alpha 质量阶段。
待办事项
使用不同的客户端设置/应用程序进行测试。所有反馈都非常欢迎。
联系方式:Jean-Sébastien Pédron <dumbbell@FreeBSD.org> 联系方式:Konstantin Belousov <kib@FreeBSD.org>
由于 4 月至 6 月底期间的非 FreeBSD 相关活动,该项目进展缓慢:
修复了 TTM 中的一些重要问题,目前正在解决其他一些问题。受这些问题影响的应用程序包括非线性视频编辑软件(不使用 Xv 进行视频预览)或 VirtualBox 中的“screen”等。
关于 OpenGL 锁定问题,尚未进行任何工作。glxgears 可以正常运行,但一些现代桌面环境或 WebGL 演示会挂起。待上述 TTM 错误修复完毕,这将是下一个目标。
已经向 Mesa 提交了让其开箱即用的补丁,上游已合并部分,但并非所有补丁都已合并。此外,通过与 Jonathan Gray(OpenBSD)的联合工作,Mesa 应该可以在 FreeBSD、OpenBSD 及其他 BSD 系统上工作,无需额外的补丁。
几位用户测试了该驱动程序。Andriy Gapon、Jonathan Gray 和 Mark Kettenis(OpenBSD)提交了补丁,kyzh 慷慨捐赠了几张来自不同系列的独立显卡。感谢所有贡献者!
该驱动程序仍然不够稳定,尚不适合广泛邀请测试者。
待办事项
编写 wiki 指南,解释如何测试该驱动程序。
联系方式:Andre Oppermann <andre@FreeBSD.org>
我们已经实现了 SYN cookie 很长时间了,但它在当前窗口扩展(window scaling)和 SACK 编码中的一些局限性,特别是在少量可用位的情况下。
这个补丁通过以下方式更新和改进了 SYN cookies:
在初始序列号(ISN)中编码 MSS、WSCALE(窗口扩展)和 SACK,而无需使用时间戳位。
切换到非常快速且加密强度较高的 SipHash-2-4 哈希 MAC 算法,以防止 SYN cookie 被伪造。
自从 SYN cookies 发明约 17 年以来,TCP 会话中常见的参数发生了很大变化。今天,我们有了更多的带宽,这使得窗口扩展几乎是强制性的。而且 SACK 已经成为标准,因为它使得丢包恢复变得更加高效。
最初的 SYN cookies 方法仅在 cookie 中存储了一个索引的 MSS 值。显然,这不再足够,并且在存在 WSCALE 时会出现问题。WSCALE 信息仅在 SYN 和 SYN-ACK 时交换。如果我们无法跟踪它,那么我们就会严重低估可用的发送或接收窗口,再加上窗口扩展较大时,TCP 段头中的窗口大小信息会更低。
几年前,SYN cookies 被扩展为在 TCP 时间戳字段中存储额外的状态(如果连接支持时间戳)。这一方法也被 Linux 采用。虽然 BSD、Linux 和其他 Unix 系统中都支持时间戳,但 Windows 从未默认启用它们,因此对于绝大多数互联网上的客户端来说,时间戳并不可用。
这个补丁中的新改进将所有必要的信息重新移动到 ISN 中,从而消除了对时间戳的需求。MSS 和发送 WSCALE 被以 3 位索引形式存储,并且有一个单独的位用于 SACK。虽然我们不能仅用 3 位表示所有可能的 MSS 和 WSCALE 值(它们在 TCP 头部中是 16 位字段),但事实证明这并非实际需要的。
这些改进允许仅在面向互联网的服务器上运行 SYN cookies。然而,尽管 SYN cookies 始终被计算和发送,但只有在 syn 缓存因攻击或过载而溢出时才会使用。在这种情况下,你可以放心,TCP 连接建立的性能将不再受到显著影响,即使是 Windows 客户端也可以利用窗口扩展和 SACK。
待办事项
在繁忙的服务器上进行额外测试。
联系方式:Konstantin Belousov <kib@FreeBSD.org>
该项目旨在提高虚拟内存子系统的可扩展性。基于 Jeff Roberson 提供的原型变更,已经实现了每域页面队列和每域 pagedaemon 工作线程,以支持这一目标。目前,域与 NUMA 接近域重合,但这并不是必需的,并且可以通过进一步分离来改进,以便在 pagedaemon 中实现更多的并行性。
该补丁相对简单,最微妙的部分是页面清理(page laundry)和 OOM 逻辑,这要求所有 pagedaemon 线程之间协调,以防止误触发。
需要在不同的工作负载和真实的多插槽机器上进行测试。
该项目由 FreeBSD 基金会赞助。
待办事项
在多域 NUMA 机器上进行调试。
测试,进行代码审查并提交。
联系方式:Edward Tomasz Napierała <trasz@FreeBSD.org>
原生内核 iSCSI 目标和启动器项目在 4 月到 6 月期间取得了良好的进展。主要的工作是为 iSER(基于 RDMA 的 iSCSI)在启动器和目标中引入支持。为此,首先需要将一些通用部分合并,并为用户空间缺少 iSER 支持实现一个解决方法。除此之外,还有许多小的改进。例如,创建了更易于使用的管理工具,如 iscsictl(8),它显示每个 iSCSI 会话的 SCSI 设备节点。这使得用户不再需要通过 camcontrol(8) 获取相同的信息。此外,还对日志记录和手册页做了改进。
待 iSER 支持稳定,工作将重点转向性能优化。计划在 8 月提交新的启动器和目标,以便将其包含在 10.0 版本中。项目还将继续实现对软件 iWARP 堆栈(主要用于测试和开发)、SCSI 直通和其他改进的支持。
该项目由 FreeBSD 基金会赞助。
待办事项
性能优化。
合并到 FreeBSD 主干。
联系方式:Aleksandr Rybalko <ray@FreeBSD.org>
Newcons 项目的目的是为控制台和视频输出提供新的接口,支持图形设备。这将允许简单的驱动程序在早期访问控制台和终端模式,并为 Xorg 提供帧缓冲访问。驱动程序将不再需要嵌入的字体位图、色彩图或鼠标光标位图,因为整个基础设施将由 vt(4) Newcons 驱动程序提供。
由于该项目包括内核模式设置(KMS)的集成,其中一个目标是支持现代的 Xorg 版本,使内核能够在图形模式或分辨率变更后切换回虚拟终端模式。
项目涉及很多更改,主要任务包括:
核心功能(几乎完成)。
鼠标支持。
KMS(内核模式设置)支持。
USB 键盘支持。
启动画面支持(部分完成)。
驱动程序支持。
vidcontrol(1) 支持。
该项目的第一批交付物,包括 moused(8)、ukbd(4) 和 KMS 支持,预计将在 2013 年 8 月中旬或底部交付。整个项目预计将在 2013 年 11 月完成。
该项目由 FreeBSD 基金会赞助。
感谢 Ed Schouten 启动了 Newcons 项目并完成了大部分工作。
待办事项
提供不同类型的硬件来测试实现。发布测试邀请时,请积极参与。
联系方式:Rui Paulo <rpaulo@FreeBSD.org> 联系方式:Kevin Lo <kevlo@FreeBSD.org>
已从 OpenBSD 导入驱动程序 urtwn(4) 。这是一个针对非常小型的 Realtek USB WiFi 卡的驱动,这些网卡价格便宜,可以实现最大理论速度为 150 Mbps 的 802.11n。这些卡非常适合嵌入式系统,如树莓派和 BeagleBone。该驱动需要固件,这些固件可以从 FreeBSD Ports 中的 net/urtwn-firmware-kmod 获取。请注意,目前尚不支持 802.11n。
联系方式:Ilya Bakulin <ilya@bakulin.de>
SDIO 是一个扩展现有 SD 卡标准的接口,旨在通过标准 SD 控制器将不同外设连接到主机。目前市场上销售的外设包括 WLAN/BT 模块、摄像头、指纹识别器、条形码扫描器。该驱动作为现有 MMC 总线的扩展实现,添加了许多新的 SDIO 特定的总线方法。卡片信息查询功能已完成,包括查询所有支持的 I/O 功能。简单的字节传输和多字节读取也能正常工作。
目前正在开发一个 Marvell SDIO WLAN/BT 模块的驱动原型,参考现有的 Linux 驱动。
待办事项
扩展 MMC 总线接口,增加更多的 SDIO 特定的总线方法,以允许子驱动执行多字节输入/输出传输。
为 WLAN 驱动原型编写固件加载代码。关于 WLAN 驱动的进一步工作可能需要作为独立项目进行。
实现卸载路径。目前尚未测试,因为可用的 DreamPlug 硬件没有外部 SDIO 支持的插槽。
联系方式:Alexander Leidinger <netchild@FreeBSD.org>
FreeBSD 头文件中的 linuxulator 已更新 V4L2 支持。这使得 Skype v4 可以显示视频。
待办事项
查明 Skype v4 在某些通话后音频停止工作的原因。
联系方式:Adrian Chadd <adrian@FreeBSD.org>
最近,FreeBSD 无线网络栈在以下领域进行了更新:
改进了 net80211(4) 中的传输锁定,消除了导致出错包传递到驱动程序的一类微妙的竞争条件。
为 AR9280、AR9285、AR9287 系列 NIC 提供了频谱扫描(FFT)信息。
添加了对 AR93xx、AR94xx、AR95xx NIC 的支持 — 已测试 hostap、adhoc 和站点模式,包括这些 NIC 支持的 3x3 流。
在 hostap 模式下实现了 ps-poll 处理。这对于实现具有激进节能功能的站点正确行为是必需的。
添加了 AR933x SoC 支持 — 包括所有板载外设 — 8devices.com 的 Carambola-2 开发板现已完全支持,并能从 NOR 闪存运行 FreeBSD。
联系方式:Justin T. Gibbs <gibbs@FreeBSD.org> 联系方式:Will Andrews <will@FreeBSD.org> 联系方式:Andre Oppermann <andre@FreeBSD.org> 联系方式:Roger Pau Monné <roger.pau@citrix.com>
FreeBSD Xen HVM 可以通过在 HVM 虚拟机内部使用更多的 PV 接口进一步改进。目前已完成以下工作:
更新 Xen 接口文件。(已合并到主干)
添加对向量回调注入机制的支持。此机制替代 PCI 中断,并提供每 CPU 的回调,而 PCI 中断则无法实现这一点。
重新设计事件通道实现,使用相同的代码路径来处理 PV 和 PVHVM。
实现 PV 一次性事件定时器和时间计数器。
实现 PV IPI(Inter-Processor Interrupts)。
为 PV 定时器和 PV IPI 实现实时迁移支持。
通过这些更改,FreeBSD 将拥有一个完整的 PVHVM 移植版本,这也为未来的 PVH Port 奠定了基础(当 PVH 支持合并到 Xen 中时)。
PVHVM 允许以本地客户端身份启动的虚拟机能够充分利用半虚拟化驱动,从而在大多数 I/O 相关任务中提升性能。PVH 允许虚拟机利用硬件辅助进行内存管理,但使用完全的半虚拟化事件和启动过程,这带来了两个超越性能的显著优势。首先,域 0 无需运行 QEMU 实例来进行 PVH 虚拟机的仿真启动,而这通常是托管服务商为 Windows 和其他 HVM 虚拟机收取更多费用的原因。其次,PVH 域可以作为域 0 使用,无需不同的 pmap(内存管理)代码。这将使我们能够发布一个支持裸金属硬件的单一内核二进制文件,该二进制文件可作为 Xen 非特权虚拟机运行,并最终作为 Xen 域 0 运行。
blkfront 和 netfront 的进一步改进也已经提交:
修复 netfront 在卸载接口时崩溃的问题。
使 netfront 能够指定最大 TSO 长度,将段链限制为 Xen 主机端能处理的大小(在碎片化后)。
为 blkfront 添加了屏障和刷新支持。
netfront 的更改已合并到稳定分支,blkfront 的更改仅在主干中。
待办事项
将剩余的更改合并到主干。
联系方式:Pawel Jakub Dawidek <pjd@FreeBSD.org> 联系方式:Steven Hartland <smh@FreeBSD.org>
截至六月底,FreeBSD 的 ZFS 实现现在在 head、stable/9 和 stable/8 分支中包含了 TRIM 支持。这使得 ZFS 能够在高负载条件下帮助保持基于闪存的设备(如 SSD)上的高性能。
在创建新的池并向现有池添加新设备时,它会首先执行完整设备级别的 TRIM,以帮助确保最佳的起始性能。如果磁盘是新的或已被安全擦除(也可以通过 camcontrol(8) 安全操作来完成),则可以通过将 sysctl 变量 vfs.zfs.vdev.trim_on_init
设置为 0
来覆盖此行为。
为了支持 TRIM,内核要求底层设备驱动程序支持 BIO_DELETE。目前,通过硬件方法(如 ATA TRIM 和 SCSI UNMAP)来映射,这些方法通常由 SSD 通过 CAM 支持。
为了扩大支持的硬件范围,CAM 的 SCSI 层也得到了增强,允许通过 SATL ATA Passthrough 使用 ATA TRIM,此外还支持现有的 UNMAP 和 WS 方法。这使得通过基于 CAM 的驱动程序(如 mps(4) 和 mpt(4))连接到 SCSI 控制器的 SATA 磁盘也能提供删除支持。
ZFS TRIM 的统计信息可以通过查看 sysctl 变量 kstat.zfs.misc.zio_trim
以及通过命令 gstat -d
查看实时 GEOM 删除统计信息来监控。
该项目由 Multiplay 提供赞助,并由 Pawel Jakub Dawidek 实现。
联系方式:Konstantin Belousov <kib@FreeBSD.org>
Intel VT-d 是一组最初设计用于虚拟化设备的扩展。它允许虚拟机安全访问物理设备,并且也可用于提高隔离性和性能。开发了一个 VT-d 驱动程序,它使用当前 Intel 芯片组中的 DMA 重映射单元(DMAR)实现了 busdma(9) 接口。该驱动程序通过限制总线主设备访问主内存,提供了系统的可靠性和安全性改进。
它还通过分配符合设备访问限制的重映射区域,消除了跳跃缓冲(拷贝)。
通过额外的工作来定义适当的接口,VT-d 驱动程序还将为虚拟机监控程序提供 PCI 直通功能。
该项目由 FreeBSD 基金会赞助。
待办事项
为芯片组错误执行补救措施。
在额外测试后提交到 HEAD。
使用中断重映射单元重新平衡 MSI/MSI-X,这对于大机器上的 x2APIC 使用也是必需的。
与 Intel GPU MMU 集成,并处理 Ironlake 和 SandyBridge 错误,以支持 GFXVTd 单元。
提供 VMM(虚拟机监控程序)接口。
考虑为 AMD 的 IOMMU 实现驱动程序。
联系方式:Zbigniew Bodek <zbb@semihalf.com> 联系方式:Grzegorz Bernacki <gjb@semihalf.com> 联系方式:Rafal Jaworowski <raj@semihalf.com>
ARM 架构越来越普及,应用领域不仅限于移动和嵌入式系统。最近几个月,"ARM 服务器"这一概念成为了行业中的新兴趋势。一些顶尖公司,如戴尔和惠普,已经开始开发此类系统。
FreeBSD 在这些新领域中的成功关键在于能够处理平台的复杂特性,例如增加对超级页的支持。
该项目的目标是使 FreeBSD/arm 能够使用超级页,从而提高 TLB 转换的效率(通过扩大 TLB 覆盖范围),在许多应用程序中提升性能并增强可扩展性。该功能旨在 ARMv7 处理器上运行,但仍然保持对 ARMv6 的兼容性。
自上次状态报告以来,已经完成了以下工作:
实现了 pmap_copy() 来支持 fork() 系统调用。
支持多种页面大小。
实现了超级页的创建、提升、降级和驱逐机制。
实现了超级页的 PV 条目管理。
部分代码已集成到 head 分支中。
接下来的步骤:
测试和基准测试。
完成与 FreeBSD head 的集成。
该项目由 FreeBSD 基金会和 Semihalf 联合赞助。
待办事项
开始在 ARMv6/v7 上利用超级页。
查找并调试 bug。
联系方式:Devin Teske <dteske@FreeBSD.org>
在 FreeBSD 基本系统中引入了新的工具:bsdconfig(8) 和 sysrc(8)。bsdconfig(8) 是废弃的 sysinstall(8) 的后安装能力的替代工具,而 sysrc(8) 是一个强大的命令行工具,用于管理 rc.conf(5),无需文本编辑器。
联系方式:Mikolaj Golub <trociny@FreeBSD.org>
最近,已将一个 bsnmpd(1) 模块提交到 FreeBSD head,并合并到 stable/8 和 stable/9 分支中。该模块使得通过 SNMP 协议监控和管理 hastd(8) 成为可能。
联系方式:Pawel Jakub Dawidek <pjd@FreeBSD.org> 联系方式:Capsicum 邮件列表 <cl-capsicum-discuss@lists.cam.ac.uk>
Capsicum 是一款轻量级的操作系统能力和沙箱框架,正在积极开发中。在过去几个月中,已经完成了以下任务:
提交了 Capsicum 重构到 FreeBSD head(r247602)。这使得在更多地方使用能力权限成为可能,简化了内核代码,并实现了限制 ioctl(2) 和 fcntl(2) 系统调用的功能。
hastd(8) 现在使用 Capsicum 进行沙箱化,因为现在可以进行 ioctl 白名单配置(r248297)。
auditdistd(8) 现在也使用 Capsicum 进行沙箱化,因为现在可以为文件描述符设置仅追加的限制(在 Perforce 可用)。
实现了允许在能力模式下使用的 UNIX 域套接字的 connectat(2) 和 bindat(2) 系统调用(r247667)。
实现了 chflagsat(2) 系统调用(r248599)。
修订了 Casper 守护进程以支持应用程序能力。
实现了 libcapsicum 用于应用程序能力。
实现了多个 Casper 服务,以便能够在沙箱中使用更多功能:system.dns、system.pwd、system.grp、system.random、system.filesystem、system.socket、system.sysctl。
实现了对 kdump(1) 的 Capsicum 沙箱化(从 r251073 到 r251167)。Perforce 版本还支持 -r 标志的沙箱化,使用 Casper 服务。
实现了对 dhclient(8) 的 Capsicum 沙箱化(从 r252612 到 r252697)。
实现了对 tcpdump(8) 的 Capsicum 沙箱化(在 Perforce 中可用)。
实现了对 libmagic(3) 的 Capsicum 沙箱化(在 Perforce 中可用)。
实现了 libnv 库,用于名称/值对处理,希望能够在 FreeBSD 中得到更广泛的应用。
对于 FreeBSD 基本系统中的 Capsicum 沙箱化,以上提到的提交和提供的代码旨在作为示例。我们希望看到更多 FreeBSD 工具被沙箱化——例如,任何可以解析来自不可信来源的数据的工具。这需要深入理解该工具如何工作,而不仅仅是 Capsicum。
该项目由 FreeBSD 基金会赞助。
待办事项
参与其中,真正 (!) 让互联网成为一个安全的地方。请通过 cl-capsicum-discuss 邮件列表联系我们,我们可以提供如何正确进行沙箱化的指南。名声已经在那里,等待着你。
联系方式:Ed Maste <emaste@FreeBSD.org>
LLDB 是 LLVM 家族中的调试器项目。它支持 Mac OS X、Linux 和 FreeBSD 平台,但后者最近因为缺乏维护而遇到了困难。
在清理 LLDB 在 FreeBSD 上的支持后,它已经可以重新构建,并用于基本的单线程应用程序调试。测试套件也已经完成,尽管出现了大量失败。
Ed Maste 已获得 LLDB 提交权限,现在直接将持续的 bug 修复和开发提交到上游仓库。还有大量工作要做,其中一个目标是将 lldb 纳入 FreeBSD 基本系统。
该项目由 DARPA/AFRL 与 SRI 国际公司和剑桥大学合作赞助。
待办事项
为多线程进程添加支持。
修复观察点。
添加对远程调试(gdbserver / debugserver)的支持。
添加对 core 文件的支持。
添加对内核调试的支持。
验证 i386 和 ARM 架构。
实现 MIPS 目标支持。
验证跨平台调试。
调查并修复测试套件失败问题。
为将 lldb 纳入基本系统做准备。
联系方式:Gábor Páli <pgj@FreeBSD.org> 联系方式:Ashish SHUKLA <ashish@FreeBSD.org>
我们自豪地宣布,FreeBSD Haskell 团队已将 Haskell 平台更新为 2013.2.0.0,GHC 更新为 7.6.3,并将现有 Port 更新至最新稳定版本。在此更新中,我们为 Haskell Port 提供了对基于 LLVM 的代码生成的实验性支持(默认禁用)。我们还添加了许多新 Port,使 FreeBSD Ports 中的 Haskell Port 总数达到了 402,并且现在 Haskell Port 与 portmaster(8)-based 升级兼容性更好。
在 Konstantin Belousov 和 Dimitry Andric 的合作下,我们成功地修复了 GHC 在 32 位 10.x 系统上的构建问题,因此我们现在可以再次为 10.x 提供软件包。然而,事实证明,这个 bug(在线程信号传递方面)也可能影响到其他平台的构建过程,这解释了我们用户过去遇到的一些奇怪的构建中断问题。
我们还了解到,GHC 上游正在进行的工作将使我们能够在 GHC 7.8 成为 Haskell 平台的一部分后,原生支持 Clang 编译。
待办事项
测试实验性 Clang/LLVM 代码生成支持,启用默认支持。
提交待定的 Haskell Port 到 Ports。
移植更多(流行的)Cabal 包。
联系方式:FreeBSD GNOME 团队 <gnome@FreeBSD.org>
GNOME 3.6 的工作进展缓慢但稳步推进。几乎所有的 GNOME 3 桌面 Port 都已更新为对应的 3.6 版本。
一个大挑战是将 webkit-gtk3 Port 更新到 2.0.3。目前,使用 webkit-gtk3 的程序在启动时会崩溃。由于 webkit-gtk 的调试版本在开发系统上要么内存不足,要么磁盘空间不足,导致很难找到崩溃原因。
待办事项
更新 FreeBSD GNOME 网站,反映 Ports 中的最近变更,为 GNOME 3 和 Mate 等做准备,添加新项目等。
将 Glib 2.36、GTK+ 3.8 以及相关 Port 合并回 Ports。
继续推进 GNOME 3.6,修复 bug,编写缺失功能的代码。
完成 MATE 的移植。
联系方式:KDE FreeBSD <kde@FreeBSD.org>
KDE/FreeBSD 团队继续提升 KDE 软件和 Qt 在 FreeBSD 上的使用体验。本季度,团队保持大多数 KDE 和 Qt Port 的最新状态,工作涉及以下版本:
KDE SC: 4.10.2, 4.10.3, 4.10.4
Qt: 5.0.2 (area51)
PyQt: 4.10.2; QScintilla 2.7.2; SIP: 4.14.7
KDevelop: 4.5.1
Calligra: 2.6.2
CMake: 2.8.11.1
Digikam (及 KIPI 插件): 3.1.0, 3.2.0
KDE Telepathy: 0.6.0, 0.6.1
结果 — 根据 PortScout — kde@ 目前有 473 个 Port(从 431 增加),其中 98.73% 已更新(从 93.5% 增加)。iXsystems Inc. 继续为团队提供机器来构建包并测试更新。iXsystems Inc. 长期以来一直为 KDE/FreeBSD 团队提供支持,我们对此表示感谢。本季度,我们还要感谢 Steve Wills (swills@) 提供的另一台机器,让我们能更快速地完成工作。
尽管团队的大量工作集中在打包发布代码上,我们也主动确保我们移植的软件的未来版本也能在 FreeBSD 上良好运行。这包括与上游保持紧密联系,提升 FreeBSD 作为活跃项目的意识,并且发送补丁,这些补丁通常也会对其他操作系统产生好处。在这方面,我们花了大量时间确保 clang 和 libc++ 在 KDE 和 Qt 中得到全面支持。这不仅导致了向这些项目发送了许多补丁,也让我们在 Clang-on-FreeBSD 项目中受益匪浅。Dimitry Andric (dim@) 为我们提供了很多帮助,解决了我们遇到的各种问题。
如往常一样,团队始终在寻找更多的测试人员和移植者,请联系我们并访问我们的首页。特别是,帮助移除对已废弃的 HAL 项目的依赖,并与 KDE 的 Bluedevil 蓝牙接口集成,将是非常有用的任务。
待办事项
更新过时的 Port,查看 PortScout 获取 Port 列表。
为 KDE 4.11 和 Qt 5 进行工作。
确保整个 KDE 堆栈(包括 Qt)与 clang 和 libc++ 构建并正常工作。
移除对 HAL 的依赖。
联系人:FreeBSD Xfce 团队 <xfce@FreeBSD.org>
FreeBSD Xfce 团队已将其 Port 更新到最新的稳定版本,特别是:
核心(主要是 bug 修复和翻译更新):
deskutils/xfce4-tumbler (0.1.29)
x11-wm/xfce4-panel (4.10.1)
sysutils/xfce4-settings (4.10.1)
x11-wm/xfce4-session (4.10.1)
sysutils/garcon (0.2.1)
x11/libxfce4util (4.10.1)
x11-wm/xfce4-wm (4.10.1)
应用程序:
multimedia/xfce4-parole (0.5.1)
www/midori (0.5.2)
deskutils/xfce4-notifyd (0.2.4)
misc/xfce4-appfinder (4.10.1)
x11/xfce4-terminal (0.6.2)
x11-fm/thunar (1.6.3)
面板插件:
deskutils/xfce4-xkb-plugin (0.5.6)
textproc/xfce4-dict-plugin (0.7.0)
x11-clocks/xfce4-timer-plugin (1.5.0)
x11/xfce4-embed-plugin (新)
Thunar 插件:
audio/thunar-media-tags-plugin (0.2.1)
archivers/thunar-archive-plugin (0.3.1)
x11/xfce4-embed-plugin 可以将任何应用程序窗口集成到 Xfce 面板中。
另有一个新的插件可用于监视和显示地震,名为 xfce4-equake-plugin。
待办事项
修复 textproc/xfce4-dict-plugin 中的 CPU 问题 (bug #10103)。
调查为什么 midori-gtk3 崩溃太频繁。(Port 已完成,但一些库在 Ports 中未默认存在)。
修复 x11-themes/gtk-xfce-engine 与 Gtk+ >=3.6 的兼容性问题。
联系人: <x11@FreeBSD.org> 联系人:Niclas Zeising <zeising@FreeBSD.org> 联系人:Koop Mast <kwm@FreeBSD.org>
在本季度初,工作集中在使 xorg 更新尽可能稳健和稳定,为合并到 Port 做准备。作为其中的一部分,进行了 Port exp-runs 以发现并解决回归和其他问题。完成此操作后,xorg 于 5 月 25 日更新为 7.7 版本,这一过程历时一年多的努力。
更新之后,工作立即转向更新和修补 xorg 客户端库,因为已发现这些库存在众多安全问题。不幸的是,这花费了比预期更长的时间,但最终所有修复都已提交。
此外,还开展了将新的 xorg 发行版作为 FreeBSD 9.1 及以后版本的默认版本的工作。已经发布了补丁并进行了测试,结果良好,但由于 KMS 驱动程序无法切换虚拟终端,这项工作目前被推迟。
目前,工作重点放在保持 xorg 驱动程序和库的最新状态。与其每年或更少做一次大更新,不如定期进行一些库、应用程序和驱动程序的小更新。现在,重点也开始转向更新 MESA 和 xorg-server 的版本,但这仍然处于非常实验阶段。
待办事项
继续移植 MESA 的最新版本。这项工作仍在进行,但将其集成到开发库中是一项艰巨的任务。待完成,并且 ATI 的 KMS 支持更加成熟,就可以进行更多的测试。
移植 Wayland。开源操作系统中图形环境的未来似乎是 Wayland。需要将其移植到 FreeBSD,以便更广泛的用户群体可以测试,并最终可以将其集成到 Ports 中,或许作为当前 xorg 的替代。
寻找 HAL 的替代品。HAL 用于设备的热插拔,但它早已被 Linux 放弃。一个基于 devd(8) 的替代品将是一个不错的选择。这项工作应该与 FreeBSD GNOME 和 KDE 团队协调进行。
联系人:Gábor Kővésdén <gabor@FreeBSD.org>
文档项目直到最近才使用旧版本的标记标准,我们切换到真正的 XML 工具链和 DocBook 4.5。然而,我们仍然依赖过时的技术 — DSSSL 和 Jade。DocBook 5.0 提供了更清晰的标记和一些不错的新特性。
该项目的目标是将文档集升级到 DocBook 5.0,并找到一种方法在不使用 DSSSL 的情况下正确渲染我们的源文件,因为 DSSSL 样式表已被弃用,无法渲染 DocBook 5.0。文档源文件已经成功转换为 DocBook 5.0,渲染过程的更新正在开发中。FreeBSD 开发人员的普遍看法是,Java 是一种不应使用的重依赖。这促使我们将 DocBook 源文件转换为 TeX,并使用 TeX 作为渲染后端。有两种方法可以做到这一点;源文件可以直接转换,或者通过样式表为 DocBook 项目生成的 XSL FO 输出进行转换。后者已被选择为首选方法,因为它更适合现有的文档基础设施,并提供更简单的定制。
此项目得到了 FreeBSD 基金会的大力赞助。
待办事项
完成渲染过程的实现。
将渲染解决方案集成到基础设施中。
将更改合并回主干。
联系人:Gábor Páli <pgj@FreeBSD.org>
BSD-Day 现在成为了 BSD 开发者和用户定期聚会的机会,大家可以面对面交流、喝点啤酒,并讨论他们目前的工作。今年活动转到了意大利美丽的那不勒斯,披萨的故乡。幸运的是,活动再次得到了许多慷慨赞助商的支持,如 FreeBSD 基金会、EMC 公司、iXsystems、FreeBSDMall、BSD Magazine 等,帮助我们支付了讲者的旅行和住宿费用。我们对此非常感激。
和往年一样,整个活动以周五在市中心(大概在爱尔兰酒吧附近)的一顿晚餐开始,随后突然变成了一个自助披萨盛宴。然后,周六的活动在生物结构与生物成像研究所举行。在那里,上午举行了 BSDA 考试,参加人数为 8 人。活动本身也有许多有趣的主题,比如将 MCLinker 引入 BSD 世界、FreeBSD 项目的组织与文化、全新的 callout(9) 框架、使用 Poudriere 和 Tinderbox 构建和测试 Port、FreeBSD 在嵌入式领域的应用,或者使用 OpenBSD 构建可靠的 VPN 网络等。请参见报告中的链接了解更多信息。
联系人:Mariusz Zaborski <oshogbo@FreeBSD.org> 联系人:Pawel Jakub Dawidek <pjd@FreeBSD.org>
Capsicum 是一个轻量级的操作系统能力和沙箱框架,在 FreeBSD 中实现。这仍然是一项新技术,因此有很多改进的空间。感谢 Google 夏季编码计划和 Pawel Jakub Dawidek 自愿担任导师,Mariusz 将有机会在夏季参与这个项目。
最近,rwho(1) 和 rwhod(8) 工具的沙箱工作已经完成。还计划为 Casper 实现两个新模块。Casper 是一个为应用程序提供服务的守护进程,利用 Capsicum 的能力模式。当前正在进行一些实验,旨在实现两个新能力权限,并将更多程序移植到使用 Capsicum 框架的现有功能。
待办事项
system.unix — Casper 模块提供连接和监听 Unix 域套接字。
system.udp — Casper 模块启用连接、监听、发送和接收 UDP 数据包。
实现 fetch(1) 的沙箱。
引入新的能力权限:CAP_SEND_RIGHTS 和 CAP_RECV_RIGHTS。
联系人:Justin Muniz <jmuniz@FreeBSD.org> 联系人:Eitan Adler <eadler@FreeBSD.org>
该项目是谷歌编程之夏计划的一部分。工作才刚刚开始,代码仍处于初期阶段。Subversion 仓库中存放的是正在积极开发的实验性代码。开发预计将在 9 月底前完成,项目将进入生命周期的维护阶段。
待办事项
与 Matt Windsor 合作为 PackageKit 创建一个 pkg(8) 后端。
扩展 PackageKit 的 Qt 前端,通过 pkg(8) 提供更多功能。
扩展 PackageKit 的 GTK+ 前端,通过 pkg(8) 提供更多功能。
联系人:Deb Goodkin <deb@FreeBSDFoundation.org>
我们在本季度开始时启动了“筹集百万 — 花费百万”春季筹款活动。这是今年计划的三次主要筹款活动中的第一次。我们很高兴在活动结束时筹集了 365,291 美元 —— 到 5 月 31 日时。去年同期,我们仅筹集了 56,196 美元。今年我们开始了更好的筹款策略。我们要向所有在 2013 年捐款的人表示衷心的感谢。你们的早期捐款对我们今年的筹款工作产生了重要影响。
在上个季度,我们取得的一些成就包括:
参加了在渥太华举行的 BSDCan、在奥斯丁举行的 Texas LinuxFest、在夏洛特举行的 SouthEast LinuxFest 以及在北京举行的 ICANN 46 会议。
我们是 BSDCan 2013 的黄金赞助商,并赞助了 7 名开发者参加会议。
我们注册为 EuroBSDCon 2013 的铂金赞助商。
我们赞助了 1 名开发者参加 OpenHelp。
在 BSDCan 会议上,我们表彰了 Mark Linimon、Simon L. B. Nielsen、Bjoern A. Zeeb 和 Ken Smith,感谢他们对 FreeBSD 的重要贡献。我们还表彰了 Dan Langille,感谢他为 BSDCan 举办了 10 年。
我们赞助了 BSDCan 的开发者和供应商峰会,分别有 100 和 30 名与会者。
我们赞助了 2013 年 4 月 6 日在意大利那不勒斯举行的 BSD-Day 2013。
我们在渥太华召开了年度董事会会议。
我们赞助了以下项目:Capsicum、ARM 超大页、iSCSI、页面队列锁定、输入/输出内存管理单元、文档项目基础设施以及编写白皮书。
我们聘请了 Edward Tomasz Napierała 作为我们的第二位技术员工,全职从事 FreeBSD 项目工作。
我们聘请了 Ed Maste 作为项目开发总监。
在继续支持 FreeBSD 基础设施建设的同时,我们为 Sentex 实验室购买了高端服务器,配备最新的 Chelsio 40 Gbps 以太网卡,用于性能测试和分析,购买了小型服务器用于 NYI 和 ISC 的防火墙,以及连接 Juniper 交换机的电缆,最终将其连接到我们为 NYI 购买的大型 Juniper 交换机。
最后更新于