github编辑

FreeBSD 8.2-RELEASE 发行说明(2011 年 2 月 24 日)

FreeBSD 项目

版权所有 © 2011 FreeBSD 文档项目

$FreeBSD: stable/8/release/doc/en_US.ISO8859-1/relnotes/article.sgml 219006 2011-02-24 19:11:27Z hrs $

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 International, Inc)在美国和其他国家的商标。SPARC 国际公司拥有所有 SPARC 商标,并根据许可协议允许其成员正确使用这些商标。

许多制造商和销售商用来区分其产品的名称被宣称为商标。在本文档中出现这些名称时,如果 FreeBSD 项目知晓商标声明,这些名称后将附有“™”或“®”符号。

FreeBSD 8.2-RELEASE 的发布说明包含对 FreeBSD 基本系统在 8.2-STABLE 开发线中所做更改的总结。本文档列出了自上次发布以来发布的相关安全公告,以及 FreeBSD 内核和用户空间的重大变更。还简要介绍了升级的相关事项。

1 介绍

本文档包含了 FreeBSD 8.2-RELEASE 的发布说明。它介绍了 FreeBSD 中最近添加、修改或删除的功能,并提供了一些关于从旧版本 FreeBSD 升级的说明。

此版本的 FreeBSD 8.2-RELEASE 是发布版本。它可以在 ftp://ftp.FreeBSD.org/arrow-up-right 或其任何镜像站点上找到。有关获取此版本(或其他版本)发行版的更多信息,请参阅 FreeBSD 手册arrow-up-right 中的 “获取 FreeBSD”附录arrow-up-right

建议所有用户在安装 FreeBSD 之前先查阅发布的勘误。勘误文档会更新其中包含的“突发”信息,这些信息是在发布周期结束时或发布后才发现的。通常,它包含已知的错误、安全公告以及文档修正。可以在 FreeBSD 网站上找到 FreeBSD 8.2-RELEASE 的最新勘误。

2 新特性

本节介绍了自 8.1-RELEASE 以来 FreeBSD 中最显著的新增或更改功能。

典型的发布说明项目包括在 8.1-RELEASE 后发布的安全公告、新的驱动程序或硬件支持、新的命令或选项、重要的错误修复,或第三方软件升级。它们还可能列出重大端口/包或发布工程实践的变化。显然,发布说明不能列出 FreeBSD 在发布之间所做的每一个更改;本文档主要集中在安全公告、用户可见的变化以及主要的架构改进上。

2.1 安全公告

以下安全公告中描述的问题已被修复。更多信息,请查阅各个公告,网址:http://security.FreeBSD.org/arrow-up-right.

公告
日期
主题

2010 年 9 月 20 日

bzip2 解压时的整数溢出问题

2010 年 11 月 29 日

OpenSSL 多个漏洞

2.2 内核更改

[ia64] 用于 DMA 缓冲区池的最大页面数已从 256 增加到 1024。r209326arrow-up-right

[powerpc] kern.hz 的默认值已从 100 增加到 1000。r209765arrow-up-right

[powerpc] SMP 内核现已支持基于 MPC7400 的 Apple 桌面机器,如 PowerMac3,3。r209767arrow-up-right

[powerpc] FreeBSD/powerpc 现在支持 DMA 缓冲区,这是需要在 RAM 大于 4GB 的系统上使用的。r211593arrow-up-right

[mips] FreeBSD/mips 支持已得到改善。现在支持在带有双核 Sibyte 处理器的 SWARM 上使用 SMP。r215938arrow-up-right

[mips] FreeBSD/mips 现在支持 Netlogic Microsystems 的 XLR 和 XLS 多核处理器系列。

[sparc64] FreeBSD/sparc64 现在支持基于预留的物理内存分配,这提供了更好的性能。r215598arrow-up-right

[amd64] FreeBSD/amd64 现在始终将 KVA 空间设置为等于或大于物理内存大小。默认大小是根据三分之一的物理内存大小计算的,源自 i386 的代码。由于 amd64 上的内存空间约束并不严格,这一更改有助于防止使用 ZFS 时常见的“kmem_map 太小”Panic。r214620arrow-up-right

[amd64, i386] 对 Intel CPU 的 CPU 拓扑检测已得到改善。r214621arrow-up-right

[amd64, i386] ACPI 挂起/恢复功能的支持已得到改善。r215513arrow-up-right

[amd64, i386] FreeBSD 内核现在支持 KPI kern_fpu_enter()kern_fpu_leave(),允许内核子系统使用 Intel SSE(流式 SIMD 扩展)中的 XMM 寄存器文件。r215513arrow-up-right

[amd64, i386, ia64] acpi(4)arrow-up-right 驱动程序现在仅在 FADT 中指示可用的情况下使用 ACPI 重置寄存器功能。此行为由 sysctl(8)arrow-up-right 变量 hw.acpi.handle_reboot 控制,默认值始终设置为 0。r215006arrow-up-right

[amd64, i386, ia64] acpi(4)arrow-up-right 驱动程序现在支持新的加载器可调项 hw.acpi.install_interfacehw.acpi.remove_interface。更多详情,请参见 acpi(4)arrow-up-right 手册页面。r215521arrow-up-right

