Skip to content

Latest commit

 

History

History
251 lines (125 loc) · 23 KB

freebsd-13.2-fa-hang-shuo-ming.md

File metadata and controls

251 lines (125 loc) · 23 KB

FreeBSD 13.2-RELEASE 发行说明(2023 年 4 月 11 日)

摘要

FreeBSD 13.2-RELEASE 的发布说明包含了自 13-STABLE 开发线以来对 FreeBSD 基本系统所做变更的摘要。本文件列出了自上次发布以来发布的相关安全通告,以及对 FreeBSD 内核和用户态的重大变更。此外,还提供了有关升级的一些简要说明。

介绍

本文档包含 FreeBSD 13.2-RELEASE 的发布说明。它介绍了最近添加、变更或删除的 FreeBSD 特性,并提供了一些关于从之前版本升级的说明。

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

这些发布说明适用于位于 13-STABLE 开发分支上的一个版本点,该版本位于 13.1-RELEASE 和未来的 13.3-RELEASE 之间。有关该分支上的预构建二进制发行版的信息,请访问 https://www.FreeBSD.org/releases/

该 FreeBSD 13.2-RELEASE 的分发版是一个正式的 RELEASE 版本。可以在 https://www.FreeBSD.org/releases/ 和镜像站点找到。有关获取此版本(及其他)FreeBSD 发行版的更多信息,请参见 FreeBSD 手册中的获取 FreeBSD 附录

所有用户在安装 FreeBSD 之前都应查阅发布错误文档。错误文档会更新一些在发布周期末期或发布后发现的“突发”信息。通常,它包含已知的漏洞、安全通告以及文档的修正。FreeBSD 13.2-RELEASE 的最新错误文档可以在 FreeBSD 网站上找到。

本文档介绍了自 13.1-RELEASE 以来 FreeBSD 中最具用户可见性的新增或变更功能。一般来说,本文所述的变更是 13-STABLE 分支的特有变更,除非特别标记为已合并特性。

典型的发布说明项包括发布后的安全通告、新的驱动程序或硬件支持、新命令或选项、重大错误修复或第三方软件升级。它们也可能列出对主要 Port/软件包或发布工程实践的变更。显然,发布说明无法列出两个版本之间对 FreeBSD 所做的每个变更;本文件主要关注安全通告、用户可见的变更以及重大架构改进。

从先前版本升级 FreeBSD

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

支持基于源代码的升级(即从源代码重新编译 FreeBSD 基本系统)到先前版本,具体按 /usr/src/UPDATING 中的说明进行操作。

所有 PowerPC 架构的用户,在成功安装内核和世界之后,必须手动运行 kldxref /boot/kernel

升级 FreeBSD 之前应备份 所有 数据和配置文件。

安装新用户态软件后,正在运行的守护进程仍来自先前版本。在通过第二次调用 freebsd-update 安装用户级组件,或通过使用 installworld 从源代码进行升级后,系统应重新启动以启动新软件。例如,旧版本的 sshd 在安装新版本的 /usr/sbin/sshd 后无法正确处理传入连接;重启后,新的 sshd 和其他守护进程将启动。

用户态

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

用户态配置变更

growfs(7) 启动脚本现在将在扩展根文件系统时添加交换分区(如果可能),且如果之前未存在交换分区。这在使用原始映像安装到 SD 卡时尤其有用。新增了 rc.conf(5) 变量 growfs_swap_size,可以根据需要控制交换分区的添加。详细信息请参见 growfs(7)

zfskeys 启动脚本支持自动加载存储在 ZFS 上的密钥。2411090f6940(由 Klara Inc. 赞助)

新增了 RC 脚本 zpoolreguid,用于为一个或多个 zpool 分配新的 GUID,在虚拟化环境中共享数据集时非常有用。

hostid 启动脚本现在将在没有 /etc/hostid 文件且硬件没有有效 UUID 时生成一个随机(版本 4)UUID。此外,如果没有 /etc/machine-id 文件,hostid_save 脚本将把一个压缩版的 hostid(没有连字符的版本)存储在 /etc/machine-id 中。此文件由 GLib 等库使用。17333d92643d a379d5c5efb2 71d88613d129

现在可以通过使用变量 defaultrouter_fibNipv6_defaultrouter_fibN rc.conf(5) ,为除主路由表外的其他 FIB 添加默认路由。c6ec1b441ad3(由 ScaleEngine Inc. 赞助)

