OpenBSD 7.9
OpenBSD 7.9
OpenBSD 7.9 Released May 19, 2026. (60th OpenBSD release) Copyright 1997-2026, Theo de Raadt. 7.9 Song: “Diamond in the Rough” Artwork by Lyra Henderson. OpenBSD 7.9 于 2026 年 5 月 19 日发布(这是第 60 个 OpenBSD 版本)。版权所有 1997-2026,Theo de Raadt。7.9 版本主题曲:“Diamond in the Rough”,艺术设计:Lyra Henderson。
See the information on the FTP page for a list of mirror machines. Go to the pub/OpenBSD/7.9/ directory on one of the mirror sites. Have a look at the 7.9 errata page for a list of bugs and workarounds. See a detailed log of changes between the 7.8 and 7.9 releases.
请查看 FTP 页面以获取镜像站点列表。前往任一镜像站点的 pub/OpenBSD/7.9/ 目录。查看 7.9 版本勘误页面以获取已知漏洞及解决方案列表。查看 7.8 与 7.9 版本之间的详细变更日志。
signify(1) pubkeys for this release: 本版本的 signify(1) 公钥如下:
- openbsd-79-base.pub: RWTSdNN9A3yvWNn7mUjXwv9DOCOUnyfuV+mq1iGPIfD+NhN8EYnEQ1at
- openbsd-79-fw.pub: RWQdmBb/OCe1hXE08xCj5VLnBpGpphy7kYPdU3oWyfnrwswjtl8K385E
- openbsd-79-pkg.pub: RWSw1kDLJJy6OYgnayEMReLV57z2rzx5jYNCghO+2ARwqd6KuwGFWSn7
- openbsd-79-syspatch.pub: RWTJmz/ur68S9e26/JVRr7T88lAPZIF3YgZ3w2lDnf/frAxTerC/DrZ6
All applicable copyrights and credits are in the src.tar.gz, sys.tar.gz, xenocara.tar.gz, ports.tar.gz files, or in the files fetched via ports.tar.gz.
所有适用的版权和致谢信息均包含在 src.tar.gz、sys.tar.gz、xenocara.tar.gz、ports.tar.gz 文件中,或包含在通过 ports.tar.gz 获取的文件中。
What’s New
新特性
This is a partial list of new features and systems included in OpenBSD 7.9. For a comprehensive list, see the changelog leading to 7.9. 以下是 OpenBSD 7.9 中包含的部分新特性和系统改进。如需完整列表,请参阅 7.9 版本的变更日志。
Platform-specific improvements:
平台特定改进:
-
arm64: Enabled ice(4) on arm64. Added support for the RK3588 and RK3576 SoCs with new or additions to existing drivers. Added support for the Genesys Logic GL9755 SDHC controller (which includes the SDHC controller on some of the Apple Silicon laptops) to sdmmc(4).
-
arm64: 在 arm64 上启用了 ice(4)。增加了对 RK3588 和 RK3576 SoC 的支持,包括新增驱动或对现有驱动的补充。在 sdmmc(4) 中增加了对 Genesys Logic GL9755 SDHC 控制器的支持(包括部分 Apple Silicon 笔记本电脑上的 SDHC 控制器)。
-
amd64: Added SMU support to amdpmc(4). The SMU is a microcontroller buried deep in the bowels of AMD SoCs and needs to be tickled in order to reach the lowest power states in suspend. Disabled Panel Self Refresh (PSR) in amdgpu to avoid a potential hang on a ThinkPad X13 gen 6. Increased MAXCPUs on amd64 to 255. On amd64, we now zero the DM PTE/PDE pages before use. This fixes a bug on machines with more than 512GB RAM. Mitigated floating point state leakage observed on AMD Zen/Zen+ (Zen 1).
-
amd64: 为 amdpmc(4) 增加了 SMU 支持。SMU 是深埋在 AMD SoC 内部的微控制器,需要对其进行操作才能在挂起时进入最低功耗状态。在 amdgpu 中禁用了面板自刷新 (PSR),以避免 ThinkPad X13 Gen 6 上可能出现的死机。将 amd64 的 MAXCPUs 增加到 255。在 amd64 上,现在在使用前会将 DM PTE/PDE 页面清零,这修复了内存超过 512GB 的机器上的一个 Bug。缓解了在 AMD Zen/Zen+ (Zen 1) 上观察到的浮点状态泄漏问题。
-
luna88k: Switched luna88k compiler to gcc4. Switched luna88k to PIE (Position Independent Executables) by default.
-
luna88k: 将 luna88k 编译器切换为 gcc4。默认将 luna88k 切换为 PIE(位置无关可执行文件)。
-
riscv64: Systems with a SpacemiT K1 SoC gained support with the following (and more) changes: Added smtclock(4), a driver for the clock/reset controller on the SpacemiT K1 SoC. Added many more drivers to support the SpacemiT K1 SoC. Implemented support for the Zicbom (Cache-Block Management) and Svpbmt (Page-Based Memory Types) extensions. Added the SpacemiT K1 device trees onto the riscv64 miniroot making them accessible during installation. Made “Instruction access fault” (EXCP_FAULT_FETCH) traps being treated as PROT_EXEC. This fixes random SIGSEGV on the SpacemiT X60 cores. Added SpacemiT K1 support to dwpcie(4).
-
riscv64: 搭载 SpacemiT K1 SoC 的系统获得了支持,包含以下(及更多)变更:增加了 smtclock(4),这是用于 SpacemiT K1 SoC 时钟/重置控制器的驱动程序。增加了更多驱动程序以支持 SpacemiT K1 SoC。实现了对 Zicbom(缓存块管理)和 Svpbmt(基于页面的内存类型)扩展的支持。将 SpacemiT K1 设备树添加到 riscv64 miniroot 中,使其在安装过程中可用。将“指令访问故障”(EXCP_FAULT_FETCH) 陷阱处理为 PROT_EXEC,这修复了 SpacemiT X60 核心上随机出现的 SIGSEGV 问题。为 dwpcie(4) 增加了 SpacemiT K1 支持。
-
Other architectures: Fixed various errors on big-endian systems in ice(4) to make it work on sparc64. Changed powerpc64 memory barriers to “sync”. Reworked and improved TLB shootdown on alpha. Hoisted mips64 CPU accounting to get multiple softnet threads on MP systems. Made sure to initialize all FPU registers on sparc64 to all 1 (or -NaN), and not only the lower 32 registers. Fixed parking mutex on sun4u sparc64 cpus.
-
其他架构: 修复了 ice(4) 在大端系统上的各种错误,使其能在 sparc64 上工作。将 powerpc64 的内存屏障更改为 “sync”。重构并改进了 alpha 架构上的 TLB shootdown。提升了 mips64 的 CPU 记账功能,以便在多处理器系统上获得多个 softnet 线程。确保 sparc64 上的所有 FPU 寄存器(而不仅仅是低 32 位寄存器)都被初始化为全 1(或 -NaN)。修复了 sun4u sparc64 CPU 上的 parking mutex。
Various kernel improvements:
内核改进:
-
Introduced a mechanism to manage CPU cores with different speeds in the scheduler. The sysctl(8) variable “hw.blockcpu” takes a sequence of 4 letters: S (for SMT), P (regular performance CPU), E (efficient CPU, generally 80% to 50% as fast), and L (lethargic CPU) which are even slower. Set this to select CPUs to kick out of the scheduler (SL by default). Currently works on amd64 and arm64.
-
引入了一种在调度器中管理不同速度 CPU 核心的机制。sysctl(8) 变量 “hw.blockcpu” 接受 4 个字母的序列:S(代表 SMT)、P(常规性能 CPU)、E(高效 CPU,通常速度为 50%-80%)和 L(迟钝 CPU,速度更慢)。设置此项可选择从调度器中剔除的 CPU(默认为 SL)。目前适用于 amd64 和 arm64。
-
Replaced the cas spinlock in kernel mutexes with a “parking” lock. Stopped forcing the page daemon to sleep when there are outstanding paging requests. Implemented a ddb(4) stop command that sends a SIGSTOP to the specified pid. Made ddb(4) output visible when entering ddb from X on amdgpu. Added infrastructure to allow future support of up to 52 partitions per disk. Made changes to avoid memory allocation from within the swapencrypt path of the pagedaemon by pre-allocating 32 swapclusters up-front. Changed the strategy by which the pagedaemon creates free memory by overshooting the creation of inactive and free pages, in order to defragment memory. Refuse to load a binary without a PT_LOAD exec segment.
-
将内核互斥锁中的 cas 自旋锁替换为“parking”锁。当存在未完成的分页请求时,不再强制页面守护进程休眠。实现了 ddb(4) 的 stop 命令,可向指定 PID 发送 SIGSTOP。使得在 amdgpu 上从 X 进入 ddb 时,ddb(4) 的输出可见。增加了基础架构,以支持未来每个磁盘最多 52 个分区。通过预先分配 32 个 swapclusters,避免了在页面守护进程的 swapencrypt 路径中进行内存分配。更改了页面守护进程创建空闲内存的策略,通过超额创建非活动和空闲页面来对内存进行碎片整理。拒绝加载没有 PT_LOAD 执行段的二进制文件。
Suspend/Hibernate Support:
挂起/休眠支持:
- Implemented delayed hibernation: In order to prevent running out of battery while suspended, this feature wakes up a suspended system after a configurable time to then immediately perform a hibernation. The machdep.hibernatedelay sysctl(2) is used to configure the number of seconds after which the system will wake up from suspend and hibernate itself.
- 实现了延迟休眠:为了防止在挂起期间电池耗尽,此功能会在可配置的时间后唤醒挂起的系统,并立即执行休眠。使用 machdep.hibernatedelay sysctl(2) 来配置系统从挂起状态唤醒并自动休眠的秒数。
SMP Improvements:
SMP 改进:
- Unlocked socket splicing. Unlocked icmp6_sysctl(). Unlocked the IGMP slow timeout. Enabled parallel fault handling on amd64 and arm64. Made bse(4) interrupts mp-safe. Protected the IGMP and MLD6 fast timers with an rwlock.
- 解锁了 socket splicing。解锁了 icmp6_sysctl()。解锁了 IGMP 慢速超时。在 amd64 和 arm64 上启用了并行故障处理。使 bse(4) 中断支持多处理器安全 (mp-safe)。使用 rwlock 保护了 IGMP 和 MLD6 快速定时器。
Direct Rendering Manager and graphics drivers:
直接渲染管理器 (DRM) 和图形驱动:
- Updated drm(4) to Linux 6.18.22.
- 将 drm(4) 更新至 Linux 6.18.22。
VMM/VMD and virtualization improvements:
VMM/VMD 及虚拟化改进:
- Adopted PCI-based semantics for reading unsupported or invalid registers by returning all 1’s. Newer Linux kernels have started using 128-bit feature spaces. Added sysctl(8) machdep.vmmode to indicate status as a host or guest (and SEV mode). Added vmboot, a tiny kernel that allows sysupgrade(8) to work for vmd(8) VMs. Allowed cd(4)/vioscsi(4) on a VM to use confidential computing methods, e.g. AMD SEV. Fixed a segfault in vmd(8) during vmmci timeout firing. Enabled 32-bit direct kernel launch for both amd64 and i386 in vmd(8). Fixed a race in vmd(8) vm pause barrier usage. Fixed a race in vmm(4) vm termination path. Added emulation of AMD SysCfg MSR in vmm(4). Made OpenBSD work on Apple Virtualization. Only expose pvclock(4) in vmm(4) if tsc frequency is known. Reduced vmd(8) lowmem area in the memory map to help Linux guest reboot issues. Prevented vmd(8) pause deadlock when vcpu doesn’t halt. Fixed timer emulation-related OpenBSD-i386 VM hangs when using the i8254 hardware timecounter with vm.
- 采用基于 PCI 的语义,通过返回全 1 来读取不支持或无效的寄存器。较新的 Linux 内核已开始使用 128 位特性空间。增加了 sysctl(8) machdep.vmmode 以指示主机或客户机状态(以及 SEV 模式)。增加了 vmboot,这是一个微型内核,允许 sysupgrade(8) 用于 vmd(8) 虚拟机。允许虚拟机上的 cd(4)/vioscsi(4) 使用机密计算方法,例如 AMD SEV。修复了 vmd(8) 在 vmmci 超时触发期间的段错误。在 vmd(8) 中为 amd64 和 i386 启用了 32 位直接内核启动。修复了 vmd(8) 虚拟机暂停屏障使用中的竞争条件。修复了 vmm(4) 虚拟机终止路径中的竞争条件。在 vmm(4) 中增加了 AMD SysCfg MSR 的模拟。使 OpenBSD 能够在 Apple Virtualization 上运行。仅在已知 tsc 频率时才在 vmm(4) 中公开 pvclock(4)。减少了内存映射中 vmd(8) 的低内存区域,以帮助解决 Linux 客户机重启问题。防止了 vcpu 不停止时 vmd(8) 的暂停死锁。修复了在使用 i8254 硬件时间计数器与虚拟机时,与定时器模拟相关的 OpenBSD-i386 虚拟机死机问题。