Windows下的開發環境
我們在介紹QEMU時提到過,在Windows下你需要一個虛擬Linux來幫你編譯作業系統的原始碼。將作業系統核心編譯連結成ELF格式有諸多好處,我們不但可以用Linux下現成的工具(比如readelf)來分析編譯好的核心,還可以在必要時參考Linux核心的原始碼來協助我們自己的開發,總之這拉近了我們與Linux之間的距離。所以不要因為在Windows下也離不開Linux這件事而沮喪,況且裝一個Linux是件很容易的事情。
不過裝一個虛擬Linux跟裝一個真實的Linux還是有所不同,主要在於兩點。一是我們僅僅想用這個Linux來做編譯連結的工作,所以在選擇組件的時候盡量去除不必要的內容,這樣可以節省時間和空間;二是要確保你選擇的虛擬機器容易跟宿主機進行網路通訊,因為你需要將宿主機上的原始碼拿給虛擬機器來編譯。
安裝方法可以有多種選擇,比較簡單的方法是通過光碟片安裝,當然這個光碟片也可以是“虛擬”的,也就是一個光碟片映像。首先到你所中意的Linux發行版的官方網站下載一個安裝光碟片的映像,有些發行版還提供免費或付費的郵寄服務,讀者可以根據自己的喜歡自行選擇。這裡假設你得到的是光碟片映像,檔案名稱為inst.iso。
有了光碟片映像,我們還缺少一個硬碟映像,讀者可以用前文提到過的bximage來產生它,也可以使用下面的命令:
$ qemu-img create hd.img 1500M
這樣就能產生一個大小約為1.5GB的硬碟映像了。
接下來就可以進行安裝了:
$ qemu -cdrom inst.iso -hda hd.img -boot d
安裝過程從略,注意盡量精簡你的組件,不要安裝太多無用的東西。這些組件對我們是必需的:GCC、GNU Make、NASM、Samba。如果它們在安裝時預設沒有裝上,那麼你需要在系統安裝結束後將它們安裝上。由於目前大多數虛擬機器都具有好用的網路功能,所以安裝它們並非難事。
裝完之後,我們還需要解決讓宿主機和虛擬機器通訊的問題。其實你可以把它們看成是區域網路中的兩台機器,區域網路中適用的方法這裡同樣適用,所以Samba就很適合。
首先在Windows中以可讀寫方式共用一個檔案夾,假設叫做OrangeS,然後在虛擬Linux上運行下面這條命令:
$ sudo mount -t smbfs -o username=user,password=blah //10.0.2.2/OrangeS /mnt
其中假設你的宿主機IP地址為10.0.2.2。這樣在Linux的/mnt目錄下就能看到Windows共用資料夾下的內容了,你可以在虛擬機器中隨意讀寫,就像對待本地檔案一樣。
這樣一來,你的編譯環境就安裝完成了,接下來,如同在Linux下一樣,你還需要一個編輯器。據說始終有一部分人使用記事本(notepad)來編寫代碼,不管基於何種理由,希望你不要這樣做,因為你可以找到許多比notepad更適合編寫代碼的編輯器,有收費的,也有免費的,它們通常都具備關鍵字顏色,自動縮排等方便開發人員的功能,可以大大提高工作效率。
總結一下的話,搭建一個Windows下的開發環境,你需要做以下工作:
• 安裝Windows。
• 安裝Bochs(安裝程式可到其官方網站擷取)。
• 安裝一個你喜歡的編輯器用來編寫代碼。
• 安裝一個速度較快的虛擬機器,如QEMU(安裝程式可到其官方網站擷取})。
• 在速度較快的虛擬機器上安裝一個Linux。
• 在虛擬Linux中安裝GCC、GNU Make、NASM、Samba──如果它們沒有預設被安裝上的話。
• 在虛擬Linux和宿主機之間共用一個可讀寫的檔案夾。
將來你的開發過程看起來很可能是這樣的:
• 在Windows中用編輯器編寫代碼。
• 在虛擬Linux中用Make調用GCC、NASM及其他工具來產生核心並寫入磁碟映像。
• 在Windows中用Bochs來運行你的作業系統。
• 如果有問題的話。
o 用各種方法來調試,比如用Bochs;
o 返回第1步。