无忧启动论坛

标题: GRUB4DOS ghostid命令测试(01-15更新) [打印本页]

作者: chenall    时间: 2010-1-2 11:18
标题: GRUB4DOS ghostid命令测试(01-15更新)
添加了ghostid命令的grub4dos测试.
http://grub4dos-chenall.googlecode.com/files/grub4dos-0.4.5a-2010-01-02.zip
用法
1.直接执行ghostid获取当前磁盘的id
2.ghostid (hdx,y) 获取对应磁盘的id
3.find --ghost-id /xxxx 获取最后一个找到以上文件的磁盘的id
4.find --set-root --ghost-id /xxx 获取第一个找到以上文件的磁盘的ID并设置为当前root.

请测试一下获取到的ID是否正确.

另外可以在内存的0x4FF00处得到这个的字符串值.可以通用DD命令把这个数据写入到配置文件中
例子.
#硬盘上查找/ghost/myghost.flg
find --ignore-cd --ignore-floppies --ghost-id /ghost/myghost.flg
#把上面找到的id写入到(fd0)/ghost.bat的0x70位置
dd if=(md) of=(fd0)/ghost.bat bs=1 skip=0x4FF00 count=5 seek=0x70

注:count=3,一般情况下是3个字节,如果磁盘分区数量大于9就要用4.(新版直接使用5就可以了);

2010-01-15
1.修正一个排序算法的BUG,详见后面的贴子。

2010-01-08
1.使用外部命令实现ghostid。使用方法差不多,但由于是外部命令所以不能使用find --ghost-id
可以使用以下命令来代替(把ghostid文件放在和启动磁盘的grub目录下)
find --ignore-cd --ignore-floppies /file.ext (bd)/grub/ghostid
其它使用例子
#切换到当前磁盘最后一个可用分区
root endpart
#执行ghostid,获取当前分区的对应ID。
(bd)/grub/ghostid
#返回启动分区
root (bd)

注:新版本GRUB4DOS,可以不用加前面的(bd)/grub路径,默认会从这个位置查找外部命令,当然了当前目录下也有这个命令时优先用。

2010-01-06
修改换行符为0D也就是回车。

2010-01-04
更新,同步更新到2010-01-03版源码。并调整了0X4FF00字符串,在id后面添加了两个换行符。

http://grub4dos-chenall.googlecode.com/files/grub4dos-0.4.5a-2010-01-04-chenall.rar
http://grub4dos-chenall.googlecode.com/files/grub4dos-0.4.5a-2010-01-04-chenall.zip

使用方法参考#8
使用一个变量代替GHOSTID
例子
值最好等于5个字符。
例子:
set p=ghost

使用dd写入后会变成像下面的
set p=2:1


多余的字符被换行代替了,所以不影响使用。

[ 本帖最后由 chenall 于 2010-1-15 11:18 编辑 ]
作者: 追风    时间: 2010-1-2 15:48
呵呵,有新的东东一定要测试一下。
作者: lianjiang    时间: 2010-1-2 16:01
其应用前景值得期待。



作者: dyzjzb    时间: 2010-1-2 16:29
好东东,辛苦了,感谢不点大师和所有开发人员。
作者: 快雪时晴    时间: 2010-1-2 21:17
原帖由 chenall 于 2010-1-2 11:18 发表
添加了ghostid命令的grub4dos测试.
http://grub4dos-chenall.googlecode.com/files/grub4dos-0.4.5a-2010-01-02.zip
用法
...
注:count=3,一般情况下是3个字节,如果磁盘分区数量大于9就要用4.

没理解这一句,为什么>9个分区就要4个byte?
作者: Hwlon    时间: 2010-1-2 21:37
刚看见,今晚可能来不及测试了!先顶再说!!!!!!!
作者: xuxuezeng    时间: 2010-1-2 22:36
不知道是什么原因?时空论坛像打不开了?各位有这个现象吗?
作者: Hwlon    时间: 2010-1-2 23:14
chenall :我太激动了,睡不着!测试很完美!你太棒了,呵呵!同志们感谢你啊!
----------------------------------------------------------------------------------------------------------------------
P1LOAD.BAT
@ECHO OFF
set P=+::--
cls
Ghost.exe -Clone,Mode=pload,Src=%P%:\wgho\WNTP1.GHO:1,Dst=1:1 -Sure -Rb
-------------------------------------------------------------------------------------------------------------------------
dd if=(md) of=(fd0)/p1load.bat bs=1 count=5 skip=0x4FF00 seek=0x11
------------------------------------------------------------------------------------------------------------------------
另外:测试时发现g4d:
如果存在3个主分区,那么第一个是(hd0,0)
第二个是(hd0,3),最后一个是(hd0,2),难道扩展分区成了(hd0,1)?
6月20版本也如此。
这个与ghostid无关。
--------------------------------
chall:辛苦了。我在虚拟机和真机测试都非常完美。
为了可以适应多硬盘和多分区(超过10个分区或者10个硬盘),可以把 变量定义为5个字符。
“-”是ghost的连接符,我测试过了,也可以不用,很完美。

再次感谢!!!!!!祝你身体健康!永远开心!!!!!!!!

