VirtualMac2009
Enthusiast
Enthusiast

Is it possible to create a virtual machine within a virtual machine in VMware Fusion in macOS?

 

For instance:

 

SCENARIO 1To run Eudora Mail and Palm Desktop (which requires Rosetta 1; released by Apple in 2006, when it began switching Macs from PowerPC to Intel x86 processors) in Mac OS 10.6.8 Server Snow Leopard

…in…

ARM-based Apple Silicon Macs, once VMware Fusion is released for such Macs?

 

SCENARIO 2. If the above is possible, could it be still possible to run Eudora Mail and Palm Desktop in future macOS versions that lack Rosetta 2 (released by Apple in 2020, when it began switching Macs from Intel x86 to Apple Silicon processors), once VMware Fusion is released for them?

 

In other words, could Eudora Mail and Palm Desktop (which require PowerPC or Rosetta 1) be used in the current (scenario 1) and future (scenario 2) Apple Silicon Macs, once VMware Fusion is released for such Macs?

 

Thanks!

0 Kudos
12 Replies
dempson
Enthusiast
Enthusiast

The short answer: no to scenario 1, and scenario 2 is not applicable or relevant.

When VMware Fusion is released for Apple Silicon Macs, the expectation is that it will initially allow virtualisation of ARM-based operating systems. For example, this would allow running ARM-based Linux variants, or macOS Big Sur in virtualisation on an Apple Silicon Mac. This will not extend to running older macOS versions (macOS Catalina 10.15 or earlier), since they are Intel operating systems.

To run PowerPC applications under Rosetta, you would need to be able to run the Intel versions of Mac OS X 10.6 Snow Leopard Server or Mac OS X 10.5 Leopard Server in a VM. Those will not work under the expected initial release of VMware Fusion for Apple Silicon Macs. Therefore with the initial release of VMware Fusion for Apple Silicon Macs, there will not be any way to run old PowerPC-only applications like Eudora and Palm Desktop.

The best way this could be achieved would be if someone released a product which went beyond virtualisation and also emulated an Intel processor. This would be similar in concept to products like Virtual PC (from Connectix, later bought by Microsoft) which emulated an Intel PC down to the processor instructions, and allowed running DOS or Windows on a PowerPC Mac.

Rosetta 2 has nothing to do with this: it provides code translation to run Intel processes on an Apple Silicon Mac under the host macOS. It does not provide a way to run an entire Intel operating system in a virtual machine, and cannot be used to assist virtual machine software to run Intel code inside a virtual machine.

In addition, the question in your thread title suggests that you misunderstand what Rosetta does. Rosetta is not a "virtual machine". It is a code translator. Rosetta 1 decodes sequences of PowerPC instructions and generates an equivalent sequence of Intel instructions, which are then executed by the Intel processor. Rosetta 2 decodes Intel instructions and produces equivalent ARM instructions to be executed by the processor. In each case the translated code is running directly on the host OS. (There is a minor difference in the way Rosetta 1 and 2 operate: Rosetta 1 did code translation on the fly with a small in-memory buffer, Rosetta 2 does code translation in bulk on application launch, with the translated code cached to disk, so execution is faster at the expense of disk space.)

You don't need a virtual machine inside a virtual machine to run Snow Leopard (or Rosetta 1) on an Apple Silicon Mac. You need a single virtual machine which is capable of emulating an Intel Mac including the Intel processor.

0 Kudos
VirtualMac2009
Enthusiast
Enthusiast

Thanks for the comprehensive reply. I asked questions for both scenarios because now it is possible to run Eudora Mail or Palm Desktop (PowerPC applications) in Intel-x86 Macs, installing such applications in a virtualized Mac OS X 10.6.8 Server in VMware Fusion.

Since that is possible, I thought that it could be also possible with macOS 11 Big Sur, virtualizing Intel x86, and inside it virtualizing PowerPC.

0 Kudos
SvenGus
Expert
Expert

[...] For instance, virtualizing Mac OS X Server 10.6 (Snow Leopard, which has Roseta 1) in VMware Fusion inside virtualized macOS 11 (which has Roseta 2) in future Apple Silicon Macs. Is that technically possible?

But, as dempson said: [...] Rosetta 2 has nothing to do with this: it provides code translation to run Intel processes on an Apple Silicon Mac under the host macOS. It does not provide a way to run an entire Intel operating system in a virtual machine, and cannot be used to assist virtual machine software to run Intel code inside a virtual machine. [...]

