Debianが起動しない場合の復旧方法 (Bug#932935)

2019年7月28日に Debianが起動しなくなりました.原因は sid(unstable)と呼ばれる開発版のみに存在するバグです.

バグレポートも出ています.症状としては,システムを再起動すると" logsave not found - requires manual a fsck "と表示されるだけでシステムが起動しなくなる,という恐ろしいものになります.

Debian Bug report logs - #932935 System refuses to boot, logsave not found - requires manual a fsck
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=932935

このバグはすでに修正されています.しかし不幸にも debianが起動しなくなった場合の対処方法として,復旧手順をメモしておきます.

復旧手順の概要

パッケージのバグが原因でブートしない場合は,バグ修正版のパッケージでアップグレード(つまり上書きインストール)すれば復旧できます.

その手順は

  1. 無理やり手動でシステムを起動
  2. IPアドレスを手動設定
  3. 無理やり apt update して apt install

となります

この手順は,知っておくと結構役に立つので,以下詳しく手順を説明します*1

手順1: 状況の確認

Linuxの起動に失敗すると,次のような画面が表示されます.

Busybox バージョン情報
Enter 'help' for a list of built-in commands.

(initramfs)

この画面では,ディスクのエラーチェックだとか,設定ファイルの修正,などが行えます.今回は手動で無理やりシステムを起動させます.

手順2: IPアドレスの付与

まず余っているIPアドレスを手動設定します

(initramfs) ifconfig eth0  IPアドレス

次にデフォルトゲートウェイを手動設定します

(initramfs) route add default gw ルーターのIPアドレス

手順3: システムの root (/) のマウント

まずマウントポイントを作成します./tmp 以下に作るのが無難だと思います.

(intiramfs) mkdir /tmp/root

ディスクをマウントします.カーネルモジュールを手動でロードする必要があります.例えば ext4 でフォーマットしている場合は,次のようなコマンドを実行します.

(intiramfs) modprobe ext4
(initramfs) mount -t ext4 /dev/デバイス  /tmp/root

これでマウントできるはずです.確認は df コマンドを使います

(initramfs) df

手順4: システムの起動

chroot でディスク上のシステムに切り替えます.

(initramfs) chroot /tmp/root 

本来なら /proc や /dev などをマウントしてから chroot すべきですが,今回は緊急事態なので,細かいことは省略します.

いくつか警告が出ますがそれも無視

手順5: 確認

これで bashに切り替わるはずです.apt コマンドが起動できるか確認します.

$ apt 

問題なければ apt update します

$ apt  update

ネットワークの設定が合っていれば,update が始まるはずです.これでバグ修正済みのパッケージ情報がgetできます

手順6: バグ修正版パッケージの上書きインストール

上記bugレポートに纏められているように,今回システムが起動しなくなった原因は e2fsprogs というパッケージのバグにあります.すでにバグは修正済みなので,修正済みのe2fsprogs を apt で上書きインストールします

$ apt install e2fsprogs 

これで作業は終わりです.再起動すればシステムは元どおり正常起動するようになります.

手順7: それでも復旧できない場合

バグの原因が特定できない場合は,とりあえず更新済みパッケージを全部インストールする,つまり

$ apt upgrade

するという方法もあります.

ただし,/dev や /procを準備してない状態で apt upgrade をすると想定外の事故が起こる可能性もあります.個人的には apt upgrade は最後の手段にとっておいたほうが良いとおもいます.

*1:ブートローダーであるgrub2 ,initramfsの中にあるシェル busybox が壊れていない限りはまずこの方法でシステムは復元できます