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/ 或其镜像网站上找到。有关获取此版本(或其他版本)的更多信息,请参见 FreeBSD 手册 中的 获取 FreeBSD 附录。
所有用户在安装 FreeBSD 之前都被鼓励查阅发布错误文档。该错误文档会在发布周期结束时或发布后更新,提供“突发”信息。通常,它包含已知的错误、安全通告和文档修正。可以在 FreeBSD 网站上找到最新的 FreeBSD 12.2-RELEASE 错误文档副本。
本文档介绍了自 12.1-RELEASE 以来 FreeBSD 中最显著的新功能或变更。通常,文中描述的变更是 12-STABLE 分支特有的,除非特别标注为合并特性。
典型的发布说明条目记录了自 12.1-RELEASE 以来发布的安全通告、新驱动程序或硬件支持、新命令或选项、主要 bug 修复或第三方软件升级。它们还可能列出对主要 Port/包或发布工程实践的变更。显然,发布说明无法列出所有版本之间对 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 日
2020 年 1 月 28 日
内核栈数据泄漏
2020 年 3 月 18 日
TCP IPv6 SYN 缓存内核信息泄漏
2020 年 3 月 18 日
2020 年 3 月 18 日
2020 年 3 月 18 日
错误的用户控制指针使用
2020 年 3 月 18 日
嵌套 Jail 导致的内核内存泄漏
2020 年 3 月 18 日
多重拒绝服务
2020 年 4 月 21 日
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 日
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
conf=fdatasync
oflag=fsync
oflag=sync
iflag=fullblock
有关使用详情,请参见 dd(1)。
已更新工具 fsck_msdosfs(8) ,包含多项增强功能,包括减少内存占用、新的参数 -M
,该参数禁用 mmap(2) 的使用等。 [r357568]
已更新工具 showmount(8) ,支持长选项。 [r357078]
新增了 man: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](由美国国防高级研究计划局和美国空军研究实验室赞助)
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]
已更新 ifconfig
库,以类似 lagg(4) 的方式报告 bridge(4) 接口的状态。 [r363037]
本节涉及了内核配置、系统调优和系统控制参数的变更,未在其他类别中归类的内容。
read(2) 系统调用已变更,默认情况下禁用对目录的 read()
调用。新增了 sysctl(8) 选项 security.bsd.allow_read_dir
,设置为 1
时,将恢复之前的行为。 [r363017]
现在在 FreeBSD/powerpc64 上默认启用驱动程序 ixl(4) 。 [r363712]
已移除 sysctl(8) machdep.kdb_on_nmi
。可调选项 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](由英特尔公司赞助)
已更新驱动程序 ena(4) 到版本 2.2.0。 [r365381](由亚马逊公司赞助)
对无线网络堆栈和各种驱动程序进行了更新,以提供更好的 802.11n 和 802.11ac 支持。 [r365670](由 Rubicon Communications, LLC (Netgate) 赞助)
ice(4)
驱动程序已添加,支持 Intel® 100Gb 以太网卡。 [r365733](由英特尔公司赞助)
已更新驱动程序 cxgbe(4) 到版本 1.25.0.0。 [r365961](由 Chelsio Communications 赞助)
本节涉及 FreeBSD Ports、包基础设施以及包维护和安装工具的变更。
已更新工具 pkg(8) 到版本 1.15.10。
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 版本系列。
缓冲区溢出
权限检查不足
权限检查不足
无效的 处理
稳定性问题