欢迎来到...呃... Brightsystem?
这是一个完全从头开始写的X86_64 OS,由您真正制作。
该项目是在没有Github CodeStealer,OpenAI的ChatpThief或其他类似内容搜索内容的预测算法的情况下编写的。
TLDR:中间 - 局部灾难!乐趣!
_old具有功能性的内核,该内核使用了Phil-Opp的出色库和其他一些库。该代码的记录不是很高,但并不是太复杂了,因此应该很可读。它是在我的HighSchool上为一个很棒的OS开发论坛而设计的。
其他一切都是我的无依赖性重写。目前,它只有一个可以输入64位模式的BIOS引导加载程序。下一步是实现精灵解析器,然后是精灵加载程序,然后加载内核(这仅是Elf文件)。
新版本的BS有充分的文献记载,包括用于进一步研究的资源。我的一部分目标是制定这项出色的演示代码,以供将来的程序员参考和学习。
每个文件夹都有一个读数,希望可以自言自语,但是这里有一个粗略的内容:此存储库:
boot :BS的引导程序中的所有板条箱。kernel :BS'BERNEL(目前为空直到写精灵装载器)。lib :BS使用的辅助库。这具有构建工具,Frieren(WIP Elf Loader)和一个公共库(很快将分为多个板条箱)。这些板条箱有自己的库,因为它们在BS中被多个板条板使用(例如,Bootloader加载精灵,但最终的操作系统也将能够使用)。qemu :将BS构建为最终磁盘并在Qemu启动的板条箱。对于具有依赖性的旧功能版本的旧版本,请在_old文件夹中运行cargo r 。
新版本使用我的自定义构建系统Bargo,因此您需要先安装该系统(不怕 - Bargo只有1个依赖项,无依赖性的TOML PARSER,并且应该在几秒钟内进行编译)。 Bargo是货物周围的包装纸,因此您可以使用它几乎完全相同的方式bargo b构建, bargo r运行, -r以释放模式,等等。
如果您想知道为什么BS使用Bargo代替货物,那是因为货物没有我需要的所有功能。我需要后构建脚本,并且能够将build-std用于多个目标,因为引导加载程序的目标与内核和OS不同。我尝试了几个小时,但无法提出一种在香草货物中实施此功能的理智方式。
这两个版本都在QEMU中运行,因此请确保首先安装了该版本。如果您想手动构建并运行它,则使用下命令的命令基本上归结为: cargo b; qemu-system-x86_64 -drive format=raw,file=target/bs.bin,index=0 。对于旧版本,您需要加载文件_old/disk.bin而不是target/bs.bin 。