1.
内容目录
1. Code maturity level options 2
2. General setup 常规安装选项 2
3. Loadable module support 引导模块支持 5
4. Block layer 6
5. Processor type and features 处理器的类型和特性 8
6. Power management options (ACPI, APM) 17
7. Bus options (PCI, PCMCIA, EISA, MCA, ISA) 总线选项 22
8. Executable file formats 24
9. Networking support 网络支持。 25
10. Device Drivers 设备驱动 47
11. File systems 文件系统 82
12. Instrumentation Support 支持测试项目 86
13. Kernel hacking 内核调试。 86
14. Security options 安全选项。 88
15. Cryptographic options 密码选项。 88
16. Library routines 常规的库。 95
说明1:
文字中的Y表示选择进入内核。M表示编成模块。N表示不选择。有的只能选Y,有的只能选M。
在make menuconfig 下,*表示Y,M表示M,空白表示N。
make xconfig下,√ 表示Y,? 表示M,空白表示N。
说明2:
在菜单中,有些选项在你选择Y之前出现,有些选择Y,它不会出现。有些选项根本不会提供选择。所以我提供的菜单不应该是最完整的选项。如果你遇到了一个新的选项,你可以仔细阅读它的英语描述,或者通过在线搜索、论坛问题和其他方式来理解它。
1. Code maturity level options
代码完成等级选项
1.1. Prompt for development and/or incomplete code/drivers
提示开发中或未完成的代码和驱动。
LINUX许多事情,如网络设备、文件系统、网络协议等,其功能、稳定性或测试等级不能满足流行的要求,仍在开发中。这就是所谓的阿尔法版本:最初的开发版本;接下来是BETA版本,公开测试版本。如果是阿尔法版,开发者往往不会让它发布,以避免收到为什么不工作等信件的麻烦。然而,积极测试和使用阿尔法版本对软件开发非常有好处。在某些情况下,你只需要明白好,在某些情况下可能会有问题。报告详细的错误对开发者很有帮助。
这个选项也可以使用一些旧的驱动程序。许多旧的驱动程序已经在未来的核心中被替换或删除。除非你想帮助软件测试,或开发软件,或者你的机器需要这些特性,否则你可以选择N,在配置菜单中,你会得到更少的选项。假如你选择了Y,您将获得更多的阿尔法版本驱动和代码配置菜单。
2. General setup 常规安装选项
2.1. Local version - append to kernel release
在你的核心后面添加一串字符来表示版本。这些字符是你用的uname -a 会显示命令。你的字符最多不能超过64位。
2.2. Automatically append version information to the version string (LOCALVERSION_AUTO)
版本信息自动生成。此选项将自动检测您的内核并生成相应的版本,以免与原始版本重复。Perl的支持。
由于编译命令make-kpkg 中我们会加入- - append-to-version 选项生成自定义版本,所以在这里选择N。
2.3. Support for paging of anonymous memory (swap)
这个选项将使您的核心支持虚拟内存,即使计算机似乎比实际内存有更多的内存空间来执行大程序。这个虚拟内存存在LINUX中就是SWAP分区。除非你不想要SWAP分区,否则这里必须选择Y。
2.4. System V IPC (IPC:Inter Process Communication)
中间过程连接是一组功能和系统调用,使过程同步和交换信息。这通常是一件好事,有些程序只有你选择Y才能运行 。特别是,你想在那里LINUX下运行 DOS你必须选择模拟程序Y。
你可以用info ipc 命令来了解IPC。
一定要选Y。
2.4.1. IPC Namespaces (IPC_NS)
IPC命名空间,命名空间的作用是区分同名的东西,如李宁和张宁,被称为宁,加一个姓来区分。该选项还为不同的服务器提供服务器IPC多命名,达到一个IPC提供多对象支持的目的。如果不清楚,请选择N。
2.5. POSIX Message Queues 可移植操作系统接口信息队列
可移植操作系统接口信息队列IPC的一部分,在通信队列中有较高的优先权来保持通信畅通。如果你想编译和操作,Solaris操作系统上写的POSIX选择信息队列程序Y,还需要 mqueue 支持这些特征的库。它存在于文件系统中(mqueue),你可以mount它。为了保证未来不同程序的协调稳定,如果不清楚,选择Y。
2.6. BSD Process Accounting BSD进程统计
如果你选Y,用户级别的程序可以通过特殊的系统调用通知内核将过程统计信息记录在文件中过程存在时,信息将被内核记录在文件中。信息通常包括建立时间、所有者、命令名称、内存使用、控制终端等。这对用户级程序非常有用。所以通常选择Y是个好主意。
2.6.1. BSD Process Accounting version 3 file format
选Y,统计信息将以新的格式进行(V3)写入,包含过程ID和父亲的过程。注意这种格式和以前的格式 v0/v1/v2 格式不兼容,需要升级相关工具使用。
2.7. Export task/process statistics through netlink (EXPERIMENTAL)
实验阶段的功能。通过通用网络输出工作/过程的相应数据和BSD不同的是,这些数据在运行过程中可以通过相关命令访问。BSD类似地,数据将在过程结束时发送到用户空间。如果不清楚,则选择N。
2.8. UTS Namespaces
通用终端系统的命名空间。它允许容器,如Vservers利用UTS命名空间为不同的服务器提供不同的服务器UTS。若不清楚,选择N。
2.9. Auditing support 审计支持(AUDIT)
允许审计的下层可用于其他核心系统,如SE-Linux,登录时需要此声音和视频输出。 CONFIG_AUDITSYSCALL 系统无法调用时间(即下一个选项)。
2.9.1. Enable system-call auditing support (AUDITSYSCALL)
允许系统独立或通过其他核心子系统调用审计支持,如SE-Linux。使用此审计文件系统查看特征,请确保 INOTIFY 已设置。
最后一个子选项,两个选项。我不知道审计的意义,也许是为了调用其他核心的东西。所以我选择了它们,因为我的机器上有一个官方的2.6.15-27内核。
2.10. Kernel .config support
允许此选项.config文件(即编译)LINUX配置文件)保存在内核中。
它提供了正在运行或仍在硬盘中的内核的相关配置选项。可通过内核镜像文件 kernel image file 用命令 script scripts/extract-ikconfig 作为当前内核重编译或另一个内核编译的参考。如果你的核心在运行中,可以通过/proc/config.gz读取文件。下一个选项提供这个支持。
它看起来像一个很好的功能,可以编译 .config文件保存在内核中,以供将来参考和调用。当用于重编和编译其他内核时,可以使用它们。如果你是一个编译内核的疯子,你应该选择这个(例如,我,但我总是备份所有内核 .config 文件)。
2.10.1. Enable access to .config through /proc/config.gz
通过/proc/config.gz 访问当前内核.config 。新功能,如果最后一项选择,这个就选择。
2.11. Cpuset support
多CPU支持。这个选项可以让你建立和管理。CPU它可以动态地将系统分割在每个集群中CPU在内存节点中,每个节点都是独立运行的。这对大型系统特别有效。
若不清楚,选择N。
2.12. Kernel->user space relay support (formerly relayfs)
支持核心系统区域和用户区域的传输通信。该选项在特定的文件系统中提供数据传输接口支持,可以提供从核心空间到用户空间的大量数据传输工具和设施。
若不清楚,选择N。
没有可选项。
2.14. Optimize for size (Look out for broken compilers!)
这个选项将在GCC命令后用 "-Os" 代替 "-O2"参数,这样可以得到更小的内核。警告:某些GCC版本会导致错误。如果有错,请升级你的GCC。
如果不清楚,选N。
这是优化内核大小的功能,没必要选。一个编译好的内核才7-10多M,大家不会少这么点空间吧。选上了可能会出一些问题。最好不选。
2.15. Configure standard kernel features (for small systems)
这个选项可以让内核的基本选项和设置无效或者扭曲。这是用于特定环境中的,它允许“非标准”内核。你要是选它,你一定要明白自己在干什么。
这是为了编译某些特殊用途的内核使用的,例如引导盘系统。通常你可以不选择这一选项,你也不用关心他的子选项。
3. Loadable module support 引导模块支持
3.1. Enable loadable module support
这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块,否则无法启动系统。在启动时不用到的功能,编成模块是最有效的方式。你可以查看MAN手册来了解:modprobe, lsmod, modinfo, insmod 和 rmmod.
如果你选了这项,你可能需要运行 "make modules_install" 命令来把模块添加到/lib/modules/目录下,以便 modprobe 可以找到它们。
如果不清楚,选Y。
3.2. Module unloading
这个选项可以让你卸载不再使用的模块,如果不选的话你将不能卸载任何模块(有些模块一旦加载就不能卸载,不管是否选择了这个选项)。
如果不清楚,选Y。
3.2.1. Forced module unloading
这个选项允许你强行卸除模块,即使内核认为这不安全。内核将会立即移除模块,而不管是否有人在使用它(用rmmod -f 命令)。这主要是针对开发者和冲动的用户提供的功能。
如果不清楚,选N。
3.3. Module versioning support (MODVERSIONS)
有时候,你需要编译模块。有时候,你需要编译模块。选这项会添加一些版本信息,来给编译的模块提供独立的特性,以使不同的内核在使用同一模块时区别于它原有的模块。这有时可能会有点用。
如果不清楚,选N。
3.4. Source checksum for all modules
这个功能是为了防止你在编译模块时不小心更改了内核模块的源代码但忘记更改版本号而造成版本冲突。
如果不清楚,选N。
3.5. Automatic kernel module loading
允许内核自动加载模块。一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加载它,内核才能使用。不过,如果你选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块。
如果不清楚,选Y。
4. Block layer
块设备。
4.1. Enable the block layer (BLOCK)
这选项使得块设备可以从内核移除。如果不选,那么 blockdev 文件将不可用,一些文件系统比如 ext3 将不可用。这个选项会禁止 SCSI 字符设备和 USB 储存设备,如果它们使用不同的块设备。
选Y,除非你知道你不需要挂载硬盘和其他类似的设备。不过此项无可选项。
4.1.1. Support for Large Block Devices (LBD)
如果你要用大于2TB的硬盘,选这个。
4.1.2. Support for tracing block io actions
对块设备进行跟踪和分析的功能。
4.1.3. Support for Large Single Files (LSF)
大文件支持。如果你准备建的文件大于2TB,选这个。
4.1.4. IO Schedulers 磁盘I/O调度器
I/O是输入输出带宽控制,主要针对硬盘,是核心的必須的东西。这里提供了三个IO调度器。
4.1.4.1. Anticipatory I/O scheduler
抢先式 I/O 调度方式是默认的磁盘调度方式。它对于大多数环境通常是比较好的选择。但是它和Deadline I/O 调度器相比有点大和复杂,它有时在数据调入时会比较慢。
4.1.4.2. Deadline I/O scheduler
Deadline I/O调度器简单而又紧密,在性能上和抢先式调度器不相上下,在一些数据调入时工作得更好。至于在单进程I/O磁盘调度上,它的工作方式几乎和抢先式调度器相同,因此也是一个好的选择。
看介绍这个好像比上面的更好,可以试试。不过按照我的平衡观点,好东西都会带来问题。
4.1.4.3. CFQ I/O scheduler
CFQ调度器尝试为所有进程提供相同的带宽。它将提供平等的工作环境,对于桌面系统很合适。
4.1.4.4. Default I/O scheduler 选择默认的I/O调度器
我选了Anticipatory I/O scheduler。
我这样理解上面三个IO调度器:抢先式是传统的,它的原理是一有响应,就优先考虑调度。如果你的硬盘此时在运行一项工作,它也会暂停下来先响应用户。
期限式则是:所有的工作都有最终期限,在这之前必须完成。当用户有响应时,它会根据自己的工作能否完成,来决定是否响应用户。
CFQ则是平均分配资源,不管你的响应多急,也不管它的工作量是多少,它都是平均分配,一视同仁的。
2.
5. Processor type and features 处理器类型及特性
5.1. Symmetric multi-processing support (SMP) 对称多处理器支持。
这将支持有多CPU的系统。如果你的系统只有一个CPU,选N。反之,选Y。
如果你选N,内核将会在单个或者多个CPU的机器上运行,但是只会使用一个CPU。如果你选Y,内核可以在很多(但不是所有)单CPU的机器上运行,在这样的机器,你选N会使内核运行得更快。
注意如果你选Y,然后在Processor family选项中选择"586" or "Pentium" ,内核将不能运行在486构架的机器上。同样的,多CPU的运行于PPro构架上的内核也无法在 Pentium 系列的板上运行。
使用多CPU机器的人在这里选Y,通常也会在后面的选项“Enhanced Real Time Clock Support”中选Y。如果你在这选Y,"Advanced Power Management" 的代码将不可用。
如果不清楚,选N。
5.2. Subarchitecture Type 子构架类型
5.2.1. PC-compatible
选这个如果你的机器是标准PC
5.2.2. AMD Elan
注意,如果你是 K6/Athlon/Opteron处理器不要选这个
5.2.3. Voyager
5.2.4. NUMAQ (IBM/Sequent)
5.2.5. Summit/EXA (IBM x440)
5.2.6. SGI 320/540 (Visual Workstation)
5.2.7. Generic architecture (Summit, bigsmp, ES7000, default)
5.2.8. Support for Unisys ES7000 IA32 series
5.3. Processor family
处理器类型。针对自己的CPU类型,选取相应的选项。
这里是处理器的类型。这里的信息主要目的是用来优化。为了让内核能够在所有X86构架的CPU上运行(虽然不是最佳速度),在这你可以选386。
内核不会运行在比你选的构架还要老的机器上。比如,你选了Pentium构架来优化内核,它将不能在486构架上运行。
如果你不清楚,选386。
5.3.1. - "386"
5.3.2. - "486"
5.3.3. - "586"
5.3.4. - "Pentium-Classic"
5.3.5. - "Pentium-MMX"
5.3.6. - "Pentium-Pro"
5.3.7. - "Pentium-II"
5.3.8. - "Pentium-III"
5.3.9. - "Pentium-4"
5.3.10. - K6, K6-II and K6-III
5.3.11. - "Athlon" K7 (Athlon/Duron/Thunderbird).
5.3.12. -Opteron/Athlon64/Hammer/K8
5.3.13. - "Crusoe"
5.3.14. - "Efficeon"
5.3.15. - "Winchip-C6"
5.3.16. - "Winchip-2"
5.3.17. - "Winchip-2A"
5.3.18. - "GeodeGX1"
5.3.19. - "Geode GX/LX"
5.3.20. - "CyrixIII/VIA C3"
5.3.21. - VIA C3-2 "Nehemiah".
5.4. Generic x86 support
通用X86支持。
除了对上面你选择的X86 CPU进行优化,它还对更多类型X86 CPU的进行优化。这将会使内核在其他的X86 CPU上运行得更好。
对于供应商来说,他们非常需要这些功能,因为他们需要更通用的优化支持。
这个选项提供了对X86系列CPU最大的兼容性,用来支持一些少见的x86构架的CPU。如果你的CPU能够在上面的列表中找到,就里就不用选了。
5.5. HPET Timer Support
HPET时钟支持
允许内核使用 HPET 。HPET 是代替当前8254的下一代时钟,全称叫作高精度事件定时器。你可以安全地选Y。但是,HEPT只会在支持它的平台和BIOS上运行。如果不支持,8254将会激活。
选N,将继续使用8254时钟。
5.6. Maximum number of CPUs (2-255)
设置最高支持的CPU数,无法选择。我的显示为8。
5.7. SMT (Hyperthreading) scheduler support
超线程调度器支持
超线程调度器在某些情况下将会对 Intel Pentium 4 HT系列有较好的支持。
如果你不清楚,选N。
5.8. Multi-core scheduler support
多核调度机制支持,双核的CPU要选。
多核心调度在某些情况下将会对多核的CPU系列有较好的支持。
如果你不清楚,选N。
5.9. Preemptible Kernel 抢先式内核。
一些优先级很高的程序可以先让一些低优先级的程序执行,即使这些程序是在核心态下执行。从而减少内核潜伏期,提高系统的响应。当然在一些特殊的点的内核是不可抢先的,比如内核中的调度程序自身在执行时就是不可被抢先的。这个特性可以提高桌面系统、实时系统的性能。
下面有三个选项:
5.9.1. No Forced Preemption (Server) 非强迫式抢先。
这是传统的LINUX抢先式模型,针对于高吞吐量设计。它同样在很多时候会提供很好的响应,但是也可能会有较长的延迟。
如果你是建立服务器或者用于科学运算,选这项,或者你想要最大化内核的原始运算能力,而不理会调度上的延迟。
5.9.2. Voluntary Kernel Preemption (Desktop) 自动式内核抢先
这个选项通过向内核添加更多的“清晰抢先点”来减少内核延迟。这些新的抢先点以降低吞吐量的代价,来降低内核的最大延迟,提供更快的应用程序响应。这通过 允许低优先级的进程自动抢先来响应事件,即使进程在内核中进行系统调用。这使得应用程序运行得更“流畅”,即使系统已经是高负荷运转。
如果你是为桌面系统编译内核,选这项。
5.9.3. Preemptible Kernel (Low-Latency Desktop) 可抢先式内核(低延迟桌面)
这个选项通过使所有内核代码(非致命部分)编译为“可抢先”来降低内核延迟。
这通过允许低优先级进程进行强制抢先来响应事件,即使这些进程正在进行系统调用或者未达到正常的“抢先点”。这使得应用程序运行得更加“流畅”即使系统已经是高负荷运转。代价是吞吐量降低,内核运行开销增大。
选这项如果你是为桌面或者嵌入式系统编译内核,需要非常低的延迟。
如果你要最快的响应,选第三项。我认为万物是平衡的,低延迟意味着系统运行不稳定,因为过多来响应用户的要求,所以我选第二个。
5.10. Preempt The Big Kernel Lock
抢先式大内核锁(早期Linux用于支持SMP系统时所采用的非细粒度锁)
这个选项通过让大内核锁变成“可抢先”来降低延迟。
选Y如果你在构建桌面系统。如果你不清楚,选N。
5.11. Machine Check Exception 机器例外检查
机器例外检查允许处理器在检测到问题(比如过热、组件错误)时通知内核。内核根据问题的严重程度来决定下一步行为,比如在命令行上打印告警信息,或者关 机。你的处理器必须是 Pentium或者更新版本才能支持这个功能。 用cat /proc/cpuinfo来检测你的 CPU是否有mce 标志。
注意一些老的 Pentium 系统存在设计缺陷,会提供假的MCE事件,所以在所有P5处理器上MCE被禁用,除非在启动选项上明确 "mce"参数。同样地,如果MCE被编译入内核并在非标准的机器上导致错误,你可以用"nomce"启动参数来禁用MCE。
MCE功能会自动忽视非MCE处理器,比如386和486,所以几乎所有人都可以在这里选Y。
5.11.1. Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4
检测AMD Athlon/Duron / Intel Pentium 4的非致命错误
允许这项特性,系统将会启动一个计时器,每5秒进行检测。非致命问题会自动修正(但仍然会记录下来),如果你不想看到这些信息,选N。这些信息可以让你发现要损坏的硬件,或者是非标准规格硬件(比如:超频的)。
这个功能只会在特定的CPU上起作用。
5.11.2. check for P4 thermal throttling interrupt.
检测P4节能器中断
当P4进入节能状态时,打印信息。
5.12. Toshiba Laptop support 东芝笔记本支持。
这个选项是针对Toshiba笔记本的,可以用来访问Toshiba的系统管理模式,可以直接设置BIOS。不过要注意它只在 Toshiba自己的 BIOS中起作用。假如你有一台Toshiba笔记本,而它的BIOS是Phoenix的,那这个选项仍然是无用的。
5.13. Dell laptop support
DELL笔记本支持。功能同上
5.14. Enable X86 board specific fixups for reboot
X86板的重启修复功能。
这将打开芯片或者主板上的重启修复功能 ,从而能够使之正常工作。这功能仅仅在一些硬件和BIOS的特定组合上需要。需要这项功能的征兆是重启时使系统卡死或者挂起。
目前,这个修复功能仅仅支持Geode GX1/CS5530A/TROM2.1.的组合。
选Y如果你需要这项功能,目前,选Y是安全的,即使你不需要它。否则,选N。
5.15. /dev/cpu/microcode - Intel IA32 CPU microcode support
是否支持Intel IA32架构的CPU。这个选项将让你可以更新Intel IA32系列处理器的微代码,显然你需要到网上去下载最新的代码,LINUX不提供这些代码。当然你还必须在文件系统选项中选择/dev file system support才能正常的使用它。如果你把它译为模块 ,它将是 microcode。
IA32主要用于高于4GB的内存。详见下面的“高内存选项”。
5.16. /dev/cpu/*/msr - Model-specific register support
是否打开CPU特殊功能寄存器的功能。这个选项桌面用户一般用不到,它主要用在Intel的嵌入式CPU中的,这个寄存器的作用也依赖与不同的CPU类型而有所不同,一般可以用来改变一些CPU原有物理结构的用途,但不同的CPU用途差别也很大。
5.17. /dev/cpu/*/cpuid - CPU information support
是否打开记录CPU相关信息功能。这会在/dev/cpu中建立一系列的设备文件,用以让过程去访问指定的CPU。
5.18. High Memory Support (4GB) 高容量内存支持
LINUX能够在X86系统中使用64GB的物理内存。但是,32位地址的X86处理器只能支持到4GB大小的内存。这意味着,如果你有大于4GB的物理内存,并非都能被内核“永久映射”。这些非永久映射内存就称为“高阶内存”。
如果你编译的内核永远都不会运行在高于1G内存的机器上,选OFF(默认选项,适合大多数人)。这将会产生一个"3GB/1GB"的内存空间划分,3GB 虚拟内存被内核映射以便每个处理器能够“看到”3GB的虚拟内存空间,这样仍然能够保持4GB的虚拟内存空间被内核使用,更多的物理内存能够被永久映射。
如果你有1GB-4GB之间的物理内存,选4GB选项。如果超过4GB,那么选择64GB。这将打开 Intel 的物理地址延伸模式(PAE)。PAE将在IA32处理器上执行3个层次的内存页面。PAE是被LINUX完全支持的,现在的Intel处理器 (Pentium Pro 和更高级的)都能运行PAE模式。注意:如果你选64GB,那么在不支持PAE的CPU上内核将无法启动。
你机器上的内存能够被自动探测到,或者你可以用类似于"mem=256M"的参数强制给内核指定内存大小。
5.18.1. off 如果不清楚,选OFF。
5.18.2. 4GB 选这项如果你用的是32位的处理器,内存在1-4GB之间。
5.18.3. 64GB 选这项如果你用的是32位的处理器,内存大于4GB。
5.19. Memory model 内存模式
5.19.1. Flat Memory 平坦内存模式。
这个选项允许你改变内核在内部管理内存的一些方式。大多数用户在这只会有一个选项:Flat Memory。这是普遍的和正确的选项。
一些用户的机器有更高级的特性,比如 NUMA 和内存热拔插,那将会有不同的选项。Discontiguous Memory(非接触式内存模式)是一个更成熟、更好的测试系统。但是对于内存热拔插系统不太合适,会被"Sparse Memory"代替。如果你不清楚"Sparse Memory"和"Discontiguous Memory"的区别,选后者。
如果不清楚,就选Flat Memory。
5.19.2. Sparse Memory 稀疏内存模式。
这对某些系统是唯一选项,包括内存热拔插系统。这正常。
对于其他系统,这将会被Discontiguous Memory选项代替。这个选项提供潜在的更好的特性,可以降低代码复杂度,但是它是新的模式,需要更多的测试。
如果不清楚,选择"Discontiguous Memory" 或 "Flat Memory"。
我的机器上只有这两个选项,我选Flat Memory。
5.20. 64 bit Memory and IO resources (EXPERIMENTAL)
64位内存和IO资源
这个选项将使内存和IO资源变成64位的。
实验选项,可以让内存和I/O变为64位。我的总线是32位的,所以还是不选了。选了不知道会不会出错。
5.21. Math emulation
数学仿真
LINUX可以仿真一个数学协处理器(用来进行浮点运算),如果你没有的话。486DX 和 Pentium 处理器内建有数学协处理器。486SX和386的没有,除非你专门加过487DX 或者387协处理器。所有人都需要协处理器或者这个仿真。
如果你没有数学协处理器,你需要在这选Y。如果你有了协处理器还在这选Y,你的协处理器仍然被用到。这意味着如果你打算把编译的内核用在不同的机器上,选Y是明智的选择。
如果不清楚,选Y,这将使内核增加66KB,无伤大雅。
5.22. MTRR (Memory Type Range Register) support
内存类型区域寄存器
在 Intel P6 系列处理器(Pentium Pro, Pentium II 和更新的)上,MTRR将会用来规定和控制处理器访问某段内存区域的策略。
如果你在PCI或者AGP总线上有VGA卡,这将非常有用。例如可将MTTR设为在显存的地址范围上使用“write-combining”策略,这样 CPU可以在PCI/AGP总线爆裂之前将多次数据传输集合成一个大的数据传输,这样可以提升图像的传送速度2.5倍以上。选Y,会生成文件 /proc/mtrr,它可以用来操纵你的处理器的MTRR。典型地,X server 会用到。
这段代码有着通用的接口,其他CPU的寄存器同样能够使用该功能。Cyrix 6x86, 6x86MX和 M II处理器有ARR ,它和 MTRR有着类似的功能。AMD K6-2/ K6-3有两个MTRR, Centaur C6有8个MCR允许复合写入。所有这些处理器都支持这段代码,你可以选Y如果你有以上处理器。
选Y同样可以修正SMP BIOS的问题,它仅为第一个CPU提供MTRR,而不为其他的提供。这会导致各种各样的问题,所以选Y是明智的。
你可以安全地选Y,即使你的机器没有MTRR。这会给内核增加9KB。
5.23. Boot from EFI support
EFI启动支持
这里允许内核在EFI平台上使用储存于EFI固件中的系统设置启动。这也允许内核在运行时使用EFI的相关服务。
这个选项只在有EFI固件的系统上有用,它会使内核增加8KB。另外,你必须使用最新的ELILO 登录器才能使内核采用EFI的固件设置来启动(GRUB和LILO完全不知道EFI是什么东西)。即使你没有EFI,却选了这个选项,内核同样可以启动。
大家应该用的是GRUB,所以选上这个也没什么用。
5.24. Enable kernel irq balancing (IRQBALANCE) 中断平衡。
这个选项使系统进行中断平衡。
如果你是双核CPU,如果不选这项,那么中断负荷都在第一个CPU上,其他的CPU可能得不到中断。
5.25. Use register arguments (REGPARM) 寄存器参数使用。
使用寄存器参数
用‘-mregparm=3’的参数编译内核。这使 gcc 使用更高效的应用程序二进制接口(ABI)来跳过编译时的前三个调用寄存器参数。这使得代码编译更精巧更快速。
如果你不选这个选项,默认的ABI将会使用。
如果不清楚,选Y。
5.26. Enable seccomp to safely compute untrusted bytecode (SECCOMP)
允许SECCOMP(快速计算)安全地运算非信任代码。
这个内核特性在程序出现数码错误,需要重新对非信任的代码进行运算时非常有效。它使用管道或者其他传输方式,使文件描述进程支持读/写的系统调用,这样可以利用SECCOMP隔离那些程序本身的空间。
一旦 seccomp 通过/proc/<pid>/seccomp运行,它将不能停止,任务也只能进行一些安全的被seccomp认证的系统调用。
如果不清楚,选Y。只有嵌入式系统选N。
5.27. Timer frequency 时钟频率
允许设置时钟频率。
这是用户定义的时钟中断频率 100HZ-1000 HZ ,不过 100 HZ 对服务器和NUMA系统更合适,它们不需要很快速的响应用户的要求,因为时钟中断会导致总线争用和缓冲打回。注意在SMP环境中,时钟中断由变量 NR_CPUS * Hz定义在每个CPU产生。
其实和前面的抢先式进程差不多,就是多少频率来响应用户要求。我选了250HZ的。要快点的可以选1000HZ的。但是还是那句话,一切是平衡的。机器过快响应你,它自己的活就不知道做得好不好了。
5.27.1. 100 HZ (HZ_100)
100 HZ是传统的对服务器、SMP 和 NUMA的系统选项。这些系统有比较多的处理器,可以在中断较集中的时候分担中断
5.27.2. 250 HZ (HZ_250)
250 HZ对服务器是一个好的折衷的选项,它同样在SMP 和 NUMA 系统上体现出良好的反应速度。
5.27.3. 1000 HZ (HZ_1000)
1000 HZ对于桌面和其他需要快速事件反应的系统是非常棒的。
5.28. kexec system call (KEXEC) 快速重启调用。
kexec 系统调用
kexec是一个用来关闭你当前内核,然后开启另一个内核的系统调用。它和重启很像,但是它不访问系统固件。由于和重启很像,你可以启动任何内核,不仅仅是LINUX。
kexec这个名字是从 exec 系统调用来的。它只是一个进程,可以确定硬件是否正确关闭,所以如果这段代码没能正确为你进行初始化工作,请不要奇怪。它对设备的热拔插会有点帮助。由于它对硬件接口会乱写点东西,所以我没什么好的建议给你。
Linus本人都没话说,估计是受害不浅。我们当然不能上当,选N!
5.29. Support for hot-pluggable CPUs (EXPERIMENTAL)
对热拔插CPU的支持
选Y,可以做个实验,把CPU关闭和打开,也可以中止SMP系统。CPU可以通过/sys/devices/system/cpu 来进行控制。
5.30. Compat VDSO support (COMPAT_VDSO)
Compat VDSO 支持
如果你运行的是最新的glibc(GNU C函数库)版本( 2.3.3 或更新),选N,这样可以移除高阶的VDSO 映射,使用随机的 VDSO。
如果不清楚,选Y。
5.31. Firmware Drivers 固件驱动。
固件就是你板上的BIOS、各种显卡芯片之类的已经固化好的记录某些特定数据的东西。
5.31.1. BIOS Enhanced Disk Drive calls determine boot disk
BIOS加强磁盘功能,确定启动盘。
选y或M,如果你要使用BIOS加强磁盘服务功能来确定BIOS用哪个磁盘来启动。启动后这个信息会反映在系统文件中。
这个选项是实验性的,而且已经被确认在某些未测试选项下会启动失败。很多磁盘控制器的BIOS供应商都不支持这个特性。
5.31.2. BIOS update support for DELL systems via sysfs
用于DELL机器的BIOS升级支持。
5.31.3. Dell Systems Management Base Driver (DCDBAS)
DELL系统管理器的基本驱动。
6. Power management options (ACPI, APM)
电源管理选项(ACPI、APM)
6.1. Power Management support
电源管理支持
电源管理意味着你电脑上的某一部分在不用的时候可以关闭或者休眠。这领域有两个竞争对手:APM和ACPI。如果你需要两者之一,请把这里选上,再把下面的相关内容选上。
电源管理对于使用电池的笔记本相当重要。如果你有笔记本,请参照几个网站上的说明。
注意,即使你在这选N,在X86构架的机器上,LINUX会发出 hlt 指令如果没有任务,因此会让处理器休眠,达到节电的目的。
6.1.1. Legacy Power Management API (PM_LEGACY)
电源管理继承接口
为pm_register() (电源管理寄存器)和同类寄存器提供支持。
如果不清楚,选Y。
6.1.2. Power Management Debug Support
电源管理调试支持
这个选项提供详细的电源管理调试信息。当你调试和报告电源管理漏洞的时候非常有用,有点像电源管理的“中断”支持。
6.1.3. Driver model /sys/devices/.../power/state files (DEPRECATED)
驱动模式文件 /sys/devices/.../power/state (不赞成使用)
这个驱动模式通过系统文件类型启动,试图来给电源管理设备提供用户空间连通装置。这个特性从来没有能很好地工作过,除非是用来进行测试,否则它处在被移除之列。我们不清楚用通用的方法能否进行各种各样的设备电源管理,目前是专用的总线和驱动来替代相关功能。
6.2. ACPI Support 高级电源配置接口支持
高级电源设置接口(ACPI)支持需要整合了ACPI的平台(固件/硬件),并且这个平台要支持操作系统和电源管理软件的设置。这个选项会给你的内核增加70KB。
LINUX ACPI提供了相当强大的电源接口,甚至可以取代一些传统的设置和电源管理接口,包括PNP BIOS(即插即用BIOS)规范,MPS(多处理器规范),和APM(高级电源管理)规范。如果ACPI和APM同时被选上,先被系统调用的起作用。
6.2.1. AC Adapter AC 交流电源适配器
这个驱动给AC 交流电源适配器提供支持,它指示出系统是否在AC下工作。如果你的系统可以在AC和电池状态下切换,选Y。
6.2.2. Battery 电池
这个驱动通过/proc/acpi/battery 提供电池信息。如果你有使用电池的移动系统,选Y。
6.2.3. Button 按钮
这个驱动通过电源、休眠、锁定按钮来提交事件。后台程序读取/proc/acpi/event 来运行用户要求的事件,比如关机。这对软件控制关机是必要的。
6.2.4. Video (ACPI_VIDEO) 视频
提供ACPI对主板上的集成显示适配器的扩展支持驱动。详见ACPI2.0驱动范例,附录B,它提供了基本支持,比如定义视频的启动设备、返回EDID信息或者设置视频传输等等。
注意这仅仅是文字上的信息而已。它可能(或许不可能)在你的集成显卡设备上运行。
6.2.5. Generic Hotkey (EXPERIMENTAL) 通用热键。
实验中的整合式热键驱动。
如果不清楚,选N。
6.2.6. 05.03.05、<*> Fan 风扇
这个驱动对ACPI风扇设备提供支持,允许用户模式的程序进行风扇的基本控制(开、关、状态显示)
6.2.7. Dock
提供ACPI Docking station支持
Docking station是笔记本的扩展坞,就是用来扩展笔记本电脑功能的底座,通过接口和插槽,它可以连接多种外部设备(驱动器、大屏幕显示器、键盘、打印机、扫 描仪……)。可以弥补轻薄笔记本电脑本身携带附件较少的缺陷,这种设计让用户在办公室里能够享受到台式机一样的便利和舒适,在移动办公时又能发挥笔记本的 便携性。
6.2.8. Processor 处理器
这个驱动以空闲管理者方式给LINUX安装ACPI,使用ACPI C2 和 C3处理器状态来节约电能,如果你的系统支持的话。一些CPU频率调节的驱动需要这个功能。
6.2.8.1. Thermal Zone
温控区域
ACPI温控区域驱动。大多数笔记本和台式机支持ACPI温控区域。强烈要求你选Y,否则你的处理器可能会坏掉。
6.2.9. ASUS/Medion Laptop Extras
华硕笔记本扩展支持
6.2.10. IBM ThinkPad Laptop Extras
IBM笔记本扩展支持
6.2.11. Toshiba Laptop Extras
Toshiba笔记本扩展支持
6.2.12. (0) Disable ACPI for systems before Jan 1st this year 千年虫
6.2.13. Debug Statements
调试语句
ACPI驱动可以自定义报告详细的错误信息。选Y开启这项功能,这将让你的内核增加50KB。
6.2.14. ACPI0004,PNP0A05 and PNP0A06 Container Driver
ACPI0004,PNP0A05 和PNP0A06 容器驱动
这里允许物理上对CPU和内存的插入和移除。这对一些系统,比如NUMA,非常有用,这些系统支持ACPI基本的物理拔插。
如果选择M,这个驱动可以通过命令:"modprobe acpi_container"加入。
6.2.15. Smart Battery System
袖珍电池系统
这个驱动对袖珍电池系统提供支持,依赖于I2C (在选项Device Drivers ---> I2C support) 。袖珍电池非常古老,也非常稀少,对于今天的ACPI支持的电池规范来说。
6.3. APM (Advanced Power Management) BIOS Support
高级电源管理BIOS支持。(APM)
ACPI和APM就好比XP和LINUX。我用了ACPI,这个就只编成模块放着,万一要用到再加模块。不清楚的可以先在机器上用ps -A|less看看有没有这个相关的进程。我的只有ACPID。
没有认真研究过下面的选项,也不列出来糊弄人了。要是用到APM的可以自己研究。
6.4. CPU Frequency scaling
6.4.1. CPU Frequency scaling
CPU变频控制
CPU变频控制允许你在运行中改变CPU的时钟速度。这是对于节约电能来说是一个不错的主意,因为CPU频率越低,它消耗的电能越少。
注意这个驱动不会自动改变CPU的时钟速度,你要么允许动态的频率调节器(看下面),要么使用用户工具。
如果不清楚,选N。
6.4.2. Enable CPUfreq debugging
是否允许调试CPU改变主频的功能,如果要调试,还需要在启动时加上参数。cpufreq.debug=<value> 1:变频技术的内核调试 2:变频技术的驱动调试 3:变频技术的调节器调试
6.4.3. CPU frequency translation statistics CPU频率统计功能
6.4.4. CPU frequency translation statistics details CPU频率统计功能(详细)
6.4.5. Default CPUFreq governor (performance) 默认的主频调节,圆括号内的是你选择的结果,这里表示以性能为主。
6.4.5.1. performance 性能优先
6.4.5.2. userspace 用户定义,可以设定频率。
6.4.6. 'performance' governor性能调节器
6.4.7. 'powersave' governor 节约电能调节器。
6.4.8. 'userspace' governor for userspace frequency scaling 用户自定义调节器。
6.4.9. 'ondemand' cpufreq policy governor 自动调节主频。
6.4.10. 'conservative' cpufreq governor 传统方式调节
6.4.11. CPUFreq processor drivers 变频驱动模块
6.4.12. ACPI Processor P-States driver 报告处理器的状态。
6.4.13. AMD Mobile K6-2/K6-3 PowerNow! AMD移动版K6处理器的变频驱动。
6.4.14. AMD Mobile Athlon/Duron PowerNow! AMD移动版毒龙、雷乌的变频驱动。
6.4.15. Cyrix MediaGX/NatSemi Geode Suspend Modulation Cyrix处理器的变频驱动。
6.4.16. Intel Enhanced SpeedStep Intel的移动变频技术支持。
6.4.16.1. Use ACPI tables to decode valid frequency/voltage pairs 使用BIOS中的主频/电压参数。
6.4.16.2. Built-in tables for Banias CPUs 迅驰一代的主频/电压参数。
笔记本 : 什么是迅驰技术
2003年3月英特尔正式发布了迅驰移动计算技术,英特尔的迅驰移动计算技术并非以往的处理器、芯片组等 单一产品形式,其代表了一整套移动计算解决方案,迅驰的构成分为三个部分:奔腾M处理器、855/915系列芯片组和英特尔PRO无线网上,三项缺一不可 共同组成了迅驰移动计算技术。
奔腾M首次改版叫Dothan
在两年多时间里,迅驰技术经历了一次改版和一次换代。初期迅驰中奔腾M处理器的核心代号为Bannis,采用130纳米工艺,1MB高速二级缓存, 400MHz前端总线。迅驰首次改版是在2004年5月,采用90纳米工艺Dothan核心的奔腾M处理器出现,其二级缓存容量提供到2MB,前端总线仍 为400MHz,它也就是我们常说的Dothan迅驰。首次改版后,Dothan核心的奔腾M处理器迅速占领市场,Bannis核心产品逐渐退出主流。虽 然市场中流行着将Dothan核心称之为迅驰二代,但英特尔官方并没有给出明确的定义,仍然叫做迅驰。也就是在Dothan奔腾M推出的同时,英特尔更改 了以主频定义处理器编号的惯例,取而代之的是一系列数字,例如:奔腾M 715/725等,它们分别对应1.5GHz和1.6GHz主频。首次改版中,原802.11b无线网卡也改为了支持802.11b/g规范,网络传输从 11Mbps提供至14Mbps.
新一代迅驰Sonoma
迅驰的换代是2005年1月19日,英特尔正式发布基于Sonoma平台的新一代迅驰移动计算技术,其构成组件中,奔腾M处理器升级为Dothan核心、 90纳米工艺、533MHz前端总线和2MB高速二级缓存,处理器编号由奔腾M 730—770,主频由1.60GHz起,最高2.13GHz。915GM/PM芯片组让迅驰进入了PCI-E时代,其中915GM整合了英特尔 GMA900图形引擎,让非独立显卡笔记本在多媒体性能上有了较大提高。915PM/GM还支持单通道DDR333或双通道DDR2 400/533MHz内存,性能提供同时也降低了部分功耗。目前Sonoma平台的新一代迅驰渐渐成为市场主流。
6.4.17. Intel Speedstep on ICH-M chipsets (ioport interface) Intel ICH-M移动南桥芯片组的支持
6.4.18. Intel Pentium 4 clock modulation P4处理器的时钟模块支持。
6.4.19. Transmeta LongRun Transmeta处理器的支持。
6.4.20. VIA Cyrix III Longhaul VIA Cyrix处理器的支持。
6.4.21. shared options
6.4.22. /proc/acpi/processor/../performance interface (deprecated) 从/proc/acpi/processor/../performance获得CPU的变频信息。
6.4.23. Relaxed speedstep capability checks
不全面检测Intel Speedstep,有的系统虽然支持Speedstep技术,却无法通过全面的检测。
7. Bus options (PCI, PCMCIA, EISA, MCA, ISA) 总线选项
7.1. PCI support
PCI总线支持(一定要进内核,不能编成模块)
找找你的主板资料,看看你用的是不是PCI主板。PCI是总线系统的名称,是CPU用来与其他设备进行通信的通道。其他总线系统有ISA、EISA、MCA和VESA。如果你有PCI,选Y。否则,选N。
7.1.1. PCI access mode (Any)
PCI访问模式
在PCI系统中,BIOS可以检测PCI设备和确定它们的设置。但是,一些老的PCI主板有BIOS问题,如果这里选上会让系统当机。同时,一些嵌入式的基于PCI系统没有任何BIOS。LINUX可以在不使用BIOS的情况下尝试直接检测PCI硬件。
选上这个以后,你可以设定LINUX如果检测PCI设备。如果你选择"BIOS",BIOS会用到。你选 "Direct", BIOS不会用到。如果你选"MMConfig",PCI加速的 MMCONFIG 会用到。如果你选"Any" ,内核先用 MMCONFIG ,然后 "Direct",最后才是"BIOS"如果前面的都无法工作。如果不清楚,选"Any"。
7.1.1.1. BIOS
7.1.1.2. MMConfig
7.1.1.3. Direct
7.1.1.4. Any
7.1.2. PCI Express support
PCI Express 支持
这里自动支持 PCI Express 端口总线。用户可以选择 Native Hot-Plug support, Advanced Error Reporting support,
Power Management Event support,Virtual Channel support 4个选项来支持 PCI Express 端口(启动或者切换)。
我的板是PCI Express。大家可以用lshw|less来看看自己的PCI是什么类型。
7.1.2.1. Root Port Advanced Error Reporting support
高级启动错误报告支持。
7.1.3. Message Signaled Interrupts (MSI and MSI-X)
信息信号中断
这允许设备驱动开启MSI。MSI允许一个设备用非装订内存写入方式在自己的PCI总线中产生一个中断,而不是常规的IRQ针脚中断。
在内核启动时,用 'pci=nomsi'选项可以禁用PCI MSI中断。这将在整个系统禁用MSI。
如果不知道怎么做,选N。
7.1.4. Interrupts on hypertransport devices
高速传输设备中断
允许高速传输设备使用中断。
如果不清楚,选Y。
7.2. ISA support ISA总线
看看你主板上是否有ISA插槽。ISA是比较老的总线,现已基本被PCI取代。如果你没有老式的ISA设备,可以不选这项。不过我估计你的主板上应该会有 ISA总路。因为我的INTEL 945板都还有一路,接老式打印机用的。选上备用。如果你认为你永远都不会用到那一路的话,可以不选。
7.2.1. EISA support
扩展工业标准架构总线(EISA)是为IBM 微通道开发的项目。EISA总线可以为IBM 微通道提供一些特性,如果你在使用很老的卡。目前EISA很少用到,已经被PCI取代。选Y,如果你为ESIA系统编译内核。否则,选N。
7.2.2. MCA support
IBM PS/2上的总线,现已淘汰,建议关闭。微通道总线IBM的台式机和笔记本上可能会有这种总线,包括它的p系列、e系列、z系列机器上都用到了这种总线。
7.2.3. NatSemi SCx200 support
松下的一种半导体处理器的驱动。
7.3. PCCARD (PCMCIA/CardBus) support
一般只有笔记本电脑上才会有PCMCIA插槽,如果你是台式机的话,可以不选这一项,然后跳过这一部份。我的IBM机器是办公用的,经常会临时接一些乱七八糟的设备。我自己都不知道哪些设备需要什么模块。所以这里我都搞成模块,免得以后接上用不了,又得切换到XP下。
7.3.1. PCCard (PCMCIA/CardBus) support
PCI Hotplug Support
PCI热插拨支持
选Y,如果你的主板有PCI热拔插控制器,这允许你热拔插PCI卡。
选M,将编译为模块,叫做pci_hotplug。
如果不清楚,选N。
一般来讲只有服务器上会有热插拔的设备,如果你使用的是台式机,你可以不选择此项并跳过这一部份。
8. Executable file formats
可执行文件格式。
8.1. Kernel support for ELF binaries
ELF支持
ELF(可执行和可链接格式)是一种用来连接不同架构和操作系统的可执行文件、库函数格式。选Y,你的内核可以运行ELF二进制文件,这也使你的内核增大13KB。
ELF现在基本代替了传统的 a.out 格式(QMAGIC and ZMAGIC用到),因为它是可移植的(可移植不代表它可以直接运行在不同构架和操作系统上),而且建立相关运行库文件非常容易。很多新的可执行文件都用ELF格式发布,你在这里当然要选Y。
8.2. Kernel support for a.out and ECOFF binaries
对 a.out 和 ECOFF 二进制文件的支持
A.out (Assembler.OUTput)是一种二进制文件格式,它用在最早的UNIX版本中。LINUX在QMAGIC 和 ZMAGIC两个镜像中使用A.out,直到它最近被ELF取代。ELF的转变开始于1995年。这个选项主要是给研究历史的人提供感兴趣的信息,或者你 要是有那个年代的文件,你需要这个选项。
大多数人在这可以选N。如果你认为你有可能会用到这个格式,选M编译成模块。模块名为binfmt_aout。如果你系统的关键部件(比如/sbin/init 或者 /lib/ld.so)是 a.out 格式的的,你要在这选Y。
8.3. Kernel support for MISC binaries
内核对 MISC 二进制文件的支持
如果你在这选Y,它将可以将 wrapper-driven 二进制格式嵌入内核。当你使用一些程序的解释器时,比如 Java, Python, .NET或者Emacs-Lisp,或者当你经常通过DOS 仿真器运行DOS程序时,它将非常有用。当你在这个选项选Y,你可以简单地通过在shell打相应命令运行以上的程序,LINUX可以自动匹配正确的格 式。
要使用 binfmt_misc 你可能需要挂载它:
mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
你可以选M作为模块,以后再加载,模块名为 binfmt_misc。如果你不知道怎么办,选Y。
3.
的选项。如果你选了Y,你将会得到更多的阿尔法版本的驱动和代码的配置菜单。
本文作者将不定期的根据最新的内核进行添加(同时仍然保留老版本内核的选项),欢迎常来光临并帮助指出其中的错误.
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支持.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
适用于大多数环境,但不太合适数据库应用
Deadline I/O scheduler
通常与Anticipatory相当,但更简洁小巧,更适合于数据库应用
CFQ I/O scheduler
为所有进程分配等量的带宽,适合于桌面多任务及多媒体应用
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)
适合运行实时程序的主动