UTMを使ってMacにLinux仮想環境を構築する(Apple Silicon対応)
はじめに
take64です。
今回はMacの中にLinux仮想環境を作ったので、その紹介です。
筆者環境
- Mac mini 2023
- Apple M2 Pro
- 32GB RAM
- macOS Ventura 13.3
そもそもUTMとは?
UTMホーム:https://getutm.app/
mac向け:https://mac.getutm.app/
UTMとはiOS/macOS向けに開発されている仮想化ソフトウェアです。
ベース実装はQEMUということで、VMWareやVirtualBoxと比べるとハードウェアエミュレーションの面での仮想化支援機能が薄いイメージがありますが、UTMはAppleのハイパーバイザ仮想化フレームワークを採用し、高速に動作するとのことです。
Apple M2 ProのMacでVirtual Boxがうまく動かない!
今まではずっとVirtual Boxに気に入ったLinuxイメージを入れて使ってたわけですが、
それが、Apple Siliconチップ上ではうまいこと動かない。
Virtual Box自体は動く
パフォーマンスは出ないけどプレビュー版で動作しますよという記述があり、実際にVirtual Box自体はApple siliconのmacでもちゃんと起動します。
相性問題がある
Apple siliconはARMベースということで、arm64のイメージならをVirtual Box上に載せれるのかというとそうではありません。
相性問題があり、載せれるディストリビューションの選択肢があまりありません。
なぜ、UTMに移行するのか?
VM環境をなぜ作るのかというところに帰結しますが「サービスを作りたい時にすぐ試せる環境があってほしい」というところが大きいです。
待っていればそのうちちゃんとした形でサポートされると思いますが、いつかわからないタイミングを待ち続けていると機運を逸してしまいます。
今動く環境で動かす方向に倒すので問題ないかなと思いました。
また、筆者がmacOSを使用しなくなる未来は結構遠いと感じています。
ダウンロード
インストール
よくあるmacのアプリインストール方法です。
インストールするイメージを探す(今回はdebian
インターネット経由の Debian のインストール
今回はdebianのarm64の軽量イメージを使います。
ダウンロードします。
UTMで「新規仮想マシンを作成」
「仮想化」を選択する
今回はApple Silicon(ARM)の上にdebian(ARM)なので、高速(らしい)「仮想化」を選択します。
オペレーティングシステムは「Linux」
debianのイメージをダウンロードしてきたように、今回のゲストOSはLinuxですので、素直にLinuxを選択。
「Apple仮想化を使用」にチェック
実験的となっていますが、普通に通るので使います。高速らしい。
ISOイメージを選択
先ほどダウンロードしておいたdebianのイメージファイルを読ませます。
ハードウェアでメモリとCPUを設定する
メモリとCPUの割り当てを設定します。
Linuxインストールに時間がかかると思いますので、一旦多めに割り当てると良いです。
あとで変更できます。
ストレージ
Linuxにそんなにストレージが必要になることはないのでは?と思うので
必要最小限で良いかと思います。
以下の場所にディスクファイルは保存されます。
/Users/{ユーザ名}/Library/Containers/com.utmapp.UTM/Data/Documents/{VMの名前}.utm/Data
また、ディスクサイズの変更はできませんが、編集メニューで後から新規ディスクを追加することができます。
(試したらできました。
名付け
管理しやすい名前をつけましょう。
起動する
設定が全て完了すると一覧に作成したVMが表示されますので、真ん中の再生マークみたいなのを押すと起動します。
Linuxのインストールが始まります
シンプルにLinuxのインストールなので割愛
実際どうか?
動作速度
普通に動作する、特に遅くなるタイミングなども感じない。
ヘッドレスモードがない
ウィンドウが開いてしまう。
筆者はVMを含めアクセス方法をターミナルを統一したいので、UTMのウィンドウは初期セットアップ以降使っておらず、
最小化しているが、Dockにアイコンは出てしまうので、気になる人は気になるかも。
Vagrantからよしなにできない
Vagrantにissueが上がってはいる状態
筆者は今までVagrant + Virtual Box に Amazon Linux2みたいな構成を愛用していたので、
ちょっと面倒なところですが、サーバーサイドは最近マネージド環境が大半で意図的に機会を作らないと触ることもないので良いかなと思っています。
面倒は面倒ですが、これくらいなら許容範囲かなと思いました。
Discussion