Raspbian VDR Streaming Client - VDR Installation

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Für VDR benötigte Systempakete installieren

Raspbian benötigte Pakete:

sudo apt-get install vim git

VDR benötigte Pakete:

sudo apt-get install gettext g++ libfreetype6-dev libfontconfig1-dev libcap-dev libjpeg-dev libncurses5-dev libncursesw5-dev

Raspberry Pi HD Device Plugin benötigte Pakete:

sudo apt-get install libavcodec-dev libavformat-dev libavutil-dev libavresample-dev libavresample1

Lirc benötigte Pakete:

sudo apt-get install lirc

Datenverzeichnis vorbereiten

In diesem Verzeichnis werden später die Installationspakete etc. abgelegt.

sudo mkdir /data
sudo chown -R pi.pi /data

Bildschirmschoner sowie Standby deaktivieren

sudo cp /etc/kbd/config /etc/kbd/config_orig
sudo vi /etc/kbd/config
# screen blanking timeout.  monitor remains on, but the screen is cleared to
# range: 0-60 min (0==never)  kernels I've looked at default to 10 minutes.
# (see linux/drivers/char/console.c)
#BLANK_TIME=30
BLANK_TIME=0
 
# Powerdown time.  The console will go to DPMS Off mode POWERDOWN_TIME
# minutes _after_ blanking.  (POWERDOWN_TIME + BLANK_TIME after the last input)
#POWERDOWN_TIME=30
POWERDOWN_TIME=0

Optional: Konsoleausgaben umlenken

Bei Linux werden Fehlermeldungen von Systemaktivitaeten und die Logausgaben vom Bootstrap auf /dev/console ausgegeben. Standardmässig ist /dev/console auf dem ersten virtuellen Terminal, was auf dem RPI /dev/tty1 ist. Da es auf den meisten Linux Installationen möglich ist im Betrieb zwischen den virtuellen Terminals umzuschalten, und dann auch das erste virtuelle Terminal im Textmodus zu verwenden (z.b. bei der Fehlerdiagnose), wird häufig empfohlen, /dev/console auf ein anderes virtuelles Terminal umzulenken, so dass die logausgaben dort separat einsehbar sind.

Bei VDR Installation für den RPI ist es andererseits auch sinnvoll, diese Veränderung nicht zu machen: Ohne die folgende Veränderung sieht man beim booten alle Logausgaben: Erst Linux Kernel, dann die Bootscripten - und danach startet der VDR. Mit der Veränderung sieht man die Ausgaben der Bootscripten direkt beim booten nicht mehr weil die schon auf /dev/tty10 gehen, während noch /dev/tty1 angezeigt wird, solange der VDR nicht gestartet wurde.

Die Funktionsweise des VDR selbst ist von dieser Veränderung nicht betroffen: seine Ein/Ausgaben werden durch die Konfiguration von runvdr auf das virtuelle Terminal 9 (/dev/tty9) gelenkt - und im Betrieb angezeit. Es ist also irrelevant, ob die Konsolausgaben auf /dev/tty1 oder /dev/tty10 erfolgen.

sudo cp /boot/cmdline.txt /boot/cmdline.txt_orig
sudo vi /boot/cmdline.txt

Ändern von:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Abändern in:

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty10 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Umschalten zwischen den virtuellen Terminals:

Um später die Logausgaben auf der tty10 Konsole sehen zu können kann auf diese mit folgender Tastenkombination gewechselt werden:
STRG + ALT + F10

zur Standardkonsole tty1 kommt Ihr wieder zurück:

STRG + ALT + F1

Leider funktioniert dies wenn der VDR läuft mit rpihddevice (Stand: Version 0.0.10) nicht korrekt: Wenn man mit obigen Tastenkombinationen vom virtuellen Terminal 9 wegschaltet (auf dem der VDR läuft), dann sollte eigentlich das Videobild des VDR abgeschaltet werden. Dies ist anscheinend nicht unterstützt. Es wird also weiterhin das Videobild des VDR angezeigt, obwohl das virtuelle Terminal umgeschaltet wird. Man kann dann also nur "blind" auf einem anderen virtuellen Terminal arbeiten.

Installation VDR

Downloadverzeichnis vorbereiten

mkdir -p /data/installfiles/vdr

Installationsmedien herunterladen

cd /data/installfiles/vdr
wget ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.10.tar.bz2

pi Benutzer in die Gruppe video und audio aufnehmen

sudo adduser pi video
sudo adduser pi audio

VDR entpacken, vorbereiten und installieren

cd /usr/local/src
sudo tar -xjf /data/installfiles/vdr/vdr-2.1.10.tar.bz2 
sudo ln -s vdr-2.1.10/ vdr

Shutdownskript erstellen und ablegen

sudo vi /usr/local/bin/vdrpoweroff.sh
#!/bin/bash
sudo /sbin/poweroff

und anschließend das Skript ausführbar machen:

sudo chmod +x /usr/local/bin/vdrpoweroff.sh

Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen

Damit der Benutzer pi die benötigten Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen kann muss dies mittels visudo konfiguriert werden. Achtung! Die Einträge müssen untereinander und am Ende der Datei eingefügt werden.

sudo visudo
pi ALL=(ALL) NOPASSWD: /usr/local/bin/vdrpoweroff.sh,/sbin/poweroff

Installation starten

cd /usr/local/src/vdr
sudo make REMOTE=LIRC && sudo make install

VDR mittels runvdr starten

Das Skript runvdr wird benötigt um den VDR zu starten.

runvdr vorbereiten

sudo cp /usr/local/src/vdr/runvdr.template /usr/local/bin/runvdr

runvdr anpassen

Achtung! Die erste Zeile im Skript muss von #!/bin/sh nach #!/bin/bash angepasst werden.

sudo vi /usr/local/bin/runvdr
#!/bin/bash

# runvdr: Loads the DVB driver and runs VDR
#
# If VDR exits abnormally, the driver will be reloaded
# and VDR restarted.
#
# In order to actually use this script you need to implement
# the functions DriverLoaded(), LoadDriver() and UnloadDriver()
# and maybe adjust the VDRPRG and VDRCMD to your particular
# requirements.
#
# Since this script loads the DVB driver, it must be started
# as user 'root'. Add the option "-u username" to run VDR
# under the given user name.
#
# Any command line parameters will be passed on to the
# actual 'vdr' program.
#
# See the main source file 'vdr.c' for copyright information and
# how to reach the author.
#
# $Id: runvdr.template 3.0 2011/04/17 12:34:30 kls Exp $

export LANG=de_DE.utf8
export LC_COLLATE=de_DE.utf8
export VDR_CHARSET_OVERRIDE=ISO-8859-9

setterm -clear -cursor off > /dev/tty9; chvt 9;
VDRKONSOLE="< /dev/tty9"

VDRPRG="/usr/local/bin/vdr"

VDROPTIONS="-w 60 -u pi -c /var/lib/vdr -s /usr/local/bin/vdrpoweroff.sh"
# For other options see manpage vdr.1

VDRPLUGINS="-P rpihddevice -P streamdev-client"
# You will need to select your output device plugin if you want
# to use VDR to watch video. For instance, for a "Full Featured"
# SD DVB card that would be
# VDRPLUGINS="-P dvbsddevice"
# For a "Full Featured" HD DVB card you could use
# VDRPLUGINS="-P dvbhddevice"
# There are also other output device plugins available, see
# http://www.vdr-wiki.de/wiki/index.php/Plugins.

VDRCMD="$VDRPRG $VDRKONSOLE $VDROPTIONS $VDRPLUGINS $*"

KILL="/usr/bin/killall -q -TERM"

# Detect whether the DVB driver is already loaded
# and return 0 if it *is* loaded, 1 if not:
function DriverLoaded()
{
  return 1
}

# Load all DVB driver modules needed for your hardware:
function LoadDriver()
{
  return 0
}

# Unload all DVB driver modules loaded in LoadDriver():
function UnloadDriver()
{
  return 0
}

# Load driver if it hasn't been loaded already:
if ! DriverLoaded; then
   LoadDriver
   fi

while (true) do
      eval "$VDRCMD"
      if test $? -eq 0 -o $? -eq 2; then exit; fi
      echo "`date` reloading DVB driver"
      $KILL $VDRPRG
      sleep 10
      UnloadDriver
      LoadDriver
      echo "`date` restarting VDR"
      done

runvdr Skript ausführbar machen

sudo chmod +x /usr/local/bin/runvdr

Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen

Damit der Benutzer pi die benötigten Skripte/Module mit Root-Rechten und ohne Passwortaufforderung ausführen kann muss dies mittels visudo konfiguriert werden. Achtung! Die Einträge müssen untereinander und am Ende der Datei eingefügt werden.

sudo visudo
pi ALL=(ALL) NOPASSWD: /usr/local/bin/runvdr,/usr/local/bin/vdr,/usr/bin/killall

Optional: remote.conf erstellen

Die Konfiguration für alle "Fernbedienungen" die VDR verwendet stehen in /var/lib/vdr/remote.conf. Die Fernbedienungen die VDR verwendet, sind abhängig davon, wie VDR gestartet wird. Ohne die --no-kbd Option wird die Tastatur ("KBD") als Fernbedienung freigegeben. Mit --lirc wird LIRC ("LIRC") als Fernbedienung freigegeben. Weitere Fernbedienungen können von Plugins kommen.

Wenn VDR für eine freigegebene Fernbedienung im remote.conf nicht zumindestens die beiden Befehle "Up/Down" findet, dann bietet er am Anfang die Anlernfunktion für diese Fernbedienung an. Man muß also remote.conf nicht manuell erzeugen, sondern kann KBD und LIRC über die Oberfläche des VDR anlernen.

Es sieht so aus als ob der VDR beim Anlernen der Tasten zwei unterschiedliche Codes für jede Taste erzeugen.

Wenn man remote.conf manuell erzeugen will sollte man darauf achten, dass die Datei den Benutzer 'pi' gehört, so daß VDR die Datei beim möglichen späteren Anlernen weiterer Fernbedienungen die Datei schreiben kann. Wenn man nicht durch die Anlernfunktion vom VDR gehen will kann remote.conf für die Tastatur als Fernbedienung von der folgenden Konfiguration erzeugen. Die Menü-Taste für die nachfolgende remote.conf ist die "M" Taste der Tastatur.

Achtung!: Die folgende remote.conf hat Kommentare, die dürfen aber NICHT übernommen werden, sonst funktioniert die remote.conf im VDR nicht. Die Kommentare dienen hier nur zur Hilfe daß man weiß welche Taste welcher Funktion zugehordnet ist. VDR hat in der remote.conf noch nie Kommentare erlaubt. Entfernen, z.b. in vi:  :%s/ #.*$//

KBD.Up         00000000001B5B41 # Pfeiltaste nach oben
KBD.Down       00000000001B5B42 # Pfeiltaste nach unten
KBD.Menu       000000000000006D # Taste M
KBD.Ok         000000000000000D # Taste Return
KBD.Back       000000000000007F # Taste Backspace
KBD.Left       00000000001B5B44 # Pfeiltaste nach links
KBD.Right      00000000001B5B43 # Pfeiltaste nach rechts
KBD.Red        0000000000000072 # Taste R
KBD.Green      0000000000000067 # Taste G
KBD.Yellow     0000000000000079 # Taste Y
KBD.Blue       0000000000000062 # Taste B
KBD.0          0000000000000030 # Taste 0
KBD.1          0000000000000031 # Taste 1
KBD.2          0000000000000032 # Taste 2
KBD.3          0000000000000033 # Taste 3
KBD.4          0000000000000034 # Taste 4
KBD.5          0000000000000035 # Taste 5
KBD.6          0000000000000036 # Taste 6
KBD.7          0000000000000037 # Taste 7
KBD.8          0000000000000038 # Taste 8
KBD.9          0000000000000039 # Taste 9
KBD.Info       0000000000000069 # Taste I
KBD.Power      0000001B5B32347E # Taste F12
KBD.Channel+   000000001B5B357E # Taste Bild nach oben
KBD.Channel-   000000001B5B367E # Taste Bild nach unten
KBD.Volume+    000000000000002B # Taste + auf dem Ziffernblock
KBD.Volume-    000000000000002D # Taste - auf dem Ziffernblock
KBD.Mute       0000000000000073 # Taste S

als Beispiel eine korrekte remote.conf ohne Kommentare (so wie vom VDR erwartet):

KBD.Up         00000000001B5B41
KBD.Down       00000000001B5B42
KBD.Menu       000000000000006D
KBD.Ok         000000000000000D
KBD.Back       000000000000007F
KBD.Left       00000000001B5B44
KBD.Right      00000000001B5B43
KBD.Red        0000000000000072
KBD.Green      0000000000000067
KBD.Yellow     0000000000000079
KBD.Blue       0000000000000062
KBD.0          0000000000000030
KBD.1          0000000000000031
KBD.2          0000000000000032
KBD.3          0000000000000033
KBD.4          0000000000000034
KBD.5          0000000000000035
KBD.6          0000000000000036
KBD.7          0000000000000037
KBD.8          0000000000000038
KBD.9          0000000000000039
KBD.Info       0000000000000069
KBD.Power      0000001B5B32347E
KBD.Channel+   000000001B5B357E
KBD.Channel-   000000001B5B367E
KBD.Volume+    000000000000002B
KBD.Volume-    000000000000002D
KBD.Mute       0000000000000073

svdrphosts.conf anpassen

sudo vi /var/lib/vdr/svdrphosts.conf
# svdrphosts    This file describes a number of host addresses that
#               are allowed to connect to the SVDRP port of the Video
#               Disk Recorder (VDR) running on this system.
# Syntax:
#
# IP-Address[/Netmask]
#

127.0.0.1             # always accept localhost
#192.168.100.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!)
192.168.0.0/24        # Euer Netzwerk

VDR auf non-root vdruser umstellen

Diese Anleitung geht davon aus, dass der vdr unter dem Nutzer pi läuft. Einige Verzeichnisse müssen natürlich pi als Besitzer haben.

sudo chown -R pi.pi /var/lib/vdr /var/cache/vdr /srv/vdr/video

Optional: vdr unter dem Nutzer vdr verwenden

Dies kann Vorteile haben im Zusammenhang mit dem Server vdr. Im folgenden sind die Details kompatibel zu einer yaVdr-Installation.

sudo adduser --disabled-login --uid 666 --home /var/lib/vdr vdr
sudo adduser vdr video
sudo adduser vdr audio
sudo adduser vdr sudo

sudo mkdir -p /srv/vdr/video
sudo chown -R vdr.vdr /srv/vdr

sudo mkdir -p /var/cache/vdr
sudo chown -R vdr.vdr /var/cache/vdr

An verschiedenen anderen Stellen wie z.b. runvdr oder /etc/default/vdr muss der Nutzer auf vdr umgestellt werden.

-u pi in -u vdr

oder in /etc/default/vdr

USER=vdr

VDR in den Autostart

Hier wird die einfachste Methode für Autostart beschrieben.

sudo vi /etc/rc.local
sudo /usr/local/bin/runvdr
exit 0

Man kann auch System-V-Init oder Upstart verwenden. Dies hat gewisse Vorteile wenn man den VDR stoppen will. Upstart scheint auf dem PI noch nicht korrekt zu funktionieren (Jan 2015). Manuelles starten/stoppen mit "sudo service vdr start" hat zwar funktioniert, aber nicht während des bootens.

System-V-Init script

VDR auf Lauffähigkeit überprüfen

Achtung! Bisher kann noch kein TV Bild angezeigt werden da noch kein Ausgabedevice Plugin eingerichtet ist. Die ERROR Meldungen sind hier vorerst normal. Am besten Ihr öffnet zwei SSH Sessions, wie folgt, auf eurem Pi.

SSH Session 1

Hier wird das syslog geöffnet um die VDR Meldungen beim starten zu sehen:

tail -f /var/log/syslog

Im syslog werden bei einer raspian Standardinstallation nicht alle log Meldungen vom VDR angezeigt, stattdessen in user.log:

tail -f /var/log/user.log

SSH Session 2

Hier wird der VDR manuell gestartet:

sudo /usr/local/bin/runvdr

VDR Logausgabe

Jetzt könnt Ihr auf der "SSH Session 1" genau mitverfolgen was der VDR macht. Wenn der VDR, vorerst ohne TV Bild, ordnungsgemäß läuft sollte es so aussehen:

