# FreeBSD 5.2 RELEASE amd64 发行公告（2004 年 1 月 9 日）

* 原文链接：[FreeBSD/amd64 5.2-RELEASE Release Notes](https://www.freebsd.org/releases/5.2R/relnotes-amd64/)

**FreeBSD 项目**

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

```
$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.663.2.5 2004/01/09 17:08:32 bmah Exp $
```

FreeBSD 5.2-RELEASE 的版本说明包含了对 5-CURRENT 开发分支中 FreeBSD 基本系统最近变更的总结。本文档列出了自上一个版本发布以来发布的适用安全公告，以及对 FreeBSD 内核和用户空间的重大变更。还简要介绍了升级的相关事项。

## 1 介绍

本文档包含了 FreeBSD 5.2-RELEASE 在 AMD64 硬件平台上的版本说明。它介绍了最近新增、改变或删除的 FreeBSD 特性，并提供了从之前版本升级的相关说明。

此版本的 FreeBSD 5.2-RELEASE 是一个发布版本。可以在 [ftp://ftp.FreeBSD.org/](ftp://ftp.freebsd.org/) 或任何镜像站点找到。有关获取此版本（或其他）FreeBSD 发布版的更多信息，可以参考 [《获取 FreeBSD》](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mirrors.html) 附录，该内容位于 [FreeBSD 手册](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/) 中。

对于刚接触 FreeBSD 5-CURRENT 系列版本的用户，还应阅读《FreeBSD 5.2-RELEASE 早期采用者指南》。这份文档通常与版本说明一起发布（可以是 FreeBSD 发布版的一部分或在 FreeBSD 网站上找到）。它包含了使用 FreeBSD 5.2-RELEASE 相比基于 FreeBSD 4-STABLE 开发分支的版本的优缺点的关键信息。

所有用户在安装 FreeBSD 之前，强烈建议查看发布的勘误（修订说明）。修订说明文件会更新“临时发布”的信息，通常是在发布周期的最后阶段或发布之后发现的信息。它通常包含已知的漏洞、安保通告以及文档修正。FreeBSD 5.2-RELEASE 的最新修订说明可以在 FreeBSD 网站上找到。

## 2 新特性

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

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

### 2.1 安全公告

修复了 [realpath(3)](http://www.freebsd.org/cgi/man.cgi?query=realpath\&sektion=3\&manpath=FreeBSD+5.2-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，该 bug 可能导致内核在 ARP 缓存代码中造成资源耗尽，最终导致系统崩溃。更多信息请参见安全公告 [FreeBSD-SA-03:14](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:14.arp.asc)。\[已合并]

修复了 **OpenSSH** PAM 挑战/响应认证子系统中的多个错误。这些错误的影响不同；详细信息请参见安全公告 [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-RELEASE) 和 [linprocfs(5)](http://www.freebsd.org/cgi/man.cgi?query=linprocfs\&sektion=5\&manpath=FreeBSD+5.2-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)。\[已合并]

### 2.2 内核变化

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

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

现在支持通过 LIBICONV 内核选项进行多字节字符集转换方法。

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

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

已实现内核软件看门狗功能。更多信息请参见 [watchdog(4)](http://www.freebsd.org/cgi/man.cgi?query=watchdog\&sektion=4\&manpath=FreeBSD+5.2-RELEASE) 和 [watchdogd(8)](http://www.freebsd.org/cgi/man.cgi?query=watchdogd\&sektion=8\&manpath=FreeBSD+5.2-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-RELEASE) 和 [ath\_hal(4)](http://www.freebsd.org/cgi/man.cgi?query=ath_hal\&sektion=4\&manpath=FreeBSD+5.2-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-RELEASE) ，用于支持基于 Broadcom BCM4401 的快速以太网适配器。

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

修复了驱动 [bge(4)](http://www.freebsd.org/cgi/man.cgi?query=bge\&sektion=4\&manpath=FreeBSD+5.2-RELEASE) 中的一个 bug，防止它在 10 Mbps 下正常工作。

驱动程序 [em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+5.2-RELEASE) 现在支持使用 sysctl 调优设置中断延迟，而无需重新编译驱动。

新增驱动程序 [fatm(4)](http://www.freebsd.org/cgi/man.cgi?query=fatm\&sektion=4\&manpath=FreeBSD+5.2-RELEASE) 。该驱动程序支持 NATM 和 NgATM，兼容 Fore/Marconi PCA200 ATM 卡。

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

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

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

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

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

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

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

启用 IPFILTER 功能还需要启用选项 `PFIL_HOOKS`。

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

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

[ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+5.2-RELEASE) 现在可以修改 [ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&manpath=FreeBSD+5.2-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-RELEASE)。\[已合并]

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

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

FreeBSD 蓝牙协议栈已更新：

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

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

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

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

TCP 实现中新增了 `tcp_hostcache` 特性。它缓存了过去 TCP 会话的测量参数，以便为后续连接提供更好的初始起始值，无论是来自同一源地址还是目的地址。以前存储在路由表中的类似信息已被移除。

#### 2.2.5 磁盘与存储

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

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

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

驱动程序 [da(4)](http://www.freebsd.org/cgi/man.cgi?query=da\&sektion=4\&manpath=FreeBSD+5.2-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-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-RELEASE) 驱动程序现在支持 3ware 通用 API。\[已合并]

#### 2.2.6 文件系统

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

修正了 smbfs 中的一些越界错误，这些错误导致其在处理 15 字符 NetBIOS 名称时无法正常工作。

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

* 执行源代码升级的用户必须确保内核和用户空间的版本一致，可以遵循文档中的源代码升级程序进行操作。
* 如果定义了内核选项 `COMPAT_FREEBSD4`，则存在一个向后兼容版本的 [statfs(2)](http://www.freebsd.org/cgi/man.cgi?query=statfs\&sektion=2\&manpath=FreeBSD+5.2-RELEASE) 系统调用。强烈建议在内核中包括此选项。
* 使用 [statfs(2)](http://www.freebsd.org/cgi/man.cgi?query=statfs\&sektion=2\&manpath=FreeBSD+5.2-RELEASE) 的程序需要重新编译。已知的示例包括 [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) 等 Port。

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

#### 2.2.7 多媒体支持

### 2.3 用户空间变化

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

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

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

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

[chroot(8)](http://www.freebsd.org/cgi/man.cgi?query=chroot\&sektion=8\&manpath=FreeBSD+5.2-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-RELEASE) 现在会轮询网络接口的状态，仅在接口处于活动状态时发送 DHCP 请求。轮询间隔可通过 `-i` 选项进行控制。

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

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

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

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

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

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

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

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

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

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

libalias 库，[natd(8)](http://www.freebsd.org/cgi/man.cgi?query=natd\&sektion=8\&manpath=FreeBSD+5.2-RELEASE) 和 [ppp(8)](http://www.freebsd.org/cgi/man.cgi?query=ppp\&sektion=8\&manpath=FreeBSD+5.2-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-RELEASE) 现在默认配置支持扩展的 **tcp\_wrappers** 语法。

[locale(1)](http://www.freebsd.org/cgi/man.cgi?query=locale\&sektion=1\&manpath=FreeBSD+5.2-RELEASE) 实用程序已重新实现，并符合 POSIX 标准。新增的 `-m` 选项可以显示所有可用的字符集。

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

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

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

[mount\_msdosfs(8)](http://www.freebsd.org/cgi/man.cgi?query=mount_msdosfs\&sektion=8\&manpath=FreeBSD+5.2-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-RELEASE)、[mount\_portalfs(8)](http://www.freebsd.org/cgi/man.cgi?query=mount_portalfs\&sektion=8\&manpath=FreeBSD+5.2-RELEASE) 和 [mount\_smbfs(8)](http://www.freebsd.org/cgi/man.cgi?query=mount_smbfs\&sektion=8\&manpath=FreeBSD+5.2-RELEASE) 工具已从 `/sbin` 移动到 `/usr/sbin`。

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

[rc.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=rc.conf\&sektion=5\&manpath=FreeBSD+5.2-RELEASE) 变量 `ntpd_flags` 对于 [ntpd(8)](http://www.freebsd.org/cgi/man.cgi?query=ntpd\&sektion=8\&manpath=FreeBSD+5.2-RELEASE) 现在默认包含 `-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-RELEASE)，允许访客登录。它取代了 pam\_ftp(8) 模块。

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

已修复 [rarpd(8)](http://www.freebsd.org/cgi/man.cgi?query=rarpd\&sektion=8\&manpath=FreeBSD+5.2-RELEASE) 无法识别可移动以太网网卡的问题。

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

[rtld(1)](http://www.freebsd.org/cgi/man.cgi?query=rtld\&sektion=1\&manpath=FreeBSD+5.2-RELEASE) 现在默认包括 `libmap` 功能；WITH\_LIBMAP 编译选项已不再需要，并已废弃。更多信息可以在 [libmap.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=libmap.conf\&sektion=5\&manpath=FreeBSD+5.2-RELEASE) 中找到。

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

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

[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+5.2-RELEASE) 现在提供选择替代 MTA 的功能。目前支持 **exim** 和 **Postfix**。

[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+5.2-RELEASE) 不再支持系统“安全配置文件”；该功能已被替换为单独的调优选项，用于启用和禁用 [sshd(8)](http://www.freebsd.org/cgi/man.cgi?query=sshd\&sektion=8\&manpath=FreeBSD+5.2-RELEASE) 并设置系统的安全级别。

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

[uname(1)](http://www.freebsd.org/cgi/man.cgi?query=uname\&sektion=1\&manpath=FreeBSD+5.2-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-RELEASE) 安装的 `/stand` 目录，但 `/rescue` 包含更多功能，并作为 `buildworld`/`installworld` 操作的一部分更新。更多细节可以在 [rescue(8)](http://www.freebsd.org/cgi/man.cgi?query=rescue\&sektion=8\&manpath=FreeBSD+5.2-RELEASE) 中找到。

许多位于 `/bin` 和 `/sbin` 的可执行文件现在使用动态链接而非静态链接构建。此特性支持在这些目录中使用可加载的 PAM 和 NSS 模块，也减少了根文件系统的存储需求，因为使用了共享库。在 `buildworld` 中可以通过定义 Makefile 变量 `NO_DYNAMICROOT` 来禁用此特性。请注意，静态链接的“crunched”可执行文件可在 `/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。 \[已合并]

**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 更新为来自 NetBSD 的 2003 年 11 月 11 日的快照。

**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。 \[已合并]

### 2.7 文档

为了减少信息的重复（以及随之而来的维护一致性的困难），硬件说明中支持的许多特定设备已被移至系统手册页。这项工作在本次发布时仍在进行中。

已启动土耳其语（`tr_TR.ISO8859-9`）翻译项目。

## 3 从旧版 FreeBSD 升级

*强烈* 建议已有 FreeBSD 系统的用户 阅读《FreeBSD 5.2-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>。
