For the complete documentation index, see llms.txt. This page is also available as Markdown.

FreeBSD 12.1-RELEASE 发行说明(2019 年 11 月 4 日)

摘要

FreeBSD 12.1-RELEASE 的发行说明总结了在 12-STABLE 开发分支中对 FreeBSD 基本系统所做的变更。本文件列出了自上次发行以来发布的适用安全公告,以及对 FreeBSD 内核和用户空间的重大变更。同时还提供了一些关于升级的简要说明。

引言

本文件包含 FreeBSD 12.1-RELEASE 的发行说明,介绍了 FreeBSD 最近新增、修改或删除的功能,并提供了从早期版本的 FreeBSD 升级的相关说明。

这些发行说明所适用的发行版本代表了 12-STABLE 开发分支中自 12-STABLE 创建以来的最新版本点。有关该分支预构建二进制发行版本的更多信息,请访问 https://www.FreeBSD.org/releases/

这些发行说明所适用的发行版本代表了 12-STABLE 开发分支中自 12.0-RELEASE 以来、12.2-RELEASE 之前的一个开发节点。有关该分支预构建二进制发行版本的更多信息,请访问 https://www.FreeBSD.org/releases/

FreeBSD 12.1-RELEASE 的发行版本是一个正式发布版本,可通过 https://www.FreeBSD.org/releases/ 或其镜像站点获取。如需获取此版本(或其他版本)的更多信息,请参考 FreeBSD 手册 中的 获取 FreeBSD 附录

所有用户在安装 FreeBSD 之前都应查看发行勘误文件。勘误文件会包含在发行周期后期或发布后发现的“最新信息”,通常包括已知问题、安全公告和文档更正。FreeBSD 12.1-RELEASE 的最新勘误文档可在 FreeBSD 官网找到。

本文档介绍了自 12.0-RELEASE 以来 FreeBSD 中最显著的新功能或变更。一般来说,这些变更是 12-STABLE 分支独有的,除非明确标注为合并(MERGED)特性。

发行说明通常涉及 12.0-RELEASE 之后发布的安全公告、新的驱动或硬件支持、新命令或选项、主要的错误修复或第三方软件升级。文档可能还会列出主要的 Ports/软件包变更或发布工程实践改进。显然,发行说明无法列出每一项变更;本文档主要关注安全公告、用户可见的变更和主要的架构改进。

从旧版 FreeBSD 升级

通过使用 freebsd-update(8) 工具支持在 RELEASE 版本之间(以及各个安全分支的快照)进行二进制升级。二进制升级程序将更新未修改的用户空间工具,以及作为官方 FreeBSD 发行版一部分发布的未修改的 GENERIC 内核。freebsd-update(8) 工具要求正在升级的主机具有互联网连接。

对于基于源代码的升级(即通过重新编译 FreeBSD 基本系统源代码进行升级),可按 /usr/src/UPDATING 中的说明进行。

重要

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

安全与勘误

本节列出了自 12.0-RELEASE 发布以来的各种安全公告和勘误通知。

安全公告

公告
日期
主题

2018 年 12 月 19 日

缓冲区溢出

2019 年 2 月 5 日

内核数据寄存器泄漏

2019 年 2 月 5 日

文件描述符引用计数泄漏

2019 年 5 月 14 日

多个漏洞

2019 年 5 月 14 日

ntpd(8) 认证拒绝服务

2019 年 5 月 14 日

pf(4) 中的 IPv6 片段重组崩溃

2019 年 5 月 14 日

pf(4) 中的 ICMP/ICMP6 数据包过滤绕过

2019 年 5 月 14 日

微架构数据采样

2019 年 6 月 19 日

非默认 RACK TCP 堆栈中的资源耗尽

2019 年 7 月 2 日

iconv(3) 缓冲区溢出

2019 年 7 月 2 日

内核栈泄露

2019 年 7 月 2 日

cd(4) 中的权限提升

2019 年 7 月 24 日

多个漏洞

2019 年 7 月 24 日

写入后释放漏洞

2019 年 7 月 24 日

引用计数溢出

2019 年 7 月 24 日

xhci(4) 越界读取

2019 年 7 月 24 日

引用计数泄漏

2019 年 8 月 6 日

多个漏洞

2019 年 8 月 6 日

越界内存访问

2019 年 8 月 6 日

消息长度验证不足

2019 年 8 月 6 日

客户机提供数据验证不足

2019 年 8 月 20 日

IPv6 远程拒绝服务

2019 年 8 月 20 日

内核内存泄露

2019 年 8 月 20 日

引用计数溢出

勘误通知

勘误
日期
主题

2019 年 1 月 9 日

CUBIC 拥塞控制下的连接停滞

2019 年 1 月 9 日

TCP 连接可能因数据包丢失而停滞并最终失败

2019 年 1 月 9 日

sqlite 更新

2019 年 1 月 9 日

时区数据库信息更新

2019 年 2 月 5 日

DTrace 与启用了 SMAP 的系统不兼容

2019 年 2 月 5 日

LLE 表查找代码中的竞争条件

2019 年 5 月 14 日

时区数据库信息更新

2019 年 5 月 14 日

install(1) 对部分匹配的相对路径处理错误

2019 年 5 月 14 日

scp(1) 客户端文件名验证不足

2019 年 6 月 19 日

网络栈中的锁定错误

2019 年 7 月 2 日

时区数据库信息更新

2019 年 7 月 24 日

因英特尔 CPU 漏洞缓解导致的系统崩溃

2019 年 8 月 6 日

锁定错误

2019 年 8 月 6 日

异常处理错误

2019 年 8 月 20 日

指令仿真改进

2019 年 8 月 20 日

修复 jail 关键字问题

用户空间

本节涉及用户空间应用程序、第三方软件以及系统工具的变更和新增功能。

用户空间配置变更

gcc 的参数 -Werror 默认关闭。[r352094]

用户空间应用程序变更

lockf(1) 工具已更新,在使用参数 -n 且锁定文件不存在时,返回 EX_UNAVAILABLE[r345569]

ktrdump(8) 工具已更新,新增了参数 -l,指定时启用“实时”模式。[r342705]

gzip(1) 工具已更新,新增了对 xz(1) 文件的 -l 支持。[r343250]

新增了 trim(8) 工具,用于删除使用磨损平衡算法的闪存存储设备上块的内容。[r344688]

sh(1) 工具已更新,新增了选项 pipefail,启用时会将管道的退出状态变更为管道中任何命令的最后一个非零退出状态。[r345487]

mlx5tool(8) 工具已更新,支持为 ConnectX-4、ConnectX-5 和 ConnectX-6 实现固件更新功能。[r347752](由 Mellanox Technologies 赞助)

新增了工具 posixshmcontrol(1)[r348426]

swapon(8) 工具已更新,当命令行中使用参数 -E,或在 fstab(5) 中包含选项 trimonce 时,调用 BIO_DELETE 来修剪交换设备。[r349930]

nvmecontrol(8) 工具已更新,新增了子命令 resv,用于处理 NVMe 保留。[r350952]

camcontrol(8) 工具已更新,在使用子命令 modepage 时支持块描述符。[r351530](由 iXsystems 赞助)

freebsd-update(8) 工具已更新,新增了两个命令:updatesreadyshowconfig[r352774]

zfs(8) 工具已更新,支持与 send 子命令一起使用的参数 -v-n-P,适用于书签。[r352901]

第三方软件

BearSSL 已导入基本系统。[r343281]

ntpd(8) 工具套件已更新至版本 4.2.8p13。[r344884]

tcpdump(1) 工具已更新,在使用参数 -E 时禁用 capsicum(4) 支持。[r346986]

bsnmpd(1) 工具已更新,新增了对 IPv6 传输的支持。[r346987]

libarchive(3) 库已更新至版本 3.4.0。[r349523]

clang、llvm、lld、lldb、compiler-rt 工具和 libc++ 已更新至版本 8.0.1。[r350256]

在 i386 上默认启用 lld 链接器。[r350297](由 FreeBSD 基金会赞助)

新增了 bzip2recover 工具。[r350634]

bzip2(1) 工具已更新至版本 1.0.8。[r351007]

新增了对 RFC8221 和 RFC8429 中已弃用的 Kerberos GSS 算法的警告。[r351243]

mandoc(1) 工具已更新至 2019-07-23 快照。[r351390]

WPA 工具已更新至版本 2.9。[r351611]

OpenSSL 已更新至版本 1.1.1d。[r352192]

时区数据库文件已更新至版本 2019c。[r352353]

已弃用应用程序

ctm(1) 工具已标记为弃用,并在 FreeBSD 13.0 中移除。[r340444]

timed(8) 工具已标记为弃用,并在 FreeBSD 13.0 中移除。[r343940]

运行时库和 API

新增了 libomp 库。

内核

本节涉及内核配置、系统调优和系统控制参数的变化,这些变化不属于其他类别。

内核通用变更

内核在记录进程退出时会同时记录 jail(8) ID。ID 为 0 表示未在 Jail 中的进程。[r343083](由 Modirum MDPay 赞助)

pci_vendors 列表已更新至 2019.01.29 版本。[r343735]

设备与驱动

本节涉及自 12.0-RELEASE 以来设备和设备驱动程序的变更和新增内容。

设备驱动程序

ichwd(4) 驱动已更新,新增对 Lewisburg PCH(C620)芯片组中 TCO 看门狗定时器的支持。[r340190](由 Panzura 赞助)

amdsmn(4)amdtemp(4) 驱动已更新,支持 Ryzen(TM) 2 主机桥。[r340446]

amdtemp(4) 驱动已更新,修正了 AMD 2990WX 的温度报告问题。[r340447]

新增了 rtwn_pci(4) 驱动,用于 RTL8188EE 芯片组。[r342835]

crypto(4) 驱动已更新,新增对弃用算法的警告。[r351246]

新增了 ntb_hw_amd(4) 驱动,提供对 AMD 非透明桥的支持。[r351536]

nvme(4) 驱动已更新,支持 PCI 附加的挂起/恢复功能。[r351914]

新增了 cdceem(4) 驱动,支持 iLO 5 提供的虚拟 USB 网卡,该卡搭载于新的 HPE Proliant(TM) 服务器。[r351942](由 Hewlett Packard Enterprise 赞助)

fusefs(5) 驱动经过彻底重构,实现了新功能和性能改进。[r352351](由 FreeBSD 基金会赞助)

mpr(4)mps(4) 驱动已更新,修复了稳定性问题。[r352761]

由于将 mps(4) 转换为使用 atomic_swap_64,现在在 32 位 powerpc 和 mips 系统上禁用此驱动。[r352761]

存储

本节涉及本地和网络存储子系统中的文件系统及其他存储的变化和新增内容。

通用存储

camcontrol(8) 工具已更新,新增了 ATA 电源模式支持。[r347384](由 Multiplay 赞助)

在创建 geli(8) 提供者时,新增了针对较弱算法的弃用警告。[r348587]

cam(4) 子系统已更新,以改善 AHCI 外壳管理和 SES 互操作性。[r349832]

引导加载程序变更

本节涉及引导加载程序、启动菜单及其他与启动相关的变化。

引导加载程序变更

loader(8) 已更新,允许从启用了特性标志 large_dnode 的 ZFS 数据集启动。[r342683]

loader(8) 已更新,支持 ZFS zpool-features(7) 标志 com.delphix:removing[r351384]

网络

本节介绍了影响 FreeBSD 网络的变化。

通用网络

ipfw(8) 工具已更新,修复了在执行 ipfw table list 时显示“all”以外的标头问题。[r344667]

新增了对 NAT64 CLAT 的支持,符合 RFC6877 的定义。[r346200](由 Yandex LLC 赞助)

新增了 net.inet.tcp.rexmit_initial sysctl(8),用于设置 TCP 使用的 RTO.Initial[r347110](由 Netflix 赞助)

新增了对 GRE-in-UDP 封装的支持,符合 RFC8086 的定义。[r348233]

Ports 和软件包基础设施

本节涉及 FreeBSD Ports、软件包基础设施以及软件包维护和安装工具的变化。

软件包变更

pkg(8) 工具已更新至版本 1.12.0。

GNOME 桌面环境已更新至版本 3.28。

KDE 桌面环境已更新至版本 5.16.5.19.08.1。

关于后续 FreeBSD 版本的一般说明

默认 CPUTYPE 变更

从 FreeBSD-13.0 开始,i386 架构的默认 CPUTYPE 将从 486 变更为 686

这意味着,默认情况下,生成的二进制文件将要求使用 686 类 CPU,包括但不限于由 FreeBSD 发布工程团队提供的二进制文件。FreeBSD 13.0 将继续支持旧版 CPU,但需要此功能的用户将需要自行构建版本以获得官方支持。

由于 i486 和 i586 CPU 主要用于嵌入式市场,因此对普通用户的影响预计最小,因为这些 CPU 类型的新硬件早已过时,并且从统计上看,许多此类已部署系统正接近退役年龄。

做出此变更时考虑了多个因素。例如,i486 没有 64 位原子操作,尽管可以在内核中进行模拟,但无法在用户空间中模拟。此外,32 位 amd64 库自诞生以来一直是 i686。

由于大多数 32 位测试是由开发人员在启用了内核选项 COMPAT_FREEBSD32 的 64 位硬件上使用 lib32 库进行的,因此这一变更确保了更好的覆盖率和用户体验。这也符合大多数 Linux 发行版已经实施的做法。

预计这是 i386 默认 CPUTYPE 最后的调整。

重要

此变更不会影响 FreeBSD 12.x 系列版本。

最后更新于