无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
12
返回列表 发新帖
楼主: wavelu
打印 上一主题 下一主题

[原创] VHDX(VHD)镜像文件的差分启动解决方法

  [复制链接]
31#
发表于 2025-11-13 19:29:53 | 只看该作者
本帖最后由 wintoflash 于 2025-11-13 19:32 编辑
市面上其他第三方工具启动VHDX(VHD),原理上都是通过自动修改BCD文件最后调用bootmgfw.efi来引导,并非自身引导VHDX文件。

不自身实现引导VHD/VHDX的主要原因是,开源项目很难解决Windows驱动的问题。
不借助微软bootmgfw的那一套东西,就要写个Windows驱动来实现VHD/VHDX挂载。
只有EV证书能给Windows驱动/EFI程序签名,这样就卡死了个体开发者的开源/闭源项目。

很多年以前骆辉红的vmlite vboot也实现了VHD差分启动,也是跟你类似的商业逻辑。

点评

看说明云里雾里的,又有一种似曾相识的感觉,之前搞过XP VHD 用的就是VBOOT,好像需要驱动注入,当时找官网都找不着了。  详情 回复 发表于 2025-11-14 08:48
回复

使用道具 举报

32#
发表于 2025-11-13 21:17:31 | 只看该作者
新东西“云固件”
回复

使用道具 举报

33#
发表于 2025-11-14 08:48:59 | 只看该作者
wintoflash 发表于 2025-11-13 19:29
不自身实现引导VHD/VHDX的主要原因是,开源项目很难解决Windows驱动的问题。
不借助微软bootmgfw的那一 ...

看说明云里雾里的,又有一种似曾相识的感觉,之前搞过XP VHD 用的就是VBOOT,好像需要驱动注入,当时找官网都找不着了。
回复

使用道具 举报

34#
发表于 2025-11-14 13:05:13 来自手机 | 只看该作者
感谢楼主分享
回复

使用道具 举报

35#
发表于 2025-11-14 19:26:49 | 只看该作者
学习了
回复

使用道具 举报

36#
发表于 2025-11-14 20:02:22 | 只看该作者
好厉害的功能,云固件用了很久了,新功能也体验了很长时间,真的不错啊!
回复

使用道具 举报

37#
发表于 2025-11-14 20:05:40 | 只看该作者
wintoflash 发表于 2025-11-13 19:29
不自身实现引导VHD/VHDX的主要原因是,开源项目很难解决Windows驱动的问题。
不借助微软bootmgfw的那一 ...

你说的那个和这个云固件不是一回事啊?
回复

使用道具 举报

38#
发表于 2025-11-14 21:55:01 来自手机 | 只看该作者
辛苦了
回复

使用道具 举报

39#
发表于 2025-11-15 09:08:01 | 只看该作者
感谢分享!
回复

使用道具 举报

40#
发表于 2025-12-7 00:32:24 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

41#
发表于 2026-1-27 11:44:48 | 只看该作者
感谢您的分享!
回复

使用道具 举报

42#
发表于 2026-2-7 14:55:35 | 只看该作者
本帖最后由 oym2016 于 2026-2-7 15:12 编辑

解开过云固件,其核心是grub2 。即用grub2或grub4dos for uefi 可用其菜单现实差分启动VHD
最新grub2   2.14菜单:
     #如果 以uefi模式启动
if search --no-floppy --file  /Win11Ltsc/Win11Ltsc.vhdx;then
menuentry "Windows 11 Enterprise LTSC (vhdx)"   --class windows   {
       search --set=dev --file /Win11Ltsc/Win11Ltsc.vhdx
       probe --set=dev_uuid -u $dev
       if search -n -s -f /Win11Ltsc/G2Sign_A.iso;then
          linux ${prefix}/ntloader uuid=$dev_uuid vhd=/Win11Ltsc/VhdSub_A.vhdx
          initrd ${prefix}/initrd.cpio
       elif search -n -s -f /Win11Ltsc/G2Sign_B.iso;then
          linux ${prefix}/ntloader uuid=$dev_uuid vhd=/Win11Ltsc/VhdSub_B.vhdx
          initrd ${prefix}/initrd.cpio
      elif search -n -s -f /Win11Ltsc/Win11Ltsc.vhdx;then
          linux ${prefix}/ntloader uuid=$dev_uuid vhd=/Win11Ltsc/Win11Ltsc.vhdx
          initrd ${prefix}/initrd.cpio
      fi   
  }
fi
调整标志文件 即可控制项:

  reG2vdisk.bat...
@ECHO off&PUSHD %~dp0
setlocal enabledelayedexpansion

::设置父文件并显示
echo.&echo 本目录下虚拟文件...
set Sys=Win11Ltsc.vhdx
dir /b *.vhdx
echo ------------------------
echo.&echo 当前:系统父虚拟文件:%Sys%.将创建子虚拟文件:
echo.&pause
::创建差分
if exist VhdSub_A.vhdx (
   set Dif=VhdSub_B.vhdx
   ren G2Sign_A.iso G2Sign_B.iso
   ) else (
   set Dif=VhdSub_A.vhdx
   ren G2Sign_B.iso G2Sign_A.iso
   )
echo create vdisk file=%~dp0!Dif! parent="%~dp0!Sys!"|DISKPART >nul
exit
将批处理放置vhdx目录下 ,想恢复系统,手动运行一下这批处理,重启即可

用grub4dos for uefi 菜单:
iftitle [find --set-root /Win11Ltsc/Win11Ltsc.vhdx] Windows 11 Enterprise (ntboot)  \n  /Win11ProW/Win11Ltsc.vhdx
find /efi/grub/ext/ntboot | set bd=
find --set-root /Win11Ltsc/VhdSub_A.vhdx && %bd%/efi/grub/ext/ntboot /Win11Ltsc/VhdSub_A.vhdx
find --set-root /Win11Ltsc/VhdSub_B.vhdx && %bd%/efi/grub/ext/ntboot /Win11Ltsc/VhdSub_B.vhdx
find --set-root /Win11Ltsc/Win11Ltsc.vhdx && %bd%/efi/grub/ext/ntboot /Win11Ltsc/Win11Ltsc.vhdx
boot

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2026-3-3 14:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表