无忧启动论坛

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

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

  [复制链接]
61#
发表于 2010-1-21 22:36:02 | 只看该作者
我是菜鸟级的初级潜水员。
有这样的问题,那就是在U盘上的GHO文件,U盘启动后想自动还原到硬盘的第一个分区。可是有的情况下U盘启动后成了第一硬盘,这就造成GHOST的自动脚本不好确定源和目标的位置,C大的这个工具是不是就用来确定硬盘第一主分区的位置的?也就是dst=1:1这里的参数?
回复

使用道具 举报

62#
发表于 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
用这个就可以确定。
回复

使用道具 举报

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

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

使用道具 举报

64#
 楼主| 发表于 2010-1-22 21:34:55 | 只看该作者
不存在就不应该执行下面的语句了吧....

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

使用道具 举报

65#
发表于 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 确实不提示了,测试了一下文件不存在,不提示的情况下,会继续执行下面的语句。
回复

使用道具 举报

66#
 楼主| 发表于 2010-1-22 22:37:38 | 只看该作者
如果不提示也就是相当于忽略错误检查.

相当于
errorcheck off
find --ignore-cd --ignore-floppies /boot/WTool.lst (bd)/boot/ghostid
errorcheck on
回复

使用道具 举报

67#
发表于 2010-1-23 08:22:26 | 只看该作者
不知道像这种分区,用ghostid识别出的结果会是什么样的?

回复

使用道具 举报

68#
发表于 2010-1-23 09:54:29 | 只看该作者
原帖由 sowind 于 2010-1-22 18:33 发表

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
用这个就可以确定。


谢谢您的回复。

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

使用道具 举报

69#
发表于 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 编辑 ]
回复

使用道具 举报

70#
发表于 2010-1-23 11:52:12 | 只看该作者
谢谢 sowind  

我是这样制作的U盘,使用 FbinstTool 制作的 UD 分区,通过GRUB的menu.lst启动UD中的ghost.img然后执行ghost.exe(测试)。
UD格式化的时候,可见分区是FAT32的。
启动后,U盘的可见分区在dos下是C,可是在ghost中U盘的ID是2,硬盘的ID是1(这是我的台式机,sata硬盘;好似正相反在我的笔记本中好似正相反)。
所以,我的想法是:通过ghostid获得U盘的ID,如果U盘的ID是A,那么硬盘的ID应该就是B了(A、B分别代表1或2)。这样,把检测结果自动添加到GHOST -clone,mode=pload,src=A:1\ghost\jnax.gho:1,dst=B:1 -fro -nousb -noide -crcignore -sure -rb中就没有问题了。
不知道我的想法是否正确,请指教。
如果正确的话,如何使用ghostid来获得并添加到GHOST -clone,mode=pload,src=A:1\ghost\jnax.gho:1,dst=B:1 -fro -nousb -noide -crcignore -sure -rb中。
回复

使用道具 举报

71#
发表于 2010-1-23 11:54:25 | 只看该作者
原帖由 sowind 于 2010-1-23 11:05 发表

菜单的内容:
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
...




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)
回复

使用道具 举报

72#
发表于 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 编辑 ]
回复

使用道具 举报

73#
发表于 2010-1-23 13:46:26 | 只看该作者
原帖由 sowind 于 2010-1-23 12:31 发表

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

checkrange 0x80 read 0x8280 这句能解释一下吗?我知道0x80代表第一个硬盘,字面理解好象是检测第一 ...



是一个dos镜像,我做了一个一键恢复;2个硬盘dos(一个安装到c,一个安装到d);一个ud;一个ucd。多了为了便于区分,因为是在ud,扩展名就用ud了。其实就是dos7.1


checkrange 0x80 read 0x8280 && 如果为真u盘为第一磁盘;下一句如果假硬盘就是第一磁盘。

怎么心里明白,解释的时候好像没有很专业的词汇来解释。呵呵,请将就看看吧!!至于那个img有点大,5.68m。因为我把所有的dos工具都放在那个镜像里了,也就是个组合,相当初也费了我好多时间,但确实没技术含量,也就自己感觉好就一直用了(如果需要我就去除PE,发上来)。里面有个pe,我心如水的维护版!在这里做一下广告:

我心如水维护版PE,很好用的2003PE!!!!!!!

感谢我心如水!!!!

另外:不知chenall,现在是否有时间了?有个问题不知能否搞定它?
这个应该是一键恢复的范畴:

就是bean的那个makerom isa模块,刷grldr.mbr入bios  提示会单独一屏,这样看起来不专业,不完美。我尝试去掉提示,但还是会单独显示光标符的一屏。如果能提到第一屏末端就好了。
看了一下源代码,无从下手。(把grldr.mbr 刷入bios 配上ghostid,超强的一键恢复。
无刷经验的朋友,不要乱刷啊。)

http://bbs.znpc.net/viewthread.php?tid=4315&highlight=makerom%2B%2Bmakrom

[ 本帖最后由 Hwlon 于 2010-1-23 14:13 编辑 ]
回复

使用道具 举报

74#
发表于 2010-1-23 13:54:13 | 只看该作者
简单的说,我的想法就是:
在UD中有一个ghost.img文件,U盘启动它后,运行U盘可见分区(FAT32)中GHOST文件夹中的ghost.exe并把同位置的jnax.gho自动恢复到硬盘的第一个主分区。

这需要检测:
1、通过jnax.gho定位U盘可见分区的位置从而知道U盘的ID
1、通过U盘的ID,知道硬盘的ID,并动态修改批处理实现自动恢复。

不知道这样我说明白了吗?
回复

使用道具 举报

75#
发表于 2010-1-23 14:04:14 | 只看该作者
[quote]原帖由 jnax 于 2010-1-23 13:54 发表
简单的说,我的想法就是:
在UD中有一个ghost.img文件,U盘启动它后,运行U盘可见分区(FAT32)中GHOST文件夹中的ghost.exe并把同位置的jnax.gho自动恢复到硬盘的第一个主分区。

这个还得麻烦朋友看一下论坛,好吗?如果你能有时间从头到尾看一遍论坛,你自己就搞定了。呵呵
回复

使用道具 举报

76#
发表于 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 编辑 ]
回复

使用道具 举报

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

使用道具 举报

78#
 楼主| 发表于 2010-1-23 16:34:19 | 只看该作者
#67
lianjiang
ghostid是根据分区的起始位置来识别ID的。

另外好像没有这样的分区吧。第二个主分区也是一个逻辑分区的。
回复

使用道具 举报

79#
 楼主| 发表于 2010-1-23 16:37:35 | 只看该作者
现在很多人都喜欢鱼,不想渔了。

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

我比较喜欢渔,呵呵

上面在readme_grub4dos中都有介绍。
回复

使用道具 举报

80#
发表于 2010-1-23 16:50:34 | 只看该作者
原帖由 chenall 于 2010-1-23 16:34 发表
#67
lianjiang
ghostid是根据分区的起始位置来识别ID的。

另外好像没有这样的分区吧。第二个主分区也是一个逻辑分区的。


第二个是主分区,是逻辑分区就不会问你了,呵呵。
这种分区形式,windows是支持的,而一般的磁盘工具都不支持。
这正是其特殊之处。
回复

使用道具 举报

81#
 楼主| 发表于 2010-1-23 17:01:52 | 只看该作者
只要grub4dos能认到这个分区一般就没有问题.
回复

使用道具 举报

82#
发表于 2010-1-23 17:07:49 | 只看该作者
原帖由 chenall 于 2010-1-23 17:01 发表
只要grub4dos能认到这个分区一般就没有问题.


grub4dos能认识估计是没有问题,但ghostid识别了是给ghost用的,因此与ghost不一致就是问题了。
回复

使用道具 举报

83#
发表于 2010-1-23 17:13:15 | 只看该作者
LfoFilesystemManager diagnostic...
==================================

Filesystem Index: 0
Filesystem Descriptor:
  ID's:
    ID Type: 2
    ID: A:
  DriveType: 2
  No FilesystemInfo structure.
  Filesystem has no VolumePtr

Filesystem Index: 1
Filesystem Descriptor:
  ID's:
    ID Type: 1
    ID: 1.1:
    ID Type: 4
    ID: WINDOWSXP:
  DriveType: 4
  FilesystemInfo:
    formatType: 8
    volumeName: Windowsxp

Filesystem Index: 2
Filesystem Descriptor:
  ID's:
    ID Type: 1
    ID: 1.2:
    ID Type: 4
    ID: :
  DriveType: 4
  FilesystemInfo:
    formatType: 8
    volumeName:

Filesystem Index: 3
Filesystem Descriptor:
  ID's:
    ID Type: 1
    ID: 1.3:
    ID Type: 4
    ID: :
  DriveType: 4
  FilesystemInfo:
    formatType: 8
    volumeName:

Filesystem Index: 4
Filesystem Descriptor:
  ID's:
    ID Type: 1
    ID: 1.4:
    ID Type: 4
    ID: :
  DriveType: 4
  FilesystemInfo:
    formatType: 8
    volumeName:

Filesystem Index: 5
Filesystem Descriptor:
  ID's:
    ID Type: 1
    ID: 1.5:
  DriveType: 4
  FilesystemInfo:
    formatType: 8
    volumeName:
回复

使用道具 举报

84#
发表于 2010-1-23 17:13:19 | 只看该作者
原帖由 chenall 于 2010-1-23 16:37 发表
现在很多人都喜欢鱼,不想渔了。

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

我比较喜欢渔,呵呵

上面在readme_grub4dos中都有介绍。

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

使用道具 举报

85#
发表于 2010-1-23 17:56:28 | 只看该作者
原帖由 sowind 于 2010-1-23 15:58 发表

是啊,楼上已经给出答案了
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 ...


基础真的是很差,慢慢学习吧。

能得到这个ntdos.ud看看里面的autoexec.bat的内容可能就好理解了。

谢谢两位的热心帮助。

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

使用道具 举报

86#
 楼主| 发表于 2010-1-23 19:20:20 | 只看该作者
@lianjiang
也就是说ghost只能认到5个分区了.

不知GRUB4DOS对这个的识别情况如何?
回复

使用道具 举报

87#
发表于 2010-1-23 19:29:40 | 只看该作者
原帖由 chenall 于 2010-1-23 19:20 发表
@lianjiang
也就是说ghost只能认到5个分区了.

不知GRUB4DOS对这个的识别情况如何?


不清楚ghostid的识别情况,是用户反馈来的的信息。
因想到了ghostid这个功能,因此咨询一下。
回复

使用道具 举报

88#
发表于 2010-1-24 09:33:33 | 只看该作者
请帮助:
我的menu:
title [04] 启动 自动安装XP
map --mem (ud)/img/ghostxp.img (fd0)
map --hook
checkrange 0x80 read 0x8280 && dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=17 seek=27
checkrange 0x80 read 0x8280 || dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=18 seek=27
chainloader (fd0)+1
rootnoverify (fd0)

我的autoexec.bat:
@echo off
set abc=12
call resx.bat

我的res1.bat:
ghost -clone,mode=pload,src=1:1\ghost\axiangxp.gho:1,dst=2:1 -sure -rb

我的res2.bat:
ghost -clone,mode=pload,src=2:1\ghost\axiangxp.gho:1,dst=1:1 -sure -rb

问题:试图通过修改call resx.bat这一行中的x来执行自动恢复,可是运行结果是x没有被修改,不知道错在哪里?

---------------------------------------------------------------
在 sowind 的帮助下,问题解决。
错在  skip=17 seek=27 这里没有加上回车的2个字节。

skip=19 seek=31

多谢各位的帮助,终于成功了。

[ 本帖最后由 jnax 于 2010-1-24 10:21 编辑 ]
回复

使用道具 举报

89#
发表于 2010-1-24 10:53:01 | 只看该作者
title [04] 启动 自动安装XP
map --mem (ud)/img/ghostxp.img (fd0)
map --hook
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)/autoexec.bat bs=1 count=1 skip=19 seek=31
chainloader (fd0)+1
rootnoverify (fd0)

在台式机上(GHOST中硬盘为第一)测试通过;在笔记本上(GHOST中硬盘为第二),autoexec.bat中resx.bat中还是修改我res2.bat,恢复失败。
回复

使用道具 举报

90#
 楼主| 发表于 2010-1-24 14:27:19 | 只看该作者
很奇怪,非要用DD。。。

直接用write不是更简单吗?想写入什么内容都可以。
write --offset=12 (fd0)/autoexec.bat res1.bat\r\n
write --offset=12 (fd0)/autoexec.bat res2.bat\r\n

autoexec.bat内容只要如下
@echo off
:::::::::::::::::::::::::::::::::::::::::::::::


注::::::::::::::::::::::::::::::::::::::::::::::::是预留的空位,供write写入,

只要写入的长度不超过原文件长度就可以随意写入。

[ 本帖最后由 chenall 于 2010-1-24 14:28 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-23 10:06

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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