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