Parse Apple catalog! Work on WSL!

This commit is contained in:
img2tab
2019-03-29 18:24:24 +00:00
committed by GitHub
parent 7c12a79ea9
commit 49fb1f81ba
+25 -13
View File
@@ -2,7 +2,7 @@
# One-key semi-automatic installer of macOS on VirtualBox # One-key semi-automatic installer of macOS on VirtualBox
# (c) img2tab, licensed under GPL2.0 or higher # (c) img2tab, licensed under GPL2.0 or higher
# url: https://github.com/img2tab/macos-guest-virtualbox # url: https://github.com/img2tab/macos-guest-virtualbox
# version 0.50 # version 0.51
# Requirements: 33.5GB available storage on host # Requirements: 33.5GB available storage on host
# Dependencies: bash>=4.0, unzip, wget, dmg2img, # Dependencies: bash>=4.0, unzip, wget, dmg2img,
@@ -28,7 +28,7 @@ defaultcolor="\033[0m"
function welcome() { function welcome() {
printf ' printf '
One-key semi-automatic installation of macOS On VirtualBox - Mojave 10.14.3 One-key semi-automatic installation of macOS On VirtualBox - Mojave 10.14
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
This script installs only open-source software and unmodified Apple binaries. This script installs only open-source software and unmodified Apple binaries.
@@ -103,7 +103,7 @@ fi
# Windows Subsystem for Linux (WSL) # Windows Subsystem for Linux (WSL)
wsldir="" wsldir=""
if [[ "$(cat /proc/sys/kernel/osrelease 2>/dev/null)" == *"Microsoft"* ]]; then if [[ "$(cat /proc/sys/kernel/osrelease 2>/dev/null)" == *"Microsoft"* ]]; then
wsldir="$(cmd /C cd)" wsldir="$(cmd.exe /C cd)"
wsldir="${wsldir:0:-1}"'\' wsldir="${wsldir:0:-1}"'\'
fi fi
@@ -167,8 +167,18 @@ function create_basesystem_vdi() {
if [ -r "BaseSystem.vdi" ]; then if [ -r "BaseSystem.vdi" ]; then
echo "BaseSystem.vdi bootstrap virtual disk image ready." echo "BaseSystem.vdi bootstrap virtual disk image ready."
else else
# Find the correct download URL in the Apple catalog
echo "Downloading Apple macOS Mojave software update catalog"
wget -c 'http://swscan.apple.com/content/catalogs/others/index-10.14-10.13-10.12-10.11-10.10-10.9-mountainlion-lion-snowleopard-leopard.merged-1.sucatalog' -O 'apple.sucatalog.tmp'
echo "Finding latest macOS InstallAssistant entry"
tac "apple.sucatalog.tmp" | csplit - '/InstallAssistantAuto.smd/+1' -f "applecatalog.tmp." -s
urlbase="$(tail -n 1 "applecatalog.tmp.00")"
urlbase="$(expr match "${urlbase}" '.*\(http://[^<]*/\)')"
echo "Found BaseSystem.dmg URL: ${urlbase}BaseSystem.dmg"
echo "${urlbase}" > urlbase.tmp
echo "Downloading BaseSystem.dmg from swcdn.apple.com" echo "Downloading BaseSystem.dmg from swcdn.apple.com"
wget -c 'http://swcdn.apple.com/content/downloads/34/52/041-38914/dhgsi49xaudtqpbj3zibbmjy3ry9ola2rb/BaseSystem.dmg' -O "BaseSystem.dmg" 2>/dev/tty wget -c "${urlbase}BaseSystem.dmg" -O "BaseSystem.dmg" 2>/dev/tty
if [ ! -s BaseSystem.dmg ]; then if [ ! -s BaseSystem.dmg ]; then
printf ${whiteonred}'Could not download BaseSystem.dmg'${defaultcolor}'. Please report this issue printf ${whiteonred}'Could not download BaseSystem.dmg'${defaultcolor}'. Please report this issue
on https://github.com/img2tab/macos-guest-virtualbox/issues on https://github.com/img2tab/macos-guest-virtualbox/issues
@@ -209,12 +219,12 @@ fi
# Create the installation media virtual disk image: # Create the installation media virtual disk image:
function create_install_vdi() { function create_install_vdi() {
if [ -w "Install ${vmname}.vdi" ]; then if [ -w "Install_${vmname}.vdi" ]; then
echo "Installation media virtual disk image ready." echo "Installation media virtual disk image ready."
else else
echo "Creating ${vmname} installation media virtual disk image." echo "Creating ${vmname} installation media virtual disk image."
VBoxManage createmedium --size=8000 \ VBoxManage createmedium --size=8000 \
--filename "${wsldir}Install ${vmname}.vdi" \ --filename "${wsldir}Install_${vmname}.vdi" \
--variant fixed 2>/dev/tty --variant fixed 2>/dev/tty
fi fi
} }
@@ -226,7 +236,7 @@ VBoxManage storagectl "${vmname}" --add sata --name SATA --hostiocache on
VBoxManage storageattach "${vmname}" --storagectl SATA --port 0 \ VBoxManage storageattach "${vmname}" --storagectl SATA --port 0 \
--type hdd --nonrotational on --medium "${wsldir}${vmname}.vdi" --type hdd --nonrotational on --medium "${wsldir}${vmname}.vdi"
VBoxManage storageattach "${vmname}" --storagectl SATA --port 1 \ VBoxManage storageattach "${vmname}" --storagectl SATA --port 1 \
--type hdd --nonrotational on --medium "${wsldir}Install ${vmname}.vdi" --type hdd --nonrotational on --medium "${wsldir}Install_${vmname}.vdi"
VBoxManage storageattach "${vmname}" --storagectl SATA --port 2 \ VBoxManage storageattach "${vmname}" --storagectl SATA --port 2 \
--type hdd --nonrotational on --medium "${wsldir}BaseSystem.vdi" --type hdd --nonrotational on --medium "${wsldir}BaseSystem.vdi"
} }
@@ -470,10 +480,11 @@ kbstring='diskutil partitionDisk "/dev/${disks[1]}" 1 GPT JHFS+ "Install" R'
sendkeys sendkeys
promptterminalready promptterminalready
echo "" echo ""
echo "Downloading macOS Mojave 10.14.3 installer." echo "Downloading macOS Mojave 10.14 installer."
# downloading macOS # downloading macOS
kbstring='urlpath="http://swcdn.apple.com/content/downloads/34/52/041-38914/dhgsi49xaudtqpbj3zibbmjy3ry9ola2rb/"; for filename in BaseSystem.chunklist InstallInfo.plist AppleDiagnostics.dmg AppleDiagnostics.chunklist BaseSystem.dmg InstallESDDmg.pkg; do curl "${urlpath}${filename}" -o "/Volumes/'"${vmname}"'/${filename}"; done' urlbase="$(cat urlbase.tmp)"
kbstring='urlbase="'"${urlbase}"'"; for filename in BaseSystem.chunklist InstallInfo.plist AppleDiagnostics.dmg AppleDiagnostics.chunklist BaseSystem.dmg InstallESDDmg.pkg; do curl "${urlbase}${filename}" -o "/Volumes/'"${vmname}"'/${filename}"; done'
sendkeys sendkeys
promptterminalready promptterminalready
echo "" echo ""
@@ -635,7 +646,7 @@ echo "The VM will boot from the target virtual disk image."
VBoxManage startvm "${vmname}" VBoxManage startvm "${vmname}"
printf ' printf '
macOS Mojave 10.14.3 will now install and start up. macOS Mojave 10.14 will now install and start up.
Temporary files are safe to delete. '${whiteonred}'Delete temporary files?'${defaultcolor} Temporary files are safe to delete. '${whiteonred}'Delete temporary files?'${defaultcolor}
delete="" delete=""
@@ -644,11 +655,12 @@ echo ""
if [ "${delete}" == "y" ]; then if [ "${delete}" == "y" ]; then
# temporary files cleanup # temporary files cleanup
VBoxManage closemedium "${wsldir}BaseSystem.vdi" VBoxManage closemedium "${wsldir}BaseSystem.vdi"
VBoxManage closemedium "Install ${wsldir}${vmname}.vdi" VBoxManage closemedium "Install_${wsldir}${vmname}.vdi"
rm "BaseSystem.vdi" "Install ${vmname}.vdi" rm "BaseSystem.vdi" "Install_${vmname}.vdi"
rm "apple.sucatalog.tmp" "applecatalog.tmp.00" "applecatalog.tmp.01" "urlbase.tmp"
fi fi
printf 'macOS Mojave 10.14.3 installation should complete in a few minutes. printf 'macOS Mojave 10.14 installation should complete in a few minutes.
After the installation is complete, the virtual disk image may be increased After the installation is complete, the virtual disk image may be increased
through VirtualBox, then the macOS system APFS container size may be through VirtualBox, then the macOS system APFS container size may be