<strike id="5ntnv"><i id="5ntnv"><del id="5ntnv"></del></i></strike>
<strike id="5ntnv"></strike><ruby id="5ntnv"></ruby><del id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></del><strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike>
<strike id="5ntnv"></strike>
<strike id="5ntnv"></strike>
<span id="5ntnv"><dl id="5ntnv"></dl></span>
<strike id="5ntnv"><i id="5ntnv"><del id="5ntnv"></del></i></strike><th id="5ntnv"><noframes id="5ntnv"><span id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></span>
<span id="5ntnv"></span>
<strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike>
<strike id="5ntnv"><dl id="5ntnv"><del id="5ntnv"></del></dl></strike><strike id="5ntnv"><i id="5ntnv"></i></strike><span id="5ntnv"></span>
<strike id="5ntnv"></strike>
<strike id="5ntnv"></strike>
<th id="5ntnv"><noframes id="5ntnv">
<ruby id="5ntnv"></ruby>
<strike id="5ntnv"><dl id="5ntnv"></dl></strike>

貴州網站建設公司貴州網站建設公司

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的過程,其實就是下面這張圖片中展示的這幾個過程

  MIT 6.828 JOS學習筆記1. Lab 1 Part 1: PC Bootstrap _ JavaClub全棧架構師技術筆記

  你可以完全按照上面寫的步驟來,打開一個terminal,然后隨便到一個目錄下,輸入命令 git clone  git://git.qemu-project.org/qemu.git 這樣就把QEMU的源文件都下載到本地了,此時目錄下面多了一文件夾,叫qemu。

  然后你就可以依次執行最下面的4個步驟。先cd到qemu目錄下;然后輸入./configure命令,這是運行一個配置文件;然后輸入make,編譯整個文件;最后安裝,別忘了前面要輸入sudo,這樣就大工告成了~

  聽著很簡單對不對~很輕松對不對~但是其實我告訴你...

  ..

  ..

  根!本!沒!有!這!么!容!易!

  童!話!里!都!是!騙!人!的!

  我在我的機器上執行./configure這一步驟時,報出了各種稀奇古怪的錯誤!并且解決了一個錯誤,又出現一個錯誤!最后安裝這個QEMU就折騰了我一晚上! (╯‵□′)╯︵┻━┻

  ..

  ..

  不過大家放心,我已經把解決方案都列出來了,你可以按照你出的錯誤類型來查找并且解決~我是雷鋒

  其實所有的錯誤都是因為你的系統中缺少某個軟件所造成的,比如,它會在屏幕上顯示下面這句話: 

  1. Error: zlib check failed  
  2. 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操作系統,如果你的屏幕上顯示下列信息,代表你已經編譯成功啦

  MIT 6.828 JOS學習筆記1. Lab 1 Part 1: PC Bootstrap _ JavaClub全棧架構師技術筆記

  我們可以看一下它生成的最后一個信息 mk obj/kern/kernel.img,這個kernel.img就是內核映像文件,另外obj目錄在make之前是沒有的,它是make指令生成的,它里面將會有許多的文件我們之后會重點觀察。

 

  編譯完內核源碼,我們就可以把它運行在QEMU上啦!

  首先還要是在lab目錄下面,輸入  make qemu,此時qemu就開始自動加載我們的操作系統內核映像文件了,如果你的屏幕上打印如下信息,就代表你終于運(tuo)行(li)成(ku)功(hai)了!

  MIT 6.828 JOS學習筆記1. Lab 1 Part 1: PC Bootstrap _ JavaClub全棧架構師技術筆記

  從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

贊(545)
未經允許不得轉載:>貴州網站建設公司 » MIT 6.828 JOS學習筆記1. Lab 1 Part 1: PC Bootstrap
国产欧美精品