Gentoo HD-vdr experimentel

Aus VDR Wiki
Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Beschreibung

Autor: Alexander Richter - 21.04.2008

Ich stelle hier eine Variante der Installation vor, die in einem Working System 64 Bit ( gentoo ) ein chroot erstellt, in dem die aktuellen Entwicklervarianten von ffmpeg xine-lib, xine-ui und vdr laufen können, ohne die Main Installation zu gefährden.

Der zusätzliche Platzaufwand beläuft sich auf rund 2 Gbyte. Backups des ganzen chroot-Umgebung sind ebenfalls möglich, was bei einer misslungenen Installation komfortabel ist.

WRITE TODO

- lokales overlay im chroot anlegen
- im lokalen Overlay ffmpeg bauen
- im lokalen Overlay xine-lib bauen
- im lokalen Overlay xine-ui bauen
- im lokalen Overlay plugins bauen
- im lokalen Overlay patches einbinden

Entwicklungsumgebung Hardware

- Amd Phenom 9500 auf Asrock AliveNF7G-Hdready
- 1x TT S3200
- 4 Gig Ram
- 24" Zoll Acer via 7050 Chipsatz des Boards

Entwicklungsumgebung Software

- Gentoo 2007.1, kernel 2.6.24-gentoo-r4, x86_64

make.conf :

CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=k8 -O3 -pipe"
ACCEPT_KEYWORDS="amd64"
MAKEOPTS="-j5
LINGUAS="de"
USE="X gtk alsa 3dnow a52 aac acl acpi aim ao apm arts \
audiofile bash-completion bcmath berkdb bindist bzip2 caps cdb cddb \
cdinstall cdparanoia cdr cgi crypt curl dbase dbm dbus dga dirctfb \
dri dts dv dvb dvd dvdr dvdread encode esd evo exif fam fastcgi fbcon \
ffmpeg firefox flac ftp gd gdbm gif gimp gphoto2 gstreamer hal \
icq ieee1394 imagemagick imap imlib innodb ipv6 jabber jack java \
javascript jbig jingle jpeg jpeg2k kde kdexdeltas ladspa lame lesstif \
libnotify libsamplerate libwww lirc lm_sensors lzo mad matroska mime \
mmap mmx mng mjpeg motif mozilla mp3 mpeg mplayer msql multilib musepack \
mysql ncurses networkmanager nls nntp nptl nsplugin nvidia ogg openal \
opengl osc oss pcre pdf perl png posix postgres python qt3 qt4 quicktime \
raw readline rss scanner sdl smartcard sndfile slang sockets socks5 \
sox sqlite sqlite3 sse sse2 sse3 ssl subversion suid svg svga symlink \
tcl tcpd theora threads tiff tk truetype unicode usb v4l v4l2 vcd \
vorbis wavpack win32codecs wmf wxwindows x264 xcomposite xine xinetd xml \
xpm xv xvid zlib"

Einrichten einer amd64-chroot Umgebung

amd64-chroot Umgebung Vorbereitung und Betreten

- Verzeichnis anlegen, hineinwechseln : mkdir /vdr cd /vdr

- Stage entpacken : tar xfjpv stage3-amd64-2008.0_beta1.tar.bz2

- Portage tree entpacken tar xvjf portage-latest.tar.bz2 -C /vdr/usr


- mounten der benötigten Verzeichnisse ins chroot (Pfade zum chroot anpassen !)

#!/bin/bash
echo "mounting vs"
mount -o bind /dev /vdr/dev 
mount -o bind /dev/pts /vdr/dev/pts
mount -o bind /dev/shm /vdr/dev/shm
mount -o bind /proc /vdr/proc
mount -o bind /proc/bus/usb /vdr/proc/bus/usb
mount -o bind /sys /vdr/sys
mount -o bind /tmp /vdr/tmp
mount -o bind /usr/portage/distfiles /vdr/usr/portage/distfiles
# optional weitere
#mount -o bind /video /vdr/video
#mount -o bind /home/alex/mpeg2avi/ /vdr/home/alex/mpeg2avi/
#mount -o bind /home/alex/.vdrtransxvid/ /vdr/home/alex/.vdrtransxvid/
#mount -o bind /dev/sdb1/ /vdr/archiv/

- Xserver Zugang für Programme aus dem chroot ( hier xine )

$ xhost local:localhost 

- chroot

$ chroot /vdr

- im chroot System - Vorbereitung

env-update
source /etc/profile
export PS1="(chroot) $PS1"
- emerge --sync
- emerge --update world --deep
- emerge gentoo-sources ( selben Kernel wie außerhalb des chroot auswählen, wir wollen uns unseren eigenen DVB Treiber bauen, die müssen also zum "Außen" Kernel passen )

s2-liplianin DVB Treiber im amd64-chroot per Hand installieren

cd /usr/local/src
hg clone http://mercurial.intuxication.org/hg/s2-liplianin/
cd s2-liplianin
cd linux/include/linux
ln -s /usr/src/linux-headers-`uname -r`/include/linux/compiler.h ./
cd ../../../
make
make install
depmod -a

Alternativ Multiproto DVB Treiber im amd64-chroot per Hand installieren

( im chroot )

mkdir -p /data/installfiles/dvb
cd /data/installfiles/dvb

wenn noch nicht vorhanden

emerge mercurial 
hg clone http://jusst.de/hg/multiproto_plus
mv multiproto_plus/ dvb-multiproto_plus-cvs-17-04-2008
mkdir -p /usr/local/src/dvb 
cd /usr/local/src/dvb
cp -a /data/installfiles/dvb/dvb-multiproto_plus-cvs-17-04-2008/* .
make distclean

Link auf compiler.h setzen

cd /usr/local/src/dvb/linux/include/linux
ln -s /usr/src/linux/include/linux/compiler.h compiler.h

Kernelkonfiguration erstellen und abspeichern

cd /usr/src/linux
make menuconfig
Device Drivers  ---> Multimedia devices  ---> <M> DVB For Linux
"Exit"
"Exit"
"Exit"
Do you wish to save your new kernel configuration?
"Yes"

DVB Treiber installieren

cd /usr/local/src/dvb/
make && make install

Prüfen der DVB Treiber Installation


cd /lib/modules/$(uname -r)/kernel/drivers/media/dvb/ttpci
ls -l
-rw-r--r-- 1 root root  58888 Jan 29 19:36 budget-av.ko
-rw-r--r-- 1 root root  54424 Jan 29 19:36 budget-ci.ko
-rw-r--r-- 1 root root  35344 Jan 29 19:36 budget-core.ko
-rw-r--r-- 1 root root  33008 Jan 29 19:36 budget-patch.ko
-rw-r--r-- 1 root root  39112 Jan 29 19:36 budget.ko
-rw-r--r-- 1 root root 179112 Jan 29 19:36 dvb-ttpci.ko
-rw-r--r-- 1 root root  21416 Jan 29 19:36 ttpci-eeprom.ko

Bei Problemen auch : SUSE - Artikel , der Grundlage für diesen Part ist der Artikel OpenSUSE VDR DVB-S2 - Teil2: DVB Treiber

- im chroot System - dvb Treiber laden und Zugriffsrechte ändern, um als unprivilegierter User zugreifen zu können (hier mit TT S3200 und TT budget ci)

#!/bin/bash
echo "lade dvb-s2 kernel module"
modprobe stb6100
modprobe stb0899
modprobe stv0299
modprobe lnbp21
modprobe budget-ci
echo "ändere Zugriffsrechte des dvb Adapters 0" 
chmod a+rwx /dev/dvb/adapter0/demux0
chmod a+rwx /dev/dvb/adapter0/dvr0
chmod a+rwx /dev/dvb/adapter0/frontend0
chmod a+rwx /dev/dvb/adapter0/net0
echo "ändere Zugriffsrechte des dvb Adapters 1"
chmod a+rwx /dev/dvb/adapter1/ca0
chmod a+rwx /dev/dvb/adapter1/demux0
chmod a+rwx /dev/dvb/adapter1/dvr0
chmod a+rwx /dev/dvb/adapter1/frontend0
chmod a+rwx /dev/dvb/adapter1/net0

im chroot vdr via local ebuild bauen

- Abhängigkeiten von vdr bauen

ebuild -pvt --onlydeps vdr
ebuild --onlydeps vdr

- locales Overlay anlegen

TODO Write

- ebuild für vdr-1.5.14 ( dev version ) in ( z.B. ) (chroot Verzeichnis)/usr/local/overlay/media-video/vdr/vdr-1.5.14.ebuild

 # Copyright 1999-2008 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 # $Header: /var/cvsroot/gentoo-x86/media-video/vdr/vdr-1.5.14.ebuild,2008/04/21 18:05:23 zzam Exp $ 
 
 inherit eutils flag-o-matic multilib 
 
 IUSE_EXTENSIONS="cmdsubmenu cutterlimit cutterqueue cuttime ddepgentry
 	dolbyinrec dvbplayer dvbsetup dvdarchive dvdchapjump graphtft hardlinkcutter iptv
 	jumpplay liemikuutio lnbshare mainmenuhooks menuorg noepg osdmaxitems pinplugin
 	rotor settime setup sortrecords sourcecaps submenu livebuffer
 	ttxtsubs timercmd timerinfo validinput yaepg
 	syncearly dvlfriendlyfnames dvlrecscriptaddon dvlvidprefer
 	volctrl wareagleicon lircsettings premiereepgfix"
 
 IUSE="debug vanilla ${IUSE_EXTENSIONS}" 
 
 EXT_V="45"
 EXT_P=VDR-Extensions-Patch-${EXT_V}
 EXT_DIR=${WORKDIR}/${EXT_P}/
 # Set if != $PV
 EXT_VDR_PV=1.5.14
 
 DESCRIPTION="Video Disk Recorder - turns a pc into a powerful set top box for DVB"
 HOMEPAGE="http://www.tvdr.de/"
 SRC_URI="ftp://ftp.tvdr.de/vdr/Developer/${P}.tar.bz2"
 #	http://www.zulu-entertainment.de/files/patches/${EXT_P}.tar.bz2" 
 
 KEYWORDS="amd64 ~ppc ~x86"
 SLOT="0"
 LICENSE="GPL-2"
 
 
 DEPEND="media-libs/jpeg
 	sys-apps/gawk
 	sys-libs/libcap
 	>=media-libs/fontconfig-2.4.2
 	>=media-libs/freetype-2
 	dev-util/unifdef
 	sys-devel/gettext"
 
 # rausgenommen um Platz für den ( per hand zu installierenden ) multiproto teiber zu schaffen
 #	media-tv/linuxtv-dvb-headers 
 
 
 RDEPEND="${DEPEND}
 	dev-lang/perl"
 #	>=media-tv/gentoo-vdr-scripts-0.4.2"
 
 # pull in vdr-setup to get the xml files, else menu will not work
 PDEPEND="setup? ( >=media-plugins/vdr-setup-0.3.1-r1 )"
 
 CONF_DIR=/etc/vdr
 CAP_FILE=${S}/capabilities.sh
 CAPS="# Capabilities of the vdr-executable for use by startscript etc."
 
 pkg_setup() {
 	use debug && append-flags -g
 	PLUGIN_LIBDIR="/usr/$(get_libdir)/vdr/plugins"
 }
 
 add_cap() {
 	local arg
 	for arg; do
 		CAPS="${CAPS}\n${arg}=1"
 	done
 }
 
 enable_patch() {
 	local arg ARG_UPPER
 	for arg; do
 		ARG_UPPER=$(echo $arg|tr '[:lower:]' '[:upper:]')
 		echo "${ARG_UPPER} = 1" >> Make.config
 	done
 }
 
 extensions_add_make_conf()
 {
 	# copy all ifdef for extensions-patch to Make.config
 	sed -e '1,/need to touch the following:/d' \
 		-e '/ifdef DVBDIR/,/^$/d' \
 		Make.config.template >> Make.config
 }
 
 extensions_all_defines() {
 	# extract all possible settings for extensions-patch
 	sed -e '/^#\?[A-Z].*= 1/!d' -e 's/^#\?//' -e 's/ .*//' \
 		Make.config.template \
 		| sort \
 		| tr '[:upper:]' '[:lower:]'
 }
 
 extensions_all_defines_unset() {
 	# extract all possible settings for extensions-patch
 	# and convert them to -U... for unifdef
 	sed -e '/^#\?[A-Z].*= 1/!d' -e 's/^#\?/-UUSE_/' -e 's/ .*//' \
 		Make.config.template \
 		| tr '\n' ' '
 }
 
 do_unifdef() {
 	ebegin "Unifdef sources"
 	local mf="Makefile.get"
 	cat <<'EOT' > $mf
 include Makefile
 show_def:
 	@echo $(DEFINES)
 show_src_files:
 	@echo $(OBJS:%.o=%.c)
 EOT
 
 	local DEFINES=$(extensions_all_defines_unset)
 
 	local RAW_DEFINES=$(make -f "$mf" show_def)
 	local VDR_SRC_FILES=$(make -f "$mf" show_src_files)
 	local KEEP_FILES=""
 	rm "$mf"
 
 	local def
 	for def in $RAW_DEFINES; do
 		case "${def}" in
 			-DUSE*)
 				DEFINES="${DEFINES} ${def}"
 				;;
 		esac
 	done
 
 	local f
 	for f in *.c; do
 
 		# Removing the src files the Makefile does not use for compiling vdr
 		if ! has $f ${VDR_SRC_FILES} ${KEEP_FILES}; then
 			rm -f ${f} ${f%.c}.h
 			continue
 		fi
 
 		unifdef ${DEFINES} "$f" > "tmp.$f"
 		mv "tmp.$f" "$f"
 	done
 	for f in *.h; do
 		unifdef ${DEFINES} "$f" > "tmp.$f"
 		mv "tmp.$f" "$f"
 		[[ -s $f ]] || rm "$f"
 	done
 	eend 0
 }
 
 src_unpack() {
 
 	unpack ${A}
 	cd "${S}"
 
 	ebegin "Changing pathes for gentoo"
 
 	sed \
 	  -e 's-ConfigDirectory = VideoDirectory;-ConfigDirectory = CONFDIR;-' \
 	  -i vdr.c
 
 	cat > Make.config <<-EOT
 		#
 		# Generated by ebuild ${PF}
 		#
 		PREFIX			= /usr
 		DVBDIR			= /usr/local/src/dvb/linux
 		PLUGINLIBDIR	= ${PLUGIN_LIBDIR}
 		CONFDIR			= ${CONF_DIR}
 		VIDEODIR		= /video
 		LOCDIR			= \$(PREFIX)/share/vdr/locale
 
 		DEFINES			+= -DCONFDIR=\"\$(CONFDIR)\"
 
 	EOT
 	eend 0
 
 	epatch "${FILESDIR}"/vdr-1.5.14-makefile-install-header.diff
 #	epatch "${FILESDIR}"/vdr-1.5.14-h264-syncearly-framespersec-audioindexer-fielddetection-speedup.diff
 	epatch "${FILESDIR}"/vdr-1.5.14-multiproto-nodelivery.diff
 	epatch "${FILESDIR}"/vdr-1.5.14-E45-h264.diff
 #	epatch "${FILESDIR}"/vdr-1.5.14-channels.conf_plus_HD_Astra.diff
 #	epatch "${FILESDIR}"/vdr-1.5.14_recording_length-0.3.diff
 	epatch "${FILESDIR}"/vdr-premiereepgfix-1.5.14.diff
 #	epatch "${FILESDIR}"/vdr-1.5.14-alex2.diff 
 
 #	epatch "${FILESDIR}"/vdr-1.5.14_extensions-gentoo.diff	 
 
 	sed -i i18n-to-gettext.pl \
 		-e '/MSGIDBUGS/s/""/"automatically created from i18n.c by vdr-plugin.eclass <vdr\\@gentoo.org>"/'
 
 	# Do not install runvdr script and plugins
 	sed -i Makefile \
 		-e 's/runvdr//' \
 		-e 's/ install-plugins//' \
 		-e 's/INCLUDES = -I\/usr\/include\/freetype2/INCLUDES = -I\/usr\/include\/freetype2 -I${DVBDIR}\/include/'
 
 	if ! use vanilla; then
 
 		cd "${S}"
 		# Now apply extensions patch # deaktiviert weil kein 1.5.14er verfügbar
 #		local fname="${PN}-${EXT_VDR_PV:-${PV}}_extensions.diff"
 #		epatch "${EXT_DIR}/${fname}"
 
 
 		# other gentoo patches
 		epatch "${FILESDIR}/vdr-set-dumpable.diff"
 
 		# This allows us to start even if some plugin does not exist
 		# or is not loadable.
 		enable_patch PLUGINMISSING
 
 		# Patch necessary for media-plugins/vdr-reelchannelscan
 		# it does not change anything when plugin is not used
 		enable_patch CHANNELSCAN
 
 		if [[ -n ${VDR_MAINTAINER_MODE} ]]; then
 			einfo "Doing maintainer checks:"
 
 			# these patches we do not support
 			# (or have them already hard enabled)
 			local IGNORE_PATCHES="channelscan pluginapi pluginmissing" 
 
 			extensions_all_defines > "${T}"/new.IUSE
 			echo $IUSE_EXTENSIONS $IGNORE_PATCHES|tr ' ' '\n' |sort > "${T}"/old.IUSE
 			local DIFFS=$(diff -u "${T}"/old.IUSE "${T}"/new.IUSE|grep '^[+-][^+-]')
 			if [[ -z ${DIFFS} ]]; then
 				einfo "IUSE_EXTENSIONS is up to date."
 			else
 				ewarn "IUSE differences!"
 				local diff
 				for diff in $DIFFS; do
 					ewarn "$diff"
 				done
 			fi
 		fi
 
 		ebegin "Enabling selected patches"
 		local flag
 		for flag in $IUSE_EXTENSIONS; do
 			use $flag && enable_patch ${flag}
 		done
 		eend 0
 
 		extensions_add_make_conf 
 
 		ebegin "Make depend"
 		emake .dependencies >/dev/null
 		eend $? "make depend failed"
 
 		do_unifdef
 
 		use iptv && sed -i sources.conf -e 's/^#P/P/'
 	fi
 
 	# apply local patches defined by variable VDR_LOCAL_PATCHES_DIR
 	if test -n "${VDR_LOCAL_PATCHES_DIR}"; then
 		local dir_tmp_var
 		local LOCALPATCHES_SUBDIR=${PV}
 		for dir_tmp_var in allversions-fallback ${PV%_p*} ${PV} ; do
 			if [[ -d ${VDR_LOCAL_PATCHES_DIR}/${dir_tmp_var} ]]; then
 				LOCALPATCHES_SUBDIR="${dir_tmp_var}"
 			fi
 		done
 
 		echo
 		if [[ ${LOCALPATCHES_SUBDIR} == ${PV} ]]; then
 			einfo "Applying local patches"
 		else
 			einfo "Applying local patches (Using subdirectory: ${LOCALPATCHES_SUBDIR})"
 		fi
 
 		for LOCALPATCH in ${VDR_LOCAL_PATCHES_DIR}/${LOCALPATCHES_SUBDIR}/*.{diff,patch}; do
 			test -f "${LOCALPATCH}" && epatch "${LOCALPATCH}"
 		done
 	fi
 
 	if [[ -n "${VDRSOURCE_DIR}" ]]; then
 		cp -r "${S}" "${T}"/source-tree
 	fi
 
 
 	add_cap CAP_UTF8
 
 	add_cap CAP_IRCTRL_RUNTIME_PARAM \
 			CAP_VFAT_RUNTIME_PARAM \
 			CAP_CHUID \
 			CAP_SHUTDOWN_AUTO_RETRY
 
 	echo -e ${CAPS} > "${CAP_FILE}"
 }
 
 src_install() {
 	# trick makefile not to create a videodir by supplying it with an existing
 	# directory
 	emake install DESTDIR="${D}"
 
 	keepdir "${CONF_DIR}"/plugins
 	keepdir "${CONF_DIR}"/themes
 
 	keepdir "${PLUGIN_LIBDIR}"
 
 	exeinto /usr/share/vdr/bin
 	doexe i18n-to-gettext.pl
 
 	dohtml *.html
 	dodoc MANUAL INSTALL README* HISTORY* CONTRIBUTORS
 
 	cd "${EXT_DIR}"
 	local f
 	rm *vdr-1.4* 2>/dev/null
 	for f in BUGS README* HISTORY* patch.list; do
 	 	[[ -f ${f} ]] || break
 		newdoc "${f}" "${f}".ExtensionsPatch || die "Could not install extensions-patch doc ${f}"
 	done
 
 	cd "${S}"
 
 	insinto /usr/share/vdr
 	doins "${CAP_FILE}"
 
 	if [[ -n "${VDRSOURCE_DIR}" ]]; then
 		einfo "Installing sources"
 		insinto "${VDRSOURCE_DIR}/${P}"
 		doins -r "${T}"/source-tree/*
 		keepdir "${VDRSOURCE_DIR}/${P}"/PLUGINS/lib
 	fi
 
 	if use setup; then
 		insinto /usr/share/vdr/setup
 		doins "${S}"/menu.c
 	fi
 #	chown -R vdr:vdr "${D}/${CONF_DIR}"
 }
 
 pkg_postinst() {
 	elog "It is a good idea to run vdrplugin-rebuild now."
 	if has_version "<media-video/vdr-1.3.36-r3"; then
 		ewarn "Upgrade Info:"
 		ewarn
 		ewarn "If you had used the use-flags lirc, rcu or vfat"
 		ewarn "then, you now have to enable the associated functionality"
 		ewarn "in /etc/conf.d/vdr"
 		ewarn
 		ewarn "vfat is now set with VFAT_FILENAMES."
 		ewarn "lirc/rcu are now set with IR_CTRL."
 		ebeep
 	fi
 
 	if use setup; then
 		if ! has_version media-plugins/vdr-setup || \
 			! egrep -q '^setup$' "${ROOT}/etc/conf.d/vdr.plugins"; then
 
 			echo
 			ewarn "You have compiled media-video/vdr with USE=\"setup\""
 			ewarn "It is very important to emerge media-plugins/vdr-setup now!"
 			ewarn "and you have to loaded it in /etc/conf.d/vdr.plugins"
 		fi
 	fi
 
 	local keysfound=0
 	local key
 	local warn_keys="JumpFwd JumpRew JumpFwdSlow JumpRewSlow"
 	local remote_file="${ROOT}"/etc/vdr/remote.conf
 
 	if [[ -e ${remote_file} ]]; then
 		for key in ${warn_keys}; do
 			if grep -q -i "\.${key} " "${remote_file}"; then
 				keysfound=1
 				break
 			fi
 		done
 		if [[ ${keysfound} == 1 ]]; then
 			ewarn "Your /etc/vdr/remote.conf contains keys which are no longer usable"
 			ewarn "Please remove these keys or vdr will not start:"
 			ewarn "#  ${warn_keys}"
 		fi
 	fi
 }

im chroot vdr im Vordergrund starten

- vdr starten mit runvdr.sh

#!/bin/sh
# 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 1.19 2006/05/14 16:02:05 kls Exp $
export LANG=de_DE
export LC_COLLATE=de_DE
PATH=/usr/local/bin:$PATH
VDRPRG="/usr/bin/vdr"
VDRCMD="$VDRPRG -w 60 -c /etc/vdr \
	-P'femon' \
	-Pskinelchi \
	-Pdirector \
	-Ppremiereepg \
	-P'xine -r' \
	-r '/usr/bin/noad -a -j -o  -S' \
	-u alex
        $*"
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()
{
 modprobe stb6100
 modprobe stb0899
 modprobe lnbp21
 modprobe budget-ci
}
# Unload all DVB driver modules loaded in LoadDriver():
function UnloadDriver()
{
 modprobe -r budget-ci
 modprobe -r lnbp21
 modprobe -r stb0899
 modprobe -r stb6100
}
# 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


- umounten nach verlassen des chroot

#!/bin/bash
echo "umounting vs"
umount /home/alex/vs/dev/pts/
umount /home/alex/vs/dev/shm/
umount /home/alex/vs/dev/
umount /home/alex/vs/proc/bus/usb/
umount /home/alex/vs/proc/
umount /home/alex/vs/sys/
umount /home/alex/vs/tmp/
umount /home/alex/vs/usr/portage/distfiles/
umount /home/alex/vs/video
umount /home/alex/vs/home/alex/mpeg2avi/
umount /home/alex/vs/home/alex/.vdrtransxvid/
umount /home/alex/vs/archiv/