HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
kholia
OSX-KVM
Shell2016–2026
kholia / OSX-KVM

OSX-KVM

Run macOS on QEMU/KVM. With OpenCore + Monterey + Ventura + Sonoma support now! Only commercial (paid) support is available now to avoid spammy issues. No Mac system is required.

67Distinct people
75Mentions
0Explicit recommenders
23.8KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Run macOS on QEMU/KVM. With OpenCore + Monterey + Ventura + Sonoma support now! Only commercial (paid) support is available now to avoid spammy issues. No Mac system is required.

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year75 dated mentions

Observed mentions: 2016-09-22 13:20:40 UTC to 2026-04-21 21:21:42 UTC.

0510152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments20162017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 16 mentions; 1 submissions, 15 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 16 mentions; 2 submissions, 14 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC615
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC303
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC716
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC303
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC16115
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC16214
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC707
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC606
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC615
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC303
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC202

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Note This README.md documents the process of creating a Virtual Hackintosh system. Note: All blobs and resources included in this repository are re-derivable (all instructions are included!). 💚 Looking for commercial support with this stuff? I am available over email for a chat for commercial support options only. Note: Project sponsors get access to the Private OSX-KVM repository, and direct support. Struggling with Content Caching stuff? We can help. Working with Proxmox and macOS: See Nick's blog for sure Here’s a more up-to-date version for Proxmox OpenCore-ISO Yes, we support offline macOS installations now - see this document 🎉 Contributing Back This project can always use your help, time and attention. I am looking for help (pull-requests!) with the following work items: Documentation around running macOS on popular cloud providers (Hetzner, GCP, AWS). See the Is This Legal? section and associated references. Document (share) how you use this project to build + test open-source projects / get your stuff done. Document how to use this project for XNU kernel debugging and development. Document the process to launch a bunch of headless macOS VMs (build farm). Document usage of munki to deploy software to such a build farm. Enable VNC + SSH support out of the box or more easily. Robustness improvements are always welcome! (Not so) crazy idea - automate the macOS installation via OpenCV. Requirements A modern Linux distribution. E.g. Ubuntu 24.04 LTS 64-bit or later. QEMU >= 8.2.2 A CPU with Intel VT-x / AMD SVM support is required (grep -e vmx -e svm /proc/cpuinfo) A CPU with SSE4.1 support is required for >= macOS Sierra A CPU with AVX2 support is required for >= macOS Ventura Note: Older AMD CPU(s) are known to be problematic but modern AMD Ryzen processors work just fine (even for macOS Sonoma). Installation Preparation Install QEMU and other packages. sudo apt-get install qemu-system uml-utilities virt-manager git \ wget libguestfs-tools p7zip-full make dmg2img tesseract-ocr \ tesseract-ocr-eng genisoimage vim net-tools screen -y This step may need to be adapted for your Linux distribution. Clone this repository on your QEMU system. Files from this repository are used in the following steps. cd ~ git clone --depth 1 --recursive https://github.com/kholia/OSX-KVM.git cd OSX-KVM Repository updates can be pulled via the following command: git pull --rebase This repository uses rebase based workflows heavily. KVM may need the following tweak on the host machine to work. sudo modprobe kvm; echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs To make this change permanent, you may use the following command. Use lscpu if you are not sure. sudo cp kvm.conf /etc/modprobe.d/kvm.conf # for intel boxes only sudo cp kvm_amd.conf /etc/modprobe.d/kvm.conf # for amd boxes only Add user to the kvm and libvirt groups (might be needed). sudo usermod -aG kvm $(whoami) sudo usermod -aG libvirt $(whoami) sudo usermod -aG input $(whoami) Note: Re-login after executing this command. Fetch macOS installer. ./fetch-macOS-v2.py You can choose your desired macOS version here. After executing this step, you should have the BaseSystem.dmg file in the current folder. ATTENTION: Let >= Big Sur setup sit at the Country Selection screen, and other similar places for a while if things are being slow. The initial macOS setup wizard will eventually succeed. Sample run: $ ./fetch-macOS-v2.py 1. High Sierra (10.13) 2. Mojave (10.14) 3. Catalina (10.15) 4. Big Sur (11.7) 5. Monterey (12.6) 6. Ventura (13) 7. Sonoma (14) - RECOMMENDED 8. Sequoia (15) 9. Tahoe (26) Choose a product to download (1-9): 7 Note: Modern NVIDIA GPUs are supported on HighSierra but not on later versions of macOS. Convert the downloaded BaseSystem.dmg file into the BaseSystem.img file. dmg2img -i BaseSystem.dmg BaseSystem.img Create a virtual HDD image where macOS will be installed. If you change the name of the disk image from mac_hdd_ng.img to something else, the boot scripts will need to be updated to point to the new image name. qemu-img create -f qcow2 mac_hdd_ng.img 256G NOTE: Create this HDD image file on a fast SSD/NVMe disk for best results. Now you are ready to install macOS 🚀 Installation CLI method (primary). Just run the OpenCore-Boot.sh script to start the installation process. ./OpenCore-Boot.sh Note: This same script works for all recent macOS versions. Use the Disk Utility tool within the macOS installer to partition, and format the virtual disk attached to the macOS VM. Use APFS (the default) for modern macOS versions. Go ahead, and install macOS 🙌 (OPTIONAL) Use this macOS VM disk with libvirt (virt-manager / virsh stuff). Edit macOS-libvirt-Catalina.xml file and change the various file paths (search for CHANGEME strings in that file). The following command should do the trick usually. sed "s/CHANGEME/$USER/g" macOS-libvirt-Catalina.xml > macOS.xml virt-xml-validate macOS.xml Create a VM by running the following command. virsh --connect qemu:///system define macOS.xml If needed, grant necessary permissions to libvirt-qemu user, sudo setfacl -m u:libvirt-qemu:rx /home/$USER sudo setfacl -R -m u:libvirt-qemu:rx /home/$USER/OSX-KVM Launch virt-manager and start the macOS virtual machine. Headless macOS Use the provided boot-macOS-headless.sh script. ./boot-macOS-headless.sh Setting Expectations Right Nice job on setting up a Virtual Hackintosh system! Such a system can be used for a variety of purposes (e.g. software builds, testing, reversing work), and it may be all you need, along with some tweaks documented in this repository. However, such a system lacks graphical acceleration, a reliable sound sub-system, USB 3 functionality and other similar things. To enable these things, take a look at our notes. We would like to resume our testing and documentation work around this area. Please reach out to us if you are able to fund
Read the full README on GitHub

