プログラミングなんてわからないんですけど〜

元プログラマによるプライベートでのプログラミング日記。1/3のつもりだけどソフト関連はここがメイン

Arch Linuxのブートローダーをgrubからsystemd-bootに乗り換えてみる

Arch Linuxを使い始めました。環境を構築するにあたり、以下のページを参考にさせてもらいました。
qiita.com

とても簡単に構築できました。それは良いことなのですが、私のThinkPad E495はArch Linux専用にしたのです。なので、grubの良いところを生かせていません。Windowsとのデュアルブートとかなら便利なんですけどね。
他のブートローダーはないものかと探したところ、systemd-bootと言うものがあるそうではありませんか。systemdが入っている環境ならすでにプログラムはインストールされていると言うことなので、これを採用してみました。

今回の乗り換え作業の大まかな手順は以下の通りです。

  1. grubをアンインストールする
  2. USBメモリのArch Linuxから起動して、本体側のSSDにarch-chrootで乗り込む
  3. SSDにsystemd-bootをインストールする

まずはgrubのアンインストールです。「pacman -R grub」で消しました。本当はuefiから削除しないといけないのかも。まあ、あとでsystemd-boot入れるとそっちが有効になるので気にする人以外は気にしなくてもいいかもしれません。本当は「-Rs」オプション使うべきかも。

grubのアンインストールが終わったらUSBメモリのArch Linuxから起動します。これは、環境構築の際に作っていた物が残っていたのと、構築の参考にしたサイトの記述を流用できると考えたためです。
さて、起動したら/mntに本体側のSSDをマウントしていきます。ここで注意する点は、grubの時は「/mnt/boot/efi」にマウントしていたパーティションを「/mnt/boot」にマウントすることです。systemd-bootのインストール先のデフォルトが「/boot」であることと、パーティションの作り直しを省くためもあります。
マウントが終わったら、「genfstab」コマンドでfstabを作ってしまいます。

genfstab -U /mnt >> /mnt/etc/fstab

で元々あったファイルに追記しています。終わったらエディタで編集して不要な行を削除しておきましょう。

「arch-chroot」コマンドで/mntに入ったら、「bootctl」コマンドを使いましょう。
shioleap.github.io
を参考にしてインストールと必要なファイルを作っていきます。今回は「/boot/loader/entries/arch.conf」のoptions行の記述でUUIDではなく「/dev/sda3」と言う書き方をしています。

これでsystemd-bootが使えるようになるはずです。元々/bootをマウントしていたパーティションどうするの?気にしない。