alq(9)arrow-up-right 的支持已得到改善。KPI alq_writen()alq_getn() 已扩展为支持可变长度消息,该功能在创建 ALQ 时根据传递给 alq_open() 的参数启用。此外,添加了 ALQ_NOACTIVATE 和 ALQ_ORDERED 参数,分别允许 ALQ 消费者在 I/O 调度和资源获取上拥有更多控制权。这些扩展完全向后兼容。r209788arrow-up-right

alq(9)arrow-up-right 现在作为内核模块 alq.ko 提供。r209783arrow-up-right

ddb(8)arrow-up-right 内核调试器现在支持在重置和重启命令中添加可选延迟。这允许管理员在发生无人看管的 Panic 时进入调试器并触发自动文本转储。r209692arrow-up-right

ddb(8)arrow-up-right 内核调试器现在支持 show cdev 命令。该命令显示所有已创建的 cdev 列表,包括 devfs 节点名称和 struct cdev 地址。r212230arrow-up-right

FreeBSD GENERIC 内核现在编译时包含了 KDBKDB_TRACE 选项。从 8.2-RELEASE 起,内核可以在 panic 时通过使用 stack(9)arrow-up-right 功能显示堆栈跟踪,而无需像 ddb(8)arrow-up-right 这样的调试后端。需要注意的是,这不会改变 GENERIC 内核在 panic 时的默认行为。r214326arrow-up-right

以下 sysctl(8)arrow-up-right 变量现在也可以作为加载器可调项使用:vm.kmem_sizevm.kmem_size_maxvm.kmem_size_mindebug.kdb.stop_cpusdebug.trace_on_panickern.sync_on_panic。此外,新增了 sysctl(8)arrow-up-right 变量:vm.kmem_map_size(当前 kmem 映射大小)、vm.kmem_map_free(kmem 映射中最大的连续空闲范围)、vfs.ncsizefactor(namecache 的大小因子)以及 vfs.ncnegfactor(负 namecache 条目的比率)。r213554arrow-up-right, r213556arrow-up-right, r213560arrow-up-right

FreeBSD memguard(9)arrow-up-right 框架已改进,能够在更长时间内检测已分配内存的使用后释放问题。更多细节,请参见 memguard(9)arrow-up-right 手册页面。r212427arrow-up-right

PT_LWPINFO 请求已改进,用于获取导致追踪进程停止的内核线程信息,在 ptrace(2)arrow-up-right 进程追踪和调试功能中。现在它报告系统调用的进入和离开事件,以及伴随报告信号的 siginfo_t 的可用性。r214756arrow-up-right

FreeBSD crypto(4)arrow-up-right 框架(opencrypto)现在支持 XTS-AES(XEX-TCB-CTS,或带有密文盗用的 XEX 基于修改的代码本模式),该模式定义在 IEEE Std. 1619-2007 中。r214254arrow-up-right

[amd64] FreeBSD/amd64 内核中的 Xen HVM 支持已得到改善。更多细节,请参见 xen(4)arrow-up-right 手册页面。r215788arrow-up-right

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

2.2.1 启动加载器变更

FreeBSD 现在完全支持 GPT(GUID 分区表)。主头和主分区表的校验和现在得到了正确验证。r213994arrow-up-right

[powerpc] 修复了阻止 FreeBSD OpenFirmware 加载器和网络启动正常工作的内存管理问题。r215919arrow-up-right, r215920arrow-up-right

pxeboot(8)arrow-up-right 现在默认使用 NFS 版本 3,而不是版本 2。r212717arrow-up-right

2.2.2 硬件支持

[amd64, i386] 已添加 aesni(4)arrow-up-right 驱动程序。该驱动支持 Intel CPU 上的 AES 加速器,并加速 crypto(4)arrow-up-right 中的 AES 操作。r215633arrow-up-right

[amd64, i386] 已添加 aibs(4)arrow-up-right 驱动程序。该驱动支持 ASUS 主板中的硬件传感器,并取代了 acpi_aiboost(4)arrow-up-right 驱动。r210476arrow-up-right

[amd64, i386] coretemp(4)arrow-up-right 驱动程序现在支持 Xeon 5500/5600 系列处理器。r211914arrow-up-right

[powerpc] FreeBSD/powerpc 现在支持 Apple 系统管理单元中的 I2C 总线。r215694arrow-up-right

[powerpc] 添加了支持 PowerMac 11,2 上 CPU 温度传感器的设备驱动程序。r215695arrow-up-right

ehci(4)arrow-up-rightohci(4)arrow-up-rightuhci(4)arrow-up-right 驱动程序现在支持低速 BULK 传输模式。r215482arrow-up-right

[amd64, i386] ichwd(4)arrow-up-right 驱动程序现在支持 Intel NM10 Express 芯片组的 watchdog 定时器。r209952arrow-up-right

已添加 tpm(4)arrow-up-right 驱动程序,支持受信平台模块(TPM)。r215036arrow-up-right

已添加 xhci(4) 驱动程序,支持可扩展主控制器接口(xHCI)和 USB 3.0。r215944arrow-up-right

2.2.2.1 多媒体支持

FreeBSD 的 Linux 模拟子系统现在支持 video4linux API。这需要本地的 video4linux 硬件驱动程序,如 multimedia/pwcbsd 和 multimedia/webcamd 提供的驱动程序。

uaudio(4)arrow-up-right 驱动程序中的 MIDI 输入缓冲区大小已更改。这修复了输入延迟几秒钟的问题。r215483arrow-up-right

已修复 uaudio(4)arrow-up-right 驱动程序中的一个问题,该问题导致一些 USB 音频设备无法正常工作。r215484arrow-up-right

2.2.2.2 网络接口支持

alc(4)arrow-up-right 驱动程序现在支持 Atheros AR8151/AR8152 PCIe 千兆/快速以太网控制器。r212021arrow-up-right

已修复 alc(4)arrow-up-right 驱动程序中的一个漏洞,该漏洞可能导致在没有插入电缆的情况下启动系统时系统崩溃。此问题在 AR8132 的 EEE PC 中发现。r215003arrow-up-right

alc(4)arrow-up-right 驱动程序中的 TX 中断调节计时器已从 50ms 减少到 1ms。50ms 的计时器导致 UDP 性能差。r212011arrow-up-right

axe(4)arrow-up-right 驱动程序已改进,以提高稳定性和 TX 数据包速率的性能。r214297arrow-up-right, r214298arrow-up-right, r214301arrow-up-right

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

已修复 bge(4)arrow-up-right 驱动程序中的一个漏洞,该漏洞导致 BCM57780 上的 TSO 无法正常工作。r211367arrow-up-right

已修复 bge(4)arrow-up-right 驱动程序中的一个漏洞,该漏洞在仅禁用 RX 校验和卸载时错误地禁用了 TX 校验和卸载功能。r214700arrow-up-right

已对 bge(4)arrow-up-right 驱动程序进行了可靠性改进,以增强 BCM5906 控制器的稳定性。r214714arrow-up-right

bge(4)arrow-up-right 驱动程序现在支持 BCM5705 或更高版本 Broadcom 控制器的硬件 MAC 统计数据,这些计数器可以通过 sysctl(8)arrow-up-right 变量 dev.bge.N.stats.* 访问,并提供有助于诊断驱动程序问题的有用信息。r214698arrow-up-right

默认情况下,已禁用 bge(4)arrow-up-right 驱动程序中的 UDP 校验和卸载功能。这是因为 Broadcom 控制器存在一个漏洞,当启用 TX UDP 校验和卸载时,可能会生成校验和值为 0 的 UDP 数据报。可以通过以下加载器可调参数启用校验和卸载:

已修复 bge(4)arrow-up-right 驱动程序中的一个漏洞,该漏洞可能导致在具有超过 4 GB RAM 的系统上性能差。问题的原因是,除 BCM5755 及更高版本外的所有 Broadcom 控制器都在 4 GB 边界 DMA 处理上存在漏洞,并且以低效的方式使用了跳跃缓冲区。r213593arrow-up-right

已添加 bwi(4)arrow-up-right 驱动程序,该驱动程序支持 Broadcom BCM430*BCM431* 系列无线以太网控制器。由于存在一些问题,此驱动程序未编译到 GENERIC 内核中。可以通过加载内核模块 if_bwi.ko 来启用此驱动程序,无需重新编译内核。r212275arrow-up-right

已修复 bwn(4)arrow-up-right 驱动程序中的一个漏洞,该漏洞导致 WPA 身份验证无法正常工作。r212274arrow-up-right

已修复 cdce(4)arrow-up-right 驱动程序中的一个漏洞。r215499arrow-up-right

cxgb(4)arrow-up-right 驱动程序现在支持以下新的 sysctl(8)arrow-up-right 变量:hw.cxgb.nfilters 设置硬件过滤表中的最大条目数,dev.cxgbc.N.pkt_timestamp 提供数据包时间戳而不是连接哈希值,dev.cxgbc.N.core_clock 提供核心时钟频率(以 kHz 为单位)。r211848arrow-up-right

em(4)arrow-up-right 驱动程序已更新至版本 7.1.9。

igb(4)arrow-up-right 驱动程序已更新至版本 2.0.7。

以下是翻译:

em(4)arrow-up-rightigb(4)arrow-up-right 驱动程序现在通过 sysctl(8)arrow-up-right MIB 对象提供统计计数器。r209309arrow-up-right

em(4)arrow-up-rightigb(4)arrow-up-right 驱动程序现在支持通过 /dev/led/emN 和 /dev/led/igbN 接口控制标识 LED。以下命令行使 em0 上的 LED 闪烁:r211241arrow-up-right

epair(4)arrow-up-right 虚拟以太网接口驱动程序现在支持显式的 UP/DOWN 链接状态。这修复了与 carp(4)arrow-up-right 协议一起使用时的问题。r212150arrow-up-right

fxp(4)arrow-up-right 驱动程序现在支持在 i82550 和 i82551 控制器上进行 VLAN 的 TSO。r214717arrow-up-right

iwn(4)arrow-up-right 驱动程序现在支持英特尔无线 WiFi Link 6000 系列。固件已更新到版本 9.221.4.1。r210673arrow-up-right

ixgbe(4)arrow-up-right 驱动程序现在也作为内核模块提供。r212386arrow-up-right

ixgbe(4)arrow-up-right 驱动程序已更新到版本 2.3.8。现在支持 82599,更好的中断处理,硬件辅助 LRO,VM SRIOV 接口等。r209308arrow-up-right, r215970arrow-up-right, r217593arrow-up-right

