# FreeBSD 7.2-RELEASE 发行说明

### FreeBSD 项目组

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

$FreeBSD: releng/7.2/release/doc/zh_CN.GB2312/relnotes/article.sgml 191706 2009-04-30 21:39:56Z hrs $

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 是 Intel Corporation 及其分支机构在美国和其他国家的商标或注册商标。

Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media, 和 Windows NT 是 Microsoft Corporation 在美国和/或其他国家的商标或注册商标。

Sparc, Sparc64, SPARCEngine, 以及 UltraSPARC 是 SPARC International, Inc 在美国和其他国家的商标。 包含 SPARC 商标的产品基于 Sun Microsystems, Inc. 开发的架构。

许多制造商和经销商使用一些称为商标的图案或文字设计来彰显自己的产品。 本文档中出现的， 为 FreeBSD Project 所知晓的商标，后面将以 '™' 或 '®' 符号来标注。

这份 FreeBSD 7.2-RELEASE 的发行说明， 概括了 FreeBSD 基本系统在 7.2-STABLE 开发线上所做的改动。 本文档列举了自前一发行版本以来所有适用的安全公告， 以及对于 FreeBSD 内核以及系统附带的应用程序所做的重要修改。 对在升级时需要注意的一些问题， 也进行了简略的介绍。

## 1 介绍

这篇文档是 FreeBSD 7.2-RELEASE 的发行版说明。 它介绍了 FreeBSD 上最近新增、 变化或删除的功能。 此外， 它也对从较早版本的 FreeBSD 进行升级时需要注意的问题进行了说明。

这是一份 FreeBSD 7.2-RELEASE 的 release 发布包。 您可以从 ftp://ftp.FreeBSD.org/ 或其他镜像那里得到它的副本。 关于这个 (或其他) release 发布包的更多信息，可以在 FreeBSD 手册 中的 “如何获得 FreeBSD”附录 中找到。

我们建议所有的用户在开始安装 FreeBSD 之前首先参考与这一版本对应的勘误信息。 勘误文档将随时更新，以便为用户提供在发布工程后期或该版本发布之后 “新发现的” 问题和相关信息。 通常， 这包括已知的 bug、 安全公告， 以及对于文档的修订内容。 最新的 FreeBSD 7.2-RELEASE 勘误信息可以从 FreeBSD 网站获得。

## 2 最新变动

这一节描述了 FreeBSD 自 7.1-RELEASE 以来最明显的新功能和变化。

通常情况下， 发行版说明文档中会介绍自 7.1-RELEASE 以来所发布的安全公告、 新增的驱动或硬件支持、 新增的命令或选项、 重要的错误修补， 以及基本系统中来自第三方的软件升级。 重要的 ports 和 packages 变动， 或关于交付工程的变动也会在这份文档中体现。 显而易见地， 发行说明不可能涵盖 FreeBSD 版本之间的每一个微小变动； 这篇文档主要关注的，仍然是安全公告、 用户可以察觉的修改， 以及重要的架构性改良。

### 2.1 安全公告

这一版本中修正了下列安全公告所指明的问题。 如欲了解进一步的信息， 请参阅位于 http://security.FreeBSD.org/ 的完整安全公告内容。

公告 | 日期 | 主题
--- | --- | ---
SA-09:01.lukemftpd | 2009 年 01 月 07 日 | lukemftpd(8) 中的跨站请求伪造问题
SA-09:02.openssl | 2009 年 01 月 07 日 | OpenSSL 对格式不正确的签名检查存在问题
SA-09:03.ntpd | 2009 年 01 月 13 日 | ntpd 密码学签名绕过问题
SA-09:04.bind | 2009 年 01 月 13 日 | BIND DNSSEC 对格式不对的签名检查存在问题
SA-09:05.telnetd | 2009 年 01 月 13 日 | telnetd 任意代码执行问题
SA-09:06.ktimer | 2009 年 03 月 23 日 | 本地特权提升问题
SA-09:07.libc | 2009 年 04 月 04 日 | db(3) 中的信息泄露问题
SA-09:08.openssl | 2009 年 04 月 22 日 | OpenSSL 远程可触发的崩溃问题

### 2.2 对内核的改动

内核调试器 ddb(8) 新增了 `show mount` 子命令。

FreeBSD DTrace 子系统新增了对于进程执行的探测点 (probe) 支持。

[amd64] FreeBSD 内核虚拟地址空间增加到了 6GB。 这使得内核子系统能够用到更大的虚拟内存地址空间。 例如， zfs(8) 自适应替换快取缓存 (ARC) 需要使用大量的内核内存来缓存文件系统数据， 因而会受益于可用地址空间的增加。 请注意， 内核内存映射的尺寸上限是总量的 60% 而不是其全部。

对 jail(8) 子系统进行了更新。 变动包括：

- 支持在一个 jail 上指定多个 IPv4 及 IPv6 地址了。 此外， 还支持不在 jail 上配置任何 IP 地址， 这种配置基本上相当于可见进程受限且没有网络的 chroot 环境。

- 支持在 jail 中使用 SCTP ( sctp(4)) 和 IPv6 了。

- 实现了使用 cpuset(1) 来指定 CPU 绑定。 请注意目前的实现允许 jail 中的超级用户改变 CPU 绑定， 这一行为将在未来的版本中予以修正。

- 可以按指定的路由 FIB 启动 jail(8) 了。

- 为 ddb(8) 新增了 `show jails` 子命令。

- 新增了在 64-位 系统中使用 32-位 jail 工具管理 jail 的支持。

- jail(8) 中 `jail` 和 `prison` 的版本均进行了更新以支持这些新特性。

kld(4) 支持从内核模块为 FreeBSD 系统调用翻译层安装 32-位 系统调用了。

ktr(4) 新增了 `KTR_CALLOUT` class 的 KTR 跟踪点， 用以描述 callout 回调完成执行。

用以对已经分配的 System V 共享内存进行记账的变量由 `int` 改为了 `size_t`。 这使得在 64-位 硬件架构上使用超过 2 GB 的共享内存段成为可能。 请留意 shmctl(2) 中的 BUGS 部分， 以及 `/usr/src/UPDATING` 中的相关描述以了解这一临时解决方案的限制。

sysctl(3) 叶节点新增了一个表示其为 MPSAFE 的标志。

FreeBSD 32-位 系统调用翻译层新增了为 `VFS_AIO` 安装 32-位 系统调用的支持。

[amd64, i386] FreeBSD 虚拟内存子系统新增了针对应用程序的透明 superpages 支持； 应用程序的内存页会根据使用情况动态地升级为 superpage， 或反之降级为普通内存页， 而无须对程序代码进行任何修改。 这一变动在发挥现代处理器对大内存页支持的优势， 包括提高虚拟内存系统的空间效率， 以及降低 TLB (translation lookaside buffer， 快速页表转换缓冲) 未命中�象而改善性能的同时， 又避免了需要修改应用程序以及降低虚拟内存灵活性的缺点。 这一特性默认并不开启， 您可以通过将引导加载器变量 `vm.pmap.pg_ps_enabled` 设为 `1` 来启用它。

#### 2.2.1 引导加载器变动

boot(8) 新增了对某些版本 Windows® 放入 MBR 的 4-字节 卷 ID， 以及在一些支持的 BIOS 上通过按 F6 来启动 PXE 的支持。

[i386] 对 boot(8) BTX 加载器进行了改进。 这修正了一些较新的机器上 7.1-RELEASE 和较早版本 FreeBSD 会遇到的一些引导方面的问题。

loader(8) 可以在网络引导的过程通过 kenv(2) 变量来获得 DHCP 选项了。

修正了 loader(8) 的一个程序错误。 类似下面的配置可以正确工作了：

    loader_conf_files="foo bar ${variable}"

#### 2.2.2 硬件支持

[sparc64] FreeBSD 新增了对 Ultra SPARC III (Cheetah) 系列处理器的支持。

acpi(4) 子系统新增了一组 sysctl(8) 变量 `debug.batt.batt_sleep_ms`。 在使用智能电池的笔记本上， 启用电池监控软件会导致来自 atkbd(4) 的按键失灵。 这个 sysctl 变量在状态检查代码中增加了若干毫秒的延时， 以绕过这个问题。

acpi_asus(4) 驱动程序支持 Asus A8Sr 笔记本了。

