Programme schreiben auf "Terminals". Das können virtuelle Terminals (ttyX), Pseudo-Terminals (ptyX), serielle Terminals ("echte" Terminals), oder sogar an Telefonleitungen angeschlossene Modems sein, die man dann anrufen kann. Pseudo-Terminals werden ständig erzeugt und vernichtet, alle anderen Terminals bleiben dauerhaft erhalten. Diese werden von einem "getty"-Prozess verwaltet, der im Boot-Prozess gestartet (klassisch: in /etc/inittab definiert) und automatisch neu gestartet wird, wenn er endet.
Getty stellt die Schnittstelle ein: Baudrate, Flusskontrolle. Dazu für virtuelle Terminals (je nach Kernel) die Terminalemulation, für serielle Schnittstellen Datenformat und Parität, für Modems Modemtyp, Initialisierung, und so weiter. Danach startet das getty meist einen "login"-Prozess auf diesem Terminal, mit dem man sich auf diesem Terminal einloggen kann. Terminalmultiplexer oder -emulatoren erzeugen Pseudoterminals und starten darin das Programm selbst, meist eine Shell.
Der Linux-Kernel erzeugt beim Start keine virtuellen Terminals, sondern nur /dev/console. Die anderen virtuellen Terminals werden erst im Bootsystem erzeugt, wobei tty1 dann die console übernimmt.