ddを使用してきれいなMBRコードを取得すると、pfSenseでは機能しません。

ddを使用してきれいなMBRコードを取得すると、pfSenseでは機能しません。

シェルコマンドで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

おすすめ記事