鉴于:
===MBR INFO===
MBR SECTOR NAME BYTES
code area 440(max. 446)
disk signature (optional) 4
Usually nulls; 0x0000 2
Table of primary partitions 64(Four 16-byte entries, IBM partition table scheme)
MBR signature;0xAA55 2
MBR, total size: 446 + 64 + 2 = 512
我相信日复制命令只是64 字节分区表如下:
dd obs=2 seek=223 count=32 if=/path/to/some_mbr.bin of=/dev/sda
它是否正确,
以及/或者有更好的方法吗?
答案1
如果 some_mbr.bin 是完整的 mbr,您也需要跳过输入文件中的代码。
dd bs=1 if=/path/to/some_mbr.bin of=/dev/sda skip=446 seek=446 count=64
当然,您也可以vi -b /path/to/some_mbr.bin /dev/sda
使用 yank 和 put 来做到这一点(如果您敢的话)。
答案2
你试过了吗?我刚刚试过了,输出文件是 16KB,而不是 64 字节(试着查看你链接到的手册页以及 obs 和 ibs 的值)。
尝试将块大小(读取和写入)设置为 2,并跳过读取您不想要的输入,而不是读取所有内容并只写入您想要的内容。
因此你最终会得到类似这样的结果:
dd bs=2 skip=223 count=32 if=/path/to/some_mbr.bin of=/dev/sda
如果块大小为 1 而不是 2,那么阅读起来也会更容易,这意味着您不需要再在脑海中将数字加倍或减半。
在我有足够的勇气写入 mbr 之前,我会尝试读取 mbr 并将其写入文件并使用十六进制查看器进行检查。