Linux内核配置编译中文指南.docx
《Linux内核配置编译中文指南.docx》由会员分享,可在线阅读,更多相关《Linux内核配置编译中文指南.docx(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux内核配置编译中文指南序言近几年,linux大行其道,令不满windows蓝屏的使用者跃跃欲试,结果发现linux安装不及windows方便,界面不及windows友好,配置不及windows容易,软件不及windows丰富,以致浅尝辄止。其实,Linux有windows无可比较的两个优势:网络应用和嵌入式技术,这也正是将来最有前途的方向。同时此课题是从理论上设计具有嵌入式Linux操作系统器件的重要组成部分。如要涉足这两个方面,就必须对内核有深入理解。当然,您能够从源代码入手,但前提是您拥有程序设计和操作系统等多方面专业知识,否则,就利用现成的Linuxkernel从编译内核开场吧。
2、不幸的是,内核编译方面的资料匮乏。以上两个原因使我写这篇论文成为必要。我能够自信得讲,这是目前最详尽的内核编译方面的中文资料。值得一提的是,我在搜集翻译资料的经过中,获得了操作系统、程序设计、硬件设备、网络通信等各方各面的知识,极大的拓宽了视野,真正学有所获。感谢所有为Linux发展作出奉献的人,感谢所有Linux中文网站为促进Linux在中国的发展作出的不懈努力,他们是我搜集资料的来源。十分感谢我的指导教师官伯然教授和高斌博士,正是他们的辛勤指导让我顺利完成毕业设计。备注:#-后跟小的选项#-后还有更细选项注意-上机实践结果第一章内核编译的基础第一节内核简介内核,是一个操作系统的核心,它负责
3、管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。就好比dos下的IOSYS和MSDOSSYS一体,我们能够把这两个文件叫做DOS的核心。Linux也有它的核心,通常在根目录下,一个叫vmlinuz的文件。我们用这个文件来控制我们的整台PC,包括周边设备和软硬磁盘机、CDROM、声卡等。简单地讲,核心就是操作系统本身。没有了它,就像一个无人住的家,没有人去维持这个家的动作。一个安宁的家需要一个很用心已能当机立断的主人:一部电脑也需要很有效率已稳定的核心,也就是操作系统。因而,核心是整个系统维持下去的关键。Linux的一个重要的特点就是其源代码的公开性,所有的内核源程
4、序都能够在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都能够获取相应的源程序代码。任何一个软件工程师都能够将本人以为优秀的代码参加到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。而Linux的内核则是这些特点的最直接的代表。想象一下,拥有了内核的源程序对你来讲意味着什么?首先,我们能够了解系统是怎样工作的。通过通读源代码,我们就能够了解系统的工作原理,这在Windows下几乎是天方夜谭。其次,我们能够针对本人的情况,量体裁衣,定制合适本人的系统,这样就需要重新编译内核。在Windows下是什么情况呢?相信很多人都被越来越庞
5、大的Windows整得莫名其妙过。再次,我们能够对内核进行修改,以符合本人的需要。这意味着什么?没错,相当于本人开发了一个操作系统,但是大部分的工作已经做好了,你所要做的就是要增加并实现本人需要的功能。在Windows下,除非你是微软的核心技术人员,否则就不用痴心妄想了。先介绍一下编译核心的选项,希望能对大家消除对内核的神秘感有所帮助。1.代码成熟等级2.处理器类型和特色3.对模块的支持4.基本的选择5.即插即用支持6.块设备支持7.网络选项8.电话支持9.SCSI设备的支持10.I2O接口适配器11.网络设备支持12.配置业余无线广播13.红外支持14.ISDN的文件系统15.旧型的光驱类型
6、(非IDE界面的光驱)16.字符设备httpdocsj/doc/f9634c7c2e3f5727a5e96280.B支持18.文件系统19.控制台驱动20.声卡驱动21.Kernelhacking第二节内核版本由于Linux的源程序是完全公开的,任何人只要遵循GPL,就能够对内核加以修改并发布给别人使用。Linux的开发采用的是集市模型bazaar,与cathedral-教堂模型-对应,为了确保这些无序的开发经过能够有序地进行,Linux采用了双树系统。一个树是稳定树stabletree,另一个树是非稳定树unstabletree或者开发树developmenttree。一些新特性、实验性改良
7、等都将首先在开发树中进行。假如在开发树中所做的改良可以以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行一样的改良。一旦开发树经过了足够的发展,开发树就会成为新的稳定树。开发数就体如今源程序的版本号中;源程序版本号的形式为x.y.z:对于稳定树来讲,y是偶数;对于开发树来讲,y比相应的稳定树大一因而,是奇数。确定是以root的身份签入,然后cd到/usr/src。uname-r这个指令将会显示版本。内核版本的更新能够访问。第三节编译原因Linux作为一个自由软件,在广大喜好者的支持下,内核版本不断更新。新的内核修订了旧内核的bug,并增加了很多新的特性。假如用户想要使用这些新特性,或
8、想根据本人的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且一般会修复老版本中发现的很多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。为了正确的合理地设置内核编译配置选项,进而只编译系统需要的功能的代码,一般主要有下面四个考虑:-本人定制编译的内核运行更快具有更少的代码-系统将拥有更多的内存内核部分将不会被交换到虚拟内存中-不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞-将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些以上是针对成熟的Linux套件如Red
9、hatLinux而言,我的目的是为建造嵌入式Linux操作系统做准备,也是必由之路。第四节准备工作第一部分新版本内核的获取和更新Linux内核版本发布的官方网站是,国内各大ftp上一般都能够找到某些版本的内核。新版本的内核的发布有两种形式,一种是完好的内核版本,另外一种是patch文件,即补丁。完好的内核版本比拟大,比方linux-2.4.0-test8.tar.bz2就有18M之多。完好内核版本一般是.tar.gz.tgz文件或者是.bz2文件,二者分别是使用gzip或者bzip2进行压缩的文件,使用时需要解压缩。patch文件则比拟小,一般只要几十K到几百K,极少的会超过1M。但是patc
10、h文件是针对于特定的版本的,需要找到本人对应的版本才能使用。编译内核需要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假如
11、下载的是.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操作下面假
12、设patch-2.2.16已经位于/usr/src目录下了,否则需要先把该文件拷贝到/usr/src下:#patch-p0第二部分准备主机板和相关硬件的讲明手册其实也不用太具体,只要知道您的硬件是属于哪一类型就行了。例如:有一张SCSI卡,那就要知道这张卡的名字,有一台cd-rom,就要知道这台光驱是哪一种牌子的,能否为标准的IDE/ATAPI界面,还是另有专属接口卡呢?或者,主机版能否有支持Triton芯片通常586以上的电脑常有,这些信息能帮助我们,使得设定变得清楚且容易。因而,不管您有什么使用手册,准备好吧。即便如今不用,将来还是会用到的设Xwindowsystem时要显示卡的手册。第三
13、部分检查声卡的IRQ设定和其种类假如配有一张声卡,除了要知道卡的种类外例如SoundBlaster还需要知道这张卡的IRQ地址。一般来讲,卢卡的IRQ地址是5或7而IO地址则为220。DMA则l,不过,有时不同的声卡可能会有不同的设定。由于稍后的选项里,就会要填入这些数字。第四部分编译核心的硬件需求在编译核心时,确定您的RAM最好在8MB以上,否则可能会很慢而且问题会很多,记得查看swap有没有打开用free指令。此外,最好不要超频,不然很有可能会发生signal11的错误,使得编到一半的核心停了下来,其实编译核心就好比编译程序一样,只是由于构成核心的程序过多了,因而我们能小心尽量小心。第二章
14、内核编译的流程概述编译的流程:编译开场-makemrproper;检查所需的连接配置核心编译核心编辑/etc/lilo.conf重新启动新核心重新启动机器发现并修理故障仔细看我的文章,应该没多少问题了第一节编译开场通常要运行的第一个命令是:#cd/usr/src/linux#makemrproper该命令确保源代码目录下没有不正确的目的.o文件以及文件的相互依靠。如使用刚下载的完好的源程序包进行编译,本步能够省略。而假如屡次使用了这些源程序编译内核,那么最好要先运行一下这个命令。确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。它们分别链向源代
15、码目录下的真正的、该计算机体系构造对于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、
16、linux和scsi链接后,再创立新的链接指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。也是上面又在/usr/src下多余地创立了个名为linux的链接的原因之一.一旦万事俱备,转到/usr/src/linux。如今你也许想停下细读一下文档文件,实际上假如你有些十分的硬件,或几种光驱驱动程需要本人动手设置,他们通常这样做,当引导时这些驱动程序将给出警告,这并不碍事他们照常工作少,阅读扩展名为.txt.h.c的文件。通常我发现他们具有共性且易于配置。假如你不想冒险,你没必要做。记住你照样能够解开tar文件(或再次安装.rpm文件)恢复前的文
17、件。第二节配置内核核心内容接下来的内核配置经过比拟烦琐,但是配置的适当与否与日后Linux的运行直接相关,有必要了解一下选项的设置。配置内核能够根据需要与喜好使用下面命令中的一个:#makeconfig基于文本的最为传统的配置界面,不推荐使用#makemenuconfig基于文本选单的配置界面,字符终端下推荐使用,必须安装ncurses-dev和tk4-dev库#makexconfig基于图形窗口形式的配置界面,Xwindow下推荐使用#makeoldconfig假如只想在原来内核配置的基础上修改一些小地方,会省去不少费事假如不能使用Xwindow,那么就使用makemenuconfig好了。
18、界面固然比上面一个差点,总比makeconfig的要好多了。选择相应的配置时,有三种选择,它们分别代表的含义如下:Y-将该功能编译进内核N-不将该功能编译进内核M-将该功能编译成能够在需要时动态插入到内核中的模块在每一个选项前都有个括号,但有的是中括号有的是尖括号,还有一种圆括号。用空格键选择时能够发现,中括号里要么是空,要么是*,而尖括号里能够是空,*和M。这表示前者对应的项要么不要,要么编译到内核里;后者则多一样选择,能够编译成模块。而圆括号的内容是要在所提供的几个选项中选择一项。在编译内核的经过中,最烦杂的事情就是这步配置工作了,不清楚到底该怎样选取这些选项。实际上在配置时,大部分选项能
19、够使用其缺省值,只要小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心严密而且经常使用的部分功能代码直接编译到内核中。下面对选项分别加以介绍1Codematurityleveloptions代码成熟等级此处只要一项:promptfordevelopmentand/orincompletecode/drivers,假如要试验如今仍处于实验阶段的功能,比方khttpd、IPv6等,就必须把该项选择为Y了;否则能够把它选择
20、为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
21、)PPro/6x86MX-选择处理器类型,缺省为Ppro/6x86MX。它会对每种CPU做最佳化,让它跑得快又好。一般来讲,没有选择正确的CPU并不会有重大的影响十分是选择386,这样编译出来的核心也许会比拟小但它的速度可能就会变慢了。所以,最好要知道您的CPU是哪一种。不过,假如您的gCC编译器是2.7.0版以前的。那么只能选择386或是486。#HighMemorySupport-内核支持的最大内存数,缺省为1G。能够支持到4G、6.4G,一般能够不选.#Mathemulation-这项询问能否需L1nux核心模拟数学浮点运算器。假如有486Dx、AMD以及Pentium机器的话,这个选项
22、就不必选了,由于它们都有内建的浮点运算器。协处理器是在386时代的宠儿,如今早已不用了。不过,对于有内建浮点运算器的人来讲,选了这个选项并不会因而让内建的浮点运算器失效。但它会增大核心约45KB。#MTTRmemorytyperangeregistersupport-选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供Xserver使用。同时用来启动pentinumpro和pentinumII的特殊功能,假如你用的不是这类CPU就选N,否则也仅仅是使内核变大罢了。#Symmetricmulti-processingsupport-对称多处理支持。除非有多个CPU,否则就不用选了
23、。3.Loadablemodulesupport对模块的支持.首先,了解一点关于模块的知识。模块就像你特意插入核心中的某些东西,假如办公室有一个小网络并且有时想用一下(但并不经常),也许你想把网卡编译成一个模块。使用这个模块,机器必运行和存取/libs下的模块,意思是驱动程序(IDE,SCSI等但必须是NFS支持的网卡),文件系统(通常是ext2但可以以是nfs)和核心类型(最好是elf)必须编译在内核并且不能是模块,模块只要核心引导时才起作用,驱动程序(来网络)的存取,和文件系统安装。这些文件必须编译在核心内否则将能安装启动分区。假如安装启动分区和网络,你需要网络系统文件,和己经编译的网卡。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 内核 配置 编译 中文 指南
限制150内