如何制作 "Hello world" 内核

How to make a "Hello world" kernel

我关注了this article on how to make a very simple kernel which prints "Hello, World". The files to my project are available on Github

我用这个 project 构建了我的交叉编译器。我使用这些命令交叉编译,assemble,并构建我的 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: No bootable medium found! System halted.

为什么会出现此错误,我该如何解决?

P.S。我将 Ubuntu 子系统用于 Windows 10

可能缺少 GRUB 组件或 Xorriso 版本不正确。在你链接到它的 Bare Bones 文章中说:

You can easily create a bootable CD-ROM image containing the GRUB bootloader and your kernel using the program grub-mkrescue. You may need to install the GRUB utility programs and the program xorriso (version 0.5.6 or higher).

当使用 grub-mkrescue 制作 ISO 映像时,无法启动的 ISO 通常是 Xorisso 安装丢失的结果。如果 grub-mkrescue 运行但根本不生成 ISO,则可能缺少 GRUB 组件。为确保您安装了所有 GRUB 和 Xorriso 组件,请在现代 Ubuntu 版本上安装组件:

sudo apt-get install grub2-common grub-pc xorriso 

然后尝试在 VirtualBox 中重建并重新运行您的 ISO 映像。