github编辑

FreeBSD 13.1-RELEASE 发行说明(2022 年 5 月 16 日)

摘要

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

引言

本文件包含 FreeBSD 13.1-RELEASE 的发行说明,介绍了最近添加、变更或删除的功能,同时提供了从 FreeBSD 早期版本升级的相关说明。

本发行说明适用于 FreeBSD 13-STABLE 开发分支中自创建以来的最新节点。有关此分支上预构建的二进制发行版的信息,请访问 https://www.FreeBSD.org/releases/arrow-up-right

本发行说明所涉的发行版,位于 13-STABLE 开发分支中 13.0-RELEASE 和未来 13.2-RELEASE 之间的某一节点。有关此分支上预构建的二进制发行版的信息,请访问 https://www.FreeBSD.org/releases/arrow-up-right

FreeBSD 13.1-RELEASE 是个 RELEASE 发行版,可以从 https://www.FreeBSD.org/releases/arrow-up-right 或其任一镜像站下载。关于获取此版本(或其他版本)发行版的更多信息,请参阅 FreeBSD 手册arrow-up-right 中的 获取 FreeBSD 附录arrow-up-right

建议所有用户在安装 FreeBSD 之前,查阅发行版的勘误表。勘误表包含在发行周期后期或发行后发现的“最新信息”,通常包括已知错误、安全公告以及文档修订的相关内容。可在 FreeBSD 网站上找到 FreeBSD 13.1-RELEASE 的最新勘误表副本。

本文件介绍了自 13.0-RELEASE 以来,FreeBSD 中对用户最显著的新功能或变更。一般而言,本文中提到的变更是 13-STABLE 分支所独有的,除非明确标记为已合并功能。

发行说明通常记录自 13.0-RELEASE 以来发布的安全公告、新驱动程序或硬件支持、新命令或选项、重大错误修复或第三方软件升级。此外,还可能列出主要的 Port/软件包变更或发行工程实践的更新。显然,发行说明无法列出两个版本之间 FreeBSD 的每一处变更;本文件主要关注安全公告、用户可见的变更以及主要的架构改进。

从旧版 FreeBSD 升级

通过 freebsd-update(8)arrow-up-right 工具,可以在不同 RELEASE 版本之间(包括各安全分支的快照版本)进行二进制升级。该工具将更新未修改的用户空间工具,以及官方 FreeBSD 发行版中包含的未修改的 GENERIC 内核。使用 freebsd-update(8)arrow-up-right 工具要求待升级的主机具备互联网连接。

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

对于所有 powerpc 架构的用户,在成功安装内核和世界后,需要手动运行 kldxref /boot/kernel

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

升级后,sshd(来自 OpenSSH 8.8p1)在重新启动之前不会接受新的连接。在安装新用户空间后,要么按照源代码升级程序的要求重启系统,要么执行 service sshd restart 来重启 sshd 服务。

用户空间

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

用户空间配置变更

