explaingit

foxlet/macos-simple-kvm

13,913ShellAudience · developerComplexity · 4/5Setup · hard

TLDR

Scripts and step-by-step instructions for running macOS inside a virtual machine on a Linux computer using QEMU and KVM, without needing to own Apple hardware.

Mindmap

mindmap
  root((macOS Simple KVM))
    What it does
      Run macOS on Linux
      No Mac hardware needed
      QEMU and KVM based
    Setup Steps
      Run jumpstart.sh
      Create virtual disk
      Boot and install macOS
    Run Modes
      Standard desktop
      Virt-Manager GUI
      Headless VNC server
    Advanced Options
      GPU passthrough
      Bridged networking
      Sound support
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Run macOS on a Linux desktop to test Mac apps or use Mac-only software without buying Apple hardware.

USE CASE 2

Set up a headless macOS VM on a Linux server and connect to its display remotely via VNC.

USE CASE 3

Import the VM into Virt-Manager for graphical configuration including GPU passthrough and bridged networking.

USE CASE 4

Download and install a specific macOS version such as Catalina, Mojave, or High Sierra inside a virtual machine.

Tech stack

ShellQEMUKVMPythonVNC

Getting it running

Difficulty · hard Time to first run · 1h+

Requires a Linux host with KVM support, QEMU, and Python 3, the full macOS install inside the VM adds significant time before first use.

In plain English

This repository is a set of scripts and instructions for running Apple's macOS operating system inside a virtual machine on a Linux computer. A virtual machine is a fake computer that runs as a program on your real one, so you can boot a completely different operating system in a window without buying separate hardware. The tools here use QEMU, which is the software that creates the virtual machine, sped up by a Linux feature called KVM. The README points out that you do not need to own a Mac to do this. The project is documentation-led: most of the README is a numbered walkthrough. Before starting, you need a Linux system with QEMU, Python 3, and a few related packages, and the README gives the exact install command for several Linux distributions including Ubuntu, Arch, Fedora, and openSUSE. Step one runs a script called jumpstart.sh, which downloads the official macOS install files from the internet. By default it fetches the Catalina version, but you can ask for High Sierra or Mojave with a command-line flag. Step two creates an empty virtual hard disk with a chosen name and size using a tool called qemu-img, wires that disk into the provided basic.sh script, and then runs that script to boot the machine and install macOS, partitioning the disk first inside Apple's Disk Utility. There are two alternative paths for step two. One lets you import the setup into Virt-Manager, a graphical manager for virtual machines, for more configuration. The other, headless.sh, is for servers or cloud machines with no screen attached: it starts a VNC instance so you can connect to the virtual machine's display remotely, with memory, CPU count, and disk passed in as settings. Step three simply says you are done. For people who want to go further, the README points to a docs folder with separate guides on adding memory, setting up bridged networking, passing through real hardware such as a GPU, adjusting screen resolution, and enabling sound. The project also links to donation pages and an FAQ for newcomers.

Copy-paste prompts

Prompt 1
Walk me through setting up a macOS Catalina virtual machine on Ubuntu 22.04 using macos-simple-kvm, from cloning the repo to booting the installer.
Prompt 2
Help me configure GPU passthrough in my macos-simple-kvm virtual machine so it uses my real graphics card instead of a virtual one.
Prompt 3
How do I run macos-simple-kvm in headless mode using headless.sh and connect to it with a VNC client from another machine?
Prompt 4
Set up bridged networking in my macos-simple-kvm VM so it gets its own IP address on my local network.
Open on GitHub → Explain another repo

← foxlet on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.