首页 » IT技术 » 正文

Grub2引导VHDX中的Windows

在windows to go U盘上安装无限个系统,玩这个的人应该比较少吧,如果仔细想想,即使实现了意义似乎也不大,但是,活着就是折腾,未来也许是件有意义的事情。

使用的是chipfancier 固态U盘,128G版,使用传统的方式在U盘上安装了win10和kali linux我,使用grub2做引导程序,因为毕竟是U盘,免不了要用来给其他的电脑装系统,所有提取了syslinux的memdisk来装载大白菜ISO镜像win8PE 和win2003PE,到此为止,U盘上有4个系统,分别是:windows10、kali linux、win8PE、win2003PE。接下来接着折腾,往U盘上装更多的系统。

思路:使用vhd虚拟磁盘,将系统安装在vhd中,将vhd复制到U盘上,使用grub2引导vhd中的系统。

思路看似简单,实现起来能要命。grub2引导ISO镜像,和引导vhd都要使用memdisk,使用memdisk引导大白菜ISO还好,因为winPE也就一百多兆,毕竟是固态U盘,加载速度挺快,但是引导vhd就歇菜了,因为一个装有系统的vhd至少也是十几个G以上了。在快的U盘估计也没招。

但方法总是有的。

网上看到一篇帖子的内容是用grub2引导UEFI(gpt硬盘)中的Windows 7开机的,看完帖子明白了以下几点(思路):
1. 在BOIS下,Windows7 开机的时候只要读取BCD后就可以引导VHD,但是BCD所在硬盘必须有MBR,即为主分区,但重要的是这个硬盘可以是物理的也可是虚拟的,也就是说如果在gpt的硬盘上,可以虚拟出一块硬盘并写入MBR,再加入引导文件即可实现引导物理磁盘上的操作系统。
2.VHD是一个硬盘镜像,只是最后多了一点文件,形成了vhd格式。发现原来当 type=fixed 的时候,vhd 其实就是 raw image 加上 512 字节的 footer。切掉这个尾巴之后,得到的东西和 dd 式的 raw image 是一模一样的。而就算不切掉尾巴,这一部分也会被认为是未分区空间从而被忽略掉。所以,其实 type=fixed 的 vhd 是不用转换,直接可以当 raw image 用喂给 MEMDISK 的。
3. Windows 的安装框架是 Windows PE,而 Windows 安装镜像文件也就是 Windows PE 和 install.wim 的组合而已,所以可以直接从安装镜像里就可以释放一个 Windows PE 出来。Windows安装包做的事::解压 install.wim 到指定分区、写入引导扇区、写入 BCD 这三样。
4. VHD可以实现多级引导,也就是说VHD中的文件还可以再识别另一个VHD中的文件。这个是重点,也就是实现Grub2引导VHDX中Windwos的原理。

具体的步骤如下:
虚拟一块VHD或VHDX硬盘,并写入MBR和引导文件后,再用这个硬盘来引导VHD文件中的系统,这样借助memdisk后grub2可以引导VHD,而memdisk引导后可以直接读取MBR,(关于memdisk可以去其WIKI上获取更多信息),这样再把BCD中的引导路径更改为本地的系统或VHD中的系统。步骤如下:

1.首先创建一个VHD磁盘,进入命令行后DISKPART。
Create vdisk file=c:\win7bootmgr.vhd maximum=32 type=fixed
Select vdisk file=c:\win7bootmgr.vhd
Attach vdisk
Create partition primary
Active //这一步是MBR硬盘上必须的
Format label=bootmgr quick
Assign letter=j

2. 之后用bcdboot.exe来将引导文件复制到这个盘中,Bcdboot c:\windows /s h: /l zh-cn (/f可以加也可以不加,如果/f all 是BIOS和UEFI的启动文件都复制,不加就是BIOS,/f uefi是UEFI)

3. 用bootice写入MBR,并且修改复制进去的引导文件中的BCD,将其改为想要的路径。如果要引导VHD则改为VHD所在。

4. 下载最新版syslinux提取memdisk,并放到相应的位置,自己决定。

5. 在etc/grub.d/40_custom中写入菜单:

menuentry “Windows 7 ” {
linux16 /boot/syslinux/memdisk harddisk
initrd16 /boot/win7bootmgr.vhd
}
然后在Ubuntu中执行sudo update-grub。

开机重启即可成功用Grub2引导VHD/VHDX中的Windows。PS:启动后会出现诡异的花屏现象,但是系统可以正常启动,使用没有问题。

通过以上步骤,意味着,使用vhd可以向U盘上安装更多的系统,简单到复制粘贴就可以了。扩展一下思路,以后安装系统有了新方法,拿到一个新的硬盘不用再去使用PE安装系统,直接简单分区,复制一个vhd上去,建立引导,系统安装完毕。而且,这个vhd中的系统可以内置好自己常用软件,这个也就不要每次装系统倒要花时间安装一大堆自己需要的软件了。

这些还远远不够,下一步将研究,如果引导安装在vhd中的linux系统。

发表评论