手斧Linux – 从LFS到Funtoo (124)

第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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值