最近、M1 Macで仮想マシンを動かして遊んでいるのですが、Apple Chipを利用する上での悩みの一つとして「VirtualBoxが使えない」という点があります。
基本的にはRosetta2があるのでintel Mac向けのアプリも動作するのですが、VirtualBoxはどうもRosetta2では動かないらしく、最新版ではそもそもM1 Macではインストールもできない仕様になっています。というわけで、VirtualBoxの代わりとなる仮想マシンを導入しました。

VirtualBoxの代わりは?

Apple Chipで動作する仮想マシンといえばUTMやParalles Desktopなどがありますが、今回はUTMを選びました。
UTM | Virtual machines for Mac

しばらく使ってみましたがなかなか良さげです。GitHub版は無料ですが、App Store版は有料です。どちらもおそらく同様の機能が備わっていますが、感謝と応援を込めてお布施という形で有料版を買うのも良いかなと思います。

QEMUとVirtualization.frameworkの2種類の仮想化機能をサポートしており、Arm64アーキテクチャは仮想化、Arm以外のアーキテクチャはエミュレータとして動作します。Armの仮想化はかなり軽快に動いてくれますが、x86など他のアーキテクチャのエミュレータはかなり遅いです。

まだ開発段階で動作が不安定という声も見られますが、自分が使った限りでは全く問題なく動作しました。
機能の数はVirtualBoxに劣りますが、フォルダ共有やカーソルの一体化、クリップボードの共有、画面サイズの自動変更など、ある程度の機能は揃っており、特に不便を感じることはありませんでした。普通に利用する上なら問題ないと思います。

Ubuntu Desktopのaarch64版について

前述の通り、x86のエミュレータは動作が遅く、今回はArm版のUbuntuを仮想マシンにインストールします。

ただUbuntu Desktopは、現状Arm64向けの正式版はまだリリースされていません。Ubuntu Serverであれば既にArm64版も正式にリリースされているのですが。
検索してみるとServer版を入れてから手動でDesktop環境をインストールする手法がいくつかヒットしますが、GUIを別途インストールするのも面倒だし、もっと手軽な方法でUbuntu Desktopをインストールできないものか…

と、Ubuntu Releasesを探してみると、なんとUbuntu Desktop 20.04のArm64版のDaily Buildが置いてありました。とりあえず今回は下記の配布場所よりDaily BuildのArm64版をダウンロードしました。
Ubuntu 20.04.4 LTS (Focal Fossa) Daily Build
上記のリンクで「64-bit ARM (ARMv8/AArch64) desktop image」をクリック。

※以下は、2022年5月28日時点でのDaily Buildで行っているため最新のDaily Buildと若干異なる場合があります。ご了承ください。

実験環境

  • ホスト環境
    • MacBook Air 2020
      • macOS 12.2.1
      • Chip: Apple M1
      • RAM: 8GB
  • 仮想マシン
    • UTM version 3.2.1
      • 仮想化: QEMU
    • 仮想環境
      • Ubuntu 20.04.4 LTS (aarch64)
      • RAM: 4096MB
      • Disk: 64GB

インストール

まずはUTMをダウンロードしてインストール。
UTM | Virtual machines for Mac

そしてUbuntuのディスクイメージもダウンロード。
Ubuntu 20.04.4 LTS (Focal Fossa) Daily Build

その後、UTM上にUbuntu用の仮想マシンを作っていきます。
まずは画面上部の+ボタンをクリック。
スクリーンショット 2022-05-28 0.25.07

Linuxを選び、
スクリーンショット 2022-05-28 0.25.13

File ImportedのBrowseから、あらかじめダウンロードしておいたUbuntuのLive CDイメージを選択。
スクリーンショット 2022-05-28 0.25.23

次にハードウェアの設定。今回はRAMは4096MB、CPUは4コアとしました。
スクリーンショット 2022-05-28 0.25.30

ストレージサイズ。デフォルトの64GBで十分です。
スクリーンショット 2022-05-28 0.25.34

ホストOSと仮想マシンとの間の共有ディレクトリも設定できるみたいだけど、今回は使わないのでパス。
スクリーンショット 2022-05-28 0.25.40

最後に名前をUbuntu 20.04に設定して完了。
再生ボタンを押して起動してみます。
スクリーンショット 2022-05-28 0.25.52

ブートメニューが出てきたので、とりあえず今回は「Try Ubuntu without Installing」を選択。どうせインストールするので「Install Ubuntu」でも良かったかな。
スクリーンショット 2022-05-28 0.26.00

ほどなくして、Macの仮想マシン上でUbuntuが立ち上がりました。味わい深いですね。
スクリーンショット 2022-05-28 0.27.09

あとは通常通り設定を進め、インストールを開始します。
スクリーンショット 2022-05-28 0.28.14

スクリーンショット 2022-05-28 0.32.11
インストールはわずか4分で完了。仮想マシンでこれなら大したものだと思います。

一旦仮想マシンをシャットダウンして、ディスクイメージを取り出し。

スクリーンショット 2022-05-28 0.33.04

そしてまた起動。
スクリーンショット 2022-05-28 0.33.47
無事インストールして起動までできました。以上でインストール作業は完了です。

ベンチマークを見てみる

HardinfoでCPU等のベンチマークを見てみます。

まずはシステム情報を確認。
スクリーンショット 2022-05-28 0.36.55
CPUはunknownとして認識されているようですね。ちゃんとARMプロセッサにはなっています。

CPU Blowfish

スクリーンショット 2022-05-28 0.40.40
Blowfishによる暗号化や復号にかかった時間で、低いほど良い数値。うん、この中でぶっちぎりですね。ただ、Hardinfoに登録された比較用のCPUが軒並み古すぎるので、これでは参考になりません。

というわけで、比較用としてもう少し新しいCPUのベンチマークが欲しかったので、手元にあったintel Core i5-6500マシンのネイティブにインストールしたUbuntu(20.04)でも同様のベンチマークを計測してみます。
で、結果がこちら。
スクリーンショット 2022-05-28 13-42-25
intel Core i5-6500のほうが微妙に良い結果に。ただ、ネイティブ環境と仮想環境で比較してほぼ拮抗しているのなら、かなり良い結果だと思います。

その他のベンチマーク

結果を表にまとめておきます。

項目 Apple M1 (UTM) intel Core i5-6500 (ネイティブ) 備考
CPU Blowfish 2.26 2.24 seconds(低いほど良い)
CPU CryptoHash 650.88 482.61 MiB/second(高いほど良い)
CPU Fibonacci 0.49 0.51 seconds(低いほど良い)
CPU N-Queens 2.18 6.60 seconds(低いほど良い)
CPU Zlib 1.66 0.92 HIMarks(高いほど良い)
FPU FFT 0.65 0.97 seconds(低いほど良い)
FPU Raytracing 1.65 2.01 seconds(低いほど良い)
GPU Drawing 16951.83 15978.50 HIMarks(高いほど良い)

CPU Blowfishを除いたすべての項目において、M1 + UTMのほうが良いスコアでした。
ただCore i5-6500はもう7年前に発売されたCPUなので、最新の世代ではi3にすら性能は及びません。本当はもう少し新しいCPUと比較したかったんですが、手元にこれしかないので許してください。
また、今回は4コアしか割り当てていないので、割り当てるコア数によっても変化します。
いずれにせよ、仮想マシンで2016年に買ったミドルスペックPCよりも快適に動くと考えれば、個人的には性能としては十分です。

おわりに

arm64版のUbuntuであればかなり快適に動作します。今後もまた何かM1で検証してみます。