FreeBSD 2010 年第一季度状态报告

引言

本报告涵盖了 2010 年 1 月至 3 月期间与 FreeBSD 相关的项目。作为 2010 年计划中的四个报告中的第一个,包含了 46 项条目,展示了 FreeBSD 项目的良好进展,证明我们的提交者紧跟操作系统开发的最新趋势。在此期间,FreeBSD 发布了一个新的次要版本 7.3-RELEASE,同时 8.1-RELEASE 的发布过程即将开始,并计划在今年夏季晚些时候发布。

感谢所有报告员的出色工作!希望你们喜欢阅读。

请注意,涵盖 2010 年 4 月至 6 月期间的提交截止日期为 2010 年 7 月 15 日。

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

我们再次参与谷歌编程之夏计划。这是我们第六年参与该项目,我们希望再次看到学生们的优异成果。目前,所有申请已经提交,我们正在审核这些申请。被接受的学生将于 4 月 26 日公布,正式编程将于 5 月 24 日开始。

联系人:sprewell <chromium@jaggeri.com>

Chromium 是一个基于 Webkit 的网络浏览器,主要采用 BSD 许可证。它在 FreeBSD 上运行得非常好,甚至支持 HTML 5 视频等新特性。我已经开始提供订阅服务,为 FreeBSD 的移植工作提供资金,这些资金已经用于修复 BSD-i386 上的 Chromium。我正在使用一种新的资助模型,订阅费用支付的开发工作最多保密一年,之后所有在构建中使用的补丁将根据 Chromium 的 BSD 许可证公开给订阅者。此外,部分闭源补丁会不断推送到上游,BSD i386 修复已经提交到上游。目标是为 BSD 上的 Chromium 开发提供资金,同时不断将补丁推回 BSD 许可证下的 Chromium 项目。我很快将发布一个 Chromium 移植包,供那些不介意使用旧版、稳定构建的用户使用,这些构建不包含所有订阅版的付费功能。你可以阅读 订阅服务支付的事项,例如将 ALSA 音频后端替换为 OSS,并 了解更多关于订阅的信息

链接

http://wiki.freebsd.org/BuildingFreeBSDWithClang

http://lists.freebsd.org/pipermail/FreeBSD-current/2010-April/016648.html

联系人:Ed Schouten <ed@FreeBSD.org> 联系人:Roman Divacky <rdivacky@FreeBSD.org> 联系人:Brooks Davis <brooks@FreeBSD.org> 联系人:Pawel Worach <pawel.worach@gmail.com>

自上次状态报告以来,我们已经能够在 i386/amd64 上使用 clang 构建整个 FreeBSD(C 和 C++ 部分)。唯一的例外是引导加载程序,它未能满足给定的大小约束。目前的工作重点就在这里。C++ 部分得到了很大的提升,现在可以编译 FreeBSD 中的所有 C++ 代码及其自身。

我们在 Mips 和 PowerPC 上也有了一些进展。Mips 从 Oleksander Tymoshenko 那里获得了驱动程序定义,Nathan Whitehorn 为 PowerPC 做了类似的工作,并测试了内核。目前,PPC 内核似乎能够启动,但由于缺少 PowerPC 的 va_arg 实现,什么也没有打印出来。Nathan 正在解决这个问题。

总体来说,ClangBSD 已经在 i386/amd64 上实现了自托管,并且在 PowerPC/PPC 上取得了一些进展。我们还看到了一些对 Sparc64 的贡献,但这似乎停滞不前。

我们需要人们尝试 ClangBSD(请参阅维基)并进行运行时测试。我们还希望能获得关于其他架构的帮助——尤其是 ARM。

待办事项

  1. 在 amd64/i386 上进行 ClangBSD 的运行时测试。

  2. 帮助 ARM/Mips/Sparc64。

  3. 对第三方应用(Port)进行更多 clang 测试。

  4. 讨论将 LLVM/clang 集成到 FreeBSD 中。

联系人:Rui Paulo <rpaulo@FreeBSD.org>

恢复了在 FreeBSD/i386 上支持 EFI 启动的工作。现在,启动加载程序可以从 EFI FAT 分区读取 ELF 文件。我们正在努力尝试启动内核。

链接

http://mfsbsd.vx.sk/

联系人:Martin Matuska <mm@FreeBSD.org>

mfsBSD 是一套生成可启动映像(如 ISO 文件)的脚本,这些映像会创建一个完全加载到内存(mfs)中的 FreeBSD 最小安装。

该项目现在已经达到稳定且经过充分测试的状态。可以从 8.0-RELEASE 或 7.3-RELEASE 的 ISO 映像文件,或从自定义 makeworld 创建映像。

新特性是一个名为 zfsinstall 的脚本,它自动化了从 mfsbsd ISO 进行的 ZFS-only 安装(该脚本适用于 8-STABLE 和 9-CURRENT,示例 ISO 映像可以从项目网站下载)。

待办事项

  1. 打包分发安装文件(目标:8.1-RELEASE)。

  2. 使 zfsinstall 与 7.3 兼容(主要是 gpart 语法)。

  3. 启用 zfsinstall 与 sysinstall 的组合(zfsinstall 准备磁盘,sysinstall 安装发行版)。

  4. 将工具集集成到 FreeBSD 源代码中(工具?)。

链接

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

http://svn.freebsd.org/viewvc/base/projects/tcp_cc_head/

联系人:Lawrence Stewart <lstewart@FreeBSD.org>

我刚刚完成了 KPI 的最后一次破坏性更改,为允许不同的拥塞感知传输共享拥塞控制算法打下了基础。导入到主干分支是一个大工程,而我的时间有限,因此进展会较慢,预计无法在 8.1 版本之前完成并准备好进行 MFC。我计划在 8.2 版本中完成它。

待办事项

  1. 征求外部测试。

  2. 提交到主干分支。

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

该项目旨在为嵌入式 FreeBSD 提供一个通用且灵活的框架,以支持 NAND Flash 设备。该框架在内核中提供了一组 KOBJ 接口,允许对 NAND 设备进行统一和灵活的管理:

  • NAND Flash 控制器(NFC)层,其中包含特定于给定 NAND 控制器的后端驱动程序(实现与 NAND 控制器相关的低级例程)

  • 通用(常见)NAND 层,提供以抽象方式执行操作的手段(读取、编程、擦除、获取状态等)

  • NAND 字符设备,将芯片设备导出为标准字符设备,允许直接读取/写入设备,并使用 ioctl 执行其他特定操作

  • GEOM NAND 类,提供通过 GEOM 的基本访问

基础设施的一部分是一个完整的 ONFI 兼容设备系统模拟器(NANDsim),以及一个用户空间控制应用程序。这样可以在没有真实 NAND 芯片的平台上对框架进行测试。

当前状态亮点:

  • 框架被认为是功能完善的(包括 NANDsim)。

  • 框架兼容的后端驱动程序已为以下 NAND Flash 控制器(NFC)芯片提供:

    • Freescale MPC8572(PowerPC)

    • Marvell MV-78100(ARM)

    • Samsung S3C24X0(ARM)

待办事项

  1. 根据早期采用者的建议扩展接口功能/选项。

  2. 完成、清理并与主干分支合并。

联系人:Warner Losh <imp@bsdimp.com>

目前正在进行的工作是允许 FreeBSD 构建系统使用树外编译器和二进制工具(如加载器、链接器等),特别是在交叉编译环境中。虽然用兼容的编译器替换编译器相对容易,但替换工具链的工作更加复杂。此外,使用外部编译器构建系统时,buildworld 的某些部分可以被省略。

待办事项

  1. 为最新的 binutils 创建 Port 。此工作几乎完成,正在等待 Warner 的 'tbemd' 分支和 Juli Mallet 的 MIPS 合并分支整合。

  2. 为 gcc 创建 Port 。此工作已开始。原生构建很简单,但目前交叉构建有 buildworld 依赖。这些依赖正在解决中,同时也有一些 gcc 库依赖问题。

  3. 需要编写文档,解释如何使用这些工具。

链接

http://www.pcbsd.org/

联系人:Kris Moore <kmoore@FreeBSD.org>

我们目前正在对 PC-BSD 新的系统安装程序后端 pc-sysinstall 进行大量代码清理,这个工具也可以用于安装常规的 FreeBSD。已经实现了一些新功能,例如:

  • 改进了 ZFS 支持,raidz、镜像、每个池多个挂载点等。

  • 对“完全”安装的 GPT/EFI 支持,使我们能够突破 2TB 的限制。

  • MBR 分区/切片管理器。

  • 支持 geli 密码短语。

待办事项

  1. 我们基本完成了从 fdisk 迁移到仅使用 gpart,这为处理 GPT/EFI 分区方案提供了新的功能。

联系人:Warner Losh <imp@bsdimp.com>

'tbemd' 代表 "Target Big Endian Must Die"。当前的构建系统要求为大端 MIPS 或大端 ARM 处理器定义 TARGET_BIG_ENDIAN。这个方法存在很多问题。没有定义 TARGET_BIG_ENDIAN 的话,系统无法创建正确的二进制文件。而且很难知道你正在运行的系统的字节序是什么。由于 Port 不使用 bsd make,它们无法获取在定义 TARGET_BIG_ENDIAN 时添加的额外标志。

tbemd 分支旨在修复这个问题。我们将把所有 mips 平台的 MACHINE_ARCH 从 mips 改为 mipsel、mipseb、mips64eb 和 mips64el,以符合 NetBSD 的约定。这些分别代表 32 位 mips 小端、32 位 mips 大端、64 位 mips 大端和 64 位 mips 小端。ARM 将改为 arm(小端)和 armeb(大端),同样遵循其他地方设定的标准。为了支持从相同源构建的多个 MACHINE_ARCH,新增了 MACHINE_CPUARCH,用来表示构建某个 MACHINE_ARCH 所需的 CPU 支持。

此外,今天的构建系统过度使用了 MACHINE_ARCH。它的许多用法是多余的,可以简化。很多用法扩展性差,需要重构为一个可扩展的系统。将引入一个 per MACHINE/MACHINE_ARCH/MACHINE_CPUARCH 选择机制,用于处理 Makefile 片段,从而将当前的 if 结构转化为更受控的列表。

该分支可以使用新名称构建我们当前支持的所有内容。

待办事项

  1. 完成迁移到 bsd.arch.inc.mk。

  2. 在分支与主干之间减少差异,以便合并。

  3. 需要编写文档,解释如何使用这些工具。

链接

http://www.selasky.org/hans_petter/video4bsd/

联系人:Hans Petter Selasky <hselasky@FreeBSD.org>

