# FreeBSD/pc98 5.5-RELEASE 发行说明

### The FreeBSD Project

版权 © 2000, 2001, 2002, 2003, 2004, 2005, 2006 The FreeBSD Documentation Project

$FreeBSD: src/release/doc/zh_CN.GB2312/relnotes/common/new.sgml,v 1.1.2.7.2.1 2006/05/13 05:24:18 delphij Exp $

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

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

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

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

## 1 简介

这篇文档包括了在 NEC PC-98x1 硬件平台上 FreeBSD 5.5-RELEASE 的发行说明。 它描述了最近刚刚加入、修改或删除了的 FreeBSD 特性。 同时，它也将给出如何从先前的 FreeBSD 版本完成升级的说明。

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

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

## 2 最新变动

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

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

### 2.1 安全公告

发现并修正了 tcpdump(1) 工具中一处使恶意的远程用户， 能够通过发出特制的数据包来引发拒绝服务的问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-05:10.tcpdump。

发现并修正了 gzip(1) 工具中的两处问题。 这些问题使得本地用户能够在解压缩文件时修改任意文件的属性， 并覆盖任意本地文件。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-05:11.gzip。

发现并修正了 ipfw(4) 中的一处可能导致包在查询表中无法正确匹配的问题。 这一问题只影响 SMP 和启用了 `PREEMPTION`(抢占) 内核选项的 UP 机器。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-05:13.ipfw。

发现并修正了 bzip2(1) 的两处安全问题。 这包括一处拒绝服务攻击问题， 以及非授权的文件权限修改问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-05:14.bzip2。

修正了 FreeBSD 的 TCP 协议栈中的两处问题。 这些问题会使得攻击者能够让暨存的 TCP 连接挂起， 从而导致拒绝服务。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-05:15.tcp。

发现并修正了 zlib 库中的两处缓冲区溢出问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-05:16.zlib 和 FreeBSD-SA-05:18.zlib。

发现并修正了可能导致在 jail(2) 中运行的进程攫取隐藏的 devfs(5) 文件节点访问权的问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-05:17.devfs。

发现并修正了在 ipsec(4) 实现中的一处程序设计失误， 这个失误会导致 AES-XCBC-MAC 验证采用不变的密钥。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-05:19.ipsec。

发现并修正了一个 cvsbug(8) 在处理临时文件时的问题。 这一问题使得攻击者能够以执行 cvsbug(8) 工具的用户身份修改或覆盖文件。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-05:20.cvsbug。

发现并修正了 OpenSSL 中一处导致允许攻击者强制使用较早版本 SSL (包含已知的弱点) 的问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-05:21.openssl。

在 texindex(1) 中发现并修正了一处临时文件漏洞， 这一漏洞可能导致本地的攻击者以运行 texindex(1) 工具的用户身份覆盖文件。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:01.texindex。

在 ee(1) 中发现并修正了一处临时文件漏洞， 这一漏洞可能导致本地的攻击者以运行 ee(1) 的用户身份覆盖文件。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:02.ee。

发现并修正了 cpio(1) 工具中的一系列漏洞。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:03.cpio。

发现并修正了两个可能导致一部分内核内存被泄露给用户的问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:06.kmem。

发现并修正了 pf(4) 中 IP 分片处理过程中一个可能导致在特定情况下崩溃的问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:07.pf。

发现并修正了 TCP/IP 协议栈中 选择性确认 (SACK) 支持中的一个问题， 这个问题会导致内核在接收到特定的包序列时陷入死循环。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:08.sack。

发现并修正了 OpenSSH 内部记帐机制中的一处问题， 这一问题会导致主进程误认为系统过载， 并停止接收客户端的请求。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:09.openssh。

发现并修正了 NFS 服务器代码中一处可能导致在服务器收到长度为零的消息时崩溃的问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:10.nfs。

发现并修正了 fast_ipsec(4) 实现中的一处可能导致安全关联序号无法更新， 进而导致数据包无条件地通过序号验证检查的问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:11.ipsec。

发现并修正了 opiepasswd(1) 中的一处可能导致非特权用户， 能够在某些情况下为 root 用户配置 OPIE 身份验证的问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:12.opie。

发现并修正了 sendmail(8) 中的一项可能导致远程攻击者以执行 sendmail 的用户， 通常是 root 身份执行任意代码的问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:13.sendmail。

发现并修正了在 AMD 第7和第8代处理器上运行的 FreeBSD 内核的一处信息泄露问题。 要了解进一步详情， 请参阅安全公告 FreeBSD-SA-06:14.fpu。

### 2.2 对于内核的改动

#### 2.2.1 引导区和 loader 的变化

`autoboot` 命令现在能够在当 `autoboot_delay` 变量设置为 `-1` 时完全阻止用户打断启动进程了。

#### 2.2.2 硬件支持

加入了用以支持 Cronyx Tau32-PCI 适配器的 ce(4) 驱动。

##### 2.2.2.1 多媒体支持

uaudio(4) 驱动新增了一些功能， 其中包括多输入音量控制， 以及某些设备上的录音能力。

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

bge(4) 驱动能够支持 BCM5714 和 5789 芯片了。

ixgb(4) 驱动是 MPSAFE 的了。

xl(4) 驱动支持 polling(4) 了。

#### 2.2.3 网络协议

加入了始创于 NetBSD 的网桥实现 if_bridge(4)。 它支持 IEEE 802.1D 生成树协议、 为每个网桥分配独立的接口设备、 过滤网桥数据包、 镜像口 (将传送网桥收到的所有包的副本) 等功能。 此外， ifconfig(8) 工具也能够配置 if_bridge(4) 了。

#### 2.2.4 磁盘及存储

twa(4) 驱动已升级至 3ware 网站上发布的 9.3.0.1 版。

#### 2.2.5 文件系统

#### 2.2.6 基本系统附带的第三方软件

### 2.3 应用程序变动

gethostbyname(3)、 gethostbyname2(3)， 以及 gethostbyaddr(3) 这些函数是线程-安全的了。

getnetent(3)、 getnetbyname(3)， 以及 getnetbyaddr(3) 这些函数是线程-安全的了。

getprotoent(3)、 getprotobyname(3)， 以及 getprotobynumber(3) 这些函数是线程-安全的了。

加入了 bsdiff(1) 和 bspatch(1) 工具。 这些工具可以用来针对二进制的文件建立和应用补丁。

cmp(1) 工具新增了 `-h` 选项表示比较符号连接本身， 而非连接所指的文件。

getservent(3)、 getservbyname(3)， 以及 getservbyport(3) 这些函数是线程-安全的了。

kldstat(8) 工具新增了用于返回特定内核模块状态的 `-m` 选项。

getprotoent(3)、 getprotobyname(3)， 以及 getprotobynumber(3) 函数是线程安全的了。

getservent(3)、 getservbyname(3)， 以及 getservbyport(3) 函数是线程安全的了。

kdump(1) 程序新增了用以省略 I/O 数据显示的 `-s` 参数。

kldstat(8) 工具新增了用以返回特定内核模块状态的 `-m` 选项。

在 `libpthread`、 `libthr`， 以及 `libc_r` 中的默认线程本地堆栈尺寸得以增加。 在 32-位 平台上， 主线程默认使用 2MB 的堆栈， 而其他线程则是 1MB 的堆栈。 在 64-位 平台上， 默认的堆栈尺寸则相应是 4MB 和 2MB。

netstat(1) 工具新增了用于显示接口统计模式的 `-h` 参数， 它表示以便于人类阅读的方式显示接口的全部统计数据。

ping(8) 工具新增了 ``扫荡式 ping''， 表示每步增加 icmp(4) 包的尺寸。 这对于测试存在问题的信道、 MTU 问题， 以及网络中的流量策略功能都非常有用。

加入了用于管理电源消耗的 powerd(8) 程序。

rfcomm_sppd(1) 能够支持在指定服务名的同时指定 `-c` 选项和通道号了。 支持的名字包括： DUN (拨号网络)、 FAX (传真)、 LAN (使用 PPP 访问 LAN)， 以及 SP (串口)。

rm(1) 工具新增了 `-I` 选项， 表示在递归删除目录或一次删除超过 3 个文件时进行提示 (一次)。

sed(1) 新增了用于启用输出行缓冲的 `-l` 选项。

sh(1) 新增了 `times` 内建命令。

加入了用以显示 UFS 文件系统中快照位置的 snapinfo(8) 工具。

#### 2.3.1 `/etc/rc.d` 脚本

新增了 `bluetooth` 脚本。 这个脚本会在设备连上/断开时， 由 devd(8) 调用并启动/停止对应的设备， 而无须管理员手工干预。 这个脚本的默认配置参数在 `/etc/defaults/bluetooth.device.conf`， 这些默认值可以用 `/etc/bluetooth/`$device`.conf` 来覆盖 (这里的 `$device` 是 `ubt0`、 `btcc0`， 等等。) 要了解进一步详情， 请参阅 bluetooth.conf(5)。

