走り書きのメモです。
久々にArchLinux環境をリフレッシュしようとしたら、かなり手間取りました。
新しめのカーネルが内臓ストレージ(nvme0n1)を認識しない
この症状はいつぞやから起動しないなと認識はしていたので、途中からltsカーネルをインストールして使っていました。
技術的背景等は調べていませんが、こちらのスレッドによると、nvmeをLinux Kernel 5.1.5からサポートしなくなったとされています。
ただ自分が確かめた範囲では、少なくとも自分の機体に関してはもっと前の4.19でも認識しませんでした。
色々な世代のインストールイメージを入手して試した限りでは、2019.05.02(Kernelは4.16.12-1)で認識できました。
ただしこのUSBでは別の問題があります。詳細は次の見出しで。
archlinux-keyringが更新できない
こちらに関してはpacmanで用いられるパッケージの圧縮形式の変更が影響しています。
https://www.archlinux.jp/news/required-update-to-recent-libarchive/
要約すると、
- 新しいpacman5.2は.zst圧縮に対応する
- 今後はこちらの圧縮方式に変更していく
- libarchiveを3.3.3-1以降に更新するように
という話です。
これが何故問題化するかというと、前述の2019.05.02のインストールイメージでは
- libarchiveのバージョンは問題ない
- pacmanはこの5.2より前のバージョン(5.2のリリースは2019.10.22)で、.zstパッケージを取り扱えない
- archlinux-keyringパッケージは既に.zst圧縮になっている
archlinux-keyringはパッケージ署名の情報等が含まれているので、インストール時にここに無い署名が含まれているとエラーが出て更新しろと言われるのですが、アップデートができません。
その他のパッケージにも.zst圧縮の物が既に含まれており、ストレージを認識していてもpacstrapを完了できません。
解決について
問題を整理すると
- インストールUSBと本体にインストールするKernelが4.16以下である必要がある(確認した限り)
- pacmanが5.2以上である必要があり、libarchiveも3.3.3-1以上にする必要がある
上記の問題を同時に解決できるインストールUSBは存在しないので、archisoを使用するか、isoをリマスタリングしてカスタムインストールUSBを作成して解決する事になると思います。
その為、別にArchLinuxが動作している環境(VMでも可)が必須になります。
使用するカーネルは、linux-lts414がお勧めです。このMacBookでも問題なく動作する上に、サポートがとても長い(~2024年1月)ので当分安泰です。
ただしこのカーネルはAURのものなので、こちらについても別のArchLinux環境でビルドした上で、プライベートリポジトリを設定してarchisoの構築時に使用させるようなどしてください。
もしくはビルド済みパッケージを提供しているリポジトリを追加してください。(未発見)
AURパッケージの為、カーネルのセキュリティアップデートにもビルドが必要になります。
またオプションですが、ついでにbroadcom-wl-dkmsパッケージを含めておくと、インストール時にも無線LANを使用できるようになります。
インストール手順に関しては、基本的にArchWikiのMacBookの記事の内容に従ってください。ブートローダーは、筆者はsystemd-bootを採用しています。
#おわりに
もう5年前の機種ですし、あまりこういった使い方をする方はいないかもしれませんが、役立てば幸いです。