感谢支持
我们一直在努力

解决gem5/M5 模拟器“kernel too old”错误

编译安装了gem5 ARM架构的模拟器,运行使用arm-linux-gcc-4.4.3交叉编译链编译的文件时,出现了如下错误:


%——————————————————————————————————————–%


**** REAL SIMULATION ****
info: Entering event queue @ 0.  Starting simulation…
FATAL: kernel too old
panic: Page table fault when accessing virtual address 0x18

 @ cycle 351000
[invoke:build/ARM/sim/faults.cc, line 70]
Memory Usage: 624444 KBytes
Program aborted at cycle 351000
Aborted (core dumped)


%——————————————————————————————————————–%


在google搜索一些资料之后,原因和解决方法如下:


出现“kernel too old” 的原因是不同版本的glibc库文件要依赖于不同版本的linux内核版本,并且编译器会限定运行该可执行文件所需的最低的内核版本。在编译时使用的编译器的版本比较高,它所指定的最低linux内核版本要高于m5声明的内核版本。


所以有两种解决方案。


第一种,调高m5声明的kernel版本。


找到源文件:


src/arch/arm/linux/process.cc:  //不同架构请修改对应的arch


如下代码段:67-71行


    strcpy(name->sysname, “Linux”);
    strcpy(name->nodename, “m5.eecs.umich.edu”);
    strcpy(name->release, “x.x.xx“);
    strcpy(name->version, “#1 Mon Aug 18 11:32:15 EDT 2003”);
    strcpy(name->machine, “armv7l”);


修改 strcpy(name->release, “x.x.xx“) —–>strcpy(name->release, “2.6.35“);


我的arm-linux-gcc版本是4.4.3,将上述代码修改为 “2.6.35”。如有需要,请查找内核版本号历史,修改更高一点。


保存,重新编译m5,即可成功运行。




第二种,使用较低版本的arm-linux-gcc


我没有测试第二种,应该是可以的,只要将arm-linux-gcc的版本将下来,对内核版本的要求自然就低了。

赞(0) 打赏
转载请注明出处:服务器评测 » 解决gem5/M5 模拟器“kernel too old”错误
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