6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

意外と知られていないVagrantとUTMでApple Silicon上のx86_64VM環境(Ubuntu)を構築した話

Posted at

🍎 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未対応のため、今回はVagrantUTMを組み合わせて環境を構築する方法をまとめました。

💡 補足
Aarch64でもUbuntuは動くので、特にamd64でしかコンパイルされてないアプリを入れたいとか、限られた要件以外ではこのドキュメントは意味がないです。

📋 前提環境

  • Host: Apple Silicon Mac (M1/M2/M3)
  • Guest OS: Ubuntu 24.04 (amd64 / x86_64)
  • Tools: Vagrant, UTM

1. UTMのインストール 📥

まずは仮想化基盤となるUTMをインストールします。

brew install --cask utm

2. Vagrant UTMプラグインのインストール 🔌

VagrantからUTMを操作するためのプラグインを入れます。

vagrant plugin install vagrant_utm

⚠️ プラグインの修正が必要な場合(2025/12時点)

vagrant_utm プラグインの一部ファイルで改行コードの問題があり、エラーになるケースが報告されています。

以下の2つのAppleScriptファイルの改行コードが壊れている場合は、修正が必要です。

  1. ~/.vagrant.d/gems/<version>/gems/vagrant_utm-<version>/lib/vagrant_utm/scripts/add_port_forwards.applescript
  2. ~/.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 は非常に強力な選択肢になります。

📝 あとがき

LimaOrbStack といった軽量で高速な仮想化ツールもありますが、なるべくチームで使っている Vagrantfile を活用した方がチーム全体の学習コストや環境差異を減らせるため、個人的にはこの構成を推しています。

個人利用の場合は DockerDesktop などを使うのが手軽で良い選択肢だと思います。

あとvagrant_utmのプラグインはまだできたてっぽいOSSなのでみんなで盛り上げていけたらいいなと思います!(一応自分もコントリビュータになってます

6
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?