Linux内核配置编译中文指南.docx
Linux内核配置编译中文指南序言近几年,linux大行其道,令不满windows蓝屏的使用者跃跃欲试,结果发现linux安装不及windows方便,界面不及windows友好,配置不及windows容易,软件不及windows丰富,以致浅尝辄止。其实,Linux有windows无可比较的两个优势:网络应用和嵌入式技术,这也正是将来最有前途的方向。同时此课题是从理论上设计具有嵌入式Linux操作系统器件的重要组成部分。如要涉足这两个方面,就必须对内核有深入理解。当然,您能够从源代码入手,但前提是您拥有程序设计和操作系统等多方面专业知识,否则,就利用现成的Linuxkernel从编译内核开场吧。不幸的是,内核编译方面的资料匮乏。以上两个原因使我写这篇论文成为必要。我能够自信得讲,这是目前最详尽的内核编译方面的中文资料。值得一提的是,我在搜集翻译资料的经过中,获得了操作系统、程序设计、硬件设备、网络通信等各方各面的知识,极大的拓宽了视野,真正学有所获。感谢所有为Linux发展作出奉献的人,感谢所有Linux中文网站为促进Linux在中国的发展作出的不懈努力,他们是我搜集资料的来源。十分感谢我的指导教师官伯然教授和高斌博士,正是他们的辛勤指导让我顺利完成毕业设计。备注:#-后跟小的选项#-后还有更细选项注意-上机实践结果第一章内核编译的基础第一节内核简介内核,是一个操作系统的核心,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。就好比dos下的IOSYS和MSDOSSYS一体,我们能够把这两个文件叫做DOS的核心。Linux也有它的核心,通常在根目录下,一个叫vmlinuz的文件。我们用这个文件来控制我们的整台PC,包括周边设备和软硬磁盘机、CDROM、声卡等。简单地讲,核心就是操作系统本身。没有了它,就像一个无人住的家,没有人去维持这个家的动作。一个安宁的家需要一个很用心已能当机立断的主人:一部电脑也需要很有效率已稳定的核心,也就是操作系统。因而,核心是整个系统维持下去的关键。Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都能够在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都能够获取相应的源程序代码。任何一个软件工程师都能够将本人以为优秀的代码参加到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。而Linux的内核则是这些特点的最直接的代表。想象一下,拥有了内核的源程序对你来讲意味着什么?首先,我们能够了解系统是怎样工作的。通过通读源代码,我们就能够了解系统的工作原理,这在Windows下几乎是天方夜谭。其次,我们能够针对本人的情况,量体裁衣,定制合适本人的系统,这样就需要重新编译内核。在Windows下是什么情况呢?相信很多人都被越来越庞大的Windows整得莫名其妙过。再次,我们能够对内核进行修改,以符合本人的需要。这意味着什么?没错,相当于本人开发了一个操作系统,但是大部分的工作已经做好了,你所要做的就是要增加并实现本人需要的功能。在Windows下,除非你是微软的核心技术人员,否则就不用痴心妄想了。先介绍一下编译核心的选项,希望能对大家消除对内核的神秘感有所帮助。1.代码成熟等级2.处理器类型和特色3.对模块的支持4.基本的选择5.即插即用支持6.块设备支持7.网络选项8.电话支持9.SCSI设备的支持10.I2O接口适配器11.网络设备支持12.配置业余无线广播13.红外支持14.ISDN的文件系统15.旧型的光驱类型(非IDE界面的光驱)16.字符设备httpdocsj/doc/f9634c7c2e3f5727a5e96280.B支持18.文件系统19.控制台驱动20.声卡驱动21.Kernelhacking第二节内核版本由于Linux的源程序是完全公开的,任何人只要遵循GPL,就能够对内核加以修改并发布给别人使用。Linux的开发采用的是集市模型bazaar,与cathedral-教堂模型-对应,为了确保这些无序的开发经过能够有序地进行,Linux采用了双树系统。一个树是稳定树stabletree,另一个树是非稳定树unstabletree或者开发树developmenttree。一些新特性、实验性改良等都将首先在开发树中进行。假如在开发树中所做的改良可以以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行一样的改良。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。开发数就体如今源程序的版本号中;源程序版本号的形式为x.y.z:对于稳定树来讲,y是偶数;对于开发树来讲,y比相应的稳定树大一因而,是奇数。确定是以root的身份签入,然后cd到/usr/src。uname-r这个指令将会显示版本。内核版本的更新能够访问。第三节编译原因Linux作为一个自由软件,在广大喜好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了很多新的特性。假如用户想要使用这些新特性,或想根据本人的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且一般会修复老版本中发现的很多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。为了正确的合理地设置内核编译配置选项,进而只编译系统需要的功能的代码,一般主要有下面四个考虑:-本人定制编译的内核运行更快具有更少的代码-系统将拥有更多的内存内核部分将不会被交换到虚拟内存中-不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞-将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些以上是针对成熟的Linux套件如RedhatLinux而言,我的目的是为建造嵌入式Linux操作系统做准备,也是必由之路。第四节准备工作第一部分新版本内核的获取和更新Linux内核版本发布的官方网站是,国内各大ftp上一般都能够找到某些版本的内核。新版本的内核的发布有两种形式,一种是完好的内核版本,另外一种是patch文件,即补丁。完好的内核版本比拟大,比方linux-2.4.0-test8.tar.bz2就有18M之多。完好内核版本一般是.tar.gz.tgz文件或者是.bz2文件,二者分别是使用gzip或者bzip2进行压缩的文件,使用时需要解压缩。patch文件则比拟小,一般只要几十K到几百K,极少的会超过1M。但是patch文件是针对于特定的版本的,需要找到本人对应的版本才能使用。编译内核需要root权限。把需要升级的内核拷贝到/usr/src/下下文中以2.2.16的内核的linux-2.2.16tar.gz为例,命令为#cplinux-2.2.16tar.gz/usr/src先查看当前/usr/src的内容,注意到有一个linux的符号链接,它指向一个类似于linux-2.2.14对应于如今使用的内核版本号的目录。首先删除这个链接:#cd/usr/src#rm-flinux如今解压下载的源程序文件。假如所下载的是.tar.gz.tgz文件,使用命令:#tar-xzvflinux-2.2.16tar.gz假如下载的是.bz2文件,例如linux-2.2.16tar.bz2,使用命令#bzip2-dlinux-2.2.16tar.bz2#tar-xvflinux-2.2.16tar如今再来看一下/usr/src下的内容,发现如今有了一个名为linux的目录,里面就是需要升级到的版本的内核的源程序。还记得那个名为linux的链接么?之所以使用那个链接就是防止在升级内核的时候会不慎把原来版本内核的源程序给覆盖掉了。如今也需要同样处理:#mvlinuxlinux-2.2.16#ln-slinux-2.2.16linux假如还下载了patch文件,比方patch-2.2.16,就能够进行patch操作下面假设patch-2.2.16已经位于/usr/src目录下了,否则需要先把该文件拷贝到/usr/src下:#patch-p0第二部分准备主机板和相关硬件的讲明手册其实也不用太具体,只要知道您的硬件是属于哪一类型就行了。例如:有一张SCSI卡,那就要知道这张卡的名字,有一台cd-rom,就要知道这台光驱是哪一种牌子的,能否为标准的IDE/ATAPI界面,还是另有专属接口卡呢?或者,主机版能否有支持Triton芯片通常586以上的电脑常有,这些信息能帮助我们,使得设定变得清楚且容易。因而,不管您有什么使用手册,准备好吧。即便如今不用,将来还是会用到的设Xwindowsystem时要显示卡的手册。第三部分检查声卡的IRQ设定和其种类假如配有一张声卡,除了要知道卡的种类外例如SoundBlaster还需要知道这张卡的IRQ地址。一般来讲,卢卡的IRQ地址是5或7而IO地址则为220。DMA则l,不过,有时不同的声卡可能会有不同的设定。由于稍后的选项里,就会要填入这些数字。第四部分编译核心的硬件需求在编译核心时,确定您的RAM最好在8MB以上,否则可能会很慢而且问题会很多,记得查看swap有没有打开用free指令。此外,最好不要超频,不然很有可能会发生signal11的错误,使得编到一半的核心停了下来,其实编译核心就好比编译程序一样,只是由于构成核心的程序过多了,因而我们能小心尽量小心。第二章内核编译的流程概述编译的流程:编译开场-makemrproper;检查所需的连接配置核心编译核心编辑/etc/lilo.conf重新启动新核心重新启动机器发现并修理故障仔细看我的文章,应该没多少问题了第一节编译开场通常要运行的第一个命令是:#cd/usr/src/linux#makemrproper该命令确保源代码目录下没有不正确的目的.o文件以及文件的相互依靠。如使用刚下载的完好的源程序包进行编译,本步能够省略。而假如屡次使用了这些源程序编译内核,那么最好要先运行一下这个命令。确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。它们分别链向源代码目录下的真正的、该计算机体系构造对于PC机来讲,使用的体系构造是i386所需要的真正的include子目录。如:asm指向/usr/src/linux/include/asm-i386等。若没有这些链接,就需要手工创立,根据下面的步骤进行:#cd/usr/include#rm-rasmlinuxscsi#ln-s/usr/src/linux/include/asm-i386asm#ln-s/usr/src/linux/include/linuxlinux#ln-s/usr/src/linux/include/scsiscsi这是配置非常重要的一部分。删除掉/usr/include下的asm、linux和scsi链接后,再创立新的链接指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。也是上面又在/usr/src下"多余"地创立了个名为linux的链接的原因之一.一旦万事俱备,转到/usr/src/linux。如今你也许想停下细读一下文档文件,实际上假如你有些十分的硬件,或几种光驱驱动程需要本人动手设置,他们通常这样做,当引导时这些驱动程序将给出警告,这并不碍事他们照常工作少,阅读扩展名为.txt.h.c的文件。通常我发现他们具有共性且易于配置。假如你不想冒险,你没必要做。记住你照样能够解开tar文件(或再次安装.rpm文件)恢复前的文件。第二节配置内核核心内容接下来的内核配置经过比拟烦琐,但是配置的适当与否与日后Linux的运行直接相关,有必要了解一下选项的设置。配置内核能够根据需要与喜好使用下面命令中的一个:#makeconfig基于文本的最为传统的配置界面,不推荐使用#makemenuconfig基于文本选单的配置界面,字符终端下推荐使用,必须安装ncurses-dev和tk4-dev库#makexconfig基于图形窗口形式的配置界面,Xwindow下推荐使用#makeoldconfig假如只想在原来内核配置的基础上修改一些小地方,会省去不少费事假如不能使用Xwindow,那么就使用makemenuconfig好了。界面固然比上面一个差点,总比makeconfig的要好多了。选择相应的配置时,有三种选择,它们分别代表的含义如下:Y-将该功能编译进内核N-不将该功能编译进内核M-将该功能编译成能够在需要时动态插入到内核中的模块在每一个选项前都有个括号,但有的是中括号有的是尖括号,还有一种圆括号。用空格键选择时能够发现,中括号里要么是空,要么是"*",而尖括号里能够是空,"*"和"M"。这表示前者对应的项要么不要,要么编译到内核里;后者则多一样选择,能够编译成模块。而圆括号的内容是要在所提供的几个选项中选择一项。在编译内核的经过中,最烦杂的事情就是这步配置工作了,不清楚到底该怎样选取这些选项。实际上在配置时,大部分选项能够使用其缺省值,只要小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心严密而且经常使用的部分功能代码直接编译到内核中。下面对选项分别加以介绍1Codematurityleveloptions代码成熟等级此处只要一项:promptfordevelopmentand/orincompletecode/drivers,假如要试验如今仍处于实验阶段的功能,比方khttpd、IPv6等,就必须把该项选择为Y了;否则能够把它选择为N。在Linux的世界里,天天都有很多人为它发展支持的driver和加强它的核心。但是有些driver还没进入稳定的阶段。但其作者很欢迎其别人去测试这些driver并提出一些bugs。这个问题是讲,有一些drive还在做测试中,问您能否要选择这些drive或支持的程序码。假如键入Y,往后将会出现一些还在测试中的东西给您做选择。像Java的程序码和PCIbridge,台则就键入N。2.Processortypeandfeatures处理器类型和特色#Processorfamily(386,486/Cx486,586/K5/5x86/6x86,Pentium/K6/TSC,PPro/6x86MX)PPro/6x86MX-选择处理器类型,缺省为Ppro/6x86MX。它会对每种CPU做最佳化,让它跑得快又好。一般来讲,没有选择正确的CPU并不会有重大的影响十分是选择386,这样编译出来的核心也许会比拟小但它的速度可能就会变慢了。所以,最好要知道您的CPU是哪一种。不过,假如您的gCC编译器是2.7.0版以前的。那么只能选择386或是486。#HighMemorySupport-内核支持的最大内存数,缺省为1G。能够支持到4G、6.4G,一般能够不选.#Mathemulation-这项询问能否需L1nux核心模拟数学浮点运算器。假如有486Dx、AMD以及Pentium机器的话,这个选项就不必选了,由于它们都有内建的浮点运算器。协处理器是在386时代的宠儿,如今早已不用了。不过,对于有内建浮点运算器的人来讲,选了这个选项并不会因而让内建的浮点运算器失效。但它会增大核心约45KB。#MTTRmemorytyperangeregistersupport-选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供Xserver使用。同时用来启动pentinumpro和pentinumII的特殊功能,假如你用的不是这类CPU就选N,否则也仅仅是使内核变大罢了。#Symmetricmulti-processingsupport-对称多处理支持。除非有多个CPU,否则就不用选了。3.Loadablemodulesupport对模块的支持.首先,了解一点关于模块的知识。模块就像你特意插入核心中的某些东西,假如办公室有一个小网络并且有时想用一下(但并不经常),也许你想把网卡编译成一个模块。使用这个模块,机器必运行和存取/libs下的模块,意思是驱动程序(IDE,SCSI等但必须是NFS支持的网卡),文件系统(通常是ext2但可以以是nfs)和核心类型(最好是elf)必须编译在内核并且不能是模块,模块只要核心引导时才起作用,驱动程序(来网络)的存取,和文件系统安装。这些文件必须编译在核心内否则将能安装启动分区。假如安装启动分区和网络,你需要网络系统文件,和己经编译的网卡。为什么要使用模块?模块化使核心变的更简捷,它减少核心释放大量的受保护的空间。模块的安装和卸载使用的空间是可重复分配利用的。假如你打开机器有90%以上的时间用到一个模块,编译它。运用这类模块是浪费内存的,原因是一旦你编译了模块它们同样将占用大量的内存,核心需要一些代码来挂上模块。记住,核心在保护空间运行,但模块并不是。这么讲,并不经常使用我的设备,把它编译成只支持ext2,ide和elf。而一直使用的网卡,把其它的编译成模块:如a.out,java,floppy,iso9960,msdos,minix,vfat,smb,nfs,smcultra(ethernetcard),serial,printer,sound,ppp,等等。它们很多只是在这或那用上那么几分钟。严格的讲,这样做会使核心增大很多而降低它的执行速度。这时我们就能够把这些可能会用的驱动程序编译成一个个的模块,在需要用的时候才用insmod这个指令参加核心,不用的时候也能rmmod把它从核心移除,或是用lsmod观察目前所载入的模块。这里面有三项:#Enableloadablemodulesupport-除非准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。#Setversioninformationonallmodulesymbols-通常,我们更新核心版本之后,模块耍重新的编译。这个选项使您不必更新编译模块而能使用以前的模块。能够不选它。但假如您选y,则根据它的讲明,您必须有genksyms这个程序可用whereis指令查看有无此程序。#Kernelmoduleloader-让内核在启动时有本人装入必需模块的能力,建议选上。注意:在开机就会mount上来的partition的FS、devicedriver记得要compiler进kernel,不能把它弄成modules。请不要夸大到为了完全模组化而忘了把ext2fs和IDEdirvercompiler进kernel里。4.Generalsetup普通的属性设置这部分内容非常多,一般使用缺省设置就能够了。下面介绍一下经常使用的一些选项:#Networkingsupport-网络支持。由于在Linux里面,有虚拟的网络设备(1ookback),能够模拟整个网络。而且,些程序需要它。必须,没有网卡也建议你选上。注意:选N,则7.(Networkingoptions网络选项)和11.(Networkdevicesupport网络设备支持)不会出现。#Limitmemorytolow16MB-大部分的人这一选项N。除了主机板没有办法处理16MB以上的内存,或者有超过16MB以上的内存但却经常发生一些很奇怪的问题。这时,您能够试试这个选项。有些主机板对超16MB内存的处理并不是很好,通常这些都是旧型的主机板。还有,在讲明文件中有提到,假如内存超过64MB的话,用LILO加一些参数给Linux核心例:mem=80M,并且把您主机板上的Cache加到512K。这样,整体效率才能提升。#PCIsupport-PCI支持。假如使用了PCI的卡,当然必选。#PCIbiossupport-主机板能否有PCI界面。假如有,则您必须回答y。PCI是586电脑的主要界面一些486主机板上也有,这个界面能让您插入所谓的PCI显示卡,或是PCI的网络卡等。这种界面是如今电脑的主要趋势,因而假如有PCI的插槽。您就能够选Y。除了一些很旧很旧但有支持PCI的主机板外这些有bugs的旧型主机板可能会由于这个选项而让核心挂掉。#PCIaccessmode(BIOS,Direct,Any)Any-设置Linux探测PCI设备的方式。选择“BIOS,Linux将使用BIOS;选择“Direct,Linux将不通过BIOS;选择“Any,Linux将直接探测PCI设备,假如失败,再使用BIOS。#Supportforhot-pluggabeldevices-热插拔设备支持。支持的不是太好,可不选。#PCMCIA/CardBussupport-PCMCIA/CardBus支持。有PCMCIA就必选了。#PCIbridgeoptimization(experimental)-在某些支持BIOS上,它能让存取速度加快,建议是选Y。#Backward-compatible/proc/pci-设备兼容,本人看help。#SystemVIPC假如将来想编译dosemuDOS模拟器,则这个选项一定要选,它是一个让各个程序process同步且能相互交换数据的函数库和一些系统的调用,没它,很多的程序将会无法执行。#BSDProcessAccounting-#Sysctlsupport-除非你的内存少的可怜,否则你应该启动这个功能,启用该选项后内核会大8K,但能让你直接改变内核的参数而不必重新开机。#KernelsupportforA.OUTbinaries-aout的执行文件是比拟古老的可执行码,用在比拟早期的unix系统上。Linux最初也是使用这种码来执行程序,一直到ELF格式的可执行码出来后,有愈来俞多的程序码随着ELF格式的优点而变成了ELF的可执码。将来势必完全取代aout格式的可执行码。但目前由于沿有很多的程序还没有取代过来,所以只好选择Y,等将来有一天,全部的程序都变成了ELF的天下时,那时再disable掉。#KernelsupportforLinux/IntelELFbinaries-由上所述,这个当然y哩,由于目前gcc2.7.0以上的都有支持ELF了,假如没有选择这一项,可能会使用相当多的程序因而无法执行。注意:编译模块成ELF和编译支持ELF二进制。不编译适当的支持gotcha是明智的,假如机器构造是Pentium或486你将得到高效的代码,但一个386的核心将运行在32-bitcompatibleclone;一个Pentium核心将不。为大多机器制作一张紧急启动盘,最好在386下编译,而386并不能运行在Pentium下编译的核心。另外一点要注意的,你不能同时把a.out和ELF支援编译成modules,否则当你为了能够使用insmod而用insmod来载入a.out/ELFmodules时会有Catch/22状况发生。假如你的系统主要是ELF而你偶然会需要用到a.out,你能够把a.out支援编译为modules,否则你最好把它直接放入kernel之中。假如你还没进入ELF的世纪,在compilerkernel时能够直接把ELF支援去掉。#KernelsupportforJAVAbinaries-这一项是正在做测试中的产品,但是假如想写有关Java的程序,希望它能在Linux的机器上跑。那么,能够选择把它编成一个模块或是直接把它编进核心里。#PowerManagementsupport-电源管理支持。#AdvancedPowerManagementBIOSsupport-高级电源管理BIOS支持。这通常是用在笔记本电脑上的东西,假如您有APM的BIOS,支持省电的设备的有电池的那种,那么您能够选上这项,一般人这一项是选n,以避免一些可能会发生的问题。后有8个选项。#Parallelportsupport-串口支持。5.PlugandPlayconfiguration即插即用支持Linux对即插即用目前支持的不如Windows,好有些情况下会和其他设备产生冲突I/O,DMA,IRQ等。这个选项对PCI设备没有影响,由于他们天生就是PNP设备。#PlugandPlaysupport(CONFIG_PNP)-选择“y,内核将自动配置即插即用设备。原来PNP还有这个意思。#ISAPlugandPlaysupport-选择“y,内核将自动配置基于ISA总线的即插即用设备。6.Blockdevices块设备支持这个就得针对本人的设备情况来选了:#NormalPCfloppydisksupport(CONFIG_BLK_DEV_FD)Y/m/n/?-普通PC软盘支持。#EnhancedIDE/MFM/RLLdisk/cdrom/tape/floppysupport-选择“y,内核将提供对加强IDE硬盘、CDROM和磁带机的支持。在硬盘没有做得很大的时候,一般的IDE卡和BIOS只能支持小于540MB的硬盘。不但如此,那时也只能支持二颗硬盘。但现今的硬盘动不动就是1GB以上,今年主流是3050G,而且经常都会超过一二颗硬盘。如此一来,新的主机板就开场支持加强型的IDE界而EnhancedIDE,以支持到540MB以上的硬盘。所以,假如您的IDE界面是Enhanced的,请您选Y,底下就会出现八部分IDE界面的选项,这些选项能加快您的IDE界面的速度和对某些芯片做一些最佳化。但假如您的硬盘或光盘全都是SCSI界面的,那么选N以跳过下面选项。#useolddisk-onlydriveronprimaryinterface-通常是选择N。由于我们有其他新的drivers可用。这个选项的意思是讲,假如您的IDE界面是很旧很旧的那种的。那么,就能够使用这个drives驱动那个旧型的IDE界面可装二台硬盘;或是一台硬盘,一台光盘。而现今流行的EnhancedIDE则有两个界面,共能够接四台硬盘。我们稍后会有driver支持它。#IncludeIDEATAPICDROMsupport-假如希望核心支持IDEATAPI界而的光驱,选择Y。假如有光驱,但它附有一张接口卡,必须把排线接到那张专属接口卡上;或者是接到声卡上的,则这个选项也需要选N,稍后我们会有非IDE的光驱厂牌让我们挑选。现今的光驱通常是IDEATAPI界而的,所以这个选项通常是Y。#SupportremovableIDEinterfacesPCMCIA-这个选项对大部分的人全选n,除非您有PCMCIA的东西,这通常是笔记本电脑上看得到的东西。PCMCIA是一个组织,在以前是设计内存条的。但如今他们对于PCCARDS定了一个标排,并很广泛的应用在1aptap的电脑上。不但有所谓的PCMCIA的硬盘,甚至有网络卡、SCSI卡等,不过,大部分的人并不需要这个选项。这个选项选完后,下面则是Linux核心对几种芯片的IDE界面做修正或是加强它。#CMD640chipsetbugfixsupport-很多486和586的主机板都是用CMD640的芯片,它是Neptune芯片和SIS芯片的结合。不过,这种芯片有它的缺点,在很多的情形下,它会造成数据的流失和错误。假如您选了这一项,则Linux核心会为您小心的寻找这些错误并修正它。而且,它会打开对二个IDE界面的支持。不过,在它的讲明文件中提到,假如您的主机板没有PCI界面只要VESA总线界面却希望有这项功能的话,则您必须传一些参数给核心ideocmd640vlb。假如不确定上面所讲的,选择Y。#CMD640enhancedsupport-一般来讲,对于硬盘的存取速度来讲,有所谓的PIOMODES值设定,现今的IDE界面及BIOS应该都能侦测到正确的硬盘PIOMODE值了。此值愈高表示硬盘的存取的速度愈快。可是,有些主机板的B10S还是旧式的,不能抓到比拟高的PIOMODE值,如此一来,便不能发挥整台硬盘的效率。这个设定告诉读者讲:假如您的IDE界面是CMD640为基础的界面,但是您的BIOS并不能抓到正确的PIOMODE值,那么,这个选项能够自动的找到硬盘正确的PIOMODE值。#RZ1000chipsetbugfixsupport-这个选项好像前面的CMD640一样。不过,它的芯片是RZ1000的芯片,这种芯片是以Neptune芯片为主的一种芯片,而目、有很多的486和586的主机板都在使用它。能够查查主机板的讲明书或是IDE接口卡的讲明书做确定。文件上提到,选择这个将会降低一些速度,但是数据能百分之百的正确。#Intel82371PIIXTritonIIIDMAsupport-对于586的Pentium电脑来讲,有相当多的主机板都是用Intel的Triton芯片,使用这种芯片的最大好处是支持直接内存存取DMA,而节省您的CPU时间。在以往还没有DMA这个东西时,读取硬盘需要耗用很多的CPU时间。如此一来,CPU被占用,就不能充分的发挥它的成效。后来,DMA出来后,硬盘的读取便靠Triton或其他有支持DMA的IDE界面的芯片,直接与它们做沟通,而节省了大量的CPU时间,但这必须您的硬盘和主机板有同时支持DMA的IDE界面的芯片,直接与它们做沟通而节省了大量的CPU时间。但这必须您的硬盘和主机板有同时支持DMAMODE才行。#otherIDEchipsetsupport-假如这上选项选y,则会出现下列六种其他的芯片或厂牌供您选择。NOte:mostofthesealsorequirespecialkernelbootparaaetersALIM14xxsupportDTC2278supportHoltekHT65608supportPROMISEDC4030supportQDIQD6580supportUMC8672support上面这六种厂牌的芯片依硬件配备而使用,但它们有共同的特点就是必须传一些参数给核心。假如找不到您的芯片,那么也没关系。上这些选项只不过对这些芯片做最佳化罢了。#AdditionalBlockDevices其他的块设备#Loopbackdevicesupport-大部分的人这一个选项都选N,由于没有必要。这个选项的意思是讲,能够将一个文件挂成一个文件系统。假如要烧光盘片的,那么您很有可能在把一个文件烧进去之前,看看这个文件能否符合IS09660的文件系统的内容,能否符合您的需求。而且,能够对这个文件系统加以保护。不过,假如您想做到这点的话,您必须有最新的mount程序,版本是在2.5X版以上的。而且假如您希望对这个文件系统加上保护,则您必须有des.1.tar.gz这个程序。注意:此处与网络无关。#Multlnledevicesdriversupport-这个选项能够让把整个硬盘分区变成一个单独的区块设备,您必须有md035tgz这个程序。而且在做这件事之前请将您的硬盘备份,由于它尚在测试阶段。一般人对这个选项是选N。#RAMdisksupport-假如使用过DOS下的ramdrive程序,应该能了解这个选项的意义。它能够把内存当成硬盘来做存取就好像一般的硬盘一样,能够format它,或是放一些文件在里头。然后,当您关机这些数据也随着之而去了。假如的RAM够大,能够考虑玩玩这选项,但一般人都不需要。#XTharddisksupport-支持XT的古董硬盘,这是ibm电脑时代的东西,假如您还有这种很旧很旧的硬盘。那么,您能够把它编进核心或是编成一个模块。大部分的人这个选项都是选择N的。#CompaqSMART2support-#MulexDAC960/DAC1100PCIRAIDControllersupport-RAID镜像用的。#LogicalvolumemanagerLVMsupport-逻辑卷管理支持。#Multipledevicesdriversupport-多设备驱动支持。#RAMdisksupport-RAM盘支持。7.Networkingoptions网络选项这里配置的是网络协议。#Packetsocket-选择“Y,一些应用程序将使用Packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。#KernelUserNetworklinkdriver-这个是在测试中的程序码,一般人不需要用。依它的讲明,它允许在核心、模块或程序间的某些部分间,相互做双向的沟通。假如想使用arpd,则这个程序码就要加进核心里。#TCP/IPnetworking-选择“Y,内核将支持TCP/IP协议。这个选项无论怎样请您选择Y,即便没有网络卡,或是没有连到网络上的设备,在linux上仍有所谓的lookback设备而且有些程序需要这个选项。在讲明文件中提到,假如您没有打开这个设定,则Xwindowsystem可能会有问题回为它也需要TCPIP。#Networkfirewalls-选择“Y,内核将支持防火墙。Firewalls依英文看是防火墙。在网络愈来愈发达的今天,网络安全的考虑也愈来愈重要了。在局域网上找一台电脑来保护本人的考虑也愈来愈多了。能够在一局域网上找一台电脑来保护本人区域内的电脑。这样的结果是,所有外部的电脑假如要连进内部的电脑就必须通过这台装有Firewalls电脑的同意。所以,假如您希望这台电脑有着过滤网络的功能的话,那么这个选项要选Y。而且,等一下有个IPfirewalling的选项也要选y;但下面的forwardinggatewaying要选n,如此才能让它正常动作。大部分的人这个选项选N。#Networkalasing-允许有多个IP地址。#IP:forwardinggatewaying-和Firewall相反,这个选项是用来疏导网络的。一个gateway也就是router,要帮助疏导两个网络间的数据传送。这台机器必需要有两张网络卡,连接两个个同的网络,做疏导网络的工作。假如选择了这个选项,则表示想让这台负责做router。那么,就必须有两张网络卡了。另外有一种情形是,假如您有MODEM通过串列界面以SLIP和PPP协议和网络卡,并用它们来连上Internet。这时您也一样能够执行IProuting服务,也需把这个选项打开。#IP:multicasting