Linux
Debian

Debianがサスペンド後に復帰しない問題

More than 1 year has passed since last update.

症状

ノートパソコンにインストールしたDebian 9をしばらく放置していると
バッテリー切れで電源が落ちてしまった。

バッテリーを回復させてから電源を再起動しても
ブートローダーは起動するがOSが起動しない。

セーフモードで起動を試みると以下のメッセージでフリーズしています。

Suspending console(s) (use no_console_suspend to debug)

コンソールをサスペンドしています→ずっとサスペンドのターン。。。
ということみたいですね。

英語の情報もかなり当たりましたが
どうやったら再起動はするのか
ということが書かれていないことが多いです。

まぁLinux民はそういうこと多いですね。
「環境次第!!! ドヤァ」「君、自分のシステム、理解してる?」
みたいな

原因

よく分かりません。
サスペンドのバグじゃねぇの?

方針

調べものすらできないので、とりあえずデータが飛んでも良いからOSを起動させる。
サスペンドの問題を扱うのはその後。

私はこう考えました
「サスペンド中」でフリーズ
→サスペンドの途中で止まってる
→サスペンドできない
→再起動してもサスペンドの命令を再度実行している
→深みにはまる

つまり
サスペンドの過程を飛ばしてブートしてやれば良さそう

※間違ってたら教えてください

やり方

grub ブートローダーは生きてるのでそっちから手動でブートする。

パーティション表示

grub> ls
(hd0) (hd1,gpt2) (hd1,gpt1) (hd1,gpt0)

どのパーティションにOSが入ってるか確認。(これでOS名が出るパーティションを探す)

grub> ls (hd0)/etc/issue
grub> ls (hd1,gpt2)/etc/issue
...

「Debian~~~みたいなの」見つけたら次のコマンド。(hd1,gpt2)にOSが入ってた場合
※) 「***」の部分はそれぞれ違うので自分の環境にあったものを。(TAB押せば補完されます)
※) sda1とかも同様に自分に合ったものを

grub> set root=(hd1,gpt2)
grub> linux /boot/vmlinux*** root=/dev/sda1
grub> initrd /boot/initrd.img-***
grub> boot

とりあえずこれで復旧しました。

方針について

本来はログファイルをcatで出力してちゃんと原因を探すべきなんでしょうが

  • エディタが使えない→単語検索が非常にダルい
  • grub で馴染みのあるshell コマンドが使えない
  • 何回もフリーズしてHPがどんどん減っていく

という状況だったので許してください。。