个人工具

RecoveringUbuntuAfterInstallingWindows

来自Ubuntu中文

Jobinson99讨论 | 贡献2007年8月12日 (日) 14:34的版本 使用Ubuntu安装光盘

跳转至: 导航, 搜索

使用Ubuntu安装光盘

本部分解释如何使用Ubuntu的安装光盘来恢复GRUB(the GRand Unified Boot loader)

  • (1) 开机按del键或f2,进入BIOS,检查“Advanced BIOS Features”中,把first boot device设置为光驱启动,退出并保存BIOS设置。将光盘放入光驱。
  • (2) 当Ubuntu启动界面出现boot:提示时,输入rescue然后按回车键。
  • (3) 选择语言、地区(国家)和键盘布局,就像进行全新安装时一样。
  • (4) 输入主机名,或者使用默认值(Ubuntu)。
  • (5) 选择根分区(屏幕上会显示硬盘上的分区列表,所以您需要知道Ubuntu安装在哪个分区上)。应该是形如dev/discs/disc0/partX,其中X是分区号。
  • (6) 然后您将进入命令行(a hash)。
  • (7) 输入 $ grub-install /dev/hdaX X是您的Ubuntu的根目录所在分区。

使用Ubuntu Live CD

请在下列方法中选择一种:

使用LiveCD,同时保留Windows Bootloader

请记住这种方法会将GRUB安装到硬盘的MBR(主启动记录master boot record)上面,而不是安装在根分区上。对于大多数人来说这是没有问题的,除非您已经另外有一个启动管理器。

换言之,如果您使用Boot Magic或者System Commander之类的启动管理器的话,那您在上面看到的命令将会覆盖您原有的启动管理。

如果您已经将GRUB安装到根分区,命令会有一些不同。下面是我在我的系统中所使用的。

在使用Ghost重新恢复Windows后,如何恢复Grub菜单:

  • 从Live CD(如Ubuntu Live,Knoppix,Mepis或者相类似的)启动。
  • 打开终端。切换为超级用户(SuperUser)。(在Ubuntu中输入"sudo -i",在Ubuntu以外的其它发行版中输入"su")。输入根用户密码。
  • 输入"grub",会出现GRUB命令提示。
  • 输入"find /boot/grub/stage1"。会出现如同"(hd0)"样的结果,在我的电脑上是"(hd0,3)"。在下面的命令中使用您电脑中得到的结果。
  • 输入"root (hd0,3)"。
  • 输入"setup (hd0,3)"。这里是关键。在其它一些指南中使用"(hd0)", 如果您想将GRUB写入MBR的话,那使用"(hd0)"是没有问题的。如果您想将GRUB写入您的Linux根分区的话,则您需要在逗号之后加上数字,形如"(hd0,3)"。
  • 输入"quit"。
  • 取出Live CD,重新启动电脑。

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

使用Live CD,同时覆盖Windows bootloader

  • 从Live CD启动进入桌面。
  • 打开终端或者切换到一个tty(Ctrl+Alt+F1)。
  • 输入"grub"
  • 输入"root (hd0,6)",就是您硬盘和启动分区的编号。(我的启动分区(/boot)位于/dev/sda7,转换到grub就是hd0,6)。
  • 输入"setup (hd0)",或者是您的硬盘编号。
  • 输入"quit"退出grub。
  • 重新启动。

From: http://ubuntuforums.org/showpost.php?p=117829&postcount=2

不使用Ubuntu Live CD

您可以不使用Ubuntu Live CD,而是直接从您的硬盘上运行"grub"。首先您需要挂载根分区(下面的例子中假设根分区在hda1上):

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

然后,进入sbin目录并运行grub

sudo cd /mnt/linux/sbin
sudo ./grub

使用非官方的"Super Grub Disk"

注意:此方法对于只有一个Linux的系统是非常有效的。如果您有不止一个Linux系统的话,Super Grub Disk将会恢复在您的分区上发现的第一个Grub。

  • 下载Super Grub Disk
  • 将其刻录到cdrom上或复制到软盘上
  • 从光盘或软盘上启动
  • 选择:您的语言
  • 选择:将Grub恢复到MBR(Restore Grub on MBR)
  • 选择:自动(Auto)
  • 您将看到这条信息:SGD has done it!
  • 重新启动
  • 完成

