OrbStack can run full Linux machines with a variety of distros. Similar to WSL, these machines are lightweight and can be used like standard virtual machines.
You can run services in Linux machines using your distro's init system. For example, to run a web server on Ubuntu:
apt install nginx systemctl start nginx
Depending on your distro, the init system may be systemd, OpenRC, or runit. You can configure services to start on boot as usual.
Servers are available at
localhost. See Networking for more information.
Mac files are avaialable in Linux machines at
/mnt/mac, and Linux files are available from Mac at
~/OrbStack or the OrbStack tab in Finder. See File sharing for more information.
File transfer commands are also available.
Run Mac commands from Linux
From Linux, you can use Mac commands by prefixing them with
mac. For example, to open a file in the default Mac text editor:
mac open ~/foo.txt
See Commands for more information.
Similar to WSL, you can also run macOS executables (Mach-O) directly from Linux using binfmt, which can be useful for development. For example:
mac gcc -o foo foo.c # prefix not needed ./foo
This allows you to add macOS binaries to your Linux
PATH. For example, you can add
/opt/homebrew/bin to run Homebrew commands directly from Linux.
Share files across machines
You can access files from other Linux machines at
/mnt/machines. For example, to access machine
Your preferred SSH agent on macOS is automatically forwarded to Linux machines, so you can push to Git and connect to SSH servers without any additional setup.
OrbStack has a built-in SSH server that multiplexes access to all Linux machines, so there is no need to install an SSH server in each machine.
Idle Linux machines use nearly no additional CPU compared to OrbStack's baseline (around 0.1% on M1), so you can run dozens of machines without breaking a sweat.
See Efficiency for more information.
Creating machines with any supported distro is easy and quick (less than 1 minute on fast connections). You can use the GUI or automate creation using the command line:
orb create ubuntu new-ubuntu # Or specify a version other than latest orb create ubuntu:jammy new-ubuntu
See Distros for more details.
To set up new machines automatically, use the command line to create a machine and run a setup script. For example, to create a new Ubuntu machine and run the
orb create ubuntu new-ubuntu && orb -m new-ubuntu ./setup.sh
You can also use tools like Ansible with the built-in SSH server. For cloud-init support (like AWS EC2), vote on the feature request.
Intel (x86) machines
On Apple Silicon, OrbStack uses Rosetta to run Linux machines with Intel (x86/amd64) binaries. This is much faster than emulation with QEMU or UTM, seamlessly providing near-native performance.
To create an Intel machine, use the
orb create --arch amd64 ubuntu new-ubuntu
Running Intel (x86) programs
There are two ways to run programs built for Intel (x86) CPUs on Apple Silicon:
- Create an Intel machine (see above) and run the program in it.
- Install multi-arch support in an ARM machine.
If you see
rosetta error: failed to open elf at /lib64/ld-linux-x86_64.so, it means you're missing multi-arch support. Choose one of the two options above to fix it.
Some Linux distros support multi-arch, which allows you to run both x86 and ARM programs in the same machine by installing the libraries needed to run x86 programs. For example, on Ubuntu:
# Enable multi-arch sudo dpkg --add-architecture amd64 # Fix repos echo 'deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports kinetic main restricted universe multiverse deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports kinetic-updates main restricted universe multiverse deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports kinetic-security main restricted universe multiverse deb [arch=amd64] http://archive.ubuntu.com/ubuntu kinetic main restricted universe multiverse deb [arch=amd64] http://archive.ubuntu.com/ubuntu kinetic-updates main restricted universe multiverse deb [arch=amd64] http://archive.ubuntu.com/ubuntu kinetic-security main restricted universe multiverse' | sudo tee /etc/apt/sources.list # Install libraries sudo apt update sudo apt install libc6:amd64
Instructions vary by distro, and not all distros (e.g. Arch) support multi-arch. Search for the appropriate commands for your distro.
OrbStack does not currently support running graphical Linux apps by default, but you can set up XQuartz and use it as an X11 server in Linux. Xrdp is another option.
Support for USB device passthrough is planned.
In the meantime, consider using command linking to run the Mac versions of USB tools from Linux. For example, Android developers can use
fastboot this way:
# Link commands mac link adb mac link fastboot # Then run them as usual adb devices fastboot devices
This works seamlessly in most cases and allows you to run commands as if they were installed on Linux, including working with files on either Linux or Mac.
Nested KVM virtualization is not currently supported, but we plan to look into the feasibility of adding it.
By default, OrbStack creates a user with the same name as your macOS user, with no password set. sudo is configured to run commands as root without asking for a password.
To set a password:
orb sudo passwd $USER
You can also set a default password when creating a machine:
orb create --set-password ubuntu new-ubuntu
To view a machine's boot logs and console output, use the
orb logs command:
orb logs ubuntu