1
0
Fork 0
mirror of https://github.com/foxlet/macOS-Simple-KVM.git synced 2024-11-16 16:19:41 +01:00
No description
Find a file
2021-12-13 07:27:26 -05:00
.github [DOCS] Github Sponsors. 2019-11-15 16:27:57 -05:00
docs [DOCS] Update guide-networking.md (#108) 2020-07-23 01:37:42 -04:00
firmware [FIRMWARE] Set default vars to 1280x720. 2019-05-06 03:29:38 -04:00
tools [TOOLS] Fix version fetching. 2019-10-30 00:25:30 -04:00
.gitignore Add tools, jumpstart, and firmware. 2019-04-22 23:20:12 -04:00
.gitmodules [TOOLS] Add dmg2img source submodule. 2019-07-30 22:16:43 -04:00
basic.sh Update basic.sh 2021-12-10 15:24:40 -05:00
ESP.qcow2 Update ESP.qcow2 2021-12-10 15:28:03 -05:00
fetch-macOS-v2.py Set executable perms 2021-12-10 17:36:14 -05:00
headless.sh [CONF] fixes from shellcheck 2019-07-30 22:22:53 -04:00
jumpstart.sh [TOOLS] Fix version fetching. 2019-10-30 00:25:30 -04:00
make.sh [CONF] fixes from shellcheck 2019-07-30 22:22:53 -04:00
README.md Update README.md 2021-12-12 12:03:26 -05:00
setup.sh Update setup.sh 2021-12-13 07:27:26 -05:00
virtio.sh [CONF] fixes from shellcheck 2019-07-30 22:22:53 -04:00

macOS-Simple-KVM

Documentation to set up a simple macOS VM in QEMU, accelerated by KVM.

By @FoxletFox, and the help of many others. Find this useful? You can donate on Coinbase or Paypal!.

New to macOS and KVM? Check the FAQs.

OneClick Method

Run sudo ./setup.sh to make the VM. Monterey may not work. Once the VM boots up, just hit enter even if you don't see anything (do this every boot) Then format the biggest drive as macOS Extended Journaled, Then go to reinstall macOS and install it to the newly formatted hard drive.

Once installed, run run ./basic.sh to boot up the VM again. Do not run ./setup.sh twice if the install was succesful, as it will redownload the image and that is not needed.

You're done!

To fine-tune the system and improve performance, look in the docs folder for more information on adding memory, setting up bridged networking, adding passthrough hardware (for GPUs), tweaking screen resolution, and enabling sound features.

Manual method (for other distros that aren't debian based)

Getting Started

You'll need a Linux system with qemu (3.1 or later), python3, pip and the KVM modules enabled. A Mac is not required. Some examples for different distributions:

sudo apt-get install qemu-system qemu-utils python3 python3-pip  # for Ubuntu, Debian, Mint, and PopOS.
sudo pacman -S qemu python python-pip python-wheel  # for Arch.
sudo xbps-install -Su qemu python3 python3-pip   # for Void Linux.
sudo zypper in qemu-tools qemu-kvm qemu-x86 qemu-audio-pa python3-pip  # for openSUSE Tumbleweed
sudo dnf install qemu qemu-img python3 python3-pip # for Fedora
sudo emerge -a qemu python:3.4 pip # for Gentoo

Step 1

Run fetch-macOS-v2.py to download installation media for macOS (internet required).

./fetch-macOS-v2.py

Then run

qemu-img convert BaseSystem.dmg -O raw BaseSystem.img

Step 2

Create an empty hard disk using qemu-img, changing the name and size to preference:

qemu-img create -f qcow2 macOS.qcow2 64G

if you change the drive name, change the line below according to the new name in basic.sh:

    -drive id=SystemDisk,if=none,file=macOS.qcow2 \

Note: If you're running on a headless system (such as on Cloud providers), you will need -nographic and -vnc :0 -k en-us to the end of basic.sh for VNC support.

Then run basic.sh to start the machine and install macOS. Remember to partition in Disk Utility first! (macOS extended journaled)

Step 2a (Virtual Machine Manager)

  1. If instead of QEMU, you'd like to import the setup into Virt-Manager for further configuration, just run sudo ./make.sh --add.
  2. After running the above command, add macOS.qcow2 as storage in the properties of the newly added entry for VM.

Step 2b (Headless Systems)

If you're using a cloud-based/headless system, you can use headless.sh to set up a quick VNC instance. Settings are defined through variables as seen in the following example. VNC will start on port 5900 by default.

HEADLESS=1 MEM=1G CPUS=2 SYSTEM_DISK=MyDisk.qcow2 ./headless.sh

Step 3

You're done!

To fine-tune the system and improve performance, look in the docs folder for more information on adding memory, setting up bridged networking, adding passthrough hardware (for GPUs), tweaking screen resolution, and enabling sound features.