Wie kann ich mich mit systemd automatisch beim Desktop anmelden?


20

Wie kann ich systemd so konfigurieren, dass ich mich automatisch bei meiner Desktop-Umgebung anmelde, vorzugsweise ohne den Anmeldemanager? Ich benutze Arch.


Welchen Login-Manager verwenden Sie? Einige (GDM, KDM, iirc usw.) unterstützen bereits die automatische Anmeldung, sodass Sie den Dienst nur für sie aktivieren müssen.
Wieland,

Ich verwende derzeit SLiM und es kann so konfiguriert werden, dass es sich
automatisch anmeldet

Oh, ich habe deine Frage falsch verstanden.
Wieland

Antworten:


22

Dies ist im Arch Wiki beschrieben :

Erstellen Sie eine neue Servicedatei, wie Sie sie getty@.servicekopieren/etc/systemd/system/

cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service

Dies kopiert im Wesentlichen die bereits vorhandene getty@.serviceDatei in eine neue Datei, autologin@.servicedie frei geändert werden kann. Es wird nach kopiert, /etc/systemd/systemda dort standortspezifische Gerätedateien gespeichert werden. /usr/lib/systemd/systemEnthält Unit-Dateien, die von Paketen bereitgestellt werden, sodass Sie dort nichts ändern sollten.

Sie müssen das dann autologin@.servicemit dem getty-Dienst für das tty verknüpfen, auf dem Sie sich automatisch anmelden möchten, zum Beispiel für tty1:

ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service

Bis jetzt ist dies immer noch die gleiche wie die übliche getty@.serviceDatei, aber das Wichtigste ist, die zu ändern autologin@.service, um Sie tatsächlich automatisch anzumelden. Dazu müssen Sie nur die ExecStartzu lesende Zeile ändern

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

Der Unterschied zwischen der ExecStartZeile in getty@.serviceund autologin@.serviceist nur der, -a USERNAMEder agetty anweist, den Benutzer mit dem Benutzernamen USERNAME automatisch anzumelden.

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

systemctl daemon-reload
systemctl start getty@tty1.service

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

Wenn Sie X dann automatisch starten möchten, fügen Sie das folgende Snippet in Ihr ~/.bash_profile(wieder aus dem Wiki entnommen ) ein:

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

Sie müssen Ihre ändern ~/.xinitrc, um Ihre Desktop-Umgebung zu starten. Wie dies zu tun ist, hängt von der DE ab und wird wahrscheinlich auch im Arch-Wiki beschrieben.


Was ist das Agetty Arg% I?
Edward Anderson

Was ist mit dem "charachter" am Ende? Wird das gebraucht? Was heißt das?
Rien333

@ rien333 Es ist unnötig, ich habe es aus der Antwort entfernt.
Wieland

2
Ich erhalte die Fehlermeldung, File existswenn ich den Symlink
Post Self

Verwenden Sie ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service, um es zu überschreiben.
Manuel Schmitzberger

5

Ändern Sie direkt die Datei /etc/systemd/system/getty.target.wants/getty@tty1.service(die ein Symlink zu ist /lib/systemd/system/getty@service):

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

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

Daher:

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

Sie können auch entfernen -o '-p -- \\u'(wie in der aktuellen Arch-Installation vorhanden), da hierdurch die Anmeldung für gestartet wird, Sie USERNAMEjedoch weiterhin nach dem Kennwort gefragt werden.

Nach dem Neustart werden Sie automatisch angemeldet.

Ps Ändern Sie den Dateinamen getty@tty1.servicein den Namen, bei dem ttySie sich anmelden möchten.


Hinweis zur Verdeutlichung: Wenn es sich um einen Symlink handelt, ersetzen Sie den Symlink durch eine neue Datei und bearbeiten Sie diese neue Datei.
Edward Anderson

1

IMO, das Arch Wiki empfiehlt derzeit eine viel einfachere Lösung:

Führen Sie entweder den Helfer ( systemctl edit getty@tty1) aus oder tun Sie, was ich manuell getan habe:

mkdir -p /etc/systemd/system/getty@tty1.service.d/
touch /etc/systemd/system/getty@tty1.service.d/override.conf

Der Text, den Sie (mit beiden Methoden) eingeben möchten, lautet ( achten Sie darauf, den Benutzernamen entsprechend zu ändern ):

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

HINWEIS : Die Leerzeile ist wichtig! (Zugegeben, ich bin mir nicht sicher warum ...)

Jetzt starten Sie neu ( shutdown -r 0) und etwas in der Art ... login: username (automatic login)wird passieren, in der es zuvor das Warten auf die Eingabe von Benutzername / Passwort blockiert hat


Nach dem Neustart und der automatischen Anmeldung müssen Sie wahrscheinlich Folgendes ausführen, wenn Sie wie ich SSH in dieses System ausführen möchten:

systemctl enable sshd.service

Welches wird den Symlink erstellen (zB ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service')


Die leere Zeile löscht zuerst den ExecStart-Eintrag, während die nächste Zeile einen neuen exec-Befehl einführt. Erwähnenswert ist auch, dass sich auf einigen Systemen (Ubuntu) die ausführbare Agetty-Datei befinden könnte. /sbin/agettyEs lohnt sich daher, zuerst die Originaldatei zu überprüfen /etc/systemd/system/getty.target.wants/getty@tty1.service.
Plattform
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.