After updating my graphics drivers and running a full system update with
sudo pacman -Syu
, I discovered that Arch Linux would no longer boot properly. Instead, it stopped at a black screen showing the system disk path with a blinking dash underneath.
I use SDDM
as my login manager and BSPWM
as my tiling window manager. Naturally, I suspected that the problem was with SDDM since it’s responsible for the login screen and should be the first thing visible.
The Solution
Luckily, I could still switch to a TTY by pressing CTRL + ALT + F3. From there, I checked the status of SDDM with:
|
|
It showed an error: “Could not start Display server on vt 2” along with other related messages.
After some searching, I found a helpful solution on Reddit in this thread by user omgrolak.
The fix is to edit the initramfs configuration and add the necessary GPU modules. In the TTY, run:
|
|
Then add these modules to the MODULES line:
- For Nvidia:
nvidia nvidia_modeset nvidia_uvm nvidia_drm
- For AMD:
amdgpu
Save and close the file. Then regenerate the initramfs with:
|
|
After this, a reboot fixed the problem, and Arch Linux booted normally again with the login screen showing up properly.
What is intramfs?
The initramfs is a temporary, in-memory filesystem that is used by the Linux kernel during startup. Its primary job is to mount the real root filesystem. For this to happen, it needs to have all the necessary modules (drivers) to access the storage hardware and, crucially, to initialize the display.
Fix Breakdown
Editing /etc/mkinitcpio.conf
: This configuration file controls which modules are built into the initramfs.nvidia
: The main driver module.nvidia_modeset
: Enables Kernel Mode Setting (KMS), which allows the kernel to control the display resolution and mode directly. This is essential for a smooth graphical boot.nvidia_drm
: Provides the Direct Rendering Manager (DRM) interface, which is a modern standard for managing graphics output.nvidia_uvm
: The Unified Video Memory module, needed for certain modern NVIDIA features like CUDA.sudo mkinitcpio -P
: This command regenerates the initramfs for all kernel presets on your system, applying the changes you made to the configuration file.