FreeBSD 2007 年 1-3 月状态报告
最后更新于
最后更新于
原文链接:
本报告涉及了 2007 年 1 月至 3 月期间与 FreeBSD 相关的项目。这个季度以一场大事件收尾,Sun 备受好评的 ZFS 文件系统被移植到了 FreeBSD 源码中,故将在即将发布的 FreeBSD 7.0 版本中推出。年初时,令人兴奋的基准测试结果展示了我们在 SMP(对称多处理)方面的工作成果。有关详细信息,请参阅《SMP 可扩展性》报告。
在夏季,FreeBSD 将再次参与谷歌的“编程之夏”计划。目前,正在进行学生选拔,我们期待一些令人激动的项目。
会议即将举行,将于 5 月 16 至 19 日在渥太华举办。
感谢所有报告员的出色工作!希望大家阅读愉快。
联系方式:Pawel Jakub Dawidek <>
ZFS 文件系统现已成为 FreeBSD 操作系统的一部分。ZFS 是从 OpenSolaris 操作系统移植而来的,并采用 CDDL 许可证。ZFS 将在 FreeBSD 7.0-RELEASE 中作为实验性功能提供。
在过去的三个月里,变化不多。以下是一些快速的更新列表:
在 UCOM 层进行了一些清理,主要是为了创建一个上下文,供所有回调使用,以便它们能够调用休眠函数。这是通过 USB 配置线程系统实现的。这样做的原因是,当应用同步操作时,代码变得更简洁,而异步操作则更为安全,因此所有 USB 资源都会为每次传输预分配。在变更后,只有数据传输是异步进行的,所有配置现在都是同步完成的。这使得 USB 设备驱动程序看起来更像旧的 USB 堆栈。
moscom.c
已从 OpenBSD 导入,FreeBSD 中名为 umoscom.c
。
ugensa.c
已从 NetBSD 导入。
f_axe.c
现在支持 Ax88178 和 Ax88772,源自 OpenBSD。
在我上一份状态报告中,我请求了安装 FreeBSD 的 Sparc64 主机。测试仍在进行中,但 EHCI PCI 卡仍然存在一些问题。我不太确定问题出在哪里,但似乎 DMA 可访问的内存没有正确同步。
Markus Brueffer 仍在继续开发 USB HID 解析器和支持。目前还没有提交任何更改。
一些人已经报告了我的新 USB 堆栈的成功应用。有人声称性能提高了两倍,其他人则看到了更多改进。但不要期望过高的结果。
如果你想测试新的 USB 堆栈,可以查看 USB 的 Perforce 树或从我的 USB 主页下载 USB 驱动程序的 SVN 版本。目前,tar 包稍微过时。
自上次状态报告以来,发布了一条安全公告,涉及 FreeBSD 基本系统中的一个问题;该问题存在于“第三方”代码中,且由 FreeBSD 以外的维护人员负责。此外,还与发布工程团队合作发布了几份勘误通知,其中包括一条有关 FreeBSD Update 的通知。安全团队和 Ports 提交者继续更新《漏洞和曝光标记语言》(VuXML)文档,记录 FreeBSD Ports 中的新漏洞;自上次报告以来,新增了 21 条记录,总数达到了 890 条。
FreeBSD 安全团队支持以下 FreeBSD 版本:FreeBSD 5.5、FreeBSD 6.1 和 FreeBSD 6.2。特别需要注意的是,FreeBSD 4.11 和 FreeBSD 6.0 不再受支持。受支持版本的生命周期结束日期已列在网站上。
我们已经将 Remko Lodder 加入了 bugmeister 团队。Remko 在审查古老的 PR,特别是在 i386 类别方面,做了大量的工作,值得认可这些辛勤的努力。由于他的工作,i386 类别的 PR 数量已降至多年最低。
总体 PR 数量已减少到约 5100,这是一个显著的减少。
在过去的季度里,发布工程团队已经开始为 FreeBSD 7.0 做计划和准备,该版本预计将在 2007 年晚些时候发布。HEAD 代码线已进入 slush
模式,意味着大型变更应与发布工程团队协调后再提交。
发布工程团队还为 2007 年 2 月和 3 月制作了 FreeBSD 6.2-STABLE 和 7.0-CURRENT 的快照,分别对应这些开发分支在相应月份开始时的状态。尽管这些快照没有经过充分的测试,也不应在生产环境中使用,但它们可以用于实验或测试新特性。
FreeBSD 基金会在第一季度筹集了超过 65,000 美元。我们离今年筹集 250,000 美元的目标还有四分之一。我们继续支持开发者交流,帮助 FreeBSD 开发者参加 AsiaBSDCon。我们是 BSDCan 的赞助商,并且目前正在接受该会议的旅行赞助申请。
基金会提供了支持,帮助 ZFS 文件系统的开发。我们继续致力于升级项目的网络测试平台,采用 10Gbps 互联技术。我们参加了 SCALE 会议,并从 No Starch Press 收到了一个提议,邀请我们在他们的 BSD 书籍中刊登基金会广告。我们的第一则广告将出现在《设计 BSD Rootkits》一书中。
上述链接记录了一些关于在 FreeBSD 上构建 Linux 内核 API 模拟层的工作,这个模拟层使得可以以最少的修改在 FreeBSD 上构建 Linux 设备驱动程序。最初,项目专注于 USB 网络摄像头,这是目前几乎没有支持的设备类别。这个模拟层作为 Port (devel/linux-kmod-compat) 提供,模拟了足够的 Linux USB 堆栈,能让我们从未修改的 Linux 源代码构建两个摄像头驱动程序,这两个驱动程序也作为 Port 提供 (multimedia/linux-gspca-kmod 和 multimedia/linux-ov511-kmod),其中前者支持超过 200 种不同的摄像头。
虽然一些函数可以一对一映射,但对于其他函数,必须构建完整的模拟(例如,收集来自不同函数调用的输入,然后将 Linux 数据结构映射为功能上等效的 FreeBSD 数据结构)。但总体而言,项目表明软件接口是合理的正交的,因此不需要实现完整的 Linux 内核 API 就能让某些功能工作。为了扩展对其他外设系列的支持,仍然需要继续工作以覆盖 Linux 内核 API 的其他方面,例如内存映射、PCI 总线访问和网络堆栈 API。
实现更多子系统(例如网络接口 API;内存管理/PCI 总线访问 API)。
解决许可问题。在当前的 Ports 中,C 代码完全是新的并且是根据 FreeBSD 许可协议发布的。已经从头开始重写(并进行了文档化)许多头文件,因此它们也使用 FreeBSD 许可协议。一些其他的头文件仍然来自于各种 Linux 发行版,需要重新编写以生成 BSD 许可的代码,能够被导入内核,而不是仅作为 Port 提供。虽然 GNU 驱动程序没有这个问题,但对于那些在双重许可下提供的驱动程序,这可能是个重要的特性。
自上次状态报告以来,AMD64 已与 i386 同步,特别是现在 TLS 和 futex 已在 AMD64 上可用。特别感谢 Jung-Uk Kim 完成了 TLS 工作。
目前的重点是实现 *at()
系列的 Linux 系统调用,并寻找和修复剩余的 futex 问题。
我们需要更多的测试人员和 bug 报告者。如果你有时间并且有一个喜欢的 Linux 应用程序,请在 -CURRENT 上尝试一下。如果遇到问题,可以查看 Wiki 是否已经知道该问题,并在 emulation@ 上报告。我们特别感兴趣的是关于 2.6 兼容性(sysctl compat.linux.osversion=2.6.16
)的报告,但仅限于最新的 -current 和我们可能在 Perforce 仓库中的一些补丁(可以通过 Wiki 获取)。
我们要感谢所有测试更改/提交补丁并因此帮助改善 Linux 兼容层环境的人。
目前,正在为这项工作使用两个 p4 分支:
gnn_fast_ipsec:一个双栈分支,包含 Kame 和启用 v6 的 FAST_IPSEC。
gnn_radical_ipsec:一个单栈分支,仍在进行中,已经删除了 Kame IPsec,只有 FAST 保留。
测试补丁!
已经完成了将 trunk(4) 从 OpenBSD 移植的工作,并且包括了将 NetBSD 中的 agr(4) 合并到 802.3ad LACP。这个驱动程序可将使用多种不同的协议/算法将多个网络接口聚合为一个虚拟接口。
failover - 如果主接口变为非活动状态,流量将通过次要端口发送。
fec - 支持 Cisco Fast EtherChannel。
lacp - 支持 IEEE 802.3ad 链路聚合控制协议(LACP)和标记协议。
loadbalance - 使用输出哈希进行静态负载均衡。
roundrobin - 通过所有活动端口使用轮询调度器分配外发流量。
此更新将很快提交,进一步的测试非常欢迎。
此驱动程序的工作进展缓慢,主要集中在处理新发布的网卡固件。无法重新分发旧版固件,可以重新分发新的固件,但 API 完全不同的。随着新固件修改几乎完成,驱动程序已接近准备好用于 -CURRENT。
修复 mbuf 泄漏(潜在修复待定)。
集成软件控制无线电发射器。
在 2 月份发布了 mpd4 分支的稳定版 4.1,提供了许多新特性和修复。mpd3 分支被宣布为遗留版本。
自发布以来,已经在 CVS 中实现了几项新功能:
链路中继功能(也称为 L2TP/PPTP 访问集中器),
使用 ng_bpf 进行每接口流量过滤,
使用 ng_car 实现非常快速的流量整形/速率限制。
已更新 ng_car 节点,支持整形和非常快速的 Cisco 样式速率限制。ng_ppp 节点已完全重构,以符合协议栈模型。
LAC/PAC 测试。
流量过滤/整形/速率限制测试。
支持多绑定的 PPTP 修改。
动态链路/捆绑创建。
正在为 FreeBSD 7.0-CURRENT 准备 GCC 4.1 的版本。工作始于 2006 年底,但由于开发人员时间不足,在某些技术点(例如正确集成和引导共享 libgcc_s 到构建中)的进展较慢。目前悬而未决的问题是,使用 -O2
编译时会导致某些二进制文件(例如某些 Port 的构建)在运行时失败;目前尚不清楚这些是由于应用程序错误还是 GCC 编译错误。预计当前的快照版本已经准备好集成,可能在一两周内完成。
malloc(3) 最近经过增强,以减少内存开销、碎片化和映射内存保留。作为额外的好处,它的性能也有所提高。请参考上述链接,了解我向 -current 邮件列表发送的邮件,其中详细描述了这些增强。
目前 ports 数量接近 17,000,PR 数量稳定在 700 左右。“新 Port”的 PR 积压处于多年最低水平。我们感谢所有 Ports 提交者的辛勤工作。
自从 6.2 发布周期结束后,portmgr 再次能够进行实验性的 Port 运行。经过六次运行/提交周期后,portmgr 的 PR 数量达到了相当长一段时间以来的最低点。有关详情,请参见 CHANGES 和 UPDATING 文件。感谢包括 Pav 在内的工作人员,保持构建集群的繁忙。
我们收到了新的硬件,这大大加快了我们的软件包构建能力:现在,AMD64 软件包构建使用 4 台 8 核机器(以及一台孤单的 UP 系统),这意味着完整的 AMD64 构建速度比以前快了约 5 倍。此外,i386 集群新增了 8 核,性能大约翻倍。两台 sparc64 构建机器最近已重新上线,因此包构建已经在经过长时间离线后重新启动。
linimon 继续致力于改善 portsmon,能对被忽视/失败 Port 的依赖 Port 进行图形化显示。这项工作将在 BSDCan 上展示。此外,已添加显示 ftp*.FreeBSD.org 上 Port 上传状态的页面,以及设置了 NO_PACKAGE 的 Port。同时,每个构建环境的单独 Port 概述页面现在显示了上传到 ftp 服务器的最新软件包。
一些缺失的维护者已经被一些新志愿者替代,这些新志愿者通过提交 PR 来更新/修复他们的 Port。欢迎加入!这有助于分担工作量。
自上次报告以来,已从 Ports 中删除对 FreeBSD 4.X 的支持。仍然使用 RELENG_4 的人应当使用 RELEASE_4_EOL 标签下的 Ports 基础设施,因为之后的提交已移除该支持。4.X 为我们服务了很长时间,但支持 4 个主要分支的负担最终成为了志愿者的挑战。即使使用 RELEASE_4_EOL 标签,不再推荐使用 4.X;我们建议根据需要选择 6.2-RELEASE 或 RELENG_6。
自上次报告以来,ports tinderbox 代码、portmaster 更新工具和 portupgrade 都有了新的版本。Michel Talon 推出了一个新的工具 pkgupgrade,看起来很有趣。
KDE 更新至 3.5.6。
GNOME 更新至 2.18。
XFree86 版本 3 被移除,因为已经过时多年。
我们自上次报告以来新增了 3 位提交者。
大部分剩余的 Port PR 是“已分配给提交者的现有 Port/PR”。尽管维护者超时策略有助于减少积压,但我们需要做更多工作来使 Port 达到理想的状态。
尽管我们增加了许多维护者,但仍有许多 Port 没有维护者。AMD64 上可构建的软件包数量稍有滞后;sparc64 需要更多工作。
X.Org 7.2 现在已经接近最终阶段,准备进入 ports。由于唯一负责集成的开发者 flz@ 可用时间减少,年初的几个月工作进展缓慢。最近,lesi@ 被重新招募回来参与该任务,ports 的准备工作也已完成(即包构建过程中没有出现明显的回归问题)。剩下的任务是审查差异,确保在大规模合并时没有不小心的更改或回归,同时完成一个升级脚本,以管理从 X.Org 6.9 向 X.Org 7.2 的迁移(X.Org 7.2 与前版本的差异非常大,因此无法通过现有工具如 portupgrade 进行“自动”升级)。我们希望在一到两周内完成这些工作,届时 ports 将冻结以进行集成,并且我们可能会进入一个“迷你冻结”阶段,持续一到两周,重点解决这一重大变化可能带来的未检测到的问题。
BSDCan:低价高效,适合所有人。
每个人都会参加。现在就安排好你的计划吧。
截至目前,已有 10 份报告被接受,更多的报告正在评审中。
对于 FreeBSD 开发者,会议期间将举行邀请制的开发者峰会,具体时间尚未确定。
我们仍在寻找更多的赞助商。
已经在 EFnet 上创建了公开的 IRC 频道 #eurobsdcon ,供讨论和提问关于会议的事项。
联系方式:Kris Kennaway <> 联系方式:Jeff Roberson <> 联系方式:Attilio Rao <> 联系方式:Robert Watson <>
过去几个月,FreeBSD 在大规模 SMP 硬件上的可扩展性得到了明显提高。部分原因是项目中新增了 8 核硬件,使得我们能够轻松地分析可扩展性瓶颈并对提议的更改进行基准测试。针对 MySQL 和 PostgreSQL 等应用工作负载,已经取得了显著进展,结果是 FreeBSD 7.0 在至少 8 核 CPU 系统上具有出色的可扩展性,并有望进一步改进。其他应用工作负载的进展受限于需要设置适当的测试用例;如果你有兴趣帮助,请联系我。作为这一总体努力的一部分,去除内核中最后剩余的 Giant 锁代码的工作正在稳步推进。剩余 Giant 锁代码的完整列表可以在这里找到:。这些子任务中大多数已有人负责,但也有一些没有负责人。没有负责人负责的主要剩余 Giant 锁子系统是 TTY 子系统。与此同时,在其他子系统中分析竞争和瓶颈,已经导致了一些实验性的更改,这些更改正在开发中。Jeff Roberson 和 Attilio Rao 正在努力拆分全局调度器自旋锁,取而代之的是一组每 CPU 一个的调度锁,预计这将提高多 CPU 系统上的性能。Robert Watson 的实验性更改则支持多个 netisr 线程,这对于提高大规模 SMP 系统上回环 IP 性能非常有前景,否则单个 netisr 线程很容易被饱和。许多其他更改正在进行分析和评估,以改进不同工作负载下的 SMP 性能。这些更改大多已收集在 Perforce 分支 //depot/user/kris/contention/
中。
联系方式:Hans Petter Sirevaag Selasky <>
关于新 USB API 的想法和评论,欢迎发送邮件至 。
联系方式:安全官员 <> 联系方式:安全团队 <>
联系方式:Mark Linimon <>
Remko 还在与一些新的志愿者合作方面发挥了重要作用,他们对如何贡献感兴趣。我们当前的计划是让他们浏览 PR 待办事项,并首先向提交者征求反馈,其次,确定需要提交者处理的 PR。我们还有一些提交者自愿审查这些 PR。如果你有兴趣帮助,请订阅 。感谢我们当前的帮助者,包括 Harrison Grundy。
联系方式:发布工程团队 <>
联系方式:Deb Goodkin <>
欲了解更多关于我们正在做的事情的信息,请访问我们的网站:。
联系方式:Luigi Rizzo <>
联系方式:Alexander Leidinger <> 联系方式:Roman Divacky <> 联系方式:Emulation 邮件列表 <>
联系方式:George Neville-Neil <> 联系方式:Bjoern Zeeb <>
联系方式:Andrew Thompson <>
联系方式:Benjamin Close <>
联系方式:Alexander Motin <>
联系方式:Alexander Kabaev <> 联系方式:Kris Kennaway <>
联系方式:Jason Evans <>
联系方式:Mark Linimon <>
联系方式:Florent Thoumie <> 联系方式:Dejan Lesjak <> 联系方式:Kris Kennaway <>
联系方式:Dan Langille <>
已经发布和。我们再次邀请到了一些非常强大的 。
联系方式:EuroBSDCon 2007 组织委员会 <>
第六届 EuroBSDCon 将于 2007 年 9 月 14 日(星期五)和 15 日(星期六)在丹麦哥本哈根的 举行。
预计为期两天的会议费用为 200 欧元,不包括 一日游和社交活动。前往乐高乐园的全天旅行预计费用为 130 欧元,涵盖交通、途中一些食物和入园费用。我们与一家新装修的 达成了安排,提供每晚 23 欧元的床位和 10 欧元的早餐。旅舍内将提供有赞助的互联网连接。当然,住在旅舍是完全自愿的,周围还有多家酒店。会议的预定和具体价格预计不晚于 5 月 1 日准备好。
更多详情将会在 上发布。