Apple is extending support for its Rosetta 2 x86-64-to-Arm binary translator to Linux VMs running under the forthcoming macOS 13, codenamed Ventura.
The next version of macOS was announced at Apple’s World Wide Developer Conference on Monday, and the new release has a number of changes that will be significant to Linux users. The company has disclosed the system requirements for the beta OS, which you can read on the preview page.
One level of Linux relevance is that macOS 13 still supports Intel-based Macs, but only recent ones, made in 2017 and later. So owners of older machines – including the author – will soon be cut off. Some will run Windows on them via Bootcamp, but others will, of course, turn to Linux.
The primary focus is naturally on newer Macs with Apple’s own Arm-based M1 processors. For those, an interesting new feature is support for Rosetta 2 under Arm Linux distros.
Those out of the loop may want to refer back to our coverage of the launch of the Arm Macs. The original Rosetta, in Mac OS X 10.4 to 10.6, let you run PowerPC apps on early Intel Macs, using tech subsequently acquired by IBM.
Rosetta 2 does similar but better for x86-64 apps on Arm-flavored macOS. It not only translates x86-64 machine code into Arm code, but it caches it for later, too.
macOS has had a built-in hypervisor since macOS 10.10 “Yosemite” in 2014. More recently, Apple has improved the hypervisor’s features. For instance, it gained Virtio support on macOS 12. Virtio means that OSes running in virtual machines “know” that they are guests, and can request services from the host via special drivers rather than emulated hardware.
But one thing the integral hypervisor can’t do is run an x86-64 OS in a VM on an Arm Mac. That would be asking an awful lot of a tool that’s intended to translate a single app at a time. The new feature is the next best thing: it extends the Rosetta 2 translation functionality into guest OSes running under macOS 13.
On an M1 Mac, the built-in hypervisor can only run operating systems compiled for the Arm instruction set, and for now, that does not include Windows. Instead, what the new functionality will do is let an Arm-architecture Linux running under macOS 13 ask the host OS to translate x86-64 binaries for it. This should allow x86-64 Linux applications to run under Arm Linux under macOS.
While an interesting technological trick, this does seem very specialized. Most Linux apps are open source and can, in principle, just be recompiled to run on Arm, but there are some which are closed source: Google Chrome is a popular example. The thing is, many of those already have native macOS versions. And of course there is WINE, but there’s already a native macOS WINE, including on Arm.
One target audience may be Docker developers working on Macs. This will enable them to work with x86-64 containers on M1 Macs.
We can’t help but wonder if calling Rosetta 2 from Linux is just a step towards some larger goal, but we can’t yet guess what that might be. ®
It would be remiss of us not to mention that, although Microsoft does not currently support Windows on Apple Silicon, an intrepid third-party developer is trying to do exactly that. It reminds us of the competition to shoehorn Windows XP onto early Intel Macs way back in 2006. This currently uses the same “m1n1” hypervisor as Asahi Linux. ®