I want my Ubuntu 16.04 to not start GUI on boot and show command line console only. I have tried the following recipies but none of them are for version 16.04 and so they do not seem to work — GUI starts anyway:


  2. Changing the default runlevel

Ideally I also want to be able to start GUI by typig a command.


You could disable the display manager service with systemctl. For example if your display manager is lightdm then run:

sudo systemctl disable lightdm.service

This will prevent the service from starting at boot.


I forgot to mention how to start the GUI. It is as simple as starting the systemd service:

sudo systemctl start lightdm.service
  • 1
    This worked for me on 16.04 on a arm board. Thanks. :) – wojci Nov 9 '16 at 18:51
  • This did not work on my system. (16.04 LTS on a PC) It shows the initial screen with all the [ OK ] messages as the services start, and then freezes. – Paul Williams Mar 30 '18 at 3:24
  • BTW to re-enable the service the command is actually sudo systemctl enable lightdm.service – Paul Williams Mar 30 '18 at 4:25

Instead of text use runlevel 3:


# To remove all the fancy graphics you need to get rid of `splash`.

# Uncomment to disable graphical terminal (grub-pc only) 

Then update-grub and reboot.

But you really only need GRUB_CMDLINE_LINUX="3". For quick test hit ESC during booting to get into the grub boot menu. Then press e and find the line which specifies kernel and add 3 at the end:

 linux /vmlinuz root=/dev/mapper/ubuntu ro 3

Boot it with CTRL+x

Ideally I also want to be able to start GUI by typig a command.

One of these:

$ sudo telinit 5
$ sudo service lightdm restart
$ sudo systemctl start lightdm

Tested on Ubuntu 16.04.1 LTS.

  • 1
    Replacing "text" by "3", worked for me ! Very efficient ! Thanks – ThomasGuenet Jan 26 '17 at 17:02
  • hi. the answer looks nice but its hard to understand. I just Ideally need one command to boot into text mode, do what I need, and go back into normal desktop mode. – nyxee Aug 19 '17 at 2:29
  • 1
    @nyxee My answer has 3 sections. Follow the second: "For quick test hit..." – A.D. Aug 19 '17 at 6:29
  • I appreciate the information in your post. by the time people look for this information, they are normally exhausted with other options. I gave an example of a simple answer below. – nyxee Aug 19 '17 at 23:32
  • 1
    Nice answer. I'm just used to post longer answers with a lot of information so we all can learn more. And also I'm familiar with grub cmd line options so it's faster for me to add 3 and I'm good to go + it's multi-distro solution :) – A.D. Aug 20 '17 at 16:40

One of the following, as part of the kernel command line (editable via GRUB), should work:

  • systemd.unit=multi-user.target will override the default of "graphical.target" – this, along with systemctl set-default, is the equivalent of "default runlevel";
  • systemd.mask=lightdm.service will forbid a specific service from starting, until manually systemctl unmask'd later;
  • systemd.mask=display-manager.service – same;
  • rescue aka systemd.unit=rescue.target is the equivalent of "single-user runlevel"; not for daily use, but useful when fixing broken GUI.
  • it would be useful to mention how you return to normality from that "emergency setting" . – nyxee Aug 19 '17 at 2:27
  • 1
    For the benefit of others, the actual CLI command you want is systemctl set-default multi-user.target (and I believe systemctl set-default graphical.target would reset it) – Andrea Sep 17 '17 at 20:19
  • That's only if you want it semi-permanent, and can reach a shell in the first place. The main post has nothing to do with CLI commands. – grawity Sep 17 '17 at 22:08
  • When in GUI-mode, this will take you to text-mode (runlevel 2,3,4) on reboot. You may get a blank screen (no-gui) which is a reminder that there's no GUI :-), enter ctrlalt(F1,F2,...) to use the runlevels.

systemctl set-default multi-user.target

  • This will take you back to GUI boot when you are in text-mode.

systemctl set-default graphical.target


for ubuntu 18.04 enable root user

 sudo passwd

and then

systemctl set-default multi-user.target

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.