大家好,本教程将是对现有教程的更新扩展,该教程更多地侧重于64位X86_64体系结构。这并不是要对C或组装的介绍,因此您可能想先学习其他地方。我们竭尽所能正确记录所有内容,因此,如果您不了解某些内容,那么您可能需要回去几章。
它尚未完成,但是它已经到了我们认为可能会有所帮助的地步。
该教程针对的是对C和组装有一般了解的人,但不一定是计算机专家。它的设计目的是尽可能访问,因此有时可能会像我们过度解释某些概念一样感觉(这没关系)。但是,如果您发现自己无可救药,请告诉我们。我们创建了这个项目,因为我们不喜欢OS开发中看到的守门,我们很乐意修改我们的解释或将您指向另一个可能更有帮助的资源。
如果您想为该项目做出贡献,或者添加一些内容,请提交拉动请求。我会尽快与他们联系:)
本教程使用LLVM编译器套件,包括clang和ld.lld 。如果您没有安装它们,则需要这样做并将其添加到您的路径中。我们还将nasm用于汇编器, qemu-system-x86_64用作仿真器。可选地, gdb可用于调试内核代码。虽然不需要,但本教程使用Shell脚本来使构建和调试更加容易。我们强烈建议您在/bin/bash上安装了bash (或至少在那里链接)。如果不是,则可以使用bash命令运行脚本。
您应该能够在终端窗口中运行上述所有命令,而无需指定完整的路径。如果不能,则可能需要安装它们并将其添加到您的路径中。该教程已在MacOS(Catalina和Big Sur)以及Ubuntu(20.04)上进行了测试。尽管在大多数 *NIX机器上都应该良好运行,但没有其他操作系统得到正式支持。
注意:MACOS
gdb内核(ELF64)的调试符号很难。您可能需要将调试输出级别更改为makefiles中的-glldb,然后使用它,或从源构建新的gdb。
就是这样!无需安装任何交叉局限器或其他工具,因为Clang已经涵盖了大多数。祝您好运,如果您有任何麻烦,请随时让我们知道!