最初に
Apple Silicon Mac で仮想マシンを使うときといえば、GUI なら UTM や VMWare Fusion、VirtualBuddy, Parallels Desktop が有名です。CUI なら Multipass や OrbStack などがあげられるでしょう。どれも良いものですが、個人的には GUI のアプリケーションはターミナルから起動するのがやや面倒で、CUI のものは GUI のセットアップが面倒でした。
そこで、今回紹介するのが、Tart です。
cirruslabs/tart は Apple Silicon 上で macOS および Linux 仮想マシンを構築、実行、管理するための仮想化ツールセットです。Apple Virtualization Framework によって高速な仮想マシンを利用することができます。(Toolset to build, run and manage macOS and Linux VMs - Tart Virtualization)
Tart は cli から仮想マシンの管理を行いますが、仮想マシンを起動すると、GUI が立ち上がります。
調べてみましたが何も分かりませんでした!としてしまいそうなほどに情報がありませんでした。
Tart の存在を教えてくださった豆蔵デベロッパーサイト様に、ここで謝意を述べさせていただきます。 Tart で macOS / Linux の仮想マシンを使う | 豆蔵デベロッパーサイト
*Cirrus Runners では仮想化技術として Tart を用いて CI ランナーを提供していますが、今回は扱いません。
インストール
Homebrew からインストールできます。
brew install cirruslabs/cli/tartインストールするときは、homebrew/core/tart ではなく、cirruslabs/cli/tart をインストールするようにしましょう。
homebrew-core のほうは 2024/08/14 現在、0.38.0 からアップデートされていません。最新バージョンは 2.17.0≤ となります。
仮想マシンを実行する
ほとんどQuick Start - Tart Virtualization に記載されている通りです。
公式イメージから
macOS
要件は macOS 13.0 以上となります。
Tart がインストール済みのマシンで、GitHub コンテナレジストリからプレーンな macOS Sequoia 15.1 beta2 の公式イメージを取得します。
tart clone ghcr.io/cirruslabs/macos-sequoia-vanilla:15.1-beta-2 sequoiaVanilla だとサイズはおよそ 25GB 以内です。
イメージのダウンロードが終了すると、マシンの起動が可能になります。
list で確認できます。
$ tart list
Source Name Disk Size SizeOnDisk State
local sequoia 50 22 22 stoppedrunで VM が実行できます。
tart run sequoia実行すると新しいウィンドウが開き、仮想マシンの macOS が起動します。かなり起動が早いです。
取得可能な公式イメージはfull list of imageに掲載されています。
ざっくりとした特徴としては、以下の通りです。
- macos-{sequoia, sonoma, …}-vanilla
- プレーンな macOS イメージ
- macos-{sequoia, sonoma, …}-base
- homebrew がインストール済みの macOS イメージ
- macos-{sequoia, sonoma, …}-xcode
- 指定されたバージョンの Xcode と Fullter がインストールされた macOS イメージ
- macos-runner
- Xcode が最新バージョンまで 3 つとバージョン管理用の Xcodes ツールがインストールされた macOS イメージ
Linux Distro
tart clone ghcr.io/cirruslabs/ubuntu:latest ubuntuデスクトップ環境がないので、早いです。 0.9GB だけ
tart run ubuntu起動するとこんな感じ。 
こちらも取得可能な公式イメージはfull list of imagesに掲載されています。
Ubuntu, Debian, Fedora があります。
ログインなど
公式イメージはすべて、
user : admin
passwd : adminでログイン可能です。
SSH 接続
tart ip <name>で、VM の IP アドレスを取得できます。
公式イメージは SSH 接続ができる状態ですので、
ssh admin@$(tart ip <name>)で、接続可能です。
VM のカスタマイズ
あらかた導入ができたら、仮想マシンのカスタマイズを確認しておきましょう。
ストレージサイズは公式イメージは Linux だと 20GB なので、変更の必要性が高そうです。
tart get <name>で現在の構成を確認することができ、
tart set <name> [ --option ]で仮想マシンをカスタマイズすることができます。
設定項目は以下の通りです。
| Option | Description |
|---|---|
| cpu | CPU のコア数 |
| memory | メモリサイズ (メガバイト単位) |
| display | 表示解像度。1200x800 で示す |
| random-mac | 新しいランダム MAC アドレスを作成 |
| random-serial | 【macOS のみ】 新しいシリアル番号を生成する |
| disk | path のディスクを VM に接続する |
| disk-size | VM ディスクのサイズを指定したサイズ (GB) に変更 |
tart-cli の注釈
ディスクのサイズ変更は、ほとんどのクラウド対応 Linux ディストリビューションで使用でき、それ以外のディストロでもgrowpartやresize2fsを実行することで機能しますが、macOS の場合は回復パーティションを削除する必要があります。
詳細については、Tart の Packer プラグインのソースコードを参照してください。
tart set ubuntu --disk-size 50 --memory 16384これで作成済みの Ubuntu マシンのディスクサイズを 50GB に、メモリを 16384MB にすることができます。
ローカルで仮想マシンを構成する
Docker のような感覚で、用意されている OCI 互換イメージを利用することもできるのですが、やはり、自分で一から作成したいときもあります。
ローカルのイメージから作成
【macOS】 IPSW ファイル
$ tart create --from-ipsw <location> <name>これだけです。IPSW から直接 OS が作成できるのはうれしいですね。VMWare Fusion なんかは ISO イメージを作成しないといけなかったので。 パスは、ローカルのファイルパスだけでなく、URL も対応していますので、公式サイトのダウンロードページから直接リンクを渡すことが可能です。
ちなみに、
tart create --from-ipsw=latest <name>とした場合、対応する IPSW ファイルを自動的に取得してイメージを作成します。 この使い勝手は VirtualBuddy と似ているといえそうです。
インストール後のセットアップ
VM の初回起動後、macOS のインストールプロセスを手動で実行する必要があります。Managing Virtual Machine - Tart Virtualization によると、いくつかするべきことがあるらしいです。
- 自動ログインを有効にする。
Users & Groups -> Login Options -> Automatic login - SSH を許可する
Sharing -> Remote Login - ロック画面を無効にする。
Preferences -> Lock Screen -> disable "Require Password" after 5 - スクリーンセーバを無効にする
- ターミナルで
sudo visudoを実行し、%admin ALL=(ALL) ALLをadmin ALL=(ALL) NOPASSWD: ALLに変更し、パスワードなしで sudo を許可する。
【Linux】 ISO イメージ
Linux の場合は少し手順が変わります。
tart create --linux <name>で、Linux VM を作成し
tart run --disk <path/to/os.iso> <name>
でインストールディスクをマウントした状態で起動すると、インストール画面が現れます。
そのあとは、必要に応じてVM のカスタマイズをしてください。
SSH の接続はできるようにしておきましょう。
まとめ
Tart は Apple Silicon Mac 上で高速な仮想マシン環境を提供します。公式サイトによると、GeekBench 5.5.0 では VirtualMac ではホストの 95%程度のスコアをたたき出しているそうです。
CUI での管理と GUI での操作を両立させた使いやすいツールとなっていますので、手軽にデスクトップ環境を使いたい場合は活用してみてください。