LINUX KERNEL 配置编译中文指南

摘要:近几年,linux大行其道,令不满windows蓝屏的使用者跃跃欲试,结果发现linux安装不及windows方便,界面不及windows友好,配置不及windows容易,软件不及windows丰富,以至浅尝辄止。
  前言:谁是这篇文章的读者?
  
    不习惯读英文资料的非LINUX高手
  
    声卡不响光驱不转连不上网等等,只要有问题就行
  
    开发嵌入式操作系统
  
    现在流行的ODL(only disk linux)中做内核部分,那些文章不介绍此点内容。我正在做,完工后整理资料。
  
    BY THE WAY ,想成为LINUX高手吗?你需要熟练掌握KERNEL COMPILE 、XCONFIGRATER 、LINUXCONFIG、 SAMBA四大利器,你随时可以找到后三者的大量相关资料,但内核编译就只好啃为数不多的英文了。
  
    笔者耗时3月,搜集并整理大量资料,在儿童节前连续工作18个小时后,给小企鹅送了这份礼物。
  
    笔者自信是目前为止KERNEL编译方面最完备的中文资料(将不断翻译补充),这可是毕业论文哪!
  
    为什么要放网上呢?首先找这方面资料太难了,文章对各位LINUX爱好者会有所帮助。其次,取之于网用之于网。
  
    欢迎使用这篇文章,请随便引用,这才符合LINUX自由软件的精神嘛,不过别忘了提提我的名字,就算为我的辛苦付了点稿酬。
  
    介于内核方面资料较少,欢迎在这篇文章中添加和修改内容,但不要过多删除,笔者列表要加入你的名字,让我们为把它变成数百页的资料而努力。OK,交个朋友吧, 我是玉玉安,email :[email protected]
  
  目录
  
    序言
  
    第一章 内核编译的基础
  
    第一节内核简介
  
    第二节内核版本
  
    第三节编译原因
  
    第四节准备工作
  
    第二章 内核编译的流程
  
    第一节编译开始
  
    第二节配置内核
  
    1.代码成熟等级
  
    2..处理器类型和特色
  
    3.对模块的支持
  
    4.基本的选择
  
    5.即插即用支持
  
    6.块设备支持
  
    7.网络选项
  
    8.电话支持
  
    9.SCSI设备的支持
  
    10.I2O接口适配器
  
    11.网络设备支持
  
    12.配置业余无线广播
  
    13.红外支持
  
    14.ISDN的文件系统
  
    15.旧型光驱类型(非IDE界面的光驱)
  
    16.字符设备
  
    17.USB支持
  
    18.文件系统
  
    19.控制台驱动
  
    20.声卡驱动
  
    21.Kernel hacking
  
    第三节编译内核
  
    第四节启用内核
  
    附录:LILO分析
  
    第三章 内核编译的应用
  
    第一节嵌入式Linux技术
  
    第二节你的Linux有多大(及实践结果)
  
    结束语
  
    参考文献
  
  序言
  
    近几年,linux大行其道,令不满windows蓝屏的使用者跃跃欲试,结果发现linux安装不及windows方便,界面不及windows友好,配置不及windows容易,软件不及windows丰富,以至浅尝辄止。
  
    其实, Linux有windows无可比拟的两个优势:网络应用和嵌入式技术,这也正是未来最有前途的方向。同时此课题是从理论上设计具有嵌入式Linux操作系统器件的重要组成部分。
  
    如要涉足这两个方面,就必须对内核有深刻理解。当然,您可以从源代码入手,但前提是您拥有程序设计和操作系统等多方面专业知识,否则,就利用现成的Linux kernel从编译内核开始吧。不幸的是,内核编译方面的资料匮乏。以上两个原因使我写这篇论文成为必要。我可以自信得说,这是目前最详尽的内核编译方面的中文资料。
  
    值得一提的是,我在搜集翻译资料的过程中,获得了操作系统、程序设计、硬件设备、网络通信等各方各面的知识,极大的拓宽了视野,真正学有所获。
  
    感谢所有为Linux发展作出贡献的人,感谢所有Linux中文网站为促进Linux在中国的发展作出的不懈努力,他们是我搜集资料的来源。
  
    特别感谢我的指导老师――官伯然教授和高斌博士,正是他们的辛勤指导让我顺利完成毕业设计。
  
    西电科大 :李玉元 2001/6/1
  
    备注:#----------后跟小的选项
  
    ##---------后还有更细选项
  
    注意------上机实践结果
  
  第一章 内核编译的基础
  
  第一节 内核简介
  
    内核,是一个操作系统的核心,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。 就好比DOS下的IO.SYS和MSDOS.SYS一体,我们可以把这两个文件叫做DOS的核心。Linux也有它的核心,通常在根目录下,一个叫vmlinuz的文件。我们用这个文件来控制我们的整台PC,包括周边设备和软硬磁盘机、CD-ROM、声卡等。简单地说,核心就是操作系统本身。没有了它,就像一个无人住的家,没有人去维持这个家的动作。一个安定的家需要一个很用心已能当机立断的主人:一部电脑也需要很有效率已稳定的核心,也就是操作系统。因此,核心是整个系统维持下去的关键。
  
    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.字符设备
  
    17.USB支持
  
    18.文件系统
  
    19.控制台驱动
  
    20.声卡驱动
  
    21.Kernel hacking
  
  第二节 内核版本
  
    由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。Linux的开发采用的是集市模型(bazaar,与cathedral--教堂模型--对应),为了确保这些无序的开发过程能够有序地进行,Linux采用了双树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(development tree)。一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。开发数就体现在源程序的版本号中;源程序版本号的形式为x.y.z:对于稳定树来说,y是偶数;对于开发树来说,y比相应的稳定树大一(因此,是奇数)。确定是以″ root ″的身份签入,然后cd 到 /usr/src 。uname -r 这个指令将会显示版本。内核版本的更新可以访问。
  
  第三节 编译原因
  
    Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。
  
    通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。
  
    为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:
  
    ---自己定制编译的内核运行更快(具有更少的代码)
  
    ---系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
  
    ---不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
  

    ---将某种功能编译为模块方

摘要:LINUX KERNEL 配置编译中文指南
  1.Code maturity level options代码成熟等级
  
    此处只有一项:prompt for development and/or incomplete code/drivers,如果要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。 在Linux的世界里,每天都有许多人为它发展支持的driver和加强它的核心。但是有些driver还没进入稳定的阶段。但其作者很欢迎其他人去测试这些driver并提出一些bugs。这个问题是说,有一些drive还在做测试中,问您是否要选择这些drive或支持的程序码。
  
    如果键入Y,往后将会出现一些还在测试中的东西给您做选择。(像Java的程序码和PCI bridge),台则就键入N。
  
    2. Processor type and features处理器类型和特色
  
    #Processor family (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。
  
    #High Memory Support------内核支持的最大内存数,缺省为1G。可以支持到4G、6.4G,一般可以不选.
  
    #Math emulation------这项询问是否需L1nux核心模拟数学浮点运算器。如果有486Dx、AMD以及Pentium机器的话,这个选项就不必选了,因为它们都有内建的浮点运算器。协处理器是在386时代的宠儿,现在早已不用了。不过,对于有内建浮点运算器的人来说,选了这个选项并不会因此让内建的浮点运算器失效。但它会增大核心约45KB。
  
    #MTTR (memory type range register)support------选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。同时用来启动pentinum pro和pentinum II 的特殊功能,如果你用的不是这类CPU就选N,否则也仅仅是使内核变大而已。
  
    #Symmetric multi-processing support------对称多处理支持。除非有多个CPU,否则就不用选了。
  
    3. Loadable module support对模块的支持.
  
    首先,了解一点关于模块的知识。模块就像你特意插入核心中的某些东西,如果办公室有一个小网络并且有时想用一下(但并不经常),也许你想把网卡编译成一个模块。使用这个模块,机器必运行和存取/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察看目前所载入的模块。这里面有三项:
  
    #Enable loadable module support------除非准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。
  
    #Set version information on all module symbols------通常,我们更新核心版本之后,模块耍重新的编译。这个选项使您不必更新编译模块而能使用以前的模块。可以不选它。但如果您选y,则按照它的说明,您必须有genksyms这个程序(可用whereis指令查看有无此程序)。
  
    #Kernel module loader------让内核在启动时有自己装入必需模块的能力,建议选上。
  
    注意:在开机就会 mount 上来的 partition 的 FS 、device driver 记得要 compiler 进 kernel,不能把它弄成 modules。请不要夸张到为了完全模组化而忘了把ext2fs和IDE dirver compiler 进 kernel 里。
  
    4. General setup普通的属性设置
  
    这部分内容非常多,一般使用缺省设置就可以了。下面介绍一下经常使用的一些选项:
  
    #Networking support------网络支持。因为在Linux里面,有虚拟的网络设备(1ookback),可以模拟整个网络。而且,―些程序需要它。必须,没有网卡也建议你选上。注意:选N,则7.(Networking options 网络选项)和11.(Network device support网络设备支持) 不会出现。
  
    #Limit memory to low 16MB ------大部分的人这一选项 N。除了主机板没有办法处理16MB以上的内存,或者有超过16MB以上的内存但却常常发生一些很奇怪的问题。这时,您可以试试这个选项。有些主机板对超16MB内存的处理并不是很好,通常这些都是旧型的主机板。还有,在说明文件中有提到,如果内存超过64MB的话,用LILO加一些参数给Linux核心(例:mem=80M),并且把您主机板上的Cache加到512K。这样,整体效率才能提升。
  
    #PCI support ------PCI支持。如果使用了PCI的卡,当然必选。
  
    #PCI bios support ------主机板是否有PCI界面。如果有,则您必须回答y。
  
    PCI是586电脑的主要界面(一些486主机板上也有),这个界面能让您插入所谓的PCI显示卡,或是PCI的网络卡等。这种界面是现在电脑的主要趋势,因此如果有PCI的插槽。您就可以选Y。除了一些很旧很旧但有支持PCI的主机板外(这些有bugs的旧型主机板可能会因为这个选项而让核心挂掉)。
  
    #PCI access mode (BIOS, Direct, Any) [Any] ------设置Linux探测PCI设备的方式。选择“BIOS”,Linux将使用BIOS;选择“Direct”,Linux将不通过BIOS;选择“Any”,Linux将直接探测PCI设备,如果失败,再使用BIOS。
  
    #Support for hot-pluggabel devices ------热插拔设备支持。支持的不是太好,可不选。
  
    #PCMCIA/CardBus support------PCMCIA/CardBus支持。有PCMCIA就必选了。
  
    #PCI bridge optimization (experimental) ------在某些支持BIOS上,它能让存取速度加快,建议是选Y。
  
    #Backward-compatible /proc/pci------设备兼容,自己看help。
  
    #System V IPC 如果将来想编译dosemu(DOS模拟器),则这个选项一定要选,它是一个让各个程序(process)同步且能彼此交换数据的函数库和一些系统的调用,没它,很多的程序将会无法执行。
  
    #BSD Process Accounting------
  
    #Sysctl support------除非你的内存少的可怜,否则你应该启动这个功能,启用该选项后内核会大8K,但能让你直接改变内核的参数而不必重新开机。
  
    #Kernel support for A.OUT binaries ------a.out的执行文件是比较古老的可执行码,用在比较早期的UNIX系统上。Linux最初也是使用这种码来执行程序,一直到ELF格式的可执行码出来后,有愈来俞多的程序码随着ELF格式的优点而变成了ELF的可执码。将来势必完全取代a.out格式的可执行码。但目前由于沿有许多的程序还没有取代过来,所以只好选择Y,等将来有一天,全部的程序都变成了ELF的天下时,那时再disable掉。
  
    #Kernel support for Linux/Intel ELF binaries ------由上所述,这个当然y哩,因为目前gcc-2.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 JAVA binaries ------ 这一项是正在做测试中的产品,但是如果想写有关Java的程序,希望它能在Linux的机器上跑。那么,可以选择把它编成一个模块或是直接把它编进核心里。
  
    #Power Management support ------电源管理支持。
  
    ##Advanced Power Management BIOS support------高级电源管理BIOS支持。这通常是用在笔记本电脑上的东西,如果您有APM的BIOS,支持省电的设备的(有电池的那种),那么您可以选上这项,一般人这一项是选n,以避免一些可能会发生的问题。后有8个选项。

