Linux guests
Linux VMs run on Apple's Virtualization framework with virtio devices, which current distributions support out of the box. Installer ISOs must be for ARM64 (aarch64).
Installing from the catalog
A VM made from Ubuntu 26.04 or Fedora 44 in the + menu gets its installer when it first starts. Its window, and its row in the library, show each step:
- Looking up: the newest release of that version for ARM64, on Ubuntu's or Fedora's own server (Ubuntu 26.04.1 rather than 26.04, for one).
- Downloading into
~/Library/Caches/Elyra VM/Installers/(Ubuntu Desktop is about 4 GB, Fedora Workstation about 2.7 GB). Like a macOS download, it carries on after a dropped connection or a stop. Every VM after the first uses the same copy. - Checking it against the SHA-256 the distribution publishes. A download that doesn't match is thrown away, and the VM says so.
- Booting it: the ISO becomes the VM's installer, and the summary shows the release, such as Ubuntu 26.04.1 LTS.
Then install the system from the live session as on a PC.
Ready to use
Six systems in the + menu need no installing: each is the distribution's own cloud image for ARM64, an installed system, set up at its first boot; three of them get a desktop too (with a desktop).
| In the menu | Downloads, once for every VM | Checked with |
|---|---|---|
| Ubuntu Server 26.04 (ready to use) | Ubuntu's server cloud image, about 950 MB | SHA-256 |
| Fedora Cloud 44 (ready to use) | Fedora Cloud Base Generic, about 530 MB | SHA-256 |
| Debian 13 (ready to use) | Debian's generic cloud image, about 430 MB | SHA-512 |
At its first start the VM downloads the image, checks it against the distribution's
published checksum, turns it into the VM's disk, and boots it. cloud-init, in each image,
sets it up at that first boot from a small volume Elyra VM writes into the VM's folder
(cloud-init.iso):
- the host name, from the VM's name: Web Server becomes
web-server - your user: your Mac's user name, an administrator without a password (in
sudo, orwheelin Fedora), with the public SSH keys in your Mac's~/.sshand a password of its own, which the VM's settings show (Login) - SSH, with passwords allowed
- the shared folders mounted at
/mnt/mac - Elyra VM Tools, so
elyravm execworks at once
About 20 seconds after it starts, the VM is ready:
$ elyravm start "web server" --hidden
$ elyravm exec "web server" -- cloud-init status
status: done
$ elyravm forward "web server" 2222:22
$ ssh -p 2222 localhost
The disk grows to the VM's disk size on the first boot. These three have no desktop: for one,
choose a desktop below, or install one yourself (sudo apt install ubuntu-desktop-minimal in
Ubuntu, for one). Fedora keeps SELinux on, as it ships, and Elyra VM Tools runs under it.
With a desktop
| In the menu | The desktop |
|---|---|
| Ubuntu 26.04 Desktop (ready to use) | Ubuntu's own (ubuntu-desktop-minimal), with Firefox |
| Fedora 44 Desktop (ready to use) | GNOME (@gnome-desktop), with Firefox |
| Debian 13 Desktop (ready to use) | GNOME (gnome-core), with Firefox ESR |
They download the same cloud images as the servers above, and are set up as they are; then,
at the end of the first boot, cloud-init installs the desktop from the distribution's servers
(some 4 to 8 minutes, as your connection allows: elyravm exec <vm> -- cloud-init status
says done when it is), logs you in by itself, and the desktop comes up in the window. With
3D graphics on, as they are by default on macOS 27, they draw with
your Mac's GPU from the first boot: Elyra VM Tools, which carries the keyboard and pointer,
comes up before the desktop is installed.
The image is kept in ~/Library/Caches/Elyra VM/Installers/ under its name and the start of
its checksum, as the distributions keep one name for the newest image of a release: a newer
one is downloaded beside it, not taken for a damaged copy.
After installing
Apple's Virtualization framework can't restart a Linux guest: a restart stops the VM. So when a Linux VM stops by itself while its installer is in, and its disk now holds a system (a partition table), Elyra VM takes the installer out and starts the VM again into the installed system, just as the restart at the end of an install would. The window closes and opens again on the way.
To take an installer out by hand, choose Eject Installer in the VM's … menu while the VM is stopped. A VM made from an ISO of your own is handled the same way.
What the guest sees
| Device | Linux driver | Notes |
|---|---|---|
| Disk | virtio-blk (/dev/vda) |
the VM's disk.img |
| Installer | USB mass storage (/dev/sda) |
while installer is set |
| cloud-init volume | virtio-blk (/dev/vdb), read-only |
systems ready to use |
| Elyra VM Tools | virtio socket (vsock), port 1024 | Elyra VM Tools |
| Network | virtio-net | NAT behind your Mac |
| Display | virtio-gpu | follows the window; with 3D graphics, Elyra VM's own, drawing with your Mac's GPU |
| Keyboard, pointer | USB | the pointer is absolute: no capture, no lag |
| Sound | virtio-snd (Linux 5.13+) | output; input only if the microphone is allowed |
| Shared folders | virtiofs | tag elyravm |
| Clipboard | virtio console port for the SPICE agent | needs spice-vdagent |
| Serial console | virtio console (/dev/hvc0) |
written to console.log |
| Entropy, memory balloon | virtio-rng, virtio-balloon |
The VM boots with EFI. Its EFI variables, where the installed system keeps its boot entry,
are kept in the VM's folder (nvram), so after installing, the VM boots from its disk.
Network
With Shared networking the VM gets a private address from your Mac, usually in
192.168.64.0/24. The VM reaches the internet through the Mac, and the Mac reaches the VM
at that address, for example ssh user@192.168.64.5. Find it in the guest with ip addr.
The VM keeps its MAC address, so the address usually stays the same from start to start. The
VM's settings show it, and elyravm forwards <vm> prints it. Elyra VM finds it in your Mac's
DHCP leases by the VM's MAC address, or from Elyra VM Tools when it runs in the
VM. A guest that asks for its address by something else than its MAC address, as Ubuntu
Server's systemd-networkd does by itself, can't be found without Elyra VM Tools (the systems
ready to use are set up to ask by MAC address). To reach the VM through a port on
your Mac instead, forward one (VM settings).
Shared folders
Folders listed in the VM's shared_folders (VM settings) are
shared as one virtiofs filesystem tagged elyravm, with each folder as a directory in it,
named after the folder (or its name).
sudo mkdir -p /mnt/mac
sudo mount -t virtiofs elyravm /mnt/mac
ls /mnt/mac # Projects Downloads
To mount it at every boot, add to /etc/fstab:
elyravm /mnt/mac virtiofs rw,nofail 0 0
Folders marked read_only can't be written from the guest. The share also holds
Elyra VM Tools, read-only, with its installer. With Elyra VM Tools running, the
shared folders are mounted at /mnt/mac by themselves.
The clipboard
Copy and paste between the Mac and the guest goes through the SPICE agent. Install it in the guest and log in to a graphical session:
sudo apt install spice-vdagent # Ubuntu, Debian
sudo dnf install spice-vdagent # Fedora
Turn it off for a VM with "clipboard": false in its permissions.
The display
The guest's screen follows the size of the VM's window. Desktop environments pick up the new size by themselves; a text console keeps its size.
The serial console
Everything the guest writes to /dev/hvc0 lands in console.log in the VM's folder, which is
emptied at each start. It is useful when the screen stays black, and for agents that read the
guest's output. To see the kernel and a login there, boot with console=hvc0 on the kernel
command line and run a getty on hvc0.
Shutting down
Shut Down asks Elyra VM Tools to shut the guest down, when it runs there, and
also sends an ACPI power button press. Systems with systemd or acpid shut down cleanly on
the button too; minimal systems without either, and without Elyra VM Tools, ignore it. Use
poweroff in the guest, or Force Stop.