原文链接:FreeBSD 10.0-RELEASE Release Notes
FreeBSD 10.0-RELEASE 的发行说明总结了 10.0-STABLE 开发分支中对 FreeBSD 基本系统的更改。本文档列出了自上次发布以来发布的安全公告,以及对 FreeBSD 内核和用户空间的重大更改。同时,还简要介绍了升级相关的注意事项。
本文档为 FreeBSD 10.0-RELEASE 的发行说明,介绍了最近添加、更改或删除的功能,并提供了从先前版本的 FreeBSD 升级的一些注意事项。
最新的发行说明可在线查阅:《FreeBSD 10.0-RELEASE 发行说明》。
FreeBSD 10.0-RELEASE 作为正式发行版,可通过 http://www.FreeBSD.org/releases/ 或其镜像下载。有关获取该版本(或其他版本)发行版的更多信息,请参阅 《FreeBSD 手册》 中的 《获取 FreeBSD》附录。
建议所有用户在安装 FreeBSD 前,查阅发行勘误表。勘误表包含发行周期后期或发行后发现的“最新动态”信息,通常包括已知问题、安全公告以及文档修订。最新的 FreeBSD 10.0-RELEASE 勘误表可在 FreeBSD 网站上获取。
本节介绍了自 9.2-RELEASE 以来 FreeBSD 中新增或更改的最显著的用户可见功能。
通常,发行说明包括 9.2-RELEASE 之后发布的安全公告、新的驱动程序或硬件支持、新增的命令或选项、重大错误修复或更新的第三方软件。此外,还可能列出主要 Port/软件包的更改或发布工程实践的更新。显然,发行说明无法涉及各版本间 FreeBSD 所有的更改;本文档主要关注安全公告、用户可见更改以及主要架构改进。
以下安全公告中介绍的问题已修复。有关详细信息,请查阅 FreeBSD 安全信息 中的具体公告。
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)
ddb(4) 内核调试器现支持输出捕获功能。ddb(4) 的输入和输出可以捕获到内存缓冲区中,供稍后通过 sysctl(8) 或文本转储进行检查。新功能由命令 capture
控制。
ddb(4) 调试器还新增了简单的脚本功能,支持包含一组 ddb(4) 命令的命名脚本。这些命令可以通过 ddb(4) 或新提供的 ddb(8) 工具进行管理。有关更多详细信息,请参考 ddb(4) 手册页。
新增了对 virtio(4) 的支持。virtio(4) 是为 Linux KVM 开发的半虚拟化接口,现在已被其他虚拟机管理程序(除了 Xen)采用。本次更新引入了基于 BSD 许可证的 virtio 内核驱动程序实现,支持磁盘 IO (virtio_blk(4) 和 virtio_scsi(4))、网络 IO (vtnet(4))、内存气球 (virtio_balloon(4)) 和 PCI。已在 Qemu/KVM、VirtualBox 和 bhyve(4) 上测试通过。(r227652)
或者,通过在内核配置中添加 device hyperv
,并重新编译内核,可将 Hyper-V 驱动程序加入 i386 内核。详细设置说明请参阅 FreeBSD 和 Microsoft Windows Server Hyper-V 支持。
新增驱动程序 vmx(4) 。vmx(4) 是一款从 OpenBSD 移植的 VMware VMXNET3 以太网驱动。(r254738)
新增了对树莓派的支持。参考设置说明和快速入门指南。(r239922)
ARM 的默认 ABI 现已改为 ARM EABI。这带来了多项改进,并为未来支持 VFP 和 Thumb-2 提供了基础。(r253396)
ARM 支持得到了显著改进,包括支持 ARMv6 和 ARMv7、SMP 和线程本地存储 (TLS)。此外,还新增了对一些新型 SoC(如 MV78x60 和 OMAP4)的支持。更多详情请查看 公告。(r239268)
ARM 平台现已支持 Superpages。Superpages 通过动态覆盖较大物理内存区域的 TLB 翻译提供了更好的性能和可扩展性。所有基于 ARMv6 和 ARMv7 的平台均可利用此功能。详情请见 ARM Superpages 状态。(r254918)
新增对 USB 音频参考设计 2.0 版本的支持。新设备支持更高的带宽、更高的采样频率和更宽的动态范围。(r240609)
mxge(4) 驱动程序的固件已更新至 1.4.55。 (r236212)
re(4) 驱动程序已进行全面改进,以修复多个问题。现在该驱动程序支持 Wake On LAN (WOL) 功能。
vr(4) 驱动程序已进行全面改进,以修复多个未解决的问题。现在它在所有架构上均可正常工作。
[ amd64,i386 ] wpi(4) 驱动程序已更新,修复了一些稳定性问题。
cxgbe(4) 驱动程序已更新,支持基于 Chelsio Terminator 5 (T5) ASIC 的 40G/10G 以太网网卡。 (r248925)
新增了驱动程序 iw_cxgbe 。这是一个实验性的 iWARP/RDMA 驱动(仅内核命令),用于 Chelsio T4 和 T5 系列卡。 (r256694)
Open Fabrics Enterprise Distribution (OFED) 和 OFED Infiniband 核心已更新至与 Linux 3.7 版本相同的版本。 (r255932)
Mellanox Infiniband 驱动程序已更新至 2.30.3200 版本,支持 ConnectX3 网卡。新增了对 ConnectX3 VPI 网卡的支持,每个端口可以用作 Infiniband 56 GB/s 或以太网 40 GB/s。此外,已新增对 Infiniband 核心(ibcore)和 IP over Infiniband(ipoib)内核模块动态加载的支持。 (r255932)
新增了 netmap(4) 支持。netmap(4) 是一款高性能的直接到硬件的数据包 I/O 框架,能够为用户空间应用提供低延迟、高 PPS 的数据包传输,同时绕过内核端的数据包处理。通过 netmap(4),可以轻松饱和 10 Gbps 网络接口,且包大小最小。更多信息请参见:Netmap 项目。(r227614)
已重新编写 carp(4) ,使得从路由守护进程(如 quagga/zebra)的角度来看地址更合理。它还支持在子网中设置一个冗余地址(carpdev),通过 ifconfig(8) 切换状态,改进了锁机制,并使用现代内核接口分配组播成员资格。通过 ifconfig(8) 配置 CARP 协议的方式发生了变化,提交给 devd(8) 的 CARP 事件格式也有所不同。更多信息请参见 carp(4)。目前 carp(4) 的 arpbalance 功能不再受支持。 (r228571)
pf(4) 防火墙现在支持更细粒度的锁机制,并在多 CPU 机器上提供更好的利用率,从而显著提高了性能。 (r240233)
已引入对最多 65536
个路由表的支持。 (r250700)
已在 ipfw(8) 中添加对设置/匹配 IP 头中的区分服务代码点(DSCP)的支持。 (r248552)
现在 aac(4) 驱动程序支持大于 2TB 的卷。
hptrr(4) 驱动程序已更新至 Highpoint 的 1.2 版本。
nvme(4) 已新增,提供 NVM Express 支持。NVM Express 是为基于 PCI Express(PCIe)的固态硬盘(SSD)优化的寄存器接口、命令集和特性集。更多信息请参见 nvmexpress.org。(r240616)
现在已添加基于内核的 iSCSI 目标和发起器。 (r255570)
UFS 文件系统现在可以在挂载为读写的情况下通过 growfs(8) 扩展大小。这对于虚拟机尤其有用,可以在不中断服务的情况下添加更多硬盘空间。 (r243246)
现在,最先进的 FUSE 实现已经成为基本系统的一部分。它允许使用几乎所有的 fusefs 文件系统。 (r241519)
现在 bsdinstall(8) 能在根文件系统上安装 ZFS。它包含一个单一的配置菜单,能让你选择所有必需的详细信息,包括使用哪些驱动器、使用什么 ZFS RAID 等级(根据所选的驱动器数量)、GPT 或 MBR、GELI 加密、强制 4K 扇区、池名称等。 (r256361)
ZFS 已添加对 L2ARC 压缩的支持。 (r252140)
Illumos 的 zio nop-write 改进已被引入到 FreeBSD 中。为了减少 I/O,nop-write 如果新数据的(加密安全的)校验和与现有数据的校验和匹配,则跳过数据覆盖。如果使用了快照,它还会节省空间。此改进仅适用于启用了压缩、禁用了去重和使用 sha256 校验和的数据集。ZFS 现在会比较传入写入的校验和与现有磁盘数据的校验和,避免对未更改的数据发起任何写 I/O。这将减少 I/O 和空间使用,因为如果旧块被快照引用,即使它们包含相同的数据,也会保留这两个副本。 (r243524)
在将 clang(1) 设置为默认系统编译器的平台上(如 i386、amd64、arm),默认不再构建 GCC 和 GNU libstdc。取而代之的是在这些平台上使用 clang(1) 和 LLVM 提供的 libc。GCC 4.2.1 和 libstdc++ 仍然会在 pc98 以及其他未使用 clang(1) 作为默认系统编译器的平台上构建和使用。(r255321)
clang(1) 和 llvm 已更新至 3.3 版本。请参考 Clang 3.3 发布说明。(r251662)
已从基本系统中移除 BIND 。由 NLnet Labs 维护的 unbound(8) 已被导入,以支持带有 DNSSEC 的本地 DNS 解析功能。需要注意的是,它并不是 BIND 的替代品,BIND 的最新版本仍然可以通过 Ports 安装。随着此更改,nslookup 和 dig 不再是基本系统的一部分。用户应该改用 host(1) 和 drill(1)。另外,可以通过安装 Port dns/bind-tools
来获取 nslookup 和 dig。(r255949)
已从基本系统中移除 sysinstall 。sysinstall 使用的辅助库和工具(如 libdisk、libftpio 和 sade)也已被移除。sysinstall 被 bsdinstall(8) 和 bsdconfig(8) 取代。(r225937)
已新增 freebsd-version(1) 工具。该工具尽力确定已安装的内核和用户空间的版本及补丁级别。(r256106)
已从基本系统中移除 GNU patch,并被一个 BSD 许可的 patch(1) 程序取代。(r255191)
已从基本系统中移除 GNU sort,并被一个 BSD 许可的 sort(1) 程序取代。(r241511)
Berkeley yacc (byacc) 已从 invisible island 导入。这为 yacc(1) 带来了与 bison 的兼容性,同时保持与旧版本的 yacc(1) 完全向后兼容。(r235723)
lex(1) 已被 flex 2.5.37 取代。(r250881)
make(1) 已被来自 NetBSD 的 Portable
BSD make 工具(bmake)取代。(r250699)
现在支持最多 32 个字符的用户名。(r243023)
adduser(8) 工具现在支持 -M
选项,用于设置新用户的主目录模式。
基于 libarchive(3) 的 BSD 许可版本的 ar(1) 和 ranlib(1) 已取代这些工具的 GNU Binutils 版本。
基于 BSD 许可的 bc(1) 和 dc(1) 已取代 GNU 版本。
chflags(1) 现在支持 -v
参数用于详细输出,以及 -f
参数来忽略错误,其语义与(例如)chmod(1) 相同。
为了与其他实现兼容, cp(1) 现在支持 -a
参数,等同于指定 -RrP
参数。
基于 libarchive(3) 的 BSD 许可版本的 cpio(1) 已取代 GNU cpio。需要注意的是,GNU cpio 仍然可以作为 gcpio
安装。
env(1) 程序现在支持 -u name
,这将完全取消设置给定变量 name
,即从环境中移除它,而不仅仅是将其设置为空值。
已添加库函数 fdopendir(3) 。
fetch(3) 库现在支持 HTTP 1.1 的 If-Modified-Since 行为。fetch(1) 程序现在支持 -i filename
选项,只有当内容比 filename
新时才会下载指定的 HTTP URL。
find(1) 通过增加一些 GNU find 中存在但在 FreeBSD 的 find(1) 中没有的原语,得到了增强。
kgdb(1) 现在支持新的 add-kld
命令,方便调试带有内核模块的崩溃转储。
ls(1) 程序现在支持 -D
选项,用于指定在长格式(-l
)输出中使用的日期格式字符串。
nc(1) 现在支持 -O
选项来禁用 TCP 选项的使用。
nc(1) 的 -o
选项已弃用,将在未来版本中移除。
ping6(8) 实用工具现在在数据包传输成功但没有收到响应时返回 2
(与 ping(8) 相同的行为)。在此更改之前,它返回非零值。
realpath(1) 实用工具现在支持 -q
参数以抑制警告;它现在也接受多个路径作为命令行参数。
sh(1) 修复了许多错误,增加了一些新特性,并且现在会拒绝解析一些无效脚本。此外,它现在支持文件名补全,并默认为 emacs
编辑模式。
split(1) 实用工具现在支持 -n
参数来将文件拆分为指定数量的块。
tar(1) 实用工具现在支持 -Z
参数,以启用 compress(1) 风格的压缩/解压缩。
tar(1) 实用工具现在支持 --numeric-owner
参数,在创建和提取时忽略用户/组名称。
tar(1) 实用工具现在支持 -S
参数,在提取时压缩文件。
tar(1) 实用工具现在支持 -s
参数,根据指定的正则表达式替换文件名。
tcgetsid(3) 库函数已添加,用于返回控制终端的会话领导者的进程组 ID。它在 IEEE Std 1003.1-2001(POSIX)中有定义。
top(1) 现在支持 -P
参数来提供每个 CPU 的使用统计信息。
zdump(8) 现在在 64 位架构上正常工作。
traceroute(8) 现在能够使用新的 -a
开关打印每跳的 AS 编号;新的 -A
选项允许选择特定的 WHOIS 服务器。
traceroute6(8) 现在支持 -U
参数,发送没有上层协议的探测数据包,而不是通常的 UDP 探测数据包。
/etc/rc.d
脚本新增了以下 rc(8) 脚本:
功能
ctld
iSCSI 目标守护进程启动脚本
iscsictl
iSCSI 启动器管理工具启动脚本
iscsid
iSCSI 启动器守护进程启动脚本
kfd
Kerberos 票证转发守护进程启动脚本
local_unbound
本地缓存解析器 Unbound 启动脚本
postrandom
在系统启动时生成一个新的熵文件
swap
替代 swap1
;在系统启动时启用交换分区
swaplate
在系统启动时启用“延迟”交换分区
utx
用户账户数据库的启动和关闭脚本
删除了以下 rc(8) 脚本:
原因
encswap
被 swap
和 swaplate
替代
named
与 BIND 一同移除
swap1
被 swap
和 swaplate
替代
jemalloc(3) 已更新至 3.4.0。有关更多详情,请参见 此链接。(r251300)
AMD#
已更新至 6.1.5。
awk#
已更新至 20121220 版本。
已从基本系统中移除 CVS#
,但仍可从 Ports 获取。(r251794)
Subversion 已被导入到基本系统并作为 svnlite#
安装。svnlite#
仅用于检出 FreeBSD 源代码树并进行提交,不替代完整的 Port Subversion 。(r251886)
file#
已更新至 5.11。(r234449)
hostapd#
已从 0.5.8 更新至 0.5.10。(r252726)
IPFilter#
已更新至 5.1.2。
less#
已更新至 v458。(r250592)
ncurses#
已更新至 5.7-20081102。
OpenSSH#
已更新至 6.4。
OpenPAM#
已更新至 Micrampelis 版本。(r236109)
sendmail#
已从 8.14.1 更新至 8.14.7。
时区数据库已从 tzdata2008h#
版本更新至 tzdata2009m#
版本。
libc 的 stdtime 部分,zdump(8) 和 zic(8) 已从 tzcode2004a#
版本更新至 tzcode2009h# 版本。如果你是通过源代码或 freebsd-update(8) 升级的,请运行 tzsetup(8) 以安装新的 /etc/localtime
。
WPA Supplicant#
已更新至 2.0。(r252726)
xz#
已从 2010 年 4 月 12 日的快照更新至 5.0.0。
已移除工具 pkg_add
、pkg_create
、pkg_delete
、pkg_info
、pkg_updating
和 pkg_version
。现在必须使用 pkg(7) 来安装二进制包。 pkg(7) 是下一代 FreeBSD 包管理器,也称为 pkgng
。如果从以前的 FreeBSD 版本升级,请确保运行 pkg2ng#
来将旧的包数据库转换为新格式。(r257444)
支持的 GNOME 桌面环境版本(x11/gnome2)已从 2.20.1 更新至 2.22。
[amd64,i386] 从 FreeBSD 6.2-RELEASE 开始,支持使用 freebsd-update(8) 工具进行版本之间的二进制升级(以及各种安全分支的快照)。二进制升级过程将更新未修改的用户工具,以及未修改的 GENERIC 或 SMP 内核,这些内核作为官方 FreeBSD 版本的一部分发布。 freebsd-update(8) 工具要求升级的主机具有互联网连接。
也可从旧版进行基于源代码的升级(即从源代码重新编译 FreeBSD 基本系统),具体步骤请参见 /usr/src/UPDATING
文件中的说明。
重要:
在升级 FreeBSD 之前,务必先备份 所有 数据和配置文件。
脚本
脚本