FreeBSD 4.6 RELEASE i386 发行公告(2002 年 6 月 15 日)
FreeBSD 项目
版权 © 2000, 2001, 2002 FreeBSD 文档项目版权所有
$FreeBSD: src/release/doc/en_US.ISO8859-1/relnotes/common/new.sgml,v 1.22.2.249 2002/06/02 16:35:29 bmah Exp $
FreeBSD 4.6-RELEASE 的发行说明包含了自 4.5-RELEASE 以来在 FreeBSD 基本系统中所做的变更的总结。包括内核和用户空间的变更,以及自上次发布以来发布的与基本系统相关的安全通告。还简要介绍了升级的一些注意事项。
1 引言
本文档包含了 FreeBSD 4.6-RELEASE 在 IA-32 硬件平台上的发行说明。它介绍了自 4.5-RELEASE 以来 FreeBSD 新增(或变更)的功能,并提供了一些关于从之前版本升级的说明。
此版本的 FreeBSD 4.6-RELEASE 是个 RELEASE 版本。可以在 ftp://ftp.FreeBSD.org/pub/FreeBSD/releases 或其镜像站点找到。关于如何获取该版本(或其他版本)的 FreeBSD 发行版的更多信息,可以参考 FreeBSD 手册 中的 获取 FreeBSD 附录。
2 新特性
本节介绍了自 4.5-RELEASE 以来,FreeBSD 中最显著的新增或变更功能。典型的发行说明项目包括新驱动程序或硬件支持、新命令或选项、重大 bug 修复或第三方软件升级。自 4.5-RELEASE 以来发布的基本系统安全通告也列出了。
2.1 内核变更
puc(4)(PCI “通用”通信)驱动已添加,用于帮助将基于 PCI 的串口连接到驱动 sio(4)。
现在可以通过 loader 可调参数 dumpdev
设置内核转储设备。因此,现在可以在内核初始化的后期阶段(系统进入单用户模式之前)获取崩溃转储。
snp(4) 设备不再是静态的,现在可以作为模块编译。
已新增驱动 spic(4) ,用于提供对某些 Sony 笔记本上 Jog Dial 设备的访问。已增加对该设备的 moused(8) 支持。
已新增驱动程序 viapm(4),支持 VIA SMBus 电源管理控制器。
2.1.1 处理器/主板支持
新增内核选项 CPU_ATHLON_SSE_HACK
,该选项尝试在较新的 Athlon CPU 上启用 SSE 功能位(如果 BIOS 忘记启用该功能)。
在某些系统中,BIOS 没有激活 PCI 设备的 I/O 端口和内存,从而使它们无法使用。内核选项 PCI_ENABLE_IO_MODES
可强制 FreeBSD 启用这些设备,以便它们可以被使用。
2.1.2 启动加载程序
boot2 现在支持选项 -n
,以禁止通过按键中断启动过程。
2.1.3 网络接口支持
驱动 an(4) 现已支持 Cisco LEAP 和“Home”WEP 密钥。Linux Aironet 工具现在在模拟下得到支持。
已新增对基于 ARCNET 令牌的网络的通用支持。
新增了 cm 驱动程序,以支持 SMC COM90cx6 ARCNET 网络适配器。
驱动 dc(4) 现已支持 VLAN。
对 Intel Gigabit Ethernet 卡的支持,现在由驱动 em(4) 提供,而不再是驱动 wx(4) 。后者自 FreeBSD 4.5-RELEASE 起已弃用。
已新增 my 驱动程序,支持 Myson Fast Ethernet 和 Gigabit Ethernet 适配器。
wi(4) 驱动现已支持 Prism II 和 Prism 2.5 基础的网卡。104/128 位 WEP 现已在 Prism 卡上工作。
wi(4) 驱动现支持将 FreeBSD 主机用作无线接入点。此功能可通过 ifconfig(8) 的 mediaopt hostap 选项启用。此功能要求使用基于 Prism II 芯片组的无线适配器。
wi(4) 驱动现已支持 bsd-airtools。
xe 驱动现可以作为模块构建。
部分网络驱动程序现在实现了半轮询模式,这使得系统在面对攻击和过载时更加稳健。要启用轮询,需要在内核配置文件中新增以下选项:
随后,sysctl 变量 kern.polling.enable
将启用轮询模式;sysctl kern.polling.user_frac
用于指示保留给用户空间的 CPU 时间百分比。最初支持轮询的设备有 dc(4)、fxp(4)、rl(4) 和 sis(4)。更多详细信息可以参考 polling(4) 手册页面。
2.1.4 网络协议
bridge(4) 现已更好地支持多个完全独立的桥接集群,在动态附加和分离的情况下更为稳定。也完全支持 VLAN。
修复了一个 IPsec 处理 IPv4 的 bug,该 bug 会导致入站 SPD 检查被忽略。
新增了 ng_eiface netgraph
模块,它表现为一个以太网接口,但将以太网帧传递到 Netgraph 钩子。
新增了 ng_etf(4) netgraph 节点,允许根据以太网类型过滤以太网类型数据包,传递到不同的钩子。
tcp(4) 同步缓存实现存在一个 bug,可能导致内核崩溃;该问题已经修复。
TCP 实现现在会正确忽略发送到 IP 层广播地址的数据包。
2.1.5 磁盘和存储
ahc(4) 驱动已与 FreeBSD -CURRENT 版本同步(截至 2002 年 4 月 29 日)。
ata(4) 驱动已与 FreeBSD -CURRENT 版本同步(截至 2002 年 3 月 18 日)。
重要:
一些用户在测试中遇到了与 ATA 标记队列相关的问题。典型症状是在启动时发生读取超时,导致无法挂载根文件系统。这些问题仅出现在连接到主板 ATA 控制器的支持标记队列的硬盘上。由于此功能仅由某些 ATA 硬盘支持,并且必须通过在
/boot/loader.conf
中设置hw.ata.tags="1"
来显式启用,因此大多数用户不会遇到此问题。
ata(4) 驱动现已支持在 atacontrol(8) 控制下创建、删除、查询和重建 ATA RAID。
2.1.6 文件系统
修复了软更新中的一个 bug,该 bug 会导致在执行重度文件系统活动后(例如安装新内核或其他软件)立即关闭系统时,偶尔发生文件系统损坏。
2.1.7 PCCARD 支持
2.1.8 多媒体支持
已新增支持 D-Link DSB-R100 USB 广播的 ufm 驱动。
via82c686 声卡驱动现在支持 VIA VT8233。
ich 声卡驱动现支持 SiS 7012 芯片组。
驱动 pcm(4) 已与 FreeBSD -CURRENT 版本同步(截至 2002年4月22日)。
2.1.9 第三方软件
2.1.9.1 IPFilter
IPFilter 已更新至 3.4.27。
2.1.9.2 isdn4bsd
已新增 ifpi2(4) 驱动,支持 AVM Fritz!Card PCI 版本 2 控制器。
2.2 安全公告
OpenSSH 的复用代码中修复了一个“越界”错误。此漏洞可能允许已认证的远程用户通过 sshd(8) 执行任意代码并获得超级用户权限,或者允许恶意 SSH 服务器在客户端系统上以客户端用户权限执行任意代码。(详见安全公告 FreeBSD-SA-02:13。)
zlib 中的一个编程错误可能导致多次释放内存。FreeBSD 使用的 malloc(3)/ free(3) 函数不容易受到此错误的影响,但接收到精心构造的无效压缩数据块的应用程序可能会出现功能异常或崩溃。此 zlib 错误已被修复。有关解决方法,请参见安全公告 FreeBSD-SA-02:18。
修复了 TCP SYN 缓存(“syncache”)和 SYN cookie(“syncookie”)实现中的错误,这些错误可能导致合法的 TCP/IP 流量崩溃机器。有关解决方法和补丁,请参见安全公告 FreeBSD-SA-02:20。
修复了一个路由表内存泄漏漏洞,该漏洞可能允许远程攻击者耗尽目标机器的内存。解决方法和补丁请参见安全公告 FreeBSD-SA-02:21。
修复了一个与内存映射 I/O 相关的 bug,该 bug 可能导致系统崩溃。有关解决方案的详细信息,请参见安全公告 FreeBSD-SA-02:22。
修复了一个安全漏洞,允许 SUID 程序通过操控其标准 I/O 文件描述符读取或写入不当文件。有关解决方法的信息,请参见安全公告 FreeBSD-SA-02:23。
由于 k5su(8) 未要求调用用户为 wheel 组成员,可能会允许一些意外的行为发生(这是 su(1) 所要求的)。为了避免这种情况,k5su(8) 默认安装时不设置 SUID(有效地禁用了该功能)。有关更多信息,请参见安全公告 FreeBSD-SA-02:24。
在 bzip2(1) 工具中发现多个漏洞,这些漏洞可能导致文件在没有警告的情况下被覆盖,或允许本地用户意外访问文件。这些问题通过新版本的 bzip2 修复。更多信息,请参见安全公告 FreeBSD-SA-02:25。
修复了 TCP SYN 缓存(“syncache”)实现中的一个 bug,该 bug 可能导致远程攻击者在使用接收过滤器(见 accept_filter(9))时拒绝访问服务。此 bug 已被修复;有关更多信息,请参见安全公告 FreeBSD-SA-02:26。
由于 rc(8) 中使用的 shell 通配符存在 bug,用户可能会在 /tmp/.X11-unix
不存在且系统重启时,删除任意文件的内容。该 bug 已被修复(见安全公告 FreeBSD-SA-02:27)。
2.3 用户空间变更
atacontrol(8) 已新增,用于控制 ata(4) 驱动的各个方面。
在 ATAPI CDROM 驱动器上,cdcontrol(1) 现在支持设置最大速度的命令。
ctags(1) 不再在源文件使用 //
(C++风格)注释时创建损坏的标签文件。
dump(8) 现在在其进程标题中提供进度信息,便于监控自动备份。
/etc/rc.firewall
和 /etc/rc.firewall6
在规则文件位于变量 firewall_type
中或防火墙类型不存在的情况下,将不再新增其硬编码规则。(此变更的动机是避免基于对站点防火墙策略的假设进行操作。)此外,现有的防火墙类型现在按文档中描述的方式工作,详见 rc.firewall(8)。
/etc/security 的功能已迁移到 periodic(8) 框架下的一组脚本中,以便于本地自定义和维护。这些脚本现在位于 /etc/periodic/security/
。
ifconfig(8) 的以太网地址族已变更为更通用的链路族(为了向后兼容,仍然接受 ether
)。
fsdb(8) 现在支持 blocks
命令,用于列出由特定 inode 分配的块。
ispppcontrol(8) 已删除,其功能已并入 spppcontrol(8)。
k5su(8) 默认不再安装为 SUID root。需要此功能的用户可以手动变更 k5su(8) 可执行文件的权限,或在源升级前将 ENABLE_SUID_K5SU=yes
新增到 /etc/make.conf
。
ldd(1) 现在除了可执行文件外,还可以用于共享库。
last(1) 现在支持 -y
参数,输出会包含会话开始时间的年份。
libstand 现在支持加载跨多个物理介质拆分的大型内核和模块。
libusb 已根据 NetBSD 的命名约定更名为 libusbhid。
lpd(8) 现在将 -s
参数识别为 -p
的首选同义词(这些参数会导致 lpd(8) 不为网络打印作业打开套接字)。
lpd(8) 现在实现了新的 rc 选项 printcap
。当在远程主机的打印队列中指定时,布尔选项会导致 lpd(8) 为用户通过 lpr -#n
请求的每个副本重新发送数据文件。
ls(1) 现在接受 -h
参数,当与 -l
参数一起使用时,会将文件大小打印为带单位后缀的格式,从而使打印的数字少于四位。
m4(1) 现在接受 -s
参数,导致它为 cpp(1) 发出 #line 指令。
mergemaster(8) 现在支持两个新参数。-p
参数启用“pre-buildworld”模式,用于比较已知对构建世界和安装世界系统更新步骤至关重要的文件。-C 参数在成功运行 mergemaster(8) 后,用于比较 /etc/rc.conf
中的选项与 /etc/defaults/rc.conf
中的默认选项。
ngctl(8) 现在支持 write 命令,将数据包发送到指定的钩子。
patch(1) 现在接受 -i
命令行参数,从文件中读取补丁,而不是从标准输入读取。
已新增模块 pam_ssh(8) ,允许使用 SSH 密码短语和密钥对进行身份验证。该模块还通过调用 ssh-agent(1) 来处理会话管理。
pr(1) 现在支持 -f
和 -p
参数,用于暂停输出到终端。
ps(1) 的 -W
选项(用于从指定的交换设备提取信息)已经很久没有用过,现在已被删除。
reboot(8) 现在接受 -k
参数,指定下一个启动的内核。
sshd(8) 不再为未启用 S/Key 的用户发出虚假的 S/Key 挑战。之前的行为在使用一些较新的 SSH 客户端连接到 FreeBSD 系统时,创建了令人困惑的、无用的一次性密码提示。
sysinstall(8) 现在支持从多卷安装的正确卷(例如多 CD 发行版)中检索包。
usbhidctl(1) 工具已新增,用于操作 USB 人机接口设备。
uuencode(1) 和 uudecode(1) 现在接受 -o 选项来设置输出文件。uuencode(1) 现在可以在给定 -m
参数时执行 base64 编码,而 uudecode(1) 现在可以自动解码 base64 文件。
watch(8) 现在接受 -f
选项来指定 snp(4) 设备。
以 *.EUC
形式命名的语言环境已更名为 *.euc??
形式。例如,ja_JP.EUC
已变更为 ja_JP.eucJP
。此变更提高了与 FreeBSD CURRENT、X11R6 以及其他多个 UNIX 版本的语言环境名称兼容性。
语言环境支持已与 FreeBSD -CURRENT 代码同步。这一变化带来了对 LC_NUMERIC
、LC_MONETARY
和 LC_MESSAGES
类别的支持,以及 strftime(3) 的改进、修订后的语言环境定义,以及对许多基本系统程序本地化的改进。
2.3.1 Contributed Software
BIND 已更新至 8.3.2-T1B。
bzip2 已更新至 1.0.2。
Heimdal Kerberos 已更新至 0.4e。
ISC DHCP 客户端已更新至 3.0.1RC8。
texinfo 已更新至 4.1。
时区数据库已更新至 tzdata2002c 版本。
2.3.1.1 Sendmail
sendmail 已更新至 8.12.3。sendmail(8) 不再作为 set-user-ID root 二进制文件安装(现在是 set-group-ID smmsp)。更多信息请参阅 /usr/src/contrib/sendmail/RELEASE_NOTES
和 /etc/mail/README
。
在此 sendmail 升级中,多个 sendmail 守护进程(一些用于处理外发邮件)由 rc(8) 启动,即使变量 sendmail_enable
被设置为 NO
。要完全禁用 sendmail,必须将 sendmail_enable
设置为 NONE
。或者,对于使用其他 MTA 的系统,可以使用变量 mta_start_script
指向不同的启动脚本(更多细节请参考 rc.sendmail(8))。
通过 /etc/mail/Makefile
构建的 sendmail 别名和映射数据库的权限现在默认为模式 0640
,以防止文件锁定引发的本地拒绝服务攻击。可以通过设置新的 make.conf
选项 SENDMAIL_MAP_PERMS
来变更此权限。
sendmail 统计文件 /var/log/sendmail.st
的权限已从模式 0644
变更为模式 0640
,以防止文件锁定引发的本地拒绝服务攻击。
2.3.2 Ports/软件包
Ports 基础设施现在使用 XFree86 4.2.0 作为默认的 X Window System 版本,用于满足依赖关系。若要恢复使用 XFree86 3.3.6,可以在 /etc/make.conf
中新增以下行:
2.4 发布工程与集成
XFree86 4.2.0 现在是 sysinstall(8) 支持的默认 X Window 系统版本。它作为一组标准二进制包安装,因此可以使用常用的包管理工具,如 pkg_info(1) 来查看/操作其组件。
3 从旧版 FreeBSD 升级
如果你正在从先前版本的 FreeBSD 升级,通常有三种选择:
使用 sysinstall(8) 的二进制升级方法。这是最快的方法,尽管它假设你的 FreeBSD 安装没有使用任何特殊的编译选项。
完全重新安装 FreeBSD。从技术上讲,这不是一种升级方法,而且通常比二进制升级不方便,因为它需要你手动备份和恢复
/etc
目录的内容。然而,如果你想(或需要)变更磁盘的分区,这可能会有用。从
/usr/src
处的源代码升级。这种方式更灵活,但需要更多的磁盘空间、时间以及更多的技术专长。从非常旧版本的 FreeBSD 升级可能会遇到问题;在这种情况下,通常进行二进制升级或完全重新安装会更有效。
在开始升级之前,请务必阅读 INSTALL.TXT
文件以了解更多信息。如果你是从源代码升级,请务必阅读 /usr/src/UPDATING
文件。
最后,如果你希望使用各种方式跟踪 FreeBSD 的 -STABLE 或 -CURRENT 分支,请务必查阅 `-CURRENT vs. -STABLE' 章节,在 FreeBSD 手册 中。
重要提示:
升级 FreeBSD 应该在备份 所有 数据和配置文件后进行。
该文件以及其他与版本相关的文档可以从 ftp://ftp.FreeBSD.org/pub/FreeBSD/releases 下载。
如有关于 FreeBSD 的问题,请在联系 questions@FreeBSD.org 之前先阅读 文档。
如有关于本文档的问题,请发送邮件至 doc@FreeBSD.org。
最后更新于