开始我们了不起的旅程!
芜湖,大伙好!现在终于我们可以安心的坐下来,开始我们了不起的Cinux操作系统的旅程了!
感谢大伙愿意陪我唠唠嗑,因为这个旅途注定没有终点!操作系统作为现代软件运行的一个重要基石,我不认为Operating System自己是具备终点的,直到 LLM 爆发的今天,操作系统仍然在LLM的辅助下,以Linux为例子,正在修复大量曾经没有被察觉到的bug,并且为上层软件提供更加迅猛,疾速,安全的运行环境。笔者也是在LLM的帮助下,完成了这个了不起的操作系统的旅程(之前对于我来说,写一个X64的OS,简直就是痴人说梦,没时间,也菜的抠脚= =)
我相信您在旅程的前夜,已经收拾好了东西。还请您点齐东西!
- 我相信您应该理解了工具链的概念了!当我们拿出gcc, nm, objdump快速冒烟看东西的时候,您不会发出疑问:我靠这是啥!
- 我相信您掌握了基本的汇编基本功,而且,不会对之感到陌生~
- 我也相信您可以理解基本的CMake了!当然您要是觉得xmake或者是其他的构建系统也很有意思,欢迎挑战自己重新组织。其实也是我希望的!
- 打开您的背包!一台装好 GCC 与 CMake 的 Linux 机器肯定是有的。您问Windows如何呢?实在不太好意思。我对Windows的mingw和MSVC实在不太感冒。正如同我在README说的那样。如果您喜欢的话,欢迎补充教程:Windows如何跟随开始Cinux的活!
- 命令行不生疏哦~
哈?您问我工具链怎么装、为什么挑这几样,前置卷的工具链课讲过啦!
Q: 可以不看嘛,我想缺啥补啥? A: 当然可以,我们仍然会轻微的带过一下,您一下子反应不过来,再去对应的地方慢慢补充~
Why Cinux? 咱们市场上这么多教程,吃饱了撑着看您的嘛
其实,Cinux并不是第一代,笔者冲锋了三次操作系统。第一次是笔者自己跟随郑刚老师书写的《操作系统还原真相》,也是如果您偏好于C语言和传统的nasm汇编的话,可以跟随这本书,当然代价就是享受gcc 4.6.2,也就是十几年前的工具链。
地址在这里哇,您从这儿进:CCOperateSystem
第二次就是CCOperatingSystemX64,嗯,失败品,连CLI都没出,非要考古的朋友,欢迎到我的Github找找喔。
第三次,就是隔壁的Cinux,当然也是我们这一次的主角,Cinux!
Cinux 无教学站的操作系统地址,您也从这儿进:Cinux
现在,是笔者希望化简一下自己跟LLM,无数的OS网站参考和拼杀中,捞出来的一次希望可以在阅读上,稍微顺一些的一个小旅记。
出发之前,咱们还是走平坦的大道。
其实很多教程起手是让您开始美好的Bootloader,我说不太好。其实建立起来一些规范,和概念,甚至是测试,会比咱们直接动手强多了。
这是因为笔者之前就发现一个很严肃的问题,很多教程您跟着做的时候,很有可能会出一些偏差,最后孩子们这个CPU怎么疯狂死机和重启了。如果进入了长模式开启了CPU的异常处理等等,那就是天天见美好的Page Fault,或者是Double Fault,反正您看到的任何的抽象的错误。
所以,在写下第一行引导代码之前,咱们把四件武器磨好:
- Result——让"出错了"从一个含糊的返回值,变成一个有名字、有类型的东西。
- 格式引擎——把数字、指针、字符串变成可读的文本,只管排版,不管送去哪。
- 断言——让"绝不该发生的事"发生时,死得明明白白。
- 测试框架——让每一次改动在几秒内被验证,而不是开一轮虚拟机碰运气。
四件武器共同回答同一个问题:出了事,咱们能不能在第一时间知道——事发了、叫什么、在哪。答案都是"能",本站就算站稳了。
以上!咱们走吧。