Démarrage automatique de TightVncServer sur Raspberry Pi 2

11

J'ai un Raspberry Pi 2 et j'ai suivi le post sur Raspberrypi.org mais Tight VNC Server ne démarre pas au redémarrage. Il ne semble pas y avoir d'erreur.

Comment faire démarrer TightVncServer sur Pi Reboot?

sarin
la source
Je ne peux pas encore poster de réponse, mais il y a une méthode simple que j'ai mise au point sur mon pi 3 B documentée chez adafruit ici: learn.adafruit.com/…
Steven Evers

Réponses:

10

Pour ce faire, vous pouvez utiliser un peu d'intelligence Linux.

Notre première tâche sera de modifier le fichier /etc/rc.local. Ce fichier peut contenir des commandes qui s'exécutent au démarrage. Si nous regardons le fichier, nous pouvons voir qu'il y a déjà peu d'entrées dedans;

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

Le premier ensemble de lignes avec une marque de hachage (#) devant elles sont des commentaires. Ceux-ci sont juste là pour expliquer ce qui se passe à quelqu'un qui lit le fichier.

Les lignes de code vers le bas ont clairement quelque chose à voir avec l'adresse IP de l'ordinateur. En fait, il s'agit d'un court script qui vérifie si le Raspberry Pi a une adresse IP et si c'est le cas, il l'imprime. Si vous vous souvenez, vous pouvez voir l'adresse IP imprimée sur l'écran lorsque le Pi démarre comme ça

My IP address is 10.1.1.8

Raspbian GNU/Linux 7 raspberrypi tty1

raspberrypi login:

Ce morceau de script dans rc.local est le code responsable de l'impression de l'adresse IP!

Nous ajouterons la commande suivante dans rc.local;

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

Cette commande fait passer l'utilisateur en utilisateur «pi» avec su-pi. Le su signifie «changer d'utilisateur». Le tiret (-) s'assure que l'environnement de l'utilisateur pi (comme tous ses paramètres) est utilisé correctement et pi est l'utilisateur.

L'option -c déclare que la prochaine partie de la ligne sera la commande qui sera exécutée et la partie à l'intérieur des guillemets ('/ usr / bin / tightvncserver: 1') est la commande.

La commande dans ce cas exécute le fichier tightvncserver qui se trouve dans le répertoire / usr / bin et spécifie que nous devons démarrer la session de bureau 1 (: 1).

Pour ce faire, nous éditerons le fichier rc.local avec la commande suivante;

sudo nano /etc/rc.local

Ajoutez nos lignes pour que le fichier ressemble à ce qui suit;

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

(Nous pouvons également ajouter notre propre commentaire dans le fichier pour permettre aux futurs lecteurs de savoir ce qui se passe)

Ça devrait être ça. Vous devriez maintenant pouvoir tester que le service démarre lorsque le Pi démarre en redémarrant.

Si ce qui précède semble un peu long, n'hésitez pas à consulter un raisonnement plus complet ici .

d3noob
la source
Ça ne marche pas pour moi.
Chameleon
La réponse a été écrite pour la version «Wheezy» de Raspbian. La dernière version ('Jessie' et (je suppose) 'Stretch') a une méthode par défaut différente. Voir ici pour une approche alternative.
d3noob
5

Avant de commencer, assurez-vous que votre Pi est connecté à Internet \ réseau via Ethernet \ wifi.

Ouvrez le terminal et entrez les commandes suivantes:

Obtenir l'adresse IP Pi pour la connexion à distance (pour une utilisation ultérieure)

hostname -I

Installer TightVncServer

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

La première fois que cela est exécuté, vous devez entrer un mot de passe et le vérifier. Pas besoin de saisir un mot de passe en lecture seule.

Pour configurer le démarrage automatique en tant que service lorsque le Pi démarre:

Ouvrez nano (éditeur de texte) pour créer un fichier pour démarrer automatiquement le serveur Tight VNC sudo nano /etc/init.d/tightvncserver

Tapez ce qui suit (ou copiez et collez ):

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

Appuyez sur Ctrl + x, puis sur y pour enregistrer et sur Entrée pour conserver le même nom de fichier.

Modifiez les autorisations de ce fichier pour le rendre exécutable et actif:

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

Redémarrez pour tester le redémarrage de sudo

Installez le client vnc pour votre système d'exploitation et essayez de vous connecter une fois que le Pi a redémarré!

Pour Windows: TightVNC Client par exemple . Pas besoin d'installer de serveur.

Démarrez The VNC Client Connect en utilisant l'adresse IP en haut de ce message. Modifiez l'adresse IP de la vôtre. Le numéro de port dans un certain nombre de publications Internet n'est répertorié que sur 2 chiffres. C'est une tâche courte et si vous utilisez le script ci-dessus, votre pi s'exécute sur le port 1, alors vous devez utiliser 590 1 . Si 2, alors 590 2 etc.

192.168.1.123:5901
sarin
la source
Votre solution fonctionne parfaitement pour moi, sauf que je ne reçois pas le plein écran. Comment obtenir le plein écran? ( vncserver -geometry 1366x768 -depth 24 -dpi 96. J'ai déjà utilisé cette commande pour obtenir le plein écran. Existe-t-il un moyen d'ajouter la ligne dans votre code?)
opu 웃
@opu 웃 La ligne su $VNCUSER -c '/usr/bin/tightvncserver :1'est ce qui exécute la commande à laquelle vous faites référence. Ajoutez simplement les options à la fin de cette ligne, ce qui entraînera quelque chose commesu $VNCUSER -c '/usr/bin/tightvncserver :1' -geometry 1366x768 -depth 24 -dpi 96
Trent
Comment déboguer si cela ne fonctionne pas? Si j'exécute tightvncserver sur la ligne de commande de l'utilisateur pi, il démarre et je peux me connecter à distance, mais ne démarre pas automatiquement en utilisant ceci ou la solution /etc/rc.local.
Alan McDonley