Linux on 1024 cylinder Symptom: LILO cannot find boot kernels while booting from hard disk and halts at LI - or at another incomplete piece of the word LILO (please note "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. Due to that the accessible area is limited to * the cylinders 0 to 1023 of the accessible hard disks, * the first two hard disks, * (E)IDE-hard disks in a mixed configuration with SCSI-hard disks (SCSI disks are excluded from booting capability then). This circumstance appears rather awkward, since the 1024-cylinder-limit starts at a much higher capacity with SCSI-disks (mostly 8 GB) compared to (E)IDE-disks (504 MB to 2 GB). The last two restrictions are only partially valid on modern PCs: Recent BIOSs partly allow the access to additional devices e.g. up to four instead of two EIDE-disks. Some very recent combinations of BIOS and SCSI-host adapter include the option to "shift" the SCSI-disks to the first place and therefore 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. But, in any case the 1024-cylinder limitation remains not-varying! Add-on: This limitation may become more restrictive by using the LILO linear option (kgw_lilo_linear.html). For clearness purposes we will use the phrase "1024 cylinder limitation" to describe the accessable area of a disk. Solution: LILO needs access to the following data, all of them below the 1024 cylinder limitation: * the boot sector, to whom it has been installed, * the files in /boot (resp. in the locations defined in /etc/lilo.conf) * the linux kernels that are to boot, * if applicable: the boot sectors of other operating systems. In summary, less than 2 MByte are needed. /boot and the linux kernels are usually sited at the linux root partition. Nevertheless, this is not mandatory. You are even allowed to put these data to other operating systems partitions, but you might encounter errors then. What choices do you have with regard to that restriction? * Anyway, the easiest solution is o setting up a primary Linux partition totally within the 1024 cylinder limitation o putting the LILO data - including Linux kernels - to that partition. This partition might be the whole Linux root partition (i.e. /), but it also works if you restrict to the boot partition (i.e. /boot), that means: only about 2 Mbyte are needed * Another choice is o setting up a logical partition within the 1024 cylinder limitation with o LILO installed to MBR or o LILO installed to the beginning of the extended partition (not logical partition!) and that partition marked as starting point ("active") in the MBR - Linux fdisk provides that feature for instance. If you are using another boot manager with the capability to start logical partition itself, you may install LILO there. But be careful: 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 don't want to make new partitions. If you got a foreign partition which is 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. Alas, this procedure is not reliable, since 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 all the worse) Warning: Beware of installing LILO boot sector into a foreign partition, since the associated file system will be damaged mostly! 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 MSDOS-partition as /dos. LILO is to be located to MBR e.g. /dev/hda and in addition shall boot DOS from /dev/hda1. 1. Create boot disks (kgw_bootdisketten.html) for MSDOS and Linux and test them. You might then recreate MBR, if necessary 2. Create a directory e.g. /dos/LINUX and copy LILO data from 3. /boot and the linux kernels. 4. 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 5. Install LILO using this particular lilo.conf: /sbin/lilo -C /dos/LINUX/lilo.conf READY! Note: protect LILO data from any write access (e.g. file relocating by means of defragmentation tools 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 got a working MBR and LILO is to be installed into the extended partition of the first disk, you only have to change: boot=/dev/Ext_Partition # Your extended Partition Please don't forget: after installation of LILO you have to mark the extended partition on disk 1 as bootable and unmark the other primary partitions with fdisk. ------------------------------------------------------------------------ Keywords: 1024, CYLINDER, LILO, BOOT, IDE, EIDE, SCSI, INSTALLATION ------------------------------------------------------------------------ SDB-1024_Zylinder, Copyright SuSE GmbH, Nürnberg, Germany - Version: 17. Jul 1996 SuSE GmbH - Last generated: 15. Nov 2000 by dstark (sdb_gen 1.40.0)