[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.026 / U:25.880 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site