Knoppix grub repair howto
From Wsms
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.
- Boot from the Knoppix CD and open a Root Shell
- 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.
- Use grub-install with the root-directory option to reinstall the MBR on sda.
- Reboot with shutdown -r now. If you are lucky, you'll be booting the linux install on your hard disk.
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
