**VIDEO GUIDE** How to Install MacOS Mojave or High Sierra as a VM


SpaceInvaderOne

1469 posts in this topic Last Reply

Recommended Posts

  • Replies 1.5k
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Catalina Mojave and HighSierra - new video 28 october 2019       MOJAVE 10.14 . (Update 24 October 2018)         ______________________

Ok finished the guide. Was a bit rushed so sorry if its a bit lower quality than normal.    

Posted Images

Yes, but it works :D

I think that the 4 slots x 8 Gb is possible (I need to find out what is the logic of those exclamation marks popping out beside the slots...), but I tried few arrangements without success.

However it's sure that to avoid memory misconfiguration the mapping of the ram is a must.

Edited by ghost82
Link to post

It seems my clover is not injecting kexts at startup...Actually I think it never worked the kext injection in my case...

Proof is that MCEReporterDisabler.kext (which is in EFI/CLOVER/kexts/Other) is not loaded once a reboot is required after an os update and I have a kernel panic since I'm using MacPro7,1; so everytime I have to change my SMBIOS settings to Imac18,2 to be able to complete the update; moreover, since Lilu/WEG are not injected and since I have GPU passthrough I cannot see nothing on my display, so all the update process is in the dark as I cannot check if it stucks or if it proceeds ok.

 

My clover version is the latest (5096), my vm load first clover.qcow2, then disk3.img, where there is the mac os: so clover is not on the same partition of the mac os (Edit: also tried on the same partition, vm with only disk3.img, same unsuccesful result).

What I tried, without success:

- I copied also the kexts in EFI/CLOVER/kexts (clover.qcow2 disk)

- I copied also the kexts in EFI/CLOVER/kexts/10.15 (clover.qcow2 disk)

- I copied also the kexts in EFI/CLOVER/kexts (EFI partition of disk3.img disk)

- I copied also the kexts in EFI/CLOVER/kexts/Other (EFI partition of disk3.img disk)

- I copied also the kexts in EFI/CLOVER/kexts/10.15 (EFI partition of disk3.img disk)

 

Here is the structure of the EFI folders:

EFI.thumb.png.58b1ba599f974170cae45b561f53ff47.png

 

Here is the clover configurator (Inject kexts=yes)

inject.thumb.png.57fb7f76d4a78966783b7871d3d557a9.png

 

Obviously, Lilu/WEG and MCEReporterDisabler work in /Library/Extensions.

Now that I can use Lilu/WEG and since Lilu/WEG should work also for recovery/installation I'd want to be able to inject these kexts through clover.

What am I missing and what can I try?

Edited by ghost82
Link to post

Yes, I always rebuild the cache with kext utility before a restart.

I tried deleting lilu and whatevergreen from /Library/Extensions and leaving them on clover efi kexts 10.15 folder.

So now I have:

 

In /EFI/CLOVER/kexts/10.15 -->

Whatevergreen.kext

Lilu.kext

 

In /Library/Extensions -->

MCEReporterDisabler.kext

 

...and it works, no black screen, and if I run kextstat I can see both kexts loaded.

 

Does MCEReporterDisabler.kext must be in only one folder or it can be in both folders?

If I move the MCEReporterDisabler.kext to Clover EFI and delete the kext in /L/E and it doesn't work I will not able to boot..but I can save a clover image with smbios imac18,2 to recover..I will try.

 

EDIT: it works if I boot to Macintosh-HD: I deleted MCEReporterDisabler.kext, Whatevergreen.kext and Lilu.kext from /L/E and placed only in /EFI/CLOVER/kexts/10.15

It doesn't work to access the recovery: I think that MCEReporterDisabler.kext is not loaded since I have a kernel panic related to mp_kdp_enter() can't get x86_topo_lock! Debugging anyway! #YOLO, Kernel Extensions in backtrace: com.apple.driver.AppleIntelMCEReporter(115.0)[AAF2300A-7F8A-38EE-B484-05A9F55D7DB4]@0xffffff7f9edba000->0xffffff7f9edccfff

 

MCEReporterDisabler.kext is not loaded at all in kextstat (running Catalina 19A602)

Edited by ghost82
Link to post

I found the solution!

Apparently the problem was with the MCEReporterDisabler.kext found also in this thread: I don't know why but it doesn't work anymore, at least with my catalina 19A602.

 

Solution is to replace MCEReporterDisabler.kext with AppleMCEReporterDisabler.kext (attached to this post).

This kext is very similar to MCEReporterDisabler.kext and it was released 8 days ago by naveenkrdy on github: see here for reference: https://github.com/acidanthera/bugtracker/issues/424

 

I can now inject all kexts with clover, boot into recovery with primary display ok

AppleMCEReporterDisabler.kext.zip

Edited by ghost82
Link to post

All my kext are in the clover/other folder and it seems to load everything correctly. I see lilu and whatevergreen in kextstat. Im running clover 5090 and have updated to 19A602. I did read kext injection was broken in 5093...

 

I dont see MCEReporter kext in kextstat at all but it boots up ok...I used the kext from here.

Edited by david279
Link to post
1 minute ago, david279 said:

All my kext are in the clover/other folder and it seems to load everything correctly. I see lilu and whatevergreen in kextstat. Im running clover 5090 and have updated to 19A602. I did read kext injection was broken in 5093...

Probably I was wrong, as lilu/WEG were loaded with clover injection but I always had a kernel panic because MCEReporterDisabler was not able to kill AppleIntelMCEReporter, and so I thougth that clover was not able to inject the kext.

As I wrote swapping MCEReporterDisabler with AppleMCEReporterDisabler solved all my problems.

I moved the kexts to "Other" folder in clover efi as you.

Link to post
On 9/23/2019 at 6:30 PM, ghost82 said:

Comments: Metal is ok, but I have a big difference for opencl...mmmm

I found that the difference is due to the "depth-of-field" test which returns a value of zero for the opencl test: searching on the web I didn't understand if it is a probelm of geekbench or if it is related to the lack of nvidia webdrivers, I think the latter.

Edited by ghost82
Link to post

Anyone had success with AppleALC? I'm currently using VoodooHDA for the audio: it works quite ok, I have sound from the speakers, external microphone and webcam microphone recognized, however Siri is not working (it keeps repeating sorry, can you repeat?).

Microphone is working with other apps, such as quicktime and skype.

With Mojave I was able to make Siri to work with VoodooHDA, then after uninstalling it to try AppleALC Siri doesn't work anymore; I don't know how VoodooHDA worked with Siri, I just noticed that the list on the preference panel -> audio was changed a bit (listing the same audio ports but with different names if I remember well) and Siri worked; then, the names in the list changed again, but it continued to work with Siri.

I'd want to try with AppleALC but I'm stuck: I have the audio passthrough (0x80861D20):

 

dpci.png.ac1bccf8f65833a29445be5c26c50b10.png

 

I tried AppleALC injection with clover with different layout id injected from devices -> properties or with boot argument alcid=numberOfTheLayout without success.

One thing I noticed is that in ioreg the VoodooHDA is not listed under HDEF: maybe a problem similar to Lilu before adding the proper vendor id to the code, or is it ok?

 

audio.thumb.png.6cc90d83761acec39763c3b6dc655cce.png

 

Edit: from insanelymac:

"These are what they appear to be the currently Intel pci-ids supported by AppleHDAController:

8086:1D20   Name: C600/X79 series chipset High Definition Audio Controller (Patsburg)"

 

Shouldn't just work out of the box?

Edited by ghost82
Link to post

@ghost82 That quite likely.

Post you log witb -liludbg and -alcdbg.

My board is x570 and currently can't passthrough the audio onboard.

47 minutes ago, ghost82 said:

Edit: from insanelymac:

"These are what they appear to be the currently Intel pci-ids supported by AppleHDAController:

8086:1D20   Name: C600/X79 series chipset High Definition Audio Controller (Patsburg)"

