我跟随this article讨论了如何制作一个非常简单的内核,该内核显示“ Hello,World”。我项目的文件可以在Github上找到。
我从此project构建了交叉编译器。我使用以下命令交叉编译,组装和构建我的ISO(CD-ROM映像):
i686-elf-as boot.s -o boot.o
i686-elf-gcc -c kernel.c -o kernel.o -std=gnu99 -ffreestanding -O2 -Wall -Wextra
i686-elf-gcc -T linker.ld -o myos.bin -ffreestanding -O2 -nostdlib boot.o kernel.o -lgcc
mkdir -p isodir/boot/grub
cp myos.bin isodir/boot/myos.bin
cp grub.cfg isodir/boot/grub/grub.cfg
grub-mkrescue -o myos.iso isodir
当我尝试在VirtualBox上执行它时,它会显示以下消息:
FATAL:找不到可启动媒体!系统停止了。
为什么会出现此错误,该如何解决?
P.S。我在Windows 10上使用Ubuntu子系统
答案 0 :(得分:1)
可能是缺少GRUB组件或Xorriso的版本不正确。在与之链接的“裸露的骨头”文章中,这样说:
您可以使用grub-mkrescue程序轻松创建包含GRUB引导程序和内核的可引导CD-ROM映像。 您可能需要安装GRUB实用程序和程序xorriso (版本0.5.6或更高版本)。
在使用grub-mkrescue
制作ISO映像时,由于Xorisso安装丢失而导致无法启动的ISO出现更多的情况。如果grub-mkrescue
运行但根本不产生ISO,则可能缺少GRUB组件。为确保已安装所有GRUB和Xorriso组件,请使用以下命令在现代Ubuntu版本上安装这些组件:
sudo apt-get install grub2-common grub-pc xorriso
然后尝试在VirtualBox中重建并重新运行ISO映像。