OSX-KVM: Difference between revisions

imported>Onny
mNo edit summary
Updated instructions for running; add alternative to fork with flake, since it is behind upstream.
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
[https://github.com/kholia/OSX-KVM OSX-KVM] allows to run macOS on Linux machines.
The [https://github.com/kholia/OSX-KVM OSX-KVM] project provides a quick method of running macOS on Linux machines.


== Installation ==
== Installation ==
Line 21: Line 21:


== Usage ==
== Usage ==
Jonas Heinrich (GitHub user @onny) created a fork of the OSX-KVM repository with a flake. You can clone the fork and simply <code>nix run</code>, or, since the fork is several commits behind the original repo, you can complete the steps manually (see below), or copy the flake.nix to a clone of the original repo.


{{Note|This instruction uses a custom fork of OSX-KVM with Nix Flake support. Hopefully these changes will soon be merged to the upstream repository.}}
For the forked repo, git clone and run <code>nix run</code> to prepare and run a macOS system:<syntaxhighlight lang="bash">git clone -b flake https://github.com/onny/OSX-KVM.git
cd OSX-KVM
nix run</syntaxhighlight>
 
Alternatively, clone the original repo, https://github.com/kholia/OSX-KVM. Then, copy over @onny's flake and <code>nix run</code>, or run the following manually. You will need the <code>python3</code> and <code>qemu</code> packages.<syntaxhighlight lang="bash">
# to fetch BaseSystem.dmg
python ./fetch-macOS-v2.py
 
# to convert BaseSystem.dmg to BaseSystem.img
qemu-img convert BaseSystem.dmg -O raw BaseSystem.img


Git clone the project repository and run <code>nix run</code> to prepare and run your MacOS system
# to create virtual hard drive image file mac_hdd_ng.img
qemu-img create -f qcow2 mac_hdd_ng.img 128G


<syntaxHighlight lang=bash>
# run launch script
git clone -b flake https://github.com/onny/OSX-KVM.git
# this runs qemu-system-x86_64 with the necessary arguments
cd OSX-KVM
source ./OpenCore-Boot.sh
nix run
</syntaxhighlight>In all cases, you can adjust the CPU count, memory, or other options in <code>./OpenCore-Boot.sh</code>. Currently (commit [https://github.com/kholia/OSX-KVM/tree/da4b23b5e92c5b939568700034367e8b7649fe90 da4b23b]), the script [https://github.com/kholia/OSX-KVM/blob/da4b23b5e92c5b939568700034367e8b7649fe90/OpenCore-Boot.sh#L16 recommends changing the CPU to <code>Haswell-noTSX</code> for macOS Sonoma].
</syntaxHighlight>


You may also want to adjust the cpu count/memory in <code>./OpenCore-Boot.sh</code> if your systems resources allow it.
On the first run, QEMU will boot into the macOS recovery image. From the boot menu, select the macOS Disk Utility and erase / format the virtual hard drive that will be used for installation (find the one with the same size as created in the script, 128GB by default).


On the first run, from the boot menu, select disk utilities and erase / format the Qemu disk that will be used for installation. Then choose the installer from the boot menu. Select the previously created disk image as install target.
Then choose the (re-)installer from the boot menu and select the previously created disk image as the installation target. This will then download the full image of the selected macOS version.


On the next boot you will a new boot entry containing the actual installation.
On the next boot, you will see a new boot entry containing the actual installation.


== See also ==
== See also ==


* [https://github.com/ngi-nix/OSX-KVM ngi-nix/OSX-KVM]: This implementation is based on [https://github.com/foxlet/macOS-Simple-KVM macOS-Simple-KVM], and may not be as complete or polished as [https://github.com/kholia/OSX-KVM kholia/OSX-KVM]. Usage instructions are available in the repository README.
* [https://github.com/ngi-nix/OSX-KVM ngi-nix/OSX-KVM]: This implementation is based on [https://github.com/foxlet/macOS-Simple-KVM macOS-Simple-KVM], and may not be as complete or polished as [https://github.com/kholia/OSX-KVM kholia/OSX-KVM]. Usage instructions are available in the repository README.
[[Category:Virtualization]]