tobix.org

Raspberry Pi, XBMC, OpenELEC - gepimpt!

undefined

Vieles kam zusammen: Neuer Fernseher, eine Soundbar, ein neuer Raspberry Pi (512MB) und alles (bis auf den Raspi) wurde an die Wand gebaut.
Wenn ich mir aber schon ein neues Setup zusammenbaue, muss auch der Raspi standesgemäß bestückt werden.

Ich machte mich also auf die Suche nach dem perfekten Setup und wurde nach vielen Foren und Blogs fündig!
Meine Suche soll nicht nur mir helfen, ich will auch anderen damit helfen, wir sind ja füreinander da!

Mein Ziel war ein performantes Mediacenter auf dem Raspberry Pi, so habe ich es mir eingerichtet und bin zufrieden, erst einmal :)

Wenn Ihr Fragen habt, gerne her damit, ich bemühe mich sie zu beantworten.

1. Die Distribution
Im Endeffekt gibt es drei ordentliche Distributionen, welche XBMC bzw. seit dem Wochenende Kodi, bereitstellen: OpenELEC, Raspbmc, Xbian

Mit Xbian und Raspbmc habe ich so gut wie keine Erfahrungen. In Foren und Blogs wird fast durchgehend OpenELEC empfohlen.
Meine Erfahrungen und die Masse an Empfehlungen brachte mich dazu, bei OpenELEC zu bleiben.
Also, rausfinden, welche Version ich haben möchte: stable, beta, nightly oder custom:

Stable ist, wie der Name schon sagt, stabil. Jetzt mal ehrlich, wer einen Raspi hat, will basteln. Da will ich nix stabiles haben, ich will bleeding edge! Immer das neuste, damit rumspielen, auf die Nase fallen und wieder von vorne anfangen. Somit vielen aber auch schon die Betas raus, die sind mit immer noch zu stabil.
Die Nightly Builds wären eine tolle Alternative, nur gefällt mir dabei der Updatemechanismus nicht, dazu später mehr.

Nach ausreichend Suchen bin ich auf zwei Foren gestoßen, die eigentlich zu offensichtlich sind: http://forum.xbmc.org und http://openelec.tv/forum
Gerade im ersten Forum hat es mir ein Thread angetan: http://forum.xbmc.org/showthread.php?tid=192380

Milhouse baut angepasste Versionen von OpenELEC, welche auf Geschwindigkeit ausgelegt sind, diese nutze ich und bin extrem zufrieden!

2. Der Skin
Ehrlich: Ich finde den standard Skin (Confluence) langweilig und nicht wirklich ansprechend. Ok, der Raspi ist kein Performancewunder, daher laufen auch nicht alle Skins wirklich flüssig. Auch hier habe ich ein wenig gesucht und haben DEN Skin gefunden, welcher mir außerordentlich gut gefällt: Bello (http://forum.xbmc.org/showthread.php?tid=158577)

Beim Raspi ist darauf zu achten, dass ein Skin möglichst wenige sich bewegende Bereiche hat, diese fressen extrem an der Performance und halten die CPU am glühen. Bei Bello können die Animationen deaktiviert werden, das sollte man dringend tun. Ebenso sollte der RSS Feed nicht eingeblendet sein. Dieses beides hilft schon einmal, den Skin in einer ordentlichen Geschwindigkeit vor sich zu haben.

3. Pimp it!
Ok, der Raspi läuft, sieht auch schön aus, jetzt müssen Medien hinein! Ich habe auf meinem NAS (HP Microserver mit Open Media Vault) zwei Freigaben per NFS eingerichtet. NFS ist wesentlich performanter als SMB, hat aber erst einmal keinen Authentifizierungsmechanismus. Dafür kann eingestellt werden, welcher Client, oder welches Netz, auf die Freigabe zugreifen dürfen. Ich habe meinem Raspi eine statische IP-Adresse verpasst, somit konnte ich einstellen, dass auch nur der Raspi auf die Freigabe zugreifen darf.

Der Raspi hat also Zugriff auf die benötigen Daten, nun funktioniert er immerhin, wie er soll. Nur nicht performant...

3.1 USB Stick
OpenELEC richtet die SD Karte des Raspi normalerweise so ein, dass es zwei Partitionen gibt: /system und /storage.
Von /system wird gebootet, diese Partition ist schreibgeschützt. /storage beinhaltet alles, was für xbmc notwendig ist.
Neben dem Übertakten (kommt gleich) bringt es am meisten, die /storage Partition auf einem USB Stick auszulagern.
Dazu nimmt man das frisch installierte OpenELEC, also die SD Karte, und steckt sie in seinen Rechner. Jetzt wird /system gemountet und die Datei cmdline.txt modifiziert.
Sollte der USB Stick der einzige Massenspeicher sein, sieht die passende Zeile so aus:

boot=/dev/mmcblk0p1 disk=/dev/sda1 quiet

Wahlweise kann man den Raspi auch starten und per SSH darauf zugreifen. Dann per "ls" gucken, welche UUID der Stick hat:
"ls -la /dev/disk/by-uuid/" und die passende UUID raussuchen, die Zeile sieht dann z.B. so aus:

boot=/dev/mmcblk0p1 disk=UUID=1ee5ada5-2545-4f59-8d54-40e305d3cf5e quiet

3.2 übertakten
Der Raspi ist offiziell zum übertakten freigegeben. Normalerweise läuft er mit 700MHz, das ist mir zu langsam, ich will das Maximum rausholen.
Jeder Raspi ist anders, meiner verträgt das übertakten sehr gut, somit läuft er stabil! auf 1GHz.

Die passende Config wird in /system, in der Datei config.txt, abgelegt.
Hier ist, zumindest bei OpenELEC, bereits eine Übersicht in der Datei vorhanden, welche alle Modi aufzeigt:

# no overclocking : 700 | 250 | 400 | 0
# mode 'Modest' : 800 | 300 | 400 | 0
# mode 'Medium' : 900 | 333 | 450 | 2
# mode 'High' : 950 | 450 | 450 | 6
# mode 'Turbo' : 1000 | 500 | 500 | 6
Ich habe mir für 'Turbo' entschieden, folge hier allerdings einem Tipp aus einem Forum und habe folgendes konfiguriert:
arm_freq=1000
core_freq=500
sdram_freq=600
over_voltage=6

Hinzu kommt noch der Parameter "force_turbo", welcher auf "0" steht, um nur bei Bedarf zu übertakten oder auf "1", damit der Raspi dauerhaft übertacktet ist.
VORSICHT: Sollte "force_turbo=1" eingestellt sein, geht die Garantie verloren. Bei einem 30€ Gerät lasse ich mich aber auf das Risiko ein.

3.3 Das Gehäuse
Der Raspi wird nackt, also nur die Platine, geliefert. Hier ist jedem zu raten, ein Gehäuse zu nutzen.
Ich habe mich für dieses hier entschieden: http://www.amazon.de/gp/product/B00CTKM9LM/ref=oh_aui_detailpage_o08_s00?ie=UTF8&psc=1
Der Vorteil ist, dass das Gehäuse nach allen Seiten offen ist, sich somit die heiße Luft nicht im Gehäuse sammelt. Und, es sieht verdammt gut aus!

4. Meine Config
Hier meine kompletten Configs:

4.1 cmdline.txt
boot=/dev/mmcblk0p1 disk=UUID=1ee5ada5-2545-4f59-8d54-40e305d3cf5e quiet

4.2 config.txt
################################################################################
# This file is part of OpenELEC - http://www.openelec.tv
# Copyright (C) 2009-2012 Stephan Raue (stephan@openelec.tv)
# Inspired and partly copied from:
# http://youresuchageek.blogspot.fr/2012/09/howto-raspberry-pi-openelec-on.html
#
# This Program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This Program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with OpenELEC.tv; see the file COPYING. If not, write to
# the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, MA 02110, USA.
# http://www.gnu.org/copyleft/gpl.html
################################################################################
# Bootloader configuration - config.txt
################################################################################

################################################################################
# Memory (System/GPU configuration )
################################################################################

# default GPU memory split (do not change if you do not know what you are doing)
gpu_mem=128

# SDRAM size based GPU memory split, uncomment and setup to override 'gpu_mem'
gpu_mem_256=100
gpu_mem_512=256

################################################################################
# Overclocking settings
# WARNING: Do not change/enable if you do not know what you are doing!
# The System may become unstable or you can have data corruption or
# you can loose your warranty if you set wrong settings
#
# please read: http://elinux.org/RPi_config.txt#Overclocking_configuration
################################################################################

# Overclock mode settings.
#
# default recommended values are: arm_freq | core_freq | sdram_freq | over_voltage
# no overclocking : 700 | 250 | 400 | 0
# mode 'Modest' : 800 | 300 | 400 | 0
# mode 'Medium' : 900 | 333 | 450 | 2
# mode 'High' : 950 | 450 | 450 | 6
# mode 'Turbo' : 1000 | 500 | 500 | 6

arm_freq=1000
core_freq=500
sdram_freq=600
over_voltage=6

# set to 'force_turbo=1' to disable dynamic overclocking (you can lose your warranty!)
force_turbo=1

# If you have any data corruption using Turbo Mode and overclocking
# try with this setting uncommented
# If this still fails, try to use Medium mode without "over_voltage=2"
# If it ultimately keeps failing, forget about this until it gets fixed
# Use a more conservative mode that will works fine in any cases:
# initial_turbo=30

################################################################################
# Overscan settings
################################################################################

# Make display smaller to stop text spilling off the screen
# see also http://www.raspberrypi.org/phpBB3/viewtopic.php?f=67&t=15700
# overscan_scale=1
# disable_overscan=1

# Adapt overscan values to your needs
# overscan_left=57
# overscan_right=59
# overscan_top=20
# overscan_bottom=20

################################################################################
# various settings see also: http://elinux.org/RPi_config.txt
################################################################################

# Force HDMI even if unplugged or powered off
# hdmi_force_hotplug=1

################################################################################
# License keys to enable GPU hardware decoding for various codecs
# to obtain keys visit the shop at http://www.raspberrypi.com
################################################################################

# decode_MPG2=0x00000000
# decode_WVC1=0x00000000
# decode_DTS=0x00000000
# decode_DDP=0x00000000
# decode_MPG2=0x00000000
# decode_WVC1=0x00000000

################################################################################
# End of default configuration
# all values below this line were inserted from config.txt.bk (your old config)
# and can be merged with the above values
################################################################################

Arch Linux installieren

//partitionieren
cfdisk
/dev/sda1 --> /boot #/boot wird nicht verschlüsselt
/dev/sda2 --> / & swap

//prepare
loadkeys de-latin1 #Deutsche Tastatur
wifi-menu #Internet ist toll

//crypt
modprobe dm-crypt #allgemeine Cryptigkeit
cryptsetup -c aes-xts-plain64 -y -s 512 luksFormat /dev/sda2
cryptsetup luksOpen /dev/sda2 lvm

pvcreate /dev/mapper/lvm
vgcreate main /dev/mapper/lvm
lvcreate -L 8GB -n swap main
lvcreate -l 100%FREE -n root main

mkswap /dev/mapper/main-swap #swap erstellen
mkfs.ext4 /dev/mapper/main-root #/ formatieren
mkfs.ext4 /dev/sda1 #/boot formatieren

//mount
mount /dev/mapper/main-root /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
swapon /dev/mapper/main-swap

//install
pacstrap /mnt base base-devel grub-bios wicd #wicd kann man nutzen, wird aber nicht mehr weiter entwickelt

genfstab -p -U /mnt > /mnt/etc/fstab nano /mnt/etc/fstab #richtige UUIDs raussuchen!

//chroot
arch-chroot /mnt

vi /etc/locale.gen locale-gen KEYMAP="de-latin1"
ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
echo rincewind > /etc/hostname

nano /etc/mkinicpio.conf
MODULES="vfat ext2 ext4" HOOKS="... block keymap encrypt lvm2 ..."

nano /etc/default/grub
GRUBCMDLINELINUX="cryptdevice=/dev/sda2:lvm"

mkinitcpio -p linux grub-mkconfig -o /boot/grub/grub.cfg grub-install /dev/sda1

passwd
exit
reboot

Home