diff --git a/recipes-core/fastinit/fastinit.bb b/recipes-core/fastinit/fastinit.bb new file mode 100644 index 0000000000000000000000000000000000000000..1d97a8d00b4d4e88eb2f351e03e5b3a1dcbbd230 --- /dev/null +++ b/recipes-core/fastinit/fastinit.bb @@ -0,0 +1,14 @@ +SUMMARY = "Installs fast init script to replace SysVinit" +LICENSE = "CLOSED" + +SRC_URI = "file://fastinit.sh" + +S = "${WORKDIR}" + +do_install() { + install -d ${D}/usr/sbin + install -m 0755 ${WORKDIR}/fastinit.sh ${D}/usr/sbin/ +} + +FILES:${PN} = "/usr/sbin/fastinit.sh" + diff --git a/recipes-core/fastinit/files/fastinit.sh b/recipes-core/fastinit/files/fastinit.sh new file mode 100755 index 0000000000000000000000000000000000000000..059a9095cb4550ab2b781acc292ca3fc3ad35ca2 --- /dev/null +++ b/recipes-core/fastinit/files/fastinit.sh @@ -0,0 +1,73 @@ +#!/bin/sh + +trap 'exec /sbin/poweroff -f' TERM +trap 'exec /sbin/reboot -f' INT HUP + +log_to_kernel() { + echo "<4>fastinit: $1" > /dev/kmsg +} + +warn_to_kernel() { + echo "<2>fastinit: $1" > /dev/kmsg +} + +crit_to_kernel() { + echo "<1>fastinit: $1" > /dev/kmsg +} + +level_zero() { + exec /sbin/poweroff -f +} + +level_one() { + log_to_kernel "mounting filesystems" + mount -t proc proc /proc + mount -t sysfs sysfs /sys + mount -o ro /dev/mmcblk0p1 /boot + + log_to_kernel "getting teletypes on ttyS0" + /sbin/getty -L 115200 ttyS0 vt100 +} + +level_five() { + exec /sbin/init 5 +} + +level_six() { + exec /sbin/reboot -f +} + +runlevel=$1 + +if [ -z "$runlevel" ]; then + warn_to_kernel "cannot read runlevel from argument" + warn_to_kernel "please edit cmdline.txt in bootfs" + warn_to_kernel "usage: init=/usr/sbin/fastinit RUNLEVEL" +else + case $runlevel in + 0) + log_to_kernel "entering runlevel 0 (halt)" + level_zero + ;; + 1) + log_to_kernel "entering runlevel 1 (minimal)" + level_one + ;; + 5) + log_to_kernel "entering runlevel 5 (sysvinit)" + level_five + ;; + 6) + log_to_kernel "entering runlevel 6 (reboot)" + level_six + ;; + *) + warn_to_kernel "Runlevel $runlevel not implemented" + warn_to_kernel "usage: /usr/sbin/fastinit RUNLEVEL" + ;; + esac +fi + +crit_to_kernel "host is up and ready" + +exit 0 diff --git a/recipes-core/images/mar-image-minimal.bb b/recipes-core/images/mar-image-minimal.bb index 84a3d9b8cc393642b45cb354989aa69ffabdeae6..30a27008dfcd9a066c823ad25bce9525237bed14 100644 --- a/recipes-core/images/mar-image-minimal.bb +++ b/recipes-core/images/mar-image-minimal.bb @@ -2,15 +2,11 @@ SUMMARY = "A small image just capable of allowing a device to boot." IMAGE_INSTALL = "packagegroup-core-boot \ packagegroup-base-extended \ - zeromq \ python3 \ - python3-pyzmq \ python3-pyserial \ - connman \ - connman-client \ screen \ - serial-usb \ usb-modeswitch \ + fastinit \ serial-usb \ ${CORE_IMAGE_EXTRA_INSTALL}"