Wie kann ich systemd so konfigurieren, dass ich mich automatisch bei meiner Desktop-Umgebung anmelde, vorzugsweise ohne den Anmeldemanager? Ich benutze Arch.
Wie kann ich systemd so konfigurieren, dass ich mich automatisch bei meiner Desktop-Umgebung anmelde, vorzugsweise ohne den Anmeldemanager? Ich benutze Arch.
Antworten:
Dies ist im Arch Wiki beschrieben :
Erstellen Sie eine neue Servicedatei, wie Sie sie
getty@.service
kopieren/etc/systemd/system/
cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
Dies kopiert im Wesentlichen die bereits vorhandene getty@.service
Datei in eine neue Datei, autologin@.service
die frei geändert werden kann. Es wird nach kopiert, /etc/systemd/system
da dort standortspezifische Gerätedateien gespeichert werden. /usr/lib/systemd/system
Enthält Unit-Dateien, die von Paketen bereitgestellt werden, sodass Sie dort nichts ändern sollten.
Sie müssen das dann autologin@.service
mit 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@.service
Datei, aber das Wichtigste ist, die zu ändern autologin@.service
, um Sie tatsächlich automatisch anzumelden. Dazu müssen Sie nur die ExecStart
zu lesende Zeile ändern
ExecStart=-/sbin/agetty -a USERNAME %I 38400
Der Unterschied zwischen der ExecStart
Zeile in getty@.service
und autologin@.service
ist nur der, -a USERNAME
der 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.
File exists
wenn ich den Symlink
ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
, um es zu überschreiben.
Ä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 USERNAME
An 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 USERNAME
jedoch weiterhin nach dem Kennwort gefragt werden.
Nach dem Neustart werden Sie automatisch angemeldet.
Ps Ändern Sie den Dateinamen getty@tty1.service
in den Namen, bei dem tty
Sie sich anmelden möchten.
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'
)
/sbin/agetty
Es lohnt sich daher, zuerst die Originaldatei zu überprüfen /etc/systemd/system/getty.target.wants/getty@tty1.service
.