打印

Linux内核编译与注释 final

Linux内核编译与注释 final

摘  要
本文介绍了Linux内核的编译与注释。由于Linux操作系统近年来的飞速发展,而内核又是一个操作系统的基本问题,因此对内核的编译部分进行了介绍,并对编译过程中的配置选项做了详细的注释,力求将常用的、实用的功能注释清楚。
对于一个操作系统,是现今计算机课题的一个大的研究方向,在Windows视窗操作系统普遍使用的今天,有必要了解其他类型的操作系统,而Linux就是其中优秀的一种。Linux操作系统采用开放内核源代码的方式,得到了全世界程序爱好者的拥护与支持。学习Linux,可以对计算机有一个较为整体的认识,对于硬件与软件如何配合工作等,一些操作系统的基本知识有一定的认识。
本文先对Linux操作系统及其内核、起源与发展等做一些背景知识介绍;而后对内核编译所需要的准备条件、编译的步骤与操作等做一定的说明;然后对内核的配置选项中,一些比较常用的、实用的功能进行了注释;而对于一些个人计算机中比较不需要的、少用的功能,则只做了概括性地说明。
内核配置,可以为你的计算机量身定做一个操作系统,让你的计算机可以更高效、更稳定地运行。

关键词:Linux、内核、内核编译、配置注释



Abstract
In this paper, we introduce how to translate and edit the Linux kernel and annotation of the kernel configuration. As the Linux operation system has developed so quickly in recent years, and the kernel is the most important part of it, we make a simple introduction to how to translate and edit the kernel as well as a detailed annotation of the kernel configuration which are used commonly and helpfully.
The operation system is one of the most important research branch of the computer science, when the Windows operation system is so rifely used, it is necessary to know other kinds of the outstanding operation system, and Linux is just one of them. As the Linux open its kernel source to the whole world, it is supported and sustained by the programming fans all over the world. To learn Linux, it is helpful to have a holistic understanding of the computer, including how the hardware and software are working together.   
  In this paper, we first introduce some background knowledge of the Linux operation system, the appearance and the development of it; then we explain what condition should be prepare before translate and edit the kernel, the process and operation of it; and then make annotation to the configuration options which are commonly and helpfully used, those seldom used options are just given a synoptically narration.
  Configuring the kernel can make a specific operation system for your own computer, and make your computer run more effectively and stably.

Keyword: Linux, kernel, translate and edit the kernel, configuration annotation
















目录
摘  要        I
Abstract        II
第一章  Linux简介        1
1.1 Linux简介与特性、        1
1.2 Linux的起源与发展        3
1.3 Linux的发行版本        4
本章小结:        5
第二章 Linux内核与内核编译        6
2.1 内核简介        6
2.2 内核版本号        6
2.3 为什么要重新编译内核        7
2.4 内核编译模式        7
2.5 内核编译前的准备工作        7
2.6 内核编译的步骤        8
本章小结:        12
第三章 内核配置注释        13
3.1 Code maturity level options(代码成熟度选项)        13
3.2  Loadable module support (可加载模块选项)        13
3.3  Processor type and features(处理器类型与特性)        14
3.4  General setup(常用设置)        15
3.5  Memory Technology Device(MTD)(存储技术设备支持)        18
3.6  Parallel port support(并口支持)        18
3.7  Plug and Play configuration(即插即用配置)        18
3.8  Block devices(块设备)        18
3.9  Multi-devices support(多设备支持)        19
3.10  Networking options(网络选项)        21
3.11  Telephony support(电话通信支持)        24
3.12  ATA/IDE/MFM/RLL support(硬盘、光驱接口支持)        24
3.13  SCSI support(小型计算机系统接口支持)        26
3.14  Fusion MPT device support        27
3.15  I20 device support(智能输入输出设备支持)        27
3.16  Network devices support(网络设备支持)        28
3.17  Amateur radio support(业余无线电支持)        30
3.18  IrDA (infrared) support(配置红外线(无线)通讯支持)        30
3.19  ISDN subsystem(综合服务数字网)        30
3.20  Old CD-ROM drivers(not SCSI not IDE)(旧式光驱支持)        30
3.21  Input core support (输入核心支持)        30
3.22  Character devices(字符设备支持)        31
3.23  Multimedia devices(多媒体设备)        33
3.24  Files System support(文件系统支持)        33
3.25  Console drivers(控制台设备)        37
3.26  Sound(声音配置)        37
3.27  USB support(通用串行总线架构支持)        37
3.28  Kernel hacking(内核破解)        39
本章小结:        39
结束语        40
参考文献        41
致谢        42

TOP

