Macの仮想化はTartがよかった
最初に
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 sequoia
Vanilla だとサイズはおよそ 25GB 以内です。
イメージのダウンロードが終了すると、マシンの起動が可能になります。
list で確認できます。
$ tart list
Source Name Disk Size SizeOnDisk State
local sequoia 50 22 22 stopped
run
で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 での操作を両立させた使いやすいツールとなっていますので、手軽にデスクトップ環境を使いたい場合は活用してみてください。
Discussion