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