關(guān)于 "操作系統(tǒng)實(shí)現(xiàn)" 系列的使用和學(xué)習(xí) 及 TextOS項(xiàng)目調(diào)整 的若干說明

關(guān)于系列
兩個(gè)倉(cāng)庫(kù):
https://github.com/ljQAQ233/textos-dev
https://github.com/ljQAQ233/textos-pre
前者是項(xiàng)目由后者轉(zhuǎn)變而來的相對(duì)最終形態(tài),是與 B站 視頻有這相對(duì)應(yīng)提交且有序的倉(cāng)庫(kù).
后者變基較多, 僅建議在線瀏覽


當(dāng)你看見這篇文章的時(shí)候,初進(jìn)行架構(gòu)調(diào)整已經(jīng)成為了過去, 主要是與 Edk2 項(xiàng)目的耦合性太強(qiáng)了,再加上 UdkDebugger 的燙手,況且在 Github 的統(tǒng)計(jì)頁(yè)面上也不好看......
更新
將 Boot 模塊改成 Edk2完整的子模塊 與 SigmaBootPkg 共存
為什么要用完整的 Edk2 子模塊?
因?yàn)槿绻挥?BaseTools 的部分, UdkDebugger 的意義也會(huì)不太體現(xiàn)(UdkDebugger 本身具有調(diào)試固件的能力,即便不能調(diào)試自己......).有了完整的項(xiàng)目, 我們就可以編譯 Ovmf 進(jìn)行 Uefi?內(nèi)核的調(diào)試, 為此, 我還編寫了 Ovmf 適配的 Makefile, 使用以下命令編譯 3個(gè)版本:
編譯后的固件輸出位于 Src/Base
而現(xiàn)在原來的主分支已經(jīng)成為了 Roots 分支, 即起源分支, 以后或許會(huì)轉(zhuǎn)移, 但始終只讀.

既然有了子模塊, 不如使用完整的 Edk2
Edk2 為什么使用的是什么版本?
是來自 羅冰 的 vUdk2018 , 長(zhǎng)期內(nèi)不改用新版本, 且是沒有歷史記錄的
那為什么要去除 UdkDebugger 反而要自己安裝?
所以還是請(qǐng)各位自己安裝吧
依賴項(xiàng)
Arch Linux 邪教:
Debian / Ubuntu:
bear?負(fù)責(zé) compile_commands.json 生成
Let's start!
手動(dòng)初始化
腳本初始化
如出現(xiàn)子模塊拉取失敗的情況,可檢查網(wǎng)絡(luò), 或修改?.gitmodules 中的 url, 改成可用的 url 或者添加Github代理前綴(如 https://ghproxy.com/)

克隆 "同步" 倉(cāng)庫(kù)
拉取子模塊:
BaseTools :
sudo 密碼:

腳本初始化:
啟程!
編譯 compile_commands.json :
直接運(yùn)行:
調(diào)試 Boot :
對(duì)于以后要加的 或者 預(yù)發(fā)布倉(cāng)庫(kù) 內(nèi)核調(diào)試
注意!!!
如果想要?jiǎng)h除 .git目錄, 請(qǐng)?jiān)趧h除之后執(zhí)行:
否則, CheckModify模塊?將無法使用(報(bào)廢 I am Free!!!)
規(guī)劃
名稱來源 : 想的
內(nèi)涵:交給處于不久的將來的我們

SigmaBoot :
Protocol -> 文件操作->圖形基礎(chǔ)操作->數(shù)據(jù)結(jié)構(gòu)-Bmp位圖->Logo顯示->Ini文件解析->Elf文件->進(jìn)入內(nèi)核->內(nèi)核頁(yè)表初始化
TextOS Kernel :
啟程-內(nèi)核組織 -> 調(diào)試 -> 圖像操作 -> 文字顯示及基礎(chǔ)控制臺(tái) -> VSPrint & PrintK -> 基礎(chǔ)字符串處理 -> 內(nèi)核全局描述符表 -> 中斷全局描述符表?->?輸入輸出及串口 -> 物理內(nèi)存管理 -> 虛擬內(nèi)存映射 -> 堆內(nèi)存 -> 內(nèi)核重映射 -> Acpi (高級(jí)配置及電源管理接口) -> Apic (高級(jí)可編程中斷控制器) 及 外中斷 -> 8254 & Apic Timer -> 任務(wù)?-> ...
TODO
改掉需要密碼的地方
串口輸出重定向
此止

使用 TECH OTAKUS SAVE THE WORLD 完全是因?yàn)槲腋杏X這句話很好????

Thanks for Reading!