Ich gebe es zu: So ganz passt die FRITZ!Box nicht in das übliche Beuteschema dieses Blogs. Doch neuere Boxen mit USB-Anschluss lassen sich in einen per DynDNS ständig erreichbaren Server umbauen. Als Webserver kann sogar ein Apache mit PHP dienen und auf Wunsch lädt der Bittorrent-Client ctorrent auch nachts ohne aktivem PC im Netz selbständig Linux-ISOs aus dem Netz.
Wie es funktioniert? Eine uClibc-Chroot-Umgebung auf USB-Festplatte und ein Script, das die Umgebung mountet und einen Dropbear SSH-Server in ihr startet, genügt. Ich habe alle Komponenten vorbereitet und biete sie zum Download an.
Gehen Sie wie folgt vor, um die Chroot-Umgebung zu starten:
- Partitionieren und formatieren Sie eine USB-Festplatte mit wenigstens zwei Partitionen, Linux Swap mit 128MB oder mehr und Linux Ext2, mindestens 800MB, besser Rest der Platte. Freien Speicher können Sie einer FAT32-Partition zuweisen.
- Laden Sie den Tarball ucchroot-0927-fritz7170.tar.gz herunter. Mounten Sie die USB-Festplatte, wechseln Sie das Arbeitsverzeichnis und entpacken Sie den Tarball:
mount /dev/sdx1 /media/sdx1
cd /media/sdx1
tar xvzPf /tmp/ucchroot-0927-fritz7170.tar.gz - Unmounten Sie die Festplatte und entfernen Sie diese vom PC und verbinden Sie sie mit der FRITZ!Box. Achtung: Notebook-Festplatten ohne externer Stromversorgung müssen via Hub angeschlossen werden!
- Aktivieren Sie mit einem angeschlossenen Telefon und der Rufnummer #96*7* den Telnet Daemon der FRITZ!Box. Sie können sich jetzt mit dem Befehl
telnet fritz.box
auf der FRITZ!Box einloggen.
- Für das Laden des Ext2-Kernelmoduls, das anschließende Mounten der USB-Festplatte und den Start des SSH-Servers habe ich ein kleines Shellscript erstellt. Laden Sie es auf die Fritzbox
wget -O /var/tmp/chroot.sh \
http://fbh.mattiasschlenker.de/7170/chroot.shWenn Sie mehrere USB-Festplatten an der Fritzbox verwenden, müssen Sie die enthaltenen Variablen für Chroot- und Swap-Partition anpassen. Führen Sie das Script aus:
sh /var/tmp/chroot.sh
Während der Ausführung blinkt die Update-LED. Insgesamt läuft das Script ca. 45 Sekunden.
- Für erste Tests und zum späteren Setzen des Passwortes benötigen Sie eine Shell in der Chroot-Umgebung:
/var/tmp/chroot/bin/busybox_static chroot \
/var/tmp/chroot /bin/bashDer Prompt ändert sich von einem “#” zu “bash-3.00#”. Setzen Sie das Root-Passwort mit dem Befehl
passwd
ACHTUNG: Ohne Root-Passwort können Sie sich später nicht per SSH einloggen!
- Der SSHD erlaubt es nun, sich mit dem SSH-Protokoll von einem anderen Rechner im lokalen Netz aus mit dem im letzten Schritt vergebenen Passwort in der Chroot-Umgebung anzumelden.
- Damit Sie die Chroot-Umgebung nicht nach jedem Start der Fritzbox manuell aktivieren müssen, können Sie das Startscript für die Chroot-Umgebung beim Systemstart ausführen lassen. Es genügt, in der per Telnet gestarteten Shell das Script “chroot.sh” an Ihre “debug.cfg” anzuhängen:
cat /var/tmp/chroot/start_chroot.sh \
>> /var/flash/debug.cfgStarten Sie die Fritzbox über das Webinterface neu und überzeugen Sie sich per SSH-Login davon, dass die Chroot-Umgebung zur Verfügung steht.
In der Chroot-Umgebung steht der bekannte GNU-Compiler genauso zur Verfügung wie viele zur Kompilation benötigter Header-Dateien. Der Bittorrent-Client (in /usr/src) kann beispielsweise mit einem normalen “./configure” für die Kompilation vorbereitet werden.
Sollten Sie weitere Programme installieren, die als Daemon gestartet werden (Webserver, Mailserver), können Sie diese in der Datei “/etc/chroot.sh” eintragen um sie beim Start zu aktivieren.
Viel Spaß!
PS: Bitte keine Fragen in Kommentaren sondern per Mail, ich erweitere ggf. diesen Artikel um eine Art FAQ!