For the complete documentation index, see llms.txt. This page is also available as Markdown.

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 是 Intel Corporation 或其子公司在美国及其他国家的商标或注册商标。

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 修复或第三方软件升级。它们也可能列出对主要 Ports/包或发布工程实践的更改。显然,发行说明无法列出从一个版本到另一个版本之间对 FreeBSD 所做的每一项更改;本文件主要集中在安全公告、用户可见的更改以及主要的架构改进上。

2.1 安全公告

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

公告
日期
主题

2008 年 4 月 17 日

OpenSSH X11 转发权限提升

2008 年 7 月 13 日

DNS 缓存投毒

2008 年 9 月 3 日

amd64 swapgs 本地权限提升

2008 年 9 月 3 日

nmount(2) 本地任意代码执行

2008 年 9 月 3 日

IPv6 连接导致的远程内核 Panic

2008 年 10 月 1 日

IPv6 邻居发现协议路由漏洞

2008 年 11 月 24 日

arc4random(9) 可预测序列漏洞

2008 年 12 月 23 日

ftpd(8) 跨站请求伪造

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) 或文本转储进行检查。新的命令 capture 控制此功能。

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) 新增了命令 boot,通过写入引导加载程序所需的部分,创建新的引导分区(如有必要),使 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 中描述的顺序,选择 IEEE 802.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) 工具现在支持关键字 reject 和 blackhole。在标记为 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) 遍及 inpcbinfo 和 inpcb 基础设施使用,包括依赖于该基础设施的协议,如 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) 驱动程序替代。

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

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>,用于指定 TCP 和 UDP 请求绑定的 IP 地址。此选项可以多次指定。如果未指定 -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) 一样,使用退出状态 0 和 2。

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 外,还支持加载 /etc/sysctl.conf.local。

rc.conf(5) 现在支持在 firewall_type 为 simple 或 client 时,为 rc.firewall 中的防火墙规则配置接口和附加网络。请参阅 firewall_client_net、firewall_simple_iif、firewall_simple_inet、firewall_simple_oif 和 firewall_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。

最后更新于