Freetz chroot
Freetz chroot
USB-root
Mit USB-root lässt sich das Root-Verzeichnis (/) auf ein an die FritzBox angeschlossenes USB-Gerät auslagern - was zusätzlichen Platz nicht nur für weitere Software schafft
Vorteile
* Immer noch ein lauffähiges System im Flash-Speicher der Fritzbox als Notfall-System vorhanden * Nahezu unbegrenzter Platz * Mehrere Systeme parallel zur Auswahl auf dem USB-Stick → einfaches Testen neuer Versionen und Konfigurationen. Dabei sollte allerdings die jeweils genutzte Firmwarebasis von AVM ein zueinander kompatibles Konfigurationsformat aufweisen!
Ein Beispiel aus der Praxis:
Annex A Box in Frankreich mit DAU als Besitzer ;-) Bei einem nicht funktionierenden System im Flash würde da gar nichts mehr gehen. Strom aus, USB-Stick ab und Strom wieder an, bekommt er aber hin um damit das Notfallsystem im Flash nutzen zu können.
Konfiguration und Kompilierung
USB-root muss einfach bei Erstellung des Images mit make menuconfig (siehe Freetz Installation?) mit ausgewählt werden. Um später eine Shell auf der Fritzbox zu haben und scp nutzen zu können, sollte auch dropbear mit ins Image. Zuerst wird dann ein Image mit USB-Root erzeugt, das in den Flashspeicher der Fritzbox passt und dann auch wie jedes Image auf die Fritzbox geflasht wird.
Dann kann man sich sein System für den USB-Root zusammen stellen und braucht nicht mehr auf den Platz zu achten. Das USB-Root Paket muss jedoch ausgewählt bleiben! Die Fehlermeldung am Ende, dass das Image zu groß ist, stört hier nicht weiter. Wir benötigen ja nur das erstellte Systeme, das wir in [Freetz-Ordner]/build/modified/filesystem finden.
Es kann eine beliebige Freetz-Version für den USB-Stick verwendet werden. Es muss nicht die gleiche Version verwendet werden, wie sie im Flashspeicher der Fritzbox abgelegt ist. Es muss ausschließlich der Kernel im Flashspeicher zum Kernel des USB-Sticks passen.
Packen, kopieren auf die FritzBox und entpacken
# In den Ordner mit dem neu gebauten Filesystem wechseln: cd [Freetz-Ordner]/build/modified/filesystem # Das Filesystem inkl. Symlinks und Unterordnern packen: tar czf [Freetz-Ordner]/build/modified/rootfs.tar.gz ./* # Fritzbox von Flash booten lassen, dazu USB-Root im # Freetz-Webinterface deaktivieren und rebooten. # Das Archiv auf die Fritz!Box kopieren in den richtigen Ordner kopieren, z.B.: scp user@my_pc:/home/slightly/freetz-trunk-new/build/modified/rootfs.tar.gz /var/media/ftp/uStor01/rootfs # "/var/media/ftp/uStor01/rootfs" ist hierbei selbst festgelegt, der USB-Datenträger für USB-Root muss nicht zwingend auf uStor01 sein # und auch "roots" als Ordner ist freigewählt # In den Ordner wechseln cd /var/media/ftp/uStor01/rootfs # Archiv entpacken tar xzpf ./rootfs.tar.gz # Besitz anpassen chown -R 0.0 /var/media/ftp/uStor01/rootfs
Nun ist im Freetz-Webinterface USB-Root wieder zu aktivieren.
Einbinden von Partitionen
Das Einbinden von weiteren Partitionen funktionierte in frühen Freetz-Versionen nicht, somit mussten diese Partitionen manuell eingebunden werden. In aktuellen Freetz-Versionen funktioniert dies nun, so dass die AVM-Features, welche auf USB-Partitionen speichern, verwendet werden können.
Allerdings gibt es beim Mounten der Partitionen eine Fehlermeldung für die verwendete Root-Partition: da diese bereits gemountet ist, schlägt ein weiterer Mount-Versuch (der "normale" von AVM) natürlich fehl. Dies kann mit ruhigem Gewissen ignoriert werden.
Verbesserungsmöglichkeiten
1. Direkt per SCP oder rsync aus der Stinky-VM auf die Fritzbox kopieren. Wenn man aus Buildsystem (z.B. VM mit STinky) direkt über Netzwerk die Fritzbox per ssh/scp erreichen kann ist der Umweg über einen weiteren PC unnötig. Hier wäre es dann eine direkte Verbindung zwischen Fritzbox und Buildsystem eleganter. Die Variante oben ist aber für entfernte Systeme, ohne von außen erreichbaren SSH-Zugang weiterhin brauchbar. 2. Die sich wiederholenden Befehle in ein bash-script packen
rootfs Methode
CCcam 2.1.3 auf einer Fritz!Box mit Freetz unter CHROOT betreiben!!!
Um CCcam ab Version 2.1.2 auf einer Fritz!Box mit Freetz System lauffähig zu bekommen, ist es wichtig das CCcam Zugriff zu einer Reihe von abhängigen Bibliotheken (librarys/lib) bekommt! Das gestaltet sich bei Freetz recht schwierig weil ein Großteil des Dateisystem "read-only" ist. Dadurch kann man nicht einfach libs austauschen oder neue hinzufügen.
Um das zu umgehen gibt es mehrere Möglichkeiten. Eine Variante ist Freetz von einem USB-Stick zu starten (USB-root), eine andere ist ein Debian Linux vom USB-Stick zu starten während die Fritz!Box startet (Debootstrap). Die einfachste, sch´nellste und ungefährlichste Methode ist allerdings CHROOT.
Hierbei handelt es um ein Dateisystem welches während das bauens eines Freetz Images entsteht. Das fertige Image ist im Grunde nichts anderes als ein gepacktes Dateisystem. Bevor es jedoch gepackt wird, ist es im Grunde ja schon fertig und man kann es nutzen. Dabei wird mit chroot einfach festgelegt das das offenen Terminal sein Rootverzeichnis in das neue Verzeichnis legt. Siehe hier...
Wir haben für euch mal kleine fertige Dateisysteme (rootfs) zum Download zurechtgelegt. Hierbei handelt es sich um kleine Paket welche die Dateisysteme für verschiedene Fritz!Box Baureihen inklusive CCcam und abhängiger libs enthalten. Also alles was das Freetz CS Herz begehrt. Das Dateisystem läuft nach einigen Test auf allen gängigen Fritz!Box Modellen. Tests für Smargo laufen noch. Hilfe in diese Richtung nehmen wir gern an.
Nun zur Vorgehensweise:
Was wird benötigt?
- 1. Image für die Fritz!Box mit Freetz in dem das Paket screen enthalten ist (Die hier angebotenen haben es).
- 2. Einen mit ext2 formatierten USB-Stick. Die Daten könnt ihr unter Windows Vorher sichern, Stick formatieren und per FTP die Daten zurück auf die Box.
- 3. Das gepackte RootFS der jeweiligen Fritz!Box
Installation:
- 1. Dateisystem herunterladen auf dem PC entpacken, per SCP/WINSCP auf die Fritz!Box ins Rootverzeichnis des USB-Sticks kopieren. Das ist für gewöhnlich /var/media/ftp/uStor01/.
- 2. Per telnet oder SSH auf die Fritz!Box verbinden!
- 3. In der Konsole eingeben:
chmod 777 /var/media/ftp/uStor01/CHROOT.RootFS.Freetz.7270v2-20091121.sh
/var/media/ftp/uStor01/CHROOT.RootFS.Freetz.7270v2-20091121.sh
screen
chroot /var/media/ftp/uStor01/chroot-rootfs
Nun seit ihr in einem virtuellen Terminal in dem ihr ROOT, also eure Wurzel verändert habt. Damit befindet ihr euch auf dem neuen Dateisystem. Beenden könnt ihr das ganze wieder mit zwei mal exit (1x für chroot und 1x für screen). Um das virtuelle Terminal verlassen zu können, ohne es zu beenden, drückt ihr einfach STRG in Verbindung mit A und D nacheinander. Wieder zurückholen geht mit screen -r. Weitere Informationen zu screen gibts hier.
Ihr werdet von einem Prompt der Busybox begrüßt.
/var/media/ftp/uStor01 # chroot /var/media/ftp/uStor01/chroot-rootfs/ BusyBox v1.12.4 (2009-11-04 14:48:10 CET) built-in shell (ash) Enter 'help' for a list of built-in commands.
Für einen ersten Test-Start von CCcam nun einfach /var/etc/CCcam -dv eingeben. CCCam solltge nun Problemlos starten. Die CCcam Files wie auch die Config befindet sich im Verzeichnis var/etc/. Habt ihr also alles richtig gemacht und das neue RootFS auf den Stick kopiert so findet ihr die Files ausßerhalb vom neuen RootFS unter /var/media/ftp/uStor01/chroot-rootfs/var/etc/
Dies zu CCcam, Freetz, Chroot und Screen...
ACHTUNG!!! Wenn ihr euer angelegtes neues Rootverzeichnis wieder löschen wollt solltet ihr vorher die Mounts entfernen die beim ausführen des Installations-Scripts gestaret werden. Diese seht ihr mit dem befehl mount. Ein anderer Weg wäre noch die Fritz!Box neu zu starten und danach das Verzeichnis "chroot-rootfs" in eurem Stick zu löschen.
- Anmerkung
Bitte das RootFS nur per SCP oder WINSCP auf den Stick laden!!! Der Upload per FTP (mit VSFTP) macht Probleme...
Author @shinzilla
Quelle Zebradem
chroot Debian FreetzBox
![Debian.png](/wiki/images/thumb/3/30/Debian.png/39px-Debian.png)
- auf PC mit winrar entpacken
hier entpacken
- USB Stick in ext2 formatieren und anschließend an Fritzbox anschließen
- Debian_FritzBox.tar.gz per FTP auf den USB Stick kopieren
- unter telnet Debian_FritzBox.tar.gz auf USB Stick entpacken mit
tar zxvf Debian_FritzBox.tar.gz
oder
tar xzpf ./Debian_FritzBox.tar.gz
- Rechte vergeben
chmod 777 /var/media/ftp/uStor01/
- mounten
mount -t proc proc /var/media/ftp/uStor01/Debian_FritzBox/proc/
- in chroot Umgebung wechseln
chroot /var/media/ftp/uStor01/Debian_FritzBox/ bash
chroot DebianLenny FreetzBox
tar zxvf fritzDebianLenny.tar.gz