[ 本帖最后由 Hwlon 于 2010-1-3 08:34 编辑 ]
作者: chenall    时间: 2010-1-4 19:10
你这样子确定不会出错?
当使用5个字节时,
set P=+::--
后面的--会被替换为00 00。不知DOS对00的处理是怎么样的。
作者: chenall    时间: 2010-1-4 20:59
更新了一下,有条件的可以再试试。

现在比较好兼容多分区多硬盘的处理了。
作者: Hwlon    时间: 2010-1-5 20:42
那当然,确定不会出错!!dos对00表示无。(确切的说是不影响使用的2个空,不是空格否则会报错)
有一个问题可能提的不合理,就是3.find --ghost-id /xxxx 获取最后一个找到以上文件的磁盘的id
搜索时需要较多的时间,硬盘沙沙响。呵呵(不知能否改成搜到第一个后立即停止搜索)
不知你改了什么地方,等明天测试一下!!!!!!!
刚才看到了1月4日:理论上多了2个空行,不影响使用。再次感谢!辛苦了!!

[ 本帖最后由 Hwlon 于 2010-1-6 07:19 编辑 ]
作者: chenall    时间: 2010-1-5 22:05
说明下

由于这个命令使用者比较少,或者说属于不是很必要的命令,所以不会加入到以后的GRUB4DOS版本中,目前只是为了方便测试。。

以后有空再考虑是否可以使用外部命令的形式来实现。
作者: zxw    时间: 2010-1-5 22:36
1、参考8#测试了一下ghostid命令,暂未发现什么bug.
2、顺便测试了一下命令行加载内嵌0pe菜单的grldr: chainloader /grldr && boot
    光标闪烁,不能正常运行。无意间拔掉U盘,只见菜单前行,又迅速插上U盘,启动成功。
   这个现象12.23的版本就没有。

