For the complete documentation index, see llms.txt. This page is also available as Markdown.

FreeBSD 5.5-RELEASE amd64 发行说明(2006 年 5 月 25 日)

原文链接:FreeBSD/amd64 5.5-RELEASE Release Notes

FreeBSD 项目

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

$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.761.2.59.2.2 2006/05/22 17:05:47 bmah Exp $

FreeBSD 是 FreeBSD 基金会的注册商标。

IBM、AIX、EtherJet、Netfinity、OS/2、PowerPC、PS/2、S/390 和 ThinkPad 是国际商业机器公司(International Business Machines Corporation)在美国及其他国家或地区的商标。

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 国际公司在美国及其他国家或地区的商标。带有 SPARC 商标的产品基于 Sun Microsystems, Inc. 开发的架构。

许多制造商和销售商用于区分其产品的名称被主张为商标。在本文件中出现这些名称时,若 FreeBSD 项目知晓其为商标,则在名称后附有“™”或“®”符号。

FreeBSD 5.5-RELEASE 的发行说明包含自 5.4-RELEASE 以来对 FreeBSD 基本系统所作变更的摘要。此文档列出了自上次发布以来发布的适用安全公告,以及对 FreeBSD 内核和用户空间的重大变更。文档还提供了关于升级的简要说明。

1 引言

本文档包含适用于 AMD64 硬件平台的 FreeBSD 5.5-RELEASE 的发行说明。它介绍了 FreeBSD 最近新增、修改或移除的功能,并提供了一些关于从旧版本 FreeBSD 升级的说明。

FreeBSD 5.5-RELEASE 的发行版可以通过 ftp://ftp.FreeBSD.org/ 或其任意镜像站点获取。关于获取本版(或其他版本)FreeBSD 发行版的更多信息,请参阅 《FreeBSD 手册》 中的 《获取 FreeBSD》附录。

所有用户在安装 FreeBSD 之前,建议先查阅发行勘误。该勘误文档会随着发行周期后期或发行后的最新发现更新,通常包含已知的错误、安全公告以及文档修订。可以在 FreeBSD 官网找到 FreeBSD 5.5-RELEASE 的最新勘误文档。

FreeBSD 5.5-RELEASE 是 5.5-STABLE 分支计划中的最后一个发行版本。当前,FreeBSD 开发社区将其工作重点放在 6-STABLE 和 CURRENT 代码分支上。虽然 5.5-STABLE 分支没有计划新增重大功能,但根据个别开发者的决定,可能会合并一些小的更新和错误修复。FreeBSD 安全团队将为基于 5.5-RELEASE 的安全分支提供安全公告和补丁支持,直至其生命周期结束日期(截至本文撰写时,为 2008 年 5 月 31 日),具体信息见 http://security.freebsd.org/。

2 新特性

本节介绍了自 5.4-RELEASE 以来 FreeBSD 中对用户最可见的新功能或变更功能。

通常,发行说明条目包括以下内容:5.4-RELEASE 后发布的最新安全公告、新的驱动程序或硬件支持、新命令或选项、重大错误修复,或第三方软件的升级。此外,还可能列出主要 Ports/软件包或发行工程实践的变更。显然,发行说明无法列出 FreeBSD 在两次发布之间所做的每一项变更;本文档主要关注安全公告、用户可见的变更以及重要的架构改进。

2.1 安全公告

由于使用超线程技术(HTT)的处理器存在信息泄露漏洞,新增了 sysctl 变量 machdep.hyperthreading_allowed。在 FreeBSD CURRENT 分支中默认值为 1(启用 HTT),而在 4-STABLE 和 5-STABLE 开发分支及其支持的安全修复分支中默认为 0(禁用 HTT)。更多信息请参阅安全公告 FreeBSD-SA-05:09.htt。

修复了 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) 工具中的临时文件漏洞,该漏洞可能允许攻击者以运行该工具的用户权限修改或覆盖文件。更多信息请参阅安全公告 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) 实现中的编程错误。该错误导致与安全关联(Security Association)相关的序列号未被更新,从而允许数据包无条件通过序列号验证检查。详见安全公告 FreeBSD-SA-06:11.ipsec。

修复了 opiepasswd(1) 中的逻辑错误。该错误可能允许非特权用户在某些情况下为 root 用户配置 OPIE 认证。详见安全公告 FreeBSD-SA-06:12.opie。

修复了 sendmail(8) 中的异步信号处理漏洞。该漏洞可能允许远程攻击者以运行 sendmail(通常是 root 用户)的权限执行任意代码。详见安全公告 FreeBSD-SA-06:13.sendmail。

修复了在运行 7 代和 8 代 AMD 处理器的 FreeBSD 内核中发现的信息泄露问题。详见安全公告 FreeBSD-SA-06:14.fpu。

2.2 内核更新

