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