关于 "操作系统实现" 系列的使用和学习 及 TextOS项目调整 的若干说明

关于系列
两个仓库:
https://github.com/ljQAQ233/textos-dev
https://github.com/ljQAQ233/textos-pre
前者是项目由后者转变而来的相对最终形态,是与 B站 视频有这相对应提交且有序的仓库.
后者变基较多, 仅建议在线浏览


当你看见这篇文章的时候,初进行架构调整已经成为了过去, 主要是与 Edk2 项目的耦合性太强了,再加上 UdkDebugger 的烫手,况且在 Github 的统计页面上也不好看......
更新
将 Boot 模块改成 Edk2完整的子模块 与 SigmaBootPkg 共存
为什么要用完整的 Edk2 子模块?
因为如果只用 BaseTools 的部分, UdkDebugger 的意义也会不太体现(UdkDebugger 本身具有调试固件的能力,即便不能调试自己......).有了完整的项目, 我们就可以编译 Ovmf 进行 Uefi 内核的调试, 为此, 我还编写了 Ovmf 适配的 Makefile, 使用以下命令编译 3个版本:
编译后的固件输出位于 Src/Base
而现在原来的主分支已经成为了 Roots 分支, 即起源分支, 以后或许会转移, 但始终只读.

既然有了子模块, 不如使用完整的 Edk2
Edk2 为什么使用的是什么版本?
是来自 罗冰 的 vUdk2018 , 长期内不改用新版本, 且是没有历史记录的
那为什么要去除 UdkDebugger 反而要自己安装?
所以还是请各位自己安装吧
依赖项
Arch Linux 邪教:
Debian / Ubuntu:
bear 负责 compile_commands.json 生成
Let's start!
手动初始化
脚本初始化
如出现子模块拉取失败的情况,可检查网络, 或修改 .gitmodules 中的 url, 改成可用的 url 或者添加Github代理前缀(如 https://ghproxy.com/)

克隆 "同步" 仓库
拉取子模块:
BaseTools :
sudo 密码:

脚本初始化:
启程!
编译 compile_commands.json :
直接运行:
调试 Boot :
对于以后要加的 或者 预发布仓库 内核调试
注意!!!
如果想要删除 .git目录, 请在删除之后执行:
否则, CheckModify模块 将无法使用(报废 I am Free!!!)
规划
名称来源 : 想的
内涵:交给处于不久的将来的我们

SigmaBoot :
Protocol -> 文件操作->图形基础操作->数据结构-Bmp位图->Logo显示->Ini文件解析->Elf文件->进入内核->内核页表初始化
TextOS Kernel :
启程-内核组织 -> 调试 -> 图像操作 -> 文字显示及基础控制台 -> VSPrint & PrintK -> 基础字符串处理 -> 内核全局描述符表 -> 中断全局描述符表 -> 输入输出及串口 -> 物理内存管理 -> 虚拟内存映射 -> 堆内存 -> 内核重映射 -> Acpi (高级配置及电源管理接口) -> Apic (高级可编程中断控制器) 及 外中断 -> 8254 & Apic Timer -> 任务 -> ...
TODO
改掉需要密码的地方
串口输出重定向
此止

使用 TECH OTAKUS SAVE THE WORLD 完全是因为我感觉这句话很好 ◕‿◕

Thanks for Reading!