compiling Falter Images for Freifunk Berlin
2.8.2020For various reasons, I am glad that Nick has made some efforts to flange our precious Freifunk Berlin Firmware onto Vanilla OpenWrt. The results are in the Falter Github Repo.
Update: The following tutorial is now deprecated as it might contain an outdated diffconfig. Things just got easier: Martin was so kind as to create a build script for Falter images, please find it here and use it instead.
Here is a quick tutorial on how to build working Freifunk Berlin tunneldigger Images using Falter on a linux box:
-
install OpenWrt build prerequisites aka needed packages as described here.
-
clone OpenWrt
git clone
https://git.openwrt.org/openwrt/openwrt.git falter
- change into falter folder by
cd falter
- copy feeds.conf.default to feeds.conf
cp feeds.conf.default feeds.conf
- add the following line to feeds.conf
src-git falter
https://github.com/Freifunk-Spalter/packages.git
- run the following two scripts
./scripts/feeds update -a
./scripts/feeds install -a
- select your platform and router with the following command. if you do not know where to find it, have a look at the OpenWrt wiki (I’d just google openwrt <routername>) for the router you want to build for, and look at the URLs of the downloadable images, you can get the info from the path, e.g. “ath79” and such
make menuconfig
save + exit.
- create a plain-text file called
diffconfig
and insert this with your favourite text editor:
CONFIG_PACKAGE_cgi-io=y CONFIG_PACKAGE_collectd=y CONFIG_PACKAGE_collectd-mod-cpu=y CONFIG_PACKAGE_collectd-mod-interface=y CONFIG_PACKAGE_collectd-mod-iwinfo=y CONFIG_PACKAGE_collectd-mod-load=y CONFIG_PACKAGE_collectd-mod-memory=y CONFIG_PACKAGE_collectd-mod-network=y CONFIG_PACKAGE_collectd-mod-olsrd=y CONFIG_PACKAGE_collectd-mod-ping=y CONFIG_PACKAGE_collectd-mod-rrdtool=y CONFIG_PACKAGE_collectd-mod-uptime=y CONFIG_PACKAGE_falter-berlin-dhcp-defaults=y CONFIG_PACKAGE_falter-berlin-firewall-defaults=y CONFIG_PACKAGE_falter-berlin-freifunk-defaults=y CONFIG_PACKAGE_falter-berlin-lib-guard=y CONFIG_PACKAGE_falter-berlin-migration=y CONFIG_PACKAGE_falter-berlin-network-defaults=y CONFIG_PACKAGE_falter-berlin-olsrd-defaults=y CONFIG_PACKAGE_falter-berlin-statistics-defaults=y CONFIG_PACKAGE_falter-berlin-system-defaults=y CONFIG_PACKAGE_falter-berlin-tunneldigger=y CONFIG_PACKAGE_falter-berlin-uhttpd-defaults=y CONFIG_PACKAGE_falter-berlin-uplink-tunnelberlin-tunneldigger=y CONFIG_PACKAGE_falter-common=y CONFIG_PACKAGE_falter-common-olsr=y CONFIG_PACKAGE_falter-policyrouting=y CONFIG_PACKAGE_falter-profiles=y CONFIG_PACKAGE_ip-full=y CONFIG_PACKAGE_iperf=y CONFIG_PACKAGE_kmod-ipip=y CONFIG_PACKAGE_kmod-iptunnel=y CONFIG_PACKAGE_kmod-iptunnel4=y CONFIG_PACKAGE_kmod-l2tp=y CONFIG_PACKAGE_kmod-l2tp-eth=y CONFIG_PACKAGE_kmod-l2tp-ip=y CONFIG_PACKAGE_kmod-ledtrig-default-on=y CONFIG_PACKAGE_kmod-ledtrig-heartbeat=y CONFIG_PACKAGE_kmod-ledtrig-netdev=y CONFIG_PACKAGE_kmod-ledtrig-timer=y CONFIG_PACKAGE_kmod-udptunnel4=y CONFIG_PACKAGE_kmod-udptunnel6=y CONFIG_PACKAGE_libelf=y CONFIG_PACKAGE_libiwinfo-lua=y CONFIG_PACKAGE_libltdl=y CONFIG_PACKAGE_liblua=y CONFIG_PACKAGE_liblucihttp=y CONFIG_PACKAGE_libuhttpd-openssl=y CONFIG_PACKAGE_liblucihttp-lua=y CONFIG_PACKAGE_libncurses=y CONFIG_PACKAGE_liboping=y CONFIG_PACKAGE_libpcap=y CONFIG_PACKAGE_librrd1=y CONFIG_PACKAGE_librt=y CONFIG_PACKAGE_libubus-lua=y CONFIG_PACKAGE_libuci-lua=y CONFIG_PACKAGE_lua=y CONFIG_PACKAGE_luci-app-falter-owm=y CONFIG_PACKAGE_luci-app-falter-owm-ant=y CONFIG_PACKAGE_luci-app-falter-owm-cmd=y CONFIG_PACKAGE_luci-app-falter-owm-gui=y CONFIG_PACKAGE_luci-app-ffwizard-falter=y CONFIG_PACKAGE_luci-app-firewall=y CONFIG_PACKAGE_luci-app-olsr=y CONFIG_PACKAGE_luci-app-olsr-services=y CONFIG_PACKAGE_luci-app-opkg=y CONFIG_PACKAGE_luci-app-statistics=y CONFIG_PACKAGE_luci-base=y CONFIG_PACKAGE_luci-compat=y CONFIG_PACKAGE_luci-lib-base=y CONFIG_PACKAGE_luci-lib-httpclient=y CONFIG_PACKAGE_luci-lib-httpprotoutils=y CONFIG_PACKAGE_luci-lib-ip=y CONFIG_PACKAGE_luci-lib-ipkg=y CONFIG_PACKAGE_luci-lib-json=y CONFIG_PACKAGE_luci-lib-jsonc=y CONFIG_PACKAGE_luci-lib-nixio=y CONFIG_PACKAGE_luci-ssl-openssl=y CONFIG_PACKAGE_luci-mod-admin-full=y CONFIG_PACKAGE_luci-mod-falter=y CONFIG_PACKAGE_luci-mod-network=y CONFIG_PACKAGE_luci-mod-status=y CONFIG_PACKAGE_luci-mod-system=y CONFIG_PACKAGE_luci-theme-bootstrap=y CONFIG_PACKAGE_micrond=y CONFIG_PACKAGE_mtr=y CONFIG_PACKAGE_olsrd=y CONFIG_PACKAGE_olsrd-mod-arprefresh=y CONFIG_PACKAGE_olsrd-mod-dyn-gw=y CONFIG_PACKAGE_olsrd-mod-jsoninfo=y CONFIG_PACKAGE_olsrd-mod-nameservice=y CONFIG_PACKAGE_olsrd-mod-txtinfo=y CONFIG_PACKAGE_olsrd-mod-watchdog=y CONFIG_PACKAGE_pingcheck=y CONFIG_PACKAGE_resolveip=y CONFIG_PACKAGE_rpcd=y CONFIG_PACKAGE_rpcd-mod-file=y CONFIG_PACKAGE_rpcd-mod-iwinfo=y CONFIG_PACKAGE_rpcd-mod-luci=y CONFIG_PACKAGE_rrdtool1=y CONFIG_PACKAGE_tcpdump=y CONFIG_PACKAGE_terminfo=y CONFIG_PACKAGE_uclibcxx=y CONFIG_PACKAGE_uhttpd=y CONFIG_PACKAGE_uhttpd-mod-ubus=y CONFIG_PACKAGE_zlib=y
The diffconfig essentially tells the OpenWrt build system to include our Freifunk Berlin packages as well
-
merge the diffconfig into the OpenWrt .config file
cat diffconfig >> .config
-
Sync the edited OpenWrt config, important, don’t forget:
make defconfig
-
finally: Build the whole thing. The first build will take some time, roughly 1h or so, after that the consecutive builds will be much faster
make -jX V=s
important: replace the X with cpu threads of your machine +1, for example I have 4 cpu cores that can do 8 threads via Hyperthreading, so I compile usingmake -j9 V=s
The resulting image will be in bin/targets and is ready to flash. Of course it can be used for plain-mesh nodes as well. You can also sysupgrade from 18.06-based and 19.07-based nodes preserving their config.
Enjoy your falters! Many thanks to everyone who contributed to this and to the Freifunk Berlin Firmware.
PS: Whenever you want to update your buildroot with the latest patches and code, run
git pull
./scripts/feeds update -a
./scripts/feeds install -a
and continue from step 6.