# FreeBSD 7.0 RELEASE 发行公告（2008 年 2 月 27 日）

**FreeBSD 项目**

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

```
$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/article.sgml,v 1.1068.2.20.2.3 2008/02/16 16:03:48 bmah Exp $
```

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

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

IEEE、POSIX 和 802 是美国电气与电子工程师学会（Institute of Electrical and Electronics Engineers, Inc.）的注册商标。

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

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

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

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

## 1 介绍

本文档包含了 FreeBSD 7.0-RELEASE 的发布说明。它介绍了 FreeBSD 最近添加、修改或删除的功能，并提供了一些关于从旧版本 FreeBSD 升级的注意事项。

这个版本的 FreeBSD 7.0-RELEASE 是一个快照版本。你可以在 [http://www.FreeBSD.org/snapshots/](http://www.freebsd.org/snapshots/) 或其镜像站点找到它。有关如何获取此（或其他）FreeBSD 快照版本的更多信息，可以参考 [FreeBSD 手册](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/)中的[“获取 FreeBSD”附录](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mirrors.html)。

在安装 FreeBSD 之前，强烈建议所有用户查阅发布勘误文档。勘误 文档包含在发布周期末期或发布后发现的“最新动态”信息。通常，它包含已知的错误、漏洞安全公告以及文档修正。可以在 FreeBSD 网站上找到 FreeBSD 7.0-RELEASE 的最新勘误文档。

## 2 新特性

本节介绍了自 6.0-RELEASE 以来 FreeBSD 中最具用户可见性的新增或变更功能。一般而言，除非特别标注为 \[已合并] 特性，否则这里描述的变更是 7-STABLE 分支特有的。

典型的发布说明项包括描述自 6.0-RELEASE 以来发布的安全公告、新的驱动程序或硬件支持、新的命令或选项、重大 bug 修复或第三方软件升级。它们也可能列出对主要 ports/packages 或发布工程实践的变更。显然，发布说明不能列出每个版本之间对 FreeBSD 所做的所有变更；本文档主要集中在安全公告、用户可见的变化和重大架构改进。

### 2.1 安全公告

已修复 BIND 中的两个远程服务拒绝漏洞（一个涉及 DNSSEC，另一个涉及递归 DNS 查询）。有关更多信息，请参见安全公告 [FreeBSD-SA-07:02.bind](http://security.freebsd.org/advisories/FreeBSD-SA-07:02.bind.asc)。\[已合并]

IPv6 类型 0 路由头的处理现在由 sysctl 变量 `net.inet6.ip6.rthdr0_allowed` 控制，默认值为 `0`（关闭）。有关更多信息，请参见安全公告 [FreeBSD-SA-07:03.ipv6](http://security.freebsd.org/advisories/FreeBSD-SA-07:03.ipv6.asc)。\[已合并]

已修复 [file(1)](http://www.freebsd.org/cgi/man.cgi?query=file\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 工具（以及其依赖的 [libmagic(3)](http://www.freebsd.org/cgi/man.cgi?query=libmagic\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 库）中的潜在堆溢出。更多细节请参见安全公告 [FreeBSD-SA-07:04.file](http://security.freebsd.org/advisories/FreeBSD-SA-07:04.file.asc)。\[已合并]

已修复 [libarchive(3)](http://www.freebsd.org/cgi/man.cgi?query=libarchive\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 和 [tar(1)](http://www.freebsd.org/cgi/man.cgi?query=tar\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 处理损坏的 [tar(5)](http://www.freebsd.org/cgi/man.cgi?query=tar\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 存档文件的问题。更多细节请参见安全公告 [FreeBSD-SA-07:05.libarchive](http://security.freebsd.org/advisories/FreeBSD-SA-07:05.libarchive.asc)。\[已合并]

已修复 [tcpdump(1)](http://www.freebsd.org/cgi/man.cgi?query=tcpdump\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 中的缓冲区溢出问题。更多信息请参见安全公告 [FreeBSD-SA-07:06.tcpdump](http://security.freebsd.org/advisories/FreeBSD-SA-07:06.tcpdump.asc)。\[已合并]

已修复 [named(8)](http://www.freebsd.org/cgi/man.cgi?query=named\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 中的 bug，该问题可能导致攻击者能够污染解析器的 DNS 缓存。更多细节请参见安全公告 [FreeBSD-SA-07:07.bind](http://security.freebsd.org/advisories/FreeBSD-SA-07:07.bind.asc)。\[已合并]

已修复 OpenSSL 中的缓冲区溢出问题（此前在安全补丁中错误修复）。更多细节请参见安全公告 [FreeBSD-SA-07:08.openssl](http://security.freebsd.org/advisories/FreeBSD-SA-07:08.openssl.asc)。\[已合并]

已修复可能导致泄露先前生成的 [random(4)](http://www.freebsd.org/cgi/man.cgi?query=random\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 数据的缺陷。有关该问题的信息请参见安全公告 [FreeBSD-SA-07:09.random](http://security.freebsd.org/advisories/FreeBSD-SA-07:09.random.asc)。\[已合并]

已修复 [openpty(3)](http://www.freebsd.org/cgi/man.cgi?query=openpty\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 和 [ptsname(3)](http://www.freebsd.org/cgi/man.cgi?query=ptsname\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 中的信息泄露问题。有关该问题的信息请参见安全公告 [FreeBSD-SA-08:01.pty](http://security.freebsd.org/advisories/FreeBSD-SA-08:01.pty.asc)。\[已合并]

已修复 [inet\_network(3)](http://www.freebsd.org/cgi/man.cgi?query=inet_network\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 网络地址处理函数中的编程错误，该错误可能导致覆盖内存区域。有关该问题的信息请参见安全公告 [FreeBSD-SA-08:02.libc](http://security.freebsd.org/advisories/FreeBSD-SA-08:02.libc.asc)。\[已合并]

已修复可能允许 [sendfile(2)](http://www.freebsd.org/cgi/man.cgi?query=sendfile\&sektion=2\&manpath=FreeBSD+7.0-RELEASE) 不当访问文件内容的错误。更多信息请参见安全公告 [FreeBSD-SA-08:03.sendfile](http://security.freebsd.org/advisories/FreeBSD-SA-08:03.sendfile.asc)。\[已合并]

### 2.2 内核变更

[acpi(4)](http://www.freebsd.org/cgi/man.cgi?query=acpi\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 现在支持 HPET 时间计数器。\[已合并]

[acpi\_ibm(4)](http://www.freebsd.org/cgi/man.cgi?query=acpi_ibm\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序现在支持将风扇控制模式设置为手动或自动，并在手动模式下调整风扇速度。要启用风扇速度的手动控制，必须将 sysctl 变量 `dev.acpi_ibm.0.fan` 设置为 `0`（手动）。此功能仅应在极为谨慎的情况下使用，因为禁用自动风扇控制可能导致硬件过热并造成永久损坏。

[apm(4)](http://www.freebsd.org/cgi/man.cgi?query=apm\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 的挂起/恢复支持得到了改进。

[cpufreq(4)](http://www.freebsd.org/cgi/man.cgi?query=cpufreq\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) CPU 频率控制框架现在在 GENERIC 内核中启用。

已将 Camellia 块加密算法添加到 FreeBSD 内核中。现在它可以在 [ipsec(4)](http://www.freebsd.org/cgi/man.cgi?query=ipsec\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 和 [geli(8)](http://www.freebsd.org/cgi/man.cgi?query=geli\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 中作为加密算法使用。有关 Camellia 的更多信息可以在 RFC 4132 中找到。

内核配置选项 `COMPAT_43` 被认为不再必要，并已从 GENERIC 和相关的内核配置中移除。此变更可能会导致某些工作负载的性能略有提升。

简易控制台驱动程序 ([dcons(4)](http://www.freebsd.org/cgi/man.cgi?query=dcons\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)) 现在在 GENERIC 内核中启用。

[ddb(4)](http://www.freebsd.org/cgi/man.cgi?query=ddb\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 调试器现在提供 `show sleepq` 命令。该命令接受一个等待通道作为参数，并查找与该等待通道相关联的睡眠队列。

已修复文件描述符处理中的一个 bug，即在某些情况下，简单的 `close(0); dup(fd)` 序列不会返回描述符 `0`。

[gdb(1)](http://www.freebsd.org/cgi/man.cgi?query=gdb\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 远程调试接口现在支持将控制台消息复制到远程调试器实例。要启用此功能，需要在 `loader.conf` 中设置 `debug.gdbcons="1"`，然后从 loader 提示符输入 `boot -d; gdb; step`，再从远程机器附加 [gdb(1)](http://www.freebsd.org/cgi/man.cgi?query=gdb\&sektion=1\&manpath=FreeBSD+7.0-RELEASE)。可以使用 sysctl 变量 `debug.gdbcons` 来开启或关闭此功能。

[hwpmc(4)](http://www.freebsd.org/cgi/man.cgi?query=hwpmc\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 和 [pmcstat(8)](http://www.freebsd.org/cgi/man.cgi?query=pmcstat\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 现在支持对动态加载的内核模块和使用 [dlopen(3)](http://www.freebsd.org/cgi/man.cgi?query=dlopen\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 加载的共享对象进行分析。

新增 sysctl 变量 `kern.hostuuid`，用于保存主机的全局唯一标识符（UUID）。此 UUID 由新的 rc.d/hostid 启动脚本计算或生成，并在可能的情况下保存到磁盘，以便在重启后仍然持久存在。

`INCLUDE_CONFIG_FILE` 内核配置选项已得到改进。现在可以通过 `sysctl -b kern.conftxt` 获取正在运行的内核的完整配置，也可以通过 `config -x kernelfile` 从内核文件中提取配置。要保留包含所有注释的原始内核配置，可以使用 [config(8)](http://www.freebsd.org/cgi/man.cgi?query=config\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 的 `-C` 选项。

内核调度实体（KSE）现在是一个内核选项（之前是内核中的强制功能）。它在 GENERIC 内核中启用（因此所有平台上功能没有变化），除了 sun4v 平台外。

Linux ABI 支持已增强，支持模拟 Linux 2.6.16。默认情况下此功能未启用。要启用它，必须将 sysctl 变量 `compat.linux.osrelease` 设置为 2.6.16。请注意，此支持仍处于实验阶段。

内核的 PCI 支持代码现在已新增对消息信号中断（MSI）和扩展消息信号中断（MSI-X）的支持。\[已合并]

新增了 [priv(9)](http://www.freebsd.org/cgi/man.cgi?query=priv\&sektion=9\&manpath=FreeBSD+7.0-RELEASE) 内核接口，用于检查线程和凭证的权限可用性。与现有的 [suser(9)](http://www.freebsd.org/cgi/man.cgi?query=suser\&sektion=9\&manpath=FreeBSD+7.0-RELEASE) 接口不同，[priv(9)](http://www.freebsd.org/cgi/man.cgi?query=priv\&sektion=9\&manpath=FreeBSD+7.0-RELEASE) 向权限检查代码暴露了一个命名的权限标识符，允许更复杂的权限授予策略。

FreeBSD 现在支持并发 [read(2)](http://www.freebsd.org/cgi/man.cgi?query=read\&sektion=2\&manpath=FreeBSD+7.0-RELEASE)/[readv(2)](http://www.freebsd.org/cgi/man.cgi?query=readv\&sektion=2\&manpath=FreeBSD+7.0-RELEASE) 访问文件。

内核的 [sx(9)](http://www.freebsd.org/cgi/man.cgi?query=sx\&sektion=9\&manpath=FreeBSD+7.0-RELEASE) 锁已优化，使用简单的原子操作来处理获取和释放共享锁和独占锁的常见情况。尽管此变更通常对用户不可见，但它为一些显著的性能提升奠定了基础。

ULE 进程调度器已修订，以改善其行为，特别是在负载下的交互性，适用于单处理器和多处理器机器。此实现通常被称为“ULE 3.0”。（ULE 3.0 以前被称为 `SCHED_SMP`，而 `SCHED_SMP` 又基于 ULE 调度器的 2.0 版本。ULE 2.0 从未成为任何 FreeBSD 版本的一部分，但它曾是许多开发、测试和基准测试工作的主题。）

添加了 SIGCHLD 信号排队功能。对于每个状态已变更的子进程，会排队一个 SIGCHLD 实例。如果信号仍然挂起，并且进程多次变更状态，信号信息将更新以反映最新的进程状态。新增了加载器可调参数 `kern.sigqueue.queue_sigchild`，用于控制此行为，设置为零则禁用 SIGCHLD 排队功能。

新增 sysctl 变量 `kern.malloc_stats`，允许通过二进制结构流导出内核 malloc 统计信息。

新增 sysctl 变量 `kern.forcesigexit`，当当前线程持有一个陷阱信号或当前进程忽略该信号时，它强制进程进行 sigexit。默认情况下启用此功能。

已移除 pcvt(4) 驱动程序（[syscons(4)](http://www.freebsd.org/cgi/man.cgi?query=syscons\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 的替代方案），因为它与内核的其他部分已经不同步。

RedZone，内核 [malloc(9)](http://www.freebsd.org/cgi/man.cgi?query=malloc\&sektion=9\&manpath=FreeBSD+7.0-RELEASE) 的缓冲区损坏保护功能已实现。它可以在 [free(9)](http://www.freebsd.org/cgi/man.cgi?query=free\&sektion=9\&manpath=FreeBSD+7.0-RELEASE) 和 [realloc(9)](http://www.freebsd.org/cgi/man.cgi?query=realloc\&sektion=9\&manpath=FreeBSD+7.0-RELEASE) 上运行时检测缓冲区下溢和溢出，并打印出内存分配和释放的位置的回溯信息。有关更多详细信息，请参见 [redzone(9)](http://www.freebsd.org/cgi/man.cgi?query=redzone\&sektion=9\&manpath=FreeBSD+7.0-RELEASE) 手册页。

新增了加载器可调参数 `vm.kmem_size_min`，可以指定 `vm.kmem_size` 的最小值。

新增了 sysctl 变量 `vm.zone_stats`，允许通过二进制结构流导出 [uma(9)](http://www.freebsd.org/cgi/man.cgi?query=uma\&sektion=9\&manpath=FreeBSD+7.0-RELEASE) 分配器统计信息。

sysctl 变量 `hw.pci.do_powerstate` 已被拆分为两个 sysctl 变量 `hw.pci.do_powerstate_nodriver` 和 `hw.pci.do_powerstate_resume`。此外，这些变量已从布尔值变更为范围值。`0` 表示不进行电源管理，`1` 表示保守的电源管理，将出现问题的任何设备类添加到监视列表中，`2` 表示积极的电源管理，将非系统基本的任何设备类添加到列表中，`3` 表示无条件地关闭所有设备。默认值为 `hw.pci.do_powerstate_nodriver` 为 `0`，`hw.pci.do_powerstate_resume` 为 `1`。

\[ia64] GENERIC 内核现在默认启用 SMP 支持。

已新增样本内核配置文件 `src/sys/arch/conf/MAC`，用于强制访问控制框架。

`POSIX_TIMERS` 支持已更新为 200112L。

已实现对 POSIX 消息队列的实验性支持。

UNIX 域套接字的锁定策略已修订，以提高并发性；这一变更在各种 SMP 工作负载（特别是在 8 路 amd64 系统上的 MySQL）上带来了显著的性能提升，同时对 UP 系统几乎没有或没有测量到额外开销。

为支持与中断过滤相关的一些持续工作，对 Newbus API 进行了若干小的但广泛的变更。由于此变更还打破了内核 ABI，所有第三方设备驱动程序都需要进行修改并重新编译。

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

新增了 `-S` 选项，可以在 `/boot.config` 文件或 `boot:` 提示行中设置 boot2 串行控制台的速度。

\[amd64, i386] 已为启动加载器添加了 [firewire(4)](http://www.freebsd.org/cgi/man.cgi?query=firewire\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 和 [dcons(4)](http://www.freebsd.org/cgi/man.cgi?query=dcons\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 支持。要启用此功能，需要在 `/etc/make.conf` 文件中添加 `LOADER_FIREWIRE_SUPPORT=yes`，并重新构建加载器。

\[pc98] boot0.5 中的 **IPLware** 支持已增强，支持版本 3.33。

#### 2.2.2 硬件支持

[cardbus(4)](http://www.freebsd.org/cgi/man.cgi?query=cardbus\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)、[pccard(4)](http://www.freebsd.org/cgi/man.cgi?query=pccard\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)、[pccbb(4)](http://www.freebsd.org/cgi/man.cgi?query=pccbb\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 和 [ex(4)](http://www.freebsd.org/cgi/man.cgi?query=ex\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序现在可以作为内核模块构建。

新增了 [acpi\_dock(4)](http://www.freebsd.org/cgi/man.cgi?query=acpi_dock\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，以通过 ACPI 支持控制笔记本电脑扩展坞功能。 \[已合并]

[acpi\_thermal(4)](http://www.freebsd.org/cgi/man.cgi?query=acpi_thermal\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序现在支持覆盖 `_PSV`、`_HOT` 和 `_CRT` 温度值。

已移除对 Alpha 架构的支持。Alpha 支持将保留在 RELENG\_5 和 RELENG\_6 代码线中。

[cardbus(4)](http://www.freebsd.org/cgi/man.cgi?query=cardbus\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序现在支持 `/dev/cardbus%d.cis`。

\[i386, amd64] 新增了 [coretemp(4)](http://www.freebsd.org/cgi/man.cgi?query=coretemp\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，用于提供 Intel® Core™ 处理器的温度读数。 \[已合并]

est [cpufreq(4)](http://www.freebsd.org/cgi/man.cgi?query=cpufreq\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序现在支持 VIA C7-M 系列处理器的频率控制。

[firewire(4)](http://www.freebsd.org/cgi/man.cgi?query=firewire\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 代码现已支持 MPSAFE。

新增了 icee(4)，一款通用的 I2C EEPROM 驱动程序。

修复了一个 bug，该 bug 阻止了 [ichsmb(4)](http://www.freebsd.org/cgi/man.cgi?query=ichsmb\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 内核模块卸载。

\[amd64, i386] 双核处理器（例如 Intel Core Duo）现在在默认启用 SMP 的内核中可用两个核心。 \[已合并]

\[ia64, powerpc] loader 可调参数 `debug.mpsafevfs` 默认设置为 `1`。

已移除 [sab(4)](http://www.freebsd.org/cgi/man.cgi?query=sab\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序（已被 [scc(4)](http://www.freebsd.org/cgi/man.cgi?query=scc\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序取代）。

新增了 [scc(4)](http://www.freebsd.org/cgi/man.cgi?query=scc\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，提供通用的串行通信控制器支持，并将对每个通道和模式的控制委托给从属驱动程序（如 [uart(4)](http://www.freebsd.org/cgi/man.cgi?query=uart\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)）。

\[amd64] 增加了对 amd64 的 smbios(4) 驱动程序支持。

\[sun4v] FreeBSD 现在对 Sun Microsystems UltraSPARC-T1 架构提供初步支持。FreeBSD/sun4v 已证明可以在 Sun Fire T1000 和 Sun Fire T2000 服务器上运行。更多信息请参见 [sun4v 项目页面](http://www.freebsd.org/platforms/sun4v.html)。

新增了 tnt4882(4) 驱动程序，支持 National Instruments PCI-GPIB 卡。

\[amd64, i386, ia64, sparc64] [uart(4)](http://www.freebsd.org/cgi/man.cgi?query=uart\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序已默认包含在 GENERIC 内核中。当 [sio(4)](http://www.freebsd.org/cgi/man.cgi?query=sio\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 和 [uart(4)](http://www.freebsd.org/cgi/man.cgi?query=uart\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 都能处理给定的串行端口时，[sio(4)](http://www.freebsd.org/cgi/man.cgi?query=sio\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 将声明使用该端口。

新增了 [uark(4)](http://www.freebsd.org/cgi/man.cgi?query=uark\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，支持基于 Arkmicro Technologies ARK3116 的 USB 串行适配器。

[uart(4)](http://www.freebsd.org/cgi/man.cgi?query=uart\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序现在支持 LOM（Lights Out Management）和 RSC（Remote System Control）设备作为控制台。

已移除 zs 驱动程序，其功能已被 [uart(4)](http://www.freebsd.org/cgi/man.cgi?query=uart\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序取代。

\[i386] 新增了 loader 可调参数 `hw.apic.enable_extint`。此可调参数可用于禁用第一个 I/O APIC 上的 ExtINT 引脚屏蔽。至少一些 Intel Pentium III 的芯片组似乎需要此设置，尽管 8259A 中的所有引脚都被屏蔽。默认情况下，仍然屏蔽 ExtINT 引脚。

**2.2.2.1 多媒体支持**

新增了基于 NetBSD 的 midi(4) 驱动。此驱动支持 [snd\_cmi(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_cmi\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 和 [snd\_emu10k1(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_emu10k1\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动。

[snd\_cmi(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_cmi\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在已实现 MPSAFE。

新增了 [snd\_emu10kx(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_emu10kx\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，支持 Creative SoundBlaster Live! 和 Audigy 系列声卡，提供可选的伪多声道播放。

新增了 [snd\_envy24(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_envy24\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，支持 Envy24 系列音频芯片。\[已合并]

新增了 [snd\_envy24ht(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_envy24ht\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，支持 VIA Envy24HT 系列音频芯片。\[已合并]

新增了 [snd\_hda(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_hda\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，支持符合 Intel 高清音频规范 1.0 修订版的设备。\[已合并]

[snd\_solo(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_solo\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现已实现 MPSAFE。\[已合并]

新增了 [snd\_spicds(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_spicds\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，支持 I2S SPI 音频编解码芯片。\[已合并]

[uaudio(4)](http://www.freebsd.org/cgi/man.cgi?query=uaudio\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现已支持 24/32 位音频格式及转换。

**2.2.2.2 网络接口支持**

已更新 [ath(4)](http://www.freebsd.org/cgi/man.cgi?query=ath\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动至 HAL 版本 0.9.20.3。\[已合并]

[axe(4)](http://www.freebsd.org/cgi/man.cgi?query=axe\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在支持 [altq(4)](http://www.freebsd.org/cgi/man.cgi?query=altq\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)。\[已合并]

[bge(4)](http://www.freebsd.org/cgi/man.cgi?query=bge\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动的 Jumbo 帧支持现已实现 MPSAFE。

[bge(4)](http://www.freebsd.org/cgi/man.cgi?query=bge\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现已支持大端架构，如 sparc64。

[cm(4)](http://www.freebsd.org/cgi/man.cgi?query=cm\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现已实现 MPSAFE。

新增了 [cxgb(4)](http://www.freebsd.org/cgi/man.cgi?query=cxgb\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，支持基于 Chelsio T3 和 T3B 芯片组的 10 吉比以太网适配器。\[已合并]

新增了 [edsc(4)](http://www.freebsd.org/cgi/man.cgi?query=edsc\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，提供以太网丢弃网络接口。\[已合并]

[el(4)](http://www.freebsd.org/cgi/man.cgi?query=el\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动因使用较少而被移除。

已更新 [em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动至 Intel 的 6.7.3 版本。更新内容包括，现支持 80003、82571、82571EB、82572 和 82575 系列适配器，以及 ICH8 系列主板上的集成网卡。\[已合并]

[em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在支持挂起和恢复功能。

[em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动的性能通过使用快速中断处理程序和任务队列代替 ithread 处理程序得到了提升。此变更可通过定义 NO\_EM\_FASTINTR 内核选项来禁用，以便进行调试。

FireWire 上的 IP（[fwip(4)](http://www.freebsd.org/cgi/man.cgi?query=fwip\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)）驱动现已在 GENERIC 内核中启用。

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

[ipw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipw\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序所需的固件镜像现在是 FreeBSD 基本系统的一部分。为了使加载的固件生效，必须同意位于 `/usr/share/doc/legal/intel_ipw/LICENSE` 的许可证，并且需要在 `/boot/loader.conf` 中添加 `legal.intel_ipw.license_ack=1`。以前版本的驱动程序使用 [net/ipw-firmware-kmod](http://www.freebsd.org/cgi/url.cgi?ports/net/ipw-firmware-kmod/pkg-descr) 或 [net/ipw-firmware](http://www.freebsd.org/cgi/url.cgi?ports/net/ipw-firmware/pkg-descr) 包中的固件镜像。

[iwi(4)](http://www.freebsd.org/cgi/man.cgi?query=iwi\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序现在支持如 sparc64 等大端架构。

[iwi(4)](http://www.freebsd.org/cgi/man.cgi?query=iwi\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序所需的固件镜像现在是 FreeBSD 基本系统的一部分。为了使加载的固件生效，必须同意位于 `/usr/share/doc/legal/intel_iwi/LICENSE` 的许可证，并且需要在 `/boot/loader.conf` 中添加 `legal.intel_iwi.license_ack=1`。以前版本的驱动程序使用 [net/iwi-firmware-kmod](http://www.freebsd.org/cgi/url.cgi?ports/net/iwi-firmware-kmod/pkg-descr) 或 [net/iwi-firmware](http://www.freebsd.org/cgi/url.cgi?ports/net/iwi-firmware/pkg-descr) 包中的固件镜像。

已新增 ixgbe 驱动程序，支持 Intel 10G PCI-Express 适配器（82598）。

已删除 lnc(4) 驱动程序。[le(4)](http://www.freebsd.org/cgi/man.cgi?query=le\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 和 [pcn(4)](http://www.freebsd.org/cgi/man.cgi?query=pcn\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序支持所有以前由 lnc(4) 支持的设备。

已新增 [msk(4)](http://www.freebsd.org/cgi/man.cgi?query=msk\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，支持使用 Marvell/SysKonnect Yukon II 千兆以太网控制器的网络接口。\[已合并]

\[amd64, i386] 已新增 [mxge(4)](http://www.freebsd.org/cgi/man.cgi?query=mxge\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，支持 Myricom Myri10GE 10 Gigabit 以太网适配器。更多详情请参见 [mxge(4)](http://www.freebsd.org/cgi/man.cgi?query=mxge\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)。\[已合并]

\[amd64, i386] 已新增 [nfe(4)](http://www.freebsd.org/cgi/man.cgi?query=nfe\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，它是 nForce 以太网设备的开源驱动程序，最初来自 OpenBSD。此驱动程序已替代 GENERIC 内核中的 [nve(4)](http://www.freebsd.org/cgi/man.cgi?query=nve\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序。

\[arm] 已新增 [npe(4)](http://www.freebsd.org/cgi/man.cgi?query=npe\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，支持 Intel XScale 网络处理引擎。\[已合并]

已新增 [nxge(4)](http://www.freebsd.org/cgi/man.cgi?query=nxge\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，支持 Neterion Xframe 10 Gigabit 以太网适配器。

[re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序现在支持 D-Link DGE-528(T) 千兆以太网卡。

已新增 [rum(4)](http://www.freebsd.org/cgi/man.cgi?query=rum\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，支持基于 Ralink RT2501USB 和 RT2601USB 芯片组的 WLAN 适配器。

[ti(4)](http://www.freebsd.org/cgi/man.cgi?query=ti\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序现在支持如 sparc64 等大端架构。

已新增 [ufoma(4)](http://www.freebsd.org/cgi/man.cgi?query=ufoma\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，支持 FOMA（由日本 NTT DoCoMo 公司提供的第三代手机系统）。此驱动程序应该支持其他第三代手机，因为它基于日本 MCPC（移动计算促进联盟）的 USB 实现指南。

已新增 vgapci(4) 驱动程序。这是一个 VGA PCI 设备的存根设备驱动程序，作为总线使其他驱动程序（如 drm(4)、[acpi\_video(4)](http://www.freebsd.org/cgi/man.cgi?query=acpi_video\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 和 [agp(4)](http://www.freebsd.org/cgi/man.cgi?query=agp\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)）能够附加到它，从而允许同一设备的多个驱动程序。

[vge(4)](http://www.freebsd.org/cgi/man.cgi?query=vge\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序现在支持 [altq(4)](http://www.freebsd.org/cgi/man.cgi?query=altq\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)。\[已合并]

[wi(4)](http://www.freebsd.org/cgi/man.cgi?query=wi\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序现在可以作为内核模块构建。

\[amd64, i386, pc98] [wlan\_wep(4)](http://www.freebsd.org/cgi/man.cgi?query=wlan_wep\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)、[wlan\_ccmp(4)](http://www.freebsd.org/cgi/man.cgi?query=wlan_ccmp\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 和 [wlan\_tkip(4)](http://www.freebsd.org/cgi/man.cgi?query=wlan_tkip\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序已默认包含在 GENERIC 内核中。

\[amd64, i386] 已新增 [wpi(4)](http://www.freebsd.org/cgi/man.cgi?query=wpi\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，支持 Intel 3945 无线局域网控制器。

\[amd64, i386] 已新增 [zyd(4)](http://www.freebsd.org/cgi/man.cgi?query=zyd\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序，提供对 ZyDAS ZD1211/ZD1211B USB IEEE 802.11 b/g 无线网络设备的支持。

从 OpenBSD 导入了网络接口组功能。此功能允许管理员例如对一组接口应用防火墙规则。更多信息可以在 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 中找到。

802.11 协议栈已进行了显著重构。新功能包括支持背景扫描和 AP 之间的漫游，以及对 802.11n 设备的支持。

802.11 协议栈现在支持 900 MHz 卡，以及 802.11a 的四分之一和半频道支持。\[已合并]

FreeBSD 网络栈现在完全不依赖于巨型内核锁，仅依赖内核的细粒度锁定机制来管理并行性。这显著提高了多处理器系统上的网络栈性能；单处理器系统也可能看到性能提升。ISDN4BSD 和 netatm 已从构建中暂时断开。这些模块都需要巨型内核锁才能操作；断开它们允许移除兼容性模块 `NET_NEEDS_GIANT`。计划将这些模块转换为细粒度内核锁定，并在 FreeBSD 7.1-RELEASE 中重新连接它们。

#### 2.2.3 网络协议

\[amd64, i386, pc98] 已为 [bpf(4)](http://www.freebsd.org/cgi/man.cgi?query=bpf\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 和 [ng\_bpf(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_bpf\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 实现了实验性的 BPF 即时编译器。要启用此功能，需要使用内核选项 `BPF_JITTER`。`net.bpf_jitter.enable` 可用于禁用此功能。

[bpf(4)](http://www.freebsd.org/cgi/man.cgi?query=bpf\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 设备现在支持多个新的 [ioctl(2)](http://www.freebsd.org/cgi/man.cgi?query=ioctl\&sektion=2\&manpath=FreeBSD+7.0-RELEASE) 调用，用于检查入站与出站的数据包，以及已经注入网络的数据包。

已从源代码中移除 bridge(4) 驱动。其功能已被 [if\_bridge(4)](http://www.freebsd.org/cgi/man.cgi?query=if_bridge\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 完全替代。

[gre(4)](http://www.freebsd.org/cgi/man.cgi?query=gre\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，支持 RFC 1701 和 RFC 1702 中的 GRE 封装，现在支持通过 GRE 进行 IPv6 封装。

[if\_bridge(4)](http://www.freebsd.org/cgi/man.cgi?query=if_bridge\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现支持 RSTP，即快速生成树协议（802.1w）。\[已合并]

[if\_bridge(4)](http://www.freebsd.org/cgi/man.cgi?query=if_bridge\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现支持在桥接端口上设置私有参数；桥接中的私有端口之间无法通信。此功能在一些场景中非常有用，例如在将多个客户 VLAN 与服务器网络桥接时；可能希望防止客户 VLAN 之间的通信，但允许它们全部访问服务器网络。可以通过 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 设置或清除桥接端口上的私有参数。

已删除对 IPv4 多播组成员数（之前为 20）的硬编码限制。

IPv6 多播转发现可动态加载，使用模块 `ip_mroute.ko`。

[ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 包过滤器现在支持过滤路由头类型 0 和移动 IPv6 路由头类型 2，此外还支持过滤任何路由头的存在。

已移除 ip6fw(8) 包过滤器。由于 [ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 已获得对 IPv6 的支持，因此应使用它。请注意，某些规则可能需要调整。

已移除 KAME IPsec 实现。现在，`FAST_IPSEC` 是 FreeBSD 内核唯一支持的 IPsec 实现。以前启用 KAME IPsec 的 IPSEC 内核配置选项现在启用 `FAST_IPSEC`。`FAST_IPSEC` 现支持 IPv4 和 IPv6，使用细粒度内核锁，并支持硬件加密加速。

已删除对通过 IP 隧道传输 IPX 的支持。

已新增 [lagg(4)](http://www.freebsd.org/cgi/man.cgi?query=lagg\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，由 OpenBSD 和 NetBSD 移植过来，以支持多种协议和算法用于链路聚合、故障转移和容错。\[已合并]

[natm(4)](http://www.freebsd.org/cgi/man.cgi?query=natm\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)，本地模式 ATM 协议层现已 MPSAFE。

已新增 [ng\_car(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_car\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) Netgraph 节点。它实现了各种流量整形和速率限制算法。

已新增 [ng\_deflate(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_deflate\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) Netgraph 节点类型。它实现了 Deflate PPP 压缩。\[已合并]

[ng\_h4(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_h4\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) Netgraph 节点现已 MPSAFE。

[ng\_ppp(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_ppp\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) Netgraph 节点现已 MPSAFE。\[已合并]

新增的 [ng\_pred1(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_pred1\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) Netgraph 节点类型已新增，实现了 Predictor-1 PPP 压缩。\[已合并]

NFS 通过 TCP 的默认重传定时器现在设置为 60 秒。此变更防止了对非幂等的 NFS 请求进行不必要的重传。变量 `nfs_access_cache` 在 [rc.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=rc.conf\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 中也已变更为 60。

默认的 nfsiod 内核线程的最小数量（[sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 变量 `vfs.nfs.iodmin`）已从 `4` 变更为 `0`。

新增 sysctl 变量 `net.inet.icmp.reply_from_interface`。该变量允许 ICMP (4) 回复来自非本地的数据包，并使用数据包通过的 IP 地址。这对于路由器显示 [traceroute(8)](http://www.freebsd.org/cgi/man.cgi?query=traceroute\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 中数据包实际路径而非可能不同的返回路径非常有用。

新增 sysctl 变量 `net.inet.icmp.quotelen`。此变量允许变更 ICMP 回复中原始数据包的引用长度。最小长度为 8 字节，最大引用长度为回复 mbuf 中剩余的空间。此选项是根据 `I-D draft-gont-icmp-payload-00.txt` 中提出的问题增加的。

[icmp(4)](http://www.freebsd.org/cgi/man.cgi?query=icmp\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 现在在回应时总是引用整个 TCP 头，并在需要时分配 mbuf 集群。此变更修复了 `I-D draft-gont-icmp-payload-00.txt` 中提出的 TCP 问题。

新增了套接字选项 IP\_MINTTL。此选项可用于设置接收到的数据包的最小 TTL 值。所有 TTL 较低的数据包将被静默丢弃。此选项适用于已经连接、正在连接和监听的 RAW、UDP 和 TCP 套接字。当设置为 255 时，此选项尤其有用，可防止来自直接连接网络外的包传递到本地套接字监听器。此外，该选项还允许在用户空间实现 RFC 3682 中的“通用 TTL 安全机制（GTSM）”。

内核 [ppp(4)](http://www.freebsd.org/cgi/man.cgi?query=ppp\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在支持 IPv6。

隐形转发现支持 IPv6 和 IPv4。此行为可通过新的 sysctl 变量 `net.inet6.ip6.stealth` 控制。

已移除内核选项 `PIM`。相应的代码现在已包含在内核选项 `MROUTING` 中。

已为 RFC 3678 源特定多播（SSM）套接字 API 添加了支持。更多详细信息请参阅 [sourcefilter(3)](http://www.freebsd.org/cgi/man.cgi?query=sourcefilter\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 手册页。

已为流控制传输协议（SCTP）添加支持。SCTP 实现了一个可靠的面向消息的传输协议，并在 RFC 4960 中定义。它在 FreeBSD 中通过内核选项 `SCTP` 启用，并且是 GENERIC 内核的一部分。更多信息请参阅 [sctp(4)](http://www.freebsd.org/cgi/man.cgi?query=sctp\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 手册页。

套接字选项 `IPV6_V6ONLY` 现在适用于 UDP。

内核选项 `TCP_DROP_SYNFIN` 现已默认包含在内核中。sysctl 变量 `net.inet.tcp.drop_synfin` 仍默认为 `0`。

FreeBSD 网络栈现在支持 TCP 分段卸载（TSO）。TSO 通过允许网络接口将大数据传输转换为多个 TCP 段发送到网络，从而减少了发送大规模 TCP 数据的开销。此功能可以通过 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 中的参数 `tso` 和 `-tso` 按每个接口启用或禁用。目前，支持 TSO 的网络接口和驱动程序包括 [em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)、[mxge(4)](http://www.freebsd.org/cgi/man.cgi?query=mxge\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 和 [cxgb(4)](http://www.freebsd.org/cgi/man.cgi?query=cxgb\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)。

FreeBSD 现在支持 TCP 套接字缓冲区的自动调整大小。这允许套接字缓冲区大小根据网络条件动态调整，而不是静态设置。可以通过 sysctl 变量 `net.inet.tcp.sendbuf_*` 和 `net.inet.tcp.recvbuf_*` 控制此功能的行为。

已新增 sysctl 变量 `net.link.tap.up_on_open` 到 [tap(4)](http://www.freebsd.org/cgi/man.cgi?query=tap\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动程序中。如果启用，新创建的 tap 设备将在创建时被标记为启用。\[已合并]

#### 2.2.4 磁盘和存储

[aac(4)](http://www.freebsd.org/cgi/man.cgi?query=aac\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在支持一些惠普机器中的 Adaptec 2610SA SATA-RAID 控制器。

[ahc(4)](http://www.freebsd.org/cgi/man.cgi?query=ahc\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在是 MPSAFE。

[ahd(4)](http://www.freebsd.org/cgi/man.cgi?query=ahd\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在是 MPSAFE。

CAM 子系统现在是 MPSAFE。

[ciss(4)](http://www.freebsd.org/cgi/man.cgi?query=ciss\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在是 MPSAFE。

新增了 `GEOM_JOURNAL` 类，已新增到 GEOM 存储转换系统中。它支持块级日志操作，文件系统模块可以使用它执行文件系统日志记录，并保持文件系统的一致状态。（目前仅支持 UFS 文件系统。）其操作可以使用 [gjournal(8)](http://www.freebsd.org/cgi/man.cgi?query=gjournal\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具进行控制。

新增了 `GEOM_MULTIPATH` 类，用于支持多路径访问磁盘设备。新增了 [gmultipath(8)](http://www.freebsd.org/cgi/man.cgi?query=gmultipath\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具，用于控制使用此功能的磁盘设备的行为。

新增了 `GEOM_VIRSTOR` 类，用于提供大小任意的虚拟存储设备，物理设备作为备份存储。更多信息可以在其控制工具 [gvirstor(8)](http://www.freebsd.org/cgi/man.cgi?query=gvirstor\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 的手册页中找到。

为一致性起见，GEOM 类内核模块 `g_md.ko` 已重命名为 `geom_md.ko`。

\[amd64, i386] 新增了 [hptiop(4)](http://www.freebsd.org/cgi/man.cgi?query=hptiop\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动。它支持 Highpoint RocketRAID 3xxx 和 4xxx 系列的 SAS 和 SATA RAID 控制器。

\[amd64, i386] 新增了 [hptrr(4)](http://www.freebsd.org/cgi/man.cgi?query=hptrr\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，用于支持多个 HighPoint RocketRAID 控制器（更多细节请参见手册页）。\[已合并]

\[amd64, i386] 新增了 [hptmv(4)](http://www.freebsd.org/cgi/man.cgi?query=hptmv\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，并且现在支持 amd64 和 PAE。

[isp(4)](http://www.freebsd.org/cgi/man.cgi?query=isp\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在是 MPSAFE。

已更新 [mpt(4)](http://www.freebsd.org/cgi/man.cgi?query=mpt\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动，支持多项新功能，如 RAID 卷和 RAID 成员状态/设置报告、定期卷重新同步状态报告、以及卷重新同步速率、卷成员写缓存状态和卷事务队列深度的 sysctl 变量。\[已合并]

[mpt(4)](http://www.freebsd.org/cgi/man.cgi?query=mpt\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在支持 SAS HBA（部分支持）、64 位 PCI 和大数据传输。\[已合并]

[mpt(4)](http://www.freebsd.org/cgi/man.cgi?query=mpt\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在是 MPSAFE。

rr232x(4) 驱动在某些旧版本的 FreeBSD 中出现，现已不再支持，并已被 [hptrr(4)](http://www.freebsd.org/cgi/man.cgi?query=hptrr\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动替代。应 Highpoint 的要求，已移除 rr232x(4) 驱动。\[已合并]

[twa(4)](http://www.freebsd.org/cgi/man.cgi?query=twa\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动已更新到 3.70.03.007 版本，现已支持 AMCC 的 3ware 9650 系列 SATA 控制器。\[已合并]

[iscsi\_initiator(4)](http://www.freebsd.org/cgi/man.cgi?query=iscsi_initiator\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动是一个用于互联网 SCSI（iSCSI）协议的内核驱动。该驱动允许通过 TCP/IP 网络访问远程 SCSI 设备。[iscontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=iscontrol\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 用户工具用于控制该驱动的操作。

scsi\_sg 驱动模拟了 Linux SCSI SG 直通设备 API 的重要子集，现已新增。它旨在允许在 Linux 仿真下运行的程序（以及本地 FreeBSD 应用程序）访问 Linux 支持的 `/dev/sg*` 设备。\[已合并]

[umass(4)](http://www.freebsd.org/cgi/man.cgi?query=umass\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 驱动现在支持 `PLAY_MSF`、`PLAY_TRACK`、`PLAY_TRACK_REL`、`PAUSE`、`PLAY_12` 命令，以便 [cdcontrol(1)](http://www.freebsd.org/cgi/man.cgi?query=cdcontrol\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 工具能够处理 USB CD 驱动器。

#### 2.2.5 文件系统

FreeBSD NFS 子系统的一部分（与协议栈和回调函数的接口，即 NFS 客户端部分）现在是 MPSAFE。

伪文件系统 [pseudofs(9)](http://www.freebsd.org/cgi/man.cgi?query=pseudofs\&sektion=9\&manpath=FreeBSD+7.0-RELEASE) 构建工具包及其所有使用者（[procfs(5)](http://www.freebsd.org/cgi/man.cgi?query=procfs\&sektion=5\&manpath=FreeBSD+7.0-RELEASE)，[linprocfs(5)](http://www.freebsd.org/cgi/man.cgi?query=linprocfs\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 和 [linsysfs(5)](http://www.freebsd.org/cgi/man.cgi?query=linsysfs\&sektion=5\&manpath=FreeBSD+7.0-RELEASE)）现在是 MPSAFE。

\[amd64, i386] 已新增对 TMPFS 文件系统的实验性支持。TMPFS 是一个高效的内存文件系统，最初为 NetBSD 项目在谷歌编程之夏中开发。更多信息请参见 [tmpfs(5)](http://www.freebsd.org/cgi/man.cgi?query=tmpfs\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 手册页。

unionfs 文件系统已重新实现。与以前的实现相比，这个版本解决了许多崩溃和锁定问题。它还增加了新的“透明”和“伪装”模式，用于在联合文件系统的上层自动创建文件。更多信息请参见 [mount\_unionfs(8)](http://www.freebsd.org/cgi/man.cgi?query=mount_unionfs\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 手册页。 \[已合并]

\[amd64, i386, pc98] 已新增对 Sun 的 ZFS 的支持。有关此文件系统的更多信息，请参见 [zfs(8)](http://www.freebsd.org/cgi/man.cgi?query=zfs\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 手册页或 [OpenSolaris ZFS 页面](http://www.opensolaris.org/os/community/zfs/)。

已新增对 SGI 的 XFS 文件系统的初步（只读）支持。

### 2.3 用户空间变化

原本由 INRIA IPv6 实现引入的 `addr2ascii()` 和 `ascii2addr()` 库调用已从 libc 中移除，因为 FreeBSD 基本系统中没有使用者。在相关的变更中，已为 [getnameinfo(3)](http://www.freebsd.org/cgi/man.cgi?query=getnameinfo\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 添加了对 `AF_LINK` 地址的支持。

在 `struct addrinfo` 中移除了 `ai_addrlen` 的填充，这是为了兼容 ABI。例如，这一变更打破了在 64 位架构（包括 FreeBSD/amd64、FreeBSD/ia64 和 FreeBSD/sparc64）上对 [getaddrinfo(3)](http://www.freebsd.org/cgi/man.cgi?query=getaddrinfo\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 函数的 ABI 兼容性。

[atrun(8)](http://www.freebsd.org/cgi/man.cgi?query=atrun\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现在支持 PAM。在运行用户账户的作业之前，它将检查账户状态，如果账户不可用，则拒绝运行该作业。默认情况下，不可用账户的定义包括那些已过期或使用 [pw(8)](http://www.freebsd.org/cgi/man.cgi?query=pw\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 被管理员锁定的账户。

[camcontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=camcontrol\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现在支持 readcap 命令来显示设备的大小。 \[已合并]

[cron(8)](http://www.freebsd.org/cgi/man.cgi?query=cron\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 守护进程现在支持 PAM。在从账户的私人 [crontab(5)](http://www.freebsd.org/cgi/man.cgi?query=crontab\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 文件运行命令之前，它将通过 PAM 检查账户状态，如果账户不可用，则跳过该命令。在默认情况下，不可用账户的定义包括那些已过期或使用 [pw(8)](http://www.freebsd.org/cgi/man.cgi?query=pw\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 被管理员锁定的账户。此外，如果存在 [nologin(5)](http://www.freebsd.org/cgi/man.cgi?query=nologin\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 文件，[cron(8)](http://www.freebsd.org/cgi/man.cgi?query=cron\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 将跳过来自私人 [crontab(5)](http://www.freebsd.org/cgi/man.cgi?query=crontab\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 文件的命令，除非 [crontab(5)](http://www.freebsd.org/cgi/man.cgi?query=crontab\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 所有者的登录类不受 [nologin(5)](http://www.freebsd.org/cgi/man.cgi?query=nologin\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 限制。来自系统文件 `/etc/crontab` 的命令不受 PAM 检查的影响。

[dhclient(8)](http://www.freebsd.org/cgi/man.cgi?query=dhclient\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 程序现在支持 RFC 3442 中描述的无类静态路由选项。

[dump(8)](http://www.freebsd.org/cgi/man.cgi?query=dump\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 和 [restore(8)](http://www.freebsd.org/cgi/man.cgi?query=restore\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 程序现在会尝试保存和恢复文件的扩展属性信息。

已新增实现 SVR4 [elf(3)](http://www.freebsd.org/cgi/man.cgi?query=elf\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) / [gelf(3)](http://www.freebsd.org/cgi/man.cgi?query=gelf\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) API 的 **libelf** 库，用于操作 ELF 文件。

[fdisk(8)](http://www.freebsd.org/cgi/man.cgi?query=fdisk\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 程序现在支持 `-p` 参数，以打印 fdisk 配置格式的分区表。 \[已合并]

[finger(1)](http://www.freebsd.org/cgi/man.cgi?query=finger\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 中的 T/TCP 支持（以及用于启用它的 `-T` 参数）已被移除。

已修复 [find(1)](http://www.freebsd.org/cgi/man.cgi?query=find\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 程序中的一个错误，导致 `-user` 和 `-group` 的数值参数未按预期工作。

[freebsd-update(8)](http://www.freebsd.org/cgi/man.cgi?query=freebsd-update\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 命令现在支持升级命令，可执行不同版本的 FreeBSD 之间的二进制升级。 \[已合并]

[ftpd(8)](http://www.freebsd.org/cgi/man.cgi?query=ftpd\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现在支持 RFC2389（FEAT）和基本支持 RFC2640（UTF8）。RFC2640 支持是可选的，可以使用新的 `-8` 参数启用。更多信息请参见 [ftpd(8)](http://www.freebsd.org/cgi/man.cgi?query=ftpd\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 手册页。 \[已合并]

[gcc(1)](http://www.freebsd.org/cgi/man.cgi?query=gcc\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 的 SSP（栈溢出保护）支持现在默认启用。

[gbde(8)](http://www.freebsd.org/cgi/man.cgi?query=gbde\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现在支持 `-k` 和 `-K` 选项，用于指定密钥文件，除了密码短语之外。

[gpt(8)](http://www.freebsd.org/cgi/man.cgi?query=gpt\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现在能设置 GPT 分区标签。

[gvinum(8)](http://www.freebsd.org/cgi/man.cgi?query=gvinum\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现在支持子命令 `resetconfig`。

已新增通用安全服务 API（GSS-API）版本 2 的实现及其 C 绑定，描述见 RFC2743 和 RFC2744。这是一个新的可扩展 GSS-API 层，可以支持 GSS-API 插件，类似于 Solaris 实现，Kerberos 5 GSS 机制已作为插件库重写，以适应新实现。

[hccontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=hccontrol\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现支持 HCI 节点自动检测。

[id(1)](http://www.freebsd.org/cgi/man.cgi?query=id\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 工具现输出有效的用户 ID，紧随其后的是组 ID。

已新增 [ipfwpcap(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfwpcap\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具，捕获 [divert(4)](http://www.freebsd.org/cgi/man.cgi?query=divert\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 套接字上的数据包，并将其写入为 [pcap(3)](http://www.freebsd.org/cgi/man.cgi?query=pcap\&sektion=3\&manpath=FreeBSD+7.0-RELEASE)（也称为 [tcpdump(1)](http://www.freebsd.org/cgi/man.cgi?query=tcpdump\&sektion=1\&manpath=FreeBSD+7.0-RELEASE)）格式数据文件或管道。 \[已合并]

[kdump(1)](http://www.freebsd.org/cgi/man.cgi?query=kdump\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 程序现支持使用符号名称打印系统调用参数中的参数。

[kenv(1)](http://www.freebsd.org/cgi/man.cgi?query=kenv\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 工具现支持 `-q` 参数，用于抑制警告。

[kgdb(1)](http://www.freebsd.org/cgi/man.cgi?query=kgdb\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 现支持 `-w` 选项，以读取写模式打开基于 kmem 的目标。这使得可以使用 kgdb 在 `/dev/mem` 上操作，并能够在实时系统上修补内存。

[libarchive(3)](http://www.freebsd.org/cgi/man.cgi?query=libarchive\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 库现支持 POSIX.1e 风格的扩展属性。

[libarchive(3)](http://www.freebsd.org/cgi/man.cgi?query=libarchive\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 库现包含了对 [ar(1)](http://www.freebsd.org/cgi/man.cgi?query=ar\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 风格归档的支持。

**libc** 库现包括符号映射和符号版本定义的初步实现。

**libedit** 库自 2005 年 8 月起已从 NetBSD 源树更新。

**libm** 库现包括符号映射和符号版本定义的初步实现。

引入了新的 [malloc(3)](http://www.freebsd.org/cgi/man.cgi?query=malloc\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 实现。该实现有时被称为“jemalloc”，旨在提高多线程程序的性能，尤其是在 SMP 系统上，同时保持单线程程序的性能。由于使用了不同的算法和数据结构，jemalloc 可能会暴露出一些以前未发现的用户空间代码错误，尽管 FreeBSD 基本系统和常见 Port 已进行测试/修复。请注意，jemalloc 使用 [mmap(2)](http://www.freebsd.org/cgi/man.cgi?query=mmap\&sektion=2\&manpath=FreeBSD+7.0-RELEASE) 获取内存，仅在有限的情况下（并且仅对 32 位架构）使用 [sbrk(2)](http://www.freebsd.org/cgi/man.cgi?query=sbrk\&sektion=2\&manpath=FreeBSD+7.0-RELEASE)。因此，数据大小资源限制对典型应用程序的影响较小。然而，vmemoryuse 资源限制可用于限制进程使用的总虚拟内存，具体说明请参见 [limits(1)](http://www.freebsd.org/cgi/man.cgi?query=limits\&sektion=1\&manpath=FreeBSD+7.0-RELEASE)。

[mdconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=mdconfig\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现支持以 XML 格式生成设备列表。当前，子命令 `list` 和 `query` 支持此功能。

[mdconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=mdconfig\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具的 `-u` 选项现支持指定多个由逗号分隔的设备。

[mdmfs(8)](http://www.freebsd.org/cgi/man.cgi?query=mdmfs\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现支持 `-P` 参数，以允许在使用 vnode 支持的磁盘时跳过 [newfs(8)](http://www.freebsd.org/cgi/man.cgi?query=newfs\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 过程。

[mdmfs(8)](http://www.freebsd.org/cgi/man.cgi?query=mdmfs\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现支持 `-E` 参数，以允许指定 [mdconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=mdconfig\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具的位置，而不是使用默认位置（`/sbin/mdconfig`）。

引入了新的 [memmem(3)](http://www.freebsd.org/cgi/man.cgi?query=memmem\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 函数，这是 [glibc](http://www.freebsd.org/cgi/man.cgi?query=strstr\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 中的 [strstr(3)](http://www.freebsd.org/cgi/man.cgi?query=strstr\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 的二进制等价物。

已移除 [mount(8)](http://www.freebsd.org/cgi/man.cgi?query=mount\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 的选项 `dev` 和 `nodev`。

[mount(8)](http://www.freebsd.org/cgi/man.cgi?query=mount\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现支持 [mqueuefs(5)](http://www.freebsd.org/cgi/man.cgi?query=mqueuefs\&sektion=5\&manpath=FreeBSD+7.0-RELEASE)。

已修复一个错误，该错误导致 [mount(8)](http://www.freebsd.org/cgi/man.cgi?query=mount\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具无法通过 `mount -u -o rw` 命令将只读挂载转换为读写模式。

已移除多个特定文件系统的 `mount_*` 命令，代之以支持 `-t` 选项的更通用的 [mount(8)](http://www.freebsd.org/cgi/man.cgi?query=mount\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 命令。具体包括：`mount_devfs`、`mount_ext2fs`、`mount_fdescfs`、`mount_linprocfs`、`mount_procfs`、`mount_std`、`mount_linsysfs`、`mount_reiserfs` 和 `mount_umapfs`。

已从 FreeBSD 基本系统中移除多播路由守护进程 mrouted(8)。它实现了 DVMRP 多播路由协议，许多多播安装已被 PIM 替代。也移除了相关工具 map-mbone(8) 和 mrinfo(8)。这些程序现在可以在 FreeBSD Ports 中作为 [net/mrouted](http://www.freebsd.org/cgi/url.cgi?ports/net/mrouted/pkg-descr) 使用。

[netstat(1)](http://www.freebsd.org/cgi/man.cgi?query=netstat\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 工具现在支持打印 [sctp(4)](http://www.freebsd.org/cgi/man.cgi?query=sctp\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 协议统计信息。

现在静态安装文件 `/etc/nsswitch.conf`，而不是在每次重启时生成。

已移除工具 objformat(1) 和库 getobjformat(3)（a.out 对象文件支持的最后遗留部分）。

[pam\_nologin(8)](http://www.freebsd.org/cgi/man.cgi?query=pam_nologin\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 模块不再提供身份验证功能；现在它提供帐户管理功能。`/usr/local/etc/pam.d` 中的第三方文件可能需要手动编辑；特别是，这些文件中以下形式的行：

```sh
auth    required        pam_nologin.so  no_warn
```

这些行需要将 `auth` 替换为 `account`。

已新增 [nscd(8)](http://www.freebsd.org/cgi/man.cgi?query=nscd\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 。它是一个守护进程，缓存 nsswitch 查找结果（例如对密码、组和服务数据库的查询），以提高性能。

[pkill(1)](http://www.freebsd.org/cgi/man.cgi?query=pkill\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 工具现在支持 `-F` 选项，允许限制匹配进程的 PID 存储在 pidfile 文件中。当指定另一个新选项 `-L` 时，pidfile 文件必须通过 [flock(2)](http://www.freebsd.org/cgi/man.cgi?query=flock\&sektion=2\&manpath=FreeBSD+7.0-RELEASE) 系统调用加锁或通过 [pidfile(3)](http://www.freebsd.org/cgi/man.cgi?query=pidfile\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 创建。

[pkill(1)](http://www.freebsd.org/cgi/man.cgi?query=pkill\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 工具现在支持 `-I` 参数，类似于 [rm(1)](http://www.freebsd.org/cgi/man.cgi?query=rm\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 的 `-i` 选项。当指定此参数时，[pkill(1)](http://www.freebsd.org/cgi/man.cgi?query=pkill\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 会在向每个匹配进程发送信号之前请求确认。

[pmcstat(8)](http://www.freebsd.org/cgi/man.cgi?query=pmcstat\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 程序已进行了多项增强：现在可以通过网络套接字记录到远程主机。`-c` 现在接受逗号分隔的 CPU 列表来配置 PMC 分配。`-t` 选项已增强，支持使用正则表达式根据命令名选择进程。[pmcstat(8)](http://www.freebsd.org/cgi/man.cgi?query=pmcstat\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 现在默认在所有 CPU 上分配系统 PMC，而不仅仅是 CPU 0。

[powerd(8)](http://www.freebsd.org/cgi/man.cgi?query=powerd\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 程序现在支持 `-P` 选项，用于指定要使用的 `pidfile`。

[pw(8)](http://www.freebsd.org/cgi/man.cgi?query=pw\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 程序现在支持 `-M` 选项，用于设置用户新创建的主目录的权限。\[已合并]

FreeBSD **libc** 中的 DNS 解析库已更新为 BIND 9.4.1。

[rpcbind(8)](http://www.freebsd.org/cgi/man.cgi?query=rpcbind\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 程序现在可以使用 `-h` 选项将其 TCP 监听套接字绑定到除了 `INADDR_ANY` 以外的 IP 地址。新的 `-6` 选项允许它仅绑定到 IPv6 地址。

[rpcgen(1)](http://www.freebsd.org/cgi/man.cgi?query=rpcgen\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 工具现在默认生成可以与 ANSI C 编译器一起使用的头文件和存根文件。

[rpc.lockd(8)](http://www.freebsd.org/cgi/man.cgi?query=rpc.lockd\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 和 [rpc.statd(8)](http://www.freebsd.org/cgi/man.cgi?query=rpc.statd\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 程序现在接受 `-p` 选项，指示它们应绑定到哪个端口。\[已合并]

[rtld(1)](http://www.freebsd.org/cgi/man.cgi?query=rtld\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 运行时链接器现在支持使用 GNU 语义的 ELF 符号版本控制。此实现旨在与 GNU libc 实现的符号版本控制支持兼容，具体信息请参见 <http://people.redhat.com/~drepper/symbol-versioning> 和 LSB 3.0。此外，添加了 `dlvsym()` 函数，允许查找给定符号的特定版本。

[sa(8)](http://www.freebsd.org/cgi/man.cgi?query=sa\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具现在支持参数 `-U` 和 `-P`。可以使用它们分别指定每个用户和每个进程的摘要文件位置。

[sade(8)](http://www.freebsd.org/cgi/man.cgi?query=sade\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 磁盘分区和标签工具已新增。该工具基于 [sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 的分区编辑部分。

修复了 [sed(1)](http://www.freebsd.org/cgi/man.cgi?query=sed\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 工具中的一个 bug，该 bug 可能导致在某些情况下模式空间长度计算错误。

[sed(1)](http://www.freebsd.org/cgi/man.cgi?query=sed\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 工具现在支持不区分大小写的模式匹配；此功能可以通过在正则表达式的结束分隔符后使用 `I` 参数启用。

[setenv(3)](http://www.freebsd.org/cgi/man.cgi?query=setenv\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 系列库调用的行为已从历史的 BSD API 变更为 POSIX 强制的行为。因此，依赖于旧 API 的几个基本系统工具已更新以跟踪此变更。

[setfacl(1)](http://www.freebsd.org/cgi/man.cgi?query=setfacl\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 的 `-h` 参数现在正确设置符号链接上的 ACL，而不是链接目标。

[sockstat(1)](http://www.freebsd.org/cgi/man.cgi?query=sockstat\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 实用程序，显示连接和监听的网络套接字，现在支持一个新的 `-P` 命令行选项，用于通过协议名称（如 [protocols(5)](http://www.freebsd.org/cgi/man.cgi?query=protocols\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 中列出的协议）过滤显示的套接字。

[sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 实用程序现在支持 `-q` 参数，以抑制一组有限的警告和错误。

已移除 FreeBSD 基本系统中的 tcpslice，因为它已过时。可以在 Ports 中找到更新的版本，路径为 [net/tcpslice](http://www.freebsd.org/cgi/url.cgi?ports/net/tcpslice/pkg-descr)。

[time(1)](http://www.freebsd.org/cgi/man.cgi?query=time\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 实用程序现在如果收到 SIGINFO 信号，会打印出给定命令的运行时间。

[top(1)](http://www.freebsd.org/cgi/man.cgi?query=top\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 程序现在支持 `-a` 参数，以显示进程标题及其参数向量；此功能对监控通过 [setproctitle(3)](http://www.freebsd.org/cgi/man.cgi?query=setproctitle\&sektion=3\&manpath=FreeBSD+7.0-RELEASE) 变更标题的进程非常有用。

[top(1)](http://www.freebsd.org/cgi/man.cgi?query=top\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 程序现在支持 `-j` 参数，显示每个进程的 [jail(8)](http://www.freebsd.org/cgi/man.cgi?query=jail\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) ID。 \[已合并]

[touch(1)](http://www.freebsd.org/cgi/man.cgi?query=touch\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 实用程序现在支持 `-A` 参数，可以通过指定的值调整文件的访问和修改时间。 \[已合并]

[truss(1)](http://www.freebsd.org/cgi/man.cgi?query=truss\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 实用程序现在支持 `-s` 参数，功能与 `strace` 实用程序 ([devel/strace](http://www.freebsd.org/cgi/url.cgi?ports/devel/strace/pkg-descr)) 相同。

[truss(1)](http://www.freebsd.org/cgi/man.cgi?query=truss\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 实用程序不再依赖 [procfs(5)](http://www.freebsd.org/cgi/man.cgi?query=procfs\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 文件系统；它改用 [ptrace(2)](http://www.freebsd.org/cgi/man.cgi?query=ptrace\&sektion=2\&manpath=FreeBSD+7.0-RELEASE) 接口来控制被追踪的进程。

\[powerpc] [truss(1)](http://www.freebsd.org/cgi/man.cgi?query=truss\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 实用程序现在支持 FreeBSD/powerpc。

已移除 usbd(8) 实用程序。 [devd(8)](http://www.freebsd.org/cgi/man.cgi?query=devd\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 实用程序及其配置文件现在支持与其等效的功能。

[uuidgen(1)](http://www.freebsd.org/cgi/man.cgi?query=uuidgen\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 实用程序已从 `/usr/bin` 移至 `/bin`。

早已被 [mdconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=mdconfig\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 取代的 vnconfig(8) 实用程序已被移除。

已移除实用程序 wicontrol(8) 。[wi(4)](http://www.freebsd.org/cgi/man.cgi?query=wi\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 接口的配置功能应通过 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 完成。

所有库的共享库版本号已更新，因为可能存在 ABI 变更。包括：`snmp_*`，libdialog，libg2c，libobjc，libreadline，libregex，libstdc++，libkrb5，libalias，libarchive，libbegemot，libbluetooth，libbsnmp，libbz2，libc\_r，libcrypt，libdevstat，libedit，libexpat，libfetch，libftpio，libgpib，libipsec，libkiconv，libmagic，libmp，libncp，libncurses，libnetgraph，libngatm，libopie，libpam，libpthread，libradius，libsdp，libsmb，libtacplus，libthr，libthread\_db，libugidfw，libusbhid，libutil，libvgl，libwrap，libypclnt，libm，libcrypto，libssh 和 libssl。

已实现 `wcsdup()` 函数。此函数在微软和 GNU 系统中广泛使用。

已添加 [wlandebug(8)](http://www.freebsd.org/cgi/man.cgi?query=wlandebug\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 实用程序到 FreeBSD 主源代码树中（之前位于工具区域）。它提供了对 [wlan(4)](http://www.freebsd.org/cgi/man.cgi?query=wlan\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 模块及相关驱动程序中多种调试输出类型的控制，有助于调试无线问题。

已添加 [wpa\_passphrase(8)](http://www.freebsd.org/cgi/man.cgi?query=wpa_passphrase\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 实用程序。它从 ASCII 密码短语生成一个 256 位的预共享 WPA 密钥。 \[已合并]

#### 2.3.1 `/etc/rc.d` 脚本

已新增独立 [ftpd(8)](http://www.freebsd.org/cgi/man.cgi?query=ftpd\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 的 ftpd 脚本。

已移除脚本 `gbde_swap`，取而代之的是新的脚本 `encswap`，后者还支持 [geli(8)](http://www.freebsd.org/cgi/man.cgi?query=geli\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 进行交换加密。

已新增 geli 和 geli2 脚本，用于在启动时配置 [geli(8)](http://www.freebsd.org/cgi/man.cgi?query=geli\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 设备。

已移除 IPsec IKE 守护进程的 ike 脚本，因为基本系统中不包含该守护进程。

已新增 mdconfig 脚本，用于处理由 vnode 支持的 [md(4)](http://www.freebsd.org/cgi/man.cgi?query=md\&sektion=4\&manpath=FreeBSD+7.0-RELEASE) 设备。这是 ramdisk 脚本的替代，所有 `ramdisk_*` 变量已改为 `mdconfig_*`。此外，还添加了两个新的 [rc.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=rc.conf\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 变量 `mdconfig_*_files` 和 `mdconfig_*_cmd`。例如：

```sh
mdconfig_md0="-t malloc -s 10m"
mdconfig_md1="-t vnode -f /var/foo.img"
```

已移除 `/etc/rc.d` 中的 `rcconf.sh` 脚本，并添加了变量 `early_late_divider`，用于指定脚本以分隔启动过程的早期和后期阶段。

`rc.initdiskless` 脚本现在使用 [tar(1)](http://www.freebsd.org/cgi/man.cgi?query=tar\&sektion=1\&manpath=FreeBSD+7.0-RELEASE)，而不是 [pax(1)](http://www.freebsd.org/cgi/man.cgi?query=pax\&sektion=1\&manpath=FreeBSD+7.0-RELEASE)，因为 [pax(1)](http://www.freebsd.org/cgi/man.cgi?query=pax\&sektion=1\&manpath=FreeBSD+7.0-RELEASE) 需要一个可写的临时目录，而该目录在此脚本运行时可能不可用。

已移除 pccard 脚本，因为 OLDCARD 已弃用。

sendmail 脚本不再重建别名数据库，如果别名数据库缺失或比别名文件旧。 \[已合并] 如果需要，请设置新的 rc.conf 选项 `sendmail_rebuild_aliases` 为 `"YES"` 来恢复该功能。

已移除 `removable_interfaces` 变量。

新增了关键字 NOAUTO，适用于 `ifconfig_ifn`。这可以防止在启动时或通过配置接口 `/etc/pccard_ether`，并允许使用 `/etc/rc.d/netif` 来手动启动和停止接口。

已弃用脚本 `/etc/rc.d/nfslocking`，并将在未来的版本中移除。它已被脚本 `/etc/rc.d/lockd` 和 `/etc/rc.d/statd` 取代。 \[已合并]

### 2.4 第三方软件

**Intel ACPI-CA** 已更新至 20070320。

**awk** 已从 2005 年 4 月 24 日的版本更新至 2007 年 5 月 1 日的版本。 \[已合并]

**BIND** 已从 9.3.3 更新至 9.4.2。

**BSNMPD** 已从 1.11 更新至 1.12。

**BZIP2** 已从 1.0.3 更新至 1.0.4。 \[已合并]

GNU **Diffutils** 已从 2.7 更新至 2.8.7。 \[已合并]

**DRM** 已更新为 2006 年 5 月 17 日的 DRI CVS 快照。 \[已合并]

启动加载器中使用的 Forth Inspired Command Language (**FICL**) 已更新至 3.03。

**FILE** 已从 4.12 更新至 4.23。

**GCC** 已从 3.4.6 更新至 4.2.1。

**GNU Readline 库** 已从 5.0 更新至 5.2 修补版 2。 \[已合并]

GNU 版本的 **gzip** 已被替换为从 NetBSD 移植的修改版 gzip。 \[已合并]

**IPFilter** 已从 4.1.13 更新至 4.1.28。 \[已合并]

**less** 已从 v394 更新至 v416。 \[已合并]

**libpcap** 已从 0.9.4 更新至 0.9.8。

**netcat** 已从 OpenBSD 3.9 中包含的版本更新至 OpenBSD 4.1 中包含的版本。 \[已合并]

**OpenSSL** 已从 0.9.7e 更新至 0.9.8e。

**ncurses** 已从 5.2-20020615 更新至 5.6-20061217。ncurses 现在还支持宽字符。 \[已合并]

**hostapd** 已从 0.3.9 更新至 0.5.8。

**PF** 已从 OpenBSD 3.7 更新至 OpenBSD 4.1。此更新包括多个功能增强。两个显著变化是：`keep state` 现在是 [pf.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=pf.conf\&sektion=5\&manpath=FreeBSD+7.0-RELEASE) 规则的默认行为，以及 TCP 规则的默认参数设置为 S/SA。可以使用选项 `no state` 和 `flags any` 来禁用有状态过滤或 TCP 参数检查。

**sendmail** 已从 8.13.8 更新至 8.14.2。 \[已合并]

**tcpdump** 已从 3.9.4 更新至 3.9.8。

时区数据库已从 **tzdata2006g** 版本更新至 **tzdata2007k** 版本。 \[已合并]

**tip** 已更新为 OpenBSD 2006 年 8 月 31 日的快照。

TrustedBSD **OpenBSM** 已从版本 1.0 alpha 12 更新至版本 1.0。

**WPA Supplicant** 已从 0.3.9 更新至 0.5.8。

### 2.5 Ports/软件包

### 2.6 版本工程与集成

[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 工具的默认分区大小算法已被变更。

* **当磁盘容量大于 (3 \* 内存大小 + 10GB) 时，默认分区大小如下：**

  | 分区     | 大小             |
  | ------ | -------------- |
  | `swap` | 内存大小 \* 2      |
  | `/`    | 512 MB         |
  | `/tmp` | 512 MB         |
  | `/var` | 1024 MB + 内存大小 |
  | `/usr` | 剩余空间 (至少 8GB)  |
* **当磁盘容量大于 (内存大小 / 8 + 2GB) 时，默认分区大小将在以下范围内按比例分配：**

  | 分区     | 大小                    |
  | ------ | --------------------- |
  | `swap` | 从内存大小 / 8 到 内存大小 \* 2 |
  | `/`    | 从 256MB 到 512MB       |
  | `/tmp` | 从 128MB 到 512MB       |
  | `/var` | 从 128MB 到 1024MB      |
  | `/usr` | 从 1536MB 到 8192MB     |
* **对于磁盘空间更少的系统，现有行为保持不变。**

在 `src/Makefile` 中新增了 `showconfig` 目标，用于显示 FreeBSD 源代码树的构建配置。

新增了 `src.conf` 文件，该文件包含适用于每次构建 FreeBSD 源代码树的设置。详情请参阅 [build(7)](http://www.freebsd.org/cgi/man.cgi?query=build\&sektion=7\&manpath=FreeBSD+7.0-RELEASE) 和 [src.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=src.conf\&sektion=5\&manpath=FreeBSD+7.0-RELEASE)。

**GNOME** 桌面环境 ([x11/gnome2](http://www.freebsd.org/cgi/url.cgi?ports/x11/gnome2/pkg-descr)) 的受支持版本已从 2.16.1 更新至 2.20.1。 \[已合并]

**KDE** 桌面环境 ([x11/kde3](http://www.freebsd.org/cgi/url.cgi?ports/x11/kde3/pkg-descr)) 的受支持版本已从 3.5.4 更新至 3.5.7。 \[已合并]

**Xorg** 窗口系统 ([x11/xorg](http://www.freebsd.org/cgi/url.cgi?ports/x11/xorg/pkg-descr)) 的受支持版本已从 6.9.0 更新至 7.3.0。 \[已合并]

`X11BASE` 的默认值已从 `/usr/X11R6` 变更为 `/usr/local`，即 `LOCALBASE` 的默认值。 \[已合并]

FreeBSD 的 ISO 镜像现已调整为适配 700MB CDROM 媒介。此前大多数版本的 FreeBSD 假设 CDROM 容量为 650MB。 \[已合并]

### 2.7 文档

以下手册页面的添加改进了现有功能的文档：\
[acpi\_sony(4)](http://www.freebsd.org/cgi/man.cgi?query=acpi_sony\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)、[device\_get\_sysctl(9)](http://www.freebsd.org/cgi/man.cgi?query=device_get_sysctl\&sektion=9\&manpath=FreeBSD+7.0-RELEASE)、[ext2fs(5)](http://www.freebsd.org/cgi/man.cgi?query=ext2fs\&sektion=5\&manpath=FreeBSD+7.0-RELEASE)、[mca(8)](http://www.freebsd.org/cgi/man.cgi?query=mca\&sektion=8\&manpath=FreeBSD+7.0-RELEASE)、[nanobsd(8)](http://www.freebsd.org/cgi/man.cgi?query=nanobsd\&sektion=8\&manpath=FreeBSD+7.0-RELEASE)、[snd\_mss(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_mss\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)、[snd\_t4dwave(4)](http://www.freebsd.org/cgi/man.cgi?query=snd_t4dwave\&sektion=4\&manpath=FreeBSD+7.0-RELEASE)、[sysctl(9)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=9\&manpath=FreeBSD+7.0-RELEASE)。

内核子系统 API 文档生成框架的初步支持已新增至 `src/sys/doc/subsys`，使用 [devel/doxygen](http://www.freebsd.org/cgi/url.cgi?ports/devel/doxygen/pkg-descr)。要生成 API 文档，请在 `src/` 目录中输入 `make doxygen`。

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

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

另一种较旧的二进制升级方式是通过 CDROM 分发介质主菜单的 [sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+7.0-RELEASE) 中的选项 Upgrade。这种方法可能对非 i386、非 amd64 的机器或无互联网连接的系统有用。

基于源代码的升级（通过重新编译 FreeBSD 基本系统）也支持从先前版本升级，具体说明详见 `/usr/src/UPDATING`。

> **重要提示：**
>
> 在尝试升级 FreeBSD 之前，应备份 **所有** 数据和配置文件。

***

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

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

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

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