シェルコマンドでpfsense 2.7.0ライブディスク(pfsenseはfreebsdベース)を使用して、ディスクのMBRコード部分をクリーンアップします。
存在する/dev/da0私のドライブは推奨クリーンアップコードに従い、パーティションのmbrコードのみを残し、コマンドは次のようになります。
dd if=/dev/zero of=/dev/da0 bs=446 count=1
ところで…結果はこうです。
dd: /dev/da0: Invalid argument
1+0 records in
0+0 records out
0 bytes transferred in 0.000089 secs (0 bytes/sec)
代わりに...単にコードとして使用すると、dd if=/dev/zero of=/dev/da0
エラーなしですべてが削除されます。 :(
このテキストをテストするためにHDを複数回復元できるように、仮想マシンでテストしています...これは頭が痛いです...
編集する:使用するとbs=512
エラーbs=1M
が発生しないようです。ただし、これによりパーティションテーブル部分も削除されます。
編集2:そのコマンドを試してみたdd if=/dev/da0 of=/tmp/mbr_file bs=512 count=1
ところ、mbrを含むファイルが作成されました。バイナリモードでファイルを編集するために使用できるコマンドが何であるかを知りたいです。最初の446バイトをゼロで埋め、それを使用してdd if=/tmp/mbr_file of=/dev/da0 bs=512 count=1
復元します。
何が使えますか?肉?
ベストアンサー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
(これは実際に必要ですdd
が、そうではないまれなケースの1つですcat
。)
バックアップに復元する必要がある場合
dd if=block0.backup bs=512 of=/dev/da0