无忧启动论坛

标题: GRUB怎么得到(hd0)的总扇区数?? [打印本页]

作者: wh5486    时间: 2013-5-17 00:36
标题: GRUB怎么得到(hd0)的总扇区数??
GRUB怎么得到(hd0)的总扇区数??
作者: wh5486    时间: 2013-5-17 00:58
本帖最后由 wh5486 于 2013-5-17 01:02 编辑

write offset=10000 (hd0) abc
为什么无效
cat --hex (hd0)9999+4 看不到改动
grub0。4。6a 2013-4-6版本
作者: 不点    时间: 2013-5-17 06:59
write 命令支持直接写设备吗?你的用法是从哪里学来的?

你是不是需要这样:

write  offset=10000  (hd0)+63  abc

还有一个问题,你写的偏移是 10000,这是按字节数计算的。但你读的偏移是 (hd0)9999+4 ,这可是从 9999 扇区开始的 4 个扇区了。差了很远很远。

假如你贸然写入第 10000 扇区,你的硬盘是不是想废掉?你怎么知道,你写的那个位置不是你的系统文件?你想破坏你的系统?


作者: wh5486    时间: 2013-5-17 10:27
本帖最后由 wh5486 于 2013-5-17 10:34 编辑

谢谢不点老大指教。。
图片中最后的 OR device 是指设备吗?
我想在(hd0) 某个扇区写入 abc 该怎么写?
(hd0)+63 指的是啥?

GRUB怎么得到(hd0)的总扇区数??

111.png (7.26 KB, 下载次数: 59)

111.png

作者: wh5486    时间: 2013-5-17 10:28
本帖最后由 wh5486 于 2013-5-17 10:34 编辑
不点 发表于 2013-5-17 06:59
write 命令支持直接写设备吗?你的用法是从哪里学来的?

你是不是需要这样:


求指教
谢谢不点老大指教。。
图片中最后的 OR device 是指设备吗?
我想在(hd0) 某个扇区写入 abc 该怎么写?
(hd0)+63 指的是啥?

GRUB怎么得到(hd0)的总扇区数??

111.png (7.26 KB, 下载次数: 47)

111.png

作者: sratlf    时间: 2013-5-17 10:47
wh5486 发表于 2013-5-17 10:28
求指教
谢谢不点老大指教。。
图片中最后的 OR device 是指设备吗?

(hd0)+63 指的是hd0的第六十三个扇区   扇区总数可以看截图  红线位置

不熟悉命令的话不建议直接向硬盘指定扇区写东西  没准会破坏什么


作者: wh5486    时间: 2013-5-17 10:54
sratlf 发表于 2013-5-17 10:47
(hd0)+63 指的是hd0的第六十三个扇区   扇区总数可以看截图  红线位置

不熟悉命令的话不建议直接向硬盘 ...

复习write用法:
write [--offset=SKIP] ADDR_OR_FILE INTEGER_OR_STRING

SKIP 是一个整数,默认值是 0 。

如果 ADDR_OR_FILE 选项被指定为一个整数,那么它被作为一个内存地址对待,
并且 INTEGER_OR_STRING 选项也必须是一个整数值。整数 INTEGER_OR_STRING 将被写入(ADDR_OR_FILE 加上 SKIP 值)的地址处。
如果 ADDR_OR_FILE选项 指定的是一个设备或一个文件,那么INTEGER_OR_STRING 选项将被作为一个字符串对待,它将被写入跳过 SKIP 个字节(字节计数)的指定的设备或文件当中。

这个是在GRUB帮助中看到的..可以写的硬盘指定扇区..我试了好几次..一直不行...求指点个实例
作者: 不点    时间: 2013-5-17 10:54
不错,刚才看了最新代码,确实支持写入设备。不过这样更要小心了。

如果我没记错的话,dd 和 write 是仅有的支持直接写入设备的命令。

用 (hd0)+63 就是文件的表示法。你可以参看 grub 相关文档,了解什么是设备,什么是文件。

(hd0)+63 代表 (hd0) 最开头的 63 个扇区。这就是 MBR 磁道,通常不被分区占据。

如果直接用设备名 (hd0),它代表整个硬盘。一旦出错,你就有可能写到分区数据里面了,造成不可挽回的损失,比如,你的 Windows 启动不了了。

不敢随便写着玩啊!

先好好学习 grub4dos 的教程,然后再来写盘。

write offset=10000  (hd0)  abc

你的这条 write 命令,应该已经成功写入了 abc 字符串在硬盘的偏移 10000 处。这个 10000 是字节数,不是扇区数。

你自己计算一下,它在哪个扇区中。10000 / 512 = 19 多一点, 大约在第 20 个扇区,也就是扇区号为 19 的扇区中。

你用 cat --hex (hd0)19+1 就可以把这个扇区显示出来,看看里面有没有 abc 这个字符串?

我的计算也可能有错误,你自己仔细计算吧。



作者: wh5486    时间: 2013-5-17 10:59
不点 发表于 2013-5-17 10:54
不错,刚才看了最新代码,确实支持写入设备。不过这样更要小心了。

如果我没记错的话,dd 和 write 是仅 ...

不解中啊 .......昨天半夜好像可以的 ....现在提示参数错误?

222.png (13.88 KB, 下载次数: 46)

222.png

作者: wh5486    时间: 2013-5-17 11:01
本帖最后由 wh5486 于 2013-5-17 12:35 编辑

已搞定。。没带--。自己马虎了
作者: 不点    时间: 2013-5-17 11:03
offset 应该是 --offset,你没看你自己前面贴的 help write 图片吗?这么粗心,可是危险!!更不敢随便写盘!!

你可以拿一个虚拟机来练习,写坏了没关系。




作者: 快雪时晴    时间: 2013-5-17 11:33
GRUB文档   WRITE DD




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