Ubuntuのログインループを解決する
ログイン画面でパスワードを入力して進むと,再びログイン画面が出てしまうというログインループが発生したときの解決方法を紹介します.
ログインループ
きっかけ:電源がぶち抜かれてしまった
聞いたところによるとどうやら電源が入っていたことに気付かず,ぶち抜いてしまったようです.特に作業をしていたわけではないので問題なかったのですが,ログインしようとすると再びログイン画面に戻ってしまい,先に進めません.このままだと鉄の塊なので,解決を試みました.
いわゆるログインループに陥ってしまった場合,その原因は NVIDIA ドライバにあるようです.元から入っていたものが損傷してしまったということでしょうか.
ドライバの再インストール
GUI でログインはできませんが,仮想コンソール (CUI) でドライバの再インストールを行えば解決できることが多いということなので,Ctrl + Alt + F1 を押して仮想コンソールを開きます.
ちなみに,仮想コンソール (tty) は F1 ~ F6 を使って 6 つ (tty1~tty6) まで開くことができ,同時に異なる環境で作業することができる Linux の仕組みらしいです.物理的に接続していないと操作できないようなので,SSH では無理です.
仮想コンソール上でログインしたら,以下の手順でインストールしていきます.
1.GPU の型番を調べる
terminal
# オプション i で大文字・小文字を区別せずに検索
$ lspci | grep -i nvidia
02:00.0 VGA compatible controller: NVIDIA Corporation Device 1b06 (rev a1)
02:00.1 Audio device: NVIDIA Corporation Device 10ef (rev a1)
03:00.0 VGA compatible controller: NVIDIA Corporation Device 1b06 (rev a1)
03:00.1 Audio device: NVIDIA Corporation Device 10ef (rev a1)
82:00.0 VGA compatible controller: NVIDIA Corporation Device 1b06 (rev a1)
82:00.1 Audio device: NVIDIA Corporation Device 10ef (rev a1)
83:00.0 VGA compatible controller: NVIDIA Corporation Device 1b06 (rev a1)
83:00.1 Audio device: NVIDIA Corporation Device 10ef (rev a1)
検索すれば GPU が何かは特定できるのですが,見づらいときは PCI ID リストを更新します.
terminal
$ sudo update-pciids
Downloaded daily snapshot dated 2019-07-25 03:15:02
# sudo 権限がないと更新できない
$ update-pciids
update-pciids: /usr/share/misc/pci.ids.new is read-only
$ lspci | grep -i nvidia
02:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
02:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1)
03:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
03:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1)
82:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
82:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1)
83:00.0 VGA compatible controller: NVIDIA Corporation GP102 [GeForce GTX 1080 Ti] (rev a1)
83:00.1 Audio device: NVIDIA Corporation GP102 HDMI Audio Controller (rev a1)
型番が特定できたら,NVIDIA のサイト でドライバのバージョンを確認します.
2.ドライバを確認する
現在インストールされている NVIDIA ドライバのバージョンを確認します.
terminal
$ dpkg -l | grep nvidia
ii nvidia-xxx xxx.xxx-0ubuntu1 amd64 NVIDIA binary driver - version xxx.xxx
このような感じで出ます.最初の二文字が ii
であればインストール済み,rc
であれば削除済みであるが設定は残っている状態です.
この環境では 6 つくらいドライバが出てきました.構築したのは別の方なので詳細は分かりませんが.
3.ドライバの再インストール
ドライバのバージョンは先ほど調べた番号よりも小さければよいらしく,インストールはされていましたがファイル損壊などでバグっているのかもしれないので,すべて再インストールします.
terminal
$ sudo apt-get update && sudo apt-get install nvidia-xxx
# ドライバインストール後は再起動が必要
$ sudo reboot
再起動すると,無事ログインできるようになっていました!