Linux 3.10内核编译选项
更新时间:2024-04-19 01:33:01 阅读量: 综合文库 文档下载
- Linux常用命令推荐度:
- 相关推荐
Linux-3.10-x86_64 内核配置选项简介
64-bit CONFIG_64BIT
编译64位内核.本文仅讲述x86_64(AMD64)平台的内核编译,所以这个是必选项.
kernel
General setup 常规设置
Cross-compiler CONFIG_CROSS_COMPILE
交叉编译工具前缀(比如\相当于使用\CROSS_COMPILE=arm-linux-\进行编译).除非你想配置后默认自动进行交叉编译,否则不要使用此选项. Local
version
-
append
to
kernel
release
tool
prefix
CONFIG_LOCALVERSION
在内核版本后面加上自定义的版本字符串(最大64字符),可以用\-a\命令看到
Automatically append version information to the version string CONFIG_LOCALVERSION_AUTO
自动在版本字符串(CONFIG_LOCALVERSION)后面添加版本信息(类似\格式),需要有perl以及git仓库支持 Kernel compression mode
内核镜像的压缩格式,可选Gzip/Bzip2/LZMA/XZ/LZO格式之一,推荐使用XZ格式.你的系统中需要有相应的压缩工具. Default
CONFIG_DEFAULT_HOSTNAME
设置默认主机名,默认值是\用户可以随后使用系统调用sethostname()来修改主机名. Support CONFIG_SWAP
for
paging
of
anonymous
memory
(swap) hostname
使用交换分区或者交换文件来做为虚拟内存 System CONFIG_SYSVIPC
System V 进程间通信(IPC)支持,用于进程间同步和交换数据,许多程序需要这个功能.选\除非你确实知道自己在做什么 POSIX
CONFIG_POSIX_MQUEUE
POSIX消息队列是POSIX IPC的一部分,如果你想编译和运行那些使用\系统调用的程序(比如为Solaris开发的程序),就必须开启此选项.POSIX消息队列可以作为\文件系统挂载以方便用户对队列进行操作.不确定的选\open
CONFIG_FHANDLE
用户程序可以使用句柄(而非文件名)来追踪文件(使用open_by_handle_at(2)/name_to_handle_at(2)系统调用),即使某文件被重命名,用户程序依然可定位那个文件.此特性有助于实现用户空间文件服务器(userspace file server).建议选\因为systemd和udev依赖于它. Auditing CONFIG_AUDIT
内核审计(跟踪每个进程的活动情况)支持,某些安全相关的内核子系统(例如SELinux)需要它.但是它会与systemd冲突,所以在使用systemd的系统上必须关闭. Enable
system-call
auditing
support support
by
fhandle
syscalls
Message
Queues
V
IPC
CONFIG_AUDITSYSCALL
对系统调用进行审计.既可独立使用,也可被其他内核子系统(例如SELinux)使用. Make
audit
loginuid
immutable
CONFIG_AUDIT_LOGINUID_IMMUTABLE
审计时使用固定的loginuid.在使用systemd之类的系统上应该开启(login服务由init进程负责重启),在使用SysVinit或Upstart之类的系统上应该关闭(login服务由系统管理员手动重启).OpenRC就是一个基于SysVinit的系统. IRQ subsystem IRQ(中断请求)子系统 Expose
hardware/virtual
IRQ
mapping
via
debugfs
CONFIG_IRQ_DOMAIN_DEBUG
通过debugfs中的irq_domain_mapping文件向用户显示硬件IRQ号/Linux IRQ号之间的对应关系.仅用于开发调试. Support
CONFIG_SPARSE_IRQ
稀疏IRQ号支持.它允许在小型设备上(例如嵌入式设备)定义一个很高的CONFIG_NR_CPUS值,但仍然不希望占用太多内核\memory footprint\一段可以被操作或被管理的内存区域)的场合.稀疏IRQ也更适合NUMA平台,因为它以一种对NUMA更友好的方式分发中断描述符.不确定的选\Timers subsystem Linux内核时钟子系统 Timer tick handling
内核时钟滴答处理程序,更多信息可以参考内核源码树下的\Documentation/timers/NO_HZ.txt\文件 Periodic
timer
ticks
(constant
rate,
no
dynticks)
sparse
irq
numbering
CONFIG_HZ_PERIODIC
无论CPU是否需要,都强制按照固定频率不断触发时钟中断.这是最耗电的方式,不推荐使用 Idle
dynticks
system
(tickless
idle)
CONFIG_NO_HZ_IDLE
CPU在空闲状态时不产生不必要的时钟中断,以使处理器能够在较低能耗状态下运行以节约电力,适合于大多数场合
Full dynticks system (tickless)
CONFIG_NO_HZ_FULL
完全无滴嗒:即使CPU在忙碌状态也尽可能关闭所有时钟中断,适用于CPU在同一时间仅运行一个任务,或者用户空间程序极少与内核交互的场合.即使开启此选项,也需要额外设置\内核命令行参数才能真正生效. Full
dynticks
system
on
all
CPUs
by
default
CONFIG_NO_HZ_FULL_ALL
即使没有设置\引导参数,也默认对所有CPU(boot CPU 除外)开启完全无滴答特性. Old
CONFIG_NO_HZ
等价于CONFIG_NO_HZ_IDLE,临时用来兼容老版本内核选项,未来会被删除. High
Resolution
Timer
Support
Idle
dynticks
config
CONFIG_HIGH_RES_TIMERS
高精度定时器(hrtimer)是从2.6.16开始引入,用于取代传统timer wheel(基于jiffies定时器)的时钟子系统.可以降低与内核其他模块的耦合性,还可以提供比1毫秒更高的精度(因为它可以读取HPET/TSC等新型硬件时钟源),可以更好的支持音视频等对时间精度要求较高的应用.建议选\提示]这里说的\定时器\是指\软件定时器\而不是主板或CPU上集成的硬件时钟发生器(ACPI PM Timer/HPET Timer/TSC Timer). CPU/Task time and stats accounting CPU/进程的时间及状态统计 Cputime accounting CPU时间统计方式 Simple
tick
based
cputime
accounting
CONFIG_TICK_CPU_ACCOUNTING
简单的基于滴答的统计,适用于大多数场合 Deterministic
task
and
CPU
time
accounting
CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
通过读取CPU计数器进行统计,可以提供更精确的统计,但是对性能有一些不利影响. Full
dynticks
CPU
time
accounting
CONFIG_VIRT_CPU_ACCOUNTING_GEN
利用上下文跟踪子系统,通过观察每一个内核与用户空间的边界进行统计.该选项对性能有显著的不良影响,目前仅用于完全无滴答子系统(CONFIG_NO_HZ_FULL)的调试 Fine
granularity
task
level
IRQ
time
accounting
CONFIG_IRQ_TIME_ACCOUNTING
通过读取TSC时间戳进行统计,这是统计进程IRQ时间的更细粒度的统计方式,但对性能有些不良影响(特别是在RDTSC指令速度较慢的CPU上). BSD
CONFIG_BSD_PROCESS_ACCT
用户空间程序可以要求内核将进程的统计信息写入一个指定的文件,主要包括进程的创建时间/创建者/内存占用等信息. BSD
Process
Accounting
version
3
file
format
Process
Accounting
CONFIG_BSD_PROCESS_ACCT_V3
使用新的v3版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式.比如 GNU Accounting Utilities 这样的工具可以识别v3格式 Export
task/process
statistics
through
netlink
CONFIG_TASKSTATS
通过netlink接口向用户空间导出进程的统计信息,与 BSD Process Accounting 的不同之处在于这些统计信息在整个进程生存期都是可用的. Enable
per-task
delay
accounting
CONFIG_TASK_DELAY_ACCT
在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间 Enable
extended
accounting
over
taskstats
CONFIG_TASK_XACCT
在统计信息中包含进程的更多扩展信息. Enable
per-task
storage
I/O
accounting
CONFIG_TASK_IO_ACCOUNTING
在统计信息中包含进程在存储设备上的I/O字节数. RCU Subsystem
RCU(Read-Copy Update)子系统.在读多写少的情况下,这是一个高性能的锁机制,对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它(速度非常快),但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据,速度非常慢.RCU只适用于读多写少的情况:如网络路由表的查询更新,设备状态表的维护,数据结构的延迟释放以及多径I/O设备的维护等. RCU Implementation RCU的实现方式 Tree-based CONFIG_TREE_RCU
基于树型分层结构的实现.最适用于多CPU的非实时系统. Preemptible
tree-based
hierarchical
RCU
hierarchical
RCU
CONFIG_TREE_PREEMPT_RCU
抢占式基于树型分层结构的实现.最适用于那些要求快速响应的多CPU实时系统. UP-only
CONFIG_TINY_RCU
最简单的实现,能够大幅降低RCU系统的内存占用.最适用于单CPU的非实时系统. Preemptible
UP-only
small-memory-footprint
RCU
small-memory-footprint
RCU
CONFIG_TINY_PREEMPT_RCU
抢占式简单实现,能够大幅降低RCU系统的内存占用.最适用于那些要求快速响应的单CPU实时系统.
Consider userspace as in RCU extended quiescent state
CONFIG_RCU_USER_QS
在内核和用户边界设置钩子函数,将运行在用户态的CPU从全局RCU状态机制中移除,这样就不会在RCU系统中维护此CPU的时钟滴答.除非你想要帮助开发CONFIG_NO_HZ_FULL模块,否则不要打开此选项,而且它还会对性能有不利影响. Force
context
tracking
CONFIG_CONTEXT_TRACKING_FORCE
默认在内核和用户边界进行探测(上下文跟踪),以便测试依赖于此特性的各种功能(比如用户空间的 RCU extended quiescent state),这个特性目前仅用于调试目的,未来也许会用于为CONFIG_NO_HZ_FULL模块提供支持 Tree-based
hierarchical
RCU
fanout
value
CONFIG_RCU_FANOUT
这个选项控制着树形RCU层次结构的端点数(fanout),以允许RCU子系统在拥有海量CPU的系统上高效工作.这个值必须至少等于CONFIG_NR_CPUS的1/4次方(4次根号).生产系统上应该使用默认值(64).仅在你想调试RCU子系统时才需要减小此值. Tree-based
hierarchical
RCU
leaf-level
fanout
value
CONFIG_RCU_FANOUT_LEAF
这个选项控制着树形RCU层次结构的叶子层的端点数(leaf-level fanout).对于期望拥有更高能耗比(更节能)的系统,请保持其默认值(16).对于拥有成千上万个CPU的系统来说,应该考虑将其设为最大值(CONFIG_RCU_FANOUT). Disable
tree-based
hierarchical
RCU
auto-balancing
CONFIG_RCU_FANOUT_EXACT
强制按照CONFIG_RCU_FANOUT_LEAF的值,而不是使用自动平衡树结构来实现RCU子系统.目前仅用于调试目的.未来也许会用于增强NUMA系统的性能. Accelerate
last
non-dyntick-idle
CPU's
grace
periods
CONFIG_RCU_FAST_NO_HZ
即使CPU还在忙碌,也允许进入dynticks-idle状态,并且阻止RCU每4个滴答就唤醒一次该CPU,这样能够更有效的使用电力,同时也拉长了RCU grace period的时间,造成性能降低.如果能耗比对你而言非常重要(你想节省每一分电力),并且你不在乎系统性能的降低(CPU唤醒时间增加),可以开启此选项.台式机和服务器建议关闭此选项. Enable
CONFIG_RCU_BOOST
允许提升RCU子系统的实时优先级(包括读操作与写操作),以避免RCU操作被阻塞太长时间.如果系统的CPU负载经常很重,或者你需要快速的实时响应系统,那么就选\否则应该选\Real-time
priority
to
boost
RCU
readers
to
RCU
priority
boosting
CONFIG_RCU_BOOST_PRIO
允许提升被长时间抢占(阻塞)的RCU读操作的实时优先级到什么程度.取值范围是[1,99].默认值\适用于实时应用程序中不包含CPU密集型(CPU-bound)线程的常规场合(例如大多数桌面系统).但是如果你的实时应用程序拥有一个或多个CPU密集型线程,那么可能需要增加这个值,具体可以参考内核帮助的说明.仅在你确实理解了的情况下再改变默认值.
Milliseconds to delay boosting after RCU grace-period start CONFIG_RCU_BOOST_DELAY
在提升RCU读操作的优先级之前,允许有多长时间潜伏期(阻塞),取值范围是[0,3000],单位是毫秒,默认值是\不确定的请使用默认值. Offload
RCU
callback
processing
from
boot-selected
CPUs
CONFIG_RCU_NOCB_CPU
如果你想帮助调试内核可以开启,否则请关闭. Build-forced no-CBs CPUs
在开启CONFIG_RCU_NOCB_CPU选项的情况下,指定哪些CPU是No-CB CPU,相当于预先设置\内核引导参数. Kernel
CONFIG_IKCONFIG
.config
support
把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本从内核镜像中提取这些信息 Enable
access
to
.config
through
/proc/config.gz
CONFIG_IKCONFIG_PROC
允许通过 /proc/config.gz 文件访问内核的配置信息 Kernel
CONFIG_LOG_BUF_SHIFT 设
置
内
核
日
志
缓
冲
区
的
大
小
:
12(
最
小
log
buffer
size
值)=4KB,...,16=64KB,17=128KB,18=256KB,...,21(最大值)=2048KB Automatically
enable
NUMA
aware
memory/task
placement
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED
在NUMA(Non-Uniform Memory Access Architecture)系统上自动启用进程/内存均衡,也就是自动开启CONFIG_NUMA_BALANCING特性. Memory
placement
aware
NUMA
scheduler
CONFIG_NUMA_BALANCING
允许自动根据NUMA系统的节点分布状况进行进程/内存均衡(方法很原始,就是简单的内存移动).这个选项对UMA系统无效.[提示]UMA系统的例子:(1)只有一颗物理CPU(即使是多核)的电脑,(2)不支持\虚拟NUMA\或\虚拟NUMA\被禁用的虚拟机(即使所在的物理机是NUMA系统) Control CONFIG_CGROUPS
Cgroup(Control Group)是一种进程管理机制,可以针对一组进程进行系统资源的分配和管理,可用于Cpusets,CFS(完全公平调度器),内存管理等子系统.此外,systemd
也依赖于它.更多细节可以参考内核的
Group
support
\Documentation/cgroups/cgroups.txt\文件 Example
CONFIG_CGROUP_DEBUG
导出cgroups框架的调试信息,仅用于调试目的.
debug
cgroup
subsystem
Freezer
CONFIG_CGROUP_FREEZER
cgroup subsystem
允许冻结/解冻cgroup内所有进程 Device
controller
for
cgroups
CONFIG_CGROUP_DEVICE
允许为cgroup建立设备白名单,这样cgroup内的进程将仅允许对白名单中的设备进行mknod/open操作 Cpuset
CONFIG_CPUSETS
CPUSET支持:允许将CPU和内存进行分组,并指定某些进程只能运行于特定的分组.这里有一篇CPUSET的用法 Include
legacy
/proc/
file support
CONFIG_PROC_PID_CPUSET
提供过时的 /proc/
CPU
accounting
cgroup
subsystem
CONFIG_CGROUP_CPUACCT
提供一个简单的资源控制器(Resource Controller,用于实现一组任务间的资源共享),以监控cgroup内所有进程的总CPU使用量. Resource
CONFIG_RESOURCE_COUNTERS
为cgroup提供独立于controller资源计数器 Memory
Resource
Controller
for
Control
Groups counters
CONFIG_MEMCG
为cgroup添加内存资源控制器,包含匿名内存和页面缓存(Documentation/cgroups/memory.txt).开启此选项后,将会增加关联到每个内存页fixed memory大小,具体在64位系统上是40bytes/PAGE_SIZE.仅在你确实明白什么是 memory resource controller 并且确实需要的情况下才开启此选项.此功能可以通过命令行选项\进行关闭.
Memory Resource Controller Swap Extension
CONFIG_MEMCG_SWAP
给 Memory Resource Controller 添加对swap的管理功能.这样就可以针对每个cgroup限定其使用的mem+swap总量.如果关闭此选项, memory resource controller 将仅能限制mem的使用量,而无法对swap进行控制(进程有可能耗尽swap).开启此功能会对性能有不利影响,并且为了追踪swap的使用也会消耗更多的内存(如果swap的页面大小是4KB,那么每1GB的swap需要额外消耗512KB内存),所以在内存较小的系统上不建议开启.
Memory Resource Controller Swap Extension enabled by default CONFIG_MEMCG_SWAP_ENABLED
如果开启此选项,那么将默认开启CONFIG_MEMCG_SWAP特性,否则将默认关闭.即使默认开启也可以通过内核引导参数\禁止此特性. Memory
Resource
Controller
Kernel
Memory
accounting
CONFIG_MEMCG_KMEM
为 Memory Resource Controller 添加对内核对象所占用内存的管理功能.和标准的 Memory Resource Controller 对内存的控制不一样之处在于:这些内核对象所占用的内存是基于每个内存页的,并且可以被swap到硬盘.使用这个功能可以确保cgroup中的进程不会单独耗尽所有内核资源. HugeTLB
Resource
Controller
for
Control
Groups
CONFIG_CGROUP_HUGETLB
为cgroup添加对HugeTLB页的资源控制功能.开启此选项之后,你就可以针对每个cgroup限定其对HugeTLB的使用.
Enable perf_event per-cpu per-container group (cgroup) monitoring CONFIG_CGROUP_PERF
将per-cpu模式进行扩展,使其可以监控属于特定cgroup并运行于特定CPU上的线程 Group
CONFIG_CGROUP_SCHED
CPU
scheduler
让CPU调度程序可以在不同的cgroup之间分配CPU的带宽.systemd资源控制单元(resource control unit)的CPUShares功能依赖于它. Group
scheduling
for
SCHED_OTHER
CONFIG_FAIR_GROUP_SCHED
公平CPU调度策略,也就是在多个cgroup之间平均分配CPU带宽.\鸡血补丁\自动分组调度功能)依赖于它.systemd资源控制单元(resource control unit)的CPUShares功能也依赖于它. CPU
bandwidth
provisioning
for
FAIR_GROUP_SCHED
CONFIG_CFS_BANDWIDTH
允许用户为运行在CONFIG_FAIR_GROUP_SCHED中的进程定义CPU带宽限制.对于没有定义CPU带宽限制的cgroup而言,可以无限制的使用CPU带宽.详情参见 Documentation/scheduler/sched-bwc.txt 文件. Group
scheduling
for
SCHED_RR/FIFO
CONFIG_RT_GROUP_SCHED
允许用户为cgroup分配实时CPU带宽,还可以对非特权用户的实时进程组进行调度.详情参见 Documentation/scheduler/sched-rt-group.txt 文档. Block
CONFIG_BLK_CGROUP
通用的块IO控制器接口,可以用于实现各种不同的控制策略.目前,IOSCHED_CFQ用它来在不同的cgroup之间分配磁盘IO带宽(需要额外开启CONFIG_CFQ_GROUP_IOSCHED),block io throttle也会用它来针对特定块设备限制IO速率上限(需要额外开启CONFIG_BLK_DEV_THROTTLING).更多信息可以参考\Documentation/cgroups/blkio-controller.txt\文件. Enable
Block
IO
controller
debugging
IO
controller
CONFIG_DEBUG_BLK_CGROUP
仅用于调试 Block IO controller 目的. Checkpoint/restore CONFIG_CHECKPOINT_RESTORE
support
在内核中添加\检查点/恢复\支持.也就是添加一些辅助的代码用于设置进程的 text, data, heap 段,并且在 /proc 文件系统中添加一些额外的条目.主要用于调试目的.不确定的选\Namespaces CONFIG_NAMESPACES
命名空间支持.主要用于支持基于容器的轻量级虚拟化技术(比如LXC和Linux-VServer). UTS
CONFIG_UTS_NS
uname()系统调用的命名空间支持 IPC
CONFIG_IPC_NS
进程间通信对象ID的命名空间支持 User
CONFIG_USER_NS
允许容器使用user命名空间.如果开启此项,建议同时开启CONFIG_MEMCG和CONFIG_MEMCG_KMEM选项,以允许用户空间使用\限制非特权用户的内存使用量.不确定的选\如果你打算构建一个VPS服务器就必须选\PID
CONFIG_PID_NS 进程PID命名空间支持 Network CONFIG_NET_NS
网络协议栈的命名空间支持.systemd服务单元(service unit)中的\依赖于它.
Require conversions between uid/gids and their internal representation CONFIG_UIDGID_STRICT_TYPE_CHECKS
namespace Namespaces namespace namespace namespace support
强制将uid/gid转换为内部表示形式,以让那些未对uid/gid进行转换的内核子系统代码也能正常编译.不确定的选\Automatic
process
group
scheduling
CONFIG_SCHED_AUTOGROUP
每个TTY动态地创建任务分组(cgroup),这样就可以降低高负载情况下的桌面延迟.也就是传说中的桌面\鸡血补丁\桌面用户建议开启.但服务器建议关闭. Enable deprecated sysfs features to support old userspace tools CONFIG_SYSFS_DEPRECATED
为了兼容旧版本的应用程序而保留过时的sysfs特性.仅当在使用2008年以前的发行版时才需要开启,2009年之后的发行版中必须关闭.此外,使用udev或systemd的系统也必须关闭. Enable
deprecated
sysfs
features
by
default
CONFIG_SYSFS_DEPRECATED_V2 默认开启上述特性 Kernel->user CONFIG_RELAY
在某些文件系统(比如debugfs)中提供中继(relay)支持(从内核空间向用户空间传递大批量数据).主要用于调试内核.
Initial RAM filesystem and RAM disk (initramfs/initrd) support CONFIG_BLK_DEV_INITRD
初始内存文件系统(initramfs,2.6以上内核的新机制,使用cpio格式,占据的内存随数据的增减自动增减)与初始内存盘(initrd,2.4以前内核遗留的老机制,使用loop设备,占据一块固定的内存,需要额外开启CONFIG_BLK_DEV_RAM选项才生效)支持,一般通过lilo/grub的initrd指令加载.更多细节可以参考\Documentation/initrd.txt\文件,关于initrd到initramfs的进化(墙内镜像),可以参考IBM上的两篇文章:Linux2.6 内核的 Initrd 机制解析和Linux 初始 RAM 磁盘(initrd)概述. Initramfs
CONFIG_INITRAMFS_SOURCE
source
file(s)
space
relay
support
(formerly
relayfs)
如果你想将initramfs镜像直接嵌入内核(比如嵌入式环境或者想使用 EFI stub kernel),而不是通过lilo/grub这样的引导管理器加载,可以使用此选项,否则请保持空白.这个选项指明用来制作initramfs镜像的原料,可以是一个.cpio
文件,或一个
Initramfs
虚根目录(其下包含
\等子目录),或一个描述文件.细节可以参考\Documentation/early-userspace/README\文档.[注意]内核帮助文档说可以指定多个目录或文件是错误的,实际只能接受单一的目录或文件 User
ID
to
map
to
0
(user
root)
INITRAMFS_ROOT_UID
此选项仅在CONFIG_INITRAMFS_SOURCE中包含目录时才有效,将此值设为非零(例如\那么所有UID=37的文件在打包到initramfs镜像内时,其UID都将被设为\Group
ID
to
map
to
0
(group
root)
INITRAMFS_ROOT_GID
此选项仅在CONFIG_INITRAMFS_SOURCE中包含目录时才有效,将此值设为非零(例如\那么所有GID=37的文件在打包到initramfs镜像内时,其GID都将被设为\Support
initial
ramdisks
compressed
using
gzip
CONFIG_RD_GZIP
支持经过gzip压缩的ramdisk或cpio镜像 Support
initial
ramdisks
compressed
using
bzip2
CONFIG_RD_BZIP2
支持经过bzip2压缩的ramdisk或cpio镜像 Support
initial
ramdisks
compressed
using
LZMA
CONFIG_RD_LZMA
支持经过LZMA压缩的ramdisk或cpio镜像 Support
initial
ramdisks
compressed
using
XZ
CONFIG_RD_XZ
支持经过XZ压缩的ramdisk或cpio镜像
Support initial ramdisks compressed using LZO
CONFIG_RD_LZO
支持经过LZO压缩的ramdisk或cpio镜像 Built-in initramfs compression mode
选择initramfs镜像的压缩格式.\是兼容性最好的格式,但是压缩率却最低.\是目前渐渐流行的格式,压缩率高,解压速度也不慢. Optimize
CONFIG_CC_OPTIMIZE_FOR_SIZE
编译时优化内核尺寸(使用GCC的\而不是\参数编译),这会得到更小的内核,但是运行速度可能会更慢.主要用于嵌入式环境. Configure CONFIG_EXPERT
配置标准的内核特性(仅供专家使用).这个选项允许你改变内核的\标准\特性(比如用于需要\非标准\内核的特定环境中),仅在你确实明白自己在干什么的时候才开启. Enable CONFIG_UID16
允许对UID系统调用进行过时的16-bit包装,建议关闭 Sysctl
CONFIG_SYSCTL_SYSCALL
二进制sysctl接口支持.由于现在流行直接通过/proc/sys以ASCII明码方式修改内核参数(需要开启CONFIG_PROC_SYSCTL选项),所以已经不需要再通过二进制接口去控制内核参数,建议关闭它以减小内核尺寸. Load
all
symbols
for
debugging/ksymoops
syscall
support
16-bit
UID
system
calls
standard
kernel
features
(expert
users)
for
size
CONFIG_KALLSYMS
装载所有的调试符号表信息,会增大内核体积,仅供调试时选择 Include
all
symbols
in
kallsyms
CONFIG_KALLSYMS_ALL
在/proc/kallsyms中包含内核知道的所有符号,内核将会增大300K,仅在你确实需要的时候再开启 Enable CONFIG_PRINTK
允许内核向终端打印字符信息.如果关闭,内核在初始化过程中将不会输出字符信息,这会导致很难诊断系统故障.仅在你确实不想看到任何内核信息时选\否则请选\BUG() CONFIG_BUG
显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错误被忽略.建议仅在嵌入式设备或者无法显示故障信息的系统上关闭 Enable
CONFIG_ELF_CORE
内存转储支持,可以帮助调试ELF格式的程序,用于调试和开发用户态程序 Enable
CONFIG_PCSPKR_PLATFORM
主板上的蜂鸣器支持.主板上的蜂鸣器只能发出或长或短的\滴\或\嘟嘟\声,一般用于系统报警.不要和能够播放音乐的扬声器混淆.如果你的主板上没有就关闭,有的话(开机自检完成后一般能听到\滴\的一声)还是建议开启. Enable
full-sized
data
structures
for
core
PC-Speaker
support
ELF
core
dumps support
support
for
printk
CONFIG_BASE_FULL
在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能 Enable CONFIG_FUTEX
快速用户空间互斥(fast userspace mutexes)可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序 Enable CONFIG_EPOLL
eventpoll
support
futex
support
Epoll系列系统调用(epoll_*)支持,这是当前在Linux下开发大规模并发网络程序(比如Nginx)的热门人选,设计目的是取代既有POSIX select(2)与poll(2)系统接口,systemd依赖于它.建议开启. Enable
CONFIG_SIGNALFD
signalfd()系统调用支持,建议开启.传统的处理信号的方式是注册信号处理函数,由于信号是异步发生的,要解决数据的并发访问和可重入问题.signalfd可以将信号抽象为一个文件描述符,当有信号发生时可以对其read,这样可以将信号的监听放到select/poll/epoll监听队列中.systemd依赖于它. Enable
CONFIG_TIMERFD
timerfd()系统调用支持,建议开启.timerfd可以实现定时器功能,将定时器抽象为文件描述符,当定时器到期时可以对其read,这样也可以放到select/poll/epoll监听队列中.更多信息可以参考linux新的API signalfd、timerfd、eventfd使用说明.systemd依赖于它. Enable
CONFIG_EVENTFD
eventfd()系统调用支持,建议开启.eventfd实现了线程之间事件通知的方式,eventfd的缓冲区大小是sizeof(uint64_t),向其write可以递增这个计数器,read操作可以读取,并进行清零.eventfd也可以放到select/poll/epoll监听队列中.当计数器不是0时,有可读事件发生,可以进行读取. Use
CONFIG_SHMEM
完全使用shmem来代替ramfs.shmem是基于共享内存的文件系统(可以使用swap),在启用CONFIG_TMPFS后可以挂载为tmpfs供用户空间使用,它比简单的ramfs先进许多.仅在微型嵌入式环境中且没有swap的情况下才可能会需要使用原始的ramfs. Enable CONFIG_AIO
AIO
support
full
shmem
filesystem
eventfd()
system
call
timerfd()
system
call
signalfd()
system
call
开启POSIX异步IO支持.它常常被高性能的多线程程序使用,建议开启 Enable
CONFIG_PCI_QUIRKS
开启针对多种PCI芯片组的错误规避功能,仅在确定你的PCI芯片组确实没有没有任何bug时才关闭此功能.至于究竟哪些芯片组有bug,你可以直接打开\drivers/pci/quirks.c\文件查看.不确定的选\Embedded CONFIG_EMBEDDED
如果你是为嵌入式系统编译内核,可以开启此选项,这样一些高级选项就会显示出来.单独选中此项本身对内核并无任何改变. Kernel
Performance
Events
And
Counters system
PCI
quirk
workarounds
CONFIG_PERF_EVENTS
性能相关的事件和计数器支持(既有硬件的支持也有软件的支持).大多数现代CPU都会通过性能计数寄存器对特定类型的硬件事件(指令执行,缓存未命中,分支预测失败)进行计数,同时又丝毫不会减慢内核和应用程序的运行速度.这些寄存器还会在某些事件计数到达特定的阈值时触发中断,从而可以对代码进行性能分析. Linux Performance Event 子系统对上述特性进行了抽象,提供了针对每个进程和每个CPU的计数器,并可以被 tools/perf/ 目录中的\工具使用. Debug:
use
vmalloc
to
back
perf
mmap()
buffers
CONFIG_DEBUG_PERF_USE_VMALLOC 主要用于调试vmalloc代码. Enable
VM
event
counters
for
/proc/vmstat
CONFIG_VM_EVENT_COUNTERS
\/proc/vmstat\中包含了从内核导出的虚拟内存的各种统计信息.开启此项后可以显示较详细的信息(包含各种事件计数器),关闭此项则仅仅显示很简略的信息.主要用于调试和统计. Enable
CONFIG_SLUB_DEBUG
SLUB
debugging
support
SLUB调试支持,禁用后可显著降低内核大小,同时/sys/kernel/slab也将不复存在. Disable
CONFIG_COMPAT_BRK
禁用堆随机化(heap randomization)功能.堆随机化可以让针对堆溢出的攻击变得困难,但是不兼容那些古董级的二进制程序(2000年以前).如果你不需要使用这些古董程序,那么选\Choose SLAB allocator 选择内存分配管理器 SLAB CONFIG_SLAB
久经考验的slab内存分配器,在大多数情况下都具有良好的适应性. SLUB CONFIG_SLUB
SLUB与SLAB兼容,但通过取消大量的队列和相关开销,简化了slab的结构.特别是在多核时拥有比slab更好的性能和更好的系统可伸缩性. SLOB CONFIG_SLOB
SLOB针对小型系统设计,做了非常激进的简化,以适用于内存非常有限(小于64M)的嵌入式环境. SLUB
per
cpu
partial
cache
(Simple
Allocator)
(Unqueued
Allocator)
heap
randomization
CONFIG_SLUB_CPU_PARTIAL
让SLUB内存分配器使用基于每个CPU的局部缓存,这样可以加速分配和释放属于此CPU范围内的对象,但这样做的代价是增加对象释放延迟的不确定性.因为当这些局部缓存因为溢出而要被清除时,需要使用锁,从而导致延迟尖峰.对于需要快速响应的实时系统,应该选\服务器则可以选\Provide
system-wide
ring
of
trusted
keys
CONFIG_SYSTEM_TRUSTED_KEYRING
在内核中创建一个密钥环,从而允许向密钥环上添加受信任的密钥,主要用于内核模块的签名.如果你开启了CONFIG_MODULE_SIG,此项将被自动选中.不需要使用内核模块签名检查功能的应该选\Profiling CONFIG_PROFILING
添加扩展的性能分析支持,可以被OProfile之类的工具使用.仅用于调试目的. OProfile CONFIG_OPROFILE
OProfile性能分析工具支持,仅用于调试目的. OProfile
multiplexing
support
system
profiling support
CONFIG_OPROFILE_EVENT_MULTIPLEX OProfile multiplexing技术支持 Kprobes CONFIG_KPROBES
Kprobes是一个轻量级的内核调试工具,能在内核运行的几乎任意时间点进行暂停/读取/修改等操作的调试工具.仅供调试使用. Optimize
CONFIG_JUMP_LABEL
针对内核中某些\几乎总是为真\或者\几乎总是为假\的条件分支判断使用\goto\进行优化(在分支预测失败时会浪费很多时间在回退上,但是这种情况极少发生).很多内核子系统都支持进行这种优化.建议开启. Transparent CONFIG_UPROBES
Uprobes与Kprobes类似,但主要用于用户空间的调试. Stack Protector buffer overflow detection
GCC的\功能可以在函数开始执行时,在函数的返回地址末端设置一个敏感值,当函数执行完成要返回时,检查这个敏感值,看看是否存在溢出.如果有溢出则表明可能受到了堆栈溢出攻击,内核将通过panic来阻止可能的攻击.选项中的\表示关闭此功能,\表示启用此功能但是仅提供较弱
user-space
probes
very
unlikely/likely
branches
的保护(需要GCC-4.2及以上版本),\则表示提供较强的保护(需要GCC-4.9及以上版本) Enable
GCOV-based
kernel
profiling
CONFIG_GCOV_KERNEL
基于GCC的gcov(代码覆盖率测试工具)的代码分析支持,仅用于调试 Profile
CONFIG_GCOV_PROFILE_ALL
支持对整个内核进行分析.内核体积将会显著增大,并且运行速度显著减慢.
entire
Kernel
Enable loadable module support 可加载模块支持
Enable CONFIG_MODULES
打开可加载模块支持,可以通过\把内核模块安装在/lib/modules/中.然后可以使用 modprobe, lsmod, modinfo, insmod, rmmod 等工具进行各种模块操作. Forced
CONFIG_MODULE_FORCE_LOAD
允许使用\在不校验版本信息的情况下强制加载模块,这绝对是个坏主意!建议关闭. Module
CONFIG_MODULE_UNLOAD 允许卸载已经加载的模块 Forced
CONFIG_MODULE_FORCE_UNLOAD
允许强制卸载正在使用中的模块(rmmod -f),即使可能会造成系统崩溃.这又是一个坏主意!建议关闭. Module
CONFIG_MODVERSIONS
versioning
support
module
unloading unloading
module
loading
loadable
module
support
允许使用为其他内核版本编译的模块,可会造成系统崩溃.这同样是个坏主意!建议关闭. Source
checksum
for
all
modules
CONFIG_MODULE_SRCVERSION_ALL
为模块添加\字段,以帮助模块维护者准确的知道编译此模块所需要的源文件,从而可以校验源文件的变动.仅内核模块开发者需要它. Module
CONFIG_MODULE_SIG
在加载模块时检查模块签名,详情参见\Documentation/module-signing.txt\文件.[!!警告!!]开启此选项后,必须确保模块签名后没有被strip(包括rpmbuild之类的打包工具). Require
modules
to
be
validly
signed
signature
verification
CONFIG_MODULE_SIG_FORCE
仅加载已签名并且密钥正确的模块,拒绝加载未签名或者签名密钥不正确的模块
Automatically
CONFIG_MODULE_SIG_ALL
在执行\安装模块的时候,自动进行签名.否则你必须手动使用 scripts/sign-file 工具进行签名.
Which hash algorithm should modules be signed with?
选择对模块签名时使用的散列函数.建议使用强度最高的\算法.注意:所依赖的散列算法必须被静态编译进内核.对于\来说,就是CONFIG_CRYPTO_SHA512和CONFIG_CRYPTO_SHA512_SSSE3(如果你的CPU支持SSSE3指令集的话).
sign
all
modules
Enable the block layer 块设备支持
Enable CONFIG_BLOCK
the
block
layer
块设备支持,使用SSD/硬盘/U盘/SCSI/SAS设备者必选.除非你是某些特殊的嵌入式系统,否则没有理由不使用块设备. Block
layer
SG
support
v4
CONFIG_BLK_DEV_BSG
为块设备启用第四版SG(SCSI generic)支持.v4相比v3能够支持更复杂的SCSI指令(可变长度的命令描述块,双向数据传输,通用请求/应答协议),而且UDEV也要用它来获取设备的序列号.对于使用systemd的系统来说,必须选\对于不使用systemd的系统,如果你需要通过/dev/bsg/*访问块设备,建议开启此选项,否则(通过/dev/{sd*,st*,sr*})可以关闭. Block
layer
SG
support
v4
helper
lib
CONFIG_BLK_DEV_BSGLIB
你不需要手动开启此选项,如果有其他模块需要使用,会被自动开启. Block
layer
data
integrity
support
CONFIG_BLK_DEV_INTEGRITY
某些块设备可以通过存储/读取额外的信息来保障端到端的数据完整性,这个选项为文件系统提供了相应的钩子函数来使用这个特性.如果你的设备支持 T10/SCSI Data Integrity Field 或者 T13/ATA External Path Protection 特性,那么可以开启此选项,否则建议关闭. Block
layer
bio
throttling
support
CONFIG_BLK_DEV_THROTTLING
Bio Throttling 支持,也就是允许限制每个cgroup对特定设备的IO速率.细节可以参考\Documentation/cgroups/blkio-controller.txt\Advanced
CONFIG_PARTITION_ADVANCED
如果你想支持各种不同的磁盘分区格式(特别是与UEFI配合使用的GPT格式),务必选中此项. Acorn
CONFIG_ACORN_PARTITION
Acorn 操作系统使用的分区格式,请根据实际情况选择子项,这里省略
partition
support
partition
selection
Alpha OSF partition support
CONFIG_OSF_PARTITION Alpha 平台上使用的分区格式 Amiga
partition
table
support
CONFIG_AMIGA_PARTITION AmigaOS 使用的分区格式 Atari
partition
table
support
CONFIG_ATARI_PARTITION Atari OS 使用的分区格式 Macintosh
CONFIG_MAC_PARTITION
苹果的Macintosh平台使用的分区格式 PC
BIOS
(MSDOS
partition
tables)
support
partition
map
support
CONFIG_MSDOS_PARTITION
渐成历史垃圾,但目前依然最常见的DOS分区格式.除非你确信不使用此格式,否则必选.其下的子项根据实际情况选择. Windows
Logical
Disk
Manager
(Dynamic
Disk)
support
CONFIG_LDM_PARTITION
使用 Windows Logical Disk Manager 创建的分区格式.参见\Documentation/ldm.txt\SGI
CONFIG_SGI_PARTITION SGI 平台上使用的分区格式 Ultrix
partition
table
support
partition
support
CONFIG_ULTRIX_PARTITION
DEC/Compaq Ultrix 平台上使用的分区格式 Sun
partition
tables
support
CONFIG_SUN_PARTITION SunOS 平台上使用的分区格式
Karma
CONFIG_KARMA_PARTITION
Partition support
Rio Karma MP3 player 使用的分区格式 EFI
GUID
Partition
support
CONFIG_EFI_PARTITION
代表未来趋势,眼下正大红大紫的EFI GPT(GUID Partition Table)分区格式.建议开启.如果你在UEFI平台上安装则必须开启. SYSV68
partition
table
support
CONFIG_SYSV68_PARTITION
Motorola Delta 机器上使用的分区格式 IO Schedulers IO调度器(另一篇文章) Deadline
CONFIG_IOSCHED_DEADLINE
deadline调度器.简洁小巧(只有400+行代码),提供了最小的读取延迟.如果你希望尽快读取磁盘,而不介意写入延迟,那它是最佳选择.通常对于数据库工作负载有最佳的表现. CFQ
CONFIG_IOSCHED_CFQ
cfq(Complete Fair Queuing)调度器.努力在各内核线程间公平分配IO资源,适用于系统中存在着大量内核线程同时进行IO请求的情况.但对于只有少数内核线程进行密集IO请求的情况,则会出现明显的性能下降. CFQ
Group
Scheduling
support
I/O
scheduler
I/O
scheduler
CONFIG_CFQ_GROUP_IOSCHED
允许将CFQ和cgroup组合使用,也就是将每个cgroup看成一个整体,在各cgroup
之
间
进
行
IO
资
源
的
分
配
.
参
见
\Documentation/cgroups/blkio-controller.txt\文件.还可以参考一下《Linux内核精髓》中的\使用Block I/O控制器\一章.
BFQ
CONFIG_IOSCHED_BFQ
I/O scheduler
bfq(Budget Fair Queueing)调度器.这是一个基于CFQ调度器的改进版本,更适合于对交互性要求比较高的场合,比如桌面系统和实时系统.如果静态编译进内核,还支持和cgroup配合,实现分层调度(hierarchical scheduling). BFQ
hierarchical
scheduling
support
CONFIG_CGROUP_BFQIO
通过cgroup文件系统接口,允许将BFQ分层使用(类似CONFIG_CFQ_GROUP_IOSCHED),这个子系统的名字是\Default I/O scheduler
默认IO调度器.如果上述调度器都是模块,那么将使用最简单的内置NOOP调度器.NOOP(No Operation)调度器只是一个简单的FIFO队列,不对IO请求做任何重新排序处理(但还是会做一定程度的归并),适合于SSD/U盘/内存/SAN(Storage Area Networks)/虚拟机中的硬盘/iSCSI/硬RAID等无需寻道的存储设备,重点是可以节约CPU资源,但不适用于普通硬盘这样的需要依靠磁头来定位的设备.另外,有人说拥有TCQ/NCQ技术(能够自动重新排序)的硬盘也适合用NOOP调度器,这个说法其实并不那么合理,但笔者在此不敢断言,希望读者在严谨的测试之后再做定夺.
Processor type and features 中央处理器(CPU)类型及特性
DMA
CONFIG_ZONE_DMA
允许为寻址宽度不足32位的设备(也就是ISA和LPC总线设备)在物理内存的前16MB范围内(也就是传统上x86_32架构的ZONE_DMA区域)分配内存.不确定的选\内核中若有其它驱动(主要是某些老旧的声卡)需要它会自动选中此项.[提示]LPC总线通常和主板上的南桥物理相连,通常连接了一系列的传统设备:BIOS,PS/2键盘,PS/2鼠标,软盘,并口设备,串口设备,某些集成声卡,TPM(可信平台模块),等等.[题外话]x86_64已经没有ZONE_HIGHMEM了
memory
allocation
support
Symmetric CONFIG_SMP
multi-processing support
SMP(对称多处理器)支持,如果你有多个CPU或者使用的是多核CPU就选上. Support
CONFIG_X86_X2APIC
x2apic支持.具有这个特性的CPU可以使用32位的APIC ID(可以支持海量的CPU),并且可以使用MSR而不是mmio去访问 local APIC (更加高效).可以通过\命令检查你的CPU是否支持这个特性.注意:有时候还需要在BIOS中也开启此特性才真正生效.[提示]在虚拟机中,还需要VMM的支持(例如qemu-kvm). Enable
CONFIG_X86_MPPARSE
如果是不支持acpi特性的古董级SMP系统就选上.但现今的64位系统早都已经支持acpi了,所以可以安全的关闭. Support
for
extended
(non-PC)
x86
platforms
MPS
table x2apic
CONFIG_X86_EXTENDED_PLATFORM
支持非标准的PC平台: Numascale NumaChip, ScaleMP vSMP, SGI Ultraviolet. 绝大多数人都遇不见这些平台. Numascale
CONFIG_X86_NUMACHIP
Numascale NumaChip 平台支持 ScaleMP CONFIG_X86_VSMP ScaleMP vSMP 平台支持 SGI
CONFIG_X86_UV
SGI Ultraviolet 平台支持 Intel
Low
Power
Subsystem
Support Ultraviolet
vSMP NumaChip
CONFIG_X86_INTEL_LPSS
为 Intel Lynx Point PCH 中的 Intel Low Power Subsystem 技术提供支持.这个芯片组主要是为采用LGA1150的Haswell处理器提供支持. Single-depth
CONFIG_SCHED_OMIT_FRAME_POINTER
使用简化的 /proc/
CONFIG_HYPERVISOR_GUEST
如果这个内核将在虚拟机里面运行就开启,否则就关闭. Enable
CONFIG_PARAVIRT
半虚拟化(paravirtualization)支持. paravirt-ops
CONFIG_PARAVIRT_DEBUG
仅供调试.paravirt-ops是内核通用的半虚拟化接口. Paravirtualization CONFIG_PARAVIRT_SPINLOCKS
半虚拟化的自旋锁支持.开启之后运行在虚拟机里的内核速度会加快,但是运行在物理CPU上的宿主内核运行效率会降低(最多可能会降低5%).请根据实际情况选择. Xen CONFIG_XEN
Xen半虚拟化技术支持 Enable
Xen
debug
and
tuning
parameters
in
debugfs
guest
support
layer
for
spinlocks debugging
paravirtualization
code
guest
support
WCHAN
output
CONFIG_XEN_DEBUG_FS
为Xen在debugfs中输出各种统计信息和调整选项.对性能有严重影响.仅供调试. KVM
Guest
support
(including
kvmclock)
CONFIG_KVM_GUEST
KVM客户机支持(包括kvmclock). Paravirtual
steal
time
accounting
CONFIG_PARAVIRT_TIME_ACCOUNTING
允许进行更细粒度的 task steal time 统计.会造成性能的略微降低.仅在你确实需要的时候才开启. Memtest CONFIG_MEMTEST
为内核添加内存测试功能,也就是添加\内核引导参数以支持对内存进行\体检\仅在你确实知道这是什么东西并且确实需要的时候再开启.否则请关闭.
Processor family
处理器系列,请按照你实际使用的CPU选择.\表示通用于所有x86-64平台,而不是针对特定类型的CPU进行优化. Supported
CONFIG_PROCESSOR_SELECT 支持的CPU厂商,按实际情况选择. Enable CONFIG_DMI
允许扫描DMI(Desktop Management Interface)/SMBIOS(System Management BIOS)以获得机器的硬件配置,从而对已知的bug bios进行规避.具体涉及到哪些机器可参见\文件.除非确定你的机器没有bug,否则请开启此项. GART
CONFIG_GART_IOMMU
为较旧的AMD Athlon64/Opteron/Turion/Sempron CPU提供GART IOMMU支持.图形地址重映射表(Graphics Address Remapping Table)可以将物理地址不连续的系统内存映射成看上去连续的图形内存交给GPU使用,是一种挖CPU内存补GPU内存机制,这种机制也可以被认为是一种\伪IOMMU\缺乏地址空间隔离和访问控制).开启此选项以后,在内存大于3G的系统上,传统的32位总线(PCI/AGP)
IOMMU
support
DMI
scanning
processor
vendors
的设备将可以使用完全DMA的方式直接访问原本超出32位寻址范围之外的系统内存区域.具体方法是:通过编程让设备在受GART控制的显存区域工作,然后使用GART将这个地址映射为真实的物理地址(4GB以上)来实现的.USB/声卡/IDE/SATA之类的设备常常需要它.开启此选项之后,除非同时开启了CONFIG_IOMMU_DEBUG选项或者使用了\内核引导参数,否则此特性仅在条件满足的情况下(内存足够大且确有支持GART的设备)激活.由于较新的AMD CPU都已配备了AMD IOMMU(应该使用CONFIG_AMD_IOMMU),故而仅建议在内存大于3G的老式AMD系统上选\IBM
Calgary
IOMMU
support
CONFIG_CALGARY_IOMMU
IBM xSeries/pSeries 系列服务器的 Calgary IOMMU 支持. Should
Calgary
be
enabled
by
default?
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT
开启此选项表示默认启用Calgary特性,关闭此选项表示默认禁用Calgary特性(可以使用\内核引导参数开启).
Enable Maximum number of SMP Processors and NUMA Nodes CONFIG_MAXSMP
让内核支持x86_64平台所能支持的最大SMP处理器数量和最大NUMA节点数量.主要用于调试目的. Maximum CONFIG_NR_CPUS
支持的最大CPU数量,每个CPU要占8KB的内核镜像,最小有效值是\最大有效值是\注意:对于多核CPU而言,每个核算一个. SMT
(Hyperthreading)
scheduler
support
number
of
CPUs
CONFIG_SCHED_SMT
Intel超线程技术(HyperThreading)支持. Multi-core CONFIG_SCHED_MC
针对多核CPU进行调度策略优化
scheduler
support
Preemption Model 内核抢占模式 No
Forced
Preemption
(Server)
CONFIG_PREEMPT_NONE
禁止内核抢占,这是Linux的传统模式,可以得到最大的吞吐量,适合服务器和科学计算环境 Voluntary
Kernel
Preemption
(Desktop)
CONFIG_PREEMPT_VOLUNTARY
自愿内核抢占,通过在内核中设置明确的抢占点以允许明确的内核抢占,可以提高响应速度,但是对吞吐量有不利影响.适合普通桌面环境的 Preemptible CONFIG_PREEMPT
主动内核抢占,允许抢占所有内核代码,对吞吐量有更大影响,适合需要运行实时程序的场合或者追求最快响应速度的桌面环境. Reroute
for
broken
boot
IRQs
Kernel
(Low-Latency
Desktop)
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS
这是一个对某些芯片组bug(在某些情况下会发送多余的\boot IRQ\的修复功能.开启此选项之后,仅对有此bug的芯片组生效.要检查哪些芯片组有此bug可以查看
\drivers/pci/quirks.c\
文
件
中
的
\函数. Machine CONFIG_X86_MCE
MCE(Machine Check Exception)支持.让CPU检测到硬件故障(过热/数据错误)时通知内核,以便内核采取相应的措施(如显示一条提示信息或关机等).更多信息可以\mcelog\看看.可以通过\mce /proc/cpuinfo\检查CPU是否支持此特性,若支持建议选中,否则请关闭.当然,如果你对自己的硬件质量很放心,又是桌面系统的话,不选也无所谓. Intel
CONFIG_X86_MCE_INTEL
MCE
features
Check
/
overheating
reporting
Intel CPU 支持 AMD
CONFIG_X86_MCE_AMD AMD CPU 支持 Machine
check
injector
support
MCE
features
CONFIG_X86_MCE_INJECT MCE注入支持,仅用于调试 Enable
support
for
16-bit
segments
CONFIG_X86_16BIT
如果你需要使用Wine运行那些古董级的16位保护模式程序,就选\否则选\Dell CONFIG_I8K
Dell Inspiron 8000 笔记本的 System Management Mode 驱动(i8k).该驱动可以读取CPU温度和风扇转速,进而帮助上层工具控制风扇转速.该驱动仅针对 Dell Inspiron 8000 笔记本进行过测试,所以不保证一定能适用于其他型号的Dell笔记本. CPU
CONFIG_MICROCODE
CPU的微代码更新支持,建议选中.CPU的微代码更新就像是给CPU打补丁,用于纠正CPU的行为.更新微代码的常规方法是升级BIOS,但是也可以在Linux启动后更新.比如在Gentoo下,可以使用\安装microcode-ctl服务,再把这个服务加入boot运行级即可在每次开机时自动更新CPU微代码.其他Linux系统可以参考这个帖子. Intel
microcode
loading
support
microcode
loading
support
laptop
support
CONFIG_MICROCODE_INTEL Intel CPU 微代码支持 AMD
microcode
loading
support
CONFIG_MICROCODE_AMD AMD CPU 微代码支持
Early
CONFIG_MICROCODE_INTEL_EARLY
load microcode
支持从initrd镜像首部加载微代码,以便尽可能早的更新CPU微代码.即使在initrd首部并未嵌入微代码也不会造成问题,所以\是安全的.不过你真的需要吗?笔者认为你一般并不需要:) /dev/cpu/*/msr CONFIG_X86_MSR
/dev/cpu/*/msr 设备支持.也就是允许用户空间的特权进程(使用rdmsr与wrmsr指令)访问x86的MSR寄存器(Model-Specific Register).MSR的作用主要用于调试,程序执行跟踪,性能及状态监控,以及触发特定的CPU特性(依CPU的不同而不同).msrtool工具可以转储出MSR的内容.不确定的可以选\/dev/cpu/*/cpuid CONFIG_X86_CPUID
/dev/cpu/*/cpuid 设备支持.可以通过cpuid命令获得详细的CPU信息(CPUID).不确定的可以选\Enable
1GB
pages
for
kernel
pagetables
-
CPU
information
support
-
Model-specific
register
support
CONFIG_DIRECT_GBPAGES
允许内核页表使用大小为1GB的Hugepages并进行直线映射(linear mapping),需要高端CPU的支持(可以用\命令检查).这可以减小页表缓存(Translation Lookaside Buffer)的压力,从而提升系统的性能,这对于拥有海量内存并且运行某些特定应用(PosgreSQL,MySQL,Java,Memcached,KVM,Xen...)的系统来说比较有意义.如果你的CPU支持,可以选\Numa
Memory
Allocation
and
Scheduler
Support
CONFIG_NUMA
开启 NUMA(Non Uniform Memory Access) 支持.虽然说集成了内存控制器的CPU都属于NUMA架构.但事实上,对于大多数只有一颗物理CPU的个人电脑而言,即使支持NUMA架构,也没必要开启此特性.可以参考SMP/NUMA/MPP体系结构对比.
此外,对于不支持\虚拟NUMA\或\虚拟NUMA\被禁用的虚拟机(即使所在的物理机是NUMA系统),也应该关闭此项. Old
style
AMD
Opteron
NUMA
detection
CONFIG_AMD_NUMA
因为AMD使用一种旧式的方法读取NUMA配置信息(新式方法是CONFIG_X86_64_ACPI_NUMA),所以如果你使用的是AMD多核CPU,建议开启.不过,即使开启此选项,内核也会优先尝试CONFIG_X86_64_ACPI_NUMA方法,仅在失败后才会使用此方法,所以即使你不能确定CPU的类型也可以安全的选中此项. ACPI
CONFIG_X86_64_ACPI_NUMA
使用基于 ACPI SRAT(System Resource Affinity Table) 技术的NUMA节点探测方法.这也是检测NUMA节点信息的首选方法,建议选中. NUMA
CONFIG_NUMA_EMU 仅供开发调试使用 Maximum
NUMA
Nodes
(as
a
power
of
2)
emulation
NUMA
detection
CONFIG_NODES_SHIFT
允许的最大NUMA节点数.需要注意其计算方法:最大允许节点数=2CONFIG_NODES_SHIFT.也就是说这里设置的值会被当做2的指数使用.取值范围是[1,10],也就最多允许1024个节点. Memory model
内存模式.\主要用来支持内存热插拔,相比其他两个旧有的内存模式,代码复杂性也比较低,而且还拥有一些性能上的优势,对某些架构而言是唯一的可选项.其他两个旧有的内存模式是:\Discontiguous Memory\和\Flat Memory\Sparse
Memory
virtual
memmap
CONFIG_SPARSEMEM_VMEMMAP
对于64位CPU而言,开启此选项可以简化pfn_to_page/page_to_pfn的操作,从而提高内核的运行效率.但是在32位平台则建议关闭.更多细节可以参考这个帖子.
Enable to assign a node which has only movable memory CONFIG_MOVABLE_NODE
允许对一个完整的NUMA节点(CPU和对应的内存)进行热插拔.一般的服务器和个人电脑不需要这么高级的特性. Allow
for
memory
hot-add
CONFIG_MEMORY_HOTPLUG
支持向运行中的系统添加内存.也就是内存热插支持. Allow
for
memory
hot
remove
CONFIG_MEMORY_HOTREMOVE
支持从运行中的系统移除内存.也就是内存热拔支持. Allow
for
balloon
memory
compaction/migration
CONFIG_BALLOON_COMPACTION
允许 balloon memory 压缩/迁移.内存的Ballooning技术是指虚拟机在运行时动态地调整它所占用的宿主机内存资源,该技术在节约内存和灵活分配内存方面有明显的优势,目前所有主流虚拟化方案都支持这项技术(前提是客户机操作系统中必须安装有相应的balloon驱动).由于内存的动态增加和减少会导致内存过度碎片化,特别是对于2M尺寸的连续大内存页来说更加严重,从而严重降低内存性能.允许balloon内存压缩和迁移可以很好的解决在客户机中使用大内存页时内存过度碎片化问题.如果你打算在虚拟机中使用大内存页(huge page),那么建议开启,否则建议关闭. Allow
CONFIG_COMPACTION
允许对大内存页(huge pages)进行压缩.主要是为了解决大内存页的碎片问题.建议在使用大内存页的情况下开启此项,否则建议关闭. Page
CONFIG_MIGRATION
migration
for
memory
compaction
允许在保持虚拟内存页地址不变的情况下移动其所对应的物理内存页的位置.这主要是为了解决两个问题:(1)在NUMA系统上,将物理内存转移到相应的节点上,以加快CPU与内存之间的访问速度.(2)在分配大内存页的时候,可以避免碎片问题. Enable CONFIG_BOUNCE
为那些不能直接访问所有内存范围的驱动程序开启bounce buffer支持.当CONFIG_ZONE_DMA被开启后,这个选项会被默认开启(当然,你也可以在这里手动关闭).这主要是为了那些不具备IOMMU功能的PCI/ISA设备而设,但它对性能有些不利影响.在支持IOMMU的设备上,应该关闭它而是用IOMMU来代替. Enable CONFIG_KSM
KSM(Kernel Samepage Merging)支持:周期性的扫描那些被应用程序标记为\可合并\的地址空间,一旦发现有内容完全相同的页面,就将它们合并为同一个页面,这样就可以节约内存的使用,但对性能有不利影响.推荐和内核虚拟机KVM(Documentation/vm/ksm.txt)或者其他支持\特性的应用程序一起使用.KSM并不默认开启,仅在应用程序设置了\标记,并且 /sys/kernel/mm/ksm/run 被设为\的情况下才会生效. Low
address
space
to
protect
from
user
allocation
KSM
for
page
merging
bounce
buffers
CONFIG_DEFAULT_MMAP_MIN_ADDR
2009年,内核曾经爆过一个严重的NULL指针漏洞,由于其根源是将NULL指针映射到地址\所致,所以从2.6.32版本以后,为了防止此类漏洞再次造成严重后果,特别设置了此选项,用于指定受保护的内存低端地址范围(可以在系统运行时通过 /proc/sys/vm/mmap_min_addr 进行调整),这个范围内的地址禁止任何用户态程序的写入,以从根本上堵死此类漏洞可能对系统造成的损害.但内核这种强加的限制,对于需要使用vm86系统调用(用于在保护模式的进程中模拟8086的实模式)或者需要映射此低端地址空间的程序(bitbake,dosemu,qemu,wine,...)来说,则会造成不兼容,不过目前这些程序的
新版本都进行了改进,以适应内核的这种保护.一般情况下,\是个明智的选择,或者你也可以保持默认值. Enable
recovery
from
hardware
memory
errors
CONFIG_MEMORY_FAILURE
在具备MCA(Machine Check Architecture)恢复机制的系统上,允许内核在物理内存中的发生数据错误的情况下,依然坚强的纠正错误并恢复正常运行.这需要有相应的硬件(通常是ECC内存)支持.有ECC内存的选,没有的就别选了. HWPoison
CONFIG_HWPOISON_INJECT 仅用于调试. Transparent
CONFIG_TRANSPARENT_HUGEPAGE
大多数现代计算机体系结构都支持多种不同的内存页面大小(比如x86_64支持4K和2M以及1G[需要cpu-flags中含有\大于4K的内存页被称为\大页\Hugepage).TLB(页表缓存)是位于CPU内部的分页表(虚拟地址到物理地址的映射表)缓冲区,既高速又很宝贵(尺寸很小).如果系统内存很大(大于4G)又使用4K的内存页,那么分页表将会变得很大而难以在CPU内缓存,从而导致较高的TLB不命中概率,进而降低系统的运行效率.开启大内存页支持之后,就可以使用大页(2M或1G),从而大大缩小分页表的尺寸以大幅提高TLB的命中率,进而优化系统性能.传统上使用大内存页的方法是通过Hugetlbfs虚拟文件系统(CONFIG_HUGETLBFS),但是hugetlbfs需要专门进行配置以及应用程序的特别支持.所以从2.6.38版本开始引入了THP(Transparent Hugepages),目标是替代先前的Hugetlbfs虚拟文件系统(CONFIG_HUGETLBFS).THP允许内核在可能的条件下,透明的(对应用程序来说)使用大页(huge pages)与HugeTLB,THP不像hugetlbfs那样需要专门进行配置以及应用程序的特别支持.THP将这一切都交给操作系统来完成,也不再需要额外的配置,对于应用程序完全透明,因而可用于更广泛的应用程序.这对于数据库/KVM等需要使用大量内存的应用来说,可以提升其效能,但对于内存较小(4G或更少)的个人PC来说就没啥必要了.详见\Documentation/vm/transhuge.txt\文档.
Hugepage
Support
pages
injector
Transparent Hugepage Support sysfs defaults
设置 /sys/kernel/mm/transparent_hugepage/enabled 文件的默认值.\表示总是对所有应用程序启用透明大内存页支持,\表示仅对明确要求该特性的程序启用.建议选\Cross
CONFIG_CROSS_MEMORY_ATTACH
交叉内存支持,也就是process_vm_readv()和process_vm_writev()系统调用支持.从而允许有权限的进程直接读取/写入另外一个进程的地址空间.现在它们只用于openMPI快速进程通信,也可以用于调试程序.未来也许还会有其他用途. Enable cleancache driver to cache clean pages if tmem is present CONFIG_CLEANCACHE
Cleancache可以被看作是内存页的\Victim Cache\受害者缓存),当回收内存页时,先不把它清空,而是把其加入到内核不能直接访问的\transcendent memory\中,这样支持Cleancache的文件系统再次访问这个页时可以直接从\memory\加载它,从而减少磁盘IO的损耗.目前只有zcache和XEN支持\不过将来会有越来越多的应用支持.开启此项后即使此特性不能得到利用,也仅对性能有微小的影响,所以建议开启.更多细节请参考\Documentation/vm/cleancache.txt\文件.
Enable frontswap to cache swap pages if tmem is present CONFIG_FRONTSWAP
Frontswap是和Cleancache非常类似的东西,在传统的swap前加一道内存缓冲(同样位于\memory\中).目的也是减少swap时的磁盘读写.CONFIG_ZSWAP依赖于它,建议开启. Compressed CONFIG_ZSWAP
ZSWAP是一个放置在swap前面的压缩缓存,它可以将需要换出的页压缩存放在内存中的压缩池里,这样在压缩池没有满的时候,可以避免使用真正的swap设备.当压缩池满的时候,则把最老的页解压后写入swap设备.压缩池默认是内存总量的20%(/sys/module/zswap/parameters/max_pool_percent).ZSWAP不仅提升了
cache
for
swap
pages
Memory
Support
swap的整体性能,也变相的增加了swap空间.选中此项后,可以通过\内核引导参数开启此功能. Memory
allocator
for
compressed
pages
CONFIG_ZSMALLOC
zsmalloc压缩内存分配器主要用于给zram提供支持,建议与CONFIG_ZRAM同开关.参考:3种内存压缩方案对比. Use
page
table
mapping
to
access
object
in
zsmalloc
CONFIG_PGTABLE_MAPPING
zsmalloc默认使用基于内存复制的对象映射方法来访问跨越不同页面的区域,但如果某些架构(例如ARM)执行虚拟内存映射的速度快于内存复制,那么应该将此项选\这将导致zsmalloc使用页表映射而不是内存复制来进行对象的映
射
.
你
可
以
在
你
的
系
统
上
使
用
\脚本来测试这两种方法的速度差异.在x86_64平台上,UBUNTU此项默认选\但作者本人未经实验确认是否合理. Check
for
low
memory
corruption
CONFIG_X86_CHECK_BIOS_CORRUPTION
低位内存脏数据检查,即使开启此选项,默认也不会开启此功能(需要明确使用\内核引导选项).这些脏数据通常被认为是有bug的BIOS引起的,默认每60秒(可以通过memory_corruption_check_period内核参数进行调整)扫描一次0-64k(可以通过memory_corruption_check_size内核参数进行调整)之间的区域.这种检查所占用的开销非常小,基本可以忽略不计.如果始终检查到错误,则可以通过\内核引导参数来避免使用这段内存.一般没必要选中,如果你对BIOS不放心,带着它试运行一段时间,确认没问题之后再去掉. Set
the
default
setting
of
memory_corruption_check
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
设置memory_corruption_check的默认值,选中表示默认开启(相当于使用\内核引导选项),不选中表示默认关闭.
Amount of low memory, in kilobytes, to reserve for the BIOS CONFIG_X86_RESERVE_LOW
为BIOS设置保留的低端地址(默认是64K).内存的第一页(4K)存放的必定是BIOS数据,内核不能使用,所以必须要保留.但是有许多BIOS还会在suspend/resume/热插拔等事件发生的时候使用更多的页(一般在0-64K范围),所以默认保留0-64K范围.如果你确定自己的BIOS不会越界使用内存的话,可以设为\否则请保持默认值.但是也有一些很奇葩的BIOS会使用更多的低位内存,这种情况下可以考虑设为\以保留所有640K的低位内存区域. MTRR
(Memory
Type
Range
Register)
support
CONFIG_MTRR
MTRR(Memory type range registers)是CPU内的一组MSR(Model-specific registers),其作用是告诉CPU以哪种模式(write-back/uncachable)存取各内存区段效率最高.这对于AGP/PCI显卡意义重大,因为write-combining技术可以将若干个总线写传输捆绑成一次较大的写传输操作,可以将图像写操作的性能提高2.5倍或者更多.这段代码有着通用的接口,其他CPU的寄存器同样能够使用该功能.简而言之,开启此选项是个明智的选择. MTRR
CONFIG_MTRR_SANITIZER
MTRR cleanup的意思是将MTRR的连续输出转为离散的输出,这样X驱动就可以在其中添加writeback项,算是一种优化措施.建议开启.可以使用\来限制最大的连续块尺寸. MTRR
cleanup
enable
value
(0-1)
cleanup
support
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT
\表示默认开启CONFIG_MTRR_SANITIZER特性,相当于使用\表示默认关闭CONFIG_MTRR_SANITIZER特性,相当于使用\建议设为\MTRR
cleanup
spare
reg
num
(0-7)
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT
这里设定的值等价于使用内核引导参数\中的\也就是告诉内核reg0N可以被清理或改写(参见\文件).在多数情况下默认值是\其含义是 /proc/mtrr 中的 reg01 将会被映射.一般保持其默认值即可.修改此项的值通常是为了解决某些MTRR故障. x86
CONFIG_X86_PAT
PAT(Page Attribute Table)是对MTRR的补充,且比MTRR更灵活.如果你的CPU支持PAT(grep pat /proc/cpuinfo),那么建议开启.仅在开启后导致无法正常启动或者显卡驱动不能正常工作的情况下才需要关闭. x86
architectural
random
number
generator
PAT
support
CONFIG_ARCH_RANDOM
Intel 从 Ivy Bridge 微架构开始(对于Atom来说是从Silvermont开始),在CPU中集成了一个高效的硬件随机数生成器(称为\Mountain\技术),并引入了一个新的x86指令\RDRAND\可以非常高效的产生随机数.此选项就是对此特性的支持. Supervisor CONFIG_X86_SMAP
SMAP(Supervisor Mode Access Prevention)是Intel从Haswell微架构开始引入的一种新特征,它在CR4寄存器上引入一个新标志位SMAP,如果这个标志为1,内核访问用户进程的地址空间时就会触发一个页错误,目的是为了防止内核因为自身错误意外访问用户空间,这样就可以避免一些内核漏洞所导致的安全问题.但是由于内核在有些时候仍然需要访问用户空间,因此intel提供了两条指令STAC和CLAC用于临时打开/关闭这个功能,反复使用STAC和CLAC会带来一些轻微的性能损失,但考虑到增加的安全性,还是建议开启. EFI CONFIG_EFI
EFI/UEFI支持.如果你打算在UEFI/EFI平台上安装Linux(2010年之后的机器基本都已经是UEFI规格了),那么就必须开启此项(开启后也依然可以在传统的BIOS机器上启动).UEFI启动流程与传统的BIOS相差很大.虽然Linux受到了所
runtime
service
support
Mode
Access
Prevention
谓\安全启动\问题的阻挠(已经解决),但是UEFI依然将迅速一统江湖.[提示]在UEFI平台上安装Linux的关键之一是首先要用一个支持UEFI启动的LiveCD以UEFI模式启动机器. EFI
CONFIG_EFI_STUB
EFI stub 支持.如果开启此项,就可以不通过GRUB2之类的引导程序来加载内核,而直接由EFI固件进行加载,这样就可以不必安装引导程序了.不过这是一个看上去很美的特性,由于EFI固件只是简单的加载内核并运行,所以缺点有三:(1)不能在传统的BIOS机器上启动.(2)不能给内核传递引导参数.(3)不能使用intrd.不过,针对后两点的解决办法是:使用CONFIG_CMDLINE和CONFIG_INITRAMFS_SOURCE.
更
多
细
节
可
参
考
stub
support
\Documentation/x86/efi-stub.txt\文档. Enable
seccomp
to
safely
compute
untrusted
bytecode
CONFIG_SECCOMP
允许使用SECCOMP技术安全地运算非信任代码.通过使用管道或其他进程可用的通信方式作为文件描述符(支持读/写调用),就可以利用SECCOMP把这些应用程序隔离在它们自己的地址空间.这是一种有效的安全沙盒技术.systemd也强烈建议开启它.除非你是嵌入式系统,否则不要关闭. Enable
-fstack-protector
buffer
overflow
detection
CONFIG_CC_STACKPROTECTOR
开启GCC的\命令行选项,以使用GCC中的编译器堆栈保护技术.这样可以有效的防御以堆栈溢出为代表的缓冲区溢出攻击,不过系统的运行速度也会受到一些影响.服务器之类强调安全的场合建议开启,个人PC之类的就不是很有必要了. Timer frequency
内核时钟频率.对于要求快速响应的场合,比如桌面环境,建议使用1000Hz,而对于不需要快速响应的SMP/NUMA服务器,建议使用250Hz或100Hz或300Hz(主要处理多媒体数据).
kexec CONFIG_KEXEC
system call
提供kexec系统调用,可以不必重启而切换到另一个内核(不一定必须是Linux内核),不过这个特性并不总是那么可靠.如果你不确定是否需要它,那么就是不需要. kernel
CONFIG_CRASH_DUMP
当内核崩溃时自动导出运行时信息的功能,主要用于调试目的.更多信息请参考\Documentation/kdump/kdump.txt\文件. kexec
CONFIG_KEXEC_JUMP
kexec jump 支持.这是对CONFIG_KEXEC的增强功能,仅在你确实明白这是干啥的情况下再开启,否则请关闭. Physical
address
where
the
kernel
is
loaded jump
crash
dumps
CONFIG_PHYSICAL_START
加载内核的物理地址.如果内核不是可重定位的(CONFIG_RELOCATABLE=n),那么bzImage会将自己解压到该物理地址并从此地址开始运行,否则,bzImage将忽略此处设置的值,而从引导装载程序将其装入的物理地址开始运行.仅在你确实知道自己是在干什么的情况下才可以改变该值,否则请保持默认. Build
CONFIG_RELOCATABLE
使内核可以在浮动的物理内存位置加载,主要用于调试目的.仅在你确实知道为什么需要的时候再开启,否则请关闭. Support
CONFIG_HOTPLUG_CPU
热插拔CPU支持(通过 /sys/devices/system/cpu 进行控制). Set
default
setting
of
cpu0_hotpluggable
for
hot-pluggable
CPUs
a
relocatable
kernel
CONFIG_BOOTPARAM_HOTPLUG_CPU0
开启/关闭此项的意思是设置\的默认值为\开启此项表示默认将CPU0设置为允许热插拔. Debug
CONFIG_DEBUG_HOTPLUG_CPU0 仅用于调试目的. Compat
CONFIG_COMPAT_VDSO
是否将VDSO(Virtual Dynamic Shared Object)映射到旧式的确定性地址.如果Glibc版本大于等于2.3.3选\否则就选\Built-in
CONFIG_CMDLINE_BOOL
将内核引导参数直接编进来.在无法向内核传递引导参数的情况下(比如在嵌入式系统上,或者想使用 EFI stub kernel),这就是唯一的救命稻草了.如果你使用grub之类的引导管理器,那么就可以不需要此特性. Built-in CONFIG_CMDLINE
将要编译进内核的引导参数字符串. Built-in
command
line
overrides
boot
loader
arguments
kernel
command
string
kernel
command
line
VDSO
support
CPU0
hotplug
CONFIG_CMDLINE_OVERRIDE
开启此项表示完全忽略引导加载器传递过来的参数,并仅仅只使用CONFIG_CMDLINE所指定的参数.通常情况下建议关闭此项,除非你确定引导加载器在传递内核引导参数的时候不能正常工作.
Power management and ACPI options 电源管理和ACPI选项
Suspend CONFIG_SUSPEND
\休眠到内存\支持.也就是系统休眠后,除了内存之外,其他所有部件都停止工作,重开机之后可以直接从内存中恢复运行状态.要使用此功能,你需要
to
RAM
and
standby
正在阅读:
Linux 3.10内核编译选项04-19
旅游地产:club - med模式分析(2014)11-27
宽容的力量作文800字07-02
5-“学中玩、玩中学”-主报告05-22
大学生企业管理实习总结05-25
健康促进学校评价参考标准04-05
青海省建筑工程资料管理软件表格大全06-29
short english04-14
必修四期末复习2(向量)09-08
1、企业基本情况表11-09
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 内核
- 编译
- 选项
- Linux
- 3.10
- 全国计算机软考软件设计师考前练习及答案
- 电力安全工作规程习题集(线路部分)
- 五年级语文作业配套卷四
- 综合布线实训指导书-23 - 图文
- 《党史知识大讲堂》第一讲:中国共产党的创立
- 职业健康管理办法
- 勉县汽轮机规程新版 - 图文
- 格里菲斯大学毕业生起薪怎么样
- 测量学试题和答案3
- 09级学年论文选题情况表 - 图文
- 2014秋人教版新目标英语八年级上期末单元强化过关复习专题六Unit
- 公司职业健康工作汇报
- 环境工程微生物学 备课笔记 新
- 创新机构编制管理 服务经济社会发展
- SMA13S、SUP20、SUP25沥青砼施工
- 永煤科技信息动态第2期(总第88期)1.15
- 高空防坠落管理方案 - 图文
- 银行贷款业务流程及审批控制管理办法
- 江门市蓬江区建筑工程质量检测站安全带检验委托单
- 南京市住宅物业管理条例