linux 2.6.15.6内核配置(unfinished)
注意: 不同的内核版本配置选项(或组织)可能不同, 但原理都是一样的!
另外, 关于compile in, compile as module的选择: 根文件系统, 根文件系统所处的设备, PS/2鼠标驱动不能编译为模块!
|
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers (y)
; 选择尚未完全测试的代码(alpha-test态),事实上它是安全的,建议选择.
[*] Select only drivers expected to compile cleanly (y)
; 隐藏可能存在问题的驱动,建议选择,如果没找到对应设备的驱动,将它取消试试.
General setup --->
() Local version - append to kernel release (enter,输入字符窜)
; 从2.6.8的版本起,可以在内核版本号后面添加个性化字符窜.
[ ] Automatically append version information to the version string (NEW) (n)
; 这个没看懂,先不选上.
[*] Support for paging of anonymous memory (swap) (y)
; 如果使用了swap分区提供虚拟内存,一定要选上它.
[*] System V IPC (y)
; System V 的进程间通信, 选上.
[*] POSIX Message Queues (y)
; POSIX消息队列, 选上.
[*] BSD Process Accounting (y)
; 如果选上,user process可以通过系统调用使内核在它退出时将相关信息写入某个文件(如进程创建时间,拥有者,命令,内存使用量...)
选上它,可以在应用程序中利用这些信息.
[*] BSD Process Accounting version 3 file format (y)
; 将前面所述的进程信息记录到v3格式的文件中, 选上它
[*] Sysctl support (y)
; 提供动态更改内核参数与变量的接口, 而不需要重新启动系统. 打开这个选项将会增加内核的体积至少8KB。
如果你的内核仅用制作安装与恢复系统系统盘那么可以不选, 以减少对内存的占用.
[ ] Auditing support (n)
; 允许其他内核子系统的内核审查,不知道什么鸟意思,不选上.
[*] Kernel Userspace Events (y)
; 开启内核-用户空间事件层,它是比socket简单的kernel-user通信机制. 这样应用程序就可以通过监听不用轮询系统设备或文件
[ ] Kernel .config support (n)
; 将.config文件编译到内核中, 以显示运行中的内核使用哪个选项.不要选择.
() Initramfs source file(s) (n)
; 好像是RAM FS初始化的吧,不知道什么鸟东西,不选!
[ ] Optimize for size (Look out for broken compilers!) (n)
; 用gcc编译内核时,优化选项是 -O2,选择它将改为-Os, 生成比较小的内核.(老版本的gcc可能因此产生错误代码)
[ ] Configure standard kernel features (for small systems) ---> (n)
; 针对小系统 (embedded)裁减内核, 桌面系统不用选择.
Loadable module support --->
[*] Enable loadable module support (y)
; 使内核支持模块,当然要选择! (使用modprobe, lsmod, modinfo, insmod, rmmod工具...)
[*] Module unloading (y)
; 卸载模块,选择!(有些模块一旦加载就不能卸载, 不管是否选择了这个选项)
[*] Forced module unloading (y)
; 强制卸载内核, 即便内核认为该行为不安全的时候.( rmmod -f 强制卸载,不等停止使用模块)
[ ] Module versioning support (EXPERIMENTAL) (n)
; 一般地,我们编译的模块是用于当前运行的内核, 选择该选项可以针对其他的内核编译模块. 先不选择.
[ ] Source checksum for all modules (n)
; 查看模块中是哪些代码的,不选
[*] Automatic kernel module loading (y)
; 内核在任务中要使用一些被编译为模块的驱动或特性时, 先使用modprobe命令来加载它
该选项自动调用modprobe加载需要的模块.当然选择!
Block layer --->
[ ] Support for Large Block Devices (n)
; 如果有超过2T的块设备,则选择它以支持大容量块设备
[ ]
IO Schedulers --->
<*> Anticipatory I/O scheduler (y)
<*> Deadline I/O scheduler (y)
<*> CFQ I/O scheduler (y)
Default I/O scheduler (Anticipatory) --->
(X) Anticipatory
上述3中调度方式都选择,默认的调度方式选为anticipatory (按空格选择)
Processor type and features --->
Subarchitecture Type (PC-compatible) --->
; 用的PC,选PC-compatible
Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon) --->
; 选择CPU类型, 可通过 cat /proc/cpuinfo查看
[ ] Generic x86 support (n)
; 如果没有列出你所使用的CPU类型,而你的CPU又是X86的,选上它,否则不选.它增加了通用性却降低了特定CPU的性能.
[*] HPET Timer Support (y)
;
这也是一个新的特性,HPET是intel制定的新的用以代替传统的8254(PIT)中断定时器与RTC的定时器,全称叫作高精度事件定时器。如果你有
一台较新的机器就选它吧,一般它是一个安全的选项, 即使你的硬件不支持HPET也不会造成问题,因为它会自动用8254替换。
[ ] Symmetric multi-processing support (n)
; 只有一个CPU,SMP不用选择
Preemption Model (Preemptible Kernel (Low-Latency Desktop)) --->
(X) Preemptible Kernel (Low-Latency Desktop)
; 2.6内核的特点:抢占式内核.选择可抢占式内核以提升桌面系统的交互性能或实时性.
[*] Preempt The Big Kernel Lock (NEW) (y)
; 抢占大内核锁?不清楚,不过选择了可加强桌面系统性能.
[*] Local APIC support on uniprocessors (y)
; 单CPU的本地APIC (advanced programmable interrupt controller)支持,它内嵌在cpu中支持cpu自身产生的中断.建议选择,就算cpu不支持APIC,也没有影响.
[*] IO-APIC support on uniprocessors (y)
; 同上,支持I/O高级可编程中断控制器.
[*] Machine Check Exception (y)
; 如果系统出现问题, 内核采取一定的措施,比如打印警告信息或挂起系统.
cat /proc/cpuinfo | grep mce 若CPU flags中有mce,
这个功能是需要硬件支持的。你可以查看/proc/cpuinfo看看是否有mce标志,则说明CPU支持该选项.
启动时加nomce参数可关闭它.
< > Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4 (n)
; 启动一个5秒的定时器,跟踪非致命错误并更正,记录它.如果不是特定的CPU,不要选择.(我的本本是Pentium M,不选择)
[ ] check for P4 thermal throttling interrupt.
; P4的CPU温度过高时会在屏幕上显示出相关的信息,只适用于Pentium 4
< > Toshiba Laptop support (n)
< > Dell laptop support (n)
; 上述两项都针对东芝和戴尔IInspire 8000笔记本,不选.
< > Enable X86 board specific fixups for reboot (n)
; 修正主板/芯片组以正确重启或工作,目前只针对 GX1, CS5530A, TROM2.1
lspci -v | grep CX1 ...若系统不支持,则不用选择. (?我说错了好像)
< > /dev/cpu/microcode - Intel IA32 CPU microcode support (n)
; 更新intell IA32 cpu的微码(内核是不自带的,需要另外下载)
< > /dev/cpu/*/msr - Model-specific register support (n)
; 让privileged进程访问X86的MSRs(model-specific registers),一般用于intel的Embedded cpu.
< > /dev/cpu/*/cpuid - CPU information support (n)
; 在/dev/cpu中建立一系列的设备文件, 以使过程访问指定的CPU.
Firmware Drivers --->
< > BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL) (n)
; 可以打开实模式下BIOS中的增强磁盘设备服务,以决定从哪个磁盘上启动.一般的BIOS不支持.
< > BIOS update support for DELL systems via sysfs (n)
; 戴尔的BIOS更新系统,需要一些应用软件的支持.
< > Dell Systems Management Base Driver (n)
; 为上述的DELL BIOS更新系统提供sysfs借口,先不设,以后再研究.我的本本是Dell D600.
High Memory Support (off) --->
; 如果有大于4G的内存,可选择.我内存只有512M.
Memory model (Flat Memory) --->
; 选择内存模式, flat memory记忆被盗,查查资料了再说,先选上.
[ ] Math emulation (n)
; 在你的CPU上如果没有数学协处理器的话,打开这个选项可以让内核模拟一个.以提升浮点计算能力,不过慢的可以.如果你使用的不是古董CPU的话(486SX以前的), 这一项你永远都不需要。
[*] MTRR (Memory Type Range Register) support (y)
; 在Intel p6家族的处理器中(Ppro、 PII和更新的)有一个内存类型范围寄存器,可用来控制处理器访问的内存范围. 打开它一般可以提升显卡的显示性能(2.5倍).
[ ] Boot from EFI support (EXPERIMENTAL) (n)
;
EFI规范基本上是一个让PC可以在开机前(preboot)进行扫毒及诊断的执行环境.英特尔已经利用EFI建立一个可以取代BIOS的开机前软件框
架.
这个框架名为“EFI平台创新开发框架”,其工程代码为Tiano,这个框架让电脑厂商可以撰写开机前软件的模组,这种模组很像Windows的驱动程
序。它需要ELILO bootloader, grub或lilo不支持EFI.
[ ] Use register arguments (EXPERIMENTAL) (n)
; 使用寄存器参数,(编写系统调用的时候可能有用,参考
,v2 5.3
它使用不同的ABI,将函数的前三个参数通过寄存器传递.(gcc-3.0或更新的才支持).先不设置,学习编写系统调用的时候再看.
[*] Enable seccomp to safely compute untrusted bytecode (y)
; 使用seccomp将计算程序孤立到它们各自的地址空间.如果不是用于嵌入式系统, 还是在这里选yes
Timer frequency (250 HZ) --->
; 时钟频率,选为250赫兹.
(0x100000) Physical address where the kernel is loaded
; 设定内核加载的物理地址.默认为0x100000.不要更改!
[ ] kexec system call (EXPERIMENTAL) (n)
; kexec能够关闭当前内核,运行另外一个内核.
Power management options (ACPI, APM) --->
[*] Legacy Power Management API (y)
; 为pm_regiter()提供支持.
[ ] Power Management Debug Support (n)
; 支持电源管理的调试
[*] Software Suspend (EXPERIMENTAL) (y)
; 支持系统suspend(休眠),打开这项功能后, 可用swsusp或者shutdown -z