🫰

Ubuntu 22.04で画面が表示されない/真っ暗な問題の解決法

に公開

問題

ログイン画面は通過するものの、ログインしたあと、何も表示されない問題(←筆者が遭遇)
ログイン画面すら表示されない(←調べているときに記事がたくさんあった)

結論

問題は以下の3点かも。
1.強制終了した際に、GUIの設定ファイルであるxorg.confが壊れてしまったこと
2.Waylandが手持ちのマシンと合わず悪さをしていたこと
3.gdm3の関連ライブラリが壊れていること

全く知識のない状態から、とりあえず回復したので、備忘録。
なるべく周辺知識も書きますが、正直私の言っていることが正しいか自信がない。

解決策

ともかくターミナルでログイン

まずは、Ctrl + Alt + F3~F6を押して、CUIにてログインします。なお、普段見ているGUIはCtrl + Alt + F1~F2なので、GUIに戻りたいときはそのようにします。

gdm3を修復する

まずはgdm3がうまくいっているかどうかを確認します。

# gdm3サービスの状態確認
systemctl status gdm3

ここでdeadしているようであれば再インストールして修復します。

# gdm3の再インストール
sudo apt install --reinstall gdm3
# gdm3サービスを開始
sudo systemctl start gdm3
# サービスの状態確認
systemctl status gdm3

これでまだdeadしているなら追加の調査が必要でしょう。
すくなくともここまでうまくいけば、ログイン画面は表示されるはずです。

WaylandからXorgに切り替え

次にgdm3の設定を修正してWaylandを使わないようにします。

vim /etc/gdm3/custom.conf

この中にWaylandEnable=falseというコメントアウトされた行が存在するので、コメントを消して保存します。そのあとに

sync
reboot

でXorgが使われるようにします。

Xorgの設定ファイルを修復する

最後にXorgの設定ファイルを修正します。suでログインします。

sudo su -

Xorgで新しい設定ファイルを作成し、既存の設定ファイルと入れ替えます。
すでに設定ファイルが存在していても、壊れている可能性があるので入れ替えます。(これで3敗)

Xorg -configure
cp -f /root/xorg.conf.new /etc/X11/xorg.conf

なお、事前にログインを試行したりしてXorgが起動していると、Xorg -configureでコケます。
以下のようなエラーがでます。

Cannot establish any listening sockets - Make sure an X server isn't already running(EE)

その際はXorgを落とせば良いです。以下のコマンドでPIDが確認できます。

ps c | grep Xorg

以上で直るはずです。

解説

UbuntuのGUIは元々X Window Systemというプロトコルによって実現されており、Xorgが代表的な実装例です。ただし、XorgおよびX Window Systemはあまりに古く、Waylandという後継のプロトコルで代替されつつあります。

X Windows System:
https://ja.wikipedia.org/wiki/X_Window_System
Xorg:
https://wiki.archlinux.jp/index.php/Xorg
Wayland:
https://en.wikipedia.org/wiki/Wayland_(protocol)#Differences_between_Wayland_and_X

22.04ではデフォルトでWaylandが使われています。これが機能していないのが問題のようです。
なお、ログイン画面だけはgdm3で管理されているようで、その先はXorgまたはWaylandの領分のようです。
つまり、ログイン画面に入れないならgdm3が悪くログイン後に画面が表示されないならWaylandが悪いようです。

感想

Ubuntuを使っているんですが、よく強制終了する関係で、Xorgが死にがちです。これに取り掛かるのはもう3回目なので、流石に自分で記事を書くことにしました。将来の自分に向けてラブを。

Discussion