FreeBSD 7.1 RELEASE 发行公告(2009 年 1 月 4 日)

原文链接:FreeBSD 7.1-RELEASE Release Notes

FreeBSD 项目

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

$FreeBSD: release/7.1.0/release/doc/en_US.ISO8859-1/relnotes/article.sgml 186643 2008-12-31 08:07:10Z hrs $

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

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

IEEE、POSIX 和 802 是电气和电子工程师协会(IEEE)的注册商标,注册地为美国。

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

Sparc、Sparc64、SPARCEngine 和 UltraSPARC 是 SPARC International, Inc. 在美国及其他国家的商标。使用 SPARC 商标的产品基于 Sun Microsystems, Inc. 开发的架构。

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

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

1 介绍

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

此版本的 FreeBSD 7.1-RELEASE 是一个发布版本。它可以在 ftp://ftp.FreeBSD.org/ 或任何其镜像站点找到。有关如何获取此(或其他)版本的 FreeBSD 发行版的更多信息,可以查阅 FreeBSD 手册 中的 "获取 FreeBSD" 附录

所有用户在安装 FreeBSD 之前都应查阅发布的勘误表。勘误文档会更新包含“最后时刻”发现的信息,这些信息通常是在发布周期结束或发布后出现的。它通常包含已知的漏洞、安全通告和文档的更正。可以在 FreeBSD 网站上找到 FreeBSD 7.1-RELEASE 的最新勘误。

2 新特性

本节介绍了自 7.0-RELEASE 以来,FreeBSD 中最为用户可见的新特性或更改。

典型的发布说明项目记录了 7.0-RELEASE 之后发布的最新安全通告、新的驱动程序或硬件支持、新的命令或选项、重要的 bug 修复或第三方软件升级。它们也可能列出对主要 Port/包或发布工程实践的更改。显然,发布说明无法列出从一个版本到另一个版本之间对 FreeBSD 所做的每一个更改;本文件主要集中在安全通告、用户可见的更改以及主要的架构改进上。

2.1 安全通告

以下安全通告中描述的问题已被修复。有关更多信息,请查阅各个通告,详情请访问 http://security.FreeBSD.org/

| 通告 | 日期 | 主题 | | --| | | | SA-08:05.openssh | 2008 年 4 月 17 日 | OpenSSH X11 转发权限提升 | | SA-08:06.bind | 2008 年 7 月 13 日 | DNS 缓存投毒 | | SA-08:07.amd64 | 2008 年 9 月 3 日 | amd64 swapgs 本地权限提升 | | SA-08:08.nmount | 2008 年 9 月 3 日 | nmount(2) 本地任意代码执行 | | SA-08:09.icmp6 | 2008 年 9 月 3 日 | IPv6 连接导致的远程内核 Panic | | SA-08:10.nd6 | 2008 年 10 月 1 日 | IPv6 邻居发现协议路由漏洞 | | SA-08:11.arc4random | 2008 年 11 月 24 日 | arc4random(9) 可预测序列漏洞 | | SA-08:12.ftpd | 2008 年 12 月 23 日 | ftpd(8) 跨站请求伪造 | | SA-08:13.protosw | 2008 年 12 月 23 日 | netgraph / 蓝牙权限提升 |

2.2 内核更改

clock_gettime(2) 及相关系统调用现已支持 POSIX 中定义的时钟 ID CLOCK_THREAD_CPUTIME_ID。

cpuset(2) 系统调用已被添加。该 API 用于线程与 CPU 绑定以及 CPU 资源的分组与分配。

DTrace,一种全面的动态追踪框架和 dtrace(1) 用户态工具,已从 OpenSolaris 导入。DTrace 提供了强大的 基本设施,使管理员、开发人员和服务人员能够简洁地回答关于操作系统和用户程序行为的任意问题。

ddb(4) 内核调试器现在具有输出捕获功能。现在可以将 ddb(4) 的输入和输出捕获到内存缓冲区,以便稍后使用 sysctl(8) 或文本转储进行检查。新捕获命令控制此功能。

ddb(4) 调试器现在支持简单的脚本功能,支持由一组 ddb(4) 命令组成的命名脚本。这些命令可以在 ddb(4) 内部管理,也可以使用新的 ddb(8) 工具进行管理。更多详细信息请参见 ddb(4) 手册页。

ddb(4)ex 命令现在支持 /S 模式,该模式将请求的地址的值作为符号进行解释和打印。例如,ex /S aio_swake 将打印当前通过 aio_swake 钩子注册的函数名称。

