Wie kann ich mich mit systemd automatisch beim Desktop anmelden?

Wie kann ich mich mit systemd automatisch beim Desktop anmelden?

Wie kann ich systemd so konfigurieren, dass ich mich automatisch bei meiner Desktop-Umgebung anmelde, vorzugsweise ohne Verwendung eines Anmeldemanagers? Ich verwende Arch Linux.

Antwort1

Beschrieben wird dies imArchWiki:

Erstellen Sie eine neue Servicedatei ähnlich wie [email protected]durch Kopieren in/etc/systemd/system/

cp /usr/lib/systemd/system/[email protected] /etc/systemd/system/[email protected]

Dadurch wird das bereits Vorhandene [email protected]in eine neue Datei kopiert [email protected], die frei geändert werden kann. Die Kopie erfolgt, /etc/systemd/systemweil dort standortspezifische Unit-Dateien gespeichert werden. /usr/lib/systemd/systementhält von Paketen bereitgestellte Unit-Dateien, daher sollten Sie dort nichts ändern.

Sie müssen dies dann [email protected]mit dem Getty-Dienst für das TTY verknüpfen, bei dem Sie sich automatisch anmelden möchten, zum Beispiel für TTY1:

ln -s /etc/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]

Bis jetzt ist dies immer noch dieselbe [email protected]Datei wie die normale, aber der wichtigste Teil ist, die Datei so zu ändern, [email protected]dass Sie sich tatsächlich automatisch anmelden. Dazu müssen Sie nur die ExecStartZeile so ändern, dass sie lautet

ExecStart=-/sbin/agetty -a USERNAME %I 38400

Der Unterschied zwischen der ExecStartZeile in [email protected]und [email protected]besteht lediglich darin -a USERNAME, dass agetty anweist, den Benutzer mit dem Benutzernamen USERNAME automatisch anzumelden.

Jetzt müssen Sie systemd nur noch anweisen, seine Daemon-Dateien neu zu laden und den Dienst zu starten:

systemctl daemon-reload
systemctl start [email protected]

(Ich bin nicht sicher, ob der Dienst ordnungsgemäß gestartet wird, wenn Sie bereits bei tty1 angemeldet sind. Am sichersten ist es wahrscheinlich, einfach einen Neustart durchzuführen, anstatt den Dienst zu starten.)

Wenn Sie X dann automatisch starten möchten, fügen Sie den folgenden Ausschnitt in Ihre ~/.bash_profile(entnommen ausdas Wikiwieder):

if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
    exec startx
fi

Sie müssen ~/.xinitrcIhre Desktopumgebung zum Starten ändern. Wie das geht, hängt von der DE ab und wird wahrscheinlich auch im ArchWiki beschrieben.

Antwort2

IMO, dieArch Wikiempfiehlt derzeit eine viel einfachere Lösung:

Führen Sie entweder den Helfer ( systemctl edit getty@tty1) aus oder machen Sie es manuell wie ich:

mkdir -p /etc/systemd/system/[email protected]/
touch /etc/systemd/system/[email protected]/override.conf

Der Text, den Sie eingeben möchten (mit einer der beiden Methoden), ist (unbedingt ändernNutzernamepassend):

[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM

NOTIZ: Die leere Zeile ist wichtig! Die leere Zeile löscht zuerst den ExecStart-Eintrag, während die nächste Zeile einen neuen Exec-Befehl einführt.

Starten Sie nun ( shutdown -r 0) neu und es wird etwas in der Art ... login: username (automatic login)passieren, wo es vorher blockiert war, weil es auf die Eingabe von Benutzername und Passwort gewartet hat.


Wenn Sie wie ich jetzt nach dem Neustart und der automatischen Anmeldung per SSH auf dieses System zugreifen möchten, müssen Sie wahrscheinlich Folgendes ausführen:

systemctl enable sshd.service

Dadurch wird der symbolische Link erstellt (zB ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service')

Antwort3

Ändern Sie die Datei direkt (die ein symbolischer Link zu ist ):/etc/systemd/system/getty.target.wants/[email protected]/lib/systemd/system/getty@service

-a/--autologin USERNAMEAn die Zeile anhängen :

ExecStart=-/sbin/agetty --noclear %I $TERM

Somit:

ExecStart=-/sbin/agetty -a USERNAME %I $TERM

Sie können auch entfernen -o '-p -- \\u'(wie in der aktuellen Arch-Installation vorhanden), da dadurch die Anmeldung gestartet wird, USERNAMEaber dennoch nach dem Kennwort gefragt wird.

Nach dem Neustart werden Sie automatisch angemeldet.

PSÄndern Sie den Dateinamen [email protected]in den Namen, bei dem ttySie sich anmelden möchten.

Antwort4

Sie können auch gettyden Befehl (get tty) verwenden, mit dem Sie den angegebenen Benutzer automatisch anmelden können. Das Argument gettykann entweder --autologinoder sein -a. Ich verwende Linux Debian Ubuntu, daher weiß ich nicht, ob dieser Befehl in anderen Distributionen verfügbar ist.

getty -a <user>

verwandte Informationen