# FreeBSD 5.2.1 RELEASE amd64 发行公告（2004 年 2 月 25 日）

**FreeBSD 项目**

版权 © 2000, 2001, 2002, 2003, 2004 FreeBSD 文档项目

```
$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.663.2.13 2004/02/06 21:37:54 bmah Exp $
```

FreeBSD 5.2.1-RELEASE 的发布说明包含了对 FreeBSD 基本系统在 5-CURRENT 开发分支上进行的最近变更的总结。本文件列出了自上一个发布版本以来发布的适用安全公告，以及 FreeBSD 内核和用户空间的重要变更。同时，也提供了一些关于升级的简要说明。

## 1 介绍

本文件包含了 FreeBSD 5.2.1-RELEASE 在 AMD64 硬件平台上的发布说明。它介绍了 FreeBSD 中最近新增、改变或删除的功能，并提供了有关从先前版本升级的说明。

此版本的 FreeBSD 5.2.1-RELEASE 是一个“点版本”，旨在解决在 FreeBSD 5.2-RELEASE 中发现的一些问题（主要是 bug 修复）。

对于新接触 FreeBSD 5-CURRENT 系列的用户，建议阅读《FreeBSD 5.2.1-RELEASE 早期用户指南》。此文档通常可以在发布说明的相同位置找到（无论是作为 FreeBSD 分发版的一部分，还是在 FreeBSD 网站上）。该文档包含了关于使用 FreeBSD 5.2.1-RELEASE 相比于基于 FreeBSD 4-STABLE 开发分支的发布版的优缺点的重要信息。

所有用户在安装 FreeBSD 之前，强烈建议查阅发布的错误修复文档。错误修复文档会更新“临时的”信息，通常是在发布周期后期或发布之后发现的。它通常包含已知的 bug、安全公告和文档的修正。FreeBSD 5.2.1-RELEASE 的最新错误修复文档可以在 FreeBSD 网站上找到。

***

## 2 新特性

本节介绍了自 5.1-RELEASE 以来 FreeBSD 中许多用户可见的新功能或变更。它包括专属于 5-CURRENT 分支的条目，以及一些可能已经合并到其他分支的功能（在 FreeBSD 5.1-RELEASE 之后）。后者的条目标注为 \[已合并]。

典型的发布说明条目会记录自 5.1-RELEASE 之后发布的安全公告、新驱动程序或硬件支持、新命令或选项、重要的 bug 修复或第三方软件升级。它们还可能列出主要 Port/包或发布工程实践的变更。显然，发布说明无法列出每个版本之间对 FreeBSD 所做的所有变更；本文件主要关注安全公告、用户可见的变更和主要架构改进。

描述此点版本特定变更的发布说明条目将标注为 \[5.2.1]。

### 2.1 安全公告