ddb(4) 新增了 show conifhk 命令。此命令列出了当前在 run_interrupt_driven_config_hooks() 中等待完成的钩子。

fcntl(2) 系统调用现在支持 F_DUP2FD 命令。此命令等同于 dup(2),并且与 Sun Solaris 和 IBM AIX 兼容。

FreeBSD 的 linux(4) ABI 支持现已实现 sched_setaffinity()get_setaffinity(),使用真实的 CPU 亲和性设置原语。

rpc.lockd(8) 的客户端功能已在 FreeBSD 内核中实现。该实现提供了正确的 flock(2) 风格锁的语义,这些锁由 lockf(1) 命令行工具和 pidfile(3) 库使用。它还实现了从服务器重启的恢复,并确保在获得锁之前将脏缓存块写入服务器(允许多个客户端使用文件锁来安全地共享数据)。此外,已添加并默认启用新的内核选项 NFSLOCKD。如果启用内核支持, rpc.lockd(8) 将自动检测并使用该功能。

FreeBSD 内核现支持一种新的内核转储文本格式。文本转储通过机械生成/提取的调试输出提供更高级别的信息,而不是简单的内存转储。该功能可用于生成简短的内核错误报告,这些报告丰富了调试信息,但不依赖于内核符号表或精确同步的源代码。更多信息请参见 textdump(4) 手册页。

wait4(2) 系统调用现支持 WNOWAIT 标志,以保持返回状态的进程处于可等待状态,以及 WSTOPPED,该标志等同于 WUNTRACED

[amd64, i386, sparc64] FreeBSD 内核现支持将中断绑定到 CPU 的初步支持。

[amd64, i386] sched_ule(4) 调度器现为 GENERIC 内核中的默认进程调度器。

已添加 sysctl 变量 kern.features.compat_freebsd[456]。这些变量对应于内核选项 COMPAT_FREEBSD[456]

2.2.1 引导加载程序更改

[amd64, i386] 引导加载程序使用的 BTX 内核已更改为从实模式调用 BIOS 例程。此更改使得从 USB 设备引导 FreeBSD 成为可能。

[amd64, i386] 新增了 gptboot 引导加载程序,以支持从 GPT 标签的磁盘引导。新增了一个引导命令到 gpt(8),通过写入引导加载程序所需的位,创建新的引导分区(如有必要),使 GPT 磁盘可引导。

2.2.2 硬件支持

cmx(4) 驱动程序,Omnikey CardMan 4040 PCMCIA 智能卡读卡器的驱动程序,已被添加。

[sparc64] 新增了 kbdmux(4) 驱动程序。现在 sunkbd(4) 支持像 ukbd(4) 一样的 atkbd(4) 模拟。

nvram(4) 驱动程序现在是 MPSAFE。

puc(4) 驱动程序的选项 PUC_FASTINTR 不再支持。

psm(4) 驱动程序现在尝试在 IntelliMouse 之前检测 Synaptics 触摸板。一些触摸板可能会假装是 IntelliMouse,导致 IntelliMouse 探测正常工作,而 Synaptics 检测始终未执行。

uslcom(4) 驱动程序,适用于 Silicon Laboratories CP2101/CP2102 USB 串行适配器的驱动程序,已从 OpenBSD 导入。

2.2.2.1 多媒体支持

agp(4) 驱动程序现在支持 Intel G33 和 G45。

[i386] 新增了 dpms(4) 驱动程序,用于在挂起和恢复过程中使用 VESA BIOS 进行 DPMS。

DRM 内核驱动程序现在支持 i915 GME 设备。

2.2.2.2 网络接口支持

ale(4) 驱动程序已添加,以支持 Atheros AR8121/AR8113/AR8114 千兆/快速以太网控制器。此驱动程序在本版本的 GENERIC 内核中未启用。

em(4) 驱动程序已拆分为两个驱动程序,并共享一些公共部分。em(4) 驱动程序将继续支持 82575 及更早版本的适配器,以及新的客户端/桌面适配器。新的 igb(4) 驱动程序将支持新的服务器适配器。

hme(4) 驱动程序已改进。

ixgbe(4) 驱动程序已更新至 Intel 版本 1.6.2。

修复了某些 miibus(4) 支持的驱动程序中的错误,该错误导致 IEEE 802.3 自动协商顺序错误。现在,它根据 IEEE 802.3 附录 28B.3 中描述的顺序选择正确的技术。

msk(4) 驱动程序添加了 TCP/UDP 硬件校验和卸载的临时解决方法,适用于短帧。需要注意的是,对于需要硬件 VLAN 标签插入的帧,由于 VLAN 标签后 mbuf 中的校验和偏移变化,校验和卸载的临时解决方法不起作用。因此,在这种情况下,需要禁用 VLAN 接口的硬件校验和卸载。

ndis(4) NDIS miniport 驱动程序包装器已改进。

sf(4) 驱动程序已改进,并现在支持校验和卸载。

stge(4) 驱动程序现在支持 WOL(网络唤醒)。

vr(4) 驱动程序已改进。

[amd64, i386] wpi(4) 驱动程序已更新,包括多个稳定性修复。

2.2.3 网络协议

arp(8) 工具现在支持关键字 rejectblackhole。在标记为 reject 的条目中,目标主机的流量将被丢弃,且发送者将被通知主机不可达。在标记为 blackhole 的条目中,流量被丢弃,但发送者不会收到通知。

bpf(4) 现在支持 ioctl BIOCSETFNR。此功能与 BIOCSETF 相似,但不会丢弃描述符上的所有缓存数据包,也不会重置统计信息。

if_bridge(4) 现在允许通过 ifconfig(8) 的 ifmaxaddr 参数限制桥接接口下源 MAC 地址的数量。

修复了 carp(4) 接口配置中的一个错误,该错误会导致系统崩溃。

dummynet(4) 子系统现在支持快速模式操作,允许某些数据包绕过 dummynet 调度器。当数据包流量低于管道带宽时,这可以实现更低的延迟和开销,并消除子系统中的递归。已添加新的 sysctl 变量 net.inet.ip.dummynet.io_fast 来启用此功能。

enc(4) 现在支持 sysctl 变量,用于控制防火墙或 bpf(4) 是否能够看到传入和传出的 IPsec 数据包的内外层头部,或者仅看到内层或外层头部。

gre(4) 现在支持 ioctl GRESKEY 和 GREGKEY,可以设置或获取用于传出数据包的 GRE 密钥。

修复了 ipsec(4) 子系统中的一个错误,该错误在路由的 MTU 小于传出接口的 MTU 时导致 PMTU 被破坏。

由于缺乏对多处理器的支持,已移除 netatm 子系统。

ng_nat(4) 现在支持在 libalias 中的重定向功能。更多细节,请参阅手册页。

ng_pptpgre(4) 现在支持多个挂钩,如 ng_l2tp(4),使得可以使用一对 pptpgre 和 ksocket 节点进行两个对等体之间的所有呼叫。

resolver(3) 现在允许在域名中使用下划线。尽管这违反了 RFC 1034 [STD 13],但某些名称服务器以及其他流行操作系统的解析库接受这种用法。

已为 TCP 套接字添加了套接字选项 TCP_CONGESTION,用于设置和检索拥塞控制算法。所使用的名称与 Linux 保持兼容。

rwlock(9) 已在 inpcbinfoinpcb 基本设施中使用,包括依赖于该 基本设施的协议,如 UDP、TCP 和原始 IP 套接字,以减少锁竞争。

2.2.4 磁盘和存储

aac(4) 驱动程序现在支持大于 2TB 的 RAID 的 64 位阵列支持,以及对设备的同时打开以向控制器发出命令。

ata(4) 驱动程序现在支持加载器变量 hw.ata.ata_dma_check_80pin。此变量可用于禁用某些笔记本电脑和 Soekris 板上的损坏系统的 80pin 电缆检查。默认值为 1。

修复了 ata(4) 驱动程序在 ServerWorks HT1000 芯片组上的数据损坏问题。

ciss(4) 驱动程序现在支持加载器可调项 hw.ciss.nop_message_heartbeat 用于 ciss_periodic() 中的 NOP 消息轮询。此功能可作为解决 ADAPTER HEARTBEAT FAILED 问题的替代方法。默认值为 0(禁用)。

GEOM 类 geom_part 现在可以作为内核模块构建。

GEOM 类 geom_linux_lvm 现在可以作为内核模块构建。

hptrr(4) 驱动程序已更新为来自 Highpoint 的版本 1.2。

修复了 iir(4) 驱动程序中的缓冲区溢出问题。这可能解决了与该驱动程序相关的许多奇怪问题。

mpt(4) 驱动程序现在支持 mpt_user personality

rr232x(4) 驱动程序已被 hptrr(4) 驱动程序取代。

twa(4) 驱动程序在内存充足且 CPU 负载较高的机器上已在稳定性方面有所改进。

2.2.5 文件系统

fdescfs(5) 现在是 MPSAFE。

gpart(8) 现在支持 BSD 磁盘标签(选项 GEOM_PART_BSD)和 VTOC8 磁盘标签(选项 GEOM_PART_VTOC8)。

