Wednesday, April 3, 2019

[Hackintosh]如何正确的黑苹果[原创]


为什么我要写这篇文章, 网络上有不计其数的黑苹果教程和论坛, 各种语言的, 但很少有系统化的, 对新手友好的内容, 并且多数文章并不做解释, 甚至有大部分都是直接以一键安装包的形式出现, 当出现问题的时候, 会变得毫无头绪, 不知道如何解决. 所以我决定用尽量通俗的语言来完整的描述整个过程. 本篇只涉及台式机电脑, 笔记本电脑用户也可以从我这篇文章获得举一反三的思路来解决笔记本专属的问题(比如 电池电量显示, 屏幕亮度调节等)

+++++ 转载请注明出处 +++++

+++++ 本文会不定期更新 +++++

+++++ 如果你觉这篇文章对你有帮助, 需要注册搬瓦工的vps的换可以从这个链接打开, 我可以获得一定量的余额:

https://bandwagonhost.com/aff.php?aff=3040


@@ 2018/10/29 更新, 增加 VirtualSMC 替代 FakeSMC的选项.
@@ 2018/11/16 更新, 增加了一些更详细的说明
@@ 2019/03/07 更新, 设置 CsrActiveConfig 为0x3 (0x3保留大部分SIP的功能, 与此同时有可以允许未签名的kexts安装到系统文件夹)
@@ 2019/03/07 更新, 建议将有线网卡的kext安装到 /Library/Extensions, 以解决潜在的断网的问题, 实际上我现在已经将所有Other/下面的的kexts都移动到这里了, 安装到此处需要额外的操作, 请看我后面的blog: 如何正确的安装黑苹果的 kext
@@ 2019/04/01 更新,Realtek的网卡驱动不稳定, 会导致断网, 也会导致sleep变重启, 至少在我的Z77P-D3上是这样的。 


I. 硬件篇
打算安装黑苹果之前要了解自己的硬件是否得到比较好的支持, 如果打算新装一台电脑, 尽可能的去购买与黑苹果更兼容的电脑配件. 下面我从电脑的各个配件一一说明.

CPU: 任何Intel Core以及Xeon系列CPU, 从第一代的i3-330UM到如今最强的i7-8700K, 从垃圾佬最爱的Xeron E3-1230到E5-2680等都可以很好的支持. 不建议使用奔腾和赛扬的CPU, 一来性能不怎么好, 二来黑起来难度比较高. 不建议使用AMD的CPU, AMD的黑苹果需要黑客提供修改版的macOS内核才可以升级,无法第一时间升级到最新的macOS.

主板: macOS早在2009年左右就采用EFI, 所以建议支持UEFI的主板, 一般来说B75, Z77 之后的都是UEFI的BIOS, 当然如今的Z390更是不在话下. 服务器主板X58, X79, X99, X299 等都支持

显卡:  Intel的集成显卡是被macOS所原生支持的. 独立显卡方面AMD的GCN1代到现在的Vega64显卡都是被macOS所原生支持, 尤其是在macOS 10.14 Mojave上, 基本上无需折腾, 开机即用. nVidia的显卡在macOS 10.13.6以及之前的版本是可以安装Web Drivers来驱动, 但是到了Mojave, 就gg了, 据说是Apple不给支持. 总而言之, Intel和AMD的显卡都是很好的选择. 推荐带DP或者miniDP接口的显卡, 因为白苹果是走DP路线.

声卡: 一般主板上集成的Realtek ALCxxxx 声卡都可以完美驱动, 音频可以走3.5mm口输出, 也可以走显卡的DP以及HDMI接口输出, 两个都连接的话, 还可以在macOS顶部状态栏随便切换.

硬盘: 推荐SSD硬盘, 不推荐机械硬盘, 毕竟8012年了. SSD硬盘有两种接口, 一种是SATA3或者2. 还有一种是目前常见的M.2接口. 另外还可以通过主板上的PCIe 1X,4X 或者16X 接口转接SATA和M.2以及其他规格的SSD. 比如我用的Z77P-D3,因为不带M.2接口也不支持NVME, 为了更快的速度, 我给BIOS刷了NVME驱动, 同时买了M.2的SSD通过PCIe转接卡接到主板的PCIe 4X接口上, 完美支持.  

有线网络: Intel主板上一般都是速度为1Gb的Realtek 8111和intel i219v 等网卡, 这些都是可以通过第三方驱动完美支持的.

Wi-Fi以及蓝牙: 由于白苹果一直以来都是用博通的无线蓝牙模块, 所以推荐黑苹果也使用相同的型号, 我目前用的是一款BCM943602CS的Wi-Fi蓝牙卡, 接在主板的PCIe 1X接口上, 无需任何驱动. 各种功能完美, 包括使用iCloud, iMessage, Handoff, Airdrop, Instant Hotspot. 据说还可以通过Watch解锁黑苹果, 我没有Watch, 所以不得而知. 当然还有其他几个型号也是可以用的例如BCM94360CS, BCM94360CD, BCM94352Z等, 淘宝上都可以找到.

键盘鼠标: USB,蓝牙接口的随意挑选.

我黑过的硬件:
黑果一号(已经部分出售, CPU速度太慢):
  • Gigabyte Brix 5010 准系统, 类似Intel的NUC, i3-5010u
  • 内存: 2 * 4GB 海盗船 DDR3 1600mhz
  • 硬盘: 东芝 MLC mSATA 256GB SSD, 读 510M/s 写 430M/s
  • Wi-Fi蓝牙: DW1560 (芯片为 BCM94352z), 5Ghz 866M/s, 2.4Ghz 300M/s. 需要安装补丁.
  • 显卡: 集成的 HD 5500, 带DP和HDMI, 支持4K@60hz显示器
  • 声卡: 集成的ALC283
  • 目前存在的问题: Instant Hotspot 无法使用, 但可以连普通的个人热点. Handoff 不稳定. 其余完美.
  • 支持的功能: Wi-Fi, 蓝牙, 声音, 有线, 显示, iCloud, iMessage, Airdrop,
黑果二号(已经部分出售, 解码不完美, 其余非常完美,垃圾佬推荐配置):
  • CPU: E3-1230 v2
  • 主板: 技嘉 Z77P-D3
  • 内存: 2 * 8GB 金士顿 DDR3 1600mhz
  • 硬盘: HP EX900 NVME M.2 SSD, 通过PCIe转接卡, 转接在主板的PCIe 4x接口上, 读1500M/s 写 1000M/s
  • Wi-Fi和蓝牙: BCM943602CS, 通过PCIe 1X 连接主板, 5Ghz 1300M/s, 2.4Ghz 300M/s. 原生支持
  • 显卡: 蓝宝石 RX560 OC 4GB, 支持到5K@60hz, 原生支持
  • 声卡: 集成的ALC887
  • 目前存在的问题: macOS启动的第二阶段会闪1秒, 但无伤大雅.
  • 支持的功能: Wi-Fi, 蓝牙, 声音, 有线, 显示, iCloud, iMessage, Airdrop, Instant Hotspot. 10bit 4K HEVC, H264硬件解码, 8K也可以硬件解码. (不完美)
黑果三号(已退货, 带4k显示器比较卡顿, 散热器可选少, 原装散热器压不住, 发热太大):
  • 华擎 Deskmini 310
  • i5-8400 盒装
  • 16GB 威刚笔记本内存
黑果四号(在用, 打算持续使用):
  • CPU: 8700T ES (QN8J)
  • 主板: 华擎 B360M-HDV, BIOS 4.0, 完美的主板
  • 内存: 威刚16GB DDR4 2666
  • SSD: HP EX900
  • Wi-Fi/蓝牙: 943602CS
  • 显卡: 蓝宝石 RX 470, 淘宝购入, 默认矿卡, 没毛病
  • 散热器: Actic Freezer 13, 完美的散热器, 静音, 给力
  • 机箱: 银欣 ,非常静音
  • 电源: 长城, 非常静音
  • 目前存在的问题: 没有问题. 

II. 软件基础篇

其实在PC上安装并启动一个macOS只需要2个软件: FakeSMC 和 Clover. 前者模拟白苹果的EFI程序, 后者给PC的硬件打补丁, 让macOS可以识别你的各种硬件.  这是一个最小化的环境, 有了这两个, 基本上就可以安装好macOS并启动, 启动后你可能会发现各种问题, 比如没有声音, 显示模糊, 分辨率无法调整, 屏幕卡顿, 这些其实都很好解决. 我的原则就是最小化安装, 然后一个一个问题的解决, 最终趋于完美, 并且在此过程中, 你知道你安装了什么, 也会慢慢的知道如何解决问题, 如何对黑苹果做自定义的微调. 不推荐使用别人的安装包, 不推荐使用Unibeast, Multibeast, 这两者其实就像一个一键安装包, 将所有东西一股脑的塞进你的电脑, 出了问题, 只有靠你自己摸石头过河了.

简要的说明下基本步骤:
  1. 制作macOS的U盘启动盘
  2. 安装Clover到U盘
  3. 修改U盘上的Clover的Config.plist以适配你的电脑
  4. 用U盘启动PC, 安装macOS, 先不要重启, 因为还有善后工作
  5. 安装Clover到你的PC的硬盘上
  6. 将U盘上的刚刚修改过的config.plist覆盖硬盘的Clover的config.plist
  7. 安装相关硬件的驱动和补丁(以kext的形式)
  8. 拔掉U盘, 重启电脑, 从硬盘的macOS启动

2.1 首先你要制作启动盘.

就算是给白苹果重装系统, 你也需要一个启动盘(方法之一), 而黑苹果的启动盘跟白苹果没有两样, 所以这部分就非常的简单, 准备一个16GB的U盘, 然后安照苹果官网的教程来:
https://support.apple.com/zh-cn/HT201372
以上方法的前提是你有一台苹果电脑. 如果你只有Windows系统, 那么推荐在你的电脑上用Vmware虚拟一个macOS(网上有很多vmware的macOS镜像, 可以直接启动进去), 然后在里面按照上面的方法操作. 不推荐使用Transmac之类的工具. Linux用户想必都能找到自己的方法, 这里不做介绍.

2.2 给启动盘安装Clover

你制作的这个启动盘虽然可以启动你的苹果电脑, 但不能启动PC的, 需要安装Clover引导. Clover的官网地址:
https://sourceforge.net/projects/cloverefiboot/files/Installer/ 
下载最新版本(首次写这篇文章的时候是 Clover_v2.4k_r4700), 解压缩, 直接在你的苹果电脑上或者vmware虚拟的macOS上运行:

目标盘:
注意!!!! 选择刚制作的U盘, 
然后点 Customize并勾选如下选项:
Clover for UEFI Booting Only
Install Clover in the ESP
展开 UEFI Drivers, 并勾选:
AptioMemoryFix-64 (必选,否则无法启动PC)
ApfsDriverLoader-64 (提供APFS文件系统支持, 请务必勾选)
FSinject-64  (保证Clover/kexts/other下的驱动可以正常加载)
SMChelper-64 (当NVRAM出错可以恢复上次正确启动的NVRAM)
DataHubDxe-64 (非必要, 强迫症可以不选)
VboxHfs-64 (提供HFS Plus 文件系统的支持)
接下来如果你打算使用Apple的磁盘加密功能, 勾选:
FileVault2 UEFI Drivers (不需要磁盘加密功能的不用选, 东西越多, 出错几率越大)
附图参考:

至此, Clover已经安装到你的U盘上了, 然后你就可以用这个U盘启动你的PC并安装. 为了减少不必要的麻烦, 可以对U盘上的Clover提前做一些设置, 并且这些设置是可以直接用在后面的善后工作中去的

Clover的Config.plist是主设置文件, 在U盘的EFI分区中, 可以使用Clover Configurator来修改, 官方下载地址:
https://mackie100projects.altervista.org/download/ccg/

2.3 预设置config.plist (如下设置遵循最小化原则, 所以尽量不要 乱勾选你不知道的东西)

打开 Clover Configurator, 定位到 Mount EFI, 下半部分列出了当前的设备, 这里我们找到U盘, 然后点 Mount Partition, 输入密码, 然后点Open Partition, 一个EFI文件夹会自动打开, 进入EFI/Clover文件夹, 右键点击config.plist, 选择用 Clover Configurator 打开, 这时候可以看到一系列的设置项:

2.3.1 ACPI

点 list of patches, 选择:

change EHC2 to EH02
change EHC1 to EH01
同时删掉patches 列表里面其他的东西, 这部分是USB2.0的补丁, 可以让macOS正确识别纯USB2.0的端口.
可以考虑选择: (只是装饰作用, 让ioreg里面的SAT0显示为SATA)
change SAT0 to SATA
取消勾选本页面的所有选项, 包括Fixes下面的 1 和  2 两页的选项, 删除Drop Tables里面的东西,
然后勾选:
Plugintype
这部分是让CPU的变频正常工作, 这样从允许的最低频率一直到CPU到 Turbo频率都可以在macOS下正常工作. 附图参考:
Reset Address 和 Reset Value 可以按图填写, 不填写也没有关系.

2.3.2 Boot 

勾选 
Verbose (-v) 
debug=0x100 
keepsyms=1
作用: 启动macOS的时候, 能看到文字debug, 方便分析问题, 了解进度.

Custom Flags 也就是自定义的启动参数, 填写:
alcid=1 
额外的还可以填写:
-lilubeta
-wegbeta 
-alcbeta 
作用: alcid=1是声音相关的, 关于这个其实比较复杂,对于我的声卡则是alcid=5, 通常来说alcid=1应该会ok, 追求完美的话, 后面可以自行尝试不同的数字. 

-lilubeta -wegbeta -alcbeta  是让后面要安装的 Lilu.kext whatevergreen.kext applealc.kext 无论在什么版本的macOS下面都保证顺利加载.

启动参数之间用空格隔开, 带参数的启动参数比如alcid=1前面请不要擅自加 “-”, 不带参数的启动参数需要加 “-”

注意⚠️ CloverConfigurator 5.4.x界面有点变化, 启动参数可以点右键添加一些预设的, 可以在下面点 + 手动添加, 一行一个启动参数. 

2.3.3 Devices 

取消所有选项, 能留空的就留空.

2.3.4 Graphics 

取消所有选项, 能留空的就留空.

2.3.5 Kernel and Kext Patches, 

取消所有选项, 删除KextstoPatch等等四个tab下面的所有条目, 能留空的就留空.

对于Ivy Bridge 和 Sandy Bridge系列的CPU, 勾选 KernelXCPM, 其余的CPU无需勾选.

对于某些主板有CFG LOCK的,但是BIOS里面没有关闭选项的, 启动会卡 ++++++++++++++++, 还需要勾选 KernelPM, 如果BIOS可以关闭CFG LOCK, 那么就不需要勾选这个选项. 目的是让macOS不写入数据到BIOS的某个地方, 跳过从而可以正常启动. 更深入的关闭隐藏CFG Lock的方法, 请自行google, 关键词: "Grub Shell CFG Lock"

KextstoPatch 页, 点左下角的+, 添加如下内容:
Name: com.apple.driver.usb.AppleUSBXHCI
Find: 83FB0F0F 83030500 00
Replace: 83FB0F90 90909090 90
Comment: Disable USB Limit 10.14+ by PMHeart

作用: 此补丁是去掉Mojave的USB端口数量限制(apple限制为15个usb端口), 当你的主板USB接口比较多的时候, 可以被全部识别. 注意⚠️, 仅适用于 10.14. 如果你是10.14.1以及之后的安装文件, 此patch无效 , 其他版本请移步: 各版本macOS的USB Patch方法

2.3.6 SMBIOS

选择一个与你的CPU最接近的型号, 点击那个 “上下小箭头”