已重写 miibus(4)arrow-up-right ,支持 IEEE 802.3 附录 31B 完全双工流量控制。包括 alc(4)arrow-up-rightbge(4)arrow-up-rightbce(4)arrow-up-rightcas(4)arrow-up-rightfxp(4)arrow-up-rightgem(4)arrow-up-rightjme(4)arrow-up-rightmsk(4)arrow-up-rightnfe(4)arrow-up-rightre(4)arrow-up-rightstge(4)arrow-up-rightxl(4)arrow-up-right 驱动程序以及 atphy(4)、bmtphy(4)、brgphy(4)、e1000phy(4)、gentbi(4)、inphy(4)、ip1000phy(4)、jmphy(4)、nsgphy(4)、nsphyter(4) 和 rgephy(4)arrow-up-right 驱动程序已更新,支持通过此功能实现流量控制。r211379arrow-up-right, r215881arrow-up-right, r215890arrow-up-right, r2105894arrow-up-right, r216002arrow-up-right, r216023arrow-up-right, r216029arrow-up-right, r216031arrow-up-right, r216033arrow-up-right

mwlfw(4)arrow-up-right 驱动程序现在也作为内核模块提供。r212386arrow-up-right

已修复 mxge(4)arrow-up-right 驱动程序中的一个 bug,修复了 TSO 无法工作的情况。r216054arrow-up-right

nfe(4)arrow-up-right 驱动程序现在支持 WoL(局域网唤醒)。r215456arrow-up-right

re(4)arrow-up-right 驱动程序现在支持 RTL810xE/RTL8168/RTL8111 PCIe 控制器的 64 位 DMA 寄存器寻址。r215218arrow-up-right

re(4)arrow-up-right 驱动程序现在支持 RTL8169/RTL8168 控制器的硬件中断调节,用于 TX 完成中断。r215405arrow-up-right

rl(4)arrow-up-right 驱动程序现在支持 RTL8139B 或更新控制器上的 WoL(局域网唤醒)。r211377arrow-up-right

rl(4)arrow-up-right 驱动程序现在支持通过设置 sysctl(8)arrow-up-right 变量 dev.rl.N.stats 为 1 来读取硬件统计计数器。r215222arrow-up-right

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

请注意,默认值为 1。

rl(4)arrow-up-right 驱动程序的中断处理得到了改进。现在,在高 RX 负载下,TX 性能得到了提高。r214407arrow-up-right

sk(4)arrow-up-right 驱动程序中的一个错误已被修复。该错误导致 Yukon 控制器未编程工作站地址,且无法通过 ifconfig(8)arrow-up-right 覆盖工作站地址。r215216arrow-up-right

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

sis(4)arrow-up-right 驱动程序现在支持所有受支持平台。也修复了一些稳定性和性能问题。r212468arrow-up-right, r213612arrow-up-right, r213628arrow-up-right

sis(4)arrow-up-right 驱动程序现在支持在 NS DP8315 控制器上使用 WoL(局域网唤醒)。r213637arrow-up-right

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

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

xl(4)arrow-up-right 驱动程序现在支持 WoL(局域网唤醒)。请注意,并非所有控制器都支持此功能,有些需要额外的远程唤醒电缆。r213120arrow-up-right

2.2.3 网络协议

carp(4)arrow-up-right 虚拟接口和底层接口链路状态变化的问题已被修复。这个问题发生在创建 carp(4)arrow-up-right 接口之前,底层接口的链路状态尚未变为 UP 时。r213505arrow-up-right

ipfw(4)arrow-up-right 数据包过滤子系统中的一个错误已被修复。 sysctl(8)arrow-up-right 变量 net.inet.ip.fw.one_pass 对 netgraph 动作和内核 NAT 无效。r212738arrow-up-right, r216348arrow-up-right

新增了一个加载器可调项 net.link.ifqmaxlen,用于指定发送接口队列长度的默认值。此参数的默认值为 50r215342arrow-up-right

ipfw(4)arrow-up-right 数据包过滤子系统中的 ngtee 操作已发生更改,现在不再接受数据包。r212742arrow-up-right

修复了 ipfw(4)arrow-up-right 虚拟接口中的潜在崩溃问题,该问题与日志记录有关。r214108arrow-up-right

IPsec 流量分发已得到改进,以支持更多的并行处理。r209691arrow-up-right

已修复 FreeBSD IPv4 堆栈中的一个 bug,该 bug 阻止通过 netgraph(4)arrow-up-right 接口添加代理 ARP 条目。r209277arrow-up-right

已修复 FreeBSD IPv6 堆栈中的一个 bug,该 bug 阻止了在 net.inet6.ip6.use_defaultzone=1 设置下,ping6(8) 工具的 -I 选项正常工作。r211435arrow-up-right

lagg(4)arrow-up-right 接口现在支持一个 sysctl(8)arrow-up-right 变量 net.link.lagg.failover_rx_all,该变量控制是否在故障切换 lagg 中接受任何链路的输入数据包。r214111arrow-up-right

ng_eiface(4)arrow-up-right netgraph(4)arrow-up-right 节点现在支持 VLAN 兼容的 MTU 和大于 1500 的 MTU 大小。r215869arrow-up-right

ng_ether(4)arrow-up-right netgraph(4)arrow-up-right 节点现在支持通过 ifconfig(8)arrow-up-right vnet 命令在多个虚拟网络堆栈之间进行接口传输。与网络接口相关联的 ng_ether(4)arrow-up-right 节点在网络接口移动到另一个 vnet 时会被销毁并重新创建。r212320arrow-up-right

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

在启用 TSO 支持时,pf(4)arrow-up-right 数据包过滤子系统中的 ICMP 不可达问题已被修复。r212905arrow-up-right

