BSD systems provide virtual terminals on devices /dev/ttyv0 to /dev/ttyv8.
Linux systems provide virtual terminals on /dev/tty1 to /dev/tty12.
Their ttylogin services can of course be managed just like ordinary services.
The preset command uses the ordinary preset file mechanism, but can also read the /etc/ttys file.
ttylogin service management on demand
On the BSDs, enabled ttylogin@ services are started at bootstrap in the ordinary way, as they are wanted-by/ the multi-user target.
However, on Linux these services are not wanted-by/ any bootstrap-activated target.
Instead, they are activated on demand by the ttylogin-starter tool.
This utility, for which there is a service bundle allowing one to run it itself as a service, starts ttylogin services, as long as they are marked enabled, as and when the user switches between kernel virtual terminals.
An X server needs a virtual terminal allocated to it for the same reason that console-fb-realizer does: interlocking the use of the framebuffer and input event subsystem with the kernel's terminal emulator program.
So if using kernel virtual terminals alongside an X server, either one starts the server directly from a login session on one of those terminals, or one reserves a virtual terminal for the X server.
To do this, one simply disables the service. There are three ways to do this:
With presets:
If the /etc/ttys file is being used for presets, one first presets the service off in that file.
ttyv7 /usr/bin/false xterm off secure
Then one uses the external formats conversion mechanism to import that preset.
One writes an ordinary preset with (for example) lines in /etc/system-control/presets/60-ttys.preset saying:
disable ttylogin@ttyv7
Then one applies the preset:
system-control preset ttylogin@ttyv7
Directly, disabling the service in the usual way:
system-control disable ttylogin@ttyv7
This will be overridden should presets be applied across ttylogin@ services, which happens when installing/upgrading some nosh packages.