Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Revisiting freetz 2019 - Custom build Image - FritzBox 7390
#
# Freetz - FAQ - Selbst Kompiliertes Image
#
## Ubuntu 19.01 Freetz-Prerequisites ##
1) Speicherbedarf des freetz builds beachten:
Je nach dem, wie viele freetz-Pakete aktiviert werden- wird ein freetz build mehrere gigabyte an HDSpeicher nutzen.
Minimal ~2Gb sollte man ua wegen der für die Kompilierung notwendigen linux Paketabhängigkeiten einplanen.
2) Das System auf den aktuellen Stand bringen:
apt-get update
apt-get upgrade
sudo adduser freetz --disabled-password
3) Zusätzliche, freetz bezogene Pakete installieren:
sudo apt-get install imagemagick subversion g++ autopoint libtool-bin libreadline-dev texinfo tofrodos ecj fastjar perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev libacl1-dev libcap-dev gcc-multilib libglib2.0-dev build-essential ncurses-dev zlib1g-dev libacl1-dev libcap-dev
Note: Those ones were already preinstalled in 19.01
autoconf automake binutils gcc git bison flex make bzip2 patch pkg-config python unzip zlib1g-dev intltool gettext libncurses5-dev perl
4) freetz-git Repository Klonen
mkdir dl
umask 0022
git init --bare .git
git clone https://github.com/Freetz/freetz.git
cd freetz
5) Image erstellen - Jeweils mit:
make config-clean-deps-keep-busybox
make menuconfig
make
-> Hint: / Erlaubt eine Volltextsuche
-> Build Optimierungen
Toolchain Options → Build Cache aktivieren.
Bei genuegend Speicherplatz auf der Box, in den Toolchain Options → Target Compiler Flags von Os auf O2 ändern.
## Speicherplatz
Auf den "kleineren" Boxen wird nach der freetz Installation auf dem internen Speicher ua. der Platz für den Anrufbeantworter knapp.
Soll zudem eine größere Anzahl an freetz Paketen installiert werden, gibts mehrere Möglichkeiten um dies auch auf genannten Boxen zu tun:
# Nutzung des internen Flash:
Wenn aufgrund des (Under Development) Status keine removal Patches verwendet werden sollen, kann dennoch etwa 0.5MB gespaart werden:
-> Dazu in der BusyBox Konfiguration die Option "Recommended" deaktivieren. Bitte sicherstellen, das die "Only Mandatory" Optionen aktiviert sind.
-> Mutige Leute können zudem die experimentelle Option Strip kernel Modules - (Freetz and AVM) ausprobieren.
# USB Root
1) Ein sauberes freetz image erstellen, das auf die Box passt und nur "USB-Root" aktiviert hat. (Kommt ohne Removal Patches aus)
2) Danach das beliebig große 'chroot' Image erstellen, welches auf den USB-Stick kommt.
3) Die Freetz Mountpoint Namen ändern, damit der Stick unabhängig von der Wahl des USB-Ports gefunden werden kann.
-> In Freetz → Einstellungen → Freetz Mount "Hersteller Produkt als Prefix" konfigurieren / rebooten.
-> Durch das ändern der Mountpoints wird der Index aller Inhalte auf dem NAS erneuert, was bei vielen Dateien ein wenig Zeit in Anspruch nehmen kann.
-> Die Namen der Mountpoints finden sich unter Status → Freetz-logs → mod_mount.log
4) Im freetz Menü USB Root den Pfad zum verwendeten Image setzen / Rebbot.
# External Packages
-> Alle zusätzlich eingebunden Pakete werden von z.B einem USB-Stick nachgeladen und so Speicher auf der Box gespaart.
1) In der Menu Config den Punkt external Packages aktivieren.
2) Mountpoints wie bei USB-Root umkonfigurieren.
-> Der Pfad der .external Datei wird unter Freetz → Einstellungen → external konfiguriert. (z.B /var/media/ftp/SanDisk-Ultra-01/external)
3) Hochladen des .external Files
-> System → Firmware Update → "external-datei hochladen" (Der zuvor konfigurierte Pfad wird verwendet.)
-> Menüpunkt "External Dienste nach Update starten" aktivieren.
Der Inhalt des .external files wird unter /var/mod/external gemountet.
# SWAP
Ebenso sinnvoll für den freetz Betrieb auf kleinen Boxen ist die aktivierung eines swap-files.
Konfiguration in Freetz → Einstellungen → Swap
## Pakete
# Samba
Das Paket samba existiert in version 3.0.37(Default) und 3.6.25.
-> Samba version 3.6.25 unterstützt SMB2 und erlaubt so verbindungen mit Windows10.
-> dazu unter
Samba → Erweitert → Experten Optionen die Direktive max protocol = SMB2 eintragen.
sowie in Samba → Einstellungen → Samba Security: "User" konfigurieren.
# lighthttpd
Damit der Server von ausserhalb erreicht werden kann, ist eine Änderung in der ar7.cfg nötig.
-> Dazu im AVM Webinsterface unter Heimnetz → Netwerkverbindungen ein dummy Gerät hinzufügen und einen TCP Portbereich freigeben.
-> Dann mit dem Befehl nvi /var/flash/ar7.cfg die eben angegebene IP suchen. (Suchen mit "/")
und dessen Zieladresse auf 0.0.0.0 ändern . Beispiel:
ipv4forwardrules = "tcp 0.0.0.0:6001+11 0.0.0.0:6001 0 mark 1 # FTP-Server";
-> Speichern mit esc gefolgt von wq!
-> ar7cfgchanged aufrufen
## Kompilieren von Paketen ##
-> Freetz Package reBuild
make ($pkg)-precompiled
Mit diesem Befehl des freetz makefiles lässt sich ein beliebiges Package rekompilieren.
Wurde zuvor ($pkg)-clean verwendet, oder war das Paket noch nicht vorhanden, wird es komplett reinitialisiert.
(Entfernt, neu heruntergeladen, entpackt, und konfiguriert)
-> Temporäre Änderungen von Paket sourcen
Wer z.b temporäre Änderungen am Source eines Paketes testen will, möchte das Paket natürlich nicht durch das build system überschreiben.
1) Dazu in der menuconfig unter Build System Options den Punkt "Force Packager clean if it has changed" deaktivieren.
2) Wenn ein clean der object Files des Pakets durchgeführt werden soll:
- make clean im Paketsverzeichnis unter /source/target.../(paketname) verwenden.
- Nicht das Target ($pkg)-clean des freetz system nutzen.
-> Autoconf
Verwendet das Paket Autoconf und betreffen die Änderungen das configure Script,
werden diese aus der Datei aclocal.m4 abgeleitet.
Beispiel php, php-5.6.40/build/php.mk
configure: aclocal.m4 configure.in $(config_m4_files)
#$(PHP_AUTOCONF) -f $(SUPPRESS_WARNINGS)
####### Infos #########
# freetz WebInterface
fritz.box:81
Default: admin/freetz
# Freetz Telnet Zugang
Default: root / freetz
# Telnet per telefon aktivieren
-> Option: Menuconfig-> Run telefon daemon in in-house mode
-> aktivieren 96*7* deaktivieren #97*8*
# Passwort Change
passwd root
modusers save
modsave flash
# AVM - Support TextFile erstellen
http://fritz.box/html/support.html
# AVM System Konfiguration
nvi /var/flash/ar7.cfg
ar7cfgchanged
# Freetz Paket Konfiguration
Runtime /mod/etc/
External /mod/external
Flash /var/tmp/flash
WebIF /var/tmp/freetz
-> modsave all
# Mountpoints
/var/media/ftp
# Log File Locations
/var/log/*
/var/log/messages
/var/flash/panic
/var/flash/crash.log
##### Klebezettel ######
## Manuelles Modden eines bereits generierten FirmwareImages
~hardwaretyp in menuconfig VOR benutzung korrekt konfigurieren !
make menuconfig
~Mit fwmod (freetz-master) das image nach Ordner 7390 entpacken
./fwmod -u -d Ordner7390 images/OK_7390_06.83-freetz-devel.de_20180318-120459.image
~direkt hinterher, den arbeitsordner Ordner7390/.../modified erstellen lassen mit:
./fwmod -p -d Ordner7390 images/OK_7390_06.83-freetz-devel.de_20180318-120459.image
~nun im Arbeitsordner änderungen vornehmen... das image wird wieder wie zuvor erstellt:
./fwmod -p -d Ordner7390 images/OK_7390_06.83-freetz-devel.de_20180318-120459.image
# Downloadlinks
ftp.avm.de/
https://service.avm.de/downloads/downgrade/
https://service.avm.de/downloads/
cheers, Thorsten
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment