blog_post/_posts/多系统grub引导丢失修复.md
2024-04-03 08:20:53 +08:00

84 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 多系统GRUB引导丢失修复
tags:
- grub
categories:
- Tools
comments: true
abbrlink: 6d520ba7
date: 2018-05-10 12:27:11
images:
---
## 前言(垃圾话)
这段话忽略不影响教程。本文主要记录一下我粗心大意之下造成的大出血事件。前几天做了一个给电脑供电的移动电源()听起来很奇怪但是这个需求确实发生了。emmmm 可能是我和电源有着不可理解的对立关系(成功在实验室造成了两次电池事故😪),因为要实际测试"充电宝"的续航和充电情况所以我成功的献祭了我的电脑我自认为已经检查了线路接口电压保证电流不超过限额但是我万万没有想到极性搞错了。我TM🙃...把正负极搞反了接上去瞬间黑屏(完全不慌.jpg)所幸的是只是烧了笔记本的电源管理芯片没有伤及无辜。送去电脑店没有这种芯片上淘宝买芯片发顺丰修修修一来一去就是3天期间只能勉强靠树莓派过过日子。但是修好了之后出现了新的问题开不了机进不去系统然后经过3个多小时的搜查改终于修好了所以在这里记录一下。<!---more--->
## 问题的具体描述
这个问题的表现就是,开机自检能通过,但是出现不了引导界面反而出现的是一个叫做 grub rescue的界面我这里因为修的时候并没有拍照所以只能用文字大概描述一下。
- 开机之后通过自检,然后检测引导什么的,但是他提示 `erro:file'/boot/grub/i386-pc/normal.mod' not found` 这个错误。
- 接下来就是如下的一个命令行界面,
```
grub rescue>>______________
```
## 问题的原因
这个问题本质上就是找不到引导的文件,迷路了找不到任何导航的东西。但是有两种不同的情况(据我搜索的结果)。
1. grub 文件还在系统里,但是引导至该文件的设置出错,也就是这个文件的路径不见了。
2. grub 的文件已经丢失了,也就是硬盘里不存在这个文件了。
## 验证是哪种情况
下面几步即可完成。
1. `grub rescue>>` 输入 `ls` 。可以看到输出了很多 hd\*msdos\* 之类的东西hd\* 就是第几块存储设备msdos\*也就是分区。
2. 通过 `ls (hd*,msdos*)/boot/grub` 可以查看是不是grub所在的分区以及文件是否存在。比如我查看 hd0msdos5 那么命令就是 `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`可以看到设置的结果。
## 第一种情况解决办法
下面的步骤是网上搬过来的,因为我不是这个情况,原文见[博客](https://blog.csdn.net/peerless1994/article/details/52226169)
1. 输入 ` insmod normal` 回车
2. 输入 `normal`回车 就能进入 grub 引导菜单界面。
3. 如果你能选择 linux 并启动那么跳到第5步否则第4步。
4. 在 grub 界面按下键盘 `C` 进入命令行模式输入如下命令。\* 就是你刚找到的正确的引导分区的相关序号。
```
set root=(hd*,msdos*)
Set prefix=(hd*,msdos*)
```
5. 启动 linux 在终端输入如下命令,(其实我更推荐使用 boot-repair 更傻瓜,更安全~ ~)。
```
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 并启动。
```
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启动通过该[教程](https://jingyan.baidu.com/article/f71d60379e16021ab641d1ab.html) 即可调整默认的启动系统,如果链接失效搜索一下 grub 调整启动顺序~ ~。