如何制作“ Hello world”内核

时间:2019-05-27 19:10:23

标签: linux ubuntu assembly osdev grub

我跟随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子系统

1 个答案:

答案 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映像。