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

FreeBSD 12.2-RELEASE 发行说明(2020 年 10 月 27 日)

摘要

FreeBSD 12.2-RELEASE 的发行说明包含了 FreeBSD 基本系统在 12-STABLE 开发线上的变更摘要。本文档列出了自上一个版本以来发布的适用的安全公告,以及 FreeBSD 内核和用户空间的重大变更。本文档还简要介绍了升级过程。

引言

本文档包含 FreeBSD 12.2-RELEASE 的发行说明。它介绍了 FreeBSD 最近新增、修改或删除的功能。它还提供了一些关于从以前版本升级到当前版本的说明。

这些发行说明适用于自 12-STABLE 开发分支创建以来的最新版本。有关沿该分支的预编译二进制发布版本的信息,可以在 https://www.FreeBSD.org/releases/ 找到。

这些发行说明适用于 12-STABLE 开发分支的一个点,该点位于 12.1-RELEASE 和未来的 12.3-RELEASE 之间。有关沿该分支的预编译二进制发布版本的信息也可以在 https://www.FreeBSD.org/releases/ 找到。

FreeBSD 12.2-RELEASE 是一个 RELEASE 版本,可在 https://www.FreeBSD.org/releases/ 或其镜像站点获取。关于获取此(或其他)RELEASE 版本的更多信息,可参阅 FreeBSD 手册 中的 获取 FreeBSD 附录。

建议所有用户在安装 FreeBSD 之前查阅发行勘误。该勘误文档会以发布周期后期或发布后才发现的“最新”信息进行更新。通常,它包含已知的错误、安全公告和文档修正。最新的 FreeBSD 12.2-RELEASE 勘误副本可以在 FreeBSD 网站上找到。

本文档介绍了自 12.1-RELEASE 以来 FreeBSD 中最显著的新功能或变更。通常,文中描述的变更是 12-STABLE 分支特有的,除非特别标注为合并特性。

典型的发行说明条目记录了自 12.1-RELEASE 以来发布的安全公告、新驱动程序或硬件支持、新命令或选项、主要 bug 修复或第三方软件升级。它们还可能列出对主要 Ports/软件包或发布工程实践的变更。显然,发行说明无法列出各个版本之间对 FreeBSD 所做的每一项变更;本文档主要聚焦于安全公告、用户可见的变更和重要的架构改进。

从旧版 FreeBSD 升级

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

基于源代码的升级(即从源代码重新编译 FreeBSD 基本系统)也受支持,请按照 /usr/src/UPDATING 中的说明进行。

重要:在进行 FreeBSD 升级前,必须先备份 所有 数据和配置文件。

安全与勘误

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

安全公告

公告
日期
主题

2019 年 11 月 12 日

页面大小变更时的机器检查异常

2019 年 11 月 12 日

英特尔 CPU 微码更新

2020 年 1 月 28 日

fetch(3) 缓冲区溢出

2020 年 1 月 28 日

内核栈数据泄漏

2020 年 3 月 18 日

TCP IPv6 SYN 缓存内核信息泄漏

2020 年 3 月 18 日

ioctl(2) 权限检查不足

2020 年 3 月 18 日

ioctl(2) 权限检查不足

2020 年 3 月 18 日

错误的用户控制指针使用

2020 年 3 月 18 日

嵌套 Jail 导致的内核内存信息泄漏

2020 年 3 月 18 日

多重拒绝服务

2020 年 4 月 21 日

无效的 mbuf(9) 处理

2020 年 4 月 21 日

远程拒绝服务

2020 年 5 月 12 日

数据包长度验证不足

2020 年 5 月 12 日

内存信息泄漏漏洞

2020 年 5 月 12 日

释放后使用条件

2020 年 5 月 12 日

MAC 密钥长度检查不足

2020 年 6 月 9 日

HID 描述符解析错误

2020 年 7 月 8 日

多重漏洞

2020 年 7 月 8 日

竞态条件与释放后使用

2020 年 8 月 5 日

内存损坏

2020 年 8 月 5 日

多重漏洞

2020 年 8 月 5 日

权限提升

2020 年 9 月 2 日

释放后使用 bug

2020 年 9 月 2 日

堆溢出

2020 年 9 月 15 日

数据包内数据包攻击

2020 年 9 月 15 日

通过 VMCS 的权限提升

2020 年 9 月 15 日

SVM 客户机逃逸

2020 年 9 月 15 日

权限提升

勘误通知

错误通告
日期
主题

2019 年 11 月 12 日

UEFI 加载器内存碎片化

2020 年 1 月 28 日

不精确的 canary 初始化顺序

2020 年 3 月 18 日

登录成功时的误导性日志消息

2020 年 3 月 18 日

修复数据包转发性能

2020 年 3 月 18 日

错误的校验和计算

2020 年 4 月 21 日

与某些 NFS 服务器的回归问题

2020 年 5 月 12 日

时区数据库更新

2020 年 5 月 12 日

修复无法切换到非活动状态的问题

2020 年 5 月 12 日

错误的构建主机 clang 版本检测

2020 年 6 月 9 日

ena(4) 稳定性问题

2020 年 6 月 9 日

看门狗超时重置空闲队列

2020 年 7 月 8 日

PCI 设备直通时崩溃

2020 年 7 月 8 日

内核 panic

2020 年 7 月 8 日

内核 panic

2020 年 8 月 5 日

数据包丢失与性能下降

2020 年 9 月 2 日

内核 panic

用户空间

本节介绍了对用户空间应用程序、第三方软件和系统实用程序的变更和新增内容。

用户空间配置变更

新增了 rc.conf(5) 变量 linux_mounts_enable,用于控制在设置 linux_enable 为 YES 时是否在 /compat/linux 中挂载 Linux 特定的文件系统。[r364883](由 FreeBSD 基金会赞助)

devd(8) 工具已更新,默认的 syslogd(8) 恢复通知已从 kern 改为 kernel。[r365540]

用户空间应用程序变更

cron(8) 工具已更新,支持在 crontab(5) 中使用两个新选项,-n 和 -q,分别用于抑制成功运行时的邮件通知和抑制命令执行的日志记录。[r353134]

dd(1) 工具已更新,包含以下新操作符:[r355520]

  • conv=fsync

  • conv=fdatasync

  • oflag=fsync

  • oflag=sync

  • iflag=fullblock

使用方法详见 dd(1)。

fsck_msdosfs(8) 工具已更新,包含多项增强功能,包括减少内存占用、新增选项 -M(该选项禁用 mmap(2) 的使用)等。[r357568]

showmount(8) 工具已更新,支持长选项。[r357078]

新增了 certctl(8) 工具。[r357082]

syslogd(8) 工具已更新,增加了基于属性的过滤器。[r359739]

mountd(8) 工具已更新,修复了在某些条件下使用 -maproot 或 -mapall 导出时,组列表不正确的问题。[r362602]

sed(1) 工具已更新,在指定 -f - 时从 stdin(4) 读取命令。[r362687]

hostapd(8) 和 wpa_supplicant(8) 工具已更新,以支持 802.11n、802.11w、802.11ac 和 802.11ax。[r363441]

sesutil(8) 工具已更新,新增子命令 show,以用户友好的方式打印输出。[r364115]

bhyve(8) 工具已更新,支持设置额外的 AHCI 控制器参数。[r364334]

jail(8) 工具已更新,允许在 Jail 环境中运行 Linux。

第三方软件

tcsh(1) 工具已更新至版本 6.21.00。[r354191](由 DARPA, AFRL 赞助)

less(1) 工具已更新至版本 v551。[r355503]

libbsdxml(3) 库已更新至版本 2.2.9。[r355603]

resolvconf(8) 工具已更新至版本 3.9.2。[r355745]

pcap(3) 库已更新至版本 1.9.1。[r356340]

tcpdump(1) 工具已更新至版本 4.9.3。[r356340]

mtree(8) 工具已更新,修复了 -f 未考虑类型变化的问题,修正了当 getlogin(2) 失败时使用 -c 的用户名逻辑问题,并修复了当发生哈希冲突时 -O 无法深入的问题。[r356532]

Elf 工具链已更新至上游版本 r3769。[r358779](由 FreeBSD 基金会赞助)

xz(1) 工具已更新至版本 5.2.5。[r359635]

OpenSSH 已更新至版本 7.9p1。[r360313](由 FreeBSD 基金会赞助)

时区数据库文件已更新至版本 2020a。[r360361]

unbound(8) 工具已更新至版本 1.10.1。[r361435]

libarchive(3) 库已更新至版本 3.4.3。[r362132]

私有的 apr 库已更新至版本 1.7.0。[r362180]

svn{,lite} 工具已更新至版本 1.14.0 LTS。[r362180]

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

file(1) 工具已更新至版本 5.39。[r362842]

bc(1) 工具已更新至版本 3.1.1。[r362987]

私有的 sqlite3 工具已更新至版本 3.32.3。[r363179]

BSD make(1) 工具已更新至版本 20200719。[r363352]

Sendmail 工具已更新至版本 8.16.1。[r363465]

nc(1) 工具已更新,新增选项 --sctp。[r363474]

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

OpenSSL 已更新至版本 1.1.1h。[r366177]

已弃用应用程序

amd(8) 工具已标记为弃用,并计划在 FreeBSD 13.0 中移除。[r355075]

运行时库和 API

已更新 ifconfig 库,以类似 lagg(4) 的方式报告 bridge(4) 接口的状态。[r363037]

内核

本节涉及了内核配置、系统调优和系统控制参数的变更,未在其他类别中归类的内容。

内核通用变更

read(2) 系统调用已变更,默认情况下禁用对目录的 read() 调用。新增了 sysctl(8) 变量 security.bsd.allow_read_dir,设置为 1 时,将恢复之前的行为。[r363017]

现在在 FreeBSD/powerpc64 上默认启用驱动程序 ixl(4)。[r363712]

machdep.kdb_on_nmi sysctl(8) 已移除。可调参数 machdep.panic_on_nmi sysctl(8) 已变更为直接进入调试器。[r364002]

新增了对 APEI(ACPI 平台错误接口)的支持。[r364003](由 iXsystems 赞助)

设备与驱动

本节涉及自 12.1-RELEASE 以来对设备及其驱动程序的变更和新增。

设备驱动程序

ubsec(4) 驱动程序已标记为弃用,并将在 FreeBSD 13.0 中移除。[r361044]

ufm(4) 驱动程序已标记为弃用,并将在 FreeBSD 13.0 中移除。[r364431]

apm(4) 驱动程序已标记为弃用,并将在 FreeBSD 13.0 中移除。[r365542]

ctau(4) 和 cx(4) 驱动程序已标记为弃用,并将在 FreeBSD 13.0 中移除。[r365542](由 FreeBSD 基金会赞助)

存储

本节涉及文件系统和其他存储子系统的变更和新增,包括本地存储和网络存储。

通用存储

已从 32 位 GENERIC 内核配置中移除驱动程序 mps(4)。[r352741]

virtio_blk(4) 驱动程序已更新,以支持 TRIM。[r365702](由 Klara Systems 赞助)

已更新 ZFS 文件系统,支持每个数据集的读写 kstat 输出。[r365917](由 Klara Systems 赞助)

引导加载程序变更

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

引导加载程序变更

现在在引导加载程序中显示控制台,可以在可用的控制台设备之间切换。[r366691]

网络

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

通用网络

tap(4) 和 tun(4) 设备已更新,以便在重命名时创建 /dev 别名。[r354060]

ipfw(4) 驱动程序已更新,支持 RFC6598/Carrier Grade NAT 子网。[r359694]

ng_nat(4) 驱动程序已更新,允许附加到以太网接口。[r359697]

ixl(4) 驱动程序已更新至版本 1.11.29。[r363876](由 Intel Corporation 赞助)

ena(4) 驱动程序已更新至版本 2.2.0。[r365381](由 Amazon, Inc. 赞助)

更新了无线网络栈和各种驱动程序,以提供更好的 802.11n 和 802.11ac 支持。[r365670](由 Rubicon Communications, LLC (Netgate) 赞助)

ice(4) 驱动程序已添加,支持 Intel 100Gb 以太网卡。[r365733](由 Intel Corporation 赞助)

cxgbe(4) 驱动程序已更新至版本 1.25.0.0。[r365961](由 Chelsio Communications 赞助)

Ports 和软件包基础设施

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

软件包变更

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

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

默认 CPUTYPE 变更

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

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

由于 i486 和 i586 CPU 主要用于嵌入式市场,因此对一般终端用户的影响预计是最小的,因为这些 CPU 类型的新硬件早已逐渐消失,而且许多此类系统的部署基础已接近退役年限,按统计数据来看。

在做出这一变更时考虑了多个因素。例如,i486 不支持 64 位原子操作,虽然它们可以在内核中模拟,但无法在用户空间中模拟。此外,32 位 amd64 库自诞生以来一直是 i686。

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

这预计将是 i386 默认 CPUTYPE 的最终提升。

重要:此变更不影响 FreeBSD 12.x 或 11.x 版本系列。

最后更新于