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.

  • 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 '16 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? – kurogetsusai Feb 19 '16 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 '16 at 17:04

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.

| improve this answer | |
  • 3
    +1 for pointing out X isn't required to run X clients over SSH – jlh Mar 8 '17 at 8:42
  • Works on my Stretch VM. – Slashback Sep 19 '17 at 16:42
  • works but there is still xterm terminal, can't get rid of it. – ransh Dec 14 '17 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 '17 at 16:28
  • 1
    you can user systemctl get-default to know what is the current one. very useful for remote server. – Sadi Jul 14 '18 at 12:10

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

| improve this answer | |

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

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

I had to do this:

systemtcl disable *dm

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

| improve this answer | |
  • of course * is a "g" or a "k" maybe "x" – emile boyer Jul 29 '17 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 – Lawless Leopard Mar 22 at 20:18

Try the following command:

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

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.