Webcamd 是一个用户空间守护进程,允许在 FreeBSD-8/9 操作系统下使用数百种不同的基于 USB 的 Linux 设备驱动。当前重点是 USB 摄像头和 USB DVB-T/S/C 设备。也可以使用 webcamd 框架使其他 Linux 内核 USB 设备在 FreeBSD-8/9 操作系统下工作,而不违反 GPL 许可证。该守护进程当前依赖 libc、pthreads、libusb 和 libcuse4bsd。Cuse4BSD 是一个新的用户空间字符设备实现,完全支持 open、read、write、ioctl、mmap 和 close 文件操作。

如果你喜欢这个项目或希望我能投入更多时间进行开发,可以通过 PayPal 向 hselasky@c2i.net 转账来支持它。

待办事项

  1. 测试和修复 bug。

  2. 增加对更多设备驱动的支持。

联系人:Gavin Atkinson <gavin@FreeBSD.org> 联系人:Mark Linimon <linimon@FreeBSD.org> 联系人:Remko Lodder <remko@FreeBSD.org> 联系人:Volker Werth <vwe@FreeBSD.org>

Bruce Cran(brucec)已从仅限 GNATS 访问权限升级为拥有源代码提交权限的成员。他已开始提交帮助我们赶上 PR 积压的工作。感谢他!

我们继续对 PR 进行分类,为每个 PR 添加与内核子系统或用户空间 PR 相关的标签。这些标签生成了按标签和手册页排序的 PR 列表。最近的标签使用包括创建新的报告“带标签的 PR 总结图表”,它将标记的 PR 按照逻辑分组,如文件系统、网络驱动、库等。每个分组标签是可点击的。该图表每天更新一次,可视为浏览内核 PR 子类别的原型。

“推荐列表”已分为“需要提交者评估的非琐碎 PR”和“简单列表”中的琐碎 PR,以便专注于后者。

新增了“来自 FreeBSD 供应商或 OEM 的 PR”、“包含新设备驱动代码的 PR”和“引用其他 BSD 的 PR”报告,这些报告主要供提交者使用。

一些关于“实验 PR 报告”页面的 bitrot 问题已经修复。

现在,感兴趣的人员可以每周通过邮件接收定制的报告。如果你有兴趣设置报告,请联系 linimon@FreeBSD.org

目前,PR 总数已增加到大约 6400。这可能是由于 FreeBSD 8 的使用量增加所致。

我们处理 PR 的速度,特别是在 kern 和 bin 领域,似乎有所改善。

Mark Linimon 向多位提交者询问了他们对特定 PR 的兴趣。根据反馈,wiki 上的 AssigningPRs 页面和 src/MAINTAINERS 文件已更新。

像往常一样,任何有兴趣帮助处理 PR 队列的人都欢迎加入我们在 EFnet 上的 #freebsd-bugbusters 频道。无论你的兴趣是 triage 新进 PR、生成补丁解决现有问题,还是简单地协助数据库维护(识别重复 PR、已经解决的 PR 等),都可以加入我们。这是更深入参与 FreeBSD 的好方法!

待办事项

  1. 我们将在 BSDCan 举办一个 bugbusting 会话。如果你是开发者并且会参加会议,请过来看看。

  2. 尝试寻找方法,让更多的提交者帮助我们关闭那些团队已分析过的 PR。

链接

http://www.freebsd.org/releng/

联系人:发布工程团队 <re@FreeBSD.org>

发布工程团队宣布于 2010 年 3 月 23 日发布 FreeBSD-7.3。FreeBSD-8.1 的发布计划已确定,预计在 2010 年 7 月中旬发布。

链接

http://www.freebsdfoundation.org/

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

我们为 3 月的 AsiaBSDCon 提供了赞助。我们还承诺赞助 2010 年的 BSDCan 和 NYCBSDCon。我们为 AsiaBSDCon 提供了差旅补助。

我们资助了 Murray Stokely 的一个项目,用于在 BSD Conferences YouTube 频道为 FreeBSD 技术视频提供字幕。我们很高兴看到基金会资助的 HAST 项目已完成。

我们征集了项目提案,并对收到的提案数量感到非常满意。随着项目支出预算的增加,我们今年将能够资助更多项目。

我们通过增加 Erwin Lansing 扩大了董事会的成员。这将增强我们在欧洲的代表性。Erwin 为董事会带来了 Port 知识和专业技能。

我们继续开展基础设施项目,增强用于包构建、网络测试等的硬件。

现在可以在 Twitter 上关注我们!

我们正在为 2010 年筹款!更多信息请访问 http://www.FreeBSDFoundation.org/donate/.

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

2 月份,进行了处理(虚拟)网络栈资源泄漏的工作,特别是在拆除时。

在此期间,还识别并修复了多个常见的运行时问题和资源泄漏,包括模块卸载时的 ipfw 表泄漏、接口消失时的路由条目泄漏,以及与流表和定时器交互时的链路层条目泄漏。

对于虚拟网络栈,不再为事件处理程序、IP 和上层协议(如 TCP 同步缓存、主机缓存、流表,尤其是 radix/路由表内存)分配多个资源或在拆除时释放资源。

此外,epair(4) 也得到了增强,调试功能得到了改善。

此项工作由 ISPsystem 资助。

待办事项

  1. 合并剩余的补丁。

  2. 研究更好的拆除模型,并在拆除时能释放 UMA 区域,而无需为类型稳定性和定时器保留页面。

联系人:Rui Paulo <rpaulo@FreeBSD.org>

目前正在为 Atheros 驱动程序开发 802.11n 支持。目前它可以在软件中执行 AMPDU RX,我们正在开发 TX AMPDU。该代码存储在一个私有的 Perforce 分支中,但其中的一些部分已经提交到 HEAD。

这项工作由 iXsystems, Inc. 资助。

联系人:Rui Paulo <rpaulo@FreeBSD.org>

Atheros AR9285 支持已添加到 FreeBSD HEAD 和 8-STABLE 版本中。虽然仍然存在一些问题,但总体来说,它可以正常工作。

链接

http://caia.swin.edu.au/freebsd/etcp09/

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

http://www.freebsdfoundation.org/projects.shtml

http://people.freebsd.org/~lstewart/patches/tcp_ffcaia2008/

联系人:Lawrence Stewart <lstewart@FreeBSD.org>

ALQ(9) 实现和 KPI 已经过修改(还需要提交一个补丁)以支持可变长度的消息。此外,现在可以将其作为内核模块进行编译和加载。

随着 ALQ 更改合并到 HEAD,SIFTR 可以最终导入。

重组队列自动调优已在项目分支中,并需要提取为补丁,以便人们可以轻松测试。

待办事项

  1. 征集外部测试并提交 SIFTR。

  2. 征集外部测试并提交重组队列自动调优补丁。

联系人:Rick Macklem <rmacklem@uoguelph.ca>

尽管 NFS 版本 4 的基本支持已在 FreeBSD 8.0 中发布,但集成进展缓慢,预计在 FreeBSD 8.1 中将支持 RFC3530(NFS 版本 4.0)。

在 FreeBSD 8.1 后,我认为重点将转向代码清理,并在 svn 的项目区域进行一些关于客户端磁盘的攻击性整个文件缓存的实验性工作。

待办事项

  1. 处理服务器上与本地进程相关的委派问题。

  2. 集成最近对常规 NFS 客户端的更改,例如 Dtrace 支持。

联系人:Luigi Rizzo <luigi@FreeBSD.org>

我们最近完成了对 ipfw 和 dummynet 的大规模修订,修订结果已提交到 HEAD 和 stable/8。此次工作的主要特点如下:

  • ipfw 现在具有更快的 skipto 指令,包括基于表格的指令。规则查找的复杂度现在为 O(1) 或 O(log N),而以前是 O(N)。使用大量规则或管道的“skipto tablearg”或“pipe tablearg”用户应能看到显著的性能提升;

  • 对用户态重新配置的昂贵操作现在不会干扰内核过滤,除非交换指针所需的时间;

  • 现在可以将 Port 和“tos”字段用作表格的查找参数。这可能简化规则集,从而提高执行速度;

  • ipfw 现在可以将匹配规则且具有“log”属性的数据包发送到“ipfw0”伪接口,你可以在此运行 tcpdump 实现附加的过滤、日志记录等功能;

  • dummynet 现在支持多种不同的调度器类型,以适应用户在性能和服务保证方面的不同需求。现有的调度器包括 FIFO、WF2Q+、Deficit Round Robin、Priority 和 QFQ。更多的调度器可以作为可加载的内核模块来实现;

  • 内核端具有向后兼容的接口,因此你可以使用 RELENG_7 或 RELENG_8 版本的 /sbin/ipfw 来配置防火墙和 dummynet。

待办事项

  1. 正在进行的工作是优化 dummynet 中空闲条目的删除。预计很快完成。

  2. 长期目标是在存在 ipfw 动态规则时实现并行操作,当前这些规则需要对包含动态规则的哈希表进行独占锁定。

链接

http://people.freebsd.org/~rpaulo/ratectl.diff

联系人:Rui Paulo <rpaulo@FreeBSD.org>

net80211(无线)堆栈很快将支持模块化信道控制框架。此项工作的目的是减少驱动程序中的一些代码并增加更多的信道控制算法到代码库中。所有在软件中执行信道控制的驱动程序将自动受益于此项目。目前,我们正在更改所有必要的驱动程序,以便与新的框架兼容,并确保一切按预期工作。今年稍晚些时候,我们将进行必要的更改,以通过 ifconfig(1) 更改信道控制算法。

如果你正在研究无线网络的信道控制算法或相关项目,FreeBSD 现在是一个理想的测试平台!

联系人:Robert Watson <rwatson@FreeBSD.org> 联系人:FreeBSD 网络邮件列表 <freebsd-net@FreeBSD.org>

这个正在进行的项目旨在减少 tcbinfo/udbinfo 锁定和缓存行争用;这个全局锁保护对连接列表的访问,虽然它是一个读写锁,但每当处理入站数据包时(短暂地)需要获取这个锁来查找连接。该项目增加了一个新的连接组表,用于将连接分配到组中,每个组具有 CPU 亲和性,并与高端 1gbps 和大多数 10gbps 实现中的 RSS 选择队列对齐。以下任务已经完成:

  • 教会 libkvm 处理动态每 CPU 存储(DPCPU),以改进对每 CPU 数据的崩溃转储分析。

  • 教会 netstat 监控 netisr DPCPU 队列,用于实时内核和崩溃转储。

  • 创建了一个新的 inpcbgroup 抽象,供 UDP 和 TCP 使用。

  • 基于 4 元组绑定将 UDP 和 TCP 连接(inpcbs)分配到组中。

  • 对于通配符套接字绑定,复制组之间的成员资格。

  • 编写新的 TCP/UDP 连接和绑定回归测试。

剩余的任务包括:

  • 从简单的工作分配算法迁移到 RSS 分配。

  • 修改设备驱动程序 KPI,以允许堆栈和硬件之间的一致初始化和配置。

  • 完成迁移到动态每 CPU 网络统计信息,在 TCP、UDP 和 IP 中实施。

  • 添加套接字选项,以查询用户空间连接的有效 CPU 亲和性。

  • 在支持的硬件上,允许通过套接字选项显式迁移特定连接的亲和性。

  • 详细的性能评估和优化。

此项工作正在 FreeBSD Perforce 仓库中进行,由 Juniper Networks 资助。连接组及相关功能计划将包含在 FreeBSD 9.0 中(某些功能可能会回溯到 8-STABLE)。

联系人:Alexander Motin <mav@FreeBSD.org>

基于 CAM 的 ATA 实现的工作仍在继续。从上次报告以来,重错误和超时处理得到了改进,热插拔现在对主机和端口倍增器端口都有效。为了解决一些旧问题并满足 ATA 的新需求,CAM 进行了系列更改。

新的驱动程序 ahci(4) 和 siis(4) 已经修复并且非常稳定。使用“options ATA_CAM”内核选项对其他控制器的支持效果良好,使用现有的 ata(4) 驱动程序,因此现在可以开始弃用旧的 ata(4) API。

已经开始为 PCI-X/PCIe 卡和 ARM 系统芯片 SATA 控制器开发新的 Marvell SATA 驱动程序。预计将支持 NCQ、带有 FIS 基础切换的端口倍增器以及其他新特性。

大部分代码已在 8-STABLE 中实现。

待办事项

  1. 将 ataraid(4) 功能移植到 GEOM 模块。

  2. 为 SAS HBA 编写特定的传输和驱动程序(需要规格)。SAS 控制器可以支持 SATA 设备和倍增器,因此应该能很好地融入新的基础架构。

联系人:Tsuyoshi Ozawa <ozawa@t-oza.net>

