Re: Determine version of kernel that produced vmcore

Neil Horman
2007-07-10T12:03:13Z

On Tue, Jul 10, 2007 at 12:13:15PM +0900, Ken'ichi Ohmichi wrote:
>
> Hi,
>
> On Fri, 6 Jul 2007 17:58:04 +0300, Dan Aloni <da-x@monatomic.org> wrote:
> > On Fri, Jul 06, 2007 at 03:28:14PM +0200, Bernhard Walle wrote:
> > > Hello,
> > >
> > > does anybody know a _reliable_ way to determine the version the kernel
> > > that produced a vmcore file? This means not scanning for a specific
> > > string or something like that which can fail on random memory.
> > >
> > > Would it make sense to add a ELF PT_NOTE section in the vmcore?
> > >
> > > Thanks for input!
>
> (CONFIGFILE means makedumpfile's config file.)
>
> makedumpfile checks kernel version by reading system_utsname.release
> from /proc/vmcore, as you know. If the release and OSRELEASE in CONFIGFILE
> don't match, makedumpfile fails.
>
> Besides Dan's plan, I'm planning the change of CONFIGFILE for distributors.
> In the kernel building process, distributors need to make CONFIGFILE
> on an older kernel (ex. RHEL5 kernel is built on RHEL4), and OSRELEASE
> may be an older kernel. So OSRELEASE should be modified to the building
> kernel version by hand, but it is not smart.
>
> To solve this problem, I'm proposing 2 plans.
> Could you give me your opinion ?
>
> Plan 1:
> A new option [--osrelease="string"] is added.
> The OSRELEASE of CONFIGFILE is overwritten by "string".
> In the kernel building process, distributors should specify "string"
> as the building kernel version.
>
> Plan2:
> Remove the OSRELEASE from CONFIGFILE.
> Instead of checking the OSRELEASE, makedumpfile only checks whether the
> area of /proc/vmcore specified by the symbol "system_utsname" in CONFIGFILE
> is the string "2.6.". If CONFIGFILE and /proc/vmcore don't match, the
> "system_utsname" must not point to the correct area in most cases.
> Old makedumpfile needs OSRELEASE, and it cannot work by new CONFIGFILE.
> But I think there are not any problems because old makedumpfile will not
> read new CONFIGFILE. Now, CONFIGFILE is used only by RHEL5's kdump initramfs,
> the CONFIGFILE is generated during 1st-kernel running. Even if CONFIGFILE
> will be updated, makedumpfile can read the CONFIGFILE because makedumpfile
> should be updated with CONFIGFILE.
>
>
> I'd like to change the name of CONFIGFILE to mkdfinfo.
>
Why not, instead of either plan above, just redefine OSRELEASE to be the version
of the kernel the config file was built against? i.e. when you build a config
file, you need to specify a kernel to extract symbol information from, why not
grab the utsname from that kernel and use that to set OSRELEASE? When you're
building a config file the running kernel on the system isn't really relevent
anyway.

Thanks & Regards
Neil

>
> Thanks
> Ken'ichi Ohmichi

--
/***************************************************
*Neil Horman
*Software Engineer
*Red Hat, Inc.
*nhorman@redhat.com
*gpg keyid: 1024D / 0x92A74FA1
*http://pgp.mit.edu
***************************************************/