gem5全系统模式下运行程序提示/tmp/runscript不存在如何解决
gem5全系统模式"/tmp/runscript: No such file or directory"报错排查解决步骤
1 排查gem5启动参数配置错误
该报错90%以上是启动模拟时--script参数配置错误导致:
- 确认
--script参数后填写的是运行gem5的主机本地的脚本路径,不是gem5模拟出来的Linux系统内部路径,不要把模拟系统内的文件路径填到这个参数后 - 检查本地路径下的runscript文件是否真实存在,拼写、相对路径/绝对路径是否正确,权限是否可读
2 排查runscript脚本内容错误
如果--script参数配置正确,继续检查runscript脚本本身的内容:
- 脚本内写的hello-world二进制执行路径,需要和模拟Linux系统内二进制的实际存放路径完全一致,比如你把二进制存到了模拟系统的
/root目录下,脚本内就要写/root/hello-world,不要填成你本地主机的路径 - 脚本格式必须是Unix格式,Windows下编辑的带
\r\n换行的脚本运行会触发路径识别错误,可在本地执行dos2unix runscript转换格式
3 排查hello-world二进制部署错误
你需要提前把编译好的二进制放到模拟Linux系统能访问到的位置,两种常用方案:
- 磁盘镜像预拷贝方案:本地提前挂载gem5磁盘镜像,把二进制拷入后再启动模拟,参考命令:
注:offset值需要根据你的磁盘镜像分区表调整,常用的gem5官方镜像offset默认是1MiB即1048576sudo mount -o loop,offset=$((1048576)) 你的磁盘镜像文件.ext2 /mnt sudo cp 本地的hello-world /mnt sudo umount /mnt - 9p共享文件夹方案:启动gem5时添加9p设备参数,进入模拟系统后挂载共享文件夹,可直接访问本地主机指定目录下的二进制
4 排查二进制编译匹配问题
如果路径都正确仍报错,确认编译环境和模拟架构匹配:
- 编译hello-world的交叉编译器必须和gem5模拟的架构一致:模拟ARM64用
aarch64-linux-gnu-g++,模拟RISC-V用riscv64-linux-gnu-g++,架构不匹配会触发二进制识别异常,出现路径不存在的误报
临时绕过方案
如果不需要自动执行脚本,等模拟Linux完全启动、登录进终端后,手动找到hello-world二进制的存放路径,直接执行./hello-world即可,不需要通过--script参数注入运行。
内容的提问来源于stack exchange,提问作者nedasadat taheri
相关产品推荐
相关产品推荐

