xref: /linux/init/Kconfig (revision eb2bce7f5e7ac1ca6da434461217fadf3c688d2c)
1config DEFCONFIG_LIST
2	string
3	depends on !UML
4	option defconfig_list
5	default "/lib/modules/$UNAME_RELEASE/.config"
6	default "/etc/kernel-config"
7	default "/boot/config-$UNAME_RELEASE"
8	default "arch/$ARCH/defconfig"
9
10menu "Code maturity level options"
11
12config EXPERIMENTAL
13	bool "Prompt for development and/or incomplete code/drivers"
14	---help---
15	  Some of the various things that Linux supports (such as network
16	  drivers, file systems, network protocols, etc.) can be in a state
17	  of development where the functionality, stability, or the level of
18	  testing is not yet high enough for general use. This is usually
19	  known as the "alpha-test" phase among developers. If a feature is
20	  currently in alpha-test, then the developers usually discourage
21	  uninformed widespread use of this feature by the general public to
22	  avoid "Why doesn't this work?" type mail messages. However, active
23	  testing and use of these systems is welcomed. Just be aware that it
24	  may not meet the normal level of reliability or it may fail to work
25	  in some special cases. Detailed bug reports from people familiar
26	  with the kernel internals are usually welcomed by the developers
27	  (before submitting bug reports, please read the documents
28	  <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
29	  <file:Documentation/BUG-HUNTING>, and
30	  <file:Documentation/oops-tracing.txt> in the kernel source).
31
32	  This option will also make obsoleted drivers available. These are
33	  drivers that have been replaced by something else, and/or are
34	  scheduled to be removed in a future kernel release.
35
36	  Unless you intend to help test and develop a feature or driver that
37	  falls into this category, or you have a situation that requires
38	  using these features, you should probably say N here, which will
39	  cause the configurator to present you with fewer choices. If
40	  you say Y here, you will be offered the choice of using features or
41	  drivers that are currently considered to be in the alpha-test phase.
42
43config BROKEN
44	bool
45
46config BROKEN_ON_SMP
47	bool
48	depends on BROKEN || !SMP
49	default y
50
51config LOCK_KERNEL
52	bool
53	depends on SMP || PREEMPT
54	default y
55
56config INIT_ENV_ARG_LIMIT
57	int
58	default 32 if !UML
59	default 128 if UML
60	help
61	  Maximum of each of the number of arguments and environment
62	  variables passed to init from the kernel command line.
63
64endmenu
65
66menu "General setup"
67
68config LOCALVERSION
69	string "Local version - append to kernel release"
70	help
71	  Append an extra string to the end of your kernel version.
72	  This will show up when you type uname, for example.
73	  The string you set here will be appended after the contents of
74	  any files with a filename matching localversion* in your
75	  object and source tree, in that order.  Your total string can
76	  be a maximum of 64 characters.
77
78config LOCALVERSION_AUTO
79	bool "Automatically append version information to the version string"
80	default y
81	help
82	  This will try to automatically determine if the current tree is a
83	  release tree by looking for git tags that belong to the current
84	  top of tree revision.
85
86	  A string of the format -gxxxxxxxx will be added to the localversion
87	  if a git-based tree is found.  The string generated by this will be
88	  appended after any matching localversion* files, and after the value
89	  set in CONFIG_LOCALVERSION.
90
91	  (The actual string used here is the first eight characters produced
92	  by running the command:
93
94	    $ git rev-parse --verify HEAD
95
96	  which is done within the script "scripts/setlocalversion".)
97
98config SWAP
99	bool "Support for paging of anonymous memory (swap)"
100	depends on MMU && BLOCK
101	default y
102	help
103	  This option allows you to choose whether you want to have support
104	  for so called swap devices or swap files in your kernel that are
105	  used to provide more virtual memory than the actual RAM present
106	  in your computer.  If unsure say Y.
107
108config SYSVIPC
109	bool "System V IPC"
110	---help---
111	  Inter Process Communication is a suite of library functions and
112	  system calls which let processes (running programs) synchronize and
113	  exchange information. It is generally considered to be a good thing,
114	  and some programs won't run unless you say Y here. In particular, if
115	  you want to run the DOS emulator dosemu under Linux (read the
116	  DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
117	  you'll need to say Y here.
118
119	  You can find documentation about IPC with "info ipc" and also in
120	  section 6.4 of the Linux Programmer's Guide, available from
121	  <http://www.tldp.org/guides.html>.
122
123config IPC_NS
124	bool "IPC Namespaces"
125	depends on SYSVIPC
126	default n
127	help
128	  Support ipc namespaces.  This allows containers, i.e. virtual
129	  environments, to use ipc namespaces to provide different ipc
130	  objects for different servers.  If unsure, say N.
131
132config SYSVIPC_SYSCTL
133	bool
134	depends on SYSVIPC
135	depends on SYSCTL
136	default y
137
138config POSIX_MQUEUE
139	bool "POSIX Message Queues"
140	depends on NET && EXPERIMENTAL
141	---help---
142	  POSIX variant of message queues is a part of IPC. In POSIX message
143	  queues every message has a priority which decides about succession
144	  of receiving it by a process. If you want to compile and run
145	  programs written e.g. for Solaris with use of its POSIX message
146	  queues (functions mq_*) say Y here. To use this feature you will
147	  also need mqueue library, available from
148	  <http://www.mat.uni.torun.pl/~wrona/posix_ipc/>
149
150	  POSIX message queues are visible as a filesystem called 'mqueue'
151	  and can be mounted somewhere if you want to do filesystem
152	  operations on message queues.
153
154	  If unsure, say Y.
155
156config BSD_PROCESS_ACCT
157	bool "BSD Process Accounting"
158	help
159	  If you say Y here, a user level program will be able to instruct the
160	  kernel (via a special system call) to write process accounting
161	  information to a file: whenever a process exits, information about
162	  that process will be appended to the file by the kernel.  The
163	  information includes things such as creation time, owning user,
164	  command name, memory usage, controlling terminal etc. (the complete
165	  list is in the struct acct in <file:include/linux/acct.h>).  It is
166	  up to the user level program to do useful things with this
167	  information.  This is generally a good idea, so say Y.
168
169config BSD_PROCESS_ACCT_V3
170	bool "BSD Process Accounting version 3 file format"
171	depends on BSD_PROCESS_ACCT
172	default n
173	help
174	  If you say Y here, the process accounting information is written
175	  in a new file format that also logs the process IDs of each
176	  process and it's parent. Note that this file format is incompatible
177	  with previous v0/v1/v2 file formats, so you will need updated tools
178	  for processing it. A preliminary version of these tools is available
179	  at <http://www.physik3.uni-rostock.de/tim/kernel/utils/acct/>.
180
181config TASKSTATS
182	bool "Export task/process statistics through netlink (EXPERIMENTAL)"
183	depends on NET
184	default n
185	help
186	  Export selected statistics for tasks/processes through the
187	  generic netlink interface. Unlike BSD process accounting, the
188	  statistics are available during the lifetime of tasks/processes as
189	  responses to commands. Like BSD accounting, they are sent to user
190	  space on task exit.
191
192	  Say N if unsure.
193
194config TASK_DELAY_ACCT
195	bool "Enable per-task delay accounting (EXPERIMENTAL)"
196	depends on TASKSTATS
197	help
198	  Collect information on time spent by a task waiting for system
199	  resources like cpu, synchronous block I/O completion and swapping
200	  in pages. Such statistics can help in setting a task's priorities
201	  relative to other tasks for cpu, io, rss limits etc.
202
203	  Say N if unsure.
204
205config TASK_XACCT
206	bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
207	depends on TASKSTATS
208	help
209	  Collect extended task accounting data and send the data
210	  to userland for processing over the taskstats interface.
211
212	  Say N if unsure.
213
214config TASK_IO_ACCOUNTING
215	bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
216	depends on TASK_XACCT
217	help
218	  Collect information on the number of bytes of storage I/O which this
219	  task has caused.
220
221	  Say N if unsure.
222
223config UTS_NS
224	bool "UTS Namespaces"
225	default n
226	help
227	  Support uts namespaces.  This allows containers, i.e.
228	  vservers, to use uts namespaces to provide different
229	  uts info for different servers.  If unsure, say N.
230
231config AUDIT
232	bool "Auditing support"
233	depends on NET
234	help
235	  Enable auditing infrastructure that can be used with another
236	  kernel subsystem, such as SELinux (which requires this for
237	  logging of avc messages output).  Does not do system-call
238	  auditing without CONFIG_AUDITSYSCALL.
239
240config AUDITSYSCALL
241	bool "Enable system-call auditing support"
242	depends on AUDIT && (X86 || PPC || PPC64 || S390 || IA64 || UML || SPARC64)
243	default y if SECURITY_SELINUX
244	help
245	  Enable low-overhead system-call auditing infrastructure that
246	  can be used independently or with another kernel subsystem,
247	  such as SELinux.  To use audit's filesystem watch feature, please
248	  ensure that INOTIFY is configured.
249
250config IKCONFIG
251	tristate "Kernel .config support"
252	---help---
253	  This option enables the complete Linux kernel ".config" file
254	  contents to be saved in the kernel. It provides documentation
255	  of which kernel options are used in a running kernel or in an
256	  on-disk kernel.  This information can be extracted from the kernel
257	  image file with the script scripts/extract-ikconfig and used as
258	  input to rebuild the current kernel or to build another kernel.
259	  It can also be extracted from a running kernel by reading
260	  /proc/config.gz if enabled (below).
261
262config IKCONFIG_PROC
263	bool "Enable access to .config through /proc/config.gz"
264	depends on IKCONFIG && PROC_FS
265	---help---
266	  This option enables access to the kernel configuration file
267	  through /proc/config.gz.
268
269config CPUSETS
270	bool "Cpuset support"
271	depends on SMP
272	help
273	  This option will let you create and manage CPUSETs which
274	  allow dynamically partitioning a system into sets of CPUs and
275	  Memory Nodes and assigning tasks to run only within those sets.
276	  This is primarily useful on large SMP or NUMA systems.
277
278	  Say N if unsure.
279
280config SYSFS_DEPRECATED
281	bool "Create deprecated sysfs files"
282	default y
283	help
284	  This option creates deprecated symlinks such as the
285	  "device"-link, the <subsystem>:<name>-link, and the
286	  "bus"-link. It may also add deprecated key in the
287	  uevent environment.
288	  None of these features or values should be used today, as
289	  they export driver core implementation details to userspace
290	  or export properties which can't be kept stable across kernel
291	  releases.
292
293	  If enabled, this option will also move any device structures
294	  that belong to a class, back into the /sys/class heirachy, in
295	  order to support older versions of udev.
296
297	  If you are using a distro that was released in 2006 or later,
298	  it should be safe to say N here.
299
300config RELAY
301	bool "Kernel->user space relay support (formerly relayfs)"
302	help
303	  This option enables support for relay interface support in
304	  certain file systems (such as debugfs).
305	  It is designed to provide an efficient mechanism for tools and
306	  facilities to relay large amounts of data from kernel space to
307	  user space.
308
309	  If unsure, say N.
310
311config BLK_DEV_INITRD
312	bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
313	depends on BROKEN || !FRV
314	help
315	  The initial RAM filesystem is a ramfs which is loaded by the
316	  boot loader (loadlin or lilo) and that is mounted as root
317	  before the normal boot procedure. It is typically used to
318	  load modules needed to mount the "real" root file system,
319	  etc. See <file:Documentation/initrd.txt> for details.
320
321	  If RAM disk support (BLK_DEV_RAM) is also included, this
322	  also enables initial RAM disk (initrd) support and adds
323	  15 Kbytes (more on some other architectures) to the kernel size.
324
325	  If unsure say Y.
326
327if BLK_DEV_INITRD
328
329source "usr/Kconfig"
330
331endif
332
333config CC_OPTIMIZE_FOR_SIZE
334	bool "Optimize for size (Look out for broken compilers!)"
335	default y
336	depends on ARM || H8300 || EXPERIMENTAL
337	help
338	  Enabling this option will pass "-Os" instead of "-O2" to gcc
339	  resulting in a smaller kernel.
340
341	  WARNING: some versions of gcc may generate incorrect code with this
342	  option.  If problems are observed, a gcc upgrade may be needed.
343
344	  If unsure, say N.
345
346config SYSCTL
347	bool
348
349menuconfig EMBEDDED
350	bool "Configure standard kernel features (for small systems)"
351	help
352	  This option allows certain base kernel options and settings
353          to be disabled or tweaked. This is for specialized
354          environments which can tolerate a "non-standard" kernel.
355          Only use this if you really know what you are doing.
356
357config UID16
358	bool "Enable 16-bit UID system calls" if EMBEDDED
359	depends on ARM || BFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && SPARC32_COMPAT) || UML || (X86_64 && IA32_EMULATION)
360	default y
361	help
362	  This enables the legacy 16-bit UID syscall wrappers.
363
364config SYSCTL_SYSCALL
365	bool "Sysctl syscall support" if EMBEDDED
366	default y
367	select SYSCTL
368	---help---
369	  sys_sysctl uses binary paths that have been found challenging
370	  to properly maintain and use.  The interface in /proc/sys
371	  using paths with ascii names is now the primary path to this
372	  information.
373
374	  Almost nothing using the binary sysctl interface so if you are
375	  trying to save some space it is probably safe to disable this,
376	  making your kernel marginally smaller.
377
378	  If unsure say Y here.
379
380config KALLSYMS
381	 bool "Load all symbols for debugging/ksymoops" if EMBEDDED
382	 default y
383	 help
384	   Say Y here to let the kernel print out symbolic crash information and
385	   symbolic stack backtraces. This increases the size of the kernel
386	   somewhat, as all symbols have to be loaded into the kernel image.
387
388config KALLSYMS_ALL
389	bool "Include all symbols in kallsyms"
390	depends on DEBUG_KERNEL && KALLSYMS
391	help
392	   Normally kallsyms only contains the symbols of functions, for nicer
393	   OOPS messages.  Some debuggers can use kallsyms for other
394	   symbols too: say Y here to include all symbols, if you need them
395	   and you don't care about adding 300k to the size of your kernel.
396
397	   Say N.
398
399config KALLSYMS_EXTRA_PASS
400	bool "Do an extra kallsyms pass"
401	depends on KALLSYMS
402	help
403	   If kallsyms is not working correctly, the build will fail with
404	   inconsistent kallsyms data.  If that occurs, log a bug report and
405	   turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
406	   Always say N here unless you find a bug in kallsyms, which must be
407	   reported.  KALLSYMS_EXTRA_PASS is only a temporary workaround while
408	   you wait for kallsyms to be fixed.
409
410
411config HOTPLUG
412	bool "Support for hot-pluggable devices" if EMBEDDED
413	default y
414	help
415	  This option is provided for the case where no hotplug or uevent
416	  capabilities is wanted by the kernel.  You should only consider
417	  disabling this option for embedded systems that do not use modules, a
418	  dynamic /dev tree, or dynamic device discovery.  Just say Y.
419
420config PRINTK
421	default y
422	bool "Enable support for printk" if EMBEDDED
423	help
424	  This option enables normal printk support. Removing it
425	  eliminates most of the message strings from the kernel image
426	  and makes the kernel more or less silent. As this makes it
427	  very difficult to diagnose system problems, saying N here is
428	  strongly discouraged.
429
430config BUG
431	bool "BUG() support" if EMBEDDED
432	default y
433	help
434          Disabling this option eliminates support for BUG and WARN, reducing
435          the size of your kernel image and potentially quietly ignoring
436          numerous fatal conditions. You should only consider disabling this
437          option for embedded systems with no facilities for reporting errors.
438          Just say Y.
439
440config ELF_CORE
441	default y
442	bool "Enable ELF core dumps" if EMBEDDED
443	help
444	  Enable support for generating core dumps. Disabling saves about 4k.
445
446config BASE_FULL
447	default y
448	bool "Enable full-sized data structures for core" if EMBEDDED
449	help
450	  Disabling this option reduces the size of miscellaneous core
451	  kernel data structures. This saves memory on small machines,
452	  but may reduce performance.
453
454config FUTEX
455	bool "Enable futex support" if EMBEDDED
456	default y
457	select RT_MUTEXES
458	help
459	  Disabling this option will cause the kernel to be built without
460	  support for "fast userspace mutexes".  The resulting kernel may not
461	  run glibc-based applications correctly.
462
463config EPOLL
464	bool "Enable eventpoll support" if EMBEDDED
465	default y
466	help
467	  Disabling this option will cause the kernel to be built without
468	  support for epoll family of system calls.
469
470config SHMEM
471	bool "Use full shmem filesystem" if EMBEDDED
472	default y
473	depends on MMU
474	help
475	  The shmem is an internal filesystem used to manage shared memory.
476	  It is backed by swap and manages resource limits. It is also exported
477	  to userspace as tmpfs if TMPFS is enabled. Disabling this
478	  option replaces shmem and tmpfs with the much simpler ramfs code,
479	  which may be appropriate on small systems without swap.
480
481config VM_EVENT_COUNTERS
482	default y
483	bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
484	help
485	  VM event counters are needed for event counts to be shown.
486	  This option allows the disabling of the VM event counters
487	  on EMBEDDED systems.  /proc/vmstat will only show page counts
488	  if VM event counters are disabled.
489
490choice
491	prompt "Choose SLAB allocator"
492	default SLAB
493	help
494	   This option allows to select a slab allocator.
495
496config SLAB
497	bool "SLAB"
498	help
499	  The regular slab allocator that is established and known to work
500	  well in all environments. It organizes chache hot objects in
501	  per cpu and per node queues. SLAB is the default choice for
502	  slab allocator.
503
504config SLUB
505	depends on EXPERIMENTAL && !ARCH_USES_SLAB_PAGE_STRUCT
506	bool "SLUB (Unqueued Allocator)"
507	help
508	   SLUB is a slab allocator that minimizes cache line usage
509	   instead of managing queues of cached objects (SLAB approach).
510	   Per cpu caching is realized using slabs of objects instead
511	   of queues of objects. SLUB can use memory efficiently
512	   way and has enhanced diagnostics.
513
514config SLOB
515#
516#	SLOB cannot support SMP because SLAB_DESTROY_BY_RCU does not work
517#	properly.
518#
519	depends on EMBEDDED && !SMP && !SPARSEMEM
520	bool "SLOB (Simple Allocator)"
521	help
522	   SLOB replaces the SLAB allocator with a drastically simpler
523	   allocator.  SLOB is more space efficient that SLAB but does not
524	   scale well (single lock for all operations) and is more susceptible
525	   to fragmentation. SLOB it is a great choice to reduce
526	   memory usage and code size for embedded systems.
527
528endchoice
529
530endmenu		# General setup
531
532config RT_MUTEXES
533	boolean
534	select PLIST
535
536config TINY_SHMEM
537	default !SHMEM
538	bool
539
540config BASE_SMALL
541	int
542	default 0 if BASE_FULL
543	default 1 if !BASE_FULL
544
545menu "Loadable module support"
546
547config MODULES
548	bool "Enable loadable module support"
549	help
550	  Kernel modules are small pieces of compiled code which can
551	  be inserted in the running kernel, rather than being
552	  permanently built into the kernel.  You use the "modprobe"
553	  tool to add (and sometimes remove) them.  If you say Y here,
554	  many parts of the kernel can be built as modules (by
555	  answering M instead of Y where indicated): this is most
556	  useful for infrequently used options which are not required
557	  for booting.  For more information, see the man pages for
558	  modprobe, lsmod, modinfo, insmod and rmmod.
559
560	  If you say Y here, you will need to run "make
561	  modules_install" to put the modules under /lib/modules/
562	  where modprobe can find them (you may need to be root to do
563	  this).
564
565	  If unsure, say Y.
566
567config MODULE_UNLOAD
568	bool "Module unloading"
569	depends on MODULES
570	help
571	  Without this option you will not be able to unload any
572	  modules (note that some modules may not be unloadable
573	  anyway), which makes your kernel slightly smaller and
574	  simpler.  If unsure, say Y.
575
576config MODULE_FORCE_UNLOAD
577	bool "Forced module unloading"
578	depends on MODULE_UNLOAD && EXPERIMENTAL
579	help
580	  This option allows you to force a module to unload, even if the
581	  kernel believes it is unsafe: the kernel will remove the module
582	  without waiting for anyone to stop using it (using the -f option to
583	  rmmod).  This is mainly for kernel developers and desperate users.
584	  If unsure, say N.
585
586config MODVERSIONS
587	bool "Module versioning support"
588	depends on MODULES
589	help
590	  Usually, you have to use modules compiled with your kernel.
591	  Saying Y here makes it sometimes possible to use modules
592	  compiled for different kernels, by adding enough information
593	  to the modules to (hopefully) spot any changes which would
594	  make them incompatible with the kernel you are running.  If
595	  unsure, say N.
596
597config MODULE_SRCVERSION_ALL
598	bool "Source checksum for all modules"
599	depends on MODULES
600	help
601	  Modules which contain a MODULE_VERSION get an extra "srcversion"
602	  field inserted into their modinfo section, which contains a
603    	  sum of the source files which made it.  This helps maintainers
604	  see exactly which source was used to build a module (since
605	  others sometimes change the module source without updating
606	  the version).  With this option, such a "srcversion" field
607	  will be created for all modules.  If unsure, say N.
608
609config KMOD
610	bool "Automatic kernel module loading"
611	depends on MODULES
612	help
613	  Normally when you have selected some parts of the kernel to
614	  be created as kernel modules, you must load them (using the
615	  "modprobe" command) before you can use them. If you say Y
616	  here, some parts of the kernel will be able to load modules
617	  automatically: when a part of the kernel needs a module, it
618	  runs modprobe with the appropriate arguments, thereby
619	  loading the module if it is available.  If unsure, say Y.
620
621config STOP_MACHINE
622	bool
623	default y
624	depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
625	help
626	  Need stop_machine() primitive.
627endmenu
628
629menu "Block layer"
630source "block/Kconfig"
631endmenu
632