This shows you all the steps to install a MacOS VM in Linux QEMU using Virtual Machine Manager or virt-manager.
Newer Source, but not as polished: https://github.com/kholia/OSX-KVM Mac KVM Repository: https://github.com/foxlet/macOS-Simple-KVM
grep -e vmx -e svm /proc/cpuinfo
)Install QEMU and modify your user using https://christitus.com/vm-setup-in-linux Guide.
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/foxlet/macOS-Simple-KVM
cd macOS-Simple-KVM
This downloads our installation media and I’d recommend using Catalina for compatibility and performance.
./jumpstart.sh --catalina
Note: Modern NVIDIA GPUs are supported on HighSierra but not on later versions of macOS. Recommended PCI Passthrough GPU is 5700XT as this works on Catalina and above. If you go with a 6000 Series Card only certain ones will work on Big Sur and Monterey, but not earlier releases.
I recommend using Virtual Machine Manager (virt-manager) as it has a fantastic interface and Simple-KVM does a great job with their setup script. Simply type the following to get the macOS VM setup:
sudo ./make.sh --add
Before we can start out VM we have to have a hard drive to load it. You have two options: physical hard drive passthrough or qcow2 file.
Obviously, the physical drive is considerably faster, but not possible in some instances such as laptops or if you can’t afford a secondary drive.
This is pretty simple as you just click Add Hardware -> Storage and then specify your hard drive.
Note: while you can use drive short names /dev/sda
I’d recommend using /dev/disk/by-id/HARDDRIVESERIAL
as this doesn’t ever change.
This is even simpler as you just click Add Hardware -> Storage and create new file. Just make sure you put it on at least a SSD or a nvme drive as it will be super slow if you don’t.
Boot your machine and select the OS Install Partition on startup.
Use the Disk Utility
tool within the macOS installer to partition, and
format the virtual disk attached to the macOS VM.
TIP: Using a non-APFS filesystem is recommended.
Go ahead, and install macOS
First find your card interface name
ip a
Example: (Interface name is enp7s0)
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp7s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
link/ether 24:bb:ee:55:22:33 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.99/24 brd 10.0.0.255 scope global
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
Second Update /etc/network/interfaces
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface - old entry
# allow-hotplug enp7s0
# iface enp7s0 inet dhcp
# The primary network interface - new entry
# DEVICENAME = enp7so for this pc and MYUSERNAME need to be $(whoami)
auto br0
iface br0 inet dhcp
bridge_ports DEVICENAME tap0
auto tap0
iface tap0 inet dhcp
pre-up tunctl -u MYUSERNAME -t tap0
Lastly Restart the networking service or reboot computer. Then change your VM NIC (Network Hardware) to br0
interface.
sudo systemctl restart networking