无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 21262|回复: 103
打印 上一主题 下一主题

系统内运行 脚本实现 a.vhd b.vhd 交替挂载,达到还原目的。

    [复制链接]
跳转到指定楼层
1#
发表于 2022-3-16 16:34:10 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 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, 下载次数: 195)


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, 下载次数: 45)

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

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
















评分

参与人数 1无忧币 +5 收起 理由
vrboxing + 5

查看全部评分

104#
发表于 2024-10-15 01:03:51 | 只看该作者
方案很好,感谢楼主分享,拿来修改了一下自用。
回复

使用道具 举报

103#
发表于 2024-8-24 19:58:25 | 只看该作者
必须收藏,很好的方案。
回复

使用道具 举报

102#
发表于 2024-8-13 03:58:51 来自手机 | 只看该作者
不错不错
回复

使用道具 举报

101#
发表于 2024-8-12 17:39:57 来自手机 | 只看该作者
来学习学习
回复

使用道具 举报

100#
发表于 2024-8-11 21:15:30 | 只看该作者
这太神奇啦~
回复

使用道具 举报

99#
 楼主| 发表于 2024-7-22 08:15:52 | 只看该作者
gg02345 发表于 2024-7-21 15:57
非常感谢,成功还原!
但是有一个问题,有两个批处理,alternate.Child_vhd,undo,每次还原时,这两个批 ...

时间太久,记不清了,按道理说 undo 应该是 操作 bcd 取消还原操作用的。
回复

使用道具 举报

98#
发表于 2024-7-21 15:57:46 | 只看该作者
非常感谢,成功还原!
但是有一个问题,有两个批处理,alternate.Child_vhd,undo,每次还原时,这两个批处理都要执行吗?

点评

时间太久,记不清了,按道理说 undo 应该是 操作 bcd 取消还原操作用的。  详情 回复 发表于 2024-7-22 08:15
回复

使用道具 举报

97#
发表于 2024-7-20 11:35:26 | 只看该作者
感谢分享 收藏备用
回复

使用道具 举报

96#
发表于 2024-7-11 16:20:24 | 只看该作者
来学习了,感谢分享
回复

使用道具 举报

95#
发表于 2024-6-18 22:21:13 | 只看该作者
感谢分享!
回复

使用道具 举报

94#
发表于 2024-6-12 01:00:56 来自手机 | 只看该作者
感谢分享
回复

使用道具 举报

93#
发表于 2024-6-9 17:59:04 | 只看该作者
开心收下,认真学习
回复

使用道具 举报

92#
发表于 2024-6-4 00:42:41 | 只看该作者
学习一下
回复

使用道具 举报

91#
发表于 2024-6-3 23:53:11 | 只看该作者
感谢楼主分享
回复

使用道具 举报

90#
发表于 2024-6-3 21:45:56 | 只看该作者
学习一下
回复

使用道具 举报

89#
发表于 2024-4-10 14:22:45 | 只看该作者
支持一下,支持uefi,很好的想法
回复

使用道具 举报

88#
发表于 2024-4-2 11:28:55 | 只看该作者
泪目,终于能使用了
回复

使用道具 举报

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

好哒,去找找看先~
回复

使用道具 举报

86#
 楼主| 发表于 2024-3-26 22:21:34 | 只看该作者
Yu9i8b2c71t 发表于 2024-3-26 18:21
楼主,我测试了,最新版的grub,例如grub4dos-for_UEFI-2024-02-26.7z(假如program.vhd不是连续存放的, ...

找找 svbus 驱动啥的,还有 grub 的关于连续存放方面的帖子吧。我忘记了。
回复

使用道具 举报

85#
发表于 2024-3-26 18:29:26 | 只看该作者
进来学习
回复

使用道具 举报

84#
发表于 2024-3-26 18:21:47 | 只看该作者
本帖最后由 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,实际上,感觉依旧是没有完美解决,会有文件损坏,非常容易导致数据丢失。



回复

使用道具 举报

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

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

好哒,谢谢楼主大侠~我去试试~
回复

使用道具 举报

82#
 楼主| 发表于 2024-3-25 22:57:37 | 只看该作者
Yu9i8b2c71t 发表于 2024-3-25 20:09
楼主,虽然这种方式是成功了,我还是发现了一个不完善的地方就是:
当program.vhd比较大时,这个文件, ...

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

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

回复

使用道具 举报

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

楼主,虽然这种方式是成功了,我还是发现了一个不完善的地方就是:
当program.vhd比较大时,这个文件,很难做到连续存放于硬盘上。
最好还是,有能支持动态大小的VHD的方式的,就是不知道有没有这种方式。
回复

使用道具 举报

80#
发表于 2024-3-25 13:29:54 | 只看该作者
本帖最后由 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的环境,希望能成功。

回复

使用道具 举报

79#
发表于 2024-3-25 10:35: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喔?
回复

使用道具 举报

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

楼主,您说的细节,我都遵循了。
我再多试几次先,检查一下,看看是不是哪里出错了先。
回复

使用道具 举报

77#
 楼主| 发表于 2024-3-23 16:11:59 | 只看该作者
本帖最后由 dos时代菜鸟 于 2024-3-23 16:15 编辑
Yu9i8b2c71t 发表于 2024-3-23 15:47
楼主,您好,您的这个方法,我试了,不行啊。
windows.vhd里,已经安装了svbus驱动,然后,
grub那里事 ...

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

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


回复

使用道具 举报

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

楼主,您好,您的这个方法,我试了,不行啊。
windows.vhd里,已经安装了svbus驱动,然后,
grub那里事先挂在了多个vhd,但是,进入系统后,依旧没有看到“program.vhd”被挂载啊。
。。
您那边,能成功吗?
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-13 15:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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