-
LINUX
内核配置
MAKE
MENUCONFIG
菜单详解
<
/p>
我们在
linux
内核裁剪过程中,进入
内核所在目录,键入
make menuconfig
就会
看到一堆
的配置菜单,
它们具体代表什么含义呢?我们该如何取
舍呢?这里把近期收集到的一些信息
做一个总结。
1
、
General setup
代码成熟度选项,它又有子项:
1.1
、
prompt for
development and/or incomplete code/drivers
该选项是对那些还在测试阶段的代码,
驱动模块等的支持。
一般应该选这个选项,
除非你只
是想使用
LINUX
中已经完全稳定的东西。但这样有时对系统性能影响挺大。
1.2
、
Cross-
compiler tool prefix
交叉编译工具前缀,例如:
Cross-compiler
tool prefix
值为
: (arm-linux-)
1.3
、
Local version
- append to kernel release
内核显示的版本信息,
填入
64
p>
字符以内的字符串,
你在这里填上的字符口串可以用
uname
-a
命令看到。
1.4
、
Automatically append version information to the
version string
自动在版本字符串后面添加版本信息
,
编译时需要有
perl
以及
git
仓库支持
1.5
、
Kernel
compression mode (Gzip) --->
有
< br>四
个
选
项
,
这
个
选
项
是
说
内
核
p>
镜
像
要
用
的
压
缩
模
式
,
回
车
< br>一
下
,
可
以
看
到
gzip,bzip2,lz
ma,lxo,
一般可以按默认的
gzip,
< br>如果要用
bzip2,lzma,lxo
要先装上支持<
/p>
1.6
、
Support for
paging of anonymous memory (swap)
使用交换分区或交换文件来做为虚拟内存,一定要选上。
1.7
、
System V IPC
表示系统的进程间通信
Inter Process Comm
unication
,它用于处理器在程序之间同步和交
换信息
,如果不选这项,很多程序运行不起来,必选。
1.8
、
POSIX Message
Queues
POSIX
标准的消息队列,它同样是
一种
IPC
。建议你最好将它选上
1.9
、
BSD Process
Accounting
用户进程访问内核时将进程信息写入文件中。<
/p>
通常主要包括进程的创建时间
/
创建者<
/p>
/
内存占
用等信息。建议最好选上。
p>
1.10
、
BSD Process
Accounting version 3 file format
使用新的第
三版文件格式
,
可以包含每个进程的
P
ID
和其父进程的
PID,
但是不兼容
老版本的
文件格式。
1.11
、
Export
task/process statistics through netlink
(EXPERIMENTAL)
通过
netlink
接口向用户空间导出任务
/
进程的统计信息<
/p>
,
与
BSD Process Acco
unting
的不
同之处在于这些统计信息在整个任务
/
进程生存期都是可用的
Enable per-task delay accounting
(EXPERIMENTAL)
在统计信息
中包含进程等候系统资源
(cpu,IO
同步
< br>,
内存交换等
)
所花费的时间<
/p>
Enable extended
accounting over taskstats (EXPERIMENTAL)
在统计信息中包含扩展进程所花费的时间
1.12
、
Auditing support
审记支持,用于和内核的某些子模块同时工作,例如
Security
Enhanced Linux
。只有选择
此项及它的子项,才
能调用有关审记的系统调用。
1.13
、
Enable
system-call auditing support
支持对系统调用的审计
1.14
、
IRQ
subsystem --->
中断子系统
Support sparse irq numbering
<===
支持稀有的中断编号,关闭
1.15
、
RCU
Subsystem --->
非对称读写锁系统
是一种高性能的
kernel
锁机制,适用于读多写少环境
RCU Implementation (Tree-based
hierarchical RCU) --->
RCU
实现机制
Tree(X) Tree-based
hierarchical RCU
基本数按等级划分
Enable tracing for RCU
激活跟踪
(32) Tree-
based hierarchical RCU fanout value
基本数按等级划分分列值
Disable tree-based hierarchical RCU
auto-balancing
1.16
、
< > Kernel
.config support
这个选项允许
.conf
ig
文件(即编译
LINUX
时的配置
文件)保存在内核当中
1.17
、
(17) Kernel
log buffer size (16 => 64KB, 17 => 128KB)
1.18
、
[ ] Control
Group support --->
cgroups
支持,
文档资料
,
cgroups
主要作用是给进程
分组,
并可以动态调控进程组
的
CPU
占用率。比如
A
进程分到
apple
组,给予
20%CPU
占用率,
E
进程分
easy
组,给
予
50%CPU
占用率,最高
100%
。我目前没有此类应用场景,用到时会选择将其编译进去。
CPU bandwidth provisioning for
FAIR_GROUP_SCHED
此选项允许
用户定义的
CPU
带宽速率(限制)在公平的组调度运行的任务
。组没有限
制设置被认为是无约束和运行没有限制。
Group scheduling for SCHED_RR/FIFO
此功能可以让您显式地分配真实的
CPU
带宽任务组。
1.19
、
-*-
Namespaces support --->
命名空间支持,允许服务器为不同的用户信息提供不
同的用户名空间服务
[*] UTS namespace
通用终端系统的命名空间。它允许容器,比如
Vservers
利用
UTS
命名空间来为不同的
服
务器提供不同的
UTS
。如果不清楚,选
N
。
[*]
IPC namespace
IPC
命名空间,不确定可以不选
[*] User namespace (EXPERIMENTAL)
User
命名空间,不确定可以不选
[*] PID Namespaces
PID
命名空间,不确定可以不选
[*] Network namespace
1.20
、
Automatic
process group scheduling
自动进程组调度
1.21
、
[ ] enable
deprecated sysfs features to support old userspace
tools
1.22
、
-*-
Kernel->user space relay support (formerly
relayfs)
在某些文件系统上
(
比如
debugfs )
提供从内核
空间向用户空间传递大量数据的接口,我
目前没有此类应用场景
1.23
、
[*]
Initial RAM filesystem and RAM disk
(initramfs/initrd) support
用于在真正内核装
载前,做一些操作(俗称两阶段启动),比如加载
module
,
mount
一些
非
root
分区,提供灾难恢复
shell
环境等,
资料
,我是期望直接从
kernel
image
直接
启动,所以没选它
?
1.24
、
Initramfs source file(s)
< br>initrd
已经被
initramfs
取代
,
如果你不明白这是什么意思
,
请保持空白
1.25
、
Optimize for
size
这个选项将在
GCC
命令后用
“
-
Os ”
代替
“
-
O2 ″参数,这样可以得到更小
的内核。没
必要选。选上了有时会产生错误的二进制代码。
1.26
、
Enable full-
sized data structures for core
:在内核中使用全尺
寸的数据结构
.
禁用它将使得某些内核的数据结构减小以节约内
存
,
但是将会降低性能。
1.27
、
Enable futex
support
:快速用户空间互斥体可以使线程串行化以避免竞态条件
,
也
提高了响应速度
.
禁用它将导致内核不能正确的运行基于
glibc
的程序。
1.28
、
Enable
eventpoll
support
:支持事件轮循的系统调用。
1.29
、
Use full
shmem filesystem
:除非你在很少的内存且不使用交换内存时,才不要
选
择这项。后面的这四项都是在编译时内存中的对齐方式,
0
表示
编译器的默认方式。
使用内存对齐能提高程序的运行速度,
但是会增加程序对内存的使用量。
内核也是一组程序呀。
Enable VM event counters for /proc/vmstat
:允许在
/proc/vmstat
中包含虚拟内存
事件记数器。
[*]
Disable heap randomization
禁用随机
heap
(
heap
堆是一个
应用层的概念,即堆对
CPU
是不可见的,它的实现方式有多<
/p>
种,
可以由
OS
实现,
也可以由运行库实现
,
如果你愿
意,
你也可以在一个栈中来实现一个堆)
1.30
、
Choose SLAB
allocator (SLAB) --->
选择内存分配管理器(强烈推荐使
用
SLUB
)
1.31
、
[ ]
Configure standard kernel features (for small
systems) --->
这个选项可以让内核的基本选项和设置无效或者扭
曲。
这是用于特定环境中的,
它允许“非
标准”内核。你要是选它,你一定要明白自己在干什么。这是为了编译某
些特殊用途的内
核使用的,例如引导盘系统。配置标准的内核特性
(
为小型系统
)
Enable 16-bit UID system calls
:允许对
UID
系统调用进行过时的
16-bit
包装。
Sysctl
syscall support
几乎使用不到这一选项,不选它可以轻微使内核变小
Include all symbols in kallsyms
:在
kallsyms
中包含内核知道的所有符
号
,
内核将
会增大
300K
。
Enable
support
for
printk
:允许内核向终端打印字符信息
,
在需要诊断内核为什么不
能运行时选择。
BUG()
support
:显示故障和失败条件
(BUG
和
WARN),
禁用它将可能导致隐含的错误被
p>
忽略。
Enable ELF
core dumps
:内存转储支持
,
可以帮助调试
ELF
格式的程序。
1.32
、
[*]
Profiling support
不选剖面支持,
用一
个工具来扫描和提供计算机的剖面图。
支持系统评测
(对于大多
数用户
来说并不是必须的)
1.33
、
OProfile
system profiling
OProfile
评测和性能监控工具
1.35
、
[ ]
OProfile multiplexing support (EXPERIMENTAL)
1.34
、
Kprobes
调试内核除非开发人员,否则不选
?1.35
、
Optimize
trace point call sites
1.36
、
GCOV-based
kernel profiling
[ ] Enable
gcov-based kernel profiling
不选
2
、
Enable loadable
module support
2.1 Forced module
loading
允许强制加载模块
2.2 Module unloading
允许卸载已经加载的模块
2.3 Forced module unloading
允许强制卸载正在使用中的模块
(
比较危险
< br>)
这个选项允许你强行卸除模块,
即使内核认为这
不安全。内核将会立即移除模块,而不管是否有人在使用它(用
rmmod
-f
命令)。这主要
是
针对开发者和冲动的用户提供的功能。如果不清楚,选
N
。
p>
2.4 Module
versioning support
有时候,你需要编译模块。选这项会添加一
些版本信息,来给编译的模块提供独立的特性,
以使不同的内核在使用同一模块时区别于
它原有的模块。
这有时可能会有点用。
如果不清楚,
选
N
。允许使用其他内核版本的模块
(
可能会出问题
)
2.5 Source checksum for all modules
p>
为所有的模块校验源码
,
如果你不是自己编
写内核模块就不需要它这个功能是为了防止你在
编译模块时不小心更改了内核模块的源代
码但忘记更改版本号而造成版本冲突。如果不清
楚,选
N
。
3
、
Enable the
block layer
块设备支持
,
使用硬盘
/USB/SCSI
设备者必选这选项使得块设备可以从内核移除。
如果
不
选,
那么
blockdev
文件将不可用,
一些文件系统比如
ext3
将不可用。
这个选项会禁止
SCSI
字符设备和
USB
p>
储存设备,如果它们使用不同的块设备。选
Y
,除非你知道你不需要
挂载硬盘和其他类似的设备。不过此项无可选项
3.1 Support for
large (2TB+) block devices and files
仅
在使用大于
2TB
的块设备时需要
3.2 Block layer SG support
v4
通用
scsi
块设备第
4
版支持
3.3 Block layer data integrity support
块设备数据完整性支持
?
3.4 Block layer bio
throttling support
可用于限制设备的
IO
速度
3.5 Partition Types
Advanced partition selection
如果你想要在
linux
上使用一个在其他的介质
上运行着操作系统的硬盘时,选择
Y
,如
果你不确定时可以选
N
3.6 IO Schedulers
IO
调度器
I
/
O
是输入输出带宽控制,主要针对硬盘,是核心的必须的东西。这里提供
了三个
IO
调度器。
Deadline I/O scheduler
使用轮询的调度器
,
简洁小巧
,
提供了最小的读取延迟和尚佳的吞吐
量
,
特别适合于读取
较多的环境
(
比如数据库
)Deadline
I
/
O
调度器简单而又
紧密,在性能上和抢先式调度器不
相上下,在一些数据调入时工作得更好。至于在单进程
I
/
O
磁盘调
度上,它的工作方式几
乎和抢先式调度器相同,因此也是一个好的选择。
CFQ I/O
scheduler
使用
QoS
策略为所有任务分配等量的带宽
,
避免进程被饿死并实现了较低的延迟
,
可以
< br>认为是上述两种调度器的折中
.
适用于有大量进程的多用
户系统
CFQ
调度器尝试为所有进程
提
供相同的带宽。它将提供平等的工作环境,对于桌面系统很合适。
Default I/O scheduler
(CFQ)
默认
IO
p>
调度器我这样理解上面三个
IO
调度器:<
/p>
抢先式是传统的,
它的原理是一有响应,
就优先考虑调度。
如果你
的硬盘此时在运行一
项工作,它也会暂停下来先响应用户。
期限式则是:
所有的工作都有最终期限,在这之
前必须完成。
当用户有响应时,
它会根据自己的工作能
否完成,
来决定是否响应用户。
CFQ
则是平均分配资源,
不管你的响应多急,
也不管它的工
作量是多少,它都是平均分配,
一视
同仁的。
< br>
( *) Deadline
( ) CFQ
( ) No-op
4
、
Processor type
and features
(处理器类型及特点)
?
4.1 DMA memory allocation
support
该选项允许小于
32
位地址的设备使用前
16MB
的地址空间,如果不缺定的话,
选
Y
4.2
Symmetric multi-processing support
对称多处理器支持
,
如果你有多个
p>
CPU
或者使用的是多核
CPU
就选上
.
此时
Real Time Clock Support
选项必须开启
,
选项必须关闭如果
你选
N
,内核将会在单个或者多个
CPU
的机器上运行,但是只会使用一个
CPU
。如果你选
Y
,
内核可以在很多
(但
不是所有)
单
CPU
的机器上运行,在
这样的机器,
你选
N
会使内核运行
p>
得
更
快
。
注
意
如
果
你
选
Y
,
然
后
在
Processor
family
选
项
中
选
择
“586
〃
or
“Pentium” ,内核将不能运行在
486
构架的机器上。同样的,多
CPU
的运行于
PPro
构架
上的内核也无法在
Pentium
系列的板上运行。
4.3 Enable MPS table
MPS
多处理器规范,不选
4.4 Support for big SMP
systems with more than 8 CPUs
默认情况下为不选
4.5 Support for extended (non-PC) x86
platforms
如果选的话,你将可以选择支持如下
3
2
位
X86
的平台。
< br>
AMD
Elan
,
NUMAQ
(IBM/Sequent)
,
RDC R-321x
SoC
,
SGI 320/540 (Visual
Workstation)
,
STA2X11-based
(e.g.
Northville)
,
Summit/EXA
(IBM
x440)
,
Unisys
ES7000
IA32
series
Moorestown MID devic
es
如果你有这样的系统,或者你想要构建一个这样的通用的分布式,
< br>选择
Y
,否则选择
N
?
4.6 intel MID platform
support
Medfield MID platform
4.7 RDC R-321x SoC
嵌入式相关,不选
4.8 Support non-standard 32-bit SMP
architectures
非标准的
32
位
SMP
结构支持,不选
4.9 Eurobraille/Iris
poweroff module
来自
urobraill
e
的
iris
机器不支持
APM
和
ACPI
来适时关
闭自己,此模块在内核中起到这
一作用。这是用于
urobra
ille
的
iris
机子,不确定的话
,不选。
4.10
Single-depth WCHAN output
跟
proc
相关的最好不要关,选
Y
?
4.11 paravirt-
ops debugging
4.12
Memtest
这一选项使内核增加一个“memtest”(内核测试)的参数,
这将允许设置
memtest
。如果
你
不知道如何回答这个问题,选择
N
4.13
Processor
family
(Pentium-Pro)
< br>处理器系列
,
请按照你实际使用的
CPU
选择这里是处
理器的类型。
这
里的信息主要目的是用来优化。
为了让内核能够在所有
X86<
/p>
构架的
CPU
上运
行(虽然不是
最佳速度),在这你可以选
< br>386
。内核不会运行在比你选的构架还要老的机
器上。
比如,
你选了
Pentium
构架来优化内核,
它将不能在
486
构架上运行。
如果你不清楚,
选
< br>386
。
(
)
386
(
)
486(
)
586/K5/5x86/6x86/6x86MX
(
)
Pentium-Classic(
)
Pentium-
MMX(
系统默认选项
) Pentium-Pro ( )
Pentium-II/Celeron(pre-Coppermine)( )
Pentium-
III/Celeron(Coppermine)/Pentium-III
Xeon
(
)
Pentium
M(
)
Pentium-4/Celeron(P4-based)/Pentium-4
M/older
Xeon
(
)
K6/K6-II/K6-III(
)
Athlon/Duron/K7(
)
Opteron/Athlon64/Hammer/K8(
)
Crusoe(
)
Efficeon(
)
Winchip-C6(
)
Winchip-2/Winchip-2A/Winchip-3(
)
GeodeGX1(
)
Geode
GX/LX(
)
CyrixIII/VIA-C3(
)
VIA
C3-2 (Nehemiah)( ) VIA
C7 ( ) Core 2/newer Xeon( ) Intel Atom
?
4.14
Generic
x86
support
这一选项针对
x86
系列的
CPU
使用更多的常规优
化。如果
你在上面一项选的是
i386
、
i586
之类的才选这个通用
x86
支持
,
如果你的
CPU
能够在上述
family
p>
中找到就别选除了对上面你选择的
X86
CPU
进行优化,它还对更多类型
X86
CPU
的进行优化。
这将会使内核在其他的
X86
CPU
上运行得更好。
这个选项提供了对
X86
系列
CPU
最大的兼容性,用来支持一些少见的
x86
构架的
CPU
。如果你的
CPU<
/p>
能够在上面的
列表中找到,就里就不用选了。
4.15 PentiumPro memory
ordering errata workaround
旧的
PentiumPro
多处理器系统有勘误能力,
可能会导致在少数的情况下,违反
x86
的
排序标准内存操作。
启用此选项将尝试解决一些
(但不是全
部)
此类问题,
但将以
spinloc
k
和内存为代价。
4.16 HPET Timer Support
(
HPET
时钟支持)
允许内核使用
HPET
。
HPET
是替代
8
254
芯片的新一代定时器
,i686
及以上级别的主板都
支持
,
可以安全的
选上。
但是,
HEPT
只会在支持它的
平台和
BIOS
上运行。
如果不支持,
8254
将会激活。选
N
,将继续使用
8254
时钟。
4.17 Enable DMI
scanning
选择
Y
除非你
已经证明当进入
DMI
时不影响你的配置。
PNP BIOS
代码需要这一项的支持。
4.18 (8) Maximum number of
CPUs
支持的最大
CPU
数
p>
,
每增加一个内核将增加
8K
体积
4.19
SMT (Hyperthreading) scheduler support
< br>支持
Intel
的超线程
(HT
)
技术超线程调度器在某些情况下将会对
Intel
Pentium 4 HT
系列
有较好的支持。如果你不清楚,
选
N
4.20 Multi-
core scheduler support
针对多核
< br>CPU
进行调度策略优化多核调度机制支持,
双核的
p>
CPU
要选。
多核心调度在某些情
况下将会对多核的
CPU
系列有较好的支持。如
果你不清楚,选
N
4.21
Fine granularity task level IRQ time accounting <
/p>
如果不确定的话,选
N
,默认为不选。<
/p>
4.22
Preemption Model (Voluntary Kernel Preemption
(Desktop))
内核抢占模式一
些优先级很高的
程序可以先让一些低优先级的程序执行,即使这些程序是在核心态下执行。
从而减少内核
潜伏期,
提高系统的响应。
当然在一些特殊的点的内核是不可抢
先的,
比如内
核中的调度程序自身在执行时就是不可被抢先的。
这个特性可以提高桌面系统、
实时系统的
性能。
No Forced
Preemption (Server)
适合服务器环境的禁止内核抢占
这是传统的
LINUX
抢先式模型,
针对于高吞吐量设
计。
它同样在很多时候会提供很好的响应,<
/p>
但是也可能会有较长的延迟。
如果你是建立服务
< br>器或者用于科学运
算,选这项,或者你想要最大化内核
的原始运算能力,而不理会调度上
的延迟。
(
默认选项
)
Voluntary Kernel Preemption (Desktop)
适合普通桌面环境的自愿内核抢占
这个选项通过向内核添加更多的“清晰抢先
点”来减少内核延迟。
< br>这些新的抢先点以降低吞吐量的代价,
来降低内核的最大延迟,
< br>提供
更快的应用程序响应。这通过
允许低优先级的进程自动抢先来响应事件,即使进程在内核
中进行系统调用。
这使得应用程序运行得更“流畅”,
即使系统已经是高负荷运转。
p>
如果你
是为桌面系统编译内核,选这项。
Preemptible Kernel (Low-Latency
Desktop)
适合运行实时程序的主动内核抢占
这个选项通过使所有内核代码
(非致命部分)
编
译为“可抢先”来降低内核延迟。
这通过允许低优先级进程进行强制抢先来
响应事件,
即使
这些进程正在进行系统调用或者未达到正常的“
抢先点”。
这使得应用程序运行得更加“流
畅”即使系统已
p>
经是高负荷运转。代价是吞吐量降低,内核运行开销增大。选这项
如果你
是为桌面或者嵌入式系统编译内核,
需要非常低的延迟。
如果你要最快的响应,
选第三
项。我认为万物是平衡的,低延迟意味着系统运行不稳定,因为过多来响应用户的要求,
所
以我选第二个。
4.23 Reroute for broken boot IRQs
防止同时收到多个
boot IRQ (
中断
)
时,系统混乱
?
4.24 Machine Check /
overheating reporting
让
CPU
检测到系统故障时通知内核
,
以便内核采取相应的措施
(
如过热关机等
)
Intel MCE features
AMD MCE
features
Support for old Pentium 5
/ WinChip machine checks
4.25 Machine check injector support
让
CPU
检测到系统故障时通知内核
,
以便内核采取相应的措施
p>
(
如过热关机等
)
(不明白
此项与上一项的区别,原来的配置中是做为模块加入内核的)
< br>
?
4.26
Enable VM86 support
这一选项用于支持在像
< br>DOSEMU
一样的程序在
x86
的处理器上运行
16
位的
legac
y
代码。也
可能像
XFree86
p>
这样的软件通过
BIOS
初始化声卡的时候
会用到。
4.27
Toshiba Laptop support
东芝笔记本模块支持,不选
4.28 Dell laptop support
Dell
笔记本模块支持,不选
4.29 Enable X86 board
specific fixups for reboot
修正某些旧
x86
主板的重起
bug,
这种主板基本绝种了,我认为可以不选择这一项
4.30 dev/cpu/microcode - microcode
support
是否支持
Intel IA32
架构的
CPU
。这个选项将让你可以更新
In
tel IA32
系列处理器的
微代码,显然你需要到网上去下
载最新的代码,
LINUX
不提供这些代码。当然你还必须在文
件系统选项中选择
/dev file system
support
才能正常的使用它。如果你把它译为模块
,
它将是
microcode
。
IA32
主要用于高于
4GB
的内存。详见下面的“高内存选项”。使
用不随
Linux
内核发行的
IA32
微代码
,
你必
需有
IA32
微代码二进制文件
,
p>
仅对
Intel
的
CPU
有效。
Intel
microcode patch loading support
AMD microcode patch loading support
4.31 /dev/cpu/*/msr - Model-specific
register support
是否打开
p>
CPU
特殊功能寄存器的功能。
这个选项桌
面用户一般用不到,
它主要用在
Intel
的嵌入式
CPU
中的,
这个寄存器
的作用也依赖与不同的
CPU
类型而有所不同,
一般可以用来
改变一些
CPU
原有物理结构的用途,
但不同的
CPU
用途差别也很大。
在多
cpu
系统中让
特权
CPU
访问
x86
的
MSR
寄存器。
4.32 /dev/cpu/*/cpuid -
CPU information support
是否打开记录
CPU
相关信息功能。这会在
< br>/dev/cpu
中建立一系列的设备文件,用以让
过程
去访问指定的
CPU
。能从
/dev/
cpu/x/cpuid
获得
CPU
的
唯一标识符
(CPUID)
。
4.33 High Memory Support
(4GB)
LINUX
能够在
< br>X86
系统中使用
64GB
的物
理内存。但是,
32
位地址的
X86<
/p>
处理器只能支
持到
4GB
大小的内存。
这意味着,
如果你有大于
4GB
的物理内存,
并非都能被内核“永久映
射”。
这些非永久映射内存就称为“高阶内存”。
如果你编译的内核永远都不会运行在
高于
1G
内存的机器上,选
OFF
(默认选项,适合大多数人)。这将会产生一个“3GB/1GB”
的内存空间划分
,
3GB
虚拟内存被内核映射以便每个处理器能够“看到”3
GB
的虚拟内存空
间,这样仍然能够保持
4GB
的虚拟内存空间被内核使用,更多的物理内存能够被永久映
射。
如果你有
1GB
p>
-
4GB
之间的物理内存,
选
4GB
选项。
如果超过
p>
4GB
,
那么选择
64GB
。
这将打开
Intel <
/p>
的物理地址延伸模式(
PAE
)。
PAE
将在
IA32
处理器上执行
3
个层次的内
存页面。<
/p>
PAE
是被
LINUX
< br>完全支持的,现在的
Intel
处理器
< br> (Pentium Pro
和更高级的
)
都
能运行
PAE
模式。<
/p>
注意:
如果你选
64GB
,
那么在不支持
PAE
的
p>
CPU
上内核将无法启动。
p>
你
机器上的内存能够被自动探测到,
或者你
可以用类似于“mem=256M”的参数强制给内核指定
内存大小。
< br> 4GB
选这项如果你用的是
32
位的处理器,
内存在
1-4GB
之间。
64GB
选
这项如果你用的是
32
位的处理器,内存大于
< br>4GB
。
( )
off (X) 4GB ( ) 64GB
4.34 Memory model (Flat Memory)
一般选
其他选项涉及内存热插拔
(X) Flat Memory
(平坦内存模式)
这个选项允许你改变内核在内部管理内存的一些方式。大多数用户在这只会有一个选
项:
Flat
Memory
。这是普遍的和正确的选项。一些用户的机器有更高级的特性,比如
NUMA <
/p>
和内存热拔插,那将会有不同的选项。
Discontiguou
s
Memory
(非接触式内存模式)是一个
更成熟、更好的测试系统。但是对于内存热拔插系统不太合适,会被“Sparse
Memory”代
替。如果你不清楚“Sparse
Memory”和“Discontiguous
Memory”的区别,选后者。如果
不清楚,就选
Flat
Memory
。
Sparse Memory
(稀疏内存模式)
这对某些系统是唯一选项,包括内存热拔插系统。这正
常。对于其他系统,这将会被
Discontiguous
M
emory
选项代替。这个选项提供潜在的更好的特性,可以降低代码复杂度,
但是它是新的模式,需要更多的测试。如果不清楚,选择“Discontiguous
Memory” 或
“Flat
Memory”。
4.35
Allow for memory compaction
4.36 Page migration
(选择
Y
)
Enable KSM for page merging
(4096) Low address space to protect
from user allocation
4.37
Enable recovery from hardware memory errors
选择
Y
4.38 Transparent Hugepage Support
Transparent Hugepage Support sysfs
defaults
e
(默认选项)
4.39 Cross Memory Support
4.40 Enable cleancache driver to cache
clean pages if tmem is present
4.41
Enable frontswap to cache swap pages if tmem is
present
(这三部分不太了解)
4.42 Allocate 3rd-level
pagetables from highmem
在内存很多
(
大于
4G)
的机器上将用户空间的页表放到高位内存区
,
以节约宝贵的
低端内存
。
4.43 Check for low memory corruption
低位内存脏数据检查,
默认是每
60
秒检查一次。
一般这种脏数据
是因某些
Bios
处理
不当引起的。
4.44 (64) Amount of low
memory, in kilobytes, to reserve for the BIOS
4.45 Math emulation
数学协处理器仿真
,486DX
以上的
cpu
就不要选它了
4.46 MTRR (Memory Type Range Register)
support
(内存类型区域寄存器)
在
Intel P6
系列处理器
(Pentium Pro, Pentium
II
和更新的
)
上,
MTRR
将会用来规
定和控制处理器访问某段内存区域
的策略。
如果你在
PCI
或者
AGP
总线上有
VGA
卡,
这将非
常有用。可以提升图像的传送速度
< br>2.5
倍以上。选
Y
,会生成文
件
/proc/mtrr
,它可以用来
操纵
你的处理器的
MTRR
。典型地,
X
server
会用到。这段代码有着通用的接口,其他
CPU
的寄存
器同样能够使用该功能。Cyrix 6×86,
6×86MX
和
M
II
处理器有
ARR
,它和
MTRR
有着类似的功能。
AMD K6-2/ K6-3
p>
有两个
MTRR
,
Centaur C6
有
8
个
MCR
允许复合写入。
所有这些处理器都支持这
段代码,你可以选
Y
如果你有以上处理器。选
< br>Y
同样可以修正
SMP
BIO
S
的问题,
它仅为第一个
CPU
提供
MTRR
,
而不
为其他的提供。
这会导致各种各样的问题,
所以选
Y
是明智的。你可以安全地选
Y
,即使你的机器没有
MTRR
。这会给内核增加
9KB
。打
开它可以提升
PCI/AGP
总线上的显卡
2
倍以上
的速度
,
并且可以修正某些
BIOS<
/p>
错误。
4.47 MTRR cleanup support
M
TRR
清理(
2.6.27
内核新增功
能,不确定可以不选)
MTRR cleanup
enable value (0-1)
MTRR cleanup
spare reg num (0-7)
x86 PAT support
x86 architectural random number
generator
4.48 EFI
runtime service support
(
EFI<
/p>
启动支持)
这里允许内核在
EFI
平台上使用储存于
EFI
固件中的系统设置启动。
这也允许内核在运<
/p>
行时使用
EFI
的相关服务。这个选项只
在有
EFI
固件的系统上有用,它会使内核增加
8KB
。
另外,
你必须使用最
新的
ELILO
登录器才能使内核采用
EFI
的固件设置来启动
(
GRUB
和
LILO
完全不知道
EFI
是什么东西)。即使你没有
EFI
,却选了这个选项,内核同样可以启动。大
家应该用的是
GRUB
,所以选上这个也没什么用。除非你的系统支持
E
FI
(一种可代替传统
BIOS
的技术
)否则不选。
4.49
Enable seccomp to safely compute untrusted
bytecode
只有嵌入式系统可以不选
4.50 Enable -fstack-
protector buffer overflow detection (EXPERIMENTAL)
4.51 Timer frequency (1000
HZ)
内核时钟频率桌面
1000
服务器
100
或
250,
允许设置时钟频率。
这是用户定义的时
钟中断频率
100HZ-1000
HZ
,不过
100
HZ
对服务器和
NUMA<
/p>
系统更合适,它们不需要很快
速的响应用户的要求,
因为时钟中断会导致总线争用和缓冲打回。
注意在
S
MP
环境中,
时钟
中断由变量
NR_CPUS * Hz
定义在每个
CPU
产生。
其实和前面的抢先式进
程差不多,就
是多少频率来响应用户要求。我选了
250HZ<
/p>
的。要快点的可以选
1000HZ
的。但
是还是那句
话,一切是平衡的。
机器过快响应你,它自己的活就
不知道做得好不好了。
(
)
100
HZ100
HZ
是传统的对服务器、
SMP
和
NUMA
的系统选项。这些系统有
比较多的处理器,可以在中断较
集中的时候分担中断
( )
250 HZ250
HZ
对服务器是一个好的折衷的选项,它同样在
SMP
和
NUMA
系统上体现出良好的反应速度。
( ) 300 HZ(X)
1000 HZ1000 HZ
对于桌面和其他需要
快速事件反
应的系统是非常棒的。
4.52 kexec system call(kexec
系统调用
)
kexec<
/p>
是一个用来关闭你当前内核,然后开启另一个内核的系统调用。它和重启很像,
但是它不访问系统固件。
由于和重启很像,
你可以
启动任何内核,
不仅仅是
LINUX
。
kexec
这个名字是从
exec
系统调用来的。它只是一个进程,可以确定硬件是否正确关闭,
Linus
本人都没话说,估计是受害不浅。我们当然不能上当,选
N
!提供
kexec
系
统调用
,
可以不
必重启而切换到另一个
内核,如果需要就选择,对大多数用户来说并不需要
.
4.53 kernel crash dumps
内核崩溃时,
dump
运行时信息。就算
crash
了,我也不会去调试内核的
core dump
4.54 (0x1000000) Physical
address where the kernel is loaded
4.55 Build a relocatable kernel
官方说明
(建立一个移动的内核,并增加
10%
的内核尺寸,运行时会被丢弃),我认为没
实质性的作用
4.56 (0x100000) Alignment
value to which kernel should be aligned
4.57 Support for hot-
pluggable CPUs
对
SMP
< br>休眠和热插拔
CPU
提供支持
4.58 Compat VDSO support
如果
Glibc
版本大于等于
2.3.
3
就不选
,
否则就选上,目前的版本基
本上都大于
2.3.3
如果
你运行的是
最新的
glibc
(
GNU
C
函数库)版本(
2.3.3
p>
或更新),选
N
,这样可以移除高
阶的
VDSO
映射,使用随机的
VDSO
。
4.59
Built-in kernel command line
(
不选
)
5
、
Power
management and ACPI options
5.1
、
Power
Management support
5.2
、
Power
Management Debug Support
不想调试
ACPI
这个你现在可以勾掉,不勾也没事,稍侯会在
kernel-h
acking
这一节勾掉调试,这里也就
没
5.3
、
Suspend to
RAM and standby
待机
5.4
、
Hibernation
(aka 'suspend to disk')
休眠
5.5
、
Run-time PM
core functionality
5.6
、
ACPI
(Advanced Configuration and Power Interface)
Support --->
见附
1
5.7
、
SFI (Simple
Firmware Interface) Support --->
5.8
、
APM (Advanced
Power Management) BIOS support --->
选
acpi
就不用
apm
,一般你也只用
acpi
&
5.9
、
CPU Frequency
scaling --->
[*] CPU
Frequency scaling
[ ] Enable
CPUfreq debugging <===
我不需要调试
CPUfreq
< > CPU frequency translation
statistics
Default
CPUFreq
governor
(performance) --->
<===
默认用
performance
高性能的
CPU
调频方式
-*-
'performance' governor
< >
'powersave ' governor
<>
'userspace ' governor for userspace frequency
scaling
<> 'ondemand ' cpufreq
policy governor <===
周期性的考察
CPU
负载并自动的动
态调整
cpu
频率
,我只用
performance
<> 'conservative'
cpufreq governor
*** CPUFreq
processor drivers ***
< > Processor Clocking P-stat driver
<*> ACPI Processor P-States driver
< > AMD Mobile K6-2/K6-3 PowerNow !
< > AMD Mobile Athlon/Duron PowerNow
!
< > AMD Opteron/Athlon64 PowerNow
!
< > Cyrix MediaGX /NatSemi Geode
Suspend Modulation
< > Intel
Enhanced SpeedStep (deprecated)
< >
Intel Speedstep on ICH-M chipsets (ioport
interface)
< > Intel Pentium 4
clock modulation
< > Transmeta
LongRun
< > VIA Cyrix III Longhaul
5.10
、
CPU idle PM
support
5.11
、
Cpuidle
Driver for Intel Processors
6
、
Bus options(PCI
etc.)
6.1
、
PCI
support
(这个必须选)