From fc168d6eb549a5846aac798c61b3670a6074b37d Mon Sep 17 00:00:00 2001 From: Ciro Santilli Date: Fri, 9 Feb 2018 20:48:45 +0000 Subject: [PATCH] Add init_env_poweroff.sh --- README.md | 1 + init.md | 17 +++++++++++++++-- rootfs_overlay/init_env_poweroff.sh | 4 ++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100755 rootfs_overlay/init_env_poweroff.sh diff --git a/README.md b/README.md index abd170b..22578de 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ See the [getting started section](getting-started.md) for further details. 1. [KGDB](kgdb.md) 1. [gdbserver](gdbserver.md) 1. [Other architectures](other-architectures.md) + 1. [init](init.md) 1. [modprobe](modprobe.md) 1. [X11](x11.md) 1. [Count boot instructions](count-boot-instructions.md) diff --git a/init.md b/init.md index b196c79..eb388cf 100644 --- a/init.md +++ b/init.md @@ -14,7 +14,7 @@ systemd is a "popular" `/init` implementation for desktop distros as of 2017. BusyBox provides its own minimalistic init implementation which Buildroot uses by default. -### Custom init +## Custom init Is the default BusyBox `/init` too bloated for you, minimalism freak? @@ -31,7 +31,7 @@ Also remember that if your init returns, the kernel will panic, there are just t - run forever in a loop or long sleep - `poweroff` the machine -### Disable networking +## Disable networking The default BusyBox init scripts enable networking, and there is a 15 second timeout in case your network is down or if your kernel / emulator setup does not support it. @@ -42,3 +42,16 @@ To disable networking, use: To restore it, run: ./build -t initscripts-reconfigure + +## The init environment + +The docs make it clear https://www.kernel.org/doc/html/v4.14/admin-guide/kernel-parameters.html + +> The kernel parses parameters from the kernel command line up to “–”; +> if it doesn’t recognize a parameter and it doesn’t contain a ‘.’, the parameter gets passed to init: +> parameters with ‘=’ go into init’s environment, others are passed as command line arguments to init. +> Everything after “–” is passed as an argument to init. + +And you can try it out with: + + ./run -e 'init=/init_env_poweroff.sh - asdf=qwer zxcv' -n diff --git a/rootfs_overlay/init_env_poweroff.sh b/rootfs_overlay/init_env_poweroff.sh new file mode 100755 index 0000000..5c10aaa --- /dev/null +++ b/rootfs_overlay/init_env_poweroff.sh @@ -0,0 +1,4 @@ +#!/bin/sh +echo "$@" +env +/poweroff.out