[OE-core] [PATCH 1/2] busybox: Add support for busybox-init

Khem Raj raj.khem at gmail.com
Mon Jan 25 20:11:11 UTC 2016


We have lsb compliant scripts unlike buildroot. Ditto wont work here
On Jan 25, 2016 12:39 PM, "Andre McCurdy" <armccurdy at gmail.com> wrote:

> On Fri, Jan 22, 2016 at 12:49 PM, Khem Raj <raj.khem at gmail.com> wrote:
> > 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 at 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
>
> Running the K?? scripts here is different to the way the Buildroot
> initscipts work. It's also not clear how the order is going to be
> reversed?
>
> Maybe try to work with the Buildroot version as-is, or add some
> comments to the commit message explaining why the OE and Buildroot
> versions need to differ.
>
>   https://git.busybox.net/buildroot/tree/package/initscripts/init.d/rcK
>
> > +     # 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.
>
> This is a copy of the comment from rcK.
>
> > +
> > +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
>
> Should that be start? The Buildroot original is:
>
>   https://git.busybox.net/buildroot/tree/package/initscripts/init.d/rcS
>
> > +               . $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
> >
> > --
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core at lists.openembedded.org
> > http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20160125/f1ea6bc7/attachment-0002.html>


More information about the Openembedded-core mailing list