This page documents the process of how the official 22.214.171.124 images have been built.
The package has been built using the standard instructions and default config, except for the following:
CONFIG_PACKAGE_transmission-daemon=m CONFIG_PACKAGE_transmission-cli=m CONFIG_PACKAGE_transmission-web=m CONFIG_PACKAGE_libcurl=m CONFIG_PACKAGE_libid3tag=m CONFIG_PACKAGE_libmad=m CONFIG_PACKAGE_libopenssl=y CONFIG_PACKAGE_zlib=y CONFIG_PACKAGE_kmod-sound-core=m CONFIG_PACKAGE_kmod-usb-audio=m CONFIG_PACKAGE_luci-app-fonprinter=m CONFIG_PACKAGE_luci-app-fonwebcam=m CONFIG_PACKAGE_luci-app-music=m CONFIG_PACKAGE_luci-uvc=m CONFIG_PACKAGE_p910nd=m CONFIG_PACKAGE_audiod=m # CONFIG_PACKAGE_luci-nixio_cyassl is not set CONFIG_PACKAGE_luci-nixio_openssl=y # CONFIG_PACKAGE_libcyassl-luci is not set CONFIG_PACKAGE_liblzo=y CONFIG_PACKAGE_openvpn=y CONFIG_PACKAGE_zip=y CONFIG_PACKAGE_openssl-util=y CONFIG_PACKAGE_luci-app-openvpn=y CONFIG_PACKAGE_ip=y CONFIG_PACKAGE_usb-modeswitch=y CONFIG_BUSYBOX_CONFIG_STTY=y
This configuration enables some packages for building plugins, and switches from cyassl to openssl (since OpenVPN needs openssl anyway, and nixo won't build against cyassl when openssl has also been built and enables OpenVPN, iproute2 (ip), stty and usb_modeswitch (which are not in the default config). If you only want to build a custom firmware, without including the plugins, you can just remove the =m entries from the above list. You'll have to use menuconfig to set the above options, since just adding the above to .config and calling make defconfig won't work for the openssl switch (for all =m entries, it should work.
Plugins can be built by running the mk_fon_img.sh and mk_fon_pkg.sh scripts.
The upgrade script used in the tarball is the following (of course with dev=0 for the normal version):
#!/bin/ash VERSION=$(cat /etc/fon_version) FAILSAFE=$(cat /etc/failsafe) DEVICE=$(cat /etc/fon_device) if [ "$DEVICE" = "fonera20n" ] then # Set the firmware to dev mode. This /etc/config/registered file will be # preserved below. uci set registered.fonreg.dev=1 uci commit # If the pass_good value is set, make sure it is set again on the next # boot after the upgrade (we can't save all of /etc/config/system, since # it contains a lot of version-specific values). if [ "`uci -q get system.fon.pass_good`" = "1" ]; then echo "uci set system.fon.pass_good=1" > /etc/uci-defaults/pass-good echo "uci commit" >> /etc/uci-defaults/pass-good fi # Backup most settings and reboot tar cvzf /tmp/sysupgrade.tgz /etc/uci-defaults /etc/passwd /etc/group /etc/dropbear /etc/samba/smbpasswd /etc/samba/secrets.tdb /etc/config/firewall /etc/config/upnpd /etc/config/umtsd /etc/config/registered /etc/config/gdata /etc/config/facebook /etc/config/flickr /etc/config/mountd /etc/config/fon /etc/config/ddns /etc/config/wizard /etc/pureftpd.passwd /etc/pureftpd.pdb /etc/config/pureftpd /etc/config/samba /etc/config/twitter mtd -j /tmp/sysupgrade.tgz -r write fonera20n.img image > /dev/null 2>&1 return 0 else return 1 fi
The sysupgrade.tgz commandline is taken from this version of fon_admin.lua, but with /etc/config/luci_dlmanager removed (since the 126.96.36.199 release needs to change that file) and /etc/uci-defaults added (to make the part of the script work that preserves pass_good).