碎碎念流水账一篇……
代码链接:https://github.com/arceos-org/oscamp/tree/main/arceos
问题
运行tour/h_1_0,在虚拟化准备阶段就报非法指令错误。
排查流程
hypervisor需要硬件和sbi共同支持才能正常运作,查看平台日志,发现该OpenSBI只支持s态和u态,不支持hypervisor(没有h):
1
Boot HART ISA : rv64imafdcsu
查看opensbi版本,发现为v0.9,上网查询发现v1.0及以上支持hypervisor
opensbi版本一般是跟随安装的qemu的,观察日志,使用了qemu-system-riscv64工具:
故查询qemu-system-riscv64版本,发现比之前安装的qemu 7.0.0版本要低查看一开始安装qemu的方法,是安装包手动安装,应该比较稳定,不会被包管理器之类的更新,添加的PATH也还在,但是
which qemu-system-riscv64
却显示的是另一个路径下的该工具结论:之前某次用包管理器批量安装工具的时候可能隐含了这个,导致系统中有多个qemu-system-riscv64,且qemu 7.0.0不是最优先的。
解决方案:
在.bashrc最后加一个export,直接把qemu-7.0.0的路径放到PATH变量的最前面。1
export PATH=/root/qemu-7.0.0/build:$PATH
唉…… 版本问题真是闹心