Reached graphical.target, but still have to type startx to start gui

I use Manjaro Linux and after an update, when I boot, journalctl says the system reached graphical target, but it starts up in tty1 and I need to type startx to start the KDE. Then I type my password again in a kdewallet popup, to connect to wifi.

After that, everything works fine. In Manjaro, the gui starts in tty1, while in other distros, it usually starts in tty7.

I tried setting the default to graphical.target with the systemctl command, and by editing grub menu by replacing the quit parameter by systemd.unit=graphical.target, but it still starts up in the tty1 session.

I also tried adding a custom entry in the grub menu, but that does not help either.

To add this to the grub menu:

  • copy the first grub menu entry from /boot/grub/grub.cfg into the file /etc/grub.d/40_custom

  • replace the quit command by systemd.unit=graphical.target

  • change the menuentry title and run sudo update-grub

Any ideas on how to get the system to start normal again.
I posed the question in the Manjaro forum a week ago, but there is no reply.

I suppose it will be faster to just re-install, but I am curious why this happens, and how to correct it.


Thanks for the tips.
I found that ssdm is installed but not active, it is masked.

When I try to re-install it, I get this error:

    sudo pacman -S sddm

    warning: sddm-0.19.0-2.2 is up to date -- reinstalling
    ...
    error: sddm: signature from "Philip Müller (Called Little)<philm@manjaro.org>" is invalid
    :: File /var/cache/pacman/pkg/sddm-0.19.0-2.2-x86_64.pkg.tar.zst is corrupted (invalid or corrupted package (PGP signature)).
    Do you want to delete it? [Y/n] 
    error: failed to commit transaction (invalid or corrupted package (PGP signature))
    Errors occurred, no packages were upgraded.
    [marc@ass ~]$ systemctl enable sddm.service
    Failed to enable unit: Unit file /usr/lib/systemd/system/sddm.service is masked.

When I look for /usr/lib/systemd/system/sddm.service, I see that it is empty.

Am I correct that there is some kind of packaging error, and that due to the corrupted package, the system blocked it from starting ?
If the package is corrupt, should not more people have this problem ?

Should I wait some time for the package to get repaired, or should I uninstall it and install another greeter like lightdm ?

Asked By: mbbs1024

||
  1. /etc/systemd/system/default.target pointing to /usr/lib/systemd/system/graphical.target must contain:

Wants=display-manager.service

To check your default systemd target:

systemctl get-default
graphical.target

# ls -l /etc/systemd/system/default.target
lrwxrwxrwx. 1 root root 40 Jan 1  2020 /etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target
  1. /etc/systemd/system/display-manager.service symlink pointing to an actual Display Manager unit must exist, in my case it’s /usr/lib/systemd/system/lxdm.service.

To check it:

ls -l /etc/systemd/system/display-manager.service
lrwxrwxrwx. 1 root root 36 Jan 1  2020 /etc/systemd/system/display-manager.service -> /usr/lib/systemd/system/lxdm.service

# cat /usr/lib/systemd/system/lxdm.service
[Unit]
Description=LXDM (Lightweight X11 Display Manager)
#Documentation=man:lxdm(8)
Conflicts=getty@tty1.service
After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service livesys-late.service
#Conflicts=plymouth-quit.service

[Service]
ExecStart=/usr/sbin/lxdm
Restart=always
IgnoreSIGPIPE=no
#BusName=org.freedesktop.lxdm

[Install]
Alias=display-manager.service

If these two requirements are met, you must have a graphical display manager on boot.

Most likely you’d want to have SDDM installed as it’s a preferred DM for KDE. Here’s how you can install/reenable it.

Answered By: Artem S. Tashkinov

Setting graphical.target does not automatically put you in a graphical session. What it does is to ensure that when you boot your system, all programs/services that are expected to be running in the graphical.target target are run.

When you enable a service, you are are adding that service to some target (multi-user, graphical, etc). In what particular target depends on the configuration of that unit.

You need to enable some program so that when the system enters the graphical target it will take care of starting a graphical session.

Normally, this program is a Display Manager. Make sure you have some installed on you system. If you are using KDE, you might prefer using sddm. In my Arch system I would install it by running:

sudo pacman -S sddm

Then you need to enable that unit. To do so run

systemctl enable sddm.service
Answered By: Hobber
Categories: Answers Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.