首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gem 5 IOError:找不到系统文件的路径。全系统X86仿真装置

Gem 5 IOError:找不到系统文件的路径。全系统X86仿真装置
EN

Stack Overflow用户
提问于 2019-05-27 03:52:05
回答 1查看 2K关注 0票数 2

我已经安装了Gem5。我想做一个完整的系统模拟。我添加了M5_PATH

代码语言:javascript
复制
echo "export M5_PATH==/home/sam/security/gem5/full/" >> ~/.bashrc

我将所有系统映像和配置文件放在以下目录下:

代码语言:javascript
复制
  :~/security/gem5/full$ ls
binaries  configs  config-x86.tar.bz2  disks  x86-system.tar.bz2  x86-system.tar.bz2.1

我将SysPaths.py文件中的路径更改为:

代码语言:javascript
复制
                paths = [ '/dist/m5/system', 'full' ]

并在Benchmark.py中更新了以下行

代码语言:javascript
复制
            return env.get('LINUX_IMAGE', disk('linux-x86.img'))

Gem5编译成功,我正在运行以下命令:

代码语言:javascript
复制
 ./build/X86/gem5.opt configs/example/fs.py  --disk-image=/home/sam/security/gem5/full/disks/linux-x86.img 

但是我得到了一个错误,它找不到系统文件的路径。

代码语言:javascript
复制
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "build/X86/python/m5/main.py", line 438, in main
    exec(filecode, scope)
  File "configs/example/fs.py", line 335, in <module>
    test_sys = build_test_system(np)
  File "configs/example/fs.py", line 93, in build_test_system
    cmdline=cmdline)
  File "/home/sam/security/gem5/configs/common/FSConfig.py", line 614, in makeLinuxX86System
    makeX86System(mem_mode, numCPUs, mdesc, self, Ruby)
  File "/home/sam/security/gem5/configs/common/FSConfig.py", line 539, in makeX86System
    disk0.childImage(mdesc.disk())
  File "/home/sam/security/gem5/configs/common/Benchmarks.py", line 59, in disk
    return disk(self.diskname)
  File "/home/sam/security/gem5/configs/common/SysPaths.py", line 63, in __call__
    raise IOError("Can't find a path to system files.")
IOError: Can't find a path to system files.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-27 06:48:54

更新2020-01

https://gem5-review.googlesource.com/c/public/gem5/+/23672/7审查的82f6d6e90f36e400db1f38eef5fe17430313458e中,CLI精神错乱已大大减少:

  • 如果您显式地指向所有必需的文件,那么M5_PATH在X86上不再是必需的: fs.py --内核路径/to/vmlinux--磁盘映像路径/to/rootfs.ext 2 第二个名为linux-bigswap2.imgx86_64-vmlinux-2.6.22.9的磁盘不再需要了,您可以随意传递多个磁盘,可以使用多个--disk-image选项,参见:如何在gem5 fs.py仿真中附加多个磁盘映像?
  • 在ARM上,也可以免除M5_PATH,但您还需要将引导加载程序指向: fs.py -引导加载器./system/arm/bootloader/arm 64/boot.arm64

如果您错过了这些文件中的任何一个,就会使用M5_PATH

请注意,与PATH搜索算法一样,没有/的路径仅在M5_PATH下搜索,因此,如果要指向当前目录中的文件,则需要添加./,如下所示:

代码语言:javascript
复制
fs.py --kernel ./vmlinux

另见:为什么要在bash中运行./ (点斜杠)之前使用可执行文件或脚本名?

旧答案

gem5对某些路径名很挑剔,但您不需要对其进行修补就可以实现良好的映像设置。

例如,这个工作装置 with gem5 e2656006df442a995bf80ee03fa9700d6ec14537本质上运行:

代码语言:javascript
复制
M5_PATH=/full/path/to/system \
  build/X86/gem5.opt \
  configs/example/fs.py \
  --disk-image /any/path/to/rootfs.ext2 \
  --kernel /any/path/to/vmlinux

/full/path/to/system包含:

代码语言:javascript
复制
./disks/linux-bigswap2.img
./binaries/x86_64-vmlinux-2.6.22.9

这两个文件都是我用以下方法生成的从这里开始虚拟文件:

代码语言:javascript
复制
dd if=/dev/zero of=./binaries/linux-bigswap2.img count=1 bs=16k
touch disks/x86_64-vmlinux-2.6.22.9

是的,这是一个可怕的解决办法,宝石5固执己见的图像搜索.如果你亲自通过gem5和--kernel的话,应该有人给--disk-image--kernel打补丁,不要找那些图片.

和往常一样,尝试用prints和PDB调试它:然后简单地找出为什么某些东西不适合您。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56319473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档