linux内核配置make-menuconfig菜单详解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

LINUX内核配置MAKEMENUCONFIG菜单详解我们在linux内核裁剪过程中,进入内核所在目录,键入makemenuconfig就会看到一堆的配置菜单,它们具体代表什么含义呢?我们该如何取舍呢?这里把近期收集到的一些信息做一个总结。1、Generalsetup代码成熟度选项,它又有子项:1.1、promptfordevelopmentand/orincompletecode/drivers该选项是对那些还在测试阶段的代码,驱动模块等的支持。一般应该选这个选项,除非你只是想使用LINUX中已经完全稳定的东西。但这样有时对系统性能影响挺大。1.2、Cross-compilertoolprefix交叉编译工具前缀,例如:Cross-compilertoolprefix值为:(arm-linux-)1.3、Localversion-appendtokernelrelease内核显示的版本信息,填入64字符以内的字符串,你在这里填上的字符口串可以用uname-a命令看到。1.4、Automaticallyappendversioninformationtotheversionstring自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持1.5、Kernelcompressionmode(Gzip)---有四个选项,这个选项是说内核镜像要用的压缩模式,回车一下,可以看到gzip,bzip2,lzma,lxo,一般可以按默认的gzip,如果要用bzip2,lzma,lxo要先装上支持1.6、Supportforpagingofanonymousmemory(swap)使用交换分区或交换文件来做为虚拟内存,一定要选上。1.7、SystemVIPC表示系统的进程间通信InterProcessCommunication,它用于处理器在程序之间同步和交换信息,如果不选这项,很多程序运行不起来,必选。1.8、POSIXMessageQueuesPOSIX标准的消息队列,它同样是一种IPC。建议你最好将它选上1.9、BSDProcessAccounting用户进程访问内核时将进程信息写入文件中。通常主要包括进程的创建时间/创建者/内存占用等信息。建议最好选上。1.10、BSDProcessAccountingversion3fileformat使用新的第三版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式。1.11、Exporttask/processstatisticsthroughnetlink(EXPERIMENTAL)通过netlink接口向用户空间导出任务/进程的统计信息,与BSDProcessAccounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的Enableper-taskdelayaccounting(EXPERIMENTAL)在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间Enableextendedaccountingovertaskstats(EXPERIMENTAL)在统计信息中包含扩展进程所花费的时间1.12、Auditingsupport审记支持,用于和内核的某些子模块同时工作,例如SecurityEnhancedLinux。只有选择此项及它的子项,才能调用有关审记的系统调用。1.13、Enablesystem-callauditingsupport支持对系统调用的审计1.14、IRQsubsystem---中断子系统Supportsparseirqnumbering===支持稀有的中断编号,关闭1.15、RCUSubsystem---非对称读写锁系统是一种高性能的kernel锁机制,适用于读多写少环境RCUImplementation(Tree-basedhierarchicalRCU)---RCU实现机制Tree(X)Tree-basedhierarchicalRCU基本数按等级划分EnabletracingforRCU激活跟踪(32)Tree-basedhierarchicalRCUfanoutvalue基本数按等级划分分列值Disabletree-basedhierarchicalRCUauto-balancing1.16、Kernel.configsupport这个选项允许.config文件(即编译LINUX时的配置文件)保存在内核当中1.17、(17)Kernellogbuffersize(16=64KB,17=128KB)1.18、[]ControlGroupsupport---cgroups支持,文档资料,cgroups主要作用是给进程分组,并可以动态调控进程组的CPU占用率。比如A进程分到apple组,给予20%CPU占用率,E进程分easy组,给予50%CPU占用率,最高100%。我目前没有此类应用场景,用到时会选择将其编译进去。CPUbandwidthprovisioningforFAIR_GROUP_SCHED此选项允许用户定义的CPU带宽速率(限制)在公平的组调度运行的任务。组没有限制设置被认为是无约束和运行没有限制。GroupschedulingforSCHED_RR/FIFO此功能可以让您显式地分配真实的CPU带宽任务组。1.19、-*-Namespacessupport---命名空间支持,允许服务器为不同的用户信息提供不同的用户名空间服务[*]UTSnamespace通用终端系统的命名空间。它允许容器,比如Vservers利用UTS命名空间来为不同的服务器提供不同的UTS。如果不清楚,选N。[*]IPCnamespaceIPC命名空间,不确定可以不选[*]Usernamespace(EXPERIMENTAL)User命名空间,不确定可以不选[*]PIDNamespacesPID命名空间,不确定可以不选[*]Networknamespace1.20、Automaticprocessgroupscheduling自动进程组调度1.21、[]enabledeprecatedsysfsfeaturestosupportolduserspacetools1.22、-*-Kernel-userspacerelaysupport(formerlyrelayfs)在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口,我目前没有此类应用场景1.23、[*]InitialRAMfilesystemandRAMdisk(initramfs/initrd)support用于在真正内核装载前,做一些操作(俗称两阶段启动),比如加载module,mount一些非root分区,提供灾难恢复shell环境等,资料,我是期望直接从kernelimage直接启动,所以没选它?1.24、Initramfssourcefile(s)initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白1.25、Optimizeforsize这个选项将在GCC命令后用“-Os”代替“-O2″参数,这样可以得到更小的内核。没必要选。选上了有时会产生错误的二进制代码。1.26、Enablefull-sizeddatastructuresforcore:在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能。1.27、Enablefutexsupport:快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序。1.28、Enableeventpollsupport:支持事件轮循的系统调用。1.29、Usefullshmemfilesystem:除非你在很少的内存且不使用交换内存时,才不要选择这项。后面的这四项都是在编译时内存中的对齐方式,0表示编译器的默认方式。使用内存对齐能提高程序的运行速度,但是会增加程序对内存的使用量。内核也是一组程序呀。EnableVMeventcountersfor/proc/vmstat:允许在/proc/vmstat中包含虚拟内存事件记数器。[*]Disableheaprandomization禁用随机heap(heap堆是一个应用层的概念,即堆对CPU是不可见的,它的实现方式有多种,可以由OS实现,也可以由运行库实现,如果你愿意,你也可以在一个栈中来实现一个堆)1.30、ChooseSLABallocator(SLAB)---选择内存分配管理器(强烈推荐使用SLUB)1.31、[]Configurestandardkernelfeatures(forsmallsystems)---这个选项可以让内核的基本选项和设置无效或者扭曲。这是用于特定环境中的,它允许“非标准”内核。你要是选它,你一定要明白自己在干什么。这是为了编译某些特殊用途的内核使用的,例如引导盘系统。配置标准的内核特性(为小型系统)Enable16-bitUIDsystemcalls:允许对UID系统调用进行过时的16-bit包装。Sysctlsyscallsupport几乎使用不到这一选项,不选它可以轻微使内核变小Includeallsymbolsinkallsyms:在kallsyms中包含内核知道的所有符号,内核将会增大300K。Enablesupportforprintk:允许内核向终端打印字符信息,在需要诊断内核为什么不能运行时选择。BUG()support:显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错误被忽略。EnableELFcoredumps:内存转储支持,可以帮助调试ELF格式的程序。1.32、[*]Profilingsupport不选剖面支持,用一个工具来扫描和提供计算机的剖面图。支持系统评测(对于大多数用户来说并不是必须的)1.33、OProfilesystemprofilingOProfile评测和性能监控工具1.35、[]OProfilemultiplexingsupport(EXPERIMENTAL)1.34、Kprobes调试内核除非开发人员,否则不选?1.35、Optimizetracepointcallsites1.36、GCOV-basedkernelprofiling[]Enablegcov-basedkernelprofiling不选2、Enableloadablemodulesupport2.1Forcedmoduleloading允许强制加载模块2.2Moduleunloading允许卸载已经加载的模块2.3Forcedmoduleunloading允许强制卸载正在使用中的模块(比较危险)这个选项允许你强行卸除模块,即使内核认为这不安全。内核将会立即移除模块,而不管是否有人在使用它(用rmmod-f命令)。这主要是针对开发者和冲动的用户提供的功能。如果不清楚,选N。2.4Moduleversioningsupport有时候,你需要编译模块。选这项会添加一些版本信息,来给编译的模块提供独立的特性,以使不同的内核在使用同一模块时区别于它原有的模块。这有时可能会有点用。如果不清楚,选N。允许使用其他内核版本的模块(可能会出问题)2.5Sourcechecksumforallmodules为所有的模块校验源码,如果你不是自己编写内核模块就不需要它这个功能是为了防止你在编译模块时不小心更改了内核模块的源代码但忘记更改版本号而造成版本冲突。如果不清楚,选N。3、Enabletheblocklayer块设备支持,使用硬盘/USB/SCSI设备者必选这选项使得块设备可以从内核移除。如果不选,那么blockdev文件将不可用,一些文件系统比如ext3将不可用。这个选项会禁止SCSI字符设备和USB储存设备,如果它们使用不同的块设备。选Y,除非你知道你不需要挂载硬盘和其他类似的设备。不过此项无可选项3.1Suppo

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功