RecoveringUbuntuAfterInstallingWindows
使用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相关资源
- GRUB Manual
- GRUB homepage
- Grub wiki
- Linux+Win+Grub HowTo
- Super Grub Disk. Ready to go cdrom or floppy that restores Grub on MBR automatically
- Linux Recovery and Boot Disk Creation with Grub.
- Win32 Grub
- Booting with GRUB
- WinGRUB
- GRUB Installer for Windows
- GRUB for DOS - Bridging DOS/Windows to Unix/Linux