# FreeBSD 2007 年 4-6 月状态报告

* 原文链接：<https://www.freebsd.org/status/report-2007-04-2007-06.html>

## 引言

本报告涵盖了 2007 年 4 月至 6 月期间与 FreeBSD 相关的项目。又是一个令人激动的季度。5 月，我们在 [BSDCan](http://www.bsdcan.org/2007/) 举办了迄今为止规模最大的一次开发者峰会，25 名谷歌编程之夏学生开始了 [他们的项目](http://www.freebsd.org/projects/summerofcode-2007.html)——进展报告请见下文，最后，7.0 版本发布周期已于三周前开始。

如果你对 FreeBSD 7.0 的新功能感兴趣，我们建议阅读 Ivan Voras 的精彩总结：<http://ivoras.sharanet.org/freebsd/freebsd7.html>，当然还有这些报告。

下次 BSD 社区的聚会将于 9 月 14 日至 15 日在 [哥本哈根的 EuroBSDCon](http://2007.eurobsdcon.org/) 举行。有关会议和开发者峰会的更多细节请参阅下面的报告。

感谢所有报告者的出色工作！希望你喜欢阅读。

## [谷歌编程之夏](https://www.freebsd.org/status/report-2007-04-2007-06.html#Google-summer-of-code)

### [FreeBSD 的 GUI 审计分析工具](https://www.freebsd.org/status/report-2007-04-2007-06.html#A-GUI-audit-analyzer-for-FreeBSD)

链接

联系人：Dongmei Liu <<ldm@ercist.iscas.ac.cn>>

该项目旨在为 FreeBSD 提供一款 GUI 审计日志分析工具。参考 Ethereal/Wireshark 数据包解析引擎及其框架来查看和解析审计日志。

#### 待办事项

1. 使用 GTK2.0 框架构建 GUI，包括菜单栏、工具栏、列表视图和树视图。
2. 在列表视图和树视图中解析并显示审计日志的尾部文件。
3. 实时捕获审计日志并解析并在列表视图和树视图中显示。
4. 添加过滤机制。
5. 添加统计机制。
6. 远程审计日志分析机制。

### [在 FreeBSD 上的 Apple 的 MacBook](https://www.freebsd.org/status/report-2007-04-2007-06.html#Apple's-MacBook-on-FreeBSD)

| 链接                                                                                                       |
| -------------------------------------------------------------------------------------------------------- |
| [P4 仓库](http://repoman.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/projects/soc2007/rpaulo%2dmacbook/) |
| [wiki 页面](http://wiki.freebsd.org/AppleMacbook)                                                          |

联系方式：Rui Paulo <<rpaulo@FreeBSD.org>>

Apple 的 MacBook 电脑设计精美，具有其他笔记本电脑没有的独特功能。虽然 Mac OS X 是一个很好的操作系统，但 UNIX 用户（像我）更喜欢运行 FreeBSD 等操作系统。该项目旨在为 FreeBSD 提供 bug 修复和新驱动程序，以帮助在该平台上运行这个操作系统。

#### 待办事项

1. 为触控板、键盘、遥控器红外接收器、蓝牙编写驱动程序或修复相关问题。
2. 修复重启、停机、挂起/恢复等问题。

### [BSD Bintools 项目](https://www.freebsd.org/status/report-2007-04-2007-06.html#BSD-Bintools-project)

| 链接                                    |
| ------------------------------------- |
| <http://wiki.freebsd.org/BSDBintools> |

联系方式：Kai Wang <<kaiw27@gmail.com>>

已经完成 ar(1)（包括 ranlib）的基本实现，可在 Perforce 仓库中获得。目前，它提供了 ar(1) 应具有的所有主要功能，并且基于 libarchive 和 libelf 库，因此预计它的结构会比 GPL 版本更简单且更好。项目的下一步工作是进行详细的测试并添加其他功能。

### [分布式日志守护进程](https://www.freebsd.org/status/report-2007-04-2007-06.html#Distributed-Logging-Daemon)

| 链接                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------ |
| [项目设计说明](http://docs.freebsd.org/cgi/getmsg.cgi?fetch=232192+0+/usr/local/www/db/text/2007/freebsd-hackers/20070527.freebsd-hackers) |
| [项目托管的 Perforce 仓库](http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/projects/soc2007/karma%5faudit/dlog\&HIDEDEL=NO)   |

联系方式：Alexey Mikhailov <<karma@FreeBSD.org>> 联系方式：Bjoern Zeeb <<bz@FreeBSD.org>>

该项目的基本思想是实现将日志文件安全可靠地传输到远程主机。尽管实现主要集中在审计日志，但目标是构建可以为任何应用程序提供分布式日志记录的工具，通过使用简单的 API 并与共享库链接。

#### 待办事项

1. 网络协议实现
2. 缓冲区
3. SSL 支持

### [finstall](https://www.freebsd.org/status/report-2007-04-2007-06.html#finstall)

| 链接                                 |
| ---------------------------------- |
| <http://wiki.freebsd.org/finstall> |

联系方式：Ivan Voras <<ivoras@FreeBSD.org>>

`finstall` 项目旨在创建一个下一代的 FreeBSD 安装程序，利用系统中最新的功能。该项目应该在 7.0-RELEASE 中提供可用版本，但目的是将其作为“第二”安装程序系统，与 sysinstall 一起使用，在 7.x 版本期间提供支持。无论如何，sysinstall 将继续支持 finstall 不支持的架构（例如，所有除 i386 和 amd64 之外的架构）。

#### 待办事项

1. 工作进展顺利，按照计划进行。目前在 X11 应用程序执行只读文件系统时遇到了一些小问题（至少这是当前可识别的症状）。
2. 欢迎所有感兴趣的测试人员参加！

### [FreeBSD-update 前端](https://www.freebsd.org/status/report-2007-04-2007-06.html#FreeBSD-update-front-end)

| 链接                                              |
| ----------------------------------------------- |
| <http://wiki.freebsd.org/FreeBSDUpdateFrontend> |

联系方式：Andrew Turner <<andrew@FreeBSD.org>>

该项目分为前端和后端，前端与用户交互，后端与 freebsd-update 交互。前端和后端可以使用 XML 协议进行通信。GUI 几乎已经可以接收用户命令并将其发送给后端。后端能够检测到更新何时准备好。

### [改进 Gvinum](https://www.freebsd.org/status/report-2007-04-2007-06.html#Gvinum-improvements)

| 链接                                                                    |
| --------------------------------------------------------------------- |
| [我的编程之夏工作补丁](http://folk.ntnu.no/lulf/patches/freebsd/gvinum/soc2007) |
| [博客](http://blogs.freebsdish.org/lulf/)                               |
| [Wiki 页面](http://wiki.freebsd.org/UlfLilleengen/SOC)                  |

联系方式：Ulf Lilleengen <<lulf@FreeBSD.org>>

我之前的状态报告包含了大量更新 gvinum 以支持旧 vinum 特性的代码。

今年 gvinum 已经进行了显著的重写。Lukas Ertl 开始重写 gvinum 的组织方式，从使用多消费者/提供者模型，改为使用单一消费者和提供者，并采用一个事件系统，首先处理用户请求，然后执行正常的 I/O 操作（类似于其他 GEOM 类）。这使得代码更易于阅读，也许还会减少一些 bug :)

1. 支持 plexes 和 volumes 的 setstate 操作。
2. 现在命令 attach/detach 可以正常工作。
3. concat/stripe/mirror 命令。之前的代码与新 gvinum 系统发生了更多冲突，但现在应该能正常工作。
4. （挂载状态下）支持重建。
5. （挂载状态下）支持同步。
6. 对旧代码进行了重构（基本上是更新旧代码以使用新的事件系统，并在可能的地方添加一些抽象）。

当然，还有一些时间花在了思考如何完成任务并修复其他 bug。我希望一些人对尝试这个项目感兴趣（所有工作目前都在 perforce 上），可以在 URL 部分找到补丁。这是一个实验性的项目，尽管我已做了大量测试来追踪 bug，但可能仍然存在一些 bug。

我今年夏天还有其他目标。然而，由于 gvinum 的一些部分已被重写，我可能无法完成所有目标，但目前已经开始支持连接卷的扩展（以及镜像卷）。我还希望实现 Raid5 数组的扩展。此外，记录 plexes 也是一个很酷的功能，但实际上并不需要，因为我们已经有了 g\_journal。以上两个功能将在确保 gvinum 完全支持旧版 vinum 功能后进行处理，甚至可能做得更好。由于今年夏天可能有些额外时间，因此我非常欢迎大家提出建议，看看还有什么其他功能可以在这个过程中修复或实现。

#### 待办事项

1. 稳定性，稳定性，稳定性。我希望 gvinum 能非常稳定。为此，我有几台测试机器，将在这些机器上进行不同的测试。我已经制定了一个小的测试计划，并将使用它。
2. 创建一个 gvinumadmin 工具，使 gvinum 对新手用户更加友好。也许可以将其集成到安装程序中。这应该是我在最后做的工作，等一切都正常工作后进行 :) 可能会向 Ivan Voras 请教一下。
3. 更好地记录 gvinum 及其与 vinum 的区别。我已经做了记录，哪些地方需要文档记录，这个任务正在进行中。
4. 实现卷的扩展和缩小功能。
5. 实现 plexes 的日志记录。记录所有写入的奇偶校验数据。

### [PXE 的 HTTP 支持](https://www.freebsd.org/status/report-2007-04-2007-06.html#http-support-for-PXE)

| 链接                                                                                                      |
| ------------------------------------------------------------------------------------------------------- |
| [项目代码库](http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/projects/soc2007/taleks-pxe_http) |
| [与项目相关的 Wiki 页面](http://wiki.freebsd.org/http_support_for_PXE)                                          |

联系方式：Alexey Tarasov <<taleks@FreeBSD.org>>

该项目的主要目标是在 PXE 预启动环境中引入代码，能够通过直接连接或 HTTP 代理从 Web 服务器下载，并准备启动 FreeBSD 内核。

已经实现但尚未彻底测试的功能包括：PXE 包装器核心代码、ARP、ICMP 回显请求/回复、类似常见套接字的套接字代码（UDP 和 TCP 模块）。基于套接字：简单的 DHCP 客户端、DNS 客户端。

目前正在开发 HTTP 客户端、TCP 测试、内核启动和项目模块的主要概念文档。

#### 待办事项

1. 测试不同 PXE 实现中的 PXE API 相关代码。
2. 测试已实现的协议。

### [更新 Linux 兼容层](https://www.freebsd.org/status/report-2007-04-2007-06.html#Linuxulator-update)

| 链接                                                        |
| --------------------------------------------------------- |
| [Linux 兼容层更新 2007](http://wiki.freebsd.org/linux-soc2007) |

联系方式：Roman Divacky <<rdivacky@FreeBSD.org>> 联系方式：Konstantin Belousov <<kib@FreeBSD.org>>

和去年一样，我有机会更新 Linux 兼容层到 Linux 2.6 版本。今年我专注于完成 futex、`*at` 系统调用和 epoll/inotify。

我与 Konstantin Belousov 合作，成功修复了 futex，达到了通过官方 futex 测试程序的状态。该修复已经提交，7.0R 将发布时包含正确的 futex 实现。计划工作包括从 futex 中移除 Giant 锁定，这只需要一些仔细的审查和测试。

最近，我主要关注 \*at 系统调用，补丁几乎完成，可以提交，我希望它能被包含进 7.0R 中。作为这项工作的组成部分，我还实现了原生的 FreeBSD 系统调用。请关注架构邮件列表，我将发布补丁。

我还完成了我的硕士论文，描述了 Linux 兼容层的工作原理，Gábor Kévesdán 正在将其整合进官方的 FreeBSD 文档中。

在 epoll/inotify 领域尚未进行任何工作，但我希望在完成 \*at 系统调用后立即开始工作。

#### 待办事项

1. 完成 `*at` 系统调用。
2. 开始 epoll/inotify 工作。
3. 完成从 futex 中移除 Giant 锁定。

### [重写 lockmgr](https://www.freebsd.org/status/report-2007-04-2007-06.html#lockmgr-rewriting)

| 链接                                   |
| ------------------------------------ |
| <http://wiki.freebsd.org/AttilioRao> |

联系方式：Attilio Rao <<attilio@FreeBSD.org>> 联系方式：Jeff Roberson <<jeff@FreeBSD.org>>

该项目旨在重写 lockmgr(9) 接口，采用更轻量的方式，使用原子指令和直接使用 sleepqueue 接口。这将导致更快的原语、更合理的接口和更高的代码可维护性。

到目前为止，已经创建了三个新文件：kern/kern\_lockng.c、sys/\_lockmgrng.h 和 sys/lockmgrng.h，作为新原语的基础，并且初步实现已经提交到 perforce 分支：//depot/user/attilio/attilio\_lockmgr/...

该实现包含了一套良好的代码，旨在替代旧版 lockmgr。实际上，它只缺少对锁定排空的支持，这将在初步测试阶段之后以及更好的唤醒算法引入后提交（这将大大简化排空过程并提高唤醒性能）。

#### 待办事项

1. 需要一些测试

### [mtund - 魔术隧道守护进程](https://www.freebsd.org/status/report-2007-04-2007-06.html#mtundMagic-Tunnel-Daemon)

| 链接                                                         |
| ---------------------------------------------------------- |
| [mtund Wiki 页面](http://wiki.freebsd.org/SuperTunnelDaemon) |

联系方式：Matus Harvan <<mharvan@FreeBSD.org>>

IP 可以通过多种网络协议在不同层次进行隧道传输，如 IP、ICMP、UDP、TCP、DNS、HTTP、SSH。虽然由于防火墙的存在，直接连接可能不可行，但 IP 数据包可以作为有效载荷封装在其他协议中，从而能够穿越防火墙。然而，每种封装都需要设置不同的程序，用户需要手动尝试不同的封装方式，找出哪些方式在特定环境中可行。

mtund 是一个使用运行时可加载插件的隧道守护进程，能够在每种环境中自动选择最佳的封装方式，并在环境变化时切换到另一种封装方式。目前已有运行代码，能够通过 TCP 和 UDP 进行隧道传输，并且具备有效的故障转移机制。由于这是一个谷歌编程之夏项目，可以预期在夏季期间会有快速的更改和新功能的增加。请查看 Wiki 页面以获取更多详细信息和最新进展。

请注意，该项目最初以 `Super Tunnel Daemon` 为名，但后来更名为 mtund，即魔术隧道守护进程。

#### 待办事项

1. 我始终欢迎大家尝试代码并提供反馈，无论是正面的还是负面的。

### [多播 DNS 和服务发现](https://www.freebsd.org/status/report-2007-04-2007-06.html#Multicast-DNS-and-Service-Discovery)

| 链接                                     |
| -------------------------------------- |
| <http://wiki.freebsd.org/MulticastDNS> |

联系方式：Fredrik Lindberg <<fli@FreeBSD.org>>

该项目旨在为基本系统创建一款多播 DNS 守护进程和服务发现工具。多播 DNS 是零配置网络（Zeroconf）的一部分，提供通过 DNS 类似的名称来寻址主机的能力，无需现有的（单播）管理 DNS 服务器。响应守护进程的工作已经进展良好，唯一缺失的大块是让本地客户端能够执行查询。代码可以在 p4 分支 projects/soc2007/fli-mdns\_sd 中找到，即使它尚不完整，任何人都可以试试看。项目计划可以在 Wiki 上找到。

### [将 Linux KVM 移植到 FreeBSD](https://www.freebsd.org/status/report-2007-04-2007-06.html#Porting-Linux-KVM-to-FreeBSD)

| 链接                                                               |
| ---------------------------------------------------------------- |
| <http://wiki.freebsd.org/FabioChecconi/PortingLinuxKVMToFreeBSD> |

联系方式：Fabio Checconi <<fabio@FreeBSD.org>> 联系方式：Luigi Rizzo <<luigi@FreeBSD.org>>

Linux 基于内核的虚拟机（KVM）是一种利用一些现代 CPU 中的虚拟化扩展（例如，Intel VT 和 AMD-V）进行虚拟化的机制。虚拟化扩展允许普通进程以接近本地速度受控地执行一部分特权指令。这样可以提高系统仿真器（如 qemu、xen、vmware、vkernel、用户模式 Linux（UML）等）的性能。

该项目的目的是将 Linux KVM 移植到 FreeBSD，实现为一个可加载的模块 lkvm.ko。我们使用 ports/devel/linux-kmod-compat 中的方法，几乎不修改原始的 Linux 源代码。我们还将移植一个修改过的 qemu 版本，利用 Linux KVM 提供的功能来加速仿真。

上面的 URL 链接到进度报告，详细说明了项目目标、已完成的里程碑以及提交日志的细节。

截至 2007 年 6 月底，我们主要扩展了 linux-kmod-compat，以支持 Linux KVM 代码使用的内核 API。所需的功能已经以不同程度实现，从简单的存根到完全功能的实现。我们还导入了修改过的 qemu 以及用于构建 Linux KVM 用户空间客户端的库。在 SoC 项目的后半部分，我们计划完成内核 API 的实现，并拥有一个完全功能的 Linux KVM 模块以及它的客户端（qemu）。

### [将 OpenBSD 的 sysctl 硬件传感器框架移植到 FreeBSD](https://www.freebsd.org/status/report-2007-04-2007-06.html#Porting-OpenBSD's-sysctl-Hardware-Sensors-Framework-to-FreeBSD)

| 链接                                                                                                                                    |
| ------------------------------------------------------------------------------------------------------------------------------------- |
| [将 OpenBSD 的 sysctl hw.sensors 框架移植到 FreeBSD，GSoC2007 原始提案](http://mojo.ru/us/GSoC2007.FreeBSD.cnst-sensors.proposal.html)            |
| [cnst 的 GSoC2007 博客](http://cnst.livejournal.com/tag/GSoC2007)                                                                        |
| [cnst 的 GSoC2007 atom feed](http://cnst.livejournal.com/data/atom?tag=GSoC2007)                                                       |
| [在 perforce 中的 cnst-sensors in soc2007](http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/projects/soc2007/cnst-sensors/) |

联系方式：Constantine A. Murenin <<cnst@FreeBSD.org>> 联系方式：Shteryana Shopova <<syrinx@FreeBSD.org>>

自 2003 年以来，OpenBSD 就包含了 sysctl `hw.sensors` 框架；自 2005 年以来，该框架支持 RAID 驱动和大多数已知的 i2c 传感器；自 2006 年以来，框架重新设计，引入了传感器设备的概念，以适应持续增长。该框架包括内核 API、sysctl(3)/sysctl(8)、sensorsd(8)、ntpd(8)、systat(1)、ports/sysutils/symon 和 51 个驱动程序，截至 2007 年 7 月 7 日。

此 GSoC2007 项目旨在将这个统一的硬件监控接口的基础部分移植到 FreeBSD。虽然由于架构差异，无法移植所有驱动程序，但我们计划移植框架的所有其他部分和相关的用户空间工具。

目前，lm(4) 在 isa 上和一些内核 API 已经被移植。接下来的重要步骤是完成 sysctl(3) 的连接代码，以便完成用户空间工具的移植工作。关于 sysctl 的详细讨论正在 arch@ 邮件列表上进行。

#### 待办事项

1. 完成 sysctl(3) 连接代码

### [改进 Ports 基础设施](https://www.freebsd.org/status/report-2007-04-2007-06.html#Ports--infrastructure-improvements)

| 链接                                                                       |
| ------------------------------------------------------------------------ |
| [Gábor 的 2007 谷歌编程之夏 Wiki 页面](http://wiki.freebsd.org/G%C3%A1borSoC2007) |

联系方式：Gábor Kévesdén <<gabor@FreeBSD.org>> 联系方式：Andrew Pantyukhin <<sat@FreeBSD.org>>

Gábor Kévesdén 正在为 Ports 基础设施进行一些改进。今年，他旨在解决长期存在的问题，这些问题在 GNATS 中进行跟踪，但最近没有志愿者参与。通过 Andrew Pantyukhin 的指导，他还以更实际的方式重新实现了 Ports 的 DESTDIR 支持。该项目的完整描述和状态可以在 Gábor 的 2007 谷歌编程之夏 Wiki 页面上找到。

#### 待办事项

1. 请查看 Wiki 页面以获取当前状态。

### [安全回归测试](https://www.freebsd.org/status/report-2007-04-2007-06.html#Security-Regression-Test)

| 链接                                                                                                                       |
| ------------------------------------------------------------------------------------------------------------------------ |
| [Perforce 仓库](http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/projects/soc2007/zhouzhouyi%5fmactest%5fsoc) |

联系方式：Zhouyi Zhou <<zhouzhouyi@FreeBSD.org>> 联系方式：Robert Watson <<rwatson@FreeBSD.org>>

安全回归测试是由 2007 年谷歌编程之夏项目支持的。该阶段的主要目标是测试 FreeBSD 强制访问控制框架的正确性，包括正确地将安全标签从用户空间传递到内核以及强制访问控制钩子的不可绕过性。

过去一个月的工作：

1. 构建了一对用于测试网络相关钩子的伪以太网驱动程序。为了避免数据包通过 lo 接口，驱动程序中扭曲了数据包中的 IP 地址。
2. 构建了一个框架，用于记录在一段时间内调用的强制访问控制钩子。
   * 在内核中，每个非空标签被转换为可读的字符串，并与调用的钩子的名称以及可能的标志或模式（例如，mac\_check\_vnode\_open 钩子的 VREAD/VWRITE）一起记录在尾队列中。有一个线程类似于审计子系统的 audit\_worker，负责将队列记录到用户空间文件中。用户空间程序使用 open、ioctl 和 close 操作 /dev/mactest 节点来触发和停止日志记录。每次触发日志记录机制时，日志文件都会被截断为零。
   * 在用户空间，使用基于 bison 的解析工具解析日志文件，并重构记录链，与测试套件提供的配置文件进行比较，以检查是否调用了预期的钩子以及标签/标志/模式是否正确。测试套件主要遵循 src/tools/regression/fstest，已修改以适应测试强制访问控制框架并包括对信号的测试。

#### 待办事项

1. 代码较为简陋。例如，vn\_open 的调用未检查其返回值，缺乏容错性。代码风格也需要修改。
2. 尽管测试框架已完全构建，但仍需编写详细的测试用例，除了 fstest 和信号外，还需要添加其他测试用例。
3. 审计子系统的测试尚未开始。
4. FreeBSD 中的安全子系统其他部分也需要关注。

### [tarfs：一款 tar 文件系统](https://www.freebsd.org/status/report-2007-04-2007-06.html#tarfs:-A-tar-File-System)

| 链接                                                       |
| -------------------------------------------------------- |
| [TarFS Wiki](http://www.googlebit.com/doku.php?id=tarfs) |

联系方式：Eric Anderson <<anderson@FreeBSD.org>>

Tarfs 是 FreeBSD 的一个简单的 tar 文件系统实现。

当前目标包括：

* 支持所有标准的只读操作
* 支持大容量 tar 文件（几 GB）
* 使用最小的内存
* 允许将 tar 文件作为根文件系统使用
* 足够快以实际使用

当前状态：

* 可以挂载大多数 tar 文件
* 可以执行大多数操作（open, lookup, stat, readdir 等）
* 支持大容量 tar 文件（已测试最大 2GB）
* 使用相对较少的内存 —— 与文件/目录的数量成正比

#### 待办事项

1. 挂载的 tar 文件系统根目录中没有 `..` 目录
2. 关于根目录外子目录中 `..` 的锁定问题
3. 不支持块/字符特殊设备。需要吗？
4. 需要一种目录哈希方法
5. 需要更多的测试

## [项目](https://www.freebsd.org/status/report-2007-04-2007-06.html#Projects)

### [FreeBSD/xen](https://www.freebsd.org/status/report-2007-04-2007-06.html#FreeBSD/xen)

联系方式：Rink Springer <<rink@FreeBSD.org>>

FreeBSD/xen 移植工作正在顺利进行，目标是完成 Kip Macy 的 FreeBSD/xen 移植，并使其符合 7.0 版本的要求。

通常，移植已经很稳定，性能也相当不错。主要瓶颈是无法与 GCC 4.2 配合使用，这是提交之前的最后一个大任务。

#### 待办事项

1. 修复移植，使其能够正确与 GCC 4.2 配合使用。
2. 将 Xen 驱动移植到 newbus。
3. 测试/修复 PAE 支持。
4. 开始支持 amd64。

### [HDTV 驱动（ATSC）](https://www.freebsd.org/status/report-2007-04-2007-06.html#HDTV-Drivers-\(ATSC\))

| 链接                                                                                                                             |
| ------------------------------------------------------------------------------------------------------------------------------ |
| [bktrau Perforce 源代码仓库](http://perforce.freebsd.org/fileSearch.cgi?FSPC=%2F%2Fdepot%2Fuser%2Fjmg%2Fbktrau%2F...\&ignore=GO%21) |
| [cxd Perforce 源代码仓库](http://perforce.freebsd.org/fileSearch.cgi?FSPC=%2F%2Fdepot%2Fuser%2Fjmg%2Fcxd%2F...\&ignore=GO%21)       |

联系方式：John-Mark Gurney <<jmg@FreeBSD.org>>

此条目之前是 Bt878 音频驱动（即 FusionHDTV 5 Lite 驱动）的公告，但随着工作略微扩展，现在它变得更加通用。

自 1 月以来，bktrau 中修复了一些 bug。如果你正在使用早期版本，建议升级，因为该驱动程序可能会导致 panic。该驱动程序支持在同一台机器上使用多个卡（已测试两张卡）。

**FusionHDTV 5 Lite** —— 由于 DViCO 和 LG 缺乏文档，我从 Linux 驱动程序中复制了魔法值，以使 ATSC 捕捉工作。

**ATI HDTV Wonder** —— 在多年尝试加入 ATI 开发者计划后，他们终于暂停了该计划，因此无法获得 ATI 的支持。我已开始为 Conexant CX2388x 基础的卡片开发一个名为 cxd 的驱动程序。ATI HDTV Wonder 使用 ATI 自己的解调器，我在借鉴 Linux 驱动的基础上让它能够调谐。捕捉时，我得到了有效数据，但并不是所有数据。由于 ATI 和 linux-dvb 缺乏支持，该项目已经无限期搁置。

如果有人有其他基于 CX2388x 的卡片，应该不难将该驱动程序移植到其他调谐器上。

对于这两款驱动/卡，提供了一个 Python 模块，并且提供了一个使用它的示例捕获应用程序。现在该模块已知在多线程环境下运行良好，这样调谐（由于 i2c ioctl 的开销）就可以在另一个线程中进行，而不会导致程序变慢。该模块与自定义 PVR 后端一起工作良好。

#### 待办事项

1. 提供对 NTSC 和 FM 调谐的支持。
2. 为其他使用 Bt878 芯片的卡和调谐器添加支持。
3. 为其他使用 CX2388x 芯片的卡和调谐器添加支持。

### [使用 MySQL 减少内核争用](https://www.freebsd.org/status/report-2007-04-2007-06.html#Kernel-contention-reduction-using-mysql)

| 链接                                                  |
| --------------------------------------------------- |
| [MySQL 基准测试和讨论](http://jeffr-tech.livejournal.com/) |

联系方式：Jeff Roberson <<jeff@FreeBSD.org>>

FreeBSD 开发人员一直在使用 MySQL 作为测试平台，以查找内核中的争用热点。通过这一工作，我们已经看到，在 8 路机器上，相较于 6.0，性能提高了 5 倍。最近的更改包括在 fcntl() 中进行更细粒度的锁定，移除 Giant 在 flock 和 fcntl F\_SETLK 中的使用。这些更改将在 7.0 中提供，主要提高写入性能。关于 select() 的实验性更改也已在 arch@ 中讨论，旨在解决那里的争用问题，但这些更改在 7.0 时间框架内不会准备好。

### [在 PMCTools 中捕获堆栈跟踪](https://www.freebsd.org/status/report-2007-04-2007-06.html#Stack-trace-capture-in-PMCTools)

| 链接                                                   |
| ---------------------------------------------------- |
| [PMCTools Wiki 页面](http://wiki.freebsd.org/PmcTools) |

联系方式：Joseph Koshy <<jkoshy@FreeBSD.org>>

内核/hwpmc(4) 部分的堆栈跟踪捕获已经实现，并在 Perforce 中的路径 '//depot/user/jkoshy/projects/pmc/...' 下提供。我目前正在增强 pmcstat(8)，以提取并总结这些信息。感谢 Google Inc. 对这个项目的支持。

### [TrustedBSD 审计](https://www.freebsd.org/status/report-2007-04-2007-06.html#TrustedBSD-Audit)

| 链接                                                      |
| ------------------------------------------------------- |
| [TrustedBSD 审计页面](http://www.trustedbsd.org/audit.html) |

联系方式：Robert Watson <<rwatson@FreeBSD.org>>\
联系方式：Christian Peron <<csjp@FreeBSD.org>>\
联系方式：<<trustedbsd-audit@TrustedBSD.org>>

为 7.0 做准备的一般清理工作。

进程审计状态已移到凭证中，以便在大多数情况下可以无锁访问，并允许在异步上下文中使用。

已导入 OpenBSM 1.0a14，解决了 IPv6 字节序问题，清除了 OpenBSM 在 gcc41 中的警告，向 audit\_submit(3) 添加了 getaudit\_addr()，添加了 zonename 标记；自从之前导入的 CVS 1.0a12 版本以来，还进行了其他更改，包括手册页改进、XML 打印支持、更好的 audit.log.5 文档、额外的 64 位标记类型和新的审计事件标识符。

已添加 MAC 检查，以便 MAC 策略可以控制审计系统调用的使用。

现在审计还提供了一个 security.audit sysctl 节点，用于确定是否已编译审计支持；启动时的控制台打印已被移除。

“options AUDIT”现在已经包含在 7-CURRENT GENERIC 内核中，因此 AUDIT 支持将在 7.0 中开箱即用，无需重新编译内核。仍然需要在 rc.conf 中手动启用审计支持。随着 FreeBSD 7.0 的发布，AUDIT 将是一个完全支持的功能，而不是实验性功能。

### [TrustedBSD MAC 框架](https://www.freebsd.org/status/report-2007-04-2007-06.html#TrustedBSD-MAC-Framework)

| 链接                                                      |
| ------------------------------------------------------- |
| [TrustedBSD MAC 页面](http://www.trustedbsd.org/mac.html) |

联系方式：Robert Watson <<rwatson@FreeBSD.org>>\
联系方式：<<trustedbsd-discuss@TrustedBSD.org>>

清理 MAC 框架的 API/KPI 层：mac.h 现在仅为用户和用户 <-> 内核 API；mac\_framework.h 是内核 <-> MAC 框架 KPI，mac\_policy.h 是 MAC 框架 <-> MAC 策略模块 KPI。类似地，mac\_label\_get() 和 mac\_label\_set() 访问函数现在允许策略访问标签数据，而不需要将 struct label 的二进制布局编码到策略模块中，这为更高效的布局开辟了空间。struct label 现在位于 mac\_internal.h 中，仅在 MAC 框架内部使用。

进行了常规的 MAC 策略清理，包括删除一些示例策略的无操作入口点和 sysctls。mac\_test(4) 已大幅清理，所有入口点添加了计数器。

已添加 UNIX 域套接字连接的 MAC 检查。

已添加 MAC 检查，以便 MAC 策略可以控制审计系统调用的使用。

已移除重复现有特权但没有提供附加上下文的 MAC 检查（如 sysarch\_ioperm、kld\_unload、settime 和 system\_nfsd）——与特权对齐的检查，但提供附加上下文（例如附加参数）的检查被保留。

Biba 和 LOMAC 策略现在实现了 priv(9) 检查，区分可能会危及系统完整性模型的特权和不会危及的特权。

几乎未使用的 mnt\_fslabel / mnt\_label 区别已经通过移至单一 mnt\_label 进行消除。此更改对任何策略没有功能性影响。

为同步与 Mac OS X Leopard 中采用的 MAC 框架版本的命名约定，已经修改了几个与 MAC 相关的接口；还有更多重要的更改正在进行，以完成这种同步。虽然在没有仔细考虑和修改的情况下，不可能在两个平台之间复用策略，但这将使移植变得更加容易。

### [USB](https://www.freebsd.org/status/report-2007-04-2007-06.html#USB)

| 链接                                                                                                                  |
| ------------------------------------------------------------------------------------------------------------------- |
| [当前 USB 文件](http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/projects/usb/src/sys/dev/usb\&HIDEDEL=NO) |
| [我的 USB 主页](http://www.turbocat.net/~hselasky/usb4bsd)                                                              |
| [新 USB 堆栈和 USB 设备驱动程序的代码参考](http://www.turbocat.net/~hselasky/usb4bsd/dev_new_usb.pdf)                              |

联系方式：Hans Petter Sirevaag Selasky <<hselasky@FreeBSD.org>>

在过去三个月中，USB 堆栈发生了若干变化。以下是最重要的变化概述：

1. 现在完全支持通过高速 USB 集线器连接的全速异步设备。由于各种原因，最大异步带宽被限制为 6MBit/s。此限制是可调的。
2. 现在通过 Linux USB API 模拟层，完全支持 Linux USB 设备驱动程序。
3. 进行了各种清理和修复。

Markus Brueffer 仍在继续工作 USB HID 解析器和支持。目前尚未提交任何更改。

如果你想测试新的 USB 堆栈，可以查看 USB 的 Perforce 树或从我的 USB 主页下载 USB 驱动程序的 SVN 版本。目前 tarballs 可能有些过时。

有关新 USB API 的想法和意见，欢迎通过 <freebsd-usb@FreeBSD.org> 提供反馈。

### [更新 USB](https://www.freebsd.org/status/report-2007-04-2007-06.html#USB-update)

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

大约 18 个月前，我开始删除 USB 堆栈中的兼容性宏。这些宏使代码阅读非常困难，也很难诊断问题。它们构成了进入堆栈并理解代码的障碍。此外，许多宏实际上隐藏了除最深入的代码调查外的错误。

我几乎已经删除了客户端驱动程序中的所有宏，并删除了 FreeBSD USB 堆栈核心中所有宏的实例。这使得驱动程序更加易读，并且更加健壮。在此过程中，我修复了许多小错误，包括一些人们没有报告的问题。我还根据用户 PR 以及来自 OpenBSD/NetBSD 驱动程序的反馈，添加了大量的新厂商和产品 ID。

我完成了这项工作，以便 FreeBSD USB 堆栈在 RELENG\_7 期间更容易维护。我计划在这些更改经过 Current 测试后，将它们大多数 MFC 到 RELENG\_6 中。这项工作中只有一个 API 更改，因此这是可行的，并且使得在 6.x 和 7.x 之间共享驱动程序变得更加容易。目前还不清楚 RELENG\_6 会存在多久，所以我希望这能使得 6.3 版本的 USB 得到改进，如果这是人们选择的发布版本。

我避免了对堆栈进行许多更复杂的更改。Hans Petter Selasky (hps) 在树外进行了这些更改的工作。他的堆栈中有很多已经准备好合并的部分，我希望能从他的工作中整合出一些有用的部分，而不造成对 FreeBSD USB 堆栈的干扰。

我也在寻找其他 FreeBSD 开发人员加入并帮助工作。我所做的几乎所有改进，都是通过每周花费几个小时浏览 PR 以处理一些非常简单的工作来完成的。其他人也有很多机会参与改进 FreeBSD 的 USB 堆栈，同时也有机会将 hps USB 堆栈中的有用部分导入进来，最终减少它与当前 FreeBSD USB 堆栈之间的差异。此外，我还在寻找能够从 DragonFlyBSD 进行类似设备 ID 合并的人。

最后，我开始了一项任务，尝试合并所有 BSD 的 usbdevs 文件。没有理由将它们分开。我已经开始修改 usbdevs(1) 以读取 `src/sys/dev/usb/usbdevs` 文件，并通过这种方式报告更详细的信息。合并后的 usbdevs 将更大，并且在 USBVERBOSE 内核中占用更多内存，因此为了缓解这一影响，我正在对 usbdevs(1) 进行一些更改。

#### 待办事项

1. 在 7.0 发布之前，最大的关注点是将更新的设备列表纳入手册页。这个任务对我来说太庞大，无法与我目前清理工作的任务一起完成。
2. 我们需要更多愿意帮助“琐碎”PR 的人，这些 PR 主要是向驱动程序添加 ID。此外，我们还需要定期将我们的驱动程序列表与 DragonFlyBSD、NetBSD 和 OpenBSD 的驱动程序同步。
3. 合并其他 BSD 的 usbdevs 表将非常有帮助。
4. 为 usbdevs(1) 编写一个 usbdevs 解析器。

## [FreeBSD 团队报告](https://www.freebsd.org/status/report-2007-04-2007-06.html#FreeBSD-Team-Reports)

### [Ports](https://www.freebsd.org/status/report-2007-04-2007-06.html#Ports-)

| 链接                                                                                                |
| ------------------------------------------------------------------------------------------------- |
| [FreeBSD Ports](http://www.freebsd.org/ports/)                                                    |
| [如何为 FreeBSD Ports 做贡献](http://www.freebsd.org/doc/en_US.ISO8859-1/articles/contributing-ports/)  |
| [FreeBSD Ports 不可获取的 distfile 调查（Bill Fenner 的报告）](http://people.freebsd.org/~fenner/portsurvey/) |
| [FreeBSD Ports 监控系统](http://portsmon.freebsd.org/index.html)                                      |
| [FreeBSD Ports 管理团队](http://www.freebsd.org/portmgr/index.html)                                   |
| [marcuscom tinderbox](http://tinderbox.marcuscom.com/)                                            |

联系人：Mark Linimon <<linimon@FreeBSD.org>>

Port 数量已超过 17,300。PR（问题报告）数量稳定在约 800；我们尚未完全清理在 xorg7.2 导入冻结期间出现的积压。

在构建集群上进行了 4 次实验性运行，其中最显著的是包注册的速度提升。进一步的实验性运行正在进行中，旨在泛化 autotools 处理。

在多年内，最具影响力的 Port 提交之一是将 xorg 从 6.9 升级到 7.2。这涉及到 Port 内部的完全重构，因为 X.org 本身实际上已将打包责任推给了包含它的操作系统。目的是让操作系统能够更新个别代码（如视频驱动程序），而无需重新打包整个发行版。此提交导致我们经历了有史以来最长期的准备工作和实际的树锁定期。此提交至今仍然存在争议，部分原因是我们的 Port 升级工具无法在没有人工干预的情况下完成升级。

在 xorg 升级的同时，我们将安装目录从过时的 /usr/X11R6 移动到默认的 /usr/local。这进一步复杂化了升级过程。

我们已发布了新的 Port tinderbox 代码、portmaster 更新工具和 portupgrade。

GNOME 已更新到 2.18.2。

自上次报告以来，我们新增了 7 名提交者。我们非常感激所有新成员的帮助。然而，由于时间不足，一些提交者已经将提交权限交给了保管。

不幸的是，Clement Laforet 也因缺乏时间不得不从 portmgr 团队辞职。我们感谢他迄今为止的帮助。

Erwin、Kris 和 Mark 在 BSDCan 会议上会面，审查了所有由 portmgr 拥有的 PR。大量的 PR 被关闭，或者暂停，等待提交者进一步处理。关闭了那些在 -exp 构建后提交的 PR 后，portmgr 拥有的 PR 数量降到了历史最低的 48 个，从约 70 个减少。我们希望在今年剩余的时间里继续取得进展。

#### 待办任务

1. gcc4.2 已经导入到 7.0 的基本系统中。不幸的是，这破坏了大量 Port。我们需要提交者和维护者的帮助，以使这些 Port 在发布时处于良好状态。
2. 剩余的大部分 Port PR 都是“现有 Port /已分配给提交者的 PR”。尽管维护者超时政策有助于减少积压，但我们仍然需要做更多工作，使这些 Port 达到它们真正需要的状态。
3. 尽管我们已经新增了许多维护者，但仍有许多未维护的 Port。amd64 架构上的包有些滞后；而 sparc64 架构上的包需要更多的工作。

### [问题报告数据库](https://www.freebsd.org/status/report-2007-04-2007-06.html#Problem-Report-Database)

| 链接                                                 |
| -------------------------------------------------- |
| [GNATS](http://www.freebsd.org/support.html#gnats) |
| [PR 统计](http://people.freebsd.org/~bsd/prstats/)   |

联系人：Mark Linimon <<bugmeister_at_FreeBSD_dot_org>>

Gavin Atkinson 通过在 FreeBSD 集群上获得 GNATS 账户加入了 bugbuster 团队。他继承了 Matteo Riondato 的工作，后者最终获得了完整的源代码提交权限。到目前为止，他已帮助关闭了近 150 个 PR，其中包括许多已经过时的 PR。欢迎加入！

我们的短期目标是尽量识别出可以在 6.3/7.0 同时发布之前轻松修复的 bug。到目前为止，关于 ata 和 usb 相关的 PR 已取得了很大进展。

今年剩下的目标是激发更多开发者参与修复 bug。为此，我们首先尝试在 PR 提交进来时进行更多的分类，以帮助标记出那些看起来是有效问题的 PR（尤其是包含补丁的 PR）。其次，我们已经开始定期向 <freebsd-bugbusters@FreeBSD.org> 邮件列表发布每周更新，这是一个短小的 PR 列表，我们认为这些 PR 已经准备好进行提交者操作。这些发布内容是从我们维护的文本文件列表自动生成的。

我们将继续努力管理社区对我们处理来件 PR 的期望。特别是，我们尝试避免提交类似“我无法让 XYZ 功能工作”这样的报告。实际上，这些 PR 不会被处理。相反，我们现在鼓励将这些报告提交到像 freebsd-questions@、freebsd-x11@ 等邮件列表。我们的目的是将 GNATS 强调为“问题报告”方法，而非“一般的 FreeBSD 支持”方法。否则，我们认为这会制造出不切实际的期望。

尽管 xorg7.2 导入冻结期间的额外 PR 仍未清理完，整体 PR 数量已降至 5000 以下。i386、kern 和 bin 相关的 PR，以及处于“反馈”状态的 PR 已取得显著进展。此外，Warner Losh 在关闭许多 usb PR 上也取得了进展。

#### 待办任务

1. 请加入 freebsd-bugbusters@ 邮件列表，或加入 EFNet 上的 #freebsd-bugbusters 频道，帮助我们在 PR 提交时进行分类，并帮助我们处理积压问题，协助我们创建一个“bugbusting”社区。

### [发布工程](https://www.freebsd.org/status/report-2007-04-2007-06.html#Release-Engineering)

| 链接                                  |
| ----------------------------------- |
| <http://www.freebsd.org/releng/>    |
| <http://www.freebsd.org/snapshots/> |

联系人：发布工程团队 <<re@FreeBSD.org>>

为了准备 FreeBSD 7.0 的发布，代码冻结于 6 月 18 日开始。目前仍有几个大项目在收尾阶段，同时也有一些在代码冻结开始前完成的工作所导致的问题（例如 GCC 4.2 导入的相关问题）。7.0 的发布时间表尚未确定，但我们希望在 7 月底前完成首个 BETA 构建，并采取“相对正常”的发布周期（几个 BETA 构建后发布两到三个 RC，每个版本间隔大约两周）。

我们计划在 FreeBSD 7.0 发布的同时发布 FreeBSD 6.3，因此 6.3 的发布周期将在确定 7.0 发布周期时一起设置，预计也将在 7 月底进行。

### [安全官员与安全团队](https://www.freebsd.org/status/report-2007-04-2007-06.html#Security-Officer-and-Security-Team)

| 链接                                                     |
| ------------------------------------------------------ |
| <http://www.freebsd.org/security/>                     |
| <http://www.freebsd.org/administration.html#t-secteam> |
| <http://vuxml.freebsd.org/>                            |

联系人：安全官员 <<security-officer@FreeBSD.org>>\
联系人：安全团队 <<security-team@FreeBSD.org>>

自上次状态报告以来，已发布了两份关于 FreeBSD 基本系统中问题的安全公告；这两项问题都出现在 FreeBSD 之外的“第三方”代码中。FreeBSD 漏洞与暴露标记语言（VuXML）文档持续更新；自上次报告以来，新增了 35 条记录，总数达到 925 条。

为了改善 FreeBSD Ports 中的安全问题处理，已成立了一个新的“ports-security”团队，包含定期帮助解决 Port 安全问题并在 FreeBSD VuXML 文档中记录这些问题的 Port 提交者。愿意参与此项工作的提交者可以联系 simon@ 获取更多详情。

FreeBSD 安全团队支持以下 FreeBSD 版本：FreeBSD 5.5、FreeBSD 6.1 和 FreeBSD 6.2。每个支持版本的生命周期结束日期已在网站上列出；预计即将发布的版本中，FreeBSD 6.3 将在发布后支持两年，而 FreeBSD 7.0 将在发布后支持一年。

### [FreeBSD 基金会](https://www.freebsd.org/status/report-2007-04-2007-06.html#The-FreeBSD-Foundation)

| 链接                                               |
| ------------------------------------------------ |
| [FreeBSD 基金会](http://www.freebsdfoundation.org/) |

联系人：Deb Goodkin <<deb@FreeBSD.org>>

FreeBSD 基金会在 Q2 结束时筹集了超过 116,000 美元。我们已经接近实现今年筹集 250,000 美元的目标的一半！我们继续致力于支持开发者沟通，帮助 FreeBSD 开发者参加 BSDCan 大会。我们还是 BSDCan 和开发者峰会的赞助商。我们是 EuroBSDCon 2007 的赞助商，现在开始接受此会议的旅行资助申请。基金会董事会成员与来自湾区和渥太华的公司代表进行了会谈，这些公司正在使用或考虑使用 FreeBSD。

基金会与 Google, Inc. 达成了联合开发协议，赞助 FreeBSD 开发者 Joseph Koshy 改进 FreeBSD 的 HWPMC 实现，包括增加堆栈跟踪支持，并捐赠 SMP 硬件用于未来的 SMP 可扩展性工作。我们非常感激 Google 对这个项目的支持，这将促进 FreeBSD 操作系统及其上运行的应用程序的性能测量与优化。

要了解我们正在做的工作，请访问我们的网站 [http://www.FreeBSDFoundation.org/](http://www.freebsdfoundation.org/)。我们的 7 月简报将很快发布，更新我们如何支持全球项目和社区的情况。

## [内核](https://www.freebsd.org/status/report-2007-04-2007-06.html#Kernel)

### [细粒度线程锁定](https://www.freebsd.org/status/report-2007-04-2007-06.html#Fine-grain-thread-locking)

联系人：Jeff Roberson <<jeff@FreeBSD.org>>\
联系人：Attilio Rao <<attilio@FreeBSD.org>>\
联系人：Kris Kennaway <<kris@FreeBSD.org>>

在过去的 6 个月里，几位开发者开始了一个替换全局调度器锁的新工作，采用类似于 Solaris 容器锁的细粒度接口。这显著减少了高端多处理器机器上的竞争。

该补丁已被合并到 7.0-CURRENT，并已证明非常稳定。目前剩下的唯一 bug 是 rusage，并且仅影响进程时间统计数据。

### [gvirstor](https://www.freebsd.org/status/report-2007-04-2007-06.html#gvirstor)

| 链接                                 |
| ---------------------------------- |
| <http://wiki.freebsd.org/gvirstor> |

联系人：Ivan Voras <<ivoras@FreeBSD.org>>

Gvirstor 是一个 GEOM 类，它提供虚拟存储容量（类似于存储设备的虚拟内存）。它已准备好提交到 HEAD（计划将其纳入 7.0-RELEASE）。

#### 待办任务

1. 欢迎任何有兴趣的测试人员参与！

### [SCHED\_SMP 和 SCHED\_ULE](https://www.freebsd.org/status/report-2007-04-2007-06.html#SCHED_SMP-and-SCHED_ULE)

| 链接                                                        |
| --------------------------------------------------------- |
| [基准测试与 SCHED\_SMP 讨论](http://jeffr-tech.livejournal.com/) |

联系人：Jeff Roberson <<jeff@FreeBSD.org>>

SCHED\_SMP 是 ULE 调度器的一个分支，利用 7.0-CURRENT 中的新细粒度调度器锁，在某些工作负载下显著提高 SMP 性能。它改进了亲和性、更智能的 CPU 负载均衡、结构性改进和许多 sysctl 可调项。这可以被视为 ULE 3.0。关于它是否将作为 SCHED\_SMP 或 SCHED\_ULE 在 7.0 或 7.1 中发布的讨论仍在进行中。

SCHED\_ULE 在 7.0 开发周期中经历了许多 bug 修复和性能改进，应该不再被视为不稳定或实验性。对于大多数工作负载，它在 SMP 上显著超越了 SCHED\_4BSD，甚至在单处理器上也略微优于它。只有一些路径负载表现出最多 5% 的性能惩罚。感谢 Kris Kennaway 和当前用户提供的 bug 报告和性能测试。

### [TrustedBSD priv(9)](https://www.freebsd.org/status/report-2007-04-2007-06.html#TrustedBSD-priv\(9\))

| 链接                                          |
| ------------------------------------------- |
| [TrustedBSD 项目](http://www.trustedbsd.org/) |

联系人：Robert Watson <<rwatson@FreeBSD.org>>\
联系人：<<trustedbsd-discuss@TrustedBSD.org>>

进一步减少 suser(9) 的消费者，以尝试删除 7.0 中的 suser(9) KPI。包括资源限制、System V IPC、PPP、netinet Port 重用、NFS 服务器和 netatalk。尽可能删除不必要或冗余的权限检查。适用于其他文件系统的 UFS 权限已重命名为 VFS 权限。

所有 suser\_cred() 标志和 priv\_check\_cred() 标志现在不再需要，因为 SUSER\_ALLOWJAIL 和 SUSER\_RUID 的使用完全在 kern\_jail.c 和 kern\_priv.c 中确定，并基于权限编号进行选择，而不是调用上下文标志。所有权限现在在 jail 中始终被允许或不被允许，并始终使用 ruid 或 euid。我们将保留标志字段，因为它可能将在未来用于其他用途。

suser(9) 和 priv(9) 中的文档已经更新。

## [网络基础设施](https://www.freebsd.org/status/report-2007-04-2007-06.html#Network-Infrastructure)

### [10Gigabit 网络支持](https://www.freebsd.org/status/report-2007-04-2007-06.html#10Gigabit-Network-Support)

联系人：Kip Macy <<kmacy@FreeBSD.org>>\
联系人：Andrew Gallatin <<gallatin@FreeBSD.org>>\
联系人：Jack Vogel <<jfv@FreeBSD.org>>\
联系人：Robert Watson <<rwatson@FreeBSD.org>>

为两个额外的 10Gigabit 网络驱动程序添加了支持，并在提高 10G 媒体系统性能方面取得了重大进展。

Kip Macy 提交了一个新的 Chelsio 适配器驱动程序。cxgb 驱动程序支持所有当前的 10G 适配器，以及新的四端口千兆型号。该驱动程序得到了 Chelsio 的支持。

Drew Gallatin 对 Myricom 10G 驱动程序 mxge 做出了重大改进。通过这些更新，驱动程序以更少的系统开销实现了线速传输。

Neterion 贡献了 nxge 驱动程序，以支持所有其 Xframe 10GbE 服务器/存储适配器。最初的驱动程序导入由 Sam Leffler 完成，接下来将切换到厂商支持。

Jack Vogel 正在准备一个新的驱动程序，支持最新的 Intel 10G 硬件设备。新驱动程序 ixgbe 将补充现有的 ixgb 驱动程序，后者支持旧版 Intel 10G 卡。

Kip 和 Drew 与其他人员合作，进行性能分析和调优。这项工作改善了 CPU 亲和性并减少了管理网络资源的开销。同时，也在进行定义统一的 Large Receive Offload (LRO) 基础设施的工作。LRO 类似于接收端的 TSO，能够让驱动程序以接近线速的速度接收正常大小的帧。这一通用代码库将有助于替代特定驱动程序的代码。

### [升级 FAST\_IPSEC](https://www.freebsd.org/status/report-2007-04-2007-06.html#FAST_IPSEC-Upgrade)

链接

联系人：George Neville-Neil <<gnn@FreeBSD.org>>\
联系人：Bjoern Zeeb <<bz@FreeBSD.org>>

FAST\_IPSEC 现在已取代 Kame IPsec 成为 HEAD 中的 IPsec 堆栈。这将成为 7.0 版本的一部分。合并发生在 7 月初，由 George 负责内核部分，Bjoern 负责用户空间部分。

内核选项 IPSEC 现在是 FreeBSD 内核中唯一的 IPsec 支持选项。

#### 待办任务

1. 测试、测试、再测试！！！

### [FreeBSD 和 Wake On Lan](https://www.freebsd.org/status/report-2007-04-2007-06.html#FreeBSD-and-Wake-On-Lan)

| 链接                                                            |
| ------------------------------------------------------------- |
| <http://stsp.name/wol/>                                       |
| <http://stsp.name/wol/README.txt>                             |
| <http://www.freebsd.org/cgi/query-pr.cgi?pr=83807\\&cat=kern> |

联系人：Stefan Sperling <<stsp@stsp.name>>

我一直在努力使 Wake On Lan（WOL）在 FreeBSD 上工作。与普遍的看法相反，操作系统支持对于 WOL 正常工作是必要的。特别是网络卡驱动程序需要在系统关机时配置网络卡，以便 WOL 工作，否则卡片将无法唤醒。WOL 不仅仅是 BIOS 问题。

这是一个进行中的工作。目前，支持以下卡片/芯片组：

* NatSemi DP83815 (if\_sis)
* Via Rhine (if\_vr，仅 VT6102 及以上芯片支持 WOL)
* Nvidia nForce (if\_nve，**需要测试**)
* 3Com Etherlink XL 和 Fast Etherlink XL (if\_xl，**需要测试**，仅 3c905B 类型适配器支持 WOL)

我很高兴能收到更多关于我的补丁的反馈。我可以为更多芯片组添加支持，但我需要没有硬件的测试人员。如果你能提供任何支持 WOL 的 FreeBSD NIC 芯片组的技术手册，我将不胜感激。

我特别希望能够收到关于补丁的技术反馈，最好是由愿意细致审查补丁的提交者提供，以使其准备好被合并到 -CURRENT 中。我目前将补丁维护在 RELENG\_6\_2 上供个人使用，但我会将其移植到 -CURRENT 以供合并。

### [多链路 PPP 守护进程 (MPD)](https://www.freebsd.org/status/report-2007-04-2007-06.html#Multi-link-PPP-daemon-\(MPD\))

| 链接                                               |
| ------------------------------------------------ |
| [项目主页](http://sourceforge.net/projects/mpd/)     |
| [变更日志](http://mpd.sourceforge.net/doc/mpd5.html) |

联系人：Alexander Motin <<mav@FreeBSD.org>>

Mpd-4.2 已发布。该版本包含许多新特性、性能改进和修复。

最重要和独特的新功能是链路转发器功能。它允许 mpd 接受任何支持类型的传入连接，并将其转发为相同或不同类型的传出连接。例如，这一功能允许 mpd 实现真实的 LAC，通过接受来自客户端的 PPPoE 连接，并通过 L2TP 隧道将其转发到 LNS。我所知道的其他所有软件 L2TP 实现只是 LAC 模拟器，并不具备真实的传入呼叫转发能力。

此外，mpd-4.2 还提供了以下功能：

* 在多个不同 IP 上监听 PPTP，
* 使用共享密钥进行 L2TP 隧道认证，
* 通过 ng\_bpf 和 ng\_car 实现快速流量过滤、整形和速率限制，
* 新的 'ext-auth' 认证后端，作为 'radius-auth' 的全功能本地替代方案，
* 同时生成进出数据包的 NetFlow。

通过替换外部 ifconfig 和路由调用与其内部实现以及其他优化，4.2 在会话管理中提供了显著的性能提升。新实现的过载保护机制通过监控守护进程的内部消息队列，部分丢弃传入的连接请求，以应对关键负载期。因此，一个简单的 2GHz P4 系统现在能够在仅 30 秒内接受、认证并完全处理 1000 个并发 PPPoE 连接。

#### 待办任务

1. 实现动态链路/捆绑创建。
2. 在转发器模式下支持认证代理。这对某些 LAC/PAC 和隧道切换聚合器（TSA）配置是必需的。
3. 删除静态物理 - 链路 - 捆绑和物理 - 转发器关系。实现根据用户登录、域名和/或其他参数区分传入连接处理的能力。

### [多处理器网络堆栈](https://www.freebsd.org/status/report-2007-04-2007-06.html#Multiprocessor-Network-Stack)

| 链接                                                       |
| -------------------------------------------------------- |
| [Netperf 项目页面](http://www.freebsd.org/projects/netperf/) |

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

自定义文件描述符数组锁已被优化的 sx 锁替换，在 8 核 MySQL 基准测试中，MySQL 事务率提高了 2x-4x。这一改进得益于为频繁的文件描述符查找操作采用共享锁，以及在文件描述符锁严重竞争（如在进行大量套接字 I/O 的多线程 MySQL 服务器中）时，进行了显著的优化。

自定义套接字缓冲区 I/O 序列化锁（sblock），以前通过交叉锁定 SB\_WANT 和 SB\_LOCK 标志与套接字缓冲区互斥锁配合使用，已被优化的 sx 锁替代，导致 8 核系统上 MySQL 和 PostgreSQL 基准测试性能提高了 10%。作为此更改的一部分，sx 锁现在具有可中断睡眠原语，以便 SB\_NOINTR 标志能正常工作。

这些更改还修正了一个长期存在的套接字缓冲区锁竞争和 SB\_NOWAIT 错误，该问题由 Isilon 报告；已合并一个更简化的补丁到 6.x，以修复此错误，而不合并锁定更改。

TCP 调试现在通过新的 tcp\_debug\_mtx 进行正确同步。

UMA 分配计数器现在用于管道，而不是自定义原子计数器，从而降低了管道分配和释放的开销。

网络堆栈和同步方面进行了大量的代码清理、注释工作，并在某些情况下进行了 MFC（合并功能性更改）。

已删除或将从 FreeBSD 7.0 中删除某些非 MPSAFE 子系统，包括 IPX over IP 隧道（不是通用的 IPX/SPX 支持，仅限隧道），KAME IPSEC（FAST\_IPSEC 是 MPSAFE 的，并现在支持 IPv6）、i4b、netatm（仍有其他两个 ATM 堆栈存在）和 ng\_h4。部分功能将在 FreeBSD 7.1 中重新引入，但通过现在删除这些功能，我们能够移除 NET\_NEEDS\_GIANT 兼容性基础设施，从而显著简化和清晰化套接字和网络堆栈的代码。

其他测量和优化项目仍在继续进行；然而，7.0 网络堆栈的锁定/同步工作基本完成。

#### 待办任务

1. 在 BSDCan 上展示了将 netisr 线程（netisr2）并行化的工作，以及按连接将 UDP 和 TCP 处理分配到多个 CPU，而不仅仅是像 7.0 中那样按输入源分配。此项工作将针对 8-CURRENT 分支进行。
2. 完成 7.0 中 netatm 和 NET\_NEEDS\_GIANT 的删除。
3. 完成 mld6 和 nd6 IPv6 子系统的 MPSAFE 锁定，它们目前仍在全局锁下运行。

### [网络堆栈虚拟化](https://www.freebsd.org/status/report-2007-04-2007-06.html#Network-Stack-Virtualization)

| 链接                                  |
| ----------------------------------- |
| <http://imunes.tel.fer.hr/virtnet/> |

联系人：Marko Zec <<zec@fer.hr>>

网络堆栈虚拟化项目旨在扩展 FreeBSD 内核，以维护多个独立的网络状态实例。这将使得系统上的每个 jail 之间实现完全的网络独立性，包括为每个 jail 提供自己的防火墙、虚拟网络接口、流量限制、路由表和 IPSEC 配置。

我相信，保持与 FreeBSD -CURRENT 同步的原型现在足够稳定，适合测试。该原型虚拟化了基本的 INET 和 INET6 内核结构及子系统，包括 IPFW 和 PF 防火墙等。下个月，我计划使 IPSEC 代码完全虚拟化，并完善和记录管理 API。短期目标是为 FreeBSD 7.0-RELEASE 提供生产级内核支持，用于虚拟化网络（作为一个可插拔内核替换模块），同时继续保持代码与 -CURRENT 同步，以便以后进行合并。

### [无线网络](https://www.freebsd.org/status/report-2007-04-2007-06.html#Wireless-Networking)

联系人：Sam Leffler <<sam@FreeBSD.org>>\
联系人：Andrew Thompson <<thompsa@FreeBSD.org>>

对 802.11 无线支持进行了重大更新。更改包括高级站点模式功能，如后台扫描和漫游，并且支持 802.11n 设备。此外，还增加了部分 Atheros 的 SuperG 协议扩展，以便无线客户端与基于 Atheros 的接入点进行更有效的通信。对基础设施的更改也很重要，因为它们简化了未来虚拟接入点（VAP）支持的分发。

这项工作是许多人共同努力的结果，包括 Kip Macy、Andrew Thompson、Sepherosa Ziehau、Max Laier 和 Kevin Lo。现在将这些更改合并到树中，确保它们将在 7.x 分支的生命周期内得到应用。

扫描和 SuperG 工作得到了 Atheros 的支持。802.11n 相关工作得到了 Marvell 的支持。

#### 待办任务

1. 请测试你的无线网络，特别是在 7.0 BETA 和 RC 版本期间。

### [供应商 / 第三方软件](https://www.freebsd.org/status/report-2007-04-2007-06.html#Vendor-/-3rd-Party-Software)

#### [FreeBSD 和 Coverity Prevent](https://www.freebsd.org/status/report-2007-04-2007-06.html#FreeBSD-and-Coverity-Prevent)

链接

联系人：Pawel Jakub Dawidek <<pjd@FreeBSD.org>>\
联系人：David Maxwell <<dmaxwell@coverity.com>>

FreeBSD 的静态分析扫描已经更新为使用最新版本的 Coverity Prevent。Coverity 提供了有关分析配置的额外建议，以最大化工具的效益。

在 BSDCan2007 上，Coverity 为 FreeBSD 提供了一份额外分析工具 Extend 的许可，Extend 允许编写特定于 FreeBSD 的自定义代码检查器。David Maxwell 为感兴趣的 FreeBSD 开发人员提供了培训材料。已经考虑了一些自定义检查器的应用，随着它们的实现和测试，更多的结果将会公布。

### [FreeSBIE](https://www.freebsd.org/status/report-2007-04-2007-06.html#FreeSBIE)

| 链接                                                                 |
| ------------------------------------------------------------------ |
| [FreeSBIE 网站](http://www.freesbie.org/)                            |
| [FreeSBIE 订阅邮件列表](http://liste.gufi.org/mailman/listinfo/freesbie) |

联系人：Matteo Riondato <<matteo@FreeBSD.org>>\
联系人：FreeSBIE 团队 <<staff@freesbie.org>>\
联系人：FreeSBIE 邮件列表 <<freesbie@gufi.org>>

在 FreeSBIE-2.0.1-RELEASE 发布成功后，开发进度有所放缓，但我们有一个重要的任务等待完成：重新启用 unionfs，并尝试新的高效内存文件系统 tmpfs。

对于所有新的 ISO 镜像，我们将遵循 RELENG\_7，并希望在 7.0-RELEASE 发布后，发布一个稳定的镜像。

#### 待办任务

1. 构建并测试一个带有 FreeSBIE+unionfs+tmpfs 的 ISO 镜像。

### [OpenBSD 包过滤器 - pf](https://www.freebsd.org/status/report-2007-04-2007-06.html#OpenBSD-packet-filterpf)

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

HEAD 中的 pf（很快会成为 FreeBSD 7.0）已经更新到 OpenBSD 4.1，带来了一些新特性：

* 已重写 ftp-proxy，添加了 tftp 版本的 tftp-proxy
* pf(4) 现在支持单播反向路径转发（uRPF）检查，以简化入口过滤
* pflog(4) 接口现在可以克隆。pf(4) 现在可以记录到多个 pflog 接口，每条规则可以指定要记录到哪个 pflog 接口
* pflogd(8) 现在可以指定与之工作的 pflog 接口
* pfctl(8) 现在可以使表条目过期
* pf.conf(5) 规则的默认行为是使用 keep state，同时对 TCP 连接启用 S/SA 标志选项。可以使用 no state 和 flags any 禁用状态过滤或 TCP 标志检查
* pfctl(8) 规则集优化器现在可以在 pf.conf(5) 中启用
* pf(4) 锚点现在可以内联加载到主 pf.conf(5) 文件中，并且可以递归打印
* 允许在锚点内的 pf(4) 规则重置计数器，并将计数器读取和重置作为一个原子操作

一些在 OpenBSD 4.1 后发布并显著提高性能的补丁将在稍后合并。

支持 pf 与 netgraph 交互的工作正在进行中，预计将在 7.0 之后导入。由于在更新过程中已完成所有所需的 ABI 更改，我们将在 7.1 中合并此项工作。

### [PC-BSD](https://www.freebsd.org/status/report-2007-04-2007-06.html#PC-BSD)

| 链接                                 |
| ---------------------------------- |
| [PC-BSD 主页](http://www.pcbsd.org/) |

联系人：Kris Moore <<kris@pcbsd.com>>

PC-BSD 1.4 的最后重大更新正在进行中，这将包括 KDE 3.5.7、Beryl、Flash、Intel 无线、Nvidia 驱动程序等！此版本还将包括一些新工具，使得在桌面上运行 PC-BSD 比以往任何时候都更加容易，包括：

* 支持 WIFI 的网络管理器
* 组件的添加/删除
* PF 防火墙管理器
* Xorg 显示设置向导

待解决了任何最后的重大问题，我们将发布 PC-BSD 1.4 的公开 Beta 版，以确保在各种平台上的兼容性。

## [杂项](https://www.freebsd.org/status/report-2007-04-2007-06.html#Miscellaneous)

### [EuroBSDcon 2007](https://www.freebsd.org/status/report-2007-04-2007-06.html#EuroBSDcon-2007)

| 链接                            |
| ----------------------------- |
| <http://2007.eurobsdcon.org/> |

联系人：EuroBSDCon 2007 组织委员会 <<info@EuroBSDCon.dk>>

第六届 EuroBSDCon 将于 2007 年 9 月 14 日（星期五）和 15 日（星期六）在丹麦哥本哈根的 Symbion 举行。

程序已经准备好并在线发布。注册现已开放，关于教程和乐高乐园之旅的详细信息也已准备好。

主题演讲将由 John Hartman 主讲：“真正男人的管道”

如果你与朋友一起在旅馆共享房间，那么住宿会非常便宜，而且休息室有高速互联网接入。当然，住在旅馆是可选的，附近也有几家酒店。

KD85.com 和 O'Reilly 将在会议期间设立展位。

我们仍在寻找更多的赞助商。

已在 EFnet 上创建了一个公共 IRC 频道 #eurobsdcon，用于讨论和提问关于大会的相关事宜。

### [EuroBSDCon 2007 开发者峰会](https://www.freebsd.org/status/report-2007-04-2007-06.html#EuroBSDCon-2007-Developer-Summit)

| 链接                                        |
| ----------------------------------------- |
| <http://wiki.freebsd.org/200709DevSummit> |

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

下一个开发者峰会将与以往的活动有所不同。

非常不同。

不再有讲座厅风格的座位、投影仪、无休止的演讲和湿透的三明治。

相反，我们将前往丹麦乡村的一所老村校，我们将在各处逗留，在旧的科学教室里睡觉，自己做饭，并肆意地进行各种黑客活动。

9 月 17 日和 18 日，紧接着 EuroBSDcon2007 之后（当然也可以选择参加乐高乐园之旅）。

到时候见！

备注：是的，这里并不野蛮，提供高速 ADSL 和 WLAN。

### [libarchive/bsdtar](https://www.freebsd.org/status/report-2007-04-2007-06.html#libarchive/bsdtar)

| 链接                                                      |
| ------------------------------------------------------- |
| [项目页面](http://people.freebsd.org/~kientzle/libarchive/) |

联系人：Tim Kientzle <<kientzle@FreeBSD.org>>\
联系人：Colin Percival <<cperciva@FreeBSD.org>>

libarchive 2 和 bsdtar 2 现在已在 -CURRENT 中，并将在 7.0 中发布。libarchive 1.9 和 bsdtar 1.9 应该会在 6-STABLE 中发布，以赶上 6.3。

libarchive 2 在写入磁盘时比 libarchive 1 快得多。它还支持新的格式，进行了若干小的 API/ABI 修正，更加便携，并且减少了许多错误。特别值得注意的是“libarchive\_test”，这是一个新程序，用来测试 libarchive 的许多功能；任何有意参与 libarchive 开发的人应该熟悉这个测试套件。bsdtar 2 的功能不如 libarchive 2 那么广泛，但修复了多个错误，并利用了 libarchive 2 的多个新特性。

libarchive 1.9 与 libarchive 2 完全相同，只是保持了旧的 API/ABI。同样，bsdtar 1.9 与 bsdtar 2 非常相似，仅缺少一些特性，这些特性会阻止它与现有的 libarchive 1 库一起使用。

#### 待办任务

1. Tim Kientzle 已经开始着手开发一个基于 libarchive 的 cpio 实现，预计可以在 FreeBSD 8 中包含。
2. 需要志愿者：我们希望用基于 libarchive 的 pax 替代过时的 pax 实现。
3. 需要志愿者：pkg\_add 应该使用 libarchive，而不是调用外部 tar，这最终可能会大大提高速度。
4. 需要志愿者：libarchive 应该支持更多的 cpio 变体（简单）；libarchive 应该支持读取和写入 mtree 格式（不难）；libarchive 应该支持写入 GNUtar 1.0 格式的稀疏 tar 条目（有点复杂）；bsdtar 应该支持 --metadata=，以便从一个档案中读取文件名和属性，再从磁盘获取数据创建一个新档案（libarchive 中的 mtree 支持会让这一功能非常有用）；bsdtar 应该在创建档案时保留稀疏性。

### [匈牙利文档项目](https://www.freebsd.org/status/report-2007-04-2007-06.html#The-Hungarian-Documentation-Project)

| 链接                                                                            |
| ----------------------------------------------------------------------------- |
| [志愿者信息](http://www.freebsd.org/hu/docproj/hungarian.html)                     |
| [匈牙利网页](http://www.freebsd.org/hu/)                                           |
| [最新翻译](http://www.freebsd.org/doc/hu_HU.ISO8859-2/articles/linux-comparison/) |

联系人：Gábor Kévesdén <<gabor@FreeBSD.org>>

自上次报告以来，我们增加了一篇已翻译的文章。基础设施已经准备好，支持本地化的文章和书籍，只是缺乏人力资源。我们非常欢迎新的志愿者！如果你有兴趣，请查看以下链接并联系 Gábor。

#### 待办任务

1. 翻译更多文章和书籍。
