Small patches ("System is too big")

solar@sun1.ideal.ru (zamenhof!martin@zamenhof.demon.co.uk)
Sat, 12 Apr 1997 05:24:28 +0100 (BST)


As the kernel supports more and more hardware, I believe we'll have
more and more people posting about the "System is too big" problem.
The patch below adds a small file to the Documentation directory, and
patches arch/i386/boot/tools/build.c to point to it.

The patch is against 2.1.33, but should apply to 2.0.30 as well.

Martin

-- 
Martin Radford                       |      M.P.Radford@exeter.ac.uk
                                     |      martin@zamenhof.demon.co.uk
"Only wimps use tape backup: _real_ men just upload their important stuff
  on ftp, and let the rest of the world mirror it ;)"  - Linus Torvalds

diff -u --recursive --new-file linux-2.1.33-orig/Documentation/00-INDEX linux/Documentation/00-INDEX --- linux-2.1.33-orig/Documentation/00-INDEX Thu Jan 16 02:46:05 1997 +++ linux/Documentation/00-INDEX Sat Apr 12 04:48:12 1997 @@ -18,6 +18,8 @@ - how to access I/O mapped memory from within device drivers. SMP.txt - notes, and "To Fix" list for multi-processor Linux. (see smp.tex) +big-kernel.txt + - short notes on support for "big" (>512k) kernels. cdrom/ - directory with information on the CD-ROM drivers that Linux has. devices.tex diff -u --recursive --new-file linux-2.1.33-orig/Documentation/big-kernel.txt linux/Documentation/big-kernel.txt --- linux-2.1.33-orig/Documentation/big-kernel.txt Thu Jan 1 01:00:00 1970 +++ linux/Documentation/big-kernel.txt Sat Apr 12 04:38:39 1997 @@ -0,0 +1,22 @@ +Note: this file applies only to Linux on the i386 architecture, and +not to any of the other ports. + +As Linux has grown bigger and become more fully-featured over the +years, so has the size of the kernel. Due to an architectural +limitation of the i386 and above processors, the kernel cannot be over +512kb when using a standard compressed Image (the so-called "zImage"). +If you get the message "System is too big", then you have hit this +limit. + +This problem has been worked around by the use of the "big" zImage, or +"bzImage". To use this, you need a bootloader that can cope with +bzImages (LILO 18 or above, loadlin 1.6 or above), and to build your +kernel using: + + make bzImage instead of make zImage + make bzdisk instead of make zdisk + make bzlilo instead of make zlilo + +An alternative way round the problem is to compile some drivers as +kernel loadable modules to reduce the size of the kernel itself; read +Documentation/modules.txt for information on this. diff -u --recursive --new-file linux-2.1.33-orig/arch/i386/boot/tools/build.c linux/arch/i386/boot/tools/build.c --- linux-2.1.33-orig/arch/i386/boot/tools/build.c Wed Jul 10 11:10:59 1996 +++ linux/arch/i386/boot/tools/build.c Sat Apr 12 05:04:12 1997 @@ -256,7 +256,11 @@ #endif sys_size = (sz + 15) / 16; if (sys_size > SYS_SIZE) - die("System is too big"); + die("System is too big" +#ifndef __BIG_KERNEL__ + " - read Documentation/big-kernel.txt for advice" +#endif + ); while (sz > 0) { int l, n;