Iniciar automaticamente o TightVncServer no Raspberry Pi 2

11

Eu tenho um Raspberry Pi 2 e tenho seguido a publicação no Raspberrypi.org, mas o Tight VNC Server não inicia na reinicialização. Não parece haver nenhum erro.

Como faço para o TightVncServer iniciar na reinicialização do Pi?

sarin
fonte
Não pode postar uma resposta ainda, mas há um método simples que eu fui trabalhar no meu pi 3 B documentados em adafruit aqui: learn.adafruit.com/...
Steven Evers

Respostas:

10

Para fazer isso, você pode usar um pouco de inteligência do Linux.

Nossa primeira tarefa será editar o arquivo /etc/rc.local. Este arquivo pode conter comandos que são executados na inicialização. Se olharmos para o arquivo, podemos ver que já existem poucas entradas;

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

exit 0

O primeiro conjunto de linhas com uma marca de hash (#) na frente deles são comentários. Eles servem apenas para explicar o que está acontecendo com alguém que está lendo o arquivo.

As linhas de código na parte inferior claramente têm algo a ver com o endereço IP do computador. Na verdade, eles são um script curto que verifica se o Raspberry Pi tem um endereço IP e, se tiver, ele o imprime. Se você se lembrar, poderá ver o endereço IP impresso na tela quando o Pi for inicializado dessa maneira

My IP address is 10.1.1.8

Raspbian GNU/Linux 7 raspberrypi tty1

raspberrypi login:

Esse trecho de script em rc.local é o código responsável pela impressão do endereço IP!

Nós adicionaremos o seguinte comando no rc.local;

su - pi -c '/usr/bin/tightvncserver :1'

Este comando muda o usuário para o usuário 'pi' com su-pi. O su significa 'switch user' o traço (-) garante que o ambiente do usuário pi (como todas as suas configurações) seja usado corretamente e pi seja o usuário.

A opção -c declara que a próxima parte da linha será o comando que será executado e a parte dentro das aspas ('/ usr / bin / tightvncserver: 1') é o comando.

O comando nesse caso executa o arquivo tightvncserver que está no diretório / usr / bin e especifica que devemos iniciar a sessão 1 da área de trabalho (: 1).

Para fazer isso, editaremos o arquivo rc.local com o seguinte comando;

sudo nano /etc/rc.local

Adicione nossas linhas para que o arquivo se pareça com o seguinte;

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# Start tightvncserver
su - pi -c '/usr/bin/tightvncserver :1'

exit 0

(Também podemos adicionar nosso próprio comentário ao arquivo para que futuros leitores saibam o que está acontecendo)

Deve ser isso. Agora você deve poder testar se o serviço é iniciado quando o Pi é inicializado pela reinicialização.

Se o item acima parecer um pouco longo, fique à vontade para conferir um raciocínio mais completo aqui .

d3noob
fonte
Isto não funciona para mim.
Camaleão
A resposta foi escrita para a versão 'Wheezy' do Raspbian. A versão posterior ('Jessie' e (presumo) 'Stretch') tem um método padrão diferente. Veja aqui uma abordagem alternativa.
precisa saber é o seguinte
5

Antes de iniciar, verifique se o seu Pi está conectado à Internet \ rede via Ethernet \ wifi.

Abra o Terminal e insira os seguintes comandos:

Obter o endereço IP do Pi para conexão remota (para uso posterior)

hostname -I

Instale o TightVncServer

sudo apt-get update
sudo apt-get install tightvncserver
tightvncserver

A primeira vez que isso é executado, você deve digitar uma senha e verificá-la. Não há necessidade de inserir uma senha somente para visualização.

Para configurar o início automático como um serviço quando o Pi inicializar:

Abra o nano (editor de texto) para criar um arquivo para iniciar automaticamente o Tight VNC Server sudo nano /etc/init.d/tightvncserver

Digite o seguinte (ou copie e cole ):

#!/bin/sh
# /etc/init.d/tightvncserver
# Set the VNCUSER variable to the name of the user to start tightvncserver under
VNCUSER='pi'
case "$1" in
  start)
    su $VNCUSER -c '/usr/bin/tightvncserver :1'
    echo "Starting TightVNC server for $VNCUSER"
    ;;
  stop)
    pkill Xtightvnc
    echo "Tightvncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/tightvncserver {start|stop}"
    exit 1
    ;;
esac
exit 0

Pressione Ctrl + x, y para salvar e Enter para manter o mesmo nome de arquivo.

Edite as permissões deste arquivo para torná-lo executável e ativo:

sudo chmod 755 /etc/init.d/tightvncserver
sudo update-rc.d tightvncserver defaults

Reinicialize para testar a reinicialização do sudo

Instale o cliente vnc para o seu sistema operacional e tente conectar-se quando o Pi for reiniciado!

Para Windows: Cliente TightVNC, por exemplo . Não há necessidade de instalar o servidor.

Inicie o VNC Client Connect usando o endereço IP na parte superior desta postagem. Mude o endereço IP para o seu. O número da porta em várias postagens da Internet é listado apenas como 2 dígitos. Isso é pouco, e se você estiver usando o script acima, seu pi está sendo executado na porta 1, então você deve usar 590 1 . Se 2, então 590 2 etc.

192.168.1.123:5901
sarin
fonte
Sua solução está funcionando perfeitamente para mim, exceto que eu não estou recebendo a tela cheia. Como posso obter a tela cheia? ( vncserver -geometry 1366x768 -depth 24 -dpi 96. Eu usei esse comando antes de obter tela cheia Existe alguma maneira de adicionar a linha em seu código.?)
opu 웃
@ opu 웃 A linha su $VNCUSER -c '/usr/bin/tightvncserver :1'é o que executa o comando ao qual você está se referindo. Simplesmente adicione as opções para o fim dessa linha, que vai resultar em algo comosu $VNCUSER -c '/usr/bin/tightvncserver :1' -geometry 1366x768 -depth 24 -dpi 96
Trent
Como depuro se isso não funciona? Se eu executar o tightvncserver na linha de comando do usuário pi, ele será iniciado e eu posso entrar remotamente, mas não será iniciado automaticamente usando esta ou a solução /etc/rc.local.
Alan McDonley 5/09/19