When Lilo boots the system, it can only load data sectors that can be
accessed by the bios. Any pathname you put in /etc/lilo.conf
is resolved at installation time (when you invoke lilo); this is
when the program builds any table listing which sectors are used by
the files. As a consequence, the files must live in a partition that
can be accessed by the BIOS; moreover, you must reinstall the loader
(i.e., you must reinvoke lilo) any time you modify the
files. Whenever you recompile your kernel and overwrite your old image
you must reinstall Lilo).
The boot =
directive in /etc/lilo.conf
tells Lilo where
it should put its primary boot loader. In general, you can either
specify the master boot sector (/dev/hda
) or the root
partition of your Linux installation (is usually is /dev/hda1
or /dev/hda2
).
If you have another operating system installed in your hard drive, you'd better install Lilo to the root partition. In this case, you must mark the partition as ``bootable'' (use the ``a'' command of fdisk or the ``b'' command of cfdisk. If you don't overwrite the master boot sector you'll find it easier to uninstall Linux and Lilo if needed.
I personally don't use LBA or LARGE settings in the BIOS (but I only run Linux); they are horrible kludges forced on by design deficiencies in the PC world. This requires that the kernel lives in the first 1024 cylinders, but this is not a problem as long as you partition your hard drives and keep root small (as you should do anyways).
If your hard disk already carries another operating system, you won't be able to modify the BIOS settings, or the old system won't work any more. All recent Lilo distribution are able to deal with LBA and LARGE disk settings.
If you have more than one hard disk and some of them are only used by Linux, but are not used in booting, you can tell your BIOS that they are not installed. Your system will boot more quickly and Linux will autodetect all the disk in no time. I often connect extra disks to my system, but I never touch the BIOS configuration.
When you see the Lilo prompt, you can hit the <Tab> key to show the list of possible choices. If Lilo is not configured to be interactive, press and hold the <Alt> or <Shift> key before the ``LILO'' message appears.
If you choose to boot a Linux kernel, you can add command-line arguments after the name of the system you choose. The kernel accepts many command-line arguments, and this is not the place to list them all. A few of them are particularly important, in my opinion:
root=
: you can tell the Linux kernel to mount as root
a different partition from the one appearing in lilo.conf
.
For example, I have a tiny partition hosting a minimal Linux
installation, and I've been able to boot the system after
destroying my root partition by mistake.
init=
: verson 1.3.43 and newer of the Linux kernel accept
the command-line specification of a program to execute in place
of /sbin/init
. If you experience bad problems
during the boot process, you can access the bare system by
specifying init=/bin/sh
(when you are at the shell
prompt you most likely will need to mount your disks: try
``/sbin/mount -w -n -o remount /; mount -a
'',
and remember to ``/sbin/umount -a
'' before turning off
the computer).
/etc/inittab
and to /etc/rc.d
to probe further.
When Lilo overwrites a boot sector, it saves a backup copy in
/boot/boot.
xxyy, where xxyy are the major and minor
numbers of the device, in hex. You can see the major and minor numbers
of your disk or partition by running ``ls -l
/dev/
device''. For example, the first sector of
/dev/hda
(major 3, minor 0) will be saved in
/boot/boot.0300
, installing Lilo on /dev/fd0
creates
/boot/boot.0200
and installing on /dev/sdb3
(major
8, minor 19) creates /boot/boot.0813
. Note that Lilo won't
create the file if there is already one; you don't need to care about
the backup copy whenever you reinstall Lilo (for example, after
recompiling your kernel).
If you ever need to uninstall Lilo (for example, in the unfortunate
case you need to uninstall Linux), you just need to restore the
original boot sector. If Lilo is installed in /dev/hda
, just
do ``dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1
'' (I
personally just do ``cat /boot/boot.0300 > /dev/hda
'', but
this is not safe, as this will restore the original partition table as
well, which you might have modified in the meanwhile). This command is
much easier to run than trying ``fdisk /mbr
'' from a DOS
shell: it allows you to cleanly remove Linux from a disk without ever
booting anything else. After
removing Lilo remember to run Linux' fdisk to destroy any
Linux partition (DOS' fdisk is unable to remove non-dos
partitions).
If you installed Lilo on your root partition (e.g., /dev/hda2
),
nothing special needs to be done to uninstall Lilo. Just run Linux'
fdisk to remove Linux partitions from the partition
table. You must also mark the DOS partition as bootable.