[英]How to detect a bootable NTFS filesystem?
硬盤具有4個主(MBR)分區,所有分區均格式化為NTFS。 其中只有一個包含可啟動的操作系統(Windows XP,Windows Vista,Windows 7,Windows 8或Windows 10)。 我的引導程序程序如何確定哪個文件系統可引導? 是否可以僅通過讀取文件系統的引導扇區(即前512個字節)來完成?
分區表中的活動位已丟失。
僅檢查字節0是0xeb或0xe9以及字節510是0x55還是字節511是0xAA是不夠的,因為即使Linux上由mkfs.ntfs工具創建的不可引導的NTFS文件系統也通過了此測試,並且預期的和所需的輸出情況是不可引導的。
如果我的程序能夠列出NTFS文件系統根目錄中的文件,我應該尋找(NTLDR)哪些文件或目錄?
如果我的程序只有文件系統的前40960個字節,它還能確定分區是否可引導嗎? (最好使用盡可能簡單的邏輯。)
這是正確的嗎:如果文件\\ BOOTMGR或\\ NTLDR存在於NTFS文件系統上,則(可以)將其引導。
根據我的最佳理解,檢測NTFS文件系統是否包含可啟動Windows的最簡單方法是檢查根目錄中是否存在任何文件BOOTMGR或NTLDR,因為其中一個文件將由啟動代碼加載。
NTFS引導扇區(即文件系統的前512個字節)不包含有關可引導性的確定信息,因為它對於可引導和不可引導的文件系統可以完全相同。
有關Windows啟動的更多信息(具有文件BOOTMGR和NTLDR的角色):
值得一看的是os-prober的源代碼。 在os-probes / mount / x86 / 20microsoft中,它確實在尋找文件BOOTMGR和NTLDR(均為小寫)。 它還有一些其他檢查,例如對於BOOTMGR,它檢查文件boot / bcd,對於NTLDR,它檢查文件ntdetect.com和boot.ini。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.