按官网的教程,可以成功启动x86架构的FS模式,但是在里面运行本机编译好的可执行文件时,出现“FATAL: kernel too old”的错误提示。
查阅资料后发现是由于gem5自带的x86内核版本是2.6.22.9(“uname -a”查看),但是ubuntu 14.04版本的主机编译出来的可执行文件,内核版本的最低要求是2.6.24(用命令 “file -可执行文件名” 即可知道)。
1.解决办法是提高内核版本,在网址“https://mirrors.edge.kernel.org/pub/linux/kernel/”找到自己想要的版本,我找的是3.2.60版本(本来以为不是2.6.28.4版本的不会成功,没想到也成功了):
sudo wget https://mirrors.edge.kernel.org/pub/linux/kernel/v3.0/linux-3.2.60.tar.gz
2.然后,下载config文件,后面会用到:sudo wget http://www.m5sim.org/dist/current/x86/config-x86.tar.bz2
3. 解压这两个安装包:
sudo tar xzvf linux-3.2.60.tar.gz
sudo tar jxvf config-x86.tar.bz2
4. 进入linux-3.2.60文件夹:cd linux-3.2.60
5.把config-x86.tar.bz2解压出来的configs文件里的linux-2.6.28.4复制并重命名到linux-3.2.60文件夹下:
sudo cp ../configs/linux-2.6.28.4 .config
注意.config是隐藏文件,执行 ls -a 才能看见
6.然后执行:make vmlinux -j 4就生成了一个新的vmlinux文件(过程中会有选项选择,全部默认,一直按回车)
7.现在,回到gem5目录下,执行:
sudo build/X86/gem5.opt configs/example/fs.py --kernel=/*/*/*/linux-3.2.60/vmlinux,红色部分是绝对路径。
8.其他步骤与原来相同,只不过现在仿真的时间要等更久(十分钟左右)。耐心等待,仿真成功之后再运行可执行文件,就不会报错了。
9.其他步骤参考:gem5的Full System下运行X86编译的测试程序:https://blog.csdn.net/u012822903/article/details/62444286
Gem5的FS(全系统)模拟:https://blog.csdn.net/u012822903/article/details/62227021
gem5全系统启动:FATAL: kernel too old:https://blog.csdn.net/u012822903/article/details/64519807