[ 本帖最后由 zxw 于 2010-1-5 23:20 编辑 ]
作者: Hwlon    时间: 2010-1-6 07:42
chenall:
很遗憾,理论上不应出错的东西,却出错了。换行应是:0D 0A 但只有2个字符的位置,(0A 0A)所以出错了。建议这个地方不要修改,但定要确保该处为00 00  〔或者-- 或者// ,-和/是ghost的连接符〕。
---------------------------------------------------------------------------------------------------------------------------------
{2010-01-04
更新,同步更新到2010-01-03版源码。并调整了0X4FF00字符串,在id后面添加了两个换行符。

http://grub4dos-chenall.googlecode.com/files/grub4dos-0.4.5a-2010-01-04-chenall.rar
http://grub4dos-chenall.googlecode.com/files/grub4dos-0.4.5a-2010-01-04-chenall.zip}

请大家暂时不要使用。1月2日的版本很完美。
----------------------------------------------------------------------------------------------------------------------------------
另外,chenall 为此付出了辛勤的汗水,希望大家能支持他。一键恢复区本来人就少,请大家看完留名。

现在我已经拥有世界上最安全、最方便、最快速的一键恢复,这一切是在g4d和ghost两强的基础上实现的。现在基础使用的命令都已经说明,大家可以很方便的制作自己的一键恢复,所以我觉得没必要将我完成的"System Rescuer"发到论坛上来,因为没技术含量,我也很不好意思。因为最应该感谢的是chenall,请大家支持他。

----------------------------------------------------------------------
说明下

由于这个命令使用者比较少,或者说属于不是很必要的命令,所以不会加入到以后的GRUB4DOS版本中,目前只是为了方便测试。。

以后有空再考虑是否可以使用外部命令的形式来实现。
-----------------------------------------------------------------------------

chenall:

我很理解你的心情。但确实不是你说的这样,这个命令是比较有用的,如果以后的grub4dos不加入这个命令,那我觉得她不会是完美的。没这个命令的版本是最大的遗憾,如果没更好的吸引我的新功能我是不会用新版本的。
-------------------------------------------------------------------------------------------------------------
我们用g4d主要是作为dos的载体,dos主要是用来修复系统,修复系统主要是ghost。
--------------------------------------------------------------------------------------------------------------
说道这里,有人可能会说g4d支持引导多系统等很多功能。但我确定的是如果g4d不能虚拟dos(Windows的地位暂时没人撼动),后果很可怕。具备必要的功能,兼容其他的功能,呵呵。没错的。
----------------------------------
另外,如果新版本确实如此,我也希望chenall能把2001-01-02加入ghostid的源码能送我一份。在此表示感谢。也许在您的指导下我可以维护这个命令的版本。
hwlon@163.com

[ 本帖最后由 Hwlon 于 2010-1-6 11:39 编辑 ]
作者: victor888    时间: 2010-1-6 09:15
这是一个很大的福音,我们为CHENALL鼓掌。他真是一个难得的优秀程序员!
作者: adiwdmd    时间: 2010-1-6 10:22
标题: 回复 #14 Hwlon 的帖子
支持 Hwlon,也支持 chenall 。

我也认为加入这个命令G4D会更完美。会让G4D的使用者更多,操作更加方便。
作者: chenall    时间: 2010-1-6 13:13
晕,不是不支持,而且把它做为一个外部命令,这样只要是0.4.5以上的版本GRUB4DOS中都可以使用。也方便维护。

#14
我搞错了,应该是使用0D,DOS是使用0D作为换行的。
新的版本已经上传了,可以再试试。
http://grub4dos-chenall.googleco ... 4.5a-2010-01-06.rar
作者: chenall    时间: 2010-1-6 13:34
@Hwlon
这里可以下载源码
http://code.google.com/p/grub4dos-chenall/source/checkout
只要再打上2010-01-06.RAR附带的补丁文件就可以了。

其实只要懂得一点C语言你也可以对GRUB4DOS进行修改,就看你想不想做这些事了。
作者: Hwlon    时间: 2010-1-6 20:09
chenall :
还是由我来测试吧!本来今天早晨我也想顺便测试一下0D的,因为急着上班,没测试。看到你又改成0D,我就知道脱不了还要测试的,呵呵!其实在dos下要想完美换行也需要0D 0A。如果只是0D相当于空,在dos下显示2个乐符,但可以使用;0A虽成功换行又被认为是与下一空行连接在一起的,所以出错。建议还是用00 00较好。
------------------------------------------------------------------------------------------------------
另外,看到你的确定答复,真的很高兴,以后会经常光顾你的googlecode 网页,下载新版的g4d。我这潜水员潜了很久,呵呵是一瓶子不满半瓶子咣当。我看到你的编程思路详细而又周密,真的很不错。我呢,就这样了吧。如果不是非赶着鸭子上架,我想我这样的水平还是歇歇算了。呵呵

再次感谢!

[ 本帖最后由 Hwlon 于 2010-1-6 20:17 编辑 ]
作者: lianjiang    时间: 2010-1-6 20:39
这个功能完善后,将会引发一键恢复工具的半场革命。
期待中。
作者: chenall    时间: 2010-1-6 21:53
原帖由 Hwlon 于 2010-1-6 20:09 发表
chenall :
还是由我来测试吧!本来今天早晨我也想顺便测试一下0D的,因为急着上班,没测试。看到你又改成0D,我就知道脱不了还要测试的,呵呵!其实在dos下要想完美换行也需要0D 0A。如果只是0D相当于空,在do ...


其实DOS默认是0D换行的。。。。,0D0A是WINDOWS 的风格。

用00 00反而不好,有可能会出错,因为万一这里面原来已经有一些数据,那写入的时候数据就会出错。
使用0D 0D就没关系了,只要DD读取是的5个字符
当只有1:1时后面会有两个回车,
如果是1:10就会读到一个回车,
10:10就不会读到回车了。

不管最终得到几个字符,多余的就是回车换行掉了。

[ 本帖最后由 chenall 于 2010-1-6 21:56 编辑 ]
作者: Hwlon    时间: 2010-1-7 06:56
0D 换不了行,不知你测试过没有?0D和00字符 dos下被ghost忽略。但真的怕内存变量处被别的程序赋值,这个我还真没考虑到,虽然现在看是安全的,但从长期发展来看,应该是还是你说的保险!!!!呵呵
作者: chenall    时间: 2010-1-7 11:34
0D是回车,但不换行,换行符是0A(但在显示的时候可能是都显示成换行的)

还有一点你可能理解错了。。
并不是GHOST忽略0D和00等字符。而是由于DOS批处理来决定的
像你使用的命令
set P=+::--

如果不经修改最终的%P%就是上面的+::--
经过DD写入以后会变成
SET P=1:1XX
注:后面的XX是不可显示的字符。像0D 00之类的。
有些DOS核心碰到00字符会当做是一个语句结束。一般情况下0D会是一个语句结束符。
可能和DOS的版本也有关系吧,我使用MSDOS7.1测试是正常的。
作者: Hwlon    时间: 2010-1-7 15:12
chenall :还是你说的比较专业!呵呵!我们就用“0D”(我测试的也正常,在上面已说明)。废话就不多说了,支持你!!!!辛苦了!!!!!!!
作者: gmy    时间: 2010-1-7 17:32
不知是否支持畸形文件夹 \...\ (显示为~1)?
作者: chenall    时间: 2010-1-7 17:59
原帖由 gmy 于 2010-1-7 17:32 发表
不知是否支持畸形文件夹 \...\ (显示为~1)?


这个没有必要,因为不一定全部是~1,有可能是~2之类的。反而不好确定。
作者: Hwlon    时间: 2010-1-7 19:05
呵呵!g4d支持畸形目录,请按照建立时的格式(文件名)编写g4d菜单命令。不要使用~1,DOS下可以使用~1。比如: Wingho..\

希望大家看完帖子留名,支持 chenall !!!

[ 本帖最后由 Hwlon 于 2010-1-7 19:23 编辑 ]
作者: sowind    时间: 2010-1-8 09:51
这是好东西啊,也许会引起一键还原软件的技术改革。
作者: 135956    时间: 2010-1-8 11:18
C先生增加的功能很强大。。。
将来N版把chkpci acpi功能作为外部命令的话,那可不得了。
作者: chenall    时间: 2010-1-9 00:00
已经更新使用外部命令的GHOSTID.感谢不点....下载http://nufans.net/grub4dos/tinybit/或GRUB4DOS新版下载http://grub4dos-chenall.googleco ... 4.5a-2010-01-08.zipGHOSTID命令带源码下载(不带扩展名的就是可以直接运行的程序)http://grub4dos-chenall.googlecode.com/files/ghostid.zip

[ 本帖最后由 chenall 于 2010-1-9 01:12 编辑 ]
作者: chenall    时间: 2010-1-9 22:30
再更新了一下,新版已经上传,附带了echo read ghostid命令在command目录下
http://grub4dos-chenall.googleco ... 0-01-09-chenall.zip
默认是使用(bd)/grub/目录。
也就是说只要把外部命令放在启动盘/grub目录下就可以直接使用里面的命令。
通过以下命令修改默认搜索路径
command --set-root (hdx,y)/path

如果当前目录下有该命令文件优先使用,否则就到上面设置的目录里面找。

20100109221444164.png (8.57 KB, 下载次数: 145)

20100109221444164.png

Windows XP Professional-2010-01-09-22-03-06.png (7.7 KB, 下载次数: 173)

Windows XP Professional-2010-01-09-22-03-06.png

作者: Hwlon    时间: 2010-1-13 08:56
chenall:我喜欢使用内部命令。(从开发程序的角度,外部命令也是一个不错的选择)
这样,我还是选择使用内部命令吧!谢谢你的努力,请大家支持chenall。
-----------------------------------------------------------------------------------------------------
2010-01-12修改内置ghostid命令。当磁盘和分区数不超过10个的时候,ID前面加0
适用多分区,多硬盘。
另外,对10月16日的0.44g4d,添加了chenall 的内置ghostid命令。(前面未加0,等有空重新编译)

-------------------------------------------------------------------------------------------------------------
2010-01-14 把根磁盘分区UUID值写到内存0x4FF10处。例:uuid ()


http://g4d.googlecode.com/files/grub4dos-0.4.5a-2010-01-15.rar

一个演示:自动启动Ubuntu (内置2010-01-14 grldr)
http://g4d.googlecode.com/files/boot_ubuntu.rar

需要这个功能的朋友就下(含chenall的ghostid)。

[ 本帖最后由 Hwlon 于 2010-1-15 15:17 编辑 ]

ghostid.jpg (33.93 KB, 下载次数: 130)

ghostid.jpg

作者: chenall    时间: 2010-1-13 09:46
ghost可以识别01:02这样的格式吗?
前置0一般代表8进制。
作者: chenall    时间: 2010-1-13 09:48
用外部命主要是维护修改方便。
适合范围更广。

也许以后会有一个直接把外部打包能内置的方法。
作者: Hwlon    时间: 2010-1-13 16:32
已经做了全面测试,都没问题。ghost很强大,很安全(不喜欢那些在系统中安装驱动的一键恢复,我恢复系统50秒左右)
(代码不是单单的加个0,那真成了八进制了。代码是02 ,只要不足2位就前面加0。)
--------------------------------------------------------------------------------------------------------------------------

满想这个ghostid用处很大,会很火,看得出来朋友们更喜欢现成的,就是拿来就用的那种。真是辛苦chenall了。
希望看到此贴子的朋友能顶一个。

[ 本帖最后由 Hwlon 于 2010-1-13 19:25 编辑 ]
作者: chenall    时间: 2010-1-13 20:49
我是说直接
ghost 01:08 可以直接正确使用?

之前我最早弄的时候发现,
boot.ini里面不能这样使用,所以我后面就没有用0对齐了。


我自己也要用这个所以才会想办法弄这个东西,只是为了方便使用。

就像我现在的学习写的GRUB4DOS外部命令FAT(可以在FAT文件系统上直接创建文件,也许会考虑加入快速格式化功能,因为格式化是最好处理的了),其实主要还是因为自己需要使用。

[ 本帖最后由 chenall 于 2010-1-13 20:54 编辑 ]
作者: sowind    时间: 2010-1-14 09:26
用GHOSTID做了一个一键还原,效果很不错,暂时还没发现问题。
作者: geogls    时间: 2010-1-14 12:17
原帖由 sowind 于 2010-1-14 09:26 发表
用GHOSTID做了一个一键还原,效果很不错,暂时还没发现问题。



可以放出来让大家用用试试。
作者: sowind    时间: 2010-1-14 13:20
原帖由 geogls 于 2010-1-14 12:17 发表



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

行啊,找个时间,传上来,更多人测试,有问题的话C大可以修正。
作者: lianjiang    时间: 2010-1-14 14:54
试了一下,好像有问题。
第一次用,不只是不是用法有问题。






作者: sowind    时间: 2010-1-14 16:36
楼上真强大,这样的分区都能整出来。果然是专门整一键恢复的强人。
作者: lianjiang    时间: 2010-1-14 17:01
原帖由 sowind 于 2010-1-14 16:36 发表
楼上真强大,这样的分区都能整出来。果然是专门整一键恢复的强人。


这是一个平时测试常用的虚拟机,对一般磁盘工具而言,应是很一般的分区。
对gruub而言,是否特殊,我就不懂了。
我只是用最基本功能而已。
作者: chenall    时间: 2010-1-14 17:33
不知是否grub4dos获取到的分区起始位置有问题还是GHOSTID的问题。
@lianjiang
你可以再试试用以下命令获取一些参数。

进入GRUB4DOS命令行以后使用以下命令分区获取各个分区的分区起始位置。看看是否有问题。
root (hd0,0)
cat --length=0 ()-1

root (hd0,2)
cat --length=0 ()-1

root (hd0,3)
cat --length=0 ()-1

root (hd0,4)
cat --length=0 ()-1

如果上面的数据是正确的,那可能是GHOSTID里面的排序算法有问题了。。。

另外上面的分区果然很强,可能是分区表有问题。

[ 本帖最后由 chenall 于 2010-1-14 17:37 编辑 ]
作者: lianjiang    时间: 2010-1-14 18:22
原帖由 chenall 于 2010-1-14 17:33 发表
不知是否grub4dos获取到的分区起始位置有问题还是GHOSTID的问题。
@lianjiang
你可以再试试用以下命令获取一些参数。

进入GRUB4DOS命令行以后使用以下命令分区获取各个分区的分区起始位置。看看是否有问题 ...


结果。




作者: chenall    时间: 2010-1-14 18:40
明白了,是排序算法有问题。。

看来不能偷懒,呵呵。

本来想一气呵成的,看来还是要分开。没有考虑到这种特殊情况,晕。

[ 本帖最后由 chenall 于 2010-1-14 18:45 编辑 ]
作者: sowind    时间: 2010-1-14 18:52
等待C大的修正版。。。
作者: chenall    时间: 2010-1-14 20:02
试试这个,如果没错再上传到Googlecode上。

多加了一个循环。

ghostid.rar

791 Bytes, 下载次数: 116, 下载积分: 无忧币 -2


作者: lianjiang    时间: 2010-1-14 20:16
原帖由 chenall 于 2010-1-14 20:02 发表
试试这个,如果没错再上传到Googlecode上。

多加了一个循环。



效率很高。
原来出问题的机上正常了。
作者: Hwlon    时间: 2010-1-14 20:22
呵呵!好复杂的分区,能发现BUG也是了不起的一件大事!对于ghostid越完善越好!!期待chenall...不过我还是期望内置命令。
作者: sowind    时间: 2010-1-14 20:29
原帖由 chenall 于 2010-1-14 20:02 发表
试试这个,如果没错再上传到Googlecode上。

多加了一个循环。

好快的效率。。
作者: lianjiang    时间: 2010-1-14 20:30
原帖由 Hwlon 于 2010-1-14 20:22 发表
呵呵!好复杂的分区,能发现BUG也是了不起的一件大事!对于ghostid越完善越好!!期待chenall。


这种分区是很一般的。

用户的分区情况比这要复杂得多。
只有尽可能考虑周全,才可能做得更好,哪怕是一点点。
作者: sowind    时间: 2010-1-14 20:55
原帖由 lianjiang 于 2010-1-14 20:30 发表


这种分区是很一般的。

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

你做的是给别人用的,专业一些,要求当然就高一些,我是给自己用的,情况比较简单,所以随便一些。
作者: lianjiang    时间: 2010-1-15 07:37
原帖由 sowind 于 2010-1-14 20:55 发表

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



自己用的,那就只要用着顺手,越简单越好,就不必考虑那么多了。呵呵。
作者: chenall    时间: 2010-1-15 11:06
新的版本GHOSTID已经上传,麻烦 lianjiang 再测试一下。

http://grub4dos-chenall.googlecode.com/files/ghostid.rar

ghostid.rar

2.1 KB, 下载次数: 133, 下载积分: 无忧币 -2


作者: chenall    时间: 2010-1-15 11:08
@Hwlon
使用新的版本GRUB4DOS,
只需要把这些命令文件放在MENU.LST同磁盘的GRUB目录下就可以直接使用,就像是内置命令一样的。

@lianjiang
如果这些命令文件是放在(bd)/grub/目录下的使用时可以不用加路径。
直接ghostid就可以了。

新版的GRUB4DOS会自动使用(bd)/grub目录下的命令文件。

这个路径可以通过
command命令来改变

http://bbs.znpc.net/viewthread.php?tid=5830


以后统一使用
command --set-path=PATH来修改这个默认路径。

[ 本帖最后由 chenall 于 2010-1-15 11:12 编辑 ]
作者: Hwlon    时间: 2010-1-15 12:10
chenall:
ghostid越来越完善了。(现在我是不敢说是很完美了,呵呵,没测试到的地方也许还会bug。期待,网友们早日发现他。)
g4d和你的的全部代码,我也没拿起总来,借你的ghostid,锻炼一下阅读能力。
还有你的那个fat写文件,我就不阅读了。太高深的东西我望着就头晕了,你写一点代码,我就得看好几天。
如果允许的话我还是用内部命令吧!我能力有限,也就是自娱自乐,方便自己为主了。呵呵!


总之,看到这么多网友都喜欢这个命令,我也感到很高兴,再次感谢你 chenall  的努力 ,支持你。
作者: lianjiang    时间: 2010-1-15 12:18
原帖由 chenall 于 2010-1-15 11:06 发表
新的版本GHOSTID已经上传,麻烦 lianjiang 再测试一下。

http://grub4dos-chenall.googlecode.com/files/ghostid.rar



试了,正常,看样子这问题已解决。
作者: Hwlon    时间: 2010-1-15 15:11
2010-01-18  0.44稳定版(ghostid值内存0x40000处;uuid值内存0x40010处)

经测试0.45a-01-06 至01-08的官方版本都不支持硬盘安装Ubuntu9.10(有新用法吗?)
同样的命令0.44-2009-06-20确支持。需要u盘硬盘安装Ubuntu的就暂时用稳定版吧!!

http://g4d.googlecode.com/files/grub4dos-0.4.4-2010-01-18.zip

这个版本的内存变量地址与0.45a的内存变量地址不同是因为0.44-6-20原已占用。

---------------------------------------------------------------------------------------------------

同步更新内置命令版:

2010-01-15 g@chenall.cn
        修正ghostid一个排序算法的BUG。

2010-01-14 Hwlon
        把根磁盘分区UUID值写到内存0x4FF10-0x4FF34处。例:uuid ()

2010-01-12 Hwlon
        修改ghostid命令,适应超过10个分区(硬盘),把ID值写到内存0x4FF00-0x4FF05处。例:01:12

2010-01-06 g@chenall.cn
        添加ghostid命令,用于获取对应磁盘的顺序ID.并把ID的字符串值写到内存0x4FF00位置。例子 1:2
        add command ghostid
        Display Relationship of Partition & Drive(Ghost Style).
        使用方法(to use):
        1.ghostid or (hdx,y)

http://g4d.googlecode.com/files/grub4dos-0.4.5a-2010-01-15.rar

一个演示:自动启动Ubuntu  见32楼(里面的grldr是2010-1-14,请自行更新)

(低调发布)一切灵感来自chenall ,这是我现在需要的2个功能。
等这个命令完善了,我又要潜水了,呵呵。

[ 本帖最后由 Hwlon 于 2010-1-18 20:37 编辑 ]
作者: Hwlon    时间: 2010-1-15 15:56
原帖由 lianjiang 于 2010-1-15 12:18 发表



试了,正常,看样子这问题已解决。



我也测试了3遍内置版的,现在正常。今天学会“引用”了,经常当潜水员,没用过,也不会用。

[ 本帖最后由 Hwlon 于 2010-1-18 20:46 编辑 ]
作者: kfox29    时间: 2010-1-20 21:01
谢谢分享
下载备用
作者: jnax    时间: 2010-1-21 22:36
我是菜鸟级的初级潜水员。
有这样的问题,那就是在U盘上的GHO文件,U盘启动后想自动还原到硬盘的第一个分区。可是有的情况下U盘启动后成了第一硬盘,这就造成GHOST的自动脚本不好确定源和目标的位置,C大的这个工具是不是就用来确定硬盘第一主分区的位置的?也就是dst=1:1这里的参数?
作者: sowind    时间: 2010-1-22 18:33
原帖由 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
用这个就可以确定。
作者: sowind    时间: 2010-1-22 19:14
问个问题,当用find --ignore-cd --ignore-floppies /boot/WTool.lst (bd)/boot/ghostid查找文件时,如果文件不存在,有没有办法不提示?

[ 本帖最后由 sowind 于 2010-1-22 19:30 编辑 ]
作者: chenall    时间: 2010-1-22 21:34
不存在就不应该执行下面的语句了吧....

不想提示可以使用||
试试
find --ignore-cd --ignore-floppies /boot/WTool.lst (bd)/boot/ghostid || pause --wait=0
作者: sowind    时间: 2010-1-22 22:23
原帖由 chenall 于 2010-1-22 21:34 发表
不存在就不应该执行下面的语句了吧....

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

谢谢C大,加了|| pause --wait=0 确实不提示了,测试了一下文件不存在,不提示的情况下,会继续执行下面的语句。
作者: chenall    时间: 2010-1-22 22:37
如果不提示也就是相当于忽略错误检查.

相当于
errorcheck off
find --ignore-cd --ignore-floppies /boot/WTool.lst (bd)/boot/ghostid
errorcheck on
作者: lianjiang    时间: 2010-1-23 08:22
不知道像这种分区,用ghostid识别出的结果会是什么样的?


作者: jnax    时间: 2010-1-23 09:54
原帖由 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自动把这个备份恢复到硬盘(单硬盘)的第一分区,哪位老大可以给说说从电脑启动到完成恢复整个过程的方法?这样就可以很好的理解了。
先谢谢了。
作者: sowind    时间: 2010-1-23 11:05
原帖由 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 编辑 ]
作者: jnax    时间: 2010-1-23 11:52
谢谢 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中。
作者: Hwlon    时间: 2010-1-23 11:54
原帖由 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)
作者: sowind    时间: 2010-1-23 12:31
原帖由 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 编辑 ]
作者: Hwlon    时间: 2010-1-23 13:46
原帖由 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 编辑 ]
作者: jnax    时间: 2010-1-23 13:54
简单的说,我的想法就是:
在UD中有一个ghost.img文件,U盘启动它后,运行U盘可见分区(FAT32)中GHOST文件夹中的ghost.exe并把同位置的jnax.gho自动恢复到硬盘的第一个主分区。

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

不知道这样我说明白了吗?
作者: Hwlon    时间: 2010-1-23 14:04
[quote]原帖由 jnax 于 2010-1-23 13:54 发表
简单的说,我的想法就是:
在UD中有一个ghost.img文件,U盘启动它后,运行U盘可见分区(FAT32)中GHOST文件夹中的ghost.exe并把同位置的jnax.gho自动恢复到硬盘的第一个主分区。

这个还得麻烦朋友看一下论坛,好吗?如果你能有时间从头到尾看一遍论坛,你自己就搞定了。呵呵
作者: sowind    时间: 2010-1-23 15:58
原帖由 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 编辑 ]
作者: sowind    时间: 2010-1-23 16:00
其实我还是不大明白read 0x8280 是什么意思?为什么是0x8280,而不是其它的,整句的真假符号还是看得懂,呵呵,见笑了。不过还是谢谢你的回答。
作者: chenall    时间: 2010-1-23 16:34
#67
lianjiang
ghostid是根据分区的起始位置来识别ID的。

另外好像没有这样的分区吧。第二个主分区也是一个逻辑分区的。
作者: chenall    时间: 2010-1-23 16:37
现在很多人都喜欢鱼,不想渔了。

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

我比较喜欢渔,呵呵

上面在readme_grub4dos中都有介绍。
作者: lianjiang    时间: 2010-1-23 16:50
原帖由 chenall 于 2010-1-23 16:34 发表
#67
lianjiang
ghostid是根据分区的起始位置来识别ID的。

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


