Skip to content

Othernet-Project/lighthouse-firmware

Repository files navigation

Building the Outernet Lighthouse firmware image automatically
=============================================================

This should work on any Linux and probably OSX.  First get the `debian-qemu-tp.sh` script from this repository or download it directly:

    wget https://raw.githubusercontent.com/Outernet-Project/lighthouse-firmware/pillar/debian-qemu-tp.sh

* Make sure that qemu, ssh and nmap are installed.  This can be checked with `./debian-qemu-tp.sh check_requirements`
* The build will require around 10GB of disk and 5GB of ram.
* It assumes KVM is enabled for faster virtualization.
* Kick off the build with `./debian-qemu-tp.sh all`
* This will set up a Debian VM.
* You will have to enter the stock passwords once, they will be given at that time.
* For more details about tweaking the qemu script, `./debian-qemu-tp.sh --help`

This script is young and mostly tailored for a single purpose.  Open an issue to add support for your workflow or environment.


Building the Outernet Lighthouse firmware image manually
=======================================================

The following packages may need to be installed (Ubuntu system used as
example):

- git
- build-essential
- bison
- gperf
- flex
- texinfo
- libtool
- automake
- libncurses5-dev
- unzip
- libssl-dev
- mercurial
- cpio
- bc

On 64-bit systems, you may additionally need the following package:

- lib32stdc++6

Clone the lighthouse-firmware repository. This repo is primarily build scripts
and uses submodules to pull in the primary components.

#> git clone -b pillar --recursive https://github.com/Outernet-Project/lighthouse-firmware.git

Next we need to build the cross-compiler. In order to build the cross-compiler,
additional packages may be needed.

#> wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.20.0.tar.bz2
#> tar jxvf crosstool-ng-1.20.0.tar.bz2
#> cd crosstool-ng-1.20.0/
#> ./configure --enable-local
#> make && make install
#> cp <outernet-rx>/crosstool-ng.config .config
#> ./ct-ng build

The resulting cross-compiler will be in ~/x-tools/. Recommendation is to put it
into /opt:

#> sudo mkdir /opt/toolchains/
#> sudo mv ~/x-tools/arm-m6-linux-gnueabi/ /opt/toolchains/
#> sudo chown -R root.root /opt/toolchains/arm-m6-linux-gnueabi/

Change to the lighthouse-firmware tree. Buildroot will look for the
cross-compiler in /opt/toolchains.  If this is not the location, then it needs
to be changed: 

#> make buildroot-menuconfig

Build the FW:

#> make

There are some convenience targets in the make file:

buildroot-menuconfig - will setup the buildroot defconfig and run menconfig
linux-menuconfig - will setup the kernels config and run menuconfig
clean - Cleans the entire tree