[powerpc] 新增了对于 AltiVec， 一种浮点及整数 SIMD 指令集的支持。

新增了 cpuctl(4) 驱动程序， 它提供了与系统 CPU 之间的设备 `/dev/cpuctl` 作为接口。 新增的 cpuctl(4) 功能包括获取 CPUID 信息、 读写机器专用寄存器 (machine specific registers, MSR)， 以及更新 CPU 固件等。

cpufreq(4) 驱动新增了引导加载器变量 `hw.est.msr_info`。 当此变量设为 `1` 时， 驱动会尝试创建只包含最高和最低时钟频率的简单列表， 如果无法从 ACPI 或静态表中获得的话。 默认情况下不启用。

[amd64, i386] 当 TSC 是 P-状态 无关不变量时， CPU 频率变化通知会被禁止。 另外， 还增加了引导加载器变量 `kern.timecounter.invariant_tsc`， 当设为非零数值时， 表示强制这一行为。

atkbd(4) 驱动程序在轮询模式启用， 并调用键盘回调函数时， 会禁用中断处理程序。 这修正了在多 CPU 系统中， 当启用了 kbdmux(4) 时， 在 mountroot 提示符处出现重复或遗失击键的问题。

在 pci(4) 子系统中， 当启用 MSI/MSIX 时会禁用 INTx。 这一变动修正了一系列与中断风暴有关的问题。

[sparc64] 新增了用于支持 Schizo Fireplane/Safari to PCI 2.1 和 Tomatillo JBus to PCI 2.2 桥的 schizo(4) 驱动程序。

新增了用于采用 USB 接口的 3G 卡和软件狗的 u3g(4) 驱动程序， 它支持包括 Vodafone Mobile Connect Card 3G、 Qualcomm CDMA MSM、 华为 E220、 Novatel U740、 Sierra MC875U 等在内的一系列设备。 这提供了对多种由 3G USB/PC Card 调制解调器提供的 USB-到-串口 接口卡的支持， 这些设备可以通过 ucom(4) 驱动程序来驱动， 其接口类似于 tty(4)。

sched_ule(4) 调度器新增了引导加载器变量 `machdep.hyperthreading_enabled`， 类似 sched_4bsd(4) 对应的变量。 需要注意的是， 这个变量在系统运行过程中不能改变。

##### 2.2.2.1 多媒体支持

agp(4) 驱动程序新增了对 Intel G4X 系列图形芯片组的支持。

对 DRM， 直接渲染管理器内核模块进行了更新， 这个模块能够向 DRI 客户提供直接访问硬件的能力。 这次更新改进了对 AMD/ATI r500、 r600、 r700、 以及基于 IGP 的芯片、 XGI V3XE/V5/V8 和 Intel i915 芯片组的支持。

新增了引导加载器变量 `hw.drm.msi`， 用于控制 DRM 是否使用 MSI。 默认配置是 `1` (启用)。

删除了用于 Aureal Vortex 1/2/Advantage PCI 的 snd_au88x0(4) 驱动程序， 后者已经很长时间不能使用了。

更新了 snd_hda(4) 驱动程序。 这些更新包含了对 HDA 总线上多个编码解码器、 同一编码解码器上多个功能组、 同一功能组上多个音频设备、 数字 (SPDIF/HDMI) 音频输入输出、 挂起/恢复， 以及部分多轨音频的支持。

请注意， 由于新增的 HDMI 音频和逻辑音频设备支持， 更新后的驱动程序通常会提供多个 PCM 设备。 这意味着某些情况下默认的音频设备可能不再对应于用户习惯的音频端子。 这种情况下， 可以使用音频应用程序的配置， 或通过设置 `hw.snd.default_unit sysctl` 来全局地加以改变， 具体细节详见联机手册 sound(4)。

##### 2.2.2.2 网络接口支持

ae(4) 驱动程序支持 WoL (Wake on LAN) 了。

[amd64, i386] ale(4) 驱动程序加入到了 `GENERIC` 内核。

ath_hal(4)， Atheros 硬件访问层， 更新到了开放源代码的版本。

对 axe(4) 驱动程序的性能进行了改善， 消除了不必要的上下文切换， 并对 Apple USB 以太网适配器提供了支持。

将 bce(4) 驱动程序的固件更新到了最新版本 (4.6.X)。

