FreeBSD版本更新录(202x)
2021-12-09 10:54:11 阿炯

本文是从FreeBSD的产品主页分离出来的,专门用于该发行版本的更新记录,截止到2030年之前。

版本历史
FreeBSD 的发展始于1993年,取源于386BSD。然而因为386BSD源代码的合理性受到质疑以及Novell(当时UNIX的版权拥有者)与柏克莱接连而来的诉讼,FreeBSD在1995年一月发布的 2.0-RELEASE 中以柏克莱加州大学的 4.4BSD-Lite Release 全面改写,FreeBSD Handbook 中有更多 FreeBSD 的发展历史。

FreeBSD 2.0 最值得注意的部份也许是对卡内基美隆大学的 Mach Virtual Memory 系统翻修以及 FreeBSD Ports system 的发明。前者对于高负荷的系统最佳化,后者则是建立了一套简单且强大的机制维护第三方软件。有不少大型站台都使用 FreeBSD(一个巨大的软件收集站台),Hotmail 以及 Yahoo。

FreeBSD 3.0 则引入了 ELF binary 格式,并开始支援多 CPU 系统(SMP,Symmetric multiprocessing)以及 64 位元 Alpha 平台。3.x 对于系统做了非常多的改革,这些措施在当时并没有带来好处,但却是 4.X 成功的基石。

-------------------------------------------------
FreeBSD 5

最后一个版本的 FreeBSD 5 是 5.5,是在 2006年五月发行的。在FreeBSD 4的SMP架构下,在同一时间内只允许一个CPU进入核心(即Giant Lock),FreeBSD 5最大的改变在于改善底层核心Locking机制,审视并改写核心程式码,使得不同的CPU可以同时进入系统核心,藉以增加效率。另外一个重大的改变在于自5.3开始支援m:n执行绪的KSE(Kernel Scheduled Entities),表示m个使用者执行绪共享n个核心执行绪的模式。这个版本的许多贡献是由于商业化版本的BSD OS团队的支援。

-------------------------------------------------
FreeBSD 6

FreeBSD 6为目前的-STABLE发展版本,FreeBSD 6.3在2008年1月18日发行,这个版本主要针对软件的更新,并加入lagg(可以对多张网卡操作)的支援,并引入重新改写的unionfs。

-------------------------------------------------
FreeBSD 7

FreeBSD 7为目前第二个-STABLE发展版本,在2007年6月19日进入发行程序,2008年2月27日7.0-RELEASE正式发布。新增的功能包括了:
* SCTP(实做完成)
* 日志式UFS档案系统:gjournal(实做完成)
* 移植升阳所发展的DTrace(实做完成,但还未交付至CVS)
* 移植升阳所发展的ZFS档案系统(实做完成)
* 使用GCC4(移植完成,目前为4.2.1)
* 对ARM与MIPS平台的支援
* 重写过的USB stack(实做完成,但还未交付至CVS)
* Scalable concurrent malloc实做(已经可以使用)
* ULE排程表2.0(SCHED_ULE)(实做完成),并修改加强为SCHED_SMP(实做完成),在交付至CVS时的正式名称为ULE 3.0,这个版本在8核心的机器上以sysbench MySQL测试的结果,速度上比Linux 2.6快大约10%(无论是使用Google的tcmalloc或是glibc+cfs)
* Linux 2.6模拟层(已经可以使用)
* Camellia Block Cipher(实做完成)

----------------------------------------------------------------
FreeBSD 8

2009年11月27日发布,增加如下新特性:
* 虚拟化方面:Xen DOM-U、VirtualBox guest及host支持、层次式jail。
* NFS:对NFSv3 GSSAPI的支持,以及试验性的NFSv4客户端和服务器。
* 802.11s D3.03 wireless mesh网络,以及虚拟Access Point支持。
* ZFS不再是试验性的了。
* 基于Juniper Networks提供MIPS处理器的实验性支持。
* SMP扩展性的增强,显著改善在16内核处理器系统中的性能。
* VFS加锁的重新实现,显著改善文件系统的可扩展性。
* 显著缓解缓冲区溢出和内核空指针问题。
* 可扩展的内核安全框架(MAC Framework)现已正式可用。
* 完全重新的USB堆栈改善了性能和设备兼容性,增加了USB target模式。

----------------------------------------------------------------
FreeBSD 9

FreeBSD 9.0将采用全新的文本安装器,升级ZFS文件系统,LLVM/Clang取代GCC成为默认的编译器(主要的原因是BSD与GPL协议在授权上冲突,尤其是GCC将授权协议升级为GPLv3后),支持索尼PlayStation 3等。

编译器变更的相关参考链接:
FreeBSD 10 To Use Clang Compiler, Deprecate GCC
Why is FreeBSD deprecating GCC in favor of Clang/LLVM

----------------------------------------------------------------
FreeBSD 10

10.3版本主要是提升了系统稳定性,添加了一些新特性。值得关注的改进:
resolvconf(8) 实用程序更新至 3.7,改进 DNS 隐私保护
添加了新 rc(8) 脚本和 growfs
Linux® 兼容性版本现在支持 Centos™ 6 ports
drm code 现在匹配 Linux® 版本  3.8
改进 FreeBSD/arm 支持
一些 ZFS 性能和可靠性改进

带来了诸多改进和新特性,比如 Linux 兼容性层已允许用户在 amd64(x86_64)硬件上运行64位应用程序。UEFI 引导器也带来了更好的多设备支持、帧缓冲器驱动的通用图形适配器(UGA)和图形输出协议(GOP)处理改进、以及增加了对 ZFS 启动的支持。CAM 目标层现已支持高可用性设置、完整地支持了英特尔 Skylake 及更新一些的芯片、16Gbpps 光纤通道适配器、以及 full Multi-ID(NPIV)功能。此外,FreeBSD 10.3 也能够在基于 UEFI 的系统上使用 ZFS 作为根文件系统了。

Intel FreeBSD Networking Group version 3.1.13-k 现已支持 ixgbe 驱动(以及 X552 / X550T),并且 reboot 实用工具已初步实现了一个 reroot 功能,允许用户挂载来自一个临时来源文件系统的 rootfs,而无需重启操作系统。最后,mking 实用工具已支持 MBR 和 GPT 分区格式下的 NTFS 文件系统,xz archiver 已支持多线程压缩。此外还有 GNOME 3.16.2、TeXLive 2015、X.Org Server 1.17.4 等软件也相应更新了。

----------------------------------------------------------------
FreeBSD 11

11.4版本包含对 FreeBSD 内核和用户区的重大更改,包括新驱动程序、硬件支持、新命令或选项、主要 bug 修复和贡献的软件升级等。

其中操作系统内核的更新包括:
linux(4) ABI 兼容性层已经升级到支持 musl 消费者。
fdescfs(5) 文件系统升级到支持 Linux 特定的 fd(4)  /dev/fd 和 /proc/self/fd 行为。
新增多个实时时钟支持。
修复 ng_iface(4) 驱动可能带来的系统崩溃。
升级 ipfw(4) 包过滤器以识别2层和3层数据包,修复 dummynet(4) AQM 包标记问题。
修复 Intel® Apollo Lake™ CPUs 启动问题。

驱动与磁盘方面更新包括:
支持 TAIO USB 多协议适配器(TUMPA)。
cm(4) 和 fpa(4) 驱动已被标记为已弃用,并将在 FreeBSD 12 中删除。
添加 ocs_fc(4) 驱动程序,支持 Emulex 16/8G FC GEN 5 HBA LPe15004 和 LPe160XX,以及 Emulex 32/16G FC GEN 6 HBA LPe3100X 和 LPe3200X。
lmc(4) 驱动已被标记为已弃用,并将在FreeBSD 12中删除。
新增 smartpqi(4) 驱动程序,为 Microsemi®SCSI 控制器提供支持。
clang、llvm、lld、lldb 和 compiler-rt 实用程序以及 libc++ 已经更新为上游版本 8.0.0
ELF 工具链更新为 r 3614 版本
OpenSSL 已更新为 1.0.2s 版
更新 zfs 文件系统来实现并行安装
更新 loader(8) ,来将 Geli(8) 支持扩展到所有体系结构
pkg(8) 实用程序已更新到版本 1.10.5
GNOME 桌面环境已更新为 3.28 版
KDE 桌面环境已更新为 5.15.3 版
几个网络驱动程序固件更新

而用户区的变更包含了用户软件、贡献的软件和系统工具。具体涉及到了 tcpdump、crontab、diskinfo、umount、pw、ps、df、ifconfig、less、file、diff、dtc、bsdinstall 等众多应用的更新。另外还有诸多方面的更新细节,包括启动器、网络、存储和虚拟化等,11.4 已经发布,这是  stable/11 分支的第五个也是最后一个版本。FreeBSD 是一种自由类 Unix 操作系统,是由经过 BSD、386BSD 和 4.4BSD 发展而来的类 Unix 的一个重要分支。更新亮点:
clang、llvm、lld、lldb 和 Compiler-rt 实用程序以及 libc++ 已更新为上游版本 10.0.0
OpenSSL 已更新至版本 1.0.2u
Unbound 已更新至版本 1.9.6
pkg(8) 实用程序已更新至版本 1.13.2
KDE 桌面环境已更新至版本 5.18.4.1.19.12.3
GNOME 桌面环境已更新至版本 3.28
支持重命名 ZFS 书签
添加 certctl(8) 实用程序
对用户态应用程序的一些功能添加和更新
现在,在所有 FreeBSD 版本中都将打印对将来版本中弃用功能的警告
已为 RFC 6649 和 8429 中弃用的 Kerberos GSS API 算法添加了警告

FreeBSD 11.4 生命周期结束

FreeBSD 团队于2021年9月下旬发布公告称,从 2021 年 9 月 30 日开始, FreeBSD 11.4 和 stable/11 分支将结束生命周期 (EOL),不会再收到由 FreeBSD 安全团队提供的技术支持。因此建议 FreeBSD 11.4 用户尽快升级到新版本。FreeBSD 11.4 发布于 2020 年 6 月,这是  stable/11 分支的第五个也是最后一个版本;FreeBSD 11 正式版于 2016 年 9 月发布。这里附上已不再受支持的其他旧版本。

----------------------------------------------------------------
FreeBSD 12

12.0版本主要更新亮点包括:
OpenSSL 升级到 1.1.1a (LTS)
Unbound 升级到 1.8.1,DANE-TA 默认开启
OpenSSH 升级到 7.8p1
sshd(8) 添加了额外的 capsicum(4)  支持
Clang、LLVM、LLD、LLDB、compiler-rt 和 libc++ 升级到 6.0.1
vt(4) Terminus BSD Console 字体升级到 4.46
bsdinstall(8) 现在支持 UEFI + GELI 作为安装选项
默认情况下启用 VIMAGE 内核配置选项
默认情况下,amd64 GENERIC 和 MINIMAL 内核配置中启用 NUMA 选项
添加了 netdump(4) 驱动程序,通过该工具可以在系统出现紧急情况时将内核崩溃 dump 传输到远程主机
提高 vt(4) 驱动性能,以 2 至 6 倍的速度绘制文本
对当前一代硬件的图形支持的各种改进
默认情况下,armv6 和 armv7 启用对 capsicum(4) 的支持
UFS/FFS 文件系统已更新,增强了 TRIM/BIO_DELETE 命令,由于同时发送的 TRIM 消息较少,因此减少了读/写请求
更新 NFS 4.1 服务器,带来 pNFS 服务器支持
pf(4) 包过滤器现在可以使用 vnet(9) 在 jail(8) 中使用
升级 bhyve(8),添加了 NVMe 设备模拟
bhyve(8) 现在可以使用 jail(8) 运行
一些 Lua loader(8) 改进
KDE 升级到 5.12.5
更多详情查看发行公告

