Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH 1/2] busybox: Add support for busybox-init
@ 2016-01-22 20:49 Khem Raj
  2016-01-22 20:49 ` [PATCH 2/2] local.conf.sample: Document HOW-TO enable systemd or busbox to replace sysvinit Khem Raj
  2016-01-25 19:39 ` [PATCH 1/2] busybox: Add support for busybox-init Andre McCurdy
  0 siblings, 2 replies; 15+ messages in thread
From: Khem Raj @ 2016-01-22 20:49 UTC (permalink / raw)
  To: openembedded-core

in config metadata we can configure busybox based init and device
initializer ( mdev ) using e.g.

VIRTUAL-RUNTIME_dev_manager = "busybox-mdev"
VIRTUAL-RUNTIME_login_manager = "busybox"
VIRTUAL-RUNTIME_init_manager = "busybox"
VIRTUAL-RUNTIME_initscripts = "initscripts"
VIRTUAL-RUNTIME_keymaps = "keymaps"
DISTRO_FEATURES_BACKFILL_CONSIDERED += "sysvinit"

busybox can be used to provide init system
combined with mdev it makes it a complete init
system for really tiny systems.

This patch uses above defines to configure features in busybox to enable
the init system and mdev in a configurable manner

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 meta/recipes-core/busybox/busybox.inc       | 15 +++++++++++++++
 meta/recipes-core/busybox/busybox/init.cfg  |  3 +++
 meta/recipes-core/busybox/busybox/mdev.cfg  | 11 +++++++++++
 meta/recipes-core/busybox/busybox_1.24.1.bb |  6 ++++++
 meta/recipes-core/busybox/files/inittab     | 24 ++++++++++++++++++++++++
 meta/recipes-core/busybox/files/rcK         | 25 +++++++++++++++++++++++++
 meta/recipes-core/busybox/files/rcS         | 26 ++++++++++++++++++++++++++
 meta/recipes-core/busybox/files/runlevel    | 11 +++++++++++
 8 files changed, 121 insertions(+)
 create mode 100644 meta/recipes-core/busybox/busybox/init.cfg
 create mode 100644 meta/recipes-core/busybox/busybox/mdev.cfg
 create mode 100644 meta/recipes-core/busybox/files/inittab
 create mode 100644 meta/recipes-core/busybox/files/rcK
 create mode 100644 meta/recipes-core/busybox/files/rcS
 create mode 100644 meta/recipes-core/busybox/files/runlevel

diff --git a/meta/recipes-core/busybox/busybox.inc b/meta/recipes-core/busybox/busybox.inc
index 9541123..e5710f0 100644
--- a/meta/recipes-core/busybox/busybox.inc
+++ b/meta/recipes-core/busybox/busybox.inc
@@ -275,6 +275,21 @@ do_install () {
                        install -m 0755 ${WORKDIR}/mdev-mount.sh ${D}${sysconfdir}/mdev
                fi
 	fi
+        if grep "CONFIG_INIT=y" ${B}/.config; then
+                install -D -m 0777 ${WORKDIR}/rcS ${D}${sysconfdir}/init.d/rcS
+                install -D -m 0777 ${WORKDIR}/rcK ${D}${sysconfdir}/init.d/rcK
+                install -D -m 0755 ${WORKDIR}/runlevel ${D}${base_sbindir}/runlevel
+                if grep "CONFIG_FEATURE_USE_INITTAB=y" ${B}/.config; then
+                        install -D -m 0777 ${WORKDIR}/inittab ${D}${sysconfdir}/inittab
+                        tmp="${SERIAL_CONSOLES}"
+                        for i in $tmp
+                        do
+                                j=`echo ${i} | sed s/\;/\ /g`
+                                label=`echo ${i} | sed -e 's/tty//' -e 's/^.*;//' -e 's/;.*//'`
+                                echo "tty$label::respawn:${base_sbindir}/getty ${j}" >> ${D}${sysconfdir}/inittab
+                        done
+                fi
+        fi
 
     if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
         if grep -q "CONFIG_SYSLOGD=y" ${B}/.config; then
diff --git a/meta/recipes-core/busybox/busybox/init.cfg b/meta/recipes-core/busybox/busybox/init.cfg
new file mode 100644
index 0000000..006d4c6
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/init.cfg
@@ -0,0 +1,3 @@
+CONFIG_INIT=y
+CONFIG_FEATURE_USE_INITTAB=y
+
diff --git a/meta/recipes-core/busybox/busybox/mdev.cfg b/meta/recipes-core/busybox/busybox/mdev.cfg
new file mode 100644
index 0000000..6aefe90
--- /dev/null
+++ b/meta/recipes-core/busybox/busybox/mdev.cfg
@@ -0,0 +1,11 @@
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_RENAME=y
+CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
+CONFIG_FEATURE_MDEV_EXEC=y
+CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
+
+CONFIG_SETSID=y
+CONFIG_CTTYHACK=y
+
+CONFIG_FEATURE_SHADOWPASSWDS=y
diff --git a/meta/recipes-core/busybox/busybox_1.24.1.bb b/meta/recipes-core/busybox/busybox_1.24.1.bb
index 5e19d9c..8adee53 100644
--- a/meta/recipes-core/busybox/busybox_1.24.1.bb
+++ b/meta/recipes-core/busybox/busybox_1.24.1.bb
@@ -39,6 +39,12 @@ SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
            file://sha256sum.cfg \
            file://getopts.cfg \
            file://resize.cfg \
+           ${@["", "file://init.cfg"][(d.getVar('VIRTUAL-RUNTIME_init_manager', True) == 'busybox')]} \
+           ${@["", "file://mdev.cfg"][(d.getVar('VIRTUAL-RUNTIME_dev_manager', True) == 'busybox-mdev')]} \
+           file://inittab \
+           file://rcS \
+           file://rcK \
+           file://runlevel \
 "
 SRC_URI_append_libc-musl = " file://musl.cfg "
 
diff --git a/meta/recipes-core/busybox/files/inittab b/meta/recipes-core/busybox/files/inittab
new file mode 100644
index 0000000..bfec4a7
--- /dev/null
+++ b/meta/recipes-core/busybox/files/inittab
@@ -0,0 +1,24 @@
+# This is run first except when booting in single-user mode.
+
+# Startup the system
+null::sysinit:/bin/mount -t proc proc /proc
+null::sysinit:/bin/mount -t sysfs sysfs /sys
+null::sysinit:/bin/mount -t devtmpfs devtmpfs /dev
+null::sysinit:/bin/mount -o remount,rw /
+null::sysinit:/bin/mkdir -p /dev/pts
+null::sysinit:/bin/mount -t devpts devpts /dev/pts
+null::sysinit:/bin/mount -a
+
+::sysinit:/etc/init.d/rcS
+
+# Stuff to do before rebooting
+::ctrlaltdel:/sbin/reboot
+::shutdown:/etc/init.d/rcK
+::shutdown:/sbin/swapoff -a
+::shutdown:/bin/umount -a -r
+
+# Stuff to do when restarting the init process
+::restart:/sbin/init
+
+# set hostname
+null::sysinit:/bin/busybox hostname -F /etc/hostname
diff --git a/meta/recipes-core/busybox/files/rcK b/meta/recipes-core/busybox/files/rcK
new file mode 100644
index 0000000..050086e
--- /dev/null
+++ b/meta/recipes-core/busybox/files/rcK
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# Stop all init scripts in /etc/init.d
+# executing them in reversed numerical order.
+#
+for i in /etc/rc6.d/K??*; do
+     # Ignore dangling symlinks (if any).
+     [ ! -f "$i" ] && continue
+
+     case "$i" in
+	*.sh)
+	    # Source shell script for speed.
+	    (
+		trap - INT QUIT TSTP
+		set stop
+		. $i
+	    )
+	    ;;
+	*)
+	    # No sh extension, so fork subprocess.
+	    $i stop
+	    ;;
+    esac
+done
+
diff --git a/meta/recipes-core/busybox/files/rcS b/meta/recipes-core/busybox/files/rcS
new file mode 100644
index 0000000..d18c26b
--- /dev/null
+++ b/meta/recipes-core/busybox/files/rcS
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# Stop all init scripts in /etc/init.d
+# executing them in reversed numerical order.
+#
+
+for i in /etc/rcS.d/S??* /etc/rc5.d/S??* ;do
+     # Ignore dangling symlinks (if any).
+     [ ! -f "$i" ] && continue
+
+     case "$i" in
+	*.sh)
+	    # Source shell script for speed.
+	    (
+		trap - INT QUIT TSTP
+		set stop
+		. $i
+	    )
+	    ;;
+	*)
+	    # No sh extension, so fork subprocess.
+	    $i start
+	    ;;
+    esac
+done
+
diff --git a/meta/recipes-core/busybox/files/runlevel b/meta/recipes-core/busybox/files/runlevel
new file mode 100644
index 0000000..866f3b5
--- /dev/null
+++ b/meta/recipes-core/busybox/files/runlevel
@@ -0,0 +1,11 @@
+#!/bin/sh
+# busybox init does not have LSB ( sysvinit ) like initlevels
+# so lets fake it to 5 which is what we default anyway
+# this helps with opkg post installs where it tries to invoke
+# update-rc.d ad post install step.
+# for package upgrades
+# See code in update-rc.d around line 190 where it calls runlevel
+# program
+#
+echo "5"
+
-- 
2.7.0



^ permalink raw reply related	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2018-03-03  1:48 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-22 20:49 [PATCH 1/2] busybox: Add support for busybox-init Khem Raj
2016-01-22 20:49 ` [PATCH 2/2] local.conf.sample: Document HOW-TO enable systemd or busbox to replace sysvinit Khem Raj
2016-01-22 20:57   ` Tanu Kaskinen
2016-01-22 21:06     ` Khem Raj
2016-01-24 19:21   ` Paul Eggleton
2016-01-24 20:20     ` Khem Raj
2016-01-25 19:39 ` [PATCH 1/2] busybox: Add support for busybox-init Andre McCurdy
2016-01-25 20:11   ` Khem Raj
2016-02-01  8:14   ` Patrick Ohly
2016-02-01 16:57     ` Khem Raj
2016-02-02 15:00       ` Patrick Ohly
2016-02-02 15:29         ` Richard Purdie
2016-05-02 16:43           ` Denys Dmytriyenko
2018-03-02 21:19             ` Denys Dmytriyenko
2018-03-03  1:48               ` Denys Dmytriyenko

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox