raised VBox version requirement to 6.0 because of VISO issues

This commit is contained in:
Jack
2019-07-23 17:26:40 +03:00
committed by GitHub
parent 7de4173f34
commit 79f877dcb9
+47 -37
View File
@@ -2,11 +2,11 @@
# Semi-automatic installer of macOS on VirtualBox # Semi-automatic installer of macOS on VirtualBox
# (c) myspaghetti, licensed under GPL2.0 or higher # (c) myspaghetti, licensed under GPL2.0 or higher
# url: https://github.com/img2tab/macos-guest-virtualbox # url: https://github.com/img2tab/macos-guest-virtualbox
# version 0.71.6 # version 0.71.7
# Requirements: 40GB available storage on host # Requirements: 40GB available storage on host
# Dependencies: bash >= 4.0, unzip, wget, dmg2img, # Dependencies: bash >= 4.0, unzip, wget, dmg2img,
# VirtualBox with Extension Pack >= 5.2.2 # VirtualBox with Extension Pack >= 6.0
# Customize the installation by setting these variables: # Customize the installation by setting these variables:
vmname="macOS" # name of the VirtualBox virtual machine vmname="macOS" # name of the VirtualBox virtual machine
@@ -78,17 +78,17 @@ This script installs only open-source software and unmodified Apple binaries.
The script checks for dependencies and will prompt to install them if unmet. The script checks for dependencies and will prompt to install them if unmet.
Some stages may fail due to errant keyboard presses; run the script with Some stages may fail due to errant keyboard presses; run the script with
"'${white_on_black}"${0}"' stages'${default_color}'" to see how to run only certain stages. "'"${white_on_black}${0}"' stages'"${default_color}"'" to see how to run only certain stages.
For iCloud and iMessage connectivity, the script needs to be edited with genuine For iCloud and iMessage connectivity, the script needs to be edited with genuine
or genuine-like Apple parameters. macOS will work without these parameters, but or genuine-like Apple parameters. macOS will work without these parameters, but
Apple-connected apps will not. Apple-connected apps will not.
The installation requires about '${white_on_red}'40GB'${default_color}' of available storage, 25GB for The installation requires about '"${white_on_red}"'40GB'"${default_color}"' of available storage, 25GB for
temporary installation files and 15GB for the virtual machine. Deleting the temporary installation files and 15GB for the virtual machine. Deleting the
temporary files when prompted reduces the storage requirement by about 10GB. temporary files when prompted reduces the storage requirement by about 10GB.
'${white_on_black}'Press enter to review the script settings.'${default_color} '"${white_on_black}"'Press enter to review the script settings.'"${default_color}"
read read
# custom settings prompt # custom settings prompt
@@ -102,7 +102,7 @@ resolution="'"${resolution}"'" # VM display resolution
These values may be customized by editing them at the top of the script file. These values may be customized by editing them at the top of the script file.
'${white_on_black}'Press enter to continue, CTRL-C to exit.'${default_color} '"${white_on_black}"'Press enter to continue, CTRL-C to exit.'"${default_color}"
read read
} }
@@ -156,7 +156,7 @@ if [ -n "$(cygcheck -V 2>/dev/null)" ]; then
} }
echo "Found VBoxManage" echo "Found VBoxManage"
else else
echo "Please make sure VirtualBox version 5.2.2 or higher is installed, and that" echo "Please make sure VirtualBox version 6.0 or higher is installed, and that"
echo "the path to the VBoxManage.exe executable is in the PATH variable, or assign" echo "the path to the VBoxManage.exe executable is in the PATH variable, or assign"
echo "in the script the full path including the name of the executable to" echo "in the script the full path including the name of the executable to"
printf 'the variable '"${white_on_black}"'cmd_path_VBoxManage'"${default_color}" printf 'the variable '"${white_on_black}"'cmd_path_VBoxManage'"${default_color}"
@@ -181,13 +181,13 @@ elif [[ "$(cat /proc/sys/kernel/osrelease 2>/dev/null)" =~ Microsoft ]]; then
else else
echo "Please make sure VirtualBox is installed on Windows, and that the path to the" echo "Please make sure VirtualBox is installed on Windows, and that the path to the"
echo "VBoxManage.exe executable is in the PATH variable, or assigned in the script" echo "VBoxManage.exe executable is in the PATH variable, or assigned in the script"
printf 'to the variable '${white_on_black}'wsl_path_VBoxManage'${default_color}' including the name of the executable.' printf 'to the variable '"${white_on_black}"'wsl_path_VBoxManage'"${default_color}"' including the name of the executable.'
exit exit
fi fi
fi fi
# everything else (not cygwin and not wsl) # everything else (not cygwin and not wsl)
elif [ -z "$(VBoxManage -v 2>/dev/null)" ]; then elif [ -z "$(VBoxManage -v 2>/dev/null)" ]; then
echo "Please make sure VirtualBox version 5.2.2 or higher is installed," echo "Please make sure VirtualBox version 6.0 or higher is installed,"
echo "and that the path to the VBoxManage executable is in the PATH variable." echo "and that the path to the VBoxManage executable is in the PATH variable."
exit exit
fi fi
@@ -197,9 +197,18 @@ vbox_version="$(VBoxManage -v 2>/dev/null)"
if [ -z "${vbox_version}" ]; then if [ -z "${vbox_version}" ]; then
echo "Can't determine VirtualBox version. Exiting." echo "Can't determine VirtualBox version. Exiting."
exit exit
elif [[ ! ${vbox_version:0:1} == 6 && ! "${vbox_version:0:6}" =~ 5\.2\.1[0-9] && ! "${vbox_version:0:5}" =~ 5\.2\.[2-9] && ! "${vbox_version:0:3}" =~ 5\.[3-9] ]]; then elif [[ ! ${vbox_version:0:1} == 6 && ! "${vbox_version:0:6}" =~ 5\.2\.1[0-9] && ! "${vbox_version:0:5}" =~ 5\.2\.[2-9] ]]; then
echo "Please make sure VirtualBox version 5.2.2 or higher is installed." echo "Please make sure VirtualBox version 6.0 or higher is installed."
exit exit
elif [ "${vbox_version:0:1}" -lt 6 ]; then
echo ""
printf 'VirtualBox version '"${white_on_black}${vbox_version}${default_color}"' detected. Please see the following\n'
echo "URL for issues with the VISO filesystem on VirtualBox 5.2 to 5.2.32:"
echo ""
echo " https://github.com/myspaghetti/macos-guest-virtualbox/issues/86"
echo ""
printf "${white_on_black}"'Press enter to continue, CTRL-C to exit.'"${default_color}"
read
fi fi
# Oracle VM VirtualBox Extension Pack # Oracle VM VirtualBox Extension Pack
@@ -207,7 +216,8 @@ extpacks="$(VBoxManage list extpacks 2>/dev/null)"
if [ "$(expr match "${extpacks}" '.*Oracle VM VirtualBox Extension Pack')" -le "0" \ if [ "$(expr match "${extpacks}" '.*Oracle VM VirtualBox Extension Pack')" -le "0" \
-o "$(expr match "${extpacks}" '.*Usable:[[:blank:]]*false')" -gt "0" ]; then -o "$(expr match "${extpacks}" '.*Usable:[[:blank:]]*false')" -gt "0" ]; then
echo "Please make sure Oracle VM VirtualBox Extension Pack is installed, and that" echo "Please make sure Oracle VM VirtualBox Extension Pack is installed, and that"
echo "all installed VirtualBox extensions are listed as usable in \"VBoxManage list extpacks\"" echo "all installed VirtualBox extensions are listed as usable when"
echo "running the command \"VBoxManage list extpacks\""
exit exit
fi fi
@@ -266,7 +276,7 @@ echo "${macOS_release_name} selected"
function prompt_delete_existing_vm() { function prompt_delete_existing_vm() {
if [ -n "$(VBoxManage showvminfo "${vmname}" 2>/dev/null)" ]; then if [ -n "$(VBoxManage showvminfo "${vmname}" 2>/dev/null)" ]; then
printf '\n"'"${vmname}"'" virtual machine already exists. printf '\n"'"${vmname}"'" virtual machine already exists.
'${white_on_red}'Delete existing virtual machine "'"${vmname}"'"?'${default_color} '"${white_on_red}"'Delete existing virtual machine "'"${vmname}"'"?'"${default_color}"
delete="" delete=""
read -n 1 -p " [y/n] " delete 2>/dev/tty read -n 1 -p " [y/n] " delete 2>/dev/tty
echo "" echo ""
@@ -285,7 +295,7 @@ fi
function create_vm() { function create_vm() {
if [ -n "$(VBoxManage createvm --name "${vmname}" --ostype "MacOS1013_64" --register 2>&1 1>/dev/null)" ]; then if [ -n "$(VBoxManage createvm --name "${vmname}" --ostype "MacOS1013_64" --register 2>&1 1>/dev/null)" ]; then
printf '\nError: Could not create virtual machine "'"${vmname}"'". printf '\nError: Could not create virtual machine "'"${vmname}"'".
'${white_on_black}'Please delete exising "'"${vmname}"'" VirtualBox configuration files '${white_on_red}'manually'${default_color}'. '"${white_on_black}"'Please delete exising "'"${vmname}"'" VirtualBox configuration files '"${white_on_red}"'manually'"${default_color}"'.
Error message: Error message:
' '
@@ -680,13 +690,13 @@ function send_enter() {
} }
function prompt_lang_utils() { function prompt_lang_utils() {
printf ${white_on_black}' printf "${white_on_black}"'
Press enter when the Language window is ready.'${default_color} Press enter when the Language window is ready.'"${default_color}"
read -p "" read -p ""
send_enter send_enter
printf ${white_on_black}' printf "${white_on_black}"'
Press enter when the macOS Utilities window is ready.'${default_color} Press enter when the macOS Utilities window is ready.'"${default_color}"
read -p "" read -p ""
kbspecial='CTRLprs F2 CTRLrls u ENTER t ENTER' kbspecial='CTRLprs F2 CTRLrls u ENTER t ENTER'
@@ -694,8 +704,8 @@ Press enter when the macOS Utilities window is ready.'${default_color}
} }
function prompt_terminal_ready() { function prompt_terminal_ready() {
printf ${white_on_black}' printf "${white_on_black}"'
Press enter when the Terminal command prompt is ready.'${default_color} Press enter when the Terminal command prompt is ready.'"${default_color}"
read -p "" read -p ""
} }
@@ -739,9 +749,9 @@ prompt_terminal_ready
kbstring='shutdown -h now' kbstring='shutdown -h now'
send_keys send_keys
printf ${white_on_black}' printf "${white_on_black}"'
Shutting down the virtual machine. Shutting down the virtual machine.
Press enter when the virtual machine shutdown is complete.'${default_color} Press enter when the virtual machine shutdown is complete.'"${default_color}"
read -p "" read -p ""
echo "" echo ""
echo "Detaching initial base system and starting virtual machine." echo "Detaching initial base system and starting virtual machine."
@@ -771,9 +781,9 @@ send_keys
prompt_terminal_ready prompt_terminal_ready
kbstring='shutdown -h now' kbstring='shutdown -h now'
send_keys send_keys
printf ${white_on_black}' printf "${white_on_black}"'
Shutting down virtual machine. Shutting down virtual machine.
Press enter when the virtual machine shutdown is complete.'${default_color} Press enter when the virtual machine shutdown is complete.'"${default_color}"
read -p "" read -p ""
} }
@@ -785,10 +795,10 @@ prompt_terminal_ready
# Start the installer. # Start the installer.
kbstring='app_path="$(ls -d /Install*.app)" && cd "/${app_path}/Contents/Resources/"; ./startosinstall --volume "/Volumes/'"${vmname}"'"' kbstring='app_path="$(ls -d /Install*.app)" && cd "/${app_path}/Contents/Resources/"; ./startosinstall --volume "/Volumes/'"${vmname}"'"'
send_keys send_keys
printf ${white_on_black}' printf "${white_on_black}"'
Installer started. Please wait for the license prompt to appear at Installer started. Please wait for the license prompt to appear at
the bottom of the virtual machine terminal, then press enter here. the bottom of the virtual machine terminal, then press enter here.
This will accept the license on the virtual machine.'${default_color} This will accept the license on the virtual machine.'"${default_color}"
read -p "" read -p ""
kbspecial="A ENTER" kbspecial="A ENTER"
send_special send_special
@@ -799,14 +809,14 @@ echo "into the base system, not the installer."
} }
function place_efi_apfs_drivers { function place_efi_apfs_drivers {
printf ${white_on_black}' printf "${white_on_black}"'
After the VM boots, press enter when either the Language window'${default_color}' After the VM boots, press enter when either the Language window'"${default_color}"'
'${white_on_black}'or Utilities window is ready.'${default_color} '"${white_on_black}"'or Utilities window is ready.'"${default_color}"
read -p "" read -p ""
send_enter send_enter
printf ${white_on_black}' printf "${white_on_black}"'
Press enter when the macOS Utilities window is ready.'${default_color} Press enter when the macOS Utilities window is ready.'"${default_color}"
read -p "" read -p ""
kbspecial='CTRLprs F2 CTRLrls u ENTER t ENTER' kbspecial='CTRLprs F2 CTRLrls u ENTER t ENTER'
send_special send_special
@@ -835,16 +845,16 @@ send_keys
function detach_installer_vdi_and_viso() { function detach_installer_vdi_and_viso() {
# Shut down the virtual machine # Shut down the virtual machine
printf ${white_on_black}' printf "${white_on_black}"'
Press enter when the terminal is ready.'${default_color} Press enter when the terminal is ready.'"${default_color}"
read -p "" read -p ""
kbstring='shutdown -h now' kbstring='shutdown -h now'
send_keys send_keys
echo "" echo ""
echo "Shutting down virtual machine." echo "Shutting down virtual machine."
printf ${white_on_black}' printf "${white_on_black}"'
Press enter when the virtual machine shutdown is complete.'${default_color} Press enter when the virtual machine shutdown is complete.'"${default_color}"
read -p "" read -p ""
# detach installer from virtual machine # detach installer from virtual machine
@@ -862,7 +872,7 @@ echo ""
# temporary files cleanup # temporary files cleanup
VBoxManage closemedium "${macOS_release_name}_BaseSystem.vdi" 2>/dev/null VBoxManage closemedium "${macOS_release_name}_BaseSystem.vdi" 2>/dev/null
VBoxManage closemedium "Install ${macOS_release_name}.vdi" 2>/dev/null VBoxManage closemedium "Install ${macOS_release_name}.vdi" 2>/dev/null
printf 'Temporary files are safe to delete. '${white_on_red}'Delete temporary files?'${default_color} printf 'Temporary files are safe to delete. '"${white_on_red}"'Delete temporary files?'"${default_color}"
delete="" delete=""
read -n 1 -p " [y/n] " delete 2>/dev/tty read -n 1 -p " [y/n] " delete 2>/dev/tty
echo "" echo ""
@@ -888,7 +898,7 @@ That'\''s it. Enjoy your virtual machine.
} }
function stages() { function stages() {
printf '\nUSAGE: '${white_on_black}${0}' [STAGE]...'${default_color}' printf '\nUSAGE: '"${white_on_black}${0}"' [STAGE]...'"${default_color}"'
The script is divided into stages that run as separate functions. The script is divided into stages that run as separate functions.
Add one or more stage titles to the command line to run the corresponding Add one or more stage titles to the command line to run the corresponding