この質問については以前私に尋ねました。Linuxカーネル:「マップファイルが見つかりません」
私のLinuxカーネルバージョン(4.12.7)で作成されたSystem.mapファイルには、次の行は含まれていません。
[address] [type] Version_XXXXX
(ここで「XXXXX」は、ベース256でエンコードされたカーネルバージョンです。)
klogdがマップファイルが実行中のカーネルバージョンと同じであることを確認するために探しているものなので、ファイルにこの行を含める必要があると思います(現在はマップファイルを拒否しています)。
では、なぜこの行が生成されないのですか?以前カーネルの構築に似た問題があった人はいますか?マップファイルに関連する設定オプションはありますか?
他のユーザーが自分のSystem.mapファイルにこのような行が含まれているかどうかを確認できればと思います(特にSysVinitを実行している場合)。
答え1
私はそれを「linux-kernel」メーリングリストを通してカーネル開発チームに提出しました。彼はこれを調べた結果、カーネルバージョン2.6.27に変更があり、バージョン行はCONFIG_KALLSYMSオプションが次の場合にのみSystem.mapファイルに印刷されます。いいえ有効です。私のカーネル(そしておそらくデフォルトで他のほとんどのカーネル)のために有効になっています。これは、klogdがマップファイルを受け入れないことを意味します。
彼はバージョンラインが常に含まれるように変更したいと思いました(結局それはただのテキストの1行にすぎません)。彼はそれが次のリリースバージョンに含まれることを保証するものではありませんが、そうなることを願っています。また、CONFIG_KALLSYMS を無効にすると、必要に応じてバージョン行が印刷されます。