Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
smesh [2010/06/14 00:01] lucasmesh [2014/07/03 14:57] (versione attuale) – modifica esterna 127.0.0.1
Linea 1: Linea 1:
-===== Compilazione di Smesh per architettura MIPS =====+b===== Compilazione di Smesh per architettura MIPS =====
  
 === Toolchain === === Toolchain ===
  
 Questo sarà lo strumento essenziale per poter compilare i sorgenti per architettura MIPS. L'ho ricavato da una compilazione di OpenWrt, quindi è testato e funzionante ed in più sfrutta le uClibc generando eseguibili molto contenuti. Lo allego {{:smesh:toolchain.tar.gz|qui}} così che sia già disponibile senza dover ricompilare OpenWrt. Questo sarà lo strumento essenziale per poter compilare i sorgenti per architettura MIPS. L'ho ricavato da una compilazione di OpenWrt, quindi è testato e funzionante ed in più sfrutta le uClibc generando eseguibili molto contenuti. Lo allego {{:smesh:toolchain.tar.gz|qui}} così che sia già disponibile senza dover ricompilare OpenWrt.
 +
 === Preparazione alla compilazione === === Preparazione alla compilazione ===
  
Linea 10: Linea 10:
   * Estrarre anche {{:smesh:smesh-src-v2.3.tar.gz|SMesh}} e all'interno della sua cartella estrarre {{:smesh:spines-src-3.2.tar.gz|Spines}} rinominando la cartella in 'spines'   * Estrarre anche {{:smesh:smesh-src-v2.3.tar.gz|SMesh}} e all'interno della sua cartella estrarre {{:smesh:spines-src-3.2.tar.gz|Spines}} rinominando la cartella in 'spines'
   * Ora ci serve anche {{:smesh:libpcap_mips-compiled.tar.gz|libpcap}} che non ha bisogno di modifiche dall'originale perciò si può copiare già compilato direttamente nella cartella di Smesh   * Ora ci serve anche {{:smesh:libpcap_mips-compiled.tar.gz|libpcap}} che non ha bisogno di modifiche dall'originale perciò si può copiare già compilato direttamente nella cartella di Smesh
-  * Per chiarezza ecco come devono essere le cartelle: +  * Per chiarezza ecco come devono essere le cartelle:
  
 {{:smesh:cartella_smesh.jpg|}} {{:smesh:cartella_smesh.jpg|}}
  
-=== Modifica dei sorgenti ===+  * Copiare questa {{:smesh:build_patch.tar.gz|patch}} in 'smesh_proxy' e testarla
  
 +  patch --dry-run --verbose -p1 -i build.patch
 +se questo è l'output
 +  Hmm...  Looks like a unified diff to me...
 +  The text leading up to this was:
 +  --------------------------
 +  |--- smesh-src-v2.3-ORIG/build 2008-05-16 23:19:34.000000000 +0200
 +  |+++ smesh_proxy/build 2010-06-14 10:18:22.142070306 +0200
 +  --------------------------
 +  Patching file build using Plan A...
 +  Hunk #1 succeeded at 16.
 +  Hunk #2 succeeded at 30.
 +  Hunk #3 succeeded at 209.
 +  done
 +allora possiamo dare il comando non in dry-mode
 +  patch --verbose -p1 -i build.patch
 +
 +  * Ora bisogna apportare un'ulteriore modifica al file build
 +
 +  export CROSS="/INSERIRE_PATH_ASSOLUTA/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin"
 +dove in INSERIRE_PATH_ASSOLUTA si deve inserire la path completa del toolchain scaricato prima
 +
 +=== Modifica dei sorgenti ===
 +
 Ora dobbiamo applicare le nostre modifiche per poter far girare le trame di controllo di SMesh e Spines su un'interfaccia diversa dal wifi, mentre Smesh continua a gestire i suoi client su wifi. Ora dobbiamo applicare le nostre modifiche per poter far girare le trame di controllo di SMesh e Spines su un'interfaccia diversa dal wifi, mentre Smesh continua a gestire i suoi client su wifi.
   * Scaricare le nostre {{:smesh:patches.tar.gz|patches}} e copiare smesh.patch in smesh-src-v2.3 e spines.patch in spines   * Scaricare le nostre {{:smesh:patches.tar.gz|patches}} e copiare smesh.patch in smesh-src-v2.3 e spines.patch in spines
   * Ora entrare rispettivamente in smesh-src-v2.3 e poi in spines per testare le patches con i seguenti comandi   * Ora entrare rispettivamente in smesh-src-v2.3 e poi in spines per testare le patches con i seguenti comandi
 +
   patch --dry-run --verbose -p1 -i smesh.patch   patch --dry-run --verbose -p1 -i smesh.patch
   patch --dry-run --verbose -p1 -i spines.patch   patch --dry-run --verbose -p1 -i spines.patch
Linea 78: Linea 101:
 === Compilazione === === Compilazione ===
  
-  * Copiare quest'altra {{:smesh:build_patch.tar.gz|patch}} in 'smesh_proxy' e testarla+  * A questo punto dobbiamo compilare prima SpinesModifichiamo il file build in
  
-  patch --dry-run --verbose -p1 -i build.patch +  BUILD_SMESH=1 
-se questo è l'output +  BUILD_SPINES=
-  Hmm...  Looks like a unified diff to me... +dove BUILD_SMESH va messo a 0
-  The text leading up to this was: +
-  -------------------------- +
-  |--- smesh-src-v2.3-ORIG/build 2008-05-16 23:19:34.000000000 +0200 +
-  |+++ smesh_proxy/build 2010-06-14 10:18:22.142070306 +0200 +
-  -------------------------- +
-  Patching file build using Plan A... +
-  Hunk #succeeded at 16. +
-  Hunk #2 succeeded at 30. +
-  Hunk #3 succeeded at 209. +
-  done +
-allora possiamo dare il comando non in dry-mode +
-  patch --verbose -p1 -i build.patch+
  
-  * Ora bisogna apportare un'ulteriore modifica al file build+  * Compiliamo Spines 
  
-  export CROSS="/INSERIRE_PATH_ASSOLUTA/toolchain-mips_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin" +  cd smesh_proxy/ 
-dove in INSERIRE_PATH_ASSOLUTA si deve inserire la path completa del toolchain scaricato prima+  ./build 
 + 
 +la compilazione dovrebbe concludersi così 
 + 
 +  SMesh build is ready on install directory 
 + 
 +  * Dobbiamo linkare le librerie di Spines prima di compilare SMesh in modo che vengano trovate durante la compilazione 
 + 
 +  cd spines/libspines/ 
 +  ln -s PATH_ASSOLUTA/smesh_proxy/spines/libspines/* ../ 
 + 
 +  * Torniamo al file build e lo modifichiamo così 
 + 
 +  BUILD_SMESH=
 +  BUILD_SPINES=0 
 + 
 +  * Compiliamo Smesh 
 + 
 +  ./build 
 + 
 +la compilazione dovrebbe concludersi così 
 + 
 +  SMesh build is ready on install directory 
 + 
 +  * Nella cartella 'install' troveremo quindi i 2 eseguibili ed i files di configurazione 
 + 
 +=== Files di configurazione === 
 + 
 +Ora sia Spines che SMesh supportano l'aggiunta di un parametro chiamato 'ctrl_if'. Questa opzione dice ai 2 programmi su quale interfaccia scambiarsi le trame di controllo. 
 +Modifichiamo quindi i files di configurazione e di avvio all'occorrenza 
 + 
 +  * Copiare questa {{:smesh:conf_patch.tar.gz|patch}} nella cartella 'install' poi dare il solito comando 
 +  
 +  cd install/ 
 +  patch --dry-run --verbose -i conf.patch 
 + 
 +se ok dare 
 + 
 +  patch --verbose -i conf.patch 
 + 
 +=== Copiare Smesh === 
 + 
 +  * Di seguito i file da copiare nelle rispettive cartelle nella RSpro 
 + 
 +  install/config.wireless > /etc/config.wireless 
 +  install/runSmesh > /etc/runSmesh 
 +  install/smesh > /etc/init.d/smesh 
 +  install/smesh.conf > /etc/smesh.conf 
 +  install/smesh_proxy > /usr/sbin/smesh_proxy 
 +  install/spines > /usr/sbin/spines 
 + 
 +  * Rendere eseguibili i binari e lo script di avvio con 
 + 
 +  chmod +x 'file' 
 + 
 +=== Lanciare Smesh === 
 + 
 +  * Ora c'è tutto il necessario per lanciare Smesh su una board MIPS (es. Ubiquiti RouterStationPro) 
 +con il comando 
 + 
 +  /etc/init.d/smesh start 
 + 
 +  * Per abilitarlo all'avvio di Openwrt 
 + 
 +  /etc/init.d/smesh enable 
 + 
 +=== Note x compilazione alix === 
 +iproute dà errore nella compilazione, per eliminarlo bisogna modificare il file 
 + 
 +i486-openwrt-linux-uclibc/sys-include/linux/if_packet.h 
 + 
 +che si trova all'interno del tool chain aggiungendo le seguenti righe 
 + 
 +''/* types.h does not always (?) inlucde __aligned_u64 */'' 
 + 
 +''#ifndef __aligned_u64'' 
 + 
 +''#define __aligned_u64 __u64 __attribute__((aligned(8)))'' 
 + 
 +''#  endif''