[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からのゲームダウンロード)、再インストールにならずよかったです。