Aug 18 18:55:20 pi01 vdr: [10825] VDR version 2.1.6 started
Aug 18 18:55:20 pi01 vdr: [10825] switched to user 'pi'
Aug 18 18:55:20 pi01 vdr: [10825] codeset is 'UTF-8' - known
Aug 18 18:55:20 pi01 vdr: [10825] found 28 locales in /usr/local/share/locale
Aug 18 18:55:20 pi01 vdr: [10825] creating directory /var/lib/vdr/themes
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/sources.conf
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/diseqc.conf
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/scr.conf
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/channels.conf
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/svdrphosts.conf
Aug 18 18:55:20 pi01 vdr: [10825] loading /var/lib/vdr/keymacros.conf
Aug 18 18:55:20 pi01 vdr: [10825] registered source parameters for 'A - ATSC'
Aug 18 18:55:20 pi01 vdr: [10825] registered source parameters for 'C - DVB-C'
Aug 18 18:55:20 pi01 vdr: [10825] registered source parameters for 'S - DVB-S'
Aug 18 18:55:20 pi01 vdr: [10825] registered source parameters for 'T - DVB-T'
Aug 18 18:55:20 pi01 vdr: [10825] no DVB device found
Aug 18 18:55:20 pi01 vdr: [10825] ERROR: invalid primary device number: 1
Aug 18 18:55:20 pi01 vdr: [10828] epg data reader thread started (pid=10825, tid=10828, prio=high)
Aug 18 18:55:20 pi01 vdr: [10828] epg data reader thread ended (pid=10825, tid=10828)
Aug 18 18:55:20 pi01 vdr: [10827] video directory scanner thread started (pid=10825, tid=10827, prio=high)
Aug 18 18:55:20 pi01 vdr: [10827] video directory scanner thread ended (pid=10825, tid=10827)
Aug 18 18:55:20 pi01 vdr: [10825] ERROR: no primary device found - using first device!
Aug 18 18:55:20 pi01 vdr: [10825] ERROR: invalid primary device number: 1
Aug 18 18:55:20 pi01 vdr: [10826] video directory scanner thread started (pid=10825, tid=10826, prio=high)
Aug 18 18:55:20 pi01 vdr: [10826] video directory scanner thread ended (pid=10825, tid=10826)
Aug 18 18:55:20 pi01 vdr: [10825] max. latency time 0 seconds
Aug 18 18:55:20 pi01 vdr: [10825] exiting, exit code 2

Handhabung von Aufnahmen

Standardmäßig werden beim VDR Aufnahmen lokal von einer TV Empfangskarte aufgenommen und lokal auf der Festplatte gespeichert. Wenn man einen Server mit einem oder mehreren Clients aufsetzt, dann gibt es verschiedene Möglichkeiten, wie man das aufsetzen kann:

Clients sind eigenständige VDR

Jeder Client VDR ist für Aufnahmen konfiguriert wie ein eigenständiger VDR mit dem einzigen Unterschied, daß er keine lokalen TV-Empfangskarten hat, sondern zum Aufnehmen das Program genau wie bei der Livedarstellung per streamdev vom Server empfängt.

Dieser Ansatz hat folgende Probleme:

1. Man muß immer genau wissen, auf welchem client man welche Aufnahme macht, und kann sie dann auch nur dort anschauen. 2. Der Speicherplatz für Aufnahmen ist begrenzt durch die SD Kapazität des RPI, oder man muß via USB zusätzlich SD/Festplatten anschließen. 3. Der RPI muß angeschaltet sein, wenn die Aufnahme läuft. Da der RPI keine Realtime-Clock hat, die den RPI zu vordefinierten Zeiten anschalten kann, muß er durchlaufen. 4. Während der Aufnahme kann der RPI leicht überlastet sein, weil er parallel ein Programm streamen muß zur Livedarstellung, und ein anderes das aufgezeichnet wird - und das noch auf die (langsame) SD Karte schreiben muß. 5. Neben der RPI Performance kann auch alleine die Netzwerkperformance für 2 x Videoströme (gerade bei HD) ein limitierender Faktor sein, gerade wenn man PowerLine oder WLAN verwendet. 6. Wenn auf mehreren Clients dieselben Programme aufgenommen werden sollen, dann wird auch noch der VDR Server unnötig damit belastet dasselbe Programm zum mehrfachen Aufnehmen mehrfach zu streamen.

Clients mit Netzwerkverzeichnis aber lokaler Aufnahme

Man könnte den ersten Ansatz leicht verändern, indem man auf dem Client ein per NFS gemostetes Verzeichnis für die Aufnahmen einrichtet, aber die Aufnahmen weiterhin lokal laufen läßt. Damit eliminiert man aber nur Problem 2, macht Problem 5 noch größer und ändert an den anderen Problemen nicht. Außerdem muß man für jeden Client ein unterschiedliches Verzeichnis auf dem VDR Server anlegen damit sich eventuelle gleichzeitige Aufnahmen desselben Programmes nicht in die Quere kommen.

Clients mit Netzwerkverzeichnis und Server Aufnahme

Dies ist die Option auf der die restliche Beschreibung der Installation basiert. Alle Clients mounten per NFS das Aufnahmeverzeichnis des Servers. Durch die Plugins (remotetimers + Patches) wird auf dem RPI Client die GUI so geändert, daß Timer direkt auf dem Server angelegt werden. Dieser Ansatz ergibt dann folgende Vorteile:

1. Man hat auf jedem Client und dem Server denselben View auf die Aufnahmen und kann Timer auf jedem Server/Client programmieren und auf jedem anderen ansehen. 2. Der Speicherplatz ist auf dem Server und damit so groß wie man will. 3. RPIs müssen nur beim Anschauen von Programm angeschaltet sein. 4. Der RPI muß nur ein TV Programm über das Netzwerk empfangen: Entweder via streamdev ein live-programm, oder per NFS eine Aufzeichnung. Damit ist der RPI nie das Bottleneck. 5. Das Netzwerk wird ebenso so wenig wie möglich belastet. 6. Aufnahmen gelingen sicherer, weil alles lokal auf dem Server abläuft.

NFS Server - VDR System

Installation

sudo apt-get install nfs-kernel-server

lokale Verzeichnisse vorbereiten

sudo mkdir -p /srv/nfsv4/vdrrecords
sudo mount --bind /data/vdrrecords /srv/nfsv4/vdrrecords
sudo vi /etc/fstab

/data/vdrrecords	/srv/nfsv4/vdrrecords		none	bind	0	0

Kerberos Sicherheit deaktivieren

sudo vi /etc/default/nfs-kernel-server
# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD="no"

Benutzer Zuordnung

sudo vi /etc/idmapd.conf
[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
# Domain = localdomain

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

NFS Freigaben konfigurieren

Der Raspberry Pi läuft im Standard mit dem vom Betriebssystem angelegten Benutzer pi. Da auf einem VDR System meist ein anderer Benutzer verwendet wird muss sichergestellt werden das beide Systeme mit dem gleichen Benutzer auf das Verzeichnis zugreifen. Auf meinem VDR System verwende ich den Benutzer vdruser. Bei der NFS Freigabe kann dieser Benutzer über seine ID angegeben werden. Im Normalfall hat der erste angelegte Benutzer auf einem Linuxsystem die ID 1000.

sudo cat /etc/passwd

vdruser:x:1000:1000:vdruser,,,:/home/user01:/bin/bash
sudo vi /etc/exports

/srv/nfsv4              192.168.0.0/24(rw,fsid=0,secure,no_subtree_check,sync)
/srv/nfsv4/vdrrecords   192.168.0.0/24(rw,secure,no_subtree_check,sync,all_squash,anonuid=1000,anongid=1000)

Jeder berechtigte NFS Lese- oder Schreibzugriff wird jetzt automatisch auf die Benutzer ID 1000 (vdruser) gemappt, unabhängig mit welchem Benutzeraccount auf die Freigabe zugegriffen wird.

Hosts Zugrifflisten erstellen

sudo vi /etc/hosts.deny

rpcbind mountd nfsd statd lockd rquotad : ALL
sudo vi /etc/hosts.allow

rpcbind mountd nfsd statd lockd rquotad : 127.0.0.1 192.168.0.11

Neustart VDR System

sudo init 6

NFS Client - Raspberry Pi

Installation

sudo apt-get install nfs-common

Hosts Zugrifflisten erstellen

sudo vi /etc/hosts.deny

rpcbind : ALL
sudo vi /etc/hosts.allow

rpcbind : 127.0.0.1 192.168.0.10

Benutzer Zuordnung

sudo vi /etc/idmapd.conf
[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
# Domain = localdomain

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

NFS Freigaben auflisten

showmount -e 192.168.0.10

fstab anpassen

Hier wird der Pfad zu eurem VDR Aufnahmeverzeichnis angegeben sowie der lokale Dateisystempfad wo die Aufnahmen auf eurem Raspbery Pi landen sollen.

sudo vi /etc/fstab
192.168.0.10:/srv/nfsv4/vdrrecords     /srv/vdr/video     nfs     auto    0       0

Neustart Pi System

sudo init 6

Testen der NFS Verbindung

Nach einem Neustart vom System sollte auf eurem Raspberry Pi das Aufnahmeverzechnis vom VDR System per NFS eingehängt sein.

ls -l /srv/vdr/video

Optional: Server VDR per wake on LAN starten

Tool installieren.

sudo apt-get install wakeonlan

Dann in /etc/rc.local einfügen.

# wake VDR
wakeonlan <MAC-Addresse des VDR servers>

Die MAC-Addresse kann mit dem tool arp gefunden werden.

arp
Address                 HWtype  HWaddress           Flags Mask            Iface
vdr                     ether   xx:xx:xx:xx:xx:xx   C                    eth0

Linksammlung

  1. Video Disk Recorder
  2. VDR FTP-Server