无忧启动论坛

标题: 系统内运行 脚本实现 a.vhd b.vhd 交替挂载,达到还原目的。 [打印本页]

作者: dos时代菜鸟    时间: 2022-3-16 16:34
标题: 系统内运行 脚本实现 a.vhd b.vhd 交替挂载,达到还原目的。
本帖最后由 dos时代菜鸟 于 2022-10-31 21:58 编辑

脚本 针对  intel amd  x86 /x64 架构。
仅在 win10 ltsc2021h.x64 uefi 环境,vhdx 为单分区,测试正常,其他模式 尚未测试。

支持 vhd 以及 bcd 无盘符情况。

创建 子 vhd 用这个脚本 http://bbs.wuyou.net/forum.php?m ... 425049&fromuid=1198,不需要 diskpart
如何 修改 脚本 适应 自定义的 子vhd 名称,这里就不多说啦,看下面图片,结合,打开 ini配置文件 ,内容一看就明白。

如何把 子 vhd 挂到bcd 菜单启动,可以用  bootice

----------------------------------
这是一个 cmd 脚本,用于 修改 bcd 中指向当前vhd系统的启动项 到另一个vhd 。
事先准备好 child_vhd 文件集群,在ini 中设置好 child_vhd 文件名。
运行后,再启动的就是 用另一个 child_vhd 启动的系统,如此实现系统还原功能。

0.vhd 原始备份文件,由源 父vhd 差分 出来的 子 vhd ,体积只有3-5M
a.vhd 当前系统文件
,复制于 0.vhd
b.vhd 还原用文件,复制于 0.vhd
如果当前系统 是 通过 a.vhd 启动的,运行脚本后,会通过 0.vhd 复制出一个 b.vhd, 替换到 bcd 中指向 a.vhd 的启动项为 指向 b.vhd ,通常是当前系统启动项。
再启动系统时,就会 通过 b.vhd 启动,相当于系统还原了。
通过b.vhd 启动系统后,如果再次运行脚本,就会 把0.vhd 复制成 a.vhd ,并在 bcd 中把指向 b.vhd 的启动项替换成指向a.vhd
再次启动系统,就会通过 a.vhd 启动,此时 a.vhd 已经是由0.vhd 替换过来的,也是新系统。

--------------------------------
1.42
alternate.vhd_c.script.Ver_1.42.7z (2.92 MB, 下载次数: 196)


1.34版,脚本名称为alternate.Child_vhd.cmd 增加 设置文件 alternate.Child_vhd.ini 可以不修改 脚本,只修改配置文件来配置 Child_vhd 文件集群。改进 当 用 /store 获取和修改 bcd 内容时 的一些 细节。

1.41
alternate.vhd_c.script.Ver_1.41.7z (1.76 MB, 下载次数: 46)

Ver:  1.35
alternate.vhd_c.script.Ver_1.38.7z (1.76 MB, 下载次数: 357)

ver:第一版
alternate.vhd_c.script.7z (1.75 MB, 下载次数: 192)

有vhdx文件 "windows ltsc.2021h2.x64.vhdx" 其 子vhd 为 0.vhdx
由 0.vhdx 分别 复制出  a.vhdx 和 b.vhdx

bcd中 引用 a.vhdx 启动后,运行 脚本 ,会 用 0.vhdx 覆盖 b.vhdx 并 将启动指向 b.vhdx ,
如此 ,重启后,将通过 b.vhdx 启动系统。

脚本用到外部命令  pecmd ,bcdedit 。

测试环境 win10 ltsc2021h2

话不多说。具体看图 和 脚本内容吧。脚本 里也没几行代码。

















作者: dos时代菜鸟    时间: 2022-3-16 18:56
本帖最后由 dos时代菜鸟 于 2022-3-16 19:48 编辑

有些 情况 找不到启动 BCD ,增加了俩功能,判断 当前启动模式 和 bcd 所在分区卷。
应该能应付大部分 情况了。

作者: dos时代菜鸟    时间: 2022-3-16 19:38
增加了一些功能,可以 判断 当前启动 模式 bios /uefi
可以找出  bcd 启动卷,

一旦 bcdedit /enum {current } 不能实现对  bcd 的修改,
可以尝试 用 bcdedit /store bcd文件 的方式 修改 bcd 菜单。
当然,如果 Bcd 不是在特定位置的就无能为力了,
比如
leagcy 的  bcd 应该在 特定分区的  \boot\
uefi 的 bcd 应该在 \efi\microsoft\boot\
作者: ddnflier    时间: 2022-3-17 07:30
看起来很强大,支持下
作者: wcs    时间: 2022-3-17 07:56
学习了
作者: dos时代菜鸟    时间: 2022-3-17 09:20
1.34版,脚本名称为alternate.Child_vhd.cmd 增加 设置文件 alternate.Child_vhd.ini 可以不修改 脚本,只修改配置文件来配置 Child_vhd 文件集群。
改进 当 用 /store 获取和修改 bcd 内容时 的一些 细节。
作者: dos时代菜鸟    时间: 2022-3-17 09:48
刚测试 在  win7 x64 bios 环境 以 /store 方式修改 bcd,正常成功。
作者: 天使说请安静    时间: 2022-3-17 09:56
过来学习,顶一个
作者: caocaofff    时间: 2022-3-17 10:04
看截图是支持UEFI的,不错,可以被借鉴做成全自动化重启还原
作者: dos时代菜鸟    时间: 2022-3-17 10:31
本帖最后由 dos时代菜鸟 于 2022-3-17 10:35 编辑
caocaofff 发表于 2022-3-17 10:04
看截图是支持UEFI的,不错,可以被借鉴做成全自动化重启还原

是的,做这个玩意儿,最初目的 就是 这个。
ini 配置文件中 把 debug 设置成 =off就 可以没有 pause 等待了。

作者: dos时代菜鸟    时间: 2022-3-17 10:56
天使说请安静 发表于 2022-3-17 09:56
过来学习,顶一个

互相学习
作者: useQQqqq99    时间: 2022-3-17 11:27
这个玩意儿目的,就是不错的
作者: dos时代菜鸟    时间: 2022-3-17 11:35
全都倚仗 pecmd 对硬盘分区、卷 信息的搜集。
作者: dos时代菜鸟    时间: 2022-3-18 18:06
基本稳定,不再更新啦。
作者: wawakuliao    时间: 2022-3-18 20:46
感谢分享
作者: 2011bialau    时间: 2022-3-19 09:04
必须收藏,很好的方案。
作者: netfoxs    时间: 2022-3-20 00:01
问一下,你这个方式,如果系统内安装的应用比较多,复制vhd的时候花的时间是不是会比较长时间,这样就照成系统恢复的时间可能会比较长。效率方面远不如冰点还原、影子系统之类的软件。如果是偶尔用一下还好,经常用的话我觉得不是很实用。
作者: dos时代菜鸟    时间: 2022-3-21 08:07
本帖最后由 dos时代菜鸟 于 2022-3-21 08:17 编辑
netfoxs 发表于 2022-3-20 00:01
问一下,你这个方式,如果系统内安装的应用比较多,复制vhd的时候花的时间是不是会比较长时间,这样就照成 ...

很显然,你没有理解 vhd 差分子vhd 的技术概念。

子vhd 复制 并不耗时,因为 最基本的 子vhd 都是 扩展类型的,通常只有 3-5M,提前准备好   只有 3-5M 的 0.vhd ,用来 覆盖复制 a.vhd 或者 b.vhd ,覆盖复制时, 瞬间完成。
你可以把 现有系统 的 vhd 差分出一个  子vhd ,就命名 为  0.vhd ,这个 0.vhd 很小,然后再 把 0.vhd 复制成 a.vhd  ,设置到 bcd 启动项 中,用 a.vhd 启动。当需要 还原时,直接 运行 脚本,就 会 把 0.vhd 复制成 b.vhd 并修改 bcd 菜单由b.vhd 启动。通过 b.vhd 启动后,可以删除 a.vhd ,但不要删除 0.vhd .


这里的重点技术是 如何准确 定位 bcd 中的菜单项 以及 vhd 路径表达式,然后 依靠 bcdedit 修改bcd 菜单数据。




作者: zmyzbf    时间: 2022-3-21 22:29
uefi下可以吗,或者ventoy下能不能实现
作者: dos时代菜鸟    时间: 2022-3-21 23:22
zmyzbf 发表于 2022-3-21 22:29
uefi下可以吗,或者ventoy下能不能实现

UEFI bcd 测试过,可以的,
ventoy 没试过,需要自己玩儿。
作者: netfoxs    时间: 2022-3-21 23:35
dos时代菜鸟 发表于 2022-3-21 08:07
很显然,你没有理解 vhd 差分子vhd 的技术概念。

子vhd 复制 并不耗时,因为 最基本的 子vhd 都是 扩 ...

学到了,谢谢!
作者: 2010wadee    时间: 2022-3-22 18:54
谢谢大师研究~收藏学习
作者: oym2016    时间: 2022-3-23 11:20
dos时代菜鸟 发表于 2022-3-17 11:35
全都倚仗 pecmd 对硬盘分区、卷 信息的搜集。

大大的C.vhd_path.pecmd 是花了不少心思 获取信息.

用这简单的方法获得也行:
  一级目录下:FOR /f,"tokens=1,2 delims=\",%%i,In ("%~dp0") Do (SET vhd_part=[%%i]&SET vhd_path=%%~pj)
   BCDEDIT /set %ID% osdevice vhd=%vhd_part%%vhd_path%BaseSub_1.vhdx
作者: dos时代菜鸟    时间: 2022-3-23 15:42
本帖最后由 dos时代菜鸟 于 2022-3-23 18:06 编辑
oym2016 发表于 2022-3-23 11:20
大大的C.vhd_path.pecmd 是花了不少心思 获取信息.

用这简单的方法获得也行:

有些BCD启动,很特殊,不能单靠 BCDEDIT ,
BCDEDIT 是通过  setup API方式获取 BCD文件位置,而,有些情况,是获取不到的,有些是GRUB引导跳转的,就必须用 BCDEDIT /SOTRE 方式 打开特定位置的BCD。
作者: dos时代菜鸟    时间: 2022-3-23 15:50
oym2016 发表于 2022-3-23 11:20
大大的C.vhd_path.pecmd 是花了不少心思 获取信息.

用这简单的方法获得也行:

还有一些 bcd 文件在隐藏分区,没有盘符的分区,vhd 在无盘符的分区,隐藏分区,等情况,必须考虑。
作者: qq328    时间: 2022-3-23 16:13
谢谢
作者: xman00    时间: 2022-3-27 19:52
感谢分享,很厉害
作者: hoder    时间: 2022-4-10 00:43
有做过vbs脚本,也是利用vhd差分,启动项设置好正常启动和系统恢复两个选项就行,这样的好处是不会每次重启都恢复成一个“新”系统,比如软件测试之类需要重启电脑的。而需要恢复的时候,开机选“系统恢复”就行,每次进桌面脚本会自动处理,不会占用额外的时间。半成品算是写出来了,目前只能自己用,因为发现有些情况下会失效(不是专业搞这个的,启动方面实在不懂),而目前又没有能力测试和维护。
仅用bcdedit确实不好处理一些问题,头疼。
作者: dos时代菜鸟    时间: 2022-4-10 09:14
hoder 发表于 2022-4-10 00:43
有做过vbs脚本,也是利用vhd差分,启动项设置好正常启动和系统恢复两个选项就行,这样的好处是不会每次重启 ...

必须 通过 api + reg 获取 注册表 中特定位置 记录的  bcd 引导分区的位置。而且 这个位置 必须转换成 bcdedit 能用的。
所以 我考虑用  成型的  pecmd 脚本。

至于 启动即还原 ,可以考虑 手动 运行脚本,而不是 放到 启动里。即使还原了,上一系统 vhd 仍然存在,还有读取 的机会,相当于给自己留了个后悔药,避免 因为还原导致 后悔。
作者: hoder    时间: 2022-4-15 23:00
这几天写出来了,单bat操作,望测评反馈,谢谢!!!

http://bbs.wuyou.net/forum.php?m ... p;extra=#pid4542088
作者: 江南一根葱    时间: 2022-4-17 00:19
可以生成一个子vhd,然后生成655356553个子vhd,塞到7z包里,反正不占空间嘛,每次启动解压一个出来。。
作者: qq328    时间: 2022-6-4 08:29
好用!
作者: 逍遥逸仙    时间: 2022-6-5 16:50
为啥一定要这种曲线救国的方法?
作者: dos时代菜鸟    时间: 2022-6-6 08:50
逍遥逸仙 发表于 2022-6-5 16:50
为啥一定要这种曲线救国的方法?

win 原生支持
何来曲线?
作者: ql1307096    时间: 2022-7-19 15:21
很久以前就再用这个差分vhd的方式快速还原系统,不是我是手动操作,现在已经好久不玩vhd系统了,最大的毛病就是vhd系统一旦非法关机,磁盘错误检查都是以小时为单位的,。
作者: dos时代菜鸟    时间: 2022-7-21 16:23
ql1307096 发表于 2022-7-19 15:21
很久以前就再用这个差分vhd的方式快速还原系统,不是我是手动操作,现在已经好久不玩vhd系统了,最大的毛病 ...

创建 child vhd ,用 child vhd  启动系统,出现问题,可以在 pe 下通过挂载 提取有用数据,然后重新创建 child vhd .

作者: dos时代菜鸟    时间: 2022-8-22 17:53
这个 脚本 适用于 把 vhd文件隐藏到 无盘符 分区的情况,而且不需要 在 bcd启动菜单 中多设置菜单项。
只要 子vhd们 都在一个位置,适应性更强。

用到了 pecmd 调用 系统 api 获取 分区卷表达式,进而 可以分析 bcd 菜单中 非盘符方式表达的 vhd 位置,并可以 识别成卷 标识,直接 完成 文件的覆盖复制。

前提是,只要 bcdedit 能够 成功识别找出当前系统选项,就可以。
作者: amita    时间: 2022-8-24 15:18
这个通过不断修改BCD实现子vhdx切换轮替的方法好像是相当偷懒,成本相当低的,多谢分享!
作者: dos时代菜鸟    时间: 2022-10-29 12:42
做了个小更新

调整后 适用于系统盘 不是 c: 的情况,比如 pe
增加考虑 vhd 是 locate 方式获取的情况。
作者: dos时代菜鸟    时间: 2022-10-30 14:36
1.41 增加了个 判断,如果 找不到 源 vhd ,会 尝试 找出当前系统 vhd 所在位置文件夹 并列的 其他 vhd ,供手动选择 , vhd 是否在有盘符的 分区上都 可以。
前提是 在 ini 配置文件里 配置 auto=off ,debug=on .


作者: dos时代菜鸟    时间: 2022-10-30 19:14


作者: qq328    时间: 2022-10-31 10:00
谢谢!
作者: dos时代菜鸟    时间: 2022-10-31 22:00
本帖最后由 dos时代菜鸟 于 2022-10-31 22:30 编辑

v1.42 支持从 7z 释放原始子vhd , 把 原始子 vhd 压缩成同名 7z 文件即可 . ini 中把 原始 vhd 设置成 7z 文件。

作者: fs9999    时间: 2022-11-1 13:13
不错不错
作者: wxzh    时间: 2022-11-1 15:49
本帖最后由 wxzh 于 2022-11-1 15:54 编辑
dos时代菜鸟 发表于 2022-10-31 22:00
v1.42 支持从 7z 释放原始子vhd , 把 原始子 vhd 压缩成同名 7z 文件即可 . ini 中把 原始 vhd 设置成 7z  ...

我现在也用得着1.42!!   但更想知道:  000.vhdx   这个差分文件已经很小了,为什么还压缩呢?    1.41不压缩不解压,不是最好吗?谢谢老师!!
作者: dos时代菜鸟    时间: 2022-11-1 16:09
本帖最后由 dos时代菜鸟 于 2022-11-1 16:45 编辑
wxzh 发表于 2022-11-1 15:49
我现在也用得着1.42!!   但更想知道:  000.vhdx   这个差分文件已经很小了,为什么还压缩呢?    1.41 ...

不压缩也是可以的,配置文件里设置  000.7z 为 000.vhdx 就可以了。

