六、讨论、心得
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文件保存着系统引导配置信息,记录着系统的启动项。新编译后的内核信息必须包含到该文件中,这样在系统启动时才会出现新的启动项的选项。