From 909f427f7c3e157124a42b5c4b58004376961fd5 Mon Sep 17 00:00:00 2001 From: Florian Boor Date: Fri, 17 Aug 2018 16:08:18 +0200 Subject: [PATCH] custom-firststart: add sysvinit service to run scripts on first boot --- .../startup/custom-firststart/banner.sh | 2 + .../startup/custom-firststart/firststart.init | 3 ++ .../startup/custom-firststart/firststart.sh | 34 ++++++++++++++++ recipes-bsp/startup/custom-firststart_1.0.bb | 40 +++++++++++++++++++ 4 files changed, 79 insertions(+) create mode 100755 recipes-bsp/startup/custom-firststart/banner.sh create mode 100755 recipes-bsp/startup/custom-firststart/firststart.init create mode 100644 recipes-bsp/startup/custom-firststart/firststart.sh create mode 100644 recipes-bsp/startup/custom-firststart_1.0.bb diff --git a/recipes-bsp/startup/custom-firststart/banner.sh b/recipes-bsp/startup/custom-firststart/banner.sh new file mode 100755 index 0000000..0ee9fb6 --- /dev/null +++ b/recipes-bsp/startup/custom-firststart/banner.sh @@ -0,0 +1,2 @@ +#!/bin/sh +echo Running firststart tasks diff --git a/recipes-bsp/startup/custom-firststart/firststart.init b/recipes-bsp/startup/custom-firststart/firststart.init new file mode 100755 index 0000000..1d7e7d5 --- /dev/null +++ b/recipes-bsp/startup/custom-firststart/firststart.init @@ -0,0 +1,3 @@ +#!/bin/sh + +firststart.sh diff --git a/recipes-bsp/startup/custom-firststart/firststart.sh b/recipes-bsp/startup/custom-firststart/firststart.sh new file mode 100644 index 0000000..06aecb5 --- /dev/null +++ b/recipes-bsp/startup/custom-firststart/firststart.sh @@ -0,0 +1,34 @@ +#!/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 + diff --git a/recipes-bsp/startup/custom-firststart_1.0.bb b/recipes-bsp/startup/custom-firststart_1.0.bb new file mode 100644 index 0000000..1cc19c7 --- /dev/null +++ b/recipes-bsp/startup/custom-firststart_1.0.bb @@ -0,0 +1,40 @@ +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 +} -- 2.39.2