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

From Sudo Room
Jump to navigation Jump to search
(added proxy builds)
(Replaced content with "See https://github.com/sudomesh/sudowrt-firmware to build your own sudomesh firmware.")
 
(2 intermediate revisions by one other user not shown)
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=
 
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 systemwide binaries.
 
To use:
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, mkdir -p ~/public_html/mirror/svn/
As sudomirror, start ~/bin/build-proxy.py and ~/bin/cloneserver.py
As sudomesh, cd to the openwrt-firmware dir and run ./prepare
 
---
 
OLD MANUAL CLONE INSTRUCTIONS:
To clone a Git repository into the mirror (we're assuming you're starting
by cloning https://github.com/sudomesh/openwrt-firmware.git and that your umask
is 022)
As the mirror user:
 
mkdir -p ~/public_html/mirror/https/github.com/sudomesh/openwrt-firmware.git
cd ~/public_html/mirror/https/github.com/sudomesh/openwrt-firmware.git
git --bare init
git --bare fetch https://github.com/sudomesh/openwrt-firmware.git master:master
git update-server-info
)
 
To clone a Subversion repo into the mirror, as the mirror user:
cd ~/public_html/mirror/svn/ (Create it if needed)
mkdir -p svn.openwrt.org/openwrt/branches/attitude_adjustment
svnadmin create svn.openwrt.org/openwrt/branches/attitude_adjustment
echo '#!/bin/sh' >svn.openwrt.org/openwrt/branches/attitude_adjustment/hooks/pre-revprop-change
chmod 755 svn.openwrt.org/openwrt/branches/attitude_adjustment/hooks/pre-revprop-change
svnsync init file://$PWD/svn.openwrt.org/openwrt/branches/attitude_adjustment svn://svn.openwrt.org/openwrt/branches/attitude_adjustment
svnsync sync file://$PWD/svn.openwrt.org/openwrt/branches/attitude_adjustment
 
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.

Latest revision as of 22:59, 21 November 2017

See https://github.com/sudomesh/sudowrt-firmware to build your own sudomesh firmware.