FreeBSD 团队宣布 FreeBSD 12.2 于2020年1028日正式发布,这是 FreeBSD 12 的第三个稳定版本。本次更新的一些亮点:
引入了对无线网络堆栈的更新和各种驱动程序,以提供更好的 802.11n 和 802.11ac 支持。
添加 ice(4) 驱动,支持英特尔的 100Gb 以太网卡。
更新 jail(8) 实用程序,允许在隔离的环境运行 Linux 。
OpenSSL 已更新至版本 1.1.1h。
OpenSSH 已更新至版本 7.9p1。
Clang,LLVM,LLD, LLDB,compiler-rt 和 libc ++ 已经更新到 10.0.1 。

FreeBSD 12.3

正式于2021年12月上旬发布,这是 FreeBSD 12 分支的第四个版本,该版本主要更新内容在于小的改进和错误修复:
对各种网络驱动的更新。
对上游贡献软件的一些更新。
一些应用的改进和内核错误的修正。

值得一提的用户空间变化包括:
Bhyve 修正了其 NVMe emulation 中的大型 IO 处理。
freebsd-update 更新了一个新的 flags 以支持 jails;
fstyp 现在可以检测 exFAT 文件系统。
growfs 现在可以在读写安装的文件系统上操作。
unzip 现在支持密码保护的档案。

还引入了 bc 5.0、OpenSSL 1.1.1i、SQLite 3.35.5、Subversion 1.14.1 LTS 等。

现在可用于 amd64、i386、powerpc、powerpc64、sparc64、armv6、armv7 和 aarch64 架构。

关于新功能和已知问题的完整列表,可在以下网址查阅:relnoteserrata

FreeBSD 12.2 生命周期结束

FreeBSD 社区发布公告,FreeBSD 12.2 将于2022年3月31日结束生命周期(EOL),未来将不再获得 FreeBSD 安全团队的任何支持与维护。为了避免潜在的安全隐患与漏洞,官方建议目前仍在使用 FreeBSD 12.2 版本的用户尽快升级到更新的版本(FreeBSD 12.3 或 13)。FreeBSD 12.3 于2021年12月发布,因此 FreeBSD 12.2 的生命结束周期符合 FreeBSD 一贯的政策,即「新版本推出 + 3 个月时间」后将结束老版本的支持。如果用户无法或不愿升级的话,就需要时刻留意 FreeBSD 官方的安全公告

FreeBSD 12.4 已于2022年12月上旬正式发布,为FreeBSD 12稳定分支的第 5 个版本。目前支持 amd64、i386、powerpc、powerpc64、powerpc64le、powerpcspe、armv6、armv7、aarch64 和 riscv64 架构。新版本重要变化如下:
ena (4) 内核驱动升级到 2.6.1
if_epair (4) 驱动程序现在支持使用多个核心来处理流量,以提高性能
unbound (8) 程序已升级到 1.16.3
telnetd (8) 守护进程已被弃用
tcpdump (1) 程序现在支持用户在规则上设置一个数字,这些规则将作为 pflog header 的一部分被公开。
OpenSSL 已升级到 1.1.1q
OpenSSH 已升级到 9.1p1
LLVM 工具链套件已升级到 13.0.0
dma (8) 程序已升级到 snapshot 2022-01-27
file (1) 程序已升级到 5.43
libarchive (3) 库已升级到 3.6.0
更多信息可参考发行公告

----------------------------------------------------------------
FreeBSD v13

v13.0-RELEASE 于2021年4月15日正式发布。v13.0 提供了性能上的改进(尤其是得益于硬件 P-States,英特尔 CPU 的基准跑分有明显提升),升级到 LLVM Clang 11 作为默认的编译器工具链,改进 64 位 POWER 架构支持,以及其他各种网络功能改进。主要变化如下:
各种加载程序修复
增加了对 if_wg(4) 的修复
growfs(8) 工具更新,现在可以在读/写文件系统上工作
几个 ZFS 修复程序
几个 TCP 修复程序
bc(1) 实用程序已更新至版本 3.3.3
已修复 arm64 AES-XTS 回归问题
修复了 ixl(4) 中 VLAN 硬件过滤的问题。

相比于 FreeBSD 12,13 针对 Intel CPU 提供了更好的性能、改进了升级工具,并采用 efibootmgr 作为 FreeBSD 的 EFI bootloader。此外 Bhyve 虚拟化堆栈也增加了许多新功能。对于面向 i386 架构的 FreeBSD,默认 CPU 类型已从 i486 变为 i686。v13.0 还为整个内核和用户空间进行了许多改进,相信这将是一个值得期待的新版本。

64 位 ARM (AArch64) 现在与 x86_64 并列成为一级架构,EFI 引导改进,AES-NI 现在被默认包含在通用内核构建中,对 i386 的默认 CPU 支持从 i486 提升到 i686,以及其他各种硬件支持改进。在本次更新中,各种过时的 GNU 工具被移除,比如用于 crashinfo 的旧版 GNU Debugger,过时的 GCC 4.2.1 和 Binutils 2.17 被从主树中移除,同时也切换到BSD版本的grep。更多详情请查看这里

FreeBSD v13.1

于2022年5月中旬发布,该版本提供了性能上的改进,以及更好的 RISC-V 支持。下面是一些较为重要的更改项:
用户态应用程序更改,对于 64 位架构,基础系统默认启用了与位置无关的可执行文件 (PIE) 支持。
新的 zfskeys rc(8) 服务脚本,允许在启动期间自动解密使用 ZFS 本机加密的 ZFS 数据集。
NVMe 仿真已升级到 NVMe 规范的 1.4 版。
为巴西葡萄牙语 ABNT2 键盘添加了额外的 Alt Gr 映射。
默认情况下,构建中禁用 svnlite。

运行时库和 API
在 powerpc、powerpc64 和 powerpc64le 上添加了 OpenSSL 的汇编优化代码。
CPU 特性的检测加速了 ARMv7 和 ARM64 的加密操作已得到修复,大大加快了 aes-256-gcm 和 sha256 的速度。
在 risc-v 64 和 riscv-64-sf 上启用构建 ASAN 和 UBSAN 库。
OFED 库现在基于 riscv64 和 riscv64sf 构建。
OPENMP 库现在基于 riscv64 和 riscv64sf 构建。

