FreeBSD 2011 年第二季度状态报告

引言

本报告涵盖了 2011 年 4 月至 6 月期间与 FreeBSD 相关的项目。这是 2011 年计划中的四个报告中的第二个。从本季度开始,工作的重点转向了 FreeBSD 的下一个主要版本 9.0,预计将在 9 月发布。

感谢所有报告者的出色工作!本报告包含了 36 项内容,希望你阅读愉快。

请注意,涵盖 2011 年 7 月至 9 月期间的提交截止日期为 2011 年 10 月 15 日。

链接

http://wiki.freebsd.org/BuildingFreeBSDWithClang

http://wiki.freebsd.org/PortsAndClang

联系人:Dimitry Andric <dim@FreeBSD.org> 联系人:Roman Divacky <rdivacky@FreeBSD.org> 联系人:Brooks Davis <brooks@FreeBSD.org> 联系人:Pawel Worach <pawel.worach@gmail.com>

我们导入了 clang/llvm 的更新快照,带来了许多新特性。最显著的是一个新的寄存器分配器,它带来了显著的运行时性能提升。如果你之前做过 clang/llvm 的性能评估,现在是重新评估的好时机!

除了通常对 ARM、i386 和 amd64 的改进外,Mips 和 PowerPC 方面也取得了一些进展。我们已经成功编译了 clang,并让 ARM 内核启动。ARM 世界目前受到 FreeBSD 使用旧 ARM ABI 的阻碍。

我们获得了一个 buildbot,定期在 FreeBSD 上构建 clang/llvm,并使用 clang/llvm 构建 FreeBSD(amd64 和 i386),包括启动生成的镜像。

我们进行了一些 Port 的实验性运行,并修复了许多 Port 错误,现在我们能够使用 clang 构建超过 15000 个 Port 。随着大多数问题比较简单,我们预计这一数字会迅速增长。

待办事项

  1. 修复你的 Port 。

  2. 对新的 clang/llvm 进行性能评估。

  3. 修复 src 中的 clang 警告。

  4. 实现对交叉编译的正确支持。

联系人:Ben Laurie <benl@FreeBSD.org>

为了帮助从 gcc 迁移的过程,同时我在学习如何成为一名贡献者,我正在系统地修复 clang 的警告,以便我们可以再次启用 -Werror。

从 5 月底的超过 42,000 个警告减少到现在的不到 9,000 个警告。

待办事项

  1. 如果其他人能发现并修复警告,我会很高兴!

链接

http://code.google.com/p/libarchive

联系人:Tim Kientzle <kientzle@FreeBSD.org> 联系人:Michihiro Nakajima <ggcueroad@gmail.com>

在 9-CURRENT 中,libarchive、bsdtar 和 bsdcpio 已更新到 2.8.4 版本(感谢 mm@FreeBSD.org),现在 bsdtar 支持提取 XAR 和 RPM 格式的档案。

在 trunk 中正在进行开发,带来了许多改进,包括支持新的格式,既有读取部分(例如 cab、lha、rar),也有写入部分(例如 iso9660、xar)。

联系人:Pawel Jakub Dawidek <pjd@FreeBSD.org> 联系人:Martin Matuska <mm@FreeBSD.org>

ZFS 池版本 28 已于 2011 年 6 月 6 日合并到 8-STABLE 中。此外,还从 Illumos 项目导入了多个 bug 修复和改进。

待办事项

  1. 调查 ZFS 问题报告。

链接

联系人:Mohammed Farrag <mfarrag@FreeBSD.org>

FreeBSD 宣传、手册翻译和 FreeBSD 内核开发暑期课程。

待办事项

  1. FreeBSD 内核开发暑期课程。

链接

https://www.freebsd.org/status/www.FreeBSDFoundation.org

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

我们自豪地赞助了 BSDCan 会议,并赞助了 6 名开发者参加此次会议。我们还募集了超过 1,000 美元的捐款!基金会还在伊利诺伊州芝加哥的 FlourishConf 和南卡罗来纳州斯巴坦堡的 SouthEast LinuxFest 上设有代表。

我们获得了 PathScale 提供的 libcxxrt C++ 运行时 软件的非独占版权许可。

赞助了创建 FreeBSD 和 PC-BSD 的 IPv6-only 版本 的项目。

我们很高兴地宣布 Ed Maste 加入我们的董事会。Ed 自 2003 年起参与 FreeBSD,2005 年起成为提交者。Ed 领导着 Sandvine 的操作系统团队,负责一组开发者,负责将 FreeBSD 的改进引入 Sandvine 的操作系统,并将他们自己的更改贡献回 FreeBSD。

我们继续在基础设施项目上工作,加强用于构建包、网络测试等的硬件。这包括购买设备以及管理设备捐赠。实际上,我们刚刚为 SMP 性能工作下了一个 80 核服务器的订单。

请于 9 月 10 日在俄亥俄州哥伦布市的 Ohio LinuxFest 上拜访我们。

