Jump to content

emockler

Members
  • Posts

    19
  • Joined

  • Last visited

Posts posted by emockler

  1. 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. 

  2. I use it for serving cd's & cd images to vm's. Instead of having the xml file specify a specific ISO file or the physical cdrom, I define an iscsi cdrom in the xml the same for all vm's and change CD's at the iscsi server.  I'm still experimenting as to the best way to define the drive in the xml, as it works great in windows VM's, but OSX I'm finding needs a restart (not full power off) to refresh a changed CD. I can install a fresh OSX from an iscsi DVD ISO, but I have to share it as a disk rather than cdrom. The iscsi target doesn't seem to handle HFS+.  I'm using SCST for the iscsi target, and built libvirt 3.1.0 and Qemu 2.8.0 both with the added iscsi support, as well as some kernel modifications that I read someplace were needed. While I'm only interested in the CD images over iscsi at the moment, my VM's could theoretically use iscsi block devices from the server itself, or from some iscsi toaster like a qnap. 

×
×
  • Create New...