Ubuntu OS系統(tǒng)虛擬機(jī)編譯安裝
對(duì)大家推薦很好使用的Ubuntu OS系統(tǒng),像讓大家對(duì)Ubuntu OS系統(tǒng)有所了解,然后對(duì)Ubuntu OS系統(tǒng)全面講解介紹,希望對(duì)大家有用Ubuntu + bochs 搭建Ubuntu OS開(kāi)發(fā)環(huán)境.
聲明:請(qǐng)看到此文章的朋友不要轉(zhuǎn)載,因?yàn)閷?xiě)作才剛剛開(kāi)始,有很多不成熟甚至錯(cuò)誤的地方。等所有文章完成之后,我會(huì)細(xì)心整理。
相信很多人曾經(jīng)都有過(guò)一種沖動(dòng),那就是像linus一樣自己寫(xiě)個(gè)操作系統(tǒng)。這個(gè)系列的文章就是關(guān)于這個(gè)話題的,但是我并不奢望能開(kāi)發(fā)出一個(gè)像當(dāng)代linux一樣的Ubuntu OS,實(shí)際上幾乎不可能,即使是linus也做不到。linux能發(fā)展到現(xiàn)在靠的是互聯(lián)網(wǎng)上的無(wú)數(shù)黑客,及各大公司的支持。我的目標(biāo)只是個(gè)multitasking,帶有文件系統(tǒng)的簡(jiǎn)單OS kernel。
要寫(xiě)Ubuntu OS必須要有相應(yīng)的工具,下面就搭建OS開(kāi)發(fā)環(huán)境。首先要有個(gè)linux系統(tǒng),我用的是Ubuntu OS。然后再加個(gè)虛擬機(jī)bochs,這樣我們就不必折騰自己的愛(ài)機(jī)了。先去 http://sourceforge.net/projects/bochs/files/bochs/2.4.1/ 下載 bochs-2.4.1.tar.gz
bochs虛擬機(jī)編譯安裝:
1. 安裝相應(yīng)的gnu工具,執(zhí)行下面命令sudo apt-get install build-essential bison
2. 安裝一些圖形庫(kù) sudo apt-get install libgtk2.0-dev xorg-dev
3. 解壓bochs-2.4.1 tar -zxvf bochs-2.4.1.tar.gz
4. 將文件/bochs-2.4.1/cpu/proc_ctrl.cc 的650行到680行換成以下內(nèi)容:650行開(kāi)始Code
- 1 #if BX_SUPPORT_VMX
- 2 VMexit_CR3_Write(i, val_32);
- 3 if (BX_CPU_THIS_PTR cr0.get_PG() && BX_CPU_THIS_PTR cr4.get_PAE() &&
- 4 !long_mode()) {
- 5 if (! CheckPDPTR(val_32)) {
- 6 BX_ERROR(("SetCR3(): PDPTR check failed !"));
- 7 exception(BX_GP_EXCEPTION, 0, 0);
- 8 }
- 9 }
- 10 SetCR3(val_32);
- 11 BX_INSTR_TLB_CNTRL(BX_CPU_ID, BX_INSTR_MOV_CR3, val_32);
- 12 break;
- 13 #endif
- 14 #if BX_CPU_LEVEL > 3
- 15 case 4: // CR4
- 16 #if BX_SUPPORT_VMX
- 17 val_32 = VMexit_CR4_Write(i, val_32);
- 18 if (BX_CPU_THIS_PTR cr0.get_PG() && (val_32 & (1<<5)) != 0 /* PAE */
- 19 && !long_mode()) {
- 20 if (! CheckPDPTR(BX_CPU_THIS_PTR cr3)) {
- 21 BX_ERROR(("SetCR4(): PDPTR check failed !"));
- 22 exception(BX_GP_EXCEPTION, 0, 0);
- 23 }
- 24 }
- 25 // Protected mode: #GP(0) if attempt to write a 1 to
- 26 // any reserved bit of CR4
- 27 if (! SetCR4(val_32))
- 28 exception(BX_GP_EXCEPTION, 0, 0);
- 29 break;
- 30 #endif
- 31 #endif
- 32 default:
- 33 BX_ERROR(("MOV_CdRd: #UD - control register %d index out of range",
- 34 i->nnn()));
- 35 exception(BX_UD_EXCEPTION, 0, 0);
- 36 }
- 37 } 680行結(jié)束
5. ./configure --enable-debug --enable-disasm
6. make all
7. sudo make install
Ubuntu OS至此bochs安裝完畢,下一節(jié)我們寫(xiě)個(gè)hello world級(jí)的引導(dǎo)代碼
【編輯推薦】