上述工作,以及我们为项目做的许多其他任务,都离不开捐赠。请帮助我们捐款,或请求你的公司捐款。如果你需要,我们很乐意向你或你的公司发送营销资料。了解如何捐款,请访问 http://www.FreeBSDFoundation.org/donate/

通过阅读我们的 博客Facebook 页面,了解更多基金会的最新消息。

链接

http://caia.swin.edu.au/urp/diffuse/

http://caia.swin.edu.au/urp/diffuse/downloads.html

联系人:Sebastian Zander <szander@swin.edu.au> 联系人:Grenville Armitage <garmitage@swin.edu.au>

DIFFUSE 是一个系统,旨在使 FreeBSD 的 IPFW 防火墙子系统能够基于统计流量属性对 IP 流量进行分类。

通过 DIFFUSE,IPFW 计算观察到的流的统计数据(如数据包长度或数据包间隔时间),并使用机器学习(ML)将流分类。除了传统的数据包检查规则外,IPFW 规则现在还可以通过流量统计数据或 ML 分类识别的类别来表达。当直接的数据包检查存在问题时(例如由于管理原因,或端口号不能可靠地标识应用程序时),这可能会很有帮助。

DIFFUSE 还使得一个 IPFW 实例能够将流信息和类别发送到其他 IPFW 实例,后者可以根据类别对这些流量进行处理(例如优先级、接受、拒绝等)。这允许分布式架构,在网络中的一个位置进行分类后,可在其他位置控制防火墙或流量整形操作。

DIFFUSE 原型是为 FreeBSD-CURRENT 提供的一组补丁,可以从项目网站下载。该网站还包含了更全面的介绍,并提供了相关工作和文档的链接。

在 2011 年 7 月,我们发布了 DIFFUSE v0.4 版本。此版本包含了一些 bug 修复和新特性。最显著的改进是我们提高了用于训练分类模型和进行离线分析的工具的功能。

DIFFUSE v0.4 是最后一个版本,因为 DIFFUSE 项目已经结束。然而,如果有必要,我们将来可能会发布 bug 修复。

链接

联系人:Bjoern A. Zeeb <bz@FreeBSD.org>

作为 no-IP 内核的后续工作,我们在 2010 年初构建了一个 FreeBSD IPv6-only 原型内核。该工作现在已经被合并到主流 FreeBSD,并将在即将发布的 9.0-RELEASE 中包含,允许构建定制的无 IPv4 内核。此外,FreeBSD 和 PC-BSD 的 IPv6 安装和配置支持得到了改进。

IPv6-only 内核以及继续构建没有 IPv4 的世界,像 FreeBSD 长期以来支持将 IPv6 编译去除一样,将使 IPv6 验证工作变得更加容易。这不仅将帮助 FreeBSD 或基于 FreeBSD 的商业产品构建者,我们还希望激励其他开源项目在 FreeBSD 或 PC-BSD 上测试他们的软件是否具备 IPv6 准备性。

我们已经提供并将继续提供 FreeBSD 的 IPv6-only 快照。同时,已经发布了 IPv6-only 的 PC-BSD 快照,以便为测试 GUI 应用程序的 IPv6 准备性提供一个极好的开源桌面环境。

我想感谢 FreeBSD 基金会和 iXsystems 对该项目的支持,以及 George Neville-Neil 提供的审查意见和 Kris Moore 在 PC-BSD 集成方面的帮助,并为提供 PC-BSD 快照做出的贡献。

联系: 佐藤広生 <hrs@FreeBSD.org>

ICMPv6 路由器通告 (RA) 消息是 IPv6 邻居发现协议 (RFC 4861) 的一部分,在 IPv6 的基本功能中扮演着重要角色。FreeBSD 在内核中支持此功能,且衍生自 KAME 项目的 rtadvd(8) 和 rtsold(8) 程序在用户空间中处理此消息。

这个小项目的目标是通过去除现有限制并增加最新 RFC 中发现的新功能,来改善当前的 RA 处理。已提交的更改如下:

  • FreeBSD 现在即使在 net.inet6.ip6.forwarding=1 的情况下,也支持接收 RA,并可以在每个接口的基础上启用/禁用接收。IPv6 RFC 中传统的“主机”和“路由器”节点模型,在 FreeBSD 9.0 或更高版本中被转化为“RA 接收接口”和“RA 发送接口”的概念,不仅依赖于系统范围内的 IP 转发能力。这对于具有多个 IPv6 支持接口(如客户边缘路由器)并需要 RFC 4862 中描述的 SLAAC(无状态地址自动配置)功能的系统非常有用。

  • rtadvd(8) 和 rtsold(8) 程序现在支持 RFC 6106 中用于 DNS 配置的 IPv6 路由器通告选项。这使得通过 RA 更新 /etc/resolv.conf 成为可能。

  • rtadvd(8) 守护进程现在支持动态添加/删除接口。虽然以前要求所有 RA 发送接口在启动守护进程前必须存在,但新版本不再要求此操作。当新接口到达时,它将动态配置。

  • 添加了 rtadvctl(8) 工具。此工具显示每个接口的 RA 发送状态,并提供控制守护进程的方式。这个工具大大简化了系统管理工作。

