FreeBSD 5.2-RELEASE amd64 发行说明(2004 年 1 月 9 日)
FreeBSD 项目
版权所有 © 2000, 2001, 2002, 2003, 2004 FreeBSD 文档项目
$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.663.2.5 2004/01/09 17:08:32 bmah Exp $FreeBSD 5.2-RELEASE 的发行说明包含了对 5-CURRENT 开发分支中 FreeBSD 基本系统最近变更的总结。本文档列出了自上一个版本以来发布的适用安全公告,以及对 FreeBSD 内核和用户空间的重大变更。此外还提供了一些关于升级的简要说明。
1 引言
本文档包含了 FreeBSD 5.2-RELEASE 在 AMD64 硬件平台上的发行说明。它介绍了最近新增、变更或删除的 FreeBSD 特性,并提供了从之前版本升级的相关说明。
此 FreeBSD 5.2-RELEASE 发行版是一个正式发布版本。可以在 ftp://ftp.FreeBSD.org/ 或任何镜像站点找到。有关获取此版本(或其他)FreeBSD 发行版的更多信息,可以参考 《获取 FreeBSD》 附录,该内容位于 FreeBSD 手册 中。
对于刚接触 FreeBSD 5-CURRENT 系列版本的用户,还应阅读《FreeBSD 5.2-RELEASE 早期采用者指南》。这份文档通常与发行说明位于同一位置(可以是 FreeBSD 发行版的一部分,也可以在 FreeBSD 网站上找到)。它包含了关于使用 FreeBSD 5.2-RELEASE(相对于基于 FreeBSD 4-STABLE 开发分支的版本)的优缺点的重要信息。
强烈建议所有用户在安装 FreeBSD 之前查看发布的勘误文档。勘误文档会更新“临发布时”的信息,通常是在发布周期的最后阶段或发布之后发现的信息。它通常包含已知的漏洞、安全公告以及文档修正。可以在 FreeBSD 网站上找到 FreeBSD 5.2-RELEASE 的最新勘误。
2 新特性
本节介绍了 FreeBSD 5.1-RELEASE 之后 FreeBSD 中许多用户可见的新特性或变更。它包括专属于 5-CURRENT 分支的条目,以及一些可能最近合并到其他分支(在 FreeBSD 5.1-RELEASE 之后)的特性。后者标记为 [已合并]。
典型的发行说明条目记录了在 5.1-RELEASE 之后发布的安全公告、新驱动程序或硬件支持、新命令或选项、主要的 bug 修复或第三方软件升级。它们还可能列出主要 Ports/软件包或发布工程实践的变更。显然,发行说明不能列出从一个版本到下一个版本之间对 FreeBSD 所做的每一项变更;本文档主要关注安全公告、用户可见的变更和主要的架构改进。
2.1 安全公告
修复了 realpath(3) 中的一个单字节缓冲区溢出问题。虽然该修复在 FreeBSD 5.1-RELEASE 发布之前就提交了(因此 5.1-RELEASE 并未受影响),但在发布文档中未提及此问题。详见安全公告 FreeBSD-SA-03:08。[已合并]
修复了一个可能导致内核尝试传递无效信号的 bug。该 bug 可能会导致内核 panic,或者在某些情况下,未经授权修改内核内存。更多信息请参见安全公告 FreeBSD-SA-03:09。[已合并]
修复了 iBCS2 模拟模块中的一个 bug,该 bug 可能导致泄露内核内存内容。该模块在 FreeBSD 中默认未启用。更多信息请参见安全公告 FreeBSD-SA-03:10。[已合并]
修复了 OpenSSH 中的一个缓冲区管理 bug,该 bug 可能导致崩溃。更多信息请参见安全公告 FreeBSD-SA-03:12。[已合并]
修复了 sendmail 中的一个缓冲区溢出问题。更多信息请参见安全公告 FreeBSD-SA-03:13。[已合并]
修复了一个 bug,该 bug 可能导致内核在 ARP 缓存代码中造成资源耗尽,最终导致系统 panic。更多信息请参见安全公告 FreeBSD-SA-03:14。[已合并]
修复了 OpenSSH PAM 挑战/响应认证子系统中的多个错误。这些错误的影响不同;详细信息请参见安全公告 FreeBSD-SA-03:15。[已合并]
修复了 procfs(5) 和 linprocfs(5) 中的一个 bug,该 bug 可能导致泄露内核内存的内容。更多信息请参见安全公告 FreeBSD-SA-03:17。[已合并]
修复了 OpenSSL 中的四个独立安全漏洞,这些漏洞可能允许远程攻击者使依赖 OpenSSL 的应用程序崩溃,或以应用程序的权限执行任意代码。更多信息请参见安全公告 FreeBSD-SA-03:18。[已合并]
修复了 BIND 中一个潜在的拒绝服务问题。更多信息请参见安全公告 FreeBSD-SA-03:19。[已合并]
2.2 内核变化
acpi(4) 驱动的 CPU 组件现在根据 ACPI 2.0 标准支持单处理器和 SMP 系统的 C1-C3 空闲状态,在处理器空闲时提供节能/降温功能。此外,节流支持更新以符合 ACPI 2.0 标准。
新增了 dcons(4) “哑控制台”驱动,提供本地和远程控制台。可以通过 FireWire 使用 dcons_crom(4) 驱动访问该控制台。dconschat(8) 工具提供用户对 dcons(4) 设备的访问。
现在通过内核选项 LIBICONV 支持多字节字符集转换方法。
puc(4) PCI 通用通信驱动现在支持将并行端口连接到 ppc(4) 驱动。
新增了 uart(4) 驱动,以支持各种类别的 UART(通用异步接收器/发送器)设备。它类似于 sio(4) 驱动,但支持更广泛的设备。此驱动程序对于支持某些架构(如 ia64 和 sparc64)上的串行端口是必需的。
现已实现内核软件看门狗功能。更多信息请参见 watchdog(4) 和 watchdogd(8)。
交换分页器经过重构。用户可见的变更包括布局策略的变更(从固定宽度条带化改为设备间的轮转方式)以提高 I/O 吞吐量,消除了交换设备数量的编译时限制,并减少了内存开销。
2.2.1 特定平台的硬件支持
2.2.2 引导加载程序变化
2.2.3 网络接口支持
新的驱动程序 ath(4) 和 ath_hal(4) 为基于 AR5210、AR5211 和 AR5212 芯片的 802.11a/b/g 设备提供支持。
新增驱动程序 bfe(4),用于支持基于 Broadcom BCM4401 的快速以太网适配器。
bge(4) 现在支持基于 Broadcom 5705 的千兆以太网网卡。[已合并]
修复了驱动 bge(4) 中的一个 bug,该 bug 此前阻止其在 10 Mbps 下正常工作。
驱动程序 em(4) 现在支持使用 sysctl 调优设置中断延迟,而无需重新编译驱动。
新增驱动程序 fatm(4)。该驱动程序用于 NATM 和 NgATM,支持 Fore/Marconi PCA200 ATM 卡。
新增驱动程序 re(4),提供对 RealTek RTL8139C+、RTL8169、RTL8169S 和 RTL8110S PCI 快速以太网和千兆以太网控制器的支持。
sk(4) 现在支持基于 SK-9521 V2.0 和 3COM 3C940 的千兆以太网网卡。[已合并]
新增驱动程序 utopia(4),支持 25Mbit/sec、155Mbit/sec 和 622Mbit/sec ATM 物理层配置、状态及统计报告,适用于最常用的 ATM-PHY 芯片。
驱动程序 wi(4) 的挂起/恢复支持现在在设备配置为关闭时能正常工作。[已合并]
驱动程序 wi(4) 应再次能与 Lucent 802.11b 接口正常工作。
重写了 802.11 支持层,以支持未来的扩展和新功能。
驱动程序 xe(4) 现在支持 CE2、CEM28 和 CEM33 卡,以及 multicast(4) 数据报。此外,驱动程序中的若干 bug 修复完成。
多个网络驱动程序的中断处理程序标记为 MPSAFE,意味着它们可以在没有 Giant 锁的情况下运行。转换的驱动程序包括:ath(4)、em(4)、ep(4)、fxp(4)、sn(4)、wi(4) 和 sis(4)。
2.2.4 网络协议
IPv4 协议实现中的 ip_flow 特性被 ip_fastforward 特性取代。ip_fastforward 尝试加速简单情况下的数据包转发,将转发的数据包直接处理到输出接口,而不经过队列或 netisrs。如果无法处理特定的数据包,它会将数据包传递给正常的 ip_input 例程进行处理。可以通过将 sysctl 变量 net.inet.ip.fastforwarding 设置为 1 来启用此功能。
新增了选项 IP_ONESBCAST,用于启用无定向的 ip(4) 广播,发送到特定的网络接口。
启用选项 IPFILTER 还需要启用选项 PFIL_HOOKS。
修复了 ipfw(4) 限制规则处理中的一个 bug,该 bug 可能会导致各种 panic。[已合并]
ipfw(4) 规则现在支持逗号分隔的地址列表(如 1.2.3.4, 5.6.7.8/30, 9.10.11.12/22),并允许在逗号后添加空格,使地址列表更易读。[已合并]
ipfw(4) 规则现在支持 C++ 样式的注释。每个注释与其规则一起存储,并通过 ipfw(8) 命令 show 显示。[已合并]
ipfw(8) 现在可以修改 ipfw(4) 规则集 31,原本该规则集是只读的并用于默认规则。可以通过命令 ipfw delete set 31 删除它们,但命令 ipfw flush 不会删除它们。这实现了“持久规则”的灵活形式。更多信息请参阅 ipfw(8)。[已合并]
新增了 NetGraph 节点类型 ng_atmpif(4)。它模拟了 HARP 物理接口,并允许在没有真实硬件的情况下运行 HARP ATM 堆栈。
新增了协议独立多播路由(pim(4))的内核支持。[已合并]
FreeBSD 蓝牙协议栈更新:
libsdp 重新采用 BSD 风格许可证实现。这是因为 Linux BlueZ 代码是通过 GPL 分发的。
工具 hccontrol(8) 现在支持四个新命令:
Read/Write_Page_Scan_Mode和Read/Write_Page_Scan_Period_Mode。守护进程 hcsecd(8) 现在将链接密钥存储在磁盘上。不再需要每次都进行设备配对。
修复了内核模块 ng_hci(4) 和 ng_l2cap(4) 中的 NetGraph 超时问题,该问题可能会导致访问已释放的数据结构。
修复了无法在 FreeBSD 5.1-RELEASE 上构建的 ng_ubt(4) 模块。
rfcomm_sppd(1) 和 rfcomm_pppd(8) 现在支持通过 SDP 从服务器查询 RFCOMM 通道。通过手动指定 RFCOMM 通道可以禁用此行为,这些工具将不会使用 SDP 查询。
新增工具 sdpcontrol(8),类似于 Linux BlueZ SDP 包中的工具 sdptool。
从 KAME 项目导入了若干 IPv6 和 IPSec 代码的修复和更新。
对 IPv6 高级套接字 API 的支持现在符合 RFC 3542(也称为 RFC 2292bis),而非 RFC 2292。使用该 API 的应用程序相应更新。
新增了对 RFC 3484 的源地址选择部分的支持。可以使用 ip6addrctl(8) 工具来配置地址选择策略。
TCP 实现中新增了 tcp_hostcache 特性。它缓存了过去 TCP 会话的测量参数,以便为后续来自或去往同一源地址或目的地址的连接提供更好的初始值。以前存储在路由表中的类似信息被移除。
2.2.5 磁盘与存储
驱动程序 amr(4) 现在支持系统崩溃转储。[已合并]
驱动程序 ata(4) 进行了重大重构。较为显著的变更是,ata(4) 驱动程序现在不再受制于 Giant 内核锁。请注意,ATA 软件 RAID 系统现在必须在其内核配置文件中包括 device ataraid,因为它不再由 device atadisk 自动隐含。
ccd(4) 现在可以在原始磁盘和其他 geom(4) 提供程序上运行。
驱动程序 da(4) 不再尝试向 USB 和 FireWire 设备发送 6 字节命令。禁用了这些设备的特殊处理(这些处理现在应该不再需要);若要恢复旧行为,请在内核配置中添加 options DA_OLD_QUIRKS。[已合并]
现在可以作为内核模块加载各种 geom(4) 模块,即:geom_apple、geom_bde、geom_bsd、geom_gpt、geom_mbr、geom_pc98、geom_sunlabel、geom_vol_ffs。
新增模块 GEOM_FOX,用于检测并从连接同一设备的多个冗余路径中进行选择。
twe(4) 驱动程序现在支持 3ware 通用 API。[已合并]
2.2.6 文件系统
通过包含内核选项 CD9660_ICONV、MSDOSFS_ICONV、NTFS_ICONV 和 UDF_ICONV,现在分别支持 cd9660、msdosfs、ntfs 和 udf 文件系统的多字节字符转换。
修正了 smbfs 中的一些差一错误,这些错误导致其在处理 15 字符 NetBIOS 名称时无法正常工作。
statfs 结构体的某些成员的大小从 32 位变更为 64 位,以更好地支持多 TB 大小的文件系统。
执行源代码升级的用户必须确保内核和用户空间的版本一致,并遵循文档中的源代码升级程序进行操作。
如果定义了内核选项 COMPAT_FREEBSD4,则存在向后兼容版本的 statfs(2) 系统调用。强烈建议在内核中包括此选项。
使用 statfs(2) 的程序需要重新编译。已知的示例包括 devel/gnomevfs2、mail/postfix 和 security/cfg 等 Ports。
通过引入密歇根大学的 Citi NFSv4 客户端实现,新增了对 NFSv4 的支持。更多信息请参见 mount_nfs4(8) 和 idmapd(8) 手册页。
2.2.7 多媒体支持
2.3 用户空间变化
acpiconf(8) 现在支持 -i 选项来打印电池信息。
新增了 acpidb(8),它是 ACPI DSDT 调试器。
arp(8) 现在支持 -i 选项,用于将当前操作的范围限制在特定接口上的 ARP 条目中。此选项仅适用于显示操作。在具有大量网络接口的路由器上应当十分有用。[已合并]
新增 atmconfig(8) 程序,用于配置 ATM 驱动程序和 IP-over-ATM 功能。
chroot(8) 现在允许通过 -u、-g 和 -G 选项分别在 chroot 环境中设置用户、主组或组列表。[已合并]
compat4x.i386 库更新,以与 FreeBSD 4.9-RELEASE 中的库保持一致。
由于 devfs 总是存在,工具 dev_mkdb 不再需要,已移除。
dhclient(8) 现在会轮询网络接口的状态,仅在接口处于活动状态时发送 DHCP 请求。轮询间隔可通过 -i 选项进行控制。
fsck(8) 的 lost+found 目录的默认模式现在为 0700,而不是 01777。[已合并]
fsck_ffs(8) 和 newfs(8) 现在在每个文件系统的根目录中创建 .snap 目录,并设为 operator 组。fsck_ffs(8)、mksnap_ffs(8) 和 dump(8) 将把文件系统快照写入此目录。这一变化避免了在创建快照期间锁定文件系统根目录的访问,也有助于非根用户创建快照。
ffsinfo(8) 工具更新,以支持 UFS2 文件系统,并重新启用。
新增了 iasl(8) 工具,它是 ACPI 源语言(ASL)和 ACPI 机器语言(AML)的编译器/反编译器。
ifconfig(8) 现在支持接口的 staticarp 选项,用于禁用该接口的 ARP 请求发送。
initgroups(3) 库函数中的修复现在使得,如果登录过程无法成功设置包含为用户定义的 所有 组的进程凭证,则登录将失败。当前的内核限制为 16 个组;管理员可能需要检查用户是否定义了超过 16 个组,否则他们将无法登录。
ipfw(8) 的 list 和 show 命令现在支持规则号范围。[已合并]
ipfw(8) 现在支持标志 -n,用于测试命令的语法,而不实际变更任何内容。[已合并]
kdump(1) 现在支持 -p 选项,用于仅显示与特定进程相关的跟踪事件,并且新增标志 -E,用于显示相对于转储开始的时间戳。
last(1) 现在支持标志 -n,用于限制其输出报告中的行数。
libalias 库、natd(8) 和 ppp(8) 现在支持 Cisco Skinny Station 协议,这是 Cisco IP 电话与 Cisco Call Manager 之间通信的协议。请注意,当前不支持将 Call Manager 放在 NAT 网关后面。[已合并]
移除了 libcipher DES 加密库。其所有功能由 libcrypto 库提供,所有使用 libcipher 的基本系统程序转换为使用 libcrypto。
新增 libkiconv 库,以支持在内核中使用可加载的字符集转换表。
libwrap 和 tcpdchk(8) 现在默认配置支持扩展的 tcp_wrappers 语法。
locale(1) 实用程序重新实现,并符合 POSIX 标准。新增的 -m 选项可以显示所有可用的字符集。
mount(8) 工具现在支持在指定标志 -v 时,除常规信息外还显示每个文件系统的文件系统 ID,此外 umount(8) 工具现在也支持文件系统 ID 以及常规的设备和路径名称。这允许在两个或多个文件系统共享相同的设备和挂载点名称时,明确指定要卸载的文件系统。
mount_cd9660(8)、mount_ntfs(8) 和 mount_udf(8) 工具现在支持 -C 选项,用于指定本地字符集以转换 Unicode 文件名。可以使用此选项指定多字节字符集。
mount_msdosfs(8) 工具现在支持 -M 选项,用于指定文件系统中目录的最大权限。[已合并]
mount_msdosfs(8) 工具现在支持 -D 选项用于指定 MS-DOS 代码页,以及 -L 选项用于指定本地字符集。这些选项用于转换文件名的字符集。/usr/libdata/msdosfs 表被淘汰。
mount_nwfs(8)、mount_portalfs(8) 和 mount_smbfs(8) 工具从 /sbin 移动到 /usr/sbin。
nologin(8) 程序重新用 C 语言实现(之前是 shell 脚本)。
rc.conf(5) 变量 ntpd_flags 对于 ntpd(8) 现在默认包含 -f /var/db/ntpd.drift。
新增 PAM 模块 pam_guest(8),允许访客登录。它取代了 pam_ftp(8) 模块。
ps(1) 和 top(1) 现在支持标志 -H,用于显示每个进程中的所有内核可见线程。
修复了 rarpd(8) 无法识别可移动以太网网卡的问题。
repquota(8) 现在支持标志 -n,以数值形式显示用户和组。
rtld(1) 现在默认包括 libmap 功能;WITH_LIBMAP 编译选项不再需要,已弃用。更多信息可以在 libmap.conf(5) 中找到。
savecore(8) 现在支持标志 -C,仅指示 coredump 文件的存在或缺失。
工具 symorder 已移除。现在所有内核都使用 ELF 格式,且不再有 a.out 格式工具链。
sysinstall(8) 现在提供在安装期间选择替代 MTA 的功能。目前支持 exim 和 Postfix。
sysinstall(8) 不再支持系统“安全配置文件”;该功能被替换为单独的调优选项,用于启用和禁用 sshd(8) 并设置系统的安全级别。
systat(1) 现在包括 IPv6 和 ICMPv6 流量的显示。[已合并]
uname(1) 现在支持标志 -i,以返回内核标识。此名称也可以通过 sysctl 变量 kern.ident 获取。
许多位于 /bin 和 /sbin 的实用程序现在作为静态链接的“crunched”二进制文件提供,存放在 /rescue 目录中。此功能类似于 sysinstall(8) 安装的 /stand 目录,但 /rescue 包含更多功能,并作为 buildworld/installworld 操作的一部分更新。更多细节可以在 rescue(8) 中找到。
许多位于 /bin 和 /sbin 的可执行文件现在使用动态链接而非静态链接构建。此特性为这些目录中的基本系统工具带来了对可加载 PAM 和 NSS 模块的支持,也减少了根文件系统的存储需求,因为使用了共享库。在 buildworld 中可以通过定义 Makefile 变量 NO_DYNAMICROOT 来禁用此特性。请注意,静态链接的“crunched”可执行文件可在 /rescue 目录中使用,用于系统修复和恢复操作。
2.4 第三方软件
ACPI-CA 代码从 20030228 快照更新为 20030619 快照。
amd 从 6.0.7 更新为 6.0.9。
awk 来自贝尔实验室的版本从 2003 年 3 月 14 日的快照更新为 2003 年 7 月 29 日的快照。
BIND 从 8.3.4 更新为 8.3.7。[已合并]
GCC 从 3.2.2 更新为 2003 年 11 月 6 日的 3.3.3 发布后快照。
注意 以前的 GCC 版本在启用
-march=pentium4优化时会生成错误的代码。此问题据信在此次升级中修复完成,并且早期针对CPUTYPE=p4的解决方法被移除。
GNU Readline 从 4.2 更新为 4.3。
GNU Sort 从 textutils 2.0.21 版本更新为 textutils 2.1 版本。
Heimdal Kerberos 从 0.5.1 更新为 0.6。
ISC DHCP 客户端从 3.0.1rc11 更新为 3.0.1rc12。
lukemftp 从 1.6beta2 更新为来自 NetBSD 的 2003 年 11 月 11 日的快照。
OpenPAM 从 Dianthus 版本更新为 Dogwood 版本。
OpenSSL 从 0.9.7a 更新为 0.9.7c。[已合并]
sendmail 从 8.12.9 更新为 8.12.10。[已合并]
texinfo 从 4.5 更新为 4.6。[已合并]
时区数据库从 tzdata2003a 版本更新为 tzdata2003d 版本。[已合并]
2.5 Ports/软件包集合基础设施
如果定义了 GNU_CONFIGURE,则会将 WRKDIR 中的所有 config.guess 和 config.sub 实例替换为来自 PORTSDIR/Template 的主版本。这使得旧的 Ports(包含这些脚本的旧版本)能够在较新的架构(如 ia64 和 amd64)上构建。
2.6 发布工程与集成
不再为 alpha、amd64 和 ia64 架构构建软盘安装镜像。
GNOME 的支持版本从 2.2.1 更新为 2.4。[已合并]
KDE 的支持版本从 3.1.2 更新为 3.1.4。[已合并]
2.7 文档
为了减少信息的重复(以及随之而来的维护一致性的困难),硬件说明中支持的许多特定设备移至系统手册页。这项工作在本次发布时仍在进行中。
启动了土耳其语(tr_TR.ISO8859-9)翻译项目。
3 从旧版 FreeBSD 升级
强烈 建议已有 FreeBSD 系统的用户阅读《FreeBSD 5.2-RELEASE 早期采用者指南》。此文档通常在发布媒体中以 EARLY.TXT 文件名提供,或者可以在其他包含发行说明的地方找到。它提供了一些关于升级的说明,但更重要的是,它还讨论了升级到 FreeBSD 5.X 与运行 FreeBSD 4.X 的相对优点。
重要
当然,只有在备份了 所有 数据和配置文件之后,才能尝试升级 FreeBSD。
此文件及其他与发布相关的文档可以从 ftp://ftp.FreeBSD.org/ 下载。
关于 FreeBSD 的问题,请在联系 questions@FreeBSD.org 之前阅读 文档。
关于此文档的问题,请发送电子邮件至 doc@FreeBSD.org。
最后更新于