M1 mac + UTM + Linux = サイコー　まであとすこし

## はじめに

Apple Silicon(M1, M2)でもうごく、[バーチャルマシン・UTM](https://mac.getutm.app)。基本的にはとてもとてもイイです。いっぽうで、「これからに期待」というところもあって、意外とそのあたりがまとまっていなかったので、メモしてみました。

:::note warn
網羅的な検証にはなっていません。
2022年10月06日時点の状況ですので、将来にはきっと改良されていることばかりです。
:::

### 結論を短く言うと

日本語は後回しにして、再起動ボタンさえ押さなければ、サイコー。

### 環境

- UTM 4.0.6
- macOS Monterey 12.5.1
- MacBook Pro (14-inch, 2021)

## とてもよくできること

M1 MacBook Pro（以下MBP）でLinuxを動かしたいとおもってUTMをインストールしました。インストール時に推奨される[Ubuntu Server for ARM](https://ubuntu.com/download/server/arm)などは、さすがにすごくいい体験で、感動的でさえあります。

![SS 2022-10-06 19.34.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184128/bef5130b-fbb7-979c-493d-34c9fdf87d7d.png)

[Fedora 36 Workstation.](https://getfedora.org/en/workstation/download/)もすごくいい感じに動きます。

新しいバーチャルマシンをつくるときの体験もかなりよく、たとえばVirtualBoxに比べると、たいへんに気持ちよく開始できます（VirtualBoxも慣れればどうということもないんですが）。

### クリップボードとディレクトリ共有

utuntuの場合は

```
$ sudo apt install spice-vdagent spice-webdavd
```

Fedoraの場合は

```
$ sudo dnf install spice-vdagent
$ sudo dnf install spice-webdavd
```

とすると、ウィンドウサイズにあわせて解像度変更、クリップボード共有とディレクトリ共有ができて、これまためちゃくちゃいい感じです。


## これからに期待したいこと

### ARM用Linuxがまだ少ない

これはUTMのせいではないのでしょうけれども、ARMに対応しているLinuxのディストリビューションがまだまだ少ないです。

UTMは`仮想化`と`エミュレート`があります。ざっくり言うと、
- `仮想化`はMBPに載っているM1をほぼそのまま使って、Linuxを動かします
- `エミュレート`は、MBPのM1の上に、仮想的なIntelチップをつくり、その上でLinuxを動かします

`仮想化`（こちらのほうが速い）を使おうとすると、ARM対応のLinuxディストリビューションが必要なわけですが、まだまだ少ない。ubuntuのデスクトップはまだ（サーバはある）。Fedora Workstationはありますが、Pop!_OS、MX Linuxなど、人気のあるディストリビューションもまだ対応していません。


### エミュレートは流石に遅い……

では`エミュレート`で、x86_64のLinuxを動かせばいいんじゃないかとおもって、Pop!_OSを入れてみました。が、流石に遅くて「なんとか動いている」レベル。まだ実用的だとはおもえませんでした。

:::note warn
ちゃんとチューニングはしなかったので、設定次第で使える速さになるのかもしれません。
:::

### 日本語はちょっと遠い……

`仮想化`で使えるディストリビューションが限られていて、いまのところサーバが中心のようで、標準のインストーラでは日本語を選べないこともあります。少なくともubuntu serverはダメでした。

Fedora Workstationはどうだったかな……こちらはたしかOKだったとおもいます。（インストール後は日本語を選べます）

まあ、「さくっとインストールして、さくっと日本語表示・日本語入力」にはまだちょっと距離がある感じです。

### 起動しないことがある……

再現条件が特定できていないのですが、バーチャルマシンが起動しなくなるんですよね。下記画面で固まります。（いまのところ）何をやっても復活させられず、バーチャルマシンの作り直し以外の方法を見つけられていません。

![SS 2022-10-06 19.51.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184128/e2f07f88-a008-9ae5-d59b-f3111b1012ae.png)

GitHubのイシューにも上がっている（現象がちょっとちょっと違う？）のですが、バチッとした解決方法が見つかっていないようです。わたしは解決できませんでした。

[ARM64 Linux VMs stuck on &#39;EFI stub: Exiting boot services and installing virtual address map...&#39; · Issue #2682 · utmapp/UTM · GitHub](https://github.com/utmapp/UTM/issues/2682)

わたしの限られた試行のなかでは「ソフトウェアから再起動するとダメ」。たとえば、アップデータの「再起動＆インストール」というボタンを押して、OSが終了して再起動するとアウト。ウィンドウ左上の再起動ボタンを押すとアウト。

ウィンドウの左上の「ウィンドウを閉じるボタン（赤丸）」または「仮想マシンを停止」ボタンを押すと大丈夫。

「OSの再起動ボタンを押せない」はわりと無理ゲーで、なんどもゼロからインストールを繰り返していて、ちょっと挫折気味です。

:::note info
そんなバグが残ってるってあり得る……？　なにか勘違いしているか、あるいは簡単に修復できるはずだ！とおもうんですけど、発見できず😢
:::

### 起動しない問題への対応例を発見（2022-10-14追記）

Manjaro ARM版ですが、設定とインストールの方法を工夫して、起動しない問題が発生しないようにしているやり方を発見しました。

[M1 MacBook Pro に UTM + Manjaroをインストールしました（再起動でフリーズしない方法） - Qiita](https://qiita.com/hann-solo/items/6d0c504825deda8a96dc)

:::note info
起動しなくなっているVMのDebug.logを見ていると`qemu-aarch64-softmmu: warning: Spice: record:0 (0x12a0a89e0): setsockopt failed, Operation not supported on socket`となっているので、もしかするとManjaro以外でも同様の対策が効くのかもしれません（未検証）
:::


## 参考リンク

いい記事がたくさんあって、とても助かりました。

- [想像以上に軽快！UTMでM1 MacにUbuntu 22.04をインストールする手順 | オブわか！](https://oopsoop.com/ubuntu-on-mac-using-utm/)
- [UTMでM1 MacにUbuntuの仮想環境を構築してみよう！](https://original-game.com/how-to-install-ubuntu-on-m1-mac/)
- [UTMを使ってM1 MacにUbuntu20.04をインストールして、その中でDockerを動かして、その中でUbuntu20.10を動かしてみる - Qiita](https://qiita.com/akase244/items/726edbdd10085198f61f)
- [Using Linux on Your M1-based Mac](https://www.comptia.org/blog/using-linux-on-your-m1-based-mac) 


## おわりに

現時点では逆風もつよいですが、時間の問題で解決されるとおもいます。ですので、UTM + Linuxにはすごく可能性があるとおもいます。超期待です。

あとはParallels + Windowsを、UTM + Windowsに変えられると最高なので、ひきつづき試したいとおもいます。