使用 OpenCore 引导黑苹果 – 淮城一只猫
source link: https://iiong.com/booting-hackintosh-with-opencore/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
之前使用 Clover
作为系统系统引导,再加上本身接触的比较晚,查阅很多资料都是老版本,包括一些驱动什么的,版本众多,看着迷糊,虽然使用没啥问题,无奈有时间遇到一个小问题需要花大量的时间去查找寻找时间,所以这段时间尝试使用 OpenCore
作为新的系统引导(下文简称 OC
)。因为 OC
出世不长,有些资料版本比较新,很适合像我这种不需要了解某个事物历史等因素。还好这次入坑遇到不少人帮助,非常感谢一些朋友的帮助让我少走一点弯道,到此为止现在系统能够正常使用。
前一段时间虽然成功,但因为网卡和显卡驱动问题一直拖到这个月,所以这次换了一部分硬件,不知道算是降级体验吗?
- 主板:微星
Z370-OC-Pro
MS-7B48 - CPU:Intel(R) Core(TM) i7-8700K CPU @ 3.70GHz
- 显卡:NVIDIA GeForce GTX 1070 Ti => 降级替换 蓝宝石 RX590 8G D5 超白金 极光特别版 (2304个流处理器)
- 磁盘:WDC WDS240G2G0A-00JH30 (240GB) / NVMe Asgard AN3 1TNVM (1.0TB) / ST2000DM006-2DM164 (2.0TB)
- 内存条:阿斯加特 - 16.0GB
- 板载网卡:Realtek PCIe GbE Family Controller
- 无线网卡:Killer(R) Wi-Fi 6 AX1650x 160MHz Wireless Network Adapter (200NGW) => BCM94360CD
- 声卡:Realtek High Definition Audio
- 显示器:一个飞利浦 直面 1080P / 俩个三星 曲面屏 1080P => 三星直板 4K 分辨率支持HDR 显示器 - 俩个
因为手里有三星设备,想体验Sumsunng Dex
系统,加上三星品控不错,所以入了三星显示器。至此为止,硬件基本满足黑苹果的需求,下面进行引导替换。由于这仅仅是替换引导,不需要对系统进行更换,所以只是替换 EFI
目录下的 Clover
引导而已。
首先需要准备一个刻录系统的优盘,这边可以参考下之前的 刻录系统文章 ,如果你懒的话可以直接使用磁盘工具
格式化优盘:
- 名称随意编写,例如
OC
- 格式选择
MS-DOS(FAT)
这样且当做 EFI
分区,下面大部分操作就在这里面进行。
无论无何不能在系统安装的磁盘的
EFI
里进行修改操作,如果破坏无法进入系统真的完蛋了。其次要勤奋备份自己的
EFI
数据,因为折腾不容易,丢了又要从头开始。
之前不知道在哪看到的,不管是 Clover
还是 OpenCore
引导驱动越少越好,较少对系统的干扰因素。所以当时制作引导,只保留最精简的驱动和配置。这边我不会细细讲解配置过程,因为网上的教程实在是太多了,可以参考下:精解OpenCore 和 使用OpenCore引导黑苹果 ,写得不错,看他们写的文章,花了三个小时搞定 EFI
引导。
当时版本:OpenCore-0.5.7
下载 OC
解压把 EFI
文件夹放到优盘下面,并且查看 /EFI/OC
文件夹下内容:
Drivers文件夹下:
综合上述,只保留 OpenRuntime.efi
文件,其他可以删除,当然把 OpenCanopy.efi
保留下来。然后额外添加
下面整内核驱动 Kext
:
将刚刚解压的 OC
文件夹下的 Docs/Sample.plist
文件重命名放入 EFI/OC/config.plist
,和 ACPI
文件夹同级。使用 Xcode
或者 PlistEdit Pro
打开 config.plist
删除上面的无用注释 #WARNING - #
。如果这类文本编辑器看着不直观可以使用 OCC
编辑器进行管理:文档介绍 。
然后根据上面的教程对自己配置进行一步个性化配置,这边不多说了。值得注意的时候,注意三码要一样,不然出现丢失 Apple ID
的问题,其次切换引导需要清除 NVRAM
再进入系统。
在 config.plist/DeviceProperties/
的 PciRoot(0x0)/Pci(0x1f,0x3)
有个 Layout-id
属性注入自己的 Codecs
,更多教程查看:AppleALC支持的Codecs列表及AppleALC的使用 。
由于是独显输出,核显就拿来加速吧:在 config.plist/DeviceProperties/
的 PciRoot(0x0)/Pci(0x2,0x0)
有个 AAPL,ig-platform-id
填入值是:0300983E
,当时没理解这个,原来是固定值。如果没有独显,需要核显驱动视频那需要根据自己的 CPU
平台进行注入 GPUID
:Coffee Lake帧缓冲区补丁及UHD630 Coffee Lake ig-platform-id数据整理 。
USB 3.0 定制
当初在屏蔽 USB2 死活屏蔽不了,然后发现是 Usbinjectall.kext
驱动下错了,应该是 @Sniki 维护的 Usbinjectall.kext 驱动,剩下可以参考:Hackintool 使用教程及插入姿势。值得注意是这边只需要最后生成的 USBPorts.kext
驱动放入 Kexts
文件夹下,并且禁用 USBInjectAll.kext
驱动即可。
CPU 变频
参考 CPUFriend的安装与使用 ,不过这个文章没有说出 System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources/
哪个 plist
文件,这边是你的 board-id
名字的文件,终端输入:
➜ ~ ioreg -l | grep board-id
| "board-id" = <"Mac-63001698E7A34814">
然后进行文章的操作。
USBX供电
添加 USBPower.kext
驱动即可
CPU 电源管理
参考:注入X86
SSDT-PM.aml
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20200110 (64-bit version)
* Copyright (c) 2000 - 2020 Intel Corporation
*
* Disassembling to symbolic ASL+ operators
*
* Disassembly of iASL2s2csv.aml, Sun Apr 12 22:14:00 2020
*
* Original Table Header:
* Signature "SSDT"
* Length 0x000000C6 (198)
* Revision 0x02
* Checksum 0xC2
* OEM ID "ACDT"
* OEM Table ID "PM"
* OEM Revision 0x00001000 (4096)
* Compiler ID "INTL"
* Compiler Version 0x20180427 (538444839)
*/
DefinitionBlock ("", "SSDT", 2, "ACDT", "PM", 0x00001000)
{
External (_SB_.PCI0.LPCB, DeviceObj)
External (_SB_.PCI0.PMCR, DeviceObj)
Device (PPMC)
{
Name (_ADR, 0x001F0002) // _ADR: Address
OperationRegion (PMCB, PCI_Config, Zero, 0x0100)
Field (PMCB, AnyAcc, NoLock, Preserve)
{
VDID, 32,
Offset (0x40),
Offset (0x41),
ACBA, 8,
Offset (0x48),
, 12,
PWBA, 20
}
}
Scope (_SB.PCI0.LPCB)
{
Device (PMCR)
{
Name (_HID, EisaId ("APP9876")) // _HID: Hardware ID
Name (_STA, 0x0B) // _STA: Status
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
Memory32Fixed (ReadWrite,
0xFE000000, // Address Base
0x00010000, // Address Length
)
})
}
}
}
原生 NVRAM 支持
修改 config.plist
支持:
- Booter → Quirks → DisableVariableWrite = no
- Misc → Security → AllowNvramReset = yes
- Misc → Security → ExposeSensitiveData = 3
- NVRAM → LegacyEnable = no
添加 DSDT
补丁SSDT-PMC.dsl
:
/*
* Intel 300-series PMC support for macOS
*
* Starting from Z390 chipsets PMC (D31:F2) is only available through MMIO.
* Since there is no standard device for PMC in ACPI, Apple introduced its
* own naming "APP9876" to access this device from AppleIntelPCHPMC driver.
* To avoid confusion we disable this device for all other operating systems,
* as they normally use another non-standard device with "PNP0C02" HID and
* "PCHRESV" UID.
*
* On certain implementations, including APTIO V, PMC initialisation is
* required for NVRAM access. Otherwise it will freeze in SMM mode.
* The reason for this is rather unclear. Note, that PMC and SPI are
* located in separate memory regions and PCHRESV maps both, yet only
* PMC region is used by AppleIntelPCHPMC:
* 0xFE000000~0xFE00FFFF - PMC MBAR
* 0xFE010000~0xFE010FFF - SPI BAR0
* 0xFE020000~0xFE035FFF - SerialIo BAR in ACPI mode
*
* PMC device has nothing to do to LPC bus, but is added to its scope for
* faster initialisation. If we add it to PCI0, where it normally exists,
* it will start in the end of PCI configuration, which is too late for
* NVRAM support.
*/
DefinitionBlock ("", "SSDT", 2, "ACDT", "PMCR", 0x00001000)
{
External (_SB_.PCI0.LPCB, DeviceObj)
Scope (_SB.PCI0.LPCB)
{
Device (PMCR)
{
Name (_HID, EisaId ("APP9876")) // _HID: Hardware ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If (_OSI ("Darwin"))
{
Return (0x0B)
}
Else
{
Return (Zero)
}
}
Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
{
Memory32Fixed (ReadWrite,
0xFE000000, // Address Base
0x00010000, // Address Length
)
})
}
}
}
编译 SSDT-PMC.aml
文件加入 ACPI
补丁支持。
OC 主题支持
主题资源:OcBinaryData
添加主题驱动支持:EFI -> OC -> Drivers -> OpenCanopy.efi
- Misc-其它设置 → Boot → PickerMode 启动菜单模式: External
- Misc-其它设置 → Boot → PickeraTtribute 图形界面设置属性: 1
- UEFI-UEFI设置 → UEFI驱动,添加
OpenCanopy.efi
项
未完待续...
个人自用 EFI 分享地址:个人网盘
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK