#
# Configuration for initramfs
#

config INITRAMFS_SOURCE
	string "Initramfs source file(s)"
	default ""
	help
	  This can be either a single cpio archive with a .cpio suffix or a
	  space-separated list of directories and files for building the
	  initramfs image.  A cpio archive should contain a filesystem archive
	  to be used as an initramfs image.  Directories should contain a
	  filesystem layout to be included in the initramfs image.  Files
	  should contain entries according to the format described by the
	  "usr/gen_init_cpio" program in the kernel tree.

	  When multiple directories and files are specified then the
	  initramfs image will be the aggregate of all of them.

	  See <file:Documentation/early-userspace/README> for more details.

	  If you are not sure, leave it blank.

config INITRAMFS_ROOT_UID
	int "User ID to map to 0 (user root)"
	depends on INITRAMFS_SOURCE!=""
	default "0"
	help
	  This setting is only meaningful if the INITRAMFS_SOURCE is
	  contains a directory.  Setting this user ID (UID) to something
	  other than "0" will cause all files owned by that UID to be
	  owned by user root in the initial ramdisk image.

	  If you are not sure, leave it set to "0".

config INITRAMFS_ROOT_GID
	int "Group ID to map to 0 (group root)"
	depends on INITRAMFS_SOURCE!=""
	default "0"
	help
	  This setting is only meaningful if the INITRAMFS_SOURCE is
	  contains a directory.  Setting this group ID (GID) to something
	  other than "0" will cause all files owned by that GID to be
	  owned by group root in the initial ramdisk image.

	  If you are not sure, leave it set to "0".

config RD_GZIP
	bool "Support initial ramdisks compressed using gzip" if EXPERT
	default y
	depends on BLK_DEV_INITRD
	select DECOMPRESS_GZIP
	help
	  Support loading of a gzip encoded initial ramdisk or cpio buffer.
	  If unsure, say Y.

config RD_BZIP2
	bool "Support initial ramdisks compressed using bzip2" if EXPERT
	default !EXPERT
	depends on BLK_DEV_INITRD
	select DECOMPRESS_BZIP2
	help
	  Support loading of a bzip2 encoded initial ramdisk or cpio buffer
	  If unsure, say N.

config RD_LZMA
	bool "Support initial ramdisks compressed using LZMA" if EXPERT
	default !EXPERT
	depends on BLK_DEV_INITRD
	select DECOMPRESS_LZMA
	help
	  Support loading of a LZMA encoded initial ramdisk or cpio buffer
	  If unsure, say N.

config RD_XZ
	bool "Support initial ramdisks compressed using XZ" if EXPERT
	default !EXPERT
	depends on BLK_DEV_INITRD
	select DECOMPRESS_XZ
	help
	  Support loading of a XZ encoded initial ramdisk or cpio buffer.
	  If unsure, say N.

config RD_LZO
	bool "Support initial ramdisks compressed using LZO" if EXPERT
	default !EXPERT
	depends on BLK_DEV_INITRD
	select DECOMPRESS_LZO
	help
	  Support loading of a LZO encoded initial ramdisk or cpio buffer
	  If unsure, say N.

config RD_LZ4
	bool "Support initial ramdisks compressed using LZ4" if EXPERT
	default !EXPERT
	depends on BLK_DEV_INITRD
	select DECOMPRESS_LZ4
	help
	  Support loading of a LZ4 encoded initial ramdisk or cpio buffer
	  If unsure, say N.
