原文链接:FreeBSD 7.4-RELEASE Release Notes
FreeBSD 项目
版权所有 © 2011 FreeBSD 文档项目
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 内核和用户空间的重大变化。此外,还简要介绍了升级的相关事项。
本文档包含 FreeBSD 7.4-RELEASE 的发行说明。它介绍了 FreeBSD 最近新增、修改或删除的功能,并提供了一些关于从早期版本升级 FreeBSD 的说明。
此发行版是 FreeBSD 7.4-RELEASE 的正式发布版。可以在 ftp://ftp.FreeBSD.org/ 或其任何镜像站点找到更多信息。有关获取此(或其他)发行版的更多信息,可以参阅 《获取 FreeBSD》附录 中的内容,该附录位于 FreeBSD 手册 中。
建议所有用户在安装 FreeBSD 之前查阅发行错误文档。错误文档会更新包含发布周期末期或发布后发现的“最新信息”。通常,它包含已知的漏洞、安保通告以及文档的修正。FreeBSD 7.4-RELEASE 的最新错误文档副本可以在 FreeBSD 网站上找到。
本节介绍了自 7.3-RELEASE 以来,FreeBSD 中最显著的用户可见新功能或已更改功能。
典型的发行说明项目记录了自 7.3-RELEASE 之后发布的安全通告、新的驱动程序或硬件支持、新的命令或选项、重要的错误修复或第三方软件升级。它们也可能列出重大 Port/包或发布工程实践的更改。显然,发行说明无法列出发布之间对 FreeBSD 所做的每一个更改;本文件主要聚焦于安全通告、用户可见的变化和重大架构改进。
以下安全通告中描述的问题已被修复。更多信息,请参考来自 http://security.FreeBSD.org/ 的个别通告。
2010 年 9 月 20 日
bzip2 解压缩中的整数溢出问题
2010 年 10 月 10 日
多余的互斥锁解锁
2010 年 11 月 29 日
OpenSSL 多个漏洞
[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
[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 数据报。可以通过使用以下加载器可调项启用校验和卸载:
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,则驱动程序将使用内存映射方式进行寄存器访问。
默认值为 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 映射进行寄存器访问:
现在驱动程序 xl(4) 支持 WoL(Wake on LAN)。请注意,并非所有控制器都支持此功能,某些控制器需要额外的远程唤醒电缆。
修复了 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) 驱动程序。
arcmsr(4) 驱动程序已更新至版本 1.20.00.19。
ata(4) 驱动程序现在支持 ATA 硬盘的停转功能。 atacontrol(8) 工具新增了子命令 spindown
,以便从用户空间支持此功能。
GEOM 类 gconcat(8) 现在支持内核崩溃转储。转储会执行到组件中转储分区开始的位置。
gmultipath(8) 工具现在支持命令 destroy
、rotate
和 getactive
。
ispfw(4),用于 isp(4) 驱动程序的固件已被添加。
twa(4) 驱动程序已更新,版本号为 3.70.05.010。
ffs(7) 文件系统中的 inode 编号处理现在为无符号类型。之前,一些较大的 inode 编号可能会被当作负数处理,这个问题在块大小为 16k 的超过 16TB 大小的文件系统中会出现。newfs(8) 工具现在会避免创建超过 2^32
个 inode 的文件系统,如果需要,它会减少每个柱面组中的 inode 数量,以保持在限制范围内。
已修复了 zfs 接收可能导致死锁的问题。
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 接收事件。对于套接字,filename 以 ipaddr:port 形式指定。这允许在没有本地符号的系统上通过 TCP 进行顶部监控。
powerd(8) 工具现在支持选项 -m <freq>
和 -M <freq>
,用于分别控制最小和最大频率。
ruptime(1) 工具现在显示超过 12 个字符的主机名。
stat(1) 工具现在支持 %Sf
输出说明符,以符号方式显示文件参数。
sysctl(8) 工具现在支持 -i
参数,以在检索个别 OID 时忽略失败。这允许将相同的 OID 列表传递给不同系统的 sysctl(8),即使某些 OID 在某些系统上不存在,仍然可以尽可能多地获取信息。
/etc/rc.d
脚本现在,rc.conf(5)
支持一个 firewall_coscripts
变量。这个变量应包含在防火墙启动或停止后需要执行的命令列表。
rc.d/tmp
脚本现在使用一个唯一的目录名称,前缀为 /tmp/.diskless
,而不是直接使用 /tmp/.diskless
。这修复了在脚本运行之前 /tmp/.diskless
已经存在时出现的问题。
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 版本。
sysinstall(8) 程序现在使用以下默认和最小分区大小:/
为 1GB,/var
为 4GB,/tmp
为 1GB。
支持的 GNOME 桌面环境版本 (x11/gnome2) 已更新为 2.32.1。
支持的 KDE 桌面环境版本 (x11/kde4) 已更新为 4.5.5。
[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 的问题,在联系 questions@FreeBSD.org 之前,请阅读 文档。
所有使用 FreeBSD 7.4-STABLE 的用户应订阅 stable@FreeBSD.org 邮件列表。
关于此文档的问题,请通过电子邮件联系 doc@FreeBSD.org。