Jak skonfigurować systemd, aby automatycznie logował się do środowiska pulpitu, najlepiej bez korzystania z menedżera logowania? Używam Arch.
Jak skonfigurować systemd, aby automatycznie logował się do środowiska pulpitu, najlepiej bez korzystania z menedżera logowania? Używam Arch.
Odpowiedzi:
Jest to opisane w Arch Wiki :
Utwórz nowy plik usługi podobny do
getty@.service, kopiując go do/etc/systemd/system/cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
To w zasadzie kopiuje już istniejący getty@.servicedo nowego pliku, autologin@.servicektóry można dowolnie modyfikować. Jest kopiowany, /etc/systemd/systemponieważ tam przechowywane są pliki jednostek specyficzne dla witryny. /usr/lib/systemd/systemzawiera pliki jednostek dostarczane przez pakiety, więc nie powinieneś niczego w nich zmieniać.
Będziesz musiał wtedy autologin@.servicedowiązać symbolicznie do usługi getty dla tty, na którym chcesz się autologować, na przykład dla tty1:
ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
Do tej pory jest to nadal taki sam, jak zwykły getty@.serviceplik, ale najważniejszą częścią jest zmodyfikowanie, autologin@.serviceaby faktycznie logowało się automatycznie. Aby to zrobić, wystarczy zmienić ExecStartwiersz do odczytu
ExecStart=-/sbin/agetty -a USERNAME %I 38400
Różnica między ExecStartwierszem getty@.servicea autologin@.servicejest tylko tym, -a USERNAMEco każe agetty automatycznie logować użytkownika o nazwie USERNAME.
Teraz musisz tylko powiedzieć systemd, aby ponownie załadował pliki demona i uruchomił usługę:
systemctl daemon-reload
systemctl start getty@tty1.service
(Nie jestem pewien, czy usługa uruchomi się poprawnie, jeśli jesteś już zalogowany na tty1, najbezpieczniejszym sposobem jest po prostu ponowne uruchomienie zamiast uruchomienia usługi).
Jeśli następnie chcesz automatycznie uruchomić X, wstaw następujący fragment kodu do ~/.bash_profile(ponownie wzięty z wiki ):
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
exec startx
fi
Będziesz musiał zmodyfikować swoje, ~/.xinitrcaby uruchomić środowisko pulpitu, jak to zrobić, zależy od DE i prawdopodobnie jest również opisane na wiki Arch.
File existspojawia się, gdy robię dowiązanie symboliczne
ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.serviceaby go zastąpić.
Bezpośrednio zmodyfikuj plik /etc/systemd/system/getty.target.wants/getty@tty1.service(który jest dowiązaniem symbolicznym /lib/systemd/system/getty@service):
Dołącz -a/--autologin USERNAMEdo linii:
ExecStart=-/sbin/agetty --noclear %I $TERM
W związku z tym:
ExecStart=-/sbin/agetty -a USERNAME %I $TERM
Możesz także usunąć -o '-p -- \\u'(tak jak w bieżącej instalacji Arch), ponieważ spowoduje to rozpoczęcie logowania, USERNAMEale nadal prosi o hasło.
Po ponownym uruchomieniu nastąpi automatyczne zalogowanie.
Ps Zmień nazwę pliku na nazwę, getty@tty1.servicena ttyktórą chcesz się zalogować.
IMO, Arch Wiki zaleca obecnie o wiele prostsze rozwiązanie:
Uruchom helper ( systemctl edit getty@tty1) lub zrób to, co zrobiłem ręcznie:
mkdir -p /etc/systemd/system/getty@tty1.service.d/
touch /etc/systemd/system/getty@tty1.service.d/override.conf
Tekst, który chcesz wprowadzić (jedną z metod) to ( pamiętaj, aby odpowiednio zmienić nazwę użytkownika ):
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM
UWAGA : Pusta linia jest ważna! (co prawda nie jestem pewien, dlaczego ...)
Teraz uruchom ponownie ( shutdown -r 0) i coś się ... login: username (automatic login)stanie, gdy wcześniej zablokował oczekiwanie na nazwę użytkownika / hasło
Po ponownym uruchomieniu i automatycznym zalogowaniu, jeśli jesteś podobny do mnie i chcesz teraz włączyć SSH do tego systemu, prawdopodobnie musisz uruchomić:
systemctl enable sshd.service
Który utworzy dowiązanie symboliczne (np. ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service')
/sbin/agetty, dlatego /etc/systemd/system/getty.target.wants/getty@tty1.servicenajpierw warto sprawdzić oryginalny plik.