Home » ubuntu » 2009 » 02 » [推荐]Ubuntu系统GRUB无法启动全攻略

[推荐]Ubuntu系统GRUB无法启动全攻略

1 Star2 Stars3 Stars4 Stars5 Stars (欢迎您为本文打分)
Loading ... Loading ...

有关Ubuntu系统GRUB无法正常引导启动的现象形形色色,本站也曾发布文章“教你使用Ubuntu LiveCD安装及修复GRUB”阐述对于此类问题的解决方法,不过这篇文章太过于笼统。

今天在此向大家推荐这篇文章,本文详细说明了GRUB无法启动的各类情况,请大家根据自己的情况一一对号入座,感谢本文作者teohac。

1.装完XP,Vista,Win7后grub无法启动,有Live CD:

这种问题是最经常遇到的,要解决问题,你需要一张ubuntu live cd。

用live cd引导系统,直接按Ctrl+Alt+F1进入终端,输入sudo grub进入GRUB命令行,输入:

root (hdx,y)

X为硬盘号,通常为0(第一个硬盘),y为ubuntu分区号,如果你不知道是哪个,请在输入逗号时,按一下TAB,grub会自己列出一堆分区,找有ext3/ext4/reiserfs/xfs/jfs的一行,输入行头的数字即可。

接着输入

setup (hdx)

x为硬盘号。然后输入quit退出,sudo halt关机,问题解决,如果出现错误,请看第三条。

2.装完XP,Vista,Win7后grub无法启动,无Live CD:

(alert:这种方法转自ubuntucn论坛,我自己没有试过,应该可以。)

在你WIN系统中,下载GRUB4DOS,解压,拷贝grldr到c:\,编辑boot.ini,在最后添上一句:c:\grldr=”GRUB4DOS”,保存重启,选择GRUB4DOS启动项即可。

个人感觉这个方法治标不治本,不太好用,但貌似只有这种方法不用Live CD。

Vista/win7和WUBI安装的朋友们看这里(FROM UBUNTUCN):

下载grub4dos,解压后将grldr和grldr.mbr复制到C盘根目录下。

用bcdedit添加新项目(以管理员身份运行CMD)

bcdedit /create /d “GRUB” /application bootsector

此时生成一个{id}

bcdedit /set {id} device partition=C:

bcdedit /set {id} path \grldr.mbr

bcdedit /displayorder {id} /addlast

WUBI安装的继续,VISTA/WIN7略过:

从wubi安装Ubuntu的分区中(比如D:\),则将D:\ubuntu\winboot\menu.lst这个文件复制到C盘根目录下。(无意中发现了这个文件)

重启系统,进入GRUB,OK了!

XP/Vista/Win7:

启动进了GRUB后,按c键打开GRUB CMD,输入:

root (hdx,y)

X为硬盘号,通常为0(第一个硬盘),y为Ubuntu分区号,如果你不知道是哪个,请在输入逗号时,按一下TAB,grub会自己列出一堆分区,找有ext3/ext4/reiserfs/xfs/jfs的一行,输入行头的数字即可。

接着输入

setup (hdx)

x为硬盘号,然后重启即可!

3.装完XP,Vista,Win7后grub无法启动,或无故不能启动,有Live CD,方案1失败:

比较棘手,前提是你的硬盘系统不能是EXT4(除非你有9.04 Live CD),否则看第4条。

注:此条适用于GRUB2,但会Fallback到GRUB0.97去,又要执行upgrade-from-grub-legacy,所以我个人认为第4条效果更好。

用Live CD启动,同1,进入终端,先挂载Linux分区(X为安装盘):

sudo mount /dev/sdaX /mnt

然后运行:

sudo grub-install /dev/sda –root-directory=/mnt

OK!如果不行或你的分区是EXT4或你装的是GRUB2,请看——

4.(最极端的情况,有一次我就碰上了,搜了一晚的GOOGLE,终于找到了)分区是EXT4,或装GRUB2:

先mount分区,X为安装分区(EXT4挂在Intrepid比较麻烦):

sudo apt-get install e2fsprogs

