La figure 7.1 montre comment les logins se passent à partir des terminaux. init invoque tout d'abord un programme getty pour la connexion du terminal (ou de la console). getty se met à l'écoute du terminal et attend qu'un utilisateur indique qu'il est prêt à se logger (ceci signifie généralement que l'utilisateur doive taper quelque chose). Lorsqu'il a pris en compte un utilisateur, getty produit un message d'accueil (stocké dans /etc/issue), demande le nom de l'utilisateur, puis lance le programme login. login prend le nom de l'utilisateur comme paramètre et demande à l'utilisateur son mot de passe. Si ceux-ci correspondent, login lance le shell configuré pour l'utilisateur ; sinon, il s'arrête et termine le processus (parfois après avoir donné à l'utilisateur une autre chance d'entrer son nom d'utilisateur et un mot de passe). init note que le processus est terminé et lance un nouveau getty pour le terminal.
On notera que le seul nouveau processus est celui qui est créé par init (en utilisant l'appel système fork) ; getty et login remplacent seulement le programme qui tourne dans le processus (en utilisant l'appel système exec).
Un autre programme est nécessaire pour prendre en compte un utilisateur dans le cas de lignes série car il est souvent compliqué de s'apercevoir qu'un terminal devient actif. getty s'adapte aussi à la vitesse et autres réglages de la connexion, ce qui est important surtout pour les connexions entrantes où ces paramètres peuvent changer d'appel en appel.
Il existe plusieurs versions de getty et init, chacunes avec leurs bons et mauvais aspects. Il est souhaitable de connaître les versions de son système, ainsi que les autres versions (on peut utiliser la << Linux Software Map >> pour les trouver). Si l'on n'a pas d'appels entrants, on n'a pas à se soucier de getty, mais init reste important.