摘要:可以用来启动无线网络的基本支持,目前的无线网络可以通过公众频率传输数据,如果你有此类设备就可以启用,具体请参考AX25和HAM HOWTO 文档。
  12. Amateur Radio support 业余无线广播
  
    可以用来启动无线网络的基本支持,目前的无线网络可以通过公众频率传输数据,如果你有此类设备就可以启用,具体请参考AX25和HAM HOWTO 文档。
  
    13. IrDA(infrared)support红外支持
  
    14. ISDN subsystem
  
    如果使用ISDN上网,这个就必不可少了。ISDN(Integrated Services Digital Network),它的中文名称是综合数字服务网络,是一个利用电话线,把声音,影片信息以数字的方式传送的数字网络,它需要电话交换机设备有支持ISDN,这通常需要电信局来做安装,对于在家工作的人来说,ISDN可能是最舒适最便宜的一种方式,因此有愈来愈多的人使用它。不过,除非是公司,不然一般人很少会使用到ISDN的,所以这部分的选项大都选N。如果您选择Y,则下面会出现一些有关ISDN的问题。如果需要用到ISDN,可以去看看杂志的介绍。只要是有关网络的杂志应该都会有介绍。还需要启用Support synchronous PPP选项(参考PPP over ISDN)。
  
    15. Old CD-ROM drivers(not SCSI、 IDE)非SCSI/IDE口的光驱
  
    如用IDE的CD-ROM,不选。
  
    以下是选择非 IDE/ATAPI和 SCSI界面的光驱,这些光驱通常有自己专属的接口卡也是比较旧型的光驱类型。如果有这些光驱,则这个选项要选y,否则选n。如果您选择n,则会跳过以下光驱的选项。
  
  Aztech/ orchid/okano/Wearnes/IXC/CyDROM CDROM support
  Goldstar R420 CDROM support
  Matsllshita/panasonic/Creative,longshine,TEAC CDRW Support
  Mitsllmi(no XA/MUltisessIon) CDROM Support
  Mitsumi(XA/Multisession) CDROM support
  optics Storage DCLPHIN 8000AT CDROM support
  Philips/LMS CM206 CDROM support
  Sanyo CDR-h94A CDROM sunnort
  Soft configurable CDROM interface card support
  Sony CDU3lA CDROM sunnort
  Sony CDU535 CDROM support
  
    16. Character devices字符设备
  
    所谓字符设备通常是指以字符为单位做处理的设备,例如终端机就是其中一项。原则上,我们对于这些选项的选择也是以预设为主。这个内容又太多了,先使用缺省设置,需要的话自己就修改。把大类介绍一下吧:
  
    #Virtual terminal ------ 选择“y”,内核将支持虚拟终端。
  
    #Support for console on virtual terminal------选择“y”,内核可将一个虚拟终端用作系统控制台。
  
    #Standard/generic (dumb) serial support-------选择“y”,内核将支持串行口。标准序列接口的选定。如果您是用serial的鼠标(大部分的人都是用这个),或是MODEM的话,则这一项一定要选。大部分的人这一项都选y。
  
    #Support for console on serial port------选择“y”,内核可将一个串行口用作系统控制台。
  
    ##I2C support------I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面的Video For Linux,该项必选。
  
    #Mice鼠标。现在可以支持总线、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad------根据需要选择。非串行的鼠标,支持象PS/2。看一看你鼠标的键。许多双键鼠标是PS/2,即使它们的连接看起来象串行的.。
  
    #PS/2 mouse (aka "auxiliary device") support ------- 如果用户使用的是PS/2鼠标,则该选项应该选择“y”。
  
    #Joysticks------手柄。即使在Linux下把手柄驱动起来意义也不是太大,游戏太少了。
  
    #Watchdog Cards:虽然称为Cards,这个可以用纯软件来实现,当然也有硬件的。如果你把这个选中,那么就会在你的/dev下创建一个名为watchdog的文件,它可以记录你的系统的运行情况,一直到系统重新启动的1分钟左右。有了这个文件,你就可以恢复系统到重启前的状态了。
  
    #Video For Linux------支持有关的音频/视频卡。
  
    ##Ftape, the floppy tape device driver---  
  
    #Digiboard PC/Xx Support------这是一张叫 Digiboard PC/XX卡的 driver,这种卡上面有很多个 serial port的插槽(一般来说只有两个),可以用来连接很多个MODEM,在民间的BBS站很常用到,如果您有这样的东西,您必须选这项为y。有兴趣的读者可以读读Documentation/digiboard.txt的内容。
  
    #Cyclades async mux support------同上,这也是一种能接很多个serial port插槽的卡的驱动程序。
  
    #Stallion multlport serial support------同上,这也是其中一种卡。
  
    #SDL RISCom/8 card support------这也是其中的一个支持muti-serial卡的driver。
  
    #Parallel printer support------有打印机的或是使用到并行接口的人这一项一定要选。除非是用serial的打印机。还有如果您有使用PLIP,那么这项也请选上。
  
    #Mouse support------大部分的人这一项并不用选y。因为大部分的人是用serial的鼠标,除非有些人是用一种附有接口卡的鼠标,这时这个选项才要选上,如果您选y,则底下会列出您的BUS鼠标所用的接口卡。
  
    #support for user misc device modules------除非您有所谓的触摸式显示器或是光笔等东西,否则这一项选n。
  
    #QIC-02 tape support------非 SCSI界面的磁带机,除非您有,否则选 n。
  
    #Ftape(QIC-80/Travan)support------如果有磁带机,而这个磁带机是接在软盘控制卡上,这个选项才要选y。
  
    #Watchdog Timer support------一般人不需要这个选项,如果您选上这个选项,则您要用mknod在/dev下建一个watchdog的文件。请看Documentation/watchlog.txt的解释。
  
    #Enhanced Real Time Clock Support------关于系统上Clock的东西,您必须自己用mknod在/dev/下建立一个文件叫rtc。如此一来,在/proc/下将可以看到rtc的信息。有关于rtc的内容请看Documentation/rtc.txt。一般是选n。
  
    17. USB supprot USB支持??
    很多USB设备,比如鼠标、调制解调器、打印机、扫描仪等,在Linux都可以得到支持,根据需要自行选择。
  
    18. File systems文件系统
  
    Linux上有支持约二十几种的文件系统,有支持某个文件系统的意思是,可以存取某个文件系统的数据或是做拷贝动作。在这些文件系统中,通常的选择方法是按照原来预设的方式,不过,在其中,EXT2FS那个选项无论如何一定要选,因为那是Linux系统所使用的文件系统。其他的则依需求做选择。
  
    通常是ext2而让其余的使用模块。
  
    #Kernel automounter support------选择“y”,内核将提供对automounter的支持,使系统在启动时自动 mount远程文件系统。
  
    #Standard( minix )------新的套件不再建立 minix 文件系统,而且很多人不使用它,但是把它配置在核心里仍然是个好主意。某些″rescue-disk ″ 程序会用到它,而且仍然有许多磁片可能用 minix 文件系统,因为 minix 文件系统对于处理磁片方面是最好的。当初Linus是因为对Minix这个小型的操作系统有很深的经验,所以才写出Linux这个操作系统。Minix文件系统通常用在磁盘上,有时会用到它。
  
    #Extended fs ------ 这是扩充文件系统的第一版,现在已经不再使用。
  
    #Second extented fs------这是现在新发行的套件所广泛采用的文件系统,你可能会有其中一种。这个是linux文件系统,请务必选y,如果问我说选n会有什么后果,我也不知道。除非您能把 Linux装在 DOS的目录下。
  
    #xiafs filesystem-----这个文件系统曾经一度很普遍,但是在写这份文件时,我已经不知道有任何人在使用它了。
  
    #DOS FAT fs ------DOS FAT文件格式的支持,可以支持FAT16、FAT32。这个选项是DOS的文件系统,如果您没有选y,则下面的MSDOS,VFAT,umsdos将不会出现。
  
    #msdos------DOS文件系统的格式。如果你想要在 linux 下使用你硬盘中的 MS-DOS 分割区,或是想将用 MS-DOS 格式化的磁盘挂进来的话,回答y 。
  
    #VFAT(Windows95) fs ------windows95所支持的文件系统,是我们常说的vfat文件系统,如果您的系统中装有windows95,那么选择这个文件系统将对以让您看到windows95的长文件名。
  
    #umsdos: UNIX like fs on top of std MSDOS FAT fs ------ 如果把Linux装进DOS的一个目录下那么您则要选择这一项。不建议这样做,因为如此一来,就不能看到长文件名了。而且效率上,井不是很好。
  
    #ums-dos------相当 slick 的文件系统,它能使 MS-DOS 文件系统拥有更多的特性,像是长档名等等。这对那些不使用 MS-DOS 的人(像我)并不是很有用。
  
    #/proc------这是最 slick 的文件系统之一。它不是你硬盘分割区里的任何东西,不占用硬盘的空间,而是核心与程序之间的文件系统介面,它表示的只是内存里头的状况和各个程序执行的情形,它也记录了您硬件上配备。。许多程序工具(像″ps ″)都会用到它。如果已经将它安装好了,有空不妨试试看″cat /proc/meminfo ″或者是″ cat /proc/devices ″。有些 shells ,像是 rc ,会用 proc/s

