注:本筆記內(nèi)容是跟隨“網(wǎng)易云課堂”--哈工大--李治軍老師的公開課學(xué)習(xí)的,感謝李老師百忙之中為廣大學(xué)子提供的優(yōu)質(zhì)教學(xué)資源。
主要平臺(tái)和工具簡(jiǎn)介x86模擬器BochsBochs是一個(gè)免費(fèi)且開放源代碼的IA-32(x86)架構(gòu)PC機(jī)模擬器。在它模擬出的環(huán)境中可以運(yùn)行l(wèi)inux、DOS和各種版本的Windows等多種操作系統(tǒng)。而Bochs本身具有很高的移植性,可以運(yùn)行在多種軟硬件平臺(tái)之上,這也是我們選擇它做為本書的指定模擬器的主要原因。如果您想擁抱自由的Linux,那么Bochs幾乎是您的不二選擇。如果您想繼續(xù)把自己綁定在Windows平臺(tái)上,那么除了Bochs,您還可以選用VMware或者M(jìn)icrosoft Virtual PC。它們是最著名虛擬機(jī)軟件,而且都可以免費(fèi)使用。因?yàn)锽ochs的是模擬器,其原理決定了它的運(yùn)行效率會(huì)低于虛擬機(jī)。但對(duì)于本書所設(shè)計(jì)的實(shí)驗(yàn)來說,效率上的差別很不明顯。而且,Bochs有虛擬機(jī)無可比擬的調(diào)試操作系統(tǒng)的能力,所以我們更建議您選用Bochs。hit-oslab已經(jīng)內(nèi)置了bochs,本實(shí)驗(yàn)后文假定的缺省環(huán)境也是Bochs。
關(guān)于Bochs的更詳細(xì)的介紹請(qǐng)?jiān)L問它的主頁(yè)及Bochs使用手冊(cè)。
GCC編譯器GCC是和Linux一起成長(zhǎng)起來的編譯器。Linux最初的版本就是由GCC編譯的。現(xiàn)在GCC也是在自由軟件領(lǐng)域應(yīng)用最廣泛的編譯器。所以,我們也選擇GCC做為本書實(shí)驗(yàn)的指定編譯器。
DB調(diào)試器GDB調(diào)試器是GCC編譯器的兄弟。做為自由軟件領(lǐng)域幾乎是唯一的調(diào)試器,它秉承了*nix類操作系統(tǒng)的一貫風(fēng)格,采用純命令行操作,有點(diǎn)兒類似dos下的debug。關(guān)于它的使用方法請(qǐng)看GDB使用手冊(cè)。
Ubuntu (GNU/Linux)Ubuntu也許不是目前最好用的Linux桌面發(fā)行版,但它一定是最流行的。主要特點(diǎn)是易用,非常的易用。
現(xiàn)在,已經(jīng)有越來越多的人開始用Ubuntu完全代替Windows,享受更加自由、安全、守法的感覺。Ubuntu的主頁(yè)是http://www.ubuntu.com/,這里不僅可以免費(fèi)下載到iso文件,甚至能免費(fèi)申領(lǐng)Ubuntu的安裝光盤。
我們強(qiáng)烈建議您在Ubuntu下做實(shí)驗(yàn)。因?yàn)橛行?shí)驗(yàn)內(nèi)容涉及到在自己改進(jìn)的Linux 0.11下,運(yùn)行自己編的應(yīng)用程序。被改進(jìn)的功能都是高版本Linux內(nèi)核已經(jīng)具有的,在其上確認(rèn)自己編寫的應(yīng)用程序無誤后,再用之測(cè)試自己改進(jìn)的Linux 0.11,可以更有信心些。
Linux 下的常用命令:
解壓縮:tar zxvf hit-oslab-linux-20110823.tar.gz
編譯: make all “all”是最常用的參數(shù),所以可以省略
多處理器的系統(tǒng)上,可以用-j參數(shù)進(jìn)行并行編譯,加快速度。例如雙CPU的系統(tǒng)可以:
$ make -j 2
linux-0.11目錄下是全部的源代碼,很多實(shí)驗(yàn)內(nèi)容都是要靠修改這些代碼來完成。修改后需要重新編譯內(nèi)核,還是執(zhí)行命令:
$ make all
make命令會(huì)自動(dòng)跳過未被修改的文件,鏈接時(shí)直接使用上次編譯生成的目標(biāo)文件,從而節(jié)約編譯時(shí)間。但如果重新編譯后,你的修改貌似沒有生效,可以試試 先“make clean”,再“make all”。“make clean”是刪除上一次編譯生成的所有中間文件和目標(biāo)文件,確保是在全新的狀態(tài)下編譯整個(gè)工程。
新聞熱點(diǎn)
疑難解答
圖片精選