Code maturity level options [代码成熟度选项]
Prompt for development and/or incomplete code/drivers [使能尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择]
General setup
-
Local version - append to kernel release [在内核版本后面加上自定义的版本字符串(小于64字符),可以用"uname -a"命令看到 ]
-
-
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中包含虚拟内存事件记数器
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 [将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/内存占用等信息]
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
- 有些BIOS支持从某块特定的硬盘启动(如果BIOS不支持则可能无法启动),目前大多数BIOS还不支持 BIOS update support for DELL systems via sysfs
- 仅适用于DELL机器 Dell Systems Management Base Driver
- 仅适用于DELL机器
High Memory Support
- 最高内存支持,总内存小于等于1G的选"off",大于4G的选"64G" Memory split
- 如果你不是绝对清楚自己在做什么,不要改动这个选项 Memory model
- 一般选"Flat Memory",其他选项涉及内存热插拔 64 bit Memory and IO resources
- 使用64位的内存和IO资源 Allocate 3rd-level pagetables from highmem
- 在内存很多(大于4G)的机器上将用户空间的页表放到高位内存区,以节约宝贵的低端内存 Math emulation
- 数学协处理器仿真,486DX以上的cpu就不要选它了 MTRR (Memory Type Range Register) support
- 打开它可以提升PCI/AGP总线上的显卡2倍以上的速度,并且可以修正某些BIOS错误 Boot from EFI support
- EFI是一种可代替传统BIOS的技术(目前的Grub/LILO尚不能识别它),但是现在远未普及 Enable kernel irq balancing
- 让内核将irq中断平均分配给多个CPU以进行负载均衡,但是要配合irqbanlance守护进程才行 Use register arguments
- 使用"-mregparm=3"参数编译内核,将前3个参数以寄存器方式进行参数调用,可以生成更紧凑和高效的代码 Enable seccomp to safely compute untrusted bytecode
- 只有嵌入式系统可以不选 Timer frequency
- 内核时钟频率,桌面推荐"1000 HZ",服务器推荐"100 HZ"或"250 HZ" kexec system call
- 提供kexec系统调用,可以不必重启而切换到另一个内核 kernel crash dumps
- 被kexec启动后产生内核崩溃转储 Physical address where the kernel is loaded
- 内核加载的物理地址,除非你知道自己在做什么,否则不要修改.在提供kexec系统调用的情况下可能要修改它 Support for hot-pluggable CPUs
- 对热插拔CPU提供支持 Compat VDSO support
- 如果Glibc版本大于等于2.3.3就不选,否则就选上
Power management options
电源管理选项
-
Power Management support
- 电源管理有APM和ACPI两种标准且不能同时使用.即使关闭该选项,X86上运行的Linux也会在空闲时发出HLT指令将CPU进入睡眠状态
-
-
Legacy Power Management API
- 传统的电源管理API,比如软关机和系统休眠等接口 Power Management Debug Support
- 仅供调试使用 Driver model /sys/devices/.../power/state files
- 内核帮助文档反对使用该选项,即将被废除
ACPI (Advanced Configuration and Power Interface) Support
- 必须运行acpid守护程序ACPI才能起作用.ACPI是为了取代APM而设计的,因此应该尽量使用ACPI而不是APM
-
-
AC Adapter
- 如果你的系统可以在AC和电池之间转换就可以选 Battery
- 通过/proc/acpi/battery向用户提供电池状态信息,用电池的笔记本可以选 Button
- 守护程序捕获Power,Sleep,Lid按钮事件,并根据/proc/acpi/event做相应的动作,软件控制的poweroff需要它 Video
- 仅对集成在主板上的显卡提供ACPI2.0支持,且不是所有集成显卡都支持 Generic Hotkey
- 统一的热键驱动,建议不选 Fan
- 允许通过用户层的程序来对系统风扇进行控制(开,关,查询状态),支持它的硬件并不多 Dock
- 支持由ACPI控制的集线器(docking stations) Processor
- 让ACPI处理空闲状态,并使用ACPI C2和C3处理器状态在空闲时节省电能,同时它还被cpufreq的"Performance-state drivers"选项所依赖
-
-
Thermal Zone
- 系统温度过高时可以利用ACPI thermal zone及时调整工作状态以避免你的CPU被烧毁
ASUS/Medion Laptop Extras
- ASUS笔记本专用,以提供额外按钮的支持,用户可以通过/proc/acpi/asus来打开或者关闭LCD的背光/调整亮度/定制LED的闪烁指示等功能 IBM ThinkPad Laptop Extras
- IBM ThinkPad专用 Toshiba Laptop Extras
- Toshiba笔记本专用 Disable ACPI for systems before Jan 1st this year
- 输入四位数的年份,在该年的1月1日前不使用ACPI的功能("0"表示一直使用) Debug Statements
- 详细的ACPI调试信息,不搞开发就别选 Power Management Timer Support
- 这个Timer在所有ACPI兼容的平台上都可用,且不会受PM功能的影响,建议总是启用它.如果你在kernel log中看到了'many lost ticks'那就必须启用它 ACPI0004,PNP0A05 and PNP0A06 Container Driver
- 支持内存和CPU的热插拔 Smart Battery System
- 支持依赖于I2C的"智能电池".这种电池非常老旧且罕见,还与当前的ACPI标准兼容性差
APM (Advanced Power Management) BIOS Support
- APM在SMP机器上必须关闭,一般来说当前的笔记本都支持ACPI,所以应尽量关闭该该选项
-
-
Ignore USER SUSPEND
- 只有NEC Versa M系列的笔记本才需要选择这一项 Enable PM at boot time
- 系统启动时即启用APM,选上这个选项能让系统自动的进行电源管理,但常常导致启动时死机 Make CPU Idle calls when idle
- 系统空闲时调用空闲指令(halt),只有老式的CPU才需要选它,且对于SMP系统必须关闭 Enable console blanking using APM
- 在屏幕空白时关闭LCD背光,事实上对所有的笔记本都无效 RTC stores time in GMT
- 将硬件时钟应该设为格林威治时间,否则视为本地时间.建议你使用GMT,这样你无须为时区的改变而担心 Allow interrupts during APM BIOS calls
- 允许APM的BIOS调用时中断,IBM Thinkpad的一些新机器需要这项.如果休眠时挂机(包括睡下去就醒不来),可以试试它 Use real mode APM BIOS call to power off
- 此驱动为某些有Bug的BIOS准备,如果你的系统不能正常关机或关机时崩溃,可以试试它
CPU Frequency scaling
- 允许动态改变CPU主频,达到省电和降温的目的,必须同时启用下面的一种governor才行
-
-
Enable CPUfreq debugging
- 允许对CPUfreq进行调试 CPU frequency translation statistics
- 通过sysfs文件系统输出CPU频率变换的统计信息
-
-
CPU frequency translation statistics details
- 输出详细的CPU频率变换统计信息
Default CPUFreq governor
- 默认的CPU频率调节器 'performance' governor
- '性能'优先,静态的将频率设置为cpu支持的最高频率 'powersave' governor
- '节能'优先,静态的将频率设置为cpu支持的最低频率 'userspace' governor for userspace frequency scaling
- 既允许手动调整cpu频率,也允许用户空间的程序动态的调整cpu频率(需要额外的调频软件,比如cpufreqd) 'ondemand' cpufreq policy governor
- '立即响应',周期性的考察CPU负载并自动的动态调整cpu频率(不需要额外的调频软件),适合台式机 'conservative' cpufreq governor
- '保守',和'ondemand'相似,但是频率的升降是渐变式的(幅度不会很大),更适合用于笔记本/PDA/AMD64环境 ACPI Processor P-States driver
- 将ACPI2.0的处理器性能状态报告给CPUFreq processor drivers以决定如何调整频率,该选项依赖于ACPI->Processor {省略的部分请按照自己实际使用的CPU选择} /proc/acpi/processor/../performance interface
- 内核帮助文档反对使用该选项,即将被废除 Relaxed speedstep capability checks
- 放松对系统的speedstep兼容性检查,仅在某些老旧的Intel系统上需要打开
Bus options (PCI, PCMCIA, EISA, MCA, ISA)
总线选项
-
PCI support
- PCI支持,如果使用了PCI或PCI Express设备就必选
-
-
PCI access mode
- PCI访问模式,强列建议选"Any"(系统将优先使用"MMConfig",然后使用"BIOS",最后使用"Direct"检测PCI设备) PCI Express support
- PCI Express支持(目前主要用于显卡和千兆网卡)
-
-
PCI Express Hotplug driver
- 如果你的主板和设备都支持PCI Express热插拔就可以选上
-
-
Use polling mechanism for hot-plug events
- 对热插拔事件采用轮询机制,仅用于测试目的
Root Port Advanced Error Reporting support
- 由PCI Express AER驱动程序处理发送到Root Port的错误信息
Message Signaled Interrupts (MSI and MSI-X)
- PCI Express支持两类中断:INTx使用传统的IRQ中断,可以与现行的PCI总线的驱动程序和操作系统兼容;MSI则是通过inbound Memory Write触发和发送中断,更适合多CPU系统.可以使用"pci=nomsi"内核引导参数关闭MSI PCI Debugging
- 将PCI调试信息输出到系统日志里 Interrupts on hypertransport devices
- 允许本地的hypertransport设备使用中断
ISA support
- 现在基本上没有ISA的设备了,如果你有就选吧 MCA support
- 微通道总线,老旧的IBM的台式机和笔记本上可能会有这种总线 NatSemi SCx200 support
- 在使用AMD Geode处理器的机器上才可能有 PCCARD (PCMCIA/CardBus) support
- PCMCIA卡(主要用于笔记本)支持
-
-
Enable PCCARD debugging
- 仅供调试 16-bit PCMCIA support
- 一些老的PCMCIA卡使用16位的CardBus 32-bit CardBus support
- 当前的PCMCIA卡基本上都是32位的CardBus CardBus yenta-compatible bridge support
- 使用PCMCIA卡的基本上都需要选择这一项,子项请按照自己实际使用的PCMCIA卡选择 {省略的部分请按照自己实际使用的PCMCIA卡选择}
PCI Hotplug Support
- PCI热插拔支持,如果你有这样的设备就到子项中去选吧
Executable file formats
可执行文件格式
-
Kernel support for ELF binaries
- ELF是开放平台下最常用的二进制文件格式,支持动态连接,支持不同的硬件平台.除非你知道自己在做什么,否则必选 Kernel support for a.out and ECOFF binaries
- 早期UNIX系统的可执行文件格式,目前已经被ELF格式取代 Kernel support for MISC binaries
- 允许插入二进制的封装层到内核中,使用Java,.NET,Python,Lisp等语言编写的程序时需要它
Networking
网络
-
Networking options
- 网络选项
-
-
Network packet debugging
- 在调试不合格的包时加上额外的附加信息,但在遇到Dos攻击时你可能会被日志淹没 Packet socket
- 这种Socket可以让应用程序(比如tcpdump,iptables)直接与网络设备通讯,而不通过内核中的其它中介协议
-
-
Packet socket: mmapped IO
- 让Packet socket驱动程序使用IO映射机制以使连接速度更快
Unix domain sockets
- 一种仅运行于本机上的效率高于TCP/IP的Socket,简称Unix socket.许多程序都使用它在操作系统内部进行进程间通信(IPC),比如X Window和syslog Transformation user configuration interface
- 为IPsec(可在ip层加密)之类的工具提供XFRM用户配置接口支持 Transformation sub policy support
- XFRM子策略支持,仅供开发者使用 PF_KEY sockets
- 用于可信任的密钥管理程序和操作系统内核内部的密钥管理进行通信,IPsec依赖于它 TCP/IP networking
- TCP/IP协议当然要选
-
-
IP: multicasting
- 群组广播,似乎与网格计算有关,仅在使用MBONE的时候才需要 IP: advanced router
- 高级路由,如果想做一个路由器就选吧 IP: policy routing
- 策略路由 IP: equal cost multipath
- 用于路由的基于目的地址的负载均衡