第二个是主分区,是逻辑分区就不会问你了,呵呵。
这种分区形式,windows是支持的,而一般的磁盘工具都不支持。
这正是其特殊之处。
作者: chenall    时间: 2010-1-23 17:01
只要grub4dos能认到这个分区一般就没有问题.
作者: lianjiang    时间: 2010-1-23 17:07
原帖由 chenall 于 2010-1-23 17:01 发表
只要grub4dos能认到这个分区一般就没有问题.


grub4dos能认识估计是没有问题,但ghostid识别了是给ghost用的,因此与ghost不一致就是问题了。
作者: lianjiang    时间: 2010-1-23 17:13
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:
作者: sowind    时间: 2010-1-23 17:13
原帖由 chenall 于 2010-1-23 16:37 发表
现在很多人都喜欢鱼,不想渔了。

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

我比较喜欢渔,呵呵

上面在readme_grub4dos中都有介绍。

明白了,多谢C大,readme有点长,只在上面用过查找功能,从没从头看到尾过。- -#
作者: jnax    时间: 2010-1-23 17:56
原帖由 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 编辑 ]
作者: chenall    时间: 2010-1-23 19:20
@lianjiang
也就是说ghost只能认到5个分区了.

不知GRUB4DOS对这个的识别情况如何?
作者: lianjiang    时间: 2010-1-23 19:29
原帖由 chenall 于 2010-1-23 19:20 发表
@lianjiang
也就是说ghost只能认到5个分区了.

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


