Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C VirtualBox无法加载.img或.flp文件_C_Assembly_Virtualbox_Osdev - Fatal编程技术网

C VirtualBox无法加载.img或.flp文件

C VirtualBox无法加载.img或.flp文件,c,assembly,virtualbox,osdev,C,Assembly,Virtualbox,Osdev,我试图用C编写一个简单的内核。我发现了这个教程:。我已经按照步骤做了。当我将“o”文件编译为一个“bin”文件时,我尝试在VirtualBox中运行该文件。我已将“bin”扩展名更改为“img”。我已经创建了一个新的虚拟机,当我试图将“img”文件设置为软盘映像时,我遇到了一个错误: 软盘fájl megnyitása sikertelen:文件的路径。(Eng.:无法加载软盘映像。) 无法获取\u文件的介质“路径\u”的存储格式(不支持VERR\u) Eredmény kód:VBOX_E_I

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

软盘fájl megnyitása sikertelen:文件的路径。(Eng.:无法加载软盘映像。)

无法获取\u文件的介质“路径\u”的存储格式(不支持VERR\u)

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

Komponens:中等(Eng.:Component.)

干涉:IMedium{05f2bbb6-a3a6-4fb9-9b49-6d0dda7142ac}(英语:界面。)

被调用方:IVirtualBox{fafa4e17-1ee2-4905-a10e-FE7C18BF554}

被调用方RC:VBOX\u未找到对象(0x80BB0001)

如果有人能告诉我问题出在哪里,我会很高兴的。我在互联网上到处寻找解决方案,但我还没有找到。 我使用的软件:

  • NASM 2.11.06
  • i686 elf gcc 4.8.2(自)
  • VirtualBox 4.3.20
我的操作系统是Windows 7 Professional 64位

(对不起,我的英语还没学会呢。)


谢谢

一个选项是从中使用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: (如果已经安装,请运行安装文件并跳到步骤7)

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

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

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

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

sh grub-mkrescue --output=myos.iso isodir
然后可以在VirtualBox中运行“myos.iso”文件

如果您有任何问题,请留下评论。希望这有帮助