参数 -i 现在默认添加了到 /etc/defaults/rc.conf 中的 rtsol(8)arrow-up-rightrtsold(8)arrow-up-right。变更详情见 a0fc5094bf4carrow-up-right(由 https://www.patreon.com/cpercivaarrow-up-right 赞助)。

用户空间应用程序变更

rtsol(8)arrow-up-rightrtsold(8)arrow-up-right 中添加了 -i 选项,用于禁用 0 到 1 秒的随机延迟,从而加快启动过程。8056b73ea163arrow-up-right(由 https://www.patreon.com/cpercivaarrow-up-right 赞助)

对于 64 位架构,基本系统现在默认启用位置无关可执行文件(PIE)支持。可以通过开关 WITHOUT_PIE 禁用该功能,需要进行完全重新编译。396e9f259d96arrow-up-right

新增了 zfskeys rc(8)arrow-up-right 服务脚本,允许在启动过程中自动解密使用 ZFS 原生加密的 ZFS 数据集。更多信息请参考 rc.conf(5)arrow-up-right 手册。33ff39796ffearrow-up-right8719e8a951b7arrow-up-right(由 Modirum 和 Klara Inc. 赞助)

bhyve(8)arrow-up-right 的 NVMe 仿真已升级至 NVMe 规范的 1.4 版本。b7a2cf0d9102arrow-up-right eae02d959363arrow-up-right

修复了 bhyve(8)arrow-up-right 中构建大 IO 的 NVMe iovec 的问题,该问题由 Rocky Linux 8.4 附带的 UEFI 驱动暴露出来。a7761d19dacdarrow-up-right

为巴西葡萄牙语 ABNT2 键盘添加了额外的 Alt Gr 映射。310623908c20arrow-up-right

chroot 现在支持非特权操作,chroot(8)arrow-up-right 程序增加了 -n 选项以启用该功能。460b4b550dc9arrow-up-right(由 EPSRC 赞助)

修改了 CAM 库以在解析设备名称之前使用 realpath(3)arrow-up-right,从而允许诸如 camcontrol(8)arrow-up-rightsmartctl(8)arrow-up-right 之类的工具在使用符号链接时更加友好。e32acf95ea25arrow-up-right

通过在程序名称以 sum 结尾时让相应的 BSD 程序运行 -r 选项,添加了兼容 Linux 的 md5sum(1)arrow-up-right 和类似的消息摘要程序。c0d5665be0dcarrow-up-right(由奈飞赞助)

svnlite(1)arrow-up-right 默认在构建中禁用。a4f99b3c2384arrow-up-right

mpsutil(8)arrow-up-right 扩展以显示适配器信息并控制 NCQ。395bc3598b47arrow-up-right

修复了使用 camcontrol(8)arrow-up-right 下载固件后设备出现的问题,方法是在下载固件后强制重新扫描 LUN。327da43602ccarrow-up-right(由奈飞赞助)

第三方软件

在所有 PowerPC 架构上已启用 LLDB 的构建支持。cb1bee9bd34arrow-up-right

  • One True Awk 已更新为上游的最新版本(20210215)。除了一个补丁外,FreeBSD 的所有补丁已被上游接纳或移除。主要变更包括:

    • 范围不再使用区域设置。

    • 修复了各种错误。

    • 提高了与 gawkmawk 的兼容性。 剩下的一个 FreeBSD 修改可能会在 FreeBSD 14 中移除,目前依然允许将以 0x 为前缀的十六进制数解析并解释为十六进制数,而其他 awk 实现(现在包括 One True Awk)将其解释为 0,符合 awk 的历史行为。

  • zlib 升级到版本 1.2.12。

  • libarchive 升级到版本 3.6.0,并包含即将发布的修补程序版本中的额外错误和安全修复。发布说明可在 https://github.com/libarchive/libarchive/releasesarrow-up-right 查看。

  • ssh 包已更新为 OpenSSH v8.8p1,包含安全更新和错误修复。其他更新包括以下变更:

    • ssh(1)arrow-up-right:在提示是否记录新主机密钥时,接受该密钥的指纹作为“yes”的同义词。

    • ssh-keygen(1)arrow-up-right:作为 CA 并使用 RSA 密钥签署证书时,默认使用 rsa-sha2-512 签名算法。

    • ssh(1)arrow-up-right:默认启用 UpdateHostkeys,但受到一些保守条件的限制。

    • scp(1)arrow-up-right:远程到远程复制(如 scp host-a:/path host-b:)的行为已变更,默认通过本地主机传输。

    • scp(1)arrow-up-right:实验性支持使用 SFTP 协议进行传输,以替代传统的 SCP/RCP 协议。

ssh 中启用了对 FIDO/U2F 硬件认证器的支持,新增了 ecdsa-sked25519-sk 公钥类型以及相应的证书类型。有关 FIDO/U2F 支持的描述请参考 https://www.openssh.com/txt/release-8.2arrow-up-righta613d68fff9aarrow-up-right(由 FreeBSD 基金会赞助)

bsdinstall(8)arrow-up-right 的脚本分区编辑器新增了一种新模式,用于支持变体磁盘名称。如果 DEFAULT 被设置为磁盘参数,或者在 PARTITIONS 参数中未指定设备名称,安装程序将遵循自动分区模式的逻辑。如果存在多个磁盘,将提供选择对话框;如果只有一个磁盘,则会自动选择。这简化了为硬件或虚拟机创建全自动安装介质的过程。5ec4eb443e81arrow-up-right

运行时库与 API

为 powerpc、powerpc64 和 powerpc64le 添加了 OpenSSL 的汇编优化代码。ce35a3bc852arrow-up-right

修复了对 ARMv7 和 ARM64 加速加密操作的 CPU 特性检测,大幅提升了 aes-256-gcmsha256 的性能。32a2fed6e71farrow-up-right(由 Ampere Computing LLC 和 Klara Inc. 赞助)

启用了 riscv64 和 riscv64sf 平台上的 ASAN 和 UBSAN 库的构建支持。8c56b338da7arrow-up-right

在 riscv64 和 riscv64sf 平台上构建了 OFED 库。2b978245733arrow-up-right

在 riscv64 和 riscv64sf 平台上构建了 OPENMP 库。aaf56e35569arrow-up-right

内核

本部分涉及内核配置、系统调优以及未分类的系统控制参数的变更。

通用内核变更

修复了 powerpc64 平台上串行控制台的输出损坏问题。dca829138caarrow-up-right

CAS 已变更为支持 Radix MMU。cc8e726c85barrow-up-right

修复了在 QEMU 的 TCG 模式下运行启用了 HPT 超页的 FreeBSD 于 powerpc64(le) 平台的问题。f05174ed354arrow-up-right

在 powerpc64(le) 平台上的 pmap_mincore 添加了对超页的支持。32b50b8520darrow-up-right

在 arm64 平台上为 32 位 ARM 二进制文件添加了 HWCAP/HWCAP2 辅助参数支持。这修复了在 COMPAT32 仿真下构建/运行 Golang 的问题。28e22482279farrow-up-right(由 Rubicon Communications, LLC ("Netgate") 赞助)

设备与驱动

本部分介绍了自 13.0-RELEASE 以来,设备和设备驱动的变更和新增内容。

设备驱动

引入了 igc(4)arrow-up-right 驱动程序,用于支持 Intel I225 以太网控制器。该控制器支持 2.5G/1G/100Mb/10Mb 速度,并支持 tx/rx 校验和卸载、TSO、LRO 和多队列操作。d7388d33b4ddarrow-up-right(由 Rubicon Communications, LLC ("Netgate") 赞助)

修复了 powerpc64(le) 平台在启动过程中使用 AST2500 时,VGA/HDMI 控制台的问题。c41d129485earrow-up-right

修复了 virtio(4)arrow-up-right 驱动中大端目标设备的 PCI 通用读写功能。7e583075a41arrow-up-right, 8d589845881arrow-up-right

为驱动 mpr(4)arrow-up-right 添加了大端支持。7d45bf699dcarrow-up-right, 2954aedb8e5arrow-up-right, c80a1c1072darrow-up-right

降低了驱动 aacraid(4)arrow-up-right 的最大 I/O 大小以避免 DMA 问题。572e3575dbaarrow-up-right

修复了驱动 virtio_random(8)arrow-up-right 阻止虚拟机客户机关机或重启的问题。fa67c45842bbarrow-up-right

更新了驱动 ice(4)arrow-up-right 至 1.34.2-k,增加了固件日志记录功能和初步的 DCB 支持。a0cdf45ea1d1arrow-up-right(由英特尔公司赞助)

添加了网络接口驱动程序 mgb(4)arrow-up-right ,支持 Microchip 的 LAN7430 PCIe 千兆以太网控制器(带 PHY)和 LAN7431 PCIe 千兆以太网控制器(带 RGMII 接口)。尽管该驱动仍存在一些限制,但功能已可用。e0262ffbc6aearrow-up-right(由 FreeBSD 基金会赞助)

cdce(4)arrow-up-right 设备添加了链路状态、媒体类型和 VLAN MTU 的支持。973fb85188eaarrow-up-right

添加了 iwlwifi(4)arrow-up-right 驱动和一个 LinuxKPI 802.11 兼容层,用于支持较新的 Intel 无线芯片组,以补充 iwm(4)arrow-up-right 驱动。(由 FreeBSD 基金会赞助)

当内核使用选项 MMCCAM 配置时,现在可以使用 dwmmc 控制器将内核崩溃转储保存到 SD 卡和 eMMC 模块。79c3478e76c3arrow-up-right

当内核使用选项 MMCCAM 配置时,现在可以使用 sdhci 控制器将内核崩溃转储保存到 SD 卡。8934d3e7b9b9arrow-up-right

支持的平台

新增对 HiFive Unmatched RISC-V 开发板的支持。

存储

本部分涉及文件系统及其他存储子系统(包括本地和网络存储)的变更与新增内容。

通用存储

暂无具体变更说明。

ZFS 变更

ZFS 已升级至 OpenZFS 2.1.4 版本。OpenZFS 的发行说明可参阅 https://github.com/openzfs/zfs/releasesarrow-up-right

NFS 变更

  • 默认在 amd64arm64 架构上构建了两个新的守护程序 rpc.tlsclntd(8)arrow-up-rightrpc.tlsservd(8)arrow-up-right。它们提供了对基于 TLS 的 NFS 加密支持,该功能描述于《Towards Remote Procedure Call Encryption By Default》草案中。这些守护程序在指定 WITH_OPENSSL_KTLS 时构建,使用 KTLS 加密/解密所有 NFS RPC 消息流量,并可选择通过 X.509 证书验证设备身份。2c76eebca71barrow-up-right 59f6f5e23c1aarrow-up-right

  • 默认的 NFSv4 挂载次版本号已变更为 NFSv4 服务器所支持的最高次版本号。用户可通过挂载选项 minorversion 手动覆盖此默认值。8a04edfdcbd2arrow-up-right

  • 新增了 NFSv4.1/4.2 的挂载选项 nconnect,用于指定挂载所使用的 TCP 连接数量(最多 16 个)。默认的第一个 TCP 连接将用于所有小型 RPC 消息,而可能包含大型 RPC 消息的操作(如 Read、Readdir、ReaddirPlus、Write)将在额外的 TCP 连接上以轮询方式发送。如果 NFS 客户端或服务器具有多个聚合的网络接口或支持多队列的网络接口,则此功能可以提高 NFS 的性能。9ec7dbf46b0aarrow-up-right

  • 添加了 sysctl 配置项 vfs.nfsd.srvmaxio,用于将 NFS 服务器的最大 I/O 大小从 128KB 增加到任意 2 的幂值(最高 1MB)。该选项只能在 nfsd 线程未运行时设置,且通常需要将 kern.ipc.maxsockbuf 增加至控制台日志中建议的值。9fb6e613373carrow-up-right

UFS 变更

修复了 fsck_ffs(8)arrow-up-right 工具在预检模式下处理启用软更新(但未启用软更新日志)的 UFS 时无法正常运行的问题。fb2feceac34carrow-up-right

引导加载程序的变更

本部分涉及引导加载程序、引导菜单和其他引导相关的变更内容。

引导加载程序的变更

  • UEFI 引导改进(amd64): 针对 amd64 架构改进了 UEFI 引导。加载器会检测所加载的内核是否支持原位暂存区(非复制模式)。默认设置为 copy_staging auto。用户可以通过手动覆盖自动检测,例如:设置 copy_staging enable 时,加载器会无条件将暂存区复制到 2M 地址,无论内核是否支持。此外,扩展暂存区的代码更为稳健,用户无需手动调整和重新编译加载器即可完成扩展。(由 FreeBSD 基金会arrow-up-right 赞助)

  • 修复 boot1loader 在 powerpc64le 架构上的问题8a62b07bce7arrow-up-right

其他引导变更

网络

本部分介绍了 FreeBSD 中影响网络功能的变更。

通用网络

关于后续 FreeBSD 版本的说明

暂无具体变更内容。

默认 CPUTYPE 变更

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

这意味着默认生成的二进制文件将需要支持 686 级别的 CPU,包括但不限于由 FreeBSD 发布工程团队提供的二进制文件。尽管 FreeBSD 13.0 仍将支持较旧的 CPU,但需要此功能的用户需自行构建其专属版本以获得官方支持。

由于 i486 和 i586 CPU 的主要应用通常在嵌入式市场,普通终端用户受此变更的影响预计会非常有限。新硬件中这些类型的 CPU 早已不常见,而大部分现有系统的硬件也接近使用寿命的尾声。

作出这一变更考虑了多个因素。例如,i486 不支持 64 位原子操作(atomics),虽然内核可以模拟这些操作,但在用户态(userland)中无法实现。此外,32 位 amd64 库自开始以来便已采用 i686。

大多数 32 位测试由开发者通过在 64 位硬件上使用内核中的选项 COMPAT_FREEBSD32 和 lib32 库完成。此变更可提供更好的覆盖范围和用户体验,同时符合大多数 Linux® 发行版的长期做法。

这预计将是 i386 架构中默认 CPUTYPE 的最后一次升级。

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

最后更新于