修复grub启动

项目场景:

使用windows在移动硬盘装ubuntu双系统后,取下硬盘,原本efi引导损坏。


问题描述:

linux调整分区后,开机重启时会出现
error : unknow filesystem
grub rescue>


原因分析:

按linux的计算方式,因本最后一个分区叫(hdx,gptx)因为中间多出了一个分区。现在就成了(hdx,gptx+1)导致原来的grub配置文件中描述的分区已经无法正常找到了。


解决方案:

命令说明:

  • set 查看环境变量,这⾥可以查看启动路径和分区。
  • ls 查看设备
  • insmod 加载模块

环境变量:

  • root 指定⽤于启动系统的分区,在救援模式下设置grub启动分区
  • prefix 设定grub启动路径

GRUB启动不了,会自动进入救援模式。在当前模式下输入:

error:unknown filesystem.
Entering rescue mode...
#查所有磁盘列表
grub rescue> ls
(hd0) (hd0,gpt7) (hd0,gpt6) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) 
#查环境变量
grub rescue> set
cmdpath=(hd0,gpt1)/EFI/GRUB
#问题就出现在此外了,原(hd0,gpt6)实际上已经变成了(hd0,gpt7)
prefix=(hd0,gpt6)/boot/grub
root=hd0,gpt6
#查看磁盘下的文件,确定是否是我们想要切换的磁盘
grub rescue> ls (hd0,gpt7)/
./ ../ lost+found/ var/ dev/ run/ etc/ tmp/ sys/
#此处略一些目录
#(关键)设置环境变量,把错误的环境变量修改成正确的
grub rescue> set root=(hd0,gpt7) 
grub rescue> set prefix=(hd0,gpt7)/boot/grub 
grub rescue> insmod normal
#进入熟悉的启动菜单栏
grub rescue> normal

#然后我选择archlinux的启动菜单就可以正常的进入操作系统了。

以上只能暂时解决问题,若想完全修复还需:

进入ubuntu系统后,在终端输入:

#升级grub
sudo update-grub
#查看磁盘状态,找到挂载/boot的分区,比如/dev/nvme0n1p1
dt
#建立连接
sudo grub-install /dev/nvme0n1p1

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值