第一章  Linux简介
1.1 Linux简介与特性、
Linux是一套免费使用和自由传播的类Unix操作系统,它速度快,运行稳定,对硬件的配置要求低,兼具了其他操作系统的优点,最关键是可以免费使用,所以近几年内Linux得到了迅猛地发展。说到Linux,不得不提起UNIX。由于UNIX的庞大的支持基础和发行系统,使得它(指UNIX)成为世界范围内最有影响和最广泛使用的操作系统之一。起初UNIX是作为小型机和大型机上的多任务系统而开发的,尽管它有一些含糊不清的接口和缺少标准化等缺点,但是它仍然很快地发展成为广泛使用的操作系统。
许多计算机爱好者感到UNIX正是他们想要的东西。但是由于商业版UNIX非常昂贵,而且源代码是有专利的,所以很难在计算机爱好者中广泛使用。于是,出现这样一群人,他们是一支由编成高手、业余计算机玩家、黑客们组成的奇怪队伍,完全独立地开发出一个在功能上毫不逊色于商业UNIX操作系统的全新免费UNIX操作系统——Linux。
Linux操作系统在短短的几年之内得到了非常迅猛的发展,这与Linux具有的良好特性是分不开的。Linux包含了Unix的全部功能和特性。简单的说,Linux具有以下主要特性:
1 开放性
开放性是指系统遵循世界标准规范,特别是遵循开放系统互连(OSI)国际标准。凡遵循国际标准所开发的硬件和软件,都能彼此兼容,可方便地实现互连。
2 多用户
多用户是指系统资源可以被不同用户各自拥有使用,即每个用户对自己的资源(例如:文件、设备)有特定的权限,互不影响。Linux和Unix都具有多用户的特性。
3 多任务
多任务是现代计算机的最主要的一个特点。它是指计算机同时执行多个程序,而且各个程序的运行互相独立。Linux系统调度每一个进程平等地访问微处理器。由于CPU的处理速度非常快,其结果是,启动的应用程序看起来好像在并行运行。事实上,从处理器执行一个应用程序中的一组指令到Linux调度微处理器再次运行这个程序之间只有很短的时间延迟,用户是感觉不出来的。
4 良好的用户界面
Linux向用户提供了两种界面:用户界面和系统调用。Linux的传统用户界面是基于文本的命令行界面,即shell,它既可以联机使用,又可存在文件上脱机使用。shell有很强的程序设计能力,用户可方便地用它编制程序,从而为用户扩充系统功能提供了更高级的手段。可编程Shell是指将多条命令组合在一起,形成一个Shell程序,这个程序可以单独运行,也可以与其他程序同时运行。系统调用给用户提供编程时使用的界面。用户可以在编程时直接使用系统提供的系统调用命令。系统通过这个界面为用户程序提供低级、高效率的服务。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚动条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化 面。
5 设备独立性
设备独立性是指操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱动程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而不必知道它们的具体存在形式。具有设备独立性的操作系统,通过把每一个外围设备看作一个独立文件来简化增加新设备的工作。当需要增加新设备时、系统管理员就在内核中增加必要的连接。这种连接(也称作设备驱动程序)保证每次调用设备提供服务时,内核以相同的方式来处理它们。当新的及更好的外设被开发并交付给用户时,操作允许在这些设备连接到内核后,就能不受限制地立即访问它们。设备独立性的关键在于内核的适应能力。其他操作系统只允许一定数量或一定种类的外部设备连接。而设备独立性的操作系统能够容纳任意种类及任意数量的设备,因为每一个设备都是通过其与内核的专用连接独立进行访问。Linux是具有设备独立性的操作系统,它的内核具有高度适应能力,随着更多的程序员加入Linux编程,会有更多硬件设备加入到各种Linux内核和发行版本中。另外,由于用户可以免费得到Linux的内核源代码,因此,用户可以修改内核源代码,以便适应新增加的外部设备。
6 供了丰富的网络功能
完善的内置网络是Linux的一大特点。 Linux在通信和网络功能方面优于其他操作系统。其他操作系统不包含如此紧密地和内核结合在一起的连接网络的能力,也没有内置这些联网特性的灵活性。而Linux为用户提供了完善的、强大的网络功能。支持Internet是其网络功能之一。Linux免费提供了大量支持Internet的软件,Internet是在Unix领域中建立并繁荣起来的,在这方面使用Linux是相当方便的,用户能用Linux与世界上的其他人通过Internet网络进行通信。文件传输是其网络功能之二。用户能通过一些Linux命令完成内部信息或文件的传输。远程访问是其网络功能之三。Linux不仅允许进行文件和程序的传输,它还为系统管理员和技术人员提供了访问其他系统的窗口。通过这种远程访问的功能,一位技术人员能够有效地为多个系统服务,即使那些系统位于相距很远的地方。
7 可靠的系统安全
Linux采取了许多安全技术措施,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。
8 良好的可移植性
可移植性是指将操作系统从一个平台转移到另一个平台使它仍然能按其自身的方式运行的能力。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。可移植性为运行Linux的不同计算机平台与其他任何机器进行准确而有效的通信提供了手段,不需要另外增加特殊的和昂贵的通信接口。
1.2 Linux的起源与发展
Linux作为一个PC机上的一种32位Unix操作系统出现,是1991年下半年的事情。当时,年仅23岁的大学生Linus Torvalds写这个操作系统的时候是为了作一个试验,写一个比当时流行的MINIX操作系统具有更多功能,更成熟的小型操作系统。虽然最初的Linux系统很小,功能也不多,但是,随着Internet的发展,Linux系统也被来自世界各地的数以千计的人(高手)不断扩充和完善,今天,Linux在很多方面已经领先了商业性的Unix系统。它可以运行在包括Intel处理器、Motorola的M68k处理器及DEC的Alphas等多种硬件平台, 是真正的多用户、多任务的32位操作系统。像现代Unix操作系统那样,它也具有虚拟内存、共享库、命令装载、执行代码之间共享的拷贝-执行-写盘页操作、恰当的内存管理和TCP/IP网络等。
Linux是一个遵循POSIX(Portable Operating System Interface)标准的免费操作系统。具有BSD和System V的扩展特性(表明其在外表和性能上同常见的UNIX非常相像,但是所有系统核心代码已经全部被重新编写了)。它的版权所有者是芬兰籍的Linus Torvalds先生和其他开发人员,并且遵循GPL声明(GNU General Public License——GNU通用公共版权协议)。
Linux的许多其它应用程序是由自由软件基金会(FSF)开发的。全世界许多热心的使用者为Linux开发或者移植了许多应用程序,包括X-Windows、Emacs、TCP/IP网络(包括 SLIP/PPP/ISDN)等等,现在Linux(包括内核和大量的应用程序)光是执行程序已经达到200M的规模,完全安装以后的规模将更大(大约500M左右)。
使用Linux可以在相对低价的Intel X86硬件平台上实现高档系统才具有的性能,许多用户使用benchmarks在运行Linux的X86机器上测试,发现可以和Sun和Digital公司的中型工作站的性能媲美。事实上不光是许多爱好者和程序员在使用Linux,许多商业用户比如Internet服务供应商(ISP)也使用Linux做为服务器代替昂贵的工作站。这些服务器的最高记录是经过600天的运行没有碰到一次系统崩溃!
在Linux上可以运行大多数UNIX程序:TeX,X-Window系统,GNU C/C++编译器……它让用户在家中就可以享受UNIX的全部功能。如今有越来越多的商业公司采用Linux作为操作系统,例如,科学工作者使用Linux来进行分布式计算;ISP使用Linux配置Internet服务器、电话拨号服务器来提供网络服务;CERN(欧洲核子中心)采用Linux做物理数据处理;美国1998年1月最卖座的影片《泰坦尼克号》片中的计算机动画的设计工作就是在Linux平台上进行的。更为有趣的是,1997年把年度最佳技术支持奖颁给了Linux,给批评自由软件没有良好服务的人好好地上了一课。越来越多的商业软件公司宣布支持Linux,如Corel和Borland公司。在国外的大学中很多教授用Linux来讲授操作系统原理和设计。当然,对于大多数用户来说最重要的一点是,现在我们可以在自己家中的计算机上进行UNIX编程,享受阅读操作系统的全部源代码的乐趣!
正是Linux具有功能强大,性能出众,稳定可靠的操作系统,吸引着越来越多的使用者来使用它,测试修改软件中的错误。在短短的几年时间里Linux以超常的速度发展,已经从一个丑小鸭变成一个拥有广大用户群的真正优秀的、值得信赖的操作系统。根据不精确的统计,全世界使用Linux操作系统的人已经有数百万之多(这一数字还在以惊人的速度增加着),而且绝大多数是在网络上使用的。而在中国,随着Internet大潮的卷入,一批主要以高校的学生和ISP的技术人员组成的Linux爱好者队伍也已经蓬勃地成长起来。可以说在中国,随着网络的不断普及,免费而性能优异的Linux操作系统必将发挥出越来越大的作用。
1.3 Linux的发行版本
一些组织或厂家为了方便用户使用,将Linux系统内核与应用软件及文档包装在一起,并提供一些安装界面和系统设定与管理工具,这就构成了一个发行套件。相对于内核版本,发行套件的版本号是随着发布者的不同而不同,与系统内核的版本号是相对独立的。
1、Slackware Linux
这是最早出现的Linux发行套件。它比较适合有经验的Linux老手,对于那些想学习系统是怎么工作的并想安装和编译他们自己的软件的人说这是最好的。不过,现在使用这一套件的人越来越少了。不建议大家使用。
2、RedHat Linux
这是最风行的一种发行套件。其因为采用一个头带红帽子的人作为吉祥物而得名。它一度成为Linux的代名词。它支持的硬件平台多,具有优秀的安装界面,独特的RPM升级方式,丰富的软件包,安全性能好,方便的系统管理界面。这是很优秀的一个套件。现在最常见的有6.2、6.5、7.0、7.1四个版本,目前的最新版本是9(2005年5月),它比较稳定。而本文所使用的Linux就是Redhat 9。
3、Debian Linux
基于标准LINUX内核,包含了数百软件包,如GNU软件,TeX,X Windows系统等。每一个软件包均为独立的模块单元,不依赖于任何特定的系统版本,每个人都能创建自己的软件包。Debian Linux是一套非商业化的由众多志愿者共同努力而成的Linux。  
4、Mandarke Linux
它的图标是一个黑色的魔术帽,它其实参照了Redhat的基础上制成的,它继承了许多Redhat的优点,还加上了许多迎合Linux初学者的功能,如美丽的图形化安装界面。7.0版本开始走向成熟,赢得了不少用户。而且现在刚推出的版本,使得Mandarke一举坐上了Linux发行版第一的宝座。刚从Windows中走出来的朋友,可以一试。挺不错的。
5、BluePoint Linux
这做得比较成功的一款中文Linux发行版,蓝点还是挺有创新,挺挖得深的一个Linux厂商。但是其稳定性不是太好,比较适于桌面,而不适于做服务器。
6、Turbo Linux
一款做得还不错的中文Linux发行版,企业应用推广较好,逐渐成长为一个成熟的Linux发行版。
7、红旗Linux
(红旗Linux)是Linux的一个发展产品,由中科红旗软件技术有限公司开发研制的以 Intel和Alpha芯片为CPU构成的服务器平台上第一个国产的操作系统版本。它标志着我国在发展国产操作系统的道路上迈出了坚实的一步。 相对于Windows操作系统及Unix操作系统来讲,Linux凭借其开放性及低成本,已 经在服务器操作系统市场获得了巨大发展。但由于其操作界面复杂,一时难以让普通 PC用户接受。GNOME是GNU组织中专门开发桌面环境的项目。GNOME作为开放源代码的 软件开发成果,基于兼容性良好的CORBA技术,与Linux系统相辅相成,带给用户更加 友好的界面,更多的使用、检查、修改及分发自由。与同是开放源代码图形用户界面 的KDE相比较,GNOME表现得更能减轻其他公司创建Linux桌面应用的劳动。GNOME已经 成为业内人士普遍看好的一个趋势性软件。继服务器版1.0、桌面版2.0、嵌入式Linux之后,红旗最近又推出了新产品--红 旗服务器2.0和红旗网络商务通等多种发行版本和相关。
本章小结:
本章主要介绍了Linux的一些基本知识,包括简介与特性、起源与发展、发行版本等。为下文进一步介绍Linux的内核提供做一些铺垫。

TOP

第二章 Linux内核与内核编译
2.1 内核简介
  内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
  Linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源程序代码。全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。而Linux的内核则是这些特点的最直接的代表。
拥有了内核的源程序意味着很多东西。首先,我们可以了解系统是如何工作的。通过通读源代码,我们就可以了解系统的工作原理,这在Windows下简直是天方夜谭。其次,我们可以针对自己的情况,量体裁衣,定制适合自己的系统,这样就需要重新编译内核。在Windows下是什么情况呢?相信很多人都被越来越庞大的Windows整得莫名其妙过。再次,我们可以对内核进行修改,以符合自己的需要。这相当于自己开发了一个操作系统,但是大部分的工作已经做好了,你所要做的就是要增加并实现自己需要的功能。在Windows下,除非你是微软的核心技术人员,否则就不用痴心妄想了。
2.2 内核版本号
由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。Linux的开发采用的是集市模型(bazaar,与cathedral――教堂模型――对应),为了确保这些无序的开发过程能够有序地进行,Linux采用了双树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(development tree)。一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。开发数就体现在源程序的版本号中;源程序版本号的形式为x.y.z:对于稳定树来说,y是偶数;对于开发树来说,y比相应的稳定树大一个数(因此是奇数)。到目前(2005年5月底)为止,稳定树的最高版本是2.6.11。下载内核版本请访问http://www.kernel.org

2.3 为什么要重新编译内核
  Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。
  通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是 Linux使用者的必要操作内容。
  为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:
  自己定制编译的内核运行更快(具有更少的代码)
  系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)
  不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞
将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些
2.4 内核编译模式
要增加对某部分功能的支持,比如网络之类,可以把相应部分编译到内核中(build-in),也可以把该部分编译成模块(module),动态调用。如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在,这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块。
2.5 内核编译前的准备工作
首先是对自己机上的比较重要的数据进行备份,如刻录成光盘,之后安装一个Linux系统,本文以Redhat 9为例(但不涉及如何安装),接下来是安装软件gcc-2.95.3(这是一个编译器,比较适合于编译内核用),再就是要收集自身计算机上硬件的信息(这一点很重要,因为下文中的许多选项都与这有关):如CPU类型、内存容量、主板插槽以及相应网卡、声卡、显卡的设备生产型号和相应参数、显示器型号、鼠标键盘接口类型等所有设备。

2.6 内核编译的步骤
Linux内核版本发布的官方网站是http://www.kernel.org。新版本的内核分两种,一种是Full Source版本,另外一种是patch文件,即补丁。完整的内核版本比较大,一般是 tar.gz或者是.bz2文件,二者分别是使用gzip或者bzip2进行压缩的文件,使用时需要解压缩。patch文件则比较小,一般只有几十K到几百K,但是patch文件是针对于特定的版本的,你需要找到自己对应的版本才能使用。
编译内核需要root权限,以下操作都假定你是root用户。请把你需要升级的内核拷贝到/usr/src/下(下文中以2.4.18的内核的linux-2.4.16.tar.gz为例)
让我们先来查看一下当前/usr/src的内容,注意到有一个linux-2.4的符号链接,指向一个linux-2.6.20-8(以REDHAT9为例)的目录。这就是你所装Linux的kernel源代码,删除这个链接。
现在解压我们下载的源程序文件。

文件将解压到/usr/src/linux目录中,我们把它稍作修改:

进行相应的目录



该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。由于我们使用刚下载的完整的源程序包进行编译,所以本步可以省略。而如果你多次使用了这些源程序编译内核,那么最好要先运行一下这个命令。
接下来的内核配置过程比较烦琐,但是配置的适当与否与日后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 menuconfig的时候,一些选项会有一个字母被标亮,这个字母就是这个选项的快捷键,按下对应的键就可以在Y、N、M(如果有的话)之间切换,方便操作。
在编译内核的过程中,最烦杂的事情就是这步配置工作了,很多新手都不清楚到底该如何选取这些选项。实际上在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。
如果配置完成之后,会有一个保存的提示,你可以将这次的配置保存下来,如要做一些细小的修改,可以在下次配置时加载这次的配置文件,文件将保存到/usr/sr/linux/arch/i386这个目录下,默认文件名为defconifg,也可以根据需要改名。
当配置完所有需要的选项并保存了之后,就可以退出配置模式了。此时会有提示“下一步你需要使用的是make dep操作”,接下来你可以一一起执行以下几下指令:
#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命令加载模块时就能正确地定位模块。
经过以上的步骤,我们终于得到了新版本的内核。为了能够使用新版本的内核,我们还需要做一些改动:

以上这两个文件是我们刚才编译时新生成的。下面修改/boot下的两个链接System.map和vmlinuz,使其指向新内核的文件:

注意,其中的make modules_install用的是下划线,很多初学者会搞错用成了-破折线。
接下来就是要修改启动引导器GRUB了。可以使用如下指令来修改grub文件

添加如下的内容

注意:第二行的hd0,2中的2和第三行中的hda3的3,要根据你的Linux系统所装的分区序数而定。
    添加完毕之后再重启,就可以在GRUB的引导界面看到新添加的项目nk (2.4.16)了。
本章小结:
  本章主要介绍了Linux内核的相关内容:内核的简介、版本号、编译的原因、模式、准备工作、步骤等。为下一章的配置选项注释作了一些必要的前提说明。
附件: 您所在的用户组无法下载或查看附件

TOP

第三章 内核配置注释
需要指出的是,在这里只对一些常用的,并且内容比较少的,非专业需要的内容进行了注释,如一些比较少用的选项则不进行进一步的具体注释。有些则是对一些涉及的内容进行一定的基础说明及简介等,并不深入介绍相关的技术与内容。这部分内容是按照内核2.4.16的版本来进行的。

3.1 Code maturity level options(代码成熟度选项)
Prompt for development and/or incomplete code/drivers

我们从内核的版本号就已经知道内核发展是两条路线的,其中奇数号测试的内容,如文件系统、驱动程序、网络协议等,这些内容被称为alpha-test(阿尔法测试),你可以允许内核的一些试验选项(experimental options),但这些功能还不是很完整与安全,也存在一些漏洞与风险。如果想使用这些功能的话,此选项就应该选上。如果不是热衷于新功能的测试与发展或有特殊用途,一般不选。

3.2  Loadable module support (可加载模块选项)
可加载模块是指内核代码(kernel code)的一些片断,比如驱动程序,当编译内核的时候它们也被单独编译(make modules;make modules_install)。因此,这些代码不是内核的一部分,但是当你需要它的时候,它可以被加载并使用。通常的建议是如果可能,将内核代码编译成可加载模块,因为这样可以使内核更小,而且更稳定。注意:有些选项不可以编译成可加载模块,例如文件系统(file system),若将此选项编译成可加载模块,结果将是内核无法读取它自己的文件系统,然后内核无法加载它自己的配置文件,一些很明显是在正常启动Linux时所必需的东西。

Enable loadable modules support可加载模块支持

如果你有编译可加载模块,又想要使用它们的话,就要选上这个选项。

Set version information on all symbols for modules设置模块版本信息

通常,当你切换到其他内核时模块会被重新编译,这里选上的话可以在你编译一个新内核后安全地重新使用原来的旧模块,需要用到modprobe程序(模块需要的软件在Documentation/Changes中)。注意:如果你选此项但没有genksyms程序的话,你的内核将无法建立。如果你的模块是建立在没有内核的基础上的话,这个选项会对你有帮助。通常用户不选此项。

Kernel module loader support内核模块加载支持

正常情况下你选择了一些驱动程度或文件系统做为可加载模块时,你在使用这些模块之前也有必要加载相应的模块(通过程序insmod或者modprobe)。这里选此项的话,内核将会自动为自身加载模块:当部分内核需要模块时,它会根据相应参数调用modprobe程序加载可用的模块。通常此项应选上。

3.3  Processor type and features(处理器类型与特性)
Processor family处理器类型选择

这里的选项包括:386, 486, 586/K5/5x86/6x86/6x86MX

Pentium-Classic, Pentium-MMX, Pentium-Pro/Celeron/Pentium-II,

Pentium-III/Celeron(coppermine), Pentium-4,

k6/k6-II/k6_III, Athlon/Duron/k7,

Crusoe, Winchip-C6,  Winchip-2,  Winchip-2A/ Winchip-3, CyrixIII/C3

根据自己的CPU类型进行选择,如我的是AMD Duron 1G,所以选择Athlon/Duron/k7

Toshiba Laptop support这个选项是针对Toshiba笔记本的,可以用来访问Toshiba的系统管理模式,也就是可以直接设置BIOS。不过要注意它只在Toshiba自己的 BIOS中起作用。

Dell Inspiron 8000 support戴尔处理器支持,与上一项基本相同

/dev/cpu/microcode – Intel IA32 CPU microcode suppot这个选项将让你可以更新Intel IA32系列处理器的微代码,当然你还必须在文件系统选项(下文将有讲述)中选择devfs才能正常的使用它。如果你把它译为模块,则还需要在modprobe.conf中加上这一行alias char-major-10-184 microcode。 内核本身并不带有微代码的二进制文件

/dev/cpu/*/msr – Model-specific Register support这个选项桌面用户一般用不到,它主要用在Intel的嵌入式CPU中的,这个寄存器的作用也依赖与不同的CPU类型而有所不同,一般可以用来改变一些CPU原有物理结构的用途,但不同的CPU用途差别也很大。

/dev/cpu/*/cupid – CPU information support这会在/dev/cpu中建立一系列的设备文件,让进程去访问指定的CPU。

以上5项为特有品牌处理器,如用户装有这种处理器则对应选择,一般用户不选。

High memory support大容量内存支持

可以支持4G、64G,用户根据自身机器硬件选择。现在流行PC内存容量多为256M或512M,所以此项一般选为OFF。

Math emulation数学协处理器仿真

在你的CPU上如果没有数学协处理器的话,打开这个选项可以让内核模拟一个,以提升浮点计算能力。协处理器是386时代的产物,现在大多数处理器已经内嵌了浮点运算功能,此选项一般不选。

MTTR (Memory Type Range Register)Support内存类型范围寄存器

在Intel p6家族的处理器中(Ppro、 PII和更新的)有一个内存类型范围寄存器,可用来控制处理器访问的内存范围。打开它一般可以提升显卡的显示性能,运行X windows等,所以可以选上此项。

Symmetric multi-processing support对称多处理器支持

如果你装有对称多处理器,则应选上此项。如果是多处理器而又不选此项,则系统会只使用其中的一个处理器。注意:如果你选了此项,并在之前的Processor family中选择了586或Pentium,则内核不会在486架构上运行。类似地,基于Ppro架构的多处理器内核可能无法工作在所有Pentium主板上。若选此项,在接下来的Enhanced Real Time Clock Support也应选上,而Advanced Power Management则变为不可选。一般单处理器用户不选此项

Local APIC support on uniprocessors内嵌高级可编程中断控制器

APIC是Advanced programmable interrupt controller(高级可编程中断控制器)的缩写。如果你的CPU中集成了这个控制器,选上此项的话就可以激活和使用该功能。若你用的是多处理器,则此项不必选,因为系统会自动使用这项功能。

3.4  General setup(常用设置)
这里是最普通的一些属性与性能的设置。

Networking support网络支持

Linux的发展离不开网络,因此此项一般选上。注意:对于部分不能上网的用户,也建议选上此项,因为内核中的一些功能会与网络设置有关联,若不选可能会使内核工作不稳定。

PCI support周边元件扩展接口支持

PCI是Peripheral Component Interconnect的缩写。现今绝大多数主板都使用PCI插槽,此项一般选上。

PCI access mode PCI存取模式

检测PCI插槽上的硬件设备信息。有三个选择:BIOS、Direct和Any,前两项分别对应两种不同的存取方式。选Any系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备。此项建议选Any。

PCI device name database PCI设备的名称数据库

将PCI设备的名称数据库整合到内核,以便在/proc/pci中提供设备名称。视自身情况而选择。

EISA support 扩展工业标准结构支持

EISA是Extended Industry Standard Architecturer的缩写,是ISA是高级版本。有些主板现在还有这类插槽,但已经逐渐被淘汰,视自身主板设备情况而选择。

MCA support 微通道结构支持

MCA是MicroChannel Architecture的缩写。也是逐渐被淘汰的插槽,视自身主板设备情况而选择。

Support for hot-pluggabel devices热插拔设备支持

一般来讲只有服务器上会有热插拔的设备,如果你使用的是台式机,你可以不选择此项并跳过这一部份。

PCMCIA/CardBus support PCMCIA插槽支持

PCMCIA是Personal Computer Memory Card International Association的缩写,是一个电脑制造商的公会。它们制定了使用在笔记型电脑上信用卡状的通用转接卡的型式。如果你的是笔记本移动电脑,并有这样的插槽,则应选上此选项。对于台式机则不必选。若选择了的话,就会有如下芯片组扩展选项:

CardBus yenta-compatible bridge support (NEW)

i82092 compatible bridge support

i82365 compatible bridge support

Databook TCIC host bridge support

不同产家的PCMCIA芯片的驱动支持,如果你知道你的笔记本用的是什么芯片组的话,可以只选它而不选其它的。要是你不知道可以全部地选上,然后用modprobe一种一种的试。

注意:

16-bit PCMCIA support,16位的PCMCIA总线支持。

32-bit CardBus support,32位的PCMCIA总线支持,通常也叫PCMCIA II总线。

PCI hotplug support PCI热挺拔支持

如果你需要常更换PCI插槽上的硬件,则此项应选。

System V IPC进程间通讯

为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选上的情况下才能运行,所以不用考虑,这里一定要选。

BSD Process Accounting

这里选择将会让内核为用户层的进程建立一个帐目(进程通过一个特殊的系统调用来通知内核),当程序退出时内核会将进程的相关信息记录到帐目文件中,主要包括进程的创建时间、 创建者,内存占用等信息。如果用户需要就选上。

注意:BSD是一种软件许可证,是Berkeley Source Distribution的缩写。System V和BSD是Unix发展的两个不同的分支。Redhat属于System V分支。

Sysctl support

这将提供一个接口让你可以动态的更改一些核心参数与变量,而不需要重新启动系统。如果你的内核仅用制作安装与恢复系统系统盘,那么可以不选,以减少对内存的占用。

Kernel core (/proc/kcore) format

此处可选ELF或是A.out两种格式。

Kernel support for a.out binaries这是早期UNIX系统的可执行文件格式,目前已经被ELF格式取代。

