Avvio automatico TightVncServer su Raspberry Pi 2


11

Ho un Raspberry Pi 2 e ho seguito il post su Raspberrypi.org ma Tight VNC Server non si avvia al riavvio. Non sembra esserci alcun errore.

Come faccio ad avviare TightVncServer su Pi Reboot?


Non riesco ancora a postare una risposta, ma c'è un metodo semplice per cui ho lavorato sul mio pi 3 B documentato su adafruit qui: learn.adafruit.com/…
Steven Evers

Risposte:


10

Per fare questo puoi usare un po 'di intelligenza Linux.

Il nostro primo compito sarà quello di modificare il file /etc/rc.local. Questo file può contenere comandi che vengono eseguiti all'avvio. Se guardiamo il file possiamo vedere che ci sono già poche voci in là;

#!/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

Il primo gruppo di righe con un segno di hash (#) davanti a loro sono commenti. Questi sono lì solo per spiegare cosa sta succedendo a qualcuno che legge il file.

Le righe di codice verso il basso hanno chiaramente a che fare con l'indirizzo IP del computer. In realtà sono uno script breve che controlla se Raspberry Pi ha un indirizzo IP e se lo fa, lo stampa. Se ricordi, puoi vedere l'indirizzo IP stampato sullo schermo quando il Pi si avvia in questo modo

My IP address is 10.1.1.8

Raspbian GNU/Linux 7 raspberrypi tty1

raspberrypi login:

Questo pezzo di script in rc.local è il codice responsabile della stampa dell'indirizzo IP!

Aggiungeremo il seguente comando in rc.local;

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

Questo comando cambia l'utente in modo che sia l'utente "pi" con su - pi. Il su sta per 'switch user' il trattino (-) si assicura che l'ambiente pi dell'utente (come tutte le sue impostazioni) sia usato correttamente e pi sia l'utente.

L'opzione -c dichiara che il prossimo pezzo della riga sarà il comando che verrà eseguito e la parte all'interno delle virgolette ('/ usr / bin / tightvncserver: 1') è il comando.

Il comando in questo caso esegue il file tightvncserver che si trova nella directory / usr / bin e specifica che dovremmo iniziare la sessione desktop 1 (: 1).

Per fare ciò modificheremo il file rc.local con il seguente comando;

sudo nano /etc/rc.local

Aggiungi nelle nostre linee in modo che il file sia simile al seguente;

#!/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

(Possiamo anche aggiungere il nostro commento nel file per far sapere ai futuri lettori cosa sta succedendo)

Questo dovrebbe essere. Ora dovresti essere in grado di verificare che il servizio si avvii al riavvio del Pi.

Se quanto sopra sembra un po 'lungo, sentiti libero di dare un'occhiata a un ragionamento più completo qui .


Per me non funziona.
Camaleonte,

La risposta è stata scritta per la versione "Wheezy" di Raspbian. La versione successiva ('Jessie' e (presumo) 'Stretch') hanno un metodo predefinito diverso. Vedi qui per un approccio alternativo.
d3noob,

5

Prima di iniziare assicurati che il tuo Pi sia connesso a Internet \ rete via Ethernet \ wifi.

Apri il Terminale e inserisci i seguenti comandi:

Ottieni l'indirizzo IP Pi per la connessione remota (da utilizzare in seguito)

hostname -I

Installa TightVncServer

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

Al primo avvio, è necessario inserire una password e verificarla. Non è necessario inserire una password di sola visualizzazione.

Per configurare l'avvio automatico come servizio all'avvio del Pi:

Apri nano (editor di testo) per creare un file per l'avvio automatico. Server VNC stretto sudo nano /etc/init.d/tightvncserver

Digita quanto segue (o copia e incolla ):

#!/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

Premi Ctrl + x, quindi y per salvare e Invio per mantenere lo stesso nome file.

Modifica le autorizzazioni di questo file per renderlo eseguibile e attivo:

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

Riavvia per testare il riavvio di sudo

Installa il client vnc per il tuo sistema operativo e prova a connetterti una volta riavviato Pi!

Per Windows: ad esempio il client TightVNC . Non è necessario installare il server.

Avviare il client VNC Connect utilizzando l'indirizzo IP dalla parte superiore di questo post. Cambia l'indirizzo IP per il tuo. Il numero di porta in un numero di post Internet è elencato solo come 2 cifre. Questa è una scorciatoia e se stai usando lo script sopra il tuo pi è in esecuzione sulla porta 1, allora dovresti usare 590 1 . Se 2, quindi 590 2 ecc.

192.168.1.123:5901

La tua soluzione funziona perfettamente per me, tranne per il fatto che non ottengo lo schermo intero. Come posso ottenere a schermo intero? ( vncserver -geometry 1366x768 -depth 24 -dpi 96. Ho usato quel comando prima per ottenere lo schermo intero. Esiste un modo per aggiungere la riga nel tuo codice?)
opu 웃

@opu 웃 La riga su $VNCUSER -c '/usr/bin/tightvncserver :1'è ciò che esegue il comando a cui ti riferisci. Basta aggiungere le opzioni alla fine di quella riga, che si tradurrà in qualcosa di similesu $VNCUSER -c '/usr/bin/tightvncserver :1' -geometry 1366x768 -depth 24 -dpi 96
Trento

Come posso eseguire il debug se questo non funziona? Se eseguo tightvncserver dalla riga di comando utente pi, si avvia e posso eseguire il remote in, ma non si avvia automaticamente usando questa o la soluzione /etc/rc.local.
Alan McDonley,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.