操作系统就是让人与电脑硬件进行互动。操作系统是由成百上千条代码构成的,通常由C、C++和集成程序语言编写而成。
步骤
1:开始之前学会编程。集成语言是必须的。另一种补充的低级语言,如C语言也是强力推荐的。
2:选择你想把你的操作系统搭载到什么媒体。可以是CD驱动、DVD驱动、闪盘驱动、硬盘驱动,或是另一台电脑驱动。
3:决定你想让你的操作系统干什么。是否整个操作系统都配有图形用户界面(GUI)或是更加动漫式的。开始之前你需要了解你做的是哪个方向。
4:选择你的操作系统支持哪种处理器平台。 AI-32 和x86_64 是最常用的个人电脑平台,你最好选择它们。
5:选择是否由自己从头做起,还是按照现有的核心自己往上建立。比如,Linux核心就是设计给那些想要在其之上建立他们自己的Linux版本的人的。
6:选择是否要使用自己的引导装载程序或做一个预创建的程序,比如统一引导装载程序 (GRUB)。由于编写你的引导装载程序需要扩展对硬件和BIOS的知识,因此要把它推到实际的核心编程之后。
7:决定用哪种程序语言。尽管用如Pascal或BASIC语言也可以创建操作系统,但你最好还是用C语言或集成语言。集成语言绝对是必须的,操作系统至关重要的部分需要它。另一方面,C++语言也是关键的,但它需要完整的操作系统来运行。
要用C或C++代码编写操作系统,当然,你需要使用一个编译程序。因此,不论这些指南是软件附带的,还是可以从经销商的网上下载,你都应该阅读用户指南/手册/文档,来选择你的C/C++编译程序。你也需要了解关于编译程序的很多复杂问题,对于C++,你应该了解编译程序的识别编码模式和它的ABI。你需要懂多种可执行的格式(ELF、PE、COFF、纯二进制等等,并且要懂得Windows专有的格式,PE (.exe)是受版权保护的。
8:选择你的应用程序界面(API)。一个好的API选择就是POSIX,因为它已经编译好了。所有的Unix系统都部分支持POSIX,因此,把Unix程序植入你的操作系统并不重要。
9:决定你的设计。有单片核心和微核心可供选择。单片核心可执行核心上的一切服务,而微核心是一个小的核心,其结合了用户后台进程,进程可以执行服务。通常而言,单片核心更快,但是微核心故障隔离和可靠性更好。
10:考虑用团队发展和工作。这种方式可以花更少的时间解决更多的问题,而且可以更快造出更好的操作系统。br>
11:不要完全擦除你的硬盘。记住,擦除你的硬盘会永久清除你的所有数据!用GRUB或其他启动管理器来用另一个操作系统做双启动系统,直到你自己的操作系统完全可以用了。
12:从小地方开始。在进行内存管理和多进程任务之前,从小地方开始,如现实文本和中断。
13:保存最新工作源的备份。这样可以预防你当前的操作系统版本或是你当前的工作出问题。如果你的电脑死机且无法启动了,用副本进行工作是个好主意,这样就可以排除故障了。
14:考虑用虚拟机测试你的新操作系统。不要每次做出修改后就重启电脑,而是要把文件从你的电脑传输到虚拟机上,你可以用虚拟机应用来运行你的操作系统,同时当前的操作系统也是运行的。VM应用包括VMWare (它也有一个免费使用的服务器产品),另一个开源的选择就是Bochs,微软虚拟PC(不能与Linux兼容),还有xVM VirtualBox。
15:发布一个"候补版本",这样可以让用户报告给你操作系统的潜在问题。
16:一个操作系统可以是用户友好型的,因此增添一点用户友好特点,把这些整合进你的设计。
小提示
如果你想让你的系统可实行,确保把安全特征作为你最优先的选择。
所有的建构都完成后,选择你是否需要发布代码为开源代码,还是保留专利。
不要为了学习编程而开始做一个操作系统。如果你还不了解C、C++、Pascal或某些其他适合的语言,包括指示器处理,低级字节处理,字节转换,内联集成语言等,那么你还没有准备好建立操作系统。
使用网页,比如OSDev 和OSDever可以帮助你建立自己的操作系统。请记住,OSDev.org社区更倾向于让你使用他们的wiki,而不是加入其论坛。如果你决定加入论坛,这有一些预 备知识:你需要精通C或C++,还有x86集成语言。你也要了解一般的和复杂的程序概念,如Linked Lists、Queues等等。 OSDev社区按照其规则明确表示,此论坛不适合那些临时程序员。如果你想构建一个操作系统,也并不是非得要求你是个编程大神。但你也需要阅读你所选的处理器体系结构的处理器手册。不论是x86(因特尔)、ARM、MIPS还是PPC等等。处理器体系手册很容易用谷歌搜索引擎找到(“因特尔手册”,“ARM手册”等等)。不要加入OSDev.org论坛问一些很简单的问题。通常的回答就是“去阅读他妈的手册”。你应该去阅读维基百科,里面还有你想使用的多种工具手册。
如果你想做得简单,考虑下Linux 版本,比如Fedora Revisor、Custom Nimble X、Puppy Remaster、PCLinuxOS mklivecd或SUSE Studio 和SUSE KIWI。然而,你创建的操作系统属于提供服务器的公司(尽管你有权力免费发布,并按照你想的在GPL下修改、运行系统)。
检查潜在的问题和其他漏洞。这些都会影响你的操作系统设计。
建立一个新的分区用于编写操作系统是个好选择。
警告
你在两周内就会有一个完整的系统。做一个可以启动的操作系统,这就是一个很酷的东西。
粗心大意地把操作系统写入硬盘可能导致硬盘完全崩溃。小心。
不要期待一个合适的操作系统很容易建立。有很多相互依赖的复杂问题。比如说,要做一个操作系统,需要处理多种处理器,你的内存管理器必须要“锁定”机器,防止多进程处理器从同样资源同时进入。用于此的“锁定”需要在进程表中出现,从而确保在任何一个时刻都只有一个进程进入关键资源,而其他进程则在等待。但是进程表取决于一个内存管理器。这就是死机的一种情况。没有什么标准方法来解决这类问题;每一个操作系统程序都需要足够的技术来解决它的问题。
如果你做了一些没头脑的事情,比如把随机字节写入了随机I/O接口,你就会使得系统死机,而且可能(理论上)烧掉你的硬盘。
额外的资源
手册: Linux From Scratch
引导装载程序: GRUB
虚拟机应用: Bochs、VM Ware、XM Virtual Box
处理器手册: Intel manuals
操作系统建立网站: OSDev、OSDever
你需要准备
一台电脑
一个用来建构结构体系的CPU
对于虚拟机器的足够的内存(RAM)
一个“主”操作系统(在汇编源代码的最初阶段,用来建构源代码并打包程序,最终你自己的操作系统将成为主系统)
句法润饰代码编辑器(如果你没有集成发展环境,就用它)
一个编译程序
一个CD/DVD 驱动