So I updated my Debian Sid tower system. It was a complete update that included GNOME 49. this update broke GNOME. Two culprits:
- virtualbox-dkms.conf
- dropped support for gnome-session-x11 unit
I spent about 30 minutes troubleshooting this, 50 commands, 1000 lines of logs and config files.
This is why I don't use Debian Sid as my main workstation anymore. I've had issues like this when upgrading due to GDM problems, GNOME issues, Nvidia driver issues, and now this. Too much can go wrong, and too much troubleshooting to fix it! So my new main system is Ubuntu, but I keep the Debian Sid system as the backup.
Getting back to the problem: To make things easier on myself, I ditched x11 on that system and embraced Wayland. It works very well with newer versions of GNOME so I'm not too worried about it, but it was a concession of sorts as I love x11. (But it doesn't matter because GNOME 50 has dropped x11 ALTOGETHER!!!) Oh sad day.
For anyone reading this, consider checking for modprobe config errors after updating. They might be the culprit!
Here's the full troubleshooting info. Enjoy!
Debian Sid — GNOME 49 Upgrade Failure
System: Debian Sid (Unstable) — nw1 — GeForce GTX 970 (nvidia 550.163.01)
Symptom: After apt upgrade, desktop fails to start. Blinking cursor at boot, no GDM login screen.
Bug 1 — virtualbox-dkms.conf was a directory
What happened
The apt upgrade left /etc/modprobe.d/virtualbox-dkms.conf as a directory
instead of a file. This caused update-initramfs to hang and never complete,
which meant the nvidia-drm modeset parameter was never written into the initramfs.
Nvidia booted with modeset=N, GDM could not start a display, resulting in a
blinking cursor with no login screen.
Diagnosis 1
# Confirmed modeset was disabled
cat /sys/module/nvidia_drm/parameters/modeset
# Returned: N
# update-initramfs hung with repeated errors:
# libkmod: ERROR: conf_files_filter_out: Directories inside directories
# are not supported: /etc/modprobe.d/virtualbox-dkms.conf
# mkinitramfs: copy_file: config '/etc/modprobe.d/virtualbox-dkms.conf' not found
Fix 1
# Remove the broken directory
sudo rm -rf /etc/modprobe.d/virtualbox-dkms.conf
# Recreate as a proper file
echo "# virtualbox" | sudo tee /etc/modprobe.d/virtualbox-dkms.conf
# Enable nvidia-drm modeset
echo "options nvidia-drm modeset=1" | sudo tee /etc/modprobe.d/nvidia-drm.conf
# Rebuild initramfs
sudo update-initramfs -u -k all
# Reboot and verify
sudo reboot
cat /sys/module/nvidia_drm/parameters/modeset
# Should return: Y
Bug 2 — GNOME 49 dropped gnome-session-x11 unit
What happened 2
GNOME 49 removed the gnome-session-x11@.target systemd unit that GDM used
to launch X11 sessions. GDM 49.2-4 still attempted to call it, causing the
session to fail immediately after login even if the display started.
Diagnosis 2
sudo journalctl -b | grep -E "gnome-session|wayland|xorg|EE|crash" | tail -30
# Revealed repeated errors:
# Failed to start unit gnome-session-x11@gnome-login.target:
# Unit gnome-session-x11@gnome-login.target not found.
# Confirmed the unit no longer exists
dpkg -L gnome-session gnome-session-bin gnome-session-common | grep "\.target"
# gnome-session-x11@.target is absent — replaced by gnome-session@.target
# and gnome-session-wayland@.target
Fix 2
Enable Wayland in GDM config (GNOME 49 uses Wayland session template):
sudo nano /etc/gdm3/daemon.conf
Set:
WaylandEnable=true
Then:
sudo systemctl restart gdm3
Root Cause Summary
Two separate bugs stacked during the same apt upgrade:
| Bug | Cause | Effect |
|---|---|---|
| virtualbox-dkms.conf as directory | apt packaging conflict mid-upgrade | initramfs never rebuilt, nvidia modeset=N, no display |
| gnome-session-x11@.target removed | GNOME 49 architectural change | X11 session fails to launch even if display starts |
Bug 1 prevented getting to the login screen entirely.
Bug 2 would have prevented a successful desktop session even after fixing Bug 1.
Prevention
After any major apt upgrade on Debian Sid check for broken modprobe configs:
# Check for anything unexpected in modprobe.d
ls -la /etc/modprobe.d/
# Check for broken packages
sudo dpkg --audit
sudo apt --fix-broken install
# Always rebuild initramfs after driver-related upgrades
sudo update-initramfs -u -k all