見出し画像

EndeavourOS備忘録 起動不能になったシステムの復旧

LinuxでOSが起動不能になった場合の復旧方法

バグによりGUIが立ち上がらず、黒画面で操作不能になりました。

修正アップデートが出る前にTimeshiftのバックアップから自己復旧をしようとしたところ、何かをミスって完全に起動不能になる事態に!
ChatGPTに聞きながら何とか復旧できたので、忘れないうちに文書化と情報共有のために公開します。

Arch linux系のディストリビューションであるEndeavourOSを使っていますが、他のディストリビューションでも考え方は同じですので、それぞれの環境に合わせたコマンドを使用してください。
自信がない人は、この内容をChatGPTに伝えてコマンドを作ってもらってください。

荒っぽい手順のような気がするので、有識者の方はより良い手順を是非公開していただけると嬉しいです。

そもそもの問題になったバグの概要

nvidia関連のシステムとカーネルの相性不良によるバグでグラフィックマネージャーがブラックアウトしていました。
現在は修正版がアップデートされているので、何も問題が起きてなかった人は安心してアップデートしてください。
今現在も黒画面で操作不能になっている人は、ソースにバグを回避して起動する方法が紹介されているので、それを行った上でpacmanから最新パッチをアップデートすれば解消されるかと思います。

起動不能の解決方法

起動不能になったのは、バグの問題よりも僕の迂闊なバックアップ復旧によるものですが、この経験で今後似たような状況からの復旧が出来るようになったと思います。
ざっくりいうと、
EndeavourOSのライブ起動USB(インストール用USBでOK)を使って一旦PCを起動させて、既にOSがインストールされている元のディスク内のシステム部分を復旧させる。という内容です。

手順1 システム修復の準備

ライブ起動USBからOSを起動させてターミナルを開き、下記コマンドを入力。
これは、元ディスクのシステム内を編集可能にするための準備です。

sudo mkdir -p /mnt/system
sudo mkdir -p /mnt/system/boot/efi

次にこのコマンドを入力して、元ディスクのデバイスパーティションを確認する。

lsblk

[上記コマンドの出力例]

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0   1.8T  0 disk  
└─sda1        8:1    0   1.8T  0 part /mnt/MyStorage
sdb           8:16   0 298.1G  0 disk  
└─sdb1        8:17   0 298.1G  0 part /run/timeshift/4346/backup
sr0          11:0    1  1024M  0 rom   
nvme0n1     259:0    0   1.9T  0 disk  
├─nvme0n1p1 259:1    0   100M  0 part  
├─nvme0n1p2 259:2    0    16M  0 part  
├─nvme0n1p3 259:3    0   1.9T  0 part /mnt/86FAB3A7FAB39243
└─nvme0n1p4 259:4    0   1.3G  0 part  
nvme1n1     259:5    0 238.5G  0 disk  
├─nvme1n1p1 259:6    0     1G  0 part  
├─nvme1n1p2 259:7    0 203.1G  0 part /
└─nvme1n1p3 259:8    0  34.4G  0 part [SWAP]  

今回はnvme1n1が元ディスクです。
そしてこの場合はnvme1n1p1がシステムブート領域、nvme1n1p2がシステムそのもの。

先程作ったディレクトリに下記コマンドでシステムをマウントして、編集可能にします。

EFIパーティションのマウント

sudo mount /dev/nvme1n1p1 /mnt/system/boot/efi

システムのルートパーティションをマウント。

sudo mount /dev/nvme1n1p2 /mnt/system

手順2 システム修復作業

chrootを実行して、壊れたシステムの修復作業を行う。

sudo arch-chroot /mnt/system

壊れたシステムを上書きアップデートしての修正

以下のコマンドを使用して、問題のあるファイルシステムやカーネル、ファームウェアを再インストールします。
このコマンドでは`--overwrite`オプションを使用し、必要なファイルを上書きします。

sudo pacman -Syu --overwrite '*'
sudo pacman -S filesystem linux linux-firmware --overwrite '*'

これでシステム部分のみが最新のもので上書きされます。既にインストール済みのソフトなどは影響を受けていませんでした。

あとはchroot環境を抜けてからシステムを再起動して変更を適用します。

exit  
sudo reboot

再起動後、すぐにUEFIもしくはBIOSから起動するディスクを指定して起動し直します。

これまで使っていたソフトウェアや自分のデータには影響がありませんでした。
しかし、システムを上書きしたことにより、システム周りの環境は初期化されていたりします。
僕の場合は、fstabファイルでディスクの自動マウントやネットワークのマウント設定をしていましたので、これを改めて行いました。

まとめ

ローリングリリースのディストリビューションを使っている以上、こういったトラブルは避けられません。
とはいえ、これまで使ってきたubuntuなど他のディストリビューションと比較して、最も安定して思い通りの挙動をしてくれているので、今後も使い続けたいのです。
なのでトラブル対応の復旧手順を知っておけば安心して使い続けていけるはずです。

繰り返してお伝えしますが、Linux関連で困ったらとりあえずChatGPTに聞いてみましょう。

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