2.2.1 引导加载程序更新

当变量 autoboot_delay 设置为 -1 时,命令 autoboot 将完全禁止用户中断启动过程。

2.2.2 硬件支持

双核处理器(例如 Intel Core Duo)现在默认在启用 SMP 的内核中可使用两个核心。

2.2.2.1 多媒体支持

驱动程序 uaudio(4) 增加了一些功能,包括更多输入的音量控制以及部分设备的录音功能。

2.2.2.2 网络接口支持

驱动 bge(4) 现在支持 BCM5714 和 5789 芯片。

驱动 ixgb(4) 现在具备 MPSAFE(多处理器安全)特性。

使用设备驱动程序 ndis(4) 包装机制的驱动程序现在以不同方式构建和加载。ndis(4) 驱动程序可以预先构建为模块或静态编译到内核中。使用 ndisgen(8) 工具可单独构建驱动程序;生成的内核模块可通过 kldload(8) 加载到运行中的内核。

许多(但不是全部)ndis(4) 系统的变更从 HEAD 分支合并而来。

驱动 xl(4) 现在支持 polling(4)。

2.2.3 网络协议

新增了网络桥接实现 if_bridge(4),最初来源于 NetBSD。它支持 IEEE 802.1D 生成树协议(Spanning Tree Protocol)、为每个桥接分配单独的接口设备、桥接数据包的过滤以及镜像端口(传输桥接接收到的每帧数据的副本)。ifconfig(8) 工具现在支持配置 if_bridge(4)。

2.2.4 磁盘和存储

驱动 twa(4) 更新至 3ware 网站上的 9.3.0.1 版本。

2.2.5 文件系统

2.2.6 第三方软件

2.3 用户空间更新

新增工具 bsdiff(1) 和 bspatch(1)。这些工具用于构建和应用二进制补丁。

工具 cmp(1) 现在支持 -h 选项,用于比较符号链接本身而非其指向的文件。

函数 gethostbyname(3)、gethostbyname2(3) 和 gethostbyaddr(3) 现在是线程安全的。

函数 getnetent(3)、getnetbyname(3) 和 getnetbyaddr(3) 现在是线程安全的。

函数 getprotoent(3)、getprotobyname(3) 和 getprotobynumber(3) 现在是线程安全的。

函数 getservent(3)、getservbyname(3) 和 getservbyport(3) 现在是线程安全的。

程序 kdump(1) 现在支持 -s 选项,用于抑制 I/O 数据的显示。

工具 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。

新增了 snapinfo(8) 工具,用于显示 UFS 文件系统快照的位置。

2.3.1 /etc/rc.d 脚本

新增了蓝牙脚本。该脚本将通过 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/软件包

程序 pkg_add(1) 现在支持 -P 选项,该选项与 -p 选项相同,只是如果有依赖软件包时,也会递归地使用给定的前缀。

工具 pkg_add(1) 和 pkg_create(1) 现在支持 -K 选项,默认将软件包保存到当前目录(或如果定义了 PKGDIR 则保存到该目录)。

程序 pkg_create(1) 现在支持 -x 选项,用于软件包名的基本正则表达式,-E 选项用于扩展正则表达式,-G 选项用于精确匹配。

工具 pkg_version(1) 现在支持 -I 选项,该选项使工具仅使用 INDEX 文件来判断软件包是否过时。

工具 pkg_version(1) 现在支持 -o 选项,显示软件包生成时记录的来源,而不是软件包名,-O 选项则列出注册来源为 origin 的软件包。

工具 portsnap(8)(sysutils/portsnap)加入了 FreeBSD 基本系统。它是一种安全、易用、快速、轻量且整体不错的方式,供用户保持其 Ports 树的更新。

Ports 中的启动脚本移除了后缀。这意味着 foo.sh 被重命名为 foo,现在名称类似 foo.ORG 的脚本也将被执行。建议重新安装包含此类脚本的软件包,并删除 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 源代码升级。此方法更加灵活,但需要更多的磁盘空间、时间和技术专长。更多信息请参阅 使用 make world 章节,位于 FreeBSD 手册 中。升级非常旧版本的 FreeBSD 可能会遇到问题;在这种情况下,通常执行二进制升级或完全重新安装会更有效。

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

最后,如果你希望使用各种方法跟踪 FreeBSD 的 -STABLE 或 -CURRENT 分支,请务必查阅 -CURRENT 与 -STABLE 章节,位于 FreeBSD 手册 中。

重要

升级 FreeBSD 之前,务必备份 所有 数据和配置文件。

此文件和其他与发布相关的文档可以从 ftp://ftp.FreeBSD.org/ 下载。

如有 FreeBSD 相关问题,请先阅读 文档 再联系 questions@FreeBSD.org。

如有关于本文档的问题,请通过电子邮件联系 doc@FreeBSD.org。

最后更新于