【仮想化】macOSのUTMでApple SiliconのmacOSを動かす
元記事があまりにも情報頂戴になりすぎたということもあり、macOSで動かせる仮想環境である「UTM」について、記事を分割することにしました。
第一弾はエミュレーションを行わないVirtualizationで動かせる同じApple SiliconなmacOSをゲストとして動かす手法です。ARM64環境なmacOSをゲストで動かせるメリットは大きいので、ぜひチャレンジしてみて下さい。
目次
今回利用する素材
自身がすでにM1 Macに移行済みであるため、Intel Macがホストの場合についてはこのエントリーでは取り扱いません。同じARM64環境同士であるため、エミュレーションによるオーバーヘッドも無く、ホスト環境を汚さずに検証が出来る為と、Monterey以降のmacOS環境を都度確保できるので、アプリの実行環境のキープにも役立ちます。
UTMそのもののインストールや使い方に関する基本は以下の本エントリーを参照してください。
macOSをゲストで構築する
概要
UTMでは、ゲストOSとしてARMアーキテクチャのmacOSをインストールすることが出来ます。Montereyから可能になっていますが、IntelアーキテクチャではないためCPUエミュレーションが無い分非常に快適に動作します。ゲストでmacOSを使う理由の中で一番有意義なのは「開発環境の構築テストをする為」というのが挙げられます。ホストのOSを汚さずに、色々な開発環境用のアプリのインストールとテストを行えるので、M1でまだまだ十分ではないmacOSの開発環境構築では利点が大きいです。
ISOやインストーラのappではなく、Appleで用意されてるIPSWファイルというものを使って仮想環境を構築する必要があります。ちなみに、こちらのサイトにipswファイル一覧があります。
OSのインストール
以下の手順はmacOS Montereyの場合の手順ですが、最新版でも同じ手順です。Montereyのインストールそのものは難しくありません。M1 MacでホストがMontereyならばOS自体用意せずに自動的にバックアップファイルから構築してくれるようです。
- 新規仮想マシンを作成をクリック
- 仮想化を今回は選択
- macOS 12以降をクリックする
- そのまま続けるをクリックすると最新のipswというバックアップファイル(IPSWファイル)を自動でダウンロードしてきます。任意のIPSWを指定することも可能です。
- RAM 6GB, 4コア, HDDは100GBで指定しました
- 自動的にインポート作業が開始されます。
- インストールが終わるとサイドバーにmacOSのアイコンが出現します
- 起動すると何やらメッセージ(仮想HDDの中身消すけどOK?的な)が出ますが、OKをクリックして進める
- 10分くらいバックエンドでインストール作業が進む。
- 完了するとHelloの文字とともにセットアップが開始されます
図:インストールソースはバックアップファイル
図:セットアップ自体は普通に進めます
ゲストツール
UTM 4.6.1Betaより、新たにApple SiliconのゲストOS用にゲストツールが提供されました。これによりホストのmacOSとゲストのmacOSとの間でクリップボードの共有ができるようになりました。URLをコピーしてゲスト側で貼り付けて開くといったことが可能になります。
- ゲストツールは画面の右上のCDROMアイコンをクリックすると、「ゲストツールをインストール」が出てくるので、クリックする
- デスクトップにGUEST TOOLSがマウントされるので開いて、spice-vdagent-0.22.1.pkgみたいなのが出てくるので起動する
- インストールし、完了したら再起動する
- ホストのChromeでURLをコピー、ゲストのSafariで貼り付けといったことができるようになっています。
まだ、ファイルのドラッグ&ドロップみたいなことはUTMでは出来ないようです。
図:ゲストツールのインストール
現時点での問題点
以下のような問題点があります
- ゲストの解像度をウィンドウのサイズに合わせて自動調整はされません(UTM v 4.6.1から動的変更に対応しました。ただしホストがSonoma以降である必要があります。)
- キーボードが101英語キーボードとなるため、日本語キーボードのmacOSだとマップされてるキーが異なる(@マークはShift+2キーで出る)。この問題点はIssueでも取り上げられています。
- どうやら、AppleのHypervisor Frameworkのバグが原因のようだ。しかし、AppleはVenturaの頃から報告されているのに直そうとはしていないようです。
- その為、日本語入力のIMEのオンオフもオカシナ状態に
- KeyboardSetupAssistant.appが起動しないので現状変更も出来ない
- 現在のmacOSにはKeyboardtype.plist等という設定ファイルは存在しないので削除して修正も出来ない。
- UTMの設定画面も他のOSと違いちょっと特殊になってる
- 仮想環境下からのApple IDでのアカウントログインはできません(Apple側から弾かれてる為)。よって、Mac App Storeが利用できません。
- ISOファイルやmacOSインストーラのappからの仮想環境構築はできません。
macOSのAVFの不具合によりM4チップのmacではゲストにmacOSが利用できません(macOS 15.2 Sequoiaで修正されて再度、ゲストにmacOSが使えるようになりました。)- ゲスト環境でiCloudが利用できない(UTM v4.6.0BetaよりmacOS 15.x Sequoiaの場合はiCloudへのログインができるようになりました。)
ただキーボードの環境設定にて、入力ソースにCapsLockでオンオフの設定があるので、これで日本語入力のオンオフは対応出来ますし、Karabiner-Elementsで設定して変えるという手もあるので、なんとかなります。こちらのサイトにターミナルから設定変更する手段が掲示されています。
ディスプレイ設定もUTM側のDisplayに細かい解像度設定があるので、こちらで設定しておくと良いでしょう。ネットワークはShareになっているので、自分はBridgeに変更しています。
※v4.0.1 BetaよりVenturaをサポートし、クリップボード共有とディレクトリ共有が利用可能になったようです。
図:日本語入力オンオフはここで暫定対応
図:解像度変更はUTM側に存在する
M4 MacでAVF不具合にてVMが起動しない
M4チップを搭載したMacにてUTMに限らず、Ventura以前のmacOSのVMが起動しない・作成できないという問題が2024年11月頃からありました。この現象はmacOSのAVF(Apple Virtualization.framework)の不具合によるものとして、黒い画面のままで動かせないという事が発生していました。
この問題に対して、AppleはmacOS 15.2 Sequoiaにて修正されました(2024年12月12日)。よって、macOS 15.1のままの人はアップデートすることでまたUTMでmacOSのVMを構築し動かすことが出来るようになります。
また、この15.2のアップデートにより仮想マシン内に於いてこれまでは出来なかったApple IDでログインしてのiCloudの利用が出来るようになったようです(Apple Storeは依然としてログインは出来ません)
ホストと共有する機能
ゲストがmacOSの場合だけ、ホストとディレクトリ共有する機能がちょっと特別です。ホスト側のディレクトリを指定するだけで、仮想環境内のmacOSにはドライブとしてホスト側のディレクトリ内が表示されてファイルのやり取りが簡単にできる仕組みが備わっています。
ただし、ゲストがmacOS 13(Ventura)以降の場合にだけ利用できます。
UTMの設定画面から共有フォルダを追加するのではなく、メイン画面でmacOSの仮想環境を選んだ状態で、右下にある「新規共有ディレクトリ」をクリックして追加する仕組みなのでちょっと変則的です。
図:ここからディレクトリの追加は出来ない
図:共有するとこのように表示される
リカバリモードを使う
Apple SiliconのmacOSは電源ボタン長押しでリカバリモードに入ることが可能です。しかし仮想環境の場合電源長押しなんていうアクションはやりようがありません。しかし、UTMは違います。Apple Silicon macOSのリカバリモードに対応しており対象仮想環境を右クリック→復旧を実行で簡単にリカバリモードで起動させることが可能です。
これはUTM 4.2.5以降から対応してるため、SonomaでなくともMontereyでも動作すると思います。
リカバリモードではTimemachineからの復旧やセキュリティをあえて落としてレガシーシステム拡張機能を動作させるなどの実験を行うことができるため、実機でやるにはちょっと・・・といったテストを仮想環境で実験することが可能になります。
図:直接リカバリモードで起動可能
図:リカバリモードで起動できた
ISOファイルを利用する
インストーラからISOファイルを生成する
通常、UTMでmacOSの仮想環境を構築する場合にはIPSWファイルが必要です。過去のIPSWなどのファイルについてはこちらのサイトからAppleからの直リンクを拾うことができるので、そこからIPSWファイルを手に入れると良いでしょう(UTMはデフォルトではIPSWを指定しない場合、自動的に最新版のmacOSのIPSWをダウンロードしてインストールが開始されます)
一方で、App Storeから毎回macOSのインストーラを手に入れてる人は、アプリケーションフォルダ内に「macOS Sequoiaインストール」みたいなファイルがいるハズ。これをそのままUTMで利用することは出来ないので、ISOファイルに変換が必要です。hdiutilを使ってターミナルから変換が可能です。
以下はshファイルを作成して実行する場合のコマンド群です。
#!/bin/sh set -eux hdiutil create -o /tmp/sequoia -size 16384m -volname ventura -layout SPUD -fs HFS+J #hdiutil create -o /tmp/sequoia -size 6384m -volname ventura -layout SPUD -fs HFS+J hdiutil attach /tmp/sequoia.dmg -noverify -mountpoint /Volumes/sequoia sudo /Applications/Install\ macOS\ Sequoia.app/Contents/Resources/createinstallmedia --volume /Volumes/sequoia --nointeraction hdiutil eject -force /Volumes/Install\ macOS\ Sequoia hdiutil convert /tmp/sequoia.dmg -format UDTO -o ~/Desktop/sequoia.cdr mv ~/Desktop/sequoia.cdr ~/Desktop/sequoia.iso
- hdiutil createでsizeにてテンポラリのimgファイルのサイズを指定していますが、サイズが足らない場合、「/Volumes/sequoia is not large enough for install media. An additional xx.xx GB is needed.」とエラーになります
- hdiutil attachでインストーラファイルをマウントしています
- sudoで実行してる部分がUSBメディアを作る場合と同じことをテンポラリのimgファイルに対して行っています。ここで管理者パスワードを求められるので入力します。
- hdiutil ejectにてインストーラファイルをアンマウントしています。
- hdiutil convertでimgファイルをisoファイルに変換しています。デスクトップにファイルが作成されます。
後述のMarvericksの項目では古いIntelモデルのInstallESD.dmgファイルからISO変換も行っています。同様のスクリプトで過去のインストーラもISO化しておくことができるでしょう(pkg形式の場合は、ダブルクリックでインストール実行するとアプリケーションフォルダにインストーラが生成されます)。
但し、Apple SiliconのmacOSをVMにインストールするという目的のためにISOファイルは使えません(あくまでもIPSWファイルからの復元のみ)
図:ISOファイル作成中の様子
ISOからインストールはできるのか?
UTMはVMware Fusionと違い、インストーラのappやISOからのOSインストールが原則できません。新規にVMを作成した時にIPSWに含まれてるファームも含めて利用して環境を構築してるため、空っぽの状態だとISOイメージを追加しても、そもそもブート自体出来ません。
しかし以下のパターンの時だけはISOイメージからの初期化が可能です。
- すでに先に別のmacOSのVM環境が存在して起動できる状態にある
- インストーラからISOファイルを生成し、VMにはディスクとして追加してる
この状態で、前述のリカバリーモードで起動すると、インストーラが認識されてる為、そこから復元することが可能です。既に入ってるVM環境を初期化してインストールすることになります。別の空のディスクを使う場合には、事前にディスクユーティリティからAPFS(GPT)にてフォーマットしておかないと、ディスクとして認識されません。
メリットとして、すでに構築済みのVMに対して新しいOSのアプデを適用即座に適用できる点。もちろんOS本体はApple IDでログインは出来ずともアプデは受け取れるのでこの手法である必要はないものの、この利点はケースによってはありがたい。
図:MontereyのVMでリカバリモードで認識
プレビュー版のインストール
macOSは正式リリース前にデベロッパー向けにBeta版やRC版がApple Developerから入手して先行してテストすることが可能です。この際に手にいれるIPSW形式のファイルを使って、UTMにてmacOSの仮想環境を構築して利用することができます。
ただし大抵、XCodeのプレビュー版も必要なので以下の手順で両方導入しましょう(XCodeはUTMじゃなくホスト側のOSにインストールする)。以下の事例はmacOS Sonomaのプレビュー版での事例になります。
OSのダウンロード
Public Previewの段階でApple Developer Programで登録してるApple IDでログインして作業が必要です。
- こちらのサイトにApple IDでログインする
- まずは、macOSのプレビュー版のipswを入手する必要があるので、こちらのサイトを開く
- macOSのところにMac computers with Apple siliconという項目があるのでクリックするとipswファイルがダウンロードされる。
- ちなみにpkg形式はUTMでは使えませんがこちらから直リンクでダウンロードが可能です
- 3.だけでは足りないので、XCode Betaをホスト側にインストールが必要なので手に入れるのですが、Applicationsからはなぜかダウンロードできないので、こちらのサイトを開く
- XcodeのDownloadをクリックすると、appleから直接xip形式でダウンロードされる
- ダウンロードされたxipファイルをダブルクリックして、中身を取り出す
- Xcode Betaをインストールする。このとき、iOSにもチェックを入れておく
これで、OSインストールの準備が整いました。
図:Sonomaには最新のXcode Beta版が必要
OSのインストール
インストールはここまで来たら、Montereyなどと同じように進めることが可能です。最新BetaのUTMを用いてインストールします。Guest Toolsとかは無いのと、色々な問題点は同じですが、色々先にお試しできますしVirtualizationなので十分なスピードが出ます。
- 新規仮想マシンを作成をクリック
- 仮想化を今回は選択
- macOS 12以降をクリックする
- ダウンロードしておいた、ipswファイルを指定して次に進む
- RAM 8GB, 4コア, HDDは120GBで指定しました
- 自動的にインポート作業が開始されます。
- インストールが終わるとサイドバーにmacOSのアイコンが出現します
- 10分くらいバックエンドでインストール作業が進む。
- 完了するとHelloの文字とともにセットアップが開始されます
- 途中のApple IDでのログインはできませんのでスキップが必要です。
新機能やUTM上での挙動などはこれから調べますが、Monterey同様に仮想化でも問題なく動作します。既にParallelsでもインストール方法が掲示されています。Sonomaの情報はこちらからどうぞ。
図:ipswから復元中の様子
図:Sonomaのセットアップ画面
図:あっさりインストール完了しました















