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


SpaceInvaderOne

Recommended Posts

40 minutes ago, limetech said:

Guys we're on thin ice here with this topic.  You are only permitted to create a OS X/MacOS VM in unRAID running on Apple hardware only!  To do otherwise breaks the terms of their EULA and the last thing we need is a haunting by the ghost of steve jobs.  Please don't include the "osk" key or anything about using non-Apple h/w.

 

Cheers,

Tom

 

my fault, I should have reminded poster to not leave it in xml.

Link to comment
9 hours ago, limetech said:

Guys we're on thin ice here with this topic.  You are only permitted to create a OS X/MacOS VM in unRAID running on Apple hardware only!  To do otherwise breaks the terms of their EULA and the last thing we need is a haunting by the ghost of steve jobs.  Please don't include the "osk" key or anything about using non-Apple h/w.

 

Cheers,

Tom

 
 
 
 

Yes please, guys be careful when posting your XML asking for help. Just xxxx it out.

Tom, I have put this at the top of this guide now so hopefully, people will read it and remember not to post.

Here's my osx VM running on unRAID on my MacBook pro ;-)

 

Edited by gridrunner
Link to comment

Hey guys,

I followed Gridrunners excellent videos and was able to install OSX Sierra on my Unraid box, but I varied a little by passing thru the gpu right from the start, no VNC. I installed MTN Lion a long time ago on my ESXi box, and it was very difficult at that time. I wanted to try on Unraid, but until I saw the videos I dreaded it. It wasn't that easy even then, and I've been looking for a better way. The Sierra install ISO I created was from some other video, but similar to Gridrunner's method where you have an HFS+ disk image named as an ISO. This does not mount as a CDROM, and if I try it's unreadable, and the plist file on IT conflicted with the new plist file on my install. Which is why you need to power off and remove it after the install. I'm sorry but the whole "install on vmware and move it to Unraid" seems to me to be even more complicated. I used my old install on ESXi to get the install from the app store, so that's really not a problem. It's the install media - it needs to be a real ISO that can be attached to the VM as an ISO. I found this script:

#!/bin/bash

################################
#   OS X Install ISO Creater   #
#                              #
# Author: shela                #
################################

#######################################
# Declarations
#######################################
shopt -s nocasematch
readonly TEMP_DIR=$(mktemp -d /tmp/osx-image.XXX)
readonly INPUT_MOUNT="${TEMP_DIR}/input_mount"
readonly OUTPUT_MOUNT="${TEMP_DIR}/output_mount"
readonly BUILD_MOUNT="${TEMP_DIR}/build_mount"
readonly SPARSE_IMAGE="${TEMP_DIR}/osx.sparseimage"
readonly DEFAULT_OUTPUT_DIR="${HOME}/Desktop"

trap cleanup EXIT

#######################################
# Display information message
#######################################
info() {
  echo -e "\033[0;32m${1}\033[0m"
}

#######################################
# Display error message
#######################################
error() {
  echo -e "\033[0;31m${1}\033[0;39m" >&2
}

#######################################
# Create install iso image
#######################################
create_image() {
  local in=${1}
  local out=${2%/}

  # Create output directory
  if [ ! -d "${out}" ]; then
    info "Destination directory ${out} does not exists. Creating..."
    mkdir -p "${out}"
    if [[ $? -ne 0 ]]; then
      error "Could not create output directory."
      exit 1
    fi
  fi

  # Mount the installer image
  info "Attaching $(basename "${in}")..."
  hdiutil attach "${in}" -noverify -nobrowse -mountpoint "${INPUT_MOUNT}"
  if [[ $? -ne 0 ]]; then
    error "Could not mount $(basename "${in}")."
    exit 1
  fi

  # Create sparse image with a Single Partition UDIF
  info "Creating sparse image..."
  hdiutil create -o "${TEMP_DIR}/osx" -size 7316m -type SPARSE -layout SPUD -fs HFS+J
  if [[ $? -ne 0 ]]; then
    error "Could not create sparse image."
    exit 1
  fi

  # Mount the sparse image
  info "Mounting sparse image..."
  hdiutil attach "${SPARSE_IMAGE}" -noverify -nobrowse -mountpoint "${BUILD_MOUNT}"
  if [[ $? -ne 0 ]]; then
    error "Could not attach sparse image."
    exit 1
  fi

  # Restore the Base System into the sparse image
  info "Restoring BaseSystem.dmg..."
  asr restore -source "${INPUT_MOUNT}/BaseSystem.dmg" -target "${BUILD_MOUNT}" -noprompt -noverify -erase
  if [[ $? -ne 0 ]]; then
    error "Could not mount BaseSystem.dmg."
    exit 1
  fi

  if [[ -d "/Volumes/OS X Base System" ]]; then
    declare -r BASE_SYSTEM_PATH="/Volumes/OS X Base System"
  else
    # for Mac OS X Lion
    declare -r BASE_SYSTEM_PATH="/Volumes/Mac OS X Base System"
  fi
  declare -r PLIST="${BASE_SYSTEM_PATH}/System/Library/CoreServices/SystemVersion.plist"

  # Get installer OS product version
  local os_version
  os_version=$(/usr/libexec/PlistBuddy -c "Print :ProductVersion" "${PLIST}")
  if [[ $? -ne 0 ]]; then
    error "Could not get Product Version."
    exit 1
  fi

  # Get installer OS product build version
  local os_build
  os_build=$(/usr/libexec/PlistBuddy -c "Print :ProductBuildVersion" "${PLIST}")
  if [[ $? -ne 0 ]]; then
    error "Could not get Product Build Version."
    exit 1
  fi
  info "Detected OS X version: ${os_version}, build ${os_build}"
  declare -r FILE_PATH="${out}/OS.X.${os_version}.${os_build}"

  # Remove Packages link and replace with actual files
  info "Replacing Packages link with actual files..."
  rm "${BASE_SYSTEM_PATH}/System/Installation/Packages"
  if [[ $? -ne 0 ]]; then
    error "Could not remove Packages link."
    exit 1
  fi

  cp -rp "${INPUT_MOUNT}/Packages" "${BASE_SYSTEM_PATH}/System/Installation/"
  if [[ $? -ne 0 ]]; then
    error "Could not replace Packages link with actual files."
    exit 1
  fi

  # Copy installer dependencies
  info "Copying dependency files..."
  cp -rp "${INPUT_MOUNT}/BaseSystem.chunklist" "${BASE_SYSTEM_PATH}/BaseSystem.chunklist"
  if [[ $? -ne 0 ]]; then
    error "Could not copy dependency files."
    exit 1
  fi

  cp -rp "${INPUT_MOUNT}/BaseSystem.dmg" "${BASE_SYSTEM_PATH}/BaseSystem.dmg"
  if [[ $? -ne 0 ]]; then
    error "Could not copy dependency files."
    exit 1
  fi

  # Unmount the Base System image
  hdiutil detach "${BASE_SYSTEM_PATH}"

  # Unmount the installer image
  hdiutil detach "${INPUT_MOUNT}"

  # Resize sparse image
  #info "Resizing sparse image..."
  #local size
  #size=$(hdiutil resize -limits "${SPARSE_IMAGE}" \
  #       | tail -n 1 \
  #       | awk '{ print $1 }')
  #echo "Size= ${size}b"
  #hdiutil resize -size "${size}b" "${SPARSE_IMAGE}"
  #if [[ $? -ne 0 ]]; then
  #  error "Could not resize sparse iamge."
  #  exit 1
  #fi

  # Convert sparse image to iso
  info "Creating iso image..."
  hdiutil convert "${SPARSE_IMAGE}" -format UDTO -o "${FILE_PATH}"
  if [[ $? -ne 0 ]]; then
    error "Could not create iso image."
    exit 1
  fi

  # Rename the sparse image
  #info "Renaming sparse image..."
  #mv "${SPARSE_IMAGE}" "${FILE_PATH}.dmg"
  #if [[ $? -ne 0 ]]; then
  #  error "Could not rename sparse image."
  #  exit 1
  #fi

  # Rename the cdr image
  info "Renaming cdr image..."
  mv "${FILE_PATH}.cdr" "${FILE_PATH}.iso"
  if [[ $? -ne 0 ]]; then
    error "Could not rename cdr image."
    exit 1
  fi

  # Show completion message
  info "Complete!!!"
  #info "  Path of dmg image: ${FILE_PATH}.dmg"
  info "  Path of iso image: ${FILE_PATH}.iso"
}

#######################################
# Cleanup directories and files
#######################################
cleanup() {
  if [[ -d "${BUILD_MOUNT}" ]]; then
    hdiutil detach "${BUILD_MOUNT}"
  fi

  if [[ -d "${OUTPUT_MOUNT}" ]]; then
    hdiutil detach "${OUTPUT_MOUNT}"
  fi

  if [[ -d "${INPUT_MOUNT}" ]]; then
    hdiutil detach "${INPUT_MOUNT}"
  fi

  if [[ -f "${SPARSE_IMAGE}" ]]; then
    rm "${SPARSE_IMAGE}"
  fi

  rmdir "${TEMP_DIR}"

  shopt -u nocasematch
}

#######################################
# main
#######################################
main() {
  echo -e "\033[1;4mOS X Install ISO Creater\033[0m"
  cat << EOT

Support OS X Version: 10.6, 10.7, 10.8, 10.9, 10.10, 10.11, 10.12

You need to download (Mac) OS X Installer from the Mac App Store and save it to the Application folder - its default location.
Or, you can create iso from InstallESD.dmg you specified.

EOT

  declare -a menu_items=("Mac OS X 10.7 (Lion)" \
                         "OS X 10.8   (Mountain Lion)" \
                         "OS X 10.9   (Mavericks)" \
                         "OS X 10.10  (Yosemite)" \
                         "OS X 10.11  (El Capitan)" \
                         "macOS 10.12 (Sierra)")
  declare -a osx_names=("Mac OS X Lion" \
                        "OS X Mountain Lion" \
                        "OS X Mavericks" \
                        "OS X Yosemite" \
                        "OS X El Capitan" \
                        "macOS Sierra")
  declare -r DMG_PATH_HEAD="/Applications/Install "
  declare -r DMG_PATH_TAIL=".app/Contents/SharedSupport/InstallESD.dmg"
  local -i i=0
  local dmg_path
  local output_dir

  # Check if installer exists
  for name in "${osx_names[@]}"; do
    dmg_path="${DMG_PATH_HEAD}${name}${DMG_PATH_TAIL}"
    if [[ ! -f "${dmg_path}" ]]; then
      unset menu_items[${i}]
      unset osx_names[${i}]
    fi
    let i++
  done

  # Remove non-existent versions from array
  menu_items=("${menu_items[@]}")
  osx_names=("${osx_names[@]}")

  # Display menu items
  i=0
  if [[ ${#menu_items[@]} -eq 0 ]]; then
    echo -e "No (Mac) OS X installer found."
    echo -e "Please Select:"
  else
    echo "Following ${#menu_items[@]} OS X installer(s) found."
    echo -e "Please Select:\n"
    for name in "${menu_items[@]}"; do
      echo "$((i + 1))) ${menu_items[${i}]}"
      let i++
    done
  fi
  echo -e "\n0) Specifiy InstallESD.dmg path"
  echo -e "\nq) Quit\n"

  # Read user selection
  while : ; do
    read -rp $'\e[1m'"Enter a number or 'q': "$'\e[0m' selection
    if [ "${selection}" -eq 0 ] 2> /dev/null; then
      read -ep $'\e[1m'"Enter the InstallESD.dmg path: "$'\e[0m' dmg_path
      break
    elif [ "${selection}" -gt 0 ] 2> /dev/null && [ "${selection}" -le ${i} ] 2> /dev/null; then
      dmg_path="${DMG_PATH_HEAD}${osx_names[$((selection - 1))]}${DMG_PATH_TAIL}"
      break
    elif [ "${selection}" = "q" ]; then
      exit
      break
    fi
  done

  # Read user output directory
  read -ep $'\e[1m'"Enter the output directory (default: ${DEFAULT_OUTPUT_DIR}): "$'\e[0m' output_dir
  if [[ -z "${output_dir}" ]]; then
    output_dir="${DEFAULT_OUTPUT_DIR}"
  fi

  create_image "${dmg_path}" "${output_dir}"
}

main

Which is posted here as I found it. I changed the HFS+J to HFSJ and it produced an HFS ISO osx base system disk. And now I can install OSX Sierra the easiest(in my opinion) way possible. I have the GTX750Ti passed as well as the USB controllers. I start the VM and I don't have to touch anything except the keyb & mouse attached to the VM for the entire install. After it's done I obtained the Webdriver for Nvidia from safari at the VM, installed, and did the smbios & webdriver config in clover config, rebooted and was done. (I did use the EFI mounter & clover configurator kindly provided by Gridrunner - because I'm lazy ) but I'm sure these are obtainable somewhere. Which means installing a VM can be no different from sticking a cd in just like almost everybody already knows how to do. It was as as easy as installing XP, and I'm not an OSX guy either. 

Link to comment

I tried the new way of doing the VM using Fusion but when it comes to installing your version of Clover R3974 that you attached to the notes of the video it tells me it is incompatible with this version of OSX. I carry on anyway and the install fails. I notice someone else in the video comments has the same issue. I am running OSX 10.12.3

Link to comment

One thing that tripped me up for a while that is worth noting is that when I went back to expand my drive later on using:- 

 

qemu-img resize Sierra.img +30G

 

I found that it wouldn't boot afterwards. Only when I went back to check the output of the above line did it have a warning about not detecting the image image format correctly.

 

WARNING: Image format was not specified for 'x86-64.img' and probing guessed raw.
     Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
     Specify the 'raw' format explicitly to remove the restrictions.

 

i.e. it had made the image read only. I ran the command again, expanding it by another 1GB but this time also specifying the format with -fmt raw and after that it all worked fine. I could then use disk manager inside OSX to expand to use the newly available space...

 

 

  • Like 1
Link to comment
3 hours ago, planetwilson said:

One thing that tripped me up for a while that is worth noting is that when I went back to expand my drive later on using:- 

 


qemu-img resize Sierra.img +30G

 

I found that it wouldn't boot afterwards. Only when I went back to check the output of the above line did it have a warning about not detecting the image image format correctly.

 


WARNING: Image format was not specified for 'x86-64.img' and probing guessed raw.
     Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
     Specify the 'raw' format explicitly to remove the restrictions.

 

i.e. it had made the image read only. I ran the command again, expanding it by another 1GB but this time also specifying the format with -fmt raw and after that it all worked fine. I could then use disk manager inside OSX to expand to use the newly available space...

 

 

 

@planetwilson that's interesting. Thanks for the info.  I normally expand my images through the unraid GUI and can boot fine.

58d1037054d86_ScreenShot2017-03-21at10_40_25.thumb.png.10b795f0be73cfbe95e5e5fb2e07938a.png

 

I did find that disk utility didn't like trying to expand the new space, though. But rebooting the VM and trying disk utility the second time it would work and expand the new space.

 

 

Link to comment

Aah, I didn't know you could expand them through the UI. Good to know.

 

Expanding the partition internally I did struggle with at first. I booted into recovery thinking perhaps it was like Windows and you couldn't expand the boot partition but that had issues too. In the end I think it was the poor UX of Disk Utility. I had to click on the "free space" then click remove! then I could expand the partition into the actual free space. It was almost like Disk Utility was presenting free space as a special partition called "free space". Very odd.

Link to comment

Thank you Gridrunner and Planetwilson - lots of good tips in your posts for me. (awesome that the UnRaid UI can be used to resize the VM - never thought to even try that!)

 

I was able to finally create the larger VM - and I used the OSX Terminal with the 'diskutil resizeVolume' command to get OSX to use the whole VM.

 

I just could not get the OSX desktop Disk Utility GUI to make any change to the 'drive' and expand it to the full VM. It just would not move the graphic slice no matter what I tried.

After the terminal command change I was successful in transferring the IMG to a physical drive as well - I wanted to play around with the iCloud photo app and required a much larger VM so I can do that.

 

No I need to do the same thing to my Win10 VM - expand it and move it to a larger physical drive to get it off my cache disk.

 

Lots of fun!

 

 

Link to comment

intel 3770s, 24gb, GTX 1070 for Windows, 750ti for osx. I have enough usb (just mobo no add in card) for hot plug in windows (usb2) and hot plug usb3 in osx + still have ports for the unraid stick + another device. Mobo is an asrock B75 (socket 1155).

 

OSX working perfectly. Had the hdmi the audio issue so bought a dvi to hdmi adaptor that fixed the sound issue in Sierra. Also using an asus bluetooth adaptor for my apple keyboard + Magic Trackpad - zero issues with this setup. 

 

It's worth noting I had to flash my 750ti gpu bios with another card's before it would display via hdmi (on bare metal) when it was a pure hackintosh. GPU Bios has always made a big difference when it comes to 750ti's and osx.

 

Which brings me to my point, rather than requiring an adaptor I believe it's possible to load a gpu bios via kvm (replacing the cards current one). I'm going to experiment with some different gpu bios's 'soft loaded' and report back.

 

Not that it's a big deal, my 750ti is outputting 4k @ 30Hz via the DVI port through the hdmi adaptor. I didn't even know you could get audio out of a graphics card DVI port till I saw the video. I also expected it to the limited to DVI's top resolution but that's not the case, so a £2.50 adaptor is a very workable solution. 

 

I will be buying an unpaid licence as soon as the trial is up. 

 

It's now easier to install OSX in unraid via kvm than on bare metal, superb vid!

 

Edited by Thingi
typos
Link to comment
14 minutes ago, Thingi said:

 

 

Which brings me to my point, rather than requiring an adaptor I believe it's possible to load a gpu bios via kvm (replacing the cards current one). I'm going to experiment with some different gpu bios's 'soft loaded' and report back.

 

Not that it's a big deal, my 750ti is outputting 4k @ 30Hz via the DVI port through the hdmi adaptor. I didn't even know you could get audio out of a graphics card DVI port till I saw the video. I also expected it to the limited to DVI's top resolution but that's not the case, so a £2.50 adaptor is a very workable solution. 

 

I will be buying an unpaid licence as soon as the trial is up. 

 

It's now easier to install OSX in unraid via kvm than on bare metal, superb vid!

 

6

@Thingi  I think it is an excellent idea to try different vbios One thing to be careful of though is the ones commonly downloaded from techbios etc dont often work.

They are not right for use and are often the wrong size. See my video on dumping nvidia vbios. So it may be difficult getting the correct format. 

 

 

 

 

 

 

 

Link to comment

So my OSX VM that I created last week and has been working fine is suddenly behaving very strangely. I have a GTX950 based through and now during boot it will pause and refreshing the list of VMs in unraid shows it as paused or suspended. Hit play again and the progress bar goes a little further before it shows suspended again.

 

I managed to eventually get it started but it runs for a few seconds at most before becoming suspended again. Strangely the monitor still shows the desktop at this point but frozen in time.

Edited by planetwilson
Link to comment

Most common cause seems to be a disk filling up, I have a share set to cache disk only (my SSD) called VM which is where I store all the disk images. There is plenty of space on there. I was trying to move it across to the user share on the array the other day but couldn't simply move it like that. I wonder if I have broken something somewhere...

Link to comment
49 minutes ago, Taddeusz said:

Maybe it was foolish to update to 10.12.4 but I did. It appears they changed the way the SMC is read and it's now getting a KP related to reading the OSK.

 

updating one of mine currently, we'll see what happens.

 

in the mean time, some reading:

 

 

Link to comment

without adjusting anything, a clone of one of my vm's is now stuck in a boot loop after clover screen exits. This is while passing a gt 730.

 

 

after removing the gt 730, boot progresses to kernel panic, then reboot.

 

good thing it was a clone.

Edited by 1812
Link to comment
37 minutes ago, peter_sm said:

I,m restoring a backup and will try latest Clover later today emoji3.png

 

I'm making another clone, will also update it, and then try upgrading as well. It's not like this is a race or anything.....

 

 

 

 

 

 

 

 

 

GO!

 

----

actually, you win. I was updating clover, broke it, then a project came up....

Edited by 1812
Link to comment

I guess i will have a go doing an update as everyone else is and i dont want to miss out! But really looks like nothing really worth having in it unless you like cricket !!

 

• Adds Night Shift for automatically shifting the colors in your display to the warmer end of the spectrum after dark

• Adds Siri support for cricket sports scores and statistics for Indian Premier League and International Cricket Council

• Adds Dictation support for Shanghainese

• Resolves several PDF rendering and annotation issues in Preview

• Improves the visibility of the subject line when using Conversation View in Mail

• Fixes an issue that may prevent content from appearing in Mail messages

 

Also updating may break the nvidia webdrivers

 

 

Edited by gridrunner
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.