FreeBSD 2013 年 4-6 月状态报告
最后更新于
最后更新于
原文链接:
本报告涉及了 2013 年 4 月至 6 月期间与 FreeBSD 相关的项目。这是计划在 2013 年发布的四份报告中的第二份。
过去三个月对于 FreeBSD 开发者社区来说异常活跃,期间举办了包括 BSDCan 和与之联合举行的 FreeBSD 开发者峰会(详细内容请参见单独的报告,)以及 BSD-Day 2013 等活动。此外,FreeBSD 系统在各个方面都有了改进。桌面用户会高兴地注意到,在改善 AMD GPU 状态以及让与内核模式设置相关的控制台交互——这一功能是近期 xorg 驱动所必需的——方面有了进展,同时,关于让二进制包更易于使用的工作也在继续。开发者将注意到我们工具链的持续改进,新调试器正在准备集成。服务器用户将受益于内核虚拟化支持和可扩展性方面的各种改进。当然,FreeBSD 系统如果没有可在其上运行的应用程序是无法存在的,而这一季度,Port 团队成员为确保用户有广泛的桌面和开发环境选择而不懈努力,其中包括 GNOME、KDE、Xfce 和 Haskell 团队的亮点内容。
感谢所有报告员的卓越工作!本报告包含 33 个条目,希望你能享受阅读。
涵盖 2013 年 7 月至 9 月期间内容的提交截止日期为 2013 年 10 月 7 日。
联系方式:FreeBSD 核心团队 <>
在 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 名现有的提交者获得了权限延续。
在 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 8.4-RELEASE 版本周期已于 2013 年 6 月 7 日完成,约比原定计划晚了两个月。发布后发现的任何问题,请务必阅读 Errata 通知。
FreeBSD 9.2-RELEASE 版本的过程将于 2013 年 7 月 6 日开始。如果没有出现任何关键问题,预计 FreeBSD 9.2-RELEASE 将在 8 月底或 9 月初发布。
在 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 构建和测试系统。
PC-BSD 和 TrueOS 向“滚动发布”模式的迁移进展迅速。我们已经实现了自己的软件包仓库,完全基于 pkg(8),并且每月更新两次,同时还托管了专用的 freebsd-update(8) 系统。除了 9.1-RELEASE 的 ISO 镜像,我们还开始创建 9-STABLE 分支,并使用 freebsd-update(8) 每月推送最新的世界和内核二进制文件。
我们目前正在为桌面和服务器实现 ZFS 启动环境。用户可以将更新或实验版本安装到独立的 ZFS 克隆中,并在启动时选择要运行的版本,这为升级前的测试提供了一个简便的方式。
FreeBSD VPS 是基于操作系统级虚拟化的实现,支持像实时迁移这样的高级特性。该项目最近已经作为项目分支被导入到项目的 Subversion 仓库中。目前代码仍处于 alpha 质量阶段。
使用不同的客户端设置/应用程序进行测试。所有反馈都非常欢迎。
由于 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 指南,解释如何测试该驱动程序。
我们已经实现了 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。
在繁忙的服务器上进行额外测试。
该项目旨在提高虚拟内存子系统的可扩展性。基于 Jeff Roberson 提供的原型变更,已经实现了每域页面队列和每域 pagedaemon 工作线程,以支持这一目标。目前,域与 NUMA 接近域重合,但这并不是必需的,并且可以通过进一步分离来改进,以便在 pagedaemon 中实现更多的并行性。
该补丁相对简单,最微妙的部分是页面清理(page laundry)和 OOM 逻辑,这要求所有 pagedaemon 线程之间协调,以防止误触发。
需要在不同的工作负载和真实的多插槽机器上进行测试。
该项目由 FreeBSD 基金会赞助。
在多域 NUMA 机器上进行调试。
测试,进行代码审查并提交。
原生内核 iSCSI 目标和启动器项目在 4 月到 6 月期间取得了良好的进展。主要的工作是为 iSER(基于 RDMA 的 iSCSI)在启动器和目标中引入支持。为此,首先需要将一些通用部分合并,并为用户空间缺少 iSER 支持实现一个解决方法。除此之外,还有许多小的改进。例如,创建了更易于使用的管理工具,如 iscsictl(8),它显示每个 iSCSI 会话的 SCSI 设备节点。这使得用户不再需要通过 camcontrol(8) 获取相同的信息。此外,还对日志记录和手册页做了改进。
待 iSER 支持稳定,工作将重点转向性能优化。计划在 8 月提交新的启动器和目标,以便将其包含在 10.0 版本中。项目还将继续实现对软件 iWARP 堆栈(主要用于测试和开发)、SCSI 直通和其他改进的支持。
该项目由 FreeBSD 基金会赞助。
性能优化。
合并到 FreeBSD 主干。
Newcons 项目的目的是为控制台和视频输出提供新的接口,支持图形设备。这将允许简单的驱动程序在早期访问控制台和终端模式,并为 Xorg 提供帧缓冲访问。驱动程序将不再需要嵌入的字体位图、色彩图或鼠标光标位图,因为整个基础设施将由 vt(4) Newcons 驱动程序提供。
由于该项目包括内核模式设置(KMS)的集成,其中一个目标是支持现代的 Xorg 版本,使内核能够在图形模式或分辨率变更后切换回虚拟终端模式。
项目涉及很多更改,主要任务包括:
核心功能(几乎完成)。
鼠标支持。
KMS(内核模式设置)支持。
USB 键盘支持。
启动画面支持(部分完成)。
驱动程序支持。
vidcontrol(1) 支持。
该项目的第一批交付物,包括 moused(8)、ukbd(4) 和 KMS 支持,预计将在 2013 年 8 月中旬或底部交付。整个项目预计将在 2013 年 11 月完成。
该项目由 FreeBSD 基金会赞助。
感谢 Ed Schouten 启动了 Newcons 项目并完成了大部分工作。
提供不同类型的硬件来测试实现。发布测试邀请时,请积极参与。
已从 OpenBSD 导入驱动程序 urtwn(4) 。这是一个针对非常小型的 Realtek USB WiFi 卡的驱动,这些网卡价格便宜,可以实现最大理论速度为 150 Mbps 的 802.11n。这些卡非常适合嵌入式系统,如树莓派和 BeagleBone。该驱动需要固件,这些固件可以从 FreeBSD Ports 中的 net/urtwn-firmware-kmod 获取。请注意,目前尚不支持 802.11n。
SDIO 是一个扩展现有 SD 卡标准的接口,旨在通过标准 SD 控制器将不同外设连接到主机。目前市场上销售的外设包括 WLAN/BT 模块、摄像头、指纹识别器、条形码扫描器。该驱动作为现有 MMC 总线的扩展实现,添加了许多新的 SDIO 特定的总线方法。卡片信息查询功能已完成,包括查询所有支持的 I/O 功能。简单的字节传输和多字节读取也能正常工作。
目前正在开发一个 Marvell SDIO WLAN/BT 模块的驱动原型,参考现有的 Linux 驱动。
扩展 MMC 总线接口,增加更多的 SDIO 特定的总线方法,以允许子驱动执行多字节输入/输出传输。
为 WLAN 驱动原型编写固件加载代码。关于 WLAN 驱动的进一步工作可能需要作为独立项目进行。
实现卸载路径。目前尚未测试,因为可用的 DreamPlug 硬件没有外部 SDIO 支持的插槽。
FreeBSD 头文件中的 linuxulator 已更新 V4L2 支持。这使得 Skype v4 可以显示视频。
查明 Skype v4 在某些通话后音频停止工作的原因。
最近,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。
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 的更改仅在主干中。
将剩余的更改合并到主干。
截至六月底,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 删除统计信息来监控。
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 实现驱动程序。
ARM 架构越来越普及,应用领域不仅限于移动和嵌入式系统。最近几个月,"ARM 服务器"这一概念成为了行业中的新兴趋势。一些顶尖公司,如戴尔和惠普,已经开始开发此类系统。
FreeBSD 在这些新领域中的成功关键在于能够处理平台的复杂特性,例如增加对超级页的支持。
该项目的目标是使 FreeBSD/arm 能够使用超级页,从而提高 TLB 转换的效率(通过扩大 TLB 覆盖范围),在许多应用程序中提升性能并增强可扩展性。该功能旨在 ARMv7 处理器上运行,但仍然保持对 ARMv6 的兼容性。
自上次状态报告以来,已经完成了以下工作:
实现了 pmap_copy() 来支持 fork() 系统调用。
支持多种页面大小。
实现了超级页的创建、提升、降级和驱逐机制。
实现了超级页的 PV 条目管理。
部分代码已集成到 head 分支中。
接下来的步骤:
测试和基准测试。
完成与 FreeBSD head 的集成。
该项目由 FreeBSD 基金会和 Semihalf 联合赞助。
开始在 ARMv6/v7 上利用超级页。
查找并调试 bug。
在 FreeBSD 基本系统中引入了新的工具:bsdconfig(8) 和 sysrc(8)。bsdconfig(8) 是废弃的 sysinstall(8) 的后安装能力的替代工具,而 sysrc(8) 是一个强大的命令行工具,用于管理 rc.conf(5),无需文本编辑器。
最近,已将一个 bsnmpd(1) 模块提交到 FreeBSD head,并合并到 stable/8 和 stable/9 分支中。该模块使得通过 SNMP 协议监控和管理 hastd(8) 成为可能。
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 邮件列表联系我们,我们可以提供如何正确进行沙箱化的指南。名声已经在那里,等待着你。
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 纳入基本系统做准备。
我们自豪地宣布,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 包。
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 软件和 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
尽管团队的大量工作集中在打包发布代码上,我们也主动确保我们移植的软件的未来版本也能在 FreeBSD 上良好运行。这包括与上游保持紧密联系,提升 FreeBSD 作为活跃项目的意识,并且发送补丁,这些补丁通常也会对其他操作系统产生好处。在这方面,我们花了大量时间确保 clang 和 libc++ 在 KDE 和 Qt 中得到全面支持。这不仅导致了向这些项目发送了许多补丁,也让我们在 Clang-on-FreeBSD 项目中受益匪浅。Dimitry Andric (dim@) 为我们提供了很多帮助,解决了我们遇到的各种问题。
如往常一样,团队始终在寻找更多的测试人员和移植者,请联系我们并访问我们的首页。特别是,帮助移除对已废弃的 HAL 项目的依赖,并与 KDE 的 Bluedevil 蓝牙接口集成,将是非常有用的任务。
为 KDE 4.11 和 Qt 5 进行工作。
确保整个 KDE 堆栈(包括 Qt)与 clang 和 libc++ 构建并正常工作。
移除对 HAL 的依赖。
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 面板中。
调查为什么 midori-gtk3 崩溃太频繁。(Port 已完成,但一些库在 Ports 中未默认存在)。
修复 x11-themes/gtk-xfce-engine 与 Gtk+ >=3.6 的兼容性问题。
在本季度初,工作集中在使 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 团队协调进行。
文档项目直到最近才使用旧版本的标记标准,我们切换到真正的 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 基金会的大力赞助。
完成渲染过程的实现。
将渲染解决方案集成到基础设施中。
将更改合并回主干。
BSD-Day 现在成为了 BSD 开发者和用户定期聚会的机会,大家可以面对面交流、喝点啤酒,并讨论他们目前的工作。今年活动转到了意大利美丽的那不勒斯,披萨的故乡。幸运的是,活动再次得到了许多慷慨赞助商的支持,如 FreeBSD 基金会、EMC 公司、iXsystems、FreeBSDMall、BSD Magazine 等,帮助我们支付了讲者的旅行和住宿费用。我们对此非常感激。
和往年一样,整个活动以周五在市中心(大概在爱尔兰酒吧附近)的一顿晚餐开始,随后突然变成了一个自助披萨盛宴。然后,周六的活动在生物结构与生物成像研究所举行。在那里,上午举行了 BSDA 考试,参加人数为 8 人。活动本身也有许多有趣的主题,比如将 MCLinker 引入 BSD 世界、FreeBSD 项目的组织与文化、全新的 callout(9) 框架、使用 Poudriere 和 Tinderbox 构建和测试 Port、FreeBSD 在嵌入式领域的应用,或者使用 OpenBSD 构建可靠的 VPN 网络等。请参见报告中的链接了解更多信息。
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。
该项目是谷歌编程之夏计划的一部分。工作才刚刚开始,代码仍处于初期阶段。Subversion 仓库中存放的是正在积极开发的实验性代码。开发预计将在 9 月底前完成,项目将进入生命周期的维护阶段。
与 Matt Windsor 合作为 PackageKit 创建一个 pkg(8) 后端。
扩展 PackageKit 的 Qt 前端,通过 pkg(8) 提供更多功能。
扩展 PackageKit 的 GTK+ 前端,通过 pkg(8) 提供更多功能。
我们在本季度开始时启动了“筹集百万 — 花费百万”春季筹款活动。这是今年计划的三次主要筹款活动中的第一次。我们很高兴在活动结束时筹集了 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 交换机。
联系方式:FreeBSD 邮件管理员团队 <>
联系方式:FreeBSD 发布工程团队 <>
鼓励跟踪 FreeBSD 9.X 分支的用户尽可能测试 -BETA 和 -RC 版本,并将反馈和问题报告到 。
联系方式:FreeBSD 安全团队 <>
联系方式:Kris Moore <>
联系方式:Klaus Ohrhallinger <>
联系方式:Jean-Sébastien Pédron <> 联系方式:Konstantin Belousov <>
联系方式:Andre Oppermann <>
联系方式:Konstantin Belousov <>
联系方式:Edward Tomasz Napierała <>
联系方式:Aleksandr Rybalko <>
联系方式:Rui Paulo <> 联系方式:Kevin Lo <>
联系方式:Ilya Bakulin <>
联系方式:Alexander Leidinger <>
联系方式:Adrian Chadd <>
联系方式:Justin T. Gibbs <> 联系方式:Will Andrews <> 联系方式:Andre Oppermann <> 联系方式:Roger Pau Monné <>
联系方式:Pawel Jakub Dawidek <> 联系方式:Steven Hartland <>
该项目由 提供赞助,并由 Pawel Jakub Dawidek 实现。
联系方式:Konstantin Belousov <>
联系方式:Zbigniew Bodek <> 联系方式:Grzegorz Bernacki <> 联系方式:Rafal Jaworowski <>
联系方式:Devin Teske <>
联系方式:Mikolaj Golub <>
联系方式:Pawel Jakub Dawidek <> 联系方式:Capsicum 邮件列表 <>
联系方式:Ed Maste <>
联系方式:Gábor Páli <> 联系方式:Ashish SHUKLA <>
联系方式:FreeBSD GNOME 团队 <>
联系方式:KDE FreeBSD <>
结果 — 根据 — kde@ 目前有 473 个 Port(从 431 增加),其中 98.73% 已更新(从 93.5% 增加)。iXsystems Inc. 继续为团队提供机器来构建包并测试更新。iXsystems Inc. 长期以来一直为 KDE/FreeBSD 团队提供支持,我们对此表示感谢。本季度,我们还要感谢 Steve Wills (swills@) 提供的另一台机器,让我们能更快速地完成工作。
更新过时的 Port,查看 获取 Port 列表。
联系人:FreeBSD Xfce 团队 <>
另有一个新的插件可用于监视和显示地震,名为 。
修复 textproc/xfce4-dict-plugin 中的 CPU 问题 ()。
联系人: <> 联系人:Niclas Zeising <> 联系人:Koop Mast <>
联系人:Gábor Kővésdén <>
联系人:Gábor Páli <>
联系人:Mariusz Zaborski <> 联系人:Pawel Jakub Dawidek <>
联系人:Justin Muniz <> 联系人:Eitan Adler <>
联系人:Deb Goodkin <>