GRUB文档 WRITE DD |
offset 应该是 --offset,你没看你自己前面贴的 help write 图片吗?这么粗心,可是危险!!更不敢随便写盘!! 你可以拿一个虚拟机来练习,写坏了没关系。 |
本帖最后由 wh5486 于 2013-5-17 12:35 编辑 已搞定。。没带--。自己马虎了 |
不错,刚才看了最新代码,确实支持写入设备。不过这样更要小心了。 如果我没记错的话,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 这个字符串? 我的计算也可能有错误,你自己仔细计算吧。 |
复习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帮助中看到的..可以写的硬盘指定扇区..我试了好几次..一直不行...求指点个实例 |
write 命令支持直接写设备吗?你的用法是从哪里学来的? 你是不是需要这样: write offset=10000 (hd0)+63 abc 还有一个问题,你写的偏移是 10000,这是按字节数计算的。但你读的偏移是 (hd0)9999+4 ,这可是从 9999 扇区开始的 4 个扇区了。差了很远很远。 假如你贸然写入第 10000 扇区,你的硬盘是不是想废掉?你怎么知道,你写的那个位置不是你的系统文件?你想破坏你的系统? |
本帖最后由 wh5486 于 2013-5-17 01:02 编辑 write offset=10000 (hd0) abc 为什么无效 cat --hex (hd0)9999+4 看不到改动 grub0。4。6a 2013-4-6版本 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.