Difference between revisions of "OSX-KVM"

From NixOS Wiki
Jump to: navigation, search
m (Add details about erase/formatting of Qemu disk)
m (rollback unauthorized mass edits)
Tag: Rollback
 
(8 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
[https://github.com/kholia/OSX-KVM OSX-KVM] allows to run macOS on Linux machines.
 
[https://github.com/kholia/OSX-KVM OSX-KVM] allows to run macOS on Linux machines.
  
Use the following <code>shell.nix</code> to get all the tools required to boot OSX-KVM:
+
== Installation ==
  
<syntaxHighlight lang=nix>
+
Enable virtualisation support in your system configuration by adding following lines
with import <nixpkgs> {};
 
mkShell {
 
  buildInputs = [
 
    qemu
 
    python3
 
    iproute2
 
  ];
 
}
 
</syntaxHighlight>
 
 
 
On NixOS also add the following lines to your <code>configuration.nix</code>:
 
  
 
<syntaxHighlight lang=nix>
 
<syntaxHighlight lang=nix>
 
{
 
{
  # this is needed to get a bridge with DHCP enabled
 
 
   virtualisation.libvirtd.enable = true;
 
   virtualisation.libvirtd.enable = true;
  # Replace <youruser> with your actual username.
+
   users.extraUsers.youruser.extraGroups = [ "libvirtd" ];
   users.extraUsers.<youruser>.extraGroups = [ "libvirtd" ];
 
  
  # reboot your computer after adding those lines
 
 
   boot.extraModprobeConfig = ''
 
   boot.extraModprobeConfig = ''
 
     options kvm_intel nested=1
 
     options kvm_intel nested=1
Line 32: Line 18:
 
</syntaxHighlight>
 
</syntaxHighlight>
  
After using cloning the repository use <code>./fetch-macOS.py</code> as described in the README
+
Replace <code>youruser</code> with the user name of your running system. After applying the configuration, reboot your system so the changes to the kernel modules can take effect.
to download macOS
 
Than do:
 
 
 
<syntaxHighlight lang=console>
 
$ qemu-img convert BaseSystem.dmg -O raw BaseSystem.img
 
</syntaxHighlight>
 
 
 
to create the base image containing the macOS installer, followed by creating
 
your actual disk image where later the macOS will be installed to:
 
 
 
<syntaxHighlight lang=console>
 
$ qemu-img create -f qcow2 mac_hdd_ng.img 128G
 
</syntaxHighlight>
 
  
Last but not least configure a tap interface that will be used in macOS for networking:
+
== Usage ==
  
<syntaxHighlight lang=console>
+
{{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.}}
$ sudo ip tuntap add dev tap0 mode tap
 
$ sudo ip link set tap0 up promisc on
 
$ sudo ip link set dev virbr0 up
 
$ sudo ip link set dev tap0 master virbr0
 
</syntaxHighlight>
 
  
Then boot the system with:
+
Git clone the project repository and run <code>nix run</code> to prepare and run your MacOS system
  
<syntaxHighlight lang=console>
+
<syntaxHighlight lang=bash>
$ ./OpenCore-Boot.sh
+
git clone -b flake https://github.com/onny/OSX-KVM.git
 +
cd OSX-KVM
 +
nix run
 
</syntaxHighlight>
 
</syntaxHighlight>
  
You may also want to adjust the increase cpu count/memory in <code>./OpenCore-Boot.sh</code> if your systems resources allows it.
+
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, 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.
 
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.
  
 
On the next boot you will a new boot entry containing the actual installation.
 
On the next boot you will a new boot entry containing the actual installation.
 +
 +
== 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.

Latest revision as of 11:02, 6 April 2024

OSX-KVM allows to run macOS on Linux machines.

Installation

Enable virtualisation support in your system configuration by adding following lines

{
  virtualisation.libvirtd.enable = true;
  users.extraUsers.youruser.extraGroups = [ "libvirtd" ];

  boot.extraModprobeConfig = ''
    options kvm_intel nested=1
    options kvm_intel emulate_invalid_guest_state=0
    options kvm ignore_msrs=1
  '';
}

Replace youruser with the user name of your running system. After applying the configuration, reboot your system so the changes to the kernel modules can take effect.

Usage

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.

Git clone the project repository and run nix run to prepare and run your MacOS system

git clone -b flake https://github.com/onny/OSX-KVM.git
cd OSX-KVM
nix run

You may also want to adjust the cpu count/memory in ./OpenCore-Boot.sh if your systems resources allow it.

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.

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

See also