M1 MacBook Pro に UTM + Manjaroをインストールしました（再起動でフリーズしない方法）

## DR;TL

MacBook Pro (14-inch, 2021, M1)の、UTM上にManjaroをインストールしました。まだ「isoをダウンロードしてきてサクッと」というわけにいかず、いろいろなトリックを駆使している感じですが、実際に動いているのは、めちゃくちゃいいです。

ほとんど[New Tech on the Blog](https://www.appelgriebsch.org/005-utm/)を「やってみた」だけですが、ハマりどころを見事に回避していて「このヒト何者！？」で感激しました。

:::note info
たとえば、UTM上に各種Linuxをインストールした後に、再起動すると動かなくなる問題があります。原因について書かれている記事がなかなか見つからなかったのですが、上記ブログのAndreas Gerlach氏は、これも見事に回避されています。
:::

### 環境

ここで書いていることは、下記のバージョンで実施しました。

- Manjaro-ARM-kde-plasma-generic-22.08
- UTM Version 3.2.4 (58)
- macOS Monterey 12.5.1
- MacBook Pro (14-inch, 2021)

:::note warn
UTM v4.0.6(RC)ではうまく動かなかったので、v3.2.4を使用しました（リリースされたものの最新版）
:::

:::note info
KDE Plasma版を使っていますが、少なくともGNOMEでもOKでした。Xfceは試していませんが、同じことをすれば大丈夫だとおもわれます
:::

## インストール手順

### ダウンロードとファイルの準備

0.UTMアプリをダウンロードします。QEMUをインストールしておきます（homebrew）。

1.[Manjaroのダウンロードページ](https://manjaro.org/download/)から、Manjaro ARMのイメージをダウンロードします。

:::note info
デバイスは`GENERIC`を選択します。
:::

2.ダウンロードした`...img.xz`を解凍すると`...img`ファイルができます。これをダブルクリックしてマウントし、中身を確認します。

![](https://www.appelgriebsch.org/img/manjaro-arm-image-kde.png)

3.マウントしたパーティションを開き、その中身を、`...img`のところにコピーします。（dtbsフォルダ、Image、initramfs-linux.img、extlinux.conf）

![](https://www.appelgriebsch.org/img/manjaro-arm-folder-kde.png)

コピーが終われば、マウントしたパーティションを取り外します。

### UTMアプリでバーチャルマシンを作成

4.UTMアプリを開きます。新しいバーチャルマシンを作ります。その際に`Virtulize`を選択します。

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-1.png)

5.次の画面では`Linux`を選択します。

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-2.png)

6.次の画面で、まず`Boot from kernel image`にチェックを入れます。

ステップ3で用意したファイルを指定します。

- Linux kernel → `Image`
- Linux initial ramdisk → `initramfs-linux.img`
- Linux Root FS Image → `Manjaro-ARM-kde-plasma-generic-22.08.img`

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-3.png)

7.ステップ3で用意した`extlinux.conf`をテキストエディタで開きます。そして、`root= ... splash`の間をコピーします。

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-extlinux.png)

そして、コピーしたテキストの前後を`"`で括って`"root= ... splash"`という形にし、`Boot Arguments`の欄に貼り付けます。

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-4.png)

8.次のセクションではメモリを設定し、`OpenGL acceleration`がオフになっていることを確認します。

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-5.png)

:::note info
Andreas Gerlach先生はメモリを8GBに設定していますが、デフォルトの4GBでも良いようにおもいます。
:::

9.バーチャルマシンに名前をつけ、`Open VM Settings`にチェックを付け、Saveボタンを押します。

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-6.png)

10.QEMUセクションの、一番下にいき、ステップ7で貼り付けた`"root= ... splash"`が反映されていることを確認します。

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-7.png)

11.Displayセクションにいき、下記を変更します

- Display Card → `virtio-gpu-pci`
- Retina Mode → チェック

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-8.png)

12.（必須ではありませんが）Inputセクションに行き、`Invert Mouse Scroll`をにチェックを付けます

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-9.png)

13.VirtIO Driveに行き、下側の`data.qcow2`となっているほうを削除します。

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-10.png)

14.最後の設定です。ディスク容量を増やします。

