Lilo allows to map the kernel image from one disk and instruct the BIOS to retrieve it from another disk. For example, it's common for me to install Linux on a disk I connect to
hdc (master disk of secondary controller) and boot it as a standalong system on the primary IDE controller of another computer. I copied the installation floppy to a tiny partition, so I can run chroot in a virtual console to install
hdc while I use the system to do something else.
The lilo.conf file I use to install Lilo looks like:
# This file must be used from a system running off /dev/hdc boot = /dev/hdc # overwrite MBR of hdc disk = /dev/hdc # tell how hdc will look like: bios = 0x80 # the bios will see it as first drive delay = 0 vga = 0 image = /boot/vmlinux # this is on /dev/hdc1 root = /dev/hda1 # but at boot it will be hda1 label = Linux read-only
This configuration file must be read by a Lilo running off /dev/hdc1. The Lilo maps that get written the boot sector (
/dev/hdc) must refer to the files in
/boot (currently installed as hdc); such files will be accessed under hda when this disk will be booted as a standalone system.
I call this configuration file
/mnt is where hdc is mounted during the installation. I install Lilo by invoking ``
cd /mnt; chroot . sbin/lilo -C /etc/lilo.conf.hdc''. Refer to the manual page for chroot if this looks magic.
bios='' directive in
lilo.conf is used to tell Lilo what the BIOS thinks of your devices. BIOS calls identify floppy disks and hard drives with a number: 0x00 and 0x01 select the floppy drives, 0x80 and the following numbers select hard disks (old BIOS-es can only access two disks). The meaning of ``
bios = 0x80 in the previous sample file is therefore ``use 0x80 in your BIOS calls for
This Lilo directive can be handy in other situations, for example when your BIOS is able to boot from SCSI disks instead of IDE ones. When both IDE and SCSI devices are there, Lilo can't tell whether 0x80 will refer to one or the other because the user is able to choose it in the BIOS configuration menus, and the BIOS can't be accessed while Linux is running.
By default, Lilo assumes that IDE drives are mapped first by the BIOS, but this can be overridden by using instructions like these in
disk = /dev/sda bios = 0x80