Linux kernel 2.6 配置指南 作者:王旭东 QQ:154526147 E-mail:wxd850223@163.com 说明:本配置文档全部由本人查询书籍、网上摘抄和自己经验积累得到,如果出现 和原作者内容相同,请尊重原作者,本文档只限于厦门大学 Linux 爱好者共享,如 果出现版权问题,请通知作者,马上更正!本文档只适合 Linux 2.6 内核使用,对 Linux 2.4 内核仅作参考。对 Linux 2.6.5 以上内核,完全依照本文档配置不会 出现问题,对 Linux 2.6.5 以下内核可能会出现 U 盘不能挂载和声卡不能发声问题 对于这种问题,本作者概不负责,如果您在使用本文档过程中出现这种问题,并 解决了问题,请通知作者,本作者立即修改本文档,并将您作为本文档作者之一。 本文档已经过作者多次试用,修改了 BUG,可以放心使用!谢谢您的使用和支持! 注: 内核配置选项中关于 Frame Buffer 的选项不能编译成模块,否则无法使用 Frame Buffer。特此说明!本文档中关于硬件选项请遵照自己电脑的配置选择! 一、内核简介 内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳 定性。 Linu x 的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux 下找到,大部分应用软 件也都是遵循 GPL 而设计的,你都可以获取相应的源程序代码。全世界任何一个软件工程师都可以将自己认为优秀的代码 加入到其中,由此引发的一个明显的好处就是 Linux 修补漏洞的快速以及对最新软件技术的利用。而 Linux 的内核则是这 些特点的最直接的代表。 想象一下,拥有了内核的源程序对你来说意味着什么?首先,我们可以了解系统是如何工作的。通过通读源代码,我们 就可以了解系统的工作原理,这在 Windows 下简直是天方夜谭。其次,我们可以针对自己的情况,量体裁衣,定制适合自 己的系统,这样就需要重新编译内核。在 Windows 下是什么情况呢?相信很多人都被越来越庞大的 Windows 整得莫名其 妙过。再次,我们可以对内核进行修改,以符合自己的需要。这意味着什么?没错,相当于自己开发了一个操作系统,但是 大部分的工作已经做好了,你所要做的就是要增加并实现自己需要的功能。在 Windows 下,除非你是微软的核心技术人员, 否则就不用痴心妄想了。 二、内核版本号 由于 Linux 的源程序是完全公开的,任何人只要遵循 GPL,就可以对内核加以修改并发布给他人使用。Linux 的开发 采用的是集市模型(bazaar,与 cathedral--教堂模型--对应),为了确保这些无序的开发过程能够有序地进行,Linux 采用了双树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(development tree)。一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所做的改进也可以应用于稳定树,那么在开发 树中经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。开发数就 体现在源程序的版本号中;源程序版本号的形式为 x.y.z:对于稳定树来说,y 是偶数;对于开发树来说,y 比相应的稳定 树大一(因此,是奇数)。到目前为止,稳定树的最高版本是 2.6.5;开发树的最新版本是 2.6.12。下载内核版本请访问 http://www.kernel.org/ 三、为什么重新编译内核 Linu x 作为一个自由软件,在广大爱好者的支持下,内核版本不细 隆P碌哪诤诵薅┝司赡诤说腷 ug,并增加了许多 新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。 通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中 发现的许多漏洞等,经常性地选择升级更新的系统内核是 Linux 使用者的必要操作内容。 为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑: l 自己定制编译的内核运行更快(具有更少的代码) l 系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中) l 不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞 l 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些 四、内核编译模式 要增加对某部分功能的支持,比如网络之类,可以把相应部分编译到内核中(build-in),也可以把该部分编译成模 块(module),动态调用。如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度 快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在, 这就是 Windows 惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。如果编译成模块,就会生成对应的.o 文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块。 五、新版本内核的获取和更新 Linu x 内核版本发布的官方网站是 http://www.kernel.org 新版本的内核的发布有两种形式,一种是 full/ Source 版本,另外一种是 patch 文件,即补丁。完整的内核版本比较大,一般是 tar.gz 或者是.bz2 文件,二者分别是使用 gzip 或者 bzip2 进行压缩的文件,使用时需要解压缩。patch 文件则比较小,一般只有几十 K 到几百 K,但是 patch 文件是针对 于特定的版本的,你需要找到自己对应的版本才能使用。 编译内核需要 root 权限,以下操作都假定你是 root 用户。请把你需要升级的内核拷贝到/usr/src/下(下文中以 2.6.5 的内核的 linux-2.6.5.tar.gz 为例),命令为 #cp linux-2.6.5.tar.gz /usr/src 让我们先来查看一下当前/usr/src 的内容,注意到有一个 linux-2.4 的符号链接,指向一个 linux-2.4.7-10(以 REDHAT7.2 为例)的目录。这就是你所装 linux 的 kernel 源代码,删除这个链接。 现在解压我们下载的源程序文件。如果所下载的是.tar.gz(.tgz)文件,请使用下面的命令: #tar -zxvf linux-2.6.5.tar.gz.tar.gz 如果你所下载的是.bz2 文件,例如 linux-2.4.0test8.tar.bz2,请使用下面的命令 #bzip2 -d linux-2.6.5.tar.bz2 #tar -xvf linux-2.6.5.tar 文件将解压到/usr/src/linux 目录中,我们把它稍作修改: #mv linux linux-2.6.5 #ln -s linux-2.6.5 linux 如果下载的是 patch 文件,就可以进行 patch 操作(下面假设 patch-2.6.5 已经位于/usr/src 目录下了,否则你需 要先把该文件拷贝到/usr/src 下): #patch -p0 < patch-2.6.5 六、内核编译 通常要运行的第一个命令是: #cd /usr/src/linux #make mrproper 该命令确保源代码目录下没有不正确的.o 文件以及文件的互相依赖。由于我们使用刚下载的完整的源程序包进行编译, 所以本步可以省略。而如果你多次使用了这些源程序编译内核,那么最好要先运行一下这个命令。 确保/usr/include/目录下的 asm、linux 和 scsi 等链接是指向要升级的内核源代码的。它们分别链向源代码目录下的 真正的、该计算机体系结构(对于 PC 机来说,使用的体系结构是 i386)所需要的真正的 include 子目录。如:asm 指向/ usr/src/linux/include/asm-i386 等。若没有这些链接,就需要手工创建,按照下面的步骤进行: # cd /usr/include/ # rm -r asm linux scsi # ln -s /usr/src/linux/include/asm-i386 asm # ln -s /usr/src/linux/include/linux linux # ln -s /usr/src/linux/include/scsi scsi 这是配置非常重要的一部分。删除掉/usr/include 下的 asm、linux 和 scsi 链接后,再创建新的链接指向新内核源代码 目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。现在你应该明白为什么我 们上面又在/usr/src 下"多余"地创建了个名为 linux 的链接了吧? 接下来的内核配置过程比较烦琐,但是配置的适当与否与日后 Linux 的运行直接相关,有必要了解一下一些主要的且 经常用到的选项的设置。 配置内核可以根据需要与爱好使用下面命令中的一个: #make config(基于文本的最为传统的配置界面,不推荐使用) #make menuconfig(基于文本选单的配置界面,字符终端下推荐使用) #make xconfig(基于图形窗口模式的配置界面,Xwindow 下推荐使用) #make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦) 这三个命令中,make xconfig 的界面最为友好,如果你可以使用 Xwindow,那么就推荐你使用这个命令,界面如 下: 如果你不能使用 Xwindow,那么就使用 make menuconfig 好了。界面虽然比上面一个差点,总比 make config 的 要好多了,下图为 make menuconfig 的界面: 选择相应的配置时,有三种选择,它们分别代表的含义如下: Y--将该功能编译进内核 N--不将该功能编译进内核 M--将该功能编译成可以在需要时动态插入到内核中的模块 如果使用的是 make xconfig,使用鼠标就可以选择对应的选项。如果使用的是 make menuconfig,则需要使用空 格键进行选取。你会发现在每一个选项前都有个括号, 但有的是中括号有的是尖括号,还有一种圆括号。 用空格键选择时可 以发现,中括号里要么是空,要么是"*",而尖括号里可以是空,"*"和"M"这表示前者对应的项要么不要,要么编译到内 核里;后者则多一样选择,可以编译成模块。而圆括号的内容是要你在所提供的几个选项中选择一项。 在编译内核的过程中,最烦杂的事情就是这步配置工作了,很多新手都不清楚到底该如何选取这些选项。实际上在配置 时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且 不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境 改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。 配置完后,存盘退出,当然你也可以把现在的配置文件保存起来,这样下次再配置的时候就省力气了。 接下来是编译,输入以下命令。 #make dep #make clean #make bzImage 或 make zImage #make modules #make modules_install #depmod -a 第一个命令 make dep 实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编 译而那些不需要;第二命令 make clean 完成删除前面步骤留下的文件,以避免出现一些错误;make zImage 和 make bzImage 则实现完全编译内核,二者生成的内核都是使用 gzip 压缩的,只要使用一个就够了,它们的区别在于使用 make bzImage 可以生成大一点的内核。建议大家使用 make bzImage 命令。 后面三个命令只有在你进行配置的过程中,在回答 Enable loadable module support (CONFIG_MODULES)时 选了"Yes"才是必要的,make modules 和 make modules_install 分别生成相应的模块和把模块拷贝到需要的目录中。 严格说来,depmod -a 命令和编译过程并没有关系,它是生成模块间的依赖关系,这样你启动新内核之后,使用 modprobe 命令加载模块时就能正确地定位模块。 更新 经过以上的步骤,我们终于得到了新版本的内核。为了能够使用新版本的内核,我们还需要做一些改动: #cp /usr/src/linux/System.map /boot/System.map-2.6.5 #cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.6.5 以上这两个文件是我们刚才编译时新生成的。下面修改/boot 下的两个链接 System.map 和 vmlinuz,使其指向新内 核的文件: #cd /boot;rm -f System.map vmlinuz #ln -s vmlinuz-2.6.5 vmlinuz #ln -s System.map-2.6.5 System.map 七、修改启动管理器 如果用 LILO,修改/etc/lilo.conf,添加以下项: image=/boot/vmlinuz-2.6.5 label=linux240 read-only root=/dev/hda2 其中 root=/dev/hda2 一行要根据需要自行加以修改。 运行: #/sbin/lilo -v 确认对/etc/lilo.conf 的编辑无误,现在重新启动系统: #shutdown -r now 如果是用 Grub 启动管理器,则添加如下几项即可。 title Red Hat Linux (2.6.5) root (hd0,0) kernel /vmlinuz-2.6.5 ro root=/dev/hda2 或者也可以这么写 title Gentoo Linux 2005.0 (2.6.5) kernel (hd0,0)/kernel-2.6.5 ro root=/dev/hda2 Grub 不需再次调用命令,自动生效。 重启以后就可以用新内核了。 从这里开始进入内核完全配置选项 1 Code maturity level options ---> 应该选择 [*] Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.你应该选择它,因为有许多设备可 能必需选择这个选项才能进行配置,实际上它是安全的。 [*] Select only drivers expected to compile cleanly 应该选择 选择这个选项你将不会看到一些已知的存在问题的驱动程序选项,默认的情况下也是选择的。如果你有设备没有找到驱动选 项,你可以将这一项去掉,或许就可以找到相关驱动了,不过它可能是有 BUG 的。 [*] Select only drivers that don't need compile-time external firmware 应 该选择 如果你不需要在内核对一些外部设备的固件作 map 支持就选择它,这也是默认选项。 2 General setup ---> [*] Support for paging of anonymous memory (swap) 应该选择 这个选项将使你的内核支持虚拟内存,也就是让你的计算机好象拥有比实际内存更多 多的内存空间用来执行很大的程序。 默认是选择的。 [*] System V IPC 应该选择 为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选 Y 的情况下才能运行,所 以不用考虑,这里一定要选。 [*] POSIX Message Queues 应该选择 [*] BSD Process Accounting 应该选择 这里选择 Y 将会让内核为用户层的进程建立一个帐目(进程通过一个特殊的系统调用来通知内核),当程序退出时内核会将 进程的相关信息记录到帐目文件中,主要包括进程的创建时间、 创建者,内存占用等信息。如果你需要就 Y 吧:) [*] Sysctl support 应该选择 这将提供一个接口让你可以动态的更改一些核心参数与变量,而不需要重新启动系统。打开这个选项将会增加内核的体积至 少 8KB。如果你的内核仅用制作安装与恢复系统系统盘那么可以不选,以减少对内存的占用。 [*] Auditing support 审核的,一般不用选择了 [*] Enable system-call auditing support 不用选择了 (17) Kernel log buffer size (16 => 64KB, 17 => 128KB) 不用选择了 [*] Support for hot-pluggable devices 支持热插拔的,最好选择 [*] Kernel Userspace Events 用户空间时间,可以不用选择 [*] Kernel .config support 不用选择 这会把内核的配置信息与相关的文档说明编译进内核中,以后可以使用一些工具来提取它用来重新构建内核,一般不用选 它。 [*] Enable access to .config through /proc/config.gz 不用选择 这个和上面的那个一样把说明文档放在/proc 中,所以可以不用选它 [*] Configure standard kernel features (for small systems) ---> 为小系统设计的,不用选择了吧 --- Configure standard kernel features (for small systems) 不用选择 [*] Load all symbols for debugging/kksymoops (NEW) 不用选择 [*] Enable futex support (NEW) 不用选择 Futex(fast user space mutex) 不用选择 [*] Enable eventpoll support (NEW) 不用选择 [*] No-op I/O scheduler (NEW) 不用选择 [*] Anticipatory I/O scheduler (NEW) 不用选择 [*] Deadline I/O scheduler (NEW) 不用选择 [*] CFQ I/O scheduler (NEW) 不用选择 [*] Optimize for size 内核尺寸最优化,一般不用选择吧(如果是为小系统设计的,就不用选择了) 3 Loadable module support ---> [*] Enable loadable module support 应该选择 这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从 而为内核增加一些特性或是对某种硬件进行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运 行时可以使用 modprobe 命令来加载它到内核中去(在不需要时还可以移除它)。 一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一 些在系统启动时就要用到的驱动比如说文件系统,系统总线的支持就不要编为模块了,否在无法启动系统。(当然还有一些 变通的方法,我以后会提到) [*] Module unloading 应该选择 这个选项可以让你卸载不再使用的模块,如果不选的话你将不能卸载任何模块(有些模块一旦加载就不能卸载,不管是否选 择了这个选项)。不选择这个选项会让你的内核体积减小一点 [*] Forced module unloading 这个有点危险,可能导致内核不能启动,不要选择了 [*] Module versioning support (EXPERIMENTAL) 不用选择 这个选项将让你可以使用其它版本内核中编译的模块,不过并不可靠,所以一般我们不选择它 [*] Source checksum for all modules 可以选择 [*] Automatic kernel module loading 应该选择 一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用 modprobe 命令来加 载它,内核才能使用。不过,如果你选择了这个选项,在内核需要一些模块时它可以自动调用 modprobe 命令来加载需要 的模块,这是个很棒的特性,当然要选 Y 喽:) 4 Processor type and features ---> Subarchitecture Type (PC-compatible) ---> 这是一个比较新的特性,主要的目的是使 Linux 可以支持多种 PC 标准,一般我们使用的 PC 机是遵循所谓 IBM 兼容结构 (pc/at)。这个选项可以让你选择一些其它架构。我们一般选择 PC-compatible 就可以了。 (X) PC-compatible ( ) AMD Elan ( ) Voyager (NCR) ( ) NUMAQ (IBM/Sequent) ( ) Summit/EXA (IBM x440) ( ) Support for other sub-arch SMP systems with more than 8 CPUs ( ) SGI 320/540 (Visual Workstation) ( ) Generic architecture (Summit, bigsmp, default) ( ) Support for Unisys ES7000 IA32 series Processor family (Pentium-Pro) ---> 这个就不用说了吧,你是什么 cpu 就选什么了 ( ) 386 ( ) 486 ( ) 586/K5/5x86/6x86/6x86MX ( ) Pentium-Classic ( ) Pentium-MMX (X) Pentium-Pro ( ) Pentium-II/Celeron(pre-Coppermine) ( ) Pentium-III/Celeron(Coppermine)/Pentium-III Xeon ( ) Pentium M ( ) Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon ( ) K6/K6-II/K6-III ( ) Athlon/Duron/K7 ( ) Opteron/Athlon64/Hammer/K8 ( ) Crusoe ( ) Winchip-C6 ( ) Winchip-2 ( ) Winchip-2A/Winchip-3 ( ) CyrixIII/VIA-C3 ( ) VIA C3-2 (Nehemiah) [*] Generic x86 support 不用选择 这个选项提供了对 X86 系列 CPU 最大的兼容性,用来支持一些很少见的 x86 体系的 CPU,它可能会降低一些系统性能。 所以如果你的 CPU 能够在上面的列表中找到就不要选这个吧。 [*] 4 GB kernel-space and 4 GB user-space virtual memory support 应该选择 [*] HPET Timer Support 应该选择 这也是一个新的特性,HPET 是 intel 制定的新的用以代替传统的 8254(PIT)中断定时器与 RTC 的定时器,全称叫作高 精度事件定时器。如果你有一台较新的机器就选它吧,一般它是一个安全的选项,即使你的硬件不支持 HPET 也不会造成 问题,因为它会自动用 8254 替换。 [*] Symmetric multi-processing support 不用选择 这个也不用多讲了吧,如果你使用多处理器系统就选吧,如果你和我一样使用一个单 CPU 系统还是把它请出去吧。 (8) Maximum number of CPUs (2-255) (NEW) 不用选择 这里用来配置让 Linux 最多支持几路 CPU,根据你的需要选择。 [*] Preemptible Kernel 应该选择 这可是个新特性,几乎所有介绍 2.6 的文章都会提到,这就是可抢先式内核。也就是说被一些优先级很高的程序 可以先与一些低优先级的程序执行,即使这些程序是在核心态下执行(这实际上仍然不是真正的抢先式内核)。从而减少内核 潜伏期,提高系统的响应。当然在一些特殊的点的内核是不可抢先的,比如内核中的调度程序自身在执行时就是不可被抢先 的。这个特性可以提高桌面系统、实时系统的性能,所以还是选上吧。 [*] Machine Check Exception 应该选择 如果你的系统出现一些问题比如 CPU 过热,内核将会在屏幕上打印相关信息来提醒你。这个功能是需要硬件支持的。你可 以查看/proc/cpuinfo 看看是否有 mce 标志,有的话就选吧。如果你十分十分的不幸,选了它之后出现问题,可以在启动 时加 nomce 参数来关闭它。 Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 应该选择 打开这个选项将会检查你机器上可能存在的问题,如果有一个非致命错误出现将会自动的修复并且记录,这可以帮助 你查出程序出现问题的原因,是一个不错的选项,当然它只能用在 AMD Athlon/Duron / Intel Pentium 4 这类 CPU 上。如果你正好在用它们中的一个你就选吧。 [*] check for P4 thermal throttling interrupt. 应该选择 如果打开这个选项,在 P4 的 CPU 温度过高(也就是 P4 的温控装置起作用)时会在屏幕上显示出相关的信息,根据你的情 况选择吧。 Toshiba Laptop support 这个选项是针对 Toshiba 笔记本的,可以用来访问 Toshiba 的系统管理模式,也就是可以直接设置 BIOS。不过要注意它 只在 Toshiba 自己的 BIOS 中起作用。假如你有一台 Toshiba 笔记本,可惜它的 BIOS 是 Phoenix 的,那这个选项仍然 无用 Dell laptop support 这个同上面的选项基本相同,自己看着办吧 /dev/cpu/microcode - Intel IA32 CPU microcode support 这个选项将让你可以更新 Intel IA32 系列处理器的微代码,当然你还必须在文件系统选项中选择 devfs 才能正常的使用它。 如果你把它译为模块你还需要在 modprobe.conf 中加上这一行 alias char-major-10-184 microcode 内核本身并不带有微代码的二进制文件,你可以到这个网址去得到新的信息 /dev/cpu/*/msr - Model-specific register support 0 这个选项桌面用户一般用不到,它主要用在 Intel 的嵌入式 CPU 中的,这个寄存器的作用也依赖与不同的 CPU 类型而 有所不同,一般可以用来改变一些 CPU 原有物理结构的用途,但不同的 CPU 用途差别也很大。 /dev/cpu/*/cpuid - CPU information support 这会在/dev/cpu 中建立一系列的设备文件,用以让过程去访问指定的 CPU。一般不用选。 Firmware Drivers ---> BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL) 这将可以打开实模式下 BIOS 中的增强磁盘设备服务,以决定从哪个磁盘上启动。这一般是安全的,不过大多数 BIOS 提 供商都没有实现这个特性。 EFI Variable Support via sysfs 这个不用选择 High Memory Support (4GB) ---> ( ) off (X) 4GB ( ) 64GB 如果你有大容量的内存(超过 4G)你要选它,以使内核可以使用这部分内存。偶是没这命啦这部分永远为 OFF,如果你有你 就 ON 吧。 [*] Allocate 3rd-level pagetables from highmem 为大内存设计的,可以不用选择 [*] Math emulation 在你的 CPU 上如果没有数学协处理器的话,打开这个选项可以让内核模拟一个,以提升浮点计算能力,不过慢的可以。如 果你使用的不是古董 CPU 的话(486SX 以前的)这一项你永远都不需要。 [*] MTRR (Memory Type Range Register) support 在 Intel p6 家族的处理器中(Ppro、 PII 和更新的)有一个内存类型范围寄存器,可用来控制处理器访问的内存范围。打开 它一般可以提升显卡的显示性能,所以我们当然要在这说 Y [*] Boot from EFI support (EXPERIMENTAL) EFI 规范基本上是一个让 PC 可以在开机前(preboot)进行扫毒及诊断的执行环境。英特尔已经利用 EFI 建立一个可以取 代 BIOS 的开机前软件框架。这个框架名为“EFI 平台创新开发框架”,其工程代码为 Tiano,这个框架让电脑厂商可以 撰写开机前软件的模组,这种模组很像 Windows 的驱动程序。 [*] Enable kernel irq balancing (NEW) 红外的,不用选择 [*] Use register arguments (EXPERIMENTAL) 这个可以不用选择了 5 Power management options (ACPI, APM) ---> [*] Power Management support 如果你想让你的 Linux 支持高级电源管理(也就是平常我们说的软关机、系统休眠等)需要选择它 [*] Software Suspend (EXPERIMENTAL) 选择这个选项你可以挂起你的计算机(有点象 XP 中的休眠),打开这项功能后,你可以使用 swsusp 或者 shutdown -z 来 挂起你的计算机。这样系统会将你当前正在进行的工作(也就是当前内存中的内容)作成一个镜象保存到你的交换分区中,在 你下一次启动时使用启动参数 “resume=/dev/你的交换分区”,内核就会将上一次的工作内核从镜象文件中恢复到内 存,这可以大大提高系统的启动速度。当你不想恢复上次的工作时向内核传递参数“noresume"。不过系统启动后你的交换 分区将不可以使用,你可以使用 mkswap 命令来重新格式化你的交换分区。这个功能不需要高级电源管理的支持。很不错 的功能,我一直有用,大家也来试试吧:) [*] Suspend-to-Disk Support 这个选项与上面的功能基本相同,不过更灵活一些,可以通过下面的子选项来指定一个专用的交换分区来保存内存镜象。 () Default resume partition (NEW) 与上面的选项配合,来指定保存镜象的分区 如果上面那个有开启就要选择用來做 suspend to disk 用的 partition ACPI (Advanced Configuration and Power Interface) Support ---> 不用选择 从这里进入 ACPI 电源管理的配置界面,要注意 ACPI 与 APM 不能同时使用,如果你同时配置了这两者,那么在系统启 动时如果发现一个可工作的 ACPI 设备那么 APM 将被关闭,ACPI 会被加载: [*] ACPI Support 这个选项应该不用我多说了,要想让你的系统使用 ACPI 来管理你的电源就要选上它,另外要想让它起作用,你还要在系 统中安装 acpid 守护程序。 [*] Sleep States (EXPERIMENTAL) 选择这个选项可以使你的系统具有挂起的功能,也就是说你可以暂时中断你的工作,让你的系统处与一种低电能消耗的状 态(sleep state),你此时的系统状态会保存在内存或者磁盘上(取决于挂起的深度),当你需要时再恢复到正常的工作状态。 但由于各种系统之间的差别,目前这项功能并不完善。只有很少的设备可以完美的支持这个特性,所以不建议一般用户使用 AC Adapter 这是用来支持移动系统中的交流适配器的,以指示当前系统是不是在使用交流电,对于台式机不需要这个选项。 Battery 这个选项用于通过/proc/acpi/battery 来向用户提供移动系统中的电池状态信息。同上面那个选项一样对台式机没有作用 Button 这个选项用于注册基于电源按钮的事件,比如 power, sleep 等,当你按下按钮时事件将发生,一个守护程序将读取/ proc/acpi/event,并执行用户在这些事件上定义的动作比如让系统关机。 <*> Fan 这个选项提供对系统风扇的控制支持,可以通过用户层的程序来对系统风扇进行控制(比如打开,关闭,读取当前风扇的运 行状态等,不过只有极少数的硬件支持它)。 <*> Processor 打开这个选项将让你的系统具有处理 IDIE 状态的能力,也就是说可以让你的处理器在空闲时节省电能。个人认为这个选项 是一定要选的。 <*> Thermal Zone 当你的系统温度过高时,ACPI 可以利用这个选项来控制你的系统,及时调整系统的工作状态以保护你的 CPU,非常棒的 一个特性一定要选呀,要不然也就不用使用 ACPI 了。(当然这需要硬件的支持) ASUS/Medion Laptop Extras 这主要是为 ASUS 生产的笔记本电脑准备的,以提供对这些系统上那些额外的按钮们的支持,用户可以通过它们来打开或 者关闭 LCD 的背光,调整亮度、定制 LED 的闪烁指示等功能。用户可以通过/proc/acpi/asus 来改变这些设置。 Toshiba Laptop Extras 这个选项是对 Toshiba 笔记本提供特别支持的,它的作用同上面的选项基本相同,如果你有一台这样的本本的话就选它吧 [*] Debug Statements 如果选择它当 ACPI 出现错误时会打印出详细的信息,这将会增加内核的体积大约 50k,如果没有必要还是不要选它吧。 [*] Power Management Timer Support APM (Advanced Power Management) BIOS Support ---> 可以选择 高级电源管理 BIOS 支持。这通常是用在笔记本电脑上的东西,如果您有 APM 的 BIOS,支持省电的设备的(有电池的那 种),那么您可以选上这项,一般人这一项是选 n,以避免一些可能会发生的问题。后有 8 个选项。 <*> APM (Advanced Power Management) BIOS support [*] Ignore USER SUSPEND 忽略用户延迟 可以选择 [*] Enable PM at boot time 在开机的时候允许 PM 这个不用选择 [*] Make CPU Idle calls when idle 当 CPU 空闲时使系统调用空闲的 CPU 可以选择 [*] Enable console blanking using APM 用节电支持来允许控制台空白 可以选择 [*] RTC stores time in GMT 如果您的硬体时钟是使用世界标准时间,可以选择. 如果是本地时则不选 [*] Allow interrupts during APM BIOS calls 当 APM BIOS 调用的时候允许中断 可以选 择 [*] Use real mode APM BIOS call to power off 可以选择 如果您的系统不能自己切断电源,就选这个吧。不过,对某些 BIOS 而言,选了这个反而不能关机!这样的话,您自己试 试看棉~~我这里没选啦,因为我用的是华硕的旧板 P2L97。另外,我还发现如果您是单 CPU 的机器,前面却将 SMP 选择起来的话,那也不能关机哦~~ CPU Frequency scaling ---> 不用选择 尽管电压缩放是一种潜在的、非常诱人的、降低功耗的方法,但在现实世界的应用中我们对其加以利用时应当小心。降低电压 (进而降低 CPU 频率)将改变给定任务的执行时间,从而有可能导最后期限。即便新频率与最后期限兼容,但如果开关频 率及电压的等待时间太长,还是会出现问题。 [*] CPU Frequency scaling 调节 CPU 的频率的,用来节电的,有必要就选择吧 , 我还是不要选择了 /proc/cpufreq interface (deprecated) Default CPUFreq governor (userspace) ---> ( ) performance (X) userspace <*> 'performance' governor 性能管理模式 'powersave' governor 节电管理模式 --- 'userspace' governor for userspace frequency scaling [*] /proc/sys/cpu/ interface (2.4. / OLD) 这个就不用选择了 <*> CPU frequency table helpers --- CPUFreq processor drivers ACPI Processor P-States driver ACPI 高级配置与电源接口 没见过的东西,不用选了 [ ] /proc/acpi/processor/../performance interface (deprecated) AMD Mobile K6-2/K6-3 PowerNow! 用于 AMD 移动处理器节电技术,如果你有就选上它 <*> AMD Mobile Athlon/Duron PowerNow! 用于 AMD 移动处理器节电技术,如果你有就选上它 AMD Opteron/Athlon64 PowerNow! 同上 Cyrix MediaGX/NatSemi Geode Suspend Modulation 现在好像这样的 CPU 很少阿,如果你有,就选择 它 <*> Intel Enhanced SpeedStep 提升笔记本电脑性能的 SpeedStep 技术,SpeedStep 技术是一项创新性的技术,它可以让处理器在 2 种工作模式之间随 意地切换,即通电状态时的最高性能模式(Maximum Performance Mode)和电池状态时的电池优化模式 Battery Optimized Mode [*] Use ACPI tables to decode valid frequency/voltage pairs (EXPERIME ) <*> Intel Speedstep on ICH-M chipsets (ioport interface) Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface) Intel Pentium 4 clock modulation 时钟频率调整,不用选择了 [ ] Relaxed speedstep capability checks <*> Transmeta LongRun <*> VIA Cyrix III Longhaul 崴盛的东西,不用选择了 6 Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> [*] PCI support PCI 支持。如果使用了 PCI 的卡,当然必选 PCI access mode (Any) ---> PCI 的存取方式,分三种,有透过 BIOS 或是直接存取跟任意,照预设值 Any 就好了 ( ) BIOS ( ) MMConfig ( ) Direct (X) Any [*] Vector-based interrupt indexing (MSI) 好像是一种新的中断方法,取代原本使用 IRQ 来做索引的中断方法如果系统上装有 MSI(Message Signaled Interrupt)的 patch 的话系统似乎就会直接向內存送 Memory Write 的指令,取代了需要等 IRQ 讯号的方式(不知道 是干嘛的,先关掉 ...) [*] Legacy /proc/pci interface 可以选择 传统的/proc/pci 介面,就是像我們一般用 Linux,都可以/dev 下看到目前的硬件狀况,在这个也可以不用(事实上依 help 里的说明在 2.5.53 这个版就有被弄掉)改用一个叫 lspci 的工具可以达成一样的效果,看个人喜好 ... [*] PCI device name database 可以选择 开启这个选项,kernel 里会放入所有已知 PCI device 的资料库,而 kernel 会用这个來造出/proc/pci、/ proc/ioports ... 里的讯息 [*] ISA support 老的 ISA 槽支持,没有这中插槽不用选 [*] EISA support 增强 ISA 总线,已经被 PCI 代替,所以不用选择了 [*] Vesa Local Bus priming 不用选择了 [*] Generic PCI/EISA bridge (NEW) 不用选择了 [*] EISA virtual root device (NEW) 不用选择了 [*] EISA device name database (NEW) 不用选择了 [*] MCA support IBM 的东西,我就不选了哦 MCA(microChannel Archtecture)总线是 IBM 为解决快速微处理器和相对慢的 ISA 总线之间的差异而开发的一种 总线结构,并被用于 IBM 的 PS/2 系统,目前,MCA 总线主要用于 IBM PS/2 计算机和一些笔记本中 [*] Legacy MCA API Support [*] Support for the mca entry in /proc NatSemi SCx200 support PCMCIA/CardBus support ---> 笔记本用的,台式机不用选了 PCMCIA/CardBus support 不用选了 [*] Enable PCMCIA debugging 不用选了 CardBus yenta-compatible bridge support 不用选了 i82092 compatible bridge support 不用选了 i82365 compatible bridge support 不用选了 Databook TCIC host bridge support 不用选了 PCI Hotplug Support ---> 支持 PCI 热插拔的,我们很少动,最好选上吧 <*> Support for PCI Hotplug (EXPERIMENTAL) 这个选一下,万一会用到,如插拔网卡 Fake PCI Hotplug driver 伪设备,我不用选择了 Compaq PCI Hotplug driver PCI 是 intel 和 Compaq 发布的总线,我只选择这个就够了, [*] Save configuration into NVRAM on Compaq servers 不用选择了 IBM PCI Hotplug driver 不用选择了 ACPI PCI Hotplug driver 不用选择了 [*] CompactPCI Hotplug driver 不用选择了 Ziatech ZT5550 CompactPCI Hotplug driver 不用选择了 Generic port I/O CompactPCI Hotplug driver 不用选择了 PCI Express Hotplug driver 最新的 PCI-E,我还没有,不用选择了 [*] Use polling mechanism for hot-plug events (for testing purpose 不用选择了 SHPC PCI Hotplug driver 不用选择了 [*] Use polling mechanism for hot-plug events (for testing purpose 不用选择了 7 Executable file formats ---> [*] Kernel support for ELF binaries 一定要选择 这个当然 y,因为目前 gcc2.7.0 以上的都有支持 ELF 了,如果没有选择这一项,可能会使用相当多的程序因此无法执行。 注意:编译模块成 ELF 和编译支持 ELF 二进制。不编译适当的支持’’gotcha’’是明智的,如果机器结构是 Pentium 或 486 你将得到高效的代码,但一个 386 的核心将运行在 32-bit compatible clone;一个 Pentium 核心将不。为大多 机器制作一张紧急启动盘,最好在 386 下编译,而 386 并不能运行在 Pentium 下编译的核心。 另外一点要注意的,你不能同时把 a.out 和 ELF 支援编译成 modules,否则当你为了能够使用 insmod 而用 insmod 来载入 a.out/ELF modules 时会有 Catch/22 状况发生。如果你的系统主要是 ELF 而你偶尔会需要用到 a.out,你可以把 a.out 支援编译为 modules,否则你最好把它直接放入 kernel 之中。如果你还没进入 ELF 的世纪, 在 compiler kernel 时可以直接把 ELF 支援去掉。 Kernel support for a.out and ECOFF binaries 可以选择编成模块 a.out 的执行文件是比较古老的可执行码,用在比较早期的 UNIX 系统上。Linux 最初也是使用这种码来执行程序,一直 到 ELF 格式的可执行码出来后,有愈来俞多的程序码随着 ELF 格式的优点而变成了 ELF 的可执码。将来势必完全取代 a.out 格式的可执行码。但目前由于沿有许多的程序还没有取代过来,所以只好选择 Y,等将来有一天,全部的程序都变 成了 ELF 的天下时,那时再 disable 掉。 Kernel support for MISC binaries 可以选择编成模块 可以让你支援別的种类的 binary 执行档(如:Java、Python ... etc)丟到 kernel 或编成 module 都 ok ... 8 Device Drivers ---> Generic Driver Options ---> <*> Hotplug firmware loading support 热插拔固件加载,应该选择 [*] Driver Core verbose debug messages Memory Technology Devices (MTD) ---> 通常用在嵌入式系統,可以不用选择了 We use MTD (Memory Technology Devices) system to emulate flash memory as flash disk mounted into Linux virtual file system. This allows accessing flash memory with standard I/O operations without any extra effort. MTD system contains, “user” and driver”, two different modules. In driver modules, we use CFI (Common Flash Interface) to probe the flash chip and then partition it, while we use MTD BLOCK to emulate the flash partitions as block devices in user modules, and then mount them into Linux’s virtual file system with JFFS2 (Journaling Flash File System version 2) type, which is a file system type specifically designed for flash devices according to the features of flash devices. Memory Technology Device (MTD) support [*] Debugging (0) Debugging verbosity (0 = quiet, 3 = noisy) (NEW) MTD partitioning support MTD concatenating support RedBoot partition table parsing Command line partition table parsing --- User Modules And Translation Layers Direct char device access to MTD devices Caching block device access to MTD devices Readonly block device access to MTD devices FTL (Flash Translation Layer) support 和 PCMCIA 有关,可以不用理睬 NFTL (NAND Flash Translation Layer) support 和 PCMCIA 有关,可以不用理睬 [*] Write support for NFTL INFTL (Inverse NAND Flash Translation Layer) support 和 PCMCIA 有关,可以不用理睬 RAM/ROM/Flash chip drivers ---> 用 FLASH 内存,可以不用选择 2000 年, Axis Communications AB (www.axis.com),发布了第一版的 JFFS 文件系统,也是开源的(Open Sourced)。这是一个完全为嵌入式 Linux 系统设计的文件系统, JFFS 直接设计在 FLASH 设备之上,能判断获知可擦除 扇区的边界,以及 FLASH 的大小。 MTD 可以看作是原始的 FLASH 芯片的“翻译层(translation layer)”,也正是由于 MTD 的存在,使得 JFFS 在 Linux 中能快速发展。基于 MTD 这个硬件抽象层(HAL),JFFS 几乎可以被 mount 在任何可随机访问的设备上(如: RAM, FLASH(各种厂家的))-----只要 MTD 支持这些设备。 如果遇到新设备且驱动程序不存在,则找一个现存的驱动程序(做模板),然后修改其中的有关“read/write/erase”之 函数,之后就可以将 JFFS mount 到“新设备”上了(关键是你根本不需要知道 JFFS 是怎么工作的)。换句话说,将 JFFS 文件系统与设备相关的 MTD (Memory Technology Device)(包含了很多“raw FLASH chip”之 Linux 驱动程 序)相结合,你就得到了一个完整的解决方案----即由 MTD 向 JFFS 文件系统层提供一个抽象的设备层。 在这种方式下,JFFS 不关心任何特定的存储(memory)技术。任何支持随机访问的设备(甚至象 NAND FLASH 这样的 伪随机设备)都可以与 MTD 接口,从而在之上实现 JFFS。在设计方面,JFFS(以及 JFFS2)在文件系统层中保证一 个“meta-data”(或文件系统的“格式”可靠性--- "formatting" reliability),这意味只要你的 write()系统调用返回 了,则可以保证数据一定是“记录”下来的 。换句话说,如果在 write()命令的执行期间突然掉电了,而此时数据还没有 完全写入 FLASH 芯片,则芯片内记录的数据要么是 older 数据、要么是 newer 数据,或者是两者的混合,但关键是你的 文件不会因此而“坏(corrupted)”了。 最初的 JFFS 是设计成 "append only"类型的文件系统,即“好”数据重来不会被“覆盖”( overwritten)(如:对一 个已打开的文件先做 rewind()操作,然后 fwrite(),没用!),新的数据总是被添加在上次“文件系统”(而不是文 件)写操作的位置之后。与块数据同时被写入的“meta”数据将保证块数据在“逻辑”上已被写入文件的正确位置。当重启 动(或 mount)之时,整个文件系统将被扫描,零散的数据块被重新排列,以使得在读取文件之时,最新被“标记 (stamped)”数据块----即那些在逻辑上覆盖了“older 数据块”----被读出。而“older 数据”则被标记为“回收 (garbage collection)-----在适当的时候将被删除。这种“ append-only 结构”的优点是“natural wear leveling on the FLASH”(译注:减少 FLASH 的擦除次数)。有关 JFFS 的“掉电可靠性(Power Down Reliability)”,我已 经做一些扩展并提交了 fixes(已包含在最新版本的 CVS 之中),我观察的效果是 500 多次掉电实验大约 10 次失败。另 外,系统中还存在一些 bug,使得 JFFS 会随机地丢掉一些文件(甚至是静态文件)!我将 NOT 推荐在产品中使用该文 件系统(至少是当前版本)。 JFFS2 是 JFFS 技术的第二版,它基于 JFFS 的设计思想,但是由 Redhat (www.redhat.com)实现的。它采用了一种不同 的方法实现“可靠性”,所有的 "erase sector"被独立管理,且可以“乱序(out-of-order)”寻址,因而当创建新文 件或覆盖老文件之时,可以统一地申请一块“已擦除扇区(erase sector)”。为了保证“掉电可靠性”,在被确认已被 成功写入 FLASH 之前(通过 CRC 和版本标签),文件的任何部分不会被真正覆盖。之后,老的数据块被标记为“回 收”,则待到其所有的邻居(同一个扇区内的)也有相似的标记之时,该扇区被擦除。 好消息,JFFS2 还支持压缩。文件数据在被写入时,通过 zlib(可调整 mod's)压缩;数据在被读出之时在线(on the fly)解压缩;所以事实上你无法感知你的数据是否被压缩了。因而现在你可以采用 ASCII 文件格式(而不是 binary 文件) 来做日志(log)或配置(config)文件,当然二进制文件也会被压缩的。如果你的文件很“松散(sparse)”(如:其中 有很多空格),呵呵,不用担心空间会浪费了。但缺点是,如果你将已经压缩过的数据写入时,系统仍将花费大量时间试图 再压缩它。而此时你又无法动态关闭压缩功能。目前有些计划正在试图实现相关功能(即使是基于目录级别,对单个目录实 现压缩的开关选项或属性)。 Detect flash chips by Common Flash Interface (CFI) probe 通过通用闪存接口检测闪存,可以不 用选择 Detect non-CFI AMD/JEDEC-compatible flash chips 可以不用选择 [*] Flash chip driver advanced configuration options Flash cmd/query data swapping (NO) ---> (X) NO ( ) BIG_ENDIAN_BYTE ( ) LITTLE_ENDIAN_BYTE [*] Specific CFI Flash geometry selection [*] Support 8-bit buswidth [*] Support 16-bit buswidth [*] Support 32-bit buswidth [*] Support 64-bit buswidth [*] Support 2-chip flash interleave Mapping drivers for chip access ---> [*] Support non-linear mappings of flash chips CFI Flash device in physical memory map (0x8000000) Physical start address of flash mapping (NEW) (0x4000000) Physical length of flash mapping (NEW) (2) Bus width in octets (NEW) CFI Flash device mapped on Photron PNC-2000 CFI Flash device mapped on AMD SC520 CDP CFI Flash device mapped on AMD NetSc520 CFI Flash device mapped on Arcom SBC-GXx boards CFI Flash device mapped on Arcom ELAN-104NC JEDEC Flash device mapped on Octagon 5066 SBC JEDEC Flash device mapped on Tempustech VMAX SBC301 Flash device mapped with DOCCS on NatSemi SCx200 BIOS flash chip on AMD76x southbridge BIOS flash chip on Intel Hub Controller 2 BIOS flash chip on Intel SCB2 boards CFI flash device on SnapGear/SecureEdge CFI Flash device mapped on DIL/Net PC (0x80000) Size of DIL/Net PC flash boot partition (NEW) BIOS flash chip on Intel L440GX boards PCI MTD driver Flash device mapped with DOCCS on NatSemi SCx200 BIOS flash chip on AMD76x southbridge BIOS flash chip on Intel Hub Controller 2 BIOS flash chip on Intel SCB2 boards CFI flash device on SnapGear/SecureEdge CFI Flash device mapped on DIL/Net PC (0x80000) Size of DIL/Net PC flash boot partition (NEW) BIOS flash chip on Intel L440GX boards Self-contained MTD device drivers ---> Ramix PMC551 PCI Mezzanine RAM card support [*] PMC551 256M DRAM Bugfix [*] PMC551 Debugging Uncached system RAM Test driver using RAM (4096) MTDRAM device size in KiB (128) MTDRAM erase block size in KiB MTD emulation using block device --- Disk-On-Chip Device Drivers M-Systems Disk-On-Chip 2000 and Millennium M-Systems Disk-On-Chip Millennium-only alternative driver (see he M-Systems Disk-On-Chip Millennium Plus [*] Advanced detection options for DiskOnChip (0x0000) Physical address of DiskOnChip (NEW) [*] Probe high addresses [*] Probe for 0x55 0xAA BIOS Extension Signature NAND Flash Device Drivers ---> Flash 设备,不用选择了 NAND Device Support [*] Verify NAND page writes Parallel port support ---> 没有打印机,可以不用选择 Parallel port support 如果要使用 Parallel port 的话,就打开吧!(打印机用那个) PC-style hardware 就是跟 IBM PC 相容的 Parallel port,需要用 Parallel port 的话,就开着 Multi-IO cards (parallel and serial) 不用选择 这好像是指说在 PCI 上裝 Parallel 跟 Serial Port 扩充的支援,沒有的话就別理他 [*] Use FIFO/DMA if available (EXPERIMENTAL) [*] SuperIO chipset support (EXPERIMENTAL) Support for PCMCIA management for PC-style ports 不用选了 [*] Support foreign hardware 如果要让 Parallel port 支援一些非标准的 Parallel port 装置就选吧 不用选择 [*] IEEE 1284 transfer modes 不用选择 开启 IEEE1284 传输模式支援,如果要用 ECP、EPP 等模式就必需要开启如果要用 Parallel port 的話就選吧,可以增加 效能 Plug and Play support ---> 热插拔支持,当然要选择了 [*] Plug and Play support 热插拔支持,当然要选择了 [*] PnP Debug Messages 热插拔硬件的调试,可以不用选择 --- Protocols [*] ISA Plug and Play support ISA 的,好老的东西了,可以不用选择 [*] Plug and Play BIOS support (EXPERIMENTAL) 这个可以选择,热插拔的 BIOS 支持 [*] Plug and Play BIOS /proc interface 这个可以选择 Block devices ---> Normal floppy disk support 软驱支持,可以选择,编译成模块 PS/2 ESDI hard disk support 这种硬盘恐怕现在找不到了,不用选择 XT hard disk support 石器时代的 XT 硬盘,IBM 在很早时开发的东西,不用选择了 Parallel port IDE device support 一般硬盘都是并行 ATA 接口的 40 针连接器连接到总线的 --- Parallel IDE high-level drivers LINUX 是支持这种很新的并口的 IDE 设备的,如果你有的话就用上吧 Parallel port IDE disks 并口连接的 IDE 设备,一般硬盘通过硬盘 IDE 控制器直接连接到总线,不用选择 Parallel port ATAPI CD-ROMs ATAPI 用的是 ATA 接口,SCSI 的命令集,后来只用于 cdrom,不用选 Parallel port ATAPI disks 同上,不用选了 Parallel port ATAPI tapes 磁带机,不用选择 Parallel port generic ATAPI devices 同上,当然不用选择了 --- Parallel IDE protocol modules 不用选择 ATEN EH-100 protocol 不用选择 MicroSolutions backpack (Series 5) protocol 不用选择 MicroSolutions backpack (Series 6) protocol 不用选择 DataStor Commuter protocol 不用选择 DataStor EP-2000 protocol 不用选择 FIT TD-2000 protocol 不用选择 FIT TD-3000 protocol 不用选择 Shuttle EPAT/EPEZ protocol 不用选择 [*] Support c7/c8 chips (EXPERIMENTAL) 不用选择 Shuttle EPIA protocol 不用选择 Freecom IQ ASIC-2 protocol 不用选择 FreeCom power protocol 不用选择 KingByte KBIC-951A/971A protocols 不用选择 KT PHd protocol 不用选择 OnSpec 90c20 protocol 不用选择 OnSpec 90c26 protocol 不用选择 Compaq SMART2 support 給 Compaq Smart Array controllers 用的 driver,一般人不会用吧?不 选 Compaq Smart Array 5xxx support 同上 [*] SCSI tape drive support for Smart Array 5xxx SCSI 接口的磁带机,不用选择了 Mylex DAC960/DAC1100 PCI RAID Controller support 不用选择了 Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL) 不用选择了 用來支援 Mylex DAC960, AcceleRAID 跟 eXtremeRAID 這些 RAID 控制器,沒用的話,就免了 ... Loopback device support 大部分的人这一个选项都选 N,因为没有必要。但是如果你要 mount iso 文件的话,你得选上 Y。这个选项的意思是说,可 以将一个文件挂成一个文件系统。如果要烧光盘片的,那么您很有可能在把一个文件烧进去之前,看看这个文件是否符合 IS09660 的文件系统的内容,是否符合您的需求。而且,可以对这个文件系统加以保护。不过,如果您 想做到这点的话, 您必须有最新的 mount 程序,版本是在 2.5X 版以上的。而且如果您希望对这个文件系统加上保护,则您必须有 des.1.tar.gz 这个程序。注意:此处与网络无关。建议编译成模块 Cryptoloop Support 一般不用选择 Network block device support 可以不用选择 Promise SATA SX8 (carmel) support SATA 接口的 16 位 I/O CPU 支持,不用选了 <*> RAM disk support (16384) Default RAM disk size 不用选了 如果使用过 DOS 下的 ramdrive 程序,应该能了解这个选项的意义。它可以把内存当成硬盘来做存取就如同一般的硬盘一 样,可以 format 它,或是放一些文件在里头。然后,当您关机这些数据也随着之而去了。如果的 RAM 够大,可以考虑玩 玩这选项,但一般人都不需要。 [*] Initial RAM disk (initrd) support 在用 IDE 装置开机的系統上利用 load initrd 挡來开机的动作可有可 无,若是用 SCSI 装置开机的話,这个选项必要打开,因为 SCSI 裝置要靠這才能开机 [*] Support for Large Block Devices 不太需要,比 2TB 大,上哪找这么大的 Storage?? ATA/ATAPI/MFM/RLL support ---> <*> ATA/ATAPI/MFM/RLL support 一定要选择 <*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support 增强型设备支持的设备,除非你不需要 MFM/DLL/IDE 硬盘的的支持,否则就应该回答 Y,但如果你只有 SCSI 的硬盘,关掉这个选项会比较安全。 --- Please see Documentation/ide.txt for help/info on IDE drives [*] Use old disk-only driver on primary interface 除非你的装置真的很古老,不然这选項不用理他 <*> Include IDE/ATA-2 DISK support 除非你都用 SCSI 裝置,不然就开这项,也可以提升效能 [*] Use multi-mode by default 使用 Multi-mode,预设开启,現今的硬盘应该也都支持才是 [*] Auto-Geometry Resizing support 如果是用 Award 的 BIOS,同時你的裝置大於 32GB 而且不能开机,就需要这选项 PCMCIA IDE support 笔记本的东西,可以不用选择 <*> Include IDE/ATAPI CDROM support CDROM 的支援,除非你沒用 CDROM,不然就选吧 Include IDE/ATAPI TAPE support (EXPERIMENTAL) 磁带机,好老的东西,不用选择了 <*> Include IDE/ATAPI FLOPPY support 除非有 LS-120、ZIP 一类的 IDE FLOPPY 裝置,不然不需要选 这个 SCSI emulation support 可以选择 软件模拟 SCSI 功能,好像可以用來支援一些 IDE 上无法识别,但可用 SCSI 找到类似的 Driver 來驱动用的 ... 通常应 该沒什么用,不用理他 [*] IDE Taskfile Access 好像是对 IDE 设备的稳定性跟安全比较有帮助,不用选择 [*] IDE Taskfile IO (EXPERIMENTAL) --- IDE chipset support/bugfixes <*> generic/default IDE chipset support 普通 IDE 芯片组支持,应该选择 [*] CMD640 chipset bugfix/support 通常电脑上都有,选择吧 ... 很多 486 和 586 的主机板都是用 CMD640 的芯片,它是 Neptune 芯片和 SIS 芯片的结合。不过,这种芯片有它的缺 点,在许多的情形下,它会造成数据的流失和错误。如果您选了这一项,则 Linux 核心会为您小心的寻找这些 错误并修正 它。而且,它会打开对二个 IDE 界面的支持。不过,在它的说明文件中提到,如果您的主机板没有 PCI 界面只有 VESA 总 线界面却希望有这项功能的话,则您必须传一些 参数给核心(ideo=cmd640_vlb)。如果不确定上面所说的,选择 Y。 [*] CMD640 enhanced support 一般不需要,不选 一般来说,对于硬盘的存取速度来说,有所谓的 PIO MODES 值设定,现今的 IDE 界面及 BIOS 应该都能侦测到正确 的硬盘 PIO MODE 值了。此值愈高表示硬盘的存取的速度愈快。可是,有些主机板的 B10S 还是旧式的,不能抓到比较高 的 PIO MODE 值,如此一来,便不能发挥整台硬盘的效率。这个设定告诉读者说:如果您的 IDE 界面是 CMD640 为基 础*1*7 和 586 的主机板都在使用它。可以查查主机板的说明书或是 IDE 接口卡的说明书做确定。文件上提到,选择这个将 会降低一些速度,但是数据能百分之百的正确。 [*] PNP EIDE support 支援 EIDE 的即插即用卡,如果系統上有的話,就选吧 [*] PCI IDE chipset support 如果你的 PCI 系統中有用到 IDE 设备就选,通常是选上 [*] Sharing PCI IDE interrupts support 这个可以选择 支援 IDE Chipset 分享 IRQ 的支援,純用主板上的应该是沒差这选项 [*] Boot off-board chipsets first support 不用选择 如果你想利用非主板上內建的晶片所控制之裝置开机,才需要这个选项 [*] Generic PCI IDE Chipset Support 支援一般的 IDE 晶片,通常都会选择 OPTi 82C621 chipset enhanced support (EXPERIMENTAL) 好老的芯片组,不用选了 <*> RZ1000 chipset bugfix/support 通常都有,应该选择 [*] Generic PCI bus-master DMA support 是否支援 DMA,現在的硬盘都支援了,选吧,可以增加不少效 能 [*] Force enable legacy 2.0.X HOSTS to use DMA 强使开启老设备 DMA 的,不用选了 [*] Use PCI DMA by default when available 让系統自动开启支援 DMA 的裝置的 DMA 应该选择 [*] Enable DMA only for disks 这个不用选择 <*> AEC62XX chipset support <*> ALI M15x3 chipset support [*] ALI M15x3 WDC support (DANGEROUS) <*> AMD and nVidia IDE support AMD 和 nVidia 的 IDE 设备支持,不用选择 <*> ATI IXP chipset IDE support 大牌显卡厂商的 IDE 支持,不用选择了 <*> CMD64{3|6|8|9} chipset support 应该选择 <*> Compaq Triflex IDE support 好早的 IDE 设备,不用选择了 <*> CY82C693 chipset support <*> Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTA <*> Cyrix/National Semiconductor CS5530 MediaGX chipset suppo <*> HPT34X chipset support [*] HPT34X AUTODMA support (EXPERIMENTAL) <*> HPT36X/37X chipset support National SCx200 chipset support <*> Intel PIIXn chipsets support < > NS87415 chipset support <*> PROMISE PDC202{46|62|65|67} support [ ] Special UDMA Feature 可以不用选择 <*> PROMISE PDC202{68|69|70|71|75|76|77} support [*] Enable controller even if disabled by BIOS 不用选择 <*> ServerWorks OSB4/CSB5/CSB6 chipsets support <*> Silicon Image chipset support 不知道,还是选上吧 <*> SiS5513 chipset support 不知道,还是选上吧 <*> SLC90E66 chipset support Tekram TRM290 chipset support <*> VIA82CXXX chipset support [*] Other IDE chipset support 可以选择, --- Note: most of these also require special kernel boot parame [*] Generic 4 drives/port support 可以选择 ALI M14xx support DTC-2278 support DTC-2278 support Holtek HT6560B support PROMISE DC4030 support (EXPERIMENTAL) QDI QD65xx support QDI 的产品?不用选择 UMC-8672 support [*] IGNORE word93 Validation BITS SCSI device support ---> 没有这个设备可以不用选择了 SCSI device support [*] legacy /proc/scsi/ support --- SCSI support type (disk, tape, CD-ROM) SCSI disk support SCSI tape support SCSI OnStream SC-x0 tape support SCSI CDROM support [*] Enable vendor-specific extensions (for SCSI CDROM) SCSI generic support --- Some SCSI devices (e.g. CD jukebox) support multiple LUNs [*] Probe all LUNs on each SCSI device [*] Build with SCSI REPORT LUNS support [*] Verbose SCSI error reporting (kernel size +=12K) [*] SCSI logging facility SCSI Transport Attributes ---> --- Parallel SCSI (SPI) Transport Attributes --- FiberChannel Transport Attributes 光纤分布式数据接口,技术还不成熟,还没用到呢,等有了再 选吧 SCSI low-level drivers ---> PCMCIA SCSI adapter support ---> 笔记本的 SCSI 支持,不用选择了 Adaptec AHA152X PCMCIA support Future Domain PCMCIA support NinjaSCSI-3 / NinjaSCSI-32Bi (16bit) PCMCIA support Qlogic PCMCIA support Old CD-ROM drivers (not SCSI, not IDE) ---> 还没见过这种 cd-rom Multi-device support (RAID and LVM) ---> 里面选择raid一般人没有把 [*] Multiple devices driver support (RAID and LVM) <*> RAID support Linear (append) mode RAID-0 (striping) mode RAID-1 (mirroring) mode RAID-4/RAID-5 mode RAID-6 mode (EXPERIMENTAL) Multipath I/O support Device mapper support Crypt target support Fusion MPT device support ---> 采用了 Fusion-MPT 架构的 SCSI 控制器,不用选择了 Fusion MPT (base + ScsiHost) drivers (40) Maximum number of scatter gather entries Enhanced SCSI error reporting Fusion MPT misc device (ioctl) driver Fusion MPT LAN driver IEEE 1394 (FireWire) support ---> 好像只有笔记本才有,那我就不用选了哦 Apple 称之为 FireWire(火线),Sony 称之为 i.Link,Texas Instruments 称之为 Lynx。尽管各自厂商注册的商标 名称不同,但实质都是一项技术,那就是 IEEE-1394。作为一种数据传输的开放式技术标准,IEEE-1394 被应用在众多 的领域。当然,目前来说,IEEE-1394 技术使用最广的还是数字成像领域,支持的产品包括数字相机或摄象机等。总体上 说,IEEE-1394 具有以下特点: 廉价 - 占用空间小 - 速度快 - 开放式标准 - 支持热插拔 - 可扩展的数据传输速率 - 拓 扑结构灵活多样 - 完全数字兼容 - 可建立对等网络 - 同时支持同步和异步两种数据传输模式,虽然 IEEE-1394 可以通过串 联线为接驳设备供电,但是对于各种连接设备来说只靠连接线供电还是远远不够的。例如,象硬盘这种对于电量要求较高的 设备就很难从所接入的设备中得到充足的电力供应。以 Evergreen 推出的 HotDrive 为例,该硬盘如果与 PC 连接的话,不需 要任何的外部电源供应;但是如果与笔记本电脑连接的话,就需要使用一个外接电源。 IEEE-1394 支持两种不同的连接器。最为常用的一种是直接与 6 条铜质导线进行连接。不过,Sony 推出了一种只包含 4 条数 据线的小型线缆,并专门设计了与之搭配的新型连接器。这种连接器如果要与标准的 6 导线线缆连接的话,需要使用转换器。 因为小型线缆不提供电源线,所以与之连接的设备只能使用外部电源供电。 I2O device support ---> 没有啊,不用选了 I2O,是英文“Intelligent Input & output”的缩写,中文意思是“智能输入输出”, 它是用于智能 I/O 系统的标准接 口。 由于 PC 服务器的 I/O 体系源于单用户的 PC 台式机,而不是为处理大吞吐量任务的专用服务器而设计的,一旦成为网络 中心设备后,数据传输量大大增加,因而 I/O 数据传输经常会成为整个系统的瓶颈。I2O 智能输入/输出技术把任务分配给 智能 I/O 系统,在这些子系统中,专用的 I/O 处理器将负责中断处理、缓冲存取以及数据传输等烦琐任务,这样系统的吞吐 能力就得到了提高,服务器的主处理器也能被解放出来去处理更为重要的任务。因此,依据 I2O 技术规范实现的 PC 服务 器在硬件规模不变的情况下能处理更多的任务,作为中小型网络核心的低端 PC 服务器可以从中获得更多的性能提高。它能 够在不同的操作系统和软件版本下工作,旨在满足更高的 I/O 吞吐量需求。I2O 允许服务请求从 PCI 上的一个设备进入,而无 需通过主处理器。I2O 主机处理器将识别该服务请求并在本地进行处理。当主处理器正在执行其它任务时,它还允许服务请求 在 I20 处理器处进行排队。1 降低主处理器的工作负载,从而提高系统性能②增强 I/O 吞吐能力③提供一个标准的 I/O 设备 接口④减少外围设备所需的驱动程序数量。 Networking support ---> 这个下面是选网卡驱动,一定要选 [*] Networking support 网卡驱动,肯定要选 Networking options ---> <*> Packet socket 让 kernel 支援 packet 的传输,当然要选 [*] Packet socket: mmapped IO 让传输加速用的,要开启 MapleBBS 內的 MMIO 也需要这东西,当然要选 <*> Netlink device emulation 最好编译成模块(也可以不用选择) <*> Unix domain sockets syslogd、x-windows 等都是用 socket 來传输,即便电脑没网路,也需要他,所以是一定要选的 ... PF_KEY sockets 和 IP Sec 有关,可以编译成模块 [*] TCP/IP networking 最基本的组网工具,一定要选 [*] IP: multicasting 可以同时定制数个网路位址的东东,建议开启 [*] IP: advanced router 不用选择 [*] IP: policy routing [*] IP: use netfilter MARK value as routing key [*] IP: fast network address translation [*] IP: equal cost multipath [*] IP: use TOS value as routing key [*] IP: verbose route monitoring 以上 7 项是关于路由器设置的,不用选了 [*] IP: kernel level autoconfiguration 让 kernel 可以自动设定 IP 地址,选上吧 [*] IP: DHCP support [*] IP: BOOTP support [*] IP: RARP support 如有需要用 DHCP 取 IP 地址或是有用 NFS 一类的 FS 才需要用这三个 选上吧 IP: tunneling 一般人用不上,是让 Linux 可以在不同网域间移动且不需改变 ip 的东东 不用选择 IP: GRE tunnels over IP 可以不用选择 [*] IP: broadcast GRE over IP 不用选择 [*] IP: multicast routing 以上三个主机不拿来当路由器的話,沒什么用 [*] IP: PIM-SM version 1 support 一般都要选择, [*] IP: PIM-SM version 2 support 一般都要选择 [ ] IP: ARP daemon support (EXPERIMENTAL) 可以不用选择 [*] IP: TCP syncookie support (disabled per default) 一种避免被用大量 packet 攻击用的东东 IP: AH transformation (可以不用选择) IP: ESP transformation (可以不用选择) IP: IPComp transformation 以上三个是 IP Sec 用的,可以編成 module (也可以不用选择) IP: Virtual Server Configuration ---> Virtual Server Configuration 中的选项设定都用 M,按 默认 负载均衡集群是在应用服务器高负载的情况下,由多台节点提供可伸缩的,高负载的服务器组以保证对外提供良好的服务 响应;而 LVS 就是实现这一功能的技术,它通过使内核支持 ipvs 来实现 LVS/Direct Routing (DR)、LVS/IP Tunnel、 LVS/NAT 的功能 IP virtual server support (EXPERIMENTAL) [*] IP virtual server debugging (12) IPVS connection table size (the Nth power of 2) --- IPVS transport protocol load balancing support [*] TCP load balancing support [*] UDP load balancing support [*] ESP load balancing support [*] AH load balancing support --- IPVS scheduler round-robin scheduling weighted round-robin scheduling least-connection scheduling weighted least-connection scheduling locality-based least-connection scheduling locality-based least-connection with replication scheduling destination hashing scheduling source hashing scheduling shortest expected delay scheduling never queue scheduling --- IPVS application helper FTP protocol helper The IPv6 protocol (EXPERIMENTAL) (可以不用选择) [*] IPv6: Privacy Extensions (RFC 3041) support IPv6: AH transformation IPv6: ESP transformation IPv6: IPComp transformation IPv6: IPv6-in-IPv6 tunnel [*] Network packet filtering (replaces ipchains) ---> 网路封包过滤,可用来取代 ipchains 可以选择 --- Network packet filtering (replaces ipchains) [*] Network packet filtering debugging 这个不用选择了 [*] Bridged IP/ARP packets filtering 可以选择 IP: Netfilter Configuration ---> 这就是防火墙机制里头的 iptables 啦!按默认都编成模 块 Connection tracking (required for masq/NAT) FTP protocol support IRC protocol support TFTP protocol support Amanda backup protocol support Userspace queueing via NETLINK IP tables support (required for filtering/masq/NAT) limit match support IP range match support MAC address match support Packet type match support netfilter MARK match support Multiple port match support TOS match support recent match support ECN match support DSCP match support AH/ESP match support LENGTH match support TTL match support tcpmss match support Helper match support Connection state match support Connection tracking match support Owner match support Physdev match support Packet filtering REJECT target support Full NAT MASQUERADE target support REDIRECT target support NETMAP target support SAME target support [*] NAT of local connections (READ HELP) Basic SNMP-ALG support (EXPERIMENTAL) Packet mangling TOS target support ECN target support DSCP target support MARK target support CLASSIFY target support LOG target support ULOG target support TCPMSS target support ARP tables support ARP packet filtering ARP payload mangling ipchains (2.2-style) support ipfwadm (2.0-style) support NOTRACK target support raw table support (required for NOTRACK/TRACE) IPv6: Netfilter Configuration ---> 和 iptables 有关,按默认编成模块就可以了(也可以不用 选择) Userspace queueing via NETLINK IP6 tables support (required for filtering/masq/NAT) limit match support MAC address match support Routing header match support Hop-by-hop and Dst opts header match support Fragmentation header match support HL match support Multiple port match support Owner match support netfilter MARK match support IPv6 Extension Headers Match AH/ESP match support Packet Length match support EUI64 address check Packet filtering LOG target support Packet mangling MARK target support raw table support (required for TRACE) DECnet: Netfilter Configuration ---> 不用选择 Routing message grabulator (for userland routing daemon) Bridge: Netfilter Configuration ---> Ethernet Bridge tables (ebtables) support ebt: broute table support ebt: filter table support ebt: nat table support