无忧启动论坛

标题: 请教C大,diskid外部命令的使用? [打印本页]

作者: mygamexxx    时间: 2011-5-27 18:58
标题: 请教C大,diskid外部命令的使用?
为了取得一个分区的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 编辑 ]
作者: chenall    时间: 2011-5-27 19:06
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写入文本中就行了。
作者: mygamexxx    时间: 2011-5-27 19:10
标题: 回复 #2 chenall 的帖子
就是要请教dd方式从内存中读取再写入的用法
作者: chenall    时间: 2011-5-27 19:33
标题: 回复 #3 mygamexxx 的帖子
用dd就是类似的一楼的方法,至于不能写入可能是其它问题吧,和你的文件内容也有关系。

因为这个用dd来读取的话,后面是有带回车符的。你需要自己对比一下写入之前和写入之后的数据。
作者: mygamexxx    时间: 2011-5-28 08:09
谢谢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 编辑 ]
作者: tuxw    时间: 2011-5-28 08:59
执行 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写入文件
作者: zhaohj    时间: 2011-5-28 14:14
@tuxw:
现在的set命令已经自动去除回车换行符了。




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