我编写了实验性代码(请参阅我的项目页面),并将补丁(http://gist.github.com/350230)提交给了 freebsd-hackers。许多 FreeBSD 黑客给了我宝贵的建议,因此我打算将其作为下一步进行改进。

待办事项

  1. 不规律地运行 hard/stat/prof-clocks(进行中)。

  2. 内核调度下一个定时器中断后添加的一些定时器可能会被忽略(BUG)。

  3. 当下一个定时器事件发生时,确保调用队列具有时钟信号。

链接

http://info.iet.unipi.it/~luigi/geom_sched/

联系人:Luigi Rizzo <luigi@FreeBSD.org> 联系人:Fabio Checconi <fabio@FreeBSD.org>

geom_sched 是一个 GEOM 模块,支持可插拔的磁盘 I/O 请求调度器。目前支持的主要算法是预期 Round Robin 调度器,在存在高随机磁盘访问的工作负载中尤其有效。其他调度器可以在 geom_sched 页面上找到。

该模块于 2009 年初开发,并作为 GSOC2009 项目进行改进,最近已被引入 HEAD,并将在不久后合并到 stable/8。稳定版本 7 也有版本,但存在一些限制。

要使用该模块,在磁盘 ad4 上,你只需要执行以下操作:

kldload geom_sched
geom sched insert ad4

在 kern.geom.sched 下有多个 sysctl 变量,允许你调整算法的参数,或者完全绕过调度器,从而比较启用和不启用调度器时的行为差异。

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

在 2009 年,我们完成了一项工作,使我们能够在不包含 INET 和 INET6(再次)的情况下构建 FreeBSD 内核。这项工作为原型奠定了基础,以便在今年早些时候成功地使用仅包含 INET6 而没有 INET 编译的内核来启动。

目前的重点是识别这两个地址族之间以及与上层协议之间的通用架构问题和依赖关系。这将在某个时刻使我们能够讨论这些问题并寻求解决方案,为未来去除 INET 或 INET6 系统中的其中一个做准备。

待我们有了稳定的、可以从系统中编译出任一地址族的方式,接下来的工作将包括在大小优化方面的改进,以及用户空间的相关工作。此外,这项工作预计将有助于我们进一步朝着网络栈模块化的方向发展。

联系人:Alexander Motin <mav@FreeBSD.org>

snd_hda(4) 音频驱动程序现在支持真正的多声道播放。它现在支持 4.0(四声道)、5.1 和 7.1 模拟扬声器设置。数字多声道 AC3/DTS 直通功能已经早期实现。通过 HDMI 输出的数字多声道 LPCM 也有可能,但尚未进行测试。

要使用多声道播放,你应当使用最新的 8-STABLE 内核,并通过 dev.pcm.X.play.vchanformat sysctls 指定你的扬声器设置(如果你正在使用 sound(4) 的虚拟通道子系统),然后使用你的音频/视频播放器播放多声道音频内容,而无需将其下混为立体声。

待办事项

  1. HDMI/DisplayPort 通常需要来自 X11 视频驱动程序的某些音频支持。该领域仍然需要进一步调查和测试,特别是与多声道 LPCM 播放相关的部分。

联系人:Konstantin Belousov <kib@FreeBSD.org> 联系人:Peter Holm <pho@FreeBSD.org>

基于 Jeff Roberson 的思路,我们重新实现了 read(2)/write(2) 系统调用路径,利用页面缓存(广义上)来消除递归 vnode 和缓冲区锁的获取问题。常规的读写操作不再调用 VOP_READ/VOP_WRITE,而是通过将用户缓冲区复制到 vnode 的页面或从 vnode 的页面复制来完成。这修复了在对文件映射缓冲区进行读写时可能发生的死锁问题。

这个补丁改变了 I/O 的性能特性,我们观察到了一些更好的表现,也有一些较差的表现。如果文件系统实现了 VOP_GETPAGES 和 VOP_PUTPAGES,并且不引用缓冲区缓存,则缓冲区将完全从 I/O 路径中消除(但 UFS 和 NFS 不适用)。

待办事项

  1. 需要更多的测试和审查。

链接

http://doc.bsdgroup.de/

联系人:Jeff Roberson <jeff@FreeBSD.org>

软更新日志化项目即将完成,届时将在 HEAD 中发布。其他版本的回溯版本可以在 SVN 中找到。SUJ 完全向后兼容非日志化的软更新。现有系统不会受到影响。日志功能可以通过 tunefs 在未挂载的文件系统上启用或禁用。日志化功能提供几乎即时的文件系统崩溃恢复,代价是一些运行时性能和额外的磁盘 I/O。

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

ZFS 文件系统已更新为版本 14,适用于 -HEAD 和 8-STABLE。目前正在进行工作,将从上游 svn -HEAD 获取 bug 修复和性能改进,并在不久的将来将其提升到大约 ZFS v15 版本。同时,ZFS 版本 24 的全面升级,包括去重功能等,也在进行中。去重功能目前已部分支持,具体演示如下:

## uname -sr
FreeBSD 9.0-CURRENT
## zpool create tank ad{4,6,8,10}
## zpool get version tank
NAME  PROPERTY  VALUE    SOURCE
tank  version   24       default
## zfs set dedup=on tank
## dd if=/dev/random of=/tank/rand0 bs=1m count=1024
## zpool get allocated,dedupratio tank
NAME  PROPERTY    VALUE  SOURCE
tank  allocated   1.00G  -
tank  dedupratio  1.00x  -
## dd if=/tank/rand0 of=/tank/rand1 bs=1m
## dd if=/tank/rand0 of=/tank/rand2 bs=1m
## dd if=/tank/rand0 of=/tank/rand3 bs=1m
## zpool get allocated,dedupratio tank
NAME  PROPERTY    VALUE  SOURCE
tank  allocated   1.01G  -
tank  dedupratio  4.00x  -

待办事项

  1. 将 ZFS v15 的更改带到 svn -HEAD,并进行 MFC(合并到稳定分支)。

  2. 进一步完善 Perforce 中的代码,并进行功能测试等。

链接

http://doc.bsdgroup.de/

联系人:Johann Kois <jkois@FreeBSD.org> 联系人:Benedict Reuschling <bcr@FreeBSD.org>

我们在上次的状态报告中列出了需要帮助的文档。感谢 Frank Boerner 的外部贡献,我们能够更新大量文档,这大大减少了我们的积压。随后,Benedict 已同意为 Frank 提供德语文档项目的指导。我们期待他未来的贡献,并感谢他过去的努力。

Johann 一直在忙于保持德语网站与 FreeBSD.org 的更新同步。然而,网站的某些部分仍然没有翻译。我们正在寻找更多支持来维护德语网站。

欢迎具备德语技能的 FreeBSD 用户加入我们翻译文档和/或修复 bug 的工作。

待办事项

  1. 翻译更多文档和德语网站的内容。

  2. 保持当前文档的最新状态。

联系人:Gábor Kövesdán <gabor@FreeBSD.org> 联系人:Gábor Páli <pgj@FreeBSD.org>

我们不断更新现有的文档和网页翻译。然而,这种情况不会永远持续下去,帮助总是受欢迎的,因此如果你是匈牙利人并且对翻译感兴趣,请通过上面的邮箱地址联系我们的文档项目。

待办事项

  1. 翻译发布说明。

  2. 翻译文章。

  3. 翻译网页。

  4. 阅读翻译并提供反馈。

链接

http://www.nongnu.org/libunwind/

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

FreeBSD x86 和 x86_64 的 libunwind 库的 alpha 版本已完成,并已导入到官方的 libunwind Git 仓库。libunwind 是一个执行动态栈展开的库,使用 dwarf 调用帧信息。该库具有使用 ptrace(2) 进行远程展开、非常快速的 setjmp(3) 实现等有趣的功能。

联系人:Xin ZHAO <quakelee@geekcn.org> 联系人:李鑫 <delphij@FreeBSD.org>

FreeBSD 当前缺乏基于 LDAP 的身份验证和用户身份支持。

我们已集成了一个简化版的 OpenLDAP 库(已重命名以避免与 Port 中的 OpenLDAP 库冲突),以及对 OpenSSH 和 PAM、NSS 插件的一些修改,支持 LDAP 存储。

我们使用了几项现有工作并更新它们以使用新的 OpenLDAP API,修复了若干 bug,并将它们整合在一起。所有这些工作都采用 BSD 或类似许可证,我们的新工作将采用 2 款条款的 BSD 许可证。目前,我们支持在 LDAP 树中存储用户身份、密码和 SSH 公钥。

待办事项

  1. 进一步的代码审查。

  2. 使这些更改对系统的干扰更小。

  3. 修复在生产环境部署中发现的问题。

联系人:Jakub Klama <jceel@semihalf.com>

DaVinci(TMS320DM644x)是德州仪器基于 ARM9 的系统芯片系列,具有内建的 DSP 核心以及强大的多媒体/视频功能。该工作旨在为这些系统提供 FreeBSD 支持 - 它在多用户模式下工作,使用通过 NFS 或 SD/MMC 卡挂载的根文件系统。该代码可通过 P4 在 //depot/user/jceel/davinci/ 获取。

当前的 DaVinci 支持包括:

  • 从 U-Boot 引导加载器启动

  • 串行控制台

  • 中断控制器

  • 集成定时器

  • 电源和睡眠控制器

  • 10/100 以太网控制器

  • SD/MMC 控制器

待办事项

  1. 剩余的内建外设驱动(USB、ATA、NAND 闪存、I2C、DMA 引擎、声音、视频输入/输出)。

  2. 与 DSP 核心通信的框架。

联系人:Mark Linimon <linimon@FreeBSD.org>

通过最近的多个提交,机器在软件包构建过程中的稳定性得到了提升。目前正在进行一些重构工作,以便支持 WITNESS。然而,我们仍然受到同时构建的包数量的限制。

基于此,我们已完成首次完整的 ia64-8 软件包构建。共构建了 17187 个包(与最近的 i386-8 比较为 19885 个)。Mark Linimon 已经审查了结果,标明了哪些包无法构建。已有一些修复已经基于此提交。

目前我们有 3 台足够稳定的机器进行包构建。

SGI Altix 350 的支持已经开始。移植工作在两台连接 NUMAFlex 的 SGI Altix 350 机器上进行,总共有 4 个 CPU 和 24GB 的 DDR。内核可以通过 projects/altix 分支启动,但由于 ACPI 无法枚举 PCI 总线,因此没有发现硬件设备。由于唤醒 AP 导致机器检查,SMP 功能已被禁用。

待办事项

  1. 继续调查为什么同时构建多个软件包会导致机器崩溃。

  2. 升级 Yahoo! 上两台机器的固件,以查看是否能解决问题。

  3. 查明为什么第四台机器不稳定。

  4. 配置一台我们已获得的第五台机器。

  5. 解决最新的 gcc 移植问题。

  6. 我们需要 SGI SAL 实现的文档,以加快对 SGI Altix 350 的移植。

  7. 加载器和内核需要更改,以允许内核加载到运行时确定的物理地址,并添加对 NUMA 的支持。

链接

http://wiki.ddteam.net/wiki.cgi?page=DIR-320+FreeBSD

联系人:Alexandr Rybalko <ray@dlink.ua>

FreeBSD/mips 已成功移植到 D-Link DIR-320,无线路由器,基于 BCM5354 SoC。该项目旨在提供多个为不同用途(配置文件)定制的工作镜像。目前已经提供了基于 racoon 的路由器-ipsec 镜像。

待办事项

  1. bfeswitch 配置工具。

  2. 添加路由器配置文件。

  3. 添加 Wi-Fi 路由器配置文件。

  4. 添加 openvpn 路由器配置文件。

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

Peter Grehan 捐赠了一台 Apple XServe G5 用于软件包构建。基于过去两个月的测试,已提交大量修复以提高稳定性。

我们已完成首次完整的 powerpc-8 软件包构建。共构建了 10918 个包(与最近的 i386-8 比较为 19885 个),主要由于一些高影响的包失败(例如 lang/python25)。Mark Linimon 已审查了结果,标明了哪些包无法构建。已有一些修复已经基于此提交,我们正在对下一轮进行补丁测试。

Mark Linimon 正在努力为我们提供更多的 XServes。

待办事项

  1. 开始修复个别软件包的工作。

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

完整的 64 位 PowerPC 移植版本现已完成,并应很快合并到 HEAD 中,预计将在 FreeBSD 9.0 中首次出现。该移植版本支持基于 SLB 的 64 位服务器 CPU,例如 IBM POWER4-7、PowerPC 970(G5)和 Cell Broadband Engine。当前的机器支持仅限于 Apple 单处理器和双处理器 G5 系统,未来计划支持 IBM Power Systems 服务器和 Sony PlayStation 3。

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

  • 发现并修复了另一个导致 NFS 服务器操作中不对齐访问的 bug,已在 FreeBSD 7 和 8 中解决。与上次状态报告中宣布的不同,关于这些问题的 Erratum 通知并未发布,因为很快就显现出处理这么多问题是不切实际的,特别是修复后还暴露了次要的 bug。

  • Alexander Motin 修复了 9.0-CURRENT 中 netgraph(4) 节点的多个 bug,这些 bug 也导致了不对齐访问,因此现在在 sparc64 上应该可以正常工作。

  • Peter Jeremy 提供了多个针对 sparc64 FPU 仿真代码的修复,现在它通过了基于 TestFloat 的测试套件。这些修复已被合并到 FreeBSD 6、7 和 8 中,但遗憾的是未能完全进入 7.3-RELEASE,但将在 8.1-RELEASE 和 7.4-RELEASE 中提供。

  • 已增加对 UltraSPARC-IV 和 -IV+ CPU 的支持,并将在 8.1-RELEASE 和 7.4-RELEASE 中提供。因此,Sun Fire V890 现在得到了支持并且稳定,尽管由于缺乏正常工作的测试硬件,无法支持包含 US-IV 和 -IV+ CPU 混合配置的系统。然而,性能仍未达到预期水平,即在一台 4x1.5GHz US-IV+ 的 Sun Fire V890 上构建世界需要近 3 小时,而在一台(理论上)性能较低的 4x1.5GHz US-IIIi CPU 的 Sun Fire V440 上仅需 1 小时多一点。目前尚不清楚原因,可能与在为这些 CPU 添加支持时遇到并规避的 US-IV+ CPU 的硅缺陷有关。

  • 继续进行对 Sun Fire V1280 的支持工作。已经解决了第三个固件 bug,并编写了用于 BootBus 控制器的驱动程序,后者提供了这些机器中的控制台和时间服务。现在可以通过网络启动 Sun Fire V1280 进入多用户模式。不幸的是,由于进程在切换到另一个 CPU 时可能会挂起,导致它们无法稳定运行,这可能与 OpenSolaris 代码所称的 Cheetah+ erratum 25 有关,但遗憾的是该问题并未包含在公开的 US-III+/++ errata 文档中。我们仍在努力理解这个问题。

  • Mark Linimon 正在寻找志愿者帮助修复 sparc64 上的软件包。

链接

http://dougbarton.us/portmaster-proposal.html

联系人:Doug Barton <dougb@FreeBSD.org>

Portmaster 版本 2.22 现已进入 Ports,并完全支持以下新功能:

  • 使用 INDEX 文件显示已安装的 Port 需要更新。

  • 支持在 “尝试先使用包” 模式下安装包,以及 --packages-only、--packages-if-newer 和 --packages-build 模式。

  • 新增 --delete-build-only 选项,用于删除运行时不需要的 Port /包。

  • 更新终端标题栏,显示当前工作内容及剩余任务量。

  • 支持自定义包仓库和 INDEX 文件定义。

  • 通过 --index-only 和 --packages-only 选项可以在没有本地 Ports 的情况下运行。

  • 新增确认安装 Port 列表的对话框。

我对这些新功能感到非常兴奋,并且要感谢那些支持这项工作的公司和特别是个人。没有他们的支持,我简直无法完成这些工作。

待办事项

  1. 网站上列出的一些有趣且常被要求的功能我仍然希望能够实现,包括(但不限于)在开始安装前下载所有包,并编写可以在该机器或一组相同机器上重新运行的脚本。

链接

http://www.freebsd.org/ports/

http://www.freebsd.org/doc/en_US.ISO8859-1/articles/contributing-ports/

http://portsmon.freebsd.org/index.html

http://www.freebsd.org/portmgr/index.html

http://tinderbox.marcuscom.com/

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

大部分第一季度的时间都花在了处理 7.3-RELEASE 过程上。在 8.0-RELEASE 中成功地强制执行了 Feature Safe Port 提交后,这一工作在最近的 src/ 冻结期间得到了继续。

目前, Port 数量已超过 21,500 个,并且仍在增加。当前未解决的 PR 数量超过 1000。随着 FreeBSD 7.3 的发布,希望这个数字能大幅下降。

自上次报告以来,我们增加了四个新的提交者,并且有一位老提交者重新加入了我们。

通过捐赠一台 Apple Xserve,powerpc 构建已恢复。ia64 的新兴趣带来了新的 Port 构建。skreuser 提供的一台新的 sparc64 机器将帮助我们进行这一构建。

Ports 管理团队一直在进行 -exp 运行,验证源代码更新可能如何影响 Port 树,并为主要的 Port 更新提供 QA 运行。值得注意的是,-exp 运行包括了以下内容:gabor 的 BSD 许可 bc/dc 更新、mva 的 OpenAL 和 SDL 升级、brooks 的 NGROUPS 移除、ed 的 libcompat 和 regexp.h 移除、dinoex 的 jpeg 更新、m4 更新测试运行、jilles 的 sh(1) 更新、johans 的 bison 更新以及 roam 的 curl 更新。

待办事项

  1. 寻找帮助修复 CURRENT 上损坏的 Port 。

  2. 寻找帮助支持 Tier-2 架构的志愿者。

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

  4. 预计不久将进行的重大提交包括最新的 Xorg、KDE4 和 Gnome 更新。

联系人:Ion-Mihai Tetcu <itetcu@FreeBSD.org> 联系人:Josh Paetzel <jpaetzel@FreeBSD.org>

QAT 已在一台服务器上运行了大约两年,证明在捕捉 Port 提交问题方面非常有效。许多它无法捕捉的问题与架构或分支相关。通过将 QAT 移到一个可以在 amd64 和 i386 上运行任意版本 FreeBSD 的 VMware 盒子上,这一限制将被消除。

待办事项

  1. 将 VMware 服务器上线并配置虚拟机。

  2. 重构 QAT 代码以支持并行构建。

  3. 将现有的 QAT 迁移到新的配置上。

链接

http://www.bsdcan.org/2010/

联系人:BSDCan 信息 <info@BSDCan.org>

BSDCan 是在加拿大渥太华举办的 BSD 大会,迅速确立了自己作为为 4.4BSD 基础操作系统及相关项目的开发者和使用者提供技术交流的平台。组织者找到了一个适合从初学者到高级开发者的广泛人群的绝妙模式。

BSDCan 2010 将于 2010 年 5 月 13-14 日在渥太华大学举行,会议前将有两天的教程(5 月 11-12 日)。

在大会前后,将举办一些相关的社交活动。

请访问会议官网以获取更多信息。

链接

http://www.meetbsd.org/

联系人:meetBSD 信息 <info@meetbsd.org>

meetBSD 是一个年度活动,汇集了 BSD 操作系统家族的用户和开发者,主要是 FreeBSD、NetBSD 和 OpenBSD。在加利福尼亚特刊版的 meetBSD 后,meetBSD Wintercamp 今年回到了波兰克拉科夫。

meetBSD 2010 将于 7 月 2-3 日在雅盖隆大学举行。

请查看会议官网获取更多详细信息。

最后更新于

这有帮助吗?