> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/release/freebsd-4.5-release/4.5-i386.md).

# FreeBSD 4.5-RELEASE i386 发行说明（2002 年 1 月 29 日）

**FreeBSD 项目**

版权所有 © 2000、2001、2002，FreeBSD 文档项目

```ini
$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.22.2.191.2.1 2002/01/25 20:58:19 bmah Exp $
```

FreeBSD 4.5-RELEASE 的发行说明包含了自 4.4-RELEASE 以来在 FreeBSD 基本系统中所做变更的总结。列出了内核和用户空间的变更，以及自上次发布以来发布的适用于基本系统的安全公告。还包括了有关升级的简要说明。

## 1 引言

本文档包含了 FreeBSD 4.5-RELEASE 在 IA-32 硬件平台上的发行说明。它介绍了自 4.4-RELEASE 以来新增（或变更）的 FreeBSD 新特性。同时，它还提供了一些关于从先前版本升级的说明。

此发行版的 FreeBSD 4.5-RELEASE 是一个正式发行版。可以在 [ftp://ftp.FreeBSD.org/pub/FreeBSD/releases/](ftp://ftp.freebsd.org/pub/FreeBSD/releases/) 或其所有镜像站点找到。获取此（或其他）版本 FreeBSD 发行版的方法，请参阅 [FreeBSD 手册](http://www.freebsd.org/handbook/) 中的 [“获取 FreeBSD”](http://www.freebsd.org/handbook/mirrors.html) 附录。

## 2 新特性

本节介绍了自 4.4-RELEASE 以来，FreeBSD 中最显著的新特性或变更。典型的发行说明条目包括新驱动程序或硬件支持、新命令或选项、重要的错误修复或第三方软件升级。还列出了自 4.4-RELEASE 以来发布的适用于基本系统的安全公告。

由于篇幅限制，这里未列出许多对 FreeBSD 所做的其他变更。例如，文档得到修正和改进，修复了小的 bug，审计并修正了不安全的编码实践，并清理了源代码。

### 2.1 内核变更

[amdpm(4)](http://www.freebsd.org/cgi/man.cgi?query=amdpm\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序新增，提供对 AMD 756 芯片组的系统监控功能的访问。

`kern.maxvnodes` 限制现在正确地限制了使用中的 vnode 数量。之前只有没有缓存页面的 vnode 可以被释放，这可能导致在访问许多小文件的大内存机器上，vnode 数量无限增长。`vnlru` 内核线程帮助刷新并重用 vnode。

新增内核选项 `KVA_SPACE`，可以用来重新配置内核虚拟地址空间的大小。

Linux 模拟现在支持 Port [emulators/linux\_base-7](http://www.freebsd.org/cgi/url.cgi?ports/emulators/linux_base-7/pkg-descr)（RedHat 7.X 模拟）所需的内核功能。

内核配置参数 `MAXTSIZ`、`DFLDSIZ`、`MAXDSIZ`、`DFLSSIZ`、`MAXSSIZ` 和 `SGROWSIZ` 都是加载器可调参数（`kern.maxtsiz`、`kern.maxdfldsiz` 等）。

现在，指定 `maxusers` 内核配置参数的值为 `0` 会导致在启动时计算一个适当的值（根据内存大小，介于 32 和 384 之间）。此值现在是所有 **GENERIC** 内核的默认值。

新增 `pmc` 驱动程序，支持 NEC PC-98NOTE 的电源管理控制器。

现在，内核的加载地址导出到符号表中，移除了各种硬编码常量，以便像 [ps(1)](http://www.freebsd.org/cgi/man.cgi?query=ps\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 这样的工具能够与编译时使用不同地址的内核一起工作。

大型进程（或大量进程）的核心转储不再长时间锁定机器。

为每个进程分配的内核状态的内存页面数量从 2 增加到 3，以减少内核栈溢出（及随之而来的进程数据结构损坏）的可能性。

系统负载平均值计算现在对采样的时机添加了一些抖动，以避免与定期运行的进程同步。

如果正在构建带有模块的调试内核（即使用 `makeoptions DEBUG=-g`），则模块也将被构建为包含调试支持，以确保完整性。此变更的副作用是，使用调试内核构建并安装的模块现在会占用比以前更多的磁盘空间。

安装 CD 上的内核现在与 `mfsroot` 镜像分开。这为构建自定义 FreeBSD 发行版提供了更多的灵活性。

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

#### 2.1.2 引导加载程序

新增的 `cdboot` 引导实用程序为光盘提供了更好的兼容性，特别是对于那些未完全实现 El Torito 可启动光盘标准的某些 BIOS。这种引导加载程序支持“无仿真”模式启动，从而消除了在可启动光盘上使用仿真软盘映像的需求。这反过来允许在支持 CD 启动的机器上使用完整的内核进行安装（而不是在软盘上使用的精简内核）。

> **注意**
>
> 尽管此功能在 FreeBSD 4.5-RELEASE 的 ISO 镜像中未使用，但它可能会在未来的版本中得到应用。与此同时，用户在构建自定义发行版时可以使用此功能。

[loader(8)](http://www.freebsd.org/cgi/man.cgi?query=loader\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在提供了对加载 **bzip2** 压缩内核和模块的可选支持（在编译时启用，默认关闭）。

FreeBSD 引导加载程序现在能够从具有 16K 磁盘块的文件系统启动（旧限制为 8K）。

FreeBSD 引导加载程序现在支持选项 `-p`，用于在探测阶段强制内核在每行输出后暂停。

#### 2.1.3 网络接口支持

[an(4)](http://www.freebsd.org/cgi/man.cgi?query=an\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序现在支持“监视”模式，可以通过 [ancontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=ancontrol\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 的选项 `-M` 设置。

[bge(4)](http://www.freebsd.org/cgi/man.cgi?query=bge\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序新增，支持 Broadcom BCM570x 系列千兆以太网控制器，包括 3Com 3c996-T、SysKonnect SK-9D21 和 SK-9D41，以及 Dell PowerEdge 2550 服务器上的内置千兆以太网 NIC。支持输出 TCP/IP 校验和卸载、巨帧和 VLAN 标签插入/去除，以及中断调节。

[dc(4)](http://www.freebsd.org/cgi/man.cgi?query=dc\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序现在支持基于 Conexant LANfinity RS7112 芯片的 NIC。

[de(4)](http://www.freebsd.org/cgi/man.cgi?query=de\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序现在在 21143 的发送和接收单元之间执行轮询仲裁，而不是优先处理接收单元。这在高负载下提供了 10-15% 的转发速率提升。

`dgm` 驱动程序从 FreeBSD -CURRENT 更新。

新增驱动程序 [em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+4.5-RELEASE)，支持基于 Intel 82542、82543 和 82544 千兆以太网控制器芯片的 NIC。该驱动程序支持基于 82543 和 82544 的适配器的发送/接收校验和卸载和巨帧。

[faith(4)](http://www.freebsd.org/cgi/man.cgi?query=faith\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 设备现在可加载、卸载和克隆。

驱动程序 [fxp(4)](http://www.freebsd.org/cgi/man.cgi?query=fxp\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 现在支持 Intel 的可加载微代码，用于实现接收端中断合并和数据包捆绑，适用于支持这些功能的 NIC。此支持可以通过在 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 中使用选项 `link0` 来启用。

新增驱动程序 [gx(4)](http://www.freebsd.org/cgi/man.cgi?query=gx\&sektion=4\&manpath=FreeBSD+4.5-RELEASE)，支持基于 Intel 82542 和 82543 千兆以太网控制器芯片的 NIC。支持光纤和铜缆两种变体。两种板卡都支持 VLAN 标签/插入，并且 82543 还支持 TCP/IP 校验和卸载。

新增 `sbni` 驱动程序，用于支持 Granch SBNI12 系列 ISA 和 PCI 点对点通信接口。Port [sysutil/sbniconfig](http://www.freebsd.org/cgi/url.cgi?ports/sysutil/sbniconfig/pkg-descr) 可以用于配置这些设备。

驱动程序 [sis(4)](http://www.freebsd.org/cgi/man.cgi?query=sis\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 现在支持 SiS 900 风格的板载以太网控制器，适用于 SiS 635 和 735 主板芯片组。

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

[vlan(4)](http://www.freebsd.org/cgi/man.cgi?query=vlan\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 设备现在可加载、卸载和克隆。

驱动程序 [wx(4)](http://www.freebsd.org/cgi/man.cgi?query=wx\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 现在弃用，亦不再正式维护。具有 Intel Pro/1000 千兆以太网接口的用户应使用 [em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 或 [gx(4)](http://www.freebsd.org/cgi/man.cgi?query=gx\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序。（[em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序由 Intel 支持，但仅适用于 i386 架构。[gx(4)](http://www.freebsd.org/cgi/man.cgi?query=gx\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序由 FreeBSD 项目开发，支持多个平台。）

[xl(4)](http://www.freebsd.org/cgi/man.cgi?query=xl\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序现在为支持此功能的 NIC 提供 TCP/IP 发送和接收端校验和卸载，例如 3C905B、3C905C 和 3C980C。

驱动程序 [xl(4)](http://www.freebsd.org/cgi/man.cgi?query=xl\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 中一个与统计溢出中断处理相关的错误，会在中等到高数据包速率时导致速度下降；现已修复。

每个接口的 `ifnet` 结构现在具有指示网络接口支持的功能集以及哪些功能被启用的能力。[ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 支持查询这些功能。

通过将每个接口的 `if_inaddr` 线性列表替换为哈希表，改进了具有大量 IP 别名的主机的性能。

某些网络驱动程序（特别是 [dc(4)](http://www.freebsd.org/cgi/man.cgi?query=dc\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 和 [sis(4)](http://www.freebsd.org/cgi/man.cgi?query=sis\&sektion=4\&manpath=FreeBSD+4.5-RELEASE)）的包转发性能得到了提升，消除了不必要的缓冲区复制。

#### 2.1.4 网络协议

[bpf(4)](http://www.freebsd.org/cgi/man.cgi?query=bpf\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 的读取超时功能现在在与 [select(2)](http://www.freebsd.org/cgi/man.cgi?query=select\&sektion=2\&manpath=FreeBSD+4.5-RELEASE)/[poll(2)](http://www.freebsd.org/cgi/man.cgi?query=poll\&sektion=2\&manpath=FreeBSD+4.5-RELEASE) 以及 `pthreads` 一起使用时工作得更加正确。

[bridge(4)](http://www.freebsd.org/cgi/man.cgi?query=bridge\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 和 [dummynet(4)](http://www.freebsd.org/cgi/man.cgi?query=dummynet\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 已经做了一些增强和错误修复，并且现在是可以加载的模块。

修复了 TCP NewReno 实现中的一个错误，该错误可能会在某些情况下导致吞吐量下降。

TCP 的默认缓冲区大小，由 sysctl 变量 `net.inet.tcp.sendspace` 和 `net.inet.tcp.recvspace` 控制，现已分别增加到 `32K` 和 `64K`。以前，这两个缓冲区的默认值为 `16K`。为尽量避免增加拥塞，`net.inet.tcp.local_slowstart_flightsize` 的默认值从无穷大改为 `4`。

> **注意**
>
> 在繁忙的主机上，新的更大缓冲区大小可能需要手动增加参数 `NMBCLUSTERS`，无论是在内核配置文件中，还是通过加载器可调参数 `kern.ipc.nmbclusters`。可以使用 `netstat -mb` 来监控 mbuf 集群的状态。

修复了导致 TCP 连接在发送方看到零大小窗口时可能发生停滞的错误。

FreeBSD 中的 TCP 实现现在实现了缓存，用于存储未完成的、接收到的 SYN 段。传入的 SYN 段现在会导致条目被放入缓存，直到 TCP 三次握手完成，此时会像往常一样为连接分配内存。此外，所有的 TCP 初始序列号（ISN）都作为 cookie 使用，从而允许在缓存中删除条目，但仍然可以接受其相应的 ACK。所谓的“syncache”和“syncookies”特性组合使得主机对基于 TCP 的拒绝服务攻击更具抵抗力。此功能的开发工作由 DARPA 和 NAI Labs 赞助。

#### 2.1.5 磁盘和存储

已更新驱动程序 [aac(4)](http://www.freebsd.org/cgi/man.cgi?query=aac\&sektion=4\&manpath=FreeBSD+4.5-RELEASE)，包含对适配器发起的命令的正确处理、磁盘设备的添加/移除、崩溃转储功能以及管理 CLI 所需的 [ioctl(2)](http://www.freebsd.org/cgi/man.cgi?query=ioctl\&sektion=2\&manpath=FreeBSD+4.5-RELEASE) 命令。该驱动程序现在完全符合 Adaptec 的要求，并获得了其批准。

[ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序现在支持更多种类的芯片组，具体请参见硬件说明。

[ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序现在支持 48 位寻址。现在支持大于 137GB 的设备。

[ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序现在修复了使用 VIA 82C686B 南桥芯片的系统中的一些数据损坏问题。

新增 `ciss` 驱动程序，用于支持使用 SCSI-3 通用接口（Common Interface for SCSI-3 Support）的设备。该驱动程序支持 Compaq SmartRAID 5\* 系列 RAID 控制器（5300、532、5i）。

[isp(4)](http://www.freebsd.org/cgi/man.cgi?query=isp\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序现在支持 Qlogic 2300 和 2312 光纤通道 PCI 卡。

`ncv`、`nsp` 和 `stg` SCSI 驱动程序现在可以作为模块构建和加载。

#### 2.1.6 文件系统

FFS 的目录布局偏好算法（`dirprefs`）发生变化。它不再将目录块散布到磁盘上，而是尝试将相关的目录块聚集在一起。遍历大规模目录层级（如 FreeBSD Ports 树）时，表现出显著的速度提升。对于新目录，这一变化是透明且自动的。

虚拟内存子系统现在默认支持 UFS 目录内存需求（此行为由 sysctl 变量 `vfs.vmiodirenable` 控制）。

修复了导致无法从 SCSI CDROM 挂载根文件系统的问题（ATAPI CDROM 一直受支持）。

`UFS_DIRHASH`（基于哈希的大目录查找优化）现在在 **GENERIC** 内核中默认启用。

修复了若干文件系统代码中的错误（这些错误通过 **fsx** 文件系统测试工具发现）。在某些情况下（主要与 NFS 使用有关），这些错误可能会导致数据损坏或内核 `panic`。

#### 2.1.7 PCCARD 支持

从 FreeBSD -CURRENT 版本的 [pcic(4)](http://www.freebsd.org/cgi/man.cgi?query=pcic\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序合并了多个特性，包括对基于 ToPIC 的笔记本电脑的改进支持、对某些控制器的 `3.3V` 支持以及错误修复。

#### 2.1.8 多媒体支持

[urio(4)](http://www.freebsd.org/cgi/man.cgi?query=urio\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序加入，用于 Diamond Rio 系列 MP3 播放器。（由于某种原因，此驱动程序的手册页已提交至 FreeBSD 4.3-RELEASE。）

#### 2.1.9 第三方软件

**IPFilter** 现在支持 IPv6。

**2.1.9.1 isdn4bsd**

[isdnphone(8)](http://www.freebsd.org/cgi/man.cgi?query=isdnphone\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在支持选项 `-k`，用于通过键盘功能发送消息到 PBX 或交换局。

[isic(4)](http://www.freebsd.org/cgi/man.cgi?query=isic\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 驱动程序现在支持 Compaq Microcom 610 ISDN ISA PnP 卡。

### 2.2 与安全相关的变更

FreeBSD 4.4-RELEASE 中禁用了每个用户的 **\~/.login.conf** 文件，以规避由 bug 引起的安全漏洞。修复了该 bug，且此功能重新启用。

修复了 **OpenSSH** 中的一个安全漏洞，该漏洞可能允许用户在启用 `UseLogin yes` 的情况下执行任意权限的代码。请注意，该设置的默认值为 `UseLogin no`。（参见安全公告 [FreeBSD-SA-01:63](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-01:63.openssh.asc)。）

[pkg\_add(1)](http://www.freebsd.org/cgi/man.cgi?query=pkg_add\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 使用不安全的临时目录可能允许本地攻击者在安装二进制软件包时修改其内容。修复了这个漏洞。（参见安全公告 [FreeBSD-SA-02:01](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02:01.pkg_add.asc)。）

消除了 [pw(8)](http://www.freebsd.org/cgi/man.cgi?query=pw\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 中的一个竞争条件，该条件可能会暴露 **/etc/master.passwd** 的内容。（参见安全公告 [FreeBSD-SA-02:02](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02:02.pw.asc)。）

修复了 [k5su(8)](http://www.freebsd.org/cgi/man.cgi?query=k5su\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 中的一个 bug，该 bug 可能允许已放弃超级用户权限的进程重新获得这些权限。（参见安全公告 [FreeBSD-SA-02:07](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02:07.k5su.asc)。）

修复了 [exec(3)](http://www.freebsd.org/cgi/man.cgi?query=exec\&sektion=3\&manpath=FreeBSD+4.5-RELEASE) 系统调用中的一个竞争条件，该条件可能导致本地用户获得提升的权限。（参见安全公告 [FreeBSD-SA-02:08](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-02:08.exec.asc)。）

### 2.3 用户空间变更

[arp(8)](http://www.freebsd.org/cgi/man.cgi?query=arp\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在为每个 ARP 条目打印适用的接口名称。

[camcontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=camcontrol\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 的简化版现已可通过安装软盘使用。这使得它能够在启动后重新扫描连接的设备，或者显示连接到 SCSI 总线的设备（例如，从“紧急全息 shell”中）。作为副作用，它允许通过基于 [aic(4)](http://www.freebsd.org/cgi/man.cgi?query=aic\&sektion=4\&manpath=FreeBSD+4.5-RELEASE) 的 PCMCIA SCSI 适配器（如 Adaptec APA-1460）在安装过程中使用设备。

[cat(1)](http://www.freebsd.org/cgi/man.cgi?query=cat\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在可以从 UNIX 域套接字读取。

`compat4x` 兼容性发行版现在包括不依赖于 `librsaUSA.so` 和 `librsaINTL.so` 库的 `libcrypto.so.1` 和 `libssl.so.1` 版本。这一变更提高了与为 FreeBSD 4.1-RELEASE 及更早版本构建的二进制文件的兼容性。

[edquota(8)](http://www.freebsd.org/cgi/man.cgi?query=edquota\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在可以使用选项 `-f`，将原型配额分配（通过 `-p` 指定）限制到单个文件系统。

[find(1)](http://www.freebsd.org/cgi/man.cgi?query=find\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在可以接受不同时间单位，应用于 `-[acm]time` 原语。

[fmt(1)](http://www.freebsd.org/cgi/man.cgi?query=fmt\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 已被重写；重写修复了之前行为中的一些 bug。

[ftpd(8)](http://www.freebsd.org/cgi/man.cgi?query=ftpd\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在支持选项 `-o` 和 `-O`，分别禁用 RETR 命令；前者适用于所有人，后者仅适用于访客用户。结合选项 `-A` 和适当的文件权限，这些可以用来创建相对安全的匿名 FTP 上传盒，供他人上传文件。

[groups(1)](http://www.freebsd.org/cgi/man.cgi?query=groups\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 和 [whoami(1)](http://www.freebsd.org/cgi/man.cgi?query=whoami\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) shell 脚本现在不再需要；它们的功能完全合并到 [id(1)](http://www.freebsd.org/cgi/man.cgi?query=id\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 中。

[ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在默认不显示动态防火墙规则，除非传递选项 `-d`。选项 `-e` 列出过期的动态规则。

[ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 新增 `limit` 类型的防火墙规则，用于限制地址对之间的会话数量。

[keyinfo(1)](http://www.freebsd.org/cgi/man.cgi?query=keyinfo\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在是 C 程序，而非 Perl 脚本。

`libfetch` 已同步到 FreeBSD -CURRENT 版本；现在支持认证回调等新特性。

`libstand` 现在支持包含 **bzip2** 压缩文件的文件系统。

本地化名称重命名，以提高与 X11R6 及其他多个 UNIX 版本使用的名称的兼容性。例如，`en_US.ISO_8859-1` 本地化名称变更为 `en_US.ISO8859-1`。**/etc/locale.alias**、**/etc/man.alias** 和 **/etc/nls.alias** 中的条目提供了向后兼容性。下面的表格总结了本地化变更：

| FreeBSD 4.4-RELEASE | FreeBSD 4.5-RELEASE |
| ------------------- | ------------------- |
| ISO\_ \*\*\*        | ISO \*\*\*          |
| ru\_SU \*\*\*       | ru\_RU \*\*\*       |
| DIS\_ \*\*\*        | ISO \*\*\* -15      |
| \*\*\* .ASCII       | \*\*\* .US-ASCII    |

[lpd(8)](http://www.freebsd.org/cgi/man.cgi?query=lpd\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在在其控制文件中支持某些 `o-type` 打印文件操作，这允许打印由 **MacOS** 10.1 生成的 PostScript 文件。

[natd(8)](http://www.freebsd.org/cgi/man.cgi?query=natd\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在支持选项 `-log_ipfw_denied`，用于记录因被 [ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 规则阻止而无法重新注入的分组。

[netstat(1)](http://www.freebsd.org/cgi/man.cgi?query=netstat\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在有选项 `-z` 用于重置统计信息。

[netstat(1)](http://www.freebsd.org/cgi/man.cgi?query=netstat\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在有选项 `-S`，用于以数字方式打印地址，而端口名则以符号方式打印。

在 [newfs(8)](http://www.freebsd.org/cgi/man.cgi?query=newfs\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 中，每组的默认柱面数现在根据当前文件系统参数计算得出，即当前文件系统参数下允许的最大值。可以通过选项 `-c` 进行覆盖。以前，默认值固定为 16。此变更有助于提高 [fsck(8)](http://www.freebsd.org/cgi/man.cgi?query=fsck\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 性能并减少碎片。

[newfs(8)](http://www.freebsd.org/cgi/man.cgi?query=newfs\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 创建的新文件系统的默认块和碎片大小现在分别为 16384 字节和 2048 字节（旧的默认值为 8192 字节和 1024 字节）。这一变更通常会提高性能，但会浪费一些磁盘空间。

[newsyslog(8)](http://www.freebsd.org/cgi/man.cgi?query=newsyslog\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在支持使用 [bzip2(1)](http://www.freebsd.org/cgi/man.cgi?query=bzip2\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 压缩日志文件。

已添加 [nl(1)](http://www.freebsd.org/cgi/man.cgi?query=nl\&sektion=1\&manpath=FreeBSD+4.5-RELEASE)，行号过滤程序。

[pciconf(8)](http://www.freebsd.org/cgi/man.cgi?query=pciconf\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在支持 `-v` 选项，用于与 `-l` 选项配合使用时显示配置设备的厂商/设备信息。可以在 **/usr/share/misc/pci\_vendors** 中找到默认的厂商/设备数据库。

[ping(8)](http://www.freebsd.org/cgi/man.cgi?query=ping\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在支持选项 `-A`，在丢包时发出蜂鸣声。

[route(8)](http://www.freebsd.org/cgi/man.cgi?query=route\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 在变更间接路由时现在会更详细地显示信息，在修改的路由与网关路由相同的情况下。

[route(8)](http://www.freebsd.org/cgi/man.cgi?query=route\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在使用 `host`/`bits` 语法，而不是 `net`/`bits` 语法，以与 [netstat(1)](http://www.freebsd.org/cgi/man.cgi?query=netstat\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 兼容。

[route(8)](http://www.freebsd.org/cgi/man.cgi?query=route\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在可以创建仅“代理”的发布 ARP 条目。

[route(8)](http://www.freebsd.org/cgi/man.cgi?query=route\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 的命令 `add` 现在支持 `-ifp` 和 `-ifa` 修饰符。

[send-pr(1)](http://www.freebsd.org/cgi/man.cgi?query=send-pr\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在可以使用选项 `-a` 将文件包含到问题报告的 `Fix:` 部分。

[sh(1)](http://www.freebsd.org/cgi/man.cgi?query=sh\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在将 `test` 实现为内建命令，以提高效率。

[sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在支持选项 `-e`，以使用 `=` 分隔变量名和值，而不是使用 `:`。此功能对于生成可以反馈给 [sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 的输出非常有用。

[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在可以在安装过程中加载 `KLD`。

当从安装媒体运行时，[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 会自动加载在 `mfsroot` 软盘或文件系统映像的 **/stand/modules** 目录中找到的任何设备驱动程序。请注意，任何加载的驱动程序将不会出现在内核的启动消息中；[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 的调试屏幕将提供更多信息。

[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在默认在它创建的所有文件系统上启用软更新（除根文件系统外）。

[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 的“自动”分区模式进行了更新，提供了更合理的分区大小默认值；自动调整大小的分区现在也可以回收删除其他分区时释放的空间。

[syslogd(8)](http://www.freebsd.org/cgi/man.cgi?query=syslogd\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在可以通过选项 `-b` 绑定到特定地址（而不是使用所有可用地址）。

[syslogd(8)](http://www.freebsd.org/cgi/man.cgi?query=syslogd\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在接受选项 `-c` 来禁用重复行压缩。

以前，[vnconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=vnconfig\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 在使用 `-f`（配置文件）选项时只能配置 16 个设备。这个限制已移除。

[wall(1)](http://www.freebsd.org/cgi/man.cgi?query=wall\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在支持选项 `-g`，向指定组的所有用户发送消息。

[whois(1)](http://www.freebsd.org/cgi/man.cgi?query=whois\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 支持选项 `-c`，用于指定国家代码，以帮助将查询定向到特定的 whois 服务器。

#### 2.3.1 第三方软件

FreeBSD 附带的 **IPFilter** 版本现在包含了 [ipfs(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfs\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 程序，该程序允许将为 NAT 条目和有状态规则创建的状态信息保存到磁盘，并在重新启动后恢复。这些功能的引导配置由 [rc.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=rc.conf\&sektion=5\&manpath=FreeBSD+4.5-RELEASE) 支持。

程序套件 **NTP** 已更新至 4.1.0 版本。

**OpenSSH** 已更新至 2.9 版，新增了两个程序：[sftp(1)](http://www.freebsd.org/cgi/man.cgi?query=sftp\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 和 [ssh-keyscan(1)](http://www.freebsd.org/cgi/man.cgi?query=ssh-keyscan\&sektion=1\&manpath=FreeBSD+4.5-RELEASE)。其中的一些增强功能包括：现在支持对现有的 SSH 会话进行密钥重协商，[ssh-agent(1)](http://www.freebsd.org/cgi/man.cgi?query=ssh-agent\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在支持 DSA 密钥的认证转发，并且在 [ssh(1)](http://www.freebsd.org/cgi/man.cgi?query=ssh\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 中新增了实验性的 **SOCKS4** 代理。

> **注意**
>
> `Protocol 1,2` 仍然是 **/etc/ssh/ssh\_config** 中的默认协议设置。在 FreeBSD -CURRENT 中，默认设置为 `Protocol 2,1`。

将 `smmsp` 和 `mailnull` 用户添加到 **/etc/master.passwd** 中。如果没有设置 `confDEF_USER_ID`，默认情况下 **sendmail** 将使用 `mailnull` 用户以提高安全性。以前，如果 `mailnull` 用户不存在，则使用 `daemon` 用户。此变更可能会在向文件或程序（如 [mail/majordomo](http://www.freebsd.org/cgi/url.cgi?ports/mail/majordomo/pkg-descr)）发送邮件时产生权限问题。通过在系统的 `*.mc` 配置文件中新增以下行，可以恢复先前的行为：

```sh
    define(`confDEF_USER_ID', `daemon')
```

导入用户空间实用程序 **smbfs** 的版本 1.4.3。[smbutil(1)](http://www.freebsd.org/cgi/man.cgi?query=smbutil\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 和 [mount\_smbfs(8)](http://www.freebsd.org/cgi/man.cgi?query=mount_smbfs\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 现在可以在基本系统中使用，无需安装 Port [net/smbfs](http://www.freebsd.org/cgi/url.cgi?ports/net/smbfs/pkg-descr)。请注意，[mount\_smbfs(8)](http://www.freebsd.org/cgi/man.cgi?query=mount_smbfs\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 将自动将模块 **smbfs.ko** 加载到内核中，即使 `LIBMCHAIN` 和 `LIBICONV` 未编译到内核中。

**tcsh** 已更新至 6.11 版本。

时区数据库已更新至 `tzdata2001d` 版本。

**2.3.1.1 CVS**

**CVS** 已更新至 1.11.1p1。

[cvs(1)](http://www.freebsd.org/cgi/man.cgi?query=cvs\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在支持选项 `-T`，用于从仓库更新沙箱的 `CVS/Template` 文件。

[cvs(1)](http://www.freebsd.org/cgi/man.cgi?query=cvs\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) `diff` 现在支持选项 `-j`，用于执行相对于分支标签的修订差异比较。

#### 2.3.2 Ports/软件包

由于认证过程的延迟，FreeBSD 的本地 **JDK** 支持将在 4.5-RELEASE 之后不久发布。当发行版可用时，将在 FreeBSD 网站以及 FreeBSD 公告邮件列表 <freebsd-announce@FreeBSD.org> 上发布公告。

[pkg\_create(1)](http://www.freebsd.org/cgi/man.cgi?query=pkg_create\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在支持选项 `-b`，用于从本地安装的软件包创建包文件。

[pkg\_delete(1)](http://www.freebsd.org/cgi/man.cgi?query=pkg_delete\&sektion=1\&manpath=FreeBSD+4.5-RELEASE) 现在支持选项 `-r`，用于递归删除软件包。

**XFree86** 版本 4.2.0 在 FreeBSD 4.5-RELEASE 的发行日期前几天发布。因此，FreeBSD 团队没有时间测试和评估新版本以便纳入发行版。所以，FreeBSD 4.5-RELEASE 包含较旧的 4.1.0 版本的 **XFree86** 软件包。安装较新版本的 **XFree86** 可以通过更新（发布后）版本的 FreeBSD Ports 来完成；有关说明，请参阅 [FreeBSD 手册](http://www.freebsd.org/handbook/) 中的 [使用 Ports](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/ports-using.html) 章节。

## 3 从旧版 FreeBSD 升级

如果你正在从先前版本的 FreeBSD 升级，通常有三种选择：

* 使用 [sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+4.5-RELEASE) 的二进制升级方法。这个方法可能是最快的，尽管它假设你的 FreeBSD 安装没有使用任何特殊的编译选项。
* 完全重新安装 FreeBSD。严格来说，这不是一种升级方法，并且通常不如二进制升级方便，因为它需要你手动备份和恢复 **/etc** 目录的内容。然而，在你想要（或需要）变更磁盘分区的情况下，这可能是有用的。
* 从 **/usr/src** 中的源代码升级。这种方式更灵活，但需要更多的磁盘空间、时间以及更多的技术专长。从非常旧的 FreeBSD 版本升级可能会遇到问题；在这种情况下，通常执行二进制升级或完全重新安装会更有效。

请阅读 `INSTALL.TXT` 文件以获取更多信息，最好是在开始升级之前。如果你是从源代码升级，请确保也阅读 **/usr/src/UPDATING**。

最后，如果你想使用各种方式跟踪 FreeBSD 的 -STABLE 或 -CURRENT 分支，请务必查阅 [FreeBSD 手册](http://www.freebsd.org/handbook/) 中的 [-CURRENT vs. -STABLE](http://www.freebsd.org/handbook/current-stable.html) 章节。

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

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

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

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://book.bsdcn.org/release/freebsd-4.5-release/4.5-i386.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
