关闭

手斧Linux – 从LFS到Funtoo (124)

标签: FuntooLFSlinux手斧Linux
182人阅读 评论(0) 收藏 举报

第13章 LiveCD问题分析

1,关于qemu命令行里的  -boot d -cdrom myfuntoo.iso。

-cdrom myfuntoo.iso 让qemu虚拟机里输出一个cdrom设备,并有光盘output.iso在里面。 

-boot d 让qemu从cdrom里开始加载。

如果output.iso正常,qemu会从iso里找到isolinux/isolinux.bin,开始从光盘引导。

为什么是isolinux/isolinux.bin?这个是在mkisofs时指定的。 isolinux/isolinux.bin会开始解释isolinux/isolinux.cfg里参数,开始一个启动选择菜单或简单的交互,开始一个内核的启动。

2,关于iso里的长文件名,

为了能在光盘的文件系统里存放非8.3的文件名,需要在mkisofs时,带上  -joliet -joliet-long -full-iso9660-filenames -allow-leading-dots。

3,在启动过程中停下来检查。

在做iso时,isolinux/isolinux.cfg里要指定kernel/initrd/loop,将loop指定的文件更名,让启动走到initrd时,做不成根文件系统,就可以进入一个busybox的shell里。

4,内核对文件系统的支持。

内核被加载后,如果内核的配置正确,工作正常,会生成设备/dev/sr0,对应于光驱设备,如果没能有/dev/sr0生成,需要检查内核的编译配置。

initrd会执行其中的/linuxrc来执行最后的根文件系统的加载,需要mount /dev/sr0,这需要内核对iso文件系统的支持,在内核配置里要找开isofs的相关支持,ISO9660_FS  JOLIET   ZISOFS 几项。如果isofs以module方式编译支持,而要在/usr/share/genkernel/arch/x86_64/modules_load里加上isofs的支持,使得genkernel时,将模块带上,启动地会加载。否则,linuxrc会报出不认得/dev/sr0里的介质。

initrd在linuxrc里去mount /dev/sr0并不是最后的根目录,livecd启动还要将iso里的squashfs映象文件mount上来,做为最后的根文件系统。因此,要打开内核配置里和SQUASHFS有关的选项。如果是以模块方式编译,也要将它加到/usr/share/genkernel/arch/x86_64/modules_load里。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:27201次
    • 积分:1731
    • 等级:
    • 排名:千里之外
    • 原创:155篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档