Re: System is too big

Richard B. Johnson (
Wed, 7 Apr 1999 09:19:23 -0400 (EDT)

On Wed, 7 Apr 1999, Riley Williams wrote:

> Hi there.
> > # make bzImage
> > [...]
> > Root device is (3, 2)
> > Boot sector 512 bytes.
> > Setup is 3432 bytes.
> > System is 1412 kB
> > System is too big. Try using modules.
> > make[1]: *** [bzImage] Error 1
> > make[1]: Leaving directory `/usr/src/linux/arch/i386/boot'
> > make: *** [bzImage] Error 2
> > What is the reason of size limit for bzImage ?
> I would presume that's connected with the 640k limit again, but in a
> different way - presumably, the bzImage loader has its own limit on
> the kernel size it can handle before it runs out of conventional
> memory to buffer through...

The zImage size limit is available space within the IBM (Not Intel)
architecture limit. Intel's limit is 1 megabyte +/- a few bytes (depends
upon segment:offset used) . The bzImage limit is the available size on a
1.44 megabyte floppy. It could be changed.

Both loaders use the BIOS to read from disk and put data into memory.
zImage data is loaded at 0x1000:0 and can go to 0x9000:0xFFFF. This
means (0x9000 - 0x1000) x 0x10 = 0x80000 = 524,288 Plus offset of
0xFFFF = 589,824 bytes. This is the maximum size for zImage.

The loader for bzImage uses BIOS interrupt 0x15, function 0x85 (block
move), to copy data read, from a real-mode buffer to memory starting
at 1 megabyte upwards to 16 megabytes. This allows the maximum size
to be 15 megabytes. This limitation is due to the GDT set for a
24-bit address.

Intel should not be blamed. It was IBM that decided that there should
be ROM-BIOS blocks of grud cluttering up fixed locations in memory.
Adding a screen regen buffer at either of two locations compounded
the mess.

Dick Johnson
Penguin : Linux version 2.2.5 on an i686 machine (400.59 BogoMips).
Warning : It's hard to remain at the trailing edge of technology.

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