So, basically, you cannot run a virtualized Intel Mac OS X 10.6 VM inside a virtualized (with a future Fusion for M1) ARM macOS 11 VM: this would require x64 emulation, as Rosetta 2 cannot run an entire Intel VM; i.e., an Intel macOS 11 guest (which could then run a nested Intel Mac OS X 10.6 guest) on an ARM macOS 11 host: but with x64 emulation you could of course also run an Intel Mac OS X 10.6 VM directly, with much better performance than a nested one.

A little complicated reasoning (I hope it makes sense), so correct me if I'm wrong...

0 Kudos
VirtualMac2009
Enthusiast
Enthusiast

Thanks for the explanation. What I do not understand is why is it then possible now to run Eudora Mail and Palm Desktop (PowerPC applications) inside a virtualized (not emulation) Mac OS X Server 10.6 (Snow Leopard) in VMware Fusion 11.5.3 in macOS 10.12 Sierra in Intel x86-based Macs.

In other words, that is running PowerPC applications in an Intel Mac using VMware Fusion virtualization (not emulation), thanks to Rosetta 1 (released by Apple in 2006).

0 Kudos
SvenGus
Expert
Expert

Because currently (Intel Macs) both the host and the guest are Intel: so, virtualization is enough (same architecture); while on an M1 Mac the host is ARM and thus you can only virtualize ARM: so, running an Intel OS (for example, Mac OS X 10.6) on an M1 host requires a full x86/x64 emulation.

Not sure if it's clear (maybe others can explain it better?)...

(For example, if you want to run an old PowerPC version of Mac OS (X) on an Intel Mac, you must emulate a PPC system (with QEMU); likewise, on an M1 Mac (ARM), if you want to run an Intel OS in a virtual machine, you must emulate it: it cannot be directly virtualized, as the processor architectures are different.)

0 Kudos
dlhotka
Champion
Champion

It's going to come down to exactly how x86 emulation is provided.

If apple extends rosetta 2 to provide support to the hypervisor framework, then conceptually yes, you will be able to have intel OSX guests in Fusion on apple silicon.

If that's not the case, and Fusion only provide ARM virtualization, and windows ARM is what provides the x86 emulation for windows x86 apps, then no.

I doubt that VMWare will write an x86 emulator, but we'll see.

0 Kudos
VirtualMac2009
Enthusiast
Enthusiast

Thanks. So, how does Mac OS X Server 10.6 (Snow Leopard) is virtualized (not emulated)

in

VMware Fusion 11.5.3 in macOS 10.12 Sierra in Intel x86-based Macs

to run

PowerPC applications like Eudora Mail and Palm Desktop?

 

Because that means PowerPC applications being virtualized (not emulated) in Intel x86-based Macs.

0 Kudos
dempson
Enthusiast
Enthusiast

VirtualMac2009 wrote: " So, how does Mac OS X Server 10.6 (Snow Leopard) is virtualized (not emulated) in VMware Fusion 11.5.3 in macOS 10.12 Sierra in Intel x86-based Macs to run PowerPC applications like Eudora Mail and Palm Desktop? Because that means PowerPC applications being virtualized (not emulated) in Intel x86-based Macs."

A Mac running Snow Leopard is what is being virtualised. That virtual Mac (with the same Intel processor as the host) is able to run PowerPC code via translation to Intel code using Rosetta. The Intel instructions output by the translator are being executed by the virtual machine.

To get PowerPC code working on an Apple Silicon Mac, you would need to emulate (not just virtualise) an Intel Mac running Snow Leopard Server. An emulated Intel Mac running Snow Leopard Server would also be able to run PowerPC code, because Rosetta (in Snow Leopard) would translate PowerPC to Intel instructions, then the emulator would interpret the Intel instructions and execute corresponding ARM instructions.

0 Kudos
dlhotka
Champion
Champion

I think it's going to come down to the business case.  If Windows ARM isn't a viable option, either because it stays an OEM license, or because the x86 emulation won't run inside Fusion, then there's a stronger need for Apple to do something.  But if Windows ARM virtualizes x86 well, and runs in fusion, and has a retail license option, then I think that would probably cover 90-95% of the use cases.  I doubt that supporting virtualizing of older OSX versions on ARM hardware much factors in to the equation.

I expect to see ARM on ARM in weeks, rather than months.  Then it's up to Microsoft to give us an ARM windows option.

