No graphical login after GNOME 49 update

After the MicroOS update tonight, I lost my graphical login. So far I haven’t been able to reinstate it. My system shows no failed services, in particular graphical.target and gdm.service have started up successfully.

poseidon:/etc/gdm # systemctl status display-manager.service
● gdm.service - GNOME Display Manager
     Loaded: loaded (/usr/lib/systemd/system/gdm.service; enabled; preset: enabled)
     Active: active (running) since Sun 2025-09-28 11:50:53 CEST; 24min ago
 Invocation: 0d31402813f34497aa7713515c2d56de
    Process: 2098 ExecStartPre=/usr/libexec/gdm/keytable (code=exited, status=0/SUCCESS)
   Main PID: 2101 (gdm)
      Tasks: 5 (limit: 36644)
        CPU: 41ms
     CGroup: /system.slice/gdm.service
             └─2101 /usr/sbin/gdm

Sep 28 11:50:53 poseidon systemd[1]: Starting GNOME Display Manager...
Sep 28 11:50:53 poseidon keytable[2098]: /etc/vconsole.conf available
Sep 28 11:50:53 poseidon keytable[2098]: XKBLAYOUT: de
Sep 28 11:50:53 poseidon keytable[2098]: XKBLAYOUT is already set. Better don't touch X11 keyboard configuration.
Sep 28 11:50:53 poseidon systemd[1]: Started GNOME Display Manager.

I should add that I still had display-manager-legacy.service until this morning. I found this forum article explaining that I should use gdm-systemd and gdm.service instead. I did so, but still there’s no graphical session.

I guess that somehow the UI session of user “gdm” should be started, but this doesn’t happen and I’m clueless what I need to do to make it happen.

It’s a MIcroOS installation, initially set up ~6 months ago, and fully up-to-date. The list of installed patterns is: base, container_runtime, gnome_basic, microos_base, microos_base_zypper, microos_hardware, microos_selinux, microos_sssd_ldap, minimal_base, x11, x86_64_v3. “gnome” is missing in this list, but I verified that intalling the “gnome” pattern would add just 51 bytes to my system.

Any hints?

Already many other threads…

The proposed solution (adding systemd in nsswitch.conf) doesn’t work for me. Actually it makes matters worse because gdm now starts to dump core. I suppose the “problem” is that I am ussing sssd:

passwd:		compat systemd sss
group:		compat [SUCCESS=merge] systemd sss
shadow:		compat systemd sss

So this is what happens now:

Sep 28 12:45:03 poseidon systemd[1]: Started GNOME Display Manager.
Sep 28 12:45:03 poseidon systemd[1]: Created slice User Slice of UID 60578.
Sep 28 12:45:03 poseidon systemd[1]: Starting User Runtime Directory /run/user/60578...
Sep 28 12:45:03 poseidon systemd-logind[1999]: New session c36 of user gdm-greeter.
Sep 28 12:45:03 poseidon systemd[1]: Finished User Runtime Directory /run/user/60578.
Sep 28 12:45:03 poseidon systemd[1]: Starting User Manager for UID 60578...
Sep 28 12:45:03 poseidon (systemd)[5466]: pam_sss(systemd-user:account): Access denied for user gdm-greeter: 10 (User not known to the underlying authentication module)
Sep 28 12:45:03 poseidon (systemd)[5466]: PAM failed: User not known to the underlying authentication module
Sep 28 12:45:03 poseidon (systemd)[5466]: user@60578.service: Failed to set up PAM session: Operation not permitted
Sep 28 12:45:03 poseidon (systemd)[5466]: user@60578.service: Failed at step PAM spawning /usr/lib/systemd/systemd: Operation not permitted
Sep 28 12:45:03 poseidon systemd[1]: user@60578.service: Main process exited, code=exited, status=224/PAM
Sep 28 12:45:03 poseidon systemd[1]: user@60578.service: Failed with result 'exit-code'.
Sep 28 12:45:03 poseidon systemd[1]: Failed to start User Manager for UID 60578.
Sep 28 12:45:03 poseidon systemd[1]: Started Session c36 of User gdm-greeter.
Sep 28 12:45:03 poseidon gdm-launch-environment][5459]: pam_unix(gdm-launch-environment:session): session opened for user gdm-greeter(uid=60578) by (uid=0)
Sep 28 12:45:03 poseidon /usr/libexec/gdm/gdm-wayland-session[5472]: dbus-daemon[5472]: [session uid=60578 pid=5472] Activating service name='org.freedesktop.systemd1' reque>
Sep 28 12:45:03 poseidon /usr/libexec/gdm/gdm-wayland-session[5472]: dbus-daemon[5472]: [session uid=60578 pid=5472] Activated service 'org.freedesktop.systemd1' failed: Pro>
Sep 28 12:45:03 poseidon gnome-session-i[5476]: Failed to upload environment to systemd: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Name "org.freedesktop.systemd>
Sep 28 12:45:03 poseidon gnome-session-i[5476]: Failed to check if unit gnome-session-wayland@gnome-login.target is active: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoO>
Sep 28 12:45:03 poseidon gnome-session-i[5476]: Failed to reset failed state of units: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Name "org.freedesktop.systemd1">
Sep 28 12:45:03 poseidon gnome-session-i[5476]: Starting GNOME session target: gnome-session-wayland@gnome-login.target
Sep 28 12:45:03 poseidon gnome-session-i[5476]: Failed to start unit gnome-session-wayland@gnome-login.target: GDBus.Error:org.freedesktop.DBus.Error.NameHasNoOwner: Name "o>
Sep 28 12:45:03 poseidon kernel: show_signal: 3 callbacks suppressed
Sep 28 12:45:03 poseidon kernel: traps: gnome-session-i[5476] trap int3 ip:7fbf102351eb sp:7ffc0bf846d0 error:0 in libglib-2.0.so.0.8600.0[6b1eb,7fbf101ed000+a0000]
Sep 28 12:45:03 poseidon systemd-coredump[5484]: Process 5476 (gnome-session-i) of user 60578 terminated abnormally with signal 5/TRAP, processing...

/etc/pam.d/common-account looks like this:

account	requisite	pam_unix.so	
account	sufficient	pam_localuser.so 
account	required	pam_sss.so	use_first_pass	

Do I need to install systemd-homed?

No, systemd-homed was not the issue. I needed to add the option ignore_unkown_user to /etc/pam.d/common-account.

Unfortunately this option is not supported by pam-config yet, so I had to apply a manual change to the PAM configuration.

/etc/pam.d/common-account after the change:

account	sufficient	pam_systemd_home.so
account	requisite	pam_unix.so	
account	sufficient	pam_localuser.so 
account	required	pam_sss.so	use_first_pass ignore_unknown_user

This is NOT the correct solution.

It’s better to copy /usr/lib/pam.d/system-user to /etc/pam.d, and change the line

    account  include  common-account

to

    account  required   pam_unix.so no_pass_expiry

The best solution is still under discussion.