在 Windows 上做 GPU Unlock

impacifist/Windows-GPU-UNLOCK 的 Windows 路线:一个 UEFI 程序完成解锁后直接链式加载 Windows Boot Manager,显卡在原生 Windows 驱动下保持解锁状态,不必再重启进 Linux。

本站介绍的 Linux 模块必须赶在 NVIDIA 驱动之前加载,代价是重启进 Linux。这个项目反过来:自编译的 UEFI 程序做同一处寄存器写入,然后在同一次启动里把控制权交给 Windows Boot Manager。显卡在原生 Windows 驱动下就是解锁状态。

Windows 安装包

本站用固定版本的 v0.3.1 源码归档构建了一个安装程序。它安装的是脚本、文档和许可证,也就是一份源码拷贝——里面没有任何预编译产物,因为 EFI 镜像必须针对你自己的分区现场编译。固件转储与驱动 DLL 不在其中,也不可能放进去;所以这个安装包省的是「拉源码」这一步,不是「解锁」这一步。

下载安装包 — GPU-Unlock-Windows-0.3.1-Setup.exe

固定源码版本v0.3.1 (9352abd27480)
安装包 SHA-256de4206e1a207597060256b63ea09245ff6acc259c26f97db5a5c50c9ace2aa35
源码归档 SHA-256d81ddec78fb260f6e9bbb0e5d66d4b9d168dbe53222813d2cce9c2e29e07d9c6
上游发布页impacifist/Windows-GPU-UNLOCK v0.3.1

下载 .sha256 校验文件

未签名、非官方:既不是 NVIDIA 也不是 ASUS 或 impacifist 发布的。Windows 会提示未知发布者。运行脚本前请自己核对归档的 SHA-256,编译前先读兼容性页——编译成功不等于可以解锁。

三条启动路线

同一个 EFI 载荷,三种把它摆到 Windows 前面的方式。任选其一,它们不是先后步骤。命令均按固定版本文档原文照抄。

1. 取固定版本源码

拉 v0.3.1 标签,不要用默认分支。文档与 EFI 构建都绑定在那一个提交上,脚本写出的本地文件在不同版本之间不可混用。

git clone --branch v0.3.1 --depth 1 https://github.com/impacifist/Windows-GPU-UNLOCK.git
cd Windows-GPU-UNLOCK

2a. U 盘,不动分区

一块普通 FAT32 U 盘;不新建、不缩容、不改分区类型,也不注册固件启动项。工具会校验五个资产的体积与哈希,生成一个新的本地文件夹——内容需要你自己复制到 U 盘根目录。

python .\tools\prepare_usb.py --assets .\assets --output .\usb-package

2b. 独立的内置 ESP

单独一块至少 1 GiB 的 GPT FAT32 EFI 系统分区,备份后手工准备。Configure.ps1 只写被忽略的本地文件;Build.ps1 编译出带哈希契约的 wrapper 与 child。两者都不改启动设置。

.\internal-boot\Configure.ps1 -UnlockDriveLetter U -WindowsEspGuid 'WINDOWS-ESP-GUID-HERE'
.\internal-boot\Build.ps1 -Clang 'C:\TOOLS\LLVM20\bin\clang.exe' -LldLink 'C:\TOOLS\LLVM20\bin\lld-link.exe'

3. 先落盘,再决定是否注册

只落盘不会改动启动项、启动顺序或快速启动。-Register 会追加一个独立的 F8 项并保留原有启动优先级。文档记录的启动方式是 F8 → GPU Headless UNLOCK,之后不要再按键。

# Stage only: no boot entry, boot-order or Fast Startup change.
.\internal-boot\Headless.ps1 -Assets '.\assets'

# Stage and append a separate F8 entry, retaining existing boot priority.
.\internal-boot\Headless.ps1 -Assets '.\assets' -Register

回滚

一条文档命令就能把 Windows 排回第一。请保留脚本写出的本地状态与备份:它们是恢复输入,不是发布文件。

.\internal-boot\Headless.ps1 -RestoreWindowsFirst

需要你自己准备的五个固件文件

打包工具和 UEFI 程序都会拒绝哈希不匹配的文件,所以「差不多」的版本不能替代。请用固定版本的上游流程,从合法获得的 NVIDIA 输入生成;本站给的是流程链接,不是文件。

  • booter_load_ga102.bin
  • v67-ga102-610.43.03.bin
  • gsp_ga10x.bin
  • gsp_boot_ga102.bin
  • gsp_boot_desc_ga102.bin

这里和安装包里都不分发:NVIDIA 固件、VBIOS/PROM 转储、驱动 DLL,以及与私有机型/分区绑定的 EFI 二进制。生成时一并保留上游的 NVIDIA 许可证与声明。

唯一有记录的成功例子

一台机器、一张卡、一次启动:2026-10-24,ASUS BIOS 3057 上的 RTX 3090 Founders Edition。这些是记录值,不是白名单——代码会重新核对配置、PROM、冷态与驱动代码,不匹配就拒绝。

显卡NVIDIA RTX 3090 Founders Edition, 24 GiB
PCI 标识10de:2204 / subsystem 10de:1454
GPU BDF0000:01:00.0
主板 / BIOSASUS TUF GAMING B650M-PLUS WIFI / BIOS 3057
CPUAMD Ryzen 7 7800X3D
Windows / 驱动Windows 11 Home 26200 / NVIDIA 617.14
启动模式x64 UEFI / Secure Boot disabled
PROM SHA-2568ea297373e9e5d3600ff41ad9fae88f2d14c98c017d100669f7333981da673b4

同卡实测

同一张卡、同一驱动 617.14,解锁前后各取三次运行的中位数,CUDA 12.6 / cuBLAS。单位 TFLOPS。

负载解锁前解锁后变化
FP1670.55125.91+78.5%
BF1670.53128.70+82.5%

为什么它不是一个 Linux 模块

本站的 Linux 模块是常驻的:装上之后每次启动都跑,用内核命令行按卡 opt-in。这个项目是一次性的 UEFI 程序,绑定在特定分区 GUID 与固件画像上;它完成解锁、链式加载 Windows,之后不再驻留。没有内核参数,没有 initramfs drop-in,也没有 DKMS 包。

决定要不要试的几条限制

为单台 PC 构建

可执行文件绑定在实测的 PCI/PROM/MMIO 画像与特定分区布局上。换机器需要另做移植,而不是读一份兼容性报告。

固件自带

那五个资产需要你自己生成。没有它们,打包阶段的哈希校验就过不去,安装包里也补不上。

不要绕过检查

预检的存在意义,就是在机器与代码不匹配时拦下一次 release。跳过它,正是把「一次启动失败」变成「黑屏」或「系统起不来」的做法。

没有长期结论

文档记录的是:一次成功启动、一次基准测试、一段 Windows 会话。长期稳定性、其他游戏、真实负载吞吐都是另外的、尚未验证的问题。