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


SpaceInvaderOne

Recommended Posts

Has anyone been able to get their High Sierra to boot using Skylake Intel HD 530 Graphics? In my unraid logs I get a flood of these:

 

Jan 15 20:30:40 Tower kernel: DMAR: DRHD: handling fault status reg 3
Jan 15 20:30:40 Tower kernel: DMAR: [DMA Read] Request device [00:02.0] fault addr ff000000 [fault reason 07] Next page table ptr is invalid

 

The intel graphics seems to pass through ok for Windows VMs. So not sure what it could be.

Link to comment

Hello you all,

 

I need your help. I bought a ABWB 802.11 AC WiFi BCM94360CD Combo Card for my UNRAID Server to passthrough to my OS X High Sierra to get 

a) WiFi

b) Bluetooth

c) Continuity Features

 

I managed to get the WiFi part working by simply passthrough the PCI-e card. But the Bluetooth part works via USB and even though I select the USB device for passthrough, it doesn't seem to be recognized. Other USB devices (Mouse, Keyboard) however work properly. I think it may have something to do that I use libvirt and not qemu - but I'm a newbie and I don't fully understand what I do.

 

So please - can anybody help me?

 

Here is my XML:

<domain type='kvm' id='10' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  <name>002 macOS - High Sierra</name>
  <uuid>I removed that</uuid>
  <metadata>
    <vmtemplate xmlns="unraid" name="Linux" icon="osx3.png" os="linux"/>
  </metadata>
  <memory unit='KiB'>8388608</memory>
  <currentMemory unit='KiB'>8388608</currentMemory>
  <memoryBacking>
    <nosharepages/>
  </memoryBacking>
  <vcpu placement='static'>4</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='2'/>
    <vcpupin vcpu='1' cpuset='6'/>
    <vcpupin vcpu='2' cpuset='3'/>
    <vcpupin vcpu='3' cpuset='7'/>
  </cputune>
  <resource>
    <partition>/machine</partition>
  </resource>
  <os>
    <type arch='x86_64' machine='pc-q35-2.10'>hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/qemu/ovmf-x64/OVMF_CODE-pure-efi.fd</loader>
    <nvram>/etc/libvirt/qemu/nvram/e98b79d6-44d1-1bc9-ba21-6e5667511df9_VARS-pure-efi.fd</nvram>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cpu mode='host-passthrough' check='none'>
    <topology sockets='1' cores='2' threads='2'/>
  </cpu>
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/local/sbin/qemu</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='writeback'/>
      <source file='/mnt/disks/VMs/002 macOS High Sierra/vdisk2.img'/>
      <backingStore/>
      <target dev='hdc' bus='sata'/>
      <boot order='1'/>
      <alias name='sata0-0-2'/>
      <address type='drive' controller='0' bus='0' target='0' unit='2'/>
    </disk>
    <controller type='usb' index='0' model='ich9-ehci1'>
      <alias name='usb'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x7'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci1'>
      <alias name='usb'/>
      <master startport='0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0' multifunction='on'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci2'>
      <alias name='usb'/>
      <master startport='2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x1'/>
    </controller>
    <controller type='usb' index='0' model='ich9-uhci3'>
      <alias name='usb'/>
      <master startport='4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x2'/>
    </controller>
    <controller type='sata' index='0'>
      <alias name='ide'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'>
      <alias name='pcie.0'/>
    </controller>
    <controller type='pci' index='1' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='1' port='0x8'/>
      <alias name='pci.1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='2' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='2' port='0x9'/>
      <alias name='pci.2'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='3' port='0xa'/>
      <alias name='pci.3'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='4' port='0xb'/>
      <alias name='pci.4'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x3'/>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='5' port='0xc'/>
      <alias name='pci.5'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x4'/>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='6' port='0xd'/>
      <alias name='pci.6'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x5'/>
    </controller>
    <controller type='pci' index='7' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='7' port='0xe'/>
      <alias name='pci.7'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x6'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <alias name='virtio-serial0'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </controller>
    <interface type='bridge'>
      <mac address='52:54:00:fc:21:cd'/>
      <source bridge='br0'/>
      <target dev='vnet0'/>
      <model type='e1000-82545em'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </interface>
    <serial type='pty'>
      <source path='/dev/pts/1'/>
      <target port='0'/>
      <alias name='serial0'/>
    </serial>
    <console type='pty' tty='/dev/pts/1'>
      <source path='/dev/pts/1'/>
      <target type='serial' port='0'/>
      <alias name='serial0'/>
    </console>
    <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-10-002 macOS - High Sie/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='disconnected'/>
      <alias name='channel0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='mouse' bus='ps2'>
      <alias name='input0'/>
    </input>
    <input type='keyboard' bus='ps2'>
      <alias name='input1'/>
    </input>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev0'/>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x09' slot='0x00' function='0x1'/>
      </source>
      <alias name='hostdev1'/>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
      </source>
      <alias name='hostdev2'/>
      <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x05ac'/>
        <product id='0x0221'/>
        <address bus='3' device='18'/>
      </source>
      <alias name='hostdev3'/>
      <address type='usb' bus='0' port='1'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x05ac'/>
        <product id='0x0304'/>
        <address bus='3' device='19'/>
      </source>
      <alias name='hostdev4'/>
      <address type='usb' bus='0' port='2'/>
    </hostdev>
    <hostdev mode='subsystem' type='usb' managed='no'>
      <source>
        <vendor id='0x05ac'/>
        <product id='0xf007'/>
        <address bus='3' device='20'/>
      </source>
      <alias name='hostdev5'/>
      <address type='usb' bus='0' port='3'/>
    </hostdev>
    <memballoon model='virtio'>
      <alias name='balloon0'/>
      <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
    </memballoon>
  </devices>
  <seclabel type='dynamic' model='dac' relabel='yes'>
    <label>+0:+100</label>
    <imagelabel>+0:+100</imagelabel>
  </seclabel>
  <qemu:commandline>
    <qemu:arg value='-usb'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='usb-mouse,bus=usb-bus.0'/>
    <qemu:arg value='-device'/>
    <qemu:arg value='usb-kbd,bus=usb-bus.0'/>
    <qemu:arg value='-smbios'/>
    <qemu:arg value='type=2'/>
    <qemu:arg value='-cpu'/>
    <qemu:arg value='Penryn,vendor=GenuineIntel,kvm=on,+invtsc,vmware-cpuid-freq=on,'/>
  </qemu:commandline>
