xv6 + Qemu 在Ubuntu下編譯運行教程

一、使用工具說明

1.       xv6 源代碼文件(以下三選一)

1)http://download.csdn.net/detail/yinglang19941010/9201421 (我使用的是這個,怕出錯的同學可以下這個)

2)https://github.com/yinglang/Xv6  或

3)http://zoo.cs.yale.edu/classes/cs422/2011/lec/l2-hw 

2.       Qemu 源代碼下載(可以選擇不下,要下的話二選一)

1)http://download.csdn.net/detail/yinglang19941010/9201427(我是用的是這個,怕出錯的同學可以下這個)

2)http://wiki.qemu.org/Download 我選擇的是qemu-2.4.0.1.tar.gz

3.       VMware10.0+ linux 編譯環境:(也可以不選擇裝虛擬機)

我是用的是ubuntukylin-14.04-desktop-i386,應該其他版本的也可以。

但建議選32bit的Ubuntu。

4.    聯網(這個是必須,建議在編譯前測試一下能不能聯網)。

 

      

 

二、 xv6 編譯

1.    解壓xv6-master 和 qemu-2.4.0.1.tar.bz2 ,可以使用命令解壓,也可用Ubuntukylin提供的可視化解壓軟件(雙擊壓縮包就能打開)

    選擇extract

 

       

       2.    hui@ubuntu:~/Desktop/xv6$cd Xv6-master

       3.    hui@ubuntu:~/Desktop/xv6/Xv6-master$make

 

              出現如下結果表示編譯成功

      

 

三、編譯安裝qemu

安裝qemu有兩種方法:(二選一即可)

大笑方法一 : 使用apt-get 安裝,不需要下載qemu源代碼,較爲簡單,幾乎不出錯。

大哭方法二 : 使用源代碼進行編譯,要先下載源代碼,難度較大,出錯率高。


下面對兩種方法的操作進行詳細說明:

方法一 :(不手動表編譯,直接利用apt安裝運行)

1.     hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$sudo apt-get install qemu

如果出現以下錯誤

             

說明可用於linux下載的apt的包列表很久沒有更新了,使用

              hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-get update

             

如果出現了failed to fetch的錯誤提示,說明apt-get的網站訪問不到了。

可以使用 source.list 替換掉/ect/apt/source.list (注意要用root權限

sudo mv source.list /ect/apt/source.list)。該文件的網站在2015內應是可以訪問的


如果提示如下,則更新成功

 

這是再輸入

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$sudo apt-get install qemu

 

2.     hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$qemu-system-i386

如果彈出qemu的虛擬機,則證明虛擬機qemu安裝成功(由於沒有裝xv6所以QEMU提示Boot failed)

 

 

      

 方法二:(手動編譯源碼運行, 如果已經使用了方法一,這步可跳過)

       1.    解壓

       2.    cd ../qemu-2.4.0.1

       3.    ./configure --disable-kvm --target-list="i386-softmmux86_64-softmmu"

              報錯如下:


              解決:

1)   第一個是警告,提示沒有c++編譯器,c++部分的代碼將無法編譯

解決是安裝g++編譯器,注意這個雖然是警告,但是如果不裝的話,後面會報錯,敲入命令

sudo apt-get install g++

2)   第二個是錯誤,沒有zlib包

解決是安裝zlib

先查找zlib

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-cache search zlib   

 

紅圈中圈出的是我認爲可能的package(要問我爲什麼,首先名字很像,其次他們是library,而編譯報錯很多時候都是缺少lib)

最後發現是zlib1g-dev (dev表示development開發包,很多時候編譯報錯都是要裝這種package),還有就是猜的:) )

在命令行中敲入以下命令安裝:

              hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$sudo apt-get install zlib1g-dev

4.       在命令行中再次敲入

./configure --disable-kvm--target-list="i386-softmmu x86_64-softmmu"

如果報錯


同樣先搜索

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$sudo apt-cache search glib   

 

  同樣有依據的猜到了是libglib2.0-dev,敲入命令安裝

       hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$sudo apt-get install libglib2.0-dev

5.       最後再敲一次

./configure --disable-kvm --target-list="i386-softmmux86_64-softmmu"


              以上提示表示該命令成功(因爲我還沒有裝g++,所以c++ compiler是空,這樣後面是會報錯的)

      

6.       配置完成後,敲入

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$  make&& make install

如果發現報錯

沒有autoreconf,安裝autoreconf

先查找

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-cache search autoreconf

       

這兩個都裝上,敲入命令安裝

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-get install dh-autoreconf

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-get install autoconf2.13

再次輸入

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$  make&& make install

 

如果還報錯


這很可能是沒有裝過g++ 而進行的編譯,敲入

sudo apt-get install g++

再重新編譯,刪除qemu-2.4.0.1,重新解壓,重啓命令行,輸入

./configure --disable-kvm --target-list="i386-softmmux86_64-softmmu"

make&& make install

              一般到這一步就行了

       

7.       hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$qemu-system-i386

如果彈出qemu的虛擬機,則證明虛擬機qemu安裝成功(由於沒有裝xv6所以QEMU提示Boot failed

 


四、運行xv6

切換到xv6源代碼的目錄

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$cd ../Xv6-master

hui@ubuntu:~/Desktop/xv6/Xv6-master$make qemu

發現報錯如下:


原因:這是因爲在make(編譯)的時候變量QEMu沒有指定,我們來手動指定QEMU的位置。

解決:首先找到目錄Xv6-master(源代碼)下的文件MakeFile (這個文件可以看成是linux下對工程源碼進行編譯的配置文件,

類似於windows下Visual Studio的.sln之類的文件)

       

       修改紅圈中的內容爲

       

 

再次

hui@ubuntu:~/Desktop/xv6/Xv6-master$make qemu

 

運行成功

輸入ls 可以參見裏面的所有命令文件,輸入命令測試看看吧

 

五、總結

       其實如果環境lib都裝了的話,也就以下幾個命令

       編譯xv6

       hui@ubuntu:~/Desktop/xv6$ cd Xv6-master

       hui@ubuntu:~/Desktop/xv6/Xv6-master$ make

       編譯安裝qemu

       hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ sudo apt-get install qemu

       或者

       hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ cd ../qemu-2.4.0.1

       hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$./configure --disable-kvm--target-list="i386-softmmu x86_64-softmmu"

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$  make&& make install

運行xv6

hui@ubuntu:~/Desktop/xv6/qemu-2.4.0.1$ cd ../Xv6-master

hui@ubuntu:~/Desktop/xv6/Xv6-master$ make qemu


六、參考資料:

http://zoo.cs.yale.edu/classes/cs422/2011/lec/l2-hw

 https://pdos.csail.mit.edu/6.828/2012/xv6.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章