Como posso configurar o systemd para efetuar login automaticamente no meu ambiente de área de trabalho, de preferência sem usar o gerenciador de login? Estou usando o Arch.
Como posso configurar o systemd para efetuar login automaticamente no meu ambiente de área de trabalho, de preferência sem usar o gerenciador de login? Estou usando o Arch.
Respostas:
Isso é descrito no Arch Wiki :
Crie um novo arquivo de serviço semelhante ao
getty@.service
copiá-lo para/etc/systemd/system/
cp /usr/lib/systemd/system/getty@.service /etc/systemd/system/autologin@.service
Isso basicamente copia o que já existe getty@.service
para um novo arquivo autologin@.service
que pode ser modificado livremente. É copiado /etc/systemd/system
porque é onde os arquivos de unidades específicas do site são armazenados. /usr/lib/systemd/system
contém arquivos de unidade fornecidos pelos pacotes, portanto você não deve alterar nada.
Você precisará vincular isso autologin@.service
ao serviço getty para o tty no qual deseja se registrar automaticamente, por exemplo, para tty1:
ln -s /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
Até o momento, ainda é o mesmo que o getty@.service
arquivo usual , mas a parte mais importante é modificar o autologin@.service
arquivo para efetivamente fazer login automaticamente. Para fazer isso, você só precisa alterar a ExecStart
linha para ler
ExecStart=-/sbin/agetty -a USERNAME %I 38400
A diferença entre a ExecStart
linha getty@.service
e autologin@.service
é apenas a -a USERNAME
que diz à agetty para efetuar logon automaticamente no usuário com o nome de usuário USERNAME.
Agora você só precisa dizer ao systemd para recarregar seus arquivos daemon e iniciar o serviço:
systemctl daemon-reload
systemctl start getty@tty1.service
(Não tenho certeza se o serviço iniciará corretamente se você já estiver conectado ao tty1, a maneira mais segura é provavelmente reinicializar em vez de iniciar o serviço).
Se você deseja iniciar automaticamente o X, insira o seguinte trecho no seu ~/.bash_profile
(retirado do wiki novamente):
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
exec startx
fi
Você precisará modificá-lo ~/.xinitrc
para iniciar o ambiente da área de trabalho, pois isso depende do DE e provavelmente também está descrito no wiki do Arch.
File exists
quando eu faço a ligação simbólica
ln -sf /etc/systemd/system/autologin@.service /etc/systemd/system/getty.target.wants/getty@tty1.service
para substituí-lo.
Modifique diretamente o arquivo /etc/systemd/system/getty.target.wants/getty@tty1.service
(que é um link simbólico para /lib/systemd/system/getty@service
):
Anexar -a/--autologin USERNAME
à linha:
ExecStart=-/sbin/agetty --noclear %I $TERM
Conseqüentemente:
ExecStart=-/sbin/agetty -a USERNAME %I $TERM
Você também pode remover -o '-p -- \\u'
(como presente na instalação atual do Arch), pois isso iniciaria o login, USERNAME
mas ainda solicitará a senha.
Após a reinicialização, você entrará automaticamente.
Ps Altere o nome do arquivo getty@tty1.service
para o qual tty
você deseja fazer login.
IMO, o Arch Wiki atualmente recomenda uma solução muito mais simples:
Execute o helper ( systemctl edit getty@tty1
) ou faça o que eu fiz manualmente:
mkdir -p /etc/systemd/system/getty@tty1.service.d/
touch /etc/systemd/system/getty@tty1.service.d/override.conf
O texto que você deseja inserir (por qualquer método) é ( certifique-se de alterar o nome de usuário adequadamente ):
[Service]
ExecStart=
ExecStart=-/usr/bin/agetty --autologin username --noclear %I $TERM
NOTA : A linha vazia é importante! (é certo que não sei por que ...)
Agora, restart ( shutdown -r 0
) e algo com efeito ... login: username (automatic login)
acontecerá onde ele bloqueou anteriormente a espera da entrada de nome de usuário / senha
Depois de reiniciado e de login automático, se você é como eu e deseja fazer o SSH neste sistema agora, provavelmente precisará executar:
systemctl enable sshd.service
O que criará o link simbólico (por exemplo ln -s '/usr/lib/systemd/system/sshd.service' '/etc/systemd/system/multi-user.target.wants/sshd.service'
)
/sbin/agetty
, então vale a pena conferir o /etc/systemd/system/getty.target.wants/getty@tty1.service
arquivo original primeiro.