I was able to get my old copy of Lightroom 4 to work using UTM to run Windows 11 ARM, then using Windows' equivalent of Rosetta to run the x86 Lightroom. Big fan of UTM, such a breath of fresh air coming from VirtualBox.
QEMU's x86 emulation is outrageously slow compared to Rosetta2. Is it theoretically be possible to hook Rosetta2 for full x86 machine emulation (like oldschool vmware did before VT)?
AIUI Rosetta 2 works by translating as much of the code as possible ahead of time, so you don’t get delays translation happening online, and you get speculative execution etc.
That's only for userspace apps. In fact even on Mac, only userspace code can be handled by rosetta2. For most applications this isn't a problem but a lot of games these days come with kernel components for anti-cheat.
Parallels has a way to use Rosetta2 inside an ARM64 Linux VM to run x64 binaries, but it can occasionally be unstable. Usually works fine and way faster than qemu.
I don't think that working with proprietary piece of code which is not even allowed to be used for anything but proprietary virtualization.framework is very interesting for those who can pull that kind of implementation.
Theoretically: why not? Kernel is not something drastically different from userspace. Sure, some rules are different, but I don't think that it's completely impossible to adapt Rosetta to the kernel.
But practically: I doubt it. qemu is not supporting even ordinary Rosetta, last time I checked, despite that fact that it should be pretty trivial to implement.
> Theoretically: why not? Kernel is not something drastically different from userspace. Sure, some rules are different, but I don't think that it's completely impossible to adapt Rosetta to the kernel.
It's not impossible but very infeasible since kernel has critical sections where you can't take an interrupt or fault (leading to panic); such code sitting at the translation boundary would not work.
This is why I mentioned "old vmware" which before VT handled these types of critical sections through an interpreting emulator while executing as many of the x86 instructions as possible unmodified. That is to say, they already did the hard part of breaking out the tricky bits. I was kind of hoping maybe QEMU had a similar strategy for x86-machine-on-x86-usermode without requiring virtualization extensions that could just be executed directly through rosetta (on macos or linux)
UTM is alright, but the GUI leaves a lot to be desired, which seems to be a commonality between desktop hypervisors; I have never liked Parallels and VMWare Fusion seems to be rotting on the vine and has its own equally baffling quirks. I would really like not having to shut down all of my VMs and close their windows to get the "library" window back open (shocker, some of us can and need to run more than one VM). I would really like to be able to see the settings of a VM, again, without having to shut down, find the library, and open the settings from there (yes, I know, I can't edit them while the VM is running, I still want to see the things!). It makes troubleshooting and complex configuration such a pain in the ass, that I usually give up.
I recently came across UTM when searching for a way to access a ext4 formatted SD card on macOS.
Surprisingly, UTM with Arch VM was able to read and write the card through a USB card reader with zero friction or additional setup needed.
UTM – Virtual Machines for iOS and macOS - https://news.ycombinator.com/item?id=37333404 - Aug 2023 (169 comments)