gvinum(8) 现在在创建 plex 时接受参数 volume

修复了 unionfs(7) 中 UNIX 域套接字的路径查找错误。

2.3 用户空间变更

adduser(8) 工具现在支持 -M 选项,用于设置新用户的主目录的模式。

atacontrol(8) 工具现在支持 spindown 命令,用于设置或报告超时,在该时间后设备将停止旋转。

chflags(1) 现在支持 -v 标志,用于输出详细信息,-f 标志用于忽略错误,-h 标志用于允许在符号链接上设置标志,其语义与(例如)chmod(1) 相同。

cp(1) 现在支持 -a 标志,该标志等效于 -RpP 标志。

修复了 cp(1) 工具中的一个错误,该错误导致 POSIX.1e ACL(请参见 acl(3))无法正确复制。

cron(8) 工具现在支持 -m 标志,该标志会覆盖默认的 cron 邮件接收者,除非在 crontab 文件中显式提供 MAILTO= 行。

dhclient(8) 现在支持 dhcp-options(5) 中描述的更多选项。

dhclient(8) 现在支持 is_default_interface() 函数,该函数用于确定该接口是否为默认路由接口。

修复了 dhclient(8) 中的一个错误,该错误导致默认路由的删除不起作用。

environ(7) 环境变量数组现在支持通过将第一个字符设置为 NULL 来取消设置变量。这是像 Dovecot 和 Postfix 等第三方软件所需的功能。

fdisk(8) 现在支持 -q 标志,用于不显示任何警告。

fetch(1) 程序和 libfetch 库现在支持环境变量 NO_PROXY。此变量指定一个用逗号或空格分隔的主机名列表,这些主机名将不使用代理。如果指定单个星号,则禁用代理的使用。

新增函数 ffsll(3)flsll(3)。这些函数与 ffs(3)fls(3) 相同,只是它们接受 long long 类型的参数。

fortune(6) 程序现在支持 FORTUNE_PATH 环境变量,用于指定搜索 fortune 文件的路径。

修复了 fortune(6) 程序中的一个错误,该错误导致 -e 选项与多个文件一起使用时无法正常工作。

freebsd-update.conf(5) 现在支持 IDSIgnorePaths 语句。

fwcontrol(8) 工具现在支持 -f <node> 选项,该选项指定 node 作为下一个总线重置时的根节点。

[sparc64] gcc(1) 现在正确接受 -mcpu 选项;之前它被硬编码为 -mcpu=ultrasparc

gpt(8) 现在支持 ZFS。

ifconfig(8) 现在支持显示 WPS IE(无线配置服务信息元素)。

kgdb(1) 现在支持 add-kld *kld* 命令,用于定位 [kld(4)] 并加载其符号。

kgdb(1) 现在具有一个共享库后端,用于内核文件,将 [kld(4)] 视为共享库,并在启动时自动加载 [kld(4)] 的符号。

kgdb(1) 现在即使在远程目标上,也支持 tid 命令和其他与内核模块相关的命令。

新增了 kvm_getcptime(3) 函数,用于从内核获取全局 CPU 时间统计信息。

libalias 库现在支持小写的 PORT 和 EPRT FTP 命令。

man(1) 现在支持有限的 [bzip2(1)] 压缩手册页。

mdconfig(8) 现在支持 -v(详细模式)标志,适用于 -l 命令。它一次性显示所有 [md(4)] 设备的大小和备份存储。

新增了 memrchr(3) 函数。它的行为类似于 memchr(3),但它定位字符串中指定字符的最后一次出现。

修复了 morse(6) 程序中的语法错误输出。

mountd(8) 工具现在支持选项 -h <bindip>,用于指定绑定的 IP 地址,用于 TCP 和 UDP 请求。此选项可以多次指定。如果未指定 -h 选项,将使用 INADDR_ANY。需要注意的是,当使用此选项指定 IP 地址时,它会自动将 127.0.0.1 和如果启用了 IPv6,则将 ::1 添加到列表中。

moused(8) 工具现在支持 -L 标志,用于更改滚动速度,并使 -U 选项的行为仅影响滚动阈值。

mv(1) 现在支持在跨设备将目录移动到现有目录时符合 POSIX 规范。

periodic(8) 现在支持在 [periodic.conf(5)] 中的配置变量 daily_status_mail_rejects_shorten。这使得拒绝的邮件报告按黑名单统计拒绝次数,而不提供有关单个发件人主机的详细信息。默认配置保持报告的原始形式。

