Ultimo aggiornamento: giovedì 21 gennaio 2016

 

 

Compilare Openwrt

openwrt

L’11 settembre 2015 è uscita finalmente la versione stabile di Openwrt per tutti i dispositivi supportati.

Naturalmente anche per il nostro fido TP-LINK W8970.

Come sempre sono già disponibili le immagini precompilate ma al solito hanno un equipaggiamento software di default non molto ampio e bisogna impostare qualcosa per cucirlo per bene sul nostro router.

Io mi sono ricompilato i sorgenti della versione trunk  e , ad un primo utilizzo, sembra funzioni tutto.

Magari potreste darmi qualche feedback

Se volete ricompilarvi voi stessi la vostra versione di Openwrt potete fare così, come da guida:

 

Per prima cosa bisogna avere come sistema operativo Linux, non fa differenza la distribuzione.

Su ubuntu bisogna avere dei pacchetti scaricati per proseguire nella compilazione dunque diamo i seguenti comandi:

$ sudo apt-get update
$ sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip

 

Alcuni feed sono disponibili solo tramite svn percui, se si vogliono i loro sorgenti bisogna installare anche:

$ sudo apt-get install subversion mercurial

 

Per altre distribuzioni più famose i comandi da dare sono questi:

 

  • Arch Linux

    pacman -S --needed subversion asciidoc bash bc binutils bzip2 fastjar flex git gcc util-linux gawk intltool zlib make cdrkit ncurses openssl patch perl-extutils-makemaker rsync sdcc unzip wget gettext libxslt boost libusb bin86 sharutils b43-fwcutter findutils
  • Debian 7 Wheezy:

    apt-get install libncurses5-dev zlib1g-dev gawk
  • Fedora 20 – 64Bit

    yum install -y subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel make patch unzip perl-ExtUtils-MakeMaker \
     glibc glibc-devel glibc-static quilt ncurses-lib sed sdcc intltool sharutils bison wget
  • openSUSE 13.2

    zypper install asciidoc bash bc binutils bzip2 fastjar flex git-core gcc-c++ gcc util-linux gawk gtk2-devel intltool jikes zlib-devel mercurial make genisoimage ncurses-devel libopenssl-devel patch perl-ExtUtils-MakeMaker python-devel rsync ruby sdcc unzip wget gettext-tools libxslt-tools zlib-devel subversion
  • Ubuntu 12.04LTS:

    sudo apt-get install build-essential subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl mercurial bzr ecj cvs unzip
  • Ubuntu 64bit:

    sudo apt-get install build-essential subversion libncurses5-dev zlib1g-dev gawk gcc-multilib flex git-core gettext libssl-dev
  • Centos x86-64:

    yum install subversion binutils bzip2 gcc gcc-c++ gawk gettext flex ncurses-devel zlib-devel make patch unzip perl-ExtUtils-MakeMaker  glibc glibc-devel glibc-static quilt ncurses-lib sed sdcc intltool sharutils bison wget git-core openssl-devel xz

 

Ora si può scegliere di voler compilare la versione trunk, o la stable.

Per la versione trunk diamo da terminale:

 

git clone git://git.openwrt.org/openwrt.git

Per la stable:

git clone git://git.openwrt.org/15.05/openwrt.git

 

 

Poi ci assicuriamo che il proprietario della cartella dove sono i sorgenti siano dell’utente in uso:

 

sudo chown -R user:user /openwrt/

  Poi diamo:  

cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a

 

Fatto questo procediamo alla configurazione.

 

Una volta fatto questo, andiamo a configurare la nostra immagine openwrt dando:

make menuconfig

 

Da questa schermata semigrafica, è possibile scegliere tutte le opzioni e funzionalità da aggiungere al router.

Mi raccomando non esagerate con l’aggiungere pacchetti perchè lo spazio sul router è limitato.

Chi mastica di ambienti linux e ricompilazioni di kernel saprà che scegliendo <*> su un pacchetto, verrà integrato nel kernel, scegliendo <M> esso non verrà incluso nel kernel ma verrà ugualmente compilato per permetterne l’installazione in seguito.

Se scegliamo <N> naturalmente il pacchetto non verrà compilato.

Per il nostro router, di base possiamo aggiungere:

In ‘Target System’ selezionare Lantiq e in “Subtarget” selezionare XRX200

Target System

In ‘Target Profile’, cambiamo il driver wifi di default, dunque il TP-Link TD-W8970

Target profile

 

Dunque abbiamo settato il .config per la compilazione in modo da avere i driver per il nostro device.

Da ora iniziamo a selezionare le applicazioni/pacchetti base che necessitiamo, in base a ciò che vogliamo aggiungere alla build.

Mi raccomando non esagerate con l’aggiunta di pacchetti.

Ad esempio potremmo voler aggiungere Luci, che è il pannello web di gestione del router.

Dunque andiamo in Luci e selezioniamo in Collections, ‘luci’ e ‘luci-ssl’

3 4 5

Tornando in Luci, potremmo scegliere da Aplications  luci-app-p910nd, luci-app-samba, luci-app-statistics e luci-app-wol.

6 7

 

Andando di nuovo nel pannello Luci, possiamo andare a selezionare la lingua italiano per luci in Modules

8 9 10

 

Ora andiamo in Kernel Modules e, se la nostra idea e collegare alla porta USB un hard disk installiamo il supporto necessario.
Entriamo in ‘Filesystems’.

Qui selezioniamo kmod-fs-ext4 e kmod-fs-vfat, kmod-fs-ntfs.

11 12 13

 

Andiamo a ‘Utilities’ e entriamo ‘Filesystem’. Cerchiamo e selezioniamo ntfs-3g

14 15 16
Ora torniamo in Kernel Modules e entriamo in USB support e selezioniamo kmod-usb-core, kmod-usb-ohci, kmod-usb-printer, kmod-usb-storage e kmod-usb2.

17 18

Ora scorriamo in Kernel Modules incontriamo Native Language Support e entriamo. Selezioniamo kmod-nls-cp437, kmod-nls-cp850, kmod-nls-cp852, kmod-nls-iso8859-15 e kmod-nls-utf8.

20

AGGIORNAMENTO DICEMBRE 2015

Ora nei sorgenti sono stati aggiunti anche i firmware per il chip Lantiq.

Invece di applicare la relativa patch ci basta andare in Firmware, dalla prima pagina del menuconfig e selezionare dsl-vrx200-firmware-xdsl-a

fir

 

fi

Ora, premendo varie volte esc, possiamo salvare il .config e uscire e proseguire.

Con questo abbiamo fatto la preparazione per compilare un firmware con le seguenti caratteristiche:
hardware basato su lantiq, driver wifi del tplink w8970, LuCi localizzato in italiano, supporto per USB (disco con formato ext2, ext3, ext4, ntfs, fat16 e fat32) e samba.

Potremmo voler aggiungere ad esempio, come ho fatto nel mio .config, transmission per i torrent, nano, come editor dei testi, il supporto al dns dinamico.

Dopo questi passaggi possiamo applicare le patch dell’utente Matteo85, che ho trovato nel forum HardwareUpgrade e scaricabili dal suo dropbox

da terminale, sempre dalla cartella openwrt, diamo per ogni patch il comando

$ git am nomefile.patch

 

Una volta applicate tutte le patch possiamo dare un

 

$ make prereq

per vedere se abbiamo tutti i requisiti soddisfatti per procedere nella compilazione.

Ora possiamo compilare col comando

$ make -j 3 V=s

 

Dando il comando in questo modo l’output della compilazione sarà visibile su schermo per evidenziare magari eventuali errori di compilazione.

L’opzione -j 3 è adatta se si ha processore dual core. Avessimo un quad core possiamo mettere -j 5 ecc.

Anche dando comunque solo make, la compilazione verrà effettuata.

Al termine della compilazione potrete trovare l’immagine compilata all’interno della cartella del sorgente nel percorso

/bin/lantiq

Si può mettere sul router o dall’interfaccia luci oppure flashando da seriale come da precedente guida.

Ora bisogna fare qualche piccola modifica per permettere al router di connettersi a internet.

Collegarsi da browser al router tramite indirizzo 192.168.1.1 e impostare la password.

Successivamente collegarsi tramite ssh al router da terminale con:

$ ssh root@192.168.1.1

Una volta immessa la password andare a modificare con nano il file /etc/config/network mettendo dove dice option xfer_mode ‘ptm’, sostituire a ptm atm.

Ora da luci, nel browser si deve settare la connessione:

A me ha funzionato mettendo i dati come da immagine.

E’ importante riempire il campo Service name, non riempiendolo non mi funzionava:

rete

Considerando che la compilazione richiede tempo, soprattutto se non si ha un pc di ultima generazione, lascio la mia immagine openwrt in download in modo da poter ricevere feedback per eventuali malfunzionamenti e migliorie.

Scarica l’immagine Openwrt customizzata da me.

rendo disponibile anche il mio config per chi volesse usarlo come punto di partenza.

Ringrazio gli utenti Totix92 e Matteo85 per la disponibilità sul forum.

 

FONTE

http://wiki.openwrt.org/doc/howto/buildroot.exigence

http://www.hwupgrade.it/forum/showthread.php?t=2643260

Qui ci sono le build di Totix92

Qui ci sono le patch di Matteo85

Scritto da Filippo Aceto

Tecnico informatico, appassionato di tecnologia e sistemi. Un curioso alla ricerca delle migliori risposte.

