Tart で macOS / Linux の仮想マシンを使う

| 5 min read
Author: masahiro-kondo masahiro-kondoの画像

はじめに

#

筆者が 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も提供されています。

Information

Tart は個人用マシンで使用する場合は無料です。サーバーのインストール数が一定数を超える組織は有償ライセンスの取得が必要です。

Support & Licensing - 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 を見るとおおよそ使い方がわかると思います。

Quick Start - Tart

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

macOS starting

起動はかなり速いです。

macOS Desktop

Xcode もちゃんと起動しました。筆者が使用しているホストマシンは macOS Ventura ですが、macOS Sonoma の VM で最新の Xcode を利用できます(筆者は Xcode Command Line Tools しか使いませんが)。

run xcode

デフォルトではメモリ8GBと心許ないので、拡張してみます。

8GB

一旦 Control メニューから VM を停止します。

stop

Tart CLI で VM を指定してメモリサイズを MB 単位で設定します。

tart set sonoma-xcode --memory 16384

tart run で VM を起動し直すと無事にメモリが増えていました。

16GB

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 は設定されておらずコンソールでのログイン画面になります。

Ubuntu console

デフォルトのユーザー/パスワードは admin/admin です。

デスクトップ環境を使用したいので、モジュールをインストールしました。

sudo apt update
sudo apt install ubuntu-desktop

VM を起動し直すと GUI のログイン画面が表示されました。

login gui

ログインすると無事にデスクトップ環境が使えるようになりました。

Ubuntu desktop

数時間ほど環境構築やアプリケーションのビルドなどを行ってみましたが、サクサク動いて快適な VM 環境でした。

独自イメージの作成

#

Tart CLI で macOS の IPSW ファイル(iOS などのファームウェア形式のファイル)や Linux の ISO イメージから VM イメージを作成することも可能です。

macOS のイメージ作成例。

tart create --from-ipsw=latest sonoma-vanilla
Information

上記コマンド実行時は ipsw.me から IPSW ファイルをダウンロードしてイメージを作成するようです。

Linux のイメージ作成例。

tart create --linux ubuntu
tart run --disk focal-desktop-arm64.iso ubuntu

OCI のレジストリなら push 可能なので ECR などにイメージを push し利用時に pull 可能です。

Managing VMs - Tart

Packer 用のプラグインもあり、Tart のイメージを Packer で作成・管理可能です。

Building with Packer - Tart

Information

EC2 の Marketplace では AWS での利用に最適化された設定の Tart が利用できる AMI が利用可能です。

AWS Marketplace: Tart Virtualization for macOS

macOS のイメージを Packer で管理するより簡単で、パフォーマンスも良好とのことです。

Tart is now available on AWS Marketplace - Tart

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

GitHub Actions - Tart

macOS の場合、GitHub でホストされるランナーよりかなりお安くなるようです。

Pricing - Cirrus Runners

おわりに

#

Tart による VM の使用感は良好でした。

今のところ macOS の VM を使う予定はないですが、検証などでホストマシンの構成を大きく変えたくない場合など、VM を手早く用意できるのは心強いです。

以前の記事「OrbStack - macOS 専用の高速軽量なコンテナ & Linux VM 環境」で紹介した OrbStack の VM はシェル環境のみのサポートでした[2]。Tart ではデスクトップ環境も利用可能ですので Linux デスクトップアプリの動作確認に重宝しそうです。

Windows は・・実機で使いましょう[3]

macOS や iOS のネイティブアプリ開発で CI/CD パイプラインを構築するケースでは Cirrus Runners はよいソリューションになりそうです。

Information

GitHub も macOS の Actions Runner を強化しているところなので、いずれ価格も下がってくるかもしれません。

Introducing the new, Apple silicon powered M1 macOS larger runner for GitHub Actions


  1. 現在では VMware Fusion は対応済み、VirtualBox も対応を進めているようです。- VirtualboxはApple Silicon Macで動作しますか? ↩︎

  2. もちろん X サーバや VNC を導入すれば使えるとは思いますが OrbStack はコンテナの利用がメインのためそこまで頑張らないと思います。 ↩︎

  3. Intel Mac の頃は VMware Fusion で Windows を動かして Office を使ったりしてましたが、Office 365 があるので大丈夫になりました。 ↩︎

豆蔵では共に高め合う仲間を募集しています!

recruit

具体的な採用情報はこちらからご覧いただけます。