Diskstation VDR Streaming Server im chroot

Aus VDR Wiki
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Verschoben)
 
K (Links)
 
Zeile 557: Zeile 557:
 
* [http://vdr.schmirler.de/ vdr-plugin-svdrposd]
 
* [http://vdr.schmirler.de/ vdr-plugin-svdrposd]
 
* [http://www.tvdr.de/ VDR - The Video Disk Recorder]
 
* [http://www.tvdr.de/ VDR - The Video Disk Recorder]
* [http://www.vdr-wiki.de VDR Wiki] :-)
 
  
  
 
[[Kategorie:Installationsanleitungen]]
 
[[Kategorie:Installationsanleitungen]]
 
[[Kategorie:Streaming]]
 
[[Kategorie:Streaming]]

Aktuelle Version vom 20. Februar 2016, 18:41 Uhr

Inhaltsverzeichnis

[Bearbeiten] Einleitung

Still Under Construction

Diese Step-by-Step-Anleitung beschreibt die Installation und Konfiguration eines VDR Streaming Server Systems mittels Debian chroot auf einer Synology Diskstation. Der VDR wird ohne Ausgabe und Fernbedienung aufgesetzt "headless" und dient nur dem streamen und der zentralen Verwaltung von Aufnahmen, Konfigurationen und Timern.

VDR, DVB Module und Plugins werden "Cross Compiled". Der Ansatz lautet KISS ("Keep it simple stupid") es wird versucht so viel wie möglich mit vorhandenen Mitteln zu bewältigen.

Als Zuspieler kommt wahlweise vtunerc/satip, vdr-plugin-satip oder angesteckte USB Empfänger zum Einsatz.

Getestet und aufgesetzt auf einer DS214play und DSM5 sollte diese Anleitung jedoch auch auf andere Modelle übertragbar sein. Vielleicht auch hilfreich für den Aufbau von Debian Systemen.

Anmerkungen und Diskussion willkommen im vdr-portal

[Bearbeiten] Vorraussetzungen Diskstation

[Bearbeiten] Chroot

Im ersten Schritt muss das "Debian Chroot" Paket von SynoCommunity installiert oder kompiliert werden. Der schnelle Weg ist das benutzen der bereits gebauten Pakete, die in drei Schritten installiert werden können SynoCommunity. Danach wählt man im Paketmanager das entsprechende Paket aus. Das Paket kann auch kompiliert werden, auch das ist vergleichsweise einfach, gut beschrieben hier SynoCommunity github Alternativ kann man ein Chroot auch komplett selbst aufsetzen eine gute Anleitung dazu findet sich hier Debian_auf_der_DiskStation

[Bearbeiten] Optional: IPKG

IPKG ermöglicht es ohne chroot Pakete/ Module zu starten/ installieren direkt auf der DS. Ich nutze es ausschließlich zum VDR Start. Es geht aber auch ohne. Wie IPKG funktioniert und wie man es installiert kann man hier nachlesen: IPKG

[Bearbeiten] Cross Compiling

VDR, Module, Plugins, usw. müssen im chroot Cross Compiled werden. Dafür sind Toolchains (DSM 5.1 Tool Chains) und die Sourcen (Synology NAS GPL Source) nötig. Diese finden sich hier, wählt sie entsprechend eurem Modell aus.

Legt sie auf der Diskstation ab und entpackt sie dort, das geht deutlich schneller als andersherum. In dem Tutorial gehe ich davon aus das sie sich auf "/public/diskstation_compile/syno_src/" befinden.

[Bearbeiten] Installation und Konfiguration chroot

[Bearbeiten] Chroot einrichten

Loggt euch per SSH mit dem root Benutzer an, anschließend könnt ihr den folgenden Block in der Konsole abschicken, er sorgt dafür das ihr euch am chroot anmeldet, verknüpft die Sourcen und Toolchain und setzt Flags um die Arbeit im chroot zu vereinfachen. Den "/volume1/public/" Ordner nutze ich generell zum Austausch zwischen DSM und chroot.

Einmalig:

mkdir /usr/local/debian-chroot/var/chroottarget/public

Bei jeder ersten Anmeldung:

mount --bind /volume1/public/ /usr/local/debian-chroot/var/chroottarget/public
/var/packages/debian-chroot/scripts/start-stop-status chroot
alias ll='ls -l'
alias ls='ls --color=auto'


Angemeldet erstelle ich noch Symlinks auf die Sourcen und Toolchain.

ln -s /public/diskstation_compile/syno_src/source/linux-3.x/ /usr/local/
ln -s /public/diskstation_compile/syno_src/i686-pc-linux-gnu/ /usr/local/

[Bearbeiten] Chroot aktualisieren

Als nächstes werden die Pakete aktualisiert und vorbereitet

Pakete von deutschen Servern beziehen, sourcen ausschließlich aus dem yaVDR ppa

sed -i 's/\.fr\./\.de\./g' /etc/apt/sources.list
sed -i 's/deb-src/#deb-src/g' /etc/apt/sources.list
echo ' deb-src http://ppa.launchpad.net/yavdr/testing-vdr/ubuntu precise main  ' >> /etc/apt/sources.list
echo ' deb-src http://ppa.launchpad.net/yavdr/main/ubuntu precise main  ' >> /etc/apt/sources.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 8103B360
apt-get update 

Locale installieren, generieren und setzen

apt-get install locales 
locale-gen en_US en_US.UTF-8
locale-gen de_DE de_DE.UTF-8
dpkg-reconfigure locales
echo 'export LC_ALL="en_US.UTF-8"' >>/etc/profile.d/locale.sh
echo 'export LC_LANG="en_US.UTF-8"' >>/etc/profile.d/locale.sh
echo 'export LC_CTYPE="en_US.UTF-8"' >>/etc/profile.d/locale.sh
echo 'export LC_MESSAGES="en_US.UTF-8"' >>/etc/profile.d/locale.sh
dpkg-reconfigure tzdata

System aktualisieren und Pakete installieren die für das bauen und den Umgang nötig/ hilfreich sind

apt-get upgrade
apt-get install less vim curl screen openssh-server sudo build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev fakeroot \
make gcc  bzip2 par2 unrar unzip mercurial git patch patchutils subversion dh-make\
libproc-processtable-perl libdigest-sha-perl \
psmisc cdbs libudev-dev dh-make libtntnet-dev libcxxtools-dev  libssl-dev libboost-dev \
libpcre3-dev libavcodec-dev libavformat-dev libsqlite3-dev libcurl3-dev libxml2-dev libjansson-dev libzvbi-dev dpatch libudev-dev \
cmake usbutils 

Openssh Server fertigstellen: Port ändern um nicht mit der DS in Konflikt zu treten, User hinzufügen und Service einrichten

vi /etc/ssh/sshd_config
adduser *user*
usermod -aG sudo *user*
vi /etc/profile.d/S01_allusers.sh
  export LS_OPTIONS='--color=auto'
  eval "`dircolors`"
  alias ls='ls $LS_OPTIONS'
  alias ll='ls $LS_OPTIONS -la'
  alias l='ls $LS_OPTIONS -lA'
  export CONCURRENCY_LEVEL=3
source /etc/profile && source /root/.profile

In der Debian chroot App SSH hinzufügen:

/etc/init.d/ssh
ps -p $(cat /var/run/sshd.pid)

Nun kann man per SSH direkt auf die chroot Umgebung zugreifen

[Bearbeiten] Installation und Konfiguration VDR

[Bearbeiten] VDR installieren

Zuerst den vdr "ganz normal" aus den Debian Repos installieren. Das hat den Vorteil das sämtliche benötigten .conf Dateien, Symlinks und Skripte angelegt werden. Zudem werden die Pakete installiert die zum bauen von VDR und Plugins nötig sind. All das aus dem unstable Zweig da die normalen Pakete teils zu als sind und nicht alles selbst gebaut werden soll.

apt-get -t unstable install vdr vdr-dev

Der VDR soll auf dem neuesten Stand sein, daher wird er selbst gebaut

cd  $SOURCEDIR
apt-get source vdr
apt-get build-dep vdr
cd vdr-*
dpkg-buildpackage -us -uc -j3

[Bearbeiten] VDR Plugins installieren und konfiguriern

Für den Betrieb eines reinen Streaming Servers sind nicht viele Plugins nötig, ich benutze lediglich: dummydevice, live, streamdev, svdrposd, satip, xvdr oder vnsi, suspendoutput, femon, dynamite

Um die zu bauen holen wir die sourcen, verlinken diese und können loslegen:

mkdir $SOURCEDIR/plugins
mkdir  /usr/share/vdr/plugins
cd $SOURCEDIR/plugins
apt-get source vdr-plugin-satip vdr-plugin-femon vdr-plugin-xvdr vdr-plugin-dummydevice vdr-plugin-dynamite \
vdr-plugin-vnsiserver  vdr-plugin-streamdev vdr-plugin-svdrposd vdr-plugin-suspendoutput  vdr-plugin-epg2vdr vdr-plugin-scraper2vdr vdr-plugin-live
apt-get build-dep vdr-plugin-satip vdr-plugin-femon vdr-plugin-xvdr vdr-plugin-dummydevice vdr-plugin-dynamite \
vdr-plugin-vnsiserver  vdr-plugin-streamdev vdr-plugin-svdrposd vdr-plugin-suspendoutput vdr-plugin-live vdr-plugin-epg2vdr vdr-plugin-scraper2vdr

Nun durch alle verzeichnisse gehen und

debianize-vdrplugin
dpkg-buildpackage -us -uc

ausführen. Alternativ:

cd ../vdr-2*/PLUGINS/src
git clone https://github.com/rofafor/vdr-plugin-satip.git satip
git clone https://github.com/rofafor/vdr-plugin-femon femon
git clone https://github.com/pipelka/vdr-plugin-xvdr.git xvdr
git clone https://github.com/flensrocker/vdr-plugin-dummydevice.git dummydevice
git clone https://github.com/flensrocker/vdr-plugin-dynamite.git dynamite
git clone https://github.com/FernetMenta/vdr-plugin-vnsiserver vnsiserver
ln ../../../plugins/vdr-plugin-streamdev-*/ streamdev -s
ln ../../../plugins/vdr-plugin-svdrposd-*/ svdrposd -s
ln ../../../plugins/vdr-plugin-suspendoutput-*/ suspendoutput -s
ln ../../../plugins/vdr-plugin-live-*/ live -s
ln ../../../plugins/vdr-plugin-epg2vdr-*/ epg2vdr -s
ln ../../../plugins/vdr-plugin-scraper2vdr-*/ scraper2vdr -s
ln ../../../plugins/vdr-plugin-dummydevice-*/ dummydevice -s
ln ../../../plugins/vdr-plugin-dynamite-*/ dynamite -s
ln ../../../plugins/vdr-plugin-epg2vdr-*/ epg2vdr -s
ln ../../../plugins/vdr-plugin-femon-*/ femon -s
ln ../../../plugins/vdr-plugin-satip-*/ satip -s
ln ../../../plugins/vdr-plugin-vnsiserver-*/ vnsiserver -s
ln ../../../plugins/vdr-plugin-xvdr-*/ xvdr -s
cd ../..
make plugins -j4 ARCH=x86 CROSS_COMPILE=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-
make install -j4 ARCH=x86 CROSS_COMPILE=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-
cp PLUGINS/lib/* /usr/lib/vdr/plugins/

Für den reibungslosen Start noch folgende Dateien/ Ordner erstellen, bzw. Assets kopieren.

mkdir /etc/vdr/plugins/xvdr/
mkdir /var/cache/vdr/plugins/
mkdir /var/cache/vdr/plugins/xvdr/
mkdir /var/lib/vdr/plugins/vnsiserver/
mkdir /var/lib/vdr/plugins/xvdr/
mkdir /usr/share/vdr/plugins/live/

Die erlaubten Hosts für die Streaming Plugins einstellen

vi /etc/vdr/plugins/streamdevhosts.conf
vi /var/lib/vdr/plugins/xvdr/allowed_hosts.conf
vi /var/lib/vdr/plugins/vnsiserver/allowed_hosts.conf
vi /etc/vdr/svdrphosts.conf

Entsprechend eurem Netzwerk anpassen:

127.0.0.1             # always accept localhost
192.168.0.0/24        # any host on the local net
#204.152.189.113      # a specific host
#0.0.0.0/0            # any host on any net (USE THIS WITH CARE!)

weiter mit:

touch /etc/vdr/plugins/xvdr/resume.data
touch /var/cache/vdr/plugins/xvdr/channelcache.data
cp PLUGINS/src/live/live/*  /usr/share/vdr/plugins/live/ -r
chown -R vdr.vdr /var/lib/vdr /var/cache/vdr /usr/share/vdr/plugins

Zudem sollte man die Plugins in der richtigen Reihenfolge starten, bzw. deaktivieren:

vi /etc/vdr/plugins/order.conf

wie folgt füllen

dynamite
dummydevice
satip
streamdev-server
xvdr
vnsiserver
live
suspendoutput
svdrposd
femon
-streamdev-client

Auf der DS ist der Port 1900 von einem eigenen, nicht zu deinstallierenden upnp Service belegt, daher kann das satip-Plugin Server nicht entdecken. Abhilfe schafft das manuelle setzen in der plugin.satip.conf. Das Escaping beibehalten!

vi /etc/vdr/plugins/plugin.satip.conf 
-d 3 -s 192.168.0.XX|DVBS2-4|\"devicename\"

Außerdem sollte die sources.conf entsprechend der Tuner angepasst werden:

vi /etc/vdr/sources.conf
S19.2E  Astra 1KR/1L/1M/2C
S19.2E  2 Astra 1KR/1L/1M/2C
S19.2E  3 Astra 1KR/1L/1M/2C

[Bearbeiten] VDR konfigurieren

satip.CICAM = 0
satip.DisabledFilters =
satip.DisabledSources = A
satip.EnableCIExtension = 0
satip.EnableEITScan = 1
satip.OperatingMode = 1
streamdev-server.AllowSuspend = 0
streamdev-server.HideMenuEntry = 0
streamdev-server.HTTPBindIP = 0.0.0.0
streamdev-server.HTTPPriority = 0
streamdev-server.HTTPServerPort = 3000
streamdev-server.HTTPStreamType = 0
streamdev-server.IGMPBindIP = 0.0.0.0
streamdev-server.IGMPClientPort = 1234
streamdev-server.IGMPPriority = 0
streamdev-server.IGMPStreamType = 0
streamdev-server.LiveBufferMs = 0
streamdev-server.LoopPrevention = 0
streamdev-server.MaxClients = 5
streamdev-server.ServerPort = 2004
streamdev-server.StartHTTPServer = 1
streamdev-server.StartIGMPServer = 0
streamdev-server.StartServer = 1
streamdev-server.StartSuspended = 1
streamdev-server.VTPBindIP = 0.0.0.0
streamdev-server.VTPPriority = 0
suspendoutput.MainMenu = 1
suspendoutput.ShowLogo = 0
suspendoutput.SuspendPaused = 1
suspendoutput.SuspendTimer = 120

[Bearbeiten] DVB auf der Diskstation

[Bearbeiten] Initial Kernel Module bauen und installieren

Um vtunerc (oder andere dvb module) bauen und benutzen zu können benötigt man die dvb* Module. Diese sind im chroot nicht vorhanden, daher müssen wir sie bauen:

git clone --branch v3.2.40 git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
cp /usr/local/linux-3.x/synoconfigs/evansport .config
make clean
make distclean
make oldconfig
make menuconfig


Die Sektion Device Drivers->Multimedia Support wählen und DVB Module auswählen. Anschießend speichern und bauen:

fakeroot make-kpkg --initrd -j 3 kernel-image kernel-headers
dpkg -i linux-headers-3.2.40*
dpkg -i linux-image-3.2.40*

Nur module reichen oft auch, mit den synology sourcen

cd /usr/local/linux-3.x
cp synoconfigs/evansport .config
make clean
make distclean
make oldconfig
make modules 
make modules_install
depmod -a

[Bearbeiten] vtuner/satip installieren

vtunerc/satip erstellt ein virtuelles DVB device und verbindet sich gegen den SatIP Server. Vorteil gegenüber dem vdr-plugin-satip ist das eine Kanalsuche durchgeführt werden kann. Nachteil ist das device ist permanent verbunden und sorgt für einen höheren Stromverbrauch. Ich benutze beides, ein fixes vtunerc device und drei über plugin.

$SOURCEDIR
git clone https://code.google.com/p/satip/ satip
cd satip/
wget -O signal.diff 'http://www.vdr-portal.de/index.php?page=Attachment&attachmentID=36952&h=4f28c9f920eaec32918782c9daad89056862acc7'
patch -p1 < signal.diff
cd satip/
make clean ARCH=x86 CROSS_COMPILE=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-
make ARCH=x86 CROSS_COMPILE=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-
cd ../vtuner_tweak
make clean ARCH=x86 CROSS_COMPILE=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-
make ARCH=x86 CROSS_COMPILE=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-
mkdir /lib/modules/`uname -r`/kernel/drivers/media/tuners/
cp vtunerc.ko /lib/modules/`uname -r`/kernel/drivers/media/tuners/vtunerc.ko
depmod -a

[Bearbeiten] DVB Module

Analog des vtunerc Moduls können auch Module anderer DVB-USB Stick Hersteller gebaut werden. Eine Besonderheit ist zu beachten, die Firmwares müssen außerhalb des Chroot in folgendem Verzeichnis abgelegt werden. Fall es nicht existiert, einfach erstellen:

/usr/syno/hotplug/firmware/

[Bearbeiten] VDR starten

[Bearbeiten] Startskript mit Modulen

Ich arbeite mit einer Kombination von vtuner/satip und dem satip Plugin. Dementsprechend habe ich das startup script angepasst, inspiriert von dem Startupskript aus dem VDR Portal. Einziger Unterschied ist das die Variable "START" genutzt wird um neu zu bauen, da der VDR Start bereist in der eigend Konfiguration deaktiviert werden kann.

vi /etc/default/satip
# satip Konfiguration
SAT_IP_SERVER=192.168.0.XX                  # IP or FQDN of the SAT>IP Server
GIT_LOCAL_REPO=/usr/local/src/satip         # where should the local GIT repository be located
GIT_REPO="https://code.google.com/p/satip"  # URL of the SAT>IP - VTUNER repository
NUM_INSTANCES=1                             # Number if DVB devices
COMPILE=0                                     # Compile or not

Service aktivieren

vi /etc/default/vdr
ENABLED=1
vi /etc/init.d/satip
   #! /bin/bash -p
   #
   # satip start-stop script
   #
   ### BEGIN INIT INFO
   # Provides:          vtunerc:satIP
   # Required-Start:    $remote_fs $network $syslog
   # Required-Stop:     $remote_fs $network $syslog
   # Default-Start:     2 3 4 5
   # Default-Stop:      0 1 6
   # Short-Description: Starts the vtunerc:satIP
   # Description:       Starts the vtunerc:satIP
   ### END INIT INFO
   . /lib/lsb/init-functions
   . /etc/default/satip
   PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
   NAME=satIP
   DESC="vtunerc:"
   PIDFILE=/var/run/satip
   SATIPPRG=$GIT_LOCAL_REPO/satip/satip
   test -x $SATIPPRG || exit 0
   get_status()
   {
       for i in $(seq 0 $(($NUM_INSTANCES-1))); do
           if ! start-stop-daemon --start --startas $SATIPPRG --test \
               --name $(basename $SATIPPRG) --pidfile $PIDFILE$i.pid >/dev/null
           then
               echo " - instance $i is running."
               exit 0
           fi
       done
       echo " - is not running."
       exit 3
   }
   compile()
   {
       logger satip: Check local git repo
       if [ ! -d $GIT_LOCAL_REPO ]; then
           echo "Trying to git clone $GIT_REPO"
           cd `dirname $GIT_LOCAL_REPO`
           if [ -x /usr/bin/git ]; then
               /usr/bin/git clone $GIT_REPO
           else
               echo "GIT not installed. Unable to get clone remote SATIP repo"
               exit 1
           fi
       fi
       logger satip: compile SATIP Application
       # compile SATIP Applicationvi /var/run/satip
       cd $GIT_LOCAL_REPO/satip
       /usr/bin/make clean ARCH=x86 CROSS_COMPILE=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-
       /usr/bin/make   ARCH=x86 CROSS_COMPILE=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-
       logger satip: compile vtunerc kernel module
       # compile vtuner kernel module
       cd $GIT_LOCAL_REPO/vtuner_tweak
       /usr/bin/make clean ARCH=x86 CROSS_COMPILE=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-
       /usr/bin/make ARCH=x86 CROSS_COMPILE=/usr/local/i686-pc-linux-gnu/bin/i686-pc-linux-gnu-
       mkdir -p /lib/modules/`uname -r`/kernel/drivers/media/tuners
       cp vtunerc.ko /lib/modules/`uname -r`/kernel/drivers/media/tuners/vtunerc.ko
       depmod -a
   }
   startsatip()
   {
       if [ "$COMPILE" != "0" ]; then
           compile
       fi
       
       logger vtunerc: load kernel module
       modprobe vtunerc devices=$NUM_INSTANCES debug=0
       sleep 2
       chmod a+rw /dev/vtunerc*
       for i in $(seq 0 $(($NUM_INSTANCES-1))); do
           chmod a+rw /dev/dvb/adapter$i/*
       done
       logger satip: run $NUM_INSTANCES instances of SATIP Application in the background
       for i in $(seq 0 $(($NUM_INSTANCES-1))); do
           $SATIPPRG -h $SAT_IP_SERVER -d /dev/vtunerc$i & echo $! > /var/run/satip$i.pid
       done
       sleep 2
       chmod a+rw /dev/vtunerc*
       for i in $(seq 0 $(($NUM_INSTANCES-1))); do
           chmod a+rw /dev/dvb/adapter$i/*
       done
   }
   stopsatip()
   {
       for i in $(seq 0 $(($NUM_INSTANCES-1))); do
           if start-stop-daemon --stop --retry 30 --name $(basename $SATIPPRG) --pidfile $PIDFILE$i.pid >/dev/null
           then
               start-stop-daemon --stop --retry 30 --oknodo --exec $SATIPPRG >/dev/null
               rm -f $PIDFILE$i.pid
           else
               echo -n " - instance $i seems not to be running"
           fi
       done
       logger satip: killing satip
       sleep 2
       echo -n " - unload vtunerc kernel module"
       logger satip: unload vtunerc kernel module
       modprobe -r vtunerc 2>&1 >/dev/null &
       sleep 2
   }
   case "$1" in
       start)
           echo -n "Starting $DESC: $NAME"
           startsatip
           echo "."
       ;;
       stop)
           echo -n "Stopping $DESC: $NAME"
           stopsatip
           echo "."
       ;;
       restart|force-reload)
           echo -n "Restarting $DESC: $NAME"
           stopsatip
           startsatip
           echo "."
       ;;
       status)
           echo -n "Getting status of $DESC: $NAME"
           get_status
       ;;
       compile)
           compile
       ;;
       *)
           N=/etc/init.d/$NAME
           echo "Usage: $N {start|stop|restart|force-reload|status|compile}" >&2
           exit 1
       ;;
   esac
   exit 0

[Bearbeiten] Startskript in den Diskstation Start integrieren

Es gibt 2 Möglichkeiten, zum einen kann die GUI benutzt werden die das chroot Pakt mitliefert. Das ist komfortabel, der VDR kann aus dem Webinterface aus neu gestartet werden. Dazu legt man einen neuen Service an, gibt ihm einen Namen und trägt folgende Befehle als Command und Status ein:

/etc/init.d/vdr
ps -p $(cat /var/run/runvdr.pid)

Leider hatte ich jedoch oft das Problem das der chroot Service selbst sich nicht starten ließ, daher bin ich auf das Startup von IPKG umgestiegen. Dazu legt man folgende Datei außerhalb des chroot an:

 vi /opt/etc/init.d/S99chroot

Mit folgendem Inhalt. Da ich die DS nicht allzuoft neu starte mit großzügigen Wartezeiten um sicher zu sein das der Startvorgang abgeschlossen ist. Es können auch weitere Services hinzugefügt werden wie in dem Beispiel syslog-ng.

#!/bin/sh
if [ "$*" = 'start' ] ; then
 sleep 5
 chroot /usr/local/debian-chroot/var/chroottarget/ /etc/init.d/syslog-ng start
 sleep 1
 chroot /usr/local/debian-chroot/var/chroottarget/ /etc/init.d/vdr start
else
 chroot /usr/local/debian-chroot/var/chroottarget/ /etc/init.d/vdr stop
 sleep 1
 chroot /usr/local/debian-chroot/var/chroottarget/ /etc/init.d/syslog-ng stop
fi

[Bearbeiten] Firewall einstellen

Das ist ein Reminder: Nicht vergessen die Client IP´s (ggf. Satip Server IP) in der Firewall freizugeben sonst ist nichts mit streamen. Das geht über das DSM GUI.

[Bearbeiten] VDR Konfiguration und Aufnahmen teilen

Die Hauptaufgabe einer DS ist es natürlich Daten im Netzwerk zu verteilen. Das können wir auch für den VDR gut nutzen um z.b. Kanalliste oder das Video Verzeichnis mit mehreren VDR Clients zu teilen. Zu finden ist all dies unterhalb von

/usr/local/debian-chroot/var/chroottarget/

Verteilen kann man gut mit NFS, die Symlinks sind jedoch meist problematisch. Daher empfiehlt es sich die Konfigurationen in ein Verzeichnis zu legen. Hier /etc/vdr

cd /etc/vdr
rm setup.conf
rm channels.conf
rm vdr.default
cp /var/lib/vdr/channels.conf .
cp /var/lib/vdr/setup.conf .
cp ../default/vdr vdr.default
mkdir plugins/streamdev-server
mv plugins/streamdevhosts.conf plugins/streamdev-server
mkdir video.00

Anschießend die vdr.default bearbeiten:

# /etc/default/vdr
#
# See also /usr/share/doc/vdr/README.Debian.gz
#
# Change to 1 to enable vdr's init-script
ENABLED=1
# Change this to 1 if you want vdr to be able to shutdown the
# computer
ENABLE_SHUTDOWN=0
# Video-Directory
VIDEO_DIR="/etc/vdr/video.00"
# Options that will be passed to vdr's commandline
# for example: OPTIONS="-w 15"
OPTIONS="-w 60 -c /etc/vdr"

und einen symlink anlegen:

rm /etc/default/vdr
ln -s /etc/vdr/vdr.default /etc/default/vdr

[Bearbeiten] Links