保姆级黑苹果教程:让你的Ryzen+A卡用上最新版本的MacOS

0x00:前言

教程那么多了,为什么要还要写?(博主的废话,可跳过)

  • 几个月前,博主(学生狗一枚)在用GoodNotes(一个很有名的笔记软件)记笔记时,忽然发现居然有Mac版的GoodNotes,于是兴冲冲的拿家里人的MacBook Air体验了一番,瞬间就欲罢不能:看网课时想要截个图直接往电脑版的软件里一拖就完事,看pdf的体验也堪称完美。奈何楼主刚刚组装了一台Ryzen5 3600的主机,实在不可能再整台MacBook Pro或iMac了。
  • 于是,博主走上了啃黑苹果的不归路。最开始直接百度一下,奈何国内点击量高的几篇教程直接给👴看晕了,这东一笔西一笔的都在说些啥?
  • 百度搜不到啥有用的教程,只得求助Google了,结果瞬间就搜到了几篇高质量的(英文)教程。看完之后的感觉真如醍醐灌顶一般。跟着教程一做,嘿,轻松秒杀!
  • 整完活了就好好用呗,费劲写什么教程呢?所以接下来的一个月博主丝毫没有考虑写教程的事…直到我想起来我好像很久没写个博客之类的东西了,最近又一直在摸鱼,属实没啥可写的。所以不如花点心思,把这次整活的过程记录一下,既为自己的博客加点点击量,又给想整黑苹果的小伙伴们提供一篇高质量的教程。
  • 那么废话不多说,上硬货吧!

几个概念的解释

  • 现有的教程里大多上来就给你三板斧,抛出一大堆专有名词,我觉得很多人就是被这些不负责任的博文给劝退了。所以博主想先把后文涉及到的专有名词给大家缕一缕,让大家心里有点准备。
OpenCore和Clover:
  • 两个引导工具,目的是欺骗MacOS,让它以为自己真的运行在一台Mac上,从而顺利的安装和启动。可以把它们理解为一个极其简单的操作系统,我们的电脑启动时先启动OpenCore(或Clover),再由它帮助我们启动黑苹果系统
  • 目前来说Clover的生态最健全,但OpenCore的设计更加简洁和完善,你甚至可以直接在OpenCore建立的环境中用原生的安装U盘安装MacOS。并且大量的Kext的作者已经宣布停止对Clover的支持,所以使用OpenCore引导是大势所趋(对于AMD的用户来说这似乎是唯一的选项)
Kexts
  • Kext即 Kernel Extension 的简称,正确添加的Kext文件会在系统启动时加载,拓展MacOS内核对于硬件的支持。MacOS无法正常驱动的声卡,USB等都可以通过这种方式正常驱动。不要以为只有黑苹果才需要用Kext文件,原生的MacOS也含有大量的Kext驱动程序。当前黑苹果系统中用到的很多Kext甚至还是大神们在原生Kext文件上加以修改制作而成的。
Nvram
  • Non-Volatile Random Access Memory,非易失性存储器。注意这是一个硬件。它记录着系统需要的一些关键信息,所有Mac都配有这样的存储器,其中记录这启动的参数等,是很关键的一个部件。
EFI
  • Extensible Firmware Interface,可扩展固件接口。过多的术语博主就不在这里展开了,容易把大家绕晕。简单的来说,EFI就是电脑固件与操作系统间的一个桥梁。在黑苹果系统中,EFI分区用于存放我们在启动黑苹果系统中需要加载的Kexts,用于识别硬盘及文件系统的Drivers,还有最关键的,OpenCore的配置文件和启动程序
DSDT
  • DSDT是一张表,用于描述主板上有什么设备。在Win中你不需要特别的去配置它,但在Mac中你可能需要为了提升设备的兼容性而使用它。
  • 在目前看来DSDT不是那么重要了,楼主第一次安装时没有添加DSDT甚至也能稳定运行了。而且有很多Kexts可以帮助我们即使不使用经过配置的DSDT也正常使用黑苹果系统。但为了最大化的提高兼容性和稳定性还是建议添加。

楼主的配置(适用于大多数的3A用户)

硬件

型号

CPU

Ryzen5 3600

主板

微星迫击炮

显卡

RX570(其实是RX580阉割版刷vbios刷出来的)

硬盘1(安装黑苹果的硬盘)

海康C2000Pro,紫光颗粒

硬盘2(安装Windows的硬盘)

浦科特M9PEG

硬盘3(资料盘)

光威悍将1.5t(我知道很多人要骂这盘垃圾了,奈何它是真的便宜啊)

网卡

后购入的博通BCM94360(MacOS免驱,支持接力、Airdrop)

(其他的都无关紧要)

