tools

Virtualizing Linux on Apple Silicon with Tart

|
by Macfleet Team
Tart virtualization running Linux on Apple silicon Mac

With the transition to Apple silicon, developers and system administrators have faced new challenges in running Linux environments on Mac hardware. While tools like UTM and Parallels provide solutions, Tart emerges as a game-changing virtualization platform specifically designed for Apple silicon, offering near-native performance and seamless integration with CI/CD workflows.

This comprehensive guide will walk you through everything you need to know about using Tart to virtualize Linux on your Apple silicon Mac.

What is Tart?

Tart is an open-source virtualization toolset developed by Cirrus Labs specifically for Apple silicon Macs. Unlike traditional virtualization solutions, Tart leverages Apple's native Virtualization.Framework, ensuring exceptional performance and efficiency.

Key Features

  • Near-native performance: Utilizes Apple's Virtualization.Framework for optimal speed
  • OCI-compatible: Push and pull virtual machines from any container registry
  • CI/CD integration: Seamlessly integrates with continuous integration systems
  • Packer support: Includes Tart Packer Plugin for automated VM creation
  • Command-line focused: Designed for automation and scripting

Why Choose Tart for Linux Virtualization?

Performance Benefits

Tart delivers impressive performance benchmarks:

  • 97% native performance in Geekbench 5.5.0 for macOS VMs
  • 2-3x better performance than standard cloud runners
  • Minimal overhead compared to traditional virtualization solutions

Developer-Friendly Features

  • No GUI required: Perfect for headless environments and automation
  • Container-like workflow: Familiar push/pull operations for VMs
  • Lightweight: VMs are distributed as compressed images under 1GB
  • Cross-platform compatibility: Works with any OCI-compatible registry

Installation and Setup

Prerequisites

Before installing Tart, ensure you have:

  • A Mac with Apple silicon (M1, M2, M3, or M4)
  • macOS 13.0 (Ventura) or later
  • Homebrew package manager installed
  • Terminal access with administrative privileges

Installing Tart

Install Tart using Homebrew with a single command:

brew install cirruslabs/cli/tart

Verify the installation:

tart --version

Available Linux Distributions

Tart supports several pre-configured Linux distributions:

  • Ubuntu: ghcr.io/cirruslabs/ubuntu:latest
  • Debian: ghcr.io/cirruslabs/debian:latest
  • Fedora: ghcr.io/cirruslabs/fedora:latest

Setting Up Your First Linux VM

Cloning an Ubuntu VM

Let's start by creating an Ubuntu virtual machine:

# Clone the Ubuntu image
tart clone ghcr.io/cirruslabs/ubuntu:latest ubuntu-vm

# Optional: Resize the disk to 50GB (default is 20GB)
tart set ubuntu-vm --disk-size 50

# Start the virtual machine
tart run ubuntu-vm

Initial Configuration

After running the VM, you'll see the Ubuntu login screen. Use these default credentials:

  • Username: admin
  • Password: admin

Important: Change these default credentials immediately after your first login for security.

Advanced Configuration Options

Customizing VM Resources

You can adjust various VM parameters:

# Set CPU cores (default: 2)
tart set ubuntu-vm --cpu 4

# Set memory (default: 4GB)
tart set ubuntu-vm --memory 8192

# Set disk size
tart set ubuntu-vm --disk-size 100

Networking Configuration

Tart VMs automatically receive private IP addresses. To find your VM's IP:

tart ip ubuntu-vm

SSH Access

Enable SSH access to your VM:

# From within the VM
sudo systemctl enable ssh
sudo systemctl start ssh

# From your Mac
ssh admin@$(tart ip ubuntu-vm)

File Sharing Between Host and VM

Mounting Host Directories

Tart supports mounting host directories into the VM:

# Mount a single directory
tart run --dir=project:~/Development/my-project ubuntu-vm

# Mount multiple directories
tart run --dir=www:~/Sites --dir=docs:~/Documents ubuntu-vm

# Mount in read-only mode
tart run --dir=backup:~/Backups:ro ubuntu-vm

Accessing Shared Directories

On Linux VMs

Mount the shared directories manually:

# Inside the Linux VM
sudo mkdir -p /mnt/shared
sudo mount -t virtiofs com.apple.virtio-fs.automount /mnt/shared

# Access your shared folders
ls /mnt/shared/project

On macOS VMs

Shared directories automatically mount to:

/Volumes/My Shared Files/

VM Management Commands

Essential Commands

# List all VMs
tart list

# Get VM information
tart get ubuntu-vm

# Start a VM
tart run ubuntu-vm

# Stop a VM (from within the VM)
sudo shutdown now

