FREIHEIT FÜR HASEN

OpenRabbit bauen

Hier erfährst Du was genau zu tun ist, um aus der normalen Firmware eine angepasste OpenRabbit-Firmware zu zaubern. Und wenn das geschafft ist, dann ist es nicht mehr weit bis zum fertigen OpenRabbit.

Hasenstall herrichten

Ich befinde mich während der Bastelarbeiten auf meinem Linux PC im Ordner ~/or und habe Mountpoints für RootFS (/mnt/rootfs, /mnt/rootfs-test) und YAFFS (/mnt/yaffs) angelegt. Da ich davon ausgehe, dass Du kein Linux-Noob bist, werde ich die einzelnen Befehle nicht groß erklären sondern immer nur schreiben, warum ich was, wann tue. Solltest Du ein Linux Neuling sein: viel Glück!

Firmware besorgen

Die Firmware findest Du auf den Mindscape Servern zum Download. Etwas schwieriger ist es, herauszufinden welches gerade die aktuelle Version ist. Dazu musst Du das Log des Bootvorgangs durchforsten und ziemlich am Ende die Zeilen

Rootfs version : 12.06.20.00
System version : 12.06.20.00

finden. Das ist die Information, die wir brauchen. Nun können wir das RootFS und den „Userspace“ (YAFFS) herunterladen:

$ wget http://update.karotz.com/eabi/rootfs/rootfs-12.06.20.00.tar.gz
$ wget http://update.karotz.com/eabi/yaffs/yaffs-12.06.20.00.tar.gz

Der Download der Firmware ist auf diesem Weg nicht offiziell unterstützt und es gibt auch kein Verzeichnis für die Dateinamen. Man muss ein wenig rumprobieren. Aber zumeist is die Versionsnummer das Datum der Veröffentlichung - und dieses erfährt man bei Facebook ;-)

Entpacken und mounten

Die Dateien werden nun entpackt. Fangen wir mit dem RootFS an. Im Archiv finden wir den Kernel des Hasen (zImage) und das eigentlich RootFS als CRAMFS, allerdings nochmals gezippt. Wenn man dieses dann auch noch entpackt, kann man es loop,ro mounten, eine Kopie erstellen und diese Kopie dann editieren:

$ tar xzf rootfs-12.06.20.00.tar.gz
$ gzip -d -c rootfs.img.gz > rootfs.img
$ mount -o loop,ro rootfs.img /mnt/rootfs
$ mkdir /tmp/rootfs
$ cp -R /mnt/rootfs/* /tmp/rootfs

Nun haben wir ein editierbares RootFS und können ein paar Anpassungen vornehmen:

Root Passwort ändern

Damit wir uns später per Telnet als root anmelden können passen wir dessen Passwort an. Ein geeigneter Passwort-Hash kann mit dem Befehl openssl passwd -1 erzeugt werden. Dieser Hash wird anschließend in der Datei /tmp/rootfs/karotz/etc/passwd (die Originaldatei findest Du am Ende der Seite) anstelle des vorhandenen eingesetzt. Alternativ kann man natürlich auch einfach einen neuen Benutzer anlegen. Der folgende Befehl fügt den Benutzer toor mit Passwort toor und Root-Rechten hinzu (Achtung! Einfache Anführungszeichen verweden!):

$ echo 'toor:$1$7JeaZ8jB$g4grftuQIwXv4xRrbGj75.:0:0:root:/usr/karotz:/bin/bash' >> /tmp/rootfs/karotz/etc/passwd

Shell und Telnet aktivieren

Damit nach einem Neustart die serielle Console automatisch gestartet wird und außerdem der Telnet Dämon anspringt, muss die Datei /tmp/rootfs/karotz/etc/inittab angepasst werden. Busybox kennt keine Runlevel, sondern führt die Befehle der inittab aus:

::askfirst:/bin/bash                       -> einkommentieren
::respawn:/usr/etc/init.d/telnet start     -> hinzufügen

'Message of the Day' anpassen

Um dem Hasen einen persönlichen Stempel aufzudrücken (und auch um meine Version von OR nachvollziehbar zu machen) füge ich der Datei /tmp/rootfs/karotz/etc/motd immer etwas Text hinzu:

                      _           _    ________________
                     / \         / \  /                \
                     \  \       /  / |  www.karotz.com  |
                      \  \     /  /   \____  __________/
              _  __    \  \___/  /    _    /_/        
             | |/ /    /         \   | |       
             | ' /  __|_  O __O __|  | |_  ____
             |  <  / _` || '__|/ _ \ | __||_  /
             | . \| (_| || |  | (_) || |_  / / 
             |_|\_\\__,_||_|   \___/  \__|/___|
             
                 ====  OpenRabbit v0.6 ====
                 == based on 12.06.20.00 ==
                 ===  www.openrabbit.de ===

Updates deaktivieren

Der Hase hat einen ausgeklügelten Updatemechanismus, der natürlich beim nächsten automatischen Update, also falls es eine neuere Version gibt, unser schönes OpenRabbit vom Hasen entfernt und wieder die Standardfirmware flasht. Das unterbinden wir, indem wir dem Mechanismus vorgaukeln, dass die Firmware aktuell sei. Dazu werden die folgenden Zeilen direkt hinter dem Shebang des Updateskripts /tmp/rootfs/karotz/scripts/update_rootfs.sh eingefügt:

#!/bin/bash
logger -s "[OpenRabitt] RootFS Update disabled"
exit 0

Möchte man das Update beim YAFFS („Userspace“) ebenfalls verhindern, so kann man die o.g. Zeilen auch in das Skript und /tmp/rootfs/karotz/scripts/update_yaffs.sh eintragen. Tut man das nicht, so wird das YAFFS automatisch „hochgezogen“, bis die Version zum RootFS passt.

rootfs.img.gz erzeugen

Zur Erstellung des Images werden die cramfsprogs benötigt. Falls diese noch nicht installiert sind, so kann das aus z.B. dem Repository mit APT geschehen. Anschließend kann man das CRAMFS erzeugen, testweise nochmal mounten und anschließend packen:

$ apt-get install cramfsprogs
$ mkcramfs -p /tmp/rootfs rootfs.img
$ mount -o loop,ro rootfs.img /mnt/rootfs-test
$ gzip -c rootfs.img > openrabbit.rootfs.img.gz

Die Datei openrabbit.rootfs.img.gz kopiert man sich nun auf einen USB-Stick, steckt diesen ins Heck des Hasen und macht hier weiter...


Windows?

Die obige Anleitung ist für Linux. Wenn Du es unbedingt mit Windows probieren willst, dafür gibt's auch ein Tool zum Editieren von cramfs Dateisystemen: NewTuxFlashTool

(Original-) Dateien

/karotz/etc/passwd -> /etc/passwd
root:$1$LqiRluZX$cKw/OIoSCUUK6jIP8Y6g1.:0:0:root:/usr/karotz:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/sbin:
nobody:*:99:99:Nobody:/:
dbus:x:81:81:dbus:/var/run/dbus:/bin/sh