linuxkernel26内核升级完全配置详解

上传人:ji****en 文档编号:107674065 上传时间:2019-10-20 格式:DOC 页数:57 大小:364.51KB
返回 下载 相关 举报
linuxkernel26内核升级完全配置详解_第1页
第1页 / 共57页
linuxkernel26内核升级完全配置详解_第2页
第2页 / 共57页
linuxkernel26内核升级完全配置详解_第3页
第3页 / 共57页
linuxkernel26内核升级完全配置详解_第4页
第4页 / 共57页
linuxkernel26内核升级完全配置详解_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《linuxkernel26内核升级完全配置详解》由会员分享,可在线阅读,更多相关《linuxkernel26内核升级完全配置详解(57页珍藏版)》请在金锄头文库上搜索。

1、注: 内核配置选项中关于Frame Buffer的选项不能编译成模块,否则无法使用Frame Buffer。特此说明!本文档中关于硬件选项请遵照自己电脑的配置选择!一、内核简介内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linu x的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源程序代码。全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此引发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术

2、的利用。而Linux的内核则是这些特点的最直接的代表。想象一下,拥有了内核的源程序对你来说意味着什么?首先,我们可以了解系统是如何工作的。通过通读源代码,我们就可以了解系统的工作原理,这在Windows下简直是天方夜谭。其次,我们可以针对自己的情况,量体裁衣,定制适合自己的系统,这样就需要重新编译内核。在Windows下是什么情况呢?相信很多人都被越来越庞大的Windows整得莫名其妙过。再次,我们可以对内核进行修改,以符合自己的需要。这意味着什么?没错,相当于自己开发了一个操作系统,但是大部分的工作已经做好了,你所要做的就是要增加并实现自己需要的功能。在Windows下,除非你是微软的核心技

3、术人员,否则就不用痴心妄想了。二、内核版本号由于Linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发布给他人使用。Linux的开发采用的是集市模型(bazaar,与cathedral-教堂模型-对应),为了确保这些无序的开发过程能够有序地进行,Linux采用了双树系统。一个树是稳定树(stable tree),另一个树是非稳定树(unstable tree)或者开发树(developmenttree)。一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所做的改进也可以应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。一旦开发树经过了足够

4、的发展,开发树就会成为新的稳定树。开发数就体现在源程序的版本号中;源程序版本号的形式为x.y.z:对于稳定树来说,y是偶数;对于开发树来说,y比相应的稳定树大一(因此,是奇数)。到目前为止,稳定树的最高版本是2.6.5;开发树的最新版本是2.6.12。下载内核版本请访问http:/www.kernel.org/三、为什么重新编译内核Linu x作为一个自由软件,在广大爱好者的支持下,内核版本不细隆碌哪诤诵薅司赡诤说腷ug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。通常,更新的内核会支持更多的硬件,具备更好的进程管理

5、能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是Linux使用者的必要操作内容。为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般主要有下面四个考虑:l 自己定制编译的内核运行更快(具有更少的代码)l 系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)l 不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞l 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些四、内核编译模式要增加对某部分功能的支持,比如网络之类,可以把相应部分编译到内核中(build-in),也可以把该部分编译成模块(module

6、),动态调用。如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在,这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块。五、新版本内核的获取和更新Linu x内核版本发布的官方网站是http:/www.kernel.org 新版本的内核的发布有两种形式,一种是full/ Source版本,另外一种是patch文件,

7、即补丁。完整的内核版本比较大,一般是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的符号链接,指向一个

8、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

9、.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/linuxmake mrproper该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。由于我们使用刚下载的完整的源程序包进行编译,所以本步可以省略。而如果你多次使用了这些源程序编译内核,那么最好要先运行一下这个命令。确保/usr/include/目录下的asm、l

10、inux和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/l

11、inux/include/scsi scsi这是配置非常重要的一部分。删除掉/usr/include下的asm、linux和scsi链接后,再创建新的链接指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在系统上正确编译所需要的重要的头文件。现在你应该明白为什么我们上面又在/usr/src下多余地创建了个名为linux的链接了吧?接下来的内核配置过程比较烦琐,但是配置的适当与否与日后Linux的运行直接相关,有必要了解一下一些主要的且经常用到的选项的设置。配置内核可以根据需要与爱好使用下面命令中的一个:#make config(基于文本的最为传统的配置界面,不推荐使用)#make

12、 menuconfig(基于文本选单的配置界面,字符终端下推荐使用)#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,那么就推荐你使用这个命令,界面如下:如果你不能使用Xwindow,那么就使用make menuconfig好了。界面虽然比上面一个差点,总比make config的要好多了,下图为make menuconfig的界面:选择相应的配置时,有三种选择,它们分别代表的含义如下:

13、Y-将该功能编译进内核N-不将该功能编译进内核M-将该功能编译成可以在需要时动态插入到内核中的模块如果使用的是make xconfig,使用鼠标就可以选择对应的选项。如果使用的是make menuconfig,则需要使用空格键进行选取。你会发现在每一个选项前都有个括号, 但有的是中括号有的是尖括号,还有一种圆括号。 用空格键选择时可以发现,中括号里要么是空,要么是*,而尖括号里可以是空,*和M这表示前者对应的项要么不要,要么编译到内核里;后者则多一样选择,可以编译成模块。而圆括号的内容是要你在所提供的几个选项中选择一项。在编译内核的过程中,最烦杂的事情就是这步配置工作了,很多新手都不清楚到底该

14、如何选取这些选项。实际上在配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。配置完后,存盘退出,当然你也可以把现在的配置文件保存起来,这样下次再配置的时候就省力气了。接下来是编译,输入以下命令。#make dep#make clean#make bzImage或make zImage#make modules#make modul

15、es_install#depmod -a第一个命令make dep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要;第二命令make clean完成删除前面步骤留下的文件,以避免出现一些错误;make zImage和makebzImage则实现完全编译内核,二者生成的内核都是使用gzip压缩的,只要使用一个就够了,它们的区别在于使用make bzImage可以生成大一点的内核。建议大家使用make bzImage命令。后面三个命令只有在你进行配置的过程中,在回答Enable loadable module support (CONFIG_MODULES)时选了Yes才是必要的,make modules和make modules_install分别生成相应的模块和把模块拷贝到需要的目录中。严格说来,depmod -a命令和编译过程并没有关系,它是生成模块间的依赖关系,这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。更新经过以上的步骤,我们终于得到了新版本的内核。为了能够使用新版本的内核,我们还需要做一些改动:#cp /usr/src/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 电子/通信 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号