红色:需要修改的选项,紫色:注意的选项 浅蓝色:过时的或用不到的 浅粉色:一大堆
from:Linux内核编译详解
------->为什么重新编译内核
为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:
自己定制编译的内核运行更快(具有更少的代码)
系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些
--------->内核编译模式
把相应部分编译到内核中(build-in)OR 把该部分编译成模块(module),动态调用。
STEPS:
step1.下载必要的工具
# apt-get install libncurses-dev kernel-package bzip2 make ncurses-dev fakeroot module-init-tools patch
step2.到http://www.kernel.org 下载最新的2.6.16内核,解压到/usr/src目录下;
#tar -jxvf linux-2.6.16.tar.bz2 -C /usr/src
#cd /usr/src
#ln -s linux-2.6.16 linux
# cp /boot/config-2.6.24-686 .config -----> 将当前配置设定为默认配置
step3. 在/usr/src/linux目录下运行以下命令配置和编译新内核:
#make menuconfig
配置内核命令:
#make config(基于文本的最为传统的配置界面,不推荐使用)
#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
step4.
#make dep
----->读取配置过程生成的配置文件,(.config)来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要.
#make clean
---->删除前面步骤留下的文件,以避免出现一些错误.
#make bzImage或make zImage
----->实现完全编译内核,二者生成的内核都是使用g***压缩的,只要使用一个就够了,它们的区别在于使用make bzImage可以生成大一点的内核。建议大家使用make bzImage命令。
#make modules
------>生成相应的模块
#make modules_install
------>把模块拷贝到需要的目录中
#depmod -a
------>严格说来,depmod -a命令和编译过程并没有关系,它是生成模块间的依赖关系,这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。
# make install
or
#make-kpkg clean ----->必须执行这步
#make-kpkg --append_to_version -386 --initrd --revision=rev.01 kernel_image modules_image
---> make-kpkg --append_to_version :创建多重内核镜像,modules_image可以是pcmcia-cs*等,make-kpkg kernel_image实际上执行了make oldconfig和make dep。如果没使用initrd就不要使用–initrd选项。
# cd ..
# dpkg -i kernel-image*.deb pcmcia-cs*.deb # 安装
step5. 内核编译完成后在/usr/src目录下就会生成一个kernel-image- 2.6.16_mykernel.1.0_i386.deb软件包,用以下命令安装:dpkg -i kernel-image-2.6.16_mykernel.1.0_i386.deb这样,在/boot目录下会生成System.map- 2.6.16,vmlinuz-2.6.16文件。在安装内核时grub会自动生成启动选项,非常方便,当然也可以手动来修改grub配置文件 menu.list,重启系统,开始使用新内核。
tips:
1)中括号里要么是空,要么是"*".尖括号里可以是空,"*"和"M".圆括号的内容是要你在所提供的几个选项中选择一项。
2)选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。
3) 内核配置完成后,在退出配置菜单时如果选择保存配置,则会在当前目录中生成一个.config文件,记录内核的所有配置参数。该配置文件会在下次配置内核 时自动导入。也可以通过内核配置菜单的导入和存盘功能导入其它内核配置文件和把当前配置以任意的名字保存在其它地方。
4)Loadable module support–>Module unloading选项可允许卸载已加载的内核模块。通过该功能,我们可以通过rmmod module_name和modprobe module_name命令改变内核模块的加载参数。
用新内核重启时如果提示VFS不能挂接问题(很久以前我教我同学第一次编内核的时候,他出现的就是这个问题)
提示出错信息类似以下内容:
VFS:Cannot open root device “hdb2″ or unknow-block(0,0)
Please append a correct “root=” boot option
kernel panic-not syncing: VFS:Unable to mount root fs on unknow-block(0,0)
原因:ext2文件格式支持没有编译进内核,不论你使用ext3或其它文件格式,ext2支持都必须直接编译进内核,不能以内核模块形式编译。
5) 如果编译失败,可用make clean和make menuconfig重新配置和编译。
配置信息默认会保存在/usr/src/linux/.config文件中。
收尾工作
至此,内核已经编译安装完成了,已经在 grub 开始菜单最下面添加了一个启动项。重启可以尝试新内核登录了。还有一些小问题需要解决。 将 /usr/src/linux 指向刚编译内核的源码目录
#rm /usr/src/linux
#ln -s /usr/src/linux-版本号 /usr/src/linux
之后重启,用 uname -r 检查内核版本。自然,记住还要重新安装显卡驱动。
清理工作
如果你的内核经过一段时间测试可以稳定正常工作,那么可以做一些清理工作,释放磁盘空间。
清理旧文件
回到内核源码目录
#make clean
删除 /lib/modules 下其他内核版本号对应的目录,即旧版本内核模块文件 删除 /boot 下其他内核版本号对应的文件
清理 grub 启动列表
你可能不希望失效的原来内核仍然留在开机选单上,那么
#mv /boot/grub/menu.lst.old /boot/grub/menu.lst
#rm /boot/*.old && rm /boot/grub*.old
#rm /boot/vmlinuz && rm /boot/initrd
#ln -s vmlinuz-新版本号-default vmlinuz
#ln -s initrd-新版本号-default initrd
更新 kernel-headers =
自行编译内核以后,linux-kernel-header 并不能自动更新,是 RPM 软件管理系统控制的。一般来说,此包会维持在官方内核版本。 所以我们需要手动更新,便于以后新内核下的模块编译工作。
rm -rf /usr/include/linux
cp -r /usr/src/linux-2.6...(新编译内核的版本号,请根据自己情况补全)/include/linux /usr/include
1、Code maturity level options ---> 代码成熟等级选项
[ *] Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.你应该选择它,因为有许多设备可能必需选择这个选项才能进行配置,实际 上它是安全的。
2、 General setup ---> 常规安装选项
( ) Local version - append to kernel release
[*]Support for paging of anonymous memory (swap) 这个选项将使你的内核支持虚拟内存,也就是让你的计算机好象拥有比实际内存更多 多的内存空间用来执行很大的程序。默认是选择的。
[* ]System V IPC (IPC:Inter Process Communication)是组系统调用及函数库,它能让程序彼此间同步进行交换信息。某些程序以及DOS模拟环境都需要它。为进程提供通信机制,这将 使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。
[*] POSIX Message Queues:这是POSIX的消息队列,它同样是一种IPC。建议你最好将它选上。
[*]BSD Process Accounting 一般用户所执行的程序,可通知内核将程序统计数据写成文件,详细记录相关信息。
[*] BSD Process Accounting version 3 file format:这是充许用户进程访问内核将账户信息写入文件中的。这通常被认为是个好主意,建议你最好将它选上。
[*] Sysctl support 此项功能可在不重新编译内核或是重新开机的前提下,动态变更某些特定的内核参数和变量,赋予内核较大的弹性。除非内存太少或是编译出来的内核是给安装、救 援磁盘所使用,否则这个选项一定要选上。这将提供一个接口让你可以动态的更改一些核心参数与变量,而不需要重新启动系统。打开这个选项将会增加内核的体积 至少8KB。如果你的内核仅用制作安装与恢复系统系统盘那么可以不选,以减少对内存的占用。
[] Auditing support 审记支持,用于和内核的某些子模块同时工作,例如SELinux。只有选择此项及它的子项,才能调用有关审记的系统调用。
[ *] Auditing support 审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计
[ *]Enable system-call auditing support支持对系统调用的审计
[ ] Kernel .config support 这将会把内核的配置信息与相关的文档说明编译进内核中,以后可以使用一些工具来提取它用来重新构建内核,一般不用选它。
[]Cpuset support只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它
[]Initramfs source file(s) initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白.
[]Optimize for size (Look out for broken compilers!) 编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码.
[ ] Configure standard kernel features (for small systems) ---> 这是为了编译某些特殊用途的内核使用的,例如引导盘系统。通常你可以不选择这一选项,你也不用对它下面的子项操心了。
3、Loadable module support ---> 可引导模块支持 建议作为模块加入内核
[*] Enable loadable module support 这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行 支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除 它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文 件系统,系统总线的支持就不要编为模块了,否在无法启动系统。模块通常在/lib/modules/中.
[*]Module unloading 这个选项可以让你卸载不再使用的模块,如果不选的话你将不能卸载任何模块(有些模块一旦加载就不能卸载,不管是否选择了这个选项)。不选择这个选项会让你的内核体积减小一点。
[]Forced module unloading 允许强制卸载正在使用中的模块(比较危险)
[]Module versioning support 允许使用其他内核版本的模块(可能会出问题)
[ ] Source checksum for all modules这个功能是为了防止更改了内核模块的代码但忘记更改版本号而造成版本冲突。我估计现在没有哪家公司在开发中还没使用版本控制工具,所以不需 要这项了。如果你不是自己写内核模块,那就更不需要这一选项了。
[*] Automatic kernel module loading 一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加载它,内核才能使用。不过,如果你 选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块,这是个很棒的特性,当然要选Y喽。
4、Block layer--->块设备层
[]Support for Large Block Devices仅在使用大于2TB的块设备时需要.
IO Schedulers----->
<*>Anticipatory I/O scheduler 预知I/O任务调度,不明白。官方文件说通常选上这个是个Good Choice,那就选上吧 ?假设一个块设备只有一个物理查找磁头(例如一个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用 于大多数环境,特别是写入较多的环境(比如文件服务器)?
<*>Deadline I/O scheduler
使用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)
<>CFQ I/O scheduler
使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统,对于桌面用户而言,应该选上
Default I/O scheduler---->
默认IO调度器 (X)CFQ
5、Processor type and features ---> 处理器类型
[*] Subarchitecture Type (PC-compatible) ---> 这选项的主要的目的,是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓IBM兼容结构(pc/at)。这个选项可以让你选择一些其它 架构。我们一般选择PC-compatible就可以了。
(X) PC-compatible 就在这里选PC模式。
( ) AMD Elan
( ) Voyager (NCR)
( ) NUMAQ (IBM/Sequent)
( ) SGI 320/540 (Visual Workstation)
[*]Processor family (Pentium-Pro) ---> CPU选项 这里针对自己的CPU型号,选取相应的选项。
查看cpu型号:#cat /proc/cpuinfo 我的是 Inter(R) Celeron(R) M processor 1300MHZ
( ) 386 - Intel 80386系列及AMD, Cyrix的兼容微处理器。
( ) 486 - Intel 80486系列及AMD, Cyrix, IBM的兼容微处理器。
( ) 586/K5/5x86/6x86/6x86MX - 非Intel的586/686微处理器,包括AMD K5、Cyrix 5x86, 6x86及6x86MX。
( ) Pentium-Classic - 原始Intel Pentium
( ) Pentium-MMX - 支援MMX图形及多媒体扩充指令的Intel Pentium
(X) Pentium-Pro - Intel Pentium Pro
( ) Pentium-II/Celeron(pre-Coppermine) - Intel Pentium II 及 pre-Coppermine Celeron
( ) Pentium-III/Celeron(Coppermine)/Pentium-III Xeon - Intel Pentium III、Coppermine Celeron 及Intel Pentium-III Xeon
( ) Pentium M - Intel Pentium III Mobile (不是 Pentium 4 Mobile)
() Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon - Intel Pentium 4,包括 Celeron 、 Xeon及Mobile K6/K6-II/K6-III (MK6) - AMD K6系列
( ) K6/K6-II/K6-III - AMD K6系列
( ) Athlon/Duron/K7 - AMD Athlon K7系列
( ) Opteron/Athlon64/Hammer/K8 - AMD Opteron 或 Athlon64 Hammer系列
( ) Crusoe - Transmeta Crusoe
( ) Efficeon - Transmeta Efficeon
( ) Winchip-C6 - Transmeta Efficeon
( ) Winchip-2 - Transmeta Efficeon
( ) Winchip-2A/Winchip-3 - IDT Winchip-2A或3
( ) GeodeGX1 - Geode GX1 (Cyrix MediaGX) - AMD Geode GX 或 LX
( ) CyrixIII/VIA-C3 - Cyrix III 或 C3
( ) VIA C3-2 (Nehemiah) - VIC C3 "Nehemiah"
[ ] Generic x86 support 这个选项提供了对X86系列CPU最大的兼容性,用来支持一些很少见的x86体系的CPU,它可能会降低一些系统性能。如果你的CPU能够在上面的列表中找到,就里就不用选了。
[ ]HPET Timer Support 这也是一个新的特性,HPET是intel制定的新的用以代替传统的8254(PIT)中断定时器与RTC的定时器,全称叫作高精度事件定时器。如果你有 一台较新的机器就选它吧,一般它是一个安全的选项,即使你的硬件不支持HPET也不会造成问题,因为它会自动用8254替换。
[ ] Symmetric multi-processing support 支持多处理器选项。如果只使用单CPU,那么得关闭。
Preemptible Model 这可是个新特性,几乎所有介绍2.6的文章都会提到,这就是可抢先式内核。也就是说被一些优先级很高的程序可以先与一些低优先级的程序执行,即使这些程序 是在核心态下执行(这实际上仍然不是真正的抢先式内核)。从而减少内核潜伏期,提高系统的响应。当然在一些特殊的点的内核是不可抢先的,比如内核中的调度 程序自身在执行时就是不可被抢先的。这个特性可以提高桌面系统、实时系统的性能,所以还是选上吧。
() No Forced Preemption (Server) 适合服务器环境的禁止内核抢占
(X)Voluntary Kernel Preemption (Desktop) 适合普通桌面环境的自愿内核抢占
()Preemptible Kernel (Low-Latency Desktop) 适合运行实时程序的主动内核抢占
[ ]Local APIC support on uniprocessors 这里的都是CPU一级的特性。SMP中的中断分发显然是一个大问题,会自动选择APIC,.不必设置.APIC: Advanced Programmable Interrupt Controller高级程序中断控制器.APIC主要应用于多处理器操作系统,是为了解决IRQ太少和处理器间中断而产生的,当然,单处理器操作系统也 可以使用APIC(不是模拟PIC) 如果你使用 nVidia 显卡,请关闭;
[*] Machine Check Exception 如果系统出现一些问题比如CPU过热,内核将会在屏幕上打印相关信息来提醒你。这个功能是需要硬件支持的。你可以查看/proc/cpuinfo看看是否 有mce标志,有的话就选吧。如果你十分十分的不幸,选了它之后出现问题,可以在启动时加nomce参数来关闭它。
< *> Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4 打开这个选项将会检查你机器上可能存在的问题,如果有一个非致命错误出现将会自动的修复并且记录,这可以帮助你查出程序出现问题的原因,是一个不错的选 项。当然它只能用在AMD Athlon/Duron / Intel Pentium 4这类CPU上。如果你正好在用它们中的一个你就选吧。
< > Toshiba Laptop support 东芝笔记本支持。这个选项是针对Toshiba笔记本的,可以用来访问Toshiba的系统管理模式,也就是可以直接设置BIOS。不过要注意它只在 Toshiba自己的 BIOS中起作用。假如你有一台Toshiba笔记本,可惜它的BIOS是Phoenix的,那这个选项仍然是无用的。台式机就关闭!
[ ] Enable X86 board specific fixups for reboot修正某些旧x86主板的重起bug,这种主板基本绝种
<> /dev/cpu/*/msr - Model-specific register support 是否打开Pentium CPU特殊功能寄存器的功能?这个选项桌面用户一般用不到,它主要用在Intel的嵌入式CPU中的,这个寄存器的作用也依赖与不同的CPU类型而有所不 同,一般可以用来改变一些CPU原有物理结构的用途,但不同的CPU用途差别也很大。
<> /dev/cpu/*/cpuid - CPU information support 能从/dev/cpu/x/cpuid获得CPU的唯一标识符(CPUID).是否打开记录Petium CPU相关信息功能?这会在/dev/cpu中建立一系列的设备文件,用以让过程去访问指定的CPU。一般不用选。
Firmware Drivers --->固件驱动程序
<>BIOS Enhanced Disk Drive calls determine boot disk
有些BIOS支持从某块特定的硬盘启动(如果BIOS不支持则可能无法启动),目前大多数BIOS还不支持
< >EFI Variable Support via sysfs 不用选
<>BIOS update support for DELL systems via sysfs
仅适用于DELL机器
<>Dell Systems Management Base Driver
仅适用于DELL机器
High Memory Support (4GB) ---> 高容量内存支持
如果你的计算机不会拥有1GB或以上的内存,请选off。如内存大小界符1GB和4GB之间,选 4GB。如果多于4GB,请选64GB。
//// Allocate 3rd-level pagetables from highmem除非有几G的内存,否则选择这个是没有意义的。(没有这项)////
Memory split 如果你不是绝对清楚自己在做什么,不要改动这个选项
Memory model 一般选"Flat Memory",其他选项涉及内存热插拔
[ ] Math emulation Linux核心模拟数学浮点运算器,协处理器是在386时代的宠儿,现在早已下岗。
[*]MTRR (Memory Type Range Register) support 在PCI或者AGP总线众进行更快速的通讯。由于现在所有系统都将它们的显卡接在PCI或AGP总线上,你通常需要选择“MTRR”,可以提升显卡性能。
[ ] Boot from EFI support (EXPERIMENTAL) EFI是一种可代替传统BIOS的技术(目前的Grub/LILO尚不能识别它),但是现在远未普及,由于我使用的是GRUB,所以选上这个也没什么用, 如果你打算使用EFI的功能,你可以到http://elilo.sourceforge.net看看。
[]Use register arguments(EXPERIMENTAL)使用"-mregparm=3"参数编译内核,将前3个参数以寄存器方式进行参数调用,可以生成更紧凑和高效的代码 这个可以不用选择了
[*]Enable seccomp to safely compute untrusted bytecode 此选项在数据应用程序执行期间估算不可信的字节代码时非常有效,只有嵌入式系统可以不选
Timer frequency--->
内核时钟频率,桌面推荐"1000 HZ",服务器推荐"100 HZ"或"250 HZ"
[*]kexec system call
提供kexec系统调用,可以不必重启而切换到另一个内核
--- Power Management support 电源管理有APM和ACPI两种标准且不能同时使用
[*]Legacy Power Management API 传统的电源管理API,比如软关机和系统休眠等接口
[ ] Power Management Debug Support 电源管理的调试信息支持,如果不是要调试内核有关电源管理部份,请不要选择这项。
[]software suspend 选择这个选项你可以挂起你的计算机(有点象XP中的休眠)
ACPI (Advanced Configuration and Power Interface) Support --->
不用选择,从这里进入ACPI电源管理的配置界面,ACPI和APM不能同时选择。
[*]ACPI Support
需要安装acpid守护程序,ACPI才能起作用.ACPI是为了取代APM而设计的,因此应该尽量使用ACPI而不是APM
[ ] Sleep States (EXPERIMENTAL) 选择这个选项可以使你的系统具有挂起的功能,也就是说你可以暂时中断你的工作,让你的系统处与一种低电能消耗的状态(sleep state),不过目前该功能还不完善,可以不要选上。
<>AC Adapter 如果你的系统可以在AC和电池之间转换就可以选
<>Battery 通过/proc/acpi/battery向用户提供电池状态信息,用电池的笔记本可以选
<>Generic Hotkey 统一的热键驱动,建议不选
<>Fan 允许通过用户层的程序来对系统风扇进行控制(开,关,查询状态),支持它的硬件并不多
系统温度过高时可以利用ACPI thermal zone及时调整工作状态以避免你的CPU被烧毁
<>ASUS/Medion Laptop Extras
华硕笔记本专用,以提供额外按钮的支持,用户可以通过/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调试信息,不搞开发就别选
<>ACPI0004,PNP0A05 and PNP0A06 Container Driver 支持内存和CPU的热插拔,一般只有那种多CPU的服务器才会用到
APM (Advanced Power Management) BIOS Support --->
[ ] Ignore USER SUSPEND 忽略用户暂停请求。建议关闭.只有NEC Versa M系列的笔记本才需要选择这一项
[ ] Enable PM at boot time 开机时节能,这项就不用了,建议关闭。
[]Make CPU Idle calls when idle CPU空闲时节能.
[ ] Enable console blanking using APM 空闲时console转成空白,在屏幕空白时关闭LCD背光,事实上对所有的笔记本都无效.建议关闭。
[ ] RTC stores time in GMT 按Unix的标准,硬件的时钟应该设为格林威治时间。如果要硬件时钟设成了本地时间,这个选项就不用了。
[ ] Allow interrupts during APM BIOS calls 允许APM的BIOS调用时中断。多数的机器不需要这项,Thinkpad的一些新机器需要这项。如果休眠时挂机(包括睡下去就醒不来),再把这项选上。
[ ] Use real mode APM BIOS call to power off 建议最好选上此项,保证软件关机。如果你有兴趣可以试试你的机器不选这项能不能正常的软件关机(多数机器不能)。补充一点,如果既选择了ACPI又选择了 APM,先加载的将被使用.
CPU Frequency scaling --->
[*]CPU Frequency scaling 这一选项允许改变CPU的主频,使CPU在低负荷或使用电池时降低主频,达到省电的目的,必须同时启用下面的一种governor才行
[] Enable CPUfreq debugging 是否允许调试CPU改变主频的功能,如果要调试,还需要在启动时加上参数。cpufreq.debug=
< > CPU frequency translation statistics 通过sysfs文件系统输出CPU频率变换的统计信息
[] CPU frequency translation statistics details 输出详细的CPU频率变换统计信息
Default CPUFreq governor (performance) ---> 默认的CPU主频调节器.
(X) performance '性能'优先,静态的将频率设置为cpu支持的最高频率
( ) userspace 既允许手动调整cpu频率,也允许用户空间的程序动态的调整cpu频率(需要额外的调频软件,比如cpufreqd)
-----'performance' governor
<> 'powersave' governor 最大限度的节约电能调节器。
<>userspace' governor for userspace frequency scaling 既允许手动调整cpu频率,也允许用户空间的程序动态的调整cpu频率(需要额外的调频软件,比如cpufreqd)
<> 'ondemand' cpufreq policy governor '立即响应',周期性的考察CPU负载并自动的动态调整cpu频率(不需要额外的调频软件),适合台式机,对CPU的频率作轮询,根据CPU的使用来调节 频率
<*> 'conservative' cpufreq governor '保守',和'ondemand'相似,但是频率的升降是渐变式的(幅度不会很大),更适合用于笔记本/PDA/AMD64环境
--- CPUFreq processor drivers
< > AMD Mobile K6-2/K6-3 PowerNow! AMD移动版K6处理器的变频驱动。
< > AMD Mobile Athlon/Duron PowerNow! AMD移动版毒龙、雷乌的变频驱动。
< > Cyrix MediaGX/NatSemi Geode Suspend Modulation Cyrix处理器的变频驱动。
< > Intel Enhanced SpeedStep Intel的变频技术支持。可以让处理器在2种工作模式之间随意地切换,即通电状态时的最高性能模式(Maximum Performance Mode)和电池状态时的电池优化模式Battery Optimized Mode.
[ ] Use ACPI tables to decode valid frequency/voltage pairs 如果选择了Speedstep,就选上Use ACPI tables.
[ ]Built-in tables for Banias CPUs 迅驰一代的主频/电压参数.
< M> Intel Speedstep on ICH-M chipsets (ioport interface) Intel ICH-M南桥芯片组的支持。
<> Transmeta LongRun Transmeta处理器的支持。
< > VIA Cyrix III Longhaul VIA Cyrix处理器的支持。
--- shared options
[ ] /proc/acpi/processor/../performance interface (deprecated) 从/proc/acpi/processor/../performance获得CPU的变频信息。 内核帮助文档反对使用该选项,即将被废除.
[*]Relaxed speedstep capability checks 不全面检测Intel Speedstep,有的系统虽然支持Speedstep技术,却无法通过全面的检测
7.Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> 总线选项
--- PCI support 一定要进内核,不能编成模块)
PCI access mode (Any) ---> PCI外围设备配置,强列建议选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备
( )BIOS
( )MMConfig
( )Direct
(X)Any 选用Any,系统会先尝试直接设置,倘若失败便会退回启用BIOS设置。
[* ] PCI Express support PCI-E支持 (目前主要用于显卡和千兆网卡)
[ ]Use polling mechanism for hot-plug events对热插拔事件采用轮询机制,仅用于测试目的
[ ] Legacy /proc/pci interface 使用/proc/pci提供系统中的PCI设备信息.实际上,使用lspci(8)能提供相同甚至更多的信息.发行版都装有lspci包.可不选.
[ ] PCI Debugging PCI调试,不选.
[*]ISA support ISA 总路,现已淘汰,建议关闭。是否使用工业总线。如果你没 有老式的ISA设备,可以不选这项。现在基本上都没有ISA的设备了。不过需要注意的是如果你做嵌入式系统的开发,一些PC104的总线可能会桥接到 EISA或者是。VESA总线上。运行lspci | grep ISA, 若有, 则选上.
[ ] EISA support 扩展ISA总路,早期计算机上的总路,现已淘汰,建议关闭。
[ ] MCA support IBM PS/2上的总线,现已淘汰,建议关闭。微通道总线。IBM的台式机和笔记本上可能会有这种总线,包括它的p系列、e系列、z系列机器上都用到了这种总线。
< > NatSemi SCx200 support 支持National Semiconductor的SCx200处理器的,不选.
[ ] Enable PCCARD debugging 仅供调试
[*] Load CIS updates from userspace (EXPERIMENTAL) 有的PCMCIA卡需要这个功能,选上.
[*] PCMCIA control ioctl (obsolete)提供PCMCIA的ioctl接口.不懂什么意思,帮助文档建议选上.
[*]32-bit CardBus support 当前的PCMCIA卡基本上都是32位的CardBus
PC-card bridges 下面的是不同产家的PCMCIA芯片的驱动支持,如果你知道你的本本用的是什么芯片组的话,可以只选它而不选其它的。要是你不知道,可以全部选上,然后用 modprobe一种一种的试。
PCI Hotplug Support PCI---->热插拔支持,一般来讲只有服务器上会有热插拔的设备,如果你使用的是台式机,你可以不选择此项并跳过这一部份.我没有选.
<> Support for PCI hotplug
<>Fake PCI Hotplug driver (NEW),选上这一选项能让你的机器模拟PCI热插拔。注意,它并不是真正意义上的热插拔,决对不允许带电插拔设备除非你的主板上集成了PCI热插拔芯 片并且你的PCI设备本身支持热插拔。
<>Compaq PCI Hotplug driver (NEW),Compaq服务器上的热插拔芯片组的支持。
<>IBM PCI Hotplug driver (NEW),IBM服务器上的热插拔芯片组的支持。
<>ACPI PCI Hotplug driver (NEW),PCI热插拔设备是否支持ACPI电源管理(一般来说都是支持的)。
<>CompactPCI Hotplug driver (NEW),精简PCI总线的热插拔设备的支持,通常在嵌入式系统中会用到精简PCI总线。