编译Linux最新内核详细教程


编译 Linux 最新内核详细教程 [日期:2010-12-23] 来源:51cto 作者:zjuedward 一、实验目的 学习重新编译 Linux 内核,理解、掌握 Linux 内核和发行版本的区别。 二、实验内容 在 Linux 操作系统环境下重新编译内核。实验主要内容: A. 查找并且下载一份内核源代码,本实验使用最新的 Linux 内核 2.6.36。 B. 配置内核。 C. 编译内核和模块。 D. 配置启动文件。 本次实验环境是 Linux2.6.35 内核的环境下,下载并重新编译内核源代码(2.6.36);然后,配置 GNU 的启动引导工具 grub,成功运行编译成功的内核。 三、主要仪器设备(必填) Linux 环境:Utuntu 10.10,Linux 内核 2.6.35 待编译内核:Linux2.6.36 四、操作方法和实验步骤 【1】下载内核源代码 从这里下载最新的 Linux 内核 2.6.36。 【2】部署内核源代码 打开终端,更改用户权限为 root。具体做法是在终端输入 sudo su,然后按提示输入密码。判断是 否是 root 用户是使用 whoami 命令,若输出为 root 则已经切换到 root 账户。 输入 mv linux-2.6.36.tar.gz /usr/src,目的是把下载的内核源代码文件移到/usr/src 目录。 输入 cd /usr/src 切换到该目录下。 输入 tar zxvf linux-2.6.36.tar.gz,目的是解压内核包,www.linuxidc.com 生成的源代码放在 linux- 2.6.36 目录下。 输入 cd linux-2.6.36,切换到该目录下。 输入 cp /boot/config-,然后按下 Tab 键,系统会自动填上该目录下符合条件的文件名,然后继续 输入 .config,目的是使用在 boot 目录下的原配置文件。 【3】配置内核 配置内核的方法很多,主要有如下几种: #make menuconfig //基于 ncurse 库编制的图形工具界面 #make config //基于文本命令行工具,不推荐使用 #make xconfig //基于 X11 图形工具界面 #make gconfig //基于 gtk+的图形工具界面 由于对 Linux 还处在初学阶段,所以选择了简单的配置内核方法,即 make menuconfig。在终端输 入 make menuconfig,等待几秒后,终端变成图形化的内核配置界面。进行配置时,大部分选项 使用其缺省值,只有一小部分需要根据不同的需要选择。 对每一个配置选项,用户有三种选择,它们分别代表的含义如下: 或[*]——将该功能编译进内核 []——不将该功能编译进内核 [M]——将该功能编译成可以在需要时动态插入到内核中的代码 本实验在 make menuconfig 后,把 ext2 和 ext3 文件系统编译进内核。如果用户是在虚拟机下编译 的,那么一般要把 SCSI 设备编译进内核。不是在虚拟机下编译的也可以把它编译进去,不会有什 么影响的。 【4】编译内核 这步是时间最长的一个步骤,一般在 3 个小时左右。 编译内核只需在终端输入 make,然后等待编译的完成。 【5】编译和安装内核模块 输入 make modules_install,这步很快能完成。 【6】安装内核 输入 make install 【7】生成启动 依次输入: sudo mkinitramfs -o /boot/initrd.img-2.6.36 sudo update-initramfs -c -k 2.6.36 sudo update-grub2 //自动修改系统引导配置,产生 grub.cfg 启动文件。 五、实验结果和分析 把内核源代码移动到目录/usr/src,如下图 在成功执行语句 sudo mkinitramfs -o /boot/initrd.img-2.6.36 sudo update-initramfs -c -k 2.6.36 后的 boot 目录,如下图 在成功执行语句 sudo update-grub2 后 grub.cfg 文件中增加了新内核的启动项,如下图 在所有的实验步骤成功完成后,重新启动,可以发现在启动项中多了两项,分别为 Linux2.6.36 模 式和 Linux2.6.36 recovery 模式,选择 Linux2.6.36 模式,进入新的内核,若在启动过程中没有跳 出错误提示,表示已经成功了。 进入系统后,打开终端,输入 uname -a,输出如下图,表明现在已经是 2.6.36 的内核了 六、讨论、心得 1、本次实验,共编译了两次内核,在第一次编译时,对内核的配置这块没有把 ext2 和 ext3 文件 系统编译进内核,导致了编译完的内核无法成功启动。在第二次编译中,经过仔细的对内核的配置, 把 ext2 和 ext3 已经 SCSI 编译进内核,终于成功了。这让我觉得内核编译后能否成功启动的关键 是内核的配置。 2、编译后的每一个步骤执行后,可以通过查看相关目录是否生成了预期的文件来判断过程的正确 与否。 3、Linux 通过在系统引导后从/boot 目录下读取内核映像到内存中来完成启动。 4、initrd.img 是 Linux 启动过程中很重要的一个文件,如果你编译内核时将一部分功能编译为可加 载模块。如果系统的一些设备的驱动编译为可加载模块,那么启动时如果没有指定 INITRD=/path_to_initrd.img,那么系统启动或者会失败,或者启动后会有设备无法使用(像网卡 或者其 它设备)。 如果没指定 initrd.img 或者指定的 initrd.img 中并没有包含正确的驱动模块,则系统启动时会挂起, 并报告"kernel panic: VFS: Unable to mount root fs on 08:06"的错误。 5、grub.cfg 文件保存着系统引导配置信息,记录着系统的启动项。新编译后的内核信息必须包含 到该文件中,这样在系统启动时才会出现新的启动项的选项。
还剩3页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享pdf获得金币 ] 1 人已下载

下载pdf

pdf贡献者

a29534987

贡献于2011-12-17

下载需要 15 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf