FreeBSD 2006 年 6-10 月状态报告
最后更新于
最后更新于
原文地址:
本报告涉及了 2006 年 6 月至 10 月期间与 FreeBSD 相关的项目。这包括今年谷歌编程之夏的结束,共有 13 名学生成功完成了项目。一些去年和今年的编程之夏参与者也已加入提交者行列,继续致力于他们的项目,并大范围改善 FreeBSD。
今年在意大利米兰举行的 已经发布了令人兴奋的议程。许多开发者将在会议之前的开发者峰会上讨论这些当前和未来的项目。明年的会议日程新增了一项内容——除了现在已经非常成熟的 (渥太华)外, 将于 3 月初在东京举行。
随着 FreeBSD 6.2 发布的临近,许多错误已被修复,并且新特性已被合并。另一方面,下面的许多项目已经开始专注于 FreeBSD 7.0,并承诺带来许多激动人心的新闻和特性。
感谢所有报告人员的出色工作!希望你喜欢阅读。
链接:
联系人:Paolo Pisati <>
联系人:John Baldwin <>
该项目旨在改进 FreeBSD 中的中断处理系统:在保持与以前模型(FAST 和 ITHREAD)向后兼容的同时,新增了一种名为“中断过滤”的方法。在中断过滤中,中断处理程序被分为两部分:过滤器(检查实际中断是否属于该设备)和 ithread(如果需要执行阻塞操作,则调度该线程)。中断过滤的主要好处包括:
过滤器反馈(系统最终知道是否有处理程序已处理中断,并可以相应地做出反应)。
对共享中断线的延迟/开销更低。
先前对中断过滤的实验表明,与纯 ithread 模型相比,性能有所提升。
此外,在开发中断过滤时,一些与机器相关的代码被转换为与机器无关的代码,PPC 被修复以支持每行多个 FAST 处理程序,并添加了中断突发风暴检测逻辑。虽然框架已完成,但仍有一些机器相关的部分需要编写(必须编写/审查对 ppc、sparc64、arm 和 itanium 的支持),并且该模型与以前的模型的性能分析仍在进行中。
链接:
对我来说,谷歌编程之夏是一次全新的、非常激动人心的经历。我积极参与了开源软件的开发,并为社区力量。面对项目中的一些挑战,使我深入了解了 FreeBSD 的背后。在这个过程中,我对整个项目有了更好的理解。直接与许多开发者合作,也为谷歌编程之夏增添了非常特别的氛围。
我真的很享受这段时间,并且在截止日期后会继续在这个项目上工作。对我来说,这是一个很好的机会,让我不仅仅在家做一些脚本和小修小补,而是真正参与到活跃的开发中。虽然获得报酬只是其中的一小部分,但那种整体的感觉非常棒。
感谢 FreeBSD 项目和谷歌的支持,给我带来了如此美好的时光!
链接:
Gvirstor 是 GEOM 类,提供虚拟(“过度提交”)存储设备,容量大于物理存储,且在需要时可以在线添加物理存储。当前状态是已完成,并等待提交到 HEAD,预计会在 6.2 发布后的一段时间进行。
该项目需要测试!如果你有设备和时间,请尝试一下,以便在进入 -CURRENT 之前修复可能的错误。
链接:
该项目的重点是回顾过去的漏洞,创建漏洞测试工具,并发现 FreeBSD IPv6 栈中的新漏洞,该栈源自 KAME 项目的代码。在整个夏季,Clement 使用了两个库:流行的 libnet 和他的导师的包构建集(PCS),并创建了工具来发现 IPv6 代码中的安全问题。发现了多个问题,提交了错误报告并创建了补丁。目前,Clement 和 George 正在编辑一篇 50 页的论文,介绍该项目,并将提交到会议进行发布。
项目中的所有代码,包括工具,已经在线,并在论文中进行了说明。
从各方面来看,这是一个成功的项目。学生和导师都对一套之前由外部维护的代码获得了宝贵的洞察。除了新工具的开发外,FreeBSD 项目还获得了一位新开发者,帮助处理该代码。
链接:
我们现在支持限制 jail 中的 CPU 和内存使用。这可以通过防止单个 jail 独占系统的内存和 CPU 时间,从而更加公平地共享系统资源,尤其是当其他用户和 jail 有进程需要运行时。
当前代码以补丁的形式提供,适用于 RELENG_6,Chris 正在将其应用到 -CURRENT。更多细节可以在 wiki 上的 JailResourceLimits 页面找到。
将补丁移植到 -CURRENT。
链接:
该项目包含五个部分:
Nsswitch 模块与 libc 分离:该任务的目的是将不同的 nsswitch 数据源(如 files
、dns
、nis
)的源代码从 libc 中移出,转移到单独的共享库中。此任务已成功完成,补丁可用。
nsswitch 回归测试:设计了一套回归测试,用于测试所有与 nsswitch 相关的函数的正确性,并验证在系统升级后其行为的一致性。该任务已成功完成,补丁可用。
重写 nss_ldap:虽然这一任务在原始提案中没有明确提到,但在编程之夏期间,我们发现直接导入 PADL 的 nss_ldap
并不如从头重写它来得容易(许可问题是其中的主要原因)。最终的模块行为类似于 PADL 的模块,但具有更灵活的架构。虽然基本完成,但仍需要实现 PADL 的 nss_ldap 中的一些有用功能。尽管缺少某些功能,但该任务可视为已成功完成。缺失的功能将在尽快实现,预计在九月完成。
将 nss_ldap 导入基本系统:该任务的目的是准备一个补丁,使用户能够在基本系统中使用 nss_ldap
。该任务已成功完成(补丁可用),但为了使 nss_ldap
正常工作,必须将 OpenLDAP 导入到基本系统,这引发了邮件列表中的长时间讨论。不过,最终的讨论结果是大多数人对 nss_ldap
和 OpenLDAP 的导入持积极态度。
缓存性能优化:缓存守护进程的性能需要尽可能高,以便缓存的速度接近(在速度方面) files
nsswitch 数据源。对缓存性能进行了分析,并引入了 nsswitch 数据库预缓存作为优化。这项任务已完成(补丁可用),但仍有改进空间。还需要进行更精确和更广泛的性能分析,并引入更多的优化。这将在不久的将来完成。
尽管这些代码尚未提交到官方的 FreeBSD 树中,但我从去年的经验来看,我认为这种情况是正常的。我希望这些代码能在接下来的几个月里进行审核并提交。
链接:
Dongmei Liu 在整个夏季致力于移植 SEREF 策略到 SEBSD 所需的基本工作。这项工作已经提交,可以在 Perforce 分支 soc2006/dongmei_sebsd
中查看。该工作源自 SEBSD 分支: //depot/projects/trustedbsd/sebsd
。此外,setools-2.3 已从 Linux 移植并可以在 contrib/sebsd/setools 目录中找到。希望这项工作最终能合并到 SEBSD 的主开发分支中。
链接:
支持 dom0 是最紧急的任务。
链接:
FreeBSD 的 BSNMP 守护进程实现了一个桥接监控模块。除了支持 RFC 4188 的单个桥接以及扩展内核以访问所有信息外,还设计了一个私有 MIB 以便能够监控 FreeBSD 支持的多个桥接。内核部分已提交到 -CURRENT(感谢 thompsa@),对于 -STABLE,补丁已提供(见 Wiki),代码已进行审查。
2005 年的编程之夏项目关于 SNMP 客户端工具的工作现在也可以通过 port(net-mgmt/bsnmptools
)获得,感谢 Andrew Pantyukhin 为该 port 提供支持。
欢迎进行更多的测试。
if_vlan(4) 监控模块。
jail(8) 监控模块。
链接:
我们又度过了一个成功的夏天,参加了谷歌编程之夏。根据所有的反馈,FreeBSD 在该项目中的参与可以说是圆满成功。我们收到了超过 150 个学生项目申请,其中 13 个被选中获得赞助。所有成功的学生都获得了全额 4500 美元的赞助。
这些学生项目包括安全研究、改进安装工具、新实用程序等。许多学生在项目正式结束后仍继续在 FreeBSD 项目上工作。至少有 2 位我们的 FreeBSD 导师将在本月与谷歌组织者在山景城会面,讨论该项目的 Mentor Summit。
链接:
Roman Divacky 参与了谷歌编程之夏 2006,并实现了与 2.6.16 Linux 内核兼容的系统调用的大部分工作。这些工作已提交到 -CURRENT(默认的兼容性仍然是 2.4.2 的 Linux 内核),我们正在尽可能修复剩余的错误。
Intron
提交了 Linux aio 系统调用的实现。他的工作已提交到 Perforce 仓库。
我们还开始整理已知错误、未解决的问题和有用的内容(如回归测试及其状态),并在 FreeBSD Wiki 中提供了相关页面(见链接部分)。该页面还包含一个最新的补丁链接,其中包含我们在 Perforce 仓库中的内容,感兴趣的人可以帮助进行测试。感谢 Marcin Cieslak 的帮助,我们已经修复了一些错误(其中一些修复已 MFC 到 -STABLE)。
感谢 Linux 测试项目(LTP)提供的优秀回归测试,我们已经列出了需要关注的小问题(和一些不太小的问题)。这个列表可以帮助我们快速开始内核黑客工作。因此,如果你对 C 编程有一点了解,并且愿意在改进 FreeBSD 方面帮助我们,请随时查看该列表并尝试修复一个或两个问题。有时问题的修复非常简单,例如 if (error condition) return Esomething;
(但你应该与仿真邮件列表协调,以确保没有人重复别人已经做过的工作)。即使你不会编程,你也可以帮忙。查看 Wiki 页面并告诉我们应该提到哪些内容,或者下载补丁并进行测试。
链接:
CScout 是一款重构编辑器和源代码浏览器,适用于 C 语言代码的 Ports。该项目的目的是使 FreeBSD 开发者能够轻松使用 CScout,并通过基于 CScout 的查询和重构来提升 FreeBSD 源代码的质量。
CScout 最初于 2003 年应用于 FreeBSD 内核。当时的应用涉及大量调整构建系统。2006 年 10 月发布的版本使得在三种一级架构上运行 CScout 成为相对简单的过程。当前版本还能够绘制一些调用图,这可能有助于开发人员更好地理解外部代码。
使用 CScout 定位问题代码区域(例如未使用或过度暴露的对象)。
使用 CScout 全局重命名标识符,保持一致性。
将 CScout 应用于用户空间代码。
识别 CScout 扩展,以帮助我们提升代码质量。
安排在当前版本的源代码上持续提供一个 CScout 内核会话。
链接:
由于我搬到乡村的重大变动,本月的进展较为有限。
Sun 的 OpenSolaris 开发者已经完成并发布了 DTrace 测试套件,作为 OpenSolaris 分发的一部分。
jkoshy@ 在 libbsdelf 上的工作接近功能完成,将使得 FreeBSD 上的 DTrace 更加便捷,考虑到我们需要支持比 Sun 更多的架构。
FreeBSD 项目已提供一台双处理器的 AMD64 机器用于移植 DTrace。
我目前正在处理 P4 中的 DTrace 项目与 -current 之间的差异,准备将文件提交到 -current,如果它们已经准备好。
将 HTML 页面移入项目 CVS 树中。
设置网站从项目 CVS 提供服务,以便其他人也可以更新。
完成 ARM 移植。
开展 MIPS 移植工作。
更新文档,包括嵌入式工程师的常见任务。
链接:
FreeSBIE 是基于 FreeBSD 的 LiveCD。
8 月 19 日,FreeSBIE 团队成员 Matteo Riondato 发布了一个非正式的 ISO,代号 FreeSBIE GMV,基于 FreeBSD -CURRENT(请阅读公告以下载)。这是四个 ISO 系列中的第一个,最终将发布 FreeSBIE 2.0。Matteo 目前正在制作另一个 ISO,代号 FreeSBIE LVC,计划在 10 月 12 日发布。
FreeSBIE 2.0 将基于 FreeBSD 6.2-RELEASE,并有望在 2006 年的 EuroBSDCon 米兰会议上发布。它将同时支持 i386 和 AMD64 平台。
测试已发布的 ISO,为发布做准备。
提议将哪些软件包含在 ISO 中。
提交一个简单清晰但完整的 fluxbox 配置。
链接:
GJournal 看起来已经完成。我修复了最后一个严重的错误,现在它在我们的测试中稳定可靠。我计划尽快提交它。
这项工作得到了 home.pl 的赞助。
这个 iSCSI 发起程序内核模块及其配套控制程序仍在开发中,但主要部分已经工作正常。
网络断开恢复。
Sysctl 接口与仪表化。
重写 iscontrol 的用户空间部分。
链接:
我的工作进展较慢。我相信 ZVOL 已经完全功能齐全(我最近修复了 zvol 上的快照和克隆),这意味着你可以在 RAID-Z 卷上放置 UFS,快照该卷,必要时进行克隆等,非常酷。最难的部分是 ZPL 层,我仍在处理它。大多数文件系统方法已经可用,但可能需要详细审查和多次修复。最近我大部分时间都在实现 mmap(2),它在简单的测试中基本上是有效的,但在 fsx 程序下失败。另一方面,`fsx -RW`` 非常稳定可靠。其他不使用 mmap(2) 的测试程序也运行得相当好。仍有很多工作要做,主要是在 ZPL 领域,许多清理工作等。有些功能(如 ACL)我甚至还没有尝试接触。
链接:
我在 5 月至 8 月期间致力于改进 Portsnap、FreeBSD Update,并花更多时间在我持续的安全官员职责上。FreeBSD Update 现在已经是 FreeBSD 基本系统的一部分,并且得到了 FreeBSD 安全团队的完全支持;目前只为 i386 架构构建更新,但很快会提供 AMD64 更新。
为了减少运行过时(且不再支持的)FreeBSD 版本的用户数量,我编写了一个自动二进制升级脚本,用于从 FreeBSD 6.0 升级到 FreeBSD 6.1;我将很快发布一个新的脚本,用于升级到 FreeBSD 6.2-(RC*|RELEASE)(可能在本报告发布之前)。
Portsnap 的进一步改进仍在进行中。
链接:
TrustedBSD 审计实现提供了细粒度的安全事件日志记录,覆盖 FreeBSD 操作系统。过去一个季度的大新闻是 TrustedBSD 审计实现已经合并到 RELENG_6 分支,并出现在 6.2-BETA2 中。过去几个月,以下方面也进行了工作:
OpenBSM 1.0 alpha 8 到 alpha 12 已发布并合并到 FreeBSD CVS 中。更改包括大量的错误修复、文档改进和功能增强。这些增强包括基于正则表达式的审计过滤,auditd 管理内核审计策略(如最大日志文件大小),增强了多种令牌(包括 execve 参数支持)的打印支持。
对 FreeBSD 手册中的审计章节进行了重要改进。
完整的 execve 事件审计支持,包括可选的命令行参数和环境变量审计支持,以及对广泛的其他内核事件的审计支持。
为审计管道提供了 Kqueue 支持。
在磁盘空间不足的条件下进行了稳健性改进。
支持在额外平台(如 ppc 和 ia64)上捕获系统调用。
改进了对非常大审计记录大小的支持(如需广泛支持 execve)。
id(1) 现在支持参数 -A
,用于查询进程的审计状态。
audit_warn(5) 事件用于日志轮换,可以用于归档、简化和其他管理活动。
在 6.2-BETA 周期中进行的大量测试将非常受欢迎。审计支持将在 FreeBSD 6.2-RELEASE 中被视为实验性功能,但我们希望它能在 6.3-RELEASE 中成为生产特性。
继续扩展系统调用参数的审计。
继续扩展管理工具的审计。
更多测试!
继续探索审计日志的管理模型改进等。
链接:
在过去的三个月里,我完成了对 FreeBSD-7-CURRENT 中几乎所有 USB 设备驱动程序的重构。只剩下两个 USB 驱动程序,分别是 ubser(4) 和 slhci。虽然仍有一些使用 Giant 的驱动程序,但大多数已经不再使用 Giant。目前,我正在寻找测试人员来测试各种 USB 设备驱动程序。有些驱动程序已经过测试,并确认能正常工作,而其他一些则有问题需要修复。如果你想进行测试,请检查 USB 的 Perforce 树或下载我主页上提供的 USB 驱动程序的 SVN 版本。目前 tarball 文件稍微有些过时。
链接:
自上次状态报告以来,已发布了六个安全公告,涉及 FreeBSD 基本系统中的问题;其中五个问题位于“第三方代码”中,另一个问题位于 FreeBSD 内部维护的代码中。漏洞和暴露标记语言(VuXML)文档已由安全团队和 Ports 提交者继续更新,记录了 FreeBSD Ports 中新发现的漏洞;自上次状态报告以来,新增了 57 个条目,总数达到了 814 个。
以下 FreeBSD 版本由 FreeBSD 安全团队支持:FreeBSD 4.11、FreeBSD 5.3、FreeBSD 5.4、FreeBSD 5.5、FreeBSD 6.0 和 FreeBSD 6.1。支持的版本的生命周期结束日期已列在网站上;特别需要注意的是,FreeBSD 5.3 和 FreeBSD 5.4 将在 2006 年 10 月底停止支持,而 FreeBSD 6.0 将在 2006 年 11 月底停止支持(或可能稍晚一些,以便为升级到即将发布的 FreeBSD 6.2 提供时间)。
链接:
Ports 的 PR 数量激增(特别是由于大量新 Port 的提交),但经过一些努力,我们已经将数量降到大约 900。我们正迅速接近 16,000 个 Port。
由于新增 Port 的加速,portmgr 目前非常担心我们已超出构建基础设施和志愿者的能力,无法跟上构建错误和 Port 更新。因此,我们增加了一条指南(而不是规则),要求 Port 不仅仅是理论上的有用,而应具有实际应用(例如,我们不能支持所有 CPAN + 所有 Sourceforge + 其他所有内容)。基本上,遵循常识作为指导;当然,没有人希望看到任何类型的“网关”程序来批准新提交的 Port。
已对基础设施进行了七组更改,主要是重构和修复错误。
作为一个编程之夏项目的一部分,我们还结合了 gabor@ 的一些更改,以支持更好的 DESTDIR 支持。然而,由于一些未预料到的副作用,这一领域仍需要更多的工作。gabor@ 正在继续进行相关更改。
netchild@ 和 bsam@ 已经做了大量工作,使 Linux 兼容层 Port 更加合理,包括引入回归测试套件。
长期期待的 X.Org 7 导入由于开发者时间不足而停滞,主要是在处理文档和升级说明方面。希望能在 6.3 开发周期的早期完成此项工作。更多信息请见 wiki。
在这项工作的一部分中,决定不再使用 X11BASE,而是将所有内容放入 LOCALBASE
;/usr/X11R6
现在只是一个遗留物。一个过渡过程的计划正在进行中;需要进行大量的测试,但最终 Ports 将变得更加干净。GNOME 团队已经完成了将所有 Port 迁移的工作,计划在 6.2 版本发布后将其并入。
tmclaugh@ 正在寻找接手 C#
Port 的人。他已经维护这些 Port 一年多了,想要更多时间来处理其他项目。
一些工作已开始清除 Port 中的 FreeBSD 2.X 代码残余。进一步的工作仍需清除 3.X 代码残余。
linimon@ 已经再次审查并重置了不活跃的维护者。另一份列表正在准备中。
linimon@ 还在进行一项工作,为 portsmon 增加了分析成功的包(不仅仅是失败的包)的能力,从而可以执行例如“显示在 i386 上构建但在 amd64 上不构建的包”以及“显示为什么依赖包 foo 在 bar 上未构建”等查询。该功能目前处于 alpha 测试阶段。
自上次报告以来,我们已增加了 4 位新的提交者。
我们仍然需要帮助将 PR 数量降回到现代的 500 个。
我们有近 4400 个无人维护的 Port(例如,请参见 portsmon 上的列表)。虽然最近新维护者的涌现降低了这一比例至不到 28%,但我们仍然需要更多的帮助。
对 Ports 执行 gcc4.1 测试时,出现了大约 1000 个新的构建错误。Kris@ 已发布了一些结果,以便人们现在开始处理这些问题。特别是,似乎某些旧版本的 GCC 无法使用 GCC 4.1 构建,因此依赖这些旧版本的 Port 也需要进行修复。尽管 GCC 4.1 的导入到 -CURRENT 不会很快发生,但现在就开始规划是时候了。
AMD64 和 sparc64 上的包的状态明显落后于 i386。在许多情况下,由于使用了 NOT_FOR_ARCH,而不是更准确地基于 ARCH 设置 BROKEN
,因此并未尝试构建包。(pointyhat 可以强制构建标记为 BROKEN
的包,但不能构建标记为 NOT_FOR_ARCH
的包)。NOT_FOR_ARCH
应该只表示“在此架构上永远无法工作”。虽然我们有一些志愿者表示对 sparc64(和 ia64)感兴趣,但我们需要更多使用 amd64(特别是作为桌面)的人员来帮助我们让更多的包能够正常工作。
链接:
FreeBSD 发布工程团队目前正在进行 FreeBSD 6.2-RELEASE 的工作,计划于 2006 年 11 月初发布。此版本的一些显著特点包括作为实验性功能首次亮相的安全事件审计、Xbox 支持、FreeBSD Update 二进制更新工具,以及当然还有针对现有程序的许多修复和更新。所有 Tier-1 架构的预发布镜像现在可供测试;非常感谢对这些构建的反馈。有关发布工程活动的更多信息,请查看上面的链接。
FreeBSD 基金会继续通过各种活动支持 FreeBSD 项目和社区。这些活动包括制定资金开发战略,积极为 FreeBSD 社区寻求资金,协调新的 IBM Bladeserver 项目,以及通过管理商标使用来保护 FreeBSD 的形象和完整性。我们很高兴成为 EuroBSDCon 的赞助商,并将通过我们的旅行赞助计划赞助一些开发者参加会议。最后,我们已经为一个重大项目筹集了资金,该项目将在本月稍后宣布。
关于实现快速生成树协议(RSTP)的工作几乎完成,RSTP 替代了生成树协议(STP)。与 STP 需要 30-60 秒的链路故障恢复时间相比,RSTP 的链路故障恢复时间大约为 1 秒,这对于现代网络来说至关重要。代码将在不久后发布以供测试和反馈。
链接:
代码的第一个工作版本。尚未通过所有 TAHI 测试,但能够正确传输数据包并且不会引发系统崩溃。
需要更多的补丁测试。
链接:
TSO(TCP 分段卸载)的添加暴露了 sendfile(2) 和 sosend_*()
内核实现的一些不足之处。
当前的 sendfile(2) 代码只是循环遍历文件,将每个 4K 页面转化为 mbuf 并发送出去。这导致 TSO 只能生成 2 个数据包,而不是最大可以达到的 44 个(64K)。已经重写 kern_sendfile()
,分为两个循环,内部循环尽可能多地将页面转化为 mbuf——最多到可用的发送套接字缓冲区空间。外部循环将整个 mbuf 链放入发送套接字缓冲区,调用 tcp_output()
,然后等待直到 50% 的套接字缓冲区空间再次释放,再重复此过程。这样,tcp_output()
可以处理完整的数据量,并可以发出最多 64K 的发送请求,以便 TSO 在网络适配器中分割,而不消耗任何 CPU 周期。因此,尤其在虚拟内存和 I/O 系统的预读取机制下,效率得到了极大的提高。
根据基准测试,新的 sendfile 比旧的 sendfile 快 181%(非 TSO)和 570%(TSO)。
当前的 sosend_*()
代码使用函数 sosend_copyin()
,该函数循环遍历提供的 struct uio
,并交错地分配 mbuf 和调用 uiomove()
。m_getm()
已被重写为更简单,并且分配 PAGE_SIZE
大小的 jumbo mbuf 集群(大多数架构下为 4K)。m_uiotombuf() 已被重写,使用新的 m_getm()
一次性获取所有 mbuf 空间。然后它循环遍历并使用 uiomove()
将数据复制到 mbuf 中。sosend_dgram()
和 sosend_generic()
已更改为使用 m_uiotombuf()
,而不是 sosend_copyin()
。
根据基准测试,新的 sosend 比旧的 sosend 快 290%(非 TSO)和 280%(TSO)。
新编写了一个特定的 soreceive_stream()
函数,用于流协议(主要是 TCP),该函数每次 socket 读取只锁定一个套接字缓冲区,而不是每次将数据 mbuf 复制到用户空间时锁定一次。当使用 WITNESS(启用完整的锁跟踪和验证)进行 netperf 测试时,接收性能从约 360Mbit/s 提升至约 520Mbit/s。如果没有 WITNESS,无法在没有负载的机器上测量出统计学上显著的改进。原因有两个:1)每个数据包我们都进行一次唤醒,readv()
几乎和数据包数量一样多,因此一般的开销占主导地位;2)数据包输入路径的开销也相当高。在处理大量高速接收的重载机器上,性能提升应该是可以测量的。
这些补丁计划于 2006 年 10 月底或 11 月初提交到 FreeBSD-current。
这项工作由 2005 年 TCP/IP 优化筹款活动赞助。
目前有可供测试的补丁。计划于 10 月份进行 HEAD 的集成。
链接:
TSO - TCP 分段卸载支持已于 2006 年 9 月提交到 FreeBSD-current 网络栈中。通过 TSO,TCP 可以将发送套接字缓冲区中的数据批量发送到网卡,然后由网卡将其分割成符合 MTU 的数据包。在大量高速发送时,性能提高了 25%(常规写入)到 108%(sendfile)。Intel 的 Jack Vogel 和 Prafulla Deuskar 提交了针对 em(4) 网卡的 TSO 硬件支持驱动程序更改。
这些更改计划在 FreeBSD 6.2-RELEASE 发布后不久回溯到 FreeBSD 6-STABLE,并将出现在明年初的 FreeBSD 6.3 中。
这项工作由 2005 年 TCP/IP 优化筹款活动赞助。
我想自从上次提交状态报告后,还是应该提交一个新的报告。
自上次状态报告以来,我完成了几个剩余命令的工作,如 attach
、detach
,以及最终的 concat
命令,使得能够使用一个简单命令创建连接卷。接下来将处理 mirror
和 stripe
命令。
我目前最重要的工作可能是驱动组的实现。我已在邮件列表上发布了一些关于这一点的信息,但基本上,它是将具有相同配置的驱动器分组的一种方式。这样,你可以对组而不是驱动器进行操作,组抽象将处理如何在驱动器上创建底层子磁盘。未来,你将能够将组移动到不同的机器等。
请注意,代码中可能会存在错误,因此不要在生产环境中使用!
感谢 Greg Lehey 提供帮助将其合并到 CVS,所有反馈都很好。
剩余组件的处理:mirror、stripe 和一些信息命令。
链接:
MMC/SD 栈在本季度得到了显著提升。Warner Losh 和 Bernd Walter 为 FreeBSD 编写了一个通用的 MMC/SD 闪存卡栈,并为他们各自的项目实现了一个 AT91RM9200 嵌入式 ARM 控制器的主机控制器。
该栈目前处于实验阶段。它被用作这些嵌入式项目的根文件系统。目前还没有对卡的热插拔和拔除提供支持(因为板卡没有连接必要的引脚,而且卡的消失非常糟糕)。目前仍有很多粗糙的地方。
这是一个新编写的栈,使用 SD 1.0(以及最近的 2.0)简化规范编写,同时参考了 SanDisk 的 MMC 应用说明。Linux 栈看起来不错,尽管不是完全符合标准(有一些正在进行的工作应该会修复这个问题),而且它被 GPL 污染了。OpenBSD 的栈也很有意思,但 Warner 通过从 NetBSD 移植 NEWCARD 的经验表明,重新编写一个新栈可能会更快,至少对于总线和驱动程序层。由于 MMC 相对简单,可能会将 sdhci 驱动移植过来。
请参见待办事项列表。
编写 sdhci 驱动,并将其集成到当前栈中。
添加对卡热插拔的支持。
为 MMC 卡添加支持(SD 卡是首要目标)。
扩展 SD 支持,包括 SDIO 卡和新的 SDHC 标准卡。
通过 sysctl 导出每个检测到的卡的统计信息,用作调试和使用监控工具。
添加对同时读取/写入多个块的支持,以提高性能。
实现其他主机控制器。
添加对超时的适当支持。
链接:
自上次状态报告以来,我们为 envy24ht 芯片添加了基础支持,已将 emu10kx 驱动程序导入到基本系统中,并且为支持高定义音频(HDA)兼容芯片添加了支持。
此外,Ryan Beasley 作为 2006 年谷歌编程之夏计划的一部分所做的工作已经提交。这为 Open Sound System(OSS)v4 API 添加了兼容性,尽可能地扩展了功能。这使得可以编写更复杂的程序。例如,现在可以同步多个声音通道的启动。驱动程序还可以支持超过 AC97 混音设备,但目前还没有驱动程序扩展以支持这一点。更多信息可以在 Wiki 和官方 OSS 文档中找到。
关于声音系统的 Wiki 页面已开始说明声音系统的当前状态,并提供有关我们未来发展的信息。但为了实现这一目标,还需要做更多工作。迄今为止,我们收集了一些关于声音系统最新工作的状态。如果你查看后觉得某些重要内容缺失,请告诉我们。虽然准备充分的内容非常欢迎,但我们也很高兴听到你对 Wiki 页面的建议。
查看建议列表中的与声音相关的条目。
sndctl(1):用于用户控制声音系统非混音部分(如 spdif 切换、虚拟 3D 效果)工具(而非使用当前的 sysctl 方法);pcmplay(1)、pcmrec(1)、pcmutil(1)。
可插拔的 FEEDER 基础设施。用于调试各种馈送组件,或作为用户空间库和测试套件。
扩展 Wiki 页面。
链接:
在上个季度,我们主要专注于提高翻译的整体质量,而不仅仅是增加翻译的数量,并且我们努力确保这些翻译内容与其英文版本保持同步。此外,我们已将翻译的网站合并到中央仓库中。
在下个季度,我们将专注于开发文档,以帮助吸引更多的开发人员。
翻译更多与开发相关的文档。
审查当前已翻译的文档。
链接:
自上次状态报告以来,进展很大。我调查了许多字符集问题,发现 HTML tidy 在使用 iso-8859-2 时会破坏一些实体,因此必须禁用匈牙利语页面的 HTML tidy。
翻译 4 页。
审查、修正拼写错误,并在必要时改进措辞。
链接:
Libelf 是 BSD 许可的库,用于 ELF 解析与操作,实现了 SysV/SVR4 (g)ELF[3] API。
当前状态:库的实现接近完成,正在为 API 开发基于 TET 的测试套件。
需要代码和测试套件的审查者。如果你有任何希望在 -lelf 中看到的 SysV/SVR4 ELF(3) API 扩展,请给 Joseph 发送邮件。
链接:
大多数 dhclient 变更已经从 HEAD 合并到 6-STABLE,为 6.2-RELEASE 做准备。这些更改的亮点是修复了在数据包未按 4 字节对齐时,dhclient 进程无法停止的问题。接下来的更改,包括始终发送客户端标识符,计划在发布前合并。正在进行的工作旨在改善 dhclient 与设置接口地址的其他方法的交互。
上个月,我在开发一个驱动/模块,用于更新支持微代码更新的 Intel 或 AMD CPU 的微代码。如你所知,这些处理器是由微代码驱动的,并且可以更新固件。Intel(R) 经常发布微代码更新,AMD(R) 更新可以在 BIOS 程序中找到。工作几乎完成,我只需要找到一点时间在 AMD64 系统上进行测试并进行代码清理。该驱动程序还提供了一种让用户空间程序访问特定 CPU 的机器特定寄存器(MSR)和 CPUID 信息的方法。这能让一些程序(如 x86info)提供关于 SMP 系统中 CPU 的更准确信息,并根据 MSR 的内容做出假设。
感谢 John Baldwin、Kostik Belousov、John-Mark Gurney 和 Divacky Roman 在开发过程中提供的帮助。
在基于 AMD64 的系统上进行测试。
编写手册页。
代码清理/检查。
链接:
FreeBSD/arm 移植已支持 Atmel AT91RM9200。这些基于该机器的板子可以通过 NFS 或 SD 卡启动至多用户模式。板载的串口、PIO、以太网和 SD/MMC 卡控制器得到了良好的支持。内核对 SSC、IIC 和 SPI 闪存部分的支持将在不久后提供。
除了正常的内核支持外,该移植还包括一个引导加载程序,可初始化内存并从 IIC EEPROM、SPI DataFlash、BOOTP/TFTP 和 SD 存储卡启动。
该移植将包含在即将发布的商业产品中。
添加对 AT91 系列 arm9 处理器的其他成员的支持。
完成对 AT45D* 闪存部分的支持。
完成对 USB 端口的支持。
编写对 USB 设备功能的支持。
对 UltraSparc T1 (Niagara) 的支持正在不断改进。最近的代码已经提交到公共 CVS 下的 sys/sun4v。
目前还不清楚是否能在 API 公共发布之前实现完整的逻辑域支持。测试表明,要使 FreeBSD 能够充分利用所有 32 个线程,还需要大量工作。
随机测试和错误修复。
导入并扩展改进的互斥量分析支持。
为逻辑域开发虚拟网络和虚拟磁盘设备驱动程序。
Xen 支持的工作在 Perforce 中持续进行。编程之夏学生修复了几个 bug,并继续在该项目上工作。需要有人有时间完成 dom0 支持并将其推向生产级稳定性。
已有足够的兴趣表明,可能需要将其提交到公共 CVS,以便更多人进行试验。若时间允许,我将在下个月进行更新并提交。
支持 dom0。
一般测试和错误修复。
将新型创新的 e17 窗口管理器集成到 Ports 中的工作已接近完成。大量新的 e17 相关应用程序已被移植,所有旧的 Port 都已更新至最新的稳定 CVS 快照。为支持整个过程并简化依赖 Port 的创建,创建了特殊的框架(bsd.efl.mk)。我将在 Ports 冻结前的几天提交这些更改。
感谢 Sergey Matveychuk (sem@) 提供的机器,用于放置 CVS 快照。没有他的帮助,这项工作将无法完成。
移植 Entrance(类似 xdm 的应用程序,但非常吸引人)。
移植 Net 和 Wlan e17 模块。
开发 FreeBSD 特定的 e17 应用程序/模块,使用 Ports、系统配置等。
链接:
在上次报告中提到的新 2U 服务器现在已配置了 Raptor 硬盘,采用 RAID-10 配置。得益于社区的慷慨捐赠,我以非常优惠的价格购买了这八块硬盘。该服务器将在接下来的几周内部署。
自从六月以来,工作进展相当多。一些亮点包括:
更好的页面缓存以加速响应。
链接:
在 2006 年的谷歌编程之夏期间,Gábor 进行了几项提升 Ports 基础设施的工作:
新的 i386 二进制 Port 处理。
清理:在 bsd.port.mk
中正确使用 ECHO_CMD
和 ECHO_MSG
。
为调试添加基础设施支持。
支持将 Port 安装到不同的目标路径(DESTDIR
宏)。
清理:将 fetch
shell 脚本移出 bsd.port.mk
。
使 Port 遵循 CC
和 CFLAGS
。
支持跨编译 Port。
Plist 生成工具。
前三项已完成,接下来的两项正在进行中。DESTDIR 支持比预期的要复杂,完成的时间比预期更长。Gábor 将继续工作,完成这些任务以及其他与 Port 相关的任务。FreeBSD 很高兴看到他有兴趣继续从事 Port 和 Ports 基础设施的工作。
链接:
我们在树中有多个 OCaml Port,每个 Port 都在维护 OCaml 的 ld.conf
文件,保持正确的状态,安装/删除它们的文件/条目等。为了简化 OCaml 语言 Port 的创建,开发了一个特殊的框架(bsd.ocamk.mk
),并将大部分 Port 转为使用该框架。这使得很多重复的代码得以移除。这个新框架处理了安装 OCaml 语言库并正确注册所需的所有事项。bsd.ocaml.mk 还包含了用于处理 findlib 支持的库、以正确方式修改 ld.conf 等的控制选项。此外,还添加了许多新的与 OCaml 相关的 Port。
链接:
提交更多论文!
链接:
EuroBSDCon 2006 将于 11 月 10 日至 12 日在意大利米兰举行。
EuroBSDCon 是欧洲 BSD 开发者的最大聚会,同时也吸引了来自世界各地的用户和爱好者。这也是一个分享经验、技术和文化的机会。
会议的议程涉及了关于 FreeBSD 的丰富话题,从“FreeBSD Ports 的工作原理”到“FreeBSD 中的中断过滤”。这意味着无论是初学者还是黑客都能从中获得乐趣。
现已开放注册。EuroBSDCon 组委会希望在米兰见到你。
链接:
我已经建立了 FreeBSD 多媒体资源列表,这是一个涵盖 FreeBSD 相关播客、视频播客和音视频资源的一站式平台。希望这个列表能够让人们更轻松地找到并保持最新的录音资源。该概览有 HTML 页面和 XML/RSS 订阅两种形式。
最终目标是将这个列表纳入 www.FreeBSD.org
的范畴。
联系人:Markus Boelter <>
联系人:Paul Saab <>
联系人:Ivan Voras <>
联系人:George Neville-Neil <>
联系人:Clement Lecigne <>
联系人:Chris Jones <>
联系人:Kip Macy <>
联系人:Michael Bushkov <>
联系人:Hajimu UMEMOTO <>
联系人:Dongmei Liu <>
联系人:Christian Peron <>
联系人:Jue Yuan <>
作为谷歌编程之夏 2006 的一名参与者,我在这几个月里专注于将 移植到 FreeBSD。这个夏季的工作成果包括一个可以用于安装的 domU 内核,一份关于如何在 Xen 上使用 FreeBSD 的 ,以及一些其他的小改进。但是在这一领域仍然有很多工作需要完成,例如,长期期待的 dom0 支持。因此,我会继续在这个方向上工作,并尽力跟上 Xen 本身的更新。
联系人:Shteryana Shopova <>
联系人:Bjoern A. Zeeb <>
联系人:Murray Stokely <>
联系人:Alexander Leidinger <>
联系人:Roman Divacky <>
联系人:Emulation Mailinglist <>
联系人:Diomidis Spinellis <>
联系人:John Birrell <>
链接:
联系人:George Neville-Neil <>
联系人:FreeSBIE 团队 <>
联系人:Matteo Riondato <>
联系人:Pawel Jakub Dawidek <>
链接:
联系人:Damiel Braniss <>
联系人:Pawel Jakub Dawidek <>
联系人:Colin Percival <>
联系人:Robert Watson <>
联系人:Christian Peron <>
联系人:Wayne Salamon <>
联系人:Hans Petter Sirevaag Selasky <>
关于新的 USB API,欢迎通过以下邮件地址提供意见和建议:。
联系人:安全官员 <>
联系人:安全团队 <>
联系人:Mark Linimon <>
联系人:发布工程团队 <>
链接:
联系人:Deb Goodkin <>
联系人:Andrew Thompson <>
联系人:George Neville-Neil <>
联系人:Bjoern Zeeb <>
联系人:Andre Oppermann <>
链接:
联系人:Randall Stewart <>
联系人:George Neville-Neil <>
代码仍需大量测试。请参见 和即将发布的 -CURRENT 中的补丁。
联系人:Andre Oppermann <>
链接:
联系人:Ulf Lilleengen <>
我已经创建了补丁,包含了所有尚未合并到 HEAD 的工作(这是我开发分支的快照,可能会有快速变化):
联系人:Warner Losh <>
联系人:Bernd Walter <>
联系人:Ariff Abdullah <>
联系人:Alexander Leidinger <>
联系人:Ryan Beasley <>
联系人:多媒体邮件列表 <>
联系人:李鑫 <>
联系人:Gábor Kövesdán <>
联系人:Joseph Koshy <>
联系人:Brooks Davis <>
联系人:Stanislav Sedov <>
联系人:Warner Losh <>
联系人:Olivier Houchard <>
联系人:Kip Macy <>
联系人:Kip Macy <>
联系人:Stanislav Sedov <>
联系人:Dan Langille <>
新的新闻订阅,包括为你的观察列表提供的新闻订阅。
。
能够 (包括 Ports、文档、源代码等),按树中的指定点进行筛选。
详细信息请查看 。
联系人:Gábor Kövesdán <>
联系人:Erwin Lansing <>
联系人:Stanislav Sedov <>
联系人:佐藤広生 <>
联系人:George Neville-Neil <>
联系人:<>
网站已上线,我们正在征集论文和演讲。部分教程已安排。若有疑问或提交,请发送电子邮件至 。
链接:
联系人:Dan Langille <>
的日期已确定:2007 年 5 月 11-12 日。和往常一样,BSDCan 将在渥太华大学举办,会议开始前有两天的教程。
将在 12 月中旬发布。现在就开始考虑提交你的论文吧!
联系人:EuroBSDCon 组委会 <>
联系人:Edwin Groothuis <>