#
# 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
	  init is the first program run when the system boots.

config CONFIG_FEATURE_USE_INITTAB
	bool "  Support reading an inittab file?"
	default y
	depends on CONFIG_INIT
	help
	  Allow init to read an inittab file when the system boot.

config CONFIG_FEATURE_INITRD
	bool "  Support running init from within an initrd?"
	default y
	depends on CONFIG_INIT
	help
	  Allow init to be called from an initrd as linuxrc.

config CONFIG_FEATURE_INIT_COREDUMPS
	bool "  Support dumping core for child processes (debugging only)?"
	default n
	depends on CONFIG_INIT
	help
	  If this option is enabled and the file /.init_enable_core
	  exists, then init will call setrlimit() to allow unlimited
	  core file sizes.  If this option is disabled, processes
	  will not generate any core files.

config CONFIG_FEATURE_EXTRA_QUIET
	bool "  Should init be _extra_ quiet on boot?"
	default y
	depends on CONFIG_INIT
	help
	  Prevent init from logging some messages to the console
	  during boot.

config CONFIG_HALT
	bool "halt"
	default y
	help
	  Stop all processes and halt the system.

config CONFIG_POWEROFF
	bool "poweroff"
	default y
	help
	  Stop all processes and (try to) power off the system.

config CONFIG_REBOOT
	bool "reboot"
	default y
	help
	  Stop all processes and reboot the system.

config CONFIG_MINIT
	bool "minit"
	default n
	depends on ! CONFIG_INIT
	help
	  Minimal init, based on minit v0.9.1.  This is a simple
	  init replacement that handles starting/stopping services,
	  and service dependencies.  See http://www.fefe.de/minit/
	  for additional information.

config CONFIG_PIDFILEHACK
	bool "pidfilehack"
	default y
	depends on CONFIG_MINIT
	help
	  pidfilehack is used by minit to run servers.

config CONFIG_MSVC
	bool "msvc"
	default y
	depends on CONFIG_MINIT
	help
	  msvc is used to start and stop processes controlled by minit

config CONFIG_MESG
	bool "mesg"
	default y
	help
	  Mesg controls access to your terminal by others.  It is typically
	  used to allow or disallow other users to write to your terminal

endmenu

