如何使用 asm 和 c 创建多级引导加载程序?

How to create a multistage bootloader with asm and c?

我想创建一个简单的 32 位基于文本的操作系统。

引导程序:

首先我想创建一个多级引导加载程序。

第 1 阶段:汇编代码(NASM-编译器)

第 2 阶段:C(GCC 编译器)

内核:

然后它应该加载应该用 C 编写的内核(GCC 编译器)

我也想知道如何正确编译和执行它。

模拟器应该是Qemu

显示 "Hello world" 的示例 32 位操作系统会有所帮助。

不要编写自己的引导加载程序。 配置并使用现有的引导加载程序,可能 GRUB。这将使您的玩具 OS 更容易使用(对您和其他用户而言)。

阅读 http://osdev.org/ 因为他们有很多关于 OS 在 PC 上构建的资源(包括 hello world OS)。

也阅读一些很好的操作系统书籍(例如 Operating Systems: Three Easy Pieces). You'll find out that there cannot be very simple OSes. See also 答案。

此外,至少要非常熟练地使用 POSIX 和 Linux 系统编程(首先阅读 Advanced Linux Programming)。