Technology · 2019年7月31日

我的第一次Hackintosh – Hades Canyon NUC

决定倒腾“黑苹果”的契机,其实是一个视频。一个视频剪辑教学频道的视频,里面主要验证的是mac mini到底适不适合视频剪辑。

在视频的最后,主讲人说了这么一句:其实如果你喜欢这种mini主机的话,不妨看看Intel的NUC,搭配上“黑苹果”,比Mac mini更好。

于是我开始研究了Intel的NUC,恰巧今年新款NUC发布,代号Hades Canyon,冥王峡谷。

对比一下Mac mini 2018 和 Hades Canyon吧,见下图:

Mac mini vs Hades Canyon

CPU上,尽管Mac mini是i3或者i5,而冥王峡谷是i7,但核心上其实Mac mini还稍占优势。不过冥王峡谷也不输,4核心8线程也很给力。

GPU呢,Mac mini和冥王峡谷就没有可比性了,一个集成在CPU里的显卡,一个是独立于CPU的AMD显卡。这也就是为什么冥王峡谷主打的是“游戏”概念,而Mac mini是“办公”。

其他的,RAM和存储都是自己花钱往上插,不过如果都用上32GB内存+1TBSSD硬盘的话,Mac mini需要话加$1000,而冥王峡谷大约是加$600。

扩展性上,Mac mini也是打不过冥王峡谷的。价格嘛,其实我觉得还好,Mac mini贵一点。

好了,其实看到GPU,也能理解为什么主持人说,如果用作视频剪辑的话,买个NUC是个更好的选择。


我最终入手的是冥王峡谷高性能那款,NUC8i7HVK。配了32G RAM+1.5TB SSD硬盘,其中1TB的Samsung 970 EVO作为存储盘,512GB的高性能Samsung 970 PRO作为启动盘。

总共花费919+220+181+183=$1503……也不便宜哈,不过Mac mini同配置要上$2000了。

拿到冥王峡谷的那一刻,其实真心喜欢上它 – 相比Mac mini它实在是太小巧了!

接下来,就是漫长的、痛苦的、悲剧不断、苦尽甘来的“黑苹果”之路。


首先,Hackintosh(“黑苹果”)最有名的论坛叫tonymacx86.com。我的Hackintosh初级知识都来自于泡在这个论坛里,看各位大神讨论来讨论去的。

Hackintosh的根本工作,是通过Clover来加载苹果系统。由于苹果系统的封闭性,所以很多事情外部厂商并没有太多的权限或者能力去做,比如说驱动。例如一个WIFI模块,厂商就不能直接提供一个驱动让苹果系统加载起来。相反的,苹果自家设备用到的硬件,自己就会有相应的软件驱动打包在操作系统里。

所以更多时候,Hackintosh做的事情就是让自己的硬件尽量或者“看起来像”是苹果自己的规定的硬件。比如,如果你想搭配一台Hackintosh的话,你最佳的解决方案是买所有在苹果设备中出现过的硬件型号,这样需要解决的问题最少。

对于Hades Canyon来说,在这儿就有几个难点:

  1. GPU。冥王峡谷的GPU虽然远好于Mac mini,但问题是,Vega M GL从来没有在任何一个苹果设备中使用过。
  2. WIFI和蓝牙。其实WIFI和蓝牙相比之下却是好解决的那个。冥王峡谷的WIFI模块本身是没有出现在任何一个苹果设备中的,但它是可更换的,因此更换成一个兼容的即可。

于是前些日子就混在tonymacx86.com的论坛里,尤其是这个帖子《Intel Hades Canyon NUC?》。依照里面所述的一步一步制作安装优盘,更改Clover配置文件,替换各个补丁等等。

GPU的问题还是最大的。由于没有现成的“蓝本”可以替换,因此不论用哪种配置文件,都有大大小小的问题。大家尝试用Vega 12来映射Polaris 22,因为从代码上看这两个GPU很近似:

the low-end Polaris 22 GPU (Radeon RX Vega M GL) has the same number of shading and texture mapping units as the high-end Vega 12 GPU (Radeon Pro Vega 20).

当把device-id调整过来之后,基本上这块显卡就能工作了,加速什么的都是可以的,但是最大的问题莫过于Metal的不兼容,导致苹果系统中原生的部分很多都是乱码(苹果早期的操作系统都是用的OpenCL,而近期改成了Metal,据说效率更高)。有时候看着各种glitches心里真心闹腾。

