关于vhd(x)的使用大都是在物理主机的bcd内添加条目,但这种方式体验下来总觉得不爽[受虐滑稽]
开机到加载出启动项有点慢,选了vhd后又要重启一次,而且它不会记住上一次选的启动项,默认项的方式远远不够灵活[心碎]
但bcd不是可以添加vhd的启动项吗,利用这点可以通过第三方引导工具直接引导vhd,实际效果与直接引导装在分区内的系统没啥两样[耐克嘴] 一直用的refind就拿它打底了[滑稽]
踩坑:
建议到pe内搞[t耐克嘴]
由于windows在首次安装时需要/EFI/Microsoft/Boot/bcd(无论实机还是vhd),且路径固定,若没有/EFI/Microsoft,或者版本与要装的系统对应版本不同的话,都可能安装失败,且报错还不一样[汗]
所以先将esp分区内的EFI/Microsoft文件夹移到别处以免影响当前使用的win系统,比如直接新建一个文件夹叫win然后丢里面。并在EFI下新建个目录,比如叫 wvhd
把镜像写入vhd(x)后,用7z之类解压缩软件、diskgenius或者挂载后再分配盘符的方式,进入efi分区把EFI/Microsoft文件夹复制到上面的 wvhd目录里,用bootice/easybcd修改 /EFI/wvhd/Microsoft/Boot/bcd,只保留一个vhd启动项。改好后,将 wvhd/Microsoft 目录复制到 /EFI/下!!
最后就是在refind配置中添加启动项,比如现在efi内分别有这几个:/EFI/Microsoft,/EFI/refind,/EFI/wvhd,则启动项的 loader应该是 /EFI/wvhd/Microsoft/Boot/bootmgfw.efi
还要记得把开始备份的主机系统的引导文件夹还原,按上面例子应该是 /EFI/win/Microsoft,将这个 Microsoft 目录移至上一层,也就是/EFI/Microsoft。
p.s windows的msconfig读取的就是这里的配置,如果这个文件夹不存在则msconfig里看不到启动项。
这样就完成了从 refind 直接启动vhd。另外,vhd启动时,内部的efi分区其实没用到,介意这部分空间浪费了的也可以在安装好之后把这个区删了再合给系统区。
最后,基于refind能直接引导vhd,那是否可以实现一块盘不装系统,纯靠refind启动里面的vhd[抠鼻] 实测确实可以。主要的问题在于可能添加不了 uefi 启动项,且bios不支持直接添加efi项。
这时简单粗暴的一种方式是将/EFI/refind 和 /EFI/refind/refind_x64.efi 分别更名为 /EFI/Boot 和 /EFI/Boot/bootx64.efi [t耐克嘴]
如果不想这样, 可以尝试以下方案:
将vhd或者其他win 7以上的系统文件夹 Windows 整个复制到单个分区内,比如复制后路径像这样 C:\Windows,再用工具修复引导,或者在cmd中用bcdboot也行,只要提示成功创建就好。之后把Windows文件夹删了或者改名之类的,避免待会儿直接启动到这个文件夹里的系统了。重启并再次进入pe,正常的话,会在uefi启动项里看到多了一个首选项叫 windows boot manager,这时说明已经可以直接添加其他选项了,当然,这个多余的wbm随便咋处置[受虐滑稽]
下面是在虚拟机里捣鼓后的演示,用的2个vhdx都是先在物理机上安装过的,所以虚拟机里头回启动又进行了短暂的部署过程~ ~
而且存放vhd的分区不能小于vhd最大体积,比如一个vhd设定最大可到10g,目前文件只有5g,而从它启动后,它会扩展成10g,如果存放的分区小于10g的话则会蓝屏,提示空间不足。图中的2个vhdx都是设定的最大15g,所以哪个启动后,对应的vhdx文件就变大到了15g[流汗滑稽]
那个win10没开鼠标指向时显示提示,就有点尴尬[受虐滑稽]
2个vhdx先在物理机上装过的,所以丢虚拟机里跑时又走了一小段部署过程[流汗滑稽]
(此贴备份)