Ubuntu成长历程-内核配置menuconfig详解(三)

来源:互联网 发布:录音软件免费下载 编辑:程序博客网 时间:2024/06/06 02:24

Ubuntu成长历程-内核配置menuconfig详解(三)

     

      Ubuntu成长历程-内核配置menuconfig详解(三)

                                              ---Processor type and features

  这部分的内容主要和CPU类型功能有关,一般来讲不需要怎么设定,如果是特殊场合或者是想要为自己的硬件量身定制一个内核的话,还是有必要了解其中一些选项的含义。

  申明:本人为Linux初学者,如有不对,欢迎大家指出,邮件或者留言,谢谢!

        转载请注明出处

        OS:Ubuntu 10.04 KERNEL:2.6.34.1

—————————————————————————————————————————————————

[*] Tickless System (Dynamic Ticks)
##非固定频率系统,这项技术能让新内核运行的更有效率,并且更省电
[] High Resolution Timer Support
##支持高频率时间发生器,如果硬件不兼容,则这个选项只会增大内核(大多数个人PC并没有这个)
[*] Symmetric multi-processing support不选
##对称多处理器支持,如果你有多个CPU或者使用的是多核CPU就选上.此时    "Enhanced Real
Time Clock Support"选项必须开启,"Advanced Power Management"选项必须关闭
如果你选N,内核将会在单个或者多个CPU的机器上运行,但是只会使用一个CPU。如果你选Y,内核可以在很多(但不是所有)单CPU的机器上运行,在这样的机器,你选N会使内核运行得更快。
注意如果你选Y,然后在Processor family选项中选择“586″ or “Pentium” ,内核将不能运行在486构架的机器上。同样的,多CPU的运行于PPro构架上的内核也无法在 Pentium 系列的板上运行。

[ ] Support sparse irq numbering  ##支持稀有的中断编号,一般都使用不到的,不选。
[ ] Enable MPS tablemps ##多处理器规范,让多CPU可以支持ACPI
[ ] Support for big SMP systems with more than 8 CPUs   ##我没有8个CPU 
[ ] Support for extended (non-PC) x86 platforms ##一些不是X86平台的支持,不用,X86介绍见后。 
[ ] AMD Elan
[ ] Moorestown MID platform
[ ] RDC R-321x SoC ##片上系统,用不上。
[ ] Support non-standard 32-bit SMP architectures    
[*] Single-depth WCHAN output ##编译选项

—————————————————————————————————————————————————

[ ] Paravirtualized guest support  --->  ##虚拟化客户端支持,如果有使用虚拟机的必要,选上 
  [ ] VMI Guest support (DEPRECATED) (NEW) ##VMware ESX server客户端
  [ ]   KVM paravirtualized clock (NEW) ##KVM时允许虚拟一个时钟
  [ ]   KVM Guest support (NEW) ##KVM客户端
  [ ]   Lguest guest support (NEW) ##Lguest(linux内核虚拟化的x86程序)客户端
  [ ]   Enable paravirtualization code (NEW) ##增加虚拟机的运行效率

—————————————————————————————————————————————————[ ] Memtest ##开机时候是否内存测试,没必要选
—————————————————————————————————————————————————

Processor family (Pentium-Pro)  --->
 ##处理器系列,请按照你实际使用的CPU选择这里是处理器的类型。这里的信息主要目的是用来优化。注意,内核不会运行在比你选的构架还要老的CPU上,但是可以用在更新的CPU上,比如,你选了Pentium-II构架来优化内核,它将不能在486构架上运行,但是可以在Pentium-III架构上运行,我尽量把以下架构对应的CPU型号写上,大家按自己的选择,如果你不清楚,选386。
 ( ) 386 ##最老的386机器,也泛指IA32体系的CPU,已经见不到了,选中它几乎支持现行所有架构的CPU。
 ( ) 486
 ( ) 586/K5/5x86/6x86/6x86MX
 ( ) Pentium-Classic
 ( ) Pentium-MMX
 (X) 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
—————————————————————————————————————————————————
[*] Generic x86 support
##这一选项针对x86系列的CPU使用更多的常规优化。如果你在上面一项选的是i386、i586之类的才选这个通用x86支持,如果你的CPU能够在上述"Processor family"中找到就别选。除了对上面你选择的X86 CPU进行优化,它还对更多类型X86 CPU的进行优化。这将会使内核在其他的X86 CPU上运行得更好。

—————————————————————————————————————————————————
[*] HPET Timer Support ##HPET时钟支持
##允许内核使用 HPET 。HPET是替代8254芯片的新一代定时器,i686及以上级别的主板都支持,可以安全的选上。但是,HEPT只会在支持它的平台和BIOS上运行。如果不支持,8254将会激活。选N,将继续使用8254时钟。
—————————————————————————————————————————————————
[*] SMT (Hyperthreading) scheduler support
##支持Intel的超线程(HT)技术超线程调度器在某些情况下将会对 Intel Pentium 4 HT系列有较好的支持。如果你不清楚,选N
—————————————————————————————————————————————————
[*] Multi-core scheduler support
##针对多核CPU进行调度策略优化多核调度机制支持,双核的CPU要选。多核心调度在某些情况下将会对多核的CPU系列有较好的支持。如果你不清楚,选N
—————————————————————————————————————————————————
Preemption Model (Voluntary Kernel Preemption (Desktop))  ---│>
##内核抢占模式一些优先级很高的程序可以先让一些低优先级的程序执行,即使这些程序是在核心态下执行。从而减少内核潜伏期,提高系统的响应。当然在一些特殊的点的内核是不可抢先的,比如内核中的调度程序自身在执行时就是不可被抢先的。这个特性可以提高桌面系统、实时系统的性能。
  ( ) No Forced Preemption (Server)
  ##适合服务器环境的禁止内核抢占
  这是传统的LINUX抢先式模型,针对于高吞吐量设计。它同样在很多时候会提供很好的响应,但是也可能会有较长的延迟。如果你是建立服务器或者用于科学运算,选这项,或者你想要最大化内核的原始运算能力,而不理会调度上的延迟。
  (X) Voluntary Kernel Preemption (Desktop)
  ##适合普通桌面环境的自愿内核抢占
  这个选项通过向内核添加更多的“清晰抢先点”来减少内核延迟。这些新的抢先点以降低吞吐量的代价,来降低内核的最大延迟,提供更快的应用程序响应。这通过允许低优先级的进程自动抢先来响应事件,即使进程在内核中进行系统调用。这使得应用程序运行得更“流畅”,即使系统已经是高负荷运转。
如果你是为桌面系统编译内核,选这项。
  ( ) Preemptible Kernel (Low-Latency Desktop)
  ##适合运行实时程序的主动内核抢占
  这个选项通过使所有内核代码(非致命部分)编译为“可抢先”来降低内核延迟。这通过允许低优先级进程进行强制抢先来响应事件,即使这些进程正在进行系统调用或者未达到正常的“抢先点”。这使得应用程序运行得更加“流畅”即使系统已经是高负荷运转。代价是吞吐量降低,内核运行开销增大。
