FreeBSD 6.1 RELEASE amd64 发行公告(2006 年 5 月 8 日)
FreeBSD 项目
版权所有 © 2000, 2001, 2002, 2003, 2004, 2005, 2006 FreeBSD 文档项目
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 是英特尔公司或其子公司在美国及其他国家的商标或注册商标。
Sparc、Sparc64、SPARCEngine 和 UltraSPARC 是 SPARC 国际公司在美国及其他国家的商标。带有 SPARC 商标的产品基于 Sun Microsystems, Inc. 开发的架构。
许多制造商和销售商用于区分其产品的名称被声明为商标。在本文件中出现这些名称时,如果 FreeBSD 项目知道该商标声明,则名称后会附有 “™” 或 “®” 符号。
FreeBSD 6.1-RELEASE 的发布说明包含了在 6.1-STABLE 开发线中对 FreeBSD 基本系统所做的变更摘要。本文列出了自上次发布以来发布的适用安全公告,以及对 FreeBSD 内核和用户空间的重大变更。还简要说明了升级的一些事项。
1 介绍
本文档包含了 FreeBSD 6.1-RELEASE 在 AMD64 硬件平台上的发布说明。它介绍了 FreeBSD 最近新增、修改或删除的功能。它还提供了一些从先前版本升级的说明。
该版本的 FreeBSD 6.1-RELEASE 是一个快照分发版。可以在 http://www.FreeBSD.org/snapshots/ 或其任何镜像站点找到。有关获取此(或其他)FreeBSD 快照分发版的更多信息,请参阅 FreeBSD 手册 中的 “获取 FreeBSD”附录。
所有用户在安装 FreeBSD 前都应咨询发布勘误。勘误 文档会更新发布周期结束时或发布后发现的“突发”信息。通常,它包含已知的 bug、安全公告和文档修正。可以在 FreeBSD 网站上找到 FreeBSD 6.1-RELEASE 的最新勘误副本。
2 新功能
本节介绍了自 6.0-RELEASE 以来,FreeBSD 中最显著的新功能或变化。
典型的发布说明项目记录了自 6.0-RELEASE 之后发布的安全公告、新的驱动程序或硬件支持、新命令或选项、重大 bug 修复或第三方的软件升级。它们还可能列出主要 Port/包或发布工程实践的变更。显然,发布说明不能列出每个版本间对 FreeBSD 所做的所有变更;本文档主要集中在安全公告、用户可见的变化和主要架构改进。
2.1 安全公告
在 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。
在 ipfw(4) 中的 IP 分片处理错误,可能导致崩溃,已被修复。更多详细信息请参见安全公告 FreeBSD-SA-06:04.ipfw。
已修复 IEEE 802.11 扫描代码中的潜在缓冲区溢出问题。更多详细信息请参见安全公告 FreeBSD-SA-06:05.80211。
已修复两个可能导致内核内存泄露给用户的实例。更多详细信息请参见安全公告 FreeBSD-SA-06:06.kmem。
在 pf(4) 中 IP 分片处理的逻辑错误,可能在某些情况下导致崩溃,已被修复。更多详细信息请参见安全公告 FreeBSD-SA-06:07.pf。
在 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) 中发现的异步信号处理漏洞,可能允许远程攻击者在发送邮件的用户(通常是 root)权限下执行任意代码,已被修复。更多详细信息请参见安全公告 FreeBSD-SA-06:13.sendmail。
在运行于 7 代和 8 代 AMD 处理器上的 FreeBSD 内核中发现的信息泄露问题,已被修复。更多详细信息请参见安全公告 FreeBSD-SA-06:14.fpu。
2.2 内核变更
ddb(4) 调试器现在支持 show lock
命令。如果参数具有有效的锁类,将显示有关该锁的各种信息,并调用锁类中的新函数指针 (lc_ddb_show),以转储锁的类特定信息(例如互斥锁或 xlock 锁的所有者)。
已新增每个平台的 DEFAULTS 内核配置文件。
已新增 firmware(9) 子系统。这允许通过专门制作的模块将二进制数据加载到内核中。
random(4) 熵设备驱动程序现在是 MPSAFE。
已新增新的 sysctl 变量 security.mac.biba.interfaces_equal
,它使所有网络接口都以 biba/equal(equal-equal)标签创建。这在一些程序(例如 dhclient(8) 和 ppp(8))没有标签支持的情况下非常有用。此变量默认设置为 0(禁用)。
2.2.1 启动加载器变更
新增加载器可调节项 comconsole_speed
,用于变更串行控制台的速度。如果先前阶段的启动加载器请求了串行控制台,则默认速度由当前串行端口的速度决定,否则它将设置为 9600
或编译时的内核选项 BOOT_COMCONSOLE_SPEED
的值。
2.2.2 硬件支持
acpi_thermal(4) 驱动程序现在支持被动冷却。
kbdmux(4) 驱动程序已集成到 syscons(4) 和 kbd 设备驱动程序中。默认情况下,syscons(4) 会首先寻找 kbdmux(4) 键盘,如果没有找到,再查找其他键盘。可以在启动时通过 loader(8) 加载内核模块 kbdmux
,或在运行时通过 kldload(8) 加载并释放活动键盘。
2.2.2.1 多媒体支持
驱动程序 agp(4) 现在支持 ATI IGP 芯片组。
驱动程序 sound(4) 已在多个方面进行更新,包括修复可能导致系统崩溃的与锁相关的 bug,并进行了一些性能改进。此外,该驱动程序现在支持更广泛的采样率、多种精度选择以及 24/32 位 PCM 格式转换。
已新增驱动程序 snd_atiixp(4) ,支持 ATI IXP 200/300/400 系列音频控制器。
驱动程序 snd_als4000(4) 现在是 MPSAFE。
驱动程序 snd_es137x(4) 现在是 MPSAFE。
驱动程序 snd_ich(4) 现在是 MPSAFE。
驱动程序 snd_solo(4) 现在是 MPSAFE。
驱动程序 speaker(4) 现在支持 FreeBSD/amd64。
驱动程序 snd_via8233(4) 现在是 MPSAFE。
驱动程序 snd_via82c686(4) 现在是 MPSAFE。
2.2.2.2 网络接口支持
ath(4) 驱动程序已更新至版本 0.9.16.16。
bce(4) 驱动程序已新增,支持 Broadcom NetXtreme II (BCM5706/BCM5708) PCI/PCIe 千兆以太网控制器。有关更多详细信息,请参见 bce(4)。
已修复一个 bug,该 bug 阻止 bfe(4) 驱动程序在 RAM 超过 1GB 的系统上工作。
bge(4) 驱动程序现在支持 polling(4) 模式。
em(4) 驱动程序现在支持大端架构,如 sparc64。
le(4) 驱动程序已新增,支持 AMD Am7900 LANCE 和 Am79C9xx PCnet 网络接口卡,并基于 NetBSD 的实现。虽然 lnc(4) 驱动程序也支持这些网络接口卡,但该驱动程序具有一些优势,如 MPSAFE、ALTQ、VLAN_MTU、ifmedia 和 PCI 变种的 32 位 DMA。
驱动程序 lge(4) 现在是 MPSAFE。
2.2.3 网络协议
已重写 arp(8) 重传算法,现在 ARP 请求会在有需求的情况下重新传输而不被抑制。由于此变更,已删除 sysctl 变量 net.link.ether.inet.host_down_time
。
arp(8) 现在支持 sysctl 变量 net.link.ether.inet.log_arp_permanent_modify
,用于抑制修改永久 ARP 条目的尝试日志。
桥接驱动程序 if_bridge(4) 现在支持创建 Span 端口,传输桥接接收到的每个帧的副本。此功能可以通过使用 ifconfig(8) 启用。
桥接驱动程序 if_bridge(4) 现在支持 RFC 3378 EtherIP。这一变更使得可以将 gif(4) 接口新增到桥接中,从而发送和接收 IP 协议 97 的数据包。数据包是带有 EtherIP 头部的以太网帧。
IP 数据包过滤器 ipfw(4) 现在支持 IPv6。ip6fw(8) 包过滤器已弃用,将在未来的版本中移除。
ipfw(4) 现在支持用从表查找获得的值替代参数 action
,从而允许对规则集进行优化。现在只适用于 pipe、queue、divert、tee、netgraph 和 ngtee 规则。例如,以下规则将不同的包投递到不同的管道中:
已修复一个 bug,导致 NFS over TCP 在服务器发送 FIN 时无法重新连接。该问题出现在 Solaris NFS 服务器上。
ng_iface(4) Netgraph 节点现在支持 altq(4)。
默认情况下,FreeBSD ip6(4) 堆栈禁用了多播数据包的路径 MTU 发现,因为许多路由器通知路径 MTU 可能会成为对路由器的分布式拒绝服务攻击。可以通过使用新的 sysctl 变量 net.inet6.ip6.mcast_pmtu
重新启用此功能。
当 RTT 低于某个阈值时,TCP 带宽-延迟乘积限制功能已被禁用。这种优化在局域网中没有意义,因为由于粗略的时钟粒度,它很难确定最大带宽。新的 sysctl 变量 net.inet.tcp.inflight.rttthresh
指定了该功能将停用的毫秒阈值,默认值为 10
毫秒。
2.2.4 磁盘和存储
驱动程序 amr(4) 在性能上得到了改进,现在支持完整的 64 位 DMA。虽然默认启用此功能,但可以通过设置 hw.amr.force_sg32
加载器可调项来强制关闭,以便调试。
驱动程序 amr(4) 现在支持 FreeBSD 的 Linux 模拟环境中,Linux LSI MegaRaid 工具所需的 ioctl(2) 请求。
驱动程序 ata(4) 现在支持对某些 DMA 在 48 位模式下无法正常工作的控制器的解决方法。对于这些可疑的控制器,PIO 模式将用于访问超过 137GB 区域。
驱动程序 ata(4) 现在支持 ITE IT8211F IDE 控制器,以及 Promise Fasttrak TX4300 中的 Promise PDC40718 和 PDC40719 芯片。
驱动程序 ata(4) 序现在支持 DMA 用于内核崩溃转储,并支持崩溃转储到 ataraid(4) 设备。
驱动程序 ataraid(4) 现在支持 JMicron ATA RAID 元数据。
GEOM_LABEL
类现在支持 Ext2FS、NTFS 和 ReiserFS。
GEOM_MIRROR
类现在支持内核崩溃转储到 GEOM 提供者。
GEOM_MIRROR
和 GEOM_RAID3
类现在支持 sysctl 变量 kern.geom.mirror.disconnect_on_failure
和 kern.geom.graid3.disconnect_on_failure
,用于控制是否断开失败的组件。默认值为 1
,保持当前行为,设置为 0
时,失败的组件不会断开,内核仍然会尝试使用它们(仅记录第一次错误)。这种做法在多组件故障(发生在不同位置)的情况下非常有用,这样实际上所有数据仍然可用。损坏的组件将以 BROKEN
参数显示在 gmirror list
或 graid3 list
输出中。
GEOM_MIRROR 和 GEOM_RAID3 类现在使用并行 I/O 请求进行同步,以提高性能。新的 sysctl 变量 kern.geom.mirror.sync_requests
和 kern.geom.raid3.sync_requests
定义了应使用多少并行 I/O 请求。此外,已弃用并删除 sysctl 变量 kern.geom.mirror.reqs_per_sync
、kern.geom.mirror.syncs_per_sec
、kern.geom.raid3.reqs_per_sync
和 kern.geom.raid3.syncs_per_sec
。
新增了 GEOM 类 GEOM_ZERO
。它创建了一个非常大的提供者(41PB)/dev/gzero
,主要用于性能测试。在 BIO_READ
请求时,它会将 bio_data
填充为零,在 BIO_WRITE
请求时则什么也不做。
已更新驱动程序 twa(4) 为 3ware 网站上的 9.3.0.1 版本。
geli(8) 现在支持在根文件系统挂载之前加载密钥文件。例如,可以在 /boot/loader.conf
中使用以下条目启用此功能:
驱动程序 mfi(4) ,支持 LSI MegaRAID SAS 控制器系列,已新增。
驱动程序 rr232x(4) ,支持 HighPoint 的 RocketRAID 232x 系列 RAID 控制器,已新增。
2.2.5 文件系统
2.2.6 第三方软件
DRM 已更新为 20051202 版本的 DRI CVS 快照。
2.3 用户空间变更
工具 bsnmpd(1) 现在支持 RFC 2790 中描述的主机资源 MIB。
工具 config(8) 现在支持指令 nocpu
,用于取消之前 cpu 指令的效果。
工具 config(8) 现在会在当前目录中存在时,读取 DEFAULTS 内核配置文件,而不是指定的配置文件。
工具 csh(1) 现在支持 NLS 目录。请注意,这需要安装 Port shells/tcsh_nls 。
工具 devd(8) 现在支持 -f
选项,用于指定配置文件。
工具 ln(1) 现在支持 -F
参数,允许在创建符号链接时删除现有的空目录。
工具 locate(1) 现在支持 -0
参数,使该工具与 xargs(1) 的 -0
参数兼容。
工具 ls(1) 现在支持 -I
参数,用于禁用超级用户的自动 -A
参数。
工具 ftpd(8) 现在即使没有指定 -p
选项,也会创建 PID 文件 /var/run/ftpd.pid
。
工具 getfacl(1) 现在支持 -q
参数,用于抑制列出文件名、所有者和组的每个文件头注释。
工具 gvinum(8) 现在支持重命名对象和将子磁盘从一个驱动器移动到另一个驱动器的命令。
工具 jail(8) 支持 -J <jid_file>
选项,用于写出一个 JidFile,类似于 PidFile,包含 jailid、路径、主机名、IP 地址和启动 jail 时使用的命令。
工具 kdump(1) 现在支持 -H
参数,导致 kdump 打印一个额外的字段,包含线程 ID。
程序 kdump(1) 现在支持 -s
参数,以抑制显示 I/O 数据。
工具 mergemaster(8) 现在支持 -A
选项,用于显式指定一个架构,以传递给底层的 makefile。
守护进程 moused(8) 现在支持 -H
参数,以启用水平虚拟滚动,类似于 -V
参数用于垂直虚拟滚动。
工具 netstat(1) 现在支持打印 ipsec(4) 协议统计信息,如果内核是用 FAST_IPSEC
而不是 KAME IPSEC
堆栈编译的。请注意,netstat -s -p ipsec
的输出根据编译进内核的堆栈不同而有所不同,因为它们分别维护不同的统计信息。
每日脚本 periodic(8) 现在支持显示 gmirror(8)、graid3(8)、gstripe(8) 和 gconcat(8) 设备的状态。请注意,这些默认情况下是禁用的。
新增了功能,pidfile(3),用于提供可靠的 pidfile
处理,已在 libutil 中实现。
rfcomm_sppd(1) 现在除了 -c
选项和频道号外,还支持服务名称。支持的名称包括:DUN(拨号网络)、FAX(传真)、LAN(使用 PPP 的局域网接入)和 SP(串口)。
工具 snapinfo(8) ,显示 UFS 文件系统上的快照位置,已新增。
库函数 strtonum(3) 已根据 OpenBSD 的实现实现。这是 strtoll(3) 的改进版本。
已修复工具 ypwhich(1) 中的一个错误,导致 -m
选项产生不正确的可用命名映射列表。
2.3.1 /etc/rc.d
脚本
/etc/rc.d
脚本已新增脚本 bluetooth
。此脚本将在设备附加/拆卸事件发生时通过 devd(8) 被调用,以便停止/启动特定设备,而无需手动拔掉设备。配置参数位于 /etc/defaults/bluetooth.device.conf
中,并可以通过使用 /etc/bluetooth/$device.conf(其中 $device
可能是 ubt0
、btcc0
等)来覆盖。更多详细信息,请参见 bluetooth.conf(5)。
已为守护进程 hcsecd(8) 和 sdpd(8) 新增 hcsecd 和 sdpd 脚本。这些守护进程即使没有连接蓝牙设备也可以运行,但它们依赖于蓝牙套接字层,因此默认情况下是禁用的。必须先加载蓝牙套接字层模块或将其编译到内核中,才能运行这些守护进程。
已为 hostapd(8) 新增 hostapd 脚本。
脚本 jail 现在支持选项 jail_interface
和 jail_jid_interface
,这两个选项可以在给定接口上创建 IP 别名。
脚本 netif 现在支持 ipv4_addrs_ifn
,用于从一个带有 CIDR 表示法的范围列表中新增一个或多个 IPv4 地址。例如:
脚本 ppp-user
已重命名为 ppp
。
2.4 第三方软件
BIND 已从 9.3.1 更新至 9.3.2。
hostapd 已从 0.3.9 更新至 0.4.8。
GNU Troff 已从 1.19 更新至 1.19.2。
sendmail 已从 8.13.4 更新至 8.13.6。
时区数据库已从 tzdata2005l 发布更新至 tzdata2005r 发布。
WPA Supplicant 已从 0.3.9 更新至 0.4.8。
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) 现在支持 -o
参数,用于显示在包生成时记录的来源,而不是包名,-O
参数则列出注册的来源仅为原始来源的包。
已新增工具 portsnap(8)(sysutils/portsnap
)到 FreeBSD 基本系统中。这是一种安全、易用、快速、轻量且通常是保持 Ports 更新的良好方法。
修复了 portsnap(8) 工具中对 HTTP_PROXY_AUTH
的错误处理。
local_startup
目录中的启动脚本现在通过使用 rcorder(8) 与基本系统中的脚本一起进行评估。
来自 Ports 的启动脚本后缀已被移除。这意味着 foo.sh
被重命名为 foo
,现在类似 foo.ORG
的脚本也将被调用。建议重新安装安装此类脚本的包并删除 local_startup
目录中的额外文件。
新增了 rc.conf
变量 ldconfig_local_dirs
和 ldconfig_local32_dirs
。这些变量存储本地 ldconfig(8) 目录的列表。
pkg-plist
中的 @cwd
命令现在允许没有目录参数。如果没有给定目录参数,它将把当前工作目录设置为 @cwd
命令给定的第一个前缀。
2.6 发布工程与集成
已新增目录 /var/audit
和组 audit
。这些用于 TrustedBSD OpenBSM 分发,未来版本将导入该分发。
GNOME 桌面环境的支持版本 (x11/gnome2) 已从 2.10.2 更新到 2.12.3。
KDE 桌面环境的支持版本 (x11/kde2) 已从 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 5.3-RELEASE 或更高版本进行源代码升级到 FreeBSD 6.1-RELEASE 才受到支持。希望升级到 6.1-RELEASE 的较旧系统用户需要首先更新到 FreeBSD 5.3 或更新版本,然后再升级到 FreeBSD 6.1-RELEASE。
重要提示:
升级 FreeBSD 时,必须在备份 所有 数据和配置文件之后进行。
可以从 http://www.FreeBSD.org/snapshots/ 下载此文件以及其他与发布相关的文档。
如有关于 FreeBSD 的问题,请在联系 questions@FreeBSD.org 之前先阅读 文档。
如有关于此文档的问题,请发送电子邮件至 doc@FreeBSD.org。
最后更新于