CompilareDaOpenWrt

From NinuxBO
(Difference between revisions)
Jump to: navigation, search
 
(25 intermediate revisions by 7 users not shown)
Line 1: Line 1:
<code>#Questa piccola guida server a compilare libremesh partendo dai sorgenti di openwrt</code>
+
Questa piccola guida server a compilare libremesh partendo dai sorgenti di openwrt.
   
su una macchina debian installare i seguenti pacchetti:
+
Su una macchina debian installare i seguenti pacchetti(aggiungere pacchetti necessari volta per volta):
   
<code>aptitude install libncurses5-dev</code>
+
<code>apt-get install git build-essential libncurses5-dev zlib1g-dev gawk subversion</code>
   
<code>#prima di tutto scaricare i sorgenti di openwrt</code>
+
Prima di tutto scaricare i sorgenti di openwrt
   
<code>$git clone git://git.openwrt.org/openwrt.git</code>
+
<code>$git clone git://git.openwrt.org/15.05/openwrt.git</code>
   
<code>#entrare nella cartella appena scaricata da git</code>
+
entrare nella cartella appena scaricata da git
   
 
<code>$cd openwrt/</code>
 
<code>$cd openwrt/</code>
   
<code>#copiare il file feed di default in modo che sia utilizzabile</code>
+
copiare il file feed di default in modo che sia utilizzabile
   
 
<code>$cp feeds.conf.default feeds.conf</code>
 
<code>$cp feeds.conf.default feeds.conf</code>
   
<code>#quindi editare il fil feeds.conf appena creato</code>
+
quindi editare il fil feeds.conf appena creato
   
 
<code>$vi feeds.conf</code>
 
<code>$vi feeds.conf</code>
   
<code>#e aggiungere le seguenti linee</code>
+
e aggiungere le seguenti linee
   
 
<code>src-git lime https://github.com/libre-mesh/lime-packages.git</code>
 
<code>src-git lime https://github.com/libre-mesh/lime-packages.git</code>
Line 28: Line 28:
   
   
<code>#nel caso si voglia lavorare col ramo di sviluppo sostituire questa</code>
+
nel caso si voglia lavorare col ramo di sviluppo sostituire questa
   
 
<code>src-git lime https://github.com/libre-mesh/lime-packages.git</code>
 
<code>src-git lime https://github.com/libre-mesh/lime-packages.git</code>
   
<code>#con questa</code>
+
con questa
   
 
<code>src-git lime https://github.com/libre-mesh/lime-packages.git;develop</code>
 
<code>src-git lime https://github.com/libre-mesh/lime-packages.git;develop</code>
   
  +
eseguire il seguente blocco di comandi
   
 
<code>make clean && git pull && rm -rf feeds/lime && rm -rf feeds/libremap && scripts/feeds update -a && scripts/feeds install -a </code>
 
<code>make clean && git pull && rm -rf feeds/lime && rm -rf feeds/libremap && scripts/feeds update -a && scripts/feeds install -a </code>
  +
  +
make clean inizialmente chiedera' di procedere al menuconfig...potete fare exit e rimandare questa parte.
  +
A questo punto e' possibile lanciare la configurazione con:
  +
  +
<code>make menuconfig </code>
  +
  +
Bisogna:
  +
  +
* prima di tutto disabilitare "dnsmasq" in "Base System"
  +
* andare in "LiMe" e selezionare "lime-full" (lime-full deve avere la selezione [*] e non [M], vedi nota sotto)
  +
* in "LiMe" deselezionare il pacchetto "lime-proto-wan"
  +
  +
Ho caricato un file di configurazione su https://owncloud.sheratan.it/owncloud/public.php?service=files&t=88c42cd83dcd86e50ef2042b2924b3aa probabilmente make oldconfig dovrebbe essere in grado di recuperare i settings anche di fronte ad evoluzioni.
  +
  +
per velocizzare la compilazione e produrre i files per una specifico hardware
  +
  +
* "Target Profile" dove scegliere per quale hardware compilare. (Questo riduce di molto i tempi di compilazione)
  +
  +
Ora bisogna fare delle valutazioni in base alla flash disponibile sul dispositivo che andra' ad ospitare il nostro firmware:
  +
nel caso di una flash piccola(4mb) potrebbe essere necessario rimuovere dei pacchetti(lime-debug e lime-webui sono sacrificabili, per questo caso deselezionare lime-full e selezionare le singole voci da abilitare) , nel ramo di sviluppo sono implementate tecniche per ridurre ulteriormente la richiesta di spazio del firmware compilato.
  +
  +
Selezionare anche il target system corretto: la famiglia del processore della propria CPE e' individuabile sul sito di openwrt: per i tpl841 e' atheros AR7x/AR9x.
  +
  +
'''ATTENZIONE:''' se si cambia l'architettura (target) si perderanno le altre scelte (dovrete riselezionare lime-full o comunque le singole voci).
  +
  +
Una volta terminata la configurazione si può compilare il firmware con il comando
  +
  +
<code>make </code>
  +
  +
NON USARE <code>make -j n </code> PERCHE' ROMPE LA COMPILAZIONE
  +
  +
Se il processo di compilazione giungera' a buon fine troverete tutti il materiale prodotto nella cartella ./bin:
  +
ovviamente vengono prodotti i firmware per tutte le macchine supportate per il target selezionato, per il mio tplink tl-wr841nd V8 dovro' scegliere tra
  +
  +
-rw-r--r-- 1 thegamer thegamer 3.8M May 30 12:53 bin/ar71xx/openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-factory.bin
  +
  +
dedicata al caso in cui si faccia l'upgrade da firmware originale
  +
  +
-rw-r--r-- 1 thegamer thegamer 2.9M May 30 12:53 bin/ar71xx/openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-sysupgrade.bin
  +
  +
dedicata agli update da openwrt
  +
  +
  +
NOTA bene:
  +
per creare un firmware compatibile con il resto dei dispositivi di Bologna Ninux, e' necessario passare a Li-Me la configurazione corretta, sostituendo prima della compilazione del firmware il file feeds/lime/packages/lime-system/files/etc/config/lime con il seguente:
  +
  +
<pre>
  +
  +
# Beware this file is not supposed to store specific configuration, like "config net eth0"
  +
# System option
  +
  +
config lime system
  +
option hostname 'NinuxBoNode-%M4%M5%M6' # Parametrizable hostname \Mn\ will be substituted with the n'th byte of the primary_dev MAC
  +
  +
  +
# Network general option
  +
  +
config lime network
  +
option primary_interface eth0 # The mac address of this device will be used in different places
  +
option main_ipv4_address '10.51.%M5.%M6/16' # Parametrizablezable main IPv4 address \Mn\ will be substituted with the n'th byte of the primary_dev MAC
  +
option main_ipv6_address '2001:db8::%M5%M6/64' # Parametrizablezableable main IPv6 address \Mn\ will be substituted with the n'th byte of the primary_dev MAC
  +
list protocols adhoc
  +
list protocols lan
  +
list protocols anygw # Refer to http://libre-mesh.org/projects/libre-mesh/wiki/Anygw
  +
list protocols batadv:%N1 # Define virtual interface name es: bat0.11
  +
list protocols bmx6:13 # Define virtual interface name es: bm6.13
  +
list resolvers 208.67.222.222 # DNS servers node will use
  +
list resolvers 2620:0:ccc::2 #open DNS
  +
  +
  +
# WiFi general options
  +
  +
config lime wifi
  +
option channel_2ghz '11'
  +
option channel_5ghz '48'
  +
list modes 'ap'
  +
list modes 'adhoc'
  +
option ap_ssid 'NinuxBO'
  +
option adhoc_ssid 'NinuxBO-mesh'
  +
option adhoc_bssid 'de:d1:c0:c0:d1:ce' #vecchio mac:'ca:fe:00:c0:ff:ee'
  +
option adhoc_mcast_rate_2ghz '24000'
  +
option adhoc_mcast_rate_5ghz '6000'
  +
  +
</pre>
  +
  +
Si può applicare questa configurazione anche dopo aver compilato e installato il firmware sul dispositivo con i seguenti passi:
  +
  +
Copiare il file precedente sul dispositivo appena flashato come <code>/etc/config/lime </code> ed eseguire
  +
  +
<code> lime-config </code>
  +
  +
e poi
  +
  +
<code> uci commit </code>
  +
  +
Si noti che la rete ipv4 segnata nel file di configurazione è parte della /15 assegnata a NinuxBO mentre la rete ipv6 ha ancora un indirizzamento generico.

Latest revision as of 17:54, 4 February 2016

Questa piccola guida server a compilare libremesh partendo dai sorgenti di openwrt.

Su una macchina debian installare i seguenti pacchetti(aggiungere pacchetti necessari volta per volta):

apt-get install git build-essential libncurses5-dev zlib1g-dev gawk subversion

Prima di tutto scaricare i sorgenti di openwrt

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

entrare nella cartella appena scaricata da git

$cd openwrt/

copiare il file feed di default in modo che sia utilizzabile

$cp feeds.conf.default feeds.conf

quindi editare il fil feeds.conf appena creato

$vi feeds.conf

e aggiungere le seguenti linee

src-git lime https://github.com/libre-mesh/lime-packages.git

src-git libremap git://github.com/libremap/libremap-agent-openwrt.git


nel caso si voglia lavorare col ramo di sviluppo sostituire questa

src-git lime https://github.com/libre-mesh/lime-packages.git

con questa

src-git lime https://github.com/libre-mesh/lime-packages.git;develop

eseguire il seguente blocco di comandi

make clean && git pull && rm -rf feeds/lime && rm -rf feeds/libremap && scripts/feeds update -a && scripts/feeds install -a

make clean inizialmente chiedera' di procedere al menuconfig...potete fare exit e rimandare questa parte. A questo punto e' possibile lanciare la configurazione con:

make menuconfig

Bisogna:

  • prima di tutto disabilitare "dnsmasq" in "Base System"
  • andare in "LiMe" e selezionare "lime-full" (lime-full deve avere la selezione [*] e non [M], vedi nota sotto)
  • in "LiMe" deselezionare il pacchetto "lime-proto-wan"

Ho caricato un file di configurazione su https://owncloud.sheratan.it/owncloud/public.php?service=files&t=88c42cd83dcd86e50ef2042b2924b3aa probabilmente make oldconfig dovrebbe essere in grado di recuperare i settings anche di fronte ad evoluzioni.

per velocizzare la compilazione e produrre i files per una specifico hardware

  • "Target Profile" dove scegliere per quale hardware compilare. (Questo riduce di molto i tempi di compilazione)

Ora bisogna fare delle valutazioni in base alla flash disponibile sul dispositivo che andra' ad ospitare il nostro firmware: nel caso di una flash piccola(4mb) potrebbe essere necessario rimuovere dei pacchetti(lime-debug e lime-webui sono sacrificabili, per questo caso deselezionare lime-full e selezionare le singole voci da abilitare) , nel ramo di sviluppo sono implementate tecniche per ridurre ulteriormente la richiesta di spazio del firmware compilato.

Selezionare anche il target system corretto: la famiglia del processore della propria CPE e' individuabile sul sito di openwrt: per i tpl841 e' atheros AR7x/AR9x.

ATTENZIONE: se si cambia l'architettura (target) si perderanno le altre scelte (dovrete riselezionare lime-full o comunque le singole voci).

Una volta terminata la configurazione si può compilare il firmware con il comando

make

NON USARE make -j n PERCHE' ROMPE LA COMPILAZIONE

Se il processo di compilazione giungera' a buon fine troverete tutti il materiale prodotto nella cartella ./bin: ovviamente vengono prodotti i firmware per tutte le macchine supportate per il target selezionato, per il mio tplink tl-wr841nd V8 dovro' scegliere tra

-rw-r--r-- 1 thegamer thegamer 3.8M May 30 12:53 bin/ar71xx/openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-factory.bin

dedicata al caso in cui si faccia l'upgrade da firmware originale

-rw-r--r-- 1 thegamer thegamer 2.9M May 30 12:53 bin/ar71xx/openwrt-ar71xx-generic-tl-wr841n-v8-squashfs-sysupgrade.bin

dedicata agli update da openwrt


NOTA bene: per creare un firmware compatibile con il resto dei dispositivi di Bologna Ninux, e' necessario passare a Li-Me la configurazione corretta, sostituendo prima della compilazione del firmware il file feeds/lime/packages/lime-system/files/etc/config/lime con il seguente:


# Beware this file is not supposed to store specific configuration, like "config net eth0"
# System option

config lime system
option  hostname 'NinuxBoNode-%M4%M5%M6'                                # Parametrizable hostname \Mn\ will be substituted with the n'th byte of the primary_dev MAC


# Network general option

config lime network
option primary_interface eth0                                                 # The mac address of this device will be used in different places
option main_ipv4_address '10.51.%M5.%M6/16'                             # Parametrizablezable main IPv4 address \Mn\ will be substituted with the n'th byte of the primary_dev MAC
option main_ipv6_address '2001:db8::%M5%M6/64'                       # Parametrizablezableable main IPv6 address \Mn\ will be substituted with the n'th byte of the primary_dev MAC
list protocols adhoc
list protocols lan
list protocols anygw                                                                          # Refer to http://libre-mesh.org/projects/libre-mesh/wiki/Anygw
list protocols batadv:%N1                                               # Define virtual interface name es: bat0.11
list protocols bmx6:13                                                  # Define virtual interface name es: bm6.13
list resolvers 208.67.222.222                                          #        DNS servers node will use
list resolvers 2620:0:ccc::2                                           #open DNS


# WiFi general options

config lime wifi  
option channel_2ghz '11'
option          channel_5ghz '48'
list modes 'ap'
list modes 'adhoc'
option ap_ssid                  'NinuxBO'
option adhoc_ssid 'NinuxBO-mesh'
option adhoc_bssid 'de:d1:c0:c0:d1:ce'                                 #vecchio mac:'ca:fe:00:c0:ff:ee'
option adhoc_mcast_rate_2ghz '24000'
option adhoc_mcast_rate_5ghz '6000'

Si può applicare questa configurazione anche dopo aver compilato e installato il firmware sul dispositivo con i seguenti passi:

Copiare il file precedente sul dispositivo appena flashato come /etc/config/lime ed eseguire

lime-config

e poi

uci commit

Si noti che la rete ipv4 segnata nel file di configurazione è parte della /15 assegnata a NinuxBO mentre la rete ipv6 ha ancora un indirizzamento generico.

Personal tools
Namespaces

Variants
Actions
Navigation
Tools