—————————————————————————————————————————————————
[ ] Local APIC support on uniprocessors
##单CPU的本地APIC (advanced programmable interrupt controller)支持,它内嵌在cpu中支持cpu自身产生的中断.建议选择,就算cpu不支持APIC,也没有影响.
[*]   IO-APIC support on uniprocessors (NEW)
##同上,支持I/O高级可编程中断控制器.
[*] Reroute for broken boot IRQs
[*] Machine Check / overheating reporting
##让CPU检测到系统故障时通知内核,以便内核采取相应的措施(如过热关机等)
[*]   Intel MCE features
[*]   AMD MCE features   
[ ]   Support for old Pentium 5 / WinChip machine checks
—————————————————————————————————————————————————
< > Machine check injector support
##让CPU检测到系统故障时通知内核,以便内核采取相应的措施(如过热关机等)
< > Toshiba Laptop support
##东芝笔记本模块支持
< > Dell laptop support
##Dell笔记本模块支持
[*] Enable X86 board specific fixups for reboot不选
##修正某些旧x86主板的重起bug,这种主板基本绝种了
<*> /dev/cpu/microcode - microcode support
##是否支持Intel IA32架构的CPU。这个选项将让你可以更新Intel IA32系列处理器的微代码,显然你需要到网上去下载最新的代码,LINUX不提供这些代码。当然你还必须在文件系统选项中选择/dev file system support才能正常的使用它。如果你把它译为模块 ,它将是 microcode。
IA32主要用于高于4GB的内存。详见下面的“高内存选项”。
使用不随Linux内核发行的IA32微代码,你必需有IA32微代码二进制文件,仅对Intel的CPU有效
[*]   Intel microcode patch loading support
[*]   AMD microcode patch loading support
<*> /dev/cpucpuid - CPU information support
##是否打开记录CPU相关信息功能。这会在/dev/cpu中建立一系列的设备文件,用以让过程去访问指定的CPU。
能从/dev/cpu/x/cpuid获得CPU的唯一标识符(CPUID)
< > /sys/kernel/debug/x86/cpu/* - CPU Debug support
—————————————————————————————————————————————————
High Memory Support (4GB)  --->
  ##LINUX能够在X86系统中使用64GB的物理内存。但是,32位地址的X86处理器只能支持到4GB大小的内存。这意味着,如果你有大于4GB的物理内存,并非都能被内核“永久映射”。这些非永久映射内存就称为“高阶内存”。
  如果你编译的内核永远都不会运行在高于1G内存的机器上,选OFF(默认选项,适合大多数人)。这将会产生一个“3GB/1GB”的内存空间划分,3GB 虚拟内存被内核映射以便每个处理器能够“看到”3GB的虚拟内存空间,这样仍然能够保持4GB的虚拟内存空间被内核使用,更多的物理内存能够被永久映射。
  如果你有1GB-4GB之间的物理内存,选4GB选项。如果超过4GB,那么选择64GB。这将打开 Intel 的物理地址延伸模式(PAE)。PAE将在IA32处理器上执行3个层次的内存页面。PAE是被LINUX完全支持的,现在的Intel处理器 (Pentium Pro 和更高级的)都能运行PAE模式。注意:如果你选64GB,那么在不支持PAE的CPU上内核将无法启动。
  ( ) off
  (X) 4GB
  ( ) 64GB
—————————————————————————————————————————————————
[ ] PAE (Physical Address Extension) Support (NEW)
##物理地址扩展 (PAE) 允许将最多 64 GB 的物理内存用作常规的 4 KB 页面,并扩展内核能使用的位数以将物理内存地址从 32 扩展到 36。
—————————————————————————————————————————————————
Memory model (Flat Memory)  ---> ## 一般选"Flat Memory",其他选项涉及内存热插拔
  (X) Flat Memory
  ##平坦内存模式。
  这个选项允许你改变内核在内部管理内存的一些方式。大多数用户在这只会有一个选项:Flat Memory。这是普遍的和正确的选项。
  一些用户的机器有更高级的特性,比如 NUMA 和内存热拔插,那将会有不同的选项。Discontiguous Memory(非接触式内存模式)是一个更成熟、更好的测试系统。但是对于内存热拔插系统不太合适,会被“Sparse Memory”代替。如果你不清楚“Sparse Memory”和“Discontiguous Memory”的区别,选后者。如果不清楚,就选Flat Memory。
  ( ) Sparse Memory
  ##稀疏内存模式。
  这对某些系统是唯一选项,包括内存热拔插系统。这正常。
对于其他系统,这将会被Discontiguous Memory选项代替。这个选项提供潜在的更好的特性,可以降低代码复杂度,但是它是新的模式,需要更多的测试。
如果不清楚,选择“Discontiguous Memory” 或 “Flat Memory”。

—————————————————————————————————————————————————
[ ] Enable KSM for page merging
(4096) Low address space to protect from user allocation
[ ] Enable recovery from hardware memory errors
[*] Check for low memory corruption
[*]   Set the default setting of memory_corruption_check
[*] Reserve low 64K of RAM on AMI/Phoenix BIOSen

—————————————————————————————————————————————————
[ ] Math emulation ##数学协处理器仿真,486DX以上的cpu就不要选它了
[*] MTRR (Memory Type Range Register) support 内存类型区域寄存器
  ##在 Intel P6 系列处理器(Pentium Pro, Pentium II 和更新的)上,MTRR将会用来规定和控制处理器访问某段内存区域的策略。
  如果你在PCI或者AGP总线上有VGA卡,这将非常有用。可以提升图像的传送速度2.5倍以上。选Y,会生成文件/proc/mtrr,它可以用来操纵你的处理器的MTRR。典型地,X server 会用到。
  这段代码有着通用的接口,其他CPU的寄存器同样能够使用该功能。Cyrix 6×86, 6×86MX和 M II处理器有ARR ,它和 MTRR有着类似的功能。AMD K6-2/ K6-3有两个MTRR, Centaur C6有8个MCR允许复合写入。所有这些处理器都支持这段代码,你可以选Y如果你有以上处理器。选Y同样可以修正SMP BIOS的问题,它仅为第一个CPU提供MTRR,而不为其他的提供。这会导致各种各样的问题,所以选Y是明智的。
  你可以安全地选Y,即使你的机器没有MTRR。这会给内核增加9KB。
  打开它可以提升PCI/AGP总线上的显卡2倍以上的速度,并且可以修正某些BIOS错误
—————————————————————————————————————————————————
[ ]   MTRR cleanup support  ##MTRR清理(2.6.27内核新增功能,不确定可以不选)
[*]   x86 PAT support 使用PAT(Performance Acceleration Technology) ##性能加速技术属性来对页面级
缓存控制进行设置(不确定可以不选)
[*] EFI runtime service support ##EFI启动支持,需要EFI设备,可以不选的。
  这里允许内核在EFI平台上使用储存于EFI固件中的系统设置启动。这也允许内核在运行时使用EFI的相关服务。
  这个选项只在有EFI固件的系统上有用,它会使内核增加8KB。另外,你必须使用最新的ELILO 登录器才能使内核采用EFI的固件设置来启动(GRUB和LILO完全不知道EFI是什么东西)。即使你没有EFI,却选了这个选项,内核同样可以启动。
  大家应该用的是GRUB,所以选上这个也没什么用。除非你的系统支持EFI(一种可代替传统BIOS的技术)否则不选
[*] Enable seccomp to safely compute untrusted bytecode ##必须选!只有嵌入式系统可以不选
[ ] Enable -fstack-protector buffer overflow detection (EXPERIMENTAL)

—————————————————————————————————————————————————
Timer frequency (1000 HZ)  ---> ##内核时钟频率,这是用户定义的时钟中断频率 100HZ-1000 HZ ,不过 100 HZ 对服务器和NUMA系统更合适,它们不需要很快速的响应用户的要求,因为时钟中断会导致总线争用和缓冲打回。注意在SMP环境中,时钟中断由变量 NR_CPUS * Hz定义在每个CPU产生。
其实和前面的抢先式进程差不多,就是多少频率来响应用户要求。我选了250HZ的。要快点的可以选1000HZ的。但是还是那句话,一切是平衡的。机器过快响应你,它自己的活就不知道做得好不好了。
  ( ) 100 HZ
  ##100 HZ是传统的对服务器、SMP 和 NUMA的系统选项。这些系统有比较多的处理器,可以在中断较集中的时候分担中断
  ( ) 250 HZ
  ##250 HZ对服务器是一个好的折衷的选项,它同样在SMP 和 NUMA 系统上体现出良好的反应速度。
  ( ) 300 HZ
  (X) 1000 HZ
  ##1000 HZ对于桌面和其他需要快速事件反应的系统是非常棒的。
—————————————————————————————————————————————————
[*] kexec system call kexec 系统调用,不用选
##kexec是一个用来关闭你当前内核,然后开启另一个内核的系统调用。它和重启很像,但是它不访问系统固件。由于和重启很像,你可以启动任何内核,不仅仅是LINUX。
kexec这个名字是从 exec 系统调用来的。它只是一个进程,可以确定硬件是否正确关闭,
Linus本人都没话说,估计是受害不浅。我们当然不能上当,选N!
提供kexec系统调用,可以不必重启而切换到另一个内核,如果需要就选择,对大多数用户来说并不需要
[ ] kexec jump (EXPERIMENTAL) 不选
##kexec跳转,如果你需要用kexec来启动内核就选择吧
[*] Build a relocatable kernel 不选
##建立一个移动的内核,除非特殊要求否则只是增大内核大小而已
(0x1000000) Alignment value to which kernel should be aligned
##内核编译、运行时的物理地址匹配,不要更改该值除非你知道你在干嘛
-*- Support for hot-pluggable CPUs
##对SMP休眠和热插拔CPU提供支持
[ ] Compat VDSO support不选
##如果Glibc版本大于等于2.3.3就不选,否则就选上,目前的版本基本上都大于2.3.3
如果你运行的是最新的glibc(GNU C函数库)版本( 2.3.3 或更新),选N,这样可以移除高阶的VDSO 映射,使用随机的 VDSO。
[ ] Built-in kernel command line

0 0
原创粉丝点击