From 0be3bf370864a81cad36ec1947c85175456858cc Mon Sep 17 00:00:00 2001 From: Jeffrey Townsend Date: Tue, 29 Mar 2016 14:58:35 +0000 Subject: [PATCH 1/3] New boot.d early init sequence. There is a new init sequence that is executed prior to all concurrent init.d services. Placing ordered services in /etc/boot.d allows you to interpose upgrade, verification, and special handling prior to execution of the normal SYSV init. This system can be accessed by placing ordered scripts directly in /etc/boot.d from your package. This infra is used to perform early loader and partition upgrade checks, onie upgrades, cpld upgrades, and the like. Normal filesystem mounts are performed at priority 50. Platform initialization is performated at priority 51. TODO: Integrate upgrade sequence. --- .../rootfs/jessie/common/overlay/etc/inittab | 67 +++++++++++++++++++ .../any/rootfs/jessie/standard/standard.yml | 2 - .../rootfs/wheezy/common/overlay/etc/inittab | 67 +++++++++++++++++++ .../any/rootfs/wheezy/standard/standard.yml | 2 - packages/base/all/boot.d/Makefile | 1 + packages/base/all/boot.d/PKG.yml | 16 +++++ .../base/all/boot.d/src/50.initdev | 9 --- packages/base/all/boot.d/src/boot | 19 ++++++ packages/base/all/vendor-config-onl/PKG.yml | 4 +- .../51.onl-platform-baseconf} | 0 .../src/boot.d/onl-platform-baseconf | 17 +++++ 11 files changed, 189 insertions(+), 15 deletions(-) create mode 100644 builds/any/rootfs/jessie/common/overlay/etc/inittab create mode 100644 builds/any/rootfs/wheezy/common/overlay/etc/inittab create mode 100644 packages/base/all/boot.d/Makefile create mode 100644 packages/base/all/boot.d/PKG.yml rename builds/any/rootfs/wheezy/common/overlay/etc/init.d/initdev => packages/base/all/boot.d/src/50.initdev (68%) create mode 100755 packages/base/all/boot.d/src/boot rename packages/base/all/vendor-config-onl/src/{init.d/onl-platform-baseconf => boot.d/51.onl-platform-baseconf} (100%) create mode 100755 packages/base/all/vendor-config-onl/src/boot.d/onl-platform-baseconf diff --git a/builds/any/rootfs/jessie/common/overlay/etc/inittab b/builds/any/rootfs/jessie/common/overlay/etc/inittab new file mode 100644 index 00000000..e242bf0a --- /dev/null +++ b/builds/any/rootfs/jessie/common/overlay/etc/inittab @@ -0,0 +1,67 @@ +# The default runlevel. +id:2:initdefault: + +# Boot-time system configuration/initialization script. +# This is run first except when booting in emergency (-b) mode. +si0::sysinit:/etc/boot.d/boot +si1::sysinit:/etc/init.d/rcS + +# What to do in single-user mode. +~~:S:wait:/sbin/sulogin + +# /etc/init.d executes the S and K scripts upon change +# of runlevel. +# +# Runlevel 0 is halt. +# Runlevel 1 is single-user. +# Runlevels 2-5 are multi-user. +# Runlevel 6 is reboot. + +l0:0:wait:/etc/init.d/rc 0 +l1:1:wait:/etc/init.d/rc 1 +l2:2:wait:/etc/init.d/rc 2 +l3:3:wait:/etc/init.d/rc 3 +l4:4:wait:/etc/init.d/rc 4 +l5:5:wait:/etc/init.d/rc 5 +l6:6:wait:/etc/init.d/rc 6 +# Normally not reached, but fallthrough in case of emergency. +z6:6:respawn:/sbin/sulogin + +# What to do when CTRL-ALT-DEL is pressed. +ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now + +# Action on special keypress (ALT-UpArrow). +#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work." + +# What to do when the power fails/returns. +pf::powerwait:/etc/init.d/powerfail start +pn::powerfailnow:/etc/init.d/powerfail now +po::powerokwait:/etc/init.d/powerfail stop + +# /sbin/getty invocations for the runlevels. +# +# The "id" field MUST be the same as the last +# characters of the device (after "tty"). +# +# Format: +# ::: +# +# Note that on most Debian systems tty7 is used by the X Window System, +# so if you want to add more getty's go ahead but skip tty7 if you run X. +# +1:2345:respawn:/sbin/getty 38400 tty1 +2:23:respawn:/sbin/getty 38400 tty2 +3:23:respawn:/sbin/getty 38400 tty3 +4:23:respawn:/sbin/getty 38400 tty4 +5:23:respawn:/sbin/getty 38400 tty5 +6:23:respawn:/sbin/getty 38400 tty6 + +# Example how to put a getty on a serial line (for a terminal) +# +#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 +#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 + +# Example how to put a getty on a modem line. +# +#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3 + diff --git a/builds/any/rootfs/jessie/standard/standard.yml b/builds/any/rootfs/jessie/standard/standard.yml index 785a2638..49775888 100644 --- a/builds/any/rootfs/jessie/standard/standard.yml +++ b/builds/any/rootfs/jessie/standard/standard.yml @@ -55,8 +55,6 @@ Configure: - ${ONL}/builds/any/rootfs/${ONL_DEBIAN_SUITE}/common/overlay update-rc.d: - - 'initdev defaults' - - 'onl-platform-baseconf defaults' - 'faultd defaults' - 'onlpd defaults' - 'snmpd remove' diff --git a/builds/any/rootfs/wheezy/common/overlay/etc/inittab b/builds/any/rootfs/wheezy/common/overlay/etc/inittab new file mode 100644 index 00000000..e242bf0a --- /dev/null +++ b/builds/any/rootfs/wheezy/common/overlay/etc/inittab @@ -0,0 +1,67 @@ +# The default runlevel. +id:2:initdefault: + +# Boot-time system configuration/initialization script. +# This is run first except when booting in emergency (-b) mode. +si0::sysinit:/etc/boot.d/boot +si1::sysinit:/etc/init.d/rcS + +# What to do in single-user mode. +~~:S:wait:/sbin/sulogin + +# /etc/init.d executes the S and K scripts upon change +# of runlevel. +# +# Runlevel 0 is halt. +# Runlevel 1 is single-user. +# Runlevels 2-5 are multi-user. +# Runlevel 6 is reboot. + +l0:0:wait:/etc/init.d/rc 0 +l1:1:wait:/etc/init.d/rc 1 +l2:2:wait:/etc/init.d/rc 2 +l3:3:wait:/etc/init.d/rc 3 +l4:4:wait:/etc/init.d/rc 4 +l5:5:wait:/etc/init.d/rc 5 +l6:6:wait:/etc/init.d/rc 6 +# Normally not reached, but fallthrough in case of emergency. +z6:6:respawn:/sbin/sulogin + +# What to do when CTRL-ALT-DEL is pressed. +ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now + +# Action on special keypress (ALT-UpArrow). +#kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work." + +# What to do when the power fails/returns. +pf::powerwait:/etc/init.d/powerfail start +pn::powerfailnow:/etc/init.d/powerfail now +po::powerokwait:/etc/init.d/powerfail stop + +# /sbin/getty invocations for the runlevels. +# +# The "id" field MUST be the same as the last +# characters of the device (after "tty"). +# +# Format: +# ::: +# +# Note that on most Debian systems tty7 is used by the X Window System, +# so if you want to add more getty's go ahead but skip tty7 if you run X. +# +1:2345:respawn:/sbin/getty 38400 tty1 +2:23:respawn:/sbin/getty 38400 tty2 +3:23:respawn:/sbin/getty 38400 tty3 +4:23:respawn:/sbin/getty 38400 tty4 +5:23:respawn:/sbin/getty 38400 tty5 +6:23:respawn:/sbin/getty 38400 tty6 + +# Example how to put a getty on a serial line (for a terminal) +# +#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 +#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 + +# Example how to put a getty on a modem line. +# +#T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3 + diff --git a/builds/any/rootfs/wheezy/standard/standard.yml b/builds/any/rootfs/wheezy/standard/standard.yml index 16567372..3010b68d 100644 --- a/builds/any/rootfs/wheezy/standard/standard.yml +++ b/builds/any/rootfs/wheezy/standard/standard.yml @@ -55,8 +55,6 @@ Configure: - ${ONL}/builds/any/rootfs/${ONL_DEBIAN_SUITE}/common/overlay update-rc.d: - - 'initdev defaults' - - 'onl-platform-baseconf defaults' - 'faultd defaults' - 'onlpd defaults' - 'snmpd remove' diff --git a/packages/base/all/boot.d/Makefile b/packages/base/all/boot.d/Makefile new file mode 100644 index 00000000..003238cf --- /dev/null +++ b/packages/base/all/boot.d/Makefile @@ -0,0 +1 @@ +include $(ONL)/make/pkg.mk \ No newline at end of file diff --git a/packages/base/all/boot.d/PKG.yml b/packages/base/all/boot.d/PKG.yml new file mode 100644 index 00000000..c785401e --- /dev/null +++ b/packages/base/all/boot.d/PKG.yml @@ -0,0 +1,16 @@ +common: + arch: all + version: 1.0.0 + copyright: Copyright 2013, 2014, 2015 Big Switch Networks + maintainer: support@bigswitch.com + +packages: + - name: onl-bootd + version: 1.0.0 + summary: Open Network Linux Boot Stage + + files: + - src : /etc/boot.d + + changelog: Change changes changes., + diff --git a/builds/any/rootfs/wheezy/common/overlay/etc/init.d/initdev b/packages/base/all/boot.d/src/50.initdev similarity index 68% rename from builds/any/rootfs/wheezy/common/overlay/etc/init.d/initdev rename to packages/base/all/boot.d/src/50.initdev index df9dd898..6a0292a2 100755 --- a/builds/any/rootfs/wheezy/common/overlay/etc/init.d/initdev +++ b/packages/base/all/boot.d/src/50.initdev @@ -1,14 +1,5 @@ #!/bin/sh -### BEGIN INIT INFO -# Provides: initdev -# Required-Start: -# Required-Stop: -# Default-Start: S -# Default-Stop: -# Short-Description: Set up block and net devices -### END INIT INFO - . /lib/lsb/init-functions log_action_begin_msg "Setting up block and net devices" diff --git a/packages/base/all/boot.d/src/boot b/packages/base/all/boot.d/src/boot new file mode 100755 index 00000000..ceab23f7 --- /dev/null +++ b/packages/base/all/boot.d/src/boot @@ -0,0 +1,19 @@ +#!/bin/sh +############################################################ +# +# Initial boot setup. Required before running +# any concurrent service initialization in rcS +# +# This is designed to support early setup, platform, +# and upgrade operations. +# +############################################################ +PATH=/sbin:/usr/sbin:/bin:/usr/bin +export PATH + +for script in `ls /etc/boot.d/[0-9]* | sort`; do + echo "boot.d: Running $script..." + $script +done + + diff --git a/packages/base/all/vendor-config-onl/PKG.yml b/packages/base/all/vendor-config-onl/PKG.yml index 3122ba51..82a3d46d 100644 --- a/packages/base/all/vendor-config-onl/PKG.yml +++ b/packages/base/all/vendor-config-onl/PKG.yml @@ -1,6 +1,6 @@ packages: - name: onl-vendor-config-onl - depends: python-yaml + depends: [ python-yaml, onl-bootd ] version: 1.0.0 arch: all copyright: Copyright 2013, 2014, 2015 Big Switch Networks @@ -9,7 +9,7 @@ packages: files: src/python/onl : $PY_INSTALL/onl - src/init.d : /etc/init.d + src/boot.d : /etc/boot.d src/bin : /usr/bin changelog: Changes diff --git a/packages/base/all/vendor-config-onl/src/init.d/onl-platform-baseconf b/packages/base/all/vendor-config-onl/src/boot.d/51.onl-platform-baseconf similarity index 100% rename from packages/base/all/vendor-config-onl/src/init.d/onl-platform-baseconf rename to packages/base/all/vendor-config-onl/src/boot.d/51.onl-platform-baseconf diff --git a/packages/base/all/vendor-config-onl/src/boot.d/onl-platform-baseconf b/packages/base/all/vendor-config-onl/src/boot.d/onl-platform-baseconf new file mode 100755 index 00000000..718fa281 --- /dev/null +++ b/packages/base/all/vendor-config-onl/src/boot.d/onl-platform-baseconf @@ -0,0 +1,17 @@ +#!/usr/bin/python + +### BEGIN INIT INFO +# Provides: onl-platform-baseconf +# Required-Start: +# Required-Stop: +# Default-Start: S +# Default-Stop: +# Short-Description: Set up ONL Platform +### END INIT INFO + +from onl.platform.baseconfig import baseconfig + +baseconfig() + + + From 7f5305327a8b3f11b8e816ea2ac6e084bb74cffb Mon Sep 17 00:00:00 2001 From: Jeffrey Townsend Date: Tue, 29 Mar 2016 16:04:45 +0000 Subject: [PATCH 2/3] Renamed. --- .../src/boot.d/onl-platform-baseconf | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100755 packages/base/all/vendor-config-onl/src/boot.d/onl-platform-baseconf diff --git a/packages/base/all/vendor-config-onl/src/boot.d/onl-platform-baseconf b/packages/base/all/vendor-config-onl/src/boot.d/onl-platform-baseconf deleted file mode 100755 index 718fa281..00000000 --- a/packages/base/all/vendor-config-onl/src/boot.d/onl-platform-baseconf +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/python - -### BEGIN INIT INFO -# Provides: onl-platform-baseconf -# Required-Start: -# Required-Stop: -# Default-Start: S -# Default-Stop: -# Short-Description: Set up ONL Platform -### END INIT INFO - -from onl.platform.baseconfig import baseconfig - -baseconfig() - - - From d9ea7acf5dc139daef26448af0813d69aa2dafc1 Mon Sep 17 00:00:00 2001 From: Jeffrey Townsend Date: Tue, 29 Mar 2016 16:06:51 +0000 Subject: [PATCH 3/3] Remove log msg. --- packages/base/all/boot.d/src/boot | 1 - sm/infra | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/base/all/boot.d/src/boot b/packages/base/all/boot.d/src/boot index ceab23f7..949b644a 100755 --- a/packages/base/all/boot.d/src/boot +++ b/packages/base/all/boot.d/src/boot @@ -12,7 +12,6 @@ PATH=/sbin:/usr/sbin:/bin:/usr/bin export PATH for script in `ls /etc/boot.d/[0-9]* | sort`; do - echo "boot.d: Running $script..." $script done diff --git a/sm/infra b/sm/infra index 6376b57f..19f74c74 160000 --- a/sm/infra +++ b/sm/infra @@ -1 +1 @@ -Subproject commit 6376b57ff49ee65e7512a52342e59bc1f201db33 +Subproject commit 19f74c743cd8d4c990640d0340fb295da428a0a8