Linux_ubuntu&windows双系统grub引导修复

Ubuntu & windows双系统引导修复(狭义)

关键词:ubuntu; linux; windows; 双系统; 双系统引导; 引导修复; 双系统引导修复;

开篇扯淡:

为什么写这篇教程?

  1. 因为前几天重装笔记本里面的windows系统后导致grub引导崩溃,还有一些其他问题。
    结果当时最惨的时候ubuntu/windows8.1两个系统全部进不去,grub rescue
    模式下各个区也都试了一遍,还是不行。而且网上的资料多为重复转载,不能针对性地解决问题。后来终于修好后决定自己写一篇教程,既帮助遇到相同问题的童鞋,同时也作为自己的备忘。
  2. 当然还是练习markdown语法。不断尝试,不断练习。

为什么起名为“狭义”?

因为这篇教程有以下几点针对性的限制条件;不能作为广谱抗生素,只能对付特定的病菌:
0. 重装windows后不能进入linux系统不明原因双系统的引导全部崩溃(一个系统也进不去,开机直接进入grub rescue模式)
1. 使用grub引导ubuntu/windows双系统。
2. 需要读者至少有能力制作usb启动盘,并且会(不会就百度)一些PE系统的简单操作。
3. 知道自己的双系统都安装在哪个区,可以在live ubuntu中使用sudo fdisk -l命令查看(如作者的ubuntu14.04安装在/sda5,windows 8.1安装在/sda6)。
4. 硬盘模式为mbr亲测可行,UEFI模式下作者没有尝试。
5. (Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)


准备工作?

  1. 一个PE启动盘(作者使用的模式是老电脑模式)
  2. 一个ubuntu启动盘(14.04_i386是作者使用的版本)

一、针对无法进入linux系统,即windows系统引导没有崩溃时的问题

  1. 这个问题的解决只需要ubuntu启动盘。首先开机进入U盘中的ubuntu系统,选择合适的语言(中文\英文…),接下来选择试用ubuntu选项,进入桌面。在桌面任意空白处按CTRL+ALT+T唤出终端
  2. 输入sudo su回车,获取ROOT权限。
  3. 输入mkdir /media/temp回车,用于在/media中创建一个文件夹/temp
  4. 接着输入mount /dev/sda5 /media/temp回车,用于在/media/temp中挂载你原本计算机上的ubuntu系统分区(注意!!!/sda5是作者ubuntu的分区号,不要照抄!!)
  5. 最后输入grub-install --root-directory=/media/temp /dev/sda回车,等待出现Installation finished.No error reported.提示信息后,关闭终端
  6. 关闭临时系统,拔出U盘,重新开机,可以看到熟悉的grub界面又出现了!
    Linux_ubuntu&windows双系统grub引导修复_第1张图片
    (图片在自网络)
  7. 等等!windows引导又崩了!没有windows选项!别担心,先进入你的ubuntu系统。唤出终端,输入sudo update-grub回车。看!是不是出现Found Windows 8 (loader) on /dev/sda6啦。保险起见重启计算机,在grub内选择windows选项,看能否正常引导。
  8. 修好了!enjoy!

    二、针对双系统引导均崩溃开机直接进入grub rescue模式或第一个针对中使用grub进入windows系统后引导仍不成功且黑屏光标一直闪烁的问题

    • 首先解决第二个针对的前半部分问题

      双系统引导均崩溃开机直接进入grub rescue模式

      1. 首先进入U盘中PE系统,点击“win引导修复”,选择适合自己电脑硬盘分区的修复方案后,点击开始修复。
        Linux_ubuntu&windows双系统grub引导修复_第2张图片
        (图片来自网络)
      2. 关机退出PE系统,拔出U盘,重启电脑,我们发现起码windows系统已经可以成功引导了!这是个好事,因为这样接下来的步骤就与我们前面的第一个针对相同了!
      3. 实施第一个针对的7个步骤,OK了!enjoy!
    • 现在解决第二个针对的后半部分问题

      第一个针对中使用grub进入windows系统后引导仍不成功且黑屏光标一直闪烁(Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)

      1. 如果有童鞋跟作者一样不走运的话,会遇到即使update-grub成功识别了你分区中的windows loader而且重启计算机后在grub列表里也确实有windows选项,但点进去后仍然不
        会引导windows系统,而只是黑屏一个光标不停地闪。这就很尴尬了。。。Linux_ubuntu&windows双系统grub引导修复_第3张图片
      2. 但同志们不要怕!作者已经帮你们趟出一条路了!那就是:修改grub.cfg !(围观群众毫不吃惊脸…)
      3. 作者猜想,可能经过PE的修复,grub已经可以识别出windows的引导器了,然而由于是人工修复的windows引导,所有默认生成的grub.cfg中的代码并不能使grub准确找到windows loader,所以当我们选中grub列表中的windows选项后才仍然不能引导系统。
      4. 我们只需进入已经可以引导的ubuntu系统,唤出终端,输入
        sudo su回车,获取ROOT权限。
      5. 之后输入gedit /boot/grub/grub.cfg回车,以打开grub.cfg。作者用的是gedit编辑器,如果读者平时都是用vim那么就输入vim /boot/grub/grub.cfg,使用什么编辑器都可以,然后我们找到cfg文件中关于windows的部分,作者的看起来像这样:

    menuentry 'Windows 8 (loader) (on /dev/sda6)' --class windows --class os $menuentry_id_option 'osprober-chain-9C28EFB228EF899A' {
    insmod part-msdos
    insmod ntfs
    set root='hd0,msdos6'
    if [ x$feature_platform_search_hint = xy ]; then
    search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos6 --hint-efi=hd0,msdos6 --hint-baremetal=ahci0,msdos6 9C28EFB228EF899A
    else
    search --no-floppy --fs-uuid --set=root 9C28EFB228EF899A
    fi
    parttool ${root} hidden-
    drivemap -s (hd0) ${root}
    chainloader +1
    }

    这一大坨是个什么玩意?反正这么写引导不了,那就改!
    好在grub是个十分强大的工具,最后作者决定使用search命令修改以上片段。
    如下:

    menuentry 'Windows 8 (loader) (on /dev/sda6)' --class windows --class os $menuentry_id_option 'osprober-chain-9C28EFB228EF899A' {
    insmod ntfs
    insmod ntldr
    set root='hd0,msdos6'
    search --set -f /bootmgr
    ntldr /bootmgr
    }

    写完大概就是这个样子:
    Linux_ubuntu&windows双系统grub引导修复_第4张图片图中高亮部分。

注意!!!set root='hd0,msdos6'中的6是因为作者的windows安装在/sda6中,不要照抄!! CTRL+S保存后退出即可。
6. 重启计算机,这时我们可以发现grub中的windows选项点击后可以成功引导了!
Linux_ubuntu&windows双系统grub引导修复_第5张图片
(Copyright © http://blog.csdn.net/s_gy_zetrov. All Rights Reserved)
反正当时作者看到熟悉的田字格后差点流出了激动的眼泪…
7. 好了,一切恢复!enjoy!

你可能感兴趣的:(教程,Linux)