1menu "Code maturity level options" 2 3config EXPERIMENTAL 4 bool "Prompt for development and/or incomplete code/drivers" 5 ---help--- 6 Some of the various things that Linux supports (such as network 7 drivers, file systems, network protocols, etc.) can be in a state 8 of development where the functionality, stability, or the level of 9 testing is not yet high enough for general use. This is usually 10 known as the "alpha-test" phase among developers. If a feature is 11 currently in alpha-test, then the developers usually discourage 12 uninformed widespread use of this feature by the general public to 13 avoid "Why doesn't this work?" type mail messages. However, active 14 testing and use of these systems is welcomed. Just be aware that it 15 may not meet the normal level of reliability or it may fail to work 16 in some special cases. Detailed bug reports from people familiar 17 with the kernel internals are usually welcomed by the developers 18 (before submitting bug reports, please read the documents 19 <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>, 20 <file:Documentation/BUG-HUNTING>, and 21 <file:Documentation/oops-tracing.txt> in the kernel source). 22 23 This option will also make obsoleted drivers available. These are 24 drivers that have been replaced by something else, and/or are 25 scheduled to be removed in a future kernel release. 26 27 Unless you intend to help test and develop a feature or driver that 28 falls into this category, or you have a situation that requires 29 using these features, you should probably say N here, which will 30 cause the configurator to present you with fewer choices. If 31 you say Y here, you will be offered the choice of using features or 32 drivers that are currently considered to be in the alpha-test phase. 33 34config CLEAN_COMPILE 35 bool "Select only drivers expected to compile cleanly" if EXPERIMENTAL 36 default y 37 help 38 Select this option if you don't even want to see the option 39 to configure known-broken drivers. 40 41 If unsure, say Y 42 43config BROKEN 44 bool 45 depends on !CLEAN_COMPILE 46 default y 47 48config BROKEN_ON_SMP 49 bool 50 depends on BROKEN || !SMP 51 default y 52 53config LOCK_KERNEL 54 bool 55 depends on SMP || PREEMPT 56 default y 57 58config INIT_ENV_ARG_LIMIT 59 int 60 default 32 if !USERMODE 61 default 128 if USERMODE 62 help 63 This is the value of the two limits on the number of argument and of 64 env.var passed to init from the kernel command line. 65 66endmenu 67 68menu "General setup" 69 70config LOCALVERSION 71 string "Local version - append to kernel release" 72 help 73 Append an extra string to the end of your kernel version. 74 This will show up when you type uname, for example. 75 The string you set here will be appended after the contents of 76 any files with a filename matching localversion* in your 77 object and source tree, in that order. Your total string can 78 be a maximum of 64 characters. 79 80config SWAP 81 bool "Support for paging of anonymous memory (swap)" 82 depends on MMU 83 default y 84 help 85 This option allows you to choose whether you want to have support 86 for socalled swap devices or swap files in your kernel that are 87 used to provide more virtual memory than the actual RAM present 88 in your computer. If unsure say Y. 89 90config SYSVIPC 91 bool "System V IPC" 92 depends on MMU 93 ---help--- 94 Inter Process Communication is a suite of library functions and 95 system calls which let processes (running programs) synchronize and 96 exchange information. It is generally considered to be a good thing, 97 and some programs won't run unless you say Y here. In particular, if 98 you want to run the DOS emulator dosemu under Linux (read the 99 DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>), 100 you'll need to say Y here. 101 102 You can find documentation about IPC with "info ipc" and also in 103 section 6.4 of the Linux Programmer's Guide, available from 104 <http://www.tldp.org/guides.html>. 105 106config POSIX_MQUEUE 107 bool "POSIX Message Queues" 108 depends on NET && EXPERIMENTAL 109 ---help--- 110 POSIX variant of message queues is a part of IPC. In POSIX message 111 queues every message has a priority which decides about succession 112 of receiving it by a process. If you want to compile and run 113 programs written e.g. for Solaris with use of its POSIX message 114 queues (functions mq_*) say Y here. To use this feature you will 115 also need mqueue library, available from 116 <http://www.mat.uni.torun.pl/~wrona/posix_ipc/> 117 118 POSIX message queues are visible as a filesystem called 'mqueue' 119 and can be mounted somewhere if you want to do filesystem 120 operations on message queues. 121 122 If unsure, say Y. 123 124config BSD_PROCESS_ACCT 125 bool "BSD Process Accounting" 126 help 127 If you say Y here, a user level program will be able to instruct the 128 kernel (via a special system call) to write process accounting 129 information to a file: whenever a process exits, information about 130 that process will be appended to the file by the kernel. The 131 information includes things such as creation time, owning user, 132 command name, memory usage, controlling terminal etc. (the complete 133 list is in the struct acct in <file:include/linux/acct.h>). It is 134 up to the user level program to do useful things with this 135 information. This is generally a good idea, so say Y. 136 137config BSD_PROCESS_ACCT_V3 138 bool "BSD Process Accounting version 3 file format" 139 depends on BSD_PROCESS_ACCT 140 default n 141 help 142 If you say Y here, the process accounting information is written 143 in a new file format that also logs the process IDs of each 144 process and it's parent. Note that this file format is incompatible 145 with previous v0/v1/v2 file formats, so you will need updated tools 146 for processing it. A preliminary version of these tools is available 147 at <http://www.physik3.uni-rostock.de/tim/kernel/utils/acct/>. 148 149config SYSCTL 150 bool "Sysctl support" 151 ---help--- 152 The sysctl interface provides a means of dynamically changing 153 certain kernel parameters and variables on the fly without requiring 154 a recompile of the kernel or reboot of the system. The primary 155 interface consists of a system call, but if you say Y to "/proc 156 file system support", a tree of modifiable sysctl entries will be 157 generated beneath the /proc/sys directory. They are explained in the 158 files in <file:Documentation/sysctl/>. Note that enabling this 159 option will enlarge the kernel by at least 8 KB. 160 161 As it is generally a good thing, you should say Y here unless 162 building a kernel for install/rescue disks or your system is very 163 limited in memory. 164 165config AUDIT 166 bool "Auditing support" 167 depends on NET 168 default y if SECURITY_SELINUX 169 help 170 Enable auditing infrastructure that can be used with another 171 kernel subsystem, such as SELinux (which requires this for 172 logging of avc messages output). Does not do system-call 173 auditing without CONFIG_AUDITSYSCALL. 174 175config AUDITSYSCALL 176 bool "Enable system-call auditing support" 177 depends on AUDIT && (X86 || PPC || PPC64 || ARCH_S390 || IA64 || UML || SPARC64) 178 default y if SECURITY_SELINUX 179 help 180 Enable low-overhead system-call auditing infrastructure that 181 can be used independently or with another kernel subsystem, 182 such as SELinux. 183 184config HOTPLUG 185 bool "Support for hot-pluggable devices" if !ARCH_S390 186 default ARCH_S390 187 help 188 This option is provided for the case where no in-kernel-tree 189 modules require HOTPLUG functionality, but a module built 190 outside the kernel tree does. Such modules require Y here. 191 192config KOBJECT_UEVENT 193 bool "Kernel Userspace Events" 194 depends on NET 195 default y 196 help 197 This option enables the kernel userspace event layer, which is a 198 simple mechanism for kernel-to-user communication over a netlink 199 socket. 200 The goal of the kernel userspace events layer is to provide a simple 201 and efficient events system, that notifies userspace about kobject 202 state changes. This will enable applications to just listen for 203 events instead of polling system devices and files. 204 Hotplug events (kobject addition and removal) are also available on 205 the netlink socket in addition to the execution of /sbin/hotplug if 206 CONFIG_HOTPLUG is enabled. 207 208 Say Y, unless you are building a system requiring minimal memory 209 consumption. 210 211config IKCONFIG 212 bool "Kernel .config support" 213 ---help--- 214 This option enables the complete Linux kernel ".config" file 215 contents to be saved in the kernel. It provides documentation 216 of which kernel options are used in a running kernel or in an 217 on-disk kernel. This information can be extracted from the kernel 218 image file with the script scripts/extract-ikconfig and used as 219 input to rebuild the current kernel or to build another kernel. 220 It can also be extracted from a running kernel by reading 221 /proc/config.gz if enabled (below). 222 223config IKCONFIG_PROC 224 bool "Enable access to .config through /proc/config.gz" 225 depends on IKCONFIG && PROC_FS 226 ---help--- 227 This option enables access to the kernel configuration file 228 through /proc/config.gz. 229 230config CPUSETS 231 bool "Cpuset support" 232 depends on SMP 233 help 234 This option will let you create and manage CPUSETs which 235 allow dynamically partitioning a system into sets of CPUs and 236 Memory Nodes and assigning tasks to run only within those sets. 237 This is primarily useful on large SMP or NUMA systems. 238 239 Say N if unsure. 240 241menuconfig EMBEDDED 242 bool "Configure standard kernel features (for small systems)" 243 help 244 This option allows certain base kernel options and settings 245 to be disabled or tweaked. This is for specialized 246 environments which can tolerate a "non-standard" kernel. 247 Only use this if you really know what you are doing. 248 249config KALLSYMS 250 bool "Load all symbols for debugging/kksymoops" if EMBEDDED 251 default y 252 help 253 Say Y here to let the kernel print out symbolic crash information and 254 symbolic stack backtraces. This increases the size of the kernel 255 somewhat, as all symbols have to be loaded into the kernel image. 256 257config KALLSYMS_ALL 258 bool "Include all symbols in kallsyms" 259 depends on DEBUG_KERNEL && KALLSYMS 260 help 261 Normally kallsyms only contains the symbols of functions, for nicer 262 OOPS messages. Some debuggers can use kallsyms for other 263 symbols too: say Y here to include all symbols, and you 264 don't care about adding 300k to the size of your kernel. 265 266 Say N. 267 268config KALLSYMS_EXTRA_PASS 269 bool "Do an extra kallsyms pass" 270 depends on KALLSYMS 271 help 272 If kallsyms is not working correctly, the build will fail with 273 inconsistent kallsyms data. If that occurs, log a bug report and 274 turn on KALLSYMS_EXTRA_PASS which should result in a stable build. 275 Always say N here unless you find a bug in kallsyms, which must be 276 reported. KALLSYMS_EXTRA_PASS is only a temporary workaround while 277 you wait for kallsyms to be fixed. 278 279 280config PRINTK 281 default y 282 bool "Enable support for printk" if EMBEDDED 283 help 284 This option enables normal printk support. Removing it 285 eliminates most of the message strings from the kernel image 286 and makes the kernel more or less silent. As this makes it 287 very difficult to diagnose system problems, saying N here is 288 strongly discouraged. 289 290config BUG 291 bool "BUG() support" if EMBEDDED 292 default y 293 help 294 Disabling this option eliminates support for BUG and WARN, reducing 295 the size of your kernel image and potentially quietly ignoring 296 numerous fatal conditions. You should only consider disabling this 297 option for embedded systems with no facilities for reporting errors. 298 Just say Y. 299 300config BASE_FULL 301 default y 302 bool "Enable full-sized data structures for core" if EMBEDDED 303 help 304 Disabling this option reduces the size of miscellaneous core 305 kernel data structures. This saves memory on small machines, 306 but may reduce performance. 307 308config FUTEX 309 bool "Enable futex support" if EMBEDDED 310 default y 311 help 312 Disabling this option will cause the kernel to be built without 313 support for "fast userspace mutexes". The resulting kernel may not 314 run glibc-based applications correctly. 315 316config EPOLL 317 bool "Enable eventpoll support" if EMBEDDED 318 default y 319 help 320 Disabling this option will cause the kernel to be built without 321 support for epoll family of system calls. 322 323config CC_OPTIMIZE_FOR_SIZE 324 bool "Optimize for size" if EMBEDDED 325 default y if ARM || H8300 326 help 327 Enabling this option will pass "-Os" instead of "-O2" to gcc 328 resulting in a smaller kernel. 329 330 WARNING: some versions of gcc may generate incorrect code with this 331 option. If problems are observed, a gcc upgrade may be needed. 332 333 If unsure, say N. 334 335config SHMEM 336 bool "Use full shmem filesystem" if EMBEDDED 337 default y 338 depends on MMU 339 help 340 The shmem is an internal filesystem used to manage shared memory. 341 It is backed by swap and manages resource limits. It is also exported 342 to userspace as tmpfs if TMPFS is enabled. Disabling this 343 option replaces shmem and tmpfs with the much simpler ramfs code, 344 which may be appropriate on small systems without swap. 345 346config CC_ALIGN_FUNCTIONS 347 int "Function alignment" if EMBEDDED 348 default 0 349 help 350 Align the start of functions to the next power-of-two greater than n, 351 skipping up to n bytes. For instance, 32 aligns functions 352 to the next 32-byte boundary, but 24 would align to the next 353 32-byte boundary only if this can be done by skipping 23 bytes or less. 354 Zero means use compiler's default. 355 356config CC_ALIGN_LABELS 357 int "Label alignment" if EMBEDDED 358 default 0 359 help 360 Align all branch targets to a power-of-two boundary, skipping 361 up to n bytes like ALIGN_FUNCTIONS. This option can easily 362 make code slower, because it must insert dummy operations for 363 when the branch target is reached in the usual flow of the code. 364 Zero means use compiler's default. 365 366config CC_ALIGN_LOOPS 367 int "Loop alignment" if EMBEDDED 368 default 0 369 help 370 Align loops to a power-of-two boundary, skipping up to n bytes. 371 Zero means use compiler's default. 372 373config CC_ALIGN_JUMPS 374 int "Jump alignment" if EMBEDDED 375 default 0 376 help 377 Align branch targets to a power-of-two boundary, for branch 378 targets where the targets can only be reached by jumping, 379 skipping up to n bytes like ALIGN_FUNCTIONS. In this case, 380 no dummy operations need be executed. 381 Zero means use compiler's default. 382 383endmenu # General setup 384 385config TINY_SHMEM 386 default !SHMEM 387 bool 388 389config BASE_SMALL 390 int 391 default 0 if BASE_FULL 392 default 1 if !BASE_FULL 393 394menu "Loadable module support" 395 396config MODULES 397 bool "Enable loadable module support" 398 help 399 Kernel modules are small pieces of compiled code which can 400 be inserted in the running kernel, rather than being 401 permanently built into the kernel. You use the "modprobe" 402 tool to add (and sometimes remove) them. If you say Y here, 403 many parts of the kernel can be built as modules (by 404 answering M instead of Y where indicated): this is most 405 useful for infrequently used options which are not required 406 for booting. For more information, see the man pages for 407 modprobe, lsmod, modinfo, insmod and rmmod. 408 409 If you say Y here, you will need to run "make 410 modules_install" to put the modules under /lib/modules/ 411 where modprobe can find them (you may need to be root to do 412 this). 413 414 If unsure, say Y. 415 416config MODULE_UNLOAD 417 bool "Module unloading" 418 depends on MODULES 419 help 420 Without this option you will not be able to unload any 421 modules (note that some modules may not be unloadable 422 anyway), which makes your kernel slightly smaller and 423 simpler. If unsure, say Y. 424 425config MODULE_FORCE_UNLOAD 426 bool "Forced module unloading" 427 depends on MODULE_UNLOAD && EXPERIMENTAL 428 help 429 This option allows you to force a module to unload, even if the 430 kernel believes it is unsafe: the kernel will remove the module 431 without waiting for anyone to stop using it (using the -f option to 432 rmmod). This is mainly for kernel developers and desperate users. 433 If unsure, say N. 434 435config OBSOLETE_MODPARM 436 bool 437 default y 438 depends on MODULES 439 help 440 You need this option to use module parameters on modules which 441 have not been converted to the new module parameter system yet. 442 If unsure, say Y. 443 444config MODVERSIONS 445 bool "Module versioning support (EXPERIMENTAL)" 446 depends on MODULES && EXPERIMENTAL 447 help 448 Usually, you have to use modules compiled with your kernel. 449 Saying Y here makes it sometimes possible to use modules 450 compiled for different kernels, by adding enough information 451 to the modules to (hopefully) spot any changes which would 452 make them incompatible with the kernel you are running. If 453 unsure, say N. 454 455config MODULE_SRCVERSION_ALL 456 bool "Source checksum for all modules" 457 depends on MODULES 458 help 459 Modules which contain a MODULE_VERSION get an extra "srcversion" 460 field inserted into their modinfo section, which contains a 461 sum of the source files which made it. This helps maintainers 462 see exactly which source was used to build a module (since 463 others sometimes change the module source without updating 464 the version). With this option, such a "srcversion" field 465 will be created for all modules. If unsure, say N. 466 467config KMOD 468 bool "Automatic kernel module loading" 469 depends on MODULES 470 help 471 Normally when you have selected some parts of the kernel to 472 be created as kernel modules, you must load them (using the 473 "modprobe" command) before you can use them. If you say Y 474 here, some parts of the kernel will be able to load modules 475 automatically: when a part of the kernel needs a module, it 476 runs modprobe with the appropriate arguments, thereby 477 loading the module if it is available. If unsure, say Y. 478 479config STOP_MACHINE 480 bool 481 default y 482 depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU 483 help 484 Need stop_machine() primitive. 485endmenu 486