Você me disse em outro comentário que o seu sistema mostra isto:
$ systemctl get-default
graphical.target
Então, mude para multi-user.target
:
$ sudo systemctl set-default multi-user.target
E o multi-user.target começará em tty1 (Ctrl + Alt + F1):
$ systemctl list-dependencies multi-user.target | grep getty
● ├─getty.target
● │ ├─getty-static.service
● │ └─[email protected]
Então, sobrescrevemos o arquivo tty1:
$ sudo systemctl edit getty@tty1
Com esse conteúdo (qual m
é seu nome de usuário):
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin m %I $TERM
/sbin/agetty
acima pode ser diferente em seu sistema. Verifique se você está no caminho correto com:
$ type -a agetty
agetty is /sbin/agetty
agetty is /sbin/agetty
Pressione Esc , então desloque + z + z para salvar e sair (esta tecla é para vim , você pode executar ps a
na outra guia do terminal enquanto edita para saber que seu comando é editor /etc/systemd/system/[email protected]/.#override.blahblah
, no qual editor
é um link simbólico para vim.gtk3
em meu sistema, seu sistema pode variar).
$ type -a editor
editor is /usr/bin/editor
editor is /usr/bin/editor
$ realpath /usr/bin/editor
/usr/bin/vim.gtk3
Em seguida, goteie o getty@tty1
e navegue até o fundo, você saberá que basta anexar as linhas para fazer o efeito de substituição:
$ sudo systemctl cat getty@tty1
...
# /etc/systemd/system/[email protected]/override.conf
[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin xiaobai %I $TERM
Login automático feito por --autologin
acima, caso contrário, você precisará digitar manualmente o nome de usuário e a senha para fazer login em tty1 após a inicialização.
Depois de logado em tty1 com o nome de usuário m
, ele executará /home/m/.profile, então adicione esta linha ao final de seu /home/m/.profile
:
echo "$DISPLAY" > /tmp/hole1
echo "$XDG_VTNR" > /tmp/hole2
if [ -z "$DISPLAY" ] && [ -n "$XDG_VTNR" ] && [ "$XDG_VTNR" -eq 1 ]; then
echo lolo > /tmp/hole3
exec startx -- -nocursor
fi
echo lili > /tmp/hole4
/tmp/holeN
acima é apenas para fins de depuração, para saber como é executado conforme desejado. por exemplo. Se /tmp/hole3
não foi criado, mas /tmp/hole2
foi criado, isso significa que você precisa de cat /tmp/hole2
para verificar o valor de "$ XDG_VTNR".
startx
executará /home/m/.xinitrc
, edite-o:
$ cat /home/m/.xinitrc
#!/usr/bin/env bash
echo 55 > /tmp/test1
exec openbox-session
echo 55 > /tmp/test2
openbox-session
executará /home/m/.config/openbox/autostart
, edite como de costume:
$ cat /home/m/.config/openbox/autostart
echo 7 > /tmp/yy
/home/m/img &
echo 8 > /tmp/yy2
Afinal de contas, reboot, irá levá-lo para mostrar sua imagem diretamente, as instruções acima podem ser resumidas como:
multi-user.target -> tty1 -> run [email protected] -> ExecStart auto login with desired username -> logged-in will execute ~/.profile ->
exec startx
-> startx will execute~/.xinitrc
-> exec openbox-session -> openbox will execute~/.config/openbox/autostart
->/home/m/img &
will pop up.
[UPDATE]
Eu converso com OP em sala de bate-papo ( transcrição ) e resolveu seu problema.
rc.local capaz de startx por causa de rc.local executar startx como root, mas ~ / .profile não é executado startx como root. Fazemos startx > /tmp/my.log 2>&1
para garantir que o startx seja executado corretamente e, em seguida, /tmp/my.log mostrará que precisamos verificar /home/m/.local/share/xorg/Xorg.0.log
e, eventualmente, percebemos que o primeiro (EE)
é (EE) open /dev/fb8: Permission denied
.
O OP precisa adicionar o usuário m
ao grupo de vídeos para obter permissão quando o startx acessar o FRAMEBUFFER / dev / fb8 desejado.
sudo usermod -a -G audio m
sudo usermod -a -G video m
p / s: Gostaria de adicionar ao grupo de áudio acima é necessário. ref