您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > Linux2.6内核配置详解
[linux[linux[linux[linux内核内核内核内核]]]]2.62.62.62.6内核的配置与编译内核的配置与编译内核的配置与编译内核的配置与编译首先对内核进行菜单配置,代码:1.cd/usr/src/linux2.makemenuconfig复制代码代码成熟度选项,代码:1.Codematurityleveloptions---2.[*]Promptfordevelopmentand/orincompletecode/drivers3.[*]Selectonlydriversexpectedtocompilecleanly复制代码打开使用开发中、不完全的代码/驱动会让内核配置多出很多选项,由于我们需要使用一些正在开发中的功能,因此必需打开这一选项。通用设置选项代码:1.Generalsetup---2.()Localversion-appendtokernelrelease3.[*]Supportforpagingofanonymousmemory(swap)4.[*]SystemVIPC5.[*]POSIXMessageQueues6.[*]BSDProcessAccounting7.[*]BSDProcessAccountingversion3fileformat8.[*]Sysctlsupport9.[]Auditingsupport10.(15)Kernellogbuffersize(16=64KB,17=128KB)11.[*]Supportforhot-pluggabledevices12.[*]KernelUserspaceEvents13.[*]Kernel.configsupport14.[*]Enableaccessto.configthrough/proc/config.gz15.[*]Configurestandardkernelfeatures(forsmallsystems)---16.---Configurestandardkernelfeatures(forsmallsystems)17.[]Loadallsymbolsfordebugging/kksymoops18.[*]Enablefutexsupport19.[*]Enableeventpollsupport20.[*]Optimizeforsize21.[*]Usefullshmemfilesystem22.(0)Functionalignment23.(0)Labelalignment24.(0)Loopalignment25.(0)Jumpalignment复制代码Localversion-appendtokernelrelease:这里填入的是64字符以内的字符串,你在这里填上的字符口串可以用uname-a命令看到。Supportforpagingofanonymousmemory(swap):这是使用交换分区或者交换文件来做为虚拟内存的,当然要选上了。SystemVIPC:表示系统5的InterProcessCommunication,它用于处理器在程序之间同步和交换信息,如果不选这项,很多程序运行不起来的。POSIXMessageQueues:这是POSIX的消息队列,它同样是一种IPC。建议你最好将它选上。BSDProcessAccounting:这是充许用户进程访问内核将账户信息写入文件中的。这通常被认为是个好主意,建议你最好将它选上。Sysctlsupport:这个选项能不重新编译内核修改内核的某些参数和变量,如果你也选择了支持/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:这个选项使gcc使用-Os的参数而不是-O2的参数来优化编译,以获得更小尺寸的内核,建议选上。Usefullshmemfilesystem:除非你在很少的内存且不使用交换内存时,才不要选择这项。后面的这四项都是在编译时内存中的对齐方式,0表示编译器的默认方式。使用内存对齐能提高程序的运行速度,但是会增加程序对内存的使用量。内核也是一组程序呀。可加载模块,代码:1.Loadablemodulesupport---2.[*]Enableloadablemodulesupport3.[*]Moduleunloading4.[]Forcedmoduleunloading5.[*]Moduleversioningsupport(EXPERIMENTAL)6.[]Sourcechecksumforallmodules7.[*]Automatickernelmoduleloading复制代码Enableloadablemodulesupport,很多人喜欢将全部功能、硬件支持一股脑的编进内核,而不是使用模块的方式。这样做非常不好(个人觉得)。其实我也做过嵌入式的开发,在针对特定硬件的平台下尽可能将内核编小,将始终是支持模块加载的。例如我们开发的防火墙就是做为内核的模块被加载的。使用模块支持,你的系统能具有更好的可扩充性。还有一个原因就是自己编写的功能模块、设备驱动模块(假设编写的质量不高)以模块方式工作引起KernelPanic的机率要远远低于不支持模块全部编进内核的方式。讲了这么多,终于可以理直气壮的选上这一功能了。Moduleunloading,不选这个功能,加载的模块就不能卸载。没什么需要多解释的,建议最好选上。Forcedmoduleunloading,这个选项能强行卸载模块,即使内核认为这样并不安全,也就是说你可以把正在使用中的模快卸载掉。如果你不是内核开发人员或者骨灰级的玩家,不要选择这个选项。Moduleversioningsupport(EXPERIMENTAL),这个功能可以让你使用其它版本的内核模块,由于我自己写一些模块,所以我会用到这个选项,因为内核更新太快了,我的头文件更新根本赶不上内核的更新。还有,虽然我在Gentoo下开发,但实际真实环境用的却是从kernel.org下载的内核。虽然我选择了这个选项,不过建议你不要选择这个选项。Sourcechecksumforallmodules,这个功能是为了防止更改了内核模块的代码但忘记更改版本号而造成版本冲突。我估计现在没有哪家公司在开发中还没使用版本控制工具,所以不需要这项了。如果你不是自己写内核模块,那就更不需要这一选项了。Automatickernelmoduleloading,这个选项能让内核自动的加载部份模块,建议你最好选上。举个例子说明一下,如模块eth1394依赖于模块ieee1394。如果选择了这个选项,可以直接加载模块eth1394;如果没有选择这个选项,必需先加载模块ieee1394,再加载模块eth1394,否则将出错。处理器内型及特性,代码:1.Processortypeandfeatures---2.SubarchitectureType(PC-compatible)3.---Processorfamily(Pentium-4/Celeron(P4-based)/Pentium-4M/Xeon)---4.[]Genericx86support5.[*]HPETTimerSupport6.[*]Symmetricmulti-processingsupport7.(2)MaximumnumberofCPUs(2-255)8.[*]SMT(Hyperthreading)schedulersupport9.[]PreemptibleKernel10.[]MachineCheckException11.<M>ToshibaLaptopsupport12.<M>Delllaptopsupport13.<>/dev/cpu/microcode-IntelIA32CPUmicrocodesupport14.<>/dev/cpu/*/msr-Model-specificregistersupport15.<>/dev/cpu/*/cpuid-CPUinformationsupport16.FirmwareDrivers---17.<>BIOSEnhancedDiskDrivecallsdeterminebootdisk(EXPERIMENTAL)HighMemorySupport(4GB)---18.[]Allocate3rd-levelpagetablesfromhighmem19.[]Mathemulation20.[*]MTRR(MemoryTypeRangeRegister)support21.[]BootfromEFIsupport(EXPERIMENTAL)22.[*]Enablekernelirqbalancing23.[]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,这两项都是对本本的支持,其实
本文标题:Linux2.6内核配置详解
链接地址:https://www.777doc.com/doc-6490792 .html