Tart で macOS / Linux の仮想マシンを使う
はじめに
#筆者が Intel 版 MacBook を使っていた時 VirtualBox や VMware Fusion などの仮想化ソフトウェアを常用していました。M1 の MacBook に移行した当初これらのソフトウェアが対応しておらず、そのまま使わなくなってしまいました[1]。先日 Tart という仮想化ツールで Apple Silicon Mac への仮想マシン導入が簡単にできることを知ったのでご紹介します。
Tart とは
#Tart は、Apple Silicon Mac 専用の仮想化ツールセットです。Apple Silicon ネイティブな Virtualization Framework 上に実装され、macOS と Linux を高速に稼働できます。
Tart is using Apple’s native Virtualization.Framework that was developed along with architecting the first M1 chip. This seamless integration between hardware and software ensures smooth performance without any drawbacks.
Tart の GitHub リポジトリは以下にあります。
GitHub - cirruslabs/tart: macOS and Linux VMs on Apple Silicon to use in CI and other automations
Tart の VM イメージは OCI 互換のレジストリーで管理可能で、公式イメージは GitHub の Package Registry で公開されています。
https://github.com/orgs/cirruslabs/packages
さらに Tart を利用した CI 用ランナー、Cirrus Runnersも提供されています。
Tart は個人用マシンで使用する場合は無料です。サーバーのインストール数が一定数を超える組織は有償ライセンスの取得が必要です。
Usage on personal computers including personal workstations is royalty-free, but organizations that exceed a certain number of server installations (100 CPU cores for Tart and/or 4 hosts for Orchard) will be required to obtain a paid license.
インストール
#Quick Start を見るとおおよそ使い方がわかると思います。
Homebrew でインストールします。
brew install cirruslabs/cli/tart
macOS VM の起動
#tart CLI によりマシンイメージの取得、起動、設定が可能です。
macOS Sonoma の Xcode インストール済みのイメージを取得してみます。レジストリのイメージとローカルでの名前(以下の例では sonoma-xcode)を指定します。
$ tart clone ghcr.io/cirruslabs/macos-sonoma-xcode:latest sonoma-xcode
pulling manifest...
pulling disk (54.0 GB compressed)...
0%
ダウンロードが始まります。54GB あるのでかなり時間がかかります。最後はこんな感じで完了します。
98%
pulling NVRAM...
VM を起動します。
tart run sonoma-xcode
起動はかなり速いです。
Xcode もちゃんと起動しました。筆者が使用しているホストマシンは macOS Ventura ですが、macOS Sonoma の VM で最新の Xcode を利用できます(筆者は Xcode Command Line Tools しか使いませんが)。
デフォルトではメモリ8GBと心許ないので、拡張してみます。
一旦 Control メニューから VM を停止します。
Tart CLI で VM を指定してメモリサイズを MB 単位で設定します。
tart set sonoma-xcode --memory 16384
tart run
で VM を起動し直すと無事にメモリが増えていました。
Ubuntu VM の起動
#Ubuntu の VM イメージを取得します。
$ tart clone ghcr.io/cirruslabs/ubuntu:latest ubuntu
pulling disk (0.9 GB compressed)...
0%
1GB 切るぐらいなのですぐに終わりました。
デフォルトのディスクサイズが20GBなので起動前に広げておくとよいようです。
tart set ubuntu --disk-size 50
起動します。
tart run ubuntu
起動しましたが、GUI は設定されておらずコンソールでのログイン画面になります。
デフォルトのユーザー/パスワードは admin/admin です。
デスクトップ環境を使用したいので、モジュールをインストールしました。
sudo apt update
sudo apt install ubuntu-desktop
VM を起動し直すと GUI のログイン画面が表示されました。
ログインすると無事にデスクトップ環境が使えるようになりました。
数時間ほど環境構築やアプリケーションのビルドなどを行ってみましたが、サクサク動いて快適な VM 環境でした。
独自イメージの作成
#Tart CLI で macOS の IPSW ファイル(iOS などのファームウェア形式のファイル)や Linux の ISO イメージから VM イメージを作成することも可能です。
macOS のイメージ作成例。
tart create --from-ipsw=latest sonoma-vanilla
上記コマンド実行時は ipsw.me から IPSW ファイルをダウンロードしてイメージを作成するようです。
Linux のイメージ作成例。
tart create --linux ubuntu
tart run --disk focal-desktop-arm64.iso ubuntu
OCI のレジストリなら push 可能なので ECR などにイメージを push し利用時に pull 可能です。
Packer 用のプラグインもあり、Tart のイメージを Packer で作成・管理可能です。
EC2 の Marketplace では AWS での利用に最適化された設定の Tart が利用できる AMI が利用可能です。
AWS Marketplace: Tart Virtualization for macOS
macOS のイメージを Packer で管理するより簡単で、パフォーマンスも良好とのことです。
CI ランナー
#Cirrus Runners は macOS の場合 Tart、Linux の場合は vetu という仮想化技術を利用して CI ランナーを提供します。GitHub Actions や GitLab CI から利用できます。
GitHub Actions の場合は、オーガニゼーションで Cirrus Runners アプリを設定すれば、あとはワークフローファイルで Cirrus Runners を指定するだけです。
name: Tests
jobs:
test:
runs-on: ghcr.io/cirruslabs/macos-sonoma-xcode:latest
macOS の場合、GitHub でホストされるランナーよりかなりお安くなるようです。
おわりに
#Tart による VM の使用感は良好でした。
今のところ macOS の VM を使う予定はないですが、検証などでホストマシンの構成を大きく変えたくない場合など、VM を手早く用意できるのは心強いです。
以前の記事「OrbStack - macOS 専用の高速軽量なコンテナ & Linux VM 環境」で紹介した OrbStack の VM はシェル環境のみのサポートでした[2]。Tart ではデスクトップ環境も利用可能ですので Linux デスクトップアプリの動作確認に重宝しそうです。
Windows は・・実機で使いましょう[3]。
macOS や iOS のネイティブアプリ開発で CI/CD パイプラインを構築するケースでは Cirrus Runners はよいソリューションになりそうです。
GitHub も macOS の Actions Runner を強化しているところなので、いずれ価格も下がってくるかもしれません。
Introducing the new, Apple silicon powered M1 macOS larger runner for GitHub Actions
現在では VMware Fusion は対応済み、VirtualBox も対応を進めているようです。- VirtualboxはApple Silicon Macで動作しますか? ↩︎
もちろん X サーバや VNC を導入すれば使えるとは思いますが OrbStack はコンテナの利用がメインのためそこまで頑張らないと思います。 ↩︎
Intel Mac の頃は VMware Fusion で Windows を動かして Office を使ったりしてましたが、Office 365 があるので大丈夫になりました。 ↩︎