What Hacker News says

75 sources
I used Kholia's scripts[1] on Qemu with Virsh. I didn't have much trouble other than some SELinux permission issues which I resolved quickly. iCloud/imessage have always been finicky with Hackintosh, but in my experience setting the correct serial number with appropriate Mac model is the key to resolve those issues. With just couple of years of Hackintosh scene left before support for x86 Macs are dropped completely, a VM Hackintosh makes more sense to me than building a physical Hackintosh. [1]https://github.com/kholia/OSX-KVM
In Developing inside a virtual machine
Yes, I recently had to compile some stuff on Windows (I'm on an AMD Linux host) and VirtualBox just wouldn't start Microsoft's Windows dev VM (the one they provide for free for Virtualbox). I ended up learning how to use qemu and it works great...and as a bonus I was able to run a hackintosh (via https://github.com/kholia/OSX-KVM) and it works near flawlessly, which was something I was never able to accomplish with Virtualbox (granted I haven't tried in a few years). I'm pretty happy with Qemu now, even if it's jsut a CLI interface. I was tempted to try the virt-* stuff, but honestly it seems like one more thing to learn so I'm going to hold off until I need something like copy/paste between VMs and can't figure it out in qemu direct.
In VirtualBox KVM Public Release
VirGL is definitely an interesting project, but all one has to do to get GPU passthrough working (from a Linux QEMU host to any guest OS) is: 1.) research a cheap, secondary GPU that is natively supported by the guest OS, 2.) plug such a secondary GPU into a PCIe slot on the host and hook it up to the primary monitor with a secondary cable (D-Sub vs. DVI, etc.), 3.) setup Linux to ignore the secondary GPU at boot and configure a QEMU VM for the GPU passthrough. The whole process takes perhaps [edit: "a few"] hours and as works flawlessly, with no stability issues [edit: "at least with Asus motherboards"]. (Switching across the two GPU cables can be accomplished in software by using Display Data Channel /DDC/ utilities and switching keyboard/mouse can be accomplished by using evdev /event device/ passthrough.) More information: https://git
Read the rest
In VirGL – A virtual 3D GPU for use inside QEMU virtual machines

Showing the 15 most recent of 75 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.