sysctl(8)arrow-up-right 变量 net.inet.tcp.inflight.enable 控制的 TCP 带宽延迟积窗口限制算法现在默认已禁用。发现该算法在 RTT 小于 10ms 的快速网络中效率低下。自 5.2-RELEASE 以来该算法默认启用,之后仅在 RTT 小于 10ms 时才禁用(自 7.0-RELEASE 起)。计划在未来的发布中添加可插拔的 TCP 拥塞控制算法模块。r211538arrow-up-right

修复了 FreeBSD TCP 路径 MTU 探测中的一个 bug,该 bug 可能导致小于 256 字节的 MTU 被错误计算。需要注意的是,此 bug 不影响大于或等于 256 字节的 MTU。r211602arrow-up-right

改进了 FreeBSD TCP 重组实现。修复了影响 SMP 系统的长期存在的会计错误,并且已废弃 sysctl(8)arrow-up-right 变量 net.inet.tcp.reass.maxqlen,取而代之的是基于接收套接字缓冲区大小的每连接动态限制。FreeBSD 接收端现在比以前更好地处理数据包丢失(特别是因队列溢出而导致的丢包),从而提高了连接的吞吐量。r214865arrow-up-right, r214866arrow-up-right

RFC 3390 中的 TCP 初始窗口增加(可通过 sysctl(8)arrow-up-right 变量 net.inet.tcp.rfc3390 控制)现在在 TCP 连接空闲超过一个重传超时后,会将拥塞窗口减少到重启窗口。详细信息请参见 RFC 5681 第 4.1 节。r211870arrow-up-right

新增了 siftr(4)arrow-up-right 模块,统计信息用于 TCP 研究(SIFTR)内核模块。该功能记录活动 TCP 连接的一系列统计信息到日志文件。它提供了对 TCP 连接状态进行高度精细化测量的能力,面向系统管理员、开发者和研究人员。r214859arrow-up-right

FreeBSD 虚拟网络堆栈(vnet)现在支持 IPv4 多播路由。r212319arrow-up-right

2.2.4 磁盘与存储

ahci(4)arrow-up-right 驱动程序现在在 VIA VT8251 上禁用了 NCQ 和 PMP 支持,因为在负载下它们不可靠。r211458arrow-up-right

ahci(4)arrow-up-right 驱动程序现在将设备重置超时设置为 15 秒,而不是 10 秒,因为某些设备需要 10 到 12 秒才能启动。r211718arrow-up-right

arcmsr(4)arrow-up-right 驱动程序已更新至版本 1.20.00.19。r215825arrow-up-right

ada(4)arrow-up-right 驱动程序现在支持新的 sysctl(8)arrow-up-right 变量 kern.cam.ada.spindown_shutdown,该变量控制在关闭时是否对设备进行停转操作(如果设备支持此功能)。默认值为 1。r215173arrow-up-right

ata(4)arrow-up-right 驱动程序现在支持通过设备提示 hint.devname.unit.devN.modehint.devname.unit.mode 来限制设备的初始 ATA 模式。有效值与 atacontrol(8)arrow-up-rightcamcontrol(8)arrow-up-right 工具支持的值相同。r210164arrow-up-right

ata(4)arrow-up-right 驱动程序现在在加载器可调选项 hw.ata.ata_dma_check_80pin 为 0 时禁用了控制器和设备端的电缆状态检查。之前,不管此加载器可调选项的设置如何,控制器端都执行了检查。r210204arrow-up-right

ata(4)arrow-up-right 驱动程序现在在启用 ATA_CAM 时将 SATA 电源管理功能报告给 CAM(4)arrow-up-right 层。这使得设备可以在控制器配置为接受时发起转换。这样,hint.ata.N.pm_level=1 模式可以工作。r215777arrow-up-right

ata(4)arrow-up-right 驱动程序在热插拔和连接速度报告支持方面进行了改进,特别是对于一些 Intel SATA 控制器,包括以传统模式运行的 ICH5 和 ICH8+。r214671arrow-up-right

修复了 ata(4)arrow-up-right 中 Serverworks K2 SATA 控制器设备检测的问题。r213291arrow-up-right

修复了 ata(4)arrow-up-right 驱动程序中的一个 bug,该 bug 导致某些 Silicon Image 芯片组在大端系统上无法工作。r214667arrow-up-right

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

修复了 GEOM 类 geli(8)arrow-up-right 在小端平台上的一个 bug。由于此问题,新增提供者的元数据版本已更新为 4。具有旧版本的提供者与 8.2-RELEASE 及之后版本完全兼容,自动被视为具有本地字节顺序参数。r214405arrow-up-right

GEOM 类 geli(8)arrow-up-right 现在支持 sysctl(8)arrow-up-right 变量 kern.geom.eli.overwrites。该变量指定销毁磁盘密钥时应覆盖磁盘上的密钥次数。默认值为 5r214405arrow-up-right

已改进 GEOM 类 geli(8)arrow-up-right ,防止在 2^20 块(扇区)内使用相同的加密密钥。r214405arrow-up-right

GEOM 类 geli(8)arrow-up-right 现在默认使用 XTS-AES 模式。r214405arrow-up-right

现在允许 sysctl(8)arrow-up-right 变量 kern.geom.eli.debug 值为 -1。这意味着关闭 geli(8)arrow-up-right GEOM 类的所有日志消息。r214405arrow-up-right

