How to develop your own Boot Loader

How to develop your own Boot Loader

我一直在尝试进一步了解 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: MBR 部分

当您说看到空的引导扇区时,您可能搞错了。BOOTMGR not present您在 MBR 中看到的字符串并不表示闪存驱动器上不存在 MBR。

事实上,当用户尝试从未配置为可启动的闪存驱动器启动时,就会向用户显示该错误消息。

MBR 过去曾被多种引导扇区病毒利用,例如嗑药它将显示类似Your computer is now stoned计算机启动时的字符串。 引导扇区病毒

关于你关于引导加载程序代码所针对的处理器架构的问题,我不太确定答案是什么,但我怀疑代码是使用 16 位编译器编译由处理器执行实模式(16位模式)。

你可能想看看这个超级用户问题了解更多信息。

如果你有兴趣了解有关引导加载程序的更多信息,你可能想按照 CodeProject 上这篇非常有帮助的文章中的说明尝试自己构建一个:

How to develop your own Boot Loader


一些附加信息:

相关内容