Kernel support for ELF binaries ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台。ELF是excutive linked file的缩写,是一种为Linux系统所采用的通用文件格式,支持动态连接。

Kernel support for MISC binaries此选项允许插入二进制的封装层到内核中,当使用Java、.NET、Python、Lisp等语言编写的程序时非常有用。

Power Management support电源管理支持

如果你想让你的Linux支持高级电源管理(也就是平常我们说的软关机、系统休眠等)需要选择它,特别是笔记本电脑。

Advanced Power Management BIOS support高级电源管理BIOD支持

一般来说笔记本应该选上,台式机可以不选。APM为Advanced Power Management的缩写。接下来有一些细节选项:

Ignore User Suspend只有NEC Versa M系列的笔记本需要选择这一项。

Enable PM at boot time启动时支持电源管理,选上这个选项能让系统自动的进行电源管理,除非在启动时死机,才不要选这项。

Make CPU Idle calls when idle系统空闲时调用空闲指令。只有老式的CPU才用这项。其实调用空闲指令还是让CPU执行了一条指令。这个选项在内核循环中调用空闲指令。

Enable console blanking using APM支持关闭监视器。据说这项功能对所有的笔记本都无效。如果按建议配置,系统是能自动休眠的(使用ACPI)。用户则不用担心显示器一直亮着的。

RTC stores time in GMT 按Unix的标准,Real Time Clock硬件的时钟应该设为Greenwich Mean Time(格林尼治标准时间)。各时区定不同,不必统一,因此不用选上。

Allow interrupts during APM BIOS calls允许APM的BIOS调用时中断。多数的机器不需要这项,Thinkpad(IBM公司生产的笔记本电脑)的一些新机器需要这项。如果休眠时挂机(包括休眠下去就醒不来),再把这项选上。

Use real mode APM BIOS call to power off建议最好选上此项,保证软件关机。

注意:如果既选择了ACPI又选择了APM,先加载的将被使用。

3.5  Memory Technology Device(MTD)(存储技术设备支持)
MTD设备,在个人计算机中并不常见。因此对这部分没有详细的注释。

3.6  Parallel port support(并口支持)
如果你想使用连接到你计算机上的并口设备(计算机外部的25针的那种接口)如打印机、ZIP(一种程序的档案文件格式)驱动、PLID(Parallel Line Internet Protocol)连接(主要用于通过连接两个本地计算机的并口而组成的一个小型计算机网络),则应选上此选项。

将几个不同设备共享一个并口是可行的,将相应设备的程序编译进内核也是安全的。

PC-style hardware(NEW)

如果你有PC-style并口,则应选上。所有的IBM兼容机和部分Alphas机有这种并口。

Support foreign hardware(NEW)

如果你想加载驱动模块以支持其它非标准并口类型,则应选上些选项。不过这将导致一定程度的失真。因此大部分用户不选此选项。

IEEE1284 transfer modes(NEW)

如果你有一个支持状态回读功能或ID设备的打印机,或想使用一个支持并口传输模式的设备如EPP或ECP,选此项则可以使用高级IEEE1284传输模式。

3.7  Plug and Play configuration(即插即用配置)
Plug and play support

Plug and play(PnP)是一个允许软件配置外设的标准,如分配IRQ(中断请求)或其它参数。卡上不需要跳线,而是通过BIOS、操作系统或一个用户可用空间来给卡提供信息。选此项则可以使你的Linux系统配置即插即用设备。你也必须选以下的“ISA plug and play support”。另外的选择,不选些选项,可以通过isapnptools软件包里的用户可用空间来配置你的即插即用设备。

ISA plug and play support

如果你想使用ISA即插即用设备,则应选此选项。

3.8  Block devices(块设备)
Normal PC floppy disc support

如果你想在Linux环境下使用软驱,则应选上此选项。

XT hard disc support

非常老的8位硬盘控制器,在过去的IBM型XT电脑中使用过,如果用户有这种则选上此选项。

Compaq SMART2 support

康柏公司出产的智能阵列控制器,根据用户自身情况选择。

Compaq Smart Array 5xxx support

康柏公司出产的智能5xxx阵列控制器,根据用户自身情况选择。

Mylex DAC960/DAC1100 PCI RAID controller support

RAID是英文Redundant Array of Independent Disks的缩写,中文意思是“独立磁盘冗余阵列”,有时也简称磁盘阵列(Disk Array)。如果你机上有Mylex DAC 960、AcceleRAID、eXtreme RAID PCI RAID控制器的话,则选上些选项。一般用户不选。

Loopback device support

选上此项可以让你像使用块设备一样使用一个常规文件,你还可以在那个块设备上创建一个文件系统,并且可以像加载其它块设备(如硬盘、光驱、软驱)一样加载它。环设备是特殊块设备文件,主要以7表示,典型地写为/dev/loop0,/dev/loop1或其它。

这对于你想在烧录CD之前检查一个ISO9660文件系统很有帮助,或想使用软驱镜像而不是先将内容写进软驱,另外,一些Linux版本通过使用这种环设备驱动而保存它们完整的根目录文件系统到一个DOS FAT文件中,避免了建立一个专用Linux分区的需要。

Network block device support

选上此项功能,可以使你的计算机成为网络块设备中的一个客户端,特别地,它将通过服务器(加载文件系统到它们)使用块设备。客户端与服务器通过TCP/IP协议连接,但对于客户端软件隐藏,这看起来像一个本地机器上的常规文件如/dev/nd0,若不确定则可以不选。

RAM disc support

选上此项功能,可以使你机上的部分内存当作一个块设备,这样你就可以在此空间上创建文件系统、读写数据,做所有的块设备(如硬盘)上可以做的操作。这常用来从软驱到内存加载或存储一个很小的根文件系统,在初始化或安装Linux时使用。绝大多数用户不需要此项功能,因此可以不选。

3.9  Multi-devices support(多设备支持)
Multiple devices driver support(RAID and LVM)

选此项可以通过一个单逻辑设备来支持多物理轴设备,这需要RAID和LVM(Logical volume management)逻辑卷管理。

RAID support

磁盘阵列其实也分为软阵列 (Software Raid)和硬阵列 (Hardware Raid) 两种。软阵列,即通过软件程序并由计算机CPU提供运行能力所成。由于软件程式不是一个完整系统故只能提供最基本的 RAID容错功能。 其他如热备用硬盘的设置,远程管理等功能均一一缺少。硬阵列是由独立操作的硬件提供整个磁盘阵列的控制和计算功能。不依靠系统的CPU资源。由于硬阵列是一个完整的系统,所有需要的功能均可以做进去。所以硬阵列所提供的功能和性能均比软阵列好。而且,如果你想把系统也做到磁盘阵列中,硬阵列是唯一的选择。故我们可以看市场上 RAID 5 级的磁盘阵列均为硬阵列。软阵列只适用于 Raid 0 和 Raid 1。对于我们做镜像用的镜像塔,肯定不会用 Raid 0或Raid 1。

作为高性能的存储系统,已经得到了越来越广泛的应用。RAID的级别从RAID概念的提出到现在,已经发展了六个级别,其级别分别是0、1、2、3、4、5等。但是最常用的是0、1、3、5四个级别。下面就介绍这四个级别。

RAID 0:将多个较小的磁盘合并成一个大的磁盘,不具有冗余,并行I/O,速度最快。

RAID 0亦称为带区集。它是将多个磁盘并列起来,成为一个大硬盘。在存放数据时,其将数据按磁盘的个数来进行分段,然后同时将这些数据写进这些盘中。所以,在所有的级别中,RAID 0的速度是最快的。但是RAID 0没有冗余功能的,如果一个磁盘(物理)损坏,则所有的数据都无法使用。

RAID 1:两组相同的磁盘系统互作镜像,速度没有提高,但是允许单个磁盘错,可靠性最高。RAID 1就是镜像。其原理为在主硬盘上存放数据的同时也在镜像硬盘上写一样的数据。当主硬盘(物理)损坏时,镜像硬盘则代替主硬盘的工作。因为有镜像硬盘做数据备份,所以RAID 1的数据安全性在所有的RAID级别上来说是最好的。但是其磁盘的利用率却只有50%,是所有RAID上磁盘利用率最低的一个级别。

RAID 3存放数据的原理和RAID0、RAID1不同。RAID 3是以一个硬盘来存放数据的奇偶校验位,数据则分段存储于其余硬盘中。它像RAID 0一样以并行的方式来存放数,但速度没有RAID 0快。如果数据盘(物理)损坏,只要将坏硬盘换掉,RAID 控制系统则会根据校验盘的数据校验位在新盘中重建坏盘上的数据。不过,如果校验盘(物理)损坏的话,则全部数据都无法使用。利用单独的校验盘来保护数据虽然没有镜像的安全性高,但是硬盘利用率得到了很大的提高,为n-1。

RAID 5:向阵列中的磁盘写数据,奇偶校验数据存放在阵列中的各个盘上,允许单个磁盘出错。RAID 5也是以数据的校验位来保证数据的安全,但它不是以单独硬盘来存放数据的校验位,而是将数据段的校验位交互存放于各个硬盘上。这样,任何一个硬盘损坏,都可以根据其它硬盘上的校验位来重建损坏的数据。硬盘的利用率为n-1。

RAID 0-1:同时具有RAID 0和RAID 1的优点。

冗余:采用多个设备同时工作,当其中一个设备失效时,其它设备能够接替失效设备继续工作的体系。在PC服务器上,通常在磁盘子系统、电源子系统采用冗余技术。

选了此项后会展开5个细节选项:

Linear (append) mode

RAID-0 (striping) mode

RAID-1 (mirroring) mode

RAID-4/RAID-5 mode

根据你自己的需要选择不同的模式。

Multipath I/O support 多路径I/O支持

TOP

3.10  Networking options(网络选项)
Packet socket

选上此项,则一些应用程序将使用Packet协议直接同网络设备通讯,而不通过内核中的其它中介协议。

Packet socket: mmapped IO

此项可以使Packet协议驱动程序使用一个IO体系,加快网络通信,如不确定的话,可以不选。

Kernel/User netlink socket

这个驱动程序可以让内核与用户进程使用双通道通信,它通过创建一个新的socket体系,PF_NETLINK,通过这个socket,内核可以发送和接收带信息的数据报文。到上前为止,如你选上接下来的扩展选项“Routing messages (NEW)”的话,,内核可以使用这一特性发布一些与网络想着的信息。如果你想用arpd的daemon来保持ARP内部缓存(在局域网中同步IP地址与硬件地址)足够小。

选择此项后会扩展出两个选项:

Routing messages (NEW) 如果你想用iproute2接收路由器信息的话,就选上。

Netlink device emulateion (NEW) 任何想使用字符串的如/dev/tap0或/dev/route的程序应选上些选项。不过这个选项会很快将被real netlink socket取代。

Network packet filtering (replaces ipchains) 

Netfilter是一个通过你机上的Linux过滤与压缩网络数据包的架构。数据包过滤最常用的情况是作为局域网内的一个防火墙使用。内核提供与支持的防火墙称为“数据包过滤器”,它可以拦截基于类型、源对象、目标对象等的个人网络数据包。另一种防火墙是proxy-based,它更安全,但建立起来也更繁琐更复杂。Proxy-based能更紧密地检测网络传输,它能支持更高级的网络协议,而数据包过滤器不具备此功能。而且,proxy-based防火墙常需要根据本地客户端程序而作改变,它不需要内核支持,只有当你将此项编译进内核时,它才可与数据包过滤器一起工作。此项可以作为没有IP地位子机的网关,当子机需要向外部网发信息时,像是网关在发送而不是子机在发送一样。它有两种方式:一是向外部网发送信息且得到回应时,子机不会被识别,只认为是响应网关发送的信息;二是作为一个暂时的代理服务器。

注意:如果想让你的计算机作路由器的话,此选项应选上。

选上此选项后还有一个扩展选项:

Network packet filtering debugging (NEW) 用于调试作用的。

Socket filtering  

Linux socket filter来源于Berkeley的packet filter,选此项则可以使用户空间程序添加过滤器到任何类型的socket,并且告诉内核哪些类型数据应该过滤。Linux socket filter除了TCP插口类型外都支持。若想用PPP packet socket的话,则此项要选。

Unix domain socket

支持Unix域socket,socket是为建立和访问网络连接的Unix体系标准。很多常用的程序如X Windows系统、syslog使用这些socket即使你的计算机没有连接到任何网络。除非你是在嵌入式系统或类似环境下工作,这个选项无疑你应该选上。

TCP/IP networking

选上此项,则内核将支持TCP/IP协议。这个选项无论如何都建议选上,即使没有网卡,或是没有连到网络上的设备,在Linux上仍有所谓的lookback 设备而且有些程序需要这个选项。在说明文件中提到,如果没有打开这个设定,则X-window system可能会有问题(回为它也需要 TCP/IP)。

IP: multicasting

所谓的multicasting是群组广播,它是用在视频会议上的协议 ,如果想送一个网络封包(网络的数据),同样的一份数据将送往十部机器上。您可以连续送十次给十台机器(点对点的传送),也可以同时送一次,然后让十台机器同时接 收到。当然后者比前者好,由于视频会议要求是最好每个人都能同时收到同一份信息,所以如果你有类似的需要,这个选项就要打开。同时你还必须去找相关的软件。

IP: advanced router

如果你想将你的计算机做成路由器,特别是收到、颁发网络中的数据包的话,则应选此项。但同时也应在文件系统选项中选择“/proc file system support”和“sysctl support”才可以做路由器。

这个选项选择之后会有很多关于具体配置路由器的细节选项。

IP: kernel level autoconfiguration 

此项功能可以在内核启动的过程中自动配置硬件的IP地址和路由列表,基于由内核命令行或BOOTP协议或RARP协议所提供的信息。这仅在无盘计算机需要网络访问而启动(同样要选上Root file system on NFS选项),因为所有其他的计算机在他们的启动脚本中配置网络。

IP: tunneling 

