[lkml]   [2002]   [Jan]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subject[RFC] x86 ELF bootable kernels/Linux booting Linux/LinuxBIOS

    I have been working on this quietly and now my pieces generally work,
    and I am down to dotting the i's, and crossing the t's. As my start
    of pushing for inclusion I want to get some feedback (in case I have
    missed something), and to give some feedback so people understand what
    I am doing.

    First the connections.
    - I have a patch I am maintaining (kexec) for booting linux and other
    OS's from linux. This patch is not x86 specific (it does take
    architecture specific code). It takes as input an ELF file.

    - I am working on a native LinuxBIOS port of Linux, and LinuxBIOS
    takes as an input a ELF formated kernel.

    - I need regularly network boot with etherboot, and an ELF formated
    kernel can be used natively. bzImage needs help.

    - It is a pain not when switching platforms alpha/ia32/xxx to have to
    completely change your toolchain for booting the linux kernel.

    - I have a patch that makes the x86 linux kernel natively ELF

    What a bootable ELF formatted kernel is.
    - A list of segments that say load this chunk of file at this physical

    - An 32bit entry point. (64bit on 64bit platforms).

    - Code at that entry point to query from the firmware/BIOS the
    information the kernel needs.

    My next step is to integrate all of my pieces and do some cleanup but
    I have functioning code for everything.

    An x86 ELF bootable kernel:

    A patch to boot an arbitrary static ELF executeable.

    A kernel fix to do proper SMP shutdown so that you can kexec on a SMP kernel

    A kernel patch that implements minimal some LinuxBIOS support.

    A standalone executable to adapt an existing x86 bzImage to be an ELF
    bootable kernel.

    A first draft of a specification that goes into detail about how an
    ELF image is interpreted, and extensions that can be added so the
    bootloader name, the bootloader version, and similar interesting but
    functionally unnecessary information can be passed to the loaded
    image, and so the bootloader can find out similar kinds of information
    about the ELF executable it is loading.

    For what it is worth I have gotten fairly positive feedback from both
    the Etherboot and the LinuxBIOS communities so far. And etherboot
    and memtest86 have both been modified already to be ELF bootable. And
    there is current work that gets a long ways with Plan9.

    My kexec work is direct competition to two kernel monte, bootimage,
    lobos. I have been using it in production for about a year, and I
    haven't encountered real problems. The biggest issue I have had is
    with the kernel not properly shutting down devices.

    In the short term shutting down devices is trivially handled by
    umounting filesystems, downing ethernet devices, and calling the
    reboot notifier chain. Long term I need to call the module_exit
    routines but they need a little sorting out before I can use them
    during reboot. In particular calling any module_exit routing that clears
    pm_power_off is a no-no.

    Also while it should work in most cases any loaded ELF image that
    starts using BIOS/firmware services to drive the hardware is on it's
    own. Putting all devices back in a state that they match the
    firmwares cached state is a poorly defined problem. However normal
    firmware calls that ask if for the memory size or IRQ routing
    information should work correctly.

    More on etherboot can be found at:

    More on LinuxBIOS can be found at:

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

     \ /
      Last update: 2005-03-22 13:15    [W:0.025 / U:3.164 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site