I've been using the BeagleBone Black as a headless web application server. For this purpose I don't want X Windows or GDM slowing the boot process and taking up precious resources. I looked around for ways to disable these processes and the top results were very very wrong and broken.
The factory-installed firmware of the BeagleBone Black uses systemd for starting services and managing runlevels instead of a more common sys-V style init.
*Deep Breath*
By default the BeagleBone Black has a symlink in /etc/systemd/system/default.target
that points to /lib/systemd/system/graphical.target
this graphical.target
file needs display-manager.service
which then is a symlink to /lib/systemd/system/gdm.service
.
Systemd looks at the default.target
symlink as the root service for starting up all other systems and services; it is the default "runlevel", if you will. The systemd FAQ says as much and shows you how you can change the default target by changing the symlink, but there is an easier way.
systemctl enable multi-user.target
systemctl will look at the [Install]
section in multi-user.target
and see that it has an Alias=deault.target
which tells it to create the /etc/systemd/system/default.target
symlink when it is enabled. This will overwrite the symlink to graphical.target
and when your system reboots the default "runlevel" will be "multi-user" which is all services except the GUI.
It boots much quicker!