# SPDX-License-Identifier: GPL-2.0-onlyconfig CC_VERSION_TEXT string default "$(CC_VERSION_TEXT)" help This is used in unclear ways: - Re-run Kconfig when the compiler is updated The 'default' property references the environment variable, CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd. When the compiler is updated, Kconfig will be invoked. - Ensure full rebuild when the compiler is updated include/linux/compiler-version.h contains this option in the comment line so fixdep adds include/config/CC_VERSION_TEXT into the auto-generated dependency. When the compiler is updated, syncconfig will touch it and then every file will be rebuilt. config CC_IS_GCC def_bool $(success,test "$(cc-name)" = GCC) config GCC_VERSION int default $(cc-version) if CC_IS_GCC default 0 config CC_IS_CLANG def_bool $(success,test "$(cc-name)" = Clang) config CLANG_VERSION int default $(cc-version) if CC_IS_CLANG default 0 config AS_IS_GNU def_bool $(success,test "$(as-name)" = GNU) config AS_IS_LLVM def_bool $(success,test "$(as-name)" = LLVM) config AS_VERSION int # Use clang version if this is the integrated assembler default CLANG_VERSION if AS_IS_LLVM default $(as-version) config LD_IS_BFD def_bool $(success,test "$(ld-name)" = BFD) config LD_VERSION int default $(ld-version) if LD_IS_BFD default 0 config LD_IS_LLD def_bool $(success,test "$(ld-name)" = LLD) config LLD_VERSION int default $(ld-version) if LD_IS_LLD default 0 config RUST_IS_AVAILABLE def_bool $(success,$(srctree)/scripts/rust_is_available.sh) help This shows whether a suitable Rust toolchain is available (found). Please see Documentation/rust/quick-start.rst for instructions on how to satisfy the build requirements of Rust support. In particular, the Makefile target 'rustavailable' is useful to check why the Rust toolchain is not being detected. config CC_CAN_LINK bool default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag)) if 64BIT default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag)) config CC_CAN_LINK_STATIC bool default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag) -static) if 64BIT default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag) -static) config CC_HAS_ASM_GOTO_OUTPUT def_bool $(success,echo 'int foo(int x) { asm goto ("": "=r"(x) ::: bar); return x; bar: return 0; }' | $(CC) -x c - -c -o /dev/null) config CC_HAS_ASM_GOTO_TIED_OUTPUT depends on CC_HAS_ASM_GOTO_OUTPUT # Detect buggy gcc and clang, fixed in gcc-11 clang-14. def_bool $(success,echo 'int foo(int *x) { asm goto (".long (%l[bar]) - .": "+m"(*x) ::: bar); return *x; bar: return 0; }' | $CC -x c - -c -o /dev/null) config TOOLS_SUPPORT_RELR def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh) config CC_HAS_ASM_INLINE def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) config CC_HAS_NO_PROFILE_FN_ATTR def_bool $(success,echo '__attribute__((no_profile_instrument_function)) int x();' | $(CC) -x c - -c -o /dev/null -Werror) config PAHOLE_VERSION int default $(shell,$(srctree)/scripts/pahole-version.sh $(PAHOLE)) config CONSTRUCTORS bool config IRQ_WORK bool config BUILDTIME_TABLE_SORT bool config THREAD_INFO_IN_TASK bool help Select this to move thread_info off the stack into task_struct. To make this work, an arch will need to remove all thread_info fields except flags and fix any runtime bugs. One subtle change that will be needed is to use try_get_task_stack() and put_task_stack() in save_thread_stack_tsk() and get_wchan(). menu "General setup" config BROKEN bool config BROKEN_ON_SMP bool depends on BROKEN || !SMP default y config INIT_ENV_ARG_LIMIT int default 32 if !UML default 128 if UML help Maximum of each of the number of arguments and environment variables passed to init from the kernel command line. config COMPILE_TEST bool "Compile also drivers which will not load" depends on HAS_IOMEM help Some drivers can be compiled on a different platform than they are intended to be run on. Despite they cannot be loaded there (or even when they load they cannot be used due to missing HW support), developers still, opposing to distributors, might want to build such drivers to compile-test them. If you are a developer and want to build everything available, say Y here. If you are a user/distributor, say N here to exclude useless drivers to be distributed. config WERROR bool "Compile the kernel with warnings as errors" default COMPILE_TEST help A kernel build should not cause any compiler warnings, and this enables the '-Werror' (for C) and '-Dwarnings' (for Rust) flags to enforce that rule by default. Certain warnings from other tools such as the linker may be upgraded to errors with this option as well. However, if you have a new (or very old) compiler or linker with odd and unusual warnings, or you have some architecture with problems, you may need to disable this config option in order to successfully build the kernel. If in doubt, say Y. config UAPI_HEADER_TEST bool "Compile test UAPI headers" depends on HEADERS_INSTALL && CC_CAN_LINK help Compile test headers exported to user-space to ensure they are self-contained, i.e. compilable as standalone units. If you are a developer or tester and want to ensure the exported headers are self-contained, say Y here. Otherwise, choose N. config LOCALVERSION string "Local version - append to kernel release" help Append an extra string to the end of your kernel version. This will show up when you type uname, for example. The string you set here will be appended after the contents of any files with a filename matching localversion* in your object and source tree, in that order. Your total string can be a maximum of 64 characters. config LOCALVERSION_AUTO bool "Automatically append version information to the version string" default y depends on !COMPILE_TEST help This will try to automatically determine if the current tree is a release tree by looking for git tags that belong to the current top of tree revision. A string of the format -gxxxxxxxx will be added to the localversion if a git-based tree is found. The string generated by this will be appended after any matching localversion* files, and after the value set in CONFIG_LOCALVERSION. (The actual string used here is the first 12 characters produced by running the command: $ git rev-parse --verify HEAD which is done within the script "scripts/setlocalversion".) config BUILD_SALT string "Build ID Salt" default "" help The build ID is used to link binaries and their debug info. Setting this option will use the value in the calculation of the build id. This is mostly useful for distributions which want to ensure the build is unique between builds. It's safe to leave the default. config HAVE_KERNEL_GZIP bool config HAVE_KERNEL_BZIP2 bool config HAVE_KERNEL_LZMA bool config HAVE_KERNEL_XZ bool config HAVE_KERNEL_LZO bool config HAVE_KERNEL_LZ4 bool config HAVE_KERNEL_ZSTD bool config HAVE_KERNEL_UNCOMPRESSED bool choice prompt "Kernel compression mode" default KERNEL_GZIP depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_ZSTD || HAVE_KERNEL_UNCOMPRESSED help The linux kernel is a kind of self-extracting executable. Several compression algorithms are available, which differ in efficiency, compression and decompression speed. Compression speed is only relevant when building a kernel. Decompression speed is relevant at each boot. If you have any problems with bzip2 or lzma compressed kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older version of this functionality (bzip2 only), for 2.4, was supplied by Christian Ludwig) High compression options are mostly useful for users, who are low on disk space (embedded systems), but for whom ram size matters less. If in doubt, select 'gzip' config KERNEL_GZIP bool "Gzip" depends on HAVE_KERNEL_GZIP help The old and tried gzip compression. It provides a good balance between compression ratio and decompression speed. config KERNEL_BZIP2 bool "Bzip2" depends on HAVE_KERNEL_BZIP2 help Its compression ratio and speed is intermediate. Decompression speed is slowest among the choices. The kernel size is about 10% smaller with bzip2, in comparison to gzip. Bzip2 uses a large amount of memory. For modern kernels you will need at least 8MB RAM or more for booting. config KERNEL_LZMA bool "LZMA" depends on HAVE_KERNEL_LZMA help This compression algorithm's ratio is best. Decompression speed is between gzip and bzip2. Compression is slowest. The kernel size is about 33% smaller with LZMA in comparison to gzip. config KERNEL_XZ bool "XZ" depends on HAVE_KERNEL_XZ help XZ uses the LZMA2 algorithm and instruction set specific BCJ filters which can improve compression ratio of executable code. The size of the kernel is about 30% smaller with XZ in comparison to gzip. On architectures for which there is a BCJ filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ will create a few percent smaller kernel than plain LZMA. The speed is about the same as with LZMA: The decompression speed of XZ is better than that of bzip2 but worse than gzip and LZO. Compression is slow. config KERNEL_LZO bool "LZO" depends on HAVE_KERNEL_LZO help Its compression ratio is the poorest among the choices. The kernel size is about 10% bigger than gzip; however its speed (both compression and decompression) is the fastest. config KERNEL_LZ4 bool "LZ4" depends on HAVE_KERNEL_LZ4 help LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding. A preliminary version of LZ4 de/compression tool is available at <https://code.google.com/p/lz4/>. Its compression ratio is worse than LZO. The size of the kernel is about 8% bigger than LZO. But the decompression speed is faster than LZO. config KERNEL_ZSTD bool "ZSTD" depends on HAVE_KERNEL_ZSTD help ZSTD is a compression algorithm targeting intermediate compression with fast decompression speed. It will compress better than GZIP and decompress around the same speed as LZO, but slower than LZ4. You will need at least 192 KB RAM or more for booting. The zstd command line tool is required for compression. config KERNEL_UNCOMPRESSED bool "None" depends on HAVE_KERNEL_UNCOMPRESSED help Produce uncompressed kernel image. This option is usually not what you want. It is useful for debugging the kernel in slow simulation environments, where decompressing and moving the kernel is awfully slow. This option allows early boot code to skip the decompressor and jump right at uncompressed kernel image. endchoice config DEFAULT_INIT string "Default init path" default "" help This option determines the default init for the system if no init= option is passed on the kernel command line. If the requested path is not present, we will still then move on to attempting further locations (e.g. /sbin/init, etc). If this is empty, we will just use the fallback list when init= is not passed. config DEFAULT_HOSTNAME string "Default hostname" default "(none)" help This option determines the default system hostname before userspace calls sethostname(2). The kernel traditionally uses "(none)" here, but you may wish to use a different default here to make a minimal system more usable with less configuration. config SYSVIPC bool "System V IPC" help Inter Process Communication is a suite of library functions and system calls which let processes (running programs) synchronize and exchange information. It is generally considered to be a good thing, and some programs won't run unless you say Y here. In particular, if you want to run the DOS emulator dosemu under Linux (read the DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>), you'll need to say Y here. You can find documentation about IPC with "info ipc" and also in section 6.4 of the Linux Programmer's Guide, available from <http://www.tldp.org/guides.html>. config SYSVIPC_SYSCTL bool depends on SYSVIPC depends on SYSCTL default y config SYSVIPC_COMPAT def_bool y depends on COMPAT && SYSVIPC config POSIX_MQUEUE bool "POSIX Message Queues" depends on NET help POSIX variant of message queues is a part of IPC. In POSIX message queues every message has a priority which decides about succession of receiving it by a process. If you want to compile and run programs written e.g. for Solaris with use of its POSIX message queues (functions mq_*) say Y here. POSIX message queues are visible as a filesystem called 'mqueue' and can be mounted somewhere if you want to do filesystem operations on message queues. If unsure, say Y. config POSIX_MQUEUE_SYSCTL bool depends on POSIX_MQUEUE depends on SYSCTL default y config WATCH_QUEUE bool "General notification queue" default n help This is a general notification queue for the kernel to pass events to userspace by splicing them into pipes. It can be used in conjunction with watches for key/keyring change notifications and device notifications. See Documentation/core-api/watch_queue.rst config CROSS_MEMORY_ATTACH bool "Enable process_vm_readv/writev syscalls" depends on MMU default y help Enabling this option adds the system calls process_vm_readv and process_vm_writev which allow a process with the correct privileges to directly read from or write to another process' address space. See the man page for more details. config USELIB bool "uselib syscall (for libc5 and earlier)" default ALPHA || M68K || SPARC help This option enables the uselib syscall, a system call used in the dynamic linker from libc5 and earlier. glibc does not use this system call. If you intend to run programs built on libc5 or earlier, you may need to enable this syscall. Current systems running glibc can safely disable this. config AUDIT bool "Auditing support" depends on NET help Enable auditing infrastructure that can be used with another kernel subsystem, such as SELinux (which requires this for logging of avc messages output). System call auditing is included on architectures which support it. config HAVE_ARCH_AUDITSYSCALL bool config AUDITSYSCALL def_bool y depends on AUDIT && HAVE_ARCH_AUDITSYSCALL select FSNOTIFY source "kernel/irq/Kconfig"source "kernel/time/Kconfig"source "kernel/bpf/Kconfig"source "kernel/Kconfig.preempt" menu "CPU/Task time and stats accounting" config VIRT_CPU_ACCOUNTING bool choice prompt "Cputime accounting" default TICK_CPU_ACCOUNTING # Kind of a stub config for the pure tick based cputime accountingconfig TICK_CPU_ACCOUNTING bool "Simple tick based cputime accounting" depends on !S390 && !NO_HZ_FULL help This is the basic tick based cputime accounting that maintains statistics about user, system and idle time spent on per jiffies granularity. If unsure, say Y. config VIRT_CPU_ACCOUNTING_NATIVE bool "Deterministic task and CPU time accounting" depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL select VIRT_CPU_ACCOUNTING help Select this option to enable more accurate task and CPU time accounting. This is done by reading a CPU counter on each kernel entry and exit and on transitions within the kernel between system, softirq and hardirq state, so there is a small performance impact. In the case of s390 or IBM POWER > 5,Lines 1–500 of 2035. Load more
# SPDX-License-Identifier: GPL-2.0-only config CC_VERSION_TEXT string default "$(CC_VERSION_TEXT)" help This is used in unclear ways: - Re-run Kconfig when the compiler is updated The 'default' property references the environment variable, CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd. When the compiler is updated, Kconfig will be invoked. - Ensure full rebuild when the compiler is updated include/linux/compiler-version.h contains this option in the comment line so fixdep adds include/config/CC_VERSION_TEXT into the auto-generated dependency. When the compiler is updated, syncconfig will touch it and then every file will be rebuilt. config CC_IS_GCC def_bool $(success,test "$(cc-name)" = GCC) config GCC_VERSION int default $(cc-version) if CC_IS_GCC default 0 config CC_IS_CLANG def_bool $(success,test "$(cc-name)" = Clang) config CLANG_VERSION int default $(cc-version) if CC_IS_CLANG default 0 config AS_IS_GNU def_bool $(success,test "$(as-name)" = GNU) config AS_IS_LLVM def_bool $(success,test "$(as-name)" = LLVM) config AS_VERSION int # Use clang version if this is the integrated assembler default CLANG_VERSION if AS_IS_LLVM default $(as-version) config LD_IS_BFD def_bool $(success,test "$(ld-name)" = BFD) config LD_VERSION int default $(ld-version) if LD_IS_BFD default 0 config LD_IS_LLD def_bool $(success,test "$(ld-name)" = LLD) config LLD_VERSION int default $(ld-version) if LD_IS_LLD default 0 config RUST_IS_AVAILABLE def_bool $(success,$(srctree)/scripts/rust_is_available.sh) help This shows whether a suitable Rust toolchain is available (found). Please see Documentation/rust/quick-start.rst for instructions on how to satisfy the build requirements of Rust support. In particular, the Makefile target 'rustavailable' is useful to check why the Rust toolchain is not being detected. config CC_CAN_LINK bool default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag)) if 64BIT default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag)) config CC_CAN_LINK_STATIC bool default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag) -static) if 64BIT default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag) -static) config CC_HAS_ASM_GOTO_OUTPUT def_bool $(success,echo 'int foo(int x) { asm goto ("": "=r"(x) ::: bar); return x; bar: return 0; }' | $(CC) -x c - -c -o /dev/null) config CC_HAS_ASM_GOTO_TIED_OUTPUT depends on CC_HAS_ASM_GOTO_OUTPUT # Detect buggy gcc and clang, fixed in gcc-11 clang-14. def_bool $(success,echo 'int foo(int *x) { asm goto (".long (%l[bar]) - .": "+m"(*x) ::: bar); return *x; bar: return 0; }' | $CC -x c - -c -o /dev/null) config TOOLS_SUPPORT_RELR def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh) config CC_HAS_ASM_INLINE def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) config CC_HAS_NO_PROFILE_FN_ATTR def_bool $(success,echo '__attribute__((no_profile_instrument_function)) int x();' | $(CC) -x c - -c -o /dev/null -Werror) config PAHOLE_VERSION int default $(shell,$(srctree)/scripts/pahole-version.sh $(PAHOLE)) config CONSTRUCTORS bool config IRQ_WORK bool config BUILDTIME_TABLE_SORT bool config THREAD_INFO_IN_TASK bool help Select this to move thread_info off the stack into task_struct. To make this work, an arch will need to remove all thread_info fields except flags and fix any runtime bugs. One subtle change that will be needed is to use try_get_task_stack() and put_task_stack() in save_thread_stack_tsk() and get_wchan(). menu "General setup" config BROKEN bool config BROKEN_ON_SMP bool depends on BROKEN || !SMP default y config INIT_ENV_ARG_LIMIT int default 32 if !UML default 128 if UML help Maximum of each of the number of arguments and environment variables passed to init from the kernel command line. config COMPILE_TEST bool "Compile also drivers which will not load" depends on HAS_IOMEM help Some drivers can be compiled on a different platform than they are intended to be run on. Despite they cannot be loaded there (or even when they load they cannot be used due to missing HW support), developers still, opposing to distributors, might want to build such drivers to compile-test them. If you are a developer and want to build everything available, say Y here. If you are a user/distributor, say N here to exclude useless drivers to be distributed. config WERROR bool "Compile the kernel with warnings as errors" default COMPILE_TEST help A kernel build should not cause any compiler warnings, and this enables the '-Werror' (for C) and '-Dwarnings' (for Rust) flags to enforce that rule by default. Certain warnings from other tools such as the linker may be upgraded to errors with this option as well. However, if you have a new (or very old) compiler or linker with odd and unusual warnings, or you have some architecture with problems, you may need to disable this config option in order to successfully build the kernel. If in doubt, say Y. config UAPI_HEADER_TEST bool "Compile test UAPI headers" depends on HEADERS_INSTALL && CC_CAN_LINK help Compile test headers exported to user-space to ensure they are self-contained, i.e. compilable as standalone units. If you are a developer or tester and want to ensure the exported headers are self-contained, say Y here. Otherwise, choose N. config LOCALVERSION string "Local version - append to kernel release" help Append an extra string to the end of your kernel version. This will show up when you type uname, for example. The string you set here will be appended after the contents of any files with a filename matching localversion* in your object and source tree, in that order. Your total string can be a maximum of 64 characters. config LOCALVERSION_AUTO bool "Automatically append version information to the version string" default y depends on !COMPILE_TEST help This will try to automatically determine if the current tree is a release tree by looking for git tags that belong to the current top of tree revision. A string of the format -gxxxxxxxx will be added to the localversion if a git-based tree is found. The string generated by this will be appended after any matching localversion* files, and after the value set in CONFIG_LOCALVERSION. (The actual string used here is the first 12 characters produced by running the command: $ git rev-parse --verify HEAD which is done within the script "scripts/setlocalversion".) config BUILD_SALT string "Build ID Salt" default "" help The build ID is used to link binaries and their debug info. Setting this option will use the value in the calculation of the build id. This is mostly useful for distributions which want to ensure the build is unique between builds. It's safe to leave the default. config HAVE_KERNEL_GZIP bool config HAVE_KERNEL_BZIP2 bool config HAVE_KERNEL_LZMA bool config HAVE_KERNEL_XZ bool config HAVE_KERNEL_LZO bool config HAVE_KERNEL_LZ4 bool config HAVE_KERNEL_ZSTD bool config HAVE_KERNEL_UNCOMPRESSED bool choice prompt "Kernel compression mode" default KERNEL_GZIP depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_ZSTD || HAVE_KERNEL_UNCOMPRESSED help The linux kernel is a kind of self-extracting executable. Several compression algorithms are available, which differ in efficiency, compression and decompression speed. Compression speed is only relevant when building a kernel. Decompression speed is relevant at each boot. If you have any problems with bzip2 or lzma compressed kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older version of this functionality (bzip2 only), for 2.4, was supplied by Christian Ludwig) High compression options are mostly useful for users, who are low on disk space (embedded systems), but for whom ram size matters less. If in doubt, select 'gzip' config KERNEL_GZIP bool "Gzip" depends on HAVE_KERNEL_GZIP help The old and tried gzip compression. It provides a good balance between compression ratio and decompression speed. config KERNEL_BZIP2 bool "Bzip2" depends on HAVE_KERNEL_BZIP2 help Its compression ratio and speed is intermediate. Decompression speed is slowest among the choices. The kernel size is about 10% smaller with bzip2, in comparison to gzip. Bzip2 uses a large amount of memory. For modern kernels you will need at least 8MB RAM or more for booting. config KERNEL_LZMA bool "LZMA" depends on HAVE_KERNEL_LZMA help This compression algorithm's ratio is best. Decompression speed is between gzip and bzip2. Compression is slowest. The kernel size is about 33% smaller with LZMA in comparison to gzip. config KERNEL_XZ bool "XZ" depends on HAVE_KERNEL_XZ help XZ uses the LZMA2 algorithm and instruction set specific BCJ filters which can improve compression ratio of executable code. The size of the kernel is about 30% smaller with XZ in comparison to gzip. On architectures for which there is a BCJ filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ will create a few percent smaller kernel than plain LZMA. The speed is about the same as with LZMA: The decompression speed of XZ is better than that of bzip2 but worse than gzip and LZO. Compression is slow. config KERNEL_LZO bool "LZO" depends on HAVE_KERNEL_LZO help Its compression ratio is the poorest among the choices. The kernel size is about 10% bigger than gzip; however its speed (both compression and decompression) is the fastest. config KERNEL_LZ4 bool "LZ4" depends on HAVE_KERNEL_LZ4 help LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding. A preliminary version of LZ4 de/compression tool is available at <https://code.google.com/p/lz4/>. Its compression ratio is worse than LZO. The size of the kernel is about 8% bigger than LZO. But the decompression speed is faster than LZO. config KERNEL_ZSTD bool "ZSTD" depends on HAVE_KERNEL_ZSTD help ZSTD is a compression algorithm targeting intermediate compression with fast decompression speed. It will compress better than GZIP and decompress around the same speed as LZO, but slower than LZ4. You will need at least 192 KB RAM or more for booting. The zstd command line tool is required for compression. config KERNEL_UNCOMPRESSED bool "None" depends on HAVE_KERNEL_UNCOMPRESSED help Produce uncompressed kernel image. This option is usually not what you want. It is useful for debugging the kernel in slow simulation environments, where decompressing and moving the kernel is awfully slow. This option allows early boot code to skip the decompressor and jump right at uncompressed kernel image. endchoice config DEFAULT_INIT string "Default init path" default "" help This option determines the default init for the system if no init= option is passed on the kernel command line. If the requested path is not present, we will still then move on to attempting further locations (e.g. /sbin/init, etc). If this is empty, we will just use the fallback list when init= is not passed. config DEFAULT_HOSTNAME string "Default hostname" default "(none)" help This option determines the default system hostname before userspace calls sethostname(2). The kernel traditionally uses "(none)" here, but you may wish to use a different default here to make a minimal system more usable with less configuration. config SYSVIPC bool "System V IPC" help Inter Process Communication is a suite of library functions and system calls which let processes (running programs) synchronize and exchange information. It is generally considered to be a good thing, and some programs won't run unless you say Y here. In particular, if you want to run the DOS emulator dosemu under Linux (read the DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>), you'll need to say Y here. You can find documentation about IPC with "info ipc" and also in section 6.4 of the Linux Programmer's Guide, available from <http://www.tldp.org/guides.html>. config SYSVIPC_SYSCTL bool depends on SYSVIPC depends on SYSCTL default y config SYSVIPC_COMPAT def_bool y depends on COMPAT && SYSVIPC config POSIX_MQUEUE bool "POSIX Message Queues" depends on NET help POSIX variant of message queues is a part of IPC. In POSIX message queues every message has a priority which decides about succession of receiving it by a process. If you want to compile and run programs written e.g. for Solaris with use of its POSIX message queues (functions mq_*) say Y here. POSIX message queues are visible as a filesystem called 'mqueue' and can be mounted somewhere if you want to do filesystem operations on message queues. If unsure, say Y. config POSIX_MQUEUE_SYSCTL bool depends on POSIX_MQUEUE depends on SYSCTL default y config WATCH_QUEUE bool "General notification queue" default n help This is a general notification queue for the kernel to pass events to userspace by splicing them into pipes. It can be used in conjunction with watches for key/keyring change notifications and device notifications. See Documentation/core-api/watch_queue.rst config CROSS_MEMORY_ATTACH bool "Enable process_vm_readv/writev syscalls" depends on MMU default y help Enabling this option adds the system calls process_vm_readv and process_vm_writev which allow a process with the correct privileges to directly read from or write to another process' address space. See the man page for more details. config USELIB bool "uselib syscall (for libc5 and earlier)" default ALPHA || M68K || SPARC help This option enables the uselib syscall, a system call used in the dynamic linker from libc5 and earlier. glibc does not use this system call. If you intend to run programs built on libc5 or earlier, you may need to enable this syscall. Current systems running glibc can safely disable this. config AUDIT bool "Auditing support" depends on NET help Enable auditing infrastructure that can be used with another kernel subsystem, such as SELinux (which requires this for logging of avc messages output). System call auditing is included on architectures which support it. config HAVE_ARCH_AUDITSYSCALL bool config AUDITSYSCALL def_bool y depends on AUDIT && HAVE_ARCH_AUDITSYSCALL select FSNOTIFY source "kernel/irq/Kconfig" source "kernel/time/Kconfig" source "kernel/bpf/Kconfig" source "kernel/Kconfig.preempt" menu "CPU/Task time and stats accounting" config VIRT_CPU_ACCOUNTING bool choice prompt "Cputime accounting" default TICK_CPU_ACCOUNTING # Kind of a stub config for the pure tick based cputime accounting config TICK_CPU_ACCOUNTING bool "Simple tick based cputime accounting" depends on !S390 && !NO_HZ_FULL help This is the basic tick based cputime accounting that maintains statistics about user, system and idle time spent on per jiffies granularity. If unsure, say Y. config VIRT_CPU_ACCOUNTING_NATIVE bool "Deterministic task and CPU time accounting" depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL select VIRT_CPU_ACCOUNTING help Select this option to enable more accurate task and CPU time accounting. This is done by reading a CPU counter on each kernel entry and exit and on transitions within the kernel between system, softirq and hardirq state, so there is a small performance impact. In the case of s390 or IBM POWER > 5,