多系统GRUB引导丢失修复

前言(垃圾话)

这段话忽略不影响教程。本文主要记录一下我粗心大意之下造成的大出血事件。前几天做了一个给电脑供电的移动电源(???)听起来很奇怪但是这个需求确实发生了。emmmm 可能是我和电源有着不可理解的对立关系(成功在实验室造成了两次电池事故😪),因为要实际测试”充电宝”的续航和充电情况,所以我成功的献祭了我的电脑,我自认为已经检查了线路,接口,电压,保证电流不超过限额,但是我万万没有想到,极性搞错了。我TM🙃…把正负极搞反了接上去瞬间黑屏(完全不慌.jpg),所幸的是只是烧了笔记本的电源管理芯片,没有伤及无辜。送去电脑店,没有这种芯片,上淘宝买芯片发顺丰修修修,一来一去就是3天,期间只能勉强靠树莓派过过日子。但是修好了之后出现了新的问题,开不了机进不去系统,然后经过3个多小时的搜查改,终于修好了,所以在这里记录一下。

问题的具体描述

这个问题的表现就是,开机自检能通过,但是出现不了引导界面反而出现的是一个叫做 grub rescue的界面,我这里因为修的时候并没有拍照,所以只能用文字大概描述一下。

  • 开机之后通过自检,然后检测引导什么的,但是他提示 erro:file'/boot/grub/i386-pc/normal.mod' not found 这个错误。
  • 接下来就是如下的一个命令行界面,
    1
    grub rescue>>______________

问题的原因

这个问题本质上就是找不到引导的文件,迷路了找不到任何导航的东西。但是有两种不同的情况(据我搜索的结果)。

  1. grub 文件还在系统里,但是引导至该文件的设置出错,也就是这个文件的路径不见了。
  2. grub 的文件已经丢失了,也就是硬盘里不存在这个文件了。

验证是哪种情况

下面几步即可完成。

  1. grub rescue>> 输入 ls 。可以看到输出了很多 hd*,msdos* 之类的东西,hd* 就是第几块存储设备,msdos*也就是分区。
  2. 通过 ls (hd*,msdos*)/boot/grub 可以查看是不是grub所在的分区以及文件是否存在。比如我查看 hd0,msdos5 那么命令就是 ls (hd0,msdos5)/boot/grub,这里我在网上看到有些直接输入ls (hd0,msdos5)/grub (grub摆放的位置不一样)。
    • 如果结果显示 error:unknown filesystem 代表并不是 grub 所在的分区。
    • 如果结果里有i386-pc 文件夹,那么代表你的是第一种情况。
    • 如果结果里没有错误提示但是也没有显示i386-pc 文件夹,那么你的情况就是第二种(我的恰好也就是第二种)。

设置 grub 路径

我不知道第二种情况需不需要这样设置,经过我的后来思考觉得应该不需要的,但是还是建议设置一下防止出问题。

  1. grub rescue>> 输入 set root=(hd*,msdos*) 设置根目录。
  2. grub rescue>> 输入 set prefix=(hd*,msdos*)/boot/grub 设置 grub 目录。
  3. 通过在grub rescue>> 输入 set可以看到设置的结果。

第一种情况解决办法

下面的步骤是网上搬过来的,因为我不是这个情况,原文见博客

  1. 输入 insmod normal 回车
  2. 输入 normal回车 就能进入 grub 引导菜单界面。
  3. 如果你能选择 linux 并启动那么跳到第5步否则第4步。
  4. 在 grub 界面按下键盘 C 进入命令行模式输入如下命令。* 就是你刚找到的正确的引导分区的相关序号。
    1
    2
    set root=(hd*,msdos*)
    Set prefix=(hd*,msdos*)
  5. 启动 linux 在终端输入如下命令,(其实我更推荐使用 boot-repair 更傻瓜,更安全~ ~)。
    1
    2
    sudo update-grub
    sudo grub-install /dev/sda (通过 ls /dev/sd* 查看磁盘情况)

第二种情况解决办法

对于二种情况稍显复杂。需要通过一个 liveCD 来拯救。

  1. 需要
    硬件:一个可以用的电脑、一个U盘(会格式化注意备份);
    软件:一个 Ubuntu 系统镜像、UltraISO软碟通(亲测U深度一键装机没用)。
  2. 打开软碟通菜单栏–>文件–>打开下载来的iso镜像。
  3. 软碟通菜单栏–>启动–>写入硬盘镜像,在弹出的选项里选择U盘然后点击格式化,格式化完成之后点击写入。等待写入完成。
  4. 插入U盘,进入你电脑的 bios ,我的是在按下电源键启动之后狂按 F2 这里你需要上网搜一下你电脑对应的按键是啥,进去时候找到 boot 设置将U盘列为第一启动项(这里因电脑而异希望你有点灵性),这里不懂的话上网搜一下怎么开机进入U启动盘。
  5. 顺利的话就进入了一个 linux 的安装界面。在右边的语言列表里滑到最下面选择中文。然后在右边的两个大图标选项里选择试用 Ubuntu ,这样就进入了一个看起来和正常安装没有区别的 Ubuntu 系统。
  6. Ctrl+alt+T 呼出终端,输入以下命令安装 boot-repair 并启动。
    1
    2
    3
    4
    sudo add-apt-repository ppa:yannubuntu/boot-repair //添加 boot-repair 软件源
    sudo apt-get update //更新软件列表
    sudo apt-get install -y boot-repair //安装 boot-repair
    boot-repair //启动 boot-repair
  7. 按照提示傻瓜式的操作即可完成修复,耐心等待。
    • 在过程中如果提示某个硬盘是否是可拆卸的选择否,如果是移动硬盘就选择是。
    • 修复完成会问你是否选择生成报告,点击是,生成报告然后给你一个网址,复制网址到浏览器即可访问结果,可以看到你的分区和引导以及引导的系统。
  8. 关闭计算机,拔掉U盘,重启计算机即可进入引导~ ~。windows 和 linux 都可以进入了,美滋滋。
  9. 启动 windows 可能会提示是否要跳过系统检查,这个很快的,也就20几秒就好了。

后话

  1. 我这里出现一个情况,我原本的默认引导是用那种黑白屏的引导,然后如果点击 Ubuntu 会跳转到 grub 引导但是经过这个操作之后,grub变成了默认的引导点击windows之后会跳到黑白屏的引导。
    解决办法:下载EasyBCD编辑引导菜单删除 Ubuntu 的引导选项就OK了,就默认使用 grub 引导(之前就想这么搞来着误打误撞美滋滋)。
  2. grub默认的不是windows启动,通过该教程 即可调整默认的启动系统,如果链接失效搜索一下 grub 调整启动顺序~ ~。

多系统GRUB引导丢失修复
http://example.com/2018/05/10/多系统grub引导丢失修复/
作者
Ekko bao
发布于
2018年5月10日
许可协议