gem5のkernel too oldエラー

gem5を使ってみたら”kernel too old”というエラーが出てしまい使えなかった。
ぐぐってみると多くの人がここの部分で躓いていてそれらの回答はいつもソースコードを変えなければならないものだった。

どうにかならないのかなと思いつつメモ。

ターゲットがARMの場合
src/arch/arm/linux/process.cc

unameFunc32の中の
strcpy(name->release,”ここにバージョン名”);
という部分のバージョン名を今のカーネルのバージョン名に合わせることで解決した。
ちなみに今のカーネルのバージョン名はuname -rで取得できる。

ターゲットがX86の場合は
src/arch/x86/linux/process.cc
のようだ

gem5のビルドエラー

アーキテクチャのシミュレータにはgem5を使うと良いと聞き使ってみようとしたが、
以下のようなビルドエラーが発生しコンパイルできなかった。
これが解決出来たのでメモ。

tomoya@tomoya-DESK:~/gem5$ scons -c
scons: Reading SConscript files ...
AttributeError: 'NoneType' object has no attribute 'group':
  File "/home/tomoya/gem5/SConstruct", line 764:
    if not as_version or compareVersions(as_version, "2.23") < 0:
  File "/home/tomoya/gem5/src/python/m5/util/__init__.py", line 131:
    v1 = make_version_list(v1)
  File "/home/tomoya/gem5/src/python/m5/util/__init__.py", line 127:
    return map(lambda x: int(re.match('\d+', x).group()), v.split('.'))
  File "/home/tomoya/gem5/src/python/m5/util/__init__.py", line 127:
    return map(lambda x: int(re.match('\d+', x).group()), v.split('.'))

解決するにはexport LANG=Cを実行してからコンパイルすれば良い。

検索しても見つからず最終的にエラーが起きている部分をPrintfデバッグで突き止めることとなった。トホホ