我关注了这篇文章,介绍如何制作一个非常简单的内核来打印"Hello, World"。我的项目的文件可以在Github上找到。
我从这个项目构建了我的交叉编译器。我使用这些命令交叉编译、组装和构建我的 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上执行它时,它给出了以下消息:
致命:未找到可启动介质!系统已停止。
为什么我会收到此错误,如何解决它?
附言我使用 Windows 10 的 Ubuntu 子系统
可能缺少 GRUB 组件或 Xorriso 版本不正确。在你链接到的裸骨文章中,它是这样说的:
您可以使用程序 grub-mkrescue轻松创建包含 GRUB 引导加载程序和内核的可引导 CD-ROM 映像。您可能需要安装 GRUB 实用程序和程序 xorriso(版本 0.5.6 或更高版本(。
使用grub-mkrescue
制作 ISO 映像时,通常无法启动的 ISO 是由于缺少 Xorisso 安装造成的。如果grub-mkrescue
运行但根本不生成 ISO,则可能缺少 GRUB 组件。要确保您安装了所有 GRUB 和 Xorriso 组件,请在现代 Ubuntu 发行版上安装这些组件:
sudo apt-get install grub2-common grub-pc xorriso
然后尝试在VirtualBox中重建并重新运行ISO映像。