# FreeBSD 2001 年 6 月状态报告

* 原文链接：[FreeBSD 2001 年 6 月状态报告](https://www.freebsd.org/status/report-2001-06.html)
* 作者：FreeBSD 项目

## 引言

集中化的设计和实现方式是 FreeBSD 开发模式的一个优点，在一个中央存储库中维护操作系统的代码，且于统一管理的邮件列表中进行讨论。这种模式使得系统各组件的开发者之间能够高度协作，并能在整个系统范围内执行统一的政策，从架构设计到代码风格等方面进行规范。然而，随着 FreeBSD 开发者社区的不断壮大，邮件列表的交流频率和代码库的修改速度也在增加，使得哪怕是最为投入的开发者，也难以全面掌握源代码中的所有工作进展。

FreeBSD 每月开发状态报告旨在解决这一问题，为开发者提供一个渠道，让他们能够向更广阔的社区介绍自己在 FreeBSD 相关的开发工作——无论这些工作是在中央代码库内部还是外部进行的。这是第一期报告，因此也是一次实验。每个项目和子项目都会包含一段摘要，说明自上次报告以来的进展（在本期中，仅涉及最近的进展，因为之前没有类似的总结）。

可以部分或全文转载本报告，但须明确注明来源并给予适当的署名。

## 后续刊期

如果该报告获得了积极反馈，并且后续有足够的投稿内容可继续支撑发布，那么目标是每月发布一次开发状态报告。因此，下一期的投稿截止日期为 2001 年 7 月 31 日，计划在 8 月的第一周发布。这样不仅能使状态报告与日历时间保持同步，还能为下一个截止日期预留一个多月的时间，其中将包括一些重要的活动，如在马萨诸塞州波士顿举行的 USENIX 年度技术会议。投稿请发送至：

> 为了提供最及时的状态报告，许多投稿者可能想等到 7 月的最后一周；但在此之前，任何时间的投稿均可接受。
>
> *—— Robert Watson* [*rwatson@FreeBSD.org*](mailto:rwatson@FreeBSD.org)

## [二进制更新程序项目](https://www.freebsd.org/status/report-2001-06.html#Binary-Updater-Project)

**相关链接**：<http://people.freebsd.org/~murray/updater.html>

联系人：Eric Melville <<eric@FreeBSD.org>>

联系人：Murray Stokely <<murray@FreeBSD.org>>

FreeBSD 二进制更新程序项目旨在提供一种安全的机制，用于分发 FreeBSD 的二进制更新。该项目是 Open Packages 和 libh 项目的补充，同这些项目的重叠部分很少。该系统采用客户端/服务器机制，能让客户端通过网络安装所有已知的 FreeBSD“配置文件”/版本。其中，特定的配置文件可能包含特定的软件集、附加软件包及相关的配置操作，以使其更适用于特定环境（例如 FreeBSD 4.3 安全 Web 服务器配置文件）。

目前，该工具可以用于安装 FreeBSD 系统和执行最基本的升级操作，但仍缺少许多功能。尤其是客户端仍处于早期开发阶段，需要大量工作。如果你有兴趣贡献代码，请联系我们：<updater@osd.bsdi.com>。

## [重写/优化 CVSROOT/scripts](https://www.freebsd.org/status/report-2001-06.html#CVSROOT-script-rewrite/tidy)

联系人：Josef Karthauser <<joe@FreeBSD.org>>

我正在重写 CVSROOT/scripts（**译者注：类似 Github 的 `.github` 目录**），来使其更加清晰和可配置。许多其他项目也使用这些脚本，因此让它们在不同环境中更易于使用是有意义的。

当前状态：正在开发。目前已经增加了一个配置文件，但并非所有脚本都已使用。

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

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

正在推进 DEVFS 的真正克隆设备实现。Brian Somers 和 Poul-Henning Kamp 正在努力使 `if_tun` 成为系统中的第一款真正的克隆驱动程序。接下来将处理驱动程序 pty 和驱动程序 bpf。

从 7 月 1 日起，DEVFS 将成为 -current 分支的标准配置。

## [驱动 digi](https://www.freebsd.org/status/report-2001-06.html#digi-driver)

联系人：Brian Somers <<brian@FreeBSD.org>>

新增驱动程序 digi。由 John Prince <johnp@knight-trosoft.com> 完成初步工作，但由我完成所有模块化相关的工作，同时也对 Xe 和 Xi 设备（类似 dgb）添加了初步支持。我目前正在等待 Joerg@（只是象征性收点钱）寄来的 Xe 设备，来让这部分功能正常运行。

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

**相关链接**：<http://phantom.cris.net/freebsd/projects/viewproj.php?p_id=15>

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

Ben Smithurst 编写了个叫“diskcheckd”的守护进程，该进程可以在设定的时间内读取磁盘上的所有扇区。随着磁盘容量的不断增加，在发生致命故障之前未发现磁盘读取错误的可能性也在增加。希望该守护进程能促使磁盘固件在坏扇区变得不可读之前重新分配它们。目前，该代码已提交至 5.0-CURRENT 分支。

## [驱动 if\_fxp](https://www.freebsd.org/status/report-2001-06.html#if_fxp-driver)

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

在过去一个月（5 月至 6 月），新的 fxp 驱动程序已引入到了 -stable 分支。该新驱动程序采用了通用的 MII 代码，因此可以轻松添加对新 PHY 的支持。此外，还新增了对 Intel 82562 芯片的支持，更新了驱动程序，增加了 VLAN 支持，同时提供了针对 Intel 815 主板相关 Bug 的解决方案。

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

联系人：Greg Lewis <<glewis@eyesbeyond.com>>

在过去的一个月里，FreeBSD Java 项目仍在幕后推进工作。在技术方面，在 Bill Huey（来自风河）的帮助下，JDK 1.3.1 的移植取得了进展；在法律方面，Nate Williams 正在与 Sun 持续谈判，以达成一项双方都能接受的协议，从而发布二进制的 Java 2 SDK。与此同时，JDK 1.2.2 的移植工作也有所进展，预计很快会发布新的补丁集，其中包括 JPDA 和 NetBSD 支持（后者由 Scott Bartram 提供）。

## [移植内核图形接口（KGI）](https://www.freebsd.org/status/report-2001-06.html#Kernel-Graphics-Interface-port)

**相关链接**：<http://kgi.sourceforge.net/>

联系人：Nicolas Souchu <<nsouch@fr.alcove.com>>

内核图形接口（KGI）项目已进行了多年，旨在为 Linux 提供图形驱动程序框架，并从其他团队（如 UDI 项目等）获取意见。目前，KGI 核心实现已相当稳定，驱动程序的编写模型亦基本成型。当前的工作重点是将 KGI 适配 FreeBSD 的 Newbus 体系，并将其模块化（kld），作为 FreeBSD 图形子系统后续重构的一部分。KGI 将成为不愿采用 XFree86 用户空间图形适配器模型的显卡厂商的一项替代方案，同时也能为其他图形解决方案提供加速支持。

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

**相关链接**：<http://people.freebsd.org/~alex/libh/>

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

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

libh 项目（**译者注：libh 项目从未实现过，亦于** [**2002 年放弃**](https://www.freshports.org/misc/libh)）是下一代 sysinstall（**译者注：`sysinstall` 后被 `bsdinstall` 替代**）。它采用 C++ 编写，使用 QT 作为图形前端，tvision 作为终端支持，通过嵌入式 tcl 解释器实现可脚本化的菜单。近期，libh 的功能大幅增强，包括一款新的 disklabel 编辑器。目前的工作重点是编写光盘、FTP 等安装方式的安装脚本，以及开发一款功能完善的独立磁盘分区和标签编辑器。同时，GUI API 进行了扩展，并修复了许多 Bug。此外，社区对国际化（i18n）工作的兴趣似乎有所增加。

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

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

Maxime Henrion 正在开发新的、更具扩展性的 `mount(2)` 系统调用，主要目的是突破 `mountoptions` 仅支持 32 位的限制，其次是实现内核内部挂载文件系统的能力。

## [OLDCARD PCCard 实现](https://www.freebsd.org/status/report-2001-06.html#OLDCARD-pccard-implementation)

联系人：Warner Losh <<imp@FreeBSD.org>>

在过去两个月里，OLDCARD PCCard 代码经历了大幅重构，几乎彻底翻新。添加了许多新的 PCI CardBus 桥，改进了电源管理。已基本完成对 PCI CardBus 桥的支持，并计划在 6 月初提交到代码库。这可能是 OLDCARD 代码的最后一次重大更新，在 PCI 卡支持完成后，工作将转向对 NEWCARD 的完善。

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

联系人：Benno Rice <<benno@FreeBSD.org>>

PowerPC 平台进展顺利。`pmap.c` 代码在经过一系列修正后，目前一切看起来运行正常。之前遇到的主要问题是 FreeBSD 将 `vm_page_t` 传递给了一项从 NetBSD 派生的函数，而该函数期望 `vm_offset_t` 类型的参数。此外，在调试原子操作代码后，目前 VM 似乎已经初始化，但系统在 `sys/kern/kern_malloc.c:kmeminit()` 处发生了宕机。工作仍在继续 =)。

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

联系人：Brian Somers <<brian@FreeBSD.org>>

正在为瑞士 Monzoon 公司的 Andre Opperman 开发完整的 MPPE（Microsoft Point-to-Point Encryption，微软点对点加密）支持。该功能已完成，并计划最终合并到 `-current`，但具体时间尚未确定。

## [问题报告（PR）](https://www.freebsd.org/status/report-2001-06.html#Problem-Reports)

**相关链接**：<http://phk.freebsd.dk/Gnats/>

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

Poul-Henning Kamp 发起了一项清理 GNATS PR（问题报告）数据库的行动，以便从中筛选出有价值的报告。目前进展良好，但仍有大量工作需要完成。如果你有时间，请帮忙处理这些问题。请记住：每份未处理的问题报告（PR），都可能意味着一位沮丧的贡献者/用户。

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

联系人：Dag-Erling Smorgrav <<des@FreeBSD.org>>

`pseudofs` 是用于伪文件系统（如 `procfs` 和 `linprocfs`）的框架。其目标有两个：

* 消除 `procfs` 和 `linprocfs` 之间（以及它们内部）的代码重复。
* 将 `procfs` 和 `linprocfs` 从 VFS 系统的复杂性中解耦，以简化维护和后续开发。

目前，`pseudofs` 已达到足够的功能性和稳定性，`linprocfs` 已几乎完全基于它重新实现，唯一缺少的部分是文件 `proc/<pid>/mem` 。

当前 `pseudofs` 需要完成的主要任务是支持可写文件（`procfs` 需要此功能，但处理可写文件比只读文件要复杂得多）。此外，`pseudofs` 还需要通用支持原始（非 `sbuf` 处理，可能可 `mmap`）文件，否则必须编写特殊代码来处理 `proc/<pid>/mem` 文件。

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

**相关链接**：<http://people.freebsd.org/~bmah/relnotes/>

联系人：Bruce A. Mah <<bmah@FreeBSD.org>>

`RELNOTESng` 是我为 FreeBSD 发行版附带的 `*.TXT` 文件重写工作所取的名称。这些文件包含发布说明、支持的硬件列表等信息。现在，这些文件的信息已得到重新组织，并转换为 `SGML` 格式。这一转换有助于生成多种格式的文档，同时也方便维护不同架构的文档。

此工作最近已提交到 `-CURRENT`，并计划在 `4.4-RELEASE` 之前合并（MFC）到 `4-STABLE` 分支。

## [SMPng mbuf 分配器](https://www.freebsd.org/status/report-2001-06.html#SMPng-mbuf-allocator)

**相关链接**：<http://people.freebsd.org/~bmilekic/code/mb_slab/>

联系人：Bosko Milekic <<bmilekic@FreeBSD.org>>

`mb_alloc` 是专用于 `mbuf` 和 `mbuf` 集群的新分配器。相较于现有的 `mbuf` 分配器，它特别在 `MP`（多处理器）系统上具有诸多优势。此外，它还考虑到了后续的扩展性。

目前，该项目处于初步审核和测试阶段，大部分代码已经编写完成。

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

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

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

联系人：Jake Burkholder <<jake@FreeBSD.org>>

联系人：SMP 邮件列表 <<smp@FreeBSD.org>>

SMPng 项目的目标是为 FreeBSD 内核提供多线程支持。目前，内核仍主要运行在 `Giant` 内核锁下。最近的进展有：

* Seigo Tanimura-san 对进程组、会话结构以及文件描述符进行了锁定处理。
* Alfred Perlstein 为整个虚拟内存（VM）子系统添加了 `Giant` 锁，该锁最终将被拆分为多个小锁。

VM 子系统的锁定较为复杂，目前的重点是修复 Alpha 架构上的一些剩余 bug。

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

联系人：Jake Burkholder <<jake@FreeBSD.org>>

FreeBSD 已重新启动对 UltraSPARC 架构（主要针对 PCI 工作站）的移植工作。Jake Burkholder 负责内核移植，Ade Lovett 计划参与 `userland` 相关工作。近期进展包括：

* 构建了一款针对 `sparc64` 的 GNU 交叉工具链。
* 获得了对 `Ultra 5` 开发机器的远程访问权限（感谢 `emmy`）。
* 开发了一个最小化的头文件和源码集，以便编译和链接内核。
* 实现了一个 `mini-loader`，用于重定位内核、映射 `TLB` 并启动内核。
* 采用了 Benno Rice 的 `OpenFirmware` 控制台驱动，实现 `printf` 和 `panic`。

目前，已能通过网络启动内核，打印 FreeBSD 版权信息，随后调用未实现的代码。我正在设计 `pmap` 模块，并计划在最近几天内开始实现。

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

**相关链接**：<http://www.trustedbsd.org/>

联系人：Robert Watson <<rwatson@FreeBSD.org>>

TrustedBSD 项目目标是通过增加新的安全特性来提高 FreeBSD 操作系统的安全性，其中许多功能源自常见的可信操作系统需求。这些特性包括：

* 访问控制列表（ACL）
* 细粒度事件日志（Audit）
* 细粒度权限控制（Capabilitie）
* 强制访问控制（MAC）
* 其他架构特性，如文件系统扩展属性（EA）和改进的对象标记（Object Labeling）

将在下文分别介绍各个功能的状态。总体而言，基础功能（如 EA、ACL 和内核对 Capabilitie 的支持）将在 `5.0-RELEASE` 中首次提供，并通过特定的内核选项启用。性能优化后的 EA 版本预计将在 `6.0-RELEASE` 中发布，同时集成了支持 Capabilitie 的 `userland` 以及 MAC 支持。

## [TrustedBSD Capabilities](https://www.freebsd.org/status/report-2001-06.html#TrustedBSD-Capabilities)

联系人：Thomas Moestl <<tmm@FreeBSD.org>>

TrustedBSD Capabilities 的内核部分已基本完成，所有 `suser()` 和 `suser_xxx()` 调用，以及几乎所有 `uid == 0` 的比较，均已转换为新的 `cap_check()` 调用。但仍有一些细节需要进一步澄清，相关文档也需完善。

已编写符合 POSIX.2c 标准的 `getfcap` 和 `setfcap` 程序。此外，`su(1)`、`login(1)`、`install(1)` 和 `bsd.prog.mk` 中的实验性 Capabilities 支持正在测试中。

目前正在开发 `tar(1)` 对 Capabilities、ACLs 和 MAC 标签的支持，目前仅 Capabilities 部分已测试。此外，还计划为扩展属性（EAs）提供通用支持，这将需要扩展现有 EA 接口，相关扩展已编写完成，预计将在几周内提交到 `-CURRENT` 分支。同时，还计划将这些功能移植到 `pax(1)`。

## [TrustedBSD MAC 和对象标记](https://www.freebsd.org/status/report-2001-06.html#TrustedBSD-MAC-and-Object-Labeling)

**相关链接**：<http://www.trustedbsd.org/>

联系人：Robert Watson <<rwatson@FreeBSD.org>>

今年伊始，TrustedBSD 项目完成了一款初始的强制访问控制（MAC）原型，实现了多级安全（MLS）、Biba 完整性保护，以及更通用的基于 `jail` 的访问控制模型。

在此基础上，我正在改进 FreeBSD 的安全抽象层，以简化 MAC 支持的实现和集成，同时增加受自愿访问控制（DAC）和强制访问控制（MAC）保护的内核对象数量。

通用对象标记（Generic Object Labeling）引入了一种类似于内核 `ucred` 结构的机制，但它与内核对象关联，而非内核主体（subject）。这种机制可以用于创建通用的安全保护例程，亦可轻松扩展 `procfs` 和 `devfs` 以支持 ACL 和 MAC。

目前，该原型已进入开发阶段，代码已能够编译运行，并在 `sysctl` 级别实现了简单的访问控制保护。

## [TrustedBSD: ACL](https://www.freebsd.org/status/report-2001-06.html#TrustedBSD:-ACLs)

联系人：Chris D. Faulhaber <<jedgar@FreeBSD.org>>

现在可以使用补丁，将 ACL 支持添加到 cp(1) 和 mv(1)，并初步支持 install(1)。Ilmar 为 getfacl(1) 和 setfacl(1) 提供的 i18n 补丁需要更新，来适应最新的更改并提交。此外，还有一些其他功能改进正在进行中。


---

# 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/6.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.
