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