ciphy(4) 驱动程序能够支持 Vitesse VSC8211 PHY 了。

cxgb(4) 驱动程序更新到了固件版本 4.7， 并支持硬件 MAC 统计了。

fxp(4) 驱动程序进行了改进。 具体变化包括：

- 可以使用 ifconfig(8) 来控制校验和 offload 功能了。

- 新增了对 82559 及更新型号网卡的 Rx 校验和 offload 的支持。

- 加入了 82550 和 82551 控制器的 TSO (TCP 分片 Offload) 支持。

- 加入了对基于 82550、 82551、 82558、 以及 82559 控制器网卡的 WoL (Wake on LAN) 支持。 请注意基于 ICH 的控制器会作为 82559 处理， 而 82557、 较早版本的 82558 以及 82559ER 并不具备 WoL 能力。

- 新增了 VLAN 硬件标签 插入/消除 支持， 以及用于 VLAN 帧的 Tx/Rx 校验和 offload 支持。 请注意硬件辅助的 VLAN 只有在基于 82550 或 82551 的控制器上才可以使用。

修正了导致引导加载器变量 `hw.igb.ave_latency` 无法正常工作的 igb(4) 驱动程序的问题。

ixgbe(4) 驱动程序更新到了 1.7.4 版本。

jme(4) 驱动程序新增了对较新的 JMicron JMC250/JMC260 版本的支持。

对 msk(4) 驱动程序进行了改进。 修正了导致其在某些情况下断线的问题。 新增了硬件 MAC 统计支持， 用户可以通过 sysctl 变量 `dev.msk.`N`.stats` 来获得这些数据。

mxge(4) 驱动程序支持一些新的硬件， 以及 10GBASE-LRM 和 10GBASE-Twinax 介质类型了。

nfe(4) 驱动程序新增了硬件 MAC 统计支持。

对 re(4) 驱动程序进行了改进。 它能够检测链路状态了。 新增的引导加载器变量 `hw.re.prefer_iomap` 能够控制内存寄存器映射是否禁用。 这个变量在除了 RTL8169SC 系列之外的其他控制器上的预设值都是 `0`。

对 rl(4) 驱动程序进行了改进。 它能够检测链路状态了。 此外， 导致它在内存超过 4GB 的系统上无法正常工作的问题也得到了修正。

修正了 sis(4) 关于带 VLAN 标签帧处理方面的问题。

txp(4) 驱动程序能够在所有受支持的平台上运行了。 此外还加入了对 altq(4)、 WoL、 启用 VLAN 时的校验和 offload 的支持， 并改进了链路变化处理。 新增了用于访问 MAC 统计的 sysctl 变量 `dev.txp.`N`.stats`。 新增了用于控制 Rx 处理程序每次处理帧数量的 sysctl 变量 `dev.txp.`N`.process_limit` (预设值为 64， 可以在 16 到 128 之间调整， 单位为帧)。 固件更新到了最新版本。

#### 2.2.3 网络协议

未绑定 socket 的 IPv4 源地址选择以下列方式实现：

1. 如果有路由， 则使用与地址相关的接口作为发出接口。

2. 其他情况下， 假定远程地址可以通过直接连接的网络到达， 并据此查找源地址。

3. 都不成功时， 使用默认的 jail 地址。

这也会改变 jail(8) 内进程选择 IP 的语义， 因为它采用与 jail(8) 以外进程相同的逻辑。

用于 IPv6 的 TCP MD5 签名选项 (RFC 2385) 以与 IPv4 相同的方式实现了。

ng_netflow(4) Netgraph 节点在 ingress 基础上新增了生成 egress netflow 的支持， 并可单独或结合使用。 针对此新增功能， 新增了控制消息 `NGM_NETFLOW_SETCONFIG`。

tap(4) 以太网隧道软件网络接口新增了 `TAPGIFNAME` 字符设备 ioctl。 它能够方便地取得已经打开的字符设备所对应的网络接口名字。

tap(4) 新增了 `SIOCSIFMTU` ioctl 用于设置超过 1500 (ETHERMTU) 的 MTU。 这使得 tap(4) 设备能够加入到配置了 jumbo 帧支持的网桥上 (因为网桥成员接口必须使用同样的 MTU)。

