
GPT/EFI ベースの新しい Windows 7 PC で、古い PC の MBR ベースのドライブをセカンダリ SATA1 ディスクとしてインストールしようとしていました。新しい SATA0 で Windows 7 と Linux Mint をデュアル ブートしていますが、古いディスクをセカンダリ バックアップ ドライブとして使用したいのですが、古い MBR ドライブを SATA1 に接続すると、Windows 7 はそこから起動しようとします。ドライブを消去して GPT パーティション スキームに切り替えれば大丈夫かもしれませんが、そこにあるパーティション (およびデータ) を完全に消去する準備はまだできていません。
そこで、ddを使用して446バイトのゼロをドライブの先頭にコピーし、MBRのブートローダー部分をゼロにしてみました。そして、それはうまくいきました。ブートローダーをゼロにすると、Windowsを起動できます。正確に1回2 台目のディスクを SATA1 に接続します。その後、Windows 7 は再び 2 台目のディスクから起動しようとしますが、以前はそこにあった grub ローダーをロードする代わりに、「OS が見つかりません」というエラーが表示されます。面白いことに、Windows を起動する前のゼロ化された MBR と Windows を起動した後の MBR を比較すると、次のように変化しています。
cmp -l mbr.beforewindows mbr.afterwindows
441 0 161
442 0 342
443 0 312
444 0 50
どうやら、Windows は無限の知恵で空の MBR を変更したようです。Wikipedia によると、MBR 位置 440 ~ 443 は「32 ビット ディスク署名 (オプション、UEFI、Windows NT/2000/Vista/7 およびその他の OS)」であり、位置 444 は 0 であるはずです。そのため、Windows 7 はドライブを認識して起動可能にしようとし、ドライブが存在する状態での起動機能を台無しにしているようです。ブラボー、Microsoft!
まあ、Windowsの最初の起動時にする起動すると、デバイス マネージャーでドライブが表示され、Windows にそのドライブからの起動を試みないように指示できます...
どこかで、Windows がセカンダリ ドライブのブートローダーを「修正」しようとするのを止める方法に関するアドバイスを含む同様の投稿を見た覚えがあるのですが、これについて何か知っている人はいますか?