Over the last year, I have found myself increasingly reliant on virtualisation on Apple silicon to explore macOS. Although there are some areas like iCloud where this is a dead loss, as Apple ID remains unsupported, for many others it’s an ideal experimental workbench.
Last week’s deep dive took me into Software Update, something almost impossible to study systematically using a live Mac. To discover what happens when you turn off all automatic updates, I built a VM on macOS 13.4 with no network connection, thus unable to download or install macOS or security updates. I then turned off all automatic updates, and ran the VM with a NAT network connection to see what updates were offered for manual installation. That confirmed my suspicion that security data updates aren’t normally offered for manual installation in Software Update.
I had also installed in that VM my system profile that disabled privacy censorship in its log records. When I obtained log excerpts of software update processes, instead of frequent lost information deemed <private>, I had everything I wanted to know. Setting a Mac up to do the same would have taken far longer, and at the end, instead of just trashing the VM, I would have had to restore it to something more useful.
When looking at malware protection, I’ve been able to downgrade the VM’s secure boot, disable SIP, then inside the protection of ViableS I’ve run live samples of malware generously made available by the Objective-See Foundation. I dread to think how long it would take to deep-clean a Mac after that treatment; with a VM, all I had to do was drag it to the Trash.
My revelatory experience of the week might pale by comparison with those adventures, and involved VoiceOver. I was contacted by a blind Mac user who was having difficulties running a VM in Viable using VoiceOver. I’m ashamed to admit that it has been quite a few years since I last explored Accessibility features in macOS, and they don’t form part of my normal software testing. So here was an expert with VoiceOver, someone who drives his Mac daily using it, asking a rank novice to help solve his problem. The only and unfair advantage I had was the fact that I could see what was going wrong.
After a lengthy exchange of emails and testing different combinations of Ventura and Sonoma on different host macOS, I’m rather smug to announce that it’s perfectly possible, if not slick and easy, to run VMs in Viable and Vimy using VoiceOver control. The secret is that you must only have one VoiceOver active in macOS at a time. When you start a VM up, you must immediately turn VoiceOver off on the host. By default, both the host and guest macOS use the same voice, so you can’t tell which is which. Worse still, it’s easy to slip from the VM to the host macOS, and get locked out of the VM altogether, as both systems compete for keyboard control.
I really showed my ignorance when it came to the first run of a macOS VM to personalise and configure it. That works with VoiceOver in just the same way that it does with a brand new Mac, but then of course I’ve never tried using VoiceOver to set up a new Mac either. With a little practice using freshly built VMs I realised how quick and simple this is, again as long as you disable VoiceOver on the host before enabling it in the VM.
Every Mac developer should try their software out using VoiceOver. It’s one of the most impressive features in macOS, and works exactly the same in a VM, from the initial welcome to a fresh VM through to shut-down, when you can safely engage VoiceOver on the host again. Leave VoiceOver enabled in your VM when you shut it down, and you can double-click the VM bundle to run it seamlessly in Vimy.
Finally, I’m working on new releases of my virtualisers that will offer bridged networking at last. This means that each app will let you assign a standard host network port, such as Ethernet or Wi-Fi, for shared use by the VM with a distinct IP address. This sadly doesn’t open up access to Apple IDs and iCloud, but should give better performance and control.
Once I had discovered the correct web form to use to request the restricted entitlement for bridged networking, my application was approved within the same working day. I’d like to thank Apple’s developer support staff who helped me get there in the end, and Developer Technical Support in particular for their speed and encouragement. I now have to cast a couple of magic spells to get the entitlement to work, and code and test the changes to my apps. As soon as they’re able to use bridged networking, I’ll release new versions of Viable, Vimy and ViableS. Liviable, my Linux virtualiser, needs a bit more work, but should follow a little later.
