个人工具

“UbuntuHelp:RecoveringUbuntuAfterInstallingWindows”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
Quick Start
第1行: 第1行:
 
{{From|https://help.ubuntu.com/community/RecoveringUbuntuAfterInstallingWindows}}
 
{{From|https://help.ubuntu.com/community/RecoveringUbuntuAfterInstallingWindows}}
 
{{Languages|UbuntuHelp:RecoveringUbuntuAfterInstallingWindows}}
 
{{Languages|UbuntuHelp:RecoveringUbuntuAfterInstallingWindows}}
#title Recovering Ubuntu after installing Windows
+
<<Include(Tag/StyleCleanup)>>
This page documents how to restore or recover from a boot-loader problem. Ubuntu uses the Grub bootloader, please see [[UbuntuHelp:GrubHowto|GrubHowto]] for more information on Grub. Some common reasons for repairing your bootloader are installing Microsoft Windows, adding or removing a hard drive, or even changing hard drive settings.
+
This page documents how to restore or recover from boot-loader related problem. Ubuntu uses the Grub bootloader, please refer to [[UbuntuHelp:GrubHowto|GrubHowto]] for more information on Grub.  
 +
Some common reasons for needing to repair your bootloader include installing Microsoft Windows after you have installed Ubuntu, adding or removing a hard drive, or even changing hard drive settings.
 
== Using the Ubuntu Desktop/Live CD ==
 
== Using the Ubuntu Desktop/Live CD ==
=== Quick Start ===
 
This option will use the Desktop/Live CD to install Grub into your MBR (Master Boot Record). '''This option will overwrite your Windows Boot Loader'''. It is OK to do this, in fact that is the goal of this how to (in order to boot Ubuntu) B)
 
1. Boot the Desktop/Live CD. (Use Ubuntu 8.04 or later)
 
2. Open a terminal (Applications -> Accessories -> Terminal)
 
3. Start grub as root with the following command :
 
 
<pre><nowiki>
 
sudo grub
 
</nowiki></pre>
 
4. You will get a grub prompt (see below) which we will use to find the root partition and install grub to the MBR (hd0)
 
 
<pre><nowiki>
 
        [ Minimal BASH-like line editing is supported.  For
 
        the  first  word,  TAB  lists  possible  command
 
        completions.  Anywhere else TAB lists the possible
 
        completions of a device/filename. ]
 
 
grub>
 
</nowiki></pre>
 
Type the following and press enter:
 
<pre><nowiki>
 
find /boot/grub/stage1
 
</nowiki></pre>
 
If you get "Error 15: File not found", try the following:
 
<pre><nowiki>
 
find /grub/stage1
 
</nowiki></pre>
 
Using this information, set the root device (fill in X,Y with whatever the find command returned):
 
<pre><nowiki>
 
grub> root (hdX,Y)
 
</nowiki></pre>
 
Install Grub:
 
<pre><nowiki>
 
grub> setup (hd0)
 
</nowiki></pre>
 
(In case you want to install GRUB to another drive (like hdX) use the above command as 'setup (hdX)' and then continue)
 
Exit Grub:
 
<pre><nowiki>
 
grub> quit
 
</nowiki></pre>
 
5. Reboot (to hard drive). Grub should be installed and both Ubuntu and Windows should have been automatically detected.
 
6. If, after installing grub, Windows will not boot you may need to edit /boot/grub/menu.lst (That is a small "L" and not the number 1 in menu.lst)
 
 
Open a terminal and enter :
 
<pre><nowiki>
 
gksu gedit /boot/grub/menu.lst
 
</nowiki></pre>
 
Or, in Kubuntu:
 
<pre><nowiki>
 
kdesu kate /boot/grub/menu.lst
 
</nowiki></pre>
 
Your Windows stanza should look something like this :
 
<pre><nowiki>
 
title Windows XP/Vista # You can use any title you wish, this will appear on your grub boot menu
 
rootnoverify (hd0,0) #(hd0,0) will be most common, you may need to adjust accordingly
 
makeactive
 
chainloader +1
 
</nowiki></pre>
 
Note: Put your Windows stanza before or after AUTOMAGIC KERNEL LIST in the menu.lst
 
 
 
=== Overwriting the Windows bootloader ===
 
=== Overwriting the Windows bootloader ===
Boot from a Live CD and open a terminal. You'll need to run a few commands as root so you can use ''sudo -i'' to get a root shell and run them normally instead of using ''sudo'' on each of them. Be extra careful when running a root shell, especially for typos !
+
'''This will overwrite your Windows Boot Loader'''. In order to boot Ubuntu we will be overwriting the Windows Boot Loader. This is to be expected and is part of this guide.
We'll need to find which partition your Ubuntu system is installed on. Type the command ''fdisk -l''. It will output a list of all your partitions, for example :
+
====== WARNING ======
 +
'''Do not use Ubuntu 9.10 live CD to restore the boot loader from a previous version.''' It will leave you with Grub in shell mode and no menu. If this happens, repeat the procedure with 9.04 or earlier -- preferably the same version that installed Grub originally.
 +
The first step is to boot from a Live CD and open a terminal. You will need to run a few commands as root. One option is to first run ''sudo -i'' which will send you to a root shell from which you will simply run the commands without the ''sudo'' prefix. Be extremely careful when running a root shell, especially for typos! Even an extra space can do massive damage to your system. Always backup on external media before attempting recovery if at all possible.
 +
Next we will need to find upon which partition your Ubuntu system is installed. Type the command ''fdisk -l''. It will output a list of all your partitions. Example :
 
<pre><nowiki>
 
<pre><nowiki>
 
fdisk -l
 
fdisk -l
第75行: 第19行:
  
 
   Device Boot      Start        End      Blocks  Id  System
 
   Device Boot      Start        End      Blocks  Id  System
/dev/hda1               1          8      64228+  83  Linux
+
/dev/sda1               1          8      64228+  83  Linux
/dev/hda2               9        1224    9767520  83  Linux
+
/dev/sda2               9        1224    9767520  83  Linux
/dev/hda3   *        1225        2440    9767520  a5  FreeBSD
+
/dev/sda3   *        1225        2440    9767520  a5  FreeBSD
/dev/hda4           2441      14593    97618972+  5  Extended
+
/dev/sda4           2441      14593    97618972+  5  Extended
/dev/hda5           14532      14593      498015  82  Linux swap / Solaris
+
/dev/sda5           14532      14593      498015  82  Linux swap / Solaris
/dev/hda6           2441      14530    97112862  83  Linux
+
/dev/sda6           2441      14530    97112862  83  Linux
  
 
Partition table entries are not in disk order </nowiki></pre>
 
Partition table entries are not in disk order </nowiki></pre>
Here I have three Linux partitions. /dev/hda2 is my root partition, /dev/hda1 is my /boot partition and /dev/hda6 is my /home partitions. If you only have one, obviously this is the one your Ubuntu system is installed on. If you have more than one and you don't know which one your Ubuntu is installed on, we'll look for it later. First, create a mountpoint for your partition, for example :
+
Here are listed three Linux partitions. /dev/sda2 is the root partition, /dev/sda1 is the /boot partition and /dev/sda6 is the /home partition. If you only have one partition, this means that your entire Ubuntu system is installed on that one.  
 +
Later there will be a section on how to determine which partition your Ubuntu installation is on if you have several different partitions.  
 +
First, create a mountpoint for your partition, for example:
 
<pre><nowiki>
 
<pre><nowiki>
mkdir /mnt/root
+
mkdir /media/root
 
</nowiki></pre>
 
</nowiki></pre>
Then mount your partition in it. If you don't know which one it is, then mount any of them, we'll se if it's the correct one.
+
Then mount your partition in it. If you don't know which one it is, then mount any of them, we will determine if it is the correct one.
 
<pre><nowiki>
 
<pre><nowiki>
mount -t ext3 /dev/hda2 /mnt/root
+
mount /dev/sda2 /media/root
 
</nowiki></pre>
 
</nowiki></pre>
Of course, replace /dev/hda2 with the correct name of your partition. You can check if it's the correct one by running ''ls /mnt/root'', which should output something like this :
+
Replace /dev/sda2 with the correct name of your partition. To check if it is the correct one, run ''ls /media/root'' which should output something like this:
 
<pre><nowiki>
 
<pre><nowiki>
 
bin    dev      home        lib    mnt  root    srv  usr
 
bin    dev      home        lib    mnt  root    srv  usr
第97行: 第43行:
 
cdrom  initrd.img  media  proc  selinux  tmp  vmlinuz
 
cdrom  initrd.img  media  proc  selinux  tmp  vmlinuz
 
</nowiki></pre>
 
</nowiki></pre>
If what you have looks not at all like this, you didn't mount the correct partition. Do ''umount /mnt/root'' to unmount it and try another one. You also need to mount your /boot partition if you made one, like this :
+
If what you have looks nothing like this, the drive you have selected is incorrect. Run ''umount /media/root'' in the Terminal to unmount it then mount and try another one. Should you have made a /boot partition you can mount it like so:
 
<pre><nowiki>
 
<pre><nowiki>
mount -t ext3 /dev/hda1 /mnt/root/boot
+
mount /dev/sda1 /media/root/boot
 
</nowiki></pre>
 
</nowiki></pre>
To make sure it was the correct one, run ''ls /mnt/root/boot'', which sould output something like this :
+
To make sure this is indeed the /boot partition, run ''ls /media/root/boot'', which should output something like this :
 
<pre><nowiki>
 
<pre><nowiki>
 
config-2.6.18-3-686      initrd.img-2.6.18-3-686.bak  System.map-2.6.18-3-686
 
config-2.6.18-3-686      initrd.img-2.6.18-3-686.bak  System.map-2.6.18-3-686
第107行: 第53行:
 
initrd.img-2.6.18-3-686  memtest86+.bin
 
initrd.img-2.6.18-3-686  memtest86+.bin
 
</nowiki></pre>
 
</nowiki></pre>
Once again, if what you have doesn't fit, unmount it and try another partition.
+
Once again, if what you have is not similar, unmount it and try another partition.
Now that everything is mounted, we just need to reinstall GRUB :
+
Now that everything is mounted, we just need to reinstall GRUB:
 
<pre><nowiki>
 
<pre><nowiki>
sudo grub-install --root-directory=/mnt/root /dev/hda
+
sudo grub-install --root-directory=/media/root /dev/sda
 
</nowiki></pre>
 
</nowiki></pre>
If you got BIOS warnings try:
+
If you get BIOS warnings try:
 
<pre><nowiki>
 
<pre><nowiki>
sudo grub-install --root-directory=/mnt/root /dev/hda --recheck
+
sudo grub-install --root-directory=/media/root /dev/sda --recheck
 
</nowiki></pre>
 
</nowiki></pre>
Of course, replace /dev/hda with the location you want to install GRUB on. If all went well, you should see something like this :
+
'''Note:''' Replace /dev/sda with the location you want to install GRUB on. If all went well, you should see something like this:
 
<pre><nowiki>
 
<pre><nowiki>
 
Installation finished. No error reported.
 
Installation finished. No error reported.
第123行: 第69行:
 
fix it and re-run the script `grub-install'.
 
fix it and re-run the script `grub-install'.
  
(hd0)  /dev/hda
+
(hd0)  /dev/sda
 
</nowiki></pre>
 
</nowiki></pre>
Now you can reboot and the GRUB menu should appear. If you see a warning message regarding XFS filesystem, you can ignore it.
+
Reboot, making sure to boot to your hard drive and not to the live CD. Grub should be installed and both Ubuntu and Windows should have been automatically detected.
 +
If, after installing grub, Windows does not appear in the boot menu, you will need to edit /boot/grub/menu.lst (That is a lowercase "L" and not the number 1 in menu.lst)
 +
Open a terminal and enter:
 +
<pre><nowiki>
 +
gksu gedit /boot/grub/menu.lst
 +
</nowiki></pre>
 +
Or, in Kubuntu:
 +
<pre><nowiki>
 +
kdesu kate /boot/grub/menu.lst
 +
</nowiki></pre>
 +
Your Windows stanza should look something like this:
 +
<pre><nowiki>
 +
title Windows XP/Vista # Use any title you wish, it will appear in the grub boot menu
 +
rootnoverify (hd0,0) # This is the location of the windows partition
 +
makeactive
 +
chainloader +1
 +
</nowiki></pre>
 +
Note: Put your Windows stanza before or after AUTOMAGIC KERNEL LIST in the menu.lst
 
=== Preserving Windows Bootloader ===
 
=== Preserving Windows Bootloader ===
This method allows you to restore GRUB and keep the Windows bootloader as your primary bootloader. Thanks to Ubuntu's support for NTFS writing it's now an absolute cinch.
+
This method allows you to restore GRUB and keep the Windows bootloader as your primary bootloader. Thanks to Ubuntu's support for NTFS writing this method is now quite simple.
The method shown above puts GRUB back on the MBR (master boot record) of the hard drive instead of in the root partition. But you probably won't want that, if you use a third-party boot manager like Boot Magic or System Commander.  (The original poster also suggested that this would be useful to restore the Grub menu after a re-ghosting.In that case, use this alternative.
+
The previous method puts GRUB back on the MBR (Master Boot Record) of the hard drive instead of in the root partition. Should you not wish to do so, for instance if you use a third-party boot manager like Boot Magic or System Commander, this next suggestion will be helpful. Another reason to prefer this method is for when restoring the Grub menu after a re-ghosting. In either case, use this alternative.
 
'''If you have your Linux system in a second (or third...) hard disk this method will not work. Please check Super Grub Disk's method that address this problem.'''
 
'''If you have your Linux system in a second (or third...) hard disk this method will not work. Please check Super Grub Disk's method that address this problem.'''
 
==== Restoring GRUB ====
 
==== Restoring GRUB ====
1. Boot from a Live CD, like Ubuntu Live, Knoppix, Mepis, or similar. Ideally use Ubuntu 8.04 or higher as this has NTFS write support and makes life a bit easier; this isn't necessary, just handy.
+
1. Boot from a Live CD, like Ubuntu Live, Knoppix, Mepis, or similar. Ideally use Ubuntu 8.04 or higher as this has NTFS write support and makes life a bit easier. Note that this isn't necessary, just more convenient.
2. Open a Terminal. Open a root terminal (that is, type "su" in a non-Ubuntu distro, or "sudo -i" in Ubuntu). Enter root passwords as necessary.
+
2. Open a Terminal. Open a root terminal (For non-Ubuntu live CDs type "su" the terminal. For Ubuntu based distros run "sudo -i".) Enter root passwords as necessary.
 
3. Type "grub" which makes a GRUB prompt appear.
 
3. Type "grub" which makes a GRUB prompt appear.
4. Type "find /boot/grub/stage1". You'll get a response like "(hd0)" or in my case "(hd0,3)". Use whatever your computer spits out for the following lines. Note that you should have mounted the partition which has your Linux system before typing this command. (e.g. In Knoppix Live CD partitions are shown on the desktop but they're not mounted until you double-click on them or mount them manually)
+
4. Type "find /boot/grub/stage1". You'll get a response like "(hd0)" or in my case "(hd0,3)". Use the output from this command for the following commands.  
 +
 
 +
'''Note:'''
 +
You should have mounted the partition which has your Linux system before typing this command. (e.g. In Knoppix Live CD partitions are shown on the desktop but they're not mounted until you double-click on them or mount them manually)
 
5. Type "root (hd0,3)" note the space between root and (hd0,3).
 
5. Type "root (hd0,3)" note the space between root and (hd0,3).
6. Type "setup (hd0,3)". This is key. Other instructions say to use "(hd0)", and that's fine if you want to write GRUB to the MBR. If you want to write it to your linux root partition, then you want the number after the comma, such as "(hd0,3)".
+
6. Type "setup (hd0,3)". This is key. Other instructions say to use "(hd0)", and that's fine if you want to write GRUB to the MBR. If you want to write it to your Linux root partition, then you want the number after the comma, such as "(hd0,3)".
 
7. Type "quit".
 
7. Type "quit".
 
8. At this stage you can either restart the system and install your own bootloader, or you can continue and tell the Windows bootloader where to find GRUB which will handle booting Linux.
 
8. At this stage you can either restart the system and install your own bootloader, or you can continue and tell the Windows bootloader where to find GRUB which will handle booting Linux.
  
 
==== Making Windows Load GRUB (and then Linux) ====
 
==== Making Windows Load GRUB (and then Linux) ====
This is taken from [http://www.geocities.com/epark/linux/grub-w2k-HOWTO.html Dual-Boot Linux and Windows 2000/Windows XP with GRUB HOWTO] which has been helping people dual boot since 2005, or maybe before.
+
This is taken from [[UbuntuHelp:www.geocities.com/epark/linux/grub-w2k-HOWTO.html|Dual-Boot Linux and Windows 2000/Windows XP with GRUB HOWTO]] which has been helping people dual boot since at least 2005.
 
1. In Linux open a command window.
 
1. In Linux open a command window.
2. Mount a drive which you can share with Windows; this could be a USB drive, a FAT32 partition on your machine, or if you are using a Linux distro which supports NTFS writing like Ubuntu 8.04+ (maybe earlier?) then you can mount the actual Windows c:\ drive itself! The big bonus of writing to the windows drive is that you are going to need to put a file there, so it saves copying a file around. For example  
+
2. Mount a drive which you can share with Windows. This could be a USB drive, a FAT32 partition on your hard drive, or if you are using a Linux distribution which supports NTFS writing natively (Such as Ubuntu 8.04 or later) then you can mount the actual Windows C:\ drive itself! The advantage of writing to the Windows drive is that you are going to need to put a file there eventually, so it saves time copying a file around. For example:
  
 
<pre><nowiki>  
 
<pre><nowiki>  
第149行: 第115行:
 
#mount /dev/sda1 /tmp/windows
 
#mount /dev/sda1 /tmp/windows
 
</nowiki></pre>
 
</nowiki></pre>
3. Now you are going to make a copy of your boot partition; finding what this is called is not 100% deterministic because Linux might call your drives sdX or hdX, whereas GRUB always calls them hdX and Linux names them [hd|sd][Letter][Number] whereas GRUB names them as hd[Number][Number]; note that df won't work as you are booted from a live CD. But let's have a go; if you installed GRUB on (hd0,0), then /boot is on hda1 or sda1, (hd1,0) === hdb1 or sdb1, (hd0,1) === hda2 or sda2, etc... this narrows you down to two possibliities, now issuing <code><nowiki>ls /dev |grep hd</nowiki></code> will let you know if you have that drive on your machine, if nothing comes up which matchs, then you must have an sd drive. Ok great...
+
However, when writing directly to the C:\ drive you could also do some damage to the system if you delete or move something. If you do pick the option to write directly, go in, put the file where it belongs, and touch NOTHING else.
4. Having hopefully determined your boot partition issue the command (as root)
+
3. Now you are going to make a copy of your boot partition. Finding out what this is called is not always completely reliable since the Linux the Linux naming conventions differ from the GRUB naming conventions. Linux labels partitions as '''hd[Letter][Number]''' or '''sd[Letter][Number]''' whereas GRUB always names them as '''hd[Number][Number]'''. If you installed GRUB on (hd0,0), then the '''/boot''' partition will be on '''hda1''' or '''sda1'''. (Since (hd1,0) == hdb1 or sdb1, then by extension if you installed GRUB on (hd0,1) then the '''/boot''' partition will be on hda2 or sda2 and so on and so forth.) This narrows you down to two possibilities. If you now paste <code><nowiki>ls /dev |grep hd</nowiki></code> it will let you know if you have that drive on your machine. If nothing comes up which matches, then that means you must have an sd drive.
 +
 
 +
'''Note:''' The command '''<code><nowiki>df</nowiki></code>''' won't work as you are booted from a Live CD.
 +
4. Having determined your boot partition run this command as root:
  
 
<code><nowiki>#dd if=/dev/sda2 of=/tmp/windows/linux.bin bs=512 count=1</nowiki></code>
 
<code><nowiki>#dd if=/dev/sda2 of=/tmp/windows/linux.bin bs=512 count=1</nowiki></code>
Where `/dev/sda2` is your boot partition and `/tmp/windows/` is the drive you want to copy the boot sector image to.
+
Looking at this example `/dev/sda2` is your boot partition and `/tmp/windows/` is the drive you want to copy the boot sector image to.
 
5. If you haven't created `linux.bin` in the Windows drive then you need to copy it there now.
 
5. If you haven't created `linux.bin` in the Windows drive then you need to copy it there now.
6. Reboot into Windows, open `c:\boot.ini` in notepad and on a new line at the botton add `c:\linux.bin="Linux"`. This file might be write protected, if it is enable write in the right click context menu -> properties; you should disable write afterwards. Make sure that at the top of the `boot.ini` file there is a `timeout` set, i.e `timeout=5`. (Ah ha, you say, now I have NTFS support, why don't I just edit `boot.ini` in Linux, the answer to this is that Linux and Windows represent line breaks in different ways, so even though you can edit the file, it won't add a new line 残念)
+
6. Next, reboot your computer and boot into Windows. Open `c:\boot.ini` in Notepad, and add a new line at the bottom:
 +
 
 +
<pre><nowiki>
 +
c:\linux.bin="Linux"
 +
</nowiki></pre>
 +
This file might be write protected. If that is so, you need to enable writing to the file. To do so, right click, and from the context menu select Properties. Then uncheck the box that says "File is read only". Make sure to put that checkmark back afterwards.
 +
Next, make sure that at the top of the `boot.ini` file there is a `timeout` set, i.e `timeout=5`.  
 +
===== Warning =====
 +
Do not edit this file from the Live CD, even if you have NTFS write support. Linux and Windows represent line breaks in different ways, so even though you can edit the file, it won't add a new line.
 
7. That's it, reboot and you will be given the option of booting into Linux, selecting that will chainload GRUB and this will let you boot into your Linux distro.
 
7. That's it, reboot and you will be given the option of booting into Linux, selecting that will chainload GRUB and this will let you boot into your Linux distro.
  
From: http://ubuntuforums.org/showpost.php?p=121355&postcount=5
+
Source: http://ubuntuforums.org/showpost.php?p=121355&postcount=5
 
== From Inside Ubuntu ==
 
== From Inside Ubuntu ==
You have to run "grub" not from the Ubuntu Desktop/Live CD, but from your disk installation to make it work. To do this mount your root partition (following examples assume a root partition on hda1):
+
While you can run "grub" from the Ubuntu Desktop/Live CD, you can also recover grub from within your Ubuntu installation to make it work. To do this, mount your root partition (the following examples assume that the root partition is on hda1):
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo mkdir /mnt/linux
 
sudo mkdir /mnt/linux
第172行: 第149行:
 
== Using the Unofficial "Super Grub Disk" ==
 
== Using the Unofficial "Super Grub Disk" ==
 
=== From within Windows ===
 
=== From within Windows ===
* Download [http://forjamari.linex.org/frs/download.php/910/auto_super_grub_disk_1.0.exe Auto Super Grub Disk]
+
* Download [http://www.supergrubdisk.org/index.php?pid=12 Auto Super Grub Disk]
* '''Double-click auto_super_grub_disk_1.0''' icon, install it, and reboot.
+
* '''Double-click auto_super_grub_disk_1.7''' icon, install it, and reboot.
 
* On the next boot, select the '''UNetbootin-supergrubdisk''' menu entry; this will launch the Auto Super Grub Disk.
 
* On the next boot, select the '''UNetbootin-supergrubdisk''' menu entry; this will launch the Auto Super Grub Disk.
 
* '''Do nothing till you see your Grub menu again.'''
 
* '''Do nothing till you see your Grub menu again.'''
第187行: 第164行:
 
* You're done.
 
* You're done.
 
=== Preserving Windows Bootloader ===
 
=== Preserving Windows Bootloader ===
The method shown above puts GRUB back on the MBR (master boot record) of the hard drive instead of in the root partition. But you probably won't want that, if you use a third-party boot manager like Boot Magic or System Commander. (The original poster also suggested that this would be useful to restore the Grub menu after a re-ghosting.)  In that case, use this alternative.
+
The method shown above puts GRUB back on the MBR (Master Boot Record) of the hard drive instead of in the root partition. If you use a third-party boot manager like Boot Magic or System Commander you probably won't want to do that. This method could also be used to restore the Grub menu after a re-ghosting. If this is the case, use this alternative.
This alternative, used without a third-party boot manager, will not cause Ubuntu to boot.
+
NOTE: This alternative, used without a third-party boot manager, will not cause Ubuntu to boot.
''' This alternative will let you boot your second hard disk Linux installations from Windows while the Using the Ubuntu Desktop/Live CD Preserving Windows Bootloader instructions will not.'''
+
''' This method will let you boot your second hard disk Linux installations from Windows while the Using the Ubuntu Desktop/Live CD. Preserving Windows Bootloader instructions will not.'''
 
Either:
 
Either:
 
* Download [http://forjamari.linex.org/projects/supergrub/ Super Grub Disk]
 
* Download [http://forjamari.linex.org/projects/supergrub/ Super Grub Disk]
* Burn into a cdrom (better) or a floppy
+
* Burn into a cdrom (suggested) or a floppy
 
* Boot from it
 
* Boot from it
 
Or:
 
Or:
第220行: 第197行:
 
Prerequisites:
 
Prerequisites:
 
* Your Ubuntu partitions are all still intact
 
* Your Ubuntu partitions are all still intact
* You have a [[UbuntuHelp:LiveCD|LiveCD]], such as the Ubuntu Desktop CD, or anything you're comfortable with
+
* You have a [[UbuntuHelp:LiveCD|LiveCD]], such as the Ubuntu Desktop CD or the Knoppix Live CD
 
* You're familiar enough with your [[UbuntuHelp:LiveCD|LiveCD]] to gain access to a console
 
* You're familiar enough with your [[UbuntuHelp:LiveCD|LiveCD]] to gain access to a console
 
* You remember how you set up your partitions (having a printout of `/etc/fstab` is ideal, though you can make do with the output of <code><nowiki>fdisk -l /dev/hda</nowiki></code>)
 
* You remember how you set up your partitions (having a printout of `/etc/fstab` is ideal, though you can make do with the output of <code><nowiki>fdisk -l /dev/hda</nowiki></code>)
* Knowledge of how your kernel works (specifically with regards to initrd), if you're using a non-Ubuntu kernel or built your own
+
* Knowledge of how your kernel works (specifically with regards to initrd), if you're using a non-Ubuntu kernel or you have built your own
 
* Your kernel's version; this howto assumes 2.6.10-5-386
 
* Your kernel's version; this howto assumes 2.6.10-5-386
 
=== Preparing Your Working Environment ===
 
=== Preparing Your Working Environment ===
 
To begin the restoration procedure, insert your [[UbuntuHelp:LiveCD|LiveCD]] and reboot your computer.
 
To begin the restoration procedure, insert your [[UbuntuHelp:LiveCD|LiveCD]] and reboot your computer.
Proceed with your [[UbuntuHelp:LiveCD|LiveCD]]'s bootup proceedure until you are presented with an interface.
+
Proceed with your [[UbuntuHelp:LiveCD|LiveCD]]'s bootup procedure until you are presented with an interface.
 
If your [[UbuntuHelp:LiveCD|LiveCD]] does not immediately present you with a console, also called a terminal, open one -- to do this with the Ubuntu [[UbuntuHelp:LiveCD|LiveCD]], click Applications -> System Tools -> Terminal.
 
If your [[UbuntuHelp:LiveCD|LiveCD]] does not immediately present you with a console, also called a terminal, open one -- to do this with the Ubuntu [[UbuntuHelp:LiveCD|LiveCD]], click Applications -> System Tools -> Terminal.
 
'''Note''': Since this is a [[UbuntuHelp:LiveCD|LiveCD]] environment, any changes to user accounts or filesystem layouts at this level will not be permanent. This means you can set a temporary root password and create directories without affecting your actual installation.
 
'''Note''': Since this is a [[UbuntuHelp:LiveCD|LiveCD]] environment, any changes to user accounts or filesystem layouts at this level will not be permanent. This means you can set a temporary root password and create directories without affecting your actual installation.
第239行: 第216行:
 
</nowiki></pre>
 
</nowiki></pre>
 
Now that you have root access, you need to mount the partition(s) containing your bootloader files.
 
Now that you have root access, you need to mount the partition(s) containing your bootloader files.
You will need access to both your `/sbin/` and `/boot/` directories. If you have a `/boot/` listing in your `fstab`, you are among those who will need to mount two partitions.
+
You will need access to both your `<code><nowiki>/sbin/</nowiki></code>` and `<code><nowiki>/boot/</nowiki></code>` directories. If you have a `<code><nowiki>/boot/</nowiki></code>` listing in your `<code><nowiki>fstab</nowiki></code>`, you are among those who will need to mount two partitions.
 
Begin by creating a mount point for your working environment -- you'll notice this is the same as creating a directory.
 
Begin by creating a mount point for your working environment -- you'll notice this is the same as creating a directory.
 
<pre><nowiki>
 
<pre><nowiki>
第248行: 第225行:
 
mkdir /mnt/work/boot
 
mkdir /mnt/work/boot
 
</nowiki></pre>
 
</nowiki></pre>
Now it's time to actually load your filesystem data. Review your `fstab` and identify the location(s) of `/` and `/boot/`; these will likely look something like `/dev/hda3` and `/dev/hda4`, though the letter 'a' and the numbers 3 and 4 may differ.
+
Now it's time to actually load your filesystem data. Review your `<code><nowiki>fstab</nowiki></code>` and identify the location(s) of `/` and `<code><nowiki>/boot/</nowiki></code>`; these will likely look something like `<code><nowiki>/dev/hda3</nowiki></code>` and `<code><nowiki>/dev/hda4</nowiki></code>`, though the letter 'a' and the numbers 3 and 4 may differ.
'''Note''': For the remainder of this howto, `/dev/hda3` and `/dev/hda4` will be assumed, so alter them as needed when typing them in yourself.
+
'''Note''': For the remainder of this howto, `<code><nowiki>/dev/hda3</nowiki></code>` and `<code><nowiki>/dev/hda4</nowiki></code>` will be assumed, so alter them as needed when typing them in yourself.
 
Enter the following commands to load your filesystem and some information GRUB may need.
 
Enter the following commands to load your filesystem and some information GRUB may need.
 
<pre><nowiki>
 
<pre><nowiki>
第261行: 第238行:
 
chroot /mnt/work/ /bin/bash
 
chroot /mnt/work/ /bin/bash
 
</nowiki></pre>
 
</nowiki></pre>
'''Warning''': From this point on, any files you modify will affect your Ubuntu system. You have left the safety of the [[UbuntuHelp:LiveCD|LiveCD]]. Excercise caution.
+
'''Warning''': From this point on, any files you modify will affect your Ubuntu system. You have left the safety of the [[UbuntuHelp:LiveCD|LiveCD]]. Exercise caution.
 
==== Recovering GRUB Automatically ====
 
==== Recovering GRUB Automatically ====
 
If you have a separate `/boot/` partition, type the following line.
 
If you have a separate `/boot/` partition, type the following line.
第271行: 第248行:
 
sudo /sbin/grub-install /dev/hda
 
sudo /sbin/grub-install /dev/hda
 
</nowiki></pre>
 
</nowiki></pre>
If the command you used above failed, which is unlikely, you will need to configure GRUB manually (it isn't too hard); if it succeeded, you should read the note at the start of the final section: "Configuring the GRUB Menu".
+
If the command you used above failed, which is unlikely, you will need to configure GRUB manually (it isn't too hard). If it succeeded, you should read the note at the start of the final section: "Configuring the GRUB Menu".
 
==== Recovering GRUB Manually ====
 
==== Recovering GRUB Manually ====
 
Before you can undertake the next step, it's important that you understand how GRUB identifies partitions.
 
Before you can undertake the next step, it's important that you understand how GRUB identifies partitions.
第290行: 第267行:
 
sudo nano /boot/grub/menu.lst
 
sudo nano /boot/grub/menu.lst
 
</nowiki></pre>
 
</nowiki></pre>
'''Note''': Your `menu.lst` file is used to control the operating systems GRUB displays on startup, as well as its visual appearance. This howto will only explain how to get your operating systems to boot; it will not tell you how to make your bootloader pretty.
+
'''Note''': Your `<code><nowiki>menu.lst</nowiki></code>` file is used to control the operating systems GRUB displays on startup, as well as its visual appearance. This howto will only explain how to get your operating systems to boot, it will not tell you how to make your bootloader pretty.
A sample `menu.lst`, stripped of unnecessary comments, appears below. It is based on the `/dev/hda3` and `/dev/hda4` example above, and assumes Windows resides at `/dev/hda1`.
+
A sample `<code><nowiki>menu.lst</nowiki></code>`, stripped of unnecessary comments, appears below. It is based on the `<code><nowiki>/dev/hda3</nowiki></code>` and `<code><nowiki>/dev/hda4</nowiki></code>` example above, and assumes Windows resides at `<code><nowiki>/dev/hda1</nowiki></code>`.
 
<pre><nowiki>
 
<pre><nowiki>
 
timeout 5 #The number of seconds GRUB should wait before booting an OS
 
timeout 5 #The number of seconds GRUB should wait before booting an OS
第332行: 第309行:
 
</li><li>Go through the installation process until you reach "[!!!] Disk Partition"
 
</li><li>Go through the installation process until you reach "[!!!] Disk Partition"
 
</li><li>Select Manual Partition
 
</li><li>Select Manual Partition
</li><li>Mount your appropriate linux partions:</li></ol>
+
</li><li>Mount your appropriate linux partitions:</li></ol>
  
 
*/
 
*/
第350行: 第327行:
 
* [http://www.gnu.org/software/grub/manual/html_node/ GRUB Manual]
 
* [http://www.gnu.org/software/grub/manual/html_node/ GRUB Manual]
 
* [http://www.gnu.org/software/grub GRUB homepage]
 
* [http://www.gnu.org/software/grub GRUB homepage]
* [http://autistici.org/grub/ Grub wiki]
+
* [http://grub.enbug.org/ GrRUB wiki]
 
* [http://tldp.org/HOWTO/Linux+Win9x+Grub-HOWTO/index.html Linux+Win+Grub HowTo]
 
* [http://tldp.org/HOWTO/Linux+Win9x+Grub-HOWTO/index.html Linux+Win+Grub HowTo]
* [http://supergrub.forjamari.linex.org/ Super Grub Disk. Ready to go cdrom or floppy that restores Grub on MBR automatically]
+
* [http://www.supergrubdisk.org/ Super Grub Disk] - Ready to go cdrom or floppy that restores Grub on MBR automatically
* [http://promote-opensource.org/modules/mylinks/singlelink.php?cid=14&lid=94 Linux Recovery and Boot Disk Creation with Grub].
+
* [https://gna.org/projects/grub4dos/ GRUB for DOS]
* [http://www.skyjammer.com/files/knoppix/ Win32 Grub]
+
* [http://www.ameritech.net/users/gholmer/booting.html Booting with GRUB]
+
* [http://grub4dos.sourceforge.net/ WinGRUB]
+
* [http://www.geocities.com/lode_leroy/grubinstall/ GRUB Installer for Windows]
+
* [http://grub.linuxeden.com/ GRUB for DOS] - Bridging DOS/Windows to Unix/Linux
+
 
----
 
----
[[category:CategoryLive]] [[category:CategoryBackupRecovery]] [[category:CategoryCleanup]] [[category:CategoryBootAndPartition]]
+
[[category:CategoryLive]] [[category:CategoryBackupRecovery]] [[category:CategoryBootAndPartition]]
  
 
[[category:UbuntuHelp]]
 
[[category:UbuntuHelp]]

2009年11月17日 (二) 20:27的版本


<<Include(Tag/StyleCleanup)>> This page documents how to restore or recover from boot-loader related problem. Ubuntu uses the Grub bootloader, please refer to GrubHowto for more information on Grub. Some common reasons for needing to repair your bootloader include installing Microsoft Windows after you have installed Ubuntu, adding or removing a hard drive, or even changing hard drive settings.

Using the Ubuntu Desktop/Live CD

Overwriting the Windows bootloader

This will overwrite your Windows Boot Loader. In order to boot Ubuntu we will be overwriting the Windows Boot Loader. This is to be expected and is part of this guide.

WARNING

Do not use Ubuntu 9.10 live CD to restore the boot loader from a previous version. It will leave you with Grub in shell mode and no menu. If this happens, repeat the procedure with 9.04 or earlier -- preferably the same version that installed Grub originally. The first step is to boot from a Live CD and open a terminal. You will need to run a few commands as root. One option is to first run sudo -i which will send you to a root shell from which you will simply run the commands without the sudo prefix. Be extremely careful when running a root shell, especially for typos! Even an extra space can do massive damage to your system. Always backup on external media before attempting recovery if at all possible. Next we will need to find upon which partition your Ubuntu system is installed. Type the command fdisk -l. It will output a list of all your partitions. Example :

fdisk -l

Disk /dev/hda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1           8       64228+  83  Linux
/dev/sda2               9        1224     9767520   83  Linux
/dev/sda3   *        1225        2440     9767520   a5  FreeBSD
/dev/sda4            2441       14593    97618972+   5  Extended
/dev/sda5           14532       14593      498015   82  Linux swap / Solaris
/dev/sda6            2441       14530    97112862   83  Linux

Partition table entries are not in disk order 

Here are listed three Linux partitions. /dev/sda2 is the root partition, /dev/sda1 is the /boot partition and /dev/sda6 is the /home partition. If you only have one partition, this means that your entire Ubuntu system is installed on that one. Later there will be a section on how to determine which partition your Ubuntu installation is on if you have several different partitions. First, create a mountpoint for your partition, for example:

mkdir /media/root

Then mount your partition in it. If you don't know which one it is, then mount any of them, we will determine if it is the correct one.

mount /dev/sda2 /media/root

Replace /dev/sda2 with the correct name of your partition. To check if it is the correct one, run ls /media/root which should output something like this:

bin    dev      home        lib    mnt   root     srv  usr
boot   etc      initrd      lib64  opt   sbin     sys  var
cdrom  initrd.img  media  proc  selinux  tmp  vmlinuz

If what you have looks nothing like this, the drive you have selected is incorrect. Run umount /media/root in the Terminal to unmount it then mount and try another one. Should you have made a /boot partition you can mount it like so:

mount /dev/sda1 /media/root/boot

To make sure this is indeed the /boot partition, run ls /media/root/boot, which should output something like this :

config-2.6.18-3-686      initrd.img-2.6.18-3-686.bak  System.map-2.6.18-3-686
grub                     lost+found                   vmlinuz-2.6.18-3-686
initrd.img-2.6.18-3-686  memtest86+.bin

Once again, if what you have is not similar, unmount it and try another partition. Now that everything is mounted, we just need to reinstall GRUB:

sudo grub-install --root-directory=/media/root /dev/sda

If you get BIOS warnings try:

sudo grub-install --root-directory=/media/root /dev/sda --recheck

Note: Replace /dev/sda with the location you want to install GRUB on. If all went well, you should see something like this:

Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(hd0)   /dev/sda

Reboot, making sure to boot to your hard drive and not to the live CD. Grub should be installed and both Ubuntu and Windows should have been automatically detected. If, after installing grub, Windows does not appear in the boot menu, you will need to edit /boot/grub/menu.lst (That is a lowercase "L" and not the number 1 in menu.lst) Open a terminal and enter:

gksu gedit /boot/grub/menu.lst

Or, in Kubuntu:

kdesu kate /boot/grub/menu.lst

Your Windows stanza should look something like this:

title Windows XP/Vista # Use any title you wish, it will appear in the grub boot menu
rootnoverify (hd0,0) # This is the location of the windows partition
makeactive
chainloader +1

Note: Put your Windows stanza before or after AUTOMAGIC KERNEL LIST in the menu.lst

Preserving Windows Bootloader

This method allows you to restore GRUB and keep the Windows bootloader as your primary bootloader. Thanks to Ubuntu's support for NTFS writing this method is now quite simple. The previous method puts GRUB back on the MBR (Master Boot Record) of the hard drive instead of in the root partition. Should you not wish to do so, for instance if you use a third-party boot manager like Boot Magic or System Commander, this next suggestion will be helpful. Another reason to prefer this method is for when restoring the Grub menu after a re-ghosting. In either case, use this alternative. If you have your Linux system in a second (or third...) hard disk this method will not work. Please check Super Grub Disk's method that address this problem.

Restoring GRUB

1. Boot from a Live CD, like Ubuntu Live, Knoppix, Mepis, or similar. Ideally use Ubuntu 8.04 or higher as this has NTFS write support and makes life a bit easier. Note that this isn't necessary, just more convenient. 2. Open a Terminal. Open a root terminal (For non-Ubuntu live CDs type "su" the terminal. For Ubuntu based distros run "sudo -i".) Enter root passwords as necessary. 3. Type "grub" which makes a GRUB prompt appear. 4. Type "find /boot/grub/stage1". You'll get a response like "(hd0)" or in my case "(hd0,3)". Use the output from this command for the following commands.

Note: You should have mounted the partition which has your Linux system before typing this command. (e.g. In Knoppix Live CD partitions are shown on the desktop but they're not mounted until you double-click on them or mount them manually) 5. Type "root (hd0,3)" note the space between root and (hd0,3). 6. Type "setup (hd0,3)". This is key. Other instructions say to use "(hd0)", and that's fine if you want to write GRUB to the MBR. If you want to write it to your Linux root partition, then you want the number after the comma, such as "(hd0,3)". 7. Type "quit". 8. At this stage you can either restart the system and install your own bootloader, or you can continue and tell the Windows bootloader where to find GRUB which will handle booting Linux.

Making Windows Load GRUB (and then Linux)

This is taken from Dual-Boot Linux and Windows 2000/Windows XP with GRUB HOWTO which has been helping people dual boot since at least 2005. 1. In Linux open a command window. 2. Mount a drive which you can share with Windows. This could be a USB drive, a FAT32 partition on your hard drive, or if you are using a Linux distribution which supports NTFS writing natively (Such as Ubuntu 8.04 or later) then you can mount the actual Windows C:\ drive itself! The advantage of writing to the Windows drive is that you are going to need to put a file there eventually, so it saves time copying a file around. For example:

 
#mkdir /tmp/windows
#mount /dev/sda1 /tmp/windows

However, when writing directly to the C:\ drive you could also do some damage to the system if you delete or move something. If you do pick the option to write directly, go in, put the file where it belongs, and touch NOTHING else. 3. Now you are going to make a copy of your boot partition. Finding out what this is called is not always completely reliable since the Linux the Linux naming conventions differ from the GRUB naming conventions. Linux labels partitions as hd[Letter][Number] or sd[Letter][Number] whereas GRUB always names them as hd[Number][Number]. If you installed GRUB on (hd0,0), then the /boot partition will be on hda1 or sda1. (Since (hd1,0) == hdb1 or sdb1, then by extension if you installed GRUB on (hd0,1) then the /boot partition will be on hda2 or sda2 and so on and so forth.) This narrows you down to two possibilities. If you now paste ls /dev |grep hd it will let you know if you have that drive on your machine. If nothing comes up which matches, then that means you must have an sd drive.

Note: The command df won't work as you are booted from a Live CD. 4. Having determined your boot partition run this command as root:

#dd if=/dev/sda2 of=/tmp/windows/linux.bin bs=512 count=1 Looking at this example `/dev/sda2` is your boot partition and `/tmp/windows/` is the drive you want to copy the boot sector image to. 5. If you haven't created `linux.bin` in the Windows drive then you need to copy it there now. 6. Next, reboot your computer and boot into Windows. Open `c:\boot.ini` in Notepad, and add a new line at the bottom:

c:\linux.bin="Linux"

This file might be write protected. If that is so, you need to enable writing to the file. To do so, right click, and from the context menu select Properties. Then uncheck the box that says "File is read only". Make sure to put that checkmark back afterwards. Next, make sure that at the top of the `boot.ini` file there is a `timeout` set, i.e `timeout=5`.

Warning

Do not edit this file from the Live CD, even if you have NTFS write support. Linux and Windows represent line breaks in different ways, so even though you can edit the file, it won't add a new line. 7. That's it, reboot and you will be given the option of booting into Linux, selecting that will chainload GRUB and this will let you boot into your Linux distro.

Source: http://ubuntuforums.org/showpost.php?p=121355&postcount=5

From Inside Ubuntu

While you can run "grub" from the Ubuntu Desktop/Live CD, you can also recover grub from within your Ubuntu installation to make it work. To do this, mount your root partition (the following examples assume that the root partition is on hda1):

sudo mkdir /mnt/linux
sudo mount /dev/hda1 /mnt/linux

then change directory to your installation sbin and run grub from there

cd /mnt/linux/sbin
sudo ./grub

Using the Unofficial "Super Grub Disk"

From within Windows

  • Download Auto Super Grub Disk
  • Double-click auto_super_grub_disk_1.7 icon, install it, and reboot.
  • On the next boot, select the UNetbootin-supergrubdisk menu entry; this will launch the Auto Super Grub Disk.
  • Do nothing till you see your Grub menu again.
  • Next time you boot Windows, click yes when asked to remove UNetbootin-supergrubdisk to remove the Super Grub Disk menu entry.

As a standalone cd/floppy/usb

  • Download Super Grub Disk
  • Burn into a cdrom (better) or a floppy
  • Boot from it
  • Select: GRUB => MBR & !LINUX! (>2) MANUAL |8-)
  • Select the Linux or Grub installation you want to restore.
  • You see the message: SGD has done it!
  • Reboot
  • You're done.

Preserving Windows Bootloader

The method shown above puts GRUB back on the MBR (Master Boot Record) of the hard drive instead of in the root partition. If you use a third-party boot manager like Boot Magic or System Commander you probably won't want to do that. This method could also be used to restore the Grub menu after a re-ghosting. If this is the case, use this alternative. NOTE: This alternative, used without a third-party boot manager, will not cause Ubuntu to boot. This method will let you boot your second hard disk Linux installations from Windows while the Using the Ubuntu Desktop/Live CD. Preserving Windows Bootloader instructions will not. Either:

  • Download Super Grub Disk
  • Burn into a cdrom (suggested) or a floppy
  • Boot from it

Or:

  • Download UNetbootin Super Grub Disk Loader (Windows .exe version)
  • Run the installer and reboot when once done installing.
  • On the next boot, select the "UNetbootin-supergrubdisk" menu entry; this will launch the Super Grub Disk interface.

Then:

  • Super Grub Disk (WITH HELP)  :-)))
  • Select: your language
  • Select: Windows
  • Select: Windows chainloads Grub!
  • Select the Linux or Grub installation you want to restore to its own partition.
  • You see the message: SGD has done it!
  • Reboot
  • You're done.

Using Microsoft Vista

If you have Vista installed and you installed Ubuntu and when you rebooted it didn't show up as a dual boot option, try going into Vista (since that is all you can do), use the program EasyBCD version 1.7 It looks like this: 模板:Http://aycu01.webshots.com/image/31560/2002188190250314159 rs.jpg Add your Linux install to the boot sequence.

Troubleshooting

This section applies to...

  • Dual-boot setups in which Windows was installed after Ubuntu
  • Conditions where Windows failure forced a re-installation
  • Windows recovery techniques involving the "restoration" of the MBR
  • Cases where GRUB failed to install

Prerequisites:

  • Your Ubuntu partitions are all still intact
  • You have a LiveCD, such as the Ubuntu Desktop CD or the Knoppix Live CD
  • You're familiar enough with your LiveCD to gain access to a console
  • You remember how you set up your partitions (having a printout of `/etc/fstab` is ideal, though you can make do with the output of fdisk -l /dev/hda)
  • Knowledge of how your kernel works (specifically with regards to initrd), if you're using a non-Ubuntu kernel or you have built your own
  • Your kernel's version; this howto assumes 2.6.10-5-386

Preparing Your Working Environment

To begin the restoration procedure, insert your LiveCD and reboot your computer. Proceed with your LiveCD's bootup procedure until you are presented with an interface. If your LiveCD does not immediately present you with a console, also called a terminal, open one -- to do this with the Ubuntu LiveCD, click Applications -> System Tools -> Terminal. Note: Since this is a LiveCD environment, any changes to user accounts or filesystem layouts at this level will not be permanent. This means you can set a temporary root password and create directories without affecting your actual installation. Now, you need to gain root access. Under Ubuntu, this can be done with the following commands:

sudo -i

Under Knoppix, the following command will suffice, and you will not be prompted for a password.

su -

Now that you have root access, you need to mount the partition(s) containing your bootloader files. You will need access to both your `/sbin/` and `/boot/` directories. If you have a `/boot/` listing in your `fstab`, you are among those who will need to mount two partitions. Begin by creating a mount point for your working environment -- you'll notice this is the same as creating a directory.

mkdir /mnt/work

If you need to mount `/boot/`, too, run the following command.

mkdir /mnt/work/boot

Now it's time to actually load your filesystem data. Review your `fstab` and identify the location(s) of `/` and `/boot/`; these will likely look something like `/dev/hda3` and `/dev/hda4`, though the letter 'a' and the numbers 3 and 4 may differ. Note: For the remainder of this howto, `/dev/hda3` and `/dev/hda4` will be assumed, so alter them as needed when typing them in yourself. Enter the following commands to load your filesystem and some information GRUB may need.

mount /dev/hda4 /mnt/work
mount -o bind /dev /mnt/work/dev
mount -o bind /proc /mnt/work/proc
cp /proc/mounts /mnt/work/etc/mtab

Now, you have to enter your working environment. The following command will take care of that.

chroot /mnt/work/ /bin/bash

Warning: From this point on, any files you modify will affect your Ubuntu system. You have left the safety of the LiveCD. Exercise caution.

Recovering GRUB Automatically

If you have a separate `/boot/` partition, type the following line.

sudo mount /dev/hda3 /boot/

Reinstalling GRUB from this point is easy. Just enter the following command.

sudo /sbin/grub-install /dev/hda

If the command you used above failed, which is unlikely, you will need to configure GRUB manually (it isn't too hard). If it succeeded, you should read the note at the start of the final section: "Configuring the GRUB Menu".

Recovering GRUB Manually

Before you can undertake the next step, it's important that you understand how GRUB identifies partitions. To GRUB, numbers begin with 0, and letters are expressed numerically, also beginning with 0. For example, `/dev/hda1` is "hd0,0" to GRUB. Similarly, `/dev/hdb3` is "hd1,2". Note: The "root" line must point to the location of your `/boot/` partition if you have one. If you do not have one, point it at your `/` partition.

sudo /sbin/grub
grub> root (hd0,2)
grub> setup (hd0)
grub> quit

Configuring the GRUB Menu

Note: This step does not need to be done if you're just trying to recover your MBR. Installing Windows will not alter the contents of your existing `menu.lst`, so if everything was working right before, everything will continue to work right now, and you can restart your computer. Open the GRUB menu file, `/boot/grub/menu.lst`, with your favourite text editor. An example follows.

sudo nano /boot/grub/menu.lst

Note: Your `menu.lst` file is used to control the operating systems GRUB displays on startup, as well as its visual appearance. This howto will only explain how to get your operating systems to boot, it will not tell you how to make your bootloader pretty. A sample `menu.lst`, stripped of unnecessary comments, appears below. It is based on the `/dev/hda3` and `/dev/hda4` example above, and assumes Windows resides at `/dev/hda1`.

timeout 5 #The number of seconds GRUB should wait before booting an OS
default 0 #The entry which should be booted by default
fallback 1 #The entry which should be booted in the event of the first one failing

title  Ubuntu, 2.6.10 #A 32-bit Ubuntu entry
#This (or something like it) should be in your configuration
root   (hd0,2)
initrd /initrd.img-2.6.10-5-386
kernel /vmlinuz-2.6.10-5-386 root=/dev/hda4

title  Ubuntu, 2.6.10 #Another 32-bit Ubuntu entry
#This is an example of an Ubuntu entry which does not have a separate /boot/ partition
#(it is provided only as an alternate to the example above -- do not use them together)
root   (hd0,2)
initrd /boot/initrd.img-2.6.10-5-386
kernel /boot/vmlinuz-2.6.10-5-386

title  Microsoft Windows XP Home #An entry for a Windows installation
#If you're reading this guide, you probably want this
root   (hd0,0)
makeactive
chainloader +1

And that's it. Save and close the file, then reboot and try out the entries.

Using the Ubuntu Alternate/Install CD

This section explains how to rescue GRUB (the GRand Unified Boot loader), using the Ubuntu alternate/install CD ROM.

  1. Enter your computers BIOS to check computer can boot from CD ROM. If you can boot from CD, insert CD ROM into drive. Exit the BIOS (if needed save your settings to make sure the computer boots from the CD ROM).
  2. When the Ubuntu splash screen comes up with the `boot:` prompt, type in `rescue` and press enter.
  3. Choose your language, location (country) and then keyboard layout as if you were doing a fresh install.
  4. Enter a host name, or leave it with the default (Ubuntu).
  5. At this stage you are presented with a screen where you can select which partition is your root partition (there is a list of the partitions on your hard drive, so you are required to know which partition number Ubuntu is on). This will be dev/discs/disc0/partX, where the X is a partition number.
  6. you are then presented with a command prompt (a hash).
  7. type $ grub-install /dev/hdaX where X is your Ubuntu root install.

The GUI Way: Using the Alternate/Install CD and Overwriting the Windows bootloader

  1. Boot your computer with the Ubuntu CD
  2. Go through the installation process until you reach "[!!!] Disk Partition"
  3. Select Manual Partition
  4. Mount your appropriate linux partitions:
  • /
  • /boot
  • swap
  • ...
  1. DO NOT FORMAT THEM.
  2. Finish the manual partition
  3. Say "Yes" when it asks you to save the changes
  4. It will give you errors saying that "the system couldn't install ....." after that
  5. Ignore them, keep select "continue" until you get back to the Ubuntu installation menu
  6. Jump to "Install Grub ...."
  7. Once it is finished, just restart your computer

From: http://doc.gwos.org/index.php/Restore_Grub and http://ubuntuforums.org/showthread.php?t=76652

GRUB Resources