ubuntu下修复grup

原帖在这里http://www.cnblogs.com/dolphi/archive/2012/04/30/2477095.html

很多转载都没有改正--bind的错误,本文予以了改正。
1.livecd 修复
这种方法方便,解决比较彻底。
(1)准备容量大于1G的U盘一个,windows下用UltraIso制作livecd启动盘,重启,设置开机U盘启动,重启。
(2)进入u盘的ubuntu体验版,ctrl+alt+t打开终端,
   输入命令sudo fdisk -l 查看ubuntu在哪个分区,一般来说格式是linux(ext4)和出现83的那个/dev/sdax(x不一定是几)即为ubuntu,如果装了多个linux操作系统,还需仔细甄别,我的方法是都用mount /dev/sdax /mnt来一遍,然后根据/mnt下面的目录来看是哪个。
(3)假如你的ubuntu的 / 分区是sda7,又假如 /boot分区是 sda6,用livecd启动,在终端下输入

sudo -i
mount /dev/sda7 /mnt
mount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过)
grub-install --root-directory=/mnt/boot /dev/sda

如果grub.cfg己丢失,或grub.cfg出现错误,需要重建的继续执行下面操作(不知道有没有就执行一遍):

mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
chroot /mnt update-grub
umount /mnt/sys
umount /mnt/dev
umount /mnt/proc

然后重启,grub就回来了。


(4)如果(3)中chroot时提示update-grub命令没找到,就重启。开机会出现grub>提示符,在该提示符下找回ubuntu可按照以下步骤:

(引自百度文库《grub2_全程讲解》)

比如启动第1硬盘第一逻辑分区的ubuntu系统:

grub>set root(hd0,4)

grub>linux /boot/vmlinux-xxx-xxxx root=/dev/sda4  //内核文件

grub>initrd /boot/initrd.img-xxx-xxxx

grub>boot

进入ubuntu之后执行

sudo update-grub

sudo grub-install /dev/sda

重启,引导找回

注:(1)(hd0,4)和dev/sda4要根据实际情况调整,ubuntu在哪个分区则选择对应的分区。可以grub>ls -l或者grub>ls (hd0,x)查看哪个是ubuntu的分区。

  (2) xxx指的是版本号,可以在命令输入到不确定的地方时按Tab获取。

2.grub rescue>

这种方法也是从网上看来的,http://www.2cto.com/os/201111/112327.html
(1) 先使用ls命令,找到Ubuntu的安装在哪个分区:
在 grub rescue>下输入以下命令:

 grub rescue>ls

会罗列所有的磁盘分区信息,比方说:

(hd0,0),(hd0,msdos1),(hd0,msdos2),(hd0,msdos3)或(hd0,1),(hd0,5),(hd0,3),(hd0,2)

(2) 然后依次调用如下命令: X表示各个分区号码
如果/boot没有单独分区,用以下命令:

 grub rescue>ls (hd0,X)/boot/grub

如果/boot单独分区,则用下列命令:

 grub rescue>ls (hd0,X)/grub

会列出一些文件,原帖说是几百个,我的/grub下只有不到十个文件。每个都试一遍,肯定有一个是。linux不能识别ntfs,可以识别fat,出现不能识别的文件系统说明肯定不是。出现bad filesystem(好像是这个名字)八成就是这个盘。


(3)如果找到了正确的grub目录,则设法临时性将grub的两部分关联起来,方法如下:
以下是/boot没有单独分区的命令:

grub rescue>set root=(hd0,5)
grub rescue>set prefix=(hd0,5)/boot/grub
grub rescue>insmod /boot/grub/normal.mod


以下是/boot 单独分区的命令:(这几句有待验证)

grub rescue>set root=(hd0,5)
grub rescue>set prefix=(hd0,5)/grub
grub rescue>insmod /grub/normal.mod
这时字体变成纯白色,说明insmod成功。然后输入如下命令,就可以显示出丢失的grub菜单了。
grub rescue>normal
重启,进入ubuntu之后,在终端执行:


代码:

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

到此grub彻底修复好了。

ps:第二种方法不万能,笔者经历过找不到normal.mod的情况,最后还是用livecd修好的。


你可能感兴趣的:(linux,grup)