FreeBSD 10.0-RELEASE 发行说明(2014 年 1 月 20 日)

原文链接:FreeBSD 10.0-RELEASE Release Notesarrow-up-right

摘要

FreeBSD 10.0-RELEASE 的发行说明总结了 10.0-STABLE 开发分支中对 FreeBSD 基本系统的更改。本文档列出了自上次发布以来发布的安全公告,以及对 FreeBSD 内核和用户空间的重大更改。同时,还简要介绍了升级相关的注意事项。

介绍

本文档为 FreeBSD 10.0-RELEASE 的发行说明,介绍了最近添加、更改或删除的功能,并提供了从先前版本的 FreeBSD 升级的一些注意事项。

最新的发行说明可在线查阅:《FreeBSD 10.0-RELEASE 发行说明》arrow-up-right

FreeBSD 10.0-RELEASE 作为正式发行版,可通过 http://www.FreeBSD.org/releases/arrow-up-right 或其镜像下载。有关获取该版本(或其他版本)发行版的更多信息,请参阅 《FreeBSD 手册》arrow-up-right 中的 《获取 FreeBSD》附录arrow-up-right

建议所有用户在安装 FreeBSD 前,查阅发行勘误表。勘误表包含发行周期后期或发行后发现的“最新动态”信息,通常包括已知问题、安全公告以及文档修订。最新的 FreeBSD 10.0-RELEASE 勘误表可在 FreeBSD 网站上获取。

新特性

本节介绍了自 9.2-RELEASE 以来 FreeBSD 中新增或更改的最显著的用户可见功能。

通常,发行说明包括 9.2-RELEASE 之后发布的安全公告、新的驱动程序或硬件支持、新增的命令或选项、重大错误修复或更新的第三方软件。此外,还可能列出主要 Port/软件包的更改或发布工程实践的更新。显然,发行说明无法涉及各版本间 FreeBSD 所有的更改;本文档主要关注安全公告、用户可见更改以及主要架构改进。

安全公告

以下安全公告中介绍的问题已修复。有关详细信息,请查阅 FreeBSD 安全信息arrow-up-right 中的具体公告。

公告编号
日期
主题

2013 年 11 月 19 日

OpenSSH AES-GCM 内存损坏漏洞

2014 年 1 月 14 日

bsnmpd 远程拒绝服务漏洞

2014 年 1 月 14 日

ntpd 分布式反射拒绝服务漏洞

2014 年 1 月 14 日

OpenSSL 多个漏洞

2014 年 1 月 14 日

BIND 远程拒绝服务漏洞

内核更改

已在内核中默认启用 Capsicum 功能,支持通过“能力模式”对多个程序进行沙箱化。

未映射的 VMIO 缓冲区的使用消除了在缓冲区创建和重用时执行 TLB 清除的需要,大大减少了大规模 SMP 机器上的清除中断 (IPI) 数量,并在 I/O 密集型工作负载下减少了系统时间高达 25-30%。(r248508)arrow-up-right

ddb(4)arrow-up-right 内核调试器现支持输出捕获功能。ddb(4)arrow-up-right 的输入和输出可以捕获到内存缓冲区中,供稍后通过 sysctl(8)arrow-up-right 或文本转储进行检查。新功能由命令 capture 控制。

ddb(4)arrow-up-right 调试器还新增了简单的脚本功能,支持包含一组 ddb(4)arrow-up-right 命令的命名脚本。这些命令可以通过 ddb(4)arrow-up-right 或新提供的 ddb(8)arrow-up-right 工具进行管理。有关更多详细信息,请参考 ddb(4)arrow-up-right 手册页。

虚拟化支持

新增了对 virtio(4)arrow-up-right 的支持。virtio(4)arrow-up-right 是为 Linux KVM 开发的半虚拟化接口,现在已被其他虚拟机管理程序(除了 Xen)采用。本次更新引入了基于 BSD 许可证的 virtio 内核驱动程序实现,支持磁盘 IO (virtio_blk(4)arrow-up-rightvirtio_scsi(4)arrow-up-right)、网络 IO (vtnet(4)arrow-up-right)、内存气球 (virtio_balloon(4)arrow-up-right) 和 PCI。已在 Qemu/KVM、VirtualBox 和 bhyve(4)arrow-up-right 上测试通过。(r227652)arrow-up-right

或者,通过在内核配置中添加 device hyperv,并重新编译内核,可将 Hyper-V 驱动程序加入 i386 内核。详细设置说明请参阅 FreeBSD 和 Microsoft Windows Server Hyper-V 支持arrow-up-right

新增驱动程序 vmx(4)arrow-up-rightvmx(4)arrow-up-right 是一款从 OpenBSD 移植的 VMware VMXNET3 以太网驱动。(r254738)arrow-up-right

ARM 支持

新增了对树莓派的支持。参考设置说明arrow-up-right快速入门指南arrow-up-right(r239922)arrow-up-right

ARM 的默认 ABI 现已改为 ARM EABI。这带来了多项改进,并为未来支持 VFP 和 Thumb-2 提供了基础。(r253396)arrow-up-right

ARM 支持得到了显著改进,包括支持 ARMv6 和 ARMv7、SMP 和线程本地存储 (TLS)。此外,还新增了对一些新型 SoC(如 MV78x60 和 OMAP4)的支持。更多详情请查看 公告arrow-up-right(r239268)arrow-up-right

ARM 平台现已支持 Superpages。Superpages 通过动态覆盖较大物理内存区域的 TLB 翻译提供了更好的性能和可扩展性。所有基于 ARMv6 和 ARMv7 的平台均可利用此功能。详情请见 ARM Superpages 状态arrow-up-right(r254918)arrow-up-right

硬件支持

多媒体支持

新增对 USB 音频参考设计 2.0 版本的支持。新设备支持更高的带宽、更高的采样频率和更宽的动态范围。(r240609)arrow-up-right

网络接口支持

mxge(4)arrow-up-right 驱动程序的固件已更新至 1.4.55。(r236212)arrow-up-right

re(4)arrow-up-right 驱动程序已进行全面改进,以修复多个问题。现在该驱动程序支持 Wake On LAN (WOL) 功能。

vr(4)arrow-up-right 驱动程序已进行全面改进,以修复多个未解决的问题。现在它在所有架构上均可正常工作。

[ amd64,i386 ] wpi(4)arrow-up-right 驱动程序已更新,修复了一些稳定性问题。

cxgbe(4)arrow-up-right 驱动程序已更新,支持基于 Chelsio Terminator 5 (T5) ASIC 的 40G/10G 以太网网卡。(r248925)arrow-up-right

新增了驱动程序 iw_cxgbe。这是一个实验性的 iWARP/RDMA 驱动(仅内核命令),用于 Chelsio T4 和 T5 系列卡。(r256694)arrow-up-right

Open Fabrics Enterprise Distribution (OFED) 和 OFED Infiniband 核心已更新至与 Linux 3.7 版本相同的版本。(r255932)arrow-up-right

Mellanox Infiniband 驱动程序已更新至 2.30.3200 版本,支持 ConnectX3 网卡。新增了对 ConnectX3 VPI 网卡的支持,每个端口可以用作 Infiniband 56 GB/s 或以太网 40 GB/s。此外,已新增对 Infiniband 核心(ibcore)和 IP over Infiniband(ipoib)内核模块动态加载的支持。(r255932)arrow-up-right

新增了 netmap(4)arrow-up-right 支持。netmap(4)arrow-up-right 是一款高性能的直接到硬件的数据包 I/O 框架,能够为用户空间应用提供低延迟、高 PPS 的数据包传输,同时绕过内核端的数据包处理。通过 netmap(4)arrow-up-right,可以轻松饱和 10 Gbps 网络接口,且包大小最小。更多信息请参见:Netmap 项目arrow-up-right(r227614)arrow-up-right

网络协议

已重新编写 carp(4)arrow-up-right ,使得从路由守护进程(如 quagga/zebra)的角度来看地址更合理。它还支持在子网中设置一个冗余地址(carpdev),通过 ifconfig(8)arrow-up-right 切换状态,改进了锁机制,并使用现代内核接口分配组播成员资格。通过 ifconfig(8)arrow-up-right 配置 CARP 协议的方式发生了变化,提交给 devd(8)arrow-up-right 的 CARP 事件格式也有所不同。更多信息请参见 carp(4)arrow-up-right。目前 carp(4)arrow-up-right 的 arpbalance 功能不再受支持。(r228571)arrow-up-right

pf(4)arrow-up-right 防火墙现在支持更细粒度的锁机制,并在多 CPU 机器上提供更好的利用率,从而显著提高了性能。(r240233)arrow-up-right

已引入对最多 65536 个路由表的支持。(r250700)arrow-up-right

已在 ipfw(8)arrow-up-right 中添加对设置/匹配 IP 头中的区分服务代码点(DSCP)的支持。(r248552)arrow-up-right

磁盘与存储

现在 aac(4)arrow-up-right 驱动程序支持大于 2TB 的卷。

hptrr(4)arrow-up-right 驱动程序已更新至 Highpoint 的 1.2 版本。

nvme(4)arrow-up-right 已新增,提供 NVM Express 支持。NVM Express 是为基于 PCI Express(PCIe)的固态硬盘(SSD)优化的寄存器接口、命令集和特性集。更多信息请参见 nvmexpress.orgarrow-up-right(r240616)arrow-up-right

文件系统

现在已添加基于内核的 iSCSI 目标和发起器。(r255570)arrow-up-right

UFS 文件系统现在可以在挂载为读写的情况下通过 growfs(8)arrow-up-right 扩展大小。这对于虚拟机尤其有用,可以在不中断服务的情况下添加更多硬盘空间。(r243246)arrow-up-right

现在,最先进的 FUSE 实现已经成为基本系统的一部分。它允许使用几乎所有的 fusefs 文件系统。(r241519)arrow-up-right

ZFS

现在 bsdinstall(8)arrow-up-right 能在根文件系统上安装 ZFS。它包含一个单一的配置菜单,能让你选择所有必需的详细信息,包括使用哪些驱动器、使用什么 ZFS RAID 等级(根据所选的驱动器数量)、GPT 或 MBR、GELI 加密、强制 4K 扇区、池名称等。(r256361)arrow-up-right

ZFS 已添加对 L2ARC 压缩的支持。(r252140)arrow-up-right

Illumos 的 zio nop-write 改进已被引入到 FreeBSD 中。为了减少 I/O,nop-write 如果新数据的(加密安全的)校验和与现有数据的校验和匹配,则跳过数据覆盖。如果使用了快照,它还会节省空间。此改进仅适用于启用了压缩、禁用了去重和使用 sha256 校验和的数据集。ZFS 现在会比较传入写入的校验和与现有磁盘数据的校验和,避免对未更改的数据发起任何写 I/O。这将减少 I/O 和空间使用,因为如果旧块被快照引用,即使它们包含相同的数据,也会保留这两个副本。(r243524)arrow-up-right

用户空间变更

在将 clang(1)arrow-up-right 设置为默认系统编译器的平台上(如 i386、amd64、arm),默认不再构建 GCC 和 GNU libstdc。取而代之的是在这些平台上使用 clang(1)arrow-up-right 和 LLVM 提供的 libc。GCC 4.2.1 和 libstdc++ 仍然会在 pc98 以及其他未使用 clang(1)arrow-up-right 作为默认系统编译器的平台上构建和使用。(r255321)arrow-up-right

clang(1)arrow-up-right 和 llvm 已更新至 3.3 版本。请参考 Clang 3.3 发布说明arrow-up-right(r251662)arrow-up-right

已从基本系统中移除 BIND。由 NLnet Labs 维护的 unbound(8)arrow-up-right 已被导入,以支持带有 DNSSEC 的本地 DNS 解析功能。需要注意的是,它并不是 BIND 的替代品,BIND 的最新版本仍然可以通过 Ports 安装。随着此更改,nslookup 和 dig 不再是基本系统的一部分。用户应该改用 host(1)arrow-up-rightdrill(1)arrow-up-right。另外,可以通过安装 Port dns/bind-tools 来获取 nslookup 和 dig。(r255949)arrow-up-right

已从基本系统中移除 sysinstall。sysinstall 使用的辅助库和工具(如 libdisk、libftpio 和 sade)也已被移除。sysinstall 被 bsdinstall(8)arrow-up-rightbsdconfig(8)arrow-up-right 取代。(r225937)arrow-up-right

已新增 freebsd-version(1)arrow-up-right 工具。该工具尽力确定已安装的内核和用户空间的版本及补丁级别。(r256106)arrow-up-right

已从基本系统中移除 GNU patch,并被一个 BSD 许可的 patch(1)arrow-up-right 程序取代。(r255191)arrow-up-right

