如何检测可引导的NTFS文件系统?

时间:2017-12-13 18:34:38

标签: boot ntfs

硬盘有4个主(MBR)分区,所有分区都格式化为NTFS。其中只有一个包含可启动的操作系统(Windows XP,Windows Vista,Windows 7,Windows 8或Windows 10)。我的bootloader程序如何确定哪个文件系统可以启动?是否可以通过读取文件系统的引导扇区(即前512字节)?

分区表中的活动位已丢失。

检查字节0是0xeb还是0xe9而字节510是0x55而字节511是0xAA是不够的,因为即使是Linux上的mkfs.ntfs工具创建的不可引导的NTFS文件系统也通过了这个测试,并且是预期的和必需的这种情况的输出是不可启动的。

如果我的程序能够列出NTFS文件系统根目录中的文件,我应该查找哪些文件或目录(NTLDR)?

如果我的所有程序都是文件系统的第一个40960字节,它还能决定该分区是否可引导? (最好用尽可能简单的逻辑。)

这是否正确:如果NTFS文件系统上存在files \ BOOTMGR或\ NTLDR,那么它(可能)是可引导的。

1 个答案:

答案 0 :(得分:0)

根据我的最佳理解,检测NTFS文件系统是否包含可引导Windows的最简单方法是检查根目录中是否存在BOOTMGR或NTLDR中的任何文件,因为其中一个文件将由引导代码加载

NTFS引导扇区(即文件系统的前512个字节)不包含有关可引导性的确切信息,因为它对于可引导和不可引导的文件系统可能完全相同。

有关Windows启动的更多信息(具有BOOTMGR和NTLDR文件的作用):

还值得查看os-prober的源代码。在os-probes/mounted/x86/20microsoft中,它确实在寻找文件BOOTMGR和NTLDR(均为小写)。它还有一些额外的检查,比如BOOTMGR检查文件boot / bcd,对于NTLDR,它检查文件ntdetect.com和boot.ini。