%release; ]>
&os; &release.current; 发行说明 The &os; Project $FreeBSD$ 2000 2001 2002 2003 2004 2005 2006 2007 2008 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; 内核以及系统附带的应用程序所做的重要修改。 对在升级时需要注意的一些问题, 也进行了简略的介绍。 简介 这篇文档包括了 &os; &release.current; 的发行说明。 它描述了最近刚刚加入、 修改或删除了的 &os; 特性的说明。 同时, 它也将给出如何从先前的 &os; 版本完成升级的说明。 这篇文档所介绍的 &release.type; 软件包, 介绍了 &release.branch; 开发分支自 &release.branch; 创建以来的进展。 关于这一分支上预编译的、 二进制版本的 &release.type; 软件包, 可以在 &release.url; 找到。 这份说明所说的 &release.type; 版本, 是在 &release.branch; 开发分支上 &release.prev; 到未来的 &release.next; 上的一点。 这一开发分支上预编译的二进制形式的 &release.type; 安装包, 可以在 &release.url; 找到。 这是一份 &os; &release.current; 的 &release.type; 发布包。 您可以从 &release.url; 或其他镜像那里得到它的副本。 关于这个 (或其他) &release.type; 发布包的更多信息,可以在 &os; 手册 中的 如何获得 &os;附录 中找到。 我们鼓励所有的用户在开始安装 &os; 之前首先参考这一版本所对应的勘误信息。 勘误文档将随时更新,以便为用户提供在发布工程后期或该版本发布之后 新发现的 问题和相关信息。 通常,这包括已知的 bug,安全公告,以及对于文档的修订内容。 最新的 &os; &release.current; 勘误信息可以从 &os; 网站获得。 最新变动 这一节描述了 &os; 自 &release.prev; 以来最明显的新功能和变化。 一般说来, 没有注明 &merged; 的那些新特性是 &release.branch; 所独有的。 发行说明中的绝大多数条目是在说明自从 &release.prev; 以来的安全公告、新的驱动程序或硬件支持、新的命令或是选项、 重要的错误修补,以及基本系统中来自第三方的软件升级。 重要的 ports 和 packages 变动,或关于交付工程的变动也会在这份文档中体现。 显而易见地,发行说明不可能涵盖 &os; 版本之间的每一个微小变动; 这篇文档主要关注的,仍然是安全公告,用户可以察觉的修改, 以及重要的架构改良。 安全公告 对内核的改动 &man.acpi.4; 提供了对 HPET 时钟计数器的基本支持。&merged; 新增了用于将线程与 CPU 绑定, 以及对 CPU 资源进行分组和分配的 &man.cpuset.2; API。 同时还加入了用于管理处理器组的用户环境工具 &man.cpuset.1;。 为内核调试器 &man.ddb.4; 新增了输出捕捉机制。 来自 &man.ddb.4; 的输入和输出内容会自动捕捉到一个内存缓冲区, 以便在随后通过 &man.sysctl.8; 或 textdump 来读取和分析。 新增的 capture 命令可以控制这个功能。 为 &man.ddb.4; 调试器新增了简单的脚本机制支持, 使其能够支持一组经过命名的包含一系列 &man.ddb.4; 命令的脚本。 这些脚本可以在 &man.ddb.4; 中, 或通过新增的 &man.ddb.8; 来进行配置。 更多详情请参见联机手册 &man.ddb.4;。 内核新增了 textdump 格式的主存内容转存能力。 与传统主存内容转存方式不同, textdump 通过一系列机械化的生成/提取调试输出来提供高一级的信息。 这个机制即使在内核没有包含调试符号, 或源代码与内核不完全同步的情况下, 仍然能够提供简明但内容丰富的调试信息。 关于这一机制的进一步详情请参见联机手册 &man.textdump.4;。 删去了对 M:N 线程模型的内核支持。 尽管 KSE (内核调度实体) 项目成功地将线程引入了 FreeBSD, 由 kse 线程库采用的 M:N 线程模型未能发挥其全部潜能。 对于较早的以动态方式联编的使用 KSE 线程模型的应用的向前兼容性, 可以通过 &man.libmap.conf.5; 配置实现。 The &os; Project 非常感谢 &a.julian;、 &a.deischen; 和 &a.davidxu; 在 KSE 支持方面所做的工作。 &os; 内核现在能够通过 kern.features sysctl 树来查询特定的功能是否已联编或动态加载进内核了。 库函数 &man.feature.present.3; 为用户态应用程序提供了检测功能是否存在的简便接口。 &os; 内核支持超大内存页 (superpages) 映射了。 ULE 调度器成为了 GENERIC 内核的默认进程调度器。 引导加载器变动 对引导加载器使用的 BTX 内核进行了修改, 使其在实模式下调用 BIOS 例程。 这一变动使得从 USB 设备引导 &os; 成为了可能。 新增了用于支持从 GPT 标签引导系统的 gptboot 引导加载器。 为 &man.gpt.8;, 工具新增了 boot 命令, 其作用是通过写入引导加载器, 并根据需要创建新的引导分区来让 GPT 磁盘能够引导系统。 硬件支持 新增了用于支持 Omnikey CardMan 4040 PCMCIA 智能卡阅读器的 &man.cmx.4; 驱动。 &man.syscons.4; 驱动程序支持 Colemak 键盘布局了。 从 OpenBSD 引入了用于支持基于 Silicon Laboratories CP2101/CP2102 USB 串口适配器的 &man.uslcom.4; 驱动。 多媒体支持 网络接口支持 将 &man.em.4; 驱动程序拆分成了部分代码共用的两个驱动程序。 &man.em.4; 驱动程序继续支持高至 82575 的网络控制芯片, 以及新的客户机/桌面适配器。 新增的 igb 驱动则支持新的服务器适配器。 为 &man.jme.4; 驱动程序新增了用于支持 PCIe 接口的基于 JMicron JMC250 Gigabit Ethernet 和 JMC260 Fast Ethernet 控制器的网络适配器支持。 新增了用以支持基于 Marvell Libertas 88W8335 的 PCI 网络适配器的 &man.malo.4; 驱动程序。 随 &man.mxge.4; 驱动程序附带的固件版本从 1.4.25 升级到了 1.4.29。 对 &man.sf.4; 驱动程序进行了全面改进, 以提升其性能并增加了对校验和减负 (checksum offloading) 的支持。 此外, 改进后的驱动能够适应各种不同的硬件架构了。 对 &man.re.4; 驱动程序进行了全面改进, 修正了一系列问题。 这一驱动新增了对局域网唤醒 (Wake On LAN, WOL) 功能的支持。 对 &man.vr.4; 驱动程序进行了全面改进, 修正了一系列历史问题。 此外, 改进后的驱动能够适应各种不同的硬件架构了。 对 &man.wpi.4; 驱动程序进行了更新, 修正了一系列可靠性问题。 网络协议 为 &man.bpf.4; 包过滤及捕捉机制新增了免复制 (zero-copy) 操作模式, 这种模式中缓冲区由用户进程租借给内核。 这一特性可以通过将 sysctl 变量 net.bpf.zerocopy_enable 的值设为 1 来启用。 由于缺少对多处理器的支持, 删去了 ISDN4BSD(I4B)、 netatm 以及与之相关的其他子系统。 修正了 TCP 选项对齐时, 采用错误的填充字节的问题。 磁盘和存储 &man.aac.4; 驱动程序支持尺寸超过 2TB 的卷了。 为 &man.ata.4; 驱动程序新增了针对磁盘的 spindown 命令; 如果磁盘在预先配置的一段时间内没有收到任何请求, 则磁盘会减缓转速, 直到收到下一个请求为止。 与此同时, &man.atacontrol.8; 工具新增了用于配置这一功能的 spindown 命令。 &man.hptrr.4; 更新到了来自 Highpoint 的 1.2 版。 文件系统 修正了在 ZFS 上使用 &man.mmap.2; 时的一个问题。 新增了内核模式的 NFS 锁管理器, 改善了 NFS 上锁的性能和行为。 新增的 &man.clear.locks.8; 命令可以用 NFS 客户端的身份来清除其持有的锁。 用户态环境变动 &man.adduser.8; 工具新增了用于指定新用户主目录的 参数。 基于 libarchive 的 BSD-授权 版本的 &man.ar.1; 和 &man.ranlib.1; 替换掉了 GNU Binutils 版本的对应工具。 &man.chflags.1; 新增了用于指定详细输出的 选项, 以及类似于 (例如) &man.chmod.1; 对应的忽略错误语义的 选项。 为了与其他实现兼容, &man.cp.1; 新增了与 等价的 选项。 基于 libarchive 的 BSD-授权 版本的 &man.cpio.1; 替换掉了 GNU cpio。 目前 GNU cpio 仍会作为 gcpio 安装。 &man.env.1; 程序新增了通过从环境中删除来完全取消变量 name 设置而不是简单地将其设为空值的 参数。 新增了 &man.fdopendir.3; 库函数。 &man.find.1; 新增了一系列之前只在 GNU find 中有而在 &os; &man.find.1; 中没有的语句。 &man.jexec.8; 新增了用于以主机名指定特定 jail 的 参数。 &man.kgdb.1; 新增了帮助调试内核模块崩溃转存的 add-kld 命令。 &man.ls.1; 程序新增了用于指定详细资料模式 (long format, ) 输出中日期格式的 参数。 &man.nc.1; 新增了用于禁止 TCP 选项的 选项。 &man.ping6.8; 工具在成功发包但没有得到回应时返回 2 (这和 &man.ping.8; 的行为相同)。 此前它只是返回一个非零值。 新增了用于显示进程详细信息的 &man.procstat.1; 工具。 &man.realpath.1; 新增了用于禁止给出警告信息的 选项; 此外, 它能够接受多个路径作为命令行参数了。 &man.split.1; 新增了用于指定切分块数的 参数。 &man.tar.1; 新增了用于启用 &man.compress.1;-式 压缩/解压缩 的 选项。 &man.tar.1; 工具新增了用于在创建和解包时忽略用户/组名的 选项。 &man.tar.1; 工具新增了用以在解包时产生稀疏文件的 选项。 &man.tar.1; 工具新增了用于根据指定的正则表达式来替换文件名的 参数。 新增了用于返回进程所在会话 leader 组 ID 的库函数 &man.tcgetsid.3;。 这个函数是在 IEEE Std 1003.1-2001 (POSIX) 中定义的。 &man.top.1; 新增了用于显示各个 CPU 使用统计的 选项。 &man.traceroute.8; 新增了用于显示每跳的 自治网域 (AS) 编号的 开关; 而新增的 参数则可以选择特定的 WHOIS 服务器。 &man.traceroute6.8; 新增了与常见的 UDP 探测包不同的、 不采用上层协议的探测包进行探测的 选项。 <filename>/etc/rc.d</filename> 脚本 基本系统中的第三方软件 AMD 从 6.0.10 升级到了 6.1.5。 awk 从 2007 年 5 月 1 日版升级到了 2007 年 10 月 23 日版。 bzip2 从 1.0.4 升级到了 1.0.5。 CVS 从 1.11.17 升级到了 1.11.22 之后于 2008 年 3 月 10 日签出的快照版本。 hostapd 从 0.5.8 升级到了 0.5.10。 IPFilter 从 4.1.23 升级到了 4.1.28。 less 从 v408 升级到了 v416。 ncurses 从 5.6-20061217 升级到了 5.6-20080503。 OpenPAM 从 Figwort 版升级到了 Hydrangea 版。 sendmail 从 8.14.1 升级到了 8.14.3。 时区数据库从 tzdata2007h 版升级到了 tzdata2008b 版。 WPA Supplicant 从 0.5.8 升级到了 0.5.10。 Ports/Packages 套件基础结构 &man.pkg.create.1; 工具新增了 选项。 当指定了这个选项, 并且制作的预编译包已经存在时, 现有的版本不会被覆盖。 这个选项在连续执行带 参数的 &man.pkg.create.1; 时十分有用。 删去了用于对 &os; 预编译包进行签名和验证的 pkg_sign 和 pkg_check 工具。 这些工具只能用于使用 &man.gzip.1; 压缩的预编译包, 而 &man.bzip2.1; 压缩作为标准压缩已经使用很长时间了。 发布工程与系统集成 支持的 GNOME 桌面环境 (x11/gnome2) 版本从 2.20.1 升级到了 2.22。 文档 从先前版本的 &os; 升级 从 &os; 6.2-RELEASE 开始, 系统已经能够通过使用 &man.freebsd-update.8; 来实现 RELEASE 版本之间 (以及不同安全分支的快照版本) 的二进制升级。 二进制升级过程将更新未经修改的 userland 工具, 以及随官方 &os; 发行版发布的、 未作修改的 GENERIC 或 SMP 内核。 使用 &man.freebsd-update.8; 工具的主机, 需要有可用的 Internet 连接。 旧式的二进制升级, 则是通过随 CDROM 发行介质提供的 &man.sysinstall.8; 的 Upgrade 选项来完成的。 这种二进制升级方式, 对于 非-&arch.i386;、 非-&arch.amd64; 的, 以及没有接入 Internet 的系统而言会比较有用。 此外, 也可以使用源代码从较早版本升级的方式 (通过从源代码重新编译 &os; 的基本系统), 其操作方法请参见 /usr/src/UPDATING 很显然,升级 &os; 时,应该首先备份 全部 数据和配置文件。