4

如何创建将内核加载到iso中的简单引导加载程序?已经 5 天了,我在谷歌搜索并反复试验多次但一无所获.....我尝试了许多教程,如 mikeos、osdev、supernova、cosmos os 但仍然没有解决方案......我的计算机没有软盘,所以我无法使用软盘制作引导加载程序...我在 mikeos 教程中看到第一个扇区 512 字节用于引导加载程序,第二个用于内核可以使用 imdisk 但使用软盘也可以制作引导加载程序&内核将另一个文件加载到iso中...他怎么做(不使用软盘制作iso)?我想使用程序集制作引导加载程序和内核……这不是我第一次使用程序集并且已经体验过其他一些语言,如 c++、vb、php、phyton 等……

4

3 回答 3

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:
    

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

  1. 再次打开命令提示符并键入:

    imdisk -D -m B:
    

然后,Windows 将卸载驱动器 B,您bootloader.flp就可以通过模拟器进行安装了。

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

qemu -fda bootloader.flp

如果要生成 bootloader.flp 文件的 ISO 文件,则必须有一个名为的程序mkisofs并将该程序移动mkisofs.exe到保存 bootloader 的目录中。然后将您的bootloader.flp文件移动到名为cdiso(首先制作)的文件夹中。然后打开命令提示符并输入:

mkisofs -no-emul-boot -boot-load-size 4 -o myos.iso -b bootloader.flp cdiso/

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

如果你想问我更多,你可以发邮件给我danasap90 {add} gmail {dot} com

于 2014-12-27T09:35:08.757 回答
1

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

  1. 软盘仿真
  2. 硬盘仿真
  3. 没有仿真

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

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

如果您使用的是 linux,则可以分别使用genisoimage带有-b-hard-disk-boot-no-emul-boot选项的工具。

另请注意,如果您的 bios 支持从此类设备启动(大多数都支持),则 USB 闪存驱动器可能比 cdrom 更方便。

于 2013-11-02T14:45:19.943 回答
1

如果您要编写操作系统并以任何方式使用模拟器而不是真实机器,我建议您使用标准引导加载程序(不是因为引导加载程序可能会破坏计算机 - 它可能不会,而是因为它是一种更简单的启动方式up with and debug. 你几乎肯定会厌倦每次更新都刻录 CD。

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

于 2013-11-02T18:18:21.433 回答