FreeBSD 7.4 RELEASE 发行公告(2011 年 2 月 24 日)

原文链接:FreeBSD 7.4-RELEASE Release Notes

FreeBSD 项目

版权所有 © 2011 FreeBSD 文档项目

$FreeBSD: stable/7/release/doc/en_US.ISO8859-1/relnotes/article.sgml 219008 2011-02-24 19:22:59Z hrs $

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

IBM、AIX、EtherJet、Netfinity、OS/2、PowerPC、PS/2、S/390 和 ThinkPad 是国际商业机器公司(IBM)在美国、其他国家或两者的商标。

IEEE、POSIX 和 802 是电气和电子工程师协会(Institute of Electrical and Electronics Engineers, Inc.)在美国的注册商标。

Intel、Celeron、EtherExpress、i386、i486、Itanium、Pentium 和 Xeon 是英特尔公司或其子公司在美国及其他国家的商标或注册商标。

SPARC、SPARC64、SPARCengine 和 UltraSPARC 是 SPARC 国际公司在美国和其他国家的商标。SPARC 国际公司拥有所有 SPARC 商标,并通过许可协议允许其成员正确使用这些商标。

许多制造商和销售商用来区分其产品的名称被声明为商标。在本文件中出现这些名称时,如果 FreeBSD 项目已知其商标声明,则这些名称后面会加上“™”或“®”符号。

FreeBSD 7.4-RELEASE 的发行说明包含了 FreeBSD 7.4-STABLE 开发线在基本系统上所做更改的摘要。本文件列出了自上次发布以来发布的适用安全通告,以及 FreeBSD 内核和用户空间的重大变化。此外,还简要介绍了升级的相关事项。

1 引言

本文档包含 FreeBSD 7.4-RELEASE 的发行说明。它介绍了 FreeBSD 最近新增、修改或删除的功能,并提供了一些关于从早期版本升级 FreeBSD 的说明。

此发行版是 FreeBSD 7.4-RELEASE 的正式发布版。可以在 ftp://ftp.FreeBSD.org/ 或其任何镜像站点找到更多信息。有关获取此(或其他)发行版的更多信息,可以参阅 《获取 FreeBSD》附录 中的内容,该附录位于 FreeBSD 手册 中。

建议所有用户在安装 FreeBSD 之前查阅发行错误文档。错误文档会更新包含发布周期末期或发布后发现的“最新信息”。通常,它包含已知的漏洞、安保通告以及文档的修正。FreeBSD 7.4-RELEASE 的最新错误文档副本可以在 FreeBSD 网站上找到。

2 新特性

本节介绍了自 7.3-RELEASE 以来,FreeBSD 中最显著的用户可见新功能或已更改功能。

典型的发行说明项目记录了自 7.3-RELEASE 之后发布的安全通告、新的驱动程序或硬件支持、新的命令或选项、重要的错误修复或第三方软件升级。它们也可能列出重大 Port/包或发布工程实践的更改。显然,发行说明无法列出发布之间对 FreeBSD 所做的每一个更改;本文件主要聚焦于安全通告、用户可见的变化和重大架构改进。

2.1 安全通告

以下安全通告中描述的问题已被修复。更多信息,请参考来自 http://security.FreeBSD.org/ 的个别通告。

通告
日期
主题

2010 年 9 月 20 日

bzip2 解压缩中的整数溢出问题

2010 年 10 月 10 日

多余的互斥锁解锁

2010 年 11 月 29 日

OpenSSL 多个漏洞

2.2 内核更改

[sparc64] FreeBSD/sparc64 现在支持基于保留的物理内存分配,提供更好的性能。

[sparc64] FreeBSD/sparc64 现在支持 UltraSPARC IV、IV+ 和 SPARC64 V CPU。

alq(9) 支持已得到改善。alq_writen()alq_getn() 的 KPI 已扩展以支持可变长度的消息,这在 ALQ 创建时根据传递给 alq_open() 的参数启用。同时,已添加 ALQ_NOACTIVATE 和 ALQ_ORDERED 参数,以便 ALQ 消费者可以分别更好地控制 I/O 调度和资源获取。这些扩展完全向后兼容。

alq(9) 支持现在作为内核模块 alq.ko 提供。

FreeBSD 的 memguard(9) 框架已得到改进,现在能够在更长的时间内检测已分配内存的使用后释放问题。更多详细信息,请参阅 memguard(9) 手册页面。

以下 sysctl(8) 变量已被添加:vm.kmem_map_size 表示当前 kmem 映射的大小,vm.kmem_map_free 表示 kmem 映射中最大的连续空闲区域。r213554, r213556, r213560

2.2.1 硬件支持

[amd64, i386] ichwd(4) 驱动现在支持 Intel NM10 Express 芯片组的看门狗定时器。

[amd64, i386] 已添加 qpi(4) 伪总线驱动程序。该驱动支持 Intel QPI 芯片组上的额外 PCI 总线,其中连接了每个插槽的内存控制器等硬件。

2.2.1.1 多媒体支持

acpi_video(4) 驱动已更新。已实现 LCD 亮度控制通知处理程序。

acpi_sony(4) 辅助驱动现在支持默认显示亮度、有线 LAN 电源和低音增益。

2.2.1.2 网络接口支持

alc(4) 驱动现在支持 Atheros AR8151/AR8152 PCIe 千兆/快速以太网控制器。

alc(4) 驱动中的 TX 中断调节定时器已从 50ms 降至 1ms。50ms 的定时器导致了较差的 UDP 性能。

bge(4) 驱动现在支持 BCM5718 x2 PCI Express 双端口千兆以太网控制器系列。该系列是 BCM5714/BCM5715 系列的继任者,支持 IPv4/IPv6 校验和卸载、TSO、VLAN 硬件标签、大帧、MSI/MSIX、IOV、RSS 和 TSS。当前版本的驱动支持除 IOV 和 RSS/TSS 以外的所有硬件特性。

bge(4) 驱动现在支持 BCM5705 或更新版本的 Broadcom 控制器的硬件 MAC 统计信息,这些统计信息可以通过 sysctl(8) 变量 dev.bge.N.stats.* 访问,为诊断驱动问题提供有用信息。

bge(4) 驱动中的 ASF 心跳发送长期存在的错误已被修复。

bge(4) 驱动中的 UDP 校验和卸载已默认禁用。这是因为 Broadcom 控制器存在一个错误,当启用 TX UDP 校验和卸载时,可能会生成校验和值为 0 的 UDP 数据报。可以通过使用以下加载器可调项启用校验和卸载:

dev.bge.N.forced_udpcsum

bge(4) 驱动中的一个错误,导致 BCM57780 中 TSO 无法正常工作,已被修复。

bge(4) 驱动中的一个错误,可能导致系统内存超过 4 GB 时性能不佳,已被修复。原因是除了 BCM5755 及更高版本的 Broadcom 控制器外,所有 Broadcom 控制器在 4 GB 边界 DMA 处理上存在一个错误,并且使用了低效的缓冲区。

cxgb(4) 驱动现在支持基于 L2/L3/L4 标头检查的硬件过滤。可以根据源 IP 地址、目标 IP 地址、源端口号、目标端口号、802.1q VLAN 帧标签、UDP、TCP 和 MAC 地址进行过滤。配置可以通过 cxgbtool(8) 工具进行。注意,cxgbtool(8) 位于 src/usr.sbin/cxgbtool 中,但默认未编译。

em(4) 驱动已更新为版本 7.1.9。

em(4)igb(4) 驱动现在提供作为 sysctl(8) MIB 对象的统计计数器。

fxp(4) 驱动现在通过 sysctl(8) 变量导出硬件 MAC 统计信息。

fxp(4) 驱动现在支持在 i82550 和 i82551 控制器上通过 VLAN 的 TSO。

igb(4) 驱动已更新为版本 2.0.7。

miibus(4) 已重写以支持 IEEE 802.3 附录 31B 的全双工流量控制。 alc(4)bge(4)bce(4)cas(4)fxp(4)gem(4)jme(4)msk(4)nfe(4)re(4)stge(4)xl(4) 驱动以及 atphy(4)、bmtphy(4)、brgphy(4)、e1000phy(4)、gentbi(4)、inphy(4)、ip1000phy(4)、jmphy(4)、nsgphy(4)、nsphyter(4) 和 rgephy(4) 驱动已更新以支持通过此功能的流量控制。

msk(4) 驱动程序已改进:

  • 现在支持 88E8059(Marvell Yukon Optima)设备。

  • 实现了基本的中断调节功能,具有可编程倒计时计时器寄存器。默认的保持时间参数为 100 微秒,可以通过 sysctl 变量 dev.mskc.0.int_holdoff 更改。请注意,在双端口控制器上,中断调节是共享资源,无法为每个端口使用独立的中断调节值。

修复了 mxge(4) 驱动程序中的一个错误,该错误导致 TSO 无法正常工作。

nfe(4) 驱动程序现在支持 WoL(Wake on LAN)。

re(4) 驱动程序现在将 PCIe 最大读取请求大小设置为 2048。这提高了大规模传输的性能。

re(4) 驱动程序现在支持 RTL810xE/RTL8168/RTL8111 PCIe 控制器的 64 位 DMA 定址。

re(4) 驱动程序现在支持 RTL8169/RTL8168 控制器的硬件中断调节。

rl(4) 驱动程序现在支持 RTL8139B 或更新控制器的 WoL(Wake on LAN)。

rl(4) 驱动程序现在支持一个设备提示,改变寄存器访问方式。尽管一些较新的 RTL8139 控制器支持内存映射寄存器访问,但自动检测支持较为困难。因此,驱动程序默认使用 I/O 映射,并提供以下设备提示。如果将其设置为 0,则驱动程序将使用内存映射方式进行寄存器访问。

hint.rl.N.prefer_iomap="0"

默认值为 1。

rl(4) 驱动程序改进了中断处理,在高 RX 负载下具有更好的 TX 性能。

sk(4) 驱动程序现在默认禁用 TX 校验和卸载功能。因为一些 Yukon 控制器的某些版本会生成损坏的帧。可以通过在 ifconfig(8) 工具中使用选项 txcsum 手动启用校验和卸载。

修复了 sk(4) 驱动程序中的一个错误,该错误未为 Yukon 控制器编程站地址,并且无法通过 ifconfig(8) 覆盖站地址。

为 Silicon Integrated Systems SiS190/191 Fast/Gigabit Ethernet 提供的 sge(4) 驱动程序已添加。它支持 TSO 和 VLAN 上的 TSO。

sis(4) 驱动程序现在支持 NS DP8315 控制器上的 WoL(Wake on LAN)。

sis(4) 驱动程序添加了 tunable dev.sis.N.manual_pad。此选项控制是否由 CPU 而不是控制器对短帧进行 0x00 填充。添加此选项的原因是,NS DP83815/DP83816 会用 0xff 填充它们,而 RFC 1042 规定应该使用 0x00。此选项默认禁用,这意味着使用 0xff 填充,因为由软件进行 0x00 填充需要额外的 CPU 周期。启用 manual_pad,将此 sysctl(8) 变量设置为非零值,将强制使用软件填充。

ste(4) 驱动程序现在支持一个设备提示,改变设备寄存器访问模式。驱动程序默认使用内存映射寄存器访问,但这会导致一些旧款 IC Plus Corp(前身为 Sundace)控制器的稳定性问题。以下设备提示会使驱动程序使用 I/O 映射进行寄存器访问:

hint.ste.N.prefer_iomap="1"

现在驱动程序 xl(4) 支持 WoL(Wake on LAN)。请注意,并非所有控制器都支持此功能,某些控制器需要额外的远程唤醒电缆。

2.2.2 网络协议

修复了 carp(4) 虚拟接口和底层接口的链路状态更改问题。该问题发生在 carp(4) 接口在底层接口及其链路状态变为 UP 之前被创建时。

新增了一个加载器 tunable net.link.ifqmaxlen,它指定了发送接口队列长度的默认值。该参数的默认值为 50

FreeBSD NFS 子系统现在支持客户端的负面名称缓存条目的超时。这避免了当另一个客户端在同一 NFS 服务器的同一时间创建一个具有相同名称的条目时,虚假的负面名称缓存条目永远存在。可以使用系统范围的 sysctl(8) sysctl 变量 vfs.nfs.negative_name_timeout 来调整超时时间。将此变量设置为 0 会禁用负面名称缓存。

新增了一个 netgraph(4) 节点 ng_patch(4),它执行通过的数据包修改。修改仅限于对 8 位、16 位、32 位或 64 位无符号整数的 C 语言操作子集。

RFC 3390 中的 TCP 初始窗口增加现可通过 sysctl(8) 变量 net.inet.tcp.rfc3390 控制,现在,如果 TCP 连接在一个重传超时或更长时间内处于空闲状态,拥塞窗口将缩小到重启窗口。详细信息请参阅 RFC 5681 第 4.1 节。

修复了 FreeBSD TCP 路径 MTU 发现中的一个错误,该错误可能导致 MTU 小于 256 字节时计算错误。请注意,这个错误不会影响大于或等于 256 字节的 MTU。

新增了 siftr(4) 模块(TCP 研究的统计信息记录器)。这是一个可以将活动 TCP 连接的统计信息记录到日志文件中的工具,旨在为系统管理员、开发人员和研究人员提供对 TCP 连接状态的高粒度度量。

FreeBSD 的 TCP 重新组装实现得到了改进。已修复影响 SMP 系统的长期存在的会计错误,net.inet.tcp.reass.maxqlen sysctl(8) 变量已被废弃,取而代之的是基于接收套接字缓冲区大小的每连接动态限制。FreeBSD 接收端现在比以前更好地处理丢包(特别是由队列溢出引起的丢包),从而提高了连接吞吐量。

tun(4) 虚拟接口驱动程序现在支持显式的 UP/DOWN 链路状态。

vlan(4) 虚拟接口现在支持 TSO(TCP 分段卸载)。该功能参数名为 IFCAP_VLAN_HWTSO,与 IFCAP_VLAN_HWTAGGING 分开。支持此功能的驱动程序包括 age(4)alc(4)ale(4)bce(4)bge(4)cxgb(4)jme(4)re(4)mxge(4) 驱动程序。

2.2.3 磁盘和存储

arcmsr(4) 驱动程序已更新至版本 1.20.00.19。

ata(4) 驱动程序现在支持 ATA 硬盘的停转功能。 atacontrol(8) 工具新增了子命令 spindown,以便从用户空间支持此功能。

GEOM 类 gconcat(8) 现在支持内核崩溃转储。转储会执行到组件中转储分区开始的位置。

gmultipath(8) 工具现在支持命令 destroyrotategetactive

ispfw(4),用于 isp(4) 驱动程序的固件已被添加。

twa(4) 驱动程序已更新,版本号为 3.70.05.010。

2.2.4 文件系统

ffs(7) 文件系统中的 inode 编号处理现在为无符号类型。之前,一些较大的 inode 编号可能会被当作负数处理,这个问题在块大小为 16k 的超过 16TB 大小的文件系统中会出现。newfs(8) 工具现在会避免创建超过 2^32 个 inode 的文件系统,如果需要,它会减少每个柱面组中的 inode 数量,以保持在限制范围内。

已修复了 zfs 接收可能导致死锁的问题。

2.3 用户空间变更

arp(8) 工具得到了改进。即使单个接口有多个别名,它现在也能更快地运行。

修复了 b64decode(1) 工具中的一个 bug,该 bug 阻止了 -r 选项处理 base64 编码字符串中的任意换行。

chgrp(1)chown(8) 现在支持 -x 参数,以防止递归操作遍历多个挂载点。

cp(1) 现在支持 -x 参数,以防止递归操作遍历多个挂载点。

dhclient(8) 工具现在报告退出的原因,并且在 dhclient(8) 忽略路由消息的 10 秒等待时间已改为在 dhclient-script 开始后而非完成后开始。此更改修复了 dhclient(8) 在某些条件下静默退出的问题。

修复了 find(1) 工具中的一个 bug。选项 -newerXB 被误解为与 -newerXm 相同。

tftp(1)tftpd(8) 工具已改进,支持更好的互操作性,并且现在支持 RFC 1350、2347、2348、2349 和 3617。

修复了 jn(3)jnf(3) 函数在 libm 中的精度问题。

indent(1) 工具现在支持 -ta 参数,将所有带有 _t 后缀的标识符视为类型。

mount(8) 工具中的 -p 选项现在正确显示 rw 挂载选项,就像在 fstab(5) 格式中一样。

ncal(1) 工具已更新。-b 选项已被替换为 -C-B <number>。新增了 -3 选项以显示上个月、当前月和下个月,并且 -A <number> 选项显示当前月之后的月份。选项 -m <N YYYY> 现在只打印月份,而不是整个年份。

修复了 newfs(8) 工具中的一个问题。使用 64KB 块大小创建的 UFS1 文件系统被错误地识别为有损坏的超级块。这是因为 FreeBSD 内核首先检查一个分区的 UFS2 超级块在 64KB 偏移位置,而某些 UFS1 文件系统(如使用 newfs -U -O 1 -b 65536 -f 8192 创建的文件系统)也可能在该位置有一个备用超级块。

newsyslog(8) 工具现在不再将 PID 文件不存在视为错误。新增了 -P 参数以恢复到旧行为。

newsyslog(8) 工具现在支持 -S <pidfile> 选项,用于覆盖默认的 syslogd(8) PID 文件。

pmcstat(8) 工具现在支持文件和网络套接字作为主要来源。新增选项 -O <filename> 将日志输出发送到 filename,另一个新选项 -R <filename> 用于从 filename 接收事件。对于套接字,filenameipaddr:port 形式指定。这允许在没有本地符号的系统上通过 TCP 进行顶部监控。

powerd(8) 工具现在支持选项 -m <freq>-M <freq>,用于分别控制最小和最大频率。

ruptime(1) 工具现在显示超过 12 个字符的主机名。

stat(1) 工具现在支持 %Sf 输出说明符,以符号方式显示文件参数。

sysctl(8) 工具现在支持 -i 参数,以在检索个别 OID 时忽略失败。这允许将相同的 OID 列表传递给不同系统的 sysctl(8),即使某些 OID 在某些系统上不存在,仍然可以尽可能多地获取信息。

2.3.1 /etc/rc.d 脚本

现在,rc.conf(5) 支持一个 firewall_coscripts 变量。这个变量应包含在防火墙启动或停止后需要执行的命令列表。

rc.d/tmp 脚本现在使用一个唯一的目录名称,前缀为 /tmp/.diskless,而不是直接使用 /tmp/.diskless。这修复了在脚本运行之前 /tmp/.diskless 已经存在时出现的问题。

2.4 第三方软件

ISC BIND 已更新到版本 9.4-ESV-R4。

GNU cpio(1) 程序已更新到版本 2.8。

less(1) 程序已更新到版本 v436。

netcat 程序已更新到版本 4.8。

OpenSSL 已更新到版本 0.9.8q。

tcsh(1) 程序已更新到版本 6.17.00。

时区数据库已更新为 tzdata2010o 版本。

2.5 发布工程与集成

sysinstall(8) 程序现在使用以下默认和最小分区大小:/ 为 1GB,/var 为 4GB,/tmp 为 1GB。

支持的 GNOME 桌面环境版本 (x11/gnome2) 已更新为 2.32.1。

支持的 KDE 桌面环境版本 (x11/kde4) 已更新为 4.5.5。

3 从先前版本升级 FreeBSD

[amd64, i386] 从 FreeBSD 6.2-RELEASE 开始,支持通过 freebsd-update(8) 工具进行 RELEASE 版本之间的二进制升级(包括各个安全分支的快照)。二进制升级过程将更新未修改的用户空间工具,以及未修改的 GENERIC 或 SMP 内核,这些内核作为官方 FreeBSD 发行版的一部分分发。使用 freebsd-update(8) 工具要求升级主机具有互联网连接。

较旧的二进制升级形式可以通过 CDROM 分发媒体上的 sysinstall(8) 主菜单中的“Upgrade”选项来支持。这种类型的二进制升级可能在非 i386、非 amd64 机器上或没有互联网连接的系统中有用。

支持从先前版本通过源码升级(即根据 /usr/src/UPDATING 中的说明重新编译 FreeBSD 基本系统)。

重要提示:

升级 FreeBSD 时,当然应该在备份 所有 数据和配置文件后进行。


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

关于 FreeBSD 的问题,在联系 [email protected] 之前,请阅读 文档

所有使用 FreeBSD 7.4-STABLE 的用户应订阅 [email protected] 邮件列表。

关于此文档的问题,请通过电子邮件联系 [email protected]

最后更新于