mpt(4)arrow-up-right 驱动程序现在支持更大的 I/O 大小,这是设备和 CAM(4)arrow-up-right 子系统可以支持的。之前这个限制为 64KB,并且在 4K 页面平台上,散布/聚集段的数量被限制为 33。r210376arrow-up-right

twa(4)arrow-up-right 驱动程序已更新,版本号为 3.80.06.003。r209404arrow-up-right

2.2.5 文件系统

linprocfs(5)arrow-up-right Linux 进程文件系统现在支持 proc/$$/environmentr214050arrow-up-right

FreeBSD NFS 客户端现在支持一个内核环境变量 boot.nfsroot.nfshandlelen。该变量使得无盘启动时根文件系统能够使用 NFS 版本 3 和指定的文件句柄长度。如果没有设置此变量,则使用 NFS 版本 2。r212716arrow-up-right

ZFS 磁盘格式已更新为版本 15。r212668arrow-up-right

ZFS 元数据块代码已更新。这在写入速度上带来了明显改善,尤其是在池的空闲空间少于 30% 时。相关的 OpenSolaris 错误 ID 包括 6826241、6869229、6918420 和 6917066。r212671arrow-up-right

ZFS 现在支持下线日志设备。相关的 OpenSolaris 错误 ID 包括 6599442、6726045 和 6803605。r214013arrow-up-right

从 OpenSolaris 导入的 ZFS 性能改进包括 ACL 权限检查的缓存、stat(2)arrow-up-right 处理速度加快,以及互斥锁竞争的缓解。相关的 OpenSolaris 错误 ID 包括 6802734、6844861、6848431、6775100、6827779、6857433、6860318、6865875、6867395、6868276 和 6870564。r212672arrow-up-right

vfs.zfs.vdev.max_pending 的默认值已从 35 降至 10(OpenSolaris 错误 ID 为 6891731),以提高延迟性能。r210541arrow-up-right

ZFS 子系统中的各种错误已修复。相关的 OpenSolaris 错误 ID 包括:6328632、6396518、6501037、6504953、6542860、6551866、6572357、6572376、6582163、6586537、6595194、6596237、6604992、6621164、6623978、6633095、6635482、6664765、6674216、6696242、6696858、6702206、6710376、6713916、6717022、6722540、6722991、6737463、6739487、6739553、6740164、6745863、6747596、6747698、6748436、6755435、6757430、6758107、6759986、6759999、6761100、6761406、6764124、6765294、6767129、6769612、6770866、6774713、6774886、6775697、6776104、6776548、6780491、6784104、6784108、6785914、6788152、6788830、6789318、6790064、6790345、6790687、6791064、6791066、6791071、6791101、6792134、6792139、6792884、6793430、6794136、6794570、6794830、6797109、6797118、6798384、6798878、6799895、6800184、6800942、6801507、6801810、6803343、6803822、6804954、6807339、6807765、6809340、6809683、6809691、6810367、6815592、6815893、6816124、6818183、6821169、6821170、6822816、6824006、6824062、6824968、6826466、6826468、6826469、6826470、6826471、6826472、6827260、6830237、6830541、6833162、6833711、6833999、6834217、6836714、6836768、6838062、6838344、6841321、6843014、6843069、6843235、6844069、6844900、6847229、6848242、6856634、6857012、6861983、6862984、6863610、6870564、6880764、6882227、6892298、6898245、6906110、6906946、6939941、6950219、6951024 和 6953403。r212672arrow-up-right

2.3 用户空间变化

arp(8)arrow-up-right 工具已得到改进。即使单个接口有多个别名,它的运行速度也得到了提升。r209267arrow-up-right

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

calendar(1)arrow-up-right 工具现在支持跨越多年的重复事件、月相事件和太阳事件。r211723arrow-up-right

dhclient(8)arrow-up-right 工具现在报告退出的原因,并且 dhclient(8) 在忽略路由消息的 10 秒延迟时间已被修改为从 dhclient-script 启动后开始,而不是它完成后。这一变化修复了 dhclient(8) 在某些条件下无声退出的问题。r210915arrow-up-right

增加了对 dtrace(1)arrow-up-right 子系统的用户空间支持。这允许检查用户空间软件及其与内核的关联,从而提供更清晰的幕后运行情况。增加了 dtruss(1)arrow-up-right 工具,并且 libproc 库也已更新以支持该功能。r214983arrow-up-right

du(1)arrow-up-right 工具现在支持选项 -t threshold,用于显示大于指定 threshold 值的条目。如果该值为负数,则显示小于 threshold 绝对值的条目。r209362arrow-up-right

fdisk(8)arrow-up-right 工具现在支持由 gjournal(8)arrow-up-rightgeli(8)arrow-up-right GEOM 类提供的分区。r215667arrow-up-right

gcore(1)arrow-up-right 工具现在支持 -f 参数,它强制完全转储所有段,除了格式错误的段。r210567arrow-up-right

geli(8)arrow-up-right 工具现在支持子命令 resize,可以在扩展加密文件系统后调整其大小。r214405arrow-up-right

geli(8)arrow-up-right 工具现在支持子命令 suspendresume。子命令 suspend 会使 geli(8)arrow-up-right 设备等待所有正在进行的 I/O 请求,暂停新的 I/O 请求,移除所有敏感数据(如加密密钥)并等待命令 geli resumegeli detach。更多信息,请参见 geli(8)arrow-up-right 手册页。r214405arrow-up-right

