Opencore Legacy (传统)BIOS 安装黑苹果,目前最好的方式就是在有苹果系统的环境下来实现,比较简单,就我个人的经验来看的话,制作黑苹果启动U盘,无论是windows,linux,还是MacOS下都差不多,关键是要把Boot文件写入启动U盘在MacOS下最方便,就一个BootInsatll.command就搞定了。这个Python写的小程序,能把Boot文件写入启动U盘,然后OpenCore支持DuetPkg,DuetPkg是一个用来模拟UEFI环境的,这样一来就可以满足MacOS的启动要求了。
经过多次阅读官网教程才明白,为什么有Mac OS系统环境最方便,因为在Mas OS环境下使用Creatinstallmedia命令制作的启动U盘是完整的安装镜像,可以离线安装,在linux或Windows下制作的启动盘,还需要联网下载部份安装包才能完成安装。
我本人是一个系统三栖者,办公电脑是windows系统,另外虚拟机里面有一个黑苹果系统,家里的电脑有一台是Deepin系统。所以看了官网指导之后,我挨个试了一个遍,都能成功的制作黑苹果启动U盘。
第一步,下载opencore的最新版本,官网下载或者是国内的百度找地下载。
第二步,下载gibMacOS-master,从它提供的地方(其实也是直接从苹果公司的服务器上下载的,这里是一个灰色地带,有一定的法律风险)下载合适的MacOS系统版本,windows点击gibMacOS.bat,就开始下载了,下载成功之后会生成一个macOS Downloads文件夹,里面有下好的系统,然后这个程序会自动启动它的另外一个安装程序MakeInstall.bat,把下载好的系统写入到U盘。这里有个坑,如果你觉得哪里不对劲,要重新来一遍,往往就会直接点gibMacOS.bat,然后程序又会傻傻地给下载一遍系统,你又傻傻地等程序下载并写入U盘,这个过程,网速快的话,像我的100M光纤,前后得20分种,如果是慢的话,就不知道了。所以,只有你下载过系统了,下次想重新制作启动U盘,又不用换系统版本的话,就直接用管理员身份运行MakeInstall.bat就行了。类Unix系统下,用BuildmacOSInstallApp.command这个小程序。另外一个坑,就是在Windows下或linux下有多版本的Python的,一定要先把环境变量给整清楚了,不然是没法运行这个程序的。
关于U盘分区的操作,在Windows环意下,可以提前用DiskGenius弄,也可以让这个小程序来帮你弄。比方说你输入1G,就帮你格式化成GPT格式的磁盘类型。然后回到主菜单再次输入1O,就开始写入系统了。提前用DiskGenius分好区的,直接就开始输入1O写入系统。在Mac OS环境下,用系统自带的磁盘工具,把U盘格式化成GPT分区的日志性文件系统就可以了。GUID分区方案会自动的创建一个隐藏的EFI分区和一个用来写入系统镜像的可读写分区。
第三步,就是开始设置启动U盘的EFI分区了,主要就是把opencore的EFI文件夹的文件给复制到EFI分区下的EFI文件夹,然后去芜存菁。
这里有个难点,就是怎么把EFI分区挂载到你使用的系统上面来?
这个还得看你前面几步是在什么系统下操作的,不同的系统下操作的结果是不同的,在linux下制作的U盘挂到windows下面EFI分区是可见的,也可以写入,MacOS系统下制作的启动U盘的EFI分区在哪个系统下都不可见,在MacOS系统下需要用到另一个小程序MountEFI来挂载EFI分区实现读写该分区,在linux系统下,就直接用mount命令来挂载,windows下最麻烦。
Windows下面后面在网上看到了一个还算不是特别麻烦的操作,用DiskGenius和系统自带的PowerShell配合就可以完成对EFI分区的读写,就是操作起来相对麻烦一点。首先,用DiskGenius给U盘的EFI分区分配一个盘符,然后在Win7或Win10系统中,在Windows徽标图案上点右键,在弹出菜单中左键点击Windows PowerShell(管理员)(A),打开PowerShell,输入notepad,打开记事本,命令行的文件>打开>U盘EFI分区特定目录,在这里就可以进行读写操作了,要写入文件,就直接拖放或复制粘贴就行,读写Plist配置文件时,要注意文件格式要从默认的<文本文档*.text>改成<所有文件*.*>,不然看不见plist文件,看见plist文件后,不能直接用记事本的打开命令,而是先选中plist文件,然后右键打开,用之前下载的ProperTree-master打开编辑,完成后保存,退出,记得弹出一下U盘,如果没有撤消分配盘符的话,下次插入U盘就不用做分配盘符这个动作了,直接用PowerShell打开记事本就可以进行读写操作了。
第四步,重中之重,配置opencore的配置文件config.plist, 这里有个小技巧,去https://opencore.slowgeek.com/这个网站检查一下你的配置文件是否健全。默认的配置文件大概率会碰到找不到MacOS分区,安装界面是俄文之类的问题,官网的故障大全里都有。虽然网上的文章都是在大篇幅的简绍这个,我认为看官网指导足够了,然后再用opencore plist健全检查器网站帮助检查一下,跑起opencore引导基本上没什么问题。plist文件编辑器就用官网推荐的ProperTree-master吧,其他的跟不上opencore的版本会出错。然后就是用GenSMBIOS-master生成macos的主板序列号及机型,这个就是所谓的三码,这个程序可以将三码生成后直接写入config.plist文件进行更新,省去手动编辑的麻烦。
第五步,定制你自己的SSDT,使用SSDTTime-master。这里又有一个坑,如果你没有看我上一篇文章,把hosts文件添加一些DNS记录进去,会卡在 Downloading iasl-win-20200528.zip这里,去github上下载好这个zip文件,然后解压到Scripts文件夹里面,要能在Scripts文件夹下面看到iasl.exe这个文件,要是解压了一个带层级的文件夹就不行。搞定这点事后,先选7,会生成一个Results文件夹,里面也同时生成了一个DSDT.aml文件,按Enter返回主菜单,继续1、2、4三个选项挨个按个遍,3是笔记本的,台式机不用。5和6看着硬件的情况走,完了,把Results里面的文件夹复制到U盘的EFI/OC/ACPI文件里面去,就完成了定制ACPI文件。
你如果觉得SSDTTime-master比较难用,这一步,可以省略,直接用预建的几个aml文件,在官网下载,或者在下载下来的opencore文件夹里面有个Docs文件夹,里面有个AcpiSamples文件夹,把SSDT-EC.dsl,SSDT-EC-USBX.dsl,SSDT-EHCx_OFF.dsl,SSDT-PLUG.dsl这个文件复制到Opencore的ACPI文件里面去。请注意,opencore引导实际上需要编译过的aml文件,ACPI内建表dsl不需要,所有还需要编译一下刚刚拷贝的几个dsl文件,把iasl.exe文件也复制进ACPI文件,然后用管理员身份运行cmd,进入ACPI文件夹,运行命令:
iasl -d SSDT-EC.dsl SSDT-EC-USBX.dsl SSDT-EHCx_OFF.dsl SSDT-PLUG.dsl
一次性把这个dsl文件给编译了,就得到aml文件。
到这一步,基本上就大功告成了,可以启动UEFI BIOS台式机了,但是Legacy BIOS还不行,还需要进到虚拟机下的苹果系统里去用BootInsatll.command写入Boot文件,请注意,运行BootInsatll.command命令得使用sudo,否则权限不够,无法写入EFI分区,不用sudo,程序依然会跑,它界面上看起来好像是在干活,但是实际上是没有写入的,去EFI分区下检查一下就清楚了,一定要能看到boot文件在才放心。Mac OS系统如果提示说找不到BootInsatll.command文件,就使用以下命令运行:
sudo ./BootInstall.command
前提是你cd进了OpenCore-0.x.x-RELEASE/Utilities/LegacyBoot目录
Windows 下面使用Bootice引导修复小工具来写入引导文件,在Opencore的LegacyBoot文件夹中,有三个文件用得到,分别是boot0, boot1f32, bootX64(64位系统专用),恢复MBR分区记录选boot0写入EFI分区,恢复PBR分区记录选boot1f32写入系统所在分区,最后把bootX64拷贝到EFI分区并更名为boot,大功告成。
搞定以后就可以用U盘在旧电脑上启动黑苹果安装了。
忘了说了,旧版安装需要的efi文件略有不同,查看MacOS分区的驱动 需要换成HfsPlusLegacy.efi, 以及Opencore引导选择器用到的驱动OpenUsbKbDxe.efi,像我则另外加入了PS2键盘的驱动Ps2KeyboardDxe.efi以及UsbMouseDxe.efi这两个跟输入设备相关的驱动。