# FreeBSD 2004 年 3-4 月状态报告

原文链接：[FreeBSD 2004 年 3-4 月状态报告](https://www.freebsd.org/status/report-2004-03-2004-04.html)

## 引言

2004 年继续取得显著进展。网络栈锁定工作继续进行，ACPI（高级配置与电源接口）取得了巨大进展，ARM 平台出现在代码库中，FreeBSD 4.10 发布周期也已完成。待 4.10 发布，接下来的重点将是 FreeBSD 5.3。我们预计这将是 5-STABLE 分支的开始，这意味着它不仅会稳定适用于生产环境，还将在内部 API 方面大体上完成并稳定。我们预计将在夏季中旬发布 5.3 版，并鼓励大家下载最新的快照版本以预览。

感谢，

Scott Long

## [ACPI](https://www.freebsd.org/status/report-2004-03-2004-04.html#ACPI)

链接

[ACPI TODO](http://www.root.org/~nate/freebsd/)

[ACPI 邮件列表](http://lists.freebsd.org/mailman/listinfo/freebsd-acpi)

联系人：Nate Lawson <<njl@FreeBSD.org>>

ACPI 项目的大部分工作都在等待架构变更的完成。例如，cpufreq 驱动程序需要对 CPU 的 newbus 附件支持。这部分支持代码应该在发布时提交。其他需要的架构变更包括 rman 对内存/Ports 资源的支持，以及通用的热键和附加驱动程序。内核的其他重要工作，包括 PCI 电源状态支持和 APIC 支持，对改善现代平台上的 ACPI 有着不可或缺的作用。特别感谢 Warner Losh 和 John Baldwin 的贡献。

目前已基本完成的代码，待基础工作完成后将加入包括 cpufreq 框架、ACPI 软盘控制器驱动程序以及完全支持动态 Cx 状态。

ACPI-CA 在四月初更新到了 20040402 版本。这个版本存在一些 GPE（通用事件事件）问题，已在 20040427 版本中得到部分修复，希望在发布时这些问题能得到完全解决。

我想欢迎 Mark Santcroos（marks@）加入 FreeBSD 团队。他曾在调试 ACPI 问题时提供过帮助。如果有开发人员有兴趣协助 ACPI 项目，请查阅 ACPI TODO 并给我们发送邮件。

## [ATA 项目状态报告](https://www.freebsd.org/status/report-2004-03-2004-04.html#ATA-project-Status-Report)

联系人：Søren Schmidt <<sos@FreeBSD.org>>

现在终于有了对 Promise SX4/SX4000 系列控制器的支持（除了 RAID5）。目前的支持仍然非常初步，尚未充分利用缓存/序列器硬件。Silicon Image 3114 的支持已经完成，进行了大量的错误修复和代码清理。未来的工作将集中在新的控制器芯片上（Marvell SATA 芯片可能是最突出的），并完成 SATA 支持，以便 SATA 硬件的热插拔等功能得以正常工作。此外，ATA RAID 即将被重写，以利用 ATA 子系统现在提供的特性，包括对 Promise/Marvell 等控制器硬件的支持。目前还在开发多个新的 RAID 元数据格式（如 Intel、AMI）。

## [TCP 发送缓冲区的自动大小调整](https://www.freebsd.org/status/report-2004-03-2004-04.html#Automatic-sizing-of-TCP-send-buffers)

链接：<http://www.freebsd.org/news/status/report-jan-2004-feb-2004.html#Automatic-sizing-of-TCP-send-buffers>

联系人：Andre Oppermann <<andre@FreeBSD.org>>

当前的 TCP 发送和接收缓冲区是静态的，并设置为保守的值，以节省内核内存。这对于带宽和延迟积较高的连接来说是次优的，因为 TCP 发送缓冲区的大小决定了发送窗口的最大值。对于高带宽的跨洲链接，这严重限制了每个 TCP 连接的最大传输速度。有关此问题的更详细说明，请参见上面的链接。

由于其他优先级较高的网络堆栈项目（如 ipfw2 到 pfil\_hooks 和 ip\_input/ip\_output 清理工作），该项目的进展暂时停滞。

## [FreeBSD 的二进制安全更新](https://www.freebsd.org/status/report-2004-03-2004-04.html#Binary-security-updates-for-FreeBSD)

链接：<http://www.daemonology.net/freebsd-update/>

联系人：Colin Percival <<cperciva@daemonology.net>>

FreeBSD Update 刚刚度过了它的第一个周年，现每天约有 170 台机器在使用它；在平常的日子里，约有 60 台机器会下载更新（其余机器已经是最新版本）。截至目前，已经在超过 4200 台机器上更新了超过 157000 个文件。

## [书籍：《FreeBSD 操作系统的设计与实现》](https://www.freebsd.org/status/report-2004-03-2004-04.html#Book:-The-Design-and-Implementation-of-the-FreeBSD-Operating-System)

链接：<http://www.mckusick.com/FreeBSDbook.html>

联系人：Kirk McKusick <<mckusick@FreeBSD.org>>

联系人：George Neville-Neil <<gnn@neville-neil.com>>

新书《FreeBSD 操作系统的设计与实现》是传奇书籍《4.4BSD 的设计与实现》的继任者，这本书已成为全球大学教学操作系统内部结构的事实标准。

这本全新且完全重编的版本基于 FreeBSD 5.2 和即将发布的 FreeBSD 5.3 版本，包含了操作系统各个领域的详细内容（从虚拟内存管理到进程间通信和网络堆栈），总共 700 页。

这本书目前正在由 Addison-Wesley 出版，预计在 2004 年 8 月初发布。ISBN 号为 0-201-70245-2。

## [CAM 锁定和线程化](https://www.freebsd.org/status/report-2004-03-2004-04.html#CAM-lockdown-and-threading)

联系人：Scott Long <<scottl@FreeBSD.org>>

CAM 子系统的锁定工作已经开始。该项目分为几个步骤：

* 将 SCSI 探测外设从 cam\_xpt.c 分离到 scsi\_probe.c
* 设备探测序列的线程化。
* 锁定并引用外设驱动程序。
* 锁定 XPT 和设备队列。
* 锁定一个或多个 SIM，并设计一种方式使非锁定驱动程序能够运行。

虽然该工作当前的目标是锁定 CAM，但它也将我们指向了将 SCSI 特定知识从核心中分离出来的方向。这将允许编写其他传输协议，如 SAS、iSCSI 和 ATA。

进展情况在 FreeBSD Perforce 服务器的 camlock 分支中进行跟踪。待进展到足以进行合理测试的阶段，我将公开发布补丁。目前，前两个项目正在进行中。

## [将 ipfw2 转换为使用 PFIL\_HOOKS 机制](https://www.freebsd.org/status/report-2004-03-2004-04.html#Convert-ipfw2-to-use-PFIL_HOOKS-mechanism)

链接：<http://www.nrg4u.com/freebsd/ipfw-pfilhooks-and-more-20040510.diff>

联系人：Andre Oppermann <<andre@FreeBSD.org>>

ipfw2 直接集成在 ip\_input() 和 ip\_output() 中，这使得这些函数变得更加复杂。现在我们有了通用的包过滤机制 PFIL\_HOOKS，该机制被 IPFILTER 和新的 OpenBSD PF 防火墙包使用，以便将它们自己挂接到 IP 输入和输出路径中。

此补丁使 ipfw2 完全自包含，并可以通过 PFIL\_HOOKS 调用。这仍然是一个进行中的工作，DUMMYNET 和 IPDIVERT 以及 Layer2 防火墙尚未完全恢复功能，但正常的防火墙功能已经能够正常工作。

该补丁还包含了一些对 ip\_input() 和 ip\_output() 的清理工作，这也是正在进行中的任务。

## [Cronyx Tau-ISA 驱动程序](https://www.freebsd.org/status/report-2004-03-2004-04.html#Cronyx-Tau-ISA-driver)

链接：[Cronyx WAN Adapters](http://www.cronyx.ru/hardware/wan.html)

联系人：Roman Kurakin <<rik@FreeBSD.org>>

已添加了 Cronyx Tau-ISA 的 ctau(4) 驱动程序。Cronyx Tau-ISA 是一系列同步 WAN 适配器，具有多种接口，如 V.35、RS-232、RS-530(449)、E1（有帧和无帧）。这是 FreeBSD 支持的第二个 Cronyx 适配器系列。第一个是 Cronyx Sigma-ISA，cx(4)。

Cronyx Tau-PCI 系列将成为第三个。该驱动程序的特点是包含了私有代码。这些代码以经过混淆的源代码形式分发，并附有常见的开源许可协议。由于代码通过混淆进行了保护，它满足商业需求。另一方面，它仍然是源代码，因此更接近开源项目。我希望这种私有代码分发的形式能成为对象代码形式的真正替代品。

## [FreeBSD 荷兰文档项目](https://www.freebsd.org/status/report-2004-03-2004-04.html#FreeBSD-Dutch-Documentation-Project)

**链接**

[文档的状态和下载（尚未完成）](http://www.evilcoder.org/index.cgi?i=nav\&t=freebsd)

联系人：Remko Lodder <<remko@elvandar.org>>

FreeBSD 荷兰文档项目是一个持续进行的项目，旨在将手册和其他文档翻译成荷兰语。目前我们有一个小团队，负责翻译、检查他人的工作，并将它们发布到互联网上。你可以在网页上查看当前的状态（如上所列）。我们仍然需要更多的志愿者帮助，因为我们还有很长的路要走。任何愿意帮忙的人，请联系我，我会提供关于我们如何工作的详细信息等。目前，该项目已经翻译了手册页面：X Windows 系统和配置与调优，它们只需要在发布前检查。

## [FreeBSD 线程支持](https://www.freebsd.org/status/report-2004-03-2004-04.html#FreeBSD-threading-support)

**链接**

[关于 TLS 的基本数据](http://people.freebsd.org/~marcel/tls.html)

联系人：David Xu <<davidxu@FreeBSD.org>>

联系人：Doug Rabson <<dfr@FreeBSD.org>>

联系人：Julian Elischer <<julian@FreeBSD.org>>

联系人：Marcel Moolinar <<marcel@FreeBSD.org>>

联系人：Dan Eischen <<deischen@FreeBSD.org>>

线程开发者在幕后一直活跃，尽管许多工作没有显现出来。现实生活（TM）对我们这个小组来说也非常艰难。

Marcel 和 Davidxu 都（各自）在查看线程程序的调试支持。David 有一组补丁，可以让 gdb 正确处理 KSE 程序，补丁正在考虑应用于基于 libthr 的进程。Marcel 添加了一个线程 ID，允许调试代码明确指定要调试的线程。他还在研究核心文件支持。两组补丁都是初步的。

Dan Eischen 继续支持迁移到 libpthreads 的用户，似乎进展顺利。

Doug Rabson 做出了他的传统奇迹，提供了一组初步的补丁，用于在 i386 平台上实现 TLS（线程本地存储）。

Julian Elischer 正在研究内核支持代码的某些重构。

平台：

i386、amd64、ia64 上的 libpthread 可用。

alpha、sparc64 尚未实现。

## FreeBSD/arm

联系人：Olivier Houchard <<cognet@FreeBSD.org>>

FreeBSD/arm 现在已经加入到 FreeBSD 的 CVS 树中。动态库现在能够正常工作，并且使用 `NO_CXX=true NO_RESCUE=true` 进行的 buildworld 操作也可以正常执行（需要一些工具链的补丁，这些补丁目前将暂时保留在树外）。现在的重点应放在 xscale 支持上。

## GEOM Gate

联系人：Pawel Jakub Dawidek <<pjd@FreeBSD.org>>

GEOM Gate 类已被提交，并且包括 ggatec(8)、ggated(8) 和 ggatel(8) 工具。它使得通过网络分发磁盘设备成为可能，但这是在磁盘级别进行的（不要将其与 NFS 混淆，后者提供的是文件系统级别的数据导出）。

## 改进的多字节/宽字符支持

联系人：Tim Robbins <<tjr@FreeBSD.org>>

新地区设置：Unicode UTF-8 地区设置已被添加到基本系统中。所有 FreeBSD 先前支持的地区设置现在都具有对应的 UTF-8 版本，并且还新增了一到两个新的地区设置，总共是 53 个。

库变更：C 库中的可重启转换函数（如 mbrtowc()、wcrtomb() 等）已经更新，以按照 C99 标准的规定处理部分字符。已优化函数 `<wctype.h>` ，以更好地处理像 Unicode 和 GB18030 这样的大型、碎片化的字符集。文档也得到了改进。

实用工具：`ls` 工具已经修改，当确定文件名中的字符是否可打印以及在屏幕上占用多少列位置时，它会内部处理宽字符。`wc` 工具中的字符处理已变得更加健壮。其他文本处理工具（如 expand、fold、unexpand、uniq）也进行了修改，但这些更改尚未提交，直到能够评估性能影响为止。关于 POSIX 风格的 `localedef` 工具的工作已经开始，目标是使其替代 FreeBSD 6 中当前的 `mklocale` 和 `colldef` 工具。（目前此工作暂停，等待对 POSIX 缺陷报告的回复。）

未来方向：需要优化宽字符处理函数，使其在处理 8 位字符集时更具竞争力，能够与单字节函数相匹配。需要修改实用工具以处理多字节字符，但必须仔细考虑性能。`localedef` 还需要完成。

## libarchive/bsdtar

链接：<http://people.freebsd.org/~kientzle/>

网址：<http://people.freebsd.org/~kientzle/>

联系人：Tim Kientzle <<kientzle@FreeBSD.org>>

`bsdtar` 和 `libarchive` 现在已成为 -CURRENT 的一部分。已经报告并解决了一些小问题，包括许多硬链接时的性能问题，以及某些软件包所需的选项。目前，`tar` 命令仍然是 `gtar` 的别名。那些希望将 `bsdtar` 作为默认系统 `tar` 的用户，可以定义 `WITH_BSDTAR`，使得 `tar` 成为 `bsdtar` 的别名。

我当前的计划是大约一个月后，将 `bsdtar` 设置为 -CURRENT 的默认版本，可能会在 5-STABLE 分支之后进行，然后在稍后的时间从 -CURRENT 中移除 `gtar`。至于在 5-STABLE 中何时进行此切换仍然未定。一方面，我认为如果 5-STABLE 和 6-CURRENT 使用不同的 `tar` 命令可能会带来潜在问题；另一方面，切换可能会对一些用户造成干扰。

## 将 ARP 移出路由表

链接：<http://lists.freebsd.org/pipermail/freebsd-current/2004-April/026380.html>

联系人：Luigi Rizzo <<luigi@FreeBSD.org>>

联系人：Andre Oppermann <<andre@FreeBSD.org>>

当前，ARP 的 IP 地址到 MAC 地址的映射被存储在路由表（FIB）中，但这并不合适。计划将其移到一个独立的基于哈希的结构中，并为每个 802.1 广播域实例化一个该结构。通过此更改，可以在同一个 IP 子网和第 2 层广播域中拥有多个接口。此后，ARP 处理和路由表将得到简化。另一个额外的好处是将提供基于 MAC 地址的完整计费功能。

Luigi 已成为该项目的负责人，并于 2004 年 4 月 25 日发布了一个初步实现供大家评论（请参见链接）。

## 网络接口命名更改

联系人：Brooks Davis <<brooks@FreeBSD.org>>

已创建一个增强的网络接口克隆 API，接口可支持比当前的 `name#` 风格更复杂的名称。该功能已用于启用一些有趣的克隆器，例如自动配置 VLAN 接口。其他功能包括对克隆器结构的锁定和驱动程序拒绝销毁请求的能力。补丁已经发布到 freebsd-net 邮件列表供审核，计划于 5 月初提交。此项工作正在 perforce 仓库中进行，路径为：`//depot/user/brooks/xname/...`

## 网络堆栈锁定

链接：[Robert's Network Stack Locking Page](http://www.watson.org/~robert/freebsd/netperf/)

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

该项目旨在将 FreeBSD 网络堆栈从依赖单个巨型内核锁的方式转换为允许其在多核处理器上以完全并行的方式运行（即，完全线程化的网络堆栈）。此更改将通过重入性和抢占性改善单处理器机器的性能/延迟，并通过允许网络流量的真正并行处理，改善多处理器机器上的性能。自 FreeBSD 5.2 以来，低级网络功能、IP 过滤和转发平面都可以在没有巨型锁的情况下运行，并且在中断处理程序中可以“处理完成”。

目前的工作仍在继续，以改善网络堆栈的锁定（以及性能）成熟度，目标是 FreeBSD 5.3。网络堆栈开发分支已更新到最新的 CVS HEAD，并包括以下内容以及更多内容：

* 审查套接字标志和套接字缓冲区标志的锁定；将 so\_state 拆分为多个字段，由不同的锁保护，以避免在修改 so\_state 字段时产生锁顺序问题。此工作仍在进行中。
* WITNESS 现在包括许多网络锁的硬性排序，以改进锁顺序调试过程。
* MAC 框架已修改，在许多情况下使用 PCB 代替套接字，以避免在网络层中的套接字锁定，特别是在生成新的 mbufs 时。
* 与套接字和接口锁定相关的新注释。
* 开始审查 NetGraph，并修正 NetGraph 套接字锁定问题。
* sendfile() 锁定问题似乎已经修复，尽管它仍然持有巨型锁，超过了严格的必要程度。
* 对 if\_ppp 全局变量的锁定执行并合并。
* 修复了 soreceive() 锁定中的多种竞态条件和 bug，包括仅在 -HEAD 和 -STABLE 中偶尔触发的现有竞态条件，这些竞态条件在 SMP 和没有巨型锁的操作中很容易触发。
* 修正了 vnode 互锁与套接字缓冲区锁顺序问题之间的锁顺序问题。已清理 fifofs 与 UNIX 域套接字的交互。
* 研究 KQueue 问题，并反馈给 KQueue 锁定补丁作者。
* netatalk AARP 已锁定、MPSAFE，并合并到 CVS。
* 解决了套接字、套接字缓冲区和 UNIX 域套接字锁之间的锁顺序问题，消除了竞态条件和潜在死锁。
* if\_gif 递归清理，if\_gif 现在更加 MPSAFE。
* 第一次通过 NFS 服务器 MPSAFE 锁定，使用 NFS 服务器子系统锁定，允许从套接字层执行 so\_upcall()，无需巨型锁。这解决了 NFS 服务器在无巨型锁操作时的竞态条件。数据基础锁定的第二次测试也在进行中。
* 完成并合并了 if\_sl.c（SLIP）精细粒度的锁定。
* 完成并合并了 if\_tun.c（隧道）精细粒度的锁定。
* 合并了调试 `.mpsafenet` 上的条件巨型锁定到 CVS；语义现在已更改，以使得巨型锁不仅仅是转发路径上起作用，而是对整个堆栈生效。除非使用我们的补丁，否则需要谨慎使用。回调也被修改为条件安全。
* if\_gif、if\_gre 全局变量已锁定并合并到 CVS。
* netatalk DDP 清理（从协议代码中分离 PCB），大部分已经在 PCB 层面上锁定。尽管仍有一些工作需要在发布补丁进行测试之前完成，但已接近 MPSAFE。
* 开始审查 netipx、netinet6 代码中的锁定需求，并修正了一些 bug。
* 调试并希望解决了处理套接字 so\_comp、so\_incomp 中的竞态条件，通过对这些字段的新锁定。
* 添加了许多新的锁定注释、字段文档和锁顺序文档。

Netperf 补丁在各种环境中都证明是相当稳定的，只要避免了非 MPSAFE 的部分。KQueue、IPv6 和 ifnet 锁仍然是最需要额外功能的关键领域。工作的重点正从新的开发转向深入测试、性能衡量和与其他子系统的交互。

这项工作不可能没有以下人员的贡献（无疑还有许多人）：John Baldwin、Bob Bishop、Brooks Davis、Pawel Jakub Dawidek、Matthew Dodd、Julian Elischer、Ruslan Ermilov、John-Mark Gurney、Jeffrey Hsu、Kris Kennaway、Roman Kurakin、Max Laier、Sam Leffler、Scott Long、Rick Maklem、Bosko Milekic、George Neville-Neil、Andre Oppermann、Luigi Rizzo、Jeff Roberson、Tim Robbins、Mike Silberback、Bruce Simpson、Seigo Tanimura、Hajimu UMEMOTO、Jennifer Yang、Peter Wemm。我们希望能在几天内将这些补丁发布到 arch@ 邮件列表中，尽管某些元素仍需继续完善（尤其是套接字锁定）。

## OpenOffice.org 移植状态

联系人：NAKATA Maho <<maho@FreeBSD.org>>

经过 Martin Blapp（<mbr@FreeBSD.org>）和其他贡献者近三年的努力，OpenOffice.org 1.0.x 和 1.1.0 已成功移植到 FreeBSD，现在在 Ports 中有四个版本的 OpenOffice.org（OOo）。

* 1.1.1：稳定版本
* 1.1.2：下一个稳定版本
* 2.0：开发者版本
* 1.0.3：旧版

稳定版本 1.1.1 位于 `/usr/ports/editors/openoffice-1.1/`，可以在 5.2.1-RELEASE 上构建、安装并正常运行。可用的 5.2.1-RELEASE 软件包有 26 个本地化版本，4.10-PRELEASE 仅有英文版，所有版本可以在 `http://oootranslation.services.openoffice.org/pub/OpenOffice.org/ooomisc/` 下载。（注意：OOo 1.1.1.RC3 的源与 OOo 1.1.1 相同）

当前需要的补丁数量为：

1.1.1 版本需要 18 个补丁，1.0.3 版本需要 161 个补丁，补丁数量大大减少。

OOo 1.1.2，下一稳定版本，位于 /usr/ports/editors/openoffice-1.1-devel，也可以在 5.2.1-RELEASE 上构建、安装并正常运行。我们计划在 1.1.2 发布后尽快升级此 Port。

下一个主要版本 2.0（计划于 2005 年 1 月发布，详情见：<http://development.openoffice.org/releases/OpenOffice\\_org\\_trunk.html），位于> /usr/ports/editors/openoffice-2.0-devel，目前可以在 5.2.1-RELEASE 上编译，但存在一个大问题，导致无法删除 BROKEN 标签。

旧版 OOo 1.0.3 位于 `/usr/ports/editors/openoffice-1.0/`，我对这个 Port 不感兴趣。希望别人能维护它。

我的主要构建环境是 5.2.1-RELEASE，且我没有访问 4 系列的权限，因此已报告了一些针对 5-current 和 4-stable 的构建问题，但这些问题现在似乎已经解决。请确保你的 Java /内核是最新的。

对于 1.1.1 版本，仍然存在严重的可复现核心转储问题，这意味着 OOo 无法通过 OpenOffice.org 的质量保证协议（<http://qa.openoffice.org），因此我们无法将> OOo 发布为质量保证的软件包。根据一些报告，这似乎是 FreeBSD 用户空间的 bug，因为在 4-stable 上没有问题，但我们仍在寻找原因。

开发者在提交补丁时必须签署 JCA（联合版权转让协议），否则补丁将不会被整合到 OOo 的源代码树中。我们迫切需要更多的开发者、测试人员和构建者。

## PCI 电源状态和资源

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

PCI 资源的懒惰分配已合并到主树中。这些更改允许 FreeBSD 在将 PnP OS 设置为 `true` 的计算机上运行。此外，跨挂起/恢复的资源保存和恢复功能帮助一些设备从挂起状态恢复。

未来的工作将集中在总线编号方面。

## 移植 OpenBSD 的数据包过滤器

<http://pf4freebsd.love2party.net/>

<http://www.benzedrine.cx/pf.html>

<http://openbsd.org/faq/pf/index.html>

<http://www.rofug.ro/projects/freebsd-altq/>

联系人：Max Laier <<mlaier@FreeBSD.org>>

联系人：Daniel Hartmeier <<dhartmei@FreeBSD.org>>

联系人：Pyun YongHyeon <<yongari@kt-is.co.kr>>

导入后的两个月实际上相当安静。我们从 OpenBSD 稳定分支导入了一些小修复。Bruce M. Simpson 在 3 月底导入的 tcpdump 3.8.3 和 libpcap 0.8.3 最终使我们能够构建一个可用的 pflogd(8)，并为其提供 rc.d 链接。现在 tcpdump 能够理解 pflog(4) 伪网卡数据包格式，并且可以用于读取日志文件。

此外，后台工作也在准备导入 OpenBSD 3.5 源代码。这些补丁已经相当稳定，并将很快发布。Altq 的工作也在进行中，并且进展顺利，基于 rofug.ro 的出色工作，但由于需要对每个网络驱动程序进行修改并经过彻底测试，因此需要更多时间。

## SMPng 状态报告

链接：

<http://wleiden.webweaving.org:8080/svn/node-config/other/enh-sec-patch/README>

<http://bsd.slashdot.org/article.pl?amp;sid=03/12/27/2035245&mode=thread&tid=122&tid=126&tid=137&tid=172&tid=185&tid=190&tid=193>

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

联系人：<<smp@FreeBSD.org>>

如本报告其他部分所述，一些人员继续致力于网络堆栈的锁定。除了网络堆栈外，以下内容在 3 月和 4 月期间得到了工作。Giant 锁被尽可能向下推送到 fork、exit 和 wait 系统调用中。Alan Cox（alc@）继续锁定虚拟内存子系统，并在适当的位置向下推送 Giant 锁。几个系统调用和回调也标记为 MP 安全。

对中断线程基础设施进行了一些更改。通过调度程序最近添加的线程绑定到特定 CPU 的支持，终于在 Alpha 架构上启用了中断线程抢占。此外，还添加了一项优化，减少在重负载中断时的上下文切换，并增加了基本的中断风暴保护。

## 状态报告

联系人：Roland van Laar <<the_mip_rvl@myrealbox.com>>

此补丁适用于 if\_wi 当前版本。它使你能够禁用 SSID 广播，并且还允许你禁用客户端使用空白 SSID 进行连接。

## 同步协议（Netgraph 和 SPPP）

联系人：Roman Kurakin <<rik@FreeBSD.org>>

作为我在同步协议栈方面工作的一个部分，已将 ng\_sppp 驱动程序添加到系统中。该驱动程序允许将 sppp 作为 Netgraph 节点使用。现在我计划尽可能更新 sppp 驱动程序，以使其与 Cronyxs 的驱动程序（PPP 部分）保持同步。同时，我还在 FreeBSD 中工作以支持 FRF.12（目前我已在 Netgraph 和 SPPP 中支持 FRF.12，并且支持 Cronyx Linux 驱动程序，但仅限端到端）。我计划在一周内自行进行测试，之后我计划实现对 FRF.12 的完全支持。

如果你想获取当前版本并进行测试，请随时与我联系。

## FreeBSD 简体中文项目

**链接**

[FreeBSD 简体中文项目（简体中文）](http://www.freebsd.org.cn/)

[翻译手册快照](http://www.freebsd.org.cn/snap/doc/zh_CN.GB2312/books/handbook/)

[翻译状态](http://www.freebsd.org.cn/cndocs/translations.html)

[翻译网站快照](http://www.freebsd.org.cn/snap/zh_CN/)

联系人：李鑫 <<delphij@frontfree.net>>

我们已经完成了约 75% 的手册翻译工作。在过去的两个月里，我们主要致力于更新手册章节的内容。为了提高翻译的质量，我们还对其进行了修订。

我们仍然在寻找人手来将 FAQ 翻译工作转为 SGML 格式，该翻译工作是去年由几位志愿者完成的。

## TrustedBSD 审计

**链接**

[TrustedBSD 项目](http://www.trustedbsd.org/)

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

联系人：TrustedBSD 讨论列表 <<trustedbsd-discuss@TrustedBSD.org>>

TrustedBSD 项目正在为基于 FreeBSD 的系统实现符合 CAPP 标准的审计支持，该实现基于 Apple Darwin 的实现。

实验性地将 Apple Darwin 7.2 中的 XNU 审计实现集成到 Perforce。

将审计框架调整为可以在 FreeBSD 中编译——这需要修改内存分配和同步机制，使用 FreeBSD 的 SMPng 原语而不是 Mach 原语。将 Giant 锁从大部分审计代码中去除，进行了其他多个 FreeBSD 适配，如 suser() API 更改、使用 BSD 线程、td->td\_ucred 等。

将每个线程的审计数据适配为 FreeBSD 线程。

清理了用户空间与内核 API 之间的交互，包括 Darwin 和 FreeBSD 之间的 udev\_t/dev\_t 不一致问题。

使用 vn\_fullpath() 代替 vn\_getpath()，后者是一个不完整的解决方案，我们将在未来解决此问题。

基本的内核框架现在可以在 FreeBSD 上运行；编写了 praudit 工具，可以解析 FreeBSD BSM 和 Solaris BSM。

## TrustedBSD 强制访问控制 (MAC)

**链接**

[TrustedBSD 项目](http://www.trustedbsd.org/)

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

联系人：TrustedBSD 讨论列表 <<trustedbsd-discuss@TrustedBSD.org>>

TrustedBSD 强制访问控制 (MAC) 框架允许在编译时、启动时或运行时调整 FreeBSD 内核和用户空间的访问控制策略。MAC 框架提供了通用的基础设施组件，如与策略无关的标签功能，使得开发和分发新的访问控制策略模块变得更加容易。示例模块包括 Biba、MLS 和类型强制 (Type Enforcement)，以及各种系统强化策略。

Perforce 中的 TrustedBSD MAC 开发分支已集成到最新的 5-CURRENT 中。

* mdmfs(8) 选项 `-l` 用于创建多标签 mdmfs 文件系统（已合并）。
* 更新了无磁盘启动以支持 MAC。
* 对 MAC 框架代码进行了重新安排，将 mac\_net.c 拆分为 mac\_net.c、mac\_inet.c 和 mac\_socket.c（已合并）。
* libugidfw(3) 增加了 bsde\_add\_rule(3) 以自动分配规则编号（已合并）。ugidfw(8) 增加了 'add' 选项以使用此功能（已合并）。
* pseudofs(4) 不再需要 MAC 本地化。
* 现在使用细粒度锁定的 BPF 来保护 BPD 描述符标签，而不是使用 Giant 锁（已合并）。
* 在创建新的 mbuf 时，优先使用 inpcb 作为标签的来源，而不是套接字，从而减少标签的套接字锁定问题。

## TrustedBSD 安全增强 BSD (SEBSD) 移植

**链接**

[TrustedBSD 项目](http://www.trustedbsd.org/)

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

联系人：TrustedBSD 讨论列表 <<trustedbsd-discuss@TrustedBSD.org>>

TrustedBSD“安全增强 BSD” (SEBSD) 是 NSA 的 SELinux FLASK 安全架构、类型强制 (TE) 策略引擎和语言，以及示例策略的移植，基于 TrustedBSD MAC 框架，将其移植到 FreeBSD 上。SEBSD 作为可加载的策略模块提供给 MAC 框架，并附带一组用户空间扩展，以支持安全扩展的标签调用。在大多数情况下，现有的 MAC 框架功能提供了必要的抽象，使 SEBSD 可以无须针对 SEBSD 特定更改即可集成，但一些对 MAC 框架的扩展是必要的；这些扩展首先在 SEBSD 开发分支中开发，经过完善后再合并到 MAC 分支，最后合并到 FreeBSD 开发树。

与其他 MAC 框架策略模块不同，SEBSD 模块遵循 GPL 许可，因为它源自 NSA 的实现。然而，最终目标是支持将 SEBSD 插入到基础的 FreeBSD 安装中，而无需修改 FreeBSD 本身。

已集成到最新的 FreeBSD CVS 和 MAC 分支中。

新的 FreeBSD 代码已更新，以优先使用功能而非超级用户检查。

现在可以获取安装说明！

## 验证 ipfw2 的源可达性选项

**链接**

<http://www.freebsd.org/news/status/report-jan-2004-feb-2004.html#Verify-source-reachability-option-for-ipfw2>

<http://www.freebsd.org/cgi/man.cgi?query=ipfw&apropos=0&sektion=0&manpath=FreeBSD+5.2-current&format=html>

联系人：Andre Oppermann <<andre@FreeBSD.org>>

ipfw2 的验证源可达性选项已于 2004 年 4 月 23 日提交到 FreeBSD-CURRENT。欲了解更多信息，请参阅上面的链接。