疑难解答

本部分适用于---

  • 在Ubuntu之后安装Windows的双系统启动设置
  • Windows崩溃导致重新安装的情况
  • 在Windows系统恢复中还原了MBR
  • GRUB未能成功安装的情况

前提条件:

  • 您的Ubuntu分区未被改动
  • 您有一张Live CD,比如说是Ubuntu Live CD,或者是其它您喜欢的任何一种
  • 您可以熟练地通过LiveCD进入控制台
  • 您还记得您是怎样设置分区的(有一张打印好的/etc/fstab是最理想的了,但您也可以使用fdisk -l /dev/hda的输出结果)
  • 如果您使用非Ubuntu的内核或者是自己编译的内核,那需要您具有内核是如何工作的相关知识,特别是有关initrd的知识
  • 您的内核的版本;本解答中假设版本号为2.6.10-5-386

准备您的工作环境

将LiveCD放入光驱并启动电脑。继续LiveCD的启动程序,进入工作界面。如果LiveCD没有自动打开一个控制台(也叫做终端)的话,您可以手动打开。在Ubuntu中,单击"应用程序->系统工具->终端"。 注意:由于这是一个LiveCD的环境,所以在这里对用户帐户或文件系统的改动都是暂时性的。这就是说,您可以在不影响您的实际安装的情况下,设置一个临时的根用户密码和建立目录。 现在,您需要获得根用户权限。在Ubuntu下,可以使用如下命令:

sudo -i

在Knoppix下,使用如下命令,无须输入密码。

su -

现在您已经拥有根用户权限,您需要挂载包含有启动文件的分区。 您需要能访问/sbin/和/boot/目录的权限。如果/boot/列在您的fstab文件中,您就需要挂载两个分区。 为您的工作环境创建一个挂载点--您会发现这和创建一个目录是一样的。

mkdir /mnt/work

如果你需要挂载/boot/,您还需运行下面的命令。

mkdir /mnt/work/boot

现在可以加载您的文件系统了。复查您的fstab文件并确认根目录(/)和/boot/目录的位置;应该是类似/dev/hda3和/dev/hda4,但字母a和数字3、4可能因您的文件系统而不同。 注意:以下部分均假设是/dev/hda3和/dev/hda4,您应该在输入时根据自己的情况做相应的改变。 输入以下命令加载您的文件系统和一些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

现在,您需要通过下面的命令进入您的工作环境。

chroot /mnt/work/ /bin/bash

警告:从现在开始,您所修改的任何文件都将影响Ubuntu系统。您已经离开了LiveCD安全环境。小心操作。

自动恢复GRUB

如果您的/boot/是独立分区,输入下列命令。

mount /dev/hda3 /boot/

在这里重新安装GRUB很容易。输入以下命令即可。

/sbin/grub-install /dev/hda

如果您使用上面的命令没有成功,(这种可能性不大),您就需要手动配置GRUB(也不困难);如果您使用上面的命令成功了,您应该阅读最后一节--“配置GRUB菜单”开始部分的注意事项。

手动恢复GRUB

在您进行下一步之前,您需要理解GRUB是如何区分分区的。 对GRUB来说,数字从0开始,字母用数字来表示,也从0开始。 例如,/dev/hda1就是GRUB中的"hd0,0"。 同样地,/dev/hdb3是"hd1,2"。 注意:如果您有一个/boot/分区的话,"root"命令必须指向您/boot/分区的位置。如果您没有/boot/分区,则指向您的根分区。

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

配置GRUB菜单

注意:如果您只是想恢复您的MBR的话,则就无需进行这一步的操作了。Windows不会修改您原有的menu.lst的内容,所以如果以前一切正常的话,现在应该也会正常工作了,您可以重新启动电脑了。 使用您喜欢的编辑工具打开GRUB菜单文件/boot/grub/menu.lst。例如:

nano /boot/grub/menu.lst

注意:您的menu.lst文件是用来控制GRUB启动时显示的操作系统以及其显示外观。本节的内容仅解释如何启动您的操作系统;不会帮助您将启动管理器设置得美观。 下面是一个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
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

就是这样了。保存并关闭此文件,然后重新启动试用一下。

GRUB相关资源