Versão do gerenciador de exibição (mais fácil)
Normalmente, o trabalho do gerenciador de exibição mostra uma tela de login e inicia uma sessão do usuário. Se você tivesse um, seria um caminho de menor resistência para configurá-lo para autologin. É uma solução amplamente usada e provavelmente bem testada e suportada. Você precisaria configurá-lo para 1) autologin e 2) usar sua sessão preferida, mas ambos normalmente são suportados com os gerenciadores de exibição usuais suportados pelo seu linux (lightdm, xdm, qualquer coisa ..).
No Ubuntu 16.04 (não-servidor) eu tenho o seguinte em /etc/lightdm/lightdm.conf
[Seat:*]
autologin-guest=false
autologin-user=xyz
autologin-user-timeout=0
Você precisaria instalar e possivelmente ativar o lightdm
apt-get install lightdm
O Lightdm é o gerenciador de exibição padrão do Ubuntu. Ele não é instalado por padrão na edição do servidor ubuntu e você instalará pacotes serverais para que a maneira manual mais difícil seja necessária se você quiser evitá-los.
Formas de configurar um login gráfico no servidor Ubuntu é melhor descrito aqui link , após o qual você pode configurar o autologin se desejar.
Você pode querer selecionar seu tipo de sessão pré-configurada (openbox), configurando /home/username/.dmrc
para algo como
[Desktop]
Session=openbox
Manual (startx)
Eu não sei exatamente o que é necessário para iniciar um x startx na inicialização, mas sugiro que o problema seja decomposto passo a passo:
-
você diz que o startx funciona como root. Seria bom verificar se você pode logar como root em um console e iniciar uma sessão x com:
root@xyz # startx
-
Certifique-se de que você pode iniciar uma sessão X quando estiver logado como usuário pré-selecionado.
myuser@xyz $ startx
-
Certifique-se de que você pode iniciar uma sessão X como o usuário pré-configurado, mas enquanto estiver logado como root, baseando-se no comando anterior:
a) Use algo como:
root@xyz # su -l myuser -c startx
cite o comando se você precisar de vários argumentos:
root@xyz # su -l myuser -c "startx arg1 arg2 .."
b) Você pode pular esta etapa se você definir o usuário na unidade systemd.
-
Faça o autostart.
a) Adicione o comando (3a) a
/etc/rc.local
e reinicialize.b) Use uma unidade do sistema como você descreveu, com o comando configurado de acordo com 2/3. Para testar, você pode usar algo como
root@xyz # systemctl stop autologin # make sure to reset service root@xyz # systemctl daemon-reload # don't know if needed root@xyz # systemctl start autologin
Uma vez que funcione, você pode precisar ativá-lo para iniciar automaticamente ou o que for que o sistema precisa (não um especialista).
root@xyz # systemctl enable autologin