Mediabox: Difference between revisions
No edit summary |
|||
(22 intermediate revisions by the same user not shown) | |||
Line 18: | Line 18: | ||
== Software == |
== Software == |
||
* Debian squeeze |
|||
* Ubuntu 10.10 (Minmalinstallation) |
|||
* XBMC |
* XBMC |
||
== Distribution == |
|||
Die Auswahl einer passenden Linux-Distribution gestaltet sich als nicht ganz einfach. Unter Ubuntu gibt es Probleme mit dem Shutdown und Reboot von XBMC aus, ältere Distributionen kommen teilweise mit sehr veralteter Software, welche manuelle Nachbesserung benötigt. |
|||
Debian squeeze ist ein guter Kompromiss zwischen Funktionstüchtigkeit und Aktualität. Leider bestehen noch Probleme mit unserer Fernbedienung, diese dürften sich dann aber von selbst lösen wenn XBMC 10.x (Dharma) Release-Status erreicht und ins Paketarchiv aufgenommen wird. |
|||
== Installation == |
== Installation == |
||
1. Debian netboot laden und einrichten, z.B. von http://ftp.ch.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/netboot.tar.gz (Die Einrichtung von tftpd und dhcpd wird hier nicht im Detail beschrieben, siehe Links) |
|||
1. https://help.ubuntu.com/community/Installation/Netboot |
|||
2. Standardinstallation, in tasksel alles abwählen. |
|||
3. Nach dem ersten Boot TRIM aktivieren, dafür in <tt>/etc/fstab</tt> <tt>noatime,discard</tt> beim rootfs eintragen. Ausserdem kann man einige Verzeichnisse als RAM-Disk einrichten: |
|||
<pre> |
|||
tmp /tmp tmpfs nodev,mode=1777 0 0 |
|||
run /var/run tmpfs nosuid,mode=0755 0 0 |
|||
lock /var/lock tmpfs noexec,nosuid,nodev,mode=1777 0 0 |
|||
</pre> |
|||
4. In <tt>/etc/apt/sources.list</tt> <tt>contrib</tt> und <tt>non-free</tt> anfügen, <tt>apt-get update</tt> und <tt>apt-get install nvidia-vdpau-driver nvidia-xconfig nvidia-settings</tt>. Dann <tt>nvidia-xconfig</tt> ausführen. |
|||
5. <tt>/etc/apt/sources.list.d/debian-multimedia.list</tt> erstellen und einen der Mirrors von http://debian-multimedia.org/debian-m-testing.php hinzufügen. Den Repository-Key findet man auf http://debian-multimedia.org/faq.php |
|||
6. <tt>apt-get update</tt> und <tt>xbmc-live</tt> sowie <tt>xinit</tt> installieren. |
|||
7. ALSA updaten (für HDMI-Audio): <tt>apt-get install alsa-utils module-assistant</tt>, dann <tt>m-a update&&m-a prepare&&m-a a-i -t alsa-driver</tt> gefolgt von einem Neustart. |
|||
8. Sound, X und XBMC testen: <tt>aplay -l</tt> (da sollten sowohl HDA Intel als auch NVIDIA HDMI Geräte auftauchen), mit <tt>alsamixer</tt> den Front-Kanal hochschrauben. Als normaler Benutzer einloggen, <tt>startx</tt>, dann <tt>xbmc</tt> im xterm. Geeignete Testvideos kann man z.B. auf http://www.nostro.fr/ finden. |
|||
9. Den xbmc-Benutzer mit <tt>useradd -m xbmc</tt> erstellen. |
|||
10. Dafür sorgen, dass XBMC automatisch gestartet wird, wenn der xbmc-User eine X-Session öffnet. Dazu folgendes in <tt>/home/xbmc/.xsession</tt> schreiben: |
|||
<pre> |
|||
# Relaunch XBMC when it crashes |
|||
# This won't help if the X server dies, unfortunately. |
|||
while (true); do /usr/bin/xbmc-standalone; done |
|||
</pre> |
|||
11. Ein init-Skript für XBMC einrichten. ''Update: start-stop-daemon produziert offenbar kein brauchbares Environment, so dass auch Shutdown/Reboot/Standby funktionieren. Bis eine bessere Lösung gefunden ist arbeiten wir eben mit <tt>/bin/su -l -c /usr/bin/startx xbmc</tt>'' |
|||
<pre> |
|||
#! /bin/sh |
|||
### BEGIN INIT INFO |
|||
# Provides: xbmc |
|||
# Required-Start: $all |
|||
# Required-Stop: $all |
|||
# Default-Start: 2 3 4 5 |
|||
# Default-Stop: 0 1 6 |
|||
# Short-Description: XBMC launcher |
|||
# Description: Launches XBMC in standalone mode, as user xbmc |
|||
### END INIT INFO |
|||
# Author: seto |
|||
PATH=/sbin:/usr/sbin:/bin:/usr/bin |
|||
DESC="XBMC" |
|||
NAME=xbmc |
|||
DAEMON=/usr/bin/startx |
|||
DAEMON_ARGS="" |
|||
XBMC_USERID="xbmc" |
|||
PIDFILE=/var/run/$NAME.pid |
|||
SCRIPTNAME=/etc/init.d/$NAME |
|||
[ -x "$DAEMON" ] || exit 0 |
|||
[ -r /etc/default/$NAME ] && . /etc/default/$NAME |
|||
. /lib/init/vars.sh |
|||
. /lib/lsb/init-functions |
|||
do_start() { |
|||
#start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test --user $XBMC_USERID > /dev/null || return 1 |
|||
#start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --chuid $XBMC_USERID --background --make-pidfile -- $DAEMON_ARGS || return 2 |
|||
/bin/su -l -c /usr/bin/startx xbmc |
|||
} |
|||
do_stop() { |
|||
start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME --user $XBMC_USERID |
|||
RETVAL="$?" |
|||
rm -f $PIDFILE |
|||
return $RETVAL |
|||
} |
|||
do_reload() { |
|||
do_stop |
|||
do_start |
|||
return 0 |
|||
} |
|||
case "$1" in |
|||
2. Sobald der Netboot-Installer gestartet hat, das System nach Wunsch einrichten, bei tasksel aber '''keine''' Pakete auswählen. Alle nötigen Pakete werden später manuell installiert. |
|||
start) |
|||
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" |
|||
do_start |
|||
case "$?" in |
|||
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; |
|||
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; |
|||
esac |
|||
;; |
|||
stop) |
|||
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" |
|||
do_stop |
|||
case "$?" in |
|||
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; |
|||
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; |
|||
esac |
|||
;; |
|||
status) |
|||
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? |
|||
;; |
|||
restart|force-reload) |
|||
log_daemon_msg "Restarting $DESC" "$NAME" |
|||
do_stop |
|||
case "$?" in |
|||
0|1) |
|||
do_start |
|||
case "$?" in |
|||
0) log_end_msg 0 ;; |
|||
1) log_end_msg 1 ;; # Old process is still running |
|||
*) log_end_msg 1 ;; # Failed to start |
|||
esac |
|||
;; |
|||
*) |
|||
# Failed to stop |
|||
log_end_msg 1 |
|||
;; |
|||
esac |
|||
;; |
|||
*) |
|||
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 |
|||
exit 3 |
|||
;; |
|||
esac |
|||
: |
|||
3. Automatische Sicherheitsupdates aktivieren, das spart manuellen Administrationsaufwand. |
|||
</pre> |
|||
Danach ist ein chmod 755 <tt>/etc/init.d/xbmc</tt> und ein <tt>update-rc.d xbmc defaults</tt> nötig. ''TODO'': <tt>do_stop()</tt> reparieren. |
|||
12. Für funktionierendes Standby ist ein Eintrag in <tt>/etc/default/grub</tt> nötig. Zu <tt>GRUB_CMDLINE_LINUX_DEFAULT</tt> den Parameter <tt>usbcore.autosuspend=-1</tt> hinzufügen. Damit USB-Geräte das System auch wieder aufwecken können, die folgenden Zeilen in /etc/rc.local schreiben (vor exit 0): |
|||
4. Nach dem ersten Boot vom neuen System: <tt>/etc/fstab</tt> editieren und den Mountoptionen für <tt>/</tt> <tt>discard</tt> hinzufügen (aktiviert TRIM-Support in ext4). <tt>noatime</tt> sollte man sowieso immer an haben. Möglich wären auch weitere Massnahmen von http://blog.lawrenceso.ca/2008/10/ssd-optimization-on-ubuntu.html - die sind aber vielleicht doch ein wenig paranoide? |
|||
<pre> |
|||
echo USB0>/proc/acpi/wakeup |
|||
echo USB1>/proc/acpi/wakeup |
|||
echo USB2>/proc/acpi/wakeup |
|||
echo USB3>/proc/acpi/wakeup |
|||
</pre> |
|||
13. XBMC benutzt PolicyKit, um Funktionen auszuführen, die root-Rechte benötigen (Shutdown, Reboot, Suspend, Mount, Unmount). Dafür werden folgende Pakete gebraucht: <tt>policykit-1 pm-utils upower</tt> (policykit-1 sollte bereits von xbmc-live installiert worden sein). PolicyKit benötigt ausserdem noch eine Konfiguration, damit XBMC das System herunterfahren und neu starten kann. Folgendes in <tt>/etc/polkit-1/localauthority/50-local.d/org.xbmc.pkla</tt> schreiben: |
|||
5. http://wiki.xbmc.org/index.php?title=XBMCbuntu |
|||
<pre> |
|||
[Configuration] |
|||
Identity=unix-user:xbmc |
|||
Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.* |
|||
ResultActive=yes |
|||
ResultAny=auth_admin |
|||
ResultInactive=yes |
|||
</pre> |
|||
14. Unter Debian versteckt man Bootnachrichten mit Plymouth. Zuerst braucht <tt>GRUB_CMDLINE_LINUX_DEFAULT</tt> in <tt>/etc/default/grub</tt> den Parameter <tt>splash</tt>. Mit <tt>apt-get install plymouth</tt> installieren, dann <tt>/usr/sbin/plymouth-set-default-theme text</tt> sowie <tt>update-grub</tt> ausführen. Grafische Splashscreens vertragen sich nicht so gut mit dem NVIDIA-Treiber. |
|||
6. Das xbmc-PPA hat momentan noch keinen 10.10-Support. In <tt>/etc/apt/sources.list.d/team-xbmc-ppa-maverick.list</tt> maverick in lucid ändern. |
|||
15. XBMC hat leider erst in der nächsten stabilen Version (Dharma) volle Unterstützung für MCE-Fernbedienungen. Da diese momentan noch in der Beta-Phase ist, gibt es sie noch nicht auf debian-multimedia. So lassen sich die meisten Tasten auf unserer hama-Fernbedienung nicht nutzen. Auch manuelle Konfiguration ist wegen fehlenden Tastencodes und Modifiern nur begrenzt möglich. Damit zumindest die Fullscreen-Funktion geht (normalerweise auf der Tab-Taste), kann man die Datei <tt>/home/xbmc/.xbmc/userdata/keymaps/mceremote.xml</tt> mit folgendem Inhalt erstellen: |
|||
7. Bei Ubuntu 10.10 am besten nvidia-current der Distribution verwenden. Der Treiber ist aktuell genug. |
|||
<pre> |
|||
<keymap> |
|||
<global> |
|||
<keyboard> |
|||
<escape>FullScreen</escape> |
|||
</keyboard> |
|||
</global> |
|||
</keymap> |
|||
</pre> |
|||
Das legt die Fullscreen-Funktion auf die Clear-Taste. |
|||
== Links == |
== Links == |
||
Referenzen: |
|||
Weiterführende Links, die helfen können: |
|||
* https://help.ubuntu.com/community/Installation/Netboot (Installation von Ubuntu per Netboot) |
|||
* http://wiki.xbmc.org/index.php?title=XBMCbuntu (XBMC-Installation unter Ubuntu) |
|||
* http://www.mythtv.org/wiki/MCE_Remote (M$ Media Center Remotes mit Linux) |
|||
* http://forum.xbmc.org/showpost.php?p=506251 ("krumme" Bildwiederholraten) |
* http://forum.xbmc.org/showpost.php?p=506251 ("krumme" Bildwiederholraten) |
||
* http://www.vdr-portal.de/board/thread.php?threadid=95292 (für VDR-Streaming) |
* http://www.vdr-portal.de/board/thread.php?threadid=95292 (für VDR-Streaming) |
||
* https://launchpad.net/~henningpingel/+archive/xbmc (PPA für die Version mit VDR-Support) |
|||
* http://blog.lawrenceso.ca/2008/10/ssd-optimization-on-ubuntu.html (Systemoptimierungen für SSDs) |
|||
* http://forum.xbmc.org/showthread.php?t=83696 (Wie richtet man Power-Management-Funktionen für XBMC ein, noch für PolicyKit-0, Anpassungen siehe oben) |
|||
* http://wiki.debian.org/plymouth (Boot-Splashscreen für Debian) |
|||
* http://wiki.xbmc.org/index.php?title=Keymap.xml (Dokumentation der XBMC-Keymaps) |
Latest revision as of 19:45, 20 March 2011
Motivation
Nach der Überschwemmung, die auch unsere alte Popcorn Hour A-100 weggeschwemmt hat, stehen wir nun ohne Mediaplayer für die Filmecke da.
Eine kurze Evaluation und Rundfrage hat ergeben: Diesmal schaffen wir etwas schnelleres mit schönerer Oberfläche an.
Hardware
- Zotac ZBOX ID-HD11
- Intel Atom D510 (1.66GHz, 64bit, SSE, Dualcore, HyperThreading)
- NVIDIA ION2 (GeForce GT218)
- DVI-I, HDMI, Gbit-Ethernet, eSATA, Cardreader, 5x USB
- Audio über HDMI, S/PDIF (optisch) oder Klinke
- Aktiv gekühlt
- 2 USB-Ports mit Stromversorgung im Standby-Modus, Wake-from-S3 möglich
- miniPCIe-Slot mit Atheros AR9285 WLAN-Adapter (B/G/N)
- 1GB PC800 DDR2 SDRAM
- hama MCE Remote (IR)
- Kingston SSDnow VSeries 30GB
Software
- Debian squeeze
- XBMC
Distribution
Die Auswahl einer passenden Linux-Distribution gestaltet sich als nicht ganz einfach. Unter Ubuntu gibt es Probleme mit dem Shutdown und Reboot von XBMC aus, ältere Distributionen kommen teilweise mit sehr veralteter Software, welche manuelle Nachbesserung benötigt.
Debian squeeze ist ein guter Kompromiss zwischen Funktionstüchtigkeit und Aktualität. Leider bestehen noch Probleme mit unserer Fernbedienung, diese dürften sich dann aber von selbst lösen wenn XBMC 10.x (Dharma) Release-Status erreicht und ins Paketarchiv aufgenommen wird.
Installation
1. Debian netboot laden und einrichten, z.B. von http://ftp.ch.debian.org/debian/dists/squeeze/main/installer-amd64/current/images/netboot/netboot.tar.gz (Die Einrichtung von tftpd und dhcpd wird hier nicht im Detail beschrieben, siehe Links)
2. Standardinstallation, in tasksel alles abwählen.
3. Nach dem ersten Boot TRIM aktivieren, dafür in /etc/fstab noatime,discard beim rootfs eintragen. Ausserdem kann man einige Verzeichnisse als RAM-Disk einrichten:
tmp /tmp tmpfs nodev,mode=1777 0 0 run /var/run tmpfs nosuid,mode=0755 0 0 lock /var/lock tmpfs noexec,nosuid,nodev,mode=1777 0 0
4. In /etc/apt/sources.list contrib und non-free anfügen, apt-get update und apt-get install nvidia-vdpau-driver nvidia-xconfig nvidia-settings. Dann nvidia-xconfig ausführen.
5. /etc/apt/sources.list.d/debian-multimedia.list erstellen und einen der Mirrors von http://debian-multimedia.org/debian-m-testing.php hinzufügen. Den Repository-Key findet man auf http://debian-multimedia.org/faq.php
6. apt-get update und xbmc-live sowie xinit installieren.
7. ALSA updaten (für HDMI-Audio): apt-get install alsa-utils module-assistant, dann m-a update&&m-a prepare&&m-a a-i -t alsa-driver gefolgt von einem Neustart.
8. Sound, X und XBMC testen: aplay -l (da sollten sowohl HDA Intel als auch NVIDIA HDMI Geräte auftauchen), mit alsamixer den Front-Kanal hochschrauben. Als normaler Benutzer einloggen, startx, dann xbmc im xterm. Geeignete Testvideos kann man z.B. auf http://www.nostro.fr/ finden.
9. Den xbmc-Benutzer mit useradd -m xbmc erstellen.
10. Dafür sorgen, dass XBMC automatisch gestartet wird, wenn der xbmc-User eine X-Session öffnet. Dazu folgendes in /home/xbmc/.xsession schreiben:
# Relaunch XBMC when it crashes # This won't help if the X server dies, unfortunately. while (true); do /usr/bin/xbmc-standalone; done
11. Ein init-Skript für XBMC einrichten. Update: start-stop-daemon produziert offenbar kein brauchbares Environment, so dass auch Shutdown/Reboot/Standby funktionieren. Bis eine bessere Lösung gefunden ist arbeiten wir eben mit /bin/su -l -c /usr/bin/startx xbmc
#! /bin/sh ### BEGIN INIT INFO # Provides: xbmc # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: XBMC launcher # Description: Launches XBMC in standalone mode, as user xbmc ### END INIT INFO # Author: seto PATH=/sbin:/usr/sbin:/bin:/usr/bin DESC="XBMC" NAME=xbmc DAEMON=/usr/bin/startx DAEMON_ARGS="" XBMC_USERID="xbmc" PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME [ -x "$DAEMON" ] || exit 0 [ -r /etc/default/$NAME ] && . /etc/default/$NAME . /lib/init/vars.sh . /lib/lsb/init-functions do_start() { #start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test --user $XBMC_USERID > /dev/null || return 1 #start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --chuid $XBMC_USERID --background --make-pidfile -- $DAEMON_ARGS || return 2 /bin/su -l -c /usr/bin/startx xbmc } do_stop() { start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME --user $XBMC_USERID RETVAL="$?" rm -f $PIDFILE return $RETVAL } do_reload() { do_stop do_start return 0 } case "$1" in start) [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME" do_start case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; stop) [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME" do_stop case "$?" in 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;; 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;; esac ;; status) status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? ;; restart|force-reload) log_daemon_msg "Restarting $DESC" "$NAME" do_stop case "$?" in 0|1) do_start case "$?" in 0) log_end_msg 0 ;; 1) log_end_msg 1 ;; # Old process is still running *) log_end_msg 1 ;; # Failed to start esac ;; *) # Failed to stop log_end_msg 1 ;; esac ;; *) echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 exit 3 ;; esac :
Danach ist ein chmod 755 /etc/init.d/xbmc und ein update-rc.d xbmc defaults nötig. TODO: do_stop() reparieren.
12. Für funktionierendes Standby ist ein Eintrag in /etc/default/grub nötig. Zu GRUB_CMDLINE_LINUX_DEFAULT den Parameter usbcore.autosuspend=-1 hinzufügen. Damit USB-Geräte das System auch wieder aufwecken können, die folgenden Zeilen in /etc/rc.local schreiben (vor exit 0):
echo USB0>/proc/acpi/wakeup echo USB1>/proc/acpi/wakeup echo USB2>/proc/acpi/wakeup echo USB3>/proc/acpi/wakeup
13. XBMC benutzt PolicyKit, um Funktionen auszuführen, die root-Rechte benötigen (Shutdown, Reboot, Suspend, Mount, Unmount). Dafür werden folgende Pakete gebraucht: policykit-1 pm-utils upower (policykit-1 sollte bereits von xbmc-live installiert worden sein). PolicyKit benötigt ausserdem noch eine Konfiguration, damit XBMC das System herunterfahren und neu starten kann. Folgendes in /etc/polkit-1/localauthority/50-local.d/org.xbmc.pkla schreiben:
[Configuration] Identity=unix-user:xbmc Action=org.freedesktop.upower.*;org.freedesktop.consolekit.system.* ResultActive=yes ResultAny=auth_admin ResultInactive=yes
14. Unter Debian versteckt man Bootnachrichten mit Plymouth. Zuerst braucht GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub den Parameter splash. Mit apt-get install plymouth installieren, dann /usr/sbin/plymouth-set-default-theme text sowie update-grub ausführen. Grafische Splashscreens vertragen sich nicht so gut mit dem NVIDIA-Treiber.
15. XBMC hat leider erst in der nächsten stabilen Version (Dharma) volle Unterstützung für MCE-Fernbedienungen. Da diese momentan noch in der Beta-Phase ist, gibt es sie noch nicht auf debian-multimedia. So lassen sich die meisten Tasten auf unserer hama-Fernbedienung nicht nutzen. Auch manuelle Konfiguration ist wegen fehlenden Tastencodes und Modifiern nur begrenzt möglich. Damit zumindest die Fullscreen-Funktion geht (normalerweise auf der Tab-Taste), kann man die Datei /home/xbmc/.xbmc/userdata/keymaps/mceremote.xml mit folgendem Inhalt erstellen:
<keymap> <global> <keyboard> <escape>FullScreen</escape> </keyboard> </global> </keymap>
Das legt die Fullscreen-Funktion auf die Clear-Taste.
Links
Referenzen:
- https://help.ubuntu.com/community/Installation/Netboot (Installation von Ubuntu per Netboot)
- http://wiki.xbmc.org/index.php?title=XBMCbuntu (XBMC-Installation unter Ubuntu)
- http://www.mythtv.org/wiki/MCE_Remote (M$ Media Center Remotes mit Linux)
- http://forum.xbmc.org/showpost.php?p=506251 ("krumme" Bildwiederholraten)
- http://www.vdr-portal.de/board/thread.php?threadid=95292 (für VDR-Streaming)
- https://launchpad.net/~henningpingel/+archive/xbmc (PPA für die Version mit VDR-Support)
- http://blog.lawrenceso.ca/2008/10/ssd-optimization-on-ubuntu.html (Systemoptimierungen für SSDs)
- http://forum.xbmc.org/showthread.php?t=83696 (Wie richtet man Power-Management-Funktionen für XBMC ein, noch für PolicyKit-0, Anpassungen siehe oben)
- http://wiki.debian.org/plymouth (Boot-Splashscreen für Debian)
- http://wiki.xbmc.org/index.php?title=Keymap.xml (Dokumentation der XBMC-Keymaps)