Starten Sie TightVncServer automatisch auf Raspberry Pi 2

11

Ich habe einen Raspberry Pi 2 und habe den Beitrag auf Raspberrypi.org verfolgt, aber Tight VNC Server wird beim Neustart nicht gestartet. Es scheint keinen Fehler zu geben.

Wie kann ich TightVncServer beim Pi Reboot starten lassen?

Sarin
quelle
Ich kann noch keine Antwort posten, aber es gibt eine einfache Methode, mit der ich an meinem bei adafruit dokumentierten pi 3 B arbeiten konnte: learn.adafruit.com/…
Steven Evers

Antworten:

10

Dazu können Sie ein wenig Linux-Cleverness verwenden.

Unsere erste Aufgabe wird es sein, die Datei /etc/rc.local zu bearbeiten. Diese Datei kann Befehle enthalten, die beim Start ausgeführt werden. Wenn wir uns die Datei ansehen, können wir sehen, dass dort bereits wenige Einträge vorhanden sind.

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

Die ersten Zeilen mit einem Rautezeichen (#) sind Kommentare. Diese dienen nur dazu, jemandem, der die Datei liest, zu erklären, was los ist.

Die Codezeilen nach unten haben eindeutig etwas mit der IP-Adresse des Computers zu tun. Tatsächlich handelt es sich um ein kurzes Skript, das überprüft, ob der Raspberry Pi eine IP-Adresse hat, und wenn dies der Fall ist, druckt es diese aus. Wenn Sie sich erinnern, können Sie die IP-Adresse auf dem Bildschirm sehen, wenn der Pi so hochfährt

My IP address is 10.1.1.8

Raspbian GNU/Linux 7 raspberrypi tty1

raspberrypi login:

Dieses Skript in rc.local ist der Code, der für den Ausdruck der IP-Adresse verantwortlich ist!

Wir werden den folgenden Befehl in rc.local einfügen;

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

Dieser Befehl wechselt den Benutzer zum Benutzer 'pi' mit su - pi. Das su steht für 'Benutzer wechseln'. Der Bindestrich (-) stellt sicher, dass die Umgebung des Benutzers pi (wie alle seine Einstellungen) korrekt verwendet wird und pi der Benutzer ist.

Die Option -c gibt an, dass der nächste Teil der Zeile der Befehl sein wird, der ausgeführt wird, und der Teil innerhalb der Anführungszeichen ('/ usr / bin / tightvncserver: 1') der Befehl ist.

Der Befehl führt in diesem Fall die Datei tightvncserver aus, die sich im Verzeichnis / usr / bin befindet, und gibt an, dass die Desktopsitzung 1 (: 1) gestartet werden soll.

Dazu bearbeiten wir die Datei rc.local mit dem folgenden Befehl.

sudo nano /etc/rc.local

Fügen Sie unsere Zeilen hinzu, damit die Datei wie folgt aussieht:

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

(Wir können der Datei auch einen eigenen Kommentar hinzufügen, damit zukünftige Leser wissen, was los ist.)

Das sollte es sein. Sie sollten nun in der Lage sein zu testen, ob der Dienst beim Neustart des Pi durch einen Neustart gestartet wird.

Wenn das oben Genannte etwas langwierig klingt, können Sie hier eine ausführlichere Begründung lesen .

d3noob
quelle
Es funktioniert nicht bei mir.
Chamäleon
Die Antwort wurde für die 'Wheezy'-Version von Raspbian geschrieben. Die spätere Version ('Jessie' und (ich nehme an) 'Stretch') haben eine andere Standardmethode. Sehen Sie hier für einen alternativen Ansatz.
d3noob
5

Bevor Sie beginnen, stellen Sie sicher, dass Ihr Pi über Ethernet \ WLAN mit dem Internet \ Netzwerk verbunden ist.

Öffnen Sie das Terminal und geben Sie die folgenden Befehle ein:

Abrufen der Pi-IP-Adresse für die Remoteverbindung (zur späteren Verwendung)

hostname -I

Installieren Sie TightVncServer

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

Bei der ersten Ausführung müssen Sie ein Kennwort eingeben und überprüfen. Es ist nicht erforderlich, nur ein Ansichtskennwort einzugeben.

So konfigurieren Sie den automatischen Start als Dienst, wenn der Pi hochfährt:

Öffnen Sie nano (Texteditor), um eine Datei zum automatischen Starten von Tight VNC Server sudo nano /etc/init.d/tightvncserver zu erstellen

Geben Sie Folgendes ein (oder kopieren und einfügen ):

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

Drücken Sie Strg + x, dann y zum Speichern und Enter, um den gleichen Dateinamen beizubehalten.

Bearbeiten Sie die Berechtigungen dieser Datei, um sie ausführbar und aktiv zu machen:

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

Starten Sie neu, um den Neustart von sudo zu testen

Installieren Sie den vnc-Client für Ihr Betriebssystem und versuchen Sie nach dem Neustart des Pi eine Verbindung herzustellen!

Für Windows: TightVNC-Client zum Beispiel . Server muss nicht installiert werden.

Starten Sie den VNC-Client Connect mit der IP-Adresse oben in diesem Beitrag. Ändern Sie die IP-Adresse für Ihre. Die Portnummer in einer Reihe von Internet-Posts ist nur zweistellig. Dies ist eine kurze Hand und wenn Sie das obige Skript verwenden, läuft Ihr Pi auf Port 1, dann sollten Sie 590 1 verwenden . Wenn 2, dann 590 2 usw.

192.168.1.123:5901
Sarin
quelle
Ihre Lösung funktioniert perfekt für mich, außer dass ich keinen Vollbildmodus erhalte. Wie kann ich Vollbild bekommen? ( vncserver -geometry 1366x768 -depth 24 -dpi 96. Ich habe diesen Befehl zuvor verwendet, um den Vollbildmodus zu erhalten. Gibt es eine Möglichkeit, die Zeile in Ihren Code
einzufügen
@opu 웃 In der Zeile su $VNCUSER -c '/usr/bin/tightvncserver :1'wird der Befehl ausgeführt, auf den Sie sich beziehen. Fügen Sie einfach die Optionen an das Ende dieser Zeile an, was zu so etwas wiesu $VNCUSER -c '/usr/bin/tightvncserver :1' -geometry 1366x768 -depth 24 -dpi 96
Trent
Wie debugge ich, wenn dies nicht funktioniert? Wenn ich tightvncserver über die Befehlszeile des pi-Benutzers ausführe, wird es gestartet und ich kann remote zugreifen, startet jedoch nicht automatisch mit dieser oder der Lösung /etc/rc.local.
Alan McDonley