如何从USB启动512字节的引导加载程序(ARMx86)

3
这是一个简单的非操作系统特定的汇编程序,旨在与我的PC架构配合使用。由NASM的Linux版本编译。
我试图将它放入USB中,当我选择从BIOS引导USB时,它确实尝试从USB引导。但是没有任何反应。硬件继续运行,但我的程序应该在屏幕上打印字符。只有一个黑屏和左上角闪烁的白色光标(我认为它属于BIOS)。
也许BIOS没有将我的“文件”视为启动扇区。
这是USB内容(来自Win7的截图,不是英文,但您可以很容易地理解它):
属性 enter image description here 我需要什么才能使USB驱动器可引导?我需要像主引导记录一样对其进行分区吗?

1
引导加载程序需要位于MBR中,它不仅仅是磁盘上的一个文件。您还需要确保魔数是正确的。 - fuz
你的标题写着ARMx64,这是正确的吗? - Michael Petch
1个回答

2
几年前,我成功地创建了一个可启动的Shell模拟器,它应该从USB驱动器启动。在解决问题时,我也遇到了很多困难,但为了实现这一点,您需要将MBR放置在驱动器的第一个扇区,作为您的引导程序,并带有特殊的引导签名,它必须是512字节长。从那里,您可以引导驱动器上包含其余可启动程序的任何其他扇区。因此,请确保您的引导加载程序代码正确并位于驱动器的第一个扇区。

http://wiki.osdev.org/Bootloader

http://forum.osdev.org/viewtopic.php?f=1&t=20561

请确保您的系统支持USB启动功能,您可以从BIOS启动设置中轻松找到它。

1
即使您只是运行自己的代码,确保在其中有一个有效的BIOS参数块也是一个非常好的主意。我见过许多硬件设备,它们显然不仅仅是寻找有效的引导标志;如果缺少BPB,它们将拒绝启动并且不会显示任何错误信息。 - David Hoelzer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接