英伟达显卡也能跑macOS了:NullMoth驱动免费开源

这半年AI是真的一路狂奔,把苹果的内存和存储买爆了。Mac一个接一个涨价,连Mac mini这种小机器都要六千九起了。苹果涨完价,黑苹果又香了那篇我写过,讲的是三千块怎么攒一台能跑的机器,原理是开机时用OpenCore把PC伪装成Mac。

那篇发出去之后,公众号后台有不少人在讨论黑苹果现在还值不值得折腾。有人问,也有人直接提了一句:现在有开发者做出了英伟达卡的黑苹果驱动。

所以今天把这个项目搬出来说说。

NullMoth驱动首页:英伟达显卡能运行macOS了

NullMoth驱动

项目叫NullMoth Systems,站点是nullmothsystems.com。它干的事一句话能说清:让英伟达显卡在macOS上跑起来,支持macOS 15.5以及更新的版本。

macOS一直不认非苹果的显卡,黑苹果玩家要么靠核显,要么折腾一堆复杂的多显卡方案。这套驱动等于给英伟达卡正经开了个门。

站上有三样东西:驱动本身、1401这个应用(Mac版装驱动,Windows版做启动盘)、还有一个叫Probe的小工具(用U盘启动,扫一遍硬件,把报告发回去,每一份报告都意味着多一种硬件能开机)。

几个数字:驱动当前是2.5.3版,10月22号发布;支持列表里有两百多个显卡ID;站上收录了2464台机器,其中322台有机主亲自发帖确认跑起来了,作者管这种机器叫Nullintosh。AppleInsider、The Mac Observer、VideoCardz、Notebookcheck都报道过,站内收了137篇。

价格这一栏基本是空的:永久免费、不出售、不要账号、不放cookie、不做追踪。唯一挂着的是「请我喝杯咖啡」那个链接,作者说这样能让项目一直免费下去。

中文版站是机器翻的,部分句子读起来有点别扭,关键的地方我后面用人话再讲一遍。

显卡兼容清单

支持的是Turing架构往后的卡:GTX 16系、RTX 20、30、40、50系,外加TITAN RTX、Quadro这些工作站版本和笔记本的T系列。

官方表格的说法相当实在。16系和20系「最不稳,作者自己都这么说」;30系、40系验证可用;50系是作者自己那块RTX 5060,「最不折腾」。

不支持的也写清楚了。10系及更早的卡不行,Pascal、Maxwell、Kepler这些老架构需要另一套内核和固件实现,不在目前这个基于GSP固件的驱动范围内。核显、NPU、AMD和Intel的独显还在开发中。

笔记本有个坑要单独提一句:机器没有MUX(内屏外屏切换的硬件开关)的话,内屏大概率点不亮,得接外接显示器。

安装流程

前置条件先摆出来:你的电脑得先能用OpenCore装上macOS。这一步没搞定,装驱动这步就不用想,1401整套东西是架在OpenCore之上的。另外这个驱动只跑x86_64版本的macOS,M系列芯片的Mac用不了。

Windows版1401干的事跟Boot Camp正好反过来。Boot Camp是给Mac装Windows,它是给普通电脑做一张macOS安装盘。它会检查你的主板、告诉你BIOS该怎么设(4G解码要开、CSM要关),生成对应的启动文件,Windows那边一个字节不动。

Mac版1401是装驱动用的。它动手之前会把每一项要改的地方列给你看,备份你的OpenCore配置,装完还在启动选择器里加一条1401: Remove NVIDIA driver,下次开机选它就把驱动卸干净、配置恢复原样,连着重启都替你做了。

手工装也行,README里有步骤。要改几个OpenCore的设置:关掉Secure Boot(苹果的安全启动),csr-active-config填上指定的值,boot-args加一串参数,再装上Lilu.kext和AMFIPass.kext这几个kext(内核扩展)。装完重启,第一次开机macOS会弹窗要你允许这些系统扩展,允许完再重启一次。

驱动包本身264MB,压缩包里是四个内核扩展加一个Metal插件。

驱动原理

这一段技术味重一点,我尽量讲人话。

macOS上所有图形活儿都走Metal。Metal是Apple自己定制的图形接口,NVIDIA从来没实现过,所以以前在Mac上插英伟达卡,系统根本不认。要让macOS用上英伟达卡,等于凭空白把Metal造一遍。

这套驱动的路子分四步。

第一步是翻译。macOS的应用编译出来的着色器用的是Apple私有的中间语言,外部拿不到,也没法拿去编译给英伟达显卡用。驱动自带一个转换器,把这些私有代码翻成SPIR-V这种开放格式。

第二步是编译。翻出来的SPIR-V交给NVK,那是Mesa开源项目里给英伟达写的Vulkan驱动,配一个叫NAK的编译器,把SPIR-V编译成英伟达显卡认识的机器码。NVK本来是给Linux写的,作者打了一堆补丁让它能在macOS上跑。

第三步是内核。NVK生成的命令要真正落到显卡上,还得有内核层的驱动。这部分直接用NVIDIA自己开源的GPU内核模块,移植到macOS的内核上。macOS的内核跟Linux不是一回事,得换掉一整层系统调用适配的代码。

第四步是固件。显卡开机要跑NVIDIA的GSP固件,这是原厂固件,作者原样搬过来,没改。

显示输出走的是另一条线,四个内核扩展各管一段:NVRM管显卡核心和电源,NVRMFB管显示模式和帧缓冲,NVAccel管加速器,NVRMAGDC负责回答系统关于这块卡的策略问题。

功能上做到了Metal 3,参数缓冲、光线追踪、网格着色器都有;OpenGL通过Apple自己的GL-on-Metal转过去也支持,OpenCL、Core Image、Core ML同样能用。

难在哪:Metal的第三方驱动接口Apple一直不开放,私有的着色器语言只有自家编译器认,等于要从零把Metal搭起来,还得让WindowServer这个系统合成器稳定不出事,它对显示管线顺序的要求,GPU那边的实现根本没法完全配合。站上那句「实话实说」,说的就是这个。

玩之前先备份

项目自己反复强调这是半成品,文档里用的词是WIP,官方页面上也写着「这个驱动还很新,可能暂时无法在所有配置上运行」。仓库里187个issue还开着。

要动的地方也不少:OpenCore配置要改、Secure Boot要关、SIP(系统保护)要放宽、几个kext要装、固件要换。每次重启都可能进不去系统。

手头有多余的机器可以玩,玩坏了重装就是;存着重要数据的机器别拿它当第一台试验机。动手之前先把要用的东西备份一份。

好消息是1401自带退路。它在启动选择器里留了一条卸载驱动的入口,选它就能把系统还原成装之前的样子,OpenCore配置也一并恢复。这个设计比很多黑苹果教程里「手动改EFI」的做法安全得多。

背后的仓库

驱动本体在GitHub上:nullmoth/nvidia-macos-driver。3596个star,739个文件,主力语言是Rust,10月7号建的仓库,最近一次提交是10月22号。

整套东西都开源了:内核扩展、Metal插件、着色器转换器、构建脚本,还有一份34KB的更新日志。发布节奏很密,2.5.3、2.5.2、2.5.1、2.5.0、2.4.4,一天能发好几个版本。

有一点得提醒:许可证是PolyForm Noncommercial 1.0.0,源码随便看随便改,但不许拿它去赚钱。里面的着色器转换器是LGPL,改过的Mesa那部分是MIT。

装驱动的应用1401是另一个仓库,nullmoth/1401,761个star。

免费、开源、还在天天更新,这在这个圈子里不算常见。唯一的要求是作者那边挂了个「请我喝杯咖啡」的链接,钱不钱随你。

如在非博客等其他公共平台看到本文内部涉及的链接消失,可以登录原博客地址或小程序「在下菊座」查看原文。