- Notifications
You must be signed in to change notification settings - Fork1.1k
Push-button installer of macOS Catalina, Mojave, and High Sierra guests in Virtualbox on x86 CPUs for Windows, Linux, and macOS
License
myspaghetti/macos-virtualbox
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
macos-guest-virtualbox.sh
is a Bash script that creates a macOS virtual machine guest on VirtualBox with unmodified macOS installation files downloaded directly from Apple servers.
A default install only requires the user to sit patiently and, less than ten times, press enter when prompted by the script, without interacting with the virtual machine.
Tested onbash
andzsh
onCygwin. Works on macOS, CentOS 7, and Windows on x86 CPUs with VT-x or AMD-V. Should work on most modern Linux distros.
macOS Catalina (10.15), Mojave (10.14), and High Sierra (10.13) currently supported.
If you would like to become the maintainer of this repository, please seeissue #645 - maintainer wanted.
Documentation can be viewed by executing the command./macos-guest-virtualbox.sh documentation
The majority of the script is either documentation, comments, or actionable error messages, which should make the script straightforward to inspect and understand.
iCloud, iMessage, and other connected Apple services require a valid device name and serial number, board ID and serial number, and other genuine (or genuine-like) Apple parameters. These can be set in EFI and NVRAM by editing the script. See thedocumentation command for further information.
The script by default assigns a target virtual disk storage size of 80GB, which is populated to about 25GB on the host on initial installation. After the installation is complete, the storage size may be increased. See thedocumentation command for further information.
The following primary display resolutions are supported by macOS on VirtualBox:5120x2880
2880x1800
2560x1600
2560x1440
1920x1200
1600x1200
1680x1050
1440x900
1280x800
1024x768
640x480
. See thedocumentation command for further information.
The scope of the script is completing a default macOS install process on VirtualBox on supported hardware. Further functioning order of VirtualBox or macOS is beyond the scope of this script. Some features may behave unexpectedly, such as USB device support, audio support, FileVault boot password prompt support, and other features, including critical functionality.
The script is designed for x86 CPU Mac hardware. macOS guests on VirtualBox are generally incompatible with other CPU models. If the guest macOS boot process hangs on “LoadKernelFromStream”, “EndRandomSeed”, or "EXITBS", see thedocumentation command regarding VirtualBox CPU profiles andCPUID settings. Some CPU models released in 2020 and later may fail to start or complete the installer, and may require manually adjusting the CPUID settings.
The virtual machine may be upgraded to the latest macOS Big Sur (11) and macOS Monterey (12) versions through Software Update. Big Sur may be installed in-place. Monterey may require attaching another volume to the virtual machine and selecting the volume as the installation target, otherwise the upgrade is prone to failing and entering a boot loop.
After successfully creating a working macOS virtual machine, consider importing it into more performant virtualization software, or packaging it for configuration management platforms for automated deployment. These virtualization and deployment applications require additional configuration that is beyond the scope of the script.
QEMU with KVM is capable of providing virtual machine hardware passthrough for near-native performance. QEMU supports theVMDK
virtual disk image storage format, which can be configured to be created by the script. See thedocumentation command for further information. QEMU and KVM require additional configuration that is beyond the scope of the script.
The VirtualBox Native Execution Manager (NEM) is an experimental VirtualBox feature.VirtualBox uses NEM when access to VT-x and AMD-V is blocked by virtualization software or execution protection features such as Hyper-V, WSL2, WSLg, Windows Sandbox, memory integrity protection, Application Guard, Credential Guard, Device Guard, and other features and software. macOS and the macOS installer have memory corruption issues under NEM virtualization. The script checks for NEM and exits with an error message if it is detected.
VirtualBox can run on WSL2 and WSLg with some kernel module compilation, though performance is extremely low. At the point that kernel module compilation is required, it may be preferable to use QEMU/KVM on WSL2 and WSLg, which is orders of magnitude faster than VirtualBox on WSL2 and WSLg. WSL2, WSLg, QEMU, and KVM require additional configuration that is beyond the scope of the script.
The macOS VirtualBox guest is loaded without extra bootloaders, but it is compatible withOpenCore. OpenCore requires additional configuration that is beyond the scope of the script.
macOS may not support any built-in VirtualBox audio controllers. The bootloaderOpenCore may be able to load open-source or built-in audio drivers in VirtualBox, providing the configuration for STAC9221 (Intel HD Audio) or SigmaTel STAC9700,83,84 (ICH AC97) is available.
VirtualBox does not supply an EDID for its virtual display, and macOS does not enable display scaling (high PPI) without an EDID. The bootloader OpenCore caninject an EDID which enables display scaling.
The VirtualBox EFI implementation does not properly load the FileVault full disk encryption password prompt upon boot. The bootloaderOpenCore is able to load the password prompt with the parameterProvideConsoleGop
set totrue
. See sampleconfig.plist
The following dependencies should be available through a package manager:bash
coreutils
gzip
unzip
wget
xxd
dmg2img
virtualbox
The following optional packages provide optical character recognition that reduces the required interaction with the script:tesseract-ocr
tesseract-ocr-eng
Supported versions:
- VirtualBox ≥ 6.1.6, though versions as low as 5.2 may work.
- GNU
Bash
≥ 4.3, on Windows run throughCygwin or WSL "1", seeNEM - GNU
coreutils
≥ 8.22, GNUgzip
≥ 1.5, Info-ZIPunzip
≥ v6.0, GNUwget
≥ 1.14,xxd
≥ 1.11 dmg2img
≥ 1.6.5, on Cygwin the package is not available through the package manager so the script downloads it automatically.tesseract-ocr
≥ 4
About
Push-button installer of macOS Catalina, Mojave, and High Sierra guests in Virtualbox on x86 CPUs for Windows, Linux, and macOS
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.