1
0
Fork 0
mirror of https://github.com/foxlet/macOS-Simple-KVM.git synced 2025-02-17 05:25:02 +01:00
macOS-Simple-KVM/README.md

69 lines
3.1 KiB
Markdown
Raw Normal View History

2019-04-22 03:25:21 -04:00
# macOS-Simple-KVM
2020-05-03 22:05:36 +02:00
2019-04-30 17:48:10 -04:00
Documentation to set up a simple macOS VM in QEMU, accelerated by KVM.
2019-04-22 18:08:10 -04:00
2019-10-30 03:11:31 -04:00
By [@FoxletFox](https://twitter.com/foxletfox), and the help of many others. Find this useful? You can donate [on Coinbase](https://commerce.coinbase.com/checkout/96dc5777-0abf-437d-a9b5-a78ae2c4c227) or [Paypal!](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=QFXXKKAB2B9MA&item_name=macOS-Simple-KVM).
New to macOS and KVM? Check [the FAQs.](docs/FAQs.md)
2019-05-11 17:25:09 -04:00
2019-05-10 14:07:24 -04:00
## Getting Started
2020-05-03 22:05:36 +02:00
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:
2019-06-06 19:53:57 -04:00
2020-05-03 22:05:36 +02:00
```bash
sudo apt-get install qemu-system qemu-utils python3 python3-pip # for Ubuntu, Debian, Mint, and PopOS.
sudo pacman -S qemu python python-pip # 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
2019-09-25 10:03:51 +10:00
sudo dnf install qemu qemu-img python3 python3-pip # for Fedora
2019-06-06 19:53:57 -04:00
```
2019-04-25 16:57:52 -04:00
2019-04-22 18:08:10 -04:00
## Step 1
2020-05-03 22:05:36 +02:00
2019-06-06 19:53:57 -04:00
Run `jumpstart.sh` to download installation media for macOS (internet required). The default installation uses Catalina, but you can choose which version to get by adding either `--high-sierra`, `--mojave`, or `--catalina`. For example:
2020-05-03 22:05:36 +02:00
```bash
2019-06-06 19:53:57 -04:00
./jumpstart.sh --mojave
```
2020-05-03 22:05:36 +02:00
2019-05-11 17:32:56 -04:00
> Note: You can skip this if you already have `BaseSystem.img` downloaded. If you have `BaseSystem.dmg`, you will need to convert it with the `dmg2img` tool.
2019-04-22 18:08:10 -04:00
2020-05-03 22:05:36 +02:00
## Step 2a
2019-05-10 14:07:24 -04:00
Create an empty hard disk using `qemu-img`, changing the name and size to preference:
2020-05-03 22:05:36 +02:00
```bash
qemu-img create -f qcow2 MyDisk.qcow2 64G
```
2019-05-10 14:07:24 -04:00
and add it to the end of `basic.sh`:
2020-05-03 22:05:36 +02:00
```bash
-drive id=SystemDisk,if=none,file=MyDisk.qcow2 \
-device ide-hd,bus=sata.4,drive=SystemDisk \
```
2020-05-03 22:05:36 +02:00
> **Note**: If you're running on a headless system (such as on Cloud providers), you will need `-nographic` and `-vnc :0 -k en-us` for VNC support.
2019-06-19 16:08:54 -04:00
Then run `basic.sh` to start the machine and install macOS. Remember to partition in Disk Utility first!
2019-04-22 18:08:10 -04:00
2020-05-03 22:05:36 +02:00
## Step 2b (GNOME Boxes and Virtual Machine Manager)
If instead of QEMU, you'd like to import the setup into GNOME Boxes or Virt-Manager for convenience or for further configuration, just run `./make.sh --install` or the shorter `./make.sh -i`.
No root is needed because images will be installed in your home, with any other your Boxes virtual machine.
## Step 2c (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.
2020-05-03 22:05:36 +02:00
```bash
HEADLESS=1 MEM=1G CPUS=2 SYSTEM_DISK=MyDisk.qcow2 ./headless.sh
```
2019-05-10 14:07:24 -04:00
2019-04-22 18:08:10 -04:00
## Step 3
2019-04-30 17:48:10 -04:00
2020-05-03 22:05:36 +02:00
**You're done!**
2019-04-30 17:48:10 -04:00
2019-09-18 12:08:19 +02:00
To fine-tune the system and improve performance, look in the `docs` folder for more information on [adding memory](docs/guide-performance.md), setting up [bridged networking](docs/guide-networking.md), adding [passthrough hardware (for GPUs)](docs/guide-passthrough.md), tweaking [screen resolution](docs/guide-screen-resolution.md), and enabling sound features.