ddを使用してブートセクタを保存して復元しますか?

ddを使用してブートセクタを保存して復元しますか?

いくつかのレガシーコードを使用してシステムの.isoをハードドライブ(ライブCDから)に抽出し、ブートセクタ(一部)の保存と復元にddを使用しました。

次のコマンドを使用して、MBR(最初の446バイト、つまりパーティションテーブルを除くすべてのエントリ)を保存します。

dd if=/dev/sda of=/mnt/mbr.bin bs=446 count=1

その後、ハードドライブの.isoを復元し、次を使用してブートセクタを復元しました。

dd if=/mnt/mbr.bin of=/dev/sda bs=446 count=1

私が経験している問題は、Windows XPのみをインストールする前に上記の方法を使用した後、LinuxブートとWindows XPブートから選択する必要があることです。そこに何か真剣に間違っているようです。

私の質問は:上記の2つのコマンドはブートセクタを保存してから復元するのに十分ですか?

答え1

MBRは、基本的にハードドライブの最初のセクタの512バイトセグメントであり、ブートコード(446バイト長)、パーティションテーブル(64バイト長)、およびブートコード署名(2)の3つの部分で構成されています。バイト)長さ)。あなたの立場で何が間違っているのかはわかりませんが、これは私に役立ちました。

これにより、スタートコード自体のみが明示的にバックアップされ、他のものはバックアップされません。

[root@host]# dd if=/dev/sda of=/tmp/mbr.img_backup bs=446 count=1

次に、ブートコード署名で保存したくないパーティションテーブルを含むMBRをきれいに消去する必要があります。

[root@host]# dd if=/dev/zero of=/dev/sda bs=512 count=1

これでスタートコードを復元します。

[root@host]# dd if=/tmp/mbr.img_backup of=/dev/sda bs=446 count=1

答え2

私が理解したように、OSパッケージファイルの1つの「format」コマンドはブートセクタを生成します。オペレーティングシステムが再起動すると、11文字の「io sys」ファイルと「msdos sys」ファイルが固定の場所に書き込まれます。ルートディレクトリでio.sysファイルとmsdos.sysファイルを見つけて、オペレーティングシステムをロードして実行します。

関連情報