Coder Social home page Coder Social logo

macos-virtualbox-clone's Introduction

macOS virtual machine showing apps on Launchpad

Push-button installer of macOS on VirtualBox

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. Tested on Cygwin. Works on macOS, Windows Subsystem for Linux, and centOS 7. Should work on most modern Linux distros.

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.

macOS Catalina (10.15), Mojave (10.14), and High Sierra (10.13) currently supported.

Documentation

Documentation can be viewed by executing the command ./macos-guest-virtualbox.sh documentation

iCloud and iMessage connectivity and NVRAM

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 NVRAM by editing the script. See documentation for further information.

Storage size

The script by default assigns a target virtual disk storage size of 80GB, which is populated to about 20GB on the host on initial installation. After the installation is complete, the storage size may be increased. See documentation for further information.

Primary display resolution

The following primary display resolutions are supported by macOS on VirtualBox: 5120x2880 2880x1800 2560x1600 2560x1440 1920x1200 1600x1200 1680x1050 1440x900 1280x800 1024x768 640x480. See documentation for further information.

Unsupported features

Developing and maintaining VirtualBox or macOS features 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.

Performance

After successfully creating a working macOS virtual machine, consider importing it into QEMU with KVM so it can use hardware passthrough for near-native performance. To use the same virtual machine disk image on VirtualBox and QEMU, choose the VMDK virtual disk image storage format before executing the script, or after macOS is installed convert the VDI file to a VMDK file. See documentation for further information. QEMU and KVM require additional configuration that is beyond the scope of the script.

Bootloaders

The macOS VirtualBox guest is loaded without extra bootloaders, but it is compatible with OpenCore. OpenCore requires additional configuration that is beyond the scope of the script.

Audio

macOS may not support any built-in VirtualBox audio controllers. The bootloader OpenCore 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.

FileVault

The VirtualBox EFI implementation does not properly load the FileVault full disk encryption password prompt upon boot. The bootloader OpenCore is able to load the password prompt with the parameter ProvideConsoleGop set to true. See sample config.plist.

Dependencies

All the dependencies should be available through a package manager:
bash coreutils gzip unzip wget xxd dmg2img virtualbox

  • VirtualBox≥6.1.6 with Extension Pack, though versions as low as 5.2 may work.
  • GNU Bash≥4.3, on Windows run through Cygwin or WSL.
  • GNU coreutils≥8.22, GNU gzip≥1.5, Info-ZIP unzip≥v6.0, GNU wget≥1.14, xxd≥1.7
  • dmg2img≥1.6.5, on Cygwin the package is not available through the package manager so the script downloads it automatically.

macos-virtualbox-clone's People

Contributors

bronson avatar deepio avatar jonathanweinberg avatar kiendang avatar myspaghetti avatar natecraddock avatar ricciardi-adrien avatar trikosuave avatar wesselvanderlinden avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

macos-virtualbox-clone's Issues

Control of file creation

Default the creation of the virtual disk(s) to where VBox is defaulting, as opposed to whatever current working directory is.

Then... perhaps in set_variables()...

  • Allow us to specify where to create the temp files
  • Allow us to specify a non-default location for the final-product vdisks
  • Allow us to request temp file cleanup after the machine is created

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.