FreeBSD 2001 年 9 月状态报告
最后作者:FreeBSD 项目
引言
在 9 月,FreeBSD 项目继续投资于长期项目,包括继续进行细粒度 SMP 实现的工作、对内核可调度实体(KSE)的支持,以支持高效线程,以及扩展对现代硬件平台的支持,包括 Intel 新的 IA64 架构、UltraSparc 和 PowerPC。此外,还重点关注了发布过程,包括发布说明基础设施的工作、DVD 发布的支持以及二进制更新工具的工作。
由于 9 月的报告推迟发布,11 月的状态报告也将包括 10 月。在 11 月期间,我们期待着 BSDCon 欧洲大会,这是首个在美国本土以外举办的此类活动。USENIX 会议论文提交截止日期也在 11 月,建议 FreeBSD 用户和开发者向 general 和 FREENIX 主题提交论文。更多信息请参见 https://www.usenix.org。
binup
链接:http://www.freebsd.org/projects/updater.html
联系方式:Eric Melville <eric@FreeBSD.org>
联系方式:Murray Stokely <murray@FreeBSD.org>
该项目有邮件列表:freebsd-binup@FreeBSD.org,并且源代码树已移入 FreeBSD CVS 仓库的目录 projects/。当前的工作重点是扩展 FreeBSD 的软件包框架,客户端库应该在年底之前重写并完成。
待办:将 projects/ 目录层次结构做成 cvsup 分发并添加到 cvs-all 中。然后更新 distrib.self。
压缩 TCP 状态
联系方式:Jonathan Lemon <jlemon@FreeBSD.org>
由于同步缓存代码的提交滞后,该项目的开发进度放缓,因为这部分工作依赖于该代码。
光纤通道支持
链接:http://www.feral.com/isp.html
联系方式:Matthew Jacob <mjacob@FreeBSD.org>
2Gb 支持的错误修复,并迁移到 -STABLE 分支。
FreeBSD C99/POSIX 合规性项目
链接:http://people.freebsd.org/~mike/c99/
联系方式:Mike Barcroft <mike@FreeBSD.org>
联系方式:FreeBSD-Standards 邮件列表 <freebsd-standards@bostonradio.org>
FreeBSD C99/POSIX 合规性项目旨在实现 C99 标准和最新 1003.1-200x POSIX 草案(目前是草案 7)中的所有要求。在无法遵循标准的某些方面时,将把这些方面记录在手册 c99(7) 或 posix(7) 中。该项目的目标之一是实现回归测试,以确保尽可能的正确性。
已开发并即将提交的补丁实现了头文件 <stdint.h> 和 <inttypes.h> ,以及对 printf(3) 的修改。这些改动能让我们使用 C99 引入的一些新类型,如 intmax_t,以及 printf(3) 格式说明符“%j”。
生成 FreeBSD DVD
联系方式:Brian Somers <brian@freebsd-services.com>
两张光盘的版本已经制作完成,送去压制。这次发布有一些惊喜,详细信息将在官方公告中给出(在 BSDConEurope 上)。
FreeBSD Java 项目
联系方式:Greg Lewis <glewis@eyesbeyond.com>
本月,项目在 JDK 1.3.1 开发方面取得了进展,发布了另外两个补丁集。团队对于最新补丁集的稳定性有相当信心,特别是在默认的“绿色”线程子系统下使用核心 JDK 1.3.1 工具和类。主要得益于 Fuyuhiko Maruyama 的辛勤工作,使得代码得以稳定和修复。Bill Huey 也在推进他关于“本地”线程子系统的工作,尽管该子系统尚未达到“绿色”线程的稳定性。最新补丁集的另一个(或许是最重要的)亮点是 Scott Bartram 和 Alistair Crooks(后者因 NetBSD 软件包而知名)整合了 NetBSD 的支持。希望 OpenBSD 的支持也会随之而来,使其真正成为一个统一的 BSD Java 项目。
FreeBSD libh 项目
链接:http://www.freebsd.org/projects/libh.html
联系方式:Alexander Langer <alex@FreeBSD.org>
联系方式:Nathan Ahlstrom <nra@FreeBSD.org>
构建过程现在会创建四个不同版本的库,其中包括对 TVision、Qt 的支持,或两者,或者都不支持。我已经从现有的 Port 创建了一些初始软件包,并且仅使用 libh 的工具安装了这些 libh 软件包,包括在软件包数据库中注册所有文件,记录它们的校验和等。对磁盘编辑器的补丁已经提交,包括写入 fdisk 部分更改的功能,并初步支持磁盘标签编辑器。我们很快就会有一位新的提交者。
FreeBSD/sparc64 平台
联系方式:Jake Burkholder <jake@FreeBSD.org>
联系方式:Thomas Moestl <tmm@FreeBSD.org>
我很高兴地宣布,自 10 月 19 日星期五凌晨 1 点起,sparc64 平台已成功启动到单用户模式。基本系统的几个二进制文件已被构建并验证可正常工作。许多这方面的工作仍在审查中,但会尽快集成到 CVS 树中。从 NetBSD 移植了 EBus 支持,编写了 ISA 支持。PCI 主桥代码已稳定,busdma 现在也能正常工作。sio 驱动程序添加了 EBus 支持,修改了 ATA 驱动程序,使其能够在大端系统上工作,并使用 busdma API。通过这些更改,现在可以从 sparc64 上的 ATA 磁盘成功挂载根文件系统,即使是在 DMA 模式下。从 NetBSD 移植的 gem 驱动程序支持 Sun GEM 和 ERI 以及 Apple GMAC 和 GMAC2 以太网适配器,但尚未经过充分的测试。
改进 FreeBSD 启动脚本
链接:
联系方式:Doug Barton <DougB@FreeBSD.org>
联系方式:Gordon Tetlow <gordont@gnf.org>
该小组讨论 FreeBSD 的启动脚本,主要是 /etc/rc* 下的脚本。主要关注点是改进并引入 NetBSD 在这一领域的卓越工作。
好了,伙计们,我昨晚终于动起来,整理了迁移到新的 rc.d 初始化脚本的路线图,这些脚本很久以前就从 NetBSD 导入了,但一直放在源代码树中。
里程碑 1(包含补丁)
设置基础设施
使 rcorder 可以编译
将
rc.subr集成到发行版中(以及 mergemaster)将 rcorder 集成到世界中
在
rc.conf中添加切换开关,切换rc_ng和当前的启动脚本
里程碑 2
使 FreeBSD 使用新的启动脚本启动
重写 /etc/rc.d 脚本,以便与 FreeBSD 配合使用
里程碑 3
向
rc.subr中添加一些特定于 FreeBSD 的支持
里程碑 4
向基础设施中添加真正的依赖关系检查,以便启动 nfsd 时启动 mountd 和 rpcbind
向
rc.subr中添加支持在
rc.d脚本中添加依赖关系
希望有几个人能看看这个,然后如果没有太多反对意见,我将提交一个 PR。我预计里程碑 2 会引发不少争论,但嘿,我已经从清洁工那拿回了我那光亮的石棉衣。
Intel Gigabit 驱动
联系方式:Jonathan Lemon <jlemon@FreeBSD.org>
终于把 gx 驱动程序提交到了源代码树中。该驱动程序支持 Intel PRO/1000 卡,包括光纤和铜缆两种变体。驱动程序支持 VLAN 标签和 TCP/IP 校验和卸载。
Intel 千兆以太网
联系方式:Matthew Jacob <mjacob@FreeBSD.org>
这个驱动程序进行了大量的清理,修复了错误并进行了一些性能增强。然而,该驱动程序可能很快会被移除,并由 Intel 自己的驱动程序替换。
jpman 项目
链接:http://www.jp.freebsd.org/man-jp/
联系方式:<man-jp@jp.FreeBSD.org>
我们已经完成了手册页 1、2、5、6、7、8 的更新,这些更新基于 4.4-RELEASE,更新工作在 4.4-RELEASE 发布一周后完成。为了完成此次更新,OKAZAKI Tetsurou 已经将 Ex/Rv 宏支持导入到 ja-groff-1.17.2_1 中。SUZUKI Koichi 负责了大部分日文手册页的 Ex/Rv 更改。他还发现了这些宏在某些原始手册页中的使用问题,并提交了 PR。对于 4.4-RELEASE 之后的版本,我们的目标是 4.5-RELEASE。第 3 部分的更新也在进行中。
KSE
链接:
http://www.freebsd.org/~jasone/kse/
http://www.freebsd.org/~julian
联系方式:<julian@FreeBSD.org>
上个月,除了对 8 月份的大规模提交进行整理外,其他进展不大。主要是因为我在工作中的工作量突增,以及需要把时间花在其他地方。然而,设计工作还是在进行中。API 已经逐渐稳定下来,几个人正在阅读已经完成的部分,以便能在下一个阶段提供帮助。
里程碑 3 将实现每个进程生成和移除多个线程/KSE 的能力。里程碑 3 不要求这样做是安全的(尤其是在 SMP 系统中),即锁定问题将不会完全解决,所以虽然可以进行一些测试,但在此模式下无法承载任何负载。
这将需要为新结构创建分配器和析构函数,创建系统调用,生成准确的用户态 API 文档,编写 upcall 启动代码,制作一个用户态测试程序(不是完整的线程调度器),并以向后兼容的方式解决一些显而易见的不兼容问题(例如调度器)。(即,如果系统中没有多线程进程,它的行为应与当前一样,且同样可靠)。
我们确定是否达到里程碑 3 的标准是:在一个无负载的系统上,简单的进程能够可靠地执行一系列阻塞系统调用。例如:打开 2 个套接字,在其中一个上发送数据,读取另一个后,再按相同方式‘响应’。
支持多控制台
联系方式:Jonathan Lemon <jlemon@FreeBSD.org>
目前,单个设备可以在任何时间作为控制台,这要求用户在启动时选择控制台设备。随着即将支持网络控制台,期望支持多个行为相同的控制台设备,并且在内核运行时能够切换控制台。
代码已完成,只需做些最后的打磨以清理一些粗糙的部分。控制台输出可以同时发送到 syscons 和 sio(以及网络),在 ddb 中时,可以从任何输入源获取输入。一个小的控制程序能动态地添加和移除控制台。
Netgraph ATM
联系方式:Harti Brandt <brandt@fokus.gmd.de>
ATM-Forum LAN 仿真版本 2.0(不支持 QoS)已经实现并测试。ILMI 守护进程已被模块化为一个通用的 mini-SNMP 守护进程、ILMI 模块和尚未完成的 IPOA(IP over ATM)模块。
网络控制台
联系方式:Jonathan Lemon <jlemon@FreeBSD.org>
该项目的目标是为 FreeBSD 添加底层网络功能。初步目标是为远程调试提供网络控制台,支持 ddb 或 gdb。次要目标是利用此代码执行网络崩溃转储。设计假设网卡和驱动程序正常工作,但不依赖于内核的其他部分。
初步开发进展相当迅速,并且已经编写了一个最精简的 TCP/IP 堆栈。目前,可以通过 telnet 连接到处于 ddb> 提示符下的机器,并与调试器进行交互。
网络设备节点
联系方式:Jonathan Lemon <jlemon@FreeBSD.org>
现在,网络设备支持以 /dev/netN 的形式使用别名,其中 N 是接口索引。可以通过 /boot/device.hints 中的条目将设备绑定到特定的索引号:
此外,更新了 ifconfig,现在能在配置设备时接受别名。
网络 SMP 锁定
联系方式:Jonathan Lemon <jlemon@FreeBSD.org>
本月进展不大,其他项目占用了大部分时间。然而,审查所有代码和数据结构有个意外的好处:为 inet 地址添加了哈希表。这将显著加快在接口别名众多的情况下对接口地址的查找速度。
新 Mount(2) API
联系方式:Poul-Henning Kamp <phk@FreeBSD.org>
联系方式:Maxime Henrion <mux@qualys.com>
我们现在已经取得了一些进展,新版的 nmount(2) 系统调用几近完成。仍有一些工作要做,来让 kernel_mount() 正常工作,并将所有文件系统转换为使用这个新的 API 来处理它们的 VFS_MOUNT() 函数。
将 ppp 移植到 hurd & linux
联系方式:Brian Somers <brian@freebsd-services.com>
自上月以来,状态没有变化。已经提交了补丁,以使 ppp 能在 Hurd 下运行,并在大部分 Linux 下运行。GPL 版权问题仍待解决。预计在提交 ppp IPv6 支持后会出现许多冲突。
PowerPC 平台
联系方式:Benno Rice <benno@FreeBSD.org>
在本月的 PowerPC 移植工作中,取得了一些重要进展。Mark Peek 成功地在 FreeBSD 上交叉编译了 FreeBSD/PowerPC 内核,并使其在 PSIM 模拟器(现在在 /usr/ports/emulators/psim-freebsd)下启动。我也成功地使 FreeBSD 引导加载程序能够使用 Apple Macintosh 硬件上的 OpenFirmware 加载和执行内核。Mark 现在正在完成一些启动和 pmap 代码,而我则利用模拟器来处理一些中断和设备问题。
PPP IPv6 支持
联系方式:Brian Somers <brian@freebsd-services.com>
该软件已经提交到 -current,并且似乎功能是正常的。待解决的问题包括处理 IPV6CP 事件(linkup 和 linkdown 脚本)以及分配站点本地和全局地址(目前,iface add 是唯一实际使用链路的方式)。在 -STABLE 中有个 bug(运行尚未 MFC 的 ppp 代码),即路由条目会在一段时间后消失(大约 12 到 24 小时)。目前没有更多详细信息。
PRFW
链接:http://www.freesoftware.fsf.org/jailuser/
联系方式:Evan Sarmiento <evms@csa.bu.edu>
PRFW 为 FreeBSD 内核提供钩子,允许用户在系统调用和各种内核函数中插入自己的检查。PRFW 即将发布 0.5 版本,其中将包括许多结构性更改,如更快的每进程钩子、内核函数钩子,以及一种新的添加钩子的方法,使用户可以通过字符串引用钩子。
RELNOTESng
链接:http://people.freebsd.org/~bmah/relnotes/
联系方式:Bruce A. Mah <bmah@FreeBSD.org>
FreeBSD 4.4-RELEASE 是 FreeBSD 发布的第一版新的发布文档格式。我们为这些文档创建了英文和日文版本。现在可以在网站上找到 -CURRENT 和 4-STABLE 发布文档的定期构建快照,但它们需要一些 HTML 基础设施来使其更易于查看。我打算继续更新我的快照站点,至少暂时如此。
寻求帮助:需要在 Alpha 架构、USB 设备和 PCCARD 设备领域对硬件兼容性列表进行更新。我正在寻找志愿者来帮助;感兴趣的人员请通过上述电子邮件地址与我联系。DocBook 经验不是必需的,但熟悉上述硬件会非常有帮助。
SMPng 状态报告
链接:http://www.freebsd.org/~jasone/smp/
联系方式:John Baldwin <jhb@FreeBSD.org>
联系方式:<smp@FreeBSD.org>
本月在进程锁定方面取得了一些进展。此外,还定义了一个新的 LOCK_DEBUG 宏,来提高某些锁定基础设施的效率。现在,内核仅在需要时包含调用互斥锁(mutex)、共享/独占锁(sx)或信号量锁(semaphore)操作所在文件的文件名。如果启用了任何调试选项,互斥锁操作也不再内联。ucred API 也进行了重构,可更好地支持锁定。一个小组还开始研究 tty 子系统,设计并可能实现一个锁定策略。
实现 FreeBSD 的 SYN 缓存
联系方式:Jonathan Lemon <jlemon@FreeBSD.org>
目前没有新的状态报告,代码仍在等待提交。很可能将对这段代码进行增补,包含 SYN cookies 作为进一步的回退机制。
TIRPC
链接:http://www.attic.ch/tirpc.html
联系方式:Martin Blapp <mb@imp.ch>
如你所知,已于 2001 年 3 月提交 TIRPC 版本 2.3,同时进行了许多用户空间的更改。Alfred Perlstein 和 Ian Dowse 在移植工作中提供了很大帮助,如果我在理解代码时遇到问题,他们也给了我很多支持。
大多数 bug 已经修复,剩余需要修复的一些领域包括安全 RPC(keyserv)和 Unix 域支持。我已经有了这些领域的补丁。Ian Dowse 修复了 rpcbind 二进制文件中的许多未解决的 bug。谢谢你,Ian!
接下来的计划是逐步迁移到 TIRPC 2.8 版本,该版本在服务器端和客户端都支持线程安全。我已在我的网站提供了第一个补丁。TIRPC 2.8 的许可证是“Sun 标准许可证 1.0 版”,我们需要将一些许可证行和许可证本身添加到所有修改过的文件中。
可以在主页上找到示例 timed_clnt_create.diff。
最后更新于