Re: Kernels > 1M

Zack Weinberg (zack@bitmover.com)
Sun, 22 Aug 1999 15:14:33 -0700


"H. Peter Anvin" wrote:
> Derek Wildstar wrote:
> >
> > So my question is, as things are now vmlinux requires extra processing
> > before it can be loaded by a boot loader. What's the harm in using a boot
> > loader that can handle the native linker format? Does it break other
> > things? (I'll be the first to admit i don't know the internals of boot
> > loaders, so forgive me and please correct me if i'm way off here)
> >
>
> Yes, it breaks the entire boot protocol, with initrd etc, as well as
> require a helluva lot more complex boot loader. Furthermore, it breaks
> *all* existing boot loaders. vmlinux is *NOT* a complete Linux kernel
> -- it only contains the 32-bit part. The hybrid 16/32-bit nature of the
> i386/PC architecture unfortunately requires a 16-bit setup stage, which
> cannot be well supported in this format.

[...]
> In short, you're proposing a massive project, and hasn't come up with
> any justification other than the fact that "the other guys do it", which
> is no justification at all.

I think you're mistaken about the size of the project. Move the 16
bit setup code to setup_arch and convert for execution in protected
mode. I don't say this is easy, but it won't take that long for
someone who understands the platform inside out. The code to set up a
v86 box and call the bios is already in apm.c. Now throw away that
stupid parameter block and put everything on the kernel command line.
Again, not necessarily easy, but short.

Now vmlinux is a complete image bootable by any loader that
understands ELF. There are at least three of these already (grub;
FreeBSD loader; Solaris/x86 /boot). Backward compatibility headers
already exist; they're what was left after you whacked the
hardware-banging code out of setup.S.

What's the win? It's easier to write a bootloader that can load
multiple different OS's, because the "other guys" are _all_ using ELF
images. Look at it that way, and it's not another format to support;
it's two formats (zImage, bzImage) you no longer have to support. It
is also easier to boot from environments other than bog standard PC.
EFI and netboot come to mind.

zw

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/