Q: Linux rebooting directly into linux.

Eric W. Biederman
2000-11-09T14:43:16Z

I have recently developed a patch that allows linux to directly boot
into another linux kernel. With the code freeze it appears
inappropriate to submit it at this time.

Linus in principal do you have any trouble with this kind of
functionality?

The immediate applications of this code, are:
- Clusters can network can network boot over arbitrary network
interfaces, and the network driver only needs to be written and
maintained in one place.
- Multiplatform boot loaders can be written.
- The Linux kernel can be included in a boot ROM and you can still
boot other linux kernels.
- Kernel developers can have a fast interface for booting into a
development kernel.

The interface is designed to be simple and inflexible yet very
powerful. To that end the code just takes an elf binary, and a
command line. The started image also takes an environment generated
by the kernel of all of the unprobeable hardware details.

ELF was picked for it's multiplatform support and the sheer simplicity
of it's program header. Plus you can use standard tools to generate
elf images fairly easily.

The environment passed to a loaded image is designed to expand and
handle new data types without breaking old decoders. They just break
because the don't support the new hardware :)

Linus the path I envision is that this code gets integrated early in
2.5. This includes cleaning up the boot paths so all our C code has
to deal with is this new format. Then backporting the functionality
to 2.4 and possibly 2.2.

The kernel patches can be found in:
ftp://ftp.linuxnetworx.com/pub/kexec-patches-1.0.tar.gz
(This is a patchset with 4 patches
1 Ingo Molanar's improved apic support
2 My enhancements upon it so we restore the apics to their boot
state when we shut down.
3 My 2 line patch to make certain that in smp_send_stop
the last cpu running is the boot cpu. (Required by the MP spec...)
4 The code to support execing a new kernel. )

The code to generate a image bootable by this new syscall is in:
ftp://ftp.linuxnetworx.com/pub/mkelfImage-1.0.tar.gz
(This is a perl script that takes a kernel and possibly a ramdisk
and a command line and generates an elfimage suitable to be booted
in this new infrastructure)

Eric

p.s. Linus the code is not included inline because I don't expect it to
be included just yet.