geli(8)arrow-up-right 工具现在严格检查元数据提供者的大小。如果检查失败,则不会附加该提供者。新的 -f 选项可以覆盖这一行为。r214405arrow-up-right

geli(8)arrow-up-right 工具现在支持选项 -J newpassfile-j oldpassfile,用于从文件加载密码。r214405arrow-up-right

现在函数 gethost*()getnet*()getproto*() 在结果缓冲区大小太小时设置 errno 为 ERANGE,并且 NSS 后端在返回 NS_RETURN 时终止。r211938arrow-up-right

gpart(8)arrow-up-right 工具现在支持 resize 命令,可以调整所有方案(除了 EBR)中的分区大小。r209497arrow-up-right

gpart(8)arrow-up-right 工具现在支持备份和恢复子命令,用于备份分区表并恢复它们。r215941arrow-up-right

gpart(8)arrow-up-right 工具现在处理带有和不带 /dev/ 前缀的几何/提供者名称。r213661arrow-up-right

gpart(8)arrow-up-right 工具现在支持 -F 选项用于子命令 destroy。此选项强制销毁分区表,即使它不为空。r213684arrow-up-right

gpart(8)arrow-up-right 工具现在支持 GPT 分区表的子命令 recover。以下三种类型的损坏将标记为损坏 GPT:r213684arrow-up-right

  • 主 GPT 头或表损坏。

  • 次 GPT 头或表损坏。

  • 次 GPT 头未位于最后的 LBA。

除子命令 destroyrecover 外,不允许对损坏的 GPT 表进行更改。

gpart(8)arrow-up-right 工具现在支持 GPT 中的属性 GPT_ENT_ATTR_BOOTMEGPT_ENT_ATTR_BOOTONCEGPT_ENT_ATTR_BOOTFAILED。命令行中的属性关键字分别为 bootme、bootonce 和 bootfailed。r213994arrow-up-right

修复了 newfs(8)arrow-up-right 工具中的一个问题。使用 64KB 块大小创建的 UFS1 文件系统错误地被识别为具有损坏超级块的文件系统。这是因为 FreeBSD 内核首先检查分区的 64KB 偏移处是否存在 UFS2 超级块,而 UFS1 文件系统使用 64KB 块大小时,可能在相同位置有一个备用超级块。例如,使用 newfs -U -O 1 -b 65536 -f 8192 创建的文件系统可能会导致此症状。r215728arrow-up-right

hastd(8)arrow-up-right 工具现在支持 SIGHUP 信号重新加载配置文件。当收到 SIGTERM 或 SIGINT 时,工作进程会终止。r213049arrow-up-right

ifconfig(8)arrow-up-right 工具现在更加严格地检查无效的 CIDR 子网表示法。它错误地接受了 10.0.0.1/10.0.0.1 作为 10.0.0.1/10r212144arrow-up-right

修复了 jn(3)arrow-up-rightjnf(3)arrow-up-right 函数中的精度问题。r215237arrow-up-right

修复了 jot(1)arrow-up-right 工具中的重复序列和反向范围的错误行为。r209284arrow-up-right

libarchive 库和 tar(1)arrow-up-right 工具现在支持 LZMA(Lempel-Ziv-Markov 链算法)压缩格式。r213667arrow-up-right

tar(1)arrow-up-right 工具现在支持在 -b <blocksize> 选项中设置最多 8192(4MB)的块大小。r215229arrow-up-right

修复了 lpr(1)arrow-up-right 工具中的一个问题,该问题导致它在 ZFS 文件系统上无法处理某些文件。r214442arrow-up-right

mount(8)arrow-up-right 工具中的 -p 选项现在正确显示为与 fstab(5)arrow-up-right 格式一致的挂载选项 rwr213978arrow-up-right

ncal(1)arrow-up-right 工具已更新。-b 选项已被 -C-B <number> 选项取代。新增了 -3 选项以显示前一个、当前和下一个月,和 -A <number> 选项以显示当前月后的月份。-m <N> <YYYY> 选项现在只打印月份,而不是整个年份。r213889arrow-up-right

newsyslog(8)arrow-up-right 工具现在支持 -S <pidfile> 选项以覆盖默认的 syslogd(8)arrow-up-right PID 文件。r211699arrow-up-right

newsyslog(8)arrow-up-right 工具现在支持一个特殊的日志文件名 <include> 用于文件包含处理。文件名中的通配符和循环依赖检测得到支持。更多详细信息,请参见 newsyslog.conf(5)arrow-up-right 手册页面。r215622arrow-up-right

ntpd(8)arrow-up-right 工具现在已编译为支持共享内存参考时钟驱动程序。例如,可以通过 Ports 中的 astro/gpsd 使用 GPS 设备作为精确时间源。r213980arrow-up-right

pax(1)arrow-up-right 实用程序在处理超长的 ustar 文件名时,已修复一个越界错误。r212848arrow-up-right

pkill(1)arrow-up-right 实用程序现在支持选项 -l,类似于 kill(1)arrow-up-right 实用程序。r209912arrow-up-right

pmcstat(8)arrow-up-right 实用程序现在支持文件和网络套接字作为 top 源。新增选项 -O <filename> 指定将日志输出发送到 filename,而另一个新选项 -R <filename> 指定从 filename 接收事件。对于套接字,filename 采用 ipaddr:port 形式。这使得在没有本地符号的系统上通过 TCP 进行监控成为可能。例如。r211098arrow-up-right

pom(6)arrow-up-right 实用程序现在支持一个 -p 参数,仅打印百分比。r210089arrow-up-right

powerd(8)arrow-up-right 实用程序现在支持 -m <freq>-M <freq> 来分别控制最小和最大频率。r212472arrow-up-right

ruptime(1)arrow-up-right 实用程序现在能够显示超过 12 个字符的主机名。r213825arrow-up-right

当指定 -u 选项时,sh(1)arrow-up-right 程序的行为已更改。当没有位置参数时,特殊参数 $@$* 不再导致错误。r215066arrow-up-right

sh(1)arrow-up-right 程序中的一个错误已修复。如果 shell 是交互式的并且启用了作业控制,现在 SIGINT 信号将通过子进程传递。例如,通过 Ctrl-C 中止 sleep(1)arrow-up-right 命令时,不再在命令行中显示 ok [r210616arrow-up-right]

sh(1)arrow-up-right 程序现在支持仅由重定向组成的 bg 命令。例如:[r210732arrow-up-right]

sleep(1)arrow-up-right 实用程序现在支持 SIGINFO 信号,并报告指定的睡眠时间和剩余时间。r211536arrow-up-right

tftp(1)arrow-up-righttftpd(8)arrow-up-right 实用程序已改进,以提高互操作性,并且现在支持 RFC 1350, 2347, 2348, 2349 和 3617。r213036arrow-up-right, r213038arrow-up-right

tr(1)arrow-up-right 实用程序中的一个错误已修复,解决了等效类处理中的 [=] 问题。之前,紧随 [= 后的右括号被错误地视为特殊字符。r213899arrow-up-right

uname(1)arrow-up-right 实用程序现在支持参数 -o,作为 -s 参数的同义词,以与其他系统兼容。r210566arrow-up-right

vi(1)arrow-up-right 实用程序中的一些错误已修复,包括在插入模式下处理 ^@^C 时的错误——当读取 ex 命令时。r211060arrow-up-right

watchdogd(8)arrow-up-right 程序现在使用内存参数 MADV_PROTECT 来保护自己,以防在可用内存不足时被 FreeBSD 内核终止。这种进程终止通常发生在交换密集型工作负载中。r214345arrow-up-right

zfs(8)arrow-up-right 实用程序中的命令 set sharenfs 现在支持 sec 选项。r209870arrow-up-right

2.3.1 /etc/periodic 脚本

已添加用于 zfs scrub 的定期脚本。有关详细信息,请参阅 periodic.conf(5)arrow-up-right 手册页。

已添加一个定期脚本,可以用来查找安装的 Port 文件与其校验和不匹配的情况。有关详细信息,请参阅 periodic.conf(5)arrow-up-right 手册页。

2.4 第三方的软件

ACPI-CA 已更新至 20101013。

ee(1)arrow-up-right 程序已更新至版本 1.5.2。r214287arrow-up-right

ISC BIND 已更新至版本 9.6-ESV-R3。

netcat 已更新至版本 4.8。

OpenSSL 已更新至版本 0.9.8q。

timezone 数据库已更新至 tzdata2010o 版本。

xz 已从 2010 年 4 月 12 日的快照更新至 5.0.0 版本。

2.5 Ports/软件包基础设施

pkg_create(1)arrow-up-right 实用程序现在支持 LZMA (xz) 压缩。请注意,默认仍然是 bzip2r215738arrow-up-right

2.6 发布工程与集成

sysinstall(8)arrow-up-right 实用程序现在使用以下数字作为默认和最小分区大小:/ 为 1GB,/var 为 4GB,/tmp 为 1GB。r211007arrow-up-right

sysinstall(8)arrow-up-right 实用程序现在尝试在未检测到 VGA 卡时在串行端口上启用 getty(8)arrow-up-rightr211009arrow-up-right

支持的 GNOME 桌面环境版本(x11/gnome2arrow-up-right)已更新至 2.32.1。

支持的 KDE 桌面环境版本(x11/kde4arrow-up-right)已更新至 4.5.5。

3 从旧版 FreeBSD 升级

[amd64, i386] 通过使用 freebsd-update(8)arrow-up-right 实用程序,能在不同的 RELEASE 版本之间(以及各种安全分支的快照)进行升级。二进制升级过程将更新未修改的用户空间工具以及未修改的 GENERIC 内核,这些内核作为 FreeBSD 官方发布的一部分进行分发。 freebsd-update(8)arrow-up-right 实用程序要求被升级的主机具有互联网连接。

通过光盘分发介质上的 sysinstall(8)arrow-up-right 主菜单中的“Upgrade”选项,支持一种较旧形式的二进制升级。这种类型的二进制升级在非 i386、非 amd64 机器或没有互联网连接的系统上可能会很有用。

也支持基于源代码的升级(即从源代码重新编译 FreeBSD 基本系统的升级),具体请根据 /usr/src/UPDATING 中的说明进行操作。

重要:

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

可以从 ftp://ftp.FreeBSD.org/arrow-up-right 下载此文件和其他与版本相关的文档。

关于 FreeBSD 的问题,请在联系 [email protected]envelope 之前,先阅读 文档arrow-up-right

关于本文件的任何问题,请发送邮件至 [email protected]envelope

最后更新于