いくつかのレガシーコードを使用してシステムの.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ファイルを見つけて、オペレーティングシステムをロードして実行します。