VNC automatisch starten
In den letzten Teilen habe ich bereits gezeigt wie man einen VNC Server installiert, konfiguriert und absichert. Nun zeige ich euch noch wie ihr den VNC Server bei Systemstart automatisch starten könnt. VNC automatisch starten geht recht einfach über init Skript, welches bei Systemstart für einen bestimmten Benutzer den Server startet.
VNC automatisch starten
Den Server starten wir direkt beim Booten des Rechners. Bootskripts erstellt man unter /etc/init.d, das funktioniert auch nach der systemd Umstellung auf Debian 8 wie gehabt. Für den VNC automatisch starten Artikel habe ich deshalb folgendes Skript erstellt:
nano /etc/init.d/vncserver
Achtung: unter /etc benötigt man Root Rechte um Dateien abzuspeichern. Deshalb legen wir die Datei als root Benutzer an. Das Skript in voller Länge:
#!/bin/sh -e ### BEGIN INIT INFO # Provides: vncserver # Required-Start: networking # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 ### END INIT INFO PATH="$PATH:/usr/bin/X11" # The Username:Group that will run VNC export USER="werner" # The display that VNC will use DISPLAY="1" # Color depth (between 8 and 32) DEPTH="24" # The Desktop geometry to use. GEOMETRY="1920x1080" # The name that the VNC Desktop will have. NAME="netcup-vnc-server" OPTIONS="-name ${NAME} -depth ${DEPTH} -geometry ${GEOMETRY} -localhost :${DISPLAY}" case "$1" in start) echo "Starting vncserver for user '${USER}' on localhost:${DISPLAY}" su ${USER} -c "/usr/bin/vncserver ${OPTIONS}" ;; stop) echo "Stopping vncserver for user '${USER}' on localhost:${DISPLAY}" su ${USER} -c "/usr/bin/vncserver -kill :${DISPLAY}" ;; restart) $0 stop $0 start ;; *) echo "Usage: /etc/init.d/vncserver {start/restart/stop}" exit 1 ;; esac exit 0
Im Skript setzen wir einige Variablen. Diese sind die Parameter des VNC Servers.
- display
- depth
- geometrie
- name
In der options Variable wird der String mit allen Parametern zusammengesetzt.
Zuletzt müssen wir noch Ausführungsrechte setzen:
chmod +x vncserver
Mit folgenden Befehl wird das Skript dem Bootvorgang hinzugefügt:
update-rc.d vncserver defaults
Beim nächsten Systemstart sollte VNC automatisch starten.
Probleme
Sollte es beim update-rc.d Kommando Fehlermeldungen geben, dann muss man diese noch abarbeiten. Dafür nehmen wir die Einstellung von update-rc.d mit folgenden Kommando zurück:
update-rc.d -f vncserver remove
Fehlermeldungen
Lokalisation
Ich hatte unter anderem folgende Fehlermeldung:
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = "en_US:en", LC_ALL = (unset), LANG = "de_AT.UTF-8" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C").
So wie es aussieht gibt es ein Problem mit der Lokalisation. Die Systemsprache ist auf Englisch eingestellt, die Sprache am Desktop jedoch Deutsch. Die Lösung ist recht einfach, man muss nur die Lokalisation des Systems prüfen und neu durchlaufen. Das macht man mit folgendem Kommando:
dpkg-reconfigure locales
Skript Header
Ein weiterer Fehler wirft folgende Fehlermeldung:
update-rc.d: warning: default start runlevel arguments (2 3 4 5) do not match vncserver Default-Start values (3 4 5) update-rc.d: warning: default stop runlevel arguments (0 1 6) do not match vncserver Default-Stop values (0 6) insserv: Script vncserver is broken: incomplete LSB comment. insserv: missing `Required-Stop:' entry: please add even if empty.
Es sieht aus, als ob die Einstellungen im Skript für Default-Start und Default-Stop im Header des Skripts. Abhilfe schafft die Anpassung an die in der Fehlermeldung vorgeschlagenen Werte.
Fazit
Ob das VNC automatisch starten Skript funktioniert zeigt sich nach dem Neustart des Systems. Nach dem erfolgreichen Systemstart sollte man sich bereits über VNC durch einen SSH Tunnel anmelden. Von nun an läuft der VNC Server immer im Hintergrund und ist auch nach einem Systemneustart wieder verfügbar.
Danke für diesen großartigen Artikel, ich kenne nicht viele Blogger die Themen so gut aufbereiten und vermitteln können!