6.S801/Fall 2020 in WSL2 环境配置踩坑(QEMU)记录

6.S801/Fall 2020 in WSL2 环境配置踩坑(QEMU)记录

Administrator 1369 2021-09-07

前言

快做完 6.824 的 Lab 2 之后,想着做完 6.824 之后就去做操作系统的 Lab,于是瞄准了 6.S801。虽然现在不做,但是也是提前配置好环境,等做的时候直接用就好了,然后就是常规踩坑操作。

环境:

Linux RicardoZ-wsl 5.10.16.3-microsoft-standard-WSL2 #1 SMP Fri Apr 2 22:23:49 UTC 2021 x86_64 GNU/Linux

记录

在依照 Guidance 执行完如下命令之后

sudo pacman -S riscv64-linux-gnu-binutils riscv64-linux-gnu-gcc riscv64-linux-gnu-gdb qemu-arch-extra

可以看到相关的依赖都已经安装完毕

image-20210907145843499

看起来一切都没问题,但是当你按照 Guidance 执行到 make qemu 的时候,就会遇到 qemu-system-riscv 一直卡在创建虚拟机环境的这一步,同时 CPU 也一直被占用(在 htop 上观察到 CPU 占用在 40% 左右)。

在等待一个小时无果之后开始 Google,得知这个 BUG 是由于 Arch Linux 源中 QEMU 的版本太高所导致的,但是总所周知 Arch Linux 是无法通过 Pacman 来实现包降级的,于是又通过一番搜索找到了 downgrade 这个软件,其可以实现包的平滑降级。

解决方式

  1. 安装 downgrade

    sudo pacman -S downgrade
    
  2. 在 sudo 模式下使用 downgrade 来降级 QEMU

    sudo downgrade qemu-arch-extra
    
  3. 在选项中选择与 Guidance 中相同版本
    image-20210907151238626

之后就是常规的安装了。但是,安装完之后会出现找不到依赖库(其实也不是找不到,只是依赖库的版本过高,做不到向后兼容)

error while loading shared libraries: liburing.so.1: cannot open shared object file: No such file or directory

那么此时按照同样的方法将 liburing 降级即可:

image-20210907151557232

最后在 6.S801 Lab 文件夹下执行 make qemu 就可以进入虚拟环境了,非常的迅速

image-20210907151756648

参考