# Delete a VM
tart delete ubuntu-vm

# Clone a VM
tart clone ubuntu-vm ubuntu-vm-backup

VM Lifecycle Management

# Create a snapshot
tart clone ubuntu-vm ubuntu-vm-snapshot

# Export VM to OCI registry
tart push ubuntu-vm registry.example.com/my-ubuntu:latest

# Import VM from registry
tart pull registry.example.com/my-ubuntu:latest my-ubuntu

Performance Optimization

Hardware Acceleration

Tart automatically leverages hardware acceleration when available:

  • GPU acceleration: Utilizes Apple's GPU for graphics-intensive tasks
  • Neural Engine: Available for ML workloads on supported hardware
  • Memory compression: Efficient memory usage through macOS integration

Resource Allocation Best Practices

  • CPU cores: Allocate 50-75% of available cores for optimal performance
  • Memory: Reserve at least 4GB for the host system
  • Storage: Use SSD storage for better I/O performance

CI/CD Integration

GitHub Actions Integration

Tart integrates seamlessly with GitHub Actions for macOS runners:

name: Test on Linux VM
on: [push, pull_request]

jobs:
  test:
    runs-on: macos-latest
    steps:
    - uses: actions/checkout@v4
    - name: Install Tart
      run: brew install cirruslabs/cli/tart
    - name: Setup Linux VM
      run: |
        tart clone ghcr.io/cirruslabs/ubuntu:latest test-vm
        tart run test-vm &
        sleep 30
    - name: Run tests
      run: |
        tart ssh test-vm -- "cd /mnt/shared && ./run-tests.sh"

Orchard Integration

For production CI/CD, consider using Orchard, which orchestrates Tart VMs:

# .orchard.yml
vm:
  cpu: 4
  memory: 8192
  disk: 50
  image: ghcr.io/cirruslabs/ubuntu:latest

Troubleshooting Common Issues

VM Won't Start

# Check system requirements
system_profiler SPHardwareDataType | grep Chip

# Verify Tart installation
tart --version

# Check available disk space
df -h

Network Connectivity Issues

# Check VM IP address
tart ip ubuntu-vm

# Test connectivity from host
ping $(tart ip ubuntu-vm)

# Reset network configuration
tart stop ubuntu-vm
tart run ubuntu-vm

Performance Issues

# Check resource allocation
tart get ubuntu-vm

# Monitor system resources
top -o cpu

# Adjust VM resources
tart set ubuntu-vm --cpu 2 --memory 4096

Security Considerations

Default Credentials

Always change default credentials:

# Inside the VM
sudo passwd admin
sudo passwd root

Network Security

Consider network isolation:

# Run VM without network access
tart run --no-network ubuntu-vm

File Permissions

Be cautious with shared directories:

# Mount with restricted permissions
tart run --dir=project:~/Project:ro ubuntu-vm

Use Cases and Applications

Development Environments

  • Cross-platform development: Test applications on different Linux distributions
  • Kernel development: Safely test kernel modifications
  • Container development: Build and test Docker containers

DevOps and Testing

  • CI/CD pipelines: Automated testing on Linux environments
  • Infrastructure testing: Validate deployment scripts
  • Security testing: Isolated environments for security research

Education and Learning

  • Linux learning: Safe environment for learning Linux commands
  • System administration: Practice without affecting the host system
  • Virtualization concepts: Understanding VM management

Comparison with Other Solutions

Tart vs. UTM

FeatureTartUTM
PerformanceNear-nativeGood
GUICommand-line onlyFull GUI
AutomationExcellentLimited
Container registryYesNo
CI/CD integrationNativeManual

Tart vs. Parallels

FeatureTartParallels
CostFreePaid
PerformanceNear-nativeExcellent
Enterprise featuresLimitedComprehensive
AutomationExcellentGood
SupportCommunityCommercial

Conclusion

Tart represents a significant advancement in virtualization for Apple silicon, offering developers and system administrators a powerful, efficient, and automation-friendly solution for running Linux virtual machines. Its focus on performance, container-like workflows, and CI/CD integration makes it an excellent choice for modern development environments.

Whether you're developing cross-platform applications, testing deployment scripts, or learning Linux system administration, Tart provides the tools and performance you need to be productive on Apple silicon hardware.

As the ecosystem continues to evolve, Tart's open-source nature and active community ensure that it will remain at the forefront of virtualization technology for Apple silicon Macs.

Ready to get started? Install Tart today and experience the power of near-native Linux virtualization on your Apple silicon Mac.

Get started with Tart →

Resources and Links

Apple silicon as-a-Service

Discover why Macfleet is the preferred cloud provider for developers.