[PATCH openbmc 4/7] obmc-initfs: factor debug and takeover

Brad Bishop bradleyb at fuzziesquirrel.com
Tue Feb 9 03:58:41 AEDT 2016


> On Feb 6, 2016, at 7:00 PM, OpenBMC Patches <openbmc-patches at stwcx.xyz> wrote:
> 
> From: Milton Miller <miltonm at us.ibm.com>
> 
> Factor out sulogin and init takeover with a message.  This is mostly
> a refactor and message update with no significant logic flow.  It
> makes the repair opertunity logic consistent.

opportunity

> 
> Signed-off-by: Milton Miller <miltonm at us.ibm.com>
> ---
> .../obmc-phosphor-initfs/files/obmc-init.sh        | 46 ++++++++++++++++------
> 1 file changed, 35 insertions(+), 11 deletions(-)
> 
> diff --git a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh
> index 0109925..daa4f5c 100644
> --- a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh
> +++ b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh
> @@ -30,6 +30,32 @@ findmtd() {
> 	echo $m
> }
> 
> +debug_takeover() {
> +	echo "$@"
> +	test -n "$@" && echo Enter password to try to manually fix.
> +	cat << HERE
> +After fixing run exit to continue this script, or reboot -f to retry, or
> +touch /takeover and exit to become PID 1 allowing editing of this script.
> +HERE
> +
> +	while ! sulogin && ! test -f /takeover
> +	do
> +		echo getty failed, retrying
> +	done
> +
> +	# Touch /takeover in the above getty to become pid 1
> +	if test -e /takeover
> +	then
> +		cat << HERE
> +Takeover of init requested.  Executing /bin/sh as PID 1.
> +When finished exec new init or cleanup and run reboot -f.
> +Warning: No job control!  Shell exit will panic the system!
> +HERE
> +		export PS1=init#\ 
> +		exec /bin/sh
> +	fi
> +}
> +
> env=$(findmtd u-boot-env)
> if test -n $env
> then
> @@ -52,21 +78,19 @@ init=/sbin/init
> 
> echo rofs = $rofs $rofst   rwfs = $rwfs $rwfst
> 
> -if grep -w debug-init-sh /proc/cmdline ||
> -	! mount $rwdev $rwdir -t $rwfst -o $rwopts
> +if grep -w debug-init-sh /proc/cmdline
> then
> -	echo Please mount the rw file system on $rwdir from this shell
> -	while ! sulogin && ! test -f /takeover
> -	do
> -		echo getty failed, retrying
> -	done
> +	debug_takeover "Debug initial shell requested by command line."
> fi
> 
> -# Touch /takeover in the above getty to become pid 1
> -if test -e /takeover
> +if ! mount $rwdev $rwdir -t $rwfst -o $rwopts
> then
> -	export PS1=init#\ 
> -	exec /bin/sh
> +	msg="$(cat)" << HERE
> +Mounting read-write $rwdev filesystem failed.  Please fix and run
> +	mount $rwdev $rwdir -t $rwfs -o $rwopts
> +to to continue, or do change nothing to run from RAM for this boot.
> +HERE
> +	debug_takeover "$msg"
> fi
> 
> mount $rodev $rodir -t $rofst -o $roopts
> -- 
> 2.6.4
> 
> 
> _______________________________________________
> openbmc mailing list
> openbmc at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/openbmc


More information about the openbmc mailing list