1、PCIExpresssupport如果你的主板支持PCIExpress,请选择Y
2、57Supportforhot-pluggableCPUs对SMP休眠和热插拔CPU提供支持58CompatVDSOsupport如果Glibc版本大于等于3就不选,否则就选上,目前的版本基本上都大于3如果你运行的是最新的glibc(GNUC函数库)版本(3或更新),选N,这样可以移除高阶的VDSO映射,使用随机的VDSO。59Built-inkernelcommandline(不选)
3、-*-Namespacessupport—>命名空间支持,允许服务器为不同的用户信息提供不同的用户名空间服务[*]UTSnamespace通用终端系统的命名空间。它允许容器,比如Vservers利用UTS命名空间来为不同的服务器提供不同的UTS。如果不清楚,选N。[*]IPCnamespaceIPC命名空间,不确定可以不选[*]Usernamespace(EXPERIMENTAL)User命名空间,不确定可以不选[*]PIDNamespacesPID命名空间,不确定可以不选[*]Networknamespace
4、18(MaximumnumberofCPUs支持的最大CPU数,每增加一个内核将增加8K体积
5、SerialATAandParallelATAdrivers—>[*]VerboseATAerrorreporting[*]ATAACPISupport[]SATAPortMultipliersupport<===我只有一枚SATA设备,没有使用多路SATA/SATAHub的需求。PortMultiplier是南桥芯片提供的一种支持多块SATA设备,并共享总带宽的技术。<*>AHCISATAsupport<>PlatformAHCISATAsupport<>Inito162xSATAsupport<>SiliconImage3124/3132SATAsupport[*]ATASFFsupport//选择自己硬件对应的驱动即可<>ServerWorksFrodo/AppleK2SATAsupport<*>IntelESB,ICH,PIIXPIIX4PATA/SATAsupport//IntelICH,G系列chipsetdriver<>MarvellSATAsupport<>NVIDIASATAsupport<>PacificDigitalADMAsupport<>PacificDigitalSATAQStorsupport<>PromiseSATATX2/TX4support<>SiliconImageSATAsupport<>SiS964/965/966/180SATAsupport<>ULiElectronicsSATAsupport<>VIASATAsupport<>VITESSEVSC-7174/INTEL31244SATAsupport<>Initio162xSATAsupport<>ACPIfirmwaredriverforPATA<>ALiPATAsupport<>AMD/NVidiaPATAsupport<===我用的是SATA,取消PATA支持<>ARTOP6210/6260PATAsupport<>ATIPATAsupport<>CMD64xPATAsupport<>CS5510/5520PATAsupport<>CS5530PATAsupport<>CS5536PATAsupport<>EFARSLC90E66support<>GenericATAsupport<>HPT366/368PATAsupport<>HPT343/363PATAsupport<>IT8211/2PATAsupport<>JMicronPATAsupport<>CompaqTriflexPATAsupport<>MarvellPATAsupportvialegacymode<>IntelPATAMPIIXsupport<===我用的是SATA,取消PATA支持<>IntelPATAoldPIIXsupport<===我用的是SATA,取消PATA支持<>NETCELLRevolutionRAIDsupport<>NatSemiNS87410PATAsupport<>NatSemiNS87415PATAsupport<>OlderPromisePATAcontrollersupport<>PCTechRZ1000PATAsupport<>SC1200PATAsupport<>SERVERWORKSOSB4/CSB5/CSB6/HT1000PATAsupport<>PromisePATA2027xsupport<>CMD/SiliconImage680PATAsupport<>SiSPATAsupport<>VIAPATAsupport<>WinbondSL82C105PATAsupport<>IntelSCHPATAsupport<===我用的是SATA,取消PATA支持
6、27ToshibaLaptopsupport东芝笔记本模块支持,不选
7、39CrossMemorySupport40Enablecleancachedrivertocachecleanpagesiftmemispresent41Enablefrontswaptocacheswappagesiftmemispresent(这三部分不太了解)
8、32/dev/cpu/*/cpuid-CPUinformationsupport是否打开记录CPU相关信息功能。这会在/dev/cpu中建立一系列的设备文件,用以让过程去访问指定的CPU。能从/dev/cpu/x/cpuid获得CPU的唯一标识符(CPUID)。
9、29EnableX86boardspecificfixupsforreboot修正某些旧x86主板的重起bug,这种主板基本绝种了,我认为可以不选择这一项
10、[]VoltageandCurrentRegulatorSupport—>
11、22PreemptionModel(VoluntaryKernelPreemption(Desktop))内核抢占模式一些优先级很高的程序可以先让一些低优先级的程序执行,即使这些程序是在核心态下执行。从而减少内核潜伏期,提高系统的响应。当然在一些特殊的点的内核是不可抢先的,比如内核中的调度程序自身在执行时就是不可被抢先的。这个特性可以提高桌面系统、实时系统的性能。NoForcedPreemption(Server)适合服务器环境的禁止内核抢占这是传统的LINUX抢先式模型,针对于高吞吐量设计。它同样在很多时候会提供很好的响应,但是也可能会有较长的延迟。如果你是建立服务器或者用于科学运算,选这项,或者你想要最大化内核的原始运算能力,而不理会调度上的延迟。(默认选项)VoluntaryKernelPreemption(Desktop)适合普通桌面环境的自愿内核抢占这个选项通过向内核添加更多的“清晰抢先点”来减少内核延迟。这些新的抢先点以降低吞吐量的代价,来降低内核的最大延迟,提供更快的应用程序响应。这通过允许低优先级的进程自动抢先来响应事件,即使进程在内核中进行系统调用。这使得应用程序运行得更“流畅”,即使系统已经是高负荷运转。如果你是为桌面系统编译内核,选这项。PreemptibleKernel(Low-LatencyDesktop)适合运行实时程序的主动内核抢占这个选项通过使所有内核代码(非致命部分)编译为“可抢先”来降低内核延迟。这通过允许低优先级进程进行强制抢先来响应事件,即使这些进程正在进行系统调用或者未达到正常的“抢先点”。这使得应用程序运行得更加“流畅”即使系统已经是高负荷运转。代价是吞吐量降低,内核运行开销增大。选这项如果你是为桌面或者嵌入式系统编译内核,需要非常低的延迟。如果你要最快的响应,选第三项。我认为万物是平衡的,低延迟意味着系统运行不稳定,因为过多来响应用户的要求,所以我选第二个。
12、PowermanagementandACPIoptionsPowerManagementsupport
13、[]FusionMPTdevicesupport—>
14、Busoptions(PCIetc.)PCIsupport(这个必须选)
15、[]LEDSupport—><===发光二级管,应该是跟显示器相关的驱动,由于我运行的是虚拟机,所以我选择关闭
16、5Supportforextended(non-PC)x86platforms如果选的话,你将可以选择支持如下32位X86的平台。AMDElan,NUMAQ(IBM/Sequent),RDCR-321xSoC,SGI320/540(VisualWorkstation),STA2X11-based(e.g.Northville),Summit/EXA(IBMxUnisysES7000IA32seriesMoorestownMIDdevices如果你有这样的系统,或者你想要构建一个这样的通用的分布式,选择Y,否则选择N
17、PPSsupport—>
18、PCIIO-APIChotplugsupport选Y
19、35Allowformemorycompaction
20、25Machinecheckinjectorsupport让CPU检测到系统故障时通知内核,以便内核采取相应的措施(如过热关机等)(不明白此项与上一项的区别,原来的配置中是做为模块加入内核的)
21、GCOV-basedkernelprofiling[]Enablegcov-basedkernelprofiling不选
22、[]Multipledevicesdriversupport(RAIDandLVM)—>暂时没有要使用Raid(磁盘阵列)和LVM(逻辑卷管理器,添加,删除逻辑分区)的需求
23、Securityoptions安全特性,我选择全关,当然,这些选项不会影响你的日常开发,办公[]Enableaccesskeyretentionsupport<===关闭[]Enabledifferentsecuritymodels<===关闭[]Enablethesecurityfsfilesystem[]FilePOSIXCapabilities<===关闭[]IntegrityMeasurementArchitecture(IMA)
24、3Blocklayerdataintegritysupport块设备数据完整性支持
25、3EnableMPStableMPS多处理器规范,不选
26、<>Multimediasupport—><>/dev/agpgart(AGPSupport)—><—virtualbox不支持虚拟独立显卡-*-VGAarbitration(MaximiumnumberofGPU[]LatopHybirdGraphics–GPUswitchsupport<*>DirectRenderingManager(XFree0andhigherDRIsupport)—><>Lowlevelvideooutputswitchcontrols<>Supportforframebufferdevices—>[]Backlight&LCDdevicesupport—><—支持背光设置,比如pda等。我用不到Displaydevicesupport—>Consoledisplaydriversupport—>[]EnableScrollbackBufferinSystemRAM
27、Kprobes调试内核除非开发人员,否则不选
28、PCIExpressHotplugdriver选Y
29、Filesystems—><>Secondextendedfssupport<>Ext3journallingfilesystemsupport<===我使用的是ext4FS<*>TheExtended4(extfilesystem[]Enableext4devcompatibility[*]Ext4extendedattributes[*]Ext4POSIXAccessControlLists[]Ext4SecurityLabels<===取消SELinux支持[]JBD(extdebuggingsupport[]JBD2(extdebuggingsupport<>Reiserfssupport<>JFSfilesystemsupport<>XFSfilesystemsupport<>OCFS2filesystemsupport[*]Dnotifysupport[*]Inotifysupportforuserspace[]Quotasupport<===磁盘配额支持,限制某个用户或者某组用户的磁盘占用空间,暂时没这个需求,你可以把它编译成模块<>Kernelautomountersupport<*>Kernelautomounterversion4support(alsosupportsv<>FUSE(FilesysteminUserspace)supportCaches—>CD-ROM/DVDFilesystems—><>ISO9660CDROMfilesystemsupport<===在虚拟机内,我不用CDROM<>UDFfilesystemsupportDOS/FAT/NTFilesystems—><>MSDOSfssupport<===我没有微软fs的设备<>VFAT(Windows-fssupport<===我没有微软fs的设备<>NTFSfilesystemsupportPseudofilesystems—>[]Miscellaneousfilesystems—><===如果你没有其他FS的支持需求,关[*]NetworkFileSystems—><===如果你没有NFS的支持需求,关PartitionTypes—>[]Advancedpartitionselection<===如果不是和其他系统共存,可以不选-*-Nativelanguagesupport—>//选上Chinese
30、PCIPASIDsupport不确定的话选择N
31、17EnableDMIscanning选择Y除非你已经证明当进入DMI时不影响你的配置。PNPBIOS代码需要这一项的支持。
32、PCIDebugging我认为这里没有必要选
33、SupportforPCIHotplug支持热拔插PCI设备FakePCIHotplugdriverCompaqPCIHotplugdriverSaveconfigurationintoNVRAMonCompaqserversIBMPCIHotplugdriverACPIPCIHotplugdriverACPIPCIHotplugdriverIBMextensionsCompactPCIHotplugdriverSHPCPCIHotplugdriver
34、13Processorfamily(Pentium-Pro)处理器系列,请按照你实际使用的CPU选择这里是处理器的类型。这里的信息主要目的是用来优化。为了让内核能够在所有X86构架的CPU上运行(虽然不是最佳速度),在这你可以选?内核不会运行在比你选的构架还要老的机器上。比如,你选了Pentium构架来优化内核,它将不能在486构架上运行。如果你不清楚,选?()386()486()586/K5/5x86/6x86/6x86MX()Pentium-Classic()Pentium-MMX(系统默认选项)Pentium-Pro()Pentium-II/Celeron(pre-Coppermine)()Pentium-III/Celeron(Coppermine)/Pentium-IIIXeon()PentiumM()Pentium-4/Celeron(P4-based)/Pentium-4M/olderXeon()K6/K6-II/K6-III()Athlon/Duron/K7()Opteron/Athlon64/Hammer/K8()Crusoe()Efficeon()Winchip-C6()Winchip-2/Winchip-2A/Winchip-3()GeodeGX1()GeodeGX/LX()CyrixIII/VIA-C3()VIAC3-2(Nehemiah)()VIAC7()Core2/newerXeon()IntelAtom
35、RootPortAdvancedErrorReportingsupport硬件驱动会负责发送错误信息
36、2Symmetricmulti-processingsupport对称多处理器支持,如果你有多个CPU或者使用的是多核CPU就选上.此时”EnhancedRealTimeClockSupport”选项必须开启,”AdvancedPowerManagement”选项必须关闭如果你选N,内核将会在单个或者多个CPU的机器上运行,但是只会使用一个CPU。如果你选Y,内核可以在很多(但不是所有)单CPU的机器上运行,在这样的机器,你选N会使内核运行得更快。注意如果你选Y,然后在Processorfamily选项中选择“?or“Pentium”,内核将不能运行在486构架的机器上。同样的,多CPU的运行于PPro构架上的内核也无法在Pentium系列的板上运行。
37、MessageSignaledInterrupts(MSIandMSI-X)这使得设备驱动能够使用MIS(消息信号中断)选Y
38、-*-GenericThermalsysfsdriver—>
39、37Enablerecoveryfromhardwarememoryerrors选择Y
40、8Supportnon-standard32-bitSMParchitectures非标准的32位SMP结构支持,不选
41、[]Accessibilitysupport—>
42、23RerouteforbrokenbootIRQs防止同时收到多个bootIRQ(中断)时,系统混乱
43、SonicsSiliconBackplane—>
44、42Allocate3rd-levelpagetablesfromhighmem在内存很多(大于4G)的机器上将用户空间的页表放到高位内存区,以节约宝贵的低端内存。
45、IRQsubsystem—>中断子系统Supportsparseirqnumbering<===支持稀有的中断编号,关闭
46、<>InfiniBandsupport—>[*]EDAC(ErrorDetectionAndCorrection)reporting—>//硬件故障repoting
47、Kernelhacking[]Showtiminginformationonprintks<===在printk的输出中包含时间信息,可以用来分析内核启动过程各步骤所用时间,我不需要debug内核[]Enable__deprecatedlogic[*]Enable__must_checklogic(Warnforstackframeslargerthan(needsgcc[]MagicSysRqkey<===一种通过快捷键控制系统方式,除非你非常清楚这个选项,官方不推荐选择[]Enableunused/obsoleteexportedsymbols[]DebugFilesystem[]Run‘makeheaders_check’whenbuildingvmlinux[]Kerneldebugging<===内核调试,关[]EnableSLUBperformancestatistics[]Compilethekernelwithframepointers<===还是跟内核开发有关[]DelayeachbootprintkmessagebyNmilliseconds<>torturetestsforRCU[]CheckforstalledCPUsdelayingRCUgraceperiods<>Selftestforthebacktracecode[]Forceextendedblockdevicenumbersandspreadthem[]Fault-injectionframework[]Latencymeasuringinfrastructure[*]Sysctlchecks[]Tracers—>[]RemotedebuggingoverFireWireearlyonboot<===启动过程中,允许远程调试内核[]Enabledynamicprintk()support[]EnabledebuggingofDMA-APIusage[]Samplekernelcode—>[]Filteraccessto/dev/mem[]Enableverbosex86bootupinfomessages<===在内核镜像解压缩阶段输出启动信息,关闭后相当于无声启动(SlientBootup)-*-Earlyprintk[]EarlyprintkviaEHCIdebugport<===允许printk通过EHCI调试端口输出内核日志,调试的一律关[]Use4Kbforkernelstacksinsteadof8Kb[]EnableIOMMUstress-testmodeIOdelaytype(port0x80basedport-IOdelay[recommended])—>[*]Allowgcctouninlinefunctionsmarked‘inline’
48、DebugPCIExpressASPM选NDefaultASPMpolicy(X)BIOSdefault()powersave()performance
49、19SMT(Hyperthreading)schedulersupport支持Intel的超线程(HT)技术超线程调度器在某些情况下将会对IntelPentium4HT系列有较好的支持。如果你不清楚,选N
50、NetworkingsupportNetworkingoptionsPacketsocketUnixdomainsocketsTransformationuserconfigurationinterface[]Transformationsubpolicysupport(EXPERIMENTAL)[]Transformationmigratedatabase(EXPERIMENTAL)[]Transformationstatistics(EXPERIMENTAL)PF_KEYsockets[]PF_KEYMIGRATE(EXPERIMENTAL)[Y]TCP/IPnetworking[Y]IP:multicasting[Y]IP:advancedrouterChooseIP:FIBlookupalgorithm(chooseFIB_HASHifunsure)(FIB_HASH)│[Y]IP:policyrouting[Y]IP:equalcostmultipath[Y]IP:verboseroutemonitoring[]IP:kernellevelautoconfigurationIP:tunneling
51、[]SPIsupport—>
52、2BlocklayerSGsupportv4通用scsi块设备第4版支持
53、PCIaccessmode(Any)()BIOS()MMConfig()Direct(X)Any
54、SCSIdevicesupport—><>RAIDTransportClass-*-SCSIdevicesupport[]legacy/proc/scsi/support<===我没有SCSI设备*SCSIsupporttype(disk,tape,CD-ROM)*<*>SCSIdisksupport//就算你用SATA,此选项也必选<>SCSItapesupport<>SCSIOnStreamSC-x0tapesupport<>SCSICDROMsupport<===我没有SCSI设备<>SCSIgenericsupport<===我没有SCSI设备<>SCSImediachangersupport[]ProbeallLUNsoneachSCSIdevice[]VerboseSCSIerrorreporting(kernelsize+=12K)<===我没有SCSI设备[]SCSIloggingfacility[]AsynchronousSCSIscanningSCSITransports—><>ParallelSCSI(SPI)TransportAttributes<===我没有SCSI设备<>FiberChannelTransportAttributes<>iSCSITransportAttributes<>SASDomainTransportAttributes<>SRPTransportAttributes[]SCSIlow-leveldrivers—><>SCSIDeviceHandlers—><>OSD-Initiatorlibrary
55、[]enabledeprecatedsysfsfeaturestosupportolduserspacetools
56、54(0xPhysicaladdresswherethekernelisloaded
57、Processortypeandfeatures(处理器类型及特点)?1DMAmemoryallocationsupport该选项允许小于32位地址的设备使用前16MB的地址空间,如果不缺定的话,选Y
58、3Forcedmoduleunloading允许强制卸载正在使用中的模块(比较危险)这个选项允许你强行卸除模块,即使内核认为这不安全。内核将会立即移除模块,而不管是否有人在使用它(用rmmod-f命令)。这主要是针对开发者和冲动的用户提供的功能。如果不清楚,选N。
59、Enablefull-sizeddatastructuresforcore:在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能。
60、{*}HardwareMonitoringsupport—>
61、49Enableseccomptosafelycomputeuntrustedbytecode只有嵌入式系统可以不选
62、RCUSubsystem—>非对称读写锁系统是一种高性能的kernel锁机制,适用于读多写少环境RCUImplementation(Tree-basedhierarchicalRCU)—>RCU实现机制Tree(X)Tree-basedhierarchicalRCU基本数按等级划分EnabletracingforRCU激活跟踪(Tree-basedhierarchicalRCUfanoutvalue基本数按等级划分分列值Disabletree-basedhierarchicalRCUauto-balancing
63、PCIExpressASPMcontrol这使得OS控制的PCIExpressASPM(活动状态电源管理)和时钟电源管理。ASPM支持状态L0/L0s/L选Y
64、47MTRRcleanupsupportMTRR清理(27内核新增功能,不确定可以不选)MTRRcleanupenablevalue(0-MTRRcleanupspareregnum(0-x86PATsupportx86architecturalrandomnumbergenerator
65、4Moduleversioningsupport有时候,你需要编译模块。选这项会添加一些版本信息,来给编译的模块提供独立的特性,以使不同的内核在使用同一模块时区别于它原有的模块。这有时可能会有点用。如果不清楚,选N。允许使用其他内核版本的模块(可能会出问题)
66、[]AuxiliaryDisplaysupport—>
67、9Eurobraille/Irispoweroffmodule来自urobraille的iris机器不支持APM和ACPI来适时关闭自己,此模块在内核中起到这一作用。这是用于urobraille的iris机子,不确定的话,不选。
68、12Memtest这一选项使内核增加一个“memtest”(内核测试)的参数,这将允许设置memtest。如果你不知道如何回答这个问题,选择N
69、<>I2Odevicesupport—>
70、<>MMC/SD/SDIOcardsupport—>
71、<>ATA/ATAPI/MFM/RLLsupport(DEPRECATED)—>
72、<*>Connector-unifieduserspace<->kernelspacelinker—>内核空间与用户空间的信道[*]Reportprocesseventstouserspace报告处理时间给用户空间
73、28DelllaptopsupportDell笔记本模块支持,不选
74、{*}Powersupplyclasssupport—>
75、4SupportforbigSMPsystemswithmorethan8CPUs默认情况下为不选
76、NatSemiSCx200support选择编译为模块
77、36Pagemigration(选择Y)EnableKSMforpagemerging(Lowaddressspacetoprotectfromuserallocation
78、ISAsupport(以及之后的EISA)查看你的主板上是否有ISA插槽。ISA是总线系统的名称,它是一个老的系统,现已被PCI取代。新的主板已经不支持它,如果你还有,选择Y,否则,选择N
79、PCIStubdriver选择Y或者M,如果你想要:当一个设备去注册其他的客户操作系统时需要保留该PCI设备
80、[*]Profilingsupport不选剖面支持,用一个工具来扫描和提供计算机的剖面图。支持系统评测(对于大多数用户来说并不是必须的)
81、30dev/cpu/microcode-microcodesupport是否支持IntelIA32架构的CPU。这个选项将让你可以更新IntelIA32系列处理器的微代码,显然你需要到网上去下载最新的代码,LINUX不提供这些代码。当然你还必须在文件系统选项中选择/devfilesystemsupport才能正常的使用它。如果你把它译为模块,它将是microcode。IA32主要用于高于4GB的内存。详见下面的“高内存选项”。使用不随Linux内核发行的IA32微代码,你必需有IA32微代码二进制文件,仅对Intel的CPU有效。IntelmicrocodepatchloadingsupportAMDmicrocodepatchloadingsupport
82、Enableeventpollsupport:支持事件轮循的系统调用。
83、31/dev/cpu/*/msr-Model-specificregistersupport是否打开CPU特殊功能寄存器的功能。这个选项桌面用户一般用不到,它主要用在Intel的嵌入式CPU中的,这个寄存器的作用也依赖与不同的CPU类型而有所不同,一般可以用来改变一些CPU原有物理结构的用途,但不同的CPU用途差别也很大。在多cpu系统中让特权CPU访问x86的MSR寄存器。
84、[*]DMAEnginesupport—>
85、Enabletheblocklayer块设备支持,使用硬盘/USB/SCSI设备者必选这选项使得块设备可以从内核移除。如果不选,那么blockdev文件将不可用,一些文件系统比如ext3将不可用。这个选项会禁止SCSI字符设备和USB储存设备,如果它们使用不同的块设备。选Y,除非你知道你不需要挂载硬盘和其他类似的设备。不过此项无可选项
86、52kexecsystemcall(kexec系统调用)kexec是一个用来关闭你当前内核,然后开启另一个内核的系统调用。它和重启很像,但是它不访问系统固件。由于和重启很像,你可以启动任何内核,不仅仅是LINUX。kexec这个名字是从exec系统调用来的。它只是一个进程,可以确定硬件是否正确关闭,Linus本人都没话说,估计是受害不浅。我们当然不能上当,选N!提供kexec系统调用,可以不必重启而切换到另一个内核,如果需要就选择,对大多数用户来说并不需要.
87、[]Macintoshdevicedrivers—>Mac系统硬件设备驱动,没什么好说的,关
88、ReadCNB20LEHostBridgeWindows没有公共规范的芯片组,此功能已知是不完整的。如果你不知道需不需要它,请选择N
89、[]Stagingdrivers—>
90、OProfilesystemprofilingOProfile评测和性能监控工具
91、20Multi-coreschedulersupport针对多核CPU进行调度策略优化多核调度机制支持,双核的CPU要选。多核心调度在某些情况下将会对多核的CPU系列有较好的支持。如果你不清楚,选N
92、<>Kernel.configsupport这个选项允许.config文件(即编译LINUX时的配置文件)保存在内核当中
93、Automaticprocessgroupscheduling自动进程组调度
94、ACPI(AdvancedConfigurationandPowerInterface)Support—>见附1
95、Executablefileformats/EmulationsKernelsupportforELFbinaries选择YWriteELFcoredumpswithpartialsegments不选Kernelsupportfora.outandECOFFbinaries编译成模块KernelsupportforMISCbinaries编译成模块
96、15PentiumPromemoryorderingerrataworkaround旧的PentiumPro多处理器系统有勘误能力,可能会导致在少数的情况下,违反x86的排序标准内存操作。启用此选项将尝试解决一些(但不是全部)此类问题,但将以spinlock和内存为代价。
97、56(0xAlignmentvaluetowhichkernelshouldbealigned
98、[]Configurestandardkernelfeatures(forsmallsystems)—>这个选项可以让内核的基本选项和设置无效或者扭曲。这是用于特定环境中的,它允许“非标准”内核。你要是选它,你一定要明白自己在干什么。这是为了编译某些特殊用途的内核使用的,例如引导盘系统。配置标准的内核特性(为小型系统)Enable16-bitUIDsystemcalls:允许对UID系统调用进行过时的16-bit包装。Sysctlsyscallsupport几乎使用不到这一选项,不选它可以轻微使内核变小Includeallsymbolsinkallsyms:在kallsyms中包含内核知道的所有符号,内核将会增大300K。Enablesupportforprintk:允许内核向终端打印字符信息,在需要诊断内核为什么不能运行时选择。BUG()support:显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错误被忽略。EnableELFcoredumps:内存转储支持,可以帮助调试ELF格式的程序。
99、DeviceDrivers—>GenericDriverOptions—>()pathtoueventhelper[]Maintainadevtmpfsfilesystemtomountat/dev[*]Selectonlydriversthatdon’tneedcompile-timeexternalfirmware[*]Preventfirmwarefrombeingbuilt-*-Userspacefirmwareloadingsupport[*]Includein-kernelfirmwareblobsinkernelbinary()Externalfirmwareblobstobuildintothekernelbinary[]DriverCoreverbosedebugmessages[]Manageddeviceresourcesverbosedebugmessages管理设备资源的冗长调试信息,我不需要
100、33HighMemorySupport(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处理器(PentiumPro和更高级的)都能运行PAE模式。注意:如果你选64GB,那么在不支持PAE的CPU上内核将无法启动。你机器上的内存能够被自动探测到,或者你可以用类似于“mem=256M”的参数强制给内核指定内存大小。4GB选这项如果你用的是32位的处理器,内存在1-4GB之间。64GB选这项如果你用的是32位的处理器,内存大于4GB。()off(X)4GB()64GB
101、PCIExpressECRCsettingscontrol如果怀疑,请选择N
102、APM(AdvancedPowerManagement)BIOSsupport—>选acpi就不用apm,一般你也只用acpi&
103、OneLaptopPerChildsupport不选
104、43Checkforlowmemorycorruption低位内存脏数据检查,默认是每60秒检查一次。一般这种脏数据是因某些Bios处理不当引起的。
105、<>Parallelportsupport—>
106、-*-Kernel->userspacerelaysupport(formerlyrelayfs)在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口,我目前没有此类应用场景
107、[]X86PlatformSpecificDeviceDrivers—><===一些笔记本的驱动,我没有相关设备
108、PowerManagementDebugSupport不想调试ACPI这个你现在可以勾掉,不勾也没事,稍侯会在kernel-hacking这一节勾掉调试,这里也就没
109、PCEnginesALIXSystemSupport(LEDsetup)SoekrisEngineeringnet5501SystemSupport(LEDS,GPIO,etc)TraverseTechnologiesGEOSSystemSupport(LEDS,GPIO,etc)
110、[*]InitialRAMfilesystemandRAMdisk(initramfs/initrd)support用于在真正内核装载前,做一些操作(俗称两阶段启动),比如加载module,mount一些非root分区,提供灾难恢复shell环境等,资料,我是期望直接从kernelimage直接启动,所以没选它
111、[]ISDNsupport—>
112、SuspendtoRAMandstandby待机
113、[*]WatchdogTimerSupport—>系统监视程序,我一般不用
114、48EFIruntimeservicesupport(EFI启动支持)这里允许内核在EFI平台上使用储存于EFI固件中的系统设置启动。这也允许内核在运行时使用EFI的相关服务。这个选项只在有EFI固件的系统上有用,它会使内核增加8KB。另外,你必须使用最新的ELILO登录器才能使内核采用EFI的固件设置来启动(GRUB和LILO完全不知道EFI是什么东西)。即使你没有EFI,却选了这个选项,内核同样可以启动。大家应该用的是GRUB,所以选上这个也没什么用。除非你的系统支持EFI(一种可代替传统BIOS的技术)否则不选。
115、45Mathemulation数学协处理器仿真,486DX以上的cpu就不要选它了
116、<>UserspaceI/Odrivers—>
117、50Enable-fstack-protectorbufferoverflowdetection(EXPERIMENTAL)
118、[]AmateurRadiosupport—>我没有无线电<>CANbussubsystemsupport—><>IrDA(infrared)subsystemsupport—>Bluetoothsubsystemsupport—><>RxRPCsessionsockets--Wireless—>我没有使用无线网卡<>WiMAXWirelessBroadbandsupport—><>RFswitchsubsystemsupport—>我没有RF切换设备<>Plan9ResourceSharingSupport(9P(Experimental)—><>CAIFsupport—><>Cephcorelibrary(EXPERIMENTAL)
119、5PartitionTypesAdvancedpartitionselection如果你想要在linux上使用一个在其他的介质上运行着操作系统的硬盘时,选择Y,如果你不确定时可以选N
120、16HPETTimerSupport(HPET时钟支持)允许内核使用HPET。HPET是替代8254芯片的新一代定时器,i686及以上级别的主板都支持,可以安全的选上。但是,HEPT只会在支持它的平台和BIOS上运行。如果不支持,8254将会激活。选N,将继续使用8254时钟。
121、7RDCR-321xSoC嵌入式相关,不选
122、<>Telephonysupport—>Inputdevicesupport—>-*-Genericinputlayer(neededforkeyboard,mouse,…)-*-Supportformemorylessforce-feedbackdevices<>Polledinputdeviceskeleton<===一种周期性轮询硬件状态的驱动,去掉后没什么副作用*Userlandinterfaces*-*-Mouseinterface[]Providelegacy/dev/psauxdevice(Horizontalscreenresolution(Verticalscreenresolution<>Joystickinterface<*>Eventinterface//将输入设备的事件存储到/dev/input/eventX供应用程序读取<>Eventdebugging*InputDeviceDrivers*-*-Keyboards—>[*]Mice—>[]Joysticks/Gamepads—><===游戏设备[]Tablets—><===平板PC[]Touchscreens—><===触摸屏[]Miscellaneousdevices—><===杂七杂八的驱动,扬声器,笔记本扩展按键等HardwareI/Oports—>
123、Enablefutexsupport:快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序。
124、FirmwareDrivers—><>BIOSEnhancedDiskDrivecallsdeterminebootdisk<>BIOSupdatesupportforDELLsystemsviasysfs<>DellSystemsManagementBaseDriver[*]ExportDMIidentificationviasysfstouserspace//将BIOS里的DMI区信息导出到用户空间,部分系统管理工具可能会用到[]iSCSIBootFirmwareTableAttributes
125、ChooseSLABallocator(SLAB)—>选择内存分配管理器(强烈推荐使用SLUB)
126、21FinegranularitytasklevelIRQtimeaccounting如果不确定的话,选N,默认为不选。
127、Optimizeforsize这个选项将在GCC命令后用“-Os”代替“-O2″参数,这样可以得到更小的内核。没必要选。选上了有时会产生错误的二进制代码。
128、Usefullshmemfilesystem:除非你在很少的内存且不使用交换内存时,才不要选择这项。后面的这四项都是在编译时内存中的对齐方式,0表示编译器的默认方式。使用内存对齐能提高程序的运行速度,但是会增加程序对内存的使用量。内核也是一组程序呀。EnableVMeventcountersfor/proc/vmstat:允许在/proc/vmstat中包含虚拟内存事件记数器。[*]Disableheaprandomization禁用随机heap(heap堆是一个应用层的概念,即堆对CPU是不可见的,它的实现方式有多种,可以由OS实现,也可以由运行库实现,如果你愿意,你也可以在一个栈中来实现一个堆)
129、<*>RealTimeClock—>
130、Exporttask/processstatisticsthroughnetlink(EXPERIMENTAL)通过netlink接口向用户空间导出任务/进程的统计信息,与BSDProcessAccounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的Enableper-taskdelayaccounting(EXPERIMENTAL)在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间Enableextendedaccountingovertaskstats(EXPERIMENTAL)在统计信息中包含扩展进程所花费的时间
131、<>MemoryTechnologyDevice(MTD)support—>
132、5Sourcechecksumforallmodules为所有的模块校验源码,如果你不是自己编写内核模块就不需要它这个功能是为了防止你在编译模块时不小心更改了内核模块的源代码但忘记更改版本号而造成版本冲突。如果不清楚,选N。
133、<>SonyMemoryStickcardsupport(EXPERIMENTAL)—>
134、44(Amountoflowmemory,inkilobytes,toreservefortheBIOS
135、[]Miscdevices—>没有需要支持的杂项设备
136、[]USBsupport—><===这个选项,对于跑物理机建议开启,因为有可能你的键盘是USB的,我是跑虚拟机的,所以关了
137、53kernelcrashdumps内核崩溃时,dump运行时信息。就算crash了,我也不会去调试内核的coredump
138、34Memorymodel(FlatMemory)一般选”FlatMemory”,其他选项涉及内存热插拔(X)FlatMemory(平坦内存模式)这个选项允许你改变内核在内部管理内存的一些方式。大多数用户在这只会有一个选项:FlatMemory。这是普遍的和正确的选项。一些用户的机器有更高级的特性,比如NUMA和内存热拔插,那将会有不同的选项。DiscontiguousMemory(非接触式内存模式)是一个更成熟、更好的测试系统。但是对于内存热拔插系统不太合适,会被“SparseMemory”代替。如果你不清楚“SparseMemory”和“DiscontiguousMemory”的区别,选后者。如果不清楚,就选FlatMemory。SparseMemory(稀疏内存模式)这对某些系统是唯一选项,包括内存热拔插系统。这正常。对于其他系统,这将会被DiscontiguousMemory选项代替。这个选项提供潜在的更好的特性,可以降低代码复杂度,但是它是新的模式,需要更多的测试。如果不清楚,选择“DiscontiguousMemory”或“FlatMemory”。
139、55Buildarelocatablekernel官方说明(建立一个移动的内核,并增加10%的内核尺寸,运行时会被丢弃),我认为没实质性的作用
140、PCIeAERerrorinjectorsupport同上,选N
141、[]GPIOSupport—>
142、[]OProfilemultiplexingsupport(EXPERIMENTAL)
143、-*-Networkdevicesupport—><>Dummynetdriversupport<>Bondingdriversupport<>EQL(seriallineloadbalancing)support<>UniversalTUN/TAPdevicedriversupport<>Virtualethernetpairdevice<>GeneralInstrumentsSurfboard1000<>ARCnetsupport—>-*-PHYDevicesupportandinfrastructure—><===PHY(物理层控制芯片),里面没有我对应的硬件[]Ethernet(10or100Mbit)—><===如果你是百M卡,请自行选择[*]Ethernet(1000Mbit)—>//选择自己对应的硬件[]Ethernet(10000Mbit)—><===如果你是万M卡,请自行选择<>TokenRingdriversupport—><===IBM的令牌环网,用以太网的忽略[]WirelessLAN—><===不用无线网络*EnableWiMAX(Networkingoptions)toseetheWiMAXdrivers*USBNetworkAdapters—>[]Waninterfacessupport—><>FDDIdriversupport<===光纤卡驱动,相信没几个人能用上这玩意<>PPP(point-to-pointprotocol)support<>SLIP(serialline)support[]FibreChanneldriversupport[]Networkconsoleloggingsupport[]VMwareVMXNET3ethernetdriver
144、Run-timePMcorefunctionality
145、38TransparentHugepageSupportTransparentHugepageSupportsysfsdefaultsalwaysmadvise(默认选项)
146、Enablesystem-callauditingsupport支持对系统调用的审计
147、6IOSchedulersIO调度器I/O是输入输出带宽控制,主要针对硬盘,是核心的必须的东西。这里提供了三个IO调度器。DeadlineI/Oscheduler使用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)DeadlineI/O调度器简单而又紧密,在性能上和抢先式调度器不相上下,在一些数据调入时工作得更好。至于在单进程I/O磁盘调度上,它的工作方式几乎和抢先式调度器相同,因此也是一个好的选择。
148、[]HIDDevices—>用不到人力工程学设备
149、1Supportforlarge(2TB+)blockdevicesandfiles仅在使用大于2TB的块设备时需要
150、Enableloadablemodulesupport1Forcedmoduleloading允许强制加载模块
151、-*-PlugandPlaysupport—>[]PNPdebuggingmessages调试信息,老规矩[]Blockdevices—>我没有想要支持的块设备,比如ramdisk,磁盘阵列,CD/DVD刻录等,详见内部选项
152、<>Soundcardsupport—>用不到声卡
153、CPUFrequencyscaling—>[*]CPUFrequencyscaling[]EnableCPUfreqdebugging<===我不需要调试CPUfreq<>CPUfrequencytranslationstatisticsDefaultCPUFreqgovernor(performance)—><===默认用performance高性能的CPU调频方式-*-‘performance’governor<>‘powersave’governor<>‘userspace’governorforuserspacefrequencyscaling<>‘ondemand’cpufreqpolicygovernor<===”周期性的考察CPU负载并自动的动态调整cpu频率”,我只用performance<>‘conservative’cpufreqgovernor*CPUFreqprocessordrivers*<>ProcessorClockingP-statdriver<*>ACPIProcessorP-Statesdriver<>AMDMobileK6-2/K6-3PowerNow!<>AMDMobileAthlon/DuronPowerNow!<>AMDOpteron/Athlon64PowerNow!<>CyrixMediaGX/NatSemiGeodeSuspendModulation<>IntelEnhancedSpeedStep(deprecated)<>IntelSpeedsteponICH-Mchipsets(ioportinterface)<>IntelPentium4clockmodulation<>TransmetaLongRun<>VIACyrixIIILonghaul
154、51Timerfrequency(1000HZ)内核时钟频率桌面1000服务器100或允许设置时钟频率。这是用户定义的时钟中断频率100HZ-1000HZ,不过100HZ对服务器和NUMA系统更合适,它们不需要很快速的响应用户的要求,因为时钟中断会导致总线争用和缓冲打回。注意在SMP环境中,时钟中断由变量NR_CPUS*Hz定义在每个CPU产生。其实和前面的抢先式进程差不多,就是多少频率来响应用户要求。我选了250HZ的。要快点的可以选1000HZ的。但是还是那句话,一切是平衡的。机器过快响应你,它自己的活就不知道做得好不好了。()100HZ100HZ是传统的对服务器、SMP和NUMA的系统选项。这些系统有比较多的处理器,可以在中断较集中的时候分担中断()250HZ250HZ对服务器是一个好的折衷的选项,它同样在SMP和NUMA系统上体现出良好的反应速度。()300HZ(X)1000HZ1000HZ对于桌面和其他需要快速事件反应的系统是非常棒的。
155、{M}I2Csupport—>感知硬件状态,比如温度,风扇转速
156、Interruptsonhypertransportdevices这将允许高速传输设备使用中断,如果不明确的话,选择Y
157、Hibernation(aka‘suspendtodisk’)休眠
158、<>Multimediasupport—>
159、CPUidlePMsupport
160、SFI(SimpleFirmwareInterface)Support—>
161、10Single-depthWCHANoutput跟proc相关的最好不要关,选Y
162、[]ControlGroupsupport—>cgroups支持,文档资料,cgroups主要作用是给进程分组,并可以动态调控进程组的CPU占用率。比如A进程分到apple组,给予20%CPU占用率,E进程分easy组,给予50%CPU占用率,最高100%。我目前没有此类应用场景,用到时会选择将其编译进去。CPUbandwidthprovisioningforFAIR_GROUP_SCHED此选项允许用户定义的CPU带宽速率(限制)在公平的组调度运行的任务。组没有限制设置被认为是无约束和运行没有限制。GroupschedulingforSCHED_RR/FIFO此功能可以让您显式地分配真实的CPU带宽任务组。
163、IEEE1394(FireWire)support—>
164、CpuidleDriverforIntelProcessors
165、TIVLYNQ—>
166、Auditingsupport审记支持,用于和内核的某些子模块同时工作,例如SecurityEnhancedLinux。只有选择此项及它的子项,才能调用有关审记的系统调用。
167、(Kernellogbuffersize(16=>64KB,17=>128KB)
168、2Moduleunloading允许卸载已经加载的模块
169、Characterdevices—>-*-Virtualterminal[*]Supportforbindingandunbindingconsoledrivers//在某些系统上可以使用多个控制台驱动程序(如framebuffer控制台驱动程序),该选项使得你可以选择其中之一,我一般只用默认的虚拟终端[]/dev/kmemvirtualdevicesupport<===支持/dev/kmem设备,很少用[]Non-standardserialportsupport<===我没有非标准的串口设备Serialdrivers—><>8250/16550andcompatibleserialsupport<===兼容一些老式的串口设备,我一般不用*Non-8250serialportsupport*<>DigiInternationalNEOPCISupport-*-Unix98PTYsupport[]Supportmultipleinstancesofdevpts[]Legacy(BSD)PTYsupport<>IPMItop-levelmessagehandler—><*>HardwareRandomNumberGeneratorCoresupport<>TimerIOMEMHWRandomNumberGeneratorsupport<*>IntelHWRandomNumberGeneratorsupport<>AMDHWRandomNumberGeneratorsupport<===我是intel主板<>AMDGeodeHWRandomNumberGeneratorsupport<===我是intel主板<>VIAHWRandomNumberGeneratorsupport<===我是intel主板<>/dev/nvramsupport<===直接存取CMOS,太危险,关<>SiemensR3964linediscipline<>Applicomintelligentfieldbuscardsupport<>ACPModem(Mwave)support<>NatSemiPC8736xGPIOSupport<>NatSemiBaseGPIOSupport<>AMDCS5535/CS5536GPIO(GeodeCompanionDevice)<>RAWdriver(/dev/raw/rawN)[*]HPET-HighPrecisionEventTimer[]AllowmmapofHPET<>Hangchecktimer
170、46MTRR(MemoryTypeRangeRegister)support(内存类型区域寄存器)在IntelP6系列处理器(PentiumPro,PentiumII和更新的)上,MTRR将会用来规定和控制处理器访问某段内存区域的策略。如果你在PCI或者AGP总线上有VGA卡,这将非常有用。可以提升图像的传送速度5倍以上。选Y,会生成文件/proc/mtrr,它可以用来操纵你的处理器的MTRR。典型地,Xserver会用到。这段代码有着通用的接口,其他CPU的寄存器同样能够使用该功能。Cyrix6×6×86MX和MII处理器有ARR,它和MTRR有着类似的功能。AMDK6-2/K6-3有两个MTRR,CentaurC6有8个MCR允许复合写入。所有这些处理器都支持这段代码,你可以选Y如果你有以上处理器。选Y同样可以修正SMPBIOS的问题,它仅为第一个CPU提供MTRR,而不为其他的提供。这会导致各种各样的问题,所以选Y是明智的。你可以安全地选Y,即使你的机器没有MTRR。这会给内核增加9KB。打开它可以提升PCI/AGP总线上的显卡2倍以上的速度,并且可以修正某些BIOS错误。