Recovering GRUB after installing Windows 7? [duplicate]

Solution 1:

You can re-install grub in the Master Boot Record using the LiveCD for you distribution version,

It goes like this:

  • Boot from LiveCD ⋯ please try to use a LiveCD that has the same version of Grub2 as the installed version

  • Mount the root of the installed Ubuntu at /mnt

  • Change root

  • Update grub

  • Install grub

  • Reboot

The above steps are from near the bottom of the Ubuntu Community Documentation of Grub2

After booting from the liveCD ( select "Try Ubuntu" on the opening screen)

Then start up a terminal (dash, type-in terminal, … )…

  • It may be easier to open this web page while running LiveCD. Firefox should allow you to do this.

Type in the terminal sudo fdisk -l - and enter your password if asked. That's a lower case L. Find the installed Ubuntu partitions, (from mine with other disks snipped ― here):

me@mycomputer:~$sudo fdisk -l
...
Disk /dev/sde: 300.1 GB, 300089646592 bytes
255 heads, 63 sectors/track, 36483 cylinders, total 586112591 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc3f5ebeb

Device    Boot      Start         End      Blocks   Id  System
/dev/sde2       138464296   586110975   223823340    5  Extended
/dev/sde3   *        2048   138463231    69230592   83  Linux
/dev/sde5       138464298   313460279    87497991    7  HPFS/NTFS/exFAT
/dev/sde6       313460736   317650943     2095104   82  Linux swap / Solaris
/dev/sde7       317652992   581922815   132134912   83  Linux
/dev/sde8       581924864   586110975     2093056   82  Linux swap / Solaris

Partition table entries are not in disk order

Find your Linux installation (Id=83, System=Linux0 then type in

sudo mount /dev/sde3 /mnt

but use your partition instead of /dev/sde3(my root partition is sde3, sde7 is my home partition).

This is assuming that you do not have a separate /boot partition. If you do, you will need to also mount it by typing

sudo mount /dev/sd·· /mnt/boot

where sd·· is the partition where you installed the separate boot directory.

ls /mnt - just checking to see if I got it right:

me@mycomputer:~$ sudo mount /dev/sde3 /mnt
me@mycomputer:~$ ls /mnt
bin   cdrom  etc   initrd.img      lib         media  opt   root  sbin     srv  tmp  var      vmlinuz.old
boot  dev    home  initrd.img.old  lost+found  mnt    proc  run   selinux  sys  usr  vmlinuz

You should test to see if the boot directory is properly installed. Type in ls /mnt/boot and if it is empty, the boot directory is not installed. It should look something like this:

me@mycomputer:~$ ls /boot
abi-2.6.35-30-generic     initrd.img-2.6.35-30-generic  System.map-2.6.35-31-generic
abi-2.6.35-31-generic     initrd.img-2.6.35-31-generic  vmcoreinfo-2.6.35-30-generic
config-2.6.35-30-generic  memtest86+.bin                vmcoreinfo-2.6.35-31-generic
config-2.6.35-31-generic  memtest86+_multiboot.bin      vmlinuz-2.6.35-30-generic
grub                      System.map-2.6.35-30-generic  vmlinuz-2.6.35-31-generic

Then:

for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt #change the root
sudo update-grub # now update grub

Example:

me@mycomputer:~$ sudo for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
me@mycomputer:~$ sudo chroot /mnt
me@mycomputer:~$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.0.0-13-generic
Found initrd image: /boot/initrd.img-3.0.0-13-generic
Found linux image: /boot/vmlinuz-3.0.0-12-generic
Found initrd image: /boot/initrd.img-3.0.0-12-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Microsoft Windows XP Professional on /dev/sdc1
done

Now to re-install grub in the MBR. You will need to know which disk your system boots from, and find it in the fdisk -l listing you have already done. Then type in sudo grub-install /dev/sd replacing sd· with the disk you will boot from.

me@mycomputer:~$ sudo grub-install /dev/sd·

Then type in Crtl-D to exit chroot.

Then type in sudo for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done - as one line

me@mycomputer:~$ sudo for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done

If you mounted a separate /boot partition, type in sudo umount /mnt/boot

me@mycomputer:~$ sudo umount /mnt/boot

Then type in sudo umount /mnt

me@mycomputer:~$ sudo umount /mnt

Then type in sudo reboot to restart he system (remember to remove the LiveCD).

me@mycomputer:~$ sudo reboot

Hopefully, grub will be installed.

Solution 2:

Try this...

To recover grub:

  1. Open the live version.
  2. Open the terminal and run sudo fdisk -l to see where Linux is installed.
  3. Run sudo mount /dev/sdaX /mnt where x is the number you have found Linux word in
  4. Run sudo grub-install --root-directory=/mnt /dev/sda to install grub.
  5. Run sudo update-grub to update grub and if this command didn't work run it after rebooting.
  6. Reboot.

Solution 3:

Boot-Repair is a simple tool to repair frequent boot issues you may encounter in Ubuntu like when you can't boot Ubuntu after installing Windows or another Linux distribution, or when you can't boot Windows after installing Ubuntu, or when GRUB is not displayed anymore, some upgrade breaks GRUB, etc.

enter image description here

Remark: this can also be performed from a live-CD or live-USB.

Either add ‘ppa:yannubuntu/boot-repair’ to your Software Sources via the Software Centre or, for speeds-sake, add it using a new Terminal session:

sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair

Boot-Repair can be installed & used from any Ubuntu session (normal session, or live-CD, or live-USB). PPA packages are available for Ubuntu 10.04, 10.10, 11.04, 11.10, 12.04 and 12.10. source