Knoppix grub repair howto

From Wsms

Revision as of 23:03, 4 March 2007; Ggeller (Talk | contribs)
(diff) ←Older revision | Current revision | Newer revision→ (diff)
Jump to: navigation, search

Today in class the Fedora install failed to boot. It looked like some kind of error in the boot loader.

I suspect that it was caused by a media error. Maybe the install DVD is bad or the DVD reader doesn't like it for some reason. Maybe the hard disk is bad.

Another possibility is that the machine's bios is set to protect MBR from being overwritten. In that case, the MBR always points to the first partition of the hard disk as the place to boot from. You can have grub-install write the linux boot loader to /dev/hda1 instead of /dev/hda, but the Fedora installer doesn't do that automatically.

You can use a Knoppix boot disk to boot into a Linux environment and repair the boot loader. Knoppix is available from http://www.knoppix.net/get.php. These are the specific steps that I just tested on my system.

First make sure your bios is set so that your system will boot from the CD drive.

  1. Boot from the Knoppix CD and open a Root Shell
    Image:knoppix010.gif
  2. Mount the partitions in the correct locations. Yours will almost certainly be different than the ones for my system. My system uses /dev/sda1 and /dev/sda2 because it has a serial ATA drive with a seperate /boot partition.
    Image:knoppix020.gif
  3. Use grub-install with the root-directory option to reinstall the MBR on sda.
  4. Reboot with shutdown -r now. If you are lucky, you'll be booting the linux install on your hard disk.
    Image:knoppix030.gif

Related Information

I tried this same procedure with a different bootable Linux CD and got an error saying the grub stage 1 didn't read correctly. It looks like there are different versions of grub and grub-install that are not compatible.

In my case, /etc/fstab, /boot/grub/device.map, and /boot/grub/grub.conf on my hard disk are fine. These files and others must be correct for grub-install to work.

A typical device.map file might contain:

(hd0) /dev/hda

For reference, here is the contents of /etc/fstab

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda2       /               ext3    defaults,errors=remount-ro 0       1
/dev/sda1       /boot           ext3    defaults        0       2
/dev/sda3       none            swap    sw              0       0
/dev/hdd        /media/cdrom0   udf,iso9660 user,noauto     0       0

For reference, here is the contents of /boot/grub/grub.conf

root@1[grub]# cat menu.lst
# menu.lst - See: grub(8), info grub, update-grub(8)
#            grub-install(8), grub-floppy(8),
#            grub-md5-crypt, /usr/share/doc/grub
#            and /usr/share/doc/grub-doc/.

## default num
# Set the default entry to the entry number NUM. Numbering starts from 0, and
# the entry number 0 is the default if the command is not used.
#
# You can specify 'saved' instead of a number. In this case, the default entry
# is the entry saved with the command 'savedefault'.
# WARNING: If you are using dmraid do not change this entry to 'saved' or your
# array will desync and will not let you boot your system.
default         0

## timeout sec
# Set a timeout, in SEC seconds, before automatically booting the default entry
# (normally the first entry defined).
timeout         3

## hiddenmenu
# Hides the menu by default (press ESC to see the menu)
hiddenmenu

# Pretty colours
#color cyan/blue white/blue

## password ['--md5'] passwd
# If used in the first section of a menu file, disable all interactive editing
# control (menu entry editor and command-line)  and entries protected by the
# command 'lock'
# e.g. password topsecret
#      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
# password topsecret

#
# examples
#
# title         Windows 95/98/NT/2000
# root          (hd0,0)
# makeactive
# chainloader   +1
#
# title         Linux
# root          (hd0,1)
# kernel        /vmlinuz root=/dev/hda2 ro
#

#
# Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST

### BEGIN AUTOMAGIC KERNELS LIST
## lines between the AUTOMAGIC KERNELS LIST markers will be modified
## by the debian update-grub script except for the default options below

## DO NOT UNCOMMENT THEM, Just edit them to your needs

## ## Start Default Options ##
## default kernel options
## default kernel options for automagic boot options
## If you want special options for specific kernels use kopt_x_y_z
## where x.y.z is kernel version. Minor versions can be omitted.
## e.g. kopt=root=/dev/hda1 ro
##      kopt_2_6_8=root=/dev/hdc1 ro
##      kopt_2_6_8_2_686=root=/dev/hdc2 ro
# kopt=root=/dev/sda2 ro

## default grub root device
## e.g. groot=(hd0,0)
# groot=(hd0,0)

## should update-grub create alternative automagic boot options
## e.g. alternative=true
##      alternative=false
# alternative=true

## should update-grub lock alternative automagic boot options
## e.g. lockalternative=true
##      lockalternative=false
# lockalternative=false

## additional options to use with the default boot option, but not with the
## alternatives
## e.g. defoptions=vga=791 resume=/dev/hda5
# defoptions=quiet splash

## altoption boot targets option
## multiple altoptions lines are allowed
## e.g. altoptions=(extra menu suffix) extra boot options
##      altoptions=(recovery mode) single
# altoptions=(recovery mode) single

## controls how many kernels should be put into the menu.lst
## only counts the first occurence of a kernel, not the
## alternative kernel options
## e.g. howmany=all
##      howmany=7
# howmany=all

## should update-grub create memtest86 boot option
## e.g. memtest86=true
##      memtest86=false
# memtest86=true

## should update-grub adjust the value of the default booted system
## can be true or false
# updatedefaultentry=false

## ## End Default Options ##

title           Ubuntu, kernel 2.6.15-27-amd64-generic
root            (hd0,0)
kernel          /vmlinuz-2.6.15-27-amd64-generic root=/dev/sda2 ro quiet splash
initrd          /initrd.img-2.6.15-27-amd64-generic
savedefault
boot

title           Ubuntu, kernel 2.6.15-27-amd64-generic (recovery mode)
root            (hd0,0)
kernel          /vmlinuz-2.6.15-27-amd64-generic root=/dev/sda2 ro single
initrd          /initrd.img-2.6.15-27-amd64-generic
boot

title           Ubuntu, kernel 2.6.15-23-amd64-generic
root            (hd0,0)
kernel          /vmlinuz-2.6.15-23-amd64-generic root=/dev/sda2 ro quiet splash
initrd          /initrd.img-2.6.15-23-amd64-generic
savedefault
boot

title           Ubuntu, kernel 2.6.15-23-amd64-generic (recovery mode)
root            (hd0,0)
kernel          /vmlinuz-2.6.15-23-amd64-generic root=/dev/sda2 ro single
initrd          /initrd.img-2.6.15-23-amd64-generic
boot

title           Ubuntu, memtest86+
root            (hd0,0)
kernel          /memtest86+.bin
boot

### END DEBIAN AUTOMAGIC KERNELS LIST
Personal tools