近来在研究Grub,发现了一个很好玩的东西。
因为Grub的测试需要不断开关机来测试数据是否正确。
为了保护我那心爱的老爷机,我决定在虚拟机上面测试Grub。
可是,我将Grub都写在U盘上,而VMware , VirtualBox不支持从U盘启动Grub。
折腾了很久后。。。。。。。
我想出了一个办法,因为虚拟机都是划出一块文件,然后在上面做虚拟的硬盘设备。
如果我直接在这个文件上面分区,写MBR等信息,虚拟机不就可以直接启动这上面的Grub吗。
然后,我又继续折腾了很久。。。。
我发现不是所有的虚拟机格式都支持直接将数据写在一个文件上面的。
我测试的格式有vmdk,vhd等格式。
我发现只有vhd这种格式相当直接,它的放置方式为将文件看成是一个硬盘来直接操作,上面根本就没有写上额外的虚拟机信息。
所以,这种格式我们可以直接拿来使用。
首先,我们先将这个文件格式化。
mkfs.msdos mx.vhd
然后,将它挂载成一个硬盘,并挂到/mnt目录下面
mount -o loop mx.vhd /mnt
最后,写入grub引导就可以了
grub-install --boot-directory=/mnt /dev/loop0 --force
然后,开机,哈哈,就这样,看到了我心爱的Grub菜单了。
整个过程中,我根本不需要对文件进行解压等任何操作,就可以对里面进行格式化,增删文件,写MBR等任何操作。
而且,这种办法有个好处就是,你在挂载目录里面进行的任何操作,都能直接与虚拟机内的文件修改。
这样就能将虚拟机里面的文件挂载到你喜欢的任何目录都可以了。
loop设备还真是个好东西啊。
可是,我还是有一个疑问。
我尝试用
losetup /dev/loop0 mx.vhd
来将loop设备和mx.vhd文件连接在一起时,
fdisk /de

本文介绍了如何利用loop设备在虚拟机(如VMware, VirtualBox)上直接对vhd文件进行分区、写MBR和安装Grub,以避免对真实硬件的影响。作者通过挂载loop设备并格式化文件,成功实现了Grub的测试。同时,文章提到了在loop设备上进行多分区操作的疑问,以及后续找到解决方案的过程,强调了Linux下loop设备的强大功能。"
122743817,8265616,pytest参数化详解:从基础到高级,"['python', '测试框架', 'pytest', '数据驱动']

2408

被折叠的 条评论
为什么被折叠?



