特殊:Badtitle/NS100:RecoveringUbuntuAfterInstallingWindows/zh

来自Ubuntu中文
Skysea575留言 | 贡献2007年11月12日 (一) 17:24的版本 →‎GRUB Resources
跳到导航跳到搜索

{{#ifexist: :RecoveringUbuntuAfterInstallingWindows/zh/zh | | {{#ifexist: RecoveringUbuntuAfterInstallingWindows/zh/zh | | {{#ifeq: {{#titleparts:RecoveringUbuntuAfterInstallingWindows/zh|1|-1|}} | zh | | }} }} }} {{#ifeq: {{#titleparts:RecoveringUbuntuAfterInstallingWindows/zh|1|-1|}} | zh | | }} }

使用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


使用非官方的 "Super Grub Disk"

  • 下载 Super Grub Disk
  • 刻录光盘 (建议)或拷入软盘
  • 启动
  • 选择:语言
  • 选择: Linux
  • 选择: 修复 Boot of Linux (GRUB)
  • 选择你想恢复的Linux或Grub安装.
  • 你会看到信息: SGD 已安好!
  • 重启
  • 成功.
  • 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.

发现并修理故障

这部分内容将:

  • 在Ubuntu安装后才安装Windows的双启动设置
  • Windows必须重新安装
  • Windows恢复技术牵扯到MBR
  • GRUB安装失败的其他情形

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


前提:

  • 你的Ubuntu分区仍然完整
  • 你有一个LiveCD,如Ubuntu Desktop CD,或者其他替代品
  • 你对用LiveCD足够熟悉,可以获得支持
  • 你还记得你的安装分区(打印`/etc/fstab` 是个好方法,这样你可以使用fdisk -l /dev/hda)
  • 如果使用非Ubuntu内核或是建立自己的内核,要知道核心工作的知识(特别是关于initrd)
  • 你的内核版本;这取决于2.6.10-5-386

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

准备你的工作环境

开始恢复程序,插入liveCD,重启计算机.直至你的LiveCD启动到看到界面.如果你的LiveCD没有立即出现控制台,就用终端.用Ubuntu LiveCD,点 应用程序-系统工具- 终端. 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.

注意: 因为这是LiveCD环境, 任何对用户帐户或文件系统的改变不会保持.这意味着你可以设置一个临时的根密码,创建目录,而不会影响你的实际安装.

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.

现在你要获得根权限.在Ubuntu下,可以用下面的命令:

sudo -i

Now, you need to gain root access. Under Ubuntu, this can be done with the following commands:

sudo -i

在Knoppix下,下面的命令就足够了,并不要密码:

su -

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.

你得访问`/sbin/`和/boot/` 目录.如果在`fstab`中有一个`/boot/`列表,须挂载两个分区. 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.

开始为工作环境创建一个挂载点-得注意同时建立一个目录.

mkdir /mnt/work

Begin by creating a mount point for your working environment -- you'll notice this is the same as creating a directory.

mkdir /mnt/work

如果须挂载`/boot/`,使用下面的命令.

mkdir /mnt/work/boot

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

mkdir /mnt/work/boot

现在可以装载文件系统数据.复查`fstab`,确信`/`和`/boot/`;就像`/dev/hda3` 和`/dev/hda4`,这里字母a和数字3与4可能不同. 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.

注意:`/dev/hda3` and `/dev/hda4`是假定的,必须换成你自己的. 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.

键入以下命令来装载你的文件系统,一些GRUB信息是可能要用的.

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

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

现在,你进入你的工作环境.下面命令得小心了.

chroot /mnt/work/ /bin/bash

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

chroot /mnt/work/ /bin/bash

""警告"":从这时起,任何改变会影响到你的Ubuntu系统.你已离开LiveCD的安全模式.特别要注意. Warning: From this point on, any files you modify will affect your Ubuntu system. You have left the safety of the LiveCD. Excercise caution.

自动恢复 GRUB

如果你有独立的/boot分区,用下面的命令:

sudo mount /dev/hda3 /boot/

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

sudo mount /dev/hda3 /boot/

从这里起重新安装GRUB是比较容易的.仅需使用下列命令:

sudo /sbin/grub-install /dev/hda

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

sudo /sbin/grub-install /dev/hda

如果上述命令不能使用,很不幸,得手工配置GRUB(这并不难);如果成功,在最后一节会显示:"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".

手工恢复GRUB

开始下一步前,弄明白GRUB如何定义分区是相当重要的. Before you can undertake the next step, it's important that you understand how GRUB identifies partitions.

对于GRUB,数字从0开始,字母明确的,也从0开始. To GRUB, numbers begin with 0, and letters are expressed numerically, also beginning with 0.

例如,/dev/hda1对于GRUB,是"hd0,0".例如/dev/hdb3是hd1,2. For example, `/dev/hda1` is "hd0,0" to GRUB. Similarly, `/dev/hdb3` is "hd1,2".

""注意"":"root"必须指向你的'/boot/'分区,如果你有的话.没有,则指向'/'分区.

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

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

配置GRUB菜单

注意: 如果只是恢复MBR,这一步就没必要做.安装Windowa并不会改变已存在的'menu.lst',因此一切都正常的话,也都会正常工作,只需要重启计算机.

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.

用你喜爱的编辑器打开GRUB菜单文件'/boot/grub/menu.lst'.例如:

sudo nano /boot/grub/menu.lst

Open the GRUB menu file, `/boot/grub/menu.lst`, with your favourite text editor. An example follows.

sudo nano /boot/grub/menu.lst

注意: 'menu.lst'文件用来控制操作系统在启动时GRUB的显示.本指南将只能解释如何让你的操作系统启动,它不会告诉你如何使你的bootloader漂亮。 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.

一个menu.lst例子, 去除必要的备注, 如: 上面的例子是基于/dev/hda3和dev/hda4,并假定Windows位于/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

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`.
<pre><nowiki>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.

使用 Ubuntu Alternate/Install CD

这一节解释如何恢复GRUB(the GRand Unified Boot loader),使用Ubuntu alternate/install CD. This section explains how to rescue GRUB (the GRand Unified Boot loader), using the Ubuntu alternate/install CD ROM.

  • 进入BIOS设置从启动.如果可以从CD启动,插入CD.退出BIOS(保存设置以确保可以从CD启动).
  • 当Ubuntu闪屏出现boot命令行时,输入rescue,并回车.
  • 选择语言,位置(国家),键盘布局,如同重新安装一样.
  • 输入一个名字,或用默认的Ubuntu.
  • 在这个阶段,提交选择哪个是你的根分区(有一个硬盘分区列表,所以你必须知道ubuntu在哪个分区) 。这将是

dev/discs/disc0/partX, 这里X 是分区数字.

  • 提交了一份命令提示符.
  • 输入$ grub-install /dev/hdaX,X是你的Ubuntu root安装分区.
  • 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.


使用Alternate/Install CD改写Windows bootloader

  • 用Ubuntu CD启动计算机
  • 进行安装进程,直到出现 "[!!!] Disk Partition"
  • 选择手动分区
  • 挂载正确linux分区:
      • /
      • /boot
      • swap
      • ...
  • DO NOT FORMAT THEM.
  • 完成手工分区
  • 问及是否保存改变时,选择"Yes"
  • 之后,系统会给出错误提示,"系统不能安装......"
  • 忽略,继续选择"continue" 直到获得Ubuntu 安装菜单
  • 进入"Install Grub ...."
  • 完成后,重启计算机.
  • 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资源