无忧启动论坛

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

请教C大,diskid外部命令的使用?

[复制链接]
跳转到指定楼层
1#
发表于 2011-5-27 18:58:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为了取得一个分区的GHOST格式的磁盘号,在G4D环境下使用diskid后如何取出磁盘号用dd命令写入一个文本文件中。
目前我是这样实现的:
/boot/GRUB/diskid > (fd0)/disk.bat
dd if=(fd0)/disk.bat of=(fd0)/ghostbf.bat bs=1 skip=28 count=3 seek=6
但是如果前面有debug off命令,关闭了显示,会造成无法获取。
使用以前ghostid帖子中介绍的
dd if=(md) of=(fd0)/ghostbf.bat bs=1 count=5 skip=0x4FF00 seek=0x11
在DOS下查看ghostbf.bat中没有写入磁盘号。

[ 本帖最后由 mygamexxx 于 2011-5-27 19:07 编辑 ]
2#
发表于 2011-5-27 19:06:53 | 只看该作者
1.使用wenv最简单的。
wenv set diskid=*0x4ff00$
2.使用内置的命令cat配合管道符"|"
cat --skip=0x100 (md)0x27f+1 | set diskid=
或比较直观一点儿的
cat --skip=0x4ff00 (md)+0x300 | set diskid=

当然了还有其它方法,像dd等都是可以的。

然后把变量diskid写入文本中就行了。
回复

使用道具 举报

3#
 楼主| 发表于 2011-5-27 19:10:01 | 只看该作者

回复 #2 chenall 的帖子

就是要请教dd方式从内存中读取再写入的用法
回复

使用道具 举报

4#
发表于 2011-5-27 19:33:12 | 只看该作者

回复 #3 mygamexxx 的帖子

用dd就是类似的一楼的方法,至于不能写入可能是其它问题吧,和你的文件内容也有关系。

因为这个用dd来读取的话,后面是有带回车符的。你需要自己对比一下写入之前和写入之后的数据。
回复

使用道具 举报

5#
 楼主| 发表于 2011-5-28 08:09:07 | 只看该作者
谢谢C大指教,经比较,dd if=(md) of=(fd0)/disk1.bat bs=1 count=5 skip=0x4ff00 seek=0写入后比原文件少了5个字符。
可能是回车符的原因,使用dd if=(md) of=(fd0)/disk1.bat bs=1 count=3 skip=0x4FF00 seek=0后终于在文件中出现了GHOST格式的盘符。

[ 本帖最后由 mygamexxx 于 2011-5-28 08:32 编辑 ]
回复

使用道具 举报

6#
发表于 2011-5-28 08:59:50 | 只看该作者
执行 diskid 后 *0x4FF00$ 一般是3-5位有效字符+两个回车,x:y\r\r 或 x:yy\r\r 或 xx:yy\r\r
从这个地址读入5个字符后,最好判断一下有效字符的长度再写入文件

我发现ghost.exe 的 -script 参数对脚本文件要求很严格,不能有\0字符,而dos批处理中回车必须是完整的\r\n,否则会有错误的命令提示(但不影响其它正常的命令)

这个问题可以用修改版的wenv
wenv diskid (hd0,0) ]]& echo ${diskid} ]]& echo ${diskid,?}
然后用write写入文件
回复

使用道具 举报

7#
发表于 2011-5-28 14:14:10 | 只看该作者
@tuxw:
现在的set命令已经自动去除回车换行符了。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-2 18:40

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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