在 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-256 | de4206e1a207597060256b63ea09245ff6acc259c26f97db5a5c50c9ace2aa35 |
| 源码归档 SHA-256 | d81ddec78fb260f6e9bbb0e5d66d4b9d168dbe53222813d2cce9c2e29e07d9c6 |
| 上游发布页 | impacifist/Windows-GPU-UNLOCK v0.3.1 |
未签名、非官方:既不是 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-UNLOCK2a. U 盘,不动分区
一块普通 FAT32 U 盘;不新建、不缩容、不改分区类型,也不注册固件启动项。工具会校验五个资产的体积与哈希,生成一个新的本地文件夹——内容需要你自己复制到 U 盘根目录。
python .\tools\prepare_usb.py --assets .\assets --output .\usb-package2b. 独立的内置 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
唯一有记录的成功例子
一台机器、一张卡、一次启动: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 BDF | 0000:01:00.0 |
| 主板 / BIOS | ASUS TUF GAMING B650M-PLUS WIFI / BIOS 3057 |
| CPU | AMD Ryzen 7 7800X3D |
| Windows / 驱动 | Windows 11 Home 26200 / NVIDIA 617.14 |
| 启动模式 | x64 UEFI / Secure Boot disabled |
| PROM SHA-256 | 8ea297373e9e5d3600ff41ad9fae88f2d14c98c017d100669f7333981da673b4 |
同卡实测
同一张卡、同一驱动 617.14,解锁前后各取三次运行的中位数,CUDA 12.6 / cuBLAS。单位 TFLOPS。
| 负载 | 解锁前 | 解锁后 | 变化 |
|---|---|---|---|
| FP16 | 70.55 | 125.91 | +78.5% |
| BF16 | 70.53 | 128.70 | +82.5% |
为什么它不是一个 Linux 模块
本站的 Linux 模块是常驻的:装上之后每次启动都跑,用内核命令行按卡 opt-in。这个项目是一次性的 UEFI 程序,绑定在特定分区 GUID 与固件画像上;它完成解锁、链式加载 Windows,之后不再驻留。没有内核参数,没有 initramfs drop-in,也没有 DKMS 包。
决定要不要试的几条限制
为单台 PC 构建
可执行文件绑定在实测的 PCI/PROM/MMIO 画像与特定分区布局上。换机器需要另做移植,而不是读一份兼容性报告。
固件自带
那五个资产需要你自己生成。没有它们,打包阶段的哈希校验就过不去,安装包里也补不上。
不要绕过检查
预检的存在意义,就是在机器与代码不匹配时拦下一次 release。跳过它,正是把「一次启动失败」变成「黑屏」或「系统起不来」的做法。
没有长期结论
文档记录的是:一次成功启动、一次基准测试、一段 Windows 会话。长期稳定性、其他游戏、真实负载吞吐都是另外的、尚未验证的问题。