MIT 6.828 JOS學習筆記1. Lab 1 Part 1: PC Bootstrap
Lab 1: Booting a PC
Part 1: PC Bootstrap
介紹這一部分知識的學習目的就是讓你能夠更加熟悉x86匯編語言,以及PC啟動的筆記整個過程,而且也會首次學習使用QEMU軟件來仿真xv6操作系統,學習并且配合GDB對操作系統的筆記運行進行調試。
開始學習X86匯編語言
由于x86匯編語言在我們這節實驗中扮演了非常重要的學習角色,所以MIT官方為我們提供了一個關于匯編語言的筆記參考資料"004. pcasm-book"(資料文件名,在resources目錄下),學習里面基本介紹了匯編語言的筆記方方面面,你可以把這本書作為一個備查,學習遇到沒看過的筆記命令就上里面查,或者直接上網查。學習如果沒有任何匯編基礎,筆記建議還是學習看一看書,把一些基礎的筆記指令看懂。或者通過網上的學習教程。但是這本書有一個不好的地方,就是這本書的匯編語言語法是參照NASM匯編器的Intel語法來編寫的,但是本課程中所有的匯編程序都是基于GNU匯編器的AT&T語法的。這兩種語法只是在一些細節上有所不同,這里MIT也為我們提供了一份資料用來描述這二者的不同"005. Inline Assembly with DJGPP"。
Exercise 1:
練習1并沒有什么實質性內容,就是MIT建議我們要對匯編語言有個大致的了解,這樣才能讓后面的學習更加方便一點。
仿真X86計算機
這門課采用軟件模擬的方式來調試整個操作系統,也就是說讓xv6操作系統運行在一個用軟件仿真出來的x86計算機上。這個仿真軟件就是QEMU,這個仿真器有一個非常好的優點,就是它能和調試器GDB共同配合使用,這樣的話我們就可以一條指令一條指令的調試運行在QEMU里面的xv6操作系統了。所以在這部分我們將學習如何搭建這個調試的環境。
1. 第一步自然是要安裝QEMU到機器中了。
首先說一下我采取的是采用虛擬機vmware來運行一個ubuntu12.01系統,然后在這個系統上搭建整個環境的。
這個鏈接:https://en.wikibooks.org/wiki/QEMU/Linux 介紹了如何在ubuntu下安裝Qemu的過程,其實就是下面這張圖片中展示的這幾個過程
你可以完全按照上面寫的步驟來,打開一個terminal,然后隨便到一個目錄下,輸入命令 git clone git://git.qemu-project.org/qemu.git 這樣就把QEMU的源文件都下載到本地了,此時目錄下面多了一文件夾,叫qemu。
然后你就可以依次執行最下面的4個步驟。先cd到qemu目錄下;然后輸入./configure命令,這是運行一個配置文件;然后輸入make,編譯整個文件;最后安裝,別忘了前面要輸入sudo,這樣就大工告成了~
聽著很簡單對不對~很輕松對不對~但是其實我告訴你...
..
..
根!本!沒!有!這!么!容!易!
童!話!里!都!是!騙!人!的!
我在我的機器上執行./configure這一步驟時,報出了各種稀奇古怪的錯誤!并且解決了一個錯誤,又出現一個錯誤!最后安裝這個QEMU就折騰了我一晚上! (╯‵□′)╯︵┻━┻
..
..
不過大家放心,我已經把解決方案都列出來了,你可以按照你出的錯誤類型來查找并且解決~我是雷鋒
其實所有的錯誤都是因為你的系統中缺少某個軟件所造成的,比如,它會在屏幕上顯示下面這句話:
- Error: zlib check failed
- Make sure to have the zlib libs and headers installed.
這句話的含義就是你缺少軟件'zlib',所以你要做的就是安裝這個軟件就好啦~
下面就是我遇到的所有缺少的軟件(':'前面),以及對應的解決方案(':'后面),解決方案就是一系列的命令,你在terminal中輸入即可自動安裝(為什么我會遇到這么多問題T^T):
c++ compiler: sudo apt-get install g++
libtool : sudo apt-get install libtool
glib: sudo apt-get install libglib2.0-dev
pixman: sudo apt-get install libpixman-1-dev
zlib: sudo apt-get intall zlib1g-dev
dtc:
git submodule update --init dtc cd dtc git fetch origin # git rebase origin/master make這樣直到你的./configure文件運行后不會出現錯誤信息,只是出現一些配置信息的話,./configure這一步就完成了!
..
但是,你以為這就完了么~還有make呢,還有install呢~想想就蛋疼...
輸入make后,就開始自動編譯,如果你的電腦配置一般的話,在編譯之前我給你個非常中肯的建議!那就是
..
..
睡!一!覺!
我的電腦整整編譯了快一個小時!(╯‵□′)╯︵┻━┻
即便是實驗室的臺式機也編譯了快30分鐘!(╯‵□′)╯︵┻━┻ (╯‵□′)╯︵┻━┻
我還以為我電腦死機了有木有!
所以如果你的電腦壽命已超過3年,并且平時開機需要1分鐘以上的話,準備好枕頭吧..
..
make編譯完成后,就可以輸入sudo make install進行安裝了,這一步不嚇唬大家了,還是很快滴~。
這樣我們就完成了Qemu的安裝!
2. 利用QEMU來運行xv6操作系統
安裝好QEMU之后,我們就可以用它來運行我們的操作系統啦~
當然第一步就是把操作系統的源代碼拷貝下來啦,具體的方法我在 "0.寫在前面的話" 這篇博文中的資料獲取那一部分已經介紹啦,大家可以去那里看。
如果你懶到不想翻的話,那我就再大發慈悲告訴你一下~
首先打開一個terminal,然后任意cd到一個目錄下,比如我都是在~/Documents這個目錄下工作的。
然后輸入 git clone https://github.com/fatsheepzzq/6.828mit.git 即可
這樣你就會在你的當前目錄下面看到一個文件夾6.828mit,這個文件夾下面有一個子文件夾lab,這里面存放的就是所有操作系統源碼啦!
然后我們就要先編譯這個操作系統源碼,來生成能夠運行在Qemu上的操作系統映像文件,我們只需要在lab目錄下輸入命令
make
這樣計算機會為我們自動編譯整個xv6操作系統,如果你的屏幕上顯示下列信息,代表你已經編譯成功啦
我們可以看一下它生成的最后一個信息 mk obj/kern/kernel.img,這個kernel.img就是內核映像文件,另外obj目錄在make之前是沒有的,它是make指令生成的,它里面將會有許多的文件我們之后會重點觀察。
編譯完內核源碼,我們就可以把它運行在QEMU上啦!
首先還要是在lab目錄下面,輸入 make qemu,此時qemu就開始自動加載我們的操作系統內核映像文件了,如果你的屏幕上打印如下信息,就代表你終于運(tuo)行(li)成(ku)功(hai)了!
從6828 decimal.. 那句話開始之后的信息都是由xv6操作系統內核顯示出來的~
到目前為止,你已經完成了在ubuntu上仿真x86計算機,并且運行xv6操作系統內核了!!
其實這一個part還有一部分內容沒說,但是考慮到這里篇幅已經很長了,再加上我是那么追(lan)求(duo)簡(cheng)約(xing)的人,所以我決定把part 1的下一部分再單開一篇博文來說(寫第一篇博文就把自己打臉了有木有)~
最后還是歡迎大家的指正和提問,我的郵箱
zzqwf12345@163.com
稱呼我時,叫我的藝名fatsheep就行~
作者:fatsheep9146
來源鏈接:https://www.cnblogs.com/fatsheep9146/p/5068353.html