# FreeBSD 9.1-RELEASE 发行说明（2012 年 12 月 30 日）

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

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

## 引言

本文档包含 FreeBSD 9.1-RELEASE 的发布说明。它涉及了最近新增、修改或删除的 FreeBSD 功能，并提供了一些关于从之前版本升级的说明。

此版本的 FreeBSD 9.1-RELEASE 是一个发布版本。可以在 [http://www.FreeBSD.org/releases/](http://www.freebsd.org/releases/) 或其镜像站点找到。有关获取此版本（或其他）发布版本的更多信息，可以参阅 [FreeBSD 手册](https://docs.freebsd.org/en/books/handbook/) 中的“获取 FreeBSD”附录 [“Obtaining FreeBSD”](https://docs.freebsd.org/en/books/handbook/#mirrors/)。

我们建议所有用户在安装 FreeBSD 之前先查看发布的勘误文档。勘误 文档会在发布周期结束或发布后更新，包含一些“突发”信息。通常，它包括已知的错误、与安全相关的公告以及文档修正。FreeBSD 9.1-RELEASE 的勘误最新版本可以在 FreeBSD 网站上找到。

## 新特性

本节涉及自 9.0-RELEASE 以来，FreeBSD 中最显著的新特性或变更。

通常，发布说明会记录自 9.0-RELEASE 以来发布的最新安全公告、新的驱动程序或硬件支持、新命令或选项、主要的 bug 修复或第三方软件升级。它们还可能列出对主要 Port/包或发布工程实践的更改。显然，发布说明无法列出每一个在版本间对 FreeBSD 所做的更改；本文件主要聚焦于安全公告、用户可见的更改以及主要的架构改进。

### 安全公告

以下安全公告所涉及的问题已被修复。有关更多信息，请查阅各个公告，详情请访问 [http://security.FreeBSD.org/](http://security.freebsd.org/)。

\| 公告 | 日期 | 主题 | | | - | | | [SA-12:01.openssl](http://security.freebsd.org/advisories/FreeBSD-SA-12:01.openssl.asc) | 2012 年 5 月 3 日 | OpenSSL 多个漏洞 | | [SA-12:02.crypt](http://security.freebsd.org/advisories/FreeBSD-SA-12:02.crypt.asc) | 2012 年 5 月 30 日 | 错误的 `crypt()` 哈希处理 | | [SA-12:03.bind](http://security.freebsd.org/advisories/FreeBSD-SA-12:03.bind.asc) | 2012 年 6 月 12 日 | [named(8)](https://man.freebsd.org/cgi/man.cgi?query=named\&sektion=8\&format=html) 中零长度 RDATA 字段的错误处理 | | [SA-12:04.sysret](http://security.freebsd.org/advisories/FreeBSD-SA-12:04.sysret.asc) | 2012 年 6 月 12 日 | 从内核返回时的特权提升漏洞 | | [SA-12:05.bind](http://security.freebsd.org/advisories/FreeBSD-SA-12:05.bind.asc) | 2012 年 8 月 6 日 | [named(8)](https://man.freebsd.org/cgi/man.cgi?query=named\&sektion=8\&format=html) DNSSEC 验证拒绝服务漏洞 | | [SA-12:06.bind](http://security.freebsd.org/advisories/FreeBSD-SA-12:06.bind.asc) | 2012 年 11 月 22 日 | 多个 [named(8)](https://man.freebsd.org/cgi/man.cgi?query=named\&sektion=8\&format=html) 拒绝服务漏洞 | | [SA-12:07.hostapd](http://security.freebsd.org/advisories/FreeBSD-SA-12:07.hostapd.asc) | 2012 年 11 月 22 日 | EAP-TLS 消息的消息长度验证不足 | | [SA-12:08.linux](http://security.freebsd.org/advisories/FreeBSD-SA-12:08.linux.asc) | 2012 年 11 月 22 日 | Linux 兼容层的输入验证错误 |

### 内核变更

FreeBSD Jail 子系统现在支持在 Jail 内挂载 [devfs(5)](https://man.freebsd.org/cgi/man.cgi?query=devfs\&sektion=5\&format=html)、[nullfs(5)](https://man.freebsd.org/cgi/man.cgi?query=nullfs\&sektion=5\&format=html) 和 ZFS 文件系统。新增的 [jail(8)](https://man.freebsd.org/cgi/man.cgi?query=jail\&sektion=8\&format=html) 参数 `allow.mount.devfs`、`allow.mount.nullfs` 和 `allow.mount.zfs` 用于控制每个 Jail 的挂载权限。默认情况下，所有这些参数都被禁用。[r232728](http://svn.freebsd.org/viewvc/base?view=revision\&revision=232728)

新增了一个 [loader(8)](https://man.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&format=html) 可调参数 `kern.eventtimer.activetick`。此参数指定是否每个硬时钟滴答都在每个活跃 CPU 上运行，还是仅在一个 CPU 上运行。将其设置为 `0` 可以减少 SMP 机器上的总中断次数。默认值为 `1`。[r234167](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234167)

实现了 [posix\_fadvise(2)](https://man.freebsd.org/cgi/man.cgi?query=posix_fadvise\&sektion=2\&format=html) 系统调用。它是类似于 [madvise(2)](https://man.freebsd.org/cgi/man.cgi?query=madvise\&sektion=2\&format=html) 的功能，但它作用于文件涉及符，而不是内存区域。[r229723](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229723)

新增了 [filemon(4)](https://man.freebsd.org/cgi/man.cgi?query=filemon\&sektion=4\&format=html) 伪设备。它允许进程收集其子进程的文件操作数据。[r237795](http://svn.freebsd.org/viewvc/base?view=revision\&revision=237795)

[sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量 `kern.stop_scheduler_on_panic` 现在默认设置为 `1`。[r235413](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235413)

FreeBSD Linux ABI 兼容层现在支持系统调用 `linux_fadvise64()` 和 `linux_fadvise64_64()`。[r231145](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231145)

当 FreeBSD 在虚拟机中运行时，默认情况下 [loader(8)](https://man.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&format=html) 可调参数 `hw.memtest.tests` 会自动设置为 `0`。[r230266](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230266)

新增了 [loader(8)](https://man.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&format=html) 可调参数 `kern.msgbuf_show_timestamp`。启用时，会在系统消息缓冲区的每一行添加时间戳。默认值为 `0`（禁用）。[r234075](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234075)

[null(4)](https://man.freebsd.org/cgi/man.cgi?query=null\&sektion=4\&format=html) 和 [zero(4)](https://man.freebsd.org/cgi/man.cgi?query=zero\&sektion=4\&format=html) 伪设备驱动现在通过 [fcntl(2)](https://man.freebsd.org/cgi/man.cgi?query=fcntl\&sektion=2\&format=html) 系统调用支持非阻塞模式。[r230320](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230320)

FreeBSD [sched\_ule(4)](https://man.freebsd.org/cgi/man.cgi?query=sched_ule\&sektion=4\&format=html) 调度器在 SMT（Simultaneous MultiThreading）CPU 上的 CPU 负载均衡方面进行了改进。当线程数量小于逻辑 CPU 数量时，性能提高了 10-15%。[r233599](http://svn.freebsd.org/viewvc/base?view=revision\&revision=233599)

新增了 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量 `security.bsd.unprivileged_idprio`。此变量控制非 root 用户是否可以设置空闲优先级。默认情况下此功能禁用。[r230039](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230039)

[splash(4)](https://man.freebsd.org/cgi/man.cgi?query=splash\&sektion=4\&format=html) 屏幕接口现在支持 **TheDraw** 格式的 ASCII 艺术。[r228445](http://svn.freebsd.org/viewvc/base?view=revision\&revision=228445)

#### 启动加载器更改

[boot0cfg(8)](https://man.freebsd.org/cgi/man.cgi?query=boot0cfg\&sektion=8\&format=html) 工具现在支持通过启动块 `boot0` 在下次启动时临时配置 PXE 启动。可以通过 `-s` 选项指定分区号 `6` 或关键字 `PXE` 来启用 PXE 启动。[r230065](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230065)

FreeBSD 的 [boot(8)](https://man.freebsd.org/cgi/man.cgi?query=boot\&sektion=8\&format=html) 启动块现在支持 `/boot/config` 作为启动块参数文件，除 `/boot.config` 外。当这两个文件都存在时，将使用前者。[r231287](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231287)

现在 `gptboot` 启动块仅在主 GPT 头和表无效时，才从最后一个 LBA 读取备份 GPT 头。这解决了与一些 [geom(4)](https://man.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&format=html) 提供者（如 `MIRROR`，其使用最后一个 LBA 存储元数据）之间的兼容性问题。[r234693](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234693)

`zfsboot` 启动块和 `zfsloader` 现在支持 ZFS 存储池中的文件系统。在 `zfsloader` 中，ZFS 设备名称格式现在为 `zfs:pool`/`fs`，完整的文件路径格式为 `zfs:pool`/`fs`:/`path/to/file`。`zfsboot` 启动块接受的内核/加载器名称格式为 `pool`:/`fs`:/`path/to/file`；或者，如之前一样，`pool`:/`path/to/file`。在后一种情况下，使用默认文件系统（池根或具有 `bootfs` 属性的文件系统）。`zfsboot` 启动块将所选存储池和数据集的 GUID 传递给 `zfsloader` 作为其默认值。[r237766](http://svn.freebsd.org/viewvc/base?view=revision\&revision=237766)

```sh
# gpart create -s vtoc8 da0
# gpart add -t freebsd-zfs -s 10g da0
# gpart add -t freebsd-swap -s 10g da0
# gpart add -t freebsd-zfs -s 10g da0
# zpool create rpool mirror da0a da0b
# zpool set bootfs=rpool rpool
# zpool export rpool
# gpart bootcode -p /boot/zfsboot da0
# sysctl kern.geom.debugflags=0x10
# dd if=/boot/zfsloader of=/dev/da0a bs=512 oseek=1024 conv=notrunc
# dd if=/boot/zfsloader of=/dev/da0b bs=512 oseek=1024 conv=notrunc
# zpool import rpool
# cp -p /boot/zfs/zpool.cache /rpool/boot/zfs/zpool.cache
# zfs set mountpoint=/ rpool
```

#### 硬件支持

[acpi\_wmi(4)](https://man.freebsd.org/cgi/man.cgi?query=acpi_wmi\&sektion=4\&format=html) 驱动程序现在支持附加多个实例。[r229858](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229858)

[hwpmc(4)](https://man.freebsd.org/cgi/man.cgi?query=hwpmc\&sektion=4\&format=html) 驱动程序现在支持软件事件。允许同时使用软件 PMC 和硬件 PMC。[r236238](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236238)

为 NXP（飞利浦）PCF8563 RTC 添加了 [pcf8563(4)](https://man.freebsd.org/cgi/man.cgi?query=pcf8563\&sektion=4\&format=html) 驱动程序。[r236078](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236078)

添加了以下 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量：`kern.proc.env` 用于环境字符串，`kern.proc.auxv` 用于进程栈中的 ELF 辅助向量，`kern.proc.groups` 用于进程组，`kern.proc.rlimit` 用于进程资源限制，`kern.proc.ps_strings` 用于 ps\_strings 位置，`kern.proc.osrel` 用于进程二进制的 osreldate。[r230754](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230754), [r233950](http://svn.freebsd.org/viewvc/base?view=revision\&revision=233950)

[usb(4)](https://man.freebsd.org/cgi/man.cgi?query=usb\&sektion=4\&format=html) 驱动程序现在正确处理挂起和恢复，无需重新加载内核模块。[r229100](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229100), [r229369](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229369)

修复了 [xhci(4)](https://man.freebsd.org/cgi/man.cgi?query=xhci\&sektion=4\&format=html)（USB 3.0）驱动程序中的一个错误，该错误导致其无法与 USB 3.0 集线器一起使用。[r230302](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230302)

添加了 [viawd(4)](https://man.freebsd.org/cgi/man.cgi?query=viawd\&sektion=4\&format=html) 驱动程序，支持 VIA 南桥（VT8251、CX700、VX800、VX855、VX900）中的看门狗定时器。[r229927](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229927)

添加了 [wbwd(4)](https://man.freebsd.org/cgi/man.cgi?query=wbwd\&sektion=4\&format=html) 驱动程序，支持 Winbond Super I/O 芯片中的看门狗定时器。[r235926](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235926)

**多媒体支持**

Intel GPU 驱动程序 `drm2(4)` 支持 GEM 和 KMS，并适用于新一代 GPU，如 IronLake、SandyBridge 和 IvyBridge。[r236926](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236926), [r236927](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236927), [r239965](http://svn.freebsd.org/viewvc/base?view=revision\&revision=239965)

[agp(4)](https://man.freebsd.org/cgi/man.cgi?query=agp\&sektion=4\&format=html) 驱动程序现在支持 SandyBridge 和 IvyBridge CPU 的北桥。[r236926](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236926), [r236927](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236927), [r239965](http://svn.freebsd.org/viewvc/base?view=revision\&revision=239965)

[snd\_hda(4)](https://man.freebsd.org/cgi/man.cgi?query=snd_hda\&sektion=4\&format=html) 驱动程序已经更新。现在它支持并提供 HDMI、新的音量控制、自动录音源选择、运行时重新配置、一个控制器上的多个 PCM 设备、多声道录音、额外的播放/录制流、更高带宽和更具信息性的设备名称。[r232798](http://svn.freebsd.org/viewvc/base?view=revision\&revision=232798)

添加了 [snd\_hdspe(4)](https://man.freebsd.org/cgi/man.cgi?query=snd_hdspe\&sektion=4\&format=html) 驱动程序，支持 RME HDSPe AIO 和 RayDAT 声卡。[r233165](http://svn.freebsd.org/viewvc/base?view=revision\&revision=233165)

在 [snd\_emu10kx(4)](https://man.freebsd.org/cgi/man.cgi?query=snd_emu10kx\&sektion=4\&format=html)、[snd\_maestro3(4)](https://man.freebsd.org/cgi/man.cgi?query=snd_maestro3\&sektion=4\&format=html) 和 [snd\_csa(4)](https://man.freebsd.org/cgi/man.cgi?query=snd_csa\&sektion=4\&format=html) 驱动程序中，已将 GPL 许可证的头文件替换为 BSD 许可证的文件。现在这些驱动程序完全采用 BSD 许可证，并已包含在 FreeBSD/amd64 和 FreeBSD/i386 的 `GENERIC` 内核中。[r230964](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230964), [r230985](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230985), [r231047](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231047), [r235769](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235769)

**网络接口支持**

修复了 [ae(4)](https://man.freebsd.org/cgi/man.cgi?query=ae\&sektion=4\&format=html) 驱动程序中的一个错误，该错误可能会导致在某些条件下无法正常工作。[r229520](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229520)

[axe(4)](https://man.freebsd.org/cgi/man.cgi?query=axe\&sektion=4\&format=html) 驱动程序现在支持 ASIX AX88772B 控制器的 TX/RX 校验和卸载支持。[r229106](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229106)

[bce(4)](https://man.freebsd.org/cgi/man.cgi?query=bce\&sektion=4\&format=html) 驱动程序已改进：

* 消除了不必要的链路上下波动。[r229864](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229864)
* 修复了一个错误，该错误可能导致当接口标记为关闭时，IPMI 无法正常工作。[r236216](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236216)
* 现在支持远程 PHY，可以通过 MRBE（MultiRate Backplane Ethernet）定义的消息页面执行 MDIO 类型的访问，允许控制器访问远程收发器。这在如 Dell PowerEdge M610 Blade 等机器上可见。[r235818](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235818)

已改进 [bge(4)](https://man.freebsd.org/cgi/man.cgi?query=bge\&sektion=4\&format=html) 和 brgphy(4) 驱动程序：

* 修复了一个错误，该错误可能导致 DMA 功能无法正常工作。[r229350](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229350)
* 现在支持与连接到 AMD-8131 PCI-X 桥的 PCI-X BCM 5704 控制器一起工作。[r233495](http://svn.freebsd.org/viewvc/base?view=revision\&revision=233495)
* 现在支持 BCM 5720 和 BCM 5720C PHY，以及 BCM 57780 1000BASE-T 媒体接口。[r229357](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229357), [r229867](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229867), [r232134](http://svn.freebsd.org/viewvc/base?view=revision\&revision=232134)
* 现在支持 [loader(8)](https://man.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&format=html) 可调参数 `dev.bge.N.msi` 用于控制 MSI 的使用，默认值为 `1`（启用）。[r231734](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231734)

[cxgbe(4)](https://man.freebsd.org/cgi/man.cgi?query=cxgbe\&sektion=4\&format=html) 和 [cxgb(4)](https://man.freebsd.org/cgi/man.cgi?query=cxgb\&sektion=4\&format=html) 驱动程序已更新至固件版本 1.5.2.0。现在它们支持通过纯文本配置文件进行设备配置、IPv6 硬件校验和、IPv6 TSO 和 LRO、cxgbetool(8) 工具中的 `loadfw` 命令（能将固件安装到卡中），以及在 `dev.t4nex.N.misc` 下的 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量，用于获取各种信息。[r231093](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231093), [r237925](http://svn.freebsd.org/viewvc/base?view=revision\&revision=237925)

[dc(4)](https://man.freebsd.org/cgi/man.cgi?query=dc\&sektion=4\&format=html) 驱动程序现在支持 NVIDIA（ULi）M5261/M5263 PCI FastEthernet 控制器，这些控制器位于 ULi M1563 南桥和 M1689 桥上。[r229334](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229334)

[et(4)](https://man.freebsd.org/cgi/man.cgi?query=et\&sektion=4\&format=html) 驱动程序现在可以在所有平台上工作。修复了一个可能导致 [altq(4)](https://man.freebsd.org/cgi/man.cgi?query=altq\&sektion=4\&format=html) 支持无法正常工作的错误。已新增一个 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量，在 `dev.et.N.stats` 下用于硬件 MAC 统计。[r229711](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229711), [r229717](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229717), [r229720](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229720)

[igb(4)](https://man.freebsd.org/cgi/man.cgi?query=igb\&sektion=4\&format=html) 驱动程序已更新至版本 2.3.4。现在它支持更新的 i210/i211 设备。[r238262](http://svn.freebsd.org/viewvc/base?view=revision\&revision=238262)

[iwn(4)](https://man.freebsd.org/cgi/man.cgi?query=iwn\&sektion=4\&format=html) 驱动程序现在支持 Intel Centrino Wireless-N + WiMAX 6150 和 Wireless-N 100/130 系列。[r233838](http://svn.freebsd.org/viewvc/base?view=revision\&revision=233838), [r235843](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235843)

[miibus(4)](https://man.freebsd.org/cgi/man.cgi?query=miibus\&sektion=4\&format=html) 总线驱动程序现在支持设备提示 `hint.miibus.N.phymask`，用于探测 PHY 地址。这对于手动探测不实现 IEEE 802.3 基本寄存器集的 PHY 非常有用。另外， [miibus(4)](https://man.freebsd.org/cgi/man.cgi?query=miibus\&sektion=4\&format=html) 驱动程序已更改为提示总线，能通过提示添加子设备，并设置其附加参数，除了自动探测的 PHY。[r230709](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230709)

现在 [msk(4)](https://man.freebsd.org/cgi/man.cgi?query=msk\&sektion=4\&format=html) 驱动程序在 64 位平台上使用 64 位 DMA 地址。[r229524](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229524)

[mxge(4)](https://man.freebsd.org/cgi/man.cgi?query=mxge\&sektion=4\&format=html) 驱动程序已更新至 Myricom 的固件版本 1.4.55。[r236413](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236413)

nsphyter(4) 驱动程序现在支持 National DP83849。[r232137](http://svn.freebsd.org/viewvc/base?view=revision\&revision=232137)

[oce(4)](https://man.freebsd.org/cgi/man.cgi?query=oce\&sektion=4\&format=html) 驱动程序，支持 Emulex OneConnect 10Gbit 以太网卡，已被添加。[r231663](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231663)

[ral(4)](https://man.freebsd.org/cgi/man.cgi?query=ral\&sektion=4\&format=html) 驱动程序现在支持 Ralink RT2800 和 RT3000 芯片组。[r236004](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236004)

[re(4)](https://man.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&format=html) 驱动程序现在支持 RTL8411 PCIe 千兆以太网控制器。修复了一个可能导致 WoL（唤醒以太网）在 RTL8168E 上无法正常工作的错误。[r229529](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229529), [r231731](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231731)

[runfw(4)](https://man.freebsd.org/cgi/man.cgi?query=runfw\&sektion=4\&format=html) 固件已更新至版本 0.236。[r234028](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234028)

[sfxge(4)](https://man.freebsd.org/cgi/man.cgi?query=sfxge\&sektion=4\&format=html) 驱动程序，支持基于 Solarflare SFC9000 系列控制器的 10Gb 以太网适配器，已被添加。[r228100](http://svn.freebsd.org/viewvc/base?view=revision\&revision=228100)

smcphy(4) 驱动程序现在支持 Seeq Technology 80220 PHY。这种 PHY 出现在 Adaptec AIC-6915 Starfire 以太网控制器中，并由 [sf(4)](https://man.freebsd.org/cgi/man.cgi?query=sf\&sektion=4\&format=html) 驱动程序支持。[r233485](http://svn.freebsd.org/viewvc/base?view=revision\&revision=233485)

[ti(4)](https://man.freebsd.org/cgi/man.cgi?query=ti\&sektion=4\&format=html) 驱动程序现在支持 [altq(4)](https://man.freebsd.org/cgi/man.cgi?query=altq\&sektion=4\&format=html) 框架，报告链路状态变化，以及在 `dev.ti.N` 下的 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量，用于中断调节参数。[r229417](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229417), [r229438](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229438)

修复了 [ti(4)](https://man.freebsd.org/cgi/man.cgi?query=ti\&sektion=4\&format=html) 驱动程序中的一个错误，该错误可能导致其在使用内核选项 `PAE` 时无法正常工作。[r229441](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229441)

[vge(4)](https://man.freebsd.org/cgi/man.cgi?query=vge\&sektion=4\&format=html) 驱动程序已更新，以改进链路建立和链路状态检测。[r229540](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229540)

[vr(4)](https://man.freebsd.org/cgi/man.cgi?query=vr\&sektion=4\&format=html) 驱动程序现在启用了 PHY 驱动程序中的流量控制功能。[r229641](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229641)

[xnb(4)](https://man.freebsd.org/cgi/man.cgi?query=xnb\&sektion=4\&format=html) Xen Paravirtualized Backend 以太网驱动程序（netback）已更新。此驱动程序通过新的总线框架连接，并在 HVM 和 PVM 模式下都能正常工作。[r231697](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231697)

#### 网络协议

[if\_bridge(4)](https://man.freebsd.org/cgi/man.cgi?query=if_bridge\&sektion=4\&format=html) 虚拟接口现在支持根据成员接口的状态报告链路状态变化。[r236051](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236051)

[ipfw(4)](https://man.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&format=html) 数据包过滤规则语法中的 `table` 参数现在支持 IP 地址、接口名称、端口号和 Jail ID。以下语法是有效的：[r234597](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234597)

```sh
skipto tablearg ip from any to any via table(42) in
```

FreeBSD [ip6(4)](https://man.freebsd.org/cgi/man.cgi?query=ip6\&sektion=4\&format=html) 协议栈在性能方面有所改进。基准测试可以在 <http://people.freebsd.org/~bz/bench/> 查看。

FreeBSD [ip6(4)](https://man.freebsd.org/cgi/man.cgi?query=ip6\&sektion=4\&format=html) 协议栈现在支持多个 FIBs。[r232292](http://svn.freebsd.org/viewvc/base?view=revision\&revision=232292)

通过路由器广告消息配置的 IPv6 默认路由现在在默认路由被手动删除并接收到同一路由的另一个 RA 消息时，能够正确重新安装。[r230604](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230604)

修复了一个可能导致 `IPV6_MULTICASE_HOPS` 套接字选项返回不正确值的错误。[r227885](http://svn.freebsd.org/viewvc/base?view=revision\&revision=227885)

添加了一个新的 [sysctl(3)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=3\&format=html) 变量 `NET_RT_IFLISTL`。此选项查询地址列表，并在不破坏 ABI 的情况下作用于扩展和可扩展的结构 `if_msghdrl` 和 `ifa_msghdrl`。[r231768](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231768)

添加了 [netmap(4)](https://man.freebsd.org/cgi/man.cgi?query=netmap\&sektion=4\&format=html) 快速数据包 I/O 框架。 [em(4)](https://man.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&format=html)、man:lem(4)、[igb(4)](https://man.freebsd.org/cgi/man.cgi?query=igb\&sektion=4\&format=html) 和 [re(4)](https://man.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&format=html) 驱动程序现在支持此框架。技术细节可以在 [http://svn.freebsd.org/viewvc/base?view=revision\&revision=231650](http://info.iet.unipi.it/~luigi/netmap/) 查看。[r231650](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231650), [r235527](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235527)

FreeBSD [sctp(4)](https://man.freebsd.org/cgi/man.cgi?query=sctp\&sektion=4\&format=html) 协议栈现在支持一个新的 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量 `net.inet.sctp.blackhole`。如果设置为 `1`，则不会在接收到 `INIT` 后发送 `ABORT`。如果设置为 `2`，则不会在接收到意外数据包后发送 `ABORT`。如果设置为 `0`（默认值），则会发送 `ABORT`。[r231045](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231045)

修复了一个错误，该错误可能在指定 `SCTP_RECVINFO` 和 `SCTP_NXTINFO` 给系统调用 [getsockopt(2)](https://man.freebsd.org/cgi/man.cgi?query=getsockopt\&sektion=2\&format=html) 时引发系统崩溃。[r231049](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231049)

FreeBSD [sctp(4)](https://man.freebsd.org/cgi/man.cgi?query=sctp\&sektion=4\&format=html) 协议栈现在支持套接字选项 `SCTP_REMOTE_UDP_ENCAPS_PORT`。[r231070](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231070), [r231140](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231140)

添加了套接字选项 `SO_PROTOCOL` 和 `SO_PROTOTYPE`。这些选项返回套接字协议号。[r232805](http://svn.freebsd.org/viewvc/base?view=revision\&revision=232805)

添加了套接字选项 `TCP_KEEPINIT`、`TCP_KEEPIDLE`、`TCP_KEEPINTVL` 和 `TCP_KEEPCNT`。这些选项允许按套接字控制初始超时、空闲时间、空闲重发间隔和空闲发送次数。[r232945](http://svn.freebsd.org/viewvc/base?view=revision\&revision=232945)

#### 磁盘和存储

[arcmsr(4)](https://man.freebsd.org/cgi/man.cgi?query=arcmsr\&sektion=4\&format=html) 驱动程序已更新至版本 1.20.00.25。[r240758](http://svn.freebsd.org/viewvc/base?view=revision\&revision=240758)

[ahci(4)](https://man.freebsd.org/cgi/man.cgi?query=ahci\&sektion=4\&format=html) 驱动程序现在支持新的 [loader(8)](https://man.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&format=html) 可调参数 `hw.ahci.force`。此参数控制是否尝试连接 AHCI 能力设备，即使它被配置为使用传统仿真模式。默认启用。[r229291](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229291)

新的基于 [cam(4)](https://man.freebsd.org/cgi/man.cgi?query=cam\&sektion=4\&format=html) 的 [ata(4)](https://man.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&format=html) 驱动程序现在支持旧版 [loader(8)](https://man.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&format=html) 可调参数 `hw.ata.ata_dma` 和 `hw.ata.atapi_dma`，以便与旧版兼容。[r231251](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231251)

[cam(4)](https://man.freebsd.org/cgi/man.cgi?query=cam\&sektion=4\&format=html) 驱动程序现在支持 SEMB（SATA 外壳管理桥）设备，相当于 SCSI SES/SAF-TE 设备。[r236778](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236778)

添加了一个新的 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量 `kern.cam.pmp.hide_special`。此变量控制是否暴露或隐藏特殊的 PMP 端口，如 PMP（端口多路复用器）配置或 SEMB（SATA 外壳管理桥）。默认值为 `1`（隐藏）。[r236765](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236765)

新增了 ctl(4) 驱动程序，支持 [cam(4)](https://man.freebsd.org/cgi/man.cgi?query=cam\&sektion=4\&format=html) 目标层和 [ctladm(8)](https://man.freebsd.org/cgi/man.cgi?query=ctladm\&sektion=8\&format=html)，一个用户空间控制工具。ctl(4) 是一个磁盘和处理器设备仿真子系统，支持标记队列、SCSI 任务属性、SCSI 隐式命令排序、完整任务管理、多个端口、多个同时启动器、多个同时备份存储、模式感知/选择和错误注入支持。[r231772](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231772)

[cd(4)](https://man.freebsd.org/cgi/man.cgi?query=cd\&sektion=4\&format=html) 驱动程序现在以与 [acd(4)](https://man.freebsd.org/cgi/man.cgi?query=acd\&sektion=4\&format=html) 相同的方式支持音频 CD。它将向 [geom(4)](https://man.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&format=html) 子系统报告一个 2352 字节的扇区大小，并使用命令 `READ CD` 读取数据。这解决了与 [`multimedia/vlc`](http://svnweb.freebsd.org/ports/head/multimedia/vlc/pkg-descr?revision=HEAD) 的互操作性问题。[r230014](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230014)

[da(4)](https://man.freebsd.org/cgi/man.cgi?query=da\&sektion=4\&format=html) 驱动程序现在支持 `BIO_DELETE`。为了选择方法，已为每个设备实例添加了新的 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量 `kern.cam.da.N.delete_method`。支持以下值：[r236677](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236677)

\| 值 | 方法 | | -- | | | NONE | 设备未报告逻辑块配置支持 | | DISABLE | 由于错误，已禁用配置支持 | | ZERO | 使用 WRITE SAME (10) 命令写零 | | WS10 | 使用 WRITE SAME (10) 命令并设置 UNMAP 位 | | WS16 | 使用 WRITE SAME (16) 命令并设置 UNMAP 位 | | UNMAP | 使用 UNMAP 命令（相当于 ATA DSM TRIM 命令） |

当值为 `NONE` 时，设备未通过相应的 VPD 页面报告逻辑块配置支持。可以为测试设置特定方法，并且在设备不支持时会自动禁用。

**MIRROR** [geom(4)](https://man.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&format=html) 类现在支持 `BIO_DELETE`。这意味着在删除数据时，支持的设备将发出 `TRIM` 命令。[r238500](http://svn.freebsd.org/viewvc/base?view=revision\&revision=238500)

**MULTIPATH** [geom(4)](https://man.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&format=html) 类已更新。现在支持主动/主动模式、主动/读取模式（作为主动/主动和主动/被动的混合模式）、保持失败路径而不移除 geom 提供者、无磁盘元数据的手动配置，以及在 [gmultipath(8)](https://man.freebsd.org/cgi/man.cgi?query=gmultipath\&sektion=8\&format=html) 工具中使用 `add`、`remove`、`fail`、`restore`、`configure` 子命令来管理已配置的路径。[r229303](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229303), [r234916](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234916)

**PART\_LDM** [geom(4)](https://man.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&format=html) 类已添加。此分区方案支持逻辑磁盘管理器（LDM），也称为微软 Windows NT 中的动态卷。请注意，JBOD、RAID0 和 RAID5 卷目前不受支持。[r234406](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234406)

**PART\_MBR** [geom(4)](https://man.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&format=html) 类现在允许将 Linux 主分区或扩展分区用作系统转储设备。[r230763](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230763)

**RAID** [geom(4)](https://man.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&format=html) 类现在支持大于 2TB 容量的磁盘，适用于英特尔元数据格式。[r230244](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230244)

**RAID** [geom(4)](https://man.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&format=html) 类现在支持 DDF 元数据格式，该格式定义在 SNIA 通用 RAID 磁盘数据格式规范 v2.0 中。[r235874](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235874)

**UNCOMPRESS** [geom(4)](https://man.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&format=html) 类和 [mkulzma(8)](https://man.freebsd.org/cgi/man.cgi?query=mkulzma\&sektion=8\&format=html) 工具已添加。此类支持 lzma 压缩图像，类似于 **UZIP** [geom(4)](https://man.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&format=html) 类和 [mkuzip(8)](https://man.freebsd.org/cgi/man.cgi?query=mkuzip\&sektion=8\&format=html) 工具。[r235483](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235483)

已修复 [isp(4)](https://man.freebsd.org/cgi/man.cgi?query=isp\&sektion=4\&format=html) 目标模式中的错误。[r230019](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230019)

[ixgbe(4)](https://man.freebsd.org/cgi/man.cgi?query=ixgbe\&sektion=4\&format=html) 驱动程序现在支持 Intel X540 适配器。[r230775](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230775)

已修复 [mfi(4)](https://man.freebsd.org/cgi/man.cgi?query=mfi\&sektion=4\&format=html) 驱动程序中的一个错误。该错误可能导致由于中断确认丢失而出现一些不一致，并输出以下日志消息：[r227533](http://svn.freebsd.org/viewvc/base?view=revision\&revision=227533)

```sh
mfi0: COMMAND 0xffffffXXXXXXXXXX TIMEOUT AFTER XX SECONDS
```

[mfi(4)](https://man.freebsd.org/cgi/man.cgi?query=mfi\&sektion=4\&format=html) 驱动程序现在支持单消息 MSI，以及 Drake Skinny 和 Thunderbolt 卡。已添加 [loader(8)](https://man.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&format=html) 可调参数 `hw.mfi.msi`，默认启用。[r229611](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229611), [r234429](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234429)

[mps(4)](https://man.freebsd.org/cgi/man.cgi?query=mps\&sektion=4\&format=html) 驱动程序已更新至版本 14.00.00.01-fbsd。现在支持集成 RAID、WarpDrive 控制器、WRITE12 和 READ12 直接 I/O、SCSI 保护信息（EEDP）、磁带驱动的传输级重试（TLR），以及 LSI 的用户空间工具。[r230920](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230920), [r231679](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231679), [r237876](http://svn.freebsd.org/viewvc/base?view=revision\&revision=237876)

已修复 [mpt(4)](https://man.freebsd.org/cgi/man.cgi?query=mpt\&sektion=4\&format=html) 驱动程序中的一个错误。该错误可能尝试连接应由 [mfi(4)](https://man.freebsd.org/cgi/man.cgi?query=mfi\&sektion=4\&format=html) 驱动程序处理的 MegaRAID 卡。[r232562](http://svn.freebsd.org/viewvc/base?view=revision\&revision=232562)

现在存储设备驱动程序 [usb(4)](https://man.freebsd.org/cgi/man.cgi?query=usb\&sektion=4\&format=html) 默认启用省电模式。[r229107](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229107)

#### 文件系统

FreeBSD 的 NFS 文件系统得到了改进：

* 现在支持客户端端正向名称缓存条目的超时。新增了挂载选项 `nametimeo`，默认值为 `60`（秒）。\[[r233326](http://svn.freebsd.org/viewvc/base?view=revision\&revision=233326)]
* 修复了通过 FreeBSD NFS 服务器导出 ZFS 卷时发生的内存泄漏问题。[r234740](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234740)
* 修复了一个错误。当进程在 NFS 文件系统上写入 mmap 支持的文件时，某些情况下（例如由于权限不匹配的错误），数据刷新可能会失败，而且此失败无法被检测为错误。现在新增了一个 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量 `vfs.nfs.nfs_keep_dirty_on_error` 来控制客户端端的相关行为。当设置为 `1` 时，写操作失败的页面将保持为脏数据。默认值为 `0`。[r233730](http://svn.freebsd.org/viewvc/base?view=revision\&revision=233730)
* [nfsv4(4)](https://man.freebsd.org/cgi/man.cgi?query=nfsv4\&sektion=4\&format=html) 文件系统现在支持一个 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量 `vfs.nfsd.disable_checkutf8`，该选项禁用了对文件名的 UTF-8 合规性检查。默认情况下，此选项是禁用的。请注意，启用此选项可能有助于解决某些互操作性问题，但会导致 NFSv4 服务器不符合 RFC 3530 标准。[r229799](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229799)

[**tmpfs(5)**](https://man.freebsd.org/cgi/man.cgi?query=tmpfs\&sektion=5\&format=html) 文件系统不再是实验性实现。[r234511](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234511)

[**tmpfs(5)**](https://man.freebsd.org/cgi/man.cgi?query=tmpfs\&sektion=5\&format=html) 文件系统现在支持 [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量 `vfs.tmpfs.memory_reserved`，用于设置当 [tmpfs(5)](https://man.freebsd.org/cgi/man.cgi?query=tmpfs\&sektion=5\&format=html) 尝试分配新节点时所需的空闲页面数量。[r234849](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234849)

FreeBSD 的 ZFS 文件系统通过合并 illumos 项目的改进进行了更新。以下是所做的更改：[r229578](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229578), [r232328](http://svn.freebsd.org/viewvc/base?view=revision\&revision=232328)

* 新增了 `clones` 和 `written` 属性。
* [zfs(8)](https://man.freebsd.org/cgi/man.cgi?query=zfs\&sektion=8\&format=html) `send` 命令现在报告数据流的估计大小。
* [zfs(8)](https://man.freebsd.org/cgi/man.cgi?query=zfs\&sektion=8\&format=html) `destroy` 命令现在报告指定 `-n` 时会回收的空间估算。
* [zfs(8)](https://man.freebsd.org/cgi/man.cgi?query=zfs\&sektion=8\&format=html) `get` 命令现在支持 `-t type` 参数，用于指定数据类型。

一个简单的脚本 `zfsboottest.sh` 已添加到源代码树中。该脚本用于检查在使用 ZFS 作为根文件系统时系统是否配置正确。脚本位于 `/usr/src/tools/tools/zfsboottest.sh`，并使用同目录下的二进制程序 `zfsboottest`。[r227705](http://svn.freebsd.org/viewvc/base?view=revision\&revision=227705)

可以通过以下命令构建并安装该二进制程序：

```sh
# cd /usr/src/tools/tools/zfsboottest
# make
# make install
```

然后，可以使用以下命令检查系统。`poolname` 是要启动的 ZFS 存储池名称：

```sh
# sh /usr/src/tools/tools/zfsboottest/zfsboottest.sh poolname
```

[sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量 `vfs.zfs.txg.timeout` 已从只读变更为可写。

### 用户空间变更

已移除 [auth.conf(5)](https://man.freebsd.org/cgi/man.cgi?query=auth.conf\&sektion=5\&format=html) ，因为它多年前已被弃用。[r238481](http://svn.freebsd.org/viewvc/base?view=revision\&revision=238481)

[camcontrol(8)](https://man.freebsd.org/cgi/man.cgi?query=camcontrol\&sektion=8\&format=html) 工具现在支持子命令 `fwdownload`，用于更新来自 Hitachi、HP、IBM、Plextor、Quantum 和 Seagate 的 SCSI 设备的固件。此子命令将重新编程通过 ATA/SATA 传输连接的设备上的固件。[r237740](http://svn.freebsd.org/viewvc/base?view=revision\&revision=237740)

[dhclient(8)](https://man.freebsd.org/cgi/man.cgi?query=dhclient\&sektion=8\&format=html) 工具现在支持 `domain-search`（选项编号 119，在 RFC 3397 中所述）。这允许 DHCP 服务器发布在名称查找过程中使用的隐式域后缀列表。如果指定此选项，将向 `/etc/resolv.conf` 中添加关键字 `search`。[r230597](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230597)

[dump(8)](https://man.freebsd.org/cgi/man.cgi?query=dump\&sektion=8\&format=html) 工具现在在 `/etc/dumpdates` 中使用 53 个字符来表示设备名称，而之前此长度为 32 个字符。[r230047](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230047)

[fetch(1)](https://man.freebsd.org/cgi/man.cgi?query=fetch\&sektion=1\&format=html) 工具现在能正确支持 URL 中的百分比编码的用户和密码部分。[r235253](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235253)

已实现函数 [fdlopen(3)](https://man.freebsd.org/cgi/man.cgi?query=fdlopen\&sektion=3\&format=html)。这是个用于 [rtld(1)](https://man.freebsd.org/cgi/man.cgi?query=rtld\&sektion=1\&format=html) 通过文件涉及符加载共享对象的接口。[r230410](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230410)

[fopen(3)](https://man.freebsd.org/cgi/man.cgi?query=fopen\&sektion=3\&format=html) 函数现在支持 ISO/IEC 9899:2011 和 C11 标准中的 `x`（独占创建并打开模式）选项。[r229845](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229845)

修复了 [gcc(1)](https://man.freebsd.org/cgi/man.cgi?query=gcc\&sektion=1\&format=html) 编译器中的一个错误。它可能在指定 `-ffast-math` 时导致不正确的计算。[r234023](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234023)

守护进程 [hastd(8)](https://man.freebsd.org/cgi/man.cgi?query=hastd\&sektion=8\&format=html) 现在支持在 [hast.conf(5)](https://www.freebsd.org/releases/9.1R/relnotes-detailed/%3Ca%20href=) 中指定其进程 ID 文件的文件名。[r229509](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229509)

[ifconfig(8)](https://man.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&format=html) 工具现在支持参数 `vlanhwcsum`，用于设置或重置 VLAN 上的校验和卸载能力。[r231221](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231221)

修复了 [ifconfig(8)](https://man.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&format=html) 工具中的一个错误，该错误可能在没有 IPv6 支持的 jail 中显示错误信息。[r238872](http://svn.freebsd.org/viewvc/base?view=revision\&revision=238872)

[ifconfig(8)](https://man.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&format=html) 工具现在支持参数 `carp state state`，用于强制设置状态为 `backup` 或 `master`。[r232486](http://svn.freebsd.org/viewvc/base?view=revision\&revision=232486)

[jail(8)](https://man.freebsd.org/cgi/man.cgi?query=jail\&sektion=8\&format=html) 工具现在支持配置文件 ([jail.conf(5)](https://man.freebsd.org/cgi/man.cgi?query=jail.conf\&sektion=5\&format=html)) 来进行复杂的配置。[r235839](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235839)

[kdump(1)](https://man.freebsd.org/cgi/man.cgi?query=kdump\&sektion=1\&format=html) 工具现在支持选项 `-p pid`，以接受进程 ID 或线程 ID。[r237789](http://svn.freebsd.org/viewvc/base?view=revision\&revision=237789)

[kenv(1)](https://man.freebsd.org/cgi/man.cgi?query=kenv\&sektion=1\&format=html) 工具现在支持参数 `-v` 来以 `name=value` 格式显示条目，以及 `-N` 参数来仅显示名称。[r236118](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236118)

[kldload(8)](https://man.freebsd.org/cgi/man.cgi?query=kldload\&sektion=8\&format=html) 工具现在支持 `-n` 参数，用于忽略在指定模块已加载时的错误状态。[r233560](http://svn.freebsd.org/viewvc/base?view=revision\&revision=233560)

**libedit** 已更新为 2009 年 12 月 28 日的 NetBSD 快照。[r237738](http://svn.freebsd.org/viewvc/base?view=revision\&revision=237738)

[libmap.conf(5)](https://man.freebsd.org/cgi/man.cgi?query=libmap.conf\&sektion=5\&format=html) 现在支持 `include` 和 `includedir` 指令。它们允许将指定的文件包含到配置中。[r236523](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236523)

**libthr** pthread 库中的锁处理性能已得到改进，尤其是在互斥锁竞争激烈的情况下，现在速度提高了 10 倍。[r234372](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234372)

引入了新的 C++ 栈。该栈包括 **libcxxrt**（最初由 FreeBSD 开发人员在 PathScale 的合同下开发，并由 FreeBSD 和 NetBSD 基金会开源）以及来自 LLVM 项目的 `libc*`。**libcxxrt** 是 GNU **libsupc** 的替代品，后者实现了 C++ 运行时支持功能，如运行时类型信息、动态转换、线程安全的静态初始化器和异常处理。`libc*` 实现了 C++11 标准库，将在未来的版本中替代 GNU **libstdc**。在 9.1-RELEASE 中，**libstdc** 仍作为标准安装，并且现在动态链接到 **libsupc**。这使得同时链接 **libstdc** 和 **libc** 的库可以在同一程序中使用，以帮助迁移。[r235798](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235798)

[limits(1)](https://man.freebsd.org/cgi/man.cgi?query=limits\&sektion=1\&format=html) 工具现在支持 `-P pid` 选项，用于控制指定进程的限制。[r230919](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230919)

[pciconf(8)](https://man.freebsd.org/cgi/man.cgi?query=pciconf\&sektion=8\&format=html) 工具现在支持 `-e` 参数，用于在列出模式下显示 PCI 错误详细信息。当指定该选项时，将显示 PCI 状态寄存器和 PCI-express 设备状态寄存器中任何错误位的状态。还会列出 PCI-express 高级错误报告（AER）版本 1 指示的任何错误。\[[r237731](http://svn.freebsd.org/viewvc/base?view=revision\&revision=237731)]

[procstat(1)](https://man.freebsd.org/cgi/man.cgi?query=procstat\&sektion=1\&format=html) 工具现在在显示进程虚拟内存映射时显示超级页映射参数。\[[r229710](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229710)]

[procstat(1)](https://man.freebsd.org/cgi/man.cgi?query=procstat\&sektion=1\&format=html) 工具现在支持 `-e` 参数以显示进程环境变量，`-x` 参数以显示 ELF 辅助向量，以及 `-l` 参数以显示资源限制。\[[r230917](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230917), [r230918](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230918)]

[remquo(3)](https://man.freebsd.org/cgi/man.cgi?query=remquo\&sektion=3\&format=html) 函数中的一个错误已被修复，该错误会导致当余数为 `0` 时商的符号不正确，另一个错误是当涉及到子正常余数时，余数和商在某些情况下偏差。请注意，这些错误影响了所有平台，除了 amd64 和 i386。\[[r234535](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234535)]

[rtld(1)](https://man.freebsd.org/cgi/man.cgi?query=rtld\&sektion=1\&format=html) 运行时链接器现在支持 GCC 的 RELRO（只读重定位）。这防止了 GOT（全局偏移表）被覆盖。\[[r231579](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231579)]

[rtld(1)](https://man.freebsd.org/cgi/man.cgi?query=rtld\&sektion=1\&format=html) 运行时链接器现在支持 GNU 哈希段（`DT_GNU_HASH`），它是可选 ELF 哈希段的替代品。\[[r235396](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235396)]

已添加 [setbuf(1)](https://man.freebsd.org/cgi/man.cgi?query=setbuf\&sektion=1\&format=html) 工具和 **libstdbuf** 库。它控制标准 stdio 流的默认缓冲行为。\[[r235139](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235139)]

[top(1)](https://man.freebsd.org/cgi/man.cgi?query=top\&sektion=1\&format=html) 工具现在正确支持 `-m io` 选项下 ZFS 的每线程 I/O 统计信息。\[[r227702](http://svn.freebsd.org/viewvc/base?view=revision\&revision=227702)]

[unzip(1)](https://man.freebsd.org/cgi/man.cgi?query=unzip\&sektion=1\&format=html) 工具现在支持 `-Z` 选项用于 zipinfo。\[[r234330](http://svn.freebsd.org/viewvc/base?view=revision\&revision=234330)]

[xlocale(3)](https://man.freebsd.org/cgi/man.cgi?query=xlocale\&sektion=3\&format=html) API 已实现。它包含各种标准库函数的 `_l` 后缀版本，这些函数使用全局区域设置，允许它们接收显式区域设置参数，并提供线程安全的扩展区域设置支持。这些 API 是 IEEE Std 1003.1-2008（POSIX.1-2008 或 ISO/IEC 9945:2009）兼容性所必需的，也是 **libc++** 和 **GNOME** 的最新版本所需的。此实现还支持与 Apple **Darwin** 兼容的多个扩展。\[[r235785](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235785)]

#### [periodic(8)](https://man.freebsd.org/cgi/man.cgi?query=periodic\&sektion=8\&format=html) 脚本

新增变量 `daily_status_zfs_zpool_list_enable`。它控制是否列出 `periodic/daily/404.status-zfs` 中的所有 ZFS 池。默认值为 `YES`。[r231721](http://svn.freebsd.org/viewvc/base?view=revision\&revision=231721)

`periodic/daily/800.scrub-zfs` 中使用的 `daily_scrub_zfs_default_threshold` 默认值现已设置为 35 天。[r229381](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229381)

#### [rc(8)](https://man.freebsd.org/cgi/man.cgi?query=rc\&sektion=8\&format=html) 脚本

`rc.d/nfsd` 脚本现在在 `nfsv4_server_enable` 设置为 `YES` 时，将 `vfs.nfsd.server_max_nfsvers` [sysctl(8)](https://man.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&format=html) 变量设置为 `4`。[r227607](http://svn.freebsd.org/viewvc/base?view=revision\&revision=227607)

已修复同时定义 `ipv6_enable=YES` 和 `ipv6_gateway_enable=YES` 时的向后兼容性问题。[r242189](http://svn.freebsd.org/viewvc/base?view=revision\&revision=242189)

### 第三方软件

**ISC BIND** 已更新到版本 9.8.3-P4。[r241417](http://svn.freebsd.org/viewvc/base?view=revision\&revision=241417)

提供低级目标特定接口的 **compiler-rt** 库（例如 **libgcc** 中的函数）已更新到修订版 147467。[r236018](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236018)

**file** ([file(1)](https://man.freebsd.org/cgi/man.cgi?query=file\&sektion=1\&format=html)) 已更新到版本 5.11。[r237983](http://svn.freebsd.org/viewvc/base?view=revision\&revision=237983)

GNU [gperf(1)](https://man.freebsd.org/cgi/man.cgi?query=gperf\&sektion=1\&format=html) 已更新到版本 3.0.3（最新的 GPLv2 许可版本）。[r230237](http://svn.freebsd.org/viewvc/base?view=revision\&revision=230237)

**libarchive**、[bsdtar(1)](https://man.freebsd.org/cgi/man.cgi?query=bsdtar\&sektion=1\&format=html) 和 [cpio(1)](https://man.freebsd.org/cgi/man.cgi?query=cpio\&sektion=1\&format=html) 已更新到版本 2.8.5。[r229588](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229588)

**libpcap** 库已更新到 1.2.1。[r236167](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236167)

**libstdc++** 已更新到 `gcc-4_2-branch` 的修订版 135556（最后一个 LGPLv2 许可版本）。[r229551](http://svn.freebsd.org/viewvc/base?view=revision\&revision=229551)

已导入 **LLVM** 编译器基础设施和 **clang**（C 语言家族前端）版本 3.1。请注意，默认情况下不会使用它来构建 FreeBSD 基本系统。[r236144](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236144)

`netcat` 工具已更新到版本 5.1。[r235971](http://svn.freebsd.org/viewvc/base?view=revision\&revision=235971)

**OpenSSL** 已更新到版本 0.9.8x。[r237998](http://svn.freebsd.org/viewvc/base?view=revision\&revision=237998)

**tcpdump** ([tcpdump(1)](https://man.freebsd.org/cgi/man.cgi?query=tcpdump\&sektion=1\&format=html)) 工具已更新到版本 4.2.1。[r236192](http://svn.freebsd.org/viewvc/base?view=revision\&revision=236192)

**TENEX C shell** ([tcsh(1)](https://man.freebsd.org/cgi/man.cgi?query=tcsh\&sektion=1\&format=html)) 已更新到版本 6.18.01。[r232633](http://svn.freebsd.org/viewvc/base?view=revision\&revision=232633)

**timezone** 数据库已更新到 **tzdata2012a** 版本。[r233447](http://svn.freebsd.org/viewvc/base?view=revision\&revision=233447)

**zlib** 库已更新到版本 1.2.7。[r237691](http://svn.freebsd.org/viewvc/base?view=revision\&revision=237691)

### 2.5 发布工程与集成

支持的 **KDE** 桌面环境版本（[`x11/kde4`](http://svnweb.freebsd.org/ports/head/x11/kde4/pkg-descr?revision=HEAD)）已更新至 4.8.4。

## 从旧版 FreeBSD 升级

### 使用 [freebsd-update(8)](https://man.freebsd.org/cgi/man.cgi?query=freebsd-update\&sektion=8\&format=html) 或基于源代码的升级程序进行升级

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

可以根据 `/usr/src/UPDATING` 中的说明进行基于源代码的升级（通过重新编译 FreeBSD 基本系统的源代码进行升级）。

有关升级说明的更详细信息，请参阅 [http://www.FreeBSD.org/releases/9.1R/installation/](http://www.freebsd.org/releases/9.1R/installation/)。

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

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

FreeBSD 9.0 及以后的版本在系统配置方面存在一些不兼容性，你可能需要在升级系统之前了解这些问题。**在提交问题报告/向 FreeBSD 邮件列表提问之前，请务必阅读本节内容以及** [**9.0-RELEASE 发行说明中的升级部分**](http://www.freebsd.org/releases/9.0R/relnotes-detailed/#UPGRADE)**。**


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.bsdcn.org/release/9.1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
