Versione 4 del 2007-02-08 21:50:14

Nascondi questo messaggio
Italiano English
Modifica History Actions

OpenWRTCompile

...::: Compilare OpenWRT :::... BR a cura di BlaXwanBR

Ultimo aggiornamento: 05/02/2007 12:14

WORK IN PROGRESS!!!


TableOfContents


1. Disclaimer

Il presente tutorial rappresenta un'occasione di studio per imparare a compilare delle immagini di firmware linux-based per router wireless e per iniziare a scoprire il mondo di linux embedded e del cross-compiling.

Le informazioni contenute in questo tutorial, non sono tutte farina del mio sacco. Per la maggior parte mi sono limitato a raccogliere le informazioni disponibili su Internet per preparare un'immagine [http://openwrt.org OpenWrt]. Il tutorial (come tutti) è ancora da considerarsi Work in progress, quindi verrà aggiornato man mano con nuove informazioni/integrazioni.

Questo tutorial è da considerarsi a solo scopo informativo e ogni tipo di modifica che apporterete ai vostri router sono a vostro rischio, pericolo e responsabilità. Così come gli autori originali delle informazioni che qui riporto e ringrazio, non mi assumo alcuna responsabilità riguardo a danni causati a cose e persone per quanto riportato in queste pagine.

Happy hacking!

...::..:::BlaXwan:::..::...

8 febbraio 2007

2. Overview

Tra le cose che rendono fantastico il mondo dell'opensource c'è sicuramente la possibilità di compilarsi autonomamente e secondo le proprie preferenze gli applicativi di cui si ha bisogno. Una volta che ci si è compilati tutto lo GNU Linux del proprio PC, magari pure una versione mini per il palmare, che vogliamo lasciare un firmware preconfezionato sul nostro router wireless? Ovviamente no, non lo sentiremmo abbastanza "nostro"! Ed ecco che ci viene in aiuto [http://openwrt.org OpenWrt]. Si tratta di una distr...ehm cioè un firm...no, ehm una serie di pat...boh! In realtà con OpenWrt si possono compilare al volo e con pochi sforzi delle immagini complete di firmware per diverse piattaforme, che possono includere praticamente tutti gli applicativi e utility di cui si può aver bisogno. Ma in realtà OpenWrt non si può definire nè un firmware e nè una distribuzione. In pratica OpenWrt consiste in una serie di Makefile, script e patch che permettono di automatizzare il download, il patching e la compilazione di un'immagine linux embedded a partire dai sorgenti originali linux. Come vedremo nel tutorial questi processi sono del tutto automatizzati in OpenWrt, dalla compilazione del cross-compiler (compilatore multipiattaforma), al patching e compilazione del kernel linux standard, fino alla creazione di un'immagine jffs2, squashfs, ext2, ramdisk o .tgz contenente il sistema operativo completo. Insomma, niente di più adatto per cominciare!

3. Download e update via SVN

blaxwan@fabbblnx ~ $ mkdir OpenWrtCompile
blaxwan@fabbblnx ~ $ cd OpenWrtCompile

blaxwan@fabbblnx ~/OpenWrtCompile $ svn co https://svn.openwrt.org/openwrt/trunk/  

A    trunk/package/linux-atm/patches/400-stdint_local_instead_of_host.patch
A    trunk/package/linux-atm/Makefile
A    trunk/Makefile
A    trunk/README
 U   trunk
Checked out revision 6261.
blaxwan@fabbblnx ~/OpenWrtCompile $

blaxwan@fabbblnx ~/OpenWrtCompile $ svn co https://svn.openwrt.org/openwrt/packages 

A    packages/multimedia/peercast/Makefile
A    packages/multimedia/palantir
A    packages/multimedia/palantir/patches
A    packages/multimedia/palantir/patches/01-opt_flags.patch
A    packages/multimedia/palantir/Makefile
Checked out revision 6261.
blaxwan@fabbblnx ~/OpenWrtCompile $               

blaxwan@fabbblnx ~/OpenWrtCompile $ ls -l
total 8
drwxr-xr-x 11 blaxwan users 4096 Feb  3 09:33 packages
drwxr-xr-x 10 blaxwan users 4096 Feb  3 09:32 trunk

blaxwan@fabbblnx ~/OpenWrtCompile/trunk/package $ ln -sv ../../packages/*/* .
`./monit' -> `../../packages/admin/monit'
...
...
`./vim' -> `../../packages/utils/vim'
`./wx200d' -> `../../packages/utils/wx200d'
blaxwan@fabbblnx ~/OpenWrtCompile/trunk/package $     

blaxwan@fabbblnx ~/OpenWrtCompile/trunk/package $ svn co http://svn.berlios.de/svnroot/repos/xwrt/kamikaze/package/webif
A    webif/ipkg/webif-lang-ca.control
A    webif/ipkg/webif.control
A    webif/ipkg/webif-lang-ru.control
A    webif/ipkg/webif.postinst
A    webif/Makefile
Checked out revision 2444.
blaxwan@fabbblnx ~/OpenWrtCompile/trunk/package $    

blaxwan@fabbblnx ~/OpenWrtCompile $ svn up trunk packages trunk/package/webif
At revision 6261.
At revision 6261.
At revision 2444.
blaxwan@fabbblnx ~/OpenWrtCompile $   

4. Configurare il source tree

blaxwan@fabbblnx ~/OpenWrtCompile $ cd trunk
blaxwan@fabbblnx ~/OpenWrtCompile/trunk $ make menuconfig   

attachment:menuconfig.png

Target System (Atheros [2.6])  ---> 
Base System --->
        busybox --->
                Configuration --->
                        Networking utilities --->
                        [*] hostname
                        [*] httpd
                        [*]   Support reloading the global config file using hup signal
                        [*]   Enable -u <user> option
                        [*]   Enable Basic http Authentication     
                        [*]   Support Common Gateway Interface (CGI)
                        [*]     Enable support for running scripts through an interpreter 
                        
Network --->
        webif --->
                <*> webif........................ An HTTP administrative console for OpenWrt.
                < > webif-lang-ca........................... Catalan language file for webif.
                < > webif-lang-cz............................. Czech language file for webif.
                < > webif-lang-de............................ German language file for webif.
                < > webif-lang-dk............................ Danish language file for webif.   
                < > webif-lang-ee.......................... Estonian language file for webif.
                < > webif-lang-es........................... Spanish language file for webif.
                < > webif-lang-fr............................ French language file for webif.
                < > webif-lang-hr.......................... Croatian language file for webif.
                < > webif-lang-hu......................... Hungarian language file for webif.
                <*> webif-lang-it.......................... wItalian language file for webif.
                < > webif-lang-nl............................. Dutch language file for webif.
                < > webif-lang-no......................... Norwegian language file for webif.
                < > webif-lang-pl............................ Polish language file for webif.
                < > webif-lang-pt........................ Portuguese language file for webif.
                < > webif-lang-ru........................... Russian language file for webif.
                < > webif-lang-se........................... Swedish language file for webif.
                <*> webif-theme-xwrt............................. Original theme for webif^2.
                <*> webif-theme-zephyr............................. Zephyr theme for webif^2.
Utilities --->
                --- haserl............ A CGI wrapper to embed shell scripts in HTML documents

5. Compilazione

6. Ed ora?

7. Hint per lo sviluppo


8. Fonti

9. Ringraziamenti