Boot to Runlevel 3

Theoretically, if Ubuntu were compliant with UNIX and Linux standard, adding '3' to grub's 'kernel' command in /boot/grub/menu.lst should have been sufficient, because runlevel '3' means no 'X11' according to this standard.

Unfortunately, Ubuntu has ignored the standard and that's why you'll need to change /etc/init/lightdm.conf or /etc/init/gdm.conf (or whatever DM you use) as well. This is how mine "on start" condition looks like:

start on ((filesystem
       and runlevel [!06]
       and runlevel [!03]
       and started dbus
       and plymouth-ready)
      or runlevel PREVLEVEL=S)

In Grub's menu.lst I've also added a menu item that allows me to boot to runlevel 3:

title           Ubuntu 11.10 Server No UI, kernel 3.0.0-32-generic-pae
root            (hd0,0)
kernel          /vmlinuz-3.0.0-32-generic-pae root=UUID=your-root-disk-id 3 ro
initrd          /initrd.img-3.0.0-32-generic-pae
quiet


title           Ubuntu 11.10, kernel 3.0.0-32-generic-pae
root            (hd0,0)
kernel          /vmlinuz-3.0.0-32-generic-pae root=your-root-disk-id ro
initrd          /initrd.img-3.0.0-32-generic-pae
quiet

Now I can chose between booting to runlevel 5 with X11 or to runlevel 3 without it.


I think there is a good answer at How do I disable X at boot time so that the system boots in text mode?

Just to answer your question on how to change run level. Edit the file /etc/init/rc-sysinit.conf and change this line.

env DEFAULT_RUNLEVEL=2

But changing runlevel won't stop X. Look at the start condition for ligthdm:

start on ((filesystem
       and runlevel [!06]
       and started dbus
       and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
            or stopped udev-fallback-graphics))
      or runlevel PREVLEVEL=S)

You need change the start condition in the /etc/init/XXX file to something than isn't met, e. g. a higher run level than you use. XXX is the display manager you use, e. g. lightdm.conf, gdm.conf, failsafe-x.conf.


Here is deep instrtuction for runlevels - http://sysadmin.te.ua/linux/linux-boot.html