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