上述所有更改已提交到 9-CURRENT 中,部分内容将合并到 8-STABLE。

联系: Luigi Rizzo <rizzo@iet.unipi.it>

netmap 是一个新颖的框架,旨在 FreeBSD 中实现线速数据包处理,同时保留用户空间环境提供的安全性和丰富功能,并且仅使用标准系统调用。使用 netmap,在用户程序与网络之间传输一个数据包仅需 70 个时钟周期。例如,一个运行在 900MHz 的单核处理器可以生成 14.8Mpps 的数据包速率,足以饱和 10GigE 接口。这比使用标准设备驱动程序提高了 5-10 倍的性能。netmap 是通过相对较小的内核设备驱动程序(少于 2000 行代码)和各个网络卡补丁(每个 300-500 行代码)实现的;目前支持 Intel 1 和 10 Gbit 卡以及 RealTek 1 Gbit 卡。不需要特殊的用户库,尽管我们有一个小的 libpcap-over-netmap 库,可以在不修改源代码或二进制文件的情况下,启用现有应用程序使用新的 API。netmap 的主页包含了该项目的更详细描述、源代码、论文和幻灯片。

联系: Vadim Goncharov <vadim_nuclight@mail.ru>

ipfw(4) 数据包过滤器现在支持调用和返回规则动作。当数据包匹配带有调用动作的规则时,规则号会保存在内部堆栈中,并且规则处理会从指定号的第一个规则开始(类似于 skipto 动作,但允许回退跳转)。如果后续遇到带有返回动作的规则,处理将返回到堆栈中保存的规则号更大的第一个规则。这使得可以在规则中组织“子例程”,例如,可以从规则集的不同位置多次调用同一个子例程。更多细节请参见 ipfw(8)

联系: Catalin Nicutar <cnicutar@FreeBSD.org> 联系: Bjoern Zeeb <bz@FreeBSD.org>

用户超时选项的目标是允许应用程序调整 TCP 等待确认的时间。使用 UTO,应用程序可以选择愿意等待数据被确认的确切时间。此外,应用程序还可以向对等方建议其在丢弃连接之前应该等待的时间(对等方可能会允许也可能不会允许这个设置)。

例如,一个 SSH 客户端可以请求为连接设置一个较长的超时(4 小时)。经过一段时间后,客户端被断开连接,2 小时后重新连接(使用相同的 IP)。由于 UTO,连接应该仍然保持活动,任何丢失的数据应该被重新传输。

当前的测试在 TCP over IPv4 上进行。超时可以通过全局 sysctl 进行限制,且应用程序可以选择通过套接字选项发送或接受超时值。除了回归测试外,已添加对 telnet、ssh 和 netcat 的支持。

待办事项

  1. 对 TCP over IPv6 进行回归测试。

  2. 将支持扩展到更多的用户空间应用程序。

  3. 实现策略和回归测试以处理和模拟 DoS 场景。

链接

http://wiki.freebsd.org/Intel_GPU

联系方式:Konstantin Belousov <kib@FreeBSD.org>

FreeBSD 基金会赞助的项目旨在移植 Linux 内核模式的 Intel GPU 驱动,目前已取得一定进展,部分机器可以使用 Xorg,配合来自 git 主干的 ddx 驱动和最新的 Mesa。在我的测试机器上,我成功运行了 uhexen2 和 ioquake3。

尽管如此,该驱动仍处于调试的早期阶段。详细信息、安装指南和初步 bug 分析请参阅 wiki 页面。

目前的主要工作集中在将所需的 VM 更改合并到基本系统中,理想情况下在 9.0 版本发布前完成。

链接

联系方式:Benjamin Kaduk <kaduk@mit.edu> 联系方式:Derrick Brashear <shadow@gmail.com>

AFS 是一个分布式网络文件系统,起源于卡内基梅隆大学的 Andrew 项目。自上次报告以来,上游的 OpenAFS 已更新为 1.6.0pre6 发布候选版本,可在 FreeBSD Ports 中找到。我们仍然预计即将发布的 1.6.0 版本将适用于常规客户端工作负载(但不适合高负载)。我们还在与 bsd.kmod.mk 内核模块构建基础设施的集成方面取得了进展,并已实现了一个工作原型。进一步的清理和测试是必要的,才能准备好提交。

目前正在处理几个已知的悬而未决的问题,但欢迎提交详细的 bug 报告,邮箱:port-freebsd@openafs.org。

待解决任务:

  1. 更新 VFS 锁定,以支持基于磁盘的客户端缓存以及基于内存的缓存。

  2. 跟踪可能在负载下出现的竞态条件和死锁。

  3. 与 bsd.kmod.mk 内核模块构建基础设施集成。

  4. 消除内核模块中的中等内存泄漏。

  5. PAG(进程认证组)支持尚不可用。

链接

联系方式:Marius Strobl <marius@FreeBSD.org>

mii(4) 子系统已经经过彻底改造,并且合并了自从最初移植 mii(4) 以来,来自 NetBSD/OpenBSD 的修复和增强。因此,许多代码重复和临时修复已被移除,现在我们再次能够与 NetBSD 共享 miidevs 文件。由于 KPI 断裂,这项工作的主要部分将无法合并到 8-STABLE 或更早版本中。

此外,已将 mii(4) 公布的常见媒体+选项组合的简写别名添加到 ifmedia 代码中,因此现在可以将 dmesg 输出中找到的媒体字符串直接提供给 ifconfig(8)。此功能将在 8-STABLE 中的 8.3-RELEASE 之前合并。

联系方式:Rick Macklem <rmacklem@FreeBSD.org>

新的 NFS 客户端和服务器不再被视为实验性,并且很可能会成为 FreeBSD 9.0 的默认配置。包括对 NFSv4.0 的支持,以及 NFSv3 和 NFSv2 的支持。在最近在密歇根大学 CITI 举行的 NFSv4 互操作性 Bakeathon 上,NFSv4.0 支持得到了测试。Bakeathon 上还测试了 NFSv4.1 的基本客户端实现,之后将作为测试补丁提供给 FreeBSD 9.0 内核源码。如果你有兴趣测试 NFSv4.1,请关注 freebsd-fs@FreeBSD.org 邮件列表。zkirsch@FreeBSD.org 和其他人将承担大部分 NFSv4 服务器的工作,而我将专注于客户端,希望 NFSv4.1 支持在未来一年左右逐步成熟。

我还将发布一个实验性的 NFSv4 客户端磁盘缓存机制补丁,称为 Packrats。关于此的公告将在 freebsd-fs@FreeBSD.org 上发布。

链接

联系方式:Benedict Reuschling <bcr@FreeBSD.org> 联系方式:Dru Lavigne <dru@FreeBSD.org>

在 6 月 6 日,FreeBSD 文档项目举行了文档冲刺活动,讨论了多个文档问题。此次冲刺活动主要通过 IRC 频道 #bsddocs 在 EFNet 上进行。会议过程中,所有参与者都可以在 Etherpad 文档中实时编辑记录。与讨论并行,我们关闭了多个文档问题报告(PR)。仍有一些文档 PR 被标识为可能也可以关闭,因为它们的原始问题已经提交,但该 PR 仍然处于开放状态。每个 PR 需要单独调查。

Dru Lavigne 带来了她在 Open Help 会议期间的经验。将来,如果 FreeBSD 文档团队能够参加 Open Help 会议,将与其他开源文档项目交换经验和工作方式,会非常有益。

此次讨论的主要话题包括 BSDCan 开发者峰会中文档工作组讨论的内容。涉及将文档库从 CVS 转移到 SVN、从 DocBook SGML 转移到基于 XML 的文档以及 RST(重构的文本)等其他格式的使用,并对手册在电子版和纸质版的发布进行广泛讨论。

整体参与情况良好,但我们希望未来能有更多文档人员参与。下一次文档冲刺活动计划在 EuroBSDCon 2011 之前举行,届时将提前宣布,以便有兴趣的人能够预留时间。我们还计划包括不同的时区,以便可以从更多地区获得意见。我们希望能够定期举办这类冲刺活动,处理影响整个社区的文档问题。

感谢所有参与者,帮助推动了我们讨论的问题。

待解决任务:

  1. 在下一届 EuroBSDCon 前安排下一次文档冲刺,并包括不同的时区。

  2. 继续处理冲刺中识别的待办事项。

  3. 解决已识别为已修复但仍未关闭的文档问题报告。

链接

联系人:Remko Lodder <remko@FreeBSD.org> 联系人:René Ladan <rene@FreeBSD.org>

在过去的一段时间里,大部分工作集中在保持手册的更新;目前它已更新完毕,除了有关网络服务器的部分。其他正在进行的工作包括常见问题解答(FAQ)和网站的更新,后两者仍在进行中。

待处理任务:

  1. 寻找志愿者!最棒的是,你不需要是 FreeBSD 或荷兰语的专家才能加入,只需要一些热情和空闲时间。

链接

联系人:佐藤広生 <hrs@FreeBSD.org> 联系人:Ryusuke Suzuki <ryusuke@FreeBSD.org>

www/jadoc/ja_JP.eucJP/books/handbook 子树不断更新。在此期间,www/ja 子树中的许多过时内容已更新为英文对等内容的最新版本。因此,目前大部分文件已与 www/en 子树同步,并且这一更新工作预计将在今年完成。

对于 FreeBSD 手册,已开始进行内核配置部分的翻译工作。此外,我们还计划翻译即将发布的版本公告,因为这对日本用户也非常重要。

