起動しない EndeavourOS を LiveUSB を使って復旧した

Date: 2022/08/30
Tags: Archlinux Endeavouros Grub Troubleshooting

EndeavourOS のパッケージを一斉アップグレードしたところ、起動しなくなってしまったので、LiveUSB を使って復旧した。

grub の最新版(2:2.06.r322.gd9b4638c5-1, 2022/08/30 時点)にアップグレードすると OS が起動しない問題が起きているらしい。
本件について、EndeavourOS のフォーラムで案内されていた。
The latest grub package update needs some manual intervention

パッケージのアップグレード後に起動しなくなったとき、同様の手順で復旧できるかもしれないので、備忘録として残す。

まとめ

復旧手順

Live USB から起動後、ターミナルを開いてコマンドを実行していく。

arch-chroot を使って、OS をインストールしているディスクに chroot する

まず、以下のコマンドで復旧対象のディスクのパスを確認する。

sudo fdisk -l

コマンドを実行すると、接続されている Disk とそれぞれにパーティションの情報が表示される。 複数表示されるディスクの中で、OS をインストールしているディスクを確認する。

自分の場合は、/dev/nvme1n1 が該当する。(LiveUSBのディスクも表示されるので注意) 表示されている情報を確認すると、以下のように表示されている。

Disk /dev/nvme1n1: 465.76 GiB, 500107862016 bytes, 976773168 sectors
Disk model: WD Blue SN570 500GB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 824B11E5-BE1E-7F40-A66A-C6AFB457427F

Device             Start       End   Sectors   Size Type
/dev/nvme1n1p1      4096    618495    614400   300M EFI System
/dev/nvme1n1p2    618496 958313126 957694631 456.7G Linux filesystem
/dev/nvme1n1p3 958313127 976768064  18454938   8.8G Linux swap

この中で、Type が以下のものを確認する。

自分の場合は、以下となった。

上記パーティションのファイルを参照するために mount する。

sudo -i
mount /dev/nvme1n1p2 /mnt
mount /dev/nvme1n1p1 /mnt/boot/efi

arch-chroot を使って、マウントしたディレクトリをrootディレクトリに変更する。 chroot する際に必要なマウントや resolve.conf の設定をやってくれるらしい。便利。

※参考: arch-chroot を使う

arch-chroot /mnt

ls /home を実行して、自分のユーザディレクトリがあれば問題ない。

ls /home
m1yam0t0

Grub の再インストール

以下のコマンドを実行するだけ。

grub-install

後始末

念の為 chroot を抜けて、umount しておく。 再起動すると、無事に OS が起動されることを確認できた。

exit
umount --recursive /mnt
reboot

さいごに

最初に OS が起動しなくて焦ったが、情報やドキュメントがかなり充実していたためすぐに対応できた。 Arch系OS のパッケージの一斉アップデートは時間のあるときにだけ実施すべきと再認識した。

EndeavourOS の最新版では grub の最新版をインストールするようにして、アップデートによる不具合が発生しないようになっている。これからインストールする場合は最新のISOイメージを取得したほうが良いかと思われる。
Full transparency on the Grub issue (UPDATE 29-08-22) – EndeavourOS

参考