La figura 8.1 mostra come avvengono i login via terminale. Per prima cosa, init si assicura che ci sia un programma di getty per la connessione da terminale (o da console). getty ascolta al terminale ed aspetta che l'utente sia pronto a fare il login (di solito comporta che l'utente digiti qualcosa). Quando nota un utente, getty dà in output un messaggio di saluto (che si trova in /etc/issue ), chiede il nome dell'utente, e alla fine fa partire il programma login . login prende come parametro il nome dell'utente, e chiede la password. Se corrispondono, login avvia la shell configurata per l'utente, altrimenti esce semplicemente e termina il processo (probabilmente dopo aver dato all'utente un'altra possibilità di inserire il nome e la password). init nota che il processo è stato terminato, e avvia una nuova getty per quel terminale.
Notare che il solo processo nuovo è quello creato da init (usando la chiamata di sistema fork ); getty e login sostituiscono solo il programma che gira nel processo (usando la chiamata di sistema exec ).
Per le linee seriali è necessario un programma separato per notare l'utente, dato che può essere (ed era tradizionalmente) complicato notare quando un terminale diventa attivo. getty si adatta anche alla velocità e ad altre impostazioni della connessione, quando questi parametri cambiano da chiamata a chiamata.
Ci sono diverse versioni di getty e init , tutte con i loro aspetti positivi e negativi. È una buona idea studiare tutte le versioni disponibili sul vostro sistema, e anche le altre (potete usare la Linux Software Map per cercarle). Se non avete accessi in entrata via linea seriale probabilmente non avete bisogno di preoccuparvi delle getty , ma init è sempre importante.