54

I have a remote machine running Debian 8 (Jessie) with lightdm installed. I want it to start in no-GUI mode, but I don't want to remove all X-related stuff to still be able to run it though SSH with the -X parameter. So how to disable X server autostart without removing it?

I tried systemctl stop lightdm, it stops the lightdm, but it runs again after reboot. I also tried systemctl disable lightdm, but it basically does nothing. It renames lightdm's scripts in /etc/rc*.d directories, but it still starts after reboot, so what am I doing wrong? And I can't just update-rc.d lightdm stop, because it's deprecated and doesn't work.

4
  • 2
    Running X stuff through ssh doesn't require an X server installed on the machine. (It just requires the X client libraries). Do you really want an X server installed? [AFAIK, you've found a bug—the disable should have worked. Of course that's hardly an answer...]
    – derobert
    Feb 19, 2016 at 16:53
  • @derobert Oh, so... I think I don't need the X server in that case. It's still more of a workaround than a solution, but thanks. Can I safely remove the lightdm and all xorg-server-* packages or should I keep something, e.g. xorg-server-input-* or video drivers? Feb 19, 2016 at 17:02
  • @kurogetsusai you can remove lightdm and xorg-server-*. You really just need to keep xauth (recommended by openssh-server) and any libraries your X clients depend on. You probably need some fonts as well.
    – derobert
    Feb 19, 2016 at 17:04

5 Answers 5

109

The disable didn't work because the Debian /etc/X11/default-display-manager logic is winding up overriding it.

In order to make text boot the default under systemd (regardless of which distro, really):

systemctl set-default multi-user.target

To change back to booting to the GUI,

systemctl set-default graphical.target

I confirmed those work on my Jessie VM and Slashback confirmed it on Stretch, too.

PS: You don't actually need the X server on your machine to run X clients over ssh. The X server is only needed where the display (monitor) is.

7
  • 4
    +1 for pointing out X isn't required to run X clients over SSH
    – jlh
    Mar 8, 2017 at 8:42
  • Works on my Stretch VM.
    – Slashback
    Sep 19, 2017 at 16:42
  • works but there is still xterm terminal, can't get rid of it.
    – ransh
    Dec 14, 2017 at 14:44
  • @ransh Sounds like you should ask your own question. Reference this one in your question and also explain what you mean by it works—I'm not sure how you still have an xterm popping up if X isn't starting. Also anything that might be different about your system.
    – derobert
    Dec 14, 2017 at 16:28
  • 2
    you can user systemctl get-default to know what is the current one. very useful for remote server.
    – Sadi
    Jul 14, 2018 at 12:10
7

you can also add systemd.unit=multi-user.target to the kernel command line, if you can't access the running system.

2

I don't know much about Debian, but on my Ubuntu 14.04 laptop, here is the standard procedure I use when I want to disable X and boot to command prompt for troubleshooting:

  1. Edit the file /etc/default/grub in superuser mode and set GRUB_CMDLINE_LINUX_DEFAULT="text"

Optionally, also uncomment this line: #GRUB_TERMINAL=console and then do sudo update-grub. The machine will boot in text mode.

  1. To start the graphical interface from there, you then do sudo service lightdm start #could be gdm or startx in some situations

Source: https://askubuntu.com/questions/52089/how-do-i-boot-to-a-command-line-interface-instead-of-a-gui

3
  • Didn't work in Ubuntu 16.04. It still boots automatically to gnome. Feb 16, 2018 at 9:18
  • Did you try uncommenting the GRUB_TERMINAL=console and also update the grub? Feb 22, 2018 at 17:57
  • Yes. I had to do this, which is mentioned in the accepted answer: systemctl set-default multi-user.target Feb 23, 2018 at 5:35
1

I had to do this:

systemtcl disable *dm

where * is a g or a k maybe an x.

2
  • of course * is a "g" or a "k" maybe "x" Jul 29, 2017 at 16:12
  • This is actually a better answer, since in Debian the "startx" is triggered by the display manager at boot. The display manager itself is managed (enabled at boot) by systemd. IMHO, the right way to disable x-server at boot would be to disable the Display Manager via systemd. Although I would personally use something along the lines of : $ sudo systemctl disable display-manager.service Mar 22, 2020 at 20:18
0

Try the following command:

echo  "manual" | sudo tee -a /etc/init/lightdm.override

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.