举例: 我的Z77电脑是E3-1230v2 + RX560, 没有集成显卡, 所以我的选择是 MacPro6,1
举例: 我的Brix电脑是i3-5010u, 我选择Macbookair7,1
举例: 如果你的CPU是8代的如 8400, 8100, 8700K等... 选择 Macmini8,1 (什么你没有看到? 那么请下载最新的clover configurator)
举例:如果你CPU是7700K 6700K等, 选择 imac17,1 到 imac18,3 都行..
总之, 在里面找和你的CPU最接近的SMBIOS型号.

2.3.7  Rt Variables
BooterConfig 0x28
CsrActiveConfig 0x3 (0x3保留大部分SIP的功能, 与此同时有可以保证未签名的kexts安装到系统文件夹)
至此 config.plist设置完毕, 这个设置可以满足大部分的新电脑. 先不要急着拔掉U盘去启动你的电脑, 接下来还要做一些通用的补充

III. 软件进阶篇

注意以下所有的kext都有Debug和Release版本, 只需要下Release版本, 在Release版本解压后, 只需要里面的 xxxx.kext, 请勿使用 xxxx..kext.dSYM. (本以为这个是常识问题, 但是貌似... 有人并没有常识)

接下来需要安装一些通用的驱动(kext), 解决一些通用的问题.

FakeSMC (Or VirtualSMC)

下载地址: 
https://bitbucket.org/RehabMan/os-x-fakesmc-kozlek/downloads/
解压, 将 fakesmc.kext 放到: (压缩包里面其他的几个kext作用是提供CPU, 显卡, 硬盘等传感器信息, 让一些系统监控app可以读取, 属于可选项)
EFI/Clover/Kexts/other/
作用: 毫无疑问, 没有这个玩意, 就别黑苹果啦.

++++ 2018年10月29日更新++++

可以用VirtualSMC替代FakeSMC, 提供MMIO支持, 我也不知道这是什么东西, 但据说前者是SMC2代, 后者是SMC初代, 方法如下:
下载地址:
https://github.com/acidanthera/VirtualSMC/releases
将下载的 VirtualSMC.kext 替换掉 Clover/kexts/other/FakeSMC.kext
将下载的 VirtualSMC.efi  替换掉 Clover/drivers64UEFI/SMCHelper-64.efi

USBInjectAll

下载地址: 
https://bitbucket.org/RehabMan/os-x-usb-inject-all/downloads/
解压, 将 USBInjectAll.kext 放到
EFI/Clover/Kexts/other/
作用: 将主板上的所有USB2.0, 3.0等接口完全暴露给macOS, 让你的USB设备工作舒畅 (后期可能需要做USB端口自定义, 更精确的定位USB端口, 那是一件比较麻烦的事情, 需要一定的动手能力)

 Lilu 和AppleALC

下载地址:
https://github.com/acidanthera/Lilu/releases
https://github.com/acidanthera/AppleALC/releases
解压, 将 AppleALC.kext 和 Lilu.kext 放到
EFI/Clover/Kexts/other/
作用: 提供声音支持, 前面的alcid=1启动参数需要这个两个kext的支撑

WhateverGreen

下载地址:
https://github.com/acidanthera/WhateverGreen/releases
解压, 将 WhateverGreen.kext 放到
EFI/Clover/Kexts/other/
作用: 解决Intel AMD 以及 nVidia 的显卡各种问题.  如果安装完成后你的Intel显卡在关于本机(About This Mac)上只显示 7M 显存, 或者是睡眠唤醒不了等黑屏问题, 或者是连安装界面都进不去, 请看下一篇关于Intel FrameBuffer的文章:
[搬运/翻译工]正确驱动Intel显卡的Framebuffer[黑苹果]
可选:

有线网卡的驱动:
https://bitbucket.org/RehabMan/os-x-intel-network/downloads/ (针对板载Intel网卡)
https://bitbucket.org/RehabMan/os-x-realtek-network/downloads/  (针对板载Realtek网卡)
需要什么就装什么, 不要同时都装.

Wi-Fi和蓝牙:
如果你购买的是BCM943602CS这款, 无需任何设置, 插上就可以用, 如果不能免驱动, 则需要以下2个kexts:
WiFi: https://github.com/acidanthera/AirportBrcmFixup/releases 
蓝牙: https://bitbucket.org/RehabMan/os-x-brcmpatchram/downloads/ (BrcmFirmwareRepo.kext 和 BrcmPatchRAM2.kext 当然, 还是装在老地方 kexts/other/)

IV. 安装macOS

经过上述的修改和添加, 现在这个U盘可以启动电脑了

4.1  BIOS的一些推荐设置:

  • USB方面的选项, 开启XHCI和XHCI Handoff, 同时开启EHCI和EHCI Handoff. 前者启用USB3.0, 后者启用USB2.0
  • SATA方面, 启用AHCI
  • 如果有CSM设置, 开启CSM, 让UEFI和传统的BIOS并存, 方便使用Linux/Windows/DOS
  • 看到有独立显卡(或者PCIE接口) UEFI的选项, 选择UEFI Only. 这样可以解决很多开机黑屏, 唤醒黑屏, 重启黑屏, 断电再开机黑屏的一系列问题. 或者干脆关闭CSM(Never)
  • 如果你的BIOS有 CFG Lock, 关闭此选项, 否则启动会出现 ++++++
  • 如果你的BIOS有 Execute Disable Bit, 开启此选项
  • 如果主板有ErP选项, 开启. 这个可以解决睡眠自动唤醒的问题,尤其是装有Wi-Fi和蓝牙的电脑. ErP能让连接主板的设备进入更深层次的睡眠. 
  • 如果主板有网络唤醒功能, 关闭.
  • VT-D和VT-X这两个CPU虚拟化相关的选项, 可以开启, 也可以关闭,如果出问题, 就选择关闭.

4.2 用U盘启动电脑

BIOS选择U盘启动, 会出现Clover的界面, 在整个安装过程中, 电脑会重启几次.

第一次启动的时候选择
Boot macOS install from "Install Mojave (or High Sierra)"
然后安装安装程序的提示进行, 这部分跟安装macOS到白苹果是一样的. 文件系统推荐APFS格式, 分区格式选择GUID

之后会重启2~3次, 每一次看到Clover的启动界面, 请都选择:
Boot macOS [ Install ] from  硬盘的名字
直到进入macOS的桌面.

整个过程请不要选择带Preboot的选项... 那是在开启了磁盘加密功能的时候使用的启动项.

4.3 善后工作

4.3.1 安装Clover到硬盘, 参考上文 2.2, 只不过此处目标盘要选择硬盘

4.3.2 将前面修改好的U盘的EFI/Clover/config.plist复制到硬盘的EFI/Clover/config.plist, 挂载硬盘的EFI同前面挂载U盘的方法.

4.3.3 将U盘的EFI/Clover/Kexts/other/的所有内容拷贝到硬盘的 EFI/Clover/Kexts/other/ 下面

4.3.4 如果你前面用了VirtualSMC代替了FakeSMC, 请按照 III 软件进阶篇 对硬盘的EFI操作一遍替换.

4.3.5 重启电脑, 拔掉U盘, 此时就可以从电脑的硬盘启动电脑.

至此安装完毕.










9 comments:

  1. 真的好详细啊,我一点一点学习了 太感谢你了🙏

    ReplyDelete
  2. 请问,BIOS刷NVME驱动, 请问在哪里找的驱动,可以分享下吗?谢谢

    ReplyDelete
  3. 您好,想请教下博主,我也有一台brix 5010,但是hd5500搞了一晚死活没能驱的起来,请问博主能够分享下brix的config.plist么,多谢啦:)

    ReplyDelete
  4. 请教 可以风向一下您的 efi 吗? 谢谢~ 同款主板。。。

    ReplyDelete
    Replies
    1. 风向---->分享, 不好意思,激动打错了。 我的邮箱: kennydiff@163.com

      Delete