# FreeBSD 4.11 RELEASE i386 发行公告（2005 年 1 月 25 日）

* 原文链接：[FreeBSD/i386 4.11-RELEASE Release Notes](https://www.freebsd.org/releases/4.11R/relnotes-i386/)

**FreeBSD 项目**

版权 © 2000, 2001, 2002, 2003, 2004, 2005 FreeBSD 文档项目

```
$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.22.2.419.2.9 2005/01/21 11:16:10 hrs Exp $
```

FreeBSD 4.11-RELEASE 的发布说明包含了自 4.10-RELEASE 以来对 FreeBSD 基本系统所做的变更摘要。列出了内核和用户空间的变更，以及自上次发布以来发布的适用于基本系统的安全公告。同时，还提供了关于升级的一些简要说明。

## 1 引言

本文档包含了 FreeBSD 4.11-RELEASE 在 i386 硬件平台上的发布说明。它介绍了自 4.10-RELEASE 以来，FreeBSD 中新增（或变更）的新功能。同时，它还提供了一些关于从先前版本升级的说明。

此版本的 FreeBSD 4.11-RELEASE 是发布版。可以在 [ftp://ftp.FreeBSD.org/](ftp://ftp.freebsd.org/) 或其镜像站点上找到。有关如何获取此版本（或其他版本）发行版的更多信息，请参见 [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) 附录。

## 2 新特性

本节介绍了自 4.10-RELEASE 以来，FreeBSD 中最显著的新功能或已变更的功能。典型的发布说明项目包括新驱动程序或硬件支持、新命令或选项、重大 bug 修复或第三方软件升级。发布后的基本系统安全公告也一并列出。

### 2.1 安全公告

FreeBSD Linux 二进制兼容层中的一个编程错误已被修复，该错误允许本地攻击者读取或写入内核内存的部分内容。更多细节，请参见安全公告 [FreeBSD-SA-04:13.linux](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-04:13.linux.asc)。

修复了 **CVS** 服务器模式中的多个远程可利用的漏洞，包括双重释放、整数溢出和缓冲区溢出，这些漏洞可能导致信息泄露、拒绝服务攻击和/或可能的任意代码执行。此问题通过升级到 **CVS** 1.11.17 解决。更多细节，请参见安全公告 [FreeBSD-SA-04:14](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-04:14.cvs.asc)。

修复了 [fetch(1)](http://www.freebsd.org/cgi/man.cgi?query=fetch\&sektion=1\&manpath=FreeBSD+4.11-RELEASE) 工具中的一个 bug，该漏洞允许恶意的 HTTP 服务器导致客户端内存的任意部分被覆盖。更多信息，请参见安全公告 [FreeBSD-SA-04:16](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-04:16.fetch.asc)。

修复了 [procfs(5)](http://www.freebsd.org/cgi/man.cgi?query=procfs\&sektion=5\&manpath=FreeBSD+4.11-RELEASE) 和 [linprocfs(5)](http://www.freebsd.org/cgi/man.cgi?query=linprocfs\&sektion=5\&manpath=FreeBSD+4.11-RELEASE) 中的一个 bug，该 bug 可能导致恶意本地用户通过导致系统崩溃进行本地拒绝服务攻击，或用户可以读取部分内核内存。更多信息，请参见安全公告 [FreeBSD-SA-04:17](ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-04:17.procfs.asc)。

### 2.2 内核变更

为 Cronyx Tau-PCI 同步串行适配器新增驱动程序 [cp(4)](http://www.freebsd.org/cgi/man.cgi?query=cp\&sektion=4\&manpath=FreeBSD+4.11-RELEASE)。

修复了 [mmap(2)](http://www.freebsd.org/cgi/man.cgi?query=mmap\&sektion=2\&manpath=FreeBSD+4.11-RELEASE) 中的一个 bug，该 bug 导致在某些情况下，标记为 `PROT_NONE` 的页面可能变为可读。

修复了 FreeBSD 虚拟内存子系统中函数 `vm_object_madvise()`、`vm_object_sync()` 和 `contigmalloc()` 中的 bug。`vm_object_madvise()` 和 `vm_object_sync()` 中的 bug 可能会导致内存损坏，而 `contigmalloc()` 中的 bug 可能会导致系统崩溃。

#### 2.2.1 特定平台硬件支持

已新增 [pbio(4)](http://www.freebsd.org/cgi/man.cgi?query=pbio\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) 驱动程序，该驱动程序支持对 Intel 8255A 可编程外设接口（PPI）芯片在模式 0（简单 I/O）下的直接访问。

#### 2.2.2 网络接口支持

已新增驱动程序 [axe(4)](http://www.freebsd.org/cgi/man.cgi?query=axe\&sektion=4\&manpath=FreeBSD+4.11-RELEASE)，该驱动程序支持 ASIX Electronics AX88172 USB 2.0 以太网芯片组。

驱动程序 [bge(4)](http://www.freebsd.org/cgi/man.cgi?query=bge\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) 现已支持 BCM5750 和 BCM5751。

[em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) 现已支持 82541ER 和 82546GB 双端口 PCI Express 适配器。

已新增驱动程序 [ixgb(4)](http://www.freebsd.org/cgi/man.cgi?query=ixgb\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) ，该驱动程序支持基于 Intel 82597EX 以太网控制器芯片的 PCI 千兆以太网适配器。

已新增 Netgraph 节点类型 [ng\_hub(4)](http://www.freebsd.org/cgi/man.cgi?query=ng_hub\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) ，该类型支持类似以太网集线器的简单数据包分发功能。

已修复 [sk(4)](http://www.freebsd.org/cgi/man.cgi?query=sk\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) 驱动程序中与 Jumbo 帧处理相关的 bug。

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

已实现每接口的 [polling(4)](http://www.freebsd.org/cgi/man.cgi?query=polling\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) 支持。所有支持 [polling(4)](http://www.freebsd.org/cgi/man.cgi?query=polling\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) 的网络驱动程序（如 [dc(4)](http://www.freebsd.org/cgi/man.cgi?query=dc\&sektion=4\&manpath=FreeBSD+4.11-RELEASE)、[fxp(4)](http://www.freebsd.org/cgi/man.cgi?query=fxp\&sektion=4\&manpath=FreeBSD+4.11-RELEASE)、[em(4)](http://www.freebsd.org/cgi/man.cgi?query=em\&sektion=4\&manpath=FreeBSD+4.11-RELEASE)、[nge(4)](http://www.freebsd.org/cgi/man.cgi?query=nge\&sektion=4\&manpath=FreeBSD+4.11-RELEASE)、[re(4)](http://www.freebsd.org/cgi/man.cgi?query=re\&sektion=4\&manpath=FreeBSD+4.11-RELEASE)、[rl(4)](http://www.freebsd.org/cgi/man.cgi?query=rl\&sektion=4\&manpath=FreeBSD+4.11-RELEASE)、[sis(4)](http://www.freebsd.org/cgi/man.cgi?query=sis\&sektion=4\&manpath=FreeBSD+4.11-RELEASE)、[ste(4)](http://www.freebsd.org/cgi/man.cgi?query=ste\&sektion=4\&manpath=FreeBSD+4.11-RELEASE)、[vr(4)](http://www.freebsd.org/cgi/man.cgi?query=vr\&sektion=4\&manpath=FreeBSD+4.11-RELEASE)）现在也支持此功能，并且可以通过 [ifconfig(8)](http://www.freebsd.org/cgi/man.cgi?query=ifconfig\&sektion=8\&manpath=FreeBSD+4.11-RELEASE) 控制。

已修复当 `net.inet.ip.rtexpire`/`net.inet6.ip6.rtexpire` 设置为 `0` 时发生的系统崩溃问题。

#### 2.2.3 网络协议

已实现来自 OpenBSD 的随机临时端口分配。默认启用此功能，用户可以通过 sysctl `net.inet.ip.portrange.randomized` 禁用此功能。请注意，随机化可能导致在高连接速率下极其快速的端口重用，这会导致一些用户遇到问题。为了保持随机端口的安全优势并确保正常操作，在高连接速率期间会禁用此功能。具体来说，当连接速率超过 sysctl net.inet.ip.portrange.randomcps 的值（默认值为 10）时，随机化将在 sysctl net.inet.ip.portrange.randomtime 指定的秒数（默认值为 45）内禁用。

[ipfw(4)](http://www.freebsd.org/cgi/man.cgi?query=ipfw\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) 现在支持查找表。这一功能对于处理大型稀疏地址集非常有用。

[ipnat(8)](http://www.freebsd.org/cgi/man.cgi?query=ipnat\&sektion=8\&manpath=FreeBSD+4.11-RELEASE) 现在允许重定向规则适用于非 TCP/UDP 数据包。

已改进 FreeBSD TCP 堆栈的 RST 处理，使得重置攻击尽可能困难，同时保持与广泛的 TCP 堆栈兼容。算法如下：对于处于 ESTABLISHED 状态的连接，只有与 `last_ack_sent` 完全匹配的重置序列号才会导致重置，所有其他段会被默默丢弃；对于处于其他状态的连接，窗口中的任何位置的重置都会导致连接重置，其他段会被默默丢弃。需要注意的是，这打破了 RFC 793 规范，用户仍然可以通过设置新 sysctl `net.inet.tcp.insecure_rst` 为 `1` 来禁用此功能并使用传统行为。

#### 2.2.4 磁盘和存储

已新增驱动程序 [ips(4)](http://www.freebsd.org/cgi/man.cgi?query=ips\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) ，该驱动程序支持 IBM/Adaptec ServeRAID 控制器。

驱动程序 [mpt(4)](http://www.freebsd.org/cgi/man.cgi?query=mpt\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) 现已支持 LSI Logic FC929X 双 2Gb/s 光纤通道卡。

驱动程序 [trm(4)](http://www.freebsd.org/cgi/man.cgi?query=trm\&sektion=4\&manpath=FreeBSD+4.11-RELEASE) 现已支持 DC395U2W 适配器，并且在高负载下的问题已被修复。

### 2.3 用户空间变更

[cron(8)](http://www.freebsd.org/cgi/man.cgi?query=cron\&sektion=8\&manpath=FreeBSD+4.11-RELEASE) 守护进程现在接受两个新选项，`-j` 和 `-J`，分别用于启用无特权用户和超级用户的作业时间抖动。时间抖动意味着 [cron(8)](http://www.freebsd.org/cgi/man.cgi?query=cron\&sektion=8\&manpath=FreeBSD+4.11-RELEASE) 在执行作业之前，会在指定范围内睡眠一小段随机时间。此功能旨在平滑当大量作业在特定时刻被调度时出现的负载峰值。

[fwcontrol(8)](http://www.freebsd.org/cgi/man.cgi?query=fwcontrol\&sektion=8\&manpath=FreeBSD+4.11-RELEASE) 现在支持 `-m` 选项，用于设置默认的 fwmem 目标。

选项 `-C 60` 现在用于 `/etc/rc.conf` 中默认的变量 `$inetd_flags`。

**libc** 现在支持 [eui64(3)](http://www.freebsd.org/cgi/man.cgi?query=eui64\&sektion=3\&manpath=FreeBSD+4.11-RELEASE) 函数。

[ngctl(8)](http://www.freebsd.org/cgi/man.cgi?query=ngctl\&sektion=8\&manpath=FreeBSD+4.11-RELEASE) 现在支持 dot 命令，用于生成整个 Netgraph 的 **GraphViz** (`.dot`) 图。

[ppp(8)](http://www.freebsd.org/cgi/man.cgi?query=ppp\&sektion=8\&manpath=FreeBSD+4.11-RELEASE) 中的 LQM（链路质量监控）支持已重新实现。LQM 描述在 RFC 1989 中，允许 PPP 跟踪运行连接的质量。

用户空间 [ppp(8)](http://www.freebsd.org/cgi/man.cgi?query=ppp\&sektion=8\&manpath=FreeBSD+4.11-RELEASE) 实现现在支持 `set rad_alive N` 命令，用于启用周期性 RADIUS 会计信息发送到 RADIUS 服务器。

[Syslogd(8)](http://www.freebsd.org/cgi/man.cgi?query=syslogd\&sektion=8\&manpath=FreeBSD+4.11-RELEASE) 现在支持 `LOG_NTP` 功能。

修复了 [pax(1)](http://www.freebsd.org/cgi/man.cgi?query=pax\&sektion=1\&manpath=FreeBSD+4.11-RELEASE) 中的多个越界错误和潜在的缓冲区溢出问题。

[whois(1)](http://www.freebsd.org/cgi/man.cgi?query=whois\&sektion=1\&manpath=FreeBSD+4.11-RELEASE) 现在支持 NORID（挪威顶级注册机构）句柄、德国 whois 名称服务器，并且支持 `-k` 参数用于查询 `whois.krnic.net`（韩国国家互联网发展局），它持有韩国 IP 地址分配的详细信息。

### 2.4 第三方软件

**CVS** 从版本 1.11.5 更新到 1.11.17。

**sendmail** 从版本 8.12.11 更新到 8.13.1。

**GNU patch** 在 `src/contrib/patch` 中的源文件已被移除。FreeBSD 已经使用 `src/gnu/usr.bin/patch` 中的 [patch(1)](http://www.freebsd.org/cgi/man.cgi?query=patch\&sektion=1\&manpath=FreeBSD+4.11-RELEASE) 源文件近七年。

时区数据库从 **tzdata2004e** 更新到 **tzdata2004g** 版本。

### 2.5 发布工程与集成

支持的 **GNOME** 版本已从 2.6 更新到 2.8.2。每个组件的变更列表可以在 <http://mail.gnome.org/archives/gnome-announce-list/2004-December/msg00026.html> 找到。

支持的 **KDE** 版本已从 3.2.2 更新到 3.3.2。

支持的 Linux 二进制兼容用户空间包已从 [linux\_base-6](http://www.freebsd.org/cgi/url.cgi?ports/linux_base-6/pkg-descr)（基于 Red Hat Linux 7.1）更新到 [linux\_base-8](http://www.freebsd.org/cgi/url.cgi?ports/linux_base-8/pkg-descr)（基于 Red Hat Linux 8.0）。

支持的 **X Window 系统** 版本已更新为 **XFree86** 4.4.0。请注意，Xorg X11R6.8.1 也可以在 FreeBSD Ports 中找到（[x11/xorg](http://www.freebsd.org/cgi/url.cgi?ports/x11/xorg/pkg-descr)）。

已移除 `make.conf` 中的变量 `NOSECURE`，因为它已损坏且不再受支持。如果你之前使用了 `NOSECURE`，请现在改用 `NOCRYPT`。

## 3 从旧版升级 FreeBSD

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

* 使用 [sysinstall(8)](http://www.freebsd.org/cgi/man.cgi?query=sysinstall\&sektion=8\&manpath=FreeBSD+4.11-RELEASE) 的二进制升级方案。这是最快的方法，尽管它假设你的 FreeBSD 安装没有使用任何特殊的编译选项。
* 完全重新安装 FreeBSD。从技术上讲，这不是一种升级方法，而且通常比二进制升级不那么方便，因为它需要你手动备份并恢复 `/etc` 目录的内容。不过，在需要变更磁盘分区时，这可能是有用的。
* 从 `/usr/src` 的源代码进行升级。这种方法更灵活，但需要更多的磁盘空间、时间和技术专长。更多信息可以在 [使用 make world](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html) 一节的 [FreeBSD 手册](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/) 中找到。从非常旧版本的 FreeBSD 升级可能会遇到问题；在这种情况下，通常更有效的方法是执行二进制升级或完全重新安装。

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

最后，如果你想使用各种方法跟踪 FreeBSD 的 -STABLE 或 -CURRENT 分支，请务必查阅 [-CURRENT 与 -STABLE](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html) 一节的 [FreeBSD 手册](http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/)。

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

***

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

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

如果你对本文档有疑问，请发送电子邮件至 <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/4.11.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.
