个人工具

UbuntuHelp:RecoveringUbuntuAfterInstallingWindows/zh

来自Ubuntu中文

Skysea575讨论 | 贡献2007年11月11日 (日) 13:21的版本 Using the Alternate/Install CD and Overwriting the Windows bootloader

跳转至: 导航, 搜索

}

使用Ubuntu Desktop/Live CD

请选择下列选项之一:

Using the Desktop/LiveCD while preserving Windows Bootloader

不要忘记如下方法:在硬盘引导分区上,用GRUB替代MBR(主引导纪录)。这适用于大多数人,除非你有了另外一个可用的引导程序。

Don't forget that this method, as described, puts GRUB back on the MBR (master boot record) of the hard drive instead of in the root parititon. This is fine for most people, but not if you already have an alternative boot manager.

另一方面,如果你用Boot Magic or System Commander,你读到的命令将改写你所做的。

In other words, if you use something like Boot Magic or System Commander, the commands you've just read will overwrite what you've got.

如果你已在引导分区安装GRUB替换了MBR,命令将会有所不同。下面是我的建议:

If you've installed GRUB into the Root Partition instead of the MBR, the commands are a little different. Here's are the instructions that I have for my system:

如何在Ghost后恢复Grub:

How to Restore the Grub Menu after a Re-Ghosting:

1.用Live CD引导系统,例如Ubuntu Live, Knoppix, Mepis, or similar.

1. Boot from a Live CD, like Ubuntu Live, Knoppix, Mepis, or similar.

2.打开终端。打开根终端(用在非Ubuntu光盘中用“su",在Ubuntu光盘中用"sudo -i)。密码是必须的。

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.

3.输入"grub" 。

3. Type "grub" which makes a GRUB prompt appear.

4.输入"find /boot/grub/stage1"。你会看到像"(hd0)" 的信息(我的是(hd0,3)")。在下面的操作中,使用你的计算机显示的信息。

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.

5.输入"root (hd0,3)"。(译注:以下信息以原作者的为例,自己当改成所看到的)

5. Type "root (hd0,3)".

6.输入"setup (hd0,3)". 这是关键。如果你想将GRUB写入MBR,可以用其他的操作,如输入"(hd0)"。如果你想将它写入你的linux引导分区,可以在逗号后写入数,如"(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.输入"quit".

7. Type "quit".

8.重启系统。取走引导CD。

8. Restart the system. Remove the bootable CD.

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

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

使用Desktop/LiveCD ,改写Windows bootloader

用Live CD引导,打开终端。当需要root权限使用一些命令时,可以使用sudo -i 来获得root命令行,用此可以正规地代替使用sudo。此时要特别小心,尤其是要注意打字错误。 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 !

我们要找到Ubuntu系统安在哪个分区。输入命令fdisk -l。将返回你所有分区列表,例如: 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 :

$ sudo 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/hda1               1           8       64228+  83  Linux
/dev/hda2               9        1224     9767520   83  Linux
/dev/hda3   *        1225        2440     9767520   a5  FreeBSD
/dev/hda4            2441       14593    97618972+   5  Extended
/dev/hda5           14532       14593      498015   82  Linux swap / Solaris
/dev/hda6            2441       14530    97112862   83  Linux

Partition table entries are not in disk order

这里,我有本个Linux分区./dev/hda2 是我的根分区,/dev/hda1是我的/boot 分区,dev/hda6 是我的 /home分区.如果你只有一个,显然就是你的Ubuntu系统安装分区.你还有更多的分区,而你不知道哪个是你的Ubuntu系统安装分区,可以稍后再查找.首先,为你的分区创建一个挂载点,例如: Here I have three Linux partitions. /dev/hda2 is my root partition, /dev/hda1 is my /boot partition and /dev/hda6 is my /home partitoins. 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 :

mkdir /mnt/root

然后挂载你的分区.如果你不知道哪一个是,就每一个都挂载一次,直到找到正确的为止. 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.

mount -t ext3 /dev/hda2 /mnt/root

当然,用你的正确分区名称替换掉这里的/dev/hda2.可以用ls /mnt/root来核实是否是正确的,可能会显示如下信息: 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 :

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

如果不是像这样的,则说明没有挂载正确的分区.使用umount /mnt/root 来卸载掉分区,再试试另一个.你可能需要挂载你的/boot分区,例如: 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 :

mount -t ext3 /dev/hda1 /mnt/root/boot

确信挂载正确,用ls /mnt/root/boot验证,会返回如下信息: To make sure it was the correct one, run ls /mnt/root/boot, which sould 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 doesn't fit, unmount it and try another partition.

现在都挂载了,我们要重新安装GRUB: Now that everything is mounted, we just need to reinstall GRUB :

grub-install --root-directory=/mnt/root /dev/hda

如果你得到BIOS警告,试试: If you got BIOS warnings try:

grub-install --root-directory=/mnt/root /dev/hda -recheck

当然,用你自己想安装GRUB的位置替换/dev/hda.如果一切成功,将会看到如下信息: Of course, replace /dev/hda 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/hda

现在你可以重启,GRUB菜单将会出现.如果有一个XFS文件系统的相关警告,可以忽略. Now you can reboot and the GRUB menu should appear. If you see a warning message regarding XFS filesystem, you can ignore it.

不使用 Ubuntu Desktop/Live CD

你可能得不使用Ubuntu Desktop/Live CD,而是从你的安装光盘来使用"grub".想要这样做,挂载你的分区(下面的例子假定root分区在hda1): You could 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):

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

接着改路径为你的安装sbin,并从那里运行grub then change directory to your installation sbin and run grub from there

cd /mnt/linux/sbin
sudo ./grub


Using the Unofficial "Super Grub Disk"

  • Download Super Grub Disk
  • Burn into a cdrom (better) or a floppy
  • Boot from it
  • Select: your language
  • Select: Linux
  • Select: Fix Boot of Linux (GRUB)
  • Select the Linux or Grub installation you want to restore.
  • You see the message: SGD has done it!
  • Reboot
  • You're done.


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 anything you're comfortable with
  • 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 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 proceedure 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. Excercise 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.

  • 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).
  • When the Ubuntu splash screen comes up with the `boot:` prompt, type in `rescue` and press enter.
  • Choose your language, location (country) and then keyboard layout as if you were doing a fresh install.
  • Enter a host name, or leave it with the default (Ubuntu).
  • 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.
  • you are then presented with a command prompt (a hash).
  • type $ grub-install /dev/hdaX where X is your Ubuntu root install.


Using the Alternate/Install CD and Overwriting the Windows bootloader

  • Boot your computer with the Ubuntu CD
  • Go through the installation process until you reach "[!!!] Disk Partition"
  • Select Manual Partition
  • Mount your appropriate linux partions:
      • /
      • /boot
      • swap
      • ...
  • DO NOT FORMAT THEM.
  • Finish the manual partition
  • Say "Yes" when it asks you to save the changes
  • It will give you errors saying that "the system couldn't install ....." after that
  • Ignore them, keep select "continue" until you get back to the Ubuntu installation menu
  • Jump to "Install Grub ...."
  • 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