2

The other day I was doing my backups and I was looking for more space to store my videos. So I formatted one of my harddrives (I have 4 not counting the external I was backing up to), but this harddrive turned out to be the wrong one. It had my Win7 installation and my MBR on it.

I figured, no big deal, I'll just use my super grub disk to boot properly, only it couldn't. For reasons unknown, even when I pointed it to the correct /boot partition, it couldn't boot. It also listed my raid 1 array partitions as "unknown".

Here's my setup: SDA: 250 GB total - 250 GB in an NTFS partition with Win7 installed (this is the one I formatted)
SDB: 850 GB total - 4 GB Swap - 846 GB forms a raid array
SDC: 850 GB total - 4 GB /boot - 846 GB forms second part of raid array
SDD: 200 GB total - 200 GB NTFS partition with WinXP installed (this is the one I meant to format)


The Raid array is an LVM separated into a / and a /home. Neither are encrypted. I don't remember the exact distribution.

What can I do to recover my Ubuntu installation and restore GRUB to the MBR?

My /boot/grub/grub.cfg

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by /usr/sbin/grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
  load_env
fi
set default="0"
if [ ${prev_saved_entry} ]; then
  set saved_entry=${prev_saved_entry}
  save_env saved_entry
  set prev_saved_entry=
  save_env prev_saved_entry
  set boot_once=true
fi

function savedefault {
  if [ -z ${boot_once} ]; then
    saved_entry=${chosen}
    save_env saved_entry
  fi
}

function recordfail {
  set recordfail=1
  if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi
}
insmod raid
insmod mdraid
insmod lvm
insmod ext2
set root='(main-root)'
search --no-floppy --fs-uuid --set 12dbe5ea-5a53-4928-bf91-23697c1bcba0
if loadfont /usr/share/grub/unicode.pf2 ; then
  set gfxmode=640x480
  insmod gfxterm
  insmod vbe
  if terminal_output gfxterm ; then true ; else
    # For backward compatibility with versions of terminal.mod that don't
    # understand terminal_output
    terminal gfxterm
  fi
fi
insmod ext2
set root='(hd3,1)'
search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
set locale_dir=($root)/grub/locale
set lang=en
insmod gettext
if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, with Linux 2.6.32-25-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    linux   /vmlinuz-2.6.32-25-generic root=/dev/mapper/main-root ro   quiet splash
    initrd  /initrd.img-2.6.32-25-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-25-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    echo    'Loading Linux 2.6.32-25-generic ...'
    linux   /vmlinuz-2.6.32-25-generic root=/dev/mapper/main-root ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /initrd.img-2.6.32-25-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-24-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    linux   /vmlinuz-2.6.32-24-generic root=/dev/mapper/main-root ro   quiet splash
    initrd  /initrd.img-2.6.32-24-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-24-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    echo    'Loading Linux 2.6.32-24-generic ...'
    linux   /vmlinuz-2.6.32-24-generic root=/dev/mapper/main-root ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /initrd.img-2.6.32-24-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-23-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    linux   /vmlinuz-2.6.32-23-generic root=/dev/mapper/main-root ro   quiet splash
    initrd  /initrd.img-2.6.32-23-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-23-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    echo    'Loading Linux 2.6.32-23-generic ...'
    linux   /vmlinuz-2.6.32-23-generic root=/dev/mapper/main-root ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /initrd.img-2.6.32-23-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-22-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    linux   /vmlinuz-2.6.32-22-generic root=/dev/mapper/main-root ro   quiet splash
    initrd  /initrd.img-2.6.32-22-generic
}
menuentry 'Ubuntu, with Linux 2.6.32-22-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    echo    'Loading Linux 2.6.32-22-generic ...'
    linux   /vmlinuz-2.6.32-22-generic root=/dev/mapper/main-root ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /initrd.img-2.6.32-22-generic
}
menuentry 'Ubuntu, with Linux 2.6.31-14-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    linux   /vmlinuz-2.6.31-14-generic root=/dev/mapper/main-root ro   quiet splash
    initrd  /initrd.img-2.6.31-14-generic
}
menuentry 'Ubuntu, with Linux 2.6.31-14-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    echo    'Loading Linux 2.6.31-14-generic ...'
    linux   /vmlinuz-2.6.31-14-generic root=/dev/mapper/main-root ro single 
    echo    'Loading initial ramdisk ...'
    initrd  /initrd.img-2.6.31-14-generic
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    linux16 /memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
    insmod ext2
    set root='(hd3,1)'
    search --no-floppy --fs-uuid --set f1284e5e-f162-4964-b904-f05f47f6325d
    linux16 /memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows XP Ultimate (on /dev/sdb1)" {
    insmod ntfs
    set root='(hd1,1)'
    search --no-floppy --fs-uuid --set 1a440692440670b5
    drivemap -s (hd0) ${root}
    chainloader +1
}
menuentry "Windows 7 (loader) (on /dev/sdc1)" {
    insmod ntfs
    set root='(hd2,1)'
    search --no-floppy --fs-uuid --set 5816f15316f1331c
    chainloader +1
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
### END /etc/grub.d/40_custom ###

1 Answer 1

4

If you mean this then (IIRC) it cannot fix GRUB2, which is what Ubuntu uses as bootloader. It fixes only legacy grub (or grub 1) which used to be the bootloader until Ubuntu 9.04 aka Jaunty.

The solution is to re-install grub in the MBR as explained in this post

But if you want to put win 7 back, you might want to do it after installing it on sda. Temporarily, however, you can try it to see if you get back your raid array configuration etc alright (anyway Windows installation will overwrite it).

Re-installing grub from live media may not detect windows installation. In this case, run sudo update-grub after booting into Ubuntu to update the grub menu with the Windows option.

grub-install programs the mbr to load the boot files from grub configuration installed in the boot partition. This can be run from live media: the destination for programming mbr and the boot partition location should be specified manually.

update-grub reconfigures grub to (re-)detect the boot options (operating systems, kernel versions and other alternatives) and update its configuration with this. As this is automatic and configures the grub located at /boot at the time of execution, this must be within a persistent installation (not live media) to make changes permanent.

7
  • Win7 is already reinstalled, it didn't touch my other drives. All the information about the RAID array should be in /boot right?
    – Malfist
    Oct 8, 2010 at 14:23
  • Yes. To be sure, can you post the contents of you /boot/grub/grub.cfg ?
    – koushik
    Oct 8, 2010 at 14:26
  • @koushik, I posted it.
    – Malfist
    Oct 11, 2010 at 22:20
  • @kuoshik, I restored GRUB using grub-install (/boot partition) /dev/sda but when I boot I get a grub command line (i.e. Grub > ), and I don't know what to do.
    – Malfist
    Oct 12, 2010 at 4:42
  • That could be explained if grub is not able to find the grub.cfg in SDD (Your grub.cfg looks fine). Did you specify root directory as /boot inside /dev/sdd (by mounting it temporarily) when you ran grub-install ? As per this link, after booting up from live-media you should mount the /boot partition and run sudo grub-install --root-directory=/media/<mount-point-of-sdd-boot-partition> /dev/sda
    – koushik
    Oct 12, 2010 at 5:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .