Quote:
Originariamente inviato da Rumpelstiltskin
Interessante, se ti va potresti fare una miniguida in modo magari da sperimentarci su in più persone. Magari ne esce anche qualcosa di valido
|
Sarebbe un po' lunga da scrivere, ma qualche pezzo lo posso scrivere (tanto per cominciare).
Ci sono delle macchine virtuali ambiente Freetz già pronte ma spesso sono vecchie e da upgradare.
Si fa prima a prendersi un linux recente ed aggiungere gli strumenti di sviluppo necessari, io ho usato una installazione (su macchina virtuale) di Debian 9, ma credo che si possa usare anche il linux subsystem integrato (se installato) in Windows 10.
NB: Freetz si è fermato al firmware 7.14 (non per il 7590, sul 7590 max 7.13) e lo sviluppo successivo si è spostato sul nuovo Freetz-NG che invece supporta correttamente i fw AVM successivi (ad oggi 7.57)
Attenzione: Ora c'è un nuovo Thread dedicato a Freetz-NG (che rappresenta già da fine 2019, il presente nonché il futuro), e questi post si possono considerare obsoleti e rimangono utili solo per la parte storica per Freetz 2.0 (ignorare, anche se in buona parte completa e corretta, la parte per Freetz-NG).
Il nuovo Thread può essere consulato qui.
Cominciamo con la guida (che è scritta per una Linux Debian/Ubuntu Based ed alcuni punti iniziali vanno rivisti per altre distribuzioni).
Parte prima: Creazione dell'ambiente di compilazione per Freetz
- Installare / procurarsi una macchina Linux (anche virtuale). Io ho usato una Debian 9 (poi aggiornata a 10 ed infine a 11)
- Basandosi su un Linux Deb based allora aggiungere i seguenti pacchetti (deve farlo l'utente root o mettere sudo davanti ai comandi):
Codice:
apt install build-essential
apt install git
apt install autoconf
apt install automake
apt install gawk
apt install bison
apt install unzip
apt install libtool
apt install pkg-config
apt install flex
apt install zlib1g-dev
apt install autotools-dev
apt install libncurses5
apt install libncurses5-dev
apt install g++
apt install patch
apt install intltool
apt install libltdl-dev
apt install libltdl7
apt install libacl1-dev
apt install libcap-dev
apt install libfdt-dev
apt install libc6
apt install libc6-dev
apt install libc6-dev-i386
apt install bc
apt install libglib2.0-dev
apt install libreadline-dev
apt install jam
apt install mc
apt install libssl-dev
La lista sopra è quella per Freetz (necessaria anche per Freetz-NG), poi per Freetz-NG servono in aggiunta anche i pacchetti:
Codice:
apt install subversion
apt install rsync
apt install execstack
apt install cmake
apt install libzstd-dev
La lista non è detto che sia il minimo necessario in quanto probabilmente lì dentro c'è qualche pacchetto che non serve (o serviva solo la versione -dev), come è possibile che ne manchino altri che scoprirete solo se attiverete certe opzioni di Freetz o Freetz-NG.
Se qualcuno vuole sfoltirla / migliorarla ben venga.
Diciamo che però ci dovrebbe essere più del minimo necessario per compilare una immagine Freetz/Freetz-NG di partenza e pure una immagine Freetz/Freetz-NG che deve compilare moduli del kernel.
Per Freetz-NG c'è una maggiore documentazione ed essa qui dà i comandi di installazione dei pacchetti necessari per le varie versioni di Ubuntu che potete usare direttamente se usate Ubuntu o con qualche ritocco anche sotto Debian.
La documentazione può essere usata anche per integrare la mia lista costruita per tentativi.
Io non l'ho ancora fatto e nonostante la mia lista contenga molti meno pacchetti di quelli indicati là, si riesce comunque a compilare una immagine base. - Aggiungere il seguente link simbolico altrimenti Freetz non troverà libtool
Codice:
ln -s /usr/bin/libtoolize /usr/bin/libtool
Non so se questo passaggio sia ancora necessario per Freetz-NG, ma nel dubbio farlo.
Mentre solo per Freetz-NG e sotto Debian 9/10/11 sono necessari questi altri link simbolici
Codice:
ln -s /bin/kmod /bin/depmod
ln -s /sbin/ldconfig /bin/ldconfig
In quanto il makefile usa i comandi ldconfig e depmod che sotto Debian stanno in /sbin che non è accessibile agli utenti non root e ci serve un link in un path visto dagli utenti non root.
- Da qui in poi si deve operare come utente non root (se eravate root passare ad una utenza normale).
Clonare una immagine di Freetz 2.0 con
Codice:
git clone https://github.com/Freetz/freetz.git freetz
O clonare una immagine di Freetz-NG con
Codice:
git clone https://github.com/Freetz-NG/freetz-ng.git freetz-ng
- Eseguire
o
a seconda di quale Freetz si sia scelto e poi eseguire
Codice:
git pull
make menuconfig
Il comando make menuconfig ci potrebbe mettere un po' ad essere eseguito la prima volta, attendere.
git pull adesso non serve perché avete appena clonato, ma in futuro dovrete darlo periodicamente per scaricare gli aggiornamenti di Freetz / Freetz-NG rilasciati. - Dovrebbe comparire il classico menù di configurazione in ambiente linux
Selezionare navigando nelle prime opzioni in alto :
Per Freetz 2.0:- Level of user competence : io uso Expert per avere accesso a tutto (vedete voi se per il momento lasciarlo in Beginner)
- Hardware type : ovviamente scegliere 7590
- Firmware language : da impostare a en - international
- Firmware version : FRITZ!OS 07.0x - HIGHLY EXPERIMENTAL o FRITZ!OS 07.1x - HIGHLY EXPERIMENTAL a seconda di che versione di Firmware volete produrre (7.01 o 7.13)
Nonostante siano passati anni da quando ho scritto la guida Freetz, non siamo mai andati oltre ed ad oggi Freetz supporta solo fino al 7.14 (7.13 sul 7590)
Per Freetz-NG:- Level of user competence : io uso Expert per avere accesso a tutto (vedete voi se per il momento lasciarlo in Beginner)
- Hardware series : lo potete lasciare su all o lo potete mettere su 7490/7590
- Hardware type : ovviamente scegliere 7590
- Target region : da impostare a avme - international
- Firmware version : FRITZ!OS 07.50+ se volete fare un fw 7.50 (ad oggi)
Qui Freetz-NG è molto flessibile e supporta tutti i fw dal 6.80 in poi, permettendo di fare una versione Freetz-NG anche delle immagini Labor/Inhaus.
Nel momento in cui scrivo sono sono supportati FRITZ!OS 06.80+, FRITZ!OS 07.00+, FRITZ!OS 07.10+, FRITZ!OS 07.20+, FRITZ!OS 07.39/41/51 Inhaus, FRITZ!OS 07.50+
Poi salvare ed uscire - Eseguire
- Attendere che venga costruita l'immagine
La prima volta sarà molto lunga l'attesa, diciamo anche oltre mezzora poi dipende dalla potenza della macchina, perché deve essere compilato l'intero ToolChain per Mips.
Tutte le compilazioni successive invece saranno roba di pochi minuti (anche meno di un minuto se macchina potente).
Se non ci saranno errori l'immagine del firmware la troverete dentro la cartella images (es. per Freetz : 7590_07.13-freetz-master-20200102-9287e5e5b.en_20200109-224844.image o per Freetz-NG: 7590_07.28.all_freetz-ng-18514M-062af41bd_20210825-133918.image) - Se avete costruito un Freetz-NG allora eseguire
Codice:
make push_firmware
per caricare (flashare) l'immagine sul router.
Per ora io non l'ho mai fatto e non so cosa faccia o cosa vi proponga a video quel comando.
Di certo so che userà il comando tools/push_firmware, che può anche essere invocato a mano,
Digitare tools/push_firmware -h per consultare Help
Solo per Freetz 2.0: L'immagine così compilata non è però flashabile (o almeno in modo non facile) come avevo detto settimane fa.
Ma per cominciare ci fermiamo qui, inutile andare avanti se non arrivate neanche a compilare una immagine.