# FreeBSD 9.0-RELEASE 发行说明（2012 年 1 月 12 日）

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

**FreeBSD 项目**

版权 © 2012 FreeBSD 文档项目

```
$FreeBSD: stable/9/release/doc/en_US.ISO8859-1/relnotes/article.sgml 230006 2012-01-12 05:51:11Z 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 是英特尔公司及其子公司在美国和其他国家的商标或注册商标。

SPARC、SPARC64、SPARCengine 和 UltraSPARC 是 SPARC 国际公司在美国及其他国家的商标。SPARC 国际公司拥有所有 SPARC 商标，并根据许可协议允许其成员适当使用这些商标。

许多制造商和销售商用于区分其产品的标识被声明为商标。本文档中出现这些标识时，如果 FreeBSD 项目已知该商标声明，这些标识后面会加上“™”或“®”符号。

FreeBSD 9.0-RELEASE 的发行说明包含了自上一个版本以来对 FreeBSD 基本系统在 9.0-STABLE 开发线路上的更改的总结。本文档列出了自上一个版本发布以来发布的安全公告，以及对 FreeBSD 内核和用户空间的重大更改。同时也简要介绍了升级的相关内容。

## 1 介绍

本文档包含了 FreeBSD 9.0-RELEASE 的发行说明。它介绍了 FreeBSD 最近添加、修改或删除的功能。同时，也提供了从之前版本升级到本版本的一些说明。

FreeBSD 9.0-RELEASE 版本是个 RELEASE 发行版。你可以在 [http://www.FreeBSD.org/releases/](http://www.freebsd.org/releases/) 或其镜像站点找到该版本。有关如何获取此（或其他）版本的更多信息，可以参考 [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 之前，强烈建议查阅发行说明中的勘误（更正文档）。该文档包含了在发布周期结束或发布后发现的“最新变化”信息。通常，它包含已知的 bug、安全公告以及文档更正。你可以在 FreeBSD 网站上找到 FreeBSD 9.0-RELEASE 的最新勘误文档。

## 2 新特性

本节介绍了自 8.2-RELEASE 以来，FreeBSD 中最显著的用户可见的新功能或更改。

典型的发行说明内容包括自 8.2-RELEASE 后发布的安全公告、新的驱动程序或硬件支持、新命令或选项、重要的 bug 修复或第三方的软件升级。它们还可能列出主要 Port/包的更改或发布工程实践的变化。显然，发行说明无法列出每个在版本之间对 FreeBSD 所做的更改；本文件主要集中于安全公告、用户可见的更改以及重要的架构改进。

### 2.1 安全公告

以下安全公告中介绍的问题已被修复。有关更多信息，请查阅各个安全公告，网址为 [http://security.FreeBSD.org/](http://security.freebsd.org/)。

| 安全公告                                                                                      | 日期               | 主题                                                                                                                                                                                                                       |
| ----------------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [SA-11:01.mountd](http://security.freebsd.org/advisories/FreeBSD-SA-11:01.mountd.asc)     | 2011 年 4 月 20 日  | [mountd(8)](http://www.freebsd.org/cgi/man.cgi?query=mountd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 中的网络 ACL 处理错误                                                                                                       |
| [SA-11:02.bind](http://security.freebsd.org/advisories/FreeBSD-SA-11:02.bind.asc)         | 2011 年 5 月 28 日  | 使用大型 RRSIG RRsets 和负缓存导致的 BIND 远程拒绝服务攻击                                                                                                                                                                                  |
| [SA-11:04.compress](http://security.freebsd.org/advisories/FreeBSD-SA-11:04.compress.asc) | 2011 年 9 月 28 日  | [compress(1)](http://www.freebsd.org/cgi/man.cgi?query=compress\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 和 [gzip(1)](http://www.freebsd.org/cgi/man.cgi?query=gzip\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 中的压缩文件损坏处理错误 |
| [SA-11:05.unix](http://security.freebsd.org/advisories/FreeBSD-SA-11:05.unix.asc)         | 2011 年 9 月 28 日  | 处理 UNIX 套接字地址时的缓冲区溢出                                                                                                                                                                                                     |
| [SA-11:06.bind](http://security.freebsd.org/advisories/FreeBSD-SA-11:06.bind.asc)         | 2011 年 12 月 23 日 | 针对 [named(8)](http://www.freebsd.org/cgi/man.cgi?query=named\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 服务器的远程数据包拒绝服务攻击                                                                                                    |
| [SA-11:07.chroot](http://security.freebsd.org/advisories/FreeBSD-SA-11:07.chroot.asc)     | 2011 年 12 月 23 日 | 通过 chrooted ftpd 执行代码                                                                                                                                                                                                    |
| [SA-11:08.telnetd](http://security.freebsd.org/advisories/FreeBSD-SA-11:08.telnetd.asc)   | 2011 年 12 月 23 日 | telnetd 代码执行漏洞                                                                                                                                                                                                           |
| [SA-11:09.pam\_ssh](http://security.freebsd.org/advisories/FreeBSD-SA-11:09.pam_ssh.asc)  | 2011 年 12 月 23 日 | `pam_ssh` 在用户账户拥有未加密的 SSH 私钥时错误地授予访问权限                                                                                                                                                                                   |
| [SA-11:10.pam](http://security.freebsd.org/advisories/FreeBSD-SA-11:10.pam.asc)           | 2011 年 12 月 23 日 | `pam_start()` 未对服务名称进行验证                                                                                                                                                                                                 |

### 2.2 内核变更

FreeBSD 内核现在支持 Capsicum 能力模式。Capsicum 是一套用于沙箱支持的特性，采用一种能力模型，其中能力为文件介绍符。已经向 GENERIC 内核添加了两个新选项：CAPABILITIES 和 CAPABILITY\_MODE。有关 Capsicum 的更多信息，请参见 <http://www.cl.cam.ac.uk/research/security/capsicum/>。\[[r219129](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219129)]

\[amd64, i386] FreeBSD [dtrace(1)](http://www.freebsd.org/cgi/man.cgi?query=dtrace\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 框架现在支持 FreeBSD/amd64 上的 linux32 和 freebsd32 系统调用的 `systrace`。新增了两个 `systrace_linux32` 和 `systrace_freebsd32` 内核模块，除了提供原生系统调用跟踪外，还支持跟踪兼容系统调用。\[[r219559](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219559), [r219561](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219561)]

\[amd64, i386, powerpc] FreeBSD ELF 图像激活器现在支持程序头 `PT_GNU_STACK`。默认情况下此功能被禁用。新增的 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量 `kern.elf32.nxstack` 和 `kern.elf64.nxstack` 允许为指定的 ABI（例如 elf32 为 32 位 ABI）启用 `PT_GNU_STACK`。\[[r217152](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217152), [r217396](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217396)]

已实现 [hhook(9)](http://www.freebsd.org/cgi/man.cgi?query=hhook\&sektion=9\&manpath=FreeBSD+9.0-RELEASE)（帮助钩子）和 [khelp(9)](http://www.freebsd.org/cgi/man.cgi?query=khelp\&sektion=9\&manpath=FreeBSD+9.0-RELEASE)（内核帮助）KPIs。这些是 [pfil(9)](http://www.freebsd.org/cgi/man.cgi?query=pfil\&sektion=9\&manpath=FreeBSD+9.0-RELEASE) 框架的超集，用于在内核中进行更通用的使用。[hhook(9)](http://www.freebsd.org/cgi/man.cgi?query=hhook\&sektion=9\&manpath=FreeBSD+9.0-RELEASE) KPI 提供了一种方式，使得内核子系统能够导出钩子点，供 [khelp(9)](http://www.freebsd.org/cgi/man.cgi?query=khelp\&sektion=9\&manpath=FreeBSD+9.0-RELEASE) 模块挂接，从而为内核提供增强或新增的功能。[khelp(9)](http://www.freebsd.org/cgi/man.cgi?query=khelp\&sektion=9\&manpath=FreeBSD+9.0-RELEASE) KPI 提供了一个管理 [khelp(9)](http://www.freebsd.org/cgi/man.cgi?query=khelp\&sektion=9\&manpath=FreeBSD+9.0-RELEASE) 模块的框架，这些模块间接使用 [hhook(9)](http://www.freebsd.org/cgi/man.cgi?query=hhook\&sektion=9\&manpath=FreeBSD+9.0-RELEASE) KPI 在内核中的钩子点注册其钩子函数。这些功能为内核提供了以结构化的方式在运行时动态扩展的能力，且能够保持 ABI 兼容性。\[[r216758](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216758), [r216615](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216615)]

\[amd64, i386, pc98] 已添加了 [loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 可调选项 `hw.memtest.tests`。该选项控制是否在启动时执行内存测试。默认值为 1（执行内存测试）。\[[r224516](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224516)]

已实现新的资源计费 API。它可以记录每个进程、每个 jail 和每个登录类的资源使用信息。请注意，该功能默认并未构建或安装。如需构建并安装该功能，请在内核配置文件中指定选项 RACCT，并按照 [FreeBSD 手册](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html) 中的说明重新构建基本系统。\[[r220137](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220137)]

已实现新的资源限制 API。它与 RACCT 资源计费实现协同工作，并基于其维护的规则集和当前的资源使用情况采取用户可配置的操作。新增了 [rctl(8)](http://www.freebsd.org/cgi/man.cgi?query=rctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具来管理用户空间中的规则。请注意，这个功能默认并未构建或安装。如需构建并安装该功能，请在内核配置文件中指定选项 RCTL ，并按照 [FreeBSD 手册](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html) 中的说明重新构建基本系统。\[[r220163](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220163)]

在 FreeBSD 的 Linux ABI 兼容性中，系统调用 [sendmsg(2)](http://www.freebsd.org/cgi/man.cgi?query=sendmsg\&sektion=2\&manpath=FreeBSD+9.0-RELEASE) 和 [recvmsg(2)](http://www.freebsd.org/cgi/man.cgi?query=recvmsg\&sektion=2\&manpath=FreeBSD+9.0-RELEASE) 得到了改进。\[[r220031](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220031)]

[open(2)](http://www.freebsd.org/cgi/man.cgi?query=open\&sektion=2\&manpath=FreeBSD+9.0-RELEASE) 和 [fhopen(2)](http://www.freebsd.org/cgi/man.cgi?query=fhopen\&sektion=2\&manpath=FreeBSD+9.0-RELEASE) 系统调用现在支持 O\_CLOEXEC 参数，这允许为新创建的文件介绍符设置 `FD_CLOEXEC` 参数。此功能在 IEEE Std 1003.1-2008（POSIX，单一 UNIX 规范版本 4）中进行了标准化。\[[r219999](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219999)]

已实现系统调用 [posix\_fallocate(2)](http://www.freebsd.org/cgi/man.cgi?query=posix_fallocate\&sektion=2\&manpath=FreeBSD+9.0-RELEASE) 。该功能是 POSIX 中的一项功能，确保为常规文件数据分配文件系统存储介质上的一部分存储空间。\[[r220791](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220791)]

新增了两个系统调用 `setloginclass(2)` 和 `getloginclass(2)`。这使得内核能够追踪进程被分配的登录类，这对于 RCTL 资源限制框架是必需的。\[[r219304](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219304)]

\[amd64] FreeBSD 现在支持在 FreeBSD/amd64 上执行 FreeBSD 1/i386 二进制文件 `a.out`。请注意，默认情况下此功能未构建或安装。如需构建并安装它们，请在内核配置文件中指定选项 `COMPAT_43`，并按照 [FreeBSD 手册](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html) 中的说明重新构建基本系统。\[[r220238](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220238)]

已添加以下 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量，以显示各种内核特性的可用性：\[[r218485](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218485), [r219028](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219028), [r219029](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219029)]

| [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量名 | 说明                                                                                                                       |
| -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `kern.features.ufs_acl`                                                                                  | UFS 中的 ACL（访问控制列表）支持                                                                                                     |
| `kern.features.ufs_gjournal`                                                                             | 通过 [gjournal(8)](http://www.freebsd.org/cgi/man.cgi?query=gjournal\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 提供的 UFS 日志支持 |
| `kern.features.ufs_quota`                                                                                | UFS 磁盘配额支持                                                                                                               |
| `kern.features.ufs_quota64`                                                                              | 64 位 UFS 磁盘配额支持                                                                                                          |
| `kern.features.softupdates`                                                                              | FFS 软件更新支持                                                                                                               |
| `kern.features.ffs_snapshot`                                                                             | FFS 快照支持                                                                                                                 |
| `kern.features.nfsclient`                                                                                | NFS 客户端（旧实现）                                                                                                             |
| `kern.features.nfscl`                                                                                    | NFS 客户端（新实现）                                                                                                             |
| `kern.features.nfsserver`                                                                                | NFS 服务器（旧实现）                                                                                                             |
| `kern.features.nfsd`                                                                                     | NFS 服务器（新实现）                                                                                                             |
| `kern.features.kdtrace_hooks`                                                                            | 加载 DTrace 内核模块所需的内核 DTrace 钩子                                                                                            |
| `kern.features.ktr`                                                                                      | 内核支持 KTR 内核跟踪设施                                                                                                          |
| `kern.features.ktrace`                                                                                   | 内核支持系统调用跟踪                                                                                                               |
| `kern.features.hwpmc_hooks`                                                                              | 内核支持硬件性能计数器（HW PMC）                                                                                                      |
| `kern.features.sysv_msg`                                                                                 | System V 消息队列支持                                                                                                          |
| `kern.features.sysv_sem`                                                                                 | System V 信号量支持                                                                                                           |
| `kern.features.p1003_1b_mqueue`                                                                          | POSIX P1003.1B 消息队列支持                                                                                                    |
| `kern.features.p1003_1b_semaphores`                                                                      | POSIX P1003.1B 信号量支持                                                                                                     |
| `kern.features.kposix_priority_scheduling`                                                               | POSIX P1003.1B 实时扩展支持                                                                                                    |
| `kern.features.stack`                                                                                    | 支持捕获内核栈                                                                                                                  |
| `kern.features.sysv_shm`                                                                                 | System V 共享内存段支持                                                                                                         |
| `kern.features.pps_sync`                                                                                 | 内核 PLL 使用外部 PPS 信号的支持                                                                                                    |
| `kern.features.regression`                                                                               | 内核支持回归测试所需的接口                                                                                                            |
| `kern.features.invariant_support`                                                                        | 支持使用 INVARIANTS 选项编译的模块                                                                                                  |
| `kern.features.zero_copy_sockets`                                                                        | 零拷贝套接字支持                                                                                                                 |
| `kern.features.libmchain`                                                                                | mchain 库支持                                                                                                               |
| `kern.features.scbus`                                                                                    | SCSI 设备支持                                                                                                                |
| `kern.features.mac`                                                                                      | 强制访问控制框架支持                                                                                                               |
| `kern.features.audit`                                                                                    | BSM 审计支持                                                                                                                 |
| `kern.features.geom_gate`                                                                                | GEOM Gate 模块支持                                                                                                           |
| `kern.features.geom_uzip`                                                                                | GEOM uzip 只读压缩磁盘支持                                                                                                       |
| `kern.features.geom_cache`                                                                               | GEOM 缓存模块支持                                                                                                              |
| `kern.features.geom_mirror`                                                                              | GEOM 镜像支持                                                                                                                |
| `kern.features.geom_stripe`                                                                              | GEOM 条带化支持                                                                                                               |
| `kern.features.geom_concat`                                                                              | GEOM 串联支持                                                                                                                |
| `kern.features.geom_raid3`                                                                               | GEOM RAID-3 功能支持                                                                                                         |
| `kern.features.geom_fox`                                                                                 | GEOM FOX 冗余路径缓解支持                                                                                                        |
| `kern.features.geom_multipath`                                                                           | GEOM 多路径支持                                                                                                               |
| `kern.features.g_virstor`                                                                                | GEOM 虚拟存储支持                                                                                                              |
| `kern.features.geom_bde`                                                                                 | 基于 GEOM 的磁盘加密支持                                                                                                          |
| `kern.features.geom_eli`                                                                                 | GEOM 加密模块支持                                                                                                              |
| `kern.features.geom_journal`                                                                             | GEOM 日志支持                                                                                                                |
| `kern.features.geom_shsec`                                                                               | GEOM 共享密钥设备支持                                                                                                            |
| `kern.features.geom_vol`                                                                                 | GEOM 支持从 UFS 超级块读取卷名称                                                                                                    |
| `kern.features.geom_label`                                                                               | GEOM 标签支持                                                                                                                |
| `kern.features.geom_sunlabel`                                                                            | GEOM Sun/Solaris 分区支持                                                                                                    |
| `kern.features.geom_bsd`                                                                                 | GEOM BSD 磁盘标签支持                                                                                                          |
| `kern.features.geom_pc98`                                                                                | GEOM NEC PC9800 分区支持                                                                                                     |
| `kern.features.geom_linux_lvm`                                                                           | GEOM Linux LVM 分区支持                                                                                                      |
| `kern.features.geom_part_pc98`                                                                           | GEOM PC-9800 磁盘分区类支持                                                                                                     |
| `kern.features.geom_part_vtoc8`                                                                          | GEOM SMI VTOC8 磁盘标签分区类支持                                                                                                 |
| `kern.features.geom_part_bsd`                                                                            | GEOM BSD 磁盘标签分区类支持                                                                                                       |
| `kern.features.geom_part_ebr`                                                                            | GEOM 扩展引导记录支持                                                                                                            |
| `kern.features.geom_part_ebr_compat`                                                                     | GEOM EBR 分区类：向后兼容的分区名称                                                                                                   |
| `kern.features.geom_part_gpt`                                                                            | GEOM GPT 分区类支持                                                                                                           |
| `kern.features.geom_part_apm`                                                                            | GEOM Apple 风格分区类支持                                                                                                       |
| `kern.features.geom_part_mbr`                                                                            | GEOM MBR 分区类支持                                                                                                           |

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

默认的启动加载器菜单已更新。[r222417](http://svn.freebsd.org/viewvc/base?view=revision\&revision=222417)

\[ia64] [loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 启动加载器现在支持 PBVM（预启动虚拟内存）。这允许在不需要假设物理内存布局的情况下，将内核链接到固定的虚拟地址。PBVM 还允许精确控制内核及其模块加载的地址。[r219541](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219541)

#### 2.2.2 硬件支持

\[powerpc] FreeBSD/powerpc 现在支持通过 3.15 及更早版本的固件提供的 OtherOS 功能来使用 Sony Playstation 3。[r217044](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217044)

新增了 [loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 可调项 `machdep.disable_tsc`。将此项设置为非零值可禁用 TSC（时间戳计数器）的使用，方法是关闭启动时的 CPU 频率校准、使用 TSC 进行 DELAY(9)，并将 TSC 用作 CPU 时钟。另一个新的 [loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 可调项 `machdep.disable_tsc_calibration` 仅允许跳过 TSC 频率校准。这在需要使用 Intel 处理器的芯片名义频率时非常有用。[r219473](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219473), [r220577](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220577)

\[amd64, i386] FreeBSD [usb(4)](http://www.freebsd.org/cgi/man.cgi?query=usb\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 子系统现在默认支持 USB 3.0。[r223098](http://svn.freebsd.org/viewvc/base?view=revision\&revision=223098)

FreeBSD [usb(4)](http://www.freebsd.org/cgi/man.cgi?query=usb\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 子系统现在支持 USB 包过滤器。这可捕获通过每个 USB 主机控制器的数据包。该实现几乎基于 [bpf(4)](http://www.freebsd.org/cgi/man.cgi?query=bpf\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 代码。已添加用户空间程序 [usbdump(8)](http://www.freebsd.org/cgi/man.cgi?query=usbdump\&sektion=8\&manpath=FreeBSD+9.0-RELEASE)。[r215649](http://svn.freebsd.org/viewvc/base?view=revision\&revision=215649)

**2.2.2.1 网络接口支持**

修复了一个在 [alc(4)](http://www.freebsd.org/cgi/man.cgi?query=alc\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动中的 bug，该 bug 可能导致基于 AR8152 的网络接口无法正常工作。\[[r217649](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217649)]

增加了一个用于 Broadcom NetXtreme II 10GbE 控制器（BCM57710、BCM57711、BCM57711E）的 bxe(4) 驱动。\[[r219647](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219647)]

更新了 [cxgb(4)](http://www.freebsd.org/cgi/man.cgi?query=cxgb\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动到版本 7.11.0。\[[r220009](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220009)]

增加了一个用于 Chelsio T4（Terminator 4）系列 10Gb/1Gb 适配器的 [cxgbe(4)](http://www.freebsd.org/cgi/man.cgi?query=cxgbe\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动。\[[r218794](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218794)]

\[i386] [dc(4)](http://www.freebsd.org/cgi/man.cgi?query=dc\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动现在在启用 `PAE` 选项的内核中正常工作。\[[r218832](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218832)]

更新了 [em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动到版本 7.3.2。\[[r219753](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219753)]

更新了 [igb(4)](http://www.freebsd.org/cgi/man.cgi?query=igb\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动到版本 2.2.5。\[[r223350](http://svn.freebsd.org/viewvc/base?view=revision\&revision=223350)]

[igb(4)](http://www.freebsd.org/cgi/man.cgi?query=igb\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动现在支持 Intel I350 PCIe 千兆以太网控制器。\[[r218530](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218530)]

更新了 [ixgbe(4)](http://www.freebsd.org/cgi/man.cgi?query=ixgbe\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动到版本 2.3.8。\[[r217593](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217593)]

更新了 [iwn(4)](http://www.freebsd.org/cgi/man.cgi?query=iwn\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动中用于 1000、5000、6000 和 6500 系列卡的固件镜像。\[[r220892](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220892)]

修复了一个在 [msk(4)](http://www.freebsd.org/cgi/man.cgi?query=msk\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动中的 bug，可能导致 RX 校验和卸载功能无法正常工作。\[[r216860](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216860)]

修复了一个在 [nfe(4)](http://www.freebsd.org/cgi/man.cgi?query=nfe\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动中的 bug，可能导致更改 MTU 后无法重新初始化。\[[r217794](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217794)]

修复了一个在 [ral(4)](http://www.freebsd.org/cgi/man.cgi?query=ral\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 和 [run(4)](http://www.freebsd.org/cgi/man.cgi?query=run\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动中的 bug，可能导致 hostap 模式无法工作。\[[r217511](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217511)]

增加了一个用于 RDC Semiconductor R6040 10/100 PHY 的 rdcphy(4) 驱动。\[[r216828](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216828)]

[re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动现在支持 RTL8168E/8111E-VL PCIe 千兆以太网控制器和 RTL8401E PCIe 快速以太网控制器。\[[r217498](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217498), [r218760](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218760)]

[re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动现在支持 RTL810xE PCIe 快速以太网控制器的 TX 中断调节功能。\[[r217766](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217766)]

[re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动现在支持一种新的 RX 中断调节机制，以解决性能问题。增加了一个 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量 `dev.re.N.int_rx_mod`，用于控制延迟 RX 中断处理的时间，单位为微秒。将其设置为 0 可以完全禁用 RX 中断调节。增加了一个 [loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 可调参数 `hw.re.intr_filter`，用于控制是否使用支持控制器上的 MSI/MSI-X 功能的旧机制。当该值设置为非零时，[re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动使用旧机制。默认值为 0，且该可调项对不支持 MSI/MSI-X 功能的控制器没有影响。\[[r217902](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217902)]

[re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动现在支持 RealTek RTL8168/8111 C 或更高版本控制器的 TSO（TCP 分段卸载）。请注意，由于在某些条件下可能会发送损坏的帧，默认情况下此功能是禁用的。\[[r217246](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217246), [r217832](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217832)]

[re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动现在支持独立启用 TX/RX 校验和卸载。请注意，在某些基于 RTL8168C 的网络接口上，TX IP 校验和被禁用，因为当数据包包含 IP 选项时，它可能会生成不正确的 IP 校验和。\[[r217381](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217381), [r218289](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218289)]

修复了一个 [re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动中的 bug，可能导致在接收来自 RTL8169C、8169D 或 8169E 控制器的 Jumbo 帧时发生崩溃。\[[r217296](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217296)]

[re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动现在支持 RTL8105E PCIe 快速以太网控制器。\[[r217911](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217911)]

rlphy(4) 驱动现在支持 Realtek RTL8201E 10/100 PHY，该芯片在 RTL8105E 控制器中使用。\[[r217910](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217910)]

修复了一个 [sis(4)](http://www.freebsd.org/cgi/man.cgi?query=sis\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动中的 bug，可能导致在更改多播数据包处理和/或混杂模式配置时，DP83815、DP83816 和 SiS 900/7016 控制器无法正确重新初始化。\[[r217548](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217548)]

修复了一个 [vlan(4)](http://www.freebsd.org/cgi/man.cgi?query=vlan\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 虚拟接口中的 bug，可能导致在自动配置的 IPv6 链路本地地址中出现随机的接口标识符，而不是根据父接口的 IEEE 802 48 位 MAC 地址和 RFC 4291 中介绍的算法生成的地址。\[[r216650](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216650)]

增加了一个用于 RDC R6040 快速以太网控制器的 [vte(4)](http://www.freebsd.org/cgi/man.cgi?query=vte\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动，该控制器常见于 Vortex86 系统级芯片中。\[[r216829](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216829)]

增加了一个用于 Neterion X3100 10GbE 服务器/存储适配器的 [vxge(4)](http://www.freebsd.org/cgi/man.cgi?query=vxge\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动。\[[r221167](http://svn.freebsd.org/viewvc/base?view=revision\&revision=221167)]

修复了一个 [wpi(4)](http://www.freebsd.org/cgi/man.cgi?query=wpi\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动中的 bug，可能导致显示以下错误消息并使设备无法使用：\[[r216824](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216824)]

```sh
wpi0: could not map mbuf (error 12)
wpi0: wpi_rx_intr: bus_dmamap_load failed, error 12
```

#### 2.2.3 网络协议

[ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 现在支持在 fwd 动作中使用 IPv6。\[[r225044](http://svn.freebsd.org/viewvc/base?view=revision\&revision=225044)]

[ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 现在支持 call 和 return 动作。在执行 call *number* 动作时，当前规则编号将被保存到内部堆栈，并且规则集处理将继续执行从编号 *number* 或更高的第一个规则。return 动作会将内部堆栈中由最新的 call 动作保存的规则编号返回，并将规则集处理返回到该编号以上的第一个规则。\[[r223666](http://svn.freebsd.org/viewvc/base?view=revision\&revision=223666)]

FreeBSD 的 [ipsec(4)](http://www.freebsd.org/cgi/man.cgi?query=ipsec\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 支持现在使用一半的哈希大小作为 Hashed Message Authentication Mode (HMAC-SHA-256、HMAC-SHA-384 和 HMAC-SHA-512) 的认证哈希大小，如 RFC 4868 中所介绍。在之前的版本中，这一长度是固定的 96 位，因为实现基于旧的互联网草案 draft-ietf-ipsec-ciph-sha-256-00。需要注意的是，这意味着 9.0-RELEASE 及以后版本不再与较旧的 FreeBSD 版本兼容。\[[r218794](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218794)]

对于 Infiniband 支持，已将 OFED（OpenFabrics Enterprise Distribution）版本 1.5.3 导入基本系统。请注意，默认情况下不会构建或安装它们。要构建并安装它们，请在 /etc/src.conf 中指定 WITH\_OFED=yes，并按照 [FreeBSD 手册](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html) 中的说明重建基本系统。\[[r219820](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219820)]

FreeBSD 的 TCP/IP 网络栈现在支持 RFC 3021 中介绍的 /31 前缀，"Using 31-Bit Prefixes on IPv4 Point-to-Point Links"。\[[r226572](http://svn.freebsd.org/viewvc/base?view=revision\&revision=226572)]

修复了 FreeBSD TCP/IP 网络栈中的一个 bug。未指定接口时，如果存在多播选项，源地址选择将无法执行。\[[r217169](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217169)]

修复了 [sendmsg(2)](http://www.freebsd.org/cgi/man.cgi?query=sendmsg\&sektion=2\&manpath=FreeBSD+9.0-RELEASE) 中使用的 IPV6\_PKTINFO 选项的一个 bug。由 [setsockopt(2)](http://www.freebsd.org/cgi/man.cgi?query=setsockopt\&sektion=2\&manpath=FreeBSD+9.0-RELEASE) 设置的 IPV6\_USE\_MIN\_MTU 状态被忽略。\[[r225682](http://svn.freebsd.org/viewvc/base?view=revision\&revision=225682)]

FreeBSD 的 TCP/IP 网络栈现在支持可插拔拥塞控制框架 [mod\_cc(9)](http://www.freebsd.org/cgi/man.cgi?query=mod_cc\&sektion=9\&manpath=FreeBSD+9.0-RELEASE) 。这能让将 TCP 拥塞控制算法实现为动态加载的内核模块。以下内核模块自 9.0-RELEASE 起可用：[cc\_chd(4)](http://www.freebsd.org/cgi/man.cgi?query=cc_chd\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 用于 CAIA-Hamilton-Delay 算法，[cc\_cubic(4)](http://www.freebsd.org/cgi/man.cgi?query=cc_cubic\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 用于 CUBIC 算法，[cc\_hd(4)](http://www.freebsd.org/cgi/man.cgi?query=cc_hd\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 用于 Hamilton-Delay 算法，[cc\_htcp(4)](http://www.freebsd.org/cgi/man.cgi?query=cc_htcp\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 用于 H-TCP 算法，[cc\_newreno(4)](http://www.freebsd.org/cgi/man.cgi?query=cc_newreno\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 用于 NewReno 算法，以及 [cc\_vegas(4)](http://www.freebsd.org/cgi/man.cgi?query=cc_vegas\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 用于 Vegas 算法。可以通过新的 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量 `net.inet.tcp.cc.algorithm` 设置默认算法。该值必须设置为 `net.inet.tcp.cc.available` 列出的名称之一，且 newreno 是启动时的默认值。更多详细信息，请参阅 [mod\_cc(4)](http://www.freebsd.org/cgi/man.cgi?query=mod_cc\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 和 [mod\_cc(9)](http://www.freebsd.org/cgi/man.cgi?query=mod_cc\&sektion=9\&manpath=FreeBSD+9.0-RELEASE) 手册页。\[[r216109](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216109), [r216114](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216114), [r216115](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216115), [r218152](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218152), [r218153](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218153), [r218155](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218155)]

添加了 [h\_ertt(4)](http://www.freebsd.org/cgi/man.cgi?query=h_ertt\&sektion=4\&manpath=FreeBSD+9.0-RELEASE)（增强的往返时延）[khelp(9)](http://www.freebsd.org/cgi/man.cgi?query=khelp\&sektion=9\&manpath=FreeBSD+9.0-RELEASE) 模块。该模块允许 TCP/IP 网络栈中每个连接的瞬时 RTT 进行低噪声估计，并且即使在使用延迟确认和/或 TSO（TCP 分段卸载）的连接上也能实现强大的实现。\[[r217806](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217806)]

添加了一个新的 [tcp(4)](http://www.freebsd.org/cgi/man.cgi?query=tcp\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 套接字选项 TCP\_CONGESTION。这允许选择或查询 TCP/IP 网络栈在套接字上的连接将使用的拥塞控制算法。\[[r218912](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218912)]

[ng\_ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_ipfw\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) [netgraph(4)](http://www.freebsd.org/cgi/man.cgi?query=netgraph\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 节点现在支持 IPv6。\[[r225586](http://svn.freebsd.org/viewvc/base?view=revision\&revision=225586)]

[ng\_one2many(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_one2many\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) [netgraph(4)](http://www.freebsd.org/cgi/man.cgi?query=netgraph\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 节点现在支持 XMIT\_FAILOVER 传输算法。这使得数据包通过第一个活动的许多钩子进行传输。\[[r219127](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219127)]

[ng\_netflow(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_netflow\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) [netgraph(4)](http://www.freebsd.org/cgi/man.cgi?query=netgraph\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 节点现在支持 NetFlow 版本 9。新增了一个 export9 钩子用于 NetFlow v9 数据。请注意，可以同时以版本 5 和版本 9 导出数据。\[[r219183](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219183)]

#### 2.2.4 磁盘和存储

[ada(4)](http://www.freebsd.org/cgi/man.cgi?query=ada\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动程序现在支持写入缓存控制。新的 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量 `kern.cam.ada.write_cache` 决定是否启用 [ada(4)](http://www.freebsd.org/cgi/man.cgi?query=ada\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 设备的写入缓存。设置为 `1` 启用写入缓存，`0` 禁用写入缓存，`-1` 使用设备的默认行为。 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量 `kern.cam.ada.N.write_cache` 可以基于每个设备覆盖配置（默认值为 `-1`，表示使用全局设置）。请注意，值可以在运行时更改，但仅在设备重置后生效。\[[r220412](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220412)]

[arcmsr(4)](http://www.freebsd.org/cgi/man.cgi?query=arcmsr\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动程序已更新为版本 1.20.00.22。[r224905](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224905)

[cam(4)](http://www.freebsd.org/cgi/man.cgi?query=cam\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 子系统现在支持 SPC-3（SCSI 主命令 3）规范的介绍符格式感应数据。[r226067](http://svn.freebsd.org/viewvc/base?view=revision\&revision=226067)

已添加 [geom\_map(4)](http://www.freebsd.org/cgi/man.cgi?query=geom_map\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) GEOM 类。这允许根据设备的硬编码布局生成多个 geom 提供程序，而无需显式的分区表，如嵌入式闪存存储。有关更多信息，请参见 [geom\_map(4)](http://www.freebsd.org/cgi/man.cgi?query=geom_map\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 手册页面。[r220559](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220559)

[gpart(8)](http://www.freebsd.org/cgi/man.cgi?query=gpart\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) GEOM 类现在支持 MBR 和 EBR 方案的以下别名：fat32、ebr、linux-data、linux-raid 和 linux-swap。[r218014](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218014)

[gpart(8)](http://www.freebsd.org/cgi/man.cgi?query=gpart\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) GEOM 类现在支持用于 GPT 方案的 bios-boot GUID，这在 GRUB 2 引导加载程序中使用。[r218014](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218014)

已添加 [graid(8)](http://www.freebsd.org/cgi/man.cgi?query=graid\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) GEOM 类。这是 [ataraid(4)](http://www.freebsd.org/cgi/man.cgi?query=ataraid\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动程序的替代，支持各种基于 BIOS 的软件 RAID。[r219974](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219974)

[sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量 `kern.geom.confxml` 现在包含有关磁盘标识的信息（在标签 `<ident>` 中）和磁盘型号字符串（在标签 `<descr>` 中）。[r219056](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219056)

[md(4)](http://www.freebsd.org/cgi/man.cgi?query=md\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 内存支持的伪磁盘设备驱动程序现在支持一个 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量 `vm.md_malloc_wait`，用于指定 malloc 支持的磁盘是否使用 `M_WAITOK` 或 `M_NOWAIT` 来调用 [malloc(9)](http://www.freebsd.org/cgi/man.cgi?query=malloc\&sektion=9\&manpath=FreeBSD+9.0-RELEASE)。设置 `M_WAITOK` 可以在高负载下防止内存分配失败。如果设置为 `0`，则 malloc 支持的磁盘将使用 `M_NOWAIT` 进行内存分配。默认值为 `0`。[r216793](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216793)

修复了 [mmc(4)](http://www.freebsd.org/cgi/man.cgi?query=mmc\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动程序中可能导致设备检测失败的错误。[r216941](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216941), [r217509](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217509)

已更新 [mxge(4)](http://www.freebsd.org/cgi/man.cgi?query=mxge\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动程序。[r223958](http://svn.freebsd.org/viewvc/base?view=revision\&revision=223958)

为 3ware 9750 SATA+SAS 6Gb/s RAID 控制器添加了 [tws(4)](http://www.freebsd.org/cgi/man.cgi?query=tws\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 驱动程序。[r226115](http://svn.freebsd.org/viewvc/base?view=revision\&revision=226115)

#### 2.2.5 文件系统

FreeBSD 快速文件系统现在支持软更新日志功能。它在启用软更新的文件系统中引入了一个意图日志，即使在非正常关机情况下，也无需后台运行 [fsck(8)](http://www.freebsd.org/cgi/man.cgi?query=fsck\&sektion=8\&manpath=FreeBSD+9.0-RELEASE)。可以通过使用 [newfs(8)](http://www.freebsd.org/cgi/man.cgi?query=newfs\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具的 `-j` 参数或 [tunefs(8)](http://www.freebsd.org/cgi/man.cgi?query=tunefs\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具的 `-j enable` 选项，在每个文件系统中启用此功能。请注意，9.0-RELEASE 安装程序会自动为新创建的 UFS 文件系统启用软更新日志功能。[r207141](http://svn.freebsd.org/viewvc/base?view=revision\&revision=207141), [r218726](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218726)

FreeBSD 快速文件系统现在支持在释放数据块时使用 TRIM 命令。新的 `-t` 参数在 [newfs(8)](http://www.freebsd.org/cgi/man.cgi?query=newfs\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 和 [tunefs(8)](http://www.freebsd.org/cgi/man.cgi?query=tunefs\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具中设置 TRIM 启用参数。TRIM 启用参数使文件系统在释放每个块时向底层设备发送删除请求。TRIM 命令在 ATA8-ACS2 标准中被指定为数据集管理命令，用于将删除的数据块信息传输到设备，尤其适用于固态硬盘（SSD）以进行优化。[r216796](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216796)

新增的 `-E` 参数已添加到 [newfs(8)](http://www.freebsd.org/cgi/man.cgi?query=newfs\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 和 [fsck\_ffs(8)](http://www.freebsd.org/cgi/man.cgi?query=fsck_ffs\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具中。此参数会清除未分配的块，通知底层设备这些块未使用，并且其内容可能会被丢弃。这在 [fsck\_ffs(8)](http://www.freebsd.org/cgi/man.cgi?query=fsck_ffs\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 中对于在没有 TRIM 支持的系统上挂载的文件系统、禁用 TRIM 支持的系统，或已从一个设备复制到另一个设备的文件系统非常有用。[r221233](http://svn.freebsd.org/viewvc/base?view=revision\&revision=221233)

FreeBSD NFS 子系统已更新。新的实现除了支持 NFS 版本 2 和 3 之外，还支持 NFS 版本 4。NFS 服务器和客户端的内核选项已从 NFSSERVER 和 NFSCLIENT 更改为 NFSD 和 NFSCL。[sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量以 `vfs.nfssrv.` 开头的已重命名为 `vfs.nfsd.`。NFS 服务器现在支持 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量 `vfs.nfsd.server_max_nfsvers` 和 `vfs.nfsd.server_min_nfsvers`，用于指定服务器接受的最大和最小 NFS 版本号。默认值分别为 `3` 和 `2`。[r221124](http://svn.freebsd.org/viewvc/base?view=revision\&revision=221124)

要启用 NFSv4，需要在 [rc.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=rc.conf\&sektion=5\&manpath=FreeBSD+9.0-RELEASE) 中的服务器端配置以下变量：

```sh
nfsv_server_enable="YES"
nfsv4_server_enable="YES"
nfsuserd_enable="YES"
```

并且在 `/etc/exports` 文件中添加以下行：

```sh
V4: /
```

更多有关 NFSv4 及其配置的信息，请参见 [nfsv4(4)](http://www.freebsd.org/cgi/man.cgi?query=nfsv4\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 和 [exports(5)](http://www.freebsd.org/cgi/man.cgi?query=exports\&sektion=5\&manpath=FreeBSD+9.0-RELEASE) 手册页面。

FreeBSD NFS 子系统现在支持挂载选项 `nocto`。此选项会禁用在打开时进行的关闭到打开缓存一致性检查。此选项可能会提高只读挂载的性能，但应仅在服务器上的数据很少更改时使用。 [mount\_nfs(8)](http://www.freebsd.org/cgi/man.cgi?query=mount_nfs\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在也支持此参数关键字。[r221436](http://svn.freebsd.org/viewvc/base?view=revision\&revision=221436)

已添加 [loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 可调变量 `vfs.typenumhash`，默认设置为 `1`。这使得在内核中对文件系统标识号进行哈希计算成为可能。此举修复了在升级或重建 NFS 服务器上的内核时，由于这些标识号值的意外变化，导致 NFS 客户端出现“过时的 NFS 文件句柄”错误。[r225537](http://svn.freebsd.org/viewvc/base?view=revision\&revision=225537)

FreeBSD ZFS 子系统已更新为 SPA（存储池分配器，也称为 zpool）版本 28。现在它支持数据去重、三重奇偶校验 RAIDZ（raidz3）、快照保持、日志设备移除、zfs diff、zpool split、zpool import `-F` 和只读 zpool 导入。[r219089](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219089)

### 2.3 用户空间变化

已添加复杂的指数函数 [cexp(3)](http://www.freebsd.org/cgi/man.cgi?query=cexp\&sektion=3\&manpath=FreeBSD+9.0-RELEASE)、[cexpf(3)](http://www.freebsd.org/cgi/man.cgi?query=cexpf\&sektion=3\&manpath=FreeBSD+9.0-RELEASE) 和立方根函数 [cbrtl(3)](http://www.freebsd.org/cgi/man.cgi?query=cbrtl\&sektion=3\&manpath=FreeBSD+9.0-RELEASE) 到 **libm**。\[ [r219359](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219359), [r219571](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219571) ]

[bsdtar(1)](http://www.freebsd.org/cgi/man.cgi?query=bsdtar\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 和 [cpio(1)](http://www.freebsd.org/cgi/man.cgi?query=cpio\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 工具现在基于 **libarchive** 版本 2.8.4。\[ [r224152](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224152), [r224153](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224153), [r224154](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224154) ]

[cpuset(1)](http://www.freebsd.org/cgi/man.cgi?query=cpuset\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 工具现在支持 `-C` 参数来创建一个新的 cpuset 并将现有进程分配到该集，`-l cpu-list` 选项中的关键字 `all` 指定系统中的所有 CPU。\[ [r217416](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217416) ]

[dhclient(8)](http://www.freebsd.org/cgi/man.cgi?query=dhclient\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在默认使用 [resolvconf(8)](http://www.freebsd.org/cgi/man.cgi?query=resolvconf\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 来管理 [resolv.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=resolv.conf\&sektion=5\&manpath=FreeBSD+9.0-RELEASE) 文件。`resolvconf_enable` 变量在 `/etc/dhclient-enter-hooks` 中控制行为。\[ [r219739](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219739) ]

修复了 [fetch(1)](http://www.freebsd.org/cgi/man.cgi?query=fetch\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 工具中的一个 bug，该 bug 可能导致 `STAT FTP` 命令无法正常工作。\[ [r217505](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217505) ]

[gpart(8)](http://www.freebsd.org/cgi/man.cgi?query=gpart\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在支持 `-p` 参数用于子命令 `show`。这允许显示分区提供者的名称，而不是分区的索引。\[ [r219415](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219415) ]

[hastd(8)](http://www.freebsd.org/cgi/man.cgi?query=hastd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在将工作进程的 `root` 权限降低到 `hast` 用户。\[ [r218049](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218049) ]

[hastd(8)](http://www.freebsd.org/cgi/man.cgi?query=hastd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在支持关键字 `checksum` 来指定资源部分中的校验和算法。到 9.0-RELEASE 为止，支持 none、sha256 和 crc32。\[ [r219351](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219351) ]

[hastd(8)](http://www.freebsd.org/cgi/man.cgi?query=hastd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在支持关键字 `compression` 来指定资源部分中的压缩算法。到 9.0-RELEASE 为止，支持 none、hole 和 lzf。\[ [r219354](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219354) ]

[hastd(8)](http://www.freebsd.org/cgi/man.cgi?query=hastd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在支持关键字 `source` 来指定在连接远程 [hastd(8)](http://www.freebsd.org/cgi/man.cgi?query=hastd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 守护进程之前绑定到本地地址。\[ [r219818](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219818) ]

已经导入了符合《单一 UNIX 规范》的 `iconv()` API 库和工具实现。这些是基于 NetBSD 的 Citrus 实现。请注意，默认情况下这些并不会被构建或安装。要构建和安装它们，请在 `/etc/src.conf` 中指定 `WITH_ICONV=yes`，并根据 [FreeBSD Handbook](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html) 重新构建基本系统。\[ [r219019](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219019) ]

[ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在支持关键字 fdx、flow、hdx 和 loop ，分别作为 full-duplex、flowcontrol、half-duplex 和 loopback 的别名。\[ [r217013](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217013) ]

已经将 [readline(3)](http://www.freebsd.org/cgi/man.cgi?query=readline\&sektion=3\&manpath=FreeBSD+9.0-RELEASE) API 集成到 **libedit** 中。这基于 NetBSD 的实现，现在 BSD 许可的工具使用它，而不是 GNU **libreadline**。\[ [r220370](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220370) ]

[makefs(8)](http://www.freebsd.org/cgi/man.cgi?query=makefs\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在支持 ISO 9660 格式。\[ [r224762](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224762) ]

**libmd** 和 **libcrypt** 现在支持 SHA-256 和 SHA-512 算法。\[ [r220496](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220496), [r220497](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220497) ]

[netstat(1)](http://www.freebsd.org/cgi/man.cgi?query=netstat\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 工具现在不会在 `netstat -ani` 和 `netstat -nr` 的结果中显示 FreeBSD 内核使用的内部作用域地址表示，这些表示源自 KAME IPv6 堆栈。\[ [r217642](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217642) ]

[newsyslog(8)](http://www.freebsd.org/cgi/man.cgi?query=newsyslog\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在支持 [xz(1)](http://www.freebsd.org/cgi/man.cgi?query=xz\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 压缩。在可选字段中添加了 `X` 参数以指定压缩方式。\[ [r218127](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218127) ]

[pam\_group(8)](http://www.freebsd.org/cgi/man.cgi?query=pam_group\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 模块现在支持选项 `ruser` 和 `luser`。`ruser` 使其根据客户端的组成员身份接受或拒绝，这是默认行为。`luser` 检查目标用户的组成员身份，而不是客户端的组。如果未指定任何选项， [pam\_group(8)](http://www.freebsd.org/cgi/man.cgi?query=pam_group\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 将默认假设 `ruser` 并发出警告。\[ [r219563](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219563) ]

添加了 [poweroff(8)](http://www.freebsd.org/cgi/man.cgi?query=poweroff\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具。它等同于执行以下命令：

```sh
# shutdown -p now
```

[ppp(8)](http://www.freebsd.org/cgi/man.cgi?query=ppp\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在支持 *name* 接口名和 *description* 接口介绍命令。这些命令具有与 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具中的 name 和 description 子命令相同的功能。[r218397](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218397)

[ps(1)](http://www.freebsd.org/cgi/man.cgi?query=ps\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 工具现在支持 `-o class` 选项来显示每个进程的登录类信息，以及选项 `-o usertime` 和 `-o systime`，分别显示累计的用户 CPU 时间和系统 CPU 时间。[r219307](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219307), [r219713](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219713)

[rtadvd(8)](http://www.freebsd.org/cgi/man.cgi?query=rtadvd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 守护进程现在支持 noifprefix 关键字，用于在未指定 addr 关键字时禁用从接口收集链接前缀。在 `/etc/rtadvd.conf` 文件中，使用 noifprefix 和 no addr 可以生成不包含前缀信息选项的 RA 消息。[r222732](http://svn.freebsd.org/viewvc/base?view=revision\&revision=222732)

[rtsold(8)](http://www.freebsd.org/cgi/man.cgi?query=rtsold\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 和 [rtadvd(8)](http://www.freebsd.org/cgi/man.cgi?query=rtadvd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 守护进程现在支持 RFC 6106 中介绍的 RDNSS 和 DNSSL 选项，即“IPv6 路由通告选项用于 DNS 配置”。新增了一个 [rtadvctl(8)](http://www.freebsd.org/cgi/man.cgi?query=rtadvctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具，用于控制 [rtadvd(8)](http://www.freebsd.org/cgi/man.cgi?query=rtadvd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 守护进程。[r222732](http://svn.freebsd.org/viewvc/base?view=revision\&revision=222732), [r224006](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224006)

[rtld(1)](http://www.freebsd.org/cgi/man.cgi?query=rtld\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 运行时链接器现在支持共享对象作为 ELF 共享库中的过滤器，支持标准和辅助过滤。链接器处理过滤器时，会推迟加载目标文件，直到引用过滤器符号，除非定义了 `LD_LOADFLTR` 环境变量或在创建过滤器时指定了 -z loadfltr 选项。[r216695](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216695)

修复了 [sed(1)](http://www.freebsd.org/cgi/man.cgi?query=sed\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 工具中的竞态条件。当指定 `-i` 选项时，可能会出现一个短暂的时间窗口，导致没有以原始文件名命名的文件。[r217133](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217133)

[sh(1)](http://www.freebsd.org/cgi/man.cgi?query=sh\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 程序现在支持 kill 作为内建命令。它允许指定 `%job`，等同于相应的进程组。请注意，如果发生致命错误，内建命令将返回退出状态 2，而不是其他内建命令的状态 1。[r216629](http://svn.freebsd.org/viewvc/base?view=revision\&revision=216629)

已修复 [sh(1)](http://www.freebsd.org/cgi/man.cgi?query=sh\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 程序中的一个 bug，保证了 POSIX 兼容性。在 EXIT trap 处理程序中，当没有参数的 exit 命令被指定时，它不会再返回不正确的退出状态。这个 trap 处理程序在 shell 终止时触发。在其他信号的 trap 操作中，exit 命令没有参数时返回的退出状态对应于收到的信号。[r217176](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217176), [r217472](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217472)

[sh(1)](http://www.freebsd.org/cgi/man.cgi?query=sh\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 程序现在修复了当前在前台作业退出时的 stdout 缓冲区问题。此前该缓冲区未被刷新，导致消息可能写入错误的文件，尤其是在接下来的命令为内建命令且其 stdout 被重定向时。[r217557](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217557)

[sh(1)](http://www.freebsd.org/cgi/man.cgi?query=sh\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 程序现在支持 trap 命令中的 `--` 参数，用于停止选项处理。[r217461](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217461)

[sh(1)](http://www.freebsd.org/cgi/man.cgi?query=sh\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 程序中的 %builtin 关键字支持已从 `$PATH` 变量中删除。现在，所有内建命令都在查找 `$PATH` 中的目录之前找到。[r217206](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217206)

程序 [sh(1)](http://www.freebsd.org/cgi/man.cgi?query=sh\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 中的算术表达式处理代码已通过导入 **dash** 代码进行了更新。现在，它支持条件操作符 (`?:`)，并修复了在算术表达式中评估 `&&` 和 `||` 时的一个 bug。[r218466](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218466)

修复了守护进程 [tftpd(8)](http://www.freebsd.org/cgi/man.cgi?query=tftpd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 中的一个 bug。它在传输大文件时存在互操作性问题。[r224536](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224536)

用户帐户数据库 [utmp(5)](http://www.freebsd.org/cgi/man.cgi?query=utmp\&sektion=5\&manpath=FreeBSD+9.0-RELEASE) 已被替换为 [utmpx(3)](http://www.freebsd.org/cgi/man.cgi?query=utmpx\&sektion=3\&manpath=FreeBSD+9.0-RELEASE)。用户帐户工具现在将只使用 utmpx 数据库文件。[wtmpcvt(1)](http://www.freebsd.org/cgi/man.cgi?query=wtmpcvt\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 工具可以用于将 wtmp 文件转换为新格式，从而使其能够使用更新的工具进行读取。[r202188](http://svn.freebsd.org/viewvc/base?view=revision\&revision=202188)

添加了工具 [utxrm(8)](http://www.freebsd.org/cgi/man.cgi?query=utxrm\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) ，允许手动从 `utmpx` 数据库中删除条目。这在登录守护进程崩溃或在关机时未能删除条目时非常有用。[r218847](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218847)

[zpool(8)](http://www.freebsd.org/cgi/man.cgi?query=zpool\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在支持命令 `zpool labelclear`，用于清除不在池中的驱动器的标签数据。[r224171](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224171)

### 2.4 第三方软件

ACPI CA 已更新至版本 20110527。\[[r222544](http://svn.freebsd.org/viewvc/base?view=revision\&revision=222544)]

**awk** 已更新至 2011 年 8 月 7 日发布的版本。\[[r224731](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224731)]

**ISC BIND** 已更新至版本 9.8.1-P1。\[[r228189](http://svn.freebsd.org/viewvc/base?view=revision\&revision=228189)]

**GNU binutils** 已更新至 2.17.50 版本（截至 2007 年 7 月 3 日），这是最后一个遵循 GPLv2 的版本。\[[r218822](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218822)]

**compiler-rt** 库已导入，提供低级目标特定接口，如 **libgcc** 中的函数。\[[r222656](http://svn.freebsd.org/viewvc/base?view=revision\&revision=222656)]

dialog 已更新至版本 1.1-20110707。\[[r224014](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224014)]

netcat 工具已更新至版本 4.9。\[[r221793](http://svn.freebsd.org/viewvc/base?view=revision\&revision=221793)]

**tnftp**（前身为 **lukemftp**）已更新至 tnftp-20100108。\[[r223328](http://svn.freebsd.org/viewvc/base?view=revision\&revision=223328)]

**GNU GCC** 和 **libstdc++** 已更新至 gcc-4\_2-branch 的 rev 127959 版本（最后一个 GPLv2 许可的版本）。\[[r220150](http://svn.freebsd.org/viewvc/base?view=revision\&revision=220150)]

**gdtoa**，FreeBSD **libc** 库中用于二进制与十进制数字转换的一组例程，已更新至 2011 年 3 月 4 日的快照版本。\[[r219557](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219557)]

**LESS** 程序已更新至版本 v444。\[[r222906](http://svn.freebsd.org/viewvc/base?view=revision\&revision=222906)]

已导入 **LLVM** 编译器基础设施和 **clang**（C 语言族前端）版本 3.0 。请注意，默认情况下，它不用于构建 FreeBSD 基本系统。在 FreeBSD 构建基础设施中，[clang(1)](http://www.freebsd.org/cgi/man.cgi?query=clang\&sektion=1\&manpath=FreeBSD+9.0-RELEASE)、[clang++(1)](http://www.freebsd.org/cgi/man.cgi?query=clang++\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 和 [clang-cpp(1)](http://www.freebsd.org/cgi/man.cgi?query=clang-cpp\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 工具可以分别用于 [make(1)](http://www.freebsd.org/cgi/man.cgi?query=make\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 变量 `CC`、`CXX` 和 `CPP`。\[[r208954](http://svn.freebsd.org/viewvc/base?view=revision\&revision=208954)]

已导入 **Openresolv** 版本 3.4.4 。[resolvconf(8)](http://www.freebsd.org/cgi/man.cgi?query=resolvconf\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具现在管理 [resolv.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=resolv.conf\&sektion=5\&manpath=FreeBSD+9.0-RELEASE) 文件。\[[r219734](http://svn.freebsd.org/viewvc/base?view=revision\&revision=219734)]

**OpenSSH** 工具已更新至 5.8p2，并合并了针对大带宽延迟积产品连接和无加密支持的优化。\[[r221484](http://svn.freebsd.org/viewvc/base?view=revision\&revision=221484), [r224638](http://svn.freebsd.org/viewvc/base?view=revision\&revision=224638)]

**pf** 数据包过滤器已更新至版本 4.5。\[[r223637](http://svn.freebsd.org/viewvc/base?view=revision\&revision=223637)]

**sendmail** 已更新至版本 8.14.5。\[[r223067](http://svn.freebsd.org/viewvc/base?view=revision\&revision=223067)]

**timezone** 数据库已更新至 **tzdata2011m** 版本。\[[r226750](http://svn.freebsd.org/viewvc/base?view=revision\&revision=226750)]

[unifdef(1)](http://www.freebsd.org/cgi/man.cgi?query=unifdef\&sektion=1\&manpath=FreeBSD+9.0-RELEASE) 工具已更新至版本 2.5.6。\[[r217698](http://svn.freebsd.org/viewvc/base?view=revision\&revision=217698)]

**xz** 程序已从 5.0.0 更新至 2011 年 7 月 11 日的快照版本。\[[r223935](http://svn.freebsd.org/viewvc/base?view=revision\&revision=223935)]

### 2.5 发布工程与集成

新增了一个安装程序 [bsdinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=bsdinstall\&sektion=8\&manpath=FreeBSD+9.0-RELEASE)，并已集成到安装 ISO 镜像中。安装后，仍可使用[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具进行配置。[r218799](http://svn.freebsd.org/viewvc/base?view=revision\&revision=218799)

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

## 3 从旧版 FreeBSD 升级

### 3.1 使用 freebsd-update(8) 或基于源代码的升级程序升级

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

支持从先前版本进行基于源代码的升级（即从源代码重新编译 FreeBSD 基本系统），具体请参阅 `/usr/src/UPDATING` 中的说明。

有关升级说明的更多具体信息，请参阅 [http://www.FreeBSD.org/releases/9.0R/installation.html](http://www.freebsd.org/releases/9.0R/installation.html)。

> **重要：**
>
> 升级 FreeBSD 之前，务必备份 **所有** 数据和配置文件。

### 3.2 用户可见的不兼容性

本节介绍了升级系统之前，你可能需要了解的显著不兼容性。**在提交问题报告/向 FreeBSD 邮件列表提问之前，请仔细阅读本节和**[**勘误文档**](http://www.freebsd.org/releases/9.0R/%E5%8B%98%E8%AF%AF.html)**。**

#### 3.2.1 更新 dialog

dialog 库在 FreeBSD 的新安装程序和 FreeBSD 中用于显示对话框窗口并允许用户选择各种选项。请注意，在 9.0-RELEASE 中更新了该库，并且在一些关键操作上有几个不同之处，这可能会使熟悉 9.0-RELEASE 之前版本的用户感到困惑。例如，在复选框窗口中按下回车键将不再选中一个项目。新版本始终使用空格键选择项目，回车键用于确认/取消选择。

#### 3.2.2 分区元数据完整性检查

FreeBSD 现在会通过 GEOM **PART** 子系统在磁盘上发现分区表时检查分区元数据的完整性。当磁盘设备准备就绪时，系统会自动执行此检测。内核中的 GEOM **PART** 类会验证从磁盘元数据获取的所有通用分区参数，如果发现任何不一致，分区表将被拒绝，并显示以下诊断信息：

```sh
GEOM_PART: Integrity check failed
```

此完整性检查默认启用。在 9.0-RELEASE 之前的系统中，不一致性会被默默忽略。因此，升级到 9.0-RELEASE 后，有可能导致系统无法启动。更具体地说，在某些情况下，内核在启动时无法挂载系统分区。

如果发生这种情况，可以使用 [loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 的可调选项 `kern.geom.part.check_integrity` 作为解决方法。在启动时，在 [loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 提示符下输入以下命令：

```sh
set kern.geom.part.check_integrity="0"
boot
```

这些命令会暂时禁用完整性检查。如果它是启动失败的原因，FreeBSD 内核应在输入命令后像先前版本一样检测到分区。可以将此配置添加到 `/boot/loader.conf` 中，如下所示：

```sh
kern.geom.part.check_integrity="0"
```

要检查启动后系统中的不一致元数据，可以使用系统上的 [gpart(8)](http://www.freebsd.org/cgi/man.cgi?query=gpart\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具。损坏的条目将如下所示：

```sh
% gpart show
=>        63  1953525104  mirror/gm0  MBR  (931G) [CORRUPT]
          63  1953525105           1  freebsd  [active]  (931G)
```

有关更多信息，请参阅 [gpart(8)](http://www.freebsd.org/cgi/man.cgi?query=gpart\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 手册页。

#### 3.2.3 ATA/SATA 子系统现已基于 cam(4)

在 9.0-RELEASE 中，FreeBSD 的 ATA/SATA 磁盘子系统已被新的基于 [cam(4)](http://www.freebsd.org/cgi/man.cgi?query=cam\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 的实现所替代。[cam(4)](http://www.freebsd.org/cgi/man.cgi?query=cam\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 代表了通用访问方法（Common Access Method），这是一个最初为 SCSI-2 设计的 API 集，并且作为“SCSI-2 通用访问方法传输和 SCSI 接口模块”进行了标准化。从 FreeBSD 3.X 开始，FreeBSD 便使用 [cam(4)](http://www.freebsd.org/cgi/man.cgi?query=cam\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 子系统来处理 SCSI 设备。

虽然新的基于 [cam(4)](http://www.freebsd.org/cgi/man.cgi?query=cam\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 的 ATA/SATA 子系统提供了旧的 [ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 所没有的各种功能，但它也有一些不兼容之处：

* ATA/SATA 磁盘现在被识别为名称为 `ada0` 的设备节点，而不是 `ad0`。目前，为了保持向后兼容，系统会自动生成一个符号链接 `/dev/ad0` 指向 `/dev/ada0`。这个符号链接的生成可以通过 `kern.cam.ada.legacy_aliases`（默认启用）进行控制。你可能需要更新 `/etc/fstab` 或考虑使用卷标签（有关详细信息，请参阅 [glabel(8)](http://www.freebsd.org/cgi/man.cgi?query=glabel\&sektion=8\&manpath=FreeBSD+9.0-RELEASE)）来指定每个要挂载的文件系统。
* [atacontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=atacontrol\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具不能用于基于 [cam(4)](http://www.freebsd.org/cgi/man.cgi?query=cam\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 的设备。[camcontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=camcontrol\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具是替代工具。
* [ataraid(4)](http://www.freebsd.org/cgi/man.cgi?query=ataraid\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 软件 RAID 现在由 [graid(8)](http://www.freebsd.org/cgi/man.cgi?query=graid\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) GEOM 类支持。如果你以前有 `/dev/ar0`，它现在会生成一个名为 `/dev/raid/r0` 的设备节点。请注意，这不是默认启用的。要启用它，请在 [loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 提示符下输入以下行：

  ```sh
  set geom_raid_load="YES"
  boot
  ```

  或将以下行添加到/boot/loader.conf：

  ```sh
  geom_raid_load="YES"
  ```

  然后重启系统。不会为 `/dev/raid/r0` 生成像 `/dev/ar0` 这样的符号链接。因此，如果系统使用 `/dev/ar0` 作为根分区，挂载本地文件系统时将失败，因为它被重命名为 `/dev/raid/r0`。在这种情况下，你需要手动更新 `/etc/fstab`。
* [burncd(8)](http://www.freebsd.org/cgi/man.cgi?query=burncd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具不适用于基于 [cam(4)](http://www.freebsd.org/cgi/man.cgi?query=cam\&sektion=4\&manpath=FreeBSD+9.0-RELEASE) 的设备。请改用 [sysutils/cdrtools](http://www.freebsd.org/cgi/url.cgi?ports/sysutils/cdrtools/pkg-descr) 中的 cdrecord(1) 工具。

更具体的更改说明如下：

* 已弃用变量 `ipv6_enable`。系统默认启用 IPv6 功能。如果没有配置 IPv6 地址，则不会发生 IPv6 通信。 9.0-RELEASE 现在支持主机和路由器 IPv6 节点之间的中间配置。变量 `ipv6_enable` 假定当 `ipv6_gateway_enable` 设置为 `NO`（默认值）时，系统是一个主机节点，否则是一个路由器节点。主机节点总是接受 ICMPv6 路由器广告（RA）消息，而路由器则不接受。 在 9.0-RELEASE 中，这一模型依然适用，但按接口进行，而不是按系统进行。具体来说，如果某个接口具有 `ACCEPT_RTADV` 参数，则该接口将接受 RA 消息以进行 SLAAC（无状态地址自动配置），无论是否启用了数据包转发。 除此之外，还新增了每个接口的 NO\_RADR 参数和 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量 `net.inet6.ip6.rfc6204w3`。此变量控制是否应忽略在接受 RA 消息的接口上通过 RA 消息传递的默认路由器列表信息。在 IPv6 路由器模型中，默认不应将 RA 消息作为默认路由器列表的消息来源。因此，当启用 IPv6 数据包转发时，FreeBSD 9.0-RELEASE 会忽略默认路由器列表部分，即使该接口设置了 ACCEPT\_RTADV 参数。然而，在某些情况下，如果系统需要作为 CPE（客户驻地设备）工作，获取来自上游网络的 RA 消息用于网络配置，并同时作为 LAN 的路由器，这会导致困难。有关此类配置的更多信息，请参阅 RFC 6204。 为了支持这种配置，可以使用 [rc.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=rc.conf\&sektion=5\&manpath=FreeBSD+9.0-RELEASE) 中的变量 `ipv6_cpe_wanif`：

  ```sh
  ipv6_gateway_enable="YES"
  ipv6_cpe_wanif="em0"
  ```

  这意味着 em0 接口接受 RA 消息及其中的默认路由器信息，而其他接口即使设置了 `ACCEPT_RTADV` 参数，也会忽略默认路由器信息部分。

  `ipv6_cpe_wanif` 的内部处理会将 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量 `net.inet6.ip6.rfc6204w3` 和 `net.inet6.ip6.no_radr` 都设置为 1。请注意，这两个变量默认值为 `0`。当前者设置为 `1` 时，即使启用了 IPv6 数据包转发，FreeBSD 仍然接受默认路由器列表。管理员需要在其他 RA 接收接口上设置 `NO_RADR` 参数，以防止其接收意外的默认路由器信息。后者变量表示在这些接口上自动设置 `NO_RADR` 参数。

  如果在 FreeBSD 9.0-RELEASE 中定义了 `ipv6_enable="YES"`，它将在 `/etc/rc.conf` 中设置 `ipv6_activate_all_interfaces="YES"` 并在所有网络接口上启用 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 选项 `inet6 accept_rtadv`。请注意，这仅用于向后兼容。在 FreeBSD 9.0-RELEASE 中，不应使用 `ipv6_enable`。
* 变量 `ipv6_ifconfig_IF` 已更名为 `ifconfig_IF_ipv6`。此变量控制是否应在该接口上启用 IPv6 功能。如果未设置 `ifconfig_IF_ipv6`，则该接口没有 IPv6 功能。 请注意，变量 `ifconfig_IF_ipv6` 始终需要使用地址族关键字 `inet6`。如果只需要自动的链路本地地址，则以下行即可：

  ```sh
  ifconfig_em0_ipv6="inet6 auto_linklocal"
  ```

  如果你希望所有接口（包括没有 `ifconfig_IF_ipv6` 行的接口）像以前的版本那样具备完整的 IPv6 功能，你可能想使用稍后解释的变量 `ipv6_activate_all_interfaces`。

  如果在 FreeBSD 9.0-RELEASE 中定义了 `ipv6_ifconfig_IF="..."`，则意味着 `ifconfig_IF_ipv6="inet6 ..."`。请注意，这仅用于向后兼容。`inet6` 地址族关键字对于 `ifconfig_IF_ipv6` 是必须的，但对于 `ipv6_ifconfig_IF` 则不需要。在 9.0-RELEASE 中，不应使用变量 `ipv6_ifconfig_IF`。
* 没有对应的变量 `ifconfig_IF_ipv6` 的接口会被 [devd(8)](http://www.freebsd.org/cgi/man.cgi?query=devd\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 守护进程标记为 `IFDISABLED` 参数。该参数表示该接口上的 IPv6 通信被禁用。你可以在[ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+9.0-RELEASE)的输出中看到这一点：

  ```sh
  % ifconfig em0
  em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
  options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
  ether xx:xx:xx:xx:xx:xx
  inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255
  nd6 options=3<PERFORMNUD,IFDISABLED,ACCEPT_RTADV>
  media: Ethernet autoselect (1000baseT <full-duplex>)
  status: active
  ```

  要启用 IPv6 功能，必须首先移除此参数。有几种方法可以做到这一点。添加 IPv6 地址会自动移除此参数。也可以通过以下命令显式移除该参数：

  ```sh
  # ifconfig em0 inet6 -ifdisabled
  ```

  请注意，定义 `ifconfig_IF_ipv6` 是启用该接口 IPv6 功能的最合理方法。IFDISABLED 参数的目的是在仅限 IPv4 的环境中防止接口即使具有 IPv6 链路本地地址，也进行不必要的 IPv6 通信。如果你希望在所有接口上启用完整的 IPv6 功能，你可能想使用稍后解释的变量 `ipv6_activate_all_interfaces`。
* 已修改 `net.inet6.ip6.accept_rtadv` 变量。它曾是一个系统范围的配置选项，用于控制系统是否接受 ICMPv6 路由通告（RA）消息。在 FreeBSD 9.0-RELEASE 中，这个选项被转换为每个接口的 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 选项 `inet6 accept_rtadv`。尽管 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量仍然在 FreeBSD 9.0-RELEASE 中可用，但现在它控制每个接口选项是否默认设置。默认值为 0（不接受 RA 消息）。
* 已修改 `net.inet6.ip6.auto_linklocal` 变量。它曾是系统范围的配置选项，用于控制网络接口在启动时是否生成 IPv6 链接本地地址。在 FreeBSD 9.0-RELEASE 中，这个选项被转换为每个接口的 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 选项 `inet6 auto_linklocal`。尽管 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 变量仍然在 FreeBSD 9.0-RELEASE 中可用，但现在它控制每个接口选项是否默认设置。默认值为 `1`（自动生成链接本地地址）。
* 已合并 `ipv6_ifconfig_IFIFIF_aliasIF0IF` 的功能到 `ifconfig_IFIFIF_aliasIF0IF` 中。请注意，地址族关键词始终是必需的：

  ```sh
  ifconfig_em0_alias0="inet 192.168.2.10 netmask 255.255.255.255"
  ifconfig_em0_alias1="inet6 2001:db8:1::1 prefixlen 64"
  ```

  尽管在 FreeBSD 9.0-RELEASE 中 `ipv6_ifconfig_IFIFIF_aliasIFNIF` 仍然可用，但它仅用于向后兼容。
* 新增变量 `ipv6_activate_all_interfaces`。如果将该变量设置为 YES，即使没有定义 `ifconfig_IFIFIF_ipv6` 变量，也不会添加选项 `IFDISABLED`。这可以防止在动态添加的接口上（如 [ppp(4)](http://www.freebsd.org/cgi/man.cgi?query=ppp\&sektion=4\&manpath=FreeBSD+9.0-RELEASE)、[tap(4)](http://www.freebsd.org/cgi/man.cgi?query=tap\&sektion=4\&manpath=FreeBSD+9.0-RELEASE)、[ng\_iface(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_iface\&sektion=4\&manpath=FreeBSD+9.0-RELEASE)）上出现 IFDISABLED。

#### 3.2.5 Openresolv 和 `/etc/resolv.conf`

新增了 [resolvconf(8)](http://www.freebsd.org/cgi/man.cgi?query=resolvconf\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具，现在它处理更新 [resolv.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=resolv.conf\&sektion=5\&manpath=FreeBSD+9.0-RELEASE) 文件。直接修改 `/etc/resolv.conf` 可能会被网络配置工具（如 [dhclient(8)](http://www.freebsd.org/cgi/man.cgi?query=dhclient\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 和 [rtsold(8)](http://www.freebsd.org/cgi/man.cgi?query=rtsold\&sektion=8\&manpath=FreeBSD+9.0-RELEASE)）覆盖。

#### 3.2.6 磁盘分区管理工具

在早期版本中，提供了多个工具来管理磁盘分区信息。它们已经废弃，取而代之的是 [gpart(8)](http://www.freebsd.org/cgi/man.cgi?query=gpart\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具。具体来说，[fdisk(8)](http://www.freebsd.org/cgi/man.cgi?query=fdisk\&sektion=8\&manpath=FreeBSD+9.0-RELEASE)、[disklabel(8)](http://www.freebsd.org/cgi/man.cgi?query=disklabel\&sektion=8\&manpath=FreeBSD+9.0-RELEASE)、[bsdlabel(8)](http://www.freebsd.org/cgi/man.cgi?query=bsdlabel\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 和 [sunlabel(8)](http://www.freebsd.org/cgi/man.cgi?query=sunlabel\&sektion=8\&manpath=FreeBSD+9.0-RELEASE) 工具不再积极支持，尽管这些工具仍可用以保持向后兼容。

***

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

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

所有 FreeBSD 9.0-STABLE 用户应订阅 <stable@FreeBSD.org> 邮件列表。

如有关于本文档的疑问，请发送电子邮件至 <doc@FreeBSD.org>。
