Ubuntuが起動しない!強制終了等で壊れたLinux をLive USBとfsckで修復する手順【Linux】
Ubuntuを使っていると、突然のフリーズや強制終了の後、システムが起動しなくなってしまうことがあります。
この記事では、そのような状況に陥った際に、Ubuntu Live USB またはほかのLinux OSがインストールされたパソコンを使ってファイルシステムを修復し、再び起動できるようにする手順を解説します。
別のUbuntu環境を用意する
まず、起動しなくなったPCのストレージにアクセスするため、別のUbuntu環境を準備します。主な方法は以下の2つです。
- 方法1: OSがインストールされているストレージ(SSDやHDD)を取り出し、別のLinux PCに接続する。
- 方法2: 起動しなくなったPCを、別のストレージ(Live USBなど)から起動する。
この記事では、より手軽な方法2の「Ubuntu Live USBからUbuntuを起動する」手順を紹介します。
Ubuntu Live USBの作成
正常に動作するPCを使い、Ubuntuの公式サイトからISOファイルをダウンロードします。「Rufus」などのツールを使って、ダウンロードしたISOファイルをUSBメモリに書き込み、Ubuntu Live USBを作成してください。
USBからUbuntuを起動
修復したいPCに作成したLive USBを挿入して、BIOS/UEFI設定画面を開きます。
たいてい電源を入れてDELETEキーを連打すればBIOSに入れます。
設定画面のBootという項目(あるいは似たような名前)で起動ディスクを設定できるので、USBメモリ選択して起動します。
起動後表示されるメニューで「Ubuntuを試す」(Try Ubuntu without installing)を選択し、Ubuntuのライブセッションを開始します。
以下、ここで起動したUbuntuを「復旧用のUbuntu」と呼ぶことにします。
ストレージの状態を確認する
データが入っているストレージを見つける
復旧用のUbuntuが起動したら、修復対象のストレージが認識されているかを確認します。
ターミナルを開き、以下のコマンドを実行して、接続されているストレージの一覧を表示します。
lsblkすると以下のような出力が得られます。
... (省略)
sdb 8:16 0 953.9G 0 disk
├─sdb1 8:17 0 512M 0 part /media/elir/system-boot
└─sdb2 8:18 0 953.4G 0 part /media/elir/writable
nvme0n1 259:0 0 1.8T 0 disk
├─... (省略)表示された一覧から、修復したいストレージを探します。
通常、「system-boot」というラベルのパーティションと同じデバイスにある、容量の大きなパーティションが目的のルートパーティションです(例: /dev/sdb2 や /dev/sdc2 など)。
上記の例では、sdbが修復対象のストレージです。sdb1が起動用パーティション、そしてsdb2がデータを含むメインのパーティションとなります。
(推奨)データのバックアップ
ファイルシステムの修復作業には、予期せぬデータ損失のリスクが伴います。
この段階でストレージが認識できている場合は、重要なデータを別の外部ストレージにバックアップしておくことを強く推奨します。
ファイルエクスプローラーを開き、修復対象のパーティション(例: /media/elir/writable)にアクセスします。
必要なファイルやフォルダを、あらかじめ接続しておいたバックアップ用のUSBメモリなどにコピーしてください。
状態の確認
ストレージの状態(正確にはパーティションの状態)を確認しましょう。
まず、修復対象のパーティションがマウントされている場合は、アンマウントしておきます。
次に、ターミナルで以下のコマンドを実行し、ファイルシステムにエラーがあるかを確認します。
sudo fsck -n /dev/sdb2/dev/sdb2の部分は、ご自身の環境に合わせて変更してください。-n オプションは、ファイルシステムを実際に変更せず、エラーのチェックのみを行うためのものです。
実行後、何らかの警告(WARNING)が表示された場合、ファイルシステムが破損している可能性が高いです。
私の場合、以下のようなエラーが大量に表示されました。
Inodes that were part of a corrupted orphan linked list found.
... (省略) ...
Block bitmap differences: ...
... (省略) ...
Inode bitmap differences: ...
... (省略) ...
Group *** block bitmap does not match checksum.
... (省略) ...
writable:
**********
WARNING: Filesystem still has errors
**********最後の Filesystem still has errors というメッセージは、ファイルシステムに問題があることを明確に示しています。
補足:エラー内容の簡単な解説
参考までに、報告されている主なエラーの意味を記載します。
Orphaned Inodes (孤立したiノード):
Inodes that were part of a corrupted orphan linked list found.- ファイル削除の途中でクラッシュした際などに発生し、どのディレクトリにも属していない不完全なファイルが残っている状態です。
Bitmap Differences (ビットマップの不一致):
Block bitmap differences:やInode bitmap differences:- ストレージの使用状況を管理するマップと、実際の使用状況に矛盾が生じている状態です。データ損失に繋がる可能性があります。
Checksum Mismatch (チェックサムの不一致):
Group 1423 block bitmap does not match checksum.- データブロックの整合性を検証するためのチェックサムが一致しない状態で、データが破損していることを示します。
修復の実行
⚠️ 注意: この操作はファイルシステムの構造を直接変更するため、データが失われるリスクがあります。必ず事前にバックアップを取ってください。自己責任でお願いします。
チェックの結果、修復が必要と判断場合は、以下のコマンドを実行して修復を行います。
sudo fsck -fy /dev/sdb2/dev/sdb2 の部分はご自身の環境に合わせて変更してください。
各オプションの意味は以下の通りです。
f: ファイルシステムの状態に関わらず、強制的にチェックを実行します。-y: 見つかった全てのエラーに対して自動的に「yes」と回答し、修復を試みます。
FILE SYSTEM WAS MODIFIED というメッセージが表示されれば、修復は成功です。
起動確認
修復が完了したら、Live USBを取り外し、PCを再起動します。正常にUbuntuが起動するかを確認してください。
別のUbuntu PCで修復を行った場合はストレージを元に戻して起動を試します。
まとめ
この記事では、Ubuntuが起動しなくなった際に、ファイルシステムを修復する手順を解説しました。
突然のトラブルは焦りますが、落ち着いて対処すればデータを失わずに復旧できる可能性は十分にあります。
元も子もないですが、日頃からバックアップを心掛けることも大切ですね。
めんどくさいけど。