用于处理 unix(4) (UNIX 域协议族) 子系统支持的域的域列表是 MPSAFE 的了。

#### 2.2.4 磁盘和存储

ata(4) 驱动程序新增了对 Marvell PATA M88SX6121 的支持。

ata(4) 驱动程序会将 nForce MCP67 和 MCP73 SATA 控制器视作 AHCI 了。

ataraid(4) 新增了对于 Adaptec HostRAID 控制器的 DDF 元数据的初步支持。 请注意目前还不支持热备盘和重建操作。

cam(4) SCSI 子系统新增了 sysctl 变量 `kern.cam.cd.retry_count`。 它的作用是控制 CD 介质的重试次数。 当读取划伤或破损的 CD 和 DVD 时， 默认的机制工作的不太好， 而类似 ddrescue 这样的程序在关闭了重试时， 由于采用了自己的重试算法， 会快许多。 默认值是 `4` (表示一共尝试 5 次)。 设为 `0` 表示完全关闭重试。

修正了 ciss(4) 驱动的导致 “max device openings” 低， 并进而导致性能低下的问题。

glabel(8) GEOM class 新增了对一种基于 UFS 的名为 `ufsid` 标签的支持， 这种标签可以用来表达文件系统唯一 ID 的引用。 如果启用， 文件系统 ID 会由 glabel(8) GEOM 来产生和识别。 这类标签的形式类似于： `/dev/ufsid/48e69c8b5c8e1b43`。 使用这类 GEOM 标签能够避免在更换驱动器或控制器时引致的设备名称变化问题。

gjournal(8) GEOM class 支持根文件系统了。 在之前的版本中， 如果关闭系统没有执行完整的停机操作， 使用了日志的根文件系统在下次引导时会无法挂接。

更新了 gpart(8) 工具。 APM 分区格式新增了对 Tivo Series 1 分区的支持 (只读)， 新增了 EBR 格式来支持 Extended Boot Records， BSD 格式新增了对引导代码的支持， 并修正了 PC98 和 VTOC8 格式支持的一些小问题。

修正了 gvinum(8) 访问由 gvinum plex 使用的设备访问权限的问题。 如果 plex 组成了 raid5 plex， 在写入数据时系统可能不得不读取其下的磁盘， 这使得这些磁盘必须以读写方式打开。

hptmv(4) 驱动程序更新到了来自厂商的 1.16 版本。

mmc(4) 和 mmcsd(4) 驱动程序支持 MMC 和 SDHC 卡、 高速时钟、 宽总线以及多块传输了。

[sparc64] mpt(4) 驱动程序加入到 `GENERIC` 内核了。

新增了 sdhci(4) 驱动程序。 它支持符合 SD 主机控制器标准的 class 8、 subclass 5 的 PCI 设备。

sdhci(4) 驱动程序支持内核崩溃转存了， sysctl 变量 `hw.sdhci.debug` 能够调整调试信息级别。

twa(4) 驱动程序支持 64-位 DMA 了。

mmc(4) mmcsd(4) 以及 sdhci(4) 驱动程序， 目前以内核模块的方式提供。

#### 2.2.5 文件系统

对扩展访问控制列表 acl(3) 的语义进行了扩展， 变动包括：

- 当扩展属性添加、 修改或删除时， inode 的修改时间 (mtime) 不随之更新。

- 当查询扩展属性时， inode 的访问时间 (atime) 不随之更新。

FreeBSD NFS 文件系统新增了一个 sysctl 变量 `vfs.nfs.prime_access_cache` 用于控制 `nfs_getattr()` 是否使用 ACCESS RPC 来刷新访问缓存， 而不是简单地 GETATTR RPC。 在许多 NFS 服务器上， NFSv3 挂接时， ACCESS RPC 的开销要比 GETATTR RPC 大的多。 默认情况下， 这个 sysctl 是启用状态， 以保持先前的行为。

FreeBSD UDF 文件系统支持 fifo 了。

改进了 VFS(9) 子系统中查询路径名时的 vnode 共享锁。 默认情况下这一功能是关闭的。 通过将 sysctl `vfs.lookup_shared` 设为 `1` 能够启用这一功能， 并提供更好的性能。 请注意， 内核选项 `LOOKUP_SHARED` 表示永久性启用这一功能， 此时 sysctl 变量会不复存在。