</domain>

 

Edited by Schlichi
Link to comment

Hello you all,

 

okay - I got it working by attaching the Bluetooth Adapter via USB Hotplug AFTER High Sierra bootet fully up.

However, everytime I add it before booting the system, it gets lost. And I think I found out why...

 

UNRAID itself is using the Bluetooth dongle - I recognized that because I could use my Apple Trackpad in the UNRAID GUI. And everytime I boot up my High Sierra VM I lose the connection for a few seconds and then it comes back. I also recognized that the adapter changes its name from "Apple Bluetooth Host Adapter" to simply "Apple". Later it becomes "Apple Bluetooth Host Adapter" again.

 

Is there any way to tell UNRAID to NOT use the Bluetooth adapter so it's exclusively available for the VM?

I think that might be a solution.

 

Greets

Schlichi

Link to comment

1812,

In my experiences, the GPU frames per second is not just a MacOS problem.  My EVGA 1080ti only runs at 59fps when set at 1080P and 29-30fps at 2560x1440 in Windows.  That is the display via Steam in game FPS display and the NVidia Experience FPS displays the same frame rate.  I was getting much high fps on my GTX 960 on bare metal in my old gaming pc.  I have not used anything on MacOS that has a fps display yet, but I would have to assume similar results if that's Windows.

Glad to see you got your High Sierra working.  Haven't had a chance to mess with my dual displays again yet.

 

planetwilson,

I have not been able to get my default display adapter to work at the gpu in High Sierra.  I tried passing the ROM and it just wouldn't work.  I ended up swapping gpus between slots and use the default gpu that unraid boots on for my Windows VM instead and the ROM file works just fine with Windows.  I only tried it when I first installed High Sierra a month or so ago.

High Sierra works fine with either of 2 GTX 960 cards if they are not the primary card for unraid.  As far as passing the rom file, did you verify via an ssh connection to your server that you can definitely access the rom file via the path you entered in your xml file?  Being that your path is /mnt/disks/vmssd, I'm assuming that's an ssd that is not a shared drive that you mounted manually?  Just checking as I have rom files in the main domains folder that is a shared folder.

 

Schlichi,

do you have multiple USB controllers on your motherboard?  I know gridrunner said that MacOS just has problems with passthrough USB devices.  Some work, but a lot of times they just act weird and it's much easier if you can passthrough the entire USB controller.  On my board, I have 3 different USB controllers and have passed through 1 of them to High Sierra and I also passed through a separate PCIe USB card to High Sierra.

By your posts, you seem pretty technical, but if you need help with it, gridrunner has a video for passing USB controllers and determine which of the onboard controllers are in separate iommu groups.

 

Link to comment

Thank you for your reply. My Problem is that I just used my last PCIe slot for this Combo Card (WiFi / BT).

 

I only got a spare PCI (Classic) slot left. But I only found one USB3 Controller for this slot that costs 60€ and might not even work in OS X OOTB. 

 

I could also get an old PCI USB 2 Controller for a few bucks- But which one is supported by OS X?

 

Or I could return my New Combo card - renounce Handoff/Contuinity (which doesn‘t even work yet) and get a USB 3 card and a standalone BT dongle. 

 

What would you do?

 

Greets

Schlichi

Link to comment
1 hour ago, ckoepf said:

1812,

In my experiences, the GPU frames per second is not just a MacOS problem.  My EVGA 1080ti only runs at 59fps when set at 1080P and 29-30fps at 2560x1440 in Windows.  That is the display via Steam in game FPS display and the NVidia Experience FPS displays the same frame rate.  I was getting much high fps on my GTX 960 on bare metal in my old gaming pc.  I have not used anything on MacOS that has a fps display yet, but I would have to assume similar results if that's Windows.

Glad to see you got your High Sierra working.  Haven't had a chance to mess with my dual displays again yet

 

just a follow up, i could't boot my gtx 1060 with 2 monitors attached. IIRC (from this morning) it showed the apple logo, progress bar, then everything went black (using hdmi and dvi) and if i also remember correctly, about 6 months ago on 10.12.x I had issues using displayport on a gtx 1060 (would only show black screen) but if you let it boot up on it own then plug it in, everything was fine. I read someone on a forum that it was an issue either with the driver or clover.

 

 

Link to comment
8 hours ago, ckoepf said:

 

High Sierra works fine with either of 2 GTX 960 cards if they are not the primary card for unraid.  As far as passing the rom file, did you verify via an ssh connection to your server that you can definitely access the rom file via the path you entered in your xml file?  Being that your path is /mnt/disks/vmssd, I'm assuming that's an ssd that is not a shared drive that you mounted manually?  Just checking as I have rom files in the main domains folder that is a shared folder.

 

 

2018-01-17T08:25:01.051885Z qemu-system-x86_64: -device vfio-pci,host=02:00.0,id=hostdev0,bus=pci.4,addr=0x0,romfile=/mnt/disks/VMNVM/highsierra/gtx950.rom: Failed to mmap 0000:02:00.0 BAR 3. Performance may be slow
usb_desc_get_descriptor: 2 unknown type 33 (len 10)
usb_desc_get_descriptor: 1 unknown type 33 (len 10)
usb_desc_get_descriptor: 1 unknown type 33 (len 10)
2018-01-17T08:26:15.112664Z qemu-system-x86_64: vfio_region_write(0000:02:00.0:region3+0x1088, 0x7ffe11,8) failed: Device or resource busy
2018-01-17T08:26:15.128268Z qemu-system-x86_64: vfio_err_notifier_handler(0000:02:00.1) Unrecoverable error detected. Please collect any data possible and then kill the guest
2018-01-17T08:26:15.221718Z qemu-system-x86_64: vfio_err_notifier_handler(0000:02:00.0) Unrecoverable error detected. Please collect any data possible and then kill the guest
2018-01-17T08:26:15.221765Z qemu-system-x86_64: vfio_err_notifier_handler(0000:02:00.1) Unrecoverable error detected. Please collect any data possible and then kill the guest

 

 

yeah it is just an SSD unassigned device that I run VMs from. The High Sierra VM is running off another unassigned NVMe drive. I copied the ROM file to the same location as the disk images on the NVMe just to check and still get the same issue. I am thinking this might be to do with whether it is the only graphics card. I will need to test when I get back home by throwing in another old card I have.

Edited by planetwilson
Link to comment

Schlichi, my initial comment was about onboard USB controllers.  Do you have any header plugs on the motherboard that could possibly be on their own controller that you could passthrough?  It would be great if you had extra slots, but if you don't see what you have for onboard controllers.

 

1812, sounds like the same problem I've been having.  I figure if I don't get time to mess with it, maybe a new driver will come out that will fix it in the mean time.   Fingers crossed.

 

planetwilson, your card should work as secondary in the system without the rom file.

Link to comment
56 minutes ago, ckoepf said:

Schlichi, my initial comment was about onboard USB controllers.  Do you have any header plugs on the motherboard that could possibly be on their own controller that you could passthrough?  It would be great if you had extra slots, but if you don't see what you have for onboard controllers.

I already tried that. Even though I seem to have 3 USB controllers - almost everything is connected to Host 3. I juggled around with the BIOS settings - and some things changed, but without completely disabling xHCI (USB 3.0) I didn't come to a satisfying solution.

 

I ordered the PCI USB 3.0 controller card now (knowing that the PCI Bus won't give me FULL USB 3.0 speed - but that's ok) and will try that works in OS X.  If it doesn't I will have to get rid of another card to make space for a PCIe USB 3.0 card. I came to realize that having a Plug & Play USB controller has quite a few advantages and should solve my problem.

 

