GDM Login Screen Doesn't Show on Arch Linux Startup

February 25, 2021 at 8:54 AM PST

Recently, I switched to Arch Linux on my daily driver laptop, and so far, everything is working fairly well. Something that wasn't working, however, was GDM popping up automatically.

Whenever I would start up, a blinking white line would pop up in the top left corner, obviously not what I want, and I would have to switch to another tty and back to make it appear. I did some quick searching and found that this issue is caused by GDM starting too early, before the graphics are fully initialized. I also found two solutions to the issue: modify the GDM service, or make graphics start earlier. I tried both and found that the second option works better for me since it doesn't add an actual delay.

Edit the GDM service

To edit the GDM service, open a terminal and run systemctl edit gdm as root. The file should start something like this:

### Editing /etc/systemd/system/gdm.service.d/override.conf 
### Anything between here and the comment below will become the new contents of the file 


 
### Lines below this comment will be discarded

In between the comments, add these lines, which will make GDM an "idle" service, which delays its start for a little longer until other processes are started.

### Editing /etc/systemd/system/gdm.service.d/override.conf 
### Anything between here and the comment below will become the new contents of the file 

+ [Service] 
+ Type=idle
 
### Lines below this comment will be discarded

If that doesn't work, edit again and change those lines to add a delay before it starts.

### Editing /etc/systemd/system/gdm.service.d/override.conf 
### Anything between here and the comment below will become the new contents of the file 

+ [Service]
+ ExecStartPre=/bin/sleep 2

### Lines below this comment will be discarded

If this still doesn't work, try changing that 2 to a larger value, which will increase the delay before it starts.

Start Graphics Earlier

You can make graphics start earlier in the boot process by starting KMS (Kernel Mode Setting) early. This can be achieved by editing /etc/mkinitcpio.conf and adding your video driver to the MODULES array. For example: if you have Intel graphics, edit the MODULES line and add i915 in the parentheses.

MODULES=(i915)
  • For AMD, use amdgpu
  • For legacy ATI, use radeon
  • For the Nouveau driver, use nouveau
  • For Matrox graphics, use mgag200

If you use Intel and get ACPI errors after adding the above line, you may need to add intel_agp before i915. To check if you need to add this, you can run lsmod | grep intel_agp from your running system to check if that module is loaded.

For more information on both of these methods, you can check out the two Arch Wiki articles I consulted while researching this: GDM » GDM shows black screen with blinking white cursor and Kernel mode setting » Early KMS start.

Happy hacking!