M1 MacにデュアルブートできるAsahi Linuxを入れてみました

この記事は[PharmaX Advent Calendar 2022](https://qiita.com/advent-calendar/2022/pharma-x) の13日目の記事です。

追い込まれた記事であって、特にPharmaXで得た知見ではありません 笑

![AsahiLinux_logo_svg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115709/2e7a1f02-5725-2d48-1317-2e461ea56dc5.png)



# 背景
Dockerに代表されるコンテナ技術やクラウドの発展によって、普段Macを使っている方でも簡単にLinux環境を手に入れることはできるようになりました。
ですが、私のような面倒くさがりにとっては、起動後すぐアクセスでき、デスクトップ環境もついているLinuxが欲しくなる時があります。
しかし、私は手元にMacしか持っておらず、ご存知の通りM1になってからはBootcampが無効化され、Apple公式で提供されているデュアルブートシステムもなく、macOS以外のOSとのデュアルブートが難しくなってしまいました。

そこで、最近有名になりつつある（？）M1 Mac上でデュアルブート可能なAsahi Linuxを手元のM1 Mac miniに入れてみることにしました。

と、いろいろ理由をつけてみましたが、ただ単にM1 Mac上で動くLinuxに興味があって使ってみているだけと言ったほうが正しいかもしれません（笑）

## 注釈
Linuxを使うのに起動し直さなければならないのであれば、クラウドのリモートデスクトップ接続などと比べて大して楽にはならないのでは？と思った方もいるかもしれません。
ただ、私はメインにM1 MacBook Proを使い、予備機としてM1 Mac miniを持っており、M1 Macは基本的にAsahi Linuxで起動した状態にしておき、複数あるうちの1つのディスプレイをスイッチャーでMacBook ProとMac miniを切り替えて使うことを想定しています。

後述するように、いろいろ問題はありましたが、思った以上には動作にも不満はなく、快適なLinuxライフを手に入れることができました。



# サマリー

- Asahi LinuxとはApple M1 Mac上で動き、Macがマルチブート可能になるようにArch Linuxm ARMをチューニングしたディストリビューション
    - 正確には、あくまでプロジェクトで、Arch Linuxm ARMに合流させることを目指している
    - 最終的には他のディストリビューションにも取り込まれることを目指している
- Asahi Linuxの哲学がかっこよい
    - ロゴも個人的にはめっちゃ好き
    - Githubを見ても結構活発に活動しているようで、かなり期待している
    - 公式でも数ヶ月単位で新しい対応情報などが出ているので、きちんとリリース（[公式ブログ](https://asahilinux.org/blog/)（[非公式日本語訳](https://github.com/asfdrwe/asahi-linux-translations)））をチェックすべし
        - 2022/12/7に[「Apple GPUドライバーがAsahi Linux に追加された」](https://asahilinux.org/2022/12/gpu-drivers-now-in-asahi-linux/)という公式リリースが出ていました！！！
- あくまでパブリックアルファ版なので、何があっても自己責任でお願いします
- デバイスによっても動作するものとしないものが違うようなので、インストールするデバイスには気をつけたほうが良さそう
    - 特に[HDMI端子がMac miniでしか動かない](https://github.com/asfdrwe/asahi-linux-translations/blob/main/PROGRESS202207.md)ことに注意
    - [Bluetoothは動くようになりました](https://github.com/asfdrwe/asahi-linux-translations/blob/main/PROGRESS202207.md)
    

# インストール・アンインストール手順

## インストール〜起動まで


[Asahi Linux Desktop アルファ版の内蔵SSDへのインストールとアンインストール](https://qiita.com/asfdrwe/items/20edadf1d33f28bb3fb1)あたりを参考に手順をこなしていくだけなので、この記事ではあえて詳しく記載しない

最新版は、公式を参考にしてください。

要点だけまとめると、

- （当たり前かもだが）Asahi LinuxのインストールはmacOSのパーティションをリサイズして、Asashi Linux用のパーティションを確保する必要がある
- 公式のインストーラを実行すると後は指示に従っていくだけで、Asahi Linuxがインストールされる
- インストーラ実行中に勝手にmacOSのパーティションをリサイズしてくれる

Macを再起動して、下記のような起動画面になってAsahi Linuxを選択して起動したら成功。
![asahi-linux-recoveryos-boot-select-macos.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115709/321ab5d8-a6c7-a05b-b4a5-eaa07f096e82.jpeg)
（引用：[Installing the Asahi Linux Alpha on my M1 Mac mini](https://www.jeffgeerling.com/blog/2022/installing-asahi-linux-alpha-on-my-m1-mac-mini)）



## アンインストール

アンインストールも上記の記事を参考に簡単にできるが、[Asahi Linuxのインストールされているパーティションを手動で削除する](https://github.com/asfdrwe/asahi-linux-translations/blob/main/PROGRESS202203.md#%E3%82%A2%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B)という方法を取ることに注意。


## インストール中に発生したエラー


### 1.下記のようにMacにインストーラ実行中に、パーティションがリサイズできないというエラーが発生した。

```
The container /dev/disk0s2 could not be verified completely
Storage system check exit code is 8
Error: -xxxxx: Storage system verify or repair failed
Failed to run process: {cmd}

root        : ERROR    Process execution faile
```

これはよく報告されているMacのファイルシステム（APFS）のバグで、私の場合は手動でリサイズし、インストーラを実行し直して、Asahi Linuxを自分で確保したパーティションに入れることで解決しました。

自分でパーティションを切った場合にも、下記のようにインストール先のパーティションが指定できるようになります。

```
Choose what to do:
  f: Install an OS into free space
  r: Resize an existing partition to make space for a new OS
  q: Quit without doing anything
» Action (f):
```

### 2.インストール完了後、Macの再起動後にデュアルブート画面に

![Screenshot 2022-11-19 at 14.47.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/115709/12fab120-48f0-40c8-84cb-ea7cfd16036a.png)

- 最初失敗したのは、ボタンを押してから完全にシャットダウンするまでに15秒待てというところ
    - 馬鹿らしい勘違いだがこの画面が表示されてから、Press Enter to shut down the systemをするまでに15秒待てってことだと思って、エンターを押してからはすぐに起動させようとしてしまった

## 参考記事
- [Apple M1チップ搭載のMacで動作する「Asahi Linux」のAlpha版がリリースされたのでインストールしてみた。](https://applech2.com/archives/20220320-how-to-install-asahi-linux.html)
    - 簡単にインストール方法が書かれてある
    - 初期に動かないものとかざっくり載っているのがいい
- [【Apple M1】Asahi Linuxのフル翻訳付きのインストール解説](https://blog.fascode.net/2022/03/26/install-asahi-linux/)
    - その後のディスプレイや設定などが
    - デフォルトで使用するOSを切り替えられることなども書かれている
- [Asahi Linux Desktop アルファ版の内蔵SSDへのインストールとアンインストール](https://qiita.com/asfdrwe/items/20edadf1d33f28bb3fb1)
    - 結構詳しく載っており、アンインストールまで載っているのがいい

# Asahi Linuxが現在（2022/11/30時点で）対応してないこと

- デバイスによっても動作するものとしないものも違うようなのでインストールするデバイスには気をつけたほうが良さそう（以下はM1 Mac mini）
    - Type-Cは使えない
    - Bluetoothは動くようになっている（少なくともHHKB Type-S keyboardもMagic mouse 2も接続できた）
- 公式のリリース（[The first Asahi Linux Alpha Release is here!](https://asahilinux.org/2022/03/asahi-linux-alpha-release/)） の[非公式日本語訳](https://github.com/asfdrwe/asahi-linux-translations/blob/main/PROGRESS202203.md) を参考にした

# 主要パーケージのインストール

- パッケージマネージャーの基本的な考え方（Asahi Linux固有のものではなく、Arch Linuxの考え方）としては、
    - 参考： [Arch: Manjaro で「pacman」と「yay」のコマンド操作〈H53〉 - Linux あれこれ](https://furuya7.hatenablog.com/entry/2020/05/06/180426)
    - AUR（Arch User Repository）というユーザーが運営する、公式に登録する前の未承認状態のアプリを登録できるリポジトリがある
    - そこに登録されているアプリをインストールするためのツールが「[AUR ヘルパー](https://wiki.archlinux.org/index.php/AUR_helpers)」で、その代表的なものがyay
        - AUR ヘルパーは、開発者がアプリのソースと一緒に登録することになっている「[PKGBUILD](https://wiki.archlinux.jp/index.php/PKGBUILD) 」という[スクリプト](http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8)に従い、依存関係の解決やビルド、およびインストールを自動で行ってくれる便利なツール
- 手動で入れる場合にはgithubなどから取ってきて、自分でmakepkgする必要あり

## 2022/11/30時点でインストールできたもの（日々変わっていそうなので、更新しています）

- 日本語化
    - 参考：[【Asahi Linux】様々な操作の問題点と解決方法](https://blog.fascode.net/2022/03/28/asahi-linux-issue/)
    - 最新のFcitx 5をインストールすべし
- VS Code
    - 以外にもVS Codeはインストールできたが、Githubと連携しての設定の引継ぎはできなかったので、手動で設定ファイルを置き換えた
        - Macの設定ファイルをクラウド・ストレージにアップロードして、ダウンロードし、VS Codeの設定ファイルを置き換えるというアナログな方法
    - 追加で拡張機能をインストールすることもできない

## 2022/11/30時点でインストールできなかったもの（日々変わっていそうなので、更新しています）
- Google Chrome

## その他パーケージの導入

### フォント

- 個人的お気に入りのSource Han Code JPを入れてVS Codeで使うところは上手く行った
    - Source Han Code JPについては下記を参考に
    シュッとしていながらも視認性が高い佇まいが好み
        - 参考：[Adobe社の無料フォントSource Han Code JPをインストールする方法 Windows編](https://creating-homepage.com/archives/3055)
        
    - 公式にも載っているので、問題なくyayでインストールできる
        - 参考：[AUR (en) - otf-source-han-code-jp](https://aur.archlinux.org/packages/otf-source-han-code-jp)
        
    - Linuxの考え方として、フォントをどこに置くと参照できるようになるのかは、`/etc/fonts/fonts.conf` を見れば分かる
        - 参考： [【linux】フォントのインストール at softelメモ](https://www.softel.co.jp/blogs/tech/archives/3762#:~:text=%E7%AD%94%E3%81%88,%E3%81%AB%E5%85%A5%E3%82%8C%E3%81%9F%E3%82%8A%E3%82%82%E3%81%99%E3%82%8B%E3%80%82)
        - fonts.confの中を覗いてみると、下記のような記載があるはず
        
        ```bash
        <!-- Font directory list -->
                <dir>/usr/share/fonts</dir>
                <dir>/usr/share/X11/fonts/Type1</dir> <dir>/usr/share/X11/fonts/OTF</dir>
                <dir>~/.fonts</dir>
        ```        
        - 実際、yayで入れてみれば、/usr/share/fontsの中に入っていた

# 発見したバグ・不思議な挙動とその対応

- （上述したが、）VS Codeの拡張機能が入れられない、Syncも効かない
    - 上記のように普段遣いのMacから手動でextensionsを移した
- 再起動するたびにマウスの設定が初期化される
    - 設定画面では反映されているのに、初期化されているから毎度設定し直さないとイケない