将引导加载程序和内核制作成iso? [关闭]
Posted
技术标签:
【中文标题】将引导加载程序和内核制作成iso? [关闭]【英文标题】:make bootloader and kernel into iso? [closed] 【发布时间】:2013-11-13 08:39:27 【问题描述】:如何创建将内核加载到 iso 的简单引导加载程序?已经 5 天了,我在 google 中搜索并反复试验多次但一无所获.....我尝试了许多教程,如 mikeos、osdev、supernova、cosmos os 但仍然没有解决方案..... 我的电脑没有软盘,所以我无法使用软盘制作引导加载程序... 我在 mikeos 教程中看到第一个扇区 512 字节用于引导加载程序,第二个扇区用于内核可以使用 imdisk 但使用 floopy 磁盘也可以让引导加载程序和内核将另一个文件加载到 iso 中......他怎么能做到这一点(制作 iso 不使用软盘)?我想使用程序集制作引导加载程序和内核……这不是我第一次使用程序集并且已经体验过其他一些语言,如 c++、vb、php、phyton 等…… 如何为引导加载程序制作第一个扇区,将 seacring/load 内核编译成 iso?还将一些文件和文件夹添加到 iso 中?谢谢..
【问题讨论】:
【参考方案1】:您只需按照我的简单步骤即可:
使用以下代码用 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
(在谷歌上搜索)并安装它。安装后,打开命令提示符并转到保存引导加载程序的目录。输入以下命令:
imdisk -a -f bootloader.flp -s 1440k -m B:
然后,Windows 将创建一个带有字母 B 的虚拟软盘驱动器。将您的 KERNEL 文件复制到该 B 驱动器中。
再次打开命令提示符并输入:
imdisk -D -m B:
然后,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 add gmail dot com
【讨论】:
【参考方案2】:如果您要编写操作系统并以任何方式使用模拟器而不是真机,我建议您使用标准引导加载程序(不是因为您的引导加载程序可能会破坏计算机 - 它可能不会,而是因为它更简单启动和调试的方式。几乎可以肯定,每次更新都会对刻录 CD 感到厌烦。
另外,请注意,ISO 使用比软盘/硬盘更复杂的引导协议。如果您希望使用 CD,最好的方法是使用 GRUB 或 ISOLINUX,如果您希望拥有自己的引导加载程序,则使用软盘映像(可以通过后面的仿真附加到 CD)。
【讨论】:
嗨..我使用虚拟机作为虚拟机...我想制作自己的引导加载程序,不想使用 grub 或 isolinux..你能推荐我将引导加载程序和内核编译成 iso 的示例吗?谢谢 下面是如何使用仿真启动的简短描述:wiki.osdev.org/Bootable_CD。这很简单:您只需要创建一个软盘引导加载程序(网上有很多教程)并将其写入光盘。如果您绝对确定要以艰难的方式做事,请阅读以下内容:wiki.osdev.org/El-Torito。【参考方案3】:我假设您使用的是 x86 PC。 El Torito 可启动 cdrom 规范支持 3 种操作模式:
-
软盘仿真
硬盘仿真
没有仿真
对于软盘和硬盘模拟模式,您必须指定适当的映像文件,Bios 将照常加载引导扇区,提供访问映像文件的模拟驱动器。
对于无仿真模式,您可以指定加载基段和代码大小,bios 将相应地执行加载。在这种情况下,您将无法通过磁盘中断功能访问 cdrom。
如果您使用的是 linux,则可以将genisoimage
工具分别与-b
、-hard-disk-boot
或-no-emul-boot
选项一起使用。
另外请注意,如果您的 bios 支持从此类设备启动(大多数都支持),则 USB 闪存驱动器可能比 cdrom 更方便。
【讨论】:
:嗨..我使用 virtualbox 和 windows xp 来制作引导程序,我没有使用 eltorito 和 vmware,因为安装时出错......首先我尝试了 mikeos.berlios.de 中的代码来制作简单的引导加载程序打个招呼,它可以工作,但是当我从 [mikeos.berlios.de/mikeos-4.4.zip] 下载示例操作系统并尝试将其编译为 iso 时,我总是会出错...我使用 nasm 制作 .bin 和 .flp 并使用 mkisofs 制作 .iso。 ...你能帮我哪里出错吗?谢谢以上是关于将引导加载程序和内核制作成iso? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何将控制从我的引导加载程序转移到位于硬盘驱动器中的应用程序
在用U盘安装debian的时候,需要boot.img.gz,vmliuz,initrd.z和一个debian的ISO镜像