#
# For a description of the syntax of this configuration file,
# see scripts/kbuild/config-language.txt.
#

menu "Init Utilities"

config CONFIG_INIT
	bool "init"
	default n
	help
	  Please submit a patch to add help text for this item.

config CONFIG_FEATURE_USE_INITTAB
	bool "  Support reading an inittab file?"
	default y
	depends on CONFIG_INIT
	help
	  Please submit a patch to add help text for this item.

config CONFIG_FEATURE_INITRD
	bool "  Support running init from within an initrd?"
	default y
	depends on CONFIG_INIT
	help
	  Please submit a patch to add help text for this item.

config CONFIG_FEATURE_INIT_COREDUMPS
	bool "  Support dumping core for child processes (debugging only)?"
	default y
	depends on CONFIG_INIT
	help
	  Please submit a patch to add help text for this item.

config CONFIG_FEATURE_EXTRA_QUIET
	bool "  Should init be _extra_ quiet on boot?"
	default y
	depends on CONFIG_INIT
	help
	  Please submit a patch to add help text for this item.

# Some apps that are meaningless without BusyBox running as init
config CONFIG_HALT
	bool "halt"
	default y
	depends on CONFIG_INIT
	help
	  Please submit a patch to add help text for this item.

config CONFIG_POWEROFF
	bool "poweroff"
	default y
	depends on CONFIG_INIT
	help
	  Please submit a patch to add help text for this item.

config CONFIG_REBOOT
	bool "reboot"
	default y
	depends on CONFIG_INIT
	help
	  Please submit a patch to add help text for this item.

# Should start-stop-daemon be moved under debianutils?
config CONFIG_START_STOP_DAEMON
	bool "start-stop-daemon"
	default y
	help
	  Please submit a patch to add help text for this item.

config CONFIG_MESG
	bool "mesg"
	default y
	help
	  Please submit a patch to add help text for this item.

endmenu

