Three layers, and all three have to work
"Turn on Rosetta" sounds like one switch. It's three separate things, each set up differently, and each fails silently if it's missing:
- Rosetta has to be installed on the Mac. A one-time
softwareupdate --install-rosetta, nothing to do with Velo Workspaces. - The workspace's Rosetta switch has to be on (a Pro feature, in the Resources tab). It attaches a resource to the VM, and that's all it does.
- The guest has to be told to use it, with a one-time setup inside the Linux VM, covered below.
Skip any of the three and x86-64 binaries simply fail to run, as if Rosetta weren't involved at all. Nothing tells you which layer is missing.
What the switch attaches
Turning Rosetta on calls Apple's VZLinuxRosettaDirectoryShare API and attaches the result as a VirtioFS device tagged rosetta, the same kind of device the device inventory post describes for shared folders, except that it carries Apple's translator instead of a folder you picked. That's the whole effect. No package is installed in the guest, no config file is written, and the guest's boot doesn't change.
This is where layer one bites. If Rosetta isn't installed on the Mac, Apple's API reports it unavailable, the device is never created, and the workspace boots exactly as if the switch were off, with no warning at start-up. Velo Workspaces' capability check does notice and shows a note when Rosetta isn't installed, so if a workspace with the switch on behaves as if it were off, look there before suspecting the guest-side setup.
Setting it up inside the guest
The share being there doesn't make the guest kernel send x86-64 binaries to it. Linux has to be told, through binfmt_misc, the same kernel facility that runs a script by its shebang line. On Ubuntu or Debian it takes three steps, once per workspace, or once per base image if you save one afterwards:
- Mount the share:
sudo mkdir -p /media/rosetta, thensudo mount -t virtiofs rosetta /media/rosetta. - Install the package that registers custom interpreters:
sudo apt-get install -y binfmt-support. - Register Rosetta as the handler for x86-64 ELF binaries with
update-binfmts --install, pointing at the mounted translator.
The support FAQ has the full commands, and the Fedora and Rocky Linux equivalent, which uses systemd-binfmt instead. One flag in the last step is worth understanding rather than pasting blind: --fix-binary yes. It makes the kernel open the interpreter once, at registration, and keep it, instead of looking up its path on every exec. Translation then keeps working inside a mount namespace, chroot or container that can't see /media/rosetta. That decides whether an x86-64 Docker container in the same guest gets fast translation or falls back to slow emulation.
The other direction: when the app itself is translated
There's a second way Rosetta can get involved that has nothing to do with the guest. Velo Workspaces ships as a universal app with arm64 and x86_64 code, and macOS normally launches the native half. It's possible to end up running the Intel half on an Apple silicon Mac anyway, for example after forcing "Open using Rosetta" in Finder. Then the app itself is being translated, and a set of Apple silicon-only features stop being available to it, Rosetta for Linux and macOS guests among them.
If Rosetta looks unavailable on a Mac you know is Apple silicon, rule this out first: check the Kind column for Velo Workspaces in Activity Monitor, and make sure "Open using Rosetta" is off in the app's Get Info window.
What this doesn't fix
None of this lets a Linux guest run x86-64 software with x86-64-only dependencies, only individual, dynamically linked binaries. The Ubuntu post shows where that limit bites. If what you need is a whole x86-64 operating system, that's a different tool; see can you install x86 Linux on an Apple Silicon Mac.
Related reading: ARM64 vs. x86-64 on Apple Silicon for how this fits with Rosetta for Mac apps and multi-arch containers, why some Linux software won't run on arm64, and the device inventory post for how VirtioFS devices work. Or download Velo Workspaces and try it yourself.