IP隧道(IP tunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术亦称为IP封装技术(IP encapsulation)。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。如果你需要此功能就选上。

IP: GRE tunneling over IP  

GRE是generic routing encapsulation通用路由封闭的缩写,它可兼容IPv4、IPv6,这个选项比“IP tunneling”更好。选上后会有一个扩展选项。

IP: multicasting router

多播路由器,但是目前的应用程度还不是很高。

IP: TCP explicit congestion notification support

如果启用了这个选项,那么 Linux 机器将不能继续与 8% 的因特网进行网络通信。启用 ECN 时,Linux 机器发送出的一些包将会设置 ECN 位;不过,这个位会使许多网际路由器感到困惑,因此一定要禁用 ECN。

IP: TCP syncookie support (disabled per default) 

在目前以IPv4为支撑的网络协议上搭建的网络环境中,SYN flood是一种非常危险而觉的Dos攻击方式。到目前为止,能够有效防范SYN flood攻击的手段并不多,而syncookie就是其中最著名的一种,这在很多操作系统上都有各种各样的实现。因此此选项建议选上。

The IPX protocol 

IPX 是Internet Packet Exchange的缩写,是Novell公司私有的一个协议,同IP协议相似,是个无连接的,不可靠的协议,工作在第三层的。IPX使用在客户/服务器环境中,使用网络地址+节点地址这样的地址结构。它的逻辑地址包含了接口的MAC地址,IPX接口配置支持多种数据链路封装。现在很不常见了,不过在网络游戏里面确实用的是这个。

Appletalk protocol support 

AppleTalk协议起初是为LocalTalk网——速度较低的传输介质设计的,后来增加了对以太网和令牌环网的支持。多个独立的Loca1Talk局域网可通过路由互连,形成互联网。对于以太网和令牌环网的支持以后被加到AppleTalk协议中。AppleTalk使用一个地址系统来唯一标识每个节点,以便实现局域网段间数据分组的路由选择。AppleTalk包括原来的地址技术及在1989年AppleTalk Phase2引入的新的扩展地址技术。原来的方案使用8位地址,每个网络允许254个站点,AppleTalk Phase2可支持1600万个节点,运行于大型网络上的增强AP-pleTalk。如果想使用这个协议就选上此项。

DECnet support 

DECnet网络协议在很多产品中都有使用,是由Digital公司(现在改名为Compaq康柏)生产的,若想使用此协议,同样也应在文件系统选项中选择“/proc file system support”和“sysctl support”。

802.1d Ethernet bridging

如果你的计算机上有多块网卡,并且想使用你的计算机做为网桥来连接几个不同的以太网的话,就选上此选项。

Qos and/or fair queueing  

Qos是quality of service的缩写,服务质量公平调度支持,还有kHTTPd。kHTTPd是一个Linux环境下的web服务器。kHTTPd和其它web服务器的不同之处在于其是作为内核的一部分运行在Linux的内核中(可以看成是一个设备驱动)。kHTTPd仅仅处理静态(基于静态文件的)的web页面,而将所有的对于非静态内容的请求传递给正常的运行于用户空间的web服务器来处理,如apache、Zeus等,而这些运行在用户空间的web服务器并不需要任何修改。不过这些都还在实验阶段。因此不建议选此项。

若选此项还会有一些扩展选项,可以进行更具体的配置。

3.11  Telephony support(电话通信支持)
Linux telephony support

如果你有一个支持常规电话就可以打IP电话的电话卡,就选上此项。

注意:这与modem(调制解调器)无关,如果你想在Linux环境下使用modem,不需要选此项。

QuickNet Internet LineJack/PhoneJack support

如果你有Quicknet电话公司生产的电话卡,如Internet PhoneJack和Internet LineJack电话卡,则应选此项。

QuickNet Internet LineJack/PhoneJack PCMCIA support

Quicknet公司生产的用于移动电脑的电话卡,如果有则选此项。

3.12  ATA/IDE/MFM/RLL support(硬盘、光驱接口支持)
如果选择此项,可使内核管理低成本大容量存储单元如ATA/(E)IDE单元和ATAPI单元,通常是IDE硬盘和ATAPI光驱。如果你的机器是纯SCSI系统的话,此选项可以不选。

IDE是Integrated Disk Electronics (IDE aka ATA-1)的缩写,中文是集成电路设备,是一种大容量存储单元(如硬盘)的连接标准,是由West Digital(西部数据)和Compaq(康柏)公司于1984年共同开发的,接着被命名为ST506,很多硬盘都使用IDE接口。AT attachment(ATA)是IDE规范的扩展集,又叫做ATA-1。Fast-IDE是ATA-2(也叫Fast ATA),Enhanced IDE(加强型)即EIDE是ATA-3。它提供更大容量(大到8.4GB)和更多数量(最多4个)的碟片和其它大容量单元如磁带和光盘等的支持。UDMA/33(aka UltraDMA/33)又叫ATA-4,可以提供比以前PIO(programmed processor input/output已编程处理器输入/输出)通过DMA控制器提供的ATA/IDE标准更快速,占用CPU资源更少的传输模式。

ATA packet interface (ATAPI) 是用于EIDE磁带与光驱驱动的协议,与SCSI有很多相似之处。

SAMRT IDE(Self monitoring analysis and reporting technology自动监视分析与报告技术)被设计通过检测每个硬件的出错条件(如温度、读取时间等)来防止数据崩溃与碟体的损坏。一般来说1995年以后生产的碟片都依照这一标准。内核本身不会管理这一标准,但一些用户程序如smart能够对SMART碟片参数状态信息进行排序。

IDE,ATA,and ATAIP Block Devices

Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support

此选项可以使用全特性的IDE驱程控制10个ATA/IDE接口,每个接口又有主从设备之分,所以共有20个ATA/IDE disk/cdrom/tape/floppy设备接口。

Use old disk-only driver on primary interface 旧式系统所用的接口,现在很少用了,所以不选。

Include IDE/ATA-2 disk support  此项包含了MFM/RLL/IDE硬盘的加强型的支持,如果你有用旧式系统或使用的是纯SCSI系统的话,就可以不选。一般建议选择。

Include IDE/ATAPI CDROM support  

Include IDE/ATAPI TAPE support

Include IDE/ATAPI FLOPPY support

以上三项为光驱、磁带、软驱的ATAIP支持,ATAIP是一种类似于SCSI的IED新协议,现在绝大多数的光驱都已经使用了这样协议标准。根据你自己想要使用哪些设备进行选择。

SCSI emulation support

这个选项可以使SCSI主配适器模仿IDE ATAPI设备,而且可以让你代替本地ATAPI驱动而使用SCSI设备驱程。如果你一个还没有驱程的ATAPI设备,你可以用SCSI设备驱程模仿进而使用。为了使用这项功能,你还要选上“SCSI support”和“SCSU generic support”。

IDE chipset support/bugfixes

选此项则PCI系统可以使用IDE驱程。这常用于帮助IDE驱程自动检测和配置你系统上所有的基于PCI的IDE接口。选择此项后会列出很多种芯片以供选择,请根据自己的IDE芯片自行选择,在此不一一列举。

Ignore word 93 validation BITS

在一个ATA-4和ATA-5标准中,有一些硬件(如80c robbin)不能被检测到,在硬件中已经发布了这些标准的解释。可能出现这样的问题:不能对ribbon4使用Ultra mode 4(或更高级的模式)。如果出现了这样的不兼容问题,可以选择此项,但是选择了此项并表示就能解决这些问题。所以建议不选。

3.13  SCSI support(小型计算机系统接口支持)
SCSI的英文名称是“Small Computer System Interface”,中文翻译为"小型计算机系统专用接口";顾名思义,这是为了小型计算机设计的扩充接口,它可以让计算机加装其他外设设备以提高系统性能或增加新的功能,例如硬盘、光驱、扫描仪等。

    早期的计算机依速度、功能被区分为大型主机、小型计算机、微型计算机等多种等级,部分小型工作站、服务器属于小型计算机,而个人计算机属于微型计算机;因此当时使用SCSI接口的机种也以工作站、服务器等中高档设备为主。近年来则因个人计算机性能、扩充需求均大增,使SCSI在PC(普通微机)的应用也越来越多。

其实,SCSI也不算是新的接口类型,从有人注意到小型计算机功能延伸的问题、开始发展新的统一扩充接口、并在1986年正式订下SCSI的标准,至今也经历了将近20年的时间。早期Apple(苹果电脑)公司率先将SCSI选定为Macs计算机的标准接口,许多外设都借此统一接口与主系统连接。在PC方面则因为SCSI接口卡和设备昂贵,并且几乎各种外设都有较便宜的接口可替代,SCSI并未受到青睐;相对的,可用的SCSI设备也就不多了。反观今天,支持SCSI接口的外设产品从原本仅有硬盘、磁带机两种,增加到扫描仪、光驱、刻录机、MO等各种设备,大家接触SCSI的机会正在逐步增加中;再加上制造技术的进步,SCSI卡与外设的价格都已经不再高高在上,显示SCSI市场已经相当成熟。

SCSI接口是向前兼容的,也就是说新的SCSI接口可以兼容老接口,而且如果一个SCSI系统中的两种SCSI设备不是位于同一规格,那么SCSI系统将取较低级规格作为工作标准。例如你有的SCSI控制卡是Ultra160 SCSI(160MB/s)卡,而硬盘只支持Wide Ultra2 SCSI(80MB/s),那么你的SCSI系统将工作于Wide Ultra2 SCSI。同样如果你的控制卡是Wide Ultra2 SCSI卡,而硬盘却支持Ultra160 SCSI,那么SCSI系统也只能工作于Wide Ultra2 SCSI。所以在选购SCSI系统时应该注意这个问题,SCSI控制卡和SCSI硬盘要选择支持相同规格标准得。

目前SCSI有以下几种延伸规格:SCSI-1、SCSI-2、Fast SCSI、Wide SCSI、ULTRA SCSI、Ultra Wide SCSI、ULTRA 2 SCSI、WIDE ULTRA 2 SCSI、Ultra 160/m SCSI、Ultra320 SCSI。 传输速率由5MB/s到320MB/s不等。

SCSI接口优点:适应面广,在一块SCSI控制卡上就可以同时挂接15个设备;高性能(具有很多任务、宽带宽及少CPU占用率等特点);具有外置和内置两种 。

SCSI接口缺点:价格昂贵、安装复杂

SCSI support type  

有5个不同的类型:硬盘、磁带、OnStream SC-x0磁带、光驱、和其他设备如扫描仪等的SCSI接口。

Some SCSI devices (e.g. CD jukebox) support multiple LUNs 以下有四个扩展选项:

Enable extra checks in new queueing code

此项功能是可以撕开很多附加的对于新序列代码的同步检测,这样做会托慢系统速度,但是对出错信息的显示与分析则要快得多。

Probe all LUNs on each SCSI device

如果你的SCSI设备支持多于一个的LUN(logical unit number逻辑单位数字),如CD点唱机,但只有一个被检测到,选择此项后则可以使用多个LUN。一个带多LUN的SCSI设备逻辑上可以看作是多SCSI设备,但大多数SCSI设备只有一个LUN,所以建议不选。

Verbose SCSI error reporting

此项的功能是使SCSI的错误信息更加的详细,这样也更容易理解。

SCSI logging facility

此项功能可以调试接入SCSI设备的关于数量方面的错误信息。

SCSI low-level drivers

这是低层次的SCSI设备选项,选择之后会有一些细节扩展选项,因为比较少用,所以不对其做进一步具体的注释。

3.14  Fusion MPT device support
如果你有Fusion MPT兼容PCI的适配器,则选上此选项,一般此选项无法配置。

3.15  I20 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处理器处进行排队。

I2O PCI support

I2O的PCI插槽支持

I2O Block OSM

OSM是Operating System Monitor的缩写,操作系统监视器(监督程序),此项为块操作系统监视器(监督程序)的支持

I2O LAN OSM

局域网操作系统监视器(监督程序)支持

I2O /proc support

如果选择了此项和“/proc file system support”,你就可以在虚拟目录/proc/i2o下读到与I2O相关的信息。

3.16  Network devices support(网络设备支持)
这部分内容主要为网络设备(主要是网卡)的配置,在配置之前用户需清楚自己的网卡型号、所用芯片组、生产厂家等相关信息与参数,这些信息对于接下来的配置是有必要的。

Network devices support

如果你有网络设备,需要连接到网络,当然要选此项。

ARCnet devices 如果你有ARC的网卡,则你要根据这种类型的网卡、芯片来选择。此项选择之后会有扩展选项,在这时不做进一步具体地注释。

Dummy net driver support

这是一个可调IP地址下的位容量设备(发送到这个设备的数据通常都会被忽略),这常用来使你的未激活的SLIP地址看起来像是一个真正的本地程序地址。如果你使用SLIP或PPP(SLIP是serial line internet protocol串行线路接口协议,是旧式的协议,而PPP是较高级点的类似协议)的话,也应选择此项。默认情况下此项是已经选上的。

Bonding driver support

如果你想将几个不同的以太网连接在一起的话,则应该选上此项。

EQL (serial line load balancing) support

如果你有两个串口连接到其他的计算机(这通常需要两个调制解调器和两条电话线),而且你使用SLIP或PPP协议,则选择此项后你可以达到两倍的传输速率。

Universal TUN/TAP device driver support  

TUN/TAP为用户空间程序提供数据接收与发送。这可看作一个简单的点对点或网络设备,而不是真正地从硬件设备中取得数据。当一上程序要打开/dev/net/tun时,这个驱程会自动生成相应的网络设备tunX或tapX,在程序退出时又会自动地删除tunX和tapX。

Ethernet (10 or 100Mbit)

十兆或百兆以太网。选择你的网卡类型,这里不一一列出所有的网卡型号,如果没有找到你的网卡,可以选上最下面的EISA、VLB、PCI and on board controller和Pocket and portable adapters选项,会出现更多的网卡类型以供选择,包括EISA、VLB、PCI、主板集成、移动电脑型等类型的网卡。

如果还是找不到你的声卡类型的话,如一些主板集成的、或一些不常见的网卡等,建议你咨询网卡的生产厂家,或者到厂家的网页上去下载for Linux的驱动程序,再进行安装。

Ethernet (1000Mbit)

如果你使用的是千兆以太网,又有相应的网卡的话,可以在这时进行配置。然而对大多数用户而言,千兆以太网还是很少使用的,因此不做进一步具体地注释。

Wireless LAN (non-hamradio)

如果你用的是无线网卡,而且有接收电台的功能的话,请选择。选择之后会有一些扩展的选项。

Token ring device  Token ring是IBM公司制定的一种局域网上的通信方式,如果你有这种相应的网卡,请选择。

Fibre channel driver support   

Fibre channel是一个高速的串口通信协议,用于连接大容量设备到你的计算机,它与SCSI兼容并有取代SCSI的趋势,如果你有这种专用网卡,请选择。

Wan interfaces support

如果你想通过你的计算机做成广域网来连接不同的局域网并有相应的网卡,请选择。

对于以上四项,选择它们之后还会有扩展选项,但是因为个人计算机很少用到,因此不做进一步的具体注释。

3.17  Amateur radio support(业余无线电支持)
选此项可以用来启动无线网络的基本支持,目前的无线网络可以通过公众频率传输数据,如果你有此类设备,就可以启用。通常而言,很少有人使用此项功能。

3.18  IrDA (infrared) support(配置红外线(无线)通讯支持)
如果你有无线设备,比如无线鼠标或无线键盘,你应该打开这个选项。然而多数桌面机器不需要这个选项。

3.19  ISDN subsystem(综合服务数字网)
如果使用ISDN上网,这个就必不可少了。ISDN(Integrated Services Digital Network),它的中文名称是综合数字服务网络,是一个利用电话线,把声音,影片信息以数字的方式传送的数字网络,它需要电话交换机设备支持ISDN,这通常需要电信局来做安装,对于在家工作的人来说,ISDN可能是最舒适最便宜的一种方式,因此有愈来愈多的人使用它(不过现在又有了ADSL-Asymmetrical Digital Subscriber Loop非对称数字用户线路)。不过,除非是公司,不然一般人很少会使用到ISDN的,所以这部分的选项大都不选。如果选择了此项,则下面会出现一些有关ISDN的细节问题,可以进一步地配置ISDN。

TOP

3.20  Old CD-ROM drivers(not SCSI not IDE)(旧式光驱支持)
在486和386机器中,CD-ROM并不是通过硬盘IDE(ATAPI)控制器连接的,而是通过声卡或一块特殊的板卡。使用这些老式的CDROM需要选择对应的驱动程序。这个选项在现在的系统中显得有些多余。

3.21  Input core support (输入核心支持)
如果你想使用USB human interface device(HID)这样的设备,如USB的鼠标、键盘、游戏控制杆等,就应选择此项。

Keyboard support

如果你有USB键盘,则应选

Mouse support

如果你有USB鼠标,则应选

(1024) Horizontal screen resolution 水平解晰度方案

(76 Vertical screen resolution 垂直度方案

Joystick interface support

如果你有USB游戏杆,则应选

Event interface support

此项可以使你通过/dev/input/eventX目录来访问你的USB或ABD HID设备信息。

3.22  Character devices(字符设备支持)
    这部分内容相对繁多,对一些常用的配置做了注释,比较少用的只是做了一些简介。

Virtual terminal

这是一个很有用的选项,一般必选。它通过一个物理终端使用多个虚拟终端(又叫虚拟控制台),你至少需要一个这样的虚拟终端来使用你的显示器和键盘。

Support for console on virtual terminal

系统控制台是一个接收所有内核消息与警告的设备,它允许使用单用户模式,如果选择了此项,一个虚拟终端可被用作一个系统控制台,这是最普通的操作模式,建议选择。

Standard/generic (8250/16550 and compatible UARTs) serial support

这个选项决定是否包含标准串口驱程,如果你想使用你计算机上的串口,则必须选此项。

Support for console on serial port

这是上一项选择之后才出现的选项,选了它可以使用串口做为系统的控制台,当一些终端或打印机连接到那个串口时,这可能会有用。通常情况下不选。

Extended dumb serial driver options

若想使用标准“dumb”驱程的任何非标准特性的话,就要选此项,这些包括HUB6、共享串口中断、特殊多口支持、多COM口主板支持等。

Non-standard serial port support

如果你有非标准串口接口的主板,像Cyclades、Digiboards。这常用于有很多个串口的系统,它们需要很多的终端与接入操作。一般不选。选择此项后会有一些细节配置选项,但这种主板比较少见,因此不做具体注释。

Unix98 PTY support

PTY是pseudo terminal的缩写,是一个由两个部件,主件和从件所组成的软件设备。从件模拟物理终端,主件则通过进程读写数据到从件中去,从而模拟一个终端。典型的主件程序是telnet和Xterm。若要使用此功能,还应在文件系统选项中选择“/dev/pts file system for Unix98 PTYS”。一般情况下不选。

Maximum number of Unix98 PTYs in use

默认的数值是256。如果是服务器型计算机,要接入telnet/rlogin/ssh等连接的话,需要将数值相应地提高。一般照默认的选择就行了。

I2C support  

I2C(读作I-square-C)总线是Philips公司首先推出的一种两线制串行传输总线。它通过两根线(SDA串行总线和SCL串行总线)实现器件之间的通信的总线,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。总线上的器件可以主动的联络其它器件通信,称为主动方式;也可以被呼叫以后和其它器件通信称为从方式。I2C总线的基本结构:采用I2C总线标准的单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。CPU不仅能通过指令将某个功能单元电路挂靠或摘离总线,还可对该单元的工作状况进行检测,从而实现对硬件系统的既简单又灵活的扩展与控制。

如果你有这种总线并想使用它,就选上,一般来说不选。

Mice 这个选项配置鼠标接口类型

Bus mouse support  

这种接口为早期的鼠标接口,需要专用的扩充卡与扩充插槽,现在已经很少被使用。

这里有三种类型可供选择:ATIXL、Logitech、Microsoft

Mouse support (not serial or bus mouse)

即不是串口类型也不是bus mouse的接口

这里也有三种:PS/2、C&T 82C710、PC110 digitizer pad

Joystick 游戏控制杆接口选项,这时有:游戏常规接口、串口、USB三种类型可供选择。

QIC-02 tape support

如果你有非SCSI的磁带要使用的话,就选上,一般来说不需要。

Watchdog cards

Watchdog是一个安装在每一部装有内核或连接器电脑上的单机Java进程。在Windows环境中它会生成同步进程以检测系统控制器、中央登陆者和连接者,如果这样成分有问题的话,Watchdog会重新启动它们。在Solaris中,它会通过/etc/init.d/isw通过后台脚本。如果不确定,可以不选。

Intel i8x0 random number generator support

如果你有Intel i8x0主板的话,它会有一个随机数字生成器硬件,如果你没有这块主板,就不用选择。

dev/nvram support

这个选项会生成一个特殊字符文件在/dev/nvram目录下,一般用于非易失性的RAM中的数据处理,如主板中的BIOS上用的CMOS RAM等,用于保存一些硬件的基本信息。请慎重修改这种RAM中的内容,所以一般建议不选择。

Enhanced real time clock support

此选项可以高速计算机上的晶振频率,从1Hz到8192Hz不等。

Double talk PC internal speech card support

一般很少有人用这种卡,因此不选。

Siemens R3964 line discipline 西门子通信协议设备支持,除非你要用到PLC编程,否则可以不选。

Applicom intelligent fieldbus card support

此项为Applicom international公司生产的用于现场总线连接卡支持,如果没有则不选。

Ftape,the floppy tape device drvier

通过软驱控制器来连接磁带设备。选上此项后还有一些细节配置选项,但一般很少这样做,因此不做具体注释。

/dev/agpgart (AGP support)  

AGP是accelerated graphics port图形加速接口的缩写,是为显卡专用的接口,如果你的主板上有这样的接口并且有这样的显卡,则一定要选上此项。选择之后会有一些显卡类型以供选择,此处不作一一列举。

Direct rendering manager (XFree86 4.1.0 and higher DRI support)

这是一种支持硬件直接访问DRI客户端的内核模块,多用于显卡。选择此项后会有三种不同类型的显卡以供选择。

ACP modem (Mware) support

这一般是IBM移动电脑上所使用的调制解调器,如果没有这种设备,可以不选。

3.23  Multimedia devices(多媒体设备)
  如果你有音频/视频抓取与覆盖设备和FM电台卡的,并且想使用这些多媒体设备的话,就要选上此选项。一般的个人电脑很少使用这些设备。

3.24  Files System support(文件系统支持)
  有人说在编译内核时应该将/boot分区和/分区的文件系统编译进内核,其它的可以编译成模块。对,但不确切。对Linux系统的启动顺序做简要的说明。在内核被加载后,如果initrd参数传入了内核,内核会去调用指定的文件。当然,initrd和System.map通常都是/boot下。但是同样可以用initrd=(hd1,2)/initrd.img这样的方式指定。内核启动完成后将调用/sbin/init,(如果是链接要保证目标文件能被内核加载)。不同的系统的启动脚本可能不太一样,这里不详细介绍。启动脚本向内核加载模块时可能用/sbin/modprobe或/sbin/insmod,由此看来/sbin的文件系统是要内核支持的。编译的内核模块一般在/lib/modules/的版本目录下,所以/lib/modules的文件系统是要内核支持的。一旦其它文件系统的模块能加载,系统就能向正常的访问内核中的文件系统一样访问模块支持的文件系统了。由于启动脚本、fstab自动加载等文件一般在/etc目录下,因此/etc的文件系统是要内核支持的。

这里概要的介绍了保证系统正常启动的几个关键点。如果能理解上面的这段话,则能清楚的知道哪些文件系统是要编译进内核的,哪些是可以编译成模块的就不会太难。

Quota support  

XFS是SGI公司为其图形工作站设计的一种文件系统,后来这一文件系统也能应用于Linux系统。XFS文件系统的配额支持。

Kernel automounter support  

内核自动加载远程文件系统的支持。

Kernel automounter version 4 support (also supports v3)  

新的(第四版)的内核自动加载远程文件系统的支持,也支持第三版。

Ext3 journaling file system support  

如果你熟悉Redhat Linux,你一定会习惯Ext3文件系统。

DOS FAT files system support

如果你想使用基于FAT技术的文件系统的话,如MS-DOS、VFAT(Winodws 95)、UMSDOS(在常规DOS分区上运行Linux),此功能就应该要选上。你可以通过mount指令加载分区或磁盘上的FAT文件系统并读取上面的信息,也就是说MSDOS文件会看起来和使用起来像Unix文件一样。FAT支持并不是一个文件系统,它只是提供了其他文件系统的支持而已。你至少要在以下的“msdos fs support”和“vfat fs support”中选一个使用。另一个不常见的读写Linux系统下软盘或硬盘分区上的MSDOS文件的方法是使用mtools命令(可以使用man mtools查看)。这个命令不需要FATA文件系统的支持。读写压缩型的FAT文件也将变得可行。如果不确定的话,建议选上此选项。

MSDOS fs support

如果你想加载(mount)你硬盘上和软盘上的MSDOS分区(除非它们是压缩的,如果要在Linux下访问压缩的MSDOS分区,可以使用DOS仿真程序DOSEMU,如果你想用dosemu访问非压缩MSDOS分区的话,就应选择此选项)。也就是说访问是明显的,就像读取其它的Unix文件一样读取MSDOS文件。如果你想要使用umsdos,在DOS上的类Unix文件,可以让你不必对DOS重新分区的情况下,便能使用Linux,则此项应选上。如果你在VFAT分区上装了Windows95或Windows NT的话,你就要用到VFAT文件系统(选上接下来的“vfat fs support”),不然你就看不见在Windows95和Windows NT下的长文件名了。如果不确定,则选上。

VFAT fs support

这个选项为通常的Windows文件系统提供长文件名支持,包括了Windows 95、Windows 98、Windows NT4.0环境下基于FAT的非压缩文件系统和mtools。你不可以将Linux的根分区/设置成VFAT的格式,使用UMSDOS分区的话就可以在DOS分区下使用Linux。此项只能在你已经选择了“fat fs support”的情况下才可选。

UMSDOS: Unix-like file system on top of standard

MSDOS filesystem 如果你想在你硬盘上已存在的DOS分区上使用Linux,就要选上此选项。选上的好处是你离开时不需要重新分区你的硬盘,这样你就可以很快地使用上Linux,但坏处是Linux容易感染上DOS下的病毒,而且UMSDOS比起ext2fs要慢一些。另一个作用是UMSDOS可以通过MSDOS软件写Unix的长文件名。

Compressed ROM file system support

为只读文件系统,其容量上限只有256MB,用于嵌入式装置。

Virtual memory filesystem support (former shm filesystem)

虚拟内存文件系统支持,可能是现在Linux下可以使用的最好的类似RAM 磁盘的系统,而且是 2.4 内核的一个新功能。

Simple RAM-based filesystem support

是一个读写都只在内存上进行的文件系统,它更像一个程序而不是一个文件系统。

ISO 9660 CDROM filesystem support

这是在光驱上使用的标准文件系统,在以前被称为(High Sensitivity Focusing & Seeking)高灵敏度聚焦寻轨技术,在其它Unix操作系统上称为hsfs。可以支持长文件名和符号链接。如果你有光驱并想使用它的话,一定要选上。

Microsoft Joliet CDROM extentions Joliet

是微软公司为ISO 9660 CDROM filestystem所做的一种扩充,它可以支持在unicode(新的16位字符码,是ASCII码的后续编码,可以将世界上几乎所有的文字编译成代码)下的长文件名。

Transparent decompression extension

透明解压缩CDROM扩充文件系统。它可以让你存入光盘数据时是压缩的,而读取的时候又是非压缩的。

Minix filesystem support

Minix可能是最早的Linux系统所使用的文件系统。后来被Ext2文件系统所取代。

FreeVxFS filesystem support (VERITAS VxFS(TM) compatible)   

FreeVxFS是一个支持VERITAS VxFS(TM)格式文件的文件系统驱程。VERITAS VxFS(TM)是SCO UnixWare(也可能是其它的)、Sunsoft Solaries、HP-UX和很多其它操作系统的标准文件系统,目前只能支持读操作。

NTFS filesystem support (read only)  

Windows NT以版本支持的文件系统。

OS/2 HPFS filesystem support  

1987年推出的为以Intel 80286和80386微处理器为基础的台式计算机配套的新型操作系统。 它是为PC DOS和MS DOS升级而设计的。DOS中许多命令格式和功能被保留下来。而为了充分利用以80286和80386微处理器为基础的硬件的内在优点,增加了许多新的命令和特色,如多任务、扩展存储器等。HPFS为这种操作系统的高性能文件系统。

/proc filesystem support

虚拟文件系统,很多应用程序可以将硬件设备的信息虚拟到/proc目录下,有不少功能的实现都需要此功能,因此建议选择。

/dev/pts filesystem for Unix98 PTYs

如果在之前选了“Unix98 PTY support”的话,则这里也要选择。可以用“mount –t devpts”加载一个虚拟文件系统到/dev/pts。若与多工器一起工作可以产生虚拟端。

ROM filesystem support

这是一个很小的只读文件系统,主要是为了初始化安装碟,也可用于其它的只读设备中。如果不确定,建议不选。

Second extended filesytsem support

必选。Linux安装的分区格式就是为ext2,专门为Linux而开发的文件系统,如果不选会造成系统无法启动。

System V/Xenix/V7/Coherent filesystem support

SCO、Xenix、Coherent是Intel机器上使用的商业Unix系统,Version 7用于DEC PDP-II。选择此项可以让读取这种分区上的文件。如果不确定,建议不选。

UDF filesystem support (read only)  

是一个用于CDROM和DVD上的新文件系统,若读取DVD或刻录机上的文件,就选上。

UFS filesystem support (read only)

这是一种BSD和起源于Unix上的操作系统(如Sun OS、FreeBSD、NetBSD、OpenBSD、NeXT step等)所使用的文件系统。如果你没听说过这些操作系统,建议不用选。

Network filesystem support

网络文件系统。通过网络访问其他计算机上的文件系统。如果想使用就选择,还会有一些细节的配置选项。

Partition types

分区类型支持,有很多分区类型可以选择。

以上两项因为比较少用到,因此不做具体的注释。

Native language support

本地语言选项,这里有很多不同语言可供选择,因为太多不一一列出,一般选英文、简体中文与繁体中文字符集就可以了。

3.25  Console drivers(控制台设备)
VGA text console  

VGA是Video Graphies Array的缩写,意思是视频图形陈列。此项可以让你通过类VGA标准的显示状态下使用Linux的命令行界面。一般而言,所有的用户都需要选上此项。程序SVGATextMode可以通过命令行界面下完全发挥SVGA视频卡的功能。

Video mode selection support 

在内核启动时可以选择命令行模式。如果你想利用你视频卡上的BIOS提供的高方案命令行模式,但传统的Linux像SVGATextMode这种程序并不能实现,你可以选此项并在你的启动引导管理器(lilo或loadlin)使用“vga=”的命令,或使用“vga=ask”命令,则在内核启动时会有视频模式菜单。

3.26  Sound(声音配置)
此项为声卡的配置,在配置之前用户需清楚自己的声卡型号、所用芯片组、生产厂家等相关信息与参数,并在所列出的选项中选择自己的那款声卡。这里对于配置中的选项不一一列出,用户可自行选择。

如果上面所列的声卡类型里面没有你的声卡,可以选择OSS选项,OSS是open sound system的缩写,意思是开放声音系统,这个系统可以提供更多的声卡驱动程序,在OSS以下的选项中继续寻找你的声卡类型。

如果还是找不到你的声卡类型的话,如一些主板集成的、或一些不常见的声卡等,建议你咨询声卡的生产厂家,或者到厂家的网页上去下载for Linux的驱动程序,再进行安装。

3.27  USB support(通用串行总线架构支持)
Support for USB

USB是Universal Serial Bus的缩写,是IBM公司开发的一种比传统PC串行接口更高速、更多特性的接口标准,现在已经普遍在个人电脑中使用,很多外设也使用了这种接口,如键盘、鼠标、打印机等。如果你有USB接口,则应该选上此选项,而且在接下来的“UHCI support”和“OHCI support”这两个中,至少要选上一个。选了这项后会有一个扩展选项:

Support USB verbose debug messages 此项可以用来调试与检测USB出现的问题。

Miscellaneous USB options 各种USB选项

Preliminary USB device filesystem

选择此项再加上文件系统中的“/proc files system support”的话,可以在/proc/bus/usb/devices目录下看到连接到你计算机上的USB设备信息;在/proc/bus/usb/drivers目录下可以看到连接到你计算机上的USB的驱动程序;在/proc/bus/usb/xxx/yyy目录下可以看到连接到你计算机上的USB设备,其中xxx表示接口序号,yyy表示设备序号,可以通过用户空间程序访问你的USB设备,但这些文件都是虚拟的,也就是说它们并不在在于你们硬盘上。使用命令mount –t usbdevfs none /proc/bus/usb可以加载这些文件。

Long timeout for slow-responding devices (some MGE Ellipse UPSes)

设置标准响应时间。若你有MGE Ellipse USB设备或其它USB设备响应缓慢的话,可以选择此项。

USB controllers

UHCI (Inter PIIX4、VIA、…) support

UHCI是Universal host controller interface的缩写,通用主控制器接口。是一个Inter公司开发的读取USB硬件的标准。如果你的USB接口是这种标准的,就选上。如果不确定,建议选上。

UHCI alternative driver (JE) support

这是一个可选的依照Compaq标准制定的读取USB硬件标准。

OHCI (Compaq、iMacs、OPTI、SiS、Ali、…) support  

OHCI是Open host controller interface的缩写,开放主控制器接口。是一个Compaq(康柏)公司开发的读取USB硬件的标准。如果你的USB接口是这种标准的,就选上。如果不确定,建议选上。

USB device class drivers

USB Audio support

如果你想连接你的音频设备到你计算机上的USB接口,那就选上。

USB modem(CDC ACM)support

如果你有USB的调制解调器的话,就选上。

USB printer support

如果你有USB的打印机的话,就选上。

USB human interface devices (HID)  USB人机界面设备

USB human interface devices (full HID) support

完整功能的USB人机设备选项,此项选了的话,以下两项则不可选。因为此项已经包括了以下两项的内容。

USB HIDBP keyboard (basic) support

USB键盘支持,你有这样的设备就选上。

USB HIDBP mouse (basic) support  

USB鼠标支持,你有这样的设备就选上。

Waco mintuos/graphire tablet support

如果你有这种设备就选上。

USB imaging devices  USB图像处理设备支持

USB Kodak PC-2xx camera support

柯达PC-2xxx相机你有这样的设备就选上。

USB scanner support  

USB的扫描仪,你有这样的设备就选上。

USB serial converter support

一些串口或类似串口的设备想通过USB接口连接到你计算机上的话,就应选上此选项。之后还会有一些细节的配置选项,但一般我们不会这样做。

3.28  Kernel hacking(内核破解)
选择了此项,则即使在系统崩溃时,你也可以进行一定的工作了。普通用户是用不着这个功能的。

本章小结:
本章用了很大的篇幅对内核配置的选项部分作了注释与说明。其中主要是对一些常用的、有用的部分作了较为详细的注释,而对个人计算机中比较活用的、无用的部分,只做了简要的介绍。读者需要配置的时候可以查阅文中相关的注释。

TOP

结束语
本文主要介绍了Linux的内核编译与注释,前面两章简要地介绍了一下Linux的背景必要知识与发展现状,为正文的开展作一些必要的铺垫。重点是放在第三章的内核配置选项的相应注释上。

因为对于初次或很少接触到内核编译选项的人而言,面对一大堆的英语选项,尤其是英语专用名词的缩写,显得无从下手。因此在第三章中,着重从对一些常用的、有用的选项做了较为详细的注释说明;而对一些个人计算机中,很少用到的、或使用价值不高的部分,则只做了简要的相关概念解释与背景知识说明。

在配置环境下,几乎每项都有英语的HELP帮助说明,其中也提供了一些ftp或http的访问地址与一些文档说明,如果有需要进一步了解的,可以查阅网上的相关介绍。

鉴于个人能力有限,本文中的很多地方仍有不完善出错漏之处,恳请读者批评指正。




参考文献
书本资源来源:

《操作系统原理Linux篇》           徐德民   著  国防工业出版社

《Linux指令词典》               陈雅秀  著  中国铁道出版社 

《Red Hat Linux 9.0基础教程》 黄丽娜 管佩森  陈彩可   著   清华大学出版社

《Linux内核完全注释》             赵烔  著   机械工业出版社

《Linux从入门到精通》            王华等  著   中国水力水电出版社

网上资源来源:

http://www.linuxsir.org/bbs/

http://math-www.uni-paderborn.de/~axel/config_help.html

http://www.google.com

http://www.baidu.com



致谢
经过几个月的努力,本科自动化专业的毕业设计与论文终于完成了。在这段时间里,我不仅巩固了专业基础知识,也提高了自己实践、探索与写作等方面的能力。

在毕业设计阶段与毕业论文的完成过程中,首先感谢自动化科学与工程学院刘少君老师的悉心指导与帮助,使我能够完成这些工作,包括:Linux操作系统的安装以及相关的配置、相关资料的提供与说明、论文书写要求、演示文稿制作等方面。更重要的是,刘老师还教导我要怎样面对学习研究与为人处事的道理,使我受益匪浅。

毕业设计期间还得到了几位读研的师兄给予的耐心帮助、细心解答,身边同学的鼓励与支持等,在此一并向他们表示衷心的感谢!

TOP

这好的东西,没人顶?!

我顶!!!!!!

TOP

顶一下!!!

TOP

TOP

我顶!
这样的帖子,对于我这样初学者来说帮助是非常大的!
谢谢啦!
想请教楼主,你曾经编译过2.6的内核吗??

TOP

以前编过。不过那以后大概有一年没有再编过了

另外,帖子是转贴的,不是我写的

TOP

一不小心又找到了好东东~
先顶起来!

TOP

太好了。牛人

TOP