在编译移植Linux内核过程中,内核选项配置是很常见的操作。本文分析了常见选项的具体含义,从这里开始进入内核完全配置选项:
1 code maturity level options(代码成熟度选项)
1.1 Prompt for development and/or incomplete code/drivers
显示尚在开发中或尚未完成的代码与驱动。默认情况下是选择的,如果你是测试人员或者开发者,否则可以不选
1.2 Select only drivers expected to compile cleanly(NEW)
显示一些已知的存在问题的驱动程序选项。默认情况下也是选择的。如果你有设备没有找到驱动选
项,你可以将这一项去掉,或许就可以找到相关驱动了,不过它可能是有BUG的。
2 General setup(常规设置)
2.1 support for paging of anonymous memory(swap)
支持虚拟内存。默认情况下是选择的。
2.2 system V IPC
System V进程通信机制。默认情况下是选择的。
2.3 POSIX message queue
POSIX消息队列。默认情况下是选择的。
2.4 BSD process accounting
充许用户进程访问内核将账户信息写入文件。默认情况下是选择的。
2.5 Sysctl support
支持在不重启系统情况下,直接修改内核参数,该选项会增加内核的体积至少8KB。默认情况下是选择的。
2.6 Auditing support
支持审核。默认情况下是选择的,一般不用选择。
2.7 Enable system-call auditing support
支持系统调用审计。默认情况下是选择的,一般不用选择。
2.8 Automatically append version information to the version string
在内核版本后面加上自定义的版本字符串,默认不选择。
2.8 Support for hot-pluggable devices
支持可热拔插设备
2.9 kernel userspace events(NEW)
系统区和用户区进行通讯的一种方式,默认情况下是选择的。
2.10 kernel.config support
将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc中得到内核的配置。 默认不选。
2.11 cpuset support
只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它。
2.12 Configure standard kernel features (for small systems)-------->
配置标准的内核特性(为小型系统)
2.12.1 Load all symbols for debugging/kksymoops
装载所有的调试符号表信息,仅供调试时选择
2.12.2 Include all symbols in kallsyms
在kallsyms中包含内核知道的所有符号,内核将会增大300K
2.12.3 Do an extra kallsyms pass
在kallsyms中发现了bug并需要报告这个bug才打开该选项
2.12.4 Enable support for printk
允许内核向终端打印字符信息
2.12.5 BUG() support
显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错误被忽略
2.12.6 Enable full-sized data structures for core
在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能
2.12.7 Enable futex support
快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序
2.12.8 Enable eventpoll support
支持事件轮循的系统调用
2.12.9 Optimize for size
内核尺寸最优化,一般不用选择
2.12.10 Use full shmem filesystem
启用shmem支持.shmem是基于共享内存的文件系统(可能用到swap),在启用TMPFS后可以挂载为tmpfs供用户空间使用,它比简单的ramfs先进许多
3 Loadable module support(可加载模块支持)
3.1 Enable loadable module support
可加载模块支持,如果打开它则必须通过"make modules_install"把内核模块安在/lib/modules/中
3.2 Module unloading
允许卸载已经加载的模块
3.3 Forced module unloading
允许强制卸载正在使用中的模块(比较危险)
3.4 Module versioning support
允许使用其他内核版本的模块(可能会出问题)
3.5 Source checksum for all modules
为所有的模块校验源码,如果你不是自己编写内核模块就不需要它
3.6 Automatic kernel module loading
让内核通过运行modprobe来自动加载所需要的模块,比如可以自动解决模块的依赖关系
4 Processor type and features(处理器类型和特征)
4.1 Subarchitecture Type (PC-compatible) --->
处理器的子架构,大多数人都应当选择"PC-compatible"
4.2 Processor family (586/K5/5x86/6x86/6x86MX) --->
处理器系列,请按照你实际使用的CPU选择
4.3 Generic x86 support
提供了对X86系列CPU最大的兼容性,如果你的CPU能够在上述"Processor family"中找到就别选
4.4 HPET Timer Support
HPET是替代8254芯片的新一代定时器,i686及以上级别的主板都支持,可以安全的选上
4.5 Symmetric multi-processing support
多处理器支持
4.6 Maximum number of CPUs (2-255)
Linux最多支持几路CPU,根据你的需要选择。
4.7 SMT (Hyperthreading) scheduler support
支持Intel的超线程(HT)技术
4.8 Preemption Model --->
内核抢占模式,这可是个新特性,几乎所有介绍2.6的文章都会提到.
4.8.1 No Forced Preemption (Server)
禁止内核抢占(服务器)
4.8.2 Voluntary Kernel Preemption (Desktop)
自愿内核抢占(普通桌面环境)
4.8.3 Preemptible Kernel (Low-Latency Desktop)
ONT color=#000000> 主动内核抢占(运行实时程序)
4.9 Preempt The Big Kernel Lock
可以抢占大内核锁,应用于实时要求高的场合,不适合服务器环境
4.10 Machine Check Exception
如果你的系统出现一些问题比如CPU过热,内核将会在屏幕上打印相关信息来提醒你。这个功能是需要硬件支持的。你可以查看/proc/cpuinfo看看是否有mce标志,有的话就选吧。如果你十分十分的不幸,选了它之后出现问题,可以在启动时加nomce参数来关闭它。
4.11 Toshiba Laptop support
这个选项是针对Toshiba笔记本的,可以用来访问Toshiba的系统管理模式,也就是可以直接设置BIOS。不过要注意它只在Toshiba自己的 BIOS中起作用。假如你有一台Toshiba笔记本,可惜它的BIOS是Phoenix的,那这个选项仍然无用.
4.12 Dell laptop support
这个同上面的选项基本相同
4.13 Enable X86 board specific fixups for reboot
修正某些旧x86主板的重起bug
4.14 /dev/cpu/microcode - Intel IA32 CPU microcode support
使用不随Linux内核发行的IA32微代码,你必需有IA32微代码二进制文件,仅对Intel的CPU有效4.15 /dev/cpu/*/msr - Model-specific register support
这在多cpu系统中让特权CPU访问x86的MSR寄存器
4.16 /dev/cpu/*/cpuid - CPU information support
能从/dev/cpu/x/cpuid获得CPU的唯一标识符(CPUID)
4.17 Firmware Drivers --->
固件驱动程序
4.18 High Memory Support --->
最高内存支持,总内存小于等于1G的选"off",大于4G的选"64G"
4.19 Memory model --->
一般选"Flat Memory",其他选项涉及内存热插拔
4.20 Allocate 3rd-level pagetables from highmem
在内存很大(大于4G)的机器上将用户空间的页表放到高位内存区,以节约宝贵的低端内存
4.21 Math emulation
数学协处理器仿真
4.22 MTRR (Memory Type Range Register) support
用来控制处理器访问的内存范围,打开它可以提升PCI/AGP总线上的显卡2倍以上的速度。
4.23 Boot from EFI support (EXPERIMENTAL)
EFI规范基本上是一个让PC可以在开机前(preboot)进行扫毒及诊断的执行环境。英特尔已经利用EFI建立一个可以取代BIOS的开机前软件框架,这个框架名为“EFI平台创新开发框架”,但是现在远未普及。
4.24 Enable kernel irq balancing
让内核将irq中断平均分配给多个CPU以进行负载均衡,但是要配合irqbanlancean'">守护进程才行
4.25 Use register arguments (EXPERIMENTAL) (NEW)
使用"-mregparm=3"参数编译内核,将前3个参数以寄存器方式进行参数调用,可以生成更紧凑和高效的代码
4.26 Enable seccomp to safely compute untrusted bytecode
只有嵌入式系统可以不选
4.27 Timer frequency
内核时钟频率,桌面推荐"1000 HZ",服务器推荐"100 HZ"或"250 HZ"
4.28 Physical address where the kernel is loaded
内核加载的物理地址,一般不要修改.在提供kexec系统调用的情况下可能要修改它。
4.29 kexec system call
提供kexec系统调用,可以不必重启而切换到另一个内核
4.30 kernel crash dumps
被kexec启动后产生内核崩溃转储
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/6_system/linux/Linuxjs/20091017/179206_3.html
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/6_system/linux/Linuxjs/20091017/179206_2.html
文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/6_system/linux/Linuxjs/20091017/179206.html