需要用到的软件

  • 下面提到的所有软件均可在互联网上下载,觉得繁琐的朋友可以关注我
  • gibMacOS:制作安装U盘必备,可以说功能非常强大了,可以一键下载系统,一键制作安装镜像
  • GenSMBIOS:生成必须的SMBIOS
  • ProperTree:编辑config.plist文件
  • SSDTTime:生成SSDT、DSDT等
  • EasyUEFI:为OpenCore添加引导
  • Drivers和Kexts:博主为大家提供了必须的Drivers和Kexts文件
  • DiskGenius:强大的硬盘分区工具
  • OpenCore Configurator(仅在Mac下有,非必须):OpenCore的的config.plist文件gui配置工具

0x01:制作安装U盘

  • 这里制作安装镜像需要用到一块8GB左右的U盘,和gibMacOS脚本
  1. 首先运行gibMacOS.bat:
  2. 待其准备就绪后,输入R切换至下载恢复镜像模式
  3. 待其获取完可用的官方列表后,选择你想要的版本,下载(这里我直接选择了下载最新的镜像)。通过这种方式进行恢复安装会在安装过程中自动给你更新为所选大版本(Catalina、Mojave)的最新版本,
  4. 下载完成后会显示存储的路径,将其复制下来
  5. 运行同目录下的MakeInstall.bat
  6. 选择你插入的U盘(这里我显示的序号是4),并选择将OpenCore写入U盘的EFI分区(在数字后输入字母O)
  7. 制作镜像的过程中它会要求你确认,输入y即可
  8. 出现图示的提示后,将刚刚下载的镜像路径粘贴过来
  9. 等待该脚本执行结束。执行过程中脚本会自行从Github下载最新版本的OpenCore,可能会有点慢,耐心等待其下载完毕即可
  10. 当脚本执行完毕自动退出,且磁盘列表中出现名为BOOT的磁盘后,说明安装镜像制作成功

0x02:配置OpenCore(重中之重!!!)

  • 首先博主要说的是,不建议你直接把别人的EFI文件复制粘贴过来,一定要自己配置一遍,尤其是使用OpenCore引导的(因为当前OpenCore的目录结构等都没有确定,每次OpenCore更新都会变动,不同版本间不相互兼容的)。而且很多细节只有在自己配置过一遍之后才能弄明白,将来手贱更新后出毛病了也能自行解决。

下载最新版本的OpenCore

https://github.com/acidanthera/OpenCorePkg/releases一定要注意版本!!博主此篇教程针对的是0.5.7版本

打开BOOT磁盘(楼主这里的盘符是I),进行如下的操作:

  1. 删除I:\EFI\Resources文件夹
  2. 删除I:\EFI\OC\Tools文件夹
  3. 从解压的\OpenCore-0.5.7-RELEASE\Docs\文件夹中复制Sample.plistI:\EFI\OC,重命名为config.plist

生成DSDT

  • 运行\SSDTTime-master\SSDTTime.bat
  • 执行1,4选项,即可在当前目录下生成Results文件夹,文件夹中应包含如下的文件
  • 将图示的三个文件拷贝至I:\EFI\OC\ACPI目录

添加Drivers

  • 将博主分享的Drivers目录中两个文件复制进I:\EFI\OC\Drivers
  • 这两个驱动程序都是为了可以识别和读写MacOS的分区,必须添加

添加Kexts

  • 将博主分享的Kexts文件夹中的文件全部复制入I:\EFI\OC\Kexts文件夹
  • 大体解释一下这8个内核扩展提供的功能:VirtualSMC和Lilu是加载其他kexts的关键,AppleAlc添加了声卡驱动,NullCPUPowerManagement是电源管理程序,防止因DSDT配置有误使得系统突然崩溃,WhateverGreen添加了显卡的驱动,RealtekRTL8111是本人的主板上的有线网卡驱动,网卡驱动在我们的安装中非常重要(需要联网安装),请根据网上的其它教程确定你的网卡需要用什么样的kext并将其加入Kexts中AMDRyzenCPUPowerManagementSMCAMDProcessor并非必须,但这两个驱动使得你可以用iStat等软件监控当前硬件的运行状态。

打开ProperTree,编辑config.plist文件

  • 下面就是重中之重了:编辑config.plist文件
  • 运行\ProperTree-master\ProperTree.bat,左上角File-Open,打开I:\EFI\OC\config.plist

config.plist文件的结构

  • 博主在这里简单介绍一下config.plist文件中我们需要重点关注的部分,如果有想要更详细的了解其信息的请查阅OpenCore的pdf说明文档(与上文提到的Sample.plist位于同一目录下)
  • ACPI:记录了要注入的DSDT和ACPI
  • Kernel:非常重要的一个区段。其下的Add列表中记录了要加载的Kexts文件的信息,Patch列表记录了内核的补丁,想在Ryzen平台上使用黑苹果必须要修改Patch
  • Misc:杂项,跟着博主的操作修改即可,详细的说明请参看官方文档
  • NVRAM:重要,记录了nvram中的信息,但不需要做过多的修改
  • PlatformInfo:记录了平台信息,也就是模拟的Mac的型号、序列号、UUID等,在洗白和开启显卡硬解等步骤中很重要
  • UEFI:启动的相关信息,我们的Drivers目录下的驱动就加载到了该列表内的Drivers列表中
