You are wrong. I remember the discussion and even gave an example as
1413 kB ( <1.44MB ) kernel does not build as bzimage.
Short analysis of
arch/i386/boot/bootsect.S
and
arch/i386/boot/setup.S
shows that size of kernel to be load is stored in
syssize:
.word SYSSIZE
i.e. should not exceed
(2^16 - 1) * 16 Bytes
This is the limit of internal (used to boot from a floppy) bootloader.
I don't know if lilo/loadlin use this variable in kernel loading procedure,
however. If they use the code from setup.S to load the kernel into memory
the problem exists. If they use their own code - the problem probably goes
away.
Modification .word -> .dword is not trivial.
This kernel size limit is controlled during build process in
arch/i386/boot/tools/build.c :
u32 sys_size;
[...]
if (sys_size > (is_big_kernel ? 0xffff : DEF_SYSSIZE))
die("System is too big. Try using %smodules.",
is_big_kernel ? "" : "bzImage or ");
[...]
buf[0] = (sys_size & 0xff);
buf[1] = ((sys_size >> 8) & 0xff);
if (write(1, buf, 2) != 2)
die("Write of image length failed");
sys_size contains value (size of hernel)/16 rounded up.
> >
> > It seems that you have reached the limit (1MB - 16B) of the kernel size
> > on i386 that can be currently handled by its internal bootloader.
> > I don't know if it is possible for lilo/loadlin to handle larger kernels.
> >
> > The reason is that kernel size is 16bit intereger counting 16 byte chunks.
> > It is possible to modify it, however it could introduce many problems
> > with backward compatibility and needs somebody to rewrite bootloaders.
> >
Andrzej
-- ======================================================================= Andrzej M. Krzysztofowicz ankry@mif.pg.gda.pl phone (48)(58) 347 14 61 Faculty of Applied Phys. & Math., Technical University of Gdansk- 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/