61 lines
2.1 KiB
Markdown
Raw Normal View History

# What
2014-12-03 00:24:22 +01:00
2015-05-28 01:34:10 +02:00
It's a script to build a customized OpenWRT firmware image.
If this image is flashed on a device it will try to automatically
set up [extroot](http://wiki.openwrt.org/doc/howto/extroot) on **any
(!)** storage device plugged into the USB port (`/dev/sda`). Keep in
mind that **this will erase any inserted storage device while the
router is in the initial setup phase**! Unfortunately there's little
that can be done at that point to ask the user for confirmation.
# Why
So that e.g. customers can buy a router on their own, flash our
firmware, plug in a pendrive, and manage their SIP (telephony) node
from our webapp.
# Status
This is more of a template than something standalone. You most
probably want to customize this script here and there; search for
`CUSTOMIZE` for places of interest.
I've extracted this from a project where OpenWRT nodes auto-provision
themselves in 3 stages, but I thought it's useful enough for making it
public (stage 1: extroot setup; stage 2: install packages; stage 3: a
Python script for app-level sync).
At the time of writing it only supports a few `ar71xx` routers but
it's easy to extend it.
## Tested with
[OpenWRT Chaos Calmer 15.05 RC1](https://downloads.openwrt.org/chaos_calmer/15.05-rc1/)
on a TP-Link WDR4300.
# Building
e.g. `./build.sh TLWDR4300`
Results will be under `build/OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64`.
2015-05-28 00:52:13 +02:00
To see a list of available targets, run this in the ImageBuilder dir: ```make info```.
# Usage
After flashing the firmware the router will have the standard
`192.168.1.1` IP address, and SSH will listen there using the keys
specified in `image-extras/etc/dropbear/authorized_keys`.
Once connected, you can read the log with `logread -f`.
The autoprovision script will wait for any `/dev/sda` to show up, then
erase it and set up a `swap`, an `extroot`, and a `data` filesystem,
and then reboots.
In stage 2 it will need an internet connection, so you should connect
to its [LuCI interface](http://192.168.1.1) to set up an Internet
upstream, and then it will automatically continue installing packages,
finishing the whole process, and then do a final reboot.