7z 这个主要是针对 wimboot+vhd 的方案,那个 vhd 作为 wimboot.wim  的指针,会有 150M 左右,这个时候 压缩一下 只有11M ,就显得有必要了。
比如 我 把 win10pe 弄成 wimboot+vhd 的方案,加上这个 脚本,就能实现 x: 盘 依托于 vhd  ,vhd 多大 ,pe的 x盘就多大。而且运行时,节省内存。即便是 在usb2.0 的盘上,这个方案也是 可行的,速度也是可以接受的。 此时 wimboot.wim 就如同 是 一个 父代 vhd ,而他的指针 ,就相当于 子vhd .如果 把本地系统也这么搞,应该也是可以的,因为  wimboot.wim 是压缩的,比 父vhd 体积要小很多。把已经安装好的 系统 打包成 wimboot.wim ,用起来 应该也挺爽,需要还原时,一个这样的批处理就搞定了。
作者: 香国妙手    时间: 2022-11-2 07:57
脚本实现 a.vhd b.vhd 交替挂载
作者: qq328    时间: 2022-11-2 19:38
dos时代菜鸟 发表于 2022-10-30 14:36
1.41 增加了个 判断,如果 找不到 源 vhd ,会 尝试 找出当前系统 vhd 所在位置文件夹 并列的 其他 vhd ,供 ...

1.41 增加了个 判断,如果 找不到 源 vhd ,会 尝试 找出当前系统 vhd 所在位置文件夹 并列的 其他 vhd ,供手动选择 , 这个功能是好,但是选择其它Vhd文件时,这个文件可能是父文件,比较大,脚本是复制并重命名为00B.vhdx,太费时间还占用磁盘空间,建议不要复制,把手动选择的vhd文件,差分出一个子文件,并命名为00B.vhdx,就好,又快,又不占磁盘空间,才4M大,我试改了一下,好用,再次谢谢菜大的脚本!
作者: ZMLoveLH    时间: 2022-11-3 06:57
一个经典的 cmd 脚本,多谢楼主分享啊
作者: dos时代菜鸟    时间: 2022-11-3 07:44
qq328 发表于 2022-11-2 19:38
1.41 增加了个 判断,如果 找不到 源 vhd ,会 尝试 找出当前系统 vhd 所在位置文件夹 并列的 其他 vhd , ...

提前做好 子vhd 取名 000.vhdx
作者: funclin    时间: 2022-11-22 17:42
本帖最后由 funclin 于 2022-11-22 17:47 编辑

不适合剩余磁盘空间无法支撑第二个VHD的情景。
比如磁盘120g、父VHD占用20G,一般我都会把VHD空间设为动态99G,(父+VHD空间略<磁盘空间)。运行一段时间后子VHD>1G时,脚本替换新VHD时就会因为空间不足无法启动。

作者: dos时代菜鸟    时间: 2022-11-22 21:57
本帖最后由 dos时代菜鸟 于 2022-11-22 21:59 编辑
funclin 发表于 2022-11-22 17:42
不适合剩余磁盘空间无法支撑第二个VHD的情景。
比如磁盘120g、父VHD占用20G,一般我都会把VHD空间设为动态9 ...

这个是必然的,如果空间不足,会蓝屏。

最好的方案是 在系统外,用第二系统比如 pe ,或者第二差分系统(进入第二差分系统同样会因为第二系统体积增加而硬盘空间不足的问题。),对 vhd 体系进行替换。再 进入 主系统正常使用。


作者: goyou    时间: 2022-12-18 10:45
先顶后看。我没有安装常规系统,都是vhd的,这个办法很有用。
作者: benkel    时间: 2022-12-18 13:36
菜鸟来学习了!
作者: 烛光微微    时间: 2023-3-20 12:17
感谢楼主,先收藏~~~
作者: hanchi123    时间: 2023-4-24 06:56
感谢分享
作者: zhangjiti    时间: 2023-4-26 20:07
谢谢提供分享
作者: yfeng129    时间: 2023-5-8 12:18
学习学习
作者: 布特300    时间: 2023-6-2 15:09
dos时代菜鸟 发表于 2022-3-16 18:56
有些 情况 找不到启动 BCD ,增加了俩功能,判断 当前启动模式 和 bcd 所在分区卷。
应该能应付大部分 情 ...

