Next Previous Contents

1. Introduction

You cannot avoid accidents and if it happens to linux systems then it may damage the master boot record (MBR) or LILO (Linux boot Loader). There may be cases where linux will not boot due to hard disk failures. The LILO may also fail if you accidentally re-partition the hard disk or you install another additional operating system like Windows 98/NT on the linux computer.

This document gives you some ideas, tips and quick guide to recover fast without wading through hundreds of pages of documentation on LILO or Linux.

1.1 Tiny Floppy Linux

To recover any Windows 95/NT/2000, OS/2, BeOS or Linux box you may need the tiny linux which fits on a single floppy disk. See the list of tiny floppy linux given below -

1.2 Preparation Tips

It is a good idea to backup the important system files like /etc/fstab, /etc/lilo.conf after you login using Tomsrtbt floppy in next section. This can be very handy during crash situation or something happens to system files.


bash# cp /etc/fstab /etc/fstab.orig
bash# cp /etc/lilo.conf /etc/lilo.conf.orig
bash# cp /etc/hosts /etc/hosts.orig
bash# cp /etc/hosts.allow /etc/hosts.allow.orig
bash# cp /etc/hosts.deny /etc/hosts.deny.orig
bash# cp /etc/inetd.conf /etc/inetd.conf.orig
bash# cp /etc/inittab /etc/inittab.orig
bash# cp /etc/networks /etc/networks.orig

1.3 Quick Steps to recovery

Follow these steps to recover from LILO or system failures.

  1. SCENE 1: If your system does not boot -

    Get the tomsrtbt floppy http://www.toms.net/rb or MuLinux floppy (see also Tiny Linux). Boot with tomsrtbt floppy Use fdisk to find the partitions. Try to recognise the root partition by doing this -


    bash# fdisk /dev/hda
    bash# mkdir /test
    bash# mount /dev/hda1 /test
    bash# ls /test
    You should see root-partition list like this -
    bin   fd    lib   mnt  proc  sbin  usr
    boot  dev   etc   home  lost+found  opt  root  tmp   var
    

    If this is not a root partition, then try the next partition /dev/hda2. Next try hda3, hda4, hda5, etc.. untill you find the root partition. Still not found in hda then repeat the above steps for other devices like hdb, hdc, hdd etc.. Also the /usr, /var, and /boot partition are needed as these are required to create new lilo configuration.

    In my case the root partition is /dev/hda4 which is used in the examples below:


    bash# mkdir /hda4
    bash# mount /dev/hda4 /hda4
    bash# cat /hda4/etc/fstab
            Read the output of fstab and mount partitions as per fstab file, see below -
    bash# mount /dev/hda5 /hda4/boot
    bash# mount /dev/hda6 /hda4/usr
    bash# mount /dev/hda7 /hda4/var
    bash# mount /dev/hda8 /hda4/opt
    bash# mount /dev/hda9 /hda4/root
    bash# mount /dev/hda10 /hda4/home
    

    In my case, as per fstab file hda5 was boot, hda6 was usr, hda7 was var, hda8 was opt, hda9 was root, hda10 was home and hda11 was windows95 directory.

    Edit /etc/fstab (not /hda4/etc/fstab) and put (sample code given here) -


            /dev/hda4  /hda4           ext2 defaults 1 1
            /dev/hda5  /hda4/boot      ext2 defaults 1 1
            /dev/hda6  /hda4/usr       ext2 defaults 1 1
            /dev/hda7  /hda4/var       ext2 defaults 1 1
            /dev/hda8  /hda4/opt       ext2 defaults 1 1
            /dev/hda9  /hda4/root      ext2 defaults 1 1
            /dev/hda10 /hda4/home      ext2 defaults 1 1
            /dev/hda11 /hda4/win95part vfat defaults 1 1
    
    On my computer hda4 contains the linux root partition, hda5 had boot partition and
    hda11 has windows 95 vfat system.
    
    bash# mkdir /hda4/win95part
    bash# mount /hda4/win95part
            And repair the system using fsck or e2fsck commands.
    bash# man fsck
    bash# man e2fsck
    

  2. SCENE 2: If LILO is not working..

    Follow scene 1 above, if that fails then follow these steps. Now you should have already mounted /hda4 and have created /etc/fstab file.


    bash# mount -a 
    bash# chroot /hda4 /sbin/lilo -q
    bash# man chroot
    bash# chroot /hda4 /sbin/lilo 
    

    Alternatively, you can directly use /sbin/lilo instead of chroot. The -r option of lilo actually does chroot. It is very strongly recommended that you use chroot, instead of lilo -r, as it is more convenient and can catch errors more easily.
    bash# man lilo
    bash# /sbin/lilo -r /hda4
    

  3. SCENE 3: If LILO is not working..

    If scene 1 and 2 failes, then if you made the boot disk with 'mkbootdisk' (during install or by using 'man mkbootdisk'), boot with it and repair your partitions. The mkbootdisk is in mkbootdisk*.rpm package, you must install this.

  4. SCENE 4: If 1, 2 and 3 above fails and you do not have boot disk

    If you have another computer running linux, then login as root and do -

    Note: If you compile your own kernel as a bzImage (for instance, bzImage-2.4.4), then you should create a hard link to vmlinuz-2.4.4 as follows (note the the z in name vmlinuz and it is not vmlinux). If you do not do this then mkbootdisk command may fail.


    bash# cd /boot
    bash# ls -l vmlinuz*
    bash# ln /boot/bzImage-2.4.4  /boot/vmlinuz-2.4.4
    

    Now that you have bzImage and vmlinuz, give these commands -
    bash$ man mkbootdisk
    bash# cp /etc/lilo.conf /etc/lilo-original.conf
    

    Edit the /etc/lilo.conf and put the root partition name as you obtained in 'scene 1' above and insert a blank floppy and give -
    bash$ mkbootdisk --device /dev/fd0 2.2.12-20
    

    The mkbootdisk is in mkbootdisk*.rpm package, you must install this. Make sure you move the /etc/lilo-original.conf back to /etc/lilo.conf!! And then take this floppy and goto scene 3

  5. SCENE 5: This is the worst scenerio and hopefully you will never come to this stage. Scenes from 1 to 4 will take care of majority of cases. But just in case, all the above scenes 1, 2, 3 and 4 fail then -

    Step 1: Boot tomsrtbt (see Tiny Linux) and mount the partitions and backup the root partition to another partition having disk space with comamnds -


            Edit /etc/fstab and put (sample code given here, you may have to 
            change as per your disk layout) -
                    /dev/hda4  /hda4        ext2 defaults 1 1
                    /dev/hda11 /b1          vfat defaults 1 1
    bash$ mkdir /hda4; mount /hda4
    bash$ mkdir /b1; mount /b1
    bash$ cd /
    bash$ df 
            And see that there is enough disk space in /b1 to tar up the root partition
    bash$ tar cvf /b1/root-hda4.tar   /hda4
    

    Step 2: Insert Linux cdrom, reboot and install the redhat linux on /dev/hda4 (but DO NOT install any extra packages, you just need to install only the root, boot systems and LILO manager that is, a very bare minimum). This will also install the LILO on hard disk. Boot linux now and login as root and do -


    bash$ man mkbootdisk
    bash# cp /etc/lilo.conf /etc/lilo-original.conf
    

    Note: You MUST remember to copy back lilo-original.conf to lilo.conf!! Edit the /etc/lilo.conf and put the root partition name as you obtained in 'scene 1' above and insert a blank floppy and give -
    bash$ mkbootdisk --device /dev/fd0 2.2.12-20
    bash# cp /etc/lilo-original.conf /etc/lilo.conf
    

    Test this boot floppy to see that this works and then restore back the all the files which you backedup using tar on /b1/root-hda4.tar as in step 1 above.

1.4 Precautionary measures

You should take the following pre-cautionary measures to tackle the problems in future.

1.5 Removing LILO

You can replace the boot sector with the DOS boot loader by issuing the DOS command at MS DOS prompt:


        FDISK  /MBR

where MBR stands for "Master Boot Record".

See also LILO documentation on linux at /usr/doc/lilo* for other methods of uninstalling the LILO. And see also 'man lilo'.

1.6 Common mistakes

After making changes to /etc/lilo.conf you MUST run lilo to make changes to go in effect. It is a very common mistake committed by newusers. Type -


bash# lilo -v -v -v


Next Previous Contents