2005 年的第一季度,FreeBSD-CURRENT 和 -STABLE 都非常活跃。随着 FreeBSD 5.4 进入最终的 RC 阶段,并且预计今年夏天会发布 FreeBSD-6 的分支,我们在 5 系列中看到了一些性能提升,而在 6 系列中也增加了一些令人兴奋的新特性。
报告的反馈非常好,似乎 Julian Elischer 提供的网页表单使得编写报告变得更加愉快。非常感谢 Julian 提供这个工具。我们还想引起大家注意,一些报告中提供了“待办事项”部分。
特别提醒,请查看关于即将举办的 BSDCan 大会的报告。会上将有许多与 FreeBSD 相关的有趣讲座和活动。如果你喜欢阅读这些报告,你一定会喜欢这次会议。希望在那里见到你!
感谢所有报告者,希望你们喜欢阅读这些内容。
链接
http://www.freebsd.org/cgi/man.cgi?query=carp&manpath=FreeBSD+6.0-current
http://people.freebsd.org/~mlaier/CARP/
联系人:Max Laier <mlaier@FreeBSD.org>
联系人:Gleb Smirnoff <glebius@FreeBSD.org>
CARP 是 VRRP 的一种替代方案。与 VRRP 不同,它完全支持 IPv6,并使用加密来保护广告信息。它由 OpenBSD 开发,原因是担心 HSRP 专利可能覆盖 VRRP,而 CISCO 可能会为其专利辩护。自那时以来,CARP 相比 VRRP 有了很多改进。
CARP 已经被提交到 HEAD,并且已 MFC(合并到 stable 版本)到 RELENG_5。它将在即将发布的 5.4-RELEASE 中提供。
非常感谢所有提供测试并向 Max 和 Gleb 报告漏洞的用户。Daniel Seuffert 为 Max 捐赠了硬件用于此项目。Gleb 的工作得到了 Rambler 的赞助。
改进 vlan(4) 支持。测试 ng_eiface(4)。
改进锁定机制,考虑移除接口层。
链接
联系人:Greg Lewis <glewis@FreeBSD.org>
联系人:Alexey Zelkin <phantom@FreeBSD.org>
FreeBSD Java 项目在 1 月发布了对 JDK 1.5.0 的初步支持,补丁集 1 Sabretooth
支持 FreeBSD 5.3/i386 和 5.3/amd64。自那时起,已经为 FreeBSD 4.11/i386 添加了初步支持,并且进行了多个错误修复。未来几个月的更新将增加对浏览器插件和 Java Web Start 的支持,这些功能在初始发布中并未包含。
寻求志愿者处理 JDK 1.5.0 在 FreeBSD 4.x 上的严重问题。
链接
联系人:RE 团队 <re@FreeBSD.org>
FreeBSD 4.11 是 4.x 系列的最后一个正式发布版本,于 2005 年 1 月 25 日发布。感谢过去 5 年里所有的开发者和用户,正是他们的努力使得这个版本的发布成为可能。尽管不再计划发布更多版本,但安全团队将继续通过安全更新补丁提供支持,直到 2007 年。开发者也可以继续向 RELENG_4 分支提交错误修复和低风险的功能,预计这种情况会持续一段时间。
FreeBSD 5.4 正在进行最终的发布候选阶段,预计将在 4 月底发布。该版本主要关注错误修复和少量功能与性能改进,因此对于希望从旧版本升级或首次尝试 FreeBSD 的用户来说,它是一个非常好的选择。FreeBSD 5.5 将在 5.4 发布后的 4-6 个月内发布。
FreeBSD 6.0 也正在快速接近。与 FreeBSD 5.0 相比,6.0 的目标是采取更为渐进的方法进行重大变化,而不是等待多年积累尽可能多的功能。FreeBSD 6.0 将是从 5.x 系列的演进性变化,最大的变化集中在多线程支持和简化文件系统及设备层面。6.0 的特性冻结和代码冻结将在 5 月和 6 月进行,预计 6.0 将在 7 月或 8 月稳定发布并准备好正式发布。
发布工程团队还开始每月发布 6-CURRENT 和 5-STABLE 树的非正式快照。这些快照旨在增加新特性的曝光度,并让更多用户参与测试和反馈。快照可以在 http://www.freebsd.org/snapshots 找到。
链接
联系人:Pawel Jakub Dawidek <pjd@FreeBSD.org>
GELI 是一个用于 GEOM 提供者加密的 GEOM 类。我决定开发这个项目,因为我需要一些在类似项目中找不到的功能。以下是我觉得有趣的功能列表:
使用 crypto(9)
如果有加密硬件可用,GELI 将自动在硬件上进行加密;如果没有,它会启动一个专用内核线程,在该线程中进行加密软件工作
支持多种加密算法(AES、Blowfish、3DES)
能够同时从多个来源获取密钥组件(用户输入的密码短语、文件中的随机位等)
允许加密根分区
在挂载根文件系统之前,会提示用户输入密码短语
使用 "PKCS #5: 密码基础加密规范第 2.0 版" 来保护用户密码短语(可选)
允许使用两个独立的密钥(例如“用户密钥”和“公司密钥”)
加密速度快
GELI 进行简单的扇区到扇区的加密
允许备份/恢复主密钥,当用户需要快速销毁密钥时,可以通过从备份恢复密钥来恢复数据
提供者在附加时可以配置为在最后关闭时自动分离(这样用户在卸载文件系统后无需记得分离)
允许使用随机的一次性密钥附加提供者
对于交换分区和临时文件系统非常有用
欢迎进行代码审计/评审!
链接
联系人:Pawel Jakub Dawidek <pjd@FreeBSD.org>
GSHSEC 是 GEOM 类,用于在多个 GEOM 提供者之间处理共享的秘密数据。对于每个写请求,SHSEC 类使用随机数据通过 XOR 操作分割数据,因此 N-1 个提供者只获得随机数据,而一个提供者则获得与来自其他提供者的随机数据 XOR 后的数据。所有配置的提供者必须都在场才能揭示秘密。该类已经提交到 HEAD 和 RELENG_5 分支。
链接
http://www.daemonology.net/portsnap/
http://www.daemonology.net/freebsd-update/
联系人:Colin Percival <cperciva@FreeBSD.org>
在 FreeBSD 5.4 的 Ports 冻结之前,我发布了 Portsnap 的新版本。与 CVSup 相比,这个版本更加安全高效,并且分发了 INDEX、INDEX-5 和 INDEX-6 文件,从而消除了运行 "make fetchindex" 的需求,并确保 Port 的 INDEX 与现有 Ports 匹配。此外,portsnap 构建现在已转移到由 FreeBSD 项目管理的硬件上,因此如果我遭遇不测,portsnap 的生存几率大大提高。
2 月初,由于硬件问题,FreeBSD Update 和 Portsnap 停运了几天,但这些问题已通过 layeredtech.com 捐赠的服务器得到解决。
我计划在月底之前将 Portsnap 引入 FreeBSD 基本系统,然后在几个月后引入 FreeBSD Update。
链接
联系人:Remko Lodder <remko@FreeBSD.org>
FreeBSD 荷兰文档项目是一个将英文文档翻译成荷兰语的持续项目。目前我们已经翻译了几乎整个手册,未来还会有更多内容。如果你想帮助审阅荷兰文档,或者想帮忙翻译手册的其余部分或其他文档,欢迎通过 remko@FreeBSD.org 联系我。
翻译英文手册,然后审阅荷兰文档手册
翻译英文常见问题解答(FAQ),然后审阅荷兰文档常见问题解答
翻译英文文章,然后审阅荷兰文档文章
链接
联系人:Thomas Quinot <thomas@FreeBSD.org>
ATAPI/CAM 与新的 ATA (mkIII) 框架的集成现已完成。ATAPI/CAM 现在作为一个可加载模块(atapicam.ko)提供。它也再次与原生 ATAPI 驱动程序独立,就像 mkIII 之前的情况一样。
感谢 Scott Long 和 Sören Schmidt 参与集成工作。
联系人:Sam Leffler <sam@FreeBSD.org>
我们正在进行一个使用 Coverity 的源代码分析工具(http://www.coverity.com)来审查内核源代码的工作。这些工具检查多种问题,如空指针解引用、已分配变量的“使用后释放”、无效的数组引用等。这个工作是 FreeBSD 和 Coverity 的联合项目。
我们已经对 6-current 内核源代码库进行了两次检查,并已修正所有重大问题。此过程在今年的二月和三月完成。几份报告涉及一些小问题,正在等待外部小组的回复,并将在 6.x 的第一次发布之前解决。很快将会进行另一轮内核分析。我们正在寻找一种方法,以便定期使用这些工具,因为它们在改进代码库方面非常有帮助。
感谢 Coverity 的帮助,特别是 Ted Unangst。许多开发者在解决报告问题方面特别有帮助,包括:Poul-Henning Kamp、David Schultz、Pawel Jakub Dawidek、George V. Neville-Neil 和 Matthew Dodd。
链接
联系人:Nate Lawson <njl>
cpufreq 项目已于二月初提交到 6-CURRENT,并进行了 bug 修复和更新。它将很快被 MFC 到 5-STABLE。
cpufreq 驱动程序提供了统一的内核和用户界面,用于 CPU 频率控制驱动程序。它将提供不同设置的多个驱动程序合并为一个包含所有可能频率级别的接口。用户可以直接通过 sysctl(8) 访问此接口,或者通过指示 power_profile 在 AC 电源状态变化时切换设置,或使用 powerd(8) 来控制。
例如,一个提供 1000 MHz 和 750 MHz 频率的绝对驱动程序,结合一个提供 100% 和 50% 设置的相对驱动程序,将使 cpufreq 提供 1000、750、500 和 375 MHz 四个频率级别。
Colin Percival 协助了 powerd(8),它自动控制 CPU 频率。自适应模式特别有趣,因为它尝试响应系统负载变化,同时减少功耗。
当前的硬件驱动程序包括 acpi_perf(ACPI CPU 性能状态)、est(Pentium-M 的 Intel Enhanced SpeedStep)、ichss(Intel 为 ICH 提供的原始 SpeedStep)和 powernow(支持 AMD Powernow! K7 和 K8)。其他相对硬件的驱动程序包括 acpi_throttle(ACPI CPU 节流)和 p4tcc(Pentium 4 热控制电路)
感谢 Bruno Ducrot 提供 powernow 驱动程序,Colin Percival 提供 est 驱动程序,及许多测试人员提供的反馈。
我们希望有 Transmeta CPU 的人将现有的 longrun 驱动程序转换为 cpufreq 框架。如果有人能编写 VIA Longhaul 驱动程序也会很好。可以参考 Linux arch/i386/kernel/cpu/cpufreq 目录中的示例。
包括 ARM 在内的各种架构有 CPU 电源控制,可以实现为 cpufreq 驱动程序。
powerd(8) 算法相对简单,我们希望能有更多的人测试它以及与各种工作负载下的替代算法。-v 标志会使 powerd 在运行时报告频率转换,并在终止时打印总能量使用摘要。这将有助于测试人员评估他们的算法。
链接
联系人:Eric Anholt <anholt@FreeBSD.org>
DRM 更新终于在 2005-04-15 提交到了 -current,在 jhb@ 修复了 vm_mmap 后。新的开发驱动程序已添加到 mach64 和 r300(请参见链接获取更多信息)。几乎完成的 savage 和 i915 代码也已添加,但尚未与构建系统连接。然而,最显著的变化可能是对 Radeon 显卡的纹理平铺、颜色平铺和 HyperZ 的支持,这(在更新的用户态下)可能在许多应用程序中提供 50-75% 的帧率提升。
找到了解 newbus 的人,弄清楚为什么 i915 无法附加到 drmsub0。
完成 savage 驱动程序的移植。
集成 Tonnerre(NetBSD)提供的 busdma 代码。
链接:http://repoman.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/user/scottl/ufsj
联系人:Scott Long <scottl@FreeBSD.org>
是时候面对现实,承认 fsck 对现代存储容量已经不再具有可扩展性。尽管关于日志记录与 SoftUpdates 的优缺点和数据一致性保障仍然可以展开激烈辩论,但 SoftUpdates 仍然需要通过 fsck 来确保文件系统元数据在非正常关机后的一致性,这意味着系统的正常运行时间会受到影响。虽然背景 fsck 可用,但它会消耗系统性能,并将 fsck 时间延长到几个小时。
日志记录提供了一种方法,用于记录可能在系统崩溃前未完全写入磁盘的事务,然后通过重新播放这些事务,迅速将系统恢复到一致的状态。它不能保证不会丢失数据,但可以保证在重新播放后,文件系统将恢复到一致状态。这与 SoftUpdates 相对,后者重新安排元数据更新,以最小化不一致并且易于恢复,尽管恢复仍然需要传统的完整文件系统扫描。
日志记录是许多现代文件系统的关键特性,如 NTFS、XFS、JFS、ReiserFS 和 Ext3,因此它的基础已经很好地打下,UFS/FFS 的风险较低。我知道来自 CMU 和 RPI 的一些团队曾尝试过类似的工作,但不幸的是,这些工作要么非常过时,要么我联系不上相关小组。在这种情况下,我决定自己开始这个项目,希望能在 FreeBSD 6.0 发布之前有一个功能原型。
该方法简单,记录完整的元数据块,而不是仅记录增量或高层操作。这大大简化了重放代码,但也需要更多磁盘空间来存储日志,并且文件系统需要更多工作来识别明确的更新点。一个重要的设计考虑是是否将日志数据和代码与 UFS2 文件系统兼容,还是创建一个新的 UFS3 衍生版本。由于后者对大多数用户来说存在非常高的采纳门槛,我打算使其成为 UFS2 的兼容选项。这意味着日志块可能会作为一个未链接的文件出现在传统的文件系统和 fsck 代码中,并将以此方式处理。这将允许无缝回退使用 fsck,尽管待未链接的日志数据块被 fsck 回收,用户将需要采取措施重新创建日志文件。
日志记录的一个关键部分是确保每个日志事务在相关元数据块写入文件系统之前被完全写入磁盘。我计划采用 Alexander Kabaev 的 XFS 工作中的缓冲区 'pinning' 机制来协助此项工作。这将使日志记录子系统对哪些块由缓冲区守护进程刷新到磁盘具有更细粒度的控制,而不必进一步复杂化 UFS/FFS 代码。一个考虑因素是 SoftUpdates 如何与日志记录配合,是否与日志记录是互斥的,或者它是否可以为日志记录提供事务排序功能。相关研究正在进行中。
一些初步工作可以在 Perforce 中的 //depot/user/scottl/ufsj/...
树中找到,或者在提供的链接处查看。希望这个进展会迅速加速。
链接
联系人:Warner Losh <imp@FreeBSD.org>
联系人:Takahashi Yoshihiro <nyan@FreeBSD.org>
代码库的非显眼清理工作继续进行。近期工作的重点是减少机器独立代码中的 #ifdef 语句数量。此外,我们还尝试增加 pc98 和 i386 平台之间的代码共享,并减少树中 #ifdef PC98 实例的数量。
此外,内核中一些复杂部分的清理工作也在进行中,最近,pccard 代码的资源分配例程被简化,以比以前更直接地重新分配资源的所有权。我们正在寻找其他可以进行清理的领域。
在 pc98 上,没有 ISA 总线的概念。希望能够使 cbus 在探测信息中显示出来。这还将有助于进一步隔离 pc98 特定的代码,并消除许多 ifdefs。理想情况下,isa 和 cbus 应共享一个共同的 newbus 祖先类,以便能够利用它们之间的相似性(例如,它们都有 PNPBIOS 枚举方法)。
cbus 设备可能具有复杂的资源。现有的资源支持向量。然而,目前没有支持从即插即用信息填充资源向量。这样做将大大帮助 pc98 的复杂环境,并在某些 i386 边缘情况(如软盘、ATA)中也有所帮助。
提示机制提供了一种将硬件与驱动程序和资源关联的方式,而这些硬件本来对系统是完全未知的。希望对提示机制进行改进,以允许将驱动程序实例与资源匹配。这将允许将 sio0 固定为 0x2f8,即使在即插即用资源列表(或 acpi 资源列表)中的串行设备排在第二位。进一步的改进还可以将 sio0 固定为“端口 B”,这是 acpi 或其他枚举方法定义的。由于单元分配的决策点,这些看似相关的概念很可能需要单独的实现。
Pccard、cardbus 和 USB 在启用中断后探测设备。希望能够钩住新的内核 API,以便将挂载根文件系统的过程推迟到这些系统确认完成初始设备探测后再进行。
链接
联系人:Warner Losh <imp@FreeBSD.org>
我已设置测试系统以测量 FreeBSD 5.3 和当前版本的中断延迟。到目前为止,我已测量了 300MHz 嵌入式 Cyrix 基于单板计算机的基准延迟。我尝试了多种不同的策略来优化中断路径。这些策略大多能改善从中断服务开始到驱动程序 ISR 的时间。这些改进约占该单板计算机处理时间的 1-2%,但对更快的机器来说影响不大。然而,从中断应该发生的时间,到 FreeBSD 开始处理中断的时间,是这些测量中的主导因素。尽管这些是快速的中断处理程序(因此调度器不参与其中),我经常看到平均延迟为 18 微秒,并且有较大的波动(标准差约为 5 微秒)。
我需要用 4.x 和当前版本测量延迟,以便更精确地说明差异。我尤其对混合模式消除对中断延迟的影响感兴趣。
我需要对我们的 ISR 例程的不同部分进行特性分析,看看是否有些变异可以通过改进编码技术来减少。
我需要重新运行我的测试,使用 5.4 版本,并将我的结果总结成论文。
链接
联系人:Joseph Koshy <jkoshy@FreeBSD.org>
许多现代 CPU 具有片上性能监控计数器(PMC),可用于计数低级硬件事件,如指令重试、分支预测失误、缓存和 TLB 未命中等。PMC 架构和功能在 CPU 厂商之间以及同一厂商的不同 CPU 代际之间有所不同,这使得创建可移植的应用程序变得困难。该项目试图提供一个统一的 API 供应用程序使用,并提供必要的基础设施来“虚拟化”和管理可用的 PMC 硬件资源。创建使用这些基础设施的性能分析工具也是该项目的目标之一。
自上次状态报告以来的工作:
已添加对 Intel Pentium-Pro/Pentium-II/Pentium-III/Pentium-M/Celeron 风格 PMC 的支持。
已彻底改进了 Pentium-4/HTT 机器依赖层。
已编写了一个 Python 语言接口来访问 C 库接口 pmc(3)。
修复了许多错误,并更新了文档。
需要在 Intel Pentium-M、Celeron、Pentium II 和 Pentium Pro CPU 上测试该代码。
链接
联系人:David Malone <dwmalone@FreeBSD.org>
我目前正在研究 UFS 中一个目录可以拥有的子目录数量限制。目前,由于结构体 stat
中的 16 位链接计数字段和磁盘上的 inode 格式,目录的子目录数量限制为 32K。上述讨论线程显示,使用原型补丁,dirhash
提供了对于拥有 100K 子目录的目录足够的性能。为了允许更多子目录,似乎有两个选项:改变目录的链接计数方案和扩展链接计数字段。原型补丁实现了第一种方案,并计划调查第二种方案(可能需要进行 ABI 更改)。
联系人:Søren Schmidt <sos@FreeBSD.org>
经过几个月的测试,ATA mkIII 已经被提交到 -current 分支,并作为补丁发布在 -current 和 5-stable 上。我将继续为 5-stable 提供补丁,以便需要最新 ATA 支持的用户使用。
下面是 mkIII 带来的一些改进:
ATA 现在是完全模块化的,因此每个部分可以根据需要加载或卸载,以提供所需的功能。
大大改进了 SATA 支持,支持在支持的控制器上进行热插拔事件(目前包括 Promise、SiS 和 nVidia),即系统会自动检测 SATA 设备的插拔,并添加/删除设备条目等。
大大改进了 ATA RAID 支持。ata-raid
驱动程序已经重新编写,以充分利用改进后的基础架构所提供的功能,包括复合 ATA 操作等。重建功能已经更改为通过用户态读取来重建,因此简单的 dd
操作整个阵列会触发重建(目前 atacontrol
就是这么做的)。这意味着可以更好地根据实际使用模式调整此过程所使用的资源。ATA RAID 现在支持 10 多种不同的 RAID 元数据格式,因此大多数 BIOS 定义的 ATA RAID 阵列可以被识别并使用。然而,FreeBSD 内部能够创建的元数据格式仍然有限,这目前不是一个优先功能。
ATA 驱动程序的底层基础设施进一步优化,以更容易地支持“奇怪”的芯片组,并且在大多数情况下对更高层透明。这简化了将 ATA 端口到新平台的工作,其中 ATA 控制器不一定具有 x86 传统布局。
驱动程序中修复了大量错误和缺陷。基础架构的重构揭示了存在的 bug 和不足,这些问题在将 ATA 模块化并使基础架构更通用、更易于理解的过程中得到了修复。
工作仍在继续,以确保 ATA 跟上新芯片组和 ATA 领域的其他进展。SATA ATAPI 支持正在开发中,同时也在支持 NCA/TCQ(标签)。如果你希望某个未支持的硬件得到支持,捐赠硬件是最好的方式,因为根据我的妻子所说,我的预算在未来十年内无法购买新的硬件 :)
需要大量测试,特别是 SATA 和 RAID 支持。
链接
联系人:Scott Long <scottl@FreeBSD.org>
过去几个月里,多个存储驱动已经从巨型互斥锁(Giant mutex)下移除。在 FreeBSD Systems, Inc 和 ImproWare, AG, Switzerland 的赞助下,LSI MegaRAID(AMR)和 IBM/Adaptec ServeRAID(IPS)驱动已经完成锁定。SMPng 锁定是提高 FreeBSD 5.x 及更高版本系统驱动性能的关键步骤,而这两个驱动已经显示出了这一点的好处。FreeBSD 5.4 发布时将包含这些改进。
类似的工作正在进行中,涉及到 3WARE Escalade(TWE)驱动,初步补丁已提供给测试人员。我希望能够在下一个 FreeBSD 版本发布时完成该驱动。
不幸的是,由于 FreeBSD 中的 SCSI 子系统(CAM)当前没有被锁定,因此大部分好处只能从像这里提到的纯块存储驱动中获得。然而,可以锁定一个 CAM 子驱动,并将驱动的中断处理程序移出巨型锁,从而实现部分增益。Sun FAS366 SCSI 驱动(ESP)就是这样运作的。如果有志愿者帮助锁定其他驱动程序或处理 CAM 的锁定问题,我们非常欢迎。请联系我,如果你有兴趣的话。
链接
联系人:George Neville-Neil <gnn@neville-neil.com>
关于协议符合性工具,我终于取得了一些进展,使用 libnet 和 SWIG 创建了一个可脚本化的包库。希望这将成为 Port,进而用于协议栈变更的符合性测试。Qing Li 已经独立处理了 ARP 重写问题,这部分内容将从 Dingo 项目页面中移除。
许多 :-)
链接:http://lists.freebsd.org/pipermail/cvs-all/2005-April/116671.html
联系人:Brooks Davis <brooks@FreeBSD.org>
在 4 月 18 日,我提交了对 IPFW 的 IPv6 支持。这项支持由 Luigi 的两位学生 Mariano Tortoriello 和 Raffaele De Lorenzo 编写。我对其进行了更新,使用了 PFIL_HOOKS,并修复了一些小问题。根据这次提交,IP6FW 应该被视为过时,推荐使用 IPFW。尽管可以将此更改迁移到 5.x 版本,但目前并无此计划。
测试。
IP6FW 到 IPFW 的迁移指南。
5-STABLE 相关补丁。
链接
联系人:Qing Li <qingli@FreeBSD.org>
我已经完成了 IPv4 和 IPv6 的基本功能。用户态工具("arp" 和 "ndp")已经更新。我已使用 "make buildworld" 测试了这些更改,并且在生产环境中对新代码进行了测试,结果看起来很稳定。Gleb Smirnoff(glebius@FreeBSD.org)提供了审查意见,我已经将这些反馈纳入补丁中。我还在 2005 年 3 月的 IETF 会议上与两位核心 KAME 开发人员讨论了 IPv6 更改,他们表示这些更改可能会导致与 KAME 项目的分歧,但这不一定是坏事。
我正在等待导师 Andre 的审查反馈。我需要锁定专家帮助我修复我的巨型锁捷径。我希望尽快将代码发送出去,供更广泛的审查。
链接
联系人:Gleb Smirnoff <glebius@FreeBSD.org>
本报告涉及了 2004 年 8 月到 2005 年 4 月期间的内容。
新节点。两种新的节点已添加到 FreeBSD 基本发行版中。ng_netflow(4) 节点实现了 IPv4 包的 NetFlow 版本 5 计数。ng_ipfw(4) 节点将数据包从 ipfw(4) 转发到 netgraph(4) 并返回。一个众所周知的 ng_ipacct 节点已添加到 Ports 中。
SMP。需要分配唯一名称的节点已经在 RELENG_5 中使用互斥锁进行了保护,在 HEAD 中使用了 subr_unit 分配器。需要运行周期性任务的节点已经重新设计为使用 mpsafe ng_callout() API。ng_tty(4) 节点已经重新设计,以与 debug.mpsafenet=1 兼容。NetGraph ISR 和 callout 在 HEAD 中已声明为 MPSAFE。
NetGraph 流量控制。两个节点 ng_ether(4) 和 ng_cisco(4) 已经改进,在链路状态发生变化时向上游节点发送流量控制消息。ng_one2many(4) 节点引入了新的链路故障检测方法——监听来自下游的流量控制消息。
对许多节点进行更多的 SMP 测试
审查图形重构的锁定
ng_nat 节点——内核中的 natd(8)
使 ng_bridge(4) 支持多线程
链接
http://ipw2100.sourceforge.net/firmware.php?fid=4
联系人:Damien Bergamini <damien@FreeBSD.org>
导入了四个新的无线驱动:
ipw:Intel PRO/Wireless 2100 适配器(MiniPCI)的驱动。 iwi:Intel PRO/Wireless 2200BG/2225BG/2915ABG 适配器(PCI 或 MiniPCI)的驱动。 ral:Ralink RT2500 无线适配器(PCI 或 CardBus)的驱动。 ural:Ralink RT2500USB 无线 USB 2.0 适配器的驱动。
ipw 和 iwi 驱动需要固件才能运行。
由于许可限制,这些固件无法随基本系统再分发。
查看固件许可条款:http://ipw2100.sourceforge.net/firmware.php?fid=4。
正在制作包含固件映像及固件加载程序的 Ports。
可以在此处查看 ral 和 ural 支持的适配器列表:http://ralink.rapla.net/。
为 ipw 和 iwi 固件创建 Port。
为 iwi 添加 IBSS 支持。
为 ipw 和 iwi 添加 WPA(802.11i)支持。
为 ral 和 ural 添加硬件加密(WEP、TKIP 和 CCMP)支持。
为 ural 添加自动速率适应支持。
链接
http://people.freebsd.org/~brooks/pubs/eurobsdcon2004/
http://www.freebsd.org/projects/dingo/
联系人:Brooks Davis <brooks@FreeBSD.org>
该项目旨在清理网络接口的处理,以便能够可靠地移除接口。目前的问题包括在 Dummynet 延迟数据包到某接口时接口被移除导致的 panic。
我目前正在努力将 struct ifnet 从设备驱动程序结构中移除,以便在设备移除时能够正确管理它们。我相信我已经移除了所有已知的将 struct ifnet 指针转换为其他类型的情况(除了那些只是魔术值而不是实际的 struct ifnets)。我将很快开始提交这些更改,并添加一个新的函数 if_alloc() 来分配 struct ifnet。if_detach() 将被修改以销毁它们。
链接:http://www.digium.com/index.php?menu=hardware_products
联系人:Maxim Sobolev <sobomax@FreeBSD.org> 联系人:Oleksandr Tymoshenko <gonzo@pbxpress.com> 联系人:Max Khon <fjoe@FreeBSD.org>
在过去的两个月里,取得了很大的进展。现有的 TDM400(FXO/FXS)支持得到了显著改进。PRI 和 BRI 卡的驱动程序已添加,并且现在应该视为 beta 质量。
对 PRI/BRI 驱动程序进行更多测试。
为通道化 DS3 卡添加支持。
链接
联系人:Sam Leffler <sam@FreeBSD.org>
Damien Bergamini 导入了几种新的驱动程序:iwi、ipw、ral 和 ural。
Arvind Srinivasa 为 ndis 驱动贡献了 WPA-PSK 支持。
John Bicket 为 ath 驱动贡献了新的 tx 速率控制算法,该算法将很快成为默认算法。
多 BSS 支持的工作在 CVS 树外进行。将在 BSDCan 2005 上展示该工作,并将在会后提供讲座幻灯片。
除 ath 和 ndis 外的驱动程序需要更新以支持新的安全协议。
hostapd 需要工作以支持 IAPP 和 802.11i 预认证协议(这些是现有 Linux 代码的简单转换)。
OpenBSD 的 dhclient 程序已经移植,但需要一名开发者在将其引入 CVS 后维护。
链接
联系人:David Xu <davidxu@FreeBSD.org>
libthread 是一个纯粹的 1:1 线程库,曾长期停留在我的 perforce 分支中,最近已被导入到源代码树中,并替换了 libthr。该工作的目的是改善 FreeBSD 上的 1:1 线程,库的设计理念是越简单越好,目前它几乎可以运行 libpthread 可以运行的所有应用,但提供更好的 SMP 性能。库的大小比 libpthread 小。
目前它支持 i386、AMD64、sparc64 和 ia64,可能还会支持 alpha、powerpc 和 arm。我在 sparc64 和 ia64 上的测试不多,只在 FreeBSD 集群机器上测试过。对于 i386,我一直使用 LDT,但现在 Peter 已经提交了 GDT 代码,因此不再有 8191 线程的限制。
libthread_db 已更新,以支持调试新的 libthr。它是 gdb 用于调试线程进程的辅助库,理解线程库的内部细节。我对其做了一些改进,支持 libthr 的事件报告,目前它可以报告线程的创建和死亡事件。这意味着无论你是否跟踪线程,创建和死亡的线程都会向用户报告。
我正在工作线程创建性能,当前创建一个线程需要相当多的 libc 函数和系统调用,我希望引入一个系统调用来原子地创建线程。也就是说,一个系统调用将设置线程入口、TLS、信号掩码以及 PTHREAD_SCOPE_PROCESS/SYSTEM;将来可能还会设置 CPU 亲和力掩码,当用户空间入口代码执行时,线程已经完全设置好。
进程共享同步对象。当前 FreeBSD 不支持此规范。共享互斥锁等的想法与其他系统相似,用户可以使用 mmap() 创建一个共享内存页面,并将 pthread 同步对象放在该页面中,多个进程使用共享对象控制资源访问。我没有在这方面工作,如果有人感兴趣,请告诉我。
链接:http://www.spinellis.gr/blog/20050413/index.html
联系人:Diomidis Spinellis <dds@FreeBSD.org>
一个新的子命名空间,名为 pipe,已添加到 portalfs。管道命名空间执行指定的命令,并从根目录开始。命令的参数可以在命令名后提供,参数之间用空格或制表符分隔。以读取模式打开的文件将在管道命名空间中从命令的标准输出获取输入;以写入模式打开的文件将把写操作的数据发送到命令的标准输入。管道命名空间使我们能够执行散点收集操作,而不使用临时文件,创建非线性管道,并使用符号链接实现文件视图。
链接
联系人:John-Mark Gurney <jmg@FreeBSD.org>
我一直在努力让 FreeBSD/arm 在 TS-7200 上运行。到目前为止,板卡可以启动,并且以太网基本工作(有些无法解释的丢包问题)。我可以从 FreeBSD/i386 机器进行网络启动,也可以在 CF 上挂载 msdosfs 文件系统。
查明为什么一些小数据包传输时会出错。
获取 EP93xx 识别信息,以便正确连接各种板载设备。
联系人:Peter Grehan <grehan@FreeBSD.org>
进展继续。X.Org 6.8.1 服务器已在多款 Mac 上运行,相关工作正合并到 6.8.2 版本中。也已成功安装到 Mac Mini。
链接
联系人:Kip Macy <kmacy@fsmware.com>
FreeBSD 5.3 已在 Xen 的稳定分支和开发分支上运行,并且现在已检查到这两个树中。在接下来的几周内,我将添加改进,以更好地批量处理页表更新和支持 SMP。
为 FreeBSD 添加支持,运行作为 Domain 0,即作为宿主操作系统运行。
为 FreeBSD 添加支持,支持虚拟机检查点和迁移。
链接
联系人:Dan Langille <dan@langille.org>
这是 FreshPorts 的第一次状态报告。FreshPorts 始于 2000 年初,现已包含超过 170,000 次提交。FreshPorts 主要关注 Ports 提交,但实际上处理并记录了所有对 FreeBSD 源代码树的提交。它的姊妹网站 FreshSource 使用与 FreshPorts 相同的数据库,但报告范围更广。最近几个月,FreshPorts 得到了增强,能够处理并包含 VuXML 信息。此外,RESTRICTED 和 NO_CDROM 已经添加到 FreshPorts 跟踪的事项列表中。对于未维护的 Port,我们最近添加了以下信息:
FreshPorts 在 FreeBSD 社区的直接和间接支持下,继续发展,提供了一个对用户和开发者都非常有用的工具。
提供一种更新监视列表的复制/粘贴方法。
改进“People watching this port, also watch”查询的响应时间。
对 Ports 中的提交进行分页处理。
对监视列表进行分页处理。
为单独的监视列表创建 RSS 提要。
链接
联系人:Mark Linimon <linimon@FreeBSD.org>
在撰写此报告时,5.4 版本正在进行中。
已批准了 Ports 管理(portmgr)团队的新章程,并已发布在上述链接上。此外,另外两个新页面介绍了团队的政策,以及发布期间和发布之间的质量保证活动范围。
由于一段时间未参与电子邮件讨论,Oliver Eikemeier (eik) 被移至 portmgr 非投票状态。
我们最近增加了几位新的非常活跃的提交者;这帮助我们保持 PR 数量较低,即使添加了大量的新 Port。
对基础设施的多次迭代更改已在集群上进行测试并提交;详情见 /usr/ports/CHANGES。
x.org、GNOME、KDE 和 perl 都已更新。
Porter 手册进行了一些更新,但仍有更多章节需要更新,以包含近期的实践变更。
Ports 现在包含近 12,750 个 Port。
在处理安装文件到批准目录之外的 Port 以及/或未能干净卸载的 Port(请参阅 pointyhat 上的“Extra files not listed in PLIST”)方面取得了进一步进展,并将继续关注这一领域。我们感谢所有提交 PR 或提交修复的人员。
对 bsd.port.mk 新功能和修订的需求仍然非常高,portmgr 团队正努力处理所有这些需求。
我们仍然有大量 PR 已经分配给提交者很长时间(实际上,它们构成了大多数)。portmgr 的一个目标是在接下来的几个月内减少这个数量,我们希望提交者能尽可能地帮助我们。
链接
联系人:Alexander Leidinger <netchild@FreeBSD.org> 联系人:Emulation 邮件列表 <freebsd-emulation@FreeBSD.org>
如在上一期状态报告中讨论的,RedHat 8 的更新进展顺利(仅有一些小问题,已迅速解决)。
作为下一步,正在进行清理/精简工作,并提供覆盖默认 Linux 基础的可能性。这依赖于一些更改,需要至少在 Ports 构建集群中进行一次测试运行,因此这些更改的最终日期取决于集群资源的可用性。
将通用 RPM 代码重构到 bsd.rpm.mk 中。
确定下一个默认 Linux 基础要使用的最新 Linux 发行版。重要标准:
基于 RPM(以便使用现有的基础设施)
在安全修复的可用性方面有良好的记录
可以从多个镜像站点获取的软件包
支持多个硬件架构(例如 i386、amd64、sparc64;注意:并非所有架构都有为其本地位宽编写的工作 linuxolator,但只要没有用户空间部分可用,就不会有编写内核部分的动机)
将 linuxolator 用户空间迁移到最新版本(见上文)。
链接
联系人:Max Laier <mlaier@FreeBSD.org>
OpenBSD 即将发布 版本 3.7。现有 补丁 可用于跟上 OpenBSD 3.6 和 3.7 中的开发进展。这些补丁还处于早期阶段,但已准备好进行测试,请帮助进行测试。
除此之外,pf 并未有太多活动,因为它已经相当稳定。然而,其他工作,如 CARP 和 if_bridge,在 FreeBSD 中对 pf 产生了影响,请参见相关报告。
对 3.7 导入进行 alpha/beta 测试。
使用 if_bridge 进行测试。
链接
联系人:Vinod Kashyap <vkashyap at amcc.com>
一个重新架构的 twa(4) 驱动程序已于 2005 年 4 月 12 日提交到 6-CURRENT。此版本的亮点包括:
驱动程序已重新架构,采用“公共层”(所有 tw_cl* 文件),它将驱动程序中所有与操作系统无关的部分合并到一起。FreeBSD 操作系统特定部分的驱动程序放入“操作系统层”(所有 tw_osl*
文件)。此重新架构旨在实现更好的可维护性、跨操作系统行为的一致性,以及更好的操作系统移植性(新操作系统的驱动程序可以通过仅添加一个特定于操作系统的“操作系统层”,并遵循“公共层编程接口(CLPI)”API 来编写)。如果有兴趣将 3ware 驱动程序移植到其他操作系统,可以联系 ctchu@amcc.com 获取 CLPI 规格的副本。
驱动程序利用多个处理器。它不再需要巨型保护。
驱动程序捆绑了一个新的固件镜像,其中包括在线容量扩展和多逻辑单元支持等新特性。有关 3ware 9.2 版本的更多详细信息,请参阅:http://www.3ware.com/download/Escalade9000Series/9.2/9.2_Release_Notes_Web.pdf。
联系人:Dan Langille <dan@langille.org>
BSDCan 在 2004 年取得了强势的首秀。良好的反馈为我们带来了强大的动力,促使我们为 2005 做好准备。我们得到了非常有趣的 节目 和更高的注册率。从百分比上来看,来自欧洲的参与者比去年更多,他们认为横跨大西洋的旅行是值得的。我们知道他们不会失望。我们将在 BSDCan 2005 见!
会议需要志愿者
链接
http://www.freebsd.org/security/
http://www.freebsd.org/administration.html#t-secteam
联系人:安全官员 <security-officer@FreeBSD.org>
联系人:安全团队 <security-team@FreeBSD.org>
2005 年 1 月,Warner Losh(荣誉安全官员)从 FreeBSD 安全团队辞职,以便将更多时间投入到其他项目中。3 月份,Colin Percival 被任命为第二名副安全官员,与 Dag-Erling Smørgrav 一同担任该职务。目前的安全团队成员已在网站上发布。
截至 2005 年,已发布四个安全公告,涉及 FreeBSD 基本系统中的问题,其中三个是 FreeBSD 特有的问题。安全团队和 Ports 提交者继续更新漏洞与曝光标记语言(VuXML)文档,记录 FreeBSD Ports 中的新漏洞。截至 4 月 17 日,2005 年已添加 127 个条目,FreeBSD VuXML 文件的条目总数达到了 422 条。
过去几个月,VuXML 网站 和 FreshPorts VuXML 集成得到了改进。VuXML 网站进行了重新设计,其中每个软件包现在都有一个单独的网页,列出该软件包的所有已记录漏洞。CVE 信息现在也直接包含在 VuXML 网站上。
最后,2005 年的前几个月也见证了 FreeBSD 4.8 —— 第一个提供“扩展支持”的版本 —— 达到了其指定的生命周期结束。目前受支持的版本为 FreeBSD 4.10、4.11 和 5.3。
联系人:Miljenko Mikuc <miljenko@tel.fer.hr> 联系人:Marko Zec <zec@tel.fer.hr>
IMUNES 是一个基于 FreeBSD 的可扩展的内核级网络拓扑仿真器。在 IMUNES 中,每个虚拟节点运行其网络堆栈状态变量的私有实例,如路由表、接口地址、套接字、ipfw 规则等。几乎所有现有的 FreeBSD 应用程序二进制文件,包括路由协议守护进程如 quagga 或 XORP,都可以在虚拟节点的上下文中无修改地运行,且没有明显的性能损失。通过基于 netgraph 的链路层路径连接虚拟节点,可以构建复杂的网络拓扑。GUI 工具允许简单直观的网络拓扑指定、部署和管理。当前版本的 IMUNES 基于 FreeBSD 4.11-RELEASE,并支持 IPv4。