Mediabox: Difference between revisions

From chaoswiki
Jump to navigation Jump to search
No edit summary
Line 18: Line 18:


== Software ==
== Software ==
* Debian squeeze
* Ubuntu 10.10
* XBMC
* XBMC


== Installation ==
== Distribution ==
Die Auswahl einer passenden Linux-Distribution gestaltete sich als nicht ganz einfach. Unter Ubuntu gab es Probleme mit dem Shutdown und Reboot von XBMC aus, ältere Distributionen kommen teilweise mit sehr veralteter Software, welche manuelle Nachbesserung benötigt.
1. Netboot-Servers mit tftpd und dhcpd einrichten (wird hier nicht im Detail beschrieben, siehe Links).


Debian squeeze hat sich schliesslich als guter Kompromiss zwischen Funktionstüchtigkeit und Aktualität herausgestellt. Leider bestehen noch Probleme mit unserer Fernbedienung, diese dürfte sich dann aber von selbst lösen wenn XBMC 10.x (Dharma) Release-Status erreicht und ins Paketarchiv aufgenommen wird.
2. http://archive.ubuntu.com/ubuntu/dists/maverick/main/installer-amd64/current/images/netboot/netboot.tar.gz herunterladen und ins TFTP-Verzeichnis entpacken.


== Installation ==
3. Installation konfigurieren, eine Partition für das Betriebssystem, keinen Swap (ist unnötig). Bei tasksel '''keine''' Pakete auswählen. Alles Nötige wird später manuell installiert. Automatische Sicherheitsupdates aktivieren, das spart manuellen Administrationsaufwand.
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.
4. Nach dem ersten Boot vom neuen System: <tt>/etc/fstab</tt> editieren und den Mountoptionen für <tt>/</tt> <tt>noatime,discard</tt> hinzufügen. Reduziert die SSD-Abnutzung. Ausserdem kann man einige Verzeichnisse als RAM-Disk einrichten:
<pre>
tmp /tmp tmpfs size=32M,nodev,mode=1777 0 0
run /var/run tmpfs size=32M,nodev,mode=0755 0 0
lock /var/lock tmpfs size=32M,nodev,mode=1777 0 0
</pre>


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:
5. Das XBMC-PPA (https://launchpad.net/~team-xbmc/+archive/ppa) hinzufügen und auf lucid ändern, da es immer noch keine maverick-builds gibt. Dann die Software installieren.
<pre>
<pre>
tmp /tmp tmpfs nodev,mode=1777 0 0
# apt-get install python-software-properties pkg-config
run /var/run tmpfs nosuid,mode=0755 0 0
# add-apt-repository ppa:henningpingel/xbmc
lock /var/lock tmpfs noexec,nosuid,nodev,mode=1777 0 0
# nano /etc/apt/sources.list.d/team-xbmc-ppa-maverick.list
maverick auf lucid ändern, Ctrl-x, y
# apt-get update
# apt-get install xbmc-standalone nvidia-current libvdpau1 alsa-utils samba-common
# nvidia-xconfig
</pre>
</pre>

6. ''TODO:'' <tt>/etc/init/xbmc</tt> erstellen

99. Wenn der Maverick-Build von Henning Pingel endlich durchläuft, von Team-XBMC auf dieses PPA wechseln, dann haben wir auch VDR-Streaming.

== Neuer Versuch mit Debian squeeze ==

Ubuntu macht zuviel Ärger, versuchen wir mal Debian.

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

2. Standardinstallation, in tasksel alles abwählen.

3. TRIM aktivieren, in <tt>/etc/fstab</tt> <tt>noatime,discard</tt> beim rootfs eintragen.


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.
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.
Line 220: Line 198:
* 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://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.debian.org/plymouth (Boot-Splashscreen für Debian)
* http://wiki.xbmc.org/index.php?title=Keymap.xml (Dokumentation der XBMC-Keymaps)

Revision as of 13:01, 31 October 2010

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 gestaltete sich als nicht ganz einfach. Unter Ubuntu gab 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 hat sich schliesslich als guter Kompromiss zwischen Funktionstüchtigkeit und Aktualität herausgestellt. Leider bestehen noch Probleme mit unserer Fernbedienung, diese dürfte 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 und X testen: aplay -l (da sollten sowohl HDA Intel als auch NVIDIA HDMI Geräte auftauchen), mit alsamixer den Front-Kanal hochschrauben, dann startx.

9. Als normaler Benutzer einloggen und xbmc testen: startx, gefolgt von xbmc

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:

#! /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 <seto@kabelsalat.ch>

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
}

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
ResuktInactive=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: