v10.0, 14 June 2001
This document discusses methods to recover from Linux system failures.
Various reasons for linux system failures can be - LILO is destroyed, or linux fails to boot, or Master Boot Record (MBR)
is damaged or linux fails to boot when another
operating system like Windows NT is installed which erases LILO or MBR.
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.
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 -
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.
Follow these steps to recover from LILO or system failures.
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
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
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.
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
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 -
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.
You should take the following pre-cautionary measures to tackle the
problems in future.
You MUST make emergency boot disk from time to time and whenever you
make changes to the partition. Insert a blank floppy and do this -
bash$ man mkbootdisk
The mkbootdisk is in mkbootdisk*.rpm package, you must install this.
bash$ mkbootdisk --help
bash$ mkbootdisk --device /dev/fd0 2.2.12-20
Backup /root and /boot directories. Boot the Tomsrtbt
floppy
(see also
Tiny Linux)
and then
bash# vi /etc/fstab
And put these lines -
/dev/hda1 /a1 vfat defaults 1 1
/dev/hdb1 /b1 vfat defaults 1 1
In my case hda1 had the linux root partition '/'
bash# cd /
bash# tar cvf /b1/linux-root-partition-hda1.tar a1
bash# tar cvf /b1/linux-boot-partition-hda1.tar a1/boot
This document is published in 14 different formats namely - DVI, Postscript,
Latex, Adobe Acrobat PDF,
LyX, GNU-info, HTML, RTF(Rich Text Format), Plain-text, Unix man pages, single
HTML file, SGML (Linuxdoc format), SGML (Docbook format), MS WinHelp format.
This howto document is located at -
http://www.linuxdoc.org and click on HOWTOs and search
for howto document name using CTRL+f or ALT+f within the web-browser.
You can also find this document at the following mirrors sites -
Other mirror sites near you (network-address-wise) can be found at
http://www.linuxdoc.org/mirrors.html
select a site and go to directory /LDP/HOWTO/xxxxx-HOWTO.html
The document is written using a tool called "SGML-Tools" which can be got from -
http://www.sgmltools.org
Compiling the source you will get the following commands like
sgml2html xxxxhowto.sgml (to generate html file)
sgml2html -split 0 xxxxhowto.sgml (to generate a single page html file)
PDF file can be generated from postscript file using
either acrobat distill or Ghostscript.
And postscript file is generated
from DVI which in turn is generated from LaTex file.
You can download distill software from
http://www.adobe.com. Given below
is a sample session:
bash$ man sgml2latex
bash$ sgml2latex filename.sgml
bash$ man dvips
bash$ dvips -o filename.ps filename.dvi
bash$ distill filename.ps
bash$ man ghostscript
bash$ man ps2pdf
bash$ ps2pdf input.ps output.pdf
bash$ acroread output.pdf &
Or you can use Ghostscript command ps2pdf.
ps2pdf is a work-alike for nearly all the functionality of
Adobe's Acrobat Distiller product: it
converts PostScript files to Portable Document Format (PDF) files.
ps2pdf is implemented as a very small command script
(batch file) that invokes Ghostscript, selecting a special "output device"
called pdfwrite. In order to use ps2pdf, the pdfwrite
device must be included in the makefile when Ghostscript was compiled;
see the documentation on building Ghostscript for details.
This document is written in linuxdoc SGML format. The Docbook SGML format
supercedes the linuxdoc format and has lot more features than linuxdoc.
The linuxdoc is very simple and is easy to use. To convert linuxdoc SGML
file to Docbook SGML use the program ld2db.sh and some perl scripts.
The ld2db output is not 100% clean and you need to use the clean_ld2db.pl
perl script. You may need to manually correct few lines in the document.
And you may have to manually edit some of the minor errors after
running the perl script. For e.g. you may need to put closing tag <
/Para> for each <
Listitem>
In order to view the document in dvi format, use the xdvi program. The xdvi
program is located in tetex-xdvi*.rpm package in Redhat Linux which can be
located through ControlPanel | Applications | Publishing | TeX menu buttons.
To read dvi document give the command -
xdvi -geometry 80x90 howto.dvi
man xdvi
And resize the window with mouse.
To navigate use Arrow keys, Page Up, Page Down keys, also
you can use 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' letter
keys to move up, down, center, next page, previous page etc.
To turn off expert menu press 'x'.
You can read postscript file using the program 'gv' (ghostview) or
'ghostscript'.
The ghostscript program is in ghostscript*.rpm package and gv
program is in gv*.rpm package in Redhat Linux
which can be located through ControlPanel | Applications | Graphics menu
buttons. The gv program is much more user friendly than ghostscript.
Also ghostscript and gv are available on other platforms like OS/2,
Windows 95 and NT, you view this document even on those platforms.
Copyright policy is GNU/GPL as per LDP (Linux Documentation project).
LDP is a GNU/GPL project.
Additional requests are that you retain the author's name, email address
and this copyright notice on all the copies. If you make any changes
or additions to this document then you please
intimate all the authors of this document.
Brand names mentioned in this document are property of their respective
owners.