本帖最后由 athlonreg 于 2018-3-31 23:55 编辑
前前言:此贴鉴于论坛教程虽多,新人找不到具体思路,故将大致思路做一个整理,其中引用多处其他帖子,均为很好的参考帖,希望能帮助到大家
PS:应景友要求,在一楼增加pdf版,方便大家留用
前言
Clover支持两种启动方式,启动过程如下:
BIOS -> MBR -> PBR -> boot -> CLOVERX64.efi -> OSLoader
UEFI -> CLOVERX64.efi -> OSLoader
对于支持UEFI的机器,我们通常用CLOVER引导原版安装,这种方式最大的优点就是有恢复分区可以正常升级,当然前提要把引导做好。
前期知识储备CLOVER的目录结构 CLOVER正常工作需要的完整目录包括config.plist、CLOVERX64.efi两个文件以及ACPI、drivers64UEFI、kexts、和themes几个目录,如图所示:
其中,config.plist是最核心的文件—-配置文件,CLOVER所实现的多数功能都是通过这个文件进行配置的,对其进行配置修改的最好用的工具就是Clover Configurator,主页面如下:
详细的配置方法下面会有介绍。
另外一个文件是CLOVERX64.efi,这个文件用以启动CLOVER引导,通过EasyUEFI或者BIOS对启动项进行添加操作时,就是指向的这个文件。
ACPI是用以存放机器ACPI表单的,全称是”高级配置和电源管理接口”(Advanced Configuration and Power Interface),其子目录由origin、patched、WINDOWS构成,其中origin用以保存通过在CLOVER引导界面按F4或Fn F4提取的原始表单,此目录的所有表文件是不加载的,需要对其进行编译得到.dsl文件,然后对其进行修改拍错,最后保存成.aml文件保存至patched目录才会在启动时加载,而WINDOWS目录则可以忽略不计。在黑果中,我们用到的表单文件只有SSDT和DSDT,其中DSDT主要是对各种设备的描述,而SSDT则主要是用以实现某个功能。
drivers64UEFI是由各种EFI驱动组成,在笔记本黑果需要用到的有FSInject-64.efi、HFSPlus-64.efi、OsxAptioFixDrv-64.efi、APFS.efi以及OsxFatBinaryDrv-64.efi,在新版CLOVER中只需要FSInject-64.efi、HFSPlus-64.efi、OsxAptioFixDrv-64.efi、以及APFS.efi
kexts主要用于存储各种驱动(OS X称为内核扩展)
themes用以存储CLOVER引导界面的主题
根据机器配置定制kext
kext在EFI的配置中是相当重要的,好的kext配置可以弥补config的不足,不好的kext配置也会让本应完美的config发挥不出作用。
FakeSMC.kext:FakeSMC是现今的⿊黑苹果过程中唯⼀一的”必要性”内核扩展程序。对于⿊黑苹果有着⽆与伦比的重要性,但是很多⼈并不知道FakeSMC为什么重要,只是知道必须有它才⾏行,。简⽽而⾔言之就是: FakeSMC是⽤用于将PC主板上的各种控制芯⽚片伪装成Mac独有的硬件控制芯片SMC以骗过系统从⽽而是系统正常启动的⼀一个内核扩展(其实很复杂,这⾥里不多说了)。在系统启动的阶段,FakeSMC负责告知系统有关主板上SMC芯⽚片(伪装出来的)的各种加密信息,欺骗系统。也就是说呢,无论你笔记本是什么配置,此驱动是必须的。
ApplePS2SmartTouchPad.kext、VoodooI2C.kext和VoodooPS2Controller.kext:用以驱动键盘鼠标以及触摸板,三者选择一个即可,三者区别就是适用的类型不一样,有PS/2、Synaptics、alps、i2c等等,其中Synaptics、alps用ApplePS2SmartTouchPad.kext适配性好一些,VoodooI2C.kext比较麻烦,仅适用于i2c触摸板。具体怎么确定走的总线类型,大家参考百度就好了,这里就不再赘述。
FakePCIID.kext:这个kext的目的是与IOPCIDevice设备建立连接,以便当另一个驱动程序连接到同一设备时,它可以提供备用的PCI ID。也就是说,如果用到Fake-PCI-ID中的其他任何kext的话,此驱动都是必要的。
FakePCIID_Intel_HD_Graphics.kext:此驱动主要用于核显HD4200 HD4400 HD4600 P4600、Iris 540 Iris 550 Iris Pro 580、HD510 HD515 HD520 HD530 P530(多数530不需要这个)、P4000、P6300 - 162a、UHD620 KabyLake-R、UHD630 CoffeeLake。
FakePCIID_Intel_HDMI_Audio.kext:其目的是为不支持的HDAU提供支持(通常称为B0D3,但需要将其重命名为HDAU,以满足Apple的期望值)在Haswell以上的系统中提供HDMI-audio的设备。 FakePCIID_BCM57XX_as_BCM57765.kext:这个kext将与众多不受支持的BCM57XX以太网设备建立连接,以使本机驱动程序为兼容的更广泛的BCM以太网芯片组工作。 FakePCIID_Intel_GbX.kext:这个kext将与一些Intel以太网设备建立连接,以使基于Intel芯片组的驱动程序工作。
FakePCIID_XHCIMux.kext:将会连接到8086:1e31, 8086:9c31, 8086:9cb1, 8086:9c31, 8086:8cb1这个注入器是正常的FakePCIID任务的一部分。它实际上并没有伪造任何PCI id。相反,它将某些值强加于Intel XHCI USB3控制器上的XUSB2PR (PCI配置偏移0xD0)。其效果是将任何USB2设备与XHC端口上的USB2引脚连接到EHC1。换句话说,使用USB2驱动而不是USB3驱动程序(AppleUSBEHCI vs AppleUSBXHCI)处理USB2设备。
FakePCIID_AR9280_as_AR946x:这是FakePCIID.kext的特殊应用,是在一个AR9280被重新命名为其他设备的情况下使用的。例如,在联想u430中,将一个AR9280作为AR946x重新命名是很有用的,因为该设备可以被BIOS白名单所允许,而AR9280不是。通过使用FakePCIID,我们可以将PCI id重新映射回AR9280 (168c:002a),即使该设备本身报告的是168c:0034。
FakePCIID_Broadcom_WiFi.kext:这个kext将连接到14e4:43b1, 14e4:4357, 14e4:4331, 14e4:4353, 14e4:432b, 14e4 . 432b, 14e4:43a3,或14e4:43a0。以及106b:4e, 14e4:4312, 14e4:4313, 14e4:4318, 14e4:431a, 14e4:4320, 14e4:4324, 14e4:4324, 14e4:4328, 14e4:432d。
最初是为BCM94352Z创建的,这个特殊的FakePCIID应用程序。在使用多种支持的Broadcom WiFi设备时,kext被用来模拟真正的Apple Airport(苹果无线网卡)。
ACPIBatteryManager.kext:用以使笔记本正确显示电量,但通常需要配合DSDT的patch才能发挥作用。
VoodooHDA.kext:万能声卡驱动,用以禁用AppleHDA来驱动声卡。
AppleALC.kext:通过对AppleHDA的动态patch实现对AppleHDA的完整加载。
Lilu.kext:一个开放源码的内核扩展,为macOS系统提供了一个任意的kext、库和程序补丁的平台。
IntelGraphicsDVMTFixup.kext:修复因BIOS显存分配不足造成的KP。建议broadwell+平台使用。 IntelGraphicsFixup.kext:动态修复核显的各种问题(例如腾讯视频死机,开机二阶段花屏等),建议Haswell+平台使用。
CoreDisplayFixup.kext:为不受支持的4K机器(非Iris)开启高分辨率支持。
AzulPatcher4600.kext:针对HD4600的额外修复,仅推荐HD4600使用。
HibernationFixup.kext:修复睡眠,以支持某些机器在3和28休眠模式下的正常休眠。 NvidiaGraphicsFixup.kext:修复某些n卡的黑屏。
WhateverGreen.kext:用以驱动A卡。
RealtekRTL8111.kext:用以驱动RealtekRTL8111.kext以太网卡设备。
AppleIGB.kext、IntelMausiEthernet.kext:用以驱动Intel板载网卡设备。
根据机器配置定制config
Clover 可以根据硬件进行自动配置,但是自动配置组件并不总是完美的。这也是保留用户可以自定义配置的原因。用户可以修改配置文件config.plist中的配置参数,或者基于GUI的配置界面进行修改配置。配置文件是基于XML的,可以以文本文件来处理。它可以用纯文本编辑器进行编辑,也可以用plist编辑器进行编辑,如PlistEdit。配置文件 (config.plist) 必须放在EFI/CLOVER目录下。
这里遵循一个原则,尽可能简单的设置config,不知道具体作用的就让他空着好了,如果你不知道参数的需求值是什么,就从配置文件中排除!不要用没有值的参数。
正所谓前人种树,后人乘凉,很多黑果的热心朋友已经为我们做好了教程,这里我直接拿来用了。
|