创build一个OS似乎是一个巨大的项目。 怎么会有人开始呢? 例如,当我将Ubuntupopup到我的驱动器中时,我的电脑如何才能运行它? (我猜这是我真正想知道的。) 或者,从另一个angular度来看,磁盘上可能存在的最小字节数量仍然是“运行”的操作系统? (对于这个问题,我很遗憾,我对这个问题一无所知,所以我不能说得很具体,我假装知道计算机是如何工作的,但是我对这个问题却一无所知。 )
这可能是徒劳的,因为我知道编写一个操作系统是非常复杂的(尤其是自己)。 我不期望构build下一个Linux或Windows。 我知道这将是可怕的,越野车,并将无法正常工作,但没关系。 我想自己写一切,在大会 , C ,和(一些) C + + 。 这是一个未来的项目,因为我现在正在忙于其他一些事情,并没有立即有时间,但我想我现在会问,所以也许我可以得到很多答案,它可以build立并成为这种方法的一个有用的资源(我所看到的其他一切都涉及到使用minix,使用现有的引导程序,在虚拟引导程序中构build它等)。 我想用显示器,键盘和鼠标设置我的旧桌面之一,并开始在一个空白的硬盘驱动器上工作。 我想学习如何编写自己的bootloader(我已经find了很多关于这方面的资源,但为了完整性,请添加一些好的资源),我自己的USB驱动程序(如果有必要的话),CD驱动程序(如果这是必要的)等一切,从头开始。 如何将代码放到电脑上? 最好用软盘来做吗? 大多数计算机是否可以通过USB棒进行操作? 我需要什么样的驱动程序?你能提出一些build议吗? 启动序列后 – 那么是什么? 如何进入保护模式等 如何在没有操作系统的帮助下pipe理内存? 我只是使用任何我想要的地址? 不需要初始化? 我无疑会遇到什么会迷惑我吗? 我怎样才能使它不是一个命令行O / S,而是一个graphics? 什么是build立在graphics操作系统上? 比如,我该如何做一些事情,如命令行,字体和顶部的图片? 我在哪里可以阅读有关设置多任务环境? (即,有两个graphics式的命令行并排运行)。 我将如何build立一种窗口系统? 一旦设置简单的多任务处理,如何在屏幕上显示graphics? 相信我,我明白这是一个非常复杂的项目,我可能永远不会完成它或任何使用它写任何东西。 还有很多其他的东西,我没有提到,如果你想到的话,也可以随意添加。 请为每个答案放上一个“主题”,例如,USB驱动程序,然后可能是资源列表,要注意的东西等等。 此外,请不要build议build立另一个操作系统或预先存在的代码。 我知道我会读很多预先存在的代码(比如linux内核,示例资源,现有的驱动程序等等),但是最终我想自己写所有的代码。 我知道我应该从别的东西上来,而且还有很多其他的问题,如果我改变主意,走上这条路,我就能读懂。 但是这一切都是关于从头开始整个事情。 更新 我有很多很好的答案,主要是关于引导过程,文件系统和各种现有的项目,以供参考。 有关如何获得graphics的任何build议? 不同的video模式,以及如何与他们合作等?
我打算编写一个操作系统,而我对操作系统的了解不多。 有什么好的资源或书籍可供我学习? 你有什么build议?
有一件事我一直想做的是开发我自己的操作系统(不一定像Linux或Windows那样的花哨,但是比我已经做的一个简单的引导装载程序更好)。 我很难find资源/指南,通过编写一个简单的“Hello World”操作系统。 我知道很多人可能会推荐我看看Linux或BSD; 但是像这样的系统的代码库(可能)是如此之大,我不知道从哪里开始。 有什么build议么? 更新:为了让那些通过Google登陆这个post的人更容易一些操作系统开发资源: 编写自己的操作系统 (感谢Adam) Linux从零开始 (谢谢John) SharpOS(C#操作系统) (感谢lomaxx) Minix3和Minix2 (感谢Mike) 操作系统开发维基和论坛 (谢谢史蒂夫) BonaFide (感谢史蒂夫) 麸 (谢谢史蒂夫) 滚动自己的玩具UNIX克隆操作系统 (感谢史蒂夫) Broken Thorn OS开发系列 其他资源: 我find了一个名为MikeOS的好资源,“MikeOS是一个学习工具,可以演示简单的操作系统是如何工作的,它使用16位实模式访问BIOS,所以它不需要复杂的驱动程序” 更新11/14/08 我在Freebyte的指南中发现了一些资源…免费和非免费的操作系统 ,链接到工具包,如OSKit和ExOS库。 这些对于开始操作系统开发看起来非常有用。 更新2/23/09 里卡东京在这个问题上推荐nanoos 。 Nanoos是用C ++编写的操作系统。 更新3/9/09 Dinah为有抱负的操作系统开发人员提供了一些有用的Stack Overflow讨论: 创build自定义操作系统的路障讨论了在开发OS和OS开发时可能遇到的缺陷,这是一个更为一般的讨论。 更新7/9/09 LB提供了Pintos项目的链接, Pintos项目是为学习操作系统开发的学生devise的教育操作系统。 更新7/27/09(仍然强劲!) 我偶然发现了来自伯克利的在线操作系统课程 ,有23个讲座。 TomOS是MikeOS的一个分支,包括一点内存pipe理器和鼠标支持。 作为MikeOS,它被devise成一个教育项目。 它是用NASM汇编写的。 2009年8月4日更新 我find了幻灯片和其他材料 ,以及上面列出的在线伯克利讲座。 更新8/23/09 所有问题在stackoverflow上标记为osdev […]