Jump to content
ErmaC

Clover Problems and Solutions

2,946 posts in this topic

Recommended Posts

I afraid we can't.

Kernel will create own script and it will replace our dxe.

Kernel write an address for wake into FACS and goes to sleep.

ACPI will start the computer in Real Mode with the address from FACS. The address is in the kernel.

We may patch the kernel for it creates other procedure to return from sleep.

 

EDK2 tells about boot script not accounting Hackintosh.

 

Why would 'Hackintosh' be any different? A direct jump to the OS wakeup vector makes no sense at all, macOS has no knowledge about how to initialize the platform. EDK2's S3Resume2Pei retrieves the saved S3 data and prepares the platform for DXE phase, then jumps to the BootScriptExecutorDxe driver, which runs all saved boot script entries (including a possible HWP one), locates FACS and then pass control to the OS wakeup vector, which restores the OS context.

Share this post


Link to post
Share on other sites
Advertisement

Why would 'Hackintosh' be any different? A direct jump to the OS wakeup vector makes no sense at all, macOS has no knowledge about how to initialize the platform. EDK2's S3Resume2Pei retrieves the saved S3 data and prepares the platform for DXE phase, then jumps to the BootScriptExecutorDxe driver, which runs all saved boot script entries (including a possible HWP one), locates FACS and then pass control to the OS wakeup vector, which restores the OS context.

You forgot about the difference RealMode ProtectedMode

EDK2's Resume will work in ProtectedMode while macOS kernel started ab ovo, in RealMode. 

Share this post


Link to post
Share on other sites

OK,

but how did you supposed to catch the value Facs->FirmwareWakingVector

it will be assigned by macOS kernel immediately before sleep while you want to get it at boot time?

*sigh* Current UEFI firmwares support Boot Scripts because that's how the platform inits after S3... I don't want to catch it, the firmware does already, how else would resume ever reach that vector?

Share this post


Link to post
Share on other sites

So we should change firmware? 

Is it possible that it would work like

WakeEvent -> Firmware -> DxeDriver -> FACS -> OS

?

You would need to flash a DXE driver. This DXE driver does not(!) run during wakeup, but during initial boot. It writes the register value to the MSR -and- into the Boot Script table. When the FW S3-resumes, the Boot Scripts get executed, which sets the MSR just as DXE driver would if it would run and the OS boots. It would even work if Clover did that, so long as the firmware does not lock the Boot Scripts on EndOfDxe or ReadyToBoot, though one shouldn't bet on that...

Share this post


Link to post
Share on other sites

You would need to flash a DXE driver. This DXE driver does not(!) run during wakeup, but during initial boot. It writes the register value to the MSR -and- into the Boot Script table. When the FW S3-resumes, the Boot Scripts get executed, which sets the MSR just as DXE driver would if it would run and the OS boots. It would even work if Clover did that, so long as the firmware does not lock the Boot Scripts on EndOfDxe or ReadyToBoot, though one shouldn't bet on that...

So DXE driver should reflash main BIOS?

 

 

I notice a bug during dumping all OEM ACPI tables

7:000  0:003    7. CBFFD718: 'SSDT', 'CpuPm', Rev: 1, Len: 2850
 Found hidden SSDT 4 pcs
7:000  0:000        * C52F1018: 'SSDT', 'CpuPm', Rev: 1, Len: 2850  53 53 44 54 22 0B 00 00 01 5F 50 6D 52 65 66 00 Internal length = 2850 -> SSDT-3x.aml
7:003  0:003        * CF489A98: 'SSDT', 'ApIst', Rev: 1, Len: 771  53 53 44 54 03 03 00 00 01 76 50 6D 52 65 66 00 Internal length = 771 -> SSDT-4x.aml
7:006  0:003        * CF488598: 'SSDT', 'Cpu0Cst', Rev: 1, Len: 1315  53 53 44 54 23 05 00 00 01 BC 50 6D 52 65 66 00 Internal length = 1315 -> SSDT-5x.aml
7:010  0:003        * CF48FC18: 'SSDT', 'ApCst', Rev: 1, Len: 281  53 53 44 54 19 01 00 00 01 EC 50 6D 52 65 66 00 Internal length = 281 -> SSDT-6x.aml
7:013  0:003   -> SSDT-2.aml

Tables SSDT-3x and SSDT-2 are the same.

It happen because of procedure DumpChildSsdt ( ©Dmazar) is recursive.

But I never encounter SSDT double embedded. May be we should make it plain procedure? Someone?

 

EDITED.

It's not a Clover bug. These tables have different memory location and so this is a BIOS bug. We can compare TableID and exclude older one. But it is already dumped.

It's manual job.

Share this post


Link to post
Share on other sites

Pretty much everything you would need to figure out from Intel specs is easy available, unlike AMD stuff, and since EDK2, more broadly UEFI, are both mainly fueled by intel so is that stuff. I think this document will probably explain exactly what's happening, how S3resume works, and how to change it. Also if you notice it appears S3resume is SMM locked in the DXE phase by design. The actual stuff takes place in PEI, so that's probably entirely a firmware modification. It's hard to look at some parts of the EDK2 and take it realistically that is the way it's being done directly from initialization in a hardware's firmware, Aptio ends up looking very different from EDK2.

Share this post


Link to post
Share on other sites

I have checked my 10.13 installers boot.efi and they shown as 10.12 (created from 10.12 with createinstallmedia), which is bad.
Please try this patch (added dbg infos + comment out (Entry->LoaderType == OSTYPE_OSX_INSTALLER) here).
Temporarily install mandatory kexts in /L/E/ with CSR_ALLOW_UNTRUSTED_KEXTS so you are able to reach the desktop.

 

** In xnu-4570.1.46

#define CSR_ALLOW_UNAPPROVED_KEXTS  (1 << 9)

Share this post


Link to post
Share on other sites

Oh, that's a very fast and deep rabbit hole. MSRs are not the same for all CPUs, in fact some CPUs in the same family/model with different hardware revisions and feature sets have different MSRs. Some models allow you to set some MSRs, while others do not allow you to modify these values. The biggest example is the K models that have unlocked multiplier and turbo MSRs. Some models have power management features that you can change MSRs for while others do not, and others still only allow the value to be written once then it is locked and can only be read until the reset pin has voltage for at least a minimum period of time (a full reset takes place). Also, writing or reading MSRs can cause an exception, so you'd have to be sure what values you could set and which MSRs can be written or you would not be able to boot because clover would just throw exception and crash every time it tries to set that MSR. Have you tried making sure that your firmware doesn't have like "fast boot" enabled? Where it purposefully doesn't initialize this stuff? Because I don't understand why it wouldn't be initializing the power management MSRs every boot... On the other hand, I'm pretty sure that all of those have default values when the CPU itself is initialized. I mean that really just seems like a terrible job at writing firmware......

 

Or write a DXE driver which writes to the Boot Script Table and flash...

 

:blink: Probably SMM locked in DXE phase. You would need to write a PEI driver. Also, man, that's some bricking your mobo territory....

Share this post


Link to post
Share on other sites

 

 

:blink: Probably SMM locked in DXE phase. You would need to write a PEI driver. Also, man, that's some bricking your mobo territory....

Nah, Boot Script Table cannot be written to during PEI and full SMM Foundation is init via a DXE driver. iirc SMM is locked at EndOfDxe

Share this post


Link to post
Share on other sites

This patch looks reasonable. Will it cause side effect?

 

Hope no. From comment:

// Correct OSVersion if it was not found
// This should happen only for 10.7-10.9 OSTYPE_OSX_INSTALLER
// For these cases, take OSVersion from loaded boot.efi image in memory

No need to take OSVersion from loaded boot.efi if we already have valid OSVersion grabbed from plist.

We can apply OSVersion value from loaded boot.efi to all OSTYPE_OSX (not just installer) with no OSVersion as a last attempt.

Share this post


Link to post
Share on other sites

Nah, Boot Script Table cannot be written to during PEI and full SMM Foundation is init via a DXE driver. iirc SMM is locked at EndOfDxe

 

It can only be written during PEI and also is SMM locked before DXE phase. The Boot Script Executor is the first and only module to execute in DXE when resumed.

S3Resume PEIM performs the below-listed major actions:
 Restore all LockBox to its original place.
 Call SMM entry point to restore processor configuration.
 Lock SMM. This must be done to maintain SMM integrity.
 Call Boot Script Executor to restore chipset configuration.
 Signal EndOfPei, to notify other PEIMs.
 Find FACS OS waking vector to resume.

Share this post


Link to post
Share on other sites

That's restoring from SMRAM but I was just showing you that it can only be written in PEI. S3 SMM driver runs in PEI, and DXE must dispatch SMM call to save it. You can see that from the code you just linked, it uses SMM lock box. Look at the code for SMM lock box, the service instance runs in PEI (and obviously SMM).

Share this post


Link to post
Share on other sites

That's restoring from SMRAM but I was just showing you that it can only be written in PEI. S3 SMM driver runs in PEI, and DXE must dispatch SMM call to save it. You can see that from the code you just linked, it uses SMM lock box. Look at the code for SMM lock box, the service instance runs in PEI (and obviously SMM).

 

Well, of course it uses the LockBox...

DXE driver writes a Boot Script -> BootScriptLib saves the data to LockBox -> reset -> PEIM retrieves lock box -> DXE executes Boot Scripts and resumes.

Share this post


Link to post
Share on other sites

Well, of course it uses the LockBox...

DXE driver writes a Boot Script -> BootScriptLib saves the data to LockBox -> reset -> PEIM retrieves lock box -> DXE executes Boot Scripts and resumes.

 

I guess I am not being clear enough or something. That's only valid for EDK2 based firmware. You don't know how the firmware actually performs this, maybe it doesn't use SMM and instead uses some internal stuff in NVRAM/ROM. Since you don't know how the firmware actually stores the boot script table, you using that code means you have to change the DXE driver for S3 so that you do know how it's stored - in an SMM lock box. You changing that S3 DXE driver means you also have to change the S3 PEI driver because you can't be sure the method that is being used store/retrieve the boot script table otherwise. If you store in an SMM lock box and the PEI driver doesn't read from there to restore then it's useless. Is that clearer for what I'm trying to say?

Share this post


Link to post
Share on other sites

In Clover's Kext Patcher, there is an option to patch a kext's Info.plist with

<key>InfoPlistPatch</key>
<true/>
 

Unfortunately, for kexts packed in prelinkedkernel this feature is nearly useless.  Because the Info.Plist used is the one placed inside __PRELINK_INFO segment of the prelinked kernel.

For example, here's the full Info.plist for AppleHDAController

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>BuildMachineOSBuild</key>
	<string>16B2657</string>
	<key>CFBundleDevelopmentRegion</key>
	<string>English</string>
	<key>CFBundleExecutable</key>
	<string>AppleHDAController</string>
	<key>CFBundleGetInfoString</key>
	<string>AppleHDAController 280.12, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
	<key>CFBundleIdentifier</key>
	<string>com.apple.driver.AppleHDAController</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string>6.0</string>
	<key>CFBundleName</key>
	<string>HDA Controller Driver</string>
	<key>CFBundlePackageType</key>
	<string>KEXT</string>
	<key>CFBundleShortVersionString</key>
	<string>280.12</string>
	<key>CFBundleSignature</key>
	<string>????</string>
	<key>CFBundleSupportedPlatforms</key>
	<array>
		<string>MacOSX</string>
	</array>
	<key>CFBundleVersion</key>
	<string>280.12</string>
	<key>DTCompiler</key>
	<string>com.apple.compilers.llvm.clang.1_0</string>
	<key>DTPlatformBuild</key>
	<string>9M189u</string>
	<key>DTPlatformVersion</key>
	<string>GM</string>
	<key>DTSDKBuild</key>
	<string>17A356</string>
	<key>DTSDKName</key>
	<string>macosx10.13internal</string>
	<key>DTXcode</key>
	<string>0900</string>
	<key>DTXcodeBuild</key>
	<string>9M189u</string>
	<key>IOKitPersonalities</key>
	<dict>
		<key>BuiltInHDA</key>
		<dict>
			<key>CFBundleIdentifier</key>
			<string>com.apple.driver.AppleHDAController</string>
			<key>CodecAddressFilterArray</key>
			<array>
				<dict>
					<key>CodecAddressMask</key>
					<data>
					AQAAAA==
					</data>
					<key>LayoutID</key>
					<integer>16392</integer>
					<key>PCIVendorDeviceID</key>
					<integer>282987200</integer>
				</dict>
				<dict>
					<key>CodecAddressMask</key>
					<data>
					AQAAAA==
					</data>
					<key>LayoutID</key>
					<integer>0</integer>
					<key>PCIVendorDeviceID</key>
					<integer>282987200</integer>
				</dict>
				<dict>
					<key>CodecAddressMask</key>
					<data>
					CQAAAA==
					</data>
					<key>LayoutID</key>
					<integer>65</integer>
					<key>PCIVendorDeviceID</key>
					<integer>282987200</integer>
				</dict>
				<dict>
					<key>CodecAddressMask</key>
					<data>
					AQAAAA==
					</data>
					<key>LayoutID</key>
					<integer>73</integer>
					<key>PCIVendorDeviceID</key>
					<integer>282987200</integer>
				</dict>
			</array>
			<key>DPAlwaysDisplayRouting</key>
			<array>
				<integer>3</integer>
				<integer>33</integer>
				<integer>35</integer>
				<integer>88</integer>
			</array>
			<key>DPAudioDeviceExclusion</key>
			<array>
				<dict>
					<key>ManufacturerID</key>
					<integer>1552</integer>
					<key>ProductID</key>
					<integer>10130</integer>
				</dict>
			</array>
			<key>HighFIFOLimitSupport</key>
			<array/>
			<key>HwFactoryPrefixTranslation</key>
			<array>
				<dict>
					<key>LayoutID</key>
					<integer>78</integer>
					<key>SourceDID</key>
					<integer>43584</integer>
					<key>StandInDID</key>
					<integer>43568</integer>
					<key>VID</key>
					<integer>4098</integer>
				</dict>
				<dict>
					<key>LayoutID</key>
					<integer>78</integer>
					<key>SourceDID</key>
					<integer>43576</integer>
					<key>StandInDID</key>
					<integer>43568</integer>
					<key>VID</key>
					<integer>4098</integer>
				</dict>
				<dict>
					<key>LayoutID</key>
					<integer>79</integer>
					<key>SourceDID</key>
					<integer>43584</integer>
					<key>StandInDID</key>
					<integer>43568</integer>
					<key>VID</key>
					<integer>4098</integer>
				</dict>
				<dict>
					<key>LayoutID</key>
					<integer>79</integer>
					<key>SourceDID</key>
					<integer>43576</integer>
					<key>StandInDID</key>
					<integer>43568</integer>
					<key>VID</key>
					<integer>4098</integer>
				</dict>
			</array>
			<key>IOClass</key>
			<string>AppleHDAController</string>
			<key>IOPCIClassMatch</key>
			<string>0x04010000&0xFFFD0000</string>
			<key>IOProviderClass</key>
			<string>IOPCIDevice</string>
			<key>RequireMaxBusStall</key>
			<array>
				<dict>
					<key>Layouts</key>
					<array/>
					<key>MaxBusStall</key>
					<integer>15000</integer>
				</dict>
			</array>
		</dict>
		<key>BuiltInHDA9D70</key>
		<dict>
			<key>CFBundleIdentifier</key>
			<string>com.apple.driver.AppleHDAController</string>
			<key>DPAlwaysDisplayRouting</key>
			<array>
				<integer>3</integer>
				<integer>33</integer>
				<integer>35</integer>
				<integer>88</integer>
			</array>
			<key>DPAudioDeviceExclusion</key>
			<array>
				<dict>
					<key>ManufacturerID</key>
					<integer>1552</integer>
					<key>ProductID</key>
					<integer>10130</integer>
				</dict>
			</array>
			<key>HighFIFOLimitSupport</key>
			<array/>
			<key>HwFactoryPrefixTranslation</key>
			<array>
				<dict>
					<key>LayoutID</key>
					<integer>78</integer>
					<key>SourceDID</key>
					<integer>43584</integer>
					<key>StandInDID</key>
					<integer>43568</integer>
					<key>VID</key>
					<integer>4098</integer>
				</dict>
				<dict>
					<key>LayoutID</key>
					<integer>78</integer>
					<key>SourceDID</key>
					<integer>43576</integer>
					<key>StandInDID</key>
					<integer>43568</integer>
					<key>VID</key>
					<integer>4098</integer>
				</dict>
				<dict>
					<key>LayoutID</key>
					<integer>79</integer>
					<key>SourceDID</key>
					<integer>43584</integer>
					<key>StandInDID</key>
					<integer>43568</integer>
					<key>VID</key>
					<integer>4098</integer>
				</dict>
				<dict>
					<key>LayoutID</key>
					<integer>79</integer>
					<key>SourceDID</key>
					<integer>43576</integer>
					<key>StandInDID</key>
					<integer>43568</integer>
					<key>VID</key>
					<integer>4098</integer>
				</dict>
			</array>
			<key>IOClass</key>
			<string>AppleHDA8086_9D70Controller</string>
			<key>IONameMatch</key>
			<array>
				<string>pci8086,9d70</string>
			</array>
			<key>IOProbeScore</key>
			<integer>2</integer>
			<key>IOProviderClass</key>
			<string>IOPCIDevice</string>
			<key>RequireMaxBusStall</key>
			<array>
				<dict>
					<key>Layouts</key>
					<array/>
					<key>MaxBusStall</key>
					<integer>15000</integer>
				</dict>
			</array>
		</dict>
	</dict>
	<key>NSHumanReadableCopyright</key>
	<string>AppleHDAController 280.12, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
	<key>OSBundleCompatibleVersion</key>
	<string>1.0.0d1</string>
	<key>OSBundleLibraries</key>
	<dict>
		<key>com.apple.iokit.IOAudioFamily</key>
		<string>200.5</string>
		<key>com.apple.iokit.IOGraphicsFamily</key>
		<string>2.0</string>
		<key>com.apple.iokit.IOHDAFamily</key>
		<string>265.88</string>
		<key>com.apple.iokit.IOPCIFamily</key>
		<string>1.1</string>
		<key>com.apple.kpi.bsd</key>
		<string>8.0.0</string>
		<key>com.apple.kpi.iokit</key>
		<string>8.0.0</string>
		<key>com.apple.kpi.libkern</key>
		<string>8.0.0</string>
		<key>com.apple.kpi.mach</key>
		<string>8.0.0</string>
		<key>com.apple.kpi.private</key>
		<string>8.0.0</string>
		<key>com.apple.kpi.unsupported</key>
		<string>12.0</string>
	</dict>
