인디노트

Ramblings of a Hackintosher - A (Sorta) Brief Vanilla Install Guide 본문

개발 플랫폼 및 언어

Ramblings of a Hackintosher - A (Sorta) Brief Vanilla Install Guide

인디개발자 2019. 3. 6. 05:08

https://www.reddit.com/r/hackintosh/comments/68p1e2/ramblings_of_a_hackintosher_a_sorta_brief_vanilla/


NOTE - This guide has been deprecated with the release of Mojave and the changes to Intel fb patching.

I have been working on a Mojave & High Sierra guide of late that you can find here. Mind you, just like this guide, my Mojave & High Sierra guide will be edited as new information comes out and I'll do my best to keep it up to date.

As always, feel free to send feedback to me here, or in the /r/Hackintosh discord (link in the sidebar).

Thank you, and happy hacking,

-CorpNewt



So You Want A Vanilla Install?

What does that even mean?

A vanilla setup implies that the OS itself remains relatively untouched - and that the bulk of the Hackintosh-related kexts, patches, etc are contained on the EFI partition. For all intents and purposes, a vanilla install's main partition is identical to that of an official Apple computer.


Prerequisites

This guide focuses on Desktops ONLY. There are other guides out there for laptops (see RehabMan's guides at TMac) - but they're often much more specific than this guide will be.

We'll need a few things to get us started.

  1. An 8+GB USB flash drive

  2. The Install OS X/macOS.app (preferably downloaded direct from the app store)

  3. Clover's Install Package

  • You can find Dids' auto-built versions here

  1. Clover Configurator (the brave can edit with any text editor - but CC is typically quicker)

  • Make sure you get the Vibrant edition

  1. FakeSMC.kext (there are other kexts we need - but this one is absolutely necessary on every Hackintosh)

  • The above link goes to a copy I built of the HWSensors3 FakeSMC I built with Lilu And Friends on 2018-02-28 as there were issues with the prior link not working for some

  1. Any other kexts for our mobo/etc

  • We'll go over this later

  1. Some patience and google-fu


Just For Convenience

Hey guys - I've been getting a lot of users who can't see drives or have other issues with their setups after starting with a blank config.plist in Clover Configurator. You can either start with the starter config listed above - or for convenience, you can start with a copy of my config.plist (serials are blanked out). I have also uploaded my EFI folder with Clover 2.4 r4392 with the hopes that it may be useful as well. Feel free to use them, edit them, whatever to get you on your feet. Ask questions if you have any!

Also worth noting that I've added sample config.plists and Clover Configurator screenshots at the end of each section.


Drives Not Showing??

After running into this with other users a number of times - and some vague guesses back and forth as to what exactly may be causing it - a member on my Discord channel (jeef) seems to have tracked down the magic section to add. If you don't see any drives in Disk Utility in the installer - make sure you have the following in your config.plist:

    <key>SSDT</key>
    <dict>
        <key>DropOem</key>
        <false/>
        <key>Generate</key>
        <false/>
    </dict>

If anyone would like to determine exactly which of those 2 values causes the drives to show up or not - I'll further edit this part. If you use an older CPU (think first gen i-series) or you want to Clover to generate your C and P states instead of creating an SSDT, you can flip the <false/> under <key>Generate</key> to <true/>.


Building the USB Installer

Once you have your 8+GB USB installer, we need to make sure it's set up properly. If you don't plan on patching the installer (and I don't) - you want the USB setup the following way:

  • GUID Partition Map

  • 1 Partition

  • OS X Extended (Journaled)

To do this, fire up the Terminal (located in /Applications/Utilities) and enter diskutil list.

This will give you a list of all the connected disks and their partitions. Take note of the disk identifier for your USB drive.DO NOT GUESS THIS AS WE ARE ABOUT TO ERASE IT! Then run the following replacing disk# with your actual identifier:

diskutil partitionDisk /dev/disk# GPT JHFS+ "USB" 100%

This will partition the disk as listed above and rename it to "USB".

You can now run the corresponding command from Apple's own instructions - for this example, we'll be using the High Sierra command:

sudo "/Applications/Install macOS High Sierra.app/Contents/Resources/createinstallmedia" --volume /Volumes/USB --applicationpath "/Applications/Install macOS High Sierra.app" --nointeraction

This will take some time, and it doesn't output much for status updates. It can take upwards of 30-40 minutes, so just be patient.

When this completes, you will have a USB installer that can boot on a real Mac. We just need to get the Hackintosh-related stuff set up, and we'll be in business!

For those that are timid around the command line - I did put together a script awhile back that can perform these actions for you.


Installing Clover

Fire up your Clover install package. On the 2nd page of the installer make sure to select your USB as the destination. We also want to Customize the installation - as the defaults are pretty lackluster.

The usual options you want to check in the Customize menu are as follows:

  • Install Clover for UEFI booting only

  • Install Clover to the ESP

  • Under Drivers64UEFI:

  • AptioMemoryFix (the new hotness that includes NVRAM fixes, as well as better memory management)

  • VBoxHfs-64.efi (or HFSPlus.efi if available) - one of these is required for Clover to see and boot HFS+ volumes. If you see the option to enable it in the installer, make sure it's selected - if you don't see it in the installer, verify that one of them exists in the EFI -> CLOVER -> drivers64UEFI folder

  • ApfsDriverLoader - (Available in Dids' Clover builds - or here) this allows Clover to see and boot from APFS volumes by loading apfs.efi from ApfsContainer located on block device (if using AptioMemoryFix as well, requires R21 or newer)

NOTE: For FileVault to work, the following additional entries must be selected under Drivers64UEFI per this thread - information may be outdated, will revise:

  • FirmwareVolume.efi — or you will get a cursor creation error

  • AppleImageCodec-64.efi — or you will get image decoding failures

  • AppleEvent.efi — or you will get AppleEvent installation failures (r3877+ Clover built-in)

These are also recommended for FileVault:

  • AppleUITheme-64.efi — fixes grey login screen background on 10.10+

  • HashServiceFix-64.efi — will fix HDPI cursor in newer OS

  • SMCHelper.efi — silences most of the SMC errors

  • AppleGraphicsConfig-64.efi and OSInfo-64.efi — respond to a few requested protocols (r3877+ Clover built-in)

  • AptioInputFix — this is for FV input - but can cause some delay in the Clover GUI

Run the installation - and after it completes, Clover will have automatically mounted the USB's EFI partition for you. Now we're ready to set Clover up!


Clover Setup

I always install my kexts to /Volumes/EFI/EFI/CLOVER/kexts/Other/ - you can use the 10.xx folders if you prefer, but I've always had better luck with the Other folder.

The config.plist is located at /Volumes/EFI/EFI/CLOVER/config.plist - it's just an xml formatted property list. You can use any text editor to configure this - but many people prefer Clover Configurator as it helps prevent errors, and has a gui to work with.

What Kexts Do I Need?

FakeSMC.kext is a requirement - it emulates the SMC chip found on real macs, and convinces the OS that yes, this is a real Mac. Without it, no Hackintosh :(

For Networking - you may need one of the following:

  • IntelMausiEthernet.kext - this works with most newer Intel LAN chipsets

  • AppleIntelE1000e.kext - this works with older Intel LAN chipsets - but can cause KPs on newer chipsets

  • AtherosE2200Ethernet.kext - this works for most Atheros or Killer networking chipsets

  • RealtekRTL8111.kext - this works with most gigabit Realtek LAN chipsets

  • RealtekRTL8100.kext - for 10/100 Realtek LAN chipsets

I typically build the above from source - I know Meize has all of them (except AppleIntelE1000e.kext) on her github. I may add some pre-built versions here eventually.

For USB - you'll want to grab USBInjectAll.kext. If you're on a Kaby Lake or Z370 Coffee Lake system - you'll likely also need the XHCI-200-series-injector.kext (thanks /u/deplorable-d00d for reminding me). H370, B360, and H310 Coffee Lake systems should make sure to include the XHCI-300-series-injector.kext. X79/X99/X299 may need the XHCI-x99-injector.kext from that same repo - but I've yet to test on my GA-X79-UP4.

For Audio - you'll want to grab /u/vit9696's AppleALC.kext and the companion Lilu.kext - providing you have a supported codec.

For GPUs - you should grab WhateverGreen.kext - this has the functionality of IntelGraphicsFixupNvidiaGraphicsFixupCoreDisplayFixup, and Shiki all rolled into it.


Depending on the rest of your hardware - you may need more kexts as well, but this guide is designed to be a general foundation, so you'll have to rely on your google-fu for that.

How To Setup The Config.plist

I typically don't use the default config given by the Clover installer. It's loaded with fixes and comments - and it's hard to navigate. If you open Clover Configurator, and don't select any plist - it gives you a clean slate to use. I do my SMBIOS generation in CC, but everything else manually - so as such, that's how I'll explain it in this guide. Alternatively, you can open the default config.plist that Clover installs to /Volumes/EFI/EFI/CLOVER/config.plist - then make sure you uncheck all the DSDT Fixes in both pages of the ACPI tab of CC.

Note: For the sake of making things easier, there are example configs and Clover Configurator screenshots for each hardware family at the end of each section. Please make sure to change the SMBIOS and such though - and don't just copy and paste them, as I'm rather sure that plenty of people are already using those same serials :P

With CC open, navigate to the SMBIOS tab.

Click the button on the right of the screen with the up and down arrows to bring up the SMBIOS list, you'll want to pick one of the following based on your hardware (NOTE: picking an SMBIOS is more important than just choosing something that sounds cool. It affects things like USB routing, graphics profiles, CPU power management, etc and you should pick the SMBIOS with hardware closest to yours). A quick reference for what to choose is as follows:

  • Coffee Lake - iMac18,2/18,3

  • Use iMac18,1 if you're using the iGPU only

  • Kabylake - iMac18,2/18,3

  • Skylake - iMac17,1

  • Broadwell - iMac16,1 (rarely used, if ever)

  • Haswell Refresh (Devil's Canyon) - iMac15,1

  • Haswell With NVIDIA GPU - iMac14,2

  • Haswell With iGPU - iMac14,1

  • Ivy Bridge - iMac13,2

  • Sandy Bridge - iMac12,2 (although recently I've had better success with iMac13,2)

  • X79/X99/X299 - MacPro6,1

After selecting your mac model - click the hell out of the Generate New button under the Serial field until your hands are sore.

Some fields will pre-fill, but not all. You'll want to fire up the Terminal - and run uuidgen. Copy that output, and paste it into the SmUUID field.

Then copy your Board Serial, and navigate to the RtVariables tab, and at the very top - paste it into the MLB field.

Set your ROM field to UseMacAddr0, set the BooterConfig field to 0x28, and the CsrActiveConfig field to 0x3E7. This will disable SIP (in case we need to load any unsigned kexts).

At this point, you can save the config.plist on the Desktop - so we can edit it further with a plain text editor.

The next few steps will be hardware dependent - I'm going to focus mainly on Haswell, Skylake, Kaby, and Coffee as those are the most recent.

NOTE: In the following config.plist examples, you will see sections of the config - but you may or may not have more info in yours. I have included ellipses (...) where there may be more info. Make sure you do not include these in your config.plist. If you'd like to check your config.plist structure, there are 2 things you can do:

  1. From the Terminal, run plutil /path/to/config.plist - replacing /path/to/config.plist with the actual path.

  • This will tell you if the xml structure of the plist is valid. If you get anything other than OK in your output - you'll need to verify that you're closing tags and etc.

  1. Verify your scope against clover's config.plist structure outline on their wiki.

  • This will help you verify that sections are in the right place

NOTE: Before we get into the rest of the plist setup - some boards have some unprintable characters in the MATS table (explained here by /u/TheRacerMaster). You can either drop that table, or make sure that FixHeaders is enabled in CC -> Acpi -> Fixes (page 2) (or both). Here is an example picture of a kernel panic fixed with MATS dropping/FixHeaders (this was on an ASRock Z370 board).

Haswell

DSDT Patches:

	<key>ACPI</key>
	<dict>
		<key>DSDT</key>
		<dict>
			<key>Fixes</key>
			<dict>
				<key>AddMCHC</key>
				<true/>
				<key>FixHPET</key>
				<true/>
				<key>FixIPIC</key>
				<true/>
				<key>FixRTC</key>
				<true/>
				<key>FixShutdown</key>
				<true/>
				<key>FixTMR</key>
				<true/>
			</dict>
			<key>Patches</key>
			<array>
				<dict>
					<key>Comment</key>
					<string>change EHC1 to EH01</string>
					<key>Disabled</key>
					<false/>
					<key>Find</key>
					<data>
					RUhDMQ==
					</data>
					<key>Replace</key>
					<data>
					RUgwMQ==
					</data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>change EHC2 to EH02</string>
					<key>Disabled</key>
					<false/>
					<key>Find</key>
					<data>
					RUhDMg==
					</data>
					<key>Replace</key>
					<data>
					RUgwMg==
					</data>
				</dict>
				<dict>
					<key>Comment</key>
					<string>Rename SAT0 to SATA</string>
					<key>Disabled</key>
					<false/>
					<key>Find</key>
					<data>
					U0FUMA==
					</data>
					<key>Replace</key>
					<data>
					U0FUQQ==
					</data>
				</dict>
				...
			</array>
			...
		</dict>
		<key>FixHeaders</key>
		<true/>
		...
	</dict>

These renames help us setup some sweet ACPI naming so that macOS can find the proper values for SATA, IMEI, and integrated graphics.

SSDT Drop Tables:

    <key>DropTables</key>
    <array>
        <dict>
            <key>Signature</key>
            <string>DMAR</string>
        </dict>
        <dict>
            <key>Signature</key>
            <string>MATS</string>
        </dict>
    </array>

Dropping DMAR helps us avoid issues with Vt-d, and dropping MATS helps us avoid some nondescript panics related to unprintable characters.

SSDT Generate:

<key>PluginType</key>
<true/>

This little piece of magic takes the place of Pike R. Alpha's ssdtPRGen.sh script when enabling CPU power management. Thanks to RehabMan for adding it.

Boot Args:

<key>Boot</key>
<dict>
	<key>Arguments</key>
	<string>dart=0</string>
	...
</dict>

The dart=0 boot arg bypasses Vt-d, a PCI passthrough tech that's not supported on OSX/macOS. This is different than Vt-x (Intel Virtualization) - which is actually required if you want to run 64-bit VMs.

If you get memory management issues - it might be worth taking the time to add your RAM info into your config.plist -> SMBIOS -> Memory as well as using OsxAptioFixDrv-64.efi (instead of Fix2, or AptioMemoryFix) and adding the -no-zp boot arg.

Audio:

<key>Devices</key>
<dict>
	<key>Audio</key>
	<dict>
		<key>Inject</key>
		<string>1</string>
	</dict>
	...
</dict>

The injected layout may change depending on your codec - but 1 will work for most people. For a more detailed guide - check out my audio tutorial.

Graphics:

<key>Graphics</key>
<dict>
	<key>Inject</key>
	<dict>
		<key>ATI</key>
		<false/>
		<key>Intel</key>
		<true/>
		<key>NVidia</key>
		<false/>
	</dict>
	<key>NvidiaSingle</key>
	<false/>
</dict>

If you have Intel HD 4000, or HD 4600 graphics, then all you should need to do to get them working is to enable injection. If you're using an NVIDIA GPU that's not super old - DO NOT INJECT NVIDIA. It is very rare that NVIDIA Injection would be needed on any card Fermi or newer. The ig-platform-id is added automatically by Clover for the HD 4000/4600 - but if you need a connectorless ig-platform-id, use the following:

  • HD 4000: 0x01620006

  • HD 4600: 0x04120004

KernelAndKextPatches:

<key>KernelAndKextPatches</key>
<dict>
	<key>AppleRTC</key>
	<true/>
	<key>AppleIntelCPUPM</key>
	<true/>
	<key>KernelPm</key>
	<true/>
	...
</dict>

The above should be true. AppleRTC prevents BIOS resetting at each reboot, and the other two prevent AICPUPM kp's due to an attempt at writing to a locked MSR.

KextsToPatch:

<key>KextsToPatch</key>
<array>
	<dict>
		<key>Comment</key>
		<string>External icons patch</string>
		<key>Disabled</key>
		<false/>
		<key>Find</key>
		<data>
		RXh0ZXJuYWw=
		</data>
		<key>Name</key>
		<string>AppleAHCIPort</string>
		<key>Replace</key>
		<data>
		SW50ZXJuYWw=
		</data>
	</dict>
	<dict>
		<key>Comment</key>
		<string>Change 15 port limit to 24 in XHCI kext 10.13</string>
		<key>Disabled</key>
		<false/>
		<key>Find</key>
		<data>
		g32MEA==
		</data>
		<key>MatchOS</key>
		<string>10.13.x</string>
		<key>Name</key>
		<string>AppleUSBXHCIPCI</string>
		<key>Replace</key>
		<data>
		g32MGw==
		</data>
	</dict>
	...
</array>

The first patch fixes an issue where internal SATA drives sometimes show up as orange external drives in the Finder. The 2nd raises the 15 USB port limit Apple imposed to 24 on High Sierra.

SystemParameters:

<key>SystemParameters</key>
<dict>
	<key>InjectKexts</key>
	<string>Yes</string>
	...
</dict>

We want to enable kext injection so that Clover can inject kexts from the Other folder into the kext cache at boot.


Sample Haswell config.plist

Haswell Clover Configurator Screenshots


Skylake

DSDT Patches:

	<key>ACPI</key>
	<dict>
		<key>DSDT</key>
		<dict>
			<key>Fixes</key>
			<dict>
				<key>AddMCHC</key>
				<true/>
				<key>FixHPET</key>
				<true/>
				<key>FixIPIC</key>
				<true/>
				<key>FixRTC</key>
				<true/>
				<key>FixShutdown</key>
				<true/>
				<key>FixTMR</key>
				<true/>
			</dict>
			<key>Patches</key>
			<array>
				<dict>
					<key>Comment</key>
					<string>Rename SAT0 to SATA</string>
					<key>Disabled</key>
					<false/>
					<key>Find</key>
					<data>
					U0FUMA==
					</data>
					<key>Replace</key>
					<data>
					U0FUQQ==
					</data>
				</dict>
				...
			</array>
			...
		</dict>
		<key>FixHeaders</key>
		<true/>
		...
	</dict>

When trying to enable audio devices, OSX/macOS searches for the HDEF entry in ACPI. On Skylake boards, this is set to HDAS instead - this, and the HECI -> IMEI and GFX0 -> IGPU patches (for the iGPU) are done by AppleALC.kext and IntelGraphicsFixup.kext respectively. We also add a patch for SATA (SAT0 -> SATA).

SSDT Drop Tables and Generate section are the same as Haswell. Nothing super architecture-dependent in there. If you're not using IntelGraphicsFixup.kext - or you have a version earlier than 1.2.5, you will want to add -disablegfxfirmware to your boot args though as this prevents some wonky iGPU nonsense in High Sierra.

USB/Sierra Glitch Fix:

<key>Devices</key>
<dict>
	<key>AddProperties</key>
	<array>
		<dict>
			<key>Device</key>
			<string>IntelGFX</string>
			<key>Key</key>
			<string>AAPL,GfxYTile</string>
			<key>Value</key>
			<data>
			AQAAAA==
			</data>
		</dict>
	</array>
	<key>USB</key>
	<dict>
		<key>FixOwnership</key>
		<true/>
		<key>Inject</key>
		<true/>
	</dict>
	...
</dict>

The AddProperties entry helps prevent the Sierra graphics glitch with the HD 530. On the USB front, to avoid hanging at Enable Legacy Matching (or having a line spit out halfway and then quit in verbose) - we need to make sure we have FixOwnership enabled.

Audio remains the same as Haswell.

Graphics:

<key>Graphics</key>
<dict>
	<key>Inject</key>
	<dict>
		<key>ATI</key>
		<false/>
		<key>Intel</key>
		<true/>
		<key>NVidia</key>
		<false/>
	</dict>
	<key>NvidiaSingle</key>
	<false/>
	<key>ig-platform-id</key>
	<string>0x19120000</string>
</dict>

The added ig-platform-id is required for functional HD 530 graphics. For a connectorless ig-platform-id, use 0x19120001.

The 3 KernelAndKextPatches remain the same as Haswell.

The KextsToPatch section also remains the same, except that we're adding an extra entry:

<key>KextsToPatch</key>
<array>
	<dict>
		<key>Comment</key>
		<string>10.11-SKL-1912000-4_displays</string>
		<key>Disabled</key>
		<false/>
		<key>Find</key>
		<data>
		AQMDAw==
		</data>
		<key>Name</key>
		<string>AppleIntelSKLGraphicsFramebuffer</string>
		<key>Replace</key>
		<data>
		AQMEAw==
		</data>
	</dict>
	...
</array>

This patch creates a 4th display - and should work for most layouts. Note that adjusting connector types will require more tweaking.


Sample Skylake config.plist

Skylake Clover Configurator Screenshots


Kaby Lake

Much of the setup of Kaby and Skylake is the same, DSDT patches, Boot Args, FixOwnership and Inject under Devices -> USB. They differ in the Graphics section though:

Graphics:

<key>Graphics</key>
<dict>
	<key>Inject</key>
	<dict>
		<key>ATI</key>
		<false/>
		<key>Intel</key>
		<true/>
		<key>NVidia</key>
		<false/>
	</dict>
	<key>NvidiaSingle</key>
	<false/>
	<key>ig-platform-id</key>
	<string>0x59120000</string>
</dict>

You also don't need the Sierra Glitch fix, or the 4th display patch, as those are specific to the HD 5xx iGPUs. For a connectorless ig-platform-id, use 0x59120003.

If you are running any OS prior to 10.12.6, you'll need to fake the CPU and iGPU as Skylake, however.


Sample Kaby Lake config.plist

Kaby Lake Clover Configurator Screenshots


Coffee Lake

Much of the setup of Coffee and Kaby is the same - as Intel hasn't changed much since Skylake. As of 10.13.2, you don't need to fake the CPUID as Kaby Lake for Coffee - but the UHD 630 still needs to be faked as an HD 630 to function - as so:

Graphics:

<key>Graphics</key>
<dict>
	<key>Inject</key>
	<dict>
		<key>ATI</key>
		<false/>
		<key>Intel</key>
		<true/>
		<key>NVidia</key>
		<false/>
	</dict>
	<key>NvidiaSingle</key>
	<false/>
	<key>ig-platform-id</key>
	<string>0x59120000</string>
</dict>

For a connectorless ig-platform-id, use 0x59120003.

FakeID:

<key>Devices</key>
<dict>
	<key>FakeID</key>
	<dict>
		<key>IntelGFX</key>
		<string>0x59168086</string>
		...
	</dict>
	...
</dict>

As with Kaby, you don't need the Sierra Glitch fix, or the 4th display patch, as those are specific to the HD 5xx iGPUs.


Sample Coffee Lake config.plist

Coffee Lake Clover Configurator Screenshots


NVIDIA Users

nv_disable=1 no long works in High Sierra. If you try using it - you'll likely get the windowserver crashing on a 10-second loop.

As of 10.13.1 (or possible 10.13.2?) - the OS should automatically boot in VESA mode when a Maxwell or Pascall GPU is attached. If you're having issues, though, you should still be able to float in on the iGPU (providing you set it up and are not using a connectorless ig-platform-id) by disabling the NVIDIA card using the following (credit to RehabMan):

    <key>AddProperties</key>
    <array>
        <dict>
            <key>Device</key>
            <string>NVidia</string>
            <key>Disabled</key>
            <false/>
            <key>Key</key>
            <string>name</string>
            <key>Value</key>
            <data>
            I2Rpc3BsYXk=
            </data>
        </dict>
        <dict>
            <key>Device</key>
            <string>NVidia</string>
            <key>Disabled</key>
            <false/>
            <key>Key</key>
            <string>IOName</string>
            <key>Value</key>
            <string>#display</string>
        </dict>
        <dict>
            <key>Device</key>
            <string>NVidia</string>
            <key>Disabled</key>
            <false/>
            <key>Key</key>
            <string>class-code</string>
            <key>Value</key>
            <data>
            /////w==
            </data>
        </dict>
    </array>

And you'll also need to ensure that NVIDIA injection is set to <true/> as follows:

<key>Graphics</key>
<dict>
	<key>Inject</key>
	<dict>
		<key>NVidia</key>
		<true/>
		...
	</dict>
	...
</dict>

Disable NVIDIA dGPU Clover Configurator Screenshots


Finally, you'll need to ensure that your iGPU is set to the primary display in BIOS.

If that still doesn't work - you may need to physically remove the card until you get the Web Drivers installed.

NOTE: After installing the OS and NVIDIA Web Drivers, you'll want to remove the above patches and set NVIDIA Injection to <false/> otherwise the OS won't see the dGPU.


If you've made it this far - your config.plist should be set up! You can go ahead and copy it into /Volumes/EFI/EFI/CLOVER/and overwrite the one that exists there.


NVIDIA Settings

(I know this section includes post-install tips - but I included it here because it also includes pre-install steps)

If you use a Kepler card - you shouldn't have to add anything special! (Although most will still work with the Web Drivers)

For Maxwell and Pascal, you'll have to use the NVIDIA Web Drivers. The problem is, you can't boot with the built-in OS drivers - so you'll have to use nv_disable=1 (if you're running Sierra or lower) in your boot args until you get the NVIDIA Web Drivers installed. For High Sierra 10.13.1 on up - the OS should automatically enter VESA mode when a Maxwell or Pascal card is attached.

After installing the Web Drivers, depending on your OS version, you'll need one of a couple things. For all OS versions, you'll need to remove nv_disable=1 to actually use the web drivers - as that flag's only purpose is to prevent the OS from attaching drivers to NVIDIA cards.

If you're on El Cap - you'll want to add nvda_drv=1 to your boot args.

If you're on Sierra - you'll want to ensure you have the following in your SystemParameters:

<key>SystemParameters</key>
<dict>
	<key>NvidiaWeb</key>
	<true/>
	...
</dict>

Sierra also requires working NVRAM - if you can't enable the Web Drivers, you may also need to install EmuVariableUefi-64.efi into your /Volumes/EFI/EFI/CLOVER/drivers64UEFI/ folder. But before trying that - I'd make sure that you're using AptioMemoryFix from /u/vit9696 and Download-Fritz (available in the Customize -> drivers64UEFI section of the Clover install package) as this includes a ton of great fixes - as well as native NVRAM on boards including 100-series on up.


BIOS Settings

The following are the basic BIOS settings for most systems:

  1. Load Optimized Defaults

  2. If your BIOS has a VT-d setting, disable it

  3. If your system has CFG-Lock, disable it

  4. If your system has Secure Boot Mode, disable it

  5. Set OS Type to Windows 8/10 (many heavy hitters in the hackintosh scene recommend this over the OtherOS setting which often enables CSM)

  6. Set XHCI Handoff to Enabled

  7. If you have a Serial port, disable it


Boot Up And Install

You'll want to boot verbose (-v in boot args - or highlight your target drive in Clover, press space, put a check in Verbose, then boot with selected options) until you get things running stable as this gives us some insight when things don't work as intended. You should also add the debug=0x100 flag - as this prevents the computer from rebooting if you encounter a kernel panic.

Once you boot, you'll want to format your target drive as 1 partition, OS X Extended (Journaled), GUID Partition Map - then proceed with the installation. It may be a 2 part install, and it will likely take some time.


Post-Install

The great thing about setting things up ahead of time - is post-install becomes much easier! All you really need to do, is install Clover with the same settings we used for the USB, then mount the EFI of the USB and copy the EFI folder from USB EFI -> Hard Drive EFI and you should be good to go!

If you need to mount your EFI - you can do so from the terminal with a few short commands (or use my script):

diskutil list

Take note of the identifier for the EFI partition you want to mount, it'll look like diskDsP where D is the disk number, and P is the partition number (nearly always 1 for EFI), then type:

diskutil mount diskDsP

Replacing D and P with their respective numbers.

At this point, if you're not using the PluginType setting, you should also generate an SSDT using Pike R. Alpha's ssdtPRGen.sh script - the resulting sstd file will be in ~/Library/ssdtPRGen and will be named ssdt.aml (don't use any of the ssd-#.aml files). You just need to rename that file to SSDT.aml (not sure it really matters, but case is sometimes important) and then copy to /Volumes/EFI/EFI/CLOVER/ACPI/patched/ and reboot.


Kernel Panics?

If you're getting kernel panics at any point - try looking for the extension in backtrace - it will often list the kext that's causing the issue and give you some clues as to what the problem may be.

If you can't see the panic as it reboots before you can catch it - add debug=0x100 to your boot args which will prevent a reboot on panic.

If you're on 10.13 and the panic scrolls a bunch of extra info that obscures the extension in backtrace - you can add the following patches from /u/vit9696 to your config.plist -> KernelAndKextPatches -> KernelToPatch section that will prevent all the extra spam:

        <dict>
            <key>Comment</key>
            <string>Disable panic kext logging on 10.13 Debug kernel</string>
            <key>Disabled</key>
            <false/>
            <key>Find</key>
            <data>
            sABMi1Xw
            </data>
            <key>MatchOS</key>
            <string>10.13</string>
            <key>Replace</key>
            <data>
            SIPEQF3D
            </data>
        </dict>
        <dict>
            <key>Comment</key>
            <string>Disable panic kext logging on 10.13 Release kernel</string>
            <key>Disabled</key>
            <false/>
            <key>Find</key>
            <data>
            igKEwHRE
            </data>
            <key>MatchOS</key>
            <string>10.13</string>
            <key>Replace</key>
            <data>
            igKEwOtE
            </data>
        </dict>

10.13.4 Specifics

With 10.13.4 a couple things changed. Firstly, you need Clover 2.4 r4421 or newer to be able to boot the USB installer - this doesn't affect those who installed 10.13.3 or lower, then updated to 10.13.4 though.

Secondly, there's a new USB Port Limit Increase Patch, add it to config.plist -> KernelAndKextPatches -> KextsToPatch:

		<dict>
			<key>Comment</key>
			<string>PMHeart 15 port limit patch</string>
			<key>Disabled</key>
			<false/>
			<key>Find</key>
			<data>
			g32UDw+DlwQAAA==
			</data>
			<key>InfoPlistPatch</key>
			<false/>
			<key>MatchOS</key>
			<string>10.13.x</string>
			<key>Name</key>
			<string>AppleUSBXHCIPCI</string>
			<key>Replace</key>
			<data>
			g32UD5CQkJCQkA==
			</data>
		</dict>

In some cases (primarily when booting the USB installer it seems), that still won't lift the port limit (and you get the garbled text and no entry symbol) - in those cases, you can try FredWst's patch instead:

		<dict>
			<key>Comment</key>
			<string>change 15 port limit to 26 in XHCI kext (credit FredWst)</string>
			<key>Disabled</key>
			<false/>
			<key>Find</key>
			<data>
			g32UDw+DlwQ=
			</data>
			<key>InfoPlistPatch</key>
			<false/>
			<key>MatchOS</key>
			<string>10.13.x</string>
			<key>Name</key>
			<string>com.apple.driver.usb.AppleUSBXHCI</string>
			<key>Replace</key>
			<data>
			g32UGg+DlwQ=
			</data>
		</dict>

10.13.6 Specifics

There's a new USB port limit increase patch - it's as follows (thanks to FredWst and PMHeart <3):

		<dict>
			<key>Comment</key>
			<string>USB 10.13.6 by PMHeart</string>
			<key>Disabled</key>
			<false/>
			<key>Find</key>
			<data>
			g32IDw+DpwQAAA==
			</data>
			<key>InfoPlistPatch</key>
			<false/>
			<key>MatchOS</key>
			<string>10.13.x</string>
			<key>Name</key>
			<string>com.apple.driver.usb.AppleUSBXHCI</string>
			<key>Replace</key>
			<data>
			g32ID5CQkJCQkA==
			</data>
		</dict>

Final Thoughts

This guide is by no means a catch-all, but it does go over a number of points that I consider when going through a new setup. I understand that I wrote many sections quickly, and with very brief explanation. I also wrote this without planning or organizing first - so if something is wrong, doesn't make sense, or just seems off - please send me a message and I'll do my best to clear up the confusion.

As always, Happy Hacking!

-CorpNewt

반응형
Comments