diff --git a/01-Installation.md b/01-Installation.md index 162ff47..8b90d20 100644 --- a/01-Installation.md +++ b/01-Installation.md @@ -129,9 +129,11 @@ requirements manually: - [curl](https://curl.se/) - [EDK II](https://github.com/tianocore/edk2) - [gawk](https://www.gnu.org/software/gawk/) +- [gptfdisk](https://www.rodsbooks.com/gdisk/) (*for macOS VM creation*) - [grep](https://www.gnu.org/software/grep/) - [glxinfo](https://gitlab.freedesktop.org/mesa/demos) - [jq](https://stedolan.github.io/jq/) +- [mtools](https://www.gnu.org/software/mtools/) (*for macOS VM creation*) - [pciutils](https://github.com/pciutils/pciutils) - [procps](https://gitlab.com/procps-ng/procps) - [python3](https://www.python.org/) @@ -155,7 +157,7 @@ These should be handled by dependencies in Trixie and later. For earlier version ``` shell -sudo apt-get install bash coreutils curl genisoimage grep jq mesa-utils ovmf pciutils procps python3 qemu sed socat spice-client-gtk swtpm-tools unzip usbutils util-linux uuidgen-runtime xdg-user-dirs xrandr zsync +sudo apt-get install bash coreutils curl gdisk genisoimage grep jq mesa-utils mtools ovmf pciutils procps python3 qemu sed socat spice-client-gtk swtpm-tools unzip usbutils util-linux uuidgen-runtime xdg-user-dirs xrandr zsync ``` ### Install requirements on Fedora @@ -166,7 +168,7 @@ These are handled natively for Fedora 41 on. For earlier versions: # it may be needed to add additional installation sources to obtain some packages # for example zsync is no longer in the fedora repo, but can be obtained from copr #sudo dnf copr enable elxreno/zsync -y -sudo dnf install bash coreutils curl edk2-tools genisoimage grep jq mesa-demos pciutils procps python3 qemu sed socat spice-gtk-tools swtpm unzip usbutils util-linux xdg-user-dirs xrandr zsync +sudo dnf install bash coreutils curl edk2-tools gdisk genisoimage grep jq mesa-demos mtools pciutils procps python3 qemu sed socat spice-gtk-tools swtpm unzip usbutils util-linux xdg-user-dirs xrandr zsync ``` ### Install requirements on Gentoo @@ -181,8 +183,10 @@ sudo emerge --ask --noreplace app-emulation/qemu \ sys-firmware/edk2-ovmf-bin \ sys-apps/gawk \ sys-apps/grep \ + sys-block/gptfdisk \ x11-apps/mesa-progs \ app-misc/jq \ + sys-fs/mtools \ sys-apps/pciutils \ sys-process/procps \ app-cdr/cdrtools \ diff --git a/03-Create-macOS-virtual-machines.md b/03-Create-macOS-virtual-machines.md index 62d2d56..95a3eb0 100644 --- a/03-Create-macOS-virtual-machines.md +++ b/03-Create-macOS-virtual-machines.md @@ -13,6 +13,37 @@ quickemu --vm macos-big-sur.conf macOS `mojave`, `catalina`, `big-sur`, `monterey`, `ventura` and `sonoma` are supported. +# OpenCore bootloader + +macOS VMs require [OpenCore](https://github.com/acidanthera/OpenCorePkg) as a bootloader. Quickemu handles this automatically, but the implementation differs depending on when your VM was created. + +## Integrated OpenCore (new default) + +New macOS VMs use **integrated OpenCore**, where the bootloader is embedded directly in the EFI partition of `disk.qcow2`. This approach: + +- Creates a single disk image instead of two +- Simplifies VM management and backups +- Boots directly from the main disk + +This requires `mtools` and `gptfdisk` on your system. If these are missing, `quickget` automatically falls back to the legacy method. + +## Legacy OpenCore (separate disk) + +VMs created before this change use a separate `OpenCore.qcow2` file that chainloads macOS from the main disk. This results in two disk images: + +- `OpenCore.qcow2` - bootloader disk +- `disk.qcow2` - macOS system disk + +**Existing VMs continue to work unchanged.** Quickemu automatically detects which method to use based on whether `OpenCore.qcow2` exists in the VM directory. + +## Using the legacy method for new VMs + +If you need the legacy two-disk setup for a new VM: + +1. Download `OpenCore.qcow2` from [OSX-KVM](https://github.com/kholia/OSX-KVM) +2. Place it in your VM directory before running `quickget` +3. `quickget` will detect the existing file and skip integrated OpenCore creation + - Use cursor keys and enter key to select the **macOS Base System** - From **macOS Utilities** - Click **Disk Utility** and **Continue** @@ -106,7 +137,8 @@ There are some considerations when running macOS via Quickemu. - Monterey - Ventura - Sonoma -- `quickemu` will automatically download the required [OpenCore](https://github.com/acidanthera/OpenCorePkg) bootloader and OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM). +- `quickget` creates macOS VMs with integrated OpenCore by default (requires `mtools` and `gptfdisk`) +- `quickemu` will automatically download the required [OpenCore](https://github.com/acidanthera/OpenCorePkg) bootloader and OVMF firmware from [OSX-KVM](https://github.com/kholia/OSX-KVM) when using the legacy method. - Optimised by default, but no GPU acceleration is available. - Host CPU vendor is detected and guest CPU is optimised accordingly. - [VirtIO Block Media](https://www.kraxel.org/blog/2019/06/macos-qemu-guest/) is used for the system disk where supported.