--- /dev/null
+#!/bin/sh
+#
+
+DIR="/#SYSCONFDIR#/firststart.d"
+DIR_OVERLAY_LOWER="/media/rfs/ro"
+
+remove_startup_link () {
+ if [ -n "`which update-rc.d`" ]; then
+ update-rc.d -f firststart remove
+ fi
+}
+
+if ! [ -d $DIR ]; then
+ remove_startup_link
+ exit 0
+fi
+
+echo "Running first boot tasks...."
+
+run-parts $DIR
+
+# check if we have a ro overlay or if we can write changes directly
+if [ -e "/media/rfs/ro" ]; then
+# using meta-readonly-rootfs-overlay
+ mount $DIR_OVERLAY_LOWER -o remount,rw
+ rm -r $DIR_OVERLAY_LOWER/$DIR
+ rm $DIR_OVERLAY_LOWER/#SYSCONFDIR#/rc*.d/S*firststart
+ rm $DIR_OVERLAY_LOWER/#SYSCONFDIR#/init.d/firststart
+ mount $DIR_OVERLAY_LOWER -o remount,ro
+else
+ rm -rf $DIR
+ remove_startup_link
+fi
+
--- /dev/null
+SUMMARY = "Runs custom scripts on first boot of the target device"
+SECTION = "devel"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI = " \
+ file://firststart.init \
+ file://firststart.sh \
+ file://banner.sh \
+"
+
+S = "${WORKDIR}"
+
+inherit allarch update-rc.d
+
+INITSCRIPT_NAME = "firststart"
+INITSCRIPT_PARAMS = "start 99 S ."
+
+do_configure() {
+ :
+}
+
+do_compile () {
+ :
+}
+
+do_install() {
+ install -d ${D}${sysconfdir}/firststart.d/
+ install -m 0755 ${WORKDIR}/banner.sh ${D}/${sysconfdir}/firststart.d/01banner
+ install -d ${D}${sysconfdir}/init.d/
+ install -m 0755 ${WORKDIR}/firststart.init ${D}${sysconfdir}/init.d/firststart
+ install -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/firststart.sh ${D}${sbindir}/firststart.sh
+
+ sed -i -e 's:#SYSCONFDIR#:${sysconfdir}:g' \
+ -e 's:#SBINDIR#:${sbindir}:g' \
+ -e 's:#BASE_BINDIR#:${base_bindir}:g' \
+ -e 's:#LOCALSTATEDIR#:${localstatedir}:g' \
+ ${D}${sbindir}/firststart.sh
+}