Linux on 1024 cylinder

Support knowledgebase (1024_Zylinder)
Applies to

SuSE Linux: Versions up to (including) 7.0
This article refers to an older version of SuSE Linux. Some of the information in this article may be outdated. Also, some links may not be valid.

Symptom:

LILO cannot find boot kernels while booting from hard disk and halts at LI - or at another incomplete piece of the word LILO (Refer to "LILO fails: Error messages and their interpretation" (kgw_lilo_errmsg.html)).

Cause:

At system start, only the BIOS drivers are available for LILO to access hard disks. For this reason, the accessible area is limited to The last two restrictions are only partially valid on modern PCs:

Recent BIOSes partly allow access to additional devices, for example, up to four instead of two EIDE disks. Some very recent combinations of BIOS and SCSI host adapters include the option to "shift" the SCSI disks to the first place to make them bootable. Unfortunately, these features are not standard yet.

A lot of SCSI host adapters are able to "show" the system a different geometry of the disks. The last chapter 6.2 "SCSI details" of the Large-Disk-HOWTO /usr/share/doc/howto/en/Large-Disk-HOWTO.gz gives an overview.

Despite this, the 1024 cylinder limitation remains. This limitation may become more restrictive by using the LILO linear option (kgw_lilo_linear.html).

For clarity, the phrase "1024 cylinder limitation" describes the accessible area of a disk.

Solution:

LILO needs access to the following data, all of it below the 1024 cylinder limitation: In summary, less than 2 MB is needed. /boot and the Linux kernels are usually located in the Linux root partition. Nevertheless, this is not mandatory. You are even allowed to put this data on other operating systems partitions, but you might encounter errors then.

What choices do you have with regard to that restriction?

If you are using another boot manager with the capability to start logical partition itself, you may install LILO there. However, the OS/2 boot manager ( maddin_os2linux.html) sometimes fails.

LILO in Foreign Partitions

Perhaps other operating systems are located totally in the 1024 cylinder area and you do not want to make new partitions.

If you have a foreign partition settled completely within cylinder 1024 and Linux permits read and write access to the associated file system (e.g., FAT or Win95-VFAT), you might install LILO data, except the boot sector, there. Unfortunately, this procedure is not reliable, because the foreign operating system might cause confusion, if the partition outreaches cylinder 1023 (and you have no chance to save LILO data within cylinder 1024) it would make it worse)

Warning: Beware of installing LILO boot sector into a foreign partition, because the associated file system will be damaged.

Consequently, you should use the starting point of an extended partition (if located within 1024 cylinder limitation) or MBR for installing LILO boot sector

Example 1

Suppose, you have mounted an appropriate MS-DOS partition as /dos. LILO should be located in the MBR, /dev/hda, and should also boot DOS from /dev/hda1.
  1. Create boot disks (kgw_bootdisketten.html) for MSDOS and Linux and test them. You can then recreate the MBR, if necessary.
  2. Create a directory, for example, /dos/LINUX and copy LILO data from /boot and the Linux kernels.
  3. Create a file /dos/LINUX/lilo.conf. All paths should point to /dos/LINUX:
    # LILO configuration file foreign partition
    # Start LILO global Section
    boot=/dev/hda                  # installation target
    backup=/dos/LINUX/mbr_hda.bak  # backup old MBR
    install=/dos/LINUX/boot.b      # LILO and
    map=/dos/LINUX/map             # Map file in /dos/LINUX!
    message=/dos/LINUX/message     # optional
    prompt
    timeout=100                    # Waiting at the Prompt: 10 s
    vga = normal
    # End LILO global section
    #
    # Linux bootable partition config begins
    image = /dos/LINUX/First_Kernel   # Kernel here!
        root = /dev/Your_Root_Device    # Root partition here!
        label = linux
    # Linux bootable partition config ends
    #
    # DOS bootable partition config begins
    other = /dev/hda1                  # MSDOS-System device
        label = dos
        loader = /dos/LINUX/chain.b
        table = /dev/hda
    # DOS bootable partition config ends
    
  4. Install LILO using this lilo.conf:
    /sbin/lilo -C /dos/LINUX/lilo.conf
    
    READY!

Protect LILO data from any write access (such as file relocating by means of defragmentation tools, which will cause LILO malfunction)

At last you should assign DOS file attributes "system" and "hide" to all files in X:\LINUX (X means the MS-DOS device mounted as /dos9)

Example 2

If you have a working MBR and LILO should be installed into the extended partition of the first disk, only change:
boot=/dev/Ext_Partition # Your extended Partition

After installation of LILO, mark the extended partition on disk 1 as bootable and unmark the other primary partitions with fdisk.


Keywords: 1024, CYLINDERS, LILO, BOOT, IDE, EIDE, SCSI, INSTALLATION, INSTALLING

SDB-1024_Zylinder, Copyright SuSE Linux AG, Nürnberg, Germany - Version: 17. Jul 1996
SuSE Linux AG - Last generated: 11. Oct 2002 by sdb (sdb_gen 1.40.0)