|
能挂载必能引导!!!
本帖最后由 2011niumao 于 2015-1-28 11:07 编辑
关于其他格式虚拟硬盘的一点思考
这里提供的方法,
例如 UBUNTU 改写local脚本 ,ARCH改写 init 脚本 ;而fedora opensuse mageia使用dracut的LINUX发行版则使用 插入一个hook脚本,就是 05-vhdmount.sh 到挂载真实根目录之前的流程中.
应该是适合于其他虚拟格式的虚拟硬盘.
例如 raw格式===可以直接使用这里的方法和制作好的initrd等引导. 因为本质上固定大小vhd就是raw格式,再在末尾附加了一个扇区而已.
例如 img格式===模拟的是一个分区,而不是一个硬盘.或者说 img文件内部不能再分区.
只需要把mount 文件 到loop设备 这个阶段中的 partx 那一句删除, mount 真实根分区到 $NEWROOT 阶段中的 mount语句 改成- mount -t $VLOOPFSTYPE -o loop,ro $realroot $NEWROOT
复制代码 就可以吧?当然只是猜测,逻辑上是对的.实际实现可能需要调整. 比如启动参数中vloop调整为loop , vlooppart舍弃===因为img不分区,没有分区选择了.
注释 img格式虚拟硬盘的引导问题,UBUNTU与ARCH已经解决,UBUNTU就是WUBI方式安装.其代码在local脚本中是 if [ "LOOP"] ... if 这一段.正在 if [ "VLOOP" ] ... if代码上面.实际上VLOOP这一段代码就是模仿LOOP,也就是WUBI,来实现的.所以这里引导固定大小VHD的方法实际上也就是一种新的WUBI模式而已.而ARCHLINUX的img格式引导,则有carbonjiao给出了一个解决,使用的是hook.详情可百度.这里提倡修改init的方法实现img格式的引导,也是一种简便的思路.
例如 qcow2格式===这里的挂载命令不适合.但在网络上查到了直接在LINUX内挂载qcow2虚拟硬盘的命令.应该也是可以的.
只需要把所需要的dracut模块 ,内核驱动 二进制命令文件 相应的hook脚本塞入到dracut内部就行了.
总之一句话:能在LINUX系统内部挂载的虚拟硬盘格式,一定能引导. 能挂载必能引导。 |
|