  LILO, Linux Crash Rescue HOW-TO
  Al Dev (Alavoor Vasudevan)        alavoor[AT]yahoo.com
  v10.6, 14 March 2002

  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.
  ______________________________________________________________________

  Table of Contents


  1. Introduction

     1.1 Tiny Floppy Linux

  2. Crash Recovery

     2.1 Preparation Tips
     2.2 Quick Steps to recovery
     2.3 Precautionary measures
     2.4 Removing LILO
     2.5 Common mistakes

  3. Related URLs

  4. Other Formats of this Document

     4.1 Acrobat PDF format
     4.2 Convert Linuxdoc to Docbook format
     4.3 Convert to MS WinHelp format
     4.4 Reading various formats

  5. Copyright



  ______________________________________________________________________

  1.  Introduction

  (The latest version of this document is at
  <http://www.milkywaygalaxy.freeservers.com>. You may want to check
  there for changes).

  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 -

    The best Tomsrtbt <http://www.toms.net/~toehser/rb>

    Second best floppy linux MuLinux <http://sunsite.dk/mulinux>

    Trinux <http://www.trinux.org>

    DLX <http://www.wu-wien.ac.at/usr/h93/h9301726/dlx.html>

    FloppyFW <http://www.zelow.no/floppyfw>

    Linux Router Proejct floppy <http://www.psychosis.com/linux-router>

    Tiny Linux distributions
     <http://www.txdirect.net/users/mdfranz/tinux.html>

    TINYLinux <http://tiny.seul.org/en>

  2.  Crash Recovery


  2.1.  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
  ______________________________________________________________________



  2.2.  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 and boot partition.
     Watch out, you may be having the /boot  files on the root partition
     itself.

     The Linux's root partition has the following directories bin, boot,
     etc, usr.

     And the Linux's boot partition has these directories: vmlinuz,
     boot.b, chain.b, map.

     To find out root partition do this :



     ___________________________________________________________________
     bash# fdisk /dev/hda
     Command (m for help): m         (Gives you help on commands)
     Command (m for help): p         (Gives you list of partitons)
     Command (m for help): q
     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.  Keep trying hda3, hda4, hda5, etc.. untill you find the
  root partition.  If you do not find root partition in hda device then
  repeat the above steps for other hard disk devices like hdb, hdc, hdd
  etc..

  Next, you should find the /boot, /usr and /var partitions.  The disk
  locations of these partitions are needed to create the new lilo
  configuration.

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

  ______________________________________________________________________
  bash# mkdir /rootpart
  bash# mount /dev/hda4 /rootpart
  bash# cat /rootpart/etc/fstab
          Read the output of fstab and mount partitions as per fstab file, see below -
  bash# mount /dev/hda5 /rootpart/boot
  bash# mount /dev/hda6 /rootpart/usr
  bash# mount /dev/hda7 /rootpart/var
  bash# mount /dev/hda8 /rootpart/opt
  bash# mount /dev/hda9 /rootpart/root
  bash# mount /dev/hda10 /rootpart/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 win
  dows95 (FAT16 partition).

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



  ______________________________________________________________________
          /dev/hda4  /rootpart           ext2 defaults 1 1
          /dev/hda5  /rootpart/boot      ext2 defaults 1 1
          /dev/hda6  /rootpart/usr       ext2 defaults 1 1
          /dev/hda7  /rootpart/var       ext2 defaults 1 1
          /dev/hda8  /rootpart/opt       ext2 defaults 1 1
          /dev/hda9  /rootpart/root      ext2 defaults 1 1
          /dev/hda10 /rootpart/home      ext2 defaults 1 1
          /dev/hda11 /rootpart/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 /rootpart/win95part
  bash# mount /rootpart/win95part
          And repair the problem partitions 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.  After
     executing steps in scene 1 above, you should have already mounted
     /rootpart and have created /etc/fstab file.

     Note: It is very important to note how chroot command works below.
     The /sbin/lilo file which chroot uses is actually located in
     /rootpart/sbin/lilo and NOT in /sbin!! Hence, do not get confused.

     ___________________________________________________________________
     bash# mount -a
     bash# chroot /rootpart /sbin/lilo -q
     bash# man chroot
     bash# chroot /rootpart /sbin/lilo
     ___________________________________________________________________



  Note: New users of chroot will be confused. If chroot command
  complains that it cannot find /boot/map file then it actually means it
  that it cannot find /rootpart/boot/map. Because you gave /rootpart as
  the first argument to chroot and all references are with respect to
  /rootpart.

  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 /rootpart
  ______________________________________________________________________



  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.  Or get boot disks
     for Linux/NT/Windows/DOS/Mac are at  <http://www.bootdisk.com>
     Other option is - get a hold of installation Linux-CDROM. Just
     about every Linux distribution provides a image of a rescue disk on
     their CD. Under Linux use "dd if=/cdrom/disks/rescue of=/dev/fd0"
     to create a rescue floppy disk. Under DOS use rawrite.exe (included
     on Linux CD) and then do "rawrite image-name a:".



  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  /rootpart    ext2 defaults 1 1
                     /dev/hda11 /b1          vfat defaults 1 1
     bash$ mkdir /rootpart; mount /rootpart
     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   /rootpart
     ___________________________________________________________________



  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.

  2.3.  Precautionary measures

  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
     ___________________________________________________________________



    You MUST backup the partition tables setup to a floppy and to a
     hard disk.  You should also print this out and paste it on the
     computer box.


     ___________________________________________________________________
     bash$ su - root
     bash# man fdisk
     bash# fdisk -l /dev/sda > partition_table_backup.txt
     ___________________________________________________________________


  Very helpful if you need to repartition the hard disk.  From the
  printout, you would know where your partition starts.  During recov
  ery, after repatitioning and formating you can restore data from the
  backup.


    You must keep the tomsrtbt boot floppy handy. Visit
     <http://www.toms.net/rb> (see also ``Tiny Linux'')


    You must keep the Yard rescue and boot floppy disk handy. Visit
     <http://www.linuxlots.com/~fawcett/yard>


    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
     ___________________________________________________________________



  2.4.  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'.

  2.5.  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
  ______________________________________________________________________



  3.  Related URLs

  Visit following locators which are related to LILO, Rescue Linux,
  crash recovery -

    Mini Lilo HOWTO at  <http://www.linuxdoc.org/HOWTO/mini/LILO.html>

    Bootdisk-HOWTO at  <http://www.metalab.unc.edu/LDP/HOWTO/Bootdisk-
     HOWTO/index.html>


    Pre-made boot disks at  <http://www.linuxdoc.org/HOWTO/Bootdisk-
     HOWTO>

    Boot disks for Linux/NT/Windows/DOS/Mac at
     <http://www.bootdisk.com>

    Tomsrtbt boot floppy disk  <http://www.toms.net/rb> and (see also
     ``Tiny Linux'')

    Yard rescue and boot floppy disk
     <http://www.linuxlots.com/~fawcett/yard>


    BootPrompt-HOWTO at  <http://www.linuxdoc.org/HOWTO/BootPrompt-
     HOWTO.html>

    Multiboot with LILO mini HOWTO at
     <http://www.linuxdoc.org/HOWTO/mini/Multiboot-with-LILO.html>

    Linux+WinNT mini HOWTO at
     <http://www.linuxdoc.org/HOWTO/mini/Linux+WinNT.html>


    Linux goodies main site
     <http://www.milkywaygalaxy.freeservers.com> Mirror sites are at -
     <http://aldev0.webjump.com>, angelfire
     <http://www.angelfire.com/country/aldev0>, geocities
     <http://www.geocities.com/alavoor/index.html>, virtualave
     <http://aldev0.virtualave.net>, 50megs <http://aldev0.50megs.com>,
     theglobe <http://members.theglobe.com/aldev1/index.html>, NBCi
     <http://members.nbci.com/alavoor>, Terrashare
     <http://aldev.terrashare.com>, Fortunecity
     <http://members.fortunecity.com/aldev>, Freewebsites
     <http://aldev.freewebsites.com>, Tripod
     <http://members.tripod.lycos.com/aldev>, Spree
     <http://members.spree.com/technology/aldev>, Escalix
     <http://www.escalix.com/freepage/aldev>, Httpcity
     <http://www.httpcity.com/aldev/index.html>, Freeservers
     <http://aldev.freeservers.com>.

    Vim color text editor for C++, C
     <http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html>

  4.  Other Formats of this Document

  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 -

    <http://www.caldera.com/LDP/HOWTO>

    <http://www.linux.ucla.edu/LDP>

    <http://www.cc.gatech.edu/linux/LDP>

    <http://www.redhat.com/mirrors/LDP>

    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



    You can get this HOWTO document as a single file tar ball in HTML,
     DVI, Postscript or SGML formats from -
     <ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO/other-formats/> and
     <http://www.linuxdoc.org/docs.html#howto>


    Plain text format is in:
     <ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO> and
     <http://www.linuxdoc.org/docs.html#howto>


    Single HTML file format is in:
     <http://www.linuxdoc.org/docs.html#howto>

     Single HTML file can be created with command (see man sgml2html) -
     sgml2html -split 0   xxxxhowto.sgml


    Translations to other languages like French, German, Spanish,
     Chinese, Japanese are in
     <ftp://www.linuxdoc.org/pub/Linux/docs/HOWTO> and
     <http://www.linuxdoc.org/docs.html#howto> Any help from you to
     translate to other languages is welcome.

     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)

    sgml2rtf  xxxxhowto.sgml     (to generate RTF file)

    sgml2latex xxxxhowto.sgml    (to generate latex file)

  4.1.  Acrobat PDF format

  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.

  4.2.  Convert Linuxdoc to Docbook format

  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.

    Download ld2db program from
     <http://www.dcs.gla.ac.uk/~rrt/docbook.html> or from Milkyway
     Galaxy site <http://www.milkywaygalaxy.freeservers.com>

    Download the cleanup_ld2db.pl perl script from from Milkyway Galaxy
     site <http://www.milkywaygalaxy.freeservers.com>

     The ld2db.sh is not 100% clean, you will get lots of errors when
     you run

     ___________________________________________________________________
             bash$ ld2db.sh file-linuxdoc.sgml db.sgml
             bash$ cleanup.pl db.sgml > db_clean.sgml
             bash$ gvim db_clean.sgml
             bash$ docbook2html db.sgml
     ___________________________________________________________________


  And you may have to manually edit some of the minor errors after run
  ning the perl script. For e.g. you may need to put closing tag <
  /Para> for each < Listitem>

  4.3.  Convert to MS WinHelp format

  You can convert the SGML howto document to Microsoft Windows Help
  file, first convert the sgml to html using:

  ______________________________________________________________________
          bash$ sgml2html xxxxhowto.sgml     (to generate html file)
          bash$ sgml2html -split 0   xxxxhowto.sgml (to generate a single page html file)
  ______________________________________________________________________



  Then use the tool HtmlToHlp <http://javadocs.planetmirror.com/html
  tohlpe.html>.  You can also use sgml2rtf and then use the RTF files
  for generating winhelp files.

  4.4.  Reading various formats

  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 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.


    Get ghostscript for Windows 95, OS/2, and for all OSes from
     <http://www.cs.wisc.edu/~ghost>

  To read postscript document give the command -


                       gv howto.ps
                       ghostscript howto.ps



  You can read HTML format document using Netscape Navigator, Microsoft
  Internet explorer, Redhat Baron Web browser or any of the 10 other web
  browsers.

  You can read the latex, LyX output using LyX a X-Windows front end to
  latex.

  5.  Copyright

  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.



