TP-Link WR703N Speicher erweitern mit OpenWRT ExtRoot

tp-link wr703n with thumbdriveVor 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.

how to extroot a tp-link wr703n (1)  how to extroot a tp-link wr703n (2)

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.)

how to extroot a tp-link wr703n (3)  how to extroot a tp-link wr703n (4)

#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.

how to extroot a tp-link wr703n (5)  how to extroot a tp-link wr703n (6)

#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.

how to extroot a tp-link wr703n (7)  how to extroot a tp-link wr703n (8)

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.

11 Kommentare

  1. hobelsays:

    sehr cool. vielen dank!

  2. Timosays:

    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?

      • Timosays:

        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.

      • Timosays:

        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?

  3. 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

  4. Hat geklappt. Super Anleitung. Habe gerade erst festgestellt, das es diese Anleitung auch in Deutsch gibt. Cool!

  5. Danke, gute Anleitung.

  6. Christiansays:

    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?

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Sie dient nur dem Spamschutz.