forked from kholia/OSX-KVM
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Changes: - Update to OpenCore 0.9.1 - Switch around the emulated video device (required for Ventura) - Change default resolution to 1920x1080 - Include ventura in shortname CLI help - Add notes on 'bridged networking' - Better networking documentation (thomaspaulb) - Support for offline installations (kwadwokyeremeh)
- Loading branch information
Showing
69 changed files
with
326 additions
and
167 deletions.
There are no files selected for viewing
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
OpenCore |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
Disabled |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,9 +9,11 @@ instructions are included!). | |
:green_heart: Looking for **commercial** support with this stuff? I am [available | ||
over email](mailto:[email protected]?subject=[GitHub]%20OSX-KVM%20Commercial%20Support%20Request&body=Hi%20-%20We%20are%20interested%20in%20purchasing%20commercial%20support%20options%20for%20your%20project.) 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](https://www.nicksherlock.com/). | ||
|
||
Yes, we support offline macOS installations now 🎉 | ||
Yes, we support offline macOS installations now - see [this document](./run_offline.md) 🎉 | ||
|
||
|
||
### Contributing Back | ||
|
@@ -51,43 +53,22 @@ help (pull-requests!) with the following work items: | |
|
||
* A CPU with AVX2 support is required for >= macOS Mojave | ||
|
||
Note: Older AMD CPU(s) are known to be problematic. AMD FX-8350 works but | ||
Phenom II X3 720 does not. Ryzen processors work just fine. | ||
Note: Older AMD CPU(s) are known to be problematic but modern AMD Ryzen | ||
processors work just fine. | ||
|
||
|
||
### Installation Preparation | ||
|
||
* KVM may need the following tweak on the host machine to work. | ||
|
||
``` | ||
echo 1 | sudo tee /sys/module/kvm/parameters/ignore_msrs | ||
``` | ||
|
||
To make this change permanent, you may use the following command. | ||
|
||
``` | ||
sudo cp kvm.conf /etc/modprobe.d/kvm.conf # for intel boxes only, after cloning the repo below | ||
``` | ||
|
||
* Install QEMU and other packages. | ||
|
||
``` | ||
sudo apt-get install qemu uml-utilities virt-manager git \ | ||
wget libguestfs-tools p7zip-full make dmg2img -y | ||
wget libguestfs-tools p7zip-full make dmg2img tesseract-ocr \ | ||
tesseract-ocr-eng genisoimage -y | ||
``` | ||
|
||
This step may need to be adapted for your Linux distribution. | ||
|
||
* 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. | ||
|
||
* Clone this repository on your QEMU system. Files from this repository are | ||
used in the following steps. | ||
|
||
|
@@ -107,6 +88,30 @@ Phenom II X3 720 does not. Ryzen processors work just fine. | |
|
||
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. | ||
|
||
``` | ||
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. | ||
|
||
``` | ||
|
@@ -127,9 +132,9 @@ Phenom II X3 720 does not. Ryzen processors work just fine. | |
1. High Sierra (10.13) | ||
2. Mojave (10.14) | ||
3. Catalina (10.15) | ||
4. Big Sur (11.7) - RECOMMENDED | ||
4. Big Sur (11.7) | ||
5. Monterey (12.6) | ||
6. Ventura (13) | ||
6. Ventura (13) - RECOMMENDED | ||
Choose a product to download (1-6): 4 | ||
``` | ||
|
@@ -165,7 +170,7 @@ Phenom II X3 720 does not. Ryzen processors work just fine. | |
./OpenCore-Boot.sh | ||
``` | ||
|
||
Note: This same script works for Big Sur, Catalina, Mojave, and High Sierra. | ||
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. | ||
|
@@ -202,6 +207,15 @@ Phenom II X3 720 does not. Ryzen processors work just fine. | |
- Launch `virt-manager` and start the `macOS` virtual machine. | ||
### Headless macOS | ||
- Use the provided [boot-macOS-headless.sh](./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 | ||
|
@@ -220,24 +234,7 @@ work, patience, and a bit of luck (perhaps?). | |
### Post-Installation | ||
* See [networking notes](networking-qemu-kvm-howto.txt) to setup guest networking. | ||
I have the following commands present in `/etc/rc.local`. | ||
``` | ||
#!/usr/bin/env bash | ||
|
||
sudo ip tuntap add dev tap0 mode tap | ||
sudo ip link set tap0 up promisc on | ||
sudo ip link set dev virbr0 up | ||
sudo ip link set dev tap0 master virbr0 | ||
``` | ||
This has been enough for me so far. | ||
Note: You may need to enable the `rc.local` functionality manually on modern | ||
Ubuntu versions. Check out the [notes](notes.md) included in this repository | ||
for details. | ||
* See [networking notes](networking-qemu-kvm-howto.txt) on how to setup networking in your VM, outbound and also inbound for remote access to your VM via SSH, VNC, etc. | ||
* To passthrough GPUs and other devices, see [these notes](notes.md#gpu-passthrough-notes). | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
allow virbr0 | ||
allow br0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
#!/usr/bin/env bash | ||
|
||
# https://learn.microsoft.com/en-us/xamarin/ios/get-started/installation/windows/connecting-to-mac/ | ||
|
||
# Special thanks to: | ||
# https://github.com/Leoyzen/KVM-Opencore | ||
# https://github.com/thenickdude/KVM-Opencore/ | ||
# https://github.com/qemu/qemu/blob/master/docs/usb2.txt | ||
# | ||
# qemu-img create -f qcow2 mac_hdd_ng.img 128G | ||
# | ||
# echo 1 | sudo tee -a /sys/module/kvm/parameters/ignore_msrs # this is required | ||
# | ||
# Usage: | ||
# | ||
# $ boot-macOS-headless.sh | ||
# | ||
# (qemu) change vnc password | ||
# Password: ******** | ||
# | ||
# Note: Using RealVNC client, connect to `<localhost:5901>`. | ||
# E.g. `vncviewer localhost:5901` | ||
# | ||
# If using Nested-KVM (running macOS guest under a Ubuntu guest), use socat | ||
# and/or bridged network to exposed the macOS ports. | ||
|
||
############################################################################ | ||
# NOTE: Tweak the "MY_OPTIONS" line in case you are having booting problems! | ||
############################################################################ | ||
|
||
MY_OPTIONS="+ssse3,+sse4.2,+popcnt,+aes,+xsave,+xsaveopt,check" | ||
|
||
# This script works for Big Sur, Catalina, Mojave, and High Sierra. Tested with | ||
# macOS 10.15.6, macOS 10.14.6, and macOS 10.13.6. | ||
|
||
ALLOCATED_RAM="4096" # MiB | ||
CPU_SOCKETS="1" | ||
CPU_CORES="2" | ||
CPU_THREADS="4" | ||
|
||
REPO_PATH="." | ||
OVMF_DIR="." | ||
|
||
# shellcheck disable=SC2054 | ||
args=( | ||
-enable-kvm -m "$ALLOCATED_RAM" -cpu Penryn,kvm=on,vendor=GenuineIntel,vmware-cpuid-freq=on,"$MY_OPTIONS" | ||
-machine q35 | ||
-usb -device usb-kbd -device usb-tablet | ||
-smp 2 | ||
-device usb-ehci,id=ehci | ||
# -device usb-kbd,bus=ehci.0 | ||
# -device usb-mouse,bus=ehci.0 | ||
-device nec-usb-xhci,id=xhci | ||
-global nec-usb-xhci.msi=off | ||
# -device usb-host,vendorid=0x8086,productid=0x0808 # 2 USD USB Sound Card | ||
# -device usb-host,vendorid=0x1b3f,productid=0x2008 # Another 2 USD USB Sound Card | ||
-device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" | ||
-drive if=pflash,format=raw,readonly=on,file="$REPO_PATH/$OVMF_DIR/OVMF_CODE.fd" | ||
-drive if=pflash,format=raw,file="$REPO_PATH/$OVMF_DIR/OVMF_VARS-1920x1080.fd" | ||
-smbios type=2 | ||
-device ich9-ahci,id=sata | ||
-drive id=OpenCoreBoot,if=none,snapshot=on,format=qcow2,file="$REPO_PATH/OpenCore/OpenCore.qcow2" | ||
-device ide-hd,bus=sata.2,drive=OpenCoreBoot | ||
-device ide-hd,bus=sata.3,drive=InstallMedia | ||
-drive id=InstallMedia,if=none,file="$REPO_PATH/BaseSystem.img",format=raw | ||
-drive id=MacHDD,if=none,file="$REPO_PATH/mac_hdd_ng.img",format=qcow2 | ||
-device ide-hd,bus=sata.4,drive=MacHDD | ||
# Note: Shift the host's ssh port some somewhere else! | ||
-netdev user,id=net0,hostfwd=tcp::22-:22 -device vmxnet3,netdev=net0,id=net0,mac=52:54:00:c9:18:27 | ||
-monitor stdio | ||
-device vmware-svga | ||
-display none | ||
-vnc 0.0.0.0:1,password=on -k en-us | ||
) | ||
|
||
qemu-system-x86_64 "${args[@]}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
options kvm_amd nested=1 | ||
options kvm ignore_msrs=1 report_ignored_msrs=0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.