kexecing ELF image built by wraplinux or mkelf
Subodh Nijsure
nijsure.subodh at gmail.com
Tue Jul 28 11:13:52 EDT 2009
I am trying to boot ELF image that is combined kernel + ramdisk. I
have tried to use wraplinux tool to wrap these two image but kexec
doesn't seem to boot the combined image.
To keep things simple I have decided to first just wrap bzImage
wraplinux -E --output vmlinux.wrap ./arch/i386/boot/bzImage
readelf -S vmlinux.wrap
There are 5 section headers, starting at offset 0x1f4098:
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] setup PROGBITS 00010000 000080 002a00 00 WAX 0 0 16
[ 2] reloc PROGBITS 00012a00 002a80 0005bc 00 WAX 0 0 16
[ 3] kernel PROGBITS 00100000 003040 1f1038 00 A 0 0 16
[ 4] .shstrtab STRTAB 00000000 1f4078 00001e 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
I (info), L (link order), G (group), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)
I am trying to load this image in my existing kernel using following
command line ( i instrumented the kexec a bit to print info structure
to see if kexec is reading the elf image correctly
kexec --type=elf-x86 --args-elf --reuse-cmdline ./vmlinux.wrap
kexec_load: entry = 0x17d8 flags = 0
nr_segments = 4
segment[0].buf = 0x806f7b0
segment[0].bufsz = 7060
segment[0].mem = 0x1000
segment[0].memsz = 9000
segment[1].buf = 0x8076818
segment[1].bufsz = ec
segment[1].mem = 0xa000
segment[1].memsz = 1000
segment[2].buf = 0xb79f6088
segment[2].bufsz = 2fbc
segment[2].mem = 0x10000
segment[2].memsz = 3000
segment[3].buf = 0xb79f9048
segment[3].bufsz = 1f1038
segment[3].mem = 0x100000
segment[3].memsz = 1f2000
I follow this my kexec -e and my machine "hangs".
Anybody has tried booting output of wraplinux using kexec? I have had
similar problems with mkelf-linux tool chain as well...
/Subodh
More information about the kexec
mailing list