修复了 [realpath(3)](http://www.freebsd.org/cgi/man.cgi?query=realpath\&sektion=3\&manpath=FreeBSD+5.2.1-RELEASE) 中的单字节缓冲区溢出问题。虽然此修复在 FreeBSD 5.1-RELEASE 之前已提交（因此 5.1-RELEASE 不受影响），但在发布文档中未提及。详情请参阅安全公告 [FreeBSD-SA-03:08](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:08.realpath.asc)。\[已合并]

修复了一个可能导致内核尝试传递无效信号的 bug。此 bug 可能导致内核崩溃，或者在某些情况下，未授权修改内核内存。详情请参阅安全公告 [FreeBSD-SA-03:09](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:09.signal.asc)。\[已合并]

修复了 iBCS2 模拟模块中的 bug，该 bug 可能导致泄露内核内存内容。此模块在 FreeBSD 中默认未启用。详情请参阅安全公告 [FreeBSD-SA-03:10](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:10.ibcs2.asc)。\[已合并]

修复了 **OpenSSH** 中的一个缓冲区管理 bug，该 bug 可能导致崩溃。更多信息请参阅安全公告 [FreeBSD-SA-03:12](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:12.openssh.asc)。\[已合并]

修复了 **sendmail** 中的缓冲区溢出问题。更多信息请参阅安全公告 [FreeBSD-SA-03:13](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:13.sendmail.asc)。\[已合并]

修复了一个 bug，可能导致内核在 ARP 缓存代码中引发资源匮乏，最终导致系统崩溃。更多信息请参阅安全公告 [FreeBSD-SA-03:14](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:14.arp.asc)。\[已合并]

修复了 **OpenSSH** PAM 挑战/响应认证子系统中的多个错误。这些 bug 的影响各不相同，详细信息请参阅安全公告 [FreeBSD-SA-03:15](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:15.openssh.asc)。\[已合并]

修复了 [procfs(5)](http://www.freebsd.org/cgi/man.cgi?query=procfs\&sektion=5\&manpath=FreeBSD+5.2.1-RELEASE) 和 [linprocfs(5)](http://www.freebsd.org/cgi/man.cgi?query=linprocfs\&sektion=5\&manpath=FreeBSD+5.2.1-RELEASE) 中的 bug，该 bug 可能导致泄露内核内存内容。更多信息请参阅安全公告 [FreeBSD-SA-03:17](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:17.procfs.asc)。\[已合并]

修复了 **OpenSSL** 中的四个安全漏洞，这些漏洞可能允许远程攻击者使使用 **OpenSSL** 的应用程序崩溃，或执行任意代码并获得应用程序的权限。更多信息请参阅安全公告 [FreeBSD-SA-03:18](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:18.openssl.asc)。\[已合并]

修复了 **BIND** 中的潜在拒绝服务问题。更多信息请参阅安全公告 [FreeBSD-SA-03:19](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:19.bind.asc)。\[已合并]

\[5.2.1] 修复了 [mksnap\_ffs(8)](http://www.freebsd.org/cgi/man.cgi?query=mksnap_ffs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 中的 bug，该 bug 导致创建文件系统快照时将文件系统的参数重置为默认值。可能的后果取决于本地使用情况，但可能包括禁用扩展访问控制列表或启用使用存储在不受信任文件系统上的 `setuid` 可执行文件。此 bug 也影响 [dump(8)](http://www.freebsd.org/cgi/man.cgi?query=dump\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 的 `-L` 选项，该选项使用 [mksnap\_ffs(8)](http://www.freebsd.org/cgi/man.cgi?query=mksnap_ffs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE)。请注意， [mksnap\_ffs(8)](http://www.freebsd.org/cgi/man.cgi?query=mksnap_ffs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 通常仅对超级用户和操作员组成员可用。更多信息请参阅安全公告 [FreeBSD-SA-04:01](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-04:01.mksnap_ffs.asc)。

\[5.2.1] 修复了与 System V 共享内存接口相关的 bug（具体是 [shmat(2)](http://www.freebsd.org/cgi/man.cgi?query=shmat\&sektion=2\&manpath=FreeBSD+5.2.1-RELEASE) 系统调用）。此 bug 可能导致共享内存段引用未分配的内核内存。这可能使本地攻击者未经授权访问内核内存的部分内容，可能导致泄露敏感信息、绕过访问控制机制或特权升级。更多详情请参阅安全公告 [FreeBSD-SA-04:02](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-04:02.shmat.asc)。\[已合并]

### 2.2 内核变化

[acpi(4)](http://www.freebsd.org/cgi/man.cgi?query=acpi\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 驱动程序的 CPU 组件现在支持 C1-C3 空闲状态，适用于单处理器和对称多处理系统（SMP），根据 ACPI 2.0 标准，在处理器空闲时提供节能/降温效果。此外，节流支持已更新为 ACPI 2.0。

\[5.2.1] [devfs(5)](http://www.freebsd.org/cgi/man.cgi?query=devfs\&sektion=5\&manpath=FreeBSD+5.2.1-RELEASE) 路径规则现在在目录上正常工作。

新增“愚蠢控制台”驱动程序 [dcons(4)](http://www.freebsd.org/cgi/man.cgi?query=dcons\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) ，提供本地和远程控制台功能。可以通过 FireWire 使用 [dcons\_crom(4)](http://www.freebsd.org/cgi/man.cgi?query=dcons_crom\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 驱动程序进行访问。[dconschat(8)](http://www.freebsd.org/cgi/man.cgi?query=dconschat\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 工具提供用户访问 [dcons(4)](http://www.freebsd.org/cgi/man.cgi?query=dcons\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 设备的功能。

现在，内核选项 LIBICONV 支持多字节字符集转换方法。

PCI 通用通信驱动程序 [puc(4)](http://www.freebsd.org/cgi/man.cgi?query=puc\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持将并行端口连接到 [ppc(4)](http://www.freebsd.org/cgi/man.cgi?query=ppc\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 驱动程序。

新增驱动程序 [uart(4)](http://www.freebsd.org/cgi/man.cgi?query=uart\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) ，以支持各种类的 UART（通用异步接收/发送器）设备。它是 [sio(4)](http://www.freebsd.org/cgi/man.cgi?query=sio\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 驱动程序的类似物，但支持更广泛的设备。该驱动程序是支持某些架构（如 ia64 和 sparc64）上串行端口所必需的。

实现了一个内核软件看门狗功能。更多信息请参见 [watchdog(4)](http://www.freebsd.org/cgi/man.cgi?query=watchdog\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 和 [watchdogd(8)](http://www.freebsd.org/cgi/man.cgi?query=watchdogd\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE)。

交换分区管理程序进行了重构。用户可见的变化包括布局策略的变更（从固定宽度条带到设备之间的轮询），以提高 I/O 吞吐量，消除了编译时对交换设备数量的限制，并减少了内存开销。

***

#### 2.2.1 特定平台硬件支持

***

#### 2.2.2 启动加载程序变化

#### 2.2.3 网络接口支持

新的驱动程序 [ath(4)](http://www.freebsd.org/cgi/man.cgi?query=ath\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 和 [ath\_hal(4)](http://www.freebsd.org/cgi/man.cgi?query=ath_hal\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 为基于 AR5210、AR5211 和 AR5212 芯片的 802.11a/b/g 设备提供支持。

新增驱动程序 [bfe(4)](http://www.freebsd.org/cgi/man.cgi?query=bfe\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) ，以支持基于 Broadcom BCM4401 的快速以太网适配器。

[bge(4)](http://www.freebsd.org/cgi/man.cgi?query=bge\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持基于 Broadcom 5705 的千兆以太网网卡。\[已合并]

修复了驱动程序 [bge(4)](http://www.freebsd.org/cgi/man.cgi?query=bge\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 中的一个错误，导致它在 10 Mbps 下无法正常工作。

驱动程序 [em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持通过 sysctl 可调参数调整中断延迟，无需重新编译驱动程序。

新增驱动程序 [fatm(4)](http://www.freebsd.org/cgi/man.cgi?query=fatm\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 。这是一个支持 Fore/Marconi PCA200 ATM 卡的 NATM 和 NgATM 驱动程序。

新增驱动程序 [re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) ，支持 RealTek RTL8139C+、RTL8169、RTL8169S 和 RTL8110S PCI 快速以太网和千兆以太网控制器。

[sk(4)](http://www.freebsd.org/cgi/man.cgi?query=sk\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持 SK-9521 V2.0 和基于 3COM 3C940 的千兆以太网网卡。\[已合并]

\[5.2.1] 修复了驱动程序 [sk(4)](http://www.freebsd.org/cgi/man.cgi?query=sk\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 中的几个与多播和混杂模式处理相关的错误。

新的驱动程序 [utopia(4)](http://www.freebsd.org/cgi/man.cgi?query=utopia\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 支持 25MBit/sec、155MBit/sec 和 622MBit/sec ATM 物理层配置、状态和统计信息报告，适用于最常用的 ATM-PHY 芯片。

驱动程序 [wi(4)](http://www.freebsd.org/cgi/man.cgi?query=wi\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 的挂起/恢复支持现在在设备配置为关闭时能正常工作。\[已合并]

驱动程序 [wi(4)](http://www.freebsd.org/cgi/man.cgi?query=wi\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 现在应再次能够与 Lucent 802.11b 接口正常工作。

802.11 支持层已重写，以便为未来的扩展和新功能提供支持。

驱动程序 [xe(4)](http://www.freebsd.org/cgi/man.cgi?query=xe\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 驱动程序现在支持 CE2、CEM28 和 CEM33 卡，并且支持 [multicast(4)](http://www.freebsd.org/cgi/man.cgi?query=multicast\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 数据报。此外，驱动程序中的几个错误已被修复。

多个网络驱动程序的中断处理程序已标记为 `MPSAFE`，意味着它们可以在没有 Giant 锁的情况下运行。已转换的驱动程序包括：[ath(4)](http://www.freebsd.org/cgi/man.cgi?query=ath\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE)、[em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE)、[ep(4)](http://www.freebsd.org/cgi/man.cgi?query=ep\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE)、[fxp(4)](http://www.freebsd.org/cgi/man.cgi?query=fxp\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE)、[sn(4)](http://www.freebsd.org/cgi/man.cgi?query=sn\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE)、[wi(4)](http://www.freebsd.org/cgi/man.cgi?query=wi\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 和 [sis(4)](http://www.freebsd.org/cgi/man.cgi?query=sis\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE)。

#### 2.2.4 网络协议

IPv4 协议实现中的 `ip_flow` 特性已被 `ip_fastforward` 特性替代。`ip_fastforward` 尝试加速简单的包转发案例，将转发的包直接处理到输出接口，而不使用队列或 netisrs。如果它无法处理某个包，则将该包传递给正常的 `ip_input` 例程进行处理。可以通过将 net.inet.ip.fastforwarding sysctl 变量设置为 1 来启用此特性。

新增了选项 `IP_ONESBCAST`，以启用将无方向的 [ip(4)](http://www.freebsd.org/cgi/man.cgi?query=ip\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 广播发送到特定网络接口。

启用 IPFILTER 特性时，还需要启用选项 `PFIL_HOOKS`。

修复了 [ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 限制规则处理中的一个错误，该错误可能导致各种 panic。\[已合并]

[ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 规则现在支持逗号分隔的地址列表（如 `1.2.3.4, 5.6.7.8/30, 9.10.11.12/22`），并允许在逗号后新增空格，以使地址列表更具可读性。\[已合并]

[ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 规则现在支持 C++ 风格的注释。每个注释与其规则一起存储，并通过 [ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) show 命令显示。\[已合并]

[ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在可以修改 [ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 规则集 `31`，该规则集为只读并用于默认规则。可以通过 `ipfw delete set 31` 命令删除它们，但不会通过 `ipfw flush` 命令删除。这实现了一种灵活的“持久规则”形式。更多细节可以在 [ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 中找到。\[已合并]

新增 NetGraph 节点类型 [ng\_atmpif(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_atmpif\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 。它模拟了一个 HARP 物理接口，并允许在没有真实硬件的情况下运行 HARP ATM 协议栈。

已为协议独立组播路由（[pim(4)](http://www.freebsd.org/cgi/man.cgi?query=pim\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE)）新增内核支持。\[已合并]

FreeBSD 蓝牙协议栈已更新：

* **libsdp** 已使用 BSD 风格许可证重新实现。这是因为 Linux BlueZ 代码是以 GPL 许可证发布的。
* 工具 [hccontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=hccontrol\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持四个新命令：`Read`/`Write_Page_Scan_Mode` 和 `Read`/`Write_Page_Scan_Period_Mode`。
* 守护进程 [hcsecd(8)](http://www.freebsd.org/cgi/man.cgi?query=hcsecd\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在将链接密钥存储在磁盘上。不再需要每次都配对设备。
* 修复内核模块 [ng\_hci(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_hci\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 和 [ng\_l2cap(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_l2cap\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 中的 NetGraph 超时问题，该问题可能导致访问已释放的数据结构。
* 修复模块 [ng\_ubt(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_ubt\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) ，在 FreeBSD 5.1-RELEASE 中无法构建的问题。
* [rfcomm\_sppd(1)](http://www.freebsd.org/cgi/man.cgi?query=rfcomm_sppd\&sektion=1\&manpath=FreeBSD+5.2.1-RELEASE) 和 [rfcomm\_pppd(8)](http://www.freebsd.org/cgi/man.cgi?query=rfcomm_pppd\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持通过 SDP 查询 RFCOMM 通道。通过手动指定 RFCOMM 通道，可以禁用此行为，并且这些工具将不使用 SDP 查询。
* 新增工具 [sdpcontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=sdpcontrol\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) ，它类似于 Linux BlueZ SDP 包中的 sdptool 工具。

从 KAME 项目导入了一些 IPv6 和 IPSec 代码的修复和更新。

\[5.2.1] 修复了 KAME 项目中的 IPsec 实现中的一些错误。这些错误与在移除所有引用之前释放内存对象有关，可能会导致在刷新安全策略数据库（SPD）后出现异常行为或内核 panic。

IPv6 高级套接字 API 的支持现在符合 RFC 3542（也称为 RFC 2292bis），而不是 RFC 2292。使用此 API 的应用程序已相应更新。

\[5.2.1] 现在在 GENERIC 内核中默认启用选项 `PFIL_HOOKS`。此变更的最显著影响是使 **IPFilter** 在作为内核模块加载时能够正确工作。

已新增对 RFC 3484 中源地址选择部分的支持。[ip6addrctl(8)](http://www.freebsd.org/cgi/man.cgi?query=ip6addrctl\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 工具可以用来配置地址选择策略。

已向 TCP 实现中新增 `tcp_hostcache` 特性。它缓存了过去 TCP 会话的测量参数，为来自或到相同源或目标的后续连接提供更好的初始起始值。曾经存储在路由表中的类似信息已被移除。

FreeBSD 中的 TCP 实现现在包括对某类 TCP MSS 资源耗尽攻击的保护，形式为对 TCP 段的大小和速率进行限制。第一个限制设置了允许的最小最大 TCP 段大小，由 sysctl 变量 `net.inet.tcp.minmss` 控制（默认值为 216 字节）。第二个限制由变量 `net.inet.tcp.minmssoverload` 设置，控制连接的最大速率，其平均段大小小于 `net.inet.tcp.minmss`。超过此数据包速率的连接会被重置并丢弃。由于此特性是在 5.2-RELEASE 发布周期的后期新增的，连接速率限制默认是禁用的，但可以通过将非零值分配给 `net.inet.tcp.minmssoverload` 来手动启用。

#### 2.2.5 磁盘与存储

驱动程序 [amr(4)](http://www.freebsd.org/cgi/man.cgi?query=amr\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持系统崩溃转储。\[已合并]

驱动程序 [ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 进行了大规模重构。一个显著的变化是，[ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 驱动程序现在不再受制于 Giant 内核锁。需要注意的是，ATA 软件 RAID 系统现在必须在其内核配置文件中包含 device ataraid，因为 device atadisk 不再自动包含此项。

\[5.2.1] 修复了驱动程序 [ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 中的一些错误。最显著的改进是，主/从设备的检测应该更为准确，并且一些与超时相关的问题已被解决。

[ccd(4)](http://www.freebsd.org/cgi/man.cgi?query=ccd\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 现在可以在原始磁盘和其他 [geom(4)](http://www.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 提供者上运行。

驱动程序 [da(4)](http://www.freebsd.org/cgi/man.cgi?query=da\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 现在不再尝试向 USB 和 FireWire 设备发送 6 字节命令。这些设备的特殊处理（希望现在已不再需要）已被禁用；要恢复旧的行为，请在内核配置中新增 `options DA_OLD_QUIRKS`。\[已合并]

现在可以将多个 [geom(4)](http://www.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 模块加载为内核模块，具体包括：`geom_apple`、`geom_bde`、`geom_bsd`、`geom_gpt`、`geom_mbr`、`geom_pc98`、`geom_sunlabel`、`geom_vol_ffs`。

新增了 `GEOM_FOX` 模块，用于检测并选择多个冗余路径以访问同一设备。

[twe(4)](http://www.freebsd.org/cgi/man.cgi?query=twe\&sektion=4\&manpath=FreeBSD+5.2.1-RELEASE) 驱动程序现在支持 3ware 通用 API。\[已合并]

#### 2.2.6 文件系统

现在，通过分别包含内核选项 `CD9660_ICONV`、`MSDOSFS_ICONV`、`NTFS_ICONV` 和 `UDF_ICONV`，支持 cd9660、msdosfs、ntfs 和 udf 文件系统的多字节字符转换。

\[5.2.1] 修复了 GEOM 中的一个错误，该错误可能在某些罕见情况下导致 I/O 停滞。

修复了 smbfs 中的几个越界错误，之前这些错误使其无法正确处理 15 字符的 NetBIOS 名称。

为了更好地支持多达 TB 级别的文件系统，`statfs` 结构中的某些成员的大小已从 32 位变更为 64 位。

* 执行跨此变更的源代码升级的用户，必须确保他们的内核和用户空间的代码版本一致，方法是遵循文档中的源代码升级程序。
* 存在一个向后兼容的 [statfs(2)](http://www.freebsd.org/cgi/man.cgi?query=statfs\&sektion=2\&manpath=FreeBSD+5.2.1-RELEASE) 系统调用版本，但只有在定义了内核选项 `COMPAT_FREEBSD4` 时才可用。强烈建议在内核中包含此选项。
* 使用 [statfs(2)](http://www.freebsd.org/cgi/man.cgi?query=statfs\&sektion=2\&manpath=FreeBSD+5.2.1-RELEASE) 的程序需要重新编译。已知的例子包括 Port [devel/gnomevfs2](http://www.freebsd.org/cgi/url.cgi?ports/devel/gnomevfs2/pkg-descr)、[mail/postfix](http://www.freebsd.org/cgi/url.cgi?ports/mail/postfix/pkg-descr) 和 [security/cfg](http://www.freebsd.org/cgi/url.cgi?ports/security/cfg/pkg-descr) 。

增加了对 NFSv4 的支持，通过导入密歇根大学的 Citi NFSv4 客户端实现。更多信息可以在 [mount\_nfs4(8)](http://www.freebsd.org/cgi/man.cgi?query=mount_nfs4\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 和 [idmapd(8)](http://www.freebsd.org/cgi/man.cgi?query=idmapd\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 手册页中找到。

\[5.2.1] 修复了 NFSv4 客户端中的一个崩溃问题；此问题发生在尝试对 NFSv3/NFSv2-only 服务器执行操作时。

***

#### 2.2.7 多媒体支持

### 2.3 用户空间变更

[acpiconf(8)](http://www.freebsd.org/cgi/man.cgi?query=acpiconf\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持 -i 选项以打印电池信息。

[acpidb(8)](http://www.freebsd.org/cgi/man.cgi?query=acpidb\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE)，一个 ACPI DSDT 调试器，已添加。

[arp(8)](http://www.freebsd.org/cgi/man.cgi?query=arp\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持 `-i` 选项，限制当前操作的范围仅限于特定接口上的 ARP 条目。此选项仅适用于显示操作。它应该对具有多个网络接口的路由器非常有用。\[已合并]

[atmconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=atmconfig\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 程序已新增，用于配置 ATM 驱动程序和 IP-over-ATM 功能。

[chroot(8)](http://www.freebsd.org/cgi/man.cgi?query=chroot\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在允许通过 `-u`、`-g` 和 `-G` 选项分别可选地设置用户、主组或组列表，以便在 chroot 环境中使用。\[已合并]

`compat4x.i386` 库已更新，以对应 FreeBSD 4.9-RELEASE 中提供的版本。

由于 devfs 的强制存在，工具 `dev_mkdb` 不再需要，已被移除。

[dhclient(8)](http://www.freebsd.org/cgi/man.cgi?query=dhclient\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在轮询网络接口的状态，仅在接口启动时发送 DHCP 请求。轮询间隔可以通过 `-i` 选项控制。

[fsck(8)](http://www.freebsd.org/cgi/man.cgi?query=fsck\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 的 `lost+found` 目录的默认模式现在是 `0700`，而不是 `01777`。\[已合并]

[fsck\_ffs(8)](http://www.freebsd.org/cgi/man.cgi?query=fsck_ffs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 和 [newfs(8)](http://www.freebsd.org/cgi/man.cgi?query=newfs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在在每个文件系统的根目录中创建一个 .snap 目录，权限为操作组。[fsck\_ffs(8)](http://www.freebsd.org/cgi/man.cgi?query=fsck_ffs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE)、[mksnap\_ffs(8)](http://www.freebsd.org/cgi/man.cgi?query=mksnap_ffs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 和 [dump(8)](http://www.freebsd.org/cgi/man.cgi?query=dump\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 将其文件系统快照写入该目录。此变更避免了在创建快照时锁定文件系统根目录的访问，也帮助非根用户创建快照。

工具 [ffsinfo(8)](http://www.freebsd.org/cgi/man.cgi?query=ffsinfo\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 已更新，以支持 UFS2 文件系统，并已重新启用。

工具 [iasl(8)](http://www.freebsd.org/cgi/man.cgi?query=iasl\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) ，一个 ACPI 源语言 (ASL) 和 ACPI 机器语言 (AML) 的编译器/反编译器，已添加。

[ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持为接口配置选项 `staticarp`，禁用该接口的 ARP 请求发送。

[initgroups(3)](http://www.freebsd.org/cgi/man.cgi?query=initgroups\&sektion=3\&manpath=FreeBSD+5.2.1-RELEASE) 库函数中的修复现在导致登录失败，如果登录过程无法成功将进程凭据设置为包括用户定义的 **所有** 组。当前内核限制为 16 个组；管理员可能希望检查用户是否定义了超过 16 个组，否则将无法登录。

[ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 的 `list` 和 `show` 命令现在支持规则号范围。\[已合并]

[ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持 `-n` 参数，用于测试命令的语法，而不实际变更任何内容。\[已合并]

[kdump(1)](http://www.freebsd.org/cgi/man.cgi?query=kdump\&sektion=1\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持 `-p` 选项，仅显示与特定进程对应的跟踪事件，并且支持新 `-E` 参数来显示相对于转储开始的时间戳。

[last(1)](http://www.freebsd.org/cgi/man.cgi?query=last\&sektion=1\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持 `-n` 参数，用于限制输出报告中的行数。

libalias 库、[natd(8)](http://www.freebsd.org/cgi/man.cgi?query=natd\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 和 [ppp(8)](http://www.freebsd.org/cgi/man.cgi?query=ppp\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持 Cisco Skinny Station 协议，这是 Cisco IP 电话与 Cisco Call Manager 通信时使用的协议。请注意，当前不支持将 Call Manager 放在 NAT 网关后面。\[已合并]

已移除 libcipher DES 加密库。其所有功能已由 libcrypto 库提供，并且所有使用 libcipher 的基本系统程序已转换为改用 libcrypto。

已新增 libkiconv 库，以支持在内核中处理可加载字符集转换表。

libwrap 和 [tcpdchk(8)](http://www.freebsd.org/cgi/man.cgi?query=tcpdchk\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在默认配置为支持扩展的 **tcp\_wrappers** 语法。

已重新实现工具 [locale(1)](http://www.freebsd.org/cgi/man.cgi?query=locale\&sektion=1\&manpath=FreeBSD+5.2.1-RELEASE)，并且现在符合 POSIX 标准。新的 `-m` 选项显示所有可用的代码集。

工具 [mount(8)](http://www.freebsd.org/cgi/man.cgi?query=mount\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持在指定 `-v` 参数时，除了正常信息外，还显示每个文件系统的文件系统 ID，而 [umount(8)](http://www.freebsd.org/cgi/man.cgi?query=umount\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 工具现在也接受文件系统 ID，以及通常的设备和路径名称。这允许在两个或更多文件系统共享相同设备和挂载点名称时，明确指定要卸载的文件系统。

[**mount\_cd9660(8)**](http://www.freebsd.org/cgi/man.cgi?query=mount_cd9660\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE)、[**mount\_ntfs(8)**](http://www.freebsd.org/cgi/man.cgi?query=mount_ntfs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 和 [**mount\_udf(8)**](http://www.freebsd.org/cgi/man.cgi?query=mount_udf\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 工具现在支持一个 `-C` 选项，用于指定本地字符集以转换 Unicode 文件名。可以使用此选项指定多字节字符集。

[**mount\_msdosfs(8)**](http://www.freebsd.org/cgi/man.cgi?query=mount_msdosfs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 工具现在支持一个 `-M` 选项，用于指定文件系统中文件夹的最大权限。\[已合并]

[**mount\_msdosfs(8)**](http://www.freebsd.org/cgi/man.cgi?query=mount_msdosfs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 工具现在支持一个 `-D` 选项，用于指定 MS-DOS 代码页和 `-L` 选项，用于指定本地字符集。这些选项用于转换文件名的字符集。`/usr/libdata/msdosfs` 表已经不再使用。

[**mount\_nwfs(8)**](http://www.freebsd.org/cgi/man.cgi?query=mount_nwfs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE)、[**mount\_portalfs(8)**](http://www.freebsd.org/cgi/man.cgi?query=mount_portalfs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 和 [**mount\_smbfs(8)**](http://www.freebsd.org/cgi/man.cgi?query=mount_smbfs\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 工具已从 `/sbin` 移动到 `/usr/sbin`。

[**nologin(8)**](http://www.freebsd.org/cgi/man.cgi?query=nologin\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 程序已用 C 语言重新实现（之前是一个 shell 脚本）。

\[5.2.1] 已修复一个 bug，解决了在使用第三方 NSS 模块（例如 [net/nss\_ldap](http://www.freebsd.org/cgi/url.cgi?ports/net/nss_ldap/pkg-descr)）和成员名单较大的组时出现的问题。

[**rc.conf(5)**](http://www.freebsd.org/cgi/man.cgi?query=rc.conf\&sektion=5\&manpath=FreeBSD+5.2.1-RELEASE) 变量 `ntpd_flags` 现在默认包括 `-f /var/db/ntpd.drift`。

已新增 PAM 模块 [**pam\_guest(8)**](http://www.freebsd.org/cgi/man.cgi?query=pam_guest\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) ，允许访客登录。它替代了 pam\_ftp(8) 模块。

[**ps(1)**](http://www.freebsd.org/cgi/man.cgi?query=ps\&sektion=1\&manpath=FreeBSD+5.2.1-RELEASE) 和 [**top(1)**](http://www.freebsd.org/cgi/man.cgi?query=top\&sektion=1\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持 -H 参数，以显示每个进程中的所有内核可见线程。

已修复一个 bug，使得 [**rarpd(8)**](http://www.freebsd.org/cgi/man.cgi?query=rarpd\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 能识别可移动的以太网网卡。

[**repquota(8)**](http://www.freebsd.org/cgi/man.cgi?query=repquota\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持 `-n` 参数，以数字方式显示用户和组。

[**rtld(1)**](http://www.freebsd.org/cgi/man.cgi?query=rtld\&sektion=1\&manpath=FreeBSD+5.2.1-RELEASE) 现在默认包含“libmap”功能；不再需要 `WITH_LIBMAP` 编译开关，该开关已被废除。更多信息请参见 [libmap.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=libmap.conf\&sektion=5\&manpath=FreeBSD+5.2.1-RELEASE)。

[**savecore(8)**](http://www.freebsd.org/cgi/man.cgi?query=savecore\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持一个 `-C` 参数，仅指示 coredump 文件的存在或不存在。

已移除工具 symorder。由于所有内核现在都使用 ELF 格式，因此不再需要 `a.out` 格式工具链。

[**sysinstall(8)**](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 现在可以在安装过程中选择替代的 MTA。目前，支持 **exim** 和 **Postfix**。

[**sysinstall(8)**](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 不再支持系统“安全配置文件”；此功能已被个别调节开关替代，用于启用和禁用 [**sshd(8)**](http://www.freebsd.org/cgi/man.cgi?query=sshd\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 并设置系统安全级别。

[**systat(1)**](http://www.freebsd.org/cgi/man.cgi?query=systat\&sektion=1\&manpath=FreeBSD+5.2.1-RELEASE) 现在包括对 IPv6 和 ICMPv6 流量的显示。\[已合并]

[**uname(1)**](http://www.freebsd.org/cgi/man.cgi?query=uname\&sektion=1\&manpath=FreeBSD+5.2.1-RELEASE) 现在支持 `-i` 参数，返回内核标识。这一名称也可以通过 sysctl 变量 `kern.ident` 获取。

许多 `/bin` 和 `/sbin` 中的工具现在作为静态链接的“crunched”二进制文件提供，存放在 `/rescue` 中。该功能类似于 [**sysinstall(8)**](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE) 安装的 `/stand` 目录，但 `/rescue` 包含更多功能，并且作为 `buildworld`/`installworld` 操作的一部分进行更新。更多细节请参见 [**rescue(8)**](http://www.freebsd.org/cgi/man.cgi?query=rescue\&sektion=8\&manpath=FreeBSD+5.2.1-RELEASE)。

许多 `/bin` 和 `/sbin` 中的可执行文件现在采用动态链接，而非静态链接。此功能为基本系统工具提供了对可加载的 PAM 和 NSS 模块的支持，也减少了由于使用共享库而导致的根文件系统存储需求。可以通过在 `buildworld` 中定义 Makefile 变量 `NO_DYNAMICROOT` 来禁用此功能。请注意，在 `/rescue` 目录中提供了静态链接的、压缩过的可执行文件，以便在系统修复和恢复操作中使用。

### 2.4 第三方软件

**ACPI-CA** 代码已从 20030228 快照更新到 20030619 快照。

**amd** 已从 6.0.7 更新至 6.0.9。

**awk**（来自贝尔实验室）已从 2003 年 3 月 14 日的快照更新至 2003 年 7 月 29 日的快照。

**BIND** 已从 8.3.4 更新至 8.3.7。\[已合并]

\[5.2.1] 从 **CVS** 1.11.10 和 1.11.11 中回溯了安全改进。特别是，现在会拒绝某些格式错误的模块请求，并且在使用 cvs pserver 模式时，尝试以 root 身份进行身份验证的请求会被拒绝并通过 [syslog(3)](http://www.freebsd.org/cgi/man.cgi?query=syslog\&sektion=3\&manpath=FreeBSD+5.2.1-RELEASE) 记录。

**GCC** 已从 3.2.2 更新至 2003 年 11 月 6 日的 3.3.3 预发布快照。

> **注：**
>
> 之前的 **GCC** 版本在启用 `-march=pentium4` 优化时会生成不正确的代码。此问题已通过此次升级修复，且之前针对 `CPUTYPE=p4` 的解决方法已被移除。

**GNU Readline** 已从 4.2 更新至 4.3。

**GNU Sort** 已从 textutils 2.0.21 版本更新至 textutils 2.1 版本。

**Heimdal Kerberos** 已从 0.5.1 更新至 0.6。

**ISC DHCP** 客户端已从 3.0.1rc11 更新至 3.0.1rc12。

**lukemftp** 已从 1.6beta2 更新至 2003 年 11 月 11 日的 NetBSD 快照。

**OpenPAM** 已从“Dianthus”版本更新至“Dogwood”版本。

**OpenSSL** 已从 0.9.7a 更新至 0.9.7c。\[已合并]

**sendmail** 已从 8.12.9 更新至 8.12.10。\[已合并]

**texinfo** 已从 4.5 更新至 4.6。\[已合并]

时区数据库已从 tzdata2003a 版本更新至 tzdata2003d 版本。\[已合并]

### 2.5 Ports/软件包

如果定义了 `GNU_CONFIGURE`，则在 WRKDIR 下找到的所有 `config.guess` 和 `config.sub` 实例将被 `PORTSDIR/Template` 中的主版本所替代。这允许旧的 Port（其中包含这些脚本的旧版本）在较新的架构（如 ia64 和 amd64）上进行构建。

***

### 2.6 发布工程与集成

不再为 alpha、amd64 和 ia64 架构构建软盘安装镜像。

**GNOME** 的支持版本已从 2.2.1 更新至 2.4。\[已合并]

**KDE** 的支持版本已从 3.1.2 更新至 3.1.4。\[已合并]

\[5.2.1] Port 和软件包 [sysutils/kdeadmin3](http://www.freebsd.org/cgi/url.cgi?ports/sysutils/kdeadmin3/pkg-descr) 已更新至版本 3.1.4\_1。此更新修复了 **KUser** 应用程序中的一个错误，该错误可能导致 root 用户从密码文件中被删除。

***

### 2.7 文档

为了减少信息重复（以及随后维护一致性的难度），硬件说明中的许多具体设备实例已被移至系统手册页。该项目在本次发布中仍在进行中。

已启动土耳其语（tr\_TR.ISO8859-9）翻译项目。

***

## 从旧版 FreeBSD 升级

*强烈* 现有 FreeBSD 系统的用户建议阅读《FreeBSD 5.2.1-RELEASE 早期采用者指南》。此文档通常以 `EARLY.TXT` 为文件名，位于发布媒体或其他可以找到发布说明的地方。它提供了有关升级的一些说明，更重要的是，还讨论了升级到 FreeBSD 5.X 与继续使用 FreeBSD 4.X 的相对优点。

> **重要：**
>
> 升级 FreeBSD 时，当然只能在备份 **所有** 数据和配置文件之后进行。

***

此文件以及其他与发布相关的文档可以从 [ftp://ftp.FreeBSD.org/](ftp://ftp.freebsd.org/) 下载。

有关 FreeBSD 的问题，请在联系 <questions@FreeBSD.org> 之前阅读 [文档](http://www.freebsd.org/docs.html)。

有关此文档的问题，请发送电子邮件至 <doc@FreeBSD.org>。