ping6(8) 现在与 ping(8) 一样,使用退出状态 02

ping6(8) 现在支持 -o 标志,使 ping6(8) 在接收到一个回复包后成功退出。

ping6(8) 现在支持 -r-R 标志,分别等效于 ping(8) 的标志 -a-A

ping6(8) 的最小允许间隔已从 0.01 降至 0.000001

realpath(1) 工具现在支持 -q 标志,用于抑制警告;它现在还支持在命令行中接受多个路径。

rfcomm_pppd(8) 现在支持 -D 标志,除了支持 LAN(使用 PPP 的局域网访问)服务外,还可以注册 DUN(拨号网络)服务。

sdpd(8) 现在支持 NAP、GN 和 PANU 配置文件。

setkey(8) 工具现在接受 esp 作为 spdadd 命令的协议名称。

修复了 telnetd(8) 中的一个错误,该错误使其在指定 -a off 选项时仍会尝试进行身份验证。

top(1)vmstat(8) 现在支持 -P 标志,用于显示每个 CPU 的统计信息。

traceroute(8) 现在支持 -a 标志,用于显示每个跳跃的 IP 地址对应的 AS 编号。它将向 -A 选项中指定的 WHOIS 服务器查询该编号。如果未指定 -A,则使用 whois.radb.net 作为默认值。

新增函数 uuid_enc_le(3)uuid_dec_le(3)uuid_enc_be(3)uuid_dec_be(3)。这些函数用于编码/解码 UUID 的二进制表示。

watch(8) 工具现在支持一次性监控超过 10 个 [snp(4)] 设备。

ypserv(8) 现在支持 -P 选项,用于指定监听的端口号。

2.3.1 /etc/rc.d 脚本

rc.conf(5) 现在支持变量 dummynet_enable,在 firewall_enable 设置为 YES 时,可加载 [dummynet(4)] 内核模块。

ntpd 的 rc(8) 脚本现在可以在没有配置文件 /etc/ntp.conf 的情况下工作。

ppp 的 rc(8) 脚本现在支持多个实例。有关更多详细信息,请参见 [rc.conf(5)] 中的变量 ppp_profile 所述。

sysctl 的 rc(8) 脚本现在支持加载 /etc/sysctl.conf.local,除 /etc/sysctl.conf 外。

rc.conf(5) 现在支持为 rc.firewall 设置防火墙规则时配置接口和附加网络,当 firewall_type 为 simple 或 client 时。请参阅 firewall_client_netfirewall_simple_iiffirewall_simple_inetfirewall_simple_oiffirewall_simple_onet

2.4 第三方软件

am-utils 已从 6.0.10p1 更新到 6.1.5 版本。

ISC BIND 已更新到 9.4.2-P2 版本。

awk 已从 2007 年 5 月 1 日的版本更新到 2007 年 10 月 23 日的版本。

bzip2 已从 1.0.4 版本更新到 1.0.5 版本。

CVS 已更新到 1.11.22.1 版本。

hostapd 已更新到 0.5.10 + radius ACL 支持。

libarchive 已更新到 2.5.5 版本。

ncurses 库已更新到 5.6-20080503 版本。

NTP 已更新到 4.2.4p5 版本。

OpenPAM 已从 Figwort 版本更新到 Hydrangea 版本。

OpenSSH 已从 4.5p1 更新到 5.1p1 版本。

resolver(3) 库已更新为 ISC BIND 9.4.3 的一个版本。

sendmail 已从 8.14.2 更新到 8.14.3 版本。

时区数据库已从 tzdata2007h 版本更新到 tzdata2008h 版本。

wpa_supplicant 已更新到 0.5.10 + syslog 支持。

2.5 发布工程与集成

GNOME 桌面环境(x11/gnome2)的支持版本已从 2.20.1 更新到 2.22。

KDE 桌面环境(x11/kde3)的支持版本已从 3.5.8 更新到 3.5.10。

3 从旧版 FreeBSD 升级

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

通过光盘发行介质的主 sysinstall(8) 菜单中的 Upgrade 选项有一种较旧的二进制升级形式。这种类型的二进制升级在非 i386、非 amd64 机器上或没有互联网连接的系统上可能会有所帮助。

根据 /usr/src/UPDATING 中的说明,支持从以前的版本进行基于源代码的升级(即从源代码重新编译 FreeBSD 基本系统)。

重要提示:

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


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

有关 FreeBSD 的问题,请在联系 questions@FreeBSD.org 之前阅读 文档

有关此文档的问题,请发送电子邮件至 doc@FreeBSD.org

最后更新于