黑苹果(macOS 12.3.1)安装实录 您所在的位置:网站首页 黑苹果u盘启动黑屏怎么办 黑苹果(macOS 12.3.1)安装实录

黑苹果(macOS 12.3.1)安装实录

2023-07-14 17:26| 来源: 网络整理| 查看: 265

摘要

进入到了这部分,才算真正开始折腾黑苹果,也是安装黑苹果中最有乐(tong)趣(ku)的地方。

因为苹果只在自家发售的产品中搭载macOS(这也是我之前认为它封闭的原因),所以macOS和Windows最大的不同就是,macOS从不考虑兼容性只按照自己的逻辑加载自己认识的硬件。

所以要装黑苹果就需要在启动macOS系统之前,利用引导工具对我们的PC电脑进行一定的伪装,让macOS认为它正在运行在自家的硬件上。

Windows、Linux的启动过程:加载EFI文件夹 → 启动 Windows 系统

黑苹果的启动过程:加载EFI文件夹 → 加载引导工具对硬件进行“伪装” → 启动 macOS 系统

上述的引导工具一般指的是Clover、OpenCore等(更早的还有Chameleon),目前一般大家用的都是OpenCore,所以后面使用的也都是OpenCore引导。

所以这部分的主要工作就是根据自己的硬件配置OpenCore,伪装自己的硬件,让 macOS 认为自己运行在苹果自家的硬件上。

因为以下内容涉及到很多硬件方面的专业知识,我也只是将我对其的理解和认知用最简单的方式表述出来,可能会有某些偏差和错误,也希望大佬多多指正与补充。

需要注意的是:本文所使用的 OpenCore 版本为 0.8.0 ,所以相关的配置也仅适用于 0.8.0 版本,如若你的版本没有相关的设置,请勿随意添加,最好查看对应版本的官方手册。

下载OpenCore

OpenCore: https://github.com/acidanthera/OpenCorePkg/releases/

OpenCore的每个发行版一般都有两个版本,分别是debug版本和release版本。debug版本拥有更丰富的输出和调试功能,方便安装和排错,适合安装调试时使用;release版本的启动速度会更快,适合生产环境中使用。

不管是哪个版本,下载下来的目录结构都是相同的:

Docs

一些说明文件,与我们紧密相关的主要就是Sample.plist。要注意的是,OpenCore每个版本的Sample.plist都可能略有不同,需要严格对应,所以在升级OpenCore时一定要注意。

另外,该目录下还有一个Configuration.pdf文件,该文件也是这个版本的OpenCore的配置说明文档。

IA32

OpenCore 的32位版本

Utilities

一些通用的工具,后续有可能会用到

X64

OpenCore 的64位版本,我们这次使用的也是这个文件夹下的模板文件。

因为目前还在安装调试阶段,所以我们先选择debug版本,以方便查看输出进行排错或者在社区、论坛进行求助。

我们先将 X64 文件夹里的 EFI文件夹 解压到桌面,后续所有的工作都会基于该文件夹进行。

EFI文件夹的目录结构

BOOT

一般不会更改该文件夹下的内容,如果在Windows下手动配置UEFI引导的话,那么引导文件的路径便是该文件夹下的 BOOTx64.efi (64位系统)

OC

ACPI

该目录下存放的便是俗称的SSDT文件,会直接修改硬件和操作系统之间的映射关系。所以,在没能力的情况下最好不要随意修改SSDT文件,否则可能会直接损坏硬件。

Drivers

该目录下存放的是OpenCore会用到的驱动文件,每个驱动文件都有各自的作用,可以按需加载。

Kexts

该目录下存放的是macOS的内核扩展,就是大家说的macOS里的驱动。

Resources

该目录下存放的是OpenCore的资源文件,后续在美化上会用到。

Tools

该目录下存放了一些efi工具,默认情况下这些工具可以在启动时的OpenCore界面中按下空格键后选择并使用。

OpenCore.efi

OpenCore的核心文件

Config.plist

OpenCore的配置文件

配置 OpenCore 引导ACPI 文件夹

首先,我们先来配置ACPI文件夹里的内容。

默认情况下,该文件夹是空的。但在OpenCore中,ACPI文件夹下的SSDT文件是必不可少的(主要会对CPU、EC控制器、AWAC、USB控制器几个硬件进行一些处理),但SSDT的上手却没那么简单,好在有大佬制作了一些通用的SSDT文件,我们直接按需取用就好。

点击此处打开网站(https://dortania.github.io/Getting-Started-With-ACPI/ssdt-platform.html#what-ssdts-do-each-platform-need),根据自己的电脑的类型(台式机、笔记本、高性能台式机)、平台代号(即CPU的平台代号)来选择适用于自己的SSDT文件。

因为我的是第十代CPU和华硕主板(请根据自己的实际情况选择),所以我需要的是 SSDT-PLUG、SSDT-EC-USBX、SSDT-AWAC、SSDT-RHUB这四个文件,下载这四个文件并放入ACPI文件夹中。

SSDT-PLUG

主要功能就是让macOS的CPU电源管理可以管理我们的CPU电源,从而让CPU运行的更稳定

SSDT-EC-USBX

因为苹果的EC控制器和普通PC的EC控制器是不兼容的,所以该SSDT的主要作用就是禁用EC控制器,以方便可以通过其他内核扩展来仿冒苹果的EC控制器。

SSDT-AWAC

目前较新的平台是使用AWAC作为系统时钟,但macOS依旧在使用RTC0作为系统时钟,所以此SSDT的主要作用就是禁用AWAC,启用RTC0.

SSDT-RHUB

该文件只针对某些主板才需要,比如我当前用的华硕主板就需要。简单说就是某些主板RHUB驱动无法与macOS兼容,所以需要将其禁用。禁用的后果就是,我们需要手动映射USB端口,否则在macOS下将无法使用USB设备。

Drivers 文件夹

接着我们来配置Drivers文件夹下的内容。

默认情况下,这个文件夹下有很多文件,但其实我这次仅需要 OpenRuntime.efi 这一个文件。

除此之外,我们还需要 HfsPlus.efi (该文件不是OpenCore自带的文件,需要单独下载)

OpenRuntime.efi

OpenCore 运行的必要文件,里面包含了多个驱动。

HfsPlus.efi

https://github.com/acidanthera/OcBinaryData/blob/master/Drivers/HfsPlus.efi

hfs分区的驱动文件,若没有该文件,则在引导时无法看到安装U盘(还记得我们在制作安装U盘时,将U盘格式化成 Mac OS扩展 格式吗?这个格式便是hfs格式)。当然,不想下载也可以使用OpenCore自带的OpenHfsPlus.efi,但据说OpenCore自带的hfs驱动性能较差。

我目前这个硬件的安装只需要这两个驱动文件即可,不建议在该文件夹中放入不必要的驱动,否则导致OpenCore启动失败。

Kexts 文件夹

接着,我们就可以准备我们的Kexts文件夹。该文件夹内存储的便是macOS内核扩展,就是大家说的macOS驱动。

默认情况下,该文件夹是空的,所有的kext文件都需要我们自己去下载。(kext文件在Windows系统下是以文件夹的形式存在,所以请勿随意修改文件夹里的内容)

因为kext文件比较多,这里只介绍几个我需要的kext,更多kext可以参考这里的介绍。

kext在下载的压缩包中,也会有debug和release两个版本,与OpenCore的两个版本的解释相同。为了后面的方便,我都选择的是release版本。

Lilu

https://github.com/acidanthera/Lilu/releases

必须的kext,是很多kext的依赖

VirtualSMC

https://github.com/acidanthera/VirtualSMC/releases

黑苹果必须的kext,主要功能就是模拟苹果电脑的SMC芯片。下载后压缩包中还有很多其他的插件,可以根据自己的需要选用。因为我的是台式机,所以也加入了 SMCProcessor.kext 和 SMCSuperIO.kext。

SMCProcessor

主要用于监控CPU的温度

SMCSuperIO

主要用于监控风扇速度

appleALC

https://github.com/acidanthera/appleALC/releases

通用声卡驱动,基本上能驱动大部分的板载声卡。下载后的压缩包中还有一个名为 appleALCU 的kext,这个是 appleALC 的精简版。

WhateverGreen

https://github.com/acidanthera/WhateverGreen/releases

通用显卡驱动

NVMeFix

https://github.com/acidanthera/NVMeFix/releases

因为我用于安装macOS的硬盘是NVMe固态硬盘,所以加上这个kext。

以上便是我首次安装使用的kext,还有几点需要注意:

关于板载网卡的kext

当前主板使用的网卡是 Intel I225-V ,这个网卡可以通过仿冒ID的形式在macOS上实现免驱,所以在这个文件夹里并没有放入关于板载网卡的kext,等系统安装完成后会单独驱动板载网卡。

关于USB的kext

首先,USBInjectAll.kext(https://bitbucket.org/RehabMan/os-x-usb-inject-all/downloads/) 这个kext在我的这个主板上是不起作用的,而且在 ACPI文件夹 部分也已经提到过,因为使用了 SSDT-RHUB 所以后面会专门进行定制USB的操作。

Resources 文件夹

该文件夹是OpenCore的主题文件夹。

默认情况下,该文件夹下有Audio、Font、Image、Label几个空文件夹。

暂时我们先不处理这个文件夹,等后面专门来进行OpenCore界面的美化。

Tools 文件夹

该文件夹里存放一些 OpenCore 的工具,可以在 OpenCore 引导界面进行使用。

在 OpenCore 引导界面中,这些工具默认是隐藏的,按 空格键 即可显示出来,可以直接使用。

默认情况下,该文件夹下预制了很多工具,既可以都保留,也可以按需保留。

我只留下了几个可能会用到的工具:

CleanNvram.efi

清除Nvram的工具

ControlMsrE2.efi

检查 MsrE2寄存器 是否是可读写的,即是否解锁 CFG Lock

OpenShell.efi

命令行工具

config.plist

OpenCore的配置文件,默认情况下是没有这个文件的。这个文件即为下载的 OpenCore的 Docs 文件夹下的 Sample.plist 文件。把它复制到 文件夹下,并修改文件名为 。

安装 Propertree

有很多工具可以编辑 *.plist 文件,这里使用官方推荐的 ProperTree 工具(需要有Python环境)。

下载并解压后,可以直接运行 ProperTree.bat 文件打开编辑器窗口,然后在 打开要编辑的文件;也可以运行 文件进行关联,之后直接双击 *.plist 文件即可直接用 ProperTree 打开。

配置 config.plist

使用 ProperTree 打开 config.plist

最上面的几个 WARNING 可以删掉,也可以保留,都是已经注释掉的内容。

加载OC文件夹内的所有文件

默认情况下,ACPI、Kernel、UEFI等节点下并未加载我们刚刚放入文件夹内的那些文件,所以我们首先需要把那些文件加载到config.plist中,不然和没放入那些文件一样。

点击 然后在弹出的窗口选择 文件夹,ProperTree 将自动加载你放入文件夹的所有文件。(如果弹出了某些关于kext的提示,即说明某些kext之间可能存在冲突情况,你需要删除或者禁用它)

注意:config.plist 中加载的文件必须要存在于文件夹中,否则 OpenCore 将报错。所以不论修改了任何文件夹中的任何文件都建议使用ProperTree更新config.plist文件。

下面关于config.plist并不能通用,因为我对这部分的理解也不深,所以仅贴出来我的配置。具体各平台的配置方式及解释可以参考 这里 ,或查看 Configuration.pdf 文件。

ACPI

在该节点下的 Add 节点,即可看到我们刚刚放入 ACPI 文件夹下的4个SSDT文件。只要检查放入文件夹的文件是否都存在于 Add 下就行,其余的配置我们保持默认。

Booter

这部分我也是照猫画虎,按照大佬的配置的。

DeviceProperties

该部分主要是设置硬件的,可在此位置通过仿冒ID来驱动核显、声卡、网卡等设备,也可以在此处完善PCI信息等。

若要配置该部分需要有硬件的 Device Path ,这个等安装完系统后,使用 Hackintool 或者 gfxutil 等工具查看。

配置文件中默认有一个是板载声卡的配置,但因为我们声卡的Device Path不一定与预制的相同,所以可能无效。为了能顺利安装系统,若非必要,我们先不管这个节点里的内容,都保持默认即可。

Kernel

该节点下,我们首先检查放入 Kexts 文件夹下的kext文件是否都存在于 Add 节点下。这里还有一点需要注意一下,因为大部分的kext都依赖于Lilu.kext,所以同步确认下Lilu.kext是否在Add节点下的第一项(正常来说 ProperTree会自动把Lilu.kext放在首位)。

根据我的配置,我只需要再配置 Quirks 下的这两项即可。有很多教程中更会将appleCpuPmCfgLock和appleXcpmCfgLock两项设置为True,但如果你确认你的主板已经解锁CFG Lock的话,将其保持默认即可。

Misc

该节点下,我的配置只需要配置 Debug 和 Security 下配置即可。

这项默认为,设置为 则会每次启动都会在引导分区的根目录下生成一份log文件,方便后续排错及求助,如果不需要可以保持默认。

NVRAM

该节点下,与我主要相关的就是 7C436110-AB2A-4BBB-A880-FE41995C9F82 下的内容。

boot-args 里的配置即为启动参数,这里的启动参数的优先级最高,会覆盖所有的配置,比如alcid便会覆盖DeviceProperties中对appleALC.kext的配置。具体每个参数的作用可以在 这里 查看。

prev-lang:kbd 指的是键盘布局,默认的好像是俄语布局,我们直接删除保持为空就好。

PlatformInfo

该节点下,我们主要配置 Generic 下的内容。简单说,我们除了要仿冒苹果电脑的硬件外,我们还需要仿冒一个苹果电脑的SMBIOS信息,即我们要告诉macOS,它正在运行是哪个苹果已发行的电脑上。

关于SMBIOS我们可以使用 GenSMBIOS 生成,该工具的下载方式与 ProperTree 相同。在Windows下运行 GenSMBIOS.bat 即可。

GenSMBIOS 生成 SMBIOS 信息

GenSMBIOS的首次使用,估计99%会因为遇到网络问题而无法生成。解决的方式也很简单,其实主要就是下载macserial文件失败引起的,所以我们只需要把下载的OpenCore压缩包内 下的 macserial.exe 文件(Windows下复制exe文件)复制到GenSMBIOS文件夹下就行。

然后我们双击 GenSMIBOS.bat 运行脚本,进入主界面后,输入(生成 SMBIOS)

然后输入与你的配置最接近的苹果电脑的型号,该型号不能乱填,否则可能会导致某些硬件无法驱动或功能无法使用。可以参考 SIMBIOS ID、Platform-ID速查表(https://heipg.cn/tutorial/smbios-id-and-details.html) 查找适合你的型号。因为我的台式机是使用10代 i9 处理器,所以型号是 iMac20,2 。

然后你就能看到生成的 SMBIOS 信息了。这里有一点需要注意下,生成了以下信息后,最好去苹果的官方网站(https://checkcoverage.apple.com/cn/zh)上查一下序列号(Serial)的有效性,如果通过该序列号查到了有效的保修日期等信息,那就证明有一台已上市的苹果电脑正在使用这个序列号,那咱们最好重新生成一次SMBIOS信息。如果继续使用这个序列号,有可能导致后续登陆的appleID被封号等问题。

除此之外,信息中的 apple ROM 即为网卡的物理地址,可以使用工具生成的,也可以使用你真是网卡的物理地址(此处主要涉及到 iServices 即苹果的各项服务是否正常)。Windows下可双击网络适配器→详细信息中查看物理地址,去掉“-”即为ROM的值。

另外,也看到一种说法是:若 SmUUID 与Windows下主板的UUID不同,在OpenCore引导Windows的时候可能会引起蓝屏。所以可以使用 AID64 查看自己主板的UUID,作为SmUUID。这里我就直接使用生成的SmUUID了。

Type → SystemProductName

Serial → SystemSerialNumber

Board Serial → MLB

SmUUID → SystemUUID

apple ROM → ROM

UEFI

该节点下,首先我们检查 Drivers 下是否都加载了我们之前放在 Drivers文件夹 下的efi文件。然后其他设置暂时先保持默认即可。

到此为止,我们的 OpenCore 已经完成一大半了,但先别急,还记得我们之前反复提到的USB问题吗?

现在我们就来定制USB,在安装之前最后完善我们的EFI文件夹。

USB定制

因为主板以及准备安装的macOS 12.3.1的原因,我们需要在安装系统前进行USB定制,否则可能会导致在安装时没有USB口可用或只有USB 2.0接口可用。(ProArt Z490-Creator这个主板背板没有USB2.0接口)

另外一点还需要了解的是,macOS一直有一个限制,就是每个USB控制器下面最多可以激活15个端口,所以我们在定制USB的过程中如果发现某个USB控制器下的端口超过15个的话,便需要进行一些取舍。

在开始之前,个人建议需要准备纸笔,因为一会儿我们需要在记录每个USB接口的端口号(Port),以方便我们进行取舍。

关于USB的基本信息

正式开始之前,我们先简单介绍下几种USB接口的类型:

USB 2 Type-A

USB2大家都知道,Type-A就是最常见的那种大的USB口。1个USB2对应1个端口号。

USB 3 Type-A

同上,因为USB3需要兼容USB2,所以1个USB3对应2个端口号,分别为USB2的端口号和USB3的端口号。

USB 3 Type-C(无转换器)

Type-C接口现在也比较普遍了,大家应该也都见过。但Type-C接口分两种,有的是有转换器的,有的是没有转换器的,无转换器的版本即为正插和反插会分别对应一个端口号,即1个typeC接口对应2个端口号。

(另外,据说type-c接口也兼容2.0设备,并且会额外对应其他的端口号,因为我用不到所以就不测试了)

USB 3 Type-C(有转换器)

与上个类似,但这个是有转换器的,即不管正插还是反插,都只对应一个端口号,即1个typeC接口对应1个端口号。

先了解了上面的信息,有助于我们后面的操作。如果遇到端口数量超过15个的情况,我们有以下几种选择:

禁用掉某个肯定不用的USB接口

使USB3接口降级,以USB2的速率运行,即禁用掉该USB3接口中的USB3端口

使USB3接口不支持USB2设备,即禁用掉该USB3接口中的USB2端口

可以根据你的USB口的实际使用情况自主选择,比如我在背板的USB3接口上插了鼠标键盘,那么我完全可以禁用掉这两个USB接口的USB3端口,让其只支持USB2设备,可保证鼠标键盘正常使用即可。

开始USB定制下载 USBToolBox

USBToolBox分为两部分:

tool

下载地址:https://github.com/USBToolBox/tool/releases

Windows系统下载 Windows.exe 即可

kext (USBToolBox.kext)

下载地址:https://github.com/USBToolBox/kext/releases

如无特殊调试需求,下载 release版本 即可

使用USBToolBox在Windows下进行USB定制

简单说USB定制的过程如下:

使用 Windows.exe 获取到本机所有USB接口对应的端口号

生成 UTBMap.kext

(可选)根据实际情况检查/简单编辑UTBMap.kext下的Info.plist文件

将 USBToolBox.kext 和 UTBMap.kext 两个文件放入 文件夹下

更新 文件

下面我们开始第一步,双击打开 Windows.exe 。如果是第一次打开,会看到 Saved Data 为 ,如果此处显示为 说明在目录下已经存在了一份USB接口数据。个人建议是先删除之前保存的数据,不然在后面选择端口时会多显示一个USB控制器(也可能是个案,仅供参考)。

正常情况下,我们输入 先让程序扫描下我们主板上的USB控制器及所有端口。

经过扫描后,我们在该界面中即可看到电脑上所有的USB端口,并且每过5秒界面刷新,更新当前USB信息。

接下来的操作就比较费体力了,我们最好能准备一个USB3.0设备(如,U盘)和USB2.0设备(如,鼠标、键盘等)。如果嫌麻烦,只准备USB3.0的设备就行,一般来说该工具会自动检测该USB3接口所关联的USB2端口。

首先,建议先观察下电脑上所有USB接口的布局,并画在纸上,对一会儿的操作进行记录。比如我的就是这样:

然后我们便可以拿出我们准备的USB设备,把每个USB接口都插一遍(5秒左右),然后观察工具界面的变化。界面中新增的变绿这行,就是当前插入的USB口对应的端口。然后我们便可以在纸上记录对应位置的USB口的端口号。循环此操作,直到我们用USB3.0和USB2.0设备把所有的USB口都插一遍。

结束后,程序界面基本上是这样的:

我们在纸上记录的结果也大致如此(其中中间的数字为端口号的十进制表达,最右侧的为十六进制表达):

接下来我们输入 返回上级菜单,再输入 进行端口的选择。在该界面中,我们可以直接输入序号,切换其是否是选中的状态,也可以输入 清空所有的选择,输入 选择所有端口。

我的最终选择如下,稍微解释下:

Port 12 的是主板上的 LED控制器,因为我没有光污染,所以暂不需要,直接就没选择该端口

Port 13、Port 14 是另外一个USB控制器关联到第一个USB控制器上的端口,其实也不需要,一会儿手动删除

主板最下面两个蓝色的USB口,插的是我的鼠标键盘,只需要能支持USB2设备即可,所以Port 21、Port 22 也可以删除

这个主板上所有的USB2都是通过内部的Hub拓展来的,所以激活 Port 11 就可以了

检查无误后,我们输入 生成 UTBMap.kext 文件。正常情况下,该文件生成在 Windows.exe 的同级目录下。

然后我们进入 UTBMap.kext 文件夹中的 Contents 文件夹,找到 Info.plist 文件并打开,手动删除Port 13、Port 14

我们打开 IOKitPersonalities 节点,下面的两个即为我们主板上USB控制器的地址,找到刚刚超过15个端口的控制器,打开下面 IOProviderMergeProperties 节点,其下面的 ports 节点即为各个节点的详细信息。

我们该如何找到要删除的Port 13、Port 14两个端口呢?

这时刚刚记录的端口号的十六进制的表达就起作用了,我们会发现每个端口详情下的 port 中记录的即为该端口好的十六进制数值。所以我们找到 port 值为 和 的端口并删除即可。

删除后,我们保存这个Info.plist文件。

加载 USBToolBox.kext 和 UTBMap.kext 文件

最后,我们把 USBToolBox.kext 和 UTBMap.kext 这两个文件放入 文件夹下,并使用 Propertree 的 OC Clean snapshot 功能更新 文件并保存即可。

到目前为止,我们已经根据自己的硬件定制了一个EFI文件夹,最后我们把这个EFI文件夹放入U盘的EFI分区即可。

安装 OpenCore 引导

我们把之前制作的macOS安装U盘插入电脑上,因为U盘格式化的为HFS格式,所以插入Windows系统下会提示格式化,千万别点格式化。因为Windows不认HFS格式的文件系统,所以我们使用 DiskGenius 安装OpenCore。

打开 DiskGenius ,找到插入的U盘,选中下面名为EFI的分区,切换到 浏览文件 tab下。

正常情况下,该分区应该是空的,如果不是空的,可以全部选中右键,彻底删除文件。

清空了该分区后,我们把刚刚制作的EFI文件夹拖到这里,复制到EFI分区里即可。

到此为止,我们已经完成了macOS安装最重要的部分了,接下来我们便可以开始安装macOS了。

目录

黑苹果(macOS 12.3.1)安装实录-前言&目录

黑苹果(macOS 12.3.1)安装实录-前期准备

黑苹果(macOS 12.3.1)安装实录-BIOS设置

黑苹果(macOS 12.3.1)安装实录-Windows 安装

黑苹果(macOS 12.3.1)安装实录-macOS安装U盘制作

黑苹果(macOS 12.3.1)安装实录-U盘引导EFI文件夹制作

黑苹果(macOS 12.3.1)安装实录-安装 macOS

黑苹果(macOS 12.3.1)安装实录-macOS 安装后处理



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有