Difference between revisions of "Mesh/Build An OpenWRT Image"

Jump to navigation Jump to search
3,570 bytes removed ,  22:59, 21 November 2017
Replaced content with "See https://github.com/sudomesh/sudowrt-firmware to build your own sudomesh firmware."
(Replaced content with "See https://github.com/sudomesh/sudowrt-firmware to build your own sudomesh firmware.")
 
Line 1: Line 1:
=Building an OpenWRT image=
See https://github.com/sudomesh/sudowrt-firmware to build your own sudomesh firmware.
 
If you already have a image of the operating system (firmware), then you can skip this step. If your router has the stock software, then you'll probably have to use a '''factory image''', which has information in the header which allows you to install it. Otherwise, you'll be using a '''sysupgrade image''' (trx image).
 
==Step One: Install Buildroot==
 
The Buildroot is software which will creates your firmware. The Buildroot has feeds associated with it that allow you to add more to your firmware. The feeds are comparable to [https://en.wikipedia.org/wiki/Repository_%28version_control%29 repositories] in linux. There's a [http://wiki.openwrt.org/doc/howto/buildroot.exigence full guide] at OpenWRT, this is a shorter version.
 
*Install svn and git.
*: <code>$ sudo apt-get install subversion build-essential</code>
*: <code>$ sudo apt-get install git-core</code>
*Make a new directory and download the Buildroot.
*: <code>$ mkdir ~/openwrt</code>
*: <code>$ cd ~/openwrt</code>
*: <code>$ git clone git://git.openwrt.org/openwrt.git</code>
*Update Buildroot and install feeds.
*: <code>$ cd ~/openwrt/openwrtt</code>
*: <code>$ ./scripts/feeds update -a</code>
*: <code>$ ./scripts/feeds install -a</code> (if you want to install all feeds)
*Update and Install the Buildroot dependencies
*: <code>$ make defconfig</code> (build list of dependencies)
*: <code>$ make prereq</code> (install dependencies)
 
If you're still missing software, then you'll have to manually install it.
 
==Step Two: Install Feeds==
 
There are other feeds than the standard that you may want to be available to Buildroot. These are the suggested feeds for nodes: 
 
*Find the drivers for your device
*: Determine drivers for your router based on the chipset (ex. Atheros AR9331)
*: Download the [http://wireless.kernel.org/en/users/Drivers driver for the node]. (ex. [http://wireless.kernel.org/en/users/Drivers/ath9k Ath9k])
*Install the driver feed
*: <code>$ ./scripts/feeds install <PACKAGENAME></code> (ex. kmod-ath9k)
 
[http://wiki.openwrt.org/doc/howto/wireless.overview Other feeds for OpenWRT].
 
==Step Three: Build the Firmware==
 
*Run the Buildroot
*: <code>$ make menuconfig</code>
*Configure the firmware (needs it's own article)
*: ''Kernel Modules > Network Support > kmod-ipsec''
 
=Building an OpenWRT image using a proxy=
 
Those interested in building firmware on the local network, but want all the files to be updated through our specified server (or repository), then here's the process. It allows the code to be lock a specific firmware version, audit that version, compare it to other version, and save bandwidth on the network.
 
These are the scripts to support using a proxy to build OpenWRT.
 
They're ugly and hackish. They do not yet automirror downloaded files, which would be rather important.
 
Assumptions: User 'sudomesh' builds the firmware.  User 'sudomirror' maintains the mirror. A third user has root.
 
There is an http server on localhost, and ~/public_html/ maps to ~username URLs.
 
~/bin/ is in your path ahead of system-wide binaries.
 
To use the proxy:
 
Download the build proxy source from... (urls pending)
 
copy sudomesh-bin/* into ~sudomesh/bin/
 
copy sudomirror-bin/* into ~sudomirror/bin/
 
As sudomesh, check out the OpenWRT firmware (before the firewall is up!)
 
run firewall.sh as root.
 
As sudomirror, prep-cloneserver.sh
 
As sudomirror, start ~/bin/build-proxy.py and ~/bin/cloneserver.py
 
As sudomesh, cd to the openwrt-firmware dir and run ./prepare
 
CRITICAL NOTE: These assume that git and svnsync do not ever execute code
downloaded from the remote.  I do not know if this is true.

Navigation menu