一、使用工具說明
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
六、參考資料: