Gentoo HD-vdr experimentel
(→Entwicklungsumgebung Software) |
(→amd64-chroot Umgebung Vorbereitung und Betreten) |
||
| Zeile 57: | Zeile 57: | ||
==Einrichten einer amd64-chroot Umgebung== | ==Einrichten einer amd64-chroot Umgebung== | ||
==amd64-chroot Umgebung Vorbereitung und Betreten== | ==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 !) | - mounten der benötigten Verzeichnisse ins chroot (Pfade des Chroot anpassen !) | ||
#!/bin/bash | #!/bin/bash | ||
echo "mounting vs" | echo "mounting vs" | ||
| − | mount -o bind /dev / | + | mount -o bind /dev /vdr/dev |
| − | mount -o bind /dev/pts / | + | mount -o bind /dev/pts /vdr/dev/pts |
| − | mount -o bind /dev/shm / | + | mount -o bind /dev/shm /vdr/dev/shm |
| − | mount -o bind /proc / | + | mount -o bind /proc /vdr/proc |
| − | mount -o bind /proc/bus/usb / | + | mount -o bind /proc/bus/usb /vdr/proc/bus/usb |
| − | mount -o bind /sys / | + | mount -o bind /sys /vdr/sys |
| − | mount -o bind /tmp / | + | mount -o bind /tmp /vdr/tmp |
| − | mount -o bind /usr/portage/distfiles / | + | mount -o bind /usr/portage/distfiles /vdr/usr/portage/distfiles |
| − | mount -o bind /video / | + | # optional weitere |
| − | mount -o bind /home/alex/mpeg2avi/ / | + | #mount -o bind /video /vdr/video |
| − | mount -o bind /home/alex/.vdrtransxvid/ / | + | #mount -o bind /home/alex/mpeg2avi/ /vdr/home/alex/mpeg2avi/ |
| − | mount -o bind /dev/sdb1/ / | + | #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 ) | - Xserver Zugang für Programme aus dem chroot ( hier xine ) | ||
| Zeile 87: | Zeile 101: | ||
source /etc/profile | source /etc/profile | ||
export PS1="(chroot) $PS1" | 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) | - 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) | ||
Version vom 17. April 2008, 22:08 Uhr
Inhaltsverzeichnis |
Beschreibung
Autor: Alexander Richter - 18.03.2008
Ich stelle hier eine Variante der Installation vor, die in einem Working System 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/