35

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:

  1. GRUB_CMDLINE_LINUX=”text”

  2. Changing the default runlevel

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

Greendrake
  • 801
  • 2
  • 8
  • 16

5 Answers5

28

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.

Edit:

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

sudo systemctl start lightdm.service
Tristan Vigil
  • 598
  • 1
  • 6
  • 10
25

Instead of text use runlevel 3:

GRUB_CMDLINE_LINUX="3"

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

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

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.

A.D.
  • 523
  • 7
  • 25
  • 4
    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 02:29
  • 1
    @nyxee My answer has 3 sections. Follow the second: "For quick test hit..." – A.D. Aug 19 '17 at 06: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
  • I'm still looking at it to understand whats going on. When i'm done with the unity issues i'll be back . just had to uninstall ubuntu-desktop and unity (the original cause of my problems) – nyxee Aug 22 '17 at 10:31
  • great answer, which file contain the "linux /vmlinuz root=/dev/mapper/ubuntu ro 3" command ? – Max L. Sep 30 '17 at 16:01
  • `/boot/grub/grub.cfg` but this file is generated so you should be doing changes in `/etc/default/grub` instead. – A.D. Sep 30 '17 at 16:37
  • 1
    Worked for me on `Xubuntu 18.04`. – RonJohn Nov 28 '20 at 03:02
12
  • 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

nyxee
  • 301
  • 3
  • 7
9

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.
u1686_grawity
  • 426,297
  • 64
  • 894
  • 966
  • it would be useful to mention how you *return to normality* from that "emergency setting" . – nyxee Aug 19 '17 at 02: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. – u1686_grawity Sep 17 '17 at 22:08
4

for ubuntu 18.04 enable root user

 sudo passwd

and then

systemctl set-default multi-user.target
Mohannd
  • 207
  • 1
  • 6