使用vhd有哪些特别的优势?
作者: dos时代菜鸟    时间: 2023-6-2 15:47
布特300 发表于 2023-6-2 15:09
使用vhd有哪些特别的优势?

呵呵,有或者没有。
只有爱折腾系统的,才有优势,或者老把系统整崩溃的,更好维护一些而已。

作者: 布特300    时间: 2023-6-2 16:16
dos时代菜鸟 发表于 2023-6-2 15:47
呵呵,有或者没有。
只有爱折腾系统的,才有优势,或者老把系统整崩溃的,更好维护一些而已。

vhd文件是放在电脑硬盘上么?
vhd是否可以放在优盘上么
作者: c3862004    时间: 2023-10-3 21:18

感谢分享,很厉害
作者: nowayer    时间: 2023-10-23 18:56
提示: 作者被禁止或删除 内容自动屏蔽
作者: 1227cn    时间: 2023-11-28 20:26
赞一个! 资源收藏了
作者: zhangz9    时间: 2023-11-29 15:12
学习了,多谢分享
作者: freesoft00    时间: 2023-12-3 16:20
感谢提供
作者: 2012ferro    时间: 2024-3-12 14:53
试试这个好用不,每次自动还原

作者: iAmethyst    时间: 2024-3-14 14:49
还能这样操作
作者: S_ingularity    时间: 2024-3-15 14:57

感谢分享,很厉害
作者: luoshui336    时间: 2024-3-20 03:12
来学习了
作者: Yu9i8b2c71t    时间: 2024-3-20 11:56
dos时代菜鸟 发表于 2022-3-16 18:56
有些 情况 找不到启动 BCD ,增加了俩功能,判断 当前启动模式 和 bcd 所在分区卷。
应该能应付大部分 情 ...

楼主你好,有个问题困扰着小弟,能否帮忙看看:

有办法在BCDEdit里,添加开机后,同时自动挂载多个VHD盘吗?
注意:这里不是指多系统,而是同时挂载多个“VHD盘”(这些盘是存放程序的)

问题的根源在下面:

//================================
小弟已经通过BCDEDIT命令,成功实现:启动到VHD里的系统了。
但是,小弟有另一个需求:
除了系统的VHD,开机还要挂载另一个VHD(程序盘、数据盘)。
就是说,开机后,要同时挂载两个VHD(一个是系统VHD,另一个是程序VHD)。
//================================
网上的的一些做法是:创建开机启动的“计划任务”、创建开机启动的“Windows服务”。
但是,这些方法,都不能满足小弟的需求。(因为计划任务、Windows服务,这些在开机的启动流程中,都太后了。)
小弟需要的解决方案是:开机后,能最早的挂载(程序盘、数据盘)的VHD,越早越好。
作者: dos时代菜鸟    时间: 2024-3-21 12:45
本帖最后由 dos时代菜鸟 于 2024-3-21 12:46 编辑
Yu9i8b2c71t 发表于 2024-3-20 11:56
楼主你好,有个问题困扰着小弟,能否帮忙看看:

有办法在BCDEdit里,添加开机后,同时自动挂载多个VHD ...

为 windows 添加 虚拟盘驱动 比如 svbus ,通过 grub 等启动器事先 挂载 多个 vhd
作者: Yu9i8b2c71t    时间: 2024-3-21 16:24
dos时代菜鸟 发表于 2024-3-21 12:45
为 windows 添加 虚拟盘驱动 比如 svbus ,通过 grub 等启动器事先 挂载 多个 vhd

好哒,谢谢楼主啦~
话说,楼主您是否测试过可行?
我去试试先~
作者: axiang117    时间: 2024-3-21 21:08
好技术,膜拜大佬
作者: Yu9i8b2c71t    时间: 2024-3-23 14:06
dos时代菜鸟 发表于 2024-3-21 12:45
为 windows 添加 虚拟盘驱动 比如 svbus ,通过 grub 等启动器事先 挂载 多个 vhd

楼主大侠,您这个方法,我试了一下,好像只能支持把vhd载入到内存中。
能支持直接挂载program.vhd和data.vhd吗?
如果能的话,能否把grub的菜单代码,贴上来看一看?

作者: Yu9i8b2c71t    时间: 2024-3-23 15:47
dos时代菜鸟 发表于 2024-3-21 12:45
为 windows 添加 虚拟盘驱动 比如 svbus ,通过 grub 等启动器事先 挂载 多个 vhd

楼主,您好,您的这个方法,我试了,不行啊。
windows.vhd里,已经安装了svbus驱动,然后,
grub那里事先挂在了多个vhd,但是,进入系统后,依旧没有看到“program.vhd”被挂载啊。
。。
您那边,能成功吗?
作者: dos时代菜鸟    时间: 2024-3-23 16:11
本帖最后由 dos时代菜鸟 于 2024-3-23 16:15 编辑
Yu9i8b2c71t 发表于 2024-3-23 15:47
楼主,您好,您的这个方法,我试了,不行啊。
windows.vhd里,已经安装了svbus驱动,然后,
grub那里事 ...

在 grub 阶段 就把 program.vhd 也挂上呀。
要求 vhd 是 fix 的。不能是 自动变大小的那种。而且要求 最好连续存放。

估计你的问题出在 grub 的运用上,还有就是 进入windows 后 通过分区软件,看一下才能确定 。



作者: Yu9i8b2c71t    时间: 2024-3-23 17:30
dos时代菜鸟 发表于 2024-3-23 16:11
在 grub 阶段 就把 program.vhd 也挂上呀。
要求 vhd 是 fix 的。不能是 自动变大小的那种。而且要求 最 ...

楼主,您说的细节,我都遵循了。
我再多试几次先,检查一下,看看是不是哪里出错了先。
作者: Yu9i8b2c71t    时间: 2024-3-25 10:35
本帖最后由 Yu9i8b2c71t 于 2024-3-25 11:43 编辑
dos时代菜鸟 发表于 2024-3-23 16:11
在 grub 阶段 就把 program.vhd 也挂上呀。
要求 vhd 是 fix 的。不能是 自动变大小的那种。而且要求 最 ...

楼主大侠,你说得对,应该就是grub的运用的问题上。
我用的是Linux的grub2版本,用的是grub2里的loopback命令去挂载vhd,我感觉,这应该是错的。
=====
请问,我应该用哪个版本的grub呀(是grub4dos吗)?还有就是,我应该用什么命令去挂载vhd喔?

作者: Yu9i8b2c71t    时间: 2024-3-25 13:29
本帖最后由 Yu9i8b2c71t 于 2024-3-25 15:42 编辑
dos时代菜鸟 发表于 2024-3-23 16:11
在 grub 阶段 就把 program.vhd 也挂上呀。
要求 vhd 是 fix 的。不能是 自动变大小的那种。而且要求 最 ...

谢谢楼主大侠,我暂时成功了~
之前失败的原因,的确是在于用错了grub版本。
我现在成功了,成功的环境是:
Legacy  +   MBR   +   Grub4dos-0.4.6a + windows里安装svbus驱动 + “固定大小的、无任何碎片的的program.vhd文件”
成功的grub4dos的菜单命令是:
title windows10
find --set-root /program.vhd
map /program.vhd (hd9)        #这里之所以写 (hd9),是因为我发现,(hd0)、(hd1)、(hd2)、(hd3)、...,已经都被现有的硬盘所占用了,所以索性写一个很大的数字,例如:9。
find --set-root /bootmgr
chainloader /bootmgr
boot
========================
接下来还要尝试UEFI+GPT的环境,希望能成功。


作者: Yu9i8b2c71t    时间: 2024-3-25 20:09
dos时代菜鸟 发表于 2024-3-23 16:11
在 grub 阶段 就把 program.vhd 也挂上呀。
要求 vhd 是 fix 的。不能是 自动变大小的那种。而且要求 最 ...

楼主,虽然这种方式是成功了,我还是发现了一个不完善的地方就是:
当program.vhd比较大时,这个文件,很难做到连续存放于硬盘上。
最好还是,有能支持动态大小的VHD的方式的,就是不知道有没有这种方式。
作者: dos时代菜鸟    时间: 2024-3-25 22:57
Yu9i8b2c71t 发表于 2024-3-25 20:09
楼主,虽然这种方式是成功了,我还是发现了一个不完善的地方就是:
当program.vhd比较大时,这个文件, ...

新版 svbus驱动 配合新版 grub4  好像可以支持 文件 不连续存放。具体记不清了。

另外 可以用 (hd) 代替 (hd9)


作者: Yu9i8b2c71t    时间: 2024-3-26 10:24
dos时代菜鸟 发表于 2024-3-25 22:57
新版 svbus驱动 配合新版 grub4  好像可以支持 文件 不连续存放。具体记不清了。

另外 可以用 (hd) 代 ...

好哒,谢谢楼主大侠~我去试试~
作者: Yu9i8b2c71t    时间: 2024-3-26 18:21
本帖最后由 Yu9i8b2c71t 于 2024-3-26 18:28 编辑
dos时代菜鸟 发表于 2024-3-25 22:57
新版 svbus驱动 配合新版 grub4  好像可以支持 文件 不连续存放。具体记不清了。

另外 可以用 (hd) 代 ...

楼主,我测试了,最新版的grub,例如grub4dos-for_UEFI-2024-02-26.7z(假如program.vhd不是连续存放的,是有碎片的),的确,在挂载时,没有出现报错。但是,其实是有BUG的,在经过一段时间的读写后,program.vhd里面的文件,会有损坏情况(例如,program.vhd里的一些rar文件、一些zip文件,不能正常解压了)。
--------------------------------------------------------------------
title windows10
find    --set-root    /program.vhd
map    /program.vhd     (hd)                                             #测试时,需要测了这个program.vhd的两种状态:连续存放、不连续存放
find    --set-root    /EFI/microsoft/boot/bootmgfw.efi
chainloader    +1
boot


--------------------------------------------------------------------
所以,“不连续存放的”,这个问题,即使是最新版的grub4dos,实际上,感觉依旧是没有完美解决,会有文件损坏,非常容易导致数据丢失。




作者: yyz2191958    时间: 2024-3-26 18:29
进来学习
作者: dos时代菜鸟    时间: 2024-3-26 22:21
Yu9i8b2c71t 发表于 2024-3-26 18:21
楼主,我测试了,最新版的grub,例如grub4dos-for_UEFI-2024-02-26.7z(假如program.vhd不是连续存放的, ...

找找 svbus 驱动啥的,还有 grub 的关于连续存放方面的帖子吧。我忘记了。
作者: Yu9i8b2c71t    时间: 2024-3-27 10:21
dos时代菜鸟 发表于 2024-3-26 22:21
找找 svbus 驱动啥的,还有 grub 的关于连续存放方面的帖子吧。我忘记了。

好哒,去找找看先~
作者: S_ingularity    时间: 2024-4-2 11:28
泪目,终于能使用了
作者: joypig    时间: 2024-4-10 14:22
支持一下,支持uefi,很好的想法
作者: v0v123    时间: 2024-6-3 21:45
学习一下

作者: v0v123    时间: 2024-6-3 23:53
感谢楼主分享

作者: v0v123    时间: 2024-6-4 00:42
学习一下

作者: 附骨之蛆    时间: 2024-6-9 17:59
开心收下,认真学习
作者: oidaa    时间: 2024-6-12 01:00
感谢分享
作者: Cyber2777    时间: 2024-6-18 22:21
感谢分享!
作者: gg02345    时间: 2024-7-11 16:20
来学习了,感谢分享
作者: gg02345    时间: 2024-7-20 11:35
感谢分享 收藏备用
作者: gg02345    时间: 2024-7-21 15:57
非常感谢,成功还原!
但是有一个问题,有两个批处理,alternate.Child_vhd,undo,每次还原时,这两个批处理都要执行吗?
作者: dos时代菜鸟    时间: 2024-7-22 08:15
gg02345 发表于 2024-7-21 15:57
非常感谢,成功还原!
但是有一个问题,有两个批处理,alternate.Child_vhd,undo,每次还原时,这两个批 ...

时间太久,记不清了,按道理说 undo 应该是 操作 bcd 取消还原操作用的。
作者: shinykers    时间: 2024-8-11 21:15
这太神奇啦~




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3