虛擬機(jī)
選用bochs是因?yàn)槠涮峁┝朔奖愕念愃苂db的調(diào)試功能。
bochs的debug功能介紹:http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html
安裝
如果是自己編譯,記得配置開啟調(diào)試功能:
./configure --enable-debugger --enable-disasm
MAC OSX可以使用brew 來安裝bochs
brew install bochs
默認(rèn)好像是開啟debug功能的,或者可以配置,我有點(diǎn)記不清了持舆,可自行Google
配置
配置的目的是讓bochs知道以哪個(gè)設(shè)備(或虛擬文件)作為啟動(dòng)設(shè)備
如果需要的話,還需要對bochs所模擬的CPU和內(nèi)存等進(jìn)行配置
制作啟動(dòng)盤(文件)
osdev.org推薦使用cdrom作為啟動(dòng)光盤丈冬,但是筆者在實(shí)踐的時(shí)候采用的是創(chuàng)建1.44‘軟盤鏡像的方式來進(jìn)行試驗(yàn)流酬,如果創(chuàng)建一個(gè)floppy image可參考下述步驟:
創(chuàng)建軟盤鏡像
可使用bximage工具-
(視具體情況而定)為鏡像創(chuàng)建合適的文件系統(tǒng)
- 如果自己從無到有實(shí)現(xiàn)一個(gè)bootloader币厕,完全可以不使用任何文件系統(tǒng),或者使用任何文件系統(tǒng)
- 如果使用grub等現(xiàn)有bootloader芽腾,則需要考慮的是開發(fā)環(huán)境所支持的文件系統(tǒng)(主要是方便開發(fā))旦装,以及最重要的bootloader所支持的文件系統(tǒng)
-
實(shí)現(xiàn)bootloader
參考《bootloader》一文的介紹
編譯環(huán)境
為什么要使用交叉編譯環(huán)境?
具體可參考:http://wiki.osdev.org/GCC_Cross-Compiler
簡而言之摊滔,編譯的目的是為了生成目標(biāo)平臺(tái)的可執(zhí)行代碼阴绢。然而我們操作系統(tǒng)自帶的編譯器一般是生成此平臺(tái)下的可執(zhí)行代碼,這種代碼不一定能在我們虛擬機(jī)所模擬的平臺(tái)上運(yùn)行艰躺,如我的MacBook Pro為例旱函,我的GCC的目標(biāo)平臺(tái)為:
Target: x86_64-apple-darwin15.4.0
而我的玩具操作系統(tǒng)需要運(yùn)行的平臺(tái)是:
cpu: model=p3_katmai
所以,編譯的GCC版本選擇為:
--target=i686-elf