### 2.3 用户态环境变动

修正了 atacontrol(8) 工具一处当 `/usr` 没有挂接时， 或从 `/rescue` 中执行工具时的问题。

从 NetBSD 引入了 btpand(8) 服务。 这个服务提供了对 Bluetooth Network Access Point (NAP)、 Group Ad-hoc Network (GN) 和 Personal Area Network User (PANU) 配置的支持。

ncal(1) 工具支持多字节字符了。

config(8) 工具支持多行 `makeoption` 配置了。

csup(1) 工具新增了用于下载完整 CVS 库的 CVSMode。 请注意， rsync 传输模式目前是禁用的。

dirname(1) 工具和 basename(1) 一样能够处理多个参数了。

du(1) 工具新增了 `-l` 选项。 当指定这个选项时， du(1) 工具会将同一文件的不同硬连接视作不同的文件。

du(1) 工具新增了 `-A` 选项， 表示显示可见尺寸而非磁盘上的尺寸。 当在压缩卷或稀疏文件上进行操作时， 这个选项会有所帮助。

du(1) 工具新增了用于指定计算块数量时块尺寸的 `-B `blocksize`` 选项， 表示以 `blocksize` 字节作为一块来计算。 这和 `-k` 或 `-m` 选项， 以及设置 `BLOCKSIZE` 的效果不同， 它会给出当使用 `blocksize` 时在文件系统层次结构中所使用的空间估计。 除非使用了 `-A` 模式， `blocksize` 会自动向上取整到下一个 512 的整数倍数。

dumpfs(8) 工具新增了 `-f` 选项， 表示按碎片 (块) 编号列出文件系统中的全部空闲碎片。 这个新的模式会计算并生成绝对的空闲碎片数量， 而不是默认模式中柱面组元数据中的相对数目。

如果指定了一次 `-f`， 连续的空闲区域会表达为 X-Y 的形式， 类似于目前空闲块的显示方式。 如果指定两次， 则每个空闲块都会显示出来， 这使得工具能够同时生成精简格式和适合脚本处理的格式。

fetch(1) 工具新增了 `-i` 参数用以支持 HTTP 1.1 请求中的 If-Modified-Since。 指定此选项时， 只有当远程文件比本地文件的 mtime 更新时才会真正下载。 另外， libfetch 现在支持在 url 结构中指定 mtime， 并增加了一个标志来表达需要使用这种功能。

fsck(8) 工具新增了表示 `check clean` 的 `-C` 参数。 这种模式下， 当上次不是正常卸下文件系统时， 才会进行完整的检查， 反之则跳过检查。

fsck(8) 工具新增了用于故障恢复的 `-D` 选项， 通过采用更为激进的操作， 它能让 fsck(8) 在发生严重数据损毁的文件系统上持续运行。 当磁盘数据发生严重损坏并导致 fsck(8) 崩溃时， 这种模式可以作为最后的方法使用。

getaddrinfo(3) 函数支持 SCTP 了。

修正了 ipfw(8) 工具的一处导致在指定了 `-q` 选项时， 仍在针对 NAT 规则的操作中显示多余信息的问题。

ln(1) 工具新增了用于检测原文件是否存在的 `-w` 选项。 当指定了这个选项而原文件不存在时， ln(1) 会给出警告。

make(1) 工具新增了用于显示输入图， 而不执行任何命令的 `-p` 选项， 其输出与 `-d g1` 相同。 当配合 `-f /dev/null` 使用时， 则只显示内建的规则。

make(1) 工具新增了阻止显示文件标题的 `-Q` 选项， 其作用与 `-q` 和 `-j` 参数同时指定时相同。

make(1) 新增了对 `.MAKE.JOB.PREFIX` 变量的支持。 如果指定了 `-j` 和 `-v`， 则每个联编目标输出之前会显示 `--- `target` ---`， 这部分输出受这个变量控制。

make(1) 工具新增了 `.MAKE.PID` 和 `.MAKE.PPID` 变量的支持。 这两个变量分别会被设为 make(1) 的进程 ID， 以及其父进程的 ID。

新增了从目录创建文件系统映像的 makefs(8) 工具。

mergemaster(8) 工具新增了用于直接安装只有版本控制 ID 字符串不同的文件的 `-F` 选项。

mount(8) 工具新增了 `-o mountprog=`/somewhere/mount_xxx`` 选项， 用于强制指定使用某个程序， 而不是直接调用 nmount(2) 来挂接文件系统。 典型的用法是配合类似 FUSE 这样的第三方程序使用。

netstat(1) 工具在指定了 `-L` 开关时， 能够报告 unix(4) sockets 的监听队列统计了。

修正了先前版本 netstat(1) 工具使用下列选项时的崩溃问题：

    % netstat -m -N foo

修正了 netstat(1) 工具中导致 `-ss` 无法正确显示 icmp6 部分的问题。

pciconf(8) 工具新增了 `-b` 开关， 表示列出为每个设备所分配的基地址寄存器 (BAR)。

对 powerd(8) 程序进行了改进。 这些变动包括在 SMP 系统中对 CPU 负载进行正确估计， 以及配合交流电源使用的新模式 `hiadaptive`。 `hiadaptive` 模式将 CPU 频率调整为 `adaptive` 的两倍， 并在需要时将 CPU 降频到原先的四分之一， 使 CPU 负载减少一半， 并延迟在最大负载之后离开最高频率的时间。

指定 `-x` 开关时， stat(1) 工具能够以八进制表示 suid、 sgid 和 sticky 位了。

新增了 strndup(3) 函数。

wc(1) 工具新增了用于输出文件中最长一行长度的 `-L` 开关。

修正了导致 rpc.yppasswdd(8) 程序在修改口令或默认 shell 时留下一个僵尸进程的问题。

### 2.4 基本系统中的第三方软件

ISC BIND 更新到了 9.4.3-P2 版。

时区数据库从 tzdata2008h 版升级到了 tzdata2009f 版。

### 2.5 Ports/Packages 套件基础设施

修正了导致 pkg_create(1) 工具的 `-n` 开关无法正常工作的问题。

FreeBSD Ports 套件支持在一些 port 上同时启动多个 make(1) 任务了。 这个功能在标记了 `MAKE_JOBS_SAFE` 的 port 上会自动启用， 它通过在作者提供的顶级 `Makefile` 上使用 `-j`X`` 来改善 CPU 利用率。 数字 `X` 默认设为系统中的 CPU 数量， 并可通过 make(1) 变量 `MAKE_JOBS_NUMBER` 来改变。 如欲了解进一步的详情， 请参阅 `ports/Mk/bsd.port.mk`。

### 2.6 交付工程与系统集成

支持的 GNOME 桌面环境 (`x11/gnome2`) 从 2.22 升级到了 2.26。

支持的 KDE 桌面环境， 从 3.5.10 (`x11/kde3`) 升级到了 4.2.2 (`x11/kde4`)。

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

[amd64, i386] 从 FreeBSD 6.2-RELEASE 开始， 系统已经能够通过使用 freebsd-update(8) 来实现 RELEASE 版本之间 (以及不同安全分支的快照版本) 的二进制升级。 二进制升级过程将更新未经修改的用户环境工具， 以及随官方 FreeBSD 发行版发布的、 未作修改的 GENERIC 或 SMP 内核。 使用 freebsd-update(8) 工具的主机， 需要有可用的 Internet 连接。

旧式的二进制升级， 则是通过随 CDROM 发行介质提供的 sysinstall(8) 的 `Upgrade` 选项来完成的。 这种二进制升级方式， 对于 非-i386、 非-amd64 的， 以及没有接入 Internet 的系统而言会比较有用。

此外， 也可以使用源代码从较早版本升级的方式 (通过从源代码重新编译 FreeBSD 的基本系统)， 其操作方法请参见 `/usr/src/UPDATING`。

> 重要: 很显然，升级 FreeBSD 时，应该首先备份 全部 数据和配置文件。

这份文档，以及其他与FreeBSD发行版本有关的文档，都可以在 ftp://ftp.FreeBSD.org/下载。

在遇到关于FreeBSD的技术问题时，请首先阅读 文档 之后再考虑联系 <questions@FreeBSD.org>。

关于这份文档的任何问题，请致信 <doc@FreeBSD.org>。