9 Commits

Author SHA1 Message Date
Attila Lendvai
85e367523a update to openwrt 18.06.1
tested with ./build.sh ar71xx generic tl-wr1043nd-v1
2019-01-06 18:40:27 +01:00
Attila Lendvai
38a96e37e0 small note into the usage about the imagebuilder URL 2018-07-18 10:17:01 +02:00
Attila Lendvai
0381c6f40b small adjustments after the lede -> openwrt re-rename. 2018-06-26 23:26:25 +02:00
Martin Friedrich
a761fb7630 Changed to openwrt imagebuilder, back to release instead of snapshots 2018-06-26 22:40:35 +02:00
Martin Friedrich
e96f2d38cc Changed to openwrt imagebuilder, back to release instead of snapshots 2018-06-26 22:40:35 +02:00
Martin Friedrich
4a1e765a85 Changed README to openwrt imagebuilder (snapshot) 2018-06-26 22:40:35 +02:00
Martin Friedrich
31d0688c7c change to openwrt imagebuilder (snapshot) 2018-06-26 22:40:35 +02:00
Attila Lendvai
68a222edc6 small fix: creating the symping to packages dir at the end of the build. 2017-05-14 20:17:58 +02:00
Attila Lendvai
8e64a64186 Update README.md 2017-04-21 03:09:09 +02:00
2 changed files with 32 additions and 36 deletions

View File

