Skip to contentSkip to conversation

kdump from x86_64 using i386 capture kernel

DISCUSSION Stanislaw Gruszka 2 participants 6 messages Jan 4, 2008 – Jan 5, 2008

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi.

I would like to do generic capture system which could be used for x86_64 and i386 first kernels. This system should be minimal, only capable to copy vmcore image over network for futher analysis. First kernel version is 2.6.23.9, I choose 2.6.16.y for capture.

I have some problems with vmcore when origin is x86_64. With 32 bit kexec crash utility do not recognize it, when I use 64 bit kexec /proc/vmcore file has size == 0. Reading form oldmem is fine, I can for example get old dmesg from it.

Now questions:
It is possible to achieve valid vmcore when first is x86_64 and capture is i386 ?
If no, is there some way to convert oldmem to valid vmcore in this scenario? Or maybe is possible to use crash with copy of oldmem (I try but without any success) ?

Regards
Stanislaw Gruszka

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

#1 lore raw
Quoted 7 lines · Stanislaw Gruszka

Hi.

I would like to do generic capture system which could be used for x86_64 and i386 first kernels. This system should be minimal, only capable to copy vmcore image over network for futher analysis. First kernel version is 2.6.23.9, I choose 2.6.16.y for capture.

Quoted 8 lines

I have some problems with vmcore when origin is x86_64. With 32 bit kexec crash utility do not recognize it, when I use 64 bit kexec /proc/vmcore file has size == 0. Reading form oldmem is fine, I can for example get old dmesg from it.

Now questions:
It is possible to achieve valid vmcore when first is x86_64 and capture is i386 ?

Possible I think, but not reliable. If oldmem has regions to capture above the 4GB range, a 386 kernel won't be able to access those addresses, and as such, you won't get a complete vmcore.

Quoted 4 lines

If no, is there some way to convert oldmem to valid vmcore in this scenario? Or maybe is possible to use crash with copy of oldmem (I try but without any success) ?

Doubtful, given that you may not be able to access all the needed data in the first place.

I'm also confused about what exactly you are trying to accomplish. Why are you trying to use an x86 kernel to capture a x86_64 vmcore? The available kexec-tools package in Fedora and RHEL provides a arch independent utility to build a minimal initrd to capute vmcores via a number of targets, including via nfs and ssh already (mkdumprd), have you looked at the Fedora package? It may well provide most/all of what you are trying to do.

Regards
Neil

Quoted 7 lines

Regards
Stanislaw Gruszka

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

Signature · 13 lines
/***************************************************
 *Neil Horman
 *Software Engineer
 *Red Hat, Inc.
 *[email protected]
 *gpg keyid: 1024D / 0x92A74FA1
 *http://pgp.mit.edu
 ***************************************************/

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec
#2 lore raw
Quoted 5 lines · Neil Horman
Quoted 2 lines

It is possible to achieve valid vmcore when first is x86_64 and capture is i386 ?

Possible I think, but not reliable. If oldmem has regions to capture above the 4GB range, a 386 kernel won't be able to access those addresses, and as such, you won't get a complete vmcore.

Uffff, I missed this fact.

Quoted 2 lines

I'm also confused about what exactly you are trying to accomplish. Why are you trying to use an x86 kernel to capture a x86_64 vmcore? The available

System load from flash and there is limited space. I tried to do one capture kernel, but see this was bad idea. I will scarify another 2MB and make separate image for x86_64.

Quoted 4 lines

kexec-tools package in Fedora and RHEL provides a arch independent utility to build a minimal initrd to capute vmcores via a number of targets, including via nfs and ssh already (mkdumprd), have you looked at the Fedora package? It may well provide most/all of what you are trying to do.

I will see, thanks.

Stanislaw Gruszka

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

#3 lore raw
Quoted 6 lines · Stanislaw Gruszka
Quoted 5 lines · Neil Horman
Quoted 2 lines

It is possible to achieve valid vmcore when first is x86_64 and capture is i386 ?

Possible I think, but not reliable. If oldmem has regions to capture above the 4GB range, a 386 kernel won't be able to access those addresses, and as such, you won't get a complete vmcore.

Quoted 8 lines

Uffff, I missed this fact.

Quoted 2 lines

I'm also confused about what exactly you are trying to accomplish. Why are you trying to use an x86 kernel to capture a x86_64 vmcore? The available

System load from flash and there is limited space. I tried to do one capture kernel, but see this was bad idea. I will scarify another 2MB and make separate image for x86_64.

I'm still not quite understanding, the kernel image that you used to initally boot the box should be suitable for loading as the kdump image. Even if you're using i386 instead of x86_64 as your kdump kernel, you still need to maintain two images.

Quoted 6 lines
Quoted 4 lines

kexec-tools package in Fedora and RHEL provides a arch independent utility to build a minimal initrd to capute vmcores via a number of targets, including via nfs and ssh already (mkdumprd), have you looked at the Fedora package? It may well provide most/all of what you are trying to do.

I will see, thanks.

Let me know if you have questions.
Neil

Quoted 1 line

Stanislaw Gruszka

Signature · 13 lines
/***************************************************
 *Neil Horman
 *Software Engineer
 *Red Hat, Inc.
 *[email protected]
 *gpg keyid: 1024D / 0x92A74FA1
 *http://pgp.mit.edu
 ***************************************************/

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec
#4 lore raw
Quoted 16 lines · Neil Horman
Quoted 6 lines · Stanislaw Gruszka
Quoted 5 lines · Neil Horman
Quoted 2 lines

It is possible to achieve valid vmcore when first is x86_64 and capture is i386 ?

Possible I think, but not reliable. If oldmem has regions to capture above the 4GB range, a 386 kernel won't be able to access those addresses, and as such, you won't get a complete vmcore.

Quoted 8 lines

Uffff, I missed this fact.

Quoted 2 lines

I'm also confused about what exactly you are trying to accomplish. Why are you trying to use an x86 kernel to capture a x86_64 vmcore? The available

System load from flash and there is limited space. I tried to do one capture kernel, but see this was bad idea. I will scarify another 2MB and make separate image for x86_64.

Quoted 4 lines

I'm still not quite understanding, the kernel image that you used to initally boot the box should be suitable for loading as the kdump image. Even if you're using i386 instead of x86_64 as your kdump kernel, you still need to maintain two images.

Turn on CONFIG_RELOCATABLE and using same kernel for work and capture is the best for size requirement. However size is not only one requirement, I need to capture kernel work reliably. RELOCATABLE is masked as experimental, so I like to avoid it. Additionally, if I use same kernel for capture, it could have same bugs and crash too during start up. So I decided to use separate 2.6.16.y kernel for capture. This version, maintained by Adrian Bunk, have many bug fixes and I think is very stable. Kernel config is different too, I do not only remove device drivers and modules, but also hardcoded things from Process Type and Features, Power Management and so on ... , just enough to boot and setup network with minimal probability of crash.

Stanislaw Gruszka

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec

#5 lore raw
Quoted 21 lines · Stanislaw Gruszka
Quoted 16 lines · Neil Horman
Quoted 6 lines · Stanislaw Gruszka
Quoted 5 lines · Neil Horman
Quoted 2 lines

It is possible to achieve valid vmcore when first is x86_64 and capture is i386 ?

Possible I think, but not reliable. If oldmem has regions to capture above the 4GB range, a 386 kernel won't be able to access those addresses, and as such, you won't get a complete vmcore.

Quoted 8 lines

Uffff, I missed this fact.

Quoted 2 lines

I'm also confused about what exactly you are trying to accomplish. Why are you trying to use an x86 kernel to capture a x86_64 vmcore? The available

System load from flash and there is limited space. I tried to do one capture kernel, but see this was bad idea. I will scarify another 2MB and make separate image for x86_64.

Quoted 4 lines

I'm still not quite understanding, the kernel image that you used to initally boot the box should be suitable for loading as the kdump image. Even if you're using i386 instead of x86_64 as your kdump kernel, you still need to maintain two images.

Quoted 11 lines

Turn on CONFIG_RELOCATABLE and using same kernel for work and capture is the best for size requirement. However size is not only one requirement, I need to capture kernel work reliably. RELOCATABLE is masked as experimental, so I like to avoid it. Additionally, if I use same kernel for capture, it could have same bugs and crash too during start up. So I decided to use separate 2.6.16.y kernel for capture. This version, maintained by Adrian Bunk, have many bug fixes and I think is very stable. Kernel config is different too, I do not only remove device drivers and modules, but also hardcoded things from Process Type and Features, Power Management and so on ... , just enough to boot and setup network with minimal probability of crash.

I understand your concerns, but Just so that you know, we've been using CONFIG_RELOCATABLE in RHEL5 for some time now, without issue (at least not as it relates to the relocatable feature). While its true that, if a kernel crashes during boot up, it is like to crash again during kdump boot up, the inverse is also true. Once you have a reasonably stable system that boots reliably, you can expect the kdump kernel to boot reliably as well. Turning off relocatability won't help with that (unless the problem specifically relates to the relocatable code) (i.e. if you have an issue with in insmodding of a network driver), it will crash on normal boot and kdump kernel boot, regadless of weather its relocatable or not).

Neil

Quoted 1 line

Stanislaw Gruszka

Signature · 13 lines
/***************************************************
 *Neil Horman
 *Software Engineer
 *Red Hat, Inc.
 *[email protected]
 *gpg keyid: 1024D / 0x92A74FA1
 *http://pgp.mit.edu
 ***************************************************/

_______________________________________________
kexec mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/kexec