Linux3.0.8 Kernel Configure(make menuconfig配置一)

来源:互联网 发布:航天远景 无人机软件 编辑:程序博客网 时间:2024/06/17 04:51
General setup
常规设置

[]Prompt for development and/or incomplete code/drivers

CONFIG_EXPERIMENTAL=y显示尚在开发中或尚未完成的代码与驱动。除非你是测试人员或者开发者,否则请勿选择 

() Cross-compiler tool prefix

CONFIG_CROSS_COMPILER=“交叉编译工具前缀”

如使用:arm-linux-

() Local version - append to kernel release 
CONFIG_LOCALVERSION=""在内核版本后面附加上你指定的版本信息,这个信息在uname -a命令里面可以看到。 

[ ] Automatically append version information to the version string

CONFIG_LOCALVERSION_AUTO=y自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持  

Kernel compression mode (Gzip) --->
这个选项是说内核镜像要用的压缩模式,回车一下,可以看到gzip,lzma,lxo,一般可以按默认的gzip,如果要用bzip2,lzma,lzo,要先安装相关解压缩工具

(X) GzipHAVE_KERNEL_GZIP=y用于UNIX系统的文件压缩格式 

( ) Bzip2HAVE_KERNEL_BZIP2=y bzip2是一个基于Burrows-Wheeler变换的无损压缩软件,压缩效果比传统的LZ77/LZ78压缩算法来得好。bzip2比传统的gzip或者ZIP的压缩效率更高,但是它的压缩速度较慢。
( ) LZMAHAVE_KERNEL_LZMA=y是一个Deflate和LZ77算法改良和优化后的压缩算法。它使用类似于LZ77的字典编码机制,在一般的情况下压缩率比bzip2为高,用于压缩的可变字典最大小可达4GB.
( ) XZHAVE_KERNEL_XZ=y是一个使用 LZMA压缩算法的无损数据压缩文件格式。和gzip与bzip2一样,同样支持多文件压缩,但是约定不能将多于一个的目标文件压缩进同一个档案文件。 相反,xz通常作为一种归档文件自身的压缩格式,例如使用tar或cpioUnix程序创建的归档。
 ( ) LZOHAVE_KERNEL_LZO=y是致力于解压速度的一种数据压缩算法,LZO是Lempel-Ziv-Oberhumer的缩写

((none)) Default hostname
CONFIG_LOCALVERSION_AUTO=yCONFIG_DEFAULT_HOSTNAME="(none)"指定一个默认的主机名。指定了这个以后,可以省去使用sethostname命令设置主机名称。在制作最小系统时比较有用。 

[*] Support for paging of anonymous memory (swap)

使你的内核支持虚拟内存 ,CONFIG_SWAP=y是否支持交换分区 

[*] System V IPC

为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。

CONFIG_SYSVIPC=y支持System V IPC.这个主要是为了兼容使用了System V IPC的UNIX程序而设的,如果不考虑兼容性,则可以忽略这个参数。  

[*] POSIX Message Queues

这是POSIX的消息队列,它同样是一种IPC。建议你最好将它选上。

CONFIG_POSIX_MQUEUE=y是否支持POSIX Message Queues,这个是为了兼容POSIX标准而设的。这个只有在CONFIG_EXPERIMENTAL=y时显示。 
[*] BSD Process Accounting

这是允许用户进程访问内核,将账户信息写入文件中。这通常被认为是个好主意,建议你最好将它选上。将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/内存占用等信息。

CONFIG_BSD_PROCESS_ACCT=y将进程统计信息写入文件中,使用accton命令开启这个功能。 
[*]   BSD Process Accounting version 3 file format  

选用的话统计信息将会以新的格式(V3)写入,这格式包含进程ID和父进程。注意这个格式和以前的 v0/v1/v2 格式不兼容,所以你需要 升级相关工具来使用它。选不选均可。

CONFIG_BSD_PROCESS_ACCT_V3=y进程统计文件使用V3格式。 

 [*] open by fhandle syscalls
CONFIG_FHANDLE=y打开文件可以通过句柄子系统调用 

[*] Export task/process statistics through netlink (EXPERIMENTAL) 
处于实验阶段的功能。通过通用的网络输出工作/进程的相应数据,和BSD不同的是,这些数据在进程运行的时候就可以通过相关命令访问。和BSD类似,数据将在进程结束时送入用户空间。如果不清楚,选N。

通过netlink接口向用户空间导出任务/进程的统计信息,netlink是一种在内核与用户应用之间进行双向数据传输的非常好的方式,用户应用使用标准的socket API就可以使用netlink提供的强大功能。 

