对于每一个配置选项,用户可以回答"y"、"m"或"n"。
其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。
只有<>才能选择M1. General setup(通用选项)[*]Prompt for development and/or incomplete code/drivers,设置界面中显示还在开发或者还没有完成的代码与驱动,最好选上,许多设备都需要它才能配置。
[ ]Cross-compiler tool prefix,交叉编译工具前缀,如果你要使用交叉编译工具的话输入相关前缀。
默认不使用。
嵌入式linux更不需要。
[ ]Local version - append to kernel release,自定义版本,也就是uname -r可以看到的版本,可以自行修改,没多大意义。
[ ]Automatically append version information to the version string,自动生成版本信息。
这个选项会自动探测你的内核并且生成相应的版本,使之不会和原先的重复。
这需要Perl的支持。
由于在编译的命令make-kpkg 中我们会加入- –append-to-version 选项来生成自定义版本,所以这里选N。
Kernel compression mode (LZMA),选择压缩方式。
[ ]Support for paging of anonymous memory (swap),交换分区支持,也就是虚拟内存支持,嵌入式不需要。
[*]System V IPC,为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。
有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。
[*]POSIX Message Queues,这是POSIX的消息队列,它同样是一种IPC(进程间通讯)。
建议你最好将它选上。
[*]BSD Process Accounting,允许进程访问内核,将账户信息写入文件中,主要包括进程的创建时间/创建者/内存占用等信息。
可以选上,无所谓。
[*]BSD Process Accounting version 3 file format,选用的话统计信息将会以新的格式(V3)写入,注意这个格式和以前的v0/v1/v2 格式不兼容,选不选无所谓。
[ ]Export task/process statistics through netlink (EXPERIMENTAL),通过通用的网络输出工作/进程的相应数据,和BSD不同的是,这些数据在进程运行的时候就可以通过相关命令访问。
和BSD类似,数据将在进程结束时送入用户空间。
如果不清楚,选N(实验阶段功能,下同)。
[ ]Auditing support,审计功能,某些内核模块需要它(SELINUX),如果不知道,不用选。
[ ]RCU Subsystem,一个高性能的锁机制RCU 子系统,不懂不了解,按默认就行。
[ ]Kernel .config support,将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc/ config.gz中得到内核的配置,选上,重新配置内核时可以利用已有配置Enable access to .config through /proc/config.gz,上一项的子项,可以通过/proc/ config.gz访问.config配置,上一个选的话,建议选上。
(16)Kernel log buffer size (16 => 64KB, 17 => 128KB) ,内核日志缓存的大小,使用默认值即可。
12 => 4 KB,13 => 8 KB,14 => 16 KB单处理器,15 => 32 KB多处理器,16 => 64 KB,17 => 128 KB。
[ ]Control Group support(有子项),使用默认即可,不清楚可以不选。
Example debug cgroup subsystem,cgroup子系统调试例子Namespace cgroup subsystem,cgroup子系统命名空间Device controller for cgroups,cgroups设备控制器Cpuset support,只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它。
[ ]enable deprecated sysfs features to support old userspace tools,在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口,一般不选。
[ ]Kernel->user space relay support (formerly relayfs),内核系统区和用户区进行传递通讯的支持,这个选项在特定文件系统(relayfs)中提供数据接口支持,它可以支持从内核空间到用户空间的大批量数据传递的支持。
不清楚可以不选。
[ ]Namespaces support,(有子项)命名空间支持,允许服务器为不同的用户信息提供不同的用户名空间服务,不清楚可以不选。
[ ]Initial RAM filesystem and RAM disk (initramfs/initrd) support,初始RAM的文件和RAM磁盘(initramfs /initrd)支持(如果要采用initrd启动则要选择,否则可以不选),不需要,不用选。
嵌入式linux一般不选。
[ ]Optimize for size,优化大小,-Os代替-O2参数,可能会有二进制错误问题,一般不选。
(0)Default panic timeout,添0即可。
[*]Configure standard kernel features (for small systems),特殊内核用到,可以不选,嵌入式linux则必选。
[ ]Enable the Anonymous Shared Memory Subsystem,启用匿名共享内存子系统,不清楚可以不选。
[ ]Enable AIO support,支持AIO(Asynchronous I/O 异步事件非阻塞I/O),(包含aio.h, aio_read,向内核发出读命令,aio_write向内核写命令,详细见‘AIO介绍‘文档),AIO机制为服务器端高并发应用程序提供了一种性能优化的手段。
加大了系统吞吐量,所以一般用于大型服务器,一般不用选。
[ ]Kernel Performance Events And Counters(有子项),不清楚,不选。
[*]Enable VM event counters for /proc/vmstat,允许在/proc/vmstat中包含虚拟内存事件记数器。
[*]Enable SLUB debugging support,支持SLUB内存分配管理器调试,[ ]Disable heap randomization,禁用随即head,选不选均可。
Choose SLAB allocator (SLUB (Unqueued Allocator)) --->,选择内存分配管理器,强烈推荐使用SLUB。
[ ]Profiling support,剖面支持,用一个工具来扫描和计算计算机的剖面图,支持系统测评,一般开发人员使用,不选。
[ ]Kprobes,调试人员使用,不选。
GCOV-based kernel profiling --->(有子项),默认即可。
2. Enable loadable module support(可加载模块)[ ]Forced module loading,强行加载模块,不建议选。
[*]Module unloading,支持模块卸载,必须选上。
[ ]Forced module unloading,强行卸载模块,即使内核认为这样并不安全,也就是说你可以把正在使用中的模快卸载掉。
如果你不是内核开发人员或者骨灰级的玩家,不建议选。
[ ]Module versioning suppor,这个功能可以让你使用其它版本的内核模块,除非特殊需要,一般不选。
[ ]Source checksum for all modules,这个功能是为了防止更改了内核模块的代码但忘记更改版本号而造成版本冲突,现在很少使用,不选。
3. Enable the block layer(块设备层)[*]Support for large (2TB+) block devices and files,仅在使用大于2TB的块设备时需要[*]Block layer SG support v4,通用SCSI设备第四版支持。
[*]Block layer data integrity support,块设备数据完整性支持。
[*]IO Schedulers --->(有子项),IO调度器[ ]Anticipatory I/O scheduler,抢先式I/O调度器,大多数块设备只有一个物理查找磁头(例如一个单独的SA TA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器) [ ]Deadline I/O scheduler,期限式I/O调度器,轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)。
[ ]CFQ I/O scheduler,使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统CFQ调度器尝试为所有进程提供相同的带宽。
它将提供平等的工作环境,对于桌面系统很合适。
Default I/O scheduler (CFQ) --->默认IO调度器有上面三个IO调度器:抢先式是传统的,它的原理是一有响应,就优先考虑调度。
如果你的硬盘此时在运行一项工作,它也会暂停下来先响应用户。
期限式则是:所有的工作都有最终期限,在这之前必须完成。
当用户有响应时,它会根据自己的工作能否完成,来决定是否响应用户。
CFQ则是平均分配资源,不管你的响应多急,也不管它的工作量是多少,它都是平均分配,一视同仁的。