# FreeBSD 2001 年 9 月状态报告

原文链接：[FreeBSD 2001 年 9 月状态报告](https://www.freebsd.org/status/report-2001-09.html)

## 简介

在 9 月，FreeBSD 项目继续投资于长期项目，包括继续进行细粒度 SMP 实现的工作、协助高度高效线程的内核可调度实体（KSE）支持，以及扩展对现代硬件平台的支持，包括英特尔新的 IA64 架构、UltraSparc 和 PowerPC。此外，还重点关注了发布过程，包括发布说明基础设施的工作、DVD 发布的支持以及二进制更新工具的工作。

由于 9 月的报告推迟发布，11 月的状态报告也将包括 10 月。在 11 月期间，我们期待着 BSDCon 欧洲大会，这是首项在美国大陆以外的此类活动。USENIX 会议论文提交截止日期也在 11 月，建议 FreeBSD 用户和开发者向一般和类 Unix 主题提交论文。更多信息请参见 <https://www.usenix.org>。

## [binup](https://www.freebsd.org/status/report-2001-09.html#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 状态](https://www.freebsd.org/status/report-2001-09.html#Compressed-TCP-state)

联系方式：Jonathan Lemon <<jlemon@FreeBSD.org>>

由于同步缓存代码的提交滞后，该项目的开发进度放缓，因为这部分工作依赖于同步缓存代码。

## [光纤通道支持](https://www.freebsd.org/status/report-2001-09.html#Fibre-Channel-Support)

**链接**：<http://www.feral.com/isp.html>

联系方式：Matthew Jacob <<mjacob@FreeBSD.org>>

2Gb 支持的错误修复和迁移到了 -STABLE 分支。

## [FreeBSD C99/POSIX 合规性项目](https://www.freebsd.org/status/report-2001-09.html#FreeBSD-C99/POSIX-Conformance-Project)

**链接**：<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](https://www.freebsd.org/status/report-2001-09.html#FreeBSD-DVD-generation)

联系方式：Brian Somers <<brian@freebsd-services.com>>

两张光盘的版本已经制作完成，送去压制。这次发布有一些惊喜，将在官方公告中给出（将在 BSDConEurope 上发布）详细信息。

## [FreeBSD Java 项目](https://www.freebsd.org/status/report-2001-09.html#FreeBSD-Java-Project)

**链接**：[官方 FreeBSD Java 项目网站](http://www.freebsd.org/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 项目](https://www.freebsd.org/status/report-2001-09.html#FreeBSD-libh-Project)

**链接**：

联系方式：Alexander Langer <<alex@FreeBSD.org>>

联系方式：Nathan Ahlstrom <<nra@FreeBSD.org>>

构建过程现在会创建四个不同版本的库，其中包括对 TVision、Qt 的支持，或两者，或者都不支持。我已经从现有的 Ports 创建了一些初始包，并且仅使用 libh 的工具安装了这些 libh 包，包括在包数据库中注册所有文件，记录它们的校验和等。对磁盘编辑器的补丁已经提交，包括功能以写入 fdisk 部分的更改，并初步支持磁盘标签编辑器。我们很快就会有一位新的提交者。

## [FreeBSD/sparc64 平台](https://www.freebsd.org/status/report-2001-09.html#FreeBSD/sparc64-port)

联系方式：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 启动脚本](https://www.freebsd.org/status/report-2001-09.html#Improving-FreeBSD-startup-scripts)

**链接**：

[改进 FreeBSD 启动脚本](http://groups.yahoo.com/group/FreeBSD-rc/)

[Luke Mewburn 的论文](http://www.cs.rmit.edu.au/~lukem/bibliography.html)

[NetBSD 初始化与服务控制](http://www.netbsd.org/Documentation/rc/)

联系方式：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 驱动](https://www.freebsd.org/status/report-2001-09.html#Intel-Gigabit-driver)

联系方式：Jonathan Lemon <<jlemon@FreeBSD.org>>

终于把 gx 驱动提交到了源码中。该驱动支持 Intel PRO/1000 卡，包括光纤和铜缆两种变体。驱动支持 VLAN 标签和 TCP/IP 校验和卸载。

## [Intel 千兆以太网](https://www.freebsd.org/status/report-2001-09.html#Intel-Gigabit-Ethernet)

联系方式：Matthew Jacob <<mjacob@FreeBSD.org>>

这个驱动进行了大量的清理，修复了错误并进行了一些性能增强。然而，该驱动可能会很快被 Intel 自己的驱动所替换。

## [jpman 项目](https://www.freebsd.org/status/report-2001-09.html#jpman-project)

链接：<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](https://www.freebsd.org/status/report-2001-09.html#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 个套接字，在其中一个上发送数据，读取另一个后，再按相同方式“响应”。

## [支持多控制台](https://www.freebsd.org/status/report-2001-09.html#Multiple-console-support)

联系方式：Jonathan Lemon <<jlemon@FreeBSD.org>>

目前，单个设备可以在任何时间作为控制台，这要求用户在启动时选择控制台设备。随着即将支持网络控制台，期望支持多个行为相同的控制台设备，并且在内核运行时能够切换控制台。

代码已完成，只需做些最后的打磨以清理一些粗糙的部分。控制台输出可以同时发送到 syscons 和 sio（以及网络），在 ddb 中时，可以从任何输入源获取输入。一款小的控制程序能动态地添加和移除控制台。

## [Netgraph ATM](https://www.freebsd.org/status/report-2001-09.html#Netgraph-ATM)

联系方式：Harti Brandt <<brandt@fokus.gmd.de>>

ATM-Forum LAN 仿真版本 2.0（不支持 QoS）已经实现并测试。ILMI 守护进程已被模块化为一项通用的 mini-SNMP 守护进程、ILMI 模块和尚未完成的 IPOA（IP over ATM）模块。

## [网络控制台](https://www.freebsd.org/status/report-2001-09.html#Network-console)

联系方式：Jonathan Lemon <<jlemon@FreeBSD.org>>

该项目的目标是为 FreeBSD 添加底层网络功能。初步目标是为远程调试提供网络控制台，支持 ddb/gdb。次要目标是利用此代码执行网络崩溃转储。设计假设网卡和驱动程序正常工作，但不依赖于内核的其他部分。

初步开发进展相当迅速，并且已经编写了一款最简单的 TCP/IP 堆栈。目前，可以通过 telnet 连接到处于 `ddb>` 提示符下的机器，并与调试器进行交互。

## [网络设备节点](https://www.freebsd.org/status/report-2001-09.html#Network-device-nodes)

联系方式：Jonathan Lemon <<jlemon@FreeBSD.org>>

现在，网络设备支持以 `/dev/netN` 的形式使用别名，其中 `N` 是接口索引。可以通过 `/boot/device.hints` 中的条目将设备绑定到特定的索引号：

```ini
hint.net.<ifindex>.dev="设备名"
hint.net.<ifindex>.ether="以太网地址"
```

此外，更新了 ifconfig，现在能在配置设备时接受别名名称。

## [网络 SMP 锁定](https://www.freebsd.org/status/report-2001-09.html#Network-SMP-locking)

联系方式：Jonathan Lemon <<jlemon@FreeBSD.org>>

本月进展不大，其他项目占用了大部分时间。然而，审查所有代码和数据结构有个意外的好处：为 inet 地址添加了哈希表。这将显著加快在接口别名众多情况下对接口地址的查找速度。

## [新 Mount(2) API](https://www.freebsd.org/status/report-2001-09.html#New-Mount\(2\)-API)

联系方式：Poul-Henning Kamp <<phk@FreeBSD.org>>

联系方式：Maxime Henrion <<mux@qualys.com>>

我们现在已经取得了一些进展，新版的 nmount(2) 系统调用几近完成。仍有一些工作要做，来让 `kernel_mount()` 正常工作，并将所有文件系统转换为使用这个新的 API 来处理它们的 `VFS_MOUNT()` 函数。

## [将 ppp 移植到 hurd & linux](https://www.freebsd.org/status/report-2001-09.html#Porting-ppp-to-hurd-&-linux)

联系方式：Brian Somers <<brian@freebsd-services.com>>

自上月以来，状态没有变化。已经提交了补丁，以在 Hurd，并在大部分 Linux 下运行 ppp。GPL 版权问题仍待解决。预计在提交 ppp IPv6 支持后会出现许多冲突。

## [PowerPC 平台](https://www.freebsd.org/status/report-2001-09.html#PowerPC-Port)

联系方式：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 支持](https://www.freebsd.org/status/report-2001-09.html#PPP-IPv6-Support)

联系方式：Brian Somers <<brian@freebsd-services.com>>

该软件已经提交到 -current，并且似乎功能是正常的。待解决的问题一处理 IPV6CP 事件（链接启用和禁用脚本）以及分配站点本地和全局地址（目前，`iface add` 是唯一实际使用链路的方式）。在 -STABLE 中有个 bug（运行尚未 MFC 的 ppp 代码），即路由条目会在一段时间后消失（大约 12 到 24 小时）。目前没有更多详细信息。

## [PRFW](https://www.freebsd.org/status/report-2001-09.html#PRFW)

链接：<http://www.freesoftware.fsf.org/jailuser/>

联系方式：Evan Sarmiento <<evms@csa.bu.edu>>

PRFW 为 FreeBSD 内核提供钩子，允许用户在系统调用和各种内核函数中插入自己的检查。PRFW 即将发布 0.5 版本，其中将包括许多结构性更改，如更快的每进程钩子、内核函数钩子，以及一种新的添加钩子的方法，使用户可以通过字符串引用钩子。

## [RELNOTESng](https://www.freebsd.org/status/report-2001-09.html#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 状态报告](https://www.freebsd.org/status/report-2001-09.html#SMPng-Status-Report)

链接：<http://www.freebsd.org/~jasone/smp/>

联系方式：John Baldwin <<jhb@FreeBSD.org>>

联系方式：<<smp@FreeBSD.org>>

本月在进程锁定方面取得了一些进展。此外，还定义了一个新的 `LOCK_DEBUG` 宏，来提高某些锁定基础设施的效率。现在，内核仅在需要时包含调用互斥锁（mutex）、信号量锁（sx）或信号量操作（semaphore）所在文件的文件名。如果启用了任何调试选项，互斥锁操作也不再内联。ucred API 也进行了重构，可更好地支持锁定。一个小组还开始调查 tty 子系统，设计并可能实现一个锁定策略。

## [实现 FreeBSD 的 SYN 缓存](https://www.freebsd.org/status/report-2001-09.html#SYN-cache-implementation-for-FreeBSD)

联系方式：Jonathan Lemon <<jlemon@FreeBSD.org>>

目前没有新的状态报告，代码仍在等待提交。很可能将对这段代码进行增补，包含 SYN cookies 作为进一步的回退机制。

## [TIRPC](https://www.freebsd.org/status/report-2001-09.html#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`。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.bsdcn.org/status/2001/9.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
