在 9 月,FreeBSD 项目继续投资于长期项目,包括继续进行细粒度 SMP 实现的工作、支持高度高效线程的内核可调度实体(KSE)支持,以及扩展对现代硬件平台的支持,包括英特尔新的 IA64 架构、UltraSparc 和 PowerPC。此外,还重点关注了发布过程,包括发布说明基础设施的工作、DVD 发布的支持以及二进制更新工具的工作。
由于 9 月报告推迟了发布,11 月的状态报告也将包括 10 月。在 11 月期间,我们期待着欧洲 BSDCon,这是首个美国大陆以外的此类活动。USENIX 会议论文提交截止日期也在 11 月,建议 FreeBSD 用户和开发者向一般和 FREENIX 主题提交论文。更多信息请参见www.usenix.org。
链接: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
。
联系方式:Jonathan Lemon <jlemon@FreeBSD.org>
由于同步缓存代码的提交滞后,该项目的开发进度放缓,因为这部分工作依赖于同步缓存代码。
链接:http://www.feral.com/isp.html
联系方式:Matthew Jacob <mjacob@FreeBSD.org>
2Gb 支持的错误修复和迁移到 -STABLE 分支。
链接: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”。
联系方式:Brian Somers <brian@freebsd-services.com>
两张光盘的版本已经制作完成,送去压制。这次发布有一些惊喜,详细信息将在官方公告中给出(将在 BSDConEurope 上发布)。
联系方式: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 项目。
链接:
联系方式:Alexander Langer <alex@FreeBSD.org>
联系方式:Nathan Ahlstrom <nra@FreeBSD.org>
构建过程现在会创建四个不同版本的库,其中包括对 TVision、Qt 的支持,或两者,或者都不支持。我已经从现有的 Ports 创建了一些初始包,并且仅使用 libh 的工具安装了这些 libh 包,包括在包数据库中注册所有文件,记录它们的校验和等。对磁盘编辑器的补丁已经提交,包括功能以写入 fdisk 部分的更改,并初步支持磁盘标签编辑器。我们很快就会有一个新的提交者。
联系方式:Jake Burkholder <jake@FreeBSD.org>
联系方式:Thomas Moestl <tmm@FreeBSD.org>
我很高兴地宣布,至 10 月 19 日星期五凌晨 1 点,sparc64 平台已成功启动到单用户模式。从基本系统构建并验证的几个二进制文件已正常工作。许多这方面的工作仍在审查中,但会尽快集成到 CVS 树中。EBus 支持已从 NetBSD 移植,ISA 支持已编写。PCI 主桥代码已稳定,busdma 现在也能正常工作。sio 驱动已添加 EBus 支持,ATA 驱动已修改,使其能够在大端系统上工作,并使用 busdma API。通过这些更改,现在可以从 sparc64 上的 ATA 磁盘成功挂载根文件系统,即使是在 DMA 模式下。gem 驱动程序支持 Sun GEM 和 ERI 以及 Apple GMAC 和 GMAC2 以太网适配器,已从 NetBSD 移植,但尚未经过充分的测试。
链接:
联系方式:Doug Barton <DougB@FreeBSD.org>
联系方式:Gordon Tetlow <gordont@gnf.org>
该小组讨论 FreeBSD 的启动脚本,主要是 /etc/rc*
下的脚本。主要关注点是改进并引入 NetBSD 在这一领域的卓越工作。
好了,伙计们,我昨晚终于动起来,整理了迁移到新的 rc.d 初始化脚本的路线图,这些脚本很久以前就从 NetBSD 导入了,但一直放在源码中。
M1(包含补丁)
设置基础设施
使 rcorder
可以编译
将 rc.subr
集成到发行版中(以及 mergemaster)
将 rcorder
集成到世界中
在 rc.conf
中添加切换开关,切换 rc_ng
和当前的启动脚本
M2
使 FreeBSD 使用新的启动脚本启动
重写 /etc/rc.d
脚本,以便与 FreeBSD 配合使用
M3
向 rc.subr
中添加一些特定于 FreeBSD 的支持
M4
向基础设施中添加真正的依赖关系检查,以便启动 nfsd 时启动 mountd 和 rpcbind
向 rc.subr
中添加支持
在 rc.d
脚本中添加依赖关系
希望有几个人能看看这个,然后如果没有太多反对意见,我会提交一个 PR。我预计 M2 会遇到不少问题,但嘿,我已经从清洁工那拿回了我的光亮的石棉外套。
联系方式:Jonathan Lemon <jlemon@FreeBSD.org>
gx 驱动终于被提交到了源码中。该驱动支持 Intel PRO/1000 卡,包括光纤和铜缆两种变体。驱动支持 VLAN 标签和 TCP/IP 校验和卸载。
联系方式:Matthew Jacob <mjacob@FreeBSD.org>
这个驱动进行了大量的清理,修复了错误并进行了一些性能增强。然而,这个驱动可能会很快被 Intel 自己的驱动替换。
链接:http://www.jp.freebsd.org/man-jp/
联系方式:<man-jp@jp.FreeBSD.org>
我们已经完成了 [125678] 手册页的更新,这些更新基于 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 部分的更新也在进行中。
链接:
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 中时,可以从任何输入源获取输入。一个小的控制程序允许动态地添加和移除控制台。
联系方式: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 已更新,现在可以在配置设备时接受别名名称。
联系方式:Jonathan Lemon <jlemon@FreeBSD.org>
本月进展不大,其他项目占用了大部分时间。然而,审查所有代码和数据结构有一个意外的好处:为 inet 地址添加了哈希表。这将显著加速在存在大量接口别名时,接口地址的查找速度。
联系方式:Poul-Henning Kamp <phk@FreeBSD.org>
联系方式:Maxime Henrion <mux@qualys.com>
我们现在已经取得了一些进展,几乎完成了新版的 nmount(2) 系统调用。仍然需要做一些工作,以使 kernel_mount() 正常工作,并将所有文件系统转换为使用这个新的 API 来处理它们的 VFS_MOUNT() 函数。
联系方式:Brian Somers <brian@freebsd-services.com>
自上月以来,状态没有变化。已经提交了补丁,以使 ppp 在 HURD 下运行,并大部分在 Linux 下运行。有需要解决的 GPL 版权问题。预计在 ppp 提交 IPv6 支持后会出现许多冲突。
联系方式:Benno Rice <benno@FreeBSD.org>
在本月的 PowerPC 移植工作中,取得了一些重要进展。Mark Peek 成功地在 FreeBSD 上交叉编译了 FreeBSD/PowerPC 内核,并使其在 PSIM 模拟器(现在在 /usr/ports/emulators/psim-freebsd 中)下启动。我也成功地使 FreeBSD 引导加载程序能够加载和执行使用 Apple Macintosh 硬件上的 OpenFirmware 启动的内核。Mark 现在正在完成一些启动代码和 pmap 代码,而我则利用模拟器来处理一些中断和设备问题。
联系方式:Brian Somers <brian@freebsd-services.com>
该软件已经提交到 -current,并且似乎是功能正常的。未解决的问题包括处理 IPV6CP 事件(链接启用和禁用脚本)以及分配站点本地和全局地址(目前,iface add
是唯一实际使用链路的方式)。在 -STABLE 中有个 bug(运行尚未 MFC 的 ppp 代码),即路由条目会在一段时间后消失(大约 12 到 24 小时)。目前没有更多详细信息。
链接:http://www.freesoftware.fsf.org/jailuser/
联系方式:Evan Sarmiento <evms@csa.bu.edu>
PRFW 为 FreeBSD 内核提供钩子,允许用户在系统调用和各种内核函数中插入自己的检查。PRFW 即将发布 0.5 版本,其中将包括许多结构性更改,如更快的每进程钩子、内核函数钩子,以及一种新的添加钩子的方法,使用户可以通过字符串引用钩子。
链接: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 经验不是必需的,但熟悉上述硬件会非常有帮助。
链接:http://www.freebsd.org/~jasone/smp/
联系方式:John Baldwin <jhb@FreeBSD.org>
联系方式:<smp@FreeBSD.org>
本月在进程锁定方面取得了一些进展。此外,还定义了一个新的 LOCK_DEBUG 宏,以提高某些锁定基础设施的效率。现在,内核仅在需要时包含调用互斥锁(mutex)、信号量锁(sx)或信号量操作(semaphore)所在文件的文件名。如果启用了任何调试选项,互斥锁操作也不再内联。ucred API 也进行了重构,以便更好地支持锁定。一个小组还开始调查 tty 子系统,以设计并可能实现一个锁定策略。
联系方式:Jonathan Lemon <jlemon@FreeBSD.org>
目前没有新的状态报告,代码仍在等待提交。很可能这段代码将扩展,包含 syn cookies 作为进一步的回退机制。
链接: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
,可以在主页上找到。