56

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.

Sai Kurogetsu
  • 563
  • 1
  • 5
  • 6
  • 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? – Sai Kurogetsu Feb 19 '16 at 17:02
  • see https://fedoraproject.org/wiki/Systemd and http://0pointer.de/blog/projects/systemd-docs.html – Panther Feb 19 '16 at 17:04
  • @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

5 Answers5

113

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.

derobert
  • 107,579
  • 20
  • 231
  • 279
8

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

Spongman
  • 232
  • 2
  • 6
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

Prahlad Yeri
  • 435
  • 1
  • 6
  • 18
1

I had to do this:

systemtcl disable *dm

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

Stephen Rauch
  • 4,209
  • 14
  • 22
  • 32
  • 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 '20 at 20:18
0

Try the following command:

echo  "manual" | sudo tee -a /etc/init/lightdm.override
GAD3R
  • 63,407
  • 31
  • 131
  • 192