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

时间:2016-07-28 08:15:51

标签: assembly boot

这是一个简单的非操作系统特定的汇编程序,旨在与我的PC架构配合使用。由NASM的Linux版本编译。

我尝试将其放入USB中,当我选择从BIOS中启动USB时,它确实尝试从USB启动。沉默。硬件一直在运行,但我的程序应该在屏幕上打印字符。只是一个黑色的屏幕,左上角有一个闪烁的白色光标(我认为它属于BIOS)。

也许BIOS没有计算我的"文件"作为引导扇区。

以下是USB内容(来自Win7的截图,不是英文版,但您可以很容易地理解它是什么):

属性

enter image description here 我是否需要一些东西来使USB驱动器可启动?我是否需要像主启动记录一样对其进行分区?

1 个答案:

答案 0 :(得分:2)

几年前,我成功创建了一个可启动的shell模拟器,应该从USB驱动器启动,我也被多次搞清楚问题,但为了实现它,你需要把MBR放到作为你的启动程序在驱动器的第一个扇区,具有特殊启动签名,它必须是512字节长,从那里你可以启动驱动器上任何其他扇区,其中包含你的其余可启动程序。因此,请确保您的引导加载程序代码正确并且位于驱动器的第一个扇区。

http://wiki.osdev.org/Bootloader

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

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