用户态应用程序变更

工具 bhyve(8) 新增了 virtio-input 设备仿真支持。这将用于将键盘/鼠标输入事件注入到客户机中。命令行语法为:-s <slot>,virtio-input,/dev/input/eventX6192776124c5

工具 kdump(1) 新增了对 Linux 系统调用的解码支持。

工具 killall(1) 现在允许通过语法 -t pts/N 向具有其控制终端的进程发送信号,pts(4) 中使用。a76fa7bb6cb7

新增工具 nproc(1) ,与同名的 Linux 程序兼容。

工具 timeout(1) 已从 /usr/bin 移动到 /bin

工具 pciconf(8) 新增了对解码 ACS 扩展能力的支持。dde4103a465b(由 Chelsio Communications 赞助)

工具 procstat(1) 现在可以通过新增的 advlock 命令打印关于文件的建议锁的信息。f9daaf452a8a

工具 pwd_mkdb(8) 工具不再将 /etc/master.passwd 中的注释复制到 /etc/passwd 中。3e955733117d

MSS clamping 在 ppp(8) 中得到了改进。301bff9bdd62

prometheus_sysctl_exporter(8) 中变更了指标别名,以避免由于冲突的指标名称而混淆 Prometheus 服务器。UMA 区域 tcp_log_bucket 已重命名为 tcp_log_id_buckettcp_log_node 被重命名为 tcp_log_id_node 以保持一致性。不再导出描述中带有 (LEGACY) 的 sysctl 变量,这些变量是由 sysctl ZFS 替换的,许多已别名为相同的 Prometheus 指标名称(如 vfs.zfs.arc_maxvfs.zfs.arc.max)。e4f508d5a211(由 Axcient 赞助)

uuidgen(1) 工具新增了 -r 选项,用于生成随机 UUID,版本 4。8fd1953b7eb2

当由 inetd(8) 调用时,ctlstat -P 现在将生成适合 Prometheus 导入的输出;详见 ctlstat(8)f7896015fcde(由 Axcient 赞助)

第三方软件

Gavin Howard 的 bc 已升级到版本 6.2.4。

expatlibbsdxml)已升级到版本 2.5.0。

file 已升级到版本 5.43。

less 已升级到版本 608。

libarchive 已升级到版本 3.6.2,修复了许多可靠性问题。发布说明可查看 https://github.com/libarchive/libarchive/releases

libedit 已升级到版本 2022-04-11。

LLVMclang 编译器已升级到版本 14.0.5。

现已在 powerpc64 及其变体上启用支持的 LLVM sanitizers。

mandoc 已升级到版本 1.14.6。

OpenSSH 已升级到版本 9.3p1。

OpenSSL 已升级到版本 1.1.1t。

sendmail 已升级到版本 8.17.1。68e86d5265bc

sqlite3 已升级到版本 3.40.1。

tzcode 已升级到版本 2022g,改进了时区变化检测并修复了可靠性问题。

tzdata 已升级到版本 2023c。

unbound 已升级到版本 1.17.1。

xz 已升级到版本 5.4.1。

xz-embedded 已升级到版本 3f438e15109229bb14ab45f285f4bff5412a9542。

zlib 已升级到版本 1.2.13。

运行时库和 API

libmd 增加了对 SHA-512/224 的支持。e04ee7d95ef6(由 Klara, Inc. 赞助)

现已支持 Linux 风格的系统调用跟踪,通过 sysdecode(3)kdump(1)

本地 pthread 库函数现在可以支持 Linux 语义。

内核

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

一般内核变更

bhyve(8) 虚拟机监控器和内核模块 vmm(4) 现在支持在虚拟机中使用超过 16 个 vCPU。默认情况下,bhyve 允许每个虚拟机创建与主机物理 CPU 数量相同的 vCPU。此限制可以通过加载器调节选项 hw.vmm.maxcpu 来调整。3e02f8809aec

默认启用了 64 位可执行文件的地址空间布局随机化(ASLR)。如果应用程序出现意外故障(例如,段错误),可以根据需要禁用 ASLR。要禁用单次调用,可以使用 proccontrol(1) 命令:proccontrol -m aslr -s disable command。要禁用所有二进制文件的 ASLR 调用,可以使用 elfctl(1) 命令:elfctl -e +noaslr file。问题应通过问题报告系统 https://bugs.freebsd.org 提交,或通过 [email protected] 邮件列表报告。10192e77cfac(由 Stormshield 赞助)

已实现针对 Intel Alder Lake(第十二代)和 Raptor Lake(第十三代)混合 CPU 的硬件页面失效问题的解决方法。该漏洞可能导致 UFS 和 MSDOSFS 文件系统损坏,并可能导致其他内存损坏。通过此解决方法,小核(E 核心)会自动使用较慢的页面失效方法。567cc4e6bfd9(由 FreeBSD 基金会赞助)

新增内核配置选项 SPLIT_KERNEL_DEBUG,用于控制将内核和模块的调试数据分割成独立的文件。该选项与选项 WITHOUT_KERNEL_SYMBOLS 相互作用,后者的操作方式与 13.0-RELEASE 和 13.1-RELEASE 中不同,但与早期版本相似;它现在仅控制调试数据的安装。默认情况下为 WITH_KERNEL_SYMBOLSWITH_SPLIT_KERNEL_DEBUG,允许将不含调试数据的内核和模块安装在 /boot 中,将独立的调试文件安装在 /usr/lib/debug 中,这与 13.0-RELEASE 之前的版本相同。使用 WITHOUT_KERNEL_SYMBOLSWITH_SPLIT_KERNEL_DEBUG 时,生成独立的调试文件,但不安装,类似于早期版本中使用 WITHOUT_KERNEL_SYMBOLS 的情况。最后,使用 WITHOUT_KERNEL_SYMBOLSWITHOUT_SPLIT_KERNEL_DEBUG 时,将内核和模块与内置调试信息一起安装到 /boot 中,这与 13.1-RELEASE 中使用 WITHOUT_KERNEL_SYMBOLS 的情况相同。0c4d13c521aa(由 FreeBSD 基金会赞助)

在 PowerPC 上,支持 pseries 的 ISA 3.0 中的 radix pmap。这应使得 pseries 在 POWER9 实例上显著加速,因为现在管理 pmap 所需的超调用更少。c74c77531248

现已在 arm64 上为 Linux 进程提供 ptrace(2) 支持。99950e8beb72

为了提高 stable 分支的 ABI 兼容性,CPU 亲和性系统调用现在可以更宽容地处理比内核使用的 CPU 集合小的 CPU 集合。这将促进 MAXCPU(内核 CPU 集合的大小)增加。72bc1e6806cc

为保存 CPU 浮动点状态跨信号传递,64 位 linux(4) ABI 增加了支持。0b82c544de5820d601714206

linux(4) ABI 中的 vDSO(虚拟动态共享对象)支持已基本完成。a340b5b4bd48

arm64 上的 linux(4) ABI 已与 amd64 上的 linux(4) ABI 达到一致。0b82c544de58a340b5b4bd48

设备和驱动程序

本节介绍了自 13.1-RELEASE 以来,设备和设备驱动程序的变更和新增内容。

设备驱动程序

em(4) 驱动程序现在可以正确支持新款芯片 82580 和 i350 上的完整接收缓冲区大小范围。3f8306cf8e2d

ena(4) 驱动程序已升级到 2.6.2 版本。(由亚马逊赞助)

已为 hwpmc(4) 实现了对 Intel Alder Lake CPU 的基本支持。b8ef2ca9eae9

ice(4) 驱动程序已更新至 1.37.7-k 版本。

irdma(4) RDMA 驱动程序已为 Intel E810 以太网控制器引入,支持 RoCEv2 和 iWARP 协议,以每个 PF 方式运行,默认使用 RoCEv2,并已升级至 1.1.5-k 版本。42bad04a2156(由英特尔公司赞助)

现在已提供对 DPAA2(第二代数据路径加速架构,一种在某些 NXP SoC 中找到的硬件级网络架构)的初步支持。它运行 NXP 提供的固件,作为抽象层提供 DPAA2 对象,并提供一个 dpni 网络接口。d5a64a935bc9(由 Bare Enthusiasm :) 和 Traverse Technologies 赞助)

iwlwifi(4) 驱动程序已更新,用于支持 Intel 无线接口。(由 FreeBSD 基金会赞助)

rtw88(4) 驱动程序已添加,用于支持多个 Realtek 无线 PCI 接口。目前仅限于 802.11 a/b/g 操作。更多信息请参见 https://wiki.freebsd.org/WiFi/Rtw88

已为支持 Linux 设备驱动程序的 KPI 添加了许多新功能和改进。(由 FreeBSD 基金会赞助)

存储

本节介绍了文件系统和其他存储子系统(本地和网络存储)的变更和新增内容。

NFS 变更

已修复导致 NFS 服务器挂起的问题;该问题是由 TCP 中 SACK 处理的 bug 引起的。

UFS 变更

现在可以在运行启用了日志软更新的 UFS 文件系统上进行快照。因此,现在可以在运行日志软更新的在线文件系统上执行后台转储。通过使用 -L 参数来请求后台转储:dump(8)。在以前的版本中,UFS 快照与日志软更新不兼容。3f908eed27b4(由 FreeBSD 基金会赞助)

启动加载器变更

本节介绍了启动加载器、启动菜单和其他启动相关的变更。

启动加载器变更

变量 teken.fg_colorteken.bg_color loader.conf(5) 现在接受 brightlight 前缀(以及颜色号 8 到 15)来选择亮色。1dcb6002c500(由 FreeBSD 基金会赞助)。另见 233ab015c0d7

修复了多个导致视频控制台输出消失的 bug。问题通常是在启动加载器启动内核后出现挂起。(由奈飞赞助)

网络

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

一般网络

内核的 wg(4) WireGuard 驱动程序已重新集成;它通过 WireGuard 协议提供虚拟私人网络(VPN)接口。5ae69e2f10da(由 Rubicon Communications, LLC("Netgate")和 FreeBSD 基金会赞助)

KTLS(内核 TLS 实现)已为 TLS 1.3 添加接收卸载支持。现在支持 TLS 1.1 至 1.3 的接收卸载;TLS 1.0 至 1.3 的发送卸载也得到了支持。1462dc95f796(由奈飞赞助)

现在提供 netlink(4) 网络配置协议。它是 RFC 3549 中定义的通信协议,使用原始套接字在用户空间和内核之间交换配置数据。第三方路由程序和 linux(4) ABI 使用该协议。6058f6cc48f5(不包括在 13.2-RELEASE 的 GENERIC 配置中,但作为内核模块提供)

现在支持在 ipfw(4) 中使用 Radix 表和查找来处理 MAC 地址。这使得可以构建和使用 MAC 地址表来进行过滤。c31f8b7bd895

内核模块 dpdk_lpm4 和 dpdk_lpm6 现在可用,可以通过 loader.conf(5) 加载。它们为具有大量路由表的主机提供优化的路由功能。可以通过 route(8) 配置,并且是模块化 FIB 查找机制的一部分。0ca122044369

TCP 和 SCTP 中有多个 bug 修复。

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

已弃用 OPIE,并将在 FreeBSD 14.0 中移除。

已弃用同步串行驱动程序 ce(4)cp(4) ,并将在 FreeBSD 14.0 中移除。

ISA 声卡的驱动程序已弃用,并将在 FreeBSD 14.0 中移除。d7620b6ec941(由 FreeBSD 基金会赞助)

已弃用工具 mergemaster(8),并将在 FreeBSD 14.0 中移除。它的替代工具是 etcupdate(8)5fa16e3c50c5(由 FreeBSD 基金会赞助)

已弃用工具 minigzip(1) ,并将在 FreeBSD 14.0 中移除。84d3fc26e3a2

在 netgraph 中,ATM 的剩余组件(NgATM)已弃用,并将在 FreeBSD 14.0 中移除。已移除对 ATM NIC 的支持。

已弃用 Telnet 守护进程 telnetd(8) ,并将在 FreeBSD 14.0 中移除。Telnet 客户端不受影响。

已弃用 geom(8) 中的 VINUM 类,并将在后续版本中移除。

默认 CPUTYPE 变更

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

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

由于 i486 和 i586 CPU 主要用于嵌入式市场,因此预计对普通用户的影响将是最小的,因为这些 CPU 类型的新硬件早已不再使用,而部署的这类系统的基础大部分接近退休年龄,统计上来看。

做出这一变更时考虑了多个因素。例如,i486 没有 64 位原子操作,虽然可以在内核中模拟,但无法在用户空间中模拟。此外,32 位 amd64 库从一开始就是 i686。

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

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

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