- バーチャルマシンのあるフォルダに移動します。ターミナルを開き`cd Library/Containers/com.utmapp.UTM/Data/Documents/<VM名称>.utm`とします。

:::note
<VM名称>はステップ9で入力したものです。
:::

- 次に、コマンドを入力します。`qemu-img resize Images/<Root FS imageの名称>.qcow2 +32G`

:::note
<Root FS imageの名称>は、ステップ6で選択したものと同じで、たとえば`Manjaro-ARM-kde-plasma-generic-22.08.img`です。
:::

### バーチャルマシンの起動と基本設定

15.UTMからバーチャルマシンを起動します。

セットアッププログラムが走るので、設定します（タイムゾーン、言語、キーボード、ユーザアカウント）。そしてリブートします

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-11.png)

:::note
サークルがくるくる回っている時間がわりと長いですが、辛抱して待ちます。測っていないですが、1-2分ぐらいでしょうか。
:::

16.リブートが成功したら、まず「アップデートを制限する」ことをします。

スタートメニューから`Add / Remove Software`を起動し、コンテキストメニューから`Preference`を開きます。

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-14.png)

`Advanced`タブに行き、`linux`と`linux-api-headers`をIngored upgradesの対象にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/184128/0e7df2e4-d063-5f24-f533-d62b28734bba.png)

:::note
Andreas Gerlach先生は`linux-headers`だとおっしゃるのですが、`linux-api-headers`しか見つかりません。こちらを追加で良いとおもうのですが。
:::

また、検索して`spce-vdagent`をインストールします。

![](https://www.appelgriebsch.org/img/manjaro-arm-kde-utm-16.png)

17.リブートします。

これでインストール作業は完了です。日本語入力・表示をふくめていい感じに使えるようにするには、もう少し設定が必要ですが、それは別記事にしたいとおもいます。

## 少し補足

ステップ16で「カーネルをアップデートしない」というのが重要です。カーネルをアップデートすると、initial RAMディスクを書き換え、そのためブートアッププロセスで問題が起きるのだそうです（とAndreas Gerlach先生が書いておられました）。

起動しなくなった（複数の）バーチャルマシンのDebug.logを見ていますと、

```txt:debug.log
qemu-aarch64-softmmu: warning: Spice: record:0 (0x12a0a89e0): setsockopt failed, Operation not supported on socket
```

となっています。Spiceをなんとかしなければならないのかと思っていましたが、kernelのアップデートが原因であるようです。

:::note info
今後もずっとアップデートしないのだろうか？？
時間の問題で、さくっとARM版ManjaroがUTMにインストールできるようになる日が来ることを期待したいです。
:::

## おわりに

Andreas Gerlach先生、ほんとうにありがとうございました。UTMでのLinuxを諦めかけていたんですが、全く問題なく使えるところまでやってこれました。Manjaro、すごくいいです。メインをmacOSではなくて、UTM上のManjaroにしようかなと一瞬おもってしまうぐらいです（たぶんそれはむずかしい）。

M1 mac + UTM + Linuxの人が、少しでも増えるとうれしいなとおもいます。

### 参考リンク

- Andreas Gerlach先生
    - [Running Manjaro ARM in UTM on M1 Mac](https://www.appelgriebsch.org/005-utm/)
- 本家
    - [Manjaro Download](https://manjaro.org/download/)
    - [UTM | Virtual machines for Mac](https://mac.getutm.app)
- 解説記事（ubuntuはサクッと動くんだなあ……）
    - [想像以上に軽快！UTMでM1 MacにUbuntu 22.04をインストールする手順 | オブわか！](https://oopsoop.com/ubuntu-on-mac-using-utm/)
    - [M1 MacBook Pro でUbuntuを動かす - Qiita](https://qiita.com/rairaii/items/1e74d779c4e54d5daedc)
    - [Run Ubuntu on M1 Macbook Air using UTM – Milind Soorya](https://www.milindsoorya.com/blog/run-ubuntu-on-m1-macbook-air-using-utm)
    - [How to Install Linux on an M1 Mac With Apple Silicon ](https://www.howtogeek.com/767684/how-to-install-linux-on-apple-silicon/)