Compile Manually
Version 7 (Ilario Gelmetti, 08/02/2014 07:10 pm) → Version 8/15 (Ilario Gelmetti, 08/02/2014 07:11 pm)
h1. Compile Manually
h2. Using lime-build
*Resources needed:*
Probably a Linux based operating system.
Some tools for the compilation process, on Debian:
<pre>
apt-get install git build-essential libncurses5-dev zlib1g-dev gawk subversion
</pre>
About 9 GB of disk space.
About 3 hours of compilation time.
*Download* the *lime-build* source:
<pre>
git clone https://github.com/libre-mesh/lime-build.git
</pre>
Have a look at the list of devices supported by lime-build:
<pre>
make list_targets
</pre>
if you see your device you can continue with this guide, otherwise you have to use the instructions in the section "Starting from a new compilation of OpenWrt".
*Compile* Compile specifying the *target device* target device in T= and roughly the number of CPU cores plus one in J=. That is, for compiling on a dual core computer the image for Ubiquiti NanoStation M5:
<pre>
make J=3 T=nsm5 build
</pre>
You'll find the compiled images in the directory images.
Other options for lime-build are documented here: https://github.com/libre-mesh/lime-build/blob/master/README.md [[https://github.com/libre-mesh/lime-build/blob/master/README.md]]
h2. Starting from a new compilation of OpenWrt
*Resources needed:*
Probably a Linux based operating system.
Some tools for the compilation process, on Debian:
<pre>
apt-get install git build-essential libncurses5-dev zlib1g-dev gawk subversion
</pre>
About 9 GB of disk space.
About 3 hours of compilation time.
*Download trunk version of OpenWrt* (Attitude Adjustment isn't supported by Libre-Mesh).
<pre>
git clone git://git.openwrt.org/openwrt.git
</pre>
*Add our repositories* to the default ones.
<pre>
cd openwrt
cp feeds.conf.default feeds.conf
echo "src-git libremap git://github.com/libremap/libremap-agent-openwrt.git" >> feeds.conf
echo "src-git lime https://github.com/libre-mesh/lime-packages.git" >> feeds.conf
</pre>
If you want to use a specific branch of lime-packages specify it adding ;nameofthebranch at the end of the last line. For example:
<pre>
src-git lime https://github.com/libre-mesh/lime-packages.git;develop
</pre>
Download all these packages and put sources in the right place.
<pre>
scripts/feeds update -a
scripts/feeds install -a
</pre>
Then enter the OpenWrt *configuration* menu.
<pre>
make menuconfig
</pre>
Go in "Base system" and *deselect "dnsmasq"* (this is the IPv4 version which conflicts with Libre-Mesh, the IPv6 version will be automatically selected).
Exit from "Base system" end *enter in "LiMe", select what you want* (for example everything or everything except reghack and lime-full), exit.
If you need to compile images only for one type of devices you could specify the type in the menu "Target system" and "Target profile", otherwise keep the default and images for each profile will be produced. Exit and save.
Launch the *compilation*. The make -j [number] makes the compiler use multiple cores. If you have more than 2 cores, change to the appropriate number.
<pre>
make -j 3
</pre>
But if you encounter some errors (maybe related to network connectivity problems) it's better to clean up with
<pre>
make clean
</pre>
and compile without the -j option.
<pre>
make
</pre>
Flash on your devices and enjoy!
h2. Updating a previous compilation of Libre-Mesh
Enter the base directory of the previous compiled image, for example
<pre>
cd ~/openwrt
</pre>
Remove the unnecessary previously compiled files.
<pre>
make clean
</pre>
Update the OpenWrt source code.
<pre>
git pull
</pre>
Update the Libre-Mesh package source code.
<pre>
scripts/feeds update -a
scripts/feeds install -a
</pre>
Launch the compilation. The make -j [number] makes the compiler use multiple cores. If you have more than 2 cores, change to the appropriate number.
<pre>
make -j 3
</pre>
If you encounter some errors try compiling without the -j option or cleaning completely the installation environment
<pre>
make clean
make dirclean
rm -rf feeds/*
</pre>
and restart from the top of this section about updating.
h2. Using lime-build
*Resources needed:*
Probably a Linux based operating system.
Some tools for the compilation process, on Debian:
<pre>
apt-get install git build-essential libncurses5-dev zlib1g-dev gawk subversion
</pre>
About 9 GB of disk space.
About 3 hours of compilation time.
*Download* the *lime-build* source:
<pre>
git clone https://github.com/libre-mesh/lime-build.git
</pre>
Have a look at the list of devices supported by lime-build:
<pre>
make list_targets
</pre>
if you see your device you can continue with this guide, otherwise you have to use the instructions in the section "Starting from a new compilation of OpenWrt".
*Compile* Compile specifying the *target device* target device in T= and roughly the number of CPU cores plus one in J=. That is, for compiling on a dual core computer the image for Ubiquiti NanoStation M5:
<pre>
make J=3 T=nsm5 build
</pre>
You'll find the compiled images in the directory images.
Other options for lime-build are documented here: https://github.com/libre-mesh/lime-build/blob/master/README.md [[https://github.com/libre-mesh/lime-build/blob/master/README.md]]
h2. Starting from a new compilation of OpenWrt
*Resources needed:*
Probably a Linux based operating system.
Some tools for the compilation process, on Debian:
<pre>
apt-get install git build-essential libncurses5-dev zlib1g-dev gawk subversion
</pre>
About 9 GB of disk space.
About 3 hours of compilation time.
*Download trunk version of OpenWrt* (Attitude Adjustment isn't supported by Libre-Mesh).
<pre>
git clone git://git.openwrt.org/openwrt.git
</pre>
*Add our repositories* to the default ones.
<pre>
cd openwrt
cp feeds.conf.default feeds.conf
echo "src-git libremap git://github.com/libremap/libremap-agent-openwrt.git" >> feeds.conf
echo "src-git lime https://github.com/libre-mesh/lime-packages.git" >> feeds.conf
</pre>
If you want to use a specific branch of lime-packages specify it adding ;nameofthebranch at the end of the last line. For example:
<pre>
src-git lime https://github.com/libre-mesh/lime-packages.git;develop
</pre>
Download all these packages and put sources in the right place.
<pre>
scripts/feeds update -a
scripts/feeds install -a
</pre>
Then enter the OpenWrt *configuration* menu.
<pre>
make menuconfig
</pre>
Go in "Base system" and *deselect "dnsmasq"* (this is the IPv4 version which conflicts with Libre-Mesh, the IPv6 version will be automatically selected).
Exit from "Base system" end *enter in "LiMe", select what you want* (for example everything or everything except reghack and lime-full), exit.
If you need to compile images only for one type of devices you could specify the type in the menu "Target system" and "Target profile", otherwise keep the default and images for each profile will be produced. Exit and save.
Launch the *compilation*. The make -j [number] makes the compiler use multiple cores. If you have more than 2 cores, change to the appropriate number.
<pre>
make -j 3
</pre>
But if you encounter some errors (maybe related to network connectivity problems) it's better to clean up with
<pre>
make clean
</pre>
and compile without the -j option.
<pre>
make
</pre>
Flash on your devices and enjoy!
h2. Updating a previous compilation of Libre-Mesh
Enter the base directory of the previous compiled image, for example
<pre>
cd ~/openwrt
</pre>
Remove the unnecessary previously compiled files.
<pre>
make clean
</pre>
Update the OpenWrt source code.
<pre>
git pull
</pre>
Update the Libre-Mesh package source code.
<pre>
scripts/feeds update -a
scripts/feeds install -a
</pre>
Launch the compilation. The make -j [number] makes the compiler use multiple cores. If you have more than 2 cores, change to the appropriate number.
<pre>
make -j 3
</pre>
If you encounter some errors try compiling without the -j option or cleaning completely the installation environment
<pre>
make clean
make dirclean
rm -rf feeds/*
</pre>
and restart from the top of this section about updating.