如何启动自制操作系统?

时间:2012-11-02 23:36:37

标签: assembly operating-system nasm

所以几天前,我冒险进入操作系统开发的未知领域。作为一种“Hello,World”程序,我在程序集中创建了这个引导加载程序:

;*********************************************
;   Boot1.asm
;       - A Simple Bootloader
;
;   Operating Systems Development Tutorial
;*********************************************

org     0x7c00              ; We are loaded by BIOS at 0x7C00

bits    16                  ; We are still in 16 bit Real Mode

Start:

    cli                 ; Clear all Interrupts
    hlt                 ; halt the system

times 510 - ($-$$) db 0             

dw 0xAA55

然后,我使用NASM将汇编文件编译成.bin文件。接下来,我使用PowerISO将此二进制文件转换为ISO文件。最后,我将ISO文件附加到Microsoft Virtual PC 2007.当它最初不起作用时,我检查了BIOS并确保CD / DVD首先在启动优先级列表中。当我在那之后尝试推进系统时,它给了我以下错误:

“重新启动并选择正确的启动设备”

在互联网上搜索后,我发现这意味着ISO无法启动。当我研究更多如何解决这个问题时,我找不到太多,除了必须正确配置ISO以便可引导。如何做到这一点,如果不可能,我还有其他选择吗?

我正在运行64位Windows 7家庭高级版。

2 个答案:

答案 0 :(得分:2)

您的程序代表master boot record,而不是可引导的ISO映像。它作为硬盘启动时工作正常,例如QEMU。并非所有虚拟机都会接受小巧的硬盘映像。在这种情况下,您首先要创建一个硬盘映像,然后用您的程序覆盖第一个扇区。

制作可引导的ISO映像有点复杂。有关详细信息,请阅读此wiki

答案 1 :(得分:0)

我知道你正在使用Microsoft Virtual PC(顺便说一句,我认为只有靴子窗口),但我建议使用其他东西。以下是一些选项(全部免费):

  • Virtualbox:这个免费的虚拟化软件可能会让您更轻松地启动您的操作系统。
  • QEMU:我和我的操作系统开发人员的最爱,它使调试和尝试自定义操作系统变得非常容易。另一方面,我认为它仅适用于基于UNIX的系统,因此请准备使用Linux Vm或Mac,或者安装Linux。