已从基本系统中移除 GNU sort,并被一个 BSD 许可的 sort(1)arrow-up-right 程序取代。(r241511)arrow-up-right

Berkeley yacc (byacc) 已从 invisible islandarrow-up-right 导入。这为 yacc(1)arrow-up-right 带来了与 bison 的兼容性,同时保持与旧版本的 yacc(1)arrow-up-right 完全向后兼容。(r235723)arrow-up-right

lex(1)arrow-up-right 已被 flex 2.5.37 取代。(r250881)arrow-up-right

make(1)arrow-up-right 已被来自 NetBSD 的 Portable BSD make 工具(bmake)取代。(r250699)arrow-up-right

现在支持最多 32 个字符的用户名。(r243023)arrow-up-right

adduser(8)arrow-up-right 工具现在支持 -M 选项,用于设置新用户的主目录模式。

基于 libarchive(3)arrow-up-right 的 BSD 许可版本的 ar(1)arrow-up-rightranlib(1)arrow-up-right 已取代这些工具的 GNU Binutils 版本。

基于 BSD 许可的 bc(1)arrow-up-rightdc(1)arrow-up-right 已取代 GNU 版本。

chflags(1)arrow-up-right 现在支持 -v 参数用于详细输出,以及 -f 参数来忽略错误,其语义与(例如)chmod(1)arrow-up-right 相同。

为了与其他实现兼容, cp(1)arrow-up-right 现在支持 -a 参数,等同于指定 -RrP 参数。

基于 libarchive(3)arrow-up-right 的 BSD 许可版本的 cpio(1)arrow-up-right 已取代 GNU cpio。需要注意的是,GNU cpio 仍然可以作为 gcpio 安装。

env(1)arrow-up-right 程序现在支持 -u name,这将完全取消设置给定变量 name,即从环境中移除它,而不仅仅是将其设置为空值。

已添加库函数 fdopendir(3)arrow-up-right

fetch(3)arrow-up-right 库现在支持 HTTP 1.1 的 If-Modified-Since 行为。fetch(1)arrow-up-right 程序现在支持 -i filename 选项,只有当内容比 filename 新时才会下载指定的 HTTP URL。

find(1)arrow-up-right 通过增加一些 GNU find 中存在但在 FreeBSD 的 find(1)arrow-up-right 中没有的原语,得到了增强。

kgdb(1)arrow-up-right 现在支持新的 add-kld 命令,方便调试带有内核模块的崩溃转储。

ls(1)arrow-up-right 程序现在支持 -D 选项,用于指定在长格式(-l)输出中使用的日期格式字符串。

nc(1)arrow-up-right 现在支持 -O 选项来禁用 TCP 选项的使用。

nc(1)arrow-up-right-o 选项已弃用,将在未来版本中移除。

ping6(8)arrow-up-right 实用工具现在在数据包传输成功但没有收到响应时返回 2(与 ping(8)arrow-up-right 相同的行为)。在此更改之前,它返回非零值。

realpath(1)arrow-up-right 实用工具现在支持 -q 参数以抑制警告;它现在也接受多个路径作为命令行参数。

sh(1)arrow-up-right 修复了许多错误,增加了一些新特性,并且现在会拒绝解析一些无效脚本。此外,它现在支持文件名补全,并默认为 emacs 编辑模式。

split(1)arrow-up-right 实用工具现在支持 -n 参数来将文件拆分为指定数量的块。

tar(1)arrow-up-right 实用工具现在支持 -Z 参数,以启用 compress(1)arrow-up-right 风格的压缩/解压缩。

tar(1)arrow-up-right 实用工具现在支持 --numeric-owner 参数,在创建和提取时忽略用户/组名称。

tar(1)arrow-up-right 实用工具现在支持 -S 参数,在提取时压缩文件。

tar(1)arrow-up-right 实用工具现在支持 -s 参数,根据指定的正则表达式替换文件名。

tcgetsid(3)arrow-up-right 库函数已添加,用于返回控制终端的会话领导者的进程组 ID。它在 IEEE Std 1003.1-2001(POSIX)中有定义。

top(1)arrow-up-right 现在支持 -P 参数来提供每个 CPU 的使用统计信息。

zdump(8)arrow-up-right 现在在 64 位架构上正常工作。

