我一直在尝试进一步了解 USB 驱动器,并且对它们的 MBR 感到好奇。
本质上,我打开 USB 驱动器的设备文件,并对文件的前 496 个字节进行十六进制转储。我知道地址 0x1fe 和 0x1ff 分别包含字节 55 和 aa,并且它们标记“主引导记录”的结尾。但是,我并不完全确定主引导记录是什么。
据我所知,插入 USB 时,BIOS 会执行存储在 MBR 中的指令 - 这是正确的吗?但是,我见过的大多数闪存驱动器要么有空白的引导扇区,要么有充满警告(例如“BOOTMGR 不存在”)的引导扇区。为什么很少有可行的代码?
我还想知道 MBR 中的代码是为哪种处理器编写的。是 16 位?32 位?64 位?
抱歉,如果我对这个主题一无所知;我对硬件还比较陌生。提前感谢您的回复。
答案1
我不知道你为什么要看前 496 个字节,因为主引导记录 (MBR)总是 到过 512 字节大小为,位于存储设备的 0 扇区(第一个扇区)。
MBR 的作用是告诉您的操作系统有关存储设备的分区结构,此外它还包含可执行代码(引导加载程序),指导计算机如何加载操作系统。
引导加载程序仅在您实际尝试从 USB 闪存驱动器启动时才会出现。例如,如果您尝试从使用以下软件制作的可启动 USB 驱动器安装 Windows鲁弗斯。您可以通过阅读维基百科上有关 MBR 的文章。
以下是我的 NTFS 格式闪存驱动器上的 MBR:
当您说看到空的引导扇区时,您可能搞错了。BOOTMGR not present
您在 MBR 中看到的字符串并不表示闪存驱动器上不存在 MBR。
事实上,当用户尝试从未配置为可启动的闪存驱动器启动时,就会向用户显示该错误消息。
MBR 过去曾被多种引导扇区病毒利用,例如嗑药和脑它将显示类似Your computer is now stoned
计算机启动时的字符串。
关于你关于引导加载程序代码所针对的处理器架构的问题,我不太确定答案是什么,但我怀疑代码是使用 16 位编译器编译由处理器执行实模式(16位模式)。
你可能想看看这个超级用户问题了解更多信息。
如果你有兴趣了解有关引导加载程序的更多信息,你可能想按照 CodeProject 上这篇非常有帮助的文章中的说明尝试自己构建一个:
How to develop your own Boot Loader
一些附加信息: