Missing version line in System.map file?

From: Lee Strobel
Date: Tue Nov 28 2017 - 22:26:39 EST


Hi,

I have a question about the Linux kernel, which I have been trying to
find an answer to through various forums for some time now, but without
success. I'm wondering if anyone on this mailing list might be able to
help?

I've been trying to build a Linux From Scratch (LFS) system, using
SysVinit and sysklogd. However, when I tried to boot up, klogd wasn't
accepting the System.map file, printing log messages such as:

Oct 9 17:24:17 <lee_lfs> kernel: klogd 1.5.1, log source = /proc/kmsg
started.
Oct 9 17:24:17 <lee_lfs> kernel: Inspecting /boot/System.map
Oct 9 17:24:17 <lee_lfs> kernel: Cannot find map file.

So, I dug into the source code for klogd a little bit, and it appears
the reason the map file wasn't being accepted was because it didn't
contain a 'version' line, which klogd was looking for, in the form:

[address] [type] Version_XXXXX

(where XXXXX is the kernel version # in base 256).

So, I've been asking around on various forums. It seems that none of the
map files that are being produced by more recent kernel versions include
this line and no-one that I've spoken to on the Linux user forums seems
to know why this is.

Was a change made to the kernel, to remove this 'version' line
from the map file? If so, how are the newer init systems verifying that
the map file is the same version as the running kernel? Perhaps sysklogd
needs to be updated?

By the way, I tried adding a 'dummy' version line to my map file and
klogd accepted it fine.

Hopefully someone out there can assist, as no-one in the Linux user
community seems to know what is going on with this.

Best regards,

Lee Strobel
Engineer/Tinkerer/Free Software Supporter ..