Keep on going, never give up.

Ubuntu引导菜单修复(二)

独立分区下的Ubuntu引导菜单修复有点麻烦,执行挂载等命令时要小心检查,修复此类引导,首先需要确保当前系统和数据安全(包括Windows和Ubuntu),不可因为分区盘符输入错误导致数据丢失或误删除。

Wubi安装菜单修复要简单些,请参考《Ubuntu引导菜单修复(一)》。本文面向独立分区安装的Ubuntu。

一、使用Ubuntu LiveCD

使用Ubuntu LiveCD光盘启动系统,然后在Terminal终端中查找Ubuntu安装根分区(fdisk -l),并修复启动,步骤如下(依次执行):

1、提升root权限
sudo -i
2、查看磁盘列表
fdisk -l(该命令会显示当前磁盘列表,找到Ubuntu根分区,假设为sda2)
3、挂载根分区
mkdir /mnt/temp
mount /dev/sda2 /mnt/temp (根分区/dev/sda2需据实际情况确定)
4、挂载boot分区
mount /dev/sda3 /mnt/temp/boot (如果有/boot分区,假设为sda3,如果无/boot独立分区则跳过本步骤)
5、挂载系统目录
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt/temp$i; done (挂载系统目录)
6、进入原系统
chroot /mnt/temp (Chroot进入原系统)
7、重装grub到MBR
grub-install /dev/sda
update-grub
8、退出原系统
exit
9、重启电脑

备注:

swap分区似乎不用挂载?

以上命令执行后,有可能WIN7的菜单又没有了,不过没关系,只用进入Ubuntu然后,再次执行sudo update-grub,会自动添加WIN7引导菜单,重启即可。

tst@tst-laptop:~$ sudo update-grub
[sudo] password for tst:
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.32-38-generic
Found initrd image: /boot/initrd.img-2.6.32-38-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1
done
tst@tst-laptop:~$ 

二、使用传统Grub menu.lst

如没有Ubuntu光盘,也可修复引导,但需通过Windows或WinPE等方式先安装一个Grub引导程序,比如Grub4dos。

(可参考Windows下如何硬盘安装CentOSWindows 7下硬盘安装Ubuntu方法)。

再修改menu.lst,注意:Ubuntu的Grub2引导启动菜单放在/boot/grub/grub.cfg,早期则用/boot/grub/menu.lst和/boot/grub/stage1。

如想windows引导Ubuntu(即Grub1引导Grub2),示例如下(已验证,参考来源下文论坛地址):

/boot非单独分区

title Ubuntu
root (hd0,x)
kernel /boot/grub/i386-pc/core.img
boot

/boot单独分区

title Ubuntu
root (hd0,x)
kernel /grub/i386-pc/core.img
boot

请注意,不同版本的Ubuntu,core.img可能在不同的目录下,比如:

  • Ubuntu 10.04 /boot/grub/core.img
  • Ubuntu 12.04 /boot/grub/core.img
  • Ubuntu 12.10 /boot/grub/i386-pc/core.img
  • Ubuntu 14.04 /boot/grub/i386-pc/core.img

这样修改后的menu.lst就可以引导Ubuntu,即windows引导Ubuntu。

如果想使用Ubuntu默认的引导器来引导Windows,可以在进入Ubuntu之后执行如下两句即可:

  • sudo grub-install /dev/sda
  • sudo update-grub

这样系统引导菜单就又交给Ubuntu,把前面的Windows引导菜单就多余了,在Windows下删除即可。

注意:上文root (hd0,x)和sudo grub-install /dev/sda等命令需要根据实际盘符调整。

三、如果出现grub rescu时如何处理?

如果出现MBR被损坏,那么Ubuntu此时无法正常启动,最常见是分区号改掉了,但引导依然只之前的Ubuntu引导,此时会出现grub rescu命令,并停止在那儿,此时可通过如下方式:

1、# ls 命令查看当前磁盘有几个分区

2、试试依次输入如下几句:

set root=(hd0,msdos3)
set prefix=(hd0,msdos3)/boot/grub
insmod normal
normal

3、此时如果正常会启动进入Ubuntu系统,如果报告normal不识别等问题,可换掉上面的hdx和msdosx,找到真正的Ubuntu分区

进入Ubuntu系统后,使用:

# sudo grub-install /dev/sda

命令重新把MBR更新,然后再使用:

#sudo update-grub

更新Ubuntu启动菜单,注意,不要只使用update-grub,因为该命令只更新启动菜单但不会更新mbr,但grub-install就会更新mbr。

参考资料:

http://blog.atime.me/note/ubuntu-restore_grub.html
http://blog.atime.me/research/use_grub4dos_to_boot_ubuntu_under_win7.html

更多参考:

Ubuntu引导菜单修复(一)Ubuntu CD/DVD镜像下载如何硬盘安装Ubuntu方法

相关评论(0):  

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

订阅博客

最新文章

本站采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载也必须遵循“署名-非商业用途-保持一致”的创作共用协议. 返回顶部
Copyright@2005-2016 Metsky.com, All rights Reserved.