use*_*548 0 freebsd partition dd mbr disk
尝试在 shell 命令下使用 pfsense 2.7.0 live disk(pfsense 基于 freebsd)清理磁盘上的 mbr 代码部分。
/dev/da0我的驱动器遵循建议的清洁代码,仅保留分区的 mbr 代码,命令应该是:
dd if=/dev/zero of=/dev/da0 bs=446 count=1
Run Code Online (Sandbox Code Playgroud)
然而......结果是:
dd: /dev/da0: Invalid argument
1+0 records in
0+0 records out
0 bytes transferred in 0.000089 secs (0 bytes/sec)
Run Code Online (Sandbox Code Playgroud)
相反...如果我仅使用它作为代码,dd if=/dev/zero of=/dev/da0
它只会删除所有内容而不会出现错误:(
我正在虚拟机中进行此测试,以便我可以多次恢复高清来测试这段文字...但是这件事让我头疼...
编辑:似乎如果我使用bs=512
或bs=1M
它不会给出错误。但是这样做也会删除分区表部分......
EDIT2:我尝试使用该命令dd if=/dev/da0 of=/tmp/mbr_file bs=512 count=1
,它为我创建一个带有 mbr 的文件,我想知道我可以使用哪些命令以二进制模式编辑该文件,将前 446 个字节填充为 0,然后用于dd if=/tmp/mbr_file of=/dev/da0 bs=512 count=1
恢复它。
我可以用什么?六?
自从我上次使用 BSD 系统以来已经有很长一段时间了,我对它们关于磁盘设备的记忆是必须写入完整的块(或多个块)。情况似乎仍然如此,尤其是对于/dev/da0
.
一般的方法是读取一个块,更新它的相关部分,然后再次写回整个块。在这里,我们也将保留原始块的备份,如下所示block0.backup
:
dd if=/dev/da0 bs=512 count=1 | tee block0.backup >block0
dd if=/dev/zero bs=446 count=1 conv=notrunc of=block0
dd if=block0 bs=512 of=/dev/da0
Run Code Online (Sandbox Code Playgroud)
(这是真正需要的罕见情况之一dd
,而不是cat
。)
如果您需要恢复到备份,
dd if=block0.backup bs=512 of=/dev/da0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
159 次 |
最近记录: |