initscripts: new package
authorMaxime Hadjinlian <maxime.hadjinlian@gmail.com>
Mon, 13 Jul 2015 21:00:08 +0000 (23:00 +0200)
committerThomas Petazzoni <thomas.petazzoni@free-electrons.com>
Mon, 13 Jul 2015 23:51:52 +0000 (01:51 +0200)
The folder init.d is currently installed by default since it's part of
our skeleton.
This patch creates a package out of it and make busybox/sysvinit depends
on it.

This way, if you chose another init, you don't end up with a useless
init.d folder.

[Thomas:
  - make the initscripts package selectable via a hidden bool
  - remove some unneeded changes in sysvinit.mk.]

Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
16 files changed:
package/Config.in
package/busybox/busybox.mk
package/busybox/inittab [new file with mode: 0644]
package/initscripts/Config.in [new file with mode: 0644]
package/initscripts/init.d/S20urandom [new file with mode: 0755]
package/initscripts/init.d/S40network [new file with mode: 0755]
package/initscripts/init.d/rcK [new file with mode: 0755]
package/initscripts/init.d/rcS [new file with mode: 0755]
package/initscripts/initscripts.mk [new file with mode: 0644]
package/sysvinit/sysvinit.mk
system/Config.in
system/skeleton/etc/init.d/S20urandom [deleted file]
system/skeleton/etc/init.d/S40network [deleted file]
system/skeleton/etc/init.d/rcK [deleted file]
system/skeleton/etc/init.d/rcS [deleted file]
system/skeleton/etc/inittab [deleted file]

index 9dbb28477460d2e3e5b82460a49dc7a4c791f15c..0288cb076ba86f87df9af4cd8b928797ea2d2f57 100644 (file)
@@ -1414,6 +1414,7 @@ endif
        source "package/ftop/Config.in"
        source "package/getent/Config.in"
        source "package/htop/Config.in"
+       source "package/initscripts/Config.in"
        source "package/iotop/Config.in"
        source "package/iprutils/Config.in"
        source "package/irqbalance/Config.in"
index 9289e0a211d67f081ed57e7aa33aff70ffed2114..aab7f5d577cbf58d5fdc5e043bef1cfaed6960bc 100644 (file)
@@ -148,6 +148,12 @@ define BUSYBOX_INSTALL_LOGGING_SCRIPT
        else rm -f $(TARGET_DIR)/etc/init.d/S01logging; fi
 endef
 
+ifeq ($(BR2_INIT_BUSYBOX),y)
+define BUSYBOX_INSTALL_INITTAB
+       $(INSTALL) -D -m 0644 package/busybox/inittab $(TARGET_DIR)/etc/inittab
+endef
+endif
+
 ifeq ($(BR2_PACKAGE_BUSYBOX_WATCHDOG),y)
 define BUSYBOX_SET_WATCHDOG
        $(call KCONFIG_ENABLE_OPT,CONFIG_WATCHDOG,$(BUSYBOX_BUILD_CONFIG))
@@ -205,6 +211,7 @@ endef
 
 define BUSYBOX_INSTALL_TARGET_CMDS
        $(BUSYBOX_MAKE_ENV) $(MAKE) $(BUSYBOX_MAKE_OPTS) -C $(@D) install
+       $(BUSYBOX_INSTALL_INITTAB)
        $(BUSYBOX_INSTALL_UDHCPC_SCRIPT)
        $(BUSYBOX_INSTALL_MDEV_CONF)
 endef
