Linu内核配置详解_第1页
Linu内核配置详解_第2页
Linu内核配置详解_第3页
Linu内核配置详解_第4页
Linu内核配置详解_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux内核配置详解

首先对内核进行菜单配置,

代码:

1.cd/usr/src/linux

2.makemenuconfig

代码成熟度选项

代码:

1.Codematurityleveloptions-->

2.[*]Promptfordevelopmentand/or

incompletecode/drivers

3.[*]Selectonlydriversexpectedto

compilecleanly

Promptfordevelopmentand/orincompletecode/drivers显示尚在开发中

或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择打开使

用开发中、不完全的代码/驱动会让内核配置多出很多选项,由于我们需要使用

一些正在开发中的功能,因此必需打开这一选项。

通用设置选项

代码:

1.Generalsetup—>

2.()Localversion-appendtokernel

release

3.[*]Supportforpagingofanonymous

memory(swap)

4.[*]SystemVIPC

5.[*]POSIXMessageQueues

6.[*]BSDProcessAccounting

7.[*]BSDProcessAccountingversion3

fileformat

8.[*]Sysctlsupport

9.1]Auditingsupport

10.(15)Kernellogbuffersize(16=>64KB,

17=>128KB)

11.[*]Supportforhot-pluggabledevices

12.[*]KernelUserspaceEvents

13.[*]Kernel.configsupport

14.[*]Enableaccessto.configthrough

/proc/config,gz

15.[*]Configurestandardkernelfeatures

(forsmallsystems)-->

16.--Configurestandardkernelfeatures

(forsmallsystems)

17.[]Loadallsymbolsfor

debugging/kksymoops

18.[*]Enablefutexsupport

19.[*]Enableeventpollsupport

20.[*]Optimizeforsize

21.[*]Usefullshmemfilesystem

22.(0)Functionalignment

23.(0)Labelalignment

24.(0)Loopalignment

25.(0)Jumpalignment

Localversion-appendtokernelrelease:这里填入的是64字符以内的字

符串,你在这里填上的字符口串可以用uname-a命令看到。

Automaticallyappendversioninformationtotheversionstring:自动在

版本字符串后面添加版本信息,编译时需要有perl以及git仓库主持。

Supportforpagingofanonymousmemory(swap):这是使用交换分区或者交

换文件来做为虚拟产存的,当然要选上了。

SystemVIPC:表示系统5fltJlnterProcessCommunication,它用于处理器在程

序之间同步和交换信息,如果不选这项,很多程序运行不起来的。

POSIXMessageQueues:这是POSIX的消息队列,它同样是一种IPC。建议你最

好将它选上。

BSDProcessAccounting:这是充许用户进程访问内核将账户信息写入文件中的。

这通常被认为是个好主意,建议你最好将它选上。

BSDProcessAccountingversion3fileformat:使用新的第三版文件格式,

可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式。

Exporttask/processstatisticsthroughnetlink:通过netlink接口向用户

空间导出任务/进程的统计信息,与BSDProcessAccounting的不同之处在于这

些统计信息在整个任务/进程生存期都是可用的。

Enableper-taskdelayaccounting:在统计信息中包含进程等候系统资源

(cpu,10同步,内存交换等)所花费的时间。

UTSNamespaces:UTS名字空间支持,不确定可以不选。

Enablesystem-callauditingsupport:支持对系统调用的审计。

Enableaccessto.configthrough/proc/config.gz:允许通过proc/config・gz

访问内核的配置信息。

Cpusetsupport:只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访

问)系统才需要它。

Kernel->userspacerelaysupport(formerlyrelayfs):在某些文件系统上

(比如debugfs)提供从内核空间向用户空间传递大量数据的接口。

Initramfssourcefile(s):initrd已经被initramfs取代,如果你不明白这是什

么意思,请保持空白。

Optimizeforsize(Lookoutforbrokencompilers!):编译时优化内核尺

寸(使用〃-0s〃而不是〃-02〃参数编译),有时会产生错误的二进制代码。

Enableextendedaccountingovertaskstats:收集额外的进程统计信息并通

过taskstats接口发送到用户空间。

Enable16-bitUIDsystemcalls:允许对UID系统调用进行过时的16-bit包装。

Includeallsymbolsinkallsyms:在kallsyms中包含内核知道的所有符号,

内核将会增大300K。

Doanextrakallsymspass:除非你在kallsyms中发现了bug并需要报告这个bug

才打开该选项。

Supportforhot-pluggabledevices:支持热插拔设备,如usb与pc卡等,Udev

也需要它。

Enablesupportforprintk:允许内核向终端打印字符信息,在需要诊断内核为

什么不能运行时选择。

BUG()support:显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错

误被忽略。

EnableELFcoredumps:内存转储支持,可以帮助调试ELF格式的程序。

Enablefull-sizeddatastructuresforcore:在内核中使用全尺寸的数据

结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能。

Enablefutexsupport:快速用户空间互斥体可以使线程串行化以避免竞态条件,

也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序。

Enableeventpollsupport:支持事件轮循的系统调用。

UsefullSLABallocator:使用SLAB完全取代SLOB进行内存分配,SLAB是一种优

秀的内存分配管理器,推荐使用。

EnableVMeventcountersfor/proc/vmstat:允许在/proc/vmstat中包含虚

拟内存事件记数器。

