Debug-OpenSBI版本错误

碎碎念流水账一篇……
代码链接:https://github.com/arceos-org/oscamp/tree/main/arceos

问题

运行tour/h_1_0,在虚拟化准备阶段就报非法指令错误。

排查流程

  1. hypervisor需要硬件和sbi共同支持才能正常运作,查看平台日志,发现该OpenSBI只支持s态和u态,不支持hypervisor(没有h):

    1
    Boot HART ISA   : rv64imafdcsu
  2. 查看opensbi版本,发现为v0.9,上网查询发现v1.0及以上支持hypervisor

  3. opensbi版本一般是跟随安装的qemu的,观察日志,使用了qemu-system-riscv64工具:
    alt text
    故查询qemu-system-riscv64版本,发现比之前安装的qemu 7.0.0版本要低

  4. 查看一开始安装qemu的方法,是安装包手动安装,应该比较稳定,不会被包管理器之类的更新,添加的PATH也还在,但是which qemu-system-riscv64却显示的是另一个路径下的该工具

  5. 结论:之前某次用包管理器批量安装工具的时候可能隐含了这个,导致系统中有多个qemu-system-riscv64,且qemu 7.0.0不是最优先的。

  6. 解决方案:
    在.bashrc最后加一个export,直接把qemu-7.0.0的路径放到PATH变量的最前面。

    1
    export PATH=/root/qemu-7.0.0/build:$PATH

唉…… 版本问题真是闹心