I run snapshot builds on my devices, and have gotten tired of SSH'ing after each update just to manually install LuCI.
After a quick search for an automated install turned up fruitless, I decided to write my own rc.local startup script to install LuCI. I'm a PowerShell guy, not a bash guy, so feel free to point out mistakes or suggest improvements!
OUTFILE='/tmp/rc.local.out'
echo "$(date) - Begin execute" >> $OUTFILE
LUCI=$(opkg list-installed | grep luci)
if [ -z "$LUCI" ]
then
echo "$(date) - Updating packages" >> $OUTFILE
ATTEMPTS=0
until opkg update
do
let ATTEMPTS++
if [ $ATTEMPTS -ge 10 ]
then
echo "$(date) - Max attempts reached! Cannot update packages" >> $OUTFILE
exit 1
else
echo "$(date) - Failed to update packages; sleeping and retrying..." >> $OUTFILE
sleep 1
fi
done
echo "$(date) - Installing luci" >> $OUTFILE
opkg install luci
else
echo "$(date) - luci is already home" >> $OUTFILE
fi
echo "$(date) - Finish execute" >> $OUTFILE
exit 0
it's fine if all you can do is write scripts that are executed post-install/upgrade and you have network access without installing additional packages.
You can integrate all packages you want in a firmware image if you use the Image Builder, but that tool runs only under Linux or under the WSL environment on Windows
Neat! I wasn't aware of the Image Builder.
I've found ways to automate around my annoyances, so I'm happy to let buildbot do the work for me - at least for now.
In addition to installing LuCI, my other annoyance was disabling services (dnsmasq/firewall/odhcpd) for my dumb AP. I used this workaround to create null symlinks, and persist them through the sysupgrade.conf.
If you're using the Image Builder anyways, imho the neater way would be to create a uci-defaults script in which you can pre-configure your dumb ap (disable services, configure wifi, etc.).
you should bake opkg script (opkg_extras or richbhanovers implementation has worked for a long time) into 'FILES' including the config/opkg and profile.d/ stuff. its the most comprehensive current tool to manage similar functions...
imagebuilder supports DISABLED_SERVICES on image creation...