黑苹果安装笔记

记录黑苹果安装的过程,证明自己来过;

Apple 可能永远也不会再使用 Intel 的 CPU 了,所以 10 代 U 应该是最后一代完美黑苹果了, 11 代及以上 U 的核显驱动及大小核调度问题也可能永远无法完美解决了;

这几天又看到一个消息,说 Windows11 和 Intel 11+ 的 U 不再支持 SGX 功能了,也就是 Windows 平台播放超高清蓝光电影光盘的功能,部分 Windows 用户估计要头疼了,但这对黑苹果却是件好事儿,不过 11+ 的 U 也然并卵;

准备工作

  1. 满足黑苹果硬件限制的电脑;
  2. 1 个大于等于(>=)16G 的 U 盘,Catalina.10.15.7.19H15 的大小为 8.27G ,而 Monterey.12.1.21C52 的大小为 12.17G,至于 BigSur 就不考虑了,应该是专为 M1 芯片优化的,何必用 Intel 的芯片去自取其辱呢?🐶(手动狗头);
  3. 时间、耐心、细心、善用搜索引擎以及不耻下问;
  4. 时间、耐心、细心、善用搜索引擎以及不耻下问;
  5. 时间、耐心、细心、善用搜索引擎以及不耻下问;

机型配置

硬件型号备注
机箱机械大师 C34真的很小
主板MSI Z490 GAMING CARBON WIFIATX
BIOS1.A02021-09-30
CPUIntel i9-10850K个人感觉比 10900K 香
内存英睿达铂胜 D4 3600 16Gx4准备转投 PVE 或 UNRAID
磁盘铠侠 RD10 1T
声卡Realtek ALC1220PVEN_10EC & DEV_1168
有线网卡Realtek RTL8125BVEN_10EC & DEV_8125
无线网卡Intel AX201BIOS 禁用
无线网卡BCM94360Z3
蓝牙同上 👆
显卡昂达 RX560 典藏版,说白了就是国内特供版 560D亮机卡,但原生驱动
显示器三星 C24F390HDMI

USB 定制

USB 定制原因请阅读 Why should you USB map

USB 定制的方法

USB 定制工具:

Windows 下定制

在 Windows 下只能使用 USBToolBox 定制,Hackintool 是 macOS 专有软件,无法使用;

USBToolBox 定制分为两种情况:

  1. 使用 Apple 原生类,会根据机型(SIMBIOS ID)生成专用👇的 USBMap.kext;
  2. 使用 USBToolBox 自有类,会生成通用👇的 UTBMap.kext,需要配合 USBToolBox.kext 一起使用;

解释一下上面 👆 的专用通用(个人理解):

  1. 专用:使用的是 Apple 原生类, 在内核更新和机器升级的过程中,有些原生类只能用于特定机型,所以,定制时:需要指定你使用的SIMBIOS ID也就是机型,使用时:当前机器的SIMBIOS ID必须和定制时使用的SIMBIOS ID一致,才可以使用;

  2. 通用:使用的是 USBToolBox 自有类,在使用时会转换为当前机型可用的原生类,只要和你使用的主板(USB 端口)相同,就可以使用你定制的 UTBMap.kext,SIMBIOS ID也就是机型可以不一致;

  3. 好绕,总结一下,其他人若想使用你定制的 USBMap.kext,情况如下:

    1. 专用:主板相同,SIMBIOS ID相同;
    2. 通用:主板相同;
  4. 两种方式到底有什么区别呢?

    通用定制可能会更方便且省时省力,但从 USBToolBox 自有类转换到 Apple 原生类并共享 USB 设备后,应该会有性能损失吧;

    举个例子 🌰:有两块相同的主板,第一块主板使用的SIMBIOS IDMacmini8,1,第二块主板使用的SIMBIOS IDMacBookPro16,1,如果是通用定制,则定制一次,两块主板都可以使用,而专用定制需要分别定制才可以使用;

macOS 下定制

