在虛擬機(jī) virtualbox Ubuntu 18.04 中搭建6.828的實(shí)驗(yàn)環(huán)境
操作系統(tǒng): Windows 10 家庭版
在 Windows 10 系統(tǒng)中荠卷,安裝virtualbox, 在virtualbox中安裝Ubuntu18.04犯祠,最后在Ubuntu 18.04 中痊夭,編譯 riscv 工具鏈珊蟀,qemu已經(jīng)在18.04默認(rèn)安裝了虎锚,不必再安裝焰盗。
-
獲取 riscv toolchain 源碼
git clone --recursive https://github.com/riscv/riscv-gnu-toolchain
如果一些倉(cāng)庫(kù)獲取失敗,可以運(yùn)行如下命令:
cd riscv-gnu-toolchain
git submodule update --init --recursive
1.1 比如剔应,我在獲取源碼時(shí)睡腿,boringssl 就不能下載下來,Google 搜索boringssl 找到了一個(gè)GitHub上的鏡像鏈接:
https://github.com/google/boringssl.git
. 然后在目錄:./riscv-gnu-toolchain/qemu/roms/edk2/CryptoPkg/Library/OpensslLib/openssl/boringssl
下運(yùn)行如下命令:cd ./riscv-gnu-toolchain/qemu/roms/edk2/CryptoPkg/Library/OpensslLib/openssl/
rm -r boringssl
git clone https://github.com/google/boringssl.git
成功后峻贮,運(yùn)行如下命令席怪,如果還有下載失敗的倉(cāng)庫(kù),可以從步驟1.1開始纤控,單獨(dú)下載源碼
cd ./riscv-gnu-toolchain/
git submodule update --init --recursive
編譯前挂捻,需要準(zhǔn)備的工具以及庫(kù)
sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev
編譯 riscv 工具鏈,假設(shè)你將編譯好的 riscv 工具鏈安裝在 /usr/loca 中船万,這個(gè)路徑可以根據(jù)自己的喜好替換刻撒,但是替換后的路徑要在$PATH 環(huán)境變量中可以找到。
cd ./riscv-gnu-toolchain
./configure --prefix=/usr/local
sudo make
-
至此耿导,riscv 工具鏈已經(jīng)成功編譯完成疫赎,可以運(yùn)行如下命令加以驗(yàn)證
$ riscv64-unknown-elf-gcc --version
riscv64-unknown-elf-gcc (GCC) 9.2.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ qemu-system-riscv64 --version
QEMU emulator version 4.1.0 Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers
注意:如果提示找不到 riscv64-unknown-elf-gcc ,應(yīng)該將 /usr/local/bin 目錄添加至$PATH 中 -
編譯以及運(yùn)行xv6
cd ./xv6-riscv
$ make qemu
...
init: starting sh
$
如果碰到錯(cuò)誤:
qemu-system-riscv64: cannot set up guest memory 'riscv_virt_board.ram': Cannot allocate memory Makefile:161: recipe for target 'qemu' failed make: *** [qemu] Error 1
這是因?yàn)樗榻冢摂M機(jī)沒有足夠的內(nèi)存可供分配捧搞,有兩種方法,一種是增加虛擬機(jī)的內(nèi)存狮荔,另一種是減小xv6系統(tǒng)的分配內(nèi)存胎撇,修改xv6的Makefile,方法如下:vim Makefile
搜索/-m 3G
可以找到這行QEMUOPTS = -machine virt -bios none -kernel $K/kernel -m 3G -smp $(CPUS) -nographic
將 3G 修改為 1.5G殖氏,重新運(yùn)行make qemu
晚树,應(yīng)該可以啟動(dòng)成功,如果還不能雅采,就繼續(xù)減少內(nèi)存大小爵憎。