Code maturity level options
代码成熟度选项
- Prompt for development and/or incomplete code/drivers
- 显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择
General setup
常规设置
- Local version - append to kernel release
- 在内核版本后面加上自定义的版本字符串(小于64字符),可以用"uname -a"命令看到
- Automatically append version information to the version string
- 自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持
- Support for paging of anonymous memory (swap)
- 使用交换分区或者交换文件来做为虚拟内存
- System V IPC
- System V进程间通信(IPC)支持,许多程序需要这个功能.必选,除非你知道自己在做什么
-
- IPC Namespaces
- IPC命名空间支持,不确定可以不选
- POSIX Message Queues
- POSIX消息队列,这是POSIX IPC中的一部分
- BSD Process Accounting
- 将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/内存占用等信息
-
- BSD Process Accounting version 3 file format
- 使用新的第三版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式
- Export task/process statistics through netlink
- 通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的
-
- Enable per-task delay accounting
- 在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间
- UTS Namespaces
- UTS名字空间支持,不确定可以不选
- Auditing support
- 审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计
-
- Enable system-call auditing support
- 支持对系统调用的审计
- Kernel .config support
- 把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息
-
- Enable access to .config through /proc/config.gz
- 允许通过/proc/config.gz访问内核的配置信息
- Cpuset support
- 只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它
- Kernel->user space relay support (formerly relayfs)
- 在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口
- Initramfs source file(s)
- initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白
- Optimize for size (Look out for broken compilers!)
- 编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码
- Enable extended accounting over taskstats
- 收集额外的进程统计信息并通过taskstats接口发送到用户空间
- Configure standard kernel features (for small systems)
- 配置标准的内核特性(为小型系统)
-
- 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才打开该选项
- Support for hot-pluggable devices
- 支持热插拔设备,如usb与pc卡等,Udev也需要它
- Enable support for printk
- 允许内核向终端打印字符信息,在需要诊断内核为什么不能运行时选择
- BUG() support
- 显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错误被忽略
- Enable ELF core dumps
- 内存转储支持,可以帮助调试ELF格式的程序
- Enable full-sized data structures for core
- 在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能
- Enable futex support
- 快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序
- Enable eventpoll support
- 支持事件轮循的系统调用
- Use full shmem filesystem
- 完全使用shmem来代替ramfs.shmem是基于共享内存的文件系统(可能用到swap),在启用TMPFS后可以挂载为tmpfs供用户空间使用,它比简单的ramfs先进许多
- Use full SLAB allocator
- 使用SLAB完全取代SLOB进行内存分配,SLAB是一种优秀的内存分配管理器,推荐使用
- Enable VM event counters for /proc/vmstat
- 允许在/proc/vmstat中包含虚拟内存事件记数器
Loadable module support
可加载模块支持
- Enable loadable module support
- 打开可加载模块支持,如果打开它则必须通过"make modules_install"把内核模块安装在/lib/modules/中
-
- Module unloading
- 允许卸载已经加载的模块
-
- Forced module unloading
- 允许强制卸载正在使用中的模块(比较危险)
- Module versioning support
- 允许使用其他内核版本的模块(可能会出问题)
- Source checksum for all modules
- 为所有的模块校验源码,如果你不是自己编写内核模块就不需要它
- Automatic kernel module loading
- 让内核通过运行modprobe来自动加载所需要的模块,比如可以自动解决模块的依赖关系
Block layer
块设备层
- Enable the block layer
- 块设备支持,使用硬盘/USB/SCSI设备者必选
-
- Support for Large Block Devices
- 仅在使用大于2TB的块设备时需要
- Support for tracing block io actions
- 块队列IO跟踪支持,它允许用户查看在一个块设备队列上发生的所有事件,可以通过blktrace程序获得磁盘当前的详细统计数据
- Support for Large Single Files
- 仅在可能使用大于2TB的文件时需要
- IO Schedulers
- IO调度器
-
- Anticipatory I/O scheduler
- 假设一个块设备只有一个物理查找磁头(例如一个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器)
- Deadline I/O scheduler
- 使用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)
- CFQ I/O scheduler
- 使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统
- Default I/O scheduler
- 默认IO调度器
Processor type and features
中央处理器(CPU)类型及特性
- Symmetric multi-processing support
- 对称多处理器支持,如果你有多个CPU或者使用的是多核CPU就选上.此时"Enhanced Real Time Clock Support"选项必须开启,"Advanced Power Management"选项必须关闭
- Subarchitecture Type
- 处理器的子架构,大多数人都应当选择"PC-compatible"
- Processor family
- 处理器系列,请按照你实际使用的CPU选择
- Generic x86 support
- 通用x86支持,如果你的CPU能够在上述"Processor family"中找到就别选
- HPET Timer Support
- HPET是替代8254芯片的新一代定时器,i686及以上级别的主板都支持,可以安全的选上
- Maximum number of CPUs
- 支持的最大CPU数,每增加一个内核将增加8K体积
- SMT (Hyperthreading) scheduler support
- 支持Intel的超线程(HT)技术
- Multi-core scheduler support
- 针对多核CPU进行调度策略优化
- Preemption Model
- 内核抢占模式
-
- No Forced Preemption (Server)
- 适合服务器环境的禁止内核抢占
- Voluntary Kernel Preemption (Desktop)
- 适合普通桌面环境的自愿内核抢占
- Preemptible Kernel (Low-Latency Desktop)
- 适合运行实时程序的主动内核抢占
- Preempt The Big Kernel Lock
- 可以抢占大内核锁,应用于实时要求高的场合,不适合服务器环境
- Machine Check Exception
- 让CPU检测到系统故障时通知内核,以便内核采取相应的措施(如过热关机等)
-
- Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4
- 每5秒检测一次这些cpu的非致命错误并纠正它们,同时记入日志
- check for P4 thermal throttling interrupt
- 当P4的cpu过热时显示一条警告消息
- Enable VM86 support
- 虚拟X86支持,在DOSEMU下运行16-bit程序或XFree86通过BIOS初始化某些显卡的时候才需要
- Toshiba Laptop support
- Toshiba笔记本模块支持
- Dell laptop support
- Dell笔记本模块支持
- Enable X86 board specific fixups for reboot
- 修正某些旧x86主板的重起bug,这种主板基本绝种了
- /dev/cpu/microcode - Intel IA32 CPU microcode support
- 使用不随Linux内核发行的IA32微代码,你必需有IA32微代码二进制文件,仅对Intel的CPU有效
- /dev/cpu/*/msr - Model-specific register support
- 在多cpu系统中让特权CPU访问x86的MSR寄存器
- /dev/cpu/*/cpuid - CPU information support
- 能从/dev/cpu/x/cpuid获得CPU的唯一标识符(CPUID)
- Firmware Drivers
- 固件驱动程序
-
- BIOS Enhanced Disk Drive calls determine boot disk
阅读(1775) | 评论(0) | 转发(0) |