“找不到地图文件”是一个多么严重的问题。启动消息?

“找不到地图文件”是一个多么严重的问题。启动消息?

这是我问过的另一个问题的后续问题这里

总结一下:我正在尝试启动我自己配置​​和构建的 Linux 内核,作为 Linux From Scratch (LFS) 安装的一部分。但是,我在中看到以下行/var/log/kern.log

Oct 9 17:24:17 <lee_lfs> kernel: Cannot find map file.

我一直在阅读 klogd 的源代码(这是使用 SysVinit),问题似乎是映射文件不包含 klogd 正在寻找的“版本”行。

无论如何,我的问题是:这个问题有多大?这可能会导致什么类型的问题?这是我可以忽略的事情,系统仍然应该启动并运行正常,还是这是一个需要解决的问题?

答案1

这是多大的问题啊。

相当重要。例如:你的发行版可能无法使用。

这可能会导致什么类型的问题?

这有点难以判断,但如果您观察内核日志,您应该能够相当快地判断出来。

这是我可以忽略的事情,系统仍然应该启动并运行正常,还是这是一个需要解决的问题?

如果你重视稳定性,我认为这是一个不能忽视的问题。我这样说是因为没有它就很难调试系统。

嗯,我可以看到发生了一些事情。

内核未构建 system.map、未创建符号链接或某些权限导致了问题。

如果有帮助的话,system.map 也称为符号表。我之前提到过它会影响稳定性,但更多的是使系统调试变得更加困难。

以下是 Makefile 中的条目,以便您可以看到发生了什么:

nm /boot/vmlinux-2.4.18-19.8.0 > System.map
# Below is the line from /usr/src/linux/Makefile 
nm vmlinux | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > System.map
cp /usr/src/linux/System.map /boot/System.map-2.4.18-14   # For v2.4.18

所以首先要确保这个副本正在发生。

让事情变得更复杂的是,如果 klogd 没有被告知 system.map 位于哪里,它会在这里查找:

  1. /boot/系统.map
  2. /系统.map
  3. /usr/src/linux/System.map

有可能你的 Linux 内核编译输出到 /usr/src/linux-version/System.map ,而 klogd 根本看不到那里。该文件的副本会立即告诉您是否存在问题。

答案2

为了回答我自己的问题:我可以确认我构建的自定义内核确实可以启动并且似乎运行良好,即使映射文件被完全删除也是如此。因此,从启动系统的角度来看,这似乎不是一个关键要求。然而,正如 Matt O. 在他的回答中所说,如果内存位置无法与 System.map 文件包含的符号匹配,似乎可能会使调试变得更加困难。

相关内容