Como posso me registrar automaticamente na área de trabalho com o systemd?

20

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.

fhucho
fonte
Qual gerenciador de login você está usando? Alguns (GDM, KDM, iirc, talvez mais) já oferecem suporte ao logon automático, portanto, você só precisa ativar o serviço para eles.
Wieland
Atualmente estou usando fino e pode ser configurado para autologin, mas sem um gerenciador de exibição do processo de inicialização seria mais rápido e mais flickerless :)
fhucho
Oh, eu interpretei mal sua pergunta.
Wieland

Respostas:

22

Isso é descrito no Arch Wiki :

Crie um novo arquivo de serviço semelhante ao [email protected]copiá-lo para/etc/systemd/system/

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

Isso basicamente copia o que já existe [email protected]para um novo arquivo [email protected]que pode ser modificado livremente. É copiado /etc/systemd/systemporque é onde os arquivos de unidades específicas do site são armazenados. /usr/lib/systemd/systemcontém arquivos de unidade fornecidos pelos pacotes, portanto você não deve alterar nada.

Você precisará vincular isso [email protected]ao serviço getty para o tty no qual deseja se registrar automaticamente, por exemplo, para tty1:

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

Até o momento, ainda é o mesmo que o [email protected]arquivo usual , mas a parte mais importante é modificar o [email protected]arquivo para efetivamente fazer login automaticamente. Para fazer isso, você só precisa alterar a ExecStartlinha para ler

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

A diferença entre a ExecStartlinha [email protected]e [email protected]é apenas a -a USERNAMEque 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 [email protected]

(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 ~/.xinitrcpara iniciar o ambiente da área de trabalho, pois isso depende do DE e provavelmente também está descrito no wiki do Arch.

Wieland
fonte
Qual é o agetty arg% I?
Edward Anderson
O que há com o `caractere no final? Isso é necessário? O que isso significa?
precisa saber é o seguinte
@ rien333 É desnecessário, removi-o da resposta.
Wieland
2
Eu recebo o erro File existsquando eu faço a ligação simbólica
Pós Auto
use ln -sf /etc/systemd/system/[email protected] /etc/systemd/system/getty.target.wants/[email protected]para substituí-lo.
Manuel Schmitzberger 9/11
5

Modifique diretamente o arquivo /etc/systemd/system/getty.target.wants/[email protected](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, USERNAMEmas ainda solicitará a senha.

Após a reinicialização, você entrará automaticamente.

Ps Altere o nome do arquivo [email protected]para o qual ttyvocê deseja fazer login.

Zac
fonte
Nota para maior clareza: se for um link simbólico, substitua o link simbólico por um novo arquivo e edite esse novo arquivo.
Edward Anderson
1

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/[email protected]/
touch /etc/systemd/system/[email protected]/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')

jakebrinkmann
fonte
A linha vazia limpará primeiro a entrada ExecStart, enquanto a próxima linha apresentará um novo comando exec. Também é importante notar que em alguns sistemas (Ubuntu) o agetty executável pode estar localizado /sbin/agetty, então vale a pena conferir o /etc/systemd/system/getty.target.wants/[email protected]arquivo original primeiro.
platforma