欢迎光临散文网 会员登陆 & 注册

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

2023-07-31 14:40 作者:Maouai233  | 我要投稿

关于系列

两个仓库:

  1. https://github.com/ljQAQ233/textos-dev

  2. 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!

  1. 手动初始化

  2. 脚本初始化

如出现子模块拉取失败的情况,可检查网络, 或修改 .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

  1. 改掉需要密码的地方

  2. 串口输出重定向

此止

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

Thanks for Reading!

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

分享到微博请遵守国家法律