diff --git a/package/busybox/inittab b/package/busybox/inittab
new file mode 100644 (file)
index 0000000..b1892c1
--- /dev/null
@@ -0,0 +1,35 @@
+# /etc/inittab
+#
+# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
+#
+# Note: BusyBox init doesn't support runlevels.  The runlevels field is
+# completely ignored by BusyBox init. If you want runlevels, use
+# sysvinit.
+#
+# Format for each entry: <id>:<runlevels>:<action>:<process>
+#
+# id        == tty to run on, or empty for /dev/console
+# runlevels == ignored
+# action    == one of sysinit, respawn, askfirst, wait, and once
+# process   == program to run
+
+# Startup the system
+null::sysinit:/bin/mount -t proc proc /proc
+null::sysinit:/bin/mount -o remount,rw /
+null::sysinit:/bin/mkdir -p /dev/pts
+null::sysinit:/bin/mkdir -p /dev/shm
+null::sysinit:/bin/mount -a
+null::sysinit:/bin/hostname -F /etc/hostname
+# now run any rc scripts
+::sysinit:/etc/init.d/rcS
+
+# Put a getty on the serial port
+#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL
+
+# Stuff to do for the 3-finger salute
+::ctrlaltdel:/sbin/reboot
+
+# Stuff to do before rebooting
+::shutdown:/etc/init.d/rcK
+::shutdown:/sbin/swapoff -a
+::shutdown:/bin/umount -a -r
diff --git a/package/initscripts/Config.in b/package/initscripts/Config.in
new file mode 100644 (file)
index 0000000..82cbd5c
--- /dev/null
@@ -0,0 +1,4 @@
+config BR2_PACKAGE_INITSCRIPTS
+       bool
+       help
+         The basics startup scripts for both SysV and Busybox
diff --git a/package/initscripts/init.d/S20urandom b/package/initscripts/init.d/S20urandom
new file mode 100755 (executable)
index 0000000..36277ba
--- /dev/null
@@ -0,0 +1,51 @@
+#! /bin/sh
+#
+# urandom      This script saves the random seed between reboots.
+#              It is called from the boot, halt and reboot scripts.
+#
+# Version:     @(#)urandom  1.33  22-Jun-1998  miquels@cistron.nl
+#
+
+[ -c /dev/urandom ] || exit 0
+#. /etc/default/rcS
+
+case "$1" in
+       start|"")
+               # check for read only file system
+               if ! touch /etc/random-seed 2>/dev/null
+               then
+                       echo "read-only file system detected...done"
+                       exit
+               fi
+               if [ "$VERBOSE" != no ]
+               then
+                       echo -n "Initializing random number generator... "
+               fi
+               # Load and then save 512 bytes,
+               # which is the size of the entropy pool
+               cat /etc/random-seed >/dev/urandom
+               rm -f /etc/random-seed
+               umask 077
+               dd if=/dev/urandom of=/etc/random-seed count=1 \
+                       >/dev/null 2>&1 || echo "urandom start: failed."
+               umask 022
+               [ "$VERBOSE" != no ] && echo "done."
+               ;;
+       stop)
+               if ! touch /etc/random-seed 2>/dev/null
+                then
+                        exit
+                fi
+               # Carry a random seed from shut-down to start-up;
+               # see documentation in linux/drivers/char/random.c
+               [ "$VERBOSE" != no ] && echo -n "Saving random seed... "
+               umask 077
+               dd if=/dev/urandom of=/etc/random-seed count=1 \
+                       >/dev/null 2>&1 || echo "urandom stop: failed."
+               [ "$VERBOSE" != no ] && echo "done."
+               ;;
+       *)
+               echo "Usage: urandom {start|stop}" >&2
+               exit 1
+               ;;
+esac
diff --git a/package/initscripts/init.d/S40network b/package/initscripts/init.d/S40network
new file mode 100755 (executable)
index 0000000..bfdd491
--- /dev/null
@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# Start the network....
+#
+
+# Debian ifupdown needs the /run/network lock directory
+mkdir -p /run/network
+
+case "$1" in
+  start)
+       echo "Starting network..."
+       /sbin/ifup -a
+       ;;
+  stop)
+       echo -n "Stopping network..."
+       /sbin/ifdown -a
+       ;;
+  restart|reload)
+       "$0" stop
+       "$0" start
+       ;;
+  *)
+       echo "Usage: $0 {start|stop|restart}"
+       exit 1
+esac
+
+exit $?
+
diff --git a/package/initscripts/init.d/rcK b/package/initscripts/init.d/rcK
new file mode 100755 (executable)
index 0000000..59e9c54
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+
+# Stop all init scripts in /etc/init.d
+# executing them in reversed numerical order.
+#
+for i in $(ls -r /etc/init.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 stop
+           ;;
+    esac
+done
+
diff --git a/package/initscripts/init.d/rcS b/package/initscripts/init.d/rcS
new file mode 100755 (executable)
index 0000000..de41153
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+
+# Start all init scripts in /etc/init.d
+# executing them in numerical order.
+#
+for i in /etc/init.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 start
+               . $i
+           )
+           ;;
+       *)
+           # No sh extension, so fork subprocess.
+           $i start
+           ;;
+    esac
+done
+
diff --git a/package/initscripts/initscripts.mk b/package/initscripts/initscripts.mk
new file mode 100644 (file)
index 0000000..a5d8db7
--- /dev/null
@@ -0,0 +1,15 @@
+################################################################################
+#
+# initscripts
+#
+################################################################################
+
+# source included in buildroot
+INITSCRIPTS_SOURCE =
+
+define INITSCRIPTS_INSTALL_TARGET_CMDS
+       mkdir -p  $(TARGET_DIR)/etc/init.d
+       $(INSTALL) -D -m 0755 package/initscripts/init.d/* $(TARGET_DIR)/etc/init.d/
+endef
+
+$(eval $(generic-package))
index 53640a4d9f314ceca12debdeb7c1135921bb22af..2460dd92230b0337293b4c43deae54b1fff5fec8 100644 (file)
@@ -34,8 +34,6 @@ define SYSVINIT_INSTALL_TARGET_CMDS
        for x in halt init shutdown killall5; do \
                $(INSTALL) -D -m 0755 $(@D)/src/$$x $(TARGET_DIR)/sbin/$$x || exit 1; \
        done
-       # Override BusyBox's inittab with an inittab compatible with
-       # sysvinit
        $(INSTALL) -D -m 0644 package/sysvinit/inittab $(TARGET_DIR)/etc/inittab
        ln -sf /sbin/halt $(TARGET_DIR)/sbin/reboot
        ln -sf /sbin/halt $(TARGET_DIR)/sbin/poweroff
index b72aa1781b405e4dac600c844d606ac2a3961909..fad829dad36b047900892e921b02cdd0fb052fdb 100644 (file)
@@ -70,10 +70,12 @@ choice
 config BR2_INIT_BUSYBOX
        bool "BusyBox"
        select BR2_PACKAGE_BUSYBOX
+       select BR2_PACKAGE_INITSCRIPTS
 
 config BR2_INIT_SYSV
        bool "systemV"
        select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # sysvinit
+       select BR2_PACKAGE_INITSCRIPTS
        select BR2_PACKAGE_SYSVINIT
 
 config BR2_INIT_SYSTEMD
diff --git a/system/skeleton/etc/init.d/S20urandom b/system/skeleton/etc/init.d/S20urandom
deleted file mode 100755 (executable)
index 36277ba..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#! /bin/sh
-#
-# urandom      This script saves the random seed between reboots.
-#              It is called from the boot, halt and reboot scripts.
-#
-# Version:     @(#)urandom  1.33  22-Jun-1998  miquels@cistron.nl
-#
-
-[ -c /dev/urandom ] || exit 0
-#. /etc/default/rcS
-
-case "$1" in
-       start|"")
-               # check for read only file system
-               if ! touch /etc/random-seed 2>/dev/null
-               then
-                       echo "read-only file system detected...done"
-                       exit
-               fi
-               if [ "$VERBOSE" != no ]
-               then
-                       echo -n "Initializing random number generator... "
-               fi
-               # Load and then save 512 bytes,
-               # which is the size of the entropy pool
-               cat /etc/random-seed >/dev/urandom
-               rm -f /etc/random-seed
-               umask 077
-               dd if=/dev/urandom of=/etc/random-seed count=1 \
-                       >/dev/null 2>&1 || echo "urandom start: failed."
-               umask 022
-               [ "$VERBOSE" != no ] && echo "done."
-               ;;
-       stop)
-               if ! touch /etc/random-seed 2>/dev/null
-                then
-                        exit
-                fi
-               # Carry a random seed from shut-down to start-up;
-               # see documentation in linux/drivers/char/random.c
-               [ "$VERBOSE" != no ] && echo -n "Saving random seed... "
-               umask 077
-               dd if=/dev/urandom of=/etc/random-seed count=1 \
-                       >/dev/null 2>&1 || echo "urandom stop: failed."
-               [ "$VERBOSE" != no ] && echo "done."
-               ;;
-       *)
-               echo "Usage: urandom {start|stop}" >&2
-               exit 1
-               ;;
-esac
diff --git a/system/skeleton/etc/init.d/S40network b/system/skeleton/etc/init.d/S40network
deleted file mode 100755 (executable)
index bfdd491..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-#
-# Start the network....
-#
-
-# Debian ifupdown needs the /run/network lock directory
-mkdir -p /run/network
-
-case "$1" in
-  start)
-       echo "Starting network..."
-       /sbin/ifup -a
-       ;;
-  stop)
-       echo -n "Stopping network..."
-       /sbin/ifdown -a
-       ;;
-  restart|reload)
-       "$0" stop
-       "$0" start
-       ;;
-  *)
-       echo "Usage: $0 {start|stop|restart}"
-       exit 1
-esac
-
-exit $?
-
diff --git a/system/skeleton/etc/init.d/rcK b/system/skeleton/etc/init.d/rcK
deleted file mode 100755 (executable)
index 59e9c54..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-
-# Stop all init scripts in /etc/init.d
-# executing them in reversed numerical order.
-#
-for i in $(ls -r /etc/init.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 stop
-           ;;
-    esac
-done
-
diff --git a/system/skeleton/etc/init.d/rcS b/system/skeleton/etc/init.d/rcS
deleted file mode 100755 (executable)
index de41153..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-
-
-# Start all init scripts in /etc/init.d
-# executing them in numerical order.
-#
-for i in /etc/init.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 start
-               . $i
-           )
-           ;;
-       *)
-           # No sh extension, so fork subprocess.
-           $i start
-           ;;
-    esac
-done
-
diff --git a/system/skeleton/etc/inittab b/system/skeleton/etc/inittab
deleted file mode 100644 (file)
index b1892c1..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-# /etc/inittab
-#
-# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
-#
-# Note: BusyBox init doesn't support runlevels.  The runlevels field is
-# completely ignored by BusyBox init. If you want runlevels, use
-# sysvinit.
-#
-# Format for each entry: <id>:<runlevels>:<action>:<process>
-#
-# id        == tty to run on, or empty for /dev/console
-# runlevels == ignored
-# action    == one of sysinit, respawn, askfirst, wait, and once
-# process   == program to run
-
-# Startup the system
-null::sysinit:/bin/mount -t proc proc /proc
-null::sysinit:/bin/mount -o remount,rw /
-null::sysinit:/bin/mkdir -p /dev/pts
-null::sysinit:/bin/mkdir -p /dev/shm
-null::sysinit:/bin/mount -a
-null::sysinit:/bin/hostname -F /etc/hostname
-# now run any rc scripts
-::sysinit:/etc/init.d/rcS
-
-# Put a getty on the serial port
-#ttyS0::respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL
-
-# Stuff to do for the 3-finger salute
-::ctrlaltdel:/sbin/reboot
-
-# Stuff to do before rebooting
-::shutdown:/etc/init.d/rcK
-::shutdown:/sbin/swapoff -a
-::shutdown:/bin/umount -a -r