摘要:通常,核心安装叫做vmlinuz。过去Unix使用者共同起了这名字。"z"表示压缩,"v"和"m"意思是"virtual"(虚拟)和"sticky(粘性的)",各自属于内存和磁盘管理。建议保留vmlinuz核心,直到知道它工作。
  第四节 启用内核
  
    通常,核心安装叫做vmlinuz。过去Unix使用者共同起了这名字。"z"表示压缩,"v"和"m"意思是"virtual"(虚拟)和"sticky(粘性的)",各自属于内存和磁盘管理。建议保留vmlinuz核心,直到知道它工作。
  
    为了能够使用新版本的内核,还需要做一些改动:
  
  
  #cp /usr/src/linux/System.map /boot/System.map-2.2.16
  #cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.2.16
  
  
  
    以上这两个文件是刚才编译时新生成的。下面修改/boot下的两个链接System.map和vmlinuz,使其指向新内核的文件:
  
  
  #cd /boot
  #rm -f System.map vmlinuz
  #ln -s vmlinuz-2.2.16 vmlinuz
  #ln -s System.map-2.2..16 System.map
  
  
  
    注意:要保留vmlinuz核心,以下列步骤进行
  
  
  #cp /usr/src/linux/System.map /boot/System.map-2.2.16
  #cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.2.16
  #cd /boot
  #rm -f System.map
  #ln -s System.map-2.2..16 System.map
  
  
  
    现在#vi /etc/lilo.conf,增加如下一段:
  
    image=/boot/vmlinuz-2.2.16 是设定为已经安装的核心
  
    label=linux2.2.16 则是由 lilo 用来告诉你现在要启动的是那个核心或作业系统,
  
    read-only
  
    root=/dev/hda2 则是这个特别的作业系统的根目录 /
  
    其中root=/dev/hda2一行要根据需要自行加以修改。
  
    运行:#/sbin/lilo -v 保存执行命令:lilo你将看到核心标签,第一个是星号。如果你没有看到新核心的标签或LILO出现错误,你需要重新对/etc/lilo.conf工作(看下面的LILO分析)。
  
    确认对/etc/lilo.conf的编辑无误,现在重新启动系统:
  
  
  #shutdown -r now
  
  
  
    不建议使用热启动或ctrl+Alt+del键。在一些情况下,文件系统不完全卸栽会损坏打开的文件。在LILO提示时,如果你需要启动旧的核心或使用一些参数启动,如果你没看见启动提示,你可以试用shift或ctrl键,这样启动提示就出现了。一旦出现,按tab看核心标签。输入标签和可选参数启动。通常,在/etc/lilo.conf文件指定的时间后自动启动核心。启动时,你可能看见一些出错信息就象SIOCADDR。这常常显示模块(一般是网络模块)没有引导。处理这事很简单,如果有此一错,"VFS,cannotmount root",你就不要在核心中编译适当的磁盘或文件系统支持。
  
    在机器重启后出现LILO时按TAB键,输入linux2.1.16,新内核发挥作用了。
  
    附录:LILO分析(技术性强,仅供参考)
  
    第一部分 LILO介绍
  
    LILO(Linux Loader)是Linux自带的一个优秀的引导管理器,使用它可以很方便地引导一台机器上的多个操作系统。与其他常用的引导加载程序相比,LILO引导方式显得更具有艺术性,对其深入的理解,将有助于我们方便地处理多操作系统、网络引导、大硬盘及大内存等诸多棘手的问题。
  
    LILO的引导机制------众所周知,计算机的最初启动是由BIOS控制的,在对一些硬件(如:内存、键盘等)初始化之后,它会试图加载硬盘的主引导记录(MBR)或软盘的引导扇区。MBR可通过两种方式运行,其一是定位到活动分区并加载相应的引导扇区,然后由引导扇区完成该分区内操作系统的基本组件的加载;其二是直接从一指定分区中加载信息,并通过它装入任一分区的操作系统,诸如LILO、OS/2 boot loader及Partition Magic等引导加载程序都可以配置成这种方式。软盘的引导扇区相当于硬盘活动分区的引导扇区,它通常用于装入软盘上的操作系统。由此可见,只要把LILO安装在MBR、活动分区或者引导软盘上,就能接管计算机的控制权,然后由LILO完成后继的引导过程。LILO中建有一个引导表地址编码,借此它的引导程序就能定位到Linux的内核文件,这种地址编码既可以按照柱面/磁头/扇区(CHS)模式,又可以采用LBA的线性块号模式,因此,即使对某些SCSI控制程序LILO也能运转良好。
  
    当LILO定位到配置文件后,经过预引导过程,就显示提示符: LILO boot:   
  
    此时,系统允许选择引导不同的操作系统或者不同的内核配置,按Tab键显示可选项列表,然后输入可选项或者直接回车选择缺省配置,如果选择了引导Linux,还可以直接传递参数到系统内核。  
  
    和其他系统的引导加载程序相比,LILO具有更大的灵活性,其引导方式也更丰富多彩。
  
    ●当LILO被安装在硬盘的MBR、活动分区或引导软盘上时,作为原引导程序的替身,它能引导任一硬盘任一分区上的Linux和其他操作系统;除了引导扇区,它没有任何隐含文件,也不需要使用特定的分区,它的配置文件可以在任何分区、甚至是存放在与Linux毫不相干的DOS分区的某个子目录下;它能引导几个不同的内核配置,甚至是几个不同的内核; 它能引导同一机程序上的多个Linux版本;可达16个。 
  
    ●它能从网络上引导Linux。
  
    ●LILO的灵活性使得其配置变得相当复杂,当有多个系统共存时,建议先安装其他操作系统,最后再装Linux,这样,设置LILO对其他系统的引导会相对简单一些。 
  
    第二部分 LILO参数
  
    通常我们谈到LILO,会涉及到两个方面――LILO引导程序和LILO安装命令/sbin/lilo。
  
    为了不至于混淆这两个概念,本文将用LILO表示LILO引导程序,而lilo表示/sbin/lilo。一般地,LILO使用一个文本文件/etc/lilo.conf作为其配置文件。lilo读取lilo.conf,按照其中的参数将特定的LILO写入系统引导区。任何时候,修改了/etc/lilo.conf,都必须重新运行lilo命令,以保证LILO正常运lilo.conf使用的配置参数很多,配置起来也相当复杂。下面以RedHat Linux为例作一些初步探讨,RedHat的lilo程序包版本为0.20,别的Linux发行版本可能会有所出入,但不会太大。
  
    lilo.conf文件中的配置参数分为两部分,一部分是全局参数,另一部分是引导映像参数。引导映像参数作用于每一个引导映像区。如果某一引导映像参数(例如:password与全局参数的定义相抵触,则以该引导映像参数的定义为准,但仅限于该引导映像区。LILO的引导参数有很多,在此只对一些比较重要的参数作一介绍。与Linux系统其他的配置文件一样,“#”号后的一行文字表示注释。
  
    1.“boot=”此参数指明包含引导扇区的设备名(如:/dev/had),若此项忽略,则从当前的根分区中读取引导扇区。 
  
    2.“root=”此参数告诉内核启动时以哪个设备作为根文件系统使用,其设定值为构造内核时根文件系统的设备名,可用的设备名有:
  
    (1)/dev/hdaN~/dev/hddN:ST-506兼容硬盘,a到d上的N个分区
  
    (2)/dev/sdaN~/dev/sdeN:SCSI兼容硬盘,a到e上的N个分区
  
    (3)/dev/xdaN~/dev/xdbN:XT兼容硬盘,a到b上的N个分区  
  
    (4)/dev/fdN:软盘,A:(N=0)或B:(N=1)
  
    (5)/dev/nfs:由网络取得根文件系统的标志 
  
    3.“nfsroot=”若需通过NFS提供根文件系统来引导无盘工作站,此参数为内核指定了网络根文件系统所在的机程序、目录及NFS,其格式为:nfsroot=(〈server_ip〉:)〈root_dir〉(,nfs_options))
  
    4.“nfsaddrs=”设定网络通讯所需的各种网络界面地址,如无此参数,则内核会试图用反向地址解析协定(RARP)或启动协定(BOOTP)找出这些参数,其格式为:nfsaddrs=〈客户端IP〉:〈服务端IP〉:〈网关IP〉:〈子网屏蔽〉:〈客户端名称〉:〈网络设备名 〉:〈auto〉 
  
    5.“image=”指定Linux的内核文件。
  
    6.“delay=”设定引导第一个映像前的等待时间。 
  
    7.“disk=”此参数为某一特殊的硬盘定义非标准参数。
  
    8.“append=”为内核传递一个可选的参数行,其典型的应用是为不能完全由系统自动识别的硬盘指定参数,如:append = "hd=64,32,202"   
  
    9.“label=”此参数为每个映像指定一个名字,以供引导时选择。  
  
    10.“read-only”设定以只读方式挂入根文件系统,用于文件系统一致性检查(fsck)。
  
    11.“install=”安装一个指定文件作为新的引导扇区,缺省为/boot/boot.b。 
  
    12.“loader=”说明所使用的链加载程序(chain loader),缺省为/boot/chain.b,如果不是从首硬盘或软盘启动,那么,此选项必须说明。 
  
    13.“table=”说明包含分区表的设备名,如果此参数忽略,引导加载程序将不能传递分区信息到已引导的操作系统。当此参数指向的分区表被修改时,必须重新运行/sbin/lilo。
  
    14.“init=”内核初始化时执行的程序,通常过程为init、getty、rc和sh,版本1.3.43以来的Linux内核能够执行/sbin/init说明的命令行,若在引导过程中出现问题,则可设置init=/bin/sh直接跳到Shell。
  
    15.“ramdisk_start=”由于内核不能放在压缩的内存文件系统映像内,为使内核映像能够和压缩的内存映像放在一张软盘内,加入“ramdisk_start=〈off


你可能感兴趣的:(Linux,linux,windows,网络,documentation,compiler,dos)