待处理任务:

  1. 继续翻译 doc/ja_JP.eucJP 和 www/ja 中的过时和/或未翻译的文档。

链接

http://people.freebsd.org/~nwhitehorn/ps3/

联系人:Nathan Whitehorn <nwhitehorn@freebsd.org>

现在 FreeBSD Playstation 3 的移植已经相当成熟,将在 9.0 版本中包含,从 BETA2 开始。大多数内部设备,包括 USB 端口、蓝牙、以太网和 SATA 设备现在都已支持,并且操作系统可以安装到内部硬盘并从中启动。

移植仍有一些剩余工作(无线、声音、X11 和 SPU),这些可能成为那些对非 PC 架构感兴趣的人的项目。

待处理任务:

  1. 内置无线。Playstation 3 上的 802.11 无线接口通过有线以太网 MAC 多路复用,目前不支持。

  2. 目前不支持声音硬件。

  3. 帧缓冲驱动程序当前不支持 X11。这将涉及编写一个简单的 X11 帧缓冲驱动程序,以便与 syscons 连接。

  4. Cell 处理器上的协同处理单元(SPU)尚不支持。它们展示了一种异构计算模型,比 GPGPU 计算更适合 UNIX 类型的内核:每个 SPU 都有用户和监控模式的概念,以及中断,并且可以与主 CPU 核心共享 MMU 上下文。因此,它们原则上可以支持完整的 UNIX 进程模型。

联系人:Grzegorz Bernacki <gjb@semihalf.com> 联系人:Rafal Jaworowski <raj@semihalf.com>

Marvell Armada XP 是基于 Sheeva 嵌入式 CPU 的完整系统芯片解决方案。这些设备集成了最多四个符合 ARMv6/v7 标准的 Sheeva CPU 核心,并共享 L2 缓存。此工作正在扩展 FreeBSD/arm 基础设施,以支持最近的 ARM 架构变种,并为集成外设提供基本的设备驱动程序。目前,FreeBSD 对 Armada XP 的支持包括:

  • 通过 U-Boot 引导加载程序启动

  • 支持 ARMv6/v7

  • 重新设计的 CPU 标识方案

  • 新的缓存标识方案

  • 支持 PIPT 缓存

  • 重新设计的 ARMv6/v7 特性支持的 PMAP

  • 串行控制台支持(UART)

  • 中断控制器

  • 集成定时器

  • USB 驱动附加

  • 以太网控制器驱动

下一步:

  • L2 缓存支持

  • SMP 支持

  • PCIe 和 SATA 驱动

联系人:Grzegorz Bernacki <gjb@semihalf.com> 联系人:Rafal Jaworowski <raj@semihalf.com>

APM86290 系统芯片是 AppliedMicro 的 PACKETpro 嵌入式处理器家族的成员。该芯片包含两个 Power Architecture PPC465 处理器核心,符合该架构的 Book-E 规范,并集成了多个外设。此工作旨在扩展 FreeBSD 中现有的 Book-E 支持,涵盖 PPC4xx 处理器变种以及集成外设的设备驱动程序。当前 FreeBSD 对 APM86290 的支持包括:

  • 通过 U-Boot 启动加载器引导

  • 支持 PPC465 核心

  • L1 缓存

  • 串行控制台 (UART)

接下来的步骤:

  • 中断控制器

  • EHCI USB 驱动程序附件

  • 以太网控制器

  • 队列管理器/流量管理器

  • L2 缓存支持

链接

联系人:Nathan Whitehorn <nwhitehorn@FreeBSD.org> 联系人:Andreas Tobler <andreast@FreeBSD.org>

该项目的目标是使 FreeBSD 能够在符合 PAPR 规范的机器上运行,例如 IBM pSeries 系列。

目前,我们可以在最新的 qemu 快照下启动 POWER7 模拟。

启动过程在尝试找到 PIC 时停止。

同样适用于 IntelliStation-285(POWER5+)。

待处理任务:

  1. 实现中断控制器。

  2. PCI 总线扫描。

  3. 驱动程序,驱动程序,驱动程序。

  4. 改进内存管理。

联系人:Marius Strobl <marius@FreeBSD.org>

  • iommu(4) 驱动程序已更改,以利用主机 PCI 和主机 SBus 桥接器的流缓冲区(如果存在),在某些配置中通过 DMA 事务的缓存,带来了适度的性能提升。作为前提,已审查并修复了所有编译为 sparc64 GENERIC 内核一部分的驱动程序中对 bus_dma(9) 的使用,并在 sound(4) 和 sym(4) 中,至少在必要时进行了适当的解决,以便能够使用流缓冲区。 对此的支持将在 8-STABLE 中合并,作为 8.3-RELEASE 的一部分。

  • 在将树中的 binutils 更新为 2.17.50 后,现在首次支持在基本系统中为 sparc64 提供 GNUTLS 支持,并将 TLS 重定位支持添加到 rtld(1),并在基础 GCC 和 malloc(3) 中启用。

  • 为配备 UltraSPARC-IV 的 Sun Fire V890 添加了支持和解决方法。 对此的支持将在 8-STABLE 中合并,作为 8.3-RELEASE 的一部分。

  • schizo(4) 驱动程序已更新,以支持 XMITS Fireplane/Safari 到 PCI-X 桥接器,并为 Casinni/Skyhawk 组合添加了解决方法。此更改可能解决使用 Sun Fire V480 上的 Casinni 网络接口卡时遇到的崩溃问题,特别是配备非 501-6780 或 501-6790 中心板的配置。 这些更改已合并回 8-STABLE,并将作为 8.3-RELEASE 的一部分发布。

  • 作为 largeSMP 项目的一部分,该项目的目标是支持在 FreeBSD 中超过 32 个 CPU 核心,sparc64 特定代码的多个部分,主要是汇编代码,已进行了调整,因此现在支持超过 32 个 CPU 核心。

  • 在不需要将内核 TSB 锁定到 dTLB 中的机器上,因此可以基本上使用整个 64 位内核地址空间的机器上,例如配备 UltraSPARC-III+ 和更高版本 CPU 的机器,内核虚拟内存已增大,不再受到 VM_KMEM_SIZE_MAX 的限制,且 VM_KMEM_SIZE_SCALE 已降至 1,允许内核使用更多内存,这对于 ZFS 等非常有用。 这些更改将在 8-STABLE 中合并,作为 8.3-RELEASE 的一部分。

  • 在处理 UltraSPARC-III 及更高版本 CPU 上的 TLB 用户映射刷新时,代码中采取的快捷方式在具有超过 8 个 CPU 核心的 MP 系统上表现不佳,因此已进行了重写。结果,现在能够扩展到至少支持 16 个 CPU 核心的机器。 这些更改将在 8-STABLE 中合并,作为 8.3-RELEASE 的一部分。

链接

联系人:Chromium on FreeBSD 团队 <chromium@FreeBSD.org>

在上个季度,我们一直在保持 Chromium 浏览器的最新版本,每当上游发布新版本时,就会将其导入到 Ports 中。随着时间的推移,更多的补丁被集成或因上游代码清理而过时。版本 13 已经可以从 Chruetertee 仓库获取,其补丁数量比版本 12 少了 70 个。

链接

联系人:Gábor János PÁLI <pgj@FreeBSD.org> 联系人:Ashish SHUKLA <ashish@FreeBSD.org> 联系人:Giuseppe Pilichi <jacula@FreeBSD.org>

我们自豪地宣布,FreeBSD Haskell 团队已将 Haskell Platform 2011.2.0.1 提交到 FreeBSD Ports,并更新了现有的 Port 至其最新稳定版本。除了已正式提供的 Port 外,许多 Port (如 Snap Web 框架、Leksah 及其依赖项)仍在等待添加。任何希望提前使用它们的用户,请参考我们的开发仓库中的说明。

待办事项

  1. 待 Haskell Platform(包括 GHC)2011.4.0.0 发布,及时更新。

  2. 向 Ports 中添加更多 Port 。

  3. 创建 Happstack 的 Port 。

  4. 创建 gitit 的 Port 。

链接

联系人:KDE FreeBSD <kde-freebsd@kde.org>

Alberto Villa 和 Raphael Kubo da Costa 前往瑞士的 Randa,分别参加了 KDE Multimedia/Kdenlive sprint 和 Platform 11 sprint。sprints 为他们提供了与上游 KDE 社区建立更紧密联系的机会,了解 Qt 和 KDE 的未来,并确保 FreeBSD 的需求被考虑到。更多信息请参见 dot.kde.org 上的文章《From Platform to Frameworks -- KDE hackers meet in Switzerland》。

KDE on FreeBSD 团队继续改进 FreeBSD 下的 KDE 和 Qt 体验。最近一轮的改进包括:

  • Qt 支持 Clang 作为编译器

该团队还发布了许多版本并将多个修复和补丁上游。最新的一轮发布包括:

  • Qt: 4.7.3

  • KDE: 4.6.3;4.6.4;4.6.5

  • Amarok: 2.4.1

  • Digikam(及 KIPI 插件): 1.9.0

在提交 Port KDE PIM 4.6.0 和 Calligra 2.3.72 之前,需要进一步的测试。请访问 Alberto Villa 的测试征集和 area51 页面进行测试。

该团队始终欢迎更多的测试人员和 Ports 维护者,欢迎通过 kde-freebsd@kde.org 联系我们,并访问我们的主页。

待办事项

  1. 测试 KDE PIM 4.6.0。

链接

http://www.libvirt.org/

联系人:Jason Helfman <jhelfman@experts-exchange.com> 联系人:Daniel P. Berrange <berrange@redhat.com>

Libvirt 是一个与虚拟化能力交互的工具包,已被移植到 FreeBSD,但其网络功能已被禁用,因为与 FreeBSD 不兼容。Libvirt 目前支持连接到多种类型的虚拟机监控器,但如果其网络功能能移植到 FreeBSD,它将成为一个更加有用的工具。

在与 Daniel P. Berrange 联系时,他很友好地提供了有关将 libvirt 的网络功能移植到 FreeBSD 所需的内容。以下是他的回复的简要概述:

libvirt 中的网络功能有两个方面:

  • 虚拟网络驱动程序(在 src/network/bridge_driver.c 中)使用 Linux 内核的原生“bridge”功能,提供隔离、路由或 NAT 网络连接到虚拟机。主机上创建了一个桥接设备,并将来宾 TAP 设备添加到该桥接设备。桥接上没有物理以太网设备,iptables 用于控制主机操作系统是否将流量路由到/从桥接和物理 LAN。 需要将桥接和桥接控制功能移植到 FreeBSD,并编写一个兼容的 bridge_driver.c 版本,用于处理 NAT、路由和隔离来宾配置。

  • 主机接口驱动程序(在 src/interface/netcf_driver.c 中)使用 netcf 库来管理主机网络接口的配置,执行例如绑定、VLAN、桥接和控制接口可用性的操作。核心任务是将 netcf 移植到 FreeBSD。需要创建一个 netcf 后端,它能够理解 FreeBSD 的网络配置文件并调用适当的工具使接口上线/下线。

这两个任务基本上是独立的,因此可以并行进行。

待办事项

  1. 移植 libvirt 的桥接网络驱动。

  2. 移植 libvirt 的 netcf 驱动。

链接

联系人:David Naylor <naylor.b.david@gmail.com>

我想介绍一个已经在开发了三年的项目。来自项目的 README:

一个并发 Port 构建工具。尽管 FreeBSD 的 ports 支持使用多个作业(通过 MAKE_JOBS)构建单个 Port ,但它无法并行构建多个 Port 。这个工具正是完成了这一功能。

它的一些关键特性:

  • 并发 Port 构建

  • 负载控制

  • 类似 top 的 UI

  • 持久化构建(默认)

Portbuilder 最初使用线程来控制每个 Port 的构建阶段,但由于需要锁,导致死锁,一些 Port 无法正确构建。为了解决这些问题,进行了重写,只使用单线程,从而使得所有的锁定代码变得多余。通过使用 kqueue(2),管理并发 Port 构建的开销最小。为了进一步减少开销,相关工作正在进行中。

Portbuilder 可以从 ports-mgmt/portbuilder 中安装,使用详情请参阅 README。请注意,这是一个 BETA 版本,特性集和 API 可能会发生变化,Portbuilder 可能会崩溃或无法正常工作。

待办事项

  1. 创建 Wiki 页面。

  2. 测试。

  3. 查看 TODO。

链接

联系人:Thomas Abthorpe <portmgr-secretary@FreeBSD.org> 联系人:Ports 管理团队 <portmgr@FreeBSD.org>

Ports 树慢慢接近 23,000。PR 数量仍保持在大约 1100。

在第二季度,我们新增了 3 位提交者,保管了 2 个提交位,并为 portmgr 添加了一个新成员。

Ports 管理团队一直在持续进行 -exp 运行,验证基本系统更新可能对 Ports 树的影响,并为主要的 Port 更新提供 QA 运行。值得注意的是,以下是进行的 -exp 运行:

  • ports/154044,-exp 运行以更新 x11-toolkits/open-motif

  • ports/155269,-exp 运行修复基本系统/ Port 的 ncurses 问题

  • ports/155215,-exp 运行以更新 gmake,由 linimon 完成

  • ports/156575,-exp 运行以生成 INDEX 中的 Port 子集

  • ports/155983,-exp 运行以重新定位 md5 到 /sbin

  • ports/139116,-exp 运行以在“post-install”之前调用“install-rc-script”目标

  • ports/155510,-exp 运行以移除对 7.X 之前版本的支持

  • ports/156533,-exp 运行以修补 bsd.apache.mk

  • ports/152498,-exp 运行以改进 USERS/GROUPS 处理

  • flz 执行了 clang -exp 运行

  • erwin 执行了 perl 5.12.4 更新的 -exp 运行

  • pav 执行了多次 gtk3 的 -exp 运行

待办事项

  1. 寻求帮助将 Port 与 clang 一起构建

  2. 寻求帮助修复 CURRENT 上损坏的 Port 。(列表也需要更新)

  3. 寻求帮助处理 Tier-2 架构上的 Port 。(列表也需要更新)

  4. 大多数 Port PR 已分配,我们现在需要专注于测试、提交和关闭。

链接

http://bsdday.eu/2011

联系人:Martin Matuska <mm@FreeBSD.org> 联系人:Gábor Péli <pgj@FreeBSD.org>

这个为期一天的活动旨在聚集中欧地区的开源 BSD 系统开发者,推广他们的工作和组织,并在现实生活中相互见面。我们还希望激励潜在的未来开发者和用户,特别是本科大学生,来与 BSD 系统合作。

