[EndeavourOS]pacmanでのアップデート中にフリーズして起動不能になったEOSの復旧をした

背景

タイトルの通りですが、pacmanでのパッケージ更新中にシステムがフリーズしてしまい、ハードリブートを行いました。
その結果、無事OSが死亡しましたので、復旧を試みました。

症状

起動時に以下のエラーが発生し、起動できない状況でした。

systemd [1] Freezing execution

復旧作業

1.レスキューモードでの起動(ダメ)

王道(だと思う)のレスキューモードでも同じエラーで起動しませんでした。

2.LiveUSBからの回復

EndeavourOSのLiveUSBを残していたので、それを使って起動しました。

2-1.システムドライブのマウント

まずはシステムドライブをマウントします。

# mkdir /mnt/eos
# mount /dev/nvme0n1p1 /mnt/eos
# mount /dev/nvme0n1p2 /mnt/eos/home
# mount /dev/nvme0n1p3 /mnt/eos/boot

2-2.ルートディレクトリの変更

ルートディレクトリを変更します。

# chroot /mnt/eos

2-3.pacmanの修復(ダメ)

ChatGPT先生曰く、これで直るらしいですが、私の場合はダメでした。
ただ、いくつか破損したライブラリが特定できたので、それはLiveUSBからコピーする形で復旧してみました。
その後にpacmanをしてみた所、エラーで止まってしまいました。
エラー内容は、OPENSSLが無いとのことでした(curlが依存しているらしい)。

# pacman -Syy

2-4.pacstrapでの復旧(ダメ)

pacstrapでLiveUSBから回復できるみたいです。
私の場合は、pacman同様のエラーが出てダメでした(もしかしたら次の方法と同様の解決方法があるかも)。
※chrootから抜けて作業

# pacstrap /mnt/eos openssl curl

2-5.LiveUSB側のpacmanで更新

chroot後のpacmanコマンドと何が違うのかよく分かりませんが、更新できました。
LiveUSB側の環境を使うんですかね?

# sudo pacman --root=/mnt --cachedir=/mnt/var/cache/pacman/pkg --overwrite “*” -S $(pacman --root=/mnt --cachedir=/mnt/var/cache/pacman/pkg -Qnq)

3.エマージェンシーモードでのイメージ再構築

再起動すると多分エマージェンシーモードになっています。
ルートでログインした後、イメージの再構築をします。
私の環境はdracutを使用しています。

# reinstall-kernels

その後、exitでエマージェンシーモードを抜けるとgdmが起動するはずです。

4.再起動&pacmanの更新

システムが正常に起動していないはずなので、一回再起動しましょう。
再起動すると普通に動くようになると思います。
core、extra、multilib、endeavourosのレポジトリは、2-5.で更新されていましたが、自分で追加したレポジトリが更新できていませんでしたので、pacmanの更新をしておきます。

終わり

これで(多分)復旧しました。
再インストールして環境再構築は面倒すぎるので(特にSteamからのゲームダウンロード)、再インストールにならずよかったです。

この記事が気に入ったらサポートをしてみませんか?