Root/init/Kconfig

1config ARCH
2    string
3    option env="ARCH"
4
5config KERNELVERSION
6    string
7    option env="KERNELVERSION"
8
9config DEFCONFIG_LIST
10    string
11    depends on !UML
12    option defconfig_list
13    default "/lib/modules/$UNAME_RELEASE/.config"
14    default "/etc/kernel-config"
15    default "/boot/config-$UNAME_RELEASE"
16    default "$ARCH_DEFCONFIG"
17    default "arch/$ARCH/defconfig"
18
19config CONSTRUCTORS
20    bool
21    depends on !UML
22    default y
23
24menu "General setup"
25
26config EXPERIMENTAL
27    bool "Prompt for development and/or incomplete code/drivers"
28    ---help---
29      Some of the various things that Linux supports (such as network
30      drivers, file systems, network protocols, etc.) can be in a state
31      of development where the functionality, stability, or the level of
32      testing is not yet high enough for general use. This is usually
33      known as the "alpha-test" phase among developers. If a feature is
34      currently in alpha-test, then the developers usually discourage
35      uninformed widespread use of this feature by the general public to
36      avoid "Why doesn't this work?" type mail messages. However, active
37      testing and use of these systems is welcomed. Just be aware that it
38      may not meet the normal level of reliability or it may fail to work
39      in some special cases. Detailed bug reports from people familiar
40      with the kernel internals are usually welcomed by the developers
41      (before submitting bug reports, please read the documents
42      <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
43      <file:Documentation/BUG-HUNTING>, and
44      <file:Documentation/oops-tracing.txt> in the kernel source).
45
46      This option will also make obsoleted drivers available. These are
47      drivers that have been replaced by something else, and/or are
48      scheduled to be removed in a future kernel release.
49
50      Unless you intend to help test and develop a feature or driver that
51      falls into this category, or you have a situation that requires
52      using these features, you should probably say N here, which will
53      cause the configurator to present you with fewer choices. If
54      you say Y here, you will be offered the choice of using features or
55      drivers that are currently considered to be in the alpha-test phase.
56
57config BROKEN
58    bool
59
60config BROKEN_ON_SMP
61    bool
62    depends on BROKEN || !SMP
63    default y
64
65config LOCK_KERNEL
66    bool
67    depends on SMP || PREEMPT
68    default y
69
70config INIT_ENV_ARG_LIMIT
71    int
72    default 32 if !UML
73    default 128 if UML
74    help
75      Maximum of each of the number of arguments and environment
76      variables passed to init from the kernel command line.
77
78
79config LOCALVERSION
80    string "Local version - append to kernel release"
81    help
82      Append an extra string to the end of your kernel version.
83      This will show up when you type uname, for example.
84      The string you set here will be appended after the contents of
85      any files with a filename matching localversion* in your
86      object and source tree, in that order. Your total string can
87      be a maximum of 64 characters.
88
89config LOCALVERSION_AUTO
90    bool "Automatically append version information to the version string"
91    default y
92    help
93      This will try to automatically determine if the current tree is a
94      release tree by looking for git tags that belong to the current
95      top of tree revision.
96
97      A string of the format -gxxxxxxxx will be added to the localversion
98      if a git-based tree is found. The string generated by this will be
99      appended after any matching localversion* files, and after the value
100      set in CONFIG_LOCALVERSION.
101
102      (The actual string used here is the first eight characters produced
103      by running the command:
104
105        $ git rev-parse --verify HEAD
106
107      which is done within the script "scripts/setlocalversion".)
108
109config HAVE_KERNEL_GZIP
110    bool
111
112config HAVE_KERNEL_BZIP2
113    bool
114
115config HAVE_KERNEL_LZMA
116    bool
117
118choice
119    prompt "Kernel compression mode"
120    default KERNEL_GZIP
121    depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA
122    help
123      The linux kernel is a kind of self-extracting executable.
124      Several compression algorithms are available, which differ
125      in efficiency, compression and decompression speed.
126      Compression speed is only relevant when building a kernel.
127      Decompression speed is relevant at each boot.
128
129      If you have any problems with bzip2 or lzma compressed
130      kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
131      version of this functionality (bzip2 only), for 2.4, was
132      supplied by Christian Ludwig)
133
134      High compression options are mostly useful for users, who
135      are low on disk space (embedded systems), but for whom ram
136      size matters less.
137
138      If in doubt, select 'gzip'
139
140config KERNEL_GZIP
141    bool "Gzip"
142    depends on HAVE_KERNEL_GZIP
143    help
144      The old and tried gzip compression. Its compression ratio is
145      the poorest among the 3 choices; however its speed (both
146      compression and decompression) is the fastest.
147
148config KERNEL_BZIP2
149    bool "Bzip2"
150    depends on HAVE_KERNEL_BZIP2
151    help
152      Its compression ratio and speed is intermediate.
153      Decompression speed is slowest among the three. The kernel
154      size is about 10% smaller with bzip2, in comparison to gzip.
155      Bzip2 uses a large amount of memory. For modern kernels you
156      will need at least 8MB RAM or more for booting.
157
158config KERNEL_LZMA
159    bool "LZMA"
160    depends on HAVE_KERNEL_LZMA
161    help
162      The most recent compression algorithm.
163      Its ratio is best, decompression speed is between the other
164      two. Compression is slowest. The kernel size is about 33%
165      smaller with LZMA in comparison to gzip.
166
167endchoice
168
169config SWAP
170    bool "Support for paging of anonymous memory (swap)"
171    depends on MMU && BLOCK
172    default y
173    help
174      This option allows you to choose whether you want to have support
175      for so called swap devices or swap files in your kernel that are
176      used to provide more virtual memory than the actual RAM present
177      in your computer. If unsure say Y.
178
179config SYSVIPC
180    bool "System V IPC"
181    ---help---
182      Inter Process Communication is a suite of library functions and
183      system calls which let processes (running programs) synchronize and
184      exchange information. It is generally considered to be a good thing,
185      and some programs won't run unless you say Y here. In particular, if
186      you want to run the DOS emulator dosemu under Linux (read the
187      DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
188      you'll need to say Y here.
189
190      You can find documentation about IPC with "info ipc" and also in
191      section 6.4 of the Linux Programmer's Guide, available from
192      <http://www.tldp.org/guides.html>.
193
194config SYSVIPC_SYSCTL
195    bool
196    depends on SYSVIPC
197    depends on SYSCTL
198    default y
199
200config POSIX_MQUEUE
201    bool "POSIX Message Queues"
202    depends on NET && EXPERIMENTAL
203    ---help---
204      POSIX variant of message queues is a part of IPC. In POSIX message
205      queues every message has a priority which decides about succession
206      of receiving it by a process. If you want to compile and run
207      programs written e.g. for Solaris with use of its POSIX message
208      queues (functions mq_*) say Y here.
209
210      POSIX message queues are visible as a filesystem called 'mqueue'
211      and can be mounted somewhere if you want to do filesystem
212      operations on message queues.
213
214      If unsure, say Y.
215
216config POSIX_MQUEUE_SYSCTL
217    bool
218    depends on POSIX_MQUEUE
219    depends on SYSCTL
220    default y
221
222config BSD_PROCESS_ACCT
223    bool "BSD Process Accounting"
224    help
225      If you say Y here, a user level program will be able to instruct the
226      kernel (via a special system call) to write process accounting
227      information to a file: whenever a process exits, information about
228      that process will be appended to the file by the kernel. The
229      information includes things such as creation time, owning user,
230      command name, memory usage, controlling terminal etc. (the complete
231      list is in the struct acct in <file:include/linux/acct.h>). It is
232      up to the user level program to do useful things with this
233      information. This is generally a good idea, so say Y.
234
235config BSD_PROCESS_ACCT_V3
236    bool "BSD Process Accounting version 3 file format"
237    depends on BSD_PROCESS_ACCT
238    default n
239    help
240      If you say Y here, the process accounting information is written
241      in a new file format that also logs the process IDs of each
242      process and it's parent. Note that this file format is incompatible
243      with previous v0/v1/v2 file formats, so you will need updated tools
244      for processing it. A preliminary version of these tools is available
245      at <http://www.gnu.org/software/acct/>.
246
247config TASKSTATS
248    bool "Export task/process statistics through netlink (EXPERIMENTAL)"
249    depends on NET
250    default n
251    help
252      Export selected statistics for tasks/processes through the
253      generic netlink interface. Unlike BSD process accounting, the
254      statistics are available during the lifetime of tasks/processes as
255      responses to commands. Like BSD accounting, they are sent to user
256      space on task exit.
257
258      Say N if unsure.
259
260config TASK_DELAY_ACCT
261    bool "Enable per-task delay accounting (EXPERIMENTAL)"
262    depends on TASKSTATS
263    help
264      Collect information on time spent by a task waiting for system
265      resources like cpu, synchronous block I/O completion and swapping
266      in pages. Such statistics can help in setting a task's priorities
267      relative to other tasks for cpu, io, rss limits etc.
268
269      Say N if unsure.
270
271config TASK_XACCT
272    bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
273    depends on TASKSTATS
274    help
275      Collect extended task accounting data and send the data
276      to userland for processing over the taskstats interface.
277
278      Say N if unsure.
279
280config TASK_IO_ACCOUNTING
281    bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
282    depends on TASK_XACCT
283    help
284      Collect information on the number of bytes of storage I/O which this
285      task has caused.
286
287      Say N if unsure.
288
289config AUDIT
290    bool "Auditing support"
291    depends on NET
292    help
293      Enable auditing infrastructure that can be used with another
294      kernel subsystem, such as SELinux (which requires this for
295      logging of avc messages output). Does not do system-call
296      auditing without CONFIG_AUDITSYSCALL.
297
298config AUDITSYSCALL
299    bool "Enable system-call auditing support"
300    depends on AUDIT && (X86 || PPC || PPC64 || S390 || IA64 || UML || SPARC64|| SUPERH)
301    default y if SECURITY_SELINUX
302    help
303      Enable low-overhead system-call auditing infrastructure that
304      can be used independently or with another kernel subsystem,
305      such as SELinux. To use audit's filesystem watch feature, please
306      ensure that INOTIFY is configured.
307
308config AUDIT_TREE
309    def_bool y
310    depends on AUDITSYSCALL
311    select INOTIFY
312
313menu "RCU Subsystem"
314
315choice
316    prompt "RCU Implementation"
317    default TREE_RCU
318
319config CLASSIC_RCU
320    bool "Classic RCU"
321    help
322      This option selects the classic RCU implementation that is
323      designed for best read-side performance on non-realtime
324      systems.
325
326      Select this option if you are unsure.
327
328config TREE_RCU
329    bool "Tree-based hierarchical RCU"
330    help
331      This option selects the RCU implementation that is
332      designed for very large SMP system with hundreds or
333      thousands of CPUs.
334
335config PREEMPT_RCU
336    bool "Preemptible RCU"
337    depends on PREEMPT
338    help
339      This option reduces the latency of the kernel by making certain
340      RCU sections preemptible. Normally RCU code is non-preemptible, if
341      this option is selected then read-only RCU sections become
342      preemptible. This helps latency, but may expose bugs due to
343      now-naive assumptions about each RCU read-side critical section
344      remaining on a given CPU through its execution.
345
346endchoice
347
348config RCU_TRACE
349    bool "Enable tracing for RCU"
350    depends on TREE_RCU || PREEMPT_RCU
351    help
352      This option provides tracing in RCU which presents stats
353      in debugfs for debugging RCU implementation.
354
355      Say Y here if you want to enable RCU tracing
356      Say N if you are unsure.
357
358config RCU_FANOUT
359    int "Tree-based hierarchical RCU fanout value"
360    range 2 64 if 64BIT
361    range 2 32 if !64BIT
362    depends on TREE_RCU
363    default 64 if 64BIT
364    default 32 if !64BIT
365    help
366      This option controls the fanout of hierarchical implementations
367      of RCU, allowing RCU to work efficiently on machines with
368      large numbers of CPUs. This value must be at least the cube
369      root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
370      systems and up to 262,144 for 64-bit systems.
371
372      Select a specific number if testing RCU itself.
373      Take the default if unsure.
374
375config RCU_FANOUT_EXACT
376    bool "Disable tree-based hierarchical RCU auto-balancing"
377    depends on TREE_RCU
378    default n
379    help
380      This option forces use of the exact RCU_FANOUT value specified,
381      regardless of imbalances in the hierarchy. This is useful for
382      testing RCU itself, and might one day be useful on systems with
383      strong NUMA behavior.
384
385      Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
386
387      Say N if unsure.
388
389config TREE_RCU_TRACE
390    def_bool RCU_TRACE && TREE_RCU
391    select DEBUG_FS
392    help
393      This option provides tracing for the TREE_RCU implementation,
394      permitting Makefile to trivially select kernel/rcutree_trace.c.
395
396config PREEMPT_RCU_TRACE
397    def_bool RCU_TRACE && PREEMPT_RCU
398    select DEBUG_FS
399    help
400      This option provides tracing for the PREEMPT_RCU implementation,
401      permitting Makefile to trivially select kernel/rcupreempt_trace.c.
402
403endmenu # "RCU Subsystem"
404
405config IKCONFIG
406    tristate "Kernel .config support"
407    ---help---
408      This option enables the complete Linux kernel ".config" file
409      contents to be saved in the kernel. It provides documentation
410      of which kernel options are used in a running kernel or in an
411      on-disk kernel. This information can be extracted from the kernel
412      image file with the script scripts/extract-ikconfig and used as
413      input to rebuild the current kernel or to build another kernel.
414      It can also be extracted from a running kernel by reading
415      /proc/config.gz if enabled (below).
416
417config IKCONFIG_PROC
418    bool "Enable access to .config through /proc/config.gz"
419    depends on IKCONFIG && PROC_FS
420    ---help---
421      This option enables access to the kernel configuration file
422      through /proc/config.gz.
423
424config LOG_BUF_SHIFT
425    int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
426    range 12 21
427    default 17
428    help
429      Select kernel log buffer size as a power of 2.
430      Examples:
431               17 => 128 KB
432             16 => 64 KB
433                 15 => 32 KB
434                 14 => 16 KB
435             13 => 8 KB
436             12 => 4 KB
437
438#
439# Architectures with an unreliable sched_clock() should select this:
440#
441config HAVE_UNSTABLE_SCHED_CLOCK
442    bool
443
444config GROUP_SCHED
445    bool "Group CPU scheduler"
446    depends on EXPERIMENTAL
447    default n
448    help
449      This feature lets CPU scheduler recognize task groups and control CPU
450      bandwidth allocation to such task groups.
451      In order to create a group from arbitrary set of processes, use
452      CONFIG_CGROUPS. (See Control Group support.)
453
454config FAIR_GROUP_SCHED
455    bool "Group scheduling for SCHED_OTHER"
456    depends on GROUP_SCHED
457    default GROUP_SCHED
458
459config RT_GROUP_SCHED
460    bool "Group scheduling for SCHED_RR/FIFO"
461    depends on EXPERIMENTAL
462    depends on GROUP_SCHED
463    default n
464    help
465      This feature lets you explicitly allocate real CPU bandwidth
466      to users or control groups (depending on the "Basis for grouping tasks"
467      setting below. If enabled, it will also make it impossible to
468      schedule realtime tasks for non-root users until you allocate
469      realtime bandwidth for them.
470      See Documentation/scheduler/sched-rt-group.txt for more information.
471
472choice
473    depends on GROUP_SCHED
474    prompt "Basis for grouping tasks"
475    default USER_SCHED
476
477config USER_SCHED
478    bool "user id"
479    help
480      This option will choose userid as the basis for grouping
481      tasks, thus providing equal CPU bandwidth to each user.
482
483config CGROUP_SCHED
484    bool "Control groups"
485     depends on CGROUPS
486     help
487      This option allows you to create arbitrary task groups
488      using the "cgroup" pseudo filesystem and control
489      the cpu bandwidth allocated to each such task group.
490      Refer to Documentation/cgroups/cgroups.txt for more
491      information on "cgroup" pseudo filesystem.
492
493endchoice
494
495menuconfig CGROUPS
496    boolean "Control Group support"
497    help
498      This option adds support for grouping sets of processes together, for
499      use with process control subsystems such as Cpusets, CFS, memory
500      controls or device isolation.
501      See
502        - Documentation/scheduler/sched-design-CFS.txt (CFS)
503        - Documentation/cgroups/ (features for grouping, isolation
504                      and resource control)
505
506      Say N if unsure.
507
508if CGROUPS
509
510config CGROUP_DEBUG
511    bool "Example debug cgroup subsystem"
512    depends on CGROUPS
513    default n
514    help
515      This option enables a simple cgroup subsystem that
516      exports useful debugging information about the cgroups
517      framework.
518
519      Say N if unsure.
520
521config CGROUP_NS
522    bool "Namespace cgroup subsystem"
523    depends on CGROUPS
524    help
525      Provides a simple namespace cgroup subsystem to
526      provide hierarchical naming of sets of namespaces,
527      for instance virtual servers and checkpoint/restart
528      jobs.
529
530config CGROUP_FREEZER
531    bool "Freezer cgroup subsystem"
532    depends on CGROUPS
533    help
534      Provides a way to freeze and unfreeze all tasks in a
535      cgroup.
536
537config CGROUP_DEVICE
538    bool "Device controller for cgroups"
539    depends on CGROUPS && EXPERIMENTAL
540    help
541      Provides a cgroup implementing whitelists for devices which
542      a process in the cgroup can mknod or open.
543
544config CPUSETS
545    bool "Cpuset support"
546    depends on CGROUPS
547    help
548      This option will let you create and manage CPUSETs which
549      allow dynamically partitioning a system into sets of CPUs and
550      Memory Nodes and assigning tasks to run only within those sets.
551      This is primarily useful on large SMP or NUMA systems.
552
553      Say N if unsure.
554
555config PROC_PID_CPUSET
556    bool "Include legacy /proc/<pid>/cpuset file"
557    depends on CPUSETS
558    default y
559
560config CGROUP_CPUACCT
561    bool "Simple CPU accounting cgroup subsystem"
562    depends on CGROUPS
563    help
564      Provides a simple Resource Controller for monitoring the
565      total CPU consumed by the tasks in a cgroup.
566
567config RESOURCE_COUNTERS
568    bool "Resource counters"
569    help
570      This option enables controller independent resource accounting
571      infrastructure that works with cgroups.
572    depends on CGROUPS
573
574config CGROUP_MEM_RES_CTLR
575    bool "Memory Resource Controller for Control Groups"
576    depends on CGROUPS && RESOURCE_COUNTERS
577    select MM_OWNER
578    help
579      Provides a memory resource controller that manages both anonymous
580      memory and page cache. (See Documentation/cgroups/memory.txt)
581
582      Note that setting this option increases fixed memory overhead
583      associated with each page of memory in the system. By this,
584      20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
585      usage tracking struct at boot. Total amount of this is printed out
586      at boot.
587
588      Only enable when you're ok with these trade offs and really
589      sure you need the memory resource controller. Even when you enable
590      this, you can set "cgroup_disable=memory" at your boot option to
591      disable memory resource controller and you can avoid overheads.
592      (and lose benefits of memory resource controller)
593
594      This config option also selects MM_OWNER config option, which
595      could in turn add some fork/exit overhead.
596
597config CGROUP_MEM_RES_CTLR_SWAP
598    bool "Memory Resource Controller Swap Extension(EXPERIMENTAL)"
599    depends on CGROUP_MEM_RES_CTLR && SWAP && EXPERIMENTAL
600    help
601      Add swap management feature to memory resource controller. When you
602      enable this, you can limit mem+swap usage per cgroup. In other words,
603      when you disable this, memory resource controller has no cares to
604      usage of swap...a process can exhaust all of the swap. This extension
605      is useful when you want to avoid exhaustion swap but this itself
606      adds more overheads and consumes memory for remembering information.
607      Especially if you use 32bit system or small memory system, please
608      be careful about enabling this. When memory resource controller
609      is disabled by boot option, this will be automatically disabled and
610      there will be no overhead from this. Even when you set this config=y,
611      if boot option "noswapaccount" is set, swap will not be accounted.
612      Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
613      size is 4096bytes, 512k per 1Gbytes of swap.
614
615endif # CGROUPS
616
617config MM_OWNER
618    bool
619
620config SYSFS_DEPRECATED
621    bool
622
623config SYSFS_DEPRECATED_V2
624    bool "remove sysfs features which may confuse old userspace tools"
625    depends on SYSFS
626    default n
627    select SYSFS_DEPRECATED
628    help
629      This option switches the layout of sysfs to the deprecated
630      version. Do not use it on recent distributions.
631
632      The current sysfs layout features a unified device tree at
633      /sys/devices/, which is able to express a hierarchy between
634      class devices. If the deprecated option is set to Y, the
635      unified device tree is split into a bus device tree at
636      /sys/devices/ and several individual class device trees at
637      /sys/class/. The class and bus devices will be connected by
638      "<subsystem>:<name>" and the "device" links. The "block"
639      class devices, will not show up in /sys/class/block/. Some
640      subsystems will suppress the creation of some devices which
641      depend on the unified device tree.
642
643      This option is not a pure compatibility option that can
644      be safely enabled on newer distributions. It will change the
645      layout of sysfs to the non-extensible deprecated version,
646      and disable some features, which can not be exported without
647      confusing older userspace tools. Since 2007/2008 all major
648      distributions do not enable this option, and ship no tools which
649      depend on the deprecated layout or this option.
650
651      If you are using a new kernel on an older distribution, or use
652      older userspace tools, you might need to say Y here. Do not say Y,
653      if the original kernel, that came with your distribution, has
654      this option set to N.
655
656config RELAY
657    bool "Kernel->user space relay support (formerly relayfs)"
658    help
659      This option enables support for relay interface support in
660      certain file systems (such as debugfs).
661      It is designed to provide an efficient mechanism for tools and
662      facilities to relay large amounts of data from kernel space to
663      user space.
664
665      If unsure, say N.
666
667config NAMESPACES
668    bool "Namespaces support" if EMBEDDED
669    default !EMBEDDED
670    help
671      Provides the way to make tasks work with different objects using
672      the same id. For example same IPC id may refer to different objects
673      or same user id or pid may refer to different tasks when used in
674      different namespaces.
675
676config UTS_NS
677    bool "UTS namespace"
678    depends on NAMESPACES
679    help
680      In this namespace tasks see different info provided with the
681      uname() system call
682
683config IPC_NS
684    bool "IPC namespace"
685    depends on NAMESPACES && (SYSVIPC || POSIX_MQUEUE)
686    help
687      In this namespace tasks work with IPC ids which correspond to
688      different IPC objects in different namespaces.
689
690config USER_NS
691    bool "User namespace (EXPERIMENTAL)"
692    depends on NAMESPACES && EXPERIMENTAL
693    help
694      This allows containers, i.e. vservers, to use user namespaces
695      to provide different user info for different servers.
696      If unsure, say N.
697
698config PID_NS
699    bool "PID Namespaces (EXPERIMENTAL)"
700    default n
701    depends on NAMESPACES && EXPERIMENTAL
702    help
703      Support process id namespaces. This allows having multiple
704      processes with the same pid as long as they are in different
705      pid namespaces. This is a building block of containers.
706
707      Unless you want to work with an experimental feature
708      say N here.
709
710config NET_NS
711    bool "Network namespace"
712    default n
713    depends on NAMESPACES && EXPERIMENTAL && NET
714    help
715      Allow user space to create what appear to be multiple instances
716      of the network stack.
717
718config BLK_DEV_INITRD
719    bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
720    depends on BROKEN || !FRV
721    help
722      The initial RAM filesystem is a ramfs which is loaded by the
723      boot loader (loadlin or lilo) and that is mounted as root
724      before the normal boot procedure. It is typically used to
725      load modules needed to mount the "real" root file system,
726      etc. See <file:Documentation/initrd.txt> for details.
727
728      If RAM disk support (BLK_DEV_RAM) is also included, this
729      also enables initial RAM disk (initrd) support and adds
730      15 Kbytes (more on some other architectures) to the kernel size.
731
732      If unsure say Y.
733
734if BLK_DEV_INITRD
735
736source "usr/Kconfig"
737
738endif
739
740config CC_OPTIMIZE_FOR_SIZE
741    bool "Optimize for size"
742    default y
743    help
744      Enabling this option will pass "-Os" instead of "-O2" to gcc
745      resulting in a smaller kernel.
746
747      If unsure, say Y.
748
749config SYSCTL
750    bool
751
752config ANON_INODES
753    bool
754
755menuconfig EMBEDDED
756    bool "Configure standard kernel features (for small systems)"
757    help
758      This option allows certain base kernel options and settings
759          to be disabled or tweaked. This is for specialized
760          environments which can tolerate a "non-standard" kernel.
761          Only use this if you really know what you are doing.
762
763config UID16
764    bool "Enable 16-bit UID system calls" if EMBEDDED
765    depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
766    default y
767    help
768      This enables the legacy 16-bit UID syscall wrappers.
769
770config SYSCTL_SYSCALL
771    bool "Sysctl syscall support" if EMBEDDED
772    default y
773    select SYSCTL
774    ---help---
775      sys_sysctl uses binary paths that have been found challenging
776      to properly maintain and use. The interface in /proc/sys
777      using paths with ascii names is now the primary path to this
778      information.
779
780      Almost nothing using the binary sysctl interface so if you are
781      trying to save some space it is probably safe to disable this,
782      making your kernel marginally smaller.
783
784      If unsure say Y here.
785
786config KALLSYMS
787     bool "Load all symbols for debugging/ksymoops" if EMBEDDED
788     default y
789     help
790       Say Y here to let the kernel print out symbolic crash information and
791       symbolic stack backtraces. This increases the size of the kernel
792       somewhat, as all symbols have to be loaded into the kernel image.
793
794config KALLSYMS_ALL
795    bool "Include all symbols in kallsyms"
796    depends on DEBUG_KERNEL && KALLSYMS
797    help
798       Normally kallsyms only contains the symbols of functions, for nicer
799       OOPS messages. Some debuggers can use kallsyms for other
800       symbols too: say Y here to include all symbols, if you need them
801       and you don't care about adding 300k to the size of your kernel.
802
803       Say N.
804
805config KALLSYMS_EXTRA_PASS
806    bool "Do an extra kallsyms pass"
807    depends on KALLSYMS
808    help
809       If kallsyms is not working correctly, the build will fail with
810       inconsistent kallsyms data. If that occurs, log a bug report and
811       turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
812       Always say N here unless you find a bug in kallsyms, which must be
813       reported. KALLSYMS_EXTRA_PASS is only a temporary workaround while
814       you wait for kallsyms to be fixed.
815
816
817config HOTPLUG
818    bool "Support for hot-pluggable devices" if EMBEDDED
819    default y
820    help
821      This option is provided for the case where no hotplug or uevent
822      capabilities is wanted by the kernel. You should only consider
823      disabling this option for embedded systems that do not use modules, a
824      dynamic /dev tree, or dynamic device discovery. Just say Y.
825
826config PRINTK
827    default y
828    bool "Enable support for printk" if EMBEDDED
829    help
830      This option enables normal printk support. Removing it
831      eliminates most of the message strings from the kernel image
832      and makes the kernel more or less silent. As this makes it
833      very difficult to diagnose system problems, saying N here is
834      strongly discouraged.
835
836config BUG
837    bool "BUG() support" if EMBEDDED
838    default y
839    help
840          Disabling this option eliminates support for BUG and WARN, reducing
841          the size of your kernel image and potentially quietly ignoring
842          numerous fatal conditions. You should only consider disabling this
843          option for embedded systems with no facilities for reporting errors.
844          Just say Y.
845
846config ELF_CORE
847    default y
848    bool "Enable ELF core dumps" if EMBEDDED
849    help
850      Enable support for generating core dumps. Disabling saves about 4k.
851
852config PCSPKR_PLATFORM
853    bool "Enable PC-Speaker support" if EMBEDDED
854    depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES
855    default y
856    help
857          This option allows to disable the internal PC-Speaker
858          support, saving some memory.
859
860config BASE_FULL
861    default y
862    bool "Enable full-sized data structures for core" if EMBEDDED
863    help
864      Disabling this option reduces the size of miscellaneous core
865      kernel data structures. This saves memory on small machines,
866      but may reduce performance.
867
868config FUTEX
869    bool "Enable futex support" if EMBEDDED
870    default y
871    select RT_MUTEXES
872    help
873      Disabling this option will cause the kernel to be built without
874      support for "fast userspace mutexes". The resulting kernel may not
875      run glibc-based applications correctly.
876
877config EPOLL
878    bool "Enable eventpoll support" if EMBEDDED
879    default y
880    select ANON_INODES
881    help
882      Disabling this option will cause the kernel to be built without
883      support for epoll family of system calls.
884
885config SIGNALFD
886    bool "Enable signalfd() system call" if EMBEDDED
887    select ANON_INODES
888    default y
889    help
890      Enable the signalfd() system call that allows to receive signals
891      on a file descriptor.
892
893      If unsure, say Y.
894
895config TIMERFD
896    bool "Enable timerfd() system call" if EMBEDDED
897    select ANON_INODES
898    default y
899    help
900      Enable the timerfd() system call that allows to receive timer
901      events on a file descriptor.
902
903      If unsure, say Y.
904
905config EVENTFD
906    bool "Enable eventfd() system call" if EMBEDDED
907    select ANON_INODES
908    default y
909    help
910      Enable the eventfd() system call that allows to receive both
911      kernel notification (ie. KAIO) or userspace notifications.
912
913      If unsure, say Y.
914
915config SHMEM
916    bool "Use full shmem filesystem" if EMBEDDED
917    default y
918    depends on MMU
919    help
920      The shmem is an internal filesystem used to manage shared memory.
921      It is backed by swap and manages resource limits. It is also exported
922      to userspace as tmpfs if TMPFS is enabled. Disabling this
923      option replaces shmem and tmpfs with the much simpler ramfs code,
924      which may be appropriate on small systems without swap.
925
926config AIO
927    bool "Enable AIO support" if EMBEDDED
928    default y
929    help
930      This option enables POSIX asynchronous I/O which may by used
931          by some high performance threaded applications. Disabling
932          this option saves about 7k.
933
934config HAVE_PERF_COUNTERS
935    bool
936    help
937      See tools/perf/design.txt for details.
938
939menu "Performance Counters"
940
941config PERF_COUNTERS
942    bool "Kernel Performance Counters"
943    default y if PROFILING
944    depends on HAVE_PERF_COUNTERS
945    select ANON_INODES
946    help
947      Enable kernel support for performance counter hardware.
948
949      Performance counters are special hardware registers available
950      on most modern CPUs. These registers count the number of certain
951      types of hw events: such as instructions executed, cachemisses
952      suffered, or branches mis-predicted - without slowing down the
953      kernel or applications. These registers can also trigger interrupts
954      when a threshold number of events have passed - and can thus be
955      used to profile the code that runs on that CPU.
956
957      The Linux Performance Counter subsystem provides an abstraction of
958      these hardware capabilities, available via a system call. It
959      provides per task and per CPU counters, and it provides event
960      capabilities on top of those.
961
962      Say Y if unsure.
963
964config EVENT_PROFILE
965    bool "Tracepoint profiling sources"
966    depends on PERF_COUNTERS && EVENT_TRACING
967    default y
968    help
969     Allow the use of tracepoints as software performance counters.
970
971     When this is enabled, you can create perf counters based on
972     tracepoints using PERF_TYPE_TRACEPOINT and the tracepoint ID
973     found in debugfs://tracing/events/*/*/id. (The -e/--events
974     option to the perf tool can parse and interpret symbolic
975     tracepoints, in the subsystem:tracepoint_name format.)
976
977endmenu
978
979config VM_EVENT_COUNTERS
980    default y
981    bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
982    help
983      VM event counters are needed for event counts to be shown.
984      This option allows the disabling of the VM event counters
985      on EMBEDDED systems. /proc/vmstat will only show page counts
986      if VM event counters are disabled.
987
988config PCI_QUIRKS
989    default y
990    bool "Enable PCI quirk workarounds" if EMBEDDED
991    depends on PCI
992    help
993      This enables workarounds for various PCI chipset
994          bugs/quirks. Disable this only if your target machine is
995          unaffected by PCI quirks.
996
997config SLUB_DEBUG
998    default y
999    bool "Enable SLUB debugging support" if EMBEDDED
1000    depends on SLUB && SYSFS
1001    help
1002      SLUB has extensive debug support features. Disabling these can
1003      result in significant savings in code size. This also disables
1004      SLUB sysfs support. /sys/slab will not exist and there will be
1005      no support for cache validation etc.
1006
1007config STRIP_ASM_SYMS
1008    bool "Strip assembler-generated symbols during link"
1009    default n
1010    help
1011      Strip internal assembler-generated symbols during a link (symbols
1012      that look like '.Lxxx') so they don't pollute the output of
1013      get_wchan() and suchlike.
1014
1015config COMPAT_BRK
1016    bool "Disable heap randomization"
1017    default y
1018    help
1019      Randomizing heap placement makes heap exploits harder, but it
1020      also breaks ancient binaries (including anything libc5 based).
1021      This option changes the bootup default to heap randomization
1022      disabled, and can be overridden at runtime by setting
1023      /proc/sys/kernel/randomize_va_space to 2.
1024
1025      On non-ancient distros (post-2000 ones) N is usually a safe choice.
1026
1027choice
1028    prompt "Choose SLAB allocator"
1029    default SLUB
1030    help
1031       This option allows to select a slab allocator.
1032
1033config SLAB
1034    bool "SLAB"
1035    help
1036      The regular slab allocator that is established and known to work
1037      well in all environments. It organizes cache hot objects in
1038      per cpu and per node queues.
1039
1040config SLUB
1041    bool "SLUB (Unqueued Allocator)"
1042    help
1043       SLUB is a slab allocator that minimizes cache line usage
1044       instead of managing queues of cached objects (SLAB approach).
1045       Per cpu caching is realized using slabs of objects instead
1046       of queues of objects. SLUB can use memory efficiently
1047       and has enhanced diagnostics. SLUB is the default choice for
1048       a slab allocator.
1049
1050config SLOB
1051    depends on EMBEDDED
1052    bool "SLOB (Simple Allocator)"
1053    help
1054       SLOB replaces the stock allocator with a drastically simpler
1055       allocator. SLOB is generally more space efficient but
1056       does not perform as well on large systems.
1057
1058endchoice
1059
1060config PROFILING
1061    bool "Profiling support (EXPERIMENTAL)"
1062    help
1063      Say Y here to enable the extended profiling support mechanisms used
1064      by profilers such as OProfile.
1065
1066#
1067# Place an empty function call at each tracepoint site. Can be
1068# dynamically changed for a probe function.
1069#
1070config TRACEPOINTS
1071    bool
1072
1073config MARKERS
1074    bool "Activate markers"
1075    select TRACEPOINTS
1076    help
1077      Place an empty function call at each marker site. Can be
1078      dynamically changed for a probe function.
1079
1080source "arch/Kconfig"
1081
1082config SLOW_WORK
1083    default n
1084    bool
1085    help
1086      The slow work thread pool provides a number of dynamically allocated
1087      threads that can be used by the kernel to perform operations that
1088      take a relatively long time.
1089
1090      An example of this would be CacheFiles doing a path lookup followed
1091      by a series of mkdirs and a create call, all of which have to touch
1092      disk.
1093
1094      See Documentation/slow-work.txt.
1095
1096endmenu # General setup
1097
1098config HAVE_GENERIC_DMA_COHERENT
1099    bool
1100    default n
1101
1102config SLABINFO
1103    bool
1104    depends on PROC_FS
1105    depends on SLAB || SLUB_DEBUG
1106    default y
1107
1108config RT_MUTEXES
1109    boolean
1110
1111config BASE_SMALL
1112    int
1113    default 0 if BASE_FULL
1114    default 1 if !BASE_FULL
1115
1116menuconfig MODULES
1117    bool "Enable loadable module support"
1118    help
1119      Kernel modules are small pieces of compiled code which can
1120      be inserted in the running kernel, rather than being
1121      permanently built into the kernel. You use the "modprobe"
1122      tool to add (and sometimes remove) them. If you say Y here,
1123      many parts of the kernel can be built as modules (by
1124      answering M instead of Y where indicated): this is most
1125      useful for infrequently used options which are not required
1126      for booting. For more information, see the man pages for
1127      modprobe, lsmod, modinfo, insmod and rmmod.
1128
1129      If you say Y here, you will need to run "make
1130      modules_install" to put the modules under /lib/modules/
1131      where modprobe can find them (you may need to be root to do
1132      this).
1133
1134      If unsure, say Y.
1135
1136if MODULES
1137
1138config MODULE_FORCE_LOAD
1139    bool "Forced module loading"
1140    default n
1141    help
1142      Allow loading of modules without version information (ie. modprobe
1143      --force). Forced module loading sets the 'F' (forced) taint flag and
1144      is usually a really bad idea.
1145
1146config MODULE_UNLOAD
1147    bool "Module unloading"
1148    help
1149      Without this option you will not be able to unload any
1150      modules (note that some modules may not be unloadable
1151      anyway), which makes your kernel smaller, faster
1152      and simpler. If unsure, say Y.
1153
1154config MODULE_FORCE_UNLOAD
1155    bool "Forced module unloading"
1156    depends on MODULE_UNLOAD && EXPERIMENTAL
1157    help
1158      This option allows you to force a module to unload, even if the
1159      kernel believes it is unsafe: the kernel will remove the module
1160      without waiting for anyone to stop using it (using the -f option to
1161      rmmod). This is mainly for kernel developers and desperate users.
1162      If unsure, say N.
1163
1164config MODVERSIONS
1165    bool "Module versioning support"
1166    help
1167      Usually, you have to use modules compiled with your kernel.
1168      Saying Y here makes it sometimes possible to use modules
1169      compiled for different kernels, by adding enough information
1170      to the modules to (hopefully) spot any changes which would
1171      make them incompatible with the kernel you are running. If
1172      unsure, say N.
1173
1174config MODULE_SRCVERSION_ALL
1175    bool "Source checksum for all modules"
1176    help
1177      Modules which contain a MODULE_VERSION get an extra "srcversion"
1178      field inserted into their modinfo section, which contains a
1179          sum of the source files which made it. This helps maintainers
1180      see exactly which source was used to build a module (since
1181      others sometimes change the module source without updating
1182      the version). With this option, such a "srcversion" field
1183      will be created for all modules. If unsure, say N.
1184
1185endif # MODULES
1186
1187config INIT_ALL_POSSIBLE
1188    bool
1189    help
1190      Back when each arch used to define their own cpu_online_map and
1191      cpu_possible_map, some of them chose to initialize cpu_possible_map
1192      with all 1s, and others with all 0s. When they were centralised,
1193      it was better to provide this option than to break all the archs
1194      and have several arch maintainers pursuing me down dark alleys.
1195
1196config STOP_MACHINE
1197    bool
1198    default y
1199    depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1200    help
1201      Need stop_machine() primitive.
1202
1203source "block/Kconfig"
1204
1205config PREEMPT_NOTIFIERS
1206    bool
1207
1208

Archive Download this file



interactive