Re: [PATCH 12/12] i386 boot: Add an ELF header to bzImage

Vivek Goyal
2006-10-04T20:23:25Z

On Tue, Oct 03, 2006 at 09:40:56PM -0700, H. Peter Anvin wrote:
> Vivek Goyal wrote:
> >
> >Hi Andrew,
> >
> >Right now I don't have access to my test machine. Tomorrow morning,
> >very first thing I am going to try it out with your config file.
> >
> >This patch just adds and ELF header to bzImage which is not even used
> >by grub.
> >
>
> Oh yes, it will be. See below.
>
> >So without this patch you are able to boot the kernel on your laptop?
>
> Danger, Will Robinson. GRUB, Etherboot, and a whole bunch of other boot
> loaders will recognize an ELF binary and load it as such. They will
> typically load it as an executable (not a relocatable object) -- I doubt
> many of them check that appropriate part of the ELF header -- so unless
> your kernel can be safely loaded *AND RUN* in that mode this is not
> going to work.
>
> The entrypoint is going to be a major headache, since the standard
> kernel is entered in real mode, whereas an ELF file will typically be
> entered in protected mode, quite possibly using the C calling convention
> to pass the command line as (argc, argv). God only knows how they're
> going to deal with an initrd.
>
> It may very well be that the ELF magic number has to be obfuscated.
>

Eric/Peter,

How about just extending bzImage format to include some info in real mode
kernel header. Say protocol version 2.05. I think if we just include two
more fields, is kernel relocatable and equivalent of ELF memsz, then probably
this information should be enough for kexec bzImage loader to load and run
a relocatable kernel from a different address.

Thanks
Vivek