UTM: 独自の追加機能を備えたAppleハイパーバイザー

Table of Contents

UTM: 独自の追加機能を備えたAppleハイパーバイザー

Friday FOSS Fest UTMはMacやAppleのデスクトップPC向けの便利なハイパーバイザーですが、それだけではありません。非常に特殊な機能も備えています。私たちはUTMにすっかり魅了されています。

UTMはApple製品向けのデスクトップハイパーバイザーです。特にmacOS 11以降を搭載したMacに対応していますが、一部のiOSデバイスもサポートしています。(残念ながら、Reg FOSSデスクには、これを試すのに十分なほど新しく強力なハイパーバイザーが見つかりませんでした。)x86-64とApple SiliconベースのMacの両方をサポートし、他のほとんどのハイパーバイザーよりも多くの機能を備えています。Githubページにあるアラン・チューリングの言葉から判断すると、この名前はUniversal Turing Machine(万能チューリングマシン)の略語であると考えられます。

UTMは、macOS 10.10以降に搭載されているAppleの組み込みハイパーバイザー(ハイパーバイザー)のフロントエンドとして機能します。Appleのハイパーバイザーはそれ自体でも便利な機能を提供します。例えば、Linux仮想マシンからRosetta 2を呼び出して、x86-64からArm64への高速変換を実現できます。また、UTMは他の形式の仮想化もサポートしています。

Intel ベースの iMac 上で実行される Debian の Arm64 エディションは、支援なしの QEMU よりも UTM を使用するとはるかに簡単に実現できます。

Arm64 版の Debian を Intel ベースの iMac で動作させるのは、QEMU の支援なしの場合よりも UTM を使うほうがずっと簡単です (クリックして拡大)

もちろん、Mac用のデスクトップハイパーバイザーは既に存在します。VMware Fusion、Parallels Desktop、そしてもちろんクロスプラットフォームのVirtualBoxです。そのほとんどはApple Silicon Mac用のネイティブバージョンも利用可能ですが、標準的なハイパーバイザーと同様に、基盤となるホストマシンと同じCPUタイプの仮想マシンを実行します。例えば、Parallelsのナレッジベースでは、Apple Silicon MacではArm版Windowsしか実行できないことが丁寧に説明されています。

これはハイパーバイザーの標準的な動作です。ハイパーバイザーは基盤となるハードウェアを仮想化するため、VMはホストと同じタイプのCPUを使用します。つまり、x86-64上でx86-64ハイパーバイザーを実行する場合、x86-64ゲストしか実行できず、Arm上でArmハイパーバイザーを実行する場合、Armゲストしか実行できません。

UTMが他と異なるのはこの点です。Appleハイパーバイザーに加え、フランスの低レベルプログラミングの達人Fabrice Bellard氏によるオープンソースのQEMUもサポートしています。

QEMUは、複数の異なる動作方法を持つ、特異で複雑なツールです。そのため、しばしば誤解されています。QEMUはシステム全体のエミュレータとして機能し、あるCPUファミリー向けのソフトウェアを全く異なるCPUで実行できます。そのために、エミュレートされたハードディスクドライブ、グラフィックカード、ネットワークカードなど、エミュレートされたシステムの動作に必要なすべての仮想ハードウェアを作成および管理するためのツールを備えています。

しかし、ここで混乱を招くのは、2007年のバージョン2.6.20以降、Linuxカーネルには独自のKVMハイパーバイザーが組み込まれており、これが最新のIntelおよびAMDチップのハードウェア仮想化機能を利用するようになっている点です。これは、 Reg FOSS Deskが2011年に詳細に解説しています。しかし、 KVMができることといえば、仮想化インスタンスを起動・停止するCPUの組み込み機能と通信することだけです。KVM単体では、仮想ディスクドライブやグラフィックアダプタなどを定義する機能は一切ありません。

ここでQEMUの出番です。QEMUは、この補助的なフロントエンド基盤を提供するために、ほとんどのLinuxディストリビューションで広く利用されています。つまり、VM用の追加ハードウェアの作成、提供、管理を行うのです。基本的に、LinuxカーネルがCPUを提供し、QEMUが残りの処理を行います。このモードでは、QEMUはプロセッサエミュレーションを一切行いません。OSがプロセッサエミュレーションを提供するため、ゲストコードは実際のCPU上でネイティブに近い速度で実行されます。あまり知られていないのは、macOSでも同じことができるということです。