traceroute(8)arrow-up-right 现在能够使用新的 -a 开关打印每跳的 AS 编号;新的 -A 选项允许选择特定的 WHOIS 服务器。

traceroute6(8)arrow-up-right 现在支持 -U 参数,发送没有上层协议的探测数据包,而不是通常的 UDP 探测数据包。

/etc/rc.d 脚本

新增了以下 rc(8)arrow-up-right 脚本:

功能

ctld

iSCSI 目标守护进程启动脚本

iscsictl

iSCSI 启动器管理工具启动脚本

iscsid

iSCSI 启动器守护进程启动脚本

kfd

Kerberos 票证转发守护进程启动脚本

local_unbound

本地缓存解析器 Unbound 启动脚本

postrandom

在系统启动时生成一个新的熵文件

swap

替代 swap1;在系统启动时启用交换分区

swaplate

在系统启动时启用“延迟”交换分区

utx

用户账户数据库的启动和关闭脚本

删除了以下 rc(8)arrow-up-right 脚本:

原因

encswap

swapswaplate 替代

named

与 BIND 一同移除

swap1

swapswaplate 替代

第三方软件

jemalloc(3)arrow-up-right 已更新至 3.4.0。有关更多详情,请参见 此链接arrow-up-right(r251300)arrow-up-right

AMD# 已更新至 6.1.5。

awk# 已更新至 20121220 版本。

已从基本系统中移除 CVS#,但仍可从 Ports 获取。(r251794)arrow-up-right

Subversion 已被导入到基本系统并作为 svnlite# 安装。svnlite# 仅用于检出 FreeBSD 源代码树并进行提交,不替代完整的 Port Subversion。(r251886)arrow-up-right

file# 已更新至 5.11。(r234449)arrow-up-right

hostapd# 已从 0.5.8 更新至 0.5.10。(r252726)arrow-up-right

IPFilter# 已更新至 5.1.2。

less# 已更新至 v458。(r250592)arrow-up-right

ncurses# 已更新至 5.7-20081102。

OpenSSH# 已更新至 6.4。

OpenPAM# 已更新至 Micrampelis 版本。(r236109)arrow-up-right

sendmail# 已从 8.14.1 更新至 8.14.7。

时区数据库已从 tzdata2008h# 版本更新至 tzdata2009m# 版本。

libc 的 stdtime 部分,zdump(8)arrow-up-rightzic(8)arrow-up-right 已从 tzcode2004a# 版本更新至 tzcode2009h# 版本。如果你是通过源代码或 freebsd-update(8)arrow-up-right 升级的,请运行 tzsetup(8)arrow-up-right 以安装新的 /etc/localtime

WPA Supplicant# 已更新至 2.0。(r252726)arrow-up-right

xz# 已从 2010 年 4 月 12 日的快照更新至 5.0.0。

nvi(1)arrow-up-right 已更新至 2.1.2。(r258231)arrow-up-right

nvi(1)arrow-up-right 支持宽字符区域设置。(r254225)arrow-up-right

Ports/软件包集成基础设施

已移除工具 pkg_addpkg_createpkg_deletepkg_infopkg_updatingpkg_version。现在必须使用 pkg(7)arrow-up-right 来安装二进制包。 pkg(7)arrow-up-right 是下一代 FreeBSD 包管理器,也称为 pkgng。如果从以前的 FreeBSD 版本升级,请确保运行 pkg2ng# 来将旧的包数据库转换为新格式。(r257444)arrow-up-right

发布工程与集成

支持的 GNOME 桌面环境版本(x11/gnome2)已从 2.20.1 更新至 2.22。

从旧版 FreeBSD 版本升级

[amd64,i386] 从 FreeBSD 6.2-RELEASE 开始,支持使用 freebsd-update(8)arrow-up-right 工具进行版本之间的二进制升级(以及各种安全分支的快照)。二进制升级过程将更新未修改的用户工具,以及未修改的 GENERIC 或 SMP 内核,这些内核作为官方 FreeBSD 版本的一部分发布。 freebsd-update(8)arrow-up-right 工具要求升级的主机具有互联网连接。

也可从旧版进行基于源代码的升级(即从源代码重新编译 FreeBSD 基本系统),具体步骤请参见 /usr/src/UPDATING 文件中的说明。

重要:

在升级 FreeBSD 之前,务必先备份 所有 数据和配置文件。

最后更新于