我的第一個操作系統是由咖啡因加油的。
這是一個學習項目,我們將看到它走了多遠。當我說“由咖啡因燃料”時,我的意思是咖啡因,而不是一些新的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聲明。通過了解封鎖,我可以將指針投入到啟動加載程序所需的數據中。