poky/meta/recipes-core/initrdscripts/initramfs-framework/debug
Otavio Salvador ed2ac23c5b initramfs-framework: provides a modular initramfs
Provides the API and modules for a modular initramfs. The currently
included modules are:

 * initramfs-module-debug adds support to dynamic debugging of
   initramfs using bootparams

 * initramfs-module-udev: enables udev usage

 * initramfs-module-mdev: enables mdev usage

 * initramfs-module-e2fs: adds support for ext4, ext3 and ext2
   filesystems

(From OE-Core rev: 7b69ad2167a1f0e57db82817b98a0cbcb70a0dd3)

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2011-12-08 15:24:28 +00:00

2.1 KiB

#!/bin/sh

Copyright (C) 2011 O.S. Systems Software LTDA.

Licensed on MIT

Adds support to dynamic debugging of initramfs using bootparam in

following format:

shell : starts a shell before and after each module

shell=before: : starts a shell before is loaded and run

shell=after: : starts a shell after is loaded and run

shell-debug : run set -x as soon as possible

shell-debug=before: : run set -x before is loaded and run

shell-debug=after: : run set -x after is loaded and run

DEBUG_SHELL="false"

debug_hook_handler() { status=$1 module=$2

if [ -n "$bootparam_shell" ] && [ "$bootparam_shell" != "true" ]; then
	shell_wanted_status=`expr $bootparam_shell : '\(.*\):.*'`
	shell_wanted_module=`expr $bootparam_shell : '.*:\(.*\)'`

	if [ "$shell_wanted_status" = "before" ]; then
		shell_wanted_status=pre
	else
		shell_wanted_status=post
	fi
fi

if [ "$bootparam_shell" = "true" ] ||
	( [ "$status" = "$shell_wanted_status" ] &&
		[ "$module" = "$shell_wanted_module" ] ); then
	if [ "$status" = "pre" ]; then
		status_msg="before"
	else
		status_msg="after"
	fi

	msg "Starting shell $status_msg $module..."
	sh
fi

if [ -n "$bootparam_shell_debug" ] && [ "$bootparam_shell_debug" != "true" ]; then
	shell_debug_wanted_status=`expr $bootparam_shell_debug : '\(.*\):.*'`
	shell_debug_wanted_module=`expr $bootparam_shell_debug : '.*:\(.*\)'`

	if [ "$shell_debug_wanted_status" = "before" ]; then
		shell_debug_wanted_status=pre
	else
		shell_debug_wanted_status=post
	fi
fi

if [ "$bootparam_shell_debug" = "true" ] ||
	( [ "$status" = "$shell_debug_wanted_status" ] &&
		[ "$module" = "$shell_debug_wanted_module" ] ); then
	if [ "$DEBUG_SHELL" = "true" ]; then
		return 0
	fi

	if [ "$status" = "pre" ]; then
		status_msg="before"
	else
		status_msg="after"
	fi

	msg "Starting shell debugging $status_msg $module..."
	DEBUG_SHELL="true"
	set -x
fi

}

debug_enabled() { return 0 }

debug_run() { add_module_pre_hook "debug_hook_handler" add_module_post_hook "debug_hook_handler" }