无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 34640|回复: 50

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

  [复制链接]
发表于 2011-8-6 16:29:07 | 显示全部楼层 |阅读模式
[重发]快速恢复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 编辑 ]

评分

参与人数 3无忧币 +66 收起 理由
星影 + 1
vrboxing + 5 很给力!
2010ttt + 60 我很赞同

查看全部评分

发表于 2011-8-6 23:09:35 | 显示全部楼层
不错,支持一下,和我的有点区别,我的已经部署40多台电脑了,基本上没出什么问题。

我的是放在EISA分区的。
回复

使用道具 举报

发表于 2011-8-6 22:37:04 | 显示全部楼层
原帖由 qj_tzy 于 2011-8-6 16:29 发表
[重发]快速恢复VHD软盘映像_支持中文菜单、NTFS隐藏分区及长文件名

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

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


楼主客气了,你的方案更加完善,非常实用,我的原帖不知道是不是违规了,我也看不到了,呵呵!
回复

使用道具 举报

发表于 2011-8-6 20:44:58 | 显示全部楼层
看不懂下下来试试...
回复

使用道具 举报

发表于 2011-8-7 10:36:42 | 显示全部楼层
我共享下我的开机就还原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, 下载次数: 493, 下载积分: 无忧币 -2

回复

使用道具 举报

发表于 2011-8-7 08:17:11 | 显示全部楼层
我在用omnifs复制文件时报“no volume could be mounted using”,这是什么问题?我用的是EISA隐藏分区方式
回复

使用道具 举报

 楼主| 发表于 2011-8-7 09:08:21 | 显示全部楼层

回复 #4 Plantsoot 的帖子

其实,我看过您的帖子,并想修改后为我所用,但有些未看懂,所以,就借用了网友hbby发布的映像进行了修改,在我的电脑中使用正常。

我想,有空时,再仔细研读您的帖子,在读懂后,想用您之方法对本帖进行再改进。所以,还望您多指教。
回复

使用道具 举报

 楼主| 发表于 2011-8-7 09:31:00 | 显示全部楼层

回复 #5 hbby 的帖子

可能大致是说,不能连接到你指定的分区。

你可能要:一是检查你所用的omnifs的版本,要用最新的(本映像中带的omnifs就是最新的),为方便使用,我在1楼已上传最新版的omnifs32.exe;二是要用omnifs info命令查看本盘的分区编号,如本盘的VHD所在分区编号为1.4,需修改映像中的autoexec.bat的set diskno=1.3:句为set diskno=1.4:。若仍出问题,我也不知如何解决,那只有另请高手们解决了。
回复

使用道具 举报

发表于 2011-8-7 10:15:59 | 显示全部楼层

回复 #6 qj_tzy 的帖子

好吧,我把我的共享一下。
回复

使用道具 举报

发表于 2011-8-7 10:18:01 | 显示全部楼层
能不能实现开机就还原下vhd,然后再接着进系统。
回复

使用道具 举报

 楼主| 发表于 2011-8-7 10:40:06 | 显示全部楼层

回复 #10 Plantsoot 的帖子

在那里下载? 还烦请列出下载点?
回复

使用道具 举报

发表于 2011-8-7 10:46:53 | 显示全部楼层
原帖由 qj_tzy 于 2011-8-7 10:40 发表
在那里下载? 还烦请列出下载点?


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

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

使用道具 举报

发表于 2011-8-7 10:52:46 | 显示全部楼层

回复 #10 Plantsoot 的帖子

多谢了,我试试,有不懂的再请教你
回复

使用道具 举报

发表于 2011-8-7 10:59:15 | 显示全部楼层

回复 #13 425360202 的帖子

可以参考下,修改成适合自己的。
回复

使用道具 举报

发表于 2011-8-7 11:09:58 | 显示全部楼层
这个,说实话,看不懂
= =、
回复

使用道具 举报

发表于 2011-8-7 16:01:19 | 显示全部楼层
这个,说实话,看不懂
= =、

不能理解,可以说说实际环境和流程吗?
回复

使用道具 举报

发表于 2011-8-7 16:49:23 | 显示全部楼层
win7系统,VHD_OneKey_2011_51安装在真实C盘(未隐藏)<br />启动菜单VHD_OneKey_2011_51添加的,其他没了  就是想开机还原vhd后接着进系统,达到影子系统的功能
多谢了

[ 本帖最后由 425360202 于 2011-8-7 16:51 编辑 ]
回复

使用道具 举报

发表于 2011-8-7 20:05:27 | 显示全部楼层
原帖由 Plantsoot 于 2011-8-7 10:46 发表


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

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


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

希望Plantsoot  兄继续完善。
回复

使用道具 举报

发表于 2011-8-7 20:53:13 | 显示全部楼层
其实用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 编辑 ]
回复

使用道具 举报

发表于 2011-8-7 21:01:56 | 显示全部楼层
原帖由 hbby 于 2011-8-7 20:53 发表
其实用omnifs有个完美方法,VHD随意放在哪个分区,可用批处理判断镜像所在分区,只要给指定的隐藏分区在隐藏前给此分区加个卷标名,然后用omnifs及另外两个DOS外部命令搜索定位即可


恩,确实是这样,可以随意放哪个区。有空我改下我自己的脚本,支持所有分区。
呵呵,我那一套东西是参考了各位的脚本,因为我要大量部署单位的电脑,所以采取了 EISA分区的方案。
回复

使用道具 举报

发表于 2011-8-7 23:14:29 | 显示全部楼层
我觉得可以使用GRUB4DOS查找定位好文件.然后把所需要的参数直接传给DOS的omnifs直接运行.
有兴趣的可以试试,直接利用MODBOOT添加一个模块挺方便的.

omnifs好像不需要DOS下的长文件名支持就可以复制长文件名的说.
回复

使用道具 举报

发表于 2011-8-7 23:58:07 | 显示全部楼层
我那个NTBOOT修改版VHD还原工具就是用C大方法修改的,只是做得不太好,希望有人完善得更好,它可以很方便实现开机自动还原VHD系统和创建真正意义上的多用户VHD系统。
回复

使用道具 举报

 楼主| 发表于 2011-8-10 09:08:49 | 显示全部楼层

回复 #21 chenall 的帖子

我原已知omnifs不需要DOS下的长文件名支持就可以复制长文件名,但未试,昨晚试了,不要DOS下的长文件名支持时,用omnifs还原时好像要慢一些,有DOS下的长文件名支持时,用omnifs还原时好像要快一些,不知为何,不知是否?

另外,对您所说的使用GRUB4DOS查找定位好文件.然后把所需要的参数直接传给DOS的omnifs直接运行的方法,比较感兴趣,但不知如何做,可否给些帮助,不知有否这方面的实例,是否如xiaoy
大之NTBOOT恢复映像之方法。
回复

使用道具 举报

发表于 2011-8-10 09:15:28 | 显示全部楼层

回复 #23 qj_tzy 的帖子

我之前有试了一下,好像有没有加长文件名效果都差不多.

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

实例可以参考QGHO(QGHO是MODBOOT的一个模块)
回复

使用道具 举报

 楼主| 发表于 2011-8-10 12:43:25 | 显示全部楼层

回复 #24 chenall 的帖子

谢谢,我学习一下,不清楚的再请教!
回复

使用道具 举报

发表于 2011-8-14 23:03:57 | 显示全部楼层
原帖由 Plantsoot 于 2011-8-7 10:46 发表


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

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



你的vhd还原 如果不用eisa(12)分区,只用ntfs(07)或者ntfs隐藏(17)
应该怎么样做
回复

使用道具 举报

发表于 2011-8-19 09:56:04 | 显示全部楼层
没太看懂呢,下来试一试吧
回复

使用道具 举报

发表于 2011-9-13 08:22:59 | 显示全部楼层
好强大,谢谢。。。。。。。。。。。。。。
回复

使用道具 举报

发表于 2011-9-14 16:34:31 | 显示全部楼层
请教原来用dd命令还原的方法有什么弊端吗?
回复

使用道具 举报

 楼主| 发表于 2011-9-15 12:46:15 | 显示全部楼层

回复 #29 thttht 的帖子

因grub4dos的DD命令不更改目标文件的大小,因此,可导致目标子VHD文件的大小越来越大(网友chenall说:最大不会超过实际大小)。

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


[ 本帖最后由 qj_tzy 于 2011-9-15 12:48 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 08:12

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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