FreeBSD 13.2-RELEASE版本说明

首先

这篇文章是FreeBSD 13.2-RELEASE Release Notes的日语翻译。由于其中有许多我不熟悉的单词,所以无法保证翻译的准确性。因此,欢迎指出“通常不会这样翻译”的建议。

此外,需要说明的是,本文的内容与笔者所属的公司或组织无关。这可以称为“主动研究成果的发布”。

现在,以下是翻译内容。

请简述一下

FreeBSD 13.2-RELEASE的发布说明中包含了在13-STABLE开发线中加入FreeBSD基本系统的变更概述。该文档还包括自上次发布以来发出的适用的安全建议,并记录了对FreeBSD内核和用户空间的重要变化。还提供了一些关于升级的简要说明。

首先

本文档中包含了FreeBSD 13.2-RELEASE的发布说明。它详细描述了最近添加、更改或删除的FreeBSD功能,并提供了关于从之前版本的FreeBSD升级的注意事项。

这个发行说明适用于自从13-STABLE创建以来,沿着13-STABLE开发分支的最新节点。关于按照这个分支构建的二进制发行物的信息,可以在 https://www.FreeBSD.org/releases/ 上查看。

这个FreeBSD 13.2-RELEASE是发布版的分发物。这个分发物可以在https://www.FreeBSD.org/releases/ 或其镜像站点上找到。获取这个(或其他)FreeBSD发布版分发物的详细信息,请参阅FreeBSD手册的附录A:获取FreeBSD的方法。

建议所有用户在安装 FreeBSD 之前参考发布错误表。发布错误表会根据发布周期后期或发布后发现的“最新”信息进行更新。典型的更新内容包括已知的错误、安全建议和文档修正等。您可以在 FreeBSD 网站上找到 FreeBSD 13.2-RELEASE 的最新版本发布错误表。

在这份文档中,我们将介绍FreeBSD 13.1-RELEASE及更高版本中用户最容易注意到的新功能和变化。通常情况下,这些变动都是特定于13-STABLE分支的,除非特别指出是”MERGED”功能。

一般来说,发布说明中通常包括最新的安全建议、新增的驱动或硬件支持、新增的命令或选项、重要的错误修复以及提供的软件升级,这些内容都是在13.1-RELEASE之后发布的。此外,还可能包括对主要端口/软件包或发布工程实践的更改。当然,无法在发布说明中列举FreeBSD在各个版本之间所作的所有变更。该文档主要侧重于安全建议、用户可见的更改以及在主要架构上的改进。

从之前的FreeBSD版本升级

使用freebsd-update(8)工具支持在RELEASE版本(以及各种安全性分支的快照)之间进行二进制升级。二进制升级的步骤是更新未更改的用户工具和作为官方FreeBSD发布的一部分分发的未更改的GENERIC内核。在使用freebsd-update(8)工具时,需要将要升级的主机连接到互联网。

根据/usr/src/UPDATING中的指示,支持从旧版本进行基于源码的升级(重新编译FreeBSD基本系统的源代码)。

PowerPC架构的用户在成功安装内核和World之后需要手动运行kldxref /boot/kernel。

请在备份所有数据和配置文件之后才尝试进行FreeBSD的升级。
安装新的用户级软件之后,正在运行的守护进程仍然是之前的版本。在freebsd-update的第二次启动中安装用户级组件后,或者在通过installworld从源代码升级后,需要重新启动系统来启动新软件的全部功能。例如,旧版本的sshd在新的/usr/sbin/sshd安装之后无法正确处理传入连接。请重新启动并启动新的sshd守护进程以及其他守护进程。

用户之地

在这个节里,我们将解释用户应用程序、提供的软件以及系统实用工具的修改和添加。

用户地的设置变更

growfs(7)启动脚本现在具有在扩展根文件系统的同时添加交换分区的功能,并且如果此前不存在交换分区,也会添加交换分区。这在使用原始图像安装到SD卡时非常方便。新增了一个名为growfs_swap_size的新的rc.conf(5)变量,您可以根据需要进行控制以进行添加。更多详细信息请参阅growfs(7)。

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

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

