使bootloader和内核成为iso?

时间:2013-11-02 03:42:06

标签: assembly kernel nasm bootloader

如何创建将内核加载到iso的简单引导加载程序?它已经5天了,我在谷歌搜索并多次尝试和错误但没有得到任何.....我已经尝试了许多教程,如mikeos,osdev,超新星,宇宙os但仍然没有解决方案..... 我的电脑没有floopy磁盘,所以我不能使用floopy磁盘制作bo​​otloader ... 我在mikeos教程中看到第一个扇区512字节用于bootloader,第二个用于内核可以用imdisk制作但是使用floopy磁盘他也可以制作bootloader&内核将另一个文件加载到iso中......他怎么做(不使用floopy磁盘制作iso)?我想使用程序集制作引导加载程序和内核......它不是第一次使用程序集并且已经体验过其他语言,如c ++,vb,php,phyton等等.... 如何为bootloader创建第一个扇区,将seacrhing / load kernel编译成iso?还将一些文件和文件夹添加到iso中?谢谢..

3 个答案:

答案 0 :(得分:2)

我假设您使用的是x86 PC。 El Torito可引导cdrom规范支持3种操作模式:

  1. 软盘模拟
  2. 硬盘模拟
  3. 没有仿真
  4. 对于软盘和硬盘模拟模式,您必须指定适当的图像文件,BIOS将照常加载引导扇区,提供访问图像文件的模拟驱动器。

    对于无仿真模式,您可以指定加载基本段和代码的大小,BIOS将相应地执行加载。在这种情况下,您将无法通过磁盘中断函数访问cdrom。

    如果您使用的是Linux,则可以将genisoimage工具分别与-b-hard-disk-boot-no-emul-boot选项一起使用。

    另请注意,如果你的BIOS支持从这样的设备启动(大多数设备都支持),USB闪存驱动器可能比cdrom更方便。

答案 1 :(得分:2)

只有按照我的简单步骤才能做到这一点:

  1. 使用此代码使用NASM编译bootloader.asm: nasm -f bin -o bootloader.bin bootloader.asm

  2. 下载'dd for windo * s'(在Google上搜索),并将程序'dd.exe'放入保存引导加载程序文件的目录中。打开命令提示符并移动到保存引导加载程序的目录,然后键入以下命令: dd if = bootloader.bin of = bootloader.flp

  3. 下载'imdisk'(在Google上搜索),然后安装它。安装后,打开命令提示符并转到保存引导加载程序的目录。输入以下命令: imdisk -a -f bootloader.flp -s 1440k -m B:

  4. Windows将创建一个带有字母B的虚拟软盘驱动器。将您的KERNEL文件复制到该B驱动器中。

    1. 再次打开命令提示符并键入: imdisk -D -m B:
    2. Windows将卸载驱动器B,并且您的bootloader.flp已准备好由模拟器安装。

      我推荐你QEMU,因为它是如此小而快的程序来启动你的os文件。要使用qemu运行bootloader.flp,请在命令提示符中键入以下命令: qemu -fda bootloader.flp

      如果要生成bootloader.flp文件的ISO文件,则必须具有名为“mkisofs”的程序,并将程序“mkisofs.exe”移动到保存引导加载程序的目录中。然后将bootloader.flp文件移动到名为“cdiso”的文件夹中(首先将其设置)。然后打开命令提示符并键入: mkisofs -no-emul-boot -boot-load-size 4 -o myos.iso -b bootloader.flp cdiso /

      然后它将生成ISO文件,您可以在模拟器上运行它。

      如果您想问我更多,可以发送电子邮件至danasap90@gmail.com

答案 2 :(得分:1)

如果您要编写操作系统并使用模拟器而不是真机,我建议您使用标准的引导加载程序(不是因为引导加载程序可能会破坏计算机 - 它可能不会,但因为它更简单启动和调试的方法。你几乎肯定会厌倦每次更新刻录CD。

另外,请注意ISO使用比软盘/硬盘更复杂的引导协议。最好的方法是使用GRUB或ISOLINUX,如果你想使用CD并使用软盘映像(可以通过模拟后者附加到CD),如果你想拥有自己的引导加载程序。