《linux内核编译详细教程_1.docx》由会员分享,可在线阅读,更多相关《linux内核编译详细教程_1.docx(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、linux内核编译详细教程具体教程:编译Linux最新内核一、实验目的学习重新编译Linux内核,理解、把握Linux内核和发行版本的区别。二、实验内容在Linux操作系统环境下重新编译内核。实验主要内容:A.查找并且下载一份内核源代码,本实验使用最新的Linux内核2.6.36。B.配置内核。C.编译内核和模块。D.配置启动文件。本次实验环境是Linux2.6.35内核的环境下,下载并重新编译内核源代码2.6.36;然后,配置GNU的启动引导工具grub,成功运行编译成功的内核。三、主要仪器设备必填Linux环境:utuntu10.10,linux内核2.6.35待编译内核:linux2.6
2、.36四、操作方法和实验步骤【1】下载内核源代码从httpdocsj/doc/b48c0208650e52ea551898e6./newlinux/files/jijiangmin网站上下载最新的Linux内核2.6.36。【2】部署内核源代码打开终端,更改用户权限为root。详细做法是在终端输入sudosu,然后按提示输入密码。判定能否是root用户是使用whoami命令,若输出为root则已经切换到root账户。输入mvlinux-2.6.36.tar.gz/usr/src,目的是把下载的内核源代码文件移到/usr/src目录。输入cd/usr/src切换到该目录下。输入tarzxvfli
3、nux-2.6.36.tar.gz,目的是解压内核包,生成的源代码放在linux-2.6.36目录下。输入cdlinux-2.6.36,切换到该目录下。输入cp/boot/config-,然后按下Tab键,系统会自动填上该目录下符合条件的文件名,然后继续输入.config,目的是使用在boot目录下的原配置文件。【3】配置内核配置内核的方法很多,主要有如下几种:#makemenuconfig/基于ncurse库编制的图形工具界面#makeconfig/基于文本命令行工具,不推荐使用#makexconfig/基于X11图形工具界面#makegconfig/基于gtk+的图形工具界面由于对Linu
4、x还处在初学阶段,所以选择了简单的配置内核方法,即makemenuconfig。在终端输入makemenuconfig,等待几秒后,终端变成图形化的内核配置界面。进行配置时,大部分选项使用其缺省值,只要一小部分需要根据不同的需要选择。对每一个配置选项,用户有三种选择,它们分别代表的含义如下:或*将该功能编译进内核不将该功能编译进内核 M将该功能编译成能够在需要时动态插入到内核中的代码本实验在makemenuconfig后,把ext2和ext3文件系统编译进内核。假如用户是在虚拟机下编译的,那么一般要把SCSI设备编译进内核。不是在虚拟机下编译的可以以把它编译进去,不会有什么影响的。【4】编译内
5、核这步是时间最长的一个步骤,一般在3个小时左右。编译内核只需在终端输入make,然后等待编译的完成。【5】编译和安装内核模块输入makemodules_install,这步很快能完成。【6】安装内核输入makeinstall【7】生成启动依次输入:sudomkinitramfs-o/boot/initrd.img-2.6.36sudoupdate-initramfs-c-k2.6.36sudoupdate-grub2/自动修改系统引导配置,产生grub.cfg启动文件。五、实验结果和分析在所有的实验步骤成功完成后,重新启动,能够发如今启动项中多了两项,分别为Linux2.6.36形式和Linu
6、x2.6.36recovery形式,选择Linux2.6.36形式,进入新的内核,若在启动经过中没有跳出错误提示,表示已经成功了。进入系统后,打开终端,输入uname-a,输出如下列图,表明如今已经是2.6.36的内核了六、讨论、心得1、本次实验,共编译了两次内核,在第一次编译时,对内核的配置这块没有把ext2和ext3文件系统编译进内核,导致了编译完的内核无法成功启动。在第二次编译中,经过仔细的对内核的配置,把ext2和ext3已经SCSI编译进内核,终于成功了。这让我觉得内核编译后能否成功启动的关键是内核的配置。2、编译后的每一个步骤执行后,能够通过查看相关目录能否生成了预期的文件来判定经
7、过的正确与否。3、Linux通过在系统引导后从/boot目录下读取内核映像到内存中来完成启动。4、initrd.img是Linux启动经过中很重要的一个文件,假如你编译内核时将一部分功能编译为可加载模块。假如系统的一些设备的驱动编译为可加载模块,那么启动时假如没有指定INITRD=/path_to_initrd.img,那么系统启动或者会失败,或者启动后会有设备无法使用像网卡或者其它设备。假如没指定initrd.img或者指定的initrd.img中并没有包含正确的驱动模块,则系统启动时会挂起,并报告kernelpanic:VFS:Unabletomountrootfson08:06的错误。5、grub.cfg文件保存着系统引导配置信息,记录着系统的启动项。新编译后的内核信息必须包含到该文件中,这样在系统启动时才会出现新的启动项的选项。