今年的 BSD-Day 将于 2011 年 11 月 5 日在斯洛伐克布拉迪斯拉发的斯洛伐克科技大学电气工程与信息技术学院举行。

欢迎所有人参加!

待办事项

  1. 申请。我们在等你!

链接

http://www.cl.cam.ac.uk/research/security/capsicum

http://wiki.freebsd.org/SOC2011IlyaBakulin

联系人:Ilya Bakulin <kibab@FreeBSD.org>

一些基本系统的应用程序已获得沙箱支持,目前的任务是将轻量级解析守护进程适配到沙箱中——这解决了需要在沙箱中将 IP 地址转换为域名的应用程序的问题。

待办事项

  1. 为基本系统中的更多应用程序添加沙箱支持。

  2. 帮助 Jonathan Anderson 和 Robert Watson 将 FreeBSD-Capsicum 合并到 FreeBSD-HEAD。

链接

联系人:Oleksandr Dudinskyi <dudinskyj@gmail.com>

目前,我按照计划进行工作,已经在 iostat 工具的 -E 选项中打印了磁盘错误信息。目前仅显示五种类型的错误。进一步的分析将让我有机会识别其他类型的磁盘错误。

待办事项

  1. 查找其他类型的错误及其注册位置。

  2. 可能找到比 xpt_done() 更好的错误注册位置。

链接

联系人:Brooks Davis <brooks@FreeBSD.org> 联系人:Robert Watson <rwatson@FreeBSD.org>

我们很高兴参与第七届谷歌编程之夏。在期中评估后,我们有 15 个项目在向最终评估迈进。你可以通过查看学生个人的 Wiki 页面或订阅 soc-status 邮件列表来查看最新状态。

链接

联系人:Zhihao Yuan <lichray@gmail.com>

该项目创建了一个支持多字节的 nvi 分支。虽然 FreeBSD 基本系统中的大多数用户空间工具都支持多字节编码,但在此之前没有任何纯许可的 nvi 分支支持足够的多字节编码(包括 Unicode 和非 Unicode)。

目前,功能上,新版 nvi 已经可以进行测试。描述请见 https://github.com/lichray/nvi2/wiki(该补丁已过时)。我将在稍后提交一个新版本。

从 nvi-1.79 中删除的功能包括:

  • Perl 和 Tcl 解释器支持;

  • 完整的 Perl/Tcl/Tk 脚本框架;

  • 第三方 gtags 支持。

从 nvi-1.81.6 中采用的功能包括:

  • 多字节编码支持(wchar_t + libiconv + libncursesw);

  • fileencoding 和 inputencoding 选项;

  • 未记录的 :vsplit 命令,用于垂直分割屏幕。

修复了许多已知的 bug 和 nvi-devel 中的不完整代码。然而,我在 nvi-devel 的 iconv 框架中发现了一个严重的内存泄漏(通过 valgrind)。这需要仔细审查。

待办事项

  1. 审查 iconv 部分并修复内存泄漏。

  2. 为测试编写脚本。但是我似乎没有相关经验……

  3. 文件编码检测。我的计划是首先检测 UTF-16 BOM,然后是 UTF-8。如果都失败了,使用 locale。UTF-8 BOM 不被 iconv 支持,我们需要讨论是否应该在编辑器中支持它。

链接

联系人:Gábor Kővesdén <gabor@FreeBSD.org>

当前 libc 中的正则表达式代码相当过时,且不支持宽字符。有多种开源的正则表达式库,但替换这段代码并非简单任务,因为涉及很多考虑因素和需求。最好的候选库是 TRE,它是一个 BSD 许可的库,支持宽字符和多字节字符,符合 POSIX 标准,并且在性能上优于其他可用的替代品,因此已开始使用 TRE 进行替换。除了替换之外,计划实现启发式匹配,这将显著加速模式匹配。此外,基本系统中的 grep 和 diff 工具一直在使用 GNU 的正则表达式代码,GNU 的语法更为宽松。希望在基本系统中使用一个统一的正则表达式引擎,因此也需要实现 GNU 的语法(作为可选功能)。

目前,已经添加了一个快速字符串匹配算法,这是 Turbo Boyer-Moore 算法的变体。该算法经过稍微调整,不仅支持字面模式,还支持包含 $^ 符号的模式。当模式允许时,这个算法会被自动使用。

此外,还实现了启发式匹配。如果无法直接应用快速匹配算法,它会解析模式并分离出模式的固定长度前缀和后缀。然后,它可以用来定位文本中可能匹配的区域,并使用比完全正则表达式 NFA 更高效的算法来进行匹配,最后仅在已经定位到的狭小范围内应用 NFA。

待办事项

  1. 实现 GNU 正则表达式语法。

  2. 添加测试套件以检查 GNU 特有的行为,并添加一些与区域设置相关的测试。

  3. 测试并审查代码。联系作者,检查这些改进是否可以添加到上游代码中,以便更多人受益。

最后更新于

这有帮助吗?