sudo tune2fs -E test_fs /dev/sdaX

sudo mount -t ext4dev /dev/sdaX /mnt

然后依次挂载proc,sys,dev(个人认为比较BT)

sudo mount -t proc proc /mnt/proc

sudo mount -t sysfs sys /mnt/sys

sudo mount -o bind /dev /mnt/dev

然后切换Terminal:

sudo chroot /mnt /bin/bash

然后执行grub-install即可!

grub-install /dev/sda –root-directory=/

5. (有时候某些人就是RP不好:D)终极杀手锏,不能算办法的办法:

http://www.eisoo.com/cn/professional/diskgenius/

此处下载Disk Genius,挂载你的Linux分区,赶紧把你所有的数据COPY出来,然后格式化重装!算了,不多说了,大家对于这是什么方法心知肚明!呵呵。

补充:

6.(关于EXT4)升级2.6.28内核后,/是ext4dev无法启动

From Ubuntu-CN

ext4在2.6.28中正式启用,fstab的ext4dev也可以改为ext4了,但直接启动会提示ext4-fs not marks…..之类的错误。
这样就需要更改gurb或grub4dos的配置文件,添加rootfstype=ext4。
如:
kernel /boot/vmlinuz-2.6.28 root=UUID=xxxxx rootfstype=ext4 ro splash

这样就行可以解决了。

7.GRUB menu.lst范例(勿照搬,适用于Ubuntu 8.04.2):

给个Ubuntu 8.04.2的,你参考一下:

title Ubuntu 8.04.2, kernel 2.6.24-23-generic

root (hd0,0)

kernel /boot/vmlinuz-2.6.24-23-generic root=UUID=d6747029-70cf-4f34-be5f-6da3a3b70716 ro splash locale=zh_CN vga=792

initrd /boot/initrd.img-2.6.24-23-generic

quiet

title Ubuntu 8.04.2, kernel 2.6.24-23-generic (recovery mode)

root (hd0,0)

kernel /boot/vmlinuz-2.6.24-23-generic root=UUID=d6747029-70cf-4f34-be5f-6da3a3b70716 ro single vga=792

initrd /boot/initrd.img-2.6.24-23-generic

重点修改root后的分区标志与UUID,详情参见上文。

UUID扫盲:UUID是Linux标记磁盘的ID,貌似每个磁盘都不一样。如果你不知道你磁盘的UUID,可以把上述KERNEL这一行改为:

kernel /boot/vmlinuz-2.6.24-23-generic root=/dev/sdaX ro single vga=792

X为你UBUNTU所在的分区。

8.GRUB重装时出现Error 22:

MBR分区表错误,打开终端,输入:

sudo fdisk /dev/sda
按w并回车,重写MBR

然后按照前面的修复步骤进行,不再报错,成功修复Grub!

9.基于xp vista 下的wubi安装方式,重装xp vista后无法启动Ubuntu:(本段由中国顶客提供)

此安装方式为虚拟linux磁盘模式安装,故上述方式修复有困难。

以xp vista启动,将Ubuntu分区下的 wubildr和 wubildr.mbr两个文件复制到c盘xp vista根目录下;

修改boot.ini文件,增加一行,加入 c:\wubildr.mbr=”Ubuntu”即可,(注意boot.ini为隐藏文件,且取消属性的只读模式方可修改并保存)重启选择Ubuntu能看到熟悉的ub界面了。


原创文章转载请注明:锐博_资源资讯共享网
欢迎收藏本文:


3 条评论 »

健康播报 发表于 2009-02-10 13:22:09

沙发,第一次过来。

辛苦了,楼主。

 
布谷鸟 发表于 2009-02-19 01:04:00

哇,果真是经验丰富。

 
名称 (必填 - 游客随意填写)*
电子邮件 (必填 - 不会对外公布)*
博客(网站)
将留言内容发送到我的邮箱
您的评论 (小尺寸 | 大尺寸)     :lol: :oops: 8) ;) 8O :| :cry: :x :roll: :P :( :o :?: :? :D :)

回复中可使用的代码: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback responses to this post