在 macOS 下可以使用 USBToolBox 或 Hackintool 来定制 USB;

  • 使用 USBToolBox 定制
    macOS 下定制的过程和 Windows 下一致,但无法识别端口的绑定关系,需要分别定制 USB3.0 和 USB2.0,所以需要 USB3.0 和 USB2.0 的 U 盘各一个;

    小技巧:键鼠的无线接收器一般是 2.0,使用它即可;

  • 使用 Hackintool 定制
    这里就不具体展开了,网上大佬写的教程很多也很详细;
    但定制过程很麻烦也很痛苦,且系统版本不能高于 11.3(否则,解除 USB 端口数量限制的 XhciPortLimit 选项无效),所以还是推荐使用 USBToolBox 在 Windows 下定制;
    定制完成后,需要使用生成的 SSDT-EC-USBX.aml 和 USBPort.kext;

    是的,你没看错,定制后会生成专用的 SSDT-EC-USBX.aml 和 USBPort.kext;

USB 定制的流程

USB 定制的方法很多,以下是在 Windows 下使用 USBToolBox 定制的流程;

  • 下载USBToolBox,解压至任意位置,然后运行其中的Windows.exe,由于 USBToolBox 是 Python 打包的单文件应用,如报毒请无视;
    USBToolBox 推荐的系统为 WIN10+,其他说明请通读 README,当前环境为 WIN10 LTSC 2019,并且会使用 Apple 原生类;

  • 运行程序后是一个 CMD 应用:

    是一个 CMD 应用

  • 然后输入 C 并回车,修改设置(输入不区分大小写,C 或 c 皆可,下同):

    修改设置选项

    分别输入 T 回车,N 回车,启用友好类型提示和使用 Apple 原生类;

  • 输入 B 返回主菜单,然后输入 D 并回车,开始识别 USB:

    开始识别 USB

    USBToolBox 可以识别出所有的 USB 控制器以及每个控制器下的所有 USB 端口;

  • 接着,用准备好的 U 盘把机箱上所有的 USB 端口都插一遍,包括前置面板和 TYPE-C,每次拔插不要太快,可以等 U 盘识别后,手动安全弹出 U 盘;

    TYPE-C 设备最好正反都插一次,看端口是否有变化,如果有变化,则后面会涉及到需要修改端口的类型;

    所有的 USB 端口都插一遍

    全部拔插一遍后,会发现实际上使用的 USB 接口没几个:绿色表示当前正在使用的接口,蓝色表示曾经有设备接入,而白色则表示从来没使用过的接口;

  • 输入 B 并回车,返回主菜单:

    Saved Dat

    此时的Saved Data 会由红色的 None变为绿色的 Loaded,表示 USBToolBox 已经存储了当前的 USB 接口数据;

    坐和放宽,数据存储在本地的usb.json文件中,有时候软件可能会闪退(之前遇到两次),不过已经无伤大雅了,再打开就是了,如果没有到达这一步就闪退了,那么重头开始,再来一遍;

  • 在主菜单按下 S 进入接口选择和生成 kext 界面:

    接口选择和生成

    此处可以看到控制器 1 下有 17 个 USB 端口,超出了 macOS 单个控制器下接口不得超过 15 个的限制;

    所以,这里需要取舍剔除 2 个端口以符合要求:通常,USB3.0 由于需要兼容 2.0,所以会绑定 2.0 端口,这样,一个 USB3.0 实际会占用 2 个端口的名额(图中 Companion to x 就表示 3.0 和 2.0 端口之间互相绑定,由 USBToolBox 自动识别,macOS 下定制无法识别绑定关系),所以,可以剔除某些 3.0 端口的 2.0 支持来达到要求,还有就是 TYPE-C 接口的设备通常都是 USB3.0,也可以剔除 TYPE-C 对 2.0 的支持;

    举例说明每行端口各个选项的含义:

    [#]表示端口被使用序号端口号端口类型端口名称绑定关系
    [#]1Port 1USB2.0USB 3 Type A (guessed)Companion to 17

    以端口 1 为例,表示端口 1 被使用,类型是 USB2.0,与 17 号端口互相绑定;

  • 接下来就是端口的取舍了,以port 3port 4为例:

    操作之前先看说明:

    操作之前先看说明

    输入3,4并回车,端口 3 和 4 前面的选择(#)就会被取消:

    端口 3 和 4

    这里不能减少端口的数量,因为选择 3,4 的同时 19 和 20 端口也会被取消,所以多出来的端口需要修改生成的 USBMap.kext;

  • 然后就是修改端口类型了,通常,mac 的蓝牙都是内建的,所以这里将会修改蓝牙占用的 USB 的类型:

    首先输入 T 并回车显示类型说明:

    显示类型说明

    然后输入T:11:255将蓝牙占用的 USB 改为内建:

    蓝牙占用的 USB 改为内建

    其他修改请参考类型说明,然后根据自己的需要进行修改,可以同时修改多个端口为同一个类型,如:T:1,2,3,4:0

  • 至此,USB 定制已经接近尾声了,没有需要修改或调整的内容,输入 K 并回车,编译 USBMap.kext:

    提示

    生成 kext 时,可能会提示某个控制器下有没有启用的端口,是需要忽略还是禁用,请根据自己的需要选择;

    这里是 NVIDIA 显卡的控制器,没有什么用,直接 D 禁用;

    然后会提示因为使用了 Apple 原生类,所以需要输入定制的机型(SMBIOS ID),本次将使用iMac20,1,所以输入并回车:

    注意 ⚠️:iMac20,2 is a custom SMBIOS meant only for Apple’s custom i9-10910 CPU, so unless you have an i9-10900K we recommend using iMac20,1
    更多 SMBIOS 注意事项,请阅读 Choosing the right SMBIOS

    iMac20,1

    然后就会生成并保存 USBMap.kext,USB 定制就结束了;

    这里还可以输入 B 并回车返回接口选择界面,然后生成不同机型的 USBMap.kext;

    如果使用的不是 Apple 原生类,而是 USBToolBox 类,会生成 UTBMap.kext,需要配合 USBToolBox.kext 一起使用;

  • 修改[USB|UTB]Map.kext 剔除无用端口

    接着上一步,按下 B 返回接口选择界面,然后用编辑器(这里使用 Notepad3)打开生成的 USBMap.kext,CTRL+F 搜索AppleUSBHostController(也就是 USB 控制器):

    AppleUSBHostController

    可以看到一共有两个匹配字符串,因为定制的时候使用了两个控制器,(机器一共有三个控制器,最后定制时把 NVIDIA 显卡自带的控制器禁用了)下面的ports字典中的HSxxSSxx就是每个 USB 端口;

    至于怎么区分控制器,很简单,根据字典下面的端口数量,这里很明显,由于第一个控制器下只有两个端口,所以需要修改的控制器是第二个:

    需要修改的控制器是第二个

    第二个控制器下,HS 表示 USB2.0 端口,共 11 个,SS 表示 3.0 端口,共 6 个,合计 17 个端口,和定制时信息一致;

    这里的端口顺序和端口选择界面的顺序是一致的,只不过编号中只包含了被使用(被 # 号选中)的端口,要删除哪个端口,数数就知道了:

    端口顺序和端口选择界面的顺序是一致的

    如果还是不放心,展开字典的每个端口,对比端口类型:

    对比端口类型

    这里以最后一个 USB2.0 端口(Prot 13)为例:

    上面有两个 2.0 端口,分别是 Port 10 USB3 Type APort 11 Internal,对应的 USB Types 分别是3255
    下面有两个 3.0 端口,分别是Port 17 USB3 Type APort 18 USB3 Type A,对应的 USB Types 都是3

    这里需要剔除的端口是 3 和 4,对应 USBMap.kext 文件中的 HS03 和 HS04,删除文件中对应的数据,包括 key 和 dict:

    删除文件中对应的数据

    key 和 dict 是一组键值对,需要匹配删除,而且 key 和 dict 都是双闭合标签,需要成对删除;

    修改后的端口数据如下:

    修改后的端口数据如下

    HS(2.0)和 SS(3.0)端口共计 15 个,达到了 macOS 的要求,修改完成;

  • 最后就是验证 USB 定制的成果了,需要在安装好 macOS 后用 Hackintool 验证,定制先告一段落;

制作 USB 安装盘

可以使用黑果小兵前辈的懒人镜像,使用balenaEtcher写入 U 盘即可;

这里使用的官方原版镜像,方法来自 OC 官方教程Creating the USB

因为 macOS 用着顺手且有白苹果(MacBook Pro 2015),所以以下内容皆基于 macOS,使用 Windows 的小伙伴请参考官方文档;

下载 macOS

1
2
mkdir -p ~/macOS-installer && cd ~/macOS-installer && curl https://raw.githubusercontent.com/munki/macadmin-scripts/main/installinstallmacos.py > installinstallmacos.py && sudo python installinstallmacos.py

这是官方文档给出的示例命令,用于获取 macOS 镜像,可以直接复制执行,也可以根据自己的需要修改;

1
2
3
4
mkdir -p ~/Downloads/Hackintosh/macOS-installer # 创建文件夹
cd ~/Downloads/Hackintosh/macOS-installer # 进入创建的文件夹
curl https://raw.githubusercontent.com/munki/macadmin-scripts/main/installinstallmacos.py > installinstallmacos.py # 获取远程的 python 脚本并写入 installinstallmacos.py 文件中,需要科学上网
sudo python installinstallmacos.py # 执行获取的脚本

执行脚本后会远程拉取镜像列表,选择自己需要的镜像并回车后,就会开始下载:

下载镜像

这里选择的是 8,也就是 Monterey.12.1.21C52,之前安装过 Catalina,所以就不需要下载了;

下载完成

镜像很大,下载需要很长时间,下载完成后会提示镜像的位置;

提示:只有在获取脚本时才需要科学上网,下载镜像时不需要科学上网,所以命令分开执行比较好,土豪随意;

制作 U 盘

  • 双击下载的镜像文件,如Install_macOS_12.1-21C52.dmg,然后将安装 macos Monterey.app拖入应用程序文件夹即可;

    拖入应用程序文件夹

    如果启动台中出现安装 macos Monterey应用程序的图标,表示安装成功;

    启动台

    淡定,不要运行安装 macos Monterey,这一步只是为了确认是否安装成功;

  • 接着使用磁盘工具抹掉 U 盘,格式选择Mac OS 扩展式,名称随意;

    抹掉 U 盘

  • 然后打开终端执行命令将安装 macos Monterey程序写入 U 盘;

    1
    2
    3
    4
    5
    # Monterey
    sudo /Applications/Install\ macOS\ Monterey.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

    # Catalina
    sudo /Applications/Install\ macOS\ Catalina.app/Contents/Resources/createinstallmedia --volume /Volumes/MyVolume

    命令末尾的MyVolume请替换为抹除磁盘时的命名,然后回车,等待写入完成;

    到这一步就制作好 USB 安装盘了,如果是白苹果,就可以拿着 U 盘去恢复系统了,但黑苹果还缺少最重要的 EFI 文件;

EFI 配置

挂载 EFI 分区

1
sudo diskutil list

首先查看当前系统中的磁盘:

查看当前系统中的磁盘

可以看到disk6s1就是 U 盘的 EFI 分区,且此时,文件管理器中只显示当前挂载的磁盘:

只显示当前挂在的磁盘

然后执行下面命令,挂载 EFI 分区:

1
sudo diskutil mount disk6s1

命令执行后,再回到访达中,此时侧边栏就会显示已经挂载的 EFI 分区,它就是接下来要操作的文件夹:

显示已经挂载的 EFI 分区

此时的 EFI 分区啥也没有,一片空白;

收集必备文件

安装过程中可能会出现各种各样的问题,所以推荐所有文件使用 DEBUG 版本,没有问题后再使用 RELEASE 版本替换即可;

OpenCore

OpenCorePkg中下载最新版本的 OC,然后解压:

OpenCore

文件夹说明:

  1. Docs:存放 OC 最新的配置文件、版本说明、ACPI 示例文件以及 Sample.list 配置文件模板;
  2. IA32:存放 32 位机器使用的 EFI 引导文件;
  3. Utilities:OC 官方集成的小工具都放在这里;
  4. X64: 存放 64 位机器使用的 EFI 引导文件;

这里,将X64文件夹下的EFI文件夹拷贝到刚刚挂载的 EFI 分区中,此时的 EFI 分区应该是这样的:

此时的 EFI 分区

然后根据官方文档的说明,剔除无用内容后,目录结构如下:

剔除无用内容

有争议的是OpenHfsPlus.efi,网上大佬都说保留OpenHfsPlus.efi,不要使用HfsPlus.efi,而且HfsPlus.efi不维护了,但我查看官方仓库,发现上次更新日期是 2021.11.02,也就是上次 OC 发布的时候,这里暂时跟随官方文档说明,剔除OpenHfsPlus.efi

Drivers
  1. HfsPlus.efi,必需;
  2. OpenRuntime.efi,必需,已包含在 OC 中;
Kexts
  1. VirtualSMC,必需;
  2. Lilu,必需;
  3. SMCProcessor.kext:CPU 温度,可选,包含在VirtualSMC包中;
  4. SMCSuperIO.kext:风扇转速,可选,包含在VirtualSMC包中;
  5. WhateverGreen,必需;
  6. AppleALC,音频;
  7. LucyRTL8125Ethernet,有线网络;
  8. AirportBrcmFixup,博通网卡;
  9. BrcmPatchRAM3,博通网卡上的蓝牙;
  10. BrcmFirmwareData.kext:包含在BrcmPatchRAM包中,BrcmPatchRAM3的依赖组件;
  11. BlueToolFixup.kext:包含在BrcmPatchRAM包中,Monterey 及以上蓝牙需要,替换BrcmBluetoothInjector.kext
  12. BrcmBluetoothInjector.kext:包含在BrcmPatchRAM包中,BigSur 需要,Monterey 不可用;
  13. USBMap.kext:将修改好的 USB 定制文件放入 Kexts 文件夹;
ACPI

根据 SSDTs的说明,获取对应的预构建文件即可;

如果想要更稳定的使用,或是有洁癖,可以根据Getting started with ACPI文档的说明,提取并构建属于自己的 SSDTs;

这里是十代桌面 U,所以需要的文件如下:

  1. SSDT-PLUG:电源管理;

  2. SSDT-EC-USBX:USB 修复;

  3. SSDT-AWAC:系统时钟;

  4. SSDT-RHUB:400 系列主板 USB 修复;

    由于文档中 MSI 主板的情况未知,所以暂时先不添加,安装后再根据实际情况决定是否需要;

文件收集完毕

至此,所有所需的文件就已经收集完毕了,这时候的文件目录看起来如下:

文件收集结束

config.plist 配置

当前 config.plist 的配置遵循Desktop Comet Lake的配置说明;

配置所需工具:

  1. OC/Docs下复制Sample.plist文件到EFI/OC目录下,并改名为config.plist

    Sample.plist

  2. 运行 ProperTree,按下 Cmd + O 打开EFI/OC/config.plist文件,最后Cmd + Shift + R将目录指向EFI/OC/执行清洁载入:

    这样做会删除 config.plist 中所有的内容,然后根据收集的文件重写;

配置 ACPI

首先是编辑 ACPI

这里没有什么需要编辑的,只需要确认config.plist文件中载入的文件与收集的文件一致即可,其他保持默认;

载入的文件与收集的文件一致

配置 Booter
QuirkEnabled
DevirtualiseMmioYES
EnableWriteUnprotectorNO
ProtectUefiServicesYES
RebuildAppleMemoryMapYES
SetupVirtualMapNO
SyncRuntimePermissionsYES

设置如下:

Booter

配置 DeviceProperties

这里可以添加 PCI 设备,但这些都可以往后稍一稍,首先保证声卡和核显正常驱动,其他设备可以等安装完成后使用OpenCore Configurator 自动识别添加,比自己添加省时省力;

  • 首先是声卡,根据设备声卡的型号,在AppleALC Supported Codecs中找到合适的layout-id,然后写入 config.plist 中:

    AppleALC Supported Codecs

    写入 config.plist 中

    需要注意的是写入时的数据格式,如果数据格式是Number则直接填入 layout-id 即可,如上图 👆;

    但如果数据格式是Data,则需要将 layout-id 转换为 16 进制数字,然后以小端序方式写入;

  • 接着是核显:

    核显
    这里添加的很简单,只需要让 macOS 识别核显即可;

    KeyTypeValue
    AAPL,ig-platform-idData07009B3E
    framebuffer-patch-enableData01000000
    framebuffer-stolenmemData00003001

    文档中 UHD630 的配置是这样的,下面两个选项用于修复显卡内存被盗问题,这里使用的主板 BIOS 可以设置,所以不用设置这两个选项;

配置 Kernel

文档说明保留 ProperTree 载入的 kext 顺序,且 ProperTree 调整顺序比较麻烦,所以 kext 加载顺序暂不调整,安装完后使用 OCC 进行调整;

设置AirPortBrcm4360_Injector.kextMinKernel19.9.9,阻止在 Monterey 上加载,详细说明请阅读Known issues

AirPortBrcm4360_Injector.kext

QuirkEnabledComment
AppleXcpmCfgLockYES如果 BIOS 可以关闭 CFG 锁则可以不用设置此选项
DisableIoMapperYES如果 BIOS 可以禁用 VT-D 则可以不用设置此选项
LapicKernelPanicNO惠普机器需要开启此选项
PanicNoKextDumpYES
PowerTimeoutKernelPanicYES
XhciPortLimitNO解除 USB 端口最大数量限制,macOS 系统版本大于 11.3 则需要关闭此选项

设置如下:

Kernel

配置 Misc
  • Debug 下的选项有助于在出问题时调试,设置如下:

    QuirkEnabled
    AppleDebugYES
    ApplePanicYES
    DisableWatchDogYES
    Target67

    Debug

  • Security

    QuirkEnabledComment
    AllowNvramResetYES
    AllowSetDefaultYES
    BlacklistAppleUpdateYES
    ScanPolicy0
    SecureBootModelDefault
    VaultOptional必填项,数据类型 String,Optional 首字母大写

    Security

配置 NVRAM

NVRAM

主要是开启啰嗦模式(跑代码模式),防止固件更新等;

据说将prev-lang:kdb设置为en-US:0不容易出错,应该是玄学问题,且先设置上吧,缺点就是安装界面是英文,默认的数据类型是Data,需要 16 进制小端序写入数据,如果要填en-US:0,请将数据类型更改为String

配置 PlatformInfo
  • 运行 GenSMBIOS,首先输入 1 并回车,更新 MacSerial:

    更新 MacSMacSerial

  • 然后输入 3 并回车,表示需要生成 SMBIOS 信息:

    输入 3 并回车

  • 接着输入机型并回车,就会生成三码:

    生成三码

    不要着急,打开Apple Check Coverage page输入生成的Serial验证序列号可用性:

    Apple Check Coverage page

    如果提示无法验证等类似信息,则表示序列号可用;

    序列号有效

    如果提示序列号有效等信息,则绝对不可用,请重新生成;

    然后将三码(五码)写入 config.plist:

    对应关系如下:

    SMBIOSGeneric
    TypeSystemProductName
    SerialSystemSerialNumber
    Board SerialMLB
    SmUUIDSystemUUID
    Apple ROMROM

    五码

    生成的 Apple ROM 没有任何作用,如果要在机器上使用 iMessage 请阅读iServices

配置 UEFI

APFS VersionsMin VersionMin Date设置为 -1;

QuirkEnabledComment
UnblockFsConnectNONeeded mainly by HP motherboards

UEFI

BIOS 设置

Above 4G decoding

  • [启用] Above 4G decoding;
  • [禁用] Re-Size BAR Support

CNVi

  • [禁用] Onboard CNVi Module Control,自带的 CNVi 协议的 AX201 网卡;
  • SATA 模式:AHCI;

多显卡

  • 设置第一显卡为 PEG 的前提是有可用的独立显卡;
  • 集显共享内存:64MB;
  • [启用] 集成显卡多显示器;

雷电

  • [禁用] Thunderbolt Support;

xhci

  • [启用] XHCI Hand-off;

串口

  • [禁用] 超级 IO/串口;

USB唤醒

  • [启用] USB 唤醒;

BIOS 启动模式

  • BIOS Model:UEFI;

快速启动

  • [禁用] 所有的快速启动;

安全启动

  • [禁用] 安全启动;

CFG

  • [禁用] VT-D;
  • [禁用] CFG 锁定;
  • [禁用] SGX;

安装

  • 还是 AMD 显卡香,不用配置直接点亮(需要原生支持的型号,有些型号需要仿冒);
  • 安装过程基本一帆风顺,刚开始时遇到禁止符号和花屏,是因为忘记将修改的 USBMap.kext 文件放入 Kexts 文件夹了,在 Windows 上改完后放在 U 盘忘记替换了;

安装后的工作

按照OpenCore Post-Install的说明,逐步检查,看系统中是否有相同或类似的问题并修复,既然文档中提到了,那么这些问题肯定是常见的,就不要抱有侥幸心理了;

无 U 盘启动

也就是将 U 盘上的 EFI 文件复制到磁盘 EFI 分区;

打开终端,输入下面命令查看当前挂载的磁盘:

1
diskutil list

查看当前挂载的磁盘

可以看到,系统磁盘 EFI 分区为disk0s1,U 盘 EFI 分区为disk2s1,然后挂载这两个 EFI 分区:

1
2
3
sudo diskutil mount disk0s1

sudo diskutil mount disk2s1

挂载好后,访达侧边栏会显示当前挂载的磁盘:

挂载好后

如何区分到底是谁的 EFI 分区呢?

  • 现在系统磁盘的 EFI 分区是空的,所以有内容的就是 U 盘的 EFI 分区;
  • 仔细观察,系统磁盘和外置磁盘的图标是不一样的,所以图标相同的是同一磁盘;

然后拷贝 U 盘的 EFI 文件夹到系统磁盘的 EFI 分区(注意:是整个文件夹);

这样,就可以不用 U 盘启动了;

修复音频

打开系统偏好设置,发现声音中没有出现预期的声音输出,只有一个显示器音频输出:

没有出现预期的声音输出

首先检查Lilu/AppleALC/AppleHDA是否正常加载:

1
kextstat | grep -E "AppleHDA|AppleALC|Lilu"

首先检查

结果显示 AppleHDA 没有正常加载,要么是 PciRoot 地址不对,要么是 layout-id 不对;

下载gfxutil然后输入下面命令,检查 PciRoot:

1
path/to/gfxutil -f HDEF

path/to/gfxutil替换为下载好的 gfxutil 的实际地址;

gfxutil

然后打开系统磁盘 EFI 分区下的config.plist,这里使用CotEditor打开,按下 Cmd+F 搜索 PciRoot:

搜索 PciRoot

很明显,由于指定的设备不对,所以即使有驱动也没什么用,So,改了它;

改了它

改好后(记得保存)重新启动,反正现在也不用 U 盘了;

重启后

重启后,声音设备出现,测试后正常,修复完毕;

USB 唤醒

启用 BIOS 的USB从 S3/S4/S5 唤醒,同时会自动的禁用USB Standby Power at S4/S5

USB从 S3/S4/S5 唤醒

其他

GPU

GPU 硬件加速正常;

USB

USB 测试正常;

关于本机:

关于本机

内存

其他内容未改动,包括但不限于:

  • 系统报告中的 PCI 设备,未添加;
  • 系统报告中的内存信息,未定制;
  • Wi-Fi,蓝牙,随航正常;
  • 开关机,睡眠,唤醒正常(测试时间较短,仅供参考);
  • OC 主题未定制;
  • 啰嗦模式未关闭,当前所有文件为 DEBUG 版本;