> 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.4-release/4.4-i386.md).

# FreeBSD 4.4-RELEASE i386 发行说明（2001 年 9 月 20 日）

**FreeBSD 项目**

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

## 1 引言

本文档包含了 FreeBSD 4.4-RELEASE 在 i386 硬件平台上的发行说明。它介绍了自 4.3-RELEASE 以来，FreeBSD 新增（及变更）的特性。

此版本的 FreeBSD 4.4-RELEASE 是发布版本。它可以在 [ftp://ftp.FreeBSD.org/pub/FreeBSD/](ftp://ftp.freebsd.org/pub/FreeBSD/) 或其任何镜像站点找到。获取该版本（或其他版本）发行版的方法，请参考 [FreeBSD 手册](http://www.freebsd.org/handbook/) 中的 [“获取 FreeBSD”附录](http://www.freebsd.org/handbook/mirrors.html)。

## 2 新特性

```sh
$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.22.2.86.2.1 2001/09/14 19:35:01 bmah Exp $
```

本节介绍了自 4.3-RELEASE 以来，FreeBSD 中对用户最直观的新增或变更特性。

由于篇幅限制，许多其他变更未在此列出。例如，修正和改进了文档，修复了小错误，审查并纠正了不安全的编码实践，清理了源代码。

发行说明条目分为三个不同的部分。[第 2.1 节](https://www.freebsd.org/releases/4.4R/relnotes-i386/#KERNEL) 列出了 FreeBSD 内核的最新变更。与安全相关的修复，包括与安全公告相关的内容，在 [第 2.2 节](https://www.freebsd.org/releases/4.4R/relnotes-i386/#SECURITY) 中列出。最后，[第 2.3 节](https://www.freebsd.org/releases/4.4R/relnotes-i386/#USERLAND) 介绍了 FreeBSD 基本系统中用户空间应用程序的变更。

### 2.1 内核变更

[open(2)](http://www.freebsd.org/cgi/man.cgi?query=open\&sektion=2) 和 [fcntl(2)](http://www.freebsd.org/cgi/man.cgi?query=fcntl\&sektion=2) 新增了标志 `O_DIRECT`。为已打开的文件指定此标志将尽量减少读取和写入时的缓存效应。

新增了 [orm(4)](http://www.freebsd.org/cgi/man.cgi?query=orm\&sektion=4) 设备来声明 ISA 内存 I/O 空间中的选项 ROM，以防止其他驱动程序错误地分配与这些 ROM 冲突的地址。

交换空间耗尽时的进程终止代码现在提前开始终止进程，以避免死锁；它现在还会在计算进程大小时考虑进程使用的交换空间。

现在实现了网络设备克隆，且 [gif(4)](http://www.freebsd.org/cgi/man.cgi?query=gif\&sektion=4) 设备修改为利用这一特性。因此，不再需要在内核配置文件中指定有多少 [gif(4)](http://www.freebsd.org/cgi/man.cgi?query=gif\&sektion=4) 接口，而应使用 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8) 的选项 `create` 来创建其他设备实例。

引入了 [ddb(4)](http://www.freebsd.org/cgi/man.cgi?query=ddb\&sektion=4) 命令 `hwatch` 和 `dhwatch`。与 `watch` 和 `dwatch` 类似，它们会安装硬件观察点（如果架构支持），而非软件观察点。

新增了 null-modem 终端驱动程序 [nmdm(4)](http://www.freebsd.org/cgi/man.cgi?query=nmdm\&sektion=4)。

[stl(4)](http://www.freebsd.org/cgi/man.cgi?query=stl\&sektion=4) 驱动程序现在支持 Stallion Technologies 基于 Signetics SC26C194/8 智能四端口/八端口 UART 的 PCI 和 ISA EasyIO 多端口串行卡。

`maxusers` 内核配置参数现在是一个可调的引导时变量。基于 `maxusers` 的内核参数现在也可以调节，并且可以在引导时覆盖。参数 `hz` 现在也是一个可调参数。

FreeBSD 引导加载程序现在包含解决方法，以支持在某些 IBM BIOS 上通过光盘启动，这些 BIOS 期望模拟软盘的第一个扇区包含可以修改的有效 MS-DOS BPB。

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

新增了对新处理器的检测，例如 Transmeta Crusoe 和带有 LongRun 的 Transmeta Crusoe。

引入了对 Streaming SIMD 扩展（SSE）的支持。内核选项 **CPU\_ENABLE\_SSE** 控制是否将此支持编译进内核。

#### 2.1.2 网络接口支持

[fxp(4)](http://www.freebsd.org/cgi/man.cgi?query=fxp\&sektion=4) 驱动程序现在需要在内核配置文件中包含 `device miibus` 条目。

[wx(4)](http://www.freebsd.org/cgi/man.cgi?query=wx\&sektion=4) 驱动程序现在支持 Intel PRO1000-F 和 PRO1000-T（10/100/1000）适配器。

[an(4)](http://www.freebsd.org/cgi/man.cgi?query=an\&sektion=4) 驱动程序现在支持 Cisco Aironet 350 系列适配器，并且修复了一些错误；混杂模式现在可以正常工作，并且可以在启用前配置。

[xl(4)](http://www.freebsd.org/cgi/man.cgi?query=xl\&sektion=4) 驱动程序现在支持接收 VLAN 标记帧（在“Cyclone”或更新的芯片组上）。

[ti(4)](http://www.freebsd.org/cgi/man.cgi?query=ti\&sektion=4) 驱动程序正确地屏蔽 VLAN 标记。

新增 [nge(4)](http://www.freebsd.org/cgi/man.cgi?query=nge\&sektion=4) 驱动程序，支持基于 National Semiconductor DP83820 和 DP83821 Gigabit Ethernet 控制器芯片的 PCI 千兆以太网适配器，包括 D-Link DGE-500T、SMC EZ Card 1000（SMC9462TX）、Asante FriendlyNet GigaNIC 1000TA 和 1000TPC 以及 Addtron AEG320T。此驱动程序支持发送和接收校验和卸载。

新增了 [lge(4)](http://www.freebsd.org/cgi/man.cgi?query=lge\&sektion=4) 驱动程序，以支持 Level 1 LXT1001 NetCellerator Gigabit Ethernet 控制器芯片。此设备用于一些来自 SMC、D-Link 和 Addtron 的光纤 GigE 卡。支持接收时的巨型帧和 TCP/IP 校验和卸载，但不支持硬件 VLAN 过滤。

[tx(4)](http://www.freebsd.org/cgi/man.cgi?query=tx\&sektion=4) 驱动程序现在支持光纤 SMC 9432FTX 网卡。

[ed(4)](http://www.freebsd.org/cgi/man.cgi?query=ed\&sektion=4) 驱动程序现在支持 D-Link DL10022 芯片，这是 NetGear FA-410TX 和其他网卡所必需的。因此，使用 [ed(4)](http://www.freebsd.org/cgi/man.cgi?query=ed\&sektion=4) 驱动程序的内核配置现在需要 `device miibus`。

新增了 [txp(4)](http://www.freebsd.org/cgi/man.cgi?query=txp\&sektion=4) 驱动程序，支持基于 3Com 3XP Typhoon/Sidewinder（3CR990）芯片组的网卡。

#### 2.1.3 网络协议

TCP 现在在 [rc.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=rc.conf\&sektion=5) 中默认启用 RFC 1323 扩展。

如果发送第三个 SYN 段后仍未收到响应，则会在进行中的连接上禁用 RFC 1323 和 RFC 1644 TCP 扩展。这种行为旨在绕过（非常旧的）终端服务器中存在的有缺陷的 VJ 标头压缩实现。

删除了内核选项 **TCP\_RESTRICT\_RST**。可以通过 sysctl 变量 `net.inet.tcp.blackhole` 实现类似的功能。

TCP 实现现在不再需要为每个连接分配 TCP 模板结构；这应减少在处理大量连接的系统上的缓冲区使用。

新增的 sysctl `net.inet.ip.check_interface`（默认为关闭）会使 IP 验证传入的数据包是否到达具有与数据包目标地址匹配的地址的接口。

新增内核选项 **RANDOM\_IP\_ID** 会随机化 IP 数据包的 ID 字段。这解决了一个小的信息泄漏问题，避免远程观察者通过观察 ID 字段来判断机器生成数据包的速率，因为默认行为是对每个发送的数据包递增计数器。

#### 2.1.4 磁盘和存储

[asr(4)](http://www.freebsd.org/cgi/man.cgi?query=asr\&sektion=4) 驱动程序现在支持 Adaptec 2000S 和 2005S 零通道 RAID 控制器。

[aac(4)](http://www.freebsd.org/cgi/man.cgi?query=aac\&sektion=4) 驱动程序现在支持 Adaptec SCSI RAID 5400S 控制器。

[ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4) 驱动程序再次默认启用写缓存。

从 [ata(4)](http://www.freebsd.org/cgi/man.cgi?query=ata\&sektion=4) 驱动程序中移除了兼容设备 [wd(4)](http://www.freebsd.org/cgi/man.cgi?query=wd\&sektion=4)。

#### 2.1.5 文件系统

在内核中新增了 smbfs（CIFS）支持。相应的用户空间文件系统挂载工具可以在 FreeBSD Ports 中的 [net/smbfs](http://www.freebsd.org/cgi/url.cgi?ports/net/smbfs/pkg-descr) 找到。

新增了基于哈希的简单查找优化方法 `dirhash`，专门用于大目录。由内核选项 **UFS\_DIRHASH** 控制，它提高了对非常大目录的操作速度，但会消耗一些内存。

#### 2.1.6 PCCARD 支持

在许多现代主机上，PCCARD 设备可以配置为通过 ISA 或 PCI 中断路径来路由它们的中断。更新了 [pcic(4)](http://www.freebsd.org/cgi/man.cgi?query=pcic\&sektion=4) 驱动程序，以支持这两种中断路径（之前只支持通过 ISA 路由）。在大多数情况下，笔记本电脑中 PCMCIA 设备的配置更简单且更灵活。此外，现在支持各种 Cardbus 桥 PCI 卡（如用于 Orinoco PCI NIC 的卡）。某些主机在使用 PCI 中断路由时可能会遇到挂起或 panic 等问题；通常可以通过强制使用旧版 ISA 中断路由来使其正常工作。将以下行放置在 **/boot/loader.conf** 中可能会解决该问题：

```sh
    hw.pcic.intr_path="1"
    hw.pcic.irq="0"
```

在这样的系统上安装 FreeBSD 时，在引导加载程序中输入以下命令可能有助于首次启动 FreeBSD：

```sh
    ok set hw.pcic.intr_path="1"
    ok set hw.pcic.irq="0"
```

PCCARD 卡弹出有时会导致系统挂起；这些情况的解决方法是执行：

```sh
  # pccardc power 0 slot
```

#### 2.1.7 多媒体支持

新增了对 Advance Logic ALS4000 的驱动程序。

#### 2.1.8 第三方软件

**IPFilter** 更新到 3.4.20。

**2.1.8.1 isdn4bsd**

**isdn4bsd** 更新到版本 1.0.1。由于此更新，使用 [i4bisppp(4)](http://www.freebsd.org/cgi/man.cgi?query=i4bisppp\&sektion=4)（内核 PPP over ISDN）驱动程序的用户 *必须* 改用 [ispppcontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=ispppcontrol\&sektion=8) 而不是 [spppcontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=spppcontrol\&sektion=8) 来配置和控制这些网络接口。

新增了 [ihfc(4)](http://www.freebsd.org/cgi/man.cgi?query=ihfc\&sektion=4) 驱动程序，用于在 **isdn4bsd** 下支持 Cologne Chip Designs HFC 设备。

新增了 [itjc(4)](http://www.freebsd.org/cgi/man.cgi?query=itjc\&sektion=4) 驱动程序，用于在 **isdn4bsd** 下支持 NETjet-S / Teles PCI-TJ 设备。

为 [isic(4)](http://www.freebsd.org/cgi/man.cgi?query=isic\&sektion=4) **isdn4bsd** 驱动程序新增了 Eicon.Diehl DIVA 2.0 和 2.02 ISA PnP ISDN 卡的实验性支持。

现在可以使用 [i4bcapi(4)](http://www.freebsd.org/cgi/man.cgi?query=i4bcapi\&sektion=4) 和 [iavc(4)](http://www.freebsd.org/cgi/man.cgi?query=iavc\&sektion=4) 驱动程序支持由 AVM 制造的主动式、基于 CAPI 的 ISDN 卡。支持的卡包括 AVM B1 PCI 和 AVM B1 ISA 基本速率卡，以及 AVM T1 主速率卡。

现在 [isdnd.rc(5)](http://www.freebsd.org/cgi/man.cgi?query=isdnd.rc\&sektion=5) 文件支持新的 `maxconnecttime` 关键字，用于限制连接可以保持的时间。

**2.1.8.2 KAME**

IPv6 堆栈现在基于 KAME 项目 2001 年 5 月 28 日的 IPv6 快照。此部分列出的多数项目都是此次导入的结果。[2.3.1.2 节](https://www.freebsd.org/releases/4.4R/relnotes-i386/#KAME-USERLAND) 列出了 KAME IPv6 堆栈的用户空间更新。

[gif(4)](http://www.freebsd.org/cgi/man.cgi?query=gif\&sektion=4) 现在基于 RFC 2893，而不是 RFC 1933。可以使用 `IFF_LINK2` 接口标志来控制流入过滤。

**IPSec** 得到了一些增强，包括能够使用 Rijndael 和 SHA2 算法。由于专利问题，移除了 IPSec 对 RC5 的支持。

[stf(4)](http://www.freebsd.org/cgi/man.cgi?query=stf\&sektion=4) 现在符合 RFC 3056；可以使用 `IFF_LINK2` 接口标志来控制流入过滤。

IPv6 现在可以更好地检查物理网络上的非法地址（例如回环地址）。

IPv6 的 `IPV6_V6ONLY` 套接字选项现已完全支持。内核对该选项的默认行为由 sysctl 变量 `net.inet6.ip6.v6only` 控制。

现在支持 RFC 3041（无状态地址自动配置的隐私扩展）。可以通过 sysctl 变量 `net.inet6.ip6.use_tempaddr` 启用此功能。

### 2.2 安全相关的变更

安全公告 FreeBSD-SA-01:39 中提到的安全修复（关于 TCP 连接的初始序列号生成）引发了一些潜在的兼容性问题。为缓解这一影响，现在可以使用 sysctl 变量 `net.inet.tcp.tcp_seq_genscheme` 启用/禁用该修复。

[fts(3)](http://www.freebsd.org/cgi/man.cgi?query=fts\&sektion=3) 例程中存在的漏洞（应用程序用于递归遍历文件系统）可能允许程序操作超出预期目录层次结构的文件。此漏洞已修复（详见安全公告 FreeBSD-SA-01:40）。

[portmap(8)](http://www.freebsd.org/cgi/man.cgi?query=portmap\&sektion=8) 现在默认关闭，尽管在启用 NFS 服务、NIS 服务或通过 [rc.conf(5)](http://www.freebsd.org/cgi/man.cgi?query=rc.conf\&sektion=5) 启用 [amd(8)](http://www.freebsd.org/cgi/man.cgi?query=amd\&sektion=8) 时会自动启动。

某缺陷允许某些信号处理程序从父进程 exec 之后在子进程中仍然有效，这使得攻击者能够在 setuid 二进制文件的上下文中执行任意代码。此缺陷被修复（详见安全公告 FreeBSD-SA-01:42）。

修复了 [tcpdump(1)](http://www.freebsd.org/cgi/man.cgi?query=tcpdump\&sektion=1) 中的远程缓冲区溢出（详见安全公告 FreeBSD-SA-01:48）。

修复了 [telnetd(8)](http://www.freebsd.org/cgi/man.cgi?query=telnetd\&sektion=8) 中的远程缓冲区溢出（详见安全公告 FreeBSD-SA-01:49）。

新增的 sysctl 变量 `net.inet.ip.maxfragpackets` 和 `net.inet.ip6.maxfragpackets` 限制了 IPv4 和 IPv6 数据包碎片可能消耗的内存，从而防范某些拒绝服务攻击（详见安全公告 FreeBSD-SA-01:52）。

[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8) 中可用于新安装的“安全配置文件”数量减少至两个。

对于新安装，**inetd.conf** 中的所有服务现在默认禁用。[sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8) 提供启用或禁用 [inetd(8)](http://www.freebsd.org/cgi/man.cgi?query=inetd\&sektion=8) 的选项，以及编辑 `inetd.conf` 的功能。

修正了 [ipfw(8)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=8) 在点对点链路上对 `me` 规则的实现缺陷。之前，`me` 过滤规则会匹配点对点接口的远程 IP 地址，而不仅仅是预期的本地 IP 地址（详见安全公告 FreeBSD-SA-01:53）。

修补了 [procfs(5)](http://www.freebsd.org/cgi/man.cgi?query=procfs\&sektion=5) 中的漏洞，该漏洞可能允许进程读取另一个进程的内存空间中的敏感信息（详见安全公告 FreeBSD-SA-01:55）。

**tcp\_wrappers** 中的 PARANOID 主机名检查现在按预期工作（详见安全公告 FreeBSD-SA-01:56）。

修复了 [sendmail(8)](http://www.freebsd.org/cgi/man.cgi?query=sendmail\&sektion=8) 中的本地 root 漏洞（详见安全公告 FreeBSD-SA-01:57）。

修复了 [lpd(8)](http://www.freebsd.org/cgi/man.cgi?query=lpd\&sektion=8) 中的远程 root 漏洞（详见安全公告 FreeBSD-SA-01:58）。

修复了 [rmuser(8)](http://www.freebsd.org/cgi/man.cgi?query=rmuser\&sektion=8) 中的竞态条件问题，该问题导致 **/etc/master.passwd** 暂时变为全局可读（详见安全公告 FreeBSD-SA-01:59）。

所有标准系统路径中非 root 所有的二进制文件现在都设置了标志 `schg`，以防止在 [cron(8)](http://www.freebsd.org/cgi/man.cgi?query=cron\&sektion=8) 中由 root 或非文件所有者用户运行时成为漏洞载体。此外，[uustat(1)](http://www.freebsd.org/cgi/man.cgi?query=uustat\&sektion=1) 现在通过 **/etc/periodic/daily/410.status-uucp** 以 uucp 用户身份运行，而非 root 用户。

修复了 [semop(2)](http://www.freebsd.org/cgi/man.cgi?query=semop\&sektion=2) 系统调用中以缓冲区溢出形式存在的安全漏洞。

### 2.3 用户空间变化

[ip6fw(8)](http://www.freebsd.org/cgi/man.cgi?query=ip6fw\&sektion=8) 现在可以使用预处理器，并在从文件读取时使用标志 `-q`（静默）。

[ping(8)](http://www.freebsd.org/cgi/man.cgi?query=ping\&sektion=8) 现在支持选项 `-m` 来设置传出的数据包的 TTL（生存时间）。

[ln(1)](http://www.freebsd.org/cgi/man.cgi?query=ln\&sektion=1) 现在可以使用标志 `-h`，以避免跟踪作为链接的目标，并且还提供标志 `-n` 以与其他实现兼容。

[find(1)](http://www.freebsd.org/cgi/man.cgi?query=find\&sektion=1) 现在提供 `-anewer`、`-cnewer`、`-mnewer`、`-okdir` 和 `-newer[acm][acmt]` 主表达式，用于比较文件时间戳。

ELF 动态链接器的性能得到提升。

[ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8) 现在可以接受斜杠/CIDR 表示法的地址。

[c89(1)](http://www.freebsd.org/cgi/man.cgi?query=c89\&sektion=1) 从 shell 脚本转换为二进制可执行文件，修复了一些小错误。

[vidcontrol(1)](http://www.freebsd.org/cgi/man.cgi?query=vidcontrol\&sektion=1) 现在支持选项 `-p`，可以拍摄 [syscons(4)](http://www.freebsd.org/cgi/man.cgi?query=syscons\&sektion=4) 视频缓冲区的快照。这些快照可以通过 FreeBSD Ports 中的 [graphics/scr2png](http://www.freebsd.org/cgi/url.cgi?ports/graphics/scr2png/pkg-descr) 工具进行处理。

[vidcontrol(1)](http://www.freebsd.org/cgi/man.cgi?query=vidcontrol\&sektion=1) 现在允许用户在加载字体时省略字体大小规格，并且改进了错误处理。

[telnet(1)](http://www.freebsd.org/cgi/man.cgi?query=telnet\&sektion=1) 现在支持标志 `-u`，允许连接到 UNIX 域（`AF_UNIX`）套接字。

[newfs(8)](http://www.freebsd.org/cgi/man.cgi?query=newfs\&sektion=8) 现在提供选项 `-U`，可以在新文件系统上启用软更新。

libcrypt 现在支持 Blowfish 密码哈希。

FreeBSD 控制台新增了对乌克兰语的支持。

[savecore(8)](http://www.freebsd.org/cgi/man.cgi?query=savecore\&sektion=8) 现在可以在拥有 2 GB 或更多内存的机器上正常工作。

[inetd(8)](http://www.freebsd.org/cgi/man.cgi?query=inetd\&sektion=8) 对 [faithd(8)](http://www.freebsd.org/cgi/man.cgi?query=faithd\&sektion=8) 的支持语法现在与其他 BSD 兼容。

[inetd(8)](http://www.freebsd.org/cgi/man.cgi?query=inetd\&sektion=8) 中的 ident 协议支持得到清理和更新。

[inetd(8)](http://www.freebsd.org/cgi/man.cgi?query=inetd\&sektion=8) 现在可以管理 UNIX 域套接字。

FreeBSD 中的 [resolver(3)](http://www.freebsd.org/cgi/man.cgi?query=resolver\&sektion=3) 现在实现了 EDNS0 支持，在使用支持 IPv6 传输的解析器/DNS 服务器时将是必需的。

[df(1)](http://www.freebsd.org/cgi/man.cgi?query=df\&sektion=1) 现在提供选项 `-l`，仅显示关于本地挂载的文件系统的信息。

[whois(1)](http://www.freebsd.org/cgi/man.cgi?query=whois\&sektion=1) 现在会将查询 IP 地址的请求定向到 ARIN。如果查询 ARIN 时提到 APNIC 或 RIPE，则会查询相应的服务器，只要没有指定选项 `-Q`。

[dump(8)](http://www.freebsd.org/cgi/man.cgi?query=dump\&sektion=8) 的选项 `-T` 不再吞掉额外的参数。

[dump(8)](http://www.freebsd.org/cgi/man.cgi?query=dump\&sektion=8) 增加了新的选项 `-D`，可以变更 **/etc/dumpdates** 文件的路径。

libfetch 现在支持环境变量 `HTTP_USER_AGENT`。

[getprogname(3)](http://www.freebsd.org/cgi/man.cgi?query=getprogname\&sektion=3) 和 [setprogname(3)](http://www.freebsd.org/cgi/man.cgi?query=setprogname\&sektion=3) 库函数新增，用于操控当前程序的名称。它们由错误报告例程使用，以生成一致的输出。

[xargs(1)](http://www.freebsd.org/cgi/man.cgi?query=xargs\&sektion=1) 现在支持 `-J replstr` 选项，允许用户指定将从标准输入读取的数据插入命令行参数中的特定位置，而不是插入到末尾。

[ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8) 现在支持设置 IEEE 802.11 无线网络设备的参数。支持 [wi(4)](http://www.freebsd.org/cgi/man.cgi?query=wi\&sektion=4) 和 [an(4)](http://www.freebsd.org/cgi/man.cgi?query=an\&sektion=4) 设备。

[ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8) 不再默认显示支持的媒体列表。改为在给定 `-m` 选项时才显示。

[lpd(8)](http://www.freebsd.org/cgi/man.cgi?query=lpd\&sektion=8) 现在新增了两个选项：`-c` 将所有连接错误记录到 [syslogd(8)](http://www.freebsd.org/cgi/man.cgi?query=syslogd\&sektion=8)，`-W` 允许来自非保留端口的连接。

[lpc(8)](http://www.freebsd.org/cgi/man.cgi?query=lpc\&sektion=8) 得到改进；`lpc clean` 现在更安全，并且新增了命令 `lpc tclean`，用于检查 `lpc clean` 会删除哪些文件。

[du(1)](http://www.freebsd.org/cgi/man.cgi?query=du\&sektion=1) 现在提供命令行标志 `-I`，可以忽略/跳过匹配指定 shell 通配符模式的文件和子目录。

新增了 [growfs(8)](http://www.freebsd.org/cgi/man.cgi?query=growfs\&sektion=8) 工具，用于扩展 FFS 文件系统。同时新增了 [ffsinfo(8)](http://www.freebsd.org/cgi/man.cgi?query=ffsinfo\&sektion=8) 工具，用于转储现有文件系统所有元信息。

[mail(1)](http://www.freebsd.org/cgi/man.cgi?query=mail\&sektion=1) 现在提供标志 `-E`，用于避免发送空正文的邮件。

[vidcontrol(1)](http://www.freebsd.org/cgi/man.cgi?query=vidcontrol\&sektion=1) 现在支持 `-C` 选项，用于清除给定 tty 的历史缓冲区，以及 `-h` 选项，用于设置历史缓冲区的大小。

[last(1)](http://www.freebsd.org/cgi/man.cgi?query=last\&sektion=1) 现在实现了 `-d` 选项，可以提供在特定日期和时间登录的“快照”。

libcrypt 和 libdescrypt 统一为一个可配置的密码认证哈希库。提供 md5 和 des 哈希方法，除非特意编译移除 des 哈希方法。

[install(1)](http://www.freebsd.org/cgi/man.cgi?query=install\&sektion=1) 现在具有一些新功能，包括用于备份现有目标文件的 `-b` 和 `-B` 选项，以及用于“安全”（原子复制）操作的 `-S` 选项。标志 `-c`（复制）现在是默认选项，标志 `-D`（调试）被撤销。[install(1)](http://www.freebsd.org/cgi/man.cgi?query=install\&sektion=1) 现在会在同时使用 `-d`（创建目录）和 `-C`（仅复制变更文件）选项时发出警告。

FreeBSD 的 Makefile 基础设施现在支持来自 NetBSD 的 `WARNS` 指令。该指令以相对编译器中立的方式控制向 `CFLAGS` 添加编译器警告标志。

新增了 [fsck\_msdosfs(8)](http://www.freebsd.org/cgi/man.cgi?query=fsck_msdosfs\&sektion=8) 工具，用于检查 MS-DOS 文件系统的一致性。

新增了 [kldconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=kldconfig\&sektion=8) 工具，便于操作内核模块搜索路径。

[moused(8)](http://www.freebsd.org/cgi/man.cgi?query=moused\&sektion=8) 现在提供 `-a` 选项以控制鼠标加速度。

`tcpmssfixup` [ppp(8)](http://www.freebsd.org/cgi/man.cgi?query=ppp\&sektion=8) 选项现在会调整传入和传出的 TCP SYN 数据包的最大接收段大小。

[sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8) 现在支持 `-N` 选项，仅打印变量名。

[sysctl(8)](http://www.freebsd.org/cgi/man.cgi?query=sysctl\&sektion=8) 将 `-A` 和 `-X` 选项替换为 `-ao` 和 `-ax`，前者现在弃用。标志 `-w` 也弃用；不再需要用它来确定用户的意图。

[cdcontrol(1)](http://www.freebsd.org/cgi/man.cgi?query=cdcontrol\&sektion=1) 现在支持 `next` 和 `prev` 命令，可以在播放音频 CD 时向前或向后跳过指定数量的曲目。

[col(1)](http://www.freebsd.org/cgi/man.cgi?query=col\&sektion=1) 现在提供标志 `-p`，强制未知控制序列不改变地通过。

[tmpnam(3)](http://www.freebsd.org/cgi/man.cgi?query=tmpnam\&sektion=3) 现在将使用 `TMPDIR` 环境变量（如果设置了）来指定临时文件的位置。

[rc(8)](http://www.freebsd.org/cgi/man.cgi?query=rc\&sektion=8) 现在在启动时会删除 **/var/run** 和 **/var/spool/lock** 中的所有非目录文件。

新增了 [fmtcheck(3)](http://www.freebsd.org/cgi/man.cgi?query=fmtcheck\&sektion=3) 函数，用于检查格式字符串参数的一致性。

[apmd(8)](http://www.freebsd.org/cgi/man.cgi?query=apmd\&sektion=8) 现在可以监控电池电量，并根据剩余的电池百分比或分钟数通过 `apm_battery` 配置指令执行命令。请参见 **/etc/apmd.conf** 中的注释示例，以了解语法。

[pppd(8)](http://www.freebsd.org/cgi/man.cgi?query=pppd\&sektion=8)（内核级 PPP 的控制程序）现在的安装模式为 `4550` 和 `root:dialer`，而不是 `4555`（换句话说，不再是全局可执行的）。[pppd(8)](http://www.freebsd.org/cgi/man.cgi?query=pppd\&sektion=8) 用户可能需要变更其组设置。

#### 2.3.1 第三方软件

**BIND** 现在使用标志 `NOADDITIONAL` 构建，这使得 [named(8)](http://www.freebsd.org/cgi/man.cgi?query=named\&sektion=8) 在某些常见的配置错误情况下能够更加一致地运行。

**BIND** 更新至 8.2.4-REL。

**Binutils** 升级到 2.11.2。

导入了 **bzip2** 1.0.1；这将 [bzip2(1)](http://www.freebsd.org/cgi/man.cgi?query=bzip2\&sektion=1) 程序和 libbz2 库带入基本系统。

[ee(1)](http://www.freebsd.org/cgi/man.cgi?query=ee\&sektion=1) **Easy Editor** 更新至 1.4.2。

**file** 更新至 3.36。

[gcc(1)](http://www.freebsd.org/cgi/man.cgi?query=gcc\&sektion=1) 现在支持环境变量 `GCC_OPTIONS`，该变量可以存储 **GCC** 的一组默认选项。

**GNATS** 更新至 3.113。

**groff** 及其相关工具更新至 FSF 版本 1.17.2。此次导入带来了新的 [mdoc(7)](http://www.freebsd.org/cgi/man.cgi?query=mdoc\&sektion=7) 宏包（有时称为 `mdocNG`），去除了前身的许多限制。

**libpcap** 更新至 0.6.2。

**OpenSSL** 升级至 0.9.6a。

**sendmail** 及其相关工具升级至版本 8.11.6。如需更多信息，请参见 **/usr/src/contrib/sendmail/RELEASE\_NOTES**。

[traceroute(8)](http://www.freebsd.org/cgi/man.cgi?query=traceroute\&sektion=8) 现在从 sysctl 变量 `net.inet.ip.ttl` 中获取默认的最大 TTL 值。

**tcpdump** 更新至 3.6.3。

**2.3.1.1 CVSup**

**CVSup**，FreeBSD Ports 中的一个常用工具，曾通过多个 Port 和软件包进行安装。现不再需要或提供 Port/软件包 [net/cvsup-bin](http://www.freebsd.org/cgi/url.cgi?ports/net/cvsup-bin/pkg-descr) 和 [net/cvsupd-bin](http://www.freebsd.org/cgi/url.cgi?ports/net/cvsupd-bin/pkg-descr)，应该改用 Port [net/cvsup](http://www.freebsd.org/cgi/url.cgi?ports/net/cvsup/pkg-descr)。

**CVSup** 更新至 16.1\_3，现可通过 FreeBSD Ports 获取 [net/cvsup](http://www.freebsd.org/cgi/url.cgi?ports/net/cvsup/pkg-descr)。此更新修复了某长期存在（但最近才遇到）的错误，该错误影响了 2001 年 9 月 9 日 01:46:40 UTC 之后的所有文件时间戳（即 UNIX 纪元后的 10 亿秒）。

**2.3.1.2 KAME**

IPv6 堆栈现在基于 KAME 项目于 2001 年 5 月 28 日的 IPv6 快照。本节中列出的多数内容是此导入的结果。[第 2.1.8.2 节](https://www.freebsd.org/releases/4.4R/relnotes-i386/#KAME-KERNEL) 列出了对 KAME IPv6 堆栈的内核更新。

[faithd(8)](http://www.freebsd.org/cgi/man.cgi?query=faithd\&sektion=8) 现在支持用于访问控制的配置文件。

[ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8) 现在可以执行 [gifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=gifconfig\&sektion=8) 的功能。

[ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8) 现在可以执行 [prefix(8)](http://www.freebsd.org/cgi/man.cgi?query=prefix\&sektion=8) 的功能。[prefix(8)](http://www.freebsd.org/cgi/man.cgi?query=prefix\&sektion=8) 现在是一个用于提供部分向后兼容性的 shell 脚本。

[ndp(8)](http://www.freebsd.org/cgi/man.cgi?query=ndp\&sektion=8) 现在实现了对过时 NDP 条目的垃圾回收，如 RFC 2461（IPv6 邻居发现协议）中所述。

[pim6dd(8)](http://www.freebsd.org/cgi/man.cgi?query=pim6dd\&sektion=8) 和 [pim6sd(8)](http://www.freebsd.org/cgi/man.cgi?query=pim6sd\&sektion=8) 因受限的许可条件被移除。这些程序可以在 Ports 中通过 [net/pim6dd](http://www.freebsd.org/cgi/url.cgi?ports/net/pim6dd/pkg-descr) 和 [net/pim6sd](http://www.freebsd.org/cgi/url.cgi?ports/net/pim6sd/pkg-descr) 获取。

[route6d(8)](http://www.freebsd.org/cgi/man.cgi?query=route6d\&sektion=8) 现在支持标志 `-n`，以避免更新内核转发表。

[rtadvd(8)](http://www.freebsd.org/cgi/man.cgi?query=rtadvd\&sektion=8) 的 `-R`（路由器重新编号）选项当前被忽略。

#### 2.3.2 Ports/软件包

[pkg\_version(1)](http://www.freebsd.org/cgi/man.cgi?query=pkg_version\&sektion=1) 现在支持标志 `-s`，以限制其操作仅针对与给定字符串匹配的 Port/软件包。

## 3 从旧版 FreeBSD 升级

如果你正在从先前的 FreeBSD 版本升级，最可能的情况是 4.X 版本，具体是否存在问题取决于你选择的升级方式。升级 FreeBSD 发行版的两种常用方法是：

* 通过 **/usr/src** 使用源代码
* 使用 [sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8) 的二进制升级选项

请阅读 `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) 部分。

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

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

所有 FreeBSD 4-STABLE 的用户应订阅 <stable@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.4-release/4.4-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.
