[lkml]   [2005]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subject[RFC/RFF][PATCH] rm -rf linux/arch/i386/boot

    I am not sure the "rm -rf linux/arch/i386/boot" is an acceptable delta
    for the current code management system, but anyways it is only the second
    step - after the attached patch has been discussed, modified and
    hopefully accepted.

    Unfortunately this second step will break compatibility with LILO and
    GRUB - the kernel would only boot with Gujin version 1.2 or more
    ( ), so we have some time before this cleanning begins,
    and have to stay compatible in between.

    In this mean time, the current patch is a complete rewrite of all
    the code executed in real mode - and so a complete replacement of all
    the directory linux/arch/i386/boot into one C file named
    arch/i386/kernel/realmode.c and its include include/asm-i386/realmode.h
    The mapping of the BIOS information reported to the kernel is the same,
    the one described in Linux/Documentation/i386/zero-page.txt - but is now
    expressed in the form of C structures.

    The kernel file becomes a lot simpler to generate, it is just an ELF
    file (the usual file linux/vmlinux you already get during the build
    process) transformed into binary by objcopy and gzip'ed. A small part
    is added during the link of vmlinux file: the content of realmode.c
    which contains a C function that the kernel need to get information
    from the BIOS (compiled with GCC / executed in real mode).
    Most of this function is written in C - have a look for yourself.
    To generate a kernel:
    make /boot/linux-2.6.13.kgz # the root filesystem will be autodetected
    make /boot/linux-2.6.13.kgz ROOT=/dev/hda3 # root filesystem forced

    You will need to install Gujin, either on a floppy, on your hard disk
    into a partition or at the end of your hard disk, or to a CDROM. No
    Configuration of Gujin is needed - because the configuration file does
    not (and will never) exists.
    Have a look at Gujin FAQ in the Documentation Manager of sourceforge
    before asking, please.

    The attached patch is made based on linux-2.6.13-rc2 , to apply to
    linux-2.6.12 you need to modify the patch replacing "phys_startup_32"
    by "startup_32" and removing " - LOAD_OFFSET" before applying.
    I will learn GIT soon - but for now...

    The generation process need to insert comments into the GZIP file, in
    the field reserved for this purpose, for instance to describe kernel
    characteristics like which processor is supported, and so the patch
    contains a BSD-licenced tool I wrote named gzcopy for the job.

    Note that there is no more limit in the size of the kernel using
    Gujin - but an "all yes config" without any modules will only boot
    up to some point: it seems that some (audio card?) driver need
    DMA able memory (i.e. below 16 Mbytes) else they crash the kernel.
    Unfortunately by default this "all yes" kernel is loaded at address
    1 Mbyte and it is far bigger than 15 Mbytes. A modification of the
    load address need some change in the kernel - Gujin is already ready
    to load anywhere you want.

    Note also that the x86_64 architecture will need some cleanning too,
    but it will only be the third step.

    Signed-off-by: Etienne Lorrain <>

    Have fun [you can check by yourself, it works],
    [unhandled content-type:application/x-gzip-compressed]
     \ /
      Last update: 2005-07-14 14:57    [W:0.029 / U:2.700 seconds]
    ©2003-2017 Jasper Spaans. hosted at Digital OceanAdvertise on this site