无忧启动论坛

标题: 如何用G4D替换文件。。。 [打印本页]

作者: 0cat0    时间: 2010-12-23 15:45
标题: 如何用G4D替换文件。。。
因为想加个还原菜单到BCD里面,想法是这样的:

电脑启动,选还原菜单,自动替换某个文件,比如:C:\My_BOOT\WIN7_X86.VHD_BAK替换掉C:\My_BOOT\WIN7_X86.VHD,替换完后找bootmgr启动WIN7,这样就可以不用进PE来进行还原了。

自己对G4D的命令实在是一窍不通,所以请大大们给个实例,先多谢了!

[ 本帖最后由 0cat0 于 2010-12-24 12:45 编辑 ]
作者: chenall    时间: 2010-12-23 17:10
如果是FAT文件系统,直接用FAT的COPY命令,其它的就不行了.
作者: 0cat0    时间: 2010-12-23 17:18
多谢C大来解答,安装VHD版的WIN7系统用的是NTFS格式的,不知道还有没有其它能行得通的方法?
作者: 0cat0    时间: 2010-12-23 17:26
C大,另外看了WENV的帮助文件,想到如果把整个文件保存成变量然后写到指定的文件不知道可行否?看了一下帮助文件WENV的变量大概30K,可一个空的VHD就要100多K,不知道还有没有其它的办法?
作者: chenall    时间: 2010-12-23 17:41
目前除了FAT外命命令以外,GRUB4DOS的写文件都是在原有文件的基础上改写的.....
如果文件大小一样的话可以用DD直接写入.否则就没有什么用处了..
你可以试试类似如下的命令..
把bcd.bak写入到bcd中.
dd if=(hd0,0)/boot/bcd.bak of=(hd0,0)/boot/bcd

注意两个文件要一样大小,否则可能导致系统启动失败.目标文件比来源文件大应该也行,你可以试一下.
作者: 0cat0    时间: 2010-12-23 18:04
标题: 回复 #5 chenall 的帖子
多谢C大提供用dd的方法,等有时间的时候我试试,可能我没说明白,我要替换的不是BCD文件,而是VHD文件,一个空的文件就100多K,已有的VHD可能会有十几个G,按你说的“目标文件来源文件大应该可以”,这样就可以试试了。。。
作者: 0cat0    时间: 2010-12-23 19:01
原帖由 chenall 于 2010-12-23 17:41 发表
目前除了FAT外命命令以外,GRUB4DOS的写文件都是在原有文件的基础上改写的.....
如果文件大小一样的话可以用DD直接写入.否则就没有什么用处了..
你可以试试类似如下的命令..
把bcd.bak写入到bcd中.
dd if=(h ...



回C大,实验不成功,小的往大的地方写,显示成功,但目标文件的大小不变,截图:
2010-12-23_190045.png
2010-12-23_185923.png

作者: 0cat0    时间: 2010-12-23 19:06
大的往小的写也跟楼上的效果一样,目标文件的大小不变,不知道C大还有没有什么好方法?
作者: chenall    时间: 2010-12-23 19:40
本来就不变的啊,但是你可以试试启动它也许可以直接使用。
作者: 0cat0    时间: 2010-12-24 09:38
原帖由 <i>chenall</i> 于 2010-12-23 19:40 发表 <a href="http://bbs.wuyou.net/redirect.php?goto=findpost&pid=2119160&ptid=183850" target="_blank"><img src="http://bbs.wuyou.net/images/common/back.gif" border="0" onload="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" /></a><br />
本来就不变的啊,但是你可以试试启动它也许可以直接使用。
<br />


多谢C大,实验成功,小的往大的写可以引导成功,大的往小的写不行。

但现在有个问题,小的往大的写成功了,但目标文件的大小不会变小,这样即使替换成功也没有意义了,有什么办法能实现1:1的替换吗?
作者: 0cat0    时间: 2010-12-24 09:47
又试了几次,原来目标文件会变小,呵呵,太感谢C大了,这回可以不用进PE就能还原WIN7的VHD版了,呵呵。。。
作者: 0cat0    时间: 2010-12-24 11:52
最后,附上自己的G4D菜单:

timeout 0
default 0

title
find --set-root --ignore-floppies --ignore-cd /My_BOOT/WIN7_X86.VHD
dd if=()/My_BOOT/WIN7_X86.VHD_DD of=()/My_BOOT/WIN7_X86.VHD
find --set-root --ignore-floppies --ignore-cd /bootmgr
map () (hd0)
map (hd0) ()
map --rehook
find --set-root --ignore-floppies --ignore-cd /bootmgr
chainloader /BOOTMGR


下面是BCD截图:
2010-12-24_115122.png

作者: xiaoy    时间: 2010-12-24 13:31
太好了,昨天晚上我还在整IFS来解决这个问题,用了两个软盘镜像一,
也希望GRUB能有NTFS下文件复制及删除命令
现在就用这样的方法也能达到要求了,很好!   
作者: chenall    时间: 2010-12-24 14:13
原帖由 0cat0 于 2010-12-24 09:47 发表
又试了几次,原来目标文件会变小,呵呵,太感谢C大了,这回可以不用进PE就能还原WIN7的VHD版了,呵呵。。。


GRUB4DOS不会主动改变原文件大小(用FAT命令除外)

自动变小是因为系统自动处理的.
作者: 0cat0    时间: 2010-12-24 14:31
标题: 回复 #14 chenall 的帖子
这个知道,替换后的文件大小是不变的,进入系统后,因为做的是差分系统,所以系统会自己处理,变相的达到了我想要的效果了,呵呵。。。

如果给别人装机,我会直接给他们加个这种秒还原的菜单,这样就方便了。。。

对了,C大还想问个问题,我上面的菜单是替换后直接还回启动菜单,如果不想返回菜单而是直接启动NT6.X,要怎么改呢???
作者: chenall    时间: 2010-12-24 15:47
原帖由 0cat0 于 2010-12-24 14:31 发表
这个知道,替换后的文件大小是不变的,进入系统后,因为做的是差分系统,所以系统会自己处理,变相的达到了我想要的效果了,呵呵。。。

如果给别人装机,我会直接给他们加个这种秒还原的菜单,这样就方便了。 ...



启动BOOTMGR不启动NT6吗?那是你的BCD顺序问题把BCD也备份/恢复一下就可以了.
作者: 0cat0    时间: 2010-12-24 16:49
标题: 回复 #16 chenall 的帖子
又是我没说明白,我现在这个是替换VHD后返回菜单,因为菜单会显示9秒才启动NT6,我是想直接替换后不返回菜单(也就是不显示那9秒)直接进入NT6系统,不知道要怎么改才可以?
作者: chenall    时间: 2010-12-24 16:56
我还是没看明白,只要启动了BOOTMGR其它的就不是GRUB4DOS所能控制的了.

这个是你自己处理的问题.
作者: 0cat0    时间: 2010-12-24 16:59
标题: 回复 #18 chenall 的帖子
呵呵,因为之前C大你不是出品过NTBOOT吗,用NTBOOT启动NT6都是直接进入的,但NTBOOT里面的菜单我看过,看不懂,所以想问一下C大,怎么改我上面的菜单才能像NTBOOT一样,不显示原来BCD的菜单,进入NT6系统
作者: chenall    时间: 2010-12-24 17:06
原帖由 0cat0 于 2010-12-24 16:59 发表
呵呵,因为之前C大你不是出品过NTBOOT吗,用NTBOOT启动NT6都是直接进入的,但NTBOOT里面的菜单我看过,看不懂,所以想问一下C大,怎么改我上面的菜单才能像NTBOOT一样,不显示原来BCD的菜单,进入NT6系统


NTBOOT里面的BCD是特别处理过的,也只能用于NTBOOT.

要么你调用NTBOOT进入,否则除了上面的就没有其它办法了.
作者: 0cat0    时间: 2010-12-24 17:10
标题: 回复 #20 chenall 的帖子
多谢C大解答,这回明白了,那就先放弃这个想法了,呵呵。。。
作者: xiaoy    时间: 2010-12-25 00:37
title 1 Rebuild Your VHD SYSTEM
WENV set name=$input,Enter Your name : || fallback --go 3
WENV get name || fallback --go 3
WENV run find --set-root --ignore-cd --ignore-floppies /${name}.vhd || fallback --go 2
dd if=()/win7bak.vhd of=()/${name}.vhd
fallback --go 3

提示dd找不到文件
dd命令中不支持参数么
作者: chenall    时间: 2010-12-25 08:26
从来就不曾支持变量参数...........

使用变量是外部命令WENV的功能.你必须使用WENV调用才可以和变量.
作者: xiaoy    时间: 2010-12-25 08:57
谢谢指点
前面加上wenv run就可以了
作者: victor888    时间: 2011-1-1 13:57
正在研究VHD,呵呵,LZ问的问题也是我想解决的问题,不过,请楼主改一下题目,要明确是VHD还原的问题。

你们的讨论似乎结束了,我来“升温”吧。

1. 替换完文件直接启动差分VHD的问题,这个可以通过修改BOOTMGR(使用时将其改名),让其调用"BDC",而非BCD,这样就可以了,如何修改请找相关贴子(搜索关键字"BOOTMGR").

2. 如果不用这个方法可以考虑用omnifs工具,不过这要进G4D再进IMG,操作起来麻烦。对比用DD命令,此方法可抛弃。

昨天想通过启动WINRE.WIM来进行恢复了,后来感觉太麻烦。

[ 本帖最后由 victor888 于 2011-1-1 14:24 编辑 ]
作者: xiaoy    时间: 2011-1-25 00:14
我就是用的OMNIFS配合G4D NTBOOT来操作  快速还原 快速复制一个子VHD  让不同的用户用不同的子VHD来启动电脑 真正的一机多用户  不知道别人的VHD的名字就不能启动别人的系统  安全 独立  全部放到隐藏分区   硬盘不坏 引导不丢失 就没系统出问题的烦恼  非常完美了
DD命令只能输出到存在的文件上,经多次测试在NTFS上不稳定 偶尔会造成文件出错或丢失
作者: 879792799    时间: 2020-3-28 10:51
xiaoy 发表于 2010-12-25 00:37
title 1 Rebuild Your VHD SYSTEM
WENV set name=$input,Enter Your name : || fallback --go 3
WENV get ...

大侠 你菜单的意思-----是不是在G4D菜单 中完成 备份VHD直接覆盖即将启动的vhd?????
求指教!!!!
作者: xiaoy    时间: 2020-3-28 22:08
879792799 发表于 2020-3-28 10:51
大侠 你菜单的意思-----是不是在G4D菜单 中完成 备份VHD直接覆盖即将启动的vhd?????
求指教!!! ...

是的  很多年前的玩意   早就没有用了
作者: 879792799    时间: 2020-3-30 08:00
xiaoy 发表于 2020-3-28 22:08
是的  很多年前的玩意   早就没有用了

嗯嗯 谢谢 大大指点 !!!!  我正好需要这技术!!!
作者: lmqsk    时间: 2020-6-25 14:48
xiaoy 发表于 2020-3-28 22:08
是的  很多年前的玩意   早就没有用了

大神,弄一个在UEFI中可以秒还原vhd的应用吧。小白跪求。
作者: bsdgsos    时间: 2024-5-6 14:51
思路收藏




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