Ubuntu18.04から20.04にアップグレードするとログイン画面が表示されなくなった

はじめに

Ubuntu18.04LTSから20.04LTSにアップグレードしました.
まぁバグがあるやろなと思ってはいたんですが,電源を入れても黒い画面しか表示されずログインすらできなくなってしまったので解決策を備忘録として残しておきます.

解決策

CUDAが原因でした.
僕はこのPCで以前から深層学習を行ったりしていたので,CUDAが入っていないとは思ってもいませんでいした.
まぁCUDAを入れ直して解決できたので以下にその方法を順序立てて記します.

1. リカバリーモードの起動

普通に起動しようとすると黒い画面(なんかところどころ変な模様ありますが...)しか表示されません.
そこでリカバリーモードで起動します.
まず普通に電源をつけます.
ロゴが表示された(私の場合はTSUKUMOで購入したBTOなので「TSUKUMO」と表示されます)ときに,SHIFTキーを長押しすることでブートローダGNU GRUBだと思います)の画面を表示させることが出来ます.
ちなみに,ぐぐると人によってはESCキーを連打だったり長押しだったりします.
それぞれ試してみてください.
どれかで行けるはずです.
GRUBの画面が表示されたら「Advanced options for Ubuntu」を選択します. すると,起動可能なLinuxカーネル名の後ろに「(recovery mode)」と記載されているものがあるのでこれを選択します.
カーネルのバージョンは複数あると思いますが,最新のものを選んでおけば無難かと思います.
これでリカバリーモードでの起動が完了です.

2. CUDAのインストール

リカバリーモードで起動した後,ターミナルを立ち上げます.
試しにnvidia-smiコマンドを打ってみて,もしそんなコマンドないよと言われたらCUDAをインストールすれば解決できます.
もしGPUに関する情報が出力されたらCUDAが原因でないとおそらく思われる($ ls /user/local/cuda* で確認してみてください)ので,このページをそっと閉じてください.
ちなみに,僕の場合は今までインストールしたCUDAのディレクトリの中身がほとんど消えていました...
で,CUDAのインストール方法ですが,こちらのNvidiaの公式ページから行うのが最善だと思います.

developer.nvidia.com

ここに記されているコマンドをコピペすれば無事にインストールできます.
時間はまぁ5分位だと思います.

3. .bashrcへの記述

僕はbashを使っているので.bashrcに書きますが,もしログインシェルをzshやfishなどを使っている人たちはそっちの設定ファイルに書いてください.
ここではbashの場合を紹介します. vimでも何でもいいので,.bashrcを開いてください. 今まで使用していたCUDAのパスが残っていると思います.
例えば以下のような感じです.

export PATH="/usr/local/cuda-10.2/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-10.2/lib64:$LD_LIBRARY_PATH"

これを先程インストールしたCUDAのものに書き換えます.

export PATH="/usr/local/cuda-11.0/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH"

保存してsourceコマンドで.bashrcを読み込ませます.
これでnvidia-smiが適切に動作すれば成功です.

終わりに

この後にPCの再起動をすれば問題なく動いてくれました.
Linuxの気持ちが少しわかるようになった気がしました.(笑)