:: fischer-net.de

Seit langem habe ich mehrere DBoxen im Einsatz und gab mich mit dem Funktionsumfang von Neutrino zufrieden. Hin und wieder schaute ich über den Tellerrand und so entdeckte ich vor einiger Zeit My Media System (MMS). Die Entwicklung war damals schon gut fortgeschritten, allerdings für meine Zwecke noch nicht reif für den täglichen Einsatz. Dennoch verfolgte ich interessiert die Beträge rund um MMS, besonders die Themen die sich mit der Hardware befassten. So kam es, das ich mich seinerzeit für die T-Online Vision S100 entschied und auch gleich zwei von diesen Boxen "mit PCI-Slot" bei eBay ersteigern konnte. Doch zuerst einmal ein paar Fakten:

 

My Media System

MMS - StartmenüMMS - StartmenüMy Media System (MMS) ist eine Applikation mit der Videos, Musik, Internet-Radio, Bilder, Wetterdaten und vieles mehr auf Set-Top-Boxen oder Multimedia PC's auf dem Fernseher abgespielt oder dargestellt werden können. Dabei bietet MMS unter Linux viele Möglichkeiten zur Erweiterung und bindet bestehende Software (MPlayer, VDR, Xine) nahtlos in das System ein.

Über sogenannte Pyglets lassen sich weitere Extras die in Phyton geschrieben wurden einbinden. Ob Zugriff auf die ZDFmediathek, Apple Movie Trailers, YouTube; MMS hat einiges unter der Oberfläche vereint.

Weitere Informationen sind der Homepage oder dem Wiki zu entnehmen.

 

T-Online Vision S100

T-Online Vision S100T-Online Vision S100

Die Set-Top-Box wurde als IP-Streamingclient zum Empfang von IP-TV über einen DSL-Breitbandanschluss in Verbindung mit dem Video-on-Demand-Angebot Vision von T-Online vertrieben. Der Dienst Vision wurde am 30.06.2008 eingestellt, so dass die Boxen für viele nutzlos wurden. Vom Aufbau ähnelt die Box der Bose Zenega 101S CI und der Samsung SMT 7020S.

Unter der Haube steckt allerdings ein vollwertiger PC auf Intelbasis:

Prozessor
Intel Celeron 733MHz
Bios AMI 1.07 (Update auf 1.09 sinnvoll)
Operating System
Windows CE .Net 4.2
RAM
128MByte (SDRam)
Grafikkarte Intel 830M Embedded Graphics (Intel 82830) Shared Memory
TV-Out
Focus 454 TVOut encoder
Harddisk
32MByte Disk-On-Module (DOM)
WLAN
802.11G über Mini-PCI-Karte (Model. XG-601GB)
LAN
1x 10/100Mbit/s
USB
2x USB2.0
Audio
analog AC97 2 Kanäle, digital S/PDIF
Video out
CVBS, RGB für SCART, S-Video

 

 

 

 

 

 

 

 

 

  

 

Proof of Concept

Gleich zu Beginn modifizierte ich die beiden S100 und spendierte ihnen einen VGA-Adapter, eine Stromversorgung für interne HDD's sowie den sogenannten Kondensatormod zum langsamen Runterfahren. Da ich seinerzeit etwas "Lötfaul" war, ersteigerte ich bei eBay auch gleich zwei kompletten Umbausätze in denen jeweils die notwendigen Bauteile (Elko, VGA-Anschlusskabel, Kabel-Schnellklemmverbinder, etc.) Bestandteil waren.

Wer die Modifikationen selber vornehmen möchte / muss findet im Menü "Links" weiterführende Verweise. Die Modifikationen wurden vielfach ausführlich beschrieben und bebildert, weshalb ich an dieser Stelle darauf verzichte.

Da mehrfach von Bootproblemen bei eingesteckten USB Komponenten berichtet wurde, haben die Boxen gleich auch noch ein BIOS Update ( siehe Downloads T-Online Vision S100 ) bekommen mit dem diese Probleme beseitigt wurden.

Neben den oben erwähnten Modifikationen habe ich auch das DOM (Disk on Module) für meine Zwecke vorbereitet. Da ich für das darauf befindliche Windows CE keine Verwendung habe und die S100 zwar laut BIOS per PXE booten soll, es aber nicht tut, habe ich kurzerhand auf das DOM einen PXE-Bootloader installiert.

Dazu ist es notwendig das DOM entweder in einen PC einzubauen (Vorsicht: Bei falschen Angaben kann das installierte System beschädigt werden!), der noch einen freien IDE-Port hat oder direkt auf der S100 ein Live-System z.B. über USB-Stick booten um das Image auf das DOM zu schreiben.

Die anfängliche Euphorie wich schnell der Ernüchterung, da ich trotz dem BIOS 1.09 mit vielen unerklärlichen Reboots zu kämpfen hatte und mein Hauppauge WinTV Nova-T USB-Stick nicht so richtig laufen wollte. DVB-T war allerdings auch nicht mein Fokus: Ich wollte einen Ersatz für meine DBoxen (DVB-S).

Schon lange betreibe ich VDR auf meinen Server und so sollte auch eine DVB-S Karte in die S100 verbaut werden. Durch die anfängliche Instabilität wollte ich jedoch nicht auf Verdacht eine FullFeatured-Karte nur mal so zum Testen kaufen; so blieb es bei einem Proof-of-Concept und die beiden S100 verschwanden erst mal wieder im Keller.

Gut ein Jahr später ( Ende Mai 2009 ) stolperte ich über Debvision, eine speziell auf die S100 zugeschnittene Linux Distribution, basierend auf Debian Etch. Neugierig was sich inzwischen in Sachen MMS getan hat, holte ich die Boxen wieder hervor.

Die Installation ist ausführlich auf der Wiki-Seite dokumentiert und ging recht zügig voran. Nachdem ich mir das ein bis zwei Tage näher betrachtete kam ich zu dem Entschluss, das System produktiv einzusetzen. Allerdings wollte ich weder von einem USB-Stick, noch von der inzwischen eingebauten 2.5" Harddisk booten. Da USB-Stick's nur eine begrenzte Anzahl von Schreibvorgängen unterstützen, wollte ich nicht irgendwann vor einem kaputten System stehen. Die interne Harddisk kam auch nicht in Frage, da ich meine komplette AV-Anlage mittels Funkschaltsystem FS20 aus- bzw. einschalte und dieses für die Harddisk auch nicht das Beste ist.

Da ich schon lange netzwerkbasierende Installationen über PXE von meinem Linux-Server vornehme, lag es nahe, das die S100 ein Diskless-Client werden sollte. Leider ging das nicht Out-of-the-box, da der Kernel von Debvision kein booten von NFS zulässt. Da Debvision letztlich eine Zusammenstellung diverser Scripte aus dem MMS Forum ist, und inzwischen Debian Lenny erschien, musste Debvision weichen.

Das folgende HowTo beschreibt den Betrieb einer T-Online Vision S100 als Diskless-Client basierend auf Linux (Debian 5.0 Lenny). Voraussetzung ist ein funktionsfähiger Server der NFS, DHCP sowie TFTP bereitstellt. Sofern es nicht anders erwähnt wird, sind die Befehle in der folgenden Beschreibung als root auszuführen.

 

DOM mit PXE-Boot

S100 über ein Live-System booten (z.B. über USB-Stick oder CD/DVD). Die Bootreihenfolgen muss vorher im BIOS der S100 angepasst werden. Nachdem das System gestarte wurde, gilt es das richtige Device für das DOM zu finden. Dies geschieht mit:

hdparm -g /dev/hdX

hdX ist jeweils anzupassen (also hda, hdb, etc.). Das DOM hat 62496 Sektoren, d.h. wenn die Ausgabe von hdparm ein "sectors = 62496" auswirft, hat man das richtige Device gefunden. In meinem Fall war es /dev/hda.

Sichern des Inhalts:

dd if=/dev/hdX of=/<pfad der sicherung>/backup-dom.img

Nun kann das neue Image ( Downloads: T-Online Vision S100 ) geschrieben werden:

bzip2 -d -c dom_pxe-boot.bz2 | dd of=/dev/hdX

Nachdem das Image geschrieben wurde sollte getestet werden, ob der Bootloader funktioniert. Dazu im BIOS das DOM als Bootdevice auswählen und die S100 neu starten. Nun sollte sich der PXE-Bootloader melden.

 

Debian 5.0 installieren

Es gibt mehrere Varianten das zu installierende Debian für den Diskless-Client vorzubereiten. Eine Variante wäre die Installation direkt auf dem Server mittels debootstrap. Eine weitere Variante ist die Installation direkt auf der S100 auf einem USB-Stick. Ich habe mich für die zweite Variante entschieden, da ich dann eine fertige Basisinstallation für weitere Versuche gleich auf USB-Stick habe.

Voraussetzung:

  • USB-Stick auf dem Debian installiert werden soll in der S100
  • per PXE-Boot direkt vom Server installieren, alternativ: angeschlossenes CD/DVD Laufwerk mit Debiab 5.0

Nun wird erstmal Debian installiert. In meinem Fall habe ich es direkt über PXE-Boot von meinem Server installiert, was hier aber keinen Unterschied darstellt. Während der Installation habe ich folgende Vorgaben getroffen:

  • Einzurichtender User: vision
  • Partitionierung USB-Stick:
hda1: /boot 32 MByte (Bootflag setzen nicht vergessen!)
hda2: /swap 256 MByte
hda3: / 2000 MByte
hda4: /home Restlicher Speicherplatz
  • zu Installierende Software: keine

Achtung: Bei der Installation von Grub meldet Debian, das kein vorhandenes System gefunden wurde. Hier muss darauf geachtet werden, das nicht der Masterbootrecord des DOM überschrieben wird. Ansonsten muss das DOM wie oben neu erstellt werden.

RechnernameRechnername DomainnameDomainname PartitionsmethodePartitionsmethode
PartitionierungPartitionierung BenuternameBenutzername BenutzerkontoBenutzerkonto
SoftwareauswahlSoftwareauswahl GRUB-BootloaderGRUB-Bootloader  

Sollte der USB-Stick im Anschluss der Installation nicht booten, so kann man ihn auf einem anderen System (oder mittels Live-System auf der S100) wieder bootfähig machen. Auch hier ist wieder darauf zu achten, das man das richtige Device erwischt (siehe oben: DOM mit PXE-Boot).

USB-Stick mounten (sdX ist jeweils anzupassen (also sda, sdb, etc.):

mkdir /media/s100
mount /dev/sdX3 /media/s100
mount /dev/sdX1 /media/s100/boot

Grub installieren:

grub-install --root-directory=/media/s100 /dev/sdX3 --recheck
grub-install --root-directory=/media/s100 /dev/sdX3

Anpassen der Grub-Installation: 

/media/s100/boot/grub/device.map

(hd0) /dev/sda

/media/s100/boot/grub/menu.lst

title Debian GNU/Linux, kernel 2.6.26-2-686
root (hd0,0)
kernel /vmlinuz-2.6.26-2-686 root=/dev/sda3 ro
initrd /initrd.img-2.6.26-2-686

USB-Stick entfernen:

sync
umount /media/s100/boot/
umount /media/s100/

Zum Abschluss sollte die Installation getestet werden in dem vom USB-Stick gebootet wird. Sollte dieses fehlschlagen, dann ist bei der Installation von Grub etwas schief gelaufen oder aber man hat einen USB-Stick erwischt, der überhaupt nicht booten kann.

Sinnvoll ist an dieser Stelle auch noch die Installation von open-ssh:

apt-get install openssh-server

 

Vorbereiten des Diskless-Client auf dem Server

Nachdem die Installation getestet wurde kann nun der Inhalt des USB-Stick's auf den künftigen Server kopiert werden. Dazu sollte auf dem Server das künftige root-dir angelegt werden, von dem die S100 booten soll, z.B.:

mkdir /srv/share/diskless/s100-1/

USB-Stick mounten (sdX ist jeweils anzupassen (also sda, sdb, etc.):

mkdir /media/s100
mount /dev/sdX3 /media/s100
mount /dev/sdX1 /media/s100/boot
mount /dev/sdX4 /media/s100/home

Kopieren der Installation:

cd /media/s100
cp -av * /srv/share/diskless/s100-1/

Nun wird der Client für PXE-Boot vorbereitet. Dazu sind die folgende Änderungen vorzunehmen, die am besten in der chroot-Umgebung durchgeführt werden.

chroot /srv/share/diskless/s100-1/

Virtuelle Verzeichnisse einbinden

mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t devpts devpts /dev/pts

Paketliste aktualisieren und weitere Pakete installieren

apt-get update
apt-get install vim mc zip unzip bzip2 nfs-common less ntp rsync psmisc
apt-get install fakeroot build-essential libncurses5-dev zlib1g-dev
apt-get install kernel-package linux-source-2.6.26

Interfaces anpassen

cp /etc/network/interfaces /etc/network/interfaces.orig
cat > /etc/network/interfaces << EOF
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet manual
EOF

Swap-File erstellen

dd if=/dev/zero of=/var/swap bs=1k count=128K
chmod 600 /var/swap
mkswap -L swap /var/swap

Einbinden des Swap-Files als loop-Device

cp /etc/rc.local /etc/rc.local.orig
sed -i 's/^exit 0//' /etc/rc.local
cat >> /etc/rc.local << EOF
losetup /dev/loop0 /var/swap
swapon /dev/loop0

exit 0
EOF

Filesysteme anpassen

cp /etc/fstab /etc/fstab.orig
cat > /etc/fstab << EOF
# /etc/fstab: static file system information.
#
# <file system> <mount point&gt <type> <options> <dump> <pass>
proc /proc proc defaults 0 0
/dev/hda2 none swap sw 0 0
# loop Device fuer Swap-Datei
/dev/loop0 none swap sw,noauto 0 0
EOF

Asynchrones mounten abschalten

cp /etc/default/rcS /etc/default/rcS.orig
cat > /etc/default/rcS << EOF
#
# /etc/default/rcS
#
# Default settings for the scripts in /etc/rcS.d/
#
# For information about these variables see the rcS(5) manual page.
#
# This file belongs to the "initscripts" package.
TMPTIME=0
SULOGIN=no
DELAYLOGIN=no
UTC=yes
VERBOSE=no
FSCKFIX=no
RAMRUN=no
RAMLOCK=no
ASYNCMOUNTNFS=no
EOF

Nach dem die notwendigen Änderungen für ein Diskless-Client vorgenommen wurden benötigt der Client noch einen angepassten Kernel.

Als erstes wird der Kernel vorbereitet:

cd /usr/src/
tar xjf linux-source-2.6.26.tar.bz2
ln -s linux-source-2.6.26 linux
cp /boot/config-2.6.26-2-686 /usr/src/linux/.config
cd linux/
make oldconfig
make menuconfig

Die folgenden Einstellungen müssen im Kernel angepasst werden. Bei Bedarf können weitere Anpassungen vorgenommen werden.

-> Networking
    -> Networking support (NET=y)
        -> Networking options
            -> TCP/IP networking (INET=y)
            -> IP: kernel level autoconfiguration (CONFIG_IP_PNP=y)
            -> IP: DHCP support (CONFIG_IP_PNP_DHCP=y)
-> Device Drivers
    -> Network device support (CONFIG_NETDEVICES=y)
        -> Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET=y)
            -> EISA, VLB, PCI and on board controllers (CONFIG_NET_PCI=y)
                -> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL) (CONFIG_8139CP=y)
                -> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter Support (CONFIG_8139TOO=y)
-> File systems
    -> Network File Systems
        -> NFS file system support (CONFIG_NFS_FS=y)
        -> Root file system on NFS (CONFIG_ROOT_NFS=y)

Als nächstes wird die initrd vorbereitet:

cp /etc/initramfs-tools/initramfs.conf /etc/initramfs-tools/initramfs.conf.orig
cat > /etc/initramfs-tools/initramfs.conf << EOF
# MODULES: [ most | netboot | dep | list ]
# most - Add all framebuffer, acpi, filesystem, and harddrive drivers.
# dep - Try and guess which modules to load.
# netboot - Add the base modules, network modules, but skip block devices.
# list - Only include modules from the 'additional modules' list
#
MODULES=netboot

# BUSYBOX: [ y | n ]
BUSYBOX=y

# KEYMAP: [ y | n ]
# Load a keymap during the initramfs stage.
KEYMAP=n

# NFS Section of the config.
# BOOT: [ local | nfs ]
# local - Boot off of local media (harddrive, USB stick).
# nfs - Boot using an NFS drive as the root of the drive.
BOOT=nfs

# DEVICE: ...
# Specify the network interface, like eth0
DEVICE=eth0

# NFSROOT: [ auto | HOST:MOUNT ]
NFSROOT=auto
EOF

Nun wird der Kernel übersetzt:

make-kpkg clean
fakeroot make-kpkg --initrd --revision=s100 kernel_image

Kernel und initrd installieren

dpkg -i ../linux-image-2.6.26_s100_i386.deb

Zum Schluss noch die virtuellen Devices unmounten:

umount /proc; umount /sys; umount /dev/pts
#### chroot Umgebung verlassen
exit

 

Vorbereiten der PXE-Boot Umgebung

Nachdem der Diskless-Client wie oben vorbereitet wurde, wird die PXE-Boot Umgebung angepasst. Dies geschieht in Abhängigkeit der bestehenden Umgebung. In meiner Umgebung lautet der Pfad /srv/install/tftpboot/. Dies kann je nach Umgebung variieren. Ggf. muss der Pfad angepasst werden.

Anlegen der Diskless-Client Umgebung

cd /srv/install/tftpboot/
mkdir -p diskless/s100-1

Kopieren der boot-Umgebung (Kernel, initrd, config, System.map)

cp /srv/share/diskless/s100-1/boot/*.26 diskless/s100-1/

Damit der Diskless-Client booten kann muss die entsprechende Konfiguration in PXELINUX eingetragen werden:

Anpassen des Boot-Menues

cd pxelinux.cfg
cat > s100-1 << EOF
# S100 Vision
LABEL s100-1
KERNEL diskless/s100-1/vmlinuz-2.6.26
APPEND initrd=diskless/s100-1/initrd.img-2.6.26 netboot=nfs root=/dev/nfs nfsroot=192.168.1.5:/srv/share/diskless/s100-1,v3,rsize=65536,wsize=65536 ip=dhcp rw --
IPAPPEND 1
TIMEOUT 50
EOF

Konfiguration der MAC-Adresse (Adresse beginnt immer mit 01-gefolgt-von-der-korrekten-MAC-der-S100). Die MAC-Adresse muss mit der S100 übereinstimmen sonst wird nicht gebootet! Hier nur ein Beispiel:

ln -s s100-1 01-00-02-ff-01-4c-e7

 

PXE-Bootumgebung testen und MyMediaSystem installieren

 Wurden alle obigen Schritte korrekt durchgeführt, steht einem ersten Bootvorgang nichts mehr im Wege. Die S100 sollte nach dem Einschalten direkt in das System booten. Ggf. sind obige Einstellungen nochmals zu prüfen, falls der Bootvorgang nicht korrekt durchgeführt werden kann.

Nun ist es Zeit endlich My Media System zu installieren. Im Wiki von MMS beschreibt Mikka in einem Artikel die Installation auf Debian Etch. Dazu stellt Mikka die komplette Umgebung für MMS als Installations-Script zu Verfügung. Dieser Weg erspart eine Menge Arbeit.

MMS Installations-Script downloaden

cd /usr/local/src/
wget http://www.mailwurm.org/mms/s100/vision_install.tgz

Script entpacken und installieren

tar xvzf vision_install.tgz
cd vision_install
./install.sh

Die Installation wird nun durchlaufen. Das Script hinterfragt einige Angaben zur MMS-Umgebung, die nach den eigenen Anforderungen angepasst werden müssen.

Nachdem die Installation abgeschlossen wurde, steht dem Genuss von My Media System auf der S100 Vision nichts mehr entgegen!

Weiterführende Links:

siehe Links -> My Media System