Gentoo HD-vdr experimentel
Inhaltsverzeichnis |
Beschreibung
Autor: Alexander Richter - 17.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 chroots sind ebenfalls möglich, was bei einer misslungenen Installation komfortabel ist.
WRITE TODO
- Einrichten einer amd64-chroot Umgebung - Kernel im chroot bauen - Multiproto Teiber ohne ebuild bauen - locales overlay im chroot anlegen - im localen Overlay vdr bauen - im localen Overlay ffmpeg bauen - im localen Overlay xine-lib bauen - im localen Overlay xine-ui bauen - im localen Overlay plugins bauen - im localen 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 des 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 /home/alex/vs
- 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 unsere eigen DVB treiber bauen, die müssen also zum Außen Kernel passen )
- im chroot System - dvb Treiber laden und Zugriffsrechte ändern, um als unpriveligierter 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/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 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/