Lightdm not starting on boot

I installed gdm for a while as my display manager, and after removing it, lightdm does not start by itself. I instead have to login to a tty, and run sudo start lightdm.

Running dpkg-reconfigure lightdm does not work either:

dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_NAME missing
dpkg-maintscript-helper: warning: environment variable DPKG_MAINTSCRIPT_PACKAGE missing

I've also tried reinstalling lightdm completely, but it does not work as well

My /var/log/boot.log has the following lines:

* Starting LightDM Display Manager                                                                                                                  
* Starting ACPI daemon                                                                                                                              
* Starting anac(h)ronistic cron                                                                                                                     
* Starting save kernel messages                                                                                                                      
* Stopping LightDM Display Manager         

Solution 1:

Run a terminal and enter cat /etc/X11/default-display-manager. Probably says lightdm if you recently uninstalled GDM. /etc/init/lightdm.conf doesn't accept lightdm as a setting - however, /usr/bin/lightdm or /usr/sbin/lightdm work. So open /etc/X11/default-display-manager in your favorite text editor and replace whatever is there with the following line:

/usr/bin/lightdm

or

/usr/sbin/lightdm

Reboot and lightdm should start and bring you to the logon screen as usual.

Solution 2:

My solution was to run:

rm /etc/systemd/system/default.target
systemctl set-default graphical.target

This will replace the default target file, which in my case must have prevented systemd from reaching the graphical target, with a symlink to the graphical target. After this, lightdm (and gdm when selected with dpkg-reconfigure) starts automatically.

/etc/X11/default-display-manager was already set to the correct value so this appears to be a different root cause from OP's.

More information on systemd targets here.