Index: head/release/doc/zh_CN.GB2312/relnotes/common/new.sgml
===================================================================
--- head/release/doc/zh_CN.GB2312/relnotes/common/new.sgml (revision 145778)
+++ head/release/doc/zh_CN.GB2312/relnotes/common/new.sgml (revision 145779)
@@ -1,1060 +1,1129 @@
&os;/&arch; &release.current; 发行说明
The &os; Project
$FreeBSD$
2000
2001
2002
2003
2004
2005
The &os; Documentation Project
&tm-attrib.freebsd;
&tm-attrib.ibm;
&tm-attrib.ieee;
&tm-attrib.intel;
&tm-attrib.sparc;
&tm-attrib.general;
这份 &os; &release.current; 的发行说明, 概括了 &os;
基本系统自 &release.branch; 创建以来所做的改动。
本文档列举了自前一发行版本以来所有适用的安全公告, 以及对于
&os; 内核以及系统附带的应用程序所做的重要修改。
在升级时所需要注意的一些问题, 也进行了简略的介绍。
简介
这篇文档包括了在 &arch.print; 硬件平台上 &os;
&release.current; 的发行说明。 它描述了最近刚刚加入、修改或删除了的
&os; 特性的说明。 同时,它也将给出如何从先前的 &os; 版本完成升级的说明。
这篇文档所介绍的 &release.type; 软件包,
介绍了 &release.branch; 开发分支自 &release.branch;
创建以来的进展。 关于这一分支上预编译的、 二进制版本的
&release.type; 软件包, 可以在
找到。
]]>
这份说明所说的 &release.type; 版本,
是在 &release.branch; 开发分支上 &release.prev; 到未来的 &release.next;
上的一点。 这一开发分支上预编译的二进制形式的 &release.type;
安装包, 可以在 找到。
]]>
这是一份 &os; &release.current; 的
&release.type; 发布包。 您可以从 或其他镜像那里得到它的副本。
关于这个 (或其他) &release.type; 发布包的更多信息,可以在
&os; 手册
中的 如何获得
&os;
附录 中找到。
]]>
我们鼓励所有的用户在开始安装 &os; 之前首先参考这一版本所对应的勘误信息。
勘误文档将随时更新,以便为用户提供在发布工程后期或该版本发布之后
新发现的
问题和相关信息。
通常,这包括已知的 bug,安全公告,以及对于文档的修订内容。
最新的 &os; &release.current; 勘误信息可以从 &os; 网站获得。
最新变动
这一节描述了
&os; 自 &release.prev; 以来最明显的新功能和变化。
一般说来, 没有注明 &merged; 的那些新特性是 &release.branch; 所独有的。
发行说明中的绝大多数条目是在说明自从
&release.prev.historic;
以来的安全公告、新的驱动程序或硬件支持、新的命令或是选项、
重要的错误修补,以及基本系统中来自第三方的软件升级。
重要的 ports 和 packages 变动,或关于交付工程的变动也会在这份文档中体现。
显而易见地,发行说明不可能涵盖 &os; 版本之间的每一个微小变动;
这篇文档主要关注的,仍然是安全公告,用户可以察觉的修改,
以及重要的架构改良。
安全公告
在 &man.fetch.1; 工具中发现了一处问题,
它可能导致恶意的 HTTP 服务器覆盖客户程序任意部分的内存,
这一问题已经得到修复。 要了解更多信息, 请参见安全公告
FreeBSD-SA-04:16.fetch。
&merged;
在 &man.procfs.5; 和 &man.linprocfs.5;
中发现了一处问题, 它能够允许恶意的本地用户读取部分内核内存,
或通过造成系统 panic 来实施本地拒绝服务攻击,
这一问题已经得到修复。 要了解更多信息, 请参见安全公告
FreeBSD-SA-04:17.procfs。
&merged;
修正了 TELNET 客户端程序中的两处缓冲区溢出问题.
这些问题有可能导致恶意的 TELNET 服务器或主动地网络攻击者,
使 &man.telnet.1; 以执行它的用户的身份执行任意的代码。
要了解更多信息, 请参见安全公告
FreeBSD-SA-05:01.telnet。
&merged;
修正了 &man.sendfile.2; 系统调用中的一处信息泄露问题,
这一问题可能导致内核中的一段随机的部分被传递出去。
要了解更多信息, 请参见安全公告
FreeBSD-SA-05:02.sendfile。
&merged;
修正了在 &os;/amd64 中的一处特权提升问题。
这一问题可能导致没有特权的用户访问某些在没有特权时无法访问的硬件。
要了解更多信息, 请参见安全公告
FreeBSD-SA-05:03.amd64。
&merged;
修正了
SIOCGIFCONF &man.ioctl.2; 的一个信息泄露问题,
这一问题可能导致 12 字节的内核内存被泄露。
要了解更多信息, 请参见安全公告
FreeBSD-SA-05:04.ifconf。
&merged;
+ 修正了 &man.cvs.1; 中的多处程序设计问题, 这些问题可能导致在
+ CVS 服务器上执行任意代码。
+ 要了解更多信息, 请参见安全公告
+ FreeBSD-SA-05:05.cvs。
+ &merged;
+
对于内核的改动
对于 80386 处理器 (也就是
I386_CPU 内核配置选项) 的支持,
已经被删去。 使用这一类型的 CPU 的用户, 应使用 &os;
5.X 或更早的版本。
内核调试器 &man.ddb.4; 现在支持用于显示持有休眠互斥体
(以及当前线程所持有的自旋互斥体) 的情况的
show alllocks 命令了。 &merged;
现在 &man.jail.8; 功能支持一个新的 sysctl
security.jail.chflags_allowed,
用于控制 &man.chflags.1; 在 jail 中的行为。
如果设置为 0 (默认值), jail 中的 root
用户将被认为是非特权用户; 如果设置为 1,
则 jail 中的 root 用户会被视为与未 jail 的 root
用户一样。 &merged;
加载器变量 debug.mpsafevm
默认置为启用了。 &merged;
加入了 &man.memguard.9;, 一种用来帮助检测
悬挂指针操作
情形的内核内存分配器。
要利用这一功能, 就必须明确地通过 options
DEBUG_MEMGUARD 来启用它, 并对内核进行小幅度的修改。
一般而言, 这是为内核开发人员提供的功能。
一系列 ULE 的问题得到了修正。 &merged;
在 VFS 栈中加入了细锁, 这使得它的大部分得以脱离全局锁。
这一特性在 alpha、 amd64, 以及 i386 平台上被默认打开,
并可以通过设置加载器变量 (以及 sysctl 变量)
debug.mpsafevfs 为
0 来禁用它。
一个关于在对处理器间中断 (IPI) 进行处理时的问题得以修正,
这一问题可能导致 SMP 系统在重载时崩溃。 更多细节, 可以在勘误说明
FreeBSD-EN-05:03.ipi
中找到。 &merged;
System V IPC 对象 (消息队列、 信号量和共享内存)
现在提供了强制性访问控制策略,
特别是 &man.mac.biba.4;, &man.mac.mls.4;, &man.mac.stub.4;, 和
&man.mac.test.4; 的支持。
将传统 PCI 桥的内存分配范围,
限制到了 RAM 顶部的 32MB。 许多较早的、 旧的桥硬件,
只允许分配这一范围的内存。 这一修改只被应用于那些没有通过 BIOS
指定内存范围的设备。 它修正了 CardBus 桥 (&man.pccbb.4;)
的 bad Vcc
错误。 &merged;
以 debug
开头的 &man.sysctl.3; MIB,
现在需要使用内核选项 options SYSCTL_DEBUG
才能使用了。 这一选项默认不启用。
在许多驱动中加入了通用的 &man.tty.4; 驱动接口,
这包括
&man.cx.4; ({tty,cua}x),
&man.cy.4; ({tty,cua}c),
&man.digi.4; ({tty,cua}D),
&man.rc.4; ({tty,cua}m),
&man.rp.4; ({tty,cua}R),
&man.sab.4; ({tty,cua}z),
&man.si.4; ({tty,cua}A),
&man.sio.4; ({tty,cua}d),
sx ({tty,cua}G),
&man.uart.4; ({tty,cua}u),
&man.ubser.4; ({tty,cua}y),
&man.ucom.4; ({tty,cua}U), 以及
&man.ucycom.4; ({tty,cua}y)
并进行了必要的重写。 请注意, /etc/remote
和 /etc/ttys 也随之进行了更新。
加入了 &man.vkbd.4; 驱动。 这个驱动提供了一个可以用于实现类似于
&man.pty.4; 之于终端所完成的功能的虚拟 AT 键盘的软件环回机制。
在 i386 和 ia64 平台上,
默认的 HZ 参数 (它控制许多内核计时器)
从默认的 100 提高到了 1000。
在 amd64 上, 这个值从
1024 减少到了 1000,
以减少和其他系统时钟之间的同步效果。
shell 命令的最大长度, 从原先的 128
变味了 PAGE_SIZE。 默认情况下,
这个值应该是 4KB (i386, pc98, amd64, 和 powerpc) 或 8KB (sparc64
和 ia64)。 其结果是, 兼容模块需要重新编译,
以便于内核中的数据结构保持同步。
引导区和 loader 的变化
加入了支持串口控制台的
boot0 版本。 可以通过 &man.boot0cfg.8;
并使用 /boot/boot0sio
将其写入磁盘。
cdboot 绕过了由于 BIOS
问题导致某些系统无法从 USB 光驱启动的问题。
加载器命令 autoboot
现在支持提示符参数了。
增加了一个用以设置 hint.atkbd.0.flags=0x1
的加载器菜单选项。 这一设置使得 USB 键盘能够在没有接 PS/2
键盘时正常使用。
默认禁用了 beastie 引导菜单。
硬件支持
&man.acpi.4; 驱动新增了在挂起时,
将 ACPI 和 PCI 设备关闭或置为低功耗模式的状态,
并在恢复时重新打开。 这一行为可以通过将
debug.acpi.do_powerstate 和
hw.pci.do_powerstate 这两个 sysctl
设置为 0。
加入了用于 IBM 笔记本的 acpi_ibm
驱动。
加入了用于处理 Fujitsu 笔记本上的
&man.acpi.4;-控制按钮 &man.acpi.fujitsu.4; 驱动。
加入了用于支持许多 Sony 笔记本上 driver,
Sony 笔记本控制器的 acpi_sony 驱动。
加入了用于驱动 SBus/EBus &ultrasparc;
型号上的某些辅助 I/O 功能的 &man.auxio.4; 驱动。 &merged;
加入了用于支持频见于 Sun Exx00
服务器上 clock-board 设备的 clkbrd 驱动。
加入了用于灵活控制处理器速度的框架。
这为许多驱动程序通过调整 CPU 的速度来控制功耗提供了手段。
更多细节, 可以在 &man.cpufreq.4; 联机手册中找到。 &merged;
目前支持的驱动包括 ichss (Intel SpeedStep for ICH),
acpi_perf (ACPI CPU 性能状态), 以及 acpi_throttle
(ACPI CPU 减速)。 后两个设备是 &man.acpi.4; 驱动的一部分。
它们可以通过设置设备的 hints, 例如
hint.ichss.0.disabled="1"
来禁用。
+ 加入了用于硬件性能监视计数器的 &man.hwpmc.4;
+ 驱动。 这个驱动抽象了新式 CPU 中提供的硬件性能监视机制,
+ 并提供了在用户进程中利用这些机制的支持。 要了解更多的细节,
+ 请参见 &man.hwpmc.4; 的联机手册、 相关联的函数库,
+ 以及有关的其他工具。
+
删去了对于 OLDCARD 子系统的支持。
现在, NEWCARD 系统被用于支持所有的 PCCARD 设备了。
加入了用于支持 GPIB-PCIIA IEEE-488 卡的 pcii 驱动。 &merged;
&man.atkbd.4; 驱动现在支持 0x8
(第 3 位) 标志, 用以在设备探测时禁止测试键盘口,
以避免在某些型号的机器, 特别是 Compaq R300Z 系列的
amd64 笔记本上造成挂起的问题。
加入了用于支持直接访问以模式0 (简单I/O)
方式运行的 Intel 8255A 可编程设备接口 (PPI)
的 &man.pbio.4; 驱动。
对 &man.psm.4; 进行了改进, 以支持使用
Synaptics Touchpad 的用户。 现在, 它能够更好地识别低速移动,
以及额外的按钮和滚轮。 这些特性, 可以通过
hw.psm.synaptics.*
的 sysctl 变量来调整。
加入了用于支持许多 &ultrasparc; II
和 III 型号上的 MC146818 兼容时钟的 rtc 驱动。 &merged;
&man.uart.4; 驱动,
在 GENERIC 内核中默认启用,
并成为了串口的默认驱动。 ofw_console 和
&man.sab.4; 驱动在
GENERIC 内核中被禁用。 &merged;
&man.uplcom.4; 驱动现在能够处理
CTS 信号了。
改进了 &man.ehci.4; 驱动。
删去了 zs 驱动,
因为 &man.uart.4; 驱动更好一些。
多媒体支持
加入了用于支持 &ultrasparc; 工作站上的
Crystal Semiconductor CS4231 音效控制器的 &man.snd.audiocs.4;
驱动。 &merged;
&man.uaudio.4; 驱动现在增加了一些功能,
其中包括更多输入通道上的音量控制能力,
以及一些设备的录音能力。
网络接口设备支持
更新了 &man.ath.4; 驱动, 将流量控制算法放进了一个单独的模块。
在使用 &man.ath.4; 时, 必须使用 device ath_rate_onoe,
device ath_rate_amrr, 或
device ath_rate_sample 之一。
现在 &man.bge.4; 驱动能够支持 &man.altq.4;
框架了。
加入了用于支持 USB Communication Device Class Ethernet
的 &man.cdce.4; 驱动。 &merged;
&man.cp.4; 驱动现在 MPSAFE 了。 &merged;
&man.ctau.4; 驱动现在 MPSAFE 了。 &merged;
&man.cx.4; 驱动现在 MPSAFE 了。 &merged;
&man.dc.4; 驱动现在支持 &man.altq.4; 框架了。
&man.ed.4; 驱动现在支持 &man.altq.4; 框架了。
&merged;
在 &man.em.4; 驱动程序中, 对于 VLAN 标记 (tagging)
的硬件支持, 由于其和混杂模式之间的一些冲突被默认地禁用。
&merged;
默认地禁用了 &man.fxp.4; 驱动的以太网流控制功能,
以避免系统崩溃或进入内核调试器。 &merged;
由于不再被活跃地维护,
而且 &man.em.4; 驱动能够支持它支持的全部硬件,
删去了 gx(4) 驱动。
&man.hme.4; 驱动现在 MPSAFE 了。 &merged;
+ 加入了 &man.ipw.4; (用于 Intel PRO/Wireless 2100),
+ &man.iwi.4; (用于 Intel PRO/Wireless 2200BG/2225BG/2915ABG),
+ &man.ral.4; (用于 Ralink Technology RT2500),
+ 以及 &man.ural.4; (用于 Ralink Technology RT2500USB)
+ 驱动。
+
&man.ixgb.4; 驱动现在 MPSAFE 了。
现在 &man.ndis.4; 设备驱动 wrapper
在 amd64 系统上能够支持 &windows;/x86-64 的二进制驱动了。
&merged;
加入了用于支持
nVidia nForce MCP Networking Adapter 的 nve 驱动。
现在 &man.re.4; 驱动能够支持 &man.altq.4;
框架了。 &merged;
现在 &man.sf.4; 驱动支持设备混合轮询 (device polling)
和 &man.altq.4; 了。 &merged;
修正了 &man.sk.4; 驱动中的多处程序设计错误。
这些问题主要影响 SMP 系统, 可能导致系统崩溃、 内核缺页、
SSH 连接中断, 或文件传输问题。
更多细节, 可以在勘误公告
FreeBSD-EN-05:02.sk
上找到。
&merged;
现在, &man.sk.4; 驱动支持 &man.altq.4; 了。
同时, 此驱动支持基于 Yukon 的网卡的巨型帧能力了。
&merged;
&man.vge.4; 驱动现在提供了混合轮询的支持
(&man.polling.4;)。
支持 802.11 设备的 &man.wlan.4; 框架,
进行了大规模的改写。 除了架构上的改进之外,
还完成了 802.11g、 WPA、 802.11i、 802.1x、
WME/WMM、 AP-端节能, 以及用于加密模块的插件框架、
验证和访问控制。 清特别注意, WEP 现在需要加载
wlan_wep 模块 (或连入内核)。
&man.xl.4; 驱动现在能够支持
&man.polling.4; 了。
网络协议
当发送方写的数据必须分片时, 关闭了 IPv6 中的 MTU
反馈。 &merged;
实现了共用地址冗余协议 (CARP)。
CARP 来自 OpenBSD, 允许多个主机共享同一个
IP 地址, 从而提供了高可用性和负载均衡。
要了解更多细节, 请参考 &man.carp.4; 联机手册。 &merged;
现在 &man.ipfw.4; IPDIVERT
选项可以用内核模块的方式来加载了。 如果没有加载模块,
则 &man.ipfw.4; 将拒绝安装 divert
规则, 而 &man.natd.8; 则会返回错误信息 protocol not supported
。
&man.ipfw.4; 可以与
debug.mpsafenet=1
(默认情况下是 1),
当使用了 gid, jail,
和/或 uid 规则选项时正常工作了。 &merged;
+ &man.ipfw.4; 和 &man.dummynet.4; 系统能够支持 IPv6 了。
+
&man.ipfw.8; 现在支持通过转发 socket,
以及 TCP 数据长度来区分并标记
&man.altq.4; 包了。
&man.ipfw.8; ipfw fwd 规则现在支持完整的包目的地管理了,
其前提是启用了内核选项 options IPFIRWALL_FORWARD
的基础上打开了
options IPFIREWALL_FORWARD_EXTENDED。
这个内核选项将禁用所有的限制, 以保证本地生成的包,
和发到配置在本地的 IP 地址的包能够正常地发出和转发。
请注意, 必须细心地编写 &man.ipfw.8; 规则,
以确保类似 PMTU 发现这类应用不致发生异常。 &merged;
&man.ipnat.8; 允许在非 TCP/UDP 包上使用重定向规则了。
&merged;
目前正在进行的工作, 在逐步去掉网络协议栈中的全局锁,
并改进锁的策略。
新的 &man.ng.ipfw.4; NetGraph 节点,
提供了 &man.ipfw.4; 和 &man.netgraph.4;
机制之间的简单接口。
新的 &man.ng.netflow.4; NetGraph 节点,
使得采用 &os; 的路由器能够运行 NetFlow version 5 的导出。 &merged;
现在 &man.sppp.4; 驱动程序包含了帧转发 (Frame Relay)
支持。 &merged;
&man.sppp.4; 驱动现在 MPSAFE 了。
+ 实现了一个新的 sysctl net.link.tap.user_open。
+ 它允许基于文件系统权限对
+ &man.tap.4; 设备进行非特权访问。
+
修正了 TCP 的一处问题, 这一问题有时会导致当接收窗口大小为零时,
RST 包被忽略的问题。 &merged;
改进了 &os; TCP 协议栈中对 RST
的处理, 使得这类攻击变得尽可能地困难,
同时最大限度地保障了和其他 TCP 协议栈的兼容性。
算法如下: 对于所有在
ESTABLISHED
状态的连接, 只有当包的顺序号与
last_ack_sent 精确匹配时才将连接复位;
所有不符合的分片都将被直接丢弃。 对于所有其他状态的连接,
则对窗口内的复位请求进行处理。 其它的复位分片则被直接丢弃。
需要说明的是, 这一行为和 RFC 793 标准抵触, 传统的 (但安全性较差)
行为, 可以通过将新增的 sysctl net.inet.tcp.insecure_rst
设置为 1 来还原。 &merged;
在 TCP SACK 实现中的许多错误得到了修正。 &merged;
删去了 RFC 1644 T/TCP 支持。
这是因为其设计基于一个较弱的安全模型,
使得拒绝服务攻击变得容易。 这一 TCP 扩展被最近的一个 Internet
草案认为是有缺陷的。
将 KAME IPv4 IPsec 实现集成到了 &os; 中,
现在支持 TCP-MD5 了。 &merged;
短期使用端口的随机分配导致了在高连接速率时的端口重用问题。
这一功能现在在短期内发生大量连接, 即新端口的创建速率快于每秒
net.inet.ip.portrange.randomcps 时,
被自动禁用
net.inet.ip.portrange.randomtime
秒。 这两个 sysctl 变量的默认值,
分别是 10 和 45。
&merged;
在 IPX/SPX 协议栈的许多数据结构上应用了细化的锁。
尽管目前还不是完全的
MPSAFE, 基本上已经可以安全地在不用全局锁时使用 IPX/SPX
了 (换言之, 完全可以将
debug.mpsafenet sysctl 变量设置为
1)。
+ 现在 Unix domain socket 提供了
+ LOCAL_CREDS 和
+ LOCAL_CONNWAIT。
+ 其中, LOCAL_CREDS 选项提供了一种机制,
+ 使得接收方能够以 &man.recvmsg.2; 控制消息的形式,
+ 收到发送者的进程凭据。
+ 而 LOCAL_CONNWAIT 则将让 &man.connect.2;
+ 函数阻塞, 直到在监听 socket 上执行了 &man.accept.2; 为止。
+ 欲了解进一步的情况, 请参见 &man.unix.4; 联机手册。
磁盘及存储
现在 &man.amr.4; 可以安全地在使用了
&man.pae.4; 的系统上使用了。 &merged;
加入了 &man.arcmsr.4; 驱动。
它用于支持 Areca ARC-11xx 和
ARC-12xx 系列的 SATA RAID
控制器。 &merged;
加入了 SHSEC GEOM 类。 它提供了在多个 GEOM
提供者之间实现秘密分享的能力。 所有提供者必须都存在,
才能够解开保存的秘密信息。 这一特性可以通过 &man.gshsec.8;
工具来控制。 &merged;
加入了用于支持 HighPoint
RocketRAID 182x 系列硬件的 &man.hptmv.4; 驱动。 &merged;
现在 &man.ips.4; 驱动在较新的 ServeRAID 型号上,
能够支持内核崩溃的转储操作了。 &merged;
删去了 &man.matcd.4; 驱动。 &merged;
在 GENERIC 内核中,
默认的 SCSI 引导时探测延时, 从十五秒减少到了五秒。
删去了旧的 vinum(4) 子系统,
新的基于 &man.geom.4; 的版本提供了更好的功能。
+ &man.twa.4; 驱动更新到了来自 3ware 网站的 9.2 版 (用于 &os; 5.2.1)
+
删去了 &man.wd.4; 驱动。
&man.ata.4; 驱动已经能够在
pc98 平台上很好的工作, 因而不再需要旧的 &man.wd.4;
驱动了。
关于新挂接的 cd9660 文件系统的信息 (例如,
存在 RockRidge 扩展) 现在只有在内核以详细 (verbose)
模式启动时才会显示了。 这一修改主要是减少 (一般来说不必要的)
内核日志消息的数量。 &merged;
文件系统
原先在挂接时进行的, 重新计算
脏
(即, 上次停机时没有正常卸下) 的 UFS 和 UFS2
文件系统摘要信息的工作, 现在转由后台
&man.fsck.8; 进行。
这一修改将极大地改善系统崩溃后挂接大文件系统时的速度。
如果希望还原原先的行为, 可以通过将
vfs.ffs.compute_summary_at_mount sysctl
变量设置为非零值来实现。 &merged;
修正了由于 NFS 服务器可能导致的一个内核崩溃。
更多细节, 可以在勘误公告
FreeBSD-EN-05:01.nfs.
中找到。 &merged;
基本系统附带的第三方软件
ACPI-CA 由
20040527 更新到了 20041119。 &merged;
应用程序变动
现在 &man.burncd.8; 工具能够在光盘定型之后执行命令了 (例如
eject)。
+ 实现了针对本平台优化的
+ &man.bcmp.3;, &man.bcopy.3;, &man.bzero.3;, &man.memcmp.3;,
+ &man.memcpy.3;, &man.memmove.3;, &man.memset.3;, &man.strcat.3;
+ and &man.strcpy.3; 版本。
+
现在 &man.ftpd.8; 程序会正确地为目录和文件的状态使用 212
和 213 状态代码了 (过去的版本,
曾经长期使用 211)。
这一行为在 RFC 959 中进行了描述。
&merged;
如果指定了 AF_UNSPEC,
现在 &man.getaddrinfo.3; 函数会在查询 AAAA
记录之前, 首先查询 A
DNS 资源记录。 一些有问题的 DNS 服务器会在 AAAA
记录不存在时返回 NXDOMAIN,
而根据标准, 它应该返回 NOERROR
和一条空记录。 这类服务器会在 IPv4/IPv6 双栈节点上导致查询停止,
因为对于 AAAA 的查询时返回的 NXDOMAIN
会导致服务器停止解析 A 记录的尝试。
另外, 这一行为也被视为一种潜在的拒绝服务攻击
(参见
以了解更多细节)。 请注意, 虽然改变了查询顺序,
返回的结果仍然是
AF_INET6 记录先于
AF_INET 记录。 &merged;
&man.gpt.8; 的 create 命令,
现在支持一个 命令行标志,
以强制创建 GPT, 即使磁盘上原先已经存在了 MBR 记录。
&merged;
+ 现在 &man.getprotoent.3;, &man.getprotobyname.3;, 以及
+ &man.getprotobynumber.3; 函数是线程安全的了。
+
+ 现在 &man.getservent.3;, &man.getservbyname.3;, 以及
+ &man.getservbyport.3; 函数是线程安全的了。
+
gvinum(8) 工具现在支持
checkparity、
rebuildparity, 以及
setstate
这三个子命令了。 &merged;
对 &man.ifconfig.8; 工具进行了重构。 现在它的模块化更加清晰,
并且在处理某些网络接口专有的功能时更为灵活。 对 802.11 支持进行了更新,
以便支持最近对于 802.11 子系统和驱动程序所进行的改进。
对于相当数量的 &man.ipfw.8; 选项的简写形式的支持,
不再推荐使用。 如果使用了这些简写, 则会在 stderr
输出警告, 以及对应的、 正确的全称形式。
磁盘上的 LC_CTYPE 文件格式,
现在已经改为机器无关的格式了。
+ &man.mixer.8; 工具新增了
+ 参数。 它的功能和 一样,
+ 但并不输出混音字段间隔符。
+
修正了 libalias 函数库中的一处问题,
该问题可能导致使用 &man.natd.8; 的
选项时出现 core dump。
libarchive 库 (以及使用它的
&man.tar.1; 命令) 现在能够读取 ISO
镜像文件 (包括可选的 RockRidge 扩展) 和 ZIP 压缩文件
(采用 deflate 和 none
的压缩) 了。 &merged;
libarchive
库现在能够支持处理包含压缩容量超过 4GB 的 ZIP 文件项 (ZIP64
扩展) 和 Unix 扩展了。
加入了用于访问 GPIB 设备 (通过使用 pcii 驱动程序) 的
ibfoo API 的
libgpib 库。 &merged;
增加了在 libpthread、
libthr,
以及 libc_r 的堆栈大小。 在 32-位 的平台上,
主线程的默认堆栈尺寸为 2MB, 而其他线程的默认堆栈尺寸,
则是 1MB。 在
64-位平台上, 默认的堆栈大小相应的是 4MB 和 2MB。
删去了 libxpg4 库,
因为很久以前它的功能就已经被并入了
libc。
所有连接了 libxpg4
的二进制执行文件, 都必须重新编译, 或者使用 &man.libmap.conf.5;。
请注意, 在 &os; 基本系统中没有这样的程序。
&man.lpd.8; 程序现在会进行检查, 以确保在打印来自其他主机的数据文件时,
在开始打印之前已经传送完成。 某些 &man.lpr.1; 实现,
会在发送对应的数据文件之前发送控制文件,
在繁忙的打印服务器上, 这可能会造成问题。 &merged;
为 &man.math.3; 函数库实现了一系列新的函数。
其中包括 &man.ceill.3;、
&man.floorl.3;、 &man.ilogbl.3;、 &man.fma.3; 及其变体,
&man.lrint.3; 及其变体, 以及 &man.lround.3; 及其变体。 &merged;
不再推荐使用 &man.mknod.8; 工具。
设备节点从 &os; 5.0 开始, 由 &man.devfs.5; 设备文件系统自动管理。
加入了用于为
GEOM_UZIP &man.geom.4; 模块提供压缩的文件系统的
&man.mkuzip.8; 工具。 &merged;
现在 &man.moused.8; 服务能够支持 虚拟滚轮
了,
这一模式下, 按住鼠标中键时移动鼠标将被解释为滚轮操作。
这一功能可以通过 标志来启用。 &merged;
为 &man.named.8; 加入了属主为 bind 用户
(用于创建区域的日志文件) 的用于动态域的隔离目录。 要了解进一步的情况,
请参见示范的 &man.named.conf.5; 中动态域的例子。 &merged;
现在 &man.ncal.1; 工具提供了一个 选项,
用以生成当前年份指定月份的日历。 &merged;
现在 &man.newfs.8; 提供了一个
标志, 来禁止在新文件系统上创建 .snap
目录。 这一特性主要是为那些不需要快照支持的文件系统,
如内存或 vnode 文件系统准备的。 &merged;
现在 &man.newfs.8; 会在创建 UFS 或 UFS2 文件系统,
而无法在其上产生快照时给出警告。
这一情况会在很大的文件系统使用很小尺寸的块时发生。 &merged;
&man.newsyslog.8; 工具现在提供了
选项, 用于为日志文件指定根目录,
类似于 BSD make 过程中的 DESTDIR。
这一变化只影响日志文件的路径, 而不会影响配置文件 ()
或存档目录 () 的路径。
现在 &man.newsyslog.8; 工具能够使用
参数, 以禁止对文件的轮转了。
加入了编译用户应用时的 NO_NIS 开关。
如其名称所暗示的, 启用这个
Makefile 变量将使许多程序中不再包含 NIS
支持, 并不再构建 NIS 工具。 &merged;
多年以来, &os; 同时使用了 Makefile
变量
NOFOO 和
NO_FOO。
为了一致性, 所有的变量都改为了
NO_FOO
的形式。 在 /usr/share/mk/bsd.compat.mk
文件中, 提供了这些变量的一份完整列表; 此外,
它也提供了对于旧名字的临时性向下兼容支持。
现在 &man.periodic.8; 安全检查输出, 能够支持显示由
&man.pf.4; 所阻止的包的统计数据了。 &merged;
&man.pgrep.1; 现在提供了 选项,
用于匹配系统进程 (内核线程)。
&man.pgrep.1; 和 &man.pkill.1; 现在支持了一个新的
选项, 允许在一个包含 PID
的文件所指定的范围内进行匹配。
&man.pgrep.1; 和 &man.pkill.1; 现在支持
选项, 在匹配进程时忽略大小写。
&man.pgrep.1; 和 &man.pkill.1; 现在支持
选项, 允许按 &man.jail.2; ID
来进行匹配。
&man.pgrep.1; 和 &man.pkill.1; 现在支持
选项, 来匹配所有进程中最老的
(最新近启动的) 进程。
加入了用于管理电源功耗的 &man.powerd.8; 程序。
&man.ppp.8; 程序实现了
参数, 这使得分别地启用 LCP ECHO 和 LQR
报告成为可能。 较早版本的
&man.ppp.8; 会在协商失败时返回到 LCP ECHO 模式。
现在需要指定 enable
echo 来获得这一行为。 &merged;
在 &man.ppp.8 程序中加入了用于支持 RFC 2865
之前的 RADIUS 服务器的 和
选项。
在 &man.pppd.8; 程序中的两个问题得以修正。
这些错误可能会导致不正确的 CBCP 响应,
而违反了 微软 PPP 回呼控制协议的 3.2 节。 &merged;
现在 &man.ps.1; 的
选项能够支持 jid 关键字了。
它用于显示每一个进程的 &man.jail.2; ID。
现在 &man.pstat.8; 提供了 选项,
用以在显示交换区尺寸时显示 SI 后缀, 例如 K、 M, 和 G。
在 /rescue 中的 &man.rescue.8; 工具,
现在使用 &man.bsdtar.1; 代替了 GNU tar。
&man.restore.8; 工具又能够处理
- &os; 版本 1 的转储磁带了。
+ &os; 版本 1 的转储磁带了。 &merged;
修正了一个导致 &man.rexecd.8; 工具总是以
参数运行的问题。 &merged;
现在 &man.rm.1; 工具提供了一个
选项。 如果选择递归地删除目录,
或者在命令行上指定一次删除超过 3 个文件,
这个选项会提供一次确认的机会。 &merged;
现在 &man.rm.1; 会在使用 和
递归地删除非空目录时, 屏蔽掉诊断信息。 这一行为是单一 UNIX
标准第 3 版 (SUSv3) 所要求的。
加入了用于检查字符串是否是当前 locale 的编码的
&man.rpmatch.3; 库函数。
+ 下列 ISO/IEC 9899:1999 标准函数得以实现: roundl()、
+ lroundl()、 llroundl()、
+ truncl(), 以及 floorl()。
+
&man.rtld.1; 动态连接器现在支持通过
LD_LIBMAP 环境变量来指定库映射关系了。
这一选项能够覆盖 &man.libmap.conf.5; 的设置。 &merged;
删去了非标准的多字节和宽字符支持 rune(3) 接口。
&man.strftime.3; 现在对某些 GNU 扩展,
例如 - (不填充),
_ (使用空格填充),
以及 0 (使用零来填充),
提供了支持。 &merged;
&man.syslog.3; 函数现在是线程安全的了。 &merged;
&man.syslogd.8; 工具现在会打开一个额外的域 socket
(默认为 /var/run/logpriv),
其权限是 0600, 作为和特权程序的接口。
者避免了发生本地的拒绝服务攻击时,
特权程序由于域 socket 的缓冲区耗尽而死锁。 &merged;
+ &man.syslogd.8; 新增了 选项,
+ 用以改变特权 socket 的路径名。 如果您不希望服务接受来自本地 socket
+ 的消息 (默认使用的是 /var/run/log 和
+ /var/run/logpriv) 时, 这个选项就很有用了。
+ &merged;
+
&man.syslogd.8; 工具现在允许在主机名标识符中使用
: 和 %
- 这两个字符了。 这些字符被 IPv6 地址和 scope ID 使用。
+ 这两个字符了。 这些字符被 IPv6 地址和 scope ID 使用。 &merged;
现在 &man.systat.1; 的显示也包括了
IPv6 的数据。 &merged;
&man.tail.1; 的
选项能够支持同时查看多个文件了。 &merged;
&man.telnet.1; 和 &man.telnetd.8; 程序,
现在支持通过 来指定数字化的 TOS
字节了。
在为 &man.telnet.1; 指定端口号时使用 +
字符, 现在可以关闭选项协商, 并允许发出置了高位的字符了。
这一特性能够帮助利用 &man.telnet.1; 作为协议测试工具来使用。
增加了用于关闭选定的 TCp 连接的 &man.tcpdrop.8; 命令。
它来自 OpenBSD. &merged;
&man.whois.1; 现在支持 标志,
用以查询 whois.krnic.net
(韩国国家 Internet 开发局), 它提供了在韩国境内的 IP
地址分配的详细资料。 &merged;
修改了 &man.xargs.1; 命令的 选项,
以顺应 IEEE Std 1003.1-2004。
这一标准要求创建的参数不能超过 255 字节。
修正了一个导致类似 &man.hosts.5;, &man.services.5;
等配置文件在结尾处不是一个新的换行符时被忽略的问题。 &merged;
/etc/rc.d 脚本
+ 加入了用于启动 &man.bsnmpd.1; 的启动脚本,
+ rc.d/bsnmpd。
+
&man.rc.conf.5; 现在支持在引导时修改网络接口的名字了。
&merged; 例如:
ifconfig_fxp0_name="net0"
ifconfig_net0="inet 10.0.0.1/16"
如果将设备名作为脚本的第二个参数,
rc.d/moused 脚本现在会
start/stop/check 某一特定的设备:
&prompt.root; /etc/rc.d/moused start ums0
要在不同的鼠标上使用不同的 &man.rc.conf.5; 开关,
只需把它们作为开关的一部分。 例如, 对于 /dev/ums0
可以使用:
moused_ums0_enable=yes
moused_ums0_flags="-z 4"
moused_ums0_port="/dev/ums0"
&man.rc.conf.5; 现在支持 tmpmfs_flags
和 varmfs_flags 两个变量了。 这些变量,
可以用来向 &man.mdmfs.8; 工具提供额外的选项, 从而更好地定制
&man.md.4; 文件系统的创建过程, 包括是否打开 softupdates,
指定文件系统的默认属主, 等等。 &merged;
基本系统包含的第三方软件
BIND 从
9.3.0 升级到了 9.3.1。 &merged;
FILE 从 4.10
升级到了 4.12。
GNU readline 从
4.3 升级到了 5.0。
Heimdal 从
0.6.1 升级到了 0.6.3。 &merged;
lukemftp 从来自 OpenBSD 源代码在
2004 年 4 月 26 日的快照, 升级到了 2005 年 2 月 19 日的快照。
引入了来自 OpenBSD 的 2005 年 2 月 4 日快照的
netcat。 更多信息,
可以在 &man.nc.1; 联机手册中找到。 &merged;
OpenPAM 从
Eelgrass 版升级到了 Feterita 版。
OpenSSH 从 3.8p1
升级到了 3.9p1。
OpenSSL 从
0.9.7d 升级到了 0.9.7e。 &merged;
sendmail 从
8.13.1 升级到了 version 8.13.3。 &merged;
时区数据库从
tzdata2004e 版升级到了
tzdata2004g 版。 &merged;
Ports/Packages Collection 基础结构
&man.pkg.version.1; 工具提供了一个新的
选项, 来屏蔽掉 port
版本比较算符 <、
= 和 > 的输出。
从 CVS 库中删去了用于保存 Ports Collection 中所有项的
ports/INDEX*。 &merged;
这些文件过去并不经常性地重新生成, 因此可能会过时和不再准确。
需要使用 INDEX 文件的用户 (例如用于 &man.portupgrade.1;)
可以使用两种方法来获取一份副本:
使用 make index 在
ports/ tree 的顶部构建一份当前 ports
tree 的索引。
在 ports/ tree 顶部执行
make fetchindex 来从网上下载。
这个索引文件 (通常) 在一天之内是准确的。
发行版建造工程和功能集成
在先前的 &os; 版本中, disc1
CD-ROM (或 ISO 镜像文件) 是一张包含基本系统、 ports tree
和常用 package 的可以引导的光盘。
而 disc2 CD-ROM (或 ISO 镜像文件)
则是可以引导的 fix it
盘, 它提供了现场 (live)
文件系统, 用于进行紧急修复操作。 这一格局发生了变化。
对于除了 ia64 以外的所有平台, 现在
disc1 包含了基本系统的安装包文件、
ports tree, 以及现场文件系统, 使得它适合于初始安装,
以及修复工作。 (在 ia64 上, 由于现场文件系统的尺寸太大,
以至于不得不将其放到另一张盘上。)
第三方 package 都在另一张盘上; 特别地,
在 disc2 上提供了常用的第三方软件包,
例如桌面环境等。 来自 &os; Documentation Project 的文档, 也都在
disc2 上。 &merged;
支持的
GNOME 桌面环境的版本, 由 2.6.2
升级到了 2.10。 更多关于在 &os; 上运行 GNOME
的详细资料, 可以在
the FreeBSD GNOME Project
Web 页面上找到。 &merged;
使用较早版本的
GNOME 桌面
(x11/gnome2)
的用户在升级时需要特别小心。 简单地使用 &man.portupgrade.1;
(sysutils/portupgrade)
配合 &os; Ports Collection 进行升级可能会造成严重的问题。
GNOME 桌面的用户, 应仔细阅读
给出的说明, 并使用
gnome_upgrade.sh
脚本来正确地升级到
GNOME 2.10。
支持的 KDE
桌面环境的版本, 从 3.3.0 升级到了
3.4.0。 更多关于在 &os; 上运行
KDE 的信息, 可以在
FreeBSD 上的 KDE Web
页面上找到。 &merged;
使用较早版本的
KDE 的用户,
应使用
FreeBSD 上的 KDE Web
页面或 ports/UPDATING
中给出的方法升级。
支持的 Xorg
从 6.7.0 升级到了 6.8.2。 &merged;
文档
+
+ 新增了 &man.sched.4bsd.4; 和 &man.sched.ule.4; 联机手册。
+ 它们介绍了内核选项 SCHED_4BSD 和 SCHED_ULE 以及他们各自适用的 sysctl。
+
+ 新增了 &man.ataraid.4; 联机手册。 它介绍了 &man.ata.4; 软件
+ RAID 驱动。
对于基本系统的联机手册中的内容和表达方式进行了大量的整理。
交叉引用更加准确和一致, 标准小节的标题贯穿始终,
而使用的符号也进行了清理。
以下联机手册, 由于是派生于 RFC, 并有可能触犯了 IETF
的版权, 被完全替换:
&man.gai.strerror.3;,
&man.getaddrinfo.3;,
&man.getnameinfo.3;,
&man.inet6.opt.init.3;,
&man.inet6.option.space.3;,
&man.inet6.rth.space.3;,
&man.inet6.rthdr.space.3;,
&man.icmp6.4;, 和
&man.ip6.4;。 &merged;
从先前版本的 &os; 升级
通过源代码升级到 &os; &release.current;,
则应使用 &os; 5.3-RELEASE 或更高版本。 使用旧版的系统的用户,
如果想要升级到 &release.current;, 则需要首先升级到 &os; 5.3
或更新的版本, 然后再升级到 &os; &release.current;。
很显然,升级 &os; 时,应该首先备份
所有 数据和配置文件。