The minimal-usb-stick-config.plist for installation is simple, it's not perfect, but it works and easy to debug. Here is the explanation for each section:
Boot
Section. Add below content to config.plist.-v
argument will print log to screen,debug=0x100
will prevent autoreboot when kernel panic,keepsyms=1
will print symbols on kernel panic. All this 3 arguments help us understand what's going on when booting.
<key>Boot</key>
<dict>
<key>Arguments</key>
<string>-v debug=0x100 keepsyms=1</string>
</dict>
Devices
Section. Must set 'fixOwnership' to true, otherwise we will stuck at 'waiting for booting media'. You can ignore this option if you set your BIOS 'XHCI Hand-off' to 'Enabled'.
<key>USB</key>
<dict>
<key>FixOwnership</key>
<true/>
</dict>
Graphics
Section. When Clover detects an Intel iGPU, it automatically enables Intel Injection if the Graphics section doesn't exist in the config.plist. We don't need injection to make iGPU works, even worse, we can't boot with injection on. To bypass this, we must explicitly disable injection.
<key>Graphics</key>
<dict>
<key>Inject</key>
<false/>
</dict>
KernelAndKextPatches
Section. In order to make all usb port works, we need a patch, otherwise will stuck at 'waiting for boot media' if the port which usb stick plugged in doesn't work.
<key>KernelAndKextPatches</key>
<dict>
<key>KextsToPatch</key>
<array>
<dict>
<key>Comment</key>
<string>Port limit increase (Ricky)</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
g/sPD4OPBAAA
</data>
<key>InfoPlistPatch</key>
<false/>
<key>MatchOS</key>
<string>10.14.x</string>
<key>Name</key>
<string>com.apple.driver.usb.AppleUSBXHCI</string>
<key>Replace</key>
<data>
g/sPkJCQkJCQ
</data>
</dict>
</array>
</dict>
-
RtVariables
Section. We place kexts in EFI folder, so we don't need to disabled sip. According to Clover's wiki, SIP disabled default, we don't need any setting in RtVariables. -
SMBIOS
Section. choose iMac19,1 as ProductName, it doesn't matter whether you have dGPU or not.
<key>SMBIOS</key>
<dict>
<key>ProductName</key>
<string>iMac19,1</string>
</dict>
SystemParameters
Section. We setInjectKexts
to Yes to make sure that all the kexts we added before get injected properly.
<key>SystemParameters</key>
<dict>
<key>InjectKexts</key>
<string>Yes</string>
</dict>
- What about
AppleRTC
,AppleIntelCPUPM
,KernelPm
,KernelXCPM
etc, all of them are unnecessary( why?)