不清楚ghostid的识别情况,是用户反馈来的的信息。
因想到了ghostid这个功能,因此咨询一下。
作者: jnax    时间: 2010-1-24 09: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 编辑 ]
作者: jnax    时间: 2010-1-24 10:53
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,恢复失败。
作者: chenall    时间: 2010-1-24 14:27
很奇怪,非要用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 编辑 ]
作者: 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)/autoexec.bat bs=1 count=1 skip=19 seek=31
检测结果不正确

U盘UD方式启动我的笔记本,在GHOST中U盘是第一次盘,而上面的语句检测的结果不是第一,而是第二。
U盘UD方式启动我的台式机,在GHOST中U盘是第二次盘,上面的语句检测的结果正确。
作者: chenall    时间: 2010-1-24 16:51
因为0x80是代表第一硬盘。

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

如果只想检测是否从硬盘启动可以使用
0x80:0x9F
作者: sowind    时间: 2010-1-24 17:00
原帖由 chenall 于 2010-1-24 16:51 发表
因为0x80是代表第一硬盘。

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

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

那么某些BIOS启动的时候会把U盘认成另一个实际存在的硬盘的情况下,并通过这个U盘启动,这样子测试的方式会起作用吗?还是说它能实际区分到底是硬盘还是U盘?
作者: sowind    时间: 2010-1-24 17:08
原帖由 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盘,成功启动。
作者: jnax    时间: 2010-1-24 19:04
我的技嘉-G41就是这样子的,设置从USB-NNN都不能启动,而是在HDD项进入后的列表中选择U盘就可以启动了。

G大的这个GHOSTID如果能用在USB启动并自动恢复指定的GHO文件到本地第一硬盘,那实际意义就更大了,因为现在使用光盘启动的很少,而U盘启动方便快捷,易改易升级。

现在我感觉最好的方式就是U盘的UD方式启动,但从UD中启动IMG后,有的主板是不能识别U盘的可见分区的,需要在DOS的CONFIG.SYS中装载USB2.0的驱动“USBASPI.SYS”及“ASPIDISK.SYS”,但只要加载了这个驱动,好像GRUB就不能正常FIND启动U盘可见分区中的文件了。例如我在U盘的可见分区中的GHOST文件夹中存放JNAX.GHO,UD启动IMG后加载USB2.0驱动,然后再运行GRUB.EXE并装载IMG中的MENU.LST,MENU.LST中有FIND --SET-ROOT /GHOST/JNAX.GHO,但返回的结果是不能找到文件,而回到DOS提示符,DIR却可以看到GHOST文件夹及里面的JNAX.GHO。

如果主板本身在DOS就支持USB2.0,很好解决U盘启动并自动GHOST恢复(安装)XP,如果主板本身在DOS下不支持USB2.0的话,是个问题。

(所有的英文字母均是小写)

[ 本帖最后由 jnax 于 2010-1-24 19:21 编辑 ]
作者: Hwlon    时间: 2010-1-24 20:52
原帖由 jnax 于 2010-1-24 10:53 发表
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
checkrang ...



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=20 seek=31