</dict>
</plist>

 

 

and here's what's found inside __PRELINK_INFO

 

 

<dict>
	<key>CFBundleName</key>
	<string>HDA Controller Driver</string>
	<key>DTXcode</key>
	<string>0900</string>
	<key>DTSDKName</key>
	<string>macosx10.13internal</string>
	<key>NSHumanReadableCopyright</key>
	<string>AppleHDAController 280.12, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
	<key>_PrelinkExecutableLoadAddr</key>
	<integer size="64">0xffffff7f82739000</integer>
	<key>_PrelinkKmodInfo</key>
	<integer size="64">0xffffff7f8274ec80</integer>
	<key>DTSDKBuild</key>
	<string>17A356</string>
	<key>_PrelinkExecutableSize</key>
	<integer IDREF="133"/>
	<key>CFBundleDevelopmentRegion</key>
	<string IDREF="1"/>
	<key>CFBundleVersion</key>
	<string>280.12</string>
	<key>BuildMachineOSBuild</key>
	<string>16B2657</string>
	<key>_PrelinkExecutableSourceAddr</key>
	<integer size="64">0xffffff80029ce000</integer>
	<key>CFBundlePackageType</key>
	<string>KEXT</string>
	<key>CFBundleShortVersionString</key>
	<string>280.12</string>
	<key>CFBundleSupportedPlatforms</key>
	<array>
		<string>MacOSX</string>
	</array>
	<key>OSBundleCompatibleVersion</key>
	<string>1.0.0d1</string>
	<key>_PrelinkExecutableRelativePath</key>
	<string>Contents/MacOS/AppleHDAController</string>
	<key>CFBundleInfoDictionaryVersion</key>
	<string IDREF="2"/>
	<key>CFBundleExecutable</key>
	<string>AppleHDAController</string>
	<key>DTCompiler</key>
	<string IDREF="9"/>
	<key>CFBundleIdentifier</key>
	<string>com.apple.driver.AppleHDAController</string>
	<key>DTPlatformVersion</key>
	<string IDREF="10"/>
	<key>DTXcodeBuild</key>
	<string>9M189u</string>
	<key>CFBundleSignature</key>
	<string IDREF="3"/>
	<key>OSBundleLibraries</key>
	<dict>
		<key>com.apple.kpi.bsd</key>
		<string>8.0.0</string>
		<key>com.apple.kpi.libkern</key>
		<string>8.0.0</string>
		<key>com.apple.kpi.mach</key>
		<string>8.0.0</string>
		<key>com.apple.iokit.IOPCIFamily</key>
		<string>1.1</string>
		<key>com.apple.kpi.iokit</key>
		<string>8.0.0</string>
		<key>com.apple.iokit.IOAudioFamily</key>
		<string>200.5</string>
		<key>com.apple.iokit.IOHDAFamily</key>
		<string>265.88</string>
		<key>com.apple.iokit.IOGraphicsFamily</key>
		<string IDREF="30"/>
		<key>com.apple.kpi.unsupported</key>
		<string>12.0</string>
		<key>com.apple.kpi.private</key>
		<string>8.0.0</string>
	</dict>
	<key>CFBundleGetInfoString</key>
	<string>AppleHDAController 280.12, Copyright © 2000-2017 Apple Inc. All rights reserved.</string>
	<key>_PrelinkBundlePath</key>
	<string>/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAController.kext</string>
	<key>DTPlatformBuild</key>
	<string>9M189u</string></dict>
