我已经安装了Gem5。我想做一个完整的系统模拟。我添加了M5_PATH
echo "export M5_PATH==/home/sam/security/gem5/full/" >> ~/.bashrc我将所有系统映像和配置文件放在以下目录下:
:~/security/gem5/full$ ls
binaries configs config-x86.tar.bz2 disks x86-system.tar.bz2 x86-system.tar.bz2.1我将SysPaths.py文件中的路径更改为:
paths = [ '/dist/m5/system', 'full' ]并在Benchmark.py中更新了以下行
return env.get('LINUX_IMAGE', disk('linux-x86.img'))Gem5编译成功,我正在运行以下命令:
./build/X86/gem5.opt configs/example/fs.py --disk-image=/home/sam/security/gem5/full/disks/linux-x86.img 但是我得到了一个错误,它找不到系统文件的路径。
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.发布于 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.img和x86_64-vmlinux-2.6.22.9的磁盘不再需要了,您可以随意传递多个磁盘,可以使用多个--disk-image选项,参见:如何在gem5 fs.py仿真中附加多个磁盘映像?M5_PATH,但您还需要将引导加载程序指向:
fs.py -引导加载器./system/arm/bootloader/arm 64/boot.arm64如果您错过了这些文件中的任何一个,就会使用M5_PATH。
请注意,与PATH搜索算法一样,没有/的路径仅在M5_PATH下搜索,因此,如果要指向当前目录中的文件,则需要添加./,如下所示:
fs.py --kernel ./vmlinux另见:为什么要在bash中运行./ (点斜杠)之前使用可执行文件或脚本名?
旧答案
gem5对某些路径名很挑剔,但您不需要对其进行修补就可以实现良好的映像设置。
例如,这个工作装置 with gem5 e2656006df442a995bf80ee03fa9700d6ec14537本质上运行:
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包含:
./disks/linux-bigswap2.img
./binaries/x86_64-vmlinux-2.6.22.9这两个文件都是我用以下方法生成的从这里开始虚拟文件:
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调试它:然后简单地找出为什么某些东西不适合您。
https://stackoverflow.com/questions/56319473
复制相似问题