I figured out how to launch individual VMs programmatically using
Code: Select all
open utm://start?device=<device%20name>
For x86 emulation, I'm going the route of using TianoCore from the OpenCore repo and the following EFI booters from OpenCore:
EFI-MODERN: macOS 10.15 and newer supported
EFI-LEGACY: Mac OS X 10.6 through 10.14 supported
EFI-i386: Mac OS X 10.4 through 10.7 supported
Basic instructions are on Mykola's Blog, but I found I needed to make some tweaks.
UTM has updated since the blog was written in January, so now under System:Show Advanced Settings, you can select Penryn for CPU, and select sse4.1, sse4.2 and ssse3 CPU flags there as well and ignore the changes on the QEMU page.
However, I've had no luck with automatic keyboard detection, and so have added
Code: Select all
-usbdevice keyboard
This brings me to the last bits that I haven't figured out yet:
1. Networking. The blog says to use vmxnet3, but I've had zero luck with that. The one that seems to sometimes work for me is usb-net -- but then it randomly vanishes while the emulated machine is running, and I need to tear everything down and reboot my Mac to get it back.
2. Legacy boot. I've only succeeded in getting 10.7 and later running; 10.4 x86, 10.5 x86 and 10.6 (plus server versions) are being stubborn. I figure there's some CPU flags I don't have right yet, or some tweaks that need to be added to EFI that I haven't figured out yet. I'll have to go over what I did to get these booting under VMWare, Parallels and VirtualBox and that should help on here.
If anyone wants the UTM config files I'm successfully using, let me know and I'll post them on my GitHub page.