关于我之前问过的这个问题: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 不会接受映射文件。
他说,就他而言,他会很高兴对其进行更改,因此版本行始终包含在内(毕竟,它只是一行文本)。他不保证它将进入下一个发布的版本,但希望它会。同时,如果需要,禁用 CONFIG_KALLSYMS 应该会导致打印该版本行。