WD TV Live Firmware im Selbstbau (Teil 1)
- WD TV Live Firmware im Selbstbau (Teil 1)
- WD TV Live Firmware im Selbstbau (Teil 2)
Ich habe vor Kurzem bereits erläutert, wie ich mir die Firmware meines WD TV Live wünsche – abseits von der offiziellen WD-Firmware und der für meine Bedürfnisse völlig überladenen WDLXTV-Live-Firmware von b-rad und seiner Crew. Also habe ich mir schon seit einiger Zeit Gedanken darüber gemacht, wie ich was evtl. umsetzen könnte. Voraussetzung für risikofreie Tests ist ein Testsystem, das nicht beim kleinsten Fehler direkt meinen WD TV Live shreddert. In der WDLXTV-Live-Firmware ist ein Verfahren integriert, welches das Booten des WD TV Live aus einem Ext3-Filesystem-Image heraus ermöglicht. Da ich momentan sowieso auf die WDLXTV-Firmware setze möchte ich diese Möglichkeit nutzen, um mir ‘meine’ eigene Firmware zu bauen. Und diese Bastelarbeiten (ob mit oder ohne Erfolg) möchte ich hier ein wenig dokumentieren.
Heute habe ich mich damit befasst, ein Ext3-Image so zu erzeugen, dass die WDLXTV-Firmware das Image lädt. Diese Aufgabe scheint nicht einfach zu sein, daher hatte ich im WDLXTV-Live-Forum bereits einmal um Information gebeten. Leider scheint die Community immer gleich der Meinung zu sein, es würden nur Blender, Täuscher und Diebe unterwegs sein, denn außer Zweifel an meinen Absichten kam leider keine brauchbare Information. Also muss ich irgendwie selbst herausbekommen, wie ein bootbares Ext3-Filesystem-Image aufgebaut ist. Das heißt, dass ich mich intensiv mit Linux auseinandersetzen muss…
Nach Totalpleiten zu Beginn meiner Versuche habe ich es heute geschafft, ein vorhandenes Ext3-Image (WDLXTV) so in mein eigenes Ext3-Image zu kopieren, dass der Bootvorgang davon erfolgreich ist.
Wie erstelle ich ein entsprechendes Image-File unter Linux?
# dd if=/dev/zero of=/root.bin bs=1024 count=307200
erzeugt eine 300 MByte große Datei /root.bin.
# mkfs.ext3 -b 4096 -I 256 -L "ext3-boot-live" /root.bin
erzeugt auf dieser Datei ein Ext3-Dateisystem mit einer Blockgröße von 4 KB, einer Inode-Größe von 256 Bytes und dem Label “ext3-boot-live”. Das Image lässt sich jetzt mit
# mount -o loop /root.bin /mnt/ext3fs
mounten (vorausgesetzt, das Verzeichnis /mnt/ext3fs ist vorhanden). Die Eigenschaften des Ext3-Filesystems kann man sich mit dem Kommando
# dumpe2fs /dev/loop0
sehr detailiert anzeigen lassen. Wenn jetzt die Dateien von gemounteten Ext3-WDLXTV-Image hierher kopiert werden, das Image umountet wird und auf einen USB-Stick kopiert wird, lässt sich der WD TV Live davon wunderbar booten.
Soweit die ersten Informationen zum Stand… Viel Spaß beim Nachspielen
Nachtrag (23.08.2010):
Ich habe gestern noch vesucht herauszufinden, wo die WDLXTV-FIrmware das root.bin-Image lädt. Und das kam bei meiner Suche (aus dem Root-Verzeichnis des Ext3-Images) heraus…
root@ubuntuvm:/mnt/ext3# grep root.bin `find . -type f 2>/dev/null` ./init: echo "Searching for root.bin or active filesystem..."./init: if [ -f /mnt/root.bin -o -x /mnt/.rootFS/init ] ; then ./init: if [ -f /mnt/root.bin ] ; then ./init: echo "Mounting root.bin image:" ./init: mount -o loop,nodiratime,noatime,rw /mnt/root.bin /boot ./init:[ $? == 0 ] && logger -t init "root.bin or active filesystem loaded" ./bin/youtube-keys: logger -t youtube-keys "YouTube keys corrupted, deleting...New keys must be generate from official firmware, root.bin available" ./bin/crazymount: root.bin) ./sbin/usb.power.off:[ $? -eq 0 ] && echo "root.bin or live FS active, cannot turn off USB bus power!" && logger -t "usb.power.off" "root.bin or live FS active, cannot turn off USB bus power!" && exit 1

