如何创建简单的引导程序,加载内核到ISO?它已经5天了,我在谷歌搜索,做了许多次尝试和错误,但没有得到任何.....我已经尝试了很多教程,如mikeos,osdev,超新星,波斯菊,但仍然得不到解决方案..... 我的电脑没有floopy磁盘,所以我无法使用floopy磁盘制作bootloader ... 我在mikeos教程中看到第一个扇区512字节用于bootloader,第二个用于内核可以使用imdisk制作,但使用floopy磁盘也可以自制引导程序&内核加载另一个文件到ISO ...他怎么能做到这一点(使ISO不使用floopy磁盘)?我想使用程序集来制作引导程序和内核...这不是第一次使用程序集并且经历了一些其他语言,比如C++,vb,php,phyton和其他语言...... 如何使bootloader的第一个扇区处于seacrhing /加载内核编译成iso?还添加了一些文件和文件夹到ISO?谢谢..使bootloader和内核进入iso?
回答
如果您打算编写一个操作系统并使用模拟器而不是真实机器,我建议您使用标准引导加载程序(不是因为您的引导加载程序可能会破坏计算机 - 它可能不会,但因为它是更简单的方法来启动和调试,你几乎肯定会对每次更新刻录CD感到厌倦
另外,请注意ISO使用比软盘/硬盘更复杂的启动协议,最好的方法是使用GRUB或者ISOLINUX如果你想使用CD并且使用软盘镜像(如果你希望自己拥有自己的引导程序,可以使用软盘镜像来附加到CD上)
我假设你是在一台x86 PC上。 El Torito可启动CD-ROM规范支持3种操作模式:
- 软盘模拟
- 硬盘仿真
- 没有仿真
对于软盘和硬盘仿真模式,你必须指定一个适当的映像文件和BIOS将像往常一样加载引导扇区,提供访问映像文件的仿真驱动器。
对于no仿真模式,您可以指定载入基数段和代码的大小,并且bios将相应地执行载入。在这种情况下,您将无法通过磁盘中断功能访问cdrom。
如果你是在Linux上,你可以用-b
,-hard-disk-boot
或-no-emul-boot
选项分别使用genisoimage
工具。
另外请注意,如果您的BIOS支持从这样的设备启动(大多数),USB闪存驱动器可能比光盘更方便。
:hi..I使用VirtualBox和Windows XP进行引导程序和因为错误而我没有使用eltorito和VMware安装...首先我已经尝试从mikeos.berlios.de的代码来使简单的引导程序说你好世界和它的作品,但是当我从[http://mikeos.berlios.de/mikeos-4.4.zip]下载示例操作系统和尝试编译到ISO我总是得到错误...我使用nasm使.bin和.flp和使用mkisofs使.iso ....你能帮助我哪里是错误?谢谢 – ankifreeze
只有遵循我的简单步骤,才能做到这一点:
编译bootloader.asm使用NASM此代码: NASM -f斌-o bootloader.bin bootloader.asm
下载 'DD为WINDO * S'(在谷歌搜索),把程序'dd.exe'放到保存bootloader文件的目录中。打开命令提示符并移至保存引导加载程序的目录,然后键入以下命令: dd if = bootloader.bin of = bootloader。flp
下载'imdisk'(在Google上搜索)并安装它。安装完成后,打开命令提示符并转至保存引导加载程序的目录。键入此命令: imdisk -a -f -s bootloader.flp -m 1440K B:那么
Windows将创建一个虚拟软盘驱动器字母B.你的内核文件复制到该B驱。
- 再次打开命令提示和类型: imdisk -D -m B:
Windows将然后卸载驱动器B和你的bootloader.flp准备安装通过模拟器。
我推荐你QEMU,因为它是如此小而快的程序来启动你的OS文件。要使用QEMU运行bootloader.flp,在命令提示符处键入以下命令:如果你要出示你的bootloader.flp文件的ISO文件 QEMU -FDA bootloader.flp
,你必须有一个命名的程序“的mkisofs '并将程序'mkisofs.exe'移动到您保存引导加载程序的目录中。然后将您的bootloader.flp文件移动到名为'cdiso'的文件夹中(首先将其制作)。然后打开命令提示符并键入: mkisofs -no-emul-boot -boot-load-size 4 -o myos.iso -b bootloader.flp cdiso/
然后它会生成ISO文件并且可以运行它在模拟器上。
如果你要问我更多,你可以在[email protected]给我发电子邮件
- 1. 什么是内核,bootloader?
- 2. 简单ASM的Bootloader到ISO
- 3. 从汇编bootloader调用C内核
- 4. iOS11核心NFC和ISO 14443
- 5. 在小内核bootloader中检查malloc后是否为空?
- 6. Xperia Lounge和bootloader unlocking
- 7. Bootloader的内存位置
- 8. 使用内核模块进行内存写入导致Android内核中出现内核oops
- 9. 使用GRUB/NASM/C生成的内核生成iso
- 10. cuda代码不进入内核
- 11. 如何将内核加载到内存中,从ISO
- 12. 进入和退出内核调度()函数
- 13. 如何从bootloader正确跳转到内核(重启无限的麻烦)
- 14. “adb reboot bootloader”如何在内部工作?
- 15. 使用linux进行Android内核开发
- 16. 使用Qemu进行内核模拟
- 17. 使用KVM进行Linux内核开发
- 18. 使用Qemu进行Linux内核开发?
- 19. Android:使用KGDB进行内核调试
- 20. Linux内核写入()和读取()函数
- 21. Linux内核和我的内核模块
- 22. 在Linux内核中使用AES进行加密和解密
- 23. Linux内核进程管理
- 24. linux内核进程簿
- 25. 来自ISO映像的Linux内核版本
- 26. 在iso映像中手动更改内核版本
- 27. 在solaris内核模块中获取进程ID和父进程
- 28. 进程从内核分配内存块
- 29. 内存分配内核空间和用户空间进程
- 30. Android内核和init.rc
嗨..我使用虚拟盒作为虚拟机...我想让自己的引导程序,不想使用grub或isolinux ..你可以推荐我编译bootloader和内核到iso的例子吗?谢谢 – ankifreeze
这里是hort描述如何使用仿真启动:http://wiki.osdev.org/Bootable_CD。这很简单:你只需要创建一个软盘引导程序(网上有很多教程)并将其写入CD。如果你确实想要以艰难的方式做事,请阅读:http://wiki.osdev.org/El-Torito。 – valplo
嗨,感谢您的链接我有一些想法.... – ankifreeze