🍎 VagrantとUTMでApple Silicon上にx86_64 VM環境(Ubuntu)を構築した話
Apple Silicon Mac(M1/M2/M3など)で、古いプロジェクトや特定の要件のためにx86_64(amd64)アーキテクチャのLinux環境が必要になることがあります。
これまで一般的だったVirtualBoxがApple Siliconではx86_64(amd64)環境のVM未対応のため、今回はVagrantとUTMを組み合わせて環境を構築する方法をまとめました。
💡 補足
Aarch64でもUbuntuは動くので、特にamd64でしかコンパイルされてないアプリを入れたいとか、限られた要件以外ではこのドキュメントは意味がないです。
📋 前提環境
- Host: Apple Silicon Mac (M1/M2/M3)
- Guest OS: Ubuntu 24.04 (amd64 / x86_64)
- Tools: Vagrant, UTM
1. UTMのインストール 📥
まずは仮想化基盤となるUTMをインストールします。
- UTM公式サイトからダウンロード
- またはHomebrewでインストール:
brew install --cask utm
2. Vagrant UTMプラグインのインストール 🔌
VagrantからUTMを操作するためのプラグインを入れます。
vagrant plugin install vagrant_utm
⚠️ プラグインの修正が必要な場合(2025/12時点)
vagrant_utm プラグインの一部ファイルで改行コードの問題があり、エラーになるケースが報告されています。
以下の2つのAppleScriptファイルの改行コードが壊れている場合は、修正が必要です。
~/.vagrant.d/gems/<version>/gems/vagrant_utm-<version>/lib/vagrant_utm/scripts/add_port_forwards.applescript~/.vagrant.d/gems/<version>/gems/vagrant_utm-<version>/lib/vagrant_utm/scripts/read_forwarded_ports.applescript
GitHubのIssueやPRを参考に、適切な改行コードに修正してください。
3. Vagrantfile (設定ファイル) の記述 🛠️
Vagrantfile(または読み込ませるYAML設定ファイル)で、プロバイダーに utm を指定し、アーキテクチャに amd64 を明示します。
以下は設定のイメージです。
Vagrant.configure("2") do |config|
# Boxの指定 (x86_64向けのBox)
config.vm.box = "bento/ubuntu-24.04"
config.vm.box_architecture = "amd64"
# UTMプロバイダーの設定
config.vm.provider :utm do |utm|
utm.cups = 2 # 必要なCPUリソースを割り当ててください
utm.memory = 2048 # 必要なメモリリソースを割り当ててください
end
end
もし vagrant-managed-servers や独自のYAMLローダーを使っている場合は、以下のような変数を設定します。
# box image
vm_box: "bento/ubuntu-24.04"
# 必ずamd64 (x86_64) を指定する
box_architecture: "amd64"
# providerの指定
vm_provider: "utm"
4. 起動と確認 🚀
設定ができたら通常通り起動します。
vagrant up --provider=utm
vagrant ssh
vagrant@project-local:~$ uname -m
x86_64
💡 注意点
- 速度: 仮想化フレームワークQEMUを使いますが、異なるアーキテクチャのエミュレーション(x86_64 on ARM64)になるため、ネイティブ動作やARM版VMに比べると動作は遅くなります。
-
初回起動: 初回の
vagrant upは時間がかかる場合があります。気長に待ちましょう。 - ネットワーク: UTMを使用する場合、VirtualBoxとはネットワークインターフェースの扱いが異なる場合があります。ポートフォワーディング等がうまく動かない場合はUTM側の設定も確認してみてください。
🎓 まとめ
Apple Silicon MacでもUTMを使うことで、Vagrantワークフローを維持したままx86_64環境を構築可能です。
既存の Vagrant 資産を活かしつつ、Apple Silicon 上で x86_64 のフル OS 環境を再現する手段として、UTM は非常に強力な選択肢になります。
📝 あとがき
Lima や OrbStack といった軽量で高速な仮想化ツールもありますが、なるべくチームで使っている Vagrantfile を活用した方がチーム全体の学習コストや環境差異を減らせるため、個人的にはこの構成を推しています。
個人利用の場合は DockerDesktop などを使うのが手軽で良い選択肢だと思います。
あとvagrant_utmのプラグインはまだできたてっぽいOSSなのでみんなで盛り上げていけたらいいなと思います!(一応自分もコントリビュータになってます)