Inhaltsverzeichnis

LXC-Container öffnet automatisch den VNC-Port

automatischer Start des VNC-Servers beim Containerstart

Hier fallen mir ganz spontan zwei verschiedene Möglichkeiten ein:

  1. mit einem System-V - Start-/Stop-Sktipt
  2. einfach über den Cron

beide Varianten

Start-/Stop-Sktipt

innerhalb des Containers

Damit man sich zum starten des VNC-Servers nicht immer im Container einloggen muss, sollte man sich ein Start-/Stop-Skript schreiben. Dazu kann man zum Beispiel so vorgehen:

# touch /etc/init.d/vncserver
# chmod 0755 /etc/init.d/vncserver
# vi /etc/init.d/vncserver
# update-rc.d vncserver defaults 99 01
# vi /etc/init.d/vncserver

#! /bin/sh
### BEGIN INIT INFO
# Provides:          vncserver
# Required-Start:    $remote_fs $syslog $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Run vncserver
### END INIT INFO

AUFLOESUNG="1152x864"
VNCPORTOPT="1"
VNCSTARTCMD="vncserver -geometry ${AUFLOESUNG} :${VNCPORTOPT}"
VNCSTOPCMD="vncserver -kill :${VNCPORTOPT}"

PATH=/sbin:/usr/sbin:/bin:/usr/bin

. /lib/init/vars.sh
. /lib/lsb/init-functions

do_start() {
        log_begin_msg "Start ${VNCSTARTCMD}"
        ${VNCSTARTCMD}
        ES=$?
        log_end_msg $ES
        return $ES
}

do_stop() {
        log_begin_msg "Stop ${VNCSTOPCMD}"
        ${VNCSTOPCMD}
        ES=$?
        log_end_msg $ES
        return $ES
}

do_status() {
        VNCSTATUS="$(ps wx|fgrep -v grep|fgrep -v 'awk '|awk '/ Xvnc/{print $6}')"
        if [ -n "${VNCSTATUS}" ] ; then
                echo "Laufende VNC-Prozesse: '${VNCSTATUS}'"
        else
                echo "Es laufen keine VNC-Prozesse."
      fi
}

case "$1" in
    start)
      do_start
        ;;
    stop)
        do_stop
        ;;
    restart)
        do_stop
        sleep 1
        do_start
        ;;
    status)
        do_status
        ;;
    *)
        echo "Usage: $0 start|stop|restart|status" >&2
        exit 3
        ;;
esac

Crontab

ausserhalb des Containers (vom Host-System aus)

Wenn dieser Container nur den VNC-Prozess starten soll, und man mit dem Container nicht weiter anstellen will, dann genügt auch dieser "dirty hack":

# echo "* * * * * root vncserver -geometry 1152x864 :1 > /dev/null 2>&1" >> /var/lib/lxc/ContainerName/rootfs/etc/crontab

Hier wird der VNC-Server jede Minute einmal gestartet, wenn er bereits läuft, dann gibt es nur eine Meldung, die hier aber verworfen wird.

…und mann spart sich das Start-/Stop-Sktipt.