# FreeBSD 7.2 RELEASE 发行公告（2009 年 5 月 4 日）

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

**FreeBSD 项目**

版权 © 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 FreeBSD 文档项目

```
$FreeBSD: releng/7.2/release/doc/en_US.ISO8859-1/relnotes/article.sgml 191705 2009-04-30 21:20:09Z hrs $
```

FreeBSD 是 FreeBSD 基金会的注册商标。

IBM、AIX、EtherJet、Netfinity、OS/2、PowerPC、PS/2、S/390 和 ThinkPad 是国际商业机器公司（IBM）在美国、其他国家或两者的商标。

IEEE、POSIX 和 802 是电气和电子工程师协会（IEEE）在美国的注册商标。

Intel、Celeron、EtherExpress、i386、i486、Itanium、Pentium 和 Xeon 是英特尔公司或其子公司在美国和其他国家的商标或注册商标。

Microsoft、IntelliMouse、MS-DOS、Outlook、Windows、Windows Media 和 Windows NT 是微软公司在美国和/或其他国家的注册商标或商标。

Sparc、Sparc64、SPARCEngine 和 UltraSPARC 是 SPARC 国际公司在美国和其他国家的商标。带有 SPARC 商标的产品基于 Sun Microsystems, Inc. 开发的架构。

许多制造商和销售商用于区分其产品的名称被宣称为商标。若这些名称在本文件中出现，并且 FreeBSD 项目已知该商标声明，这些名称后将跟随“™”或“®”符号。

FreeBSD 7.2-RELEASE 的发行说明包含对 7.2-STABLE 开发线中 FreeBSD 基本系统所做更改的总结。本文档列出了自上次发布以来发布的相关安全通告，以及对 FreeBSD 内核和用户态的重大更改。还提供了一些关于升级的简要说明。

## 1 介绍

本文档包含了 FreeBSD 7.2-RELEASE 的发行说明。它介绍了 FreeBSD 最近添加、修改或删除的特性，并提供了一些关于从以前版本升级的说明。

此版本的 FreeBSD 7.2-RELEASE 是个正式发布版本。你可以在 [ftp://ftp.FreeBSD.org/](ftp://ftp.freebsd.org/) 或其任何镜像站点找到它。有关获取此版本（或其他版本）发行版的更多信息，请参见 [FreeBSD 手册](https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mirrors.html) 中的 [“获取 FreeBSD”附录](https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mirrors.html)。

建议所有用户在安装 FreeBSD 之前查阅发布错误文档。该文档会根据发布周期结束时或发布后发现的最新信息进行更新。通常，它包含已知的错误、安全通告和文档修正。FreeBSD 7.2-RELEASE 的最新错误文档可以在 FreeBSD 网站上找到。

## 2 新特性

本节介绍了自 7.1-RELEASE 以来 FreeBSD 中最显著的用户可见的新特性或更改。

典型的发行说明条目包括在 7.1-RELEASE 之后发布的最新安全通告、新的驱动程序或硬件支持、新的命令或选项、主要的错误修复或第三方软件升级。它们还可能列出主要 Port/包或发布工程实践的变化。显然，发行说明无法列出每一个在版本之间做出的更改；本文档主要集中在安全通告、用户可见的变化和重大架构改进上。

### 2.1 安全通告

以下安全通告中介绍的问题已被修复。有关更多信息，请参考来自 [http://security.FreeBSD.org/](http://security.freebsd.org/) 的各个安全通告。

| 通告                                                                                          | 日期              | 主题                                                                                                                    |
| ------------------------------------------------------------------------------------------- | --------------- | --------------------------------------------------------------------------------------------------------------------- |
| [SA-09:01.lukemftpd](http://security.freebsd.org/advisories/FreeBSD-SA-09:01.lukemftpd.asc) | 2009 年 1 月 7 日  | [lukemftpd(8)](http://www.freebsd.org/cgi/man.cgi?query=lukemftpd\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 中的跨站请求伪造漏洞 |
| [SA-09:02.openssl](http://security.freebsd.org/advisories/FreeBSD-SA-09:02.openssl.asc)     | 2009 年 1 月 7 日  | OpenSSL 错误地检查了格式错误的签名                                                                                                 |
| [SA-09:03.ntpd](http://security.freebsd.org/advisories/FreeBSD-SA-09:03.ntpd.asc)           | 2009 年 1 月 13 日 | ntpd 加密签名绕过漏洞                                                                                                         |
| [SA-09:04.bind](http://security.freebsd.org/advisories/FreeBSD-SA-09:04.bind.asc)           | 2009 年 1 月 13 日 | BIND DNSSEC 错误检查格式错误的签名                                                                                               |
| [SA-09:05.telnetd](http://security.freebsd.org/advisories/FreeBSD-SA-09:05.telnetd.asc)     | 2009 年 2 月 16 日 | telnetd 代码执行漏洞                                                                                                        |
| [SA-09:06.ktimer](http://security.freebsd.org/advisories/FreeBSD-SA-09:06.ktimer.asc)       | 2009 年 3 月 23 日 | 本地权限提升漏洞                                                                                                              |
| [SA-09:07.libc](http://security.freebsd.org/advisories/FreeBSD-SA-09:07.libc.asc)           | 2009 年 4 月 4 日  | [db(3)](http://www.freebsd.org/cgi/man.cgi?query=db\&sektion=3\&manpath=FreeBSD+7.2-RELEASE) 中的信息泄露漏洞                 |
| [SA-09:08.openssl](http://security.freebsd.org/advisories/FreeBSD-SA-09:08.openssl.asc)     | 2009 年 4 月 22 日 | OpenSSL 中的远程可利用崩溃漏洞                                                                                                   |

### 2.2 内核更改

[ddb(8)](http://www.freebsd.org/cgi/man.cgi?query=ddb\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 内核调试器现在支持 `show mount` 子命令。

FreeBSD DTrace 子系统现在支持进程执行的探针。

\[amd64] FreeBSD 内核虚拟地址空间已扩展到 6GB。这使得子系统可以使用比以前更大的虚拟内存空间。例如，[zfs(8)](http://www.freebsd.org/cgi/man.cgi?query=zfs\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 自适应替换缓存（ARC）需要大规模的内核内存空间来缓存文件系统数据，因此从增加的地址空间中受益。请注意，内核映射大小的上限现在是大小的 60%，而不是一个绝对数量。

[jail(8)](http://www.freebsd.org/cgi/man.cgi?query=jail\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 子系统已更新。更改包括：

* 支持每个 jail 使用多个 IPv4 和 IPv6 地址。甚至可以创建没有 IP 地址的 jail，基本上提供一个 chroot 环境，具有受限的进程视图并且没有网络功能。
* 在 jail 中实现了支持 IPv6 的 SCTP ([sctp(4)](http://www.freebsd.org/cgi/man.cgi?query=sctp\&sektion=4\&manpath=FreeBSD+7.2-RELEASE))。
* 通过使用 [cpuset(1)](http://www.freebsd.org/cgi/man.cgi?query=cpuset\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 实现了特定 CPU 的绑定。请注意，目前的实现允许 jail 内的超级用户更改指定的 CPU 绑定。此行为将在下一版本中修复。
* 现在可以使用特定的路由 FIB 启动 [jail(8)](http://www.freebsd.org/cgi/man.cgi?query=jail\&sektion=8\&manpath=FreeBSD+7.2-RELEASE)。
* 在 [ddb(8)](http://www.freebsd.org/cgi/man.cgi?query=ddb\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 中添加了一个 `show jails` 子命令。
* 添加了兼容性支持，允许在 64 位系统上使用 32 位 jail 二进制文件来管理 jail。
* 请注意，jail 和 prison 的版本号在 [jail(8)](http://www.freebsd.org/cgi/man.cgi?query=jail\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 中已更新，以支持新特性。

[kld(4)](http://www.freebsd.org/cgi/man.cgi?query=kld\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 现在支持将 32 位系统调用安装到 FreeBSD 系统调用转换层中，来自内核模块。

[ktr(4)](http://www.freebsd.org/cgi/man.cgi?query=ktr\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 现在支持在 KTR\_CALLOUT 类中添加一个新的 KTR 跟踪点，用于记录 callout 例程何时完成执行。

用于跟踪分配的 System V 共享内存数量的变量类型已从 `int` 更改为 `size_t`。这使得在 64 位架构上可以使用超过 2 GB 的内存来处理共享内存段。请注意，关于此临时解决方案的限制，详见 [shmctl(2)](http://www.freebsd.org/cgi/man.cgi?query=shmctl\&sektion=2\&manpath=FreeBSD+7.2-RELEASE) 和 /usr/src/UPDATING 中的新 BUGS 部分。

[sysctl(3)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=3\&manpath=FreeBSD+7.2-RELEASE) 叶节点现在有一个参数，可以标记自己为 MPSAFE。

FreeBSD 32 位系统调用转换层现在支持为 VFS\_AIO 安装 32 位系统调用。

\[amd64, i386] FreeBSD 虚拟内存子系统现在支持应用内存的完全透明使用 **superpages**；应用内存页可以动态地提升或降级为 superpages，而无需修改应用程序代码。此更改的好处包括提高虚拟内存效率和减少 TLB（转换后备缓冲区）丢失，同时不会像应用程序更改和虚拟内存不灵活性那样带来不利影响。此功能默认禁用，可以通过设置 loader 调整参数 `vm.pmap.pg_ps_enabled` 为 1 来启用。

#### 2.2.1 启动加载器更改

[boot(8)](http://www.freebsd.org/cgi/man.cgi?query=boot\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 现在支持 4 字节卷 ID，这些卷 ID 是某些版本的 Windows® 将其放入 MBR 中的，并且通过按 F6 键可以在某些支持的 BIOS 上启动 PXE。

\[i386] [boot(8)](http://www.freebsd.org/cgi/man.cgi?query=boot\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) BTX 加载器已改进。这修复了 7.1-RELEASE 及之前版本中报告的若干启动问题。

[loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 现在能够通过 [kenv(2)](http://www.freebsd.org/cgi/man.cgi?query=kenv\&sektion=2\&manpath=FreeBSD+7.2-RELEASE) 变量从网络启动中获取 DHCP 选项。

[loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 中的一个 bug 已被修复。现在以下行将按预期工作：

```sh
loader_conf_files="foobar ${variable}"
```

#### 2.2.2 硬件支持

\[sparc64] FreeBSD 现在支持 Ultra SPARC III（Cheetah）处理器系列。

[acpi(4)](http://www.freebsd.org/cgi/man.cgi?query=acpi\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 子系统现在支持一个 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 变量 `debug.batt.batt_sleep_ms`。在某些具有智能电池的笔记本电脑上，启用电池监控软件会导致 [atkbd(4)](http://www.freebsd.org/cgi/man.cgi?query=atkbd\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 键盘输入丢失。此 sysctl 变量为状态检查代码增加了一个毫秒延迟，以作为解决方法。

[acpi\_asus(4)](http://www.freebsd.org/cgi/man.cgi?query=acpi_asus\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持 Asus A8Sr 笔记本电脑。

\[powerpc] 增加了对 AltiVec 的支持，这是一个浮点和整数的 SIMD 指令集。

[cpuctl(4)](http://www.freebsd.org/cgi/man.cgi?query=cpuctl\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序已添加，该驱动提供了一个特殊设备 /dev/cpuctl，作为与系统 CPU 交互的接口。 [cpuctl(4)](http://www.freebsd.org/cgi/man.cgi?query=cpuctl\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 功能包括获取 CPUID 信息、读写机器特定寄存器（MSR）以及执行 CPU 固件更新。

[cpufreq(4)](http://www.freebsd.org/cgi/man.cgi?query=cpufreq\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持一个 loader 调整参数 `hw.est.msr_info`。当此参数设置为 1 时，如果无法从 ACPI 或静态表中获取频率列表，它将尝试构建一个仅包含高低频率的简单列表。默认情况下，此功能被禁用。

\[amd64, i386] 当 TSC 是 P 状态不变时，CPU 频率变化通知已被禁用。此外，添加了一个新的 loader 调整参数 `kern.timecounter.invariant_tsc`，通过设置非零值来强制这种行为。

[atkbd(4)](http://www.freebsd.org/cgi/man.cgi?query=atkbd\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在禁用了在启用轮询模式时从键盘回调函数调用的中断处理程序。这解决了在多 CPU 系统中启用 [kbdmux(4)](http://www.freebsd.org/cgi/man.cgi?query=kbdmux\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 时，在 mountroot 提示符处重复或丢失字符的问题。

在 [pci(4)](http://www.freebsd.org/cgi/man.cgi?query=pci\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 子系统中，当启用 MSI/MSIX 时，已禁用 INTx。这一更改解决了与中断风暴相关的问题。

\[sparc64] 已添加用于 Schizo Fireplane/Safari 到 PCI 2.1 和 Tomatillo JBus 到 PCI 2.2 桥的 schizo(4) 驱动程序。

[u3g(4)](http://www.freebsd.org/cgi/man.cgi?query=u3g\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序已添加，支持基于 USB 的 3G 卡和加密狗，包括 Vodafone Mobile Connect Card 3G、Qualcomm CDMA MSM、Huawei E220、Novatel U740、Sierra MC875U 等。这提供了对许多 3G USB/PC 卡调制解调器所暴露的多个 USB 到串行接口的支持，并通过 [ucom(4)](http://www.freebsd.org/cgi/man.cgi?query=ucom\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序访问该设备，使其表现得像一个 [tty(4)](http://www.freebsd.org/cgi/man.cgi?query=tty\&sektion=4\&manpath=FreeBSD+7.2-RELEASE)。

[sched\_ule(4)](http://www.freebsd.org/cgi/man.cgi?query=sched_ule\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 调度程序现在支持一个 loader 调整参数 `machdep.hyperthreading_enabled`，与 [sched\_4bsd(4)](http://www.freebsd.org/cgi/man.cgi?query=sched_4bsd\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 类似。请注意，它无法在运行时修改。

**2.2.2.1 多媒体支持**

[agp(4)](http://www.freebsd.org/cgi/man.cgi?query=agp\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持 Intel G4X 系列显卡芯片组。

内核模块 DRM（Direct Rendering Manager，直接渲染管理器），提供对 DRI 客户端的直接硬件访问，已经更新。对 AMD/ATI r500、r600、r700 和 IGP 系列芯片、XGI V3XE/V5/V8 以及 Intel i915 芯片组的支持得到了改善。

新增了 loader 调整参数 `hw.drm.msi`，用于控制 DRM 是否使用 MSI。默认设置为 1（启用）。

由于长时间无法使用，已移除 Aureal Vortex 1/2/Advantage PCI 的 [snd\_au88x0(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_au88x0\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序。

[snd\_hda(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_hda\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序已更新。更改包括支持每个 HDA 总线多个编解码器、每个编解码器多个功能组、每个功能组多个音频设备、数字（SPDIF/HDMI）音频输入/输出、挂起/恢复，以及部分多声道音频支持。

请注意，由于新增了 HDMI 音频和逻辑音频设备的支持，更新后的驱动程序通常会提供多个 PCM 设备。这意味着在某些情况下，系统默认的音频设备不再对应用户习惯的音频连接器。在这种情况下，可以在音频应用程序的设置中指定默认设备，或通过 sysctl `hw.snd.default_unit` 全局定义默认设备，具体方法请参见 [sound(4)](http://www.freebsd.org/cgi/man.cgi?query=sound\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 手册页面。

**2.2.2.2 网络接口支持**

[ae(4)](http://www.freebsd.org/cgi/man.cgi?query=ae\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持 WoL（Wake on LAN，远程唤醒）。

\[amd64, i386] [ale(4)](http://www.freebsd.org/cgi/man.cgi?query=ale\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在已包含在 GENERIC 内核中。

[ath\_hal(4)](http://www.freebsd.org/cgi/man.cgi?query=ath_hal\&sektion=4\&manpath=FreeBSD+7.2-RELEASE)，Atheros 硬件访问层，已更新为开源版本。

[axe(4)](http://www.freebsd.org/cgi/man.cgi?query=axe\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序通过消除额外的上下文切换，性能得到了提升，现在支持 Apple USB 以太网适配器。

[bce(4)](http://www.freebsd.org/cgi/man.cgi?query=bce\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序的固件已更新为最新版本（4.6.X）。

\[ciphy(4)] 驱动程序现在支持 Vitesse VSC8211 PHY。

[cxgb(4)](http://www.freebsd.org/cgi/man.cgi?query=cxgb\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序已更新为固件修订版 4.7，并且现在支持硬件 MAC 统计信息。

[fxp(4)](http://www.freebsd.org/cgi/man.cgi?query=fxp\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序已得到改进。更改内容包括：

* 现在可以通过 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 控制校验和卸载功能。
* 添加了对 82559 或更高版本控制器的 Rx 校验和卸载支持。
* 添加了对 82550 和 82551 控制器的 TSO（TCP 分段卸载）支持。
* 添加了对 82550、82551、82558 和 82559 基于控制器的 WoL（远程唤醒）支持。请注意，基于 ICH 的控制器被视为 82559，且 82557、82558 早期版本和 82559ER 不支持 WoL 功能。
* 添加了 VLAN 硬件标签插入/剥离支持，以及对 VLAN 帧的 Tx/Rx 校验和卸载支持。请注意，VLAN 硬件支持仅在 82550 或 82551 基于控制器上可用。

[igb(4)](http://www.freebsd.org/cgi/man.cgi?query=igb\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序中的一个 bug 已修复，该 bug 导致 loader 调整参数 `hw.igb.ave_latency` 无法工作。

[ixgbe(4)](http://www.freebsd.org/cgi/man.cgi?query=ixgbe\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序已更新至版本 1.7.4。

[jme(4)](http://www.freebsd.org/cgi/man.cgi?query=jme\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持较新的 JMicron JMC250/JMC260 版本。

[msk(4)](http://www.freebsd.org/cgi/man.cgi?query=msk\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序已得到改进。修复了在某些条件下导致其挂起的问题。增加了硬件 MAC 统计信息的支持，用户可以通过 sysctl 变量 `dev.msk.N.stats` 获取这些信息。

[mxge(4)](http://www.freebsd.org/cgi/man.cgi?query=mxge\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持一些较新的版本以及 10GBASE-LRM 和 10GBASE-Twinax 媒体类型。

[nfe(4)](http://www.freebsd.org/cgi/man.cgi?query=nfe\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持硬件 MAC 统计信息。

[re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序已得到改进。现在可以检测链路状态。新增了一个加载器调优 `hw.re.prefer_iomap`，用于禁用内存寄存器映射。除 RTL8169SC 系列外，所有控制器的此调优值为 0。

[rl(4)](http://www.freebsd.org/cgi/man.cgi?query=rl\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序已得到改进。现在可以检测链路状态，并且已修复了在内存超过 4GB 的系统上无法正常工作的 bug。

[sis(4)](http://www.freebsd.org/cgi/man.cgi?query=sis\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序在 VLAN 标签帧处理上的 bug 已修复。

[txp(4)](http://www.freebsd.org/cgi/man.cgi?query=txp\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持所有受支持的架构。增加了对 [altq(4)](http://www.freebsd.org/cgi/man.cgi?query=altq\&sektion=4\&manpath=FreeBSD+7.2-RELEASE)、WoL、启用 VLAN 时的校验和卸载支持，链路状态变化处理已改进，并新增了 sysctl 变量 `dev.txp.N.stats` 以获取 MAC 统计信息。新增了 sysctl 变量 `dev.txp.N.process_limit`，用于控制 Rx 处理器中应处理的接收帧数（默认设置为 64，合法范围是 16 到 128 帧）。固件已更新到最新版本。

#### 2.2.3 网络协议

IPv4 源地址选择针对未绑定的套接字实现如下：

1. 如果找到路由，则使用与出口接口对应的地址。
2. 否则，我们假设外部地址可通过直接连接的网络访问，并尝试找到一个相应的接口来获取源地址。
3. 最后一招是使用默认的 Jail 地址。

这也改变了在 [jail(8)](http://www.freebsd.org/cgi/man.cgi?query=jail\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 内部选择 IP 的语义，因为现在它使用与 Jail 外部相同的逻辑。

已经在 IPv6 中实现 TCP MD5 签名选项（RFC 2385），方式与在 IPv4 中实现相同。

Netgraph 节点 [ng\_netflow(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_netflow\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 现在包括支持生成出口 Netflow，而不是或额外生成入口 Netflow。添加了控制消息 `NGM_NETFLOW_SETCONFIG` 来控制这一新功能。

[tap(4)](http://www.freebsd.org/cgi/man.cgi?query=tap\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 以太网隧道软件网络接口现在支持一个新的 TAPGIFNAME 字符设备 ioctl。这是一个方便的快捷方式，可以通过字符设备的文件介绍符获取网络接口名称。

[tap(4)](http://www.freebsd.org/cgi/man.cgi?query=tap\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 现在支持 SIOCSIFMTU ioctl，用于设置大于 1500（ETHERMTU）的 MTU。这允许将 [tap(4)](http://www.freebsd.org/cgi/man.cgi?query=tap\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 设备添加到同一桥接中（这要求所有接口成员具有相同的 MTU），并配置有 Jumbo 帧的接口。

[unix(4)](http://www.freebsd.org/cgi/man.cgi?query=unix\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 子系统用于处理支持的域列表的域列表现在是 MPSAFE。

#### 2.2.4 磁盘与存储

[ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持 Marvell PATA M88SX6121。

[ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在识别 nForce MCP67 和 MCP73 SATA 控制器为 AHCI。

[ataraid(4)](http://www.freebsd.org/cgi/man.cgi?query=ataraid\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在包括对 Adaptec HostRAID 控制器上 DDF 元数据的初步支持。请注意，备用磁盘和重建功能尚不支持。

[cam(4)](http://www.freebsd.org/cgi/man.cgi?query=cam\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) SCSI 子系统现在支持一个新的 sysctl 变量 `kern.cam.cd.retry_count`。此变量控制 CD 媒体的重试次数。在尝试读取划伤或损坏的 CD 和 DVD 时，默认的重试机制并不理想，像 **ddrescue** 这样的程序如果完全关闭重试机制会表现得更好，因为它们的算法可以自行处理。默认情况下，这个值为 4（即总共尝试 5 次）。将其设置为 0 可以关闭所有重试尝试。

[ciss(4)](http://www.freebsd.org/cgi/man.cgi?query=ciss\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序中导致低“最大设备打开”计数并导致性能较差的 bug 已被修复。

[glabel(8)](http://www.freebsd.org/cgi/man.cgi?query=glabel\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) GEOM 类现在支持一个新的基于 UFS 的标签，称为 ufsid，可以通过唯一的文件系统 ID 来引用携带 UFS 的设备。当启用 [glabel(8)](http://www.freebsd.org/cgi/man.cgi?query=glabel\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) GEOM 类时，系统会自动生成并检测该文件系统 ID。这个新标签的示例是：/dev/ufsid/48e69c8b5c8e1b43。使用 GEOM 标签的一大好处是避免了在更换磁盘或控制器时设备重命名的问题。

[gjournal(8)](http://www.freebsd.org/cgi/man.cgi?query=gjournal\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) GEOM 类现在支持根文件系统。之前，未经正常关机会导致在启动时无法挂载根文件系统。

[gpart(8)](http://www.freebsd.org/cgi/man.cgi?query=gpart\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具已更新。APM 方案现在支持 Tivo Series 1 分区（只读），新增了支持扩展启动记录的 EBR 方案，BSD 方案现在支持启动代码，并修复了 PC98 和 VTOC8 方案中的 bug。

[gvinum(8)](http://www.freebsd.org/cgi/man.cgi?query=gvinum\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 中存在的关于访问权限到 gvinum plex 使用的底层磁盘的问题已被修复。如果 plex 是 raid5 plex 并且正在写入，可能需要从底层磁盘读取奇偶校验数据，因此也需要打开这些磁盘进行读取和写入。

[hptmv(4)](http://www.freebsd.org/cgi/man.cgi?query=hptmv\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序已从供应商处更新至版本 1.16。

[mmc(4)](http://www.freebsd.org/cgi/man.cgi?query=mmc\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 和 [mmcsd(4)](http://www.freebsd.org/cgi/man.cgi?query=mmcsd\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持 MMC 和 SDHC 卡、高速时序、宽总线和多块传输。

\[sparc64] [mpt(4)](http://www.freebsd.org/cgi/man.cgi?query=mpt\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在包含在 GENERIC 内核中。

[sdhci(4)](http://www.freebsd.org/cgi/man.cgi?query=sdhci\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序已被添加。该驱动程序支持根据 SD 主机控制器规范的类 8 和子类 5 的 PCI 设备。

[sdhci(4)](http://www.freebsd.org/cgi/man.cgi?query=sdhci\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持内核转储和一个 sysctl 变量 `hw.sdhci.debug` 用于调试级别。

[twa(4)](http://www.freebsd.org/cgi/man.cgi?query=twa\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在支持 64 位 DMA。

[mmc(4)](http://www.freebsd.org/cgi/man.cgi?query=mmc\&sektion=4\&manpath=FreeBSD+7.2-RELEASE)、[mmcsd(4)](http://www.freebsd.org/cgi/man.cgi?query=mmcsd\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 和 [sdhci(4)](http://www.freebsd.org/cgi/man.cgi?query=sdhci\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 驱动程序现在作为内核模块包含。

#### 2.2.5 文件系统

[acl(3)](http://www.freebsd.org/cgi/man.cgi?query=acl\&sektion=3\&manpath=FreeBSD+7.2-RELEASE) 扩展访问控制列表的语义已更改如下：

* 当添加、修改或删除扩展属性时，inode 的修改时间（mtime）不再更新。
* 当查询扩展属性时，inode 的访问时间（atime）不再更新。

FreeBSD NFS 文件系统现在支持一个 sysctl 变量 `vfs.nfs.prime_access_cache`，用来决定 `nfs_getattr()` 是否使用 ACCESS RPC 来预填充访问缓存，而不是简单的 GETATTR RPC。这是因为在许多 NFS 服务器中，处理 ACCESS RPC 比处理 NFSv3 挂载文件的 GETATTR RPC 要昂贵得多。为了保持以前的行为，默认启用该 sysctl 变量。

FreeBSD UDF 文件系统现在支持 FIFO。

[VFS(9)](http://www.freebsd.org/cgi/man.cgi?query=VFS\&sektion=9\&manpath=FreeBSD+7.2-RELEASE) 子系统中处理路径名查找的共享 vnode 锁定已得到改进。默认情况下该功能是禁用的。通过设置 sysctl 变量 `vfs.lookup_shared` 为 `1`，可以启用该功能以提高性能。需要注意的是，与此 sysctl 变量等效的内核选项 `LOOKUP_SHARED` 已被移除。

### 2.3 用户空间变更

[atacontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=atacontrol\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具中的一个 bug 已被修复，之前它在 `/usr` 未挂载或从 `/rescue` 调用时无法正常工作。

已添加来自 NetBSD 的守护进程 [btpand(8)](http://www.freebsd.org/cgi/man.cgi?query=btpand\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 。该守护进程提供对蓝牙网络接入点（NAP）、群组临时网络（GN）和个人区域网络用户（PANU）配置文件的支持。

[ncal(1)](http://www.freebsd.org/cgi/man.cgi?query=ncal\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持多字节字符。

[config(8)](http://www.freebsd.org/cgi/man.cgi?query=config\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持多个 `makeoption` 行。

[csup(1)](http://www.freebsd.org/cgi/man.cgi?query=csup\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 CVSMode 来获取完整的 CVS 仓库。请注意，目前已被禁用 rsync 传输模式。

[dirname(1)](http://www.freebsd.org/cgi/man.cgi?query=dirname\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持多个参数，方式与 [basename(1)](http://www.freebsd.org/cgi/man.cgi?query=basename\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 相同。

[du(1)](http://www.freebsd.org/cgi/man.cgi?query=du\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-l` 参数。当指定时，`du(1)` 工具将把具有多个硬链接的文件当作多个不同的文件来计数。

[du(1)](http://www.freebsd.org/cgi/man.cgi?query=du\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-A` 参数来显示表观大小而非磁盘使用量。这在操作压缩卷或稀疏文件时非常有用。

[du(1)](http://www.freebsd.org/cgi/man.cgi?query=du\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持选项 `-B <blocksize>`，用于按 `blocksize` 字节的块计算块计数。这与选项 `-k` 或 `-m` 或设置 `BLOCKSIZE` 不同，它提供了一个估算值，表示在给定 `blocksize` 的文件系统上，检查的文件层次结构所需的空间。除非在 `-A` 模式下，`blocksize` 将被四舍五入到下一个 512 的倍数。

[**dumpfs(8)**](http://www.freebsd.org/cgi/man.cgi?query=dumpfs\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-f` 参数，启用后，它会按碎片（块）编号列出文件系统中的所有空闲碎片。在这种新模式下，会进行必要的计算，生成绝对的碎片编号，而不是默认模式中显示的相对块组编号。

如果只指定一次 `-f`，相邻的碎片范围会合并成 X-Y 格式，就像当前 regular dumpfs 输出中的空闲块列表一样。如果指定两次，所有块编号将被单独列出，允许更加紧凑和适合脚本的表示方式。

[**fetch(1)**](http://www.freebsd.org/cgi/man.cgi?query=fetch\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-i` 参数，支持 If-Modified-Since HTTP 1.1 请求。如果指定该参数，文件仅会在其修改时间晚于本地文件的 mtime 时下载。此外，**libfetch** 现在接受 URL 结构中的 mtime，并提供一个参数来指示何时希望使用这种行为。

[**fsck(8)**](http://www.freebsd.org/cgi/man.cgi?query=fsck\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-C` 参数，用于检查文件系统是否已正常卸载。如果文件系统已经干净卸载，则跳过文件系统检查；否则，执行全面检查。

[**fsck(8)**](http://www.freebsd.org/cgi/man.cgi?query=fsck\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-D` 参数，用于损坏恢复模式，启用某些强制操作，使得 **fsck** 能在文件系统严重损坏的情况下继续运行。这是当磁盘上的数据损坏非常严重，导致 **fsck** 崩溃时的一种最后手段。

[**getaddrinfo(3)**](http://www.freebsd.org/cgi/man.cgi?query=getaddrinfo\&sektion=3\&manpath=FreeBSD+7.2-RELEASE) 函数现在支持 SCTP。

修复了 [**ipfw(8)**](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具中的一个 bug，该 bug 导致即使指定了 `-q` 参数，NAT 规则也会显示额外的消息。

[**ln(1)**](http://www.freebsd.org/cgi/man.cgi?query=ln\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-w` 参数，用于检查源文件是否确实存在。当指定该参数且文件不存在时，**ln(1)** 会发出警告消息。

[**make(1)**](http://www.freebsd.org/cgi/man.cgi?query=make\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-p` 参数，仅打印输入图，而不执行任何命令。输出与 `-d g1` 相同。与 `-f /dev/null` 结合使用时，仅显示 make 的内建规则。

[**make(1)**](http://www.freebsd.org/cgi/man.cgi?query=make\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-Q` 参数，除了与 `-q` 参数相同的效果外，还会导致不生成文件横幅，特别是在指定 `-j` 选项时。

[**make(1)**](http://www.freebsd.org/cgi/man.cgi?query=make\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持变量 `.MAKE.JOB.PREFIX`。如果指定了 `-j` 和 `-v`，则每个目标的输出将以一个标记 `target` 为前缀，其中第一部分可以通过该变量控制。

[**make(1)**](http://www.freebsd.org/cgi/man.cgi?query=make\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持变量 `.MAKE.PID` 和 `.MAKE.PPID`。这两个变量分别设置为 **make(1)** 进程及其父进程的进程 ID。

已添加工具 [**makefs(8)**](http://www.freebsd.org/cgi/man.cgi?query=makefs\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) ，用于从目录树创建文件系统镜像。

[**mergemaster(8)**](http://www.freebsd.org/cgi/man.cgi?query=mergemaster\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-F` 选项，用于自动安装那些仅在版本控制 ID 字符串上有所不同的文件。

[**mount(8)**](http://www.freebsd.org/cgi/man.cgi?query=mount\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持选项 `-o mountprog=/somewhere/mount_xxx`，强制使用指定的程序来挂载文件系统，而不是直接调用 [**nmount(2)**](http://www.freebsd.org/cgi/man.cgi?query=nmount\&sektion=2\&manpath=FreeBSD+7.2-RELEASE)。当你希望使用第三方程序（例如 FUSE）时，这非常有用。

[**netstat(1)**](http://www.freebsd.org/cgi/man.cgi?query=netstat\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在在指定 `-L` 参数时，会报告 [**unix(4)**](http://www.freebsd.org/cgi/man.cgi?query=unix\&sektion=4\&manpath=FreeBSD+7.2-RELEASE) 套接字的监听队列统计信息。

修复了 [**netstat(1)**](http://www.freebsd.org/cgi/man.cgi?query=netstat\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具中的一个 bug，该 bug 导致在使用以下选项时崩溃：

```sh
% netstat -m -N foo
```

修复了 [**netstat(1)**](http://www.freebsd.org/cgi/man.cgi?query=netstat\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具中的一个 bug，现 `-ss` 选项在 icmp6 部分按预期工作。

[**pciconf(8)**](http://www.freebsd.org/cgi/man.cgi?query=pciconf\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-b` 参数，用于列出分配给每个设备的任何基本地址寄存器（BAR）。

已改进 [**powerd(8)**](http://www.freebsd.org/cgi/man.cgi?query=powerd\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 程序，改动包括在 SMP 系统上的合理 CPU 负载估算和为 AC 电源系统新增了一种名为 hiadaptive 的模式。hiadaptive 模式将 CPU 频率提高的速度是 adaptive 模式的两倍，降低 CPU 频率的速度是其四倍，优先选择较低的 CPU 负载，并且在最大负载后的退出最高频率前增加额外的延迟。

[**stat(1)**](http://www.freebsd.org/cgi/man.cgi?query=stat\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在在指定 `-x` 参数时，会显示 suid、sgid 和 sticky 位的八进制表示。

已添加函数 [**strndup(3)**](http://www.freebsd.org/cgi/man.cgi?query=strndup\&sektion=3\&manpath=FreeBSD+7.2-RELEASE) 。

[**wc(1)**](http://www.freebsd.org/cgi/man.cgi?query=wc\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具现在支持 `-L` 参数，用于输出最长输入行的字符数。

修复了 [**rpc.yppasswdd(8)**](http://www.freebsd.org/cgi/man.cgi?query=rpc.yppasswdd\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 程序中的一个 bug，该 bug 会导致在更改密码或默认 shell 时留下僵尸进程。

### 2.4 第三方软件

**ISC BIND** 已更新至 9.4.3-P2 版本。

时区数据库已从 **tzdata2008h** 版本更新至 **tzdata2009f** 版本。

### 2.5 Ports/软件包基础设施

修复了 [**pkg\_create(1)**](http://www.freebsd.org/cgi/man.cgi?query=pkg_create\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 工具中的一个 bug，该 bug 导致 `-n` 参数无法正常工作。

FreeBSD Ports 现在支持在某些受支持的 Port 中使用多个 [**make(1)**](http://www.freebsd.org/cgi/man.cgi?query=make\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 任务。当 Port 标记为 `MAKE_JOBS_SAFE` 时，这会自动启用，通过将 `-jX` 选项传递给供应商的顶级 Makefile，从而在构建阶段提高 CPU 利用率。默认情况下，*X* 设置为 CPU 数量，用户可以通过 [**make(1)**](http://www.freebsd.org/cgi/man.cgi?query=make\&sektion=1\&manpath=FreeBSD+7.2-RELEASE) 变量 `MAKE_JOBS_NUMBER` 来设置。更多详细信息，请参见 ports/Mk/bsd.port.mk。

### 2.6 发布工程与集成

支持的 **GNOME** 桌面环境版本（[x11/gnome2](http://www.freebsd.org/cgi/url.cgi?ports/x11/gnome2/pkg-descr)）已从 2.22 更新至 2.26。

支持的 **KDE** 桌面环境版本已从 3.5.10（[x11/kde3](http://www.freebsd.org/cgi/url.cgi?ports/x11/kde3/pkg-descr)）更新至 4.2.2（[x11/kde4](http://www.freebsd.org/cgi/url.cgi?ports/x11/kde4/pkg-descr)）。

## 3 从先前版本的 FreeBSD 升级

\[amd64, i386] 从 FreeBSD 6.2-RELEASE 开始，支持使用 [**freebsd-update(8)**](http://www.freebsd.org/cgi/man.cgi?query=freebsd-update\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具进行版本之间的二进制升级（以及各种安全分支的快照）。二进制升级过程将更新未修改的用户空间工具以及作为官方 FreeBSD 发行版一部分分发的未修改的 GENERIC 或 SMP 内核。使用 [**freebsd-update(8)**](http://www.freebsd.org/cgi/man.cgi?query=freebsd-update\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 工具时，要求被升级的主机具有互联网连接。

通过 CDROM 发行介质的主 [**sysinstall(8)**](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+7.2-RELEASE) 菜单的升级选项，支持旧形式的二进制升级。这种二进制升级可能在非 i386、非 amd64 机器上或没有互联网连接的系统上有用。

根据 `/usr/src/UPDATING` 中的说明，支持基于源代码的升级（即从源代码重新编译 FreeBSD 基本系统）到先前的版本。

> **重要：**
>
> 当然，在升级 FreeBSD 之前，应该先备份 **所有** 数据和配置文件。

\--

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

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

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