@@ -1,9 +1,8 @@
# What
It's a script to build a customized [LEDE](https://lede-project.org/)
firmware image using a Linux x86_64 host (basic familiarity with
[LEDE](https://lede-project.org/) is assumed). LEDE is a fork of
[OpenWRT](https://openwrt.org/).
It's a script to build a customized OpenWRT firmware image on a Linux x86_64 host
(basic familiarity with [OpenWRT](https://wiki.openwrt.org/doc/howto/user.beginner)
is assumed).
If the generated image is flashed on a device it will try to automatically
set up [extroot](http://wiki.openwrt.org/doc/howto/extroot) on **any
@@ -18,17 +17,20 @@ So that e.g. customers can buy a router on their own, flash our custom
firmware, plug in a pendrive, and manage their SIP (telephony) node
from our webapp.
I've extracted the generic parts from the above mentioned auto-provision
project because I thought it's useful enough for making it public.
# How
### Building
To build issue the following command: `./build.sh architecture variant device-profile`, e.g.:
* `./build.sh ar71xx generic tl-wdr4300-v1`
To build it, issue the following command: `./build.sh architecture variant device-profile`, e.g.:
* `./build.sh ar71xx generic tl-wr1043nd-v2`
Results will be under `build/lede-imagebuilder-${release}-${architecture}-${variant}.Linux-x86_64/bin/`.
Results will be under `build/openwrt-imagebuilder-${release}-${architecture}-${variant}.Linux-x86_64/bin/`.
To see a list of available targets, run `make info` in the ImageBuilder dir.
If you want to change which LEDE version is used, then edit the relevant variable(s) in `build.sh`.
If you want to change which OpenWRT version is used, then edit the relevant variable(s) in `build.sh`.
### Setup stages
@@ -37,7 +39,7 @@ sources for details: [autoprovision-functions.sh](image-extras/common/root/autop
#### Stage 1: setup extroot
At the first boot after flashing the firmware the autoprovision script will
When the custom firmware first boots, the autoprovision script will
wait for anything (!) in `/dev/sda` to show up (that is >= 512M), then erase
it and set up a `swap`, an `extroot`, and a `data`filesystem (for the remaining
space), and then reboot.
@@ -45,8 +47,8 @@ space), and then reboot.
#### Stage 2: download and install some packages from the internet
Once it booted into the new extroot, it will continuously attempt to install
some LEDE packages until an internet connection is set up on the router
(either by using ssh or LuCI if you could fit it into the firmware).
some OpenWRT packages until an internet connection is set up on the router
(either by using ssh or the web UI (LuCI)).
### Login
@@ -57,7 +59,7 @@ By default the root passwd is not set, so the router will start telnet with
no password. If you want to set up a password, then edit the stage 2 script:
[autoprovision-stage2.sh](image-extras/common/root/autoprovision-stage2.sh#L53).
If a password is set, then telnet is disabled by LEDE and SSH will listen
If a password is set, then telnet is disabled by OpenWRT and SSH will listen
using the keys specified in [authorized_keys](image-extras/common/etc/dropbear/authorized_keys).
Once connected, you can read the log with `logread -f`.
@@ -70,42 +72,37 @@ probably want to customize this script here and there; search for
Most importantly, **set up a password and maybe an ssh key**.
I've extracted this from a project of mine where OpenWRT nodes auto-provision
themselves in 3 stages (stage 3 was a Python script for an app-level sync feature),
but I thought it's useful enough for making it public.
At the time of writing it only supports a few `ar71xx` routers out of the box,
but it's easy to extend it.
## Tested with
[LEDE 17.01.1](https://downloads.lede-project.org/releases/17.01.1/)
on a TP-Link WDR4300.
[OpenWRT 17.01.4](https://downloads.openwrt.org/releases/)
on a TP-Link WR-1043nd-v2.
# Troubleshooting
## Which file should I flash?
You should consult the documentation at [LEDE](https://lede-project.org/docs/start) and/or at
[OpenWRT](https://wiki.openwrt.org/doc/howto/user.beginner).
The produced firmware files should be somewhere around ```build/lede-imagebuilder-17.01.1-ar71xx-generic.Linux-x86_64/bin/ar71xx```.
You should consult the [OpenWRT documentation](https://wiki.openwrt.org/doc/howto/user.beginner).
The produced firmware files should be somewhere around ```build/openwrt-imagebuilder-17.01.4-ar71xx-generic.Linux-x86_64/bin/ar71xx```.
In short:
* You need a file with the name ```-factory.bin``` or ```-sysupgrade.bin```. The former is to
be used when you first install LEDE, the latter is when you upgrade an already installed
LEDE.
be used when you first install OpenWRT, the latter is when you upgrade an already installed
OpenWRT.
* You must carefully pick the proper firmware file for your **hardware version**! I advise you
to look up the wiki page for your hardware on the [OpenWRT wiki](https://wiki.openwrt.org),
because most of them have a table of the released hardawre versions with comments on their
status (sometimes new hardware revisions are only supported by the latest LEDE, which is
because most of them have a table of the released hardware versions with comments on their
status (sometimes new hardware revisions are only supported by the latest OpenWRT, which is
not released yet).
## Help! The build has finished but there's no firmware file!
If the build doesn't yield a firmware file (```*-factory.bin``` and/or ```*-sysupgrade.bin```):
when there's not enough space in the flash memory of the target device to install everything
then the LEDE ImageBuilder prints a hardly visible error into its flow of output and
then the OpenWRT ImageBuilder prints a hardly visible error into its flow of output and
silently continues. Look into [build.sh](build.sh#L31) and try to remove some packages
that you can live without.

View File

@@ -25,22 +25,21 @@ BUILD=`absolutize $BUILD`
###
### chose a release
###
#RELEASE="15.05.1"
RELEASE="17.01.1"
RELEASE="18.06.1"
IMGBUILDER_NAME="lede-imagebuilder-${RELEASE}-${TARGET_ARCHITECTURE}-${TARGET_VARIANT}.Linux-x86_64"
IMGBUILDER_NAME="openwrt-imagebuilder-${RELEASE}-${TARGET_ARCHITECTURE}-${TARGET_VARIANT}.Linux-x86_64"
IMGBUILDER_DIR="${BUILD}/${IMGBUILDER_NAME}"
IMGBUILDER_ARCHIVE="${IMGBUILDER_NAME}.tar.xz"
IMGTEMPDIR="${BUILD}/openwrt-build-image-extras"
#https://downloads.lede-project.org/snapshots/targets/ar71xx/generic/lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz
#https://downloads.lede-project.org/snapshots/targets/ar71xx/generic/lede-imagebuilder-ar71xx-generic.Linux-x86_64.tar.xz
IMGBUILDERURL="https://downloads.lede-project.org/releases/${RELEASE}/targets/${TARGET_ARCHITECTURE}/${TARGET_VARIANT}/${IMGBUILDER_ARCHIVE}"
IMGTEMPDIR="${BUILD}/image-extras"
IMGBUILDERURL="https://downloads.openwrt.org/releases/${RELEASE}/targets/${TARGET_ARCHITECTURE}/${TARGET_VARIANT}/${IMGBUILDER_ARCHIVE}"
if [ -z ${TARGET_DEVICE} ]; then
echo "Usage: $0 architecture variant device-profile"
echo " e.g.: $0 ar71xx generic tl-wr1043nd-v2"
echo " $0 ramips mt7621 zbt-wg3526"
echo " $0 bcm53xx generic dlink-dir-885l"
echo " (this last one will not work without editing build.sh, details: https://github.com/attila-lendvai/openwrt-auto-extroot/pull/15#issuecomment-405847440)"
echo " to get a list of supported devices issue a 'make info' in the OpenWRT image builder directory:"
echo " '${IMGBUILDER_DIR}'"
kill -INT $$
@@ -74,7 +73,7 @@ fi
if [ ! -e ${IMGBUILDER_DIR} ]; then
pushd ${BUILD}
# --no-check-certificate if needed
wget --continue ${IMGBUILDERURL}
wget --continue ${IMGBUILDERURL}
xz -d <${IMGBUILDER_ARCHIVE} | tar vx
popd
fi
@@ -83,8 +82,8 @@ pushd ${IMGBUILDER_DIR}
make image PROFILE=${TARGET_DEVICE} PACKAGES="${PREINSTALLED_PACKAGES}" FILES=${IMGTEMPDIR}
pushd bin/${TARGET_ARCHITECTURE}/
ln -s ../../packages .
pushd bin/targets/${TARGET_ARCHITECTURE}/
ln -s ../../../packages .
popd
popd