Schlagwort: Debian

VDR mit Debian

· · · 2 Kommentare

Der Video Disk Recorder (VDR) ist eine feine Sache: einfach eine digitale TV-Karte (entweder C/S oder T) in einen antiquierten PC einbauen und schon steht für wenig Geld ein vollwertiger digitaler Videorekorder zur Verfügung.

Neben speziellen VDR-Distributionen wie z.B. dem c'tVDR eignet sich fast jede Linux-Distribution als Basis. Dieser Artikel beschäftigt sich mit der Installation eines "normalen" SD-VDR auf Basis von Debian Wheezy.

Als Blaupause für die Basisinstallation dienten die Artikel von Tobias Grimm und Martin Selbald, wobei einige Hard- und Software-spezifische Besonderheiten eigene Lösungen benötigten. Die erste  (nicht veröffentlichte) Fassung dieses Beitrags basierte auf der Installation eines No-Name-Rechners, die aktuelle Fassung wurde für die Installation auf einen DELL Precision T3400 überarbeitet. Eine wesentliche Änderung hierbei war der Umstieg von NVRAM-Wakeup auf ACPI Wakeup.

Dieser Beitrag erhebt keinen Anspruch auf Vollständigkeit, sondern dient der Dokumentation der durchgeführten Schritte.

Installation des Grundsystems

Zur Installation des Grundsystems wird das NetInst-Image verwendet, welches in rund 280MB nur die nötigsten Pakete zur Installation mitbringt. Alle weiteren Pakete werden im Verlauf der Installation direkt aus dem Internet geladen.

Zum Betrieb des VDR muß lediglich ein Grundsystem installiert werden, d.h. bei der Software-Auswahl kann alles außer den Standard-Systemwerkzeugen abgewählt werden.

Installation SSH

Um komfortabler auf den VDR zugreifen zu können, sollte als erster Schritt der OpenSSH-Server installiert werden

apt-get install openssh-server

so daß anschließend eine Verbindung mit z.B. PuTTY möglich ist.

Installation X-Server

Zur Ausgabe des Fernsehbildes direkt am angeschlossenen Monitor wird als nächstes der X-Server sowie der leichtgewichtige Fenstermanager Fluxbox zusammen mit einigen weiteren Paketen installiert.

apt-get install less alsa-utils xterm xorg nodm x11-xserver-utils ffmpeg fluxbox

Theoretisch kann auch eine direkte Ausgabe des Bildes ohne Umweg über den Windowmanager erfolgen, dies hatte ab und an aber den unschönen Nebeneffekt, daß ein Absturz der Bildschirmausgabe auch gleich den X-Server mitriss.

Damit der X-Server jedesmal direkt bei Hochfahren gestartet wird, ist in der Datei "/etc/default/nodm" der Wert

NODM_ENABLED=true

zu setzen, bevor mit einem anschließenden

service nodm start

der X-Server manuell gestartet werden kann.

Installation VDR

Der VDR wird ebenfalls mit Debian Bordmitteln installiert. Während der Installation mittels

apt-get install vdr vdr-plugin-xineliboutput vdr-plugin-remote xineliboutput-sxfe

kann entweder das Standard-Videoverzeichnis "/var/lib/video.00" direkt angelegt werden oder später durch setzen der Variable "VIDEO_DIR"  in der Datei "/etc/default/vdr" auf ein beliebiges Verzeichnis verwiesen werden.

Anschließend sollte die Beispiel-Tastaturkonfiguration kopiert werden, damit der VDR auch standardmäßig über die Tastatur bedienbar ist.

cp /usr/share/doc/vdr-plugin-xineliboutput/examples/remote.conf.example /var/lib/vdr/remote.conf
chown vdr:vdr /var/lib/vdr/remote.conf

Damit VDR überhaupt startet, müssen in der Datei "/etc/default/vdr" mehrere Werte gesetzt bzw. geändert werden

ENABLED=1
ENABLE_SHUTDOWN=1

bevor als letzter Schritt der Installation eine aktuelle Kanalliste aus dem VDR-Wiki an die entsprechende Stelle "/var/lib/vdr/channels.conf" kopiert wird.

Alternativ hierzu kann die Aktualisierung der Kanalliste auch nach Installation von w-scan bei gestopptem VDR selbst durchgeführt werden:

apt-get install w-scan
sudo -u vdr sh -c "w_scan -o 7 -f s -s S19E2 > /var/lib/vdr/channels.conf"

Ist dies erledigt, kann der VDR mittels

service vdr start

gestaret und die erfolgreiche Installation durch Eingabe von

vdr-sxfe

überprüft werden.

Damit die Ausgabe bei Systemstart ebenfalls automatisch startet, ist in der Datei "/root/.fluxbox/startup" der Eintrag

vdr-sxfe --fullscreen &

vor der Zeile "exec fluxbox" einzuzufügen.

Installation Samba

Sollen neben dem VDR auch noch andere (z.B. Windows-Clients) auf die aufgezeichneten Dateien zugreifen, so empfiehlt sich die Installation von Samba, welche mittels

apt-get install samba

durchgeführt wird. Anschließend ist die Datei "/etc/samba/smb.conf" so anzupassen, daß eine Freigabe des Verzeichnisses "/var/lib/video.00" z.B. unter dem Freigabenamen "video" erfolgt:

security = share
[video]
comment = video share
path = /var/lib/video.00
public = yes
writable = yes
guest ok = yes
browsable = yes
guest account = vdr
force user = vdr

Die hier verwendete Konfiguration räumt beim Zugriff auf die Freigabe maximale Rechte ein: jeder darf sich ohne Benutzer und Kennwort verbinden und z.B. nach dem Abspielen einer Aufnahme diese auch löschen.

Rechte für Benutzer "vdr" anpassen

Damit der Benutzer vdr (also der Eigentümer des VDR) bestimmte Aktionen durchführen darf, ist es notwendig, ihm mit entsprechenden Rechten auf die hierfür benötigten Dateien auszustatten. Nach der Installation von "sudo" mittels

apt-get install sudo

ist der Datei "/etc/sudoers" folgende Zeile hinzuzufügen:

vdr	ALL=(ALL) NOPASSWD: /sbin/shutdown, /usr/sbin/grub-set-default, /usr/bin/smbstatus

Fernbedienung

Bevor die Fernbedienung in Betrieb genommen werden kann, muß das entsprechende Linux-Device ermittelt werden. Der Aufruf von

cat /proc/bus/input/devices

gibt eine Liste aller Devices aus, das gesuchte ist in diesem Fall der IR-Empfänger der Nova-S-Plus:

I: Bus=0001 Vendor=0070 Product=9202 Version=0001
 N: Name="cx88 IR (Hauppauge Nova-S-Plus "
 P: Phys=pci-0000:05:04.0/ir0
 S: Sysfs=/devices/pci0000:00/0000:00:1e.0/0000:05:04.0/rc/rc0/input6
 U: Uniq=
 H: Handlers=kbd event6
 B: PROP=0
 B: EV=100013
 B: KEY=10afc312 2142017 0 0 0 0 118000 41a8 4801 9e16c0 0 0 10000ffc
 B: MSC=10

Das Kommanto "udevadm" liefert unter Angabe des Device-Namens nähere Informationen:

udevadm info --query=path --name=/dev/input/event6

von denen aktuell nur das zugeordnete Event bzw. dessen Pfad

/devices/pci0000:00/0000:00:1e.0/0000:05:04.0/rc/rc0/input6/event6

interessiert. Der so ermittlete Pfad wird dann nochmals mit "udevadm" genauer untersucht und ein

udevadm info --attribute-walk --path=/devices/pci0000:00/0000:00:1e.0/0000:05:04.0/rc/rc0/input6/event6

liefert den Block

looking at parent device '/devices/pci0000:00/0000:00:1e.0/0000:05:04.0/rc/rc0/input6':
 KERNELS=="input6"
 SUBSYSTEMS=="input"
 DRIVERS==""
 ATTRS{name}=="cx88 IR (Hauppauge Nova-S-Plus "
 ATTRS{phys}=="pci-0000:05:04.0/ir0"
 ATTRS{uniq}==""
 ATTRS{properties}=="0"

Dieser beinhaltet letztendlich alle Informationen, die zum Erzeugen der Datei "/etc/udev/rules.d/70-remote-device.rules" benötigt werden.

KERNELS=="input*", ATTRS{name}=="cx88 IR (Hauppauge Nova-S-Plus ", SYMLINK+="input/ir"

Mit Hilfe dieses Eintrags wird automatisch das Device "/dev/input/ir" erzeugt, das für den vdr in der Datei "/etc/vdr/plugins/plugin.remote.conf" verwendet werden kann:

-i /dev/input/ir

Einbinden der Daten-Platte

Bevor die Daten-Platte benutzt werden kann, muß sie erstmal partitioniert und formatiert werden was die Kombination aus

cfdisk /dev/sdb
mkfs.ext4 /dev/sdb1

erledigt.

Während "früher" die einzelnen Datenpartitionen anhand ihres Device-Namens eingebunden wurden, wird neuerdings die UUID verwendet. Dies hat den Vorteil, daß im Falle des Hinzufügens (oder Entfernens) von Festplatten keinerlei Änderungen gemacht werden müssen, da die UUID gerätespezifisch ist.

Die jeweilige UUID kann mittels des Befehls "blkid" ermittelt werden, die Syntax ist

blkid /dev/sdb1

und ergibt eine Zeile wie

/dev/sdb1: UUID="6fa2d468-8b82-4a68-8aef-0f94c58a3fe2" TYPE="ext4"

Die so ermittelte UUID wird dann in die Datei "/etc/fstab" eintragen

UUID=6fa2d468-8b82-4a68-8aef-0f94c58a3fe2 /var/lib/video.00     ext4    defaults        0       2

so daß beim Systemstart die Partition unter dem Pfad "/var/lib/video.00" eingebunden wird.

Anschließend muß nur noch dem Benutzer vdr über ein

chown vdr:vdr /var/lib/video.00/

die volle Berechtigung über die Datenplatte überantwortet werden.

VDR am Abschalten hindern

Standardmäßig schaltet sich der VDR nach einer frei definierbaren Zeit der Inaktivität aus. Dieses grundsätzlich sehr löbliche Verhalten führt allerdings zu Ärger, falls zu diesem Zeitpunkt gerade ein Benutzer aktiv die Samba-Freigaben verwendet.

Ein Lösungsansatz wurde von der Zeitschrift c't vorgestellt - ein Skript das als zusätzlicher Shutdown-Hook "S90.samba" im Verzeichnis "/usr/share/vdr/shutdown-hooks" überprüft, ob zum Zeitpunkt des Herunterfahrens aktive Verbindungen bestehen und das Herunterfahren in diesem Fall abbricht.

#! /bin/sh
# aktive Samba-Verbindung checken
 # c't 14/10 Seite 155
 #
 # apt-get install sudo
 #   In sudoers zusätzlich eingetragen:
 #vdr     ALL=(ALL) NOPASSWD: /usr/bin/smbstatus
/usr/bin/sudo -u vdr /usr/bin/smbstatus 2> /dev/null | /bin/grep -i deny > /tmp/samba.tmp
 if [ $? -eq 0 ] ; then
 # warte 5 Minuten
 echo "ABORT_MESSAGE=\"Samba-User aktiv, 5 Minuten warten\""
 echo "TRY_AGAIN=5"
 EXITSTATUS=1
 else
 EXITSTATUS=0
 echo "ABORT_MESSAGE=\"Kein Samba-User aktiv\""
 fi
 exit $EXITSTATUS

Automatisches Aufwachen

Idealerweise sollte der abgeschaltete VDR zu vorher programmierten Aufnahmezeitpunkten wieder von selbst aufwachen. Während beim usprünglich verwendeten Board M7VKD noch NVRAM-Wakeup in Kombination mit einem angepassten GRUB-Menü zum Einsatz kam, beherrscht der T3400 moderne Methoden, was den Aufwand dank ACPI Wakeup deutlich reduziert.

Als erstes sollte sichergestellt werden, daß die Uhr des VDR richtig läuft und ggf. korrigiert wird. Dies kann entweder über den VDR selbst oder über NTP erledigt werden.

apt-get install ntp

Nach der Installation sollte in "/etc/adjtime" noch sichergestellt werden, daß die Systemuhr auf UCT läuft.

Das für ACPI Wakeup benötigte VDR-Addon ist nicht in den Standard-Debian-Quellen vorhanden, findet sich aber im e-tobi-Repository, das vom oben bereits erwähnten Tobias Grimm freundlicherweise zur Verfügung gestellt wird.

Statt der Einbindung des Repositories kann das Paket "vdr-addon-acpiwakeup_0.0.11_all.deb" auch vom Server http://e-tobi.net/vdr-experimental/pool-squeeze/binary/addons/ manuell heruntergeladen und anschließend installiert werden:

dpkg --install vdr-addon-acpiwakeup_0.0.11_all.deb

Auch hier sind noch zwei kleine Änderungen an der mitgelieferten Konfigurationsdatei "vi /etc/vdr/vdr-addon-acpiwakeup.conf" notwendig:

ACPI_ENABLED auf "yes" ändern und "ACPI_REGULAR_TIME" auskommentieren.

Abschluss

Zum Abschluss der Konfigurationsarbeiten kann ein

dpkg-reconfigure vdr

durchgeführt werden, das sich Debian-seitig um das Setzen der korrekten Rechte etc kümmert.


Linux-DHCP-Client erzeugt keinen AD-DNS-Eintrag

· · · 0 Kommentare

Verbindet sich ein Windows-Client mit einem Microsoft 2003/2008/2008 R2 DHCP-Server, so wird im Normalfall auch im DNS für diesen Client ein entsprechender Eintrag erstellt. Bei Linux-Clients erfolgt zwar die Zuteilung einer IP-Adresse mitsamt Eintrag im DHCP, der Eintrag im DNS fehlt hingegen.

Den entscheidenden Hinweis liefert das Dokument #816592 "How to configure DNS dynamic updates in Windows Server 2003" der der Microsoft Knowledge Base im Abschnitt "How DHCP/DNS update interaction works":

You can use the DHCP server to register and update the PTR and A resource records on behalf of the server's DHCP-enabled clients. When you do this, you must use an additional DHCP option, the Client FQDN option (option 81). This option lets the client send its FQDN to the DHCP server in the DHCPREQUEST packet. This enables the client to notify the DHCP server as to the service level it requires.

Um die zusätzliche Option unter Debian zu setzen genügt es, in der Datei "/etc/dhcp/dhclient.conf" die Zeile

send fqdn.fqdn = gethostname();

einzufügen. Bei der nächsten Anmeldung am DHCP-Server wird auch ein DNS-Eintrag erzeugt.


DD-WRT, Linux und die Namensauflösung

· · · 0 Kommentare

Während sich Windows-Clients standardmäßig beim DHCP-Server von DD-WRT mit Namen anmelden, ist auf der Statusseite des Routers bei Linux-Maschinen im Normalfall nur ein "*" statt des Rechnernamens zu sehen.

ddwrt_debian

Abhilfe schafft ein Eintrag in der Datei "/etc/dhcp/dhclient.conf" in Form von

send host-name "HOSTNAMEHERE";

nach dem sich auch ein Linux-Rechner mit Namen beim DD-WRT DHCP-Server meldet.


Java meldet "Das Netzwerk ist nicht erreichbar"

Ein aus dem "non-free" repository nachinstalliertes SUN Java Runtime Environment lief bis auf eine ärgerliche Ausname wie gewünscht: bei jedem Versuch der Netzwerk-Kommunikation scheiterte Java mit der Fehlermeldung "Das Netzwerk ist nicht erreichbar", obwohl alle anderen Applikationen wie erwartet kommunizieren durften.

Die Behebung des Fehlers findet sich in einem Artikel auf debianforum.de - in der Datei "/etc/sysctl.d/bindv6only.conf" ist die Konfigurationseinstellung

net.ipv6.bindv6only

vom standardmäßigen Wert "1" auf "0" zu ändern, dann kommuniziert auch Java.


SUN JRE unter Debian

Wenn man unter Debian das Paket "sun-java6-jre" installiert hat, meldet sich anschließend nach einem "java --version" immer noch

java version "1.5.0"
gij (GNU libgcj) version 4.3.2

Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

statt dem eigentlich erwarteten JRE. Damit das funktioniert, hilft ein

update-alternatives --config java

mit dessen Hilfe man die Möglichkeit hat, die gewünschte Java-Installation zu wählen. Anschließend spuckt "java -version" das gewünschte

java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06)
Java HotSpot(TM) Server VM (build 10.0-b23, mixed mode)

aus.