Greets

Schlichi

Link to comment
On 1/15/2018 at 4:11 PM, DoeBoye said:

I have it working out of the box with no bios dump or extra xml or Clover stuff modifications (from what gridrunner provided) in 10.12.4. I'm using a GT 710.

 

Now that I've upgraded to UnRaid 6.4, I'm going to try the same setup in High Sierra...

@DoeBoye

Any luck with installing on the 6.4 release.  I had it working on 6.4.0rc9 but now on the Stable 6.4 it's not working.  I've tried several times but get the same results where I get to Apple logo and the vm gets into a reboot cycle.  Now, I really wish I didnt upgrade to 6.4 stable.

Link to comment
1 hour ago, emptyBankRolls said:

@DoeBoye

Any luck with installing on the 6.4 release.  I had it working on 6.4.0rc9 but now on the Stable 6.4 it's not working.  I've tried several times but get the same results where I get to Apple logo and the vm gets into a reboot cycle.  Now, I really wish I didnt upgrade to 6.4 stable.

 

I have 2 osx vm's running on 6.4 stable, so it works.

Link to comment
On 17/01/2018 at 1:01 PM, planetwilson said:

yes I am coming to the same conclusion. I have ordered a super cheapo passive card to stick in so hopefully unRAID will use that and I can safely assign the main card to the VM. Does anyone know how unRAID decides? does it matter as it will switch to the other if I try to assign one to a VM?

 

Well that didn't work :( tried dumping the ROM again as well.

 

2018-01-19 10:50:53.254+0000: Domain id=1 is tainted: high-privileges
2018-01-19 10:50:53.254+0000: Domain id=1 is tainted: custom-argv
2018-01-19 10:50:53.254+0000: Domain id=1 is tainted: host-cpu
2018-01-19T10:50:53.306628Z qemu-system-x86_64: -chardev pty,id=charserial0: char device redirected to /dev/pts/1 (label charserial0)
2018-01-19T10:50:55.302315Z qemu-system-x86_64: -device vfio-pci,host=03:00.0,id=hostdev0,bus=pci.3,addr=0x0,romfile=/mnt/cache/downloads/gtx950mw.dump: Failed to mmap 0000:03:00.0 BAR 3. Performance may be slow

 

Link to comment
48 minutes ago, planetwilson said:

 

Well that didn't work :( tried dumping the ROM again as well.

 

2018-01-19 10:50:53.254+0000: Domain id=1 is tainted: high-privileges
2018-01-19 10:50:53.254+0000: Domain id=1 is tainted: custom-argv
2018-01-19 10:50:53.254+0000: Domain id=1 is tainted: host-cpu
2018-01-19T10:50:53.306628Z qemu-system-x86_64: -chardev pty,id=charserial0: char device redirected to /dev/pts/1 (label charserial0)
2018-01-19T10:50:55.302315Z qemu-system-x86_64: -device vfio-pci,host=03:00.0,id=hostdev0,bus=pci.3,addr=0x0,romfile=/mnt/cache/downloads/gtx950mw.dump: Failed to mmap 0000:03:00.0 BAR 3. Performance may be slow

 

 

On my system, the card in the 1st PCI slot is the one that unraid grabs on boot.  If you have bios options for graphics priority, specify which card to initialize first and unraid will use that.

 

What is the card you are passing through to OSX?  You don’t need the rom file if it’s not the primary card in the system.  You may have said earlier on, are you getting any display out of it?  When I have display problems with passthrough, I get the Tianocore logo, then Clover and it either quits there or shows the apple logo and starts to load and display goes blank.  How far you are through the boot process will help determine where to look.

Link to comment

I am getting no display out of it at all, either OSX or Windows booting. I am passing a GTX 950 in both cases. I'll check my bios (ASRock Extreme 6 X99 - I don't remember seeing anything like that in there but will check again)

 

The card is sitting in the first slot currently but will try a little later moving it to another one.

Link to comment
On 1/17/2018 at 7:23 PM, emptyBankRolls said:

@DoeBoye

Any luck with installing on the 6.4 release.  I had it working on 6.4.0rc9 but now on the Stable 6.4 it's not working.  I've tried several times but get the same results where I get to Apple logo and the vm gets into a reboot cycle.  Now, I really wish I didnt upgrade to 6.4 stable.

 

My Windows 10 and Sierra VMs are running without issue on 6.4 with full video passthrough, but I haven't finished my High Sierra install quite yet. I just got the install USB drive sorted out. Hopefully this weekend! I'll report back with my success or failure :)

 

Edited by DoeBoye
Link to comment

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.