如果没有/etc/hostid文件,并且硬件中没有有效的UUID,启动脚本hostid将会生成一个随机的UUID(版本4)。另外,如果没有/etc/machine-id文件,hostid_save脚本将会将主机ID的紧凑版本(没有破折号的版本)保存到/etc/machine-id中。这个文件用于GLib等库的使用。

使用rc.conf(5)中的defaultrouter_fibN和ipv6_defaultrouter_fibN变量,我们现在可以添加除主要之外的默认路由到其他FIB。 (由ScaleEngine Inc.赞助)

用户地的应用程序变更点

bhyve(8)工具现在支持virtio-input设备仿真,用于输入键盘/鼠标事件到虚拟机中。其命令行语法如下:-s, virtio-input, /dev/input/eventX。

kdump(1)实用工具现在支持对Linux系统调用的解码。

killall(1)实用工具现在可以通过使用“-t pts/N”语法向控制终端为pts(4)的进程发送信号。

新增了nproc (1)实用程序。它与同名的Linux程序兼容。

timeout(1)实用程序已被移动到/usr/bin目录下。

在pciconf(8)实用工具中,已添加对ACS扩展功能解码的支持。(由Chelsio Communications赞助)

procstat(1)工具现在可以使用新添加的 advlock 命令来输出有关文件建议锁的信息。

pwd_mkdb(8)实用程序不再将注释从/etc/master.passwd复制到/etc/passwd。

ppp(8)的MSS夹持装置已经得到改善。

为了避免由于指标名称冲突而导致 Prometheus 服务器的混乱,prometheus_sysctl_exporter(8)的指标别名已经被修改。将 tcp_log_bucket の UMA 区域名称更改为 tcp_log_id_bucket,并将 tcp_log_node 更改为 tcp_log_id_node,以确保一致性。含有“(LEGACY)”说明的 sysctl 变量不再被导出。这些变量已被 ZFS sysctl 替代,并且其中许多是同一 Prometheus 指标名称的别名(例如,vfs.zfs.arc_max 和 vfs.zfs.arc.max)。

在uuidgen(1)实用工具中,新增了一个新的选项-r,用于生成随机的UUID(版本4)。

当被inetd(8)调用时,ctlstat -P现在会生成适用于导入到Prometheus的输出。请参考ctlstat(8)。(由Axcient赞助)。

提供的软件

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

外籍技术人员(libbsdxml)已经升级到2.5.0版本。

文件已升级至版本5.43。

“Less已经升级到608版本。”

libarchive已升级至3.6.2版本,并修复了许多可靠性问题。您可以在https://github.com/libarchive/libarchive/releases上获取相关的发布说明。

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

LLVM编译器clang已经升级到14.0.5版本。

全球支持的 LLVM 程序安全检测器已在 powerpc64 及其变种上启用。

mandoc已经升级到版本1.14.6。

OpenSSH已经升级到9.2p1版本。

OpenSSL已经升级到1.1.1t版本。

sendmail已经升级到8.17.1版本。

SQLite3已升级至3.40.1版本。

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

tzdata已经升级到2023b版本。

unbound已升级至1.17.1版本。

xz已经升级到版本5.4.1。

xz-embedded已经升级到3f438e15109229bb14ab45f285f4bff5412a9542。

zlib已经升级到1.2.13版本。

运行时库和API

Libmd已经添加了对SHA-512/224的支持。(由Klara, Inc.资助)

现在,sysdecode(3)和kdump(1)已经支持对Linux形式的系统调用进行跟踪。

原生的pthread库函数已经支持Linux语义。

核心

在这节中,我们将解释其他无法分类的内核设置、系统调优和系统控制参数的更改。

一般内核的变更点

bhyve(8)的虚拟化管理程序和内核模块vmm(4)现在支持超过16个vCPU的宿主。默认情况下,bhyve允许每个虚拟机创建与主机物理CPU数量相同的vCPU。这个限制可以通过可调参数hw.vmm.maxcpu进行调整。

地址空间布局随机化(Address Space Layout Randomization,ASLR)会默认启用于64位可执行文件。如果应用程序因分段错误等意外故障,可以根据需要禁用它。要在一次性启动中禁用它,可以使用proccontrol(1)命令:proccontrol -m aslr -s disable command。要禁用所有二进制文件的ASLR,可以使用elfctl(1)命令:elfctl -e +noaslr file。如果有问题,请在问题报告系统https://bugs.freebsd.org或freebsd-stable@FreeBSD.org邮件列表中发布报告(获得Stormshield赞助)。

英特尔奥德莱克(第12代)和可能的猛禽湖(第13代)混合式CPU的硬件页面禁用问题的解决方案已经实施。这个漏洞可能导致UFS和MSDOSFS文件系统的损坏以及可能其他内存的损坏。低速核心(E核心)将自动使用解决方案来采用低速页面禁用方法。(FreeBSD基金会赞助)

新的内核配置开关SPLIT_KERNEL_DEBUG可用于控制将内核和模块的调试数据分别分割到独立的文件中。它与WITHOUT_KERNEL_SYMBOLS选项进行交互,并且与13.0-RELEASE和13.1-RELEASE的行为不同,但与之前的版本一样,只能控制调试数据的安装。默认设置为WITH_KERNEL_SYMBOLS和WITH_SPLIT_KERNEL_DEBUG,没有调试数据的内核和模块将安装在/boot目录中,独立的调试文件将安装在/usr/lib/debug目录中(在13.0-RELEASE之前的版本中,默认设置就是这样)。使用WITHOUT_KERNEL_SYMBOLS和WITH_SPLIT_KERNEL_DEBUG会生成独立的调试文件,但不会像在13.0-RELEASE之前使用WITHOUT_KERNEL_SYMBOLS时那样进行安装。最后,使用WITHOUT_KERNEL_SYMBOLS和WITHOUT_SPLIT_KERNEL_DEBUG将会安装包含调试信息的内核和模块到/boot目录,就像使用13.1-RELEASE时使用WITHOUT_KERNEL_SYMBOLS一样。(由FreeBSD Foundation赞助)

在PowerPC上,pseries的radix pmap在ISA 3.0中得到了支持。这样一来,对于POWER9实例来说,需要用于管理pmap所需的超级调用数量将减少,从而使pseries大幅提速。

在arm64架构的Linux进程上,已经支持了ptrace(2)。

为了促进稳定版分支的ABI兼容性,CPU亲和性系统调用对于比内核使用的CPU集更小的集合更加宽容。这使得增加内核集大小MAXCPU变得更容易。

新增了对64位Linux(4)的ABI支持,并可以在整个信号传递过程中保存CPU浮点数的状态。

对于vDSO(Virtual Dynamically Shared Object)的支持在linux(4)ABI中几乎已经完成。

arm64 Linux (4) ABI 的状态已经与 amd64 Linux (4) ABI 相等。

设备和驱动器

设备驱动程序

em(4)驱动程序已经更新,现在可以正确支持新芯片82580和i350可用的所有接收缓冲区大小的范围。

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

英特尔鹰湖湖S CPU的基本支持已经在hwpmc(4)中实现了。

冰(4)驱动已更新至1.37.7-k版本。

irdma(4)RDMA驱动程序已经引入支持Intel E810以太网控制器,每个物理函数都支持RoCEv2和iWARP协议,并将RoCEv2设为默认协议,升级到版本1.1.5-k。42bad04a2156(由Intel Corporation赞助)。

可以开始对DPAA2(第2世代数据通道加速架构-部分NXP SoC上的硬件级网络架构)进行初始支持了。执行NXP提供的固件,提供DPAA2对象作为抽象层,并提供dpni网络接口。(在裸奔的热情:)并得到了Traverse Technologies的支持)

Intel 无线接口的 iwlwifi(4) 驱动程序已进行了更新。(由FreeBSD基金会赞助)

為了支持多個Realtek無線PCI介面,已新增rtw88(4)驅動程式。目前僅限於802.11 a/b/g。詳細資訊請參考https://wiki.freebsd.org/WiFi/Rtw88。

为了支持Linux设备驱动程序,进行了许多KPI的增加和改进。(由FreeBSD基金会赞助)

存储空间

本节介绍了关于文件系统和其他存储子系统的变更和添加,包括本地和网络两种情况。

NFS的改变点

