大家好,本教程將是對現有教程的更新擴展,該教程更多地側重於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已經涵蓋了大多數。祝您好運,如果您有任何麻煩,請隨時讓我們知道!