【问题标题】:VirtualBox faliled to load .img or .flp fileVirtualBox 无法加载 .img 或 .flp 文件
【发布时间】:2015-01-05 14:29:43
【问题描述】:

我尝试用 C 编写一个简单的内核。我找到了这个教程:Bare Bones。我已经按照步骤进行了。当我将“o”文件编译成一个“bin”文件时,我尝试在 VirtualBox 中运行它。我已将“bin”扩展名更改为“img”。我创建了一个新的虚拟机,当我尝试将“img”文件设置为软盘映像时,出现错误:

软盘文件:path_of_file。 (Eng.:加载软盘图像失败。)

无法获取介质“path_of_file”的存储格式 (VERR_NOT_SUPPORTED)。

Eredmény kód: VBOX_E_IPRT_ERROR (0x80BB0005)(Eng.:结果代码。)

Komponens:中等(Eng.: Component.)

Interfész:IMedium {05f2bbb6-a3a6-4fb9-9b49-6d0dda7142ac}(Eng.: 接口。)

被调用者:IVirtualBox {fafa4e17-1ee2-4905-a10e-fe7c18bf5554}

被调用方 RC:VBOX_E_OBJECT_NOT_FOUND (0x80BB0001)

如果有人能告诉我问题出在哪里以及如何解决,我会非常高兴。我已经在整个互联网上搜索了解决方案,但我还没有找到它。 我用过的软件:

  • NASM 2.11.06
  • i686-elf-gcc 4.8.2(来自OSDev forum
  • VirtualBox 4.3.20

我的操作系统是 Windows 7 Professional 64 位。

(对不起我的英语,但我一直在学习这门语言。)

谢谢。

【问题讨论】:

    标签: c assembly virtualbox osdev


    【解决方案1】:

    一种选择是使用来自http://qemu.weilnetz.de/ 的QEMU。将 PATH 变量设置为 QEMU 二进制目录(在 QEMU 安装目录中)。打开保存 kernel.bin 的命令提示符,然后输入:

    qemu-system-i386 -kernel kernel.bin
    

    否则,您需要使用现有的引导加载程序(最好是 GRUB2)来创建可引导的 ISO 磁盘。现在,您所拥有的只是一个二进制文件,其中包含您的内核代码。

    1) 创建一个名为 grub.cfg 的文件,其内容如下:

    menuentry "my os" {
        multiboot /boot/kernel.bin
        boot
    }
    

    2) 在终端中运行以下命令:

    mkdir isodir
    mkdir isodir/boot
    mkdir isodir/boot/grub
    

    3) 将 grub.cfg 文件保存在 isodir/boot/grub 目录中。

    4) 将您的 kernel.bin 文件复制到 isodir/boot

    5) 通过从此处下载 setup-x86.exe 获取 32 位的 Cygwin: https://cygwin.com/install.html (如果您已经安装了它,请运行您的安装文件并跳到第 7 步)

    6) 运行文件,选择安装目录、包目录和GNU镜像。

    7) 包列表出现后,取消选中“隐藏过时的包”复选框。

    8) 在搜索栏中,搜索 grub,它应该在过时类别中显示为“grub2”。选择它进行安装并继续。

    9) 安装后(记得将 Cygwin 二进制目录添加到你的路径中),只需运行:

    sh grub-mkrescue --output=myos.iso isodir
    

    然后您可以在 VirtualBox 中运行“myos.iso”文件。

    如果您有任何问题,请发表评论。希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-10
      • 2014-07-05
      • 1970-01-01
      • 2015-12-02
      • 2017-09-15
      • 2016-03-22
      • 2014-12-13
      • 1970-01-01
      相关资源
      最近更新 更多