NFS服务器的挂起问题已修复。此问题是由于TCP的SACK处理bug所引起的。

UFS的修改内容

在执行日志化软件更新时,现在可以在UFS文件系统中创建快照。因此,我们现在可以在执行日志化软件更新的实时文件系统中执行后台转储操作。后台转储可以通过在dump(8)命令中指定-L选项进行请求。(在以前的版本中,UFS快照与日志化软件更新不兼容。)(FreeBSD基金会支持)

引导加载器的更改点

在本节中,我们将对启动加载程序、引导菜单和其他与启动相关的更改进行解释。

引导程序的变更点

loader.conf(5)中的变量teken.fg_color和teken.bg_color现在接受亮色(通过bright或light前缀,以及颜色编号8到15)来进行选择。(得到FreeBSD Foundation的赞助)

修复了一些导致视频控制台输出消失的加载程序(8号)的错误。这些错误导致引导加载程序似乎在启动内核后挂起。(由Netflix赞助)

网络

在这一节中,我们将解释对FreeBSD网络造成影响的更改。

普通的网络

WG(4) WireGuard驅動程式已經重新整合。使用WireGuard協議提供虛擬私人網絡(VPN)介面。(由Rubicon Communications, LLC(”Netgate”)和FreeBSD基金會贊助)

KTLS(内核TLS实现)现已添加对TLS 1.3的接收卸载支持。从TLS 1.1到1.3,接收卸载得到了支持。发送卸载已经在TLS 1.0到1.3中都得到了支持。(由Netflix赞助)

netlink(4)网络配置协议可用。它是在RFC 3549中定义的通信协议,使用原始套接字在用户空间和内核之间交换配置信息。它被第三方路由程序和linux(4) ABI使用。netlink(4)协议未包含在13.2-RELEASE的GENERIC配置中,但可以作为内核模块使用。

通过 ipfw(4),现在支持基数表和查找 MAC 地址。这使得可以建立 MAC 地址表并用于过滤。

可利用了内核模块dpdk_lpm4和dpdk_lpm6,并可以通过loader.conf(5)进行加载。它们为具有大规模路由表的主机提供了优化的路由功能。可以通过route(8)进行配置,并作为模块化FIB搜索机制的一部分。

在TCP和SCTP中,有许多错误修复。

将来的FreeBSD发布版本的常见注意事项

OPIE不再推荐使用,并且将在FreeBSD 14.0中被移除。

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

ISA声卡的驱动程序已被废除,并将在FreeBSD 14.0中删除。 (由FreeBSD基金会支持)

推荐使用的 mergemaster(8) 工具将不再支持,并将在 FreeBSD 14.0 版本中被移除。它的替代工具是 etcupdate(8)。(由 FreeBSD 基金会赞助)

minigzip(1)实用程序将被废除并在FreeBSD 14.0中移除。

在FreeBSD 14.0中,Netgraph (NgATM)的ATM其余组件将被废止并删除。之前已经移除了对ATM网络接口卡(NIC)的支持。

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

在未来的版本中, geom(8) 的 VINUM 类将不再被推荐,并计划删除。

更改默认的CPUTYPE

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

这意味着默认情况下,FreeBSD Release Engineering团队提供的二进制文件将需要686级别的CPU(不仅限于此)。 FreeBSD 13.x仍然支持旧的CPU,但需要使用此功能的用户需要自行创建自己的定制版本,并不得官方支持。

i486和i586 CPU的主要用途通常是在嵌入式市场中,搭载这些CPU的新硬件已经衰退了很长一段时间,由于这些系统的部署基础大多已经接近退役,因此对一般终端用户的影响预计将最小化。

这个变更考虑了几个因素。例如,i486没有64位原子处理器,虽然内核可以模拟,但用户空间不能模拟。此外,32位的amd64库从一开始就是为i686设立的。

由于开发者在64位硬件上使用lib32库和内核的COMPAT_FREEBSD32选项,32位测试的大部分都可以保证更好的覆盖率和用户体验。这也与大多数Linux®发行版长期以来的做法相一致。

预计这将是i386默认CPUTYPE的最后一次更改。

这个变更不会影响到 FreeBSD 12.x 系列的发布。
bannerAds