本文记录了搭建 6.S081:Operating System Engineering 课程的实验环境

课程地址:6.S081 / Fall 2020

实验环境搭建

VMware 16 + Ubuntu 20.04.2.0 LTS

注:使用 Ubuntu 18.04 的话 qemu-system-misc=1:4.2-3ubuntu6 这个包下不了,这个包只有 Ubuntu 20.04 下面才有。

安装 qemu-system-misc

1
2
sudo apt-get remove qemu-system-misc
sudo apt-get install qemu-system-misc=1:4.2-3ubuntu6

测试是否环境安装成功

1、测试 riscv64-unknown-elf-gcc 是否安装成功,输入下面命令

1
riscv64-unknown-elf-gcc --version

安装成功的话会显示

1
2
3
4
riscv64-unknown-elf-gcc () 9.3.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.

如果出现

1
Command 'riscv64-unknown-elf-gcc' not found

则执行下面命令安装 riscv64-unknown-elf-gcc

1
sudo apt install riscv64-unknown-elf-gcc

2、测试 qemu-system-riscv64 是否安装成功,输入下面命令

1
qemu-system-riscv64 --version

成功的话会显示

1
2
QEMU emulator version 4.2.0 (Debian 1:4.2-3ubuntu6)
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

克隆仓库 xv6-labs-2020

1
2
3
4
5
git clone git://g.csail.mit.edu/xv6-labs-2020
cd xv6-labs-2020
# 每个 lab 都有一个分支,对应相应的实验作业
# 可以用 git branch --remote 查看所有分支
git checkout util

进入到 xv6 仓库到目录下,安装 qemu

1
sudo make qemu

注1:如果提示 make 命令未找到,则执行 sudo apt-get install make,再执行上面的命令。

注2:如果出现 make: gcc: Command not find,试一下执行下面命令,然后再执行 sudo make qemu

1
sudo apt-get install git build-essential gdb-multiarch qemu-system-misc gcc-riscv64-linux-gnu binutils-riscv64-linux-gnu

当出现

1
2
3
4
5
xv6 kernel is booting

hart 1 starting
hart 2 starting
init: starting sh

则说明 MIT 6.S081 课程的实验环境搭建完成了,可以开始做实验了。

调试

  1. 配置用户根目录下的 .gdbinit 文件(如果该文件,则创建),在 .gdbinit 中输入
1
2
set architecture riscv:rv64
target remote lovalhost:26000
  1. 首先打开一个终端,输入 make qemu-gdb,然后在另一个终端输入 gdb-multiarch kernel/kernel 进行测试
1
2
b _entry
c

参考资料