不过大部分功能都是可以使用的。我在ebay上从中国卖家那里买了一块Broadcom的BCM94352Z M.2 的WIFI/Bluetooth模块,换上去Inject后WIFI和蓝牙也可以用了。当然还有不少小问题,比如读卡器不能用,耳机只有一个口可以用,不能休眠等等。

至此Hackintosh初战告捷。


安稳地使用了一段时间后,我被Metal那个问题搞的有些不爽了。持续地翻各种帖子,但是貌似没有人有很完整地解决办法。

直到有一天,有人在之前的帖子出“非常含蓄地”提到另一个地方:https://www.insanelymac.com/forum/topic/339291-guide-hac-mini-osx-mojave-on-intel-hades-canyon-nuc8i7hvknuc8i7hnk/

这篇文章写在了InsanelyMac,由于作者osy的方法中并没有用到任何tonymacx86.com社区的任何工具,因此他并没有被允许发布到tonymacx86.com的论坛上。

作者osy是一个有着硬件和平台工程师背景的,但是第一次接触Hackintosh的人,恰巧他最近便宜入手了一台Hades Canyon,也受苦于Metal,于是他深入研究,亲自着手解决Metal的问题。(瞧瞧人家……)

Osy的代码提交在https://github.com/osy86/Polaris22Fixup上,着手点是AMDMTLBronzeDriver.bundle这个Metal driver。我看他反编译了这个Driver,然后写了自己的补丁,覆盖进去。

更厉害的是,作者osy特意写了文档,来描述他解决问题的过程和方法:https://osy.gitbook.io/hac-mini-guide/details/metal-driver-fix,不得不令人敬佩。

在他的网站上,还有一篇安装向导:https://osy.gitbook.io/hac-mini-guide/installation-guide/getting-started。于是我毅然决然地,依照他的方法,重装了Hackintosh。

结果呢,在过程中又出现了各种问题,哈哈,让我一度抓狂。我将在文章最后的部分列出来我两次Hackintosh遇到的各种问题,以方便如果有人遇到同样的问题。

最终,在osy的方法上,另一个人rongu解决了iGPU等问题,目前我的Hades Canyon基本上处于完美状态,唯一的小瑕疵是CPU的vt-d无法启用(vt-d在跑虚拟机的时候能有性能提升,不开就获得不到这些性能提升,但功能上没有任何问题),因为它和我买的那块WIFI网卡有冲突。准确地说,因为我买的WIFI的型号,必须要inject,而目前inject的方法,会和vt-d有冲突。希望以后有人能找到冲突点,解决掉它。

相较于之前那次Hackintosh,GPU加速正常,iGPU工作正常,没有Glitches,读卡器工作正常(难以置信,因为之前的帖子里说不可能工作),声卡工作正常,USB口正常,ThunderBolt端口传说也正常(我没有设备),WIFI正常,蓝牙正常。

感谢osy!


更新(10/20/2019):Catalina我来了!

最近MacOS更新了10.15,也就是Catalina,加了不少有趣的东西。

在网上简单调研了一下之后,发现Hackintosh升级Catalina“貌似”很straightforward……所以就脑袋一热也没有备份就直接升级了(强烈不推荐,同学们还是要好好备份,time-machine,EFI等等一个都不能少)

升级过程还是很顺利的,但是升级后,Metal的那些问题又出现了,图标仍是碎成渣渣……研究过后的解决办法是使用osy的最新Polaris22Fixup,可以从https://github.com/osy86/HaC-Mini/releases下载,我用的v2.2版本。Metal问题解决。

从Mojave升到Catalina唯一遗留的问题是Bluetooth无法识别(可能与之相关的是在启动后无线网卡到工作状态比较慢)。根据之前的经验,这个问题一定出在无线网卡上面,很可能是个“普遍”问题。于是在简单Google一下后,在InsanelyMac网站中找到这篇讨论:BrcmPatchRAM2 for 10.15 Catalina

很明显,原因是BrcmPatchRAM2在Catalina下不兼容。判断和讨论过程此处略,解决办法是下载修正的BrcmFirmwareData.kext, BrcmPatchRAM3.kext 和 BrcmBluetoothInjector.kext 三个文件,并且删除掉之前的BrcmPatchRAM2.kext(如果不删除,Bluetooth仍不工作)。

Github地址:https://github.com/acidanthera/BrcmPatchRAM

我使用的版本打包:BrcmPatchRAM-2019-10-17

至此,重启,一切OK。


Hackintosh过程中遇到的问题:

  • 启动U盘无法在Bios中识别

我在Hackintosh过程中遇到过多次U盘无法在Bios识别,一种情况某个接口不能识别,但换个接口就能识别。解决办法是关机-拔掉电源-反复按电源键放电,然后原来不能识别的USB接口就又可以识别了。

另一个情况非常诡异,也不算不能识别,查上U盘后BISO并不能正确显示,名字只是MAC OS X(应该是厂商名+OS内容+序号什么的),而且不能正确引导。而且在这种情况下,不论换什么U盘,怎样重新制作U盘,现象都一样的。

我花了整整一周多的时间困在这个问题上。好在经过不断查询,终于发现有人和我遇到了同样的问题。Root cause是优盘的EFI partition出了问题,解决办法是重新做一个EFI分区,然后重新刷U盘,就可以正常引导了。

1. make a bootable usb2.0 stick with unibeast.
2. mount and copy EFI partition file to somewhere.
3. delete the origin EFI parition and spit it to two same EFI partition using disk utils like diskgenius.
4. copy the EFI files BACK TO THE SECOND EFI PARTITION

最逗的是,我当时跑到Intel的客户支持网站,和一个TS聊我所有的试验结果,然后对方非常坚定地认为他们的主板出了问题,并且答应给我退货……

  • 安装界面一直不出现,从USB2换到USB3

论坛里有人说,安装是必须要把U盘插到USB2那个接口上,也就是前面板的黄色接口。而我在用osy的方法时,发现插在USB2接口上会带来安装界面一直不出现的问题。当我把它查到USB3接口上(也就是前面板蓝色接口)后,问题解决。

  • Load安装界面时反复重启,进不了安装界面;或者进不了登陆界面

这个出现在早起osy/rongu还没有解决iGPU问题的时候,由于osy的Guide中忘记提到要关闭iGPU,因此在安装时陷入了反复重启的结果。

目前虽然解决iGPU的问题,但是如果发现启动时登陆界面不出现,第一个想到的还是要关掉iGPU再试试。

  • TimeMachine 恢复后,登陆无限菊花

我在重新安装Hackintosh之后,恢复了之前的TimeMachine的备份。等待许久后,登陆界面出现。此时输入密码后,就一直“转菊花”……我很多次在等待几十分钟后,就宣告了失败,执行了重装。但其实,真正的解决方法是:耐心等!我最后一次等了将近两个小时,终于登陆成功,而之后的登陆也再也没有出现过那么久的“菊花”。

  • TimeMachine 恢复后,有些驱动不能用

这个问题当时让我很头疼,尤其是本地WIFI还没解决,但我买的外置WIFI卡又不能正常工作的时候。后来发现原来TimeMachine恢复后,很多驱动需要重新给予权限才可以正常工作。

  • 启动时显示AppleACPICPU busy

这个其实我相信有可能有更多的原因,但其实这个AppleACPICPU busy出现的时候,恰好是我调整各种Bios,各种尝试启停iGPU和vt-d的时候。而且它并不是一个blocker,只要耐心等,最终都会过的。

  • 重启后黑屏,无法显示登陆界面

这个是目前最诡异的问题了!当我恢复TimeMachine后,解决了所有驱动问题,结果重启后黑屏,无法显示登陆界面!随意敲键盘也没有效果。显示器也会说因为没有信号输入而自动关闭……我曾经几次选择重装来找问题,但是目前我找到了一个解决办法,就是:盲输密码。当我在这种黑屏阶段,盲输登陆密码时,就可以看到硬盘灯狂闪,等个十几秒,登陆界面就出现了。

  • BCM94352Z WIFI模块替换后无驱动

这个问题其实是osy的方法和普通hackintosh不一样导致的。普通的Hackintosh后,把相应WIFI inject文件放到/L/E 或者/S/L/E 即可正常工作,但是在osy的方法中不行。解决办法是将驱动放到Clover/kexts/Others中,并且保证vt-d disabled。这个问题我发到了osy那个论坛然后他亲自回复了我:

FYI if you’re using my config, SIP is fully enabled which is why /L/E and /S/L/E kext won’t work.


一些性能测试结果:

CPU:

https://browser.geekbench.com/v4/cpu/13989709

Graphic:

https://browser.geekbench.com/v4/compute/4323708