`rc.d/jail` 启动脚本新增了 `jail_`name`_flags` 变量， 用于对应的设置 jail(8) 的命令行参数。

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

BIND 从 9.3.1 更新到了 9.3.2。

sendmail 从 8.13.3 更新到了 8.13.6。

时区数据库从 tzdata2005g 版升级到了 tzdata2006g 版。

### 2.5 Ports/Packages Collection 基础结构

pkg_add(1) 命令新增了 `-P` 参数， 它与 `-p` 参数类似， 区别在于给定的前缀也会用于依赖的其他包。

pkg_add(1) 和 pkg_create(1) 这两个工具新增了 `-K` 参数， 表示将 package 默认保存至当前目录 (如果有定义 `PKGDIR` 则保存在那个目录)。

pkg_create(1) 程序新增了 `-x` 参数， 用以使用基本正则表达式来表示 package 的名字， `-E` 标志表示使用扩展正则表达式， 而 `-G` 则表示精确匹配。

pkg_version(1) 新增了 `-I` 参数， 表示使用 `INDEX` 作为判断预编译包是否过时的唯一依据。

pkg_version(1) 工具新增了 `-o` 参数， 用于显示在 package 生成时所记录的来源 (origin) 目录而不是其本身的名字， 以及 `-O` 参数表示只列出所有注册来源为指定来源的 package。

新增了 portsnap(8) 工具 (`sysutils/portsnap`) 到 FreeBSD 基本系统中。 这是一个安全、 便于使用、 快速、 轻量级的工具， 能够很好地帮助用户保持他们的 ports tree 与官方版本同步。

删去了从 Ports 套件安装的启动脚本的后缀。 这意味着 `foo.sh` 都将改名为 `foo`， 并且名为 `foo.ORG` 的脚本也会被执行。 您应重新安装所有安装了启动脚本的 package， 并清理 `local_startup` 目录中多余的文件。

新增了两个 `rc.conf` 变量， `ldconfig_local_dirs` 和 `ldconfig_local32_dirs`。 这两个变量用于指定本地的 ldconfig(8) 目录列表。

`pkg-plist` 中的 `@cwd` 命令支持不指定目录参数了。 如果没有指定目录参数， 则它将把当前工作目录设置为 `@cwd` 命令给出的第一个前缀。

### 2.6 发行版建造工程和功能集成

支持的 GNOME 桌面环境 (`x11/gnome2`) 的版本， 从 2.10.2 升级到了 2.12.3。

支持的 KDE 桌面环境 (`x11/kde3`) 的版本， 从 3.4.2 升级到了 3.5.1。

支持的 Perl 解释器 (`lang/perl5.8`) 的版本， 从 5.8.7 升级到了 5.8.8。

支持的 Xorg 视窗系统 (`x11/xorg`) 的版本， 从 6.8.2 升级到了 6.9.0。

### 2.7 文档

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

如果您正从先前版本的 FreeBSD 升级， 一般可以选择下述方法之一：

- 使用 sysinstall(8) 的二进制更新选项。 这种方法可能是最快的， 但它假定您的 FreeBSD 没有使用特殊的编译选项。

- 完整地重新安装 FreeBSD。 从技术角度而言， 这并不是升级方法， 而且要比二进制升级麻烦一些， 因为您需要手工备份和恢复 `/etc` 的内容。 然而， 如果您想要 (或者需要) 改变磁盘分区， 这就很有用。

- 从 `/usr/src` 中的源代码升级。 这种方法更为灵活， 但也需要更多的磁盘空间、 时间， 以及技术专业知识。 更多信息， 可以在 FreeBSD 使用手册 的 ``使用 `make world`'' 小节找到。 从非常旧的 FreeBSD 版本升级可能会有问题； 这种情况下， 使用二进制升级或者全新安装可能是更为有效的方法。

请参阅 `INSTALL.TXT` 文件以获得更进一步的信息， 特别是在开始安装 之前。 如果您正从源代码升级， 也请务必阅读 `/usr/src/UPDATING`。

最后， 如果您想随 FreeBSD 的 -STABLE 或 -CURRENT 开发分支升级， 则一定要先阅读 FreeBSD 使用手册 中的 ``-CURRENT 和 -STABLE 的对比'' 一节。

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

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

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

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