QEMUに関する誤解はここにあります。QEMUは、カーネルとCPUが関連機能を提供することで、フルシステムエミュレーターとしても、タイプ2ハイパーバイザーとしても機能します。

UTMは、2つの異なるハイパーバイザーを使いやすいGUIで包み込み、そのうち1つは2つの異なるモードで動作可能です。Appleハイパーバイザーを直接使用して、基盤となるIntelまたはApple Silicon CPUを仮想化できます。また、ネイティブ速度の仮想化を実現するハイパーバイザーとして、あるいはエミュレーションモードでQEMUを使用することもできます。

Sonoma 搭載の M1 MacBook Air でクラシック MacOS と Solaris の両方を実行している UTM。

Sonoma 搭載の M1 MacBook Air でクラシック MacOS と Solaris の両方を実行している UTM (クリックして拡大)

つまり、UTMはApple Silicon上でx86ゲストを実行できること、またIntel Mac上でArm64ゲストを実行できるということです。さらに、Armとx86に限定されず、Intel MacとArm64 Macの両方でPowerPCまたはSPARC VMを実行できます。

これをテストするために、MacOS9LivesからmacOS 9.2.2のユニバーサルインストールISOファイルをダウンロードし、PowerPC VMを選択しました。数分後、macOS VenturaでClassicが動作していることに感動しました。また、Core i7 iMacにArm64版Debian 12をインストールしました。

独自のVMを構成したくない場合は、UTMがあらかじめ構築されたゲストイメージのギャラリーを提供しています。テストでは、PowerPCネイティブのClassic MacOS 9.2.1をM1 MacとCore i7 Macの両方で実行することに成功しました。また、SPARC版のSun Solaris 9も両方のマシンで実行できました。

  • パニックボタンは気にしないでください。落ち着くための鍵があります
  • オリジナルのギャングエディタのファンは目をそらしてください。これは1976年のようには動作しないテキストエディタ、Tildeです。
  • クラシックなフライングトースターのスクリーンセーバーが復活
  • Taekwindow: マウスの中ボタンを有効活用する時が来た

エミュレーションは真の仮想化ほど高速ではありません。SPARC VMは確かに高速とは言えませんでしたが、それでも使えるレベルです。しかし、8年前のCore i7でさえ、macOS 9をネイティブ起動できる最速のMacよりも大幅に高速です。macOS 9はわずか40MBのRAMで、233MHzのG3 Macでも問題なく動作しました。21世紀の基準からすると、それほど負荷の高いOSではありません。

これはMac OS X 10.0から10.4までのクラシックモードとは異なります。ホストOSとゲストOS間の連携がほとんどなく、ファイルを移動させるには自分で工夫する必要があります。それでも、UTMがこのエミュレーション機能をいかに簡単に実現しているかには、非常に感銘を受けました。

また、Fedora 39 ベータ版を UTM でもテストしましたが、VirtualBox よりもスムーズに動作しました。これは、Fedora のネイティブ ハイパーバイザーである GNOME Boxes が、基盤となる同じ QEMU ツールを使用しているためだと考えられます。

すべてのエミュレーション機能が必要ない場合でも、最新の Fedora ベータ版を実行している、完全に実用的な x86-on-x86 ハイパーバイザーです。

エミュレーション機能をすべて必要としない場合でも、これは完全に機能する x86-on-x86 ハイパーバイザーであり、ここでは最新の Fedora ベータ版を実行しています (クリックして拡大)

M1 MacBook Airでx86-64 OS全体を動作させたところ、あまり印象に残りませんでした。Rosetta 2はアプリごとの翻訳を行うため、システム全体のエミュレーションには対応していません。ゲストOSのパフォーマンスは少し低調でしたが、許容範囲内で、適度な使用であれば許容範囲内でした。

これは、1980年代後半にRISC OS上でAcornの!PCEm [PDF] ソフトウェアPCエミュレータを使っていた頃を強く思い出させるものでした。ネイティブソフトウェアが利用できるならそれを使うのが望ましいですが、8MHzのARM2がx86 PCを実用的な速度で完全にエミュレートできるだけのパワーを持っていたことは非常に印象的でした。35年前、ARMコンピュータが640KBのRAMを搭載した5MHz未満のXTクラスのIBM互換機をエミュレートできたことは印象的でしたが、今日では4GBのRAMを搭載した64ビットマルチコアPCをエミュレートできるのも同様に印象的です。

UTM は Github から無料でダウンロードできますが、Apple の macOS App Store から入手する場合は 9.99 ドルかかります。この料金はプログラムの開発資金となります。®

Discover More