The TTY That Saved Everything
Date: November 20, 2025 Duration: Most of the day Messages: 322 Issue: Gentoo system wouldn’t boot to desktop Result: Full recovery via TTY
The Symptom
Power on. BIOS POST. Bootloader. Kernel messages scrolling.
Then: black screen with a blinking cursor.
No KDE Plasma. No SDDM login. No GUI at all. Just a cursor, blinking in the void.
The Panic (Brief)
My main workstation. All my work. Custom Gentoo installation I’d spent months perfecting.
And it wouldn’t boot.
The Recovery Path
Ctrl+Alt+F2
That’s the magic. Switch to TTY2. The graphical session is on TTY1 (or TTY7, depending on setup). Other TTYs are text consoles.
Gentoo Linux (tty2)
localhost login: _
The system was alive. Just the GUI was dead.
The Investigation
Logged in on TTY2. Started checking.
Check 1: What’s supposed to start the GUI?
rc-status
Runlevel: default
display-manager [ started ]
...
SDDM was “started” but clearly not working.
Check 2: SDDM Logs
cat /var/log/sddm.log
Failed to start X server
Not SDDM’s fault. X (or in my case, Wayland/KWin) wasn’t starting.
Check 3: Xorg Logs
cat /var/log/Xorg.0.log | grep EE
(EE) NVIDIA: Failed to initialize the NVIDIA kernel module
There it was. NVIDIA driver wasn’t loading.
The Root Cause
I’d updated the kernel the previous day. The NVIDIA driver was compiled against the old kernel. Module version mismatch.
uname -r
# 6.6.30-gentoo
ls /lib/modules/
# 6.6.28-gentoo 6.6.30-gentoo
ls /lib/modules/6.6.30-gentoo/video/
# (empty or missing nvidia.ko)
The NVIDIA module existed for the old kernel. Not for the new one.
The Fix
Still on TTY2:
Step 1: Rebuild NVIDIA Driver
emerge --oneshot nvidia-drivers
This recompiles the driver against the running kernel.
>>> Installing nvidia-drivers-545.29.06
>>> Compiling kernel module...
>>> Installing kernel module to /lib/modules/6.6.30-gentoo/
Step 2: Verify Module Exists
ls /lib/modules/$(uname -r)/video/
# nvidia.ko nvidia-drm.ko nvidia-modeset.ko nvidia-uvm.ko
Modules present.
Step 3: Load the Module
modprobe nvidia
No error. Module loaded.
Step 4: Restart Display Manager
rc-service display-manager restart
Step 5: Switch to GUI TTY
Ctrl+Alt+F1
KDE Plasma login screen. Working.
What Went Wrong
Gentoo doesn’t automatically rebuild out-of-tree kernel modules when you update the kernel. That’s your job.
The proper update sequence:
# Update kernel
emerge gentoo-sources
# Configure and build
cd /usr/src/linux
make oldconfig
make -j$(nproc)
make modules_install
make install
# Rebuild dependent packages
emerge @module-rebuild # <-- THIS IS THE KEY
# Reboot
reboot
The @module-rebuild set contains packages that install kernel modules: NVIDIA, ZFS, VirtualBox, etc. After a kernel update, run this or modules will be missing.
I’d forgotten. The system reminded me.
Why TTY Saved Everything
If I couldn’t get a shell, my options would have been:
- Boot from live USB
- Chroot into the system
- Fix from there (painful)
But TTY2 was right there. The kernel was fine. Userspace was fine. Only the GPU driver was broken.
Ctrl+Alt+F2 gave me a fully functional Gentoo system to work with. No live USB needed.
The 322 Messages
Not all for this issue. The session also covered:
- Verifying the fix persisted after reboot
- Setting up automatic module rebuilds
- Understanding why
emerge @module-rebuildexists - Checking for similar issues with other modules
- Documenting the incident for next time
Each problem spawned three more questions. Classic troubleshooting.
Prevention
Added to my kernel update checklist:
#!/bin/bash
# kernel-update.sh
# 1. Build and install new kernel
eselect kernel set <new-version>
cd /usr/src/linux
make oldconfig
make -j$(nproc)
make modules_install
make install
# 2. Rebuild out-of-tree modules
emerge @module-rebuild
# 3. Update bootloader
grub-mkconfig -o /boot/grub/grub.cfg
# 4. Verify critical modules
ls /lib/modules/$(make kernelversion)/video/nvidia* || echo "WARNING: NVIDIA missing"
echo "Ready to reboot"
Now I can’t forget the module rebuild. The script does it for me.
The Lesson
TTY is always there. When the GUI dies, the text console is your escape hatch.
Kernel updates break modules. Every. Single. Time. Plan for it.
Gentoo makes you understand. On Ubuntu, this would “just work” (or fail silently). Gentoo made me learn exactly what broke and why.
When everything fails, Ctrl+Alt+F2 still works. That’s the power of a real Unix system.