I've noticed an irritating message when klogd starts up. It says:
Cannot find map file.
I traced the cause of this message. System.map is a dump of the kernel
symbols using nm. klogd finds the System.map, but rejects it because
there is no symbol with the name "Version_xxxxxx" where xxxxxx is a
decimal conversion of the kernel's major/minor/patch (e.g. 2.6.32).
Researching some more, it looks like the kernel removed this symbol by
default somewhere around 2.6.27. sysklogd has not been updated since 2007.
I checked some other distros. The ones I found still have the Version_
symbol (grep Version_ System.map). They are generally using older
kernels with back ported patches.
My understanding is that klogd reads the symbols to translate kernel
oops to symbols. I think I saw that the kernel is now doing that
internally. In that case, there is no need for klogd to read System.map
at all.
To stop klogd from trying to read System.map, it requires passing -x in
the command line. We can do that easily in the boot scripts.
What this also implies is that we don't need to copy System.map to /boot
at all. My analysis may have not gone deep enough, but I want to get
this out for other opinions.
-- Bruce
P.S. It appears that the Version string can be turned on in the
kernel's make menuconfig, but it's not particularly easy:
Symbol: KALLSYMS [=y]
Prompt: Load all symbols for debugging/ksymoops
Defined at init/Kconfig:780
Depends on: EMBEDDED
Location:
-> General setup
-> Configure standard kernel features (for small systems)
Change (for small systems) to yes, select the submenu, turn off "Load
all symbols"
--
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page