🪛

Ubuntu 24.04でGDM3がクラッシュしてログインできない問題の備忘録

に公開

Ubuntu 24.04でGDM3がクラッシュしてログインできない問題の備忘録

問題の概要

Ubuntu をインストールして環境設定を整えて再起動すると何故かログイン画面までたどり着けなくなったので修復方法を記載します。

結論、Ubuntu 24.04.2 LTSでGDM3(GNOME Display Manager)が壊れていたので、ログイン画面までたどりつけませんでした。

問題の診断手順

1. システムログの確認

まず、GDM3の状態とログを確認します:

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

# システムログでGDM3関連のエラーを確認
journalctl | grep -i gdm | tail -10

実際の確認結果は以下の通りでした:

$ systemctl status gdm3
○ gdm.service - GNOME Display Manager
     Loaded: loaded (/usr/lib/systemd/system/gdm.service; static)
     Active: inactive (dead)

$ journalctl | grep -i gdm | tail -10
 621 14:06:35 ubuntu-desktop gnome-shell[2393]: Registering session with GDM
 621 14:06:35 ubuntu-desktop gnome-shell[2393]: Error registering session with GDM: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.DisplayManager was not provided by any .service files
 621 14:29:58 ubuntu-desktop update-notifier-crash[6661]: gdm3
 621 14:30:49 ubuntu-desktop update-notifier-crash[7202]: gdm3
 621 14:33:49 ubuntu-desktop gnome-shell[2445]: Registering session with GDM
 621 14:33:49 ubuntu-desktop gnome-shell[2445]: Error registering session with GDM: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name org.gnome.DisplayManager was not provided by any .service files
 621 14:34:17 ubuntu-desktop update-notifier-crash[3776]: gdm3

GDM3サービスが停止状態で、複数のクラッシュレポートが生成されていることが確認できます。

2. クラッシュレポートの確認

Ubuntuではクラッシュが発生すると自動的にクラッシュレポートが生成されます:

# クラッシュレポートの一覧確認
ls -la /var/crash/

# GDM3のクラッシュレポートを解析
sudo apport-unpack /var/crash/_usr_sbin_gdm3.0.crash /tmp/gdm3-crash
cat /tmp/gdm3-crash/SignalName
cat /tmp/gdm3-crash/StacktraceTop

実際の診断結果は以下の通りでした:

$ ls -la /var/crash/
合計 5020
drwxrwsrwt  2 root  whoopsie    4096  621 14:34 .
drwxr-xr-x 14 root  root        4096  620 00:10 ..
-rw-r-----  1 ubuntu whoopsie 4635914  621 14:34 _opt_Cursor_usr_share_cursor_cursor.1000.crash
-rw-r-----  1 root  whoopsie   33972  621 14:30 _usr_bin_add-apt-repository.0.crash
-rw-r-----  1 root  whoopsie  454890  621 14:35 _usr_sbin_gdm3.0.crash

$ sudo apport-unpack /var/crash/_usr_sbin_gdm3.0.crash /tmp/gdm3-crash

$ cat /tmp/gdm3-crash/SignalName
SIGTRAP

$ cat /tmp/gdm3-crash/StacktraceTop
?? ()
?? ()
?? () from /lib/x86_64-linux-gnu/libffi.so.8
?? () from /lib/x86_64-linux-gnu/libffi.so.8
ffi_call () from /lib/x86_64-linux-gnu/libffi.so.8

この結果から、GDM3がlibffi.so.8ライブラリのffi_call()関数でエラーを起こしていることが分かります。

修復手順

1. libffiライブラリの修復

libffiライブラリを再インストールします:

# パッケージリストの更新
sudo apt update

# libffi8ライブラリの再インストール
sudo apt install --reinstall libffi8

2. GDM3の再インストール

GDM3パッケージ自体も再インストールして、破損したファイルを修復します:

# GDM3の再インストール
sudo apt install --reinstall gdm3

3. クラッシュレポートの削除

古いクラッシュレポートを削除して、システムをクリーンな状態にします:

# GDM3のクラッシュレポートを削除
sudo rm /var/crash/_usr_sbin_gdm3.0.crash

4. GDM3サービスの再起動

修復後、GDM3サービスを再起動してテストします:

# GDM3サービスの開始
sudo systemctl start gdm3

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

修復後の結果:

$ sudo systemctl start gdm3

$ systemctl status gdm3
● gdm.service - GNOME Display Manager
     Loaded: loaded (/usr/lib/systemd/system/gdm.service; static)
     Active: active (running) since Sat 2024-06-21 14:45:00 JST; 30s ago
       Docs: man:gdm(8)
             man:gdm.conf(5)
   Main PID: 12345 (gdm3)
      Tasks: 3 (limit: 4915)
     Memory: 8.0M
        CPU: 120ms
     CGroup: /system.slice/gdm.service
             └─12345 /usr/sbin/gdm3

GDM3サービスが正常に起動し、アクティブな状態になっていることが確認できます。

備考

ディスプレイマネージャーの切り替え(代替案)

GDM3に問題がある場合は、LightDMに切り替えることも可能です:

# LightDMのインストール
sudo apt install lightdm

# デフォルトディスプレイマネージャーの設定
sudo dpkg-reconfigure lightdm

まとめ

以上、上記の方法でクラッシュログを確認して、ライブラリを修復し、GDM3を修復しました。
誰かの役に立てば光栄です。

参考リンク

Discussion