[*]   Enable per-task delay accounting (EXPERIMENTAL)

在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间

CONFIG_TASK_DELAY_ACCT=y统计数据包含每个任务/进程的延时 

[*]   Enable extended accounting over taskstats (EXPERIMENTAL)

在统计信息中包含扩展进程所花费的时间   

CONFIG_TASK_XACCT=y统计数据包含扩展任务读取数据和发送数据使用的时间   

[*]   Enable per-task storage I/O accounting (EXPERIMENTAL) 

在统计信息中包含I/O存储进程所花费的时间

 CONFIG_TASK_IO_ACCOUNTING=y统计数据包括I/O设备产生的字节数 

[]Auditing suppor

审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计,不选。 CONFIG_AUDIT=y 支持审计功能,某些内核模块需要它(SELinux,Security-Enhanced Linux) 

IRQ Subsystem --->

 中断子系统
    [*] Support sparse irq numbering
    CONFIG_SPARSE_IRQ=y支持稀有的中断号 

RCU Subsystem --->

 非对称读写锁系统 是一种新的kernel锁机制,适用于读多写少环境。对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调(callback)机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据。这个时机就是所有引用该数据的CPU都退出对共享数据的操作。


    (1)RCU Implementation (Tree-based hierarchical RCU)  ---> RCU实现机制
    (X) Tree-based hierarchical RCU:CONFIG_TREE_RCU=y基于树的等级划
    (2)[ ] Enable tracing for RCU:CONFIG_RCU_TRACE=y打开RCU追踪
    (3) (32) Tree-based hierarchical RCU fanout value CONFIG_RCU_FANOUT=32RCU树的分支数
    (4)[ ] Disable tree-based hierarchical RCU auto-balancing CONFIG_RCU_FANOUT_EXACT=y关闭RCU自动均衡功能
    (5)[*] Accelerate last non-dyntick-idle CPU's grace periods
CONFIG_RCU_FAST_NO_HZ=y提高非休眠CPU的使用时间 

 < > Kernel .config support
CONFIG_IKCONFIG=y|m把编译内核时使用的。config文件保存在编译好的内核中。
    
(19) Kernel log buffer size (16 => 64KB, 17 => 128KB)
CONFIG_LOG_BUF_SHIFT=17内核日志缓存的大小。这个值是以2的平方取的,取值范围12-21 

-*- Control Group support  --->
    
   [*] Namespaces support  --->
    
   [*] Automatic process group scheduling
    
   [ ] Enable deprecated sysfs features to support old userspace tools

在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口,不选吧。 
    
    -*- Kernel->user space relay support (formerly relayfs)
    
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support 

初始RAM的文件和RAM磁盘( initramfs /initrd)支持(如果要采用initrd启动则要选择,否则可以不选),不需要,不用选。

 

() Initramfs source file(s)

initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白 

[] Optimize for size

编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码 

()Default panic timeout()

[] Configure standard kernel features(expert users)(NEW)--->

配置标准的内核特性(为小型系统) 

   Enable 16-bit UID system calls

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

   Sysctl syscall support

不需要重启就能修改内核的某些参数和变量,如果你也选择了支持/proc,将能从 /proc/sys存取可以影响内核行为的参数或变量

   Load all symbols for debugging/kksymoops

装载所有的调试符号表信息,仅供调试时选择

   Include all symbols in kallsyms

在kallsyms中包含内核知道的所有符号,内核将会增大300K

   Do an extra kallsyms pass

除非你在kallsyms中发现了bug并需要报告这个bug才打开该选项

[] Enable the anonymous Shared Memory Subsystem(NEW)

[] Embedded system

Kernel Performance Events And Counters --->

[] Disable heap randomization

禁用随机heap(heap堆是一个应用层的概念,即堆对CPU是不可见的,它的实现方式有多种,可以由OS 实现,也可以由运行库实现,如果你愿意,你也可以在一个栈中来实现一个堆)

Choose SLAB allocator (SLAB) --->

选择内存分配管 理器(强烈推荐使用SLUB)

( ) SLAB
各种环境通用的内存分配管理器 

(X) SLUB (Unqueued Allocator)
更加优秀的内存分配管理器 

[*] Profiling support

<M> OProfile system profiling

剖面支持,用一个工具来扫描和提供计算机的剖面图。支持系统评测(对于大多数用户来说并不是必须的)

[*]Kprobes

调试内核除非开发人员,否则不选

GCOV-based kernel profiling --->


转载自:http://blog.csdn.net/jjvip136/article/details/9277327