# FreeBSD 5.1 RELEASE i386 发行公告（2003 年 6 月 9 日）

**FreeBSD 项目**

版权所有 © 2000, 2001, 2002, 2003 FreeBSD 文档项目所有

```ini
$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.573 2003/05/28 21:01:22 hrs Exp $
```

FreeBSD 5.1-RELEASE 的发行说明包含了 FreeBSD 5-CURRENT 开发分支中对基本系统所做的最新变更的摘要。本文档列出了自上次发布以来发布的相关安全公告，以及对 FreeBSD 内核和用户空间的重大变更。还简要介绍了升级的相关事项。

## 1 简介

本文档包含了 FreeBSD 5.1-RELEASE 在 i386 硬件平台上的发行说明。它介绍了 FreeBSD 最近新增、修改或删除的特性。它还提供了一些关于从先前版本升级的备注。

此版本的 FreeBSD 5.1-RELEASE 是一个发布版本。你可以在[ftp://ftp.FreeBSD.org/](ftp://ftp.freebsd.org/)或其镜像站点找到。有关获取此版本（或其他版本）发行版的更多信息，可以在[《获取 FreeBSD》附录](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mirrors.html)中找到，该附录是[FreeBSD 手册](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/)的一部分。

对于新接触 FreeBSD 5-CURRENT 系列版本的用户，还应阅读《FreeBSD 5.1-RELEASE 早期采用者指南》。该文档通常与发行说明位于同一位置（作为 FreeBSD 发行版的一部分或在 FreeBSD 网站上）。它包含了使用 FreeBSD 5.1-RELEASE 的优缺点的重要信息，与基于 FreeBSD 4-STABLE 开发分支的版本相比。

我们鼓励所有用户在安装 FreeBSD 之前查阅发行说明的勘误表。勘误文档会更新“最后时刻”的信息，通常是发行周期的末期或发行后发现的信息。它通常包含已知的错误、安全公告以及文档的修正。可以在 FreeBSD 网站上找到最新的 FreeBSD 5.1-RELEASE 勘误副本。

## 2 有哪些新特性

本节介绍了自 5.0-RELEASE 以来，FreeBSD 中许多用户可见的新功能或变更。它包括特有的 5-CURRENT 分支中的项目，以及一些可能最近合并到其他分支（在 FreeBSD 5.0-RELEASE 之后）的功能。这些项目标记为\[已合并]。

典型的发行说明项目记录了在 5.0-RELEASE 之后发布的安全公告、新的驱动程序或硬件支持、新的命令或选项、重要的错误修复或第三方的软件升级。它们还可能列出主要 Port/包或发布工程实践的变化。显然，发行说明不能列出每个在版本之间对 FreeBSD 所做的变更；本文件主要关注安全公告、用户可见的变更以及主要架构改进。

### 2.1 安全公告

**CVS** 中的一个远程可利用漏洞已通过导入版本 1.11.5 进行修复。更多详细信息，请参阅安全公告 [FreeBSD-SA-03:01](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:01.cvs.asc)。\[已合并]

**OpenSSL** 中的一个基于时间的攻击已通过升级到 **OpenSSL** 0.9.7 进行防护，该攻击可能允许非常强大的攻击者在某些情况下访问明文。有关更多详细信息，请参阅安全公告 [FreeBSD-SA-03:02](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:02.openssl.asc)。\[已合并]

通过改进“syncookies”功能的安全性和性能，减少了攻击者能够伪造连接的可能性。更多详细信息请参阅安全公告 [FreeBSD-SA-03:03](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:03.syncookies.asc)。\[已合并]

**sendmail** 中的远程可利用缓冲区溢出漏洞已通过更新 **sendmail** 进行修复。更多详细信息，请参阅安全公告 [FreeBSD-SA-03:04](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:04.sendmail.asc) 和 [FreeBSD-SA-03:07](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:07.sendmail.asc)。\[已合并]

XDR 实现中的一个边界检查错误已修复，可能允许远程攻击者导致服务拒绝。更多详细信息，请参阅安全公告 [FreeBSD-SA-03:05](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:05.xdr.asc)。\[已合并]

两个最近公开的 **OpenSSL** 漏洞已被修复。更多详细信息，请参阅安全公告 [FreeBSD-SA-03:06](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-03:06.openssl.asc)。\[已合并]

### 2.2 内核变更

[devfs(5)](http://www.freebsd.org/cgi/man.cgi?query=devfs\&sektion=5\&manpath=FreeBSD+5.1-release) 现在是强制性的；NODEVFS 选项已从内核配置选项中移除。

新增驱动程序 [ehci(4)](http://www.freebsd.org/cgi/man.cgi?query=ehci\&sektion=4\&manpath=FreeBSD+5.1-release)；它支持 USB 2.0 控制器使用的 USB 增强主机控制器接口。

修复了 `/dev/tty` 的权限处理中的一个小错误。结果：现在可以在 [su(1)](http://www.freebsd.org/cgi/man.cgi?query=su\&sektion=1\&manpath=FreeBSD+5.1-release) 之后使用 [ssh(1)](http://www.freebsd.org/cgi/man.cgi?query=ssh\&sektion=1\&manpath=FreeBSD+5.1-release)。

修复了一个导致 [fstat(2)](http://www.freebsd.org/cgi/man.cgi?query=fstat\&sektion=2\&manpath=FreeBSD+5.1-release) 返回 `0` 作为 TCP 套接字可读字节数的错误。

修复了一个导致 [kqueue(2)](http://www.freebsd.org/cgi/man.cgi?query=kqueue\&sektion=2\&manpath=FreeBSD+5.1-release) 报告 `0` 作为 TCP 套接字可读字节数的错误。`EVFILT_READ` 的参数 `NOTE_LOWAT` 也已修复。

Linux 模拟模式现在支持 IPv6。

[madvise(2)](http://www.freebsd.org/cgi/man.cgi?query=madvise\&sektion=2\&manpath=FreeBSD+5.1-release) 现在支持 `MADV_PROTECT` 行为，该行为通知虚拟内存系统某个进程是关键的，并且在交换空间耗尽时不应终止该进程。该进程必须是超级用户所有。

已删除用于 TW-523 电力线接口（X-10 家庭控制产品使用）的 tw 驱动程序。该驱动程序目前无法使用，并且需要大量工作才能在 5-CURRENT 中正常工作。xten 和 xtend 用户空间控制程序也已删除。

已向调度框架中新增第二个进程调度器，旨在成为一个具有许多 SMP 优势的通用调度器。内核配置中必须指定确切的一个调度器。可以使用选项 `SCHED_4BSD` 选择原始调度器。可以使用选项 `SCHED_ULE` 选择新的（实验性）调度器。

设备主编号现在默认动态分配。此变更大大减少了对静态、集中式设备驱动程序主编号分配表的需求（一些驱动程序为了兼容性保留了旧的静态主编号），并且减少了耗尽设备主编号的可能性。

已实现部分懒惰切换机制，用于内核线程；旨在减少不涉及其他进程的短上下文切换（如中断处理程序）的开销。可以通过选项 `LAZY_SWITCH` 启用此功能。

#### 2.2.1 处理器/主板支持

SMP 内核现在对超线程技术（HyperThreading，HTT）提供了初步支持。调度器将逻辑 CPU 视为额外的物理 CPU。这在某些情况下可能导致资源争用，从而导致性能不佳。因此，逻辑 CPU 在启动时默认被停止。可以通过 sysctl 变量 `machdep.hlt_logical_cpus` 启用它们。还可以通过 sysctl 变量 `machdep.hlt_cpus` 在空闲循环中停止任何 CPU。更多详细信息请参见 [smp(4)](http://www.freebsd.org/cgi/man.cgi?query=smp\&sektion=4\&manpath=FreeBSD+5.1-release) 手册。

> **注意：**
>
> 一些其他版本的 FreeBSD，包括早期的 5.0-CURRENT 快照和 4.8-RELEASE，使用选项 HTT 在内核配置时启用超线程支持。现在不再需要此选项。

已新增对 Intel Pentium Pro 及更高处理器上的物理地址扩展（PAE）功能的支持。这允许机器使用最多 64GB 的 RAM，尽管任何单个进程（或 FreeBSD 内核）可用的内存量没有改变。有关更多信息，请参阅 [pae(4)](http://www.freebsd.org/cgi/man.cgi?query=pae\&sektion=4\&manpath=FreeBSD+5.1-release) 手册页面。该功能的开发由美国国防高级研究计划局和 Network Associates 实验室赞助。

已新增一个新的 [vpd(4)](http://www.freebsd.org/cgi/man.cgi?query=vpd\&sektion=4\&manpath=FreeBSD+5.1-release) 驱动程序，用于从 IBM ThinkPad 机器的 Vital Product Data 结构读取硬件信息。

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

启动加载器的两个部分（boot1 和 boot2）已合并为一个单独的启动文件，以简化需要写入或以其他方式操作启动加载器的程序。

目录 `/modules`（曾是 FreeBSD 4.*X* 中模块的默认位置）不再是默认 `kern.module_path` 的一部分。第三方模块应放置在 `/boot/modules` 中。

> **注意：**
>
> 设计用于 FreeBSD 4.*X* 的模块在加载到 FreeBSD 5.1-RELEASE 内核时可能会导致崩溃，使用时应非常小心。

由于代码大小限制，i386 启动加载器只能从大小为 1.5TB 或更小的根文件系统加载内核。

#### 2.2.3 网络接口支持

新增网络驱动程序 [axe(4)](http://www.freebsd.org/cgi/man.cgi?query=axe\&sektion=4\&manpath=FreeBSD+5.1-release)，支持基于 ASIX Electronics AX88172 USB 2.0 芯片组的 USB 以太网适配器。

驱动程序 cm 现在支持 IPX。\[已合并]

新增网络驱动程序 [rue(4)](http://www.freebsd.org/cgi/man.cgi?query=rue\&sektion=4\&manpath=FreeBSD+5.1-release)，支持基于 RealTek RTL8150 USB 到快速以太网控制器芯片的以太网适配器。

新增驱动程序 [sbsh(4)](http://www.freebsd.org/cgi/man.cgi?query=sbsh\&sektion=4\&manpath=FreeBSD+5.1-release)，用于 Granch SBNI16 SHDSL 调制解调器。\[已合并]

新增了模块 [wlan(4)](http://www.freebsd.org/cgi/man.cgi?query=wlan\&sektion=4\&manpath=FreeBSD+5.1-release)，提供 802.11 链路层支持。[wi(4)](http://www.freebsd.org/cgi/man.cgi?query=wi\&sektion=4\&manpath=FreeBSD+5.1-release) 和 [an(4)](http://www.freebsd.org/cgi/man.cgi?query=an\&sektion=4\&manpath=FreeBSD+5.1-release) 驱动程序现在使用此功能。

修复了驱动程序 [xl(4)](http://www.freebsd.org/cgi/man.cgi?query=xl\&sektion=4\&manpath=FreeBSD+5.1-release) 中的一个时间错误，该错误可能导致在配置接口时发生内核崩溃（或其他问题）。

#### 2.2.4 网络协议

[ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&manpath=FreeBSD+5.1-release) 的 `skipto` 规则现在可以再次与关键字 `log` 一起使用。[ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&manpath=FreeBSD+5.1-release) 的 uid 规则也已经恢复正常。

现在可以将选项 `FAST_IPSEC` 和 `INET6` 构建到同一个内核中。（不过，它们仍然不能一起使用。）

修复了 TCP NewReno 中的一个错误，该错误导致在启用 NewReno 时，快速恢复阶段过早退出。\[已合并]

TCP 现在支持 RFC 3042 中提出的“有限传输”（Limited Transmit）机制。该功能旨在在某些情况下提高 TCP 丢包恢复的效果。默认情况下该功能是关闭的，但可以通过 sysctl 变量 `net.inet.tcp.rfc3042` 启用。更多信息请参见 [tcp(4)](http://www.freebsd.org/cgi/man.cgi?query=tcp\&sektion=4\&manpath=FreeBSD+5.1-release)。

TCP 现在支持 RFC 3390 中描述的增加初始拥塞窗口大小的功能。该功能可以提高短连接以及高带宽、大传播延迟连接的吞吐量。默认情况下该功能是关闭的，但可以通过 sysctl 变量 `net.inet.tcp.rfc3390` 启用。更多信息请参见 [tcp(4)](http://www.freebsd.org/cgi/man.cgi?query=tcp\&sektion=4\&manpath=FreeBSD+5.1-release)。

IP 数据包碎片重组代码在接收大量数据包碎片时表现得更加优雅（旨在增强对基于碎片的拒绝服务攻击的抗性）。\[已合并]

TCP 连接在 TIME\_WAIT 状态下现在使用一个特殊的协议控制块，占用的空间比完整的 TCP PCB 要少。这使得某些数据结构和资源可以更早地被释放。

现在可以指定“特权端口”（TCP 和 UDP 端口，需要超级用户权限才能[bind(2)](http://www.freebsd.org/cgi/man.cgi?query=bind\&sektion=2\&manpath=FreeBSD+5.1-release)）的范围。该范围现在通过 sysctl 变量 `net.inet.ip.portrange.reservedlow` 和 `net.inet.ip.portrange.reservedhigh` 进行指定，默认为传统的 UNIX 行为。此功能旨在帮助网络服务器在无需超级用户权限的情况下绑定传统的特权端口。[ip(4)](http://www.freebsd.org/cgi/man.cgi?query=ip\&sektion=4\&manpath=FreeBSD+5.1-release) 中有更多详细信息。

修复了非阻塞 RPC 代码中的一些错误。因此，[amd(8)](http://www.freebsd.org/cgi/man.cgi?query=amd\&sektion=8\&manpath=FreeBSD+5.1-release) 用户现在能够从 5.1-RELEASE 服务器挂载卷。

已移除对 XNS 网络的支持，因为它已经近七年不能正常工作了。

#### 2.2.5 磁盘与存储

[aac(4)](http://www.freebsd.org/cgi/man.cgi?query=aac\&sektion=4\&manpath=FreeBSD+5.1-release) 驱动程序现在运行时不再依赖于巨大内核锁。这一改变使得在运行多个 I/O 密集型负载的 SMP 系统上性能提高了近 20%。

[ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+5.1-release) 驱动程序现在支持所有已知的 SiS 芯片组。（更多详细信息可以在硬件说明中找到。）

[ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+5.1-release) 驱动程序现在支持 Promise SATA150 TX2 和 TX4 Serial ATA/150 控制器。

[ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+5.1-release) 驱动程序现在会在关机时刷新设备。这一变化可能导致在不支持刷新功能的设备上打印错误信息。

CAM 层现在支持超过 `2<sup>32</sup>` 块的设备。（假设每块 512 字节，这意味着支持超过 2TB 的设备。）

> **注意：**
>
> 对于跨版本升级的用户，请注意，所有与 [pass(4)](http://www.freebsd.org/cgi/man.cgi?query=pass\&sektion=4\&manpath=FreeBSD+5.1-release) 或 [xpt(4)](http://www.freebsd.org/cgi/man.cgi?query=xpt\&sektion=4\&manpath=FreeBSD+5.1-release) 设备交互的用户态应用程序必须重新编译。例如，基本系统中的程序 [camcontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=camcontrol\&sektion=8\&manpath=FreeBSD+5.1-release)，Port sysutils/cdrtools 和 multimedia/xmms。

对驱动程序 [cd(4)](http://www.freebsd.org/cgi/man.cgi?query=cd\&sektion=4\&manpath=FreeBSD+5.1-release) 进行了多项变更，主要的用户可见变化是提高了与 ATAPI/USB/Firewire CDROM 驱动器的兼容性。

[geom(4)](http://www.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&manpath=FreeBSD+5.1-release) 现在是强制性的；已从内核配置选项中移除选项 `NO_GEOM`。

已更新驱动程序 [iir(4)](http://www.freebsd.org/cgi/man.cgi?query=iir\&sektion=4\&manpath=FreeBSD+5.1-release)；此次更新被认为解决了安装过程中无法检测到附加磁盘的问题。

新增支持 IBM（现为 Adaptec）ServeRAID 系列的 ips 驱动程序。

修复驱动程序 [mly(4)](http://www.freebsd.org/cgi/man.cgi?query=mly\&sektion=4\&manpath=FreeBSD+5.1-release) 中的一个导致挂起的错误。

已新增对 UFS 和 UFS2 文件系统上的卷标签的支持。这些标签是可以用于识别卷的字符串，无论该卷出现在什么设备上。可以使用 `-L` 选项通过 [newfs(8)](http://www.freebsd.org/cgi/man.cgi?query=newfs\&sektion=8\&manpath=FreeBSD+5.1-release) 或 [tunefs(8)](http://www.freebsd.org/cgi/man.cgi?query=tunefs\&sektion=8\&manpath=FreeBSD+5.1-release) 设置标签。使用 `GEOM_VOL` 模块，可以通过卷标签在 `/dev/vol` 下访问卷。

现在根文件系统可以位于 [vinum(4)](http://www.freebsd.org/cgi/man.cgi?query=vinum\&sektion=4\&manpath=FreeBSD+5.1-release) 卷上。更多信息请参见 [vinum(4)](http://www.freebsd.org/cgi/man.cgi?query=vinum\&sektion=4\&manpath=FreeBSD+5.1-release) 手册。

#### 2.2.6 文件系统

新的内核选项 `DIRECTIO` 启用了绕过缓冲区缓存的读操作，并将数据直接放入用户空间缓冲区。此功能要求文件描述符上设置 `O_DIRECT` 参数，并且读操作的偏移量和长度必须是物理媒体扇区大小的倍数。 \[已合并]

NETNCP 和 Netware 文件系统支持 (nwfs) 现已恢复正常工作。

修复了可能导致 smbfs 共享卸载失败或引起内核崩溃的错误。

#### 2.2.7 PCCARD 支持

#### 2.2.8 多媒体支持

模块 `atspeaker.ko` 和 `pcspeaker.ko` 已重命名为 `speaker.ko`，用于 [speaker(4)](http://www.freebsd.org/cgi/man.cgi?query=speaker\&sektion=4\&manpath=FreeBSD+5.1-release) 设备。

### 2.3 用户空间变更

[adduser(8)](http://www.freebsd.org/cgi/man.cgi?query=adduser\&sektion=8\&manpath=FreeBSD+5.1-release) 现在正确处理包含特殊 shell 字符的用户密码。

[adduser(8)](http://www.freebsd.org/cgi/man.cgi?query=adduser\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `-g` 选项，用于设置用户的默认登录组。

[bsdlabel(8)](http://www.freebsd.org/cgi/man.cgi?query=bsdlabel\&sektion=8\&manpath=FreeBSD+5.1-release) 实用程序是旧版 disklabel 实用程序的替代工具。与其前身一样，它安装、检查或修改磁盘分区上的 BSD 标签，并可以安装引导程序代码。与 disklabel 相比，许多过时的选项和参数已被删除。一个新的 -m 选项指示 [bsdlabel(8)](http://www.freebsd.org/cgi/man.cgi?query=bsdlabel\&sektion=8\&manpath=FreeBSD+5.1-release) 使用适用于特定机器的布局。

compat4x 发行版现在包括来自 FreeBSD 4.7-RELEASE 的 libcrypto.so.2、libgmp.so.3 和 libssl.so.2 库。

[chgrp(1)](http://www.freebsd.org/cgi/man.cgi?query=chgrp\&sektion=1\&manpath=FreeBSD+5.1-release) 和 [chown(8)](http://www.freebsd.org/cgi/man.cgi?query=chown\&sektion=8\&manpath=FreeBSD+5.1-release) 现在在修改所有者/组时，如果指定多次 `-v` 选项，将打印旧的和新的 uid/gid。

[config(8)](http://www.freebsd.org/cgi/man.cgi?query=config\&sektion=8\&manpath=FreeBSD+5.1-release) 现在实现了一个 `nodevice` 内核配置文件指令，用于取消设备指令的效果。新的 `nooption` 和 `nomakeoption` 指令分别取消先前的 `options` 和 `makeoptions` 指令。

已新增实用程序 [diskinfo(8)](http://www.freebsd.org/cgi/man.cgi?query=diskinfo\&sektion=8\&manpath=FreeBSD+5.1-release) ，用于显示磁盘设备的信息，并可选择运行一个简单的性能测试。

disklabel 实用程序已被 [bsdlabel(8)](http://www.freebsd.org/cgi/man.cgi?query=bsdlabel\&sektion=8\&manpath=FreeBSD+5.1-release) 替代。在 alpha、i386 和 pc98 平台上，disklabel 是 [bsdlabel(8)](http://www.freebsd.org/cgi/man.cgi?query=bsdlabel\&sektion=8\&manpath=FreeBSD+5.1-release) 的符号链接。

[dump(8)](http://www.freebsd.org/cgi/man.cgi?query=dump\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持使用 `-C` 选项进行磁盘块缓存。这可以提高 dump 性能，但可能会错过在遍历过程中发生的文件系统更新。

[dumpfs(8)](http://www.freebsd.org/cgi/man.cgi?query=dumpfs\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `-m` 参数，以 [newfs(8)](http://www.freebsd.org/cgi/man.cgi?query=newfs\&sektion=8\&manpath=FreeBSD+5.1-release) 命令的形式打印文件系统参数。

[elfdump(1)](http://www.freebsd.org/cgi/man.cgi?query=elfdump\&sektion=1\&manpath=FreeBSD+5.1-release) 是一个用于显示 [elf(5)](http://www.freebsd.org/cgi/man.cgi?query=elf\&sektion=5\&manpath=FreeBSD+5.1-release) 格式可执行文件信息的工具，已新增。

[fetch(1)](http://www.freebsd.org/cgi/man.cgi?query=fetch\&sektion=1\&manpath=FreeBSD+5.1-release) 使用 [fetch(3)](http://www.freebsd.org/cgi/man.cgi?query=fetch\&sektion=3\&manpath=FreeBSD+5.1-release) 中的 `.netrc` 支持，并且还支持 `-N` 选项来指定备用的 `.netrc` 文件。

[fetch(3)](http://www.freebsd.org/cgi/man.cgi?query=fetch\&sektion=3\&manpath=FreeBSD+5.1-release) 现在支持 `.netrc` 文件（更多细节请参见 [ftp(1)](http://www.freebsd.org/cgi/man.cgi?query=ftp\&sektion=1\&manpath=FreeBSD+5.1-release)）。

[ftpd(8)](http://www.freebsd.org/cgi/man.cgi?query=ftpd\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `-h` 选项，以禁用在服务器消息中打印任何主机特定信息，如 [ftpd(8)](http://www.freebsd.org/cgi/man.cgi?query=ftpd\&sektion=8\&manpath=FreeBSD+5.1-release) 的版本或主机名。\[已合并]

[ftpd(8)](http://www.freebsd.org/cgi/man.cgi?query=ftpd\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `-P` 选项，指定在守护进程模式下监听的端口号。默认数据端口号现在设置为控制端口号减一，而不是硬编码的值。\[已合并]

[ftpd(8)](http://www.freebsd.org/cgi/man.cgi?query=ftpd\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `/etc/ftpchroot` 文件的扩展格式。详情请参阅现已可用的 [ftpchroot(5)](http://www.freebsd.org/cgi/man.cgi?query=ftpchroot\&sektion=5\&manpath=FreeBSD+5.1-release) 手册页。\[已合并]

[ftpd(8)](http://www.freebsd.org/cgi/man.cgi?query=ftpd\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持同时指定用于 [chroot(2)](http://www.freebsd.org/cgi/man.cgi?query=chroot\&sektion=2\&manpath=FreeBSD+5.1-release) 和在 chroot 环境中切换的目录路径名。为此，使用 /./ 分隔符，类似于其他具有此功能的 FTP 守护程序。它可用于 [ftpchroot(5)](http://www.freebsd.org/cgi/man.cgi?query=ftpchroot\&sektion=5\&manpath=FreeBSD+5.1-release) 和 [passwd(5)](http://www.freebsd.org/cgi/man.cgi?query=passwd\&sektion=5\&manpath=FreeBSD+5.1-release) 中。\[已合并]

[fwcontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=fwcontrol\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `-R` 和 `-S` 选项，用于接收和发送 DV 流。\[已合并]

[geostat(8)](http://www.freebsd.org/cgi/man.cgi?query=gstat\&sektion=8\&manpath=FreeBSD+5.1-release) 实用程序已新增，用于显示 [geom(4)](http://www.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&manpath=FreeBSD+5.1-release) 子系统内的磁盘活动。

[ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `enable` 和 `disable` 命令，用于控制 [ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&manpath=FreeBSD+5.1-release) 的各个方面（包括启用和禁用防火墙本身）。这些命令比现有的 sysctl 变量提供了更方便和显眼的接口。\[已合并]

[jail(8)](http://www.freebsd.org/cgi/man.cgi?query=jail\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `-i` 参数，用于输出新创建的 jail 的标识符。

已新增工具 [jexec(8)](http://www.freebsd.org/cgi/man.cgi?query=jexec\&sektion=8\&manpath=FreeBSD+5.1-release) ，用于在现有 jail 中执行命令。

已新增工具 [jls(8)](http://www.freebsd.org/cgi/man.cgi?query=jls\&sektion=8\&manpath=FreeBSD+5.1-release) ，用于列出现有的 jail。

[kenv(1)](http://www.freebsd.org/cgi/man.cgi?query=kenv\&sektion=1\&manpath=FreeBSD+5.1-release) 已从 `/usr/bin` 移动到 `/bin`，以便在系统启动时，只有根文件系统挂载时也能使用。

[killall(1)](http://www.freebsd.org/cgi/man.cgi?query=killall\&sektion=1\&manpath=FreeBSD+5.1-release) 现在支持 `-j` 选项，用于终止 jail 中的所有进程。

[libgeom(3)](http://www.freebsd.org/cgi/man.cgi?query=libgeom\&sektion=3\&manpath=FreeBSD+5.1-release) 库已新增，以允许用户访问 [geom(4)](http://www.freebsd.org/cgi/man.cgi?query=geom\&sektion=4\&manpath=FreeBSD+5.1-release) 子系统。

已新增 MAC 策略模块 `mac_portacl`。它提供了一种简单的 ACL 机制，允许用户和组为 TCP 或 UDP 绑定端口，并且计划与最近新增的 sysctl `net.inet.ip.portrange.reservedhigh` 配合使用。

由于 [devfs(5)](http://www.freebsd.org/cgi/man.cgi?query=devfs\&sektion=5\&manpath=FreeBSD+5.1-release) 的强制存在，`MAKEDEV` 脚本现在不再需要，已被移除。

[mergemaster(8)](http://www.freebsd.org/cgi/man.cgi?query=mergemaster\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `-P` 选项，用于保留被替换文件的内容。

[mixer(8)](http://www.freebsd.org/cgi/man.cgi?query=mixer\&sektion=8\&manpath=FreeBSD+5.1-release) 现在可以实现相对音量调整。

[mksnap\_ffs(8)](http://www.freebsd.org/cgi/man.cgi?query=mksnap_ffs\&sektion=8\&manpath=FreeBSD+5.1-release) 程序已新增，用于简化 FFS 快照的创建。它是一个 SUID-root 可执行文件，旨在供 operator 组成员使用。

[mount(8)](http://www.freebsd.org/cgi/man.cgi?query=mount\&sektion=8\&manpath=FreeBSD+5.1-release) 和 [umount(8)](http://www.freebsd.org/cgi/man.cgi?query=umount\&sektion=8\&manpath=FreeBSD+5.1-release) 现在接受 `-F` 选项，用于指定替代的 [fstab(5)](http://www.freebsd.org/cgi/man.cgi?query=fstab\&sektion=5\&manpath=FreeBSD+5.1-release) 文件。

[mount\_nfs(8)](http://www.freebsd.org/cgi/man.cgi?query=mount_nfs\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 -c 参数，用于避免对 UDP 挂载点执行 [connect(2)](http://www.freebsd.org/cgi/man.cgi?query=connect\&sektion=2\&manpath=FreeBSD+5.1-release)。如果服务器没有响应来自标准 NFS 端口号 2049 的请求，或者它对请求使用不同的 IP 地址进行响应（如果服务器是多网卡的），则必须使用此选项。将 sysctl 设置 `vfs.nfs.nfs_ip_paranoia` 为 `0` 会使此选项成为默认选项。\[已合并]

[mount\_nfs(8)](http://www.freebsd.org/cgi/man.cgi?query=mount_nfs\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `noinet4` 和 `noinet6` 挂载选项，分别防止 NFS 挂载使用 IPv4 或 IPv6。

[newfs(8)](http://www.freebsd.org/cgi/man.cgi?query=newfs\&sektion=8\&manpath=FreeBSD+5.1-release) 现在默认创建 UFS2 文件系统，除非使用 `-O1` 选项明确请求 UFS1。

[newsyslog(8)](http://www.freebsd.org/cgi/man.cgi?query=newsyslog\&sektion=8\&manpath=FreeBSD+5.1-release) 增加了多项新功能，包括：

* `W` 参数强制在开始新的压缩作业之前完成为条目（或通过 `G` 参数指定的一组条目）启动的先前压缩作业。此功能旨在防止由于同时启动多个大文件的压缩作业而导致的系统过载。\[已合并]
* “默认轮换动作”，用于轮换时未在配置文件中指定的文件。\[已合并]
* `-s` 命令行参数，用于禁用在轮换文件时向进程发送信号。\[已合并]
* `N` 配置文件参数，指示在轮换文件时不需要向任何进程发送信号。\[已合并]
* `U` 配置文件参数，指定在轮换文件时应该向进程组发送信号，而不是单个进程。\[已合并]

[nsdispatch(3)](http://www.freebsd.org/cgi/man.cgi?query=nsdispatch\&sektion=3\&manpath=FreeBSD+5.1-release) 现在是线程安全的，并实现了对名称服务切换（NSS）模块的支持。NSS 模块可以静态地构建到 libc 中，或者通过 [dlopen(3)](http://www.freebsd.org/cgi/man.cgi?query=dlopen\&sektion=3\&manpath=FreeBSD+5.1-release) 动态加载。它们在配置时（即，当 [nsdispatch(3)](http://www.freebsd.org/cgi/man.cgi?query=nsdispatch\&sektion=3\&manpath=FreeBSD+5.1-release) 被调用并且 [nsswitch.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=nsswitch.conf\&sektion=5\&manpath=FreeBSD+5.1-release) 被读取或重新读取时）加载/初始化。

新增的模块 [pam\_chroot(8)](http://www.freebsd.org/cgi/man.cgi?query=pam_chroot\&sektion=8\&manpath=FreeBSD+5.1-release) 可以为用户执行 [chroot(2)](http://www.freebsd.org/cgi/man.cgi?query=chroot\&sektion=2\&manpath=FreeBSD+5.1-release) 操作，将其置于预定目录或从其主目录派生的目录中。

已重写 [pam\_ssh(8)](http://www.freebsd.org/cgi/man.cgi?query=pam_ssh\&sektion=8\&manpath=FreeBSD+5.1-release) 。重写的一个副作用是它现在为每个会话启动一个独立的 [ssh-agent(1)](http://www.freebsd.org/cgi/man.cgi?query=ssh-agent\&sektion=1\&manpath=FreeBSD+5.1-release) 实例，而不是尝试将每个会话连接到第一个会话启动的代理。

[ping(8)](http://www.freebsd.org/cgi/man.cgi?query=ping\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `-D` 参数，用于在发送的数据包上设置“Don't Fragment”（不分片）位。

[ping(8)](http://www.freebsd.org/cgi/man.cgi?query=ping\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `-M` 选项，使用 ICMP 掩码请求或时间戳请求消息，而不是 ICMP 回显请求。

[ping(8)](http://www.freebsd.org/cgi/man.cgi?query=ping\&sektion=8\&manpath=FreeBSD+5.1-release) 现在支持 `-z` 参数，用于在发送的数据包中设置服务类型位。

[pw(8)](http://www.freebsd.org/cgi/man.cgi?query=pw\&sektion=8\&manpath=FreeBSD+5.1-release) 现在可以新增以 `$` 字符结尾的用户；此变更旨在帮助管理 **Samba** 服务。\[已合并]

由 [pwd\_mkdb(8)](http://www.freebsd.org/cgi/man.cgi?query=pwd_mkdb\&sektion=8\&manpath=FreeBSD+5.1-release) 创建的 `/etc/pwd.db` 和 `/etc/spwd.db` 密码数据库的格式现在与字节顺序无关。经过预处理的密码数据库现在可以在不同架构的机器之间移动。格式包括版本号条目，以确保与旧二进制文件的兼容性。

修复了 [rand(3)](http://www.freebsd.org/cgi/man.cgi?query=rand\&sektion=3\&manpath=FreeBSD+5.1-release) 中的一个 bug，可能导致序列停留在 `0`。（[rand(3)](http://www.freebsd.org/cgi/man.cgi?query=rand\&sektion=3\&manpath=FreeBSD+5.1-release) 仍然只适用于简单用途。）

[rtld(1)](http://www.freebsd.org/cgi/man.cgi?query=rtld\&sektion=1\&manpath=FreeBSD+5.1-release) 现在支持共享对象依赖关系的动态映射。此可选功能对于尝试不同线程库时特别有用。然而，默认情况下并未构建。关于启用和使用此功能的更多信息，请参阅 [libmap.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=libmap.conf\&sektion=5\&manpath=FreeBSD+5.1-release)。

[sem\_open(3)](http://www.freebsd.org/cgi/man.cgi?query=sem_open\&sektion=3\&manpath=FreeBSD+5.1-release) 现在正确处理对同一信号量的多个打开；因此， [sem\_close(3)](http://www.freebsd.org/cgi/man.cgi?query=sem_close\&sektion=3\&manpath=FreeBSD+5.1-release) 不再导致调用程序崩溃。

[srandom(3)](http://www.freebsd.org/cgi/man.cgi?query=srandom\&sektion=3\&manpath=FreeBSD+5.1-release) 使用的播种算法已得到加强。

[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+5.1-release) 现在将选择 UFS2 作为新文件系统的默认布局，除非在磁盘标签中特别要求。

> **注意：**
>
> 由于 i386 启动加载程序的限制，根文件系统必须小于 1.5TB。

[swapoff(8)](http://www.freebsd.org/cgi/man.cgi?query=swapoff\&sektion=8\&manpath=FreeBSD+5.1-release) 命令已新增，用于禁用设备上的分页和交换。相关的 [swapctl(8)](http://www.freebsd.org/cgi/man.cgi?query=swapctl\&sektion=8\&manpath=FreeBSD+5.1-release) 命令已新增，提供一个与其他 BSD 系统类似的接口，以访问 [swapon(8)](http://www.freebsd.org/cgi/man.cgi?query=swapon\&sektion=8\&manpath=FreeBSD+5.1-release) 和 [swapoff(8)](http://www.freebsd.org/cgi/man.cgi?query=swapoff\&sektion=8\&manpath=FreeBSD+5.1-release)。

> **注意：**
>
> [swapoff(8)](http://www.freebsd.org/cgi/man.cgi?query=swapoff\&sektion=8\&manpath=FreeBSD+5.1-release) 功能应视为实验性功能。

[syslogd(8)](http://www.freebsd.org/cgi/man.cgi?query=syslogd\&sektion=8\&manpath=FreeBSD+5.1-release) 现在允许在 [syslog.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=syslog.conf\&sektion=5\&manpath=FreeBSD+5.1-release) 文件中的主机或程序规格中指定多个主机或程序。

[systat(1)](http://www.freebsd.org/cgi/man.cgi?query=systat\&sektion=1\&manpath=FreeBSD+5.1-release) 现在包括 `-ifstat` 显示模式，显示系统上活动接口的网络流量。

已新增命令 [usbhidaction(1)](http://www.freebsd.org/cgi/man.cgi?query=usbhidaction\&sektion=1\&manpath=FreeBSD+5.1-release) ；它根据配置执行响应 USB HID 控件的操作。

[uudecode(1)](http://www.freebsd.org/cgi/man.cgi?query=uudecode\&sektion=1\&manpath=FreeBSD+5.1-release) 和 [b64decode(1)](http://www.freebsd.org/cgi/man.cgi?query=b64decode\&sektion=1\&manpath=FreeBSD+5.1-release) 现在支持 -r 参数，用于解码缺少初始和可能缺少最终框架行的原始（或损坏的）文件。\[已合并]

[vmstat(8)](http://www.freebsd.org/cgi/man.cgi?query=vmstat\&sektion=8\&manpath=FreeBSD+5.1-release) 重新实现了 `-f` 参数，用于显示关于 fork 操作的统计信息。

[xargs(1)](http://www.freebsd.org/cgi/man.cgi?query=xargs\&sektion=1\&manpath=FreeBSD+5.1-release) 现在支持 `-P` 选项，以并行执行多个相同实用程序的副本。

[xargs(1)](http://www.freebsd.org/cgi/man.cgi?query=xargs\&sektion=1\&manpath=FreeBSD+5.1-release) 现在支持 `-o` 参数，在执行命令之前重新打开 `/dev/tty` 以供子进程使用。当子进程是交互式应用程序时，这非常有用。

libkse 库（提供使用 KSE 的 POSIX 线程支持）现在默认启用和安装。该库目前支持 M:N 线程。支持进程范围和系统范围线程，并支持获取/设置并发级别。默认情况下，库将并发级别设置为系统中的 CPU 数量。每个并发级别对应一个 KSE，所有进程范围的线程都在这些 KSE 中运行。每个系统范围的线程除了与并发级别相关的 KSE 外，还会有自己的 KSE。libkse 仍然被视为一个正在进行中的工作，并且默认情况下不使用。然而，它可以用作 `libc_r` 线程库的替代品，通过在链接程序时用 `-lkse` 替换 `-pthread`。

已实现 1:1 线程包（每个应用程序中的每个 pthread 都对应一个 KSE 和线程）。在此模型下，内核处理所有线程调度决策和所有信号传递。它使用一些通用的 KSE 代码，是 M:N 线程工作的受限版本。实现此功能的 libthr 库是 libc\_r 库的替代品。请注意，libthr 目前并非默认构建。

已删除 `/etc` 中的历史 BSD 启动脚本，取而代之的是从 **NetBSD** 导入的 rc.d 系统（有时称为“rcNG”）。历史系统的所有功能都已保留。特别是，像 `/etc/rc.conf` 这样的文件仍然是配置系统启动的推荐方式。rc.d 系统自 FreeBSD 5.0-RELEASE 起就是默认的，因此这项变更对绝大多数用户来说应该是透明的。那些自定义了历史风格启动脚本的用户应该注意，以下文件已从 `/etc` 中删除：`rc.atm`、`rc.devfs`、`rc.diskless1`、`rc.diskless2`、`rc.i386`、`rc.alpha`、`rc.amd64`、`rc.ia64`、`rc.sparc64`、`rc.isdn`、`rc.network`、`rc.network6`、`rc.pccard`、`rc.serial`、`rc.syscons`、`rc.sysctl`。[mergemaster(8)](http://www.freebsd.org/cgi/man.cgi?query=mergemaster\&sektion=8\&manpath=FreeBSD+5.1-release) 在运行时将提供方便地将这些文件移走的选项。更多详细信息可以在 [rc.subr(8)](http://www.freebsd.org/cgi/man.cgi?query=rc.subr\&sektion=8\&manpath=FreeBSD+5.1-release) 中找到。

### 2.4 第三方软件

**ACPI-CA** 代码已从 20021118 快照更新到 20030228 快照。

**Bell Labs** 的 **awk** 已更新至 2003 年 3 月 14 日的快照。

**BIND** 已更新至 版本 8.3.4。\[已合并]

所有的 **bzip2** 应用程序现已安装在基本系统中（特别是，现在已构建并安装 bzip2recover）。\[已合并]

**CVS** 已更新至 1.11.5。\[已合并]

内核模块 **DRM** 已更新至 2003 年 4 月 24 日的 DRI CVS 仓库快照。已删除内核选项 `DRM_LINUX`，因为处理程序现在由 Linux 兼容性代码提供。

**FILE** 已更新至 3.41。\[已合并]

**GCC** 已更新至 3.2.2（发布版本）。

> **注意：**
>
> 已知 **GCC** 在设置 `-march=pentium4` 选项时会生成损坏的代码。为避免此问题，可以通过设置 Makefile 变量 `CPUTYPE=p4` （例如，在 [make.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=make.conf\&sektion=5\&manpath=FreeBSD+5.1-release) 中）来启用 GCC 的 `-march=pentium3` 选项。预计此问题将在导入 GCC 3.3 时解决。

已导入 **gdtoa** 库，用于字符串和浮动点之间的转换。这些源代码的日期为 2003 年 3 月 24 日。

**groff**（及相关工具）已从 1.18.1 更新至 1.19。

**IPFilter** 已更新至 3.4.31。\[已合并]

**ISC DHCP** 客户端已更新至 3.0.1RC11。\[已合并]

**ISC DHCP** 客户端现在包括 [omshell(1)](http://www.freebsd.org/cgi/man.cgi?query=omshell\&sektion=1\&manpath=FreeBSD+5.1-release) 工具和 [dhcpctl(3)](http://www.freebsd.org/cgi/man.cgi?query=dhcpctl\&sektion=3\&manpath=FreeBSD+5.1-release) 库，用于客户端的运行时控制。

已移除 **Kerberos IV** 支持（形式为 **KTH eBones**）。需要此功能的用户仍可从 Port（或包）security/krb4 中获取。已移除 Kerberos 5 的 Kerberos IV 兼容模式，并且 k5program 用户空间实用程序已重命名为 *kprogram*。

**Kerberos 5** 现在在 `buildworld` 操作中默认构建。设置 `MAKE_KERBEROS5` 不再有效。禁用基本系统 Kerberos 5 现在需要设置 Makefile 变量 `NO_KERBEROS` 。

**libpcap** 现在支持在接口上选择多个数据链路类型。

**lukemftpd**（默认不构建或安装）已更新至 2003 年 1 月 22 日的快照。

**OpenPAM** 已从 `Citronella` 版本更新至 `Dianthus` 版本。

**OpenSSH** 已更新至 3.6.1p1。

**OpenSSL** 已更新至 0.9.7a 发布版本。此版本包括对 AES 的支持，并利用 [crypto(4)](http://www.freebsd.org/cgi/man.cgi?query=crypto\&sektion=4\&manpath=FreeBSD+5.1-release) 设备。\[已合并]

**sendmail** 已更新至版本 8.12.9。\[已合并]

[tcpdump(1)](http://www.freebsd.org/cgi/man.cgi?query=tcpdump\&sektion=1\&manpath=FreeBSD+5.1-release) 已更新至版本 3.7.2。\[已合并] 它现在还支持 `-L` 参数来列出接口上可用的数据链路类型，以及 `-y` 选项来指定捕获数据包时使用的数据链路类型。

**texinfo** 已从 4.2 更新至 4.5。

时区数据库已从 tzdata2002d 更新至 tzdata2003a。\[已合并]

### 2.5 Ports/Packages 基础设施

已移除每个 Port 骨架中的单行 `pkg-comment` 文件，其内容已移至各 Port 的 Makefile 中。这一变化减少了 Ports 使用的磁盘空间和 inode 数量。\[已合并]

在为构建 Port 获取 `distfiles` 时，可以使用 Makefile 变量 `FETCH_REGET` 指定如果 `distfile` 的 MD5 校验和失败时尝试重新获取的次数。Ports 基础设施还支持重新获取中断的 `distfiles`。

[pkg\_create(1)](http://www.freebsd.org/cgi/man.cgi?query=pkg_create\&sektion=1\&manpath=FreeBSD+5.1-release) 现在支持 `-C` 选项，该选项允许软件包注册与其冲突的其他软件包列表。如果已安装其中一个冲突的软件包，则安装将被拒绝（通过 [pkg\_add(1)](http://www.freebsd.org/cgi/man.cgi?query=pkg_add\&sektion=1\&manpath=FreeBSD+5.1-release)）。`-f` 参数可以用来覆盖此冲突检查。

[pkg\_info(1)](http://www.freebsd.org/cgi/man.cgi?query=pkg_info\&sektion=1\&manpath=FreeBSD+5.1-release) 现在在输出中尊重环境变量 `BLOCKSIZE`，当使用 `-b` 参数时。

[pkg\_info(1)](http://www.freebsd.org/cgi/man.cgi?query=pkg_info\&sektion=1\&manpath=FreeBSD+5.1-release) 现在实现了 `-Q` 选项，该选项与 `-q` “quiet 静默”选项类似，不同之处在于它会在输出前新增软件包名称。

### 2.6 发布工程与集成

支持的 **GNOME** 版本已更新至 2.2.1。\[已合并]

支持的 **KDE** 版本已更新至 3.1.2。\[已合并]

不再有单独的 krb5 分发包。Kerberos 5 库和工具已合并入 crypto 分发包中。

[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+5.1-release) 再次支持安装 **XFree86** 的个别组件。支持性的变更（对用户不可见）将安装部分分发包作为软件包的概念进行了泛化。

支持的 **XFree86** 版本已更新至 4.3.0。\[已合并]

已移除几个旨在允许从 FreeBSD 2.*X* 升级到 3.*X* 以及从 FreeBSD 3.*X* 升级到 4.*X* 的升级机制。

### 2.7 文档

以下新文章已新增到文档集中：《从零开始使用 FreeBSD》和《5-STABLE 路线图》。

已启动一个新的丹麦语 (`da_DK.ISO8859-1`) 翻译项目。

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

强烈建议已有 FreeBSD 系统的用户阅读《FreeBSD 5.1-RELEASE 早期采用者指南》。该文档通常位于发行媒体上的文件名为 EARLY.TXT，或任何其他可以找到发行说明的地方。它提供了一些关于升级的注意事项，但更重要的是，它还讨论了升级到 FreeBSD 5.*X* 与继续使用 FreeBSD 4.*X* 的相对优缺点。

> **重要提示：**
>
> 升级 FreeBSD 时，当然必须在备份 *所有* 数据和配置文件之后进行。

***

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

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

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

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


---

# 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/5.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.