</dict>

 

 

The section IOKitPersonalities is missing, which is the most useful part to patch.

The personalities for kexts are cached in

/System/Library/Caches/com.apple.kext.caches/Startup/IOKitPersonalities_x86_64.ioplist.gz

which is only loaded by the kernel after starting.

Share this post


Link to post
Share on other sites

Hi, a bit off-topic:

In this line: https://sourceforge.net/p/cloverefiboot/code/4256/tree//rEFIt_UEFI/Platform/kernel_patcher.c#l1879

Better to use DBG_RT() for consistency...

 

And also. The code somehow doesn't look healthy to me. Under "switch (gCPUStructure.Model)" branch, if a "stupid" (no offense) user enable "KernelXCPM" by accident and his/her CPU is supported natively (e.g. Haswell/Broadwell, etc), then HaswellLowEndXCPM patch will get applied...

Share this post


Link to post
Share on other sites

Hi, a bit off-topic:

In this line: https://sourceforge.net/p/cloverefiboot/code/4256/tree//rEFIt_UEFI/Platform/kernel_patcher.c#l1879

Better to use DBG_RT() for consistency...

 

And also. The code somehow doesn't look healthy to me. Under "switch (gCPUStructure.Model)" branch, if a "stupid" (no offense) user enable "KernelXCPM" by accident and his/her CPU is supported natively (e.g. Haswell/Broadwell, etc), then HaswellLowEndXCPM patch will get applied...

