如何创建将内核加载到iso中的简单引导加载程序?已经 5 天了,我在谷歌搜索并反复试验多次但一无所获.....我尝试了许多教程,如 mikeos、osdev、supernova、cosmos os 但仍然没有解决方案......我的计算机没有软盘,所以我无法使用软盘制作引导加载程序...我在 mikeos 教程中看到第一个扇区 512 字节用于引导加载程序,第二个用于内核可以使用 imdisk 但使用软盘也可以制作引导加载程序&内核将另一个文件加载到iso中...他怎么做(不使用软盘制作iso)?我想使用程序集制作引导加载程序和内核……这不是我第一次使用程序集并且已经体验过其他一些语言,如 c++、vb、php、phyton 等……
3 回答
您只能按照我的简单步骤执行此操作:
使用以下代码用 NASM 编译 bootloader.asm:
nasm -f bin -o bootloader.bin bootloader.asm
下载“dd for windo*s”(在 Google 上搜索),然后将程序
dd.exe
放入保存引导加载程序文件的目录中。打开命令提示符并移至保存引导加载程序的目录,然后键入以下命令:dd if=bootloader.bin of=bootloader.flp
下载
imdisk
(在 Google 上搜索)并安装它。安装后,打开命令提示符并转到保存引导加载程序的目录。键入此命令:imdisk -a -f bootloader.flp -s 1440k -m B:
然后 Windows 将创建一个带有字母 B 的虚拟软盘驱动器。将您的 KERNEL 文件复制到该 B 驱动器中。
再次打开命令提示符并键入:
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
我假设您使用的是 x86 PC。El Torito 可启动 cdrom 规范支持 3 种操作模式:
- 软盘仿真
- 硬盘仿真
- 没有仿真
对于软盘和硬盘仿真模式,您必须指定适当的映像文件,BIOS 将照常加载引导扇区,提供访问映像文件的仿真驱动器。
对于无仿真模式,您可以指定加载基段和代码大小,bios 将相应地执行加载。在这种情况下,您将无法通过磁盘中断功能访问 cdrom。
如果您使用的是 linux,则可以分别使用genisoimage
带有-b
、-hard-disk-boot
或-no-emul-boot
选项的工具。
另请注意,如果您的 bios 支持从此类设备启动(大多数都支持),则 USB 闪存驱动器可能比 cdrom 更方便。
如果您要编写操作系统并以任何方式使用模拟器而不是真实机器,我建议您使用标准引导加载程序(不是因为引导加载程序可能会破坏计算机 - 它可能不会,而是因为它是一种更简单的启动方式up with and debug. 你几乎肯定会厌倦每次更新都刻录 CD。
另外,请注意 ISO 使用比软盘/硬盘更复杂的引导协议。如果您希望使用 CD,最好的方法是使用 GRUB 或 ISOLINUX,如果您希望拥有自己的引导加载程序,则使用软盘映像(可以通过后面的仿真附加到 CD)。