admin 管理员组

文章数量: 887021

他人经验一:

一直在使用Windows与Ubuntu双系统(估计很多的linuxer都是这种情况)。前一段时间重装了Win7,然后启动后便会不选择系统而直接进入Windows。原因其实蛮好想的,就是因为Windows的引导程序覆盖了MBR,启动时不再使用grub引导。至于修复方法,下面是一些总结。

  这个问题具体的解决方案很多,但总体的思路其实就两步:第一步、想尽一切办法进入linux;第二步、在linux环境下用grub重新覆盖MBR。

  对于第一步,我采取的方法是使用grub4dos。

  首先下载grub4dos,这个随便一搜就有,估计很多人最初安装linux是就用到过。

  解压后把grub.exe,grldr复制到C盘的根目录。注意,win7的C盘中原有一个grldr,是一个隐藏着的系统文件。在复制时一定要将它备份好,以后还会用得到。网上的解决方案说还要复制menu.lst,其实这个不是必须的,没有它也可以解决问题。

  然后重启系统。因为使用了grub4dos的grldr,所以会由grub.exe来引导启动。引导时它会自动搜索menu.lst,找不到就会进入命令行模式。然后就要在grub4dos的命令行中启动linux。这个就比较容易了

  grub>root (hd0,x) (x表示/boot分区的编号)

  grub>kernel /vmlinuz-x.xx.xx-xx-generic root=/dev/sdaY (xx表示kernel的版本,可以用ls命令看一下/boot下面这个文件的名字是什么;而最后面的Y是/分区的编号。需要注意的是,采用(hdo,x)的表示方法时,编号是从0开始的;采取/dev/sdaY表示方法时,编号是从1开始的)

  grub>initrd /initrd-x.xx.xx-xx-generic (xx和上一条命令里的一样,都是kernel版本)

  grub>boot

  这时候应该就可以进入linux了。

  第二步要用grub覆盖MBR

  这一步就更简单了。首先更新一下grub,使它可以识别win7

  sudo update-grub

  更新之后,输入命令覆盖MBR。具体的命令因grub版本而异。我用的系统为ubuntu10.10,使用grub2。它需要的命令只有一句话

  sudo grub-install /dev/sda

  如果提示安装成功,那就大功告成了。重启计算机,就又看到熟悉的grub选择界面了。

  对于grub1(ubuntu9.10之前的版本使用),需要先将/挂载到/mnt。如果有/boot分区,再将/boot挂载到 /mnt/boot。然后执行命令

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

  grub1的方法我没有实际尝试过,仅仅列在这里而已。

 

他人经验二:

 

如果你目前系统是双系统win7+ubuntu,当你重装了WIN7后,开机启动界面的ubuntu引导将丢失,需要用下面的方法进行修复引导:

1、制作一块ubuntu.iso镜像文件到U盘启动盘;

2、将U盘插入计算机,然后在bios设置硬盘启动方式,选择优先以U盘启动;

3、U盘启动进入ubuntu试用系统后,按ctrl+alt+t组合键打开终端;

4、在终端输入如下命令:

sudo -i回车 //获取root管理员权限

fdisk -l回车  //l是L的小写字母,查看盘符列表,会显示如下信息:

 

Disk /dev/sda: 320.1 GB, 320072933376 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x70f7ab9c

Device    Boot    Start   End Blocks    Id   System
/dev/sda1 1       1627     13060096     27   Unknown
Partition 1       does not end on cylinder boundary.
/dev/sda2 *       1627     1639102400   7    HPFS/NTFS
Partition 2 does not end on cylinder boundary.
/dev/sda3 1639     8166     52429859     7   HPFS/NTFS
/dev/sda4 8167     38913    246975277+   5   Extended
/dev/sda5 8167     32385    194539082+  7    HPFS/NTFS
/dev/sda6 32386    38788    51432066    83   Linux
/dev/sda7 38789    38913    1004031     82   Linux swap / Solaris

 

然后找到有Linux字样的盘符,上面是sda6,表示ubuntu是安装到了sda6分区;

5、在终端继续输入:

cd /mnt回车

mkdir tmp回车

mount /dev/sda* /mnt/tmp回车

(*代表ubuntu系统所在的分区,即上一步显示结果中ID为83的分区号,如上面显示的是在sda6这个分区,

所以输入的是mount /dev/sda6 /mnt/tmp

注意:mount后面有一个空格,sda6后面也有一个空格,这两个空格千万不要漏掉,否则会报错)

6、继续终端输入:

grub-install –root-directory=/mnt/tmp/ /dev/sda回车

等待一会儿,若出现Installationfinished,No Error Reported则表示成功了;

(注意:grub-install之间没有空格,–root前面有一个空格,–root前面是两个’-’,/mnt/tmp后面有一个空格)

7、ubuntu引导基本恢复,重启电脑后,就可以看到熟悉的ubuntu引导界面了,进入ubuntu系统,打开终端输入:

sudo update-grub回车

等待片刻显示以下信息:

Generating grub.cfg …
Found linux image: /boot/vmlinuz-2.6.31-20-generic
Found initrd image: /boot/initrd.img-2.6.31-20-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows Vista (loader) on /dev/sda1
Found Windows 7 (loader) on /dev/sda2
done

ubuntu引导恢复工作便全部完成了。

8、重启计算机。

 

自己摸索的办法:

因为是ubuntu 14.04, 亲试之后证明mount挂载的办法不再好用,按“他人经验二”的办法执行后,Ubuntu可是显示并进入,但重启进入win7后会报错“error: no such device: 000207CF000EBD30. Setting partition type to 0x7   Press any key to continue ....”

将以上两种办法结合用,解决了问题:

1、制作一块ubuntu.iso镜像文件到U盘启动盘;

2、将U盘插入计算机,然后在bios设置硬盘启动方式,选择优先以U盘启动;

3、U盘启动进入ubuntu试用系统后,按ctrl+alt+t组合键打开终端;

4、在终端输入如下命令:

        sudo update-grub

  更新之后,输入命令覆盖MBR。具体的命令因grub版本而异。我用的系统为ubuntu14.04,使用grub2。它需要的命令只有一句话

  sudo grub-install /dev/sda

  如果提示安装成功,那就大功告成了。重启计算机,就又看到熟悉的grub选择界面了。

 

本文标签: 重装 双系统 方法 grub