Dieses HOWTO ist obsolet.
Es geht aktuell weiter bei:
[HOWTO] VDR NFS Client auf Debian 5.0 lenny mit debootstrap Installation
Vor kurzem habe ich das etwas betagte Debian etch System auf meinen diskless VDR durch
Ubuntu 8.04 mit LongTermSupport (LTS) ersetzt. Der LTS ist auch der Grund, warum ich zu
dieser Version griff und nicht zur derzeit aktuellen Ubuntu 8.10. Voraussetzung für diese Installation ist
ein funktionsfähiger Fileserver mit NFSd, DHCPd und TFTPd. Das Aufsetzen dieser Dienste wird z.B. im
alten [HOWTO] VDR Client via Netz per NFS booten (Neu: mit debootstrap Installation) beschrieben.
Für den VDR nutze ich die Pakete, welche hanno dankenswerterweise in einem Repository für Ubuntu
8.04 bereit stellt:
-
e-tobi für Ubuntu jetzt komplett: vdr-standard, vdr-multipatch, vdr-extensions für i386 und amd64
- e-tobi vdr Binaries für Ubuntu
Leider ist derzeit nicht abzusehen, ob hanno die Pakete für Ubuntu 8.04 LTS weiter pflegen wird:
Planung: e-tobi vdr Binaries & Ubuntu 8.10
Inzwischen hat hanno bekannt gegeben, dass Pakete für Ubuntu 8.04 LTS nicht mehr aktualisiert werden.
Zusätzlich wird der jeweils aktuelle vanilla Kernel von kernel.org und LIRC aus dem CVS genutzt.
Stand: 2009.01.25
Kernel linux 2.6.28
Update Kernel linux 2.6.28.2
vdr 1.6.0-6ctvdr1
lirc CVS
Inhaltsverzeichnis
SERVER: Der Client
1. Grundsystem
2. Nutzerverwaltung
3. Repositories
4. Netzwerk
5. Dateisysteme
6. Auslagerungsdatei
7. Kernel
8. chroot Ende
SERVER
9. Client-Backup
10. NFS-Freigabe
11. tftp Dämon
CLIENT
12. MOTD
13. LIRC
14. VDR
15. Kernel Update
SERVER: Der Client
Die folgenden Befehle sind, soweit nicht anders erwähnt, als User root auszuführen.
1. Grundsystem
Auf dem Server wird ein Verzeichnis für den VDR Client und ein weiteres für debootstrap eingerichtet.
Das Paket debootstrap wird ausgepackt und der Befehl usr/sbin/debootstrap installiert ein Grundsystem.
Mittels chroot wechselt man in dieses System.
# Verzeichnis für den VDR NFS Client anlegen
mkdir /netboot/nfsroot/vdr_hardy
# temporäres Verzeichnis für das aktuelle Ubuntu debootstrap Paket anlegen
mkdir /tmp/debootstrap
cd /tmp/debootstrap
# das aktuelle Ubuntu debootstrap Paket herunterladen
wget http://de.archive.ubuntu.com/ubuntu/pool/main/d/debootstrap/debootstrap_1.0.10_all.deb
# Paket entpacken
ar xv debootstrap_1.0.10_all.deb
# das Programm entpacken
tar xzf data.tar.gz
# debootstrap starten: Installation von hardy für die i386 Architektur
DEBOOTSTRAP_DIR=usr/share/debootstrap usr/sbin/debootstrap --arch i386 hardy /netboot/nfsroot/vdr_hardy/ http://de.archive.ubuntu.com/ubuntu
# in das neu installierte System wechseln
chroot /netboot/nfsroot/vdr_hardy/
Alles anzeigen
Nun werden ein paar spezielle Verzeichnisse eingebunden, die Konsole, locale und die Zeitzone eingerichtet,
die Paketverwaltung aktualisiert und einige wichtige Pakete installiert. vim läßt sich gegen den bevorzugten
Editor austauschen.
# /proc, /sys und /dev/pts mounten
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devpts devpts /dev/pts
# die Konsole einrichten
dpkg-reconfigure console-setup
# das Sprachpaket de_DE.UTF-8 einrichten
/usr/share/locales/install-language-pack de_DE.UTF-8
# de_DE.UTF-8 als Standard-Sprache festlegen
echo "LANG=\"de_DE.UTF-8\"" >> /etc/default/locale
# die Zeitzone konfigurieren
dpkg-reconfigure tzdata
# Paketlisten aktualisieren
aptitude update
# Pakete installieren
aptitude install wget debconf devscripts vim
2. Nutzerverwaltung
Jetzt erfolgt das Erstellen der Gruppe und des Nutzers vdr. Wer bereits ein Videoverzeichnis mit alten
Aufnahmen besitzt, sollte uid und gid entsprechend setzen.
#
# uid und gid ggf. anpassen
#
# addgroup --gid 242 vdr
# adduser --system --uid 242 --ingroup vdr vdr
#
# Gruppe vdr einrichten
addgroup --system vdr
# vdr als System-Nutzer mit Gruppe vdr anlegen
adduser --system --ingroup vdr vdr
Das root Passwort und der Nutzer kilroy werden eingerichtet. Damit 'kilroy' u.a. aus syslog lesen kann,
wird er in die Gruppe adm eingetragen.
# Passwort für root festlegen
passwd
# einen Nutzer einrichten
adduser kilroy
# den Nutzer in die Gruppen vdr und adm eintragen
adduser kilroy vdr
adduser kilroy adm
3. Repositories
a. Ubuntu 8.04
Als nächstes werden die Einträge für die Paketverwaltung vorgenommen und es werden die aktuellen
Updates sowie ein paar weitere Programme installiert.
# hardy Paketquellen eintragen
cp /etc/apt/sources.list /etc/apt/sources.list.bak
cat > /etc/apt/sources.list << EOF
deb http://de.archive.ubuntu.com/ubuntu/ hardy main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy main restricted
deb http://de.archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy-updates main restricted
deb http://de.archive.ubuntu.com/ubuntu/ hardy universe
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy universe
deb http://de.archive.ubuntu.com/ubuntu/ hardy-updates universe
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy-updates universe
deb http://de.archive.ubuntu.com/ubuntu/ hardy multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy multiverse
deb http://de.archive.ubuntu.com/ubuntu/ hardy-updates multiverse
deb-src http://de.archive.ubuntu.com/ubuntu/ hardy-updates multiverse
deb http://security.ubuntu.com/ubuntu hardy-security main restricted
deb-src http://security.ubuntu.com/ubuntu hardy-security main restricted
deb http://security.ubuntu.com/ubuntu hardy-security universe
deb-src http://security.ubuntu.com/ubuntu hardy-security universe
deb http://security.ubuntu.com/ubuntu hardy-security multiverse
deb http://de.archive.ubuntu.com/ubuntu/ hardy-proposed restricted main multiverse universe
deb-src http://security.ubuntu.com/ubuntu hardy-security multiverse
EOF
# Paketlisten aktualisieren und bei Erfolg die installierte Pakete aktualisieren
aptitude update && aptitude safe-upgrade
# Pakete installieren
aptitude install udev openssh-server anacron less mc portmap at ntp rsync powernowd exim4 mutt bzip2 build-essential libncurses5-dev kernel-package nfs-common cvs man-db manpages figlet
Alles anzeigen
b. VDR
# hannos Repository für vdr einrichten
cat >> /etc/apt/sources.list.d/vdr.list << EOF
# SECTION = standard | multipatch | extensions
# siehe Erklaerung im Forenartikel!
#deb http://www.hanno.de/vdr-experimental hardy base backports addons vdr-#SECTION#
deb http://www.hanno.de/vdr-experimental hardy base backports addons vdr-multipatch
EOF
# hannos vdr Pakete haben Priorität
cat >> /etc/apt/preferences << EOF
Package: *
Pin: origin www.hanno.de
Pin-Priority: 1000
EOF
c. medibuntu
# medibuntu Paketliste herunterladen
wget --quiet http://www.medibuntu.org/sources.list.d/hardy.list --output-document=/etc/apt/sources.list.d/medibuntu.list
# Paketlisten aktualisieren
aptitude update
# medibuntu Schlüsseldatei installieren
aptitude install medibuntu-keyring
# Paketlisten aktualisieren und bei Erfolg die installierte Pakete aktualisieren
aptitude update && aptitude safe-upgrade
4. Netzwerk
Diese Einträge dienen der Funktionsfähigkeit des Netzwerkes.
echo "127.0.0.1 localhost" > /etc/hosts
echo "vdr" > /etc/hostname
#
cat >> /etc/network/interfaces << EOF
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet manual
EOF
Alles anzeigen
Wer mehr als eine Netzwerkkarte nutzt, muss die Datei interfaces u.U. anpassen.
5. Dateisysteme
Die Datei /etc/fstab wird wie nachfolgend aufgeführt erstellt. Auf das Verzeichnis /video mounte ich
die Aufnahmen, welche auf dem Server liegen. /dev/loop0 dient dem Swap-Bereich.
mkdir /video
cat > /etc/fstab << EOF
#
# /etc/fstab: static file system information.
#
proc /proc proc defaults 0 0
# Root-Verzeichnis (der Vollstaendigkeit halber)
server:/netboot/nfsroot/vdr_hardy/ / nfs defaults 0 0
# loop Device fuer Swap-Datei
/dev/loop0 none swap sw,noauto 0 0
# temporaere Verzeichnisse
none /tmp tmpfs defaults 0 0
none /var/run tmpfs defaults 0 0
none /var/lock tmpfs defaults 0 0
none /var/tmp tmpfs defaults 0 0
# Video-Verzeichnis
server:/video /video nfs defaults 0 0
EOF
Alles anzeigen
6. Auslagerungsdatei
Mittels der nächsten Befehlsfolge wird eine Swap-Datei eingerichtet, welche per loop-Device eingehängt wird.
dd if=/dev/zero of=/var/swap bs=1M count=128
chmod 600 /var/swap
mkswap /var/swap
#
chmod 755 /etc/rc.local
sed -i 's/^exit 0//' /etc/rc.local
cat >> /etc/rc.local << EOF
losetup /dev/loop0 /var/swap
swapon /dev/loop0
exit 0
EOF
Alles anzeigen
7. Kernel
Im nächsten Schritt wird der derzeit aktuelle vanilla Kernel heruntergeladen, ggf. für AMD Geode NX 1750
gepatcht, übersetzt und installiert. Die verwendete .config sollte man nicht ungeprüft übernehmen.
cd /usr/src/
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.tar.bz2
# wget http://www.on-luebeck.de/kilroy/ubuntu_hardy_howto/powernow-k7-manual-2.6.27_enev_kilroy.patch.gz # notwendig für AMD Geode NX 1750
tar xjf linux-2.6.28.tar.bz2
ln -s linux-2.6.28 linux
cd linux
# zcat ../powernow-k7-manual-2.6.28_enev_kilroy.patch.gz | patch -b -p0 # notwendig für AMD Geode NX 1750
# echo "powernow_k7 overwrite_table=1 fsb=100000 multiplier=50,60,70,80,90,105" >> /etc/modules
make menuconfig # ich kompiliere i.A. alles Notwendige bis auf die DVB, powernow und lirc Treiber fest in den Kernel
# wget http://www.on-luebeck.de/kilroy/ubuntu_hardy_howto/config-2.6.27.zaphod -O .config # Achtung! Diese .config ist speziell für meinen diskless VDR und sollte nicht ungeprüft übernommen werden
# make oldconfig
make
make modules_install install
Alles anzeigen
a. DVB-Karten-Module
Ich lade die Module für die DVB Karten in einer vorgegebenen Reihenfolge.
# Module nicht automatisch laden, damit die Reihenfolge selbst festgelegt werden kann.
# Bitte an die eigene Hardware anpassen! Ggf. kann dieser Schritt auch übersprungen werden (z.B. bei Einkartensystemen).
# dvb_ttpci: driver for the SAA7146 based AV110 PCI DVB cards by Siemens, Technotrend, Hauppauge
# budget_c: driver for the SAA7146 based so-called budget PCI DVB cards w/ CI-module produced by Siemens, Technotrend, Hauppauge
# b2c2_flexcop_pci: Technisat/B2C2 FlexCop II/IIb/III Digital TV PCI Driver
# bttv: bttv - v4l/v4l2 driver module for bt848/878 based cards
# dvb-bt8xx: Bt8xx based DVB adapter driver
# bt878: dito.
for i in dvb_ttpci \
budget_ci \
b2c2_flexcop_pci \
bttv \
dvb-bt8xx \
bt878 \
; do
echo "blacklist $i" >> /etc/modprobe.d/blacklist
echo $i | grep -v "bt878\|dvb-bt8xx" >> /etc/modules
done
Alles anzeigen
b. DVB-Karten-Firmware
Jetzt wird die benötigte Firmware für die FujitsuSiemens FF DVB-Karte geladen. Andere DVB-Karten
benötigen ggf. weitere Firmware-Dateien.
#
# Firmware für DVB Karte(n) holen
# Beispiel für FF Karten mit AV7110
#
cd /lib/firmware/
#vdr:/lib/firmware#
wget http://www.linuxtv.org/downloads/firmware/dvb-ttpci-01.fw-2622
ln -s dvb-ttpci-01.fw-2622 dvb-ttpci-01.fw
Alles anzeigen
8. chroot Ende
Jetzt die chroot Umgebung verlassen.
SERVER
9. Client-Backup
10. NFS-Freigabe
Auf dem Server muss das root Verzeichnis für den VDR per nfs freigegeben werden.
echo "/netboot/nfsroot/vdr_hardy 172.17.42.0/255.255.255.0(rw,no_root_squash,no_all_squash,sync,no_subtree_check)" >> /etc/exports
/etc/init.d/nfs-kernel-server reload
11. tftp Dämon
Es folgen die Einträge für die PXELINUX Konfigurationsdatei.
cp /netboot/nfsroot/vdr_hardy/boot/vmlinuz-2.6.28 /var/lib/tftpboot/vmlinuz-2.6.28-vdr_hardy
#
cd /var/lib/tftpboot/pxelinux.cfg/
vi 01-00-11-22-33-44-55-hardy # MAC Beispiel: 00:11:22:33:44:55
ln -s 01-00-11-22-33-44-55-hardy 01-00-11-22-33-44-55
#
cat 01-00-11-22-33-44-55
# kilroy
LABEL linux
# Kernel muß im tftp Verzeichnis liegen
# server:~# ls /var/lib/tftpboot/
KERNEL vmlinuz-2.6.28-vdr_hardy
APPEND root=/dev/nfs nfsroot=172.17.42.1:/netboot/nfsroot/vdr_hardy,v3,rsize=65536,wsize=65536
IPAPPEND 1
Alles anzeigen
Zu diesem Zeitpubkt sollte man den VDR mit dem tatsächlich dafür vorgesehenen Computer starten.
Für "Trockentests" kann das System auch mit VMware oder VirtualBox gestartet werden.
CLIENT
Auf dem gestarteten VDR Client sollte man sich nun anmelden und zum User root wechseln.
12. MOTD
cat > /etc/motd.tail << EOF
Willkommen auf dem
EOF
figlet -f big VDR >> /etc/motd.tail
uname -snrvm > /var/run/motd && [ -f /etc/motd.tail ] && cat /etc/motd.tail >> /var/run/motd
13. LIRC
LIRC aus dem Repository installieren.
Für einen seriellen Home-brew Empfänger an der ersten seriellen Schnittstelle folgendes auswählen:
- remote configuratio: Home-brew (16x50 UART compatible serial port)
- IR transmitter: None
- serial device: /dev/ttyS0
Da ein aktueller vanilla Kernel genutzt wird, werden die Module aus dem LIRC CVS benötigt.
LIRC aus dem CVS herunterladen.
cvs -z8 -d:pserver:anonymous@lirc.cvs.sourceforge.net:/cvsroot/lirc co lirc
cd lirc
./autogen.sh
Konfigurieren, übersetzen und installieren.
./setup.sh
# 1 Driver configuration
# 2 Software configuration
# 3 Save configuration & run configure
make
make install
Die Fernbedienung auswählen.
cp remotes/logitech/lircd.conf.logitech /etc/lirc/lircd.conf # Beispiel
#wget -q http://www.on-luebeck.de/kilroy/debian_etch_howto/lircd.conf.harmony-655 -O /etc/lirc/lircd.conf
LIRC starten.
LIRC mittels irw testen.
Wenn alles korrekt arbeitet, sieht die Ausgabe in etwa wie folgt aus.
00000000a0a020df 00 1 lircd.conf
00000000a0a020df 01 1 lircd.conf
00000000a0a0a05f 00 2 lircd.conf
00000000a0a0a05f 01 2 lircd.conf
00000000a0a0609f 00 3 lircd.conf
00000000a0a0609f 01 3 lircd.conf
00000000a0a010ef 00 4 lircd.conf
00000000a0a010ef 01 4 lircd.conf
00000000a0a03ac5 00 OK lircd.conf
00000000a0a03ac5 01 OK lircd.conf
14. VDR
VDR Pakete installieren. Beispiel:
aptitude install vdr vdr-plugin-burn vdr-plugin-cinebars vdr-plugin-dvd vdr-plugin-dvdswitch vdr-plugin-epgsearch vdr-plugin-graphlcd vdr-plugin-streamdev-server vdr-plugin-sudoku vdr-plugin-vbox
Als nächstes ist ggf. eine passende channels.conf nach /var/lib/vdr/channels.conf zu kopieren.
Beispiel für DVB-C Nutzer:
/etc/init.d/vdr stop
zcat /usr/share/doc/vdr/examples/channels.conf.cable.gz > /var/lib/vdr/channels.conf
/etc/init.d/vdr start
An dieser Stelle kann man VDR noch etwas an die eigenen Bedürfnisse anpassen.
/etc/init.d/vdr stop
cat >> /etc/default/vdr << EOF
VDR_CHARSET_OVERRIDE=ISO-8859-15
VDR_LANG=de_DE.UTF-8
KEYB_TTY=""
VIDEO_DIR="/video"
EOF
/etc/init.d/vdr restart
Alles anzeigen
Wer seine Fernbedienung bereits angelernt hat, kann seine alte remote.conf nutzen.
/etc/init.d/vdr stop
wget -q http://www.on-luebeck.de/kilroy/debian_etch_howto/remote.conf.harmony-655 -O /var/lib/vdr/remote.conf
chown vdr.vdr /var/lib/vdr/remote.conf
/etc/init.d/vdr start
a. vdr-plugin-burn
Wenn kein DVD laufwerk im VDR vorhanden ist, benötigt das burn Plugin ein Ziel-Verzeichnis.
Beispiel:
b. vdr-plugin-dvd
Wenn kein DVD laufwerk im VDR vorhanden ist, sollte folgende Änderung vorgenommen werden.
c. vdr-plugin-graphlcd
Für das graphlcd Plugin muß VDR auf die parallele Schnittstelle zugreifen dürfen.
Es wird eine zum LCD passende graphlcd.conf benötigt.
Wenn man nur ein LCD in der graphlcd.conf konfiguriert hat, ist folgende Änderung notwendig.
Ansosnten ist simlcd entsprechend zu ersetzen.
cat /etc/vdr/plugins/plugin.graphlcd.conf
-c /etc/graphlcd.conf -d simlcd
sed -i 's/ -d simlcd//' /etc/vdr/plugins/plugin.graphlcd.conf
cat /etc/vdr/plugins/plugin.graphlcd.conf
-c /etc/graphlcd.conf
Nach einer Änderung an einer Plugin-Konfiguration muß der VDR neu gestartet werden.
15. Kernel Update
Bei einem Kernel Update müssen sowohl der Kernel als auch LIRC neu übersetzt werden.
a. Kernel
Der Kernel kann auf dem meist performanterem Server übersetzt werden.
# auf dem Server in das VDR System wechseln
chroot /netboot/nfsroot/vdr_hardy/
# Updates einspielen
aptitude update && aptitude safe-upgrade
# in das Verzeichnis /usr/src wechseln
cd /usr/src/
# Kernel herunterladen
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.28.2.tar.bz2
# sollten sich mit der Zeit einige ältere Kernel-Versionen angesammelt haben, kann man diese löschen
# im Beispiel wird 2.6.27.8 gelöscht:
#rm /usr/src/linux-2.6.27.8.tar.bz2
#rm -rf /usr/src/linux-2.6.27.8/
#rm -rf /lib/modules/2.6.27.8/
#rm /boot/*2.6.27.8*
# Kernel-Archiv entpacken
tar xjf linux-2.6.28.2.tar.bz2
# Link auf alten Kernel entfernen...
rm linux
# ... und auf den neuen Kernel setzen
ln -s linux-2.6.28.2 linux
# in das Kernel-Verzeichnis wechseln
cd linux
# zcat ../powernow-k7-manual-2.6.28_enev_kilroy.patch.gz | patch -b -p0 # notwendig für AMD Geode NX 1750
# die alte Kernel-Konfiguration übernehmen
cp /boot/config-2.6.28 .config
# neue Kernel-Einstellungen abfragen
make oldconfig
# Kernel übersetzen
make
# Module und Kernel installieren
make modules_install install
# VDR System verlassen
exit
Alles anzeigen
Nach dem Verlassen der chroot Umgebung mittels exit wird der neue Kernel in die PXELINUX
Konfigurationsdatei eingetragen.
cp /netboot/nfsroot/vdr_hardy/boot/vmlinuz-2.6.28.2 /var/lib/tftpboot/vmlinuz-2.6.28.2-vdr_hardy
cd /var/lib/tftpboot/pxelinux.cfg/
vi 01-00-11-22-33-44-55-hardy # MAC Beispiel: 00:11:22:33:44:55
#
cat 01-00-11-22-33-44-55
# kilroy
LABEL linux
# Kernel muß im tftp Verzeichnis liegen
# server:~# ls /var/lib/tftpboot/
KERNEL vmlinuz-2.6.28.2-vdr_hardy
APPEND root=/dev/nfs nfsroot=172.17.42.1:/netboot/nfsroot/vdr_hardy,v3,rsize=65536,wsize=65536
IPAPPEND 1
Alles anzeigen
Jetzt muß der VDR CLient Rechner neu gestartet werden. Es wird mit dem neuen
Kernel gestartet.
b. LIRC
Auf dem neu gestarten VDR Rechner wird nun LIRC neu übersetzt.
uname -a
Linux vdr 2.6.28.2 #1 Sun Jan 25 10:12:42 CET 2009 i686 GNU/Linux
cd /usr/local/src/lirc/
cvs update
make distclean
./setup.sh
# 1 Driver configuration
# 2 Software configuration
# 3 Save configuration & run configure
make
make install
modprobe lirc_serial && chmod 666 /dev/lircd && /etc/init.d/vdr restart
# reboot
Alles anzeigen
Ich habe hier eine Kopie des Systems (Kernel 2.6.28.1) hinterlegt.
Achtung: Der übersetzte Kernel ist nicht universell einsetzbar und muss ggf. angepasst werden.