都一样,那不都是调用一文件嘛。看你的批处理,又看了你的测试报告,晕了。总之 skip不能都等于19.要对应起来。

在baidu上搜搜,我不会了就是那样学的,呵呵。祝你成功!!

对于那些比较老的机器,没必要去用u盘启动了,就是能启动起来1.1的龟速,也让人受不了。
现在大部分新机器都支持UCD和UD启动,你可以做双启。个人感觉UCD兼容性较好。

[ 本帖最后由 Hwlon 于 2010-1-24 21:11 编辑 ]
作者: jnax    时间: 2010-1-24 21:48
请 Hwlon 有时间的话在给看看

autoexec.bat 内容:
set abc=12
call resx.bat

menu中ghost菜单:
map --mem /ghostxp.img (fd0)
map --hook
checkrange 0x80 read 0x8280 && dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=8 seek=20
checkrange 0x80 read 0x8280 || dd if=(fd0)/autoexec.bat of=(fd0)/autoexec.bat bs=1 count=1 skip=9 seek=20
chainloader (fd0)+1
rootnoverify (fd0)

启动结果:
台式机中,ghost里面看硬盘给第一磁盘
autoexec.bat 内容修改:
set abc=12
call res2.bat
这个正确

笔记本中,ghost里面看硬盘给第二磁盘
autoexec.bat 内容修改:
set abc=12
call res2.bat
这个不正确

是检测方式没有设置正确还是什么原因?

[ 本帖最后由 jnax 于 2010-1-25 07:04 编辑 ]
作者: Hwlon    时间: 2010-1-25 08:34
jnax:

你最好能进入g4d命令行测试一下:
read 0x8280
find
两种环境都测试一下,无论是否解决都把图片发上来,大家一起学习。

如果想用ghost的话建议你加载的东西越少越好,因此不建议用grub.exe。应该用grldr引导dos

[ 本帖最后由 Hwlon 于 2010-1-25 08:41 编辑 ]
作者: jnax    时间: 2010-1-25 09:51
在单位中测试两台台式电脑:

2G的U盘做成UD(USB-ZIP)方式启动ghostxp.ing,U盘可见分区为FAT32,menu及autoexec.bat中的内容同上

1、技嘉G-41主板,500G-SATA硬盘
启动时,在启动设备选择列表中,U盘在HDD项之中的第一项,此主板原生支持USB2.0


进入DOS后运行ghost.exe,磁盘列表截图如下:


进入DOS后运行grub.exe,分别执行如下命令:
read 0x8280
find
截图如下:


grldr检测结果,autoexec.bat中更改为res2.bat

2、i845GL主板,40G硬盘
启动时,BIOS中设置USB-ZIP方式启动
进入DOS后运行ghost.exe,磁盘列表截图如下:


进入DOS后运行grub.exe,分别执行如下命令:
read 0x8280
find
截图如下:


grldr检测结果,autoexec.bat中更改为res2.bat


中午上传家里的两台电脑截图

[ 本帖最后由 jnax 于 2010-1-25 10:01 编辑 ]
作者: Hwlon    时间: 2010-1-25 10:49
原帖由 lianjiang 于 2010-1-23 08:22 发表
不知道像这种分区,用ghostid识别出的结果会是什么样的?

80117



为什么不测试一下呢?我想建立这样的分区来测试一下,结果建不出来,呵呵。难道要用命令行建立吗(我用的pe中无diskpart)?还是你来测试一下吧!ghostid也有你的测试功劳啊!附件是已做好的启动映像,放在虚拟机里运行一下,贴上来看看就好了。

chenall 说网友们都喜欢鱼,其实我也喜欢。一件好东西如果有人做好了,真的就不愿动手了,因为大部分我们都是使用者,就是记住那些复杂的命令,平常不多用,也就忘记了。用那个write命令,我自己个人理解哈:还要建那么一个空文件,挺不舒服的,不过用起来很简单呵,也不用那么标准的跳,推荐大家可以测试用一下。

[ 本帖最后由 Hwlon 于 2010-1-25 11:15 编辑 ]

ghostid.rar

106.35 KB, 下载次数: 82, 下载积分: 无忧币 -2






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