一键导入当前已添加的Kexts, Drivers和
  • ProperTree为我们提供了非常快捷的预处理操作,点击左上角File-OC SnapShot自动加载kexts、drivers和DSDT到config文件中
加入针对Ryzen的Patch补丁
  • https://github.com/AMD-OSX/AMD_Vanilla.git下载Patchs(也可在博主的公众号中下载,但推荐在github上下载最新版)
  • 不同架构的APU需要用不同目录下的Patch,如图,Zen架构的需要使用17th文件夹下的Patch
  • 下载完成后解压,再次双击运行ProperTree.bat启动一个编辑器,打开17th(根据你的CPU架构来选择相应的文件夹)目录中的patches.plist
  • 选中Patch列表,右键复制
  • 回到我们编辑config.plist的窗口,将原Kernel列表下的Patch删除,然后右键点击Kernel列表,将刚刚复制的新Patch粘贴进去
配置Misc中的选项
  • 点开Misc列表,将你的配置改为和下图中的一样:
配置nvram
  • 点开nvram列表,将你的配置改为和下图中的一样:
  • boot-args字段为:-v keepsyms=1 alcid=1 npci=0x2000 vsmchbkp=0 agdpmod=pikera
  • 注意prev-lang:kbd的字段属性也要改,改成String
配置PlatformInfo
  • 运行下载的\GenSMBIOS\GenSMBIOS.bat
  • 输入3,回车
  • 输入想要仿造的型号。这里我推荐使用iMacPro1,1,对A卡的支持更好
  • 将生成的序列号等信息填入config.plist中的相应字段。填完后如图所示(注意不要直接把博主提供的填进去,要自己随机生成一个):
  • 到此为止,我们的配置基本已经完成了。保存退出,准备进入安装过程。

0x03:安装

  • 其实博主感觉安装没什么可以讲的,跟重装白苹果差不多,按照提示走就可以了
  • 首先重启电脑,将刚刚制作的安装U盘选为启动设备
  • 然后正常启动。配置正确的话可以看到OpenCore的界面
  • 选择external,回车,进入安装。
  • 选择磁盘工具,选中要安装的磁盘或分区,将其格式化为APFS分区
  • 格式化分区后建议重启一下电脑再安装,否则可能会出现卡在安装过程中,原因不详
  • 重新启动后还是启动安装镜像,按照正常的流程安装完成即可
  • 进度条跑完后电脑会自动重启,这时进入OpenCore的界面后选择Boot From Install选项即可(默认选项)
  • 待进度条走完后系统会自动重启,再次进入OpenCore界面后,即可看到已经出现了Mac系统的选项,然后就是正常的配置环节了,在此不多赘述

0x04:脱离U盘引导

  • 每次都通过U盘启动OpenCore还是不行的,所以我们要自己建立一个ESP分区,把EFI文件都拷贝进去,然后修复引导
  • 运行DiskGenius,在可用空间中新建一个分区,大小为200M就完全足够了
  • 建立完成后,把安装U盘的EFI分区中的全部数据拷贝进去入硬盘中新建立的EFI分区即可
  • 拷贝完成后,需要建立一个对该EFI分区对启动选项。首先需要挂载新建立的EFI分区,在DG中右键,分配盘符即可
  • 以管理员权限运行EasyUEFI,点击新增(中间那一栏有加号的那个图标),按图示选择新建立的EFI分区并选中相应的启动程序即可
  • 至此,我们的OpenCore已经可以从硬盘启动了。不过还需要调整一下BIOS中的UEFI分区启动优先级,每个主板的调整方式不同,迫击炮的是在这个选项卡中:

0x05:后记

  • OK!博主的教程终于完了。当然,很多刚踏足黑苹果圈的小伙伴可能还是有些晕:为什么我按照你的教程走下来到哪哪哪报错了?为什么我的某某硬件驱动不了?
  • 不过,我更建议大家亲自上谷歌等资源更齐全的搜索引擎上自己搜索问题的解决方案(用英文搜)。世界这么大,再罕见的问题也会有多个人同时碰到,万一你的问题有人在Reddit等论坛上问过、并且得到了完美的解决呢?不过,要特别注意解决方案的时间及引导方式,否则你很可能会把你的EFI搞烂掉。(事实上,楼主装机过程中也踩过大量的坑,大部分都是通过谷歌搜索hackintosh+报错信息自行解决的,你也一定可以的)