0 Kudos
dempson
Enthusiast
Enthusiast


@VirtualMac2009 wrote:

Thanks for the explanation. What I do not understand is why is it then possible now to run Eudora Mail and Palm Desktop (PowerPC applications) inside a virtualized (not emulation) Mac OS X Server 10.6 (Snow Leopard) in VMware Fusion 11.5.3 in macOS 10.12 Sierra in Intel x86-based Macs.

In other words, that is running PowerPC applications in an Intel Mac using VMware Fusion virtualization (not emulation), thanks to Rosetta 1 (released by Apple in 2006).


Now that we have this thread back, let me try explaining it again.

1. VMware Fusion on macOS Sierra (for example) on an Intel Mac is able to run an Intel virtual machine.

2. Snow Leopard Server (an Intel-only operating system) is running inside the Intel virtual machine. The VM is executing Intel code using the host (Intel) processor, within the context of the virtual machine.

3. Snow Leopard Server includes the Rosetta translation engine. This allows Snow Leopard on an Intel Mac to run PowerPC-only applications like Eudora and Palm Desktop. Rosetta itself is Intel code.

4. The PowerPC instructions in applications like Eudora are being translated to Intel instructions by Rosetta. The Intel processor is then able to execute the translated Intel instructions. In this case, they are being executed on an Intel virtual machine, therefore are being executed by the host Intel processor.

At no point in this sequence is a "PowerPC Mac being virtualised on an Intel Mac". The individual instructions of PowerPC applications are being translated by Rosetta to Intel instructions, which are then executed by an Intel operating system within an Intel VM on a host Intel processor.

Apart from being compiled for the wrong processor, the application needs to be compatible with the OS (Snow Leopard) for Rosetta to work, e.g. you can't run much older PowerPC applications which ran on Mac OS 9 or earlier but were not updated to run natively on Mac OS X.

There is no "emulation" involved in this sequence. Rosetta does "code translation", producing Intel instructions which do the same as original PowerPC instructions. Rosetta is closest in concept to an "interpreter" rather than an "emulator": think of it like reading the PowerPC instructions as a script, then executing the appropriate Intel code to do the requested operations.

Rosetta 1 supports PowerPC instructions which are able to be used by applications (apart from some advanced features like vector instructions). Rosetta 2 does the same thing with Intel instructions.

Rosetta (1 or 2) does not support the full instruction set, in particular it doesn't support the privileged instructions which must be used by an OS. Therefore Rosetta (1 or 2) cannot translate OS-level code, and cannot be used to support running a VM with an OS for a different processor.

Code translation inside the VM (for running applications) is fine. Code translation outside the VM (for running the entire guest OS) is not.

To be able to run Snow Leopard (and therefore PowerPC apps like Eudora) on an Apple Silicon Mac, you would need a full emulator, i.e. VM software with the added features of being able to interpret Intel instructions and emulate Intel processor features required by the guest OS.

0 Kudos
SvenGus
Expert
Expert

[...] The best way this could be achieved would be if someone released a product which went beyond virtualisation and also emulated an Intel processor. This would be similar in concept to products like Virtual PC (from Connectix, later bought by Microsoft) which emulated an Intel PC down to the processor instructions, and allowed running DOS or Windows on a PowerPC Mac. [...]

Certainly the priority, for Fusion, is to virtualise ARM on ARM, on M1 Macs (and of course continue to virtualise Intel on Intel, on Intel Macs): but in the future, it would indeed be interesting to have also an emulator product with a decent speed (as Connectix/Microsoft Virtual PC was), especially for OS enthusiasts/hobbyists. The main problem, here, is that current emulator solutions are not optimised for Macs and also too slow to be really usable: so, there would have to be some solution that improves all this - which isn’t certainly easy! Anyway, on the Windows and Linux front, being limited to ARM virtualisation probably won’t be a problem (Windows ARM version will be able to run also x86/x64 applications and Linux will be native also on ARM); while being able to run, for example, old versions of macOS will require emulation (if Rosetta 2 won’t support Intel virtual machines)...

0 Kudos
SvenGus
Expert
Expert

[To admins: it happened again... After editing my post here for some minor formatting errors... it disappeared, again: so, there must be something wrong with the spam filter, or similar. BTW, of course, no inappropriate content, no off-topic, no mention of current competing products (which shouldn’t anyway be a problem): just an attempt to briefly explain the current virtualization and emulation situation on the M1...]

0 Kudos