📄 kconfig
字号:
has the cost of more pagetable lookup overhead, and also consumes more pagetable space per process.# Common NUMA Featuresconfig NUMA bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)" depends on SMP depends on X86_64 || (X86_32 && HIGHMEM64G && (X86_NUMAQ || (X86_SUMMIT || X86_GENERICARCH) && ACPI) && EXPERIMENTAL) default n if X86_PC default y if (X86_NUMAQ || X86_SUMMIT) help Enable NUMA (Non Uniform Memory Access) support. The kernel will try to allocate memory used by a CPU on the local memory controller of the CPU and add some more NUMA awareness to the kernel. For i386 this is currently highly experimental and should be only used for kernel development. It might also cause boot failures. For x86_64 this is recommended on all multiprocessor Opteron systems. If the system is EM64T, you should say N unless your system is EM64T NUMA.comment "NUMA (Summit) requires SMP, 64GB highmem support, ACPI" depends on X86_32 && X86_SUMMIT && (!HIGHMEM64G || !ACPI)config K8_NUMA bool "Old style AMD Opteron NUMA detection" depends on X86_64 && NUMA && PCI default y help Enable K8 NUMA node topology detection. You should say Y here if you have a multi processor AMD K8 system. This uses an old method to read the NUMA configuration directly from the builtin Northbridge of Opteron. It is recommended to use X86_64_ACPI_NUMA instead, which also takes priority if both are compiled in.config X86_64_ACPI_NUMA bool "ACPI NUMA detection" depends on X86_64 && NUMA && ACPI && PCI select ACPI_NUMA default y help Enable ACPI SRAT based node topology detection.config NUMA_EMU bool "NUMA emulation" depends on X86_64 && NUMA help Enable NUMA emulation. A flat machine will be split into virtual nodes when booted with "numa=fake=N", where N is the number of nodes. This is only useful for debugging.config NODES_SHIFT int default "6" if X86_64 default "4" if X86_NUMAQ default "3" depends on NEED_MULTIPLE_NODESconfig HAVE_ARCH_BOOTMEM_NODE bool depends on X86_32 && NUMA default yconfig ARCH_HAVE_MEMORY_PRESENT bool depends on X86_32 && DISCONTIGMEM default yconfig NEED_NODE_MEMMAP_SIZE bool depends on X86_32 && (DISCONTIGMEM || SPARSEMEM) default yconfig HAVE_ARCH_ALLOC_REMAP bool depends on X86_32 && NUMA default yconfig ARCH_FLATMEM_ENABLE def_bool y depends on (X86_32 && ARCH_SELECT_MEMORY_MODEL && X86_PC) || (X86_64 && !NUMA)config ARCH_DISCONTIGMEM_ENABLE def_bool y depends on NUMAconfig ARCH_DISCONTIGMEM_DEFAULT def_bool y depends on NUMAconfig ARCH_SPARSEMEM_ENABLE def_bool y depends on NUMA || (EXPERIMENTAL && (X86_PC || X86_64)) select SPARSEMEM_STATIC if X86_32 select SPARSEMEM_VMEMMAP_ENABLE if X86_64config ARCH_SELECT_MEMORY_MODEL def_bool y depends on X86_32 && ARCH_SPARSEMEM_ENABLEconfig ARCH_MEMORY_PROBE def_bool X86_64 depends on MEMORY_HOTPLUGsource "mm/Kconfig"config HIGHPTE bool "Allocate 3rd-level pagetables from highmem" depends on X86_32 && (HIGHMEM4G || HIGHMEM64G) help The VM uses one page table entry for each page of physical memory. For systems with a lot of RAM, this can be wasteful of precious low memory. Setting this option will put user-space page table entries in high memory.config MATH_EMULATION bool prompt "Math emulation" if X86_32 ---help--- Linux can emulate a math coprocessor (used for floating point operations) if you don't have one. 486DX and Pentium processors have a math coprocessor built in, 486SX and 386 do not, unless you added a 487DX or 387, respectively. (The messages during boot time can give you some hints here ["man dmesg"].) Everyone needs either a coprocessor or this emulation. If you don't have a math coprocessor, you need to say Y here; if you say Y here even though you have a coprocessor, the coprocessor will be used nevertheless. (This behavior can be changed with the kernel command line option "no387", which comes handy if your coprocessor is broken. Try "man bootparam" or see the documentation of your boot loader (lilo or loadlin) about how to pass options to the kernel at boot time.) This means that it is a good idea to say Y here if you intend to use this kernel on different machines. More information about the internals of the Linux math coprocessor emulation can be found in <file:arch/x86/math-emu/README>. If you are not sure, say Y; apart from resulting in a 66 KB bigger kernel, it won't hurt.config MTRR bool "MTRR (Memory Type Range Register) support" ---help--- On Intel P6 family processors (Pentium Pro, Pentium II and later) the Memory Type Range Registers (MTRRs) may be used to control processor access to memory ranges. This is most useful if you have a video (VGA) card on a PCI or AGP bus. Enabling write-combining allows bus write transfers to be combined into a larger transfer before bursting over the PCI/AGP bus. This can increase performance of image write operations 2.5 times or more. Saying Y here creates a /proc/mtrr file which may be used to manipulate your processor's MTRRs. Typically the X server should use this. This code has a reasonably generic interface so that similar control registers on other processors can be easily supported as well: The Cyrix 6x86, 6x86MX and M II processors have Address Range Registers (ARRs) which provide a similar functionality to MTRRs. For these, the ARRs are used to emulate the MTRRs. The AMD K6-2 (stepping 8 and above) and K6-3 processors have two MTRRs. The Centaur C6 (WinChip) has 8 MCRs, allowing write-combining. All of these processors are supported by this code and it makes sense to say Y here if you have one of them. Saying Y here also fixes a problem with buggy SMP BIOSes which only set the MTRRs for the boot CPU and not for the secondary CPUs. This can lead to all sorts of problems, so it's good to say Y here. You can safely say Y even if your machine doesn't have MTRRs, you'll just add about 9 KB to your kernel. See <file:Documentation/mtrr.txt> for more information.config EFI bool "Boot from EFI support" depends on X86_32 && ACPI default n ---help--- This enables the kernel to boot on EFI platforms using system configuration information passed to it from the firmware. This also enables the kernel to use any EFI runtime services that are available (such as the EFI variable services). This option is only useful on systems that have EFI firmware and will result in a kernel image that is ~8k larger. In addition, you must use the latest ELILO loader available at <http://elilo.sourceforge.net> in order to take advantage of kernel initialization using EFI information (neither GRUB nor LILO know anything about EFI). However, even with this option, the resultant kernel should continue to boot on existing non-EFI platforms.config IRQBALANCE bool "Enable kernel irq balancing" depends on X86_32 && SMP && X86_IO_APIC default y help The default yes will allow the kernel to do irq load balancing. Saying no will keep the kernel from doing irq load balancing.# turning this on wastes a bunch of space.# Summit needs it only when NUMA is onconfig BOOT_IOREMAP bool depends on X86_32 && (((X86_SUMMIT || X86_GENERICARCH) && NUMA) || (X86 && EFI)) default yconfig SECCOMP bool "Enable seccomp to safely compute untrusted bytecode" depends on PROC_FS default y help This kernel feature is useful for number crunching applications that may need to compute untrusted bytecode during their execution. By using pipes or other transports made available to the process as file descriptors supporting the read/write syscalls, it's possible to isolate those applications in their own address space using seccomp. Once seccomp is enabled via /proc/<pid>/seccomp, it cannot be disabled and the task is only allowed to execute a few safe syscalls defined by each seccomp mode. If unsure, say Y. Only embedded should say N here.config CC_STACKPROTECTOR bool "Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)" depends on X86_64 && EXPERIMENTAL help This option turns on the -fstack-protector GCC feature. This feature puts, at the beginning of critical functions, a canary value on the stack just before the return address, and validates the value just before actually returning. Stack based buffer overflows (that need to overwrite this return address) now also overwrite the canary, which gets detected and the attack is then neutralized via a kernel panic. This feature requires gcc version 4.2 or above, or a distribution gcc with the feature backported. Older versions are automatically detected and for those versions, this configuration option is ignored.config CC_STACKPROTECTOR_ALL bool "Use stack-protector for all functions" depends on CC_STACKPROTECTOR help Normally, GCC only inserts the canary value protection for functions that use large-ish on-stack buffers. By enabling this option, GCC will be asked to do this for ALL functions.source kernel/Kconfig.hzconfig KEXEC bool "kexec system call" help kexec is a system call that implements the ability to shutdown your current kernel, and to start another kernel. It is like a reboot but it is independent of the system firmware. And like a reboot you can start any kernel with it, not just Linux. The name comes from the similarity to the exec system call. It is an ongoing process to be certain the hardware in a machine is properly shutdown, so do not be surprised if this code does not initially work for you. It may help to enable device hotplugging support. As of this writing the exact hardware interface is strongly in flux, so no good recommendation can be made.config CRASH_DUMP bool "kernel crash dumps (EXPERIMENTAL)" depends on EXPERIMENTAL depends on X86_64 || (X86_32 && HIGHMEM) help Generate crash dump after being started by kexec. This should be normally only set in special crash dump kernels which are loaded in the main kernel with kexec-tools into a specially reserved region and then later executed after a crash by kdump/kexec. The crash dump kernel must be compiled to a memory address not used by the main kernel or BIOS using PHYSICAL_START, or it must be built as a relocatable image (CONFIG_RELOCATABLE=y). For more details see Documentation/kdump/kdump.txtconfig PHYSICAL_START hex "Physical address where the kernel is loaded" if (EMBEDDED || CRASH_DUMP) default "0x1000000" if X86_NUMAQ default "0x200000" if X86_64 default "0x100000" help This gives the physical address where the kernel is loaded. If kernel is a not relocatable (CONFIG_RELOCATABLE=n) then bzImage will decompress itself to above physical address and run from there. Otherwise, bzImage will run from the address where it has been loaded by the boot loader and will ignore above physical address. In normal kdump cases one does not have to set/change this option as now bzImage can be compiled as a completely relocatable image (CONFIG_RELOCATABLE=y) and be used to load and run from a different address. This option is mainly useful for the folks who don't want to use a bzImage for capturing the crash dump and want to use a vmlinux instead. vmlinux is not relocatable hence a kernel needs to be specifically compiled to run from a specific memory area (normally a reserved region) and this option comes handy. So if you are using bzImage for capturing the crash dump, leave the value here unchanged to 0x100000 and set CONFIG_RELOCATABLE=y. Otherwise if you plan to use vmlinux for capturing the crash dump change this value to start of the reserved region (Typically 16MB 0x1000000). In other words, it can be set based on the "X" value as specified in the "crashkernel=YM@XM" command line boot parameter passed to the panic-ed kernel. Typically this parameter is set as crashkernel=64M@16M. Please take a look at Documentation/kdump/kdump.txt for more details about crash dumps. Usage of bzImage for capturing the crash dump is recommended as one does not have to build two kernels. Same kernel can be used as production kernel and capture kernel. Above option should have gone away after relocatable bzImage support is introduced. But it is present because there are users out there who continue to use vmlinux for dump capture. This option should go away down the line. Don't change this unless you know what you are doing.config RELOCATABLE bool "Build a relocatable kernel (EXPERIMENTAL)" depends on EXPERIMENTAL help This builds a kernel image that retains relocation information so it can be loaded someplace besides the default 1MB. The relocations tend to make the kernel binary about 10% larger, but are discarded at runtime. One use is for the kexec on panic case where the recovery kernel must live at a different physical address than the primary kernel. Note: If CONFIG_RELOCATABLE=y, then the kernel runs from the address it has been loaded at and the compile time physical address (CONFIG_PHYSICAL_START) is ignored.config PHYSICAL_ALIGN hex prompt "Alignment value to which kernel should be aligned" if X86_32 default "0x100000" if X86_32 default "0x200000" if X86_64 range 0x2000 0x400000 help This value puts the alignment restrictions on physical address where kernel is loaded and run from. Kernel is compiled for an address which meets above alignment restriction. If bootloader loads the kernel at a non-aligned address and CONFIG_RELOCATABLE is set, kernel will move itself to nearest address aligned to above value and run from there. If bootloader loads the kernel at a non-aligned address and CONFIG_RELOCATABLE is not set, kernel will ignore the run time load address and decompress itself to the address it has been compiled for and run from there. The address for which kernel is compiled already meets above alignment restrictions. Hence the end result is that kernel runs from a physical address meeting above alignment restrictions. Don't change this unless you know what you are doing.config HOTPLUG_CPU bool "Support for suspend on SMP and hot-pluggable CPUs (EXPERIMENTAL)" depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER ---help--- Say Y here to experiment with turning CPUs off and on, and to enable suspend on SMP systems. CPUs can be controlled through /sys/devices/system/cpu. Say N if you want to disable CPU hotplug and don't need to suspend.config COMPAT_VDSO bool "Compat VDSO support" default y depends on X86_32 help Map the VDSO to the predictable old-style address too. ---help--- Say N here if you are running a sufficiently recent glibc version (2.3.3 or later), to remove the high-mapped VDSO mapping and to exclusively use the randomized VDSO. If unsure, say Y.endmenuconfig ARCH_ENABLE_MEMORY_HOTPLUG def_bool y depends on X86_64 || (X86_32 && HIGHMEM)config MEMORY_HOTPLUG_RESERVE def_bool X86_64 depends on (MEMORY_HOTPLUG && DISCONTIGMEM)config HAVE_ARCH_EARLY_PFN_TO_NID def_bool X86_64 depends on NUMAconfig OUT_OF_LINE_PFN_TO_PAGE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -