无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: chenall
打印 上一主题 下一主题

GRUB4DOS ghostid命令测试(01-15更新)

  [复制链接]
1#
发表于 2010-1-8 09:51:40 | 显示全部楼层
这是好东西啊,也许会引起一键还原软件的技术改革。
回复

使用道具 举报

2#
发表于 2010-1-14 09:26:16 | 显示全部楼层
用GHOSTID做了一个一键还原,效果很不错,暂时还没发现问题。
回复

使用道具 举报

3#
发表于 2010-1-14 13:20:10 | 显示全部楼层
原帖由 geogls 于 2010-1-14 12:17 发表



可以放出来让大家用用试试。

行啊,找个时间,传上来,更多人测试,有问题的话C大可以修正。
回复

使用道具 举报

4#
发表于 2010-1-14 16:36:17 | 显示全部楼层
楼上真强大,这样的分区都能整出来。果然是专门整一键恢复的强人。
回复

使用道具 举报

5#
发表于 2010-1-14 18:52:48 | 显示全部楼层
等待C大的修正版。。。
回复

使用道具 举报

6#
发表于 2010-1-14 20:29:59 | 显示全部楼层
原帖由 chenall 于 2010-1-14 20:02 发表
试试这个,如果没错再上传到Googlecode上。

多加了一个循环。

好快的效率。。
回复

使用道具 举报

7#
发表于 2010-1-14 20:55:12 | 显示全部楼层
原帖由 lianjiang 于 2010-1-14 20:30 发表


这种分区是很一般的。

用户的分区情况比这要复杂得多。
只有尽可能考虑周全,才可能做得更好,哪怕是一点点。

你做的是给别人用的,专业一些,要求当然就高一些,我是给自己用的,情况比较简单,所以随便一些。
回复

使用道具 举报

8#
发表于 2010-1-22 18:33:10 | 显示全部楼层
原帖由 jnax 于 2010-1-21 22:36 发表
我是菜鸟级的初级潜水员。
有这样的问题,那就是在U盘上的GHO文件,U盘启动后想自动还原到硬盘的第一个分区。可是有的情况下U盘启动后成了第一硬盘,这就造成GHOST的自动脚本不好确定源和目标的位置,C大的这个 ...

find --ignore-cd --ignore-floppies /boot/WTool.lst (bd)/boot/ghostid
dd if=(md) of=(fd0)/sd.bat bs=1 count=5 skip=0x4FF00 seek=0x11
用这个就可以确定。
回复

使用道具 举报

9#
发表于 2010-1-22 19:14:01 | 显示全部楼层
问个问题,当用find --ignore-cd --ignore-floppies /boot/WTool.lst (bd)/boot/ghostid查找文件时,如果文件不存在,有没有办法不提示?

[ 本帖最后由 sowind 于 2010-1-22 19:30 编辑 ]
回复

使用道具 举报

10#
发表于 2010-1-22 22:23:48 | 显示全部楼层
原帖由 chenall 于 2010-1-22 21:34 发表
不存在就不应该执行下面的语句了吧....

不想提示可以使用||
试试
find --ignore-cd --ignore-floppies /boot/WTool.lst (bd)/boot/ghostid || pause --wait=0

谢谢C大,加了|| pause --wait=0 确实不提示了,测试了一下文件不存在,不提示的情况下,会继续执行下面的语句。
回复

使用道具 举报

11#
发表于 2010-1-23 11:05:47 | 显示全部楼层
原帖由 jnax 于 2010-1-23 09:54 发表


谢谢您的回复。

假设我的U盘GHOST目录有一个jnax.gho文件,想使用此目录中的GHOST自动把这个备份恢复到硬盘(单硬盘)的第一分区,哪位老大可以给说说从电脑启动到完成恢复整个过程的方法?这样就可以很 ...

菜单的内容:
title 【 02 】恢复系统
map --mem /boot/backup.img (fd0)
map --hook
#硬盘上查找 /ghost/jnax.gho 获取硬盘ID
find --ignore-cd --ignore-floppies /ghost/jnax.gho (bd)/boot/ghostid
#写入bd.bat,你的要求是恢复到第一分区,所以恢复的ID就不判断了,直接2:1就行了,这里不是很严谨,最好的办法是能判断硬盘的第一分区,因为有的时候U盘可能不是以HDD模式启动的,不知道那种情况下,硬盘的第一分区是否还是2:1,这个就需要你自己测试了,或者你量产U盘的时候做成HDD启动,并把U盘格式化成FAT32模式,那么这里的判断也是不必要的,直接GHOST -clone,mode=pload,src C:\ghost\jnax,gho:1,dst=2:1 -fro -nousb -noide -crcignore -sure -rb 就行了,可能会更简单些,我就是这么处理的,还没出现过问题。如果一定要用ghostid的话,最好是判断一下硬盘的第一分区,比如判断WINDOWS目录是否存在来定位第一分区。注意一点,grub对大小写是敏感的,定位文件的时候一定要区分大小写。
dd if=(md) of=(fd0)/bd.bat bs=1 count=5 skip=0x4FF00 seek=0x11
chainloader (fd0)+1
rootnoverify (fd0)

bd.bat的内容
@ECHO OFF
set B=+::--

rst.bat的内容
@ECHO OFF
CALL SD.BAT
GHOST -clone,mode=pload,src=%B%:\ghost\jnax.gho:1,dst=2:1 -fro -nousb -noide -crcignore -sure -rb
CLS
func -r
::恢复系统


autoexec.bat的内容,恢复还是备份可以用menu.lst控制,因为你只要求恢复,默认就设定恢复,所以不用改变。
@ECHO OFF
CALL rst.BAT

[ 本帖最后由 sowind 于 2010-1-23 11:18 编辑 ]
回复

使用道具 举报

12#
发表于 2010-1-23 12:31:57 | 显示全部楼层
原帖由 Hwlon 于 2010-1-23 11:54 发表




title (3) 克隆安装 Windows XP 到硬盘第一分区
map --mem /ntdos.ud (fd0)
map --hook
checkrange 0x80 read 0x8280 && dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=14 see ...

这里的ntdos.ud也是一个IMG镜像,还是指向U盘的UD区里面的一个文件?能贴出相关的文件内容学习一下吗?

checkrange 0x80 read 0x8280 这句能解释一下吗?我知道0x80代表第一个硬盘,字面理解好象是检测第一块硬盘,read后面的意思就不清楚了,请指教一下,谢谢!

[ 本帖最后由 sowind 于 2010-1-23 12:35 编辑 ]
回复

使用道具 举报

13#
发表于 2010-1-23 15:58:06 | 显示全部楼层
原帖由 Hwlon 于 2010-1-23 14:04 发表
[quote]原帖由 jnax 于 2010-1-23 13:54 发表
简单的说,我的想法就是:
在UD中有一个ghost.img文件,U盘启动它后,运行U盘可见分区(FAT32)中GHOST文件夹中的 ...

是啊,楼上已经给出答案了
title (3) 克隆安装 Windows XP 到硬盘第一分区
map --mem /ntdos.ud (fd0)
map --hook
checkrange 0x80 read 0x8280 && dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=14 seek=26
checkrange 0x80 read 0x8280 || dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=15 seek=26
chainloader (fd0)+1
rootnoverify (fd0)
这种方式更准确些。

To: jnax

加些解释吧:checkrange 0x80 read 0x8280 判断硬盘是否为第一磁盘,用GHOST的语言就是硬盘为1:1,
&& dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=14 seek=26的意思就是:&&前面的条件成立,执行 dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=14 seek=26。
而 || dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=15 seek=26的意思:||就是前面的条件不成立就执行 dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=15 seek=26
这里是通过特定的条件判断来修改镜像里的autoexec.bat相关内容,执行正确的程序。

水平有限,大概解释了一下,希望能明白。

[ 本帖最后由 sowind 于 2010-1-23 17:22 编辑 ]
回复

使用道具 举报

14#
发表于 2010-1-23 16:00:52 | 显示全部楼层
其实我还是不大明白read 0x8280 是什么意思?为什么是0x8280,而不是其它的,整句的真假符号还是看得懂,呵呵,见笑了。不过还是谢谢你的回答。
回复

使用道具 举报

15#
发表于 2010-1-23 17:13:19 | 显示全部楼层
原帖由 chenall 于 2010-1-23 16:37 发表
现在很多人都喜欢鱼,不想渔了。

read读取内存数值。
0x8280 内存位置 ,这个位置是存放了当前的启动设备的磁盘号码
0x80第一个硬盘。

我比较喜欢渔,呵呵

上面在readme_grub4dos中都有介绍。

明白了,多谢C大,readme有点长,只在上面用过查找功能,从没从头看到尾过。- -#
回复

使用道具 举报

16#
发表于 2010-1-24 17:00:57 | 显示全部楼层
原帖由 chenall 于 2010-1-24 16:51 发表
因为0x80是代表第一硬盘。

你从第一硬盘启动的就是0x80。
从第二硬盘就是0x81

如果只想检测是否从硬盘启动可以使用
0x80:0x9F

那么某些BIOS启动的时候会把U盘认成另一个实际存在的硬盘的情况下,并通过这个U盘启动,这样子测试的方式会起作用吗?还是说它能实际区分到底是硬盘还是U盘?
回复

使用道具 举报

17#
发表于 2010-1-24 17:08:18 | 显示全部楼层
原帖由 jnax 于 2010-1-24 16:18 发表
C老大
我是想说:
checkrange 0x80 read 0x8280 && dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=19 seek=31
checkrange 0x80 read 0x8280 || dd if=(fd0)/autoexec.bat of=(fd0)/aut ...

我想上面检测出错的问题,应该是在其中一台机子上U盘被认做硬盘引起的。当你从U盘启动的时候,checkrange 0x80 read 0x8280通过BIOS读取到的信息却是硬盘。不知我的理解是否有问题?
曾经碰到过一台机子,修改引导顺序的时候,设定USB-HDD或USB-ZIP引导居然无效,后来发现在硬盘引导那边直接回车,多了一个U盘的品牌,切换成U盘,成功启动。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-5 04:20

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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