内核更改
修复 powerpc64 上串行控制台上的输出损坏。
CAS 已支持 Radix MMU。
修复在带有 TCG 的 QEMU 上运行带有 HPT 超级页面的 FreeBSD 出现的问题。
超级页面支持已添加到 powerpc64(le) 上的 pmap_mincore。
在 arm64 上为 32 位 ARM 二进制文件添加了 HWCAP/HWCAP2 辅助参数支持。

平台支持:增加了对 HiFive Unmatched RISC-V 板的支持。

FreeBSD 13.1 稳定版新版本最大的亮点是针对 AMD64 的 UEFI 启动进行了改进,特别是可以让更多的系统现在表现正常,以摆脱传统的 BIOS 启动。另外还增加了对 freebsd-update 的支持,以 allwo 创建启动环境的自动快照,试图使操作系统的更新万无一失。在 13.1 中还有各种各样的硬件驱动改进,特别是改进了英特尔 WiFi 驱动。其他一些变化包括在 64 位架构上默认启用位置独立可执行文件 (PIE) 支持,新的"zfskeys"服务脚本用于自动解密 ZFS 数据集,Bhyve 管理程序的 NVMe 模拟,chroot 现在支持非特权操作,各种 POWER 和 RISC-V 改进,大端(endian)支持改进,支持 HiFive Unmatched RISC-V 开发板,更新对 OpenZFS 文件系统的上游支持,以及这个 BSD 开源生态系统的许多其他变化。

更多详情可查看此处

FreeBSD 13.2-RC6 发布,继续修复 Bug

FreeBSD 13.2-RC4 本来应该是 13.2 版本的最后一个候选版本,但随后又发布了附带修复程序 的 13.2-RC5 ,将发布拖到了2023年4月。进入 4 月后,由于始终存在尚未解决和新出现的问题,v13.2 又发布了第六个候选版本, 附带了另一个修复程序。RC6 修复了在 AMD64 唤醒代码期间重新计算缓解措施的问题。这种缓解措施的重新计算可以解决某些笔记本电脑型号的挂起 / 恢复问题。13.2 版包含非常多新内容,比如将 WireGuard 驱动程序重新引入其流行的开源安全 VPN 隧道的源代码树、默认情况下为 64 位可执行文件启用 ASLR(地址空间布局随机化)、Bhyve 管理程序增强功能、改进的 Intel Alder Lake 支持、Kdump 支持解码 Linux 系统调用,以及一系列其他软件更新和对内核的其他改进。此外,FreeBSD 14.0 预计将在2023年7月中旬作为一项重大功能版本更新。

FreeBSD v13.2

v13.2版本已于2023年4月中旬发布,该版本提供了性能上的改进,以及更好的 RISC-V 支持。下面是一些较为重要的更改项:
growfs (7) 启动脚本添加了一个交换分区,在使用原始映像安装到 SD 卡上时非常有用。
zfskeys 启动脚本支持自动加载存储在 ZFS 上的密钥。
添加了一个新的 RC 脚本 zpoolreguid,它将一个新的 GUID 分配给一个或多个 zpool,对于共享数据集时的虚拟化环境很有用。
如果没有 /etc/hostid 文件,并且没有来自硬件的有效 UUID,hostid 启动脚本现在将生成一个随机(版本 4)UUID。
现在可以通过使用 defaultrouter_fibN 和 ipv6_defaultrouter_fibN rc.conf (5) 变量为主要 FIB 添加默认路由。

Userland 应用程序更改
bhyve (8) 实用程序获得了 virtio-input 设备模拟支持,用于将键盘 / 鼠标输入事件注入来宾。
kdump (1) 实用程序已获得对解码 Linux 系统调用的支持。
killall (1) 实用程序现在允许使用语法 -t pts/N 向 pts (4) 上的控制终端发送信号到进程。
添加了一个 nproc (1) 实用程序,与同名的 Linux 程序兼容。
timeout (1) 实用程序已从 /usr/bin 移至 /bin。
pciconf (8) 实用程序添加了对解码 ACS 扩展功能的支持。
procstat (1) 实用程序现在可以使用新的 advlock 命令打印有关文件锁的信息。
pwd_mkdb (8) 实用程序不再将注释从 /etc/master.passwd 复制到 /etc/passwd。
已针对 ppp (8) 改进了 MSS 钳位。
prometheus_sysctl_exporter (8) 中的度量别名已更改,以避免因度量名称冲突而混淆 Prometheus 服务器。
uuidgen (1) 实用程序有一个新选项 -r 来生成随机 UUID,版本 4。
当被 inetd (8) 调用时,ctlstat -P 现在将产生适合 Prometheus 接收的输出;

软件升级
Gavin Howard 的 bc 已经升级到 6.2.4 版本。
expat (libbsdxml) 已升级到版本 2.5.0。
file(文件)已升级到 5.43 版。
less 已经升级到 608 版本。
libarchive 已升级到 3.6.2 版
libedit 已升级至版本 2022-04-11
LLVM 和 clang 编译器已升级到版本 14.0.5
mandoc 已升级到 1.14.6 版本。
OpenSSH 已升级到版本 9.2p1。
OpenSSL 已升级到版本 1.1.1t。
sendmail 已升级到 8.17.1 版本。 68e86d5265bc
sqlite3 已经升级到 3.40.1 版本。
tzcode 已升级到版本 2022g,改进了时区更改检测和可靠性修复。
tzdata 已升级到 2023b 版本。
unbound 已经升级到 1.17.1 版本。
xz 已经升级到 5.4.1 版本。
xz-embedded 已升级到 3
zlib 已经升级到 1.2.13 版本。

运行时库和 API
libmd 添加了对 SHA-512/224 的支持
sysdecode (3) 和 kdump (1) 现在支持 Linux 风格的系统调用跟踪
本机 pthread 库函数现在可以支持 Linux 语义

一般内核更改
bhyve (8) hypervisor 和内核模块 vmm (4) 现在支持一个客户机中超过 16 个 vCPU。可以通过加载程序可调参数 hw.vmm.maxcpu 调整此限制。为 64 位可执行文件启用地址空间布局随机化 (ASLR)。

更多内容请查看更新公告

FreeBSD v13.3

v13.3 已于2024年3月中旬发布,该版本主要更新了组件和驱动程序,同时提升了 WiFi 驱动程序稳定性。主要变化如下:
LLVM 和 clang 编译器更新至 17.0.6 版本
OpenSSH 更新至 9.6p1 版本
Sendmail 更新至 8.18.1 版本
ZFS 更新至 OpenZFS 2.1.14 版本
对本机和基于 LinuxKPI 的 WiFi 驱动程序进行了许多稳定性修复
NFS 服务器现在可以在适当配置的 vnet Jail 中运行
更多详情查看 Release Notes

官方此前宣布了停止支持 32 位架构的未来计划:
FreeBSD 15.0 将不包含 armv6、i386 和 powerpc 架构
FreeBSD 16.0 将不包含 armv7 架构
v16 分支至少会一直支持在 64 位内核执行 32 位二进制文件

FreeBSD v13.4

2024年9月中旬发布的 v13.4 有许多小的更新。其中包括一些驱动程序更新, 如 Intel ICE Ethernet Network 和 IRDRMA 驱动。LLVM/Clang 编译器更新到了 LLVM 18.1.5,还有一些其他软件包更新,如 SQLite 3.46 和 OpenSSH 9.7p1。DVD 映像文件中的软件包现代化包括添加 seatd、Sway 合成器和其它软件包,同时放弃 xf86-video-vmware 驱动程序和其它旧软件包。这与 FreeBSD 14.1 所做的软件包现代化工作是一样的。

FreeBSD在2024年9月下旬发布安全公告称,bhyve 管理程序的USB仿真功能中存在严重漏洞CVE-2024-41721,CVSS评分为9.8。具体而言,当该USB仿真功能配置为仿真虚拟USB控制器 (XHCI) 上的设备时,就会触发该漏洞。它可导致恶意代码执行后果,从而对运行易受攻击 FreeBSD版本的系统造成严重威胁。

Bhyve 是一款管理程序,旨在在虚拟机中运行 guest 操作系统,由 USB 仿真代码中的边界验证不足导致。具有权限的 guest 操作系统可在堆上触发界外读问题,从而可能升级到任意写权限。该漏洞可引发多种攻击,如导致管理程序崩溃或在通常以 root 权限运行的主机的 bhyve 用户空间进程中实现代码执行。该漏洞可导致对 guest 虚拟机具有控制权的恶意人员使管理程序崩溃甚至在主机机器上执行任意代码。虽然 bhyve 获得 Capsicum 沙箱的保护,但该漏洞如未被修复仍可造成严重风险。该漏洞由 Synacktiv 公司的研究人员发现并报送。目前并不存在相关应变措施。未在 USB 设备上应用 XHCI 仿真措施的guest虚拟机不受影响。

FreeBSD Project 强烈建议所有用户将系统升级至最新版本 14.1-STABLE、14.1-RELEASE-P5、14.0-RELEASE-P11、13.4-STABLE、13.4-RELEASE-p1或13.3-RELEASE-p7。在USB设备上使用 XHCI 仿真技术的 guest 操作系统需要重启才能让补丁完全起作用。

FreeBSD v13.5

v13.5 已于2023年3月中旬发布,作为 FreeBSD 13 系列的最终更新。用户应开始制定升级到当前 FreeBSD 14 稳定系列或关注未来 FreeBSD 15.0 版本的计划。

FreeBSD 13.5 带来了许多小型的软件更新,例如 XZ、SQLite3、OpenSSH 以及其他应用程序。其他变化如下:
增加对 Purism 键盘的支持,支持与 Coreboot 搭配使用
将 Realtek 8156/8156B 网络驱动程序支持移动到 URE 驱动程序
支持 Brainboxes USB-to-serial 转换器
AGP 驱动程序的手册页面也已更新
修复 UFS1 文件系统错误,实现在 gstate 中的微秒级磁盘延迟
以及各种网络驱动程序的更新
关于 FreeBSD 13.5 稳定版的更多详细信息可访问官方发行说明

----------------------------------------------------------------
FreeBSD 14.0 计划2023年7月发布

FreeBSD 发布工程团队于2022年8月下旬公布了对目前稳定系列的初步发布规划,包括 FreeBSD 13.2 和 12.4,以及下一代的​ FreeBSD 14.0。FreeBSD 13.0-RELEASE 在 2021 年 4 月首次亮相,而在此之后的两年多时间里,预计将发布 14.0,与 FreeBSD 主要版本之间相隔两年的更新时间保持一致。14.0-RELEASE 暂定于2023年 7 月 17 日发布。为了实现这个目标,内核二进制接口的冻结将在 4 月 25 日左右开始,5 月中旬进入 stable/14 分支,5 月底前开始发布 beta 测试。经过几周的 beta 和 rc 版本,FreeBSD 14.0-RELEASE 有望在 7 月中旬完成。发布工程团队还透露,2022年 12 月将发布 FreeBSD 12.4,2023年 3 月发布 FreeBSD 13.2。

将用 dma 取代 sendmail
sendmail 是一个通用的网络电子邮件发送代理软件,支持多种邮件传输和交付方式。作为 Eric Allman 编写的 delivermail 程序的后继者,sendmail 是开源软件和 Unix 社区中的一个著名项目,于 1983 年首次发布。而此次用来替换 sendmail 的 dma(Dragonfly Mail Agent)则是一个小型轻量级的邮件传输代理(MTA),它接受来自本地安装的邮件用户代理(MUA)的邮件,并将邮件送到本地或远程目的地。由于 dma 并不打算取代真正的大型 MTA,所以 dma 不侦听 25 端口的传入连接。

2022年11月消息,FreeBSD 邮件列表确认,将会用 dma 取代 sendmail 并将前者设为默认的 MTA:正如提交消息所指出的,dma 不是像 sendmail 或 postfix 那样功能齐全的 MTA,而是一个轻量级的 MTA。将其设置为默认值除了降低配置门槛,减少漏洞发生的几率以外,大多数系统其实也仅仅是需要基本的邮件服务,真正需要功能完整的 MTA 的用户是可以手动安装和设置 sendmail 或 postfix 的。

这是一个双赢的局面:为那些不需要功能齐全的 MTA 的用户增加了安全性,而需要完整功能的用户也不会有任何损失。对于 FreeBSD 来说,其实自 2014 年以来就已经在基本系统中拥有一份 dma 副本,可作为可选组件,并通过 WITH_DMAGENT src.conf 启用。FreeBSD 14 计划于 2023 年 7 月发布。v14 Beta 1 将于2023年9月下旬可用,预计在 10 月底前稳定发布。

FreeBSD 14 带来了许多硬件支持改进和相比于 FreeBSD 13 系列的大量内核增强。值得注意的是,FreeBSD 14 是最后一个支持 32 位系统的版本。尽管 FreeBSD 15 将不再支持 32 位硬件平台,但其 64 位系统仍将至少保留到 FreeBSD16 对运行 32 位二进制文件的支持。新增了一个 "fwget" 工具用于获取固件包 - 最初 fwget 可以获取 Intel 和 AMD GPUs 的固件。其他众多变化包括:替换 sendmail 为 dma、Kinst 作为新 DTrace 提供者、makefs 添加 ZFS 支持、boottrace 成为捕获系统启动和关闭过程中跟踪事件的新接口、内核 TLS 卸载处理 TLS1.3 接收端卸载等等。

此外还有 WiFi6 在 WPA 中初始支持,sh 现已成为 root 用户默认 shell,并且 LLVM 工具链也进行了更新。更多其他变化请参阅正在进行中的发行说明。未来几周会有更多 Beta 版及候选版本发布,而 FreeBSD 14-STABLE 应该会在2023年10月底之前发布。

FreeBSD 14.0 的候选发布版(RC1)已于2023年10中旬发布,开发人员正努力争取在 11 月初发布 FreeBSD 14 稳定版。第14版是支持 32 位系统的最后一个系列。FreeBSD 15 将放弃对 32 位硬件平台的支持,但 第 15 版本的 64 位系统将保留对运行 32 位二进制文件的支持。这种 32 位二进制文件的兼容性预计至少会支持到 FreeBSD 16。

FreeBSD 14 还新增了一个用于获取固件包的"fwget"工具,该工具最初可以获取英特尔和AMDGPU 的固件。另外还有许多其他变化包括:用 dma 代替 sendmail、Kinst 成为新的 DTrace 提供者、makefs 增加了 ZFS 支持、boottrace 成为在系统启动和关闭过程中捕获跟踪事件的新接口、内核 TLS 卸载处理 TLS 1.3 的接收端卸载、WPA 初步支持 WiFi 6、sh 现在是 root 用户的默认 shell,以及更新的 LLVM 工具链。基于 ARM64 和 AMD64 的 FreeBSD 14 现在支持多达 1024 个 CPU 核心,高于当前的 256 个核心限制。AMD EPYC Bergamo 现在允许每个插槽 128 个内核/256 个线程,超过了当前 FreeBSD 的限制,因此至少 FreeBSD 14.0 允许使用这些高内核数服务器。

除此之外,FreeBSD 14 的重启速度也会加快,ISA 声卡支持被移除,新的英特尔 QAT 驱动程序比之前的 FreeBSD QAT QuickAssist 技术驱动程序有更多的功能和支持。Netflix 还发起赞助,删除了 FreeBSD 中的许多其他旧驱动程序。正在进行中的发布说明还列出了即将发布的 第 14 版本的其他有趣细节。FreeBSD 14.0-RC1 发布公告概述了 Linux KPI 的更新、各种 WiFi 更新,以及本周候选发布版的竞赛条件修复。在 FreeBSD 14.0-RELEASE 于 11 月 7 日左右发布之前预计至少还会有两个候选版本。

FreeBSD 14.0 已正式于2023年11月下旬发布,这是  stable/14 分支的首个版本,支持 amd64, aarch64, i386, powerpc, powerpc64, powerpc64le, powerpcspe, armv7, 和 riscv64 架构。主要变化如下:
OpenSSH 升级至 v9.5p1
OpenSSL 升级至 v3.0.12
FreeBSD 13.2-RELEASE 使用 OpenSSL 1.1.1t,所以这是重大升级
bhyve 虚拟机管理程序支持 TPM 和 GPU 透传
FreeBSD 在 amd64 和 arm64 平台支持最多 1024 个内核
ZFS 升级至 OpenZFS v2.2,显著改进性能
实验性 ZFS 镜像可用于 AWS 和 Azure
支持对运行日志软更新的 UFS 文件系统执行后台文件系统检查
TCP 默认拥塞控制机制为 CUBIC……

更多信息可参考第14版的发行说明。负责 FreeBSD 发版工作的主管在其个人博客介绍了一些 FreeBSD 14 的破坏性变化,详情可查看此处

FreeBSD 14.2-RELEASE 发行说明
2024 年 11 月下旬消息,总结了在 14-STABLE 开发分支上 FreeBSD 基本系统发生的变更。本节列出了自上次发布以来 RELEASE 适用的安全公告,以及对 FreeBSD 内核和用户空间的重大变更。同时还附带了有关更新的简要说明。概述了 FreeBSD 最近新增、修改和删除的功能,并附带了有关从旧版本更新的说明。本发行说明适用于自 14-STABLE 开发分支创建以来的最新版本信息。这些发行说明适用于“RELEASE”发行版,该版本代表了 14-STABLE 开发分支中的一个节点,位于 14.1-RELEASE 和后续的 14.3-RELEASE 之间。

建议在安装 FreeBSD 之前,用户先查阅下发行勘误文档。该文档包含在发行周期后期及发行后发现的“最新”信息,通常涵盖已知错误、安全公告以及文档修正。可在 FreeBSD 网站上找到最新的 FreeBSD 14.2-RELEASE 勘误文档。本文档总结了自 14.1-RELEASE 以来 FreeBSD 中对用户最为可见的新增和更改功能。一般来说,这些变更是 14-STABLE 分支的独有内容,除非特别标记为 MERGED 功能。

一般的发行说明内容包括自 14.1-RELEASE 之后发布的安全公告、新增的驱动程序/硬件支持、新命令/参数、主要的错误修复/外部软件更新。还可能列出主要 Ports/软件包和发行工程实践的更改。显然,发行说明无法详尽列出两个 FreeBSD 版本之间所做的每项更改;本文档主要聚焦于安全公告、用户可见的更改和重大架构改进。

从旧版 FreeBSD 更新
使用工具 freebsd-update(8) 能在 RELEASE 版本(及各安全分支快照)间进行二进制更新。请参阅特定版本的更新程序,例如 FreeBSD 14.2-RELEASE 的更新信息,并在 FreeBSD 手册中查阅关于二进制更新的详细说明。此工具会更新未经修改的用户空间工具,以及在官方 FreeBSD RELEASE 分发的未经修改的 GENERIC 内核。工具 freebsd-update(8) 要求更新的主机能够连接互联网。

可以按照 /usr/src/UPDATING 中的说明从以前的版本进行基于源代码的更新(通过重新编译 FreeBSD 基本系统进行更新)。在更新 FreeBSD 之前,应先备份所有数据和配置文件。

安全与勘误
本节列出了自 14.1-RELEASE 以来发布的安全公告和勘误通知。

安全公告
公告编号    日期    主题
FreeBSD-SA-24:04.openssh    2024 年 7 月 1 日    OpenSSH 预认证远程代码执行
FreeBSD-SA-24:05.pf    2024 年 8 月 7 日    pf 在状态表中错误匹配不同的 ICMPv6 状态
FreeBSD-SA-24:06.ktrace    2024 年 8 月 7 日    ktrace(2) 在执行 setuid 二进制文件时未正确分离
FreeBSD-SA-24:07.nfsclient    2024 年 8 月 7 日    NFS 客户端接受包含路径分隔符的文件名
FreeBSD-SA-24:08.openssh    2024 年 8 月 7 日    OpenSSH 预认证异步信号安全问题
FreeBSD-SA-24:09.libnv    2024 年 9 月 4 日    libnv 中的多个漏洞
FreeBSD-SA-24:10.bhyve    2024 年 9 月 4 日    bhyve(8) 通过 TPM 设备直通导致的特权用户逃逸
FreeBSD-SA-24:11.ctl    2024 年 9 月 4 日    ctl(4) CAM 目标层的多个问题
FreeBSD-SA-24:12.bhyve    2024 年 9 月 4 日    bhyve(8) 通过 USB 控制器直通导致的特权用户逃逸
FreeBSD-SA-24:13.openssl    2024 年 9 月 4 日    OpenSSL 中 X.509 名称检查可能导致的 DoS
FreeBSD-SA-24:14.umtx    2024 年 9 月 4 日    umtx 内核崩溃或使用后释放
FreeBSD-SA-24:15.bhyve    2024 年 9 月 19 日    bhyve(8) XHCI 仿真中越界读取访问
FreeBSD-SA-24:16.libnv    2024 年 9 月 19 日    libnv 中的整数溢出
FreeBSD-SA-24:17.bhyve    2024 年 10 月 29 日    bhyve 管理程序中的多个问题
FreeBSD-SA-24:18.ctl    2024 年 10 月 29 日    ctl(4) CAM 目标层中的不受限制分配
FreeBSD-SA-24:19.fetch    2024 年 10 月 29 日    fetch(1) 参数的证书吊销列表功能失效

勘误通知
勘误编号    日期    主题
FreeBSD-EN-24:10.zfs    2024 年 6 月 19 日    ZFS 内核内存泄漏
FreeBSD-EN-24:11.ldns    2024 年 6 月 19 日    LDNS 使用了 resolv.conf 中注释掉的 nameserver
FreeBSD-EN-24:12.killpg    2024 年 6 月 19 日    killpg 中的锁顺序反转(Lock order reversal,LOR)导致的活锁
FreeBSD-EN-24:13.libc++    2024 年 6 月 19 日    传递给堆分配的 std::string 删除操作的大小不正确
FreeBSD-EN-24:14.ifconfig    2024 年 8 月 7 日    ifconfig 掩码分配错误
FreeBSD-EN-24:15.calendar    2024 年 9 月 4 日    cron(8)/periodic(8) 会话登录
FreeBSD-EN-24:16.pf    2024 年 9 月 19 日    pf 中的 ICMPv6 状态处理错误
FreeBSD-EN-24:17.pam_xdg    2024 年 10 月 29 日    登录时 XDG 运行目录的文件描述符泄漏

用户空间
本节介绍用户空间应用程序、贡献软件和系统工具的更改与新增内容。env(1) 增加了一个用于更改目录的参数。此功能类似于 GNU 版 env 的功能,但不支持长选项(译者注:即 -- 此类参数)。(由 Klara, Inc. 赞助)

第三方应用程序
• bc 已更新至 7.0.2。
• libarchive 已更新至 3.7.7。
• libcxxrt 已更新至供应商快照。
• libpcap 已更新至 1.10.5。
• tcpdump 已更新至 4.99.5。
• openssl 已更新至 3.0.15。
• unbound 已更新至 1.22.0。

已弃用应用程序
gpart(8) 已经取代 fdisk(8) 很久了,但后者未被删除。运行此应用程序时,将显示迁移到 gpart(8) 的警告。

云端支持
本节介绍云环境支持方面的变化。

• nuageinit 启动脚本现在支持 OpenStack 网络配置(由 OVHCloud 赞助)。
• FreeBSD 项目现在可发布符合 OCI 标准的容器镜像。
• Amazon EC2 云环境中的 shutdown 和 reboot API 现在可支持 arm64 实例。更新至 FreeBSD 14.2-RELEASE 的旧实例需要在 /boot/loader.conf 中设置 debug.acpi.quirks="8"。(由亚马逊赞助)
• FreeBSD 项目现在发布了“精简版(small)”的 EC2 镜像。精简版镜像在“基础版(base)”中移除了调试符号、测试、32 位库、LLDB 调试器、Amazon SSM Agent 和 AWS CLI。(由亚马逊赞助)

设备与驱动程序
本节介绍自 FreeBSD 14.1-RELEASE 以来设备和驱动程序的更改与新增内容。

设备驱动程序
• ena 驱动已更新至 2.8.0。(由 Amazon, Inc. 赞助)
• ice 驱动已更新至 1.43.2-k。(由英特尔赞助)
• ice_ddp 已更新至 1.3.41.0。(由英特尔赞助)
• ig4(4) 驱动新增了对 Meteor Lake 的支持。
• 增加了对 ACPI GPIO _AEI 对象的支持。(由亚马逊赞助)
• 已在所有架构上启用 nvme(4) 和 nvmecontrol(8)。(由 Chelsio Communications 和奈飞赞助)

弃用和删除的驱动程序
• 计划在 FreeBSD 15.0 中删除 agp(4),手册页已标注为弃用。
• 计划在后续版本中删除 syscons(4),手册页已标注为弃用,建议用户迁移至 vt(4)。(由 FreeBSD 基金会赞助)

存储
本节介绍文件系统及其他本地和网络存储子系统的更改与新增内容。

ZFS
OpenZFS 已更新至版本 2.2.6。

启动加载程序的更改
本节介绍启动加载程序、启动菜单及其他与启动相关的更改。

启动加载程序的更改
BIOS 启动加载程序现在支持 gzip 和 bzip2 格式,但不支持图形模式(EFI 启动加载程序保持不变,所有这些格式都支持。)(由奈飞赞助)

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

网络协议
对网络栈进行了大量改进,涉及性能提升以及对 sctp(4) 栈的错误修复。

一般网络
• 为驱动 igc(4) 新增了 AIM(Adaptive Interrupt Moderation,自适应中断调节/中断裁决)支持。(由 Rubicon Communications, LLC ("Netgate") 和 BBOX.io 赞助)
• 此功能还添加到了驱动 lem(4) 和 em(4) 中。(由 Rubicon Communications, LLC ("Netgate") 和 BBOX.io 赞助)

硬件支持
本节介绍了对物理设备、虚拟化环境和硬件的一般支持,以及不属于其他章节的硬件更新。

请查看 14.2-RELEASE 硬件支持列表以及平台页面以了解完整的支持 CPU 架构列表。

处理器支持
新增对 POWER10 和 POWER11 的初步支持。

虚拟化支持
• 现在可识别 NVMM 虚拟机管理程序。
• 在 bhyve(8) 的 VNC 服务器中使用 www/novnc 客户端时,色彩显示已修复。

Ports 与软件包基础设施
本节介绍 FreeBSD Ports、软件包基础设施以及软件包管理和安装工具的更改。

安装程序
FreeBSD 安装程序 bsdinstall(8) 现在能在 FreeBSD 基本系统安装完成后下载和安装固件包。

软件包更改
已将软件包 net/wifi-firmware-kmod@release添加到 DVD 软件包中,以提供 WiFi 驱动所需固件。

关于后续 FreeBSD 版本的一般说明
预计 FreeBSD 15.0 将不再支持除 armv7 以外的 32 位平台。armv6、i386 和 powerpc 平台已被弃用并将被删除。但 64 位系统仍可运行旧的 32 位二进制文件。

FreeBSD 项目计划在 FreeBSD 15.0 和 stable/15 中将 armv7 作为二级(Tier 2)架构继续支持。然而,项目方预计 armv7 可能会在 FreeBSD 16.0 中被删除。FreeBSD 项目将会在 15.0 发布时更新在 15.x 和 16.x RELEASE 中 armv7 的支持状态。

通过选项 COMPAT_FREEBSD32 在 64 位平台上运行 32 位二进制文件的支持将至少延续到分支 stable/15 和 stable/16。此外,通过 cc -m32 编译单个 32 位应用程序的支持也将至少延续到分支 stable/15,该分支中将包含适当的头文件(/usr/include)和库(/usr/lib32)。

自 FreeBSD 15.0 起,Ports 系统将不再支持被弃用的 32 位平台。Ports 后续版本将不再提供用于弃用的 32 位平台的二进制软件包,也不支持使用 Ports 构建这些平台的软件包。

FreeBSD stable/14 及更早分支将保留现有的 32 位内核和系统支持。在这些分支的支持期间,Ports 系统仍将支持为 32 位系统构建 Ports 和软件包。然而,所有 32 位平台均为二级、三级(Tier-2、Tier-3),因此随着上游停止对 32 位平台的支持,个别 Port 的支持可能会逐步下降。

按照当前的支持计划,stable/14 的生命周期将在 FreeBSD 14.0-RELEASE 发布后约 5 年结束。stable/14 的生命周期结束(EOL)将标志着被弃用的 32 位平台支持的终结,包括源代码发布、预构建软件包和通过 Ports 构建应用程序的支持。随着 14.0-RELEASE 于 2023 年 11 月发布,对被弃用的 32 位平台的支持将于 2028 年 11 月结束。

当 FreeBSD 15.0 发布时,FreeBSD 项目可能选择通过延续某些弃用平台的支持,调整这一计划。所有变更将根据社区反馈以及持续支持这些平台的努力来决定。

----------------------------------------------------------------

----------------------------------------------------------------

----------------------------------------------------------------

----------------------------------------------------------------

----------------------------------------------------------------


----------------------------------------------------------------

----------------------------------------------------------------

----------------------------------------------------------------

----------------------------------------------------------------