Restore Debian Linux Grub boot loader

last updated in Categories Debian Linux, Tips, Troubleshooting, Ubuntu Linux

Recently my hard disk went bad (some bad sectors developed), my boot.ini (Windows XP boot file) corrupted. I was using NT boot loader to load Linux. So I need to repair the Grub i.e. restore Grub in master boot record (MBR).


Today is national holiday (I-DAY) and I wanna watch TV. Problem is neither I can boot to Linux nor using XP. So I just took my Debian GNU/Linux DVD and booting started when I had presented installation option (after networking dialog prompt) :
1) Press ALT+F2 (or ALT+CTRL+F2) to get shell prompt
2) Then get the partition tables for the devices using fdisk command:
# fdisk -l

3)When you type fdisk -l, you should see your partition name: /dev/scsi/host0/bus0/target0/lun0/part1 (for IDE disk it display same device file in IDE directory)

4)Once you identified your device file, mount disk using mount command:
# mkdir /mydisk
# mount /dev/scsi/host0/bus0/target0/lun0/part1 /mydisk

5) Next use chroot command to start interactive shell with special root directory i.e. /mydisk will act as root directory.
# chroot /mydisk

6)Use grub-install command to reinstall grub (SCSI disk):
# grub-install /dev/sda

If you have IDE device following command :
# grub-install /dev/hda

Again replace /dev/hda and /dev/sda with your actual device names.

7)Type exit and reboot the system. You should see your GRUB and Linux again.
# exit

Other choice was to use Linux Live CD (e.g. Mepis) and do the above procedure. Well, I could have used the Mepis to watch TV but I had some data and emails in Tunderbird so I opted to restore the Grub; watched TV, took backup of emails and now I will put new 120 GiB hard disk tomorrow 😀


Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.

17 comment

  1. I have a problem regarding dual boot (vista & ubuntu) when successful in installing ubuntu, I can’t boot to vista, only ubuntu. It said virus:….. Is it like a boot virus? how to fix that? thank you

  2. I’ve been following your instructions but it does not work. Since I chrooted to the mounted /dev/sda2 (where grub sould be installed in /boot) grub-install looks for the device file (/dev/sda) in the chrooted dir and thus returns an error; /dev/sda: not found or not a block device. Which makes sense because I did not boot to sda so the /dev/sda device file was never created.

    By the time you read this (hopefully) I’ll have it fixed, but would like to know what I’m not getting just for curiosity sake. Will be checking back.


  3. thanks, good instructions.

    though, you should probably unmount the drive before restarting (though it really isn’t that important).

  4. Hi..
    I tried to restore grub by using the debiam rescue mode…This time I lost windows..!!While selecting windows it is again loading Grub Stage2 and showing the grub menu again….Please help me out..!!

  5. I had:
    not found or not a block device.
    So, next I create node for my /dev/hda
    mknod /dev/hda 3 0
    mknod /dev/hda5 3 5

  6. Phew, thanks!. Managed to clone my old disk and now running my old Debian install on my new disk.

  7. Several users have noted that when they chroot into the special directory, and run grub-install, they receive this warning: ‘not found or not a block device’. Also, these users will notice that the devices haven’t been discovered in /dev/

    To solve this problem, make sure udev is picking up those devices. Do this instead:

    # mount -o bind /dev /mydisk/dev
    # mount -o bind /proc /mydisk/proc

    Now chroot into the new directory
    # chroot /mydisk

    Run the grub reinstall
    # grub-install /dev/hda

    For those users who chroot into the mounted directory, and run the grub-install command only to be left with the message:

  8. Thank you very much !
    It’s the first tuto that works for me, there’s an awful lot of topics that do not even mention the “chroot” part…

  9. A very nice tutorial which is still valid today.
    This was the howto which got me onto the path of solving my non-booting Debian Server (Sqeeze).

    After loading up the Debian-CD rescue mode and entering the rescue shell
    update-grub2 would not run.

    launching /sbin/bash is a good idea by the way

    There is one thing you could have mentioned which I had to do in order to rescure my system. I had to manually mount the /boot paritition and then update-grub2
    worked perfectly.

    Thanks a lot mate

  10. After grub-install I get the error “bash: grub-install: command not found.”

    Grub-install is available before the chroot. Apt-get install grub does not work after the chroot. I’m stuck.

    Have a question? Post it on our forum!