Compilatore per Fonera 2.0n (anche per Fonera2.0g) – installazione ed uso
Come abbiamo già visto in precedenza la Fonera 2.0n porta in sè un cuore Linux, infatti il sistema operativo installato è Fon-ng che è stato sviluppato a partire da OpenWrt.
L’obiettivo di questo articolo è illustrarvi come sia possibile compilare delle immagini personalizzate del firmware o dei pacchetti aggiuntivi per la Fonera 2.0n da installare singolarmente.
Il processo di building
La compilazione dell’immagine di OpenWrt prevede le seguenti fasi:
- la generazione del compilatore: è necessario avere un compilatore capace di produrre codice eseguibile sulla piattaforma target;
- la generazione del toolchain: il compilatore da solo non basta, sono necessarie le librerie e i tool per la generazione dell’immagine;
- la generazione dei pacchetti software di base ed esterni: che possono essere integrati nel firmware oppure possono essere in forma di pacchetto ipkg da installare successivamente;
- la generazione dell’immagine con partizioni e filesystem.
Prerequisiti
E’ necessario avere una macchina linux su cui andremo ad installare il compilatore. Personalmente ho utilizzato una macchina virtuale con Ubuntu 10.04 sotto Virtualbox .
Sono necessari alcuni pacchetti al fine di installare l’ambiente di sviluppo fon-ng
Per sistemi Ubuntu
$ sudo aptitude install subversion g++ libdigest-crc-perl ncurses-dev zlib1g-dev gawk bison flex autoconf intltool-debian intltool
Per sistemi Debian
# apt-get install binutils cpp gcc libc6-dev linux-kernel-headers make zlib1g-dev ncurses-dev g++ gawk bison flex unzip bzip2 autoconf libdigest-crc-perl python subversion
Recupero Fonti
Avvertenze
E’ necessario disporre di notevole spazio su disco per accogliere i sorgenti e tutti i file generati al momento della compilazione. Considerare che sono circa 400MB di sorgenti (tra sistema base e feeds) ma nel building si arriva ad oltre 2GB
Inoltre non si può compilare da root, quindi usate un utente standard.
Per recuperare i sorgenti da svn Fonosfera create una cartella in una partizione in cui ci siano almeno 3 GB di spazio disponibile (personalmente suggerisco almeno 10GB).
Scaricare i sorgenti
Posizionatevi con il terminale nella cartella in cui volete installare il compilatore, ad esempio:
cd /home/FON/
ed eseguite il seguente comando:
$ svn co http://svn.fonosfera.org/fon-ng/trunk/
Questo creerà la cartella trunk in cui si trovano i sorgenti
Aggiornare ed installare FON feeds
OpenWrt adotta un’architettura per la compilazione del software simile a quella di *BSD o Gentoo. C’è un indice dei pacchetti disponibili che si preleva online, e per ogni pacchetto vengono forniti il makefile e le eventuali patch da applicare. Solo in fase di compilazione si scaricano i sorgenti veri e propri del pacchetto software – anche il sistema base e il toolchain funzionano così.
Dopo aver selezionato le opzioni per il target specifico (Fonera 2.0 o Fonera 2.0n), si ottiene un sistema minimale. Di solito però si ha bisogno di altro software non contenuto nell’ambiente di default. Per questo motivo si scaricano i feeds, dei pacchetti extra.
Tutte queste operazioni si possono eseguire manualmente, ma è meglio ricorrere agli script inclusi.
$ cd trunk $ chmod +x install.sh $ ./install.sh
Menuconfig
$ cd openwrt $ ./scripts/feeds update -a $ make menuconfig
Selezionare come TARGET SYSTEM la Fonera 2.0n, quindi uscire e dare Yes per salvare (non serve modificare altri parametri)
APPROFONDIMENTI
Per cercare una parola chiave nell’interfaccia di menuconfig
usa lo slash ‘/’.
Come per il kernel, i pacchetti si possono trovare in tre stati [Y/M/N]:
- <*>, il pacchetto viene incluso nell’immagine, ma viene creato in formato ipkg e posto nel repository;
- <M>, il pacchetto non è inserito nel firmware: è un modulo, cioè viene creato solo in formato ipkg;
- <N>, il pacchetto non verrà compilato.
Compilazione
La compilazione di una immagine è un processo lungo, e dipende molto dal vostro hardware su cui compilate e da ciò che è stato selezionato con make menuconfig per essere compilato.
Giusto per dare un’idea, si deve mettere in conto non meno di un ora e fino a cinque se si desidera compilare tutti i pacchetti OpenWRT.
La prima volta che si compila (e soltanto la prima) verranno scaricate automaticamente da internet diverse fonti aggiuntive, rendendo il processo ancora più lungo.
Compilare un’immagine
Il seguente commando avvierà la compilazione di un imagine del firmware contenente tutti I pacchetti che sono stati selezionati precedentemente con menuconfig
$ make V=99
V=99 questa opzione abilita l’output verboso. Questo può essere utile nel caso in cui ci sia qualche errore durante la compilazione, può infatti essere un valido aiuto per individuarlo.
Compilare una specifica applicazione come pacchetto
Se volete creare un singolo pacchetto ipk da installare poi sulla Fonera con il comando opkg install, invece di lanciare il lungo processo di creazione di un intera immagine è possibile eseguire la compilazione di un singolo pacchetto. I pacchetti si trovano nella cartella package
$ make package/name/{clean,compile,install} V=99 DEVELOPER=1
Sostituite name con il nome dell’applicazione che volete compilare, ad esempio amule.
Ad esempio per compilare il pacchetto di asterisk-gui:
$ make package/asterisk-gui/compile V=99 DEVELOPER=1
DEVELOPER=1 fa sì che il sistema di compilazione compili il pacchetto e le sue dipendenze, indipendentemente dal fatto che siano abilitati nel menuconfig.
File compilati
Troverete l’output della compilazione in:
- le immagini si trovano in openwrt/bin:
loader.bin (solo Fonera 2.0g). Normalmente tale file non serve.
openwrt-fonera2.img o openwrt-fonera2n-squashfs.img
sono i file binary dell’immagine fon-ng. Contengono il rootfs e il kernel della Fonera 2.0 e possono essere scritti direttamente nella image partition.
Nota: prima del firmware 2.3.7.0 / r1710, il nome dei file immagine per la 2.0g era diverso ed erano generati degli ulteriori file.
- i pacchetti si trovano in: openwrt/bin/packages/mips (per la Fonera 2.0g)openwrt/bin/packages/mipsel (per la Fonera 2.0n)
Qui si trovano sia i pacchetti inclusi nella compilazione dell’immagine che quelli compilati come singolo pacchetto.
Io mi sto documentando sulla possibilità di un porting di OpenWrt 10.3 su Fonera 2.0n. Hai notizie a riguardo?
Sembra che i driver proprietari ralink non siano disponibili e quindi si debba sottostare obbligatoriamente alle immagini disponibili sull’svn di fon che integrano già il suddetto driver…
Mi dispice ma non ti sò aiutare. A dire il vero ultimamente ho anche venduto la Fonera 2.0n in quanto era ormai da mesi ferma a prender polvere.
@Flavio
Anche io mi sa che la venderò in favore di qualcosa compatibile con l’ultima release di OpenWrt. Sto tentando in tutti i modi di far funzionare questo adattatore sulla fonera (che se avesse avuto l’ultimo openwrt avrebbe richiesto un semplice opkg install).
Grazie comunque della base di partenza che hai fornito in questo post
Grazie a te, se non fosse stato per gli interessantissimi articoli sulla Fonera 2.0n che hai pubblicato sul tuo blog io non sarei riuscito a combinarci niente.
Se hai letto il mio blog recentemente hai visto che ho risolto portando OpenWrt ufficiale sulla Fonera 2.0n
Veramente un ottimo lavoro !!! complimenti.
Peccato che non ho più la fonera per provare