2016-04-10 5 views
0

NASMを使用してWindowsで8086アセンブリにブートローダを作成しています。それを構築した後、DDユーティリティを使用して、16GBのUSBメディアにFAT32ファイルシステムで書き込みます。私はMBRを更新するために使用するコマンドは、次のとおりです。MBRを交換するとWindowsがUSBドライブのフォーマットを促すのはなぜですか?

dd if=source.bin od=drive: bs=512 count=1 

MBRを更新するDDを使用した後、Windowsがそれをフォーマットするために私に尋ねます。なぜWindowsはこれをしますか?私はファイルシステムを壊してしまったのでしょうか? MBRを書き込んでもWindowsがUSBドライブを再フォーマットする必要があると思わないように、どうすればこの問題を修正できますか?

私のブートローダ/ブートセクタには、FAT32ファイルシステム用のBIOSパラメータブロックが含まれています。それにもかかわらず、私の問題は続く。

+0

パーティションテーブルがUSBにあります。そうでない場合は、認識できません。注意、BIOSパラメータブロック<>パーティションテーブル。 – t0mm13b

+0

私は分かりません。しかし、私はブートセクタにファイルを書き込む前にフォーマットを実行しました(速いものではありません)。 –

+0

WindowsはUSBデバイスとは異なる方法でフロッピーをパーティション分割してフォーマットします。フロッピーにはパーティションデータはなく、BPBの情報はメディア上のファイルシステムを定義するのに十分です。 WindowsがUSBデバイスをパーティション分割してフォーマットすると、実際にはBPBを使ってディスク上にMBRが配置され、MBRの最後の64バイトに[Partition table](http://wiki.osdev.org/Partition_Table)が含まれています。あなたのブートローダにパーティションテーブルはありません。あなたがディスクにあなたの書き込みをすると、Windowsはパーティションテーブルとフォーマット要求を表示しません。 –

答えて

0

USBスティックを再フォーマットするように依頼するには、Windows用の2つの理由があります。

  1. MBRが破損しているが、
  2. MBRは、Windowsが認識するパーティションを識別しません。

(1)は、MBRのバイト0x1FEおよび0x1FFがそれぞれ0x55および0xAAでない場合にのみ検出されます。パーティションテーブル(0x1BE、0x1CE、0x1DE、0x1EEの4つの16バイトエントリ)は、オフセット0x03の任意の(または最初の!)エントリの既知のパーティションタイプをリストしません。 。

関連する問題