Agree about DBG_RT, fixed.

      switch (gCPUStructure.Model) {
...
          default:
            if (gCPUStructure.Model >= CPU_MODEL_HASWELL &&
               (AsciiStrStr(gCPUStructure.BrandString, "Celeron") || AsciiStrStr(gCPUStructure.BrandString, "Pentium"))) {
              // Haswell+ low-end CPU
              EnableExtCpuXCPM = HaswellLowEndXCPM;
            }
            break;

It will be for Haswell Celeron of higher Celeron.

Else EnableExtCpuXCPM == NULL (? - I wish duplicate it)

Share this post


Link to post
Share on other sites

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By fusion71au
      Clover r4747 ISO compiled with GCC and minimal config.plist compatible for use in VMWare Workstation.
       
      Tested with unlocked Workstation 15 running OSX 10.9 -->10.14 guest in Windows X64 host.
       
      Installation
      1. Download and unzip "EFI_Clover_r4747 for VMware.zip". Mount Clover-v2.4k-4747-X64 by double clicking on it.
      2. Mount your VM's EFI System Partition eg in terminal
      sudo diskutil mount disk0s1   3. Copy EFI folder from step 1 into the EFI partition
      4. Shutdown the VM, add bios.bootDelay = "3000" to your VM's vmx file
      5. Reboot your VM, press <F2> to access the VMware Boot Manager and add CLOVERX64.efi to the boot menu.
       
      Substitute your own unique and valid MLB and ROM variables in the /EFI/CLOVER/config.plist (Rt Variables section) to activate iMessage/Facetime on your VM.
    • By superdooper71
      Hi all,
      I hope someone can help me as I am struggling with this bloody installation.
      I am running on several problems that I can't face : (
       
      First of all my config:
      Mobo: ASROCK H81M-DGS R2
      CPU: Intel Xeon E3-1220 v3 @3.10ghz
      RAM: 16gb DDR3 1600Mhz
      SSD: Crucial BX100 120Gb SSD
      Monitor: Hp 27w Hdmi
       
      POST Installation CLOVER
       
      Current Issues:
      • System will not boot (clover boot loader do not shows up) from SSD
         - System boot only with USB stick
      • Screen Resolution is only 1024x768
      • Monitor recognised as 17" instead of 24"
      • Monitor identified as secondary
      • Grafic Card Geforce GT710 shows 0 Mb
      • System info do not match Config.plistin Clover
       
      I attach screenshot of System Info, Kext in Clover, Resolution etc etc.
       
      Please can someonhelp me?
       
      Please can you tell me what is the Clover Parameter to activate when installing Clover  (Clover_v2.4k_r4722) into Boot Disk?
       
      I hope someone can help me out of this little troble: )
       
      Cheers
      Franco
       
      system info.tiff
      kext.tiff
      resolution.tiff
      system.tiff
      config.plist
    • By gengik84
      Ciro82==>>Thanks
      Uno dei tre Requisiti:
      Hack funzionante Mac vero Macchina virtuale Impostazioni Bios per il boot:
      Cercate una voce  del tipo “Sata Mode”e settatela  in AHCI
      Secure Boot: disabilitare o altri sistemi operativi
      CSM: UEFI o LEGACY, oppure a secondo del tipo di installazione
      VT-x / VT-d disable
      *Nota: Secure boot e csm valido solo per bios UEFI
      Materiale Occorrente 
      "OS X (Versione App.Store)”
      USB 8GB  *nota: nel caso di usb superiori dovrà essere partizionata, in modo da avere una partizione su cui "lavoreremo,di questa dimensione
      ShowAllfiles 
      kext Wizard 
      Bootloader Clover_2.3k_r xxx:                   http: //sourceforge.n.../cloverefiboot/
      Clover Configurator:                                    http: //mackie100proj...a.org/download/
      FakeSmc.kext:                                            https://github.com/kozlek/HWSensors/releases
      In allegato,a fondo pagina troverete un "pacchetto" contenente : ShowAllfiles, Kext Wizard, FakeSmc.kext: 
      App alternative:
      ESP Mounter Pro: per montare la partizione EFI
      Vi illustrerò tre metodi per creare la usb, ma sono ben distinti… quindi usatene soltanto uno
      Metodo 1: “Install Mac_OS_X.command” Metodo 2: “Create Install Media di Apple” Metodo 3:  Metodo Manuale Alla fine delle preparazione dell’installer, tutti i metodi necessitano l’installazione del Bootloader Clover sulla a vostra USB.
      “CONDIZIONI OBBLIGATORIE”
      PUNTO 1: che la vostra usb sia stata preventivamente nominata USB (caratteri maiuscoli) Tabella di partizione GUID e la formattazione in  Mac esteso Journaled.
      PUNTO 2: che l’installer di OSX si trovi in Applicazioni
      Utility Disco 
      Selezionate la pendrive, andate su “partizione”, selezionate “1 partizione”, impostate Mac OS esteso journaled e date il nome USB, poi in basso cliccate su opzioni e scegliete Tabella partizione (GUID), poi “applica”.
      Immagine 
      Riporto nuovamente l’operazione sopra citata adoperando dal nuovo Utility Disco introdotto su El Capitan.
      Rimane ovviamente invariato nome della usb in ==>> USB (maiuscolo), la formattazione in Mac esteso Journaled e sia la mappa partizione in GUID
      Da utility disco selezionate la usb, cliccate su inizializza.
      dal menù a tendina scegliete la relative impostazioni
      Immagine  
      Procedura effettua da High Sierra è la stessa della precedente, l'unica attenzione e operazione da aggiungere in primis  è cliccare nel menù a tendina in alto sulla sinistra di utility disco e selezionare "mostra tutti i dispositivi"
      Immagine 
       
      =====================
        METODO 1: "Install_Mac_OS_X.Command" Lo script che trovate allegato in fondo alla guida permette la creazione dell’installer in maniera automatica
      Include la possibilità di scelta di tre versioni di osx
      Yosemite El Capitan Sierra Il risultato finale è come quello del metodo "manuale" descritto nella guida, per cui l'installazione avverrà in un solo passaggio, non in due come con il metodo createinstallmedia. 
      Offre inoltre la possibilità di inserire un kernel patchato, utile, per esempio, per chi usa AMD.
      Rimane invariato il nome dato alla usb in USB, mappa partizione e tipo di formattazione
      Se la vostra usb non sarà rinominata nel modo corretto, verrete avvisati dal terminale, quindi non dovrete far altro che apportare la relativa modifica e rilanciare nuovamente lo script
      Esempio
      ===========================
      Metodo 2 
      L'intento è quello di usare la procedura fornitaci direttamente da Apple, "createinstallmedia", introdotta  con Mavericks. 
      Tale metodo prevede l’uso del terminale che via via se ne sta perdendo il “valore e l’uso”
      Inizialmente per i neofiti potrà sembrare problematico ma alla fine non è così.
      Durante il post installazione alcune operazioni ne richiedono l’ uso.
      Perciò mi sono chiesto perchè, qualora uno volesse, non far conoscere da subito un po’ questo “strumento”???
      Per favorirvi vi ho allegato i comandi già  “pronti”, i quali li potrete copiare ed incollare sul terminale.
      A questo punto aprite il terminale, copiate ed incollate il comando sottostante e premete invio, digitate la vostra password e premete nuovamente invio.
      Comando per creare USB con Yosemite:
      sudo /Applications/Install\ OS\ X\ Yosemite.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ Yosemite.app --nointeraction  
      Comando per creare USB con El Capitan
      sudo /Applications/Install\ OS\ X\ El\ Capitan.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ OS\ X\ El\ Capitan.app --nointeraction Comando per creare USB con Sierra 
      sudo /Applications/Install\ macOS\ Sierra.app/Contents/Resources/createinstallmedia --volume /Volumes/USB --applicationpath /Applications/Install\ macOS\ Sierra.app/ --nointeraction Per creare USB con Hight Sierra o Mojave usate --> C_I_M (aggiornato per 10.14)
       
      Funziona con il drag & drop sul terminale, in questo caso non vi è necessità che la usb sia nominata in un determinato modo ed essendo basato su create install media ovviamente funziona da 10.9 a 10.14.... 
      BENE…IL PROCESSO DI CREAZIONE E’ INIZIATO…
      AVREMO CIRCA 20/30 MINUTI DI TEMPO LIBERO A CUI DEDICARSI A CIO’ CHE VOGLIAMO………………………………………..  
      COLGO L’OCCASIONE PER FARVI NOTARE LA VELOCITA’ E LA SICUREZZA DI QUESTO METODO
      CONFRONTATE QUESTO CON IL TERZO METODO E NOTERETE CHE CON UN SOLO PASSAGGIO, OSSIA IL COMANDO DATO AL TERMINALE, FACCIAMO IN UNA SINGOLA OPERAZIONE TUTTI I VARI STEP DESCRITTI SULL’ ALTRO METODO.
      DETTO QUESTO, MOLTO IMPORTANTE E’ SOTTOLINEARE CHE COSI’ FACENDO EVITEREMO ERRORI  DI DISTRAZIONE RIGUARDO AI PASSAGGI O FRAINTENDIMENTI.
      Immagine 
      Potete adesso passare ad installare il bootloader Clover sulla vostra usb.
      *NOTA*:
      Avendo usato questo metodo l'installazione si dividerà in due fasi, perciò dopo il primo riavvio e necessario far partire nuovamente l'installer, selezionare lo stesso disco senza formattarlo.
      Finita questa ulteriore fase , l'installazione sarà terminata
      =========================
      METODO "MANUALE"....  (lascio per futura memoria-Compatibile fino a 10.12)
      ==========================
      Bootloader
      **Nota:** Installazione in UEFI  dipenderà dalla scheda madre in vostro possesso, quindi se non supporta tale opzione , il bootloader dovrà essere installato in  modalità Legacy.
       Vi invito, qualora non sapeste questa informazione, a recarvi nel sito ufficiale del produttore e controllare le informazioni a riguardo
      Fatto questo dobbiamo installare  Clover sulla usb.
      A seconda del tipo di Bios o al tipo di installazione che vogliamo fare UEFI o Legacy avremo ovviamente configurazioni diverse in questa fase.
      Lanciate il pkg.
      Immagine 

       
      Cambiate la destinazione di installazione ad USB oppure Install Mac_OS_X (a secondo del tipo di creazione eseguita)
      Successivamente clicchiamo su "Ad Hoc"
      Per Installazione UEFI
      Mettete i flag   : Installazione solo per avvio UEFI
                               : installare Clover nella ESP
                               : Driver64UEFI  selezionate OsxAptioFixDrv-64
                             *  :Se nel vostro sistema è presente una scheda grafica (discreta) della serie 9xx nVidia selezionate OsxAptioFix2Drv-64 al posto di  OsxAptioFixDrv-64 *
      ** OsxAptioFix2Drv :E' necessario per poter impostare CsrActiveConfig= 0x3 **
      ***OsxAptioFix3Drv oppure AptioMemory --> (consigliato) devono essere usati su hardware Skylake o successivi perché permettono alla nvram di lavorare correttamente
           (mi raccomando o uno o l'altro)
      Proseguite con l’installazione.
      Immagine 
      ** Ricordate che avrete accesso a questa cartella dopo aver montato la partizione EFI**
      ===========================
      Per installazione Legacy
      Immagine 
      ===========================
      Impostazione per config.plist:
      Con clover configurator “montate” la partizione EFI della usb.
      1) Per fare questo nel menù di sinistra, cliccate su “Mount EFI”
      2) individuate la partizione relativa alla vostra usb, a questo punto montiamo la relativa partizione EFI  selezionando l’apposito pulsante “Mount Partition”
      Immagine 
      3) Successivamente cliccate su “Open Partition”.. recatevi in EFI/Clover ed aprite il config.plist
      4) Sezione ACPI: Disabilitate tutti i fix sia del menù 1 che del menù 2
      Immagine 
      5) Sezione BOOT: Sole se si sta installando Yosemite mettete il flag su kext-dev-mode=1
      Immagine 
      6) Sezione RT Variables: Se si sta installando El Capitan oppure Sierra, aggiungere i valori: BooterConfig= 0x28, CsrActiveConfig= 0x67
      Immagine 
      7) Sezione System Parameters: Su inject kext mettete YES
      Immagine 
      ===========================
      Nota: Su El Capitan, è stato introdotto SIP (System Integrity Protection)
      Info:
      ===========================
      Recatevi in EFI/Clover/kext/10.x 
      X= alla versione di osx che state installando. Per esempio se installerete Yosemite dovrete recarvi nella cartella 10.10, con El Capitan in 10.11….ecc
      Se non ci fosse tale cartella, createla e nominatela voi a “modo”.
      Copiatevi all’interno FakeSmc.kext
      *Nota se venite già da altre vostre configurazioni, oltre kext sopra citato ,potete mettere gli altri necessari per il vostro hardware
      Stessa cosa se avete DSDT e/o SSDT potete copiarli in EFI/Clover/Acpi/Patched
      Immagine 
      
      Per High Sierra:
      Scaricare il driver apfs.efi a fine guida, collocarlo:
          --> EFI/clover/Driver64UEFI se stiamo usando UEFI
      --> EFI/Clover/Driver64 se stiamo usando Legacy
       
      Per chi volesse continuare ad usare HFS vi rimando a questo post:
        Come installare High Sierra in HFS direttamente dalla usb  
      Utenti Laptop:  Nel 99% è obbligatorio disattivare la grafica discreta Nvidia/Amd per installare questo nuovo osx
                                     Quindi aggiungete --> SSDT-Disable_DGPU.aml.zip
                                     in EFI/Clover/acpi/Patched della usb
      --------------------------------------------------------------------
      Per Mojave:
      Scaricare il driver apfs.efi per 10.14 a fine guida, collocarlo:
          --> EFI/clover/Driver64UEFI se stiamo usando UEFI
      --> EFI/Clover/Driver64 se stiamo usando Legacy
      Versione di clover non antecedente a V_4015
      Volete usare HFS?
      E' possibile fare un installazione diretta su altro disco o partizione, nel caso può essere usato anche per effettuare aggiornamenti...
      nel caso guardate...
       Mojave in HFS 
       Oppure direttamente da usb  
       
      Fatto questo avrete la vostra USB bootable per installare OSX.
      ………Non scordatevi Fakesmc.kext da mettere nella relativa cartella…. senza il quale non farete mai il Boot......
      *NOTA: se usato il terminale per la creazione della usb, l'installazione si dividerà in due fasi, perciò dopo il primo riavvio e necessario far partire nuovamente l'installer, selezionare lo stesso disco senza formattarlo.
      Finita questa ulteriore fase , l'installazione sarà terminata
      **NOTA** Se avete processori Broadwell,Skylake o Kabylake...usate FakeSmc.kext e relativi sensors che trovate all'interno del secondo pacchetto.. (potete usarlo anche sui precedenti senza problemi, essendo una versione più aggiornata ha ulteriore supporto per le cpu più recenti)
      Update: Fakesmc e sensors versione 6.26
      Post installazione... post #2           
       Buon Hack….. 
      Aggiornamento:Install_Mac_OS_X.command.zip (compatibile da 10.10 a 10.12)
      le info le trovate a questo post
      Ringrazio @Ciro82 che mi ha aiutato nel preparare questa guida.
      Pacchetto.zip
      Pacchetto-2.zip
      apfs.efi-10.13-NoLog.zip
      Pacchetto-Fake+Sensors 6.26.1440.zip
      apfs.efi-10.13.1-No_LOG.zip
      apfs.efi-10.13.2_No_Log.zip
      apfs.efi-10.13.3-No_Log.zip
      apfs.efi-10.13.4-No_Log.zip
      apfs.efi-10.13.5_No_Log.zip
      C_I_M.zip
       
      apfs.efi-10.14-beta1_No_Log.zip






    • By shmn
      Hi, I have been trying to follow @RehabMan 's guide to disable my dGPU ( https://www.tonymacx86.com/threads/guide-disabling-discrete-graphics-in-dual-gpu-laptops.163772/ ) for two days now, but haven't found a way to disable my 1080 Ti on my desktop Clover hack.

      I have a dual-boot (Win/Mac) machine on a Z370 Aorus 7. Since there's no nvidia drivers for Mojave atm, I want to stick with the iGPU under Mac, but still use the 1080 Ti under Win.

      The hack boots just fine when I remove the 1080 Ti, if it's plugged in via PCIe I get a kernel panic.
      Please find attached my ACPI folder, my clover config.plist and the kernel panic details.

      Might there even be a less hacky way than patching these ACPI files? I appreciate any kind of support! Thanks!
      ACPI.zip
      config.plist

      systemReport.txt
    • By Alexandru
      Hello InsanelyMacForum,
       
      I managed to boot into Mac OS Sierra with my Intel Core 2 Duo, Nvidia 9400 GT and 4 GB of Ram machine, got internet and sound working, but the issue appears when I boot with Nvidia Web Driver. I get these acid colours, but Graphics Acceleration is working fine. I tried to inject EDID from my display, but no results as well. Would be really grateful if someone could provide some help. Thank you!

×