第638回ではUbuntuにログインする一般的な方法をいくつか紹介しました。ただしそれらの方法はあくまでUbuntuがきちんと動いていることが前提となっています。今回は不幸にもUbuntuがうまく起動しなくなったときに,
具体的には,
- パスワードを忘れたときなどにシングルユーザーモードで
「ログインする」 方法 (このページで解説) - ルートファイルシステムをマウントできなくなったときにInitramfsに
「ログインする」 方法 (2ページ目で解説) - ストレージデバイスを仮想マシン化して
「ログインする」 方法 (3ページ目で解説) - SSHログインできなくなったときのためにIPMIやシリアルコンソールで
「ログインする」 方法 (4ページ目で解説)
リカバリー用にシングルユーザーモードでログインする
人間の記憶はアテになりません。昨日食べたご飯どころか,
そんな涙ながらの主張にも関わらずディスプレイに貼られた紙を廃棄され,
- ※1
- センシティブな情報をPC内に保持するのであれば,
LUKSなどを利用してストレージを暗号化すべきです。ちなみに以前はeCryptfsによってホームディレクトリを暗号化するオプションがインストーラーにありましたが, 現在ではLVMとLUKSを利用したストレージ全体の暗号化に変更になっています。ただし, いずれにせよ物理的にアクセスできる状況であれば, 完璧にデータを保護することは難しいと考えておきましょう。
Ubuntuは起動時にGRUBメニューを操作することで,
方法A:電源投入後,
PCのロゴが表示される前からESCキー (UEFIの場合) もしくはSHIFTキー (BIOSの場合) を連打する - 経験的に
「押し続ける」 よりも 「連打する」 ほうが確実です - ESCキーを連打する場合は,
GRUBメニューが表示されてすぐにGRUBプロンプト 「 grub>
」に移行してしまうかもしれません - そのときは
「 normal
」と入力して, 画面が消えたらすぐに 「1回だけ」 ESCキーを押してください
- 経験的に
方法B:正しく起動できている状況であれば,
/etc/
を次のように変更した上で再起動してくださいdefault/ grub 「 GRUB_
」TIMEOUT_ STYLE=hidden を 「 GRUB_
」TIMEOUT_ STYLE=menu に変更する - 「
GRUB_
」TIMEOUT=0 を 「 GRUB_
」TIMEOUT=5 に変更する - 「
sudo update-grub
」を実行する - これで起動時は常に5秒間はGRUBメニューが表示されます
- 言い換えると,
この変更が有効な間は, 起動時間が5秒遅くなります
方法C:キー入力もうまくいかないし設定も変更できない場合は次の方法で強制的にメニューを表示可能です
- 電源投入後,
カーネルの起動処理が開始してからsystemdが起動する手前までのタイミングでリセットします - これによりGRUBはリセット前のエントリーの起動に失敗したと判断し,
次回起動時にメニューを表示します
- 電源投入後,
うまくGRUBメニューを表示できたら,
複数のバージョンのカーネルがインストールされている場合は,
すると画面下部に次の図のような
厳密に言うと一般的な認証を通っていないので,
- ※2
- さらに厳密なことを言うと,
このプロンプトは 「 sulogin
」コマンドを実行しているため, 「認証を通って」 はいます。
ちなみにUbuntuはrootアカウントを無効化しているために,sudo passwd -l root
」
- ※3
- 無効化できるとは言え,
USBブートしてルートファイルシステムをマウントすればそのまま見えますし, 後ほど説明するようにInitramfsの中でマウントするという手もあります。 sulogin
コマンド自体も「 --force
」オプションを付けることでパスワード認証をスキップ可能です。UI経由からのシングルユーザーモードを無効化できるからといって, 十分にセキュアになるわけではないことは留意しておきましょう。
インターネット接続は有効化されていません。もし有効化したい場合は,
- ※4
- 本来リカバリーモードのときはできるだけシステムにダメージを与えないようにルートファイルシステムは読み込み専用で起動し,
最低限必要なときだけ何らかの変更を書き込むべきです。
リカバリーメニューには他にもシステムを回復するために必要な手段が一通り存在するので,
最近のUbuntuだとシングルユーザーモードに入った時点でルートファイルシステムは読み書き可能な状態でマウントされています。もし何らかの理由で読み込み専用でマウントされていて,
# mount -o remount,rw /
どうしても再マウントできない場合は,
ちなみにシングルユーザーモードにおいて,
# passwd (ユーザー名) New password: (新しいパスワードを入力) Retype new password: (上記と同じパスワードを再度入力) passwd: password updated successfully
うまく設定を変更できたなら,reboot
」
もし再起動せずに継続して起動処理を続けて欲しい場合は,exit
」