Syset1support:这个选项能不重新编译内核修改内核的某些参数和变量,如果

你也选择了支持/proc,将能从/proc/sys存取可以影响内核的参数或变量。建

议你最好将它选上。

Auditingsupport:审记支持,用于和内核的某些子模块同时工作,例如SELinux。

只有选择此项及它的子项,才能调用有关审记的系统调用。

Kernellogbuffersize:内核日志缓存的大小,12=>4KB,13=>8KB,14=>

16KB单处理器,15=>32KB多处理器,16=>64KBforx86NUMAQorIA-64,

17=>128KBforS/390。

Supportforhot-pluggabledevices:是否支持热插拔的选项,肯定要选上。

不然USB、PCMCIA等这些设备都用不了。

KernelUserspaceEvents:内核中分为系统区和用户区,这里系统区和用户区

进行通讯的一种方式,选上。

Kernel.configsupport:将.config配置信息保存在内核中,选上它及它的子

项使得其它用户能从/proc中得到内核的配置。还记得另一篇贴子我是如何取得

启动光盘的内核配置信息,并在此基础上配置新的内核吗?

Configurestandardkernelfeatures(forsmallsystems):这是为了编译某

些特殊的内核使用的,通常你可以不选择这一选项,你也不用对它下面的子项操

心了。

Loadallsymbolsfordebugging/kksymoops:是否装载所有的调试符号表信

息,如果你不需要对内核调试,不需要选择此项。

Enablefutexsupport:不选这个内核不一定能正确的运行使用glibc的程序,

当然要选上。

Enableeventpollsupport:不选这个内核将不支持事件轮循的系统调用,最好

选上。

Optimizeforsize:这个选项使gec使用-0s的参数而不是-02的参数来优化

编译,以获得更小尺寸的内核,建议选上。

Usefullshmemfilesystem:除非你在很少的内存且不使用交换内存时,才不

要选择这项。后面的这四项都是在编译时内存中的对齐方式,0表示

编译器的默认方式。使用内存对齐能提高程序的运行速度,但是会增加程序对内

存的使用量。内核也是一组程序呀。

可加载模块

代码:

1.Loadablemodulesupport-->

2.[*]Enableloadablemodulesupport

3.[*]Moduleunloading

4.[]Forcedmoduleunloading

5.[*]Moduleversioningsupport

(EXPERIMENTAL)

6.1]Sourcechecksumforallmodules

7.[*]Automatickernelmoduleloading

Enableloadablemodulesupport,很多人喜欢将全部功能、硬件支持一股脑的

编进内核,而不是使用模块的方式。这样做非常不好(个人觉得)。其实我也做

过嵌入式的开发,在针对特定硬件的平台下尽可能将内核编小,将始终是支持

模块加载的。例如我们开发的防火墙就是做为内核的模块被加载的。使用模块支

持,你的系统能具有更好的可扩充性。还有一个原因就是自己编写的功能模块、

设备驱动模块(假设编写的质量不高)以模块方式工作引起KernelPanic的机率

要远远低于不支持模块全部编进内核的方式。讲了这么多,终于可以理直气壮的

选上这一功能了。

Moduleunloading,不选这个功能,加载的模块就不能卸载。没什么需要多解释

的,建议最好选上。

Forcedmoduleunloading,这个选项能强行卸载模块,即使内核认为这样并不

安全,也就是说你可以把正在使用中的模快卸载掉。如果你不是内核开发人员或

者骨灰级的玩家,不要选择这个选项。

Moduleversioningsupport(EXPERIMENTAL),这个功能可以让你使用其它版本

的内核模块,由于我自己写一些模块,所以我会用到这个选项,因为内核更新太

快了,我的头文件更新根本赶不上内核的更新。还有,虽然我在Gentoo下

开发,但实际真实环境用的却是从下载的内核。虽然我选择了这个

选项,不过建议你不要选择这个选项。

Sourcechecksumforallmodules,这个功能是为了防止更改了内核模块的代

码但忘记更改版本号而造成版本冲突。我估计现在没有哪家公司在开发中还没使

用版本控制工具,所以不需要这项了。如果你不是自己写内核模块,那就更不需

要这一选项了。

Automatickernelmoduleloading,这个选项能让内核自动的加载部份模块,

建议你最好选上。举个例子说明一下,如模块ethl394依赖于模块ieeel394。如

果选择了这个选项,可以直接加载模块ethl394;如果没有选择这个选项,必需

先加载模块ieeel394,再加载模块ethl394,否则将出错。

Blocklayer块设备层

Enabletheblocklayer:块设备支持,使用硬盘/USB/SCSI设备者必选。

SupportforLargeBlockDevices:仅在使用大于2TB的块设备时需要。

Supportfortracingblockioactions:块队列10跟踪支持,它允许用户查

看在一个块设备队列上发生的所有事件,可以通过blktrace程序获得磁盘当前的

详细统计数据。

SupportforLargeSingleFiles:仅在可能使用大于2TB的文件时需要。

10Schedulers:10调度器。

AnticipatoryI/Oscheduler:假设一个块设备只有一个物理查找磁头(例如一

个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时

换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服

务器)。

DeadlineI/Oscheduler:使用轮询的调度器,简洁小巧,提供了最小的读取延迟

和尚佳的吞吐量,特别适合于读取较多的环境仕匕如数据库)。

CFQI/Oscheduler:使用QoS策略为所有任务分配等量的带宽,避免进程被饿

死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程

的多用户系统。

DefaultI/Oscheduler:默认10调度器。

处理器内型及特性

代码:

1.Processortypeandfeatures-->

2.SubarchitectureType(PC-compatible)

3.-->Processorfamily

(Pentium-4/Ce1eron(P4-based)/Pentium-4

M/Xeon)-->

4.E]Genericx86support

5.[*]HPETTimerSupport

6.[*]Symmetricmulti-processingsupport

7.(2)MaximumnumberofCPUs(2-255)

8.[*]SMT(Hyperthreading)scheduler

support

9.L]PreemptibleKernel

10.[]MachineCheckException

11.<M>ToshibaLaptopsupport

12.<M>Delllaptopsupport

13.<>/dev/cpu/microcode-IntelIA32CPU

microcodesupport

14.<>/dev/cpu/*/msr-Model-specific

registersupport

15.<>/dev/cpu/*/cpuid-CPUinformation

support

16.FirmwareDrivers-->

17.<>BIOSEnhancedDiskDrivecalls

determinebootdisk(EXPERIMENTAL)High

MemorySupport(4GB)-->

18.1]Allocate3rd-levelpagetablesfrom

highmem

19.[]Mathemulation

20.[*]MTRR(MemoryTypeRangeRegister)

support

21.[]BootfromEFIsupport(EXPERIMENTAL)

22.[*]Enablekernelirqbalancing

23.[]Useregisterarguments

(EXPERIMENTAL)

SubarchitectureType,这没什么好说的,如果用PC机的话都选这个。

Processorfamily,这也没什么好说的,选择你机器对应的处理器即可。

Genericx86support,这一选项针对x86系列的CPU使用更多的常规优化。如

果你在上面一项选的是i386、i586之类的才选这个。

HPETTimerSupport,HPET是替代8254芯片的下一代时钟处理器。这里你可以

安全的选上这一选项。如果硬件不支持的话,将仍使用8254时钟处理器。

Symmetricmulti-processingsupport,对称多处理器支持,在单CPU的机器

上,不选这个选项会更快一些。由于超线程技术,看起来是两颗CPU,因些要选

上这个选项。

MaximumnumberofCPUs(2-255),支持的最大CPU数。SMT(Hyperthreading)

schedulersupport,超线程支持,如果你的CPU是P4超线程的,应该选上这一

选项。

PreemptibleKernel,这个选项能使应用程序即使内核在高负载时也很可靠,建

议最好选上。

MachineCheckException,这个选项能让CPU检测到系统故障时通知内核,一

般我用组装的台式机会选这项。本本嘛,我感觉还是非常可靠的,所以就不选它

了。

ToshibaLaptopsupport,Delllaptopsupport,这两项都是对本本的支持,

其实编译内核的原则应该是让内核能在特定的环境下运行,由于我编译的内核可

能公司的其它人也会使用,所以我尽可能的不针对特定的硬件。将对特定的硬件

支持编译成模块。

/dev/cpu/microcode-IntelIA32CPUmicrocodesupport,这个选项是让你

使用不随Linux内核发行的IA32microcode,但是你必需有IA32microcode的

二进制文件。

/dev/cpu/*/msr-Model-specificregistersupport,这个选项能让特权CPU

访问x86的MSR寄存器。由于超线程并不是真正的多处理器环境,所以不要选择

这个。

/dev/cpu/*/cpuid-CPUinformationsupport,这个选项能从dev/cpu/x/cpuid

获得CPU的唯一标识符。

BIOSEnhancedDiskDrivecallsdeterminebootdisk,台式机的有些BIOS支

持从某块特定的硬盘启动,由于本本只能装一块硬盘,所以就不选择这项了。如

果你的BIOS不支持这个功能而你选上的话,有可能无法启动。

HighMemorySupport(4GB),4GB的内存支持,已经足够了。

Allocate3rd-levelpagetablesfromhighmem,除非你真的有几G的内存,

选择这个是没有意义的。

Mathemulation,估计现在没人有386或486sx的处理器了吧,那就不要选这个。

MTRR(MemoryTypeRangeRegister)support,这个选项必需要选上。

BootfromEFIsupport(EXPERIMENTAL),由于我使用的是GRUB,所以选上这

个也没什么用。

Enablekernelirqbalancing,选上这个选项能让内核进行IRQ均衡。

Useregisterarguments(EXPERIMENTAL),使用-mregparm=3参数编译内核,

将前3个参数以寄存器方式进行参数调用。GCC的版本必需大于等于3.0。

SMT(Hyperthreading)schedulersupport:支持Intel的超线程(HT)技术。

Multi-coreschedulersupport:针对多核CPU进行调度策略优化。

PreemptionModel:内核抢占模式。

NoForcedPreemption(Server):适合服务器环境的禁止内核抢占。

VoluntaryKernelPreemption(Desktop):适合普通桌面环境的自愿内核抢占。

PreemptibleKernel(Low-LatencyDesktop):适合运行实时程序的主动内核

抢占。

PreemptTheBigKernelLock:可以抢占大内核锁,应用于实时要求高的场合,

不适合服务器环境。

EnableVM86support:虚拟X86支持,在DOSEMU下运行16-bit程序或XFree86通过

BIOS初始化某些显卡的时候才需要。

EnableX86boardspecificfixupsforreboot:修正某些旧x86主板的重起

bug,这种主板基本绝种了。

FirmwareDrivers:固件驱动程序。

BIOSupdatesupportforDELLsystemsviasysfs:仅适用于DELL机器。

DellSystemsManagementBaseDriver:仅适用于DELL机器。

Memorysplit:如果你不是绝对清楚自己在做什么,不要改动这个选项。

Memorymodel:一般选"FlatMemory”,其他选项涉及内存热插拔。

64bitMemoryand10resources:使用64位的内存和10资源。

Enableseccomptosafelycomputeuntrustedbytecode:只有嵌入式系统可

以不选。

Timerfrequency:内核时钟频率,桌面推荐“1000HZ”,服务器推荐"100HZ”或

"250HZ”。

kexecsystemcall:提供kexec系统调用,可以不必重启而切换到另一个内核。

kernelcrashdumps:被kexec启动后产生内核崩溃转储。

Physicaladdresswherethekernelisloaded:内核加载的物理地址,除非

你知道自己在做什么,否则不要修改.在提供kexec系统调用的情况下可能要修

改它。

Supportforhot-pluggableCPUs:对热插拔CPU提供支持。

CompatVDSOsupport:如果Glibc版本大于等于2.3.3就不选,否则就选上。

电源管理

代码:

1.Powermanagementoptions(ACPI,

APM)——>

2.[*]PowerManagementsupport

3.[]PowerManagementDebugSupport

4.1]SoftwareSuspend

(EXPERIMENTAL)

5.ACPI(AdvancedConfiguration

andPowerInterface)Support-->

6.APM(AdvancedPower

Management)BIOSSupport>

7.CPUFrequencyscaling>

PowerManagementsupport,电源管理没什么好说的,不想浪费电就选上。如果

不选你可以跳过这部份。

PowerManagementDebugSupport,电源管理的调试信息支持,如果不是要调

试内核有关电源管理部份,请不要选择这项。

SoftwareSuspend(EXPERIMENTAL),休眠到硬盘。也就是将内存写入交换分区

中,下次启动可以通过参数resume=/dev/swappartition(例如:

resume=/dev/hda6)来恢复上次机器运行的状态。这项功能对于系统引导时启动

许多服务的机器来说很有用,可以节约启动时间。这项功能根据自己的需要选择

吧,如果你选择这项功能,记得恢复休眠后重做交换分区。

代码:

1.ACPI(AdvancedConfigurationandPower

Interface)Support-->

2.[*]ACPISupport

3.[]SleepStates(EXPERIMENTAL)

4.<M>ACAdapter

5.<M>Battery

6.<M>Button

7.<M>Video

8.<M>Fan

9.<M>Processor

10.<M>ThermalZone

11.<M>ASUS/MedionLaptopExtras

12.<M>IBMThinkPadLaptopExtras

13.<M>ToshibaLaptopExtras

14.(0)DisableACPIforsystemsbefore

Jan1stthisyear

15.[]DebugStatements

16.PowerManagementTimerSupport

ACPISupport,这是一种电源管理方式,你可以看看你的BIOS是否支持。如果

支持的话建议你选上这项。

SleepStates(EXPERIMENTAL),这项功能可以让系统进入休眠状态(不是休眠到

硬盘)。休眠是指系统仍然通着电,只是进入最大幅度的省电状态;而休眠到硬

盘是指系统己经断电。不过如果你不是驱动程序的电源管理部份的开发人员,建

议你最好不要选择这项。相信未来linux下的驱动对电源支持的功能会越来

越好,或者也搞个硬件兼容列表,到时就可以放心的使用这项功能了。

ACAdapter,检测是电源供电还是电池供电,通常只对本本有用。

Battery,通过/proc/acpi/battery得到电池的信息,通常这也是针对笔记本的。

Button,捕获Power、Sleep.Lid(我也不知道这是什么按钮)等按钮是否按下,

并做相应的动作。

Video,集成在板上的显卡的ACPI支持,对有些板卡可能不起作用。

Fan,风扇的支持。这一点很明显,不选这项我的本本的风扇一直在转,选上以

后风扇只是间断的转转。

Processor,当机器负荷轻时节省处理器的用电,处理器可是电脑中的第一用电

大户(可能老式的CRT显示器和它有的一比)。

ThermalZone,这个我也不太清楚是什么,只是据说大部份的台式机和笔记本都

支持,不选还可能把处理器烧掉。如果你不会让模块正常工作,还是把它编进内

核吧,怪吓人的。

ASUS/MedionLaptopExtras>IBMThinkPadLaptopExtrasToshibaLaptop

Extras,这三种本本的扩展支持。你的内核如果只是自己用,选个该选的就

行了。

DisableACPIforsystemsbeforeJan1stthisyear,输入四位数的年份,

在该年的1月1日前不使用ACPI的功能。0表示一直使用。

DebugStatements,详细的ACPI调试信息,不搞开发就别选。

PowerManagementTimerSupport,我的本本支持

HPET(要是忘了是什么,再看看前面),所以不选它。要是你的机器不支持,应

该把它选上。

代码:

1.APM(AdvancedPowerManagement)BIOS

Support-->

2.<M>APM(AdvancedPower

Management)BIOSsupport

3.[]IgnoreUSERSUSPEND

4.[*]EnablePMatboottime

5.[]MakeCPUIdlecallswhenidle

6.1]Enableconsoleblankingusing

APM

7.[]RTCstorestimeinGMT

8.[]AllowinterruptsduringAPM

BIOScalls

9.[*]UserealmodeAPMBIOScall

topoweroff

APM(AdvancedPowerManagement)BIOSsupport,高级电源管理的支持,一

般来说笔记本应该选上,台式机可以不选。

IgnoreUSERSUSPEND,只有NECVersaM系列的笔记本需要选择这一项。

EnablePMatboottime,启动时支持电源管理,选上这个选项能让系统自动的

进行电源管理,除非在启动时死机,才不要选这项。

MakeCPUIdlecallswhenidle,系统空闲时调用空闲指令。只有老式的CPU才

用这项。其实调用空闲指令还是让CPU执行了一条指令。这个选项在内核循环中

调用空闲指令。

EnableconsoleblankingusingAPM,支持关闭监视器。据说这项功能对所有

的笔记本都无效。如果你都按我的建议配置,系统是能自动休眠的(使用

ACPI)o你也不用担心你的显示器一直亮着的。

RTCstorestimeinGMT,按Unix的标准,硬件的时钟应该设为格林威治时间。

还是那句老话,因为我还要用Windows,所以硬件时钟设成了本地时间,当然就

不要选这项了。

AllowinterruptsduringAPMBIOScalls,允许APM的BIOS调用时中断。多

数的机器不需要这项,Thinkpad的一些新机器需要这项。如果休眠时挂机(包

括睡下去就醒不来),再把这项选上。

UserealmodeAPMBIOScalltopoweroff,建议最好选上此项,保证软件

关机。如果你有兴趣可以试试你的机器不选这项能不能正常的软件关机(多数机

器不能)。

补充一点,如果既选择了ACPI又选择了APM,先加载的将被使用。通过这么多的

例子,大家应该可以看出来在menuconfig中,圆括号内是参数,可以选择某一

选项或者输入具体的参数。方括号只能选择“Y”或,尖括号除了选择“Y”

和还可以选择。表示将该选项包括在内核中,menuconfig中

以表示。“N”表示不使用此选项的功能,表示将此选项的功能编译

成模块。ACPI是为了取代APM而设计的,因此尽量使用ACPI的功能,实在不行

再加载apm模块。

代码:

1.[*]CPUFrequencyscaling

2.1]EnableCPUfreqdebugging

3.<>/proc/cpufreqinterface

(deprecated)

4.DefaultCPUFreqgovernor

(performance)-->

5.'performance'governor

6.<M>'powersave,governor

7.<M>'userspace'governorfor

userspacefrequencyscaling

8.1]/proc/sys/cpu/interface

(2.4./OLD)

9.<M>'ondemand'cpufreqpolicy

governor

10.<*>CPUfrequencytablehelpers

11.<M>ACPIProcessorP-Statesdriver

12.<M>AMDMobileK6-2/K6-3PowerNow!

13.<M>AMDMobileAthlon/Duron

PowerNow!

14.<M>AMD0pteron/Athlon64PowerNow!

15.<M>CyrixMediaGX/NatSemiGeode

SuspendModulation

16.<M>IntelEnhancedSpeedStep

17.1]UseACPItablestodecodevalid

frequency/voltagepairs--

18.Built-intablesforBaniasCPUs

19.<M>IntelSpeedsteponICH-Mchipsets

(ioportinterface)

20.<M>IntelSpeedStepon440BX/ZX/MX

chipsets(SMIinterface)

21.<M>IntelPentium4clockmodulation

22.<>nVidianForce2FSBchanging

23.<M>TransmetaLongRun

24.<M>VIACyrixIIILonghaulshared

options

25.[]

/proc/acpi/processor/../performance

interface(deprecated)

26.[]Relaxedspeedstepcapability

checks

CPUFrequencyscaling,这一选项允许改变CPU的主频,使CPU在低负荷或使用

电池时降低主频,达到省电的目的。

EnableCPUfreqdebugging,是否允许调试CPU改变主频的功能,如果要调试,

还需要在启动时加上参数。cpufreq.debug=

1:变频技术的内核调试

2:变频技术的驱动调试

4:变频技术的调节器调试

/proc/cpufreqinterface(deprecated),是否允许/proc/cpufreq来调节主

频,建议使用默认的sysfs来调节。

DefaultCPUFreqgovernor(performance)-->,默认的主频调节,圆括号内

的是你选择的结果,这里表示以性能为主。

'powersave,governor,最大限度的节约电能调节器。

'userspace'governorforuserspacefrequencysealing,用户自定义调节器。

/proc/sys/cpu/interface(2.4./OLD),兼容2.4内核的用户调节器。

'ondemand'cpufreqpolicygovernor,自动调节主频。

CPUfrequencytablehelpers,多数的CPU需要这一项来调节主频。

ACPIProcessorP-Statesdriver,报告处理器的状态。

AMDMobileK6-2/K6-3PowerNow!,AMD移动版K6处理器的变频驱动。

AMDMobileAthlon/DuronPowerNow!,AMD移动版毒龙、雷乌的变频驱动。

AMDOpteron/Ath1on64PowerNow!,AMD64处理器的变频驱动。

CyrixMediaGX/NatSemiGeodeSuspendModulation,Cyrix处理器的变频驱动。

IntelEnhancedSpeedStep,Intel的变频技术支持。

UseACPItablestodecodevalidfrequency/voltagepairs,使用BIOS中的

主频电压参数。

—Built-intablesforBaniasCPUs,迅驰一代的主频/电压参数。

IntelSpeedsteponICH-Mchipsets(ioportinterface),IntelICH-M南

桥芯片组的支持。

IntelSpeedStepon440BX/ZX/MXchipsets(SMIinterface),Intel

440BX/ZX/MX南桥芯片级的支持。

IntelPentium4clockmodulation,P4处理器的时钟模块支持。

nVidianForce2FSBchanging,nVidiar)Force2的支持。

TransmetaLongRun,Transmeta处理器的支持。

VIACyrixIIILonghaul,VIACyrix处理器的支持。

/proc/acpi/processor/../performanceinterface(deprecated),从

/proc/acpi/processor/../performance获得CPU的变频信息。

Relaxedspeedstepcapabilitychecks,不全面检测IntelSpeedstep,有的

系统虽然支持Speedstep技术,却无法通过全面的检测。

LegacyPowerManagementAPI:传统的电源管理API,比如软关机和系统休眠等

接口。

Drivermodel/sys/devices/.../power/statefiles:内核帮助文档反对使用

该选项,即将被废除。

GenericHotkey:统一的热键驱动,建议不选。

Dock:支持由ACPI控制的集线器(dockingstations)o

ACPI0004,PNP0A05andPNP0A06ContainerDriver:支持内存和CPU的热插拔。

SmartBatterySystem:支持依赖于12c的〃智能电池〃.这种电池非常老旧且罕

见,还与当前的ACPI标准兼容性差。

CPUfrequencytranslationstatistics:通过sysfs文件系统输出CPU频率变

换的统计信息。

CPUfrequencytranslationstatisticsdetails:输出详细的CPU频率变换

统计信息。

DefaultCPUFreqgovernor:默认的CPU频率调节器。

'performance'governor:'性能'优先,静态的将频率设置为cpu支持的最高频

率。

'powersave'governor:节能'优先,静态的将频率设置为cpu支持的最低频率。

'userspace'governorforuserspacefrequencyscaling:既允许手动调整

cpu频率,也允许用户空间的程序动态的调整cpu频率(需要额外的调频软件,比如

cpufreqd)。

'ondemand'cpufreqpolicygovernor:'立即响应',周期性的考察CPU负载并

自动的动态调整cpu频率(不需要额外的调频软件),适合台式机。

'conservative'cpufreqgovernor:'保守’,和'ondemand'相似,但是频率的升

降是渐变式的(幅度不会很大),更适合用于笔记本/PDA/AMD64环境。

ACPIProcessorP-Statesdriver:将ACPI2.0的处理器性能状态报告给CPUFreq

processordrivers以决定如何调整频率,该选项依赖于ACPI->Processor{省略

的部分请按照自己实际使用的CPU选择。

/proc/acpi/processor/../performanceinterface:内核帮助文档反对使用该

选项,即将被废除。

Relaxedspeedstepcapabilitychecks:放松对系统的speedstep兼容性检查,

仅在某些老旧的Intel系统上需要打开。

总线类型

1.[*]PCIsupport

2.PCIaccessmode(Any)-->

3.[]MessageSignaledInterrupts(MSI

andMSI-X)

4.[]Legacy/proc/pciinterface

5.[]PCIdevicenamedatabase

6.[*]ISAsupport

7.[*]EISAsupport

8.[*]VesaLocalBuspriming

9.[*]GenericPCI/EISAbridge

10.[*jEISAvirtualrootdevice

11.[]EISAdevicenamedatabase

12.[]MCAsupport

13.<>NatSemiSCx200support

14.PCCARD(PCMCIA/CardBus)

support-->

15.PCIHotplugSupport-->

PCIsupport,没有人不知道这是什么总线类型吧,实在不知道就去google查吧,

这个当然要选上。

PCIaccessmode(Any),强列建议选Any,系统将优先使用MMConfig,然后使用

BIOS,最后使用Direct检测PCI设备。

MessageSignaledInterrupts(MSIandMSI-X),建议你不要选择这项,设备

将使用默认的IRQ中断。如果选择这项,充许设备通过PCI总线写入内存堆

栈产生一个中断。

Legacy/proc/pciinterface,是否使用/proc/pci目录下的信息文件来描述PCI

设备的信息。现在的系统多数都使用Ispci工具来得到这样的信息。

PCIdevicenamedatabase,如果你不打算使用Ispci工具,就把这项和上面的

一项选上。Ispci和hotplug都不需要内核中的设备信息库了。

ISAsupport,是否使用工业总线。如果你没有老式的ISA设备,可以不选这项。

现在基本上都没有ISA的设备了。不过需要注意的是如果你做嵌入式系统的开发,

一些PC104的总线可能会桥接到EISA或者是VESA总线上。

EISAsupport,扩展工业总线。

VesaLocalBuspriming,VESA总线,也是扩展工业总线的一种。我的老486DX66

的机器上的显卡就是这种总线,块板上大概还有2个EISA插槽各3个ISA插槽。

PCI/EISAbridge,PCI、EISA两种总线的桥。

EISAvirtualrootdevice,EISA总线的虚拟根设备。

EISAdevicenamedatabase,内核中的EISA设备信息库。

MCAsupport,微通道总线。IBM的台式机和笔记本上可能会有这种总线,包括

它的P系列、e系列、z系列机器上都用到了这种总线。

NatSemiSCx200support,这个我不知道是什么东西,看帮助是松下的一种半导

体处理器的驱动。总之,只要你的主板没有ISA插槽,而且你也不是搞嵌入式开

发,工业自动化控制的。不要选“ISAsupport”就是了,如今的ISA设备在x86

体系上基本是是见不到了。不过自己制板的话,还是ISA的板子最好做。

1.PCCARD(PCMCIA/CardBus)support-->

2.<M>PCCard(PCMCIA/CardBus)support

3.[]EnablePCCARDdebugging

4.[]EnableobsoletePCCARDcode

5.<M>16-bitPCMCIAsupport

6.[*]32-bitCardBussupport

7.PC-cardbridges

8.<M>CardBusyenta-compatib1ebridgesupport

9.<M>CirrusPD6729compatiblebridgesupport

10.<M>i82092compatiblebridgesupport

11.<M>i82365compatiblebridgesupport

12.<M>DatabookTCIChostbridgesupport

PCCard(PCMCIA/CardBus)support,一般只有笔记本电脑上才会有PCMCIA插

槽,如果你是台式机的话,可以不选这一项,然后跳过这一部份。

EnablePCCARDdebugging,通常不需要选择调试PCMCIA设备,除非你是设备驱

动的开发人员。

EnableobsoletePCCARDcode,老式的PCMCIA设备只持。现在很少有这样的

设备了,除非你买这样的设备时带了张Linux的驱动光盘才需要选上。而且估计

你也只能在二手市场上买到这样的设备。

16-bitPCMCIAsupport,16位的PCMCIA总线支持。

32-bitCardBussupport,32位的PCMCIA总线支持,通常也叫PCMCIAII总线。

下面的是不同产家的PCMCIA芯片的驱动支持,如果你知道你的本本用的是什么

芯片组的话,可以只选它而不选其它的。要是你不知道可以象我一样的全部选上,

然后用modprobe一种一种的试。最后我终于知道我的HPzv5028的本本用的是

yenta-compatib1e的芯片组了。

PC-cardbridges

2.<M>CardBusyenta-compatib1ebridgesupport

3.<M>CirrusPD6729compatiblebridgesupport

4.<M>i82092compatiblebridgesupport

5.<M>i82365compatiblebridgesupport

6.<M>DatabookTCIChostbridgesupport

PCIHotplugSupport-->

2.<M>SupportforPCIHotplug(EXPERIMENTAL)

3.<>FakePCIHotplugdriver(NEW)

4.<>CompaqPCIHotplugdriver(NEW)

5.<>IBMPCIHotplugdriver(NEW)

6.<>ACPIPCIHotplugdriver(NEW)

7.[]CompactPCIHotplugdriver(NEW)

8.<>PCIExpressHotplugdriver(NEW)

9.<>SHPCPCIHotplugdriver(NEW)

SupportforPCIHotplug(EXPERIMENTAL),一般来讲只有服务器上会有热插

拔的设备,如果你使用的是台式机,你可以不选择此项并跳过这一部份。(其实

我也没有选这一项,只是为了讲解的方便而选上的。)

FakePCIHotplugdriver(NEW),选上这一选项能让你的机器模拟PCI热插拔。

注意,它并不是真正意义上的热插拔,决对不允许带电插拔设备除非你的主板上

集成了PCI热插拔芯片并且你的PCI设备本身支持热插拔。

CompaqPCIHotplugdriver(NEW),Compaq服务器上的热插拔芯片组的支持。

IBMPCIHotplugdriver(NEW),IBM服务器上的热插拔芯片组的支持。

ACPIPCIHotplugdriver(NEW),PCI热插拔设备是否支持ACPI电源管理(一

般来说都是支持的)。

CompactPCIHotplugdriver(NEW),精简PCI总线的热插拔设备的支持,通常

在嵌入式系统中会用到精简PCI总线。

PCIExpressHotplugdriver(NEW),PCI加速总线的热插拔设备的支持。现

在PCIExpress总线的显卡挺火的。但用于服务器上的PCI加速总线的设备我还

没见过。

SHPCPCIHotplugdriver(NEW),SHPC热插拔控制芯片的支持。

PCIExpresssupport:PCIExpress支持(目前主要用于显卡和千兆网卡)。

PCIExpressHotplugdriver:如果你的主板和设备都支持PCIExpress热插拔

就可以选上。

Usepollingmechanismforhot-plugevents:对热插拔事件采用轮询机制,

仅用于测试目的。

RootPortAdvancedErrorReportingsupport:由PCIExpressAER驱动程

序处理发送到RootPort的错误信息。

PCIDebugging:将PCI调试信息输出到系统日志里。

Interruptsonhypertransportdevices:允许本地的hypertransport设备使

用中断。

NatSemiSCx200support:在使用AMDGeode处理器的机器上才可能有。

CardBusyenta-compatiblebridgesupport:使用PCMCIA卡的基本上都需要

选择这一项,子项请按照自己实际使用的PCMCIA卡选择{省略的部分请按照自己

实际使用的PCMCIA卡选择}。

PCIHotplugSupport:PCI热插拔支持,如果你有这样的设备就到子项中去选吧。

可执行文件格式

1.[*]KernelsupportforELFbinaries

2.<>Kernelsupportfora.outandECOFFbinaries

3.<*>KernelsupportforMISCbinaries

KernelsupportforELFbinaries,ELF是开放平台下最常用的二进制文件,

它支持不同的硬件平台。

Kernelsupportfora.outandECOFFbinaries,这是早期UNIX系统的可执

行文件格式,目前已经被ELF格式取代。

KernelsupportforMISCbinaries,此选项允许插入二进制的封装层到内核

中,当使用Java、.NET、Python,Lisp等语言编写的程序时非常有用。

文件系统

1<*>Secondextendedfssupport

2[*]Ext2extendedattributes

3[*]Ext2POSIXAccessControlLists

4[*]Ext2SecurityLabels

5<*>Ext3journallingfilesystemsupport

6[*]Ext3extendedattributes

7[*]Ext3POSIXAccessControlLists

8.[*]Ext3SecurityLabels

9.[]JBD(ext3)debuggingsupport

10.<*>Reiserfssupport

11.[]Enablereiserfsdebugmode

12.[]Statsin/proc/fs/reiserfs

13.[*]ReiserFSextendedattributes

14.[*]ReiserFSPOSIXAccessControlLists

15.[*]ReiserFSSecurityLabels

16.JFSfilesystemsupport

17.[*]JFSPOSIXAccessControlLists

18.[]JFSdebugging

19.[]JFSstatistics

20.XFSfilesystemsupport

21.[*]Realtimesupport(EXPERIMENTAL)

22.[*]Quotasupport

23.[*]SecurityLabelsupport

24.[*]POSIXACLsupport

25.<>Minixfssupport

26.<>ROMfilesystemsupport

27.[*]Quotasupport

28.<>Oldquotaformatsupport

29.Quotaformatv2support

30.[*]Dnotifysupport

31.<>Kernelautomountersupport

32.<>Kernelautomounterversion4support(alsosupportsv3)

33.CD-ROM/DVDFilesystems-->

34.DOS/FAT/NTFilesystems-—>

35.Pseudofilesystems-->

36.Miscellaneousfilesystems>

37.NetworkFileSystems-->

38.PartitionTypes-->

39.NativeLanguageSupport-->

有人说在编译内核时应该将/boot分区和/分区的文件系统编译进内核,其它的

可以编译成模块。对,但不确切。让我们来一起了解一下linux系统的启动顺序。

在内核被加载后,如果initrd参数传入了内核,内核会去调用指定的文件。当

然,initrd和System,map通常都是/boot下。但是同样可以用

initrd=(hdl,2)/initrd.img这样的方式指定。内核启动完成后将调用

/sbin/init,(如果是链接要保证目标文件能被内核加载)。不同的系统的启动

脚本可能不太一样,这里不详细介绍。启动脚本向内核加载模块时可能用

/sbin/modprobe或/sbin/insmod,由此看来/sbin的文件系统是要内核支持的。

编译的内核模块一般在/lib/modules/的版本目录下,所以/lib/modules的文件

系统是要内核支持的。一旦其它文件系统的模块能加载,系统就能向正常的访问

内核中的文件系统一样访问模块支持的文件系统了。由于启动脚本、fstab自动

加载等文件一般在/etc目录下,因此/etc的文件系统是要内核支持的。这里概

要的介绍了保证系统正常启动的几个关键点,可能我反而把它讲复杂了。如果你

能理解上面的这段话,你应该能清楚的知道哪些文件系统是要编译进内核的,邪

些是可以编译成模块的。如果你不太理解上面的这段话,我将详细介绍每个选项

及几种常用的文件系统。

1.<*>Secondextendedfssupport

2.[*]Ext2extendedattributes

3.[*]Ext2POSIXAccessControlLists

4.[*]Ext2SecurityLabels

5.<*>Ext3journallingfilesystemsupport

6.[*]Ext3extendedattributes

7.[*]Ext3POSIXAccessControlLists

8.[*]Ext3SecurityLabels

9.[]JBD(ext3)debuggingsupport

10.<*>Reiserfssupport

11.[]Enablereiserfsdebugmode

12.[]Statsin/proc/fs/reiserfs

13.[*]ReiserFSextendedattributes

14.[*]ReiserFSPOSIXAccessControlLists

15.[*]ReiserFSSecurityLabels

16.JFSfilesystemsupport

17.[*]JFSPOSIXAccessControlLists

18.[]JFSdebugging

19.[]JFSstatistics

20.XFSfilesystemsupport

21.[*]Realtimesupport(EXPERIMENTAL)

22.[*]Quotasupport

23.[*]SecurityLabelsupport

24.[*]POSIXACLsupport

25.<>Minixfssupport

26.<>ROMfilesystemsupport

27.[*]Quotasupport

28.<>Oldquotaformatsupport

29.Quotaformatv2support

30.[*]Dnotifysupport

31.<>Kernelautomountersupport

32.<>Kernelautomounterversion4support(alsosupportsv3)

33.CD-ROM/DVDFilesystems一一>

34.DOS/FA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论