Vor einigen Tagen schrieb ich darüber, wie man auf den TP-Link WR703N Router OpenWrt aufspielen kann und sich somit für ~20€ einen günstigen OpenWrt-Router bauen kann. Tatsächlich funktioniert OpenWrt auf dem WR703N wirklich gut, jedoch ergibt sich im Nachhinein folgendes Problem. Der WR703N hat leider nur 4MB Flash(-Speicher), sodass einem nach der Installation von OpenWrt (abhängig vom gewählten Image) gerade einmal rund 900 kB freier Speicher zur Verfügung stehen. Wenn man nun jedoch eine oder mehrere Erweiterungen für OpenWrt installieren will, was für mich das OpenWrt System erst so richtig interessant macht, so wird es schnell eng. Eine Lösung hierfür lautet “ExtRoot”.
ExtRoot ist eine Funktionalität, um die OpenWrt erweitert werden kann und die es ermöglicht, das Dateisystem des Routers auf ein externes Speichermedium auszulagern. Dies kann zum Beispiel ein USB-Stick oder eine externe Festplatte sein. Wie man ExtRoot für den WR703N einrichtet, möchte ich euch nachfolgend zeigen.
ExtRoot auf dem TP-Link WR703N einrichten
Für nachfolgende Anleitung habe ich mich für das Auslagern des Dateisystems auf einen USB-Stick entschieden. Es wäre, wie oben beschrieben, aber auch möglich z.B. eine externe Festplatte zu nutzen.
Schritt 0
Bevor es losgeht, wird ein USB-Stick mit dem ext4 Dateisystem benötigt. Theoretisch könnte man diesen auch direkt unter OpenWrt am Router erstellen, jedoch hatte ich auf meinem TP-Link WR703N zu wenig Speicher, um sowohl die Tools zum USB-Stick formatieren und die Tools für ExtRoot zu installieren.
Wie ihr einen USB-Stick mit ext4 als Dateisystem unter Linux erstellen könnt, könnt ihr hier (mit Oberfläche) und hier (mittels Shell) lesen. Wie man einen USB-Stick mit ext4 Dateisystem unter Windows erstellen könnt, habe ich hier beschrieben.
Habt ihr einen USB-Stick vorbereitet, steckt den USB-Stick in den Wr703N und loggt euch anschließend per SSH (zum Beispiel mit Putty) auf dem Router ein.
Schritt 1
Zuerst überprüft ihr, ob euer Router den USB-Stick erkannt hat und dessen Firmware vielleicht schon die USB-Speicher-Unterstützung bietet.
ls /dev/sd*
Der obige Befehl sollte alle externen Laufwerke auflisten. Ist das Ergebnis des Befehls leer, so müsst ihr das Paket zur USB-Speicher-Unterstützung installieren. (Vorher sollte noch die Paketliste aktualisiert werden.)
#Paketliste aktualisieren opkg update #USB-Unterstützung installieren opkg install kmod-usb-storage
Nach erfolgreicher Installation des Pakets könnt ihr den ersten Befehl (“ls /dev…”) noch mal ausführen. Nun sollte auch der USB-Stick angezeigt werden.
Schritt 2
Als nächstes müssen wir die Pakete, die für ExtRoot sowie die ext4-Dateisystem-Unterstützung benötigt werden installieren. Dies funktioniert mittels nachfolgendem Befehl.
opkg install kmod-fs-ext4 block-mount
Schritt 3
Nun lagern wir das Dateisystem auf den USB-Stick aus. Dazu gebt ihr folgende Befehle ein. (Ein Befehl pro Zeile.)
mkdir -p /mnt/sda1 mount /dev/sda1 /mnt/sda1 mkdir -p /tmp/cproot mount --bind / /tmp/cproot tar -C /tmp/cproot -cvf - . | tar -C /mnt/sda1 -xf - umount /tmp/cproot umount /mnt/sda1
Schritt 4
Nun muss noch eine kleine Anpassung an der /etc/config/fstab Datei gemacht werden.
vi /etc/config/fstab
Innerhalb von vi wechselt ihr mittels i-Taste in den Bearbeitungsmodus. Dort ändert ihr die folgenden beiden Zeilen im config mount-Block ab.
#alt option target /home option enabled 0 #neu option target / option enabled 1
Mittels ESC-Taste verlasst ihr den Bearbeitungsmodus. Mit ! wechselt ihr in den Befehlmodus. Mit :w speichert ihr euch Änderungen und mit :q schließt ihr danach vi.
Schritt 5
Nun müsst ihr den Router noch neustarten.
reboot
Nachdem Neustart des Router loggt ihr euch wieder per SSH ein. Mittels nachfolgendem Befehl könnt ihr testen, ob alles geklappt hat.
#Speicherbelegung überprüfen df
In der Zeile rootfs solltet ihr nun sehen, dass die Speicherkapazität der eures USB-Sticks entspricht. Ein Blick in’s Web-Backend des Routers (im System->Software Tab) sollte auch offenbaren, ob alles geklappt hat.
Das war es auch schon. Die Anleitung sieht nach mehr Aufwand aus, als es eigentlich ist. Also lasst euch nicht abschrecken. Solltet ihr noch Fragen haben, dann scheut euch nicht mir einen Kommentar zu schreiben.
I’ll gear this review to 2 types of people: current Zune owners who are considering an upgrade, and people trying to decide between a Zune and an iPod. (There are other players worth considering out there, like the Sony Walkman X, but I hope this gives you enough info to make an informed decision of the Zune vs players other than the iPod line as well.)
sehr cool. vielen dank!
Leider hat die Anleitung nicht funktioniert. keine Ahnung wo der Fehler ist. Nach einem Reboot ist der USB Stick nicht gemountet. Kann das mit dem USB Hub zu tun haben, das da zwischen hängt?
Eigentlich ist der USB-Hub kein Problem. Hatte selber für eines meiner Projekte einen USB-ub dazwischen hängen. Wird der USB Stick denn überhaupt gefunden/angezeigt, wenn du den “ls /dev/sd*”-Befehl ausführst?
Bei mir kommt dabei “/dev/sda /dev/sda1” raus
df -h liefert allerdings nach dem reboot folgendes:
Filesystem Size Used Available Use% Mounted on
rootfs 4.9M 1.1M 3.8M 22% /
/dev/root 2.0M 2.0M 0 100% /rom
tmpfs 14.1M 64.0K 14.0M 0% /tmp
/dev/mtdblock3 4.9M 1.1M 3.8M 22% /overlay
overlayfs:/overlay 4.9M 1.1M 3.8M 22% /
tmpfs 512.0K 0 512.0K 0% /dev
Es ist ein 4GB Stick angeschlossen, der gerade frisch auf ext4 formatiert wurde.
Diese Anleitung hat funiktioniert. Sehr ähnlich…
http://www.youtube.com/watch?v=NU7dmVoTFJc
Danke für den Link. Werde mir das Video mal in Ruhe anschauen und gucken, wo die Unterschiede sind. Bisher habe ich 4 Router exakt nach meiner obigen Anleitung geflasht, aber wenn’s bei dir nicht hingehauen hat, ist das ja ein Anlass mal nachzuschauen.
Oder kannst du mir aus dem Stehgreif sagen, welcher Punkt in dem Video anders war bzw. warum es mit dem Video geklappt hat und mit meiner Anleitung nicht?
mkdir -p /mnt/nfsshare/sda1
mount //overlay /mnt/nfsshare/sda1
mkdir -p /mnt/nfsshare/tmp/cproot
mount –bind / /mnt/nfsshare/tmp/cproot
tar -C /mnt/nfsshare/tmp/cproot -cvf – . | tar -C /mnt/nfsshare/sda1 -xf –
umount /mnt/nfsshare/tmp/cproot
umount /mnt/nfsshare/sda1
Hat geklappt. Super Anleitung. Habe gerade erst festgestellt, das es diese Anleitung auch in Deutsch gibt. Cool!
Danke, gute Anleitung.
Kann man auch extroot auf einer Piratebox verwenden…. da ist ja auch ein Teil auf dem USB Stick ausgelagert. Beim Installieren von Packeten wird immer auf den Internen Speicher abgelegt?
Ich gehe davon aus, dass du Piratebox auf ‘nem Router nutzt, ja? Normalerweise wird mit der Installation von Piratebox automatisch auch ExtRoot konfiguriert. Von daher solltest du eigentlich keine Probleme haben.
Nutzt du einen USB-Hub an deinem Router? Wenn ja, was für Gerätschaften stecken da dran?