1、開始之前學(xué)會(huì)編程。集成語言是必須的。另一種補(bǔ)充的低級(jí)語言,如C語言也是強(qiáng)力推薦的。
2、選擇你想把你的操作系統(tǒng)搭載到什么媒體。可以是CD驅(qū)動(dòng)、DVD驅(qū)動(dòng)、閃盤驅(qū)動(dòng)、硬盤驅(qū)動(dòng),或是另一臺(tái)電腦驅(qū)動(dòng)。
3、決定你想讓你的操作系統(tǒng)干什么。是否整個(gè)操作系統(tǒng)都配有圖形用戶界面(GUI)或是更加動(dòng)漫式的。開始之前你需要了解你做的是哪個(gè)方向。
4、選擇你的操作系統(tǒng)支持哪種處理器平臺(tái)。 AI-32 和x86_64 是最常用的個(gè)人電腦平臺(tái),你最好選擇它們。
5、選擇是否由自己從頭做起,還是按照現(xiàn)有的核心自己往上建立。比如,Linux核心就是設(shè)計(jì)給那些想要在其之上建立他們自己的Linux版本的人的。
6、選擇是否要使用自己的引導(dǎo)裝載程序或做一個(gè)預(yù)創(chuàng)建的程序,比如統(tǒng)一引導(dǎo)裝載程序 (GRUB)。由于編寫你的引導(dǎo)裝載程序需要擴(kuò)展對(duì)硬件和BIOS的知識(shí),因此要把它推到實(shí)際的核心編程之后。
7、決定用哪種程序語言。盡管用如Pascal或BASIC語言也可以創(chuàng)建操作系統(tǒng),但你最好還是用C語言或集成語言。集成語言絕對(duì)是必須的,操作系統(tǒng)至關(guān)重要的部分需要它。另一方面,C++語言也是關(guān)鍵的,但它需要完整的操作系統(tǒng)來運(yùn)行。要用C或C++代碼編寫操作系統(tǒng),當(dāng)然,你需要使用一個(gè)編譯程序。因此,不論這些指南是軟件附帶的,還是可以從經(jīng)銷商的網(wǎng)上下載,你都應(yīng)該閱讀用戶指南/手冊(cè)/文檔,來選擇你的C/C++編譯程序。你也需要了解關(guān)于編譯程序的很多復(fù)雜問題,對(duì)于C++,你應(yīng)該了解編譯程序的識(shí)別編碼模式和它的ABI。你需要懂多種可執(zhí)行的格式(ELF、PE、COFF、純二進(jìn)制等等,并且要懂得Windows專有的格式,PE (.exe)是受版權(quán)保護(hù)的。
8、選擇你的應(yīng)用程序界面(API)。一個(gè)好的API選擇就是POSIX,因?yàn)樗呀?jīng)編譯好了。所有的Unix系統(tǒng)都部分支持POSIX,因此,把Unix程序植入你的操作系統(tǒng)并不重要。
9、決定你的設(shè)計(jì)。有單片核心和微核心可供選擇。單片核心可執(zhí)行核心上的一切服務(wù),而微核心是一個(gè)小的核心,其結(jié)合了用戶后臺(tái)進(jìn)程,進(jìn)程可以執(zhí)行服務(wù)。通常而言,單片核心更快,但是微核心故障隔離和可靠性更好。
10、考慮用團(tuán)隊(duì)發(fā)展和工作。這種方式可以花更少的時(shí)間解決更多的問題,而且可以更快造出更好的操作系統(tǒng)。br>
11、不要完全擦除你的硬盤。記住,擦除你的硬盤會(huì)永久清除你的所有數(shù)據(jù)!用GRUB或其他啟動(dòng)管理器來用另一個(gè)操作系統(tǒng)做雙啟動(dòng)系統(tǒng),直到你自己的操作系統(tǒng)完全可以用了。
12、從小地方開始。在進(jìn)行內(nèi)存管理和多進(jìn)程任務(wù)之前,從小地方開始,如現(xiàn)實(shí)文本和中斷。
13、保存最新工作源的備份。這樣可以預(yù)防你當(dāng)前的操作系統(tǒng)版本或是你當(dāng)前的工作出問題。如果你的電腦死機(jī)且無法啟動(dòng)了,用副本進(jìn)行工作是個(gè)好主意,這樣就可以排除故障了。
14、考慮用虛擬機(jī)測(cè)試你的新操作系統(tǒng)。不要每次做出修改后就重啟電腦,而是要把文件從你的電腦傳輸?shù)教摂M機(jī)上,你可以用虛擬機(jī)應(yīng)用來運(yùn)行你的操作系統(tǒng),同時(shí)當(dāng)前的操作系統(tǒng)也是運(yùn)行的。VM應(yīng)用包括VMWare (它也有一個(gè)免費(fèi)使用的服務(wù)器產(chǎn)品),另一個(gè)開源的選擇就是Bochs,微軟虛擬PC(不能與Linux兼容),還有xVM VirtualBox。
15、發(fā)布一個(gè)"候補(bǔ)版本",這樣可以讓用戶報(bào)告給你操作系統(tǒng)的潛在問題。
16、一個(gè)操作系統(tǒng)可以是用戶友好型的,因此增添一點(diǎn)用戶友好特點(diǎn),把這些整合進(jìn)你的設(shè)計(jì)。
所有的建構(gòu)都完成后,選擇你是否需要發(fā)布代碼為開源代碼,還是保留專利。
不要為了學(xué)習(xí)編程而開始做一個(gè)操作系統(tǒng)。如果你還不了解C、C++、Pascal或某些其他適合的語言,包括指示器處理,低級(jí)字節(jié)處理,字節(jié)轉(zhuǎn)換,內(nèi)聯(lián)集成語言等,那么你還沒有準(zhǔn)備好建立操作系統(tǒng)。
使用網(wǎng)頁,比如OSDev 和OSDever可以幫助你建立自己的操作系統(tǒng)。請(qǐng)記住,OSDev.org社區(qū)更傾向于讓你使用他們的wiki,而不是加入其論壇。如果你決定加入論壇,這有一些預(yù) 備知識(shí):你需要精通C或C++,還有x86集成語言。你也要了解一般的和復(fù)雜的程序概念,如Linked Lists、Queues等等。 OSDev社區(qū)按照其規(guī)則明確表示,此論壇不適合那些臨時(shí)程序員。如果你想構(gòu)建一個(gè)操作系統(tǒng),也并不是非得要求你是個(gè)編程大神。但你也需要閱讀你所選的處理器體系結(jié)構(gòu)的處理器手冊(cè)。不論是x86(因特爾)、ARM、MIPS還是PPC等等。處理器體系手冊(cè)很容易用谷歌搜索引擎找到(“因特爾手冊(cè)”,“ARM手冊(cè)”等等)。不要加入OSDev.org論壇問一些很簡(jiǎn)單的問題。通常的回答就是“去閱讀他媽的手冊(cè)”。你應(yīng)該去閱讀維基百科,里面還有你想使用的多種工具手冊(cè)。
如果你想做得簡(jiǎn)單,考慮下Linux 版本,比如Fedora Revisor、Custom Nimble X、Puppy Remaster、PCLinuxOS mklivecd或SUSE Studio 和SUSE KIWI。然而,你創(chuàng)建的操作系統(tǒng)屬于提供服務(wù)器的公司(盡管你有權(quán)力免費(fèi)發(fā)布,并按照你想的在GPL下修改、運(yùn)行系統(tǒng))。
檢查潛在的問題和其他漏洞。這些都會(huì)影響你的操作系統(tǒng)設(shè)計(jì)。
建立一個(gè)新的分區(qū)用于編寫操作系統(tǒng)是個(gè)好選擇。
粗心大意地把操作系統(tǒng)寫入硬盤可能導(dǎo)致硬盤完全崩潰。小心。
不要期待一個(gè)合適的操作系統(tǒng)很容易建立。有很多相互依賴的復(fù)雜問題。比如說,要做一個(gè)操作系統(tǒng),需要處理多種處理器,你的內(nèi)存管理器必須要“鎖定”機(jī)器,防止多進(jìn)程處理器從同樣資源同時(shí)進(jìn)入。用于此的“鎖定”需要在進(jìn)程表中出現(xiàn),從而確保在任何一個(gè)時(shí)刻都只有一個(gè)進(jìn)程進(jìn)入關(guān)鍵資源,而其他進(jìn)程則在等待。但是進(jìn)程表取決于一個(gè)內(nèi)存管理器。這就是死機(jī)的一種情況。沒有什么標(biāo)準(zhǔn)方法來解決這類問題;每一個(gè)操作系統(tǒng)程序都需要足夠的技術(shù)來解決它的問題。
如果你做了一些沒頭腦的事情,比如把隨機(jī)字節(jié)寫入了隨機(jī)I/O接口,你就會(huì)使得系統(tǒng)死機(jī),而且可能(理論上)燒掉你的硬盤。
引導(dǎo)裝載程序: GRUB
虛擬機(jī)應(yīng)用: Bochs、VM Ware、XM Virtual Box
處理器手冊(cè): Intel manuals
操作系統(tǒng)建立網(wǎng)站: OSDev、OSDever
一個(gè)用來建構(gòu)結(jié)構(gòu)體系的CPU
對(duì)于虛擬機(jī)器的足夠的內(nèi)存(RAM)
一個(gè)“主”操作系統(tǒng)(在匯編源代碼的最初階段,用來建構(gòu)源代碼并打包程序,最終你自己的操作系統(tǒng)將成為主系統(tǒng))
句法潤(rùn)飾代碼編輯器(如果你沒有集成發(fā)展環(huán)境,就用它)
一個(gè)編譯程序
一個(gè)CD/DVD 驅(qū)動(dòng)
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:0731-84117792 E-MAIL:11247931@qq.com