I'm not familar with audio (I'm using HDMI audio now) but maybe audio should in some specific APCI node like HDEF/HDAF (I don't know but I guess maybe related), you may should add ssdt to see.

Edited by Leoyzen
Link to post

I tried all the layouts for ALC898: 1, 2, 3, 5, 7, 11, 13, 28, 65, 66, 78, 99, 101: no luck.. :(

When you say that AppleALC correctly found a device are you refering to this?

2019-10-17 18:02:38.411510+0200  localhost kernel[0]: (Lilu) AppleALC:   iokit @ (DBG) getOSData vendor-id has 10DE value
2019-10-17 18:02:38.411514+0200  localhost kernel[0]: (Lilu) AppleALC:   iokit @ (DBG) getOSData device-id has E1A value
2019-10-17 18:02:38.411518+0200  localhost kernel[0]: (Lilu) AppleALC:   iokit @ (DBG) getOSData revision-id has A1 value
2019-10-17 18:02:38.411522+0200  localhost kernel[0]: (Lilu) AppleALC:   iokit @ (DBG) getOSData alc-layout-id has 1 value
2019-10-17 18:02:38.411529+0200  localhost kernel[0]: (Lilu) AppleALC:     alc @ (DBG) found 1 audio controllers

Because this is the Nvidia audio, which I'm not interested in at this time.

 

Lilu is able to find the other audio device:

2019-10-17 18:02:38.411240+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found pci8086,1d20 on pci bridge
2019-10-17 18:02:38.411243+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData vendor-id has 8086 value
2019-10-17 18:02:38.411247+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData class-code has 40300 value
2019-10-17 18:02:38.411250+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found audio device pci8086,1d20 at pci-bridge by 8086

But no traces of AppleALC doing something with it.

 

Also strange that DPCIManager doesn't list any codec name for 0x80861D20..?

 

 

And more strange, after all these tests I put again my VoodooHDA.kext and Siri now works...mmmm

 

Codec name now ok with VoodooHDA:

6.png.725058d14018cabf022c18fc04c6d6bc.png

Edited by ghost82
Link to post

If I look at the Lilu/AppleALC log I can see this:

2019-10-17 18:02:38.411160+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found GFX0 on pci bridge
2019-10-17 18:02:38.411164+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData vendor-id has 10DE value
2019-10-17 18:02:38.411169+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData class-code has 30000 value
2019-10-17 18:02:38.411173+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found GFX0 device GFX0 at pci-bridge by 10DE
2019-10-17 18:02:38.411178+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData vendor-id has 1B36 value
2019-10-17 18:02:38.411181+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData class-code has 60400 value
2019-10-17 18:02:38.411185+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found pci device pci-bridge 0x1b36 0x60400
2019-10-17 18:02:38.411188+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found pci bridge pci-bridge
2019-10-17 18:02:38.411193+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found IOPP on pci bridge
2019-10-17 18:02:38.411196+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData vendor-id was not found
2019-10-17 18:02:38.411200+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found HDEF on pci bridge
2019-10-17 18:02:38.411203+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData vendor-id has 10DE value
2019-10-17 18:02:38.411207+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData class-code has 40300 value
2019-10-17 18:02:38.411210+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found audio device HDEF at pci-bridge by 10DE
2019-10-17 18:02:38.411215+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) marking audio device as HDEF at HDEF
2019-10-17 18:02:38.411218+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData vendor-id has 1B36 value
2019-10-17 18:02:38.411222+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData class-code has 60400 value
2019-10-17 18:02:38.411226+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found pci device pci-bridge 0x1b36 0x60400
2019-10-17 18:02:38.411229+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found pci bridge pci-bridge
2019-10-17 18:02:38.411233+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found IOPP on pci bridge
2019-10-17 18:02:38.411236+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData vendor-id was not found
2019-10-17 18:02:38.411240+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found pci8086,1d20 on pci bridge
2019-10-17 18:02:38.411243+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData vendor-id has 8086 value
2019-10-17 18:02:38.411247+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData class-code has 40300 value
2019-10-17 18:02:38.411250+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found audio device pci8086,1d20 at pci-bridge by 8086
2019-10-17 18:02:38.411255+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData vendor-id has 1B36 value
2019-10-17 18:02:38.411258+0200  localhost kernel[0]: (Lilu) Lilu:   iokit @ (DBG) getOSData class-code has 60400 value
2019-10-17 18:02:38.411262+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found pci device pci-bridge 0x1b36 0x60400
2019-10-17 18:02:38.411266+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found pci bridge pci-bridge
2019-10-17 18:02:38.411270+0200  localhost kernel[0]: (Lilu) Lilu:     dev @ (DBG) found IOPP on pci bridge

For what I'm understanding GFX0 (the Nvidia card with audio I'm passing through) is detected by Lilu and the audio is detected as HDEF and marked. (found audio device HDEF at pci-bridge by 10DE, marking audio device as HDEF at HDEF).

The onboard audio is detected by Lilu (found audio device pci8086,1d20 at pci-bridge by 8086) but it is not marked as audio device.

 

Relevant Lilu code is in Sources/kern_devinfo.cpp:

void DeviceInfo::grabDevicesFromPciRoot(IORegistryEntry *pciRoot) {
	auto iterator = pciRoot->getChildIterator(gIODTPlane);
	if (iterator) {
		IORegistryEntry *obj = nullptr;
		while ((obj = OSDynamicCast(IORegistryEntry, iterator->getNextObject())) != nullptr) {
			uint32_t vendor = 0, code = 0;
			bool gotVendor = WIOKit::getOSDataValue(obj, "vendor-id", vendor);
			bool gotClass = WIOKit::getOSDataValue(obj, "class-code", code);
			auto name = obj->getName();
			DBGLOG("dev", "found pci device %s 0x%x 0x%x", safeString(name), vendor, code);

			// Strip interface, as we only care about class and subclass
			code &= WIOKit::ClassCode::PCISubclassMask;

			if (!gotVendor || !gotClass || (vendor != WIOKit::VendorID::Intel && vendor != WIOKit::VendorID::ATIAMD &&
			                                vendor != WIOKit::VendorID::AMDZEN && vendor != WIOKit::VendorID::VMware &&
			                                vendor != WIOKit::VendorID::QEMU))
				continue;

			if (vendor == WIOKit::VendorID::Intel && (code == WIOKit::ClassCode::DisplayController || code == WIOKit::ClassCode::VGAController)) {
				DBGLOG("dev", "found IGPU device %s", safeString(name));
				videoBuiltin = obj;
				requestedExternalSwitchOff |= videoBuiltin->getProperty(RequestedExternalSwitchOffName) != nullptr;
			} else if (code == WIOKit::ClassCode::HDADevice || code == WIOKit::ClassCode::HDAMmDevice) {
				if (vendor == WIOKit::VendorID::Intel && name && (!strcmp(name, "HDAU") || !strcmp(name, "B0D3"))) {
					DBGLOG("dev", "found HDAU device %s", safeString(name));
					audioBuiltinDigital = obj;
				} else {
					DBGLOG("dev", "found HDEF device %s", safeString(name));
					audioBuiltinAnalog = obj;
				}
			} else if (vendor == WIOKit::VendorID::Intel && (code == WIOKit::ClassCode::IMEI || (name &&
				(!strcmp(name, "IMEI") || !strcmp(name, "HECI") || !strcmp(name, "MEI"))))) {
				// Fortunately IMEI is always made by Intel
				DBGLOG("dev", "found IMEI device %s", safeString(name));
				managementEngine = obj;
			} else if (code == WIOKit::ClassCode::PCIBridge) {
				DBGLOG("dev", "found pci bridge %s", safeString(name));
				auto pciiterator = IORegistryIterator::iterateOver(obj, gIOServicePlane, kIORegistryIterateRecursively);
				if (pciiterator) {
					ExternalVideo v {};
					IORegistryEntry *pciobj = nullptr;
					while ((pciobj = OSDynamicCast(IORegistryEntry, pciiterator->getNextObject())) != nullptr) {
						uint32_t pcivendor = 0, pcicode = 0;
						DBGLOG("dev", "found %s on pci bridge", safeString(pciobj->getName()));
						if (WIOKit::getOSDataValue(pciobj, "vendor-id", pcivendor) &&
							WIOKit::getOSDataValue(pciobj, "class-code", pcicode)) {
							pcicode &= WIOKit::ClassCode::PCISubclassMask;

							if (pcicode == WIOKit::ClassCode::DisplayController ||
								pcicode == WIOKit::ClassCode::VGAController ||
								pcicode == WIOKit::ClassCode::Ex3DController ||
								pcicode == WIOKit::ClassCode::XGAController) {
								DBGLOG("dev", "found GFX0 device %s at %s by %04X",
									   safeString(pciobj->getName()), safeString(name),  pcivendor);
								v.video = pciobj;
								v.vendor = pcivendor;
							} else if (pcicode == WIOKit::ClassCode::HDADevice || pcicode == WIOKit::ClassCode::HDAMmDevice) {
								DBGLOG("dev", "found audio device %s at %s by %04X",
									   safeString(pciobj->getName()), safeString(name), pcivendor);
								v.audio = pciobj;
							}
						}
					}

					pciiterator->release();

					if (v.video) {
						DBGLOG_COND(v.audio, "dev", "marking audio device as HDAU at %s", safeString(v.audio->getName()));
						if (!videoExternal.push_back(v))
							SYSLOG("dev", "failed to push video gpu");
					} else if (v.audio && !audioBuiltinAnalog) {
						// On modern AMD platforms or VMware built-in audio devices sits on a PCI bridge just any other device.
						// On AMD it has a distinct Ryzen device-id for the time being, yet on VMware it is just Intel.
						// To distinguish the devices we use audio card presence as a marker.
						DBGLOG("dev", "marking audio device as HDEF at %s", safeString(v.audio->getName()));
						audioBuiltinAnalog = v.audio;
					}
				}
			}
		}

		iterator->release();
	} else {
		SYSLOG("dev", "failed to obtain PCI devices iterator from %s", safeString(pciRoot->getName()));
	}
}

Trying to understand why the onboard audio is not marked...

Edited by ghost82
Link to post

This might interest a few of you im passing through all 12 cores of my i7-8700 my RX580 and using the 1,1 bios and these are my Geekbench scores after adding 

   <qemu:arg value='-cpu'/>
    <qemu:arg value='host,vendor=GenuineIntel,kvm=on,vmware-cpuid-freq=on,+invtsc,+hypervisor'/>

no longer having to use Penryn on Catalina booted first time

433598458_ScreenShot2019-10-18at9_42_59pm.png.4184294d043c592a3860289f6c802ad8.png1018487387_ScreenShot2019-10-18at9_42.59pm(3).thumb.png.414f5713c73839a85859eef61c03bf74.png 634178856_ScreenShot2019-10-18at9_52.16pm(3).thumb.png.5f61dc10902dbfeb23a66487fcae5ba7.png

Screen Shot 2019-10-18 at 9.42.36 pm.png

Edited by tpruszin
Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.