我的第一个操作系统是由咖啡因加油的。
这是一个学习项目,我们将看到它走了多远。当我说“由咖啡因燃料”时,我的意思是咖啡因,而不是一些新的OS建筑框架。但这对于操作系统构建框架来说是一个很酷的名字。
我正在Ubuntu18.04 LTS运行此项目。我正在使用PC上的Visual Studio使用远程版本,但是您可以直接在Ubuntu机器上使用Makefile。我的操作系统目前正在Ubuntu的VM中运行。我不会推荐运行此“金属上”,因为错误可以通过更改BIOS和ROM数据来将计算机砖砌起来。以下是我安装的软件包以使该项目运行:
MakeFile每次运行时都会在同一位置产生ISO文件。在VirtualBox中,我用512MB RAM,无VDK/VMDK制作了一个名为Caffeineos的VM,并用光学媒体指向ISO文件和已选中的“ Live CD”框。
即使是ISO文件,每个构建都会更改,VM将始终转到同一位置以查找ISO并从中启动。
现在我有一个可引导的内核。除了打印出OS名称外,它无能为力。到目前为止,我已经遵循了大程,但是很少有人涵盖这一点。没有我发现使用C ++,只有C。
我正在研究下一个内核的下一部分是什么。我的猜测是动态记忆。目前,我正在使用VGA地址将文本写入屏幕。我还没有找到输入。正如我所说,教程并没有真正摆脱可引导的“ Hello World”操作系统。
我已经检测到了RAM,并获得了使音节的值(LOW MEM〜 = 640KB,LOW+HI〜 = 512MB),所以我真的很高兴。我还能够通过将UINT32_T施放到const char*中并在指针上打印数组来从引导加载程序中获得一个字符串。我一直在使用gnu.org站点的Multiboot.h规范。 Multiboot.h文件包含与启动加载器(GRUB2.02)的信息封锁相匹配的Emmpty struct和typedef声明。通过了解封锁,我可以将指针投入到启动加载程序所需的数据中。