#30
帖子
由 Points » 2011-03-18 23:34
Ubuntu - 恢复grub2/grub引导
使用Windows+Ubunt多系统的时候, 经常会遇到重装或者修复Windows后导致Ubuntu的引导被覆盖而不能启动的情况, 此处对这种情况下grub2或者grub的引导恢复做一简单介绍, 我做了一个Ubuntu LiveCD的U盘, 所以都是用LiveCD的方式恢复, 如果没有LiveCD的话, 使用grub4dos绝对是个不错的选择.
新版本grub2, Ubuntu9.10及更高版本默认安装.
方法一:
1. 进入LiveCD(光盘, U盘方式皆可), 打开终端.
2. sudo -i #切换到root用户, 之后的操作需要root权限.
3. mount <原来的Ubuntu系统跟分区> /mnt
4. mount <原来Ubuntu系统安装时的boot分区> /mnt/boot #如果之前安装Ubuntu时没有单独给boot分区, 则不需要执行此步.
#此处, 如果有其他分区, 也可一并挂载.
5. grub-install –root-directory=/mnt /dev/sda #重建grub2到磁盘mbr, 如果想将grub2安装到磁盘的某个分区pbr上, 则修改/dev/sda为正确的分区设备.
方法二:
1. 在Windows启动项上加上grub4dos(参见本文最后部分), 重启后进入grub, 进入命令行环境.
2. grub>find –set-root /boot/grub/core.img #对于boot有单独分区的, 使用 find –set-root /grub/core.img
3. grub>kernel /boot/grub/core.img #参考第二步
4. grub>boot
5. 进入grub2菜单后进入Ubuntu系统, 之后以root权限执行grub-install /dev/sda
6. 重启进入Windows, 删除grub4dos.
老版本grub, Ubuntu9.04及更低版本默认安装.
方法一:
1. 进入LiveCD, 打开终端.
2. sudo grub #进入grub命令行.
3. find /boot/grub/stage1 #次命令输出结果就是之前安装Ubuntu所在的分区, 如(hd0,8), 如果boot有单独分区, 则相应命令为find /grub/stage1.
4. root (hd0,8) #将上一命令所得的分区设置为跟分区.
5. setup (hd0) #重建grub到磁盘mbr, 此处会有安装成功与否的详细信息输入.
6. quit #退出grub命令行.
方法二:
1. 在Windows启动项添加grub4dos, 重启后进入grub, 进入命令行环境.
2. 之后的操作和在LiveCD中的操作相同.
3. find /boot/grub/stage1
4. root (hd0,8) #(hd0,8)是上一条命令的输出结果.
5. setup (hd0) #重建grub到磁盘mbr.
6. 重启电脑(Ctrl+Alt+Del), 此时原本的grub引导已成功恢复, 进入Windows, 将grub4dos删除.
——————————————————
PS(在Windows启动项添加grub4dos):
下载grub4dos, 把文件grldr(不是grldr.mbr)解压出来, 放到c盘根目录.(注: 在XP[NT]系统中只需要grldr文件即可, vista或win7可能还需要grldr.mbr, 不过我没有试过).
然后编辑c盘根目录下的boot.ini文件, 追加一行C:\grldr=grub到boot.ini文件尾, 其实grub可以随便写, 这个只是一个提示文字.
重启电脑, 选择刚才写的提示信息目录(这里是grub), 进入, 直接选择”enter commandline mode“,就可以进入grub的命令行.
===== 更新 =====
重新调整分区导致原有的Ubuntu分区号发生变化, 此时重启会进入Grub2 rescue 模式.
比如原本将Ubuntu装在(hd0,6)上, 现在又将(hd0,5)分割成两个分区(hd0,5)和(hd0,6), 那么Ubuntu的安装分区就成了(hd0,7), 如果不更新grub2, 此时重启系统就会进入rescue模式, 恢复方式也很简单.
grub rescue > ls #查找grub的配置文件,因为分区表被破坏,用ls命令列出所有分区. 找到你安装Ubuntu的分区, 比如(hd0,7)
grub rescue > set root=(hd0,7) #设置root所在分区路径
grub rescue > set prefix=(hd0,7)/boot/grub #设置grub启动文件所在路径
grub rescue > insmod normal
grub rescue > normal #回到普通模式
Grub2的启动界面回来了, 选择进入Ubuntu后更新grub2到磁盘, 同时更新gurb2配置文件(因为分区的uuid已经改变).
1. update-grub2 #查找并更新 grub2启动配置文件
2. grub-install /dev/sda #重新安装grub2到硬盘MBR