Questo articolo ha 22 commenti

  1. Jackladen Rispondi

    grazie per le informazioni….e sopratutto grazie per aver condiviso la tua immagine. non appena mi libero dagli impegni la installero e ti faccio sapere come va.
    Jackladen

  2. cosimo Rispondi

    Ciao sto compilando anche io non riesco ad applicare le patch mi da sempre errore

  3. exxa Rispondi

    Me too.
    exxa@exxa:~/openwrt$ git am 0001-optimize-for-speed.patch
    Applying: optimize for speed
    error: patch failed: target/linux/lantiq/Makefile:14
    error: target/linux/lantiq/Makefile: patch does not apply
    error: target/linux/lantiq/dts/TDW89X0.dtsi: does not exist in index
    Patch failed at 0001 optimize for speed
    The copy of the patch that failed is found in:
    /home/exxa/openwrt/.git/rebase-apply/patch
    When you have resolved this problem, run “git am –continue”.
    If you prefer to skip this patch, run “git am –skip” instead.
    To restore the original branch and stop patching, run “git am –abort”.

  4. Jackladen Rispondi

    ciao,
    come promesso ho installato la tua build…..per il momento tutto ok. vorrei chiederti un favore, anzi 2,
    quali repositori metto?
    in luci mi manca il tool per configurare i punti di mount degli h.d. , sai per caso come si chiama il pacchetto da installare?
    grazie
    Jackladen

  5. Jackladen Rispondi

    grazie per le risposte….
    cit. “puoi settarli dal menù “punti di mount” in sistema,” ….è proprio questo menù che non c’è!!!!hai ragione, potrei farlo da fstab ma preferirei l’interfaccia grafica. I pacchetti di chaos calmer funzionano.
    ora vorrei metterci del mio……preferirei avere una versione stabile. sto cercando di compilare la chaos calmer. sono partito dal tuo .config ed ho fatto delle piccole aggiunte:
    -ZRAM ENABLE
    -luci-app-p910nd.
    -luci-app-transmission
    -transmission-remot
    -aria2
    -wget.
    ovviamente, se funge tutto, vorrei condividere il mio lavoro qui sopratutto perchè il 99% è farina del to sacco. ho solo una domanda riguardo alle patch di Matteo85…tu quai hai inserito? mi sapresti dare una brevissima descrizione delle varie funzionalità? grazie

    • Filippo Aceto Rispondi

      attenzione che con la stabile mi risulta che i nuovi driver del modem non funzionano, e dovresti mettere quelli vecchi. Le patch di Matteo85 van bene per la trunk. Tipo la 003 aggiunge proprio i driver del modem, quelli nuovi, così non devon esser aggiunti a mano ma sono già nell’immagine. Se segui il forum su hwupgrade vedrai che è spiegato tutto. E anche sull’ottima wiki di openwrt.

  6. cristoff Rispondi

    Filippo, ho scoperto da pochi giorni il tuo blog, e ti faccio i miei complimenti! Sei utilissimo e molto preparato

  7. Jackladen Rispondi

    rieccomi…..sto compilando da trunk…..
    problema nell’applicazione della patch con il comando su descritto. invece di
    git am nome.patch
    ho eseguito
    git add nome.patch

    Le patch stavano nella cartella di openwrt, dopo aver applicato la patch se davo
    git status
    mi usciva un elenco ccon il nome delle patch presenti in cartella eccetto quelle applicate, quindi, credo siano state applicate correttamente.
    adesso sto compilando, o meglio, sta compilando.
    vediamo cosa ne esce fuori e poi vi aggiorno.
    grazie

  8. Pietro Rispondi

    Ciao Filippo sto per flashare la tua immagine ma volevo chiederti, prima di metterla, se nonostante tu abbia compilato con la lingua italiana è ancora possibile poi selezionare l’inglese dalle impostazioni di Luci.

    • Filippo Aceto Rispondi

      L’immagine è compilata in italiano.
      Comunque se vuoi altre lingue puoi installarle con opkg o da Sistema —> Software selezionando i pacchetti di luci nella lingua desiderata.
      Ad esempio puoi installare luci-i18n-base-en per la lingua inglese e poi magari ti installi la lingua anche per altre eventuali app che hai installato. Ad esempio per il firewall, per transmission ecc…… basta cercarle comunque in Software

      • Pietro Rispondi

        Grazie mille per la spiegazione, gentilissimo!
        E’ la prima volta che provo OpenWRT quindi ancora non lo conosco bene e non so con precisione tutto quello che ci si può fare! 🙂
        Mi attira molto il fatto di poter usare transmission con un hd connesso direttamente, al momento ho una configurazione simile ma su un raspberry pi.

  9. luca Rispondi

    Ciao filippo , come ti chiami sul forum hwupgrade?Sto anch’io seguendo tutta la discussione per iniziare a lavorare sul firmware,al momento lavoro su macchina virtuale.

    Come ti trovi con trasmission? Con quanti torrent in download noti rallentamenti del router o blocchi(seed e numero di connessioni limitate? velocità?)
    64 mb di ram mi sembrano troppo pochi per gestire torrent 5-6 torrent senza problemi..Creando la partizione di swap sul disco sei riuscito a risolvere? così facendo però non va mai in idle..

  10. Pietro Rispondi

    Ciao Filippo ho installato finalmente la tua build, openwrt è davvero spettacolare. Sono due giorni che gioco senza sosta con le infinite possibilità di avere un router con linux sopra!
    L’unico problema è che molto spesso si inchiodano i campi delle varie informazioni nella schermata di Overview su “Collecting Data…” a te capita mai?

    • Filippo Aceto Rispondi

      Non ho avuto problemi ma ho notato che a volte, se lo metto troppo sotto sforzo, mi si resetta tutta la configurazione. È pur sempre la versione trunk. Comunque credo che a breve ricompilo una nuova versione per vedere come va al momento.

  11. Michele Rispondi

    Ciao Filippo, volevo chiederti se il problema allo switch (i pacchetti che si propagano a tutte le porte invece che solamente a quella giusta) è stato risolto con le nuove build.

    Grazie!

  12. Ercole Rispondi

    Ho provato a fare una configurazione, ma non ho trovato il firmware “dsl-vrx200-firmware-xdsl-a” che indichi. Sono andato nella cartella e, in effetti, manca. Da dove la recupero?

Rispondi