ハードディスクには4つのプライマリ(MBR)パーティションがあり、すべてNTFSでフォーマットされています。それらのうちの1つにのみ起動可能なオペレーティングシステム(Windows XP、Windows Vista、Windows 7、Windows 8またはWindows 10)が含まれています。私のブートローダプログラムはどのファイルシステムがブート可能であるかをどのように把握していますか?ファイルシステムのブートセクタ(つまり最初の512バイト)を読むだけで可能ですか?ブート可能なNTFSファイルシステムを検出するには?
パーティションテーブルのアクティブビットが失われました。
バイト0が0xebまたは0xe9で、バイト510が0x55で、バイト511が0xAAであることを確認するだけでは不十分です。Linux上のmkfs.ntfsツールで作成されたブート可能でないNTFSファイルシステムでもこのテストに合格し、この場合に必要な出力は起動できません。
私のプログラムがNTFSファイルシステムのルートディレクトリにファイルをリストすることができる場合、どのファイルまたはディレクトリを探してください(NTLDR)か?
私のプログラムがすべてファイルシステムの最初の40960バイトである場合、パーティションが起動可能かどうかはまだ判断できますか? (好ましくは、できるだけ簡単なロジックを持つ)
は、この正しいです:ファイルは\場合BOOTMGRまたは\ NTLDRは、NTFSファイルシステム上に存在し、それは(おそらく)ブート可能です。
参考:http://wiki.osdev.org/Partition_Table – Caramiriel
@Caramiriel:どのようにリンクしているページのヘルプは、NTFSファイルシステムがブート可能であるか否かを検出するのでしょうか?私はそこに関連するものは見つけられませんでした。 – pts
パーティションテーブルレコード(バイトオフセット0)は、パーティションがブート可能かどうかを示します。それ以外の場合は、[NTFS Boot Sector](https://technet.microsoft.com/en-us/library/cc977221.aspx)が利用可能かどうかを確認してください。しかし、ブート可能な定義に依存します。 – Caramiriel