Die gängigen Linux-Desktop-Umgebungen wie Gnome und KDE erlauben es einzustellen, dass man sich nach dem Starten auf dem Desktop wiederfindet, ohne Benutzernamen und Passwort einzugeben. Auf der Textconsole gibt es dafür keine einfache Möglichkeit, aber je nach Distribution einen mehr oder weniger einfachen Weg zu diesem Ziel. Die Hauptschwierigkeit liegt darin, dass kaum zwei Linux-Distributionen die virtuellen Textkonsolen auf die gleiche Art aktivieren. Im Prinzip ist der Weg zwar der gleiche: Init-Skripts starten Getty-Prozesse für die virtuellen TTYs, die nach der Eingabe von Benutzernamen und Passwort an den Login-Prozess weiterleiten. In der Implementierung unterscheiden sich die Distributionen aber stark: Je nach Distribution und Version verwendet ein System das klassische SysV-Init, Upstart oder Systemd. Und selbst wenn zwei Linux-Varianten Upstart verwenden, müssen sie noch lange nicht auf dem gleichen Weg die TTYs aktivieren.
Besonders einfach ist es mit Ubuntu (14.04). Hier startet Upstart die Getty-Prozesse für die TTYs, wobei für jede virtuelle Terminal im Upstart-Verzeichnis "/etc/init" eine eigene Datei zu finden ist, etwa "tty1.conf", "tty2.conf" und so weiter. Um nun ein automatisches Login auf TTY1 einzurichten, bleibt nicht mehr zu tun, als die Datei "tty1.conf" so abzuändern:
start on stopped rc RUNLEVEL=[2345] and ( not-container or container CONTAINER=lxc or container CONTAINER=lxc-libvirt) stop on runlevel [!2345] respawn exec /bin/login -f ubuntu < /dev/tty1 > /dev/tty1 2>&1
Wichtig ist hierbei nur die letzte Zeile, in der vorher der Aufruf von "getty" stand. Stattdessen startet Upstart nun den Login-Prozess mit dem Benutzer "ubuntu".
Etwas schwieriger ist es beispielsweise mit CentOS 6.5 respektive Red Hat Enterprise Linux 6.5, die auf einen Mix aus SysV-Init und Upstart setzen. Allerdings verwenden sie nicht wie Ubuntu einzelne Upstart-Dateien für jedes TTY, sondern eine zentrale Start-Datei "/etc/init/start-ttys.conf", die variablengesteuert die TTYs aktiviert. Statt die Start-Datei direkt zu ändern, legt man am besten eine "Override"-Datei "/etc/init/start-ttys.override" an, die das Upstart-Skript dann beim Booten statt des Originals verwendet. Gegenüber dem Original entfernt man aus der Liste der aktivierten TTYs das "tty1", auf dem das Autologin konfiguriert wird:
start on stopped rc RUNLEVEL=[2345] env MY_ACTIVE_CONSOLES=/dev/tty[2-6] env X_TTY=/dev/tty2 task script . /etc/sysconfig/init for tty in $(echo $MY_ACTIVE_CONSOLES) ; do [ "$RUNLEVEL" = "5" -a "$tty" = "$X_TTY" ] && continue initctl start tty TTY=$tty done end script
Außerdem ist gegenüber dem Original der Variablenname "ACTIVE_CONSOLES" in "MY_ACTIVE_CONSOLES" geändert, weil "ACTIVE_CONSOLES" dummerweise noch einmal im Skript "/etc/sysconfig/init" gesetzt wird, das später folgt - an sich eine wenig sinnvolle Einstellung. Der Rest der Konfiguration besteht darin, die Datei "/etc/init/tty1.conf" mit dem gleichen Inhalt anzulegen wie im obigen Abschnitt über Ubuntu beschrieben.
Bleibt am Ende noch die Konfiguration mit Systemd, für die Fedora 20 als Beispiel dienen soll. Der erste Schritt besteht darin, die existierende Startup-Datei zu kopieren, um sie anschließend anzupassen. Ein symbolischer Link stellt dann die Verbindung zum gewünschten TTY her. Im Beispiel ist das "tty2", weil das Autologin auf "tty1" nicht funktioniert:
cp /lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty2.service
In dieser Datei ist dann nur der Getty-Aufruf so anzupassen, dass er den gewünschten Benutzer automatisch einloggt, hier mit dem Benutzernamen "fedora":
ExecStart=-/sbin/agetty --noclear --autologin fedora %I
Nach einem Reboot sollte man auf dem zweiten virtuellen Terminal als User "fedora" eingeloggt sein.