【MIT6.828】实验环境搭建

【MIT6.828】实验环境搭建

1.环境信息

环境:
WSL2 + Ubuntu 20.04

2.操作步骤

在WSL2上安装完原生Ubuntu 20.04后,首先安装git

sudo apt-get install git

然后下载riscv-gnu-toolchain

git clone https://github.com/riscv/riscv-gnu-toolchain

配置和安装

./configure --prefix=/usr/local
sudo make

下载QEMU
https://download.qemu.org/
解压并编译安装

tar xf qemu-7.2.0.tar.xz
./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu"
sudo make
sudo make install

报错 ERROR: Cannot find Ninja
安装ninja-build

sudo apt-get install ninja-build

报错处理 ERROR: Cannot find pkg-config

sudo apt-get install pkg-config

报错 ERROR: glib-2.56 gthread-2.0 is required to compile QEMU
这里遇到了一些困难,在执行

sudo apt-get install glib2

后报错E: Unable to locate package,找了网上的一些方法给出的解决方案都是更换源后执行upgrade和update,但实际上看了一下镜像源里的文件实际上要安装

sudo apt-get install libglib2.0-0 libglib2.0-dev

同理报错后安装pixman

sudo apt-get install libpixman-1-dev

然后报错

***
*** Error: Couldn't find an riscv64 version of GCC/binutils.
*** To turn off this error, run 'gmake TOOLPREFIX= ...'.
***
gcc    -c -o kernel/entry.o kernel/entry.S
kernel/entry.S: Assembler messages:
kernel/entry.S:17: Error: no such instruction: `la sp,stack0'
kernel/entry.S:18: Error: no such instruction: `li a0,1024*4'
kernel/entry.S:19: Error: no such instruction: `csrr a1,mhartid'
kernel/entry.S:20: Error: no such instruction: `addi a1,a1,1'
kernel/entry.S:21: Error: too many memory references for `mul'
kernel/entry.S:22: Error: too many memory references for `add'
kernel/entry.S:26: Error: no such instruction: `j junk'
<builtin>: recipe for target 'kernel/entry.o' failed
make: *** [kernel/entry.o] Error 1

此处按照课程教学给出应该安装另外一个插件

sudo apt install gcc-riscv64-unknown-elf

确保我们拥有这两个组件

riscv64-unknown-elf-gcc --version
qemu-system-riscv64 --version

之后再执行make,看到与课程中给出的一致输出,成功boot

make qemu
...
mkfs/mkfs fs.img README user/_cat user/_echo user/_forktest user/_grep user/_init user/_kill user/_ln user/_ls user/_mkdir user/_rm user/_sh user/_stressfs user/_usertests user/_wc user/_zombie user/_cow 
nmeta 46 (boot, super, log blocks 30 inode blocks 13, bitmap blocks 1) blocks 954 total 1000
balloc: first 497 blocks have been allocated
balloc: write bitmap block at sector 45
qemu-system-riscv64 -machine virt -kernel kernel/kernel -m 3G -smp 3 -nographic -drive file=fs.img,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0
hart 0 starting
hart 2 starting
hart 1 starting
init: starting sh
$
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值