资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,实验,10,Linux,内核编译,一、实验目的,二、实验工具与设备,三、实验预备知识,四、实验内容和步骤,五、实验总结,一、实验目的,1,了解,Linux,内核的版本和组成。,2,掌握,Linux,系统内核的编译操作方法。,3,了解,Linux,系统内核的配置方法。,二、实验工具与设备,1,准备最新的,Linux,操作系统内核,或用于本实验的装有,Linux,操作系统的计算机并能直接连入,Internet,。,2,实验设备:计算机。,三、实验预备知识,内核是一个操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。,Linux,的一个重要特点是其源代码的公开性,所有的内核源程序都可以在,/,usr,/,src,/,linux,下找到,大部分应用软件也遵循,GPL,而设计,任何人都可以获取相应的源程序代码。全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此带来的一个明显好处,是修补漏洞的快速以及对最新软件技术的利用。,Linux,的内核是这些特点最直接的代表。,Linux,作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订了旧内核的,bug,,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的系统度身定制一个更高效、更稳定的内核,就需要重新编译内核。,通常,更新的内核支持更多的硬件,具备更好的进程管理能力,运行速度更快、更稳定,并且会修复老版本中发现的许多漏洞等。经常性地选择升级更新的系统内核,是,Linux,用户的必要操作内容。,为了正确合理地设置内核编译配置选项,只编译系统需要功能的代码,原因如下。,(,1,),自己定制编译的内核运行更快(具有更少的代码)。,(,2,),系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)。,(,3,),不需要的功能编译进入内核,可能会增加被系统攻击者利用的漏洞。,(,4,),将某种功能编译为模块方式比编译到内核的方式速度要慢一些。,内核编译模式可以分为编译到内核和编译成模块两种模式。要增加对某部分功能的支持,例如网络等,可以把相应部分编译到内核中(,build-in,),也可以把该部分编译成模块(,module,)动态调用。如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,其优点是方便、速度快,机器启动即可使用这部分功能;其缺点是使内核变得庞大起来,无论是否需要这部分功能,它都会存在。建议将经常使用的部分直接编译到内核中,如网卡。如果编译成模块,则生成对应的,.o,文件,使用时可以动态加载,优点是不会使内核过分庞大,缺点是必须得由用户自己来调用这些模块。,四、实验内容和步骤,1,下载新内核,在,http:/www.kernel.org/pub/,linux,/kernel,可以下载,Linux,的最新内核代码。内核的源代码按内核版本(,v2.4,、,v2.5,等)组织到多个不同的目录中。在每个目录中,文件被冠以“,linux,-x.y.z.tar.,gz,”,和“,linux,-x.y.z.tar.bz2”,等,这些就是,Linux,内核的源代码。同时存在一些类似“,patch-x.y.z.,gz,”,和“,patch-x.y.z.bz2”,的文件,这是用来更新前面完整的内核源代码的补丁包。,本实验从,http:/www.kernel.org/pub/,linux,/kernel/v2.4/,linux,-2.4.20.tar.,gz,下载,linux,-2.4.20.tar.,gz,内核,并将下载的内核,linux,-2.4.20.tar.,gz,保存在“,/,usr,/,src,”,目录下。,2,内核解包,编译内核前,应对下载的内核文件进行解包,操作方法如下。,(,1,)用以下命令将当前目录改到,/,usr,/,src,下,:,cd,/,usr,/,src,(,2,)如果,/,usr,/,src,目录下存在一个“,linux,”,的目录,应将其改名为“,linux,.old”,;如果不存在,则直接执行以下命令,:,tar,xzvf,/root/,linux,-2.4.20.tar.,gz,(,3,)执行该命令后,内核源代码被释放到一个新的“,linux,-2.4.20”,目录下。,注意:目录名可能因版本的不同而有所区别。,为方便起见,将该目录名字改为“,linux,”,,操作命令如下:,mv linux,-2.4.20,linux,3,配置内核,Linux,提供多种配置内核的方法,可以根据需要与爱好使用下面命令中的一个。,make,config,命令:基于文本配置界面的配置命令。,make,menuconfig,命令:基于文本菜单配置界面的配置命令。,make,xconfig,命令:基于图形窗口模式配置界面的配置命令。,本实验以基于图形窗口模式配置界面的配置命令为例配置内核,具体操作步骤如下。,(,1,),用以下命令将当前目录改到解包文件目录“,/,usr,/,src,/,linux,”,下:,cd,/,usr,/,src,/,linux,(,2,),用以下配置命令打开配置对话框:,make,xconfig,执行命令后,弹出配置对话框,如图,10-1,所示。,由图,10-1,可见,配置内核的选项很多。选择每一项配置时,可以有三个选择按钮,如图,10-2,所示。,图,10-1 Linux,内核配置对话框,图,10-2,配置内核的选择按钮,每个按钮的意义如下。,y,:将该功能编译进内核。,n,:不将该功能编译进内核。,m,:将该功能编译成可以在需要时动态插入到内核中的模块。,单击“,Main Menu”,按钮,返回主配置窗口;单击“,Next”,按钮,配置下一个配置项;单击“,Prev,”,按钮,配置上一个配置项。,在编译内核的过程中,大部分选项可以使用缺省值,只有部分要根据用户的需要进行更改。修改的原则是将与内核其他部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗内存,简化该功能相应的环境改变时对内核的影响;不需要的功能不选;与内核关系紧密而且经常使用的部分功能代码则直接编译到内核中。,以下是几个主要的配置项(其他配置内容参考附录,3,)。,Loadable module support,:,设置对可加载模块的支持,有以下三个选项。,Enable loadable module support,:,除非准备把所有需要的内容都编译到内核里面,否则该项应该是必选的(,y,)。,Set version information on all module symbols,:,有关版本信息加载项,可以不选它(,n,)。,Kernel module loader,:,让内核在启动时有自己装入必需模块的能力,建议选上(,y,)。,Processor type and features,:,设置,CPU,的类型,有关的几个选项如下。,Processor family,:,根据所使用的计算机选择,CPU,类型。,High Memory Support,:,设置大容量内存的支持,可以支持到,64GB,,一般可以不选。,Math emulation,:,协处理器仿真,如果,CPU,中没有数字协处理器则应选中,不过从,486,以后一般的,CPU,都有数字协处理器了,所以一般不选(,n,)。,MTTR support,:,MTTR,支持,可不选(,n,),。,Symmetric multi-processing support,:,对称多处理支持,如果计算机上有多于一个,CPU,就一定要选,若是单,CPU,,则不选(,n,)。,General setup,:,对普通的一些属性进行设置。这部分内容很多,一般使用缺省设置,下面介绍经常使用的一些选项。,Networking support,:,网络支持,必选,没有网卡也建议选上(,y,)。,PCI support,:,PCI,卡的支持,如果使用了,PCI,接口卡,则必选(,y,)。,PCI access mode,:,PCI,卡的存取模式,可供选择的有,BIOS,、,Direct,和,Any,,一般可选,Any,。,Support for hot-,pluggabel,devices,:,热插拔设备支持,支持的不是太好,可不选。,PCMCIA/,CardBus,support,:,PCMCIA/,CardBus,支持,有,PCMCIA,就必选了(,y,)。,Parallel port support,:,并口的支持,一般应选上(,y,)。,Plug and Play configuration,:,即插即用配置。,Linux,有一定的即插即用功能,可选上。,Block devices,:,块设备支持,其中,,Normal PC floppy disk support,:,普通,PC,软盘支持,该项应选(,y,);,Network block device support,:,网络块设备支持,若希望访问网上邻居的内容,则应选取。,Networking options,:要选取,TCP/IP networking,选项。,Network device support,:网络设备支持,本项的选项很多,要注意选取正在使用的网络设备,例如正在使用,Realtek,8139,的网卡,则“,Ethernet,(,10 or 100Mbit,)”就必须选上,还应选中对应的网卡型号“,RealTeck,RTL-8139 PCI Fast Ethernet Adapter support”,,若找不到所用网卡的型号,则应寻求厂商的支持,或到购买的网卡驱动盘中寻找。,Mice,:鼠标设置。可以支持总线、串口、,PS/2,、,C&T 82C710 mouse port,、,PC110 digitizer pad,等类型的鼠标,应根据所用的鼠标类型进行选择。,File systems,:文件系统类型。内容很多,主要有以下几项。,DOS FAT,fs,support,:,DOS FAT,文件格式的支持,可以支持,FAT16,、,FAT32,。,NTFS file system support,:,NTFS,是,Windows NT/2000,使用的文件格式。,/proc file system support,:,/proc,文件系统是,Linux,提供给用户和系统进行交互的通道,建议选上,否则某些功能没法正确执行。,Sound,:声卡驱动,从列表中找到对应的声卡型号。,USB support,:,USB,接口的支持,根据需要选择。,(,3,),配置内核后,单击“,Save and Exit”,按钮存盘退出配置窗口。,4,生成依赖(,dependency,)信息,清除旧的编译结果,配置内核后,返回命令窗口。为确保关键文件,在正确的位置输入以下命令:,make,dep,为确保所有有关文件都处于最新版本状态,需要输入命令:,make clean,检查是否生成依赖(,dependency,)信息并清除旧的编译结果。,5,编译二进制内核映像文件,在“,/,usr,/,src,/,linux,”,目录下建立二进制的内核映像文件,命令如下:,make,bzImage,(输入命令时请注意区分大小写),编译过程持续几分钟。编译结束后,在,/,usr,/,src,/,linux,/arch/i386/boot,目录下可找到名为“,bzImage,”,的映像文件,即新内核的映像文件。,6,编译模块,编译二进制内核映像文件后,需要进行模块的编译,命令如下:,make modules,make modules_install,模块被编译且安装到,/,usr,/lib/,目录下。至此,内核被编译完成,内核模块也编译完成并被安装。,7,配置启动管理器,为了操作方便,先将编译
展开阅读全文