无忧启动论坛

标题: [重发]快速恢复VHD软盘映像_支持中文菜单、NTFS隐藏分区及长文件名 [打印本页]

作者: qj_tzy    时间: 2011-8-6 16:29
标题: [重发]快速恢复VHD软盘映像_支持中文菜单、NTFS隐藏分区及长文件名
[重发]快速恢复VHD软盘映像_支持中文菜单、NTFS隐藏分区及长文件名

申明:此帖原由网友hbby发布,其软盘映像支持中文菜单、NTFS普通隐藏分区及长文件名。在此,对网友hbby表示感谢!

经本人作了一点微小改动,即在DOS下使用omnifs info命令,或在winpe或windows中使用omnifs32 info命令,如列出存放VHD文件的分区的编号为1.3(即第1硬盘第3分区),将autoexec.bat的内容(其中的1.3:\dir\file,不能改为1:3\dir\file)作如下修改,将映像更改为2.88M后,将omnifs.exe及autoexec.bat加入映像后,用grub4dos调用该映像即可。

改动后,支持普通隐藏或EISA隐藏的NTFS分区及长文件名,且还原后,子VHD文件的大小与时间,与备份VHD文件的大小与时间完全相同。

改动后的映像下载:http://data.99pan.com/download/149748_33_3911094801409736350.html

欢迎各位网友再更新。

@ECHO OFF
PATH A:\
LH DOSKEY.COM
DOSLFN
SET COMSPEC=A:\COMMAND.COM
set cp=936
if not %1#==# set cp=%1
lh hdpmi32
lh ndos -lfn -mountall -cp:%cp%
ndlist -
set cp=
LH tw /ns /np>nul
mode 80
rem 此法支持普通隐藏或EISA隐藏的NTFS分区及长文件名,且还原后,子VHD文件的大小与时间,与备份VHD文件的大小与时间完全相同
set diskno=1.3:
rem diskno的值可根据omnifs info命令查得

echo.
echo *** 快速还原VHD系统 ***
echo.
echo 1.快速还原-win2008r2
echo 2.快速还原-win7
echo 3.快速还原-win2008
echo 4.快速还原-winvista
echo 5.快速还原-win2003
echo 6.快速还原-winxp
echo 7.重新启动电脑
echo.
choice /c:1**67 请选择
if errorlevel 7 goto end
if errorlevel 6 goto winxp
if errorlevel 5 goto win2003
if errorlevel 4 goto winvista
if errorlevel 3 goto win2008
if errorlevel 2 goto win7
if errorlevel 1 goto win2008r2

:win2008r2
omnifs copy %diskno%"\vhd_sys\my_win2008r2_CHILD_BAK.vhd" %diskno%"\vhd_sys\my_win2008r2_CHILD.vhd"
echo Restore OK!
pause
goto end

:win7
omnifs copy %diskno%"\vhd_sys\my_win7_CHILD_BAK.vhd" %diskno%"\vhd_sys\my_win7_CHILD.vhd"
echo Restore OK!
pause
goto end

:win2008
omnifs copy %diskno%\vboot_vhd\win2008_child_bak.vhd %diskno%\vboot_vhd\win2008_child.vhd
echo Restore OK!
pause
goto end

:winvista
omnifs copy %diskno%\vboot_vhd\winvista_child_bak.vhd %diskno%\vboot_vhd\winvista_child.vhd
echo Restore OK!
pause
goto end

:win2003
omnifs copy "%diskno%\vboot_vhd\win2003_child_bak.vhd" "%diskno%\vboot_vhd\win2003_child.vhd"
echo Restore OK!
pause
goto end

:winxp
omnifs copy "%diskno%\vboot_vhd\winxp_child_bak.vhd" "%diskno%\vboot_vhd\winxp_child.vhd"
echo Restore OK!
pause
goto end

:end
reboot

另:为方便使用,我上传了omnifs32.exe
下载地址为http://data.99pan.com/download/149748_35_6972135173138132601.html

可用另一法,感觉更方便,请阅grub4dos调用IMG映像通用模块实现快速恢复VHD_支持NTFS隐藏分区及长文件名 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=204649&highlight=%2Bqj%5C_tzy

[ 本帖最后由 qj_tzy 于 2012-9-21 09:23 编辑 ]
作者: 425360202    时间: 2011-8-6 20:44
看不懂下下来试试...
作者: hbby    时间: 2011-8-6 22:37
原帖由 qj_tzy 于 2011-8-6 16:29 发表
[重发]快速恢复VHD软盘映像_支持中文菜单、NTFS隐藏分区及长文件名

申明:此帖原由网友hbby发布,其软盘映像支持中文菜单、NTFS普通隐藏分区及长文件名。在此,对网友hbby表示感谢!

经本人作了一点微小 ...


楼主客气了,你的方案更加完善,非常实用,我的原帖不知道是不是违规了,我也看不到了,呵呵!
作者: Plantsoot    时间: 2011-8-6 23:09
不错,支持一下,和我的有点区别,我的已经部署40多台电脑了,基本上没出什么问题。

我的是放在EISA分区的。
作者: hbby    时间: 2011-8-7 08:17
我在用omnifs复制文件时报“no volume could be mounted using”,这是什么问题?我用的是EISA隐藏分区方式
作者: qj_tzy    时间: 2011-8-7 09:08
标题: 回复 #4 Plantsoot 的帖子
其实,我看过您的帖子,并想修改后为我所用,但有些未看懂,所以,就借用了网友hbby发布的映像进行了修改,在我的电脑中使用正常。

我想,有空时,再仔细研读您的帖子,在读懂后,想用您之方法对本帖进行再改进。所以,还望您多指教。
作者: qj_tzy    时间: 2011-8-7 09:31
标题: 回复 #5 hbby 的帖子
可能大致是说,不能连接到你指定的分区。

你可能要:一是检查你所用的omnifs的版本,要用最新的(本映像中带的omnifs就是最新的),为方便使用,我在1楼已上传最新版的omnifs32.exe;二是要用omnifs info命令查看本盘的分区编号,如本盘的VHD所在分区编号为1.4,需修改映像中的autoexec.bat的set diskno=1.3:句为set diskno=1.4:。若仍出问题,我也不知如何解决,那只有另请高手们解决了。
作者: Plantsoot    时间: 2011-8-7 10:15
标题: 回复 #6 qj_tzy 的帖子
好吧,我把我的共享一下。
作者: 425360202    时间: 2011-8-7 10:18
能不能实现开机就还原下vhd,然后再接着进系统。
作者: Plantsoot    时间: 2011-8-7 10:36
我共享下我的开机就还原VHD的文件,我就不另开主题了。

注意: 我的这套东西,要求XP VHD 要放在 第一个EISA隐藏分区(NTFS格式),就是分区标识为12,可以用DG把标识为7的NTFS转为12.

建议部署的方式:

1: fbinst + grldr

       硬盘用fbinst格式化,引导文件放ud内,最后一个分区先格式化为NTFS,再把分区参数转为12,也具是转为EISA分区。VHD文件放最后一个分区。

2:grldr.mbr 或者 wee 引导。其他同上。


有多余的代码未清理。

主要核心文件代码:

VHDLDR:

!BAT
set
:begin
if /i "--vboot"=="%~1" && goto :vboot_vhd
if /i "--restore"=="%~1" && goto :restore_vhd
exit
:vboot_vhd
map --mem (bd)/BOOT/GRUB/VBOOT.IMG (0)
map --hook
find --set-root %~2
uuid ()
set /l ?_UUID=%?_UUID%
echo -e -n "(UUID=%?_UUID%)%~2"\xd\xa\x7d >> (0)/vboot/grub/grub.cfg
kernel (0)/vbootldr
boot
exit
:restore_vhd
map --mem (bd)/BOOT/GRUB/VBOOT.IMG (0)
map --hook
find --set-root %~2
uuid ()
set /l ?_UUID=%?_UUID%
echo -e -n "(UUID=%?_UUID%)%~3"\xd\xa\x7d >> (0)/vboot/grub/grub.cfg
echo -e REVHD %~2 %~3 \n >> (0)/AUTOEXEC.BAT
cat --locate=/ --replace=\\ (0)/AUTOEXEC.BAT
rootnoverify (0)
chainloader (0)+1
boot
exit


REVHD.BAT :

@echo off
cls
tway /np >nul
::---------------------------------------------------
set VHD_BAK=%1
set VHD_NAME=%2
  
echo.
wbat text 3,6 (+green on black)"某某单位专用系统启动中,请等待...... !!!"
echo.
omnifs info >hd_id.txt
awk '/Diag/' hd_id.txt|nset VHD_PART=$1
::---------------------------------------------------
:del_vhd
cls
echo.
::可换单位自己的口号
wbat text 3,6 (+green on black)"发展社区健康服务,提高居民健康水平!"
echo.
omnifs if exist %VHD_PART%\%VHD_NAME% delete %VHD_PART%\%VHD_NAME% >nul
::---------------------------------------------------
:cp_vhd
cls
echo.
::可换单位自己的口号
wbat text 3,6 (+green on black)"医者,如临深渊,如履薄冰,需求真求确,必邃必专!"
echo.
omnifs copy %VHD_PART%\%VHD_BAK%   %VHD_PART%\%VHD_NAME%
::---------------------------------------------------
:satar
grub.exe --config-file="kernel (fd0)/vbootldr "
::---------------------------------------------------
:end
quit.com r
  
  


汗一个,忘记修改message文件了,背景是我单位定制的,变形的图片,4:3的显示器会变形。宽屏的刚好还原成正常比例。

[ 本帖最后由 Plantsoot 于 2011-8-7 21:03 编辑 ]

VHDLDR_Plantsoot下载地址.zip

227 Bytes, 下载次数: 495, 下载积分: 无忧币 -2


作者: qj_tzy    时间: 2011-8-7 10:40
标题: 回复 #10 Plantsoot 的帖子
在那里下载? 还烦请列出下载点?
作者: Plantsoot    时间: 2011-8-7 10:46
原帖由 qj_tzy 于 2011-8-7 10:40 发表
在那里下载? 还烦请列出下载点?


呵呵,老兄速度真快,我正编辑帖子呢。

http://u.115.com/file/dncbhs7j#
VHDLDR_Plantsoot.zip
作者: 425360202    时间: 2011-8-7 10:52
标题: 回复 #10 Plantsoot 的帖子
多谢了,我试试,有不懂的再请教你
作者: Plantsoot    时间: 2011-8-7 10:59
标题: 回复 #13 425360202 的帖子
可以参考下,修改成适合自己的。
作者: 425360202    时间: 2011-8-7 11:09
这个,说实话,看不懂
= =、
作者: k71g    时间: 2011-8-7 16:01
这个,说实话,看不懂
= =、

不能理解,可以说说实际环境和流程吗?
作者: 425360202    时间: 2011-8-7 16:49
win7系统,VHD_OneKey_2011_51安装在真实C盘(未隐藏)<br />启动菜单VHD_OneKey_2011_51添加的,其他没了  就是想开机还原vhd后接着进系统,达到影子系统的功能
多谢了

[ 本帖最后由 425360202 于 2011-8-7 16:51 编辑 ]
作者: k71g    时间: 2011-8-7 20:05
原帖由 Plantsoot 于 2011-8-7 10:46 发表


呵呵,老兄速度真快,我正编辑帖子呢。

http://u.115.com/file/dncbhs7j#
VHDLDR_Plantsoot.zip


我的EISA分区是在最后边,并且不是默认启动分区(默认启动分区在第一分区),结果启动失败。看来还需要继续修改。

希望Plantsoot  兄继续完善。
作者: hbby    时间: 2011-8-7 20:53
其实用omnifs有个完美方法,VHD随意放在哪个分区,可用批处理判断镜像所在分区,只要给指定的隐藏分区在隐藏前给此分区加个卷标名,然后用omnifs及另外两个DOS外部命令搜索定位即可

例如设置隐藏分区的卷标为VHD_SYS
omnifs info | find /i "vhd_sys" | nset VHD_PART=$1
此时变量VHD_PART就是你的VHD镜像存放的盘符

[ 本帖最后由 hbby 于 2011-8-8 15:10 编辑 ]
作者: Plantsoot    时间: 2011-8-7 21:01
原帖由 hbby 于 2011-8-7 20:53 发表
其实用omnifs有个完美方法,VHD随意放在哪个分区,可用批处理判断镜像所在分区,只要给指定的隐藏分区在隐藏前给此分区加个卷标名,然后用omnifs及另外两个DOS外部命令搜索定位即可


恩,确实是这样,可以随意放哪个区。有空我改下我自己的脚本,支持所有分区。
呵呵,我那一套东西是参考了各位的脚本,因为我要大量部署单位的电脑,所以采取了 EISA分区的方案。
作者: chenall    时间: 2011-8-7 23:14
我觉得可以使用GRUB4DOS查找定位好文件.然后把所需要的参数直接传给DOS的omnifs直接运行.
有兴趣的可以试试,直接利用MODBOOT添加一个模块挺方便的.

omnifs好像不需要DOS下的长文件名支持就可以复制长文件名的说.
作者: xiaoy    时间: 2011-8-7 23:58
我那个NTBOOT修改版VHD还原工具就是用C大方法修改的,只是做得不太好,希望有人完善得更好,它可以很方便实现开机自动还原VHD系统和创建真正意义上的多用户VHD系统。
作者: qj_tzy    时间: 2011-8-10 09:08
标题: 回复 #21 chenall 的帖子
我原已知omnifs不需要DOS下的长文件名支持就可以复制长文件名,但未试,昨晚试了,不要DOS下的长文件名支持时,用omnifs还原时好像要慢一些,有DOS下的长文件名支持时,用omnifs还原时好像要快一些,不知为何,不知是否?

另外,对您所说的使用GRUB4DOS查找定位好文件.然后把所需要的参数直接传给DOS的omnifs直接运行的方法,比较感兴趣,但不知如何做,可否给些帮助,不知有否这方面的实例,是否如xiaoy
大之NTBOOT恢复映像之方法。
作者: chenall    时间: 2011-8-10 09:15
标题: 回复 #23 qj_tzy 的帖子
我之前有试了一下,好像有没有加长文件名效果都差不多.

有兴趣可以看一下MODBOOT的模块方法.

实例可以参考QGHO(QGHO是MODBOOT的一个模块)
作者: qj_tzy    时间: 2011-8-10 12:43
标题: 回复 #24 chenall 的帖子
谢谢,我学习一下,不清楚的再请教!
作者: k71g    时间: 2011-8-14 23:03
原帖由 Plantsoot 于 2011-8-7 10:46 发表


呵呵,老兄速度真快,我正编辑帖子呢。

http://u.115.com/file/dncbhs7j#
VHDLDR_Plantsoot.zip



你的vhd还原 如果不用eisa(12)分区,只用ntfs(07)或者ntfs隐藏(17)
应该怎么样做
作者: dellhp    时间: 2011-8-19 09:56
没太看懂呢,下来试一试吧
作者: xyxb    时间: 2011-9-13 08:22
好强大,谢谢。。。。。。。。。。。。。。
作者: thttht    时间: 2011-9-14 16:34
请教原来用dd命令还原的方法有什么弊端吗?
作者: qj_tzy    时间: 2011-9-15 12:46
标题: 回复 #29 thttht 的帖子
因grub4dos的DD命令不更改目标文件的大小,因此,可导致目标子VHD文件的大小越来越大(网友chenall说:最大不会超过实际大小)。

此用映像方式还原的子VHD文件的大小与时间,与备份VHD文件的大小与时间完全相同。


[ 本帖最后由 qj_tzy 于 2011-9-15 12:48 编辑 ]
作者: thttht    时间: 2011-9-15 14:56
哦!这样啊!谢谢你的解答!明白了!
作者: haook    时间: 2011-9-22 17:19
标题: 回复 #20 Plantsoot 的帖子
对你的部署方案很感兴趣,非常期待能够支持所有分区,另外向你请教两个问题:1、能不能支持WIN7.VHD  2、在你的GRUB菜单中,如何设置密码?谢谢!
作者: qj_tzy    时间: 2011-9-24 11:29
标题: 回复 #32 haook 的帖子
1.能支持所有vhd系统,当然包括win7;

2.在GRUB菜单中设置密码问题,请详见帖子《winxp、win7双VHD系统的安装、启动、快速还原、更改启动项密码方法简介》
http://bbs.wuyou.net/forum.php?m ... hlight=%2Bqj%5C_tzy

3.能支持所有分区。因VHD文件在某一电脑中的分区是确定的,可在winpe或windows中使用omnifs32 info命令,如列出存放VHD文件的分区的编号若为1.4(即第1硬盘第4分区),在批处理中将set diskno=1.3:改为set diskno=1.4:即可。若每次均是全盘搜索VHD文件,批处理写起来比较麻烦,搜索起来也比较费时,我觉得完全没有这个必要。
作者: appben    时间: 2011-9-24 15:42
很强大的方法,一键恢复也用不上了!
作者: haook    时间: 2011-9-26 15:12
谢谢楼主的解答!还有2个问题:
1、为什么我用你上传的omnifs32.exe在DOS下使用omnifs info命令,或在winpe或windows中使用omnifs32 info命令,都没有列出存放VHD文件的分区的编号,如何正确使用omnifs32.exe才能显示编号。
2、我的WIN7-VHD文件放在第一硬盘第二主分区EISA隐藏的NTFS分区WIN7目录下,请楼主帮我改一下autoexec.bat,然后上传,谢谢!

[ 本帖最后由 haook 于 2011-9-26 15:23 编辑 ]
作者: qj_tzy    时间: 2011-9-27 11:34
标题: 回复 #35 haook 的帖子
将set diskno=1.4:改为set diskno=1.2:,将目录\vhd_sys\改为\win7,且将子VHD的名称更改为你的子VHD的名称即可。
作者: haook    时间: 2011-9-27 12:41
非常感谢谢楼主解答!
作者: wanghh    时间: 2011-11-1 11:37
☆۩۞۩☆【谢谢提供!】 ☆۩۞۩☆
作者: axgshr    时间: 2012-3-16 00:22
提示: 作者被禁止或删除 内容自动屏蔽
作者: 小豪diao    时间: 2012-7-28 17:35
既然部署了dos下进行还原子VHD,为什么不继续的替换完vhd,直接继续引导win7呢
作者: szfhx    时间: 2012-8-15 06:26
谢谢楼主分享!
作者: zcl200563    时间: 2012-9-19 12:47
好 好 谢谢共享经验,菜鸟受教了
作者: muelfox    时间: 2013-5-26 13:42
不错,支持一下
作者: change_sh    时间: 2014-6-24 08:37

作者: 2012sxz    时间: 2014-12-18 12:03
还原VHDXP,出现“no volume could be mounted using”,这是什么问题?
作者: lixinran550    时间: 2015-12-1 12:00
看不懂下下来试试...
作者: yuyer    时间: 2015-12-6 16:08
好东西,赞
作者: bsdgsos    时间: 2024-2-22 06:08
先看看
作者: AcidBurn    时间: 2024-2-22 06:40
谢谢分享
作者: bsdgsos    时间: 2024-2-23 01:28
先收下
作者: wang1126    时间: 2024-3-3 16:06
谢谢提供




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