这可能是徒劳的,因为我知道编写操作系统非常复杂(尤其是自己编写)。
我不希望构建下一个 linux 或 windows。
我知道这会很可怕,而且有问题,而且不会起作用,但这没关系。
我想自己写所有东西,用Assembly、C和(一些)C++。
这是一个未来的项目,因为我现在正忙于其他事情,没有时间,但我想我现在会问它,所以也许我可以得到很多答案,它可以建立并成为这种方法的有用资源(我所看到的所有其他事情都涉及构建 minix,使用现有的引导加载程序,在虚拟引导程序中构建它等)。
我想用显示器、键盘和鼠标设置我的旧台式机之一,并开始在空白硬盘驱动器上工作。
我想学习如何编写自己的引导加载程序(我已经找到了很多关于这方面的资源,但为了完整起见,仍然请添加一些好的),我自己的 USB 驱动程序(如果有必要的话),CD 驱动程序(如果有必要的话) 等一切,从头开始。
怎么把代码放到电脑上?最好用软盘来做吗?大多数计算机都可以通过 USB 记忆棒完成吗?
我需要什么驱动程序,你能建议任何关于构建这些驱动程序的参考吗?
在引导序列之后——然后呢?我如何进入保护模式等。
如何在没有操作系统帮助的情况下管理内存?我只是使用我想要的任何地址吗?不需要初始化?
毫无疑问,我会遇到什么让我感到困惑的事情?
我怎样才能让它既是命令行操作系统,又是图形操作系统?
什么是构建的图形操作系统?就像,我将如何做一个命令行、字体和顶部的图片?
我在哪里可以阅读有关设置多任务环境的信息?(即,有两个类似图形的命令行并排运行)。
How would I set up a sort of windowing system? How do I display graphics on the screen once simple multitasking is set up?
Believe me, I understand that this is a very complicated project, and I probably will never get around to completing it or writing anything on it of any use.
There are lots of other pieces to this I haven't mentioned, if you think of any, feel free to add those too.
Please put one "topic" per answer--for example, USB drivers, and then maybe a list of resources, things to look out for, etc.
Also, please don't suggest building off of another O/S or pre-existing code. I know I will read a lot of pre-existing code (such as the linux kernel, or example resources, existing drivers, etc) but ultimately I want to do all the writing myself. I know I should build off of something else, and there are lots of other questions on SO about that that I can read if I change my mind and go that route. But this one is all about doing the whole thing from scratch.
Any suggestions on how to get it graphical? Different video modes and how to work with them, etc?