Nowadays, an increasing number of systems is equipped with comparably large disks or even with multiple disks. At the time the disk interface of the standard PC BIOS has been designed (about 15 years ago), such configurations were apparently considered to be too unlikely to be worth supporting.
The most common BIOS restrictions that affect LILO are the limitation to two hard disks and the inability to access more than 1024 cylinders per disk. LILO can detect both conditions, but in order to solve the underlying problems, manual intervention is necessary.
The drive limit does not exist in every BIOS. Some modern motherboards
and disk controllers are equipped with a BIOS that supports more (typically
four) disk drives. When attempting to access the third, fourth, etc. drive,
LILO prints a warning message but continues. Unless the BIOS really
supports more than two drives, the system will not be able to
boot in that case.
The cylinder limit is a very common problem with IDE disks. There, the number of cylinders typically exceeds 1024 if the drive has a capacity of more than 504 MB. Many SCSI driver BIOSes present the disk geometry in a way that makes the limit occur near 1 GB. Modern disk controllers may even push the limit up to about 8 GB. All cylinders beyond the 1024th are inaccessible for the BIOS. LILO detects this problem and aborts the installation (unless the linear option is used, see section 3.2.2).
Note that large partitions that only partially extend into the ``forbidden zone'' are still in jeopardy even if they appear to work at first, because the file system does not know about the restrictions and may allocate disk space from the area beyond the 1024th cylinder when installing new kernels. LILO therefore prints a warning message but continues as long as no imminent danger exists.
There are four approaches of how such problems can be solved:
LILO depends on the BIOS to load the following items:
Normally, this implies that the Linux root file system should be in the ``safe'' area. However, it is already sufficient to put all kernels into /boot and to either mount a ``good'' partition on /boot or to let /boot be a symbolic link pointing to or into such a partition.
See also /usr/src/linux/drivers/block/README.ide for a detailed description of problems with large disks.